diff options
author | Greg Lewis <glewis@FreeBSD.org> | 2013-05-05 20:10:26 +0000 |
---|---|---|
committer | Greg Lewis <glewis@FreeBSD.org> | 2013-05-05 20:10:26 +0000 |
commit | b46768de7aa34893d0146899b48cb5e1ab4f4dea (patch) | |
tree | 1a3fcca1aaecdd3e6d4841641d39ee0013e78071 /java | |
parent | Update finance/R-cran-fBasic to 3010.83. (diff) |
. Update to 7u21.
Notes
Notes:
svn path=/head/; revision=317431
Diffstat (limited to 'java')
-rw-r--r-- | java/openjdk7/Makefile | 5 | ||||
-rw-r--r-- | java/openjdk7/files/patch-set | 69643 | ||||
-rw-r--r-- | java/openjdk7/files/patch-zzz-make-sun-awt-Makefile | 20 |
3 files changed, 44430 insertions, 25238 deletions
diff --git a/java/openjdk7/Makefile b/java/openjdk7/Makefile index 8f6feb51b8a8..3ef56cc3ec4e 100644 --- a/java/openjdk7/Makefile +++ b/java/openjdk7/Makefile @@ -7,7 +7,6 @@ PORTNAME= openjdk PORTVERSION= ${JDK_MAJOR_VERSION}.${PORT_MINOR_VERSION}.${PORT_BUILD_NUMBER} -PORTREVISION= 2 CATEGORIES= java devel MASTER_SITES= http://download.java.net/openjdk/jdk${JDK_MAJOR_VERSION}u${JDK_MINOR_VERSION}/promoted/b${JDK_BUILD_NUMBER}/ \ http://download.java.net/jaxp/1.4.5/:jaxp \ @@ -41,8 +40,8 @@ DEBUG_DESC= Enable extra debugging info POLICY_DESC= Install the Unlimited Strength Policy Files TZUPDATE_DESC= Update the time zone data -PORT_MINOR_VERSION= 17 -PORT_BUILD_NUMBER= 02 +PORT_MINOR_VERSION= 21 +PORT_BUILD_NUMBER= 11 JDK_MAJOR_VERSION= 7 JDK_MINOR_VERSION= 6 JDK_BUILD_NUMBER= 24 diff --git a/java/openjdk7/files/patch-set b/java/openjdk7/files/patch-set index d3b9d130c8ed..248c8c1735ab 100644 --- a/java/openjdk7/files/patch-set +++ b/java/openjdk7/files/patch-set @@ -1,5 +1,5 @@ --- .hgtags 2012-08-10 09:07:00.000000000 -0700 -+++ .hgtags 2013-03-09 08:44:35.000000000 -0800 ++++ .hgtags 2013-05-05 09:39:37.000000000 -0700 @@ -123,6 +123,7 @@ 2d38c2a79c144c30cd04d143d83ee7ec6af40771 jdk7-b146 3ac30b3852876ccad6bd61697b5f9efa91ca7bc6 jdk7u1-b01 @@ -8,7 +8,7 @@ 34451dc0580d5c95d97b95a564e6198f36545d68 jdk7u1-b02 bf735d852f79bdbb3373c777eec3ff27e035e7ba jdk7u1-b03 f66a2bada589f4157789e6f66472954d2f1c114e jdk7u1-b04 -@@ -197,5 +198,46 @@ +@@ -197,5 +198,69 @@ 29f6fb1833eb2a696b95e8985126f2d70f511a82 jdk7u6-b21 31cdab09d719fe60876c7f3a472386c1455d93e2 jdk7u6-b22 d1c709f1196a73d1df10d04a221b10e30fd2eb48 jdk7u6-b23 @@ -16,6 +16,7 @@ -d7a94c8cbbbfadbd9e2f3e4737eb7deb572dedc9 jdk7u8-b02 +e4def733cc8c58e83b7cefa7edd89a3e2b793520 jdk7u6-b24 +f5f546dba006778854e7a81141fc1b44acd257a4 jdk7u6-b30 ++43775eae8df6c874fb3631c86009505cf3821b1f jdk7u6-b31 +43775eae8df6c874fb3631c86009505cf3821b1f jdk7u7-b10 +a380c75873bfb578e605d4362edb18c08698cc3e jdk7u7-b30 +d7f2b3949f9c9ff1115ea61c496d3cd4c62e2759 jdk7u7-b11 @@ -29,6 +30,8 @@ +dbfa9c57853c2dd9cd4e4a139d83b519573d8031 jdk7u9-b02 +3159fbe20e2d9501007aae8ca3db58978d754561 jdk7u9-b04 +d9c8fa0606fdfff242175ce904c525a6fc40d6e5 jdk7u9-b05 ++81f8b620894e275012a1b447f13319b7d2148b28 jdk7u9-b31 ++d247cdeb828f4463b55ea53c4b2d6346f7706c3c jdk7u9-b32 +d934ce27cddbc9ba7236791f177872491204a41e jdk7u10-b10 +5a5ee5b70d563d5817b6ec023d275e9b17256459 jdk7u10-b11 +48b58c2d665c9a1d3598b981e46f87f9bcdd5b46 jdk7u10-b12 @@ -39,8 +42,11 @@ +494e838439db7f0f4e36f7dcfeba06d2bef78c8d jdk7u10-b17 +dce9058d2151e6b5c84898c13cfd1521a627a296 jdk7u10-b18 +b5fb925394331313dbe3859fdc408bfd37193476 jdk7u10-b30 ++337ce65c8c356766212812b78f49f5632995987d jdk7u10-b31 +c2d5141baeda6c9b5bbc83c21eff9c3940fefae4 jdk7u11-b20 +168aa0f1417b3651a955ae66068dc148b660f829 jdk7u11-b21 ++7c0710ed65b097d415f772ff4fb58c4822890aa3 jdk7u11-b32 ++61cee7a518a4ae05439490ec388c3ab1d1d899f2 jdk7u11-b33 +c8a37a49fc90ae31b864544d6d4a9f6137d4995d jdk7u11-b03 +0b418e2ccf9093718609144689d1a8b316ad951f jdk7u11-b04 +e127e6c94b56f7348df67d9672c16a7dc9c5ec5e jdk7u11-b05 @@ -54,11 +60,28 @@ +0e52db2d9bb8bc789f6c66f2cfb7cd2d3b0b16c6 jdk7u15-b01 +0324fca94d073b3aad77658224f17679f25c18b1 jdk7u15-b02 +25a9d44cebf2a7ac6dd1748c94e00b242403acb1 jdk7u15-b30 ++5c1b2900a65b5ebe9d2a5c9b48903081c8196b04 jdk7u15-b31 ++e7adbfbcd837ad4e9f88db45612e5704b7a249fd jdk7u15-b33 +f37a75bd39595ba38bdc53ee957c63bbb3cbb12d jdk7u15-b03 +2412f7b8551ede5296cb6e1d6189f40aad9eeffe jdk7u15-b32 +0c2b2dae93e7a720bbcc2e13a1913a2264335554 jdk7u17-b01 ++8e49ff2feda30801d7826ca1778eb7b901a7089c jdk7u17-b02 ++933d424580f967ed11eda2bbfd690f985a72df6e jdk7u17-b30 ++790582955edb617b41abbc73cf82544dbf8c1d97 jdk7u17-b31 ++527d3cf769ec073d7348e4c31f97c47c943c96b6 jdk7u21-b01 ++bc264b362dc7b4f2bda34e1a5b87a4f0c2bd4d82 jdk7u21-b02 ++20603c659295a40c7f16259cb08c91475092efed jdk7u21-b03 ++d2b1fdd8ee0affe640c7493ab3ae04fcc1961446 jdk7u21-b04 ++2d6657f92359d1d46b355fd0c99b8aa5f34832e4 jdk7u21-b05 ++14522481739dc6981beb5cc55d543dcc62cda067 jdk7u21-b06 ++0df382e8c17bf817d55fc8759c7f5c9e9d0337f0 jdk7u21-b07 ++1aff32a21aba64c3767e9a72ebf1b8ba490e99ec jdk7u21-b08 ++a2e0099b4cf70be026a7a0ba7918fcd71d57fdce jdk7u21-b09 ++602ad1a5b09fb9136e8bf1b708e0524fbdb35324 jdk7u21-b10 ++fa322ca378324750ea049f2e92357e51eca27ae4 jdk7u21-b11 ++450e8dde919df278fe75ae95e0eb0a6464f5bc41 jdk7u21-b30 --- corba/.hgtags 2012-08-10 09:09:50.000000000 -0700 -+++ corba/.hgtags 2013-03-09 08:44:37.000000000 -0800 ++++ corba/.hgtags 2013-05-05 09:39:37.000000000 -0700 @@ -123,6 +123,7 @@ 770227a4087e4e401fe87ccd19738440111c3948 jdk7-b146 36f0efbc66ef8ace3cca8aa8d0c88f3334080f8a jdk7u1-b01 @@ -67,7 +90,7 @@ 9515a2d034b4727c11aeea36354a549fbc469c4f jdk7u1-b02 dd71cb354c573c1addcda269a7dd9144bfce9587 jdk7u1-b03 eaee830124aa453627591d8f9eccb39d7e040876 jdk7u1-b04 -@@ -197,5 +198,46 @@ +@@ -197,5 +198,69 @@ 353c15c4bc371f2f8258344c988d1403477cc140 jdk7u6-b21 793b80c0316fcafa18668bced26acb41af3be07d jdk7u6-b22 2a8376123fbb81bc4b2f643ff7cfaf7f87b21c35 jdk7u6-b23 @@ -75,6 +98,7 @@ -d17ca8d088f7cc0dd42230472f534c8d1e415bcb jdk7u8-b02 +02512f61591f55d84458d1ea4ce84eecb7324f89 jdk7u6-b24 +8b20875b3faa01ef56331045de88747df278eaeb jdk7u6-b30 ++d7fe6c13adf9e06d98c061449d171bc06c2ba0a3 jdk7u6-b31 +d7fe6c13adf9e06d98c061449d171bc06c2ba0a3 jdk7u7-b10 +496baf62d0550c704505b0ff6f390279f6a569e0 jdk7u7-b30 +e57e4274a3575f278115cc8ef03c5bdf3c43a7ed jdk7u7-b11 @@ -88,6 +112,8 @@ +ec602836c4e173927911673d253bb8baa1e3d170 jdk7u9-b02 +268470f3f0d0d7e9b04c579c551571097f0b0305 jdk7u9-b04 +a5dced409c4b7f940db80846f6efabac74523b0e jdk7u9-b05 ++b426254b45bcd7cdb38003497fdd4168e366d3cb jdk7u9-b31 ++0fa70374aa257929e2541e57c55c4cdebec91fd4 jdk7u9-b32 +ba68d4ad02c465a36344a34eba34491466ec17d4 jdk7u10-b10 +a738921b001a92381bf355a2bb1ecd742ecee352 jdk7u10-b11 +e52708ecb2c32b366c251e4083fbb37e22a425c3 jdk7u10-b12 @@ -98,8 +124,11 @@ +57c3355153d1624fd98618097c1a82ab3ffc66f8 jdk7u10-b17 +f2a347637a55fa4de9542a8dcab72ad6fac44d2b jdk7u10-b18 +22cf8bc2ec47498fe548b308a81be0486dd7e3d0 jdk7u10-b30 ++2723612f5983e7d65490d7d4a3d8577026448736 jdk7u10-b31 +e7952daece16b27d69cb78f6912407c3bbaf8e83 jdk7u11-b20 +dff0f0272891b1d53497d9525567959b73476ff9 jdk7u11-b21 ++24f8cb8a0a615686f8baba4d746514bae92f064d jdk7u11-b32 ++4bfef14df261d69dc32e37d189e12e3fa572a83c jdk7u11-b33 +96a3c68e5741dc9ab5cb0da426511eb15fd29ede jdk7u11-b03 +1413b173730f4796fca42c89eeb804a5935b0264 jdk7u11-b04 +5c49a17bc15f4fd4722746788f5130df132cd038 jdk7u11-b05 @@ -113,11 +142,28 @@ +622e370c2d1e8c5f48d8f520f486dc6fcc1239c5 jdk7u15-b01 +30188388048333e213a839363329ac2cb0cf0e0d jdk7u15-b02 +7f0e7ce088ff554f64e2c102ae3718ae4d580c34 jdk7u15-b30 ++3714b558333e1089e2649ead8586873abd9c0ed1 jdk7u15-b31 ++f0c038610b6da1a0d4214b730aa6cb17b64d0a3b jdk7u15-b33 +e5b996dabec6ac6aa12705ce678642605ea9d476 jdk7u15-b03 +b192d148731916e4b1b47b7a3e6b0a1d7ddf3f14 jdk7u15-b32 +94e8b9b0e0ef1685e2f2fcc886e08a42a85c8e03 jdk7u17-b01 ++e82d31e1f1189ae6f02d6855f0cd78074599b2e1 jdk7u17-b02 ++d4366e557c4c5af62a94fc9885aed87c99abc848 jdk7u17-b30 ++a6f066dd2cd526da73070d1e46c9b1e1ab1a6756 jdk7u17-b31 ++f5ef46204dba19679edd7492b221110fd1a0bd33 jdk7u21-b01 ++17ecd70a2247ed86a095aae9f1a201fa7feea861 jdk7u21-b02 ++bf0877613aeba816d5f18ea6316d535819f628e9 jdk7u21-b03 ++3e39240d7314e82b3ccff3b2a64413be9c0b6665 jdk7u21-b04 ++f5a291dc9d219f68a2d4bcc72c65c014e9ec3b8b jdk7u21-b05 ++94f2ebfccc5e057169284bb2c858296b235868ea jdk7u21-b06 ++23a57aceeb69e688f8ce8b8361fad3a49cf4ac5f jdk7u21-b07 ++ebedf04bfffe289e8bf9661b38f73ca6c0dad17c jdk7u21-b08 ++b8f92ad1f0cc86d8571a0e23192e667f0ef8e421 jdk7u21-b09 ++b2adfd931a2504948d4fee780e4175122be10484 jdk7u21-b10 ++61e2e2d9cfcea20132b50d8fb7ead66a8a373db7 jdk7u21-b11 ++3c774492beaaff241c654add2c4e683b9ff002f2 jdk7u21-b30 --- corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk 2012-08-10 09:09:53.000000000 -0700 -+++ corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk 2013-03-09 08:44:36.000000000 -0800 ++++ corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved. @@ -157,7 +203,7 @@ com/sun/corba/se/impl/orbutil/closure/Constant.java \ com/sun/corba/se/impl/orbutil/concurrent/Sync.java \ --- corba/src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java 2012-08-10 09:10:11.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved. @@ -179,7 +225,7 @@ ServerCallback(ORB orb, Method installMethod, Method uninstallMethod, --- corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java 2012-08-10 09:10:12.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. @@ -206,7 +252,7 @@ classTC.setCaching(true); // Update the cache --- corba/src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java 2012-08-10 09:10:15.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. @@ -302,7 +348,7 @@ value = valueHandler.readValue(parent, indirection, --- corba/src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java 2012-08-10 09:10:15.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. @@ -350,7 +396,7 @@ Serializable key = object; --- corba/src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java 2012-08-10 09:10:18.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved. @@ -386,7 +432,7 @@ Stack repIds = new Stack(); --- corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java 2012-08-10 09:10:18.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. @@ -572,7 +618,7 @@ /** --- corba/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java 2012-08-10 09:10:19.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. @@ -728,7 +774,7 @@ } } --- corba/src/share/classes/com/sun/corba/se/impl/io/ValueUtility.java 2012-08-10 09:10:19.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/io/ValueUtility.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/io/ValueUtility.java 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved. @@ -752,7 +798,7 @@ throws ClassNotFoundException { --- corba/src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java 2012-08-10 09:10:23.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java 2013-05-05 09:39:34.000000000 -0700 @@ -112,6 +112,9 @@ import com.sun.corba.se.impl.orbutil.ORBClassLoader; import com.sun.corba.se.impl.logging.UtilSystemException; @@ -774,7 +820,7 @@ private UtilSystemException utilWrapper = UtilSystemException.get( CORBALogDomains.RPC_ENCODING); --- corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java 2012-08-10 09:10:31.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java 2013-05-05 09:39:34.000000000 -0700 @@ -840,7 +840,7 @@ // backward compatability 4365188 CodeBase cb; @@ -1042,7 +1088,7 @@ - } -} --- corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java 2012-08-10 09:10:33.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved. @@ -1099,7 +1145,7 @@ * a foreign (non-JavaSoft) ORB. Note: If passed the ORBSingleton, this * will return false. --- corba/src/share/classes/com/sun/corba/se/impl/orbutil/ObjectStreamClass_1_3_1.java 2012-08-10 09:10:33.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/ObjectStreamClass_1_3_1.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/ObjectStreamClass_1_3_1.java 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved. @@ -1695,7 +1741,7 @@ - } -} --- corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java 2012-08-10 09:10:34.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java 2013-05-05 09:39:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved. @@ -4169,7 +4215,7 @@ - } -} --- corba/src/share/classes/com/sun/corba/se/spi/orb/ORB.java 2012-08-10 09:11:09.000000000 -0700 -+++ corba/src/share/classes/com/sun/corba/se/spi/orb/ORB.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/com/sun/corba/se/spi/orb/ORB.java 2013-05-05 09:39:34.000000000 -0700 @@ -98,6 +98,7 @@ import com.sun.corba.se.impl.presentation.rmi.PresentationManagerImpl ; @@ -4255,7 +4301,7 @@ // End of file. --- corba/src/share/classes/sun/corba/JavaCorbaAccess.java 1969-12-31 16:00:00.000000000 -0800 -+++ corba/src/share/classes/sun/corba/JavaCorbaAccess.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/sun/corba/JavaCorbaAccess.java 2013-05-05 09:39:35.000000000 -0700 @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -4290,7 +4336,7 @@ + public ValueHandlerImpl newValueHandlerImpl(); +} --- corba/src/share/classes/sun/corba/SharedSecrets.java 1969-12-31 16:00:00.000000000 -0800 -+++ corba/src/share/classes/sun/corba/SharedSecrets.java 2013-03-09 08:44:36.000000000 -0800 ++++ corba/src/share/classes/sun/corba/SharedSecrets.java 2013-05-05 09:39:35.000000000 -0700 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -4352,28 +4398,8 @@ + } + +} ---- get_source.sh 2012-08-10 09:07:01.000000000 -0700 -+++ get_source.sh 2013-01-15 23:01:23.000000000 -0800 -@@ -1,7 +1,7 @@ - #!/bin/sh - - # --# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. -+# 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 -@@ -26,7 +26,7 @@ - # - - # Get clones of all nested repositories --sh ./make/scripts/hgforest.sh clone $* -+sh ./make/scripts/hgforest.sh clone - - # Update all existing repositories to the latest sources - sh ./make/scripts/hgforest.sh pull -u --- hotspot/.hgtags 2012-08-10 09:20:36.000000000 -0700 -+++ hotspot/.hgtags 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/.hgtags 2013-05-05 09:39:19.000000000 -0700 @@ -182,6 +182,7 @@ 38fa55e5e79232d48f1bb8cf27d88bc094c9375a hs21-b16 81d815b05abb564aa1f4100ae13491c949b9a07e jdk7-b147 @@ -4382,7 +4408,7 @@ 9b0ca45cd756d538c4c30afab280a91868eee1a5 jdk7u2-b01 0cc8a70952c368e06de2adab1f2649a408f5e577 jdk8-b01 31e253c1da429124bb87570ab095d9bc89850d0a jdk8-b02 -@@ -318,5 +319,46 @@ +@@ -318,5 +319,69 @@ 02a6c89432d724119565f9ba25672829b136fc5f jdk7u6-b21 a79d86eef6ac995a1fc35554f082f3a61abe9ae0 jdk7u6-b22 df57f6208cb76b4e8d1a0bd0eea3d2ad577cb79b jdk7u6-b23 @@ -4390,6 +4416,7 @@ -528502f930967f70c320472a002418f1e38029e0 jdk7u8-b02 +b03c2687fb16514652e79261ad68d2c601dcee62 jdk7u6-b24 +cffde29ea7cc8647f17002a4d0e94065dcd82839 jdk7u6-b30 ++7566374c3c89b7d99be9bcdb9342283a3bea6930 jdk7u6-b31 +f7933fecea9aa494e4032e17ff07e5fcec4b5961 jdk7u7-b10 +eeef33dc4b40f9ba50c4c9b1ac61b30f0f2523bf jdk7u7-b30 +f1551c70c7f598b7049bcc33e530fc738a81c7a4 jdk7u7-b11 @@ -4403,6 +4430,8 @@ +ca6943c94e6075fc28353d52ac6ea52c80aef9bb jdk7u9-b02 +ed42837374ac730ddaf2fd28814017c665634a8b jdk7u9-b04 +da4aa289ac100017f850ed4d492e8054db6a1e28 jdk7u9-b05 ++8eaa45ed5f804199c0823b409dc37f72e808926f jdk7u9-b31 ++ea83168282c8c3a9f4a8ca723cc86972a3188d58 jdk7u9-b32 +d2e25680db9d4209b3f0f51e5c848284cedea508 jdk7u10-b10 +d37fd995683ab5bc2d941648ce7bf8bd194732f2 jdk7u10-b11 +f26f3d92e6d9ef7842b2d785f92439dbb15e670e jdk7u10-b12 @@ -4413,8 +4442,11 @@ +5c154a591de987d515f5b102a988bcf96d439f53 jdk7u10-b17 +78c7e1b4a006342230e04fbb73f637834207abef jdk7u10-b18 +c6b78bbaf6976197ead9d5aa3f65e0224cd13541 jdk7u10-b30 ++07f7daeb261073a4a2946d988979ee65ba8ed753 jdk7u10-b31 +25a92b94ad538963d009bf8a53ce548e13f55c82 jdk7u11-b20 +7a2cf85fc36e845db9ccb2a22af195c70af33bdf jdk7u11-b21 ++06b5c3f663b81f11da2080a91d215a96ae431f84 jdk7u11-b32 ++abb5b690122caabf09f93958c747358cc22f8a59 jdk7u11-b33 +db7028c8a953f46225fceb6148f97de87c784dda jdk7u11-b03 +4d418a1b8be04220f504cf414b47877821a22a26 jdk7u11-b04 +f71032f398a3baea567710ba7161c64b94495cac jdk7u11-b05 @@ -4428,11 +4460,28 @@ +5fbe0cae3a2a78a73946cfd08c56a64860f1afd9 jdk7u15-b01 +30d72c9abb560bc424d16d96bfd396ccd3c62cbc jdk7u15-b02 +221c64550c5b4411d78b63820835de1a8cd0c118 jdk7u15-b30 ++0b905a04f573565515aa8614085099abd73dcac4 jdk7u15-b31 ++8b349f332a66ebe5982b5680c85f903efb03da8e jdk7u15-b33 +5b55cef461b034766f05a46640caa123aa4247d4 jdk7u15-b03 +34a7b6dda06e2ff6f7e9ad563e3fc3ecd8993579 jdk7u15-b32 +a4dfda7a2655209abb170b2fa4914dbbba89bcd3 jdk7u17-b01 ++0d82bf449a610602b6e9ddcc9e076839d5351449 jdk7u17-b02 ++7b357c079370e2fd324c229f2e24c982915c80a0 jdk7u17-b30 ++22b6fd616cfe61774525a944f162bf5e7c418f03 jdk7u17-b31 ++be57a8d7a1a75971c3b1e7777dcacd20f3d33264 jdk7u21-b01 ++5119d89c7cc844190c0799dca85710e7592d42e7 jdk7u21-b02 ++ad14169fb640ca532193cca0fd6e14910f226075 jdk7u21-b03 ++c954aab38a7f8f62e33ae5103494576f67fc36d9 jdk7u21-b04 ++0e8e9d990d91dc0f8b8807bb82c090de3264c809 jdk7u21-b05 ++beeb3d6b76f06d9f60c31d6c5b9e04d82f01ad79 jdk7u21-b06 ++663b5c744e82d1c884048cd9b38f625e52004773 jdk7u21-b07 ++87e9bb582938552180b024dd99bc5166816f3921 jdk7u21-b08 ++1f195ee7856aecb6527bc5c957f66e1960e51a12 jdk7u21-b09 ++d4a4c2bd389abcd80c25d20e0ffb7d5cee356715 jdk7u21-b10 ++d07dafb51e1d75f110a3c506c250d995235acca6 jdk7u21-b11 ++a977dedec81c346247631ead6f3364c76949d67a jdk7u21-b30 --- hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java 2012-08-10 09:21:14.000000000 -0700 -+++ hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java 2013-05-05 09:39:09.000000000 -0700 @@ -33,6 +33,7 @@ import sun.jvm.hotspot.debugger.remote.*; import sun.jvm.hotspot.debugger.windbg.*; @@ -4442,7 +4491,7 @@ import sun.jvm.hotspot.oops.*; import sun.jvm.hotspot.runtime.*; --- hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java 2012-08-10 09:21:38.000000000 -0700 -+++ hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java 2013-05-05 09:39:09.000000000 -0700 @@ -35,6 +35,7 @@ import sun.jvm.hotspot.debugger.windbg.*; import sun.jvm.hotspot.debugger.linux.*; @@ -4452,7 +4501,7 @@ import sun.jvm.hotspot.livejvm.*; import sun.jvm.hotspot.memory.*; --- hotspot/make/bsd/Makefile 2012-08-10 09:22:55.000000000 -0700 -+++ hotspot/make/bsd/Makefile 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/bsd/Makefile 2013-05-05 09:39:09.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. @@ -4483,7 +4532,7 @@ # Synonyms for win32-like targets. compiler2: jvmg product --- hotspot/make/bsd/makefiles/buildtree.make 2012-08-10 09:22:57.000000000 -0700 -+++ hotspot/make/bsd/makefiles/buildtree.make 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/bsd/makefiles/buildtree.make 2013-05-05 09:39:09.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. @@ -4518,7 +4567,7 @@ .dbxrc: $(BUILDTREE_MAKE) @echo Creating $@ ... --- hotspot/make/bsd/makefiles/defs.make 2012-08-10 09:22:57.000000000 -0700 -+++ hotspot/make/bsd/makefiles/defs.make 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/bsd/makefiles/defs.make 2013-05-05 09:39:09.000000000 -0700 @@ -86,7 +86,7 @@ VM_PLATFORM = bsd_i486 HS_ARCH = x86 @@ -4693,7 +4742,7 @@ ADD_SA_BINARIES/ia64 = ADD_SA_BINARIES/arm = --- hotspot/make/bsd/makefiles/gcc.make 2012-08-10 09:22:57.000000000 -0700 -+++ hotspot/make/bsd/makefiles/gcc.make 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/bsd/makefiles/gcc.make 2013-05-05 09:39:09.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. @@ -4751,7 +4800,7 @@ + STRIP = strip +endif --- hotspot/make/bsd/makefiles/jsig.make 2012-08-10 09:22:58.000000000 -0700 -+++ hotspot/make/bsd/makefiles/jsig.make 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/bsd/makefiles/jsig.make 2013-05-05 09:39:09.000000000 -0700 @@ -36,9 +36,16 @@ LIBJSIG_G = lib$(JSIG_G).so endif @@ -4805,7 +4854,7 @@ .PHONY: install_jsig --- hotspot/make/bsd/makefiles/launcher.make 2012-08-10 09:22:58.000000000 -0700 -+++ hotspot/make/bsd/makefiles/launcher.make 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/bsd/makefiles/launcher.make 2013-05-05 09:39:09.000000000 -0700 @@ -50,7 +50,7 @@ LIBS_LAUNCHER += $(STATIC_STDCXX) $(LIBS) else @@ -4816,7 +4865,7 @@ # The gamma launcher runs the JDK from $JAVA_HOME, overriding the JVM with a # freshly built JVM at ./libjvm.{so|dylib}. This is accomplished by setting --- hotspot/make/bsd/makefiles/mapfile-vers-debug 2012-08-10 09:22:58.000000000 -0700 -+++ hotspot/make/bsd/makefiles/mapfile-vers-debug 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/bsd/makefiles/mapfile-vers-debug 2013-05-05 09:39:09.000000000 -0700 @@ -221,6 +221,7 @@ JVM_SetArrayElement; JVM_SetClassSigners; @@ -4851,7 +4900,7 @@ JVM_AccessVMBooleanFlag; JVM_AccessVMIntFlag; --- hotspot/make/bsd/makefiles/mapfile-vers-product 2012-08-10 09:22:58.000000000 -0700 -+++ hotspot/make/bsd/makefiles/mapfile-vers-product 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/bsd/makefiles/mapfile-vers-product 2013-05-05 09:39:09.000000000 -0700 @@ -221,6 +221,7 @@ JVM_SetArrayElement; JVM_SetClassSigners; @@ -4886,7 +4935,7 @@ jio_fprintf; jio_printf; --- hotspot/make/bsd/makefiles/ppc.make 2012-08-10 09:22:58.000000000 -0700 -+++ hotspot/make/bsd/makefiles/ppc.make 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/bsd/makefiles/ppc.make 2013-05-05 09:39:09.000000000 -0700 @@ -28,3 +28,6 @@ # Must also specify if CPU is big endian CFLAGS += -DVM_BIG_ENDIAN @@ -4895,7 +4944,7 @@ +ASFLAGS += -Wa,-mspe -Wa,--defsym -Wa,E500V2=1 +endif --- hotspot/make/bsd/makefiles/saproc.make 2012-08-10 09:22:59.000000000 -0700 -+++ hotspot/make/bsd/makefiles/saproc.make 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/bsd/makefiles/saproc.make 2013-05-05 09:39:09.000000000 -0700 @@ -36,6 +36,11 @@ LIBSAPROC_G = lib$(SAPROC_G).so endif @@ -4953,7 +5002,7 @@ fi --- hotspot/make/bsd/makefiles/vm.make 2012-08-10 09:22:59.000000000 -0700 -+++ hotspot/make/bsd/makefiles/vm.make 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/bsd/makefiles/vm.make 2013-05-05 09:39:09.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. @@ -5061,7 +5110,7 @@ #---------------------------------------------------------------------- --- hotspot/make/hotspot_version 2012-08-10 09:23:01.000000000 -0700 -+++ hotspot/make/hotspot_version 2013-03-09 08:44:38.000000000 -0800 ++++ hotspot/make/hotspot_version 2013-05-05 09:39:09.000000000 -0700 @@ -31,11 +31,11 @@ # @@ -5072,13 +5121,13 @@ HS_MAJOR_VER=23 -HS_MINOR_VER=2 -HS_BUILD_NUMBER=09 -+HS_MINOR_VER=7 ++HS_MINOR_VER=21 +HS_BUILD_NUMBER=01 JDK_MAJOR_VER=1 JDK_MINOR_VER=7 --- hotspot/make/solaris/makefiles/defs.make 2012-08-10 09:23:12.000000000 -0700 -+++ hotspot/make/solaris/makefiles/defs.make 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/make/solaris/makefiles/defs.make 2013-05-05 09:39:09.000000000 -0700 @@ -194,8 +194,8 @@ endif ifeq ($(ARCH_DATA_MODEL), 32) @@ -5091,7 +5140,7 @@ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.$(LIBRARY_SUFFIX) EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX) --- hotspot/src/cpu/sparc/vm/globals_sparc.hpp 2012-08-10 09:23:56.000000000 -0700 -+++ hotspot/src/cpu/sparc/vm/globals_sparc.hpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/cpu/sparc/vm/globals_sparc.hpp 2013-05-05 09:39:10.000000000 -0700 @@ -71,7 +71,11 @@ define_pd_global(bool, RewriteBytecodes, true); define_pd_global(bool, RewriteFrequentPairs, true); @@ -5105,7 +5154,7 @@ // GC Ergo Flags define_pd_global(intx, CMSYoungGenPerWorker, 16*M); // default max size of CMS young gen, per GC worker thread --- hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp 2012-08-10 09:23:58.000000000 -0700 -+++ hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp 2013-01-16 08:57:49.000000000 -0800 ++++ hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp 2013-05-05 09:39:10.000000000 -0700 @@ -698,6 +698,17 @@ if (arg_slots.is_constant() && arg_slots.as_constant() == 0) return; @@ -5159,7 +5208,7 @@ // ... keep1 | dest | dest=42 | keep3 | RF... | collect | bounce_pc | __ jump_to_method_handle_entry(G3_method_handle, O1_scratch); --- hotspot/src/cpu/x86/vm/methodHandles_x86.cpp 2012-08-10 09:24:07.000000000 -0700 -+++ hotspot/src/cpu/x86/vm/methodHandles_x86.cpp 2013-01-16 08:57:49.000000000 -0800 ++++ hotspot/src/cpu/x86/vm/methodHandles_x86.cpp 2013-05-05 09:39:10.000000000 -0700 @@ -691,6 +691,14 @@ if (VerifyMethodHandles) verify_stack_move(_masm, arg_slots, -1); @@ -5236,7 +5285,7 @@ // Check the array type. Register rbx_klass = rbx_temp; --- hotspot/src/os/bsd/vm/decoder_bsd.cpp 1969-12-31 16:00:00.000000000 -0800 -+++ hotspot/src/os/bsd/vm/decoder_bsd.cpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/os/bsd/vm/decoder_bsd.cpp 2013-05-05 09:39:10.000000000 -0700 @@ -0,0 +1,46 @@ +/* + * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. @@ -5285,7 +5334,7 @@ +} + --- hotspot/src/os/bsd/vm/os_bsd.cpp 2012-08-10 09:24:18.000000000 -0700 -+++ hotspot/src/os/bsd/vm/os_bsd.cpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/os/bsd/vm/os_bsd.cpp 2013-05-05 09:39:10.000000000 -0700 @@ -2341,14 +2341,14 @@ } @@ -5392,7 +5441,7 @@ void os::numa_make_global(char *addr, size_t bytes) { --- hotspot/src/os/bsd/vm/os_bsd.hpp 2012-08-10 09:24:18.000000000 -0700 -+++ hotspot/src/os/bsd/vm/os_bsd.hpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/os/bsd/vm/os_bsd.hpp 2013-05-05 09:39:10.000000000 -0700 @@ -103,6 +103,12 @@ static bool hugetlbfs_sanity_check(bool warn, size_t page_size); @@ -5407,7 +5456,7 @@ static void init_thread_fpu_state(); --- hotspot/src/os/bsd/vm/os_bsd.inline.hpp 2012-08-10 09:24:18.000000000 -0700 -+++ hotspot/src/os/bsd/vm/os_bsd.inline.hpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/os/bsd/vm/os_bsd.inline.hpp 2013-05-05 09:39:10.000000000 -0700 @@ -31,10 +31,22 @@ # include "atomic_bsd_x86.inline.hpp" # include "orderAccess_bsd_x86.inline.hpp" @@ -5432,7 +5481,7 @@ // System includes --- hotspot/src/os/bsd/vm/thread_bsd.inline.hpp 2012-08-10 09:24:18.000000000 -0700 -+++ hotspot/src/os/bsd/vm/thread_bsd.inline.hpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/os/bsd/vm/thread_bsd.inline.hpp 2013-05-05 09:39:10.000000000 -0700 @@ -34,11 +34,26 @@ # include "orderAccess_bsd_x86.inline.hpp" # include "prefetch_bsd_x86.inline.hpp" @@ -5461,8 +5510,56 @@ // Contains inlined functions for class Thread and ThreadLocalStorage --- hotspot/src/os/posix/vm/os_posix.cpp 2012-08-10 09:24:20.000000000 -0700 -+++ hotspot/src/os/posix/vm/os_posix.cpp 2013-03-09 08:44:40.000000000 -0800 -@@ -110,11 +110,19 @@ ++++ hotspot/src/os/posix/vm/os_posix.cpp 2013-05-05 09:39:10.000000000 -0700 +@@ -75,6 +75,47 @@ + return; + } + ++// Multiple threads can race in this code, and can remap over each other with MAP_FIXED, ++// so on posix, unmap the section at the start and at the end of the chunk that we mapped ++// rather than unmapping and remapping the whole chunk to get requested alignment. ++char* os::reserve_memory_aligned(size_t size, size_t alignment) { ++ assert((alignment & (os::vm_allocation_granularity() - 1)) == 0, ++ "Alignment must be a multiple of allocation granularity (page size)"); ++ assert((size & (alignment -1)) == 0, "size must be 'alignment' aligned"); ++ ++ size_t extra_size = size + alignment; ++ assert(extra_size >= size, "overflow, size is too large to allow alignment"); ++ ++ char* extra_base = os::reserve_memory(extra_size, NULL, alignment); ++ ++ if (extra_base == NULL) { ++ return NULL; ++ } ++ ++ // Do manual alignment ++ char* aligned_base = (char*) align_size_up((uintptr_t) extra_base, alignment); ++ ++ // [ | | ] ++ // ^ extra_base ++ // ^ extra_base + begin_offset == aligned_base ++ // extra_base + begin_offset + size ^ ++ // extra_base + extra_size ^ ++ // |<>| == begin_offset ++ // end_offset == |<>| ++ size_t begin_offset = aligned_base - extra_base; ++ size_t end_offset = (extra_base + extra_size) - (aligned_base + size); ++ ++ if (begin_offset > 0) { ++ os::release_memory(extra_base, begin_offset); ++ } ++ ++ if (end_offset > 0) { ++ os::release_memory(extra_base + begin_offset + size, end_offset); ++ } ++ ++ return aligned_base; ++} ++ + void os::Posix::print_load_average(outputStream* st) { + st->print("load average:"); + double loadavg[3]; +@@ -110,11 +151,19 @@ if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity"); else st->print("%d", rlim.rlim_cur); @@ -5482,8 +5579,47 @@ } void os::Posix::print_uname_info(outputStream* st) { +--- hotspot/src/os/windows/vm/os_windows.cpp 2012-08-10 09:24:30.000000000 -0700 ++++ hotspot/src/os/windows/vm/os_windows.cpp 2013-05-05 09:39:10.000000000 -0700 +@@ -2941,6 +2941,36 @@ + } + } + ++// Multiple threads can race in this code but it's not possible to unmap small sections of ++// virtual space to get requested alignment, like posix-like os's. ++// Windows prevents multiple thread from remapping over each other so this loop is thread-safe. ++char* os::reserve_memory_aligned(size_t size, size_t alignment) { ++ assert((alignment & (os::vm_allocation_granularity() - 1)) == 0, ++ "Alignment must be a multiple of allocation granularity (page size)"); ++ assert((size & (alignment -1)) == 0, "size must be 'alignment' aligned"); ++ ++ size_t extra_size = size + alignment; ++ assert(extra_size >= size, "overflow, size is too large to allow alignment"); ++ ++ char* aligned_base = NULL; ++ ++ do { ++ char* extra_base = os::reserve_memory(extra_size, NULL, alignment); ++ if (extra_base == NULL) { ++ return NULL; ++ } ++ // Do manual alignment ++ aligned_base = (char*) align_size_up((uintptr_t) extra_base, alignment); ++ ++ os::release_memory(extra_base, extra_size); ++ ++ aligned_base = os::reserve_memory(size, aligned_base); ++ ++ } while (aligned_base == NULL); ++ ++ return aligned_base; ++} ++ + char* os::reserve_memory(size_t bytes, char* addr, size_t alignment_hint) { + assert((size_t)addr % os::vm_allocation_granularity() == 0, + "reserve alignment"); --- hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp 2012-08-10 09:24:32.000000000 -0700 -+++ hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp 2013-05-05 09:39:10.000000000 -0700 @@ -52,7 +52,7 @@ /* Posix Thread IDs */ \ /**********************/ \ @@ -5494,7 +5630,7 @@ \ /* This must be the last entry, and must be present */ \ --- hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp 2012-08-10 09:24:33.000000000 -0700 -+++ hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp 2013-05-05 09:39:10.000000000 -0700 @@ -24,7 +24,7 @@ */ @@ -5505,7 +5641,7 @@ #endif --- hotspot/src/share/vm/compiler/compilerOracle.cpp 2012-08-10 09:26:19.000000000 -0700 -+++ hotspot/src/share/vm/compiler/compilerOracle.cpp 2013-01-16 08:57:49.000000000 -0800 ++++ hotspot/src/share/vm/compiler/compilerOracle.cpp 2013-05-05 09:39:12.000000000 -0700 @@ -575,7 +575,7 @@ char token[1024]; int pos = 0; @@ -5525,7 +5661,7 @@ token[pos++] = '\0'; parse_line(token); --- hotspot/src/share/vm/interpreter/linkResolver.cpp 2012-08-10 09:27:05.000000000 -0700 -+++ hotspot/src/share/vm/interpreter/linkResolver.cpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/share/vm/interpreter/linkResolver.cpp 2013-05-05 09:39:12.000000000 -0700 @@ -712,7 +712,7 @@ if (check_access && @@ -5535,8 +5671,332 @@ // b) check if the method class is a superclass of the current class (superclass relation is not reflexive!) current_klass->is_subtype_of(method_klass()) && current_klass() != method_klass() && // c) check if the method is not <init> +--- hotspot/src/share/vm/oops/cpCacheOop.cpp 2012-08-10 09:27:18.000000000 -0700 ++++ hotspot/src/share/vm/oops/cpCacheOop.cpp 2013-05-05 09:39:12.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -470,6 +470,24 @@ + return false; + } + ++// a constant pool cache entry should never contain old or obsolete methods ++bool ConstantPoolCacheEntry::check_no_old_or_obsolete_entries() { ++ if (is_vfinal()) { ++ // virtual and final so _f2 contains method ptr instead of vtable index ++ methodOop m = (methodOop)_f2; ++ // Return false if _f2 refers to an old or an obsolete method. ++ // _f2 == NULL || !m->is_method() are just as unexpected here. ++ return (m != NULL && m->is_method() && !m->is_old() && !m->is_obsolete()); ++ } else if ((oop)_f1 == NULL || !((oop)_f1)->is_method()) { ++ // _f1 == NULL || !_f1->is_method() are OK here ++ return true; ++ } ++ ++ methodOop m = (methodOop)_f1; ++ // return false if _f1 refers to an old or an obsolete method ++ return (!m->is_old() && !m->is_obsolete()); ++} ++ + bool ConstantPoolCacheEntry::is_interesting_method_entry(klassOop k) { + if (!is_method_entry()) { + // not a method entry so not interesting by default +@@ -492,7 +510,7 @@ + } + + assert(m != NULL && m->is_method(), "sanity check"); +- if (m == NULL || !m->is_method() || m->method_holder() != k) { ++ if (m == NULL || !m->is_method() || (k != NULL && m->method_holder() != k)) { + // robustness for above sanity checks or method is not in + // the interesting class + return false; +@@ -577,3 +595,22 @@ + } + } + } ++ ++// the constant pool cache should never contain old or obsolete methods ++bool constantPoolCacheOopDesc::check_no_old_or_obsolete_entries() { ++ for (int i = 1; i < length(); i++) { ++ if (entry_at(i)->is_interesting_method_entry(NULL) && ++ !entry_at(i)->check_no_old_or_obsolete_entries()) { ++ return false; ++ } ++ } ++ return true; ++} ++ ++void constantPoolCacheOopDesc::dump_cache() { ++ for (int i = 1; i < length(); i++) { ++ if (entry_at(i)->is_interesting_method_entry(NULL)) { ++ entry_at(i)->print(tty, i); ++ } ++ } ++} +--- hotspot/src/share/vm/oops/cpCacheOop.hpp 2012-08-10 09:27:18.000000000 -0700 ++++ hotspot/src/share/vm/oops/cpCacheOop.hpp 2013-05-05 09:39:12.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -298,6 +298,7 @@ + // group don't print the klass name. + bool adjust_method_entry(methodOop old_method, methodOop new_method, + bool * trace_name_printed); ++ bool check_no_old_or_obsolete_entries(); + bool is_interesting_method_entry(klassOop k); + bool is_field_entry() const { return (_flags & (1 << hotSwapBit)) == 0; } + bool is_method_entry() const { return (_flags & (1 << hotSwapBit)) != 0; } +@@ -405,6 +406,8 @@ + // group don't print the klass name. + void adjust_method_entries(methodOop* old_methods, methodOop* new_methods, + int methods_length, bool * trace_name_printed); ++ bool check_no_old_or_obsolete_entries(); ++ void dump_cache(); + }; + + #endif // SHARE_VM_OOPS_CPCACHEOOP_HPP +--- hotspot/src/share/vm/oops/klassVtable.cpp 2012-08-10 09:27:23.000000000 -0700 ++++ hotspot/src/share/vm/oops/klassVtable.cpp 2013-05-05 09:39:12.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -640,11 +640,37 @@ + new_method->name()->as_C_string(), + new_method->signature()->as_C_string())); + } ++ // cannot 'break' here; see for-loop comment above. + } + } + } + } + ++// a vtable should never contain old or obsolete methods ++bool klassVtable::check_no_old_or_obsolete_entries() { ++ for (int i = 0; i < length(); i++) { ++ methodOop m = unchecked_method_at(i); ++ if (m != NULL && (m->is_old() || m->is_obsolete())) { ++ return false; ++ } ++ } ++ return true; ++} ++ ++void klassVtable::dump_vtable() { ++ tty->print_cr("vtable dump --"); ++ for (int i = 0; i < length(); i++) { ++ methodOop m = unchecked_method_at(i); ++ if (m != NULL) { ++ tty->print(" (%5d) ", i); ++ m->access_flags().print_on(tty); ++ tty->print(" -- "); ++ m->print_name(tty); ++ tty->cr(); ++ } ++ } ++} ++ + // CDS/RedefineClasses support - clear vtables so they can be reinitialized + void klassVtable::clear_vtable() { + for (int i = 0; i < _length; i++) table()[i].clear(); +@@ -994,13 +1020,42 @@ + new_method->name()->as_C_string(), + new_method->signature()->as_C_string())); + } +- break; ++ // cannot 'break' here; see for-loop comment above. + } + ime++; + } + } + } + ++// an itable should never contain old or obsolete methods ++bool klassItable::check_no_old_or_obsolete_entries() { ++ itableMethodEntry* ime = method_entry(0); ++ for (int i = 0; i < _size_method_table; i++) { ++ methodOop m = ime->method(); ++ if (m != NULL && (m->is_old() || m->is_obsolete())) { ++ return false; ++ } ++ ime++; ++ } ++ return true; ++} ++ ++void klassItable::dump_itable() { ++ itableMethodEntry* ime = method_entry(0); ++ tty->print_cr("itable dump --"); ++ for (int i = 0; i < _size_method_table; i++) { ++ methodOop m = ime->method(); ++ if (m != NULL) { ++ tty->print(" (%5d) ", i); ++ m->access_flags().print_on(tty); ++ tty->print(" -- "); ++ m->print_name(tty); ++ tty->cr(); ++ } ++ ime++; ++ } ++} ++ + + // Setup + class InterfaceVisiterClosure : public StackObj { +@@ -1287,33 +1342,6 @@ + tty->print_cr("%6d bytes total", total); + } + +-bool klassVtable::check_no_old_entries() { +- // Check that there really is no entry +- for (int i = 0; i < length(); i++) { +- methodOop m = unchecked_method_at(i); +- if (m != NULL) { +- if (m->is_old()) { +- return false; +- } +- } +- } +- return true; +-} +- +-void klassVtable::dump_vtable() { +- tty->print_cr("vtable dump --"); +- for (int i = 0; i < length(); i++) { +- methodOop m = unchecked_method_at(i); +- if (m != NULL) { +- tty->print(" (%5d) ", i); +- m->access_flags().print_on(tty); +- tty->print(" -- "); +- m->print_name(tty); +- tty->cr(); +- } +- } +-} +- + int klassItable::_total_classes; // Total no. of classes with itables + long klassItable::_total_size; // Total no. of bytes used for itables + +--- hotspot/src/share/vm/oops/klassVtable.hpp 2012-08-10 09:27:23.000000000 -0700 ++++ hotspot/src/share/vm/oops/klassVtable.hpp 2013-05-05 09:39:12.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -98,6 +98,8 @@ + // group don't print the klass name. + void adjust_method_entries(methodOop* old_methods, methodOop* new_methods, + int methods_length, bool * trace_name_printed); ++ bool check_no_old_or_obsolete_entries(); ++ void dump_vtable(); + + // Garbage collection + void oop_follow_contents(); +@@ -118,11 +120,6 @@ + void verify(outputStream* st, bool force = false); + static void print_statistics() PRODUCT_RETURN; + +-#ifndef PRODUCT +- bool check_no_old_entries(); +- void dump_vtable(); +-#endif +- + protected: + friend class vtableEntry; + private: +@@ -292,6 +289,8 @@ + // group don't print the klass name. + void adjust_method_entries(methodOop* old_methods, methodOop* new_methods, + int methods_length, bool * trace_name_printed); ++ bool check_no_old_or_obsolete_entries(); ++ void dump_itable(); + + // Garbage collection + void oop_follow_contents(); +--- hotspot/src/share/vm/oops/methodOop.cpp 2012-08-10 09:27:25.000000000 -0700 ++++ hotspot/src/share/vm/oops/methodOop.cpp 2013-05-05 09:39:12.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -1346,10 +1346,6 @@ + } + + +-//----------------------------------------------------------------------------------- +-// Non-product code +- +-#ifndef PRODUCT + class SignatureTypePrinter : public SignatureTypeNames { + private: + outputStream* _st; +@@ -1386,6 +1382,10 @@ + } + + ++//----------------------------------------------------------------------------------- ++// Non-product code ++ ++#ifndef PRODUCT + void methodOopDesc::print_codes_on(outputStream* st) const { + print_codes_on(0, code_size(), st); + } +--- hotspot/src/share/vm/oops/methodOop.hpp 2012-08-10 09:27:26.000000000 -0700 ++++ hotspot/src/share/vm/oops/methodOop.hpp 2013-05-05 09:39:12.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -703,8 +703,8 @@ + static bool has_unloaded_classes_in_signature(methodHandle m, TRAPS); + + // Printing +- void print_short_name(outputStream* st) /*PRODUCT_RETURN*/; // prints as klassname::methodname; Exposed so field engineers can debug VM +- void print_name(outputStream* st) PRODUCT_RETURN; // prints as "virtual void foo(int)" ++ void print_short_name(outputStream* st); // prints as klassname::methodname; Exposed so field engineers can debug VM ++ void print_name(outputStream* st); // prints as "virtual void foo(int)"; exposed for TraceRedefineClasses + + // Helper routine used for method sorting + static void sort_methods(objArrayOop methods, +--- hotspot/src/share/vm/opto/library_call.cpp 2012-08-10 09:27:37.000000000 -0700 ++++ hotspot/src/share/vm/opto/library_call.cpp 2013-05-05 09:39:12.000000000 -0700 +@@ -3931,7 +3931,8 @@ + } + } + } +- else if (method->is_method_handle_adapter()) { ++ ++ if (method->is_method_handle_adapter()) { + // This is an internal adapter frame from the MethodHandleCompiler -- skip it + return true; + } +@@ -5476,4 +5477,3 @@ + push(result); + return true; + } +- --- hotspot/src/share/vm/opto/loopTransform.cpp 2012-08-10 09:27:38.000000000 -0700 -+++ hotspot/src/share/vm/opto/loopTransform.cpp 2013-01-16 08:57:50.000000000 -0800 ++++ hotspot/src/share/vm/opto/loopTransform.cpp 2013-05-05 09:39:12.000000000 -0700 @@ -2733,6 +2733,8 @@ result_mem = new (C, 1) ProjNode(call,TypeFunc::Memory); _igvn.register_new_node_with_optimizer(result_mem); @@ -5554,8 +6014,286 @@ // Redirect the old control and memory edges that are outside the loop. Node* exit = head->loopexit()->proj_out(0); +--- hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp 2012-08-10 09:27:50.000000000 -0700 ++++ hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp 2013-05-05 09:39:13.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -129,8 +129,15 @@ + // See jvmtiExport.hpp for detailed explanation. + JvmtiExport::set_has_redefined_a_class(); + +-#ifdef ASSERT +- SystemDictionary::classes_do(check_class, thread); ++// check_class() is optionally called for product bits, but is ++// always called for non-product bits. ++#ifdef PRODUCT ++ if (RC_TRACE_ENABLED(0x00004000)) { ++#endif ++ RC_TRACE_WITH_THREAD(0x00004000, thread, ("calling check_class")); ++ SystemDictionary::classes_do(check_class, thread); ++#ifdef PRODUCT ++ } + #endif + } + +@@ -3366,76 +3373,116 @@ + } + } + +-#ifndef PRODUCT + void VM_RedefineClasses::check_class(klassOop k_oop, + oop initiating_loader, TRAPS) { + Klass *k = k_oop->klass_part(); + if (k->oop_is_instance()) { + HandleMark hm(THREAD); + instanceKlass *ik = (instanceKlass *) k; ++ bool no_old_methods = true; // be optimistic ++ ResourceMark rm(THREAD); + +- if (ik->vtable_length() > 0) { +- ResourceMark rm(THREAD); +- if (!ik->vtable()->check_no_old_entries()) { +- tty->print_cr("klassVtable::check_no_old_entries failure -- OLD method found -- class: %s", ik->signature_name()); ++ // a vtable should never contain old or obsolete methods ++ if (ik->vtable_length() > 0 && ++ !ik->vtable()->check_no_old_or_obsolete_entries()) { ++ if (RC_TRACE_ENABLED(0x00004000)) { ++ RC_TRACE_WITH_THREAD(0x00004000, THREAD, ++ ("klassVtable::check_no_old_or_obsolete_entries failure" ++ " -- OLD or OBSOLETE method found -- class: %s", ++ ik->signature_name())); + ik->vtable()->dump_vtable(); ++ } ++ no_old_methods = false; ++ } ++ ++ // an itable should never contain old or obsolete methods ++ if (ik->itable_length() > 0 && ++ !ik->itable()->check_no_old_or_obsolete_entries()) { ++ if (RC_TRACE_ENABLED(0x00004000)) { ++ RC_TRACE_WITH_THREAD(0x00004000, THREAD, ++ ("klassItable::check_no_old_or_obsolete_entries failure" ++ " -- OLD or OBSOLETE method found -- class: %s", ++ ik->signature_name())); ++ ik->itable()->dump_itable(); ++ } ++ no_old_methods = false; ++ } ++ ++ // the constant pool cache should never contain old or obsolete methods ++ if (ik->constants() != NULL && ++ ik->constants()->cache() != NULL && ++ !ik->constants()->cache()->check_no_old_or_obsolete_entries()) { ++ if (RC_TRACE_ENABLED(0x00004000)) { ++ RC_TRACE_WITH_THREAD(0x00004000, THREAD, ++ ("cp-cache::check_no_old_or_obsolete_entries failure" ++ " -- OLD or OBSOLETE method found -- class: %s", ++ ik->signature_name())); ++ ik->constants()->cache()->dump_cache(); ++ } ++ no_old_methods = false; ++ } ++ ++ if (!no_old_methods) { ++ if (RC_TRACE_ENABLED(0x00004000)) { + dump_methods(); +- assert(false, "OLD method found"); ++ } else { ++ tty->print_cr("INFO: use the '-XX:TraceRedefineClasses=16384' option " ++ "to see more info about the following guarantee() failure."); + } ++ guarantee(false, "OLD and/or OBSOLETE method(s) found"); + } + } + } + + void VM_RedefineClasses::dump_methods() { +- int j; +- tty->print_cr("_old_methods --"); +- for (j = 0; j < _old_methods->length(); ++j) { +- methodOop m = (methodOop) _old_methods->obj_at(j); +- tty->print("%4d (%5d) ", j, m->vtable_index()); +- m->access_flags().print_on(tty); +- tty->print(" -- "); +- m->print_name(tty); +- tty->cr(); +- } +- tty->print_cr("_new_methods --"); +- for (j = 0; j < _new_methods->length(); ++j) { +- methodOop m = (methodOop) _new_methods->obj_at(j); +- tty->print("%4d (%5d) ", j, m->vtable_index()); +- m->access_flags().print_on(tty); +- tty->print(" -- "); +- m->print_name(tty); +- tty->cr(); +- } +- tty->print_cr("_matching_(old/new)_methods --"); +- for (j = 0; j < _matching_methods_length; ++j) { +- methodOop m = _matching_old_methods[j]; +- tty->print("%4d (%5d) ", j, m->vtable_index()); +- m->access_flags().print_on(tty); +- tty->print(" -- "); +- m->print_name(tty); +- tty->cr(); +- m = _matching_new_methods[j]; +- tty->print(" (%5d) ", m->vtable_index()); +- m->access_flags().print_on(tty); +- tty->cr(); +- } +- tty->print_cr("_deleted_methods --"); +- for (j = 0; j < _deleted_methods_length; ++j) { +- methodOop m = _deleted_methods[j]; +- tty->print("%4d (%5d) ", j, m->vtable_index()); +- m->access_flags().print_on(tty); +- tty->print(" -- "); +- m->print_name(tty); +- tty->cr(); +- } +- tty->print_cr("_added_methods --"); +- for (j = 0; j < _added_methods_length; ++j) { +- methodOop m = _added_methods[j]; +- tty->print("%4d (%5d) ", j, m->vtable_index()); +- m->access_flags().print_on(tty); +- tty->print(" -- "); +- m->print_name(tty); +- tty->cr(); +- } ++ int j; ++ RC_TRACE(0x00004000, ("_old_methods --")); ++ for (j = 0; j < _old_methods->length(); ++j) { ++ methodOop m = (methodOop) _old_methods->obj_at(j); ++ RC_TRACE_NO_CR(0x00004000, ("%4d (%5d) ", j, m->vtable_index())); ++ m->access_flags().print_on(tty); ++ tty->print(" -- "); ++ m->print_name(tty); ++ tty->cr(); ++ } ++ RC_TRACE(0x00004000, ("_new_methods --")); ++ for (j = 0; j < _new_methods->length(); ++j) { ++ methodOop m = (methodOop) _new_methods->obj_at(j); ++ RC_TRACE_NO_CR(0x00004000, ("%4d (%5d) ", j, m->vtable_index())); ++ m->access_flags().print_on(tty); ++ tty->print(" -- "); ++ m->print_name(tty); ++ tty->cr(); ++ } ++ RC_TRACE(0x00004000, ("_matching_(old/new)_methods --")); ++ for (j = 0; j < _matching_methods_length; ++j) { ++ methodOop m = _matching_old_methods[j]; ++ RC_TRACE_NO_CR(0x00004000, ("%4d (%5d) ", j, m->vtable_index())); ++ m->access_flags().print_on(tty); ++ tty->print(" -- "); ++ m->print_name(tty); ++ tty->cr(); ++ m = _matching_new_methods[j]; ++ RC_TRACE_NO_CR(0x00004000, (" (%5d) ", m->vtable_index())); ++ m->access_flags().print_on(tty); ++ tty->cr(); ++ } ++ RC_TRACE(0x00004000, ("_deleted_methods --")); ++ for (j = 0; j < _deleted_methods_length; ++j) { ++ methodOop m = _deleted_methods[j]; ++ RC_TRACE_NO_CR(0x00004000, ("%4d (%5d) ", j, m->vtable_index())); ++ m->access_flags().print_on(tty); ++ tty->print(" -- "); ++ m->print_name(tty); ++ tty->cr(); ++ } ++ RC_TRACE(0x00004000, ("_added_methods --")); ++ for (j = 0; j < _added_methods_length; ++j) { ++ methodOop m = _added_methods[j]; ++ RC_TRACE_NO_CR(0x00004000, ("%4d (%5d) ", j, m->vtable_index())); ++ m->access_flags().print_on(tty); ++ tty->print(" -- "); ++ m->print_name(tty); ++ tty->cr(); ++ } + } +-#endif +--- hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp 2012-08-10 09:27:50.000000000 -0700 ++++ hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp 2013-05-05 09:39:13.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -478,9 +478,8 @@ + + void flush_dependent_code(instanceKlassHandle k_h, TRAPS); + +- static void check_class(klassOop k_oop, oop initiating_loader, TRAPS) PRODUCT_RETURN; +- +- static void dump_methods() PRODUCT_RETURN; ++ static void check_class(klassOop k_oop, oop initiating_loader, TRAPS); ++ static void dump_methods(); + + public: + VM_RedefineClasses(jint class_count, +--- hotspot/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp 2012-08-10 09:27:50.000000000 -0700 ++++ hotspot/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp 2013-05-05 09:39:13.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,7 +54,7 @@ + // 0x00000800 | 2048 - previous class breakpoint mgmt + // 0x00001000 | 4096 - detect calls to obsolete methods + // 0x00002000 | 8192 - fail a guarantee() in addition to detection +-// 0x00004000 | 16384 - unused ++// 0x00004000 | 16384 - detect old/obsolete methods in metadata + // 0x00008000 | 32768 - old/new method matching/add/delete + // 0x00010000 | 65536 - impl details: CP size info + // 0x00020000 | 131072 - impl details: CP merge pass info +@@ -82,6 +82,13 @@ + tty->print_cr args; \ + } while (0) + ++#define RC_TRACE_NO_CR(level, args) \ ++ if ((TraceRedefineClasses & level) != 0) { \ ++ ResourceMark rm; \ ++ tty->print("RedefineClasses-0x%x: ", level); \ ++ tty->print args; \ ++ } while (0) ++ + #define RC_TRACE_WITH_THREAD(level, thread, args) \ + if ((TraceRedefineClasses & level) != 0) { \ + ResourceMark rm(thread); \ +--- hotspot/src/share/vm/prims/methodHandles.cpp 2012-08-10 09:27:52.000000000 -0700 ++++ hotspot/src/share/vm/prims/methodHandles.cpp 2013-05-05 09:39:13.000000000 -0700 +@@ -645,6 +645,13 @@ + } + } + methodHandle m = result.resolved_method(); ++ KlassHandle mklass = m->method_holder(); ++ KlassHandle receiver_limit = result.resolved_klass(); ++ if (receiver_limit.is_null() || ++ // ignore passed-in limit; interfaces are interconvertible ++ receiver_limit->is_interface() && mklass->is_interface()) { ++ receiver_limit = mklass; ++ } + oop vmtarget = NULL; + int vmindex = methodOopDesc::nonvirtual_vtable_index; + if (defc->is_interface()) { +@@ -665,6 +672,7 @@ + java_lang_invoke_MemberName::set_vmtarget(mname(), vmtarget); + java_lang_invoke_MemberName::set_vmindex(mname(), vmindex); + java_lang_invoke_MemberName::set_modifiers(mname(), mods); ++ java_lang_invoke_MemberName::set_clazz(mname(), receiver_limit->java_mirror()); + DEBUG_ONLY(KlassHandle junk1; int junk2); + assert(decode_MemberName(mname(), junk1, junk2) == result.resolved_method(), + "properly stored for later decoding"); --- hotspot/src/share/vm/runtime/arguments.cpp 2012-08-10 09:27:53.000000000 -0700 -+++ hotspot/src/share/vm/runtime/arguments.cpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/share/vm/runtime/arguments.cpp 2013-05-05 09:39:13.000000000 -0700 @@ -829,6 +829,9 @@ } else { jio_fprintf(defaultStream::error_stream(), "%s", locked_message_buf); @@ -5576,7 +6314,7 @@ if (in_comment) { if (c == '\n') in_comment = false; --- hotspot/src/share/vm/runtime/atomic.cpp 2012-08-10 09:27:53.000000000 -0700 -+++ hotspot/src/share/vm/runtime/atomic.cpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/share/vm/runtime/atomic.cpp 2013-05-05 09:39:13.000000000 -0700 @@ -54,6 +54,12 @@ #ifdef TARGET_OS_ARCH_windows_x86 # include "atomic_windows_x86.inline.hpp" @@ -5591,7 +6329,7 @@ # include "atomic_linux_arm.inline.hpp" #endif --- hotspot/src/share/vm/runtime/globals.hpp 2012-08-10 09:27:59.000000000 -0700 -+++ hotspot/src/share/vm/runtime/globals.hpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/share/vm/runtime/globals.hpp 2013-05-05 09:39:13.000000000 -0700 @@ -3902,7 +3902,10 @@ product(bool, UseVMInterruptibleIO, false, \ "(Unstable, Solaris-specific) Thread interrupt before or with " \ @@ -5605,7 +6343,7 @@ /* * Macros for factoring of globals --- hotspot/src/share/vm/runtime/os.hpp 2012-08-10 09:28:05.000000000 -0700 -+++ hotspot/src/share/vm/runtime/os.hpp 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/src/share/vm/runtime/os.hpp 2013-05-05 09:39:13.000000000 -0700 @@ -30,6 +30,9 @@ #include "runtime/extendedPC.hpp" #include "runtime/handles.hpp" @@ -5616,7 +6354,15 @@ #ifdef TARGET_OS_FAMILY_linux # include "jvm_linux.h" #endif -@@ -694,8 +697,8 @@ +@@ -233,6 +236,7 @@ + static int vm_allocation_granularity(); + static char* reserve_memory(size_t bytes, char* addr = 0, + size_t alignment_hint = 0); ++ static char* reserve_memory_aligned(size_t size, size_t alignment); + static char* attempt_reserve_memory_at(size_t bytes, char* addr); + static void split_reserved_memory(char *base, size_t size, + size_t split, bool realloc); +@@ -694,8 +698,8 @@ # include "os_windows.hpp" #endif #ifdef TARGET_OS_FAMILY_bsd @@ -5626,8 +6372,90 @@ #endif #ifdef TARGET_OS_ARCH_linux_x86 # include "os_linux_x86.hpp" +--- hotspot/src/share/vm/runtime/thread.cpp 2012-08-10 09:28:14.000000000 -0700 ++++ hotspot/src/share/vm/runtime/thread.cpp 2013-05-05 09:39:13.000000000 -0700 +@@ -3555,6 +3555,9 @@ + os::dll_build_name(buffer, sizeof(buffer), Arguments::get_dll_dir(), name); + library = os::dll_load(buffer, ebuf, sizeof ebuf); + #ifdef KERNEL ++ ++ // Dead code, KERNEL is never built in JDK7 or later. This code will be removed in a future update release. ++ + // Download instrument dll + if (library == NULL && strcmp(name, "instrument") == 0) { + char *props = Arguments::get_kernel_properties(); +--- hotspot/src/share/vm/runtime/virtualspace.cpp 2012-08-10 09:28:16.000000000 -0700 ++++ hotspot/src/share/vm/runtime/virtualspace.cpp 2013-05-05 09:39:13.000000000 -0700 +@@ -340,20 +340,9 @@ + if ((((size_t)base + noaccess_prefix) & (alignment - 1)) != 0) { + // Base not aligned, retry + if (!os::release_memory(base, size)) fatal("os::release_memory failed"); +- // Reserve size large enough to do manual alignment and +- // increase size to a multiple of the desired alignment ++ // Make sure that size is aligned + size = align_size_up(size, alignment); +- size_t extra_size = size + alignment; +- do { +- char* extra_base = os::reserve_memory(extra_size, NULL, alignment); +- if (extra_base == NULL) return; +- // Do manual alignement +- base = (char*) align_size_up((uintptr_t) extra_base, alignment); +- assert(base >= extra_base, "just checking"); +- // Re-reserve the region at the aligned base address. +- os::release_memory(extra_base, extra_size); +- base = os::reserve_memory(size, base); +- } while (base == NULL); ++ base = os::reserve_memory_aligned(size, alignment); + + if (requested_address != 0 && + failed_to_reserve_as_requested(base, requested_address, size, false)) { +--- hotspot/src/share/vm/utilities/accessFlags.cpp 2012-08-10 09:28:53.000000000 -0700 ++++ hotspot/src/share/vm/utilities/accessFlags.cpp 2013-05-05 09:39:11.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -59,8 +59,6 @@ + } while(f != old_flags); + } + +-#ifndef PRODUCT +- + void AccessFlags::print_on(outputStream* st) const { + if (is_public ()) st->print("public " ); + if (is_private ()) st->print("private " ); +@@ -79,8 +77,6 @@ + if (is_obsolete ()) st->print("{obsolete} " ); + } + +-#endif +- + void accessFlags_init() { + assert(sizeof(AccessFlags) == sizeof(jint), "just checking size of flags"); + } +--- hotspot/src/share/vm/utilities/accessFlags.hpp 2012-08-10 09:28:53.000000000 -0700 ++++ hotspot/src/share/vm/utilities/accessFlags.hpp 2013-05-05 09:39:11.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -233,7 +233,7 @@ + inline friend AccessFlags accessFlags_from(jint flags); + + // Printing/debugging +- void print_on(outputStream* st) const PRODUCT_RETURN; ++ void print_on(outputStream* st) const; + }; + + inline AccessFlags accessFlags_from(jint flags) { --- hotspot/test/compiler/5091921/Test7005594.sh 2012-08-10 09:28:58.000000000 -0700 -+++ hotspot/test/compiler/5091921/Test7005594.sh 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/test/compiler/5091921/Test7005594.sh 2013-05-05 09:39:13.000000000 -0700 @@ -71,6 +71,9 @@ # Windows/MKS MEM=`"$ROOTDIR/mksnt/sysinf" memory -v | grep "Total Physical Memory: " | sed 's/Total Physical Memory: *//g'` @@ -5639,7 +6467,7 @@ echo "Unable to determine amount of physical memory on the machine" fi --- hotspot/test/compiler/7158807/Test7158807.java 1969-12-31 16:00:00.000000000 -0800 -+++ hotspot/test/compiler/7158807/Test7158807.java 2013-01-16 08:57:50.000000000 -0800 ++++ hotspot/test/compiler/7158807/Test7158807.java 2013-05-05 09:39:13.000000000 -0700 @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -5708,7 +6536,7 @@ +} + --- hotspot/test/gc/6941923/test6941923.sh 2012-08-10 09:29:15.000000000 -0700 -+++ hotspot/test/gc/6941923/test6941923.sh 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/test/gc/6941923/test6941923.sh 2013-05-05 09:39:13.000000000 -0700 @@ -9,7 +9,7 @@ ## skip on windows OS=`uname -s` @@ -5719,7 +6547,7 @@ PS=":" FS="/" --- hotspot/test/runtime/7020373/Test7020373.sh 2012-08-10 09:29:17.000000000 -0700 -+++ hotspot/test/runtime/7020373/Test7020373.sh 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/test/runtime/7020373/Test7020373.sh 2013-05-05 09:39:13.000000000 -0700 @@ -32,7 +32,7 @@ # set platform-dependent variables OS=`uname -s` @@ -5730,7 +6558,7 @@ PS=":" FS="/" --- hotspot/test/runtime/7110720/Test7110720.sh 2012-08-10 09:29:18.000000000 -0700 -+++ hotspot/test/runtime/7110720/Test7110720.sh 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/test/runtime/7110720/Test7110720.sh 2013-05-05 09:39:13.000000000 -0700 @@ -37,7 +37,7 @@ # set platform-dependent variables OS=`uname -s` @@ -7081,7 +7909,7 @@ - - --- hotspot/test/runtime/7158800/Test7158800.sh 2012-08-10 09:29:19.000000000 -0700 -+++ hotspot/test/runtime/7158800/Test7158800.sh 2013-03-09 08:44:40.000000000 -0800 ++++ hotspot/test/runtime/7158800/Test7158800.sh 2013-05-05 09:39:14.000000000 -0700 @@ -46,7 +46,7 @@ # set platform-dependent variables OS=`uname -s` @@ -7092,7 +7920,7 @@ PS=":" FS="/" --- hotspot/test/runtime/7158804/Test7158804.sh 1969-12-31 16:00:00.000000000 -0800 -+++ hotspot/test/runtime/7158804/Test7158804.sh 2013-01-16 08:57:50.000000000 -0800 ++++ hotspot/test/runtime/7158804/Test7158804.sh 2013-05-05 09:39:14.000000000 -0700 @@ -0,0 +1,30 @@ +#!/bin/sh +# @@ -7125,7 +7953,7 @@ +rm -f .hotspotrc +exit 0 --- hotspot/test/runtime/7162488/Test7162488.sh 1969-12-31 16:00:00.000000000 -0800 -+++ hotspot/test/runtime/7162488/Test7162488.sh 2013-01-16 08:57:50.000000000 -0800 ++++ hotspot/test/runtime/7162488/Test7162488.sh 2013-05-05 09:39:14.000000000 -0700 @@ -0,0 +1,77 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -7205,7 +8033,7 @@ +printf "Passed.\n" + --- jaxp/.hgtags 2012-08-10 09:35:08.000000000 -0700 -+++ jaxp/.hgtags 2013-03-09 08:44:42.000000000 -0800 ++++ jaxp/.hgtags 2013-05-05 09:39:24.000000000 -0700 @@ -123,6 +123,7 @@ bcd31fa1e3c6f51b4fdd427ef905188cdac57164 jdk7-b146 067fb18071e3872698f6218724958bd0cebf30a3 jdk7u1-b01 @@ -7214,7 +8042,7 @@ 104ca42e1e7ca66b074a4619ce6420f15d8f454d jdk7u1-b02 64e323faadf65018c1ffc8bb9c97f7b664e87347 jdk7u1-b03 2256c20e66857f80cacda14ffdbc0979c929d7f8 jdk7u1-b04 -@@ -197,5 +198,46 @@ +@@ -197,5 +198,69 @@ 7403701aa75848ca2a7b297909908b858134e132 jdk7u6-b21 fcf35906d1d88583878cd2e2d7c63dfba4e9f679 jdk7u6-b22 8824bcbfd7cd8059ededf70f1e7f2b06f02cb33f jdk7u6-b23 @@ -7222,6 +8050,7 @@ -0a313d4307930be3a64106b9b8c90f9342673aa0 jdk7u8-b02 +378f719cfb9491b766cd9f7cd47ad7fa3503e141 jdk7u6-b24 +5f1b80e8baec46fc28826a3a6ab8e1913c872f4c jdk7u6-b30 ++2eafa8a6fd8fdb54b10045e247d1a57f9817f473 jdk7u6-b31 +2eafa8a6fd8fdb54b10045e247d1a57f9817f473 jdk7u7-b10 +c4aa15da8529451cc678d5747e7b82e9cc38627e jdk7u7-b30 +f6e11679b12e1548f407b78a940c568401dd2a19 jdk7u7-b11 @@ -7235,6 +8064,8 @@ +78d9e4853388a2e7be18ff18c0b5330c074cb514 jdk7u9-b02 +b12a2d557c5e302b614c5f7e25ad6c8a0e138742 jdk7u9-b04 +ab4bbb93b3831aca230c62431f7fe02b56793450 jdk7u9-b05 ++039b21e98d2b2d0b26a19c325b37ce522bae39de jdk7u9-b31 ++d80a8e81fef0bc6e0bdb7891895bda527853add1 jdk7u9-b32 +254ed6ae237ee631179819570cf7fb265c6fb3a8 jdk7u10-b10 +c1df39bcc9c1bcdfb2a92682650264b3b7771ce8 jdk7u10-b11 +00cfd60368048c4969785eb52ec50cf5691c4367 jdk7u10-b12 @@ -7245,8 +8076,11 @@ +86c75e6aa3a7fa9a587fc7dd2d08af8aa8ffb9a9 jdk7u10-b17 +162a2c6ad8718a63253fa53724f704a4f85731bc jdk7u10-b18 +c59eb287de720ae5ce8087f179ec01f4f6525a32 jdk7u10-b30 ++ec1e8ead41ee49d2b3f84a26ae0fac88e226692d jdk7u10-b31 +853059839d38432f86e345ba951397ede235a374 jdk7u11-b20 +453a52320a1b8bd425fdb55e14b64067b536f1e2 jdk7u11-b21 ++71353182d3f7c237047c5386d9f31186a5bd1519 jdk7u11-b32 ++af8f33c558d05aacdff5b5787be0cbaba9f10e98 jdk7u11-b33 +5df9207c4378b7f4b24d70b365714c5ee6318982 jdk7u11-b03 +6ee19b9c8313db32e6d8989aa3782830d2b09710 jdk7u11-b04 +3312b258392eaeab9c4a20e3deb36d3ae3337efe jdk7u11-b05 @@ -7260,98 +8094,6781 @@ +99c114990b191f32e72c6158072033aec5816aaf jdk7u15-b01 +edbaa584f09a78d0ad3c73389faf20409a552e46 jdk7u15-b02 +14a9b60a2086f4e2f6ec43bee3375042946f6510 jdk7u15-b30 ++de6df3c10ebc0f8c704a11ad86c8eea1e1cc1442 jdk7u15-b31 ++039c31ff1fe6789859f2f55588218147623a9a9f jdk7u15-b33 +a55f67cfe182dc42a86aae836674eb8ba5b79891 jdk7u15-b03 +eb9d57159e5126cf4316c9571ac39324a8b442a8 jdk7u15-b32 +8a9867ee429440b657eb5852c4dae5f029356022 jdk7u17-b01 ---- jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java 2012-08-10 09:36:39.000000000 -0700 -+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java 2013-01-15 23:09:49.000000000 -0800 -@@ -602,7 +602,7 @@ - if (reader == null) { - stream = xmlInputSource.getByteStream(); - if (stream == null) { -- URL location = new URL(expandedSystemId); -+ URL location = new URL(escapeNonUSAscii(expandedSystemId)); - URLConnection connect = location.openConnection(); - if (!(connect instanceof HttpURLConnection)) { - stream = connect.getInputStream(); -@@ -2586,6 +2586,64 @@ - - } // fixURI(String):String ++7863a60ae4b4a0c7d762a95e77e589fafa4e50ae jdk7u17-b02 ++a5e6594fc1ae20101b5d69632f65078d7a99b76d jdk7u17-b30 ++8fb34202383ece5386acecc3a6c1dac68dccbf05 jdk7u17-b31 ++0a6a09e5174a4c15632ff7e06d6b215164e3fa15 jdk7u21-b01 ++99ed1a3d29509fee659aabec4810c896b7234d80 jdk7u21-b02 ++38d4d23d167c5a623e6d771a15b1fe2ee771ce38 jdk7u21-b03 ++acde12ee462d650d34cc148d9d3649f9a9bbca8a jdk7u21-b04 ++56b1ad031df90d20c52941c15ceae0e5a90893b8 jdk7u21-b05 ++ab51202418c1c96e01a45893a26829a2d9c7b956 jdk7u21-b06 ++3ab71deee4a4477d89530ee9e92a36017a6092fa jdk7u21-b07 ++f5ef2e76669bc3179f17dac42a8a407fb6bd4d91 jdk7u21-b08 ++65977091d010402ccbed41c96748866a1d50f0c4 jdk7u21-b09 ++bf2d62ea518d5e4130e442e07705e7a50b821ad9 jdk7u21-b10 ++3e0e331bdfb8f3adfd0cc78118e0ac588e73a2b5 jdk7u21-b11 ++980fe893d8fd86d8aee14771167b6e0ac75fa208 jdk7u21-b30 +--- jaxp/src/com/sun/org/apache/bcel/internal/classfile/JavaClass.java 2012-08-10 09:35:19.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/bcel/internal/classfile/JavaClass.java 2013-05-05 09:39:19.000000000 -0700 +@@ -63,6 +63,7 @@ + import com.sun.org.apache.bcel.internal.util.ClassVector; + import com.sun.org.apache.bcel.internal.util.ClassQueue; + import com.sun.org.apache.bcel.internal.generic.Type; ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + + import java.io.*; + import java.util.StringTokenizer; +@@ -77,6 +78,7 @@ + * class file. Those interested in programatically generating classes + * should see the <a href="../generic/ClassGen.html">ClassGen</a> class. + ++ * @version $Id: JavaClass.java,v 1.4 2007-07-19 04:34:42 ofung Exp $ + * @see com.sun.org.apache.bcel.internal.generic.ClassGen + * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> + */ +@@ -451,9 +453,9 @@ + String debug = null, sep = null; + + try { +- debug = System.getProperty("JavaClass.debug"); ++ debug = SecuritySupport.getSystemProperty("JavaClass.debug"); + // Get path separator either / or \ usually +- sep = System.getProperty("file.separator"); ++ sep = SecuritySupport.getSystemProperty("file.separator"); + } + catch (SecurityException e) { + // falls through +--- jaxp/src/com/sun/org/apache/bcel/internal/util/Class2HTML.java 2012-08-10 09:36:04.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/bcel/internal/util/Class2HTML.java 2013-05-05 09:39:19.000000000 -0700 +@@ -82,6 +82,7 @@ + * method in the Method's frame will jump to the appropiate method in + * the Code frame. + * ++ * @version $Id: Class2HTML.java,v 1.3 2007-07-19 04:34:52 ofung Exp $ + * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> + */ + public class Class2HTML implements Constants +@@ -137,7 +138,7 @@ + ClassParser parser=null; + JavaClass java_class=null; + String zip_file = null; +- char sep = System.getProperty("file.separator").toCharArray()[0]; ++ char sep = SecuritySupport.getSystemProperty("file.separator").toCharArray()[0]; + String dir = "." + sep; // Where to store HTML files + + try { +--- jaxp/src/com/sun/org/apache/bcel/internal/util/ClassPath.java 2012-08-10 09:36:04.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/bcel/internal/util/ClassPath.java 2013-05-05 09:39:19.000000000 -0700 +@@ -66,6 +66,7 @@ + * Responsible for loading (class) files from the CLASSPATH. Inspired by + * sun.tools.ClassPath. + * ++ * @version $Id: ClassPath.java,v 1.4 2007-07-19 04:34:52 ofung Exp $ + * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> + */ + public class ClassPath implements Serializable { +@@ -83,7 +84,7 @@ + ArrayList vec = new ArrayList(); + + for(StringTokenizer tok=new StringTokenizer(class_path, +- System.getProperty("path.separator")); ++ SecuritySupport.getSystemProperty("path.separator")); + tok.hasMoreTokens();) + { + String path = tok.nextToken(); +@@ -92,7 +93,7 @@ + File file = new File(path); + + try { +- if(file.exists()) { ++ if(SecuritySupport.getFileExists(file)) { + if(file.isDirectory()) + vec.add(new Dir(path)); + else +@@ -143,8 +144,9 @@ + String name = tok.nextToken(); + File file = new File(name); +- if(file.exists()) ++ if(SecuritySupport.getFileExists(file)) { + list.add(name); ++ } + } + } + } +@@ -159,9 +161,9 @@ + String class_path, boot_path, ext_path; + + try { +- class_path = System.getProperty("java.class.path"); +- boot_path = System.getProperty("sun.boot.class.path"); +- ext_path = System.getProperty("java.ext.dirs"); ++ class_path = SecuritySupport.getSystemProperty("java.class.path"); ++ boot_path = SecuritySupport.getSystemProperty("sun.boot.class.path"); ++ ext_path = SecuritySupport.getSystemProperty("java.ext.dirs"); + } + catch (SecurityException e) { + return ""; +@@ -176,8 +178,8 @@ + getPathComponents(ext_path, dirs); + + for(Iterator e = dirs.iterator(); e.hasNext(); ) { +- File ext_dir = new File((String)e.next()); +- String[] extensions = ext_dir.list(new FilenameFilter() { ++ File ext_dir = new File((String)e.next()); ++ String[] extensions = SecuritySupport.getFileList(ext_dir, new FilenameFilter() { + public boolean accept(File dir, String name) { + name = name.toLowerCase(); + return name.endsWith(".zip") || name.endsWith(".jar"); +@@ -342,7 +344,7 @@ + final File file = new File(dir + File.separatorChar + + name.replace('.', File.separatorChar) + suffix); + +- return file.exists()? new ClassFile() { ++ return SecuritySupport.getFileExists(file)? new ClassFile() { + public InputStream getInputStream() throws IOException { return new FileInputStream(file); } + + public String getPath() { try { +--- jaxp/src/com/sun/org/apache/bcel/internal/util/JavaWrapper.java 2012-08-10 09:36:05.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/bcel/internal/util/JavaWrapper.java 2013-05-05 09:39:19.000000000 -0700 +@@ -72,6 +72,7 @@ + * <pre>java com.sun.org.apache.bcel.internal.util.JavaWrapper -Dbcel.classloader=foo.MyLoader <real.class.name> [arguments]</pre> + * </p> + * ++ * @version $Id: JavaWrapper.java,v 1.3 2007-07-19 04:34:52 ofung Exp $ + * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> + * @see ClassLoader + */ +@@ -79,7 +80,7 @@ + private java.lang.ClassLoader loader; + + private static java.lang.ClassLoader getClassLoader() { +- String s = System.getProperty("bcel.classloader"); ++ String s = SecuritySupport.getSystemProperty("bcel.classloader"); + + if((s == null) || "".equals(s)) + s = "com.sun.org.apache.bcel.internal.util.ClassLoader"; +--- jaxp/src/com/sun/org/apache/bcel/internal/util/SecuritySupport.java 1969-12-31 16:00:00.000000000 -0800 ++++ jaxp/src/com/sun/org/apache/bcel/internal/util/SecuritySupport.java 2013-05-05 09:39:19.000000000 -0700 +@@ -0,0 +1,223 @@ ++/* ++ * reserved comment block ++ * DO NOT REMOVE OR ALTER! ++ */ ++/* ++ * Copyright 2002-2004 The Apache Software Foundation. ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package com.sun.org.apache.bcel.internal.util; ++ ++import java.io.File; ++import java.io.FileInputStream; ++import java.io.FileNotFoundException; ++import java.io.FilenameFilter; ++import java.io.InputStream; ++import java.lang.ClassLoader; ++import java.security.AccessController; ++import java.security.PrivilegedAction; ++import java.security.PrivilegedActionException; ++import java.security.PrivilegedExceptionAction; ++import java.util.ListResourceBundle; ++import java.util.Locale; ++import java.util.MissingResourceException; ++import java.util.ResourceBundle; ++ ++/** ++ * This class is duplicated for each subpackage so keep it in sync. It is ++ * package private and therefore is not exposed as part of any API. ++ * ++ * @xerces.internal ++ */ ++public final class SecuritySupport { ++ ++ private static final SecuritySupport securitySupport = new SecuritySupport(); ++ + /** -+ * Escape invalid URI characters. ++ * Return an instance of this class. ++ */ ++ public static SecuritySupport getInstance() { ++ return securitySupport; ++ } ++ ++ static ClassLoader getContextClassLoader() { ++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ ClassLoader cl = null; ++ try { ++ cl = Thread.currentThread().getContextClassLoader(); ++ } catch (SecurityException ex) { ++ } ++ return cl; ++ } ++ }); ++ } ++ ++ static ClassLoader getSystemClassLoader() { ++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ ClassLoader cl = null; ++ try { ++ cl = ClassLoader.getSystemClassLoader(); ++ } catch (SecurityException ex) { ++ } ++ return cl; ++ } ++ }); ++ } ++ ++ static ClassLoader getParentClassLoader(final ClassLoader cl) { ++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ ClassLoader parent = null; ++ try { ++ parent = cl.getParent(); ++ } catch (SecurityException ex) { ++ } ++ ++ // eliminate loops in case of the boot ++ // ClassLoader returning itself as a parent ++ return (parent == cl) ? null : parent; ++ } ++ }); ++ } ++ ++ public static String getSystemProperty(final String propName) { ++ return (String) AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ return System.getProperty(propName); ++ } ++ }); ++ } ++ ++ static FileInputStream getFileInputStream(final File file) ++ throws FileNotFoundException { ++ try { ++ return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() { ++ public Object run() throws FileNotFoundException { ++ return new FileInputStream(file); ++ } ++ }); ++ } catch (PrivilegedActionException e) { ++ throw (FileNotFoundException) e.getException(); ++ } ++ } ++ ++ /** ++ * Return resource using the same classloader for the ObjectFactory by ++ * default or bootclassloader when Security Manager is in place ++ */ ++ public static InputStream getResourceAsStream(final String name) { ++ if (System.getSecurityManager() != null) { ++ return getResourceAsStream(null, name); ++ } else { ++ return getResourceAsStream(findClassLoader(), name); ++ } ++ } ++ ++ public static InputStream getResourceAsStream(final ClassLoader cl, ++ final String name) { ++ return (InputStream) AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ InputStream ris; ++ if (cl == null) { ++ ris = Object.class.getResourceAsStream("/" + name); ++ } else { ++ ris = cl.getResourceAsStream(name); ++ } ++ return ris; ++ } ++ }); ++ } ++ ++ /** ++ * Gets a resource bundle using the specified base name, the default locale, ++ * and the caller's class loader. + * -+ * Passed a URI that contains invalid characters (like spaces, non-ASCII Unicode characters, and the like), -+ * this function percent encodes the invalid characters per the URI specification (i.e., as a sequence of -+ * %-encoded UTF-8 octets). ++ * @param bundle the base name of the resource bundle, a fully qualified ++ * class name ++ * @return a resource bundle for the given base name and the default locale ++ */ ++ public static ListResourceBundle getResourceBundle(String bundle) { ++ return getResourceBundle(bundle, Locale.getDefault()); ++ } ++ ++ /** ++ * Gets a resource bundle using the specified base name and locale, and the ++ * caller's class loader. + * -+ * N.B. There are two problems. If the URI contains a '%' character, that might be an indication that -+ * the URI has already been escaped by the author, or it might be an invalid '%'. In the former case, -+ * it's important not to escape it, or we'll wind up with invalid, doubly-escaped '%'s. In the latter, -+ * the URI is broken if we don't encode it. Similarly, a '#' character might be the start of a fragment -+ * identifier or it might be an invalid '#'. ++ * @param bundle the base name of the resource bundle, a fully qualified ++ * class name ++ * @param locale the locale for which a resource bundle is desired ++ * @return a resource bundle for the given base name and locale ++ */ ++ public static ListResourceBundle getResourceBundle(final String bundle, final Locale locale) { ++ return AccessController.doPrivileged(new PrivilegedAction<ListResourceBundle>() { ++ public ListResourceBundle run() { ++ try { ++ return (ListResourceBundle) ResourceBundle.getBundle(bundle, locale); ++ } catch (MissingResourceException e) { ++ try { ++ return (ListResourceBundle) ResourceBundle.getBundle(bundle, new Locale("en", "US")); ++ } catch (MissingResourceException e2) { ++ throw new MissingResourceException( ++ "Could not load any resource bundle by " + bundle, bundle, ""); ++ } ++ } ++ } ++ }); ++ } ++ ++ public static String[] getFileList(final File f, final FilenameFilter filter) { ++ return ((String[]) AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ return f.list(filter); ++ } ++ })); ++ } ++ ++ public static boolean getFileExists(final File f) { ++ return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ return f.exists() ? Boolean.TRUE : Boolean.FALSE; ++ } ++ })).booleanValue(); ++ } ++ ++ static long getLastModified(final File f) { ++ return ((Long) AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ return new Long(f.lastModified()); ++ } ++ })).longValue(); ++ } ++ ++ ++ /** ++ * Figure out which ClassLoader to use. ++ */ ++ public static ClassLoader findClassLoader() ++ { ++ if (System.getSecurityManager()!=null) { ++ //this will ensure bootclassloader is used ++ return null; ++ } else { ++ return SecuritySupport.class.getClassLoader(); ++ } ++ } // findClassLoader():ClassLoader ++ ++ private SecuritySupport() { ++ } ++} +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLMessages.java 2012-08-10 09:36:07.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLMessages.java 2013-05-05 09:39:19.000000000 -0700 +@@ -22,68 +22,72 @@ + */ + package com.sun.org.apache.xalan.internal.res; + ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import java.util.ListResourceBundle; + + import com.sun.org.apache.xpath.internal.res.XPATHMessages; + + /** +- * Sets things up for issuing error messages. This class is misnamed, and +- * should be called XalanMessages, or some such. ++ * Sets things up for issuing error messages. This class is misnamed, and should ++ * be called XalanMessages, or some such. ++ * + * @xsl.usage internal + */ +-public class XSLMessages extends XPATHMessages +-{ ++public class XSLMessages extends XPATHMessages { + +- /** The language specific resource object for Xalan messages. */ +- private static ListResourceBundle XSLTBundle = null; +- +- /** The class name of the Xalan error message string table. */ +- private static final String XSLT_ERROR_RESOURCES = +- "com.sun.org.apache.xalan.internal.res.XSLTErrorResources"; +- +- /** +- * Creates a message from the specified key and replacement +- * arguments, localized to the given locale. +- * +- * @param msgKey The key for the message text. +- * @param args The arguments to be used as replacement text +- * in the message created. +- * +- * @return The formatted message string. +- */ +- public static final String createMessage(String msgKey, Object args[]) //throws Exception +- { +- if (XSLTBundle == null) +- XSLTBundle = loadResourceBundle(XSLT_ERROR_RESOURCES); +- +- if (XSLTBundle != null) ++ /** ++ * The language specific resource object for Xalan messages. ++ */ ++ private static ListResourceBundle XSLTBundle = null; ++ /** ++ * The class name of the Xalan error message string table. ++ */ ++ private static final String XSLT_ERROR_RESOURCES = ++ "com.sun.org.apache.xalan.internal.res.XSLTErrorResources"; ++ ++ /** ++ * Creates a message from the specified key and replacement arguments, ++ * localized to the given locale. + * -+ * Given that the former is vastly more likely than the latter in each case (most users are familiar with -+ * the magic status of '%' and '#' and they occur relatively infrequently in filenames, and if the user parses -+ * a proper Java File, we will already have %-escaped the URI), we simply assume that %'s and #'s are legit. ++ * @param msgKey The key for the message text. ++ * @param args The arguments to be used as replacement text in the message ++ * created. + * -+ * Very rarely, we may be wrong. If so, tell the user to fix the clearly broken URI. ++ * @return The formatted message string. + */ -+ protected static String escapeNonUSAscii(String str) { -+ if (str == null) { -+ return str; ++ public static String createMessage(String msgKey, Object args[]) //throws Exception + { +- return createMsg(XSLTBundle, msgKey, args); ++ if (XSLTBundle == null) { ++ XSLTBundle = SecuritySupport.getResourceBundle(XSLT_ERROR_RESOURCES); + } + -+ // get UTF-8 bytes for the string -+ StringBuffer buffer = new StringBuffer(); -+ byte[] bytes = null; -+ byte b; -+ try { -+ bytes = str.getBytes("UTF-8"); -+ } catch (java.io.UnsupportedEncodingException e) { -+ // should never happen -+ return str; -+ } -+ int len = bytes.length; -+ int ch; -+ -+ // for each byte -+ for (int i = 0; i < len; i++) { -+ b = bytes[i]; -+ // for non-ascii character: make it positive, then escape -+ if (b < 0) { -+ ch = b + 256; -+ buffer.append('%'); -+ buffer.append(gHexChs[ch >> 4]); -+ buffer.append(gHexChs[ch & 0xf]); ++ if (XSLTBundle != null) { ++ return createMsg(XSLTBundle, msgKey, args); ++ } else { ++ return "Could not load any resource bundles."; ++ } + } +- else +- return "Could not load any resource bundles."; +- } +- +- /** +- * Creates a message from the specified key and replacement +- * arguments, localized to the given locale. +- * +- * @param msgKey The key for the message text. +- * @param args The arguments to be used as replacement text +- * in the message created. +- * +- * @return The formatted warning string. +- */ +- public static final String createWarning(String msgKey, Object args[]) //throws Exception +- { +- if (XSLTBundle == null) +- XSLTBundle = loadResourceBundle(XSLT_ERROR_RESOURCES); + +- if (XSLTBundle != null) ++ /** ++ * Creates a message from the specified key and replacement arguments, ++ * localized to the given locale. ++ * ++ * @param msgKey The key for the message text. ++ * @param args The arguments to be used as replacement text in the message ++ * created. ++ * ++ * @return The formatted warning string. ++ */ ++ public static String createWarning(String msgKey, Object args[]) //throws Exception + { +- return createMsg(XSLTBundle, msgKey, args); ++ if (XSLTBundle == null) { ++ XSLTBundle = SecuritySupport.getResourceBundle(XSLT_ERROR_RESOURCES); ++ } ++ ++ if (XSLTBundle != null) { ++ return createMsg(XSLTBundle, msgKey, args); ++ } else { ++ return "Could not load any resource bundles."; ++ } + } +- else +- return "Could not load any resource bundles."; +- } + } +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java 2012-08-10 09:36:07.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java 2013-05-05 09:39:19.000000000 -0700 +@@ -1448,68 +1448,4 @@ + public static final String QUERY_HEADER = "PATTERN "; + + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XSLTErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XSLTErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XSLTErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } + } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- +- +-} +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java 2012-08-10 09:36:07.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java 2013-05-05 09:39:19.000000000 -0700 +@@ -1448,68 +1448,4 @@ + public static final String QUERY_HEADER = "PATTERN "; + + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XSLTErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XSLTErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XSLTErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } + } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- +- +-} +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java 2012-08-10 09:36:07.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java 2013-05-05 09:39:19.000000000 -0700 +@@ -1448,68 +1448,4 @@ + public static final String QUERY_HEADER = "PATTERN "; + + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XSLTErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XSLTErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XSLTErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } + } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- +- +-} +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java 2012-08-10 09:36:07.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java 2013-05-05 09:39:19.000000000 -0700 +@@ -1448,68 +1448,4 @@ + public static final String QUERY_HEADER = "PATTERN "; + + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XSLTErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XSLTErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XSLTErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } + } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- +- +-} +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java 2012-08-10 09:36:07.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java 2013-05-05 09:39:19.000000000 -0700 +@@ -1448,68 +1448,4 @@ + public static final String QUERY_HEADER = "PATTERN "; + + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XSLTErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XSLTErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XSLTErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } + } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- +- +-} +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java 2012-08-10 09:36:07.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java 2013-05-05 09:39:19.000000000 -0700 +@@ -1448,68 +1448,4 @@ + public static final String QUERY_HEADER = "PATTERN "; + + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XSLTErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XSLTErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XSLTErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } + } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- +- +-} +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java 2012-08-10 09:36:07.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java 2013-05-05 09:39:19.000000000 -0700 +@@ -1448,68 +1448,4 @@ + public static final String QUERY_HEADER = "PATTERN "; + + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XSLTErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XSLTErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XSLTErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } + } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- +- +-} +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_pt_BR.java 2012-08-10 09:36:07.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_pt_BR.java 2013-05-05 09:39:19.000000000 -0700 +@@ -1449,68 +1449,5 @@ + public static final String QUERY_HEADER = "PATTERN "; + + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XSLTErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XSLTErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XSLTErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + + } +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java 2012-08-10 09:36:08.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java 2013-05-05 09:39:19.000000000 -0700 +@@ -1448,68 +1448,4 @@ + public static final String QUERY_HEADER = "PATTERN "; + + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XSLTErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XSLTErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XSLTErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } + } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- +- +-} +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java 2012-08-10 09:36:08.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java 2013-05-05 09:39:19.000000000 -0700 +@@ -1448,68 +1448,4 @@ + public static final String QUERY_HEADER = "PATTERN "; + + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XSLTErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XSLTErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XSLTErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } + } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- +- +-} +--- jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java 2012-08-10 09:36:08.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java 2013-05-05 09:39:19.000000000 -0700 +@@ -1448,68 +1448,4 @@ + public static final String QUERY_HEADER = "PATTERN "; + + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XSLTErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XSLTErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XSLTErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } + } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- +- +-} +--- jaxp/src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java 2012-08-10 09:36:09.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java 2013-05-05 09:39:19.000000000 -0700 +@@ -54,6 +54,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = +@@ -514,12 +516,17 @@ + //class. Restrict the access to the package classes as specified in java.security policy. + SecurityManager security = System.getSecurityManager(); + try{ +- if (security != null){ ++ if (security != null){ ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { + final int lastDot = className.lastIndexOf("."); + String packageName = className; + if (lastDot != -1) packageName = className.substring(0, lastDot); + security.checkPackageAccess(packageName); +- } ++ } ++ } + }catch(SecurityException e){ + throw e; + } +--- jaxp/src/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java 2012-08-10 09:36:09.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java 2013-05-05 09:39:19.000000000 -0700 +@@ -32,10 +32,14 @@ + import java.security.PrivilegedAction; + import java.security.PrivilegedActionException; + import java.security.PrivilegedExceptionAction; ++import java.util.ListResourceBundle; ++import java.util.Locale; ++import java.util.MissingResourceException; ++import java.util.ResourceBundle; + + /** +- * This class is duplicated for each subpackage so keep it in sync. +- * It is package private and therefore is not exposed as part of any API. ++ * This class is duplicated for each subpackage so keep it in sync. It is ++ * package private and therefore is not exposed as part of any API. + * + * @xerces.internal + */ +@@ -51,39 +55,39 @@ + } + + static ClassLoader getContextClassLoader() { +- return (ClassLoader) +- AccessController.doPrivileged(new PrivilegedAction() { ++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + ClassLoader cl = null; + try { + cl = Thread.currentThread().getContextClassLoader(); +- } catch (SecurityException ex) { } ++ } catch (SecurityException ex) { ++ } + return cl; + } + }); + } + + static ClassLoader getSystemClassLoader() { +- return (ClassLoader) +- AccessController.doPrivileged(new PrivilegedAction() { ++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + ClassLoader cl = null; + try { + cl = ClassLoader.getSystemClassLoader(); +- } catch (SecurityException ex) {} ++ } catch (SecurityException ex) { ++ } + return cl; + } + }); + } + + static ClassLoader getParentClassLoader(final ClassLoader cl) { +- return (ClassLoader) +- AccessController.doPrivileged(new PrivilegedAction() { ++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + ClassLoader parent = null; + try { + parent = cl.getParent(); +- } catch (SecurityException ex) {} ++ } catch (SecurityException ex) { ++ } + + // eliminate loops in case of the boot + // ClassLoader returning itself as a parent +@@ -93,20 +97,25 @@ + } + + public static String getSystemProperty(final String propName) { +- return (String) +- AccessController.doPrivileged(new PrivilegedAction() { ++ return (String) AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + return System.getProperty(propName); + } + }); + } + ++ public static String getSystemProperty(final String propName, final String def) { ++ return (String) AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ return System.getProperty(propName, def); + } -+ else if (b != '%' && b != '#' && gNeedEscaping[b]) { -+ buffer.append('%'); -+ buffer.append(gAfterEscaping1[b]); -+ buffer.append(gAfterEscaping2[b]); ++ }); ++ } ++ + static FileInputStream getFileInputStream(final File file) +- throws FileNotFoundException +- { ++ throws FileNotFoundException { + try { +- return (FileInputStream) +- AccessController.doPrivileged(new PrivilegedExceptionAction() { ++ return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() { + public Object run() throws FileNotFoundException { + return new FileInputStream(file); + } +@@ -115,9 +124,10 @@ + throw (FileNotFoundException)e.getException(); + } + } ++ + /** +- * Return resource using the same classloader for the ObjectFactory by default +- * or bootclassloader when Security Manager is in place ++ * Return resource using the same classloader for the ObjectFactory by ++ * default or bootclassloader when Security Manager is in place + */ + public static InputStream getResourceAsStream(final String name) { + if (System.getSecurityManager()!=null) { +@@ -128,10 +138,8 @@ + } + + public static InputStream getResourceAsStream(final ClassLoader cl, +- final String name) +- { +- return (InputStream) +- AccessController.doPrivileged(new PrivilegedAction() { ++ final String name) { ++ return (InputStream) AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + InputStream ris; + if (cl == null) { +@@ -144,9 +152,40 @@ + }); + } + +- static boolean getFileExists(final File f) { +- return ((Boolean) +- AccessController.doPrivileged(new PrivilegedAction() { ++ /** ++ * Gets a resource bundle using the specified base name, the default locale, and the caller's class loader. ++ * @param bundle the base name of the resource bundle, a fully qualified class name ++ * @return a resource bundle for the given base name and the default locale ++ */ ++ public static ListResourceBundle getResourceBundle(String bundle) { ++ return getResourceBundle(bundle, Locale.getDefault()); ++ } ++ ++ /** ++ * Gets a resource bundle using the specified base name and locale, and the caller's class loader. ++ * @param bundle the base name of the resource bundle, a fully qualified class name ++ * @param locale the locale for which a resource bundle is desired ++ * @return a resource bundle for the given base name and locale ++ */ ++ public static ListResourceBundle getResourceBundle(final String bundle, final Locale locale) { ++ return AccessController.doPrivileged(new PrivilegedAction<ListResourceBundle>() { ++ public ListResourceBundle run() { ++ try { ++ return (ListResourceBundle)ResourceBundle.getBundle(bundle, locale); ++ } catch (MissingResourceException e) { ++ try { ++ return (ListResourceBundle)ResourceBundle.getBundle(bundle, new Locale("en", "US")); ++ } catch (MissingResourceException e2) { ++ throw new MissingResourceException( ++ "Could not load any resource bundle by " + bundle, bundle, ""); ++ } ++ } + } -+ else { -+ buffer.append((char)b); ++ }); ++ } ++ ++ public static boolean getFileExists(final File f) { ++ return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + return f.exists() ? Boolean.TRUE : Boolean.FALSE; + } +@@ -154,13 +193,14 @@ + } + + static long getLastModified(final File f) { +- return ((Long) +- AccessController.doPrivileged(new PrivilegedAction() { ++ return ((Long) AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + return new Long(f.lastModified()); + } + })).longValue(); + } + +- private SecuritySupport () {} ++ ++ private SecuritySupport() { ++ } + } +--- jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java 2012-08-10 09:36:09.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java 2013-05-05 09:39:19.000000000 -0700 +@@ -23,6 +23,7 @@ + package com.sun.org.apache.xalan.internal.xslt; + + import com.sun.org.apache.xalan.internal.utils.ObjectFactory; ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + + import java.io.File; + import java.io.FileWriter; +@@ -574,7 +575,7 @@ + // Grab java version for later use + try + { +- String javaVersion = System.getProperty("java.version"); ++ String javaVersion = SecuritySupport.getSystemProperty("java.version"); + + h.put("java.version", javaVersion); + } +@@ -593,7 +594,7 @@ + { + + // This is present in all JVM's +- String cp = System.getProperty("java.class.path"); ++ String cp = SecuritySupport.getSystemProperty("java.class.path"); + + h.put("java.class.path", cp); + +@@ -603,7 +604,7 @@ + h.put(FOUNDCLASSES + "java.class.path", classpathJars); + + // Also check for JDK 1.2+ type classpaths +- String othercp = System.getProperty("sun.boot.class.path"); ++ String othercp = SecuritySupport.getSystemProperty("sun.boot.class.path"); + + if (null != othercp) + { +@@ -617,7 +618,7 @@ + + //@todo NOTE: We don't actually search java.ext.dirs for + // *.jar files therein! This should be updated +- othercp = System.getProperty("java.ext.dirs"); ++ othercp = SecuritySupport.getSystemProperty("java.ext.dirs"); + + if (null != othercp) + { +@@ -1005,7 +1006,7 @@ + { + Class clazz = ObjectFactory.findProviderClass(DOM_CLASS, true); + +- Method method = clazz.getMethod(DOM_LEVEL3_METHOD, null); ++ Method method = clazz.getMethod(DOM_LEVEL3_METHOD, (Class<?>[])null); + + // If we succeeded, we have loaded interfaces from a + // level 3 DOM somewhere +--- jaxp/src/com/sun/org/apache/xalan/internal/xslt/Process.java 2012-08-10 09:36:09.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xslt/Process.java 2013-05-05 09:39:19.000000000 -0700 +@@ -57,6 +57,7 @@ + import com.sun.org.apache.xalan.internal.res.XSLTErrorResources; + import com.sun.org.apache.xalan.internal.utils.ObjectFactory; + import com.sun.org.apache.xalan.internal.utils.ConfigurationError; ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + + //J2SE does not support Xalan interpretive + /* +@@ -180,7 +181,7 @@ + java.io.PrintWriter diagnosticsWriter = new PrintWriter(System.err, true); + java.io.PrintWriter dumpWriter = diagnosticsWriter; + ResourceBundle resbundle = +- (XSLMessages.loadResourceBundle( ++ (SecuritySupport.getResourceBundle( + com.sun.org.apache.xml.internal.utils.res.XResourceBundle.ERROR_RESOURCES)); + String flavor = "s2s"; + +--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java 2012-08-10 09:36:18.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java 2013-05-05 09:39:19.000000000 -0700 +@@ -410,7 +410,7 @@ + } + } + catch (TypeCheckError e) { +- reportError(ERROR, new ErrorMsg(e)); ++ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e)); + } + } + +@@ -430,7 +430,7 @@ + } + catch (IOException e) { + if (_xsltc.debug()) e.printStackTrace(); +- reportError(ERROR,new ErrorMsg(e)); ++ reportError(ERROR,new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e)); + } + catch (SAXException e) { + Throwable ex = e.getException(); +@@ -438,15 +438,15 @@ + e.printStackTrace(); + if (ex != null) ex.printStackTrace(); + } +- reportError(ERROR, new ErrorMsg(e)); ++ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e)); + } + catch (CompilerException e) { + if (_xsltc.debug()) e.printStackTrace(); +- reportError(ERROR, new ErrorMsg(e)); ++ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e)); + } + catch (Exception e) { + if (_xsltc.debug()) e.printStackTrace(); +- reportError(ERROR, new ErrorMsg(e)); ++ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e)); + } + return null; + } +--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java 2012-08-10 09:36:22.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java 2013-05-05 09:39:19.000000000 -0700 +@@ -41,10 +41,12 @@ + import java.util.jar.Manifest; + + import com.sun.org.apache.bcel.internal.classfile.JavaClass; ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg; + import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util; + import com.sun.org.apache.xml.internal.dtm.DTM; + ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import org.xml.sax.InputSource; + import org.xml.sax.XMLReader; + +@@ -278,7 +280,7 @@ + return compile(input, _className); + } + catch (IOException e) { +- _parser.reportError(Constants.FATAL, new ErrorMsg(e)); ++ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e)); + return false; + } + } +@@ -297,7 +299,7 @@ + return compile(input, name); + } + catch (IOException e) { +- _parser.reportError(Constants.FATAL, new ErrorMsg(e)); ++ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e)); + return false; + } + } +@@ -382,11 +384,11 @@ + } + catch (Exception e) { + /*if (_debug)*/ e.printStackTrace(); +- _parser.reportError(Constants.FATAL, new ErrorMsg(e)); ++ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e)); + } + catch (Error e) { + if (_debug) e.printStackTrace(); +- _parser.reportError(Constants.FATAL, new ErrorMsg(e)); ++ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e)); + } + finally { + _reader = null; // reset this here to be sure it is not re-used +@@ -594,7 +596,7 @@ + */ + public boolean setDestDirectory(String dstDirName) { + final File dir = new File(dstDirName); +- if (dir.exists() || dir.mkdirs()) { ++ if (SecuritySupport.getFileExists(dir) || dir.mkdirs()) { + _destDir = dir; + return true; + } +@@ -767,7 +769,7 @@ + String parentDir = outFile.getParent(); + if (parentDir != null) { + File parentFile = new File(parentDir); +- if (!parentFile.exists()) ++ if (!SecuritySupport.getFileExists(parentFile)) + parentFile.mkdirs(); + } + } +--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages.java 2012-08-10 09:36:23.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages.java 2013-05-05 09:39:19.000000000 -0700 +@@ -997,7 +997,12 @@ + "kilobytes. This is usually caused by templates in a stylesheet " + + "that are very large. Try restructuring your stylesheet to use " + + "smaller templates." +- } ++ }, ++ ++ {ErrorMsg.DESERIALIZE_TRANSLET_ERR, "When Java security is enabled, " + ++ "support for deserializing TemplatesImpl is disabled." + ++ "This can be overridden by setting the jdk.xml.enableTemplatesImplDeserialization" + ++ " system property to true."} + + }; + +--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMsg.java 2012-08-10 09:36:25.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMsg.java 2013-05-05 09:39:19.000000000 -0700 +@@ -23,6 +23,7 @@ + + package com.sun.org.apache.xalan.internal.xsltc.compiler.util; + ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import java.text.MessageFormat; + import java.util.Locale; + import java.util.ResourceBundle; +@@ -46,6 +47,8 @@ + Object[] _params = null; + private boolean _isWarningError; + ++ Throwable _cause; ++ + // Compiler error messages + public static final String MULTIPLE_STYLESHEET_ERR = "MULTIPLE_STYLESHEET_ERR"; + public static final String TEMPLATE_REDEF_ERR = "TEMPLATE_REDEF_ERR"; +@@ -165,6 +168,8 @@ + public static final String OUTLINE_ERR_METHOD_TOO_BIG = + "OUTLINE_ERR_METHOD_TOO_BIG"; + ++ public static final String DESERIALIZE_TRANSLET_ERR = "DESERIALIZE_TEMPLATES_ERR"; ++ + // All error messages are localized and are stored in resource bundles. + // This array and the following 4 strings are read from that bundle. + private static ResourceBundle _bundle; +@@ -175,7 +180,7 @@ + public final static String RUNTIME_ERROR_KEY = "RUNTIME_ERROR_KEY"; + + static { +- _bundle = ResourceBundle.getBundle( ++ _bundle = SecuritySupport.getResourceBundle( + "com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMessages", + Locale.getDefault()); + } +@@ -185,10 +190,11 @@ + _line = 0; + } + +- public ErrorMsg(Throwable e) { +- _code = null; ++ public ErrorMsg(String code, Throwable e) { ++ _code = code; + _message = e.getMessage(); + _line = 0; ++ _cause = e; + } + + public ErrorMsg(String message, int line) { +@@ -240,6 +246,10 @@ + _params[1] = param2; + } + ++ public Throwable getCause() { ++ return _cause; ++ } ++ + private String getFileName(SyntaxTreeNode node) { + Stylesheet stylesheet = node.getStylesheet(); + if (stylesheet != null) +--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Util.java 2012-08-10 09:36:26.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Util.java 2013-05-05 09:39:19.000000000 -0700 +@@ -26,6 +26,7 @@ + import java.util.StringTokenizer; + + import com.sun.org.apache.bcel.internal.generic.Type; ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import com.sun.org.apache.xalan.internal.xsltc.compiler.Constants; + import com.sun.org.apache.xml.internal.utils.XML11Char; + +@@ -37,7 +38,7 @@ + private static char filesep; + + static { +- String temp = System.getProperty("file.separator", "/"); ++ String temp = SecuritySupport.getSystemProperty("file.separator", "/"); + filesep = temp.charAt(0); + } + +--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecord.java 2012-08-10 09:36:28.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecord.java 2013-05-05 09:39:19.000000000 -0700 +@@ -33,6 +33,7 @@ + import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; + import com.sun.org.apache.xml.internal.utils.StringComparable; + import com.sun.org.apache.xalan.internal.utils.ObjectFactory; ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + + /** + * Base class for sort records containing application specific sort keys +@@ -112,7 +113,7 @@ + try { + // -- W. Eliot Kimber (eliot@isogen.com) + colFactClassname = +- System.getProperty("com.sun.org.apache.xalan.internal.xsltc.COLLATOR_FACTORY"); ++ SecuritySupport.getSystemProperty("com.sun.org.apache.xalan.internal.xsltc.COLLATOR_FACTORY"); + } + catch (SecurityException e) { + // If we can't read the propery, just use default collator +--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java 2012-08-10 09:36:29.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java 2013-05-05 09:39:19.000000000 -0700 +@@ -23,6 +23,7 @@ + + package com.sun.org.apache.xalan.internal.xsltc.runtime; + ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import java.text.DecimalFormat; + import java.text.DecimalFormatSymbols; + import java.text.FieldPosition; +@@ -1583,7 +1584,7 @@ + + static { + String resource = "com.sun.org.apache.xalan.internal.xsltc.runtime.ErrorMessages"; +- m_bundle = ResourceBundle.getBundle(resource); ++ m_bundle = SecuritySupport.getResourceBundle(resource); + } + + /** +--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/output/WriterOutputBuffer.java 2012-08-10 09:36:31.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/output/WriterOutputBuffer.java 2013-05-05 09:39:19.000000000 -0700 +@@ -23,6 +23,7 @@ + + package com.sun.org.apache.xalan.internal.xsltc.runtime.output; + ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import java.io.BufferedWriter; + import java.io.IOException; + import java.io.Writer; +@@ -36,7 +37,7 @@ + + static { + // Set a larger buffer size for Solaris +- final String osName = System.getProperty("os.name"); ++ final String osName = SecuritySupport.getSystemProperty("os.name"); + if (osName.equalsIgnoreCase("solaris")) { + BUFFER_SIZE = 32 * KB; + } +--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java 2012-08-10 09:36:32.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java 2013-05-05 09:39:19.000000000 -0700 +@@ -43,6 +43,7 @@ + import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; + import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable; + import com.sun.org.apache.xalan.internal.utils.ObjectFactory; ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + + /** + * @author Morten Jorgensen +@@ -52,6 +53,8 @@ + */ + public final class TemplatesImpl implements Templates, Serializable { + static final long serialVersionUID = 673094361519270707L; ++ public final static String DESERIALIZE_TRANSLET = "jdk.xml.enableTemplatesImplDeserialization"; ++ + /** + * Name of the superclass of all translets. This is needed to + * determine which, among all classes comprising a translet, +@@ -186,6 +189,15 @@ + private void readObject(ObjectInputStream is) + throws IOException, ClassNotFoundException + { ++ SecurityManager security = System.getSecurityManager(); ++ if (security != null){ ++ String temp = SecuritySupport.getSystemProperty(DESERIALIZE_TRANSLET); ++ if (temp == null || !(temp.length()==0 || temp.equalsIgnoreCase("true"))) { ++ ErrorMsg err = new ErrorMsg(ErrorMsg.DESERIALIZE_TRANSLET_ERR); ++ throw new UnsupportedOperationException(err.toString()); + } + } -+ return buffer.toString(); -+ } ++ + is.defaultReadObject(); + if (is.readBoolean()) { + _uriResolver = (URIResolver) is.readObject(); +--- jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java 2012-08-10 09:36:32.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java 2013-05-05 09:39:19.000000000 -0700 +@@ -73,7 +73,7 @@ + import com.sun.org.apache.xalan.internal.xsltc.dom.XSLTCDTMManager; + import com.sun.org.apache.xalan.internal.utils.ObjectFactory; + import com.sun.org.apache.xalan.internal.utils.FactoryImpl; +- ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + + import org.xml.sax.InputSource; + import org.xml.sax.XMLFilter; +@@ -881,8 +881,14 @@ + // Check that the transformation went well before returning + if (bytecodes == null) { + +- ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR); +- TransformerConfigurationException exc = new TransformerConfigurationException(err.toString()); ++ Vector errs = xsltc.getErrors(); ++ ErrorMsg err = null; ++ if (errs != null) { ++ err = (ErrorMsg)errs.get(errs.size()-1); ++ } else { ++ err = new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR); ++ } ++ TransformerConfigurationException exc = new TransformerConfigurationException(err.toString(), err.getCause()); + + // Pass compiler errors to the error listener + if (_errorListener != null) { +@@ -1229,7 +1235,7 @@ + // Find the parent directory of the translet. + String transletParentDir = transletFile.getParent(); + if (transletParentDir == null) +- transletParentDir = System.getProperty("user.dir"); ++ transletParentDir = SecuritySupport.getSystemProperty("user.dir"); + + File transletParentFile = new File(transletParentDir); + +--- jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMMessageFormatter.java 2012-08-10 09:36:33.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMMessageFormatter.java 2013-05-05 09:39:20.000000000 -0700 +@@ -20,10 +20,10 @@ + + + package com.sun.org.apache.xerces.internal.dom; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.util.Locale; + import java.util.MissingResourceException; + import java.util.ResourceBundle; +-import java.util.PropertyResourceBundle; + + /** + * Used to format DOM error messages, using the system locale. +@@ -31,6 +31,7 @@ + * @xerces.internal + * + * @author Sandy Gao, IBM ++ * @version $Id: DOMMessageFormatter.java,v 1.6 2010-11-01 04:39:38 joehw Exp $ + */ + public class DOMMessageFormatter { + public static final String DOM_DOMAIN = "http://www.w3.org/dom/DOMTR"; +@@ -122,13 +123,13 @@ + */ + public static void init(){ + if (locale != null) { +- domResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages", locale); +- serResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages", locale); +- xmlResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ domResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages", locale); ++ serResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages", locale); ++ xmlResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + }else{ +- domResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages"); +- serResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages"); +- xmlResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ domResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages"); ++ serResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages"); ++ xmlResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + } + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java 2012-08-10 09:36:39.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java 2013-05-05 09:39:20.000000000 -0700 +@@ -51,6 +51,7 @@ + import com.sun.org.apache.xerces.internal.xni.XNIException; + import com.sun.org.apache.xerces.internal.xni.parser.*; + import com.sun.org.apache.xerces.internal.impl.Constants; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import com.sun.xml.internal.stream.Entity; + import com.sun.org.apache.xerces.internal.xni.Augmentations; + +@@ -1727,7 +1728,7 @@ + // get the user.dir property + String userDir = ""; + try { +- userDir = System.getProperty("user.dir"); ++ userDir = SecuritySupport.getSystemProperty("user.dir"); + } + catch (SecurityException se) { + } +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/DatatypeException.java 2012-08-10 09:36:42.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/DatatypeException.java 2013-05-05 09:39:20.000000000 -0700 +@@ -20,6 +20,7 @@ + + package com.sun.org.apache.xerces.internal.impl.dv; + ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.util.ResourceBundle; + import java.util.PropertyResourceBundle; + import java.util.MissingResourceException; +@@ -34,6 +35,7 @@ + * + * @author Sandy Gao, IBM + * ++ * @version $Id: DatatypeException.java,v 1.6 2010-11-01 04:39:43 joehw Exp $ + */ + public class DatatypeException extends Exception { + +@@ -84,7 +86,7 @@ + */ + public String getMessage() { + ResourceBundle resourceBundle = null; +- resourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages"); ++ resourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages"); + if (resourceBundle == null) + throw new MissingResourceException("Property file not found!", "com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages", key); + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java 2012-08-10 09:36:52.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java 2013-05-05 09:39:19.000000000 -0700 +@@ -20,12 +20,11 @@ + package com.sun.org.apache.xerces.internal.impl.msg; + ++import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.util.Locale; + import java.util.MissingResourceException; + import java.util.ResourceBundle; +-import java.util.PropertyResourceBundle; +- +-import com.sun.org.apache.xerces.internal.util.MessageFormatter; + + /** + * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for +@@ -34,7 +33,7 @@ + * @xerces.internal + * + * @author Eric Ye, IBM +- * @version $Id: XMLMessageFormatter.java 3020 2011-02-28 23:51:33Z joehw $ ++ * @version $Id: XMLMessageFormatter.java 3094 2012-03-21 05:50:01Z joehw $ + * + */ + public class XMLMessageFormatter implements MessageFormatter { +@@ -72,12 +71,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_de.java 2012-08-10 09:36:52.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_de.java 2013-05-05 09:39:19.000000000 -0700 +@@ -26,6 +26,7 @@ + import java.util.PropertyResourceBundle; + + import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for +@@ -34,7 +35,7 @@ + * @xerces.internal + * + * @author Eric Ye, IBM +- * @version $Id: XMLMessageFormatter_de.java 3021 2011-03-01 00:12:28Z joehw $ ++ * @version $Id: XMLMessageFormatter_de.java 3094 2012-03-21 05:50:01Z joehw $ + * + */ + public class XMLMessageFormatter_de implements MessageFormatter { +@@ -72,12 +73,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_es.java 2012-08-10 09:36:52.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_es.java 2013-05-05 09:39:19.000000000 -0700 +@@ -26,6 +26,7 @@ + import java.util.PropertyResourceBundle; + + import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for +@@ -34,7 +35,7 @@ + * @xerces.internal + * + * @author Eric Ye, IBM +- * @version $Id: XMLMessageFormatter_es.java 3021 2011-03-01 00:12:28Z joehw $ ++ * @version $Id: XMLMessageFormatter_es.java 3094 2012-03-21 05:50:01Z joehw $ + * + */ + public class XMLMessageFormatter_es implements MessageFormatter { +@@ -72,12 +73,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_fr.java 2012-08-10 09:36:52.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_fr.java 2013-05-05 09:39:19.000000000 -0700 +@@ -26,6 +26,7 @@ + import java.util.PropertyResourceBundle; + + import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for +@@ -34,7 +35,7 @@ + * @xerces.internal + * + * @author Eric Ye, IBM +- * @version $Id: XMLMessageFormatter_fr.java 3021 2011-03-01 00:12:28Z joehw $ ++ * @version $Id: XMLMessageFormatter_fr.java 3094 2012-03-21 05:50:01Z joehw $ + * + */ + public class XMLMessageFormatter_fr implements MessageFormatter { +@@ -72,12 +73,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_it.java 2012-08-10 09:36:52.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_it.java 2013-05-05 09:39:19.000000000 -0700 +@@ -26,6 +26,7 @@ + import java.util.PropertyResourceBundle; + + import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for +@@ -34,7 +35,7 @@ + * @xerces.internal + * + * @author Eric Ye, IBM +- * @version $Id: XMLMessageFormatter_it.java 3021 2011-03-01 00:12:28Z joehw $ ++ * @version $Id: XMLMessageFormatter_it.java 3094 2012-03-21 05:50:01Z joehw $ + * + */ + public class XMLMessageFormatter_it implements MessageFormatter { +@@ -72,12 +73,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ja.java 2012-08-10 09:36:52.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ja.java 2013-05-05 09:39:19.000000000 -0700 +@@ -26,6 +26,7 @@ + import java.util.PropertyResourceBundle; + + import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for +@@ -34,7 +35,7 @@ + * @xerces.internal + * + * @author Eric Ye, IBM +- * @version $Id: XMLMessageFormatter_ja.java 3021 2011-03-01 00:12:28Z joehw $ ++ * @version $Id: XMLMessageFormatter_ja.java 3094 2012-03-21 05:50:01Z joehw $ + * + */ + public class XMLMessageFormatter_ja implements MessageFormatter { +@@ -72,12 +73,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ko.java 2012-08-10 09:36:53.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ko.java 2013-05-05 09:39:19.000000000 -0700 +@@ -26,6 +26,7 @@ + import java.util.PropertyResourceBundle; + + import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for +@@ -34,7 +35,7 @@ + * @xerces.internal + * + * @author Eric Ye, IBM +- * @version $Id: XMLMessageFormatter_ko.java 3021 2011-03-01 00:12:28Z joehw $ ++ * @version $Id: XMLMessageFormatter_ko.java 3094 2012-03-21 05:50:01Z joehw $ + * + */ + public class XMLMessageFormatter_ko implements MessageFormatter { +@@ -72,12 +73,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_pt_BR.java 2012-08-10 09:36:53.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_pt_BR.java 2013-05-05 09:39:19.000000000 -0700 +@@ -26,6 +26,7 @@ + import java.util.PropertyResourceBundle; + + import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for +@@ -34,7 +35,7 @@ + * @xerces.internal + * + * @author Eric Ye, IBM +- * @version $Id: XMLMessageFormatter_pt_BR.java 3021 2011-03-01 00:12:28Z joehw $ ++ * @version $Id: XMLMessageFormatter_pt_BR.java 3094 2012-03-21 05:50:01Z joehw $ + * + */ + public class XMLMessageFormatter_pt_BR implements MessageFormatter { +@@ -72,12 +73,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_sv.java 2012-08-10 09:36:53.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_sv.java 2013-05-05 09:39:19.000000000 -0700 +@@ -26,6 +26,7 @@ + import java.util.PropertyResourceBundle; + + import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for +@@ -34,7 +35,7 @@ + * @xerces.internal + * + * @author Eric Ye, IBM +- * @version $Id: XMLMessageFormatter_sv.java 3021 2011-03-01 00:12:28Z joehw $ ++ * @version $Id: XMLMessageFormatter_sv.java 3094 2012-03-21 05:50:01Z joehw $ + * + */ + public class XMLMessageFormatter_sv implements MessageFormatter { +@@ -72,12 +73,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_CN.java 2012-08-10 09:36:53.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_CN.java 2013-05-05 09:39:19.000000000 -0700 +@@ -26,6 +26,7 @@ + import java.util.PropertyResourceBundle; + + import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for +@@ -34,7 +35,7 @@ + * @xerces.internal + * + * @author Eric Ye, IBM +- * @version $Id: XMLMessageFormatter_zh_CN.java 3021 2011-03-01 00:12:28Z joehw $ ++ * @version $Id: XMLMessageFormatter_zh_CN.java 3094 2012-03-21 05:50:01Z joehw $ + * + */ + public class XMLMessageFormatter_zh_CN implements MessageFormatter { +@@ -72,12 +73,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_TW.java 2012-08-10 09:36:53.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_TW.java 2013-05-05 09:39:19.000000000 -0700 +@@ -26,6 +26,7 @@ + import java.util.PropertyResourceBundle; + + import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for +@@ -34,7 +35,7 @@ + * @xerces.internal + * + * @author Eric Ye, IBM +- * @version $Id: XMLMessageFormatter_zh_TW.java 3021 2011-03-01 00:12:28Z joehw $ ++ * @version $Id: XMLMessageFormatter_zh_TW.java 3094 2012-03-21 05:50:01Z joehw $ + * + */ + public class XMLMessageFormatter_zh_TW implements MessageFormatter { +@@ -72,12 +73,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegexParser.java 2012-08-10 09:36:59.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegexParser.java 2013-05-05 09:39:20.000000000 -0700 +@@ -20,6 +20,7 @@ + + package com.sun.org.apache.xerces.internal.impl.xpath.regex; + ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.util.Locale; + import java.util.MissingResourceException; + import java.util.ResourceBundle; +@@ -95,10 +96,10 @@ + public void setLocale(Locale locale) { + try { + if (locale != null) { +- this.resources = ResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message", locale); ++ this.resources = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message", locale); + } + else { +- this.resources = ResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message"); ++ this.resources = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message"); + } + } + catch (MissingResourceException mre) { +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XSMessageFormatter.java 2012-08-10 09:37:02.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XSMessageFormatter.java 2013-05-05 09:39:20.000000000 -0700 +@@ -20,11 +20,11 @@ + + package com.sun.org.apache.xerces.internal.impl.xs; + ++import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.util.Locale; + import java.util.MissingResourceException; + import java.util.ResourceBundle; +-import java.util.PropertyResourceBundle; +-import com.sun.org.apache.xerces.internal.util.MessageFormatter; + + + /** +@@ -34,6 +34,7 @@ + * @xerces.internal + * + * @author Elena Litani, IBM ++ * @version $Id: XSMessageFormatter.java,v 1.6 2010-11-01 04:39:55 joehw Exp $ + */ + public class XSMessageFormatter implements MessageFormatter { + /** +@@ -66,12 +67,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages"); + } + + String msg = fResourceBundle.getString(key); +--- jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/JAXPValidationMessageFormatter.java 2012-08-10 09:37:14.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/JAXPValidationMessageFormatter.java 2013-05-05 09:39:20.000000000 -0700 +@@ -20,15 +20,16 @@ + + package com.sun.org.apache.xerces.internal.jaxp.validation; + ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.util.Locale; + import java.util.MissingResourceException; + import java.util.ResourceBundle; +-import java.util.PropertyResourceBundle; + + /** + * <p>Used to format JAXP Validation API error messages using a specified locale.</p> + * + * @author Michael Glavassevich, IBM ++ * @version $Id: JAXPValidationMessageFormatter.java,v 1.5 2010-11-01 04:40:08 joehw Exp $ + */ + final class JAXPValidationMessageFormatter { + +@@ -54,11 +55,11 @@ + ResourceBundle resourceBundle = null; + if (locale != null) { + resourceBundle = +- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages", locale); ++ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages", locale); + } + else { + resourceBundle = +- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages"); ++ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/util/DatatypeMessageFormatter.java 2012-08-10 09:37:18.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/util/DatatypeMessageFormatter.java 2013-05-05 09:39:20.000000000 -0700 +@@ -20,15 +20,16 @@ + + package com.sun.org.apache.xerces.internal.util; + ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.util.Locale; + import java.util.MissingResourceException; +-import java.util.PropertyResourceBundle; + import java.util.ResourceBundle; + + /** + * <p>Used to format JAXP 1.3 Datatype API error messages using a specified locale.</p> + * + * @author Neeraj Bajaj, Sun Microsystems ++ * @version $Id: DatatypeMessageFormatter.java,v 1.6 2010-11-01 04:40:14 joehw Exp $ + */ + public class DatatypeMessageFormatter { + +@@ -56,11 +57,11 @@ + ResourceBundle resourceBundle = null; + if (locale != null) { + resourceBundle = +- PropertyResourceBundle.getBundle(BASE_NAME, locale); ++ SecuritySupport.getResourceBundle(BASE_NAME, locale); + } + else { + resourceBundle = +- PropertyResourceBundle.getBundle(BASE_NAME); ++ SecuritySupport.getResourceBundle(BASE_NAME); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/util/SAXMessageFormatter.java 2012-08-10 09:37:19.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/util/SAXMessageFormatter.java 2013-05-05 09:39:20.000000000 -0700 +@@ -19,16 +19,17 @@ + */ + package com.sun.org.apache.xerces.internal.util; + ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.util.Locale; + import java.util.MissingResourceException; + import java.util.ResourceBundle; +-import java.util.PropertyResourceBundle; + + /** + * Used to format SAX error messages using a specified locale. + * + * @author Michael Glavassevich, IBM + * ++ * @version $Id: SAXMessageFormatter.java,v 1.6 2010-11-01 04:40:14 joehw Exp $ + */ + public class SAXMessageFormatter { + +@@ -54,11 +55,11 @@ + ResourceBundle resourceBundle = null; + if (locale != null) { + resourceBundle = +- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages", locale); ++ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages", locale); + } + else { + resourceBundle = +- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages"); ++ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages"); + } + + // format message +--- jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java 2012-08-10 09:37:20.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java 2013-05-05 09:39:20.000000000 -0700 +@@ -61,6 +61,8 @@ + + package com.sun.org.apache.xerces.internal.util; + import com.sun.org.apache.xerces.internal.impl.Constants; ++import java.security.AccessController; ++import java.security.PrivilegedAction; + /** + * This class is a container for parser settings that relate to + * security, or more specifically, it is intended to be used to prevent denial-of-service +@@ -77,6 +79,7 @@ + * + * @author Neil Graham, IBM + * ++ * @version $Id: SecurityManager.java,v 1.5 2010-11-01 04:40:14 joehw Exp $ + */ + public final class SecurityManager { + +@@ -176,41 +179,48 @@ + + private void readSystemProperties(){ + +- //TODO: also read SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT +- try { +- String value = System.getProperty(Constants.ENTITY_EXPANSION_LIMIT); +- if(value != null && !value.equals("")){ +- entityExpansionLimit = Integer.parseInt(value); +- if (entityExpansionLimit < 0) +- entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT; +- } +- else +- entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT; +- }catch(Exception ex){} +- +- try { +- String value = System.getProperty(Constants.MAX_OCCUR_LIMIT); +- if(value != null && !value.equals("")){ +- maxOccurLimit = Integer.parseInt(value); +- if (maxOccurLimit < 0) +- maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT; +- } +- else +- maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT; +- }catch(Exception ex){} +- +- try { +- String value = System.getProperty(Constants.SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT); +- if(value != null && !value.equals("")){ +- fElementAttributeLimit = Integer.parseInt(value); +- if ( fElementAttributeLimit < 0) +- fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT; +- } +- else +- fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT; ++ //TODO: also read SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT ++ try { ++ String value = getSystemProperty(Constants.ENTITY_EXPANSION_LIMIT); ++ if(value != null && !value.equals("")){ ++ entityExpansionLimit = Integer.parseInt(value); ++ if (entityExpansionLimit < 0) ++ entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT; ++ } ++ else ++ entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT; ++ }catch(Exception ex){} ++ ++ try { ++ String value = getSystemProperty(Constants.MAX_OCCUR_LIMIT); ++ if(value != null && !value.equals("")){ ++ maxOccurLimit = Integer.parseInt(value); ++ if (maxOccurLimit < 0) ++ maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT; ++ } ++ else ++ maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT; ++ }catch(Exception ex){} ++ ++ try { ++ String value = getSystemProperty(Constants.SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT); ++ if(value != null && !value.equals("")){ ++ fElementAttributeLimit = Integer.parseInt(value); ++ if ( fElementAttributeLimit < 0) ++ fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT; ++ } ++ else ++ fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT; + + }catch(Exception ex){} + + } + ++ private String getSystemProperty(final String propName) { ++ return AccessController.doPrivileged(new PrivilegedAction<String>() { ++ public String run() { ++ return System.getProperty(propName); ++ } ++ }); ++ } + } // class SecurityManager +--- jaxp/src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java 2012-08-10 09:37:21.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java 2013-05-05 09:39:19.000000000 -0700 +@@ -48,6 +48,7 @@ // - // Package visible methods ---- jaxp/src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java 2012-08-10 09:38:25.000000000 -0700 -+++ jaxp/src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java 2013-03-09 08:44:42.000000000 -0800 -@@ -165,7 +165,7 @@ - * should already be fully qualified as path/filename - * @param target The target property bag the file will be placed into. + // Constants + // ++ private static final String DEFAULT_INTERNAL_CLASSES = "com.sun.org.apache."; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = "xerces.properties"; +@@ -305,10 +306,14 @@ + //restrict the access to package as speicified in java.security policy + SecurityManager security = System.getSecurityManager(); + if (security != null) { +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(DEFAULT_INTERNAL_CLASSES)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + Class providerClass; + if (cl == null) { +--- jaxp/src/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java 2012-08-10 09:37:21.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java 2013-05-05 09:39:19.000000000 -0700 +@@ -29,6 +29,10 @@ + import java.security.PrivilegedAction; + import java.security.PrivilegedActionException; + import java.security.PrivilegedExceptionAction; ++import java.util.Locale; ++import java.util.MissingResourceException; ++import java.util.PropertyResourceBundle; ++import java.util.ResourceBundle; + + /** + * This class is duplicated for each subpackage so keep it in sync. +@@ -141,6 +145,38 @@ + }); + } + ++ /** ++ * Gets a resource bundle using the specified base name, the default locale, and the caller's class loader. ++ * @param bundle the base name of the resource bundle, a fully qualified class name ++ * @return a resource bundle for the given base name and the default locale ++ */ ++ public static ResourceBundle getResourceBundle(String bundle) { ++ return getResourceBundle(bundle, Locale.getDefault()); ++ } ++ ++ /** ++ * Gets a resource bundle using the specified base name and locale, and the caller's class loader. ++ * @param bundle the base name of the resource bundle, a fully qualified class name ++ * @param locale the locale for which a resource bundle is desired ++ * @return a resource bundle for the given base name and locale ++ */ ++ public static ResourceBundle getResourceBundle(final String bundle, final Locale locale) { ++ return AccessController.doPrivileged(new PrivilegedAction<ResourceBundle>() { ++ public ResourceBundle run() { ++ try { ++ return PropertyResourceBundle.getBundle(bundle, locale); ++ } catch (MissingResourceException e) { ++ try { ++ return PropertyResourceBundle.getBundle(bundle, new Locale("en", "US")); ++ } catch (MissingResourceException e2) { ++ throw new MissingResourceException( ++ "Could not load any resource bundle by " + bundle, bundle, ""); ++ } ++ } ++ } ++ }); ++ } ++ + static boolean getFileExists(final File f) { + return ((Boolean) + AccessController.doPrivileged(new PrivilegedAction() { +--- jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter.java 2012-08-10 09:37:22.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter.java 2013-05-05 09:39:20.000000000 -0700 +@@ -20,11 +20,11 @@ + + package com.sun.org.apache.xerces.internal.xinclude; + ++import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.util.Locale; + import java.util.MissingResourceException; + import java.util.ResourceBundle; +-import java.util.PropertyResourceBundle; +-import com.sun.org.apache.xerces.internal.util.MessageFormatter; + + // TODO: fix error messages in XIncludeMessages.properties + /** +@@ -32,6 +32,7 @@ + * + * @author Peter McCracken, IBM + * ++ * @version $Id: XIncludeMessageFormatter.java,v 1.7 2010-11-01 04:40:18 joehw Exp $ + */ + public class XIncludeMessageFormatter implements MessageFormatter { + +@@ -61,12 +62,12 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages", locale); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages"); + } + + String msg = fResourceBundle.getString(key); +--- jaxp/src/com/sun/org/apache/xerces/internal/xpointer/XPointerMessageFormatter.java 2012-08-10 09:37:27.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/xpointer/XPointerMessageFormatter.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,6 +24,7 @@ + import java.util.ResourceBundle; + import java.util.PropertyResourceBundle; + import com.sun.org.apache.xerces.internal.util.MessageFormatter; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * XPointerMessageFormatter provides error messages for the XPointer Framework +@@ -31,6 +32,7 @@ + * + * @xerces.internal + * ++ * @version $Id: XPointerMessageFormatter.java,v 1.5 2010-11-01 04:40:26 joehw Exp $ + */ + class XPointerMessageFormatter implements MessageFormatter { + +@@ -64,14 +66,14 @@ + + if (fResourceBundle == null || locale != fLocale) { + if (locale != null) { +- fResourceBundle = PropertyResourceBundle.getBundle( ++ fResourceBundle = SecuritySupport.getResourceBundle( + "com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages", locale); + // memorize the most-recent locale + fLocale = locale; + } + if (fResourceBundle == null) +- fResourceBundle = PropertyResourceBundle +- .getBundle("com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages"); ++ fResourceBundle = SecuritySupport.getResourceBundle( ++ "com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages"); + } + + String msg = fResourceBundle.getString(key); +--- jaxp/src/com/sun/org/apache/xml/internal/dtm/DTMManager.java 2012-08-10 09:37:37.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/dtm/DTMManager.java 2013-05-05 09:39:20.000000000 -0700 +@@ -27,6 +27,7 @@ + import com.sun.org.apache.xml.internal.utils.PrefixResolver; + import com.sun.org.apache.xml.internal.utils.XMLStringFactory; + import com.sun.org.apache.xalan.internal.utils.ObjectFactory; ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + + /** + * A DTMManager instance can be used to create DTM and +@@ -383,7 +384,7 @@ + { + try + { +- debug = System.getProperty("dtm.debug") != null; ++ debug = SecuritySupport.getSystemProperty("dtm.debug") != null; + } + catch (SecurityException ex){} + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources.java 2012-08-10 09:37:40.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -453,67 +450,4 @@ + return contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ca.java 2012-08-10 09:37:40.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ca.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -443,67 +440,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("ca", "ES")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_cs.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_cs.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -443,67 +440,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("cs", "CZ")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_de.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_de.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -453,67 +450,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -453,67 +450,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_fr.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_fr.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -453,67 +450,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_it.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_it.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -453,67 +450,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -453,67 +450,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -453,67 +450,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_pt_BR.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_pt_BR.java 2013-05-05 09:39:20.000000000 -0700 +@@ -25,9 +25,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -463,67 +460,4 @@ + return msgCopy; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sk.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sk.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -443,67 +440,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sv.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sv.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -452,68 +449,4 @@ + protected Object[][] getContents() { + return _contents; + } +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_tr.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_tr.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -443,67 +440,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("tr", "TR")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_CN.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_CN.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -453,67 +450,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -453,67 +450,4 @@ + return _contents; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XMLErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XMLErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XMLErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xml/internal/res/XMLMessages.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/res/XMLMessages.java 2013-05-05 09:39:20.000000000 -0700 +@@ -22,10 +22,9 @@ + */ + package com.sun.org.apache.xml.internal.res; + ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import java.util.ListResourceBundle; + import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * A utility class for issuing XML error messages. +@@ -82,8 +81,9 @@ */ -- public void loadPropertyFile(String file, Properties target) -+ private void loadPropertyFile(String file, Properties target) + public static final String createXMLMessage(String msgKey, Object args[]) { +- if (XMLBundle == null) +- XMLBundle = loadResourceBundle(XML_ERROR_RESOURCES); ++ if (XMLBundle == null) { ++ XMLBundle = SecuritySupport.getResourceBundle(XML_ERROR_RESOURCES); ++ } + + if (XMLBundle != null) + { +@@ -156,61 +156,4 @@ + return fmsg; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className The class name of the resource bundle. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static ListResourceBundle loadResourceBundle(String className) +- throws MissingResourceException +- { +- Locale locale = Locale.getDefault(); +- +- try +- { +- return (ListResourceBundle)ResourceBundle.getBundle(className, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (ListResourceBundle)ResourceBundle.getBundle( +- className, new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles." + className, className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which can be appended to a resource name +- */ +- protected static String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } + } +--- jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java 2012-08-10 09:37:41.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,6 +24,7 @@ + package com.sun.org.apache.xml.internal.resolver; + + import com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.io.IOException; + import java.io.FileNotFoundException; + import java.io.InputStream; +@@ -821,7 +822,7 @@ + // tack on a basename because URLs point to files not dirs + catalogCwd = FileURL.makeURL("basename"); + } catch (MalformedURLException e) { +- String userdir = System.getProperty("user.dir"); ++ String userdir = SecuritySupport.getSystemProperty("user.dir"); + userdir.replace('\\', '/'); + catalogManager.debug.message(1, "Malformed URL on cwd", userdir); + catalogCwd = null; +@@ -1717,7 +1718,7 @@ + protected String resolveLocalSystem(String systemId) + throws MalformedURLException, IOException { + +- String osname = System.getProperty("os.name"); ++ String osname = SecuritySupport.getSystemProperty("os.name"); + boolean windows = (osname.indexOf("Windows") >= 0); + Enumeration en = catalogEntries.elements(); + while (en.hasMoreElements()) { +--- jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java 2012-08-10 09:37:42.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java 2013-05-05 09:39:20.000000000 -0700 +@@ -23,6 +23,7 @@ + + package com.sun.org.apache.xml.internal.resolver; + ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.io.InputStream; + + import java.net.URL; +@@ -142,8 +143,8 @@ + + /** Flag to ignore missing property files and/or properties */ + private boolean ignoreMissingProperties +- = (System.getProperty(pIgnoreMissing) != null +- || System.getProperty(pFiles) != null); ++ = (SecuritySupport.getSystemProperty(pIgnoreMissing) != null ++ || SecuritySupport.getSystemProperty(pFiles) != null); + + /** Holds the resources after they are loaded from the file. */ + private ResourceBundle resources; +@@ -338,7 +339,7 @@ + private int queryVerbosity () { + String defaultVerbStr = Integer.toString(defaultVerbosity); + +- String verbStr = System.getProperty(pVerbosity); ++ String verbStr = SecuritySupport.getSystemProperty(pVerbosity); + + if (verbStr == null) { + if (resources==null) readProperties(); +@@ -473,7 +474,7 @@ + * @return A semicolon delimited list of catlog file URIs + */ + private String queryCatalogFiles () { +- String catalogList = System.getProperty(pFiles); ++ String catalogList = SecuritySupport.getSystemProperty(pFiles); + fromPropertiesFile = false; + + if (catalogList == null) { +@@ -558,7 +559,7 @@ + * defaultPreferSetting. + */ + private boolean queryPreferPublic () { +- String prefer = System.getProperty(pPrefer); ++ String prefer = SecuritySupport.getSystemProperty(pPrefer); + + if (prefer == null) { + if (resources==null) readProperties(); +@@ -617,7 +618,7 @@ + * defaultUseStaticCatalog. + */ + private boolean queryUseStaticCatalog () { +- String staticCatalog = System.getProperty(pStatic); ++ String staticCatalog = SecuritySupport.getSystemProperty(pStatic); + + if (staticCatalog == null) { + if (resources==null) readProperties(); +@@ -748,7 +749,7 @@ + * defaultOasisXMLCatalogPI. + */ + public boolean queryAllowOasisXMLCatalogPI () { +- String allow = System.getProperty(pAllowPI); ++ String allow = SecuritySupport.getSystemProperty(pAllowPI); + + if (allow == null) { + if (resources==null) readProperties(); +@@ -804,7 +805,7 @@ + * + */ + public String queryCatalogClassName () { +- String className = System.getProperty(pClassname); ++ String className = SecuritySupport.getSystemProperty(pClassname); + + if (className == null) { + if (resources==null) readProperties(); +--- jaxp/src/com/sun/org/apache/xml/internal/resolver/Resolver.java 2012-08-10 09:37:42.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/resolver/Resolver.java 2013-05-05 09:39:20.000000000 -0700 +@@ -33,6 +33,7 @@ + import java.net.MalformedURLException; + import javax.xml.parsers.SAXParserFactory; + import com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import com.sun.org.apache.xml.internal.resolver.readers.SAXCatalogReader; + import com.sun.org.apache.xml.internal.resolver.readers.OASISXMLCatalogReader; + import com.sun.org.apache.xml.internal.resolver.readers.TR9401CatalogReader; +@@ -524,7 +525,7 @@ + */ + private Vector resolveAllLocalSystem(String systemId) { + Vector map = new Vector(); +- String osname = System.getProperty("os.name"); ++ String osname = SecuritySupport.getSystemProperty("os.name"); + boolean windows = (osname.indexOf("Windows") >= 0); + Enumeration en = catalogEntries.elements(); + while (en.hasMoreElements()) { +@@ -552,7 +553,7 @@ + */ + private Vector resolveLocalSystemReverse(String systemId) { + Vector map = new Vector(); +- String osname = System.getProperty("os.name"); ++ String osname = SecuritySupport.getSystemProperty("os.name"); + boolean windows = (osname.indexOf("Windows") >= 0); + Enumeration en = catalogEntries.elements(); + while (en.hasMoreElements()) { +--- jaxp/src/com/sun/org/apache/xml/internal/serialize/SerializerFactory.java 2012-08-10 09:37:47.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/serialize/SerializerFactory.java 2013-05-05 09:39:20.000000000 -0700 +@@ -22,6 +22,7 @@ + package com.sun.org.apache.xml.internal.serialize; + + import com.sun.org.apache.xerces.internal.utils.ObjectFactory; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.io.OutputStream; + import java.io.Writer; + import java.io.UnsupportedEncodingException; +@@ -64,7 +65,7 @@ + factory = new SerializerFactoryImpl( Method.TEXT ); + registerSerializerFactory( factory ); + +- list = System.getProperty( FactoriesProperty ); ++ list = SecuritySupport.getSystemProperty( FactoriesProperty ); + if ( list != null ) { + token = new StringTokenizer( list, " ;,:" ); + while ( token.hasMoreTokens() ) { +--- jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java 2012-08-10 09:37:52.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java 2013-05-05 09:39:20.000000000 -0700 +@@ -219,7 +219,7 @@ + // Get the default system character encoding. This may be + // incorrect if they passed in a writer, but right now there + // seems to be no way to get the encoding from a writer. +- encoding = System.getProperty("file.encoding", "UTF8"); ++ encoding = SecuritySupport.getSystemProperty("file.encoding", "UTF8"); + + if (null != encoding) + { +@@ -313,7 +313,7 @@ + + try + { +- urlString = System.getProperty(ENCODINGS_PROP, ""); ++ urlString = SecuritySupport.getSystemProperty(ENCODINGS_PROP, ""); + } + catch (SecurityException e) + { +--- jaxp/src/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java 2012-08-10 09:37:56.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java 2013-05-05 09:39:20.000000000 -0700 +@@ -22,6 +22,7 @@ + */ + package com.sun.org.apache.xml.internal.serializer; + ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import java.io.BufferedInputStream; + import java.io.IOException; + import java.io.InputStream; +@@ -471,7 +472,7 @@ + String value = null; + try + { +- value = System.getProperty(key); ++ value = SecuritySupport.getSystemProperty(key); + } + catch (SecurityException se) + { +@@ -484,7 +485,7 @@ + String newValue = null; + try + { +- newValue = System.getProperty(newKey); ++ newValue = SecuritySupport.getSystemProperty(newKey); + } + catch (SecurityException se) + { +--- jaxp/src/com/sun/org/apache/xml/internal/serializer/ToStream.java 2012-08-10 09:38:02.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/serializer/ToStream.java 2013-05-05 09:39:20.000000000 -0700 +@@ -22,6 +22,7 @@ + */ + package com.sun.org.apache.xml.internal.serializer; + ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import java.io.IOException; + import java.io.OutputStream; + import java.io.UnsupportedEncodingException; +@@ -140,7 +141,7 @@ + * extension attribute xalan:line-separator. + */ + protected char[] m_lineSep = +- System.getProperty("line.separator").toCharArray(); ++ SecuritySupport.getSystemProperty("line.separator").toCharArray(); + + /** + * True if the the system line separator is to be used. +--- jaxp/src/com/sun/org/apache/xml/internal/serializer/TreeWalker.java 2012-08-10 09:38:02.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/serializer/TreeWalker.java 2013-05-05 09:39:20.000000000 -0700 +@@ -22,6 +22,7 @@ + */ + package com.sun.org.apache.xml.internal.serializer; + ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import java.io.File; + + import com.sun.org.apache.xml.internal.serializer.utils.AttList; +@@ -104,7 +105,7 @@ + else { + try { + // Bug see Bugzilla 26741 +- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl"); ++ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl"); + } + catch (SecurityException se) {// user.dir not accessible from applet + } +@@ -115,7 +116,7 @@ + m_contentHandler.setDocumentLocator(m_locator); + try { + // Bug see Bugzilla 26741 +- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl"); ++ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl"); + } + catch (SecurityException se){// user.dir not accessible from applet + +--- jaxp/src/com/sun/org/apache/xml/internal/serializer/utils/Messages.java 2012-08-10 09:38:06.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/serializer/utils/Messages.java 2013-05-05 09:39:20.000000000 -0700 +@@ -22,6 +22,7 @@ + */ + package com.sun.org.apache.xml.internal.serializer.utils; + ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import java.util.ListResourceBundle; + import java.util.Locale; + import java.util.MissingResourceException; +@@ -87,9 +88,6 @@ + * can have the Message strings translated in an alternate language + * in a errorResourceClass with a language suffix. + * +- * More sophisticated use of this class would be to pass null +- * when contructing it, but then call loadResourceBundle() +- * before creating any messages. + * + * This class is not a public API, it is only public because it is + * used in com.sun.org.apache.xml.internal.serializer. +@@ -126,18 +124,6 @@ + m_resourceBundleName = resourceBundle; + } + +- /* +- * Set the Locale object to use. If this method is not called the +- * default locale is used. This method needs to be called before +- * loadResourceBundle(). +- * +- * @param locale non-null reference to Locale object. +- * @xsl.usage internal +- */ +-// public void setLocale(Locale locale) +-// { +-// m_locale = locale; +-// } + + /** + * Get the Locale object that is being used. +@@ -151,16 +137,6 @@ + } + + /** +- * Get the ListResourceBundle being used by this Messages instance which was +- * previously set by a call to loadResourceBundle(className) +- * @xsl.usage internal +- */ +- private ListResourceBundle getResourceBundle() +- { +- return m_resourceBundle; +- } +- +- /** + * Creates a message from the specified key and replacement + * arguments, localized to the given locale. + * +@@ -174,7 +150,7 @@ + public final String createMessage(String msgKey, Object args[]) + { + if (m_resourceBundle == null) +- m_resourceBundle = loadResourceBundle(m_resourceBundleName); ++ m_resourceBundle = SecuritySupport.getResourceBundle(m_resourceBundleName); + + if (m_resourceBundle != null) + { +@@ -293,76 +269,4 @@ + return fmsg; + } + +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className the name of the class that implements ListResourceBundle, +- * without language suffix. +- * @return the ResourceBundle +- * @throws MissingResourceException +- * @xsl.usage internal +- */ +- private ListResourceBundle loadResourceBundle(String resourceBundle) +- throws MissingResourceException +- { +- m_resourceBundleName = resourceBundle; +- Locale locale = getLocale(); +- +- ListResourceBundle lrb; +- +- try +- { +- +- ResourceBundle rb = +- ResourceBundle.getBundle(m_resourceBundleName, locale); +- lrb = (ListResourceBundle) rb; +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- lrb = +- (ListResourceBundle) ResourceBundle.getBundle( +- m_resourceBundleName, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles." + m_resourceBundleName, +- m_resourceBundleName, +- ""); +- } +- } +- m_resourceBundle = lrb; +- return lrb; +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which can be appended to a resource name +- * @xsl.usage internal +- */ +- private static String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } + } +--- jaxp/src/com/sun/org/apache/xml/internal/utils/TreeWalker.java 2012-08-10 09:38:11.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/utils/TreeWalker.java 2013-05-05 09:39:20.000000000 -0700 +@@ -22,6 +22,7 @@ + */ + package com.sun.org.apache.xml.internal.utils; + ++import com.sun.org.apache.xalan.internal.utils.SecuritySupport; + import java.io.File; + + import org.w3c.dom.Comment; +@@ -93,7 +94,7 @@ + else { + try { + // Bug see Bugzilla 26741 +- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl"); ++ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl"); + } + catch (SecurityException se) {// user.dir not accessible from applet + } +@@ -112,7 +113,7 @@ + m_contentHandler.setDocumentLocator(m_locator); + try { + // Bug see Bugzilla 26741 +- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl"); ++ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl"); + } + catch (SecurityException se){// user.dir not accessible from applet + } +@@ -131,7 +132,7 @@ + m_contentHandler.setDocumentLocator(m_locator); + try { + // Bug see Bugzilla 26741 +- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl"); ++ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl"); + } + catch (SecurityException se){// user.dir not accessible from applet + +--- jaxp/src/com/sun/org/apache/xml/internal/utils/res/XResourceBundle.java 2012-08-10 09:38:12.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xml/internal/utils/res/XResourceBundle.java 2013-05-05 09:39:20.000000000 -0700 +@@ -22,6 +22,8 @@ + */ + package com.sun.org.apache.xml.internal.utils.res; + ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.ListResourceBundle; + import java.util.Locale; + import java.util.MissingResourceException; +@@ -29,114 +31,45 @@ + + /** + * The default (english) resource bundle. ++ * + * @xsl.usage internal + */ +-public class XResourceBundle extends ListResourceBundle +-{ ++public class XResourceBundle extends ListResourceBundle { + +- /** Error resource constants */ +- public static final String ERROR_RESOURCES = +- "com.sun.org.apache.xalan.internal.res.XSLTErrorResources", XSLT_RESOURCE = +- "com.sun.org.apache.xml.internal.utils.res.XResourceBundle", LANG_BUNDLE_NAME = +- "com.sun.org.apache.xml.internal.utils.res.XResources", MULT_ORDER = +- "multiplierOrder", MULT_PRECEDES = "precedes", MULT_FOLLOWS = +- "follows", LANG_ORIENTATION = "orientation", LANG_RIGHTTOLEFT = +- "rightToLeft", LANG_LEFTTORIGHT = "leftToRight", LANG_NUMBERING = +- "numbering", LANG_ADDITIVE = "additive", LANG_MULT_ADD = +- "multiplicative-additive", LANG_MULTIPLIER = +- "multiplier", LANG_MULTIPLIER_CHAR = +- "multiplierChar", LANG_NUMBERGROUPS = "numberGroups", LANG_NUM_TABLES = +- "tables", LANG_ALPHABET = "alphabet", LANG_TRAD_ALPHABET = "tradAlphabet"; +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @param locale the locale to prefer when searching for the bundle +- */ +- public static final XResourceBundle loadResourceBundle( +- String className, Locale locale) throws MissingResourceException +- { +- +- String suffix = getResourceSuffix(locale); +- +- //System.out.println("resource " + className + suffix); +- try +- { +- +- // first try with the given locale +- String resourceName = className + suffix; +- return (XResourceBundle) ResourceBundle.getBundle(resourceName, locale); ++ /** ++ * Error resource constants ++ */ ++ public static final String ERROR_RESOURCES = ++ "com.sun.org.apache.xalan.internal.res.XSLTErrorResources", XSLT_RESOURCE = ++ "com.sun.org.apache.xml.internal.utils.res.XResourceBundle", LANG_BUNDLE_NAME = ++ "com.sun.org.apache.xml.internal.utils.res.XResources", MULT_ORDER = ++ "multiplierOrder", MULT_PRECEDES = "precedes", MULT_FOLLOWS = ++ "follows", LANG_ORIENTATION = "orientation", LANG_RIGHTTOLEFT = ++ "rightToLeft", LANG_LEFTTORIGHT = "leftToRight", LANG_NUMBERING = ++ "numbering", LANG_ADDITIVE = "additive", LANG_MULT_ADD = ++ "multiplicative-additive", LANG_MULTIPLIER = ++ "multiplier", LANG_MULTIPLIER_CHAR = ++ "multiplierChar", LANG_NUMBERGROUPS = "numberGroups", LANG_NUM_TABLES = ++ "tables", LANG_ALPHABET = "alphabet", LANG_TRAD_ALPHABET = "tradAlphabet"; ++ ++ ++ /** ++ * Get the association list. ++ * ++ * @return The association list. ++ */ ++ public Object[][] getContents() { ++ return new Object[][]{ ++ {"ui_language", "en"}, {"help_language", "en"}, {"language", "en"}, ++ {"alphabet", new CharArrayWrapper(new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', ++ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', ++ 'V', 'W', 'X', 'Y', 'Z'})}, ++ {"tradAlphabet", new CharArrayWrapper(new char[]{'A', 'B', 'C', 'D', 'E', 'F', ++ 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', ++ 'U', 'V', 'W', 'X', 'Y', 'Z'})}, ++ //language orientation ++ {"orientation", "LeftToRight"}, ++ //language numbering ++ {"numbering", "additive"},}; + } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XResourceBundle) ResourceBundle.getBundle( +- XSLT_RESOURCE, new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String lang = locale.getLanguage(); +- String country = locale.getCountry(); +- String variant = locale.getVariant(); +- String suffix = "_" + locale.getLanguage(); +- +- if (lang.equals("zh")) +- suffix += "_" + country; +- +- if (country.equals("JP")) +- suffix += "_" + country + "_" + variant; +- +- return suffix; +- } +- +- /** +- * Get the association list. +- * +- * @return The association list. +- */ +- public Object[][] getContents() +- { +- return new Object[][] +- { +- { "ui_language", "en" }, { "help_language", "en" }, { "language", "en" }, +- { "alphabet", new CharArrayWrapper(new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', +- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', +- 'V', 'W', 'X', 'Y', 'Z' })}, +- { "tradAlphabet", new CharArrayWrapper(new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', +- 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', +- 'U', 'V', 'W', 'X', 'Y', 'Z' }) }, +- +- //language orientation +- { "orientation", "LeftToRight" }, +- +- //language numbering +- { "numbering", "additive" }, +- }; +- } + } +--- jaxp/src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java 2012-08-10 09:38:25.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java 2013-05-05 09:39:20.000000000 -0700 +@@ -102,7 +102,7 @@ + + try + { +- result = System.getProperty(propName); ++ result = SecuritySupport.getSystemProperty(propName); + + if (null == result) + { +@@ -124,7 +124,7 @@ + { + try + { +- result = System.getProperty(fullName); ++ result = SecuritySupport.getSystemProperty(fullName); + + if (null == result) + { +@@ -170,7 +170,6 @@ try { + // Use SecuritySupport class to provide priveleged access to property file +- + InputStream is = SecuritySupport.getResourceAsStream(ObjectFactory.findClassLoader(), + file); + +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java 2012-08-10 09:38:31.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java 2013-05-05 09:39:20.000000000 -0700 +@@ -23,9 +23,6 @@ + package com.sun.org.apache.xpath.internal.res; + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -939,68 +936,4 @@ + /** Field QUERY_HEADER */ + public static final String QUERY_HEADER = "PATTERN "; + +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XPATHErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XPATHErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XPATHErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java 2012-08-10 09:38:31.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java 2013-05-05 09:39:20.000000000 -0700 +@@ -23,9 +23,6 @@ + package com.sun.org.apache.xpath.internal.res; + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -939,68 +936,4 @@ + /** Field QUERY_HEADER */ + public static final String QUERY_HEADER = "PATTERN "; + +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XPATHErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XPATHErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XPATHErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_es.java 2012-08-10 09:38:31.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_es.java 2013-05-05 09:39:20.000000000 -0700 +@@ -23,9 +23,6 @@ + package com.sun.org.apache.xpath.internal.res; + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -939,68 +936,4 @@ + /** Field QUERY_HEADER */ + public static final String QUERY_HEADER = "PATTERN "; + +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XPATHErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XPATHErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XPATHErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_fr.java 2012-08-10 09:38:31.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_fr.java 2013-05-05 09:39:20.000000000 -0700 +@@ -23,9 +23,6 @@ + package com.sun.org.apache.xpath.internal.res; + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -939,68 +936,4 @@ + /** Field QUERY_HEADER */ + public static final String QUERY_HEADER = "PATTERN "; + +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XPATHErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XPATHErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XPATHErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_it.java 2012-08-10 09:38:31.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_it.java 2013-05-05 09:39:20.000000000 -0700 +@@ -23,9 +23,6 @@ + package com.sun.org.apache.xpath.internal.res; + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -939,68 +936,4 @@ + /** Field QUERY_HEADER */ + public static final String QUERY_HEADER = "PATTERN "; + +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XPATHErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XPATHErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XPATHErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ja.java 2012-08-10 09:38:31.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ja.java 2013-05-05 09:39:20.000000000 -0700 +@@ -23,9 +23,6 @@ + package com.sun.org.apache.xpath.internal.res; + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -939,68 +936,4 @@ + /** Field QUERY_HEADER */ + public static final String QUERY_HEADER = "PATTERN "; + +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XPATHErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XPATHErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XPATHErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java 2012-08-10 09:38:32.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java 2013-05-05 09:39:20.000000000 -0700 +@@ -23,9 +23,6 @@ + package com.sun.org.apache.xpath.internal.res; + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -939,68 +936,4 @@ + /** Field QUERY_HEADER */ + public static final String QUERY_HEADER = "PATTERN "; + +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XPATHErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XPATHErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XPATHErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_pt_BR.java 2012-08-10 09:38:32.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_pt_BR.java 2013-05-05 09:39:20.000000000 -0700 +@@ -24,9 +24,6 @@ + package com.sun.org.apache.xpath.internal.res; + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -940,68 +937,4 @@ + /** Field QUERY_HEADER */ + public static final String QUERY_HEADER = "PATTERN "; + +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XPATHErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XPATHErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XPATHErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_sv.java 2012-08-10 09:38:32.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_sv.java 2013-05-05 09:39:20.000000000 -0700 +@@ -23,9 +23,6 @@ + package com.sun.org.apache.xpath.internal.res; + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -939,68 +936,4 @@ + /** Field QUERY_HEADER */ + public static final String QUERY_HEADER = "PATTERN "; + +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XPATHErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XPATHErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XPATHErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_CN.java 2012-08-10 09:38:32.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_CN.java 2013-05-05 09:39:20.000000000 -0700 +@@ -23,9 +23,6 @@ + package com.sun.org.apache.xpath.internal.res; + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -939,68 +936,4 @@ + /** Field QUERY_HEADER */ + public static final String QUERY_HEADER = "PATTERN "; + +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XPATHErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XPATHErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XPATHErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_TW.java 2012-08-10 09:38:32.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_TW.java 2013-05-05 09:39:20.000000000 -0700 +@@ -23,9 +23,6 @@ + package com.sun.org.apache.xpath.internal.res; + + import java.util.ListResourceBundle; +-import java.util.Locale; +-import java.util.MissingResourceException; +-import java.util.ResourceBundle; + + /** + * Set up error messages. +@@ -939,68 +936,4 @@ + /** Field QUERY_HEADER */ + public static final String QUERY_HEADER = "PATTERN "; + +- +- /** +- * Return a named ResourceBundle for a particular locale. This method mimics the behavior +- * of ResourceBundle.getBundle(). +- * +- * @param className Name of local-specific subclass. +- * @return the ResourceBundle +- * @throws MissingResourceException +- */ +- public static final XPATHErrorResources loadResourceBundle(String className) +- throws MissingResourceException +- { +- +- Locale locale = Locale.getDefault(); +- String suffix = getResourceSuffix(locale); +- +- try +- { +- +- // first try with the given locale +- return (XPATHErrorResources) ResourceBundle.getBundle(className +- + suffix, locale); +- } +- catch (MissingResourceException e) +- { +- try // try to fall back to en_US if we can't load +- { +- +- // Since we can't find the localized property file, +- // fall back to en_US. +- return (XPATHErrorResources) ResourceBundle.getBundle(className, +- new Locale("en", "US")); +- } +- catch (MissingResourceException e2) +- { +- +- // Now we are really in trouble. +- // very bad, definitely very bad...not going to get very far +- throw new MissingResourceException( +- "Could not load any resource bundles.", className, ""); +- } +- } +- } +- +- /** +- * Return the resource file suffic for the indicated locale +- * For most locales, this will be based the language code. However +- * for Chinese, we do distinguish between Taiwan and PRC +- * +- * @param locale the locale +- * @return an String suffix which canbe appended to a resource name +- */ +- private static final String getResourceSuffix(Locale locale) +- { +- +- String suffix = "_" + locale.getLanguage(); +- String country = locale.getCountry(); +- +- if (country.equals("TW")) +- suffix += "_" + country; +- +- return suffix; +- } +- + } +--- jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHMessages.java 2012-08-10 09:38:32.000000000 -0700 ++++ jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHMessages.java 2013-05-05 09:39:20.000000000 -0700 +@@ -22,130 +22,128 @@ + */ + package com.sun.org.apache.xpath.internal.res; + +-import java.util.ListResourceBundle; +- ++import com.sun.org.apache.bcel.internal.util.SecuritySupport; + import com.sun.org.apache.xml.internal.res.XMLMessages; ++import java.util.ListResourceBundle; + + /** + * A utility class for issuing XPath error messages. ++ * + * @xsl.usage internal + */ +-public class XPATHMessages extends XMLMessages +-{ +- /** The language specific resource object for XPath messages. */ +- private static ListResourceBundle XPATHBundle = null; +- +- /** The class name of the XPath error message string table. */ +- private static final String XPATH_ERROR_RESOURCES = +- "com.sun.org.apache.xpath.internal.res.XPATHErrorResources"; +- +- /** +- * Creates a message from the specified key and replacement +- * arguments, localized to the given locale. +- * +- * @param msgKey The key for the message text. +- * @param args The arguments to be used as replacement text +- * in the message created. +- * +- * @return The formatted message string. +- */ +- public static final String createXPATHMessage(String msgKey, Object args[]) //throws Exception +- { +- if (XPATHBundle == null) +- XPATHBundle = loadResourceBundle(XPATH_ERROR_RESOURCES); ++public class XPATHMessages extends XMLMessages { + +- if (XPATHBundle != null) ++ /** ++ * The language specific resource object for XPath messages. ++ */ ++ private static ListResourceBundle XPATHBundle = null; ++ /** ++ * The class name of the XPath error message string table. ++ */ ++ private static final String XPATH_ERROR_RESOURCES = ++ "com.sun.org.apache.xpath.internal.res.XPATHErrorResources"; ++ ++ /** ++ * Creates a message from the specified key and replacement arguments, ++ * localized to the given locale. ++ * ++ * @param msgKey The key for the message text. ++ * @param args The arguments to be used as replacement text in the message ++ * created. ++ * ++ * @return The formatted message string. ++ */ ++ public static final String createXPATHMessage(String msgKey, Object args[]) //throws Exception + { +- return createXPATHMsg(XPATHBundle, msgKey, args); +- } +- else +- return "Could not load any resource bundles."; +- } +- +- /** +- * Creates a message from the specified key and replacement +- * arguments, localized to the given locale. +- * +- * @param msgKey The key for the message text. +- * @param args The arguments to be used as replacement text +- * in the message created. +- * +- * @return The formatted warning string. +- */ +- public static final String createXPATHWarning(String msgKey, Object args[]) //throws Exception +- { +- if (XPATHBundle == null) +- XPATHBundle = loadResourceBundle(XPATH_ERROR_RESOURCES); ++ if (XPATHBundle == null) { ++ XPATHBundle = SecuritySupport.getResourceBundle(XPATH_ERROR_RESOURCES); ++ } + +- if (XPATHBundle != null) +- { +- return createXPATHMsg(XPATHBundle, msgKey, args); ++ if (XPATHBundle != null) { ++ return createXPATHMsg(XPATHBundle, msgKey, args); ++ } else { ++ return "Could not load any resource bundles."; ++ } + } +- else +- return "Could not load any resource bundles."; +- } +- +- /** +- * Creates a message from the specified key and replacement +- * arguments, localized to the given locale. +- * +- * @param fResourceBundle The resource bundle to use. +- * @param msgKey The message key to use. +- * @param args The arguments to be used as replacement text +- * in the message created. +- * +- * @return The formatted message string. +- */ +- public static final String createXPATHMsg(ListResourceBundle fResourceBundle, +- String msgKey, Object args[]) //throws Exception +- { +- +- String fmsg = null; +- boolean throwex = false; +- String msg = null; +- +- if (msgKey != null) +- msg = fResourceBundle.getString(msgKey); + +- if (msg == null) ++ /** ++ * Creates a message from the specified key and replacement arguments, ++ * localized to the given locale. ++ * ++ * @param msgKey The key for the message text. ++ * @param args The arguments to be used as replacement text in the message ++ * created. ++ * ++ * @return The formatted warning string. ++ */ ++ public static final String createXPATHWarning(String msgKey, Object args[]) //throws Exception + { +- msg = fResourceBundle.getString(XPATHErrorResources.BAD_CODE); +- throwex = true; ++ if (XPATHBundle == null) { ++ XPATHBundle = SecuritySupport.getResourceBundle(XPATH_ERROR_RESOURCES); ++ } ++ ++ if (XPATHBundle != null) { ++ return createXPATHMsg(XPATHBundle, msgKey, args); ++ } else { ++ return "Could not load any resource bundles."; ++ } + } + +- if (args != null) ++ /** ++ * Creates a message from the specified key and replacement arguments, ++ * localized to the given locale. ++ * ++ * @param fResourceBundle The resource bundle to use. ++ * @param msgKey The message key to use. ++ * @param args The arguments to be used as replacement text in the message ++ * created. ++ * ++ * @return The formatted message string. ++ */ ++ public static final String createXPATHMsg(ListResourceBundle fResourceBundle, ++ String msgKey, Object args[]) //throws Exception + { +- try +- { + +- // Do this to keep format from crying. +- // This is better than making a bunch of conditional +- // code all over the place. +- int n = args.length; +- +- for (int i = 0; i < n; i++) +- { +- if (null == args[i]) +- args[i] = ""; +- } +- +- fmsg = java.text.MessageFormat.format(msg, args); +- } +- catch (Exception e) +- { +- fmsg = fResourceBundle.getString(XPATHErrorResources.FORMAT_FAILED); +- fmsg += " " + msg; +- } +- } +- else +- fmsg = msg; ++ String fmsg = null; ++ boolean throwex = false; ++ String msg = null; + +- if (throwex) +- { +- throw new RuntimeException(fmsg); +- } ++ if (msgKey != null) { ++ msg = fResourceBundle.getString(msgKey); ++ } ++ ++ if (msg == null) { ++ msg = fResourceBundle.getString(XPATHErrorResources.BAD_CODE); ++ throwex = true; ++ } + +- return fmsg; +- } ++ if (args != null) { ++ try { + ++ // Do this to keep format from crying. ++ // This is better than making a bunch of conditional ++ // code all over the place. ++ int n = args.length; ++ ++ for (int i = 0; i < n; i++) { ++ if (null == args[i]) { ++ args[i] = ""; ++ } ++ } ++ ++ fmsg = java.text.MessageFormat.format(msg, args); ++ } catch (Exception e) { ++ fmsg = fResourceBundle.getString(XPATHErrorResources.FORMAT_FAILED); ++ fmsg += " " + msg; ++ } ++ } else { ++ fmsg = msg; ++ } ++ ++ if (throwex) { ++ throw new RuntimeException(fmsg); ++ } ++ ++ return fmsg; ++ } + } +--- jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java 2012-08-10 09:38:32.000000000 -0700 ++++ jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java 2013-05-05 09:39:20.000000000 -0700 +@@ -36,6 +36,7 @@ + import com.sun.org.apache.xerces.internal.impl.PropertyManager; + import com.sun.org.apache.xerces.internal.impl.XMLErrorReporter; + import com.sun.org.apache.xerces.internal.impl.Constants; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import java.util.Enumeration; + + /** +@@ -414,7 +415,7 @@ + // get the user.dir property + String userDir = ""; + try { +- userDir = System.getProperty("user.dir"); ++ userDir = SecuritySupport.getSystemProperty("user.dir"); + } + catch (SecurityException se) { + } +--- jaxp/src/com/sun/xml/internal/stream/writers/WriterUtility.java 2012-08-10 09:38:35.000000000 -0700 ++++ jaxp/src/com/sun/xml/internal/stream/writers/WriterUtility.java 2013-05-05 09:39:20.000000000 -0700 +@@ -32,6 +32,7 @@ + import java.nio.charset.Charset; + import java.nio.charset.CharsetEncoder; + import com.sun.org.apache.xerces.internal.util.XMLChar; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + + /** + * Implements common xml writer functions. +@@ -240,7 +241,7 @@ + + private CharsetEncoder getDefaultEncoder(){ + try{ +- String encoding = System.getProperty("file.encoding"); ++ String encoding = SecuritySupport.getSystemProperty("file.encoding"); + if(encoding != null){ + return Charset.forName(encoding).newEncoder(); + } +--- jaxp/src/com/sun/xml/internal/stream/writers/XMLStreamWriterImpl.java 2012-08-10 09:38:36.000000000 -0700 ++++ jaxp/src/com/sun/xml/internal/stream/writers/XMLStreamWriterImpl.java 2013-05-05 09:39:20.000000000 -0700 +@@ -53,6 +53,7 @@ + import com.sun.org.apache.xerces.internal.impl.PropertyManager; + import com.sun.org.apache.xerces.internal.util.NamespaceSupport; + import com.sun.org.apache.xerces.internal.util.SymbolTable; ++import com.sun.org.apache.xerces.internal.utils.SecuritySupport; + import com.sun.org.apache.xerces.internal.xni.QName; + + import com.sun.xml.internal.stream.util.ReadOnlyIterator; +@@ -340,7 +341,7 @@ + fEncoder = Charset.forName(encoding).newEncoder(); + } + } else { +- encoding = System.getProperty("file.encoding"); ++ encoding = SecuritySupport.getSystemProperty("file.encoding"); + if (encoding != null && encoding.equalsIgnoreCase("utf-8")) { + fWriter = new UTF8OutputStreamWriter(os); + } else { +--- jaxp/src/javax/xml/datatype/FactoryFinder.java 2012-08-10 09:38:38.000000000 -0700 ++++ jaxp/src/javax/xml/datatype/FactoryFinder.java 2013-05-05 09:39:21.000000000 -0700 +@@ -44,6 +44,7 @@ + * @author Santiago.PericasGeertsen@sun.com + */ + class FactoryFinder { ++ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal"; + + /** + * Internal debug flag. +@@ -95,18 +96,24 @@ + * If the class loader supplied is <code>null</code>, first try using the + * context class loader followed by the current (i.e. bootstrap) class + * loader. ++ * ++ * Use bootstrap classLoader if cl = null and useBSClsLoader is true + */ + static private Class getProviderClass(String className, ClassLoader cl, +- boolean doFallback) throws ClassNotFoundException ++ boolean doFallback, boolean useBSClsLoader) throws ClassNotFoundException + { + try { + if (cl == null) { +- cl = ss.getContextClassLoader(); +- if (cl == null) { +- throw new ClassNotFoundException(); +- } +- else { +- return cl.loadClass(className); ++ if (useBSClsLoader) { ++ return Class.forName(className, true, FactoryFinder.class.getClassLoader()); ++ } else { ++ cl = ss.getContextClassLoader(); ++ if (cl == null) { ++ throw new ClassNotFoundException(); ++ } ++ else { ++ return cl.loadClass(className); ++ } + } + } + else { +@@ -131,17 +138,47 @@ + * @param className Name of the concrete class corresponding to the + * service provider + * ++ * @param cl <code>ClassLoader</code> used to load the factory class. If <code>null</code> ++ * current <code>Thread</code>'s context classLoader is used to load the factory class. ++ * ++ * @param doFallback True if the current ClassLoader should be tried as ++ * a fallback if the class is not found using cl ++ */ ++ static Object newInstance(String className, ClassLoader cl, boolean doFallback) ++ throws ConfigurationError ++ { ++ return newInstance(className, cl, doFallback, false); ++ } ++ ++ /** ++ * Create an instance of a class. Delegates to method ++ * <code>getProviderClass()</code> in order to load the class. ++ * ++ * @param className Name of the concrete class corresponding to the ++ * service provider ++ * + * @param cl ClassLoader to use to load the class, null means to use + * the bootstrap ClassLoader + * + * @param doFallback True if the current ClassLoader should be tried as + * a fallback if the class is not found using cl ++ * ++ * @param useBSClsLoader True if cl=null actually meant bootstrap classLoader. This parameter ++ * is needed since DocumentBuilderFactory/SAXParserFactory defined null as context classLoader. + */ +- static Object newInstance(String className, ClassLoader cl, boolean doFallback) ++ static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader) + throws ConfigurationError + { ++ // make sure we have access to restricted packages ++ if (System.getSecurityManager() != null) { ++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) { ++ cl = null; ++ useBSClsLoader = true; ++ } ++ } ++ + try { +- Class providerClass = getProviderClass(className, cl, doFallback); ++ Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader); + Object instance = providerClass.newInstance(); + if (debug) { // Extra check to avoid computing cl strings + dPrint("created new instance of " + providerClass + +@@ -244,6 +281,7 @@ + + // First try the Context ClassLoader + ClassLoader cl = ss.getContextClassLoader(); ++ boolean useBSClsLoader = false; + if (cl != null) { + is = ss.getResourceAsStream(cl, serviceId); + +@@ -251,11 +289,13 @@ + if (is == null) { + cl = FactoryFinder.class.getClassLoader(); + is = ss.getResourceAsStream(cl, serviceId); ++ useBSClsLoader = true; + } + } else { + // No Context ClassLoader, try the current ClassLoader + cl = FactoryFinder.class.getClassLoader(); + is = ss.getResourceAsStream(cl, serviceId); ++ useBSClsLoader = true; + } + + if (is == null) { +@@ -293,7 +333,7 @@ + // ClassLoader because we want to avoid the case where the + // resource file was found using one ClassLoader and the + // provider class was instantiated using a different one. +- return newInstance(factoryClassName, cl, false); ++ return newInstance(factoryClassName, cl, false, useBSClsLoader); + } + + // No provider found +--- jaxp/src/javax/xml/parsers/FactoryFinder.java 2012-08-10 09:38:39.000000000 -0700 ++++ jaxp/src/javax/xml/parsers/FactoryFinder.java 2013-05-05 09:39:21.000000000 -0700 +@@ -42,7 +42,7 @@ + * @author Huizhe.Wang@oracle.com + */ + class FactoryFinder { +- ++ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal"; + /** + * Internal debug flag. + */ +@@ -166,6 +166,14 @@ + static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader) + throws ConfigurationError + { ++ // make sure we have access to restricted packages ++ if (System.getSecurityManager() != null) { ++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) { ++ cl = null; ++ useBSClsLoader = true; ++ } ++ } ++ + try { + Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader); + Object instance = providerClass.newInstance(); +--- jaxp/src/javax/xml/stream/FactoryFinder.java 2012-08-10 09:38:41.000000000 -0700 ++++ jaxp/src/javax/xml/stream/FactoryFinder.java 2013-05-05 09:39:21.000000000 -0700 +@@ -25,14 +25,12 @@ + + package javax.xml.stream; + +-import java.io.InputStream; +-import java.io.IOException; +-import java.io.File; +-import java.io.FileInputStream; +- +-import java.util.Properties; + import java.io.BufferedReader; ++import java.io.File; ++import java.io.IOException; ++import java.io.InputStream; + import java.io.InputStreamReader; ++import java.util.Properties; + + /** + * <p>Implements pluggable Datatypes.</p> +@@ -43,6 +41,8 @@ + * @author Santiago.PericasGeertsen@sun.com + */ + class FactoryFinder { ++ // Check we have access to package. ++ private static final String DEFAULT_PACKAGE = "com.sun.xml.internal."; + + /** + * Internal debug flag. +@@ -94,18 +94,24 @@ + * If the class loader supplied is <code>null</code>, first try using the + * context class loader followed by the current (i.e. bootstrap) class + * loader. ++ * ++ * Use bootstrap classLoader if cl = null and useBSClsLoader is true + */ + static private Class getProviderClass(String className, ClassLoader cl, +- boolean doFallback) throws ClassNotFoundException ++ boolean doFallback, boolean useBSClsLoader) throws ClassNotFoundException + { + try { + if (cl == null) { +- cl = ss.getContextClassLoader(); +- if (cl == null) { +- throw new ClassNotFoundException(); +- } +- else { +- return cl.loadClass(className); ++ if (useBSClsLoader) { ++ return Class.forName(className, true, FactoryFinder.class.getClassLoader()); ++ } else { ++ cl = ss.getContextClassLoader(); ++ if (cl == null) { ++ throw new ClassNotFoundException(); ++ } ++ else { ++ return cl.loadClass(className); ++ } + } + } + else { +@@ -130,8 +136,8 @@ + * @param className Name of the concrete class corresponding to the + * service provider + * +- * @param cl ClassLoader to use to load the class, null means to use +- * the bootstrap ClassLoader ++ * @param cl <code>ClassLoader</code> used to load the factory class. If <code>null</code> ++ * current <code>Thread</code>'s context classLoader is used to load the factory class. + * + * @param doFallback True if the current ClassLoader should be tried as + * a fallback if the class is not found using cl +@@ -139,8 +145,38 @@ + static Object newInstance(String className, ClassLoader cl, boolean doFallback) + throws ConfigurationError + { ++ return newInstance(className, cl, doFallback, false); ++ } ++ ++ /** ++ * Create an instance of a class. Delegates to method ++ * <code>getProviderClass()</code> in order to load the class. ++ * ++ * @param className Name of the concrete class corresponding to the ++ * service provider ++ * ++ * @param cl <code>ClassLoader</code> used to load the factory class. If <code>null</code> ++ * current <code>Thread</code>'s context classLoader is used to load the factory class. ++ * ++ * @param doFallback True if the current ClassLoader should be tried as ++ * a fallback if the class is not found using cl ++ * ++ * @param useBSClsLoader True if cl=null actually meant bootstrap classLoader. This parameter ++ * is needed since DocumentBuilderFactory/SAXParserFactory defined null as context classLoader. ++ */ ++ static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader) ++ throws ConfigurationError ++ { ++ // make sure we have access to restricted packages ++ if (System.getSecurityManager() != null) { ++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) { ++ cl = null; ++ useBSClsLoader = true; ++ } ++ } ++ + try { +- Class providerClass = getProviderClass(className, cl, doFallback); ++ Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader); + Object instance = providerClass.newInstance(); + if (debug) { // Extra check to avoid computing cl strings + dPrint("created new instance of " + providerClass + +@@ -233,11 +269,11 @@ + if (ss.doesFileExist(f)) { + dPrint("Read properties file "+f); + cacheProps.load(ss.getFileInputStream(f)); +- } +- } + } + } + } ++ } ++ } + factoryClassName = cacheProps.getProperty(factoryId); + + if (factoryClassName != null) { +@@ -276,6 +312,7 @@ + + // First try the Context ClassLoader + ClassLoader cl = ss.getContextClassLoader(); ++ boolean useBSClsLoader = false; + if (cl != null) { + is = ss.getResourceAsStream(cl, serviceId); + +@@ -283,11 +320,13 @@ + if (is == null) { + cl = FactoryFinder.class.getClassLoader(); + is = ss.getResourceAsStream(cl, serviceId); ++ useBSClsLoader = true; + } + } else { + // No Context ClassLoader, try the current ClassLoader + cl = FactoryFinder.class.getClassLoader(); + is = ss.getResourceAsStream(cl, serviceId); ++ useBSClsLoader = true; + } + + if (is == null) { +@@ -325,7 +364,7 @@ + // ClassLoader because we want to avoid the case where the + // resource file was found using one ClassLoader and the + // provider class was instantiated using a different one. +- return newInstance(factoryClassName, cl, false); ++ return newInstance(factoryClassName, cl, false, useBSClsLoader); + } + + // No provider found +--- jaxp/src/javax/xml/transform/FactoryFinder.java 2012-08-10 09:38:44.000000000 -0700 ++++ jaxp/src/javax/xml/transform/FactoryFinder.java 2013-05-05 09:39:21.000000000 -0700 +@@ -43,6 +43,7 @@ + * @author Huizhe.Wang@oracle.com + */ + class FactoryFinder { ++ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xalan.internal."; + + /** + * Internal debug flag. +@@ -169,6 +170,14 @@ + static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader, boolean useServicesMechanism) + throws ConfigurationError + { ++ // make sure we have access to restricted packages ++ if (System.getSecurityManager() != null) { ++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) { ++ cl = null; ++ useBSClsLoader = true; ++ } ++ } ++ + try { + Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader); + Object instance = null; +@@ -210,7 +219,7 @@ + providerClass.getDeclaredMethod( + "newTransformerFactoryNoServiceLoader" + ); +- return creationMethod.invoke(null, null); ++ return creationMethod.invoke(null, (Object[])null); + } catch (NoSuchMethodException exc) { + return null; + } catch (Exception exc) { +--- jaxp/src/javax/xml/validation/SchemaFactoryFinder.java 2012-08-10 09:38:49.000000000 -0700 ++++ jaxp/src/javax/xml/validation/SchemaFactoryFinder.java 2013-05-05 09:39:21.000000000 -0700 +@@ -54,6 +54,7 @@ + *<p> Take care of restrictions imposed by java security model </p> + */ + private static SecuritySupport ss = new SecuritySupport(); ++ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal"; + /** + * <p>Cache properties for performance.</p> + */ +@@ -213,28 +214,6 @@ + } + } + +- /** +- // try to read from $java.home/lib/jaxp.properties +- try { +- String javah = ss.getSystemProperty( "java.home" ); +- String configFile = javah + File.separator + +- "lib" + File.separator + "jaxp.properties"; +- File f = new File( configFile ); +- if( ss.doesFileExist(f)) { +- sf = loadFromProperty( +- propertyName,f.getAbsolutePath(), new FileInputStream(f)); +- if(sf!=null) return sf; +- } else { +- debugPrintln("Tried to read "+ f.getAbsolutePath()+", but it doesn't exist."); +- } +- } catch(Throwable e) { +- if( debug ) { +- debugPrintln("failed to read $java.home/lib/jaxp.properties"); +- e.printStackTrace(); +- } +- } +- */ +- + // try META-INF/services files + Iterator sitr = createServiceFileIterator(); + while(sitr.hasNext()) { +@@ -269,14 +248,20 @@ + */ + private Class createClass(String className) { + Class clazz; ++ // make sure we have access to restricted packages ++ boolean internal = false; ++ if (System.getSecurityManager() != null) { ++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) { ++ internal = true; ++ } ++ } + +- // use approprite ClassLoader + try { +- if (classLoader != null) { +- clazz = classLoader.loadClass(className); +- } else { +- clazz = Class.forName(className); +- } ++ if (classLoader != null && !internal) { ++ clazz = classLoader.loadClass(className); ++ } else { ++ clazz = Class.forName(className); ++ } + } catch (Throwable t) { + if(debug) t.printStackTrace(); + return null; +@@ -357,7 +342,7 @@ + providerClass.getDeclaredMethod( + "newXMLSchemaFactoryNoServiceLoader" + ); +- return creationMethod.invoke(null, null); ++ return creationMethod.invoke(null, (Object[])null); + } catch (NoSuchMethodException exc) { + return null; + } catch (Exception exc) { +--- jaxp/src/javax/xml/xpath/XPathFactoryFinder.java 2012-08-10 09:38:54.000000000 -0700 ++++ jaxp/src/javax/xml/xpath/XPathFactoryFinder.java 2013-05-05 09:39:20.000000000 -0700 +@@ -48,6 +48,7 @@ + * @since 1.5 + */ + class XPathFactoryFinder { ++ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xpath.internal"; + + private static SecuritySupport ss = new SecuritySupport() ; + /** debug support code. */ +@@ -246,18 +247,25 @@ + */ + private Class createClass(String className) { + Class clazz; ++ // make sure we have access to restricted packages ++ boolean internal = false; ++ if (System.getSecurityManager() != null) { ++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) { ++ internal = true; ++ } ++ } + +- // use approprite ClassLoader +- try { +- if (classLoader != null) { +- clazz = classLoader.loadClass(className); +- } else { +- clazz = Class.forName(className); +- } +- } catch (Throwable t) { +- if(debug) t.printStackTrace(); +- return null; ++ // use approprite ClassLoader ++ try { ++ if (classLoader != null && !internal) { ++ clazz = classLoader.loadClass(className); ++ } else { ++ clazz = Class.forName(className); + } ++ } catch (Throwable t) { ++ if(debug) t.printStackTrace(); ++ return null; ++ } + + return clazz; + } +@@ -333,7 +341,7 @@ + providerClass.getDeclaredMethod( + "newXPathFactoryNoServiceLoader" + ); +- return creationMethod.invoke(null, null); ++ return creationMethod.invoke(null, (Object[])null); + } catch (NoSuchMethodException exc) { + return null; + } catch (Exception exc) { +--- jaxp/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java 2012-08-10 09:38:59.000000000 -0700 ++++ jaxp/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java 2013-05-05 09:39:21.000000000 -0700 +@@ -104,6 +104,8 @@ + */ + private static final String FALLBACK_CLASS = + "com.sun.org.apache.xerces.internal.dom.DOMXSImplementationSourceImpl"; ++ private static final String DEFAULT_PACKAGE = ++ "com.sun.org.apache.xerces.internal.dom"; + /** + * Private constructor. + * @param srcs Vector List of DOMImplementationSources +@@ -168,10 +170,15 @@ + StringTokenizer st = new StringTokenizer(p); + while (st.hasMoreTokens()) { + String sourceName = st.nextToken(); +- // Use context class loader, falling back to Class.forName +- // if and only if this fails... ++ // make sure we have access to restricted packages ++ boolean internal = false; ++ if (System.getSecurityManager() != null) { ++ if (sourceName != null && sourceName.startsWith(DEFAULT_PACKAGE)) { ++ internal = true; ++ } ++ } + Class sourceClass = null; +- if (classLoader != null) { ++ if (classLoader != null && !internal) { + sourceClass = classLoader.loadClass(sourceName); + } else { + sourceClass = Class.forName(sourceName); +--- jaxp/src/org/xml/sax/helpers/NewInstance.java 2012-08-10 09:39:17.000000000 -0700 ++++ jaxp/src/org/xml/sax/helpers/NewInstance.java 2013-05-05 09:39:21.000000000 -0700 +@@ -54,9 +54,10 @@ + * including versions of Java 2.</p> + * + * @author Edwin Goei, David Brownell ++ * @version 2.0.1 (sax2r2) + */ + class NewInstance { +- ++ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal"; + /** + * Creates a new instance of the specified class name + * +@@ -66,8 +67,16 @@ + throws ClassNotFoundException, IllegalAccessException, + InstantiationException + { ++ // make sure we have access to restricted packages ++ boolean internal = false; ++ if (System.getSecurityManager() != null) { ++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) { ++ internal = true; ++ } ++ } ++ + Class driverClass; +- if (classLoader == null) { ++ if (classLoader == null || internal) { + driverClass = Class.forName(className); + } else { + driverClass = classLoader.loadClass(className); +@@ -75,29 +84,4 @@ + return driverClass.newInstance(); + } + +- /** +- * Figure out which ClassLoader to use. For JDK 1.2 and later use +- * the context ClassLoader. +- */ +- static ClassLoader getClassLoader () +- { +- Method m = null; +- +- try { +- m = Thread.class.getMethod("getContextClassLoader", (Class[]) null); +- } catch (NoSuchMethodException e) { +- // Assume that we are running JDK 1.1, use the current ClassLoader +- return NewInstance.class.getClassLoader(); +- } +- +- try { +- return (ClassLoader) m.invoke(Thread.currentThread(), (Object[]) null); +- } catch (IllegalAccessException e) { +- // assert(false) +- throw new UnknownError(e.getMessage()); +- } catch (InvocationTargetException e) { +- // assert(e.getTargetException() instanceof SecurityException) +- throw new UnknownError(e.getMessage()); +- } +- } + } +--- jaxp/src/org/xml/sax/helpers/ParserAdapter.java 2012-08-10 09:39:17.000000000 -0700 ++++ jaxp/src/org/xml/sax/helpers/ParserAdapter.java 2013-05-05 09:39:21.000000000 -0700 +@@ -74,13 +74,14 @@ + * + * @since SAX 2.0 + * @author David Megginson ++ * @version 2.0.1 (sax2r2) + * @see org.xml.sax.helpers.XMLReaderAdapter + * @see org.xml.sax.XMLReader + * @see org.xml.sax.Parser + */ + public class ParserAdapter implements XMLReader, DocumentHandler + { +- ++ private static SecuritySupport ss = new SecuritySupport(); + + //////////////////////////////////////////////////////////////////// + // Constructors. +@@ -102,7 +103,7 @@ + { + super(); + +- String driver = System.getProperty("org.xml.sax.parser"); ++ String driver = ss.getSystemProperty("org.xml.sax.parser"); + + try { + setup(ParserFactory.makeParser()); +--- jaxp/src/org/xml/sax/helpers/ParserFactory.java 2012-08-10 09:39:17.000000000 -0700 ++++ jaxp/src/org/xml/sax/helpers/ParserFactory.java 2013-05-05 09:39:21.000000000 -0700 +@@ -30,12 +30,6 @@ + + package org.xml.sax.helpers; + +-import java.lang.ClassNotFoundException; +-import java.lang.IllegalAccessException; +-import java.lang.InstantiationException; +-import java.lang.SecurityException; +-import java.lang.ClassCastException; +- + import org.xml.sax.Parser; + + +@@ -69,9 +63,10 @@ + * interface. + * @since SAX 1.0 + * @author David Megginson ++ * @version 2.0.1 (sax2r2) + */ + public class ParserFactory { +- ++ private static SecuritySupport ss = new SecuritySupport(); + + /** + * Private null constructor. +@@ -109,7 +104,7 @@ + NullPointerException, + ClassCastException + { +- String className = System.getProperty("org.xml.sax.parser"); ++ String className = ss.getSystemProperty("org.xml.sax.parser"); + if (className == null) { + throw new NullPointerException("No value for sax.parser property"); + } else { +@@ -146,7 +141,7 @@ + ClassCastException + { + return (Parser) NewInstance.newInstance ( +- NewInstance.getClassLoader (), className); ++ ss.getContextClassLoader(), className); + } + + } +--- jaxp/src/org/xml/sax/helpers/SecuritySupport.java 1969-12-31 16:00:00.000000000 -0800 ++++ jaxp/src/org/xml/sax/helpers/SecuritySupport.java 2013-05-05 09:39:21.000000000 -0700 +@@ -0,0 +1,108 @@ ++/* ++ * Copyright (c) 2004, 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 ++ * 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 org.xml.sax.helpers; ++ ++import java.io.*; ++import java.security.*; ++ ++/** ++ * This class is duplicated for each JAXP subpackage so keep it in sync. ++ * It is package private and therefore is not exposed as part of the JAXP ++ * API. ++ * ++ * Security related methods that only work on J2SE 1.2 and newer. ++ */ ++class SecuritySupport { ++ ++ ++ ClassLoader getContextClassLoader() throws SecurityException{ ++ return (ClassLoader) ++ AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ ClassLoader cl = null; ++ //try { ++ cl = Thread.currentThread().getContextClassLoader(); ++ //} catch (SecurityException ex) { } ++ ++ if (cl == null) ++ cl = ClassLoader.getSystemClassLoader(); ++ ++ return cl; ++ } ++ }); ++ } ++ ++ String getSystemProperty(final String propName) { ++ return (String) ++ AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ return System.getProperty(propName); ++ } ++ }); ++ } ++ ++ FileInputStream getFileInputStream(final File file) ++ throws FileNotFoundException ++ { ++ try { ++ return (FileInputStream) ++ AccessController.doPrivileged(new PrivilegedExceptionAction() { ++ public Object run() throws FileNotFoundException { ++ return new FileInputStream(file); ++ } ++ }); ++ } catch (PrivilegedActionException e) { ++ throw (FileNotFoundException)e.getException(); ++ } ++ } ++ ++ InputStream getResourceAsStream(final ClassLoader cl, ++ final String name) ++ { ++ return (InputStream) ++ AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ InputStream ris; ++ if (cl == null) { ++ ris = Object.class.getResourceAsStream(name); ++ } else { ++ ris = cl.getResourceAsStream(name); ++ } ++ return ris; ++ } ++ }); ++ } ++ ++ boolean doesFileExist(final File f) { ++ return ((Boolean) ++ AccessController.doPrivileged(new PrivilegedAction() { ++ public Object run() { ++ return new Boolean(f.exists()); ++ } ++ })).booleanValue(); ++ } ++ ++} +--- jaxp/src/org/xml/sax/helpers/XMLReaderFactory.java 2012-08-10 09:39:17.000000000 -0700 ++++ jaxp/src/org/xml/sax/helpers/XMLReaderFactory.java 2013-05-05 09:39:21.000000000 -0700 +@@ -34,8 +34,6 @@ + import java.io.BufferedReader; + import java.io.InputStream; + import java.io.InputStreamReader; +-import java.security.AccessController; +-import java.security.PrivilegedAction; + import org.xml.sax.XMLReader; + import org.xml.sax.SAXException; + +@@ -85,8 +83,8 @@ + } + + private static final String property = "org.xml.sax.driver"; ++ private static SecuritySupport ss = new SecuritySupport(); + +- private static String _clsFromJar = null; + private static boolean _jarread = false; + /** + * Attempt to create an XMLReader from system defaults. +@@ -134,43 +132,45 @@ + throws SAXException + { + String className = null; +- ClassLoader loader = NewInstance.getClassLoader (); ++ ClassLoader cl = ss.getContextClassLoader(); + + // 1. try the JVM-instance-wide system property +- try { className = System.getProperty (property); } +- catch (RuntimeException e) { /* normally fails for applets */ } ++ try { ++ className = ss.getSystemProperty(property); ++ } ++ catch (RuntimeException e) { /* continue searching */ } + + // 2. if that fails, try META-INF/services/ + if (className == null) { + if (!_jarread) { +- final ClassLoader loader1 = loader; + _jarread = true; +- _clsFromJar = (String) +- AccessController.doPrivileged(new PrivilegedAction() { +- public Object run() { +- String clsName = null; +- try { +- String service = "META-INF/services/" + property; +- InputStream in; +- BufferedReader reader; +- if (loader1 == null) +- in = ClassLoader.getSystemResourceAsStream (service); +- else +- in = loader1.getResourceAsStream (service); +- +- if (in != null) { +- reader = new BufferedReader ( +- new InputStreamReader (in, "UTF8")); +- clsName = reader.readLine (); +- in.close (); +- } +- } catch (Exception e) { ++ String service = "META-INF/services/" + property; ++ InputStream in; ++ BufferedReader reader; ++ ++ try { ++ if (cl != null) { ++ in = ss.getResourceAsStream(cl, service); ++ ++ // If no provider found then try the current ClassLoader ++ if (in == null) { ++ cl = null; ++ in = ss.getResourceAsStream(cl, service); + } +- return clsName; ++ } else { ++ // No Context ClassLoader, try the current ClassLoader ++ in = ss.getResourceAsStream(cl, service); ++ } ++ ++ if (in != null) { ++ reader = new BufferedReader ( ++ new InputStreamReader (in, "UTF8")); ++ className = reader.readLine (); ++ in.close (); + } +- }); ++ } catch (Exception e) { ++ } + } +- className = _clsFromJar; + } + + // 3. Distro-specific fallback +@@ -187,7 +187,7 @@ + + // do we know the XMLReader implementation class yet? + if (className != null) +- return loadClass (loader, className); ++ return loadClass (cl, className); + + // 4. panic -- adapt any SAX1 parser + try { +@@ -217,7 +217,7 @@ + public static XMLReader createXMLReader (String className) + throws SAXException + { +- return loadClass (NewInstance.getClassLoader (), className); ++ return loadClass (ss.getContextClassLoader(), className); + } + + private static XMLReader loadClass (ClassLoader loader, String className) --- jaxws/.hgtags 2012-08-10 09:46:32.000000000 -0700 -+++ jaxws/.hgtags 2013-03-09 08:44:43.000000000 -0800 ++++ jaxws/.hgtags 2013-05-05 09:39:34.000000000 -0700 @@ -123,6 +123,7 @@ 05469dd4c3662c454f8a019e492543add60795cc jdk7-b146 c01bfd68d0528bc88348813c4d75d7f5c62bc4e2 jdk7u1-b01 @@ -7360,7 +14877,7 @@ 4c24f7019ce939a452154a83151294ad7da66a9d jdk7u1-b02 272778f529d11081f548f37fcd6a7aec0b11a8dd jdk7u1-b03 48b06a6e6f46e5bcd610f4bed57cd5067cf31f8c jdk7u1-b04 -@@ -197,5 +198,46 @@ +@@ -197,5 +198,69 @@ 55dcda93e8c8b5c3170def946de35dd0407eab59 jdk7u6-b21 0fec2efe2452aed9736da39add4c7f71be561838 jdk7u6-b22 afb6d773328fa76cea65dc024a448cd931d111f2 jdk7u6-b23 @@ -7368,6 +14885,7 @@ -c025e953f655b375f27f8f94493ceeb43ef1d979 jdk7u8-b02 +b8b85e62d2c5347df8cf2e825e51e3de178508ea jdk7u6-b24 +fb03d08f73e98f0dd67cb81632eb9b685de49b7e jdk7u6-b30 ++739ffa9dffad4cc2febe66ca1c2d86496e80741a jdk7u6-b31 +739ffa9dffad4cc2febe66ca1c2d86496e80741a jdk7u7-b10 +e9a5a78329d0518efafd9f6f6149f359a7db4e2e jdk7u7-b30 +ed6262e7bb0db4cd116c31f3c88cbd7c0288de40 jdk7u7-b11 @@ -7381,6 +14899,8 @@ +45cf55bc1732e8495425dceb385740c6852c0fc8 jdk7u9-b02 +66a2e01550a9e84e907a7f7b96e64ee90a4ec0e4 jdk7u9-b04 +f3e42e044584b1b21de29eef1b82974d273c77dc jdk7u9-b05 ++5e5703e9d18d66d7388057040d3c36e978488dc5 jdk7u9-b31 ++987bb65e7b73ad94fb0edecce80d84ee5f8bda6e jdk7u9-b32 +dd8e4098681aa581d0398ad7d2d1e2547517c7e5 jdk7u10-b10 +1784290b63bcf021334b0accdb3868fdc4ca854e jdk7u10-b11 +fde9a060a04d9f9b54f36d645e91ec9a2b40cb81 jdk7u10-b12 @@ -7391,8 +14911,11 @@ +e63292c59ed8481864302cc3f53b498cbdea3470 jdk7u10-b17 +6a372e9b4ae978cdaf0b95277db31827794e2c1f jdk7u10-b18 +df3e4c85e26c651d098cddd546916a625fd777cd jdk7u10-b30 ++29d469fac9106ce7c2f8656ee125e792908aca98 jdk7u10-b31 +846f4e01218ffe37b2dbceaf89c222c0aea43180 jdk7u11-b20 +1f06394ca182cb392e472ba7b63b28a40725629d jdk7u11-b21 ++ac21be8046e06e5460d041b7e4f8140d635887fb jdk7u11-b32 ++41abf18b24e9483de775bf938f8d5e673c08209d jdk7u11-b33 +ed609545e38c2e499437292c1541e4d1c2b8b992 jdk7u11-b03 +4e1dd1192649575e80d893bcab411077b77c9a0c jdk7u11-b04 +0e1eefefc2d0c8f0d0cd9e7fb7d78ae026aa8ba0 jdk7u11-b05 @@ -7406,11 +14929,713 @@ +abcaebcead605f89cd0919add20d8ac16637ddc2 jdk7u15-b01 +62f9e7f5eb644fedd93dd93bd36bcf817a8d9c8a jdk7u15-b02 +ed9f270009f2b8606e9e0f58aeedbed36e13963e jdk7u15-b30 ++297240e69d8ffcf85fc68b12af6523f7ea16397e jdk7u15-b31 ++4fda3b01c75ecd80dba505f6152c21f3e1db5cce jdk7u15-b33 +eaf9b299067069826a5acdc88e15402e5a22cb5d jdk7u15-b03 +c7ea4220ad61b125bd7c4b7f112dd9ff18e9be33 jdk7u15-b32 +b8496d1dc0058341da1790bc2e7d2dbba6d4f90e jdk7u17-b01 ++defde3ef03605b1660a246ea85d2e810e3fe4f6e jdk7u17-b02 ++ae4272d61bc738e2d9265a68aefdc20ec648f22c jdk7u17-b30 ++52c4fbd4f58f336dfdf4f680b7e7d7361ec0c3f8 jdk7u17-b31 ++e07c518282bad3b315d8064da5fad222a5e3f7ed jdk7u21-b01 ++0c1365d2fefb652aea34775749d68774c171ba1a jdk7u21-b02 ++017171d6bc217f26e230503dd38bcf4473f339d2 jdk7u21-b03 ++68e8364feffcc98b57d59675994dcb12e170ddf0 jdk7u21-b04 ++8c43fd5d8cfef4d97bddc4fee7747f23a3c2bffa jdk7u21-b05 ++dab51e98ee7d0f3a30b9e18b0d3591b944346868 jdk7u21-b06 ++4a9533495068359d574da1060bc5a8fa6946cbc6 jdk7u21-b07 ++ab11cef1dfaaec32281dc3d24a366f6691b51b7a jdk7u21-b08 ++53c87e8a2ac494b57f6220bd7e25c7380aa7f418 jdk7u21-b09 ++29c03ced9215a0bb63a4527dc5858b486cc4099d jdk7u21-b10 ++fe6f5b57b9e67a7c6f52a5f926ac17e5c337d4a4 jdk7u21-b11 ++12183763c6205c5cfe27924ccc4ca5480106c3b4 jdk7u21-b30 +--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java 2012-08-10 09:48:50.000000000 -0700 ++++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java 2013-05-05 09:39:26.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -235,7 +235,7 @@ + String pkg = nav.getPackageName(ci.getClazz()); + if(!registries.containsKey(pkg)) { + // insert the package's object factory +- C c = nav.findClass(pkg + ".ObjectFactory",ci.getClazz()); ++ C c = loadObjectFactory(ci, pkg); + if(c!=null) + addRegistry(c,(Locatable)p); + } +@@ -264,6 +264,15 @@ + return r; + } + ++ private C loadObjectFactory(ClassInfoImpl<T, C, F, M> ci, String pkg) { ++ try { ++ return nav.findClass(pkg + ".ObjectFactory", ci.getClazz()); ++ } catch (SecurityException ignored) { ++ // treat SecurityException in same way as ClassNotFoundException in this case ++ return null; ++ } ++ } ++ + /** + * Checks the uniqueness of the type name. + */ +--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/MemoryData.java 2012-08-10 09:50:08.000000000 -0700 ++++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/MemoryData.java 2013-05-05 09:39:26.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,6 +28,7 @@ + import java.nio.ByteBuffer; + import java.io.File; + import java.io.IOException; ++import java.util.logging.Level; + import java.util.logging.Logger; + + /** +@@ -50,41 +51,45 @@ + } + + // size of the chunk given by the parser ++ @Override + public int size() { + return len; + } + ++ @Override + public byte[] read() { + return data; + } + ++ @Override + public long writeTo(DataFile file) { + return file.writeTo(data, 0, len); + } + + /** +- * + * @param dataHead + * @param buf + * @return + */ ++ @Override + public Data createNext(DataHead dataHead, ByteBuffer buf) { + if (!config.isOnlyMemory() && dataHead.inMemory >= config.memoryThreshold) { + try { + String prefix = config.getTempFilePrefix(); + String suffix = config.getTempFileSuffix(); +- File dir = config.getTempDir(); +- File tempFile = (dir == null) +- ? File.createTempFile(prefix, suffix) +- : File.createTempFile(prefix, suffix, dir); +- LOGGER.fine("Created temp file = "+tempFile); ++ File tempFile = TempFiles.createTempFile(prefix, suffix, config.getTempDir()); ++ // delete the temp file when VM exits as a last resort for file clean up ++ tempFile.deleteOnExit(); ++ if (LOGGER.isLoggable(Level.FINE)) { ++ LOGGER.log(Level.FINE, "Created temp file = {0}", tempFile); ++ } + dataHead.dataFile = new DataFile(tempFile); +- } catch(IOException ioe) { ++ } catch (IOException ioe) { + throw new MIMEParsingException(ioe); + } + + if (dataHead.head != null) { +- for(Chunk c=dataHead.head; c != null; c=c.next) { ++ for (Chunk c = dataHead.head; c != null; c = c.next) { + long pointer = c.data.writeTo(dataHead.dataFile); + c.data = new FileData(dataHead.dataFile, pointer, len); + } +@@ -94,4 +99,5 @@ + return new MemoryData(buf, config); + } + } ++ + } +--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/TempFiles.java 1969-12-31 16:00:00.000000000 -0800 ++++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/TempFiles.java 2013-05-05 09:39:26.000000000 -0700 +@@ -0,0 +1,144 @@ ++/* ++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * 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 com.sun.xml.internal.org.jvnet.mimepull; ++ ++import java.io.File; ++import java.io.IOException; ++import java.lang.reflect.Array; ++import java.lang.reflect.InvocationTargetException; ++import java.lang.reflect.Method; ++import java.util.logging.Level; ++import java.util.logging.Logger; ++ ++/** ++ * Helper utility to support jdk <= jdk1.6. After jdk1.6 EOL reflection can be removed and API can be used directly. ++ */ ++class TempFiles { ++ ++ private static final Logger LOGGER = Logger.getLogger(TempFiles.class.getName()); ++ ++ private static final Class<?> CLASS_FILES; ++ private static final Class<?> CLASS_PATH; ++ private static final Class<?> CLASS_FILE_ATTRIBUTE; ++ private static final Class<?> CLASS_FILE_ATTRIBUTES; ++ private static final Method METHOD_FILE_TO_PATH; ++ private static final Method METHOD_FILES_CREATE_TEMP_FILE; ++ private static final Method METHOD_FILES_CREATE_TEMP_FILE_WITHPATH; ++ ++ private static final Method METHOD_PATH_TO_FILE; ++ ++ private static boolean useJdk6API; ++ ++ static { ++ useJdk6API = isJdk6(); ++ ++ CLASS_FILES = safeGetClass("java.nio.file.Files"); ++ CLASS_PATH = safeGetClass("java.nio.file.Path"); ++ CLASS_FILE_ATTRIBUTE = safeGetClass("java.nio.file.attribute.FileAttribute"); ++ CLASS_FILE_ATTRIBUTES = safeGetClass("[Ljava.nio.file.attribute.FileAttribute;"); ++ METHOD_FILE_TO_PATH = safeGetMethod(File.class, "toPath"); ++ METHOD_FILES_CREATE_TEMP_FILE = safeGetMethod(CLASS_FILES, "createTempFile", String.class, String.class, CLASS_FILE_ATTRIBUTES); ++ METHOD_FILES_CREATE_TEMP_FILE_WITHPATH = safeGetMethod(CLASS_FILES, "createTempFile", CLASS_PATH, String.class, String.class, CLASS_FILE_ATTRIBUTES); ++ METHOD_PATH_TO_FILE = safeGetMethod(CLASS_PATH, "toFile"); ++ } ++ ++ private static boolean isJdk6() { ++ String javaVersion = System.getProperty("java.version"); ++ LOGGER.log(Level.FINEST, "Detected java version = {0}", javaVersion); ++ return javaVersion.startsWith("1.6."); ++ } ++ ++ private static Class<?> safeGetClass(String className) { ++ // it is jdk 6 or something failed already before ++ if (useJdk6API) return null; ++ try { ++ return Class.forName(className); ++ } catch (ClassNotFoundException e) { ++ LOGGER.log(Level.SEVERE, "Exception cought", e); ++ LOGGER.log(Level.WARNING, "Class {0} not found. Temp files will be created using old java.io API.", className); ++ useJdk6API = true; ++ return null; ++ } ++ } ++ ++ private static Method safeGetMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) { ++ // it is jdk 6 or something failed already before ++ if (useJdk6API) return null; ++ try { ++ return clazz.getMethod(methodName, parameterTypes); ++ } catch (NoSuchMethodException e) { ++ LOGGER.log(Level.SEVERE, "Exception cought", e); ++ LOGGER.log(Level.WARNING, "Method {0} not found. Temp files will be created using old java.io API.", methodName); ++ useJdk6API = true; ++ return null; ++ } ++ } ++ ++ ++ static Object toPath(File f) throws InvocationTargetException, IllegalAccessException { ++ return METHOD_FILE_TO_PATH.invoke(f); ++ } ++ ++ static File toFile(Object path) throws InvocationTargetException, IllegalAccessException { ++ return (File) METHOD_PATH_TO_FILE.invoke(path); ++ } ++ ++ static File createTempFile(String prefix, String suffix, File dir) throws IOException { ++ ++ if (useJdk6API) { ++ LOGGER.log(Level.FINEST, "Jdk6 detected, temp file (prefix:{0}, suffix:{1}) being created using old java.io API.", new Object[]{prefix, suffix}); ++ return File.createTempFile(prefix, suffix, dir); ++ ++ } else { ++ ++ try { ++ if (dir != null) { ++ Object path = toPath(dir); ++ LOGGER.log(Level.FINEST, "Temp file (path: {0}, prefix:{1}, suffix:{2}) being created using NIO API.", new Object[]{dir.getAbsolutePath(), prefix, suffix}); ++ return toFile(METHOD_FILES_CREATE_TEMP_FILE_WITHPATH.invoke(null, path, prefix, suffix, Array.newInstance(CLASS_FILE_ATTRIBUTE, 0))); ++ } else { ++ LOGGER.log(Level.FINEST, "Temp file (prefix:{0}, suffix:{1}) being created using NIO API.", new Object[]{prefix, suffix}); ++ return toFile(METHOD_FILES_CREATE_TEMP_FILE.invoke(null, prefix, suffix, Array.newInstance(CLASS_FILE_ATTRIBUTE, 0))); ++ } ++ ++ } catch (IllegalAccessException e) { ++ LOGGER.log(Level.SEVERE, "Exception caught", e); ++ LOGGER.log(Level.WARNING, "Error invoking java.nio API, temp file (path: {0}, prefix:{1}, suffix:{2}) being created using old java.io API.", ++ new Object[]{dir != null ? dir.getAbsolutePath() : null, prefix, suffix}); ++ return File.createTempFile(prefix, suffix, dir); ++ ++ } catch (InvocationTargetException e) { ++ LOGGER.log(Level.SEVERE, "Exception caught", e); ++ LOGGER.log(Level.WARNING, "Error invoking java.nio API, temp file (path: {0}, prefix:{1}, suffix:{2}) being created using old java.io API.", ++ new Object[]{dir != null ? dir.getAbsolutePath() : null, prefix, suffix}); ++ return File.createTempFile(prefix, suffix, dir); ++ } ++ } ++ ++ } ++ ++ ++} +--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/WSServiceDelegate.java 2012-08-10 09:50:57.000000000 -0700 ++++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/WSServiceDelegate.java 2013-05-05 09:39:27.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -22,7 +22,6 @@ + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +- + package com.sun.xml.internal.ws.client; + + import com.sun.istack.internal.NotNull; +@@ -30,13 +29,11 @@ + import com.sun.xml.internal.ws.Closeable; + import com.sun.xml.internal.ws.api.BindingID; + import com.sun.xml.internal.ws.api.EndpointAddress; +-import com.sun.xml.internal.ws.api.WSBinding; + import com.sun.xml.internal.ws.api.WSService; + import com.sun.xml.internal.ws.api.addressing.WSEndpointReference; + import com.sun.xml.internal.ws.api.client.ServiceInterceptor; + import com.sun.xml.internal.ws.api.client.ServiceInterceptorFactory; +-import com.sun.xml.internal.ws.api.model.SEIModel; +-import com.sun.xml.internal.ws.api.pipe.*; ++import com.sun.xml.internal.ws.api.pipe.Stubs; + import com.sun.xml.internal.ws.api.server.Container; + import com.sun.xml.internal.ws.api.server.ContainerResolver; + import com.sun.xml.internal.ws.api.wsdl.parser.WSDLParserExtension; +@@ -45,8 +42,8 @@ + import com.sun.xml.internal.ws.client.HandlerConfigurator.AnnotationConfigurator; + import com.sun.xml.internal.ws.client.HandlerConfigurator.HandlerResolverImpl; + import com.sun.xml.internal.ws.client.sei.SEIStub; +-import com.sun.xml.internal.ws.developer.WSBindingProvider; + import com.sun.xml.internal.ws.developer.UsesJAXBContextFeature; ++import com.sun.xml.internal.ws.developer.WSBindingProvider; + import com.sun.xml.internal.ws.model.AbstractSEIModelImpl; + import com.sun.xml.internal.ws.model.RuntimeModeler; + import com.sun.xml.internal.ws.model.SOAPSEIModel; +@@ -59,7 +56,6 @@ + import com.sun.xml.internal.ws.util.JAXWSUtils; + import com.sun.xml.internal.ws.util.ServiceConfigurationError; + import com.sun.xml.internal.ws.util.ServiceFinder; +-import static com.sun.xml.internal.ws.util.xml.XmlUtil.createDefaultCatalogResolver; + import com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser; + import org.xml.sax.SAXException; + +@@ -74,16 +70,17 @@ + import javax.xml.ws.handler.HandlerResolver; + import javax.xml.ws.soap.AddressingFeature; + import java.io.IOException; ++import java.lang.RuntimePermission; + import java.lang.reflect.Proxy; + import java.net.MalformedURLException; + import java.net.URL; +-import java.security.AccessController; +-import java.security.PrivilegedAction; ++import java.security.*; + import java.util.*; + import java.util.concurrent.Executor; +-import java.util.concurrent.Executors; + import java.util.concurrent.ThreadFactory; + ++import static com.sun.xml.internal.ws.util.xml.XmlUtil.createDefaultCatalogResolver; ++ + /** + * <code>Service</code> objects provide the client view of a Web service. + * +@@ -578,7 +575,7 @@ + } + } + +- private <T> T createEndpointIFBaseProxy(@Nullable WSEndpointReference epr,QName portName, Class<T> portInterface, ++ private <T> T createEndpointIFBaseProxy(@Nullable WSEndpointReference epr,QName portName, final Class<T> portInterface, + WebServiceFeature[] webServiceFeatures, SEIPortInfo eif) { + //fail if service doesnt have WSDL + if (wsdlService == null) +@@ -592,14 +589,37 @@ + BindingImpl binding = eif.createBinding(webServiceFeatures,portInterface); + SEIStub pis = new SEIStub(eif, binding, eif.model, epr); + +- T proxy = portInterface.cast(Proxy.newProxyInstance(portInterface.getClassLoader(), +- new Class[]{portInterface, WSBindingProvider.class, Closeable.class}, pis)); ++ T proxy = createProxy(portInterface, pis); ++ + if (serviceInterceptor != null) { + serviceInterceptor.postCreateProxy((WSBindingProvider)proxy, portInterface); + } + return proxy; + } + ++ private <T> T createProxy(final Class<T> portInterface, final SEIStub pis) { ++ ++ // accessClassInPackage privilege needs to be granted ... ++ RuntimePermission perm = new RuntimePermission("accessClassInPackage.com.sun." + "xml.internal.*"); ++ PermissionCollection perms = perm.newPermissionCollection(); ++ perms.add(perm); ++ ++ return AccessController.doPrivileged( ++ new PrivilegedAction<T>() { ++ @Override ++ public T run() { ++ Object proxy = Proxy.newProxyInstance(portInterface.getClassLoader(), ++ new Class[]{portInterface, WSBindingProvider.class, Closeable.class}, pis); ++ return portInterface.cast(proxy); ++ } ++ }, ++ new AccessControlContext( ++ new ProtectionDomain[]{ ++ new ProtectionDomain(null, perms) ++ }) ++ ); ++ } ++ + /** + * Lists up the port names in WSDL. For error diagnostics. + */ +--- jaxws/src/share/jaxws_classes/javax/xml/soap/FactoryFinder.java 2012-08-10 09:51:59.000000000 -0700 ++++ jaxws/src/share/jaxws_classes/javax/xml/soap/FactoryFinder.java 2013-05-05 09:39:28.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -43,20 +43,12 @@ + throws SOAPException + { + try { +- Class spiClass; +- if (classLoader == null) { +- spiClass = Class.forName(className); +- } else { +- spiClass = classLoader.loadClass(className); +- } ++ Class spiClass = safeLoadClass(className, classLoader); + return spiClass.newInstance(); + } catch (ClassNotFoundException x) { +- throw new SOAPException( +- "Provider " + className + " not found", x); ++ throw new SOAPException("Provider " + className + " not found", x); + } catch (Exception x) { +- throw new SOAPException( +- "Provider " + className + " could not be instantiated: " + x, +- x); ++ throw new SOAPException("Provider " + className + " could not be instantiated: " + x, x); + } + } + +@@ -73,11 +65,65 @@ + * a system property + * @exception SOAPException if there is a SOAP error + */ +- static Object find(String factId) ++ static Object find(String factoryId) ++ throws SOAPException ++ { ++ return find(factoryId, null, false); ++ } ++ ++ /** ++ * Finds the implementation <code>Class</code> object for the given ++ * factory name, or if that fails, finds the <code>Class</code> object ++ * for the given fallback class name. The arguments supplied must be ++ * used in order. If using the first argument is successful, the second ++ * one will not be used. ++ * <P> ++ * This method is package private so that this code can be shared. ++ * ++ * @return the <code>Class</code> object of the specified message factory; ++ * may be <code>null</code> ++ * ++ * @param factoryId the name of the factory to find, which is ++ * a system property ++ * @param fallbackClassName the implementation class name, which is ++ * to be used only if nothing else ++ * is found; <code>null</code> to indicate that ++ * there is no fallback class name ++ * @exception SOAPException if there is a SOAP error ++ */ ++ static Object find(String factoryId, String fallbackClassName) + throws SOAPException + { +- final ClassLoader classLoader; +- final String factoryId = factId; ++ return find(factoryId, fallbackClassName, true); ++ } ++ ++ /** ++ * Finds the implementation <code>Class</code> object for the given ++ * factory name, or if that fails, finds the <code>Class</code> object ++ * for the given default class name, but only if <code>tryFallback</code> ++ * is <code>true</code>. The arguments supplied must be used in order ++ * If using the first argument is successful, the second one will not ++ * be used. Note the default class name may be needed even if fallback ++ * is not to be attempted, so certain error conditions can be handled. ++ * <P> ++ * This method is package private so that this code can be shared. ++ * ++ * @return the <code>Class</code> object of the specified message factory; ++ * may not be <code>null</code> ++ * ++ * @param factoryId the name of the factory to find, which is ++ * a system property ++ * @param defaultClassName the implementation class name, which is ++ * to be used only if nothing else ++ * is found; <code>null</code> to indicate ++ * that there is no default class name ++ * @param tryFallback whether to try the default class as a ++ * fallback ++ * @exception SOAPException if there is a SOAP error ++ */ ++ static Object find(String factoryId, String defaultClassName, ++ boolean tryFallback) throws SOAPException { ++ ClassLoader classLoader; + try { + classLoader = Thread.currentThread().getContextClassLoader(); + } catch (Exception x) { +@@ -99,7 +145,7 @@ + String javah=System.getProperty( "java.home" ); + String configFile = javah + File.separator + + "lib" + File.separator + "jaxm.properties"; +- final File f=new File( configFile ); ++ File f=new File( configFile ); + if( f.exists()) { + Properties props=new Properties(); + props.load( new FileInputStream(f)); +@@ -134,49 +180,56 @@ + } catch( Exception ex ) { + } + +- return null; ++ // If not found and fallback should not be tried, return a null result. ++ if (!tryFallback) ++ return null; ++ ++ // We didn't find the class through the usual means so try the default ++ // (built in) factory if specified. ++ if (defaultClassName == null) { ++ throw new SOAPException( ++ "Provider for " + factoryId + " cannot be found", null); ++ } ++ return newInstance(defaultClassName, classLoader); + } + + /** +- * Finds the implementation <code>Class</code> object for the given +- * factory name, or if that fails, finds the <code>Class</code> object +- * for the given fallback class name. The arguments supplied must be +- * used in order. If using the first argument is successful, the second +- * one will not be used. +- * <P> +- * This method is package private so that this code can be shared. +- * +- * @return the <code>Class</code> object of the specified message factory; +- * may not be <code>null</code> +- * +- * @param factoryId the name of the factory to find, which is +- * a system property +- * @param fallbackClassName the implementation class name, which is +- * to be used only if nothing else +- * is found; <code>null</code> to indicate that +- * there is no fallback class name +- * @exception SOAPException if there is a SOAP error ++ * Loads the class, provided that the calling thread has an access to the ++ * class being loaded. If this is the specified default factory class and it ++ * is restricted by package.access we get a SecurityException and can do a ++ * Class.forName() on it so it will be loaded by the bootstrap class loader. + */ +- static Object find(String factoryId, String fallbackClassName) +- throws SOAPException +- { +- +- Object obj = find(factoryId); +- if (obj != null) +- return obj; ++ private static Class safeLoadClass(String className, ++ ClassLoader classLoader) ++ throws ClassNotFoundException { ++ try { ++ // make sure that the current thread has an access to the package of the given name. ++ SecurityManager s = System.getSecurityManager(); ++ if (s != null) { ++ int i = className.lastIndexOf('.'); ++ if (i != -1) { ++ s.checkPackageAccess(className.substring(0, i)); ++ } ++ } + +- ClassLoader classLoader; +- try { +- classLoader = Thread.currentThread().getContextClassLoader(); +- } catch (Exception x) { +- throw new SOAPException(x.toString(), x); +- } ++ if (classLoader == null) ++ return Class.forName(className); ++ else ++ return classLoader.loadClass(className); ++ } catch (SecurityException se) { ++ // (only) default implementation can be loaded ++ // using bootstrap class loader ... ++ if (isDefaultImplementation(className)) ++ return Class.forName(className); + +- if (fallbackClassName == null) { +- throw new SOAPException( +- "Provider for " + factoryId + " cannot be found", null); ++ throw se; + } ++ } + +- return newInstance(fallbackClassName, classLoader); ++ private static boolean isDefaultImplementation(String className) { ++ return MessageFactory.DEFAULT_MESSAGE_FACTORY.equals(className) || ++ SOAPFactory.DEFAULT_SOAP_FACTORY.equals(className) || ++ SOAPConnectionFactory.DEFAULT_SOAP_CONNECTION_FACTORY.equals(className) || ++ SAAJMetaFactory.DEFAULT_META_FACTORY_CLASS.equals(className); + } + } +--- jaxws/src/share/jaxws_classes/javax/xml/soap/MessageFactory.java 2012-08-10 09:51:59.000000000 -0700 ++++ jaxws/src/share/jaxws_classes/javax/xml/soap/MessageFactory.java 2013-05-05 09:39:28.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,7 +66,7 @@ + */ + public abstract class MessageFactory { + +- static private final String DEFAULT_MESSAGE_FACTORY ++ static final String DEFAULT_MESSAGE_FACTORY + = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"; + + static private final String MESSAGE_FACTORY_PROPERTY +@@ -99,11 +99,14 @@ + public static MessageFactory newInstance() + throws SOAPException { + try { +- MessageFactory factory = (MessageFactory) +- FactoryFinder.find(MESSAGE_FACTORY_PROPERTY); ++ MessageFactory factory = (MessageFactory) FactoryFinder.find( ++ MESSAGE_FACTORY_PROPERTY, ++ DEFAULT_MESSAGE_FACTORY, ++ false); + +- if (factory != null) ++ if (factory != null) { + return factory; ++ } + + return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); + } catch (Exception ex) { +--- jaxws/src/share/jaxws_classes/javax/xml/soap/SAAJMetaFactory.java 2012-08-10 09:51:59.000000000 -0700 ++++ jaxws/src/share/jaxws_classes/javax/xml/soap/SAAJMetaFactory.java 2013-05-05 09:39:28.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * 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 @@ + public abstract class SAAJMetaFactory { + static private final String META_FACTORY_CLASS_PROPERTY = + "javax.xml.soap.MetaFactory"; +- static private final String DEFAULT_META_FACTORY_CLASS = ++ static final String DEFAULT_META_FACTORY_CLASS = + "com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl"; + + /** +--- jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPConnectionFactory.java 2012-08-10 09:51:59.000000000 -0700 ++++ jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPConnectionFactory.java 2013-05-05 09:39:28.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,7 +38,7 @@ + * A constant representing the default value for a <code>SOAPConnection</code> + * object. The default is the point-to-point SOAP connection. + */ +- static private final String DEFAULT_SOAP_CONNECTION_FACTORY ++ static final String DEFAULT_SOAP_CONNECTION_FACTORY + = "com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnectionFactory"; + + /** +--- jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPFactory.java 2012-08-10 09:52:00.000000000 -0700 ++++ jaxws/src/share/jaxws_classes/javax/xml/soap/SOAPFactory.java 2013-05-05 09:39:28.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,12 @@ + "javax.xml.soap.SOAPFactory"; + + /** ++ * Class name of default <code>SOAPFactory</code> implementation. ++ */ ++ static final String DEFAULT_SOAP_FACTORY ++ = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl"; ++ ++ /** + * Creates a <code>SOAPElement</code> object from an existing DOM + * <code>Element</code>. If the DOM <code>Element</code> that is passed in + * as an argument is already a <code>SOAPElement</code> then this method +@@ -255,7 +261,7 @@ + throws SOAPException + { + try { +- SOAPFactory factory = (SOAPFactory) FactoryFinder.find(SOAP_FACTORY_PROPERTY); ++ SOAPFactory factory = (SOAPFactory) FactoryFinder.find(SOAP_FACTORY_PROPERTY, DEFAULT_SOAP_FACTORY, false); + if (factory != null) + return factory; + return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); --- jdk/.hgtags 2012-08-10 10:21:29.000000000 -0700 -+++ jdk/.hgtags 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/.hgtags 2013-05-05 09:39:08.000000000 -0700 @@ -123,6 +123,7 @@ 539e576793a8e64aaf160e0d6ab0b9723cd0bef0 jdk7-b146 69e973991866c948cf1808b06884ef2d28b64fcb jdk7u1-b01 @@ -7419,7 +15644,7 @@ 2baf612764d215e6f3a5b48533f74c6924ac98d7 jdk7u1-b02 a4781b6d9cfb6901452579adee17c9a17c1b584c jdk7u1-b03 b223ed9a5fdf8ce3af42adfa8815975811d70eae jdk7u1-b04 -@@ -197,5 +198,45 @@ +@@ -197,5 +198,65 @@ 243717d7fe9589148951ffb5551264af0e446314 jdk7u6-b21 d78f2b600d393f45d6ace8ca0f29ad677624a775 jdk7u6-b22 0ae89e53f5300da1961984a7d81c220c7cf717d7 jdk7u6-b23 @@ -7427,6 +15652,7 @@ -dd1e513c05b8b8c8402e9ecf9c0d5bdbebb1a089 jdk7u8-b02 +1c775da998735711853cfe1ae1d6baddc5f12a66 jdk7u6-b24 +4bd0528374971157afd6372890f4250e1cf712d9 jdk7u6-b30 ++8c2c5d63a17ee5aa85face026d6f60fb7d34aded jdk7u6-b31 +78e01a6ca8d30e8fc4eb297d297a098edfb3fec6 jdk7u7-b10 +9666d4e4bbf3f80614e246d5c15df86154544013 jdk7u7-b30 +94154c14973aee7c5ff4846af7bcb71fe7a82fa5 jdk7u7-b11 @@ -7440,6 +15666,8 @@ +901c290c9c8b495a2696f10a87523363239d001b jdk7u9-b02 +7302c386ca9c6cd20c27d0a2adb0b142f679d6b3 jdk7u9-b04 +ffad06d7009576c3098705e05452ebc309a59e56 jdk7u9-b05 ++3b1a395f1948c7063d342a0c3e26c8450c6e7acb jdk7u9-b31 ++77f7e5f13763fed11afb6e12840d78bd55c2d979 jdk7u9-b32 +c1efb11d7db509dafd7882811b2562ba593f6431 jdk7u10-b10 +0243e41000c6f76654725cac31ffdc95633c63e7 jdk7u10-b11 +c86a49dd4a0dca3a56f00429cfcffb2ad5f2a224 jdk7u10-b12 @@ -7450,8 +15678,11 @@ +a1c5bac982a6d4aa58f551cb46cde53f526aca48 jdk7u10-b17 +115d1e4365293846bbc911cf312886c471e37fbd jdk7u10-b18 +84218dff5e4c7bc00fd9266769c0d12bdde866f5 jdk7u10-b30 ++3515fd583ede49b125a0b5f72ac403b3984d199b jdk7u10-b31 +ecc14534318c80dc7612c8b1d328a67849c5b07f jdk7u11-b20 +d9969a953f693f5760b1d2759f11a2cb222e4f20 jdk7u11-b21 ++c7282a85c6bcc717b7099a03db028ecb77b41098 jdk7u11-b32 ++8fd5e105c6a288b01f8809a6c84a5a64a63f39be jdk7u11-b33 +84da14fbd3ac12a3c6734fa4b6a366cfde1426af jdk7u11-b03 +932ef74edbf984299a68c126c70bbe04ffbde9b5 jdk7u11-b04 +fb35fb91f6478f8076993bcc4112746bcd9a2985 jdk7u11-b05 @@ -7465,10 +15696,24 @@ +835448d525a10bb826f4f7ebe272fc410bdb0f5d jdk7u15-b01 +0443fe2d8023111b52f4c8db32e038f4a5a9f373 jdk7u15-b02 +70b0f967c0649c501fb14a27bb06daeccbff823a jdk7u15-b30 ++9f20468265071696b4d2ece286bc228a4d5a302a jdk7u15-b31 ++3ef25219292f57ea56ac0ef338ceadf5fd098bdf jdk7u15-b33 +87e45d30e24db726ea03b20d861f0a025e437641 jdk7u15-b03 +b5ae6fb92e71df1833221026efe50863593bf682 jdk7u17-b01 ++b130c8cfecfc552614047b3244d5d94439827fcd jdk7u17-b02 ++a474615061bf610105a426780a7ac4c95bd76456 jdk7u17-b30 ++1ad6f413e250bd2671b4908e232bd0d244c917a7 jdk7u17-b31 ++8261e56b7f91c7553e8485b206bdc9030a3546e4 jdk7u21-b01 ++af6be9d7aed7c323858932c908b049f4bcdb6a3e jdk7u21-b05 ++ffc1454e644a39265cd6d80ef4b4c12c5dbf35c9 jdk7u21-b06 ++b453d9be6b3f5496aa217ade7478d3b7fa32b13b jdk7u21-b07 ++de4e41c5c549136209a68154d847cf126e563b88 jdk7u21-b08 ++622aedcdda610a148a082558a0c25d8b3b735d07 jdk7u21-b09 ++f447c3bbf074439ece0ce9fea82c857f93817801 jdk7u21-b10 ++f9323b9d020ce8d313af2d2e2682e2b6cabcc40d jdk7u21-b11 ++08ed0bfc9668f04ce4e3803f16aad92f6e50f885 jdk7u21-b30 --- jdk/make/com/oracle/security/ucrypto/Makefile 2012-08-10 10:21:29.000000000 -0700 -+++ jdk/make/com/oracle/security/ucrypto/Makefile 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/com/oracle/security/ucrypto/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -198,9 +198,9 @@ # # Build ucrypto.jar. @@ -7482,7 +15727,7 @@ @$(java-vm-cleanup) --- jdk/make/com/sun/nio/Makefile 2012-08-10 10:21:31.000000000 -0700 -+++ jdk/make/com/sun/nio/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/com/sun/nio/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -31,11 +31,18 @@ include $(BUILDDIR)/common/Defs.gmk @@ -7504,7 +15749,7 @@ all build clean clobber:: $(SUBDIRS-loop) --- jdk/make/com/sun/nio/sctp/Makefile 2012-08-10 10:21:31.000000000 -0700 -+++ jdk/make/com/sun/nio/sctp/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/com/sun/nio/sctp/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -59,15 +59,11 @@ -I$(PLATFORM_SRC)/native/java/net \ -I$(CLASSHDRDIR)/../../../../java/java.nio/nio/CClassHeaders @@ -7524,7 +15769,7 @@ else # windows include $(BUILDDIR)/common/Classes.gmk --- jdk/make/com/sun/security/auth/module/Makefile 2012-08-10 10:21:32.000000000 -0700 -+++ jdk/make/com/sun/security/auth/module/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/com/sun/security/auth/module/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -67,7 +67,7 @@ include FILES_c_solaris.gmk endif # solaris @@ -7535,7 +15780,7 @@ include FILES_export_unix.gmk include FILES_c_unix.gmk --- jdk/make/com/sun/tools/attach/Exportedfiles.gmk 2012-08-10 10:21:32.000000000 -0700 -+++ jdk/make/com/sun/tools/attach/Exportedfiles.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/com/sun/tools/attach/Exportedfiles.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -43,7 +43,7 @@ sun/tools/attach/LinuxVirtualMachine.java endif @@ -7546,7 +15791,7 @@ sun/tools/attach/BsdVirtualMachine.java endif --- jdk/make/com/sun/tools/attach/FILES_c.gmk 2012-08-10 10:21:32.000000000 -0700 -+++ jdk/make/com/sun/tools/attach/FILES_c.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/com/sun/tools/attach/FILES_c.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -39,7 +39,7 @@ LinuxVirtualMachine.c endif @@ -7557,7 +15802,7 @@ BsdVirtualMachine.c endif --- jdk/make/com/sun/tools/attach/FILES_java.gmk 2012-08-10 10:21:32.000000000 -0700 -+++ jdk/make/com/sun/tools/attach/FILES_java.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/com/sun/tools/attach/FILES_java.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -43,7 +43,7 @@ sun/tools/attach/LinuxAttachProvider.java endif @@ -7568,7 +15813,7 @@ sun/tools/attach/BsdAttachProvider.java endif --- jdk/make/com/sun/tools/attach/Makefile 2012-08-10 10:21:32.000000000 -0700 -+++ jdk/make/com/sun/tools/attach/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/com/sun/tools/attach/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -38,7 +38,7 @@ ifeq ($(PLATFORM), linux) FILES_m = mapfile-linux @@ -7588,7 +15833,7 @@ else vpath %.c $(PLATFORM_SRC)/native/sun/tools/attach --- jdk/make/common/Defs-bsd.gmk 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/make/common/Defs-bsd.gmk 2013-03-09 08:44:57.000000000 -0800 ++++ jdk/make/common/Defs-bsd.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -0,0 +1,490 @@ +# +# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. @@ -7991,7 +16236,7 @@ +# the library itself should not. +# +VM_NAME = server -+JVMLIB = -Xlinker -rpath -Xlinker $(LIBDIR)/$(LIBARCH)/$(VM_NAME) -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm ++JVMLIB = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm +JAVALIB = -ljava $(JVMLIB) + +# @@ -8081,7 +16326,7 @@ + OTHER_CPPFLAGS += -I$(OPENWIN_HOME)/include +endif --- jdk/make/common/Defs-linux.gmk 2012-08-10 10:21:33.000000000 -0700 -+++ jdk/make/common/Defs-linux.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/Defs-linux.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -429,6 +429,7 @@ override LIBDL = -ldl override MOOT_PRIORITIES = true @@ -8091,7 +16336,7 @@ override OPENWIN_LIB = $(OPENWIN_HOME)/lib64 else --- jdk/make/common/Defs-solaris.gmk 2012-08-10 10:21:33.000000000 -0700 -+++ jdk/make/common/Defs-solaris.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/Defs-solaris.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -753,6 +753,9 @@ # Network Services library LIBNSL = -lnsl @@ -8103,7 +16348,7 @@ LIBSCF = -lscf --- jdk/make/common/Defs.gmk 2012-08-10 10:21:33.000000000 -0700 -+++ jdk/make/common/Defs.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/Defs.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -179,15 +179,15 @@ ifdef ALT_FREETYPE_LIB_PATH @@ -8145,7 +16390,15 @@ endif # PROGRAM LDLIBS_COMMON += $(EXTRA_LIBS) -@@ -399,7 +403,7 @@ +@@ -312,6 +316,7 @@ + + JDK_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2sdk-image + JRE_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2re-image ++JDK_SERVER_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2sdk-server-image + + #where the demo source can be found + DEMOSRCDIR = $(SHARE_SRC)/demo +@@ -399,7 +404,7 @@ # We define an intermediate variable for Java files because # we use its value later to help define $SOURCEPATH @@ -8155,7 +16408,7 @@ else VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes --- jdk/make/common/Library.gmk 2012-08-10 10:21:33.000000000 -0700 -+++ jdk/make/common/Library.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/Library.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -299,8 +299,12 @@ ifeq ($(PLATFORM), solaris) $(STRIP) -x $@ @@ -8172,7 +16425,7 @@ # implied else here is no stripping at all endif --- jdk/make/common/Mapfile-vers.gmk 2012-08-10 10:21:33.000000000 -0700 -+++ jdk/make/common/Mapfile-vers.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/Mapfile-vers.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -76,7 +76,7 @@ endif # PLATFORM @@ -8183,7 +16436,7 @@ ifeq ($(VARIANT), OPT) # OPT build MUST have a mapfile? --- jdk/make/common/Program.gmk 2012-08-10 10:21:33.000000000 -0700 -+++ jdk/make/common/Program.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/Program.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -95,6 +95,17 @@ endif # SYSTEM_ZLIB endif # PLATFORM @@ -8264,8 +16517,34 @@ OTHER_CPPFLAGS += -DPROGNAME='"$(PROGRAM)"' VERSION_DEFINES += -DFULL_VERSION='"$(FULL_VERSION)"' +--- jdk/make/common/Release-macosx.gmk 2012-08-10 10:21:33.000000000 -0700 ++++ jdk/make/common/Release-macosx.gmk 2013-05-05 09:38:27.000000000 -0700 +@@ -31,6 +31,8 @@ + + JDK_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2sdk-bundle/jdk$(JDK_VERSION).jdk/Contents + JRE_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2re-bundle/jre$(JDK_VERSION).jre/Contents ++JDK_SERVER_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2sdk-server-bundle/jdk$(JDK_VERSION).jdk/Contents ++JDK_SERVER_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2sdk-server-image + + MACOSX_SRC = $(JDK_TOPDIR)/src/macosx + +@@ -70,6 +72,13 @@ + $(SED) -e "s/@@ID@@/$(BUNDLE_ID_JDK)/g" -e "s/@@NAME@@/$(BUNDLE_NAME_JDK)/g" -e "s/@@INFO@@/$(BUNDLE_INFO_JDK)/g" -e "s/@@PLATFORM_VERSION@@/$(BUNDLE_PLATFORM_VERSION)/g" -e "s/@@VERSION@@/$(BUNDLE_VERSION)/g" -e "s/@@VENDOR@@/$(BUNDLE_VENDOR)/g" < $(MACOSX_SRC)/bundle/JDK-Info.plist > $(JDK_BUNDLE_DIR)/Info.plist + /usr/bin/SetFile -a B $(JDK_BUNDLE_DIR)/../ + +-EXTRA_IMAGE_TARGETS += jre-bundle-setup jdk-bundle-setup jre-bundle-files jdk-bundle-files ++jdk-server-bundle-files: ++ $(MKDIR) -p $(JDK_SERVER_BUNDLE_DIR)/MacOS ++ ln -s ../Home/jre/lib/jli/libjli.dylib $(JDK_SERVER_BUNDLE_DIR)/MacOS/ ++ $(CP) -r $(JDK_IMAGE_DIR) $(JDK_SERVER_BUNDLE_DIR)/Home ++ $(SED) -e "s/@@ID@@/$(BUNDLE_ID_JDK)/g" -e "s/@@NAME@@/$(BUNDE_NAME_JDK)/g" -e "s/@@INFO@@/$(BUNDLE_INFO_JDK)/g" -e "s/@@PLATFORM_VERSION@@/$(BUNDLE_PLATFORM_VERSION)/g" -e "s/@@VERSION@@/$(BUNDLE_VERSION)/g" -e "s/@@VENDOR@@/$(BUNDLE_VENDOR)/g" < $(MACOSX_SRC)/bundle/JDK-Info.plist > $(JDK_SERVER_BUNDLE_DIR)/Info.plist ++ /usr/bin/SetFile -a B $(JDK_SERVER_BUNDLE_DIR)/../ ++ ++EXTRA_IMAGE_TARGETS += jre-bundle-setup jdk-bundle-setup jre-bundle-files jdk-bundle-files jdk-server-bundle-files + + .PHONY: $(EXTRA_JRE_TARGETS) $(EXTRA_IMAGE_TARGETS) --- jdk/make/common/Release.gmk 2012-08-10 10:21:33.000000000 -0700 -+++ jdk/make/common/Release.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/Release.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -178,6 +178,12 @@ JA_DIRNAME=ja_JP.UTF-8 endif # linux @@ -8279,7 +16558,40 @@ define copy-man-pages $(MKDIR) -p $1/man/man1 for manbase in $(MANBASEDIRS:%=%/$(MAN1SUBDIR)) ; do \ -@@ -399,10 +405,29 @@ +@@ -233,8 +239,8 @@ + trim-image-jre trim-image-jdk \ + identify-image-jre identify-image-jdk \ + process-image-jre process-image-jdk \ +-compare-image \ +-sec-files sec-files-win jgss-files :: ++compare-image \ ++sec-files sec-files-win jgss-files server-jdk-image :: + @$(ECHO) ">>>Making "$@" @ `$(DATE)` ..." + + # Order is important here, trim jre after jdk image is created +@@ -243,16 +249,17 @@ + images:: sanity-images post-sanity-images \ + $(INITIAL_IMAGE_JRE) $(EXTRA_JRE_TARGETS) $(INITIAL_IMAGE_JDK) \ + trim-image-jre trim-image-jdk \ +- identify-image-jre identify-image-jdk \ +- process-image-jre process-image-jdk sec-files sec-files-win jgss-files \ +- $(EXTRA_IMAGE_TARGETS) ++ identify-image-jre identify-image-jdk \ ++ process-image-jre process-image-jdk sec-files sec-files-win \ ++ jgss-files $(EXTRA_IMAGE_TARGETS) server-jdk-image + else + + images:: sanity-images post-sanity-images \ + $(INITIAL_IMAGE_JRE) $(INITIAL_IMAGE_JDK) \ + trim-image-jre trim-image-jdk \ + identify-image-jre identify-image-jdk \ +- process-image-jre process-image-jdk sec-files sec-files-win jgss-files ++ process-image-jre process-image-jdk sec-files sec-files-win \ ++ jgss-files server-jdk-image + endif + + # Don't use these +@@ -399,10 +406,29 @@ sun/tools/jinfo \ sun/tools/jmap @@ -8309,7 +16621,7 @@ # classes that go into jsse.jar JSSE_CLASSES_DIRS = \ -@@ -606,8 +631,7 @@ +@@ -606,8 +632,7 @@ $(ECHO) "sun/tools/jstack/" >> $@ $(ECHO) "sun/tools/jinfo/" >> $@ $(ECHO) "sun/tools/jmap/" >> $@ @@ -8319,7 +16631,7 @@ $(ECHO) "com/oracle/jrockit/jfr/" >> $@ $(ECHO) "com/oracle/jrockit/jfr/client/" >> $@ $(ECHO) "com/oracle/jrockit/jfr/management/" >> $@ -@@ -618,7 +642,7 @@ +@@ -618,7 +643,7 @@ $(ECHO) "oracle/jrockit/jfr/settings/" >> $@ $(ECHO) "oracle/jrockit/jfr/tools/" >> $@ endif @@ -8328,7 +16640,7 @@ # File order list for rt.jar -@@ -645,8 +669,7 @@ +@@ -645,8 +670,7 @@ # Create jfr.jar JFR_JAR= @@ -8338,7 +16650,7 @@ JFR_JAR=$(ABS_TEMPDIR)/jfr-orig.jar $(JFR_JAR): $(OTHER_JAR_MANIFEST_FILE) $(prep-target) -@@ -655,7 +678,6 @@ +@@ -655,7 +679,6 @@ $(JFR_CLASSES_DIRS) $(BOOT_JAR_JFLAGS) @$(CD) $(CLASSBINDIR) && $(java-vm-cleanup) endif @@ -8346,7 +16658,35 @@ # Create the rt.jar file list & non-class files list -@@ -983,6 +1005,12 @@ +@@ -912,6 +935,27 @@ + done + $(RM) $(JRE_BIN_LIST) + ++# Duplicate current j2re-image contents to server-j2re-image ++# for the server version of jre, before deploy build ++server-jdk-image:: ++ifeq ($(PLATFORM), macosx) ++ $(RM) -r $(JDK_SERVER_BUNDLE_DIR)/Home/demo ++ $(RM) -r $(JDK_SERVER_BUNDLE_DIR)/Home/sample ++ $(RM) $(JDK_SERVER_BUNDLE_DIR)/Home/bin/jcontrol ++ $(RM) $(JDK_SERVER_BUNDLE_DIR)/Home/jre/bin/jcontrol ++ $(RM) $(JDK_SERVER_BUNDLE_DIR)/Home/man/ja_JP.UTF-8/man1/javaws.1 ++ $(RM) $(JDK_SERVER_BUNDLE_DIR)/Home/man/man1/javaws.1 ++else ++ $(RM) -r $(JDK_SERVER_IMAGE_DIR) ++ $(CP) -r $(JDK_IMAGE_DIR) $(JDK_SERVER_IMAGE_DIR) ++ $(RM) -r $(JDK_SERVER_IMAGE_DIR)/demo ++ $(RM) -r $(JDK_SERVER_IMAGE_DIR)/sample ++ $(RM) $(JDK_SERVER_IMAGE_DIR)/bin/jcontrol ++ $(RM) $(JDK_SERVER_IMAGE_DIR)/jre/bin/jcontrol ++ $(RM) $(JDK_SERVER_IMAGE_DIR)/man/ja_JP.UTF-8/man1/javaws.1 ++ $(RM) $(JDK_SERVER_IMAGE_DIR)/man/man1/javaws.1 ++endif ++ + ###################################################### + # JDK Image + ###################################################### +@@ -983,6 +1027,12 @@ FILES_launcher = $(wildcard $(SHARE_SRC)/bin/*) \ $(wildcard $(PLATFORM_SRC)/bin/java_md*) @@ -8359,7 +16699,7 @@ # Standard jdk image initial-image-jdk:: initial-image-jdk-setup \ initial-image-jdk-db \ -@@ -1070,7 +1098,7 @@ +@@ -1070,7 +1120,7 @@ @# So for Linux, make use of the -T option (like Solaris' -I option) of @# obtaining the list of files from a file. MKS tar has no such option. @@ -8368,7 +16708,7 @@ for d in $(SOURCE_DIRS); do \ $(RM) $(ABS_TEMPDIR)/src-files.list; \ ($(CD) $$d && \ -@@ -1083,7 +1111,7 @@ +@@ -1083,7 +1133,7 @@ done ; \ ) ; \ if [ -f $(ABS_TEMPDIR)/src-files.list ] ; then \ @@ -8378,7 +16718,7 @@ fi; \ done --- jdk/make/common/Rules.gmk 2012-08-10 10:21:33.000000000 -0700 -+++ jdk/make/common/Rules.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/Rules.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -51,7 +51,7 @@ # # All source tree areas for java/properties files (a few may be closed) @@ -8398,7 +16738,7 @@ $(CLASSDESTDIR)/%.class: $(JDK_TOPDIR)/src/macosx/classes/%.java @$(add-java-file) --- jdk/make/common/shared/Compiler-gcc.gmk 2012-08-10 10:21:33.000000000 -0700 -+++ jdk/make/common/shared/Compiler-gcc.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/shared/Compiler-gcc.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -72,6 +72,21 @@ endif @@ -8422,7 +16762,7 @@ # Settings specific to Solaris --- jdk/make/common/shared/Defs-bsd.gmk 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/make/common/shared/Defs-bsd.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/shared/Defs-bsd.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -0,0 +1,262 @@ +# +# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. @@ -8687,7 +17027,7 @@ +endif + --- jdk/make/common/shared/Defs-utils.gmk 2012-08-10 10:21:33.000000000 -0700 -+++ jdk/make/common/shared/Defs-utils.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/shared/Defs-utils.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -74,6 +74,13 @@ UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH) endif @@ -8739,7 +17079,7 @@ + endif +endif --- jdk/make/common/shared/Defs-versions.gmk 2012-08-10 10:21:33.000000000 -0700 -+++ jdk/make/common/shared/Defs-versions.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/shared/Defs-versions.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -44,6 +44,11 @@ override CC_VERSION = gcc endif @@ -8767,7 +17107,7 @@ ifeq ($(PLATFORM), macosx) REQUIRED_OS_NAME = Darwin --- jdk/make/common/shared/Defs.gmk 2012-08-10 10:21:34.000000000 -0700 -+++ jdk/make/common/shared/Defs.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/shared/Defs.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -181,7 +181,7 @@ # platform and shared sources/headers. This is mainly useful for the # Mac OS X build, which pulls its platform sources from the solaris and/or @@ -8778,7 +17118,7 @@ $(JAVA_SRCDIR_LIST:%=$1$(JDK_TOPDIR)/%/$2) endef --- jdk/make/common/shared/Platform.gmk 2012-08-10 10:21:34.000000000 -0700 -+++ jdk/make/common/shared/Platform.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/common/shared/Platform.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -298,6 +298,85 @@ # How much RAM does this machine have: endif @@ -8866,7 +17206,7 @@ ifeq ($(SYSTEM_UNAME), Windows_NT) PLATFORM = windows --- jdk/make/java/Makefile 2012-08-10 10:21:34.000000000 -0700 -+++ jdk/make/java/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/java/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -53,7 +53,7 @@ endif endif # PLATFORM @@ -8877,7 +17217,7 @@ endif # PLATFORM --- jdk/make/java/instrument/Makefile 2012-08-10 10:21:34.000000000 -0700 -+++ jdk/make/java/instrument/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/java/instrument/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -104,12 +104,24 @@ # equivalent of strcasecmp is stricmp on Windows CPPFLAGS_COMMON += -Dstrcasecmp=stricmp @@ -8909,7 +17249,7 @@ OTHER_LDLIBS += -lz endif --- jdk/make/java/java/FILES_java.gmk 2012-08-10 10:21:34.000000000 -0700 -+++ jdk/make/java/java/FILES_java.gmk 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/java/java/FILES_java.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. @@ -8926,7 +17266,7 @@ sun/misc/JavaIOAccess.java \ sun/misc/JavaIOFileDescriptorAccess.java \ --- jdk/make/java/java/Makefile 2012-08-10 10:21:35.000000000 -0700 -+++ jdk/make/java/java/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/java/java/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -175,9 +175,11 @@ # ifneq ($(PLATFORM), windows) @@ -8940,7 +17280,7 @@ ifeq ($(HAVE_ALTZONE),true) OTHER_CPPFLAGS += -DHAVE_ALTZONE --- jdk/make/java/java/genlocales.gmk 2012-08-10 10:21:35.000000000 -0700 -+++ jdk/make/java/java/genlocales.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/java/java/genlocales.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -93,18 +93,66 @@ else @@ -9013,7 +17353,7 @@ genlocales : $(LocaleDataMetaInfo_Dest) --- jdk/make/java/jli/Makefile 2012-08-10 10:21:36.000000000 -0700 -+++ jdk/make/java/jli/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/java/jli/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -90,7 +90,8 @@ # add platform specific files @@ -9059,7 +17399,7 @@ OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC) --- jdk/make/java/jli/mapfile-vers 2012-08-10 10:21:36.000000000 -0700 -+++ jdk/make/java/jli/mapfile-vers 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/java/jli/mapfile-vers 2013-05-05 09:38:27.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. @@ -9080,7 +17420,7 @@ *; }; --- jdk/make/java/net/FILES_c.gmk 2012-08-10 10:21:36.000000000 -0700 -+++ jdk/make/java/net/FILES_c.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/java/net/FILES_c.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -47,6 +47,10 @@ FILES_c += bsd_close.c endif @@ -9093,7 +17433,7 @@ FILES_c += TwoStacksPlainSocketImpl.c FILES_c += DualStackPlainSocketImpl.c --- jdk/make/java/net/Makefile 2012-08-10 10:21:36.000000000 -0700 -+++ jdk/make/java/net/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/java/net/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -74,6 +74,7 @@ FILES_export += java/net/DualStackPlainSocketImpl.java FILES_export += java/net/TwoStacksPlainDatagramSocketImpl.java @@ -9112,7 +17452,7 @@ OTHER_CFLAGS += -DDONT_ENABLE_IPV6 endif --- jdk/make/java/nio/Makefile 2012-08-10 10:21:36.000000000 -0700 -+++ jdk/make/java/nio/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/java/nio/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -260,7 +260,7 @@ sun/nio/fs/UnixConstants.java endif # PLATFORM = linux @@ -9160,7 +17500,7 @@ endif include $(BUILDDIR)/common/Mapfile-vers.gmk --- jdk/make/java/nio/mapfile-bsd 2012-08-10 10:21:37.000000000 -0700 -+++ jdk/make/java/nio/mapfile-bsd 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/java/nio/mapfile-bsd 2013-05-05 09:38:27.000000000 -0700 @@ -70,6 +70,7 @@ Java_sun_nio_ch_IOUtil_drain; Java_sun_nio_ch_IOUtil_fdVal; @@ -9182,7 +17522,7 @@ Java_sun_nio_ch_KQueuePort_interrupt; Java_sun_nio_ch_KQueuePort_drain1; --- jdk/make/java/npt/Makefile 2012-08-10 10:21:37.000000000 -0700 -+++ jdk/make/java/npt/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/java/npt/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -74,6 +74,14 @@ OTHER_LDLIBS += -liconv endif @@ -9199,7 +17539,7 @@ # Add to ambient vpath so we pick up the library files # --- jdk/make/java/redist/fonts/Makefile 2012-08-10 10:21:37.000000000 -0700 -+++ jdk/make/java/redist/fonts/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/java/redist/fonts/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -42,7 +42,7 @@ $(LIBDIR)/fonts/LucidaSansRegular.ttf \ $(LIBDIR)/fonts/LucidaSansDemiBold.ttf \ @@ -9228,7 +17568,7 @@ all build : $(INTERNAL_IMPORT_LIST) --- jdk/make/javax/crypto/Defs-jce.gmk 2012-08-10 10:21:39.000000000 -0700 -+++ jdk/make/javax/crypto/Defs-jce.gmk 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/javax/crypto/Defs-jce.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. @@ -9246,7 +17586,7 @@ $(MAINMANIFEST) >> $@ $(ECHO) "Extension-Name: javax.crypto" >> $@ --- jdk/make/javax/sound/Makefile 2012-08-10 10:21:40.000000000 -0700 -+++ jdk/make/javax/sound/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/javax/sound/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -111,6 +111,21 @@ #MXSPP_ADD = $(PLATFORM)-$(ARCH)/ endif # PLATFORM linux @@ -9270,7 +17610,7 @@ CPPFLAGS += -DUSE_PORTS=TRUE \ -DUSE_DAUDIO=TRUE \ --- jdk/make/javax/sound/SoundDefs.gmk 2012-08-10 10:21:40.000000000 -0700 -+++ jdk/make/javax/sound/SoundDefs.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/javax/sound/SoundDefs.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -40,6 +40,10 @@ CPPFLAGS += -DX_PLATFORM=X_LINUX endif # PLATFORM linux @@ -9283,7 +17623,7 @@ CPPFLAGS += -DX_PLATFORM=X_MACOSX endif # PLATFORM macosx --- jdk/make/javax/sound/jsoundalsa/Makefile 2012-08-10 10:21:40.000000000 -0700 -+++ jdk/make/javax/sound/jsoundalsa/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/javax/sound/jsoundalsa/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -51,6 +51,7 @@ $(PORTFILES_c) @@ -9335,7 +17675,7 @@ # # Add to the ambient VPATH. --- jdk/make/jpda/transport/socket/Makefile 2012-08-10 10:21:40.000000000 -0700 -+++ jdk/make/jpda/transport/socket/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/jpda/transport/socket/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -38,6 +38,11 @@ include $(BUILDDIR)/common/Defs.gmk @@ -9349,21 +17689,30 @@ OTHER_LDLIBS += $(LIBNSL) $(LIBSOCKET) -lpthread endif --- jdk/make/sun/awt/Makefile 2012-08-10 10:21:49.000000000 -0700 -+++ jdk/make/sun/awt/Makefile 2013-03-09 08:44:53.000000000 -0800 -@@ -125,6 +125,13 @@ - - FILES_c += initIDs.c ++++ jdk/make/sun/awt/Makefile 2013-05-05 09:38:27.000000000 -0700 +@@ -123,7 +123,12 @@ + OTHER_LDLIBS = $(JVMLIB) $(LIBM) $(LIBDL) + endif +-FILES_c += initIDs.c +ifeq ($(PLATFORM), bsd) +FILES_c = $(FILES_2D_c) +FILES_c += awt_LoadLibrary.c +OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH +OTHER_LDLIBS = $(JVMLIB) $(LIBM) +endif -+ + ifeq ($(PLATFORM), macosx) FILES_c = $(FILES_2D_c) - FILES_c += awt_LoadLibrary.c +@@ -132,6 +137,8 @@ + OTHER_LDLIBS = $(JVMLIB) $(LIBM) + endif + ++FILES_c += initIDs.c ++ + # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS/LINUX + endif # PLATFORM + @@ -425,6 +432,17 @@ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS endif # PLATFORM @@ -9408,7 +17757,7 @@ endif --- jdk/make/sun/awt/mawt.gmk 2012-08-10 10:21:49.000000000 -0700 -+++ jdk/make/sun/awt/mawt.gmk 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/sun/awt/mawt.gmk 2013-05-05 09:38:27.000000000 -0700 @@ -169,7 +169,7 @@ OTHER_LDLIBS = -lXt -lXext $(LIBXTST) $(LIBXMU) -lX11 -lXi endif @@ -9418,17 +17767,41 @@ OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH # XXX what is this define below? Isn't it motif-related? OTHER_CFLAGS += -DXMSTRINGDEFINES=1 -@@ -198,6 +198,9 @@ +@@ -193,6 +193,7 @@ + # + # Other extra flags needed for compiling. + # ++ifneq ($(PLATFORM), bsd)) + CPPFLAGS += -I$(CUPS_HEADERS_PATH) + ifndef HEADLESS - CPPFLAGS += -I$(OPENWIN_HOME)/include +@@ -200,6 +201,7 @@ LDFLAGS += -L$(OPENWIN_LIB) + + endif # !HEADLESS ++endif # !PLATFORM + + CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \ + -I$(SHARE_SRC)/native/$(PKGDIR)/../font \ +@@ -223,13 +225,16 @@ + -I$(PLATFORM_SRC)/native/$(PKGDIR) \ + $(EVENT_MODEL) + +-ifeq ($(PLATFORM), macosx) ++ifneq (,$(findstring $(PLATFORM), bsd macosx)) + CPPFLAGS += -I$(CUPS_HEADERS_PATH) + + ifndef HEADLESS + CPPFLAGS += -I$(MOTIF_DIR)/include \ + -I$(OPENWIN_HOME)/include + LDFLAGS += -L$(MOTIF_LIB) -L$(OPENWIN_LIB) +ifeq ($(OS_NAME), netbsd) +LDFLAGS += -Wl,-R$(OPENWIN_LIB) +endif endif # !HEADLESS - -@@ -240,6 +243,12 @@ + endif # PLATFORM +@@ -240,6 +245,12 @@ $(wildcard /usr/include/X11/extensions)) endif @@ -9441,8 +17814,33 @@ ifeq ($(PLATFORM), macosx)) CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions \ -I$(OPENWIN_HOME)/include +--- jdk/make/sun/font/FILES_c.gmk 2012-08-10 10:21:49.000000000 -0700 ++++ jdk/make/sun/font/FILES_c.gmk 2013-05-05 09:38:27.000000000 -0700 +@@ -106,7 +106,21 @@ + OpenTypeLayoutEngine.cpp \ + ThaiLayoutEngine.cpp \ + ScriptAndLanguageTags.cpp \ +- FontInstanceAdapter.cpp ++ FontInstanceAdapter.cpp \ ++ ContextualGlyphInsertionProc2.cpp \ ++ ContextualGlyphSubstProc2.cpp \ ++ GXLayoutEngine2.cpp \ ++ IndicRearrangementProcessor2.cpp \ ++ LigatureSubstProc2.cpp \ ++ MorphTables2.cpp \ ++ NonContextualGlyphSubstProc2.cpp \ ++ SegmentArrayProcessor2.cpp \ ++ SegmentSingleProcessor2.cpp \ ++ SimpleArrayProcessor2.cpp \ ++ SingleTableProcessor2.cpp \ ++ StateTableProcessor2.cpp \ ++ SubtableProcessor2.cpp \ ++ TrimmedArrayProcessor2.cpp + + + ifeq ($(PLATFORM),windows) --- jdk/make/sun/font/Makefile 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/font/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/sun/font/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -91,7 +91,7 @@ endif # PLATFORM @@ -9462,7 +17860,7 @@ OTHER_LDLIBS += -lawt $(LIBM) $(LIBCXX) ifeq ($(OS_VENDOR),Apple) --- jdk/make/sun/javazic/tzdata/VERSION 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/VERSION 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/VERSION 2013-05-05 09:38:27.000000000 -0700 @@ -21,4 +21,4 @@ # or visit www.oracle.com if you need additional information or have any # questions. @@ -9470,7 +17868,7 @@ -tzdata2012c +tzdata2012i --- jdk/make/sun/javazic/tzdata/africa 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/africa 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/africa 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -9601,7 +17999,7 @@ # Apparently the Caprivi Strip informally observes Botswana time, but # we have no details. In the meantime people there can use Africa/Gaborone. --- jdk/make/sun/javazic/tzdata/antarctica 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/antarctica 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/antarctica 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -9611,7 +18009,7 @@ # 2009-05-17 by Arthur David Olson. --- jdk/make/sun/javazic/tzdata/asia 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/asia 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/asia 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -9954,7 +18352,7 @@ # <a href="http://www.sana.sy/ara/2/2009/09/29/247012.htm"> # http://www.sana.sy/ara/2/2009/09/29/247012.htm (Arabic) --- jdk/make/sun/javazic/tzdata/australasia 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/australasia 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/australasia 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10138,7 +18536,7 @@ # <a href="http://www.timeanddate.com/news/time/south-australia-extends-dst.html"> # http://www.timeanddate.com/news/time/south-australia-extends-dst.html --- jdk/make/sun/javazic/tzdata/backward 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/backward 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/backward 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10148,7 +18546,7 @@ # 2009-05-17 by Arthur David Olson. --- jdk/make/sun/javazic/tzdata/etcetera 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/etcetera 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/etcetera 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10158,7 +18556,7 @@ # 2009-05-17 by Arthur David Olson. --- jdk/make/sun/javazic/tzdata/europe 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/europe 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/europe 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10216,7 +18614,7 @@ # to Russia) was reverted today: # --- jdk/make/sun/javazic/tzdata/factory 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/factory 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/factory 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10226,7 +18624,7 @@ # 2009-05-17 by Arthur David Olson. --- jdk/make/sun/javazic/tzdata/iso3166.tab 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/iso3166.tab 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/iso3166.tab 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10236,7 +18634,7 @@ # 2009-05-17 by Arthur David Olson. # ISO 3166 alpha-2 country codes --- jdk/make/sun/javazic/tzdata/leapseconds 2012-08-10 10:21:50.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/leapseconds 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/leapseconds 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10265,7 +18663,7 @@ # Earth Orientation Center of IERS # Observatoire de Paris, France --- jdk/make/sun/javazic/tzdata/northamerica 2012-08-10 10:21:51.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/northamerica 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/northamerica 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10367,7 +18765,7 @@ # Zone NAME GMTOFF RULES FORMAT [UNTIL] --- jdk/make/sun/javazic/tzdata/pacificnew 2012-08-10 10:21:51.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/pacificnew 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/pacificnew 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10377,7 +18775,7 @@ # 2009-05-17 by Arthur David Olson. --- jdk/make/sun/javazic/tzdata/solar87 2012-08-10 10:21:51.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/solar87 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/solar87 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10387,7 +18785,7 @@ # 2009-05-17 by Arthur David Olson. --- jdk/make/sun/javazic/tzdata/solar88 2012-08-10 10:21:51.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/solar88 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/solar88 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10397,7 +18795,7 @@ # 2009-05-17 by Arthur David Olson. --- jdk/make/sun/javazic/tzdata/solar89 2012-08-10 10:21:51.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/solar89 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/solar89 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10407,7 +18805,7 @@ # 2009-05-17 by Arthur David Olson. --- jdk/make/sun/javazic/tzdata/southamerica 2012-08-10 10:21:51.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/southamerica 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/southamerica 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10513,7 +18911,7 @@ # http://www.shoa.cl/noticias/2008/04hora/hora.htm # </a>. --- jdk/make/sun/javazic/tzdata/systemv 2012-08-10 10:21:51.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/systemv 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/systemv 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10523,7 +18921,7 @@ # 2009-05-17 by Arthur David Olson. --- jdk/make/sun/javazic/tzdata/zone.tab 2012-08-10 10:21:51.000000000 -0700 -+++ jdk/make/sun/javazic/tzdata/zone.tab 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/javazic/tzdata/zone.tab 2013-05-05 09:38:27.000000000 -0700 @@ -22,7 +22,6 @@ # questions. # @@ -10533,7 +18931,7 @@ # 2009-05-17 by Arthur David Olson. # --- jdk/make/sun/jawt/Makefile 2012-08-10 10:21:52.000000000 -0700 -+++ jdk/make/sun/jawt/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/sun/jawt/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -94,8 +94,7 @@ # # Other extra flags needed for compiling. @@ -10562,7 +18960,7 @@ OTHER_LDLIBS = -L$(LIBDIR)/$(LIBARCH) -lawt -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt else --- jdk/make/sun/rmi/rmi/Makefile 2012-08-10 10:21:53.000000000 -0700 -+++ jdk/make/sun/rmi/rmi/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/sun/rmi/rmi/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -97,6 +97,9 @@ BUILD_TARGETS += bin endif @@ -10574,7 +18972,7 @@ build: $(BUILD_TARGETS) --- jdk/make/sun/security/ec/Makefile 2012-08-10 10:21:53.000000000 -0700 -+++ jdk/make/sun/security/ec/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/sun/security/ec/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -245,9 +245,9 @@ # # Build sunec.jar. @@ -10588,7 +18986,7 @@ @$(java-vm-cleanup) --- jdk/make/sun/security/mscapi/Makefile 2012-08-10 10:21:54.000000000 -0700 -+++ jdk/make/sun/security/mscapi/Makefile 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/make/sun/security/mscapi/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -210,9 +210,9 @@ # # Build sunmscapi.jar. @@ -10602,7 +19000,7 @@ @$(java-vm-cleanup) --- jdk/make/sun/security/pkcs11/Makefile 2012-08-10 10:21:55.000000000 -0700 -+++ jdk/make/sun/security/pkcs11/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/sun/security/pkcs11/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -224,9 +224,9 @@ # # Build sunpkcs11.jar. @@ -10616,7 +19014,7 @@ @$(java-vm-cleanup) --- jdk/make/sun/splashscreen/Makefile 2012-08-10 10:21:55.000000000 -0700 -+++ jdk/make/sun/splashscreen/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/sun/splashscreen/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -83,15 +83,16 @@ -framework JavaNativeFoundation else ifneq ($(PLATFORM), windows) @@ -10643,7 +19041,7 @@ CFLAGS += -DWITH_WIN32 OTHER_LDLIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib /DELAYLOAD:user32.dll --- jdk/make/sun/xawt/Makefile 2012-08-10 10:21:55.000000000 -0700 -+++ jdk/make/sun/xawt/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/sun/xawt/Makefile 2013-05-05 09:38:27.000000000 -0700 @@ -52,6 +52,9 @@ AUTO_JAVA_PRUNE = WrapperGenerator.java @@ -10697,7 +19095,7 @@ CPPFLAGS += -DX11_PATH=\"$(X11_PATH)\" -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" endif --- jdk/make/tools/freetypecheck/Makefile 2012-08-10 10:22:31.000000000 -0700 -+++ jdk/make/tools/freetypecheck/Makefile 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/tools/freetypecheck/Makefile 2013-05-05 09:38:26.000000000 -0700 @@ -52,8 +52,15 @@ else ifeq ($(PLATFORM), macosx) @@ -10717,7 +19115,7 @@ endif endif --- jdk/make/tools/sharing/classlist.bsd 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/make/tools/sharing/classlist.bsd 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/make/tools/sharing/classlist.bsd 2013-05-05 09:38:27.000000000 -0700 @@ -0,0 +1,2327 @@ +java/lang/Object +java/lang/String @@ -13047,7 +21445,7 @@ +javax/swing/BufferStrategyPaintManager$1 +# f3ac8b467e7f8c49 --- jdk/src/bsd/doc/man/appletviewer.1 2012-08-10 10:22:48.000000000 -0700 -+++ jdk/src/bsd/doc/man/appletviewer.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/appletviewer.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -13101,7 +21499,7 @@ - + --- jdk/src/bsd/doc/man/apt.1 2012-08-10 10:22:48.000000000 -0700 -+++ jdk/src/bsd/doc/man/apt.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/apt.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -13255,7 +21653,7 @@ - + --- jdk/src/bsd/doc/man/extcheck.1 2012-08-10 10:22:48.000000000 -0700 -+++ jdk/src/bsd/doc/man/extcheck.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/extcheck.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -13288,7 +21686,7 @@ - + --- jdk/src/bsd/doc/man/idlj.1 2012-08-10 10:22:48.000000000 -0700 -+++ jdk/src/bsd/doc/man/idlj.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/idlj.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,13 +19,13 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -13611,23545 +22009,8 @@ .LP - + ---- jdk/src/bsd/doc/man/ja/appletviewer.1 2012-08-10 10:22:48.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/appletviewer.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,51 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH appletviewer 1 "07 May 2011" -+.TH appletviewer 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+appletviewer \- Java¥¢¥×¥ì¥Ã¥È¡¦¥Ó¥å¡¼¥¢ -+.LP -+.LP -+\f3appletviewer\fP¥³¥Þ¥ó¥É¤Ç¤Ï¡¢Web¥Ö¥é¥¦¥¶¤Î³°¤Ç¥¢¥×¥ì¥Ã¥È¤ò¼Â¹Ô¤Ç¤¤Þ¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.LP -+\f4appletviewer\fP \f2[\fP \f2options\fP \f2] \fP\f2urls\fP ... -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3appletviewer\fP¥³¥Þ¥ó¥É¤Ï\f2urls\fP¤Ë»ØÄꤵ¤ì¤¿¥É¥¥å¥á¥ó¥È¤¢¤ë¤¤¤Ï¥ê¥½¡¼¥¹¤ÈÀܳ¤·¤Æ¡¢¤½¤Î¥É¥¥å¥á¥ó¥È¤¬»²¾È¤¹¤ë¤½¤ì¤¾¤ì¤Î¥¢¥×¥ì¥Ã¥È¤òÆȼ«¤Î¥¦¥£¥ó¥É¥¦¤Çɽ¼¨¤·¤Þ¤¹¡£Ãí°Õ: \f2urls\fP¤Ë¤è¤Ã¤Æ»²¾È¤µ¤ì¤¿¥É¥¥å¥á¥ó¥È¤¬¡¢\f2OBJECT\fP¡¢\f2EMBED\fP¡¢¤Þ¤¿¤Ï\f2APPLET\fP¥¿¥°¤Ç¤É¤Î¥¢¥×¥ì¥Ã¥È¤â»²¾È¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢\f3appletviewer\fP¤Ï²¿¤â¹Ô¤¤¤Þ¤»¤ó¡£\f3appletviewer\fP¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤ëHTML¥¿¥°¤Î¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥¢¥×¥ì¥Ã¥È¡¦¥Ó¥å¡¼¥¢¤Î¥¿¥°\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/appletviewertags.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+\f3Ãí°Õ:\fP \f3appletviewer\fP¤Ï³«È¯ÀìÍѤǤ¹¡£¾ÜºÙ¤Ï¡¢¥µ¥ó¥×¥ë/¥Æ¥¹¥È¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥³¡¼¥É¤Ë¤Ä¤¤¤Æ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+\f3Ãí°Õ:\fP \f3appletviewer\fP¤Ï¡¢RFC2396¤ÇÄêµÁ¤µ¤ì¤¿¥¨¥¹¥±¡¼¥×¡¦¥á¥«¥Ë¥º¥à¤Ë½¾¤Ã¤Æ¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿URL¤òɬÍפȤ·¤Þ¤¹¡£¥µ¥Ý¡¼¥È¤µ¤ì¤ë¤Î¤Ï¡¢¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿URL¤Î¤ß¤Ç¤¹¡£¤¿¤À¤·¡¢¥Õ¥¡¥¤¥ë̾¤Ë¤Ä¤¤¤Æ¤Ï¡¢RFC2396¤Î»ÅÍͤ˽¾¤Ã¤Æ¥¨¥ó¥³¡¼¥É¤ò²ò½ü¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-debug -+Java¥Ç¥Ð¥Ã¥¬jdb(1)¤Ç¥¢¥×¥ì¥Ã¥È¡¦¥Ó¥å¡¼¥¢¤ò³«»Ï¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥É¥¥å¥á¥ó¥ÈÃæ¤Î¥¢¥×¥ì¥Ã¥È¤ò¥Ç¥Ð¥Ã¥°¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+\-encoding \ \ encoding name -+ÆþÎÏHTML¥Õ¥¡¥¤¥ë¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°Ì¾¤ò»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-Jjavaoption -+ʸ»úÎó\f2javaoption\fP¤Ï¡¢appletviewer¤ò¼Â¹Ô¤¹¤ëJava¥¤¥ó¥¿¥×¥ê¥¿¤Ë1¤Ä¤Î°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤Þ¤¹¡£°ú¿ô¤Ë¥¹¥Ú¡¼¥¹¤ò´Þ¤á¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£Ê£¿ô¤Î°ú¿ô¤Ï¡¢³Æ°ú¿ô¤Î¤¹¤Ù¤Æ¤òÀÜƬ¼\f3\-J\fP¤Ç»Ï¤á¤ë¤³¤È¤Ë¤è¤ê¶èʬ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Î¼Â¹Ô´Ä¶¤Þ¤¿¤Ï¥á¥â¥ê¡¼»ÈÍѤÎÄ´À°¤Ë͸ú¤Ç¤¹¡£ -+.RE -+ -+.LP -+.LP -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/apt.1 2012-08-10 10:22:48.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/apt.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,9 +19,135 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH apt 1 "07 May 2011" -+.TH apt 1 "05 Jul 2012" - - .LP --.SH "NAME" -+.SH "̾Á°" - .LP - .LP -+\f2apt\fP \- Ãí¼á½èÍý¥Ä¡¼¥ë -+.LP -+.SH "·Á¼°" -+.LP -+.LP -+\f2apt [\-classpath \fP\f2classpath\fP] [\-sourcepath \f2sourcepath\fP] [\-d \f2directory\fP] [\-s \f2directory\fP] [\-factorypath \f2path\fP] [\-factory \f2class\fP] [\-print] [\-nocompile] [\-A\f2key\fP[\f2=val\fP] ...] [\f2javac option\fP] sourcefiles [@files] -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.LP -+¥ª¥×¥·¥ç¥ó¤Î»ØÄê½ç½ø¤Ë·è¤Þ¤ê¤Ï¤¢¤ê¤Þ¤»¤ó¡£ÆÃÄê¤Î¥ª¥×¥·¥ç¥ó¤ËŬÍѤµ¤ì¤ë¥Ñ¥é¥á¡¼¥¿¤Ë¤Ä¤¤¤Æ¤Ï¡¢²¼µ¤Î¥ª¥×¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.RS 3 -+.TP 3 -+sourcefiles -+¥¼¥í¡¢1¤Ä¡¢¤Þ¤¿¤ÏÊ£¿ô¤Î½èÍýÂоݤΥ½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë -+.TP 3 -+@files -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¾¤Î¥ª¥×¥·¥ç¥ó¤ò°ìÍ÷ɽ¼¨¤¹¤ë1¤Ä¤Þ¤¿¤ÏÊ£¿ô¤Î¥Õ¥¡¥¤¥ë -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3Ãí°Õ\fP: \f2apt\fP¥Ä¡¼¥ë¤È¡¢¥Ñ¥Ã¥±¡¼¥¸\f2com.sun.mirror\fP¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¤½¤ì¤Ë´ØÏ¢¤·¤¿API¤Ï¡¢JDK 7°Ê¹ßÈó¿ä¾©¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢JDK¤Î¼¡¤Î¥á¥¸¥ã¡¼¡¦¥ê¥ê¡¼¥¹¤Çºï½ü¤µ¤ì¤ëͽÄê¤Ç¤¹¡£\f2javac(1)\fP¥Ä¡¼¥ë¤ÇÍøÍѲÄǽ¤Ê¥ª¥×¥·¥ç¥ó¤È¡¢¥Ñ¥Ã¥±¡¼¥¸\f2javax.annotation.processing\fP¤ª¤è¤Ó\f2javax.lang.model\fP¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ëAPI¤ò»ÈÍѤ·¤Æ¡¢Ãí¼á¤ò½èÍý¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+Ãí¼á½èÍý¥Ä¡¼¥ë\f2apt\fP¤Ï¡¢¥ê¥Õ¥ì¥¯¥ÈAPI¤È¥µ¥Ý¡¼¥È¡¦¥¤¥ó¥Õ¥é¥¹¥È¥é¥¯¥Á¥ã¤«¤é¹½À®¤µ¤ì¡¢¥×¥í¥°¥é¥àÃí¼á¤ò½èÍý¤·¤Þ¤¹¡£\f2apt\fP¥ê¥Õ¥ì¥¯¥ÈAPI¤Ï¡¢¹½ÃÛ»þ¤Î¥½¡¼¥¹¡¦¥Ù¡¼¥¹¤Ç¡¢¥×¥í¥°¥é¥à¹½Â¤¤Ë´Ø¤¹¤ëÆɼè¤êÀìÍѥӥ塼¤òÄ󶡤·¤Þ¤¹¡£¤³¤ì¤é¤Î¥ê¥Õ¥ì¥¯¥ÈAPI¤Ï¡¢Áí¾Î¤òÄɲä·¤¿¸å¤Ë¡¢Java(tm)¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î·¿¥·¥¹¥Æ¥à¤òÀµ¤·¤¯¥â¥Ç¥ë²½¤¹¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£ºÇ½é¤Ë¡¢\f2apt\fP¤Ï¡¢¿·¤·¤¤¥½¡¼¥¹¡¦¥³¡¼¥É¤È¾¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ëÃí¼á¥×¥í¥»¥Ã¥µ¤ò¼Â¹Ô¤·¤Þ¤¹¡£¼¡¤Ë¡¢\f2apt\fP¤Ï¡¢¸µ¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÈÀ¸À®¤·¤¿¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎξÊý¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¡¢³«È¯¤¬³Ú¤Ë¤Ê¤ê¤Þ¤¹¡£¥Ä¡¼¥ë¤È¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë»ÈÍѤµ¤ì¤ë¥ê¥Õ¥ì¥¯¥ÈAPI¤Ê¤É¤ÎAPI¤Ï¡¢\f2com.sun.mirror\fP¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤Ç¤¹¡£ -+.LP -+.LP -+¥Ä¡¼¥ë¤Îµ¡Ç½¤Ë´Ø¤¹¤ë¾ÜºÙ¤ª¤è¤Ó\f2apt\fP¤ò»ÈÍѤ·¤¿³«È¯¼ê½ç¤Ï¡¢ -+.na -+\f4apt\fP\f3¥¹¥¿¡¼¥È¡¦¥¬¥¤¥É\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/apt/GettingStarted.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.SS -+apt¸ÇͤΥª¥×¥·¥ç¥ó -+.LP -+.RS 3 -+.TP 3 -+\-s dir -+¥×¥í¥»¥Ã¥µ¤ÎÀ¸À®¤¹¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¥Ç¥£¥ì¥¯¥È¥ê¡¦¥ë¡¼¥È¤ò»ØÄꤷ¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¤Î̾Á°¶õ´Ö¤Ë´ð¤Å¤¤¤Æ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Þ¤¹¡£ -+.TP 3 -+\-nocompile -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Ë¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤»¤ó¡£ -+.TP 3 -+\-print -+»ØÄꤷ¤¿¥¿¥¤¥×¤Î¥Æ¥¥¹¥Èɽ¸½¤ò½ÐÎϤ·¤Þ¤¹¡£Ãí¼á½èÍý¤Þ¤¿¤Ï¥³¥ó¥Ñ¥¤¥ë¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ -+.TP 3 -+\-A[key[=val]] -+Ãí¼á¥×¥í¥»¥Ã¥µ¤ØÅϤ¹¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢\f2apt\fP¤¬Ä¾Àܲò¼á¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢¤½¤ì¤¾¤ì¤Î¥×¥í¥»¥Ã¥µ¤Ç»ÈÍѤǤ¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+\-factorypath path -+Ãí¼á¥×¥í¥»¥Ã¥µ¡¦¥Õ¥¡¥¯¥È¥ê¤ò¸¡º÷¤¹¤ë¾ì½ê¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¥Õ¥¡¥¯¥È¥ê¤Ï¸¡º÷\f2¤µ¤ì¤Þ¤»¤ó\fP¡£ -+.TP 3 -+\-factory classname -+»ÈÍѤ¹¤ëÃí¼á¥×¥í¥»¥Ã¥µ¡¦¥Õ¥¡¥¯¥È¥ê¤Î̾Á°¤Ç¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Î¸¡½Ð¥×¥í¥»¥¹¤ò¾Êά¤·¤Þ¤¹¡£ -+.TP 3 -+\-version -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-X -+Èóɸ½à¥ª¥×¥·¥ç¥ó¤Ë´Ø¤¹¤ë¾ðÊó¤òɽ¼¨¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+javac¤È¶¦ÍѤ¹¤ë¥ª¥×¥·¥ç¥ó -+.LP -+.RS 3 -+.TP 3 -+\-d dir -+¥×¥í¥»¥Ã¥µ¤ÈjavacÀ¸À®¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¾ì½ê¤ò»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-cppath¤Þ¤¿¤Ï\-classpathpath -+¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ÈÃí¼á¥×¥í¥»¥Ã¥µ¡¦¥Õ¥¡¥¯¥È¥ê¤ò¸¡º÷¤¹¤ë¾ì½ê¤ò»ØÄꤷ¤Þ¤¹¡£\f2\-factorypath\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¥Õ¥¡¥¯¥È¥ê¤Ï¸¡º÷¤µ¤ì¤Þ¤»¤ó¡£ -+.RE -+ -+.LP -+.LP -+\f2javac\fP¥ª¥×¥·¥ç¥ó¤Î¾ÜºÙ¤Ï¡¢javac(1)¤Î¥Þ¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SS -+Èóɸ½à¥ª¥×¥·¥ç¥ó -+.LP -+.RS 3 -+.TP 3 -+\-XListAnnotationTypes -+¸¡½Ð¤µ¤ì¤¿Ãí¼á¤Î·¿¤ò¥ê¥¹¥È¤·¤Þ¤¹¡£ -+.TP 3 -+\-XListDeclarations -+»ØÄꤪ¤è¤Ó¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤ëÀë¸À¤ò¥ê¥¹¥È¤·¤Þ¤¹¡£ -+.TP 3 -+\-XPrintAptRounds -+½é´ü¤ª¤è¤ÓºÆµ¢Åª¤Ê\f2apt\fP¥é¥¦¥ó¥É¤Ë´Ø¤¹¤ë¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-XPrintFactoryInfo -+¥Õ¥¡¥¯¥È¥ê¤Ë½èÍý¤ò¥ê¥¯¥¨¥¹¥È¤¹¤ëÃí¼á¤Ë´Ø¤¹¤ë¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-XclassesAsDecls -+¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎξÊý¤ò¡¢½èÍýÂоݤÎÀë¸À¤È¤·¤Æ½èÍý¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+\f3Ãí°Õ\fP: ¤³¤ì¤é¤ÏÈóɸ½à¥ª¥×¥·¥ç¥ó¤Ê¤Î¤Ç¡¢Í½¹ð¤Ê¤¯Êѹ¹¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SH "Ãí°Õ" -+.LP -+.LP -+\f2apt\fP¥Ä¡¼¥ë¤È¡¢¥Ñ¥Ã¥±¡¼¥¸\f2com.sun.mirror\fP¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¤½¤ì¤Ë´ØÏ¢¤·¤¿API¤Ï¡¢JDK 7°Ê¹ßÈó¿ä¾©¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢JDK¤Î¼¡¤Î¥á¥¸¥ã¡¼¡¦¥ê¥ê¡¼¥¹¤Çºï½ü¤µ¤ì¤ëͽÄê¤Ç¤¹¡£\f2javac(1)\fP¥Ä¡¼¥ë¤ÇÍøÍѲÄǽ¤Ê¥ª¥×¥·¥ç¥ó¤È¡¢¥Ñ¥Ã¥±¡¼¥¸\f2javax.annotation.processing\fP¤ª¤è¤Ó\f2javax.lang.model\fP¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ëAPI¤ò»ÈÍѤ·¤Æ¡¢Ãí¼á¤ò½èÍý¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+javac(1)¡¢java(1) -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/extcheck.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/extcheck.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,55 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH extcheck 1 "07 May 2011" -+.TH extcheck 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+extcheck \- jar¤Î¶¥¹ç¸¡½Ð¥æ¡¼¥Æ¥£¥ê¥Æ¥£ -+.LP -+.LP -+\f3extcheck\fP¤Ï¡¢¥¿¡¼¥²¥Ã¥È¤Îjar¥Õ¥¡¥¤¥ë¤È¸½ºß¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë³ÈÄ¥µ¡Ç½¤Îjar¥Õ¥¡¥¤¥ë´Ö¤Î¥Ð¡¼¥¸¥ç¥ó¤Î¶¥¹ç¤ò¸¡½Ð¤·¤Þ¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+extcheck [ \-verbose ] targetfile.jar -+.fl -+\fP -+.fi -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3extcheck\fP¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ï¡¢»ØÄꤵ¤ì¤¿Jar¥Õ¥¡¥¤¥ë¤Î¥¿¥¤¥È¥ë¤ª¤è¤Ó¥Ð¡¼¥¸¥ç¥ó¤¬Java(tm) SDK¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë³ÈÄ¥µ¡Ç½¤È¶¥¹ç¤·¤Æ¤¤¤Ê¤¤¤«¤ò¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£³ÈÄ¥µ¡Ç½¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëÁ°¤Ë¡¢¤³¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ò»ÈÍѤ·¤Æ¡¢Æ±¤¸¥Ð¡¼¥¸¥ç¥ó¤Þ¤¿¤Ï¤è¤ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Î³ÈÄ¥µ¡Ç½¤¬¤¹¤Ç¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¤«¤É¤¦¤«¤òÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f3extcheck\fP¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ï¡¢\f2targetfile.jar\fP¥Õ¥¡¥¤¥ë¤Î¥Þ¥Ë¥Õ¥§¥¹¥ÈÆâ¤Î¥Ø¥Ã¥À¡¼\f2Specification\-title\fP¤ª¤è¤Ó\f2Specification\-version\fP¤ò¡¢³ÈÄ¥µ¡Ç½¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ë¸½ºß¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤ÎJar¥Õ¥¡¥¤¥ëÆâ¤ÎÂбþ¤¹¤ë¥Ø¥Ã¥À¡¼¤ÈÈæ³Ó¤·¤Þ¤¹¡£(¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢³ÈÄ¥µ¡Ç½¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢\f2jre/lib/ext\fP¤Ç¤¹¡£)\f3extcheck\fP¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ï¡¢\f2java.lang.Package.isCompatibleWith\fP¥á¥½¥Ã¥É¤ÈƱÍͤÎÊýË¡¤Ç¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òÈæ³Ó¤·¤Þ¤¹¡£ -+.LP -+.LP -+¶¥¹ç¤¬¸¡½Ð¤µ¤ì¤Ê¤¤¾ì¹ç¤Î¥ê¥¿¡¼¥ó¡¦¥³¡¼¥É¤Ï\f20\fP¤Ç¤¹¡£ -+.LP -+.LP -+³ÈÄ¥µ¡Ç½¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¤¤º¤ì¤«¤Îjar¥Õ¥¡¥¤¥ë¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¤Ë¡¢Æ±°ì¤Î\f2Specification\-title\fP¡¢¤ª¤è¤ÓƱ°ì¤Þ¤¿¤Ï¤è¤ê¿·¤·¤¤\f2Specification\-version\fPÈֹ椬¤¢¤ë¾ì¹ç¤Ï¡¢¥¼¥í¤Ç¤Ê¤¤¥¨¥é¡¼¡¦¥³¡¼¥É¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£\f2targetfile.jar\fP¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¤Ë\f2Specification\-title\fP¤Þ¤¿¤Ï\f2Specification\-version\fP°À¤¬¤Ê¤¤¾ì¹ç¤â¡¢¥¼¥í¤Ç¤Ê¤¤¥¨¥é¡¼¡¦¥³¡¼¥É¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-verbose -+³ÈÄ¥µ¡Ç½¥Ç¥£¥ì¥¯¥È¥êÆâ¤ÎJar¥Õ¥¡¥¤¥ë¤ò¡¢¥Á¥§¥Ã¥¯»þ¤Ë°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£¤Þ¤¿¡¢¥¿¡¼¥²¥Ã¥Èjar¥Õ¥¡¥¤¥ë¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¤Î°À¡¢¤ª¤è¤Ó¶¥¹ç¤¹¤ëjar¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¤âÊó¹ð¤·¤Þ¤¹¡£ -+.TP 3 -+\-Joption -+Java²¾ÁÛ¥Þ¥·¥ó¤Ë\f2option\fP¤òÅϤ·¤Þ¤¹¡£\f2option\fP¤Ë¤Ï¡¢java(1)¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥Ú¡¼¥¸¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë¥ª¥×¥·¥ç¥ó¤ò1¤Ä»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.LP -+jar(1) -+.LP -+ ---- jdk/src/bsd/doc/man/ja/idlj.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/idlj.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,720 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH idlj 1 "07 May 2011" -+.TH idlj 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+idlj \- IDL\-to\-Java¥³¥ó¥Ñ¥¤¥é -+.LP -+\f3idlj\fP¤Ï¡¢»ØÄꤵ¤ì¤¿IDL¥Õ¥¡¥¤¥ë¤«¤éJava¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÀ¸À®¤·¤Þ¤¹¡£ -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+idlj [ \fP\f3options\fP\f3 ] \fP\f4idl\-file\fP\f3 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f2idl\-file\fP¤Ï¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹ÄêµÁ¸À¸ì(IDL)¤Ë¤è¤ëÄêµÁ¤¬Æþ¤Ã¤¿¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ç¤¹¡£\f2options\fP¤Î½çÈÖ¤ÏǤ°Õ¤Ç¤¹¤¬¡¢\f2idl\-file\fP¤è¤ê¤âÁ°¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+IDL\-to\-Java¥³¥ó¥Ñ¥¤¥é¤Ï¡¢»ØÄꤵ¤ì¤¿IDL¥Õ¥¡¥¤¥ë¤ËÂФ·¤ÆJava¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÀ¸À®¤·¤Þ¤¹¡£¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Î¾ÜºÙ¤Ï¡¢ -+.na -+\f2OMG IDL to Java Language Mapping Specification\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/mapping/jidlMapping.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£IDL\-to\-Java¥³¥ó¥Ñ¥¤¥é¤Î°ÊÁ°¤Î¥ê¥ê¡¼¥¹¤ÎÃæ¤Ë¤Ï¡¢\f2idltojava\fP¤È¤¤¤¦Ì¾Á°¤À¤Ã¤¿¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SS -+¥¯¥é¥¤¥¢¥ó¥È¡¦¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ª¤è¤Ó¥µ¡¼¥Ð¡¼¡¦¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Îȯ¹Ô -+.LP -+.LP -+My.idl¤È¤¤¤¦Ì¾Á°¤ÎIDL¥Õ¥¡¥¤¥ë¤ËÂФ·¤ÆJava¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÀ¸À®¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj My.idl -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤ì¤Ë¤è¤ê¡¢¥¯¥é¥¤¥¢¥ó¥È¦¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ÈÅù²Á¤Ç¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-fclient\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+¥¯¥é¥¤¥¢¥ó¥È¦¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ë¤Ï¡¢¥µ¡¼¥Ð¡¼Â¦¤Î¥¹¥±¥ë¥È¥ó¤ÏÁȤ߹þ¤Þ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ËÂФ·¤Æ¥µ¡¼¥Ð¡¼Â¦¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÀ¸À®¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-fserver\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+¥µ¡¼¥Ð¡¼Â¦¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ë¤Ï¡¢¥¯¥é¥¤¥¢¥ó¥È¦¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Î¾¤Ë¡¢¥¹¥±¥ë¥È¥ó¤â´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤é¤Ï¤¹¤Ù¤Æ¡¢\f2POA\fP(¤Ä¤Þ¤ê·Ñ¾µ¥â¥Ç¥ë)¥¯¥é¥¹¤Ç¤¹¡£¥¯¥é¥¤¥¢¥ó¥È¦¤È¥µ¡¼¥Ð¡¼Â¦¤ÎξÊý¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÀ¸À®¤¹¤ë¾ì¹ç¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É(¤É¤ì¤âÅù²Á)¤Î¤¦¤Á¤Î1¤Ä¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-fclient \-fserver\fP My.idl -+.fl -+idlj \f3\-fall\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+¥µ¡¼¥Ð¡¼Â¦¤Ç²Äǽ¤Ê¥â¥Ç¥ë¤Ï2¤Ä¤¢¤ê¤Þ¤¹¡£·Ñ¾µ¥â¥Ç¥ë¤ÈTie°Ñ¾ù¥â¥Ç¥ë¤Ç¤¹¡£ -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Î¥µ¡¼¥Ð¡¼Â¦¤Î¥â¥Ç¥ë¤Ï¡¢\f2°Ü¿£²Äǽ¥µ¡¼¥Ð¥ó¥È·Ñ¾µ¥â¥Ç¥ë\fP¤Ç¤¹¡£\f2My.idl\fPÆâ¤Ç\f2My\fP¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢\f2MyPOA.java\fP¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤³¤Î¼ÂÁõ¤Ï\f2My\fP¤ËÄ󶡤·¡¢\f2MyPOA\fP¤ò·Ñ¾µ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f2MyPOA.java\fP¤Ï -+.na -+\f2org.omg.PortableServer.Servant\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/Servant.html¤ò³ÈÄ¥¤¹¤ë¥¹¥È¥ê¡¼¥à¥Ù¡¼¥¹¤Î¥¹¥±¥ë¥È¥ó¤Ç¡¢¥¹¥±¥ë¥È¥ó¤¬¼ÂÁõ¤¹¤ëIDL¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤ë\f2InvokeHandler\fP¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÈÁàºî¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤Þ¤¹¡£ -+.LP -+.LP -+.na -+\f2Portable Object Adapter(POA)\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/POA.html¤Î\f2PortableServer\fP¥â¥¸¥å¡¼¥ë¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¤Î\f2Servant\fP·¿¤òÄêµÁ¤·¤Þ¤¹¡£Java¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ç¤Ï¡¢\f2Servant\fP·¿¤ÏJava¤Î\f2org.omg.PortableServer.Servant\fP¥¯¥é¥¹¤Ë¥Þ¥Ã¥×¤µ¤ì¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤Ï¡¢¤¹¤Ù¤Æ¤ÎPOA¥µ¡¼¥Ð¥ó¥È¼ÂÁõ¤Î¥Ù¡¼¥¹¡¦¥¯¥é¥¹¤È¤·¤Æµ¡Ç½¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥×¥í¥°¥é¥Þ¤¬¸Æ¤Ó½Ð¤¹¤³¤È¤Î¤Ç¤¤ë¤¤¤¯¤Ä¤«¤Î¥á¥½¥Ã¥É¤Î¾¤Ë¡¢POA¤½¤Î¤â¤Î¤Ë¤è¤Ã¤Æ¸Æ¤Ó½Ð¤µ¤ì¡¢¥µ¡¼¥Ð¥ó¥È¤ÎÆ°ºî¤òÀ©¸æ¤¹¤ë¤¿¤á¤Ë¥æ¡¼¥¶¡¼¤¬¥ª¡¼¥Ð¡¼¥é¥¤¥É¤Ç¤¤ë¥á¥½¥Ã¥É¤âÄ󶡤·¤Þ¤¹¡£ -+.LP -+.LP -+·Ñ¾µ¥â¥Ç¥ë¤Î¤â¤¦1¤Ä¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢\f2\-oldImplBase\fP¥Õ¥é¥°¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢J2SE 1.4¤è¤êÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤ÎJava¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤È¸ß´¹À¤Î¤¢¤ë¥µ¡¼¥Ð¡¼Â¦¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÀ¸À®¤¹¤ë¤³¤È¤Ç¤¹¡£¤¿¤À¤·¡¢\f2\-oldImplBase\fP¥Õ¥é¥°¤ò»ÈÍѤ¹¤ë¤Î¤Ï¡¢É¸½àŪ¤Ê¼êË¡¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤³¤ì¤é¤ÎAPI¤Ïº£¸åÈó¿ä¾©¤Ë¤Ê¤ëͽÄê¤Ç¤¹¡£¤³¤Î¥Õ¥é¥°¤ò»ÈÍѤ¹¤ë¤Î¤Ï¡¢J2SE 1.3¤Çµ½Ò¤µ¤ì¤¿´û¸¤Î¥µ¡¼¥Ð¡¼¤È¤Î¸ß´¹À¤¬É¬Íפʾì¹ç¤Î¤ß¤Ç¤¹¡£¤½¤Î¾ì¹ç¤Ë¤Ï´û¸¤ÎMAKEFILE¤òÊѹ¹¤·¡¢\f2idlj\fP¥³¥ó¥Ñ¥¤¥é¤Ë\f2\-oldImplBase\fP¥Õ¥é¥°¤òÄɲ乤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤¦¤·¤Ê¤¤¤È¡¢POA¥Ù¡¼¥¹¤Î¥µ¡¼¥Ð¡¼Â¦¥Þ¥Ã¥Ô¥ó¥°¤¬À¸À®¤µ¤ì¤Þ¤¹¡£²¼°Ì¸ß´¹À¤Î¤¢¤ë¥µ¡¼¥Ð¡¼Â¦¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÀ¸À®¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-fclient \-fserver\fP \f3\-oldImplBase\fP My.idl -+.fl -+idlj \f3\-fall\fP \f3\-oldImplBase\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+\f2My.idl\fPÆâ¤Ç\f2My\fP¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢\f2_MyImplBase.java\fP¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤¹¡£\f2My\fP¤ËÂФ·¤Æ¤½¤Î¼ÂÁõ¤òÄ󶡤·¡¢¤³¤Î¼ÂÁõ¤Ï\f2_MyImplBase\fP¤«¤é·Ñ¾µ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¤â¤¦1¤Ä¤Î¥µ¡¼¥Ð¡¼Â¦¥â¥Ç¥ë¤Ï¡¢Tie¥â¥Ç¥ë¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¤¹¡£¤³¤Î¥µ¡¼¥Ð¡¼Â¦¥â¥Ç¥ë¤Ï¡¢°Ñ¾ù¥â¥Ç¥ë¤Ç¤¹¡£Tie¤È¥¹¥±¥ë¥È¥ó¤òƱ»þ¤ËÀ¸À®¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¤¿¤á¡¢¤½¤ì¤é¤ÏÊÌ¡¹¤ËÀ¸À®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¼¡¤Î¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤Æ¡¢Tie¥â¥Ç¥ëÍѤΥХ¤¥ó¥Ç¥£¥ó¥°¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-fall\fP My.idl -+.fl -+idlj \f3\-fallTIE\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+\f2My\fP¤È¤¤¤¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¾ì¹ç¡¢¾åµ¤Î2ÈÖÌܤΥ³¥Þ¥ó¥É¤Ë¤è¤ê¡¢\f2MyPOATie.java\fP¤¬À¸À®¤µ¤ì¤Þ¤¹¡£\f2MyPOATie\fP¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Ï¡¢\f2delegate\fP¤ò¼è¤ê¤Þ¤¹¡£¤³¤ÎÎã¤Ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤ÎPOA¥â¥Ç¥ë¤ò»ÈÍѤ·¤Æ¤¤¤ë¤¿¤á¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¤Ë¤â\f2poa\fP¤¬É¬ÍפǤ¹¡£\f2delegate\fP¤ËÂФ·¤Æ¼ÂÁõ¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤Î¼ÂÁõ¤Ï\f2MyOperations\fP¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤«¤é·Ñ¾µ¤¹¤ëɬÍפ¬¤¢¤ë¤Î¤ß¤Ç¡¢¤½¤Î¾¤Î¥¯¥é¥¹¤«¤é·Ñ¾µ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¤·¤«¤·¡¢¤³¤Î¼ÂÁõ¤òORB¤È°ì½ï¤Ë»ÈÍѤ¹¤ë¤Ë¤Ï¡¢\f2MyPOATie\fPÆâ¤Ç¼ÂÁõ¤ò¥é¥Ã¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ ORB orb = ORB.init(args, System.getProperties()); -+.fl -+ -+.fl -+ // Get reference to rootpoa & activate the POAManager -+.fl -+ POA rootpoa = (POA)orb.resolve_initial_references("RootPOA"); -+.fl -+ rootpoa.the_POAManager().activate(); -+.fl -+ -+.fl -+ // create servant and register it with the ORB -+.fl -+ MyServant myDelegate = new MyServant(); -+.fl -+ myDelegate.setORB(orb); -+.fl -+ -+.fl -+ // create a tie, with servant being the delegate. -+.fl -+ MyPOATie tie = new MyPOATie(myDelegate, rootpoa); -+.fl -+ -+.fl -+ // obtain the objectRef for the tie -+.fl -+ My ref = tie._this(orb); -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¾¤Î¼ÂÁõ¤«¤é·Ñ¾µ¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¡¢É¸½à¤Î·Ñ¾µ¥â¥Ç¥ë¤Ç¤Ï¤Ê¤¯Tie¥â¥Ç¥ë¤ò»ÈÍѤ¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£Java¤Î¾ì¹ç¤Ï¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î·Ñ¾µ¤Î¸Ä¿ô¤ËÀ©¸Â¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¥¯¥é¥¹¤Î·Ñ¾µ¤Ë»ÈÍѤǤ¤ë¥¹¥í¥Ã¥È¤Ï1¤Ä¤Î¤ß¤Ç¤¹¡£·Ñ¾µ¥â¥Ç¥ë¤ò»ÈÍѤ·¤¿¾ì¹ç¤Ï¡¢¤½¤Î¥¹¥í¥Ã¥È¤¬Àêͤµ¤ì¤Þ¤¹¡£Tie¥â¥Ç¥ë¤ò»ÈÍѤ·¤¿¾ì¹ç¤Ï¡¢¤½¤Î¥¹¥í¥Ã¥È¤¬»ÈÍѤµ¤ì¤º¡¢¥æ¡¼¥¶¡¼¤¬Æȼ«¤ÎÌÜŪ¤Ç»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢¤³¤ÎÊýË¡¤Ë¤Ï¡¢´ÖÀÜÀ¤Î¥ì¥Ù¥ë¤¬1¤ÄƳÆþ¤µ¤ì¤ë¤È¤¤¤¦·çÅÀ¤¬¤¢¤ê¤Þ¤¹¡£¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤È¤¤Ë¡¢Í¾Ê¬¤Ê¥á¥½¥Ã¥É¸Æ½Ð¤·¤¬1²óȯÀ¸¤·¤Þ¤¹¡£ -+.LP -+.LP -+J2SE 1.4¤è¤êÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤ÎJava¸À¸ì¤Ë¥Þ¥Ã¥Ô¥ó¥°¤¹¤ëIDL¤Î¥Ð¡¼¥¸¥ç¥ó¤È¸ß´¹À¤Î¤¢¤ë¡¢¥µ¡¼¥Ð¡¼Â¦¤ÎTie¥â¥Ç¥ë¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÀ¸À®¤¹¤ëÊýË¡¤Ï¡¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-oldImplBase\fP \f3\-fall\fP My.idl -+.fl -+idlj \f3\-oldImplBase\fP \f3\-fallTIE\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+\f2My\fP¤È¤¤¤¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¾ì¹ç¡¢¤³¤ì¤Ë¤è¤ê\f2My_Tie.java\fP¤¬À¸À®¤µ¤ì¤Þ¤¹¡£\f2My_Tie\fP¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Ï¡¢\f2impl\fP¤ò¼è¤ê¤Þ¤¹¡£\f2impl\fP¤ËÂФ·¤Æ¼ÂÁõ¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¡¢¤½¤Î¼ÂÁõ¤Ï\f2HelloOperations\fP¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤«¤é·Ñ¾µ¤¹¤ëɬÍפ¬¤¢¤ë¤Î¤ß¤Ç¡¢¤½¤Î¾¤Î¥¯¥é¥¹¤«¤é·Ñ¾µ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¤·¤«¤·¡¢¤³¤Î¼ÂÁõ¤òORB¤È°ì½ï¤Ë»ÈÍѤ¹¤ë¤Ë¤Ï¡¢\f2My_Tie\fPÆâ¤Ç¼ÂÁõ¤ò¥é¥Ã¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ ORB orb = ORB.init(args, System.getProperties()); -+.fl -+ -+.fl -+ // create servant and register it with the ORB -+.fl -+ MyServant myDelegate = new MyServant(); -+.fl -+ myDelegate.setORB(orb); -+.fl -+ -+.fl -+ // create a tie, with servant being the delegate. -+.fl -+ MyPOATie tie = new MyPOATie(myDelegate); -+.fl -+ -+.fl -+ // obtain the objectRef for the tie -+.fl -+ My ref = tie._this(orb); -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+ȯ¹Ô¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ÎÂåÂØ°ÌÃ֤λØÄê -+.LP -+.LP -+ȯ¹Ô¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê°Ê³°¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¯¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤Ç¥³¥ó¥Ñ¥¤¥é¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-td /altdir\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+\f2My\fP¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¾ì¹ç¡¢¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ï¡¢\f2./My.java\fP¤Ç¤Ï¤Ê¤¯¡¢\f2/altdir/My.java\fP¤Ê¤É¤Ëȯ¹Ô¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SS -+¥¤¥ó¥¯¥ë¡¼¥É¡¦¥Õ¥¡¥¤¥ë¤ÎÂåÂØ°ÌÃ֤λØÄê -+.LP -+.LP -+\f2My.idl\fP¤Ë¤â¤¦1¤Ä¤ÎIDL¥Õ¥¡¥¤¥ë\f2MyOther.idl\fP¤¬¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¥í¡¼¥«¥ë¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë\f2MyOther.idl\fP¤¬¤¢¤ë¤â¤Î¤ÈÁÛÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤¬\f2/includes\fP¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤Ç¥³¥ó¥Ñ¥¤¥é¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-i /includes\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+¤¿¤È¤¨¤Ð¡¢\f2/moreIncludes\fP¤Ë¤¢¤ë\f2Another.idl\fP¤â\f2My.idl\fP¤Ë¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢¼¡¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤Ç¥³¥ó¥Ñ¥¤¥é¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-i /includes \-i /moreIncludes\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+¤³¤Î¤è¤¦¤Ê·Á¼°¤Ç¥¤¥ó¥¯¥ë¡¼¥É¤ò»ØÄꤹ¤ë¤È¡¢¥³¥Þ¥ó¥É¤¬Ä¹¤¯¤ÆÊ£»¨¤Ë¤Ê¤ê¤Þ¤¹¡£¤½¤³¤Ç¡¢¥¤¥ó¥¯¥ë¡¼¥É¡¦¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤ë¾ì½ê¤ò¥³¥ó¥Ñ¥¤¥é¤Ë»Ø¼¨¤¹¤ë¤¿¤á¤ÎÊ̤ÎÊýË¡¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ÎÊýË¡¤Ï¡¢´Ä¶ÊÑ¿ô¤Î¹Í¤¨Êý¤È»÷¤Æ¤¤¤Þ¤¹¡£CLASSPATH¤Ë¥ê¥¹¥È¤µ¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ë\f2idl.config\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹¡£¤½¤Î\f2idl.config\fP¤ÎÃæ¤Ë¡¢¼¡¤Î¤è¤¦¤Ê·Á¼°¤Î¹Ô¤òÆþ¤ì¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+includes=/includes;/moreIncludes -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤·¡¢¥¤¥ó¥¯¥ë¡¼¥É¡¦¥ê¥¹¥È¤òÆɤ߹þ¤ß¤Þ¤¹¡£¤³¤ÎÎã¤Ç¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê¤Î´Ö¤Î¶èÀÚ¤êʸ»ú¤Ï¥»¥ß¥³¥í¥ó(;)¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤Î¶èÀÚ¤êʸ»ú¤Ï¡¢¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢Windows¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï¥»¥ß¥³¥í¥ó¤Ç¤¹¤¬¡¢Unix¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï¥³¥í¥ó¤Ç¤¹¡£\f2includes\fP¤Î¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥¯¥é¥¹¡¦¥Ñ¥¹¤ÎÀßÄê\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#general¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SS -+¥¤¥ó¥¯¥ë¡¼¥É¡¦¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ë¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Îȯ¹Ô -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë»ØÄꤷ¤¿IDL¥Õ¥¡¥¤¥ë¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ä¹½Â¤ÂΤʤɤˤĤ¤¤Æ¤Î¤ß¡¢Java¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë·¿¤Ë¤Ä¤¤¤Æ¤ÏÀ¸À®¤µ¤ì¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î2¤Ä¤ÎIDL¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£ -+.LP -+ -+.LP -+.LP -+\f4My.idl\fP -+.LP -+.nf -+\f3 -+.fl -+#include <MyOther.idl> -+.fl -+interface My -+.fl -+{ -+.fl -+}; -+.fl -+\fP -+.fi -+ -+.LP -+ -+.LP -+.LP -+\f4MyOther.idl\fP -+.LP -+.nf -+\f3 -+.fl -+interface MyOther -+.fl -+{ -+.fl -+}; -+.fl -+\fP -+.fi -+ -+.LP -+ -+.LP -+.LP -+¼¡¤Î¥³¥Þ¥ó¥É¤Ç¤Ï¡¢\f2My\fP¤ËÂФ¹¤ëJava¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Î¤ß¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj My.idl -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f2My.idl\fP¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë·¿¤È¡¢\f2My.idl\fP¤Ë¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤¿¥Õ¥¡¥¤¥ë(¤³¤ÎÎã¤Ç¤Ï\f2MyOther.idl\fP)¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë·¿¤¹¤Ù¤Æ¤Ë¤Ä¤¤¤ÆÀ¸À®¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-emitAll\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+¤³¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥ë¡¼¥ë¤Ë´Ø¤·¤ÆÃí°Õ¤¬É¬ÍפÊÅÀ¤¬¤¢¤ê¤Þ¤¹¡£¥°¥í¡¼¥Ð¥ë¡¦¥¹¥³¡¼¥×¤Ë»ØÄꤷ¤¿\f2#include\fPʸ¤Ï¡¢Á°½Ò¤Î¤È¤ª¤ê¤Ë½èÍý¤µ¤ì¤Þ¤¹¡£¤³¤ì¤é¤Î\f2#include\fPʸ¤Ï¡¢¥¤¥ó¥Ý¡¼¥Èʸ¤È¸«¤Ê¤¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤½¤ì¤ËÂФ·¤Æ¡¢Â¾¤ÎÄêµÁ¤Ë°Ï¤Þ¤ì¤¿¥¹¥³¡¼¥×Æâ¤Ë»ØÄꤷ¤¿\f2#include\fPʸ¤Ï¡¢ËÜÅö¤Î°ÕÌ£¤Ç¤Î\f2#include\fPʸ¤È¤·¤Æ½èÍý¤µ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ë¤¢¤ë¥³¡¼¥É¤¬¡¢¸µ¤Î¥Õ¥¡¥¤¥ë¤Ë¤½¤Î¤Þ¤Þ»ØÄꤵ¤ì¤Æ¤¤¤ë¤«¤Î¤è¤¦¤Ë½èÍý¤µ¤ì¡¢¤½¤ì¤ËÂФ·¤ÆJava¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤¬È¯¹Ô¤µ¤ì¤Þ¤¹¡£¼¡¤Ï¤½¤ÎÎã¤Ç¤¹¡£ -+.LP -+ -+.LP -+.LP -+\f4My.idl\fP -+.LP -+.nf -+\f3 -+.fl -+#include <MyOther.idl> -+.fl -+interface My -+.fl -+{ -+.fl -+ #include <Embedded.idl> -+.fl -+}; -+.fl -+\fP -+.fi -+ -+.LP -+ -+.LP -+.LP -+\f4MyOther.idl\fP -+.LP -+.nf -+\f3 -+.fl -+interface MyOther -+.fl -+{ -+.fl -+}; -+.fl -+\fP -+.fi -+ -+.LP -+ -+.LP -+.LP -+\f4Embedded.idl\fP -+.LP -+.nf -+\f3 -+.fl -+enum E {one, two, three}; -+.fl -+\fP -+.fi -+ -+.LP -+ -+.LP -+.LP -+¤³¤Î¤È¤¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢ -+.LP -+.nf -+\f3 -+.fl -+idlj My.idl -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¼¡¤Î¤è¤¦¤Ê°ìÏ¢¤ÎJava¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+./MyHolder.java -+.fl -+./MyHelper.java -+.fl -+./_MyStub.java -+.fl -+./MyPackage -+.fl -+./MyPackage/EHolder.java -+.fl -+./MyPackage/EHelper.java -+.fl -+./MyPackage/E.java -+.fl -+./My.java -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥¤¥ó¥Ý¡¼¥Èʸ¤È¸«¤Ê¤µ¤ì¤ë\f2#include\fP¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤¿¤¿¤á¡¢\f2MyOther.java\fP¤ÏÀ¸À®¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£¤¿¤À¤·¡¢ËÜÅö¤Î°ÕÌ£¤Ç¤Î\f2#include\fP¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤¿¤¿¤á¡¢\f2E.java\fP¤ÏÀ¸À®\f2¤µ¤ì¤Þ¤·¤¿\fP¡£¤µ¤é¤Ë¡¢\f2Embedded.idl\fP¤¬\f2My\fP¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥¹¥³¡¼¥×Æâ¤Ë¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤Æ¤¤¤¿¤¿¤á¡¢\f2My\fP¤Î¥¹¥³¡¼¥×Æâ(¤Ä¤Þ¤ê¡¢\f2MyPackage\fPÆâ)¤ËÀ¸À®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.LP -+¾åµ¤ÎÎã¤Ç\f2\-emitAll\fP¥Õ¥é¥°¤ò»ÈÍѤ¹¤ì¤Ð¡¢¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤¿¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤Ë¤¢¤ë¤¹¤Ù¤Æ¤Î·¿¤¬È¯¹Ô¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SS -+¥Ñ¥Ã¥±¡¼¥¸¤ÎÀÜƬ¼¤ÎÁÞÆþ -+.LP -+.LP -+ABC¤È¤¤¤¦Ì¾Á°¤Î²ñ¼Ò¤Î¤¿¤á¤Ëºî¶È¤·¤Æ¤¤¤Æ¡¢¼¡¤Î¤è¤¦¤ÊIDL¥Õ¥¡¥¤¥ë¤ò¹½ÃÛ¤·¤¿¤È¤·¤Þ¤·¤ç¤¦¡£ -+.LP -+ -+.LP -+.LP -+\f4Widgets.idl\fP -+.LP -+.nf -+\f3 -+.fl -+module Widgets -+.fl -+{ -+.fl -+ interface W1 {...}; -+.fl -+ interface W2 {...}; -+.fl -+}; -+.fl -+\fP -+.fi -+ -+.LP -+ -+.LP -+.LP -+¤³¤Î¥Õ¥¡¥¤¥ë¤ËÂФ·¤ÆIDL\-to\-Java¥³¥ó¥Ñ¥¤¥é¤ò¼Â¹Ô¤¹¤ë¤È¡¢\f2W1\fP¤ª¤è¤Ó\f2W2\fP¤ËÂФ¹¤ëJava¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤¬\f2Widgets\fP¥Ñ¥Ã¥±¡¼¥¸Æâ¤ËÀ¸À®¤µ¤ì¤Þ¤¹¡£¤·¤«¤·¡¢¶È³¦¤Î´·Îã¤Ë¤è¤ë¤È¡¢²ñ¼Ò¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ï¡¢\f2com.<company name>\fP¤È¤¤¤¦Ì¾Á°¤Î¥Ñ¥Ã¥±¡¼¥¸Æâ¤ËÃÖ¤¯¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢\f2Widgets\fP¥Ñ¥Ã¥±¡¼¥¸¤Ç¤ÏÉÔ½½Ê¬¤Ç¤¹¡£´·Îã¤Ë½¾¤¦¤Ë¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¤ò\f2com.abc.Widgets\fP¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥Ñ¥Ã¥±¡¼¥¸ÀÜƬ¼¤ò\f2Widgets\fP¥â¥¸¥å¡¼¥ë¤ËÉղ乤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-pkgPrefix Widgets com.abc\fP Widgets.idl -+.fl -+.fi -+ -+.LP -+.LP -+\f2Widgets.idl\fP¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ¤¤¤ëIDL¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¾ì¹ç¤Ï¡¢¤½¤Î¥³¥Þ¥ó¥É¤Ë¤â\f2\-pkgPrefix\fP¥Õ¥é¥°¤¬É¬ÍפǤ¹¡£¤³¤Î¥Õ¥é¥°¤ò»ØÄꤷ¤Ê¤¤¤È¡¢¤½¤ÎIDL¥Õ¥¡¥¤¥ë¤Ï¡¢\f2com.abc.Widgets\fP¥Ñ¥Ã¥±¡¼¥¸¤Ç¤Ï¤Ê¤¯¡¢\f2Widgets\fP¥Ñ¥Ã¥±¡¼¥¸¤ò¸¡º÷¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+ÀÜƬ¼¤¬É¬Íפʥѥ屡¼¥¸¤¬¤¤¤¯¤Ä¤â¤¢¤ë¾ì¹ç¤Ï¡¢Á°½Ò¤Î\f2idl.config\fP¥Õ¥¡¥¤¥ë¤ÇÀÜƬ¼¤ò»ØÄꤹ¤ë¤Î¤¬´Êñ¤Ç¤¹¡£¥Ñ¥Ã¥±¡¼¥¸¤ÎÀÜƬ¼¤ò»ØÄꤹ¤ë¹Ô¤Ï¡¢¤½¤ì¤¾¤ì¼¡¤Î·Á¼°¤Çµ½Ò¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+PkgPrefix.<type>=<prefix> -+.fl -+\fP -+.fi -+ -+.LP -+¤·¤¿¤¬¤Ã¤Æ¡¢¾åµ¤ÎÎã¤Î¾ì¹ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ëµ½Ò¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+PkgPrefix.Widgets=com.abc -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¤â¡¢¥ê¥Ý¥¸¥È¥êID¤Ï±Æ¶Á¤ò¼õ¤±¤Þ¤»¤ó¡£ -+.LP -+.SS -+¥³¥ó¥Ñ¥¤¥ëÁ°¤Î¥·¥ó¥Ü¥ë¤ÎÄêµÁ -+.LP -+.LP -+¥³¥ó¥Ñ¥¤¥ëÍѤΥ·¥ó¥Ü¥ë¤¬IDL¥Õ¥¡¥¤¥ëÆâ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¤½¤Î¥·¥ó¥Ü¥ë¤òÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢¤¿¤È¤¨¤Ð¡¢¥Ð¥¤¥ó¥Ç¥£¥ó¥°Æâ¤Ë¥Ç¥Ð¥Ã¥°¡¦¥³¡¼¥É¤òÁȤßÆþ¤ì¤ë¤È¤¤Ë»ÈÍѤ·¤Þ¤¹¡£¼¡¤Î¥³¥Þ¥ó¥É¤Ï¡¢ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-d\fP MYDEF My.idl -+.fl -+.fi -+ -+.LP -+.LP -+\f2My.idl\fPÆâ¤Ë\f2#define MYDEF\fP¤È¤¤¤¦¹Ô¤ò»ØÄꤷ¤¿¾ì¹ç¤ÈÅù²Á¤Ç¤¹¡£ -+.LP -+.SS -+´û¸¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ÎÊÝ»ý -+.LP -+.LP -+Java¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¾ì¹ç¤Ï¡¢\f2\-keep\fP¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤È¡¢¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤ë¾å½ñ¤¤ò²óÈò¤Ç¤¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¤¹¤Ç¤Ë¸ºß¤¹¤ë¤«¤É¤¦¤«¤Ë¤«¤«¤ï¤é¤º¡¢¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ò¥«¥¹¥¿¥Þ¥¤¥º¤·¤¿¾ì¹ç(¤¿¤À¤·¡¢¤½¤ì¤é¤ÎÆâÍƤ¬Àµ³Î¤Ç¤¢¤ë¤È¤°Ê³°¤Ï¥«¥¹¥¿¥Þ¥¤¥º¤ÏÈò¤±¤ë)¡¢\f2\-keep\fP¥ª¥×¥·¥ç¥ó¤ÏÍÍѤǤ¹¡£¼¡¤Î¥³¥Þ¥ó¥É¤Ï¡¢ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-keep\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+¥¯¥é¥¤¥¢¥ó¥È¦¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ç¡¢¤Þ¤À¸ºß¤·¤Ê¤¤¤â¤Î¤ò¤¹¤Ù¤Æȯ¹Ô¤·¤Þ¤¹¡£ -+.LP -+.SS -+¥³¥ó¥Ñ¥¤¥ë¤Î¿ÊĽ¾õ¶·¤Îɽ¼¨ -+.LP -+.LP -+IDL\-to\-Java¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¼Â¹Ô¤Î³ÆÃʳ¬¤Ç¾õÂÖ¥á¥Ã¥»¡¼¥¸¤òÀ¸À®¤·¤Þ¤¹¡£¡Ö¾éĹ¡×¥â¡¼¥É¤ò¥¢¥¯¥Æ¥£¥Ö²½¤¹¤ë¤Ë¤Ï¡¢\f2\-v\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \fP\f3\-v\fP My.idl -+.fl -+.fi -+ -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¾éĹ¥â¡¼¥É¤Ç¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£ -+.LP -+.SS -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤Îɽ¼¨ -+.LP -+.LP -+IDL\-to\-Java¥³¥ó¥Ñ¥¤¥é¤Î¥Ó¥ë¥É¡¦¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨¤¹¤ë¤Ë¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç\f2\-version\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+idlj \-version -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤¿¥Ð¥¤¥ó¥Ç¥£¥ó¥°Æâ¤Ë¤â½ñ¤¹þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë»ØÄꤹ¤ë¤È¡¢¤½¤ì°Ê³°¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤â¡¢¤¹¤Ù¤Æ̵»ë¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-d symbol -+¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢IDL¥Õ¥¡¥¤¥ë¤Ë¼¡¤Î¤è¤¦¤Ê¹Ô¤òÄɲä·¤¿¾ì¹ç¤ÈÅù²Á¤Ç¤¹¡£ -+.nf -+\f3 -+.fl -+#define \fP\f4symbol\fP\f3 -+.fl -+\fP -+.fi -+.TP 3 -+\-emitAll -+\f2#include\fP¥Õ¥¡¥¤¥ëÆâ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤â´Þ¤á¤Æ¡¢¤¹¤Ù¤Æ¤Î·¿¤òȯ¹Ô¤·¤Þ¤¹¡£ -+.TP 3 -+\-fside -+ȯ¹Ô¤¹¤ë¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÄêµÁ¤·¤Þ¤¹¡£\f2side\fP¤Ï\f2client\fP¡¢\f2server\fP¡¢\f2serverTIE\fP¡¢\f2all\fP¡¢\f2allTIE\fP¤Î¤¤¤º¤ì¤«¤Ë¤Ê¤ê¤Þ¤¹¡£\f2\-fserverTIE\fP¤Þ¤¿¤Ï\f2\-fallTIE\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢°Ñ¾ù¥â¥Ç¥ë¡¦¥¹¥±¥ë¥È¥ó¤¬È¯¹Ô¤µ¤ì¤Þ¤¹¡£¤³¤Î¥Õ¥é¥°¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢\f2\-fclient\fP¤¬»ØÄꤵ¤ì¤¿¤â¤Î¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-i include\-path -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥¤¥ó¥¯¥ë¡¼¥É¡¦¥Õ¥¡¥¤¥ë¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¸¡º÷¤µ¤ì¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢Â¾¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÄɲäǤ¤Þ¤¹¡£ -+.TP 3 -+\-keep -+À¸À®¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤¬¾å½ñ¤¤µ¤ì¤Þ¤»¤ó¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¾å½ñ¤¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-noWarn -+·Ù¹ð¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.TP 3 -+\-oldImplBase -+1.4¤è¤êÁ°¤ÎJDK ORB¤È¸ß´¹À¤Î¤¢¤ë¥¹¥±¥ë¥È¥ó¤òÀ¸À®¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢POA·Ñ¾µ¥â¥Ç¥ë¤Î¥µ¡¼¥Ð¡¼Â¦¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢\f2ImplBase\fP·Ñ¾µ¥â¥Ç¥ë¤Î¥¯¥é¥¹¤Ç¤¢¤ë¥µ¡¼¥Ð¡¼Â¦¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤¬À¸À®¤µ¤ì¤ë¤Î¤Ç¡¢¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤ÎJava¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤È¤Î²¼°Ì¸ß´¹À¤¬ÆÀ¤é¤ì¤Þ¤¹¡£ -+.TP 3 -+\-pkgPrefix type prefix -+\f2type\fP¤¬¥Õ¥¡¥¤¥ë¡¦¥¹¥³¡¼¥×¤Ç¸¡½Ð¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¤½¤Î·¿¤ËÂФ·¤ÆÀ¸À®¤µ¤ì¤ë¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¡¢À¸À®¤µ¤ì¤ëJava¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Ë\f2prefix\fP¤È¤¤¤¦ÀÜƬ¼¤¬Éղ䵤ì¤Þ¤¹¡£\f2type\fP¤Ï¡¢¥È¥Ã¥×¥ì¥Ù¥ë¡¦¥â¥¸¥å¡¼¥ë¤Îñ½ã̾¤«¡¢¤É¤Î¥â¥¸¥å¡¼¥ë¤è¤ê¤â³°Â¦¤ÇÄêµÁ¤µ¤ì¤¿IDL·¿¤Îñ½ã̾¤Î¤É¤Á¤é¤«¤Ç¤¹¡£ -+.TP 3 -+\-pkgTranslate type package -+¼±Ê̻ҤÎÃæ¤Ë¥â¥¸¥å¡¼¥ë̾\f2type\fP¤¬¸¡½Ð¤µ¤ì¤ë¤È¡¢À¸À®¤µ¤ì¤ëJava¥Ñ¥Ã¥±¡¼¥¸Æâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¡¢¼±Ê̻ҤÎÃæ¤Î¤½¤Î̾Á°¤¬\f2package\fP¤ÇÃÖ¤´¹¤¨¤é¤ì¤Þ¤¹¡£ºÇ½é¤Ë\f2pkgPrefix\fP¤ÎÊѹ¹¤¬¹Ô¤ï¤ì¤Þ¤¹¡£\f2type\fP¤Ï¡¢¥È¥Ã¥×¥ì¥Ù¥ë¤Î¥â¥¸¥å¡¼¥ë¤Îñ½ã̾¡¢¤Þ¤¿¤Ï¤¹¤Ù¤Æ¤Î¥â¥¸¥å¡¼¥ë¤Î³°Éô¤ÇÄêµÁ¤µ¤ì¤¿IDL·¿¤Îñ½ã̾¤Ç¡¢´°Á´¤Ê¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ËÀµ³Î¤Ë°ìÃפ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+1¤Ä¤Î¼±Ê̻ҤÎÃæ¤ÇÊ£¿ô¤ÎÊÑ´¹¤¬¥Þ¥Ã¥Á¤¹¤ë¾ì¹ç¤Ï¡¢ºÇ¤âŤ¤¥Þ¥Ã¥Á¤¬Áª¤Ð¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ê°ú¿ô¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ -+.nf -+\f3 -+.fl -+ \-pkgTranslate foo bar \-pkgTranslate foo.baz buzz.fizz -+.fl -+\fP -+.fi -+¼¡¤Î¤è¤¦¤ÊÊÑ´¹¤¬¼Â»Ü¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+foo => bar -+.fl -+foo.boo => bar.boo -+.fl -+foo.baz => buzz.fizz -+.fl -+foo.baz.bar => buzz.fizz.bar -+.fl -+\fP -+.fi -+¼¡¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÊÑ´¹¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£ -+.RS 3 -+.TP 2 -+o -+\f2org\fP -+.TP 2 -+o -+\f2org.omg\fP¡¢¤Þ¤¿¤Ï\f2org.omg\fP¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸ -+.RE -+¤³¤ì¤é¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÊÑ´¹¤·¤è¤¦¤È¤¹¤ë¤È¡¢¸ß´¹À¤Î¤Ê¤¤¥³¡¼¥É¤¬À¸À®¤µ¤ì¡¢\f2\-pkgTranslate\fP¤Î¸å¤ÎºÇ½é¤Î°ú¿ô¤È¤·¤Æ¤½¤ì¤é¤Î¥Ñ¥Ã¥±¡¼¥¸¤ò»ÈÍѤ¹¤ë¤È¡¢¥¨¥é¡¼¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£ -+.TP 3 -+\-skeletonName xxx%yyy -+\f2xxx%yyy\fP¤¬¡¢¥¹¥±¥ë¥È¥ó¤Ë̾Á°¤òÉÕ¤±¤ë¥Ñ¥¿¡¼¥ó¤È¤·¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f2POA\fP¥Ù¡¼¥¹¡¦¥¯¥é¥¹¤Î¾ì¹ç¤Ï%POA (\f2\-fserver\fP¤Þ¤¿¤Ï\f2\-fall\fP) -+.TP 2 -+o -+\f2oldImplBase\fP¥¯¥é¥¹¤Î¾ì¹ç¤Ï_%ImplBase (\f2\-oldImplBase\fP¤«¤Ä(\f2\-fserver\fP¤Þ¤¿¤Ï\f2\-fall\fP)) -+.RE -+.TP 3 -+\-td dir -+½ÐÎϥǥ£¥ì¥¯¥È¥ê¤È¤·¤Æ¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤Ê¤¯¡¢\f2dir\fP¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-tieName xxx%yyy -+¤³¤Î¥Ñ¥¿¡¼¥ó¤Ë½¾¤Ã¤ÆTie¤Ë̾Á°¤¬ÉÕ¤±¤é¤ì¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f2POA\fP Tie¥Ù¡¼¥¹¡¦¥¯¥é¥¹¤Î¾ì¹ç¤Ï%POATie (\f2\-fserverTie\fP¤Þ¤¿¤Ï\f2\-fallTie\fP) -+.TP 2 -+o -+\f2oldImplBase\fP Tie¥¯¥é¥¹¤Î¾ì¹ç¤Ï%_Tie (\f2\-oldImplBase\fP¤«¤Ä(\f2\-fserverTie\fP¤Þ¤¿¤Ï\f2\-fallTie\fP)) -+.RE -+.TP 3 -+\-nowarn¡¢\-verbose -+¾éĹ¥â¡¼¥É¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+\-version -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+³Æ¥ª¥×¥·¥ç¥ó¤Î¾ÜºÙ¤Ï¡¢ÀâÌÀ¤Î¥»¥¯¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "À©Ìó" -+.LP -+.RS 3 -+.TP 2 -+o -+¥°¥í¡¼¥Ð¥ë¡¦¥¹¥³¡¼¥×Æâ¤Î¥¨¥¹¥±¡¼¥×¤µ¤ì¤¿¼±Ê̻Ҥϡ¢IDL¥×¥ê¥ß¥Æ¥£¥Ö·¿¤Î\f2Object\fP¤Þ¤¿¤Ï\f2ValueBase\fP¤ÈƱ¤¸ÄÖ¤ê¤Ë¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¤³¤ì¤é¤Î¼±Ê̻ҤˤĤ¤¤Æ¤Ï¡¢¥·¥ó¥Ü¥ëɽ¤¬»öÁ°¤Ë¥í¡¼¥É¤µ¤ì¤Æ¤ª¤ê¡¢¤³¤ì¤é¤Î¼±Ê̻ҤκÆÄêµÁ¤òµö²Ä¤¹¤ë¤È¸µ¤ÎÄêµÁ¤¬¾å½ñ¤¤µ¤ì¤Æ¤·¤Þ¤¦¤¿¤á¤Ç¤¹¡£(¤³¤ì¤Ï¡¢¤ª¤½¤é¤¯¹±µ×Ū¤ÊÀ©Ìó¤Ç¤¹¡£) -+.TP 2 -+o -+\f2fixed\fP¤È¤¤¤¦IDL·¿¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ -+.RE -+ -+.LP -+.SH "´ûÃΤÎÌäÂêÅÀ" -+.LP -+.RS 3 -+.TP 2 -+o -+¥°¥í¡¼¥Ð¥ë¼±Ê̻ҤˤĤ¤¤Æ¥¤¥ó¥Ý¡¼¥È¤¬À¸À®¤µ¤ì¤Þ¤»¤ó¡£Í½´ü¤µ¤ì¤Ê¤¤¥í¡¼¥«¥ëimpl¤ò¸Æ¤Ó½Ð¤¹¤È¡¢Îã³°¤ò¼õ¤±¼è¤ê¤Þ¤¹¡£¤·¤«¤·¡¢¤½¤Î¸¶°ø¤Ï¡¢\f2ServerDelegate\fP DSI¥³¡¼¥ÉÆâ¤Î\f2NullPointerException\fP¤Ë¤¢¤ë¤è¤¦¤Ç¤¹¡£ -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jar.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jar.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,583 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jar 1 "07 May 2011" -+.TH jar 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jar \- Java ARchive¥Ä¡¼¥ë -+.LP -+\f3jar\fP¤ÏÊ£¿ô¤Î¥Õ¥¡¥¤¥ë¤ò1¤Ä¤ÎJAR¥¢¡¼¥«¥¤¥Ö¡¦¥Õ¥¡¥¤¥ë¤Ë·ë¹ç¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¥Õ¥¡¥¤¥ë -+.TP 2 -+o -+Îã -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.RS 3 -+.TP 3 -+JAR¥Õ¥¡¥¤¥ë¤ÎºîÀ® -+\f4jar c\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP -+.TP 3 -+JAR¥Õ¥¡¥¤¥ë¤Î¹¹¿· -+\f4jar u\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP -+.TP 3 -+JAR¥Õ¥¡¥¤¥ë¤ÎÃê½Ð -+\f4jar x\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP -+.TP 3 -+JAR¥Õ¥¡¥¤¥ë¤ÎÌܼ¡É½¼¨ -+\f4jar t\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP -+.TP 3 -+JAR¥Õ¥¡¥¤¥ë¤Ø¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÎÄɲà -+\f4jar i\fP \f2jarfile\fP \f2[\-J\fP\f2option\fP\f2]\fP -+.RE -+ -+.LP -+.LP -+ÀâÌÀ -+.LP -+.RS 3 -+.TP 3 -+cuxtiv0Mmfe -+\f2jar\fP¥³¥Þ¥ó¥É¤òÀ©¸æ¤¹¤ë¥ª¥×¥·¥ç¥ó -+.TP 3 -+jarfile -+ºîÀ®(\f2c\fP)¡¢¹¹¿·(\f2u\fP)¡¢Ãê½Ð(\f2x\fP)¤Þ¤¿¤ÏÌܼ¡É½¼¨(\f2t\fP)¤ÎÂоݤȤʤëJAR¥Õ¥¡¥¤¥ë¡£\f2f\fP¥ª¥×¥·¥ç¥ó¤È¥Õ¥¡¥¤¥ë̾\f2jarfile\fP¤È¤¬¥Ú¥¢¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÊÒÊý¤òµ½Ò¤¹¤ì¤Ð¡¢¤â¤¦°ìÊý¤âµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f2f\fP¤È\f2jarfile\fP¤ò¾Êά¤¹¤ë¤È¡¢É¸½àÆþÎϤ«¤é¡ÖJAR¥Õ¥¡¥¤¥ë¡×¤¬¼èÆÀ¤µ¤ì¤ë¤«(x¤ª¤è¤Ót¤Î¾ì¹ç)¡¢É¸½à½ÐÎϤءÖJAR¥Õ¥¡¥¤¥ë¡×¤¬Á÷¿®¤µ¤ì¤Þ¤¹(c¤ª¤è¤Óu¤Î¾ì¹ç)¡£ -+.TP 3 -+inputfiles -+\f2jarfile\fP¤Ë·ë¹ç¤µ¤ì¤ë¤«(c¤ª¤è¤Óu¤Î¾ì¹ç)¡¢\f2jarfile\fP¤«¤éÃê½Ð(x¤Î¾ì¹ç)¤Þ¤¿¤Ï°ìÍ÷ɽ¼¨(t¤Î¾ì¹ç)¤µ¤ì¤ë¡¢¶õÇò¤Ç¶èÀÚ¤é¤ì¤¿¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ç¥£¥ì¥¯¥È¥ê¡£¤¹¤Ù¤Æ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ÏºÆµ¢Åª¤Ë½èÍý¤µ¤ì¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¥ª¥×¥·¥ç¥ó\f20\fP(¥¼¥í)¤ò»ÈÍѤ·¤Ê¤¤¤«¤®¤ê°µ½Ì¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+manifest -+JAR¥Õ¥¡¥¤¥ë¤ÎMANIFEST.MFÆâ¤Ë´Þ¤á¤ë\f2name\fP\f2:\fP\f2value\fP¤Î¥Ú¥¢¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë´û¸¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¡£\f2m\fP¥ª¥×¥·¥ç¥ó¤È¥Õ¥¡¥¤¥ë̾\f2manifest\fP¤È¤¬¥Ú¥¢¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÊÒÊý¤òµ½Ò¤¹¤ì¤Ð¡¢¤â¤¦°ìÊý¤âµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f3m\fP¡¢\f3f\fP¤ª¤è¤Ó\f3e\fP¤Î½Ð¸½½ç½ø¤Ï¡¢\f2manifest\fP¡¢\f2jarfile\fP¡¢\f2entrypoint\fP¤Î½Ð¸½½ç½ø¤È°ìÃפ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+entrypoint -+¼Â¹Ô²ÄǽJAR¥Õ¥¡¥¤¥ëÆâ¤Ë¥Ð¥ó¥É¥ë¤µ¤ì¤¿¥¹¥¿¥ó¥É¥¢¥í¥ó¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥¨¥ó¥È¥ê¡¦¥Ý¥¤¥ó¥È¤È¤·¤ÆÀßÄꤹ¤ë¥¯¥é¥¹¤Î̾Á°¡£\f2e\fP¥ª¥×¥·¥ç¥ó¤Èentrypoint¤ÏÂФˤʤäƤ¤¤Þ¤¹¡£¤É¤Á¤é¤«¤ò»ØÄꤹ¤ë¾ì¹ç¤ÏξÊý¤È¤â»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f3m\fP¡¢\f3f\fP¤ª¤è¤Ó\f3e\fP¤Î½Ð¸½½ç½ø¤Ï¡¢\f2manifest\fP¡¢\f2jarfile\fP¡¢\f2entrypoint\fP¤Î½Ð¸½½ç½ø¤È°ìÃפ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-C\ dir -+¤³¤ì¤Ë³¤¯\f2inputfiles\fP°ú¿ô¤ò½èÍý¤¹¤ë´Ö¡¢¥Ç¥£¥ì¥¯¥È¥ê¤ò\f2dir\fP¤Ø°ì»þŪ¤ËÊѹ¹¤·¤Þ¤¹¡£\f2\-C\ \fP\f2dir\fP \f2inputfiles\fP¤Î¥»¥Ã¥È¤ÏÊ£¿ô»ÈÍѤǤ¤Þ¤¹¡£ -+.TP 3 -+\-Joption -+Java¼Â¹Ô´Ä¶¤ØÅϤµ¤ì¤ë¥ª¥×¥·¥ç¥ó¡£(\f2\-J\fP¤È\f2option\fP¤Î´Ö¤Ë¤Ï¶õÇò¤òÆþ¤ì¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£) -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+\f3jar\fP¥Ä¡¼¥ë¤ÏÊ£¿ô¤Î¥Õ¥¡¥¤¥ë¤ò1¤Ä¤ÎJAR¥¢¡¼¥«¥¤¥Ö¡¦¥Õ¥¡¥¤¥ë¤Ë·ë¹ç¤·¤Þ¤¹¡£\f3jar\fP¤Ï¡¢ZIP¤ª¤è¤Ó -+.na -+\f2ZLIB\fP @ -+.fi -+http://www.gzip.org/zlib/°µ½Ì·Á¼°¤Ë´ð¤Å¤¯ÈÆÍѤΥ¢¡¼¥«¥¤¥Ö¤ª¤è¤Ó°µ½Ì¥Ä¡¼¥ë¤Ç¤¹¡£¤¿¤À¤·\f3jar\fP¥Ä¡¼¥ë¤Î¼ç¤ÊÌÜŪ¤Ï¡¢¤¤¤¯¤Ä¤«¤ÎJava¥¢¥×¥ì¥Ã¥È¤ä¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò1¸Ä¤Î¥¢¡¼¥«¥¤¥Ö¤ËÅý¹ç¤¹¤ë¤³¤È¤Ç¤¹¡£¥¢¥×¥ì¥Ã¥È¤ä¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È(¥Õ¥¡¥¤¥ë¡¢¥¤¥á¡¼¥¸¡¢¤ª¤è¤Ó¥µ¥¦¥ó¥É)¤¬1¤Ä¤Î¥¢¡¼¥«¥¤¥Ö¤Ë·ë¹ç¤µ¤ì¤Æ¤¤¤ë¤È¡¢Java¥¨¡¼¥¸¥§¥ó¥È(¥Ö¥é¥¦¥¶¤Ê¤É)¤Ï¡¢¤½¤ì¤é¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò1²ó¤ÎHTTP¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ç¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤³¤È¤¬¤Ç¤¡¢¥³¥ó¥Ý¡¼¥Í¥ó¥È¤´¤È¤Ë¿·¤·¤¤Àܳ¤¬ÉÔÍפˤʤê¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥À¥¦¥ó¥í¡¼¥É»þ´Ö¤¬ÂçÉý¤Ëû½Ì¤µ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢\f3jar\fP¤Ï¥Õ¥¡¥¤¥ë¤Î°µ½Ì¤â¹Ô¤¦¤Î¤Ç¡¢¥À¥¦¥ó¥í¡¼¥É»þ´Ö¤¬¤µ¤é¤Ëû½Ì¤µ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢¥Õ¥¡¥¤¥ëÆâ¤Î¸Ä¡¹¤Î¥¨¥ó¥È¥ê¤Ë¥¢¥×¥ì¥Ã¥ÈºîÀ®¼Ô¤Ë¤è¤ë½ð̾¤ò½ñ¤¹þ¤á¤ë¤Î¤Ç¡¢ÇÛÉÛ¸µ¤Îǧ¾Ú¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£jar¥Ä¡¼¥ë¤Î¹½Ê¸¤Ï¡¢\f2tar\fP¥³¥Þ¥ó¥É¤Î¹½Ê¸¤È¤Û¤ÜƱ¤¸¤Ç¤¹¡£\f3JAR\fP¥¢¡¼¥«¥¤¥Ö¤Ï¡¢°µ½Ì¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ë¤«¤«¤ï¤é¤º¡¢¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¥¨¥ó¥È¥ê¤È¤·¤Æ»ÈÍѤǤ¤Þ¤¹¡£ -+.LP -+Ê£¿ô¤Î¥Õ¥¡¥¤¥ë¤òJAR¥Õ¥¡¥¤¥ë¤Ø·ë¹ç¤¹¤ë°ìÈÌŪ¤Ê»ÈÍÑÊýË¡¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% jar cf myFile.jar *.class -+.fl -+\fP -+.fi -+ -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤¬\f2myFile.jar\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£jar¥Ä¡¼¥ë¤Ï¼«Æ°Åª¤Ë¡¢\f2META\-INF/MANIFEST.MF\fP¤È¤¤¤¦Ì¾Á°¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¡¦¥¨¥ó¥È¥ê¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤ì¤Ï¾ï¤Ë¡¢JAR¥Õ¥¡¥¤¥ë¤ÎºÇ½é¤Î¥¨¥ó¥È¥ê¤Ë¤Ê¤ê¤Þ¤¹¡£¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢¥¢¡¼¥«¥¤¥Ö¤Ë´Ø¤¹¤ë¥á¥¿¾ðÊó¤òÀë¸À¤·¡¢¤½¤Î¥Ç¡¼¥¿¤ò\f2name\ :\ value\fP¤Î¥Ú¥¢¤È¤·¤Æ³ÊǼ¤·¤Þ¤¹¡£jar¥Ä¡¼¥ë¤¬¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÆâ¤Ë¥á¥¿¾ðÊó¤ò³ÊǼ¤¹¤ëÊýË¡¤Î¾ÜºÙ¤Ï¡¢ -+.na -+\f2JAR¥Õ¥¡¥¤¥ë¤Î»ÅÍÍ\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR%20Manifest¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+´û¸¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÆâ¤Ë³ÊǼ¤µ¤ì¤¿\f2name\ :\ value\fP¤Î¥Ú¥¢¤òJAR¥Õ¥¡¥¤¥ë¤Ë´Þ¤á¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë\f2\-m\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¤½¤Î¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% jar cmf myManifestFile myFile.jar *.class -+.fl -+\fP -+.fi -+ -+.LP -+´û¸¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ï²þ¹Ôʸ»ú¤Ç½ª¤ï¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤¬²þ¹Ôʸ»ú¤Ç½ª¤ï¤Ã¤Æ¤¤¤Ê¤¤¤È¡¢\f3jar\fP¤Ï¤½¤ÎºÇ½ª¹Ô¤ò²òÀϤ·¤Þ¤»¤ó¡£ -+.br -+ -+.LP -+.br -+ -+.LP -+\f3Ãí°Õ:\ \fP¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë\f2cmf\fP¤Ç¤Ï¤Ê¤¯\f2cfm\fP¤¬»ØÄꤵ¤ì¤¿(m¤È\-f¥ª¥×¥·¥ç¥ó¤Î½çÈÖ¤òµÕ¤Ë¤·¤¿)jar¥³¥Þ¥ó¥É¤Î¾ì¹ç¡¢\f3jar\fP¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¤Þ¤ºJAR¥¢¡¼¥«¥¤¥Ö¤Î̾Á°¤ò»ØÄꤷ¡¢Â³¤¤¤Æ¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Î̾Á°¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+% jar cfm myFile.jar myManifestFile *.class -+.fl -+\fP -+.fi -+ -+.LP -+¥Þ¥Ë¥Õ¥§¥¹¥È¤Ï¡¢RFC822 ASCII·Á¼°¤Çµ¬Äꤵ¤ì¤¿¥Æ¥¥¹¥È·Á¼°¤Ç¤¢¤ë¤¿¤á¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤ÎÆâÍƤò´Êñ¤Ëɽ¼¨¤ª¤è¤Ó½èÍý¤Ç¤¤Þ¤¹¡£ -+.LP -+JAR¥Õ¥¡¥¤¥ë¤«¤é¥Õ¥¡¥¤¥ë¤òÃê½Ð¤¹¤ë¾ì¹ç¤Ï¡¢\f2x\fP¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% jar xf myFile.jar -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+jar¥Õ¥¡¥¤¥ë¤«¤é¸ÄÊ̤Υե¡¥¤¥ë¤òÃê½Ð¤¹¤ë¾ì¹ç¤Ï¡¢¤½¤Î¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% jar xf myFile.jar foo bar -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+JDK¤Î¥Ð¡¼¥¸¥ç¥ó1.3°Ê¹ß¤«¤é¡¢\f2jar\fP¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ç -+.na -+\f2JarIndex\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR_Index¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£JarIndex¤ò»ÈÍѤ¹¤ë¤È¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤ÇJAR¥Õ¥¡¥¤¥ë¤«¤é¥¯¥é¥¹¤¬¥í¡¼¥É¤µ¤ì¤ë¤È¤¤Î¸úΨ¤¬¸þ¾å¤·¤Þ¤¹¡£¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Þ¤¿¤Ï¥¢¥×¥ì¥Ã¥È¤¬Ê£¿ô¤ÎJAR¥Õ¥¡¥¤¥ë¤Ë¥Ð¥ó¥É¥ë¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢É¬ÍפÊJAR¥Õ¥¡¥¤¥ë¤Î¤ß¤¬¥À¥¦¥ó¥í¡¼¥É¤µ¤ì¤Æ³«¤«¤ì¡¢¥¯¥é¥¹¤¬¥í¡¼¥É¤µ¤ì¤Þ¤¹¡£¤³¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ÎºÇŬ²½¤Ï¡¢\f2\-i\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ\f2jar\fP¤ò¼Â¹Ô¤¹¤ë¤È͸ú¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢»ØÄꤷ¤¿JAR¥á¥¤¥ó¡¦¥Õ¥¡¥¤¥ë¤È¡¢¤½¤Î¥á¥¤¥ó¡¦¥Õ¥¡¥¤¥ë¤¬°Í¸¤·¤Æ¤¤¤ë¤¹¤Ù¤Æ¤ÎJAR¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¡¢¥Ñ¥Ã¥±¡¼¥¸°ÌÃÖ¾ðÊó¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¥á¥¤¥ó¡¦¥Õ¥¡¥¤¥ë¤¬°Í¸¤·¤Æ¤¤¤ëJAR¥Õ¥¡¥¤¥ë¤Ï¡¢JAR¥á¥¤¥ó¡¦¥Õ¥¡¥¤¥ë¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¤Î\f2Class\-Path\fP°À¤Ë»ØÄꤷ¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% jar i main.jar -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢\f2INDEX.LIST\fP¥Õ¥¡¥¤¥ë¤¬\f2main.jar\fP¤Î\f2META\-INF\fP¥Ç¥£¥ì¥¯¥È¥êÆâ¤ËÁÞÆþ¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¾ðÊó¤ò»ÈÍѤ·¤Æ¡¢¸úΨŪ¤Ë¥¯¥é¥¹¤ò¥í¡¼¥É¤·¤Þ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¡¦¥Õ¥¡¥¤¥ë¤Ë°ÌÃÖ¾ðÊó¤ò³ÊǼ¤¹¤ëÊýË¡¤Î¾ÜºÙ¤Ï¡¢\f2JarIndex\fP»ÅÍͤò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+¥Ç¥£¥ì¥¯¥È¥ê¤ò¥³¥Ô¡¼¤¹¤ë¤Ë¤Ï¡¢¤Þ¤º\f2dir1\fPÆâ¤Î¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤Æ\f2stdout\fP¤Ë½ÐÎϤ·¡¢Â³¤¤¤Æ\f2stdin\fP¤«¤éÃê½Ð¤·¤Æ\f2dir2\fP¤Ë½ÐÎϤ·¤Þ¤¹(\f2\-f\fP¥ª¥×¥·¥ç¥ó¤Ï¤É¤Á¤é¤Î\f2jar\fP¥³¥Þ¥ó¥É¤Ç¤â¾Êά¤·¤Þ¤¹)¡£ -+.LP -+.nf -+\f3 -+.fl -+% (cd dir1; jar c .) | (cd dir2; jar x) -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f2jar\fP¤ò»ÈÍѤ·¤ÆJAR¥Õ¥¡¥¤¥ë¤äJAR¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤òÁàºî¤¹¤ë¥µ¥ó¥×¥ë¡¦¥³¥Þ¥ó¥É¤ò³Îǧ¤¹¤ë¤Ë¤Ï¡¢¼¡¤ÎÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢ -+.na -+\f2Java¥Á¥å¡¼¥È¥ê¥¢¥ë\fP @ -+.fi -+http://docs.oracle.com/javase/tutorial/deployment/jar/¤ÎJAR¥È¥é¥¤¥¢¥ë¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+c -+\f2jarfile\fP¤È¤¤¤¦Ì¾Á°¤Î¿·¤·¤¤¥¢¡¼¥«¥¤¥Ö¡¦¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë(\f2f\fP¤¬»ØÄꤵ¤ì¤¿¾ì¹ç)¤«¡¢É¸½à½ÐÎϤ˽ÐÎϤ·¤Þ¤¹(\f2f\fP¤È\f2jarfile\fP¤¬¾Êά¤µ¤ì¤¿¾ì¹ç)¡£\f2inputfiles\fP¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤È¥Ç¥£¥ì¥¯¥È¥ê¤ò¡¢¤³¤Î¥¢¡¼¥«¥¤¥Ö¤ËÄɲä·¤Þ¤¹¡£ -+.TP 3 -+u -+\f2inputfiles\fP¤Ë»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤ä¥Ç¥£¥ì¥¯¥È¥ê¤òÄɲ䷤ơ¢´û¸¥Õ¥¡¥¤¥ë\f2jarfile\fP¤ò¹¹¿·¤·¤Þ¤¹(\f2f\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç)¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+jar uf foo.jar foo.class -+.fl -+\fP -+.fi -+¾å¤Î¥³¥Þ¥ó¥É¤Ï¡¢¥Õ¥¡¥¤¥ë\f2foo.class\fP¤ò´û¸¤ÎJAR¥Õ¥¡¥¤¥ë\f2foo.jar\fP¤ËÄɲä·¤Þ¤¹¡£¼¡¤ÎÎã¤Ë¼¨¤¹¤è¤¦¤Ë¡¢\f2\-u\fP¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥¨¥ó¥È¥ê¤â¹¹¿·¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+jar umf manifest foo.jar -+.fl -+\fP -+.fi -+¾å¤Î¥³¥Þ¥ó¥É¤Ï¡¢\f2foo.jar\fP¥Þ¥Ë¥Õ¥§¥¹¥È¤ò\f2manifest\fPÆâ¤Î\f2name : value\fP¤Î¥Ú¥¢¤Ç¹¹¿·¤·¤Þ¤¹¡£ -+.TP 3 -+x -+\f2jarfile\fP¤«¤é¥Õ¥¡¥¤¥ë¤È¥Ç¥£¥ì¥¯¥È¥ê¤òÃê½Ð¤·¤Þ¤¹(\f2f\fP¤¬»ØÄꤵ¤ì¤¿¾ì¹ç)¡¢¤Þ¤¿¤Ïɸ½àÆþÎϤ«¤é¥Õ¥¡¥¤¥ë¤ä¥Ç¥£¥ì¥¯¥È¥ê¤òÃê½Ð¤·¤Þ¤¹(\f2f\fP¤È\f2jarfile\fP¤¬¾Êά¤µ¤ì¤¿¾ì¹ç)¡£\f2inputfiles\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤È¥Ç¥£¥ì¥¯¥È¥ê¤Î¤ß¤¬Ãê½Ð¤µ¤ì¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤È¥Ç¥£¥ì¥¯¥È¥ê¤¬Ãê½Ð¤µ¤ì¤Þ¤¹¡£Ãê½Ð¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ÎÆü»þ¤Ï¡¢¥¢¡¼¥«¥¤¥ÖÆâ¤ÇÀßÄꤵ¤ì¤¿¤â¤Î¤Ç¤¹¡£ -+.TP 3 -+t -+\f2jarfile\fP¤«¤éÌܼ¡¤òɽ¼¨¤·¤Þ¤¹(\f2f\fP¤¬»ØÄꤵ¤ì¤¿¾ì¹ç)¡¢¤Þ¤¿¤Ïɸ½àÆþÎϤ«¤éÌܼ¡¤òɽ¼¨¤·¤Þ¤¹(\f2f\fP¤È\f2jarfile\fP¤¬¾Êά¤µ¤ì¤¿¾ì¹ç)¡£\f2inputfiles\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤È¥Ç¥£¥ì¥¯¥È¥ê¤Î¤ß¤¬°ìÍ÷ɽ¼¨¤µ¤ì¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤È¥Ç¥£¥ì¥¯¥È¥ê¤¬°ìÍ÷ɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+i -+»ØÄꤵ¤ì¤¿\f2jarfile\fP¤È¡¢¤½¤ì¤Ë°Í¸¤¹¤ëJAR¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¾ðÊó¤òÀ¸À®¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+jar i foo.jar -+.fl -+\fP -+.fi -+.LP -+¾å¤Î¥³¥Þ¥ó¥É¤Ï¡¢\f2foo.jar\fPÆâ¤Ë\f2INDEX.LIST\fP¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢\f2foo.jar\fP¡¢¤ª¤è¤Ó\f2foo.jar\fP¤Î\f2Class\-Path\fP°À¤Ë»ØÄꤵ¤ì¤¿¤¹¤Ù¤Æ¤ÎJAR¥Õ¥¡¥¤¥ë¤ËÆþ¤Ã¤Æ¤¤¤ë³Æ¥Ñ¥Ã¥±¡¼¥¸¤Î°ÌÃÖ¾ðÊ󤬳ÊǼ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÎÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+f -+ºîÀ®(\f2c\fP)¡¢¹¹¿·(\f2u\fP)¡¢Ãê½Ð(\f2x\fP)¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹ÄɲÃ(\f2i\fP)¤Þ¤¿¤Ïɽ¼¨(\f2t\fP)¤Î³Æ½èÍý¤ÎÂоݤȤʤë¥Õ¥¡¥¤¥ë\f2jarfile\fP¤ò»ØÄꤷ¤Þ¤¹¡£\f2f\fP¥ª¥×¥·¥ç¥ó¤È¥Õ¥¡¥¤¥ë̾\f2jarfile\fP¤È¤¬¥Ú¥¢¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÊÒÊý¤òµ½Ò¤¹¤ì¤Ð¡¢¤â¤¦°ìÊý¤âµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f2f\fP¤È\f2jarfile\fP¤ò¾Êά¤¹¤ë¤È¡¢\f2stdin\fP¤«¤éJAR¥Õ¥¡¥¤¥ë̾¤¬¼èÆÀ¤µ¤ì¤ë(x¤ª¤è¤Ót¤Î¾ì¹ç)¤«¡¢\f2stdout\fP¤ËJAR¥Õ¥¡¥¤¥ë¤¬½ÐÎϤµ¤ì¤Þ¤¹(c¤ª¤è¤Óu¤Î¾ì¹ç)¡£ -+.TP 3 -+v -+¾ÜºÙ¤Ê½ÐÎϤòɸ½à½ÐÎϤËÀ¸À®¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+0 -+(¥¼¥í)ZIP¤Ë¤è¤ë°µ½Ì¤ò»ÈÍѤ»¤º¤Ë¡¢Êݸ¤·¤Þ¤¹¡£ -+.TP 3 -+M -+¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¡¦¥¨¥ó¥È¥ê¤òºîÀ®¤·¤Þ¤»¤ó(c¤ª¤è¤Óu¤Î¾ì¹ç)¡£¤Þ¤¿¤Ï¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¡¦¥¨¥ó¥È¥ê¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ïºï½ü¤·¤Þ¤¹(u¤Î¾ì¹ç)¡£ -+.TP 3 -+m -+\f2META\-INF/MANIFEST.MF\fP¤Î¥Õ¥¡¥¤¥ë¤Ç»ØÄꤷ¤¿¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë\f2manifest\fP¤Î\f2name : value\fP¤Î°À¥Ú¥¢¤òÁȤ߹þ¤ß¤Þ¤¹¡£\f2jar\fP¤Ï¡¢¤¹¤Ç¤ËƱ¤¸Ì¾Á°¤Ç¸ºß¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¤½¤Î\f2name\ :\ value\fP¥Ú¥¢¤òÄɲä·¤Þ¤¹¡£Æ±¤¸Ì¾Á°¤Ç¸ºß¤¹¤ë¾ì¹ç¡¢\f2jar\fP¤Ï¤½¤ÎÃͤò¹¹¿·¤·¤Þ¤¹¡£ -+.br -+.br -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¡¢\f3m\fP¤È\f3f\fP¤Îʸ»ú¤Ï¡¢\f2manifest\fP¤È\f2jarfile\fP¤ÎÆþÎϽç½ø¤ÈƱ¤¸½ç½ø¤Çµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë»ÈÍѤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+jar cmf myManifestFile myFile.jar *.class -+.fl -+\fP -+.fi -+¥Ç¥Õ¥©¥ë¥È¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¤Ë¤Ï´Þ¤Þ¤ì¤Ê¤¤¥Þ¥Ë¥Õ¥§¥¹¥È¤Ë¡¢ÆÃÊ̤ÊÌÜŪ¤Î\f2name\ :\ value\fP¤Î°À¥Ú¥¢¤òÄɲäǤ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥Ù¥ó¥À¡¼¾ðÊ󡢥С¼¥¸¥ç¥ó¾ðÊ󡢥ѥ屡¼¥¸¡¦¥·¡¼¥ê¥ó¥°¡¢¤Þ¤¿¤ÏJAR¤Ë¥Ð¥ó¥É¥ë¤µ¤ì¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô²Äǽ¤Ë¤¹¤ë¤¿¤á¤Î°À¤òÄɲäǤ¤Þ¤¹¡£\f4\-m\fP¥ª¥×¥·¥ç¥ó¤Î»ÈÍÑÎã¤Ï¡¢Java¥Á¥å¡¼¥È¥ê¥¢¥ë¤Î -+.na -+\f2JAR¥Õ¥¡¥¤¥ë¤Ç¤Î¥×¥í¥°¥é¥à¤Î¥Ñ¥Ã¥±¡¼¥¸²½\fP @ -+.fi -+http://docs.oracle.com/javase/tutorial/deployment/jar/¤Î¥ì¥Ã¥¹¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+e -+¼Â¹Ô²ÄǽJAR¥Õ¥¡¥¤¥ëÆâ¤Ë¥Ð¥ó¥É¥ë¤µ¤ì¤¿¥¹¥¿¥ó¥É¥¢¥í¥ó¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥¨¥ó¥È¥ê¡¦¥Ý¥¤¥ó¥È¤È¤·¤Æ¡¢\f2entrypoint\fP¤òÀßÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÆâ¤Î\f2Main\-Class\fP°ÀÃͤ¬ºîÀ®¤Þ¤¿¤Ï¾å½ñ¤¤µ¤ì¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤ÎºîÀ®Ãæ¤Þ¤¿¤Ï¹¹¿·Ãæ¤Ë»ÈÍѤǤ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ì¤Ð¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤òÊÔ½¸¤Þ¤¿¤ÏºîÀ®¤¹¤ë¤³¤È¤Ê¤·¤Ë¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¨¥ó¥È¥ê¡¦¥Ý¥¤¥ó¥È¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.br -+.br -+.br -+¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥³¥Þ¥ó¥É¤Ç¤Ï\f2Main.jar\fP¤¬ºîÀ®¤µ¤ì¤Þ¤¹¤¬¡¢¤½¤ÎºÝ¡¢¥Þ¥Ë¥Õ¥§¥¹¥ÈÆâ¤Î\f2Main\-Class\fP°ÀÃͤÏ\f2Main\fP¤ËÀßÄꤵ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+jar cfe Main.jar Main Main.class -+.fl -+\fP -+.fi -+¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤Èjava¥é¥ó¥¿¥¤¥à¤«¤éľÀܤ³¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òµ¯Æ°¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+java \-jar Main.jar -+.fl -+\fP -+.fi -+¤¢¤ë¥Ñ¥Ã¥±¡¼¥¸Æâ¤Ë¥¨¥ó¥È¥ê¡¦¥Ý¥¤¥ó¥È¤Î¥¯¥é¥¹Ì¾¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥É¥Ã¥È(¡Ö.¡×)¡¢¥¹¥é¥Ã¥·¥å(¡Ö/¡×)¤Î¤¤¤º¤ì¤«¤Îʸ»ú¤ò¤½¤Î¶èÀÚ¤êʸ»ú¤È¤·¤Æ»ÈÍѤǤ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2Main.class\fP¤¬\f2foo\fP¤È¤¤¤¦Ì¾Á°¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥¨¥ó¥È¥ê¡¦¥Ý¥¤¥ó¥È¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ»ØÄê¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+jar \-cfe Main.jar foo/Main foo/Main.class -+.fl -+\fP -+.fi -+¤Þ¤¿¤Ï -+.nf -+\f3 -+.fl -+jar \-cfe Main.jar foo.Main foo/Main.class -+.fl -+\fP -+.fi -+\f3Ãí°Õ:\fP \f2\-m\fP¥ª¥×¥·¥ç¥ó¤È\f2\-e\fP¥ª¥×¥·¥ç¥ó¤ÎξÊý¤òƱ»þ¤Ë»ØÄꤷ¤¿¾ì¹ç¡¢»ØÄꤷ¤¿¥Þ¥Ë¥Õ¥§¥¹¥È¤Ë¤â\f2Main\-Class\fP°À¤¬´Þ¤Þ¤ì¤Æ¤¤¤ì¤Ð¡¢\f2Main.class\fP¤Î»ØÄ꤬¤¢¤¤¤Þ¤¤¤Ë¤Ê¤Ã¤Æ¥¨¥é¡¼¤äȯÀ¸¤·¡¢JAR¤ÎºîÀ®½èÍý¤ä¹¹¿·½èÍý¤¬°Û¾ï½ªÎ»¤·¤Þ¤¹¡£ -+.TP 3 -+\-C\ dir -+\f2jar\fP¥³¥Þ¥ó¥É¤Î¼Â¹ÔÃæ¤Ë¸å³¤Î\f2inputfiles\fP°ú¿ô¤ò½èÍý¤¹¤ë¤È¤¤Ë¡¢°ì»þŪ¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤òÊѹ¹¤·¤Þ¤¹(\f2cd\fP\ \f2dir\fP)¡£¤³¤Î½èÍý¤Ï¡¢UNIX¤Î\f2tar\fP¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Î\f2\-C\fP¥ª¥×¥·¥ç¥ó¤Îµ¡Ç½¤ËÎà»÷¤·¤Æ¤¤¤Þ¤¹¡£ -+.br -+.br -+¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥³¥Þ¥ó¥É¤Ï¡¢\f2classes\fP¥Ç¥£¥ì¥¯¥È¥ê¤Ë°ÜÆ°¤·¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é\f2bar.class\fP¤ò\f2foo.jar\fP¤ËÄɲä·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+jar uf foo.jar \-C classes bar.class -+.fl -+\fP -+.fi -+¼¡¤Î¥³¥Þ¥ó¥É¤Ç¤Ï¡¢\f2classes\fP¥Ç¥£¥ì¥¯¥È¥ê¤Ë°ÜÆ°¤·¡¢\f2classes\fP¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤ò\f2foo.jar\fP¤ËÄɲä·¤Þ¤¹(jar¥Õ¥¡¥¤¥ë¤Ë¤Ïclasses¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤·¤Þ¤»¤ó)¡£¼¡¤Ë¸µ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÌá¤Ã¤Æ¤«¤é¡¢\f2bin\fP¥Ç¥£¥ì¥¯¥È¥ê¤Ë°ÜÆ°¤·¡¢\f2xyz.class\fP¤ò\f2foo.jar\fP¤ËÄɲä·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+jar uf foo.jar \-C classes . \-C bin xyz.class -+.fl -+\fP -+.fi -+\f2classes\fP¤Ë¥Õ¥¡¥¤¥ë\f2bar1\fP¤È\f2bar2\fP¤¬³ÊǼ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¡¢\f2jar tf foo.jar\fP»ÈÍѤ·¤¿¤È¤¤ÎJAR¥Õ¥¡¥¤¥ë¤ÎÃæ¿È¤ò¡¢¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+META\-INF/ -+.fl -+META\-INF/MANIFEST.MF -+.fl -+bar1 -+.fl -+bar2 -+.fl -+xyz.class -+.fl -+\fP -+.fi -+.LP -+.TP 3 -+\-Joption -+Java¼Â¹Ô´Ä¶¤Ë\f2option\fP¤òÅϤ·¤Þ¤¹¡£\f2option\fP¤Ë¤Ï¡¢Java¥¢¥×¥ê¥±¡¼¥·¥ç¥óµ¯Æ°¥Ä¡¼¥ë¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥Ú¡¼¥¸¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë¥ª¥×¥·¥ç¥ó¤ò1¤Ä»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f4\-J\-Xmx48M\fP¤È»ØÄꤹ¤ë¤È¡¢ºÇÂç¥á¥â¥ê¡¼¤¬48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£\f2\-J\fP¤ò»ÈÍѤ·¤ÆÇظå¤Î¼Â¹Ô´Ä¶¤Ë¥ª¥×¥·¥ç¥ó¤òÅϤ¹¤³¤È¤Ï¤è¤¯¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¥Õ¥¡¥¤¥ë" -+.LP -+jar¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤òû¤¯¤·¤¿¤ê´Ê·é¤Ë¤·¤¿¤ê¤¹¤ë¤¿¤á¤Ë¡¢\f2jar\fP¥³¥Þ¥ó¥É¤ËÂФ¹¤ë°ú¿ô(\f2\-J\fP¥ª¥×¥·¥ç¥ó¤ò½ü¤¯)¤ò´Þ¤à1¤Ä°Ê¾å¤Î¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢Ç¤°Õ¤ÎŤµ¤Îjar¥³¥Þ¥ó¥É¤òºîÀ®¤Ç¤¡¢¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Ë¤è¤ë¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÎÀ©¸Â¤«¤é²òÊü¤µ¤ì¤Þ¤¹¡£ -+.LP -+°ú¿ô¥Õ¥¡¥¤¥ë¤Ë¤Ï¥ª¥×¥·¥ç¥ó¤È¥Õ¥¡¥¤¥ë̾¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥Õ¥¡¥¤¥ëÆâ¤Î³Æ°ú¿ô¤Ï¡¢¥¹¥Ú¡¼¥¹¤Þ¤¿¤Ï²þ¹Ô¤Ç¶èÀÚ¤ê¤Þ¤¹¡£°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤Î¥Õ¥¡¥¤¥ë̾¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¸«¤¿ÁêÂХѥ¹¤Ë¤Ê¤ê¤Þ¤¹¡£°ú¿ô¥Õ¥¡¥¤¥ë¤Î°ÌÃÖ¤«¤é¸«¤¿ÁêÂХѥ¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Ä̾ï¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¡¦¥·¥§¥ë¤Ë¤è¤Ã¤ÆŸ³«¤µ¤ì¤ë¥ï¥¤¥ë¥É¥«¡¼¥É(*)¤ÏŸ³«¤µ¤ì¤Þ¤»¤ó¡£\f2@\fPʸ»ú¤ò»ÈÍѤ·¤Æ¡¢¥Õ¥¡¥¤¥ë¤òºÆµ¢Åª¤Ë²ò¼á¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£\f2\-J\fP¥ª¥×¥·¥ç¥ó¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ïµ¯Æ°¥Ä¡¼¥ë¤ËÅϤµ¤ì¤Þ¤¹¤¬¡¢µ¯Æ°¥Ä¡¼¥ë¤Ç¤Ï°ú¿ô¥Õ¥¡¥¤¥ë¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤«¤é¤Ç¤¹¡£ -+.LP -+.LP -+\f2jar\fP¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë¡¢³Æ°ú¿ô¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤È̾Á°¤ÎÀèƬ¤Ë\f2@\fPʸ»ú¤òÉÕ¤±¤ÆÅϤ·¤Þ¤¹¡£\f2jar\fP¤Ï¡¢\f2@\fPʸ»ú¤Ç»Ï¤Þ¤ë°ú¿ô¤ò¸«¤Ä¤±¤ë¤È¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤ÎÆâÍƤòŸ³«¤·¤Æ°ú¿ô¥ê¥¹¥È¤ËÁÞÆþ¤·¤Þ¤¹¡£ -+.br -+.br -+¼¡¤ÎÎã¤Ç¡¢\f2classes.list\fP¤Ë¤Ï¡¢\f2find\fP¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤Æ½ÐÎϤµ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î̾Á°¤¬³ÊǼ¤µ¤ì¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% find \fP\f3.\fP \-name '*.class' \-print > classes.list -+.fl -+.fi -+ -+.LP -+.LP -+¼¡¤Ë¡¢°ú¿ô¥Õ¥¡¥¤¥ë¹½Ê¸¤ò»ÈÍѤ·¤Æ\f2Classes.list\fP¤ò\f2jar\fP¤ËÅϤ¹¤³¤È¤Ç¡¢¤½¤Î¥ê¥¹¥È¤ËÂФ·¤Æ\f2jar\fP¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤Ç¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% jar cf my.jar @classes.list -+.fl -+\fP -+.fi -+ -+.LP -+°ú¿ô¥Õ¥¡¥¤¥ë¤Ï¥Ñ¥¹¤ò»ØÄê¤Ç¤¤Þ¤¹¤¬¡¢ÁêÂХѥ¹¤¬µ½Ò¤µ¤ì¤¿°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë̾¤Ï¡¢ÅϤµ¤ì¤¿¥Ñ¥¹¤ËÂФ·¤ÆÁêÂÐŪ¤Ç¤Ï¤Ê¤¯¡¢¸½ºß¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê¤ËÁêÂÐŪ¤È¤Ê¤ê¤Þ¤¹¡£¼¡¤Ï¤½¤ÎÎã¤Ç¤¹¡£ -+.nf -+\f3 -+.fl -+% jar @path1/classes.list -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+ -+.LP -+.SH "Îã" -+.LP -+ÆÃÄê¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤ò¥¢¡¼¥«¥¤¥Ö¤ËÄɲ乤ë(¤½¤Î¥¢¡¼¥«¥¤¥Ö¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¾ì¹ç¤Ï¡¢¤½¤ÎÆâÍƤò¾å½ñ¤¤¹¤ë)¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£\f2\-v\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¾ðÊó¤ò¾ÜºÙ¤ËÎóµó¤¹¤ë¤è¤¦¤Ë»ØÄꤹ¤ë¤È¡¢¥µ¥¤¥º¤äºÇ¿·¤Î¹¹¿·Æü¤Ê¤É¡¢¥¢¡¼¥«¥¤¥ÖÆâ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¾ðÊó¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+% ls -+.fl -+1.au Animator.class monkey.jpg -+.fl -+2.au Wave.class spacemusic.au -+.fl -+3.au at_work.gif -+.fl -+ -+.fl -+% jar cvf bundle.jar * -+.fl -+added manifest -+.fl -+adding: 1.au(in = 2324) (out= 67)(deflated 97%) -+.fl -+adding: 2.au(in = 6970) (out= 90)(deflated 98%) -+.fl -+adding: 3.au(in = 11616) (out= 108)(deflated 99%) -+.fl -+adding: Animator.class(in = 2266) (out= 66)(deflated 97%) -+.fl -+adding: Wave.class(in = 3778) (out= 81)(deflated 97%) -+.fl -+adding: at_work.gif(in = 6621) (out= 89)(deflated 98%) -+.fl -+adding: monkey.jpg(in = 7667) (out= 91)(deflated 98%) -+.fl -+adding: spacemusic.au(in = 3079) (out= 73)(deflated 97%) -+.fl -+\fP -+.fi -+ -+.LP -+¤¹¤Ç¤Ë²èÁü¡¢¥ª¡¼¥Ç¥£¥ª¡¦¥Õ¥¡¥¤¥ë¡¢¤ª¤è¤Ó¥¯¥é¥¹ÍѤΥµ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ëʬ¤±¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤³¤ì¤é¤òñ°ì¤ÎJAR¥Õ¥¡¥¤¥ë¤Ë·ë¹ç¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+% ls \-F -+.fl -+audio/ classes/ images/ -+.fl -+ -+.fl -+% jar cvf bundle.jar audio classes images -+.fl -+added manifest -+.fl -+adding: audio/(in = 0) (out= 0)(stored 0%) -+.fl -+adding: audio/1.au(in = 2324) (out= 67)(deflated 97%) -+.fl -+adding: audio/2.au(in = 6970) (out= 90)(deflated 98%) -+.fl -+adding: audio/3.au(in = 11616) (out= 108)(deflated 99%) -+.fl -+adding: audio/spacemusic.au(in = 3079) (out= 73)(deflated 97%) -+.fl -+adding: classes/(in = 0) (out= 0)(stored 0%) -+.fl -+adding: classes/Animator.class(in = 2266) (out= 66)(deflated 97%) -+.fl -+adding: classes/Wave.class(in = 3778) (out= 81)(deflated 97%) -+.fl -+adding: images/(in = 0) (out= 0)(stored 0%) -+.fl -+adding: images/monkey.jpg(in = 7667) (out= 91)(deflated 98%) -+.fl -+adding: images/at_work.gif(in = 6621) (out= 89)(deflated 98%) -+.fl -+ -+.fl -+% ls \-F -+.fl -+audio/ bundle.jar classes/ images/ -+.fl -+\fP -+.fi -+ -+.LP -+JAR¥Õ¥¡¥¤¥ë¤Î¥¨¥ó¥È¥ê̾¤òɽ¼¨¤¹¤ë¤Ë¤Ï¡¢\f2t\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+% jar tf bundle.jar -+.fl -+META\-INF/ -+.fl -+META\-INF/MANIFEST.MF -+.fl -+audio/1.au -+.fl -+audio/2.au -+.fl -+audio/3.au -+.fl -+audio/spacemusic.au -+.fl -+classes/Animator.class -+.fl -+classes/Wave.class -+.fl -+images/monkey.jpg -+.fl -+images/at_work.gif -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥¯¥é¥¹¡¦¥í¡¼¥É¤ò¹â®¤Ë¤¹¤ë¤¿¤á¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¡¦¥Õ¥¡¥¤¥ë¤òJAR¥Õ¥¡¥¤¥ë¤ËÄɲ乤ë¤Ë¤Ï¡¢\f2i\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.br -+.br -+Îã: -+.br -+ -+.LP -+¤¿¤È¤¨¤Ð¡¢³ô¼è°ú¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÁê¸ß°Í¸¤·¤Æ¤¤¤ë¥¯¥é¥¹¤ò¡¢\f2main.jar\fP¡¢\f2buy.jar\fP¤ª¤è¤Ó\f2sell.jar\fP¤È¤¤¤¦3¤Ä¤ÎJAR¥Õ¥¡¥¤¥ë¤Ëʬ³ä¤·¤¿¤È¤·¤Þ¤¹¡£ -+.br -+ -+.LP -+.br -+ -+.LP -+\f2main.jar\fP¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¤Î\f2Class\-path\fP°À¤Ë¼¡¤Î¤è¤¦¤Ë»ØÄꤷ¤¿¾ì¹ç¡¢ -+.nf -+\f3 -+.fl -+Class\-Path: buy.jar sell.jar -+.fl -+\fP -+.fi -+ -+.LP -+\f2\-i\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ì¤Ð¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¤ÎÆɹþ¤ß¤ò¹â®²½¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+% jar i main.jar -+.fl -+\fP -+.fi -+ -+.LP -+\f2INDEX.LIST\fP¥Õ¥¡¥¤¥ë¤¬\f2META\-INF\fP¥Ç¥£¥ì¥¯¥È¥ê¤ËÁÞÆþ¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤Ë¤è¤Ã¤Æ¥¯¥é¥¹¤Þ¤¿¤Ï¥ê¥½¡¼¥¹¤Î¸¡º÷¤¬¹Ô¤ï¤ì¤ë¤È¤¤Ë¡¢Å¬ÀÚ¤Êjar¥Õ¥¡¥¤¥ë¤¬¥À¥¦¥ó¥í¡¼¥É¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.LP -+.na -+\f2JAR¥Õ¥¡¥¤¥ë¤Î³µÍ×\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jarGuide.html -+.LP -+.LP -+.na -+\f2JAR¥Õ¥¡¥¤¥ë¤Î»ÅÍÍ\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html -+.LP -+.LP -+.na -+\f2JarIndex¤Î»ÅÍÍ\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR_Index -+.LP -+.LP -+.na -+\f2JAR¥Á¥å¡¼¥È¥ê¥¢¥ë\fP @ -+.fi -+http://docs.oracle.com/javase/tutorial/deployment/jar//index.html -+.LP -+.LP -+pack200(1) -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jarsigner.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jarsigner.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,1655 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jarsigner 1 "07 May 2011" -+.TH jarsigner 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jarsigner \- JAR½ð̾¤ª¤è¤Ó¸¡¾Ú¥Ä¡¼¥ë -+.LP -+.LP -+Java ARchive(JAR)¥Õ¥¡¥¤¥ë¤Î½ð̾¤òÀ¸À®¤·¡¢½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤Î½ð̾¤ò¸¡¾Ú¤·¤Þ¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jarsigner\fP [ options ] jar\-file alias -+.fl -+\f3jarsigner\fP \-verify [ options ] jar\-file [alias...] -+.fl -+.fi -+ -+.LP -+.LP -+jarsigner¤Î\-verify¥³¥Þ¥ó¥É¤Ç¤Ï¡¢JAR¥Õ¥¡¥¤¥ë̾¤Î¸å¤Ë0¸Ä°Ê¾å¤Î¥¡¼¥¹¥È¥¢ÊÌ̾¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥¡¼¥¹¥È¥¢ÊÌ̾¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢jarsigner¤Ï¡¢JAR¥Õ¥¡¥¤¥ëÆâ¤Î³Æ½ð̾ÉÕ¤¥¨¥ó¥Æ¥£¥Æ¥£¤Î¸¡¾Ú¤Ë»ÈÍѤµ¤ì¤ë¾ÚÌÀ½ñ¤¬¡¢¤¤¤º¤ì¤«¤Î¥¡¼¥¹¥È¥¢ÊÌ̾¤Ë°ìÃפ¹¤ë¤³¤È¤ò¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£ÊÌ̾¤Ï¡¢\-keystore¤Ç»ØÄꤵ¤ì¤¿¥¡¼¥¹¥È¥¢Æâ¤Þ¤¿¤Ï¥Ç¥Õ¥©¥ë¥È¤Î¥¡¼¥¹¥È¥¢Æâ¤ËÄêµÁ¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jarsigner\fP¥Ä¡¼¥ë¤Ï¡¢¼¡¤Î2¤Ä¤ÎÌÜŪ¤Ç»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+1. -+Java ARchive(JAR)¥Õ¥¡¥¤¥ë¤Ë½ð̾¤¹¤ëÌÜŪ -+.TP 3 -+2. -+½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤Î½ð̾¤ÈÀ°¹çÀ¤ò¸¡¾Ú¤¹¤ëÌÜŪ -+.RE -+ -+.LP -+.LP -+JARµ¡Ç½¤ò»ÈÍѤ¹¤ë¤È¡¢¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¡¢¥¤¥á¡¼¥¸¡¢¥µ¥¦¥ó¥É¤ª¤è¤Ó¤½¤Î¾¤Î¥Ç¥¸¥¿¥ë¡¦¥Ç¡¼¥¿¤òñ°ì¤Î¥Õ¥¡¥¤¥ë¤Ë¥Ñ¥Ã¥±¡¼¥¸²½¤Ç¤¤ë¤Î¤Ç¡¢¥Õ¥¡¥¤¥ë¤ò¿×®¤«¤ÄÍưפËÇÛÉۤǤ¤Þ¤¹¡£³«È¯¼Ô¤Ï¡¢jar(1)¤È¤¤¤¦Ì¾Á°¤Î¥Ä¡¼¥ë¤ò»ÈÍѤ·¤ÆJAR¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤¤Þ¤¹¡£(µ»½ÑŪ¤Ê´ÑÅÀ¤«¤é¸À¤¨¤Ð¡¢¤¹¤Ù¤Æ¤ÎZIP¥Õ¥¡¥¤¥ë¤âJAR¥Õ¥¡¥¤¥ë¤È¤ß¤Ê¤¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢\f3jar\fP¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤¿JAR¥Õ¥¡¥¤¥ë¡¢¤Þ¤¿¤Ï\f3jarsigner\fP¤Ë¤è¤Ã¤Æ½èÍý¤µ¤ì¤¿JAR¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢META\-INF/MANIFEST.MF¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£) -+.LP -+.LP -+\f2¥Ç¥¸¥¿¥ë½ð̾\fP¤Ï¡¢¤Ê¤ó¤é¤«¤Î¥Ç¡¼¥¿(¡Ö½ð̾¡×¤ÎÂоݤȤʤë¥Ç¡¼¥¿)¤È¡¢¥¨¥ó¥Æ¥£¥Æ¥£(¿Í¡¢²ñ¼Ò¤Ê¤É)¤ÎÈëÌ©¸°¤È¤Ë´ð¤Å¤¤¤Æ·×»»¤µ¤ì¤ë¥Ó¥Ã¥ÈÎó¤Ç¤¹¡£¼ê½ñ¤¤Î½ð̾ƱÍÍ¡¢¥Ç¥¸¥¿¥ë½ð̾¤Ë¤Ï¿¤¯¤ÎÍøÅÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+½ð̾¤ÎÀ¸À®¤Ë»ÈÍѤµ¤ì¤¿ÈëÌ©¸°¤ÈÂФˤʤë¸ø³«¸°¤ò»ÈÍѤ·¤Æ·×»»¤ò¹Ô¤¦¤³¤È¤Ç¡¢¥Ç¥¸¥¿¥ë½ð̾¤¬ËÜʪ¤«¤É¤¦¤«¤ò¸¡¾Ú¤Ç¤¤Þ¤¹¡£ -+.TP 2 -+o -+ÈëÌ©¸°¤¬Â¾¿Í¤ËÃΤé¤ì¤Ê¤¤¸Â¤ê¡¢¥Ç¥¸¥¿¥ë½ð̾¤Îµ¶Â¤¤ÏÉÔ²Äǽ¤Ç¤¹¡£ -+.TP 2 -+o -+¥Ç¥¸¥¿¥ë½ð̾¤Ï¡¢¤½¤Î½ð̾¤¬ÉÕ¤¤¤¿¥Ç¡¼¥¿¤Î¤ß¤òÂоݤȤ¹¤ë¤â¤Î¤Ç¤¢¤ê¡¢Â¾¤Î¥Ç¡¼¥¿¤Î½ð̾¤È¤·¤Æµ¡Ç½¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ -+.TP 2 -+o -+½ð̾ÉÕ¤¤Î¥Ç¡¼¥¿¤ÏÊѹ¹¤Ç¤¤Þ¤»¤ó¡£¥Ç¡¼¥¿¤¬Êѹ¹¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¤½¤Î½ð̾¤Ë¤è¤Ã¤Æ¥Ç¡¼¥¿¤¬ËÜʪ¤Ç¤Ï¤Ê¤¤¤³¤È¤¬¸¡¾Ú¤µ¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¥¨¥ó¥Æ¥£¥Æ¥£¤Î½ð̾¤òÀ¸À®¤¹¤ë¤Ë¤Ï¡¢¤Þ¤º¡¢¥¨¥ó¥Æ¥£¥Æ¥£¤Ï¡¢¤½¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ë´ØÏ¢¤¹¤ë¸ø³«¸°¤ÈÈëÌ©¸°¤Î¥Ú¥¢¤ò»ý¤ÄɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¸ø³«¸°¤òǧ¾Ú¤¹¤ë1¤Ä¤Þ¤¿¤ÏÊ£¿ô¤Î¾ÚÌÀ½ñ¤âɬÍפǤ¹¡£\f2¾ÚÌÀ½ñ\fP¤È¤Ï¡¢¤¢¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤¬È¯¹Ô¤·¤¿¥Ç¥¸¥¿¥ë½ð̾ÉÕ¤¤Îʸ½ñ¤Ç¡¢Ê̤ʥ¨¥ó¥Æ¥£¥Æ¥£¤Î¸ø³«¸°¤¬ÆÃÄê¤ÎÃͤǤ¢¤ë¤³¤È¤ò¾ÚÌÀ¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.LP -+\f3jarsigner\fP¤Ï¡¢\f2¥¡¼¥¹¥È¥¢\fP¤Ë´Þ¤Þ¤ì¤ë¸°¤È¾ÚÌÀ½ñ¾ðÊó¤ò»ÈÍѤ·¤Æ¡¢JAR¥Õ¥¡¥¤¥ë¤Î¥Ç¥¸¥¿¥ë½ð̾¤òÀ¸À®¤·¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤Ï¡¢ÈëÌ©¸°¡¢¤ª¤è¤ÓÂбþ¤¹¤ë¸ø³«¸°¤òǧ¾Ú¤¹¤ë¤¿¤á¤ÎX.509¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤¬¼ý¤á¤é¤ì¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç¤¹¡£¥¡¼¥¹¥È¥¢¤ÎºîÀ®¤È´ÉÍý¤Ë¤Ï¡¢keytool(1)¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.LP -+\f3jarsigner\fP¤Ï¡¢¥¨¥ó¥Æ¥£¥Æ¥£¤ÎÈëÌ©¸°¤ò»ÈÍѤ·¤Æ½ð̾¤òÀ¸À®¤·¤Þ¤¹¡£½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¥Õ¥¡¥¤¥ë¤Î½ð̾¤Ë»ÈÍѤµ¤ì¤¿ÈëÌ©¸°¤ËÂбþ¤¹¤ë¸ø³«¸°¤ËÂФ¹¤ë¡¢¥¡¼¥¹¥È¥¢Æâ¤Î¾ÚÌÀ½ñ¤Î¥³¥Ô¡¼¤Ê¤É¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£\f3jarsigner\fP¤Ï¡¢½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ëÆâ(½ð̾¥Ö¥í¥Ã¥¯¡¦¥Õ¥¡¥¤¥ëÆâ)¤Ë¤¢¤ë¾ÚÌÀ½ñ¤ò»ÈÍѤ·¤Æ¤½¤Î¥Õ¥¡¥¤¥ë¤Î¥Ç¥¸¥¿¥ë½ð̾¤ò¸¡¾Ú¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f3jarsigner\fP¤Ï¥¿¥¤¥à¥¹¥¿¥ó¥×¤ò´Þ¤à½ð̾¤òÀ¸À®¤¹¤ë¤Î¤Ç¡¢¥·¥¹¥Æ¥à¤ä¥Ç¥×¥í¥¤¥ä(Java Plug\-in¤ò´Þ¤à)¤ÏJAR¥Õ¥¡¥¤¥ë¤¬½ð̾¾ÚÌÀ½ñ¤Î͸ú´ü´ÖÃæ¤Ë½ð̾¤µ¤ì¤¿¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤Ç¤¤Þ¤¹¡£¤µ¤é¤Ë¡¢API¤ò»ÈÍѤ¹¤ë¤È¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤«¤é¥¿¥¤¥à¥¹¥¿¥ó¥×¾ðÊó¤ò¼èÆÀ¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+¸½»þÅÀ¤Ç¤Ï¡¢\f3jarsigner\fP¤Ç½ð̾¤Ç¤¤ë¤Î¤Ï¡¢SDK¤Îjar(1)¥Ä¡¼¥ë¤ÇºîÀ®¤µ¤ì¤¿JAR¥Õ¥¡¥¤¥ë¡¢¤Þ¤¿¤ÏZIP¥Õ¥¡¥¤¥ë¤Î¤ß¤Ç¤¹¡£(JAR¥Õ¥¡¥¤¥ë¤ÏZIP¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¤Ç¤¹¤¬¡¢JAR¥Õ¥¡¥¤¥ë¤Ë¤ÏMETA\-INF/MANIFEST.MF¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤ëÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢\f3jarsigner\fP¤¬ZIP¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤ë¤È¤¤Ë¼«Æ°Åª¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£) -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢\f3jarsigner\fP¤ÏJAR(¤Þ¤¿¤ÏZIP)¥Õ¥¡¥¤¥ë¤Ë\f2½ð̾¤·¤Þ¤¹\fP¡£½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤ò\f2¸¡¾Ú\fP¤¹¤ë¾ì¹ç¤Ï¡¢\f2\-verify\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.SS -+¥¡¼¥¹¥È¥¢¤ÎÊÌ̾ -+.LP -+.LP -+¥¡¼¥¹¥È¥¢¤Î¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤Ï¡¢°ì°Õ¤Î\f2ÊÌ̾\fP¤ò²ð¤·¤Æ¥¢¥¯¥»¥¹¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f3jarsigner\fP¤ò»ÈÍѤ·¤ÆJAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤ë¤È¤¤Ï¡¢½ð̾¤ÎÀ¸À®¤ËɬÍפÊÈëÌ©¸°¤ò´Þ¤à¥¡¼¥¹¥È¥¢¡¦¥¨¥ó¥È¥ê¤ÎÊÌ̾¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤ÎÎã¤Ï¡¢working¥Ç¥£¥ì¥¯¥È¥ê¤Îmystore¤È¤¤¤¦Ì¾Á°¤Î¥¡¼¥¹¥È¥¢¤Ë´Þ¤Þ¤ì¤ëÊÌ̾duke¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿ÈëÌ©¸°¤ò»ÈÍѤ·¤Æ¡¢MyJARFile.jar¤È¤¤¤¦Ì¾Á°¤ÎJAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤Þ¤¹¡£½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢MyJARFile.jar¤Ï½ð̾ÉÕ¤¤ÎJAR¥Õ¥¡¥¤¥ë¤Ë¤è¤Ã¤Æ¾å½ñ¤¤µ¤ì¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ jarsigner \-keystore /working/mystore \-storepass \fP\f4<keystore password>\fP\f3 -+.fl -+ \-keypass \fP\f4<private key password>\fP\f3 MyJARFile.jar duke -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥¡¼¥¹¥È¥¢¤Ï¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Ê¤¤¤È¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£Æ±Íͤˡ¢ÈëÌ©¸°¤â¥¡¼¥¹¥È¥¢Æâ¤Ç¥Ñ¥¹¥ï¡¼¥É¤Ë¤è¤Ã¤ÆÊݸ¤ì¤Æ¤¤¤ë¤¿¤á¡¢ÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÇÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤Þ¤¿¤Ï»ØÄꤷ¤¿¥Ñ¥¹¥ï¡¼¥È¤¬Êݸ¤µ¤ì¤Æ¤¤¤ë¥Ñ¥¹¥ï¡¼¥É¤È°ã¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.LP -+.SS -+¥¡¼¥¹¥È¥¢¤Î¾ì½ê -+.LP -+.LP -+\f3jarsigner\fP¤Ë¤Ï¡¢»ÈÍѤ¹¤ë¥¡¼¥¹¥È¥¢¤ÎURL¤ò»ØÄꤹ¤ë\f2\-keystore\fP¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¡¢\f2user.home\fP¥·¥¹¥Æ¥à¡¦¥×¥í¥Ñ¥Æ¥£¤Ç·è¤Þ¤ë¥æ¡¼¥¶¡¼¤Î¥Û¡¼¥à¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Î\f2.keystore\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ëÆâ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£Solaris¥·¥¹¥Æ¥à¤Î¾ì¹ç¡¢\f2user.home\fP¤Î¥Ç¥Õ¥©¥ë¥È¤Ï¥æ¡¼¥¶¡¼¤Îhome¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-keystore\fP¥ª¥×¥·¥ç¥ó¤«¤é¤ÎÆþÎÏ¥¹¥È¥ê¡¼¥à¤Ï¡¢\f2KeyStore.load\fP¥á¥½¥Ã¥É¤ËÅϤµ¤ì¤Þ¤¹¡£URL¤È¤·¤Æ\f2NONE\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢null¤Î¥¹¥È¥ê¡¼¥à¤¬\f2KeyStore.load\fP¥á¥½¥Ã¥É¤ËÅϤµ¤ì¤Þ¤¹¡£\f2NONE\fP¤Ï¡¢\f2KeyStore\fP¤¬¥Õ¥¡¥¤¥ë¥Ù¡¼¥¹¤Ç¤Ï¤Ê¤¤¾ì¹ç¡¢¤¿¤È¤¨¤Ð¡¢¥Ï¡¼¥É¥¦¥§¥¢¡¦¥È¡¼¥¯¥ó¡¦¥Ç¥Ð¥¤¥¹¾å¤Ë¸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ê¤É¤Ë»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SS -+¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ -+.LP -+.LP -+\f2java.security\fP¥Ñ¥Ã¥±¡¼¥¸¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë\f2KeyStore\fP¥¯¥é¥¹¤Ï¡¢¥¡¼¥¹¥È¥¢Æâ¤Î¾ðÊó¤Ø¤Î¥¢¥¯¥»¥¹¤ª¤è¤Ó¾ðÊó¤ÎÊѹ¹¤ò¹Ô¤¦¤¿¤á¤Î¡¢ÌÀ³Î¤ËÄêµÁ¤µ¤ì¤¿¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÄ󶡤·¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤Î¸ÇÄê¼ÂÁõ¤È¤·¤Æ¤Ï¡¢¤½¤ì¤¾¤ì¤¬ÆÃÄê¤Î\f2¥¿¥¤¥×\fP¤Î¥¡¼¥¹¥È¥¢¤òÂоݤȤ¹¤ëÊ£¿ô¤Î°Û¤Ê¤ë¼ÂÁõ¤¬Â¸ºß²Äǽ¤Ç¤¹¡£ -+.LP -+.LP -+¸½ºß¡¢¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤ò»ÈÍѤ¹¤ë¤â¤Î¤È¤·¤Æ¡¢\f3keytool\fP¤È\f3jarsigner\fP¤Î2¤Ä¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥Ä¡¼¥ë¤È¡¢\f3Policy Tool\fP¤È¤¤¤¦Ì¾Á°¤Î1¤Ä¤ÎGUI¥Ù¡¼¥¹¤Î¥Ä¡¼¥ë¤¬¤¢¤ê¤Þ¤¹¡£\f2KeyStore\fP¤Ï¸ø³«¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢Java 2 SDK¥æ¡¼¥¶¡¼¤ÏKeyStore¤ò»ÈÍѤ¹¤ë¾¤Î¥»¥¥å¥ê¥Æ¥£¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤âºîÀ®¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+¥¡¼¥¹¥È¥¢¤Ë¤Ï¡¢Sun Microsystems¤¬Ä󶡤¹¤ëÁȹþ¤ß¤Î¥Ç¥Õ¥©¥ë¥È¤Î¼ÂÁõ¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢JKS¤È¤¤¤¦Ì¾Á°¤ÎÆȼ«¤Î¥¡¼¥¹¥È¥¢¡¦¥¿¥¤¥×(·Á¼°)¤òÍøÍѤ¹¤ë¤â¤Î¤Ç¡¢¥¡¼¥¹¥È¥¢¤ò¥Õ¥¡¥¤¥ë¤È¤·¤Æ¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤Î¼ÂÁõ¤Ç¤Ï¡¢¸Ä¡¹¤ÎÈëÌ©¸°¤Ï¸ÄÊ̤Υѥ¹¥ï¡¼¥É¤Ë¤è¤Ã¤ÆÊݸ¤ì¡¢¥¡¼¥¹¥È¥¢Á´ÂΤÎÀ°¹çÀ¤â(ÈëÌ©¸°¤È¤ÏÊ̤Î)¥Ñ¥¹¥ï¡¼¥É¤Ë¤è¤Ã¤ÆÊݸ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤Ï¡¢¥×¥í¥Ð¥¤¥À¥Ù¡¼¥¹¤Ç¤¹¡£¶ñÂÎŪ¤Ë¤Ï¡¢\f2KeyStore\fP¤Ë¤è¤Ã¤ÆÄ󶡤µ¤ì¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¬¡Ö¥µ¡¼¥Ó¥¹¡¦¥×¥í¥Ð¥¤¥À¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡×(SPI)¤Ë´ð¤Å¤¤¤Æ¼ÂÁõ¤µ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢Âбþ¤¹¤ë\f2KeystoreSpi\fPÃê¾Ý¥¯¥é¥¹(¤³¤ì¤â\f2java.security\fP¥Ñ¥Ã¥±¡¼¥¸¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹)¤¬¤¢¤ê¡¢¤³¤Î¥¯¥é¥¹¤¬¡¢¡Ö¥×¥í¥Ð¥¤¥À¡×¤¬¼ÂÁõ¤¹¤ëɬÍפΤ¢¤ëService Provider Interface¤Î¥á¥½¥Ã¥É¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£(¤³¤³¤Ç¡¢¡Ö¥×¥í¥Ð¥¤¥À¡×¤È¤Ï¡¢Java Security API¤Ë¤è¤Ã¤Æ¥¢¥¯¥»¥¹²Äǽ¤Ê¥µ¡¼¥Ó¥¹¤Î¥µ¥Ö¥»¥Ã¥È¤ËÂФ·¡¢¤½¤Î¸ÇÄê¼ÂÁõ¤òÄ󶡤¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¤Î½¸¹ç¤Î¤³¤È¤Ç¤¹¡£)¤·¤¿¤¬¤Ã¤Æ¡¢¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤òÄ󶡤¹¤ë¤Ë¤Ï¡¢ -+.na -+\f2Java°Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ãÍÑ¥×¥í¥Ð¥¤¥À¤Î¼ÂÁõÊýË¡\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/HowToImplAProvider.html¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢¥¯¥é¥¤¥¢¥ó¥È¤¬¡Ö¥×¥í¥Ð¥¤¥À¡×¤ò¼ÂÁõ¤·¡¢KeystoreSpi¥µ¥Ö¥¯¥é¥¹¤Î¼ÂÁõ¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢\f2KeyStore\fP¥¯¥é¥¹¤¬Ä󶡤¹¤ëgetInstance¥Õ¥¡¥¯¥È¥ê¡¦¥á¥½¥Ã¥É¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢ÍÍ¡¹¤Ê¥×¥í¥Ð¥¤¥À¤«¤é°Û¤Ê¤ë\f2¥¿¥¤¥×\fP¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤òÁªÂò¤Ç¤¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤Ï¡¢¥¡¼¥¹¥È¥¢¾ðÊó¤Î³ÊǼ·Á¼°¤È¥Ç¡¼¥¿·Á¼°¤òÄêµÁ¤¹¤ë¤È¤È¤â¤Ë¡¢¥¡¼¥¹¥È¥¢Æâ¤ÎÈëÌ©¸°¤È¥¡¼¥¹¥È¥¢¼«ÂΤÎÀ°¹çÀ¤òÊݸ¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤ë¥¢¥ë¥´¥ê¥º¥à¤òÄêµÁ¤·¤Þ¤¹¡£°Û¤Ê¤ë¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤Ë¤Ï¡¢¸ß´¹À¤Ï¤¢¤ê¤Þ¤»¤ó¡£ -+.LP -+.LP -+\f3keytool\fP¤Ï¡¢Ç¤°Õ¤Î¥Õ¥¡¥¤¥ë¥Ù¡¼¥¹¤Î¥¡¼¥¹¥È¥¢¼ÂÁõ¤ÇÆ°ºî¤·¤Þ¤¹¡£(¤³¤ì¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤éÅϤµ¤ì¤¿¥¡¼¥¹¥È¥¢¤Î¾ì½ê¤ò¥Õ¥¡¥¤¥ë̾¤È¤·¤Æ°·¤¤¡¢¤³¤ì¤òFileInputStream¤ËÊÑ´¹¤·¤Æ¡¢FileInputStream¤«¤é¥¡¼¥¹¥È¥¢¤Î¾ðÊó¤ò¥í¡¼¥É¤·¤Þ¤¹¡£)°ìÊý¡¢\f3jarsigner\fP¥Ä¡¼¥ë¤È\f3policytool\fP¥Ä¡¼¥ë¤Ï¡¢URL¤Ç»ØÄê²Äǽ¤ÊǤ°Õ¤Î¾ì½ê¤«¤é¥¡¼¥¹¥È¥¢¤òÆɤ߹þ¤à¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f3jarsigner\fP¤È\f3keytool\fP¤Î¾ì¹ç¡¢\f2\-storetype\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤ò»ØÄê¤Ç¤¤Þ¤¹¡£\f3Policy Tool\fP¤Î¾ì¹ç¤Ï¡¢¡ÖEdit¡×¥á¥Ë¥å¡¼¤Î¡ÖChange Keystore¡×¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+¥æ¡¼¥¶¡¼¤¬¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤òÌÀ¼¨Åª¤Ë»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢Ã±½ã¤Ë¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ë¤Ç»ØÄꤵ¤ì¤¿\f2keystore.type\fP¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ˴ð¤Å¤¤¤Æ¡¢¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤¬ÁªÂò¤µ¤ì¤Þ¤¹¡£¤³¤Î¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ë¤Ï\f2java.security\fP¤È¸Æ¤Ð¤ì¡¢SDK¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Ç¥£¥ì¥¯¥È¥ê\f2java.home\fP/lib/securityÆâ¤Ë¸ºß¤·¤Æ¤¤¤Þ¤¹¡£¤³¤³¤Ç¡¢\f2java.home\fP¤Ï¼Â¹Ô»þ´Ä¶¤Î¥Ç¥£¥ì¥¯¥È¥ê(SDK¤Î\f2jre\fP¥Ç¥£¥ì¥¯¥È¥ê¤Þ¤¿¤ÏJava 2 Runtime Environment¤Î¥È¥Ã¥×¥ì¥Ù¥ë¡¦¥Ç¥£¥ì¥¯¥È¥ê)¤Ç¤¹¡£ -+.LP -+.LP -+³Æ¥Ä¡¼¥ë¤Ï¡¢\f2keystore.type\fP¤ÎÃͤò¼èÆÀ¤·¡¢¤³¤ÎÃͤǻØÄꤵ¤ì¤¿¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¥×¥í¥Ð¥¤¥À¤¬¸«¤Ä¤«¤ë¤Þ¤Ç¡¢¸½ºß¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥×¥í¥Ð¥¤¥À¤òÄ´¤Ù¤Þ¤¹¡£ÌÜŪ¤Î¥×¥í¥Ð¥¤¥À¤¬¸«¤Ä¤«¤ë¤È¡¢¤½¤Î¥×¥í¥Ð¥¤¥À¤«¤é¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.LP -+\f2KeyStore\fP¥¯¥é¥¹¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ëstatic¥á¥½¥Ã¥É\f2getDefaultType\fP¤ò»ÈÍѤ¹¤ë¤È¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ä¥¢¥×¥ì¥Ã¥È¤«¤é\f2keystore.type\fP¥×¥í¥Ñ¥Æ¥£¤ÎÃͤò¼èÆÀ¤Ç¤¤Þ¤¹¡£¼¡¤Î¥³¡¼¥É¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥¡¼¥¹¥È¥¢¡¦¥¿¥¤¥×(\f2keystore.type\fP¥×¥í¥Ñ¥Æ¥£¤Ç»ØÄꤵ¤ì¤¿¥¿¥¤¥×)¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Î¥¡¼¥¹¥È¥¢¡¦¥¿¥¤¥×¤Ïjks(Sun¤¬Ä󶡤¹¤ëÆȼ«¤Î¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ)¤Ç¤¹¡£¤³¤ì¤Ï¡¢¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ëÆâ¤Î¼¡¤Î¹Ô¤Ë¤è¤Ã¤Æ»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ keystore.type=jks -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+Ãí°Õ: ¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤Î»ØÄê¤Ç¤Ï¡¢Âçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢JKS¤Èjks¤ÏƱ¤¸¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£ -+.LP -+.LP -+³Æ¥Ä¡¼¥ë¤Ç¥Ç¥Õ¥©¥ë¥È°Ê³°¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢¾å¤Î¹Ô¤òÊѹ¹¤·¤ÆÊ̤Υ¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤ò»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢pkcs12¤È¸Æ¤Ð¤ì¤ë¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤òÄ󶡤·¤Æ¤¤¤ë¥×¥í¥Ð¥¤¥À¡¦¥Ñ¥Ã¥±¡¼¥¸¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢¾å¤Î¹Ô¤ò¼¡¤Î¤è¤¦¤ËÊѹ¹¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ keystore.type=pkcs12 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+PKCS#11¥×¥í¥Ð¥¤¥À¡¦¥Ñ¥Ã¥±¡¼¥¸¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Î¾ÜºÙ¤Ï¡¢Java PKCS#11¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥¬¥¤¥É¤Ë¤¢¤ë -+.na -+\f2KeyTool¤ÈJarSigner\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/p11guide.html#KeyToolJarSigner¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SS -+¥µ¥Ý¡¼¥È¤µ¤ì¤ë¥¢¥ë¥´¥ê¥º¥à -+.LP -+.LP -+\f3jarsigner\fP¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¡¢¼¡¤Î¤¤¤º¤ì¤«¤ò»ÈÍѤ·¤ÆJAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤·¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+SHA1¥À¥¤¥¸¥§¥¹¥È¡¦¥¢¥ë¥´¥ê¥º¥à¤ò»ÈÍѤ·¤¿DSA(¥Ç¥¸¥¿¥ë½ð̾¥¢¥ë¥´¥ê¥º¥à) -+.TP 2 -+o -+SHA256¥À¥¤¥¸¥§¥¹¥È¡¦¥¢¥ë¥´¥ê¥º¥à¤ò»ÈÍѤ·¤¿RSA¥¢¥ë¥´¥ê¥º¥à -+.TP 2 -+o -+SHA256¤ÈECDSA(Âʱ߶ÊÀþ¥Ç¥¸¥¿¥ë½ð̾¥¢¥ë¥´¥ê¥º¥à)¤ò»ÈÍѤ·¤¿EC(Âʱ߶ÊÀþ)°Å¹æÊý¼°¥¢¥ë¥´¥ê¥º¥à -+.RE -+ -+.LP -+.LP -+¶ñÂÎŪ¤Ë¤Ï¡¢½ð̾¼Ô¤Î¸ø³«¸°¤ÈÈëÌ©¸°¤¬DSA¸°¤Ç¤¢¤ë¾ì¹ç¡¢\f3jarsigner\fP¤ÏSHA1withDSA¥¢¥ë¥´¥ê¥º¥à¤ò»ÈÍѤ·¤ÆJAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤Þ¤¹¡£½ð̾¼Ô¤Î¸°¤¬RSA¸°¤Ç¤¢¤ë¾ì¹ç¡¢\f3jarsigner\fP¤ÏSHA256withRSA¥¢¥ë¥´¥ê¥º¥à¤ò»ÈÍѤ·¤ÆJAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤Þ¤¹¡£½ð̾¼Ô¤Î¸°¤¬EC¸°¤Ç¤¢¤ë¾ì¹ç¡¢\f3jarsigner\fP¤ÏSHA256withECDSA¥¢¥ë¥´¥ê¥º¥à¤ò»ÈÍѤ·¤ÆJAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤Þ¤¹¡£ -+.LP -+.LP -+¤³¤ì¤é¤Î¥Ç¥Õ¥©¥ë¥È¤Î½ð̾¥¢¥ë¥´¥ê¥º¥à¤Ï¡¢\f2\-sigalg\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¥ª¡¼¥Ð¡¼¥é¥¤¥É¤Ç¤¤Þ¤¹¡£ -+.LP -+.SS -+½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë -+.LP -+.LP -+\f3jarsigner\fP¤ò»ÈÍѤ·¤ÆJAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤¿¾ì¹ç¡¢½ÐÎϤµ¤ì¤ë½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤ÏÆþÎÏJAR¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¤Ç¤¹¤¬¡¢¼¡¤Î2¤Ä¤ÎÄɲåե¡¥¤¥ë¤¬META\-INF¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤ëÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+.SF³ÈÄ¥»Ò¤ÎÉÕ¤¤¤¿½ð̾¥Õ¥¡¥¤¥ë -+.TP 2 -+o -+.DSA¡¢.RSA¤Þ¤¿¤Ï.EC¤ò³ÈÄ¥»Ò¤ÎÉÕ¤¤¤¿½ð̾¥Ö¥í¥Ã¥¯¡¦¥Õ¥¡¥¤¥ë -+.RE -+ -+.LP -+.LP -+¤³¤ì¤é2¤Ä¤Î¥Õ¥¡¥¤¥ë¤Î¥Ù¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤Ï¡¢\f2\-sigFile\fP¥ª¥×¥·¥ç¥ó¤ÎÃͤ«¤éºîÀ®¤µ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+\-sigFile MKSIGN -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤Î¾ì¹ç¡¢¥Õ¥¡¥¤¥ë̾¤Ï¤½¤ì¤¾¤ìMKSIGN.SF¤ÈMKSIGN.DSA¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç\f2\-sigfile\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¡¢.SF¥Õ¥¡¥¤¥ë¤È.DSA¥Õ¥¡¥¤¥ë¤Î¥Ù¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤵ¤ì¤¿ÊÌ̾¤ÎÀèƬ¤Î8ʸ»ú¤ò¤¹¤Ù¤ÆÂçʸ»ú¤ËÊÑ´¹¤·¤¿¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ÊÌ̾¤¬8ʸ»ṳ́Ëþ¤Î¾ì¹ç¤Ï¡¢ÊÌ̾¤¬¤½¤Î¤Þ¤Þ»ÈÍѤµ¤ì¤Þ¤¹¡£ÊÌ̾¤ÎÃæ¤Ë¡¢½ð̾¥Õ¥¡¥¤¥ë̾¤Ë»ÈÍѤǤ¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢³ºÅö¤¹¤ëʸ»ú¤ò²¼Àþ(_)¤ËÃÖ¤´¹¤¨¤Æ¥Õ¥¡¥¤¥ë̾¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£»ÈÍѤǤ¤ëʸ»ú¤Ï¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¡¢¿ô»ú¡¢²¼Àþ(_)¡¢¥Ï¥¤¥Õ¥ó¤Ç¤¹¡£ -+.LP -+\f3½ð̾(.SF)¥Õ¥¡¥¤¥ë\fP -+.LP -+.LP -+½ð̾¥Õ¥¡¥¤¥ë(.SF¥Õ¥¡¥¤¥ë)¤Ï¡¢\f3jarsigner\fP¤Ç½ð̾¤òÉÕ¤±¤¿JAR¥Õ¥¡¥¤¥ë¤Ë¾ï¤Ë´Þ¤Þ¤ì¤ë¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤È»÷¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëƱÍÍ¡¢.SF¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤´¤È¤Ë¡¢¼¡¤Î3¤Ä¤Î¹Ô¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+¥Õ¥¡¥¤¥ë̾ -+.TP 2 -+o -+»ÈÍѤµ¤ì¤Æ¤¤¤ë¥À¥¤¥¸¥§¥¹¥È¡¦¥¢¥ë¥´¥ê¥º¥à(SHA)¤Î̾Á° -+.TP 2 -+o -+SHA¥À¥¤¥¸¥§¥¹¥È¤ÎÃÍ -+.RE -+ -+.LP -+.LP -+¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢³Æ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎSHA¥À¥¤¥¸¥§¥¹¥È¤ÎÃͤϡ¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥Ð¥¤¥Ê¥ê¡¦¥Ç¡¼¥¿¤Î¥À¥¤¥¸¥§¥¹¥È(¥Ï¥Ã¥·¥å)¤Ë¤Ê¤ê¤Þ¤¹¡£°ìÊý¡¢.SF¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥À¥¤¥¸¥§¥¹¥È¤ÎÃͤϡ¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÆâ¤Î¤³¤ì¤é3¹Ô¤Î¥Ï¥Ã¥·¥å¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+½ð̾¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÁ´ÂΤΥϥ工夬³ÊǼ¤µ¤ì¤¿¥Ø¥Ã¥À¡¼¤â´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£JAR¥Õ¥¡¥¤¥ë¤Î¸¡¾Ú¤ÇÀâÌÀ¤¹¤ë¤è¤¦¤Ë¡¢¤³¤Î¥Ø¥Ã¥À¡¼¤Î¸ºß¤Ë¤è¤Ã¤Æ¸¡¾Ú¤ÎºÇŬ²½¤¬²Äǽ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ -+.LP -+\f3½ð̾¥Ö¥í¥Ã¥¯¡¦¥Õ¥¡¥¤¥ë\fP -+.LP -+.SF¥Õ¥¡¥¤¥ë¤Ë¤Ï½ð̾¤¬ÉÕ¤±¤é¤ì¡¢½ð̾¤Ï½ð̾¥Ö¥í¥Ã¥¯¡¦¥Õ¥¡¥¤¥ë¤ËÃÖ¤«¤ì¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¥¡¼¥¹¥È¥¢¤«¤é¤Î¾ÚÌÀ½ñ¤Þ¤¿¤Ï¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤âÉä¹æ²½¤µ¤ì¤¿·Á¤Ç´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¾ÚÌÀ½ñ¤Þ¤¿¤Ï¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Ï¡¢½ð̾¤Ë»ÈÍѤµ¤ì¤¿ÈëÌ©¸°¤ËÂбþ¤¹¤ë¸ø³«¸°¤òǧ¾Ú¤·¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤Î³ÈÄ¥»Ò¤Ï¡¢»ÈÍѤµ¤ì¤ë¥À¥¤¥¸¥§¥¹¥È¡¦¥¢¥ë¥´¥ê¥º¥à¤Ë±þ¤¸¤Æ.DSA¡¢.RSA¡¢.EC¤Î¤¤¤º¤ì¤«¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.SS -+½ð̾¥¿¥¤¥à¥¹¥¿¥ó¥× -+.LP -+.LP -+\f2jarsigner\fP¥Ä¡¼¥ë¤Ç¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤Î½ð̾»þ¤Ë½ð̾¥¿¥¤¥à¥¹¥¿¥ó¥×¤òÀ¸À®¤·¤ÆÊݸ¤Ç¤¤Þ¤¹¡£¤µ¤é¤Ë¡¢\f2jarsigner\fP¤ÏÂåÂؽð̾µ¡¹½¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¤³¤ÎÆ°ºî¤Ï¾Êά²Äǽ¤Ç¡¢½ð̾»þ¤Ë¼¡¤Î³Æ¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤ÆÀ©¸æ¤µ¤ì¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+\f2\-tsa url\fP -+.TP 2 -+o -+\f2\-tsacert alias\fP -+.TP 2 -+o -+\f2\-altsigner class\fP -+.TP 2 -+o -+\f2\-altsignerpath classpathlist\fP -+.RE -+ -+.LP -+.LP -+¤³¤ì¤é¤Î³Æ¥ª¥×¥·¥ç¥ó¤Î¾ÜºÙ¤Ï¡¢¥ª¥×¥·¥ç¥ó¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SS -+JAR¥Õ¥¡¥¤¥ë¤Î¸¡¾Ú -+.LP -+.LP -+JAR¥Õ¥¡¥¤¥ë¤Î¸¡¾Ú¤¬À®¸ù¤¹¤ë¤Î¤Ï¡¢½ð̾¤¬Í¸ú¤Ç¤¢¤ê¡¢¤«¤Ä½ð̾¤ÎÀ¸À®°Ê¸å¤ËJAR¥Õ¥¡¥¤¥ëÆâ¤Î¤É¤Î¥Õ¥¡¥¤¥ë¤âÊѹ¹¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ç¤¹¡£JAR¥Õ¥¡¥¤¥ë¤Î¸¡¾Ú¤Ï¡¢¼¡¤Î¼ê½ç¤Ç¹Ô¤ï¤ì¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+1. -+.SF¥Õ¥¡¥¤¥ë¼«ÂΤνð̾¤ò¸¡¾Ú¤·¤Þ¤¹¡£ -+.br -+.br -+¤³¤Î¼ê½ç¤Ç¤Ï¡¢³Æ½ð̾¥Ö¥í¥Ã¥¯(.DSA)¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë½ð̾¤¬¡¢¼ÂºÝ¤Ë¡¢¸ø³«¸°¤ËÂбþ¤¹¤ëÈëÌ©¸°¤ò»ÈÍѤ·¤ÆÀ¸À®¤µ¤ì¤¿¤â¤Î¤Ç¤¢¤ë¤³¤È¤¬³Îǧ¤µ¤ì¤Þ¤¹¡£.DSA¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¸ø³«¸°¤Î¾ÚÌÀ½ñ(¤Þ¤¿¤Ï¾ÚÌÀ½ñ¥Á¥§¡¼¥ó)¤â´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢¤³¤Î¼ê½ç¤Ç¤Ï¡¢ÌÜŪ¤Î½ð̾¤¬¡¢Âбþ¤¹¤ë½ð̾(.SF)¥Õ¥¡¥¤¥ëÆâ¤Î͸ú¤Ê½ð̾¤Ç¤¢¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¡¢.SF¥Õ¥¡¥¤¥ë¤¬²þÊѤµ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤â³Îǧ¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+2. -+.SF¥Õ¥¡¥¤¥ëÆâ¤Î³Æ¥¨¥ó¥È¥ê¤Î¥À¥¤¥¸¥§¥¹¥È¤ò¥Þ¥Ë¥Õ¥§¥¹¥ÈÆâ¤ÎÂбþ¤¹¤ë³Æ¥»¥¯¥·¥ç¥ó¤ÈÆͤ¤¢¤ï¤»¤Æ¸¡¾Ú¤·¤Þ¤¹¡£ -+.br -+.br -+.SF¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÁ´ÂΤΥϥ工夬³ÊǼ¤µ¤ì¤¿¥Ø¥Ã¥À¡¼¤¬¥Ç¥Õ¥©¥ë¥È¤Ç´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥Ø¥Ã¥À¡¼¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ï¡¢¥Ø¥Ã¥À¡¼Æâ¤Î¥Ï¥Ã¥·¥å¤¬¼ÂºÝ¤Ë¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Î¥Ï¥Ã¥·¥å¤È°ìÃפ¹¤ë¤«¤É¤¦¤«¤ò¸¡¾Ú¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥Ï¥Ã¥·¥å¤¬°ìÃפ¹¤ë¾ì¹ç¤Ï¡¢¼¡¤Î¼ê½ç¤Ë¸¡¾Ú¤¬¿Ê¤ß¤Þ¤¹¡£ -+.br -+.br -+¥Ï¥Ã¥·¥å¤¬°ìÃפ·¤Ê¤¤¾ì¹ç¤Ï¡¢¸úΨŪ¤Ë¤ÏÎô¤ëÊýË¡¤ò»ÈÍѤ·¤¿¸¡¾Ú¤¬É¬Íפˤʤê¤Þ¤¹¡£¶ñÂÎŪ¤Ë¤Ï¡¢.SF¥Õ¥¡¥¤¥ëÆâ¤Î³Æ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¾ðÊ󥻥¯¥·¥ç¥ó¤Î¥Ï¥Ã¥·¥å¤¬¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÆâ¤ÎÂбþ¤¹¤ë¥»¥¯¥·¥ç¥ó¤Î¥Ï¥Ã¥·¥å¤È°ìÃפ¹¤ë¤«¤É¤¦¤«¤¬³Îǧ¤µ¤ì¤Þ¤¹(½ð̾(.SF)¥Õ¥¡¥¤¥ë¤ò»²¾È)¡£ -+.br -+.br -+.SF¥Õ¥¡¥¤¥ë¤Î¥Ø¥Ã¥À¡¼¤Ë³ÊǼ¤µ¤ì¤¿¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Î¥Ï¥Ã¥·¥å¤È¡¢¼ÂºÝ¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Î¥Ï¥Ã¥·¥å¤È¤¬°ìÃפ·¤Ê¤¤¾ì¹ç¤Ï¡¢½ð̾(¤Ä¤Þ¤ê.SF¥Õ¥¡¥¤¥ë)¤ÎÀ¸À®¸å¤Ë¡¢JAR¥Õ¥¡¥¤¥ë¤Ë1¤Ä°Ê¾å¤Î¥Õ¥¡¥¤¥ë¤¬(\f2jar\fP¥Ä¡¼¥ë¤ò»ÈÍѤ·¤Æ)Äɲ䵤줿²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£\f2jar\fP¥Ä¡¼¥ë¤ò»ÈÍѤ·¤Æ¥Õ¥¡¥¤¥ë¤òÄɲä·¤¿¾ì¹ç¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤ÏÊѹ¹¤µ¤ì¤Þ¤¹(¿·¤·¤¤¥Õ¥¡¥¤¥ëÍѤΥ»¥¯¥·¥ç¥ó¤¬Äɲ䵤ì¤Þ¤¹)¤¬¡¢.SF¥Õ¥¡¥¤¥ë¤ÏÊѹ¹¤µ¤ì¤Þ¤»¤ó¡£¤³¤Î¾ì¹ç¡¢.SF¥Õ¥¡¥¤¥ë¤Î¥Ø¥Ã¥À¡¼°Ê³°¤Î¥»¥¯¥·¥ç¥ó¤Ë³ÊǼ¤µ¤ì¤¿¥Ï¥Ã¥·¥å¤¬¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÆâ¤ÎÂбþ¤¹¤ë¥»¥¯¥·¥ç¥ó¤Î¥Ï¥Ã¥·¥å¤È°ìÃפ¹¤ë¤È¤¤Ï¡¢½ð̾¤ÎÀ¸À®»þ¤ËJAR¥Õ¥¡¥¤¥ëÆâ¤Ë¸ºß¤·¤Æ¤¤¤¿¥Õ¥¡¥¤¥ë¤Î¤¦¤Á¡¢¤É¤Î¥Õ¥¡¥¤¥ë¤âÊѹ¹¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤Ë¤Ê¤ê¡¢¸¡¾Ú¤ÏÀ®¸ù¤·¤¿¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£ -+.TP 3 -+3. -+JAR¥Õ¥¡¥¤¥ëÆâ¤Î¥Õ¥¡¥¤¥ë¤Î¤¦¤Á¡¢.SF¥Õ¥¡¥¤¥ëÆâ¤Ë¥¨¥ó¥È¥ê¤ò»ý¤Ä³Æ¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ß¤Þ¤¹¡£Æɹþ¤ßÃæ¤Ë¥Õ¥¡¥¤¥ë¤Î¥À¥¤¥¸¥§¥¹¥È¤ò·×»»¤·¡¢·ë²Ì¤ò¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥»¥¯¥·¥ç¥óÆâ¤Î³ºÅö¤¹¤ë¥Õ¥¡¥¤¥ë¤Î¥À¥¤¥¸¥§¥¹¥È¤ÈÈæ³Ó¤·¤Þ¤¹¡£2¤Ä¤Î¥À¥¤¥¸¥§¥¹¥È¤ÏƱ¤¸¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¡¢¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï¸¡¾Ú¤¬¼ºÇÔ¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+¸¡¾Ú¥×¥í¥»¥¹¤ÎÅÓÃæ¤Ç¤Ê¤ó¤é¤«¤Î½ÅÂç¤Ê¸¡¾Ú¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¡¢¸¡¾Ú¥×¥í¥»¥¹¤ÏÃæ»ß¤µ¤ì¡¢¥»¥¥å¥ê¥Æ¥£Îã³°¤¬¥¹¥í¡¼¤µ¤ì¤Þ¤¹¡£Îã³°¤Ï¡¢\f3jarsigner\fP¤¬¥¥ã¥Ã¥Á¤·¤Æɽ¼¨¤·¤Þ¤¹¡£ -+.LP -+.SS -+1¤Ä¤ÎJAR¥Õ¥¡¥¤¥ë¤òÂоݤȤ¹¤ëÊ£¿ô¤Î½ð̾ -+.LP -+.LP -+1¤Ä¤ÎJAR¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ\f3jarsigner\fP¥Ä¡¼¥ë¤òÊ£¿ô²ó¼Â¹Ô¤·¡¢¼Â¹Ô¤Î¤¿¤Ó¤Ë¡¢°Û¤Ê¤ë¥æ¡¼¥¶¡¼¤ÎÊÌ̾¤ò»ØÄꤹ¤ì¤Ð¡¢JAR¥Õ¥¡¥¤¥ë¤ËÊ£¿ô¤Î¥æ¡¼¥¶¡¼¤Î½ð̾¤òÉÕ¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ jarsigner myBundle.jar susan -+.fl -+ jarsigner myBundle.jar kevin -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+JAR¥Õ¥¡¥¤¥ë¤¬Ê£¿ô²ó½ð̾¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¤½¤ÎJAR¥Õ¥¡¥¤¥ë¤Ë¤Ï.SF¥Õ¥¡¥¤¥ë¤È.DSA¥Õ¥¡¥¤¥ë¤Î¥Ú¥¢¤¬Ê£¿ô´Þ¤Þ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£.SF¥Õ¥¡¥¤¥ë¤È.DSA¥Õ¥¡¥¤¥ë¤Î¥Ú¥¢¤Ï¡¢1²ó¤Î½ð̾¤ËÂФ·¤Æ1¤ÄºîÀ®¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¾å¤ÎÎã¤Ç½ÐÎϤµ¤ì¤ëJAR¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¼¡¤Î̾Á°¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ SUSAN.SF -+.fl -+ SUSAN.DSA -+.fl -+ KEVIN.SF -+.fl -+ KEVIN.DSA -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+Ãí°Õ: JAR¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢JDK 1.1¤Î\f3javakey\fP¥Ä¡¼¥ë¤ÇÀ¸À®¤µ¤ì¤¿½ð̾¤È\f3jarsigner\fP¤ÇÀ¸À®¤µ¤ì¤¿½ð̾¤¬º®ºß¤Ç¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤¹¤Ç¤Ë\f3javakey\fP¤ò»ÈÍѤ·¤Æ½ð̾¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤ëJAR¥Õ¥¡¥¤¥ë¤Ë¡¢\f3jarsigner\fP¤ò»ÈÍѤ·¤Æ½ð̾¤òÉÕ¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+¼¡¤Ë¡¢\f3jarsigner\fP¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£Ãí°Õ: -+.LP -+.RS 3 -+.TP 2 -+o -+¤É¤Î¥ª¥×¥·¥ç¥ó̾¤Ë¤âÀèƬ¤Ë¥Þ¥¤¥Ê¥¹µ¹æ(\-)¤¬ÉÕ¤¤Þ¤¹¡£ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó¤ÏǤ°Õ¤Î½ç½ø¤Ç»ØÄê¤Ç¤¤Þ¤¹¡£ -+.TP 2 -+o -+¥¤¥¿¥ê¥Ã¥¯ÂΤιàÌܤμºݤÎÃÍ(¥ª¥×¥·¥ç¥ó¤ÎÃÍ)¤Ï¡¢»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\f2\-keystore\fP¡¢\f2\-storepass\fP¡¢\f2\-keypass\fP¡¢\f2\-sigfile\fP¡¢\f2\-sigalg\fP¡¢\f2\-digestalg\fP¤ª¤è¤Ó\f2\-signedjar\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤǤ¤ë¤Î¤Ï¡¢½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤ò¸¡¾Ú¤¹¤ë¾ì¹ç¤Ç¤Ï¤Ê¤¯¡¢JAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤¹¤ë¾ì¹ç¤Î¤ß¤Ç¤¹¡£Æ±Íͤˡ¢ÊÌ̾¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤹ¤ë¤Î¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤ë¾ì¹ç¤Î¤ß¤Ç¤¹¡£ -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+\-keystore url -+¥¡¼¥¹¥È¥¢¤Î¾ì½ê¤ò¼¨¤¹URL¤ò»ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ï¡¢¥æ¡¼¥¶¡¼¤Î¥Û¡¼¥à¡¦¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¥Õ¥¡¥¤¥ë\f2.keystore\fP¤Ç¤¹¡£¥æ¡¼¥¶¡¼¤Î¥Û¡¼¥à¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢user.home¥·¥¹¥Æ¥à¡¦¥×¥í¥Ñ¥Æ¥£¤Ë¤è¤Ã¤Æ·è¤Þ¤ê¤Þ¤¹¡£ -+.br -+.br -+½ð̾¤¹¤ë¤È¤¤Ï¥¡¼¥¹¥È¥¢¤¬É¬ÍפǤ¹¡£¤³¤Î¤¿¤á¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥¡¼¥¹¥È¥¢¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç(¤Þ¤¿¤Ï¥Ç¥Õ¥©¥ë¥È°Ê³°¤Î¥¡¼¥¹¥È¥¢¤ò»ÈÍѤ¹¤ë¾ì¹ç)¤Ï¡¢¥¡¼¥¹¥È¥¢¤òÌÀ¼¨Åª¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+¸¡¾Ú¤¹¤ë¤È¤¤Ï¥¡¼¥¹¥È¥¢¤Ï\f2ɬÍפ¢¤ê¤Þ¤»¤ó\fP¡£¤¿¤À¤·¡¢¥¡¼¥¹¥È¥¢¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤«¡¢¤¢¤ë¤¤¤Ï¥Ç¥Õ¥©¥ë¥È¤Î¥¡¼¥¹¥È¥¢¤¬Â¸ºß¤·¤Æ¤¤¤Æ¡¢¤µ¤é¤Ë\f2\-verbose\fP¥ª¥×¥·¥ç¥ó¤â»ØÄꤵ¤ì¤Æ¤¤¤¿¾ì¹ç¡¢JAR¥Õ¥¡¥¤¥ë¤Î¸¡¾Ú¤Ë»ÈÍѤµ¤ì¤ë¾ÚÌÀ½ñ¤¬¤½¤Î¥¡¼¥¹¥È¥¢¤Ë1¤Ä¤Ç¤â´Þ¤Þ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ë´Ø¤¹¤ëÄɲþðÊ󤬽ÐÎϤµ¤ì¤Þ¤¹¡£ -+.br -+.br -+Ãí°Õ: \f2\-keystore\fP¤Î°ú¿ô¤Ë¤Ï¡¢URL¤Î¤«¤ï¤ê¤Ë¥Õ¥¡¥¤¥ë̾(¤È¥Ñ¥¹)¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥Õ¥¡¥¤¥ë̾(¤È¥Ñ¥¹)¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢¡Öfile:¡×URL¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-keystore \fP\f4filePathAndName\fP\f3 -+.fl -+\fP -+.fi -+¤³¤ì¤Ï¡¢¼¡¤Î»ØÄê¤ÈƱ¤¸¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-keystore file:\fP\f4filePathAndName\fP\f3 -+.fl -+\fP -+.fi -+JRE¤Î\f2$JAVA_HOME/lib/security\fP¥Ç¥£¥ì¥¯¥È¥ê¤Ë³ÊǼ¤µ¤ì¤¿\f2java.security\fP¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ëÆâ¤ÇSun PKCS#11¥×¥í¥Ð¥¤¥À¤¬¹½À®¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢keytool¤Èjarsigner¤ÏPKCS#11¥È¡¼¥¯¥ó¤Ë´ð¤Å¤¤¤ÆÆ°ºî¤Ç¤¤Þ¤¹¡£¼¡¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f2\-keystore NONE\fP -+.TP 2 -+o -+\f2\-storetype PKCS11\fP -+.RE -+¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥³¥Þ¥ó¥É¤Ï¡¢¹½À®¤µ¤ì¤¿PKCS#11¥È¡¼¥¯¥ó¤ÎÆâÍƤò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ jarsigner \-keystore NONE \-storetype PKCS11 \-list -+.fl -+\fP -+.fi -+.TP 3 -+\-storetype storetype -+¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤¹¤ë¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤ò»ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Î¥¡¼¥¹¥È¥¢¡¦¥¿¥¤¥×¤Ï¡¢¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ëÆâ¤Îkeystore.type¥×¥í¥Ñ¥Æ¥£¤ÎÃͤǻØÄꤵ¤ì¤¿¥¿¥¤¥×¤Ç¤¹¡£¤³¤ÎÃͤϡ¢\f2java.security.KeyStore\fP¤Îstatic \f2getDefaultType\fP¥á¥½¥Ã¥É¤Ë¤è¤Ã¤ÆÊÖ¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+\f2\-storepass\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤ÆPCKS#11¥È¡¼¥¯¥ó¤ÎPIN¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£²¿¤â»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¡¢keytool¤Èjarsigner¤Ï¥æ¡¼¥¶¡¼¤Ë¥È¡¼¥¯¥óPIN¤ÎÆþÎϤòµá¤á¤Þ¤¹¡£¥È¡¼¥¯¥ó¤ËÊݸ¤ì¤¿Ç§¾Ú¥Ñ¥¹(ÀìÍѤÎPIN¥Ñ¥Ã¥É¤äÀ¸ÂÎÆɼè¤êµ¡¤Ê¤É)¤¬¤¢¤ë¾ì¹ç¡¢\f2\-protected\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¡¢¥Ñ¥¹¥ï¡¼¥É¡¦¥ª¥×¥·¥ç¥ó¤Ï»ØÄê¤Ç¤¤Þ¤»¤ó¡£ -+.TP 3 -+\-storepass[:env | :file] argument -+¥¡¼¥¹¥È¥¢¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤Î¤ËɬÍפʥѥ¹¥ï¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤ì¤¬É¬ÍפʤΤϡ¢JAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤ë¤È¤¤Î¤ß¤Ç¤¹(¸¡¾Ú¤¹¤ë¤È¤¤Ë¤ÏÉÔÍפǤ¹)¡£¤½¤Î¾ì¹ç¡¢\f2\-storepass\fP¥ª¥×¥·¥ç¥ó¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤Ê¤¤¤È¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.br -+.br -+½¤¾þ»Ò\f2env\fP¤Þ¤¿¤Ï\f2file\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÃͤÏ\f2argument\fP¤Ë¤Ê¤ê¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¡¢¥Ñ¥¹¥ï¡¼¥É¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¼èÆÀ¤µ¤ì¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f2env\fP: \f2argument\fP¤È¤¤¤¦Ì¾Á°¤Î´Ä¶ÊÑ¿ô¤«¤é¥Ñ¥¹¥ï¡¼¥É¤ò¼èÆÀ¤·¤Þ¤¹¡£ -+.TP 2 -+o -+\f2file\fP: \f2argument\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤«¤é¥Ñ¥¹¥ï¡¼¥É¤ò¼èÆÀ¤·¤Þ¤¹¡£ -+.RE -+Ãí°Õ: ¥Æ¥¹¥È¤òÌÜŪ¤È¤¹¤ë¾ì¹ç¡¢¤Þ¤¿¤Ï¥»¥¥å¥ê¥Æ¥£Êݸ¤ì¤¿¥·¥¹¥Æ¥à¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç°Ê³°¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤ä¥¹¥¯¥ê¥×¥È¤Ç¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-keypass[:env | :file] argument -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤵ¤ì¤¿ÊÌ̾¤ËÂбþ¤¹¤ë¥¡¼¥¹¥È¥¢¡¦¥¨¥ó¥È¥ê¤ÎÈëÌ©¸°¤òÊݸ¤ë¤Î¤Ë»ÈÍѤ¹¤ë¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£\f3jarsigner\fP¤ò»ÈÍѤ·¤ÆJAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤ë¤È¤¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤¬É¬ÍפǤ¹¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¥Ñ¥¹¥ï¡¼¥É¤¬»ØÄꤵ¤ì¤Æ¤ª¤é¤º¡¢É¬Íפʥѥ¹¥ï¡¼¥É¤¬¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤È°Û¤Ê¤ë¾ì¹ç¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.br -+.br -+½¤¾þ»Ò\f2env\fP¤Þ¤¿¤Ï\f2file\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÃͤÏ\f2argument\fP¤Ë¤Ê¤ê¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¡¢¥Ñ¥¹¥ï¡¼¥É¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¼èÆÀ¤µ¤ì¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f2env\fP: \f2argument\fP¤È¤¤¤¦Ì¾Á°¤Î´Ä¶ÊÑ¿ô¤«¤é¥Ñ¥¹¥ï¡¼¥É¤ò¼èÆÀ¤·¤Þ¤¹¡£ -+.TP 2 -+o -+\f2file\fP: \f2argument\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤«¤é¥Ñ¥¹¥ï¡¼¥É¤ò¼èÆÀ¤·¤Þ¤¹¡£ -+.RE -+Ãí°Õ: ¥Æ¥¹¥È¤òÌÜŪ¤È¤¹¤ë¾ì¹ç¡¢¤Þ¤¿¤Ï¥»¥¥å¥ê¥Æ¥£Êݸ¤ì¤¿¥·¥¹¥Æ¥à¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç°Ê³°¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤ä¥¹¥¯¥ê¥×¥È¤Ç¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-sigfile file -+.SF¥Õ¥¡¥¤¥ë¤È .DSA¥Õ¥¡¥¤¥ë¤ÎÀ¸À®¤Ë»ÈÍѤ¹¤ë¥Ù¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2file\fP¤ËDUKESIGN¤ò»ØÄꤹ¤ë¤È¡¢À¸À®¤µ¤ì¤ë.SF¥Õ¥¡¥¤¥ë¤È.DSA¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ï¡¢¤½¤ì¤¾¤ìDUKESIGN.SF¤ÈDUKESIGN.DSA¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤ÎMETA\-INF¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Þ¤¹¡£ -+.br -+.br -+\f2file\fP¤Ë»ÈÍѤǤ¤ëʸ»ú¤Ï¡Öa\-zA\-Z0\-9_\-¡×¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢Ê¸»ú¡¢¿ô»ú¡¢²¼Àþ¤ª¤è¤Ó¥Ï¥¤¥Õ¥ó¤Î¤ß¤ò»ÈÍѤǤ¤Þ¤¹¡£Ãí°Õ: .SF¤ª¤è¤Ó.DSA¤Î¥Õ¥¡¥¤¥ë̾¤Ç¤Ï¡¢¾®Ê¸»ú¤Ï¤¹¤Ù¤ÆÂçʸ»ú¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç\f2\-sigfile\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¡¢.SF¥Õ¥¡¥¤¥ë¤È.DSA¥Õ¥¡¥¤¥ë¤Î¥Ù¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤵ¤ì¤¿ÊÌ̾¤ÎÀèƬ¤Î8ʸ»ú¤ò¤¹¤Ù¤ÆÂçʸ»ú¤ËÊÑ´¹¤·¤¿¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ÊÌ̾¤¬8ʸ»ṳ́Ëþ¤Î¾ì¹ç¤Ï¡¢ÊÌ̾¤¬¤½¤Î¤Þ¤Þ»ÈÍѤµ¤ì¤Þ¤¹¡£ÊÌ̾¤ÎÃæ¤Ë¡¢½ð̾¥Õ¥¡¥¤¥ë̾¤Ë»ÈÍѤǤ¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢³ºÅö¤¹¤ëʸ»ú¤ò²¼Àþ(_)¤ËÃÖ¤´¹¤¨¤Æ¥Õ¥¡¥¤¥ë̾¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-sigalg algorithm -+JAR¥Õ¥¡¥¤¥ë¤Î½ð̾¤Ë»ÈÍѤ¹¤ë½ð̾¥¢¥ë¥´¥ê¥º¥à¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£ -+.br -+.br -+ɸ½à½ð̾¥¢¥ë¥´¥ê¥º¥à̾¤Î°ìÍ÷¤Ï¡¢Java°Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Î -+.na -+\f2ÉÕÏ¿A\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥¢¥ë¥´¥ê¥º¥à¤Ë¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤Î½ð̾¤Ë»ÈÍѤ¹¤ëÈëÌ©¸°¤È¤Î¸ß´¹À¤¬É¬ÍפǤ¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¡¢ÈëÌ©¸°¤Î¥¿¥¤¥×¤Ë±þ¤¸¤ÆSHA1withDSA¡¢SHA256withRSA¡¢SHA256withECDSA¤Î¤¤¤º¤ì¤«¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£»ØÄꤵ¤ì¤¿¥¢¥ë¥´¥ê¥º¥à¤Î¼ÂÁõ¤òÄ󶡤¹¤ë¥×¥í¥Ð¥¤¥À¤¬ÀÅŪ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤«¡¢\f2\-providerClass\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¤½¤Î¤è¤¦¤Ê¥×¥í¥Ð¥¤¥À¤ò¥æ¡¼¥¶¡¼¤¬»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¡¢¥³¥Þ¥ó¥É¤Î¼Â¹Ô¤¬¼ºÇÔ¤·¤Þ¤¹¡£ -+.TP 3 -+\-digestalg algorithm -+JAR¥Õ¥¡¥¤¥ë¤Î¥¨¥ó¥È¥ê¤ò¥À¥¤¥¸¥§¥¹¥È¤¹¤ëºÝ¤Ë»ÈÍѤ¹¤ë¥á¥Ã¥»¡¼¥¸¡¦¥À¥¤¥¸¥§¥¹¥È¡¦¥¢¥ë¥´¥ê¥º¥à¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£ -+.br -+.br -+¥á¥Ã¥»¡¼¥¸¡¦¥À¥¤¥¸¥§¥¹¥È¡¦¥¢¥ë¥´¥ê¥º¥à̾¤Î°ìÍ÷¤Ï¡¢Java°Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Î -+.na -+\f2ÉÕÏ¿A\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¡¢SHA256¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£»ØÄꤵ¤ì¤¿¥¢¥ë¥´¥ê¥º¥à¤Î¼ÂÁõ¤òÄ󶡤¹¤ë¥×¥í¥Ð¥¤¥À¤¬ÀÅŪ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤«¡¢\f2\-providerClass\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¤½¤Î¤è¤¦¤Ê¥×¥í¥Ð¥¤¥À¤ò¥æ¡¼¥¶¡¼¤¬»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¡¢¥³¥Þ¥ó¥É¤Î¼Â¹Ô¤¬¼ºÇÔ¤·¤Þ¤¹¡£ -+.TP 3 -+\-signedjar file -+½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£ -+.br -+.br -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç̾Á°¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢ÆþÎÏJAR¥Õ¥¡¥¤¥ë(½ð̾¤ÎÂоݤȤʤëJAR¥Õ¥¡¥¤¥ë)¤Î̾Á°¤ÈƱ¤¸Ì¾Á°¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÆþÎÏJAR¥Õ¥¡¥¤¥ë¤Ï½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤Ë¤è¤Ã¤Æ¾å½ñ¤¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-verify -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢»ØÄꤵ¤ì¤¿JAR¥Õ¥¡¥¤¥ë¤Î½ð̾¤Ç¤Ï¤Ê¤¯¸¡¾Ú¤¬¹Ô¤ï¤ì¤Þ¤¹¡£¸¡¾Ú¤¬À®¸ù¤¹¤ë¤È¡¢¡Öjar¤¬¸¡¾Ú¤µ¤ì¤Þ¤·¤¿¡£¡×¤È¤¤¤¦¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£½ð̾¤µ¤ì¤Æ¤¤¤Ê¤¤JAR¥Õ¥¡¥¤¥ë¡¢¤Þ¤¿¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¥¢¥ë¥´¥ê¥º¥à(RSA¥×¥í¥Ð¥¤¥À¤Î¥¤¥ó¥¹¥È¡¼¥ë¤ò½ªÎ»¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤ÎRSA¤Ê¤É)¤ò»ÈÍѤ·¤Æ½ð̾¤µ¤ì¤¿JAR¥Õ¥¡¥¤¥ë¤ò¸¡¾Ú¤·¤è¤¦¤È¤¹¤ë¤È¡¢¡Öjar¤Ï½ð̾¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£(½ð̾¤¬¸«¤Ä¤«¤é¤Ê¤¤¤«¡¢¹½Ê¸²òÀϤǤ¤Þ¤»¤ó)¡×¤È¤¤¤¦¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤Ï¡¢\f3jarsigner\fP¤Þ¤¿¤ÏJDK 1.1¤Î\f3javakey\fP¥Ä¡¼¥ë¤Î¤É¤Á¤é¤«¤Þ¤¿¤ÏξÊý¤ò»ÈÍѤ·¤Æ¸¡¾Ú¤Ç¤¤Þ¤¹¡£ -+.br -+.br -+¸¡¾Ú¤Î¾ÜºÙ¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤Î¸¡¾Ú¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-certs -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¡¢\f2\-verify\fP¤ª¤è¤Ó\f2\-verbose\fP¥ª¥×¥·¥ç¥ó¤È¤È¤â¤Ë¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢JAR¥Õ¥¡¥¤¥ë¤Î³Æ½ð̾¼Ô¤Î¾ÚÌÀ½ñ¾ðÊ󤬽ÐÎϤ˴ޤޤì¤Þ¤¹¡£¤³¤Î¾ðÊó¤Ë¤Ï¼¡¤Î¤â¤Î¤¬´Þ¤Þ¤ì¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+½ð̾¼Ô¤Î¸ø³«¸°¤ò¾ÚÌÀ¤¹¤ë(.DSA¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤¿)¾ÚÌÀ½ñ¥¿¥¤¥×¤Î̾Á° -+.TP 2 -+o -+¾ÚÌÀ½ñ¤¬X.509¾ÚÌÀ½ñ(¤Ä¤Þ¤ê¡¢\f2java.security.cert.X509Certificate\fP¤Î¥¤¥ó¥¹¥¿¥ó¥¹)¤Ç¤¢¤ë¾ì¹ç¤Ï¡¢½ð̾¼Ô¤Î¼±ÊÌ̾ -+.RE -+¥¡¼¥¹¥È¥¢¤Î³Îǧ¤â¹Ô¤ï¤ì¤Þ¤¹¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¥¡¼¥¹¥È¥¢¤ÎÃͤ¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥¡¼¥¹¥È¥¢¡¦¥Õ¥¡¥¤¥ë¤¬¤¢¤ì¤Ð¡¢¸¡ºº¤µ¤ì¤Þ¤¹¡£½ð̾¼Ô¤Î¸ø³«¸°¤Î¾ÚÌÀ½ñ¤¬¥¡¼¥¹¥È¥¢Æâ¤Î¥¨¥ó¥È¥ê¤È°ìÃפ·¤¿¾ì¹ç¤Ï¡¢¼¡¤Î¾ðÊó¤âɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+½ð̾¼Ô¤Ë³ºÅö¤¹¤ë¥¡¼¥¹¥È¥¢¡¦¥¨¥ó¥È¥ê¤ÎÊÌ̾¡£¤³¤ÎÊÌ̾¤Ï³ç¸Ì¤Ç°Ï¤Þ¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢¥¡¼¥¹¥È¥¢¤Ç¤Ï¤Ê¤¯JDK 1.1¤Î¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËͳÍ褹¤ë½ð̾¼Ô¤Î¾ì¹ç¤Ï¡¢³ç¸Ì¤Ç¤Ï¤Ê¤¯Âç³ç¸Ì¤Ç°Ï¤Þ¤ì¤Þ¤¹¡£ -+.RE -+.TP 3 -+\-certchain file -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤¿ÊÌ̾¤Ç·è¤Þ¤ë¥¡¼¥¹¥È¥¢¡¦¥¨¥ó¥È¥ê¤ÎÈëÌ©¸°¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤¬´°Á´¤Ç¤Ê¤¤¾ì¹ç¤Ë¡¢»ÈÍѤ¹¤ë¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ò»ØÄꤷ¤Þ¤¹¡£¤½¤Î¤è¤¦¤Ê¾õÂ֤ˤʤë²ÄǽÀ¤¬¤¢¤ë¤Î¤Ï¡¢¥¡¼¥¹¥È¥¢¤¬¥Ï¡¼¥É¥¦¥§¥¢¡¦¥È¡¼¥¯¥ó¾å¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¤¬¡¢¤½¤³¤Ë¤Ï¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ÎÁ´ÂΤòÊÝ»ý¤Ç¤¤ëÎΰ褬¸ºß¤·¤Æ¤¤¤Ê¤¤¤è¤¦¤Ê¾ì¹ç¤Ç¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï°ìÏ¢¤ÎX.509¾ÚÌÀ½ñ¤¬½ç¤ËÏ¢·ë¤µ¤ì¤¿¤â¤Î¡¢PKCS#7·Á¼°¤Îñ°ì¥Ç¡¼¥¿¡¦¥Ö¥í¥Ã¥¯¤Î¤¤¤º¤ì¤«¤È¤Ê¤ê¡¢¤½¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°·Á¼°¤Ï¥Ð¥¤¥Ê¥ê¡¦¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°·Á¼°¡¢Internet RFC 1421ɸ½à¤Çµ¬Äꤵ¤ì¤ë°õºþ²Äǽ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°·Á¼°(BASE64¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤È¤â¸Æ¤Ð¤ì¤ë)¤Î¤¤¤º¤ì¤«¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+\-verbose -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢\f3jarsigner\fP¤Ï¡Ö¾éĹ¡×¥â¡¼¥É¤ÇÆ°ºî¤·¡¢JAR¤Î½ð̾¤Þ¤¿¤Ï¸¡¾Ú¤Î¿Ê¹Ô¾õ¶·¤Ë´Ø¤¹¤ëÄɲþðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-internalsf -+°ÊÁ°¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤Î½ð̾»þ¤ËÀ¸À®¤µ¤ì¤¿.DSA(½ð̾¥Ö¥í¥Ã¥¯)¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¡¢À¸À®¤µ¤ì¤¿.SF¥Õ¥¡¥¤¥ë(½ð̾¥Õ¥¡¥¤¥ë)¤Î´°Á´¤Ê¥³¥Ô¡¼¤¬Éä¹æ²½¤µ¤ì¤¿·Á¤Ç´Þ¤Þ¤ì¤Æ¤¤¤Þ¤·¤¿¡£¤³¤ÎÆ°ºî¤ÏÊѹ¹¤µ¤ì¤Þ¤·¤¿¡£¸½ºß¤Ç¤Ï¡¢½ÐÎÏJAR¥Õ¥¡¥¤¥ëÁ´ÂΤΥµ¥¤¥º¤ò¾®¤µ¤¯¤¹¤ë¤¿¤á¤Ë¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï.SF¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼¤¬.DSA¥Õ¥¡¥¤¥ë¤Ë´Þ¤Þ¤ì¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤¿¤À¤·¡¢\f2\-internalsf\fP¥ª¥×¥·¥ç¥ó¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤹ¤ë¤È¡¢°ÊÁ°¤ÈƱ¤¸¤è¤¦¤ËÆ°ºî¤·¤Þ¤¹¡£\f3¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Æ¥¹¥È¤ò¹Ô¤¦¾ì¹ç¤Ë¤ÏÊØÍø¤Ç¤¹¤¬¡¢¤½¤ì°Ê³°¤Ë¤Ï»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢Í±×¤ÊºÇŬ²½¤¬¹Ô¤ï¤ì¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£\fP -+.TP 3 -+\-sectionsonly -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢JAR¥Õ¥¡¥¤¥ë¤Î½ð̾»þ¤ËÀ¸À®¤µ¤ì¤ë.SF¥Õ¥¡¥¤¥ë(½ð̾¥Õ¥¡¥¤¥ë)¤Ë¤Ï¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÁ´ÂΤΥϥå·¥å¤ò´Þ¤à¥Ø¥Ã¥À¡¼¤Ï\f2´Þ¤Þ¤ì¤Þ¤»¤ó\fP¡£¤³¤Î¾ì¹ç¡¢.SF¥Õ¥¡¥¤¥ë¤Ë´Þ¤Þ¤ì¤ë¤Î¤Ï¡¢JAR¥Õ¥¡¥¤¥ëÆâ¤Î³Æ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ë´Ø¤¹¤ë¾ðÊ󤪤è¤Ó¥Ï¥Ã¥·¥å¤Î¤ß¤Ç¤¹¡£¾ÜºÙ¤Ï¡¢½ð̾(.SF)¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢ºÇŬ²½¤Î¤¿¤á¤Ë¡¢¤³¤Î¥Ø¥Ã¥À¡¼¤¬Äɲ䵤ì¤Þ¤¹¡£¥Ø¥Ã¥À¡¼¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤Î¸¡¾Ú»þ¤Ë¡¢¤Þ¤º¥Ø¥Ã¥À¡¼Æâ¤Î¥Ï¥Ã¥·¥å¤¬¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÁ´ÂΤΥϥå·¥å¤È¼ÂºÝ¤Ë°ìÃפ¹¤ë¤«¤É¤¦¤«¤¬³Îǧ¤µ¤ì¤Þ¤¹¡£°ìÃפ¹¤ë¾ì¹ç¡¢¸¡¾Ú¤Ï¼¡¤Î¼ê½ç¤Ë¿Ê¤ß¤Þ¤¹¡£¥Ï¥Ã¥·¥å¤¬°ìÃפ·¤Ê¤¤¾ì¹ç¤Ï¡¢¸úΨŪ¤Ë¤ÏÎô¤ëÊýË¡¤ò»ÈÍѤ·¤Æ¸¡¾Ú¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¶ñÂÎŪ¤Ë¤Ï¡¢.SF¥Õ¥¡¥¤¥ëÆâ¤Î³Æ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¾ðÊ󥻥¯¥·¥ç¥ó¤Î¥Ï¥Ã¥·¥å¤¬¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¡¦¥Õ¥¡¥¤¥ëÆâ¤ÎÂбþ¤¹¤ë¥»¥¯¥·¥ç¥ó¤Î¥Ï¥Ã¥·¥å¤È°ìÃפ¹¤ë¤«¤É¤¦¤«¤¬³Îǧ¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+¾ÜºÙ¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤Î¸¡¾Ú¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+\f3¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Æ¥¹¥È¤ò¹Ô¤¦¾ì¹ç¤Ë¤ÏÊØÍø¤Ç¤¹¤¬¡¢¤½¤ì°Ê³°¤Ë¤Ï»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢Í±×¤ÊºÇŬ²½¤¬¹Ô¤ï¤ì¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£\fP -+.TP 3 -+\-protected -+\f2true\fP¤Þ¤¿¤Ï\f2false\fP¤Î¤¤¤º¤ì¤«¡£ÀìÍÑPIN¥ê¡¼¥À¡¼¤Ê¤É¤ÎÊݸ¤ì¤¿Ç§¾Ú¥Ñ¥¹¤ò²ð¤·¤Æ¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤³¤ÎÃͤË\f2true\fP¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-providerClass provider\-class\-name -+¥µ¡¼¥Ó¥¹¡¦¥×¥í¥Ð¥¤¥À¤¬¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ë(\f2java.security\fP)¤Î¥ê¥¹¥È¤ËÆþ¤Ã¤Æ¤¤¤Ê¤¤¤È¤¤Ë¡¢°Å¹æ²½¥µ¡¼¥Ó¥¹¡¦¥×¥í¥Ð¥¤¥À¤Î¥Þ¥¹¥¿¡¼¡¦¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î̾Á°¤ò»ØÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤ·¤Þ¤¹¡£ -+.br -+.br -+\f2\-providerArg\fP \f2ConfigFilePath\fP¥ª¥×¥·¥ç¥ó¤ÈÁȤ߹礻¤Æ»ÈÍѤ·¤Þ¤¹¡£keytool¤Èjarsigner¤Ï¥×¥í¥Ð¥¤¥À¤òưŪ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹(¤³¤³¤Ç¡¢\f2ConfigFilePath\fP¤Ï¥È¡¼¥¯¥ó¹½À®¥Õ¥¡¥¤¥ë¤Ø¤Î¥Ñ¥¹¤Ç¤¹)¡£¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ëÆâ¤ÇSun PKCS#11¥×¥í¥Ð¥¤¥À¤¬¹½À®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤ËPKCS#11¥¡¼¥¹¥È¥¢¤ò°ìÍ÷ɽ¼¨¤¹¤ë¥³¥Þ¥ó¥É¤ÎÎã¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+jarsigner \-keystore NONE \-storetype PKCS11 \\ -+.fl -+ \-providerClass sun.security.pkcs11.SunPKCS11 \\ -+.fl -+ \-providerArg /foo/bar/token.config \\ -+.fl -+ \-list -+.fl -+\fP -+.fi -+.TP 3 -+\-providerName providerName -+\f2java.security\fP¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ëÆâ¤Ç2¤Ä°Ê¾å¤Î¥×¥í¥Ð¥¤¥À¤¬¹½À®¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢\f2\-providerName\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤ÆÆÃÄê¤Î¥×¥í¥Ð¥¤¥À¡¦¥¤¥ó¥¹¥¿¥ó¥¹¤òÁªÂò¤Ç¤¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Î°ú¿ô¤Ï¡¢¥×¥í¥Ð¥¤¥À¤Î̾Á°¤Ç¤¹¡£ -+.br -+.br -+Sun PKCS#11¥×¥í¥Ð¥¤¥À¤Î¾ì¹ç¡¢\f2providerName\fP¤Ï\f2SunPKCS11\-\fP\f2TokenName\fP¤È¤¤¤¦·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤³¤Ç\f2TokenName\fP¤Ï¡¢¥×¥í¥Ð¥¤¥À¡¦¥¤¥ó¥¹¥¿¥ó¥¹¤¬¹½À®¤µ¤ì¤¿Ì¾Á°¤ÎÀÜÈø¼¤Ç¤¹¡£¾ÜºÙ¤Ï -+.na -+\f2¹½À®Â°À¤Îɽ\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/p11guide.html#ATTRS¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥³¥Þ¥ó¥É¤Ï¡¢Ì¾Á°ÀÜÈø¼\f2SmartCard\fP¤ÎPKCS#11¥¡¼¥¹¥È¥¢¡¦¥×¥í¥Ð¥¤¥À¡¦¥¤¥ó¥¹¥¿¥ó¥¹¤ÎÆâÍƤò¥ê¥¹¥È¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+jarsigner \-keystore NONE \-storetype PKCS11 \\ -+.fl -+ \-providerName SunPKCS11\-SmartCard \\ -+.fl -+ \-list -+.fl -+\fP -+.fi -+.TP 3 -+\-Jjavaoption -+»ØÄꤵ¤ì¤¿\f2javaoption\fPʸ»úÎó¤òJava¥¤¥ó¥¿¥×¥ê¥¿¤ËľÀÜÅϤ·¤Þ¤¹¡£(\f3jarsigner\fP¤Ï¡¢¼ÂºÝ¤Ë¤ÏJava¥¤¥ó¥¿¥×¥ê¥¿¤ËÂФ¹¤ë¡Ö¥é¥Ã¥Ñ¡¼¡×¤Ç¤¹¡£)¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ï¡¢¶õÇò¤ò´Þ¤á¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¼Â¹Ô´Ä¶¤Þ¤¿¤Ï¥á¥â¥ê¡¼»ÈÍѤòÄ´À°¤¹¤ë¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£»ØÄê¤Ç¤¤ë¥¤¥ó¥¿¥×¥ê¥¿¡¦¥ª¥×¥·¥ç¥ó¤ò°ìÍ÷ɽ¼¨¤¹¤ë¤Ë¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç\f2java \-h\fP¤Þ¤¿¤Ï\f2java \-X\fP¤ÈÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-tsa url -+\f2¡Ö\-tsa http://example.tsa.url¡×\fP¤¬JAR¥Õ¥¡¥¤¥ë¤Î½ð̾»þ¤Ë¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¤¢¤ë¾ì¹ç¡¢½ð̾¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤¬À¸À®¤µ¤ì¤Þ¤¹¡£URL\f2http://example.tsa.url\fP¤Ï¡¢TSA(Time Stamping Authority)¤Î¾ì½ê¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¡¢\f2\-tsacert\fP¥ª¥×¥·¥ç¥ó¤Ç¸¡½Ð¤µ¤ì¤¿URL¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£\f2\-tsa\fP¥ª¥×¥·¥ç¥ó¤Ç¤Ï¡¢TSA¤Î¸ø³«¸°¾ÚÌÀ½ñ¤ò¥¡¼¥¹¥È¥¢¤ËÇÛÃÖ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ -+.br -+.br -+¥¿¥¤¥à¥¹¥¿¥ó¥×¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë¡¢\f2jarsigner\fP¤Ï¡¢ -+.na -+\f2RFC 3161\fP @ -+.fi -+http://www.ietf.org/rfc/rfc3161.txt¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥¿¥¤¥à¥¹¥¿¥ó¥×¡¦¥×¥í¥È¥³¥ë(TSP)¤ò»ÈÍѤ·¤ÆTSA¤ÈÄÌ¿®¤·¤Þ¤¹¡£À®¸ù¤¹¤ë¤È¡¢TSA¤«¤éÊÖ¤µ¤ì¤¿¥¿¥¤¥à¥¹¥¿¥ó¥×¡¦¥È¡¼¥¯¥ó¤Ï½ð̾¥Ö¥í¥Ã¥¯¡¦¥Õ¥¡¥¤¥ë¤Î½ð̾¤È¤È¤â¤ËÊݸ¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-tsacert alias -+\f2¡Ö\-tsacert alias¡×\fP¤¬JAR¥Õ¥¡¥¤¥ë¤Î½ð̾»þ¤Ë¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¤¢¤ë¾ì¹ç¡¢½ð̾¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤¬À¸À®¤µ¤ì¤Þ¤¹¡£\f2alias\fP¤Ï¡¢¥¡¼¥¹¥È¥¢Æâ¤Î¸½ºß͸ú¤ÊTSA¤Î¸ø³«¸°¾ÚÌÀ½ñ¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£¥¨¥ó¥È¥ê¤Î¾ÚÌÀ½ñ¤Ç¡¢TSA¤Î¾ì½ê¤òÆÃÄꤹ¤ëURL¤ò´Þ¤àSubject Information Access³ÈÄ¥µ¡Ç½¤¬³Îǧ¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+\f2\-tsacert\fP¤ò»ÈÍѤ·¤¿¾ì¹ç¤Ï¡¢TSA¤Î¸ø³«¸°¾ÚÌÀ½ñ¤¬¥¡¼¥¹¥È¥¢¤ËÇÛÃÖ¤µ¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-altsigner class -+ÂåÂؽð̾µ¡¹½¤ò»ÈÍѤ¹¤ë¤³¤È¤ò»ØÄꤷ¤Þ¤¹¡£´°Á´½¤¾þ¥¯¥é¥¹Ì¾¤Ç¡¢\f2com.sun.jarsigner.ContentSigner\fPÃê¾Ý¥¯¥é¥¹¤ò³ÈÄ¥¤¹¤ë¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Ø¤Î¥Ñ¥¹¤Ï¡¢\f2\-altsignerpath\fP¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤Þ¤¹¡£\f2\-altsigner\fP¥ª¥×¥·¥ç¥ó¤¬»ÈÍѤµ¤ì¤ë¤È¡¢\f2jarsigner\fP¤Ï¡¢»ØÄꤵ¤ì¤¿¥¯¥é¥¹¤¬Ä󶡤¹¤ë½ð̾µ¡¹½¤ò»ÈÍѤ·¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¡¢\f2jarsigner\fP¤Ï¥Ç¥Õ¥©¥ë¥È¤Î½ð̾µ¡¹½¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.br -+.br -+¤¿¤È¤¨¤Ð¡¢\f2com.sun.sun.jarsigner.AuthSigner\fP¤È¤¤¤¦Ì¾Á°¤Î¥¯¥é¥¹¤¬Ä󶡤¹¤ë½ð̾µ¡¹½¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢\f2jarsigner\fP¤Ç\f2¡Ö\-altsigner com.sun.jarsigner.AuthSigner¡×\fP¤È¤¤¤¦¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.TP 3 -+\-altsignerpath classpathlist -+¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë(¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë̾¤ÏÁ°½Ò¤Î\f2\-altsigner\fP¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤷ¤Þ¤¹)¤ª¤è¤Ó¤½¤Î¥¯¥é¥¹¤¬°Í¸¤¹¤ë¤¹¤Ù¤Æ¤ÎJAR¥Õ¥¡¥¤¥ë¤Ø¤Î¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤¬JAR¥Õ¥¡¥¤¥ëÆâ¤Ë¤¢¤ë¾ì¹ç¡¢°Ê²¼¤ÎÎã¤Î¤è¤¦¤ËJAR¥Õ¥¡¥¤¥ë¤Ø¤Î¥Ñ¥¹¤¬»ØÄꤵ¤ì¤Þ¤¹¡£ -+.br -+.br -+ÀäÂХѥ¹¤Þ¤¿¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¤ÎÁêÂХѥ¹¤ò»ØÄê¤Ç¤¤Þ¤¹¡£\f2classpathlist\fP¤ËÊ£¿ô¤Î¥Ñ¥¹¤äJAR¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤ì¤é¤òSolaris¤Î¾ì¹ç¤Ï¥³¥í¥ó(\f2:\fP)¤Ç¡¢Windows¤Î¾ì¹ç¤Ï¥»¥ß¥³¥í¥ó(\f2;\fP)¤Ç¤½¤ì¤¾¤ì¶èÀÚ¤ê¤Þ¤¹¡£ÌÜŪ¤Î¥¯¥é¥¹¤¬¤¹¤Ç¤Ë¸¡º÷¥Ñ¥¹Æâ¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ÏÉÔÍפǤ¹¡£ -+.br -+.br -+¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò´Þ¤à¡¢JAR¥Õ¥¡¥¤¥ë¤Ø¤Î¥Ñ¥¹¤ò»ØÄꤹ¤ëÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+\-altsignerpath /home/user/lib/authsigner.jar -+.fl -+\fP -+.fi -+JAR¥Õ¥¡¥¤¥ë̾¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò´Þ¤àJAR¥Õ¥¡¥¤¥ë¤Ø¤Î¥Ñ¥¹¤ò»ØÄꤹ¤ëÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+\-altsignerpath /home/user/classes/com/sun/tools/jarsigner/ -+.fl -+\fP -+.fi -+JAR¥Õ¥¡¥¤¥ë̾¤Ï´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤Ëα°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-strict -+½ð̾¤Þ¤¿¤Ï¸¡¾Ú½èÍýÃæ¤Ë¡¢¤Ê¤ó¤é¤«¤Î·Ù¹ð¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢¸«¤Ä¤«¤Ã¤¿·Ù¹ð¥á¥Ã¥»¡¼¥¸¤¬¥Ä¡¼¥ë¤Î½ªÎ»¥³¡¼¥É¤ËÈ¿±Ç¤µ¤ì¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢·Ù¹ð¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-verbose:sub\-options -+¸¡¾Ú½èÍý¤Î¾ì¹ç¡¢É½¼¨¤¹¤ë¾ðÊó¤ÎÎ̤ò·èÄꤹ¤ë¥µ¥Ö¥ª¥×¥·¥ç¥ó¤ò\f2\-verbose\fP¥ª¥×¥·¥ç¥ó¤Ë»ØÄê¤Ç¤¤Þ¤¹¡£\f2\-certs\fP¤â»ØÄꤷ¤¿¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¡¦¥â¡¼¥É(¤Þ¤¿¤Ï¥µ¥Ö¥ª¥×¥·¥ç¥óall)¤Ç¤Ï¡¢¥¨¥ó¥È¥ê¤¬½èÍý¤µ¤ì¤ë¤¿¤Ó¤Ë¤½¤ì¤é¤Î³Æ¥¨¥ó¥È¥ê¤¬É½¼¨¤µ¤ì¡¢¤½¤Î¸å¤ËJAR¥Õ¥¡¥¤¥ë¤Î³Æ½ð̾¼Ô¤Î¾ÚÌÀ½ñ¾ðÊó¤âɽ¼¨¤µ¤ì¤Þ¤¹¡£\f2\-certs\fP¤È\f2\-verbose:grouped\fP¥µ¥Ö¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢Æ±¤¸½ð̾¼Ô¾ðÊó¤ò»ý¤Ä¥¨¥ó¥È¥ê¤È¤½¤Î¾ÚÌÀ½ñ¾ðÊ󤬡¢¥°¥ë¡¼¥×²½¤µ¤ì¤Æɽ¼¨¤µ¤ì¤Þ¤¹¡£\f2\-certs\fP¤È\f2\-verbose:summary\fP¥µ¥Ö¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢Æ±¤¸½ð̾¼Ô¾ðÊó¤ò»ý¤Ä¥¨¥ó¥È¥ê¤È¤½¤Î¾ÚÌÀ½ñ¾ðÊ󤬥°¥ë¡¼¥×²½¤µ¤ì¤Æɽ¼¨¤µ¤ì¤Þ¤¹¤¬¡¢³Æ¥¨¥ó¥È¥ê¤Î¾ÜºÙ¤¬¡Ö1¤Ä¤Î¥¨¥ó¥È¥ê(¤ª¤è¤Ó¤½¤ì°Ê¾å)¡×¤È¤·¤ÆÍ×Ì󤵤ì¤Æɽ¼¨¤µ¤ì¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢Îã¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RE -+ -+.LP -+.SH "Îã" -+.LP -+.SS -+JAR¥Õ¥¡¥¤¥ë¤Î½ð̾ -+.LP -+.LP -+bundle.jar¤È¤¤¤¦Ì¾Á°¤ÎJAR¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¤È¤·¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¡¢working¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Îmystore¤È¤¤¤¦¥¡¼¥¹¥È¥¢¤Ë¤¢¤ë¥¡¼¥¹¥È¥¢¤ÎÊÌ̾¤¬jane¤Ç¤¢¤ë¥æ¡¼¥¶¡¼¤ÎÈëÌ©¸°¤ò»ÈÍѤ·¤Æ¡¢½ð̾¤òÉÕ¤±¤ë¤È¤·¤Þ¤¹¡£¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢JAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤Æsbundle.jar¤È¤¤¤¦½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ jarsigner \-keystore /working/mystore \-storepass \fP\f4<keystore password>\fP\f3 -+.fl -+ \-keypass \fP\f4<private key password>\fP\f3 \-signedjar sbundle.jar bundle.jar jane -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¾å¤Î¥³¥Þ¥ó¥É¤Ç¤Ï\f2\-sigfile\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤¿¤á¡¢½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤ë.SF¥Õ¥¡¥¤¥ë¤È.DSA¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ï¡¢ÊÌ̾¤«¤é¥Ç¥Õ¥©¥ë¥È̾¤¬ÉÕ¤±¤é¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤½¤ì¤é¤Î̾Á°¤Ï\f2JANE.SF\fP¤ª¤è¤Ó\f2JANE.DSA\fP¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤ÈÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤ë¥×¥í¥ó¥×¥È¤òɽ¼¨¤¹¤ë¾ì¹ç¤Ï¡¢¾å¤Î¥³¥Þ¥ó¥É¤òû½Ì¤·¤Æ¼¡¤Î¤è¤¦¤ËÆþÎϤǤ¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ jarsigner \-keystore /working/mystore -+.fl -+ \-signedjar sbundle.jar bundle.jar jane -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Î¥¡¼¥¹¥È¥¢(¥Û¡¼¥à¡¦¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î.keystore¤È¤¤¤¦Ì¾Á°¤Î¥¡¼¥¹¥È¥¢)¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢¼¡¤Ë¼¨¤¹¤è¤¦¤Ë¡¢¥¡¼¥¹¥È¥¢¤Î»ØÄê¤ò¾Êά¤Ç¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ jarsigner \-signedjar sbundle.jar bundle.jar jane -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+ºÇ¸å¤Ë¡¢ÆþÎÏJAR¥Õ¥¡¥¤¥ë(\f2bundle.jar\fP)¤ò½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤Çñ½ã¤Ë¾å½ñ¤¤¹¤ë¾ì¹ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë\f2\-signedjar\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ -+.LP -+.nf -+\f3 -+.fl -+ jarsigner bundle.jar jane -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤Î¸¡¾Ú -+.LP -+.LP -+½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤ò¸¡¾Ú¤¹¤ë¡¢¤Ä¤Þ¤ê½ð̾¤¬Í¸ú¤ÇJAR¥Õ¥¡¥¤¥ë¤¬²þÊѤµ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤òÆþÎϤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ jarsigner \-verify sbundle.jar -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¸¡¾Ú¤¬À®¸ù¤¹¤ë¤È¡¢ -+.LP -+.nf -+\f3 -+.fl -+ jar verified. -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤Èɽ¼¨¤µ¤ì¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢¥¨¥é¡¼¡¦¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-verbose\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¤è¤ê¿¤¯¤Î¾ðÊó¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£\f2\-verbose\fP¥ª¥×¥·¥ç¥óÉÕ¤¤Ç\f3jarsigner\fP¤ò»ÈÍѤ¹¤ëÎã¤È¤½¤Î½ÐÎÏÎã¤ò¡¢¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ jarsigner \-verify \-verbose sbundle.jar -+.fl -+ -+.fl -+ 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST.MF -+.fl -+ 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.SF -+.fl -+ 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.DSA -+.fl -+ smk 2752 Fri Sep 26 16:12:30 PDT 1997 AclEx.class -+.fl -+ smk 849 Fri Sep 26 16:12:46 PDT 1997 test.class -+.fl -+ -+.fl -+ s = signature was verified -+.fl -+ m = entry is listed in manifest -+.fl -+ k = at least one certificate was found in keystore -+.fl -+ -+.fl -+ jar verified. -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+¾ÚÌÀ½ñ¾ðÊó¤ò»ÈÍѤ·¤¿¸¡¾Ú -+.LP -+.LP -+¸¡¾Ú»þ¤Ë\f2\-verify\fP¤È\f2\-verbose\fP¥ª¥×¥·¥ç¥ó¤Ë²Ã¤¨¤Æ\f2\-certs\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤Î³Æ½ð̾¼Ô¤Î¾ÚÌÀ½ñ¾ðÊó¤â½ÐÎϤµ¤ì¤Þ¤¹¡£¤³¤ì¤Ë¤Ï¡¢¾ÚÌÀ½ñ¥¿¥¤¥×¡¢½ð̾¼Ô¼±ÊÌ̾¾ðÊó(X.509¾ÚÌÀ½ñ¤Î¾ì¹ç¤Î¤ß)¡¢¤ª¤è¤ÓJAR¥Õ¥¡¥¤¥ë¤Î¸ø³«¸°¤Î¾ÚÌÀ½ñ¤¬¥¡¼¥¹¥È¥¢¡¦¥¨¥ó¥È¥ê¤Î¾ÚÌÀ½ñ¤Ë°ìÃפ·¤¿¾ì¹ç¤Ë¤Ï¡¢³ç¸Ì¤Ç°Ï¤Þ¤ì¤¿½ð̾¼Ô¤Î¥¡¼¥¹¥È¥¢ÊÌ̾¤¬´Þ¤Þ¤ì¤Þ¤¹¡£¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ jarsigner \-keystore /working/mystore \-verify \-verbose \-certs myTest.jar -+.fl -+ -+.fl -+ 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST.MF -+.fl -+ 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.SF -+.fl -+ 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.DSA -+.fl -+ 208 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST.SF -+.fl -+ 1087 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST.DSA -+.fl -+ smk 2752 Fri Sep 26 16:12:30 PDT 1997 Tst.class -+.fl -+ -+.fl -+ X.509, CN=Test Group, OU=Java Software, O=Sun Microsystems, L=CUP, S=CA, C=US (javatest) -+.fl -+ X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane) -+.fl -+ -+.fl -+ s = signature was verified -+.fl -+ m = entry is listed in manifest -+.fl -+ k = at least one certificate was found in keystore -+.fl -+ -+.fl -+ jar verified. -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+½ð̾¼Ô¤Î¾ÚÌÀ½ñ¤¬X.509¾ÚÌÀ½ñ¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢¼±ÊÌ̾¾ðÊó¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£¤½¤Î¾ì¹ç¤Ë¤Ï¡¢¾ÚÌÀ½ñ¤Î¥¿¥¤¥×¤ÈÊÌ̾¤Î¤ß¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¾ÚÌÀ½ñ¤¬PGP¾ÚÌÀ½ñ¤Ç¡¢ÊÌ̾¤¬bob¤Î¾ì¹ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ PGP, (bob) -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î½ð̾¼Ô¤ò´Þ¤àJAR¥Õ¥¡¥¤¥ë¤Î¸¡¾Ú -+.LP -+.LP -+JAR¥Õ¥¡¥¤¥ë¤¬¡¢JDK 1.1¤Î\f3javakey\fP¥Ä¡¼¥ë¤ò»ÈÍѤ·¤Æ½ð̾¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢½ð̾¼Ô¤Ï¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤ÎÊÌ̾¤Ç¤¹¡£¤³¤Î¾ì¹ç¡¢¸¡¾Ú¤Î½ÐÎϤˤϡÖi¡×¤È¤¤¤¦µ¹æ¤¬´Þ¤Þ¤ì¤Þ¤¹¡£JAR¥Õ¥¡¥¤¥ë¤¬¡¢¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤ÎÊÌ̾¤È¥¡¼¥¹¥È¥¢Æâ¤ÎÊÌ̾¤ÎξÊý¤Ë¤è¤Ã¤Æ½ð̾¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¡Ök¡×¤È¡Öi¡×¤ÎξÊý¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-certs\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¥¡¼¥¹¥È¥¢¤ÎÊÌ̾¤Ï³ç¸Ì¤Ç°Ï¤Þ¤ì¤ë¤Î¤ËÂФ·¡¢¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤ÎÊÌ̾¤Ï³Ñ³ç¸Ì¤Ç°Ï¤Þ¤ì¤Æɽ¼¨¤µ¤ì¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ jarsigner \-keystore /working/mystore \-verify \-verbose \-certs writeFile.jar -+.fl -+ -+.fl -+ 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST.MF -+.fl -+ 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.SF -+.fl -+ 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.DSA -+.fl -+ 199 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE.SF -+.fl -+ 1013 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE.DSA -+.fl -+ smki 2752 Fri Sep 26 16:12:30 PDT 1997 writeFile.html -+.fl -+ -+.fl -+ X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane) -+.fl -+ X.509, CN=Duke, OU=Java Software, O=Sun, L=cup, S=ca, C=us [duke] -+.fl -+ -+.fl -+ s = signature was verified -+.fl -+ m = entry is listed in manifest -+.fl -+ k = at least one certificate was found in keystore -+.fl -+ i = at least one certificate was found in identity scope -+.fl -+ -+.fl -+ jar verified. -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+ÊÌ̾duke¤Ï³Ñ³ç¸Ì¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¤³¤ÎÊÌ̾¤Ï¥¡¼¥¹¥È¥¢¤ÎÊÌ̾¤Ç¤Ï¤Ê¤¯¡¢¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÊÌ̾¤Ç¤¹¡£ -+.LP -+.SH "·Ù¹ð" -+.LP -+½ð̾/¸¡¾Ú½èÍýÃæ¤Ë¤Ï¡¢jarsigner¤«¤éÍÍ¡¹¤Ê·Ù¹ð¤¬É½¼¨¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î·Ù¹ð¥³¡¼¥É¤Ï¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ hasExpiringCert 2 -+.fl -+ This jar contains entries whose signer certificate will expire within six months -+.fl -+ -+.fl -+ hasExpiredCert 4 -+.fl -+ This jar contains entries whose signer certificate has expired. -+.fl -+ -+.fl -+ notYetValidCert 4 -+.fl -+ This jar contains entries whose signer certificate is not yet valid. -+.fl -+ -+.fl -+ chainNotValidated 4 -+.fl -+ This jar contains entries whose certificate chain cannot be correctly validated. -+.fl -+ -+.fl -+ badKeyUsage 8 -+.fl -+ This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing. -+.fl -+ -+.fl -+ badExtendedKeyUsage 8 -+.fl -+ This jar contains entries whose signer certificate's ExtendedKeyUsage extension -+.fl -+ doesn't allow code signing. -+.fl -+ -+.fl -+ badNetscapeCertType 8 -+.fl -+ This jar contains entries whose signer certificate's NetscapeCertType extension -+.fl -+ doesn't allow code signing. -+.fl -+ -+.fl -+ hasUnsignedEntry 16 -+.fl -+ This jar contains unsigned entries which have not been integrity\-checked. -+.fl -+ -+.fl -+ notSignedByAlias 32 -+.fl -+ This jar contains signed entries which are not signed by the specified alias(es) -+.fl -+ -+.fl -+ aliasNotInStore 32 -+.fl -+ This jar contains signed entries that are not signed by alias in this keystore -+.fl -+ -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f2\-strict\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¸¡½Ð¤µ¤ì¤¿·Ù¹ð¤ÎOR¤ò¼è¤Ã¤¿Ãͤ¬¥Ä¡¼¥ë¤Î½ªÎ»¥³¡¼¥É¤È¤·¤ÆÊÖ¤µ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥¨¥ó¥È¥ê¤Î½ð̾¤Ë»ÈÍѤµ¤ì¤ë¾ÚÌÀ½ñ¤¬´ü¸ÂÀÚ¤ì¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢¤«¤Ä¤½¤Î¾ÚÌÀ½ñ¤ÎkeyUsage³ÈÄ¥¤Ç¥Õ¥¡¥¤¥ë¤Î½ð̾¤¬µö²Ä¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢½ªÎ»¥³¡¼¥É12(=4+8)¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f3Ãí°Õ\fP: UNIX¤Ç»ÈÍѲÄǽ¤ÊÃͤÏ0¤«¤é255¤Î¤ß¤Ç¤¢¤ë¤¿¤á¡¢½ªÎ»¥³¡¼¥É¤ÏºÆÍøÍѤµ¤ì¤Þ¤¹¡£¤¤¤º¤ì¤Ë¤·¤Æ¤â¡¢½ð̾/¸¡¾Ú½èÍý¤¬¼ºÇÔ¤¹¤ë¤È¡¢¼¡¤Î½ªÎ»¥³¡¼¥É¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+failure 1 -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+JDK 1.1¤È¤Î¸ß´¹À -+.LP -+.LP -+\f3keytool\fP¥Ä¡¼¥ë¤È\f3jarsigner\fP¥Ä¡¼¥ë¤Ï¡¢JDK 1.1¤ÇÄ󶡤µ¤ì¤Æ¤¤¤¿\f3javakey\fP¥Ä¡¼¥ë¤ò´°Á´¤ËÃÖ¤´¹¤¨¤ë¤â¤Î¤Ç¤¹¡£¤³¤ì¤é¤Î¿·¤·¤¤¥Ä¡¼¥ë¤Ï¡¢¥¡¼¥¹¥È¥¢¤ÈÈëÌ©¸°¤ò¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸ¤ëµ¡Ç½¤ä¡¢½ð̾¤ÎÀ¸À®¤Ë²Ã¤¨¤Æ½ð̾¤ò¸¡¾Ú¤¹¤ëµ¡Ç½¤Ê¤É¡¢\f3javakey\fP¤è¤ê¿¤¯¤Î¤òµ¡Ç½¤òÈ÷¤¨¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.LP -+¿·¤·¤¤¥¡¼¥¹¥È¥¢¡¦¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ï¡¢\f3javakey\fP¤¬ºîÀ®¤·¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÂå¤ï¤ë¤â¤Î¤Ç¤¹¡£¥¡¼¥¹¥È¥¢·Á¼°¤È¡¢1.1¤Î\f3javakey\fP¤¬»ÈÍѤ·¤Æ¤¤¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹·Á¼°¤È¤Î´Ö¤Ë¤Ï²¼°Ì¸ß´¹À¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤¿¤À¤·¡¢¼¡¤Î¤³¤È¤Ï²Äǽ¤Ç¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+\f3keytool\fP¤Î\f2\-identitydb\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ë¤È¡¢¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¾ðÊó¤ò¥¡¼¥¹¥È¥¢¤Ë¥¤¥ó¥Ý¡¼¥È¤Ç¤¤Þ¤¹¡£ -+.TP 2 -+o -+\f3jarsigner\fP¤Ï¡¢°ÊÁ°¤Ë\f3javakey\fP¤ò»ÈÍѤ·¤Æ½ð̾¤µ¤ì¤¿JAR¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.TP 2 -+o -+\f3jarsigner\fP¤Ï¡¢\f3javakey\fP¤ò»ÈÍѤ·¤Æ½ð̾¤µ¤ì¤¿JAR¥Õ¥¡¥¤¥ë¤ò¸¡¾Ú¤Ç¤¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢Java 2 SDK¤Î¥¡¼¥¹¥È¥¢¤Ç¤Ï¤Ê¤¯JDK 1.1¤Î¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é¤Î½ð̾¼ÔÊÌ̾¤òǧ¼±¤·¡¢¤³¤ì¤é¤òÂоݤ˽èÍý¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+¼¡¤Îɽ¤Ï¡¢JDK 1.1.x¤Ç½ð̾¤µ¤ì¤¿JAR¥Õ¥¡¥¤¥ë¤¬¡¢Java 2¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤É¤Î¤è¤¦¤Ë°·¤ï¤ì¤ë¤«¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 82 83 84 -+.nr 34 \n(.lu -+.eo -+.am 80 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\f3JAR¥Õ¥¡¥¤¥ë¤Î¥¿¥¤¥×\fP -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+\f31.1¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤Î¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£\fP -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 82 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(82 .ll \n(82u -+.in 0 -+\f31.1¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤éJava 2 Platform¥¡¼¥¹¥È¥¢¤Ë¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤ë¿®Íê¤Ç¤¤ë¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£(4)\fP -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 83 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(83 .ll \n(83u -+.in 0 -+\f3¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤¬¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£/ÊÌ̾¤ËÆø¢¤òÉÕÍ¿\fP -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 84 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(84 .ll \n(84u -+.in 0 -+¤¹¤Ù¤Æ¤Î¥³¡¼¥É¤ËÉÕÍ¿¤µ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤ÎÆø¢ -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 84 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(84 .ll \n(84u -+.in 0 -+¤¹¤Ù¤Æ¤Î¥³¡¼¥É¤ËÉÕÍ¿¤µ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤ÎÆø¢ -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 84 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(84 .ll \n(84u -+.in 0 -+¤¹¤Ù¤Æ¤Î¥³¡¼¥É¤ËÉÕÍ¿¤µ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤ÎÆø¢ -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di h+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¤Ï¤¤/¿®Íê¤Ç¤¤Ê¤¤ -+.br -+.di -+.nr h| \n(dn -+.nr h- \n(dl -+.. -+.ec \ -+.eo -+.am 84 -+.br -+.di i+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(84 .ll \n(84u -+.in 0 -+¤¹¤Ù¤Æ¤Î¥³¡¼¥É¤ËÉÕÍ¿¤µ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤ÎÆø¢(3) -+.br -+.di -+.nr i| \n(dn -+.nr i- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di j+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¤Ï¤¤/¿®Íê¤Ç¤¤Ê¤¤ -+.br -+.di -+.nr j| \n(dn -+.nr j- \n(dl -+.. -+.ec \ -+.eo -+.am 84 -+.br -+.di k+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(84 .ll \n(84u -+.in 0 -+¤¹¤Ù¤Æ¤Î¥³¡¼¥É¤ËÉÕÍ¿¤µ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤ÎÆø¢(1¡¢3) -+.br -+.di -+.nr k| \n(dn -+.nr k- \n(dl -+.. -+.ec \ -+.eo -+.am 84 -+.br -+.di l+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(84 .ll \n(84u -+.in 0 -+¤¹¤Ù¤Æ¤Î¥³¡¼¥É¤ËÉÕÍ¿¤µ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤ÎÆø¢¤È¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ëÆâ¤ÇÉÕÍ¿¤µ¤ì¤ëÆø¢ -+.br -+.di -+.nr l| \n(dn -+.nr l- \n(dl -+.. -+.ec \ -+.eo -+.am 84 -+.br -+.di m+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/6u -+.if \n(.l<\n(84 .ll \n(84u -+.in 0 -+¤¹¤Ù¤Æ¤Î¥³¡¼¥É¤ËÉÕÍ¿¤µ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤ÎÆø¢¤È¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ëÆâ¤ÇÉÕÍ¿¤µ¤ì¤ëÆø¢(2) -+.br -+.di -+.nr m| \n(dn -+.nr m- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \w½ð̾ÉÕ¤JAR -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w½ð̾¤Î¤Ê¤¤JAR -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w½ð̾ÉÕ¤JAR -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w½ð̾ÉÕ¤JAR -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w½ð̾ÉÕ¤JAR -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w½ð̾ÉÕ¤JAR -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w½ð̾ÉÕ¤JAR -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w½ð̾ÉÕ¤JAR -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w½ð̾ÉÕ¤JAR -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w½ð̾ÉÕ¤JAR -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 38 \n(a- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 81 0 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¤Ï¤¤/¿®Íê¤Ç¤¤ë -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¤Ï¤¤/¿®Íê¤Ç¤¤ë -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¤Ï¤¤/¿®Íê¤Ç¤¤ë -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¤Ï¤¤/¿®Íê¤Ç¤¤ë -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(h- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(j- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 82 0 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 38 \w¤Ï¤¤ -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 38 \w¤Ï¤¤ -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 38 \w¤Ï¤¤ -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 38 \w¤Ï¤¤ -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(82<\n(38 .nr 82 \n(38 -+.82 -+.rm 82 -+.nr 38 \n(c- -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 83 0 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(83<\n(38 .nr 83 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(83<\n(38 .nr 83 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(83<\n(38 .nr 83 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(83<\n(38 .nr 83 \n(38 -+.nr 38 \w¤Ï¤¤ -+.if \n(83<\n(38 .nr 83 \n(38 -+.nr 38 \w¤Ï¤¤ -+.if \n(83<\n(38 .nr 83 \n(38 -+.nr 38 \w¤Ï¤¤ -+.if \n(83<\n(38 .nr 83 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(83<\n(38 .nr 83 \n(38 -+.nr 38 \w¤¤¤¤¤¨ -+.if \n(83<\n(38 .nr 83 \n(38 -+.nr 38 \w¤Ï¤¤ -+.if \n(83<\n(38 .nr 83 \n(38 -+.83 -+.rm 83 -+.nr 38 \n(d- -+.if \n(83<\n(38 .nr 83 \n(38 -+.nr 84 0 -+.nr 38 \w\f3ÉÕÍ¿¤µ¤ì¤ëÆø¢\fP -+.if \n(84<\n(38 .nr 84 \n(38 -+.nr 38 \w¤¹¤Ù¤Æ¤ÎÆø¢ -+.if \n(84<\n(38 .nr 84 \n(38 -+.nr 38 \w¤¹¤Ù¤Æ¤ÎÆø¢(1) -+.if \n(84<\n(38 .nr 84 \n(38 -+.nr 38 \w¤¹¤Ù¤Æ¤ÎÆø¢(1) -+.if \n(84<\n(38 .nr 84 \n(38 -+.84 -+.rm 84 -+.nr 38 \n(e- -+.if \n(84<\n(38 .nr 84 \n(38 -+.nr 38 \n(f- -+.if \n(84<\n(38 .nr 84 \n(38 -+.nr 38 \n(g- -+.if \n(84<\n(38 .nr 84 \n(38 -+.nr 38 \n(i- -+.if \n(84<\n(38 .nr 84 \n(38 -+.nr 38 \n(k- -+.if \n(84<\n(38 .nr 84 \n(38 -+.nr 38 \n(l- -+.if \n(84<\n(38 .nr 84 \n(38 -+.nr 38 \n(m- -+.if \n(84<\n(38 .nr 84 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr 42 \n(81+(3*\n(38) -+.nr 82 +\n(42 -+.nr 43 \n(82+(3*\n(38) -+.nr 83 +\n(43 -+.nr 44 \n(83+(3*\n(38) -+.nr 84 +\n(44 -+.nr TW \n(84 -+.if t .if \n(TW>\n(.li .tm Table at line 1090 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ne \n(a|u+\n(.Vu -+.ne \n(b|u+\n(.Vu -+.ne \n(c|u+\n(.Vu -+.ne \n(d|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u \n(83u \n(84u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u'\h'|\n(43u'\h'|\n(44u'\f3ÉÕÍ¿¤µ¤ì¤ëÆø¢\fP -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(42u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(43u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u \n(83u \n(84u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'½ð̾ÉÕ¤JAR\h'|\n(41u'¤¤¤¤¤¨\h'|\n(42u'¤¤¤¤¤¨\h'|\n(43u'¤¤¤¤¤¨\h'|\n(44u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(44u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u \n(83u \n(84u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'½ð̾¤Î¤Ê¤¤JAR\h'|\n(41u'¤¤¤¤¤¨\h'|\n(42u'¤¤¤¤¤¨\h'|\n(43u'¤¤¤¤¤¨\h'|\n(44u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(44u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u \n(83u \n(84u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'½ð̾ÉÕ¤JAR\h'|\n(41u'¤¤¤¤¤¨\h'|\n(42u'¤Ï¤¤\h'|\n(43u'¤¤¤¤¤¨\h'|\n(44u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(44u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(h|u+\n(.Vu -+.ne \n(i|u+\n(.Vu -+.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -+.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u \n(83u \n(84u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'½ð̾ÉÕ¤JAR\h'|\n(41u'\h'|\n(42u'¤¤¤¤¤¨\h'|\n(43u'¤¤¤¤¤¨\h'|\n(44u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.h+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(44u -+.in +\n(37u -+.i+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(j|u+\n(.Vu -+.ne \n(k|u+\n(.Vu -+.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -+.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u \n(83u \n(84u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'½ð̾ÉÕ¤JAR\h'|\n(41u'\h'|\n(42u'¤¤¤¤¤¨\h'|\n(43u'¤Ï¤¤\h'|\n(44u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.j+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(44u -+.in +\n(37u -+.k+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(l|u+\n(.Vu -+.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u \n(83u \n(84u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'½ð̾ÉÕ¤JAR\h'|\n(41u'¤¤¤¤¤¨\h'|\n(42u'¤Ï¤¤\h'|\n(43u'¤Ï¤¤\h'|\n(44u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(44u -+.in +\n(37u -+.l+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(m|u+\n(.Vu -+.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u \n(83u \n(84u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'½ð̾ÉÕ¤JAR\h'|\n(41u'¤Ï¤¤/¿®Íê¤Ç¤¤ë\h'|\n(42u'¤Ï¤¤\h'|\n(43u'¤Ï¤¤\h'|\n(44u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(44u -+.in +\n(37u -+.m+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u \n(82u \n(83u \n(84u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'½ð̾ÉÕ¤JAR\h'|\n(41u'¤Ï¤¤/¿®Íê¤Ç¤¤ë\h'|\n(42u'¤¤¤¤¤¨\h'|\n(43u'¤¤¤¤¤¨\h'|\n(44u'¤¹¤Ù¤Æ¤ÎÆø¢ -+.ta \n(80u \n(81u \n(82u \n(83u \n(84u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'½ð̾ÉÕ¤JAR\h'|\n(41u'¤Ï¤¤/¿®Íê¤Ç¤¤ë\h'|\n(42u'¤Ï¤¤\h'|\n(43u'¤¤¤¤¤¨\h'|\n(44u'¤¹¤Ù¤Æ¤ÎÆø¢(1) -+.ta \n(80u \n(81u \n(82u \n(83u \n(84u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'½ð̾ÉÕ¤JAR\h'|\n(41u'¤Ï¤¤/¿®Íê¤Ç¤¤ë\h'|\n(42u'¤¤¤¤¤¨\h'|\n(43u'¤Ï¤¤\h'|\n(44u'¤¹¤Ù¤Æ¤ÎÆø¢(1) -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.rm h+ -+.rm i+ -+.rm j+ -+.rm k+ -+.rm l+ -+.rm m+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-50 -+ -+.LP -+.LP -+Ãí°Õ: -+.LP -+.RS 3 -+.TP 3 -+1. -+¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ëÆâ¤Ë¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£/ÊÌ̾¤Ë¤Ä¤¤¤Æ¤Î¸ÀµÚ¤¬¤¢¤ë¾ì¹ç¡¢¤½¤ì¤ò¥¡¼¥¹¥È¥¢¤Ë¥¤¥ó¥Ý¡¼¥È¤·¤Æ¡¢ÉÕÍ¿¤µ¤ì¤¿Æø¢¤Ë¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ÎÀßÄ꤬ȿ±Ç¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+2. -+¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë/¥¡¼¥¹¥È¥¢¤ÎÁȹ礻¤Ï¡¢¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤Î¿®Íê¤Ç¤¤ë¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¤è¤ê¤âÍ¥À褵¤ì¤Þ¤¹¡£ -+.TP 3 -+3. -+Java 2¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï¡¢¿®Íê¤Ç¤¤Ê¤¤¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+4. -+Java 2 SDK¥¡¼¥¹¥È¥¢¤Ë¥¤¥ó¥Ý¡¼¥È¤Ç¤¤ë¤Î¤Ï¡¢¿®Íê¤Ç¤¤ë¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¤Î¤ß¤Ç¤¹¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+jar(1)¥Ä¡¼¥ë¤Î¥É¥¥å¥á¥ó¥È -+.TP 2 -+o -+keytool(1)¥Ä¡¼¥ë¤Î¥É¥¥å¥á¥ó¥È -+.TP 2 -+o -+\f3jarsigner\fP¥Ä¡¼¥ë¤Î»ÈÍÑÎã¤Ï¡¢ -+.na -+\f4Java¥Á¥å¡¼¥È¥ê¥¢¥ë\fP @ -+.fi -+http://docs.oracle.com/javase/tutorial/index.html¤Î -+.na -+\f4¥»¥¥å¥ê¥Æ¥£\fP @ -+.fi -+http://docs.oracle.com/javase/tutorial/security/index.html¤ò»²¾È -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/java.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/java.1 2013-03-09 08:44:53.000000000 -0800 -@@ -1,4 +1,4 @@ --." Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved. -+." Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved. - ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - ." - ." This code is free software; you can redistribute it and/or modify it -@@ -19,6 +19,632 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH java 1 "07 May 2011" -+.TH java 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+java \- Java¥¢¥×¥ê¥±¡¼¥·¥ç¥óµ¯Æ°¥Ä¡¼¥ë -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+ \fP\f3java\fP [ options ] class [ argument ... ] -+.fl -+ \f3java\fP [ options ] \f3\-jar\fP file.jar [ argument ... ] -+.fl -+.fi -+ -+.LP -+.RS 3 -+.TP 3 -+options -+¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¡£ -+.TP 3 -+class -+¸Æ¤Ó½Ð¤µ¤ì¤ë¥¯¥é¥¹¤Î̾Á°¡£ -+.TP 3 -+file.jar -+¸Æ¤Ó½Ð¤µ¤ì¤ëJAR¥Õ¥¡¥¤¥ë¤Î̾Á°¡£\f2\-jar\fP¤È¤È¤â¤Ë¤Î¤ß»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+argument -+\f3main\fP´Ø¿ô¤ËÅϤµ¤ì¤ë°ú¿ô¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3java\fP¥Ä¡¼¥ë¤Ï¡¢Java¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òµ¯Æ°¤·¤Þ¤¹¡£java¥Ä¡¼¥ë¤Ï¡¢Java Runtime Environment¤òµ¯Æ°¤·¤¿¸å¡¢»ØÄꤵ¤ì¤¿¥¯¥é¥¹¤ò¥í¡¼¥É¤·¡¢¤½¤Î¥¯¥é¥¹¤Î\f3main\fP¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤ê¡¢Java¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òµ¯Æ°¤·¤Þ¤¹¡£ -+.LP -+.LP -+¤³¤Î¥á¥½¥Ã¥É¤Ï¡¢public¤ª¤è¤Óstatic¤È¤·¤ÆÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢ÃͤÏÊÖ¤»¤Þ¤»¤ó¡£¤µ¤é¤Ë¡¢\f2String\fPÇÛÎó¤ò¥Ñ¥é¥á¡¼¥¿¤È¤·¤Æ»ØÄê¤Ç¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥á¥½¥Ã¥É¤ÎÀë¸À¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+public static void main(String args[]) -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó°Ê³°¤ÎºÇ½é¤Î°ú¿ô¤¬¡¢¸Æ¤Ó½Ð¤µ¤ì¤ë¥¯¥é¥¹¤Î̾Á°¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î̾Á°¤Ë¤Ï¡¢´°Á´½¤¾þ¥¯¥é¥¹Ì¾¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f3\-jar\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó°Ê³°¤ÎºÇ½é¤Î°ú¿ô¤¬¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥ê¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò´Þ¤à\f3JAR\fP¥¢¡¼¥«¥¤¥Ö¤Î̾Á°¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢¥Þ¥Ë¥Õ¥§¥¹¥È¤Î\f3Main\-Class\fP¥Ø¥Ã¥À¡¼¤Ç»ØÄꤵ¤ì¤¿¥¯¥é¥¹¤¬µ¯Æ°¥¯¥é¥¹¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+Java Runtime¤Ï¡¢¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¡¢¥¤¥ó¥¹¥È¡¼¥ëºÑ³ÈÄ¥µ¡Ç½¤ª¤è¤Ó¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Î3²Õ½ê¤«¤éµ¯Æ°¥¯¥é¥¹¤È¾¤Î»ÈÍѤµ¤ì¤Æ¤¤¤ë¥¯¥é¥¹¤ò¸¡º÷¤·¤Þ¤¹¡£ -+.LP -+.LP -+¥¯¥é¥¹Ì¾¤Þ¤¿¤ÏJAR¥Õ¥¡¥¤¥ë̾¤Î¸å¤Ë¤¢¤ë¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó°Ê³°¤Î°ú¿ô¤Ï¡¢\f3main\fP´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+µ¯Æ°¥Ä¡¼¥ë¤Ë¤Ï¡¢¸½ºß¤Î¼Â¹Ô´Ä¶¤ª¤è¤Ó¾Íè¤Î¥ê¥ê¡¼¥¹¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤ëɸ½à¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢²¾ÁÛ¥Þ¥·¥ó¤Î¸½ºß¤Î¼ÂÁõ¤Ç¤Ï¡¢Èóɸ½à¥ª¥×¥·¥ç¥ó¤Î¥»¥Ã¥È¤â¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢¾Íè¤Î¥ê¥ê¡¼¥¹¤ÇÊѹ¹¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SH "ɸ½à¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-client -+Java HotSpot Client VM¤òÁªÂò¤·¤Þ¤¹¡£64¥Ó¥Ã¥ÈÂбþJDK¤Ï¸½»þÅÀ¤Ç¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò̵»ë¤·¡¢¤«¤ï¤ê¤ËJava Hotspot Server VM¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.br -+.br -+¥Ç¥Õ¥©¥ë¥È¤ÎVM¤ÎÁªÂò¤Ë¤Ä¤¤¤Æ¤Ï¡¢ -+.na -+\f2¥µ¡¼¥Ð¡¼ \- ¥¯¥é¥¹¡¦¥Þ¥·¥ó¤Î¸¡½Ð\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/vm/server\-class.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-server -+Java HotSpot Server VM¤òÁªÂò¤·¤Þ¤¹¡£64¥Ó¥Ã¥ÈÂбþJDK¾å¤Ç¤Ï¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤ë¤Î¤ÏJava Hotspot Server VM¤Î¤ß¤Ç¤¢¤ë¤¿¤á¡¢\-server¥ª¥×¥·¥ç¥ó¤¬°ÅÌÛŪ¤ËÁªÂò¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+¥Ç¥Õ¥©¥ë¥È¤ÎVM¤ÎÁªÂò¤Ë¤Ä¤¤¤Æ¤Ï¡¢ -+.na -+\f2¥µ¡¼¥Ð¡¼ \- ¥¯¥é¥¹¡¦¥Þ¥·¥ó¤Î¸¡½Ð\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/vm/server\-class.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-agentlib:libname[=options] -+¥Í¥¤¥Æ¥£¥Ö¡¦¥¨¡¼¥¸¥§¥ó¥È¡¦¥é¥¤¥Ö¥é¥ê\f2libname\fP¤ò¥í¡¼¥É¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¼¡¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ -+.br -+.br -+\-agentlib:hprof -+.br -+.br -+\-agentlib:jdwp=help -+.br -+.br -+\-agentlib:hprof=help -+.br -+.br -+¾ÜºÙ¤Ï¡¢ -+.na -+\f2JVMTI¥¨¡¼¥¸¥§¥ó¥È¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/platform/jvmti/jvmti.html#starting¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-agentpath:pathname[=options] -+¥Õ¥ë¥Ñ¥¹Ì¾¤ò»ÈÍѤ·¤Æ¡¢¥Í¡¼¥Æ¥£¥Ö¡¦¥¨¡¼¥¸¥§¥ó¥È¡¦¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤·¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2JVMTI¥¨¡¼¥¸¥§¥ó¥È¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/platform/jvmti/jvmti.html#starting¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-classpath classpath -+.TP 3 -+\-cp classpath -+¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¡¢JAR¥¢¡¼¥«¥¤¥Ö¤ª¤è¤ÓZIP¥¢¡¼¥«¥¤¥Ö¤Î¥ê¥¹¥È¤ò»ØÄꤷ¤Þ¤¹¡£¥¯¥é¥¹¡¦¥Ñ¥¹¤Î³Æ¥¨¥ó¥È¥ê¤Ï¥³¥í¥ó(\f3:\fP)¤Ç¶èÀÚ¤ê¤Þ¤¹¡£\f3\-classpath\fP¤Þ¤¿¤Ï\f3\-cp\fP¤ò»ØÄꤹ¤ë¤È¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ÎÃͤˤè¤Ã¤Æ\f3CLASSPATH\fP´Ä¶ÊÑ¿ô¤ÎÀßÄ꤬¥ª¡¼¥Ð¡¼¥é¥¤¥É¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+\f3\-classpath\fP¤â\f3\-cp\fP¤â»ÈÍѤµ¤ì¤º¡¢\f3CLASSPATH\fP¤âÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê(\f4.\fP)¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.br -+.br -+Êص¹¾å¡¢\f2*\fP¤Î¥Ù¡¼¥¹Ì¾¤ò´Þ¤à¥¯¥é¥¹¡¦¥Ñ¥¹Í×ÁǤϡ¢\f2.jar\fP¤Þ¤¿¤Ï\f2.JAR\fP¤ò³ÈÄ¥»Ò¤Ë»ý¤Ä¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤ò»ØÄꤹ¤ë¤Î¤ÈƱÅù¤È¤ß¤Ê¤µ¤ì¤Þ¤¹(java¥×¥í¥°¥é¥à¤Ï¤³¤Î2¤Ä¤Î¸Æ½Ð¤·¤ò¶èÊ̤Ǥ¤Þ¤»¤ó)¡£ -+.br -+.br -+¤¿¤È¤¨¤Ð¡¢¥Ç¥£¥ì¥¯¥È¥ê\f2foo\fP¤Ë\f2a.jar\fP¤È\f2b.JAR\fP¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥¯¥é¥¹¡¦¥Ñ¥¹Í×ÁÇ\f2foo/*\fP¤Ï\f2A.jar:b.JAR\fP¤ËŸ³«¤µ¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢JAR¥Õ¥¡¥¤¥ë¤Î½çÈÖ¤Ï̤»ØÄê¤È¤Ê¤ê¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ë¤Ï¡¢±£¤·¥Õ¥¡¥¤¥ë¤â´Þ¤á¡¢»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤ÎJAR¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Þ¤¹¡£\f2*\fP¤Î¤ß¤«¤é¤Ê¤ë¥¯¥é¥¹¡¦¥Ñ¥¹¡¦¥¨¥ó¥È¥ê¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤ÎJAR¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤ËŸ³«¤µ¤ì¤Þ¤¹¡£\f2CLASSPATH\fP´Ä¶ÊÑ¿ô¤â¡¢ÄêµÁ»þ¤Ë¤ÏƱÍͤËŸ³«¤µ¤ì¤Þ¤¹¡£¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¥ï¥¤¥ë¥É¥«¡¼¥ÉŸ³«¤Ïɬ¤º¡¢Java²¾ÁÛ¥Þ¥·¥ó¤Îµ¯Æ°Á°¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢´Ä¶¤ËÌä¹ç¤»¤ò¹Ô¤ï¤Ê¤¤¸Â¤ê¡¢Java¥×¥í¥°¥é¥à¤¬Å¸³«¤µ¤ì¤Æ¤¤¤Ê¤¤¥ï¥¤¥ë¥É¥«¡¼¥É¤òǧ¼±¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢\f2System.getenv(\\"CLASSPATH\\")\fP¸Æ½Ð¤·¤¬¤½¤ÎÎã¤Ç¤¹¡£ -+.br -+.br -+¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥¯¥é¥¹¡¦¥Ñ¥¹¤ÎÀßÄê\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#classpath¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-Dproperty=value -+¥·¥¹¥Æ¥à¡¦¥×¥í¥Ñ¥Æ¥£¤ÎÃͤòÀßÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-d32 -+.TP 3 -+\-d64 -+¤½¤ì¤¾¤ì32¥Ó¥Ã¥È´Ä¶¡¢64¥Ó¥Ã¥È´Ä¶¤Ç¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤³¤È¤ò¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿´Ä¶¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¤«¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥¨¥é¡¼¤¬Êó¹ð¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+¸½ºß¤Î¤È¤³¤í¡¢Java HotSpot Server VM¤Î¤ß¤¬64¥Ó¥Ã¥È¤ÎÁàºî¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤¿¤á¡¢\-d64»ÈÍÑ»þ¤Ë¤Ï\-server¥ª¥×¥·¥ç¥ó¤¬°ÅÌÛŪ¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢\-d64»ÈÍÑ»þ¤Ë¤Ï¡Ö\-client¡×¥ª¥×¥·¥ç¥ó¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£¤³¤Î»ÅÍͤϡ¢¾Íè¤Î¥ê¥ê¡¼¥¹¤Ç¤ÏÊѹ¹¤Ë¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+\f3\-d32\fP¤È\f3\-d64\fP¤¬¤É¤Á¤é¤â»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤È¤·¤Æ¡¢32¥Ó¥Ã¥È´Ä¶¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¤³¤Î»ÅÍͤϡ¢¾Íè¤Î¥ê¥ê¡¼¥¹¤Ç¤ÏÊѹ¹¤Ë¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-enableassertions[:<package name>"..." | :<class name> ] -+.TP 3 -+\-ea[:<package name>"..." | :<class name> ] -+.TP 3 -+\-disableassertions[:<package name>"..." | :<class name> ] -+.TP 3 -+\-da[:<package name>"..." | :<class name> ] -+¥¢¥µ¡¼¥·¥ç¥ó¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¹¡£ -+.br -+.br -+°ú¿ô¤Ê¤·¤Î\f3disableassertions\fP¤Þ¤¿¤Ï\f3\-da\fP¤ò»ØÄꤹ¤ë¤È¡¢¥¢¥µ¡¼¥·¥ç¥ó¤¬Ìµ¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£¡Ö\f2...\fP¡×¤Ç½ª¤ï¤ë°ú¿ô¤ò1¤Ä»ØÄꤹ¤ë¤È¡¢»ØÄꤷ¤¿¥Ñ¥Ã¥±¡¼¥¸¤È¤½¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸Æâ¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤¬Ìµ¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£°ú¿ô¤È¤·¤Æ¡Ö\f2...\fP¡×¤Î¤ß¤ò»ØÄꤹ¤ë¤È¡¢¸½ºß¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë̾Á°¤Î¤Ê¤¤¥Ñ¥Ã¥±¡¼¥¸Æâ¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤¬Ìµ¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£¡Ö\f2...\fP¡×¤Ç½ª¤ï¤é¤Ê¤¤°ú¿ô¤ò1¤Ä»ØÄꤹ¤ë¤È¡¢»ØÄꤷ¤¿¥¯¥é¥¹Æâ¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤¬Ìµ¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.br -+.br -+¥Ñ¥Ã¥±¡¼¥¸\f2com.wombat.fruitbat\fPÆâ¤Ç¤Ï¥¢¥µ¡¼¥·¥ç¥ó¤ò͸ú¤Ë¤·¡¢¥¯¥é¥¹\f2com.wombat.fruitbat.Brickbat\fPÆâ¤Ç¤Ï¥¢¥µ¡¼¥·¥ç¥ó¤ò̵¸ú¤Ë¤·¤¿¤¦¤¨¤Ç¡¢¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+java \-ea:com.wombat.fruitbat... \-da:com.wombat.fruitbat.Brickbat \fP\f4<Main Class>\fP\f3 -+.fl -+\fP -+.fi -+\f3\-disableassertions\fP¤ª¤è¤Ó\f3\-da\fP¥¹¥¤¥Ã¥Á¤Ï¡¢\f2¤¹¤Ù¤Æ¤Î\fP¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤ª¤è¤Ó¥·¥¹¥Æ¥à¡¦¥¯¥é¥¹¤ËŬÍѤµ¤ì¤Þ¤¹¡£¥·¥¹¥Æ¥à¡¦¥¯¥é¥¹¤Ë¤Ï¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤¿¤À¤·¡¢¤³¤Î¥ë¡¼¥ë¤Ë¤Ï1¤ÄÎã³°¤¬¤¢¤ê¤Þ¤¹¡£¤½¤ì¤Ï¡¢°ú¿ô¤Ê¤·¤Î·Á¼°¤Ç¤³¤Î¥¹¥¤¥Ã¥Á¤ò»ØÄꤹ¤ë¤È¡¢¤½¤Î»ØÄ꤬¥·¥¹¥Æ¥à¤ËŬÍÑ\f2¤µ¤ì¤Ê¤¤\fP¡¢¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¤³¤ÎÎã³°¤òÍøÍѤ¹¤ì¤Ð¡¢¥·¥¹¥Æ¥à¡¦¥¯¥é¥¹¤ò½ü¤¯¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤ò´Êñ¤Ë͸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤¹¤Ù¤Æ¤Î¥·¥¹¥Æ¥à¡¦¥¯¥é¥¹¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤ò̵¸ú¤Ë¤¹¤ë¤¿¤á¤Ë¡¢Ê̤Υ¹¥¤¥Ã¥Á¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î¸å¤Î\f3\-disablesystemassertions\fP¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+¥¢¥µ¡¼¥·¥ç¥ó¤ò͸ú¤Ë¤·¤Þ¤¹¡£¥¢¥µ¡¼¥·¥ç¥ó¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï̵¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ -+.br -+.br -+°ú¿ô¤Ê¤·¤Î\f3enableassertions\fP¤Þ¤¿¤Ï\f3\-ea\fP¤ò»ØÄꤹ¤ë¤È¡¢¥¢¥µ¡¼¥·¥ç¥ó¤¬Í¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£¡Ö\f2...\fP¡×¤Ç½ª¤ï¤ë°ú¿ô¤ò1¤Ä»ØÄꤹ¤ë¤È¡¢»ØÄꤷ¤¿¥Ñ¥Ã¥±¡¼¥¸¤È¤½¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸Æâ¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤¬Í¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£°ú¿ô¤È¤·¤Æ¡Ö\f2...\fP¡×¤Î¤ß¤ò»ØÄꤹ¤ë¤È¡¢¸½ºß¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë̾Á°¤Î¤Ê¤¤¥Ñ¥Ã¥±¡¼¥¸Æâ¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤¬Í¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£¡Ö\f2...\fP¡×¤Ç½ª¤ï¤é¤Ê¤¤°ú¿ô¤ò1¤Ä»ØÄꤹ¤ë¤È¡¢»ØÄꤷ¤¿¥¯¥é¥¹Æâ¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤¬Í¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.br -+.br -+ñ°ì¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¤³¤ì¤é¤Î¥¹¥¤¥Ã¥Á¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÊ£¿ô»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢»ØÄꤷ¤¿¥¹¥¤¥Ã¥Á¤¬½çÈ֤˽èÍý¤µ¤ì¤Æ¤«¤é¥¯¥é¥¹¤¬¥í¡¼¥É¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¤¿¤È¤¨¤Ð¡¢¥Ñ¥Ã¥±¡¼¥¸\f2com.wombat.fruitbat\fP(¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤ò´Þ¤à)Æâ¤Ç¤Î¤ß¥¢¥µ¡¼¥·¥ç¥ó¤ò͸ú¤Ë¤·¤Æ¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+java \-ea:com.wombat.fruitbat... <Main Class> -+.fl -+\fP -+.fi -+\f3\-enableassertions\fP¤ª¤è¤Ó\f3\-ea\fP¥¹¥¤¥Ã¥Á¤Ï¡¢\f2¤¹¤Ù¤Æ¤Î\fP¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤ª¤è¤Ó¥·¥¹¥Æ¥à¡¦¥¯¥é¥¹¤ËŬÍѤµ¤ì¤Þ¤¹¡£¥·¥¹¥Æ¥à¡¦¥¯¥é¥¹¤Ë¤Ï¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤¿¤À¤·¡¢¤³¤Î¥ë¡¼¥ë¤Ë¤Ï1¤ÄÎã³°¤¬¤¢¤ê¤Þ¤¹¡£¤½¤ì¤Ï¡¢°ú¿ô¤Ê¤·¤Î·Á¼°¤Ç¤³¤Î¥¹¥¤¥Ã¥Á¤ò»ØÄꤹ¤ë¤È¡¢¤½¤Î»ØÄ꤬¥·¥¹¥Æ¥à¤ËŬÍÑ\f2¤µ¤ì¤Ê¤¤\fP¡¢¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¤³¤ÎÎã³°¤òÍøÍѤ¹¤ì¤Ð¡¢¥·¥¹¥Æ¥à¡¦¥¯¥é¥¹¤ò½ü¤¯¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤ò´Êñ¤Ë͸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤¹¤Ù¤Æ¤Î¥·¥¹¥Æ¥à¡¦¥¯¥é¥¹¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤ò̵¸ú¤Ë¤¹¤ë¤¿¤á¤Ë¡¢Ê̤Υ¹¥¤¥Ã¥Á¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î¸å¤Î\f3\-enablesystemassertions\fP¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-enablesystemassertions -+.TP 3 -+\-esa -+¤¹¤Ù¤Æ¤Î¥·¥¹¥Æ¥à¡¦¥¯¥é¥¹Æâ¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤ò͸ú¤Ë¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥·¥¹¥Æ¥à¡¦¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ\f2¥¢¥µ¡¼¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥È¡¦¥¹¥Æ¡¼¥¿¥¹\fP¤ò\f2true\fP¤ËÀßÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-disablesystemassertions -+.TP 3 -+\-dsa -+¤¹¤Ù¤Æ¤Î¥·¥¹¥Æ¥à¡¦¥¯¥é¥¹Æâ¤Ç¥¢¥µ¡¼¥·¥ç¥ó¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£ -+.TP 3 -+\-help¤Þ¤¿¤Ï\-? -+»ÈÍÑÊýË¡¤òɽ¼¨¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£ -+.TP 3 -+\-jar -+JAR¥Õ¥¡¥¤¥ë¤Ë¥«¥×¥»¥ë²½¤µ¤ì¤¿¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤Þ¤¹¡£ºÇ½é¤Î°ú¿ô¤Ï¡¢µ¯Æ°¥¯¥é¥¹¤Î̾Á°¤Ç¤Ï¤Ê¤¯¡¢JAR¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ë¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬µ¡Ç½¤¹¤ë¤Ë¤Ï¡¢JAR¥Õ¥¡¥¤¥ë¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¤Ë\f3¡ÖMain\-Class:\fP\f4classname\fP\f3¡×\fP¤È¤¤¤¦·Á¼°¤Î¹Ô¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f2classname\fP¤Ë¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î³«»Ï°ÌÃ֤Ȥ·¤Æµ¡Ç½¤¹¤ë\f2public\ static\ void\ main(String[]\ args)\fP¥á¥½¥Ã¥É¤ò´Þ¤à¥¯¥é¥¹¤ò»ØÄꤷ¤Þ¤¹¡£JAR¥Õ¥¡¥¤¥ë¤È¤½¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢jar(1)¤È¡¢ -+.na -+\f2Java¥Á¥å¡¼¥È¥ê¥¢¥ë\fP @ -+.fi -+http://docs.oracle.com/javase/tutorial/deployment/jar/¤Î¡ÖTrail: Jar Files¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£\ -+.br -+.br -+¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢»ØÄꤷ¤¿JAR¥Õ¥¡¥¤¥ë¤¬¤¹¤Ù¤Æ¤Î¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¤Î¥½¡¼¥¹¤Ë¤Ê¤ê¡¢¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¾¤ÎÀßÄê¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+¡Öjava \-jar¡×¥ª¥×¥·¥ç¥ó¤Ç¼Â¹Ô¤Ç¤¤ëJAR¥Õ¥¡¥¤¥ë¤Ï¡¢¼Â¹Ô¸¢¸Â¤Î¥»¥Ã¥È¤òÊÝ»ý¤·¤Æ¤¤¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢¡Öjava \-jar¡×¤ò»ÈÍѤ·¤Ê¤¤¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ -+.na -+\f2Java Archive(JAR)¥Õ¥¡¥¤¥ë\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/jar/index.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-javaagent:jarpath[=options] -+Java¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¥¨¡¼¥¸¥§¥ó¥È¤ò¥í¡¼¥É¤·¤Þ¤¹¡£ -+.na -+\f2java.lang.instrument\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package\-summary.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-jre\-restrict\-search -+¥æ¡¼¥¶¡¼¡¦¥×¥é¥¤¥Ù¡¼¥È¤ÊJRE¤ò¥Ð¡¼¥¸¥ç¥ó¸¡º÷¤Ë´Þ¤á¤Þ¤¹¡£ -+.TP 3 -+\-no\-jre\-restrict\-search -+¥æ¡¼¥¶¡¼¡¦¥×¥é¥¤¥Ù¡¼¥È¤ÊJRE¤ò¥Ð¡¼¥¸¥ç¥ó¸¡º÷¤«¤é½ü³°¤·¤Þ¤¹¡£ -+.TP 3 -+\-showversion -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ³¹Ô¤·¤Þ¤¹¡£(´ØÏ¢¹àÌÜ: \f3\-version\fP¡£) -+.TP 3 -+\-splash:imagepath -+\f2imagepath\fP¤Ë»ØÄꤵ¤ì¤¿²èÁü¤ò´Þ¤à¥¹¥×¥é¥Ã¥·¥å²èÌ̤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-verbose -+.TP 3 -+\-verbose:class -+¥¯¥é¥¹¤¬¥í¡¼¥É¤µ¤ì¤ë¤¿¤Ó¤Ë¥¯¥é¥¹¤Ë´Ø¤¹¤ë¾ðÊó¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-verbose:gc -+¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó¡¦¥¤¥Ù¥ó¥È¤¬È¯À¸¤¹¤ë¤¿¤Ó¤ËÊó¹ð¤·¤Þ¤¹¡£ -+.TP 3 -+\-verbose:jni -+¥Í¥¤¥Æ¥£¥Ö¡¦¥á¥½¥Ã¥É¤Î»ÈÍѤª¤è¤Ó¤½¤Î¾¤ÎJava Native Interface(JNI)¥¢¥¯¥Æ¥£¥Ó¥Æ¥£¤Ë´Ø¤¹¤ë¾ðÊó¤òÊó¹ð¤·¤Þ¤¹¡£ -+.TP 3 -+\-version -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£(´ØÏ¢¹àÌÜ: \f3\-showversion\fP¡£) -+.TP 3 -+\-version:release -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë»ØÄꤵ¤ì¤¿¥¯¥é¥¹¤Þ¤¿¤ÏJAR¥Õ¥¡¥¤¥ë¤¬¡¢\f2release\fP¤Ç»ØÄꤵ¤ì¤¿¥Ð¡¼¥¸¥ç¥ó¤òɬÍפȤ·¤Æ¤¤¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£µ¯Æ°¤µ¤ì¤¿java¥³¥Þ¥ó¥É¤Î¥Ð¡¼¥¸¥ç¥ó¤¬¤³¤Î»ØÄêÆâÍƤòËþ¤¿¤µ¤º¡¢¤«¤ÄŬÀڤʼÂÁõ¤¬¥·¥¹¥Æ¥à¾å¤Ç¸«¤Ä¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢¤½¤ÎŬÀڤʼÂÁõ¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.br -+.br -+\f2release\fP¤Ç¤Ï¡¢ÆÃÄê¤Î¥Ð¡¼¥¸¥ç¥ó¤ò»ØÄê¤Ç¤¤ë¤Î¤ß¤Ç¤Ê¤¯¡¢¥Ð¡¼¥¸¥ç¥óʸ»úÎó¤È¸Æ¤Ð¤ì¤ë¥Ð¡¼¥¸¥ç¥ó¤Î¥ê¥¹¥È¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¥Ð¡¼¥¸¥ç¥óʸ»úÎó¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥Ð¡¼¥¸¥ç¥óÈϰϤò¶õÇò¤Ç¶èÀڤä¿·Á¼°¤Î½ç½øÉÕ¤¥ê¥¹¥È¤Ç¤¹¡£¥Ð¡¼¥¸¥ç¥óÈϰϤϡ¢¥Ð¡¼¥¸¥ç¥óID¡¢¥Ð¡¼¥¸¥ç¥óID¤Î¸å¤Ë¥¢¥¹¥¿¥ê¥¹¥¯(*)¤òÉղä·¤¿¤â¤Î¡¢¥Ð¡¼¥¸¥ç¥óID¤Î¸å¤Ë¥×¥é¥¹µ¹æ(+)¤òÉղä·¤¿¤â¤Î¡¢2¤Ä¤Î¥Ð¡¼¥¸¥ç¥óÈϰϤò¥¢¥ó¥Ñ¥µ¥ó¥É(&)¤Ç·ë¹ç¤·¤¿¤â¤Î¡¢¤Î¤¤¤º¤ì¤«¤Ë¤Ê¤ê¤Þ¤¹¡£¥¢¥¹¥¿¥ê¥¹¥¯¤Ï¥×¥ì¥Õ¥£¥Ã¥¯¥¹°ìÃפò¡¢¥×¥é¥¹µ¹æ¤Ï»ØÄꤵ¤ì¤¿¥Ð¡¼¥¸¥ç¥ó°Ê¾å¤ò¡¢¥¢¥ó¥Ñ¥µ¥ó¥É¤Ï2¤Ä¤Î¥Ð¡¼¥¸¥ç¥óÈϰϤÎÏÀÍýÀѤò¡¢¤½¤ì¤¾¤ì°ÕÌ£¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+\-version:"1.6.0_13 1.6*&1.6.0_10+" -+.fl -+\fP -+.fi -+¾åµ¤Î°ÕÌ£¤Ï¡¢¥Ð¡¼¥¸¥ç¥ó1.6.0_13¡¢1.6¤ò¥Ð¡¼¥¸¥ç¥óID¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤Ë»ý¤Ä1.6.0_10°Ê¾å¤Î¥Ð¡¼¥¸¥ç¥ó¡¢¤Î¤¤¤º¤ì¤«¤ò¥¯¥é¥¹¤Þ¤¿¤ÏJAR¥Õ¥¡¥¤¥ë¤¬É¬ÍפȤ·¤Æ¤¤¤ë¡¢¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¥Ð¡¼¥¸¥ç¥óʸ»úÎó¤Î¸·Ì©¤Ê¹½Ê¸¤äÄêµÁ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖJava Network Launching Protocol&API Specification(JSR\-56)¡×¤Î¡ÖAppendix A¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+JAR¥Õ¥¡¥¤¥ë¤Î¾ì¹ç¤ÏÄ̾¥Ð¡¼¥¸¥ç¥óÍ×·ï¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë»ØÄꤹ¤ë¤è¤ê¤â¡¢JAR¥Õ¥¡¥¤¥ë¤Î¥Þ¥Ë¥Õ¥§¥¹¥ÈÆâ¤Ë»ØÄꤹ¤ë¤³¤È¤¬¿ä¾©¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.br -+.br -+¤³¤Î¥ª¥×¥·¥ç¥ó¤Î»ÈÍѤ˴ؤ¹¤ë½ÅÍפʥݥꥷ¡¼¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¸å½Ò¤ÎÃí°Õ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RE -+ -+.LP -+.SS -+Èóɸ½à¥ª¥×¥·¥ç¥ó -+.LP -+.RS 3 -+.TP 3 -+\-X -+Èóɸ½à¥ª¥×¥·¥ç¥ó¤Ë´Ø¤¹¤ë¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£ -+.TP 3 -+\-Xint -+¥¤¥ó¥¿¥×¥ê¥¿ÀìÍѥ⡼¥É¤ÇÆ°ºî¤·¤Þ¤¹¡£¥Í¥¤¥Æ¥£¥Ö¡¦¥³¡¼¥É¤Ø¤Î¥³¥ó¥Ñ¥¤¥ë¤Ï̵¸ú¤Ë¤Ê¤ê¡¢¤¹¤Ù¤Æ¤Î¥Ð¥¤¥È¥³¡¼¥É¤¬¥¤¥ó¥¿¥×¥ê¥¿¤Ë¤è¤Ã¤Æ¼Â¹Ô¤µ¤ì¤Þ¤¹¡£Java HotSpot VM¤ËÂбþ¤¹¤ë¥³¥ó¥Ñ¥¤¥é¤¬Ä󶡤¹¤ë¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¾å¤ÎÍøÅÀ¤Ï¡¢¤³¤Î¥â¡¼¥É¤Ç¤Ï¼Â¸½¤µ¤ì¤Þ¤»¤ó¡£ -+.TP 3 -+\-Xbatch -+¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¡¦¥³¥ó¥Ñ¥¤¥ë¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£Ä̾VM¤Ç¤Ï¡¢¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¡¦¥³¥ó¥Ñ¥¤¥ë¤¬½ªÎ»¤¹¤ë¤Þ¤Ç¡¢¥á¥½¥Ã¥É¤ò¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¡¦¥¿¥¹¥¯¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¡¢¥¤¥ó¥¿¥×¥ê¥¿¡¦¥â¡¼¥É¤Ç¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£\f2\-Xbatch\fP¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤È¡¢¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¡¦¥³¥ó¥Ñ¥¤¥ë¤¬Ìµ¸ú¤Ë¤Ê¤ê¡¢¤¹¤Ù¤Æ¤Î¥á¥½¥Ã¥É¤Î¥³¥ó¥Ñ¥¤¥ë¤¬´°Î»¤¹¤ë¤Þ¤Ç¥Õ¥©¥¢¥°¥é¥¦¥ó¥É¡¦¥¿¥¹¥¯¤È¤·¤Æ½èÍý¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-Xbootclasspath:bootclasspath -+¥Ö¡¼¥È¡¦¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¡¢JAR¥¢¡¼¥«¥¤¥Ö¤ª¤è¤ÓZIP¥¢¡¼¥«¥¤¥Ö¤Î¥ê¥¹¥È¤ò¥³¥í¥ó¤Ç¶èÀڤäƻØÄꤷ¤Þ¤¹¡£»ØÄꤷ¤¿¥Ñ¥¹¤Ë¸ºß¤¹¤ë¥Ö¡¼¥È¡¦¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤¬¡¢Java¥×¥é¥Ã¥È¥Õ¥©¡¼¥àJDK¤Ë´Þ¤Þ¤ì¤ë¥Ö¡¼¥È¡¦¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¤«¤ï¤ê¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£\f2Ãí°Õ: rt.jarÆâ¤Î¥¯¥é¥¹¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤¹¤ëÌÜŪ¤Ç¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢¥·¥¹¥Æ¥à¤ËÇÛÃÖ¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£Java Runtime Environment¥Ð¥¤¥Ê¥ê¡¦¥³¡¼¥É¡¦¥é¥¤¥»¥ó¥¹°ãÈ¿¤Ë¤Ê¤ê¤Þ¤¹¡£\fP -+.TP 3 -+\-Xbootclasspath/a:path -+¥Ç¥£¥ì¥¯¥È¥ê¡¢JAR¥¢¡¼¥«¥¤¥Ö¤ª¤è¤ÓZIP¥¢¡¼¥«¥¤¥Ö¤Î¥Ñ¥¹¤ò¥³¥í¥ó¤Ç¶èÀڤäƻØÄꤷ¤Þ¤¹¡£¥Ñ¥¹¤Ï¥Ç¥Õ¥©¥ë¥È¤Î¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¸å¤ËÄɲ䵤ì¤Þ¤¹¡£ -+.TP 3 -+\-Xbootclasspath/p:path -+¥Ç¥£¥ì¥¯¥È¥ê¡¢JAR¥¢¡¼¥«¥¤¥Ö¤ª¤è¤ÓZIP¥¢¡¼¥«¥¤¥Ö¤Î¥Ñ¥¹¤ò¥³¥í¥ó¤Ç¶èÀڤäƻØÄꤷ¤Þ¤¹¡£¥Ñ¥¹¤Ï¥Ç¥Õ¥©¥ë¥È¤Î¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤ÎÁ°¤ËÄɲ䵤ì¤Þ¤¹¡£\f2Ãí°Õ: rt.jarÆâ¤Î¥¯¥é¥¹¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤¹¤ëÌÜŪ¤Ç¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢¥·¥¹¥Æ¥à¤ËÇÛÃÖ¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£Java Runtime Environment¥Ð¥¤¥Ê¥ê¡¦¥³¡¼¥É¡¦¥é¥¤¥»¥ó¥¹°ãÈ¿¤Ë¤Ê¤ê¤Þ¤¹¡£\fP -+.TP 3 -+\-Xcheck:jni -+Java Native Interface(JNI)µ¡Ç½¤ËÂФ·¤ÆÄɲåÁ¥§¥Ã¥¯¤ò¹Ô¤¤¤Þ¤¹¡£¶ñÂÎŪ¤Ë¤Ï¡¢Java²¾ÁÛ¥Þ¥·¥ó¤ÏJNI¥ê¥¯¥¨¥¹¥È¤ò½èÍý¤¹¤ëÁ°¤Ë¡¢JNI´Ø¿ô¤ËÅϤµ¤ì¤ë¥Ñ¥é¥á¡¼¥¿¤È¡¢¼Â¹Ô´Ä¶¤Î¥Ç¡¼¥¿¤ò¸¡¾Ú¤·¤Þ¤¹¡£Ìµ¸ú¤Ê¥Ç¡¼¥¿¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¡¦¥³¡¼¥É¤ËÌäÂ꤬¤¢¤ë¤³¤È¤ò¼¨¤·¤Æ¤¤¤ë¤¿¤á¡¢Java²¾ÁÛ¥Þ¥·¥ó¤ÏÃ×̿Ū¥¨¥é¡¼¤òȯÀ¸¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹Äã²¼¤¬Í½ÁÛ¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-Xfuture -+¥¯¥é¥¹¤È¥Õ¥¡¥¤¥ë¤Î·Á¼°¤ò¸·Ì©¤Ë¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£²¼°Ì¸ß´¹À¤òÊݤĤ¿¤á¡¢JDK¤Î²¾ÁÛ¥Þ¥·¥ó¤¬¼Â¹Ô¤¹¤ë¥Ç¥Õ¥©¥ë¥È¤Î·Á¼°¥Á¥§¥Ã¥¯¤Ï¡¢JDK¥½¥Õ¥È¥¦¥§¥¢¤Î¥Ð¡¼¥¸¥ç¥ó1.1.x¤¬¼Â¹Ô¤¹¤ë¥Á¥§¥Ã¥¯¤ÈƱÄøÅ٤θ·Ì©¤µ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£\f3\-Xfuture\fP¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤È¡¢¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë·Á¼°¤Î»ÅÍͤؤνàµò¤ò¶¯²½¤¹¤ë¤¿¤á¤Î¤è¤ê¸·Ì©¤Ê¥Á¥§¥Ã¥¯¤¬Í¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£Java¥¢¥×¥ê¥±¡¼¥·¥ç¥óµ¯Æ°¥Ä¡¼¥ë¤Î¾Íè¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢¤è¤ê¸·Ì©¤Ê¥Á¥§¥Ã¥¯¤¬¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤ë¤¿¤á¡¢¿·¤·¤¤¥³¡¼¥É¤ò³«È¯¤¹¤ë¤È¤¤Ë¤Ï¤³¤Î¥Õ¥é¥°¤ò»ÈÍѤ¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ -+.TP 3 -+\-Xnoclassgc -+¥¯¥é¥¹¤Î¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¥í¡¼¥ÉºÑ¥¯¥é¥¹¤«¤é¥á¥â¥ê¡¼¤¬²óÉü¤µ¤ì¤ë¤³¤È¤¬¤Ê¤¯¤Ê¤ë¤¿¤á¡¢Á´ÂÎŪ¤Ê¥á¥â¥ê¡¼»ÈÍÑÎ̤¬ÁýÂ礷¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¤ÏOutOfMemoryError¤¬¥¹¥í¡¼¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-Xincgc -+¥¤¥ó¥¯¥ê¥á¥ó¥¿¥ë¡¦¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥¿¤ò͸ú¤Ë¤·¤Þ¤¹¡£¥¤¥ó¥¯¥ê¥á¥ó¥¿¥ë¡¦¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥¿¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï̵¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£Í¸ú¤Ë¤¹¤ë¤È¡¢¥×¥í¥°¥é¥à¤Î¼Â¹ÔÃæ¤Ë¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó¤Ë¤è¤ë°ì»þÄä»ß¤¬È¯À¸¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£¥¤¥ó¥¯¥ê¥á¥ó¥¿¥ë¡¦¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥¿¤Ï¡¢¥×¥í¥°¥é¥à¤ÈƱ»þ¤Ë¼Â¹Ô¤¹¤ë¤³¤È¤¬¤¢¤ê¡¢¤³¤Î¾ì¹ç¡¢¥×¥í¥°¥é¥à¤ÎÍøÍѤǤ¤ë¥×¥í¥»¥Ã¥µÇ½ÎϤ¬Äã²¼¤·¤Þ¤¹¡£ -+.TP 3 -+\-Xloggc:file -+\-verbose:gc¤ÈƱÍͤ˥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó¡¦¥¤¥Ù¥ó¥È¤¬È¯À¸¤¹¤ë¤¿¤Ó¤ËÊó¹ð¤·¤Þ¤¹¤¬¡¢¤½¤Î¥Ç¡¼¥¿¤ò\f2file\fP¤ËµÏ¿¤·¤Þ¤¹¡£\f2\-verbose:gc\fP¤ò»ØÄꤷ¤¿¤È¤¤ËÊó¹ð¤µ¤ì¤ë¾ðÊó¤Î¾¤Ë¡¢Êó¹ð¤µ¤ì¤ë³Æ¥¤¥Ù¥ó¥È¤ÎÀèƬ¤Ë¡¢ºÇ½é¤Î¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó¡¦¥¤¥Ù¥ó¥È¤«¤é¤Î·Ð²á»þ´Ö(ÉÃñ°Ì)¤¬ÉÕ¤±²Ã¤¨¤é¤ì¤Þ¤¹¡£ -+.br -+.br -+¥Í¥Ã¥È¥ï¡¼¥¯¤Î¥ì¥¹¥Ý¥ó¥¹»þ´Ö¤Ë¤è¤Ã¤ÆJVM¤Î¼Â¹Ô®ÅÙ¤¬Äã²¼¤¹¤ë¤Î¤òÈò¤±¤ë¤¿¤á¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Î³ÊǼÀè¤Ï¡¢¾ï¤Ë¥í¡¼¥«¥ë¡¦¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤¬ËþÇդˤʤë¤È¡¢¥Õ¥¡¥¤¥ë¤ÏÀÚ¤êµÍ¤á¤é¤ì¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤Ë¥Ç¡¼¥¿¤¬°ú³¤µÏ¿¤µ¤ì¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤È\f2\-verbose:gc\fP¤ÎξÊý¤¬¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤¬Í¥À褵¤ì¤Þ¤¹¡£ -+.TP 3 -+\-Xmnsize¤Þ¤¿¤Ï\-XX:NewSize -+¼ã¤¤À¤Âå(¥Ê¡¼¥µ¥ê)¤Î¥µ¥¤¥º¤òÀßÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-Xmsn -+¥á¥â¥ê¡¼³äÅö¥×¡¼¥ë¤Î½é´ü¥µ¥¤¥º¤ò¥Ð¥¤¥È¿ô¤Ç»ØÄꤷ¤Þ¤¹¡£»ØÄꤹ¤ëÃͤϡ¢1MB¤è¤êÂ礤¤1024¤ÎÇÜ¿ô¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥¥í¥Ð¥¤¥È¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢Ê¸»ú\f2k\fP¤Þ¤¿¤Ï\f2K\fP¤òÉÕ¤±¤Þ¤¹¡£¥á¥¬¥Ð¥¤¥È¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢Ê¸»ú\f2m\fP¤Þ¤¿¤Ï\f2M\fP¤òÉÕ¤±¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥ÈÃͤϡ¢¼Â¹Ô»þ¤Ë¥·¥¹¥Æ¥à¹½À®¤Ë´ð¤Å¤¤¤ÆÁªÂò¤µ¤ì¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2HotSpot Ergonomics\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/vm/gc\-ergonomics.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+Îã: -+.nf -+\f3 -+.fl -+ \-Xms6291456 -+.fl -+ \-Xms6144k -+.fl -+ \-Xms6m -+.fl -+ -+.fl -+\fP -+.fi -+.TP 3 -+\-Xmxn -+¥á¥â¥ê¡¼³äÅö¥×¡¼¥ë¤ÎºÇÂ祵¥¤¥º¤ò¥Ð¥¤¥È¿ô¤Ç»ØÄꤷ¤Þ¤¹¡£»ØÄꤹ¤ëÃͤϡ¢2MB¤è¤êÂ礤¤1024¤ÎÇÜ¿ô¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥¥í¥Ð¥¤¥È¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢Ê¸»ú\f2k\fP¤Þ¤¿¤Ï\f2K\fP¤òÉÕ¤±¤Þ¤¹¡£¥á¥¬¥Ð¥¤¥È¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢Ê¸»ú\f2m\fP¤Þ¤¿¤Ï\f2M\fP¤òÉÕ¤±¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥ÈÃͤϡ¢¼Â¹Ô»þ¤Ë¥·¥¹¥Æ¥à¹½À®¤Ë´ð¤Å¤¤¤ÆÁªÂò¤µ¤ì¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2HotSpot Ergonomics\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/vm/gc\-ergonomics.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+Îã: -+.nf -+\f3 -+.fl -+ \-Xmx83886080 -+.fl -+ \-Xmx81920k -+.fl -+ \-Xmx80m -+.fl -+ -+.fl -+\fP -+.fi -+Solaris 7¤ª¤è¤ÓSolaris 8 SPARC¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î¾ì¹ç¤Î¤³¤ÎÃͤξå¸Â¤Ï¡¢¤ª¤è¤½4000m¤«¤é¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤ÎÎ̤ò°ú¤¤¤¿¤â¤Î¤Ç¤¹¡£Solaris 2.6¤ª¤è¤Óx86¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î¾ì¹ç¤Î¾å¸Â¤Ï¡¢¤ª¤è¤½2000m¤«¤é¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤ÎÎ̤ò°ú¤¤¤¿¤â¤Î¤Ç¤¹¡£Linux¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î¾ì¹ç¤Î¾å¸Â¤Ï¡¢¤ª¤è¤½2000m¤«¤é¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤ÎÎ̤ò°ú¤¤¤¿¤â¤Î¤Ç¤¹¡£ -+.TP 3 -+\-Xprof -+¼Â¹ÔÃæ¤Î¥×¥í¥°¥é¥à¤Î¥×¥í¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¡¢¥×¥í¥Õ¥¡¥¤¥ë¡¦¥Ç¡¼¥¿¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥×¥í¥°¥é¥à³«È¯ÍѤΥ桼¥Æ¥£¥ê¥Æ¥£¤È¤·¤ÆÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£ËÜÈÖ²ÔƯ¥·¥¹¥Æ¥à¤Ç¤Î»ÈÍѤòÌÜŪ¤È¤·¤¿¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ -+.TP 3 -+\-Xrs -+Java²¾ÁÛ¥Þ¥·¥ó(JVM)¤Ë¤è¤ë¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¡¦¥·¥°¥Ê¥ë¤Î»ÈÍѤò¸º¤é¤·¤Þ¤¹¡£ -+.br -+.br -+°ÊÁ°¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢Java¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òÃá½øÀµ¤·¤¯¥·¥ã¥Ã¥È¥À¥¦¥ó¤¹¤ë¤¿¤á¤Î¥·¥ã¥Ã¥È¥À¥¦¥ó¡¦¥Õ¥Ã¥¯µ¡Ç½¤¬Äɲ䵤ì¤Þ¤·¤¿¡£¤³¤Îµ¡Ç½¤Ë¤è¤ê¡¢JVM¤¬ÆÍÁ³½ªÎ»¤·¤¿¾ì¹ç¤Ç¤â¡¢¥·¥ã¥Ã¥È¥À¥¦¥ó»þ¤Ë¥æ¡¼¥¶¡¼¡¦¥¯¥ê¡¼¥ó¡¦¥¢¥Ã¥×¥³¡¼¥É(¥Ç¡¼¥¿¥Ù¡¼¥¹Àܳ¤Î¥¯¥í¡¼¥º¤Ê¤É)¤ò¼Â¹Ô¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£ -+.br -+.br -+Sun¼Ò¤ÎJVM¤Ï¡¢¥·¥°¥Ê¥ë¤ò¥¥ã¥Ã¥Á¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢JVM¤Î°Û¾ï½ªÎ»¤Î¤¿¤á¤Î¥·¥ã¥Ã¥È¥À¥¦¥ó¡¦¥Õ¥Ã¥¯¤ò¼ÂÁõ¤·¤Þ¤¹¡£JVM¤Ï¡¢SIGHUP¡¢SIGINT¤ª¤è¤ÓSIGTERM¤ò»ÈÍѤ·¤Æ¡¢¥·¥ã¥Ã¥È¥À¥¦¥ó¡¦¥Õ¥Ã¥¯¤Î¼Â¹Ô¤ò³«»Ï¤·¤Þ¤¹¡£ -+.br -+.br -+JVM¤Ï¡¢¥Ç¥Ð¥Ã¥°¤ÎÌÜŪ¤Ç¥¹¥ì¥Ã¥É¡¦¥¹¥¿¥Ã¥¯¤ò¥À¥ó¥×¤¹¤ë¤È¤¤¤¦¡¢1.2¤è¤êÁ°¤«¤é¤¢¤ëµ¡Ç½¤ò¼Â¸½¤¹¤ë¤¿¤á¤Ë¤â¡¢Æ±Íͤε¡¹½¤ò»ÈÍѤ·¤Þ¤¹¡£Sun¼Ò¤ÎJVM¤Ï¡¢¥¹¥ì¥Ã¥É¡¦¥À¥ó¥×¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤ËSIGQUIT¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.br -+.br -+JVM¤òËä¤á¹þ¤ó¤Ç¤¤¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬SIGINT¤äSIGTERM¤Ê¤É¤Î¥·¥°¥Ê¥ë¤òÉÑÈˤ˥ȥé¥Ã¥×¤¹¤ëɬÍפ¬¤¢¤ë¤È¡¢JVM¤½¤Î¤â¤Î¤Î¥·¥°¥Ê¥ë¡¦¥Ï¥ó¥É¥é¤Î½èÍý¤Ë»Ù¾ã¤¬½Ð¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£\f3\-Xrs\fP¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¤³¤ÎÌäÂê¤ËÂнè¤Ç¤¤Þ¤¹¡£Sun¼Ò¤ÎJVM¤ËÂФ·¤Æ\f3\-Xrs\fP¤ò»ÈÍѤ¹¤ë¤È¡¢SIGINT¡¢SIGTERM¡¢SIGHUP¤ª¤è¤ÓSIGQUIT¤ËÂФ¹¤ë¥·¥°¥Ê¥ë¡¦¥Þ¥¹¥¯¤ÏJVM¤Ë¤è¤Ã¤ÆÊѹ¹¤µ¤ì¤º¡¢¤³¤ì¤é¤Î¥·¥°¥Ê¥ë¤ËÂФ¹¤ë¥·¥°¥Ê¥ë¡¦¥Ï¥ó¥É¥é¤Ï¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤»¤ó¡£ -+.br -+.br -+\f3\-Xrs\fP¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¼¡¤Î2¤Ä¤Î±Æ¶Á¤¬¤¢¤ê¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+SIGQUIT¤Ë¤è¤ë¥¹¥ì¥Ã¥É¡¦¥À¥ó¥×¤Ï»ÈÍѤǤ¤Þ¤»¤ó¡£ -+.TP 2 -+o -+¥·¥ã¥Ã¥È¥À¥¦¥ó¡¦¥Õ¥Ã¥¯½èÍý¤Î¼Â¹Ô¤Ï¡¢JVM¤¬½ªÎ»¤·¤è¤¦¤È¤·¤Æ¤¤¤ë»þÅÀ¤ÇSystem.exit()¤ò¸Æ¤Ó½Ð¤¹¤Ê¤É¤·¤Æ¡¢¥æ¡¼¥¶¡¼¡¦¥³¡¼¥É¦¤Ç¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ -+.RE -+.TP 3 -+\-Xssn -+¥¹¥ì¥Ã¥É¤Î¥¹¥¿¥Ã¥¯¡¦¥µ¥¤¥º¤òÀßÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-XX:AllocationPrefetchStyle=n -+³äÅöÃæ¤Ë»ÈÍѤµ¤ì¤ë¥×¥ê¥Õ¥§¥Ã¥Á¤Î¥¹¥¿¥¤¥ë¤òÀßÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ï2¤Ç¤¹¡£ -+.br -+.TP 3 -+\-XX:+AggressiveOpts -+ÀѶËŪ¤ÊºÇŬ²½¤ò͸ú¤Ë¤·¤Þ¤¹¡£ -+.br -+.TP 3 -+\-XX:+|\-DisableAttachMechanism -+¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Ä¡¼¥ë(\f2jmap\fP¤ª¤è¤Ó\f2jconsole\fP¤Ê¤É)¤¬JVM¤ËÀܳ¤Ç¤¤ë¤«¤É¤¦¤«¤ò»ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¤³¤Îµ¡Ç½¤Ï̵¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢Àܳ¤Ï͸ú¤Ç¤¹¡£»ÈÍÑÎã: -+.nf -+\f3 -+.fl -+ java \-XX:+DisableAttachMechanism -+.fl -+\fP -+.fi -+.TP 3 -+\-XXLargePageSizeInBytes=n -+¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥é¡¼¥¸¡¦¥Ú¡¼¥¸¤ÎºÇÂ祵¥¤¥º¤ò»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-XX:MaxGCPauseMillis=n -+ºÇÂçGCµÙ»ß»þ´Ö¤Î¥¿¡¼¥²¥Ã¥È¤òÀßÄꤷ¤Þ¤¹¡£ -+.br -+¤³¤ì¤Ï¥½¥Õ¥È¡¦¥´¡¼¥ë¤Î¤¿¤á¡¢JVM¤Ï¼Â¸½¤Î¤¿¤á¤ËºÇÁ±¤ÎÅØÎϤò¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤ÇÀßÄꤵ¤ì¤Æ¤¤¤ëºÇÂçÃͤϤ¢¤ê¤Þ¤»¤ó¡£ -+.TP 3 -+\-XX:NewSize -+¼ã¤¤À¤Âå(¥Ê¡¼¥µ¥ê)¤Î¥µ¥¤¥º¤òÀßÄꤷ¤Þ¤¹¡£\f3\-Xmn\fP\f4size\fP¤ÈƱ¤¸¤Ç¤¹¡£ -+.TP 3 -+\-XX:ParallelGCThreads=n -+¥Ñ¥é¥ì¥ë¡¦¥³¥ì¥¯¥¿Æâ¤ÎGC¥¹¥ì¥Ã¥É¤Î¿ô¤òÀßÄꤷ¤Þ¤¹¡£ -+.br -+.TP 3 -+\-XX:PredictedClassLoadCount=n -+¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¤Ï¡¢ºÇ½é¤Ë\f3UnlockExperimentalVMOptions\fP¥Õ¥é¥°¤òÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬Â¿¿ô¤Î¥¯¥é¥¹¤ò¥í¡¼¥É¤¹¤ë¾ì¹ç¤Ç¡¢ÆäË\f3class.forName()\fP¤¬ÉÑÈˤ˻ÈÍѤµ¤ì¤ë¾ì¹ç¤Ï\f3PredictedClassLoadCount\fP¥Õ¥é¥°¤ò»ÈÍѤ·¤Þ¤¹¡£¿ä¾©Ãͤϡ¢\f3\-verbose:class\fP¤«¤é¤Î½ÐÎϤ˼¨¤µ¤ì¤Æ¤¤¤ë¥í¡¼¥ÉºÑ¥¯¥é¥¹¤Î¿ô¤Ç¤¹¡£ -+.br -+»ÈÍÑÎã: -+.nf -+\f3 -+.fl -+ java \-XX:+UnlockExperimentalVMOptions \-XX:PredictedClassLoadCount=60013 -+.fl -+\fP -+.fi -+.TP 3 -+\-XX:+PrintCompilation -+HotSpot¥À¥¤¥Ê¥ß¥Ã¥¯¡¦¥é¥ó¥¿¥¤¥à¡¦¥³¥ó¥Ñ¥¤¥é¤«¤é¤Î¾ÜºÙ½ÐÎϤò°õºþ¤·¤Þ¤¹¡£ -+.br -+.TP 3 -+\-XX:+PrintGCDetails \-XX:+PrintGCTimeStamps -+¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó½ÐÎϤò¥¿¥¤¥à¥¹¥¿¥ó¥×¤È¤È¤â¤Ë°õºþ¤·¤Þ¤¹¡£ -+.br -+.TP 3 -+\-XX:SoftRefLRUPolicyMSPerMB=0 -+¤³¤Î¥Õ¥é¥°¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢»²¾È¤ÎÀѶËŪ½èÍý¤ò͸ú¤Ë¤·¤Þ¤¹¡£¤³¤Î¥Õ¥é¥°¤Ï¡¢HotSpot GC¤¬¥½¥Õ¥È¥¦¥§¥¢»²¾È¥«¥¦¥ó¥È¤Î±Æ¶Á¤ò¼õ¤±¤ë¾ì¹ç¤Ë»ÈÍѤ·¤Þ¤¹¡£ -+.TP 3 -+\-XX:TLABSize=n -+¥¹¥ì¥Ã¥É¡¦¥í¡¼¥«¥ë³äÅö¥Ð¥Ã¥Õ¥¡(TLAB)¤¬HotSpot¤Ç¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£HotSpot¤Ç¤Ï¡¢TLAB¤Î¥µ¥¤¥º¤ò³äÅö¥Ñ¥¿¡¼¥ó¤Ë´ð¤Å¤¤¤Æ¼«Æ°Åª¤Ë·èÄꤷ¤Þ¤¹¡£\f3\-XX:TLABSize\fP¥ª¥×¥·¥ç¥ó¤ÇTLAB¤Î¥µ¥¤¥º¤òÈùÄ´À°¤Ç¤¤Þ¤¹¡£ -+.br -+.TP 3 -+\-XX:+UnlockCommercialFeatures -+¤³¤Î¥Õ¥é¥°¤Ï¡¢¾¦Íѵ¡Ç½¤Î»ÈÍѤòǽưŪ¤Ë¥í¥Ã¥¯²ò½ü¤¹¤ë¾ì¹ç¤Ë»ÈÍѤ·¤Þ¤¹¡£¾¦Íѵ¡Ç½¤È¤Ï¡¢ -+.na -+\f2Oracle Java SE Products Web¥Ú¡¼¥¸\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/terms/products/index.html¤Çµ¬Äꤵ¤ì¤ëÀ½ÉÊ"Oracle Java SE Advanced"¤Þ¤¿¤Ï"Oracle Java SE Suite"¤Ç¤¹¡£ -+.br -+¤³¤Î¥Õ¥é¥°¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤ÏJava²¾ÁÛ¥Þ¥·¥ó¤ò»ÈÍѲÄǽ¤Ê¾¦Íѵ¡Ç½¤Ê¤·¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤Ç¤¹¡£¤¤¤Ã¤¿¤ó¾¦Íѵ¡Ç½¤ò͸ú¤Ë¤¹¤ë¤È¡¢¼Â¹Ô»þ¤Ë¤½¤Î»ÈÍѤò̵¸ú¤Ë¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£ -+.TP 3 -+\-XX:+UseAltSigs -+VM¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç\f2SIGUSR1\fP¤ª¤è¤Ó\f2SIGUSR2\fP¤ò»ÈÍѤ·¤Þ¤¹¤¬¡¢\f2SIGUSR1\fP¤ª¤è¤Ó\f2SIGUSR2\fP¤ò¥·¥°¥Ê¥ëÏ¢º¿¤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤È¶¥¹ç¤¹¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£\f2\-XX:+UseAltSigs\fP¥ª¥×¥·¥ç¥ó¤Ï¡¢VM¤Ë¥Ç¥Õ¥©¥ë¥È¤È¤·¤Æ\f2SIGUSR1\fP¤È\f2SIGUSR2\fP°Ê³°¤Î¥·¥°¥Ê¥ë¤ò»ÈÍѤµ¤»¤Þ¤¹¡£ -+.TP 3 -+\-XX:+|\-UseCompressedOops -+64¥Ó¥Ã¥ÈJVM¤Ç°µ½Ì»²¾È¤ò͸ú¤Ë¤·¤Þ¤¹¡£ -+.br -+¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥Ç¥Õ¥©¥ë¥È¤Çtrue¤Ç¤¹¡£ -+.br -+.TP 3 -+\-XX:+UseConcMarkSweepGC¤Þ¤¿¤Ï\-XX:+UseG1GC -+¤³¤ì¤é¤Î¥Õ¥é¥°¤ÏConcurrent Mark Sweep (CMS)¤Þ¤¿¤ÏG1¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó¤ò͸ú¤Ë¤·¤Þ¤¹¡£ -+.br -+.TP 3 -+\-XX:+|\-UseLargePages -+¤³¤Î¥Õ¥é¥°¤Ï¡¢¥é¡¼¥¸¡¦¥Ú¡¼¥¸¡¦¥µ¥Ý¡¼¥È¤ò͸ú¤Ë¤¹¤ë¾ì¹ç¤Ë»ÈÍѤ·¤Þ¤¹¡£¥é¡¼¥¸¡¦¥Ú¡¼¥¸¤Ï¡¢Solaris¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ -+.br -+.TP 3 -+\-XX:+UseParallelOldGC -+¥Ñ¥é¥ì¥ë¡¦¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥¿¤ò͸ú¤Ë¤·¤Þ¤¹¡£¤³¤ì¤Ï¥¹¥ë¡¼¥×¥Ã¥È¤ª¤è¤ÓÊ¿¶Ñ¥ì¥¹¥Ý¥ó¥¹»þ´Ö¤ËÂФ·¤ÆºÇŬ²½¤µ¤ì¤Þ¤¹¡£ -+.br -+.RE -+ -+.LP -+.SH "Ãí°Õ" -+.LP -+.LP -+\f3\-version:\fP\f2release\fP¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤Ç¤Ï¡¢¥ê¥ê¡¼¥¹»ØÄê¤ÎÊ£»¨¤µ¤ËÀ©¸Â¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤¿¤À¤·¡¢²Äǽ¤Ê¥ê¥ê¡¼¥¹»ØÄê¤Î¸Â¤é¤ì¤¿¥µ¥Ö¥»¥Ã¥È¤Î¤ß¤¬Å¬Àڤʥµ¥¦¥ó¥É¡¦¥Ý¥ê¥·¡¼¤òɽ¸½¤Ç¤¡¢¤½¤ì¤é¤Î¤ß¤¬´°Á´¤Ë¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹¡£¤½¤ì¤é¤Î¥Ý¥ê¥·¡¼¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+1. -+Ǥ°Õ¤Î¥Ð¡¼¥¸¥ç¥ó¡£¤³¤ì¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Ê¤¤¤³¤È¤Çɽ¸½¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+2. -+¤¢¤ëÆÃÄê¤Î¥Ð¡¼¥¸¥ç¥óID¤è¤ê¤âÂ礤¤Ç¤°Õ¤Î¥Ð¡¼¥¸¥ç¥ó¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+"1.6.0_10+" -+.fl -+\fP -+.fi -+¤³¤Î¾ì¹ç¡¢\f21.6.0_10\fP¤è¤ê¤âÂ礤¤Ç¤°Õ¤Î¥Ð¡¼¥¸¥ç¥ó¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢»ØÄꤵ¤ì¤¿¥Ð¡¼¥¸¥ç¥ó¤ÇÆÃÄê¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¬Æ³Æþ¤µ¤ì¤¿(¤¢¤ë¤¤¤Ï¤½¤Î¥Ð¥°¤¬½¤Àµ¤µ¤ì¤¿)¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£ -+.TP 3 -+3. -+¤¢¤ëÆÃÄê¤Î¥Ð¡¼¥¸¥ç¥óID¤è¤ê¤âÂ礤¤¥Ð¡¼¥¸¥ç¥ó¤Ç¡¢¤½¤Î¥ê¥ê¡¼¥¹¡¦¥Õ¥¡¥ß¥ê¤Î¾å¸Â¤Ë¤è¤Ã¤ÆÀ©¸Â¤µ¤ì¤ë¤â¤Î¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+"1.6.0_10+&1.6*" -+.fl -+\fP -+.fi -+.TP 3 -+4. -+¾å¤Î¹àÌÜ2¤È¹àÌÜ3¤Î¡ÖOR¡×¼°¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+"1.6.0_10+&1.6* 1.7+" -+.fl -+\fP -+.fi -+¤³¤ì¤Ï¹àÌÜ2¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢¤¢¤ëÊѹ¹¤¬ÆÃÄê¤Î¥ê¥ê¡¼¥¹(1.7)¤ÇƳÆþ¤µ¤ì¤¿¤¬¡¢¤½¤ÎƱ¤¸Êѹ¹¤¬°ÊÁ°¤Î¥ê¥ê¡¼¥¹¤Î¥¢¥Ã¥×¥Ç¡¼¥È¤Ç¤âÍøÍѲÄǽ¤Ë¤Ê¤Ã¤¿¡¢¤È¤¤¤¦¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£ -+.RE -+ -+.LP -+.SH "¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¡¦¥Á¥å¡¼¥Ë¥ó¥°¤ÎÎã" -+.LP -+.LP -+¥¹¥ë¡¼¥×¥Ã¥È¤Þ¤¿¤Ï¥ì¥¹¥Ý¥ó¥¹»þ´Ö¤Î¹â®²½¤Î¤É¤Á¤é¤«¤òºÇŬ²½¤¹¤ë¤¿¤á¤Î¡¢»î¸³Åª¤Ê¥Á¥å¡¼¥Ë¥ó¥°¡¦¥Õ¥é¥°¤Î»ÈÍÑÎã¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.LP -+.SS -+¥¹¥ë¡¼¥×¥Ã¥È¤ò¸þ¾å¤¹¤ë¤¿¤á¤Î¥Á¥å¡¼¥Ë¥ó¥° -+.LP -+.nf -+\f3 -+.fl -+ java \-d64 \-server \-XX:+AggressiveOpts \-XX:+UseLargePages \-Xmn10g \-Xms26g \-Xmx26g -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+¥ì¥¹¥Ý¥ó¥¹»þ´Ö¤ò®¤¯¤¹¤ë¤¿¤á¤Î¥Á¥å¡¼¥Ë¥ó¥° -+.LP -+.nf -+\f3 -+.fl -+ java \-d64 \-XX:+UseG1GC \-Xms26g Xmx26g \-XX:MaxGCPauseMillis=500 \-XX:+PrintGCTimeStamps -+.fl -+\fP -+.fi -+ -+.LP -+.SH "½ªÎ»¥¹¥Æ¡¼¥¿¥¹" -+.LP -+.LP -+°ìÈ̤ˡ¢¼¡¤Î½ªÎ»Ãͤ¬µ¯Æ°¥Ä¡¼¥ë¤«¤éÊÖ¤µ¤ì¤ë¤Î¤ÏÄ̾µ¯Æ°¸µ¤¬ÉÔÀµ¤Ê°ú¿ô¤Ç¸Æ¤Ó½Ð¤µ¤ì¤¿¤«¡¢¿¼¹ï¤Ê¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤«¡¢¤¢¤ë¤¤¤ÏJava²¾ÁÛ¥Þ¥·¥ó¤«¤éÎã³°¤¬¥¹¥í¡¼¤µ¤ì¤¿¾ì¹ç¤Ç¤¹¡£¤¿¤À¤·Java¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢API¸Æ½Ð¤·\f2System.exit(exitValue)\fP¤ò»ÈÍѤ·¤ÆǤ°Õ¤ÎÃͤòÊÖ¤¹¤³¤È¤òÁªÂò¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+\f20\fP: Àµ¾ï½ªÎ» -+.TP 2 -+o -+\f2>0\fP: ¥¨¥é¡¼È¯À¸ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+javac(1) -+.TP 2 -+o -+jdb(1) -+.TP 2 -+o -+javah(1) -+.TP 2 -+o -+jar(1) -+.TP 2 -+o -+.na -+\f2Java³ÈÄ¥µ¡Ç½¥Õ¥ì¡¼¥à¥ï¡¼¥¯\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/extensions/index.html -+.TP 2 -+o -+.na -+\f2¥»¥¥å¥ê¥Æ¥£\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/index.html -+.TP 2 -+o -+.na -+\f2HotSpot VM Specific Options\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/tech/vmoptions\-jsp\-140102.html -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/javac.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/javac.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,1222 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH javac 1 "07 May 2011" -+.TH javac 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+javac \- Java¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¥³¥ó¥Ñ¥¤¥é -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¥Õ¥¡¥¤¥ë -+.TP 2 -+o -+Ãí¼á½èÍý -+.TP 2 -+o -+·¿¤Î¸¡º÷ -+.TP 2 -+o -+¥×¥í¥°¥é¥Þ¥Æ¥£¥Ã¥¯¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹ -+.TP 2 -+o -+Îã -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+ \fP\f3javac\fP [ options ] [ sourcefiles ] [ classes ] [ @argfiles ] -+.fl -+ -+.fl -+.fi -+ -+.LP -+.LP -+°ú¿ô¤Ï½çÉÔƱ¤Ç¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+options -+¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¡£ -+.TP 3 -+sourcefiles -+¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë1¤Ä°Ê¾å¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë(MyClass.java¤Ê¤É)¡£ -+.TP 3 -+classes -+Ãí¼á¤Î½èÍýÂоݤȤʤë1¤Ä°Ê¾å¤Î¥¯¥é¥¹(MyPackage.MyClass¤Ê¤É)¡£ -+.TP 3 -+@argfiles -+¥ª¥×¥·¥ç¥ó¤È¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÎóµó¤·¤¿1¤Ä°Ê¾å¤Î¥Õ¥¡¥¤¥ë¡£¤³¤Î¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¤Ï\f2\-J\fP¥ª¥×¥·¥ç¥ó¤Ï»ØÄê¤Ç¤¤Þ¤»¤ó¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3javac\fP¥Ä¡¼¥ë¤Ï¡¢Java¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Çµ½Ò¤µ¤ì¤¿¥¯¥é¥¹¤È¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÎÄêµÁ¤òÆɤ߼è¤ê¡¢¥Ð¥¤¥È¥³¡¼¥É¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Ë¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹¡£¤Þ¤¿¡¢Java¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ª¤è¤Ó¥¯¥é¥¹Æâ¤ÎÃí¼á¤Î½èÍý¤â¹Ô¤¤¤Þ¤¹¡£ -+.LP -+.LP -+¥½¡¼¥¹¡¦¥³¡¼¥É¤Î¥Õ¥¡¥¤¥ë̾¤ò\f3javac\fP¤ËÅϤ¹¤Ë¤Ï¡¢¼¡¤Î2¤Ä¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¿ô¤¬¾¯¤Ê¤¤¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë̾¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÇľÀÜ»ØÄꤷ¤Þ¤¹¡£ -+.TP 2 -+o -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¿ô¤¬Â¿¤¤¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë̾¤ò¶õÇò¤Þ¤¿¤Ï²þ¹Ô¤Ç¶èÀڤäơ¢1¤Ä¤Î¥Õ¥¡¥¤¥ë¤ËÎóµó¤·¤Þ¤¹¡£¼¡¤Ë¡¢¤³¤Î¥ê¥¹¥È¡¦¥Õ¥¡¥¤¥ë̾¤ÎÀèƬ¤Ë\f3@\fP¤òÉÕ¤±¤Æ¡¢\f3javac\fP¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+¥½¡¼¥¹¡¦¥³¡¼¥É¤Î¥Õ¥¡¥¤¥ë̾¤Ï\f2.java\fP³ÈÄ¥»Ò¤ò¡¢¥¯¥é¥¹¤Î¥Õ¥¡¥¤¥ë̾¤Ï\f2.class\fP³ÈÄ¥»Ò¤ò»ý¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¤É¤Á¤é¤â¡¢³ºÅö¤¹¤ë¥¯¥é¥¹¤ËÂбþ¤¹¤ë¥ë¡¼¥È̾¤ò»ý¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2MyClass\fP¤È¤¤¤¦Ì¾Á°¤Î¥¯¥é¥¹¤Ï¡¢\f2MyClass.java\fP¤È¤¤¤¦Ì¾Á°¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ëµ½Ò¤µ¤ì¤Þ¤¹¡£¤³¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢\f2MyClass.class\fP¤È¤¤¤¦Ì¾Á°¤Î¥Ð¥¤¥È¥³¡¼¥É¡¦¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+ÆâÉô¥¯¥é¥¹¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤È¡¢ÄɲäΥ¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤³¤ì¤é¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ï¡¢\f2MyClass$MyInnerClass.class\fP¤Î¤è¤¦¤Ë¡¢³°Éô¥¯¥é¥¹Ì¾¤ÈÆâÉô¥¯¥é¥¹Ì¾¤òÁȤ߹礻¤¿¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¡¦¥Ä¥ê¡¼¤òÈ¿±Ç¤·¤¿¥Ç¥£¥ì¥¯¥È¥ê¡¦¥Ä¥ê¡¼¤ËÇÛÃÖ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¤¹¤Ù¤Æ¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò\f3/workspace\fP¤ËÃÖ¤¤¤Æ¤¤¤ë¾ì¹ç¡¢\f2com.mysoft.mypack.MyClass\fP¤Î¥½¡¼¥¹¡¦¥³¡¼¥É¤Ï\f3/workspace/com/mysoft/mypack/MyClass.java\fP¤Ë¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¡¢³Æ¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òÂбþ¤¹¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë³ÊǼ¤·¤Þ¤¹¡£Ê̤νÐÎÏÀè¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢\f3\-d\fP¤ò»ÈÍѤ·¤Þ¤¹(¤³¤Î¸å¤Î¥ª¥×¥·¥ç¥ó¤ò»²¾È)¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+¥³¥ó¥Ñ¥¤¥é¤Ë¤Ï¡¢¸½ºß¤Î³«È¯´Ä¶¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤ª¤ê¡¢¾Íè¤Î¥ê¥ê¡¼¥¹¤Ç¤â¥µ¥Ý¡¼¥È¤µ¤ì¤ëɸ½à¥ª¥×¥·¥ç¥ó¤Î¥»¥Ã¥È¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì°Ê³°¤ÎÈóɸ½à¥ª¥×¥·¥ç¥ó¤Ï¡¢¸½ºß¤Î²¾ÁÛ¥Þ¥·¥ó¤ª¤è¤Ó¥³¥ó¥Ñ¥¤¥é¤Î¼ÂÁõ¤Ë¸ÇͤΥª¥×¥·¥ç¥ó¤Ç¡¢¾Íè¤ËÊѹ¹¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£Èóɸ½à¥ª¥×¥·¥ç¥ó¤Ï¡¢\f3\-X\fP¤Ç»Ï¤Þ¤ê¤Þ¤¹¡£ -+.LP -+.SS -+ɸ½à¥ª¥×¥·¥ç¥ó -+.LP -+.RS 3 -+.TP 3 -+\-Akey[=value] -+Ãí¼á¥×¥í¥»¥Ã¥µ¤ËÅϤµ¤ì¤ë¥ª¥×¥·¥ç¥ó¡£¤³¤ì¤é¤Ï¡¢javac¤Ë¤è¤Ã¤ÆľÀܲò¼á¤µ¤ì¤º¡¢¸Ä¡¹¤Î¥×¥í¥»¥Ã¥µ¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£\f2key\fP¤Ë¤Ï¡¢1¤Ä¤Þ¤¿¤ÏÊ£¿ô¤Î¼±Ê̻Ҥò¡Ö.¡×¤Ç¶èÀڤ俤â¤Î¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-cppath¤Þ¤¿¤Ï\-classpathpath -+¥æ¡¼¥¶¡¼¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ª¤è¤Ó(¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï)Ãí¼á¥×¥í¥»¥Ã¥µ¤ä¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¸¡º÷¾ì½ê¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¡¦¥Ñ¥¹¤Ï\f3CLASSPATH\fP´Ä¶ÊÑ¿ô¤Î¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£\f3CLASSPATH\fP¡¢\f3\-cp\fP¡¢\f3\-classpath\fP¤Î¤¤¤º¤ì¤â»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ê¤ê¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢¥¯¥é¥¹¡¦¥Ñ¥¹¤ÎÀßÄê¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+\f3\-sourcepath\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤â¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤«¤é¸¡º÷¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+\f3\-processorpath\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢Ãí¼á¥×¥í¥»¥Ã¥µ¤â¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤«¤é¸¡º÷¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-Djava.ext.dirs=directories -+¥¤¥ó¥¹¥È¡¼¥ëºÑ³ÈÄ¥µ¡Ç½¤Î°ÌÃÖ¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£ -+.TP 3 -+\-Djava.endorsed.dirs=directories -+¾µÇ§¤µ¤ì¤¿É¸½à¥Ñ¥¹¤Î°ÌÃÖ¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£ -+.TP 3 -+\-d directory -+¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î½ÐÎÏÀè¥Ç¥£¥ì¥¯¥È¥ê¤òÀßÄꤷ¤Þ¤¹¡£¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f3javac\fP¤Ç¤ÏºîÀ®¤µ¤ì¤Þ¤»¤ó¡£¥¯¥é¥¹¤¬¥Ñ¥Ã¥±¡¼¥¸¤Î°ìÉô¤Ç¤¢¤ë¾ì¹ç¡¢\f3javac\fP¤Ï¡¢É¬Íפ˱þ¤¸¤Æ¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤·¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÈ¿±Ç¤·¤¿¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò³ÊǼ¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-d/home/myclasses\fP¤È»ØÄꤷ¡¢¥¯¥é¥¹¤Î̾Á°¤¬\f2com.mypackage.MyClass\fP¤Ç¤¢¤ë¾ì¹ç¡¢¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Ï\f2/home/myclasses/com/mypackage/MyClass.class\fP¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.br -+.br -+\f3\-d\fP¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢\f3javac\fP¤Ï³Æ¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¡¢¤½¤ÎÀ¸À®¸µ¤È¤Ê¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ë³ÊǼ¤·¤Þ¤¹¡£ -+.br -+.br -+\f3Ãí°Õ:\fP \f3\-d\fP¤Ç»ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Ï¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Ë¼«Æ°Åª¤Ë¤ÏÄɲ䵤ì¤Þ¤»¤ó¡£ -+.TP 3 -+\-deprecation -+¿ä¾©¤µ¤ì¤Ê¤¤¥á¥ó¥Ð¡¼¤ä¥¯¥é¥¹¤¬¡¢»ÈÍѤޤ¿¤Ï¥ª¡¼¥Ð¡¼¥é¥¤¥É¤µ¤ì¤ë¤¿¤Ó¤ËÀâÌÀ¤òɽ¼¨¤·¤Þ¤¹¡£\f3\-deprecation\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢\f3javac\fP¤Ï¡¢¿ä¾©¤µ¤ì¤Ê¤¤¥á¥ó¥Ð¡¼¤ä¥¯¥é¥¹¤ò»ÈÍѤޤ¿¤Ï¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Æ¤¤¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎÍ×Ìó¤òɽ¼¨¤·¤Þ¤¹¡£\f3\-deprecation\fP¤Ï\f3\-Xlint:deprecation\fP¤Î¾Êάɽµ¤Ç¤¹¡£ -+.TP 3 -+\-encoding encoding -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°Ì¾(\f2EUC\-JP¤äUTF\-8\fP¤Ê¤É)¤ò»ØÄꤷ¤Þ¤¹¡£\f3\-encoding\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î¥Ç¥Õ¥©¥ë¥È¡¦¥³¥ó¥Ð¡¼¥¿¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-endorseddirs directories -+¾µÇ§¤µ¤ì¤¿É¸½à¥Ñ¥¹¤Î°ÌÃÖ¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£ -+.TP 3 -+\-extdirs directories -+\f2ext\fP¥Ç¥£¥ì¥¯¥È¥ê¤Î°ÌÃÖ¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£\f2directories\fPÊÑ¿ô¤Ë¤Ï¡¢¥³¥í¥ó¤Ç¶èÀڤ俥ǥ£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤ò»ØÄꤷ¤Þ¤¹¡£»ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î³ÆJAR¥¢¡¼¥«¥¤¥Ö¤«¤é¡¢¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤¬¸¡º÷¤µ¤ì¤Þ¤¹¡£¸«¤Ä¤«¤Ã¤¿¤¹¤Ù¤Æ¤ÎJAR¥¢¡¼¥«¥¤¥Ö¤Ï¼«Æ°Åª¤Ë¥¯¥é¥¹¡¦¥Ñ¥¹¤Î°ìÉô¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.br -+.br -+¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë(°Û¤Ê¤ëJava¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ë¼ÂÁõ¤µ¤ì¤¿¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤ä³ÈÄ¥µ¡Ç½¥¯¥é¥¹¤ËÂФ·¤Æ¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¦)¤ò¼Â¹Ô¤¹¤ë¾ì¹ç¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ï³ÈÄ¥µ¡Ç½¥¯¥é¥¹¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¡¦¥ª¥×¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-g -+¥í¡¼¥«¥ëÊÑ¿ô¤ò´Þ¤à¤¹¤Ù¤Æ¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤òÀ¸À®¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¹ÔÈֹ椪¤è¤Ó¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¾ðÊó¤Î¤ß¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-g:none -+¥Ç¥Ð¥Ã¥°¾ðÊó¤òÀ¸À®¤·¤Þ¤»¤ó¡£ -+.TP 3 -+\-g:{keyword list} -+¥«¥ó¥Þ¤Ç¶èÀÚ¤é¤ì¤¿¥¡¼¥ï¡¼¥É¡¦¥ê¥¹¥È¤Ë¤è¤ê»ØÄꤵ¤ì¤¿¡¢ÆÃÄê¤Î¼ïÎà¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤Î¤ß¤òÀ¸À®¤·¤Þ¤¹¡£¼¡¤Î¥¡¼¥ï¡¼¥É¤¬Í¸ú¤Ç¤¹¡£ -+.RS 3 -+.TP 3 -+source -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥Ç¥Ð¥Ã¥°¾ðÊó -+.TP 3 -+lines -+¹ÔÈÖ¹æ¤Î¥Ç¥Ð¥Ã¥°¾ðÊó -+.TP 3 -+vars -+¥í¡¼¥«¥ëÊÑ¿ô¤Î¥Ç¥Ð¥Ã¥°¾ðÊó -+.RE -+.TP 3 -+\-help -+ɸ½à¥ª¥×¥·¥ç¥ó¤Î·Á¼°¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-implicit:{class,none} -+°ÅÌÛŪ¤Ë¥í¡¼¥É¤µ¤ì¤¿¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ë¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎÀ¸À®¤òÀ©¸æ¤·¤Þ¤¹¡£¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¼«Æ°À¸À®¤¹¤ë¤Ë¤Ï¡¢\f3\-implicit:class\fP¤ò»ÈÍѤ·¤Þ¤¹¡£¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎÀ¸À®¤òÍÞÀ©¤¹¤ë¤Ë¤Ï¡¢\f3\-implicit:none\fP¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Î¥Ç¥Õ¥©¥ë¥ÈÆ°ºî¤Ï¡¢¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¼«Æ°À¸À®¤Ë¤Ê¤ê¤Þ¤¹¡£¤½¤Î¾ì¹ç¡¢¤½¤Î¤è¤¦¤Ê¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤¿»þ¤ËÃí¼á½èÍý¤â¼Â¹Ô¤µ¤ì¤ë¤È¡¢¥³¥ó¥Ñ¥¤¥é¤«¤é·Ù¹ð¤¬È¯¹Ô¤µ¤ì¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬ÌÀ¼¨Åª¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢·Ù¹ð¤Ïȯ¹Ô¤µ¤ì¤Þ¤»¤ó¡£·¿¤Î¸¡º÷¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-Joption -+\f3javac\fP¤¬¸Æ¤Ó½Ð¤¹\f3java\fPµ¯Æ°¥Ä¡¼¥ë¤Ë¡¢\f2option\fP¤òÅϤ·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£\f3\-J\fP¤ò»ÈÍѤ·¤Æ¡¢Java¤Çµ½Ò¤µ¤ì¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤¹¤ëÇظå¤ÎVM¤Ë¥ª¥×¥·¥ç¥ó¤òÅϤ¹¤³¤È¤Ï¡¢¤è¤¯¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ -+.br -+.br -+\f3Ãí°Õ:\fP \f3CLASSPATH\fP¡¢\f3\-classpath\fP¡¢\f3\-bootclasspath\fP¤ª¤è¤Ó\f3\-extdirs\fP¤Ï¡¢\f3javac\fP¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¥¯¥é¥¹¤ò»ØÄꤹ¤ë¤â¤Î¤Ç¤Ï\f2¤¢¤ê¤Þ¤»¤ó\fP¡£¤³¤Î¤è¤¦¤ÊÊýË¡¤Ç¥³¥ó¥Ñ¥¤¥é¤Î¼ÂÁõ¤òÁàºî¤¹¤ë¤³¤È¤Ï¡¢Ä̾ï¤Ï̵°ÕÌ£¤Ç¤¢¤ê¡¢¾ï¤Ë´í¸±¤òȼ¤¤¤Þ¤¹¡£¤³¤Î¤è¤¦¤ÊÊýË¡¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢\f3\-J\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢É¬Íפʥª¥×¥·¥ç¥ó¤òÇظå¤Î\f3java\fPµ¯Æ°¥Ä¡¼¥ë¤ËÅϤ·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-nowarn -+·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£¤³¤ì¤Ï\f3\-Xlint:none\fP¤ÈƱ¤¸°ÕÌ£¤Ç¤¹¡£ -+.TP 3 -+\-proc: {none,only} -+Ãí¼á½èÍý¡¢¥³¥ó¥Ñ¥¤¥ë¡¢¤½¤ÎξÊý¡¢¤Î¤¤¤º¤ì¤ò¼Â¹Ô¤¹¤ë¤«¤òÀ©¸æ¤·¤Þ¤¹¡£\f3\-proc:none\fP¤Ï¡¢Ãí¼á½èÍý¤Ê¤·¤Ç¥³¥ó¥Ñ¥¤¥ë¤¬¼Â¹Ô¤µ¤ì¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£\f3\-proc:only\fP¤Ï¡¢Ãí¼á½èÍý¤Î¤ß¤¬¼Â¹Ô¤µ¤ì¡¢¸å³¤Î¥³¥ó¥Ñ¥¤¥ë¤Ï¤Þ¤Ã¤¿¤¯¼Â¹Ô¤µ¤ì¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ -+.TP 3 -+\-processor class1[,class2,class3...] -+¼Â¹Ô¤¹¤ëÃí¼á¥×¥í¥»¥Ã¥µ¤Î̾Á°¡£¤³¤ì¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤Î¸¡º÷½èÍý¤Ï¾Êά¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-processorpath path -+Ãí¼á¥×¥í¥»¥Ã¥µ¤Î¸¡º÷¾ì½ê¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¥¯¥é¥¹¡¦¥Ñ¥¹Æâ¤Ç¥×¥í¥»¥Ã¥µ¤Î¸¡º÷¤¬¹Ô¤ï¤ì¤Þ¤¹¡£ -+.TP 3 -+\-s dir -+À¸À®¤µ¤ì¤¿¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î³ÊǼÀè¤È¤Ê¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f3javac\fP¤Ç¤ÏºîÀ®¤µ¤ì¤Þ¤»¤ó¡£¥¯¥é¥¹¤¬¥Ñ¥Ã¥±¡¼¥¸¤Î°ìÉô¤Ë¤Ê¤Ã¤Æ¤¤¤¿¾ì¹ç¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¤½¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÈ¿±Ç¤·¤¿¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ë³ÊǼ¤·¤Þ¤¹¡£¤½¤ÎºÝ¡¢É¬Íפ˱þ¤¸¤Æ¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥æ¡¼¥¶¡¼¤¬\f3\-s/home/mysrc\fP¤È»ØÄꤷ¡¢¥¯¥é¥¹¤Î̾Á°¤¬\f2com.mypackage.MyClass\fP¤Ç¤¢¤Ã¤¿¾ì¹ç¡¢¤½¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ï\f2/home/mysrc/com/mypackage/MyClass.java\fPÆâ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-source release -+¼õ¤±ÉÕ¤±¤ë¥½¡¼¥¹¡¦¥³¡¼¥É¤Î¥Ð¡¼¥¸¥ç¥ó¤ò»ØÄꤷ¤Þ¤¹¡£\f2release\fP¤Ë¤Ï¼¡¤ÎÃͤò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+1.3 -+¤³¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï¡¢Java SE 1.3°Ê¹ß¤ËƳÆþ¤µ¤ì¤¿¥¢¥µ¡¼¥·¥ç¥ó¡¢Áí¾Î¤Þ¤¿¤Ï¾¤Î¸À¸ìµ¡Ç½¤ò¥µ¥Ý¡¼¥È\f2¤·¤Þ¤»¤ó\fP¡£ -+.TP 3 -+1.4 -+Java SE 1.4¤ÇƳÆþ¤µ¤ì¤¿¡¢¥¢¥µ¡¼¥·¥ç¥ó¤ò´Þ¤à¥³¡¼¥É¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¡£ -+.TP 3 -+1.5 -+Java SE 5¤ÇƳÆþ¤µ¤ì¤¿Áí¾Î¤ª¤è¤Ó¾¤Î¸À¸ìµ¡Ç½¤ò´Þ¤ó¤À¥³¡¼¥É¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¡£ -+.TP 3 -+5 -+1.5¤ÈƱµÁ¤Ç¤¹¡£ -+.TP 3 -+1.6 -+Java SE 6¤Ç¤Ï¸À¸ì¤ËÂФ¹¤ëÊѹ¹¤ÏƳÆþ¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£¤·¤«¤·¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ëÆâ¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¡¦¥¨¥é¡¼¤¬¡¢Java SE°ÊÁ°¤Î¤è¤¦¤Ê¡Ö·Ù¹ð¡×¤Ç¤Ï¤Ê¤¯¡¢¡Ö¥¨¥é¡¼¡×¤È¤·¤ÆÊó¹ð¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£ -+.TP 3 -+6 -+1.6¤ÈƱµÁ¤Ç¤¹¡£ -+.TP 3 -+1.7 -+¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥ÈÃͤǤ¹¡£Java SE 7¤ÇƳÆþ¤µ¤ì¤¿µ¡Ç½¤ò´Þ¤à¥³¡¼¥É¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¡£ -+.TP 3 -+7 -+1.7¤ÈƱµÁ¤Ç¤¹¡£ -+.RE -+.TP 3 -+\-sourcepath sourcepath -+¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÎÄêµÁ¤ò¸¡º÷¤¹¤ë¥½¡¼¥¹¡¦¥³¡¼¥É¡¦¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤ÈƱÍͤˡ¢¥½¡¼¥¹¡¦¥Ñ¥¹¤ÎÊ£¿ô¤Î¥¨¥ó¥È¥ê¤Ï¥³¥í¥ó(\f3:\fP)¤Ç¶èÀÚ¤ê¤Þ¤¹¡£¥½¡¼¥¹¡¦¥Ñ¥¹¤Î¥¨¥ó¥È¥ê¤Ë¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê¡¢JAR¥¢¡¼¥«¥¤¥Ö¤Þ¤¿¤ÏZIP¥¢¡¼¥«¥¤¥Ö¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥Ñ¥Ã¥±¡¼¥¸¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê¤Þ¤¿¤Ï¥¢¡¼¥«¥¤¥ÖÆâ¤Î¥í¡¼¥«¥ë¡¦¥Ñ¥¹Ì¾¤¬¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÈ¿±Ç¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+\f3Ãí°Õ:\fP ¥¯¥é¥¹¡¦¥Ñ¥¹¤«¤é¥¯¥é¥¹¤Î¤ß¤Ç¤Ê¤¯¤½¤Î¥½¡¼¥¹¤â¸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢¤½¤Î¥¯¥é¥¹¤Ï¼«Æ°ºÆ¥³¥ó¥Ñ¥¤¥ë¤ÎÂоݤˤʤ뤳¤È¤¬¤¢¤ê¤Þ¤¹¡£·¿¤Î¸¡º÷¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-verbose -+¾ÜºÙ¤Ê½ÐÎϤòɽ¼¨¤·¤Þ¤¹¡£¥í¡¼¥É¤µ¤ì¤ë¥¯¥é¥¹¤ª¤è¤Ó¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤´¤È¤Î¾ðÊ󤬽ÐÎϤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-version -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-Werror -+·Ù¹ð¤¬È¯À¸¤·¤¿¾ì¹ç¤Ë¥³¥ó¥Ñ¥¤¥ë¤ò½ªÎ»¤·¤Þ¤¹¡£ -+.TP 3 -+\-X -+Èóɸ½à¥ª¥×¥·¥ç¥ó¤Ë´Ø¤¹¤ë¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¡¦¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥¯¥é¥¹¤Î¥³¥ó¥Ñ¥¤¥ë¤Ï¡¢\f3javac\fP¤¬ÅºÉÕ¤µ¤ì¤Æ¤¤¤ë¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤ª¤è¤Ó³ÈÄ¥µ¡Ç½¥¯¥é¥¹¤ËÂФ·¤Æ¹Ô¤ï¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢\f3javac\fP¤Ï¡¢°Û¤Ê¤ëJava¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ë¼ÂÁõ¤µ¤ì¤¿¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤ª¤è¤Ó³ÈÄ¥µ¡Ç½¥¯¥é¥¹¤ËÂФ·¤Æ¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¦¡Ö\f2¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë\fP¡×¤â¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¦¾ì¹ç¤Ï¡¢\f3\-bootclasspath\fP¤ª¤è¤Ó\f3\-extdirs\fP¤ò»ÈÍѤ¹¤ë¤³¤È¤¬½ÅÍפǤ¹¡£¤³¤Î¸å¤Î¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤ÎÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.RS 3 -+.TP 3 -+\-target version -+»ØÄꤵ¤ì¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎVM¤ò¥¿¡¼¥²¥Ã¥È¤Ë¤·¤¿¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢»ØÄꤵ¤ì¤¿¥¿¡¼¥²¥Ã¥È°Ê¹ß¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÆ°ºî¤·¤Þ¤¹¤¬¡¢¤½¤ì¤è¤êÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤ÎVM¤Ç¤ÏÆ°ºî¤·¤Þ¤»¤ó¡£Í¸ú¤Ê¥¿¡¼¥²¥Ã¥È¤Ï¡¢\f31.1\fP¡¢\f31.2\fP¡¢\f31.3\fP¡¢\f31.4\fP¡¢\f31.5\fP(\f35\fP¤â²Ä)¡¢\f31.6\fP(\f36\fP¤â²Ä)¤ª¤è¤Ó\f31.7\fP(\f37\fP¤â²Ä)¤Ç¤¹¡£ -+.LP -+\f3\-target\fP¤Î¥Ç¥Õ¥©¥ë¥È¤Ï¡¢¼¡¤Î¤è¤¦¤Ë\f3\-source\fP¤ÎÃͤˤè¤Ã¤Æ·è¤Þ¤ê¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\-source¤¬\f3»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿\fP¾ì¹ç¡¢\-target¤ÎÃͤÏ\f31.7\fP¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\-source¤¬\f31.2\fP¤Î¾ì¹ç¡¢\-target¤ÎÃͤÏ\f31.4\fP¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\-source¤¬\f31.3\fP¤Î¾ì¹ç¡¢\-target¤ÎÃͤÏ\f31.4\fP¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\-source¤¬\f31.5\fP¤Î¾ì¹ç¡¢\-target¤ÎÃͤÏ\f31.7\fP¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\-source¤¬\f31.6\fP¤Î¾ì¹ç¡¢\-target¤ÎÃͤÏ\f31.7\fP¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\-source¤¬\f3¤½¤ì°Ê³°¤ÎÃͤξì¹ç¤Ï¤¹¤Ù¤Æ\fP¡¢\f3\-target\fP¤ÎÃͤÏ\f3\-source\fP¤ÎÃͤˤʤê¤Þ¤¹¡£ -+.RE -+.TP 3 -+\-bootclasspath bootclasspath -+»ØÄꤵ¤ì¤¿°ìÏ¢¤Î¥Ö¡¼¥È¡¦¥¯¥é¥¹¤ËÂФ·¤Æ¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¤¤Þ¤¹¡£¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤ÈƱÍͤˡ¢¥Ö¡¼¥È¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤ÎÊ£¿ô¤Î¥¨¥ó¥È¥ê¤Ï¥³¥í¥ó(\f3:\fP)¤Ç¶èÀÚ¤ê¤Þ¤¹¡£¥Ö¡¼¥È¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¥¨¥ó¥È¥ê¤Ë¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê¡¢JAR¥¢¡¼¥«¥¤¥Ö¤Þ¤¿¤ÏZIP¥¢¡¼¥«¥¤¥Ö¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+Èóɸ½à¥ª¥×¥·¥ç¥ó -+.LP -+.RS 3 -+.TP 3 -+\-Xbootclasspath/p:path -+¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤ÎÁ°¤ËÄɲä·¤Þ¤¹¡£ -+.TP 3 -+\-Xbootclasspath/a:path -+¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¸å¤ËÄɲä·¤Þ¤¹¡£ -+.TP 3 -+\-Xbootclasspath/:path -+¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î°ÌÃÖ¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£ -+.TP 3 -+\-Xlint -+¿ä¾©¤µ¤ì¤ë¤¹¤Ù¤Æ¤Î·Ù¹ð¤ò͸ú¤Ë¤·¤Þ¤¹¡£¤³¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢ÍøÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤Î·Ù¹ð¤ò͸ú¤Ë¤¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ -+.TP 3 -+\-Xlint:all -+¿ä¾©¤µ¤ì¤ë¤¹¤Ù¤Æ¤Î·Ù¹ð¤ò͸ú¤Ë¤·¤Þ¤¹¡£¤³¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢ÍøÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤Î·Ù¹ð¤ò͸ú¤Ë¤¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ -+.TP 3 -+\-Xlint:none -+¤¹¤Ù¤Æ¤Î·Ù¹ð¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£ -+.TP 3 -+\-Xlint:name -+·Ù¹ð\f2name\fP¤ò͸ú¤Ë¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç͸ú¤Ë¤Ç¤¤ë·Ù¹ð¤Î¥ê¥¹¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢\-Xlint¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ͸ú¤Þ¤¿¤Ï̵¸ú¤Ë¤Ç¤¤ë·Ù¹ð¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-Xlint:\-name -+·Ù¹ð\f2name\fP¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç̵¸ú¤Ë¤Ç¤¤ë·Ù¹ð¤Î¥ê¥¹¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢\-Xlint¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ͸ú¤Þ¤¿¤Ï̵¸ú¤Ë¤Ç¤¤ë·Ù¹ð¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-Xmaxerrs number -+°õºþ¤¹¤ë¥¨¥é¡¼¤ÎºÇÂç¿ô¤òÀßÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-Xmaxwarns number -+°õºþ¤¹¤ë·Ù¹ð¤ÎºÇÂç¿ô¤òÀßÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-Xstdout filename -+¥³¥ó¥Ñ¥¤¥é¤Î¥á¥Ã¥»¡¼¥¸¤ò¡¢»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤ËÁ÷¤ê¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Î¥á¥Ã¥»¡¼¥¸¤Ï\f2System.err\fP¤ËÁ÷¤é¤ì¤Þ¤¹¡£ -+.TP 3 -+\-Xprefer:{newer,source} -+¤¢¤ë·¿¤ËÂФ·¤Æ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎξÊý¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢¤½¤Î¤É¤Á¤é¤Î¥Õ¥¡¥¤¥ë¤òÆɤ߼è¤ë¤«¤ò»ØÄꤷ¤Þ¤¹(·¿¤Î¸¡º÷¤ò»²¾È)¡£\f2\-Xprefer:newer\fP¤ò»ÈÍѤ·¤¿¾ì¹ç¡¢¤¢¤ë·¿¤ËÂФ¹¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¿·¤·¤¤Êý¤¬Æɤ߼è¤é¤ì¤Þ¤¹(¥Ç¥Õ¥©¥ë¥È)¡£\f2\-Xprefer:source\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤¿¾ì¹ç¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬Æɤ߼è¤é¤ì¤Þ¤¹¡£\f2SOURCE\fP¤ÎÊݸ¥Ý¥ê¥·¡¼¤ò»ÈÍѤ·¤ÆÀë¸À¤µ¤ì¤¿Ãí¼á¤ËǤ°Õ¤ÎÃí¼á¥×¥í¥»¥Ã¥µ¤¬¥¢¥¯¥»¥¹¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¾ì¹ç¤Ï¡¢\f2\-Xprefer:source\fP¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-Xpkginfo:{always,legacy,nonempty} -+¥Ñ¥Ã¥±¡¼¥¸¾ðÊó¥Õ¥¡¥¤¥ë¤Î½èÍý¤ò»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-Xprint -+»ØÄꤵ¤ì¤¿·¿¤Î¥Æ¥¥¹¥Èɽ¸½¤ò¥Ç¥Ð¥Ã¥°ÌÜŪ¤Ç½ÐÎϤ·¤Þ¤¹¡£Ãí¼á½èÍý¡¢¥³¥ó¥Ñ¥¤¥ë¤Î¤É¤Á¤é¤â¼Â¹Ô¤·¤Þ¤»¤ó¡£½ÐÎÏ·Á¼°¤ÏÊѹ¹¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-XprintProcessorInfo -+¤¢¤ëÆÃÄê¤Î¥×¥í¥»¥Ã¥µ¤¬½èÍý¤ò°ÍÍꤵ¤ì¤Æ¤¤¤ëÃí¼á¤Ë´Ø¤¹¤ë¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-XprintRounds -+½é²ó¤ª¤è¤Ó¸å³¤ÎÃí¼á½èÍý¥é¥¦¥ó¥É¤Ë´Ø¤¹¤ë¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+\-Xlint¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ͸ú¤Þ¤¿¤Ï̵¸ú¤Ë¤Ç¤¤ë·Ù¹ð -+.LP -+.LP -+\f3\-Xlint:\fP\f2name\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ·Ù¹ð\f2name\fP¤ò͸ú¤Ë¤·¤Þ¤¹¡£¤¿¤À¤·¡¢\f2name\fP¤Ï¼¡¤Î·Ù¹ð̾¤Î¤¤¤º¤ì¤«¤Ë¤Ê¤ê¤Þ¤¹¡£Æ±Íͤˡ¢\f3\-Xlint:\-\fP\f2name\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ·Ù¹ð\f2name\fP¤ò̵¸ú¤Ë¤Ç¤¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+cast -+ÉÔÍפǾéĹ¤Ê¥¥ã¥¹¥È¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+String s = (String)"Hello!" -+.fl -+\fP -+.fi -+.TP 3 -+classfile -+¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎÆâÍƤ˴ØÏ¢¤·¤¿ÌäÂê¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£ -+.TP 3 -+deprecation -+Èó¿ä¾©¹àÌܤλÈÍѤˤĤ¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ java.util.Date myDate = new java.util.Date(); -+.fl -+ int currentDay = myDate.getDay(); -+.fl -+\fP -+.fi -+¥á¥½¥Ã¥É\f2java.util.Date.getDay\fP¤ÏJDK 1.1°Ê¹ß¤Ï¿ä¾©¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ -+.TP 3 -+dep\-ann -+\f2@deprecated\fP Javadoc¥³¥á¥ó¥È¤Ç¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤Æ¤¤¤ë¤¬¡¢\f2@Deprecated\fPÃí¼á¤¬ÉÕ¤¤¤Æ¤¤¤Ê¤¤¹àÌܤˤĤ¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * @deprecated As of Java SE 7, replaced by {@link #newMethod()} -+.fl -+ */ -+.fl -+ -+.fl -+ public static void deprecatedMethood() { } -+.fl -+ -+.fl -+ public static void newMethod() { } -+.fl -+\fP -+.fi -+.TP 3 -+divzero -+ÄêÀ°¿ô0¤Ç½ü»»¤µ¤ì¤ë¤³¤È¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ int divideByZero = 42 / 0; -+.fl -+\fP -+.fi -+.TP 3 -+empty -+\f2if\fPʸ°Ê¹ß¤¬¶õ¤Îʸ¤Ç¤¢¤ë¤³¤È¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+class E { -+.fl -+ void m() { -+.fl -+ if (true) ; -+.fl -+ } -+.fl -+} -+.fl -+\fP -+.fi -+.TP 3 -+fallthrough -+fall\-through¥±¡¼¥¹¤Î\f2switch\fP¥Ö¥í¥Ã¥¯¤ò¥Á¥§¥Ã¥¯¤·¡¢¸¡½Ð¤µ¤ì¤¿¤â¤Î¤ËÂФ·¤Æ·Ù¹ð¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Þ¤¹¡£Fall\-through¥±¡¼¥¹¤Ï¡¢\f2switch\fP¥Ö¥í¥Ã¥¯Æâ¤ÎºÇ¸å¤Î¥±¡¼¥¹¤ò½ü¤¯¥±¡¼¥¹¤Ç¤¹¡£¤³¤Î¥³¡¼¥É¤Ë¤Ï\f2break\fPʸ¤Ï´Þ¤Þ¤ì¤Þ¤»¤ó¡£¥³¡¼¥É¤Î¼Â¹Ô¤ò¤½¤Î¥±¡¼¥¹¤«¤é¼¡¤Î¥±¡¼¥¹¤Ø°ÜÆ°¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¤³¤Î\f2switch\fP¥Ö¥í¥Ã¥¯Æâ¤Î\f2case 1\fP¥é¥Ù¥ë¤Ë³¤¯¥³¡¼¥É¤Ï¡¢\f2break\fPʸ¤Ç½ª¤ï¤Ã¤Æ¤¤¤Þ¤»¤ó¡£ -+.nf -+\f3 -+.fl -+switch (x) { -+.fl -+case 1: -+.fl -+ System.out.println("1"); -+.fl -+ // No break statement here. -+.fl -+case 2: -+.fl -+ System.out.println("2"); -+.fl -+} -+.fl -+\fP -+.fi -+¤³¤Î¥³¡¼¥É¤Î¥³¥ó¥Ñ¥¤¥ë»þ¤Ë\f2\-Xlint:fallthrough\fP¥Õ¥é¥°¤¬»ÈÍѤµ¤ì¤Æ¤¤¤¿¾ì¹ç¡¢¥³¥ó¥Ñ¥¤¥é¤ÏÅö³º¥±¡¼¥¹¤Î¹ÔÈÖ¹æ¤È¤È¤â¤Ë¡¢fall\-through¥±¡¼¥¹¤Î²ÄǽÀ¤¬¤¢¤ë¤³¤È¤ò¼¨¤¹·Ù¹ð¤òȯ¹Ô¤·¤Þ¤¹¡£ -+.TP 3 -+finally -+Àµ¾ï¤Ë´°Î»¤Ç¤¤Ê¤¤\f2finally\fPÀá¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ public static int m() { -+.fl -+ try { -+.fl -+ throw new NullPointerException(); -+.fl -+ } catch (NullPointerException e) { -+.fl -+ System.err.println("Caught NullPointerException."); -+.fl -+ return 1; -+.fl -+ } finally { -+.fl -+ return 0; -+.fl -+ } -+.fl -+ } -+.fl -+\fP -+.fi -+¤³¤ÎÎã¤Ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Ï\f2finally\fP¥Ö¥í¥Ã¥¯¤Ë´Ø¤¹¤ë·Ù¹ð¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¤È¡¢ÃÍ\f21\fP¤Ç¤Ï¤Ê¤¯\f20\fP¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£\f2finally\fP¥Ö¥í¥Ã¥¯¤Ï¡¢\f2try\fP¥Ö¥í¥Ã¥¯¤¬½ªÎ»¤¹¤ë¤Èɬ¤º¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¤³¤ÎÎã¤Ç¤Ï¡¢À©¸æ¤¬\f2catch\fP¤Ë°Ü¤µ¤ì¤¿¾ì¹ç¡¢¥á¥½¥Ã¥É¤Ï½ªÎ»¤·¤Þ¤¹¡£¤¿¤À¤·¡¢\f2finally\fP¥Ö¥í¥Ã¥¯¤Ï¼Â¹Ô¤µ¤ì¤ëɬÍפ¬¤¢¤ë¤¿¤á¡¢À©¸æ¤¬¤¹¤Ç¤Ë¤³¤Î¥á¥½¥Ã¥É¤Î³°Éô¤Ë°Ü¤µ¤ì¤Æ¤¤¤Æ¤â¡¢¤³¤Î¥Ö¥í¥Ã¥¯¤Ï¼Â¹Ô¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+options -+¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤Î»ÈÍѤ˴ؤ¹¤ëÌäÂê¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¤³¤Î¼ï¤Î·Ù¹ð¤ÎÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤ÎÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+overrides -+¥á¥½¥Ã¥É¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É¤Ë´Ø¤¹¤ëÌäÂê¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î2¤Ä¤Î¥¯¥é¥¹¤¬¤¢¤ë¤È¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+public class ClassWithVarargsMethod { -+.fl -+ void varargsMethod(String... s) { } -+.fl -+} -+.fl -+\fP -+.fi -+.nf -+\f3 -+.fl -+public class ClassWithOverridingMethod extends ClassWithVarargsMethod { -+.fl -+ @Override -+.fl -+ void varargsMethod(String[] s) { } -+.fl -+} -+.fl -+\fP -+.fi -+¥³¥ó¥Ñ¥¤¥é¤Ï¼¡¤Î¤è¤¦¤Ê·Ù¹ð¤òÀ¸À®¤·¤Þ¤¹¡£ -+.br -+.br -+\f2warning: [override] varargsMethod(String[]) in ClassWithOverridingMethod overrides varargsMethod(String...) in ClassWithVarargsMethod; overriding method is missing '...'\fP -+.br -+.br -+¥³¥ó¥Ñ¥¤¥é¤Ï¡¢varargs¥á¥½¥Ã¥É¤ò¸¡½Ð¤¹¤ë¤È¡¢varargs¤Î²¾¥Ñ¥é¥á¡¼¥¿¤òÇÛÎó¤ËÊÑ´¹¤·¤Þ¤¹¡£¥á¥½¥Ã¥É\f2ClassWithVarargsMethod.varargsMethod\fP¤Ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Ïvarargs¤Î²¾¥Ñ¥é¥á¡¼¥¿\f2String... s\fP¤ò²¾¥Ñ¥é¥á¡¼¥¿\f2String[] s\fP¤ËÊÑ´¹¤·¤Þ¤¹¡£String[] s¤Ï¡¢¥á¥½¥Ã¥É\f2ClassWithOverridingMethod.varargsMethod\fP¤Î²¾¥Ñ¥é¥á¡¼¥¿¤ËÂбþ¤¹¤ëÇÛÎó¤Ç¤¹¡£¤½¤Î·ë²Ì¡¢¤³¤ÎÎã¤Ç¤Ï¥³¥ó¥Ñ¥¤¥ë¤¬¹Ô¤ï¤ì¤Þ¤¹¡£ -+.TP 3 -+path -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¤Î̵¸ú¤Ê¥Ñ¥¹Í×ÁǤȸºß¤·¤Ê¤¤¥Ñ¥¹¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹(¥¯¥é¥¹¡¦¥Ñ¥¹¡¢¥½¡¼¥¹¡¦¥Ñ¥¹¤Ê¤É¤Î¥Ñ¥¹´ØÏ¢)¡£¤³¤Î¤è¤¦¤Ê·Ù¹ð¤ò\f2@SuppressWarnings\fPÃí¼á¤ÇÍÞÀ©¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+javac \-Xlint:path \-classpath /nonexistentpath Example.java -+.fl -+\fP -+.fi -+.TP 3 -+processing -+Ãí¼á½èÍý¤Ë´Ø¤¹¤ëÌäÂê¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¥³¥ó¥Ñ¥¤¥é¤¬¤³¤Î·Ù¹ð¤òÀ¸À®¤¹¤ë¤Î¤Ï¡¢Ãí¼á¤ò´Þ¤à¥¯¥é¥¹¤¬¤¢¤ë¤È¤¤Ë¡¢»ÈÍѤ·¤Æ¤¤¤ëÃí¼á¥×¥í¥»¥Ã¥µ¤Ç¤½¤Î¥¿¥¤¥×¤ÎÎã³°¤ò½èÍý¤Ç¤¤Ê¤¤¾ì¹ç¤Ç¤¹¡£Ã±½ã¤ÊÃí¼á¥×¥í¥»¥Ã¥µ¤ÎÎã¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.br -+.br -+\f3¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë\fP\f4AnnoProc.java\fP: -+.nf -+\f3 -+.fl -+import java.util.*; -+.fl -+import javax.annotation.processing.*; -+.fl -+import javax.lang.model.*; -+.fl -+import javax.lang.model.element.*; -+.fl -+ -+.fl -+@SupportedAnnotationTypes("NotAnno") -+.fl -+public class AnnoProc extends AbstractProcessor { -+.fl -+ public boolean process(Set<? extends TypeElement> elems, RoundEnvironment renv) { -+.fl -+ return true; -+.fl -+ } -+.fl -+ -+.fl -+ public SourceVersion getSupportedSourceVersion() { -+.fl -+ return SourceVersion.latest(); -+.fl -+ } -+.fl -+} -+.fl -+\fP -+.fi -+\f3¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë\fP\f4AnnosWithoutProcessors.java\fP\f3:\fP -+.nf -+\f3 -+.fl -+@interface Anno { } -+.fl -+ -+.fl -+@Anno -+.fl -+class AnnosWithoutProcessors { } -+.fl -+\fP -+.fi -+¼¡¤Î¥³¥Þ¥ó¥É¤Ï¡¢Ãí¼á¥×¥í¥»¥Ã¥µ\f2AnnoProc\fP¤ò¥³¥ó¥Ñ¥¤¥ë¤·¡¢¤³¤ÎÃí¼á¥×¥í¥»¥Ã¥µ¤ò¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë\f2AnnosWithoutProcessors.java\fP¤ËÂФ·¤Æ¼Â¹Ô¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+% \fP\f3javac AnnoProc.java\fP -+.fl -+% \f3javac \-cp . \-Xlint:processing \-processor AnnoProc \-proc:only AnnosWithoutProcessors.java\fP -+.fl -+.fi -+¥³¥ó¥Ñ¥¤¥é¤¬¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë\f2AnnosWithoutProcessors.java\fP¤ËÂФ·¤ÆÃí¼á¥×¥í¥»¥Ã¥µ¤ò¼Â¹Ô¤¹¤ë¤È¡¢¼¡¤Î·Ù¹ð¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+\f2warning: [processing] No processor claimed any of these annotations: Anno\fP -+.br -+.br -+¤³¤ÎÌäÂê¤ò²ò·è¤¹¤ë¤Ë¤Ï¡¢¥¯¥é¥¹\f2AnnosWithoutProcessors\fP¤ÇÄêµÁ¤ª¤è¤Ó»ÈÍѤµ¤ì¤ëÃí¼á¤Î̾Á°¤ò\f2Anno\fP¤«¤é\f2NotAnno\fP¤ËÊѹ¹¤·¤Þ¤¹¡£ -+.TP 3 -+rawtypes -+raw·¿¤ËÂФ¹¤ë̤¸¡ººÁàºî¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¼¡¤Îʸ¤Ç¤Ï¡¢\f2rawtypes\fP·Ù¹ð¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+void countElements(List l) { ... } -+.fl -+\fP -+.fi -+¼¡¤Îʸ¤Ç¤Ï¡¢\f2rawtypes\fP·Ù¹ð¤ÏÀ¸À®¤µ¤ì¤Þ¤»¤ó¡£ -+.nf -+\f3 -+.fl -+void countElements(List<?> l) { ... } -+.fl -+\fP -+.fi -+\f2List\fP¤Ïraw·¿¤Ç¤¹¡£¤¿¤À¤·¡¢\f2List<?>\fP¤Ï¥¢¥ó¥Ð¥¦¥ó¥É·Á¼°¤Î¥ï¥¤¥ë¥É¥«¡¼¥É¤Î¥Ñ¥é¥á¡¼¥¿²½¤µ¤ì¤¿·¿¤Ç¤¹¡£\f2List\fP¤Ï¥Ñ¥é¥á¡¼¥¿²½¤µ¤ì¤¿¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ê¤Î¤Ç¡¢É¬¤º¤½¤Î·¿°ú¿ô¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ÎÎã¤Ç¤Ï¡¢\f2List\fP¤Î²¾°ú¿ô¤Ï¥¢¥ó¥Ð¥¦¥ó¥É·Á¼°¤Î¥ï¥¤¥ë¥É¥«¡¼¥É(\f2?\fP)¤ò»ÈÍѤ·¤Æ¤½¤Î²¾·¿¥Ñ¥é¥á¡¼¥¿¤È¤·¤Æ»ØÄꤵ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢\f2countElements\fP¥á¥½¥Ã¥É¤Ï\f2List\fP¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¤É¤Î¥¤¥ó¥¹¥¿¥ó¥¹²½¤â¼õ¤±ÉÕ¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+serial -+ľÎó²½²Äǽ¥¯¥é¥¹¤Ë\f2serialVersionUID\fPÄêµÁ¤¬¤Ê¤¤¤³¤È¤ò·Ù¹ð¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+public class PersistentTime implements Serializable -+.fl -+{ -+.fl -+ private Date time; -+.fl -+ -+.fl -+ public PersistentTime() { -+.fl -+ time = Calendar.getInstance().getTime(); -+.fl -+ } -+.fl -+ -+.fl -+ public Date getTime() { -+.fl -+ return time; -+.fl -+ } -+.fl -+} -+.fl -+\fP -+.fi -+¥³¥ó¥Ñ¥¤¥é¤Ï¼¡¤Î·Ù¹ð¤òÀ¸À®¤·¤Þ¤¹¡£ -+.br -+.br -+\f2warning: [serial] serializable class PersistentTime has no definition of serialVersionUID\fP -+.br -+.br -+ľÎó²½²Äǽ¥¯¥é¥¹¤¬\f2serialVersionUID\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥£¡¼¥ë¥É¤òÌÀ¼¨Åª¤ËÀë¸À¤·¤Ê¤¤¾ì¹ç¡¢Ä¾Îó²½¥é¥ó¥¿¥¤¥à¤Ï¡ÖJava¥ª¥Ö¥¸¥§¥¯¥ÈľÎó²½»ÅÍ͡פÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¡¢¥¯¥é¥¹¤ÎÍÍ¡¹¤Ê¦Ì̤˴ð¤Å¤¤¤Æ¡¢¥¯¥é¥¹¤Î\f2serialVersionUID\fP¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤò·×»»¤·¤Þ¤¹¡£¤¿¤À¤·¡¢¤¹¤Ù¤Æ¤ÎľÎó²½²Äǽ¥¯¥é¥¹¤¬\f2serialVersionUID\fPÃͤòÌÀ¼¨Åª¤ËÀë¸À¤¹¤ë¤³¤È¤ò¶¯¤¯¤ªÁ¦¤á¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢\f2serialVersionUID\fPÃͤò·×»»¤¹¤ë¥Ç¥Õ¥©¥ë¥È¤Î¥×¥í¥»¥¹¤¬¡¢¥³¥ó¥Ñ¥¤¥é¤Î¼ÂÁõ¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë²ÄǽÀ¤Î¤¢¤ë¥¯¥é¥¹¤Î¾ÜºÙ¤Ë¤¤ï¤á¤Æ±Æ¶Á¤ò¼õ¤±¤ä¤¹¤¯¡¢Ä¾Îó²½Éü¸µÃæ¤Ëͽ´ü¤·¤Ê¤¤\f2InvalidClassExceptions\fP¤¬È¯À¸¤¹¤ë²ÄǽÀ¤¬¤¢¤ë¤¿¤á¤Ç¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢Java¥³¥ó¥Ñ¥¤¥é¤Î¼ÂÁõ¤¬°Û¤Ê¤Ã¤Æ¤â\f2serialVersionUID\fPÃͤΰì´ÓÀ¤ò³ÎÊݤˤ¹¤ë¤Ë¤Ï¡¢Ä¾Îó²½²Äǽ¥¯¥é¥¹¤¬\f2serialVersionUID\fPÃͤòÌÀ¼¨Åª¤ËÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+static -+static¤Î»ÈÍѤ˴ؤ¹¤ëÌäÂê¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+class XLintStatic { -+.fl -+ static void m1() { } -+.fl -+ void m2() { this.m1(); } -+.fl -+} -+.fl -+\fP -+.fi -+¥³¥ó¥Ñ¥¤¥é¤Ï¼¡¤Î·Ù¹ð¤òÀ¸À®¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+warning: [static] static method should be qualified by type name, XLintStatic, instead of by an expression -+.fl -+\fP -+.fi -+¤³¤ÎÌäÂê¤ò²ò·è¤¹¤ë¤¿¤á¤Ë¡¢¼¡¤Î¤è¤¦¤Ëstatic¥á¥½¥Ã¥É\f2m1\fP¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+XLintStatic.m1(); -+.fl -+\fP -+.fi -+¤¢¤ë¤¤¤Ï¡¢\f2static\fP¥¡¼¥ï¡¼¥É¤ò¥á¥½¥Ã¥É\f2m1\fP¤ÎÀë¸À¤«¤éºï½ü¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+try -+try\-with\-resourcesʸ¤ò´Þ¤à¡¢\f2try\fP¥Ö¥í¥Ã¥¯¤Î»ÈÍѤ˴ؤ¹¤ëÌäÂê¤Ë¤Ä¤¤¤Æ·Ù¹ð¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2try\fPʸ¤ÇÀë¸À¤µ¤ì¤¿¥ê¥½¡¼¥¹\f2ac\fP¤¬»ÈÍѤµ¤ì¤Ê¤¤¤¿¤á¤Ë¡¢¼¡¤Îʸ¤ËÂФ·¤Æ·Ù¹ð¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+try ( AutoCloseable ac = getResource() ) { -+.fl -+ // do nothing -+.fl -+} -+.fl -+\fP -+.fi -+.TP 3 -+unchecked -+Java¸À¸ì»ÅÍͤǻØÄꤵ¤ì¤Æ¤¤¤ë̤¸¡ººÊÑ´¹·Ù¹ð¤Î¾ÜºÙ¤ò¼¨¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ List l = new ArrayList<Number>(); -+.fl -+ List<String> ls = l; // unchecked warning -+.fl -+\fP -+.fi -+·¿¤Î¾ÃµîÃæ¤Ë¡¢·¿\f2ArrayList<Number>\fP¤ª¤è¤Ó\f2List<String>\fP¤Ï¤½¤ì¤¾¤ì\f2ArrayList\fP¤ª¤è¤Ó\f2List\fP¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.br -+.br -+ÊÑ¿ô\f2ls\fP¤Ë¤Ï¥Ñ¥é¥á¡¼¥¿²½¤µ¤ì¤¿·¿\f2List<String>\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£\f2l\fP¤Ë¤è¤Ã¤Æ»²¾È¤µ¤ì¤ë\f2List\fP¤¬\f2ls\fP¤ËÂåÆþ¤µ¤ì¤ë¤È¡¢¥³¥ó¥Ñ¥¤¥é¤Ï̤¸¡ºº·Ù¹ð¤òÀ¸À®¤·¤Þ¤¹¡£¥³¥ó¥Ñ¥¤¥é¤Ï\f2l\fP¤¬\f2List<String>\fP·¿¤ò»²¾È¤¹¤ë¤«¤É¤¦¤«¤ò¥³¥ó¥Ñ¥¤¥ë»þ¤ËȽÃǤǤ¤Þ¤»¤ó¡£¤Þ¤¿¡¢JVM¤¬¼Â¹Ô»þ¤Ë¤½¤ì¤òȽÃǤǤ¤Ê¤¤¤³¤È¤âǧ¼±¤·¤Æ¤¤¤Þ¤¹¡£l¤ÏList<String>·¿¤ò»²¾È¤·¤Þ¤»¤ó¡£¤½¤Î·ë²Ì¡¢¥Ò¡¼¥×±øÀ÷¤¬È¯À¸¤·¤Þ¤¹¡£ -+.br -+.br -+¾Ü¤·¤¯ÀâÌÀ¤¹¤ë¤È¡¢¥Ò¡¼¥×±øÀ÷¾õÂÖ¤¬È¯À¸¤¹¤ë¤Î¤Ï¡¢\f2List\fP¥ª¥Ö¥¸¥§¥¯¥È\f2l\fP(¤½¤Îstatic·¿¤Ï\f2List<Number>\fP)¤¬Ê̤Î\f2List\fP¥ª¥Ö¥¸¥§¥¯¥È\f2ls\fP(°Û¤Ê¤ëstatic·¿\f2List<String>\fP¤ò»ý¤Ä)¤ËÂåÆþ¤µ¤ì¤ë¾ì¹ç¤Ç¤¹¡£¤·¤«¤·¡¢¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï¤³¤ÎÂåÆþ¤ò¤¤¤Þ¤À¤Ëµö²Ä¤·¤Æ¤¤¤Þ¤¹¡£Áí¾Î¤ò¥µ¥Ý¡¼¥È¤·¤Ê¤¤Java SE¤Î¥Ð¡¼¥¸¥ç¥ó¤È¤Î²¼°Ì¸ß´¹À¤ò³ÎÊݤ¹¤ë¤¿¤á¤Ë¡¢¤³¤ÎÂåÆþ¤òµö²Ä¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£·¿¾Ãµî¤Î¤¿¤á¤Ë¡¢\f2List<Number>\fP¤È\f2List<String>\fP¤Ï\f2List\fP¤Ë¤Ê¤ê¤Þ¤¹¡£¤½¤Î·ë²Ì¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¥ª¥Ö¥¸¥§¥¯¥È\f2l\fP(\f2List\fP¤È¤¤¤¦raw·¿¤ò»ý¤Ä)¤ò¥ª¥Ö¥¸¥§¥¯¥È\f2ls\fP¤ËÂåÆþ¤¹¤ë¤³¤È¤òµö²Ä¤·¤Þ¤¹¡£ -+.TP 3 -+varargs -+²ÄÊÑ°ú¿ô(varargs)¥á¥½¥Ã¥É¡¢ÆäËÈó¶ñ¾Ý²½²Äǽ°ú¿ô¤ò´Þ¤à¤â¤Î¤Î»ÈÍѤ¬°ÂÁ´¤Ç¤Ê¤¤¤³¤È¤ò·Ù¹ð¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+public class ArrayBuilder { -+.fl -+ public static <T> void addToList (List<T> listArg, T... elements) { -+.fl -+ for (T x : elements) { -+.fl -+ listArg.add(x); -+.fl -+ } -+.fl -+ } -+.fl -+} -+.fl -+\fP -+.fi -+¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¥á¥½¥Ã¥É\f2ArrayBuilder.addToList\fP¤ÎÄêµÁ¤Ë´Ø¤¹¤ë¼¡¤Î·Ù¹ð¤òÀ¸À®¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+warning: [varargs] Possible heap pollution from parameterized vararg type T -+.fl -+\fP -+.fi -+¥³¥ó¥Ñ¥¤¥é¤Ï¡¢varargs¥á¥½¥Ã¥É¤ò¸¡½Ð¤¹¤ë¤È¡¢varargs¤Î²¾¥Ñ¥é¥á¡¼¥¿¤òÇÛÎó¤ËÊÑ´¹¤·¤Þ¤¹¡£¤·¤«¤·¡¢Java¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ç¤Ï¡¢¥Ñ¥é¥á¡¼¥¿²½¤µ¤ì¤¿·¿¤ÎÇÛÎó¤ÎºîÀ®¤òµö²Ä¤·¤Æ¤¤¤Þ¤»¤ó¡£¥á¥½¥Ã¥É\f2ArrayBuilder.addToList\fP¤Ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Ïvarargs¤Î²¾¥Ñ¥é¥á¡¼¥¿\f2T... elements\fP¤ò²¾¥Ñ¥é¥á¡¼¥¿\f2T[] elements\fP(ÇÛÎó)¤ËÊÑ´¹¤·¤Þ¤¹¡£¤·¤«¤·¡¢·¿¾Ãµî¤Î¤¿¤á¤Ë¡¢¥³¥ó¥Ñ¥¤¥é¤Ïvarargs¤Î²¾¥Ñ¥é¥á¡¼¥¿¤ò\f2Object[] elements\fP¤ËÊÑ´¹¤·¤Þ¤¹¡£¤½¤Î·ë²Ì¡¢¥Ò¡¼¥×±øÀ÷¤¬È¯À¸¤¹¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¥Õ¥¡¥¤¥ë" -+.LP -+.LP -+javac¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤òû¤¯¤·¤¿¤ê´Ê·é¤Ë¤·¤¿¤ê¤¹¤ë¤¿¤á¤Ë¡¢\f2javac\fP¥³¥Þ¥ó¥É¤ËÂФ¹¤ë°ú¿ô(\f2\-J\fP¥ª¥×¥·¥ç¥ó¤ò½ü¤¯)¤ò´Þ¤à1¤Ä°Ê¾å¤Î¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ÎÊýË¡¤ò»ÈÍѤ¹¤ë¤È¡¢¤É¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¾å¤Ç¤â¡¢Ç¤°Õ¤ÎŤµ¤Îjavac¥³¥Þ¥ó¥É¤òºîÀ®¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+°ú¿ô¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢javac¤Î¥ª¥×¥·¥ç¥ó¤È¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤ò¼«Í³¤ËÁȤ߹礻¤Æµ½Ò¤Ç¤¤Þ¤¹¡£¥Õ¥¡¥¤¥ëÆâ¤Î³Æ°ú¿ô¤Ï¡¢¥¹¥Ú¡¼¥¹¤Þ¤¿¤Ï²þ¹Ô¤Ç¶èÀÚ¤ê¤Þ¤¹¡£¥Õ¥¡¥¤¥ë̾¤Ë¶õÇò¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤Î¥Õ¥¡¥¤¥ë̾Á´ÂΤòÆó½Å°úÍÑÉä¤Ç°Ï¤ß¤Þ¤¹¡£ -+.LP -+.LP -+°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤Î¥Õ¥¡¥¤¥ë̾¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¸«¤¿ÁêÂХѥ¹¤Ë¤Ê¤ê¤Þ¤¹¡£°ú¿ô¥Õ¥¡¥¤¥ë¤Î°ÌÃÖ¤«¤é¸«¤¿ÁêÂХѥ¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤Î¥Õ¥¡¥¤¥ë̾¥ê¥¹¥È¤Ç¤Ï¡¢¥ï¥¤¥ë¥É¥«¡¼¥É(*)¤Ï»ÈÍѤǤ¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢\f2*.java\fP¤È¤Ï»ØÄê¤Ç¤¤Þ¤»¤ó¡£°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤Î°ú¿ô¤Ç\f2@\fPʸ»ú¤ò»ÈÍѤ·¤Æ¡¢Ê£¿ô¤Î¥Õ¥¡¥¤¥ë¤òºÆµ¢Åª¤Ë²ò¼á¤¹¤ë¤³¤È¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤Þ¤¿¡¢\f2\-J\fP¥ª¥×¥·¥ç¥ó¤â¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ïµ¯Æ°¥Ä¡¼¥ë¤ËÅϤµ¤ì¤Þ¤¹¤¬¡¢µ¯Æ°¥Ä¡¼¥ë¤Ç¤Ï°ú¿ô¥Õ¥¡¥¤¥ë¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤«¤é¤Ç¤¹¡£ -+.LP -+.LP -+javac¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë¡¢³Æ°ú¿ô¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤È¥Õ¥¡¥¤¥ë̾¤ÎÀèƬ¤Ë\f2@\fPʸ»ú¤òÉÕ¤±¤ÆÅϤ·¤Þ¤¹¡£javac¤Ï¡¢\f2@\fPʸ»ú¤Ç»Ï¤Þ¤ë°ú¿ô¤ò¸«¤Ä¤±¤ë¤È¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤ÎÆâÍƤòŸ³«¤·¤Æ°ú¿ô¥ê¥¹¥È¤ËÁÞÆþ¤·¤Þ¤¹¡£ -+.LP -+.SS -+°ú¿ô¥Õ¥¡¥¤¥ë¤ò1¤Ä»ØÄꤹ¤ëÎã -+.LP -+.LP -+¡Ö\f2argfile\fP¡×¤È¤¤¤¦Ì¾Á°¤Î°ú¿ô¥Õ¥¡¥¤¥ë¤Ë¤¹¤Ù¤Æ¤Îjavac°ú¿ô¤ò³ÊǼ¤¹¤ë¾ì¹ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% \fP\f3javac @argfile\fP -+.fl -+.fi -+ -+.LP -+.LP -+¤³¤Î°ú¿ô¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¼¡¤ÎÎã¤Ç¼¨¤µ¤ì¤Æ¤¤¤ë2¤Ä¤Î¥Õ¥¡¥¤¥ë¤ÎÆâÍƤòξÊý¤È¤âÆþ¤ì¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+.SS -+°ú¿ô¥Õ¥¡¥¤¥ë¤ò2¤Ä»ØÄꤹ¤ëÎã -+.LP -+.LP -+¤¿¤È¤¨¤Ð¡¢javac¥ª¥×¥·¥ç¥óÍѤË1¥Õ¥¡¥¤¥ë¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾ÍѤË1¥Õ¥¡¥¤¥ë¤È¤¤¤¦¤è¤¦¤Ë¡¢2¤Ä¤Î°ú¿ô¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤Ê¤ª¡¢¤³¤Î¸å¤Î¥ê¥¹¥È¤Ç¤Ï¡¢¹Ô¤Î·Ñ³ʸ»ú¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤»¤ó¡£ -+.LP -+.LP -+¼¡¤ÎÆâÍƤò´Þ¤à¡¢¡Ö\f2options\fP¡×¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ \-d classes -+.fl -+ \-g -+.fl -+ \-sourcepath /java/pubs/ws/1.3/src/share/classes -+.fl -+ -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¼¡¤ÎÆâÍƤò´Þ¤à\f2classes\fP¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ MyClass1.java -+.fl -+ MyClass2.java -+.fl -+ MyClass3.java -+.fl -+ -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¼¡¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ\f3javac\fP¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ % \fP\f3javac @options @classes\fP -+.fl -+ -+.fl -+.fi -+ -+.LP -+.SS -+¥Ñ¥¹ÉÕ¤¤Î°ú¿ô¥Õ¥¡¥¤¥ë¤ÎÎã -+.LP -+.LP -+°ú¿ô¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¥Ñ¥¹¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢¤½¤Î¥Õ¥¡¥¤¥ëÆâ¤Ë»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë̾¤Ï¡¢¸½ºß¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¸«¤¿ÁêÂХѥ¹¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢²¼¤ÎÎã¤Î¾ì¹ç¤Ï¡¢\f2path1\fP¤ä\f2path2\fP¤«¤é¸«¤¿ÁêÂХѥ¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ -+.LP -+.nf -+\f3 -+.fl -+% \fP\f3javac @path1/options @path2/classes\fP -+.fl -+.fi -+ -+.LP -+.SH "Ãí¼á½èÍý" -+.LP -+.LP -+\f3javac\fP¤¬Ãí¼á½èÍý¤òľÀÜ¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤¿¤á¡¢ÆÈΩ¤·¤¿Ãí¼á½èÍý¥Ä¡¼¥ë¤Ç¤¢¤ë\f3apt\fP¤ò»ÈÍѤ¹¤ëɬÍפ¬¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£ -+.LP -+.LP -+Ãí¼á½èÍý¤ÎAPI¤Ï¡¢\f2javax.annotation.processing\fP¤ª¤è¤Ó\f2javax.lang.model\fP¥Ñ¥Ã¥±¡¼¥¸¤È¤½¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸Æâ¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.SS -+Ãí¼á½èÍý¤Î³µÍ× -+.LP -+.LP -+\f3\-proc:none\fP¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤ÆÃí¼á½èÍý¤¬Ìµ¸ú²½¤µ¤ì¤Ê¤¤¸Â¤ê¡¢¥³¥ó¥Ñ¥¤¥é¤Ï»ÈÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤ÎÃí¼á¥×¥í¥»¥Ã¥µ¤ò¸¡º÷¤·¤Þ¤¹¡£¸¡º÷¥Ñ¥¹¤Ï\f3\-processorpath\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ»ØÄê¤Ç¤¤Þ¤¹¡£¸¡º÷¥Ñ¥¹¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£¥×¥í¥»¥Ã¥µ¤Î¸¡º÷¤Ï¡¢¸¡º÷¥Ñ¥¹¾å¤Î\f2META\-INF/services/javax.annotation.processing.Processor\fP¤È¤¤¤¦Ì¾Á°¤Î¥µ¡¼¥Ó¥¹¡¦¥×¥í¥Ð¥¤¥À¹½À®¥Õ¥¡¥¤¥ë¤Ë´ð¤Å¤¤¤Æ¹Ô¤ï¤ì¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢»ÈÍѤ¹¤ë¤¹¤Ù¤Æ¤ÎÃí¼á¥×¥í¥»¥Ã¥µ¤Î̾Á°¤ò¡¢1¹Ô¤Ë1¤Ä¤º¤Ä´Þ¤á¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢Ê̤ÎÊýË¡¤È¤·¤Æ¡¢\f3\-processor\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¥×¥í¥»¥Ã¥µ¤òÌÀ¼¨Åª¤Ë»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ä¥¯¥é¥¹¤òÁöºº¤¹¤ë¤³¤È¤Ç¡¢¤É¤Î¤è¤¦¤ÊÃí¼á¤¬Â¸ºß¤·¤Æ¤¤¤ë¤«¤ò³Îǧ¤·½ª¤ï¤ë¤È¡¢¥×¥í¥»¥Ã¥µ¤ËÂФ·¤ÆÌä¹ç¤»¤ò¹Ô¤¤¡¢¤½¤ì¤é¤Î¥×¥í¥»¥Ã¥µ¤¬¤É¤ÎÃí¼á¤ò½èÍý¤Ç¤¤ë¤Î¤«¤ò³Îǧ¤·¤Þ¤¹¡£°ìÃפ¹¤ë¤â¤Î¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢¤½¤Î¥×¥í¥»¥Ã¥µ¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£³Æ¥×¥í¥»¥Ã¥µ¤Ï¡¢¼«¿È¤¬½èÍý¤¹¤ëÃí¼á¤ò¡ÖÍ×µá¡×¤Ç¤¤Þ¤¹¡£¤½¤Î¾ì¹ç¡¢¤½¤ì¤é¤ÎÃí¼á¤ËÂФ¹¤ëÊÌ¤Î¥×¥í¥»¥Ã¥µ¤ò¸«¤Ä¤±¤ë»î¤ß¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¡£¤¹¤Ù¤Æ¤ÎÃí¼á¤¬Í׵ᤵ¤ì¤Æ¤·¤Þ¤¦¤È¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¤½¤ì°Ê¾å¥×¥í¥»¥Ã¥µ¤Î¸¡º÷¤ò¹Ô¤¤¤Þ¤»¤ó¡£ -+.LP -+.LP -+¤¤¤º¤ì¤«¤Î¥×¥í¥»¥Ã¥µ¤Ë¤è¤Ã¤Æ¿·¤·¤¤¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤ë¤È¡¢Ãí¼á½èÍý¤Î2²óÌܤΥ饦¥ó¥É¤¬³«»Ï¤µ¤ì¤Þ¤¹¡£¿·¤·¤¯À¸À®¤µ¤ì¤¿¤¹¤Ù¤Æ¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬Áöºº¤µ¤ì¡¢Á°²ó¤ÈƱÍͤËÃí¼á¤¬½èÍý¤µ¤ì¤Þ¤¹¡£°ÊÁ°¤Î¥é¥¦¥ó¥É¤Ç¸Æ¤Ó½Ð¤µ¤ì¤¿¥×¥í¥»¥Ã¥µ¤Ï¤¹¤Ù¤Æ¡¢¸å³¤Î¤É¤Î¥é¥¦¥ó¥É¤Ç¤â¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£¤³¤ì¤¬¡¢¿·¤·¤¤¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Ê¤¯¤Ê¤ë¤Þ¤Ç³¤¤Þ¤¹¡£ -+.LP -+.LP -+¤¢¤ë¥é¥¦¥ó¥É¤Ç¿·¤·¤¤¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢Ãí¼á¥×¥í¥»¥Ã¥µ¤¬¤¢¤È1²ó¤Î¤ß¸Æ¤Ó½Ð¤µ¤ì¡¢É¬ÍפʽèÍý¤ò¼Â¹Ô¤¹¤ëµ¡²ñ¤¬Í¿¤¨¤é¤ì¤Þ¤¹¡£ºÇ¸å¤Ë¡¢\f3\-proc:only\fP¥ª¥×¥·¥ç¥ó¤¬»ÈÍѤµ¤ì¤Ê¤¤¸Â¤ê¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¸µ¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÈÀ¸À®¤µ¤ì¤¿¤¹¤Ù¤Æ¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹¡£ -+.LP -+.SS -+°ÅÌÛŪ¤Ë¥í¡¼¥É¤µ¤ì¤¿¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë -+.LP -+.LP -+¥³¥ó¥Ñ¥¤¥é¤Ï¡¢°ìÏ¢¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ëºÝ¤Ë¡¢Ê̤Υ½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò°ÅÌÛŪ¤Ë¥í¡¼¥É¤¹¤ë¤³¤È¤¬É¬Íפʾì¹ç¤¬¤¢¤ê¤Þ¤¹¡£(·¿¤Î¸¡º÷¤ò»²¾È)¡£¤½¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤Ï¡¢¸½»þÅÀ¤Ç¤ÏÃí¼á½èÍý¤ÎÂоݤˤʤê¤Þ¤»¤ó¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢Ãí¼á½èÍý¤¬¼Â¹Ô¤µ¤ì¡¢¤«¤Ä°ÅÌÛŪ¤Ë¥í¡¼¥É¤µ¤ì¤¿¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬1¤Ä¤Ç¤â¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¾ì¹ç¤Ë¥³¥ó¥Ñ¥¤¥é¤Ï·Ù¹ð¤òȯ¹Ô¤·¤Þ¤¹¡£¤³¤Î·Ù¹ð¤òÍÞÀ©¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢\-implicit¥ª¥×¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "·¿¤Î¸¡º÷" -+.LP -+.LP -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤¿¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ë·¿¤ÎÄêµÁ¤¬¸«¤Ä¤«¤é¤Ê¤¤¤È¤¡¢¥³¥ó¥Ñ¥¤¥é¤ÏÄ̾¤½¤Î·¿¤Ë´Ø¤¹¤ë¾ðÊó¤òɬÍפȤ·¤Þ¤¹¡£¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ë¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢³ÈÄ¥¤µ¤ì¤Æ¤¤¤ë¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¤¢¤ë¤¤¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¹¤Ù¤Æ¤Ë¤Ä¤¤¤Æ¡¢·¿¤Î¾ðÊó¤òɬÍפȤ·¤Þ¤¹¡£¤³¤ì¤Ë¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÇÌÀ¼¨Åª¤Ë¤Ï¸ÀµÚ¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤â¡¢·Ñ¾µ¤òÄ̤¸¤Æ¾ðÊó¤òÄ󶡤¹¤ë¥¯¥é¥¹¤È¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤â´Þ¤Þ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+¤¿¤È¤¨¤Ð¡¢\f3java.applet.Applet\fP¤ò¥µ¥Ö¥¯¥é¥¹¤Ë¤·¤¿¾ì¹ç¡¢\f3¥¢¥×¥ì¥Ã¥È¤Î\fPÁÄÀè¤Î¥¯¥é¥¹(\f3java.awt.Panel\fP¡¢\f3java.awt.Container\fP¡¢\f3java.awt.Component\fP¡¢\f3java.lang.Object\fP)¤ò»ÈÍѤ·¤Æ¤¤¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¥³¥ó¥Ñ¥¤¥é¤Ï¡¢·¿¤Î¾ðÊó¤¬É¬Íפˤʤë¤È¡¢¤½¤Î·¿¤òÄêµÁ¤·¤Æ¤¤¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òõ¤·¤Þ¤¹¡£¤Þ¤º¡¢¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤È³ÈÄ¥µ¡Ç½¥¯¥é¥¹¤ò¸¡º÷¤·¡¢Â³¤¤¤Æ¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹(¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê)¤ò¸¡º÷¤·¤Þ¤¹¡£¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Ï¡¢\f3CLASSPATH\fP´Ä¶ÊÑ¿ô¤òÀßÄꤷ¤ÆÄêµÁ¤¹¤ë¤«¡¢¤Þ¤¿¤Ï\f3\-classpath\fP¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤ÆÀßÄꤷ¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢¥¯¥é¥¹¡¦¥Ñ¥¹¤ÎÀßÄê¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+\-sourcepath¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¡¢»ØÄꤵ¤ì¤¿¥Ñ¥¹¤«¤é¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤·¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤«¤é¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎξÊý¤ò¸¡º÷¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f3\-bootclasspath\fP¥ª¥×¥·¥ç¥ó¤È\f3\-extdirs\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢Ê̤Υ֡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤ä³ÈÄ¥µ¡Ç½¥¯¥é¥¹¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¤³¤Î¸å¤Î¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¡¦¥ª¥×¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+·¿¤Î¸¡º÷¤ËÀ®¸ù¤·¤¿¤È¤¤ËÆÀ¤é¤ì¤ë·ë²Ì¤Ï¡¢¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¡¢¤Þ¤¿¤Ï¤½¤ÎξÊý¤Ç¤¢¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£Î¾Êý¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢¤½¤Î¤É¤Á¤é¤ò»ÈÍѤ¹¤ë¤«¤ò\-Xprefer¥ª¥×¥·¥ç¥ó¤Ç¥³¥ó¥Ñ¥¤¥é¤Ë»Ø¼¨¤Ç¤¤Þ¤¹¡£\f3newer\fP¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¥³¥ó¥Ñ¥¤¥é¤Ï2¤Ä¤Î¥Õ¥¡¥¤¥ë¤Î¿·¤·¤¤Êý¤ò»ÈÍѤ·¤Þ¤¹¡£\f3source\fP¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ï\f3newer\fP¤Ç¤¹¡£ -+.LP -+.LP -+·¿¤Î¸¡º÷¼«ÂΤˤè¤Ã¤Æ¡¢¤Þ¤¿¤Ï\f3\-Xprefer\fP¤¬ÀßÄꤵ¤ì¤¿·ë²Ì¤È¤·¤ÆɬÍפʷ¿¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¤½¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÆɤ߼è¤ê¡¢É¬ÍפʾðÊó¤ò¼èÆÀ¤·¤Þ¤¹¡£¤µ¤é¤Ë¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¡¢¤½¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥³¥ó¥Ñ¥¤¥ë¤â¹Ô¤¤¤Þ¤¹¡£\-implicit¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¤½¤ÎÆ°ºî¤ò»ØÄê¤Ç¤¤Þ¤¹¡£\f3none\fP¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¤½¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ÏÀ¸À®¤µ¤ì¤Þ¤»¤ó¡£\f3class\fP¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¤½¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+¥³¥ó¥Ñ¥¤¥é¤Ï¡¢Ãí¼á½èÍý¤Î´°Î»¸å¤Ë¡¢¤¢¤ë·¿¾ðÊó¤ÎɬÍ×À¤òǧ¼±¤·¤Ê¤¤¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤½¤Î·¿¾ðÊ󤬤¢¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ëÆâ¤Ë¸«¤Ä¤«¤ê¡¢¤«¤Ä\f3\-implicit\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤¬Ãí¼á½èÍý¤ÎÂоݤȤʤ餺¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤³¤È¤ò¡¢¥³¥ó¥Ñ¥¤¥é¤¬¥æ¡¼¥¶¡¼¤Ë·Ù¹ð¤·¤Þ¤¹¡£¤³¤Î·Ù¹ð¤ò̵¸ú¤Ë¤¹¤ë¤Ë¤Ï¡¢(¤½¤Î¥Õ¥¡¥¤¥ë¤¬Ãí¼á½èÍý¤ÎÂоݤȤʤë¤è¤¦¤Ë)¤½¤Î¥Õ¥¡¥¤¥ë¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë»ØÄꤹ¤ë¤«¡¢¤¢¤ë¤¤¤Ï¤½¤Î¤è¤¦¤Ê¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ëɬÍפ¬¤¢¤ë¤«¤É¤¦¤«¤ò\f3\-implicit\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.SH "¥×¥í¥°¥é¥Þ¥Æ¥£¥Ã¥¯¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹" -+.LP -+.LP -+\f3javac\fP¤Ï¡¢\f2javax.tools\fP¥Ñ¥Ã¥±¡¼¥¸Æâ¤Î¥¯¥é¥¹¤È¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤ë¿·¤·¤¤Java Compiler API¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£ -+.LP -+.SS -+Îã -+.LP -+.LP -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é»ØÄꤵ¤ì¤¿°ú¿ô¤ò»ÈÍѤ·¤Æ¥³¥ó¥Ñ¥¤¥ë¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¥³¡¼¥É¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); -+.fl -+int rc = javac.run(null, null, null, args); -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤Î¾ì¹ç¡¢É¸½à½ÐÎÏ¥¹¥È¥ê¡¼¥à¤Ë¤¹¤Ù¤Æ¤Î¿ÇÃÇ¥á¥Ã¥»¡¼¥¸¤¬½ñ¤½Ð¤µ¤ì¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤¿\f3javac\fP¤¬ÊÖ¤¹¤Î¤ÈƱ¤¸½ªÎ»¥³¡¼¥É¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f2javax.tools.JavaCompiler\fP¥¤¥ó¥¿¥Õ¥§¡¼¥¹¾å¤Î¾¤Î¥á¥½¥Ã¥É¤ò»ÈÍѤ¹¤ë¤È¡¢¿ÇÃÇ¥á¥Ã¥»¡¼¥¸¤Î½èÍý¤ä¥Õ¥¡¥¤¥ë¤ÎÆɼè¤ê¸µ/½ñ¹þ¤ßÀè¤ÎÀ©¸æ¤Ê¤É¤ò¹Ô¤¨¤Þ¤¹¡£ -+.LP -+.SS -+µì¼°¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹ -+.LP -+.LP -+\f3Ãí°Õ:\fP ¤³¤ÎAPI¤Ï¡¢²¼°Ì¸ß´¹À¤ò³ÎÊݤ¹¤ë¤¿¤á¤Ë¤Î¤ß»Ä¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¿·¤·¤¤¥³¡¼¥É¤Ç¤Ï¡¢É¬¤ºÁ°½Ò¤ÎJava Compiler API¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+\f2com.sun.tools.javac.Main\fP¥¯¥é¥¹¤Ë¤Ï¡¢¥×¥í¥°¥é¥àÆ⤫¤é¥³¥ó¥Ñ¥¤¥é¤ò¸Æ¤Ó½Ð¤¹¤¿¤á¤Îstatic¥á¥½¥Ã¥É¤¬2¤ÄÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤é¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+public static int compile(String[] args); -+.fl -+public static int compile(String[] args, PrintWriter out); -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f2args\fP¥Ñ¥é¥á¡¼¥¿¤Ï¡¢javac¥×¥í¥°¥é¥à¤ËÄ̾ïÅϤµ¤ì¤ëǤ°Õ¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£¤½¤Î³µÍפˤĤ¤¤Æ¤Ï¡¢Á°½Ð¤Î·Á¼°¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+\f2out\fP¥Ñ¥é¥á¡¼¥¿¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Î¿ÇÃÇ¥á¥Ã¥»¡¼¥¸¤Î½ÐÎÏÀè¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+.LP -+Ìá¤êÃͤϡ¢\f3javac\fP¤Î½ªÎ»ÃͤÈƱ¤¸¤Ç¤¹¡£ -+.LP -+.LP -+̾Á°¤¬\f2com.sun.tools.javac\fP¤Ç»Ï¤Þ¤ë¥Ñ¥Ã¥±¡¼¥¸(Èó¸ø¼°¤Ë¤Ï\f2com.sun.tools.javac\fP¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤È¤·¤ÆÃΤé¤ì¤ë)¤Ë´Þ¤Þ¤ì¤ë¤½¤Î¾¤Î¥¯¥é¥¹¤ä¥á¥½¥Ã¥É¤Ï¡¢¤É¤ì¤â´°Á´¤ËÆâÉôÍѤǤ¢¤ê¡¢¤¤¤Ä¤Ç¤âÊѹ¹¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SH "Îã" -+.LP -+.SS -+´Êñ¤Ê¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ë -+.LP -+.LP -+\f2Hello.java\fP¤È¤¤¤¦¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ç¡¢\f3greetings.Hello\fP¤È¤¤¤¦Ì¾Á°¤Î¥¯¥é¥¹¤òÄêµÁ¤·¤Æ¤¤¤ë¤È¤·¤Þ¤¹¡£\f2greetings\fP¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎξÊý¤¬¤¢¤ë¥Ñ¥Ã¥±¡¼¥¸¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ç¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î¤¹¤°²¼¤Ë¤¢¤ê¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢¤³¤ÎÎã¤Ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤ò»ÈÍѤǤ¤Þ¤¹¡£¤Þ¤¿¡¢\f3\-d\fP¤ò»ÈÍѤ·¤ÆÊ̤νÐÎÏÀè¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤹ¤ëɬÍפ⤢¤ê¤Þ¤»¤ó¡£ -+.LP -+.nf -+\f3 -+.fl -+% \fP\f3ls\fP -+.fl -+greetings/ -+.fl -+% \f3ls greetings\fP -+.fl -+Hello.java -+.fl -+% \f3cat greetings/Hello.java\fP -+.fl -+package greetings; -+.fl -+ -+.fl -+public class Hello { -+.fl -+ public static void main(String[] args) { -+.fl -+ for (int i=0; i < args.length; i++) { -+.fl -+ System.out.println("Hello " + args[i]); -+.fl -+ } -+.fl -+ } -+.fl -+} -+.fl -+% \f3javac greetings/Hello.java\fP -+.fl -+% \f3ls greetings\fP -+.fl -+Hello.class Hello.java -+.fl -+% \f3java greetings.Hello World Universe Everyone\fP -+.fl -+Hello World -+.fl -+Hello Universe -+.fl -+Hello Everyone -+.fl -+.fi -+ -+.LP -+.SS -+Ê£¿ô¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥³¥ó¥Ñ¥¤¥ë -+.LP -+.LP -+¼¡¤ÎÎã¤Ç¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸\f2greetings\fPÆâ¤Î¤¹¤Ù¤Æ¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% \fP\f3ls\fP -+.fl -+greetings/ -+.fl -+% \f3ls greetings\fP -+.fl -+Aloha.java GutenTag.java Hello.java Hi.java -+.fl -+% \f3javac greetings/*.java\fP -+.fl -+% \f3ls greetings\fP -+.fl -+Aloha.class GutenTag.class Hello.class Hi.class -+.fl -+Aloha.java GutenTag.java Hello.java Hi.java -+.fl -+.fi -+ -+.LP -+.SS -+¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Î»ØÄê -+.LP -+.LP -+¾å¤ÎÎã¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¤¦¤Á1¤Ä¤òÊѹ¹¤·¡¢Êѹ¹¸å¤Î¥Õ¥¡¥¤¥ë¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% \fP\f3pwd\fP -+.fl -+/examples -+.fl -+% \f3javac greetings/Hi.java\fP -+.fl -+.fi -+ -+.LP -+.LP -+\f2greetings.Hi\fP¤Ï¡¢\f2greetings\fP¥Ñ¥Ã¥±¡¼¥¸Æâ¤Î¾¤Î¥¯¥é¥¹¤ò»²¾È¤·¤Æ¤¤¤ë¤¿¤á¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¤³¤ì¤é¤Î¥¯¥é¥¹¤òõ¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¾å¤ÎÎã¤Ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤¬¡¢¥Ñ¥Ã¥±¡¼¥¸¡¦¥Ç¥£¥ì¥¯¥È¥ê¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤ÈƱ¤¸¤Ç¤¢¤ë¤¿¤á¡¢¥³¥ó¥Ñ¥¤¥ë¤ÏÀµ¾ï¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¤·¤«¤·¡¢¸½ºß¤É¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¤¤ë¤«¤Ë´Ø·¸¤Ê¤¯¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¤ò¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ï¡¢¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Ë\f2/examples\fP¤òÄɲ乤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Ë¥¨¥ó¥È¥ê¤òÄɲ乤ë¤Ë¤Ï¡¢\f3CLASSPATH\fP¤òÀßÄꤹ¤ëÊýË¡¤â¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤³¤Ç¤Ï\f3\-classpath\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% \fP\f3javac \-classpath /examples /examples/greetings/Hi.java\fP -+.fl -+.fi -+ -+.LP -+.LP -+ºÆÅÙ\f2greetings.Hi\fP¤òÊѹ¹¤·¤Æ¥Ð¥Ê¡¼¡¦¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ò»ÈÍѤ¹¤ë¤è¤¦¤Ë¤·¤¿¾ì¹ç¤Ï¡¢¤³¤Î¥Ð¥Ê¡¼¡¦¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤â¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤òÄ̤¸¤Æ¥¢¥¯¥»¥¹¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% \fP\f3javac \-classpath /examples:/lib/Banners.jar \\ -+.fl -+ /examples/greetings/Hi.java\fP -+.fl -+.fi -+ -+.LP -+.LP -+\f2greetings\fPÆâ¤Î¥¯¥é¥¹¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¢\f2greetings\fP¤È¡¢¤½¤ì¤¬»ÈÍѤ¹¤ë¥¯¥é¥¹¤ÎξÊý¤Ë¥¢¥¯¥»¥¹¤Ç¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% \fP\f3java \-classpath /examples:/lib/Banners.jar greetings.Hi\fP -+.fl -+.fi -+ -+.LP -+.SS -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎʬΥ -+.LP -+.LP -+ÆäËÂ絬ÌÏ¥×¥í¥¸¥§¥¯¥È¤Î¾ì¹ç¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òÊÌ¡¹¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¯¤ÈÊØÍø¤Ê¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î½ÐÎÏÀè¤òÊ̤˻ØÄꤹ¤ë¤Ë¤Ï¡¢\f3\-d\fP¤ò»ÈÍѤ·¤Þ¤¹¡£¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ï¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¡¦¥Ñ¥¹¤Ë¤Ï¤Ê¤¤¤Î¤Ç¡¢\f3\-sourcepath\fP¤ò»ÈÍѤ·¤Æ¡¢¥³¥ó¥Ñ¥¤¥é¤¬¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% \fP\f3ls\fP -+.fl -+classes/ lib/ src/ -+.fl -+% \f3ls src\fP -+.fl -+farewells/ -+.fl -+% \f3ls src/farewells\fP -+.fl -+Base.java GoodBye.java -+.fl -+% \f3ls lib\fP -+.fl -+Banners.jar -+.fl -+% \f3ls classes\fP -+.fl -+% \f3javac \-sourcepath src \-classpath classes:lib/Banners.jar \\ -+.fl -+ src/farewells/GoodBye.java \-d classes\fP -+.fl -+% \f3ls classes\fP -+.fl -+farewells/ -+.fl -+% \f3ls classes/farewells\fP -+.fl -+Base.class GoodBye.class -+.fl -+.fi -+ -+.LP -+.LP -+\f3Ãí°Õ:\fP ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¤Ï\f2src/farewells/Base.java\fP¤ò»ØÄꤷ¤Æ¤¤¤Þ¤»¤ó¤¬¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤â¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¼«Æ°¥³¥ó¥Ñ¥¤¥ë¤ò´Æ»ë¤¹¤ë¤Ë¤Ï¡¢\f3\-verbose\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.SS -+¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤ÎÎã -+.LP -+.LP -+¼¡¤ÎÎã¤Ï¡¢1.6 VM¾å¤ÇÆ°ºî¤¹¤ë¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¤Ë\f3javac\fP¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% \fP\f3javac \-source 1.6 \-target 1.6 \-bootclasspath jdk1.6.0/lib/rt.jar \\ -+.fl -+ \-extdirs "" OldCode.java\fP -+.fl -+.fi -+ -+.LP -+.LP -+\f2\-source 1.6\fP¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¡¢\f2OldCode.java\fP¤Î¥³¥ó¥Ñ¥¤¥ë¤Ë¤Ï¥Ð¡¼¥¸¥ç¥ó1.6(¤Þ¤¿¤Ï6)¤ÎJava¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£\f3\-target 1.6\fP¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¡¢1.6 VM¤È¸ß´¹À¤Î¤¢¤ë¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢\f3\-target\fP¥ª¥×¥·¥ç¥ó¤ÎÃͤÏ\f3\-source\fP¥ª¥×¥·¥ç¥ó¤ÎÃͤˤʤê¤Þ¤¹¡£¤³¤ÎÎã¤Ç¤Ï¡¢\f3\-target\fP¥ª¥×¥·¥ç¥ó¤ò¾Êά¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f3\-bootclasspath\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢Å¬ÀڤʥС¼¥¸¥ç¥ó¤Î¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹(\f2rt.jar\fP¥é¥¤¥Ö¥é¥ê)¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤Ã¤Æ¼¡¤Î·Ù¹ð¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+% \fP\f3javac \-source 1.6 OldCode.java\fP -+.fl -+warning: [options] bootstrap class path not set in conjunction with \-source 1.6 -+.fl -+.fi -+ -+.LP -+.LP -+ŬÀڤʥС¼¥¸¥ç¥ó¤Î¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¸Å¤¤¸À¸ì»ÅÍÍ(¤³¤ÎÎã¤Ç¤Ï¡¢¥Ð¡¼¥¸¥ç¥ó1.6¤ÎJava¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì)¤ò¿·¤·¤¤¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤ÈÁȤ߹礻¤Æ»ÈÍѤ·¤Þ¤¹¡£¤½¤Î·ë²Ì¡¢Â¸ºß¤·¤Ê¤¤¥á¥½¥Ã¥É¤Ø¤Î»²¾È¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ë¤¿¤á¡¢¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤¬¸Å¤¤¥×¥é¥Ã¥È¥Õ¥©¡¼¥à(¤³¤Î¾ì¹ç¤ÏJava SE 6)¤ÇÆ°ºî¤·¤Ê¤¤²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+.na -+\f2javac¥¬¥¤¥É\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/javac/index.html -+.TP 2 -+o -+java(1) \- Java¥¢¥×¥ê¥±¡¼¥·¥ç¥óµ¯Æ°¥Ä¡¼¥ë -+.TP 2 -+o -+jdb(1) \- Java¥Ç¥Ð¥Ã¥¬ -+.TP 2 -+o -+javah(1) \- C¥Ø¥Ã¥À¡¼¤È¥¹¥¿¥Ö¡¦¥Õ¥¡¥¤¥ë¡¦¥¸¥§¥Í¥ì¡¼¥¿ -+.TP 2 -+o -+javap(1) \- ¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ëµÕ¥¢¥»¥ó¥Ö¥é -+.TP 2 -+o -+javadoc(1) \- API¥É¥¥å¥á¥ó¥È¡¦¥¸¥§¥Í¥ì¡¼¥¿ -+.TP 2 -+o -+jar(1) \- JAR¥¢¡¼¥«¥¤¥Ö¡¦¥Ä¡¼¥ë -+.TP 2 -+o -+.na -+\f2Java³ÈÄ¥µ¡Ç½¥Õ¥ì¡¼¥à¥ï¡¼¥¯\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/extensions/index.html -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/javadoc.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/javadoc.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,4 +19,4179 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH javadoc 1 "07 May 2011" -+.TH javadoc 1 "05 Jul 2012" -+.SH "̾Á°" -+javadoc \- Java API¥É¥¥å¥á¥ó¥È¡¦¥¸¥§¥Í¥ì¡¼¥¿ -+.LP -+Java¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤«¤é¡¢API¥É¥¥å¥á¥ó¥È¤ÎHTML¥Ú¡¼¥¸¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥É¥¥å¥á¥ó¥È¤Ç¾Ò²ð¤µ¤ì¤Æ¤¤¤ëJavadoc¤ÎÎã¤Ï¡¢Solaris¤ò»ÈÍѤ·¤¿¾ì¹ç¤Î¤â¤Î¤Ç¤¹¡£ -+.SH "·Á¼°" -+.LP -+\f4javadoc\fP\f2\ [\ \fP\f2options\fP\f2\ ]\ [\ packagenames\ ]\ [\ sourcefilenames\ ]\ [\ \-subpackages\fP\ \f2pkg1:pkg2:...\fP\f2\ ]\ [\ \fP\f2@argfiles\fP\f2\ ]\fP -+.LP -+°ú¿ô¤ò»ØÄꤹ¤ë½ç½ø¤ÏǤ°Õ¤Ç¤¹¡£Javadoc¥Ä¡¼¥ë¤Ç¤Î¡¢½èÍýÂоݤÎ\f2.java\fP¥Õ¥¡¥¤¥ë¤ò·èÄꤹ¤ëÊýË¡¤Î¾ÜºÙ¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î½èÍý¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RS 3 -+.TP 3 -+options -+¤³¤Î¥É¥¥å¥á¥ó¥È¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£Javadoc¥ª¥×¥·¥ç¥ó¤Îɸ½àŪ¤Ê»ÈÍÑÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢»ÈÍÑÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+packagenames -+¶õÇòʸ»ú¤Ç¶èÀÚ¤é¤ì¤¿°ìÏ¢¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2java.lang\ java.lang.reflect\ java.awt\fP¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£¥É¥¥å¥á¥ó¥È²½¤¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤ò¸ÄÊ̤˻ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥ï¥¤¥ë¥É¥«¡¼¥É¤Ï»ÈÍÑÉԲĤǤ¹¡£ºÆµ¢Åª½èÍý¤Î¤¿¤á¤Ë¤Ï¡¢\-subpackages¤ò»ÈÍѤ·¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢\f2\-sourcepath\fP¤ò»ÈÍѤ·¤Æ¤³¤ì¤é¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ò¸¡º÷¤·¤Þ¤¹¡£Îã \- 1¤Ä°Ê¾å¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î¥É¥¥å¥á¥ó¥È²½¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+sourcefilenames -+¶õÇòʸ»ú¤Ç¶èÀÚ¤é¤ì¤¿°ìÏ¢¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤Ç¤¹¡£³Æ¥Õ¥¡¥¤¥ë¤Ï¡¢¥Ñ¥¹¤Ç»Ï¤Þ¤ê¤Þ¤¹¡£¥¢¥¹¥¿¥ê¥¹¥¯(*)¤Ê¤É¤Î¥ï¥¤¥ë¥É¥«¡¼¥É¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤¬½èÍý¤¹¤ë¤Î¤Ï¡¢¥Õ¥¡¥¤¥ë̾¤¬¡Ö.java¡×¤È¤¤¤¦³ÈÄ¥»Ò¤Ç½ª¤ï¤ê¡¢¤½¤Î³ÈÄ¥»Ò¤ò½ü¤¤¤¿Ì¾Á°¤¬¼ÂºÝ¤Ë͸ú¤Ê¥¯¥é¥¹Ì¾¤Ç¤¢¤ë¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤Ç¤¹(Java¸À¸ì»ÅÍͤò»²¾È)¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥Ï¥¤¥Õ¥ó¤ò´Þ¤à̾Á°(\f2X\-Buffer\fP¤Ê¤É)¤ä¡¢¤½¤Î¾¤Î̵¸ú¤Êʸ»ú¤ò´Þ¤à̾Á°¤òÉÕ¤±¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤½¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ò¥É¥¥å¥á¥ó¥È²½¤ÎÂоݤ«¤é½ü³°¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤ä¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤Î¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤ÎÁ°¤Ë»ØÄꤷ¤¿¥Ñ¥¹¤Ë¤è¤Ã¤Æ¡¢javadoc¤¬¤½¤Î¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤ë¾ì½ê¤¬·è¤Þ¤ê¤Þ¤¹¡£(Javadoc¥Ä¡¼¥ë¤Ï¡¢¤³¤ì¤é¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤ò¸¡º÷¤¹¤ë¤È¤¤Ë\f2\-sourcepath\fP¤ò»ÈÍÑ\f2¤·¤Þ¤»¤ó\fP¡£)ÁêÂХѥ¹¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òµ¯ÅÀ¤È¤¹¤ë¤¿¤á¡¢\f2Button.java\fP¤òÅϤ¹¤³¤È¤Ï¡¢\f2./Button.java\fP¤òÅϤ¹¤³¤È¤ÈƱ¤¸¤Ç¤¹¡£¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤ò¥ï¥¤¥ë¥É¥«¡¼¥É¤ò´Þ¤à¥Õ¥ë¥Ñ¥¹¤Ç»ØÄꤹ¤ë¤È¡¢\f2/home/src/java/awt/Graphics*.java\fP¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£Îã \- 1¤Ä°Ê¾å¤Î¥¯¥é¥¹¤Î¥É¥¥å¥á¥ó¥È²½¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢Îã \- ¥Ñ¥Ã¥±¡¼¥¸¤È¥¯¥é¥¹¤Î¥É¥¥å¥á¥ó¥È²½¤Î¤è¤¦¤Ë¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤È¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤òº®ºß¤µ¤»¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+\-subpackages pkg1:pkg2:... -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤«¤é»ØÄꤵ¤ì¤¿¥Ñ¥Ã¥±¡¼¥¸¤ª¤è¤Ó¤½¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸Æâ¤ËºÆµ¢Åª¤Ë¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤·¤Þ¤¹¡£¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Þ¤¿¤Ï¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ -+.TP 3 -+@argfiles -+Javadoc¥ª¥×¥·¥ç¥ó¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¡¢¤ª¤è¤Ó¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤òǤ°Õ¤Î½ç½ø¤Çʤ٤¿¥ê¥¹¥È¤¬´Þ¤Þ¤ì¤ë1¤Ä°Ê¾å¤Î¥Õ¥¡¥¤¥ë¤Ç¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¤Ï¡¢¥ï¥¤¥ë¥É¥«¡¼¥É(*)¤ª¤è¤Ó\f2\-J\fP¥ª¥×¥·¥ç¥ó¤Ï»ØÄê¤Ç¤¤Þ¤»¤ó¡£ -+.RE -+.SH "ÀâÌÀ" -+.LP -+\f3Javadoc\fP¥Ä¡¼¥ë¤Ï¡¢°ìÏ¢¤ÎJava¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ë¤¢¤ëÀë¸À¤ª¤è¤Ó¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò²òÀϤ·¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ïpublic¥¯¥é¥¹¡¢protected¥¯¥é¥¹¡¢¥Í¥¹¥È¤µ¤ì¤¿¥¯¥é¥¹(ƿ̾¤ÎÆâÉô¥¯¥é¥¹¤Ï½ü¤¯)¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥á¥½¥Ã¥É¡¢¤ª¤è¤Ó¥Õ¥£¡¼¥ë¥É¤Ë¤Ä¤¤¤Æµ½Ò¤·¤¿°ìÏ¢¤ÎHTML¥Ú¡¼¥¸¤òÀ¸À®¤·¤Þ¤¹¡£¤Þ¤¿¡¢API(¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥×¥í¥°¥é¥ß¥ó¥°¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹)¥É¥¥å¥á¥ó¥È¤ÎÀ¸À®¤ä¡¢°ìÏ¢¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¼ÂÁõ¥É¥¥å¥á¥ó¥È¤ÎÀ¸À®¤Ë»ÈÍѤǤ¤Þ¤¹¡£ -+.LP -+Javadoc¥Ä¡¼¥ë¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸Á´ÂΡ¢¸Ä¡¹¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¡¢¤Þ¤¿¤Ï¤½¤ÎξÊý¤ËÂФ·¤Æ¼Â¹Ô¤Ç¤¤Þ¤¹¡£¥Ñ¥Ã¥±¡¼¥¸Á´ÂΤΥɥ¥å¥á¥ó¥È²½¤ò¹Ô¤¦¤Ë¤Ï¡¢\f2\-subpackages\fP¤ò»ÈÍѤ·¤ÆºÇ¾å°Ì¥Ç¥£¥ì¥¯¥È¥ê¤«¤é²¼Êý¤ËºÆµ¢Åª¤Ë¤¿¤É¤ë¤«¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ÎÌÀ¼¨Åª¤Ê¥ê¥¹¥È¤òÅϤ·¤Þ¤¹¡£¸Ä¡¹¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥É¥¥å¥á¥ó¥È²½¤ò¹Ô¤¦¤Ë¤Ï¡¢¥½¡¼¥¹(.\f2.java\fP)¥Õ¥¡¥¤¥ë̾¤Î¥ê¥¹¥È¤òÅϤ·¤Þ¤¹¡£¶ñÂÎŪ¤ÊÎã¤Ï¡¢¤³¤Î¥É¥¥å¥á¥ó¥È¤ÎºÇ¸å¤Ë¾Ò²ð¤·¤Þ¤¹¡£¼¡¤Ë¡¢Javadoc¤Ë¤è¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î½èÍý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ -+.SS -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î½èÍý -+.LP -+Javadoc¥Ä¡¼¥ë¤Ï¡¢ËöÈø¤¬¡Ö\f2.java\fP¡×¤Î¥Õ¥¡¥¤¥ë°Ê³°¤Ë¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Çµ½Ò¤µ¤ì¤Æ¤¤¤ë¾¤Î¥Õ¥¡¥¤¥ë¤â½èÍý¤·¤Þ¤¹¡£¸Ä¡¹¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤òÌÀ¼¨Åª¤ËÅϤ·¤ÆJavadoc¥Ä¡¼¥ë¤ò¼Â¹Ô¤¹¤ë¾ì¹ç¡¢¤É¤Î\f2.java\fP¥Õ¥¡¥¤¥ë¤ò½èÍý¤¹¤ë¤«¤òÀµ³Î¤Ë»ØÄê¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢Â¿¤¯¤Î³«È¯¼Ô¤Ï¤³¤ÎÊýË¡¤Ç¤Ïºî¶È¤·¤Þ¤»¤ó¡£¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÅϤ¹¤Û¤¦¤¬´Êñ¤À¤«¤é¤Ç¤¹¡£¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤òÌÀ¼¨Åª¤Ë»ØÄꤷ¤Ê¤¯¤Æ¤â¡¢Javadoc¥Ä¡¼¥ë¤Ï3¤Ä¤ÎÊýË¡¤Ç¼Â¹Ô¤Ç¤¤Þ¤¹¡£¤½¤ì¤Ï¡¢(1)¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÅϤ¹¡¢(2)\f2\-subpackages\fP¤ò»ÈÍѤ¹¤ë¡¢(3)¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤Ç¥ï¥¤¥ë¥É¥«¡¼¥É¤ò»ÈÍѤ¹¤ë(\f2*.java\fP)¡¢¤È¤¤¤¦ÊýË¡¤Ç¤¹¡£¤³¤ì¤é¤Î¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤¬\f2.java\fP¥Õ¥¡¥¤¥ë¤Î½èÍý¤ò¹Ô¤¦¤Î¤Ï¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤¬¼¡¤Î¤¹¤Ù¤Æ¤ÎÍ×·ï¤òËþ¤¿¤¹¾ì¹ç¤Î¤ß¤Ç¤¹¡£ -+.RS 3 -+.TP 2 -+o -+ÀÜÈø¼¡Ö\f2.java\fP¡×¤ò½ü¤¤¤¿Ì¾Á°¤¬¼ÂºÝ¤Ë͸ú¤Ê¥¯¥é¥¹Ì¾¤Ç¤¢¤ë¾ì¹ç(͸ú¤Êʸ»ú¤Ë¤Ä¤¤¤Æ¤Ï¡¢Java¸À¸ì»ÅÍͤò»²¾È) -+.TP 2 -+o -+¥½¡¼¥¹¡¦¥Ä¥ê¡¼¤Î¥ë¡¼¥È¤«¤éÁêÂÐŪ¤Ê¥Ç¥£¥ì¥¯¥È¥ê¡¦¥Ñ¥¹¤¬¡¢¶èÀÚ¤êʸ»ú¤ò¥É¥Ã¥È¤ËÊÑ´¹¤¹¤ë¤È¡¢¼ÂºÝ¤Ë͸ú¤Ê¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Ç¤¢¤ë¾ì¹ç -+.TP 2 -+o -+packageʸ¤Ë͸ú¤Ê¥Ñ¥Ã¥±¡¼¥¸Ì¾(Á°²Õ¾ò½ñ¤¤Ç»ØÄê)¤¬´Þ¤Þ¤ì¤ë¾ì¹ç -+.RE -+.LP -+\f3¥ê¥ó¥¯¤Î½èÍý\fP \- Javadoc¥Ä¡¼¥ë¤Ï¡¢½èÍý¤Î¼Â¹ÔÃæ¤Ë¡¢¤½¤Î¼Â¹Ô¤Ç¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¤ª¤è¤Ó¥á¥ó¥Ð¡¼¤Î̾Á°¤ËÂФ·¤Æ¡¢¼«Æ°Åª¤ËÁê¸ß»²¾È¥ê¥ó¥¯¤òÄɲä·¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ê¥ê¥ó¥¯¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¾ì½ê¤ËÄɲ䵤ì¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+Àë¸À(Ìá¤êÃͤη¿¡¢°ú¿ô¤Î·¿¡¢¥Õ¥£¡¼¥ë¥É¤Î·¿) -+.TP 2 -+o -+\f2@see\fP¥¿¥°¤«¤éÀ¸À®¤µ¤ì¤¿¡Ö´ØÏ¢¹àÌܡץ»¥¯¥·¥ç¥ó -+.TP 2 -+o -+\f2{@link}\fP¥¿¥°¤«¤éÀ¸À®¤µ¤ì¤¿¥¤¥ó¥é¥¤¥ó¡¦¥Æ¥¥¹¥È -+.TP 2 -+o -+\f2@throws\fP¥¿¥°¤«¤éÀ¸À®¤µ¤ì¤¿Îã³°¤Î̾Á° -+.TP 2 -+o -+¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥á¥ó¥Ð¡¼¤ËÂФ¹¤ë¡ÖÄêµÁ¡×¥ê¥ó¥¯¤È¡¢¥¯¥é¥¹¤Î¥á¥ó¥Ð¡¼¤ËÂФ¹¤ë¡Ö¥ª¡¼¥Ð¡¼¥é¥¤¥É¡×¥ê¥ó¥¯ -+.TP 2 -+o -+¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¤ª¤è¤Ó¥á¥ó¥Ð¡¼¤ò¥ê¥¹¥È¤·¤Æ¤¤¤ë³µÍ×ɽ -+.TP 2 -+o -+¥Ñ¥Ã¥±¡¼¥¸¤ª¤è¤Ó¥¯¥é¥¹¤Î·Ñ¾µ¥Ä¥ê¡¼ -+.TP 2 -+o -+º÷°ú -+.RE -+.LP -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤Ê¤«¤Ã¤¿¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¤Î´û¸¤Î¥Æ¥¥¹¥È(Ê̤ËÀ¸À®¤·¤¿¥Æ¥¥¹¥È)¤ËÂФ·¤Æ¥Ï¥¤¥Ñ¡¼¥ê¥ó¥¯¤òÄɲ乤ë¤Ë¤Ï¡¢\f2\-link\fP¤ª¤è¤Ó\f2\-linkoffline\fP¥ª¥×¥·¥ç¥ó¤òÍøÍѤǤ¤Þ¤¹¡£ -+.LP -+\f3¤½¤Î¾¤Î½èÍý¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ\fP \- Javadoc¥Ä¡¼¥ë¤Ï¡¢¼Â¹Ô¤¹¤ë¤¿¤Ó¤Ë1¤Ä¤Î´°Á´¤Ê¥É¥¥å¥á¥ó¥È¤òºîÀ®¤·¤Þ¤¹¡£¥É¥¥å¥á¥ó¥È¤òÄɲÃÀ¸À®¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤Ä¤Þ¤ê¡¢Javadoc¥Ä¡¼¥ë¤Î°ÊÁ°¤Î¼Â¹Ô·ë²Ì¤ò½¤Àµ¤·¤¿¤ê¡¢¤½¤ÎÆâÍƤò\f2ľÀÜ\fPÁȤßÆþ¤ì¤¿¤ê¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤¿¤À¤·¡¢Á°½Ò¤Î¤è¤¦¤Ë¡¢Â¾¤Î¼Â¹Ô·ë²Ì¤Ë¥ê¥ó¥¯¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤¹¡£ -+.LP -+¼ÂÁõ¾å¤ÎÍýͳ¤«¤é¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¥¸¥ç¥Ö¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ëjava¥³¥ó¥Ñ¥¤¥é¤òɬÍפȤ·¡¢java¥³¥ó¥Ñ¥¤¥é¤Ë°Í¸¤·¤Æ¤¤¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢\f2javac\fP¤Î°ìÉô¤ò¸Æ¤Ó½Ð¤·¤ÆÀë¸À¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹¤¬¡¢¥á¥ó¥Ð¡¼¤Î¼ÂÁõ¤Ï̵»ë¤·¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥¯¥é¥¹³¬Áؤò´Þ¤à¥¯¥é¥¹¤ÎËÉÙ¤ÊÆâÉôɽ¸½¤È¥¯¥é¥¹¤Î¡Ö»ÈÍѡ״ط¸¤ò¹½ÃÛ¤·¡¢¤½¤Î¾ðÊ󤫤éHTML¤òÀ¸À®¤·¤Þ¤¹¡£¤µ¤é¤Ë¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¥½¡¼¥¹¡¦¥³¡¼¥É¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤«¤é¡¢¥æ¡¼¥¶¡¼¤ÎÄ󶡤·¤¿¥É¥¥å¥á¥ó¥È¤â¼èÆÀ¤·¤Þ¤¹¡£ -+.LP -+¼ÂºÝ¤Ë¤Ï¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¥á¥½¥Ã¥ÉËÜÂΤò»ý¤¿¤Ê¤¤½ã¿è¤Ê¥¹¥¿¥Ö¡¦¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë\f2.java\fP¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¤â¼Â¹Ô¤Ç¤¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢API¤ÎºîÀ®»þ¤Ë¤Ï¡¢¼ÂÁõ¤òµ½Ò¤¹¤ëÁ°¤ÎÀ߷פÎÁᤤÃʳ¬¤Ç¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤òµ½Ò¤·¤Æjavadoc¥Ä¡¼¥ë¤ò¼Â¹Ô¤Ç¤¤Þ¤¹¡£ -+.LP -+¥³¥ó¥Ñ¥¤¥é¤Ë°Í¸¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢HTML½ÐÎϤϡ¢¼ÂºÝ¤Î¼ÂÁõ¤ËÀµ³Î¤ËÂбþ¤·¤Þ¤¹¡£¼ÂºÝ¤Î¼ÂÁõ¤Ï¡¢ÌÀ¼¨Åª¤Ê¥½¡¼¥¹¡¦¥³¡¼¥É¤Ë¤Ç¤Ï¤Ê¤¯¡¢°ÅÌۤΥ½¡¼¥¹¡¦¥³¡¼¥É¤Ë°Í¸¤¹¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢\f2.class\fP¥Õ¥¡¥¤¥ë¤Ë¤Ï¸ºß¤¹¤ë¤¬¥½¡¼¥¹¡¦¥³¡¼¥É¤Ë¤Ï¸ºß¤·¤Ê¤¤¥Ç¥Õ¥©¥ë¥È¡¦¥³¥ó¥¹¥È¥é¥¯¥¿(Java¸À¸ì»ÅÍͤò»²¾È)¤ò¥É¥¥å¥á¥ó¥È²½¤·¤Þ¤¹¡£ -+.LP -+Ä̾Javadoc¥Ä¡¼¥ë¤Ç¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥³¡¼¥É¤¬ÉÔ´°Á´¤Þ¤¿¤Ï¥¨¥é¡¼¤ò´Þ¤ó¤Ç¤¤¤ë¾ì¹ç¤Ç¤â¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤Ç¤¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢¥Ç¥Ð¥Ã¥°¤ä¥È¥é¥Ö¥ë¥·¥å¡¼¥Æ¥£¥ó¥°¤ò´°Î»¤¹¤ëÁ°¤Ë¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2Java¸À¸ì»ÅÍÍ\fP¤Ë¤è¤ë¤È¡¢Ãê¾Ý¥á¥½¥Ã¥É¤ò´Þ¤à¥¯¥é¥¹¤Ï¡¢¤½¤ì¼«ÂΤòÃê¾Ý¤È¤·¤ÆÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£javac¥³¥ó¥Ñ¥¤¥é¤Ï¤³¤Î¥¨¥é¡¼¤ò¸¡½Ð¤¹¤ë¤ÈÄä»ß¤·¤Þ¤¹¤¬¡¢Javadoc¥Ä¡¼¥ë¤Ï¤³¤Î¥Á¥§¥Ã¥¯¤ò¹Ô¤ï¤º¡¢·Ù¹ð¤ò½Ð¤µ¤º¤Ë½èÍý¤ò³¹Ô¤·¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î´ðËÜŪ¤Ê¥Á¥§¥Ã¥¯¤ò¹Ô¤¤¤Þ¤¹¡£¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò¤è¤ê¾Ü¤·¤¯¥Á¥§¥Ã¥¯¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢DocCheck¥É¥Ã¥¯¥ì¥Ã¥È¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+Javadoc¥Ä¡¼¥ë¤Ï¡¢¥É¥¥å¥á¥ó¥È¤ÎÆâÉô¹½Â¤¤ò¹½ÃÛ¤¹¤ëºÝ¡¢»²¾È¥¯¥é¥¹¤ò¤¹¤Ù¤Æ¥í¡¼¥É¤·¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¡¢³ÈÄ¥µ¡Ç½¡¢¤Þ¤¿¤Ï¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¤Ë¤«¤«¤ï¤é¤º¡¢¤¹¤Ù¤Æ¤Î»²¾È¥¯¥é¥¹¤ò¸¡º÷¤Ç¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥¯¥é¥¹¤Î¸¡º÷ÊýË¡\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/findingclasses.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£Ä̾ºîÀ®¤¹¤ë¥¯¥é¥¹¤Ï¡¢³ÈÄ¥µ¡Ç½¤È¤·¤Æ¥í¡¼¥É¤¹¤ë¤«¡¢Javadoc¥Ä¡¼¥ë¤Î¥¯¥é¥¹¡¦¥Ñ¥¹Æâ¤ËÃÖ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ -+.SS -+Javadoc¤Î¥É¥Ã¥¯¥ì¥Ã¥È -+.LP -+Javadoc¥Ä¡¼¥ë¤Î½ÐÎϤÎÆâÍƤȷÁ¼°¤Ï¡¢¥É¥Ã¥¯¥ì¥Ã¥È¤ò»ÈÍѤ·¤Æ¥«¥¹¥¿¥Þ¥¤¥º¤Ç¤¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ë¤Ï¡¢É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¤È¸Æ¤Ð¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤Î¡ÖÁȹþ¤ß¡×¥É¥Ã¥¯¥ì¥Ã¥È¤¬¤¢¤ê¤Þ¤¹¡£É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¤Ï¡¢HTML·Á¼°¤ÎAPI¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤·¤Þ¤¹¡£É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¤ò½¤Àµ¤Þ¤¿¤Ï¥µ¥Ö¥¯¥é¥¹²½¤¹¤ë¤³¤È¤ä¡¢HTML¡¢XML¡¢MIF¡¢RTF¤Ê¤É¤Î¹¥¤ß¤Î½ÐÎÏ·Á¼°¤òÀ¸À®¤¹¤ëÆȼ«¤Î¥É¥Ã¥¯¥ì¥Ã¥È¤òµ½Ò¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¥É¥Ã¥¯¥ì¥Ã¥È¤È¤½¤Î»ÈÍÑÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢¼¡¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RS 3 -+.TP 2 -+o -+.na -+\f2Javadoc¤Î¥É¥Ã¥¯¥ì¥Ã¥È\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/index.html -+.TP 2 -+o -+\f2\-doclet\fP¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó -+.RE -+.LP -+\f2\-doclet\fP¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤Ç¥«¥¹¥¿¥à¡¦¥É¥Ã¥¯¥ì¥Ã¥È¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Îɸ½à¥É¥Ã¥¯¥ì¥Ã¥È¤ò»ÈÍѤ·¤Þ¤¹¡£javadoc¥Ä¡¼¥ë¤Ë¤Ï¡¢»ÈÍѤµ¤ì¤Æ¤¤¤ë¥É¥Ã¥¯¥ì¥Ã¥È¤Ë´Ø·¸¤Ê¤¯»ÈÍѤǤ¤ë¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¤Ç¤Ï¡¢¤³¤ì¤é¤Î¾¤Ë¡¢¤¤¤¯¤Ä¤«¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤¬Äɲ䵤ì¤Þ¤¹¡£¤É¤Á¤é¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤â¡¢¸å½Ò¤Î¥ª¥×¥·¥ç¥ó¤ÇÀâÌÀ¤·¤Þ¤¹¡£ -+.SS -+´ØÏ¢¥É¥¥å¥á¥ó¥È¤ª¤è¤Ó¥É¥Ã¥¯¥ì¥Ã¥È -+.RS 3 -+.TP 2 -+o -+.na -+\f2Javadoc¤Ë»Ü¤µ¤ì¤¿³ÈÄ¥µ¡Ç½\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/index.html \- Javadoc¤ÇÄɲ䵤줿²þÎÉÅÀ¤Î¾ÜºÙ¡£ -+.TP 2 -+o -+.na -+\f2Javadoc FAQ\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137483.html \- ÉÑÈˤ˴󤻤é¤ì¤ë¼ÁÌä¤ËÂФ¹¤ë²óÅú¡¢Javadoc´ØÏ¢¤Î¥Ä¡¼¥ë¤Ë¤Ä¤¤¤Æ¤Î¾ðÊ󡢤ª¤è¤Ó¥Ð¥°¤Î²óÈòÊýË¡¡£ -+.TP 2 -+o -+.na -+\f2How to Write Doc Comments for Javadoc\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html \- ¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Îµ½ÒÊýË¡¤Ë´Ø¤¹¤ëSun¤Îµ¬Ìó¡£ -+.TP 2 -+o -+.na -+\f2API»ÅÍͤòµ½Ò¤¹¤ë¤¿¤á¤ÎÍ×·ï\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-142372.html \- Java SE¥×¥é¥Ã¥È¥Õ¥©¡¼¥à»ÅÍͤòµ½Ò¤¹¤ëºÝ¤Ë»ÈÍѤµ¤ì¤¿É¸½àÍ×·ï¡£¤³¤Î¾ðÊó¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È·Á¼°¤ÇAPI»ÅÍͤòµ½Ò¤¹¤ë¾ì¹ç¤Ë¤â¡¢¤½¤Î¾¤Î·Á¼°¤Çµ½Ò¤¹¤ë¾ì¹ç¤Ë¤âÌòΩ¤Á¤Þ¤¹¡£¸¡¾Ú²Äǽ¤Ê¥¢¥µ¡¼¥·¥ç¥ó¤òËþ¤¿¤¹¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥Õ¥£¡¼¥ë¥É¡¢¤ª¤è¤Ó¥á¥½¥Ã¥É¤Ë¤Ä¤¤¤Æ¤ÎÍ×·ï¤òÄê¤á¤Æ¤¤¤Þ¤¹¡£ -+.TP 2 -+o -+.na -+\f2¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î»ÅÍÍ\fP @ -+.fi -+http://docs.oracle.com/javase/specs/ \- ¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î¥ª¥ê¥¸¥Ê¥ë»ÅÍͤˤĤ¤¤Æ¤Ï¡¢\f2Java Language Specification\fP (James Gosling¡¢Bill Joy¡¢Guy Steele¶¦Ãø)¤Î½éÈǤÎÂè18¾Ï¡¢Documentation Comments¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£(¤³¤Î¾Ï¤Ï¡¢Âè2ÈǤǤϺï½ü¤µ¤ì¤Þ¤·¤¿¡£) -+.TP 2 -+o -+.na -+\f2DocCheck¥É¥Ã¥¯¥ì¥Ã¥È\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-141437.html \- ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ëÆâ¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò¥Á¥§¥Ã¥¯¤·¡¢¸¡½Ð¤µ¤ì¤¿¥¨¥é¡¼¤äÉÔÀµ¤Î¥ì¥Ý¡¼¥È¤òÀ¸À®¤·¤Þ¤¹¡£Doc Check¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Î°ìÉô¤Ç¤¹¡£ -+.RE -+.SS -+ÍѸì -+.LP -+\f2¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È\fP¡¢\f2doc¥³¥á¥ó¥È\fP¡¢\f2¼çÀâÌÀ\fP¡¢\f2¥¿¥°\fP¡¢\f2¥Ö¥í¥Ã¥¯¡¦¥¿¥°\fP¡¢¤ª¤è¤Ó\f2¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°\fP¤ÎÍѸì¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ÇÀâÌÀ¤·¤Þ¤¹¡£¼¡¤Î¤½¤Î¾¤ÎÍѸì¤Ï¡¢Javadoc¥Ä¡¼¥ë¤Î¥³¥ó¥Æ¥¥¹¥È¤ÇÆÃÄê¤Î°ÕÌ£¤ò»ý¤Á¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+À¸À®¥É¥¥å¥á¥ó¥È(generated document) -+Javadoc¥Ä¡¼¥ë¤¬Java¥½¡¼¥¹¡¦¥³¡¼¥ÉÆâ¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤«¤éÀ¸À®¤·¤¿¥É¥¥å¥á¥ó¥È¤Î¤³¤È¤Ç¤¹¡£¥Ç¥Õ¥©¥ë¥È¤ÎÀ¸À®¥É¥¥å¥á¥ó¥È¤ÏHTML·Á¼°¤Ç¡¢É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.TP 3 -+̾Á°(name) -+Java¸À¸ì¤Ç½ñ¤«¤ì¤¿¥×¥í¥°¥é¥àÍ×ÁǤÎ̾Á°¡¢¤Ä¤Þ¤ê¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥Õ¥£¡¼¥ë¥É¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¤Þ¤¿¤Ï¥á¥½¥Ã¥É¤Î̾Á°¤Î¤³¤È¤Ç¤¹¡£Ì¾Á°¤Ï¡¢\f2java.lang.String.equals(java.lang.Object)\fP¤Î¤è¤¦¤Ê´°Á´½¤¾þ̾¤Ë¤¹¤ë¤³¤È¤â¡¢\f2equals(Object)\fP¤Î¤è¤¦¤ÊÉôʬ½¤¾þ̾¤Ë¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.LP -+.TP 3 -+¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥¯¥é¥¹(documented classes) -+Javadoc¤Î¼Â¹Ô¤Ë¤è¤Ã¤Æ¾ÜºÙ¤Ê¥É¥¥å¥á¥ó¥È¤¬À¸À®¤µ¤ì¤ë¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¤³¤È¤Ç¤¹¡£¥É¥¥å¥á¥ó¥È²½¤¹¤ë¤Ë¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬»ÈÍѲÄǽ¤Ç¤¢¤ê¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òjavadoc¥³¥Þ¥ó¥É¤ËÅϤ¹É¬Íפ¬¤¢¤ê¡¢¥¢¥¯¥»¥¹½¤¾þ»Ò(public¡¢protected¡¢package\-private¤Þ¤¿¤Ïprivate)¤Ë¤è¤Ã¤Æ¥Õ¥£¥ë¥¿½èÍý¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥¯¥é¥¹¤Ï¡¢javadoc¥Ä¡¼¥ë¤Î½ÐÎϤËÁȤ߹þ¤Þ¤ì¤ë¥¯¥é¥¹¡¢¤Ä¤Þ¤ê\f2Êñ´Þ¥¯¥é¥¹\fP¤È¤â¸Æ¤Ð¤ì¤Þ¤¹¡£ -+.LP -+.TP 3 -+Êñ´Þ¥¯¥é¥¹(included classes) -+Javadoc¥Ä¡¼¥ë¤Î¼Â¹Ô¤Ë¤è¤Ã¤Æ¾ÜºÙ¤Ê¥É¥¥å¥á¥ó¥È¤¬À¸À®¤µ¤ì¤ë¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¤³¤È¤Ç¤¹¡£\f2¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥¯¥é¥¹\fP¤ÈƱ¤¸¤Ç¤¹¡£ -+.LP -+.TP 3 -+½ü³°¥¯¥é¥¹(excluded classes) -+Javadoc¥Ä¡¼¥ë¤Î¼Â¹Ô¤Ë¤è¤Ã¤Æ¾ÜºÙ¤Ê¥É¥¥å¥á¥ó¥È¤¬À¸À®\f2¤µ¤ì¤Ê¤¤\fP¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¤³¤È¤Ç¤¹¡£ -+.LP -+.TP 3 -+»²¾È¥¯¥é¥¹(referenced classes) -+¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÎÄêµÁ(¼ÂÁõ)¤Þ¤¿¤Ï¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ÎÃæ¤ÇÌÀ¼¨Åª¤Ë»²¾È¤µ¤ì¤Æ¤¤¤ë¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¤³¤È¤Ç¤¹¡£»²¾È¤ÎÎã¤È¤·¤Æ¤Ï¡¢Ìá¤êÃͤη¿¡¢¥Ñ¥é¥á¡¼¥¿¤Î·¿¡¢¥¥ã¥¹¥È¤Î·¿¡¢³ÈÄ¥¤µ¤ì¤¿¥¯¥é¥¹¡¢¼ÂÁõ¤µ¤ì¤¿¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤¿¥¯¥é¥¹¡¢¥á¥½¥Ã¥ÉËÜÂΤǻÈÍѤµ¤ì¤ë¥¯¥é¥¹¡¢@see¡¢{@link}¡¢{@linkplain}¡¢{@inheritDoc}¥¿¥°¤Ê¤É¤¬¤¢¤ê¤Þ¤¹¡£(¤³¤ÎÄêµÁ¤Ï -+.na -+\f21.3\fP @ -+.fi -+http://docs.oracle.com/javase/1.3/docs/tooldocs/solaris/javadoc.html#referencedclasses¤«¤éÊѹ¹¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£)Javadoc¥Ä¡¼¥ë¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ï¡¢Javadoc¤Î¥Ö¡¼¥È¡¦¥¯¥é¥¹¥Ñ¥¹¤ª¤è¤Ó¥¯¥é¥¹¥Ñ¥¹Æâ¤Ë¤¢¤ë¤¹¤Ù¤Æ¤Î»²¾È¥¯¥é¥¹¤ò¥á¥â¥ê¡¼¤Ë¥í¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£(»²¾È¥¯¥é¥¹¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ï¡¢¡Ö¥¯¥é¥¹¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡×¤È¤¤¤¦·Ù¹ð¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£)Javadoc¥Ä¡¼¥ë¤Ï¡¢¥¯¥é¥¹¤Î¸ºß¤È¤½¤Î¥á¥ó¥Ð¡¼¤Î´°Á´½¤¾þ̾¤òȽÊ̤¹¤ë¤Î¤ËɬÍ×½½Ê¬¤Ê¾ðÊó¤ò¡¢.class¥Õ¥¡¥¤¥ë¤«¤é°ú¤½Ð¤¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+.TP 3 -+³°Éô»²¾È¥¯¥é¥¹(external referenced classes) -+»²¾È¥¯¥é¥¹¤Î¤¦¤Á¡¢Javadoc¤Î¼Â¹ÔÃæ¤Ë¥É¥¥å¥á¥ó¥È¤¬À¸À®¤µ¤ì¤Ê¤¤¥¯¥é¥¹¤Î¤³¤È¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢¤³¤ì¤é¤Î¥¯¥é¥¹¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÇJavadoc¥Ä¡¼¥ë¤ËÅϤµ¤ì¤Æ¤¤¤Þ¤»¤ó¡£À¸À®¥É¥¥å¥á¥ó¥ÈÆâ¤Ç¤³¤ì¤é¤Î¥¯¥é¥¹¤Ë¥ê¥ó¥¯¤·¤Æ¤¤¤ë²Õ½ê¤Ï¡¢\f2³°Éô»²¾È\fP¤Þ¤¿¤Ï\f2³°Éô¥ê¥ó¥¯\fP¤È¸Æ¤Ð¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2java.awt\fP¥Ñ¥Ã¥±¡¼¥¸¤ËÂФ·¤Æ¤Î¤ßJavadoc¥Ä¡¼¥ë¤ò¼Â¹Ô¤·¤¿¾ì¹ç¡¢\f2Object\fP¤Ê¤É¤Î\f2java.lang\fPÆâ¤Î¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤¬³°Éô»²¾È¥¯¥é¥¹¤Ë¤Ê¤ê¤Þ¤¹¡£³°Éô»²¾È¥¯¥é¥¹¤Ë¥ê¥ó¥¯¤¹¤ë¤Ë¤Ï¡¢\f2\-link\fP¤ª¤è¤Ó\f2\-linkoffline\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£³°Éô»²¾È¥¯¥é¥¹¤Ë¤Ï¡¢Ä̾綠¤Î¥½¡¼¥¹¡¦¥³¥á¥ó¥È¤òJavadoc¥Ä¡¼¥ë¤Î¼Â¹Ô¤ÇÍøÍѤǤ¤Ê¤¤¤È¤¤¤¦½ÅÍפÊÆÃħ¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢¤½¤ì¤é¤Î¥³¥á¥ó¥È¤ò·Ñ¾µ¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£ -+.RE -+.SH "¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë" -+.LP -+Javadoc¥Ä¡¼¥ë¤Ï¡¢4¤Ä¤Î¥¿¥¤¥×¤Î°Û¤Ê¤ë¡Ö¥½¡¼¥¹¡×¥Õ¥¡¥¤¥ë¤«¤é½ÐÎϤòÀ¸À®¤·¤Þ¤¹¡£¤½¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¥¯¥é¥¹¤ÎJava¸À¸ì¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë(\f2.java\fP)¡¢¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¡¢³µÍ×¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¡¢¤ª¤è¤Ó¤½¤Î¾¤Î̤½èÍý¤Î¥Õ¥¡¥¤¥ë¤Ç¤¹¡£¤³¤³¤Ç¤Ï¡¢¥É¥¥å¥á¥ó¥È²½¤·¤Ê¤¤¤¬¥½¡¼¥¹¡¦¥Ä¥ê¡¼¤Ë¸ºß¤¹¤ë¾ì¹ç¤¬¤¢¤ë¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤ä¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¤âÀâÌÀ¤·¤Þ¤¹¡£ -+.SS -+¥¯¥é¥¹¡¦¥½¡¼¥¹¡¦¥³¡¼¥É¡¦¥Õ¥¡¥¤¥ë -+.LP -+¤½¤ì¤¾¤ì¤Î¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¤ª¤è¤Ó¤½¤Î¥á¥ó¥Ð¡¼¤Ï¡¢Æȼ«¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò»ý¤Ä¤³¤È¤¬¤Ç¤¡¢¤½¤ì¤ò\f2.java\fP¥Õ¥¡¥¤¥ëÆâ¤ËÊÝ»ý¤·¤Þ¤¹¡£¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î¾ÜºÙ¤Ï¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.SS -+¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë -+.LP -+¤½¤ì¤¾¤ì¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ï¡¢Æȼ«¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò»ý¤Ä¤³¤È¤¬¤Ç¤¡¢¤½¤ì¤òÀìÍѤΡ֥½¡¼¥¹¡×¥Õ¥¡¥¤¥ë¤ËÊÝ»ý¤·¤Þ¤¹¡£¤½¤ÎÆâÍƤϡ¢Javadoc¥Ä¡¼¥ë¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë¥Ñ¥Ã¥±¡¼¥¸¤Î³µÍ×¥Ú¡¼¥¸¤ËÁȤ߹þ¤Þ¤ì¤Þ¤¹¡£¤³¤Î¥³¥á¥ó¥È¤Ë¤Ï¡¢Ä̾¤½¤Î¥Ñ¥Ã¥±¡¼¥¸Á´ÂΤËÅö¤Æ¤Ï¤Þ¤ë¥É¥¥å¥á¥ó¥È¤òµ½Ò¤·¤Þ¤¹¡£ -+.LP -+¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¾ì¹ç¡¢¥³¥á¥ó¥È¤Î³ÊǼÀè¤È¤·¤Æ¡¢¼¡¤Î2¤Ä¤Î¥Õ¥¡¥¤¥ë¤Î¤¤¤º¤ì¤«¤òÁªÂò¤Ç¤¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f2package\-info.java\fP \- ¥Ñ¥Ã¥±¡¼¥¸Àë¸À¡¢¥Ñ¥Ã¥±¡¼¥¸Ãí¼á¡¢¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¡¢¤ª¤è¤ÓJavadoc¥¿¥°¤ò³ÊǼ¤Ç¤¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï°ìÈ̤ˡ¢package.html¤è¤ê¤â¿ä¾©¤µ¤ì¤Þ¤¹¡£ -+.TP 2 -+o -+\f2package.html\fP \- ³ÊǼ¤Ç¤¤ë¤Î¤Ï¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¤ÈJavadoc¥¿¥°¤Î¤ß¤Ç¤¹¡£¥Ñ¥Ã¥±¡¼¥¸Ãí¼á¤Ï³ÊǼ¤Ç¤¤Þ¤»¤ó¡£ -+.RE -+.LP -+³Æ¥Ñ¥Ã¥±¡¼¥¸¤Ï¡¢\f2package.html\fP¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï\f2package\-info.java\fP¥Õ¥¡¥¤¥ë¤Î¤¤¤º¤ì¤«¤ò1¤Ä»ý¤Ä¤³¤È¤¬¤Ç¤¤Þ¤¹¤¬¡¢¤½¤ÎξÊý¤ò»ý¤Ä¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤³¤Î¤É¤Á¤é¤«¤Î¥Õ¥¡¥¤¥ë¤ò\f2.java\fP¥Õ¥¡¥¤¥ë¤È¤È¤â¤Ë¡¢¥½¡¼¥¹¡¦¥Ä¥ê¡¼Æâ¤Î¤½¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥Ç¥£¥ì¥¯¥È¥êÆâ¤ËÇÛÃÖ¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+\f4package\-info.java\fP \- ¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¼¡¤Î¹½Â¤¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¤ò³ÊǼ¤Ç¤¤Þ¤¹¡£¥³¥á¥ó¥È¤Ï¥Ñ¥Ã¥±¡¼¥¸Àë¸À¤ÎÁ°¤ËÇÛÃÖ¤·¤Þ¤¹¡£ -+.LP -+¥Õ¥¡¥¤¥ë: \f2java/applet/package\-info.java\fP -+.nf -+\f3 -+.fl -+/** -+.fl -+ * Provides the classes necessary to create an -+.fl -+ * applet and the classes an applet uses -+.fl -+ * to communicate with its applet context. -+.fl -+ * <p> -+.fl -+ * The applet framework involves two entities: -+.fl -+ * the applet and the applet context. -+.fl -+ * An applet is an embeddable window (see the -+.fl -+ * {@link java.awt.Panel} class) with a few extra -+.fl -+ * methods that the applet context can use to -+.fl -+ * initialize, start, and stop the applet. -+.fl -+ * -+.fl -+ * @since 1.0 -+.fl -+ * @see java.awt -+.fl -+ */ -+.fl -+package java.lang.applet; -+.fl -+\fP -+.fi -+.LP -+¥³¥á¥ó¥È¶èÀÚ¤êʸ»ú¤Î\f2/**\fP¤È\f2*/\fP¤Ï¸ºß¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¡¢Ãæ´Ö¹Ô¤Î¹ÔƬ¤Î¥¢¥¹¥¿¥ê¥¹¥¯¤Ï¾Êά¤·¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ -+.LP -+\f4package.html\fP \- ¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¼¡¤Î¹½Â¤¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¤ò³ÊǼ¤Ç¤¤Þ¤¹¡£¥³¥á¥ó¥È¤Ï\f2<body>\fPÍ×ÁÇÆâ¤ËÇÛÃÖ¤·¤Þ¤¹¡£ -+.LP -+¥Õ¥¡¥¤¥ë: \f2java/applet/package.html\fP -+.nf -+\f3 -+.fl -+<HTML> -+.fl -+<BODY> -+.fl -+Provides the classes necessary to create an applet and the -+.fl -+classes an applet uses to communicate with its applet context. -+.fl -+<p> -+.fl -+The applet framework involves two entities: the applet -+.fl -+and the applet context. An applet is an embeddable -+.fl -+window (see the {@link java.awt.Panel} class) with a -+.fl -+few extra methods that the applet context can use to -+.fl -+initialize, start, and stop the applet. -+.fl -+ -+.fl -+@since 1.0 -+.fl -+@see java.awt -+.fl -+</BODY> -+.fl -+</HTML> -+.fl -+\fP -+.fi -+.LP -+¤³¤ì¤Ïñ¤Ê¤ëÄ̾ï¤ÎHTML¥Õ¥¡¥¤¥ë¤Ç¤¢¤ê¡¢¥Ñ¥Ã¥±¡¼¥¸Àë¸À¤ò´Þ¤ó¤Ç¤¤¤Ê¤¤ÅÀ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤ÎÆâÍƤϡ¢Â¾¤Î¤¹¤Ù¤Æ¤Î¥³¥á¥ó¥È¤ÈƱÍͤËHTML¤Çµ½Ò¤·¤Þ¤¹¤¬¡¢Îã³°¤¬1¤Ä¤¢¤ê¤Þ¤¹¡£¤½¤ì¤Ï¡¢¤³¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ë¤Ï¡¢¥³¥á¥ó¥È¶èÀÚ¤êʸ»ú¤Ç¤¢¤ë\f2/**\fP¤È\f2*/\fP¡¢¤Þ¤¿¤Ï¹ÔƬ¤Î¥¢¥¹¥¿¥ê¥¹¥¯¤ò´Þ¤á¤Ê¤¤¡¢¤È¤¤¤¦ÅÀ¤Ç¤¹¡£¥³¥á¥ó¥È¤ò½ñ¤¯¾ì¹ç¤Ï¡¢ºÇ½é¤Îʸ¤ò¥Ñ¥Ã¥±¡¼¥¸¤Î³µÍפȤ·¡¢\f2<body>\fP¤ÈºÇ½é¤Îʸ¤Î´Ö¤Ë¥¿¥¤¥È¥ë¤ä¤½¤Î¾¤Î¥Æ¥¥¹¥È¤ò´Þ¤á¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£¥Ñ¥Ã¥±¡¼¥¸¡¦¥¿¥°¤ò´Þ¤á¤ë¤³¤È¤Ï¤Ç¤¤Þ¤¹¤¬¡¢Â¾¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ÈƱÍÍ¡¢¤¹¤Ù¤Æ¤Î¥Ö¥í¥Ã¥¯¡¦¥¿¥°¤Ï¡¢¼çÀâÌÀ¤Î¸å¤ËÇÛÃÖ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f2@see\fP¥¿¥°¤ò¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤ËÄɲ乤ë¾ì¹ç¤Ë¤Ï¡¢´°Á´½¤¾þ̾¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2package.html\fP¤ÎÎã @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#packagecomments¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+\f3¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤Î½èÍý\fP \- Javadoc¥Ä¡¼¥ë¤Ï¡¢¼Â¹Ô»þ¤Ë¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤ò¼«Æ°Åª¤Ë¸¡º÷¤·¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤ò¸«¤Ä¤±¤ë¤È¼¡¤Î½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+½èÍý¤Ç¤¤ë¤è¤¦¤Ë¥³¥á¥ó¥È¤ò¥³¥Ô¡¼¤·¤Þ¤¹¡£(\f2package.html\fP¤Î¾ì¹ç¤Ç¤¢¤ì¤Ð¡¢\f2<body>\fP¤È\f2</body>\fP HTML¥¿¥°¤Î´Ö¤Ë¤¢¤ëÆâÍƤò¤¹¤Ù¤Æ¥³¥Ô¡¼¤·¤Þ¤¹¡£\f2<head>\fP¥»¥¯¥·¥ç¥ó¤ò´Þ¤á¡¢¤½¤³¤Ë\f2<title>\fP¤ä¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎÃøºî¸¢µ½Ò¤Ê¤É¤Î¾ðÊó¤òÇÛÃÖ¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¤¬¡¢À¸À®¥É¥¥å¥á¥ó¥È¤Ë¤Ï¤½¤ì¤é¤Ï°ìÀÚɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£) -+.TP 2 -+o -+¥Ñ¥Ã¥±¡¼¥¸¡¦¥¿¥°¤¬¤¢¤ì¤Ð¡¢¤¹¤Ù¤Æ½èÍý¤·¤Þ¤¹¡£ -+.TP 2 -+o -+À¸À®¤·¤¿¥Ñ¥Ã¥±¡¼¥¸¤Î³µÍ×¥Ú¡¼¥¸¤ÎºÇ¸å¤Ë¡¢½èÍý¤·¤¿¥Æ¥¥¹¥È¤òÁÞÆþ¤·¤Þ¤¹( -+.na -+\f2¥Ñ¥Ã¥±¡¼¥¸¤Î³µÍ×\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/java/applet/package\-summary.html¤ò»²¾È)¡£ -+.TP 2 -+o -+¥Ñ¥Ã¥±¡¼¥¸¤Î³µÍ×¥Ú¡¼¥¸¤ÎÀèƬ¤Ë¡¢¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¤ÎºÇ½é¤Îʸ¤ò¥³¥Ô¡¼¤·¤Þ¤¹¡£¤µ¤é¤Ë¡¢³µÍ×¥Ú¡¼¥¸¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥ê¥¹¥È¤Ë¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤È¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¤ÎºÇ½é¤Îʸ¤òÄɲä·¤Þ¤¹( -+.na -+\f2³µÍפÎÍ×Ìó\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/overview\-summary.html¤ò»²¾È)¡£Ê¸¤Î½ª¤ï¤ê¤Ï¡¢¥¯¥é¥¹¤ä¥á¥ó¥Ð¡¼¤Î¼çÀâÌÀ¤ÎºÇ½é¤Îʸ¤Î½ª¤ï¤ê¤ÈƱ¤¸¥ë¡¼¥ë¤Ë¤è¤Ã¤ÆȽÃǤµ¤ì¤Þ¤¹¡£ -+.RE -+.SS -+³µÍ×¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë -+.LP -+¥É¥¥å¥á¥ó¥È²½¤¹¤ë³Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¡¦¥»¥Ã¥È¤Ï¡¢Æȼ«¤Î³µÍץɥ¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò»ý¤Ä¤³¤È¤¬¤Ç¤¡¢¤½¤ì¤ÏÀìÍѤΡ֥½¡¼¥¹¡×¥Õ¥¡¥¤¥ë¤ËÊÝ»ý¤µ¤ì¤Þ¤¹¡£¤½¤ÎÆâÍƤϡ¢Javadoc¥Ä¡¼¥ë¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë³µÍ×¥Ú¡¼¥¸¤ËÁȤ߹þ¤Þ¤ì¤Þ¤¹¡£¤³¤Î¥³¥á¥ó¥È¤Ë¤Ï¡¢Ä̾¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¡¦¥»¥Ã¥ÈÁ´ÂΤËÅö¤Æ¤Ï¤Þ¤ë¥É¥¥å¥á¥ó¥È¤òµ½Ò¤·¤Þ¤¹¡£ -+.LP -+³µÍ×¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤Ë¤Ï¡¢¥Õ¥¡¥¤¥ë¤ËǤ°Õ¤Î̾Á°(Ä̾ï¤Ï\f4overview.html\fP)¤òÉÕ¤±¡¢Ç¤°Õ¤Î¾ì½ê(Ä̾ï¤Ï¥½¡¼¥¹¡¦¥Ä¥ê¡¼¤ÎºÇ¾å°Ì¥ì¥Ù¥ë)¤ËÇÛÃ֤Ǥ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2java.applet\fP¥Ñ¥Ã¥±¡¼¥¸¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬\f2/home/user/src/java/applet\fP¥Ç¥£¥ì¥¯¥È¥ê¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢³µÍ×¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤Ï\f2/home/user/src/overview.html\fP¤ËºîÀ®¤Ç¤¤Þ¤¹¡£ -+.LP -+°Û¤Ê¤ë¥Ñ¥Ã¥±¡¼¥¸¤Î¥»¥Ã¥È¤ËÂФ·¤ÆJavadoc¤òÊ£¿ô²ó¼Â¹Ô¤¹¤ë¾ì¹ç¤Ï¡¢Æ±¤¸1¤Ä¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥»¥Ã¥È¤ËÂФ·¤ÆÊ£¿ô¤Î³µÍ×¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢ÆâÉô¥É¥¥å¥á¥ó¥ÈÍѤË\-private¤ò»ØÄꤷ¤ÆJavadoc¤ò1²ó¼Â¹Ô¤·¤¿¸å¡¢¸ø³«¥É¥¥å¥á¥ó¥ÈÍѤˤ½¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤ÇºÆÅټ¹Ԥ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢³Æ³µÍ×¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤Î1ʸÌܤǡ¢¤½¤Î¥É¥¥å¥á¥ó¥È¤ò¸ø³«ÍѤޤ¿¤ÏÆâÉôÍѤȤ·¤Æµ½Ò¤Ç¤¤Þ¤¹¡£ -+.LP -+³µÍ×¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤ÎÆâÍƤϡ¢Á°½Ò¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤ÈƱÍÍ¡¢HTML¤Çµ½Ò¤µ¤ì¤¿1¤Ä¤ÎÂ礤ʥɥ¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç¤¹¡£¾ÜºÙ¤Ï¡¢Á°½Ò¤ÎÀâÌÀ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£Í×ÅÀ¤ò·«¤êÊÖ¤¹¤È¡¢¥³¥á¥ó¥È¤ò½ñ¤¯¾ì¹ç¤Ï¡¢ºÇ½é¤Îʸ¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¡¦¥»¥Ã¥È¤Î³µÍפȤ·¡¢\f2<body>\fP¤ÈºÇ½é¤Îʸ¤Î´Ö¤Ë¥¿¥¤¥È¥ë¤ä¤½¤Î¾¤Î¥Æ¥¥¹¥È¤ò´Þ¤á¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£³µÍ×¥¿¥°¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Â¾¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ÈƱ¤¸¤¯¡¢\f2{@link}\fP¤Ê¤É¤Î¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°¤ò½ü¤¯¤¹¤Ù¤Æ¤Î¥¿¥°¤Ï¡¢¼çÀâÌÀ¤Î¸å¤ËÇÛÃÖ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f2@see\fP¥¿¥°¤òÄɲ乤ë¾ì¹ç¤Ë¤Ï¡¢´°Á´½¤¾þ̾¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+Javadoc¥Ä¡¼¥ë¤Î¼Â¹Ô»þ¤Ë¡¢\-overview¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ³µÍ×¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¡¦¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¤è¤¦¤Ë½èÍý¤µ¤ì¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f2<body>\fP¤È\f2</body>\fP¥¿¥°¤Î´Ö¤Ë¤¢¤ëÆâÍƤò¤¹¤Ù¤Æ½èÍýÂоݤȤ·¤Æ¥³¥Ô¡¼¤·¤Þ¤¹¡£ -+.TP 2 -+o -+³µÍ×¥¿¥°¤¬¤¢¤ì¤Ð¡¢¤¹¤Ù¤Æ½èÍý¤·¤Þ¤¹¡£ -+.TP 2 -+o -+À¸À®¤·¤¿³µÍ×¥Ú¡¼¥¸¤ÎºÇ¸å¤Ë¡¢½èÍý¤·¤¿¥Æ¥¥¹¥È¤òÁÞÆþ¤·¤Þ¤¹( -+.na -+\f2³µÍפÎÍ×Ìó\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/overview\-summary.html¤ò»²¾È)¡£ -+.TP 2 -+o -+³µÍ×¥Ú¡¼¥¸¤ÎÀèƬ¤Ë¡¢³µÍ×¥³¥á¥ó¥È¤ÎºÇ½é¤Îʸ¤ò¥³¥Ô¡¼¤·¤Þ¤¹¡£ -+.RE -+.SS -+¤½¤Î¾¤Î̤½èÍý¤Î¥Õ¥¡¥¤¥ë -+.LP -+¥½¡¼¥¹¤Ë¤Ï¡¢Javadoc¥Ä¡¼¥ë¤Ë¤è¤Ã¤Æ°¸Àè¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥³¥Ô¡¼¤µ¤ì¤ë¡¢¤½¤Î¾¤ÎǤ°Õ¤Î¥Õ¥¡¥¤¥ë¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£°ìÈ̤ˡ¢¤³¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¥°¥é¥Õ¥£¥Ã¥¯¡¦¥Õ¥¡¥¤¥ë¡¢¥µ¥ó¥×¥ë¤ÎJava¥½¡¼¥¹(.java)¤ª¤è¤Ó¥¯¥é¥¹(.class)¥Õ¥¡¥¤¥ë¡¢ÆâÍƤ¬Ä̾ï¤ÎJava¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î±Æ¶Á¤ò¼õ¤±¤Ê¤¤ÆÈΩ¤·¤¿HTML¥Õ¥¡¥¤¥ë¤Ê¤É¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+̤½èÍý¤Î¥Õ¥¡¥¤¥ë¤ò´Þ¤á¤ë¤Ë¤Ï¡¢¤½¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ò\f4doc\-files\fP¤È¤¤¤¦Ì¾Á°¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¤Þ¤¹¡£¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬³ÊǼ¤µ¤ì¤¿Ç¤°Õ¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£¤³¤Î¤è¤¦¤Ê¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¤´¤È¤Ë1¤ÄÍѰդǤ¤Þ¤¹¡£¥¤¥á¡¼¥¸¡¢¥µ¥ó¥×¥ë¡¦¥³¡¼¥É¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¡¢.class¥Õ¥¡¥¤¥ë¡¢¥¢¥×¥ì¥Ã¥È¡¢¤ª¤è¤ÓHTML¥Õ¥¡¥¤¥ë¤ò¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë³ÊǼ¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥Ü¥¿¥ó¤Î¥¤¥á¡¼¥¸\f2button.gif\fP¤ò\f2java.awt.Button\fP¥¯¥é¥¹¤Î¥É¥¥å¥á¥ó¥È¤Ë´Þ¤á¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤ò\f2/home/user/src/java/awt/doc\-files/\fP¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¤Þ¤¹¡£¤Ê¤ª¡¢\f2doc\-files\fP¥Ç¥£¥ì¥¯¥È¥ê¤ò\f2/home/user/src/java/doc\-files\fP¤ËÃÖ¤¯¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤³¤ì¤Ï¡¢\f2java\fP¤¬¥Ñ¥Ã¥±¡¼¥¸¤Ç¤Ï¤Ê¤¤¤«¤é¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢java¤½¤Î¤â¤Î¤Ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬1¤Ä¤â³ÊǼ¤µ¤ì¤Æ¤¤¤Ê¤¤¤«¤é¤Ç¤¹¡£ -+.LP -+¤³¤ì¤é¤Î̤½èÍý¤Î¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯¤Ï¡¢¤¹¤Ù¤Æ¥Ï¡¼¥É¥³¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢Javadoc¥Ä¡¼¥ë¤¬¤½¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ò¸«¤º¤Ë¡¢¥Ç¥£¥ì¥¯¥È¥ê¤È¤½¤ÎÆâÍƤò°¸Àè¤Ë¤½¤Î¤Þ¤Þ¥³¥Ô¡¼¤¹¤ë¤«¤é¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2Button.java\fP¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥ÈÆâ¤Î¥ê¥ó¥¯¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * This button looks like this: -+.fl -+ * <img src="doc\-files/Button.gif"> -+.fl -+ */ -+.fl -+\fP -+.fi -+.SS -+¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤ª¤è¤Ó¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë -+.LP -+°ìÉô¤Î³«È¯¼Ô¤«¤é¡¢¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤ª¤è¤Ó¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤òÂбþ¤¹¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¶á¤¯¤Î¥½¡¼¥¹¡¦¥Ä¥ê¡¼¤ËÊݸ¤·¤¿¤¤¤È¤¤¤¦Í×˾¤¬¤¢¤ê¤Þ¤·¤¿¡£¤Ä¤Þ¤ê¡¢¤³¤ì¤é¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Þ¤¿¤Ï¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ËÊݸ¤·¤¿¤¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡£ -+.LP -+¸Ä¡¹¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤ÇÌÀ¼¨Åª¤ËÅϤ·¤ÆJavadoc¥Ä¡¼¥ë¤ò¼Â¹Ô¤¹¤ë¾ì¹ç¡¢¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤ª¤è¤Ó¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤ò°Õ¿ÞŪ¤Ë½ü³°¤·¤Æ¡¢½èÍý¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Þ¤¿¤Ï¥ï¥¤¥ë¥É¥«¡¼¥É¤ÇÅϤ¹¾ì¹ç¤Ï¡¢ÆÃÄê¤Î¥ë¡¼¥ë¤Ë½¾¤Ã¤Æ¡¢¤³¤ì¤é¤Î¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤ª¤è¤Ó¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤¬½èÍý¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤È¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤Î°ã¤¤¤Ï¡¢¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢Í¸ú¤Ç¥³¥ó¥Ñ¥¤¥ë²Äǽ¤Ê¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë¤Î¤ËÂФ·¤Æ¡¢¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢¤½¤¦¤Ç¤Ï¤Ê¤¤¤È¤¤¤¦ÅÀ¤Ç¤¹¡£¤¿¤À¤·¡¢¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤â¡Ö.java¡×¤Ç½ª¤ï¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+\f3¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë\fP \- ³«È¯¼Ô¤Î¿¤¯¤Ï¡¢¤¢¤ë¥Ñ¥Ã¥±¡¼¥¸¤Î¥³¥ó¥Ñ¥¤¥ë²Äǽ¤Ç¼Â¹Ô²Äǽ¤Ê¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤ò¤½¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤È\f2Ʊ¤¸\fP¥Ç¥£¥ì¥¯¥È¥ê¤ËÇÛÃÖ¤·¤¿¤¤¤È¹Í¤¨¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢Ì¾Á°¤Ê¤·¥Ñ¥Ã¥±¡¼¥¸¤Ê¤É¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¡¦¥Ñ¥Ã¥±¡¼¥¸¤È¤ÏÊ̤Υѥ屡¼¥¸¤Ë°¤µ¤»¤¿¤¤¤È¤â¹Í¤¨¤Æ¤¤¤Þ¤¹(¤½¤Î¤¿¤á¡¢¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ë¤Ïpackageʸ¤¬¤Ê¤¤¤«¡¢¤Þ¤¿¤Ï¥½¡¼¥¹¤È¤ÏÊ̤Îpackageʸ¤¬¤¢¤ê¤Þ¤¹)¡£¤³¤Î¤è¤¦¤Ê¾õ¶·¤Ç¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ë¥½¡¼¥¹¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ò»ØÄꤷ¤Æ¤½¤Î¥½¡¼¥¹¤¬¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤Æ¤¤¤ë¤È¤¤Ë¡¢¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ï·Ù¹ð¤Þ¤¿¤Ï¥¨¥é¡¼¤ò°ú¤µ¯¤³¤·¤Þ¤¹¡£¤½¤Î¤è¤¦¤Ê¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ï¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ËÇÛÃÖ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2com.package1\fPÆâ¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ë¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤òÄɲ乤ë¾ì¹ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ï¥¤¥Õ¥ó¤ò´Þ¤ó¤Ç¤¤¤ë¤¿¤á¤Ë¥Ñ¥Ã¥±¡¼¥¸Ì¾¤È¤·¤Æ¤Ï̵¸ú¤Ê̾Á°¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥êÆâ¤ËÇÛÃÖ¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ com/package1/test\-files/ -+.fl -+\fP -+.fi -+.LP -+¤³¤ì¤Ç¡¢Javadoc¥Ä¡¼¥ë¤Ï·Ù¹ð¤Ê¤·¤Çtest¥Ç¥£¥ì¥¯¥È¥ê¤ò¥¹¥¥Ã¥×¤·¤Þ¤¹¡£ -+.LP -+¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ë¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤¬´Þ¤Þ¤ì¤ë¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Î¸ÄÊ̤μ¹Ԥǡ¢¥ï¥¤¥ë¥É¥«¡¼¥É¤ò´Þ¤ó¤À¥Æ¥¹¥È¡¦¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾(\f2com/package1/test\-files/*.java\fP¤Ê¤É)¤ÇÅϤ·¤Æ¥Æ¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Î¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤¹¤ë¤è¤¦¤ËÀßÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+\f3¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥Æ¥ó¥×¥ì¡¼¥È\fP \- ¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ï¡Ö.java¡×¤Ç½ª¤ï¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¤¬¡¢¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤Ï¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤Þ¤»¤ó¡£¥½¡¼¥¹¡¦¥Ç¥£¥ì¥¯¥È¥êÆâ¤ËÊÝ»ý¤·¤¿¤¤¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥Æ¥ó¥×¥ì¡¼¥È¤¬¤¢¤ë¾ì¹ç¤Ï¡¢\f2Buffer\-Template.java\fP¤Î¤è¤¦¤Ë¥Ï¥¤¥Õ¥ó¤ä¤½¤Î¾¤Î̵¸ú¤ÊJavaʸ»ú¤ò̾Á°¤Ë´Þ¤á¤ë¤³¤È¤Ç¡¢¥Æ¥ó¥×¥ì¡¼¥È¤¬½èÍý¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£¤³¤ì¤Ï¡¢Javadoc¥Ä¡¼¥ë¤¬½èÍý¤¹¤ë¤Î¤Ï¡¢¡Ö.java¡×ÀÜÈø¼¤ò½ü¤¤¤¿Ì¾Á°¤¬Í¸ú¤Ê¥¯¥é¥¹Ì¾¤Ç¤¢¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¤ß¤Ç¤¢¤ë¤¿¤á¤Ç¤¹(Java¸À¸ì»ÅÍͤμ±Ê̻Ҥ˴ؤ¹¤ë¾ðÊó¤ò»²¾È)¡£ -+.SH "À¸À®¤µ¤ì¤ë¥Õ¥¡¥¤¥ë" -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢Javadoc¤Ï¡¢HTML·Á¼°¤Î¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤¹¤ëɸ½à¥É¥Ã¥¯¥ì¥Ã¥È¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¥É¥Ã¥¯¥ì¥Ã¥È¤Ï¡¢¼¡¤Î¥¿¥¤¥×¤Î¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£(¤½¤ì¤¾¤ì¤ÎHTML¥Ú¡¼¥¸¤Ï¡¢Ê̸ĤΥե¡¥¤¥ë¤ËÁêÅö¤·¤Þ¤¹¡£)Javadoc¤¬À¸À®¤¹¤ë¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ë¤Ï¡¢¥¯¥é¥¹¤ä¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î̾Á°¤Ë¤Á¤Ê¤ó¤À¤â¤Î¤È¡¢¤½¤¦¤Ç¤Ê¤¤¤â¤Î(\f2package\-summary.html¤Ê¤É\fP)¤Î2¤Ä¤Î¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹¡£¸å¼Ô¤Î¥°¥ë¡¼¥×¤Î¥Õ¥¡¥¤¥ë̾¤Ë¤Ï¡¢Á°¼Ô¤Î¥°¥ë¡¼¥×¤È¥Õ¥¡¥¤¥ë̾¤¬¶¥¹ç¤·¤Ê¤¤¤è¤¦¤Ë¡¢¥Ï¥¤¥Õ¥ó¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+\f3´ðËÜÆâÍÆ¥Ú¡¼¥¸\fP -+.RS 3 -+.TP 2 -+o -+¥É¥¥å¥á¥ó¥È²½¤¹¤ë¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤´¤È¤Ë1¤Ä¤Î\f3¥¯¥é¥¹¡¦¥Ú¡¼¥¸¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¦¥Ú¡¼¥¸\fP(\f2¥¯¥é¥¹Ì¾\fP\f2.html\fP) -+.TP 2 -+o -+¥É¥¥å¥á¥ó¥È²½¤¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤´¤È¤Ë1¤Ä¤Î\f3¥Ñ¥Ã¥±¡¼¥¸¡¦¥Ú¡¼¥¸\fP(\f2package\-summary.html\fP)¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢¥½¡¼¥¹¡¦¥Ä¥ê¡¼¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ë¤¢¤ë\f2package.html\fP¤Þ¤¿¤Ï\f2package\-info.java\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ëÆâ¤ÎHTML¥Æ¥¥¹¥È¤ò¤¹¤Ù¤ÆÁȤßÆþ¤ì¤Þ¤¹¡£ -+.TP 2 -+o -+¥Ñ¥Ã¥±¡¼¥¸¤Î¥»¥Ã¥ÈÁ´ÂΤËÂФ·¤Æ1¤Ä¤Î\f3³µÍ×¥Ú¡¼¥¸\fP(\f2overview\-summary.html\fP)¡£¤³¤ì¤Ï¡¢À¸À®¥É¥¥å¥á¥ó¥È¤ÎÀèƬ¥Ú¡¼¥¸¤Ë¤Ê¤ê¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢\f2\-overview\fP¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ëÆâ¤ÎHTML¥Æ¥¥¹¥È¤ò¤¹¤Ù¤ÆÁȤßÆþ¤ì¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢Javadoc¤ËÊ£¿ô¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÅϤ·¤¿¾ì¹ç¤Ë¤Î¤ßºîÀ®¤µ¤ì¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢HTML¥Õ¥ì¡¼¥à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RE -+.LP -+\f3Áê¸ß»²¾È¥Ú¡¼¥¸\fP -+.RS 3 -+.TP 2 -+o -+\f3¥Ñ¥Ã¥±¡¼¥¸¤Î¥»¥Ã¥ÈÁ´ÂΤËÂФ·¤Æ1¤Ä¤Î¥¯¥é¥¹³¬ÁØ¥Ú¡¼¥¸\fP(\f2overview\-tree.html\fP)¡£¤³¤Î¥Ú¡¼¥¸¤òɽ¼¨¤¹¤ë¤Ë¤Ï¡¢¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤Î¡Ö³µÍספò¥¯¥ê¥Ã¥¯¤·¤Æ¤«¤é¡¢¡Ö³¬Áإĥ꡼¡×¤ò¥¯¥ê¥Ã¥¯¤·¤Þ¤¹¡£ -+.TP 2 -+o -+\f3¥Ñ¥Ã¥±¡¼¥¸¤´¤È¤Ë1¤Ä¤Î¥¯¥é¥¹³¬ÁØ¥Ú¡¼¥¸\fP(\f2package\-tree.html\fP)¡£¤³¤Î¥Ú¡¼¥¸¤òɽ¼¨¤¹¤ë¤Ë¤Ï¡¢ÆÃÄê¤Î¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥Ú¡¼¥¸¤Ë°ÜÆ°¤·¡¢¡Ö³¬Áإĥ꡼¡×¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤½¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î³¬Áؤòɽ¼¨¤·¤Þ¤¹¡£ -+.TP 2 -+o -+\f3¥Ñ¥Ã¥±¡¼¥¸¤´¤È¤Ë1¤Ä¤Î¡Ö»ÈÍѡץڡ¼¥¸\fP(\f2package\-use.html\fP)¤È¡¢¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤´¤È¤Ë1¤Ä¤º¤Ä¤Î¡Ö»ÈÍѡץڡ¼¥¸(\f2class\-use/\fP\f2¥¯¥é¥¹Ì¾\fP\f2.html\fP)¡£¤³¤Î¥Ú¡¼¥¸¤Ë¤Ï¡¢ÆÃÄê¤Î¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¤Î°ìÉô¤ò»ÈÍѤ·¤Æ¤¤¤ë¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¥á¥½¥Ã¥É¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¤ª¤è¤Ó¥Õ¥£¡¼¥ë¥É¤Ë¤Ä¤¤¤Æµ½Ò¤µ¤ì¤Þ¤¹¡£¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹A¤òÎã¤Ë¤·¤Æ¹Í¤¨¤ë¤È¡¢¤½¤Î¡Ö»ÈÍѡץڡ¼¥¸¤Ë¤Ï¡¢A¤Î¥µ¥Ö¥¯¥é¥¹¡¢A¤È¤·¤ÆÀë¸À¤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É¡¢A¤òÊÖ¤¹¥á¥½¥Ã¥É¡¢A·¿¤Î¥Ñ¥é¥á¡¼¥¿¤ò»ý¤Ä¥á¥½¥Ã¥É¤ª¤è¤Ó¥³¥ó¥¹¥È¥é¥¯¥¿¤¬ÁȤ߹þ¤Þ¤ì¤Þ¤¹¡£¤³¤Î¥Ú¡¼¥¸¤òɽ¼¨¤¹¤ë¤Ë¤Ï¡¢¤Þ¤º¡¢¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë°ÜÆ°¤·¤Æ¤«¤é¡¢¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤Î¡Ö»ÈÍѡץê¥ó¥¯¤ò¥¯¥ê¥Ã¥¯¤·¤Þ¤¹¡£ -+.TP 2 -+o -+\f3Èó¿ä¾©API¥Ú¡¼¥¸\fP(\f2deprecated\-list.html\fP)¡£¿ä¾©¤µ¤ì¤Ê¤¤Ì¾Á°¤¬¤¹¤Ù¤Æ¥ê¥¹¥È¤µ¤ì¤Þ¤¹¡£(Èó¿ä¾©Ì¾¤Ï¡¢°ìÈ̤˲þÎɤµ¤ì¤¿¤¿¤á¤Ë»ÈÍѤ¬¿ä¾©¤µ¤ì¤Æ¤¤¤Ê¤¤API¤Î̾Á°¤Ç¤¢¤ê¡¢Ä̾¤½¤ì¤ËÃÖ¤´¹¤ï¤ë̾Á°¤¬Ä󼨤µ¤ì¤Æ¤¤¤Þ¤¹¡£Èó¿ä¾©API¤Ï¡¢¾Íè¤Î¼ÂÁõ¤Ç¤Ïºï½ü¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£) -+.TP 2 -+o -+\f3Äê¿ô¥Õ¥£¡¼¥ë¥ÉÃÍ¥Ú¡¼¥¸\fP(\f2constant\-values.html\fP)¡£static¥Õ¥£¡¼¥ë¥É¤ÎÃÍÍѤǤ¹¡£ -+.TP 2 -+o -+\f3ľÎ󲽤µ¤ì¤¿·Á¼°¥Ú¡¼¥¸\fP(\f2serialized\-form.html\fP)¡£Ä¾Îó²½²Äǽ¤«¤Ä³°Éô²½²Äǽ¤Ê¥¯¥é¥¹¤Ë´Ø¤¹¤ë¾ðÊóÍѤΥڡ¼¥¸¤Ç¤¹¡£¤³¤ì¤é¤Î³Æ¥¯¥é¥¹¤Ë¤Ï¡¢Ä¾Îó²½¥Õ¥£¡¼¥ë¥É¤ª¤è¤Ó¥á¥½¥Ã¥É¤Ë´Ø¤¹¤ëµ½Ò¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¾ðÊó¤Ï¡¢API¤ò»ÈÍѤ¹¤ë³«È¯¼Ô¤Ç¤Ï¤Ê¤¯¡¢ºÆ¼ÂÁõ¼Ô¤ËɬÍפʾðÊó¤Ç¤¹¡£¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤Ë¤³¤Î¥Ú¡¼¥¸¤Ø¤Î¥ê¥ó¥¯¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢Ä¾Î󲽤µ¤ì¤¿¥¯¥é¥¹¤Ë°ÜÆ°¤·¤Æ¡¢¤½¤Î¥¯¥é¥¹¡¦¥³¥á¥ó¥È¤Ë¤¢¤ë¡Ö´ØÏ¢¹àÌܡץ»¥¯¥·¥ç¥ó¤Ç¡ÖľÎ󲽤µ¤ì¤¿·Á¼°¡×¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¤³¤Î¾ðÊó¤ò¼èÆÀ¤Ç¤¤Þ¤¹¡£É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¤ÏľÎ󲽤µ¤ì¤¿·Á¼°¥Ú¡¼¥¸¤ò¼«Æ°À¸À®¤·¤Þ¤¹¡£¤³¤Î¥Ú¡¼¥¸¤Ë¤Ï¡¢Serializable¤ò¼ÂÁõ¤¹¤ë¤¹¤Ù¤Æ¤Î¥¯¥é¥¹(public¤Þ¤¿¤ÏÈópublic)¤¬ÁȤ߹þ¤Þ¤ì¤ë¾¡¢\f2readObject\fP¥á¥½¥Ã¥É¤ä\f2writeObject\fP¥á¥½¥Ã¥É¡¢Ä¾Î󲽤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É¡¢¤ª¤è¤Ó\f2@serial\fP¡¢\f2@serialField\fP¡¢\f2@serialData\fP¥¿¥°¤«¤é¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤âÁȤ߹þ¤Þ¤ì¤Þ¤¹¡£Ä¾Îó²½²Äǽ¤Êpublic¥¯¥é¥¹¤ò½ü³°¤¹¤ë¤Ë¤Ï¡¢¤½¤Î¥¯¥é¥¹(¤Þ¤¿¤Ï¤½¤Î¥¯¥é¥¹¤¬Â°¤¹¤ë¥Ñ¥Ã¥±¡¼¥¸)¤ò\f2@serial exclude\fP¤Ç¥Þ¡¼¥¯¤·¤Þ¤¹¡£Ä¾Îó²½²Äǽ¤Êpackage\-private¥¯¥é¥¹¤ò´Þ¤á¤ë¤Ë¤Ï¡¢¤½¤Î¥¯¥é¥¹(¤Þ¤¿¤Ï¤½¤Î¥¯¥é¥¹¤¬Â°¤¹¤ë¥Ñ¥Ã¥±¡¼¥¸)¤ò\f2@serial include\fP¤Ç¥Þ¡¼¥¯¤·¤Þ¤¹¡£¥Ð¡¼¥¸¥ç¥ó1.4¤Ç¤Ï¡¢\f2\-private\fP¥ª¥×¥·¥ç¥ó¤Î»ØÄê\f2¤Ê¤·\fP¤ÇJavadoc¥Ä¡¼¥ë¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢public¥¯¥é¥¹¤ª¤è¤Óprivate¥¯¥é¥¹¤Î´°Á´¤ËľÎ󲽤µ¤ì¤¿·Á¼°¤òÀ¸À®¤Ç¤¤Þ¤¹¡£ -+.TP 2 -+o -+\f3º÷°ú\fP(\f2index\-*.html\fP)¡£¤¹¤Ù¤Æ¤Î¥¯¥é¥¹Ì¾¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹Ì¾¡¢¥³¥ó¥¹¥È¥é¥¯¥¿Ì¾¡¢¥Õ¥£¡¼¥ë¥É̾¡¢¤ª¤è¤Ó¥á¥½¥Ã¥É̾¤¬¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ëʤó¤Ç¤¤¤Þ¤¹¡£º÷°ú¤Ï¡¢Unicode¤ò°·¤¨¤ë¤è¤¦¤Ë¹ñºÝ²½¤µ¤ì¤Æ¤¤¤Þ¤¹¡£1¤Ä¤Î¥Õ¥¡¥¤¥ë¤È¤·¤ÆÀ¸À®¤¹¤ë¤³¤È¤â¡¢ÀèƬʸ»ú(±Ñ¸ì¤Î¾ì¹çA\-Z)¤´¤È¤ËÊÌ¡¹¤Î¥Õ¥¡¥¤¥ë¤È¤·¤ÆÀ¸À®¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.RE -+.LP -+\f3¥µ¥Ý¡¼¥È¡¦¥Õ¥¡¥¤¥ë\fP -+.RS 3 -+.TP 2 -+o -+\f3¥Ø¥ë¥×¡¦¥Ú¡¼¥¸\fP(\f2help\-doc.html\fP)¡£¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤äÁ°½Ò¤Î³Æ¥Ú¡¼¥¸¤Ë´Ø¤¹¤ëÀâÌÀ¤¬µºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\f2\-helpfile\fP¤ò»ÈÍѤ¹¤ë¤È¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥Ø¥ë¥×¡¦¥Õ¥¡¥¤¥ë¤ËÂå¤ï¤ëÆȼ«¤Î¥«¥¹¥¿¥à¡¦¥Ø¥ë¥×¡¦¥Õ¥¡¥¤¥ë¤òÄ󶡤Ǥ¤Þ¤¹¡£ -+.TP 2 -+o -+ɽ¼¨ÍѤÎHTML¥Õ¥ì¡¼¥à¤òºîÀ®¤¹¤ë1¤Ä¤Î\f3index.html¥Õ¥¡¥¤¥ë\fP¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¥Õ¥ì¡¼¥àÉÕ¤¤ÎÀèƬ¥Ú¡¼¥¸¤òɽ¼¨¤¹¤ë¾ì¹ç¤Ë¥í¡¼¥É¤·¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¼«ÂΤˤϡ¢¥Æ¥¥¹¥È¡¦¥³¥ó¥Æ¥ó¥Ä¤Ï´Þ¤Þ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ -+.TP 2 -+o -+Ê£¿ô¤Î\f3¥Õ¥ì¡¼¥à¡¦¥Õ¥¡¥¤¥ë\fP(\f2*\-frame.html\fP)¡£¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥ê¥¹¥È¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£HTML¥Õ¥ì¡¼¥à¤òɽ¼¨¤¹¤ë¤È¤¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 2 -+o -+\f3¥Ñ¥Ã¥±¡¼¥¸¡¦¥ê¥¹¥È\fP¥Õ¥¡¥¤¥ë(\f2package\-list\fP)¡£\f2\-link\fP¤ª¤è¤Ó\f2\-linkoffline\fP¥ª¥×¥·¥ç¥ó¤Ç»ÈÍѤµ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢HTML¥Õ¥¡¥¤¥ë¤Ç¤Ï¤Ê¤¯¥Æ¥¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ç¤¢¤ê¡¢¤É¤Î¥ê¥ó¥¯¤«¤é¤â¥¢¥¯¥»¥¹¤Ç¤¤Þ¤»¤ó¡£ -+.TP 2 -+o -+\f3¥¹¥¿¥¤¥ë¥·¡¼¥È\fP¡¦¥Õ¥¡¥¤¥ë(\f2stylesheet.css\fP)¡£À¸À®¤µ¤ì¤ë¥Ú¡¼¥¸¤Î°ìÉô¤ÎÍ×ÁǤˤĤ¤¤Æ¿§¡¢¥Õ¥©¥ó¥È¡¦¥Õ¥¡¥ß¥ê¡¢¥Õ¥©¥ó¥È¡¦¥µ¥¤¥º¡¢¥Õ¥©¥ó¥È¡¦¥¹¥¿¥¤¥ë¡¢¤ª¤è¤ÓÇÛÃÖ¤òÀ©¸æ¤·¤Þ¤¹¡£ -+.TP 2 -+o -+\f3doc\-files\fP¥Ç¥£¥ì¥¯¥È¥ê¡£°¸Àè¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥³¥Ô¡¼¤¹¤ë¥¤¥á¡¼¥¸¡¢¥µ¥ó¥×¥ë¡¦¥³¡¼¥É¡¢¥½¡¼¥¹¡¦¥³¡¼¥É¤Ê¤É¤Î¥Õ¥¡¥¤¥ë¤¬¤¹¤Ù¤Æ³ÊǼ¤µ¤ì¤Þ¤¹¡£¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¤¤¤«¤Ê¤ëÊýË¡¤Ç¤âJavadoc¥Ä¡¼¥ë¤Ë¤è¤Ã¤Æ½èÍý¤µ¤ì¤Þ¤»¤ó¡£¤Ä¤Þ¤ê¡¢¥Õ¥¡¥¤¥ëÆâ¤Ëjavadoc¥¿¥°¤¬¤¢¤Ã¤Æ¤â̵»ë¤µ¤ì¤Þ¤¹¡£¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¥½¡¼¥¹¡¦¥Ä¥ê¡¼¤ÎÃæ¤Ë¸ºß¤¹¤ë¾ì¹ç¤Ë¤Î¤ßÀ¸À®¤µ¤ì¤Þ¤¹¡£ -+.RE -+.LP -+\f3HTML¥Õ¥ì¡¼¥à\fP -+.LP -+Javadoc¥Ä¡¼¥ë¤Ï¡¢²¼¤Î¿Þ¤Ë¼¨¤¹¤è¤¦¤Ë¡¢2¡¢3¸Ä¤ÎHTML¥Õ¥ì¡¼¥à¤òÀ¸À®¤·¤Þ¤¹¡£1¤Ä¤Î¥Ñ¥Ã¥±¡¼¥¸¤·¤«¤Ê¤¤¾ì¹ç(¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¤¬¤Ê¤¤¾ì¹ç)¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¤Î¥ê¥¹¥È¤ò¾Êά¤¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆºÇÄã¸ÂɬÍפʿô¤Î¥Õ¥ì¡¼¥à¤òºîÀ®¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢Ã±°ì¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ë°¤¹¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë(*.java)¤Þ¤¿¤Ïñ°ì¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ò°ú¿ô¤È¤·¤Æjavadoc¥³¥Þ¥ó¥É¤ËÅϤ¹¾ì¹ç¤Ï¡¢º¸Â¦¤ÎÎó¤Ë¥¯¥é¥¹¤Î¥ê¥¹¥È¤òɽ¼¨¤¹¤ë¥Õ¥ì¡¼¥à(C)¤¬1¤Ä¤Î¤ßºîÀ®¤µ¤ì¤Þ¤¹¡£Javadoc¤ËÊ£¿ô¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÅϤ·¤¿¾ì¹ç¤Ï¡¢³µÍ×¥Ú¡¼¥¸(Detail)¤Ë²Ã¤¨¤Æ¡¢¤¹¤Ù¤Æ¤Î¥Ñ¥Ã¥±¡¼¥¸¤ò¥ê¥¹¥È¤¹¤ëÂè3¤Î¥Õ¥ì¡¼¥à(P)¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£¤³¤Î³µÍ×¥Ú¡¼¥¸¤Î¥Õ¥¡¥¤¥ë̾¤Ï¡¢\f2overview\-summary.html\fP¤Ç¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢Ê£¿ô¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÅϤ·¤¿¾ì¹ç¤Ë¤Î¤ßºîÀ®¤µ¤ì¤Þ¤¹¡£¡Ö¥Õ¥ì¡¼¥à¤Ê¤·¡×¥ê¥ó¥¯¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤«¡¢overview\-summary.html¤òºÇ½é¤Ëɽ¼¨¤¹¤ë¤È¡¢¥Õ¥ì¡¼¥à¤ò¾Êά¤Ç¤¤Þ¤¹¡£ -+.LP -+HTML¥Õ¥ì¡¼¥à¤Ë´·¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ÆÃÄê¤Î¥Õ¥ì¡¼¥à¤ò°õºþ¤ª¤è¤Ó¥¹¥¯¥í¡¼¥ë¤¹¤ë¤Ë¤Ï¡¢¤½¤Î¥Õ¥ì¡¼¥à¤Ë\f2¥Õ¥©¡¼¥«¥¹\fP¤¬É¬ÍפǤ¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¥Õ¥ì¡¼¥à¤Ë¥Õ¥©¡¼¥«¥¹¤òÍ¿¤¨¤ë¤Ë¤Ï¡¢¤½¤Î¥Õ¥ì¡¼¥à¤ò¥¯¥ê¥Ã¥¯¤·¤Þ¤¹¡£¤³¤ì¤Ç¡¢Â¿¤¯¤Î¥Ö¥é¥¦¥¶¤Ç¤Ï¡¢Ìð°õ¥¡¼¤ä¥Ú¡¼¥¸¡¦¥¡¼¤ò»ÈÍѤ·¤Æ¤½¤Î¥Õ¥ì¡¼¥à¤ò¥¹¥¯¥í¡¼¥ë¤·¤¿¤ê¡¢¡Ö°õºþ¡×¥á¥Ë¥å¡¼¡¦¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¤½¤Î¥Õ¥ì¡¼¥à¤ò°õºþ¤·¤¿¤ê¤Ç¤¤Þ¤¹¡£ -+.LP -+HTML¥Õ¥ì¡¼¥à¤¬É¬Íפ«¤É¤¦¤«¤Ë¤è¤Ã¤Æ¡¢¼¡¤Î¤¤¤º¤ì¤«¤Î¥Õ¥¡¥¤¥ë¤ò³«»Ï¥Ú¡¼¥¸¤È¤·¤Æ¥í¡¼¥É¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f2index.html\fP(¥Õ¥ì¡¼¥à¤¢¤ê) -+.TP 2 -+o -+\f2overview\-summary.html\fP(¥Õ¥ì¡¼¥à¤Ê¤·) -+.RE -+.LP -+\f3À¸À®¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¤Î¹½Â¤\fP -+.LP -+À¸À®¤µ¤ì¤ë¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢Java¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ª¤è¤Ó¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê³¬ÁؤËÊÔÀ®¤µ¤ì¤Þ¤¹¡£1¤Ä¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤Ë¤Ä¤1¤Ä¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¢¤È¤¤¤¦¹½Â¤¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+¤¿¤È¤¨¤Ð¡¢\f2java.applet.Applet\fP¥¯¥é¥¹ÍѤËÀ¸À®¤µ¤ì¤ë¥É¥¥å¥á¥ó¥È¤Ï¡¢\f2java/applet/Applet.html\fP¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£À¸À®Àè¥Ç¥£¥ì¥¯¥È¥ê¤Î̾Á°¤¬\f2apidocs\fP¤À¤È¤¹¤ë¤È¡¢java.applet¥Ñ¥Ã¥±¡¼¥¸¤Î¥Õ¥¡¥¤¥ë¤Î¹½Â¤¤Ï¡¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£Á°½Ò¤Î¤è¤¦¤Ë¡¢¡Öframe¡×¤È¤¤¤¦¸ì¤ò̾Á°¤Ë´Þ¤à¥Õ¥¡¥¤¥ë¤Ï¡¢¤¹¤Ù¤Æº¸¾å¤Þ¤¿¤Ïº¸²¼¤Î¥Õ¥ì¡¼¥à¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¤½¤ì°Ê³°¤ÎHTML¥Õ¥¡¥¤¥ë¤Ï¡¢¤¹¤Ù¤Æ±¦Â¦¤Î¥Õ¥ì¡¼¥à¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+Ãí°Õ \- ¥Ç¥£¥ì¥¯¥È¥ê¤Ï\f3ÂÀ»ú\fP¤Ç¼¨¤·¤Æ¤¤¤Þ¤¹¡£¥¢¥¹¥¿¥ê¥¹¥¯(\f2*\fP)¤Ï¡¢Javadoc¤Ø¤Î°ú¿ô¤¬¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Ç¤Ï¤Ê¤¯¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾(*.java)¤Ç¤¢¤ë¾ì¹ç¤Ë\f2¾Êά¤µ¤ì¤ë\fP¥Õ¥¡¥¤¥ë¤ª¤è¤Ó¥Ç¥£¥ì¥¯¥È¥ê¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢°ú¿ô¤¬¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤Î¾ì¹ç¡¢\f2package\-list\fP¤ÏºîÀ®¤µ¤ì¤Þ¤¹¤¬¡¢¤½¤ÎÃæ¿È¤Ï¶õ¤Ç¤¹¡£doc\-files¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¥½¡¼¥¹¡¦¥Ä¥ê¡¼Æâ¤Ë¸ºß¤¹¤ë¾ì¹ç¤Ë¤Î¤ß¡¢À¸À®Àè¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ -+.fl -+\fP\f3apidocs\fP Top directory -+.fl -+ index.html Initial page that sets up HTML frames -+.fl -+ * overview\-summary.html Lists all packages with first sentence summaries -+.fl -+ overview\-tree.html Lists class hierarchy for all packages -+.fl -+ deprecated\-list.html Lists deprecated API for all packages -+.fl -+ constant\-values.html Lists values of static fields for all packages -+.fl -+ serialized\-form.html Lists serialized form for all packages -+.fl -+ * overview\-frame.html Lists all packages, used in upper\-left frame -+.fl -+ allclasses\-frame.html Lists all classes for all packages, used in lower\-left frame -+.fl -+ help\-doc.html Lists user help for how these pages are organized -+.fl -+ index\-all.html Default index created without \-splitindex option -+.fl -+ \f3index\-files\fP Directory created with \-splitindex option -+.fl -+ index\-<number>.html Index files created with \-splitindex option -+.fl -+ package\-list Lists package names, used only for resolving external refs -+.fl -+ stylesheet.css HTML style sheet for defining fonts, colors and positions -+.fl -+ \f3java\fP Package directory -+.fl -+ \f3applet\fP Subpackage directory -+.fl -+ Applet.html Page for Applet class -+.fl -+ AppletContext.html Page for AppletContext interface -+.fl -+ AppletStub.html Page for AppletStub interface -+.fl -+ AudioClip.html Page for AudioClip interface -+.fl -+ * package\-summary.html Lists classes with first sentence summaries for this package -+.fl -+ * package\-frame.html Lists classes in this package, used in lower left\-hand frame -+.fl -+ * package\-tree.html Lists class hierarchy for this package -+.fl -+ package\-use Lists where this package is used -+.fl -+ \f3doc\-files\fP Directory holding image and example files -+.fl -+ \f3class\-use\fP Directory holding pages API is used -+.fl -+ Applet.html Page for uses of Applet class -+.fl -+ AppletContext.html Page for uses of AppletContext interface -+.fl -+ AppletStub.html Page for uses of AppletStub interface -+.fl -+ AudioClip.html Page for uses of AudioClip interface -+.fl -+ \f3src\-html\fP Source code directory -+.fl -+ \f3java\fP Package directory -+.fl -+ \f3applet\fP Subpackage directory -+.fl -+ Applet.html Page for Applet source code -+.fl -+ AppletContext.html Page for AppletContext source code -+.fl -+ AppletStub.html Page for AppletStub source code -+.fl -+ AudioClip.html Page for AudioClip source code -+.fl -+.fi -+.SS -+À¸À®¤µ¤ì¤ëAPIÀë¸À -+.LP -+Javadoc¥Ä¡¼¥ë¤Ï¡¢¤½¤ì¤¾¤ì¤Î¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥Õ¥£¡¼¥ë¥É¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¤ª¤è¤Ó¥á¥½¥Ã¥É¤Îµ½Ò¤ÎºÇ½é¤Ë¡¢¤½¤ÎAPIÍѤÎÀë¸À¤òÀ¸À®¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2Boolean\fP¥¯¥é¥¹¤ÎÀë¸À¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+\f2public final class Boolean\fP -+.br -+\f2extends Object\fP -+.br -+\f2implements Serializable\fP -+.LP -+¤Þ¤¿¡¢\f2Boolean.valueOf\fP¥á¥½¥Ã¥É¤ÎÀë¸À¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+\f2public static Boolean valueOf(String s)\fP -+.LP -+Javadoc¥Ä¡¼¥ë¤Ç¤Ï¡¢½¤¾þ»Ò\f2public\fP¡¢\f2protected\fP¡¢\f2private\fP¡¢\f2abstract\fP¡¢\f2final\fP¡¢\f2static\fP¡¢\f2transient\fP¡¢¤ª¤è¤Ó\f2volatile\fP¤òÁȤ߹þ¤à¤³¤È¤Ï¤Ç¤¤Þ¤¹¤¬¡¢\f2synchronized\fP¤È\f2native\fP¤òÁȤ߹þ¤à¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤³¤ì¤é¸å¼Ô¤Î2¤Ä¤Î½¤¾þ»Ò¤Ï¡¢¼ÂÁõ¤Î¾ÜºÙ¤È¸«¤Ê¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢API»ÅÍͤˤϴޤޤì¤Þ¤»¤ó¡£ -+.LP -+API¤Ç¤Ï¡¢Ê¹ÔÀ¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤Ë¤Ä¤¤¤Æ¡¢¥¡¼¥ï¡¼¥É\f2synchronized\fP¤Ë°Í¸¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢¥³¥á¥ó¥È¤Î¼çÀâÌÀ¤È¤·¤Æ¥É¥¥å¥á¥ó¥È²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¡Ö1¤Ä¤Î\f2Enumeration\fP¤òÊ£¿ô¤Î¥¹¥ì¥Ã¥É¤«¤éʹԤ·¤Æ»ÈÍѤ¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡×¤Î¤è¤¦¤Ëµ½Ò¤·¤Þ¤¹¡£¥É¥¥å¥á¥ó¥È¤Ë¤Ï¡¢¤³¤ì¤é¤Î¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤ò¼Â¸½¤¹¤ëÊýË¡¤òµ½Ò¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¤¿¤È¤¨¤Ð¡¢\f2Hashtable\fP¤Ï¥¹¥ì¥Ã¥É¥»¡¼¥Õ¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¡¢¡Ö¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤ë¤¹¤Ù¤Æ¤Î¥á¥½¥Ã¥É¤òƱ´ü²½¤·¤Æ¤½¤ì¤ò¼Â¸½¤¹¤ë¡×¤Î¤è¤¦¤Ë»ØÄꤹ¤ëº¬µò¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥Ð¥±¥Ã¥È¡¦¥ì¥Ù¥ë¤ÇÆâÉôŪ¤ËƱ´ü²½¤¹¤ë¸¢¸Â¤òÊÝͤ·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤½¤¦¤¹¤ì¤Ð¡¢¤è¤ê¹âÅÙ¤ÊʹÔÀ¤¬Ä󶡤µ¤ì¤Þ¤¹¡£ -+.SH "¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È" -+.LP -+¥ª¥ê¥¸¥Ê¥ë¤Î¡Ö¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î»ÅÍ͡פϡ¢´ØÏ¢¹àÌܤò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.SS -+¥½¡¼¥¹¡¦¥³¡¼¥É¤Ø¤Î¥³¥á¥ó¥È¤ÎÁÞÆþ -+.LP -+¥½¡¼¥¹¡¦¥³¡¼¥É¤ÎǤ°Õ¤Î¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥á¥½¥Ã¥É¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¤Þ¤¿¤Ï¥Õ¥£¡¼¥ë¥É¤ÎÀë¸À¤ÎÁ°¤Ë¡¢\f2¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È\fP("doc comments")¤òµ½Ò¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£³Æ¥Ñ¥Ã¥±¡¼¥¸¤Ë¤â¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤òºîÀ®¤Ç¤¤Þ¤¹¡£¹½Ê¸¤Ï¼ã´³°Û¤Ê¤ê¤Þ¤¹¤¬¡¢³µÍפˤâ¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤òºîÀ®¤Ç¤¤Þ¤¹¡£¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ï¡¢Èó¸ø¼°¤Ë¡ÖJavadoc¥³¥á¥ó¥È¡×¤È¸Æ¤Ð¤ì¤Æ¤¤¤Þ¤¹(¤³¤ÎÍѸì¤Ï¾¦É¸´ØÏ¢¤Î»ÈÍÑÊýË¡¤Ë°ãÈ¿)¡£¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ï¡¢¥³¥á¥ó¥È¤ò»Ï¤Þ¤ê¤ò¼¨¤¹Ê¸»úÎó\f2/**\fP¤È¡¢¥³¥á¥ó¥È¤ò½ª¤ï¤ê¤ò¼¨¤¹Ê¸»úÎó\f2*/\fP¤Î´Ö¤Ë¤¢¤ëʸ»ú¤«¤é¹½À®¤µ¤ì¤Þ¤¹¡£¹ÔƬ¤Î¥¢¥¹¥¿¥ê¥¹¥¯¤Ï¡¢³Æ¹Ô¤Ëµ½Ò¤Ç¤¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢¸å½Ò¤·¤Þ¤¹¡£¥³¥á¥ó¥È¤Î¥Æ¥¥¹¥È¤Ï¡¢Ê£¿ô¹Ô¤Ë¤ï¤¿¤Ã¤Æµ½Ò¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+/** -+.fl -+ * This is the typical format of a simple documentation comment -+.fl -+ * that spans two lines. -+.fl -+ */ -+.fl -+\fP -+.fi -+.LP -+¥¹¥Ú¡¼¥¹¤òÀáÌ󤹤ë¤Ë¤Ï¡¢¥³¥á¥ó¥È¤ò1¹Ô¤ËÆþ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+/** This comment takes up only one line. */ -+.fl -+\fP -+.fi -+.LP -+\f3¥³¥á¥ó¥È¤ÎÇÛÃÖ\fP \- ¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ï¡¢¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥á¥½¥Ã¥É¡¢¤Þ¤¿¤Ï¥Õ¥£¡¼¥ë¥É¤ÎÀë¸À¤ÎľÁ°¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¤È¤¤Ë¤Î¤ßǧ¼±¤µ¤ì¤Þ¤¹¡£¥¯¥é¥¹¤ÎÎã¡¢¥á¥½¥Ã¥É¤ÎÎã¡¢¤ª¤è¤Ó¥Õ¥£¡¼¥ë¥É¤ÎÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¥á¥½¥Ã¥É¤ÎËÜÂΤËÃÖ¤«¤ì¤Æ¤¤¤ë¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ç¤Ï¡¢1¤Ä¤ÎÀë¸Àʸ¤Ë¤Ä¤1¤Ä¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î¤ß¤¬Ç§¼±¤µ¤ì¤Þ¤¹¡£ -+.LP -+¤è¤¯¤¢¤ë´Ö°ã¤¤¤Ï¡¢¥¯¥é¥¹¡¦¥³¥á¥ó¥È¤È¥¯¥é¥¹Àë¸À¤Î´Ö¤Ë\f2import\fPʸ¤òÃÖ¤¤¤Æ¤·¤Þ¤¦¤³¤È¤Ç¤¹¡£¤³¤Î¤è¤¦¤Êµ½Ò¤Ï¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¤³¤Î¤è¤¦¤Ê¥¯¥é¥¹¡¦¥³¥á¥ó¥È¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * This is the class comment for the class Whatever. -+.fl -+ */ -+.fl -+ -+.fl -+ import com.sun; // MISTAKE \- Important not to put import statement here -+.fl -+ -+.fl -+ public class Whatever { -+.fl -+ } -+.fl -+\fP -+.fi -+.LP -+\f3¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ï\fP\f4¼çÀâÌÀ\fP\f3¤Î¸å¤Ë\fP\f4¥¿¥°¡¦¥»¥¯¥·¥ç¥ó\fP\f3¤¬Â³¤¯\fP \- ³«»Ï¶èÀÚ¤êʸ»ú¤Ç¤¢¤ë\f2/**\fP¤Î¸å¤«¤é¥¿¥°¡¦¥»¥¯¥·¥ç¥ó¤Þ¤Ç¤¬\f2¼çÀâÌÀ\fP¤Ë¤Ê¤ê¤Þ¤¹¡£\f2¥¿¥°¡¦¥»¥¯¥·¥ç¥ó\fP¤Ï¡¢ÀèƬʸ»ú¤¬\f2@\fP¤Î¹Ô¤ÇÄêµÁ¤µ¤ì¤ëºÇ½é¤Î¥Ö¥í¥Ã¥¯¡¦¥¿¥°¤«¤é»Ï¤Þ¤ê¤Þ¤¹(ÀèƬ¤Î¥¢¥¹¥¿¥ê¥¹¥¯¡¢¶õÇòʸ»ú¡¢ÀèƬ¤Î¶èÀÚ¤êʸ»ú\f2/**\fP¤Ï½ü¤¯)¡£¼çÀâÌÀ¤òµ½Ò¤»¤º¡¢¥¿¥°¡¦¥»¥¯¥·¥ç¥ó¤Î¤ß¤Î¥³¥á¥ó¥È¤òµ½Ò¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¼çÀâÌÀ¤Ï¡¢¥¿¥°¡¦¥»¥¯¥·¥ç¥ó°Ê¹ß¤Ë³¤±¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¥¿¥°¤Î°ú¿ô¤Ï¡¢Ê£¿ô¹Ô¤Ë¤ï¤¿¤Ã¤Æµ½Ò¤Ç¤¤Þ¤¹¡£¥¿¥°¤Î¿ô¤ËÀ©¸Â¤Ï¤¢¤ê¤Þ¤»¤ó¡£²¿²ó¤âµ½Ò¤Ç¤¤ë¥¿¥°¤È¡¢1²ó¤·¤«µ½Ò¤Ç¤¤Ê¤¤¥¿¥°¤¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î\f2@see\fP¤«¤é¥¿¥°¡¦¥»¥¯¥·¥ç¥ó¤Ï»Ï¤Þ¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+/** -+.fl -+ * This sentence would hold the main description for this doc comment. -+.fl -+ * @see java.lang.Object -+.fl -+ */ -+.fl -+\fP -+.fi -+.LP -+\f3¥Ö¥í¥Ã¥¯¡¦¥¿¥°¤È¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°\fP \- \f2¥¿¥°\fP¤Ï¡¢Javadoc¥Ä¡¼¥ë¤¬½èÍý¤Ç¤¤ë¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥ÈÆâ¤ÎÆÃÊ̤ʥ¡¼¥ï¡¼¥É¤Ç¤¹¡£¥¿¥°¤Ë¤Ï2¤Ä¤Î¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹¡£1¤Ä¤Ï\f2@tag\fP¤Î¤è¤¦¤Ëɽµ¤µ¤ì¤ë¥Ö¥í¥Ã¥¯¡¦¥¿¥°(¡Ö¥¹¥¿¥ó¥É¥¢¥í¥ó¡¦¥¿¥°¡×¤È¤â¸Æ¤Ð¤ì¤ë)¡¢¤â¤¦1¤Ä¤Ï\f2{@tag}\fP¤Î¤è¤¦¤ËÃæ³ç¸Ì¤Ç°Ï¤ó¤Çɽµ¤µ¤ì¤ë¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°¤Ç¤¹¡£¥Ö¥í¥Ã¥¯¡¦¥¿¥°¤¬²ò¼á¤µ¤ì¤ë¤Ë¤Ï¡¢¹ÔƬ¤Î¥¢¥¹¥¿¥ê¥¹¥¯¡¢¶õÇòʸ»ú¡¢¶èÀÚ¤êʸ»ú(\f2/**\fP)¤ò½ü¤¤¤Æ¡¢¹Ô¤ÎÀèƬ¤ËÃÖ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢\f2@\fPʸ»ú¤ò¥Æ¥¥¹¥ÈÆâ¤ÎÊ̤ξì½ê¤Ç»ÈÍѤ·¤Æ¤â¡¢¥¿¥°¤Î³«»Ï¤È¤·¤Æ²ò¼á¤µ¤ì¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£\f2@\fPʸ»ú¤ò»ÈÍѤ·¤Æ¹Ô¤ò³«»Ï¤·¤Æ¤â¡¢¤½¤ì¤¬²ò¼á¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢HTML¥¨¥ó¥Æ¥£¥Æ¥£\f2@\fP¤ò»ÈÍѤ·¤Þ¤¹¡£¤½¤ì¤¾¤ì¤Î¥Ö¥í¥Ã¥¯¡¦¥¿¥°¤Ë¤Ï¡¢´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Æ¥¥¹¥È¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥Æ¥¥¹¥È¤Ï¡¢¥¿¥°¤Î¸å¤«¤é¡¢¼¡¤Î¥¿¥°¤ÎÁ°¡¢¤Þ¤¿¤Ï¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ÎºÇ¸å¤Þ¤Ç¤Î´Ö¤Ëµ½Ò¤µ¤ì¤¿¥Æ¥¥¹¥È¤Ç¤¹(¥¿¥°¤Þ¤¿¤Ï¥³¥á¥ó¥È¶èÀÚ¤êʸ»ú¤ò½ü¤¯)¡£¤³¤Î´ØÏ¢¥Æ¥¥¹¥È¤Ï¡¢Ê£¿ô¹Ô¤Ë¤ï¤¿¤Ã¤Æµ½Ò¤Ç¤¤Þ¤¹¡£¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°¤Ï¡¢¥Æ¥¥¹¥È¤òµ½Ò¤Ç¤¤ë¾ì½ê¤Ç¤¢¤ì¤Ð¤É¤³¤Ë¤Ç¤âÃÖ¤¯¤³¤È¤¬¤Ç¤¡¢²ò¼á¤µ¤ì¤Þ¤¹¡£¼¡¤ÎÎã¤Ë¤Ï¥Ö¥í¥Ã¥¯¡¦¥¿¥°\f2@deprecated\fP¤È¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°\f2{@link}\fP¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+/** -+.fl -+ * @deprecated As of JDK 1.1, replaced by {@link #setBounds(int,int,int,int)} -+.fl -+ */ -+.fl -+\fP -+.fi -+.LP -+\f3¥³¥á¥ó¥È¤ÏHTML¤Çµ½Ò¤¹¤ë\fP \- ¥Æ¥¥¹¥È¤ÏHTML¤Çµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢HTML¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ë¤³¤È¡¢¤ª¤è¤ÓHTML¥¿¥°¤ò»ÈÍѤǤ¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£HTML¤Î¥Ð¡¼¥¸¥ç¥ó¤È¤·¤Æ¤Ï¡¢»ÈÍѤ¹¤ë¥Ö¥é¥¦¥¶¤¬¥µ¥Ý¡¼¥È¤¹¤ëǤ°Õ¤Î¥Ð¡¼¥¸¥ç¥ó¤ò»ÈÍѤǤ¤Þ¤¹¡£É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¤Ï¡¢¥«¥¹¥±¡¼¥Ç¥£¥ó¥°¡¦¥¹¥¿¥¤¥ë¡¦¥·¡¼¥È¤ª¤è¤Ó¥Õ¥ì¡¼¥à¤ò´Þ¤á¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È°Ê³°¤ÎÉôʬ¤ÇHTML 3.2¤Ë½àµò¤·¤¿¥³¡¼¥É¤òÀ¸À®¤¹¤ë¤è¤¦¤ËºîÀ®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£(¤¿¤À¤·¡¢¥Õ¥ì¡¼¥à¡¦¥»¥Ã¥ÈÂбþ¤Î¤¿¤á¡¢À¸À®¤µ¤ì¤ë³Æ¥Õ¥¡¥¤¥ë¤Ë¤Ï¡ÖHTML 4.0¡×¤ÈÀèƬ¤Ëµ½Ò¤µ¤ì¤Þ¤¹¡£) -+.LP -+¤¿¤È¤¨¤Ð¡¢¤è¤ê¾®¤µ¤¤(\f2<\fP)µ¹æ¤ª¤è¤Ó¤è¤êÂ礤¤(\f2>\fP)µ¹æ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ï¡¢\f2<\fP¤ª¤è¤Ó\f2>\fP¤Èµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Æ±Íͤˡ¢¥¢¥ó¥Ñ¥µ¥ó¥É(\f2&\fP)¤Ï\f2&\fP¤Èµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¼¡¤ÎÎã¤Ç¤Ï¡¢ÂÀ»ú¤ÎHTML¥¿¥°\f2<b>\fP¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+¼¡¤Ë¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+/** -+.fl -+ * This is a <b>doc</b> comment. -+.fl -+ * @see java.lang.Object -+.fl -+ */ -+.fl -+\fP -+.fi -+.LP -+\f3¹ÔƬ¤Î¥¢¥¹¥¿¥ê¥¹¥¯\fP \- Javadoc¤Ë¤è¤ë¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î²òÀÏ»þ¤Ë¡¢³Æ¹Ô¤ÎÀèƬ¤Ë¤¢¤ë¥¢¥¹¥¿¥ê¥¹¥¯(\f2*\fP)ʸ»ú¤ÏÇË´þ¤µ¤ì¤Þ¤¹¡£ºÇ½é¤Î¥¢¥¹¥¿¥ê¥¹¥¯(\f2*\fP)ʸ»ú¤è¤êÁ°¤Ë¤¢¤ë¶õÇò¤ä¥¿¥Ö¤âÇË´þ¤µ¤ì¤Þ¤¹¡£¥Ð¡¼¥¸¥ç¥ó1.4¤«¤é¤Ï¡¢¹Ô¤ÎÀèƬ¤Î¥¢¥¹¥¿¥ê¥¹¥¯¤ò¾Êά¤·¤Æ¤â¡¢ÀèƬ¤Î¶õÇòʸ»ú¤Ïºï½ü¤µ¤ì¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£¤³¤Î¤¿¤á¡¢¥³¡¼¥ÉÎã¤òľÀܥɥ¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î\f2<PRE>\fP¥¿¥°Æâ¤ËÄ¥¤êÉÕ¤±¤Æ¤â¡¢¥¤¥ó¥Ç¥ó¥È¤¬ÊÝ»ý¤µ¤ì¤Þ¤¹¡£Ä̾¥Ö¥é¥¦¥¶¤Ï¡¢¶õÇòʸ»ú¤ò¥¿¥Ö¤è¤ê¤â°ìΧ¤Ë²ò¼á¤·¤Þ¤¹¡£¥¤¥ó¥Ç¥ó¥È¤Îµ¯ÅÀ¤Ï(¶èÀÚ¤êʸ»ú\f2/**\fP¤Þ¤¿¤Ï\f2<PRE>\fP¥¿¥°¤Ç¤Ï¤Ê¤¯)º¸¥Þ¡¼¥¸¥ó¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+\f3ºÇ½é¤Îʸ\fP \- ³Æ¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ÎºÇ½é¤Îʸ¤Ï¡¢Àë¸À¤µ¤ì¤Æ¤¤¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤Ë´Ø¤¹¤ë´Ê·é¤«¤Ä´°Á´¤ÊÍ×Ìóʸ¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Îʸ¤Ï¡¢¶õÇò¡¢¥¿¥Ö¡¢¤Þ¤¿¤Ï¹Ô½ªÎ»Ê¸»ú¤¬Â³¤¯ºÇ½é¤Î¥Ô¥ê¥ª¥É¡¢¤Þ¤¿¤ÏºÇ½é¤Î¥Ö¥í¥Ã¥¯¡¦¥¿¥°¤¬¤¢¤ë°ÌÃ֤ǽª¤ï¤ê¤Þ¤¹¡£ºÇ½é¤Îʸ¤Ï¡¢Javadoc¥Ä¡¼¥ë¤Ë¤è¤Ã¤ÆHTML¥Ú¡¼¥¸¤ÎÀèƬ¤Ë¤¢¤ë¥á¥ó¥Ð¡¼¤Î³µÍפÎÉôʬ¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ -+.LP -+\f3Ê£¿ô¥Õ¥£¡¼¥ë¥É¤ÎÀë¸À\fP \- Java¤Ç¤Ï¡¢1¤Ä¤Îʸ¤ÇÊ£¿ô¤Î¥Õ¥£¡¼¥ë¥É¤òÀë¸À¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢¤³¤Îʸ¤Ë¤Ï¡¢1¤Ä¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤·¤«µ½Ò¤Ç¤¤Þ¤»¤ó¡£¤½¤Î¥³¥á¥ó¥È¤¬¡¢¤¹¤Ù¤Æ¤Î¥Õ¥£¡¼¥ë¥É¤ËÂФ·¤Æ¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥Õ¥£¡¼¥ë¥É¤´¤È¤Ë¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤òµ½Ò¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢³Æ¥Õ¥£¡¼¥ë¥É¤òÊÌ¡¹¤Îʸ¤ÇÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ï¡¢1¤Ä¤ÎÀë¸À¤È¤·¤Æµ½Ò¤¹¤ë¤ÈÉÔŬÀڤǤ¹¡£¤³¤Î¾ì¹ç¤Ï¡¢Àë¸À¤ò2¤Ä¤Ëʬ¤±¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+/** -+.fl -+ * The horizontal and vertical distances of point (x,y) -+.fl -+ */ -+.fl -+public int x, y; // Avoid this -+.fl -+\fP -+.fi -+.LP -+¾å¤Î¥³¡¼¥É¤«¤é¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¥É¥¥å¥á¥ó¥È¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+public int \fP\f3x\fP -+.fl -+.fi -+.RS 3 -+The horizontal and vertical distances of point (x,y) -+.RE -+.nf -+\f3 -+.fl -+public int \fP\f3y\fP -+.fl -+.fi -+.RS 3 -+The horizontal and vertical distances of point (x,y) -+.RE -+.LP -+\f3¸«½Ð¤·¥¿¥°¤Î»ÈÍѤˤÏÍ×Ãí°Õ\fP \- ¥á¥ó¥Ð¡¼¤ËÂФ·¤Æ¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤òµ½Ò¤¹¤ë¤È¤¤Ë¤Ï¡¢<H1>¤ä<H2>¤Ê¤É¤ÎHTML¸«½Ð¤·¥¿¥°¤ò»ÈÍѤ·¤Ê¤¤¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢´°Á´¤Ê¹½Â¤²½¥É¥¥å¥á¥ó¥È¤òºîÀ®¤¹¤ë¤Î¤Ç¡¢¤³¤Î¤è¤¦¤Ê¹½Â¤²½¥¿¥°¤¬»ÈÍѤµ¤ì¤Æ¤¤¤ë¤È¡¢À¸À®¥É¥¥å¥á¥ó¥È¤Î·Á¼°¤¬°±Æ¶Á¤ò¼õ¤±¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¤¿¤À¤·¡¢¥¯¥é¥¹¤ä¥Ñ¥Ã¥±¡¼¥¸¤Î¥³¥á¥ó¥È¤Ç¤Ï¡¢¤³¤ì¤é¤Î¸«½Ð¤·¤ò»ÈÍѤ·¤ÆÆȼ«¤Î¹½Â¤¤ò»ØÄꤷ¤Æ¤«¤Þ¤¤¤Þ¤»¤ó¡£ -+.SS -+¥á¥½¥Ã¥É¡¦¥³¥á¥ó¥È¤Î¼«Æ°¥³¥Ô¡¼ -+.LP -+Javadoc¥Ä¡¼¥ë¤Ë¤Ï¡¢¼¡¤Î2¤Ä¤Î¾ì¹ç¤Ë¡¢¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥á¥½¥Ã¥É¡¦¥³¥á¥ó¥È¤ò¥³¥Ô¡¼¤Þ¤¿¤Ï¡Ö·Ñ¾µ¡×¤¹¤ëµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¡£¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥Õ¥£¡¼¥ë¥É¡¢¤ª¤è¤Ó¥Í¥¹¥È¤µ¤ì¤¿¥¯¥é¥¹¤Ï¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò·Ñ¾µ¤·¤Þ¤»¤ó¡£ -+.RS 3 -+.TP 2 -+o -+\f3¼«Æ°Åª¤Ë¥³¥á¥ó¥È¤ò·Ñ¾µ¤·¤Æ¸«¤Ä¤«¤é¤Ê¤¤¥Æ¥¥¹¥È¤òËä¤á¤ë\fP \- ¼çÀâÌÀ¡¢\f2@return\fP¥¿¥°¡¢\f2@param\fP¥¿¥°¡¢¤Þ¤¿¤Ï\f2@throws\fP ¥¿¥°¤¬¥á¥½¥Ã¥É¡¦¥³¥á¥ó¥È¤Ë¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¥á¥½¥Ã¥É¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤Þ¤¿¤Ï¼ÂÁõ¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¤½¤Î¥á¥½¥Ã¥É¤«¤é¡¢Âбþ¤¹¤ë¼çÀâÌÀ¤Þ¤¿¤Ï¥¿¥°¡¦¥³¥á¥ó¥È¤ò¡¢¼¡¤Î¥¢¥ë¥´¥ê¥º¥à¤Ë½¾¤Ã¤Æ¥³¥Ô¡¼¤·¤Þ¤¹¡£ -+.LP -+¸·Ì©¤Ë¤Ï¡¢ÆÃÄê¤Î¥Ñ¥é¥á¡¼¥¿¤Î\f2@param\fP¥¿¥°¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¢¤½¤Î¥Ñ¥é¥á¡¼¥¿¤Î¥³¥á¥ó¥È¤¬¡¢¾å°Ì¤Î·Ñ¾µ³¬ÁؤΥ᥽¥Ã¥É¤«¤é¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ÆÃÄê¤ÎÎã³°¤Î\f2@throws\fP¥¿¥°¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¢¤½¤ÎÎã³°¤¬Àë¸À¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë\f2¤«¤®¤ê\fP¡¢\f2@throws\fP¥¿¥°¤¬¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ -+.LP -+¤³¤ÎÆ°ºî¤Ï¥Ð¡¼¥¸¥ç¥ó1.3°ÊÁ°¤ÎÆ°ºî¤È¤ÏÂоÈŪ¤Ç¤¹¡£¤³¤ì¤Þ¤Ç¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢¼çÀâÌÀ¤Þ¤¿¤Ï¥¿¥°¤¬Â¸ºß¤¹¤ì¤Ð¡¢¥³¥á¥ó¥È¤Ï°ìÀڷѾµ¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£ -+.TP 2 -+o -+\f3{@inheritDoc}¥¿¥°¤ò´Þ¤à¥³¥á¥ó¥È¤òÌÀ¼¨Åª¤Ë·Ñ¾µ¤¹¤ë\fP \- ¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°\f2{@inheritDoc}\fP¤ò¡¢¥á¥½¥Ã¥É¤Î¼çÀâÌÀÆâ¤Þ¤¿¤Ï\f2@return\fP¥¿¥°¡¢\f2@param\fP¥¿¥°¡¢¤Þ¤¿¤Ï\f2@throws\fP¤Î¤¤¤º¤ì¤«¤Î¥¿¥°¡¦¥³¥á¥ó¥ÈÆâ¤ËÁÞÆþ¤·¤Þ¤¹¡£Âбþ¤¹¤ë·Ñ¾µ¤µ¤ì¤¿¼çÀâÌÀ¤Þ¤¿¤Ï¥¿¥°¡¦¥³¥á¥ó¥È¤¬¤½¤Î°ÌÃ֤˥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ -+.RE -+.LP -+¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò¼ÂºÝ¤Ë¥³¥Ô¡¼¤ËÍøÍѤ¹¤ë¤Ë¤Ï¡¢·Ñ¾µ¤·¤¿¥á¥½¥Ã¥É¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬\-sourcepath¤Ç»ØÄꤷ¤¿¥Ñ¥¹¤Î¤ß¤ËÃÖ¤«¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¡¢¥¯¥é¥¹¤â¥Ñ¥Ã¥±¡¼¥¸¤âÅϤ¹É¬ÍפϤ¢¤ê¤Þ¤»¤ó¡£¤³¤ÎÅÀ¤Ï¡¢¥¯¥é¥¹¤¬¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥¯¥é¥¹¤Ç¤¢¤ë¤³¤È¤¬É¬ÍפÀ¤Ã¤¿1.3.x°ÊÁ°¤Î¥ê¥ê¡¼¥¹¤È°Û¤Ê¤ê¤Þ¤¹¡£ -+.LP -+\f3¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤«¤é¤Î·Ñ¾µ\fP \- ¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤«¤é·Ñ¾µ¤¹¤ë¼¡¤Î3¤Ä¤Î¾ì¹ç¤Ë¡¢¥³¥á¥ó¥È¤Î·Ñ¾µ¤¬¹Ô¤ï¤ì¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¤¬¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Æ¤¤¤ë¾ì¹ç -+.TP 2 -+o -+¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥á¥½¥Ã¥É¤¬¥¹¡¼¥Ñ¡¼¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥á¥½¥Ã¥É¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Æ¤¤¤ë¾ì¹ç -+.TP 2 -+o -+¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¤¬¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥á¥½¥Ã¥É¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¾ì¹ç -+.RE -+.LP -+ºÇ½é¤Î2¤Ä¤Î¥±¡¼¥¹(¥á¥½¥Ã¥É¤¬¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Æ¤¤¤ë¾ì¹ç)¤Ç¤Ï¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¤½¤Î¥³¥á¥ó¥È¤¬·Ñ¾µ¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ë¤«¤«¤ï¤é¤º¡¢¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Î¥É¥¥å¥á¥ó¥ÈÆâ¤Ë¡Ö¥ª¡¼¥Ð¡¼¥é¥¤¥É¡×¤È¤¤¤¦¾®¸«½Ð¤·¤òÀ¸À®¤·¡¢¥ª¡¼¥Ð¡¼¥é¥¤¥É¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Ø¤Î¥ê¥ó¥¯¤ò½ñ¤¹þ¤ß¤Þ¤¹¡£ -+.LP -+3¤ÄÌܤΥ±¡¼¥¹(ÆÃÄê¤Î¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¤¬¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥á¥½¥Ã¥É¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¾ì¹ç)¤Ç¤Ï¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Î¥É¥¥å¥á¥ó¥ÈÆâ¤Ë¡ÖÄêµÁ¡×¤È¤¤¤¦¾®¸«½Ð¤·¤òÀ¸À®¤·¡¢¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Ø¤Î¥ê¥ó¥¯¤ò½ñ¤¹þ¤ß¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥³¥á¥ó¥È¤¬·Ñ¾µ¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ë¤«¤«¤ï¤ê¤Þ¤»¤ó¡£ -+.LP -+\f3¥á¥½¥Ã¥É¡¦¥³¥á¥ó¥È¤¬·Ñ¾µ¤µ¤ì¤ë¥¢¥ë¥´¥ê¥º¥à\fP \- ¤¢¤ë¥á¥½¥Ã¥É¤Ë¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤¬µ½Ò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤Þ¤¿¤Ï{@inheritDoc}¥¿¥°¤¬¤¢¤ë¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¼¡¤Î¥¢¥ë¥´¥ê¥º¥à¤ò»ÈÍѤ·¤ÆŬÀڤʥ³¥á¥ó¥È¤ò¸¡º÷¤·¤Þ¤¹¡£¤³¤Î¥¢¥ë¥´¥ê¥º¥à¤Ï¡¢ºÇ¤â¸·Ì©¤ËŬÀڤʥɥ¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò¸¡º÷¤Ç¤¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤ª¤ê¡¢¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤è¤ê¤â¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¬Í¥À褵¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+1. -+ľÀܤ˼ÂÁõ¤µ¤ì¤Æ¤¤¤ë(¤Þ¤¿¤Ï¡¢³ÈÄ¥¤µ¤ì¤Æ¤¤¤ë)¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¡¢¥á¥½¥Ã¥É¤ÎÀë¸À¤Ç¡Öimplements¡×(¤Þ¤¿¤Ï¡Öextends¡×)¤È¤¤¤¦¸ì¤Î¸å¤Ë½Ð¸½¤¹¤ë½ç½ø¤Ç¡¢1¤Ä¤º¤ÄÄ´¤Ù¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Ë¤Ä¤¤¤ÆºÇ½é¤Ë¸«¤Ä¤«¤Ã¤¿¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤òºÎÍѤ·¤Þ¤¹¡£ -+.TP 3 -+2. -+¼ê½ç1¤Ç¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢Ä¾ÀܼÂÁõ¤µ¤ì¤Æ¤¤¤ë(¤Þ¤¿¤Ï¡¢³ÈÄ¥¤µ¤ì¤Æ¤¤¤ë)¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¤½¤ì¤¾¤ì¤ËÂФ·¤Æ¡¢¤³¤Î¥¢¥ë¥´¥ê¥º¥àÁ´ÂΤòºÆµ¢Åª¤ËŬÍѤ·¤Þ¤¹(¤½¤ÎºÝ¤Î½ç½ø¤Ï¡¢¼ê½ç1¤Ç¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÄ´¤Ù¤¿¤È¤¤Î½ç½ø¤ÈƱ¤¸)¡£ -+.TP 3 -+3. -+¼ê½ç2¤Ç¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ç¡¢¤³¤Î¥¯¥é¥¹¤¬Object°Ê³°¤Î¥¯¥é¥¹¤Ç¤¢¤ë(¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤Ï¤Ê¤¤)¾ì¹ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë½èÍý¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+a. -+¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤Ë¤³¤Î¥á¥½¥Ã¥É¤Ë¤Ä¤¤¤Æ¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤¬µ½Ò¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤Î¥³¥á¥ó¥È¤òºÎÍѤ·¤Þ¤¹¡£ -+.TP 3 -+b. -+¼ê½ç3a¤Ç¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤ËÂФ·¤Æ¡¢¤³¤Î¥¢¥ë¥´¥ê¥º¥àÁ´ÂΤòºÆµ¢Åª¤ËŬÍѤ·¤Þ¤¹¡£ -+.RE -+.RE -+.SH "javadoc¥¿¥°" -+.LP -+Javadoc¥Ä¡¼¥ë¤Ï¡¢Java¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥ÈÆâ¤ËËä¤á¹þ¤Þ¤ì¤¿ÆÃÊ̤ʥ¿¥°¤ò²òÀϤ·¤Þ¤¹¡£¤³¤ì¤é¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥¿¥°¤ò»ÈÍѤ¹¤ë¤È¡¢´°Á´¤ÊÀ°·Á¼°¤ÎAPI¤ò¥½¡¼¥¹¡¦¥³¡¼¥É¤«¤é¼«Æ°Åª¤ËÀ¸À®¤Ç¤¤Þ¤¹¡£¥¿¥°¤Ï¡Ö¥¢¥Ã¥È¥Þ¡¼¥¯¡×µ¹æ(\f2@\fP)¤Ç»Ï¤Þ¤ê¡¢Âçʸ»ú¤È¾®Ê¸»ú¤¬¶èÊ̤µ¤ì¤Þ¤¹¡£¤³¤ì¤é¤Î¥¿¥°¤Ï¡¢É½¼¨¤µ¤ì¤Æ¤¤¤ë¤È¤ª¤ê¤ËÂçʸ»ú¤È¾®Ê¸»ú¤ò»ÈÍѤ·¤ÆÆþÎϤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥¿¥°¤Ï¡¢¹Ô¤ÎÀèƬ(ÀèƬ¤Î¶õÇòʸ»ú¤È¾Êά²Äǽ¤Ê¥¢¥¹¥¿¥ê¥¹¥¯¤Î¸å)¤ËÃÖ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤½¤¦¤·¤Ê¤¤¤È¡¢Ä̾ï¤Î¥Æ¥¥¹¥È¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£´·Îã¤È¤·¤Æ¡¢Æ±¤¸Ì¾Á°¤Î¥¿¥°¤Ï1²Õ½ê¤Ë¤Þ¤È¤á¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2@see\fP¥¿¥°¤¬Ê£¿ô¤¢¤ë¾ì¹ç¤Ï¡¢¤¹¤Ù¤ÆƱ¤¸¾ì½ê¤Ë¤Þ¤È¤á¤ÆÇÛÃÖ¤·¤Þ¤¹¡£ -+.LP -+¥¿¥°¤Ë¤Ï¼¡¤Î2¤Ä¤Î¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f3¥Ö¥í¥Ã¥¯¡¦¥¿¥°\fP \- ¼çÀâÌÀ¤Ë³¤¯¥¿¥°¡¦¥»¥¯¥·¥ç¥óÆâ¤Ë¤Î¤ßµ½Ò²Äǽ¡£¥Ö¥í¥Ã¥¯¡¦¥¿¥°¤Ï¡¢\f2@tag\fP¤Î·Á¼°¤ò¤È¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\f3¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°\fP \- ¼çÀâÌÀÆâ¡¢¤Þ¤¿¤Ï¥Ö¥í¥Ã¥¯¡¦¥¿¥°¤Î¥³¥á¥ó¥ÈÆâ¤Ëµ½Ò²Äǽ¡£¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°¤Ï¡¢\f2{@tag}\fP¤Î¤è¤¦¤ËÃæ³ç¸Ì¤Ç°Ï¤ß¤Þ¤¹¡£ -+.RE -+.LP -+¸½»þÅÀ¤Ç͸ú¤Ê¥¿¥°¤Ï¡¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 80 0 -+.nr 38 \w\f3¥¿¥°\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@author\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2{@code}\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2{@docRoot}\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@deprecated\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@exception\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2{@inheritDoc}\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2{@link}\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2{@linkplain}\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2{@literal}\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@param\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@return\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@see\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@serial\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@serialData\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@serialField\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@since\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@throws\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2{@value}\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f2@version\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ƳÆþ¤µ¤ì¤¿JDK/SDK\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.0 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.5 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.3 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.0 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.0 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.4 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.2 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.4 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.5 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.0 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.0 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.0 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.2 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.2 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.2 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.1 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.2 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.4 -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w1.0 -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 861 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3¥¿¥°\fP\h'|\n(41u'\f3ƳÆþ¤µ¤ì¤¿JDK/SDK\fP -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@author\fP\h'|\n(41u'1.0 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2{@code}\fP\h'|\n(41u'1.5 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2{@docRoot}\fP\h'|\n(41u'1.3 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@deprecated\fP\h'|\n(41u'1.0 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@exception\fP\h'|\n(41u'1.0 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2{@inheritDoc}\fP\h'|\n(41u'1.4 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2{@link}\fP\h'|\n(41u'1.2 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2{@linkplain}\fP\h'|\n(41u'1.4 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2{@literal}\fP\h'|\n(41u'1.5 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@param\fP\h'|\n(41u'1.0 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@return\fP\h'|\n(41u'1.0 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@see\fP\h'|\n(41u'1.0 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@serial\fP\h'|\n(41u'1.2 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@serialData\fP\h'|\n(41u'1.2 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@serialField\fP\h'|\n(41u'1.2 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@since\fP\h'|\n(41u'1.1 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@throws\fP\h'|\n(41u'1.2 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2{@value}\fP\h'|\n(41u'1.4 -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f2@version\fP\h'|\n(41u'1.0 -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-42 -+.LP -+¥«¥¹¥¿¥à¡¦¥¿¥°¤Ë¤Ä¤¤¤Æ¤Ï¡¢\-tag¥ª¥×¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RS 3 -+.TP 3 -+@author\ name\-text -+\-author¥ª¥×¥·¥ç¥ó¤¬»ÈÍѤµ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢À¸À®¥É¥¥å¥á¥ó¥È¤Ë¡ÖºîÀ®¼Ô¡×¥¨¥ó¥È¥ê¤òÄɲ䷤ơ¢»ØÄꤵ¤ì¤¿\f2name\-text\fP¤ò½ñ¤¹þ¤ß¤Þ¤¹¡£1¤Ä¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ËÊ£¿ô¤Î\f2@author\fP¥¿¥°¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£1¤Ä¤Î\f2@author\fP¥¿¥°¤Ë1¤Ä¤Î̾Á°¤ò»ØÄꤹ¤ë¤³¤È¤â¡¢Ê£¿ô¤Î̾Á°¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£Á°¼Ô¤Î¾ì¹ç¤Ï¡¢Javadoc¥Ä¡¼¥ë¤Ë¤è¤Ã¤Æ̾Á°¤È̾Á°¤Î´Ö¤Ë¥«¥ó¥Þ(\f2,\fP)¤È¶õÇòʸ»ú¤¬ÁÞÆþ¤µ¤ì¤Þ¤¹¡£¸å¼Ô¤Î¾ì¹ç¤Ï¡¢¥Æ¥¥¹¥ÈÁ´ÂΤ¬¡¢²òÀϤµ¤ì¤ë¤³¤È¤Ê¤¯¡¢À¸À®¥É¥¥å¥á¥ó¥È¤Ë¤½¤Î¤Þ¤Þ¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥«¥ó¥Þ¤Ç¤Ï¤Ê¤¯¡¢³Æ¸À¸ì¤ËÂбþ¤·¤¿Ì¾Á°¶èÀÚ¤êʸ»ú¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ë¤È¤¤Ï¡¢1¤Ä¤Î¥¿¥°¤ËÊ£¿ô¤Î̾Á°¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£ -+.RE -+.LP -+¾ÜºÙ¤Ï¡¢¥¿¥°¤ò»ÈÍѤǤ¤ë¾ì½ê¤ª¤è¤Ó -+.na -+\f2@author¥¿¥°¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@author¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.RS 3 -+.TP 3 -+@deprecated\ deprecated\-text Ãí°Õ: @DeprecatedÃí¼á¤ò»ÈÍѤ·¤Æ¡¢¥×¥í¥°¥é¥àÍ×ÁǤòÈó¿ä¾©¤Ë¤Ç¤¤Þ¤¹¡£ -+.RE -+.LP -+¤³¤ÎAPI¤ÏÆ°ºî¤·Â³¤±¤Þ¤¹¤¬¡¢¤³¤ÎAPI¤ò»ÈÍѤ·¤Ê¤¤¤³¤È¤òÁ¦¤á¤ë¥³¥á¥ó¥È¤òÄɲä·¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢\f2deprecated\-text\fP¤ò¼çÀâÌÀ¤ÎÁ°¤Ë°ÜÆ°¤·¤Æ¥¤¥¿¥ê¥Ã¥¯¤Ë¤·¡¢¤½¤ÎÁ°¤ËÂÀ»ú¤Î·Ù¹ð¡Ö¿ä¾©¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¡×¤òÄɲä·¤Þ¤¹¡£¤³¤Î¥¿¥°¤Ï¡¢¤¹¤Ù¤Æ¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¡¢¤Ä¤Þ¤ê³µÍס¢¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥á¥½¥Ã¥É¡¢¤ª¤è¤Ó¥Õ¥£¡¼¥ë¥É¤Ç͸ú¤Ç¤¹¡£ -+.LP -+\f2deprecated\-text\fP¤ÎºÇ½é¤Îʸ¤Ç¤Ï¡¢¾¯¤Ê¤¯¤È¤â¡¢¤½¤ÎAPI¤¬¿ä¾©¤µ¤ì¤Ê¤¯¤Ê¤Ã¤¿»þ´ü¤È¡¢ÂåÂؤȤ·¤Æ»ÈÍѤ¹¤ëAPI¤ò¥æ¡¼¥¶¡¼¤ËÄ󼨤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢¤³¤ÎºÇ½é¤Îʸ¤Î¤ß¤ò¡¢³µÍ×¥»¥¯¥·¥ç¥ó¤Èº÷°ú¤Ë¥³¥Ô¡¼¤·¤Þ¤¹¡£¤½¤Î¸å¤Îʸ¤Ç¤Ï¡¢¿ä¾©¤µ¤ì¤Ê¤¤Íýͳ¤òÀâÌÀ¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤«¤ï¤ê¤ÎAPI¤ò»Ø¤·¼¨¤¹\f2{@link}\fP¥¿¥°(Javadoc 1.2°Ê¹ß¤Î¾ì¹ç)¤ò´Þ¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+¾ÜºÙ¤Ï¡¢ -+.na -+\f2@deprecated¥¿¥°¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@deprecated¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RS 3 -+.TP 2 -+o -+Javadoc 1.2°Ê¹ß¤Ç¤Ï¡¢\f2{@link}\fP¥¿¥°¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢É¬Íפʾì½ê¤Ë¥¤¥ó¥é¥¤¥ó¤Ç¥ê¥ó¥¯¤òºîÀ®¤Ç¤¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+/** -+.fl -+ * @deprecated As of JDK 1.1, replaced by {@link #setBounds(int,int,int,int)} -+.fl -+ */ -+.fl -+ -+.fl -+\fP -+.fi -+.TP 2 -+o -+Javadoc 1.1¤Ç¤Ï¡¢\f2@see\fP¥¿¥°(¥¤¥ó¥é¥¤¥ó¤ÏÉÔ²Ä)¤ò\f2@deprecated\fP¥¿¥°¤´¤È¤ËºîÀ®¤¹¤ë¤Î¤¬É¸½à¤Î·Á¼°¤Ç¤¹¡£ -+.RE -+.LP -+¿ä¾©¤µ¤ì¤Ê¤¤¥¿¥°¤Î¾ÜºÙ¤Ï¡¢ -+.na -+\f2@deprecated¥¿¥°\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/deprecation/index.html¤Î¥É¥¥å¥á¥ó¥È¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.RS 3 -+.TP 3 -+{@code\ text} -+\f2<code>{@literal}</code>\fP¤ÈƱÅù¤Ç¤¹¡£ -+.LP -+¥Æ¥¥¹¥È¤òHTML¥Þ¡¼¥¯¥¢¥Ã¥×¤Þ¤¿¤Ï¥Í¥¹¥È¤µ¤ì¤¿javadoc¥¿¥°¤È¤·¤Æ²ò¼á¤»¤º¤Ë¡¢\f2text\fP¤ò\f2¥³¡¼¥É\fP¡¦¥Õ¥©¥ó¥È¤Çɽ¼¨¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¤Î·¿(\f2<Object>\fP)¡¢ÉÔÅù¹æ(\f23 < 4\fP)¡¢Ìð°õ(\f2<\-\fP)¤Ê¤É¤Ç¡¢Ä̾ï¤Î»³³ç¸Ì(\f2<\fP¤ª¤è¤Ó\f2>\fP)¤òHTML¥¨¥ó¥Æ¥£¥Æ¥£(\f2<\fP¤ª¤è¤Ó\f2>\fP)¤Î¤«¤ï¤ê¤Ë»ÈÍѤǤ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È -+.nf -+\f3 -+.fl -+ \fP\f4{@code A<B>C}\fP\f3 -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+¤Ï¡¢À¸À®¤µ¤ì¤¿HTML¥Ú¡¼¥¸¤Ç¡¢¼¡¤Î¤è¤¦¤Ë¤½¤Î¤Þ¤Þɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \fP\f4A<B>C\fP\f3 -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+¤³¤³¤ÇÃíÌܤËÃͤ¹¤ë¤Î¤Ï¡¢\f2<B>\fP¤¬ÂÀ»ú¤È¤·¤Æ²ò¼á¤µ¤ì¤º¡¢¤½¤Î¥Õ¥©¥ó¥È¤Ï¥³¡¼¥É¡¦¥Õ¥©¥ó¥È¤Ë¤Ê¤ë¡¢¤È¤¤¤¦ÅÀ¤Ç¤¹¡£ -+.LP -+¥³¡¼¥É¡¦¥Õ¥©¥ó¥È¤Ê¤·¤ÇƱ¤¸µ¡Ç½¤ò¼Â¸½¤¹¤ë¤Ë¤Ï¡¢\f2{@literal}\fP¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.TP 3 -+{@docRoot} -+À¸À®¤µ¤ì¤ë¥Ú¡¼¥¸¤«¤é¤Î¡¢À¸À®¥É¥¥å¥á¥ó¥È¤Î(À¸À®Àè)¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ø¤ÎÁêÂХѥ¹¤òɽ¤·¤Þ¤¹¡£¤³¤Î¥¿¥°¤Ï¡¢Ãøºî¸¢¤Î¥Ú¡¼¥¸¤ä²ñ¼Ò¤Î¥í¥´¤Ê¤É¡¢À¸À®¤µ¤ì¤ë¤¹¤Ù¤Æ¤Î¥Ú¡¼¥¸¤«¤é»²¾È¤¹¤ë¥Õ¥¡¥¤¥ë¤òÁȤ߹þ¤à¤È¤¤ËÊØÍø¤Ç¤¹¡£Ä̾ï¤Ï¡¢³Æ¥Ú¡¼¥¸¤ÎºÇ²¼Éô¤«¤éÃøºî¸¢¤Î¥Ú¡¼¥¸¤Ë¥ê¥ó¥¯¤·¤Þ¤¹¡£ -+.LP -+¤³¤Î\f2{@docRoot}\fP¥¿¥°¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¤â¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥ÈÆâ¤Ç¤â»ÈÍѤǤ¤Þ¤¹¡£¤³¤Î¥¿¥°¤Ï¡¢@return¡¢@param¡¢@deprecated¤Ê¤É¤ÎǤ°Õ¤Î¥¿¥°¤Î¥Æ¥¥¹¥ÈÉôʬ¤ò´Þ¤à¡¢¤¹¤Ù¤Æ¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¡¢¤Ä¤Þ¤ê³µÍס¢¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥á¥½¥Ã¥É¡¢¤ª¤è¤Ó¥Õ¥£¡¼¥ë¥É¤Ç͸ú¤Ç¤¹¡£ -+.RS 3 -+.TP 3 -+1. -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¤Ï¡¢¥Ø¥Ã¥À¡¼¡¢¥Õ¥Ã¥¿¡¼¡¢¤Þ¤¿¤Ï¥Ü¥È¥à¤Ï¼¡¤Î¤è¤¦¤ËÄêµÁ¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ javadoc \-bottom '<a href="{@docRoot}/copyright.html">Copyright</a>' -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+Ãí°Õ \- \f2{@docRoot}\fP¤òMakefileÆâ¤Ç¤³¤Î¤è¤¦¤ËÍøÍѤ¹¤ë¾ì¹ç¡¢°ìÉô¤ÎMakefile¥×¥í¥°¥é¥à¤Ç¤Ï¡¢Ãæ³ç¸Ì{ }ʸ»ú¤òÆÃÊ̤˥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢Inprise MAKE¥Ð¡¼¥¸¥ç¥ó5.2¤òWindows¾å¤Ç¼Â¹Ô¤¹¤ë¾ì¹ç¤Ï¡¢\f2{{@docRoot}}\fP¤Î¤è¤¦¤Ë¡¢Ãæ³ç¸Ì¤òÆó½Å¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤µ¤é¤Ë¡¢\f2\-bottom\fP¤Ê¤É¤Î¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë°ú¿ô¤ò¡¢°ì½Å°úÍÑÉä¤Ç¤Ï¤Ê¤¯Æó½Å°úÍÑÉä¤Ç°Ï¤àɬÍפ⤢¤ê¤Þ¤¹(\f2href\fP°ú¿ô¤ò°Ï¤à°úÍÑÉä¤Ï¾Êά)¡£ -+.TP 3 -+2. -+¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ÎÃæ¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë»ÈÍѤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * See the <a href="{@docRoot}/copyright.html">Copyright</a>. -+.fl -+ */ -+.fl -+ -+.fl -+\fP -+.fi -+.RE -+.LP -+¤³¤Î¥¿¥°¤¬É¬ÍפÊÍýͳ¤Ï¡¢À¸À®¥É¥¥å¥á¥ó¥È¤¬¡¢¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤ÈƱ¤¸¿¼¤µ¤ò»ý¤Ä³¬Áع½Â¤¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë³ÊǼ¤µ¤ì¤ë¤«¤é¤Ç¤¹¡£¼° -+.nf -+\f3 -+.fl -+ <a href="{@docRoot}/copyright.html"> -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+¤Ï¡¢¼¡¤Î¤è¤¦¤Ë²ò·è¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ <a href="../../copyright.html"> for java/lang/Object.java -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+¤ª¤è¤Ó -+.nf -+\f3 -+.fl -+ <a href="../../../copyright.html"> for java/lang/ref/Reference.java -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+.TP 3 -+@exception\ class\-name\ description -+\f2@exception\fP¥¿¥°¤Ï¡¢\f2@throws\fP¤ÈƱµÁ¤Ç¤¹¡£ -+.LP -+.TP 3 -+{@inheritDoc}\ -+ºÇ¤â¶á¤¤·Ñ¾µ²Äǽ¤Ê¥¯¥é¥¹¤Þ¤¿¤Ï¼ÂÁõ²Äǽ¤Ê¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤«¤é¡¢¤³¤Î¥¿¥°¤Î°ÌÃ֤ˤ¢¤ë¸½ºß¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ë¡¢¥É¥¥å¥á¥ó¥È¤ò·Ñ¾µ(¥³¥Ô¡¼)¤·¤Þ¤¹¡£¤³¤Îµ¡Ç½¤Ë¤è¤ê¡¢¤è¤êÈÆÍÑŪ¤Ê¥³¥á¥ó¥È¤ò·Ñ¾µ¥Ä¥ê¡¼¤Î¾å°Ì¤Ëµ½Ò¤·¡¢¥³¥Ô¡¼¤·¤¿¥Æ¥¥¹¥È¤ò»ÈÍѤ·¤Æµ½Ò¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+¤³¤Î¥¿¥°¤Ï¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î¼¡¤Î°ÌÃ֤ǤΤß͸ú¤Ç¤¹¡£ -+.RS 3 -+.TP 2 -+o -+¥á¥½¥Ã¥É¤Î¼çÀâÌÀ¥Ö¥í¥Ã¥¯Æâ¡£¤³¤Î¾ì¹ç¡¢¼çÀâÌÀ¤Ï¡¢¾å°Ì³¬ÁؤΥ¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤«¤é¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ -+.TP 2 -+o -+¥á¥½¥Ã¥É¤Î@return¡¢@param¡¢@throws¥¿¥°¤Î¥Æ¥¥¹¥È°ú¿ôÆâ¡£¤³¤Î¾ì¹ç¡¢¥¿¥°¡¦¥Æ¥¥¹¥È¤Ï¡¢¾å°Ì³¬ÁؤÎÂбþ¤¹¤ë¥¿¥°¤«¤é¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ -+.RE -+.LP -+·Ñ¾µ³¬Áؤǥ³¥á¥ó¥È¤ò¸«¤Ä¤±¤ëÊýË¡¤Ë´Ø¤¹¤ëÀµ³Î¤ÊÀâÌÀ¤Ï¡¢¥á¥½¥Ã¥É¡¦¥³¥á¥ó¥È¤Î¼«Æ°¥³¥Ô¡¼¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥¿¥°¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¢¥³¥á¥ó¥È¤Ï¡¢¤³¤Î¹à¤ÇÀâÌÀ¤¹¤ë¥ë¡¼¥ë¤Ë±þ¤¸¤Æ¡¢¼«Æ°Åª¤Ë·Ñ¾µ¤µ¤ì¤ë¤«¤É¤¦¤«¤¬·è¤Þ¤ê¤Þ¤¹¡£ -+.LP -+.TP 3 -+{@link\ package.class#member\ label} -+ɽ¼¨¥Æ¥¥¹¥È\f2label\fP¤È¤È¤â¤Ë¥¤¥ó¥é¥¤¥ó¡¦¥ê¥ó¥¯¤òÁÞÆþ¤·¤Þ¤¹¡£label¤Ï¡¢»²¾È¥¯¥é¥¹¤Î»ØÄꤵ¤ì¤¿¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¤Þ¤¿¤Ï¥á¥ó¥Ð¡¼¤Î̾Á°¤Î¥É¥¥å¥á¥ó¥È¤ò»Ø¤·¼¨¤·¤Þ¤¹¡£¤³¤Î¥¿¥°¤Ï¡¢@return¡¢@param¡¢@deprecated¤Ê¤É¤ÎǤ°Õ¤Î¥¿¥°¤Î¥Æ¥¥¹¥ÈÉôʬ¤ò´Þ¤à¡¢¤¹¤Ù¤Æ¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¡¢¤Ä¤Þ¤ê³µÍס¢¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥á¥½¥Ã¥É¡¢¤ª¤è¤Ó¥Õ¥£¡¼¥ë¥É¤Ç͸ú¤Ç¤¹¡£ -+.LP -+¤³¤Î¥¿¥°¤Ï\f2@see\fP¤ÈÈó¾ï¤Ë¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£¤É¤Á¤é¤â¡¢\f2package.class\fP\f2#\fP\f2member\fP¤È\f2label\fP¤Î»²¾ÈÊýË¡¤¬Æ±¤¸¤Ç¡¢Í¸ú¤Ê¹½Ê¸¤â¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¹¡£¼ç¤Ê°ã¤¤¤Ï¡¢\f2{@link}\fP¤Ç¤Ï¡¢¡Ö´ØÏ¢¹àÌܡץ»¥¯¥·¥ç¥ó¤Ë¥ê¥ó¥¯¤¬ÇÛÃÖ¤µ¤ì¤ë¤«¤ï¤ê¤Ë¡¢¥¤¥ó¥é¥¤¥ó¡¦¥ê¥ó¥¯¤¬À¸À®¤µ¤ì¤ë¤È¤¤¤¦ÅÀ¤Ç¤¹¡£¤Þ¤¿¡¢¥¤¥ó¥é¥¤¥ó¡¦¥Æ¥¥¹¥È¤Î¾¤ÎÉôʬ¤È¶èÊ̤¹¤ë¤¿¤á¤Ë¡¢\f2{@link}\fP¥¿¥°¤ÎºÇ½é¤ÈºÇ¸å¤ËÃæ³ç¸Ì¤òµ½Ò¤·¤Þ¤¹¡£¥é¥Ù¥ë¤ÎÃæ¤Ç¡Ö}¡×¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢HTML¥¨¥ó¥Æ¥£¥Æ¥£É½µË¡¤Î¡Ö}¡×¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+1¤Äʸ¤ÎÃæ¤Ç»ÈÍѤǤ¤ë\f2{@link}\fP¥¿¥°¤Î¿ô¤ËÀ©¸Â¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤³¤Î¥¿¥°¤Ï¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î¼çÀâÌÀÉôʬ¡¢¤Þ¤¿¤Ï@deprecated¡¢@return¡¢@param¤Ê¤É¤ÎǤ°Õ¤Î¥¿¥°¤Î¥Æ¥¥¹¥ÈÉôʬ¤Ç»ÈÍѤǤ¤Þ¤¹¡£ -+.LP -+¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥³¥á¥ó¥È¤Ç¤Ï\f2getComponentAt(int,int)\fP¥á¥½¥Ã¥É¤ò»²¾È¤·¤Æ¤¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+Use the {@link #getComponentAt(int, int) getComponentAt} method. -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+ɸ½à¥É¥Ã¥¯¥ì¥Ã¥È¤Ç¤Ï¡¢¾å¤Î¥³¥á¥ó¥È¤«¤é¼¡¤ÎHTML¤¬À¸À®¤µ¤ì¤Þ¤¹(¤³¤Î¥³¥á¥ó¥È¤¬Æ±¤¸¥Ñ¥Ã¥±¡¼¥¸¤ÎÊ̤Υ¯¥é¥¹¤ò»²¾È¤·¤Æ¤¤¤ë¾ì¹ç)¡£ -+.nf -+\f3 -+.fl -+Use the <a href="Component.html#getComponentAt(int, int)">getComponentAt</a> method. -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+¤³¤ì¤Ï¡¢Web¥Ú¡¼¥¸¾å¤Ç¤Ï¼¡¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+Use the getComponentAt method. -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+\f2{@link}\fP¤ò³ÈÄ¥¤·¤Æ¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤Ê¤¤¥¯¥é¥¹¤Ë¥ê¥ó¥¯¤¹¤ë¤Ë¤Ï¡¢\f2\-link\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+¾ÜºÙ¤Ï¡¢ -+.na -+\f2{@link}¥¿¥°¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#{@link}¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.TP 3 -+{@linkplain\ package.class#member\ label} -+¥ê¥ó¥¯¤Î¥é¥Ù¥ë¤¬¥³¡¼¥É¡¦¥Õ¥©¥ó¥È¤Ç¤Ï¤Ê¤¯¥×¥ì¡¼¥ó¡¦¥Æ¥¥¹¥È¤Çɽ¼¨¤µ¤ì¤ëÅÀ°Ê³°¤Ï\f2{@link}\fP¤ÈƱ¤¸¤Ç¤¹¡£¥é¥Ù¥ë¤¬¥×¥ì¡¼¥ó¡¦¥Æ¥¥¹¥È¤Çµ½Ò¤µ¤ì¤Æ¤¤¤ë¤ÈÊØÍø¤Ç¤¹¡£Îã: -+.nf -+\f3 -+.fl -+ Refer to {@linkplain add() the overridden method}. -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+Refer to the overridden method. -+.LP -+.TP 3 -+{@literal\ text} -+¥Æ¥¥¹¥È¤òHTML¥Þ¡¼¥¯¥¢¥Ã¥×¤Þ¤¿¤Ï¥Í¥¹¥È¤µ¤ì¤¿javadoc¥¿¥°¤È¤·¤Æ²ò¼á¤»¤º¤Ë¡¢\f2text\fP¤òɽ¼¨¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¤Î·¿(\f2<Object>\fP)¡¢ÉÔÅù¹æ(\f23 < 4\fP)¡¢Ìð°õ(\f2<\-\fP)¤Ê¤É¤Ç¡¢Ä̾ï¤Î»³³ç¸Ì(\f2<\fP¤ª¤è¤Ó\f2>\fP)¤òHTML¥¨¥ó¥Æ¥£¥Æ¥£(\f2<\fP¤ª¤è¤Ó\f2>\fP)¤Î¤«¤ï¤ê¤Ë»ÈÍѤǤ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È -+.nf -+\f3 -+.fl -+ \fP\f4{@literal A<B>C}\fP\f3 -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+¤Ï¡¢¥Ö¥é¥¦¥¶¤ÇÀ¸À®¤µ¤ì¤¿HTML¥Ú¡¼¥¸¤Ë¼¡¤Î¤è¤¦¤Ë¤½¤Î¤Þ¤Þɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+\f2\ \ \ \ \ \fPA<B>C -+.LP -+¤³¤³¤ÇÃíÌܤËÃͤ¹¤ë¤Î¤Ï¡¢\f2<B>\fP¤¬ÂÀ»ú¤È¤·¤Æ²ò¼á¤µ¤ì¤º¡¢¤½¤Î¥Õ¥©¥ó¥È¤Ï¥³¡¼¥É¡¦¥Õ¥©¥ó¥È¤Ë¤Ê¤é¤Ê¤¤¡¢¤È¤¤¤¦ÅÀ¤Ç¤¹¡£ -+.LP -+¥³¡¼¥É¡¦¥Õ¥©¥ó¥È¤ÇƱ¤¸µ¡Ç½¤ò¼Â¸½¤¹¤ë¤Ë¤Ï¡¢\f2{@code}\fP¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.TP 3 -+@param\ parameter\-name description -+¡Ö¥Ñ¥é¥á¡¼¥¿¡×¥»¥¯¥·¥ç¥ó¤Ë¡¢»ØÄꤵ¤ì¤¿\f2parameter\-name\fP¤Î¸å¤Ë»ØÄꤵ¤ì¤¿\f2description\fP¤ò³¤±¤Æ¥Ñ¥é¥á¡¼¥¿¤òÄɲä·¤Þ¤¹¡£¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤òµ½Ò¤¹¤ë¤È¤¤Ë¤Ï¡¢\f2description\fP¤òÊ£¿ô¹Ô¤Ë¤ï¤¿¤Ã¤Æµ½Ò¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤³¤Î¥¿¥°¤Ï¡¢¥á¥½¥Ã¥É¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¤Þ¤¿¤Ï¥¯¥é¥¹¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥ÈÆâ¤Ç¤Î¤ß͸ú¤Ç¤¹¡£ -+.LP -+\f2parameter\-name\fP¤Ï¡¢¥á¥½¥Ã¥É¤Þ¤¿¤Ï¥³¥ó¥¹¥È¥é¥¯¥¿¤Ç¤Î¥Ñ¥é¥á¡¼¥¿¤Î̾Á°¤«¡¢¥¯¥é¥¹¡¢¥á¥½¥Ã¥É¤Þ¤¿¤Ï¥³¥ó¥¹¥È¥é¥¯¥¿¤Î·¿¥Ñ¥é¥á¡¼¥¿¤Î̾Á°¤Ë¤Ê¤ê¤Þ¤¹¡£»³³ç¸Ì¤Ç¤³¤Î¥Ñ¥é¥á¡¼¥¿Ì¾¤ò°Ï¤ß¡¢·¿¥Ñ¥é¥á¡¼¥¿¤ò»ÈÍѤ¹¤ë¤³¤È¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+¥¯¥é¥¹¤Î·¿¥Ñ¥é¥á¡¼¥¿¤ÎÎã: -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * @param <E> Type of element stored in a list -+.fl -+ */ -+.fl -+ public interface List<E> extends Collection<E> { -+.fl -+ } -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+¥á¥½¥Ã¥É¤Î·¿¥Ñ¥é¥á¡¼¥¿¤ÎÎã: -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * @param string the string to be converted -+.fl -+ * @param type the type to convert the string to -+.fl -+ * @param <T> the type of the element -+.fl -+ * @param <V> the value of the element -+.fl -+ */ -+.fl -+ <T, V extends T> V convert(String string, Class<T> type) { -+.fl -+ } -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+¾ÜºÙ¤Ï¡¢ -+.na -+\f2@param¥¿¥°¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@param¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.TP 3 -+@return\ description -+¡ÖÌá¤êÃ͡ץ»¥¯¥·¥ç¥ó¤òÄɲ䷤ơ¢\f2description\fP¤Î¥Æ¥¥¹¥È¤ò½ñ¤¹þ¤ß¤Þ¤¹¡£¤³¤Î¥Æ¥¥¹¥È¤Ç¤Ï¡¢Ìá¤êÃͤη¿¤È¡¢¼è¤êÆÀ¤ëÃͤÎÈϰϤˤĤ¤¤Æµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥¿¥°¤Ï¡¢¥á¥½¥Ã¥É¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç¤Î¤ß͸ú¤Ç¤¹¡£ -+.LP -+¾ÜºÙ¤Ï¡¢ -+.na -+\f2@return¥¿¥°¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@return¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.TP 3 -+@see\ reference -+¡Ö´ØÏ¢¹àÌܡ׸«½Ð¤·¤òÄɲ䷤ơ¢\f2reference\fP¤ò»Ø¤¹¥ê¥ó¥¯¡¢¤Þ¤¿¤Ï¥Æ¥¥¹¥È¡¦¥¨¥ó¥È¥ê¤ò½ñ¤¹þ¤ß¤Þ¤¹¡£1¤Ä¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ë¤ÏǤ°Õ¤Î¿ô¤Î\f2@see\fP¥¿¥°¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¤¬¡¢¤½¤ì¤é¤Ï¤¹¤Ù¤ÆƱ¤¸¸«½Ð¤·¤Î²¼¤Ë¥°¥ë¡¼¥×²½¤µ¤ì¤Þ¤¹¡£\f2@see\fP¥¿¥°¤Ë¤Ï¡¢¼¡¤Î3¤Ä¤Î¥¿¥¤¥×¤Î·Á¼°¤¬¤¢¤ê¤Þ¤¹¡£ºÇ¤â¤è¤¯»ÈÍѤµ¤ì¤ë¤Î¤Ï¡¢3ÈÖÌܤηÁ¼°¤Ç¤¹¡£¤³¤Î¥¿¥°¤Ï¡¢¤¹¤Ù¤Æ¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¡¢¤Ä¤Þ¤ê³µÍס¢¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥á¥½¥Ã¥É¡¢¤Þ¤¿¤Ï¥Õ¥£¡¼¥ë¥É¤Ç͸ú¤Ç¤¹¡£¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¤Þ¤¿¤Ï¥á¥ó¥Ð¡¼¤ËÂФ¹¤ë¥¤¥ó¥é¥¤¥ó¡¦¥ê¥ó¥¯¤òʸÃæ¤ËÁÞÆþ¤¹¤ëÊýË¡¤Ï¡¢\f2{@link}\fP¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RS 3 -+.TP 3 -+@see "string" -+\f2string\fP¤Î¥Æ¥¥¹¥È¡¦¥¨¥ó¥È¥ê¤òÄɲä·¤Þ¤¹¡£¥ê¥ó¥¯¤ÏÀ¸À®¤µ¤ì¤Þ¤»¤ó¡£\f2string\fP¤Ï¡¢½ñÀÒ¤Þ¤¿¤ÏURL¤Ç¤Ï¥¢¥¯¥»¥¹¤Ç¤¤Ê¤¤¾ðÊó¤Î»²¾ÈÀè¤Ç¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢ºÇ½é¤Îʸ»ú¤¬Æó½Å°úÍÑÉä(\f2"\fP)¤«¤É¤¦¤«¤òÄ´¤Ù¤Æ¡¢¤³¤Î·Á¼°¤òÁ°½Ò¤Î·Á¼°¤È¶èÊ̤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ @see "The Java Programming Language" -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ê¥Æ¥¥¹¥È¤òÀ¸À®¤·¤Þ¤¹¡£ -+.RE -+.RE -+.RS 3 -+.RS 3 -+.RS 3 -+.RS 3 -+.TP 3 -+´ØÏ¢¹àÌÜ: -+"The Java Programming Language" -+.RE -+.RE -+.TP 3 -+@see <a href="URL#value">label</a> -+\f2URL\fP#\f2value\fP¤ÇÄêµÁ¤µ¤ì¤¿¤È¤ª¤ê¤Ë¥ê¥ó¥¯¤òÄɲä·¤Þ¤¹¡£\f2URL\fP#\f2value\fP¤Ï¡¢ÁêÂÐURL¤Þ¤¿¤ÏÀäÂÐURL¤Ç¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢ºÇ½é¤Îʸ»ú¤¬¡Ö¤è¤ê¾®¤µ¤¤¡×µ¹æ(\f2<\fP)¤«¤É¤¦¤«¤òÄ´¤Ù¤Æ¡¢¤³¤Î·Á¼°¤ò¾¤Î·Á¼°¤È¶èÊ̤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ @see <a href="spec.html#section">Java Spec</a> -+.fl -+\fP -+.fi -+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ê¥ê¥ó¥¯¤òÀ¸À®¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+´ØÏ¢¹àÌÜ: -+Java Spec -+.RE -+.TP 3 -+@see\ package.class#member\ label -+ɽ¼¨¥Æ¥¥¹¥È\f2label\fP¤È¤È¤â¤Ë¥ê¥ó¥¯¤òÄɲä·¤Þ¤¹¡£¤³¤Î¥ê¥ó¥¯¤Ï¡¢»ØÄꤵ¤ì¤¿Ì¾Á°¤ò»ý¤Ä¡¢»²¾È¤µ¤ì¤Æ¤¤¤ëJava¸À¸ì¤Î¥á¥ó¥Ð¡¼¤Î¥É¥¥å¥á¥ó¥È¤ò»Ø¤·¤Þ¤¹¡£\f2label\fP¤Ï¾Êά²Äǽ¤Ç¤¹¡£label¤ò¾Êά¤¹¤ë¤È¡¢Ì¾Á°¤¬¤«¤ï¤ê¤Ëɽ¼¨¥Æ¥¥¹¥È¤È¤·¤ÆŬÀÚ¤Ëû½Ì¤µ¤ì¤Æɽ¼¨¤µ¤ì¤Þ¤¹¡£Ì¾Á°¤¬É½¼¨¤µ¤ì¤ëÊýË¡¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£\-noqualifier¤ò»ÈÍѤ¹¤ë¤È¡¢¤³¤Îɽ¼¨¥Æ¥¥¹¥È¤«¤é¥Ñ¥Ã¥±¡¼¥¸Ì¾¤¬Á´ÂÎŪ¤Ëºï½ü¤µ¤ì¤Þ¤¹¡£¥é¥Ù¥ë¤Ï¡¢¼«Æ°À¸À®¤µ¤ì¤ëɽ¼¨¥Æ¥¥¹¥È¤È¤Ï°Û¤Ê¤ëɽ¼¨¥Æ¥¥¹¥È¤Ë¤¹¤ë¾ì¹ç¤Ë»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+¥Ð¡¼¥¸¥ç¥ó1.2¤Î¤ß¤Ï¡¢¥é¥Ù¥ë¤Ç¤Ï¤Ê¤¯¡¢Ì¾Á°¤¬<code> HTML¥¿¥°Æâ¤Ë¼«Æ°Åª¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£1.2.2¤«¤é¤Ï¡¢¥é¥Ù¥ë¤ò»ÈÍѤ¹¤ë¤«¤·¤Ê¤¤¤«¤Ë¤«¤«¤ï¤é¤º¡¢<code>¤Ï¾ï¤Ëɽ¼¨¥Æ¥¥¹¥È¤ò°Ï¤à¤«¤¿¤Á¤Ç¡¢´Þ¤Þ¤ì¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+\f4package.class\fP\f4#\fP\f4member\fP¤Ë¤Ï¡¢»²¾È¤µ¤ì¤Æ¤¤¤ëǤ°Õ¤Î͸ú¤Ê¥×¥í¥°¥é¥àÍ×ÁǤÎ̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥á¥½¥Ã¥É¡¢¤Þ¤¿¤Ï¥Õ¥£¡¼¥ë¥É¤Î̾Á°¤Ç¤¹¡£¤¿¤À¤·¡¢¥á¥ó¥Ð¡¼Ì¾¤ÎÁ°¤Îʸ»ú¤Ï¡¢¥·¥ã¡¼¥×µ¹æ(\f2#\fP)¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f2class\fP¤Ï¡¢Ç¤°Õ¤Î¥È¥Ã¥×¥ì¥Ù¥ë¤Þ¤¿¤Ï¥Í¥¹¥È¤µ¤ì¤¿¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òɽ¤·¤Þ¤¹¡£\f2member\fP¤Ï¡¢Ç¤°Õ¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥á¥½¥Ã¥É¤Þ¤¿¤Ï¥Õ¥£¡¼¥ë¥É¤òɽ¤·¤Þ¤¹(¥Í¥¹¥È¤µ¤ì¤¿¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó)¡£¤³¤Î̾Á°¤¬¡¢¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥¯¥é¥¹¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¤½¤Î̾Á°¤Ø¤Î¥ê¥ó¥¯¤ò¼«Æ°Åª¤ËºîÀ®¤·¤Þ¤¹¡£³°Éô»²¾È¥¯¥é¥¹¤Ø¤Î¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¤Ë¤Ï¡¢\f2\-link\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£»²¾È¥¯¥é¥¹¤Ë°¤·¤Æ¤¤¤Ê¤¤Ì¾Á°¤Î¥É¥¥å¥á¥ó¥È¤ò»²¾È¤¹¤ë¤Ë¤Ï¡¢Â¾¤Î2¤Ä¤Î\f2@see\fP·Á¼°¤Î¤É¤Á¤é¤«¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤Î°ú¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢¸å½Ò¤Î̾Á°¤Î»ØÄê¤Ç¾Ü¤·¤¯ÀâÌÀ¤·¤Þ¤¹¡£ -+.TP 2 -+o -+\f4label\fP¤Ï¡¢¾Êά²Äǽ¤Ê¥Æ¥¥¹¥È¤Ç¡¢¥ê¥ó¥¯¤Î¥é¥Ù¥ë¤È¤·¤Æɽ¼¨¤µ¤ì¤Þ¤¹¡£\f2label\fP¤Ë¤Ï¶õÇò¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£\f2label\fP¤ò¾Êά¤¹¤ë¤È¡¢\f2package.class.member\fP¤¬¡¢¸½ºß¤Î¥¯¥é¥¹¤ª¤è¤Ó¥Ñ¥Ã¥±¡¼¥¸¤Ë±þ¤¸¤ÆŬÀÚ¤Ëû½Ì¤µ¤ì¤Æɽ¼¨¤µ¤ì¤Þ¤¹¡£Ì¾Á°¤¬É½¼¨¤µ¤ì¤ëÊýË¡¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 2 -+o -+¶õÇòʸ»ú¤¬¡¢\f2package.class\fP\f2#\fP\f2member\fP¤È\f2label\fP¤Î´Ö¤Î¶èÀÚ¤êʸ»ú¤Ë¤Ê¤ê¤Þ¤¹¡£³ç¸Ì¤ÎÆ⦤ζõÇòʸ»ú¤Ï¥é¥Ù¥ë¤ÎÀèƬ¤È¤Ï²ò¼á¤µ¤ì¤Ê¤¤¤¿¤á¡¢¥á¥½¥Ã¥É¤Î¥Ñ¥é¥á¡¼¥¿´Ö¤Ë¶õÇòʸ»ú¤òÆþ¤ì¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ -+.RE -+.LP -+\f3Îã\fP \- ¤³¤ÎÎã¤Ç¤Ï¡¢\f2@see\fP¥¿¥°(\f2Character\fP¥¯¥é¥¹Æâ)¤¬¡¢\f2String\fP¥¯¥é¥¹¤Î\f2equals\fP¥á¥½¥Ã¥É¤ò»²¾È¤·¤Æ¤¤¤Þ¤¹¡£¥¿¥°¤Ë¤Ï¡¢Ì¾Á°¡Ö\f2String#equals(Object)\fP¡×¤È¥é¥Ù¥ë¡Ö\f2equals\fP¡×¤ÎξÊý¤Î°ú¿ô¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * @see String#equals(Object) equals -+.fl -+ */ -+.fl -+\fP -+.fi -+ɸ½à¥É¥Ã¥¯¥ì¥Ã¥È¤Ï¡¢¼¡¤Î¤è¤¦¤ÊHTML¤òÀ¸À®¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+<dl> -+.fl -+<dt><b>See Also:</b> -+.fl -+<dd><a href="../../java/lang/String#equals(java.lang.Object)"><code>equals<code></a> -+.fl -+</dl> -+.fl -+\fP -+.fi -+¤³¤ì¤Ï¡¢¥Ö¥é¥¦¥¶¤Ç¤Ï¼¡¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¡¢¥é¥Ù¥ë¤¬É½¼¨¥ê¥ó¥¯¡¦¥Æ¥¥¹¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+´ØÏ¢¹àÌÜ: -+equals -+.RE -+.LP -+\f3̾Á°¤Î»ØÄê\fP \- ¤³¤Î\f2package.class\fP\f2#\fP\f2member\fP¤È¤¤¤¦Ì¾Á°¤Ï¡¢\f2java.lang.String#toUpperCase()\fP¤Î¤è¤¦¤Ê´°Á´½¤¾þ̾¤Ë¤¹¤ë¤³¤È¤â¡¢\f2String#toUpperCase()\fP¤ä\f2#toUpperCase()\fP¤Î¤è¤¦¤ÊÈó´°Á´½¤¾þ̾¤Ë¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£Ì¾Á°¤¬´°Á´¤Ë¤Ï½¤¾þ¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢Java¥³¥ó¥Ñ¥¤¥é¤ÎÄ̾ï¤Î¸¡º÷½ç½ø¤Ç¤½¤Î̾Á°¤ò¸¡º÷¤·¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢¸å½Ò¤Î@see¤Î¸¡º÷½ç½ø¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£Ì¾Á°¤Ë¤Ï¡¢¥á¥½¥Ã¥É¤ÎÊ£¿ô¤Î°ú¿ô¤Î´Ö¤Ê¤É¡¢³ç¸Ì¤ÎÆ⦤Ǥ¢¤ì¤Ð¶õÇò¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+¡ÖÉôʬŪ¤Ë½¤¾þ¡×¤·¤¿Ã»¤¤Ì¾Á°¤ò»ØÄꤹ¤ë¤³¤È¤ÎÍøÅÀ¤Ï¡¢ÆþÎϤ¹¤ëʸ»ú¿ô¤¬¸º¤ë¤³¤È¤ä¡¢¥½¡¼¥¹¡¦¥³¡¼¥É¤¬Æɤߤ䤹¤¯¤Ê¤ë¤³¤È¤Ç¤¹¡£¼¡¤Îɽ¤Ë¡¢ÍÍ¡¹¤Ê·Á¼°¤Î̾Á°¤ò¼¨¤·¤Þ¤¹¡£¤³¤³¤Ç¡¢\f2Class\fP¤Ë¤Ï¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¡¢\f2Type\fP¤Ë¤Ï¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢ÇÛÎ󡢤ޤ¿¤Ï¥×¥ê¥ß¥Æ¥£¥Ö¤ò¡¢\f2method\fP¤Ë¤Ï¥á¥½¥Ã¥É¤Þ¤¿¤Ï¥³¥ó¥¹¥È¥é¥¯¥¿¤ò¡¢¤½¤ì¤¾¤ì»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 -+.nr 34 \n(.lu -+.eo -+.am 80 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/2u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\f4@see\fP\f3\ \fP\f4package.class#member\fP\f3¤Î°ìÈÌŪ¤Ê·Á¼°\fP -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/2u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\f3¸½ºß¤Î¥¯¥é¥¹¤Î¥á¥ó¥Ð¡¼¤ò»²¾È¤¹¤ë\ \ \ \ \ \ \fP -+.br -+\f2@see\fP\ \f2#\fP\f2field\fP -+.br -+\f2@see\fP\ \f2#\fP\f2method(Type,\ Type,...)\fP -+.br -+\f2@see\fP\ \f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP -+.br -+\f2@see\fP\ \f2#\fP\f2constructor(Type,\ Type,...)\fP -+.br -+\f2@see\fP\ \f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/2u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\f3¸½ºß¤Î¡¢¤Þ¤¿¤Ï¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤¿¥Ñ¥Ã¥±¡¼¥¸¤ÎÊ̤Υ¯¥é¥¹¤ò»²¾È¤¹¤ë\ \ \ \ \ \ \ \ \fP -+.br -+\f2@see\fP\ \f2Class\fP\f2#\fP\f2field\fP -+.br -+\f2@see\fP\ \f2Class\fP\f2#\fP\f2method(Type,\ Type,...)\fP -+.br -+\f2@see\fP\ \f2Class\fP\f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP -+.br -+\f2@see\fP\ \f2Class\fP\f2#\fP\f2constructor(Type,\ Type,...)\fP -+.br -+\f2@see\fP\ \f2Class\fP\f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP -+.br -+\f2@see\fP\ \f2Class.NestedClass\fP -+.br -+\f2@see\fP\ \f2Class\fP -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/2u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\f3Ê̤Υѥ屡¼¥¸¤ÎÍ×ÁǤò»²¾È¤¹¤ë\fP\ (´°Á´½¤¾þ)\ \ \ \ .br -+\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2field\fP -+.br -+\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2method(Type,\ Type,...)\fP -+.br -+\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP -+.br -+\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2constructor(Type,\ Type,...)\fP -+.br -+\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP -+.br -+\f2@see\fP\ \f2package.Class.NestedClass\fP -+.br -+\f2@see\fP\ \f2package.Class\fP -+.br -+\f2@see\fP\ \f2package\fP -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.80 -+.rm 80 -+.nr 38 \n(a- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \n(b- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \n(c- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \n(d- -+.if \n(80<\n(38 .nr 80 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr TW \n(80 -+.if t .if \n(TW>\n(.li .tm Table at line 1352 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-58 -+.LP -+¾å¤Îɽ¤ËÂФ¹¤ëÊä»ö¹à¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+ºÇ½é¤Î¥¿¥¤¥×¤Î·Á¼°(¥Ñ¥Ã¥±¡¼¥¸¤È¥¯¥é¥¹¤ò¾Êά)¤Î¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¸½ºß¤Î¥¯¥é¥¹¤Î³¬ÁؤΤߤò¸¡º÷¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¸½ºß¤Î¥¯¥é¥¹¤«¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¤½¤Î¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤«¥¹¡¼¥Ñ¡¼¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¤Þ¤¿¤Ï¤½¤Î³°Â¦¤ò°Ï¤ó¤Ç¤¤¤ë¥¯¥é¥¹¤«¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤«¤é¥á¥ó¥Ð¡¼¤ò¸¡º÷¤·¤Þ¤¹(¸¡º÷¼ê½ç1\-3)¡£¸½ºß¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î¾¤ÎÉôʬ¤ä¡¢Â¾¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ï¸¡º÷¤·¤Þ¤»¤ó(¸¡º÷¼ê½ç4\-5)¡£ -+.TP 2 -+o -+¥á¥½¥Ã¥É¤Þ¤¿¤Ï¥³¥ó¥¹¥È¥é¥¯¥¿¤ÎÆþÎÏ»þ¤Ë¡¢\f2getValue\fP¤Î¤è¤¦¤Ë³ç¸Ì¤Ê¤·¤Î̾Á°¤ò»ÈÍѤ·¤¿¾ì¹ç¡¢Æ±¤¸Ì¾Á°¤Î¥Õ¥£¡¼¥ë¥É¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢Javadoc¥Ä¡¼¥ë¤Ï¤½¤Î̾Á°¤Ø¤Î¥ê¥ó¥¯¤òÀµ¤·¤¯ºîÀ®¤·¤Þ¤¹¤¬¡¢³ç¸Ì¤È°ú¿ô¤ÎÄɲäòÂ¥¤¹·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤¬¥ª¡¼¥Ð¡¼¥í¡¼¥É¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¸¡º÷¤ÇºÇ½é¤Ë¸«¤Ä¤«¤Ã¤¿¥á¥½¥Ã¥É¤Ë¥ê¥ó¥¯¤·¤Þ¤¹¡£·ë²Ì¤ÏÁ°¤â¤Ã¤ÆÆÃÄê¤Ç¤¤Þ¤»¤ó¡£ -+.TP 2 -+o -+¥Í¥¹¥È¤µ¤ì¤¿¥¯¥é¥¹¤Ï¡¢¤¹¤Ù¤Æ¤Î·Á¼°¤Ë¤Ä¤¤¤Æ¡¢\f2outer\fP\f2.\fP\f2inner\fP¤È¤·¤Æ»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Ã±½ã¤Ë\f2inner\fP¤È¤Ï¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ -+.TP 2 -+o -+¤¹¤Ç¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë¡¢¥¯¥é¥¹¤È¥á¥ó¥Ð¡¼¤È¤Î´Ö¤Î¶èÀÚ¤êʸ»ú¤È¤·¤Æ¤Ï¡¢¥É¥Ã¥È(\f2.\fP)¤Ç¤Ï¤Ê¤¯¥·¥ã¡¼¥×ʸ»ú(\f2#\fP)¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ë»ØÄꤹ¤ë¤È¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¤¢¤¤¤Þ¤¤¤µ¤ò²ò·è¤Ç¤¤Þ¤¹¡£¥É¥Ã¥È¤Ï¡¢¥¯¥é¥¹¡¢¥Í¥¹¥È¤µ¤ì¤¿¥¯¥é¥¹¡¢¥Ñ¥Ã¥±¡¼¥¸¡¢¤ª¤è¤Ó¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤ò¶èÀڤ뤿¤á¤Ë¤â»ÈÍѤµ¤ì¤ë¤«¤é¤Ç¤¹¡£¤¿¤À¤·¡¢Javadoc¥Ä¡¼¥ë¤Ç¤Ï°ìÈ̤˵öÍÆÈϰϤ¬¹¤¯¡¢¤¢¤¤¤Þ¤¤¤µ¤¬¤Ê¤±¤ì¤Ð¥É¥Ã¥È¤ÏÀµ¤·¤¯²òÀϤµ¤ì¤Þ¤¹¡£¤½¤Î¾ì¹ç¤Ç¤â¡¢·Ù¹ð¤Ïɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.RE -+.LP -+\f3@see¤Î¸¡º÷½ç½ø\fP \- Javadoc¥Ä¡¼¥ë¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë(.java)¡¢¥Ñ¥Ã¥±¡¼¥¸¡¦¥Õ¥¡¥¤¥ë(package.html¤Þ¤¿¤Ïpackage\-info.java)¤Þ¤¿¤Ï³µÍ×¥Õ¥¡¥¤¥ë(overview.html)¤Ë´Þ¤Þ¤ì¤ë\f2@see\fP¥¿¥°¤ò½èÍý¤·¤Þ¤¹¡£¸å¼Ô¤Î2¤Ä¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢´°Á´½¤¾þ¤Î̾Á°¤ò\f2@see\fP¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢´°Á´½¤¾þ¤Î̾Á°¡¢¤Þ¤¿¤ÏÉôʬ½¤¾þ¤Î̾Á°¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+Javadoc¥Ä¡¼¥ë¤Ï¡¢´°Á´½¤¾þ\f2¤Ç¤Ê¤¤\fP̾Á°¤¬µ½Ò¤µ¤ì¤¿\f2@see\fP¥¿¥°¤ò\f2.java\fP¥Õ¥¡¥¤¥ëÆâ¤Ç¸«¤Ä¤±¤ë¤È¡¢Java¥³¥ó¥Ñ¥¤¥é¤ÈƱ¤¸½ç½ø¤Ç»ØÄꤵ¤ì¤¿Ì¾Á°¤ò¸¡º÷¤·¤Þ¤¹(¤¿¤À¤·¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢ÆÃÄê¤Î̾Á°¶õ´Ö¤Î¤¢¤¤¤Þ¤¤¤µ¤ò¸¡½Ð¤·¤Þ¤»¤ó¡£¤³¤ì¤Ï¡¢¥½¡¼¥¹¡¦¥³¡¼¥É¤Ë¤³¤ì¤é¤Î¥¨¥é¡¼¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤¤¤³¤È¤òÁ°Äó¤È¤·¤Æ¤¤¤ë¤¿¤á¤Ç¤¹)¡£¤³¤Î¸¡º÷½ç½ø¤Ï¡¢\f2Java¸À¸ì»ÅÍÍ\fP¤ÇÀµ¼°¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢´ØÏ¢¤¹¤ë¥¯¥é¥¹¤È¥Ñ¥Ã¥±¡¼¥¸¡¢¤ª¤è¤Ó¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤¿¥¯¥é¥¹¤È¥Ñ¥Ã¥±¡¼¥¸¤Î¤¹¤Ù¤Æ¤«¤é¤½¤Î̾Á°¤ò¸¡º÷¤·¤Þ¤¹¡£¶ñÂÎŪ¤Ë¤Ï¡¢¼¡¤Î½ç½ø¤Ç¸¡º÷¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+1. -+¸½ºß¤Î¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹ -+.TP 3 -+2. -+³°Â¦¤ò°Ï¤ó¤Ç¤¤¤ë¥¯¥é¥¹¤È¥¤¥ó¥¿¥Õ¥§¡¼¥¹(ºÇ¤â¶á¤¤¤â¤Î¤«¤é¸¡º÷) -+.TP 3 -+3. -+¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤È¥¹¡¼¥Ñ¡¼¥¤¥ó¥¿¥Õ¥§¡¼¥¹(ºÇ¤â¶á¤¤¤â¤Î¤«¤é¸¡º÷) -+.TP 3 -+4. -+¸½ºß¤Î¥Ñ¥Ã¥±¡¼¥¸ -+.TP 3 -+5. -+¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹(importʸ¤Î½ç½ø¤Ë½¾¤Ã¤Æ¸¡º÷) -+.RE -+.LP -+Javadoc¥Ä¡¼¥ë¤Ï¡¢³Æ¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¼ê½ç1\-3¤òºÆµ¢Åª¤ËŬÍѤ·¤Ê¤¬¤é¡¢°ìÃפ¹¤ë̾Á°¤¬¸«¤Ä¤«¤ë¤Þ¤Ç¸¡º÷¤ò³¤±¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤Þ¤º¸½ºß¤Î¥¯¥é¥¹¤ò¸¡º÷¤·¡¢¼¡¤Ë¤½¤Î³°Â¦¤ò°Ï¤ó¤Ç¤¤¤ë¥¯¥é¥¹E¤ò¸¡º÷¤·¤¿¸å¡¢E¤Î¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤ò¸¡º÷¤·¤Æ¤«¤é¡¢E¤ò°Ï¤ó¤Ç¤¤¤ë¥¯¥é¥¹¤ò¸¡º÷¤·¤Þ¤¹¡£ ¼ê½ç4¤È5¤Ç¤Ï¡¢1¤Ä¤Î¥Ñ¥Ã¥±¡¼¥¸Æâ¤Î¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¸¡º÷¤¹¤ë½ç½ø¤Ï·è¤Þ¤Ã¤Æ¤¤¤Þ¤»¤ó(¤½¤Î½ç½ø¤Ï¡¢¸Ä¡¹¤Î¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹)¡£¼ê½ç5¤Ç¤Ï¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢java.lang¤ò¸¡º÷¤·¤Þ¤¹¡£¤³¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ï¡¢¤¹¤Ù¤Æ¤Î¥×¥í¥°¥é¥à¤Ë¼«Æ°Åª¤Ë¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤ë¤«¤é¤Ç¤¹¡£ -+.LP -+Javadoc¥Ä¡¼¥ë¤Ï¡¢É¬¤º¤·¤â¥µ¥Ö¥¯¥é¥¹¤ò¸¡º÷¤¹¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£¤Þ¤¿¡¢Javadoc¤Î¼Â¹ÔÃæ¤Ë¾¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î¥É¥¥å¥á¥ó¥È¤¬À¸À®¤µ¤ì¤ë¾ì¹ç¤Ç¤â¡¢Â¾¤Î¥Ñ¥Ã¥±¡¼¥¸¤ò¸¡º÷¤·¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢\f2@see\fP¥¿¥°¤¬\f2java.awt.event.KeyEvent\fP¥¯¥é¥¹Æâ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Æ¡¢\f2java.awt\fP¥Ñ¥Ã¥±¡¼¥¸Æâ¤Î¤¢¤ë̾Á°¤ò»²¾È¤·¤Æ¤¤¤Æ¤â¡¢¤½¤Î¥¯¥é¥¹¤¬¥¤¥ó¥Ý¡¼¥È¤·¤Ê¤¤¤«¤®¤êJavadoc¤Ï¤½¤Î¥Ñ¥Ã¥±¡¼¥¸¤ò¸¡º÷¤·¤Þ¤»¤ó¡£ -+.LP -+\f3̾Á°¤¬É½¼¨¤µ¤ì¤ëÊýË¡\fP \- \f2label\fP¤ò¾Êά¤¹¤ë¤È¡¢\f2package.class.member\fP¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£°ìÈ̤ˡ¢¤³¤ì¤Ï¸½ºß¤Î¥¯¥é¥¹¤ª¤è¤Ó¥Ñ¥Ã¥±¡¼¥¸¤Ë±þ¤¸¤ÆŬÀÚ¤Ëû½Ì¤µ¤ì¤Þ¤¹¡£¡Öû½Ì¤µ¤ì¤ë¡×¤È¤Ï¡¢É¬Í׺Ǿ®¸Â¤Î̾Á°¤Î¤ß¤¬É½¼¨¤µ¤ì¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2String.toUpperCase()\fP¥á¥½¥Ã¥É¤Ë¡¢Æ±¤¸¥¯¥é¥¹¤Î¥á¥ó¥Ð¡¼¤Ø¤Î»²¾È¤È¾¤Î¥¯¥é¥¹¤Î¥á¥ó¥Ð¡¼¤Ø¤Î»²¾È¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥¯¥é¥¹Ì¾¤¬É½¼¨¤µ¤ì¤ë¤Î¤Ï¸å¼Ô¤Î¥±¡¼¥¹¤Î¤ß¤Ç¤¹(¼¡¤Îɽ¤ò»²¾È)¡£ -+.LP -+¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÁ´ÂÎŪ¤Ëºï½ü¤¹¤ë¤Ë¤Ï¡¢\-noqualifier¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.br -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 82 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+\f4String.toUpperCase()\fP\f3¤Ç¤ÎÎã\fP -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\f2@see\fP¥¿¥°¤¬Æ±¤¸¥¯¥é¥¹¡¢Æ±¤¸¥Ñ¥Ã¥±¡¼¥¸¤Î¥á¥ó¥Ð¡¼¤ò»²¾È¤·¤Æ¤¤¤ë -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 82 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(82 .ll \n(82u -+.in 0 -+\f2toLowerCase()\fP(¥Ñ¥Ã¥±¡¼¥¸Ì¾¤È¥¯¥é¥¹Ì¾¤Ï¾Êά) -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\f2@see\fP¥¿¥°¤¬°Û¤Ê¤ë¥¯¥é¥¹¡¢Æ±¤¸¥Ñ¥Ã¥±¡¼¥¸¤Î¥á¥ó¥Ð¡¼¤ò»²¾È¤·¤Æ¤¤¤ë -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+\f2@see Character#toLowerCase(char)\fP -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 82 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(82 .ll \n(82u -+.in 0 -+\f2Character.toLowerCase(char)\fP(¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Ï¾Êά¤·¡¢¥¯¥é¥¹Ì¾¤ò´Þ¤à) -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\f2@see\fP¥¿¥°¤¬°Û¤Ê¤ë¥¯¥é¥¹¡¢°Û¤Ê¤ë¥Ñ¥Ã¥±¡¼¥¸¤Î¥á¥ó¥Ð¡¼¤ò»²¾È¤·¤Æ¤¤¤ë -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di h+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+\f2@see java.io.File#exists()\fP -+.br -+.di -+.nr h| \n(dn -+.nr h- \n(dl -+.. -+.ec \ -+.eo -+.am 82 -+.br -+.di i+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(82 .ll \n(82u -+.in 0 -+\f2java.io.File.exists()\fP(¥Ñ¥Ã¥±¡¼¥¸Ì¾¤È¥¯¥é¥¹Ì¾¤ò´Þ¤à) -+.br -+.di -+.nr i| \n(dn -+.nr i- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \w\f3»²¾È¤Î¥¿¥¤¥×\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 38 \n(b- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \n(d- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \n(g- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 81 0 -+.nr 38 \w\f2@see String#toLowerCase()\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(h- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 82 0 -+.nr 38 \w\f3ɽ¼¨¤µ¤ì¤ë̾Á°\fP -+.if \n(82<\n(38 .nr 82 \n(38 -+.82 -+.rm 82 -+.nr 38 \n(c- -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 38 \n(f- -+.if \n(82<\n(38 .nr 82 \n(38 -+.nr 38 \n(i- -+.if \n(82<\n(38 .nr 82 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr 42 \n(81+(3*\n(38) -+.nr 82 +\n(42 -+.nr TW \n(82 -+.if t .if \n(TW>\n(.li .tm Table at line 1428 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3»²¾È¤Î¥¿¥¤¥×\fP\h'|\n(41u'\h'|\n(42u'\f3ɽ¼¨¤µ¤ì¤ë̾Á°\fP -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.ne \n(c|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u'\f2@see String#toLowerCase()\fP\h'|\n(42u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(42u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.ne \n(e|u+\n(.Vu -+.ne \n(f|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(42u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.ne \n(h|u+\n(.Vu -+.ne \n(i|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -+.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.h+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(42u -+.in +\n(37u -+.i+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.rm h+ -+.rm i+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-28 -+.LP -+\f3@see¤ÎÎã\fP -+.br -+±¦Â¦¤Î¥³¥á¥ó¥È¤Ï¡¢\f2@see\fP¥¿¥°¤¬\f2java.applet.Applet\fP¤Ê¤É¤ÎÊ̤Υѥ屡¼¥¸¤Î¥¯¥é¥¹Æâ¤Ë¤¢¤ë¾ì¹ç¤Ë¡¢Ì¾Á°¤¬¤É¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤ë¤«¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ See also: -+.fl -+@see java.lang.String // String \fP\f3 -+.fl -+@see java.lang.String The String class // The String class \fP\f3 -+.fl -+@see String // String \fP\f3 -+.fl -+@see String#equals(Object) // String.equals(Object) \fP\f3 -+.fl -+@see String#equals // String.equals(java.lang.Object) \fP\f3 -+.fl -+@see java.lang.Object#wait(long) // java.lang.Object.wait(long) \fP\f3 -+.fl -+@see Character#MAX_RADIX // Character.MAX_RADIX \fP\f3 -+.fl -+@see <a href="spec.html">Java Spec</a> // Java Spec \fP\f3 -+.fl -+@see "The Java Programming Language" // "The Java Programming Language" \fP\f3 -+.fl -+\fP -+.fi -+\f2@see\fP¤ò³ÈÄ¥¤·¤Æ¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤Ê¤¤¥¯¥é¥¹¤Ë¥ê¥ó¥¯¤¹¤ë¤Ë¤Ï¡¢\f2\-link\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+¾ÜºÙ¤Ï¡¢ -+.na -+\f2@see¥¿¥°¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@see¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RE -+.RE -+.LP -+.RS 3 -+.TP 3 -+@serial\ field\-description | include | exclude -+¥Ç¥Õ¥©¥ë¥È¤ÎľÎó²½²Äǽ¥Õ¥£¡¼¥ë¥É¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+\f2field\-description\fP(¾Êά²Äǽ)¤Ç¤Ï¡¢¥Õ¥£¡¼¥ë¥É¤Î°ÕÌ£¤òÀâÌÀ¤·¡¢¼è¤êÆÀ¤ëÃͤΥꥹ¥È¤ò¼¨¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡£É¬Íפ˱þ¤¸¤Æ¡¢Ê£¿ô¤Î¹Ô¤ËÅϤäÆÀâÌÀ¤òµ½Ò¤Ç¤¤Þ¤¹¡£É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¤Ï¡¢¤³¤Î¾ðÊó¤ò¡¢Ä¾Î󲽤µ¤ì¤¿·Á¼°¥Ú¡¼¥¸¤ËÄɲä·¤Þ¤¹¡£ -+.LP -+¥¯¥é¥¹¤òľÎ󲽤·¤¿¸å¤·¤Ð¤é¤¯¤·¤Æ¤«¤éľÎó²½²Äǽ¥Õ¥£¡¼¥ë¥É¤ò¥¯¥é¥¹¤ËÄɲä·¤¿¾ì¹ç¡¢¼çÀâÌÀ¤Ë¡¢Äɲä·¤¿¥Ð¡¼¥¸¥ç¥ó¤ò¼±Ê̤¹¤ëʸ¤òÄɲ乤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+\f2include\fP¤ª¤è¤Ó\f2exclude\fP°ú¿ô¤Ï¡¢Ä¾Î󲽤µ¤ì¤¿·Á¼°¥Ú¡¼¥¸¤Ë¥¯¥é¥¹¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¤ò´Þ¤á¤ë¤«½ü³°¤¹¤ë¤«¤ò¼¨¤·¤Þ¤¹¡£¼¡¤Î¤è¤¦¤Ëµ¡Ç½¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f2Serializable\fP¤ò¼ÂÁõ¤·¤Æ¤¤¤ëpublic¤Þ¤¿¤Ïprotected¥¯¥é¥¹¤Ï¡¢¤½¤Î¥¯¥é¥¹(¤Þ¤¿¤Ï¤½¤Î¥¯¥é¥¹¤¬Â°¤¹¤ë¥Ñ¥Ã¥±¡¼¥¸)¤¬\f2@serial exclude\fP¤È¥Þ¡¼¥¯¤µ¤ì¤Æ¤¤¤Ê¤¤¤«¤®¤ê¡¢\f2´Þ¤á¤é¤ì¤Þ¤¹\fP¡£ -+.TP 2 -+o -+\f2Serializable\fP¤ò¼ÂÁõ¤·¤Æ¤¤¤ëprivate¤Þ¤¿¤Ïpackage\-private¥¯¥é¥¹¤Ï¡¢¤½¤Î¥¯¥é¥¹(¤Þ¤¿¤Ï¤½¤Î¥¯¥é¥¹¤¬Â°¤¹¤ë¥Ñ¥Ã¥±¡¼¥¸)¤¬\f2@serial include\fP¤È¥Þ¡¼¥¯¤µ¤ì¤Æ¤¤¤Ê¤¤¤«¤®¤ê¡¢\f2½ü³°¤µ¤ì¤Þ¤¹\fP¡£ -+.RE -+.LP -+Îã: \f2javax.swing\fP¥Ñ¥Ã¥±¡¼¥¸¤Ï(\f2package.html\fP¤Þ¤¿¤Ï\f2package\-info.java\fPÆâ¤Ç)\f2@serial exclude\fP¤È¥Þ¡¼¥¯¤µ¤ì¤Æ¤¤¤Þ¤¹¡£public¥¯¥é¥¹\f2java.security.BasicPermission\fP¤Ï\f2@serial exclude\fP¤È¥Þ¡¼¥¯¤µ¤ì¤Æ¤¤¤Þ¤¹¡£package\-private¥¯¥é¥¹\f2java.util.PropertyPermissionCollection\fP¤Ï\f2@serial include\fP¤È¥Þ¡¼¥¯¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+¥¯¥é¥¹¡¦¥ì¥Ù¥ë¤Ç»ØÄꤵ¤ì¤¿@serial¥¿¥°¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¡¦¥ì¥Ù¥ë¤Ç»ØÄꤵ¤ì¤¿@serial¥¿¥°¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£ -+.LP -+¤³¤ì¤é¤Î¥¿¥°¤Î»ÈÍÑÊýË¡¤Î¾ÜºÙ¤È»ÈÍÑÎã¤Ï¡¢\f2Java¥ª¥Ö¥¸¥§¥¯¥ÈľÎó²½»ÅÍÍ\fP¤ÎÂè1.6¹à -+.na -+\f2¥¯¥é¥¹¤ÎľÎó²½²Äǽ¤Ê¥Õ¥£¡¼¥ë¥É¤ª¤è¤Ó¥Ç¡¼¥¿¤Îʸ½ñ²½\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/platform/serialization/spec/serial\-arch.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢ -+.na -+\f2ľÎ󲽤ÎFAQ\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/tech/serializationfaq\-jsp\-136699.html#javadoc_warn_missing¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ÎFAQ¤Ë¤Ï¡¢¡Ö\-private¥¹¥¤¥Ã¥Á¤ò»ØÄꤷ¤Ê¤¤¤Çjavadoc¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¤Î¤Ëprivate¥Õ¥£¡¼¥ë¥É¤Î@serial¥¿¥°¤¬¸«¤Ä¤«¤é¤Ê¤¤¤È¤¤¤¦javadoc¤Î·Ù¹ð¤¬É½¼¨¤µ¤ì¤ë¡×¤Ê¤É¤Î°ìÈÌŪ¤Ê¼ÁÌä¤Ø¤Î²óÅú¤¬µºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Ä¾Î󲽤µ¤ì¤¿·Á¼°¤Î»ÅÍͤ˥¯¥é¥¹¤ò´Þ¤á¤ë¾ì¹ç¤Ë¤Ï¡¢ -+.na -+\f2Oracle¤Î´ð½à\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/serialized\-criteria\-137781.html¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.TP 3 -+@serialField\ field\-name\ field\-type\ field\-description -+\f2Serializable\fP¥¯¥é¥¹¤Î\f2serialPersistentFields\fP¥á¥ó¥Ð¡¼¤Î\f2ObjectStreamField\fP¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¥É¥¥å¥á¥ó¥È²½¤·¤Þ¤¹¡£³Æ\f2ObjectStreamField\fP¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ËÂФ·¤Æ1¤Ä¤Î\f2@serialField\fP¥¿¥°¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.TP 3 -+@serialData\ data\-description -+\f2data\-description\fP¤Ï¡¢Ä¾Î󲽤µ¤ì¤¿·Á¼°¤Ç¤Î¥Ç¡¼¥¿¤Î·¿¤È½ç½ø¤òÀâÌÀ¤¹¤ë¥Æ¥¥¹¥È¤Ç¤¹¡£¶ñÂÎŪ¤Ë¸À¤¦¤È¡¢¤³¤Î¥Ç¡¼¥¿¤Ë¤Ï¡¢\f2writeObject\fP¥á¥½¥Ã¥É¤Ë¤è¤Ã¤Æ½ñ¤¹þ¤Þ¤ì¤ë¾Êά²Äǽ¤Ê¥Ç¡¼¥¿¡¢¤ª¤è¤Ó\f2Externalizable.writeExternal\fP¥á¥½¥Ã¥É¤Ë¤è¤Ã¤Æ½ñ¤¹þ¤Þ¤ì¤ë¤¹¤Ù¤Æ¤Î¥Ç¡¼¥¿(¥Ù¡¼¥¹¡¦¥¯¥é¥¹¤ò´Þ¤à)¤¬´Þ¤Þ¤ì¤Þ¤¹¡£ -+.LP -+\f2@serialData\fP¥¿¥°¤Ï¡¢\f2writeObject\fP¡¢\f2readObject\fP¡¢\f2writeExternal\fP¡¢\f2readExternal\fP¡¢\f2writeReplace\fP¡¢¤ª¤è¤Ó\f2readResolve\fP¥á¥½¥Ã¥É¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥ÈÆâ¤Ç»ÈÍѤǤ¤Þ¤¹¡£ -+.LP -+.TP 3 -+@since\ since\-text -+À¸À®¥É¥¥å¥á¥ó¥È¤Ë¡ÖƳÆþ¤µ¤ì¤¿¥Ð¡¼¥¸¥ç¥ó¡×¸«½Ð¤·¤òÄɲ䷤ơ¢»ØÄꤵ¤ì¤¿\f2since\-text\fP¤ò½ñ¤¹þ¤ß¤Þ¤¹¡£¤³¤Î¥Æ¥¥¹¥È¤Ë¤Ï¡¢ÆÃÊ̤ÊÆâÉô¹½Â¤¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤³¤Î¥¿¥°¤Ï¡¢¤¹¤Ù¤Æ¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¡¢¤Ä¤Þ¤ê³µÍס¢¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥á¥½¥Ã¥É¡¢¤Þ¤¿¤Ï¥Õ¥£¡¼¥ë¥É¤Ç͸ú¤Ç¤¹¡£¤³¤Î¥¿¥°¤Ï¡¢ÆÃÄê¤ÎÊѹ¹¤Þ¤¿¤Ïµ¡Ç½¤¬¡¢\f2since\-text\fP¤Ë¤è¤Ã¤Æ»ØÄꤵ¤ì¤¿¥½¥Õ¥È¥¦¥§¥¢¡¦¥ê¥ê¡¼¥¹°Ê¹ß¡¢Â¸ºß¤·¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ @since 1.5 -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+Java¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î¥½¡¼¥¹¡¦¥³¡¼¥É¤Î¾ì¹ç¡¢¤³¤Î¥¿¥°¤Ï¡¢Java¥×¥é¥Ã¥È¥Õ¥©¡¼¥àAPI»ÅÍͤΥС¼¥¸¥ç¥ó¤ò¼¨¤·¤Þ¤¹(¥ê¥Õ¥¡¥ì¥ó¥¹¼ÂÁõ¤ËÄɲ䵤줿»þ´ü¤ò¼¨¤¹¤È¤Ï¸Â¤ê¤Þ¤»¤ó)¡£Ê£¿ô¤Î@since¥¿¥°¤ò»ÈÍѤǤ¡¢Ê£¿ô¤Î@author¥¿¥°¤Î¤è¤¦¤Ë°·¤ï¤ì¤Þ¤¹¡£¥×¥í¥°¥é¥àÍ×ÁǤ¬Ê£¿ô¤ÎAPI¤Ç»ÈÍѤµ¤ì¤ë¾ì¹ç¡¢Ê£¿ô¤Î¥¿¥°¤ò»ÈÍѤǤ¤Þ¤¹¡£ -+.LP -+.TP 3 -+@throws\ class\-name\ description -+\f2@throws\fP¥¿¥°¤È\f2@exception\fP¥¿¥°¤ÏƱµÁ¤Ç¤¹¡£À¸À®¥É¥¥å¥á¥ó¥È¤Ë¡Ö¥¹¥í¡¼¡×¾®¸«½Ð¤·¤òÄɲ䷤ơ¢\f2class\-name\fP¤ª¤è¤Ó\f2description\fP¤Î¥Æ¥¥¹¥È¤ò½ñ¤¹þ¤ß¤Þ¤¹¡£\f2class\-name\fP¤Ï¡¢¤½¤Î¥á¥½¥Ã¥É¤«¤é¥¹¥í¡¼¤µ¤ì¤ë²ÄǽÀ¤Î¤¢¤ëÎã³°¤Î̾Á°¤Ç¤¹¡£¤³¤Î¥¿¥°¤Ï¡¢¥á¥½¥Ã¥É¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥ÈÆâ¤Ç¤Î¤ß͸ú¤Ç¤¹¡£¤³¤Î¥¯¥é¥¹¤¬´°Á´»ØÄê¤Î̾Á°¤Çµ½Ò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¸¡º÷½ç½ø¤Ë½¾¤Ã¤Æ¥¯¥é¥¹¤òõ¤·¤Þ¤¹¡£Æ±¤¸¤Þ¤¿¤Ï°Û¤Ê¤ëÎã³°¤ÎÆÃÄê¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç¡¢Ê£¿ô¤Î\f2@throws\fP¥¿¥°¤ò»ÈÍѤǤ¤Þ¤¹¡£ -+.LP -+¤¹¤Ù¤Æ¤Î¥Á¥§¥Ã¥¯ºÑ¤ßÎã³°¤¬¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¡¢\f2@throws\fP¥¿¥°¤¬throwsÀáÆâ¤ÎÎã³°ÍѤ˸ºß¤·¤Ê¤¤¾ì¹ç¤Ï¡¢@throws¥¿¥°¤Ç¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤¿¤«¤Î¤è¤¦¤Ë¡¢Javadoc¥Ä¡¼¥ë¤Ë¤è¤Ã¤ÆÎã³°¤¬HTML½ÐÎϤËÀâÌÀ¤Ê¤·¤Ç¼«Æ°Åª¤ËÄɲ䵤ì¤Þ¤¹¡£ -+.LP -+¥ª¡¼¥Ð¡¼¥é¥¤¥É¤µ¤ì¤ë¥á¥½¥Ã¥ÉÆâ¤ÇÎã³°¤¬ÌÀ¼¨Åª¤ËÀë¸À¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Î¤ß¡¢\f2@throws\fP¤Î¥É¥¥å¥á¥ó¥È¤¬¤½¤Î¥á¥½¥Ã¥É¤«¤é¥µ¥Ö¥¯¥é¥¹¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¦¥á¥½¥Ã¥É¤«¤é¼ÂÁõ¥á¥½¥Ã¥É¤Ë¥³¥Ô¡¼¤µ¤ì¤ë¾ì¹ç¤âƱÍͤǤ¹¡£@throws¤Ë¥É¥¥å¥á¥ó¥È¤ò·Ñ¾µ¤µ¤»¤ë¤Ë¤Ï¡¢{@inheritDoc}¤ò»ÈÍѤǤ¤Þ¤¹¡£ -+.LP -+¾ÜºÙ¤Ï¡¢ -+.na -+\f2@throws¥¿¥°¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@exception¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.TP 3 -+{@value\ package.class#field} -+\f2{@value}\fP¤¬ÀÅŪ¥Õ¥£¡¼¥ë¥É¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç°ú¿ô¤Ê¤·¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¤½¤ÎÄê¿ô¤ÎÃͤ¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * The value of this constant is {@value}. -+.fl -+ */ -+.fl -+ public static final String SCRIPT_START = "<script>" -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+Ǥ°Õ¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥ÈÆâ¤Ç°ú¿ô\f2package.class#field\fP¤¢¤ê¤Ç»ÈÍѤµ¤ì¤¿¾ì¹ç¤Ï¡¢¤½¤Î»ØÄꤵ¤ì¤¿Äê¿ô¤ÎÃͤ¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * Evaluates the script starting with {@value #SCRIPT_START}. -+.fl -+ */ -+.fl -+ public String evalScript(String script) { -+.fl -+ } -+.fl -+ -+.fl -+\fP -+.fi -+.LP -+°ú¿ô\f2package.class#field\fP¤Ï¡¢@see°ú¿ô¤ÈƱ°ì¤Î·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£¤¿¤À¤·¡¢¥á¥ó¥Ð¡¼¤ÏÀÅŪ¥Õ¥£¡¼¥ë¥É¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+¤³¤ì¤é¤ÎÄê¿ô¤Ç¤ÎÃͤϡ¢ -+.na -+\f2Äê¿ô¥Õ¥£¡¼¥ë¥ÉÃÍ\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/constant\-values.html¥Ú¡¼¥¸¤Ë¤âɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+.TP 3 -+@version\ version\-text -+\-version¥ª¥×¥·¥ç¥ó¤¬»ÈÍѤµ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢À¸À®¥É¥¥å¥á¥ó¥È¤Ë¡Ö¥Ð¡¼¥¸¥ç¥ó¡×¾®¸«½Ð¤·¤òÄɲ䷤ơ¢»ØÄꤵ¤ì¤¿\f2version\-text\fP¤ò½ñ¤¹þ¤ß¤Þ¤¹¡£¤³¤Î¥¿¥°¤Ï¡¢¤³¤Î¥³¡¼¥É¤¬´Þ¤Þ¤ì¤ë¥½¥Õ¥È¥¦¥§¥¢¤Î¸½ºß¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òÊÝ»ý¤¹¤ë¤è¤¦¤Ë°Õ¿Þ¤µ¤ì¤Æ¤¤¤Þ¤¹(¤³¤ì¤ËÂФ·¡¢@since¤Ï¡¢¤³¤Î¥³¡¼¥É¤¬Æ³Æþ¤µ¤ì¤¿¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òÊÝ»ý¤·¤Þ¤¹)¡£\f2version\-text\fP¤Ë¤Ï¡¢ÆÃÊ̤ÊÆâÉô¹½Â¤¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥Ð¡¼¥¸¥ç¥ó¡¦¥¿¥°¤ò»ÈÍѤǤ¤ë¾ì½ê¤òÄ´¤Ù¤ë¤Ë¤Ï¡¢¥¿¥°¤ò»ÈÍѤǤ¤ë¾ì½ê¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+1¤Ä¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ËÊ£¿ô¤Î\f2@version\fP¥¿¥°¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£É¬Íפ˱þ¤¸¤Æ¡¢1¤Ä¤Î\f2@version\fP¥¿¥°¤Ë1¤Ä¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤ò»ØÄꤹ¤ë¤³¤È¤â¡¢Ê£¿ô¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£Á°¼Ô¤Î¾ì¹ç¤Ï¡¢Javadoc¥Ä¡¼¥ë¤Ë¤è¤Ã¤Æ̾Á°¤È̾Á°¤Î´Ö¤Ë¥«¥ó¥Þ(\f2,\fP)¤È¶õÇòʸ»ú¤¬ÁÞÆþ¤µ¤ì¤Þ¤¹¡£¸å¼Ô¤Î¾ì¹ç¤Ï¡¢¥Æ¥¥¹¥ÈÁ´ÂΤ¬¡¢²òÀϤµ¤ì¤ë¤³¤È¤Ê¤¯¡¢À¸À®¥É¥¥å¥á¥ó¥È¤Ë¤½¤Î¤Þ¤Þ¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥«¥ó¥Þ¤Ç¤Ï¤Ê¤¯¡¢³Æ¸À¸ì¤ËÂбþ¤·¤¿Ì¾Á°¶èÀÚ¤êʸ»ú¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ë¤È¤¤Ï¡¢1¤Ä¤Î¥¿¥°¤ËÊ£¿ô¤Î̾Á°¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+¾ÜºÙ¤Ï¡¢ -+.na -+\f2@version¥¿¥°¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@version¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RE -+.SS -+¥¿¥°¤ò»ÈÍѤǤ¤ë¾ì½ê -+.LP -+¤³¤³¤Ç¤Ï¡¢¥¿¥°¤ò»ÈÍѤǤ¤ë¾ì½ê¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£\f2@see\fP¡¢\f2@since\fP¡¢\f2@deprecated\fP¡¢\f2{@link}\fP¡¢\f2{@linkplain}\fP¡¢¤ª¤è¤Ó\f2{@docroot}\fP¤Ï¡¢¤¹¤Ù¤Æ¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç»ÈÍѤǤ¤Þ¤¹¡£ -+.SS -+³µÍפΥɥ¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥¿¥° -+.LP -+³µÍ×¥¿¥°¤Ï¡¢³µÍ×¥Ú¡¼¥¸¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç»ÈÍѤǤ¤ë¥¿¥°¤Ç¤¹(¤³¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ï¡¢Ä̾ï\f2overview.html\fP¤È¤¤¤¦Ì¾Á°¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ëÆâ¤Ë¤¢¤ê¤Þ¤¹)¡£Â¾¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î¾ì¹ç¤ÈƱÍͤˡ¢¤³¤ì¤é¤Î¥¿¥°¤Ï¡¢¼çÀâÌÀ¤Î¸å¤Ç»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+\f3Ãí°Õ\fP \- ¥Ð¡¼¥¸¥ç¥ó1.2¤Ç¤Ï¡¢³µÍץɥ¥å¥á¥ó¥ÈÆâ¤Î\f2{@link}\fP¥¿¥°¤Ë¥Ð¥°¤¬¤¢¤ê¤Þ¤¹¡£¥Æ¥¥¹¥È¤ÏÀµ¤·¤¯É½¼¨¤µ¤ì¤Þ¤¹¤¬¡¢¥ê¥ó¥¯¤¬ÀßÄꤵ¤ì¤Þ¤»¤ó¡£¸½ºß¤Î¤È¤³¤í¡¢\f2{@docRoot}\fP¥¿¥°¤Ï¡¢³µÍץɥ¥å¥á¥ó¥ÈÆâ¤Ç¤Ïµ¡Ç½¤·¤Þ¤»¤ó¡£ -+.LP -+\f3³µÍ×¥¿¥°\fP -+.RS 3 -+.TP 2 -+o -+\f2@see\fP -+.TP 2 -+o -+\f2@since\fP -+.TP 2 -+o -+\f2@author\fP -+.TP 2 -+o -+\f2@version\fP -+.TP 2 -+o -+\f2{@link}\fP -+.TP 2 -+o -+\f2{@linkplain}\fP -+.TP 2 -+o -+\f2{@docRoot}\fP -+.RE -+.SS -+¥Ñ¥Ã¥±¡¼¥¸¡¦¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥¿¥° -+.LP -+¥Ñ¥Ã¥±¡¼¥¸¡¦¥¿¥°¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç»ÈÍѤǤ¤ë¥¿¥°¤Ç¤¹(¤³¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ï\f2package.html\fP¤Þ¤¿¤Ï\f2package\-info.java\fP¤È¤¤¤¦Ì¾Á°¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ëÆâ¤Ë¤¢¤ê¤Þ¤¹)¡£¤³¤³¤Ç»ÈÍѤǤ¤ë\f2@serial\fP¥¿¥°¤Ï¡¢\f2include\fP¤Þ¤¿¤Ï\f2exclude\fP°ú¿ô¤ò»ØÄꤷ¤¿¤â¤Î¤Î¤ß¤Ç¤¹¡£ -+.LP -+\f3¥Ñ¥Ã¥±¡¼¥¸¡¦¥¿¥°\fP -+.RS 3 -+.TP 2 -+o -+\f2@see\fP -+.TP 2 -+o -+\f2@since\fP -+.TP 2 -+o -+\f2@serial\fP -+.TP 2 -+o -+\f2@author\fP -+.TP 2 -+o -+\f2@version\fP -+.TP 2 -+o -+\f2{@link}\fP -+.TP 2 -+o -+\f2{@linkplain}\fP -+.TP 2 -+o -+\f2{@docRoot}\fP -+.RE -+.SS -+¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¦¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥¿¥° -+.LP -+¼¡¤Ë¡¢¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç»ÈÍѤǤ¤ë¥¿¥°¤ò¼¨¤·¤Þ¤¹¡£¤³¤³¤Ç»ÈÍѤǤ¤ë\f2@serial\fP¥¿¥°¤Ï¡¢\f2include\fP¤Þ¤¿¤Ï\f2exclude\fP°ú¿ô¤ò»ØÄꤷ¤¿¤â¤Î¤Î¤ß¤Ç¤¹¡£ -+.LP -+\f3¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¦¥¿¥°\fP -+.RS 3 -+.TP 2 -+o -+\f2@see\fP -+.TP 2 -+o -+\f2@since\fP -+.TP 2 -+o -+\f2@deprecated\fP -+.TP 2 -+o -+\f2@serial\fP -+.TP 2 -+o -+\f2@author\fP -+.TP 2 -+o -+\f2@version\fP -+.TP 2 -+o -+\f2{@link}\fP -+.TP 2 -+o -+\f2{@linkplain}\fP -+.TP 2 -+o -+\f2{@docRoot}\fP -+.RE -+\f3¥¯¥é¥¹¡¦¥³¥á¥ó¥È¤ÎÎã:\fP -+.nf -+\f3 -+.fl -+/** -+.fl -+ * A class representing a window on the screen. -+.fl -+ * For example: -+.fl -+ * <pre> -+.fl -+ * Window win = new Window(parent); -+.fl -+ * win.show(); -+.fl -+ * </pre> -+.fl -+ * -+.fl -+ * @author Sami Shaio -+.fl -+ * @version 1.13, 06/08/06 -+.fl -+ * @see java.awt.BaseWindow -+.fl -+ * @see java.awt.Button -+.fl -+ */ -+.fl -+class Window extends BaseWindow { -+.fl -+ ... -+.fl -+} -+.fl -+\fP -+.fi -+.SS -+¥Õ¥£¡¼¥ë¥É¡¦¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥¿¥° -+.LP -+¼¡¤Ë¡¢¥Õ¥£¡¼¥ë¥É¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç»ÈÍѤǤ¤ë¥¿¥°¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+\f3¥Õ¥£¡¼¥ë¥É¡¦¥¿¥°\fP -+.RS 3 -+.TP 2 -+o -+\f2@see\fP -+.TP 2 -+o -+\f2@since\fP -+.TP 2 -+o -+\f2@deprecated\fP -+.TP 2 -+o -+\f2@serial\fP -+.TP 2 -+o -+\f2@serialField\fP -+.TP 2 -+o -+\f2{@link}\fP -+.TP 2 -+o -+\f2{@linkplain}\fP -+.TP 2 -+o -+\f2{@docRoot}\fP -+.TP 2 -+o -+\f2{@value}\fP -+.RE -+\f3¥Õ¥£¡¼¥ë¥É¡¦¥³¥á¥ó¥È¤ÎÎã:\fP -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * The X\-coordinate of the component. -+.fl -+ * -+.fl -+ * @see #getLocation() -+.fl -+ */ -+.fl -+ int x = 1263732; -+.fl -+\fP -+.fi -+.SS -+¥³¥ó¥¹¥È¥é¥¯¥¿¤ª¤è¤Ó¥á¥½¥Ã¥É¡¦¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥¿¥° -+.LP -+¼¡¤Ë¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¤Þ¤¿¤Ï¥á¥½¥Ã¥É¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç»ÈÍѤǤ¤ë¥¿¥°¤ò¼¨¤·¤Þ¤¹¡£¤¿¤À¤·¡¢\f2@return\fP¤Ï¥³¥ó¥¹¥È¥é¥¯¥¿¤Ç¤Ï»ÈÍѤǤ¤º¡¢\f2{@inheritDoc}\fP¤Ë¤ÏÆÃÄê¤ÎÀ©¸Â¤¬¤¢¤ê¤Þ¤¹¡£\f2@serialData\fP¥¿¥°¤ÏÆÃÄê¤ÎľÎ󲽥᥽¥Ã¥É¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Ç¤Î¤ß»ÈÍѤǤ¤Þ¤¹¡£ -+.LP -+\f3¥á¥½¥Ã¥É¤ª¤è¤Ó¥³¥ó¥¹¥È¥é¥¯¥¿¡¦¥¿¥°\fP -+.RS 3 -+.TP 2 -+o -+\f2@see\fP -+.TP 2 -+o -+\f2@since\fP -+.TP 2 -+o -+\f2@deprecated\fP -+.TP 2 -+o -+\f2@param\fP -+.TP 2 -+o -+\f2@return\fP -+.TP 2 -+o -+\f2@throws\fP¤È\f2@exception\fP -+.TP 2 -+o -+\f2@serialData\fP -+.TP 2 -+o -+\f2{@link}\fP -+.TP 2 -+o -+\f2{@linkplain}\fP -+.TP 2 -+o -+\f2{@inheritDoc}\fP -+.TP 2 -+o -+\f2{@docRoot}\fP -+.RE -+\f3¥á¥½¥Ã¥É¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ÎÎã:\fP -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * Returns the character at the specified index. An index -+.fl -+ * ranges from <code>0</code> to <code>length() \- 1</code>. -+.fl -+ * -+.fl -+ * @param index the index of the desired character. -+.fl -+ * @return the desired character. -+.fl -+ * @exception StringIndexOutOfRangeException -+.fl -+ * if the index is not in the range <code>0</code> -+.fl -+ * to <code>length()\-1</code>. -+.fl -+ * @see java.lang.Character#charValue() -+.fl -+ */ -+.fl -+ public char charAt(int index) { -+.fl -+ ... -+.fl -+ } -+.fl -+\fP -+.fi -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+Javadoc¥Ä¡¼¥ë¤Ï¡¢¥É¥Ã¥¯¥ì¥Ã¥È¤ò»ÈÍѤ·¤Æ½ÐÎϤò·èÄꤷ¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢\-doclet¥ª¥×¥·¥ç¥ó¤Ç¥«¥¹¥¿¥à¡¦¥É¥Ã¥¯¥ì¥Ã¥È¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç°Ê³°¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Îɸ½à¥É¥Ã¥¯¥ì¥Ã¥È¤ò»ÈÍѤ·¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ë¤Ï¡¢Ç¤°Õ¤Î¥É¥Ã¥¯¥ì¥Ã¥È¤È¤È¤â¤Ë»ÈÍѤǤ¤ë¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¸å½Ò¤ÎJavadoc¥ª¥×¥·¥ç¥ó¤ÇÀâÌÀ¤·¤Þ¤¹¡£É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¤Ç¤Ï¡¢¤³¤Î¾¤Ë¡¢¤¤¤¯¤Ä¤«¤ÎÄɲäΥ³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤¬Ä󶡤µ¤ì¤Þ¤¹¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¸å½Ò¤Îɸ½à¥É¥Ã¥¯¥ì¥Ã¥È¤¬Ä󶡤¹¤ë¥ª¥×¥·¥ç¥ó¤ÇÀâÌÀ¤·¤Þ¤¹¡£¤É¤Î¥ª¥×¥·¥ç¥ó̾¤â¡¢Âçʸ»ú¤È¾®Ê¸»ú¤¬¶èÊ̤µ¤ì¤Þ¤»¤ó¡£¤¿¤À¤·¡¢¥ª¥×¥·¥ç¥ó¤Î°ú¿ô¤Ç¤Ï¡¢Âçʸ»ú¤È¾®Ê¸»ú¤¬¶èÊ̤µ¤ì¤Þ¤¹¡£ -+.LP -+¥ª¥×¥·¥ç¥ó¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 82 -+.nr 34 \n(.lu -+.eo -+.am 80 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\-\f21.1\fP -+.br -+\-author -+.br -+\-\f2bootclasspath\fP -+.br -+\-bottom -+.br -+\-\f2breakiterator\fP -+.br -+\-charset -+.br -+\-\f2classpath\fP -+.br -+\-d -+.br -+\-docencoding -+.br -+\-docfilessubdirs -+.br -+\-\f2doclet\fP -+.br -+\-\f2docletpath\fP -+.br -+\-doctitle -+.br -+\-\f2encoding\fP -+.br -+\-\f2exclude\fP -+.br -+\-excludedocfilessubdir -+.br -+\-\f2extdirs\fP -+.br -+\-footer -+.br -+\-group -+.br -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+\-header -+.br -+\-\f2help\fP -+.br -+\-helpfile -+.br -+\-\f2J\fP -+.br -+\-keywords -+.br -+\-link -+.br -+\-linkoffline -+.br -+\-linksource -+.br -+\-\f2locale\fP -+.br -+\-nocomment -+.br -+\-nodeprecated -+.br -+\-nodeprecatedlist -+.br -+\-nohelp -+.br -+\-noindex -+.br -+\-nonavbar -+.br -+\-noqualifier -+.br -+\-nosince -+.br -+\-notimestamp -+.br -+\-notree -+.br -+\-\f2overview\fP -+.br -+\-\f2package\fP -+.br -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 82 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/4u -+.if \n(.l<\n(82 .ll \n(82u -+.in 0 -+\-\f2private\fP -+.br -+\-\f2protected\fP -+.br -+\-\f2public\fP -+.br -+\-\f2quiet\fP -+.br -+\-serialwarn -+.br -+\-\f2source\fP -+.br -+\-\f2sourcepath\fP -+.br -+\-sourcetab -+.br -+\-splitindex -+.br -+\-stylesheetfile -+.br -+\-\f2subpackages\fP -+.br -+\-tag -+.br -+\-taglet -+.br -+\-tagletpath -+.br -+\-top -+.br -+\-title -+.br -+\-use -+.br -+\-\f2verbose\fP -+.br -+\-version -+.br -+\-windowtitle -+.br -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.80 -+.rm 80 -+.nr 38 \n(a- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 81 0 -+.81 -+.rm 81 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 82 0 -+.82 -+.rm 82 -+.nr 38 \n(c- -+.if \n(82<\n(38 .nr 82 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr 42 \n(81+(3*\n(38) -+.nr 82 +\n(42 -+.nr TW \n(82 -+.if t .if \n(TW>\n(.li .tm Table at line 2003 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ne \n(a|u+\n(.Vu -+.ne \n(b|u+\n(.Vu -+.ne \n(c|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u \n(82u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(42u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-127 -+.LP -+\f2¥¤¥¿¥ê¥Ã¥¯\fP¤Ç¼¨¤µ¤ì¤¿¥ª¥×¥·¥ç¥ó¤Ï¡¢Javadoc¤Î´ðËÜ¥ª¥×¥·¥ç¥ó¤Ç¤¢¤ê¡¢Javadoc¥Ä¡¼¥ë¤Î¥Õ¥í¥ó¥È¥¨¥ó¥É¤Ë¤è¤Ã¤ÆÄ󶡤µ¤ì¡¢¤¹¤Ù¤Æ¤Î¥É¥Ã¥¯¥ì¥Ã¥È¤Ç»ÈÍѤǤ¤Þ¤¹¡£É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¼«ÂΤϡ¢¥¤¥¿¥ê¥Ã¥¯¤Ç¤Ê¤¤¥ª¥×¥·¥ç¥ó¤òÄ󶡤·¤Þ¤¹¡£ -+.SS -+Javadoc¥ª¥×¥·¥ç¥ó -+.RS 3 -+.TP 3 -+\-overview \ path/filename -+Javadoc¤ËÂФ·¤Æ¡¢\f2path/filename\fP¤Ç»ØÄꤵ¤ì¤¿¡Ö¥½¡¼¥¹¡×¥Õ¥¡¥¤¥ë¤«¤é³µÍץɥ¥å¥á¥ó¥ÈÍѤΥƥ¥¹¥È¤ò¼èÆÀ¤·¡¢¤½¤Î¥Æ¥¥¹¥È¤ò³µÍ×¥Ú¡¼¥¸(\f2overview\-summary.html\fP)¤ËÇÛÃÖ¤¹¤ë¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£\f2path/filename\fP¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¤ÎÁêÂХѥ¹¤Ç¤¹¡£ -+.br -+.br -+\f2filename\fP¤ÇǤ°Õ¤Î̾Á°¤ò»ÈÍѤ·¡¢\f2path\fP¤ÇǤ°Õ¤ÎÇÛÃÖÀè¤ò»ØÄê¤Ç¤¤Þ¤¹¤¬¡¢Ä̾ï¤Ï\f2overview.html\fP¤È¤¤¤¦Ì¾Á°¤òÉÕ¤±¡¢¥½¡¼¥¹¡¦¥Ä¥ê¡¼Æâ¤ÎºÇ¾å°Ì¥Ñ¥Ã¥±¡¼¥¸¡¦¥Ç¥£¥ì¥¯¥È¥ê¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤ËÇÛÃÖ¤·¤Þ¤¹¡£¤³¤Î¾ì½ê¤ËÇÛÃÖ¤¹¤ë¤È¡¢¥Ñ¥Ã¥±¡¼¥¸¤ò¥É¥¥å¥á¥ó¥È²½¤¹¤ë¤È¤¤Ë\f2path\fP¤ò»ØÄꤹ¤ëɬÍפ¬¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢\f2\-sourcepath\fP¤Ë¤è¤Ã¤Æ¤³¤Î¥Õ¥¡¥¤¥ë¤¬»Ø¤·¼¨¤µ¤ì¤ë¤«¤é¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2java.lang\fP¥Ñ¥Ã¥±¡¼¥¸¤Î¥½¡¼¥¹¡¦¥Ä¥ê¡¼¤¬\f2/src/classes/java/lang/\fP¤Î¾ì¹ç¡¢³µÍ×¥Õ¥¡¥¤¥ë¤ò\f2/src/classes/overview.html\fP¤ËÇÛÃ֤Ǥ¤Þ¤¹¡£»ÈÍÑÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+\f2path/filename\fP¤Ç»ØÄꤹ¤ë¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¤Ï¡¢³µÍ×¥³¥á¥ó¥È¡¦¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+³µÍ×¥Ú¡¼¥¸¤¬ºîÀ®¤µ¤ì¤ë¤Î¤Ï¡¢Javadoc¤ËÊ£¿ô¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÅϤ·¤¿¾ì¹ç¤Î¤ß¤Ç¤¹¡£¾ÜºÙ¤Ï¡¢HTML¥Õ¥ì¡¼¥à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+³µÍ×¥Ú¡¼¥¸¤Î¥¿¥¤¥È¥ë¤Ï¡¢\f2\-doctitle\fP¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-public -+public¥¯¥é¥¹¤ª¤è¤Ó¥á¥ó¥Ð¡¼¤Î¤ß¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-protected -+protected¤ª¤è¤Ópublic¤Î¥¯¥é¥¹¤È¥á¥ó¥Ð¡¼¤Î¤ß¤òɽ¼¨¤·¤Þ¤¹¡£¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¹¡£ -+.TP 3 -+\-package -+package¡¢protected¡¢¤ª¤è¤Ópublic¤Î¥¯¥é¥¹¤È¥á¥ó¥Ð¡¼¤Î¤ß¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-private -+¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤È¥á¥ó¥Ð¡¼¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-help -+¥ª¥ó¥é¥¤¥ó¡¦¥Ø¥ë¥×¤òɽ¼¨¤·¤Þ¤¹¡£Javadoc¤È¥É¥Ã¥¯¥ì¥Ã¥È¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤¬¥ê¥¹¥È¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-doclet\ class -+¥É¥¥å¥á¥ó¥È¤ÎÀ¸À®¤Ë»ÈÍѤ¹¤ë¥É¥Ã¥¯¥ì¥Ã¥È¤òµ¯Æ°¤¹¤ë¤¿¤á¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£´°Á´½¤¾þ̾¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥É¥Ã¥¯¥ì¥Ã¥È¤Ë¤è¤ê¡¢½ÐÎϤÎÆâÍƤȷÁ¼°¤¬ÄêµÁ¤µ¤ì¤Þ¤¹¡£\f4\-doclet\fP¥ª¥×¥·¥ç¥ó¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢Javadoc¤Ï¡¢É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¤ò»ÈÍѤ·¤Æ¥Ç¥Õ¥©¥ë¥È¤ÎHTML·Á¼°¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤Ë¤Ï\f2start(Root)\fP¥á¥½¥Ã¥É¤¬´Þ¤Þ¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Îµ¯Æ°¥¯¥é¥¹¤Ø¤Î¥Ñ¥¹¤Ï\f2\-docletpath\fP¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥É¥Ã¥¯¥ì¥Ã¥È¤Î³µÍ×\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/doclet/overview.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-docletpath\ classpathlist -+\f2\-doclet\fP¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤¿¥É¥Ã¥¯¥ì¥Ã¥È³«»Ï¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¡¢¤ª¤è¤Ó¤½¤Î¥¯¥é¥¹¤¬°Í¸¤¹¤ë¤¹¤Ù¤Æ¤ÎJAR¥Õ¥¡¥¤¥ë¤Ø¤Î¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£³«»Ï¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤¬jar¥Õ¥¡¥¤¥ëÆâ¤Ë¤¢¤ë¾ì¹ç¡¢¼¡¤ÎÎã¤Î¤è¤¦¤Ëjar¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤¬»ØÄꤵ¤ì¤Þ¤¹¡£ÀäÂХѥ¹¤Þ¤¿¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¤ÎÁêÂХѥ¹¤ò»ØÄê¤Ç¤¤Þ¤¹¡£\f2classpathlist\fP¤ËÊ£¿ô¤Î¥Ñ¥¹¤äJAR¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤ì¤é¤òSolaris¤Î¾ì¹ç¤Ï¥³¥í¥ó(:)¤Ç¡¢Windows¤Î¾ì¹ç¤Ï¥»¥ß¥³¥í¥ó(;)¤Ç¤½¤ì¤¾¤ì¶èÀÚ¤ê¤Þ¤¹¡£ÌÜŪ¤Î¥É¥Ã¥¯¥ì¥Ã¥È³«»Ï¥¯¥é¥¹¤¬¤¹¤Ç¤Ë¸¡º÷¥Ñ¥¹Æâ¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ÏÉÔÍפǤ¹¡£ -+.br -+.br -+¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥É¥Ã¥¯¥ì¥Ã¥È¤Î³µÍ×\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/doclet/overview.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-1.1 -+\f2¤³¤Îµ¡Ç½¤ÏJavadoc 1.4¤«¤éºï½ü¤µ¤ì¤Þ¤·¤¿¡£ÂåÂص¡Ç½¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢Javadoc 1.1¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë¤Î¤ÈƱ¤¸³°¸«¤Èµ¡Ç½¤ò»ý¤Ä¥É¥¥å¥á¥ó¥È¤òºîÀ®¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤·¤¿(¥Í¥¹¥È¤µ¤ì¤¿¥¯¥é¥¹¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó)¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬É¬Íפʾì¹ç¤Ï¡¢Javadoc 1.2¤Þ¤¿¤Ï1.3¤ò¤«¤ï¤ê¤Ë»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£\fP -+.TP 3 -+\-source release -+¼õ¤±ÉÕ¤±¤ë¥½¡¼¥¹¡¦¥³¡¼¥É¤Î¥Ð¡¼¥¸¥ç¥ó¤ò»ØÄꤷ¤Þ¤¹¡£\f2release\fP¤Ë¤Ï¼¡¤ÎÃͤò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f31.5\fP \- Javadoc¤Ï¡¢JDK 1.5¤ÇƳÆþ¤µ¤ì¤¿Áí¾Î¤ª¤è¤Ó¾¤Î¸À¸ìµ¡Ç½¤ò´Þ¤à¥³¡¼¥É¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¡£\f3\-source\fP¥Õ¥é¥°¤¬»ÈÍѤµ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Î¥³¥ó¥Ñ¥¤¥é¤Î¥Ç¥Õ¥©¥ë¥ÈÆ°ºî¤Ï¡¢1.5¤Î¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\f31.4\fP \- Javadoc¤Ï¡¢JDK 1.4¤ÇƳÆþ¤µ¤ì¤¿¥¢¥µ¡¼¥·¥ç¥ó¤ò´Þ¤à¥³¡¼¥É¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¡£ -+.TP 2 -+o -+\f31.3\fP \- Javadoc¤Ï¡¢JDK 1.3°Ê¹ß¤ËƳÆþ¤µ¤ì¤¿¥¢¥µ¡¼¥·¥ç¥ó¡¢Áí¾Î¡¢¤Þ¤¿¤Ï¾¤Î¸À¸ìµ¡Ç½¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤»¤ó¡£ -+.RE -+javac¤Ç¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë»ÈÍѤ·¤¿ÃͤËÂбþ¤¹¤ë\f2release\fP¤ÎÃͤò»ÈÍѤ·¤Þ¤¹¡£ -+.TP 3 -+\-sourcepath\ sourcepathlist -+¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Þ¤¿¤Ï\f2\-subpackages\fP¤ò\f2javadoc\fP¥³¥Þ¥ó¥É¤ËÅϤ¹¤È¤¤Ë¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë(.\f2.java\fP)¤ò¸«¤Ä¤±¤ë¤¿¤á¤Î¸¡º÷¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£\f2sourcepathlist\fP¤Ë¤Ï¡¢¥³¥í¥ó(\f2:\fP)¤Ç¶èÀڤäÆÊ£¿ô¤Î¥Ñ¥¹¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢»ØÄꤵ¤ì¤¿¥Ñ¥¹°Ê²¼¤Î¤¹¤Ù¤Æ¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î°ÌÃ֤ΤߤǤʤ¯¡¢¤½¤ì¼«ÂΤϥɥ¥å¥á¥ó¥È²½¤µ¤ì¤Ê¤¤¤¬¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤«¤é·Ñ¾µ¤µ¤ì¤¿¥³¥á¥ó¥È¤ò»ý¤Ä¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î°ÌÃÖ¤â³Îǧ¤Ç¤¤Þ¤¹¡£ -+.br -+.br -+\f2\-sourcepath\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤǤ¤ë¤Î¤Ï¡¢javadoc¥³¥Þ¥ó¥É¤Ë¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÅϤ¹¾ì¹ç¤Î¤ß¤Ç¤¹¡£¤³¤Î¥Ñ¥¹¤«¤é¤Ï¡¢\f2javadoc\fP¥³¥Þ¥ó¥É¤ËÅϤµ¤ì¤ë\f2.java\fP¥Õ¥¡¥¤¥ë¤Ï¸¡º÷¤µ¤ì¤Þ¤»¤ó¡£(\f2.java\fP¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤ë¤Ë¤Ï¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ëcd¤Ë¤è¤Ã¤Æ°ÜÆ°¤¹¤ë¤«¡¢¤Þ¤¿¤Ï³Æ¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤Ë¥Ñ¥¹¤ò´Þ¤á¤Þ¤¹(1¤Ä°Ê¾å¤Î¥¯¥é¥¹¤Î¥É¥¥å¥á¥ó¥È²½¤ò»²¾È)¡£)\f2\-sourcepath\fP¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¡¢Javadoc¤Ï¡¢¥¯¥é¥¹¡¦¥Ñ¥¹¤ò»ÈÍѤ·¤Æ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤·¤Þ¤¹(\-classpath¤ò»²¾È)¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥Ç¥Õ¥©¥ë¥È¤Î\-sourcepath¤Ï¡¢¥¯¥é¥¹¡¦¥Ñ¥¹¤ÎÃͤǤ¹¡£\-classpath¤ò¾Êά¤·¤Æ¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òJavadoc¤ËÅϤ¹¤È¡¢Javadoc¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê(¤ª¤è¤Ó¤½¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê)¤«¤é¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤·¤Þ¤¹¡£ -+.br -+.br -+\f2sourcepathlist\fP¤Ë¤Ï¡¢¥É¥¥å¥á¥ó¥È²½¤¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤Î¥½¡¼¥¹¡¦¥Ä¥ê¡¼¤Î¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¤òÀßÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2com.mypackage\fP¤È¤¤¤¦Ì¾Á°¤Î¥Ñ¥Ã¥±¡¼¥¸¤ò¥É¥¥å¥á¥ó¥È²½¤¹¤ë¾ì¹ç¤Ë¡¢¤½¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬¼¡¤Î¾ì½ê¤Ë¤¢¤ë¤È¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ /home/user/src/com/mypackage/*.java -+.fl -+\fP -+.fi -+¤³¤Î¾ì¹ç¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ\f2sourcepath\fP¤ò¡¢\f2com/mypackage\fP¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤ë\f2/home/user/src\fP¤Ë»ØÄꤷ¤Æ¤«¤é¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾\f2com.mypackage\fP¤ò»ØÄꤷ¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-sourcepath /home/user/src/ com.mypackage\fP -+.fl -+.fi -+¤³¤ÎÊýË¡¤Ï¡¢¥½¡¼¥¹¡¦¥Ñ¥¹¤ÎÃͤȥѥ屡¼¥¸Ì¾¤òÏ¢·ë¤·¤Æ¡¢¥É¥Ã¥È¤ò¥¹¥é¥Ã¥·¥å¡Ö/¡×¤ËÊѹ¹¤¹¤ë¤È¡¢¥Ñ¥Ã¥±¡¼¥¸¤Î¥Õ¥ë¥Ñ¥¹\f2/home/user/src/com/mypackage\fP¤Ë¤Ê¤ë¤³¤È¤Ëµ¤ÉÕ¤¯¤È³Ð¤¨¤ä¤¹¤¤¤Ç¤¹¡£ -+.br -+.br -+2¤Ä¤Î¥½¡¼¥¹¡¦¥Ñ¥¹¤òÀßÄꤹ¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-sourcepath /home/user1/src:/home/user2/src com.mypackage\fP -+.fl -+.fi -+.TP 3 -+\-classpath\ classpathlist -+Javadoc¤¬»²¾È¥¯¥é¥¹(\f2.class\fP¥Õ¥¡¥¤¥ë)¤Î¸¡º÷¤ò¹Ô¤¦¤È¤¤Ë»ÈÍѤ¹¤ë¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£»²¾È¥¯¥é¥¹¤È¤Ï¡¢¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥¯¥é¥¹¤È¡¢¤½¤ì¤é¤Î¥¯¥é¥¹¤Ë¤è¤Ã¤Æ»²¾È¤µ¤ì¤ë¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤Î¤³¤È¤Ç¤¹¡£\f2classpathlist\fP¤Ë¤Ï¡¢¥³¥í¥ó(\f2:\fP)¤Ç¶èÀڤäÆÊ£¿ô¤Î¥Ñ¥¹¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢»ØÄꤵ¤ì¤¿¥Ñ¥¹°Ê²¼¤Î¤¹¤Ù¤Æ¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£\f2classpathlist\fP¤ò»ØÄꤹ¤ë¤È¤¤Ï¡¢ -+.na -+\f2¥¯¥é¥¹¡¦¥Ñ¥¹\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#general¤Î¥É¥¥å¥á¥ó¥È¤Ë¤¢¤ë»Ø¼¨¤Ë½¾¤Ã¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+\f2\-sourcepath\fP¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤ë¤È¤¤Î¤ß¤Ç¤Ê¤¯¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤ë¤È¤¤Ë¤â\f2\-classpath\fP¤ò»ÈÍѤ·¤Þ¤¹(²¼°Ì¸ß´¹À¤Î¤¿¤á)¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òÊÌ¡¹¤Î¥Ñ¥¹¤«¤é¸¡º÷¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢\f2\-sourcepath\fP¤È\f2\-classpath\fP¤ÎξÊý¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.br -+.br -+¤¿¤È¤¨¤Ð¡¢\f2com.mypackage\fP¤ò¥É¥¥å¥á¥ó¥È²½¤¹¤ë¾ì¹ç¤Ë¡¢¤½¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬¥Ç¥£¥ì¥¯¥È¥ê\f2/home/user/src/com/mypackage\fP¤Ë¤¢¤ê¡¢¤³¤Î¥Ñ¥Ã¥±¡¼¥¸¤¬\f2/home/user/lib\fPÆâ¤Î¥é¥¤¥Ö¥é¥ê¤Ë°Í¸¤·¤Æ¤¤¤ë¤È¤¡¢¼¡¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-classpath /home/user/lib \-sourcepath /home/user/src com.mypackage\fP -+.fl -+.fi -+¾¤Î¥Ä¡¼¥ë¤ÈƱÍͤˡ¢\f2\-classpath\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢CLASSPATH´Ä¶ÊÑ¿ô¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ì¤Ð¡¢Javadoc¥Ä¡¼¥ë¤Ï¤½¤Î´Ä¶ÊÑ¿ô¤ò»ÈÍѤ·¤Þ¤¹¡£¤É¤Á¤é¤âÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¥¯¥é¥¹¤ò¸¡º÷¤·¤Þ¤¹¡£ -+.br -+.br -+Javadoc¥Ä¡¼¥ë¤¬\f2\-classpath\fP¤ò»ÈÍѤ·¤Æ¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¤ò¸¡º÷¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Î¡¢³ÈÄ¥µ¡Ç½¥¯¥é¥¹¤ä¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤Ë´ØÏ¢¤·¤¿¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥¯¥é¥¹¤Î¸¡º÷ÊýË¡\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/findingclasses.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+Êص¹¾å¡¢\f2*\fP¤Î¥Ù¡¼¥¹Ì¾¤ò´Þ¤à¥¯¥é¥¹¡¦¥Ñ¥¹Í×ÁǤϡ¢\f2.jar\fP¤Þ¤¿¤Ï\f2.JAR\fP¤ò³ÈÄ¥»Ò¤Ë»ý¤Ä¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤ò»ØÄꤹ¤ë¤Î¤ÈƱÅù¤È¤ß¤Ê¤µ¤ì¤Þ¤¹(Java¥×¥í¥°¥é¥à¤Ï¤³¤Î2¤Ä¤Î¸Æ½Ð¤·¤ò¶èÊ̤Ǥ¤Þ¤»¤ó)¡£ -+.br -+.br -+¤¿¤È¤¨¤Ð¡¢¥Ç¥£¥ì¥¯¥È¥ê\f2foo\fP¤Ë\f2a.jar\fP¤È\f2b.JAR\fP¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥¯¥é¥¹¡¦¥Ñ¥¹Í×ÁÇ\f2foo/*\fP¤Ï\f2A.jar:b.JAR\fP¤ËŸ³«¤µ¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢JAR¥Õ¥¡¥¤¥ë¤Î½çÈÖ¤Ï̤»ØÄê¤È¤Ê¤ê¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ë¤Ï¡¢±£¤·¥Õ¥¡¥¤¥ë¤â´Þ¤á¡¢»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤ÎJAR¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Þ¤¹¡£\f2*\fP¤Î¤ß¤«¤é¤Ê¤ë¥¯¥é¥¹¡¦¥Ñ¥¹¡¦¥¨¥ó¥È¥ê¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤ÎJAR¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤ËŸ³«¤µ¤ì¤Þ¤¹¡£\f2CLASSPATH\fP´Ä¶ÊÑ¿ô¤â¡¢ÄêµÁ»þ¤Ë¤ÏƱÍͤËŸ³«¤µ¤ì¤Þ¤¹¡£¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¥ï¥¤¥ë¥É¥«¡¼¥ÉŸ³«¤Ïɬ¤º¡¢Java²¾ÁÛ¥Þ¥·¥ó¤Îµ¯Æ°Á°¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢´Ä¶¤ËÌä¹ç¤»¤ò¹Ô¤ï¤Ê¤¤¸Â¤ê¡¢Java¥×¥í¥°¥é¥à¤¬Å¸³«¤µ¤ì¤Æ¤¤¤Ê¤¤¥ï¥¤¥ë¥É¥«¡¼¥É¤òǧ¼±¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢\f2System.getenv(\\"CLASSPATH\\")\fP¸Æ½Ð¤·¤¬¤½¤ÎÎã¤Ç¤¹¡£ -+.TP 3 -+\-subpackages\ \ package1:package2:... -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤«¤é»ØÄꤵ¤ì¤¿¥Ñ¥Ã¥±¡¼¥¸¤ª¤è¤Ó¤½¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸Æâ¤ËºÆµ¢Åª¤Ë¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥½¡¼¥¹¡¦¥³¡¼¥É¤Ë¿·¤·¤¤¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤òÄɲ乤ëºÝ¤ËÊØÍø¤Ç¤¹¡£¿·¤·¤¤¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤¬¼«Æ°Åª¤ËÁȤ߹þ¤Þ¤ì¤ë¤«¤é¤Ç¤¹¡£³Æ\f2package\fP°ú¿ô¤Ï¡¢Ç¤°Õ¤ÎºÇ¾å°Ì¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸(\f2java\fP¤Ê¤É)¤Þ¤¿¤Ï´°Á´½¤¾þ¥Ñ¥Ã¥±¡¼¥¸(\f2javax.swing\fP¤Ê¤É)¤Ë¤Ê¤ê¤Þ¤¹¡£¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò´Þ¤á¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£°ú¿ô¤Ï¡¢¥³¥í¥ó¤Ç¶èÀÚ¤é¤ì¤Þ¤¹(¤¹¤Ù¤Æ¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à)¡£¥ï¥¤¥ë¥É¥«¡¼¥É¤ÏÉÔÍ×(»ÈÍÑÉÔ²Ä)¤Ç¤¹¡£¥Ñ¥Ã¥±¡¼¥¸¤Î¸¡º÷¾ì½ê¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢\f2\-sourcepath\fP¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î½èÍý¤ÇÀâÌÀ¤·¤¿¤È¤ª¤ê¡¢¥½¡¼¥¹¡¦¥Ä¥ê¡¼¤Ë¤¢¤ë¤¬¥Ñ¥Ã¥±¡¼¥¸¤Ë¤Ï°¤·¤Æ¤¤¤Ê¤¤¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò½èÍý¤·¤Ê¤¤¤Î¤ÇÌòΩ¤Á¤Þ¤¹¡£ -+.br -+.br -+Îã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-d docs \-sourcepath /home/user/src \-subpackages java:javax.swing\fP -+.fl -+.fi -+¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢¡Öjava¡×¤ª¤è¤Ó¡Öjavax.swing¡×¤È¤¤¤¦Ì¾Á°¤Î¥Ñ¥Ã¥±¡¼¥¸¤È¤³¤ì¤é¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸Á´Éô¤Î¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤·¤Þ¤¹¡£ -+.br -+.br -+\f2\-subpackages\fP¤ò\f2\-exclude\fP¤ÈÁȤ߹礻¤Æ»ÈÍѤ¹¤ë¤È¡¢ÆÃÄê¤Î¥Ñ¥Ã¥±¡¼¥¸¤ò½ü³°¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+\-exclude\ \ packagename1:packagename2:... -+»ØÄꤵ¤ì¤¿¥Ñ¥Ã¥±¡¼¥¸¤È¤½¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤ò\f2\-subpackages\fP¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤¿¥ê¥¹¥È¤«¤é̵¾ò·ï¤Ë½ü³°¤·¤Þ¤¹¡£²áµî¤Þ¤¿¤Ï¾Íè¤Î\f2\-subpackages\fP¥ª¥×¥·¥ç¥ó¤Î»ØÄê¤Ë¤è¤Ã¤ÆÁȤ߹þ¤Þ¤ì¤ë¥Ñ¥Ã¥±¡¼¥¸¤â½ü³°¤ÎÂоݤȤʤê¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-sourcepath /home/user/src \-subpackages java \-exclude java.net:java.lang\fP -+.fl -+.fi -+¤³¤Î¾ì¹ç¡¢\f2java.io\fP¡¢\f2java.util\fP¡¢\f2java.math\fP¤Ê¤É¤ÏÁȤ߹þ¤Þ¤ì¤Þ¤¹¤¬¡¢\f2java.net\fP¤È\f2java.lang\fP¤ò¥ë¡¼¥È¤Ë»ý¤Ä¥Ñ¥Ã¥±¡¼¥¸¤Ï½ü³°¤µ¤ì¤Þ¤¹¡£\f2java.lang\fP¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤Ç¤¢¤ë\f2java.lang.ref\fP¤¬½ü³°¤µ¤ì¤ëÅÀ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-bootclasspath\ classpathlist -+¥Ö¡¼¥È¡¦¥¯¥é¥¹¤¬Â¸ºß¤¹¤ë¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¥Ö¡¼¥È¡¦¥¯¥é¥¹¤È¤Ï¡¢Ä̾Java¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¡¦¥¯¥é¥¹¤Î¤³¤È¤Ç¤¹¡£¥Ö¡¼¥È¡¦¥¯¥é¥¹¥Ñ¥¹¤Ï¡¢Javadoc¥Ä¡¼¥ë¤¬¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òõ¤¹¤È¤¤Ë»ÈÍѤ¹¤ë¸¡º÷¥Ñ¥¹¤Î°ìÉô¤Ç¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥¯¥é¥¹¤Î¸¡º÷ÊýË¡\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/findingclasses.html#srcfiles¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£\f2classpathlist\fPÆâ¤ÎÊ£¿ô¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¥³¥í¥ó(:)¤Ç¶èÀÚ¤ê¤Þ¤¹¡£ -+.TP 3 -+\-extdirs\ dirlist -+³ÈÄ¥µ¡Ç½¥¯¥é¥¹¤¬Â¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£³ÈÄ¥µ¡Ç½¥¯¥é¥¹¤È¤Ï¡¢Java³ÈÄ¥µ¡Ç½µ¡¹½¤ò»ÈÍѤ¹¤ë¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤Ç¤¹¡£extdirs¤Ï¡¢Javadoc¥Ä¡¼¥ë¤¬¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òõ¤¹¤È¤¤Ë»ÈÍѤ¹¤ë¸¡º÷¥Ñ¥¹¤Î°ìÉô¤Ç¤¹¡£¾ÜºÙ¤Ï¡¢Á°½Ò¤Î\f2\-classpath\fP¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£\f2dirlist\fPÆâ¤ÎÊ£¿ô¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¥³¥í¥ó(:)¤Ç¶èÀÚ¤ê¤Þ¤¹¡£ -+.TP 3 -+\-verbose -+Javadoc¤Î¼Â¹ÔÃæ¤Ë¾ÜºÙ¤Ê¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Þ¤¹¡£verbose¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤È¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥í¡¼¥É»þ¡¢¥É¥¥å¥á¥ó¥È¤ÎÀ¸À®»þ(¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤´¤È¤Ë1¤Ä¤Î¥á¥Ã¥»¡¼¥¸)¡¢¤ª¤è¤Ó¥½¡¼¥È»þ¤Ë¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£verbose¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢³ÆJava¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î²òÀϤËÍפ·¤¿»þ´Ö(¥ß¥êÉÃñ°Ì)¤ò¼¨¤¹ÄɲäΥá¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-quiet -+¥¨¥é¡¼¡¦¥á¥Ã¥»¡¼¥¸¤Þ¤¿¤Ï·Ù¹ð¥á¥Ã¥»¡¼¥¸°Ê³°¤Î¥á¥Ã¥»¡¼¥¸¤òÍÞÀ©¤·¡¢·Ù¹ð¤È¥¨¥é¡¼¤Î¤ß¤¬É½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤·¤Æ¡¢¤³¤ì¤é¤ò³Îǧ¤·¤ä¤¹¤¯¤·¤Þ¤¹¡£¥Ð¡¼¥¸¥ç¥óʸ»úÎó¤âÍÞÀ©¤·¤Þ¤¹¡£ -+.TP 3 -+\-breakiterator\ -+±Ñʸ¤ÎºÇ½é¤Îʸ¤Î½ª¤ï¤ê¤òȽÃǤ¹¤ëºÝ¤Ë¡¢±Ñ¸ì¸À¸ì¤È¤¤¤¦¥í¥±¡¼¥ë¸ÇͤΥ¢¥ë¥´¥ê¥º¥à¤Ç¤Ï¤Ê¤¯¡¢ -+.na -+\f2java.text.BreakIterator\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/java/text/BreakIterator.html¤Î¹ñºÝ²½¤µ¤ì¤¿Ê¸¶³¦¤ò»ÈÍѤ·¤Þ¤¹(¾¤Î¤¹¤Ù¤Æ¤Î¥í¥±¡¼¥ë¤Ï¤¹¤Ç¤Ë\f2BreakIterator\fP¤ò»ÈÍÑ)¡£\f2ºÇ½é¤Îʸ\fP¤È¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¤Þ¤¿¤Ï¥á¥ó¥Ð¡¼¤Î¼çÀâÌÀ¤Ç¤ÎºÇ½é¤Îʸ¤Î¤³¤È¤Ç¤¹¡£¤³¤Îʸ¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¤Þ¤¿¤Ï¥á¥ó¥Ð¡¼¤ÎÍ×Ìó¤Ë¥³¥Ô¡¼¤µ¤ì¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Îº÷°ú¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+JDK 1.2°Ê¹ß¡¢BreakIterator¥¯¥é¥¹¤Ï¡¢±Ñ¸ì¤ò½ü¤¯¤¹¤Ù¤Æ¤Î¸À¸ì¤Îʸ¤Î½ª¤ï¤ê¤òȽÃǤ¹¤ë¤¿¤á¤Ë¡¢¤¹¤Ç¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢\f2\-breakiterator\fP¥ª¥×¥·¥ç¥ó¤Ï¡¢1.2°Ê¹ß¤Ç¤Ï±Ñʸ°Ê³°¤Ë¤Ï¸ú²Ì¤¬¤¢¤ê¤Þ¤»¤ó¡£±Ñʸ¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤ÊÆȼ«¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥¢¥ë¥´¥ê¥º¥à¤¬¤¢¤ê¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+±Ñʸ¤Î¥Ç¥Õ¥©¥ë¥È¤Îʸ¶èÀڤꥢ¥ë¥´¥ê¥º¥à \- ¶õÇòʸ»ú¤Þ¤¿¤ÏHTML¥Ö¥í¥Ã¥¯¡¦¥¿¥°(\f2<P>\fP¤Ê¤É)¤¬Â³¤¯¥Ô¥ê¥ª¥É¤ÇÄä»ß¤·¤Þ¤¹¡£ -+.TP 2 -+o -+breakiteratorʸ¶èÀڤꥢ¥ë¥´¥ê¥º¥à \- °ìÈ̤ˡ¢¼¡¤Î¸ì¤¬Âçʸ»ú¤Ç»Ï¤Þ¤ë¾ì¹ç¡¢¶õÇòʸ»ú¤¬Â³¤¯¥Ô¥ê¥ª¥É¡¢µ¿ÌäÉä¡¢¤Þ¤¿¤Ï´¶Ã²Éä¤ÇÄä»ß¤·¤Þ¤¹¡£¤³¤Î¥¢¥ë¥´¥ê¥º¥à¤Ç¤Ï¡ÖThe serial no. is valid¡×¤Ê¤É¡¢¤Û¤È¤ó¤É¤Î¾Êάɽµ¤¬½èÍý¤µ¤ì¤Þ¤¹¤¬¡¢¡ÖMr.Smith¡×¤Ï½èÍý¤µ¤ì¤Þ¤»¤ó¡£HTML¥¿¥°¤ä¡¢¿ô»ú¤Þ¤¿¤Ïµ¹æ¤Ç»Ï¤Þ¤ëʸ¤Ç¤ÏÄä»ß¤·¤Þ¤»¤ó¡£HTML¥¿¥°¤ËËä¤á¹þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ç¤â¡¢¡Ö../filename¡×¤ÎºÇ¸å¤Î¥Ô¥ê¥ª¥É¤ÇÄä»ß¤·¤Þ¤¹¡£ -+.RE -+Ãí°Õ: 1.5.0¤«¤é¤Ï¡¢1.4.x¤ËÀߤ±¤é¤ì¤Æ¤¤¤¿breakiterator·Ù¹ð¥á¥Ã¥»¡¼¥¸¤òºï½ü¤·¡¢¥Ç¥Õ¥©¥ë¥È¤Îʸ¶èÀڤꥢ¥ë¥´¥ê¥º¥à¤òÊѹ¹¤·¤Æ¤¤¤Þ¤»¤ó¡£¤Ä¤Þ¤ê¡¢\-breakiterator¥ª¥×¥·¥ç¥ó¤Ï¡¢1.5.0¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¤Ê¤¯¤Ê¤ê¡¢¤Þ¤¿¥Ç¥Õ¥©¥ë¥È¤Ë¤¹¤ë¤Ä¤â¤ê¤â¤¢¤ê¤Þ¤»¤ó¡£¤³¤ì¤Ï¡¢¡Ö¼¡¤Î¥á¥¸¥ã¡¼¡¦¥ê¥ê¡¼¥¹¡×(1.5.0)¤Ç¥Ç¥Õ¥©¥ë¥È¤òÊѹ¹¤¹¤ë¤È¤¤¤¦¡¢°ÊÁ°¤ÎÌÜŪ¤È¤ÏµÕ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥½¡¼¥¹¡¦¥³¡¼¥É¤òÊѹ¹¤»¤º¡¢1.4.x¤Ç¤Îbreakiterator·Ù¹ð¤ò½üµî¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ç¤â¡¢1.5.0¤«¤é¤Ï²¿¤â¤¹¤ëɬÍפ¬¤Ê¤¯¡¢·Ù¹ð¤Ï¾ÃÌǤ·¤Æ¤¤¤Þ¤¹¡£¤³¤ÎµÕÌá¤ê¤ÎÍýͳ¤Ï¡¢breakiterator¤ò¥Ç¥Õ¥©¥ë¥È¤Ë¤¹¤ë¥á¥ê¥Ã¥È¤è¤ê¤â¡¢¥Ç¥Õ¥©¥ë¥È¤Ë¤¹¤ë¤¿¤á¤ËɬÍפȤʤ롢¸ß´¹À¤Î¤Ê¤¤¥½¡¼¥¹¤ÎÊѹ¹¤ÎÊý¤¬Ééô¤¬Â礤«¤Ã¤¿¤¿¤á¤Ç¤¹¡£¤³¤Î·ï¤Ç³§ÍͤË;ʬ¤Î¼ê´Ö¤ò¤ª¤«¤±¤·¡¢º®Íð¤ò¾·¤¤¤¿¤³¤È¤ò¤ªÏͤӤ¤¤¿¤·¤Þ¤¹¡£ -+.TP 3 -+\-locale\ language_country_variant -+\f3½ÅÍ×\fP \- \f2\-locale\fP¥ª¥×¥·¥ç¥ó¤Ï¡¢É¸½à¥É¥Ã¥¯¥ì¥Ã¥È¤¬Ä󶡤¹¤ë¤¹¤Ù¤Æ¤Î¥ª¥×¥·¥ç¥ó¡¢¤Þ¤¿¤Ï¤½¤Î¾¤ÎǤ°Õ¤Î¥É¥Ã¥¯¥ì¥Ã¥È¤¬Ä󶡤¹¤ë¤¹¤Ù¤Æ¤Î¥ª¥×¥·¥ç¥ó¤è¤ê\f2Á°\fP(º¸Â¦)¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤¦¤·¤Ê¤¤¤È¡¢¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤¬±Ñ¸ì¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£¤³¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤Î¤ß¡¢»ØÄꤹ¤ë½ç½ø¤Ë°Í¸¤·¤Þ¤¹¡£ -+.br -+.br -+Javadoc¤¬¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤¹¤ë¤È¤¤Ë»ÈÍѤ¹¤ë¥í¥±¡¼¥ë¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î°ú¿ô¤Ï¡¢java.util.Locale¤Î¥É¥¥å¥á¥ó¥È¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¥í¥±¡¼¥ë¤Î̾Á°¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2en_US\fP (±Ñ¸ì¡¢Êƹñ)¤Þ¤¿¤Ï\f2en_US_WIN\fP (Windows¤Ç»ÈÍѤµ¤ì¤ë±Ñ¸ì)¤Ê¤É¤Ç¤¹¡£ -+.br -+.br -+¥í¥±¡¼¥ë¤ò»ØÄꤹ¤ë¤È¡¢»ØÄꤷ¤¿¥í¥±¡¼¥ë¤Î¥ê¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬Javadoc¤Ë¤è¤Ã¤ÆÁªÂò¤µ¤ì¤Æ¡¢¥á¥Ã¥»¡¼¥¸(¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¡¢¥ê¥¹¥È¤Èɽ¤Î¸«½Ð¤·¡¢¥Ø¥ë¥×¡¦¥Õ¥¡¥¤¥ë¤ÎÌܼ¡¡¢stylesheet.css¤Î¥³¥á¥ó¥È¤Ê¤É¤Îʸ»úÎó)¤Î¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ë¥½¡¼¥È¤µ¤ì¤ë¥ê¥¹¥È¤Î¥½¡¼¥È½ç¡¢¤ª¤è¤ÓºÇ½é¤Îʸ¤Î½ª¤ï¤ê¤òȽÃǤ¹¤ë¤¿¤á¤Îʸ¤Î¶èÀÚ¤êʸ»ú¤â¡¢»ØÄꤷ¤¿¥í¥±¡¼¥ë¤Ë¤è¤Ã¤Æ·è¤Þ¤ê¤Þ¤¹¡£¤¿¤À¤·¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥¯¥é¥¹¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ëÆâ¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ë¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤Î¥Æ¥¥¹¥È¤Î¥í¥±¡¼¥ë¤ò·èÄꤹ¤ë¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ -+.TP 3 -+\-encoding\ name -+¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î̾Á°(\f2EUCJIS/SJIS\fP¤Ê¤É)¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î¥Ç¥Õ¥©¥ë¥È¡¦¥³¥ó¥Ð¡¼¥¿¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.br -+.br -+\-docencoding¤ª¤è¤Ó\-charset¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-Jflag -+Javadoc¤ò¼Â¹Ô¤¹¤ë¼Â¹Ô»þ¥·¥¹¥Æ¥àjava¤Ë¡¢\f2flag\fP¤òľÀÜÅϤ·¤Þ¤¹¡£\f2J\fP¤È\f2flag\fP¤Î´Ö¤Ë¶õÇòʸ»ú¤òÆþ¤ì¤Ê¤¤¤è¤¦¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¤¿¤È¤¨¤Ð¡¢À¸À®¥É¥¥å¥á¥ó¥È¤ò½èÍý¤¹¤ë¤¿¤á¤Ë¥·¥¹¥Æ¥à¤Ç32MB¤Î¥á¥â¥ê¡¼¤ò³ÎÊݤ·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¾ì¹ç¤Ï¡¢Java¤Î\f2\-Xmx\fP¥ª¥×¥·¥ç¥ó¤ò¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹(\f2\-Xms\fP¤Ï¾Êά²Äǽ¤Ç¤¹¡£¤³¤ì¤Ï¡¢½é´ü¥á¥â¥ê¡¼¤Î¥µ¥¤¥º¤òÀßÄꤹ¤ë¤Î¤ß¤Î¥ª¥×¥·¥ç¥ó¤Ç¡¢É¬Íפʥá¥â¥ê¡¼¤ÎºÇ¾®Î̤¬¤ï¤«¤Ã¤Æ¤¤¤ë¾ì¹ç¤ËÊØÍø¤Ç¤¹)¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-J\-Xmx32m \-J\-Xms32m\fP \f3com.mypackage\fP -+.fl -+.fi -+»ÈÍѤ·¤Æ¤¤¤ëJavadoc¤Î¥Ð¡¼¥¸¥ç¥ó¤ò³Îǧ¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤ËJava¤Î¡Ö\f2\-version\fP¡×¥ª¥×¥·¥ç¥ó¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-J\-version\fP -+.fl -+ java version "1.2" -+.fl -+ Classic VM (build JDK\-1.2\-V, green threads, sunwjit) -+.fl -+.fi -+(½ÐÎÏ¥¹¥È¥ê¡¼¥à¤Ë¤Ïɸ½à¥É¥Ã¥¯¥ì¥Ã¥È¤Î¥Ð¡¼¥¸¥ç¥óÈֹ椬´Þ¤Þ¤ì¤Þ¤¹¡£) -+.RE -+.SS -+ɸ½à¥É¥Ã¥¯¥ì¥Ã¥È¤¬Ä󶡤¹¤ë¥ª¥×¥·¥ç¥ó -+.RS 3 -+.TP 3 -+\-d\ directory -+À¸À®¤µ¤ì¤¿HTML¥Õ¥¡¥¤¥ë¤òÊݸ¤¹¤ëÀ¸À®Àè¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£(¡Öd¡×¤Ï¡ÖÀ¸À®Àè(destination)¡×¤Î°ÕÌ£¡£)¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¾Êά¤¹¤ë¤È¡¢¥Õ¥¡¥¤¥ë¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÊݸ¤µ¤ì¤Þ¤¹¡£ÃÍ\f2directory\fP¤Ë¤Ï¡¢ÀäÂХǥ£¥ì¥¯¥È¥ê¡¢¤Þ¤¿¤Ï¸½ºß¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¤ÎÁêÂХǥ£¥ì¥¯¥È¥ê¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥Ð¡¼¥¸¥ç¥ó1.4¤Ç¤Ï¡¢Javadoc¤ò¼Â¹Ô¤¹¤ë¤ÈÀ¸À®Àè¥Ç¥£¥ì¥¯¥È¥ê¤¬¼«Æ°Åª¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+¤¿¤È¤¨¤Ð¡¢¼¡¤ÎÎã¤Ç¤Ï¡¢\f2com.mypackage\fP¥Ñ¥Ã¥±¡¼¥¸¤Î¥É¥¥å¥á¥ó¥È¤¬À¸À®¤µ¤ì¡¢¤½¤Î·ë²Ì¤¬\f2/home/user/doc/\fP¥Ç¥£¥ì¥¯¥È¥ê¤ËÊݸ¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-d /home/user/doc com.mypackage\fP -+.fl -+.fi -+.TP 3 -+\-use -+¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥¯¥é¥¹¤ª¤è¤Ó¥Ñ¥Ã¥±¡¼¥¸¤´¤È¤Ë1¤Ä¤Î»ÈÍÑ¥Ú¡¼¥¸¤òÁȤ߹þ¤ß¤Þ¤¹¡£¤³¤Î¥Ú¡¼¥¸¤Ë¤Ï¡¢¤½¤ÎÆÃÄê¤Î¥¯¥é¥¹¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¤ÎAPI¤ò»ÈÍѤ·¤Æ¤¤¤ë¥Ñ¥Ã¥±¡¼¥¸¡¢¥¯¥é¥¹¡¢¥á¥½¥Ã¥É¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¤ª¤è¤Ó¥Õ¥£¡¼¥ë¥É¤¬µ½Ò¤µ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥¯¥é¥¹C¤òÎã¤Ë¤È¤ë¤È¡¢¥¯¥é¥¹C¤ò»ÈÍѤ·¤Æ¤¤¤ë¤â¤Î¤È¤·¤Æ¤Ï¡¢C¤Î¥µ¥Ö¥¯¥é¥¹¡¢C¤È¤·¤ÆÀë¸À¤µ¤ì¤Æ¤¤¤ë¥Õ¥£¡¼¥ë¥É¡¢C¤òÊÖ¤¹¥á¥½¥Ã¥É¡¢¤ª¤è¤Ó·¿C¤Î¥Ñ¥é¥á¡¼¥¿¤ò»ý¤Ä¥á¥½¥Ã¥É¤È¥³¥ó¥¹¥È¥é¥¯¥¿¤¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+¤¿¤È¤¨¤Ð¡¢String¤Î»ÈÍÑ¥Ú¡¼¥¸¤Ë²¿¤¬É½¼¨¤µ¤ì¤ë¤«¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£\f2java.awt.Font\fP¥¯¥é¥¹¤Î\f2getName()\fP¥á¥½¥Ã¥É¤Ï¡¢\f2String\fP·¿¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢\f2getName()\fP¤Ï\f2String\fP¤ò»ÈÍѤ·¤Æ¤¤¤ë¤Î¤Ç¡¢\f2String\fP¤Î»ÈÍÑ¥Ú¡¼¥¸¤Ë¤³¤Î¥á¥½¥Ã¥É¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+¤¿¤À¤·¡¢¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¤Î¤ÏAPI¤Î»ÈÍѤΤߤǡ¢¼ÂÁõ¤Ï¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤Þ¤»¤ó¡£¤¢¤ë¥á¥½¥Ã¥É¤¬¡¢¤½¤Î¼ÂÁõ¤ÎÃæ¤Ç\f2String\fP¤ò»ÈÍѤ·¤Æ¤¤¤Æ¤â¡¢°ú¿ô¤È¤·¤Æʸ»úÎó¤ò¤È¤Ã¤¿¤ê¡¢Ê¸»úÎó¤òÊÖ¤·¤¿¤ê¤·¤Ê¤¤¾ì¹ç¤Ï¡¢\f2String\fP¤Î¡Ö»ÈÍѡפȤϤߤʤµ¤ì¤Þ¤»¤ó¡£ -+.br -+.br -+À¸À®¤µ¤ì¤¿»ÈÍÑ¥Ú¡¼¥¸¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤Ë¤Ï¡¢¤Þ¤ºÌÜŪ¤Î¥¯¥é¥¹¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¤Ë°ÜÆ°¤·¡¢¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤Î¡Ö»ÈÍѡץê¥ó¥¯¤ò¥¯¥ê¥Ã¥¯¤·¤Þ¤¹¡£ -+.TP 3 -+\-version -+À¸À®¥É¥¥å¥á¥ó¥È¤Ë¡¢@version¤Î¥Æ¥¥¹¥È¤òÁȤ߹þ¤ß¤Þ¤¹¡£¤³¤Î¥Æ¥¥¹¥È¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¾Êά¤µ¤ì¤Þ¤¹¡£»ÈÍѤ·¤Æ¤¤¤ëJavadoc¥Ä¡¼¥ë¤Î¥Ð¡¼¥¸¥ç¥ó¤ò³Îǧ¤¹¤ë¤Ë¤Ï\f2\-J\-version\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.TP 3 -+\-author -+À¸À®¥É¥¥å¥á¥ó¥È¤Ë¡¢@author¤Î¥Æ¥¥¹¥È¤òÁȤ߹þ¤ß¤Þ¤¹¡£ -+.TP 3 -+\-splitindex -+º÷°ú¥Õ¥¡¥¤¥ë¤ò¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤´¤È¤ËÊ£¿ô¤Î¥Õ¥¡¥¤¥ë¤Ëʬ³ä¤·¡¢Ê¸»ú¤´¤È¤Ë1¤Ä¤Î¥Õ¥¡¥¤¥ë¤È¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È°Ê³°¤Îʸ»ú¤Ç»Ï¤Þ¤ëº÷°ú¥¨¥ó¥È¥êÍѤË1¤Ä¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹¡£ -+.TP 3 -+\-windowtitle\ title -+HTML¤Î<title>¥¿¥°¤ËÇÛÃÖ¤¹¤ë¥¿¥¤¥È¥ë¤ò»ØÄꤷ¤Þ¤¹¡£»ØÄꤷ¤¿¥¿¥¤¥È¥ë¤Ï¡¢¥¦¥£¥ó¥É¥¦¤Î¥¿¥¤¥È¥ë¤ä¡¢¤³¤Î¥Ú¡¼¥¸¤ËÂФ·¤ÆºîÀ®¤µ¤ì¤¿¥Ö¥é¥¦¥¶¤Î¥Ö¥Ã¥¯¥Þ¡¼¥¯(¤ªµ¤¤ËÆþ¤ê)¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¤³¤Î¥¿¥¤¥È¥ë¤Ë¤ÏHTML¥¿¥°¤ò´Þ¤á¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¥¿¥¤¥È¥ë¤ËHTML¥¿¥°¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤È¡¢¥Ö¥é¥¦¥¶¤¬¥¿¥°¤òÀµ¤·¤¯²ò¼á¤Ç¤¤Þ¤»¤ó¡£\f2title\fP¤ÎÃæ¤Ç°úÍÑÉä¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢°úÍÑÉä¤ò¥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\-windowtitle¤¬¾Êά¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Î¤«¤ï¤ê¤Ë\-doctitle¤ÎÃͤò»ÈÍѤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-windowtitle "Java SE Platform" com.mypackage\fP -+.fl -+.fi -+.TP 3 -+\-doctitle\ title -+³µÍ×¥Õ¥¡¥¤¥ë¤ÎºÇ¾åÉô¤Î¶á¤¯¤ËÇÛÃÖ¤¹¤ë¥¿¥¤¥È¥ë¤ò»ØÄꤷ¤Þ¤¹¡£¥¿¥¤¥È¥ë¤ÏÃæ±û·¤¨¤Ë¤Ê¤ê¡¢¥ì¥Ù¥ë1¤Î¸«½Ð¤·¤È¤·¤Æ¡¢¾åÉô¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤Î¤¹¤°²¼¤ËÃÖ¤«¤ì¤Þ¤¹¡£\f2title\fP¤Ë¤Ï¡¢HTML¥¿¥°¤È¶õÇò¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¤¬¡¢¤³¤ì¤é¤ò´Þ¤á¤ë¾ì¹ç¤Ï¡¢Á´ÂΤò°úÍÑÉä¤Ç°Ï¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f2title\fP¤ÎÃæ¤Ç°úÍÑÉä¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢°úÍÑÉä¤ò¥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-doctitle "Java(TM)" com.mypackage\fP -+.fl -+.fi -+.TP 3 -+\-title\ title -+\f3¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¸½ºß¤Ï¸ºß¤·¤Æ¤¤¤Þ¤»¤ó¡£\fPJavadoc 1.2¤Î¥Ù¡¼¥¿ÈǤˤ·¤«Â¸ºß¤·¤Æ¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢\f2\-doctitle\fP¤È¤¤¤¦Ì¾Á°¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿¡£Ì¾Á°¤òÊѹ¹¤·¤¿Íýͳ¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤¬¡¢¥¦¥£¥ó¥É¥¦¤Î¥¿¥¤¥È¥ë¤Ç¤Ï¤Ê¤¯¥É¥¥å¥á¥ó¥È¤Î¥¿¥¤¥È¥ë¤òÄêµÁ¤¹¤ë¤³¤È¤òÌÀ³Î¤Ë¤¹¤ë¤¿¤á¤Ç¤¹¡£ -+.TP 3 -+\-header\ header -+³Æ½ÐÎÏ¥Õ¥¡¥¤¥ë¤ÎºÇ¾åÉô¤ËÇÛÃÖ¤¹¤ë¥Ø¥Ã¥À¡¼¡¦¥Æ¥¥¹¥È¤ò»ØÄꤷ¤Þ¤¹¡£¥Ø¥Ã¥À¡¼¤Ï¡¢¾åÉô¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤Î±¦Â¦¤ËÇÛÃÖ¤µ¤ì¤Þ¤¹¡£\f2header\fP¤Ë¤Ï¡¢HTML¥¿¥°¤È¶õÇò¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¤¬¡¢¤³¤ì¤é¤ò´Þ¤á¤ë¾ì¹ç¤Ï¡¢Á´ÂΤò°úÍÑÉä¤Ç°Ï¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f2header\fP¤ÎÃæ¤Ç°úÍÑÉä¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢°úÍÑÉä¤ò¥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-header "<b>Java 2 Platform </b><br>v1.4" com.mypackage\fP -+.fl -+.fi -+.TP 3 -+\-footer\ footer -+³Æ½ÐÎÏ¥Õ¥¡¥¤¥ë¤ÎºÇ²¼Éô¤ËÇÛÃÖ¤¹¤ë¥Õ¥Ã¥¿¡¼¡¦¥Æ¥¥¹¥È¤ò»ØÄꤷ¤Þ¤¹¡£¥Õ¥Ã¥¿¡¼¤Ï¡¢²¼Éô¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤Î±¦Â¦¤ËÇÛÃÖ¤µ¤ì¤Þ¤¹¡£\f2footer\fP¤Ë¤Ï¡¢HTML¥¿¥°¤È¶õÇò¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¤¬¡¢¤³¤ì¤é¤ò´Þ¤á¤ë¾ì¹ç¤Ï¡¢Á´ÂΤò°úÍÑÉä¤Ç°Ï¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f2footer\fP¤ÎÃæ¤Ç°úÍÑÉä¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢°úÍÑÉä¤ò¥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-top -+³Æ½ÐÎÏ¥Õ¥¡¥¤¥ë¤ÎºÇ¾åÉô¤ËÇÛÃÖ¤¹¤ë¥Æ¥¥¹¥È¤ò»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-bottom\ text -+³Æ½ÐÎÏ¥Õ¥¡¥¤¥ë¤ÎºÇ²¼Éô¤ËÇÛÃÖ¤¹¤ë¥Æ¥¥¹¥È¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥Æ¥¥¹¥È¤Ï¡¢²¼Éô¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤è¤ê²¼¤Î¡¢¥Ú¡¼¥¸¤ÎºÇ²¼Éô¤ËÇÛÃÖ¤µ¤ì¤Þ¤¹¡£\f2text\fP¤Ë¤Ï¡¢HTML¥¿¥°¤È¶õÇò¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¤¬¡¢¤³¤ì¤é¤ò´Þ¤á¤ë¾ì¹ç¤Ï¡¢Á´ÂΤò°úÍÑÉä¤Ç°Ï¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f2text\fP¤ÎÃæ¤Ç°úÍÑÉä¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢°úÍÑÉä¤ò¥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-link\ extdocURL -+´û¸¤ÎJavadoc¤Ë¤è¤êÀ¸À®¤µ¤ì¤¿³°Éô»²¾È¥¯¥é¥¹¤Î¥É¥¥å¥á¥ó¥È¤Ø¤Î¥ê¥ó¥¯¤òºîÀ®¤·¤Þ¤¹¡£°ú¿ô¤ò1¤Ä¤È¤ê¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f4extdocURL\fP¤Ï¡¢¥ê¥ó¥¯Àè¤È¤·¤Æ»ØÄꤹ¤ë¡¢Javadoc¤Ë¤è¤êÀ¸À®¤µ¤ì¤¿³°Éô¥É¥¥å¥á¥ó¥È¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤ÎÀäÂÐURL¤Þ¤¿¤ÏÁêÂÐURL¤Ç¤¹¡£¸å¤ÇÎã¤ò¼¨¤·¤Þ¤¹¡£¤³¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ëpackage\-list¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹(¸ºß¤·¤Ê¤¤¾ì¹ç¤Ï¡¢\f2\-linkoffline\fP¤ò»ÈÍѤ·¤Þ¤¹)¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢\f2package\-list\fP¥Õ¥¡¥¤¥ë¤«¤é¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÆɤ߼è¤Ã¤¿¸å¡¢¤½¤ÎURL¤Ç¤³¤ì¤é¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ë¥ê¥ó¥¯¤·¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Î¼Â¹Ô»þ¤Ë¡¢\f2extdocURL\fP¤ÎÃͤ¬¤½¤Î¤Þ¤Þ¡¢ºîÀ®¤µ¤ì¤¿\f2<A HREF>\fP¥ê¥ó¥¯Æâ¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢\f2extdocURL\fP¤Ï¥Õ¥¡¥¤¥ë¤Ø¤ÎURL¤Ç¤Ï¤Ê¤¯¡¢\f2¥Ç¥£¥ì¥¯¥È¥ê\fP¤Ø¤ÎURL¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+\f2extdocURL\fP¤ËÀäÂÐ¥ê¥ó¥¯¤ò»ÈÍѤ¹¤ë¤È¡¢¥æ¡¼¥¶¡¼¤Î¥É¥¥å¥á¥ó¥È¤òǤ°Õ¤ÎWeb¥µ¥¤¥È¾å¤Î¥É¥¥å¥á¥ó¥È¤Ë¥ê¥ó¥¯¤Ç¤¤Þ¤¹¡£ÁêÂаÌÃ֤إê¥ó¥¯¤¹¤ë¤Î¤ß¤Î¾ì¹ç¤ÏÁêÂÐ¥ê¥ó¥¯¤ò»ÈÍѤǤ¤Þ¤¹¡£ÁêÂÐ¥ê¥ó¥¯¤Î¾ì¹ç¡¢¥æ¡¼¥¶¡¼¤¬ÅϤ¹Ãͤϡ¢À¸À®Àè¥Ç¥£¥ì¥¯¥È¥ê(\f2\-d\fP¤Ç»ØÄê)¤«¤é¥ê¥ó¥¯Àè¤È¤Ê¤ë¥Ñ¥Ã¥±¡¼¥¸¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤Ø¤ÎÁêÂХѥ¹¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+Ä̾ÀäÂÐ¥ê¥ó¥¯¤ò»ØÄꤹ¤ë¾ì¹ç¤Ï¡¢\f2http:\fP¥ê¥ó¥¯¤ò»ÈÍѤ·¤Þ¤¹¡£Web¥µ¡¼¥Ð¡¼¤ò»ý¤¿¤Ê¤¤¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ë¥ê¥ó¥¯¤¹¤ë¾ì¹ç¤Ï¡¢\f2file:\fP¥ê¥ó¥¯¤ò»ÈÍѤǤ¤Þ¤¹¡£¤¿¤À¤·¡¢¤³¤ÎÊýË¡¤Ï¡¢Æ±¤¸¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤ò¶¦Í¤¹¤ëÀ¸À®¥É¥¥å¥á¥ó¥È¤Ë¤¹¤Ù¤Æ¤Î¥æ¡¼¥¶¡¼¤¬¥¢¥¯¥»¥¹¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç°Ê³°¤Ï»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ -+.br -+.br -+¤¹¤Ù¤Æ¤Î¾ì¹ç¡¢¤¹¤Ù¤Æ¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Ç¡¢ÀäÂÐURL¤ÈÁêÂÐURL¡¢¡Öhttp:¡×¥Ù¡¼¥¹¤È¡Öfile:¡×¥Ù¡¼¥¹¤Ë¤«¤«¤ï¤é¤º¡¢¥¹¥é¥Ã¥·¥å¤ò¶èÀÚ¤êʸ»ú¤È¤·¤Æ»ÈÍѤ·¤Þ¤¹( -+.na -+\f2URL¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://www.ietf.org/rfc/rfc1738.txt¤Ç»ØÄê)¡£ -+.RS 3 -+.TP 3 -+http: ¥Ù¡¼¥¹¤ÎÀäÂÐ¥ê¥ó¥¯: -+\f2\-link http://<host>/<directory>/<directory>/.../<name>\fP -+.TP 3 -+file: ¥Ù¡¼¥¹¤ÎÀäÂÐ¥ê¥ó¥¯: -+\f2\-link file://<host>/<directory>/<directory>/.../<name>\fP -+.TP 3 -+ÁêÂÐ¥ê¥ó¥¯: -+\f2\-link <directory>/<directory>/.../<name>\fP -+.RE -+.RE -+1²ó¤ÎJavadoc¤Î¼Â¹Ô¤Ç¡¢Ê£¿ô¤Î\f2\-link\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤ÆÊ£¿ô¤Î¥É¥¥å¥á¥ó¥È¤Ø¤Î¥ê¥ó¥¯¤òºîÀ®¤Ç¤¤Þ¤¹¡£ -+.br -+.br -+\f3\-linkoffline¤Þ¤¿¤Ï\-link¤ÎÁªÂò\fP: -+.br -+.br -+\f2\-link\fP¤ò»ÈÍѤ¹¤ë¾ì¹ç: -+.RS 3 -+.TP 2 -+o -+³°ÉôAPI¥É¥¥å¥á¥ó¥È¤Ø¤ÎÁêÂХѥ¹¤ò»ÈÍѤ¹¤ë¾ì¹ç -+.TP 2 -+o -+³°ÉôAPI¥É¥¥å¥á¥ó¥È¤Ø¤ÎÀäÂÐURL¤ò»ÈÍѤ¹¤ë¾ì¹ç(¥×¥í¥°¥é¥à¤¬¤½¤ÎURL¤ËÀܳ¤·¡¢Æɼè¤ê¤ò¹Ô¤¦¤³¤È¤¬¥·¥§¥ë¤Ë¤è¤Ã¤Æµö²Ä¤µ¤ì¤Æ¤¤¤ë¾ì¹ç) -+.RE -+\f2\-linkoffline\fP¤ò»ÈÍѤ¹¤ë¾ì¹ç: -+.RS 3 -+.TP 2 -+o -+³°ÉôAPI¥É¥¥å¥á¥ó¥È¤Ø¤ÎÀäÂÐURL¤ò»ÈÍѤ¹¤ë¾ì¹ç(¥×¥í¥°¥é¥à¤¬¤½¤ÎURL¤ËÀܳ¤·¡¢Æɼè¤ê¤ò¹Ô¤¦¤³¤È¤¬¥·¥§¥ë¤Ë¤è¤Ã¤Æ\f2µö²Ä¤µ¤ì¤Æ¤¤¤Ê¤¤\fP¾ì¹ç)¤³¤Î¤è¤¦¤Ê¾õ¶·¤Ï¡¢¥Õ¥¡¥¤¥¢¥¦¥©¡¼¥ë¤ÎÆ⦤«¤é¥Õ¥¡¥¤¥¢¥¦¥©¡¼¥ë¤Î³°Â¦¤Ë¤¢¤ë¥É¥¥å¥á¥ó¥È¤Ë¥ê¥ó¥¯¤·¤è¤¦¤È¤¹¤ë¾ì¹ç¤ËȯÀ¸¤·¤Þ¤¹¡£ -+.RE -+.br -+.br -+\f3³°Éô¥É¥¥å¥á¥ó¥È¤Ø¤ÎÀäÂÐ¥ê¥ó¥¯¤Î»ÈÍÑÎã\fP \- -+.na -+\f2http://docs.oracle.com/javase/7/docs/api/\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/Æâ¤Î\f2java.lang\fP¡¢\f2java.io\fP¡¢¤½¤Î¾¤ÎJava¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¡¦¥Ñ¥Ã¥±¡¼¥¸¤Ë¥ê¥ó¥¯¤·¤¿¤¤¤È¤·¤Þ¤¹¡£¼¡¤Î¥³¥Þ¥ó¥É¤Ï¡¢Java SE¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¡¦¥Ñ¥Ã¥±¡¼¥¸¤Ø¤Î¥ê¥ó¥¯»ý¤Ä\f2com.mypackage\fP¥Ñ¥Ã¥±¡¼¥¸¤Î¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤·¤Þ¤¹¡£À¸À®¥É¥¥å¥á¥ó¥È¤Ë¤Ï¡¢¤¿¤È¤¨¤Ð¥¯¥é¥¹¡¦¥Ä¥ê¡¼Æâ¤Î\f2Object\fP¥¯¥é¥¹¤Ø¤Î¥ê¥ó¥¯¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£(\f2\-sourcepath\fP¤ä\f2\-d\fP¤Ê¤É¤Î¾¤Î¥ª¥×¥·¥ç¥ó¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£) -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-link http://docs.oracle.com/javase/7/docs/api/ com.mypackage\fP -+.fl -+.fi -+\f3³°Éô¥É¥¥å¥á¥ó¥È¤Ø¤ÎÁêÂÐ¥ê¥ó¥¯¤Î»ÈÍÑÎã\fP \- 2¤Ä¤Î¥Ñ¥Ã¥±¡¼¥¸¤¬¤¢¤ê¡¢¤½¤Î¥É¥¥å¥á¥ó¥È¤¬Javadoc¥Ä¡¼¥ë¤òÊ£¿ô²ó¼Â¹Ô¤·¤¿·ë²ÌÀ¸À®¤µ¤ì¤¿¤â¤Î¤Ç¤¢¤ë¤È¤·¤Þ¤¹¡£¤µ¤é¤Ë¡¢¤³¤ì¤é¤Î¥É¥¥å¥á¥ó¥È¤¬ÁêÂХѥ¹¤Çʬ³ä¤µ¤ì¤Æ¤¤¤ë¤È¤·¤Þ¤¹¡£¤³¤ÎÎã¤Î¾ì¹ç¡¢¥Ñ¥Ã¥±¡¼¥¸¤Ï¡¢API¤Ç¤¢¤ë\f2com.apipackage\fP¤È¡¢SPI(¥µ¡¼¥Ó¥¹¡¦¥×¥í¥Ð¥¤¥À¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹)¤Ç¤¢¤ë\f2com.spipackage\fP¤Ç¤¹¡£¥É¥¥å¥á¥ó¥È¤Î³ÊǼÀè¤Ï¡¢\f2docs/api/com/apipackage\fP¤È\f2docs/spi/com/spipackage\fP¤Ç¤¹¡£API¥Ñ¥Ã¥±¡¼¥¸¤Î¥É¥¥å¥á¥ó¥È¤Ï¤¹¤Ç¤ËÀ¸À®¤µ¤ì¤Æ¤¤¤Æ¡¢\f2docs\fP¤¬¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤ë¾ì¹ç¡¢API¥É¥¥å¥á¥ó¥È¤Ø¤Î¥ê¥ó¥¯¤ò»ý¤ÄSPI¥Ñ¥Ã¥±¡¼¥¸¤ò¥É¥¥å¥á¥ó¥È²½¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-d ./spi \-link ../api com.spipackage\fP -+.fl -+.fi -+\f2\-link\fP¤Î°ú¿ô¤Ï¡¢°¸Àè¥Ç¥£¥ì¥¯¥È¥ê(\f2docs/spi\fP)¤«¤é¤ÎÁêÂХѥ¹¤Ç¤¹¡£ -+.br -+.br -+\f3¾ÜºÙ\fP \- \f2\-link\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¥³¡¼¥É¤«¤é¤Ï»²¾È¤µ¤ì¤Æ¤¤¤Æ¤â¡¢º£²ó¤ÎJavadoc¤Î¼Â¹Ô¤Ç¤Ï¥É¥¥å¥á¥ó¥È²½\f2¤µ¤ì¤Ê¤¤\fP¤È¤¤¤¦¥¯¥é¥¹¤Ë¥ê¥ó¥¯¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¥ê¥ó¥¯¤«¤é͸ú¤Ê¥Ú¡¼¥¸¤Ë°ÜÆ°¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢¤½¤ì¤é¤ÎHTML¥Ú¡¼¥¸¤¬¤¢¤ë¾ì½ê¤òÄ´¤Ù¡¢¤½¤Î¾ì½ê¤ò\f2extdocURL\fP¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¤¿¤È¤¨¤Ð¡¢¥µ¡¼¥É¡¦¥Ñ¡¼¥Æ¥£¤Î¥É¥¥å¥á¥ó¥È¤«¤é\f2http://docs.oracle.com\fP¾å¤Î\f2java.*\fP¤Î¥É¥¥å¥á¥ó¥È¤Ë¥ê¥ó¥¯¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.br -+.br -+º£²ó¤Î¼Â¹Ô¤ÇJavadoc¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë¥É¥¥å¥á¥ó¥ÈÆâ¤ÎAPI¤Î¤ß¤òÂоݤ˥ê¥ó¥¯¤òºîÀ®¤¹¤ë¾ì¹ç¤Ï¡¢\f2\-link\fP¥ª¥×¥·¥ç¥ó¤ò¾Êά¤·¤Þ¤¹¡£(\f2\-link\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢³°Éô»²¾È¤Î¥É¥¥å¥á¥ó¥È¤Ø¤Î¥ê¥ó¥¯¤òºîÀ®¤·¤Þ¤»¤ó¡£¤³¤ì¤Ï¡¢¤½¤Î¥É¥¥å¥á¥ó¥È¤¬Â¸ºß¤¹¤ë¤«¤É¤¦¤«¡¢¤ª¤è¤Ó¸ºß¤¹¤ë¾ì¹ç¤Ï¤½¤Î¾ì½ê¤¬¤ï¤«¤é¤Ê¤¤¤«¤é¤Ç¤¹¡£) -+.br -+.br -+¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¤Ï¡¢À¸À®¥É¥¥å¥á¥ó¥ÈÆâ¤ÎÊ£¿ô¤Î¾ì½ê¤Ë¥ê¥ó¥¯¤òºîÀ®¤Ç¤¤Þ¤¹¡£ -+.br -+.br -+¤â¤¦1¤Ä¤ÎÍÑÅӤϡ¢¥Ñ¥Ã¥±¡¼¥¸¡¦¥»¥Ã¥È¤Î´Ö¤Ë¥¯¥í¥¹¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¤³¤È¤Ç¤¹¡£°ìÊý¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥»¥Ã¥È¤ËÂФ·¤ÆJavadoc¤ò¼Â¹Ô¤·¤¿¸å¡¢Â¾Êý¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥»¥Ã¥È¤ËÂФ·¤ÆJavadoc¤òºÆÅټ¹Ԥ¹¤ë¤È¡¢Î¾¥»¥Ã¥È´Ö¤ËÁÐÊý¸þ¤Î¥ê¥ó¥¯¤òºîÀ®¤Ç¤¤Þ¤¹¡£ -+.br -+.br -+\f3¥¯¥é¥¹¤Î»²¾ÈÊýË¡\fP \- ³°Éô»²¾È¥¯¥é¥¹¤Ø¤Î¥ê¥ó¥¯¤ò¡¢¥Æ¥¥¹¥È¡¦¥é¥Ù¥ë¤Î¤ß¤Ç¤Ï¤Ê¤¯¼ÂºÝ¤Ëɽ¼¨¤¹¤ë¤Ë¤Ï¡¢¼¡¤ÎÊýË¡¤Ç¥¯¥é¥¹¤ò»²¾È¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥á¥½¥Ã¥É¤ÎËÜÂΤǥ¯¥é¥¹¤ò»²¾È¤¹¤ë¤Î¤ß¤Ç¤Ï½½Ê¬¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£\f2import\fPʸ¡¢Àë¸À¤Î¤¤¤º¤ì¤«¤Ç»²¾È¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¼¡¤Ë¡¢¥¯¥é¥¹\f2java.io.File\fP¤ò»²¾È¤¹¤ëÊýË¡¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+¤¹¤Ù¤Æ¤Î¥¿¥¤¥×¤Î\f2import\fPʸ¤Î¾ì¹ç: ¥ï¥¤¥ë¥É¥«¡¼¥É¤Ë¤è¤ë¥¤¥ó¥Ý¡¼¥È¡¢Ì¾Á°¤Ë¤è¤ëÌÀ¼¨Åª¤Ê¥¤¥ó¥Ý¡¼¥È¡¢¤Þ¤¿¤Ï\f2java.lang.*\fP¤ËÂФ¹¤ë¼«Æ°¥¤¥ó¥Ý¡¼¥È¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¤¹¤ì¤Ð½½Ê¬¤Ç¤¹¡£ -+.br -+\f2import java.io.*;\fP -+.br -+1.3.x¤ª¤è¤Ó1.2.x¤Ç¤Ï¡¢Ì¾Á°¤Ë¤è¤ëÌÀ¼¨Åª¤Ê¥¤¥ó¥Ý¡¼¥È¤Î¤ßµ¡Ç½¤·¤Þ¤¹¡£¥ï¥¤¥ë¥É¥«¡¼¥É¤Ë¤è¤ë¥¤¥ó¥Ý¡¼¥Èʸ¤â¡¢\f2java.lang.*\fP¤Î¼«Æ°¥¤¥ó¥Ý¡¼¥È¤âµ¡Ç½¤·¤Þ¤»¤ó¡£ -+.TP 2 -+o -+Àë¸À¤Î¾ì¹ç: -+.br -+\f2void foo(File f){}\fP -+.br -+¤³¤Î»²¾È¤ò»ÈÍѤ·¡¢¥á¥½¥Ã¥É¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥Õ¥£¡¼¥ë¥É¡¢¥¯¥é¥¹¡¢¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÎÌá¤êÃͤη¿¤Þ¤¿¤Ï¥Ñ¥é¥á¡¼¥¿¤Î·¿¤ËÃÖ¤¯¤«¡¢\f2implements\fP¡¢\f2extends\fP¡¢¤Þ¤¿¤Ï\f2throws\fPʸ¤ËÃÖ¤¤Þ¤¹¡£ -+.RE -+½ÅÍפʷë²Ì¤È¤·¤Æ¡¢\f2\-link\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¤â¡¢¤³¤ÎÀ©¸Â¤Î¤¿¤á¤Ë¸í¤Ã¤Æɽ¼¨¤µ¤ì¤Ê¤¤¥ê¥ó¥¯¤¬Â¿¿ôȯÀ¸¤¹¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£(¥Æ¥¥¹¥È¤Ï¥Ï¥¤¥Ñ¡¼¥Æ¥¥¹¥È¡¦¥ê¥ó¥¯¤¬ÉÕ¤±¤é¤ì¤º¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£)¥ê¥ó¥¯¤¬É½¼¨¤¹¤ë·Ù¹ð¤«¤é¡¢¤³¤ì¤é¤Î¥ê¥ó¥¯¤òǧ¼±¤Ç¤¤Þ¤¹¡£¥¯¥é¥¹¤òÀµ¤·¤¯»²¾È¤·¡¢¤½¤ì¤Ë¤è¤Ã¤Æ¥ê¥ó¥¯¤òÄɲ乤뤿¤á¤ÎºÇ¤â°ÂÁ´¤ÊÊýË¡¤ÏÁ°½Ò¤·¤¿¤È¤ª¤ê¡¢¤½¤Î¥¯¥é¥¹¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤³¤È¤Ç¤¹¡£ -+.br -+.br -+\f3¥Ñ¥Ã¥±¡¼¥¸¡¦¥ê¥¹¥È\fP \- \f2\-link\fP¥ª¥×¥·¥ç¥ó¤Ë¤Ï¡¢Javadoc¥Ä¡¼¥ë¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë\f2package\-list\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤¬¡¢\f2\-link\fP¤Ë»ØÄꤷ¤¿URL¤Ë¸ºß¤·¤Æ¤¤¤ë¤³¤È¤¬É¬ÍפǤ¹¡£\f2package\-list\fP¥Õ¥¡¥¤¥ë¤Ï¡¢¤½¤Î¾ì½ê¤Ë¤¢¤ë¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤¿¥Ñ¥Ã¥±¡¼¥¸¤Î̾Á°¤Î¥ê¥¹¥È¤¬Æþ¤Ã¤¿Ã±½ã¤Ê¥Æ¥¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ç¤¹¡£Á°¤ÎÎã¤Ç¤Ï¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢»ØÄꤵ¤ì¤¿URL¤Ç\f2package\-list\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òõ¤·¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÆɤ߹þ¤ó¤À¸å¡¢¤½¤ÎURL¤Ë¤¢¤ë¤½¤ì¤é¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ø¤Î¥ê¥ó¥¯¤òºîÀ®¤·¤Þ¤·¤¿¡£ -+.br -+.br -+¤¿¤È¤¨¤Ð¡¢Java SE 6 API¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥ê¥¹¥È¤Ï -+.na -+\f2http://docs.oracle.com/javase/7/docs/api/package\-list\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/package\-list¤Ë¤¢¤ê¡¢¼¡¤Î¤è¤¦¤ÊÆâÍƤǻϤޤäƤ¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ java.applet -+.fl -+ java.awt -+.fl -+ java.awt.color -+.fl -+ java.awt.datatransfer -+.fl -+ java.awt.dnd -+.fl -+ java.awt.event -+.fl -+ java.awt.font -+.fl -+ etc. -+.fl -+\fP -+.fi -+\f2\-link\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤻ¤º¤ËJavadoc¤ò¼Â¹Ô¤·¤¿¾ì¹ç¡¢Javadoc¤Ï³°Éô»²¾È¥¯¥é¥¹¤Ë°¤¹¤ë̾Á°¤ò¸«¤Ä¤±¤ë¤È¡¢¤½¤Î̾Á°¤ò¥ê¥ó¥¯¤Ê¤·¤Ç½ÐÎϤ·¤Þ¤¹¡£°ìÊý¡¢\f2\-link\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢»ØÄꤵ¤ì¤¿\f2extdocURL\fP¤Î¾ì½ê¤Ë¤¢¤ë\f2package\-list\fP¥Õ¥¡¥¤¥ë¤Ç¤½¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ò¸¡º÷¤·¤Þ¤¹¡£¥Ñ¥Ã¥±¡¼¥¸Ì¾¤¬¸«¤Ä¤«¤ë¤È¡¢\f2extdocURL\fP¤¬Ì¾Á°¤ÎÁ°¤ËÉղ䵤ì¤Þ¤¹¡£ -+.br -+.br -+¤¹¤Ù¤Æ¤Î¥ê¥ó¥¯¤¬Àµ¤·¤¯µ¡Ç½¤¹¤ë¤¿¤á¤Ë¤Ï¡¢³°Éô»²¾È¤Î¤¹¤Ù¤Æ¤Î¥É¥¥å¥á¥ó¥È¤¬¡¢»ØÄꤷ¤¿URL¤Ë¸ºß¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢»ØÄꤵ¤ì¤¿package\-list¤¬Â¸ºß¤¹¤ë¤«¤É¤¦¤«¤Î¤ß¤ò¥Á¥§¥Ã¥¯¤·¡¢¤³¤ì¤é¤Î¥Ú¡¼¥¸¤¬Â¸ºß¤¹¤ë¤«¤É¤¦¤«¤Ï¥Á¥§¥Ã¥¯¤·¤Þ¤»¤ó¡£ -+.br -+.br -+\f3Ê£¿ô¤Î¥ê¥ó¥¯\fP \- Ê£¿ô¤Î\f2\-link\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢Ç¤°Õ¤Î¿ô¤Î³°ÉôÀ¸À®¥É¥¥å¥á¥ó¥È¤Ø¤Î¥ê¥ó¥¯¤òºîÀ®¤Ç¤¤Þ¤¹¡£\ Javadoc 1.2¤Ë¤Ï¡¢Ê£¿ô¤Î\f2\-link\fP¥³¥Þ¥ó¥É¤ò»ØÄê¤Ç¤¤Ê¤¤¤È¤¤¤¦´ûÃΤΥХ°¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï1.2.2¤Ç½¤Àµ¤µ¤ì¤Þ¤·¤¿¡£ -+.br -+.br -+¥ê¥ó¥¯¤¹¤ë³°Éô¥É¥¥å¥á¥ó¥È¤´¤È¤Ë¡¢¼¡¤Î¤è¤¦¤ËÊÌ¡¹¤Î¥ê¥ó¥¯¡¦¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Þ¤¹¡£ -+.br -+.br -+\ \ \f2% \fP\f4javadoc \-link\fP \f2extdocURL1\fP \f4\-link\fP \f2extdocURL2\fP \f2... \fP\f4\-link\fP \f2extdocURLn\fP \f4com.mypackage\fP -+.br -+.br -+\f2extdocURL1\fP¡¢\ \f2extdocURL2\fP¡¢\ ... \f2extdocURLn\fP¤Ï¡¢¤½¤ì¤¾¤ì³°Éô¥É¥¥å¥á¥ó¥È¤Î¥ë¡¼¥È¤ò»Ø¤·¡¢³Æ¥ë¡¼¥È¤Ë¤Ï¡¢\f2package\-list\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£ -+.br -+.br -+\f3¥¯¥í¥¹¥ê¥ó¥¯\fP \- ¤Þ¤ÀÀ¸À®¤µ¤ì¤Æ¤¤¤Ê¤¤2¤Ä°Ê¾å¤Î¥É¥¥å¥á¥ó¥È¤ò¥¯¥í¥¹¥ê¥ó¥¯¤¹¤ë¾ì¹ç¤Ï¡¢¡Ö¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡×¤¬É¬Íפˤʤê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤É¤Î¥É¥¥å¥á¥ó¥È¤Ë¤Ä¤¤¤Æ¤â\f2package\-list\fP¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ºÇ½é¤Î¥É¥¥å¥á¥ó¥È¤ËÂФ·¤ÆJavadoc¥Ä¡¼¥ë¤ò¼Â¹Ô¤¹¤ë»þÅÀ¤Ç¡¢2ÈÖÌܤΥɥ¥å¥á¥ó¥È¤Î\f2package\-list\fP¤Ï¤Þ¤À¸ºß¤·¤Æ¤¤¤Þ¤»¤ó¡£¤·¤¿¤¬¤Ã¤Æ¡¢³°Éô¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¤Ë¤Ï¡¢2ÈÖÌܤΥɥ¥å¥á¥ó¥È¤òÀ¸À®¤·¤¿¸å¤Ç¡¢ºÇ½é¤Î¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤·Ä¾¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+¤³¤Î¾ì¹ç¡¢ºÇ½é¤Î¥É¥¥å¥á¥ó¥ÈÀ¸À®¤ÎÌÜŪ¤Ï¡¢\f2package\-list\fP¤òºîÀ®¤¹¤ë¤³¤È¤Ç¤¹(¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÇÄ°®¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¼êÆ°¤ÇºîÀ®¤·¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó)¡£¼¡¤Ë¡¢2ÈÖÌܤΥɥ¥å¥á¥ó¥È¤È¤½¤Î³°Éô¥ê¥ó¥¯¤òÀ¸À®¤·¤Þ¤¹¡£É¬Íפʳ°Éô¤Î\f2package\-list\fP¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Ï¡¢Javadoc¥Ä¡¼¥ë¤«¤é·Ù¹ð¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-linkoffline\ extdocURL\ packagelistLoc -+¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï\f2\-link\fP¤Î¥Ð¥ê¥¨¡¼¥·¥ç¥ó¤Î1¤Ä¤Ç¤¹¡£¤É¤Á¤é¤â¡¢Javadoc¤Ë¤è¤êÀ¸À®¤µ¤ì¤¿³°Éô»²¾È¥¯¥é¥¹¤Î¥É¥¥å¥á¥ó¥È¤Ø¤Î¥ê¥ó¥¯¤òºîÀ®¤·¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¼«ÂΤ¬¡Ö¥ª¥Õ¥é¥¤¥ó¡×¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¤(WebÀܳ¤ò»ÈÍѤ·¤Æ¥É¥¥å¥á¥ó¥È¤Ë¥¢¥¯¥»¥¹¤Ç¤¤Ê¤¤¤È¤)¡¢Web¾å¤Î¥É¥¥å¥á¥ó¥È¤Ë¥ê¥ó¥¯¤¹¤ë¤Ë¤Ï¡¢\f2\-linkoffline\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.br -+.br -+¸·Ì©¤Ë¤Ï¡¢³°Éô¥É¥¥å¥á¥ó¥È¤Î\f2package\-list\fP¥Õ¥¡¥¤¥ë¤Ë¥¢¥¯¥»¥¹¤Ç¤¤Ê¤¤¤È¤¡¢¤Þ¤¿¤Ï¤³¤Î¥Õ¥¡¥¤¥ë¤¬\f2extdocURL\fP¤Ç»ØÄꤵ¤ì¤¿¾ì½ê¤Ë¤Ï¸ºß¤»¤º¡¢\f2packageListLoc\fP¤Ç»ØÄê¤Ç¤¤ëÊ̤ξì½ê(Ä̾ï¥í¡¼¥«¥ë)¤Ë¸ºß¤¹¤ë¤È¤¡¢\f2\-linkoffline\fP¤ò»ÈÍѤ·¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢\f2extdocURL\fP¤ËWWW¾å¤Ç¤·¤«¥¢¥¯¥»¥¹¤Ç¤¤Ê¤¤¾ì¹ç¤Ï¡¢\f2\-linkoffline\fP¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤ê¡¢¥É¥¥å¥á¥ó¥È¤ÎÀ¸À®»þ¤ËJavadoc¥Ä¡¼¥ë¤¬Web¤ËÀܳ¤Ç¤¤ëɬÍפ¬¤¢¤ë¤È¤¤¤¦À©Ì󤬤ʤ¯¤Ê¤ê¤Þ¤¹¡£ -+.br -+.br -+¤â¤¦1¤Ä¤ÎÍÑÅӤϡ¢¥É¥¥å¥á¥ó¥È¤ò¹¹¿·¤¹¤ë¤¿¤á¤Î¡Ö¥Ï¥Ã¥¥ó¥°¡×¤È¤·¤Æ»ÈÍѤ¹¤ë¤³¤È¤Ç¤¹¡£¥Ñ¥Ã¥±¡¼¥¸¤Î¥»¥Ã¥ÈÁ´ÂΤËÂФ·¤ÆJavadoc¤ò¼Â¹Ô¤·¤¿¸å¡¢Êѹ¹¤·¤¿°ìÉô¤Î¥Ñ¥Ã¥±¡¼¥¸¤ËÂФ·¤Æ¤Î¤ßJavadoc¤òºÆÅټ¹Ԥ·¤Æ¡¢¹¹¿·¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¡¢¥ª¥ê¥¸¥Ê¥ë¤Î¥»¥Ã¥È¤ËÁÞÆþ¤Ç¤¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£¸å¤ÇÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.br -+.br -+\f2\-linkoffline\fP¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò2¤Ä¼è¤ê¤Þ¤¹¡£Âè1°ú¿ô¤Ï\f2<a href>\fP¥ê¥ó¥¯¤ËÁȤ߹þ¤Þ¤ì¤ëʸ»úÎó¤ò»ØÄꤹ¤ë°ú¿ô¡¢Âè2°ú¿ô¤Ï\f2package\-list\fP¤Î¸¡º÷¾ì½ê¤ò»ØÄꤹ¤ë°ú¿ô¤Ç¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f4extdocURL\fP¤Ï¡¢¥ê¥ó¥¯Àè¤È¤·¤Æ»ØÄꤹ¤ë¡¢Javadoc¤Ë¤è¤êÀ¸À®¤µ¤ì¤¿³°Éô¥É¥¥å¥á¥ó¥È¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤ÎÀäÂÐURL¤Þ¤¿¤ÏÁêÂÐURL¤Ç¤¹¡£ÁêÂÐURL¤Î¾ì¹ç¡¢Ãͤϡ¢À¸À®Àè¥Ç¥£¥ì¥¯¥È¥ê(\f2\-d\fP¤Ç»ØÄê)¤«¤é¥ê¥ó¥¯Àè¤È¤Ê¤ë¥Ñ¥Ã¥±¡¼¥¸¤Î¥ë¡¼¥È¤Ø¤ÎÁêÂХѥ¹¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢\f2\-link\fP¥ª¥×¥·¥ç¥ó¤Î\f2extdocURL\fP¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 2 -+o -+\f4packagelistLoc\fP¤Ï¡¢³°Éô¥É¥¥å¥á¥ó¥È¤Î\f2package\-list\fP¥Õ¥¡¥¤¥ë¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤Ø¤Î¥Ñ¥¹¤Þ¤¿¤ÏURL¤Ç¤¹¡£¤³¤ì¤Ï¡¢URL (http:¤Þ¤¿¤Ïfile:)¤Ç¤â¥Õ¥¡¥¤¥ë¡¦¥Ñ¥¹¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£¤Þ¤¿¡¢ÀäÂХѥ¹¤ÈÁêÂХѥ¹¤Î¤É¤Á¤é¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ÁêÂХѥ¹¤Î¾ì¹ç¤Ï¡¢javadoc¤¬¼Â¹Ô¤µ¤ì¤ë\f2¸½ºß¤Î\fP¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¤ÎÁêÂХѥ¹¤È¤·¤Æ»ØÄꤷ¤Þ¤¹¡£¥Õ¥¡¥¤¥ë̾¤Î\f2package\-list\fP¤Ï´Þ¤á¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ -+.RE -+1²ó¤ÎJavadoc¤Î¼Â¹Ô¤Ç¡¢Ê£¿ô¤Î\f2\-linkoffline\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄê¤Ç¤¤Þ¤¹¡£(1.2.2¤è¤êÁ°¤Ï¡¢1¤Ä¤Î¥ª¥×¥·¥ç¥ó¤·¤«»ØÄê¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡£) -+.br -+.br -+\f3³°Éô¥É¥¥å¥á¥ó¥È¤Ø¤ÎÀäÂÐ¥ê¥ó¥¯¤Î»ÈÍÑÎã\fP \- \f2http://docs.oracle.com/javase/7/docs/api/\fPÆâ¤Î\f2java.lang\fP¡¢\f2java.io\fP¡¢¤½¤Î¾¤ÎJava SE¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¡¦¥Ñ¥Ã¥±¡¼¥¸¤Ë¥ê¥ó¥¯¤·¤¿¤¤¤¬¡¢Web¤Ë¥¢¥¯¥»¥¹¤Ç¤¤Ê¤¤¤È¤·¤Þ¤¹¡£¥Ö¥é¥¦¥¶¤Ç¡¢ -+.na -+\f2http://docs.oracle.com/javase/7/docs/api/package\-list\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/package\-list¤Ë¤¢¤ë\f2package\-list\fP¥Õ¥¡¥¤¥ë¤ò³«¤¡¢¤½¤ì¤ò¥í¡¼¥«¥ë¡¦¥Ç¥£¥ì¥¯¥È¥ê¤ËÊݸ¤·¡¢Âè2°ú¿ô\f2packagelistLoc\fP¤Ç¤³¤Î¥í¡¼¥«¥ë¡¦¥³¥Ô¡¼¤Î¾ì½ê¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤ÎÎã¤Ç¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¡¦¥ê¥¹¥È¡¦¥Õ¥¡¥¤¥ë¤Ï¥«¥ì¥ó¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¡Ö\f2.\fP¡×¤ËÊݸ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¼¡¤Î¥³¥Þ¥ó¥É¤Ï¡¢Java SE¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¡¦¥Ñ¥Ã¥±¡¼¥¸¤Ø¤Î¥ê¥ó¥¯»ý¤Ä\f2com.mypackage\fP¥Ñ¥Ã¥±¡¼¥¸¤Î¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤·¤Þ¤¹¡£À¸À®¥É¥¥å¥á¥ó¥È¤Ë¤Ï¡¢¤¿¤È¤¨¤Ð¥¯¥é¥¹¡¦¥Ä¥ê¡¼Æâ¤Î\f2Object\fP¥¯¥é¥¹¤Ø¤Î¥ê¥ó¥¯¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£(\f2\-sourcepath\fP¤Ê¤É¡¢Â¾¤ÎɬÍפʥª¥×¥·¥ç¥ó¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£) -+.nf -+\f3 -+.fl -+% \fP\f3javadoc \-linkoffline http://docs.oracle.com/javase/7/docs/api/ . com.mypackage\fP -+.fl -+.fi -+\f3³°Éô¥É¥¥å¥á¥ó¥È¤Ø¤ÎÁêÂÐ¥ê¥ó¥¯¤Î»ÈÍÑÎã\fP \- \f2\-linkoffline\fP¤òÁêÂХѥ¹¤È¤È¤â¤Ë»ÈÍѤ¹¤ë¤³¤È¤Ï¤¢¤Þ¤ê¤¢¤ê¤Þ¤»¤ó¡£Íýͳ¤Ïñ½ã¤Ç¡¢Ä̾ï¤Ï\f2\-link\fP¤Ç´Ö¤Ë¹ç¤¦¤«¤é¤Ç¤¹¡£\f2\-linkoffline\fP¤ò»ÈÍѤ¹¤ëºÝ¡¢\f2package\-list\fP¤Ë¤ÏÄ̾ï¥í¡¼¥«¥ë¤Î¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£ÁêÂÐ¥ê¥ó¥¯¤ò»ÈÍѤ¹¤ëºÝ¤â¡¢¥ê¥ó¥¯Àè¤Î¥Õ¥¡¥¤¥ë¤Ë¤ÏÄ̾ï¥í¡¼¥«¥ë¤Î¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢\f2\-linkoffline\fP¤Î2¤Ä¤Î°ú¿ô¤ËÊÌ¡¹¤Î¥Ñ¥¹¤ò»ØÄꤹ¤ëɬÍפÏÄ̾濫¤ê¤Þ¤»¤ó¡£2¤Ä¤Î°ú¿ô¤¬Æ±°ì¤Ç¤¢¤ë¾ì¹ç¤Ï¡¢\f2\-link\fP¤ò»ÈÍѤǤ¤Þ¤¹¡£\f2\-link\fP¤ÎÁêÂÐ¥ê¥ó¥¯¤ÎÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+\f4package\-list\fP\f3¥Õ¥¡¥¤¥ë¤ò¼êÆ°¤ÇºîÀ®\fP \- \f2package\-list\fP¥Õ¥¡¥¤¥ë¤¬¤Þ¤À¸ºß¤·¤Ê¤¯¤Æ¤â¡¢¥É¥¥å¥á¥ó¥È¤Î¥ê¥ó¥¯Àè¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤¬¤ï¤«¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼¤ò¼êÆ°¤ÇºîÀ®¤·¡¢\f2packagelistLoc\fP¤Ç¤½¤Î¥Ñ¥¹¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£\f2com.apipackage\fP¤¬ºÇ½é¤ËÀ¸À®¤µ¤ì¤¿»þÅÀ¤Ç\f2com.spipackage\fP¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥ê¥¹¥È¤¬Â¸ºß¤·¤Ê¤¤¤È¤¤¤¦Á°½Ð¤Î¥±¡¼¥¹¤¬°ìÎã¤È¤·¤Æµó¤²¤é¤ì¤Þ¤¹¡£¤³¤ÎÊýË¡¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Ï¤ï¤«¤Ã¤Æ¤¤¤ë¤â¤Î¤Î¡¢¤Þ¤À¸ø³«¤µ¤ì¤Æ¤¤¤Ê¤¤¡¢¿·¤·¤¤³°Éô¥É¥¥å¥á¥ó¥È¤Ë¥ê¥ó¥¯¤¹¤ë¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£¤Þ¤¿¡¢\f2package\-list\fP¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Ê¤¤Javadoc 1.0¤Þ¤¿¤Ï1.1¤ÇÀ¸À®¤µ¤ì¤¿¥Ñ¥Ã¥±¡¼¥¸ÍѤË\f2package\-list\fP¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¾ì¹ç¤Ë¤â¡¢¤³¤ÎÊýË¡¤¬»ÈÍѤǤ¤Þ¤¹¡£Æ±Íͤˡ¢2¤Ä¤Î´ë¶È¤¬Ì¤¸ø³«¤Î\f2package\-list\fP¥Õ¥¡¥¤¥ë¤ò¶¦Í¤Ç¤¤ë¤¿¤á¡¢¥¯¥í¥¹¥ê¥ó¥¯¤òÀßÄꤷ¤¿¥É¥¥å¥á¥ó¥È¤òƱ»þ¤Ë¥ê¥ê¡¼¥¹¤¹¤ë¤³¤È¤â²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.br -+.br -+\f3Ê£¿ô¤Î¥É¥¥å¥á¥ó¥È¤Ø¤Î¥ê¥ó¥¯\fP \- »²¾ÈÀè¤È¤Ê¤ëÀ¸À®¥É¥¥å¥á¥ó¥È¤´¤È¤Ë\f2\-linkoffline\fP¤ò1¤Ä¤º¤Ä´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹(¤ï¤«¤ê¤ä¤¹¤¯¤¹¤ë¤¿¤á¤Ë¡¢¥ª¥×¥·¥ç¥ó¤´¤È¤Ë²þ¹Ô¤·¤Æ¼¨¤·¤Æ¤¤¤Þ¤¹)¡£ -+.br -+.br -+\f2% \fP\f4javadoc \-linkoffline\fP \f2extdocURL1\fP \f2packagelistLoc1\fP \f2\\\fP -+.br -+\f2\ \ \ \ \ \ \ \ \ \ \fP\f4\-linkoffline\fP \f2extdocURL2\fP \f2packagelistLoc2\fP \f2\\\fP -+.br -+\f2\ \ \ \ \ \ \ \ \ \ ...\fP -+.br -+.br -+\f3¥É¥¥å¥á¥ó¥È¤Î¹¹¿·\fP \- \f2\-linkoffline\fP¥ª¥×¥·¥ç¥ó¤Î¤â¤¦1¤Ä¤ÎÍÑÅӤϡ¢¥×¥í¥¸¥§¥¯¥È¤ËÂçÎ̤Υѥ屡¼¥¸¤¬´Þ¤Þ¤ì¤Æ¤¤¤Æ¡¢¤¹¤Ç¤Ë¥Ä¥ê¡¼Á´ÂΤËÂФ·¤ÆJavadoc¤Î¼Â¹Ô¤¬´°Î»¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¡¢¼¡¤Î¼Â¹Ô¤Ç¤Ï¡¢¾¯Î̤ÎÊѹ¹¤ò¼êÁ᤯²Ã¤¨¤¿¸å¡¢¥½¡¼¥¹¡¦¥Ä¥ê¡¼¤Î¤´¤¯°ìÉô¤ËÂФ·¤Æ¤Î¤ßJavadoc¤òºÆ¼Â¹Ô¤¹¤ë¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£¤³¤ì¤Ï¡¢¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ËÂФ·¤Æ¤Î¤ßÊѹ¹¤ò²Ã¤¨¡¢Àë¸À¤ÏÊѹ¹¤·¤Ê¤¤¾ì¹ç¤Ë¤Î¤ßÀµ¤·¤¯½èÍý¤µ¤ì¤ë¤Î¤Ç¡¢¥Ï¥Ã¥¥ó¥°¤Î¤è¤¦¤Ê¤â¤Î¤Ç¤¹¡£¥½¡¼¥¹¡¦¥³¡¼¥É¤ËÂФ·¤ÆÀë¸À¤òÄɲᢺï½ü¡¢¤Þ¤¿¤ÏÊѹ¹¤·¤¿¾ì¹ç¤Ï¡¢º÷°ú¡¢¥Ñ¥Ã¥±¡¼¥¸¡¦¥Ä¥ê¡¼¡¢·Ñ¾µ¤µ¤ì¤ë¥á¥ó¥Ð¡¼¤Î¥ê¥¹¥È¡¢»ÈÍÑ¥Ú¡¼¥¸¤Ê¤É¤Î¾ì½ê¤Ç¡¢¥ê¥ó¥¯¤¬²õ¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+¤Þ¤º¡¢¤³¤Î¿·¤·¤¤¾®µ¬ÌϤʼ¹ԤǻÈÍѤ¹¤ë¡¢¿·¤·¤¤À¸À®Àè¥Ç¥£¥ì¥¯¥È¥ê(\f2update\fP)¤òºîÀ®¤·¤Þ¤¹¡£¸µ¤ÎÀ¸À®Àè¥Ç¥£¥ì¥¯¥È¥ê¤Î̾Á°¤¬\f2html\fP¤À¤Ã¤¿¤È¤·¤Þ¤¹¡£ºÇ¤âñ½ã¤ÊÎã¤Ç¤Ï¡¢\f2html\fP¥Ç¥£¥ì¥¯¥È¥ê¤Î¿Æ¤Ëcd¤Ë¤è¤Ã¤Æ°ÜÆ°¤·¤Þ¤¹¡£\f2\-linkoffline\fP¤ÎÂè1°ú¿ô¤Ë¥«¥ì¥ó¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¡Ö.¡×¤òÀßÄꤷ¡¢Âè2°ú¿ô¤Ë\f2package\-list\fP¤¬¸¡º÷¤µ¤ì¤ë\f2html\fP¤Ø¤ÎÁêÂХѥ¹¤òÀßÄꤷ¤Þ¤¹¡£¹¹¿·¤¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Î¤ß¤òÅϤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-d update \-linkoffline . html com.mypackage\fP -+.fl -+.fi -+Javadoc¥Ä¡¼¥ë¤Î½ªÎ»¸å¡¢\f2update/com/package\fPÆâ¤ÎÀ¸À®¤µ¤ì¤¿¥¯¥é¥¹¤Î¥Ú¡¼¥¸¤ò¥³¥Ô¡¼¤·(³µÍפäº÷°ú¤Ï½ü¤¯)¡¢\f2html/com/package\fPÆâ¤Î¸µ¤Î¥Õ¥¡¥¤¥ë¤Ë¾å½ñ¤¤·¤Þ¤¹¡£ -+.TP 3 -+\-linksource\ -+³Æ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë(¹ÔÈÖ¹æÉÕ¤)¤ÎHTML¥Ð¡¼¥¸¥ç¥ó¤òºîÀ®¤·¡¢É¸½àHTML¥É¥¥å¥á¥ó¥È¤«¤é¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯¤òÄɲä·¤Þ¤¹¡£¥ê¥ó¥¯¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ëÆâ¤ËÀë¸À¤µ¤ì¤Æ¤¤¤ë¥¯¥é¥¹¡¢¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥á¥½¥Ã¥É¡¢¥Õ¥£¡¼¥ë¥É¤ËÂФ·¤ÆºîÀ®¤µ¤ì¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¡¦¥³¥ó¥¹¥È¥é¥¯¥¿¡¢À¸À®¤µ¤ì¤¿¥¯¥é¥¹¤Ê¤É¤ËÂФ·¤Æ¤ÏºîÀ®¤µ¤ì¤Þ¤»¤ó¡£ -+.br -+.br -+\f3¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢\fP\f4\-public\fP\f3¡¢\fP\f4\-package\fP\f3¡¢\fP\f4\-protected\fP\f3¡¢\fP\f4\-private\fP\f3¤Î³Æ¥ª¥×¥·¥ç¥ó¤È¤Ï´Ø·¸¤Ê¤¯\fP\f3¡¢Èó¸ø³«¤Î¥¯¥é¥¹¡¢¥Õ¥£¡¼¥ë¥É¡¢Èó¸ø³«¤Î¥á¥½¥Ã¥É¤ÎËÜÂΤò¤Ï¤¸¤á¤È¤¹¤ëÁȤ߹þ¤Þ¤ì¤¿¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ëÆâ¤Î\fP\f4¤¹¤Ù¤Æ¤Î\fP\f3Èó¸ø³«¼ÂÁõ¤Î¾ÜºÙ¤ò¸ø³«¤·¤Þ¤¹¡£\fP\f2\-private\fP¥ª¥×¥·¥ç¥ó¤âÊ»¤»¤Æ»ØÄꤷ¤Ê¤¤¤«¤®¤ê¡¢Èó¸ø³«¤Î¥¯¥é¥¹¤ä¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î°ìÉô¤Ë¤Ï¡¢¥ê¥ó¥¯¤ò²ð¤·¤Æ¥¢¥¯¥»¥¹¤Ç¤¤Ê¤¤¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+³Æ¥ê¥ó¥¯¤Ï¡¢¤½¤ÎÀë¸ÀÆâ¤Î¼±ÊÌ»Ò̾¤Î¾å¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2Button\fP¥¯¥é¥¹¤Î¥½¡¼¥¹¡¦¥³¡¼¥É¤Ø¤Î¥ê¥ó¥¯¤Ï¡¢¡ÖButton¡×¤È¤¤¤¦¸ì¤Î¾å¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ public class Button -+.fl -+ extends Component -+.fl -+ implements Accessible -+.fl -+\fP -+.fi -+¤Þ¤¿¡¢Button¥¯¥é¥¹¤Î\f2getLabel()\fP¥á¥½¥Ã¥É¤Î¥½¡¼¥¹¡¦¥³¡¼¥É¤Ø¤Î¥ê¥ó¥¯¤Ï¡¢¡ÖgetLabel¡×¤È¤¤¤¦¸ì¤Î¾å¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ public String getLabel() -+.fl -+\fP -+.fi -+.TP 3 -+\-group\ groupheading\ packagepattern:packagepattern:... -+³µÍ×¥Ú¡¼¥¸¤ÎÊ£¿ô¤Î¥Ñ¥Ã¥±¡¼¥¸¤ò¡¢»ØÄꤷ¤¿¥°¥ë¡¼¥×¤Ëʬ¤±¤Æ¡¢¥°¥ë¡¼¥×¤´¤È¤Ëɽ¤òºîÀ®¤·¤Þ¤¹¡£³Æ¥°¥ë¡¼¥×¤Ï¡¢¤½¤ì¤¾¤ìÊ̤Î\f2\-group\fP¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤷ¤Þ¤¹¡£¤³¤ì¤é¤Î¥°¥ë¡¼¥×¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤¿½ç½ø¤Ç¥Ú¡¼¥¸¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£³Æ¥°¥ë¡¼¥×Æâ¤Ç¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¤¬¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ëʤ٤é¤ì¤Þ¤¹¡£1¤Ä¤Î\f2\-group\fP¥ª¥×¥·¥ç¥ó¤Ç¤Ï¡¢\f2packagepattern\fP¼°¤Î¥ê¥¹¥È¤Ë°ìÃפ¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤¬¡¢¸«½Ð¤·¤È¤·¤Æ\f2groupheading\fP¤ò»ý¤Ä1¤Ä¤Îɽ¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f4groupheading\fP¤Ë¤Ï¡¢Ç¤°Õ¤Î¥Æ¥¥¹¥È¤ò»ØÄê¤Ç¤¡¢¶õÇò¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£»ØÄꤷ¤¿¥Æ¥¥¹¥È¤Ï¡¢¥°¥ë¡¼¥×¤Îɽ¸«½Ð¤·¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\f4packagepattern\fP¤Ë¤Ï¡¢Ç¤°Õ¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¡¢¤Þ¤¿¤ÏǤ°Õ¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ÎÀèƬÉôʬ¤È¤½¤ì¤Ë³¤¯1¤Ä¤Î¥¢¥¹¥¿¥ê¥¹¥¯(\f2*\fP)¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥¢¥¹¥¿¥ê¥¹¥¯¤Ï¡¢¡ÖǤ°Õ¤Îʸ»ú¤Ë°ìÃפ¹¤ë¡×¤È¤¤¤¦°ÕÌ£¤Î¥ï¥¤¥ë¥É¥«¡¼¥É¤Ç¤¹¡£¥ï¥¤¥ë¥É¥«¡¼¥É¤È¤·¤Æ»ØÄê¤Ç¤¤ë¤Î¤Ï¡¢¥¢¥¹¥¿¥ê¥¹¥¯¤Î¤ß¤Ç¤¹¡£1¤Ä¤Î¥°¥ë¡¼¥×¤Ë¤Ï¡¢¥³¥í¥ó(\f2:\fP)¤Ç¶èÀڤäÆÊ£¿ô¤Î¥Ñ¥¿¡¼¥ó¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.RE -+\f3Ãí°Õ: ¥Ñ¥¿¡¼¥ó¤ä¥Ñ¥¿¡¼¥ó¡¦¥ê¥¹¥ÈÆâ¤Ç¥¢¥¹¥¿¥ê¥¹¥¯¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢\fP\f4"java.lang*:java.util"\fP\f3¤Î¤è¤¦¤Ë¡¢¥Ñ¥¿¡¼¥ó¡¦¥ê¥¹¥È¤ò°úÍÑÉä¤Ç°Ï¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡£\fP -+.br -+.br -+\f2\-group\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤¹¤Ù¤Æ¤Î¥Ñ¥Ã¥±¡¼¥¸¤¬¡¢¡Ö¥Ñ¥Ã¥±¡¼¥¸¡×¤È¤¤¤¦¸«½Ð¤·¤Î1¤Ä¤Î¥°¥ë¡¼¥×¤ËÆþ¤ì¤é¤ì¤Þ¤¹¡£¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë¥Ñ¥Ã¥±¡¼¥¸¤ÎÃæ¤Ë¡¢¤É¤Î¥°¥ë¡¼¥×¤Ë¤âÆþ¤é¤Ê¤¤¥Ñ¥Ã¥±¡¼¥¸¤¬¤¢¤ë¾ì¹ç¡¢¤³¤Î¤è¤¦¤Ê¥Ñ¥Ã¥±¡¼¥¸¤Ï¡Ö¤½¤Î¾¤Î¥Ñ¥Ã¥±¡¼¥¸¡×¤È¤¤¤¦¸«½Ð¤·¤ò»ý¤ÄÆÈΩ¤·¤¿¥°¥ë¡¼¥×¤ËÆþ¤ì¤é¤ì¤Þ¤¹¡£ -+.br -+.br -+¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤ë5¤Ä¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ï¡¢¥³¥¢¡¦¥Ñ¥Ã¥±¡¼¥¸¡¢³ÈÄ¥µ¡Ç½¥Ñ¥Ã¥±¡¼¥¸¡¢¤ª¤è¤Ó¤½¤Î¾¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ëʬ¤±¤é¤ì¤Þ¤¹¡£¡Öjava.lang*¡×¤Ç¤Ï¡¢ºÇ¸å¤Î¥É¥Ã¥È¤ò»ØÄꤷ¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃíÌܤ·¤Æ¤¯¤À¤µ¤¤¡£¡Öjava.lang.*¡×¤Î¤è¤¦¤Ë¥É¥Ã¥È¤òÆþ¤ì¤ë¤È¡¢java.lang¥Ñ¥Ã¥±¡¼¥¸¤Ï½ü³°¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-group "Core Packages" "java.lang*:java.util" -+.fl -+ \-group "Extension Packages" "javax.*" -+.fl -+ java.lang java.lang.reflect java.util javax.servlet java.new\fP -+.fl -+.fi -+¤³¤Î·ë²Ì¡¢¼¡¤Î¤è¤¦¤Ê¥°¥ë¡¼¥×²½¤¬¹Ô¤ï¤ì¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+¥³¥¢¡¦¥Ñ¥Ã¥±¡¼¥¸ -+\f2java.lang\fP -+\f2java.lang.reflect\fP -+\f2java.util\fP -+.TP 3 -+³ÈÄ¥µ¡Ç½¥Ñ¥Ã¥±¡¼¥¸ -+\f2javax.servlet\fP -+.TP 3 -+¤½¤Î¾¤Î¥Ñ¥Ã¥±¡¼¥¸ -+\f2java.new\fP -+.RE -+.TP 3 -+\-nodeprecated -+¿ä¾©¤µ¤ì¤Ê¤¤API¤ò¥É¥¥å¥á¥ó¥È¤ËÀ¸À®¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢\-nodeprecatedlist¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¤ÈƱ¤¸¸ú²Ì¤¬¤¢¤ë¤³¤È¤Ë²Ã¤¨¤Æ¡¢¥É¥¥å¥á¥ó¥È¤Î¾¤ÎÉôʬÁ´ÂΤǤ⡢¿ä¾©¤µ¤ì¤Ê¤¤API¤¬À¸À®¤µ¤ì¤Þ¤»¤ó¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥³¡¼¥É¤òµ½Ò¤·¤Æ¤¤¤ë¤È¤¡¢¿ä¾©¤µ¤ì¤Ê¤¤¥³¡¼¥É¤Ë¤è¤Ã¤Æµ¤¤ò»¶¤é¤µ¤ì¤¿¤¯¤Ê¤¤¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£ -+.TP 3 -+\-nodeprecatedlist -+¿ä¾©¤µ¤ì¤Ê¤¤API¤Î¥ê¥¹¥È¤ò´Þ¤à¥Õ¥¡¥¤¥ë(deprecated\-list.html)¡¢¤ª¤è¤Ó¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤Î¤½¤Î¥Ú¡¼¥¸¤Ø¤Î¥ê¥ó¥¯¤¬À¸À®¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£(¤¿¤À¤·¡¢¥É¥¥å¥á¥ó¥È¤Î¾¤ÎÉôʬ¤Ç¤Ï¡¢¿ä¾©¤µ¤ì¤Ê¤¤API¤¬À¸À®¤µ¤ì¤Þ¤¹¡£)¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¿ä¾©¤µ¤ì¤Ê¤¤API¤¬¥½¡¼¥¹¡¦¥³¡¼¥É¤Ë´Þ¤Þ¤ì¤Æ¤ª¤é¤º¡¢¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤ò¤¹¤Ã¤¤ê¤È¸«¤»¤ë¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£ -+.TP 3 -+\-nosince -+À¸À®¥É¥¥å¥á¥ó¥È¤«¤é¡¢@since¥¿¥°¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¡ÖƳÆþ¤µ¤ì¤¿¥Ð¡¼¥¸¥ç¥ó¡×¥»¥¯¥·¥ç¥ó¤ò¾Êά¤·¤Þ¤¹¡£ -+.TP 3 -+\-notree -+À¸À®¥É¥¥å¥á¥ó¥È¤«¤é¡¢¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î³¬ÁØ¥Ú¡¼¥¸¤ò¾Êά¤·¤Þ¤¹¡£¤³¤ì¤é¤Î¥Ú¡¼¥¸¤Ë¤Ï¡¢¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤Î¡Ö³¬Áإĥ꡼¡×¥Ü¥¿¥ó¤«¤é¥¢¥¯¥»¥¹¤Ç¤¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢³¬Áؤ¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-noindex -+À¸À®¥É¥¥å¥á¥ó¥È¤«¤é¡¢º÷°ú¤ò¾Êά¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢º÷°ú¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-nohelp -+½ÐÎϤγƥڡ¼¥¸¤ÎºÇ¾åÉô¤ÈºÇ²¼Éô¤Ë¤¢¤ë¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤«¤é¡Ö¥Ø¥ë¥×¡×¥ê¥ó¥¯¤ò¾Êά¤·¤Þ¤¹¡£ -+.TP 3 -+\-nonavbar -+À¸À®¤µ¤ì¤ë¥Ú¡¼¥¸¤ÎºÇ¾åÉô¤ÈºÇ²¼Éô¤Ëɽ¼¨¤µ¤ì¤ë¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¡¢¥Ø¥Ã¥À¡¼¡¢¤ª¤è¤Ó¥Õ¥Ã¥¿¡¼¤òÀ¸À®¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢bottom¥ª¥×¥·¥ç¥ó¤Ë¤Ï±Æ¶Á¤òÍ¿¤¨¤Þ¤»¤ó¡£\f2\-nonavbar\fP¥ª¥×¥·¥ç¥ó¤Ï¡¢°õºþ¤¹¤ë¤¿¤á¤Ë¤Î¤ß¥Õ¥¡¥¤¥ë¤òPostScript¤äPDF¤ËÊÑ´¹¤¹¤ë¾ì¹ç¤Ê¤É¡¢ÆâÍƤΤߤ¬½ÅÍפǡ¢¥Ê¥Ó¥²¡¼¥·¥ç¥ó¤ÎɬÍפ¬¤Ê¤¤¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£ -+.TP 3 -+\-helpfile\ path/filename -+ºÇ¾åÉô¤ª¤è¤ÓºÇ²¼Éô¤Î¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼¤Î¡Ö¥Ø¥ë¥×¡×¥ê¥ó¥¯¤Î¥ê¥ó¥¯Àè¤È¤Ê¤ëÂåÂإإë¥×¡¦¥Õ¥¡¥¤¥ë\f2path/filename\fP¤Î¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¥Ä¡¼¥ëÆâ¤Ç¥Ï¡¼¥É¥³¡¼¥É¤µ¤ì¤Æ¤¤¤ë¥Ø¥ë¥×¡¦¥Õ¥¡¥¤¥ë\f2help\-doc.html\fP¤ò¼«Æ°ºîÀ®¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¤½¤Î¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤Ç¤¤Þ¤¹¡£\f2filename\fP¤Ë¤Ï¤É¤ó¤Ê¥Õ¥¡¥¤¥ë̾¤Ç¤â»ØÄê¤Ç¤¡¢\f2help\-doc.html\fP¤Ë¸ÂÄꤵ¤ì¤Þ¤»¤ó¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢¥Ê¥Ó¥²¡¼¥·¥ç¥ó¡¦¥Ð¡¼Æâ¤Î¥ê¥ó¥¯¤òɬÍפ˱þ¤¸¤ÆÄ´À°¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-helpfile /home/user/myhelp.html java.awt\fP -+.fl -+.fi -+.TP 3 -+\-stylesheetfile\ path/filename -+ÂåÂØHTML¥¹¥¿¥¤¥ë¥·¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¥Ä¡¼¥ëÆâ¤Ç¥Ï¡¼¥É¥³¡¼¥É¤µ¤ì¤Æ¤¤¤ë¥¹¥¿¥¤¥ë¥·¡¼¥È¡¦¥Õ¥¡¥¤¥ë\f2stylesheet.css\fP¤ò¼«Æ°ºîÀ®¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¤½¤Î¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤Ç¤¤Þ¤¹¡£\f2filename\fP¤Ë¤Ï¤É¤ó¤Ê¥Õ¥¡¥¤¥ë̾¤Ç¤â»ØÄê¤Ç¤¡¢\f2stylesheet.css\fP¤Ë¸ÂÄꤵ¤ì¤Þ¤»¤ó¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-stylesheetfile /home/user/mystylesheet.css com.mypackage\fP -+.fl -+.fi -+.TP 3 -+\-serialwarn -+@serial¥¿¥°¤¬¤Ê¤¤¾ì¹ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥ë»þ¤Ë·Ù¹ð¤òÀ¸À®¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢Javadoc 1.2.2 (°Ê¹ß)¤Ç¤Ï¡¢Ä¾Î󲽤ηٹð¤ÏÀ¸À®¤µ¤ì¤Þ¤»¤ó¡£(°ÊÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤È¤ÏµÕ¤ÎÆ°ºî¤Ç¤¹¡£)¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢Ä¾Î󲽤ηٹð¤¬É½¼¨¤µ¤ì¤ë¤Î¤Ç¡¢¥Ç¥Õ¥©¥ë¥È¤ÎľÎó²½²Äǽ¥Õ¥£¡¼¥ë¥É¤È\f2writeExternal\fP¥á¥½¥Ã¥É¤òŬÀڤ˥ɥ¥å¥á¥ó¥È²½¤¹¤ë¤Î¤ËÌòΩ¤Á¤Þ¤¹¡£ -+.TP 3 -+\-charset\ name -+¤³¤Î¥É¥¥å¥á¥ó¥ÈÍѤÎHTMLʸ»ú¥»¥Ã¥È¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î̾Á°¤Ï¡¢ -+.na -+\f2IANA¥ì¥¸¥¹¥È¥ê\fP @ -+.fi -+http://www.iana.org/assignments/character\-sets¤Ç»ØÄꤵ¤ì¤¿¡¢¿ä¾©¤µ¤ì¤ëMIME̾¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-charset "iso\-8859\-1" mypackage\fP -+.fl -+.fi -+À¸À®¤µ¤ì¤ë¤¹¤Ù¤Æ¤Î¥Ú¡¼¥¸¤ÎÀèƬ¤Ë¡¢¼¡¤Î¹Ô¤¬ÁÞÆþ¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ <META http\-equiv="Content\-Type" content="text/html; charset=ISO\-8859\-1"> -+.fl -+\fP -+.fi -+¤³¤ÎMETA¥¿¥°¤Ë¤Ä¤¤¤Æ¤Ï¡¢ -+.na -+\f2HTMLµ¬³Ê\fP @ -+.fi -+http://www.w3.org/TR/REC\-html40/charset.html#h\-5.2.2(4197265¤ª¤è¤Ó4137321)¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+\-encoding¤ª¤è¤Ó\-docencoding¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-docencoding\ name -+À¸À®¤µ¤ì¤ëHTML¥Õ¥¡¥¤¥ë¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î̾Á°¤Ï¡¢ -+.na -+\f2IANA¥ì¥¸¥¹¥È¥ê\fP @ -+.fi -+http://www.iana.org/assignments/character\-sets¤Ç»ØÄꤵ¤ì¤¿¡¢¿ä¾©¤µ¤ì¤ëMIME̾¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¾Êά¤·¤Ê¤¬¤é\-encoding¤ò»ÈÍѤ·¤¿¾ì¹ç¡¢À¸À®¤µ¤ì¤ëHTML¥Õ¥¡¥¤¥ë¤Î¥¨¥ó¥³¡¼¥É¤Ï¡¢\-encoding¤Ë¤è¤Ã¤Æ·è¤á¤é¤ì¤Þ¤¹¡£Îã: -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-docencoding "ISO\-8859\-1" mypackage\fP -+.fl -+.fi -+\-encoding¤ª¤è¤Ó\-charset¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-keywords -+HTML¥á¥¿¡¦¥¡¼¥ï¡¼¥É¡¦¥¿¥°¤ò¡¢¥¯¥é¥¹¤´¤È¤ËÀ¸À®¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¤ËÄɲä·¤Þ¤¹¡£¤³¤ì¤é¤Î¥¿¥°¤Ï¡¢¥á¥¿¥¿¥°¤ò¸¡º÷¤¹¤ë¥µ¡¼¥Á¡¦¥¨¥ó¥¸¥ó¤¬¥Ú¡¼¥¸¤ò¸«¤Ä¤±¤ë¾ì¹ç¤ËÌòΩ¤Á¤Þ¤¹¡£(¥¤¥ó¥¿¡¼¥Í¥Ã¥ÈÁ´ÂΤò¸¡º÷¤¹¤ë¿¤¯¤Î¥µ¡¼¥Á¡¦¥¨¥ó¥¸¥ó¤Ï¡¢¥Ú¡¼¥¸¤¬¥á¥¿¥¿¥°¤ò¸íÍѤ·¤Æ¤¤¤ë²ÄǽÀ¤¬¤¢¤ë¤¿¤á¡¢¥á¥¿¥¿¥°¤òÄ´¤Ù¤Þ¤»¤ó¡£°ìÊý¡¢¸¡º÷¤ò¼«¿È¤ÎWeb¥µ¥¤¥È¤Ë¸ÂÄꤷ¤Æ¤¤¤ë´ë¶È¤¬Ä󶡤¹¤ë¥µ¡¼¥Á¡¦¥¨¥ó¥¸¥ó¤Ï¡¢¥á¥¿¥¿¥°¤òÄ´¤Ù¤ë¤³¤È¤Ë¤è¤Ã¤Æ¥á¥ê¥Ã¥È¤òÆÀ¤é¤ì¤Þ¤¹¡£) -+.br -+.br -+¥á¥¿¥¿¥°¤Ë¤Ï¡¢¥¯¥é¥¹¤Î´°Á´½¤¾þ̾¤È¡¢¥Õ¥£¡¼¥ë¥É¤ª¤è¤Ó¥á¥½¥Ã¥É¤Î½¤¾þ¤µ¤ì¤Æ¤¤¤Ê¤¤Ì¾Á°¤¬´Þ¤Þ¤ì¤Þ¤¹¡£¥³¥ó¥¹¥È¥é¥¯¥¿¤Ï¡¢¥¯¥é¥¹Ì¾¤ÈƱ¤¸¤Ç¤¢¤ë¤¿¤á´Þ¤Þ¤ì¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢¥¯¥é¥¹String¤Ï¼¡¤Î¥¡¼¥ï¡¼¥É¤Ç³«»Ï¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ <META NAME="keywords" CONTENT="java.lang.String class"> -+.fl -+ <META NAME="keywords" CONTENT="CASE_INSENSITIVE_ORDER"> -+.fl -+ <META NAME="keywords" CONTENT="length()"> -+.fl -+ <META NAME="keywords" CONTENT="charAt()"> -+.fl -+\fP -+.fi -+.TP 3 -+\-tag\ \ tagname:Xaoptcmf:"taghead" -+Javadoc¥Ä¡¼¥ë¤¬¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥ÈÆâ¤Î°ú¿ô¤ò1¤Ä¼è¤ëñ½ã¤Ê¥«¥¹¥¿¥à¥Ö¥í¥Ã¥¯¡¦¥¿¥°\f2@\fP\f2tagname\fP¤ò²ò¼á¤Ç¤¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢Javadoc¥Ä¡¼¥ë¤Ï¥¿¥°Ì¾¤Î¡Ö¥¹¥Ú¥ë¥Á¥§¥Ã¥¯¡×¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤ë¤Î¤Ç¡¢¥½¡¼¥¹¡¦¥³¡¼¥ÉÆâ¤Ë¸ºß¤¹¤ë¤¹¤Ù¤Æ¤Î¥«¥¹¥¿¥à¡¦¥¿¥°¤Ë¤Ä¤¤¤Æ¡¢\f2\-tag\fP¥ª¥×¥·¥ç¥ó¤òÁȤ߹þ¤à¤³¤È¤¬½ÅÍפǤ¹¡£º£²ó¤Î¼Â¹Ô¤Ç¤Ï½ÐÎϤµ¤ì¤Ê¤¤¥¿¥°¤Ï¡¢\f2X\fP¤òÉÕ¤±¤Æ̵¸ú¤Ë¤·¤Þ¤¹¡£ -+.br -+.br -+¥³¥í¥ó(\f4:\fP)¤¬¾ï¤Ë¶èÀÚ¤êʸ»ú¤Ë¤Ê¤ê¤Þ¤¹¡£\f2tagname\fP¤Ç¥³¥í¥ó¤ò»ÈÍѤ¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥¿¥°Ì¾¤Ç¤Î¥³¥í¥ó¤Î»ÈÍѤò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+\f2\-tag\fP¥ª¥×¥·¥ç¥ó¤Ï¡¢¥¿¥°¤Î¸«½Ð¤·\f2taghead\fP¤òÂÀ»ú¤Ç½ÐÎϤ·¤Þ¤¹¡£¤½¤Î¼¡¤Î¹Ô¤Ë¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Î°ú¿ô¤Ç»ØÄꤷ¤¿¥Æ¥¥¹¥È¤¬Â³¤¤Þ¤¹(²¼¤ÎÎã¤ò»²¾È)¡£¥Ö¥í¥Ã¥¯¡¦¥¿¥°¤ÈƱÍÍ¡¢¤³¤Î°ú¿ô¤Î¥Æ¥¥¹¥È¤Ë¤Ï¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤Î¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°¤â²ò¼á¤µ¤ì¤Þ¤¹¡£½ÐÎϤϡ¢°ú¿ô¤ò1¤Ä¼è¤ëɸ½à¤Î¥¿¥°(\f2@return\fP¤ä\f2@author\fP¤Ê¤É)¤Î½ÐÎϤȤ褯»÷¤Æ¤¤¤Þ¤¹¡£\f2taghead\fP¤ò¾Êά¤¹¤ë¤È¡¢\f2tagname\fP¤¬¸«½Ð¤·¤È¤·¤Æɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+\f3¥¿¥°¤ÎÇÛÃÖ\fP \- °ú¿ô¤Î\f4Xaoptcmf\fPÉôʬ¤Ï¡¢¥½¡¼¥¹¡¦¥³¡¼¥ÉÆâ¤Î¥¿¥°¤òÇÛÃ֤Ǥ¤ë°ÌÃ֤ȡ¢¥¿¥°¤ò(\f2X\fP¤ò»ÈÍѤ·¤Æ)̵¸ú¤Ë¤Ç¤¤ë¤«¤É¤¦¤«¤ò·èÄꤷ¤Þ¤¹¡£¥¿¥°¤ÎÇÛÃÖ°ÌÃÖ¤òÀ©¸Â¤·¤Ê¤¤¾ì¹ç¤Ï\f4a\fP¤ò»ØÄꤷ¤Þ¤¹¡£¤½¤ì°Ê³°¤Îʸ»ú¤ÎÁȹ礻¤â²Äǽ¤Ç¤¹¡£ -+.br -+.br -+\f4X\fP (¥¿¥°¤Î̵¸ú²½) -+.br -+\f4a\fP (¤¹¤Ù¤Æ) -+.br -+\f4o\fP (³µÍ×) -+.br -+\f4p\fP (¥Ñ¥Ã¥±¡¼¥¸) -+.br -+\f4t\fP (·¿¡¢¤Ä¤Þ¤ê¥¯¥é¥¹¤È¥¤¥ó¥¿¥Õ¥§¡¼¥¹) -+.br -+\f4c\fP (¥³¥ó¥¹¥È¥é¥¯¥¿) -+.br -+\f4m\fP (¥á¥½¥Ã¥É) -+.br -+\f4f\fP (¥Õ¥£¡¼¥ë¥É) -+.br -+.br -+\f3¥·¥ó¥°¥ë¡¦¥¿¥°¤ÎÎã\fP \- ¥½¡¼¥¹¡¦¥³¡¼¥ÉÆâ¤ÎǤ°Õ¤Î°ÌÃ֤ǻÈÍѤǤ¤ë¥¿¥°¤Î¥¿¥°¡¦¥ª¥×¥·¥ç¥ó¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-tag todo:a:"To Do:" -+.fl -+\fP -+.fi -+@todo¤ò¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥á¥½¥Ã¥É¡¢¥Õ¥£¡¼¥ë¥É¤Î¤ß¤Ç»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢¼¡¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-tag todo:cmf:"To Do:" -+.fl -+\fP -+.fi -+¾å¤ÎÎã¤ÎºÇ¸å¤Î¥³¥í¥ó(\f2:\fP)¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¶èÀÚ¤êʸ»ú¤Ç¤Ï¤Ê¤¯¡¢¸«½Ð¤·¥Æ¥¥¹¥È¤Î°ìÉô¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹(²¼¤ÎÎã¤ò»²¾È)¡£¼¡¤ÎÎã¤Î¤è¤¦¤Ë¡¢\f2@todo\fP¥¿¥°¤ò´Þ¤à¥½¡¼¥¹¡¦¥³¡¼¥É¤Ç¤Ï¡¢¤¤¤º¤ì¤«¤Î¥¿¥°¡¦¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ @todo The documentation for this method needs work. -+.fl -+\fP -+.fi -+\f3¥¿¥°Ì¾¤Ç¤Î¥³¥í¥ó¤Î»ÈÍÑ\fP \- ¥³¥í¥ó(:)¤ò¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ç¥¨¥¹¥±¡¼¥×¤¹¤ë¤È¡¢¥³¥í¥ó¤ò¥¿¥°Ì¾¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤Î¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ÎÃæ¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë»ÈÍѤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ /** -+.fl -+ * @ejb:bean -+.fl -+ */ -+.fl -+\fP -+.fi -+¤³¤Î¥¿¥°¡¦¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-tag ejb\\\\:bean:a:"EJB Bean:" -+.fl -+\fP -+.fi -+\f3¥¿¥°Ì¾¤Î¥¹¥Ú¥ë¥Á¥§¥Ã¥¯(¥¿¥°¤Î̵¸ú²½)\fP \- °ìÉô¤Î³«È¯¼Ô¤¬É¬¤º¤·¤â½ÐÎϤ·¤Ê¤¤¥«¥¹¥¿¥à¡¦¥¿¥°¤ò¥½¡¼¥¹¡¦¥³¡¼¥ÉÆâ¤ËÇÛÃÖ¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢¥½¡¼¥¹¡¦¥³¡¼¥ÉÆâ¤Ë¸ºß¤¹¤ë¤¹¤Ù¤Æ¤Î¥¿¥°¤ò¥ê¥¹¥È¤·¡¢½ÐÎϤ¹¤ë¥¿¥°¤ò͸ú¤Ë¤·¡¢½ÐÎϤ·¤Ê¤¤¥¿¥°¤ò̵¸ú¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\f2X\fP¤ò»ØÄꤹ¤ë¤È¥¿¥°¤Ï̵¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£»ØÄꤷ¤Ê¤¤¤È¡¢¥¿¥°¤Ï͸ú¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢Javadoc¥Ä¡¼¥ë¤Ï¡¢¸¡½Ð¤·¤¿¥¿¥°¤¬ÆþÎϥߥ¹¤Ê¤É¤Ë¤è¤ëÉÔÌÀ¥¿¥°¤Ç¤¢¤ë¤«¤É¤¦¤«¤òÆÃÄê¤Ç¤¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ï·Ù¹ð¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.br -+.br -+¤¹¤Ç¤ËÇÛÃÖ¤µ¤ì¤Æ¤¤¤ëÃͤË\f2X\fP¤òÄɲäǤ¤Þ¤¹¡£¤³¤¦¤·¤Æ¤ª¤±¤Ð¡¢\f2X\fP¤òºï½ü¤¹¤ë¤Î¤ß¤Ç¥¿¥°¤ò͸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢@todo¥¿¥°¤Î½ÐÎϤòÍÞÀ©¤¹¤ë¾ì¹ç¡¢¼¡¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-tag todo:Xcmf:"To Do:" -+.fl -+\fP -+.fi -+¤µ¤é¤Ëñ½ã¤Ê»ØÄêÊýË¡¤â¤¢¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-tag todo:X -+.fl -+\fP -+.fi -+¹½Ê¸\f2\-tag todo:X\fP¤Ï¡¢\f2@todo\fP¤¬¥¿¥°¥ì¥Ã¥È¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Æ¤âµ¡Ç½¤·¤Þ¤¹¡£ -+.br -+.br -+\f3¥¿¥°¤Î½ç½ø\fP \- \f2\-tag\fP (¤ª¤è¤Ó\f2\-taglet\fP)¥ª¥×¥·¥ç¥ó¤Î½ç½ø¤Ë¤è¤Ã¤Æ¡¢¥¿¥°¤Î½ÐÎϽ礬·è¤Þ¤ê¤Þ¤¹¡£¥«¥¹¥¿¥à¡¦¥¿¥°¤Èɸ½à¥¿¥°¤òÁȤ߹礻¤Æ»ÈÍѤ¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£É¸½à¥¿¥°¤Î¥¿¥°¡¦¥ª¥×¥·¥ç¥ó¤Ï¡¢½ç½ø¤ò·èÄꤹ¤ë¤¿¤á¤Î¤ß¤Î¥×¥ì¡¼¥¹¥Û¥ë¥À¤Ç¤¹¡£¤³¤ì¤é¤Ïɸ½à¥¿¥°Ì¾¤Î¤ß¤ò»ÈÍѤ·¤Þ¤¹¡£(ɸ½à¥¿¥°¤Î¾®¸«½Ð¤·¤ÏÊѹ¹¤Ç¤¤Þ¤»¤ó¡£)¤³¤ì¤Ë¤Ä¤¤¤Æ¤Ï¡¢²¼¤ÎÎã¤ÇÀâÌÀ¤·¤Þ¤¹¡£ -+.br -+.br -+\f2\-tag\fP¤¬¤Ê¤¤¾ì¹ç¤Ï¡¢\f2\-taglet\fP¤Î°ÌÃ֤ˤè¤Ã¤Æ¤½¤Î½ç½ø¤¬·è¤Þ¤ê¤Þ¤¹¡£¥¿¥°¤¬Î¾Êý¤È¤â¸ºß¤¹¤ë¾ì¹ç¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÎºÇ¸å¤Ë¤¢¤ëÊý¤¬¤½¤Î½ç½ø¤ò·èÄꤷ¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥¿¥°¤ä¥¿¥°¥ì¥Ã¥È¤¬¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë»ØÄꤵ¤ì¤¿½çÈ֤˽èÍý¤µ¤ì¤ë¤¿¤á¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2\-taglet\fP¤È\f2\-tag\fP¤ÎξÊý¤¬¡Ötodo¡×¤È¤¤¤¦Ì¾Á°¤ò»ý¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÎºÇ¸å¤Ë¤¢¤ëÊý¤¬½ç½ø¤ò·èÄꤷ¤Þ¤¹¡£ -+.br -+.br -+\f3¥¿¥°¤Î´°Á´¥»¥Ã¥È¤ÎÎã\fP \- ¤³¤ÎÎã¤Ç¤Ï¡¢½ÐÎϤΡÖParameters¡×¤È¡ÖThrows¡×¤Î´Ö¤Ë¡ÖTo Do¡×¤òÁÞÆþ¤·¤Þ¤¹¡£¡ÖX¡×¤ò»ÈÍѤ·¤Æ¡¢@example¤¬¡¢¥½¡¼¥¹¡¦¥³¡¼¥ÉÆâ¤Îº£²ó¤Î¼Â¹Ô¤Ç¤Ï½ÐÎϤµ¤ì¤Ê¤¤¥¿¥°¤Ç¤¢¤ë¤³¤È¤ò»ØÄꤷ¤Þ¤¹¡£@argfile¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¡¢°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤ÎÊÌ¡¹¤Î¹Ô¤Ë¥¿¥°¤òÇÛÃ֤Ǥ¤Þ¤¹(¹Ô¤Î·Ñ³¤ò¼¨¤¹Ê¸»ú¤ÏÉÔÍ×)¡£ -+.nf -+\f3 -+.fl -+ \-tag param -+.fl -+ \-tag return -+.fl -+ \-tag todo:a:"To Do:" -+.fl -+ \-tag throws -+.fl -+ \-tag see -+.fl -+ \-tag example:X -+.fl -+\fP -+.fi -+Javadoc¤¬¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥È¤ò²òÀϤ¹¤ëºÝ¤Ë¸¡º÷¤µ¤ì¤¿¥¿¥°¤Î¤¦¤Á¡¢É¸½à¥¿¥°¤Ç¤â¡¢\f2\-tag\fP¤ä\f2\-taglet\fP¤ÇÅϤµ¤ì¤¿¥¿¥°¤Ç¤â¤Ê¤¤¤â¤Î¤Ï¤¹¤Ù¤ÆÉÔÌÀ¥¿¥°¤È¤ß¤Ê¤µ¤ì¡¢·Ù¹ð¤¬¥¹¥í¡¼¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+ɸ½à¥¿¥°¤Ï¡¢ºÇ½é¡¢¥Ç¥Õ¥©¥ë¥È¤Î½ç½ø¤Ç¥ê¥¹¥ÈÆâ¤ËÆâÉôŪ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£\f2\-tag\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¤³¤Î¥ê¥¹¥È¤ËÄɲ䵤ì¤ë¥¿¥°¡¢¤¹¤Ê¤ï¤Áɸ½à¥¿¥°¤¬¥Ç¥Õ¥©¥ë¥È¤Î°ÌÃÖ¤«¤é°ÜÆ°¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢É¸½à¥¿¥°¤Î\f2\-tag\fP¥ª¥×¥·¥ç¥ó¤ò¾Êά¤¹¤ë¤È¡¢¤³¤ì¤é¤Ï¥Ç¥Õ¥©¥ë¥È¤Î°ÌÃÖ¤ËÇÛÃÖ¤µ¤ì¤¿¤Þ¤Þ¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.br -+.br -+\f3¶¥¹ç¤Î²óÈò\fP \- ¸ÇͤÎ̾Á°¶õ´Ö¤òºÙ¤«¤¯Ê¬¤±¤ë¤Ë¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ë\f2com.mycompany.todo\fP¤È¤¤¤¦Ì¾Á°¤Î¤è¤¦¤Ë¡¢¥É¥Ã¥È(.)¤Ç¶èÀÚ¤é¤ì¤¿Ì¾Á°¤ò»ÈÍѤ·¤Þ¤¹¡£Oracle¤Ï¡¢º£¸å¤â̾Á°¤Ë¥É¥Ã¥È¤ò´Þ¤Þ¤Ê¤¤É¸½à¥¿¥°¤òºîÀ®¤·¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤¬ºîÀ®¤·¤¿¥¿¥°¤Ï¡¢Oracle¤¬ÄêµÁ¤¹¤ëƱ¤¸Ì¾Á°¤Î¥¿¥°¤ÎÆ°ºî¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢\f2@todo\fP¤È¤¤¤¦Ì¾Á°¤Î¥¿¥°¤Þ¤¿¤Ï¥¿¥°¥ì¥Ã¥È¤ò¥æ¡¼¥¶¡¼¤¬ºîÀ®¤·¤¿¾ì¹ç¡¢¤½¤Î¸å¤ËOracle¤¬Æ±¤¸Ì¾Á°¤Îɸ½à¥¿¥°¤òºîÀ®¤·¤Æ¤â¡¢¤½¤Î¥¿¥°¤Þ¤¿¤Ï¥¿¥°¥ì¥Ã¥È¤Ï¾ï¤Ë¥æ¡¼¥¶¡¼¤¬ÄêµÁ¤·¤¿¤Î¤ÈƱ¤¸Æ°ºî¤òÊÝ»ý¤·¤Þ¤¹¡£ -+.br -+.br -+\f3Ãí¼ávs. Javadoc¥¿¥°\fP \- °ìÈ̤ˡ¢Äɲ乤ëɬÍפΤ¢¤ë¥Þ¡¼¥¯¥¢¥Ã¥×¤¬¡¢¥É¥¥å¥á¥ó¥È¤Ë±Æ¶Á¤òÍ¿¤¨¤¿¤ê¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤·¤¿¤ê¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¾ì¹ç¡¢¤½¤Î¥Þ¡¼¥¯¥¢¥Ã¥×¤ÏJavadoc¥¿¥°¤Ë¤·¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤ÏÃí¼á¤Ë¤·¤Þ¤¹¡£ -+.na -+\f2Ãí¼á¤ÈJavadoc¥¿¥°¤ÎÈæ³Ó\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#annotations¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+\-taglet¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢¤è¤êÊ£»¨¤Ê¥Ö¥í¥Ã¥¯¡¦¥¿¥°¤ä¥«¥¹¥¿¥à¡¦¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°¤òºîÀ®¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+\-taglet\ \ class -+¤½¤Î¥¿¥°¤Î¥É¥¥å¥á¥ó¥È¤ÎÀ¸À®¤Ë»ÈÍѤ¹¤ë¥É¥Ã¥¯¥ì¥Ã¥È¤òµ¯Æ°¤¹¤ë¤¿¤á¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£\f2¥¯¥é¥¹\fP¤Î´°Á´½¤¾þ̾¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥¿¥°¥ì¥Ã¥È¤Ï¡¢¥«¥¹¥¿¥à¡¦¥¿¥°¤Î¥Æ¥¥¹¥È°ú¿ô¤Î¿ô¤âÄêµÁ¤·¤Þ¤¹¡£¥¿¥°¥ì¥Ã¥È¤Ï¡¢¤³¤ì¤é¤Î°ú¿ô¤ò¼õ¤±ÉÕ¤±¡¢½èÍý¤·¡¢½ÐÎϤòÀ¸À®¤·¤Þ¤¹¡£³°Éô¥É¥¥å¥á¥ó¥È¤È¥µ¥ó¥×¥ë¡¦¥¿¥°¥ì¥Ã¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢¼¡¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RS 3 -+.TP 2 -+o -+.na -+\f2¥¿¥°¥ì¥Ã¥È¤Î³µÍ×\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/taglet/overview.html -+.RE -+¥¿¥°¥ì¥Ã¥È¤Ï¡¢¥Ö¥í¥Ã¥¯¥¿¥°¤Þ¤¿¤Ï¥¤¥ó¥é¥¤¥ó¡¦¥¿¥°¤ÇÊØÍø¤Ç¤¹¡£¥¿¥°¥ì¥Ã¥È¤ÏǤ°Õ¤Î¿ô¤Î°ú¿ô¤ò¤È¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤Þ¤¿¡¢¥Æ¥¥¹¥È¤òÂÀ»ú¤Ë¤¹¤ë¡¢²Õ¾ò½ñ¤¤òºîÀ®¤¹¤ë¡¢¥Æ¥¥¹¥È¤ò¥Õ¥¡¥¤¥ë¤Ë½ñ¤½Ð¤¹¡¢¤½¤Î¾¤Î¥×¥í¥»¥¹¤ò³«»Ï¤¹¤ë¤Ê¤É¤Î¥«¥¹¥¿¥àÆ°ºî¤ò¼ÂÁõ¤Ç¤¤Þ¤¹¡£ -+.br -+.br -+¥¿¥°¥ì¥Ã¥È¤Ç»ØÄê¤Ç¤¤ë¤Î¤Ï¡¢¥¿¥°¤ÎÇÛÃÖ¾ì½ê¤ÈÇÛÃÖ·Á¼°¤Î¤ß¤Ç¤¹¡£¤½¤Î¾¤Î¤¹¤Ù¤Æ¤Î·èÄê¤Ï¡¢¥É¥Ã¥¯¥ì¥Ã¥È¤Ë¤è¤Ã¤Æ¹Ô¤ï¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥¿¥°¥ì¥Ã¥È¤ò»ÈÍѤ·¤Æ¤â¡¢Êñ´Þ¥¯¥é¥¹¤Î¥ê¥¹¥È¤«¤é¥¯¥é¥¹Ì¾¤òºï½ü¤¹¤ë¤Ê¤É¤Î½èÍý¤Ï¼Â¹Ô¤Ç¤¤Þ¤»¤ó¡£¤¿¤À¤·¡¢¥¿¥°¤Î¥Æ¥¥¹¥È¤ò¥Õ¥¡¥¤¥ë¤Ë½ÐÎϤ·¤¿¤ê¡¢ÊÌ¤Î¥×¥í¥»¥¹¤ò¥È¥ê¥¬¡¼¤¹¤ë¤Ê¤É¤ÎÉûºîÍѤÏÆÀ¤é¤ì¤Þ¤¹¡£ -+.br -+.br -+¥¿¥°¥ì¥Ã¥È¤Ø¤Î¥Ñ¥¹¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢\f2\-tagletpath\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£¼¡¤Ë¡¢À¸À®¤µ¤ì¤ë¥Ú¡¼¥¸¤Î¡ÖParameters¡×¤È¡ÖThrows¡×¤Î´Ö¤Ë¡ÖTo Do¡×¥¿¥°¥ì¥Ã¥È¤òÁÞÆþ¤¹¤ëÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-taglet com.sun.tools.doclets.ToDoTaglet -+.fl -+ \-tagletpath /home/taglets -+.fl -+ \-tag return -+.fl -+ \-tag param -+.fl -+ \-tag todo -+.fl -+ \-tag throws -+.fl -+ \-tag see -+.fl -+\fP -+.fi -+¤Þ¤¿¡¢\f2\-taglet\fP¥ª¥×¥·¥ç¥ó¤ò\f2\-tag\fP¥ª¥×¥·¥ç¥ó¤Î¤«¤ï¤ê¤Ë»ÈÍѤ¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¤¬¡¢Æɤߤˤ¯¤¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-tagletpath\ \ tagletpathlist -+taglet¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë(.class)¤ò¸¡º÷¤¹¤ë¤¿¤á¤Î¸¡º÷¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£\f2tagletpathlist\fP¤Ë¤Ï¡¢¥³¥í¥ó(\f2:\fP)¤Ç¶èÀڤäÆÊ£¿ô¤Î¥Ñ¥¹¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Javadoc¥Ä¡¼¥ë¤Ï¡¢»ØÄꤵ¤ì¤¿¥Ñ¥¹°Ê²¼¤Î¤¹¤Ù¤Æ¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£ -+.TP 3 -+\-docfilessubdirs\ -+¡Ö\f2doc\-files\fP¡×¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Ç¥£¡¼¥×¡¦¥³¥Ô¡¼¤ò͸ú¤Ë¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢°¸Àè¤Ë¤Ï¡¢¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤È¤½¤Î¤¹¤Ù¤ÆÆâÍƤ¬ºÆµ¢Åª¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥Ç¥£¥ì¥¯¥È¥ê\f2doc\-files/example/images\fP¤È¤½¤ÎÆâÍƤ¬¤¹¤Ù¤Æ¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£¤³¤³¤Ç¤â¡¢¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ò½ü³°¤¹¤ë»ØÄ꤬²Äǽ¤Ç¤¹¡£ -+.TP 3 -+\-excludedocfilessubdir\ \ name1:name2... -+»ØÄꤵ¤ì¤¿Ì¾Á°¤Î¡Ö\f2doc\-files\fP¡×¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ò¤¹¤Ù¤Æ½ü³°¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢SCCS¤È¤½¤Î¾¤Î¥½¡¼¥¹¡¦¥³¡¼¥ÉÀ©¸æ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Î¥³¥Ô¡¼¤òËɤ®¤Þ¤¹¡£ -+.TP 3 -+\-noqualifier\ \ all\ | \ packagename1:packagename2:... -+½ÐÎϤµ¤ì¤ë¥¯¥é¥¹Ì¾¤ÎÀèƬ¤«¤é¥Ñ¥Ã¥±¡¼¥¸Ì¾(¥Ñ¥Ã¥±¡¼¥¸½¤¾þ»Ò)¤ò¾Êά¤·¤Þ¤¹¡£\f2\-noqualifier\fP¤Î°ú¿ô¤Ï¡¢¡Ö\f2all\fP¡×(¤¹¤Ù¤Æ¤Î¥Ñ¥Ã¥±¡¼¥¸½¤¾þ»Ò¤ò¾Êά)¡¢½¤¾þ»Ò¤È¤·¤Æºï½ü¤¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤Î¥³¥í¥ó¶èÀÚ¤ê¥ê¥¹¥È(¥ï¥¤¥ë¥É¥«¡¼¥É¤â²Ä)¡¢¤Î¤¤¤º¤ì¤«¤È¤Ê¤ê¤Þ¤¹¡£¥¯¥é¥¹¤Þ¤¿¤Ï¥¤¥ó¥¿¥Õ¥§¡¼¥¹Ì¾¤¬É½¼¨¤µ¤ì¤ë°ÌÃÖ¤«¤é¥Ñ¥Ã¥±¡¼¥¸Ì¾¤¬ºï½ü¤µ¤ì¤Þ¤¹¡£ -+.br -+.br -+¼¡¤ÎÎã¤Ç¤Ï¡¢¤¹¤Ù¤Æ¤Î¥Ñ¥Ã¥±¡¼¥¸½¤¾þ»Ò¤ò¾Êά¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-noqualifier all -+.fl -+\fP -+.fi -+¼¡¤ÎÎã¤Ç¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸½¤¾þ»Ò¡Öjava.lang¡×¤ª¤è¤Ó¡Öjava.io¡×¤ò¾Êά¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-noqualifier java.lang:java.io -+.fl -+\fP -+.fi -+¼¡¤ÎÎã¤Ç¤Ï¡¢¡Öjava¡×¤Ç»Ï¤Þ¤ë¥Ñ¥Ã¥±¡¼¥¸½¤¾þ»Ò¤È¡Öcom.sun¡×¤È¤¤¤¦¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸(¡Öjavax¡×¤Ç¤Ï¤Ê¤¤)¤ò¾Êά¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-noqualifier java.*:com.sun.* -+.fl -+\fP -+.fi -+¥Ñ¥Ã¥±¡¼¥¸½¤¾þ»Ò¤¬Á°½Ò¤ÎÆ°ºî¤Ë½¾¤Ã¤Æɽ¼¨¤µ¤ì¤ë¾ì¹ç¡¢Ì¾Á°¤ÏŬÀÚ¤Ëû½Ì¤µ¤ì¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢Ì¾Á°¤¬É½¼¨¤µ¤ì¤ëÊýË¡¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥ë¡¼¥ë¤Ï¡¢\f2\-noqualifier\fP¤ò»ÈÍѤ¹¤ë¤«¤É¤¦¤«¤Ë¤«¤«¤ï¤é¤ºÍ¸ú¤Ç¤¹¡£ -+.TP 3 -+\-notimestamp\ -+¥¿¥¤¥à¥¹¥¿¥ó¥×¤¬ÍÞÀ©¤µ¤ì¤Þ¤¹¡£³Æ¥Ú¡¼¥¸¤ÎÀèƬ¶á¤¯¤Ë¤¢¤ë¡¢À¸À®¤µ¤ì¤¿HTMLÆâ¤ÎHTML¥³¥á¥ó¥È¤Ç¥¿¥¤¥à¥¹¥¿¥ó¥×¤¬±£¤µ¤ì¤Þ¤¹¡£Javadoc¤ò2¤Ä¤Î¥½¡¼¥¹¡¦¥Ù¡¼¥¹¤Ç¼Â¹Ô¤·¡¢¤½¤ì¤é¤ËÂФ·¤Ædiff¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¥¿¥¤¥à¥¹¥¿¥ó¥×¤Ë¤è¤Ã¤Ædiff¤¬È¯À¸¤·¤Ê¤¯¤Ê¤ë¤Î¤ÇÊØÍø¤Ç¤¹(¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Ê¤¤¤È¡¢³Æ¥Ú¡¼¥¸¤Çdiff¤Ë¤Ê¤ê¤Þ¤¹)¡£¥¿¥¤¥à¥¹¥¿¥ó¥×¤Ë¤ÏJavadoc¤Î¥Ð¡¼¥¸¥ç¥óÈֹ椬´Þ¤Þ¤ì¤Æ¤ª¤ê¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ <!\-\- Generated by javadoc (build 1.5.0_01) on Thu Apr 02 14:04:52 IST 2009 \-\-> -+.fl -+\fP -+.fi -+.TP 3 -+\-nocomment\ -+¼çÀâÌÀ¤ª¤è¤Ó¤¹¤Ù¤Æ¤Î¥¿¥°¤ò´Þ¤à¥³¥á¥ó¥ÈËÜʸÁ´ÂΤòÍÞÀ©¤·¡¢Àë¸À¤Î¤ß¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¡¢¸µ¤Ï°Û¤Ê¤ëÌÜŪ¤Î¤¿¤á¤À¤Ã¤¿¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òºÆÍøÍѤ·¡¢¿·¤·¤¤¥×¥í¥¸¥§¥¯¥È¤ÎÁᤤÃʳ¬¤Ç¥¹¥±¥ë¥È¥óHTML¥É¥¥å¥á¥ó¥È¤òºîÀ®¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+\-sourcetab tabLength -+¥½¡¼¥¹Æâ¤Î³Æ¥¿¥Ö¤¬¼è¤ë¶õÇòʸ»ú¤Î¿ô¤ò»ØÄꤷ¤Þ¤¹¡£ -+.RE -+.SH "¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¥Õ¥¡¥¤¥ë" -+.LP -+Javadoc¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤òû¤¯¤·¤¿¤ê´Ê·é¤Ë¤·¤¿¤ê¤¹¤ë¤¿¤á¤Ë¡¢\f2javadoc\fP¥³¥Þ¥ó¥É¤ËÂФ¹¤ë°ú¿ô(\f2\-J\fP¥ª¥×¥·¥ç¥ó¤ò½ü¤¯)¤¬Æþ¤Ã¤¿1¤Ä°Ê¾å¤Î¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤Î¤³¤È¤òÍøÍѤ¹¤ì¤Ð¡¢¤É¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¾å¤Ç¤â¡¢Ç¤°Õ¤ÎŤµ¤Îjavadoc¥³¥Þ¥ó¥É¤òºîÀ®¤Ç¤¤Þ¤¹¡£ -+.LP -+°ú¿ô¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢javac¤Î¥ª¥×¥·¥ç¥ó¤È¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾¤ò¼«Í³¤ËÁȤ߹礻¤Æµ½Ò¤Ç¤¤Þ¤¹¡£¥Õ¥¡¥¤¥ëÆâ¤Î³Æ°ú¿ô¤Ï¡¢¥¹¥Ú¡¼¥¹¤Þ¤¿¤Ï²þ¹Ô¤Ç¶èÀÚ¤ê¤Þ¤¹¡£¥Õ¥¡¥¤¥ë̾¤Ë¶õÇò¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤Î¥Õ¥¡¥¤¥ë̾Á´ÂΤòÆó½Å°úÍÑÉä¤Ç°Ï¤ß¤Þ¤¹¡£ -+.LP -+°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤Î¥Õ¥¡¥¤¥ë̾¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¸«¤¿ÁêÂХѥ¹¤Ë¤Ê¤ê¤Þ¤¹¡£°ú¿ô¥Õ¥¡¥¤¥ë¤Î°ÌÃÖ¤«¤é¸«¤¿ÁêÂХѥ¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤Î¥Õ¥¡¥¤¥ë̾¥ê¥¹¥È¤Ç¤Ï¡¢¥ï¥¤¥ë¥É¥«¡¼¥É(*)¤Ï»ÈÍѤǤ¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢\f2*.java\fP¤È¤Ï»ØÄê¤Ç¤¤Þ¤»¤ó¡£°ú¿ô¥Õ¥¡¥¤¥ëÆâ¤Î°ú¿ô¤Ç\f2@\fPʸ»ú¤ò»ÈÍѤ·¤Æ¡¢Ê£¿ô¤Î¥Õ¥¡¥¤¥ë¤òºÆµ¢Åª¤Ë²ò¼á¤¹¤ë¤³¤È¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤Þ¤¿¡¢\f2\-J\fP¥ª¥×¥·¥ç¥ó¤â¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ïµ¯Æ°¥Ä¡¼¥ë¤ËÅϤµ¤ì¤Þ¤¹¤¬¡¢µ¯Æ°¥Ä¡¼¥ë¤Ç¤Ï°ú¿ô¥Õ¥¡¥¤¥ë¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤«¤é¤Ç¤¹¡£ -+.LP -+Javadoc¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë¡¢³Æ°ú¿ô¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤È¥Õ¥¡¥¤¥ë̾¤ÎÀèƬ¤Ë\f2@\fPʸ»ú¤òÉÕ¤±¤ÆÅϤ·¤Þ¤¹¡£Javadoc¤Ï¡¢\f2@\fPʸ»ú¤Ç»Ï¤Þ¤ë°ú¿ô¤ò¸«¤Ä¤±¤ë¤È¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤ÎÆâÍƤòŸ³«¤·¤Æ°ú¿ô¥ê¥¹¥È¤ËÁÞÆþ¤·¤Þ¤¹¡£ -+.SS -+°ú¿ô¥Õ¥¡¥¤¥ë¤ò1¤Ä»ØÄꤹ¤ëÎã -+.LP -+¼¡¤Î¤è¤¦¤Ë¤·¤Æ¡¢¡Ö\f2argfile\fP¡×¤È¤¤¤¦Ì¾Á°¤Îñ°ì¤Î°ú¿ô¥Õ¥¡¥¤¥ë¤Ë¡¢¤¹¤Ù¤Æ¤ÎJavadoc°ú¿ô¤ò³ÊǼ¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc @argfile\fP -+.fl -+.fi -+.LP -+¤³¤Î°ú¿ô¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¼¡¤ÎÎã¤Ç¼¨¤µ¤ì¤Æ¤¤¤ë2¤Ä¤Î¥Õ¥¡¥¤¥ë¤ÎÆâÍƤòξÊý¤È¤âÆþ¤ì¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.SS -+°ú¿ô¥Õ¥¡¥¤¥ë¤ò2¤Ä»ØÄꤹ¤ëÎã -+.LP -+¼¡¤Î¤è¤¦¤Ë¤·¤Æ¡¢Javadoc¥ª¥×¥·¥ç¥óÍѤË1¤Ä¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Þ¤¿¤Ï¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë̾ÍѤË1¤Ä¤È¤¤¤¦¤è¤¦¤Ë¡¢2¤Ä¤Î°ú¿ô¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤¤Þ¤¹(¤Ê¤ª¡¢¼¡¤Î¥ê¥¹¥È¤Ç¤Ï¹Ô·Ñ³ʸ»ú¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤»¤ó)¡£ -+.LP -+¼¡¤ÎÆâÍƤò´Þ¤à¡¢¡Ö\f2options\fP¡×¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-d docs\-filelist -+.fl -+ \-use -+.fl -+ \-splitindex -+.fl -+ \-windowtitle 'Java SE 7 API Specification' -+.fl -+ \-doctitle 'Java SE 7 API Specification' -+.fl -+ \-header '<b>Java(TM) SE 7</b>' -+.fl -+ \-bottom 'Copyright © 1993\-2011 Oracle and/or its affiliates. All rights reserved.' -+.fl -+ \-group "Core Packages" "java.*" -+.fl -+ \-overview /java/pubs/ws/1.7.0/src/share/classes/overview\-core.html -+.fl -+ \-sourcepath /java/pubs/ws/1.7.0/src/share/classes -+.fl -+\fP -+.fi -+.LP -+¼¡¤ÎÆâÍƤò´Þ¤à¡¢¡Ö\f2packages\fP¡×¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ com.mypackage1 -+.fl -+ com.mypackage2 -+.fl -+ com.mypackage3 -+.fl -+\fP -+.fi -+.LP -+¤½¤Î¸å¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤ÆJavadoc¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc @options @packages\fP -+.fl -+.fi -+.SS -+¥Ñ¥¹ÉÕ¤¤Î°ú¿ô¥Õ¥¡¥¤¥ë¤ÎÎã -+.LP -+°ú¿ô¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¥Ñ¥¹¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢¤½¤Î¥Õ¥¡¥¤¥ëÆâ¤Ë»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë̾¤Ï¡¢¸½ºß¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¸«¤¿ÁêÂХѥ¹¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢²¼¤ÎÎã¤Î¾ì¹ç¤Ï¡¢\f2path1\fP¤ä\f2path2\fP¤«¤é¸«¤¿ÁêÂХѥ¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc @path1/options @path2/packages\fP -+.fl -+.fi -+.SS -+¥ª¥×¥·¥ç¥ó¤Î°ú¿ô¤ÎÎã -+.LP -+¼¡¤Ë¡¢Javadoc¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë°ú¿ô¤Î¤ß¤ò°ú¿ô¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤¹¤ëÎã¤ò¼¨¤·¤Þ¤¹¡£¤³¤³¤Ç¤Ï\f2\-bottom\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£¤½¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ï¡¢Ä¹¤¤°ú¿ô¤ò»ØÄê¤Ç¤¤ë¤«¤é¤Ç¤¹¡£¼¡¤Î¤è¤¦¤Ê¥Æ¥¥¹¥È°ú¿ô¤ò´Þ¤à¡¢¡Ö\f2bottom\fP¡×¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+<font size="\-1"> -+.fl -+ <a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/> -+.fl -+ Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> -+.fl -+ Oracle is a registered trademark of Oracle Corporation and/or its affiliates. -+.fl -+ Other names may be trademarks of their respective owners.</font> -+.fl -+\fP -+.fi -+.LP -+¤½¤Î¸å¡¢¼¡¤Î¤è¤¦¤Ë¤·¤ÆJavadoc¥Ä¡¼¥ë¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-bottom @bottom @packages\fP -+.fl -+.fi -+.LP -+¤¢¤ë¤¤¤Ï¡¢°ú¿ô¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤Ë\f2\-bottom\fP¥ª¥×¥·¥ç¥ó¤òÁȤ߹þ¤ó¤À¸å¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ¼Â¹Ô¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc @bottom @packages\fP -+.fl -+.fi -+.SH "̾Á°" -+¼Â¹Ô -+.SH "Javadoc¤Î¼Â¹Ô" -+.LP -+\f3¥Ð¡¼¥¸¥ç¥óÈÖ¹æ\fP \- Javadoc¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òȽÊ̤¹¤ë¤Ë¤Ï¡¢\f3javadoc \-J\-version\fP¤ò»ÈÍѤ·¤Þ¤¹¡£½ÐÎÏ¥¹¥È¥ê¡¼¥à¤Ë¤Ïɸ½à¥É¥Ã¥¯¥ì¥Ã¥È¤Î¥Ð¡¼¥¸¥ç¥óÈֹ椬´Þ¤Þ¤ì¤Þ¤¹¡£\f2\-quiet\fP¤Ç̵¸ú¤Ë¤Ç¤¤Þ¤¹¡£ -+.LP -+\f3¸ø³«¥×¥í¥°¥é¥à¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹\fP \- Java¸À¸ì¤Çµ½Ò¤µ¤ì¤¿¥×¥í¥°¥é¥à¤«¤éJavadoc¥Ä¡¼¥ë¤òµ¯Æ°¤¹¤ë¤È¤»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï\f2com.sun.tools.javadoc.Main\fP¤Ë¤¢¤ê¤Þ¤¹(Javadoc¤ÏºÆÆþ²Äǽ)¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2ɸ½à¥É¥Ã¥¯¥ì¥Ã¥È\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/standard\-doclet.html#runningprogrammatically¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+\f3¥É¥Ã¥¯¥ì¥Ã¥È¤Î¼Â¹Ô\fP \- ²¼¤ÎÀâÌÀ¤Ï¡¢É¸½àHTML¥É¥Ã¥¯¥ì¥Ã¥È¤ò¸Æ¤Ó½Ð¤¹¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£¥«¥¹¥¿¥à¡¦¥É¥Ã¥¯¥ì¥Ã¥È¤ò¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢\-doclet¤ª¤è¤Ó\-docletpath¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥É¥Ã¥¯¥ì¥Ã¥È¤Î³µÍ×\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/doclet/overview.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.SH "´Êñ¤ÊÎã" -+.LP -+Javadoc¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸Á´ÂΤËÂФ·¤Æ¼Â¹Ô¤¹¤ë¤³¤È¤â¡¢¸Ä¡¹¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¼Â¹Ô¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£³Æ¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Ï¡¢¤½¤ì¤¾¤ì¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ËÂбþ¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê̾¤ò»ý¤Á¤Þ¤¹¡£¼¡¤ÎÎã¤Ç¤Ï¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ï\f2/home/src/java/awt/*.java\fP¤Ë¤¢¤ê¤Þ¤¹¡£À¸À®Àè¥Ç¥£¥ì¥¯¥È¥ê¤Ï\f2/home/html\fP¤Ç¤¹¡£ -+.SS -+1¤Ä°Ê¾å¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î¥É¥¥å¥á¥ó¥È²½ -+.LP -+¥Ñ¥Ã¥±¡¼¥¸¤ò¥É¥¥å¥á¥ó¥È²½¤¹¤ë¤Ë¤Ï¡¢¤½¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë(\f2*.java\fP)¤ò¡¢¤½¤Î¥Ñ¥Ã¥±¡¼¥¸¤ÈƱ¤¸Ì¾Á°¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ë³ÊǼ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Ñ¥Ã¥±¡¼¥¸Ì¾¤¬(\f2java.awt.color\fP¤Î¤è¤¦¤Ë¥É¥Ã¥È¤Ç¶èÀÚ¤é¤ì¤¿)Ê£¿ô¤Î¼±Ê̻Ҥ«¤é¹½À®¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¸å³¤Î³Æ¼±Ê̻Ҥ¬²¼°Ì¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê(\f2java/awt/color\fP¤Ê¤É)¤ËÂбþ¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£1¤Ä¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î¤¿¤á¤ÎÊ£¿ô¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¡¢°Û¤Ê¤ë¾ì½ê¤Ë¤¢¤ë¤½¤Î¤è¤¦¤Ê2¤Ä¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¦¥Ä¥ê¡¼¤Ëʬ¤±¤Æ³ÊǼ¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹(\f2src1/java/awt/color\fP¤ä\f2src2/java/awt/color\fP¤Ê¤É)¡£¤¿¤À¤·¡¢¤½¤Î¾ì¹ç¤Ï\f2\-sourcepath\fP¤Ë¤è¤Ã¤Æ¤½¤ÎξÊý¤Î¾ì½ê¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+Javadoc¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¢\f2cd\fP¤ò»ÈÍѤ·¤Æ¥Ç¥£¥ì¥¯¥È¥ê¤òÊѹ¹¤¹¤ë¤«¡¢\f2\-sourcepath\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£¼¡¤ÎÎã¤Ç¤Ï¡¢Î¾Êý¤ÎÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f3¥±¡¼¥¹1 \- 1¤Ä°Ê¾å¤Î¥Ñ¥Ã¥±¡¼¥¸¤«¤é¤Îµ¯Æ°¤òºÆµ¢Åª¤Ë¼Â¹Ô\fP \- ¤³¤ÎÎã¤Ç¤ÏJavadoc¤¬Ç¤°Õ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¼Â¹Ô¤Ç¤¤ë¤è¤¦¤Ë¡¢\-sourcepath¤ò»ÈÍѤ·¡¢ºÆµ¢Åª½èÍý¤Î¤¿¤á¤Ë\-subpackages(1.4¤Î¿·¥ª¥×¥·¥ç¥ó)¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤ì¤Ï¡¢\f2java\fP¥Ç¥£¥ì¥¯¥È¥ê¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤ò¤¿¤É¤ê¤Þ¤¹¤¬¡¢\f2java.net\fP¤È\f2java.lang\fP¤ò¥ë¡¼¥È¤Ë»ý¤Ä¥Ñ¥Ã¥±¡¼¥¸¤Ï½ü³°¤µ¤ì¤Þ¤¹¡£\f2java.lang\fP¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤Ç¤¢¤ë\f2java.lang.ref\fP¤¬½ü³°¤µ¤ì¤ëÅÀ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \fP\f3\-d\fP\f3 /home/html \fP\f3\-sourcepath\fP\f3 /home/src \fP\f3\-subpackages\fP\f3 java \fP\f3\-exclude\fP\f3 java.net:java.lang\fP -+.fl -+.fi -+.LP -+¤Þ¤¿¡¢Â¾¤Î¥Ñ¥Ã¥±¡¼¥¸¡¦¥Ä¥ê¡¼¤ò²¼Êý¤Ë¤¿¤É¤ë¤Ë¤Ï¡¢\f2java:javax:org.xml.sax\fP¤Î¤è¤¦¤Ë¡¢¤½¤ì¤é¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î̾Á°¤ò\f2\-subpackages\fP¤Î°ú¿ô¤ËÄɲä·¤Þ¤¹¡£ -+.TP 2 -+o -+\f3¥±¡¼¥¹2 \- ¥ë¡¼¥È¡¦¥½¡¼¥¹¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ü¤Ã¤Æ¤«¤éÌÀ¼¨Åª¤Ê¥Ñ¥Ã¥±¡¼¥¸¤ËÂФ·¤Æ¼Â¹Ô\fP \- ´°Á´½¤¾þ¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Î¿Æ¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ü¤ê¤Þ¤¹¡£¼¡¤Ë¡¢¥É¥¥å¥á¥ó¥È²½¤¹¤ë1¤Ä°Ê¾å¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î̾Á°¤ò»ØÄꤷ¤ÆJavadoc¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3cd /home/src/\fP -+.fl -+ % \f3javadoc \-d /home/html java.awt java.awt.event\fP -+.fl -+.fi -+.TP 2 -+o -+\f3¥±¡¼¥¹3 \- 1¤Ä¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¦¥Ä¥ê¡¼Æâ¤Ë¤¢¤ëÌÀ¼¨Åª¤Ê¥Ñ¥Ã¥±¡¼¥¸¤ËÂФ·¤ÆǤ°Õ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¼Â¹Ô\fP \- ¤³¤Î¥±¡¼¥¹¤Ç¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤¬¤É¤³¤Ç¤¢¤Ã¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ºÇ¾å°Ì¥Ñ¥Ã¥±¡¼¥¸¤Î¿Æ¥Ç¥£¥ì¥¯¥È¥ê¤ò\f2\-sourcepath\fP¤Ë»ØÄꤷ¡¢¥É¥¥å¥á¥ó¥È²½¤¹¤ë1¤Ä°Ê¾å¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ò»ØÄꤷ¤ÆJavadoc¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-d /home/html \-sourcepath /home/src java.awt java.awt.event\fP -+.fl -+.fi -+.TP 2 -+o -+\f3¥±¡¼¥¹4 \- Ê£¿ô¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¦¥Ä¥ê¡¼Æâ¤Ë¤¢¤ëÌÀ¼¨Åª¤Ê¥Ñ¥Ã¥±¡¼¥¸¤ËÂФ·¤ÆǤ°Õ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¼Â¹Ô\fP \- ¤³¤ì¤Ï¥±¡¼¥¹3¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢¥Ñ¥Ã¥±¡¼¥¸¤¬Ê£¿ô¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¦¥Ä¥ê¡¼¤Ë¸ºß¤·¤Þ¤¹¡£¤½¤ì¤¾¤ì¤Î¥Ä¥ê¡¼¤Î¥ë¡¼¥È¤Ø¤Î¥Ñ¥¹¤ò\f2\-sourcepath\fP¤Ë»ØÄꤷ(¥³¥í¥ó¤Ç¶èÀÚ¤ë)¡¢¥É¥¥å¥á¥ó¥È²½¤¹¤ë1¤Ä°Ê¾å¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ò»ØÄꤷ¤ÆJavadoc¤ò¼Â¹Ô¤·¤Þ¤¹¡£1¤Ä¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î¤¹¤Ù¤Æ¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬¡¢1¤Ä¤Î¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤Ë¸ºß¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¥½¡¼¥¹¡¦¥Ñ¥¹¤È¤·¤Æ»ØÄꤵ¤ì¤¿¾ì½ê¤Î¤É¤³¤«¤Ç¸«¤Ä¤«¤ì¤Ð½½Ê¬¤Ç¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-d /home/html \-sourcepath /home/src1:/home/src2 java.awt java.awt.event\fP -+.fl -+.fi -+.RE -+.LP -+·ë²Ì: ¤¹¤Ù¤Æ¤Î¥±¡¼¥¹¤Ç\f2java.awt\fP¤ª¤è¤Ó\f2java.awt.event\fP¥Ñ¥Ã¥±¡¼¥¸Æâ¤Îpublic¤ª¤è¤Óprotected¥¯¥é¥¹¤È¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë¤Ä¤¤¤Æ¡¢HTML·Á¼°¤Î¥É¥¥å¥á¥ó¥È¤¬À¸À®¤µ¤ì¡¢»ØÄꤵ¤ì¤¿À¸À®Àè¥Ç¥£¥ì¥¯¥È¥ê(\f2/home/html\fP)¤ËHTML¥Õ¥¡¥¤¥ë¤¬Êݸ¤µ¤ì¤Þ¤¹¡£2¤Ä°Ê¾å¤Î¥Ñ¥Ã¥±¡¼¥¸¤¬À¸À®¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¥É¥¥å¥á¥ó¥È¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¤Î¥ê¥¹¥È¡¢¥¯¥é¥¹¤Î¥ê¥¹¥È¡¢¤ª¤è¤Ó¥á¥¤¥ó¤Î¥¯¥é¥¹¡¦¥Ú¡¼¥¸¤È¤¤¤¦3¤Ä¤ÎHTML¥Õ¥ì¡¼¥à¤ò»ý¤Ä¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.SS -+1¤Ä°Ê¾å¤Î¥¯¥é¥¹¤Î¥É¥¥å¥á¥ó¥È²½ -+.LP -+¤Þ¤¿¡¢1¤Ä°Ê¾å¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë(\f2.java\fP)¤òÅϤ·¤Æ¡¢Javadoc¥Ä¡¼¥ë¤ò¼Â¹Ô¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£Javadoc¤Ï¡¢¼¡¤Î2¤Ä¤ÎÊýË¡¤Î¤¤¤º¤ì¤«¤Ç¼Â¹Ô¤Ç¤¤Þ¤¹¡£1¤Ä¤Ï\f2cd\fP¤ò»ÈÍѤ·¤Æ¥Ç¥£¥ì¥¯¥È¥ê¤òÊѹ¹¤¹¤ëÊýË¡¡¢¤â¤¦1¤Ä¤Ï\f2.java\fP¥Õ¥¡¥¤¥ë¤Ø¤Î¥Ñ¥¹¤ò´°Á´¤Ë»ØÄꤹ¤ëÊýË¡¤Ç¤¹¡£ÁêÂХѥ¹¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òµ¯ÅÀ¤È¤·¤Þ¤¹¡£¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÅϤ¹¤È¤¤Ï¡¢\f2\-sourcepath\fP¥ª¥×¥·¥ç¥ó¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£¥¢¥¹¥¿¥ê¥¹¥¯(*)¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ï¥¤¥ë¥É¥«¡¼¥É¤ò»ÈÍѤ¹¤ë¤È¡¢¥¯¥é¥¹¤Î¥°¥ë¡¼¥×¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f3¥±¡¼¥¹1 \- ¥½¡¼¥¹¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ü¤ë\fP \- \f2.java\fP¥Õ¥¡¥¤¥ë¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ü¤ê¤Þ¤¹¡£¼¡¤Ë¡¢¥É¥¥å¥á¥ó¥È²½¤¹¤ë1¤Ä°Ê¾å¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î̾Á°¤ò»ØÄꤷ¤ÆJavadoc¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3cd /home/src/java/awt\fP -+.fl -+ % \f3javadoc \-d /home/html Button.java Canvas.java Graphics*.java\fP -+.fl -+.fi -+¤³¤ÎÎã¤Ç¤Ï¡¢\f2Button\fP¥¯¥é¥¹¤È\f2Canvas\fP¥¯¥é¥¹¡¢¤ª¤è¤Ó̾Á°¤¬\f2Graphics\fP¤Ç»Ï¤Þ¤ë¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¡¢HTML·Á¼°¤Î¥É¥¥å¥á¥ó¥È¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Ç¤Ï¤Ê¤¯¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤¬Javadoc¤Ë°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¥É¥¥å¥á¥ó¥È¤Ï¡¢¥¯¥é¥¹¤Î¥ê¥¹¥È¤È¥á¥¤¥ó¡¦¥Ú¡¼¥¸¤È¤¤¤¦2¤Ä¤Î¥Õ¥ì¡¼¥à¤ò»ý¤Ä¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\f3¥±¡¼¥¹2 \- ¥Ñ¥Ã¥±¡¼¥¸¤Î¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ü¤ë\fP \- ¤³¤ì¤Ï¡¢Æ±¤¸¥ë¡¼¥ÈÆâ¤Ë¤¢¤ëÊ£¿ô¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸¤Î¸Ä¡¹¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¥É¥¥å¥á¥ó¥È²½¤¹¤ë¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£¥Ñ¥Ã¥±¡¼¥¸¤Î¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ü¤ê¡¢³Æ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¡¢¥ë¡¼¥È¤«¤é¤Î¥Ñ¥¹¤È¤È¤â¤Ë»ØÄꤷ¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3cd /home/src/\fP -+.fl -+ % \f3javadoc \-d /home/html java/awt/Button.java java/applet/Applet.java\fP -+.fl -+.fi -+¤³¤ÎÎã¤Ç¤Ï¡¢\f2Button\fP¥¯¥é¥¹¤ª¤è¤Ó\f2Applet\fP¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¡¢HTML·Á¼°¤Î¥É¥¥å¥á¥ó¥È¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.TP 2 -+o -+\f3¥±¡¼¥¹3 \- Ǥ°Õ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é\fP \- ¤³¤Î¥±¡¼¥¹¤Ç¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤¬¤É¤³¤Ç¤¢¤Ã¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£¥É¥¥å¥á¥ó¥È²½¤¹¤ë\f2.java\fP¥Õ¥¡¥¤¥ë¤Ø¤ÎÀäÂХѥ¹(¤Þ¤¿¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¤ÎÁêÂХѥ¹)¤ò»ØÄꤷ¤ÆJavadoc¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-d /home/html /home/src/java/awt/Button.java /home/src/java/awt/Graphics*.java\fP -+.fl -+.fi -+¤³¤ÎÎã¤Ç¤Ï¡¢\f2Button\fP¥¯¥é¥¹¡¢¤ª¤è¤Ó̾Á°¤¬\f2Graphics\fP¤Ç»Ï¤Þ¤ë¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¡¢HTML·Á¼°¤Î¥É¥¥å¥á¥ó¥È¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.RE -+.SS -+¥Ñ¥Ã¥±¡¼¥¸¤È¥¯¥é¥¹¤Î¥É¥¥å¥á¥ó¥È²½ -+.LP -+¥Ñ¥Ã¥±¡¼¥¸Á´ÂΤȸġ¹¤Î¥¯¥é¥¹¤òƱ»þ¤Ë»ØÄꤷ¤Æ¥É¥¥å¥á¥ó¥È²½¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¼¡¤Ë¡¢Á°½Ò¤Î2¤Ä¤ÎÎã¤òÁȤ߹礻¤¿Îã¤ò¼¨¤·¤Þ¤¹¡£\f2\-sourcepath\fP¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¤Ø¤Î¥Ñ¥¹¤ËÂФ·¤Æ¤Ï»ÈÍѤǤ¤Þ¤¹¤¬¡¢¸Ä¡¹¤Î¥¯¥é¥¹¤Ø¤Î¥Ñ¥¹¤ËÂФ·¤Æ¤Ï»ÈÍѤǤ¤Þ¤»¤ó¡£ -+.nf -+\f3 -+.fl -+ % \fP\f3javadoc \-d /home/html \-sourcepath /home/src java.awt /home/src/java/applet/Applet.java\fP -+.fl -+.fi -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢\f2java.awt\fP¥Ñ¥Ã¥±¡¼¥¸¤ª¤è¤Ó\f2Applet\fP¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¡¢HTML·Á¼°¤Î¥É¥¥å¥á¥ó¥È¤¬À¸À®¤µ¤ì¤Þ¤¹¡£(Javadoc¥Ä¡¼¥ë¤Ï¡¢\f2Applet.java\fP¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ëÆâ¤Ë¥Ñ¥Ã¥±¡¼¥¸Àë¸À¤¬¤¢¤ì¤Ð¡¢¤½¤ÎÀë¸À¤Ë´ð¤Å¤¤¤Æ\f2Applet\fP¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òȽÊ̤·¤Þ¤¹¡£) -+.SH "»ÈÍÑÎã" -+.LP -+Javadoc¥Ä¡¼¥ë¤Ë¤Ï¿¤¯¤ÎÊØÍø¤Ê¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¡¢¤½¤ÎÃæ¤Ë¤Ï¾¤Î¥ª¥×¥·¥ç¥ó¤è¤ê¤âÉÑÈˤ˻ÈÍѤµ¤ì¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£¤³¤³¤Ç¾Ò²ð¤¹¤ë¤Î¤Ï¡¢Java¥×¥é¥Ã¥È¥Õ¥©¡¼¥àAPI¤ËÂФ·¤ÆJavadoc¥Ä¡¼¥ë¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë»ÈÍѤ¹¤ë¼ÂºÝ¤Î¥³¥Þ¥ó¥É¤Ç¤¹¡£Java SE Platform, Standard Edition, v1.2¤Ë¸ºß¤¹¤ë¡¢Ìó1500¸Ä¤Îpublic¤ª¤è¤Óprotected¥¯¥é¥¹¤Î¥É¥¥å¥á¥ó¥È¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë¡¢180MB¤Î¥á¥â¥ê¡¼¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+Ʊ¤¸Îã¤ò2²ó·ÇºÜ¤·¤Þ¤¹¡£ºÇ½é¤ÎÎã¤Ï¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é¼Â¹Ô¤¹¤ë¤â¤Î¤Ç¡¢2ÈÖÌܤÎÎã¤ÏMakefile¤«¤é¼Â¹Ô¤¹¤ë¤â¤Î¤Ç¤¹¡£¥ª¥×¥·¥ç¥ó¤Î°ú¿ô¤ÇÀäÂХѥ¹¤¬»ÈÍѤµ¤ì¤Æ¤¤¤ë¤¿¤á¡¢Ç¤°Õ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤éƱ¤¸\f2javadoc\fP¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤Ç¤¤Þ¤¹¡£ -+.SS -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÎÎã -+.LP -+¼¡¤ÎÎã¤Ï¡¢DOS¤Ê¤É¤Î°ìÉô¤Î¥·¥§¥ë¤Ë¤ÏŤ¹¤®¤Þ¤¹¡£¤³¤ÎÀ©¸Â¤ò²óÈò¤¹¤ë¤Ë¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤Þ¤¹¡£¤Þ¤¿¤Ï¡¢¥·¥§¥ë¡¦¥¹¥¯¥ê¥×¥È¤òµ½Ò¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+% javadoc \-sourcepath /java/jdk/src/share/classes \\ -+.fl -+ \-overview /java/jdk/src/share/classes/overview.html \\ -+.fl -+ \-d /java/jdk/build/api \\ -+.fl -+ \-use \\ -+.fl -+ \-splitIndex \\ -+.fl -+ \-windowtitle 'Java Platform, Standard Edition 7 API Specification' \\ -+.fl -+ \-doctitle 'Java Platform, Standard Edition 7 API Specification' \\ -+.fl -+ \-header '<b>Java(TM) SE 7</b>' \\ -+.fl -+ \-bottom '<font size="\-1"> -+.fl -+ <a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/> -+.fl -+ Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> -+.fl -+ Oracle is a registered trademark of Oracle Corporation and/or its affiliates. -+.fl -+ Other names may be trademarks of their respective owners.</font>' \\ -+.fl -+ \-group "Core Packages" "java.*:com.sun.java.*:org.omg.*" \\ -+.fl -+ \-group "Extension Packages" "javax.*" \\ -+.fl -+ \-J\-Xmx180m \\ -+.fl -+ @packages -+.fl -+\fP -+.fi -+.LP -+¤³¤³¤Ç¡¢\f2packages\fP¤Ï¡¢½èÍýÂоݤΥѥ屡¼¥¸Ì¾(\f2java.applet java.lang\fP¤Ê¤É)¤¬Æþ¤Ã¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ç¤¹¡£³Æ¥ª¥×¥·¥ç¥ó¤Î¡¢°ì½Å°úÍÑÉä¤Ç°Ï¤Þ¤ì¤¿°ú¿ô¤ÎÆ⦤ˤϡ¢²þ¹Ôʸ»ú¤òÁÞÆþ¤Ç¤¤Þ¤»¤ó¡£(¤¿¤È¤¨¤Ð¡¢¤³¤ÎÎã¤ò¥³¥Ô¡¼&¥Ú¡¼¥¹¥È¤¹¤ë¾ì¹ç¤Ï¡¢\f2\-bottom\fP¥ª¥×¥·¥ç¥ó¤«¤é²þ¹Ôʸ»ú¤òºï½ü¤·¤Æ¤¯¤À¤µ¤¤¡£)¤µ¤é¤Ë¡¢²¼¤Î¡ÖÃí°Õ¡×¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.SS -+Makefile¤ÎÎã -+.LP -+¤³¤³¤Ç¤Ï¡¢GNU Makefile¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£Windows¤ÎMakefile¤ÎÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢ -+.na -+\f2Windows¤ÎMakefile¤ÎºîÀ®ÊýË¡\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137483.html#makefiles¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.nf -+\f3 -+.fl -+javadoc \-\fP\f3sourcepath\fP\f3 $(SRCDIR) \\ /* Sets path for source files */ -+.fl -+ \-\fP\f3overview\fP\f3 $(SRCDIR)/overview.html \\ /* Sets file for overview text */ -+.fl -+ \-\fP\f3d\fP\f3 /java/jdk/build/api \\ /* Sets destination directory */ -+.fl -+ \-\fP\f3use\fP\f3 \\ /* Adds "Use" files */ -+.fl -+ \-\fP\f3splitIndex\fP\f3 \\ /* Splits index A\-Z */ -+.fl -+ \-\fP\f3windowtitle\fP\f3 $(WINDOWTITLE) \\ /* Adds a window title */ -+.fl -+ \-\fP\f3doctitle\fP\f3 $(DOCTITLE) \\ /* Adds a doc title */ -+.fl -+ \-\fP\f3header\fP\f3 $(HEADER) \\ /* Adds running header text */ -+.fl -+ \-\fP\f3bottom\fP\f3 $(BOTTOM) \\ /* Adds text at bottom */ -+.fl -+ \-\fP\f3group\fP\f3 $(GROUPCORE) \\ /* 1st subhead on overview page */ -+.fl -+ \-\fP\f3group\fP\f3 $(GROUPEXT) \\ /* 2nd subhead on overview page */ -+.fl -+ \-\fP\f3J\fP\f3\-Xmx180m \\ /* Sets memory to 180MB */ -+.fl -+ java.lang java.lang.reflect \\ /* Sets packages to document */ -+.fl -+ java.util java.io java.net \\ -+.fl -+ java.applet -+.fl -+ -+.fl -+WINDOWTITLE = 'Java(TM) SE 7 API Specification' -+.fl -+DOCTITLE = 'Java(TM) Platform Standard Edition 7 API Specification' -+.fl -+HEADER = '<b>Java(TM) SE 7</font>' -+.fl -+BOTTOM = '<font size="\-1"> -+.fl -+ <a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/> -+.fl -+ Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> -+.fl -+ Oracle is a registered trademark of Oracle Corporation and/or its affiliates. -+.fl -+ Other names may be trademarks of their respective owners.</font>' -+.fl -+GROUPCORE = '"Core Packages" "java.*:com.sun.java.*:org.omg.*"' -+.fl -+GROUPEXT = '"Extension Packages" "javax.*"' -+.fl -+SRCDIR = '/java/jdk/1.7.0/src/share/classes' -+.fl -+\fP -+.fi -+.LP -+Makefile¤Î°ú¿ô¤Ï¡¢°ì½Å°úÍÑÉä¤Ç°Ï¤ß¤Þ¤¹¡£ -+.LP -+\f3Ãí°Õ\fP -+.RS 3 -+.TP 2 -+o -+\f2\-windowtitle\fP¥ª¥×¥·¥ç¥ó¤ò¾Êά¤¹¤ë¤È¡¢Javadoc¥Ä¡¼¥ë¤Ë¤è¤Ã¤Æ¥É¥¥å¥á¥ó¥È¡¦¥¿¥¤¥È¥ë¤¬¥¦¥£¥ó¥É¥¦¡¦¥¿¥¤¥È¥ë¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£\f2\-windowtitle\fP¤Î¥Æ¥¥¹¥È¤Ï¡¢´ðËÜŪ¤Ë\f2\-doctitle\fP¤ÈƱ¤¸¤Ç¤¹¡£¤¿¤À¤·¡¢HTML¥¿¥°¤Ï´Þ¤Þ¤ì¤Þ¤»¤ó¡£¤³¤ì¤Ï¡¢HTML¥¿¥°¤¬¡¢¥¦¥£¥ó¥É¥¦¡¦¥¿¥¤¥È¥ëÆâ¤Ë¤½¤Î¤Þ¤Þ¤Î¥Æ¥¥¹¥È¤È¤·¤Æɽ¼¨¤µ¤ì¤ë¤Î¤òËɤ°¤¿¤á¤Ç¤¹¡£. -+.TP 2 -+o -+¤³¤ÎÎã¤Î¤è¤¦¤Ë\f2\-footer\fP¥ª¥×¥·¥ç¥ó¤ò¾Êά¤¹¤ë¤È¡¢Javadoc¥Ä¡¼¥ë¤Ë¤è¤Ã¤Æ¥Ø¥Ã¥À¡¼¡¦¥Æ¥¥¹¥È¤¬¥Õ¥Ã¥¿¡¼¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ -+.TP 2 -+o -+¤³¤ÎÎã¤Ç¤ÏɬÍפ¢¤ê¤Þ¤»¤ó¤¬¡¢\f2\-classpath\fP¤È\f2\-link\fP¤â½ÅÍפʥª¥×¥·¥ç¥ó¤Ç¤¹¡£ -+.RE -+.SH "¥È¥é¥Ö¥ë¥·¥å¡¼¥Æ¥£¥ó¥°" -+.SS -+°ìÈÌŪ¤Ê¥È¥é¥Ö¥ë¥·¥å¡¼¥Æ¥£¥ó¥° -+.RS 3 -+.TP 2 -+o -+\f3Javadoc¤ÎFAQ\fP \- °ìÈÌŪ¤Ê¥Ð¥°¤ª¤è¤Ó¥È¥é¥Ö¥ë¥·¥å¡¼¥Æ¥£¥ó¥°¤Î¥Ò¥ó¥È¤Ï¡¢ -+.na -+\f2Javadoc¤ÎFAQ\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137483.html¤Ç»²¾È¤Ç¤¤Þ¤¹¡£ -+.TP 2 -+o -+\f3¥Ð¥°¤ª¤è¤ÓÀ©¸Â»ö¹à\fP \- ¥Ð¥°¤Î°ìÉô¤Ï¡¢¥Ð¥°½¤Àµ¤ª¤è¤ÓÊѹ¹¤Î¥¤¥ó¥Ý¡¼¥È¤Ç¤â»²¾È¤Ç¤¤Þ¤¹¡£ -+.TP 2 -+o -+\f3¥Ð¡¼¥¸¥ç¥óÈÖ¹æ\fP \- ¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 2 -+o -+\f3͸ú¤Ê¥¯¥é¥¹¤Î¤ß¤ò¥É¥¥å¥á¥ó¥È²½\fP \- ¥Ñ¥Ã¥±¡¼¥¸¤ò¥É¥¥å¥á¥ó¥È²½¤¹¤ë¤È¤¡¢Javadoc¤Ï¡¢Ì¾Á°¤¬Í¸ú¤Ê¥¯¥é¥¹Ì¾¤Ç¹½À®¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Î¤ß¤òÆɤ߹þ¤ß¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥Õ¥¡¥¤¥ë̾¤Ë¥Ï¥¤¥Õ¥ó¡Ö\-¡×¤ò´Þ¤á¤ë¤³¤È¤Ç¡¢Javadoc¤Ë¤è¤ë¥Õ¥¡¥¤¥ë¤Î²òÀϤòËɤ°¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.RE -+.SS -+¥¨¥é¡¼¤È·Ù¹ð -+.LP -+¥¨¥é¡¼¤ª¤è¤Ó·Ù¹ð¥á¥Ã¥»¡¼¥¸¤Ë¤Ï¡¢¥Õ¥¡¥¤¥ë̾¤ÈÀë¸À¹Ô(¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¡¦¥³¥á¥ó¥ÈÆâ¤ÎÆÃÄê¤Î¹Ô¤Ç¤Ï¤Ê¤¤)¤Î¹ÔÈֹ椬´Þ¤Þ¤ì¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+¡Ö\f2¥¨¥é¡¼: Class1.java¤òÆɤ߹þ¤á¤Þ¤»¤ó\fP¡×: Javadoc¥Ä¡¼¥ë¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËClass1.java¥¯¥é¥¹¤ò¥í¡¼¥É¤·¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹¡£ÀäÂХѥ¹¤Þ¤¿¤ÏÁêÂХѥ¹¤È¤È¤â¤Ëɽ¼¨¤µ¤ì¤ë¥¯¥é¥¹Ì¾¤Ï¡¢¤³¤ÎÎã¤Î¾ì¹ç\f2./Class1.java\fP¤ÈƱ¤¸¤Ç¤¹¡£ -+.RE -+.SH "´Ä¶" -+.RS 3 -+.TP 3 -+CLASSPATH -+Javadoc¤¬¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¹¤Î¥Õ¥¡¥¤¥ë¤òõ¤¹¤È¤¤Ë»ÈÍѤ¹¤ë¥Ñ¥¹¤ò»ØÄꤹ¤ë´Ä¶ÊÑ¿ô¤Ç¤¹¡£¤³¤Î´Ä¶ÊÑ¿ô¤Ï¡¢\f2\-classpath\fP¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¥ª¡¼¥Ð¡¼¥é¥¤¥É¤µ¤ì¤Þ¤¹¡£¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥³¥í¥ó¤Ç¶èÀÚ¤ê¤Þ¤¹¡£ -+.:/home/classes:/usr/local/java/classes -+.RE -+.SH "´ØÏ¢¹àÌÜ" -+.RS 3 -+.TP 2 -+o -+javac(1) -+.TP 2 -+o -+java(1) -+.TP 2 -+o -+jdb(1) -+.TP 2 -+o -+javah(1) -+.TP 2 -+o -+javap(1) -+.TP 2 -+o -+.na -+\f2Javadoc¤Î¥Û¡¼¥à¡¦¥Ú¡¼¥¸\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-jsp\-135444.html -+.TP 2 -+o -+.na -+\f2How to Write Doc Comments for Javadoc\fP @ -+.fi -+http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html -+.TP 2 -+o -+.na -+\f2¥¯¥é¥¹¡¦¥Ñ¥¹¤ÎÀßÄê\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#general -+.TP 2 -+o -+.na -+\f2javac¤Èjavadoc¤¬¥¯¥é¥¹¤ò¸¡º÷¤¹¤ëÊýË¡\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/findingclasses.html#srcfiles(tools.jar) -+.RE -+ ---- jdk/src/bsd/doc/man/ja/javah.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/javah.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,120 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH javah 1 "07 May 2011" -+.TH javah 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+javah \- C¥Ø¥Ã¥À¡¼¤È¥¹¥¿¥Ö¡¦¥Õ¥¡¥¤¥ë¡¦¥¸¥§¥Í¥ì¡¼¥¿ -+.LP -+.LP -+\f3javah\fP¤Ï¡¢Java¥¯¥é¥¹¤«¤éC¥Ø¥Ã¥À¡¼¡¦¥Õ¥¡¥¤¥ë¤ÈC¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹¡£¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢Java¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ç½ñ¤«¤ì¤¿¥³¡¼¥É¤È¡¢C¤Ê¤É¤Î¤½¤Î¾¤Î¸À¸ì¤Ç½ñ¤«¤ì¤¿¥³¡¼¥É¤òÀܳ¤·¡¢¥³¡¼¥É¤¬Áê¸ß¤ËºîÍѤ¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+javah [ \fP\f3options\fP\f3 ] fully\-qualified\-classname. . . -+.fl -+\fP -+.fi -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3javah\fP¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¡¦¥á¥½¥Ã¥É¤ò¼ÂÁõ¤¹¤ë¤¿¤á¤ËɬÍפÊC¥Ø¥Ã¥À¡¼¤È¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ºîÀ®¤µ¤ì¤¿¥Ø¥Ã¥À¡¼¤È¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¡¦¥½¡¼¥¹¡¦¥³¡¼¥É¤«¤é¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤ò»²¾È¤¹¤ë¤¿¤á¤ËC¥×¥í¥°¥é¥à¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£.h¥Õ¥¡¥¤¥ë¤Ï¡¢Âбþ¤¹¤ë¥¯¥é¥¹¤È°ìÃפ¹¤ëÇÛÃÖ¤ò»ý¤Ä¹½Â¤ÂÎÄêµÁ¤ò´Þ¤ß¤Þ¤¹¡£¹½Â¤ÂΤΥե£¡¼¥ë¥É¤Ï¡¢¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤ËÂбþ¤·¤Þ¤¹¡£ -+.LP -+.LP -+¥Ø¥Ã¥À¡¼¡¦¥Õ¥¡¥¤¥ë¤È¤½¤ÎÃæ¤ÇÀë¸À¤µ¤ì¤ë¹½Â¤ÂΤÎ̾Á°¤Ï¥¯¥é¥¹¤Î̾Á°¤«¤éÇÉÀ¸¤·¤Þ¤¹¡£\f3javah\fP¤ËÅϤµ¤ì¤ë¥¯¥é¥¹¤¬¥Ñ¥Ã¥±¡¼¥¸¤ÎÃæ¤Ë¤¢¤ë¾ì¹ç¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Ï¥Ø¥Ã¥À¡¼¡¦¥Õ¥¡¥¤¥ë̾¤È¹½Â¤ÂÎ̾¤ÎξÊý¤ËÉղ䵤ì¤Þ¤¹¡£²¼Àþ(_)¤¬Ì¾Á°¤Î¶èÀÚ¤êʸ»ú¤È¤·¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï\f3javah\fP¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¥ê¥¹¥È¤µ¤ì¤ë³Æ¥¯¥é¥¹¤Î¥Ø¥Ã¥À¡¼¡¦¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥Õ¥¡¥¤¥ë¤òÃÖ¤¤Þ¤¹¡£¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤Ë¤Ï¡¢\f2\-stubs\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£1¤Ä¤Î¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¡¢¥ê¥¹¥È¤µ¤ì¤¿¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤Î·ë²Ì¤òÏ¢·ë¤¹¤ë¤Ë¤Ï¡¢\f2\-o\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+¿·¤·¤¤¥Í¥¤¥Æ¥£¥Ö¡¦¥á¥½¥Ã¥É¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤¢¤ëJava Native Interface(JNI)¤Ï¡¢¥Ø¥Ã¥À¡¼¾ðÊó¤Þ¤¿¤Ï¥¹¥¿¥Ö¡¦¥Õ¥¡¥¤¥ë¤òɬÍפȤ·¤Þ¤»¤ó¡£¸½ºß¤Ç¤Ï¡¢\f3javah\fP¤Ï¡¢JNI·Á¼°¤Î¥Í¥¤¥Æ¥£¥Ö¡¦¥á¥½¥Ã¥É¤ËɬÍפʥͥ¤¥Æ¥£¥Ö¡¦¥á¥½¥Ã¥Éµ¡Ç½¥×¥í¥È¥¿¥¤¥×¤òÀ¸À®¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢\f3javah\fP¤ÏJNI·Á¼°¤Ç½ÐÎϤµ¤ì¡¢¤½¤Î·ë²Ì¤Ï .h¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-o outputfile -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¥ê¥¹¥È¤µ¤ì¤¿¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤ËÂФ·¤Æ¡¢·ë²Ì¤Î¥Ø¥Ã¥À¡¼¤Þ¤¿¤Ï¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÏ¢·ë¤·¤Æ\f2outputfile\fP¤Ë³ÊǼ¤·¤Þ¤¹¡£\f3\-o\fP¤Þ¤¿¤Ï\f3\-d\fP¤Î¤É¤Á¤é¤«°ìÊý¤Î¤ß»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-ddirectory -+\f3javah\fP¤¬¥Ø¥Ã¥À¡¼¡¦¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥¹¥¿¥Ö¡¦¥Õ¥¡¥¤¥ë¤òÊݸ¤¹¤ë¡¢¥Ç¥£¥ì¥¯¥È¥ê¤òÀßÄꤷ¤Þ¤¹¡£\f3\-d\fP¤Þ¤¿¤Ï\f3\-o\fP¤Î¤É¤Á¤é¤«°ìÊý¤Î¤ß»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-stubs -+\f3javah\fP¤¬¡¢Java¥ª¥Ö¥¸¥§¥¯¥È¡¦¥Õ¥¡¥¤¥ë¤«¤éCÀë¸À¤òÀ¸À®¤·¤Þ¤¹¡£ -+.TP 3 -+\-verbose -+¾ÜºÙ½ÐÎϤò»ØÄꤷ¡¢ºîÀ®¥Õ¥¡¥¤¥ë¤Î¾õÂ֤˴ؤ¹¤ë¥á¥Ã¥»¡¼¥¸¤ò¡¢\f3javah\fP¤¬É¸½à½ÐÎϤ˽ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-help -+\f3javah\fP¤Î»ÈÍÑÊýË¡¤Ë¤Ä¤¤¤Æ¤Î¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-version -+\f3javah\fP¤Î¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-jni -+JNI·Á¼°¤Î¥Í¥¤¥Æ¥£¥Ö¡¦¥Õ¥¡¥¤¥ëµ¡Ç½¥×¥í¥È¥¿¥¤¥×¤ò´Þ¤à½ÐÎÏ¥Õ¥¡¥¤¥ë¤ò¡¢\f3javah\fP¤¬ºîÀ®¤·¤Þ¤¹¡£¤³¤ì¤Ïɸ½à½ÐÎϤǤ¢¤ë¤¿¤á¡¢\f3\-jni\fP¤Î»ÈÍѤϥª¥×¥·¥ç¥ó¤Ç¤¹¡£ -+.TP 3 -+\-classpath path -+¥¯¥é¥¹¤òõ¤¹¤¿¤á¤Ë\f3javah\fP¤¬»ÈÍѤ¹¤ë¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Þ¤¿¤ÏCLASSPATH´Ä¶ÊÑ¿ôÀßÄê¤ò¾å½ñ¤¤·¤Þ¤¹¡£¥Ç¥£¥ì¥¯¥È¥ê¤Ï¥³¥í¥ó¤Çʬ³ä¤·¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢\f2path\fP¤Î°ìÈÌ·Á¼°¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ .:<your_path> -+.fl -+\fP -+.fi -+¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ .:/home/avh/classes:/usr/local/java/classes -+.fl -+\fP -+.fi -+Êص¹¾å¡¢\f2*\fP¤Î¥Ù¡¼¥¹Ì¾¤ò´Þ¤à¥¯¥é¥¹¡¦¥Ñ¥¹Í×ÁǤϡ¢\f2.jar\fP¤Þ¤¿¤Ï\f2.JAR\fP¤ò³ÈÄ¥»Ò¤Ë»ý¤Ä¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤ò»ØÄꤹ¤ë¤Î¤ÈƱÅù¤È¤ß¤Ê¤µ¤ì¤Þ¤¹(java¥×¥í¥°¥é¥à¤Ï¤³¤Î2¤Ä¤Î¸Æ½Ð¤·¤ò¶èÊ̤Ǥ¤Ê¤¤)¡£ -+.br -+.br -+¤¿¤È¤¨¤Ð¡¢¥Ç¥£¥ì¥¯¥È¥ê\f2foo\fP¤Ë\f2a.jar\fP¤È\f2b.JAR\fP¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥¯¥é¥¹¡¦¥Ñ¥¹Í×ÁÇ\f2foo/*\fP¤Ï\f2A.jar:b.JAR\fP¤ËŸ³«¤µ¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢JAR¥Õ¥¡¥¤¥ë¤Î½çÈÖ¤Ï̤»ØÄê¤È¤Ê¤ê¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ë¤Ï¡¢±£¤·¥Õ¥¡¥¤¥ë¤â´Þ¤á¡¢»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤ÎJAR¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Þ¤¹¡£\f2*\fP¤Î¤ß¤«¤é¤Ê¤ë¥¯¥é¥¹¡¦¥Ñ¥¹¡¦¥¨¥ó¥È¥ê¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤ÎJAR¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤ËŸ³«¤µ¤ì¤Þ¤¹¡£\f2CLASSPATH\fP´Ä¶ÊÑ¿ô¤â¡¢ÄêµÁ»þ¤Ë¤ÏƱÍͤËŸ³«¤µ¤ì¤Þ¤¹¡£¥¯¥é¥¹¡¦¥Ñ¥¹¤Î¥ï¥¤¥ë¥É¥«¡¼¥ÉŸ³«¤Ïɬ¤º¡¢Java²¾ÁÛ¥Þ¥·¥ó¤Îµ¯Æ°Á°¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢´Ä¶¤ËÌä¹ç¤»¤ò¹Ô¤ï¤Ê¤¤¸Â¤ê¡¢Java¥×¥í¥°¥é¥à¤¬Å¸³«¤µ¤ì¤Æ¤¤¤Ê¤¤¥ï¥¤¥ë¥É¥«¡¼¥É¤òǧ¼±¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢\f2System.getenv(\\"CLASSPATH\\")\fP¸Æ½Ð¤·¤¬¤½¤ÎÎã¤Ç¤¹¡£ -+.TP 3 -+\-bootclasspath path -+¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤ò¥í¡¼¥É¤¹¤ë¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï\f2jre/lib/rt.jar\fP¤ª¤è¤Ó¾¤Î¤¤¤¯¤Ä¤«¤ÎJAR¥Õ¥¡¥¤¥ë¤Ë¤¢¤ë¡¢¥³¥¢Java 2¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤ò¼ÂÁõ¤¹¤ë¥¯¥é¥¹¤Ç¤¹¡£ -+.TP 3 -+\-old -+¸Å¤¤JDK1.0·Á¼°¤Î¥Ø¥Ã¥À¡¼¡¦¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-force -+½ÐÎÏ¥Õ¥¡¥¤¥ë¤¬¾ï¤Ë½ñ¤¹þ¤Þ¤ì¤ë¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-Joption -+Java²¾ÁÛ¥Þ¥·¥ó¤Ë\f2option\fP¤òÅϤ·¤Þ¤¹¡£\f2option\fP¤Ë¤Ï¡¢java(1)¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥Ú¡¼¥¸¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë¥ª¥×¥·¥ç¥ó¤ò1¤Ä»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "´Ä¶ÊÑ¿ô" -+.LP -+.RS 3 -+.TP 3 -+CLASSPATH -+¥æ¡¼¥¶¡¼ÄêµÁ¥¯¥é¥¹¤Ø¤Î¥Ñ¥¹¤ò¥·¥¹¥Æ¥à¤Ë»ØÄꤷ¤Þ¤¹¡£¥Ç¥£¥ì¥¯¥È¥ê¤Ï¥³¥í¥ó¤Çʬ³ä¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+.:/home/avh/classes:/usr/local/java/classes -+.fl -+\fP -+.fi -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.LP -+javac(1)¡¢java(1)¡¢jdb(1)¡¢javap(1)¡¢javadoc(1) -+.LP -+ ---- jdk/src/bsd/doc/man/ja/javap.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/javap.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,299 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH javap 1 "07 May 2011" -+.TH javap 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+javap \- Java¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ëµÕ¥¢¥»¥ó¥Ö¥é -+.LP -+.LP -+¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òµÕ¥¢¥»¥ó¥Ö¥ë¤·¤Þ¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+javap [ \fP\f3options\fP\f3 ] classes -+.fl -+\fP -+.fi -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3javap\fP¥³¥Þ¥ó¥É¤Ï¡¢1¤Ä¤Þ¤¿¤ÏÊ£¿ô¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òµÕ¥¢¥»¥ó¥Ö¥ë¤·¤Þ¤¹¡£¤½¤Î½ÐÎϤϻØÄꤹ¤ë¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê°Û¤Ê¤ê¤Þ¤¹¡£¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¢\f3javap\fP¤Ï¡¢¤½¤Î¥Ñ¥Ã¥±¡¼¥¸¡¢ÅϤµ¤ì¤¿¥¯¥é¥¹¤Îprotected¤ª¤è¤Ópublic¤Î¥Õ¥£¡¼¥ë¥É¤È¥á¥½¥Ã¥É¤ò½ÐÎϤ·¤Þ¤¹¡£\f3javap\fP¤Ï¤½¤Î½ÐÎϤòɸ½à½ÐÎϤËɽ¼¨¤·¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+options -+¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¡£ -+.TP 3 -+classes -+Ãí¼á¤Î½èÍýÂоݤȤʤë1¤Ä°Ê¾å¤Î¥¯¥é¥¹\f2DocFooter.class\fP¤Ê¤É¤Î¥ê¥¹¥È(¶õÇò¶èÀÚ¤ê)¡£¥¯¥é¥¹¡¦¥Ñ¥¹¤Ç¸«¤Ä¤«¤ë¥¯¥é¥¹¤Ï¡¢¥Õ¥¡¥¤¥ë̾(\f2/home/user/myproject/src/DocFooter.class\fP¤Ê¤É)¤Þ¤¿¤ÏURL(\f2file:///home/user/myproject/src/DocFooter.class\fP¤Ê¤É)¤Ç»ØÄê¤Ç¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥¯¥é¥¹Àë¸À¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+import java.awt.*; -+.fl -+import java.applet.*; -+.fl -+ -+.fl -+public class DocFooter extends Applet { -+.fl -+ String date; -+.fl -+ String email; -+.fl -+ -+.fl -+ public void init() { -+.fl -+ resize(500,100); -+.fl -+ date = getParameter("LAST_UPDATED"); -+.fl -+ email = getParameter("EMAIL"); -+.fl -+ } -+.fl -+ -+.fl -+ public void paint(Graphics g) { -+.fl -+ g.drawString(date + " by ",100, 15); -+.fl -+ g.drawString(email,290,15); -+.fl -+ } -+.fl -+} -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f3javap DocFooter.class\fP¤¬¤â¤¿¤é¤¹½ÐÎϤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+Compiled from "DocFooter.java" -+.fl -+public class DocFooter extends java.applet.Applet { -+.fl -+ java.lang.String date; -+.fl -+ java.lang.String email; -+.fl -+ public DocFooter(); -+.fl -+ public void init(); -+.fl -+ public void paint(java.awt.Graphics); -+.fl -+} -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f3javap \-c DocFooter.class\fP¤¬¤â¤¿¤é¤¹½ÐÎϤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+Compiled from "DocFooter.java" -+.fl -+public class DocFooter extends java.applet.Applet { -+.fl -+ java.lang.String date; -+.fl -+ -+.fl -+ java.lang.String email; -+.fl -+ -+.fl -+ public DocFooter(); -+.fl -+ Code: -+.fl -+ 0: aload_0 -+.fl -+ 1: invokespecial #1 // Method java/applet/Applet."<init>":()V -+.fl -+ 4: return -+.fl -+ -+.fl -+ public void init(); -+.fl -+ Code: -+.fl -+ 0: aload_0 -+.fl -+ 1: sipush 500 -+.fl -+ 4: bipush 100 -+.fl -+ 6: invokevirtual #2 // Method resize:(II)V -+.fl -+ 9: aload_0 -+.fl -+ 10: aload_0 -+.fl -+ 11: ldc #3 // String LAST_UPDATED -+.fl -+ 13: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String; -+.fl -+ 16: putfield #5 // Field date:Ljava/lang/String; -+.fl -+ 19: aload_0 -+.fl -+ 20: aload_0 -+.fl -+ 21: ldc #6 // String EMAIL -+.fl -+ 23: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String; -+.fl -+ 26: putfield #7 // Field email:Ljava/lang/String; -+.fl -+ 29: return -+.fl -+ -+.fl -+ public void paint(java.awt.Graphics); -+.fl -+ Code: -+.fl -+ 0: aload_1 -+.fl -+ 1: new #8 // class java/lang/StringBuilder -+.fl -+ 4: dup -+.fl -+ 5: invokespecial #9 // Method java/lang/StringBuilder."<init>":()V -+.fl -+ 8: aload_0 -+.fl -+ 9: getfield #5 // Field date:Ljava/lang/String; -+.fl -+ 12: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; -+.fl -+ 15: ldc #11 // String by -+.fl -+ 17: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; -+.fl -+ 20: invokevirtual #12 // Method java/lang/StringBuilder.toString:()Ljava/lang/String; -+.fl -+ 23: bipush 100 -+.fl -+ 25: bipush 15 -+.fl -+ 27: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V -+.fl -+ 30: aload_1 -+.fl -+ 31: aload_0 -+.fl -+ 32: getfield #7 // Field email:Ljava/lang/String; -+.fl -+ 35: sipush 290 -+.fl -+ 38: bipush 15 -+.fl -+ 40: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V -+.fl -+ 43: return -+.fl -+} -+.fl -+\fP -+.fi -+ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-help \-\-help \-? -+\f3javap\fP¤Î¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-version -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-l -+¹ÔÈÖ¹æ¤È¥í¡¼¥«¥ëÊÑ¿ôɽ¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-public -+public¥¯¥é¥¹¤ª¤è¤Ó¥á¥ó¥Ð¡¼¤Î¤ßɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-protected -+protected¤ª¤è¤Ópublic¤Î¥¯¥é¥¹¤È¥á¥ó¥Ð¡¼¤Î¤ß¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-package -+package¡¢protected¡¢¤ª¤è¤Ópublic¤Î¥¯¥é¥¹¤È¥á¥ó¥Ð¡¼¤Î¤ßɽ¼¨¤·¤Þ¤¹¡£¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¹¡£ -+.TP 3 -+\-private \-p -+¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤È¥á¥ó¥Ð¡¼¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-Jflag -+¥é¥ó¥¿¥¤¥à¡¦¥·¥¹¥Æ¥à¤ËľÀÜ\f2flag\fP¤òÅϤ·¤Þ¤¹¡£»ÈÍÑÎã¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+javap \-J\-version -+.fl -+javap \-J\-Djava.security.manager \-J\-Djava.security.policy=MyPolicy MyClassName -+.fl -+\fP -+.fi -+.TP 3 -+\-s -+ÆâÉô¤Î·¿¥·¥°¥Ë¥Á¥ã¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-sysinfo -+½èÍýÃæ¤Î¥¯¥é¥¹¤Î¥·¥¹¥Æ¥à¾ðÊó(¥Ñ¥¹¡¢¥µ¥¤¥º¡¢ÆüÉÕ¡¢MD5¥Ï¥Ã¥·¥å)¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-constants -+static finalÄê¿ô¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-c -+¥¯¥é¥¹¤Î³Æ¥á¥½¥Ã¥É¤Î¤¿¤á¤ËµÕ¥¢¥»¥ó¥Ö¥ë¤µ¤ì¤ë¥³¡¼¥É¡¢¤¹¤Ê¤ï¤ÁJava¥Ð¥¤¥È¥³¡¼¥É¤«¤é¤Ê¤ëÌ¿Îá¤òɽ¼¨¤·¤Þ¤¹¡£¤³¤ì¤é¤Ï -+.na -+\f2Java Virtual Machine Specification\fP @ -+.fi -+http://docs.oracle.com/javase/specs/¤Ë¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.TP 3 -+\-verbose -+¥á¥½¥Ã¥É¤Î¥¹¥¿¥Ã¥¯¡¦¥µ¥¤¥º¡¢¤ª¤è¤Ó\f2locals\fP¤È\f2args\fP¤Î¿ô¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-classpath path -+\f3javap\fP¤¬¥¯¥é¥¹¤òõ¤¹¤¿¤á¤Ë»ÈÍѤ¹¤ë¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Þ¤¿¤ÏCLASSPATH´Ä¶ÊÑ¿ôÀßÄê¤ò¾å½ñ¤¤·¤Þ¤¹¡£ -+.TP 3 -+\-bootclasspath path -+¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤ò¥í¡¼¥É¤¹¤ë¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï\f2jre/lib/rt.jar\fP¤ª¤è¤Ó¾¤Î¤¤¤¯¤Ä¤«¤ÎJAR¥Õ¥¡¥¤¥ë¤Ë¤¢¤ë¡¢¥³¥¢Java¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤ò¼ÂÁõ¤¹¤ë¥¯¥é¥¹¤Ç¤¹¡£ -+.TP 3 -+\-extdirs dirs -+¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿³ÈÄ¥µ¡Ç½¤ò¸¡º÷¤¹¤ë¾ì½ê¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£³ÈÄ¥µ¡Ç½¤Î¥Ç¥Õ¥©¥ë¥È°ÌÃÖ¤Ï\f2java.ext.dirs\fP¤Ç¤¹¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.LP -+javac(1)¡¢java(1)¡¢jdb(1)¡¢javah(1)¡¢javadoc(1) -+.LP -+ ---- jdk/src/bsd/doc/man/ja/javaws.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/javaws.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,204 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH javaws 1 "07 May 2011" -+.TH javaws 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+\f2javaws\fP¥³¥Þ¥ó¥É¥é¥¤¥ó -+.LP -+.SH "̾Á°" -+.LP -+.LP -+\f2javaws\fP \- Java Web Startµ¯Æ°¥³¥Þ¥ó¥É -+.LP -+.SH "·Á¼°" -+.LP -+.LP -+\f2javaws [run\-options] <jnlp>\fP -+.LP -+.LP -+\f2javaws [control\-options]\fP -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.LP -+\f2[run\-options]\fP -+.LP -+.LP -+¥³¥Þ¥ó¥É¥é¥¤¥ó¼Â¹Ô¥ª¥×¥·¥ç¥ó¡£¼Â¹Ô¥ª¥×¥·¥ç¥ó¤ÏǤ°Õ¤Î½ç½ø¤Ç»ØÄê¤Ç¤¤Þ¤¹¡£³Æ¼ï¼Â¹Ô¥ª¥×¥·¥ç¥ó¤Î¾ÜºÙ¤Ï¡¢¼¡¤Î¼Â¹Ô¥ª¥×¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+\f2<jnlp>\fP -+.LP -+.LP -+JNLP(Java Network Launching Protocol)¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤Þ¤¿¤ÏURL(Uniform Resource Locator)¤Î¤É¤Á¤é¤«¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f2[control\-options]\fP -+.LP -+.LP -+¥³¥Þ¥ó¥É¥é¥¤¥óÀ©¸æ¥ª¥×¥·¥ç¥ó¡£À©¸æ¥ª¥×¥·¥ç¥ó¤ÏǤ°Õ¤Î½ç½ø¤Ç»ØÄê¤Ç¤¤Þ¤¹¡£³Æ¼ïÀ©¸æ¥ª¥×¥·¥ç¥ó¤Î¾ÜºÙ¤Ï¡¢¼¡¤ÎÀ©¸æ¥ª¥×¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f2javaws\fP¥³¥Þ¥ó¥É¤Ï¡¢JNLP(Java Network Launching Protocol)¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¼ÂÁõ¤Ç¤¢¤ëJava Web Start¤òµ¯Æ°¤·¤Þ¤¹¡£Java Web Start¤Ï¡¢¥Í¥Ã¥È¥ï¡¼¥¯¾å¤ÇÆ°ºî¤¹¤ëJava¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Þ¤¿¤Ï¥¢¥×¥ì¥Ã¥È¤òµ¯Æ°¤·¤Þ¤¹¡£ -+.LP -+.LP -+JNLP¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢\f2javaws\fP¤Ï¡¢¤½¤ÎJNLP¥Õ¥¡¥¤¥ë¤Ç»ØÄꤵ¤ì¤¿Java¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¢¥×¥ì¥Ã¥È¤òµ¯Æ°¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2javaws\fPµ¯Æ°¥Ä¡¼¥ë¤Ë¤Ï¡¢¸½ºß¤Î¥ê¥ê¡¼¥¹¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë1ÁȤΥª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£¤¿¤À¤·¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ï¾Íè¤Î¥ê¥ê¡¼¥¹¤Ç¤Ïºï½ü¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SH "¼Â¹Ô¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+\f2\-offline\fP -+.LP -+.LP -+Java Web Start¤ò¥ª¥Õ¥é¥¤¥ó¡¦¥â¡¼¥É¤Ç¼Â¹Ô¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-Xnosplash\fP -+.LP -+.LP -+½é´ü¥¹¥×¥é¥Ã¥·¥å²èÌ̤òɽ¼¨¤·¤Þ¤»¤ó¡£ -+.LP -+.LP -+\f2\-open <arguments>\fP -+.LP -+.LP -+¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢JNLP¥Õ¥¡¥¤¥ëÆâ¤Î°ú¿ô¤¬\f2\-open<arguments>\fP¤ËÃÖ¤´¹¤ï¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-print <arguments>\fP -+.LP -+.LP -+¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢JNLP¥Õ¥¡¥¤¥ëÆâ¤Î°ú¿ô¤¬\f2\-print<arguments>\fP¤ËÃÖ¤´¹¤ï¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-online\fP -+.LP -+.LP -+¥ª¥ó¥é¥¤¥ó¡¦¥â¡¼¥É¤ò»ÈÍѤ·¤Þ¤¹(¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî)¡£ -+.LP -+.LP -+\f2\-wait\fP -+.LP -+.LP -+¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢\f2javaws\fP¥×¥í¥»¥¹¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬½ªÎ»¤¹¤ë¤Þ¤Ç½ªÎ»¤·¤Þ¤»¤ó¡£Windows¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¾å¤Ç¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ÏÀâÌÀ¤·¤¿¤È¤ª¤ê¤Ëµ¡Ç½¤·¤Þ¤»¤ó¡£ -+.LP -+.LP -+\f2\-verbose\fP -+.LP -+.LP -+ÄɲäνÐÎϤòɽ¼¨¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-J<option>\fP -+.LP -+.LP -+VM¤ËÂФ¹¤ë¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-system\fP -+.LP -+.LP -+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥·¥¹¥Æ¥à¡¦¥¥ã¥Ã¥·¥å¤Î¤ß¤«¤é¼Â¹Ô¤·¤Þ¤¹¡£ -+.LP -+.SH "À©¸æ¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+\f2\-viewer\fP -+.LP -+.LP -+Java¥³¥ó¥È¥í¡¼¥ë¡¦¥Ñ¥Í¥ë¤Ç¥¥ã¥Ã¥·¥å¡¦¥Ó¥å¡¼¥¢¤òɽ¼¨¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-clearcache\fP -+.LP -+.LP -+¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¤¹¤Ù¤Æ¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥¥ã¥Ã¥·¥å¤«¤éºï½ü¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-userConfig <property name>\fP -+.LP -+.LP -+»ØÄꤵ¤ì¤¿¥Ç¥×¥í¥¤¥á¥ó¥È¡¦¥×¥í¥Ñ¥Æ¥£¤ò¥¯¥ê¥¢¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-userConfig <property name> <property value>\fP -+.LP -+.LP -+»ØÄꤵ¤ì¤¿¥Ç¥×¥í¥¤¥á¥ó¥È¡¦¥×¥í¥Ñ¥Æ¥£¤ò»ØÄꤵ¤ì¤¿ÃͤËÀßÄꤷ¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-uninstall\fP -+.LP -+.LP -+¥¥ã¥Ã¥·¥å¤«¤é¤¹¤Ù¤Æ¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òºï½ü¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-uninstall <jnlp>\fP -+.LP -+.LP -+¥¥ã¥Ã¥·¥å¤«¤é¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òºï½ü¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-import [import\-options] <jnlp>\fP -+.LP -+.LP -+¥¥ã¥Ã¥·¥å¤Ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤¹¡£ -+.LP -+.SH "¥¤¥ó¥Ý¡¼¥È¡¦¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+\f2\-silent\fP -+.LP -+.LP -+¥µ¥¤¥ì¥ó¥È¡¦¥â¡¼¥É¤Ç¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤¹(¥æ¡¼¥¶¡¼¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó)¡£ -+.LP -+.LP -+\f2\-system\fP -+.LP -+.LP -+¥·¥¹¥Æ¥à¡¦¥¥ã¥Ã¥·¥å¤Ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-codebase <url>\fP -+.LP -+.LP -+»ØÄꤷ¤¿codebase¤«¤é¥ê¥½¡¼¥¹¤ò¼èÆÀ¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-shortcut\fP -+.LP -+.LP -+¥æ¡¼¥¶¡¼¤¬¥×¥í¥ó¥×¥È¤Çµö²Ä¤·¤¿¾ì¹ç¤Î¤è¤¦¤Ë¥·¥ç¡¼¥È¥«¥Ã¥È¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢\f2\-silent\fP¥ª¥×¥·¥ç¥ó¤â»ÈÍѤ·¤Ê¤¤¤È¸ú²Ì¤¬¤¢¤ê¤Þ¤»¤ó¡£ -+.LP -+.LP -+\f2\-association\fP -+.LP -+.LP -+¥æ¡¼¥¶¡¼¤¬¥×¥í¥ó¥×¥È¤Çµö²Ä¤·¤¿¾ì¹ç¤Î¤è¤¦¤Ë¥¢¥½¥·¥¨¡¼¥·¥ç¥ó¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢\f2\-silent\fP¥ª¥×¥·¥ç¥ó¤â»ÈÍѤ·¤Ê¤¤¤È¸ú²Ì¤¬¤¢¤ê¤Þ¤»¤ó¡£ -+.LP -+.SH "¥Õ¥¡¥¤¥ë" -+.LP -+.LP -+¥æ¡¼¥¶¡¼¡¦¥¥ã¥Ã¥·¥å¡¢¥·¥¹¥Æ¥à¡¦¥¥ã¥Ã¥·¥å¤ª¤è¤Ódeployment.properties¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¤Ï¡¢ -+.na -+\f2¥·¥¹¥Æ¥à¡¦¥ì¥Ù¥ë¤ª¤è¤Ó¥æ¡¼¥¶¡¼¡¦¥ì¥Ù¥ë¤Î¥×¥í¥Ñ¥Æ¥£\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/deployment/deployment\-guide/properties.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "¾ÜºÙ¾ðÊó" -+.LP -+.LP -+Java Web Start¤Î¾ÜºÙ¤Ï¡¢ -+.na -+\f2Java Web Start\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/javaws/index.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jcmd.1 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/bsd/doc/man/ja/jcmd.1 2013-03-09 08:44:53.000000000 -0800 -@@ -0,0 +1,118 @@ -+." Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved. -+." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+." -+." This code is free software; you can redistribute it and/or modify it -+." under the terms of the GNU General Public License version 2 only, as -+." published by the Free Software Foundation. -+." -+." This code is distributed in the hope that it will be useful, but WITHOUT -+." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+." version 2 for more details (a copy is included in the LICENSE file that -+." accompanied this code). -+." -+." You should have received a copy of the GNU General Public License version -+." 2 along with this work; if not, write to the Free Software Foundation, -+." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+." -+." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+." or visit www.oracle.com if you need additional information or have any -+." questions. -+." -+.TH jcmd 1 "05 Jul 2012" -+ -+.LP -+.SH "̾Á°" -+jcmd \- ¿ÇÃÇ¥³¥Þ¥ó¥É -+.LP -+.LP -+\f3jcmd\fP¤Ï¡¢¼Â¹ÔÃæ¤ÎJava²¾ÁÛ¥Þ¥·¥ó¤Ë¿ÇÃÇ¥³¥Þ¥ó¥É¡¦¥ê¥¯¥¨¥¹¥È¤òÁ÷¿®¤¹¤ë¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ç¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+ \fP\f3jcmd\fP [ option ] -+.fl -+ \f3jcmd\fP <\f2pid\fP | \f2main class\fP> PerfCounter.print -+.fl -+ \f3jcmd\fP <\f2pid\fP | \f2main class\fP> \f2command\fP [\f2arguments\fP] -+.fl -+ \f3jcmd\fP <\f2pid\fP | \f2main class\fP> \-f \f2file\fP -+.fl -+.fi -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jcmd\fP¤Ï¡¢¤³¤Îµ¡Ç½¤ò¥µ¥Ý¡¼¥È¤¹¤ëJava²¾ÁÛ¥Þ¥·¥ó¤Ë¿ÇÃÇ¥³¥Þ¥ó¥É¡¦¥ê¥¯¥¨¥¹¥È¤òÁ÷¿®¤¹¤ë¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ç¤¹¡£ -+.LP -+.LP -+°ú¿ô¤Ê¤·¤Þ¤¿¤Ï\-l¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æjcmd¤ò»ÈÍѤ¹¤ë¤È¡¢¼Â¹ÔÃæ¤ÎJava¥×¥í¥»¥¹¤¬¥×¥í¥»¥¹ID¡¢¥á¥¤¥ó¡¦¥¯¥é¥¹¤ª¤è¤Ó¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤È¤È¤â¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+¥×¥í¥»¥¹ID¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë»ØÄꤹ¤ë¤È¡¢jcmd¤Ç¤Ï¡¢¤³¤ÎID¤Î¥×¥í¥»¥¹¤Ë¿ÇÃÇ¥³¥Þ¥ó¥É¡¦¥ê¥¯¥¨¥¹¥È¤¬Á÷¿®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+¥á¥¤¥ó¡¦¥¯¥é¥¹¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë»ØÄꤹ¤ë¤È¡¢jcmd¤Ç¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤¬Java¥×¥í¥»¥¹¤Î¥á¥¤¥ó¡¦¥¯¥é¥¹¤ÎÉôʬʸ»úÎó¤Ç¤¢¤ë¤¹¤Ù¤Æ¤ÎJava¥×¥í¥»¥¹¤Ë¿ÇÃÇ¥³¥Þ¥ó¥É¡¦¥ê¥¯¥¨¥¹¥È¤¬Á÷¿®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+PerfCounter.print°ú¿ô¤ò»ØÄꤹ¤ë¤È¡¢jcmd¤Ç¤Ï¡¢¥¿¡¼¥²¥Ã¥È¤ÎJava¥×¥í¥»¥¹¤Ç»ÈÍѲÄǽ¤Ê¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¡¦¥«¥¦¥ó¥¿¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\-f ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢jcmd¤Ç¤Ï¡¢\f2file\fP¤ËÊݸ¤µ¤ì¤Æ¤¤¤ë¿ÇÃÇ¥³¥Þ¥ó¥É¤¬¥¿¡¼¥²¥Ã¥È¤ÎJava¥×¥í¥»¥¹¤ËÁ÷¿®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+³Æ¥ª¥×¥·¥ç¥ó¤Ï¸ß¤¤¤ËÇÓ¾Ū¤Ç¤¹¡£¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢¥³¥Þ¥ó¥É̾¤Îľ¸å¤Ëµ½Ò¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.RS 3 -+.TP 3 -+\-l -+¼Â¹ÔÃæ¤ÎJava¥×¥í¥»¥¹¤Î°ìÍ÷¤¬¥×¥í¥»¥¹ID¡¢¥á¥¤¥ó¡¦¥¯¥é¥¹¤ª¤è¤Ó¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤È¤È¤â¤Ë½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-h -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-help -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.RS 3 -+.TP 3 -+pid -+¿ÇÃÇ¥³¥Þ¥ó¥É¡¦¥ê¥¯¥¨¥¹¥È¤ò¼õ¿®¤¹¤ë¥×¥í¥»¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¥×¥í¥»¥¹¤ÏJava¥×¥í¥»¥¹¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Þ¥·¥ó¾å¤Ç¼Â¹Ô¤·¤Æ¤¤¤ëJava¥×¥í¥»¥¹¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢jps(1)¤Þ¤¿¤Ïjcmd(1)¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.TP 3 -+main class -+¿ÇÃÇ¥³¥Þ¥ó¥É¡¦¥ê¥¯¥¨¥¹¥È¤ò¼õ¿®¤¹¤ë¥×¥í¥»¥¹¤Î¥á¥¤¥ó¡¦¥¯¥é¥¹¤Ç¤¹¡£¥×¥í¥»¥¹¤ò¾È¹ç¤¹¤ëºÝ¤Ë¤Ï¡¢»ØÄꤵ¤ì¤¿Ê¸»úÎ󤬥ᥤ¥ó¡¦¥¯¥é¥¹Ì¾¤ËÉôʬʸ»úÎó¤È¤·¤Æ´Þ¤Þ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥×¥í¥»¥¹¤¬°ìÃפ·¤¿¤È¤ß¤Ê¤µ¤ì¤Þ¤¹¡£¤¤¤¯¤Ä¤«¤Î¼Â¹ÔÃæ¤ÎJava¥×¥í¥»¥¹¤¬¤³¤Î¥á¥¤¥ó¡¦¥¯¥é¥¹¤ò¶¦Í¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤ì¤é¤¹¤Ù¤Æ¤Î¥×¥í¥»¥¹¤Ë¿ÇÃÇ¥³¥Þ¥ó¥É¡¦¥ê¥¯¥¨¥¹¥È¤¬Á÷¿®¤µ¤ì¤Þ¤¹¡£¥Þ¥·¥ó¾å¤Ç¼Â¹Ô¤·¤Æ¤¤¤ëJava¥×¥í¥»¥¹¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢jps(1)¤Þ¤¿¤Ïjcmd(1)¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.TP 3 -+command [arguments] -+\f2command\fP¤È¤¤¤¦Ì¾Á°¤Î¿ÇÃÇ¥³¥Þ¥ó¥É¤ò¥¿¡¼¥²¥Ã¥È¤ÎJava¥×¥í¥»¥¹¤ËÂФ·¤Æµ¯Æ°¤·¤Þ¤¹¡£»ØÄꤷ¤¿¥×¥í¥»¥¹¤Ç»ÈÍѤǤ¤ë¿ÇÃÇ¥³¥Þ¥ó¥É¤Î¥ê¥¹¥È¤Ï¡¢¤³¤Î¥×¥í¥»¥¹¤ËÂФ·¤Æ\f3help\fP¥³¥Þ¥ó¥É¤ò¸Æ¤Ó½Ð¤»¤Ðɽ¼¨¤µ¤ì¤Þ¤¹¡£³Æ¿ÇÃÇ¥³¥Þ¥ó¥É¤Ë¤ÏÆȼ«¤Î\f2arguments\fP¤Î¥»¥Ã¥È¤¬¤¢¤ê¡¢¥³¥Þ¥ó¥É̾¤Î¸å¤Ë\f3help\fP¤ò»ØÄꤷ¤Æ¸Æ¤Ó½Ð¤»¤Ðɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+PerfCounter.print -+¥¿¡¼¥²¥Ã¥È¤ÎJava¥×¥í¥»¥¹¤Ç»ÈÍѲÄǽ¤Ê¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¡¦¥«¥¦¥ó¥¿¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¡¦¥«¥¦¥ó¥¿¤Î¥ê¥¹¥È¤ÏJava¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-f file -+\f2file\fP¤«¤é¥³¥Þ¥ó¥É¤òÆɤ߼è¤Ã¤Æ¡¢¥¿¡¼¥²¥Ã¥È¤ÎJava¥×¥í¥»¥¹¤Ç¸Æ¤Ó½Ð¤·¤Þ¤¹¡£\f2file\fP¤Ç¤Ï¡¢³Æ¥³¥Þ¥ó¥É¤ò1¹Ô¤Ëµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£#¤Ç»Ï¤Þ¤ë¹Ô¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£¤¹¤Ù¤Æ¤Î¹Ô¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¤«¡¢\f3stop\fP¥¡¼¥ï¡¼¥É¤ò´Þ¤à¹Ô¤¬Æɤ߼è¤é¤ì¤ë¤È¡¢\f2file\fP¤Î½èÍý¤¬½ªÎ»¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+jps(1) -+.RE -+ -+.LP -+.LP -+jps(1) -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jconsole.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jconsole.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,138 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jconsole 1 "07 May 2011" -+.TH jconsole 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jconsole \- Java´Æ»ë¤ª¤è¤Ó´ÉÍý¥³¥ó¥½¡¼¥ë -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+¥Ñ¥é¥á¡¼¥¿ -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jconsole\fP [ \f2options\fP ] [ connection ... ] -+.fl -+ -+.fl -+.fi -+ -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.RS 3 -+.TP 3 -+options -+¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢¥³¥Þ¥ó¥É̾¤Îľ¸å¤Ëµ½Ò¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+connection = pid | host:port | jmxUrl -+.RS 3 -+.TP 2 -+o -+\f2pid\fP¥í¡¼¥«¥ë¤ÎJava VM¤Î¥×¥í¥»¥¹ID¡£Java VM¤Ï¡¢jconsole¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼ID¤ÈƱ¤¸¥æ¡¼¥¶¡¼ID¤ò»ÈÍѤ·¤Æ¼Â¹Ô¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2JMX¤Î´Æ»ë¤ª¤è¤Ó´ÉÍý\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 2 -+o -+\f2host\fP:\f2port\fP: Java VM¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¥Û¥¹¥È¡¦¥·¥¹¥Æ¥à¤Î̾Á°¤È¡¢Java VM¤òµ¯Æ°¤·¤¿¤È¤¤Ë¥·¥¹¥Æ¥à¡¦¥×¥í¥Ñ¥Æ¥£\f2com.sun.management.jmxremote.port\fP¤Ç»ØÄꤷ¤¿¥Ý¡¼¥ÈÈֹ档¾ÜºÙ¤Ï¡¢ -+.na -+\f2JMX¤Î´Æ»ë¤ª¤è¤Ó´ÉÍý\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 2 -+o -+\f2jmxUrl\fP: -+.na -+\f2JMXServiceURL\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/javax/management/remote/JMXServiceURL.html¤Ëµ½Ò¤µ¤ì¤Æ¤¤¤ëÀܳÀè¤ÎJMX¥¨¡¼¥¸¥§¥ó¥È¤Î¥¢¥É¥ì¥¹¡£ -+.RE -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jconsole\fP¥³¥Þ¥ó¥É¤Ï¡¢¥í¡¼¥«¥ë¡¦¥Þ¥·¥ó¤Þ¤¿¤Ï¥ê¥â¡¼¥È¡¦¥Þ¥·¥ó¾å¤ÎJava¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤È²¾ÁÛ¥Þ¥·¥ó¤Î´Æ»ë¤È´ÉÍý¤ò¹Ô¤¦¥°¥é¥Õ¥£¥«¥ë¡¦¥³¥ó¥½¡¼¥ë¡¦¥Ä¡¼¥ë¤òµ¯Æ°¤·¤Þ¤¹¡£ -+.LP -+.LP -+Windows¾å¤Ç¤Ï¡¢\f3jconsole\fP¤Ï¥³¥ó¥½¡¼¥ë¡¦¥¦¥£¥ó¥É¥¦¤È´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤¿¤À¤·¡¢¤Ê¤ó¤é¤«¤ÎÍýͳ¤Ç\f3jconsole\fP¥³¥Þ¥ó¥É¤¬¼ºÇÔ¤¹¤ë¤È¡¢¥¨¥é¡¼¾ðÊó¤ò¼¨¤¹¥À¥¤¥¢¥í¥°¡¦¥Ü¥Ã¥¯¥¹¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-interval=n -+¹¹¿·´Ö³Ö¤ò\f2n\fPÉäËÀßÄꤷ¤Þ¤¹(¥Ç¥Õ¥©¥ë¥È¤Ï4ÉÃ)¡£ -+.TP 3 -+\-notile -+ºÇ½é¤Ë¥¦¥£¥ó¥É¥¦¤ò¥¿¥¤¥ê¥ó¥°¤·¤Þ¤»¤ó(Ê£¿ôÀܳ¤Î¾ì¹ç)¡£ -+.TP 3 -+\-pluginpath plugins -+JConsole¥×¥é¥°¥¤¥ó¤Î¸¡º÷Àè¤È¤Ê¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Þ¤¿¤ÏJAR¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤ò»ØÄꤷ¤Þ¤¹¡£\f2plugins\fP¥Ñ¥¹¤Ë¤Ï¡¢¼¡¤Î̾Á°¤Î¥×¥í¥Ð¥¤¥À¹½À®¥Õ¥¡¥¤¥ë¤ò´Þ¤á¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.nf -+\f3 -+.fl -+ META\-INF/services/com.sun.tools.jconsole.JConsolePlugin -+.fl -+\fP -+.fi -+¤³¤ì¤Ë¤Ï¡¢ -+.na -+\f2com.sun.tools.jconsole.JConsolePlugin\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/jdk/api/jconsole/spec/com/sun/tools/jconsole/JConsolePlugin.html¥¯¥é¥¹¤ò¼ÂÁõ¤¹¤ë¥¯¥é¥¹¤Î´°Á´½¤¾þ¥¯¥é¥¹Ì¾¤ò»ØÄꤹ¤ë¹Ô¤¬¡¢¥×¥é¥°¥¤¥ó¤´¤È¤Ë1¹Ô¤º¤Ä´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.TP 3 -+\-version -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤ò½ÐÎϤ·¤Æ½ªÎ»¤·¤Þ¤¹¡£ -+.TP 3 -+\-help -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Æ½ªÎ»¤·¤Þ¤¹¡£ -+.TP 3 -+\-J<flag> -+jconsole¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ëJava²¾ÁÛ¥Þ¥·¥ó¤Ë<flag>¤òÅϤ·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+.na -+\f2JConsole¤Î»ÈÍÑ\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html -+.TP 2 -+o -+.na -+\f2Java¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î´Æ»ë¤ª¤è¤Ó´ÉÍý\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/management/index.html -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jdb.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jdb.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,312 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jdb 1 "07 May 2011" -+.TH jdb 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jdb \- Java¥Ç¥Ð¥Ã¥¬ -+.LP -+.LP -+\f3jdb\fP¤Ï¡¢Java¸À¸ì¥×¥í¥°¥é¥à¤Î¥Ð¥°¤ò¸«¤Ä¤±¤Æ½¤Àµ¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¥Ä¡¼¥ë¤Ç¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jdb\fP [ options ] [ class ] [ arguments ] -+.fl -+.fi -+ -+.LP -+.RS 3 -+.TP 3 -+options -+¼¡¤Ë¼¨¤¹¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó -+.TP 3 -+class -+¥Ç¥Ð¥Ã¥°¤ò³«»Ï¤¹¤ë¥¯¥é¥¹¤Î̾Á° -+.TP 3 -+arguments -+\f2class\fP¤Î\f2main()\fP¥á¥½¥Ã¥É¤ËÅϤ¹°ú¿ô -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+Java¥Ç¥Ð¥Ã¥¬\f3jdb\fP¤Ï¡¢Java¥¯¥é¥¹ÍѤδÊñ¤Ê¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥Ç¥Ð¥Ã¥¬¤Ç¤¹¡£ -+.na -+\f2Java Platform Debugger Architecture\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/index.html¤ò»ë³ÐŪ¤Ë¼Â¹Ô¤·¡¢¥í¡¼¥«¥ë¤Þ¤¿¤Ï¥ê¥â¡¼¥È¤ÎJava Virtual Machine¤Î¸¡ºº¤È¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+.SS -+jdb¥»¥Ã¥·¥ç¥ó¤Î³«»Ï -+.LP -+.LP -+jdb¥»¥Ã¥·¥ç¥ó¤ò³«»Ï¤¹¤ë¤Ë¤ÏÍÍ¡¹¤ÊÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£ºÇ¤âÉÑÈˤ˻ÈÍѤµ¤ì¤ë¤Î¤Ï¡¢¥Ç¥Ð¥Ã¥°¤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥á¥¤¥ó¡¦¥¯¥é¥¹¤ò»ÈÍѤ·¤Æ¡¢\f3jdb\fP¤«¤é¿·¤·¤¤Java²¾ÁÛ¥Þ¥·¥ó(VM)¤òµ¯Æ°¤¹¤ëÊýË¡¤Ç¤¹¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¡¢\f3java\fP¤Î¤«¤ï¤ê¤Ë\f3jdb\fP¥³¥Þ¥ó¥É¤òÆþÎϤ·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥á¥¤¥ó¡¦¥¯¥é¥¹¤¬MyClass¤Î¾ì¹ç¤Ï¡¢JDB´Ä¶¤Ç¥Ç¥Ð¥Ã¥°¤¹¤ë¤È¤¤Ë¼¡¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ % jdb MyClass -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤ÎÊýË¡¤Çµ¯Æ°¤¹¤ë¤È¡¢\f3jdb\fP¤Ï¡¢»ØÄꤵ¤ì¤¿¥Ñ¥é¥á¡¼¥¿¤ò»ÈÍѤ·¤Æ2¤ÄÌܤÎJava VM¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£¼¡¤Ë¡¢»ØÄꤵ¤ì¤¿¥¯¥é¥¹¤ò¥í¡¼¥É¤·¤Æ¡¢¥¯¥é¥¹¤ÎºÇ½é¤ÎÌ¿Îá¤ò¼Â¹Ô¤¹¤ëÁ°¤ËVM¤òÄä»ß¤µ¤»¤Þ¤¹¡£ -+.LP -+.LP -+\f3jdb\fP¤Î¤â¤¦1¤Ä¤Î»ÈÍÑÊýË¡¤Ï¡¢¤¹¤Ç¤Ë¼Â¹ÔÃæ¤ÎJava VM¤Ëjdb¤òÀܳ¤¹¤ë¤³¤È¤Ç¤¹¡£jdb¤¬Àܳ¤¹¤ëVM¤ò¡¢¤½¤Î¼Â¹ÔÃæ¤Ëµ¯Æ°¤¹¤ë¤¿¤á¤Î¹½Ê¸¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥¤¥ó¥×¥í¥»¥¹¡¦¥Ç¥Ð¥Ã¥°Íѥ饤¥Ö¥é¥ê¤ò¥í¡¼¥É¤·¡¢Àܳ¤Î¼ïÎà¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+\-agentlib:jdwp=transport=dt_socket,server=y,suspend=n -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥³¥Þ¥ó¥É¤Ï¡¢MyClass¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤·¤Æ¡¢\f3jdb\fP¤¬¤¢¤È¤Ç¤½¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËÀܳ¤Ç¤¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ % java \-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n MyClass -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¼¡¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¡¢\f3jdb\fP¤òVM¤ËÀܳ¤Ç¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ % jdb \-attach 8000 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤Î¾ì¹ç¡¢\f3jdb\fP¤Ï¿·¤·¤¤VM¤òµ¯Æ°¤¹¤ë¤«¤ï¤ê¤Ë´û¸¤ÎVM¤ËÀܳ¤µ¤ì¤ë¤¿¤á¡¢\f3jdb\fP¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¤Ï¡ÖMyClass¡×¤Ï»ØÄꤷ¤Þ¤»¤ó¡£ -+.LP -+.LP -+¥Ç¥Ð¥Ã¥¬¤òVM¤ËÀܳ¤¹¤ë¤Ë¤Ï¾¤Ë¤âÍÍ¡¹¤ÊÊýË¡¤¬¤¢¤ê¡¢¤¹¤Ù¤Æ\f3jdb\fP¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Àܳ¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢Java Platform Debugger Architecture¤Î -+.na -+\f2¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/conninv.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£\f3jdb\fP¤Ç»ÈÍѤ¹¤ë¤¿¤á¤ËJ2SE 1.4.2°ÊÁ°¤ÎVM¤òµ¯Æ°¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢ -+.na -+\f21.4.2¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://docs.oracle.com/javase/1.4.2/docs/guide/jpda/conninv.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SS -+´ðËÜjdb¥³¥Þ¥ó¥É -+.LP -+.LP -+´ðËÜŪ¤Ê\f3jdb\fP¥³¥Þ¥ó¥É¤Î°ìÍ÷¤ò¼¨¤·¤Þ¤¹¡£Java¥Ç¥Ð¥Ã¥¬¤¬¥µ¥Ý¡¼¥È¤¹¤ë¥³¥Þ¥ó¥É¤Ï¤³¤ì°Ê³°¤Ë¤â¤¢¤ê¡¢¤½¤ì¤é¤Ï\f3jdb\fP¤Î\f2help\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æɽ¼¨¤Ç¤¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+help¤Þ¤¿¤Ï? -+ºÇ¤â½ÅÍפÊ\f3jdb\fP¥³¥Þ¥ó¥É\f2help\fP¤Ï¡¢Ç§¼±¤µ¤ì¤¿¥³¥Þ¥ó¥É¤Î¥ê¥¹¥È¤Ë´Ê·é¤ÊÀâÌÀ¤òÉÕ¤±¤Æɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+run -+\f3jdb\fP¤òµ¯Æ°¤·¤ÆɬÍפʥ֥졼¥¯¥Ý¥¤¥ó¥È¤òÀßÄꤷ¤¿¤¢¤È¤Ë¡¢¤³¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¡¢¥Ç¥Ð¥Ã¥°¤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¼Â¹Ô¤ò³«»Ï¤Ç¤¤Þ¤¹¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢´û¸¤ÎVM¤ËÀܳ¤·¤Æ¤¤¤ë¾ì¹ç¤È¤Ï°Û¤Ê¤ê¡¢¥Ç¥Ð¥Ã¥°¤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬\f3jdb\fP¤«¤éµ¯Æ°¤·¤¿¤È¤¤Ë¤Î¤ß»ÈÍѤǤ¤Þ¤¹¡£ -+.TP 3 -+cont -+¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¡¢Îã³°¡¢¤Þ¤¿¤Ï¥¹¥Æ¥Ã¥×¼Â¹Ô¤Î¸å¤Ç¡¢¥Ç¥Ð¥Ã¥°¤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¼Â¹Ô¤ò·Ñ³¤·¤Þ¤¹¡£ -+.TP 3 -+print -+Java¥ª¥Ö¥¸¥§¥¯¥È¤ª¤è¤Ó¥×¥ê¥ß¥Æ¥£¥ÖÃͤòɽ¼¨¤·¤Þ¤¹¡£¥×¥ê¥ß¥Æ¥£¥Ö·¿¤ÎÊÑ¿ô¤Þ¤¿¤Ï¥Õ¥£¡¼¥ë¥É¤Î¾ì¹ç¤Ë¤Ï¡¢¼ÂºÝ¤ÎÃͤ¬½ÐÎϤµ¤ì¤Þ¤¹¡£¥ª¥Ö¥¸¥§¥¯¥È¤Î¾ì¹ç¤Ë¤Ï¡¢Ã»¤¤ÀâÌÀ¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢°Ê¹ß¤Î\f2dump\fP¥³¥Þ¥ó¥É¤ÎÀâÌÀ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+\f2Ãí°Õ: ¥í¡¼¥«¥ëÊÑ¿ô¤òɽ¼¨¤¹¤ë¤Ë¤Ï¡¢¤½¤ÎÊÑ¿ô¤ò´Þ¤à¥¯¥é¥¹¤¬\fP\f2javac(1)\fP\f2 \fP\f2\-g\fP¥ª¥×¥·¥ç¥ó¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+\f2print\fP¤Ç¤Ï¡¢¥á¥½¥Ã¥É¤Î¸Æ½Ð¤·¤ò´Þ¤à¿¿ô¤Î´Êñ¤ÊJava¼°¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f2print MyClass.myStaticField\fP -+.TP 2 -+o -+\f2print myObj.myInstanceField\fP -+.TP 2 -+o -+\f2print i+j+k\fP \f2(i¡¢j¡¢¤ª¤è¤Ók¤Ï¥×¥ê¥ß¥Æ¥£¥Ö¤Ç¤¢¤ê¡¢¥Õ¥£¡¼¥ë¥É¤Þ¤¿¤Ï¥í¡¼¥«¥ëÊÑ¿ô¤Î¤¤¤º¤ì¤«)\fP -+.TP 2 -+o -+\f2print myObj.myMethod()\fP \f2(myMethod¤¬null°Ê³°¤òÊÖ¤¹¾ì¹ç)\fP -+.TP 2 -+o -+\f2print new java.lang.String("Hello").length()\fP -+.RE -+.TP 3 -+dump -+¥×¥ê¥ß¥Æ¥£¥ÖÃͤξì¹ç¤Ë¤Ï¡¢¤³¤Î¥³¥Þ¥ó¥É¤Ï\f2print\fP¤ÈƱ¤¸¤Ç¤¹¡£¥ª¥Ö¥¸¥§¥¯¥È¤Î¾ì¹ç¤Ë¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë³Æ¥Õ¥£¡¼¥ë¥É¤Î¸½ºß¤ÎÃͤ¬½ÐÎϤµ¤ì¤Þ¤¹¡£static¥Õ¥£¡¼¥ë¥É¤Èinstance¥Õ¥£¡¼¥ë¥É¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.br -+.br -+\f2dump\fP¥³¥Þ¥ó¥É¤Ç¤Ï¡¢\f2print\fP¥³¥Þ¥ó¥É¤ÈƱ¤¸¼°¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+threads -+¸½ºß¼Â¹ÔÃæ¤Î¥¹¥ì¥Ã¥É¤ò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£¥¹¥ì¥Ã¥É¤´¤È¤Ë¡¢Ì¾Á°¤È¸½ºß¤Î¾õÂÖ¡¢¤ª¤è¤Ó¾¤Î¥³¥Þ¥ó¥É¤Ë»ÈÍѤǤ¤ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+4. (java.lang.Thread)0x1 main running -+.fl -+\fP -+.fi -+¤³¤ÎÎã¤Ç¤Ï¡¢¥¹¥ì¥Ã¥É¡¦¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï4¤Ç¤¢¤ê¡¢¥¹¥ì¥Ã¥É¤Ïjava.lang.Thread¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¹¡£¥¹¥ì¥Ã¥É¤Î̾Á°¤Ï¡Ömain¡×¤Ç¤¢¤ê¡¢¸½ºß¼Â¹ÔÃæ¤Ç¤¹¡£ -+.TP 3 -+thread -+¸½ºß¤Î¥¹¥ì¥Ã¥É¤Ë¤¹¤ë¥¹¥ì¥Ã¥É¤òÁªÂò¤·¤Þ¤¹¡£Â¿¤¯¤Î\f3jdb\fP¥³¥Þ¥ó¥É¤Ï¡¢¸½ºß¤Î¥¹¥ì¥Ã¥É¤ÎÀßÄê¤Ë´ð¤Å¤¤¤Æ¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¥¹¥ì¥Ã¥É¤Ï¡¢\f2threads\fP¥³¥Þ¥ó¥É¤ÇÀâÌÀ¤·¤¿¥¹¥ì¥Ã¥É¡¦¥¤¥ó¥Ç¥Ã¥¯¥¹¤È¤È¤â¤Ë»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+where -+°ú¿ô¤ò»ØÄꤷ¤Ê¤¤¤Ç\f2where\fP¤ò¼Â¹Ô¤¹¤ë¤È¡¢¸½ºß¤Î¥¹¥ì¥Ã¥É¤Î¥¹¥¿¥Ã¥¯¤¬¥À¥ó¥×¤µ¤ì¤Þ¤¹¡£\f2where all\fP¥³¥Þ¥ó¥É¤Ï¡¢¸½ºß¤Î¥¹¥ì¥Ã¥É¡¦¥°¥ë¡¼¥×¤Ë¤¢¤ë¥¹¥ì¥Ã¥É¤Î¥¹¥¿¥Ã¥¯¤ò¤¹¤Ù¤Æ¥À¥ó¥×¤·¤Þ¤¹¡£\f2where\fP \f2threadindex\fP¤Ï¡¢»ØÄꤵ¤ì¤¿¥¹¥ì¥Ã¥É¤Î¥¹¥¿¥Ã¥¯¤ò¥À¥ó¥×¤·¤Þ¤¹¡£ -+.br -+.br -+¸½ºß¤Î¥¹¥ì¥Ã¥É¤¬(¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¤«\f2suspend\fP¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤Æ)ÃæÃǤ·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥í¡¼¥«¥ëÊÑ¿ô¤È¥Õ¥£¡¼¥ë¥É¤Ï\f2print\fP¥³¥Þ¥ó¥É¤È\f2dump\fP¥³¥Þ¥ó¥É¤Çɽ¼¨¤Ç¤¤Þ¤¹¡£\f2up\fP¥³¥Þ¥ó¥É¤È\f2down\fP¥³¥Þ¥ó¥É¤Ç¡¢¤É¤Î¥¹¥¿¥Ã¥¯¡¦¥Õ¥ì¡¼¥à¤ò¥«¥ì¥ó¥È¤Ë¤¹¤ë¤«¤òÁª¤Ö¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È -+.LP -+.LP -+¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¤Ï¡¢¹ÔÈÖ¹æ¤Þ¤¿¤Ï¥á¥½¥Ã¥É¤ÎºÇ½é¤ÎÌ¿Îá¤Ç\f3jdb\fP¤ËÀßÄê¤Ç¤¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+\f2stop at MyClass:22\fP \f2(MyClass¤¬´Þ¤Þ¤ì¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î22¹ÔÌܤκǽé¤ÎÌ¿Îá¤Ë¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¤òÀßÄê)\fP -+.TP 2 -+o -+\f2stop in java.lang.String.length\fP \f2(\fP\f2java.lang.String.length\fP¥á¥½¥Ã¥É¤ÎºÇ½é¤Ë¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¤òÀßÄê) -+.TP 2 -+o -+\f2stop in MyClass.<init>\fP \f2(<init>¤ÏMyClass¥³¥ó¥¹¥È¥é¥¯¥¿¤ò¼±ÊÌ)\fP -+.TP 2 -+o -+\f2stop in MyClass.<clinit>\fP \f2(<clinit>¤ÏMyClass¤ÎÀÅŪ½é´ü²½¥³¡¼¥É¤ò¼±ÊÌ)\fP -+.RE -+ -+.LP -+.LP -+¥á¥½¥Ã¥É¤¬¥ª¡¼¥Ð¡¼¥í¡¼¥É¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¥á¥½¥Ã¥É¤Î°ú¿ô¤Î·¿¤â»ØÄꤷ¤Æ¡¢¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¤ËÂФ·¤ÆŬÀڤʥ᥽¥Ã¥É¤¬ÁªÂò¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¡Ö\f2MyClass.myMethod(int,java.lang.String)\fP¡×¤Þ¤¿¤Ï¡Ö\f2MyClass.myMethod()\fP¡×¤È»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.LP -+\f2clear\fP¥³¥Þ¥ó¥É¤Ï¡¢¡Ö\f2clear\ MyClass:45\fP¡×¤Î¤è¤¦¤Ê¹½Ê¸¤ò»ÈÍѤ·¤Æ¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¤òºï½ü¤·¤Þ¤¹¡£\f2clear\fP¤ò»ÈÍѤ¹¤ë¤«¡¢°ú¿ô¤ò»ØÄꤷ¤Ê¤¤¤Ç¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ë¤È¡¢¸½ºßÀßÄꤵ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£\f2cont\fP¥³¥Þ¥ó¥É¤Ï¼Â¹Ô¤ò·Ñ³¤·¤Þ¤¹¡£ -+.LP -+.SS -+¥¹¥Æ¥Ã¥×¼Â¹Ô -+.LP -+.LP -+\f2step\fP¥³¥Þ¥ó¥É¤Ï¡¢¸½ºß¤Î¥¹¥¿¥Ã¥¯¡¦¥Õ¥ì¡¼¥à¤Þ¤¿¤Ï¸Æ¤Ó½Ð¤µ¤ì¤¿¥á¥½¥Ã¥ÉÆâ¤Ç¡¢¼¡¤Î¹Ô¤ò¼Â¹Ô¤·¤Þ¤¹¡£\f2next\fP¥³¥Þ¥ó¥É¤Ï¡¢¸½ºß¤Î¥¹¥¿¥Ã¥¯¡¦¥Õ¥ì¡¼¥à¤Î¼¡¤Î¹Ô¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.LP -+.SS -+Îã³° -+.LP -+.LP -+¥¹¥í¡¼¤·¤Æ¤¤¤ë¥¹¥ì¥Ã¥É¤Î¸Æ½Ð¤·¥¹¥¿¥Ã¥¯¾å¤Î¤É¤³¤Ë¤âcatchʸ¤¬¤Ê¤¤¾ì¹ç¤ËÎã³°¤¬È¯À¸¤¹¤ë¤È¡¢VM¤ÏÄ̾Îã³°¥È¥ì¡¼¥¹¤ò½ÐÎϤ·¤Æ½ªÎ»¤·¤Þ¤¹¡£¤¿¤À¤·¡¢\f3jdb\fP´Ä¶¤Ç¼Â¹Ô¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢°ãÈ¿¤Î¥¹¥í¡¼»þ¤Ë\f3jdb\fP¤ËÀ©¸æ¤¬Ìá¤ê¤Þ¤¹¡£¼¡¤Ë¡¢\f3jdb\fP¤ò»ÈÍѤ·¤ÆÎã³°¤Î¸¶°ø¤ò¿ÇÃǤ·¤Þ¤¹¡£ -+.LP -+.LP -+¤¿¤È¤¨¤Ð¡¢¡Ö\f2catch java.io.FileNotFoundException\fP¡×¤Þ¤¿¤Ï¡Ö\f2catch mypackage.BigTroubleException\fP¡×¤Î¤è¤¦¤Ë\f2catch\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ë¤È¡¢¥Ç¥Ð¥Ã¥°¤µ¤ì¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢Â¾¤ÎÎã³°¤¬¥¹¥í¡¼¤µ¤ì¤¿¤È¤¤ËÄä»ß¤·¤Þ¤¹¡£Îã³°¤¬ÆÃÄê¤Î¥¯¥é¥¹(¤Þ¤¿¤Ï¥µ¥Ö¥¯¥é¥¹)¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Î¾ì¹ç¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÏÎã³°¤¬¥¹¥í¡¼¤µ¤ì¤¿¾ì½ê¤ÇÄä»ß¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2ignore\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ë¤È¡¢°ÊÁ°¤Î\f2catch\fP¥³¥Þ¥ó¥É¤Î¸ú²Ì¤¬Ìµ¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f2Ãí°Õ: \fP\f2ignore\fP¥³¥Þ¥ó¥É¤Ç¤Ï¡¢¥Ç¥Ð¥Ã¥°¤µ¤ì¤ëVM¤ÏÎã³°¤ò̵»ë¤»¤º¡¢¥Ç¥Ð¥Ã¥¬¤Î¤ß¤¬Îã³°¤ò̵»ë¤·¤Þ¤¹¡£ -+.LP -+.SH "¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÇJava¥¢¥×¥ê¥±¡¼¥·¥ç¥óµ¯Æ°¥Ä¡¼¥ë¤Î¤«¤ï¤ê¤Ë\f3jdb\fP¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢\f3jdb\fP¤Ï¡¢\f2\-D\fP¡¢\f2\-classpath\fP¡¢\f2\-X<option>\fP¤Ê¤É¡¢java¥³¥Þ¥ó¥É¤ÈƱ¤¸¿ô¤Î¥ª¥×¥·¥ç¥ó¤ò¼õ¤±Æþ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f3jdb\fP¤Ï¡¢¤½¤Î¾¤Ë¼¡¤Î¥ª¥×¥·¥ç¥ó¤ò¼õ¤±Æþ¤ì¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+\-help -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-sourcepath <dir1:dir2:...> -+»ØÄꤵ¤ì¤¿¥Ñ¥¹¤ò»ÈÍѤ·¤Æ¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¡¦¥Ñ¥¹¤Î¡Ö.¡×¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-attach <address> -+¥Ç¥Õ¥©¥ë¥È¤ÎÀܳµ¡¹½¤ò»ÈÍѤ·¤Æ¡¢¤¹¤Ç¤Ë¼Â¹ÔÃæ¤ÎVM¤Ë¥Ç¥Ð¥Ã¥¬¤òÀܳ¤·¤Þ¤¹¡£ -+.TP 3 -+\-listen <address> -+¼Â¹ÔÃæ¤ÎVM¤¬É¸½à¤Î¥³¥Í¥¯¥¿¤ò»ÈÍѤ·¤Æ»ØÄꤵ¤ì¤¿¥¢¥É¥ì¥¹¤ËÀܳ¤¹¤ë¤Î¤òÂÔµ¡¤·¤Þ¤¹¡£ -+.TP 3 -+\-listenany -+¼Â¹ÔÃæ¤ÎVM¤¬É¸½à¤Î¥³¥Í¥¯¥¿¤ò»ÈÍѤ·¤ÆÍøÍѲÄǽ¤ÊǤ°Õ¤Î¥¢¥É¥ì¥¹¤ËÀܳ¤¹¤ë¤Î¤òÂÔµ¡¤·¤Þ¤¹¡£ -+.TP 3 -+\-launch -+¥Ç¥Ð¥Ã¥°¤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òjdb¤Îµ¯Æ°¸å¤¿¤À¤Á¤Ëµ¯Æ°¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¡¢\f2run\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ëɬÍפ¬¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£¥Ç¥Ð¥Ã¥°¤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢µ¯Æ°¸å¡¢½é´ü¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥¯¥é¥¹¤¬¥í¡¼¥É¤µ¤ì¤ëľÁ°¤ËÄä»ß¤·¤Þ¤¹¡£¤½¤Î»þÅÀ¤Ç¡¢É¬Íפʥ֥졼¥¯¥Ý¥¤¥ó¥È¤òÀßÄꤷ¡¢\f2cont\fP¤ò»ÈÍѤ·¤Æ¼Â¹Ô¤ò·Ñ³¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+\-listconnectors -+¤³¤ÎVM¤ÇÍøÍѤǤ¤ë¥³¥Í¥¯¥¿¤ò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-connect <connector\-name>:<name1>=<value1>,... -+°ìÍ÷ɽ¼¨¤µ¤ì¤¿°ú¿ô¤ÎÃͤȻØÄê¤Î¥³¥Í¥¯¥¿¤ò»ÈÍѤ·¤Æ¥¿¡¼¥²¥Ã¥ÈVM¤ËÀܳ¤·¤Þ¤¹¡£ -+.TP 3 -+\-dbgtrace [flags] -+jdb¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-tclient -+Java HotSpot(tm) VM(¥¯¥é¥¤¥¢¥ó¥È)Æâ¤Ç¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.TP 3 -+\-tserver -+Java HotSpot(tm) VM(¥µ¡¼¥Ð¡¼)Æâ¤Ç¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.TP 3 -+\-Joption -+jdb¤Î¼Â¹Ô¤Ë»ÈÍѤµ¤ì¤ëJava²¾ÁÛ¥Þ¥·¥ó¤Ë\f2option\fP¤òÅϤ·¤Þ¤¹¡£(¥¢¥×¥ê¥±¡¼¥·¥ç¥óJava²¾ÁÛ¥Þ¥·¥ó¤ËÂФ¹¤ë¥ª¥×¥·¥ç¥ó¤Ï¡¢\f3run\fP¥³¥Þ¥ó¥É¤ËÅϤµ¤ì¤ë)¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+¥Ç¥Ð¥Ã¥¬¤È¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¦VM¤òÀܳ¤¹¤ë¤¿¤á¤ÎÂåÂص¡¹½¤ËÂФ·¤Æ¡¢¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤Î¾¤ÎÀܳ¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢Java Platform Debugger Architecture¤Î -+.na -+\f2¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/conninv.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SS -+¥Ç¥Ð¥Ã¥°ÂÐ¾Ý¤Î¥×¥í¥»¥¹¤ËžÁ÷¤µ¤ì¤ë¥ª¥×¥·¥ç¥ó -+.LP -+.RS 3 -+.TP 3 -+\-v \-verbose[:class|gc|jni] -+¾éĹ¥â¡¼¥É¤Ë¤·¤Þ¤¹¡£ -+.TP 3 -+\-D<name>=<value> -+¥·¥¹¥Æ¥à¡¦¥×¥í¥Ñ¥Æ¥£¤òÀßÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-classpath <directories separated by ":"> -+¥¯¥é¥¹¤ò¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-X<option> -+Èóɸ½à¥¿¡¼¥²¥Ã¥ÈVM¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.LP -+javac(1)¡¢java(1)¡¢javah(1)¡¢javap(1)¡¢javadoc(1) -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jhat.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jhat.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,135 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jhat 1 "07 May 2011" -+.TH jhat 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jhat \- Java¥Ò¡¼¥×²òÀϥġ¼¥ë -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+¥Ñ¥é¥á¡¼¥¿ -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jhat\fP [ \f2options\fP ] <heap\-dump\-file> -+.fl -+ -+.fl -+.fi -+ -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.RS 3 -+.TP 3 -+options -+¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢¥³¥Þ¥ó¥É̾¤Îľ¸å¤Ëµ½Ò¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+heap\-dump\-file -+¥Ö¥é¥¦¥ºÂоݤȤʤëJava¥Ð¥¤¥Ê¥ê¡¦¥Ò¡¼¥×¡¦¥À¥ó¥×¡¦¥Õ¥¡¥¤¥ë¡£Ê£¿ô¤Î¥Ò¡¼¥×¡¦¥À¥ó¥×¤ò´Þ¤à¥À¥ó¥×¡¦¥Õ¥¡¥¤¥ë¤Î¾ì¹ç¡¢¡Öfoo.hprof#3¡×¤Î¤è¤¦¤Ë¥Õ¥¡¥¤¥ë̾¤Î¸å¤Ë¡Ö#<number>¡×¤òÉղ乤뤳¤È¤Ç¡¢¥Õ¥¡¥¤¥ëÆâ¤ÎÆÃÄê¤Î¥À¥ó¥×¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jhat\fP¥³¥Þ¥ó¥É¤Ï¡¢java¥Ò¡¼¥×¡¦¥À¥ó¥×¡¦¥Õ¥¡¥¤¥ë¤ò²òÀϤ·¡¢Web¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤·¤Þ¤¹¡£jhat¤ò»ÈÍѤ¹¤ì¤Ð¡¢»È¤¤´·¤ì¤¿Web¥Ö¥é¥¦¥¶¤ò»ÈÍѤ·¤Æ¥Ò¡¼¥×¡¦¥À¥ó¥×¤ò¥Ö¥é¥¦¥º¤Ç¤¤Þ¤¹¡£jhat¤Ï¡¢¡Ö´ûÃΤΥ¯¥é¥¹¡ÖFoo¡×¤Î¤¹¤Ù¤Æ¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òɽ¼¨¤¹¤ë¡×¤È¤¤¤Ã¤¿¡¢»öÁ°¤ËÀ߷פµ¤ì¤¿¥¯¥¨¥ê¡¼¤Î¾¡¢¥Ò¡¼¥×¡¦¥À¥ó¥×¤ò¥¯¥¨¥ê¡¼¤¹¤ëSQL¤Ë»÷¤¿¥¯¥¨¥ê¡¼¸À¸ì¤Ç¤¢¤ë\f3OQL\fP(\f3O\fPbject\f3Q\fPuery\f3L\fPanguage)¤â¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£OQL¤Î¥Ø¥ë¥×¤Ë¤Ï¡¢jhat¤Ë¤è¤Ã¤Æɽ¼¨¤µ¤ì¤ëOQL¥Ø¥ë¥×¡¦¥Ú¡¼¥¸¤«¤é¥¢¥¯¥»¥¹¤Ç¤¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¡¦¥Ý¡¼¥È¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢OQL¤Î¥Ø¥ë¥×¤Ïhttp://localhost:7000/oqlhelp/¤ÇÍøÍѲÄǽ¤Ç¤¹¡£ -+.LP -+.LP -+Java¤Î¥Ò¡¼¥×¡¦¥À¥ó¥×¤òÀ¸À®¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤¤¤¯¤Ä¤«¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+jmap(1)¤Î\-dump¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¼Â¹Ô»þ¤Ë¥Ò¡¼¥×¡¦¥À¥ó¥×¤ò¼èÆÀ¤¹¤ëÊýË¡ -+.TP 2 -+o -+jconsole(1)¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ -+.na -+\f2HotSpotDiagnosticMXBean\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html·Ðͳ¤Ç¼Â¹Ô»þ¤Ë¥Ò¡¼¥×¡¦¥À¥ó¥×¤ò¼èÆÀ¤¹¤ëÊýË¡ -+.TP 2 -+o -+\-XX:+HeapDumpOnOutOfMemoryError VM¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¡¢OutOfMemoryError¤Î¥¹¥í¡¼»þ¤Ë¥Ò¡¼¥×¡¦¥À¥ó¥×¤òÀ¸À®¤¹¤ëÊýË¡ -+.TP 2 -+o -+hprof¤ò»ÈÍѤ¹¤ëÊýË¡ -+.RE -+ -+.LP -+.LP -+\f3Ãí°Õ:\fP ¤³¤Î¥Ä¡¼¥ë¤Ï\f3»î¸³Åª¤Ê¤â¤Î\fP¤Ç¤¢¤ê¡¢¾Íè¤ÎJDK¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÍøÍÑ\f3¤Ç¤¤Ê¤¯¤Ê¤ë\fP²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-stack false/true -+¥ª¥Ö¥¸¥§¥¯¥È³äÅö¸Æ½Ð¤·¥¹¥¿¥Ã¥¯¤ÎÄÉÀפò̵¸ú¤Ë¤·¤Þ¤¹¡£¥Ò¡¼¥×¡¦¥À¥ó¥×Æâ¤Ç³äÅö¥µ¥¤¥È¾ðÊ󤬻ÈÍѤǤ¤Ê¤¤¾ì¹ç¡¢¤³¤Î¥Õ¥é¥°¤òfalse¤ËÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ïtrue¤Ç¤¹¡£ -+.TP 3 -+\-refs false/true -+¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î»²¾È¤ÎÄÉÀפò̵¸ú¤Ë¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ïtrue¤Ç¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥Ò¡¼¥×Æâ¤Î¤¹¤Ù¤Æ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ä¤¤¤Æ¡¢¥Ð¥Ã¥¯¥Ý¥¤¥ó¥¿(»ØÄꤵ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Ý¥¤¥ó¥È¤·¤Æ¤¤¤ë¥ª¥Ö¥¸¥§¥¯¥È¡£»²¾È¼Ô¤Þ¤¿¤Ï¼õ¿®»²¾È¤È¤â¸Æ¤Ð¤ì¤ë)¤¬·×»»¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-port port\-number -+jhat¤ÎHTTP¥µ¡¼¥Ð¡¼¤Î¥Ý¡¼¥È¤òÀßÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ï7000¤Ç¤¹¡£ -+.TP 3 -+\-exclude exclude\-file -+¡ÖÅþã²Äǽ¤Ê¥ª¥Ö¥¸¥§¥¯¥È¡×¤Î¥¯¥¨¥ê¡¼¤«¤é½ü³°¤¹¤ëɬÍפ¬¤¢¤ë¥Ç¡¼¥¿¡¦¥á¥ó¥Ð¡¼¤Î°ìÍ÷¤ò´Þ¤à¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Ë\f2java.lang.String.value\fP¤¬´Þ¤Þ¤ì¤Æ¤¤¤¿¾ì¹ç¡¢ÆÃÄê¤Î¥ª¥Ö¥¸¥§¥¯¥È¡Öo¡×¤«¤éÅþã²Äǽ¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Î¥ê¥¹¥È¤ò·×»»¤¹¤ëºÝ¤Ë¡¢\f2java.lang.String.value\fP¥Õ¥£¡¼¥ë¥É¤Ë´ØÏ¢¤¹¤ë»²¾È¥Ñ¥¹¤¬¹Í褵¤ì¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+\-baseline baseline\-dump\-file -+¥Ù¡¼¥¹¥é¥¤¥ó¤È¤Ê¤ë¥Ò¡¼¥×¡¦¥À¥ó¥×¤ò»ØÄꤷ¤Þ¤¹¡£Î¾Êý¤Î¥Ò¡¼¥×¡¦¥À¥ó¥×Æâ¤ÇƱ¤¸¥ª¥Ö¥¸¥§¥¯¥ÈID¤ò»ý¤Ä¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡Ö¿·µ¬¤Ç¤Ï¤Ê¤¤¡×¤È¤·¤Æ¥Þ¡¼¥¯¤µ¤ì¤Þ¤¹¡£¤½¤Î¾¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡Ö¿·µ¬¡×¤È¤·¤Æ¥Þ¡¼¥¯¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢°Û¤Ê¤ë2¤Ä¤Î¥Ò¡¼¥×¡¦¥À¥ó¥×¤òÈæ³Ó¤¹¤ëºÝ¤ËÌòΩ¤Á¤Þ¤¹¡£ -+.TP 3 -+\-debug int -+¤³¤Î¥Ä¡¼¥ë¤Î¥Ç¥Ð¥Ã¥°¡¦¥ì¥Ù¥ë¤òÀßÄꤷ¤Þ¤¹¡£0¤Ï¡Ö¥Ç¥Ð¥Ã¥°½ÐÎϤʤ·¡×¤ò°ÕÌ£¤·¤Þ¤¹¡£¤è¤êÂ礤ÊÃͤòÀßÄꤹ¤ë¤È¡¢¤è¤ê¾éĹ¤Ê¥â¡¼¥É¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+\-version -+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òÊó¹ð¤·¤¿¤¢¤È¡¢½ªÎ»¤·¤Þ¤¹¡£ -+.TP 3 -+\-h -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Æ½ªÎ»¤·¤Þ¤¹¡£ -+.TP 3 -+\-help -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Æ½ªÎ»¤·¤Þ¤¹¡£ -+.TP 3 -+\-J<flag> -+jhat¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ëJava²¾ÁÛ¥Þ¥·¥ó¤Ë<flag>¤òÅϤ·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢512M¥Ð¥¤¥È¤ÎºÇÂç¥Ò¡¼¥×¡¦¥µ¥¤¥º¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢\-J\-Xmx512m¤È¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+jmap(1) -+.TP 2 -+o -+jconsole(1) -+.TP 2 -+o -+hprof \- ¥Ò¡¼¥×¤ª¤è¤ÓCPU¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¡¦¥Ä¡¼¥ë -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jinfo.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jinfo.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,148 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jinfo 1 "07 May 2011" -+.TH jinfo 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jinfo \- ¹½À®¾ðÊó -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+¥Ñ¥é¥á¡¼¥¿ -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jinfo\fP [ option ] pid -+.fl -+\f3jinfo\fP [ option ] executable core -+.fl -+\f3jinfo\fP [ option ] [server\-id@]remote\-hostname\-or\-IP -+.fl -+.fi -+ -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.RS 3 -+.TP 3 -+option -+³Æ¥ª¥×¥·¥ç¥ó¤Ï¸ß¤¤¤ËÇÓ¾Ū¤Ç¤¹¡£¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢¥³¥Þ¥ó¥É̾¤Îľ¸å¤Ëµ½Ò¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+pid -+½ÐÎϤ¹¤ë¹½À®¾ðÊó¤Î¥×¥í¥»¥¹ID¡£¥×¥í¥»¥¹¤ÏJava¥×¥í¥»¥¹¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Þ¥·¥ó¾å¤Ç¼Â¹Ô¤·¤Æ¤¤¤ëJava¥×¥í¥»¥¹¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢jps(1)¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+executable -+¥³¥¢¡¦¥À¥ó¥×¤ÎºîÀ®¸µ¤ÎJava¼Â¹Ô²Äǽ¥Õ¥¡¥¤¥ë¡£ -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+core -+½ÐÎϤ¹¤ë¹½À®¾ðÊó¤Î¥³¥¢¡¦¥Õ¥¡¥¤¥ë¡£ -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+remote\-hostname\-or\-IP -+¥ê¥â¡¼¥È¡¦¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼(jsadebugd(1)¤ò»²¾È)¤Î¥Û¥¹¥È̾¤Þ¤¿¤ÏIP¥¢¥É¥ì¥¹¡£ -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+server\-id -+Ê£¿ô¤Î¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤¬Æ±°ì¤Î¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¤Ç¼Â¹Ô¤·¤Æ¤¤¤ë¾ì¹ç¤Î¡¢¥ª¥×¥·¥ç¥ó¸ÇͤÎID¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jinfo\fP¤Ï¡¢»ØÄꤵ¤ì¤¿Java¥×¥í¥»¥¹¤ä¥³¥¢¡¦¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥ê¥â¡¼¥È¡¦¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤ÎJava¹½À®¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£¹½À®¾ðÊó¤Ë¤Ï¡¢Java¥·¥¹¥Æ¥à¡¦¥×¥í¥Ñ¥Æ¥£¤ÈJava²¾ÁÛ¥Þ¥·¥ó¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥Õ¥é¥°¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£»ØÄꤵ¤ì¤¿¥×¥í¥»¥¹¤¬64¥Ó¥Ã¥ÈVM¾å¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢\f2\-J\-d64\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.br -+jinfo \-J\-d64 \-sysprops pid -+.LP -+.LP -+\f3Ãí°Õ \- ¤³¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ï¥µ¥Ý¡¼¥ÈÂоݳ°¤Ç¤¢¤ê¡¢¾Íè¤ÎJDK¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÍøÍѤǤ¤Ê¤¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£dbgeng.dll¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤¤Windows¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¡ÖDebugging Tools For Windows¡×¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Ê¤¤¤È¤³¤ì¤é¤Î¥Ä¡¼¥ë¤¬Àµ¾ï¤ËÆ°ºî¤·¤Þ¤»¤ó¡£¤Þ¤¿¡¢\fP\f4PATH\fP\f3´Ä¶ÊÑ¿ô¤Ë¤Ï¡¢¥¿¡¼¥²¥Ã¥È¡¦¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤ë\fP\f4jvm.dll\fP\f3¤Î¾ì½ê¡¢¤Þ¤¿¤Ï¥¯¥é¥Ã¥·¥å¡¦¥À¥ó¥×¡¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤¿¾ì½ê¤¬´Þ¤Þ¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£\fP -+.LP -+.LP -+\f3¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£\fP\f4set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+<¥ª¥×¥·¥ç¥ó¤Ê¤·> -+¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥Õ¥é¥°¤ò¡¢¥·¥¹¥Æ¥à¡¦¥×¥í¥Ñ¥Æ¥£Ì¾¤ÈÃͤΥڥ¢¤È¤È¤â¤Ë½ÐÎϤ·¤Þ¤¹¡£ -+.br -+.TP 3 -+\-flag name -+»ØÄꤵ¤ì¤¿¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥Õ¥é¥°¤Î̾Á°¤ÈÃͤò½ÐÎϤ·¤Þ¤¹¡£ -+.br -+.TP 3 -+\-flag [+|\-]name -+»ØÄꤵ¤ì¤¿¥Ö¡¼¥ë·¿¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥Õ¥é¥°¤ò͸ú¤Þ¤¿¤Ï̵¸ú¤Ë¤·¤Þ¤¹¡£ -+.br -+.TP 3 -+\-flag name=value -+»ØÄꤵ¤ì¤¿¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥Õ¥é¥°¤ò»ØÄꤵ¤ì¤¿ÃͤËÀßÄꤷ¤Þ¤¹¡£ -+.br -+.TP 3 -+\-flags -+JVM¤ËÅϤµ¤ì¤ë¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥Õ¥é¥°¤ò¥Ú¥¢¤Ç½ÐÎϤ·¤Þ¤¹¡£ -+.br -+.TP 3 -+\-sysprops -+Java¥·¥¹¥Æ¥à¡¦¥×¥í¥Ñ¥Æ¥£¤ò̾Á°¤ÈÃͤΥڥ¢¤È¤·¤Æ½ÐÎϤ·¤Þ¤¹¡£ -+.br -+.TP 3 -+\-h -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-help -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+jps(1) -+.TP 2 -+o -+jsadebugd(1) -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jmap.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jmap.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,161 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jmap 1 "07 May 2011" -+.TH jmap 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jmap \- ¥á¥â¥ê¡¼¡¦¥Þ¥Ã¥× -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+¥Ñ¥é¥á¡¼¥¿ -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jmap\fP [ option ] pid -+.fl -+\f3jmap\fP [ option ] executable core -+.fl -+\f3jmap\fP [ option ] [server\-id@]remote\-hostname\-or\-IP -+.fl -+.fi -+ -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.RS 3 -+.TP 3 -+option -+³Æ¥ª¥×¥·¥ç¥ó¤Ï¸ß¤¤¤ËÇÓ¾Ū¤Ç¤¹¡£¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢¥³¥Þ¥ó¥É̾¤Îľ¸å¤Ëµ½Ò¤·¤Þ¤¹¡£ -+.TP 3 -+pid -+½ÐÎϤ¹¤ë¥á¥â¥ê¡¼¡¦¥Þ¥Ã¥×¤Î¥×¥í¥»¥¹ID¡£¥×¥í¥»¥¹¤ÏJava¥×¥í¥»¥¹¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Þ¥·¥ó¾å¤Ç¼Â¹Ô¤·¤Æ¤¤¤ëJava¥×¥í¥»¥¹¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢jps(1)¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.br -+.TP 3 -+executable -+¥³¥¢¡¦¥À¥ó¥×¤ÎºîÀ®¸µ¤ÎJava¼Â¹Ô²Äǽ¥Õ¥¡¥¤¥ë¡£ -+.br -+.TP 3 -+core -+½ÐÎϤ¹¤ë¥á¥â¥ê¡¼¡¦¥Þ¥Ã¥×¤Î¥³¥¢¡¦¥Õ¥¡¥¤¥ë¡£ -+.br -+.TP 3 -+remote\-hostname\-or\-IP -+¥ê¥â¡¼¥È¡¦¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼(jsadebugd(1)¤ò»²¾È)¤Î¥Û¥¹¥È̾¤Þ¤¿¤ÏIP¥¢¥É¥ì¥¹¡£ -+.br -+.TP 3 -+server\-id -+Ê£¿ô¤Î¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤¬Æ±°ì¤Î¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¤ÇÆ°ºî¤·¤Æ¤¤¤ë¾ì¹ç¤Î¡¢¥ª¥×¥·¥ç¥ó¸ÇͤÎID¤Ç¤¹¡£ -+.br -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jmap\fP¤Ï¡¢»ØÄꤵ¤ì¤¿¥×¥í¥»¥¹¤ä¥³¥¢¡¦¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥ê¥â¡¼¥È¡¦¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤Î¡¢¶¦ÍÑ¥ª¥Ö¥¸¥§¥¯¥È¡¦¥á¥â¥ê¡¼¡¦¥Þ¥Ã¥×¤Þ¤¿¤Ï¥Ò¡¼¥×¡¦¥á¥â¥ê¡¼¤Î¾ÜºÙ¤ò½ÐÎϤ·¤Þ¤¹¡£»ØÄꤵ¤ì¤¿¥×¥í¥»¥¹¤¬64¥Ó¥Ã¥ÈVM¾å¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢\f2\-J\-d64\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+jmap \-J\-d64 \-heap pid -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f3Ãí°Õ: ¤³¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ï¥µ¥Ý¡¼¥ÈÂоݳ°¤Ç¤¢¤ê¡¢¾Íè¤ÎJDK¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÍøÍѤǤ¤Ê¤¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£dbgeng.dll¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤¤Windows¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¡ÖDebugging Tools For Windows¡×¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Ê¤¤¤È¤³¤ì¤é¤Î¥Ä¡¼¥ë¤¬Àµ¾ï¤ËÆ°ºî¤·¤Þ¤»¤ó¡£¤Þ¤¿¡¢\fP\f4PATH\fP\f3´Ä¶ÊÑ¿ô¤Ë¤Ï¡¢¥¿¡¼¥²¥Ã¥È¡¦¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤ë\fP\f4jvm.dll\fP\f3¤Î¾ì½ê¡¢¤Þ¤¿¤Ï¥¯¥é¥Ã¥·¥å¡¦¥À¥ó¥×¡¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤¿¾ì½ê¤¬´Þ¤Þ¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£\fP -+.LP -+.LP -+\f3¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£\fP\f4set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -+.LP -+.br -+ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+<¥ª¥×¥·¥ç¥ó¤Ê¤·> -+¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Ê¤¤¾ì¹ç¡¢jmap¤Ï¶¦ÍÑ¥ª¥Ö¥¸¥§¥¯¥È¡¦¥Þ¥Ã¥Ô¥ó¥°¤ò½ÐÎϤ·¤Þ¤¹¡£¥¿¡¼¥²¥Ã¥ÈVM¤Ë¥í¡¼¥É¤µ¤ì¤¿¶¦ÍÑ¥ª¥Ö¥¸¥§¥¯¥È¤´¤È¤Ë¡¢³«»Ï¥¢¥É¥ì¥¹¡¢¥Þ¥Ã¥Ô¥ó¥°¤Î¥µ¥¤¥º¤ª¤è¤Ó¶¦ÍÑ¥ª¥Ö¥¸¥§¥¯¥È¡¦¥Õ¥¡¥¤¥ë¤Î¥Õ¥ë¥Ñ¥¹¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢Solaris \f3pmap\fP¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ÈÎà»÷¤·¤Æ¤¤¤Þ¤¹¡£ -+.br -+.TP 3 -+\-dump:[live,]format=b,file=<filename> -+Java¥Ò¡¼¥×¤òhprof¥Ð¥¤¥Ê¥ê·Á¼°¤Çfilename¤Ë¥À¥ó¥×¤·¤Þ¤¹¡£\f2live\fP¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Ï¾Êά²Äǽ¤Ç¤¹¡£¤³¤ì¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¥Ò¡¼¥×Æâ¤ÇÀ¸Â¸Ãæ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¤ß¤¬¥À¥ó¥×¤µ¤ì¤Þ¤¹¡£¥Ò¡¼¥×¡¦¥À¥ó¥×¤ò»²¾È¤¹¤ë¤Ë¤Ï¡¢À¸À®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤òjhat(1) (Java Heap Analysis Tool)¤ò»ÈÍѤ·¤ÆÆɤ߼è¤ê¤Þ¤¹¡£ -+.br -+.TP 3 -+\-finalizerinfo -+¥Õ¥¡¥¤¥Ê¥é¥¤¥º¤òÂԤäƤ¤¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ë´Ø¤¹¤ë¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.br -+.TP 3 -+\-heap -+¥Ò¡¼¥×¡¦¥µ¥Þ¥ê¡¼¤ò½ÐÎϤ·¤Þ¤¹¡£»ÈÍѤµ¤ì¤ëGC¥¢¥ë¥´¥ê¥º¥à¡¢¥Ò¡¼¥×¹½À®¤ª¤è¤ÓÀ¤Â头¤È¤Î¥Ò¡¼¥×»ÈÍÑΨ¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.br -+.TP 3 -+\-histo[:live] -+¥Ò¡¼¥×¤Î¥Ò¥¹¥È¥°¥é¥à¤ò½ÐÎϤ·¤Þ¤¹¡£Java¥¯¥é¥¹¤´¤È¤Ë¡¢¥ª¥Ö¥¸¥§¥¯¥È¤Î¿ô¡¢¥Ð¥¤¥Èñ°Ì¤Ç¤Î¥á¥â¥ê¡¼¡¦¥µ¥¤¥º¡¢¤ª¤è¤Ó´°Á´½¤¾þ¥¯¥é¥¹Ì¾¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£VMÆâÉô¥¯¥é¥¹Ì¾¤Ï¡¢¡Ö*¡×¤ÎÀÜƬ¼¤òÉÕ¤±¤Æ½ÐÎϤµ¤ì¤Þ¤¹¡£\f2live\fP¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢À¸Â¸Ãæ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¤ß¤¬¥«¥¦¥ó¥È¤µ¤ì¤Þ¤¹¡£ -+.br -+.TP 3 -+\-permstat -+PermanentÀ¤Âå¤ÎJava¥Ò¡¼¥×¤Î¡¢¥¯¥é¥¹¡¦¥í¡¼¥À¡¼´ØÏ¢¤ÎÅý·×¥Ç¡¼¥¿¤ò½ÐÎϤ·¤Þ¤¹¡£¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤´¤È¤Ë¡¢¤½¤Î̾Á°¡¢¾õÂÖ¡¢¥¢¥É¥ì¥¹¡¢¿Æ¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¡¢¤ª¤è¤Ó¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤¬¥í¡¼¥É¤·¤¿¥¯¥é¥¹¤Î¿ô¤È¥µ¥¤¥º¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£¤µ¤é¤Ë¡¢intern¤µ¤ì¤¿Ê¸»úÎó¤Î¿ô¤È¥µ¥¤¥º¤â½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.br -+.TP 3 -+\-F -+¶¯À©(Force)¡£pid¤¬±þÅú¤·¤Ê¤¤¾ì¹ç¤Ë¡¢jmap \-dump¤Þ¤¿¤Ïjmap \-histo¥ª¥×¥·¥ç¥ó¤È¤È¤â¤Ë»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¥â¡¼¥É¤Ç¤Ï¡¢\f2live\fP¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó¡£ -+.br -+.TP 3 -+\-h -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.br -+.br -+.TP 3 -+\-help -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.br -+.br -+.TP 3 -+\-J<flag> -+jmap¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ëJava²¾ÁÛ¥Þ¥·¥ó¤Ë<flag>¤òÅϤ·¤Þ¤¹¡£ -+.br -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+pmap(1) -+.TP 2 -+o -+jhat(1) -+.TP 2 -+o -+jps(1) -+.TP 2 -+o -+jsadebugd(1) -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jps.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jps.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,260 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jps 1 "07 May 2011" -+.TH jps 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jps \- Java²¾ÁÛ¥Þ¥·¥ó¡¦¥×¥í¥»¥¹¡¦¥¹¥Æ¡¼¥¿¥¹¡¦¥Ä¡¼¥ë -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+¥Ñ¥é¥á¡¼¥¿ -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+¥Û¥¹¥È¼±ÊÌ»Ò -+.TP 2 -+o -+½ÐÎÏ·Á¼° -+.TP 2 -+o -+Îã -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jps\fP [ \f2options\fP ] [ \f2hostid\fP ] -+.br -+ -+.fl -+.fi -+ -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.RS 3 -+.TP 3 -+options -+¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¡£ -+.TP 3 -+hostid -+¥×¥í¥»¥¹¡¦¥ì¥Ý¡¼¥È¤òÀ¸À®¤¹¤ë¥Û¥¹¥È¤Î¥Û¥¹¥È¼±Ê̻ҡ£\f2hostid\fP¤Ë¤Ï¡¢ÄÌ¿®¥×¥í¥È¥³¥ë¡¢¥Ý¡¼¥ÈÈֹ桢¼ÂÁõ¤Ë¸Çͤʾ¤Î¥Ç¡¼¥¿¤ò»ØÄꤷ¤¿¥ª¥×¥·¥ç¥ó¡¦¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jps\fP¥Ä¡¼¥ë¤Ï¡¢¥¿¡¼¥²¥Ã¥È¡¦¥·¥¹¥Æ¥à¾å¤Ç·×¬¤µ¤ì¤¿HotSpot Java²¾ÁÛ¥Þ¥·¥ó(JVM)¤ò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£¤³¤Î¥Ä¡¼¥ë¤Çɽ¼¨¤Ç¤¤ë¥ì¥Ý¡¼¥È¾ðÊó¤Ï¡¢¥¢¥¯¥»¥¹¸¢¤ò»ý¤Ã¤¿JVM¤Ë´Ø¤¹¤ë¤â¤Î¤Ë¸ÂÄꤵ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f2hostid\fP¤ò»ØÄꤻ¤º¤Ë\f3jps\fP¤ò¼Â¹Ô¤·¤¿¾ì¹ç¡¢¥í¡¼¥«¥ë¡¦¥Û¥¹¥È¤Ç·×¬¤µ¤ì¤¿JVM¤¬¸¡º÷¤µ¤ì¤Þ¤¹¡£\f2hostid\fP¤ò»ØÄꤷ¤Æµ¯Æ°¤·¤¿¾ì¹ç¡¢»ØÄꤵ¤ì¤¿¥×¥í¥È¥³¥ë¤È¥Ý¡¼¥È¤ò»ÈÍѤ·¤Æ¡¢»ØÄꤵ¤ì¤¿¥Û¥¹¥È¾å¤ÎJVM¤ò¸¡º÷¤·¤Þ¤¹¡£\f3jstatd\fP¥×¥í¥»¥¹¤¬¥¿¡¼¥²¥Ã¥È¡¦¥Û¥¹¥È¾å¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤ÈÁÛÄꤵ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f3jps\fP¥³¥Þ¥ó¥É¤Ï¡¢¥¿¡¼¥²¥Ã¥È¡¦¥·¥¹¥Æ¥à¤Ç·×¬¤µ¤ì¤¿³ÆJVM¤Ë¤Ä¤¤¤Æ¡¢¥í¡¼¥«¥ëVM¼±Ê̻ҡ¢¤Ä¤Þ¤ê\f2lvmid\fP¤ò¥ì¥Ý¡¼¥È¤·¤Þ¤¹¡£\f3lvmid\fP¤Ï¡¢°ìÈÌŪ¤Ë¤ÏJVM¥×¥í¥»¥¹¤ËÂФ¹¤ë¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Î¥×¥í¥»¥¹¼±Ê̻ҤǤ¹¤¬¡¢É¬¤º¤·¤â¤½¤¦¤Ç¤¢¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¢\f3jps\fP¤Ë¤è¤Ã¤Æ¡¢³ÆJava¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î\f2lvmid\fP¤¬°ìÍ÷ɽ¼¨¤µ¤ì¡¢¤½¤ì¤¾¤ì¤Ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹Ì¾¤Þ¤¿¤ÏJAR¥Õ¥¡¥¤¥ë̾¤¬´Êñ¤Ê·Á¼°¤Ç¼¨¤µ¤ì¤Þ¤¹¡£¤³¤Î´Êñ¤Ê·Á¼°¤Î¥¯¥é¥¹Ì¾¤ÈJAR¥Õ¥¡¥¤¥ë̾¤Ç¤Ï¡¢¥¯¥é¥¹¤Î¥Ñ¥Ã¥±¡¼¥¸¾ðÊó¤Þ¤¿¤ÏJAR¥Õ¥¡¥¤¥ë¡¦¥Ñ¥¹¾ðÊ󤬾Êά¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.LP -+\f3jps\fP¥³¥Þ¥ó¥É¤Ï¡¢\f3Java\fPµ¯Æ°¥Ä¡¼¥ë¤ò»ÈÍѤ·¤Æ\f2main\fP¥á¥½¥Ã¥É¤ËÅϤµ¤ì¤ë¥¯¥é¥¹Ì¾¤È°ú¿ô¤ò¸¡º÷¤·¤Þ¤¹¡£Æȼ«¤Îµ¯Æ°¥Ä¡¼¥ë¤ò»ÈÍѤ·¤Æ¥¿¡¼¥²¥Ã¥ÈJVM¤òµ¯Æ°¤·¤¿¾ì¹ç¤Ï¡¢\f2main\fP¥á¥½¥Ã¥É¤ËÅϤµ¤ì¤ë¥¯¥é¥¹Ì¾(¤Þ¤¿¤ÏJAR¥Õ¥¡¥¤¥ë̾)¤È°ú¿ô¤ÏÍøÍѤǤ¤Þ¤»¤ó¡£¤³¤Î¾ì¹ç¡¢\f3jps\fP¥³¥Þ¥ó¥É¤Ï¡¢main¥á¥½¥Ã¥É¤ËÅϤµ¤ì¤ë¥¯¥é¥¹Ì¾(¤Þ¤¿¤ÏJAR¥Õ¥¡¥¤¥ë̾)¤È°ú¿ô¤ËÂФ·¤Æ¡¢Ê¸»úÎó\f2Unknown\fP¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.LP -+.LP -+\f3jps\fP¥³¥Þ¥ó¥É¤ÇÀ¸À®¤µ¤ì¤ëJVM¤Î¥ê¥¹¥È¤Ï¡¢¤³¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¥×¥ê¥ó¥·¥Ñ¥ë¤ËÍ¿¤¨¤é¤ì¤¿¥¢¥¯¥»¥¹¸¢¤Ë´ð¤Å¤¡¢À©¸Â¤µ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥àÆȼ«¤Î¥¢¥¯¥»¥¹À©¸æµ¡¹½¤Ë¤è¤ë·èÄê¤Ë´ð¤Å¤¤¤Æ¡¢¥×¥ê¥ó¥·¥Ñ¥ë¤Ë¥¢¥¯¥»¥¹¸¢¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤ëJVM¤Î¤ß¤ò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f3Ãí°Õ:\fP ¤³¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ï¥µ¥Ý¡¼¥ÈÂоݳ°¤Ç¤¢¤ê¡¢¾Íè¤ÎJDK¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÍøÍѤǤ¤Ê¤¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£¸½ºß¡¢Windows 98¤ª¤è¤ÓWindows ME¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï»ÈÍѤǤ¤Þ¤»¤ó¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+\f3jps\fP¥³¥Þ¥ó¥É¤Ç¤Ï¡¢¥³¥Þ¥ó¥É¤Î½ÐÎϤòÊѹ¹¤¹¤ë¥ª¥×¥·¥ç¥ó¤¬Â¿¿ô¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¾Íè¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢Êѹ¹¤Þ¤¿¤ÏÇѻߤµ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+\-q -+¥¯¥é¥¹Ì¾¡¢JAR¥Õ¥¡¥¤¥ë̾¡¢¤ª¤è¤Ó\f2main\fP¥á¥½¥Ã¥É¤ËÅϤµ¤ì¤¿°ú¿ô¤Î½ÐÎϤòÍÞÀ©¤·¡¢¥í¡¼¥«¥ëVM¼±Ê̻ҤΰìÍ÷¤Î¤ß¤òÀ¸À®¤·¤Þ¤¹¡£ -+.TP 3 -+\-m -+main¥á¥½¥Ã¥É¤ËÅϤµ¤ì¤ë°ú¿ô¤ò½ÐÎϤ·¤Þ¤¹¡£¤³¤Î½ÐÎϤϡ¢ÁȤ߹þ¤Þ¤ì¤Æ¤¤¤ëJVM¤ËÂФ·¤Ænull¤Ë¤Ê¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-l -+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥á¥¤¥ó¡¦¥¯¥é¥¹¤Î¥Õ¥ë¡¦¥Ñ¥Ã¥±¡¼¥¸Ì¾¡¢¤Þ¤¿¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎJAR¥Õ¥¡¥¤¥ë¤Ø¤Î¥Õ¥ë¥Ñ¥¹Ì¾¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-v -+JVM¤ËÅϤµ¤ì¤ë°ú¿ô¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-V -+¥Õ¥é¥°¡¦¥Õ¥¡¥¤¥ë(.hotspotrc¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï\-XX:Flags=<\f2filename\fP>¤Î°ú¿ô¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë)¤òÄ̤¸¤ÆJVM¤ËÅϤµ¤ì¤ë°ú¿ô¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-Joption -+\f3jps\fP¤¬¸Æ¤Ó½Ð¤¹\f3java\fPµ¯Æ°¥Ä¡¼¥ë¤Ë¡¢\f2option\fP¤òÅϤ·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£\f3\-J\fP¤ò»ÈÍѤ·¤Æ¡¢Java¤Çµ½Ò¤µ¤ì¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤¹¤ëÇظå¤ÎVM¤Ë¥ª¥×¥·¥ç¥ó¤òÅϤ¹¤³¤È¤Ï¡¢¤è¤¯¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+¥Û¥¹¥È¼±ÊÌ»Ò -+.LP -+.LP -+¥Û¥¹¥È¼±Ê̻ҡ¢¤Ä¤Þ¤ê\f2hostid\fP¤Ï¡¢¥¿¡¼¥²¥Ã¥È¡¦¥·¥¹¥Æ¥à¤ò¼¨¤¹Ê¸»úÎó¤Ç¤¹¡£\f2hostid\fPʸ»úÎó¤Î¹½Ê¸¤ÎÂçÉôʬ¤Ï¡¢URI¤Î¹½Ê¸¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+[\fP\f4protocol\fP\f3:][[//]\fP\f4hostname\fP\f3][:\fP\f4port\fP\f3][/\fP\f4servername\fP\f3]\fP -+.br -+\f3 -+.fl -+\fP -+.fi -+ -+.LP -+.RS 3 -+.TP 3 -+protocol -+ÄÌ¿®¥×¥í¥È¥³¥ë¤Ç¤¹¡£\f2protocol\fP¤¬¾Êά¤µ¤ì¡¢\f2hostname\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥×¥í¥È¥³¥ë¤¬¡¢¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¸ÇͤκÇŬ²½¤µ¤ì¤¿¥í¡¼¥«¥ë¡¦¥×¥í¥È¥³¥ë¤Ë¤Ê¤ê¤Þ¤¹¡£\f2protocol\fP¤¬¾Êά¤µ¤ì¡¢\f2hostname\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¡¦¥×¥í¥È¥³¥ë¤Ï\f3rmi\fP¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+hostname -+¥¿¡¼¥²¥Ã¥È¡¦¥Û¥¹¥È¤ò¼¨¤¹¥Û¥¹¥È̾¤Þ¤¿¤ÏIP¥¢¥É¥ì¥¹¤Ç¤¹¡£\f2hostname\fP¤¬¾Êά¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥¿¡¼¥²¥Ã¥È¡¦¥Û¥¹¥È¤Ï¥í¡¼¥«¥ë¡¦¥Û¥¹¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+port -+¥ê¥â¡¼¥È¡¦¥µ¡¼¥Ð¡¼¤ÈÄÌ¿®¤¹¤ë¤¿¤á¤Î¥Ç¥Õ¥©¥ë¥È¡¦¥Ý¡¼¥È¤Ç¤¹¡£\f2hostname\fP¤¬¾Êά¤µ¤ì¤Æ¤¤¤ë¤«¡¢ºÇŬ²½¤µ¤ì¤¿¥í¡¼¥«¥ë¡¦¥×¥í¥È¥³¥ë¤¬\f2protocol\fP¤Ë»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢\f2port\fP¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¡¢\f2port\fP¥Ñ¥é¥á¡¼¥¿¤Î°·¤¤¤Ï¡¢¼ÂÁõ¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Î\f3rmi\fP¥×¥í¥È¥³¥ë¤Î¾ì¹ç¡¢\f2port\fP¤Ï¡¢¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¾å¤Îrmiregistry¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ò¼¨¤·¤Þ¤¹¡£\f2port\fP¤¬¾Êά¤µ¤ì¡¢\f2protocol\fP¤Ç\f3rmi\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤Îrmiregistry¥Ý¡¼¥È(1099)¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+servername -+¤³¤Î¥Ñ¥é¥á¡¼¥¿¤Î°·¤¤¤Ï¡¢¼ÂÁõ¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£ºÇŬ²½¤µ¤ì¤¿¥í¡¼¥«¥ë¡¦¥×¥í¥È¥³¥ë¤Î¾ì¹ç¡¢¤³¤Î¥Õ¥£¡¼¥ë¥É¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£\f3rmi\fP¥×¥í¥È¥³¥ë¤Î¾ì¹ç¡¢¤³¤Î¥Ñ¥é¥á¡¼¥¿¤Ï¡¢¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¾å¤ÎRMI¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î̾Á°¤ò¼¨¤¹Ê¸»úÎó¤Ë¤Ê¤ê¤Þ¤¹¡£jstatd(1)¥³¥Þ¥ó¥É¤Î\f3\-n\fP¥ª¥×¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RE -+ -+.LP -+.SH "½ÐÎÏ·Á¼°" -+.LP -+.LP -+\f3jps\fP¥³¥Þ¥ó¥É¤Î½ÐÎϤϡ¢¼¡¤Î¥Ñ¥¿¡¼¥ó¤Ë½¾¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+\fP\f4lvmid\fP\f3 [ [ \fP\f4classname\fP\f3 | \fP\f4JARfilename\fP\f3 | "Unknown"] [ \fP\f4arg\fP\f3* ] [ \fP\f4jvmarg\fP\f3* ] ]\fP -+.br -+\f3 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤¹¤Ù¤Æ¤Î½ÐÎϥȡ¼¥¯¥ó¤Ï¶õÇò¤Ç¶èÀÚ¤ê¤Þ¤¹¡£\f2arg\fP¤ÎÃæ¤Ç¶õÇò¤ò»ÈÍѤ¹¤ë¤È¡¢¼ÂºÝ¤ÎÄê°ÌÃ֥ѥé¥á¡¼¥¿¤Ë°ú¿ô¤ò¥Þ¥Ã¥Ô¥ó¥°¤·¤è¤¦¤È¤¹¤ë¤È¤¤Ë¡¢¤¢¤¤¤Þ¤¤¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.br -+.br -+\f3Ãí°Õ\fP: ¾Íè¤Î¥ê¥ê¡¼¥¹¤Ç¤³¤Î·Á¼°¤ÏÊѹ¹¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¤¿¤á¡¢\f3jps\fP¤Î½ÐÎϤò²òÀϤ¹¤ë¥¹¥¯¥ê¥×¥È¤ÏºîÀ®¤·¤Ê¤¤¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£\f3jps\fP½ÐÎϤò²òÀϤ¹¤ë¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë¤È¡¢¤³¤Î¥Ä¡¼¥ë¤Î¾Íè¤Î¥ê¥ê¡¼¥¹¤Ç¡¢ºîÀ®¤·¤¿¥¹¥¯¥ê¥×¥È¤ÎÊѹ¹¤¬É¬Íפˤʤë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.br -+ -+.LP -+.SH "Îã" -+.LP -+.LP -+¤³¤Î¹à¤Ç¤Ï¡¢\f3jps\fP¥³¥Þ¥ó¥É¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+.LP -+¥í¡¼¥«¥ë¡¦¥Û¥¹¥È¾å¤Ç·×¬¤µ¤ì¤¿JVM¤ò°ìÍ÷ɽ¼¨¤¹¤ë¾ì¹ç: -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jps\fP -+.br -+ -+.fl -+18027 Java2Demo.JAR -+.br -+ -+.fl -+18032 jps -+.br -+ -+.fl -+18005 jstat -+.br -+ -+.fl -+.fi -+ -+.LP -+.LP -+¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¾å¤Ç·×¬¤µ¤ì¤¿JVM¤ò°ìÍ÷ɽ¼¨¤¹¤ë¾ì¹ç: -+.LP -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢\f3jstat\fP¥µ¡¼¥Ð¡¼¤È¡¢¤½¤ÎÆâÉôRMI¥ì¥¸¥¹¥È¥ê¤Þ¤¿¤ÏÊ̤γ°Éô\f3rmiregistry\fP¥×¥í¥»¥¹¤Î¤¤¤º¤ì¤«¤¬¡¢¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¤Î¥Ç¥Õ¥©¥ë¥È¡¦¥Ý¡¼¥È(¥Ý¡¼¥È1099)¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤ÈÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢¥í¡¼¥«¥ë¡¦¥Û¥¹¥È¤¬¡¢¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¤Ø¤Î͸ú¤Ê¥¢¥¯¥»¥¹¸¢¤ò»ý¤Ã¤Æ¤¤¤ë¤³¤È¤âÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡£¤³¤ÎÎã¤Ë¤Ï¡¢\f2\-l\fP¥ª¥×¥·¥ç¥ó¤â´Þ¤Þ¤ì¡¢¥¯¥é¥¹Ì¾¤Þ¤¿¤ÏJAR¥Õ¥¡¥¤¥ë̾¤ò¾ÜºÙ¤Ê·Á¼°¤Ç½ÐÎϤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jps \-l remote.domain\fP -+.br -+ -+.fl -+3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR -+.br -+ -+.fl -+2857 sun.tools.jstatd.jstatd -+.br -+ -+.fl -+.fi -+ -+.LP -+.LP -+RMI¥ì¥¸¥¹¥È¥ê¤Ë¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¤Ê¤¤¥Ý¡¼¥È¤ò»ÈÍѤ·¤Æ¡¢¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¾å¤Ç·×¬¤µ¤ì¤¿JVM¤ò°ìÍ÷ɽ¼¨¤¹¤ë¾ì¹ç: -+.LP -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢ÆâÉôRMI¥ì¥¸¥¹¥È¥ê¤¬¥Ý¡¼¥È2002¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¤¿\f3jstatd\fP¥µ¡¼¥Ð¡¼¤¬¡¢¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¾å¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤ÈÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢\f2\-m\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢°ìÍ÷ɽ¼¨¤µ¤ì¤¿¤½¤ì¤¾¤ì¤ÎJava¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î\f2main\fP¥á¥½¥Ã¥É¤ËÅϤµ¤ì¤ë°ú¿ô¤òÁȤ߹þ¤ó¤Ç¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jps \-m remote.domain:2002\fP -+.br -+ -+.fl -+3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR -+.br -+ -+.fl -+3102 sun.tools.jstatd.jstatd \-p 2002 -+.fl -+.fi -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+java(1) \- Java¥¢¥×¥ê¥±¡¼¥·¥ç¥óµ¯Æ°¥Ä¡¼¥ë -+.TP 2 -+o -+jstat(1) \- Java²¾ÁÛ¥Þ¥·¥óÅý·×¥Ç¡¼¥¿´Æ»ë¥Ä¡¼¥ë -+.TP 2 -+o -+jstatd(1) \- jstat¥Ç¡¼¥â¥ó -+.TP 2 -+o -+rmiregistry(1) \- Java¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¡¦¥ì¥¸¥¹¥È¥ê -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jrunscript.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jrunscript.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,194 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jrunscript 1 "07 May 2011" -+.TH jrunscript 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jrunscript \- ¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥¹¥¯¥ê¥×¥È¡¦¥·¥§¥ë -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+¥Ñ¥é¥á¡¼¥¿ -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+°ú¿ô -+.TP 2 -+o -+Îã -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jrunscript\fP [ \f2options\fP ] [ arguments... ] -+.fl -+.fi -+ -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.RS 3 -+.TP 3 -+options -+¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢¥³¥Þ¥ó¥É̾¤Îľ¸å¤Ëµ½Ò¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+arguments -+°ú¿ô¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢¥ª¥×¥·¥ç¥ó¤Þ¤¿¤Ï¥³¥Þ¥ó¥É̾¤Îľ¸å¤Ëµ½Ò¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jrunscript\fP¤Ï¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥¹¥¯¥ê¥×¥È¡¦¥·¥§¥ë¤Ç¤¹¡£jrunscript¤Ï¡¢ÂÐÏ÷¿(Æɼè¤ê\-ɾ²Á\-½ÐÎÏ)¥â¡¼¥É¤È¥Ð¥Ã¥Á(\-f¥ª¥×¥·¥ç¥ó)¥â¡¼¥É¤ÎξÊý¤Î¥¹¥¯¥ê¥×¥È¼Â¹Ô¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¤³¤ì¤Ï¥¹¥¯¥ê¥×¥È¸À¸ì¤Ë°Í¸¤·¤Ê¤¤¥·¥§¥ë¤Ç¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Î»ÈÍѸÀ¸ì¤ÏJavaScript¤Ç¤¹¤¬¡¢\-l¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ì¤Ð¾¤Î¸À¸ì¤â»ØÄê¤Ç¤¤Þ¤¹¡£jrunscript¤Ï¡¢Java¤È¥¹¥¯¥ê¥×¥È¸À¸ì¤È¤ÎÄÌ¿®¤Ë¤è¤Ã¤Æ¡ÖõµáŪ¤Ê¥×¥í¥°¥é¥ß¥ó¥°¡×¥¹¥¿¥¤¥ë¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f3Ãí°Õ:\fP ¤³¤Î¥Ä¡¼¥ë¤Ï\f3»î¸³Åª¤Ê¤â¤Î\fP¤Ç¤¢¤ê¡¢¾Íè¤ÎJDK¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÍøÍÑ\f3¤Ç¤¤Ê¤¯¤Ê¤ë\fP²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-classpath path -+¥¹¥¯¥ê¥×¥È¤«¤é¤Î¥¢¥¯¥»¥¹ÂоݤȤʤë¥æ¡¼¥¶¡¼¤Î .class¥Õ¥¡¥¤¥ë¤Î¸¡º÷¾ì½ê¤ò»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-cp path -+\-classpath\f2path\fP¤ÈƱµÁ¤Ç¤¹¡£ -+.TP 3 -+\-Dname=value -+Java¤Î¥·¥¹¥Æ¥à¡¦¥×¥í¥Ñ¥Æ¥£¤òÀßÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-J<flag> -+jrunscript¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ëJava²¾ÁÛ¥Þ¥·¥ó¤Ë<flag>¤òľÀÜÅϤ·¤Þ¤¹¡£ -+.TP 3 -+\-l language -+»ØÄꤵ¤ì¤¿¥¹¥¯¥ê¥×¥È¸À¸ì¤ò»ÈÍѤ·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏJavaScript¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£Â¾¤Î¥¹¥¯¥ê¥×¥È¸À¸ì¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢\-cp¤Þ¤¿¤Ï\-classpath¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢Âбþ¤¹¤ë¥¹¥¯¥ê¥×¥È¡¦¥¨¥ó¥¸¥ó¤ÎJAR¥Õ¥¡¥¤¥ë¤â»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-e script -+»ØÄꤵ¤ì¤¿¥¹¥¯¥ê¥×¥È¤òɾ²Á¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ì¤Ð¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¤¹¤Ù¤Æ¤¬»ØÄꤵ¤ì¤¿¡Ö1¹Ô¡×¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+\-encoding encoding -+¥¹¥¯¥ê¥×¥È¡¦¥Õ¥¡¥¤¥ë¤ÎÆɼè¤ê»þ¤Ë»ÈÍѤ¹¤ëʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-f script\-file -+»ØÄꤵ¤ì¤¿¥¹¥¯¥ê¥×¥È¡¦¥Õ¥¡¥¤¥ë¤òɾ²Á¤·¤Þ¤¹(¥Ð¥Ã¥Á¡¦¥â¡¼¥É)¡£ -+.TP 3 -+\-f \- -+ɸ½àÆþÎϤ«¤é¥¹¥¯¥ê¥×¥È¤òÆɼè¤ê¡¢¤½¤ì¤òɾ²Á¤·¤Þ¤¹(ÂÐÏ÷¿¥â¡¼¥É)¡£ -+.TP 3 -+\-help\ -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Æ½ªÎ»¤·¤Þ¤¹¡£ -+.TP 3 -+\-?\ -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Æ½ªÎ»¤·¤Þ¤¹¡£ -+.TP 3 -+\-q\ -+ÍøÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤Î¥¹¥¯¥ê¥×¥È¡¦¥¨¥ó¥¸¥ó¤ò°ìÍ÷ɽ¼¨¤·¤¿¤¢¤È¡¢½ªÎ»¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "°ú¿ô" -+.LP -+.LP -+[arguments...]¤¬Â¸ºß¤·¤Æ¤¤¤Æ¡¢¤«¤Ä\f3\-e\fP¡¢\f3\-f\fP¤Î¤¤¤º¤ì¤Î¥ª¥×¥·¥ç¥ó¤â»ÈÍѤµ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢ºÇ½é¤Î°ú¿ô¤¬¥¹¥¯¥ê¥×¥È¡¦¥Õ¥¡¥¤¥ë¤È¤Ê¤ê¡¢Â¾¤Î°ú¿ô¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ï¥¹¥¯¥ê¥×¥È°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤Þ¤¹¡£[arguments..]¤È¡¢\f3\-e\fP¤Þ¤¿¤Ï\f3\-f\fP¤¬»ÈÍѤµ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¤¹¤Ù¤Æ¤Î[arguments..]¤¬¥¹¥¯¥ê¥×¥È°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤Þ¤¹¡£[arguments..]¡¢\f3\-e\fP¡¢\f3\-f\fP¤¬¤É¤ì¤â¸ºß¤·¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢ÂÐÏ÷¿¥â¡¼¥É¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£¥¹¥¯¥ê¥×¥È¤«¤é¥¹¥¯¥ê¥×¥È°ú¿ô¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢¡Öarguments¡×¤È¤¤¤¦Ì¾Á°¤ÎStringÇÛÎ󷿤Υ¨¥ó¥¸¥óÊÑ¿ô¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.SH "Îã" -+.LP -+.SS -+¥¤¥ó¥é¥¤¥ó¡¦¥¹¥¯¥ê¥×¥È¤Î¼Â¹Ô -+.LP -+.nf -+\f3 -+.fl -+jrunscript \-e "print('hello world')" -+.fl -+jrunscript \-e "cat('http://www.example.com')" -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+»ØÄꤵ¤ì¤¿¸À¸ì¤Î»ÈÍѤª¤è¤Ó»ØÄꤵ¤ì¤¿¥¹¥¯¥ê¥×¥È¡¦¥Õ¥¡¥¤¥ë¤Îɾ²Á -+.LP -+.nf -+\f3 -+.fl -+jrunscript \-l js \-f test.js -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+ÂÐÏ÷¿¥â¡¼¥É -+.LP -+.nf -+\f3 -+.fl -+jrunscript -+.fl -+js> print('Hello World\\n'); -+.fl -+Hello World -+.fl -+js> 34 + 55 -+.fl -+89.0 -+.fl -+js> t = new java.lang.Thread(function() { print('Hello World\\n'); }) -+.fl -+Thread[Thread\-0,5,main] -+.fl -+js> t.start() -+.fl -+js> Hello World -+.fl -+ -+.fl -+js> -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+¥¹¥¯¥ê¥×¥È°ú¿ô¤ò»ØÄꤷ¤¿¥¹¥¯¥ê¥×¥È¡¦¥Õ¥¡¥¤¥ë¤Î¼Â¹Ô -+.LP -+.nf -+\f3 -+.fl -+jrunscript test.js arg1 arg2 arg3 -+.fl -+\fP -+.fi -+ -+.LP -+test.js¤¬¼Â¹ÔÂоݤȤʤ륹¥¯¥ê¥×¥È¡¦¥Õ¥¡¥¤¥ë¤Ç¤¢¤ê¡¢arg1¡¢arg2¤ª¤è¤Óarg3¤Ï¥¹¥¯¥ê¥×¥È°ú¿ô¤È¤·¤Æ¥¹¥¯¥ê¥×¥È¤ËÅϤµ¤ì¤Þ¤¹¡£¥¹¥¯¥ê¥×¥È¤Ï¡Öarguments¡×ÇÛÎó¤ò»ÈÍѤ·¤Æ¤³¤ì¤é¤Ë¥¢¥¯¥»¥¹¤Ç¤¤Þ¤¹¡£ -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.LP -+JavaScript¤¬»ÈÍѤµ¤ì¤ë¾ì¹ç¡¢jrunscript¤Ï¡¢ºÇ½é¤Î¥æ¡¼¥¶¡¼ÄêµÁ¥¹¥¯¥ê¥×¥È¤òɾ²Á¤¹¤ëÁ°¤Ë¡¢¤¤¤¯¤Ä¤«¤ÎÁȹþ¤ß´Ø¿ô¤äÁȹþ¤ß¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£¤³¤ì¤é¤ÎJavaScriptÁȹþ¤ßµ¡Ç½¤Ë¤Ä¤¤¤Æ¤Ï¡¢ -+.na -+\f2jsdocs\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/share/jsdocs/allclasses\-noframe.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jsadebugd.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jsadebugd.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,107 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jsadebugd 1 "07 May 2011" -+.TH jsadebugd 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jsadebugd \- ¥µ¡¼¥Ó¥¹¥¢¥Ó¥ê¥Æ¥£¡¦¥¨¡¼¥¸¥§¥ó¥È¡¦¥Ç¥Ð¥Ã¥°¡¦¥Ç¡¼¥â¥ó -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+¥Ñ¥é¥á¡¼¥¿ -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jsadebugd\fP pid [ server\-id ] -+.fl -+\f3jsadebugd\fP executable core [ server\-id ] -+.fl -+.fi -+ -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.RS 3 -+.TP 3 -+pid -+¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤¬Àܳ¤¹¤ë¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹ID¤Ç¤¹¡£¥×¥í¥»¥¹¤ÏJava¥×¥í¥»¥¹¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Þ¥·¥ó¾å¤Ç¼Â¹Ô¤·¤Æ¤¤¤ëJava¥×¥í¥»¥¹¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢jps(1)¤ò»ÈÍѤ·¤Þ¤¹¡£Ã±°ì¤Î¥×¥í¥»¥¹¤ËÀܳ¤Ç¤¤ë¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¡¢1¤Ä¤ËÀ©¸Â¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+executable -+¥³¥¢¡¦¥À¥ó¥×¤ÎºîÀ®¸µ¤ÎJava¼Â¹Ô²Äǽ¥Õ¥¡¥¤¥ë¡£ -+.TP 3 -+core -+¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤òÀܳ¤¹¤ë¥³¥¢¡¦¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ -+.TP 3 -+server\-id -+Ê£¿ô¤Î¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤¬Æ±°ì¤Î¥Þ¥·¥ó¾å¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤ËɬÍפˤʤ롢¥ª¥×¥·¥ç¥ó¤Î°ì°Õ¤ÎID¤Ç¤¹¡£¤³¤ÎID¤Ï¡¢¥ê¥â¡¼¥È¡¦¥¯¥é¥¤¥¢¥ó¥È¤¬¡¢ÀܳÀè¤Î¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤òÆÃÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ÎID¤Ï¡¢Ã±°ì¤Î¥Þ¥·¥óÆâ¤Ç°ì°Õ¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jsadebugd\fP¤Ï¡¢Java¥×¥í¥»¥¹¤Þ¤¿¤Ï¥³¥¢¡¦¥Õ¥¡¥¤¥ë¤ËÀܳ¤·¡¢¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤È¤·¤Æµ¡Ç½¤·¤Þ¤¹¡£jstack(1)¡¢jmap(1)¤ª¤è¤Ójinfo(1)¤Ê¤É¤Î¥ê¥â¡¼¥È¡¦¥¯¥é¥¤¥¢¥ó¥È¤Ï¡¢Java Remote Method Invocation(RMI)¤ò»ÈÍѤ·¤Æ¤¤¤ë¥µ¡¼¥Ð¡¼¤ËÀܳ¤Ç¤¤Þ¤¹¡£\f2jsadebugd\fP¤òµ¯Æ°¤¹¤ëÁ°¤Ë¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ -+.na -+\f2rmiregistry\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#rmi¤òµ¯Æ°¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+\fP\f4rmiregistry \-J\-Xbootclasspath/p:$JAVA_HOME/lib/sajdi.jar\fP\f3 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤³¤Ç¡¢\f2$JAVA_HOME\fP¤ÏJDK¥¤¥ó¥¹¥È¡¼¥ë¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¹¡£rmiregistry¤¬µ¯Æ°¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢jsadebugd¤Ïɸ½à(1099)¥Ý¡¼¥È¤Îrmiregistry¤òÆâÉô¤Çµ¯Æ°¤·¤Þ¤¹¡£¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤Ï¡¢SIGINT¤òÁ÷¿®¤¹¤ë([Ctrl]+[C]¤ò²¡¤¹)¤³¤È¤Ë¤è¤êÄä»ß¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f3Ãí°Õ\fP \- ¤³¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ï¥µ¥Ý¡¼¥ÈÂоݳ°¤Ç¤¢¤ê¡¢¾Íè¤ÎJDK¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÍøÍѤǤ¤Ê¤¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£dbgeng.dll¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤¤Windows¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¡ÖDebugging Tools For Windows¡×¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Ê¤¤¤È¤³¤ì¤é¤Î¥Ä¡¼¥ë¤¬Àµ¾ï¤ËÆ°ºî¤·¤Þ¤»¤ó¡£¤Þ¤¿¡¢\f2PATH\fP´Ä¶ÊÑ¿ô¤Ë¤Ï¡¢¥¿¡¼¥²¥Ã¥È¡¦¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤ë\f2jvm.dll\fP¤Î¾ì½ê¡¢¤Þ¤¿¤Ï¥¯¥é¥Ã¥·¥å¡¦¥À¥ó¥×¡¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤¿¾ì½ê¤¬´Þ¤Þ¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£\f2set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+jinfo(1) -+.TP 2 -+o -+jmap(1) -+.TP 2 -+o -+jps(1) -+.TP 2 -+o -+jstack(1) -+.TP 2 -+o -+.na -+\f2rmiregistry\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#rmi -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jstack.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jstack.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,154 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jstack 1 "07 May 2011" -+.TH jstack 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jstack \- ¥¹¥¿¥Ã¥¯¡¦¥È¥ì¡¼¥¹ -+.br -+ -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+¥Ñ¥é¥á¡¼¥¿ -+.br -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.TP 2 -+o -+´ûÃΤΥХ° -+.br -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jstack\fP [ option ] pid -+.fl -+\f3jstack\fP [ option ] executable core -+.fl -+\f3jstack\fP [ option ] [server\-id@]remote\-hostname\-or\-IP -+.fl -+.fi -+ -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.LP -+³Æ¥ª¥×¥·¥ç¥ó¤Ï¸ß¤¤¤ËÇÓ¾Ū¤Ç¤¹¡£¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢¥³¥Þ¥ó¥É̾¤Îľ¸å¤Ëµ½Ò¤·¤Þ¤¹¡£¥ª¥×¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.RS 3 -+.TP 3 -+pid -+½ÐÎϤ¹¤ë¥¹¥¿¥Ã¥¯¡¦¥È¥ì¡¼¥¹¤Î¥×¥í¥»¥¹ID¤Ç¤¹¡£¥×¥í¥»¥¹¤ÏJava¥×¥í¥»¥¹¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Þ¥·¥ó¾å¤Ç¼Â¹Ô¤·¤Æ¤¤¤ëJava¥×¥í¥»¥¹¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢jps(1)¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+executable -+¥³¥¢¡¦¥À¥ó¥×¤ÎºîÀ®¸µ¤ÎJava¼Â¹Ô²Äǽ¥Õ¥¡¥¤¥ë¡£ -+.br -+.TP 3 -+core -+½ÐÎϤ¹¤ë¥¹¥¿¥Ã¥¯¡¦¥È¥ì¡¼¥¹¤Î¥³¥¢¡¦¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ -+.br -+.TP 3 -+remote\-hostname\-or\-IP -+¥ê¥â¡¼¥È¡¦¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼(jsadebugd(1)¤ò»²¾È)¤Î¥Û¥¹¥È̾¤Þ¤¿¤ÏIP¥¢¥É¥ì¥¹¡£ -+.br -+.TP 3 -+server\-id -+Ê£¿ô¤Î¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤¬Æ±°ì¤Î¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¤Ç¼Â¹Ô¤·¤Æ¤¤¤ë¾ì¹ç¤Î¡¢¥ª¥×¥·¥ç¥ó¸ÇͤÎID¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jstack\fP¤Ï¡¢»ØÄꤵ¤ì¤¿Java¥×¥í¥»¥¹¤ä¥³¥¢¡¦¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥ê¥â¡¼¥È¡¦¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤ËÂФ¹¤ëJava¥¹¥ì¥Ã¥É¤ÎJava¥¹¥¿¥Ã¥¯¡¦¥È¥ì¡¼¥¹¤ò½ÐÎϤ·¤Þ¤¹¡£Java¥Õ¥ì¡¼¥à¤´¤È¤Ë¡¢¥Õ¥ë¥¯¥é¥¹Ì¾¡¢¥á¥½¥Ã¥É̾¡¢¡Öbci¡×(¥Ð¥¤¥È¥³¡¼¥É¡¦¥¤¥ó¥Ç¥Ã¥¯¥¹)¡¢¤ª¤è¤Ó¹ÔÈÖ¹æ(ÍøÍѲÄǽ¤Ê¾ì¹ç)¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£\-m¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢jstack¤Ï¡¢¤¹¤Ù¤Æ¤Î¥¹¥ì¥Ã¥É¤ÎJava¥Õ¥ì¡¼¥à¤È¥Í¥¤¥Æ¥£¥Ö¡¦¥Õ¥ì¡¼¥à¤ÎξÊý¤ò¡¢¡Öpc¡×(¥×¥í¥°¥é¥à¡¦¥«¥¦¥ó¥¿)¤È¤È¤â¤Ë½ÐÎϤ·¤Þ¤¹¡£¥Í¥¤¥Æ¥£¥Ö¡¦¥Õ¥ì¡¼¥à¤´¤È¤Ë¡¢¡Öpc¡×¤ËºÇ¤â¶á¤¤¥Í¥¤¥Æ¥£¥Ö¡¦¥·¥ó¥Ü¥ë(ÍøÍѲÄǽ¤Ê¾ì¹ç)¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£C++ʬ²ò̾¤Ïʬ²ò²ò½ü¤µ¤ì¤Þ¤»¤ó¡£C++̾¤òʬ²ò²ò½ü¤¹¤ë¤Ë¤Ï¡¢¤³¤Î¥³¥Þ¥ó¥É¤Î½ÐÎϤò\f3c++filt\fP¤Ë¥Ñ¥¤¥×¤·¤Þ¤¹¡£»ØÄꤵ¤ì¤¿¥×¥í¥»¥¹¤¬64¥Ó¥Ã¥ÈVM¾å¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢\f2\-J\-d64\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.br -+ -+.LP -+.nf -+\f3 -+.fl -+jstack \-J\-d64 \-m pid -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f3Ãí°Õ\fP \- ¤³¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ï¥µ¥Ý¡¼¥ÈÂоݳ°¤Ç¤¢¤ê¡¢¾Íè¤ÎJDK¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÍøÍѤǤ¤Ê¤¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£dbgeng.dll¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤¤Windows¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¡ÖDebugging Tools For Windows¡×¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Ê¤¤¤È¤³¤ì¤é¤Î¥Ä¡¼¥ë¤¬Àµ¾ï¤ËÆ°ºî¤·¤Þ¤»¤ó¡£¤Þ¤¿¡¢\f2PATH\fP´Ä¶ÊÑ¿ô¤Ë¤Ï¡¢¥¿¡¼¥²¥Ã¥È¡¦¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤ë\f2jvm.dll\fP¤Î¾ì½ê¡¢¤Þ¤¿¤Ï¥¯¥é¥Ã¥·¥å¡¦¥À¥ó¥×¡¦¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤¿¾ì½ê¤¬´Þ¤Þ¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£\f2set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-F -+¡Öjstack [\-l] pid¡×¤¬±þÅú¤·¤Ê¤¤¾ì¹ç¤Ë¥¹¥¿¥Ã¥¯¡¦¥À¥ó¥×¤ò¶¯À©¤·¤Þ¤¹¡£ -+.TP 3 -+\-l -+Ĺ·Á¼°¤Î¥ê¥¹¥È¡£½êÍjava.util.concurrent¤Î -+.na -+\f2½êͤǤ¤ë¥·¥ó¥¯¥í¥Ê¥¤¥¶\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.html¤Î°ìÍ÷¤Ê¤É¡¢¥í¥Ã¥¯¤Ë¤Ä¤¤¤Æ¤ÎÄɲþðÊó¤ò°õºþ¤·¤Þ¤¹¡£ -+.TP 3 -+\-m -+º®¹ç¥â¡¼¥É(Java¤ª¤è¤Ó¥Í¥¤¥Æ¥£¥ÖC/C++¥Õ¥ì¡¼¥à¤ÎξÊý)¤Î¥¹¥¿¥Ã¥¯¡¦¥È¥ì¡¼¥¹¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.TP 3 -+\-h -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.br -+.br -+.TP 3 -+\-help -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.br -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+pstack(1) -+.TP 2 -+o -+c++filt(1) -+.TP 2 -+o -+jps(1) -+.TP 2 -+o -+jsadebugd(1) -+.RE -+ -+.LP -+.SH "´ûÃΤΥХ°" -+.LP -+.LP -+º®¹ç¥â¡¼¥É¤Î¥¹¥¿¥Ã¥¯¡¦¥È¥ì¡¼¥¹(\-m¥ª¥×¥·¥ç¥ó»ÈÍÑ)¤Ï¡¢¥ê¥â¡¼¥È¡¦¥Ç¥Ð¥Ã¥°¡¦¥µ¡¼¥Ð¡¼¤Ç¤Ïµ¡Ç½¤·¤Þ¤»¤ó¡£ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jstat.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jstat.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,5370 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jstat 1 "07 May 2011" -+.TH jstat 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jstat \- Java²¾ÁÛ¥Þ¥·¥óÅý·×¥Ç¡¼¥¿´Æ»ë¥Ä¡¼¥ë -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+¥Ñ¥é¥á¡¼¥¿ -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+²¾ÁÛ¥Þ¥·¥ó¼±ÊÌ»Ò -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.RS 3 -+.TP 2 -+* -+°ìÈÌŪ¤Ê¥ª¥×¥·¥ç¥ó -+.TP 2 -+* -+½ÐÎÏ¥ª¥×¥·¥ç¥ó -+.RE -+.TP 2 -+o -+Îã -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jstat\fP [ \f2generalOption\fP | \f2outputOptions\fP \f2vmid\fP [\f2interval\fP[s|ms] [\f2count\fP]] ] -+.fl -+.fi -+ -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.RS 3 -+.TP 3 -+generalOption -+ñÆȤǻÈÍѤ¹¤ë°ìÈÌŪ¤Ê¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤Ç¤¹(\-help¡¢\-options¤Þ¤¿¤Ï\-version)¡£ -+.TP 3 -+outputOptions -+ñ°ì¤Î\f2statOption\fP¤È¡¢\-t¡¢\-h¤ª¤è¤Ó\-J¥ª¥×¥·¥ç¥ó¤Î¤¤¤º¤ì¤«¤òÁȤ߹礻¤¿¡¢1¤Ä¤Þ¤¿¤ÏÊ£¿ô¤Î½ÐÎÏ¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£ -+.TP 3 -+vmid -+¥¿¡¼¥²¥Ã¥È¤ÎJava²¾ÁÛ¥Þ¥·¥ó(JVM)¤ò¼¨¤¹Ê¸»úÎó¤Ç¤¢¤ë²¾ÁÛ¥Þ¥·¥ó¼±Ê̻ҤǤ¹¡£°ìÈÌŪ¤Ê¹½Ê¸¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+[\fP\f4protocol\fP\f3:][//]\fP\f4lvmid\fP[@\f2hostname\fP[:\f2port\fP]/\f2servername\fP] -+.fl -+.fi -+vmidʸ»úÎó¤Î¹½Ê¸¤ÎÂçÉôʬ¤Ï¡¢URI¤Î¹½Ê¸¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£\f2vmid\fP¤Ï¡¢¥í¡¼¥«¥ëJVM¤òɽ¤¹Ã±½ã¤ÊÀ°¿ô¤«¤é¡¢ÄÌ¿®¥×¥í¥È¥³¥ë¡¢¥Ý¡¼¥ÈÈֹ桢¤ª¤è¤Ó¾¤Î¼ÂÁõ¸ÇͤÎÃͤò¼¨¤¹Ê£»¨¤Ê¹½Â¤¤Þ¤Ç¡¢ÍÍ¡¹¤Ë°Û¤Ê¤ê¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢²¾ÁÛ¥Þ¥·¥ó¼±Ê̻Ҥò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+interval[s|ms] -+ÉÃ(s)¤Þ¤¿¤Ï¥ß¥êÉÃ(ms)¤Î¤¦¤Á»ØÄꤷ¤¿Ã±°Ì¤Ç¤Î¥µ¥ó¥×¥ê¥ó¥°´Ö³Ö¤Ç¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Îñ°Ì¤Ï¥ß¥êÉäǤ¹¡£Àµ¤ÎÀ°¿ô¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢\f3jstat\fP¤Ïinterval¤´¤È¤Ë½ÐÎϤòÀ¸À®¤·¤Þ¤¹¡£ -+.TP 3 -+count -+ɽ¼¨¤¹¤ë¥µ¥ó¥×¥ë¿ô¤Ç¤¹¡£¥Ç¥Õ¥©¥ë¥ÈÃͤÏ̵¸Â¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢\f3jstat\fP¤Ï¡¢¥¿¡¼¥²¥Ã¥ÈJVM¤¬½ªÎ»¤¹¤ë¤Þ¤Ç¡¢¤Þ¤¿¤Ï\f3jstat\fP¥³¥Þ¥ó¥É¤¬½ªÎ»¤¹¤ë¤Þ¤Ç¡¢Åý·×¥Ç¡¼¥¿¤òɽ¼¨¤·¤Þ¤¹¡£Àµ¤ÎÀ°¿ô¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jstat\fP¥Ä¡¼¥ë¤Ï¡¢ÀßÃÖ¤µ¤ì¤Æ¤¤¤ëHotSpot Java²¾ÁÛ¥Þ¥·¥ó(JVM)¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹Åý·×¥Ç¡¼¥¿¤òɽ¼¨¤·¤Þ¤¹¡£¥¿¡¼¥²¥Ã¥ÈJVM¤Ï¡¢²¾ÁÛ¥Þ¥·¥ó¼±Ê̻ҡ¢¤Ä¤Þ¤ê²¼µ¤Î\f2vmid\fP¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¼±Ê̤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f3Ãí°Õ\fP: ¤³¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ï¥µ¥Ý¡¼¥ÈÂоݳ°¤Ç¤¢¤ê¡¢¾Íè¤ÎJDK¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÍøÍѤǤ¤Ê¤¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£¸½ºß¡¢Windows 98¤ª¤è¤ÓWindows ME¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï»ÈÍѤǤ¤Þ¤»¤ó¡£ -+.br -+ -+.LP -+.SS -+²¾ÁÛ¥Þ¥·¥ó¼±ÊÌ»Ò -+.LP -+.LP -+\f2vmid\fPʸ»úÎó¤Î¹½Ê¸¤ÎÂçÉôʬ¤Ï¡¢URI¤Î¹½Ê¸¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+[\fP\f4protocol\fP\f3:][//]\fP\f4lvmid\fP[@\f2hostname\fP][:\f2port\fP][/\f2servername\fP] -+.fl -+.fi -+ -+.LP -+.RS 3 -+.TP 3 -+protocol -+ÄÌ¿®¥×¥í¥È¥³¥ë¤Ç¤¹¡£\f2protocol\fP¤¬¾Êά¤µ¤ì¡¢\f2hostname\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥×¥í¥È¥³¥ë¤¬¡¢¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¸ÇͤκÇŬ²½¤µ¤ì¤¿¥í¡¼¥«¥ë¡¦¥×¥í¥È¥³¥ë¤Ë¤Ê¤ê¤Þ¤¹¡£\f2protocol\fP¤¬¾Êά¤µ¤ì¡¢\f2hostname\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¡¦¥×¥í¥È¥³¥ë¤Ï\f3rmi\fP¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+lvmid -+¥¿¡¼¥²¥Ã¥ÈJVM¤Î¥í¡¼¥«¥ë²¾ÁÛ¥Þ¥·¥ó¼±Ê̻ҤǤ¹¡£\f2lvmid\fP¤Ï¡¢¥·¥¹¥Æ¥à¾å¤ÎJVM¤ò°ì°Õ¤Ë¼±Ê̤¹¤ë¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¸ÇͤÎÃͤǤ¹¡£\f2lvmid\fP¤Ï¡¢²¾ÁÛ¥Þ¥·¥ó¼±Ê̻ҤÎÍ£°ì¤Îɬ¿ÜÍ×ÁǤǤ¹¡£\f2lvmid\fP¤Ï¡¢°ìÈÌŪ¤Ë¤Ï¥¿¡¼¥²¥Ã¥ÈJVM¥×¥í¥»¥¹¤ËÂФ¹¤ë¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Î¥×¥í¥»¥¹¼±Ê̻ҤǤ¹¤¬¡¢É¬¤º¤·¤â¤½¤¦¤Ç¤¢¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£jps(1)¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¡¢\f2lvmid\fP¤òÆÃÄê¤Ç¤¤Þ¤¹¡£¤Þ¤¿¡¢Unix¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï\f3ps\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¡¢Windows¤Ç¤ÏWindows¥¿¥¹¥¯¡¦¥Þ¥Í¡¼¥¸¥ã¤ò»ÈÍѤ·¤Æ¡¢\f2lvmid\fP¤òÆÃÄê¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+hostname -+¥¿¡¼¥²¥Ã¥È¡¦¥Û¥¹¥È¤ò¼¨¤¹¥Û¥¹¥È̾¤Þ¤¿¤ÏIP¥¢¥É¥ì¥¹¤Ç¤¹¡£\f2hostname\fP¤¬¾Êά¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥¿¡¼¥²¥Ã¥È¡¦¥Û¥¹¥È¤Ï¥í¡¼¥«¥ë¡¦¥Û¥¹¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+port -+¥ê¥â¡¼¥È¡¦¥µ¡¼¥Ð¡¼¤ÈÄÌ¿®¤¹¤ë¤¿¤á¤Î¥Ç¥Õ¥©¥ë¥È¡¦¥Ý¡¼¥È¤Ç¤¹¡£\f2hostname\fP¤¬¾Êά¤µ¤ì¤Æ¤¤¤ë¤«¡¢ºÇŬ²½¤µ¤ì¤¿¥í¡¼¥«¥ë¡¦¥×¥í¥È¥³¥ë¤¬\f2protocol\fP¤Ë»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢\f2port\fP¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¡¢\f2port\fP¥Ñ¥é¥á¡¼¥¿¤Î°·¤¤¤Ï¡¢¼ÂÁõ¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Î\f3rmi\fP¥×¥í¥È¥³¥ë¤Î¾ì¹ç¡¢\f2port\fP¤Ï¡¢¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¾å¤Îrmiregistry¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ò¼¨¤·¤Þ¤¹¡£\f2port\fP¤¬¾Êά¤µ¤ì¡¢\f2protocol\fP¤Ç\f3rmi\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤Îrmiregistry¥Ý¡¼¥È(1099)¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+servername -+¤³¤Î¥Ñ¥é¥á¡¼¥¿¤Î°·¤¤¤Ï¡¢¼ÂÁõ¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£ºÇŬ²½¤µ¤ì¤¿¥í¡¼¥«¥ë¡¦¥×¥í¥È¥³¥ë¤Î¾ì¹ç¡¢¤³¤Î¥Õ¥£¡¼¥ë¥É¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£\f3rmi\fP¥×¥í¥È¥³¥ë¤Î¾ì¹ç¡¢¤³¤ì¤Ï¡¢¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¾å¤ÎRMI¥ê¥½¡¼¥¹¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î̾Á°¤òɽ¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+\f3jstat\fP¥³¥Þ¥ó¥É¤Ï¡¢°ìÈÌŪ¤Ê¥ª¥×¥·¥ç¥ó¤È½ÐÎÏ¥ª¥×¥·¥ç¥ó¤Î2¤Ä¤Î¥¿¥¤¥×¤Î¥ª¥×¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£°ìÈÌŪ¤Ê¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤¿¾ì¹ç¡¢\f3jstat\fP¤Ï´Êñ¤Ê»ÈÍÑΨ¤ª¤è¤Ó¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Þ¤¹¡£½ÐÎÏ¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¡¢Åý·×¥Ç¡¼¥¿½ÐÎϤÎÆâÍƤȷÁ¼°¤¬·è¤Þ¤ê¤Þ¤¹¡£ -+.br -+ -+.LP -+.LP -+\f3Ãí°Õ\fP: ¤¹¤Ù¤Æ¤Î¥ª¥×¥·¥ç¥ó¤È¤½¤Îµ¡Ç½¤Ï¡¢¾Íè¤Î¥ê¥ê¡¼¥¹¤ÇÊѹ¹¤Þ¤¿¤ÏÇѻߤµ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SS -+°ìÈÌŪ¤Ê¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+¤¤¤º¤ì¤«¤Î°ìÈÌŪ¤Ê¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢Â¾¤Î¥ª¥×¥·¥ç¥ó¤Þ¤¿¤Ï¥Ñ¥é¥á¡¼¥¿¤Ï°ìÀÚ»ØÄê¤Ç¤¤Þ¤»¤ó¡£ -+.LP -+.RS 3 -+.TP 3 -+\-help -+¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-version -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-options -+Åý·×¥Ç¡¼¥¿¡¦¥ª¥×¥·¥ç¥ó¤ò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£²¼µ¤Î½ÐÎÏ¥ª¥×¥·¥ç¥ó¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RE -+ -+.LP -+.SS -+½ÐÎÏ¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+°ìÈÌŪ¤Ê¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ë¡¢½ÐÎÏ¥ª¥×¥·¥ç¥ó¤ò»ØÄê¤Ç¤¤Þ¤¹¡£½ÐÎÏ¥ª¥×¥·¥ç¥ó¤Ï¡¢\f3jstat\fP¤Î½ÐÎϤÎÆâÍƤª¤è¤Ó·Á¼°¤ò·èÄꤷ¡¢Ã±°ì¤Î\f2statOption\fP¤È¡¢Â¾¤Î¤¤¤º¤ì¤«¤Î½ÐÎÏ¥ª¥×¥·¥ç¥ó(\-h¡¢\-t¤ª¤è¤Ó\-J)¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£\f2statOption\fP¤ÏºÇ½é¤Ëµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+½ÐÎϤϡ¢³ÆÎ󤬶õÇò¤Ç¶èÀÚ¤é¤ì¤¿É½¤Î·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£¥¿¥¤¥È¥ë¤ò´Þ¤à¥Ø¥Ã¥À¡¼¹Ô¤Ë¤è¤Ã¤Æ¡¢³ÆÎó¤Î°ÕÌ£¤¬¤ï¤«¤ê¤Þ¤¹¡£¥Ø¥Ã¥À¡¼¤Îɽ¼¨ÉÑÅÙ¤òÀßÄꤹ¤ë¤Ë¤Ï¡¢\f3\-h\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£Îó¤Î¥Ø¥Ã¥À¡¼Ì¾¤Ï¡¢ÍÍ¡¹¤Ê¥ª¥×¥·¥ç¥ó´Ö¤Ç¤ª¤ª¤à¤Í°ì´ÓÀ¤¬Êݤ¿¤ì¤Æ¤¤¤Þ¤¹¡£°ìÈ̤ˡ¢2¤Ä¤Î¥ª¥×¥·¥ç¥ó¤ÇƱ¤¸Ì¾Á°¤ÎÎ󤬻ÈÍѤµ¤ì¤Æ¤¤¤ì¤Ð¡¢2¤Ä¤ÎÎó¤Î¥Ç¡¼¥¿¡¦¥½¡¼¥¹¤ÏƱ¤¸¤Ç¤¹¡£ -+.LP -+.LP -+\f3\-t\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢\f2Timestamp\fP¤È¤¤¤¦¥é¥Ù¥ë¤ÎÉÕ¤¤¤¿¥¿¥¤¥à¥¹¥¿¥ó¥×¤ÎÎ󤬡¢½ÐÎϤκǽé¤ÎÎó¤È¤·¤Æɽ¼¨¤µ¤ì¤Þ¤¹¡£\f2Timestamp\fPÎó¤Ë¤Ï¡¢¥¿¡¼¥²¥Ã¥ÈJVM¤Îµ¯Æ°¤«¤é¤Î·Ð²á»þ´Ö¤¬¡¢ÉÃñ°Ì¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£¥¿¥¤¥à¥¹¥¿¥ó¥×¤ÎÀºÅ٤ϡ¢ÍÍ¡¹¤ÊÍ×°ø¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¡¢ÂçÎ̤ÎÉé²Ù¤Î¤«¤«¤Ã¤¿¥·¥¹¥Æ¥à¤Ç¤Î¥¹¥ì¥Ã¥É¡¦¥¹¥±¥¸¥å¡¼¥ë¤ÎÃÙ±ä¤Ë¤è¤êÊÑÆ°¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2interval\fP¤ª¤è¤Ó\f2count\fP¥Ñ¥é¥á¡¼¥¿¤ò»ÈÍѤ·¤Æ¡¢\f3jstat\fP¤¬¤½¤Î½ÐÎϤòɽ¼¨¤¹¤ëÉÑÅ٤Ȳó¿ô¤ò¤½¤ì¤¾¤ì»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.LP -+\f3Ãí°Õ\fP: ¾Íè¤Î¥ê¥ê¡¼¥¹¤Ç¤³¤Î·Á¼°¤ÏÊѹ¹¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¤¿¤á¡¢\f3jstat\fP¤Î½ÐÎϤò²òÀϤ¹¤ë¥¹¥¯¥ê¥×¥È¤ÏºîÀ®¤·¤Ê¤¤¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£\f3jstat\fP½ÐÎϤò²òÀϤ¹¤ë¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë¾ì¹ç¤Ï¡¢¤³¤Î¥Ä¡¼¥ë¤Î¾Íè¤Î¥ê¥ê¡¼¥¹¤Ç¡¢¤½¤Î¥¹¥¯¥ê¥×¥È¤òÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ë¤³¤È¤Ëα°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.RS 3 -+.TP 3 -+\-statOption -+\f3jstat\fP¤¬É½¼¨¤¹¤ëÅý·×¥Ç¡¼¥¿¾ðÊó¤ò»ØÄꤷ¤Þ¤¹¡£¼¡¤Îɽ¤Ë¡¢ÍøÍѲÄǽ¤Ê¥ª¥×¥·¥ç¥ó¤Î°ìÍ÷¤ò¼¨¤·¤Þ¤¹¡£ÆÃÄê¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¡¦¥¤¥ó¥¹¥È¡¼¥ë¤Î¥ª¥×¥·¥ç¥ó¤ò°ìÍ÷ɽ¼¨¤¹¤ë¤Ë¤Ï¡¢°ìÈÌŪ¤Ê¥ª¥×¥·¥ç¥ó¤Î\f3\-options\fP¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.br -+.br -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤ÎÆ°ºî¤Ë´Ø¤¹¤ëÅý·×¥Ç¡¼¥¿ -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+HotSpot Just\-in\-Time¥³¥ó¥Ñ¥¤¥é¤ÎÆ°ºî¤Ë´Ø¤¹¤ëÅý·×¥Ç¡¼¥¿ -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥È¤µ¤ì¤¿¥Ò¡¼¥×¤ÎÆ°ºî¤Ë´Ø¤¹¤ëÅý·×¥Ç¡¼¥¿ -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+À¤Â头¤È¤ÎÍÆÎ̤ÈÂбþ¤¹¤ëÎΰè¤Ë´Ø¤¹¤ëÅý·×¥Ç¡¼¥¿ -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÅý·×¥Ç¡¼¥¿¤Î³µÍ×(\f3\-gcutil\fP¤ÈƱ¤¸)¤È¡¢Ä¾Á°¤ª¤è¤Ó¸½ºß(ŬÍѲÄǽ¤Ê¾ì¹ç)¤Î¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó¡¦¥¤¥Ù¥ó¥È¤Î¸¶°ø -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+NewÀ¤Âå¤ÎÆ°ºî¤Ë´Ø¤¹¤ëÅý·×¥Ç¡¼¥¿ -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+NewÀ¤Âå¤Î¥µ¥¤¥º¤ÈÂбþ¤¹¤ëÎΰè¤Ë´Ø¤¹¤ëÅý·×¥Ç¡¼¥¿ -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di h+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÀ¤Â太¤è¤ÓPermanentÀ¤Âå¤ÎÆ°ºî¤Ë´Ø¤¹¤ëÅý·×¥Ç¡¼¥¿ -+.br -+.di -+.nr h| \n(dn -+.nr h- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di i+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÀ¤Âå¤Î¥µ¥¤¥º¤Ë´Ø¤¹¤ëÅý·×¥Ç¡¼¥¿ -+.br -+.di -+.nr i| \n(dn -+.nr i- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di j+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÀ¤Âå¤Î¥µ¥¤¥º¤Ë´Ø¤¹¤ëÅý·×¥Ç¡¼¥¿ -+.br -+.di -+.nr j| \n(dn -+.nr j- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di k+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÅý·×¥Ç¡¼¥¿¤Î³µÍ× -+.br -+.di -+.nr k| \n(dn -+.nr k- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di l+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+HotSpot¥³¥ó¥Ñ¥¤¥ëÊýË¡¤ÎÅý·×¥Ç¡¼¥¿ -+.br -+.di -+.nr l| \n(dn -+.nr l- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \w\f3¥ª¥×¥·¥ç¥ó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wclass -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wcompiler -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wgc -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wgccapacity -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wgccause -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wgcnew -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wgcnewcapacity -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wgcold -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wgcoldcapacity -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wgcpermcapacity -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wgcutil -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wprintcompilation -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ɽ¼¨ÆâÍÆ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(g- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(h- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(i- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(j- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(k- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(l- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 248 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3¥ª¥×¥·¥ç¥ó\fP\h'|\n(41u'\f3ɽ¼¨ÆâÍÆ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'class\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'compiler\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'gc\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'gccapacity\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'gccause\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'gcnew\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'gcnewcapacity\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(h|u+\n(.Vu -+.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'gcold\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.h+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(i|u+\n(.Vu -+.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'gcoldcapacity\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.i+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(j|u+\n(.Vu -+.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'gcpermcapacity\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.j+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(k|u+\n(.Vu -+.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'gcutil\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.k+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(l|u+\n(.Vu -+.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'printcompilation\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.l+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.rm h+ -+.rm i+ -+.rm j+ -+.rm k+ -+.rm l+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-52 -+.TP 3 -+\-h n -+\f2n\fP¥µ¥ó¥×¥ë(½ÐÎϹÔ)¤´¤È¤ËÎó¥Ø¥Ã¥À¡¼¤òɽ¼¨¤·¤Þ¤¹¡£¤³¤³¤Ç¡¢\f2n\fP¤ÏÀµ¤ÎÀ°¿ôÃͤǤ¹¡£¥Ç¥Õ¥©¥ë¥ÈÃͤÏ0¤Ç¤¹¡£¤³¤Î¾ì¹ç¡¢¥Ç¡¼¥¿¤ÎºÇ½é¤Î¹Ô¤Î¾å¤ËÎó¥Ø¥Ã¥À¡¼¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-t n -+¥¿¥¤¥à¥¹¥¿¥ó¥×Îó¤ò½ÐÎϤκǽé¤ÎÎó¤È¤·¤Æɽ¼¨¤·¤Þ¤¹¡£¥¿¥¤¥à¥¹¥¿¥ó¥×¤Ï¡¢¥¿¡¼¥²¥Ã¥ÈJVM¤Îµ¯Æ°»þ¤«¤é¤Î·Ð²á»þ´Ö¤Ç¤¹¡£ -+.TP 3 -+\-JjavaOption -+\f2javaOption\fP¤ò\f3java\fP¥¢¥×¥ê¥±¡¼¥·¥ç¥óµ¯Æ°¥Ä¡¼¥ë¤ËÅϤ·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£¥ª¥×¥·¥ç¥ó¤Î´°Á´¤Ê¥ê¥¹¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢java(1)¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RE -+ -+.LP -+.SS -+statOption¤È½ÐÎÏ -+.LP -+.LP -+°Ê¹ß¤Îɽ¤Ç¤Ï¡¢\f3jstat\fP¤¬\f2statOption\fP¤´¤È¤Ë½ÐÎϤ¹¤ëÎó¤Ë¤Ä¤¤¤Æ³µÍפò¼¨¤·¤Þ¤¹¡£ -+.br -+ -+.LP -+.SS -+\-class¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥í¡¼¥É¤µ¤ì¤¿¥¯¥é¥¹¤Î¿ô -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¢¥ó¥í¡¼¥É¤µ¤ì¤¿¥¯¥é¥¹¤Î¿ô -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¢¥ó¥í¡¼¥É¤µ¤ì¤¿KB¿ô -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¯¥é¥¹¤Î¥í¡¼¥É¤ä¥¢¥ó¥í¡¼¥É½èÍý¤ËÍפ·¤¿»þ´Ö -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \w¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤ÎÅý·×¥Ç¡¼¥¿ -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wLoaded -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wBytes -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wUnloaded -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wBytes -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wTime -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¥í¡¼¥É¤µ¤ì¤¿KB¿ô -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 296 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤ÎÅý·×¥Ç¡¼¥¿\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Loaded\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Bytes\h'|\n(41u'¥í¡¼¥É¤µ¤ì¤¿KB¿ô -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Unloaded\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Bytes\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Time\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-23 -+ -+.LP -+.SS -+\-compiler¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼Â¹Ô¤µ¤ì¤¿¥³¥ó¥Ñ¥¤¥ë¡¦¥¿¥¹¥¯¤Î¿ô -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ºÇÔ¤·¤¿¥³¥ó¥Ñ¥¤¥ë¡¦¥¿¥¹¥¯¤Î¿ô -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+̵¸ú¤Ë¤µ¤ì¤¿¥³¥ó¥Ñ¥¤¥ë¡¦¥¿¥¹¥¯¤Î¿ô -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥³¥ó¥Ñ¥¤¥ë¡¦¥¿¥¹¥¯¤Î¼Â¹Ô¤ËÍפ·¤¿»þ´Ö -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+ºÇ¸å¤Ë¼ºÇÔ¤·¤¿¥³¥ó¥Ñ¥¤¥ë¤Î¥³¥ó¥Ñ¥¤¥ë¡¦¥¿¥¤¥× -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+ºÇ¸å¤Ë¼ºÇÔ¤·¤¿¥³¥ó¥Ñ¥¤¥ë¤Î¥¯¥é¥¹Ì¾¤È¥á¥½¥Ã¥É -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \wHotSpot Just\-In\-Time¥³¥ó¥Ñ¥¤¥é¤ÎÅý·×¥Ç¡¼¥¿ -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wCompiled -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFailed -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wInvalid -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wTime -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFailedType -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFailedMethod -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 332 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'HotSpot Just\-In\-Time¥³¥ó¥Ñ¥¤¥é¤ÎÅý·×¥Ç¡¼¥¿\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Compiled\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Failed\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Invalid\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Time\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FailedType\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FailedMethod\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-29 -+ -+.LP -+.SS -+\-gc¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè0¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè1¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè0¤Î»ÈÍÑΨ(KB) -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè1¤Î»ÈÍÑΨ(KB) -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+EdenÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+EdenÎΰè¤Î»ÈÍÑΨ(KB) -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di h+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr h| \n(dn -+.nr h- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di i+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÎΰè¤Î»ÈÍÑΨ(KB) -+.br -+.di -+.nr i| \n(dn -+.nr i- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di j+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ã¤¤À¤Âå¤ÎGC¥¤¥Ù¥ó¥È¿ô -+.br -+.di -+.nr j| \n(dn -+.nr j- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di k+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ã¤¤À¤Âå¤Î¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó»þ´Ö -+.br -+.di -+.nr k| \n(dn -+.nr k- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di l+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Õ¥ë¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó»þ´Ö -+.br -+.di -+.nr l| \n(dn -+.nr l- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di m+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÁí»þ´Ö -+.br -+.di -+.nr m| \n(dn -+.nr m- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \w¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥È¤µ¤ì¤¿¥Ò¡¼¥×¤ÎÅý·×¥Ç¡¼¥¿ -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS0C -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS1C -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS0U -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS1U -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wEC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wEU -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOU -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPU -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wYGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wYGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \wOldÎΰè¤Î»ÈÍÑΨ(KB) -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(g- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(h- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(i- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(j- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(k- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(l- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(m- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 400 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥È¤µ¤ì¤¿¥Ò¡¼¥×¤ÎÅý·×¥Ç¡¼¥¿\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S0C\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S1C\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S0U\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S1U\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'EC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'EU\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OU\h'|\n(41u'OldÎΰè¤Î»ÈÍÑΨ(KB) -+.ne \n(h|u+\n(.Vu -+.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.h+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(i|u+\n(.Vu -+.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PU\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.i+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(j|u+\n(.Vu -+.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'YGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.j+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(k|u+\n(.Vu -+.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'YGCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.k+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGC\h'|\n(41u'¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.ne \n(l|u+\n(.Vu -+.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.l+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(m|u+\n(.Vu -+.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'GCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.m+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.rm h+ -+.rm i+ -+.rm j+ -+.rm k+ -+.rm l+ -+.rm m+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-61 -+ -+.LP -+.SS -+\-gccapacity¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+NewÀ¤Âå¤ÎºÇ¾®ÍÆÎÌ(KB) -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+NewÀ¤Âå¤ÎºÇÂçÍÆÎÌ(KB) -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+NewÀ¤Âå¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè0¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè1¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+EdenÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÀ¤Âå¤ÎºÇ¾®ÍÆÎÌ(KB) -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di h+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÀ¤Âå¤ÎºÇÂçÍÆÎÌ(KB) -+.br -+.di -+.nr h| \n(dn -+.nr h- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di i+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÀ¤Âå¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr i| \n(dn -+.nr i- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di j+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr j| \n(dn -+.nr j- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di k+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÀ¤Âå¤ÎºÇ¾®ÍÆÎÌ(KB) -+.br -+.di -+.nr k| \n(dn -+.nr k- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di l+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÀ¤Âå¤ÎºÇÂçÍÆÎÌ(KB) -+.br -+.di -+.nr l| \n(dn -+.nr l- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di m+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÀ¤Âå¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr m| \n(dn -+.nr m- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di n+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr n| \n(dn -+.nr n- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di o+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ã¤¤À¤Âå¤ÎGC¥¤¥Ù¥ó¥È¿ô -+.br -+.di -+.nr o| \n(dn -+.nr o- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \w¥á¥â¥ê¡¼¡¦¥×¡¼¥ëÀ¤Â太¤è¤ÓÎΰèÍÆÎÌ -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wNGCMN -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wNGCMX -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wNGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS0C -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS1C -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wEC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOGCMN -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOGCMX -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPGCMN -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPGCMX -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wYGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(g- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(h- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(i- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(j- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(k- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(l- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(m- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(n- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(o- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 474 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'¥á¥â¥ê¡¼¡¦¥×¡¼¥ëÀ¤Â太¤è¤ÓÎΰèÍÆÎÌ\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'NGCMN\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'NGCMX\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'NGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S0C\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S1C\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'EC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OGCMN\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(h|u+\n(.Vu -+.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OGCMX\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.h+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(i|u+\n(.Vu -+.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.i+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(j|u+\n(.Vu -+.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.j+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(k|u+\n(.Vu -+.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PGCMN\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.k+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(l|u+\n(.Vu -+.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PGCMX\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.l+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(m|u+\n(.Vu -+.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.m+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(n|u+\n(.Vu -+.if (\n(n|+\n(#^-1v)>\n(#- .nr #- +(\n(n|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.n+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(o|u+\n(.Vu -+.if (\n(o|+\n(#^-1v)>\n(#- .nr #- +(\n(o|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'YGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.o+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGC\h'|\n(41u'¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.rm h+ -+.rm i+ -+.rm j+ -+.rm k+ -+.rm l+ -+.rm m+ -+.rm n+ -+.rm o+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-67 -+ -+.LP -+.SS -+\-gccause¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢\f3\-gcutil\fP¥ª¥×¥·¥ç¥ó¤ÈƱ¤¸¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÅý·×¥Ç¡¼¥¿¤Î³µÍפòɽ¼¨¤·¤Þ¤¹¤¬¡¢ºÇ¸å¤Î¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó¡¦¥¤¥Ù¥ó¥È¤È(ŬÍѲÄǽ¤Ê¾ì¹ç¤Ï)¸½ºß¤Î¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó¡¦¥¤¥Ù¥ó¥È¤Î¸¶°ø¤¬´Þ¤Þ¤ì¤Þ¤¹¡£\f3\-gcutil\fP¤Ç°ìÍ÷ɽ¼¨¤µ¤ì¤ëÎó¤Î¤Û¤«¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¤Ï¼¡¤ÎÎó¤¬Äɲ䵤ì¤Þ¤¹¡£ -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+ºÇ¸å¤Î¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó¤Î¸¶°ø -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¸½ºß¤Î¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó¤Î¸¶°ø -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \wGC¥¤¥Ù¥ó¥È¤ò´Þ¤à¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÅý·×¥Ç¡¼¥¿ -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wLGCC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wGCC -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 497 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'GC¥¤¥Ù¥ó¥È¤ò´Þ¤à¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÅý·×¥Ç¡¼¥¿\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'LGCC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'GCC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-13 -+ -+.LP -+.SS -+\-gcnew¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè0¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè1¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè0¤Î»ÈÍÑΨ(KB) -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè1¤Î»ÈÍÑΨ(KB) -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+ºÇÂçÅÂƲÆþ¤ê¤·¤¤¤ÃÍ -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+ŬÀÚ¤ÊSurvivor¥µ¥¤¥º(KB) -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+EdenÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di h+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+EdenÎΰè¤Î»ÈÍÑΨ(KB) -+.br -+.di -+.nr h| \n(dn -+.nr h- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di i+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ã¤¤À¤Âå¤ÎGC¥¤¥Ù¥ó¥È¿ô -+.br -+.di -+.nr i| \n(dn -+.nr i- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di j+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ã¤¤À¤Âå¤Î¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó»þ´Ö -+.br -+.di -+.nr j| \n(dn -+.nr j- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \wNewÀ¤Âå¤ÎÅý·×¥Ç¡¼¥¿ -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS0C -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS1C -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS0U -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS1U -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wTT -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wMTT -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wDSS -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wEC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wEU -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wYGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wYGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \wÅÂƲÆþ¤ê¤·¤¤¤ÃÍ -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(g- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(h- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(i- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(j- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 551 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'NewÀ¤Âå¤ÎÅý·×¥Ç¡¼¥¿\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S0C\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S1C\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S0U\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S1U\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'TT\h'|\n(41u'ÅÂƲÆþ¤ê¤·¤¤¤ÃÍ -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'MTT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'DSS\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'EC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(h|u+\n(.Vu -+.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'EU\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.h+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(i|u+\n(.Vu -+.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'YGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.i+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(j|u+\n(.Vu -+.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'YGCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.j+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.rm h+ -+.rm i+ -+.rm j+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-47 -+ -+.LP -+.SS -+\-gcnewcapacity¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+NewÀ¤Âå¤ÎºÇ¾®ÍÆÎÌ(KB) -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+NewÀ¤Âå¤ÎºÇÂçÍÆÎÌ(KB) -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+NewÀ¤Âå¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè0¤ÎºÇÂçÍÆÎÌ(KB) -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè0¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè1¤ÎºÇÂçÍÆÎÌ(KB) -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè1¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di h+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+EdenÎΰè¤ÎºÇÂçÍÆÎÌ(KB) -+.br -+.di -+.nr h| \n(dn -+.nr h- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di i+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+EdenÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr i| \n(dn -+.nr i- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di j+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ã¤¤À¤Âå¤ÎGC¥¤¥Ù¥ó¥È¿ô -+.br -+.di -+.nr j| \n(dn -+.nr j- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \wNewÀ¤ÂåÎΰ襵¥¤¥º¤ÎÅý·×¥Ç¡¼¥¿ -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wNGCMN -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wNGCMX -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wNGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS0CMX -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS0C -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS1CMX -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS1C -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wECMX -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wEC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wYGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(g- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(h- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(i- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(j- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 605 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'NewÀ¤ÂåÎΰ襵¥¤¥º¤ÎÅý·×¥Ç¡¼¥¿\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'NGCMN\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'NGCMX\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'NGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S0CMX\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S0C\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S1CMX\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S1C\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(h|u+\n(.Vu -+.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'ECMX\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.h+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(i|u+\n(.Vu -+.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'EC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.i+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(j|u+\n(.Vu -+.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'YGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.j+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGC\h'|\n(41u'¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.rm h+ -+.rm i+ -+.rm j+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-47 -+ -+.LP -+.SS -+\-gcold¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÎΰè¤Î»ÈÍÑΨ(KB) -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ã¤¤À¤Âå¤ÎGC¥¤¥Ù¥ó¥È¿ô -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Õ¥ë¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó»þ´Ö -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÁí»þ´Ö -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \wOld¤ª¤è¤ÓPermanentÀ¤Âå¤ÎÅý·×¥Ç¡¼¥¿ -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPU -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOU -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wYGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \wOldÎΰè¤Î»ÈÍÑΨ(KB) -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 645 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Old¤ª¤è¤ÓPermanentÀ¤Âå¤ÎÅý·×¥Ç¡¼¥¿\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PU\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OU\h'|\n(41u'OldÎΰè¤Î»ÈÍÑΨ(KB) -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'YGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGC\h'|\n(41u'¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'GCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-33 -+ -+.LP -+.SS -+\-gcoldcapacity¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÀ¤Âå¤ÎºÇ¾®ÍÆÎÌ(KB) -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÀ¤Âå¤ÎºÇÂçÍÆÎÌ(KB) -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÀ¤Âå¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ã¤¤À¤Âå¤ÎGC¥¤¥Ù¥ó¥È¿ô -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Õ¥ë¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó»þ´Ö -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÁí»þ´Ö -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \wOldÀ¤Âå¤ÎÅý·×¥Ç¡¼¥¿ -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOGCMN -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOGCMX -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wOC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wYGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(g- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 687 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OldÀ¤Âå¤ÎÅý·×¥Ç¡¼¥¿\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OGCMN\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OGCMX\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'OC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'YGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGC\h'|\n(41u'¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'GCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-35 -+ -+.LP -+.SS -+\-gcpermcapacity¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÀ¤Âå¤ÎºÇ¾®ÍÆÎÌ(KB) -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÀ¤Âå¤ÎºÇÂçÍÆÎÌ(KB) -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÀ¤Âå¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÎΰè¤Î¸½ºß¤ÎÍÆÎÌ(KB) -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ã¤¤À¤Âå¤ÎGC¥¤¥Ù¥ó¥È¿ô -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Õ¥ë¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó»þ´Ö -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÁí»þ´Ö -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \wPermanentÀ¤Âå¤ÎÅý·×¥Ç¡¼¥¿ -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPGCMN -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPGCMX -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wPC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wYGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(g- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 729 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PermanentÀ¤Âå¤ÎÅý·×¥Ç¡¼¥¿\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PGCMN\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PGCMX\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'PC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'YGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGC\h'|\n(41u'¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'GCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-35 -+ -+.LP -+.SS -+\-gcutil¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè0¤Î»ÈÍÑΨ(¸½ºß¤ÎÍÆÎ̤ËÂФ¹¤ë¥Ñ¡¼¥»¥ó¥Æ¡¼¥¸) -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SurvivorÎΰè1¤Î»ÈÍÑΨ(¸½ºß¤ÎÍÆÎ̤ËÂФ¹¤ë¥Ñ¡¼¥»¥ó¥Æ¡¼¥¸) -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+EdenÎΰè¤Î»ÈÍÑΨ(¸½ºß¤ÎÍÆÎ̤ËÂФ¹¤ë¥Ñ¡¼¥»¥ó¥Æ¡¼¥¸) -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+OldÎΰè¤Î»ÈÍÑΨ(¸½ºß¤ÎÍÆÎ̤ËÂФ¹¤ë¥Ñ¡¼¥»¥ó¥Æ¡¼¥¸) -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+PermanentÎΰè¤Î»ÈÍÑΨ(¸½ºß¤ÎÍÆÎ̤ËÂФ¹¤ë¥Ñ¡¼¥»¥ó¥Æ¡¼¥¸) -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ã¤¤À¤Âå¤ÎGC¥¤¥Ù¥ó¥È¿ô -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼ã¤¤À¤Âå¤Î¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó»þ´Ö -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di h+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Õ¥ë¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥ó»þ´Ö -+.br -+.di -+.nr h| \n(dn -+.nr h- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di i+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÁí»þ´Ö -+.br -+.di -+.nr i| \n(dn -+.nr i- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \w¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÅý·×¥Ç¡¼¥¿¤Î³µÍ× -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS0 -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wS1 -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wE -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wO -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wYGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wYGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGC -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wFGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wGCT -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \w¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(g- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(h- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(i- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 779 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'¥¬¥Ù¡¼¥¸¡¦¥³¥ì¥¯¥·¥ç¥óÅý·×¥Ç¡¼¥¿¤Î³µÍ×\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S0\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'S1\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'E\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'O\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'P\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'YGC\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'YGCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGC\h'|\n(41u'¥Õ¥ëGC¥¤¥Ù¥ó¥È¿ô -+.ne \n(h|u+\n(.Vu -+.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'FGCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.h+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(i|u+\n(.Vu -+.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'GCT\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.i+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.rm h+ -+.rm i+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-43 -+ -+.LP -+.SS -+\-printcompilation¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¼Â¹Ô¤µ¤ì¤¿¥³¥ó¥Ñ¥¤¥ë¡¦¥¿¥¹¥¯¤Î¿ô -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥á¥½¥Ã¥É¤Î¥Ð¥¤¥È¥³¡¼¥É¤Î¥Ð¥¤¥È¿ô -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥³¥ó¥Ñ¥¤¥ë¡¦¥¿¥¤¥× -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥³¥ó¥Ñ¥¤¥ëÊýË¡¤òÆÃÄꤹ¤ë¥¯¥é¥¹Ì¾¤È¥á¥½¥Ã¥É̾¡£¥¯¥é¥¹Ì¾¤Ç¤Ï¡¢Ì¾Á°¶õ´Ö¤Î¶èÀÚ¤êʸ»ú¤È¤·¤Æ¡¢¡Ö.¡×¤Î¤«¤ï¤ê¤Ë¡Ö/¡×¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£¥á¥½¥Ã¥É̾¤Ï¡¢»ØÄꤵ¤ì¤¿¥¯¥é¥¹Æâ¤Î¥á¥½¥Ã¥É¤Ç¤¹¡£¤³¤ì¤é¤Î2¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤Î·Á¼°¤Ï¡¢HotSpot \- \f3XX:+PrintComplation\fP¥ª¥×¥·¥ç¥ó¤ÈÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \wHotSpot¥³¥ó¥Ñ¥¤¥ëÊýË¡¤ÎÅý·×¥Ç¡¼¥¿ -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3Îó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wCompiled -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wSize -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wType -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wMethod -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 807 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'HotSpot¥³¥ó¥Ñ¥¤¥ëÊýË¡¤ÎÅý·×¥Ç¡¼¥¿\h'|\n(41u' -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3Îó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Compiled\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Size\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Type\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'Method\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-21 -+ -+.LP -+.SH "Îã" -+.LP -+.LP -+¤³¤Î¹à¤Ç¤Ï¡¢21891¤Î\f2lvmid\fP¤ò»ý¤Ä¥í¡¼¥«¥ëJVM¤ò´Æ»ë¤¹¤ëÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+.SS -+gcutil¥ª¥×¥·¥ç¥ó¤Î»ÈÍÑ -+.LP -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢\f2lvmid\fP 21891¤ËÀܳ¤·¤Æ¡¢250¥ß¥êÉôֳ֤Ç7¤Ä¤Î¥µ¥ó¥×¥ë¤ò¼èÆÀ¤·¡¢\f3\-gcutil\fP¥ª¥×¥·¥ç¥ó¤Ç¤Î»ØÄê¤Ë½¾¤Ã¤Æ½ÐÎϤòɽ¼¨¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jstat \-gcutil 21891 250 7\fP -+.br -+ -+.fl -+ S0 S1 E O P YGC YGCT FGC FGCT GCT -+.br -+ -+.fl -+ 12.44 0.00 27.20 9.49 96.70 78 0.176 5 0.495 0.672 -+.br -+ -+.fl -+ 12.44 0.00 62.16 9.49 96.70 78 0.176 5 0.495 0.672 -+.br -+ -+.fl -+ 12.44 0.00 83.97 9.49 96.70 78 0.176 5 0.495 0.672 -+.br -+ -+.fl -+ 0.00 7.74 0.00 9.51 96.70 79 0.177 5 0.495 0.673 -+.br -+ -+.fl -+ 0.00 7.74 23.37 9.51 96.70 79 0.177 5 0.495 0.673 -+.br -+ -+.fl -+ 0.00 7.74 43.82 9.51 96.70 79 0.177 5 0.495 0.673 -+.br -+ -+.fl -+ 0.00 7.74 58.11 9.51 96.71 79 0.177 5 0.495 0.673 -+.br -+ -+.fl -+.fi -+ -+.LP -+.LP -+¤³¤ÎÎã¤Î½ÐÎϤϡ¢¼ã¤¤À¤Âå¤Î¥³¥ì¥¯¥·¥ç¥ó¤¬3ÈÖÌܤÈ4ÈÖÌܤΥµ¥ó¥×¥ë´Ö¤Ç¹Ô¤ï¤ì¤¿¤³¤È¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£¥³¥ì¥¯¥·¥ç¥ó¤Ë¤Ï0.001É䫤«¤Ã¤Æ¤ª¤ê¡¢¥ª¥Ö¥¸¥§¥¯¥È¤¬EdenÎΰè(E)¤«¤éOldÎΰè(O)¤Ë¾º³Ê¤·¤¿¤¿¤á¡¢OldÎΰè¤Î»ÈÍÑΨ¤Ï9.49%¤«¤é9.51%¤ËÁý²Ã¤·¤Æ¤¤¤Þ¤¹¡£SurvivorÎΰè¤Ï¡¢¥³¥ì¥¯¥·¥ç¥óÁ°¤Ï12.44%¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤·¤¿¤¬¡¢¥³¥ì¥¯¥·¥ç¥ó¸å¤Î»ÈÍѤÏ7.74%¤Î¤ß¤Ç¤¹¡£ -+.LP -+.SS -+Îó¥Ø¥Ã¥À¡¼Ê¸»úÎó¤Î·«¤êÊÖ¤· -+.LP -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢\f2lvmid\fP 21891¤ËÀܳ¤·¤Æ¡¢250¥ß¥êÉôֳ֤ǥµ¥ó¥×¥ë¤ò¼èÆÀ¤·¡¢\f3\-gcutil\fP¥ª¥×¥·¥ç¥ó¤Ç¤Î»ØÄê¤Ë½¾¤Ã¤Æ½ÐÎϤòɽ¼¨¤·¤Þ¤¹¡£¤µ¤é¤Ë¡¢\f3\-h3\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢¥Ç¡¼¥¿¤¬3¹Ôɽ¼¨¤µ¤ì¤ë¤´¤È¤ËÎó¥Ø¥Ã¥À¡¼¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jstat \-gcnew \-h3 21891 250\fP -+.br -+ -+.fl -+ S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT -+.br -+ -+.fl -+ 64.0 64.0 0.0 31.7 31 31 32.0 512.0 178.6 249 0.203 -+.br -+ -+.fl -+ 64.0 64.0 0.0 31.7 31 31 32.0 512.0 355.5 249 0.203 -+.br -+ -+.fl -+ 64.0 64.0 35.4 0.0 2 31 32.0 512.0 21.9 250 0.204 -+.br -+ -+.fl -+ S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT -+.br -+ -+.fl -+ 64.0 64.0 35.4 0.0 2 31 32.0 512.0 245.9 250 0.204 -+.br -+ -+.fl -+ 64.0 64.0 35.4 0.0 2 31 32.0 512.0 421.1 250 0.204 -+.br -+ -+.fl -+ 64.0 64.0 0.0 19.0 31 31 32.0 512.0 84.4 251 0.204 -+.br -+ -+.fl -+ S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT -+.br -+ -+.fl -+ 64.0 64.0 0.0 19.0 31 31 32.0 512.0 306.7 251 0.204 -+.br -+ -+.fl -+.fi -+ -+.LP -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢¥Ø¥Ã¥À¡¼Ê¸»úÎó¤Î·«ÊÖ¤·¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë¤Û¤«¡¢2ÈÖÌܤÈ3ÈÖÌܤΥµ¥ó¥×¥ë´Ö¤ÇYoung GC¤¬¹Ô¤ï¤ì¤¿¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£¤³¤Î·Ñ³»þ´Ö¤Ï0.001ÉäǤ·¤¿¡£¤³¤Î¥³¥ì¥¯¥·¥ç¥ó¤Ç¤Ï¡¢SurvivorÎΰè0¤Î»ÈÍÑΨ(S0U)¤¬Å¬ÀÚ¤ÊSurvivor¥µ¥¤¥º(DSS)¤òĶ²á¤¹¤ë¤³¤È¤Ë¤Ê¤ë¥é¥¤¥Ö¡¦¥Ç¡¼¥¿¤¬¸¡½Ð¤µ¤ì¤Þ¤·¤¿¡£¤³¤Î·ë²Ì¡¢¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢OldÀ¤Âå(¤³¤Î½ÐÎϤˤÏÈóɽ¼¨)¤Ø¾º³Ê¤µ¤ì¡¢ÅÂƲÆþ¤ê¤·¤¤¤ÃÍ(TT)¤¬¡¢31¤«¤é2¤Ø¹ß³Ê¤µ¤ì¤Þ¤·¤¿¡£ -+.LP -+.LP -+Ê̤Υ³¥ì¥¯¥·¥ç¥ó¤¬¡¢5ÈÖÌܤÈ6ÈÖÌܤΥµ¥ó¥×¥ë´Ö¤Ç¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥³¥ì¥¯¥·¥ç¥ó¤Ç¤Ï¡¢Survivor¤¬¤Û¤È¤ó¤É¸«¤é¤ì¤º¡¢ÅÂƲÆþ¤ê¤·¤¤¤Ãͤò31¤ËÌᤷ¤Þ¤·¤¿¡£ -+.LP -+.SS -+¥µ¥ó¥×¥ë¤´¤È¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤ÎÁÞÆþ -+.LP -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢\f2lvmid\fP 21891¤ØÀܳ¤·¡¢250¥ß¥êÉôֳ֤Ç3¤Ä¤Î¥µ¥ó¥×¥ë¤ò¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£\f3\-t\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢ºÇ½é¤ÎÎó¤Ë¥µ¥ó¥×¥ë¤´¤È¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤òɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jstat \-gcoldcapacity \-t 21891 250 3\fP -+.br -+ -+.fl -+Timestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT -+.br -+ -+.fl -+ 150.1 1408.0 60544.0 11696.0 11696.0 194 80 2.874 3.799 -+.br -+ -+.fl -+ 150.4 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863 -+.br -+ -+.fl -+ 150.7 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863 -+.br -+ -+.fl -+.fi -+ -+.LP -+.LP -+\f2Timestamp\fPÎó¤Ë¤Ï¡¢¥¿¡¼¥²¥Ã¥ÈJVM¤Îµ¯Æ°»þ¤«¤é¤Î·Ð²á»þ´Ö¤¬¡¢ÉÃñ°Ì¤Ç¥ì¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤µ¤é¤Ë¡¢\f3\-gcoldcapacity\fP½ÐÎϤǤϡ¢³äÅö¥ê¥¯¥¨¥¹¥È¤Þ¤¿¤Ï¾º³Ê¥ê¥¯¥¨¥¹¥È¤¢¤ë¤¤¤Ï¤½¤ÎξÊý¤òËþ¤¿¤¹¤¿¤á¤Ë¥Ò¡¼¥×¤¬³ÈÄ¥¤¹¤ë¤¿¤Ó¤Ë¡¢OldÀ¤Âå¤ÎÍÆÎÌ(OGC)¤ÈOldÎΰè¤ÎÍÆÎÌ(OC)¤È¤¬Áý²Ã¤·¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£OldÀ¤Âå¤ÎÍÆÎÌ(OGC)¤Ï¡¢81ÈÖÌܤΥեëGC(FGC)¸å¤Ë¡¢11696 KB¤«¤é13820 KB¤ØÁý²Ã¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ÎÀ¤Âå(¤ª¤è¤ÓÎΰè)¤ÎºÇÂçÍÆÎ̤ϡ¢60544 KB(OGCMX)¤Ê¤Î¤Ç¡¢¤Þ¤À³ÈÄ¥¤Ç¤¤ë;͵¤¬»Ä¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.SS -+¥ê¥â¡¼¥ÈJVM¤Î¥¤¥ó¥¹¥È¥¥¥ë¥á¥ó¥Æ¡¼¥·¥ç¥ó¤Î´Æ»ë -+.LP -+.LP -+¤³¤ÎÎã¤Ï¡¢\f3\-gcutil\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢\f2remote.domain\fP¤È¤¤¤¦¥·¥¹¥Æ¥à¾å¤Î\f2lvmid\fP 40496¤ËÀܳ¤·¡¢¥µ¥ó¥×¥ë¤òÉÃñ°Ì¤Ç̵´ü¸Â¤Ë¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+\fP\f3jstat \-gcutil 40496@remote.domain 1000\fP -+.br -+ -+.fl -+... \f2output omitted\fP -+.br -+ -+.fl -+.fi -+ -+.LP -+.LP -+\f2lvmid\fP¤Ï¡¢¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¤Î̾Á°¤È·ë¹ç¤µ¤ì¤Æ¡¢\f240496@remote.domain\fP¤Î\f2vmid\fP¤ò¹½À®¤·¤Æ¤¤¤Þ¤¹¡£·ë²Ì¤È¤·¤Æ¡¢¤³¤Î\f2vmid\fP¤Ï¡¢\f3rmi\fP¥×¥í¥È¥³¥ë¤ò»ÈÍѤ·¤Æ¡¢¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¾å¤Î¥Ç¥Õ¥©¥ë¥È¤Î\f3jstatd\fP¥µ¡¼¥Ð¡¼¤ÈÄÌ¿®¤·¤Þ¤¹¡£\f3jstatd\fP¥µ¡¼¥Ð¡¼¤Ï¡¢\f3rmiregistry\fP¤ò»ÈÍѤ·¤Æ¡¢¥Ç¥Õ¥©¥ë¥È¤Î\f3rmiregistry\fP¥Ý¡¼¥È(¥Ý¡¼¥È1099)¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¤¿\f2remote.domain\fP¤ËÇÛÃÖ¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+java(1) \- Java¥¢¥×¥ê¥±¡¼¥·¥ç¥óµ¯Æ°¥Ä¡¼¥ë -+.TP 2 -+o -+jps(1) \- Java²¾ÁÛ¥Þ¥·¥ó¡¦¥×¥í¥»¥¹¡¦¥¹¥Æ¡¼¥¿¥¹¡¦¥Ä¡¼¥ë -+.TP 2 -+o -+jstatd(1) \- jvmstat¥Ç¡¼¥â¥ó -+.TP 2 -+o -+rmiregistry(1) \- Java¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¡¦¥ì¥¸¥¹¥È¥ê -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/jstatd.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/jstatd.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,267 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH jstatd 1 "07 May 2011" -+.TH jstatd 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+jstatd \- ²¾ÁÛ¥Þ¥·¥ójstat¥Ç¡¼¥â¥ó -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+¥Ñ¥é¥á¡¼¥¿ -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+¥»¥¥å¥ê¥Æ¥£ -+.TP 2 -+o -+¥ê¥â¡¼¥È¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹ -+.TP 2 -+o -+Îã -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+jstatd [ \fP\f4options\fP\f3 ]\fP -+.br -+\f3 -+.fl -+\fP -+.fi -+ -+.LP -+.SH "¥Ñ¥é¥á¡¼¥¿" -+.LP -+.RS 3 -+.TP 3 -+options -+¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¡£¥ª¥×¥·¥ç¥ó¤ÏǤ°Õ¤Î½ç½ø¤Ç»ØÄê¤Ç¤¤Þ¤¹¡£½ÅÊ£¤Þ¤¿¤ÏÌ·½â¤¹¤ë¥ª¥×¥·¥ç¥ó¤¬¤¢¤ë¾ì¹ç¡¢ºÇ¸å¤Ë»ØÄꤷ¤¿¥ª¥×¥·¥ç¥ó¤¬Í¥À褵¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3jstatd\fP¥Ä¡¼¥ë¤Ï¡¢·×¬¤µ¤ì¤¿HotSpot Java²¾ÁÛ¥Þ¥·¥ó(JVM)¤ÎºîÀ®¤È½ªÎ»¤ò´Æ»ë¤·¡¢¥í¡¼¥«¥ë¡¦¥·¥¹¥Æ¥à¾å¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ëJava²¾ÁÛ¥Þ¥·¥ó¤Ë¡¢¥ê¥â¡¼¥È´Æ»ë¥Ä¡¼¥ë¤¬Àܳ¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÄ󶡤¹¤ëRMI¥µ¡¼¥Ð¡¼¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤¹¡£ -+.LP -+.LP -+\f3jstatd\fP¥µ¡¼¥Ð¡¼¤Ç¤Ï¡¢¥í¡¼¥«¥ë¡¦¥Û¥¹¥È¤ËRMI¥ì¥¸¥¹¥È¥ê¤¬Â¸ºß¤¹¤ë¤³¤È¤¬É¬Íפˤʤê¤Þ¤¹¡£\f3jstatd\fP¥µ¡¼¥Ð¡¼¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¡¦¥Ý¡¼¥È¤Þ¤¿¤Ï\f2\-p port\fP¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤¿¥Ý¡¼¥È¾å¤ÎRMI¥ì¥¸¥¹¥È¥ê¤ËÀܳ¤·¤è¤¦¤È¤·¤Þ¤¹¡£RMI¥ì¥¸¥¹¥È¥ê¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¢\f2\-p port\fP¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤¿¥Ý¡¼¥È¡¢¤Þ¤¿¤Ï\f2\-p port\fP¤¬¾Êά¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥ÈRMI¥ì¥¸¥¹¥È¥ê¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¤¿\f3jstatd\fP¥¢¥×¥ê¥±¡¼¥·¥ç¥óÆâ¤Ë¡¢1¤Ä¤ÎRMI¥ì¥¸¥¹¥È¥ê¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£ÆâÉôRMI¥ì¥¸¥¹¥È¥ê¤ÎºîÀ®¤Ï¡¢\f2\-nr\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¶Ø»ß¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f3Ãí°Õ:\fP¤³¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ï¥µ¥Ý¡¼¥ÈÂоݳ°¤Ç¤¢¤ê¡¢¾Íè¤ÎJDK¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÍøÍѤǤ¤Ê¤¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£¸½ºß¡¢Windows 98¤ª¤è¤ÓWindows ME¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï»ÈÍѤǤ¤Þ¤»¤ó¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+\f3jstatd\fP¥³¥Þ¥ó¥É¤Ï¼¡¤Î¥ª¥×¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+\-nr -+´û¸¤ÎRMI¥ì¥¸¥¹¥È¥ê¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¢\f2jstatd\fP¥×¥í¥»¥¹Æâ¤ËÆâÉôRMI¥ì¥¸¥¹¥È¥ê¤òºîÀ®¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.TP 3 -+\-p\ port -+RMI¥ì¥¸¥¹¥È¥ê¤¬¤¢¤ë¤ÈͽÁÛ¤µ¤ì¤ë¥Ý¡¼¥ÈÈÖ¹æ¤Ç¤¹¡£¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ï¡¢\f2\-nr\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤ÐºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-n\ rminame -+RMI¥ì¥¸¥¹¥È¥ê¤Ë¤ª¤¤¤Æ¡¢¥ê¥â¡¼¥ÈRMI¥ª¥Ö¥¸¥§¥¯¥È¤¬¥Ð¥¤¥ó¥É¤µ¤ì¤ë̾Á°¤Ç¤¹¡£¥Ç¥Õ¥©¥ë¥È̾¤Ï\f2JStatRemoteHost\fP¤Ç¤¹¡£Ê£¿ô¤Î\f3jstatd\fP¥µ¡¼¥Ð¡¼¤¬Æ±¤¸¥Û¥¹¥È¾å¤Çµ¯Æ°¤·¤Æ¤¤¤ë¾ì¹ç¡¢³Æ¥µ¡¼¥Ð¡¼¤Î¥¨¥¯¥¹¥Ý¡¼¥È¤·¤¿RMI¥ª¥Ö¥¸¥§¥¯¥È¤Î̾Á°¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢°ì°Õ¤Î̾Á°¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢´Æ»ë¥¯¥é¥¤¥¢¥ó¥È¤Î\f2hostid\fP¤ª¤è¤Ó\f2vmid\fPʸ»úÎó¤Ë¡¢¤½¤Î°ì°Õ¤Î¥µ¡¼¥Ð¡¼Ì¾¤ò´Þ¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-Joption -+\f3javac\fP¤¬¸Æ¤Ó½Ð¤¹\f3java\fPµ¯Æ°¥Ä¡¼¥ë¤Ë¡¢\f2option\fP¤òÅϤ·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£\f3\-J\fP¤ò»ÈÍѤ·¤Æ¡¢Java¤Çµ½Ò¤µ¤ì¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤¹¤ëÇظå¤ÎVM¤Ë¥ª¥×¥·¥ç¥ó¤òÅϤ¹¤³¤È¤Ï¡¢¤è¤¯¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "¥»¥¥å¥ê¥Æ¥£" -+.LP -+.LP -+\f3jstatd\fP¥µ¡¼¥Ð¡¼¤Ï¡¢Å¬Àڤʥͥ¤¥Æ¥£¥Ö¡¦¥¢¥¯¥»¥¹¸¢¤ò»ý¤ÄJVM¤Î¤ß¤ò´Æ»ë¤Ç¤¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢\f3jstatd\fP¥×¥í¥»¥¹¤Ï¡¢¥¿¡¼¥²¥Ã¥ÈJVM¤ÈƱ¤¸¥æ¡¼¥¶¡¼»ñ³Ê¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£UNIX(tm)¥Ù¡¼¥¹¤Î¥·¥¹¥Æ¥à¤Ë¤ª¤±¤ë\f2root\fP¥æ¡¼¥¶¡¼¤Ê¤É¤Î°ìÉô¤Î¥æ¡¼¥¶¡¼»ñ³Ê¤Ï¡¢¥·¥¹¥Æ¥à¾å¤ÎǤ°Õ¤ÎJVM¤Ë¤è¤Ã¤Æ¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤¿¥¤¥ó¥¹¥È¥¥¥ë¥á¥ó¥Æ¡¼¥·¥ç¥ó¤Ø¤Î¥¢¥¯¥»¥¹¸¢¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ê»ñ³Ê¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë\f3jstatd\fP¥×¥í¥»¥¹¤Ï¡¢¥·¥¹¥Æ¥à¾å¤Î¤¹¤Ù¤Æ¤ÎJVM¤ò´Æ»ë¤Ç¤¤Þ¤¹¤¬¡¢¥»¥¥å¥ê¥Æ¥£¾å¤ÎÊ̤ÎÌäÂ꤬µ¯¤³¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f3jstatd\fP¥µ¡¼¥Ð¡¼¤Ë¤Ï¡¢¥ê¥â¡¼¥È¡¦¥¯¥é¥¤¥¢¥ó¥È¤Îǧ¾Úµ¡Ç½¤¬¤¢¤ê¤Þ¤»¤ó¡£¤½¤Î¤¿¤á¡¢\f3jstatd\fP¥µ¡¼¥Ð¡¼¡¦¥×¥í¥»¥¹¤ò¼Â¹Ô¤¹¤ë¤È¡¢\f3jstatd\fP¥×¥í¥»¥¹¤¬¥¢¥¯¥»¥¹¸¢¤ò»ý¤Ä¤¹¤Ù¤Æ¤ÎJVM¤Ë¤è¤ë¥¤¥ó¥¹¥È¥¥¥ë¥á¥ó¥Æ¡¼¥·¥ç¥ó¤Î¥¨¥¯¥¹¥Ý¡¼¥È¤ò¡¢¥Í¥Ã¥È¥ï¡¼¥¯¾å¤Î¤¹¤Ù¤Æ¤Î¥æ¡¼¥¶¡¼¤Ë¸ø³«¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î̵ËÉÈ÷¤Ê¾õÂ֤ϡ¢´Ä¶¤Ë¤è¤Ã¤Æ¤Ï˾¤Þ¤·¤¯¤Ê¤¤¾ì¹ç¤¬¤¢¤ë¤Î¤Ç¡¢Æä˼²ÔƯ´Ä¶¤Þ¤¿¤Ï°ÂÁ´¤Ç¤Ê¤¤¥Í¥Ã¥È¥ï¡¼¥¯¤Ç¤Ï¡¢\f3jstatd\fP¥×¥í¥»¥¹¤òµ¯Æ°¤¹¤ëÁ°¤Ë¡¢¥í¡¼¥«¥ë¡¦¥»¥¥å¥ê¥Æ¥£¡¦¥Ý¥ê¥·¡¼¤ò¸¡Æ¤¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f3jstatd\fP¥µ¡¼¥Ð¡¼¤Ï¡¢Â¾¤Î¥»¥¥å¥ê¥Æ¥£¡¦¥Þ¥Í¡¼¥¸¥ã¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢RMISecurityPolicy¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢¥»¥¥å¥ê¥Æ¥£¡¦¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¡¦¥Ý¥ê¥·¡¼¼ÂÁõ¤Î -+.na -+\f2¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤Î¹½Ê¸\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html¤Ë½àµò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¼¡¤Î¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢¥»¥¥å¥ê¥Æ¥£Îã³°¤òȯÀ¸¤»¤º¤Ë\f3jstatd\fP¥µ¡¼¥Ð¡¼¤ò¼Â¹Ô¤Ç¤¤Þ¤¹¡£¤³¤Î¥Ý¥ê¥·¡¼¤Ï¡¢¤¹¤Ù¤Æ¤Î¥³¡¼¥É¥Ù¡¼¥¹¤Ø¤Î¤¢¤é¤æ¤ë¥¢¥¯¥»¥¹¸¢¤òǧ¤á¤ë¥Ý¥ê¥·¡¼¤è¤ê¤â¼«Í³ÅÙ¤¬Ä㤤¤Ç¤¹¤¬¡¢\f3jstatd\fP¥µ¡¼¥Ð¡¼¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤ËºÇÄã¸ÂɬÍפʥ¢¥¯¥»¥¹¸¢¤Î¤ß¤òǧ¤á¤ë¥Ý¥ê¥·¡¼¤è¤ê¤â¼«Í³ÅÙ¤¬¹â¤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+grant codebase "file:${java.home}/../lib/tools.jar" {\fP -+.br -+\f3 -+.fl -+ permission java.security.AllPermission;\fP -+.br -+\f3 -+.fl -+};\fP -+.br -+\f3 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤Î¥Ý¥ê¥·¡¼¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢¤³¤Î¥Æ¥¥¹¥È¤ò\f2jstatd.all.policy\fP¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ë¥³¥Ô¡¼¤·¡¢¼¡¤Î¤è¤¦¤Ë\f3jstatd\fP¥µ¡¼¥Ð¡¼¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+jstatd \-J\-Djava.security.policy=jstatd.all.policy\fP -+.br -+\f3 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤è¤ê¸·¤·¤¤¥»¥¥å¥ê¥Æ¥£¤ò¼Â»Ü¤¹¤ë¥µ¥¤¥È¤Î¾ì¹ç¡¢¥«¥¹¥¿¥à¡¦¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤Æ¡¢ÆÃÄê¤Î¿®Íê¤Ç¤¤ë¥Û¥¹¥È¤Þ¤¿¤Ï¥Í¥Ã¥È¥ï¡¼¥¯¤Ë¥¢¥¯¥»¥¹¤òÀ©¸Â¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢¤³¤Î¤è¤¦¤ÊÊýË¡¤Ï¡¢IP¥¢¥É¥ì¥¹¤ÎÅðÄ°¹¶·â¤ò¼õ¤±¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£¥»¥¥å¥ê¥Æ¥£¤ÎÌäÂê¤Ë¤Ä¤¤¤Æ¡¢¥«¥¹¥¿¥Þ¥¤¥º¤·¤¿¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤Ç¤âÂнè¤Ç¤¤Ê¤¤¾ì¹ç¤Ï¡¢\f3jstatd\fP¥µ¡¼¥Ð¡¼¤ò¼Â¹Ô¤»¤º¤Ë¡¢\f3jstat\fP¤È\f3jps\fP¥Ä¡¼¥ë¤ò¥í¡¼¥«¥ë¤Ç»ÈÍѤ¹¤ë¤³¤È¤¬ºÇ¤â°ÂÁ´¤ÊÊýË¡¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.SH "¥ê¥â¡¼¥È¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹" -+.LP -+.LP -+\f3jstatd\fP¥×¥í¥»¥¹¤¬¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¡¢Æȼ«¤Ë³«È¯¤·¤¿¤â¤Î¤Ç¤¢¤êÊѹ¹¤µ¤ì¤ëͽÄê¤Ç¤¹¡£¥æ¡¼¥¶¡¼¤ª¤è¤Ó³«È¯¼Ô¤Ï¡¢¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ø¤Î½ñ¹þ¤ß¤ò¹Ô¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "Îã" -+.LP -+.LP -+¼¡¤Ë\f3jstatd\fP¤òµ¯Æ°¤¹¤ëÎã¤ò¾Ò²ð¤·¤Þ¤¹¡£\f3jstatd\fP¥¹¥¯¥ê¥×¥È¤Ë¤è¤Ã¤Æ¡¢¥µ¡¼¥Ð¡¼¤Ï¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¤Ç¼«Æ°Åª¤Ëµ¯Æ°¤·¤Þ¤¹¡£ -+.LP -+.SS -+ÆâÉôRMI¥ì¥¸¥¹¥È¥ê¤Î»ÈÍÑ -+.LP -+.LP -+¤³¤ÎÎã¤Ï¡¢ÆâÉôRMI¥ì¥¸¥¹¥È¥ê¤ò»ÈÍѤ·¤¿\f3jstatd\fP¤Îµ¯Æ°¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ÎÎã¤Ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤ÎRMI¥ì¥¸¥¹¥È¥ê¡¦¥Ý¡¼¥È(¥Ý¡¼¥È1099)¤Ë¤Ï¡¢Â¾¤Î¥µ¡¼¥Ð¡¼¤Ï¥Ð¥¤¥ó¥É¤µ¤ì¤Æ¤¤¤Ê¤¤¤ÈÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+jstatd \-J\-Djava.security.policy=all.policy -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+³°ÉôRMI¥ì¥¸¥¹¥È¥ê¤Î»ÈÍÑ -+.LP -+.LP -+¤³¤ÎÎã¤Ï¡¢³°ÉôRMI¥ì¥¸¥¹¥È¥ê¤ò»ÈÍѤ·¤¿\f3jstatd\fP¤Îµ¯Æ°¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+rmiregistry& -+.fl -+jstatd \-J\-Djava.security.policy=all.policy -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤ÎÎã¤Ï¡¢¥Ý¡¼¥È2020¤Î³°ÉôRMI¥ì¥¸¥¹¥È¥ê¤ò»ÈÍѤ·¤¿\f3jstatd\fP¤Îµ¯Æ°¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+rmiregistry 2020& -+.fl -+jstatd \-J\-Djava.security.policy=all.policy \-p 2020 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤ÎÎã¤Ï¡¢AlternateJstatdServerName¤Î̾Á°¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¤¿¡¢¥Ý¡¼¥È2020¤Î³°ÉôRMI¥ì¥¸¥¹¥È¥ê¤ò»ÈÍѤ·¤¿\f3jstatd\fP¤Îµ¯Æ°¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+rmiregistry 2020& -+.fl -+jstatd \-J\-Djava.security.policy=all.policy \-p 2020 \-n AlternateJstatdServerName -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+¥¤¥ó¥×¥í¥»¥¹RMI¥ì¥¸¥¹¥È¥ê¤ÎºîÀ®¤Î¶Ø»ß -+.LP -+.LP -+¤³¤ÎÎã¤Ï¡¢RMI¥ì¥¸¥¹¥È¥ê¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤ËRMI¥ì¥¸¥¹¥È¥ê¤òºîÀ®¤·¤Ê¤¤\f3jstatd\fP¤Îµ¯Æ°¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ÎÎã¤Ç¤Ï¡¢RMI¥ì¥¸¥¹¥È¥ê¤¬¤¹¤Ç¤Ë¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤ÈÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡£¼Â¹Ô¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢Å¬Àڤʥ¨¥é¡¼¡¦¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+jstatd \-J\-Djava.security.policy=all.policy \-nr -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+RMI¥í¥°µ¡Ç½¤Î͸ú²½ -+.LP -+.LP -+¤³¤ÎÎã¤Ï¡¢RMI¥í¥°µ¡Ç½¤ò͸ú¤Ë¤·¤¿\f3jstatd\fP¤Îµ¯Æ°¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ÎÊýË¡¤Ï¡¢¥È¥é¥Ö¥ë¥·¥å¡¼¥Æ¥£¥ó¥°¤Þ¤¿¤Ï¥µ¡¼¥Ð¡¼³èÆ°¤Î´Æ»ë¤ËÌòΩ¤Á¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+jstatd \-J\-Djava.security.policy=all.policy \-J\-Djava.rmi.server.logCalls=true -+.fl -+\fP -+.fi -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+java(1) \- Java¥¢¥×¥ê¥±¡¼¥·¥ç¥óµ¯Æ°¥Ä¡¼¥ë -+.TP 2 -+o -+jps(1) \- Java²¾ÁÛ¥Þ¥·¥ó¡¦¥×¥í¥»¥¹¡¦¥¹¥Æ¡¼¥¿¥¹¡¦¥Ä¡¼¥ë -+.TP 2 -+o -+jstat(1) \- Java²¾ÁÛ¥Þ¥·¥óÅý·×¥Ç¡¼¥¿´Æ»ë¥Ä¡¼¥ë -+.TP 2 -+o -+.na -+\f2rmiregistry\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#rmi \- Java¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¡¦¥ì¥¸¥¹¥È¥ê -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/keytool.1 2012-08-10 10:22:49.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/keytool.1 2013-03-09 08:44:53.000000000 -0800 -@@ -1,4 +1,4 @@ --." Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. -+." Copyright (c) 1998-2011 keytool tool, Oracle and/or its affiliates. All rights reserved. - ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - ." - ." This code is free software; you can redistribute it and/or modify it -@@ -19,6 +19,1827 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH keytool 1 "07 May 2011" -+.TH keytool 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+keytool \- ¸°¤È¾ÚÌÀ½ñ¤Î´ÉÍý¥Ä¡¼¥ë -+.LP -+.LP -+°Å¹æ²½¸°¡¢X.509¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ª¤è¤Ó¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤ò´Þ¤à¥¡¼¥¹¥È¥¢(¥Ç¡¼¥¿¥Ù¡¼¥¹)¤ò´ÉÍý¤·¤Þ¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3keytool\fP [ commands ] -+.fl -+.fi -+ -+.LP -+.LP -+Java SE 6¤Çkeytool¤Î¥³¥Þ¥ó¥É¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¬Êѹ¹¤µ¤ì¤Þ¤·¤¿¡£¾ÜºÙ¤Ï¡¢Êѹ¹ÅÀ¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£°ÊÁ°¤ËÄêµÁ¤µ¤ì¤¿¥³¥Þ¥ó¥É¤â°ú³¤¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.SH "ÀâÌÀ" -+.LP -+\f3keytool\fP¤Ï¡¢¸°¤È¾ÚÌÀ½ñ¤ò´ÉÍý¤¹¤ë¤¿¤á¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ç¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥æ¡¼¥¶¡¼¤Ï¼«Ê¬¤Î¸ø³«¸°¤ÈÈëÌ©¸°¤Î¥Ú¥¢¤ª¤è¤Ó´ØÏ¢¤¹¤ë¾ÚÌÀ½ñ¤ò´ÉÍý¤·¡¢¥Ç¥¸¥¿¥ë½ð̾¤ò»ÈÍѤ·¤¿¼«¸Êǧ¾Ú(¾¤Î¥æ¡¼¥¶¡¼¤Þ¤¿¤Ï¥µ¡¼¥Ó¥¹¤ËÂФ·¤Æ¼«Ê¬¼«¿È¤òǧ¾Ú¤¹¤ë¤³¤È)¤ä¡¢¥Ç¡¼¥¿¤ÎÀ°¹çÀ¤È¾ÚÌÀ½ñ¤Ë´Ø¤¹¤ë¥µ¡¼¥Ó¥¹¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤Þ¤¿¡¢ÄÌ¿®Áê¼ê¤Î¸ø³«¸°¤ò(¾ÚÌÀ½ñ¤Î·Á¤Ç)¥¥ã¥Ã¥·¥å¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.LP -+¡Ö\f2¾ÚÌÀ½ñ\fP¡×¤È¤Ï¡¢¤¢¤ë¥¨¥ó¥Æ¥£¥Æ¥£(¿Íʪ¡¢²ñ¼Ò¤Ê¤É)¤«¤é¤Î¥Ç¥¸¥¿¥ë½ð̾ÉÕ¤¤Îʸ½ñ¤Î¤³¤È¤Ç¤¹¡£¾ÚÌÀ½ñ¤Ë¤Ï¡¢Â¾¤Î¤¢¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤Î¸ø³«¸°(¤ª¤è¤Ó¤½¤Î¾¤Î¾ðÊó)¤¬ÆÃÊ̤ÊÃͤò»ý¤Ã¤Æ¤¤¤ë¤³¤È¤¬½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£(¾ÚÌÀ½ñ¤ò»²¾È¡£)¥Ç¡¼¥¿¤Ë¥Ç¥¸¥¿¥ë½ð̾¤¬ÉÕ¤¤¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥Ç¥¸¥¿¥ë½ð̾¤ò¸¡¾Ú¤¹¤ë¤³¤È¤Ç¡¢¥Ç¡¼¥¿¤ÎÀ°¹çÀ¤ª¤è¤Ó¥Ç¡¼¥¿¤¬ËÜʪ¤Ç¤¢¤ë¤³¤È¤ò¥Á¥§¥Ã¥¯¤Ç¤¤Þ¤¹¡£¥Ç¡¼¥¿¤Î¡Ö\f2À°¹çÀ\fP¡×¤È¤Ï¡¢¥Ç¡¼¥¿¤¬Êѹ¹¤µ¤ì¤¿¤ê¡¢²þÊѤµ¤ì¤¿¤ê¤·¤Æ¤¤¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£¤Þ¤¿¡¢¥Ç¡¼¥¿¤¬¡Ö\f2ËÜʪ¤Ç¤¢¤ë\fP¡×¤È¤Ï¡¢¤½¤Î¥Ç¡¼¥¿¤¬¡¢¥Ç¡¼¥¿¤òºîÀ®¤·¤Æ½ð̾¤·¤¿¤È¾Î¤¹¤ë¿Íʪ¤«¤é¼ÂºÝ¤ËÅϤµ¤ì¤¿¥Ç¡¼¥¿¤Ç¤¢¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ -+.LP -+.LP -+¤Þ¤¿¡¢\f3keytool\fP¤ò»ÈÍѤ¹¤ì¤Ð¡¢DES¤Ê¤É¤ÎÂоΰŹ沽/Éü¹æ²½¤Ç»ÈÍѤµ¤ì¤ëÈëÌ©¸°¤ò´ÉÍý¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f3keytool\fP¤Ï¡¢¸°¤È¾ÚÌÀ½ñ¤ò\f2¥¡¼¥¹¥È¥¢\fP¤Ë³ÊǼ¤·¤Þ¤¹¡£ -+.LP -+.SH "¥³¥Þ¥ó¥É¤È¥ª¥×¥·¥ç¥ó¤Ë´Ø¤¹¤ëÃí°Õ" -+.LP -+.LP -+ÍÍ¡¹¤Ê¥³¥Þ¥ó¥É¤È¤½¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¡¢²¼µ¤ÇÀâÌÀ¤·¤Þ¤¹¡£Ãí°Õ: -+.LP -+.RS 3 -+.TP 2 -+o -+¤É¤Î¥³¥Þ¥ó¥É̾¤ª¤è¤Ó¥ª¥×¥·¥ç¥ó̾¤Ë¤âÀèƬ¤Ë¥Þ¥¤¥Ê¥¹µ¹æ(\-)¤¬ÉÕ¤¤Þ¤¹¡£ -+.TP 2 -+o -+³Æ¥³¥Þ¥ó¥É¤Î¥ª¥×¥·¥ç¥ó¤ÏǤ°Õ¤Î½ç½ø¤Ç»ØÄê¤Ç¤¤Þ¤¹¡£ -+.TP 2 -+o -+¥¤¥¿¥ê¥Ã¥¯ÂΤˤʤäƤ¤¤Ê¤¤¤¹¤Ù¤Æ¤Î¹àÌÜ¡¢¤Þ¤¿¤ÏÃæ³ç¸Ì¤«³Ñ³ç¸Ì¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¹àÌܤϡ¢¤½¤Î¤È¤ª¤ê¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó¤ò°Ï¤àÃæ³ç¸Ì¤Ï¡¢°ìÈ̤ˡ¢¤½¤Î¥ª¥×¥·¥ç¥ó¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¡¢¥Ç¥Õ¥©¥ë¥ÈÃͤ¬»ÈÍѤµ¤ì¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£Ãæ³ç¸Ì¤Ï¡¢\f2\-v\fP¡¢\f2\-rfc\fP¤ª¤è¤Ó\f2\-J\fP¥ª¥×¥·¥ç¥ó¤ò°Ï¤à¤¿¤á¤Ë¤â»ÈÍѤµ¤ì¤Þ¤¹¤¬¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ï¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤵ¤ì¤¿¾ì¹ç¤Ë¤Î¤ß°ÕÌ£¤ò»ý¤Á¤Þ¤¹(¤Ä¤Þ¤ê¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ï¡¢¥ª¥×¥·¥ç¥ó¼«ÂΤò»ØÄꤷ¤Ê¤¤¤³¤È°Ê³°¤Ë¡Ö¥Ç¥Õ¥©¥ë¥È¡×Ãͤϸºß¤·¤Þ¤»¤ó)¡£ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó¤ò°Ï¤à³Ñ³ç¸Ì¤Ï¡¢¤½¤Î¥ª¥×¥·¥ç¥ó¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¡¢ÃͤÎÆþÎϤòµá¤á¤é¤ì¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£(\f2\-keypass\fP¥ª¥×¥·¥ç¥ó¤Î¾ì¹ç¡¢¥ª¥×¥·¥ç¥ó¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢\f3keytool\fP¤¬¤Þ¤º¥¡¼¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤«¤éÈó¸ø³«/ÈëÌ©¸°¤ÎÉü¸µ¤ò»î¤ß¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤Ï¡¢¤³¤Î»î¤ß¤¬¼ºÇÔ¤·¤¿¾ì¹ç¤ËÈó¸ø³«/ÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£) -+.TP 2 -+o -+¥¤¥¿¥ê¥Ã¥¯ÂΤιàÌܤμºݤÎÃÍ(¥ª¥×¥·¥ç¥ó¤ÎÃÍ)¤Ï¡¢»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2\-printcert\fP¥³¥Þ¥ó¥É¤Î·Á¼°¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.nf -+\f3 -+.fl -+ keytool \-printcert {\-file \fP\f4cert_file\fP\f3} {\-v} -+.fl -+\fP -+.fi -+.LP -+\f2\-printcert\fP¥³¥Þ¥ó¥É¤ò»ØÄꤹ¤ë¤È¤¤Ï¡¢\f2cert_file\fP¤Î¤«¤ï¤ê¤Ë¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ keytool \-printcert \-file VScert.cer -+.fl -+\fP -+.fi -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó¤ÎÃͤ˶õÇò(¥¹¥Ú¡¼¥¹)¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢Ãͤò°úÍÑÉä¤Ç°Ï¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\f2\-help\fP¥³¥Þ¥ó¥É¤Ï¥Ç¥Õ¥©¥ë¥È¤Î¥³¥Þ¥ó¥É¤Ç¤¹¡£¤½¤Î¤¿¤á¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó -+.nf -+\f3 -+.fl -+ keytool -+.fl -+\fP -+.fi -+.LP -+¤Ï¡¢¼¡¤ÈƱ¤¸¤Ç¤¹¡£ -+.nf -+\f3 -+.fl -+ keytool \-help -+.fl -+\fP -+.fi -+.RE -+ -+.LP -+.SS -+¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ -+.LP -+.LP -+¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤϡ¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+\-alias "mykey" -+.fl -+ -+.fl -+\-keyalg -+.fl -+ "DSA" (when using \fP\f3\-genkeypair\fP\f3) -+.fl -+ "DES" (when using \fP\f3\-genseckey\fP\f3) -+.fl -+ -+.fl -+\-keysize -+.fl -+ 2048 (when using \fP\f3\-genkeypair\fP\f3 and \-keyalg is "RSA") -+.fl -+ 1024 (when using \fP\f3\-genkeypair\fP\f3 and \-keyalg is "DSA") -+.fl -+ 256 (when using \fP\f3\-genkeypair\fP\f3 and \-keyalg is "EC") -+.fl -+ 56 (when using \fP\f3\-genseckey\fP\f3 and \-keyalg is "DES") -+.fl -+ 168 (when using \fP\f3\-genseckey\fP\f3 and \-keyalg is "DESede") -+.fl -+ -+.fl -+ -+.fl -+\-validity 90 -+.fl -+ -+.fl -+\-keystore the file named \fP\f4.keystore\fP\f3 in the user's home directory -+.fl -+ -+.fl -+\-storetype the value of the "keystore.type" property in the security properties file, -+.fl -+ which is returned by the static \fP\f4getDefaultType\fP\f3 method in -+.fl -+ \fP\f4java.security.KeyStore\fP\f3 -+.fl -+ -+.fl -+\-file stdin if reading, stdout if writing -+.fl -+ -+.fl -+\-protected false -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¸ø³«/ÈëÌ©¸°¥Ú¥¢¤ÎÀ¸À®¤Ë¤ª¤¤¤Æ¡¢½ð̾¥¢¥ë¥´¥ê¥º¥à(\f2\-sigalg\fP¥ª¥×¥·¥ç¥ó)¤Ï¡¢´ð¤Ë¤Ê¤ëÈëÌ©¸°¤Î¥¢¥ë¥´¥ê¥º¥à¤«¤éÇÉÀ¸¤·¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+´ð¤Ë¤Ê¤ëÈëÌ©¸°¤¬DSA¥¿¥¤¥×¤Ç¤¢¤ë¾ì¹ç¤Ï¡¢\f2\-sigalg\fP¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤÏSHA1withDSA¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+´ð¤Ë¤Ê¤ëÈëÌ©¸°¤¬RSA¥¿¥¤¥×¤Ç¤¢¤ë¾ì¹ç¤Ï¡¢\f2\-sigalg\fP¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤÏSHA256withRSA¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+´ð¤Ë¤Ê¤ëÈëÌ©¸°¤¬EC¥¿¥¤¥×¤Ç¤¢¤ë¾ì¹ç¤Ï¡¢\f2\-sigalg\fP¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤÏSHA256withECDSA¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+ÁªÂò²Äǽ¤Ê\f2\-keyalg\fP¤ª¤è¤Ó\f2\-sigalg\fP¤Î´°Á´¤Ê°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢ -+.na -+\f2Java Cryptography Architecture API Specification & Reference\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SS -+°ìÈÌ¥ª¥×¥·¥ç¥ó -+.LP -+.LP -+\f2\-v\fP¥ª¥×¥·¥ç¥ó¤Ï¡¢\f2\-help\fP¥³¥Þ¥ó¥É¤ò½ü¤¯¤¹¤Ù¤Æ¤Î¥³¥Þ¥ó¥É¤Ç»ÈÍѤǤ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¥³¥Þ¥ó¥É¤Ï¡Ö¾éĹ¡×¥â¡¼¥É¤Ç¼Â¹Ô¤µ¤ì¡¢¾ÜºÙ¤Ê¾ÚÌÀ½ñ¾ðÊ󤬽ÐÎϤµ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+¤Þ¤¿¡¢\f2\-J\fP\f2javaoption\fP¥ª¥×¥·¥ç¥ó¤â¡¢Ç¤°Õ¤Î¥³¥Þ¥ó¥É¤Ç»ÈÍѤǤ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢»ØÄꤵ¤ì¤¿\f2javaoption\fPʸ»úÎó¤¬Java¥¤¥ó¥¿¥×¥ê¥¿¤ËľÀÜÅϤµ¤ì¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ï¡¢¶õÇò¤ò´Þ¤á¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¼Â¹Ô´Ä¶¤Þ¤¿¤Ï¥á¥â¥ê¡¼»ÈÍѤòÄ´À°¤¹¤ë¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£»ØÄê¤Ç¤¤ë¥¤¥ó¥¿¥×¥ê¥¿¡¦¥ª¥×¥·¥ç¥ó¤ò°ìÍ÷ɽ¼¨¤¹¤ë¤Ë¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç\f2java \-h\fP¤Þ¤¿¤Ï\f2java \-X\fP¤ÈÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+¼¡¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥¡¼¥¹¥È¥¢¤ËÂФ¹¤ëÁàºî¤ò¹Ô¤¦¤¹¤Ù¤Æ¤Î¥³¥Þ¥ó¥É¤Ç»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+\-storetype storetype -+.LP -+¤³¤Î½¤¾þ»Ò¤Ï¡¢¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤¹¤ë¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤ò»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-keystore keystore -+.LP -+¥¡¼¥¹¥È¥¢¤Î¾ì½ê¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+ÆÃÄê¤Î\f3keytool\fP¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ëºÝ¤Ë¡¢JKS¥¹¥È¥¢¥¿¥¤¥×¤¬»ÈÍѤµ¤ì¡¢¤«¤Ä¥¡¼¥¹¥È¥¢¡¦¥Õ¥¡¥¤¥ë¤¬¤Þ¤À¸ºß¤·¤Æ¤¤¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¿·¤·¤¤¥¡¼¥¹¥È¥¢¡¦¥Õ¥¡¥¤¥ë¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2keytool \-genkeypair\fP¤Î¼Â¹Ô»þ¤Ë\f2\-keystore\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢\f2.keystore\fP¤È¤¤¤¦Ì¾Á°¤Î¥Ç¥Õ¥©¥ë¥È¡¦¥¡¼¥¹¥È¥¢¡¦¥Õ¥¡¥¤¥ë¤¬¥æ¡¼¥¶¡¼¤Î¥Û¡¼¥à¡¦¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ë¤Þ¤À¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¤½¤³¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£Æ±Íͤˡ¢\f2\-keystore \fP\f2ks_file\fP¤È¤¤¤¦¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤â¤½¤Î\f2ks_file\fP¤¬Â¸ºß¤·¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.LP -+\f2\-keystore\fP¥ª¥×¥·¥ç¥ó¤«¤é¤ÎÆþÎÏ¥¹¥È¥ê¡¼¥à¤Ï¡¢\f2KeyStore.load\fP¥á¥½¥Ã¥É¤ËÅϤµ¤ì¤Þ¤¹¡£URL¤È¤·¤Æ\f2NONE\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢null¤Î¥¹¥È¥ê¡¼¥à¤¬\f2KeyStore.load\fP¥á¥½¥Ã¥É¤ËÅϤµ¤ì¤Þ¤¹¡£\f2NONE\fP¤Ï¡¢\f2KeyStore\fP¤¬¥Õ¥¡¥¤¥ë¥Ù¡¼¥¹¤Ç¤Ï¤Ê¤¯¡¢¤¿¤È¤¨¤Ð¡¢¥Ï¡¼¥É¥¦¥§¥¢¡¦¥È¡¼¥¯¥ó¡¦¥Ç¥Ð¥¤¥¹¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-storepass[:env|:file] argument -+.LP -+¥¡¼¥¹¥È¥¢¤ÎÀ°¹çÀ¤òÊݸ¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+½¤¾þ»Ò\f2env\fP¤Þ¤¿¤Ï\f2file\fP¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÃͤÏ\f2argument\fP¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ÎÃͤϡ¢6ʸ»ú°Ê¾å¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¡¢¥Ñ¥¹¥ï¡¼¥É¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¼èÆÀ¤µ¤ì¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f2env\fP: \f2argument\fP¤È¤¤¤¦Ì¾Á°¤Î´Ä¶ÊÑ¿ô¤«¤é¥Ñ¥¹¥ï¡¼¥É¤ò¼èÆÀ¤·¤Þ¤¹¡£ -+.TP 2 -+o -+\f2file\fP: \f2argument\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤«¤é¥Ñ¥¹¥ï¡¼¥É¤ò¼èÆÀ¤·¤Þ¤¹¡£ -+.RE -+.LP -+\f3Ãí°Õ\fP: \f2\-keypass\fP¡¢\f2\-srckeypass\fP¡¢\f2\-destkeypass\fP¡¢\f2\-srcstorepass\fP¡¢\f2\-deststorepass\fP¤Ê¤É¤Î¥Ñ¥¹¥ï¡¼¥É¤òɬÍפȤ¹¤ë¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó¤Ï¤¹¤Ù¤Æ¡¢\f2env\fP¤È\f2file\fP½¤¾þ»Ò¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¡£¥Ñ¥¹¥ï¡¼¥É¡¦¥ª¥×¥·¥ç¥ó¤È½¤¾þ»Ò¤Ï¡¢É¬¤º¥³¥í¥ó(\f2:\fP)¤Ç¶èÀڤäƤ¯¤À¤µ¤¤¡£ -+.LP -+¥Ñ¥¹¥ï¡¼¥É¤Ï¡¢¥¡¼¥¹¥È¥¢¤ÎÆâÍƤ˥¢¥¯¥»¥¹¤¹¤ë¤¹¤Ù¤Æ¤Î¥³¥Þ¥ó¥É¤Ç»ÈÍѤµ¤ì¤Þ¤¹¡£¤³¤Î¼ï¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç\f2\-storepass\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.LP -+¥¡¼¥¹¥È¥¢¤«¤é¾ðÊó¤ò¼è¤ê½Ð¤¹¾ì¹ç¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤ò¾Êά¤Ç¤¤Þ¤¹¡£¥Ñ¥¹¥ï¡¼¥É¤ò¾Êά¤¹¤ë¤È¡¢¼è¤ê½Ð¤¹¾ðÊó¤ÎÀ°¹çÀ¤ò¥Á¥§¥Ã¥¯¤Ç¤¤Ê¤¤¤Î¤Ç¡¢·Ù¹ð¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-providerName provider_name -+.LP -+¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ëÆâ¤Ë´Þ¤Þ¤ì¤ë°Å¹æ²½¥µ¡¼¥Ó¥¹¡¦¥×¥í¥Ð¥¤¥À̾¤òÆÃÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-providerClass provider_class_name -+.LP -+°Å¹æ²½¥µ¡¼¥Ó¥¹¡¦¥×¥í¥Ð¥¤¥À¤¬¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ë¤Ë»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤È¤¤Ï¡¢¤½¤Î¥Þ¥¹¥¿¡¼¡¦¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î̾Á°¤ò»ØÄꤹ¤ë¤È¤¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-providerArg provider_arg -+.LP -+\f2\-providerClass\fP¤ÈÁȤ߹礻¤Æ»ÈÍѤ·¤Þ¤¹¡£\f2provider_class_name\fP¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤ËÂФ¹¤ë¾Êά²Äǽ¤Êʸ»úÎóÆþÎÏ°ú¿ô¤òɽ¤·¤Þ¤¹¡£ -+.TP 3 -+\-protected -+.LP -+\f2true\fP¤Þ¤¿¤Ï\f2false\fP¤Î¤¤¤º¤ì¤«¡£ÀìÍÑPIN¥ê¡¼¥À¡¼¤Ê¤É¤ÎÊݸ¤ì¤¿Ç§¾Ú¥Ñ¥¹¤ò²ð¤·¤Æ¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤³¤ÎÃͤË\f2true\fP¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+Ãí°Õ: \f2\-importkeystore\fP¥³¥Þ¥ó¥É¤Ë¤Ï2¤Ä¤Î¥¡¼¥¹¥È¥¢¤¬´Ø·¸¤·¤Æ¤¤¤ë¤¿¤á¡¢2¤Ä¤Î¥ª¥×¥·¥ç¥ó¡¢¤Ä¤Þ¤ê\f2\-srcprotected\fP¤È\f2\-destprotected\fP¤¬¥½¡¼¥¹¡¦¥¡¼¥¹¥È¥¢¤È¥¿¡¼¥²¥Ã¥È¡¦¥¡¼¥¹¥È¥¢¤Ë¤½¤ì¤¾¤ì»ØÄꤵ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-ext {name{:critical}{=value}} -+.LP -+X.509¾ÚÌÀ½ñ¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤ò¼¨¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò\-genkeypair¤ª¤è¤Ó\-gencert¤Ç»ÈÍѤ·¤Æ¡¢À¸À®¤µ¤ì¤ë¾ÚÌÀ½ñ¤Þ¤¿¤Ï\f2\-certreq\fP¤Ë¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤òËä¤á¹þ¤ß¡¢¾ÚÌÀ½ñ¥ê¥¯¥¨¥¹¥È¤Ç¥ê¥¯¥¨¥¹¥È¤µ¤ì¤ë¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤ò¼¨¤¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢Ê£¿ô²ó»ÈÍѤǤ¤Þ¤¹¡£name¤Ë¤Ï¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó̾(²¼µ¤ò»²¾È)¤Þ¤¿¤ÏǤ°Õ¤ÎOIDÈÖ¹æ¤ò»ØÄê¤Ç¤¤Þ¤¹¡£value¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Î¥Ñ¥é¥á¡¼¥¿¤ò¼¨¤·¤Þ¤¹¡£¾Êά¤·¤¿¾ì¹ç¤Ï¡¢¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ(ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç)¤ò¼¨¤¹¤«¡¢¤Þ¤¿¤Ï¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Ë¥Ñ¥é¥á¡¼¥¿¤ÏɬÍפ¢¤ê¤Þ¤»¤ó¡£\f2:critical\fP½¤¾þ»Ò¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤ÎisCritical°À¤¬true¤Ç¤¢¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤Ïfalse¤Ç¤¢¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£\f2:critical\fP¤Î¤«¤ï¤ê¤Ë\f2:c\fP¤ò»ÈÍѤǤ¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+¸½ºß¡¢keytool¤Ï¼¡¤Î̾Á°¤Î¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹(Âçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó)¡£ -+.LP -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 80 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+BC¤Þ¤¿¤ÏBasicConstraints -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+´°Á´¤Ê·Á¤Ï¡Öca:{true|false}[,pathlen:<len>]¡×¤Ç¡¢<len>¤Ï¡Öca:true,pathlen:<len>¡×¤Î¾Êάɽµ¤Ç¤¹¡£ -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+usage(,usage)*¡£usage¤Ë¤Ï¡¢digitalSignature¡¢ nonRepudiation (contentCommitment)¡¢keyEncipherment¡¢dataEncipherment¡¢keyAgreement¡¢keyCertSign¡¢cRLSign¡¢encipherOnly¡¢decipherOnly¤Î¤¤¤º¤ì¤«¤ò»ØÄê¤Ç¤¤Þ¤¹¡£Usage¤Ï¡¢¤¢¤¤¤Þ¤¤¤µ¤¬¤Ê¤±¤ì¤Ð¡¢ºÇ½é¤Î¿ôʸ»ú(¤¿¤È¤¨¤Ð¡¢digitalSignature¤òdig¤Ë)¤Þ¤¿¤Ï¥¥ã¥á¥ë¥±¡¼¥¹¡¦¥¹¥¿¥¤¥ë¤Ë(¤¿¤È¤¨¤Ð¡¢ û½Ì¤Ç¤¤Þ¤¹¡£Usage¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£ -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+EKU¤Þ¤¿¤ÏExtendedkeyUsage -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+usage(,usage)*¡£usage¤Ë¤Ï¡¢anyExtendedKeyUsage¡¢ serverAuth¡¢clientAuth¡¢codeSigning¡¢emailProtection¡¢ timeStamping¡¢OCSPSigning¡¢¤Þ¤¿¤ÏǤ°Õ¤ÎOIDʸ»úÎó¤Î¤¤¤º¤ì¤«¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ ̾Á°ÉÕ¤¤Îusage¤Ï¡¢¤¢¤¤¤Þ¤¤¤µ¤¬¤Ê¤±¤ì¤Ð¡¢ ºÇ½é¤Î¿ôʸ»ú¤Þ¤¿¤Ï¥¥ã¥á¥ë¥±¡¼¥¹¡¦¥¹¥¿¥¤¥ë¤Ë û½Ì¤Ç¤¤Þ¤¹¡£Usage¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£ -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+SAN¤Þ¤¿¤ÏSubjectAlternativeName -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+type:value(,type:value)*¡£type¤Ë¤Ï¡¢EMAIL¡¢URI¡¢DNS¡¢IP¤Þ¤¿¤ÏOID¤ò»ØÄê¤Ç¤¤Þ¤¹¡£value¤Ï¡¢type¤Îʸ»úÎó·Á¼°¤ÎÃͤǤ¹¡£ -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di h+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+IAN¤Þ¤¿¤ÏIssuerAlternativeName -+.br -+.di -+.nr h| \n(dn -+.nr h- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di i+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SubjectAlternativeName¤ÈƱ¤¸¤Ç¤¹ -+.br -+.di -+.nr i| \n(dn -+.nr i- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di j+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+SIA¤Þ¤¿¤ÏSubjectInfoAccess -+.br -+.di -+.nr j| \n(dn -+.nr j- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di k+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+method:location\-type:location\-value (,method:location\-type:location\-value)*¡£ method¤Ë¤Ï¡¢¡ÖtimeStamping¡×¡¢¡ÖcaRepository¡×¡¢¤Þ¤¿¤ÏǤ°Õ¤ÎOID¤ò»ØÄê¤Ç¤¤Þ¤¹¡£location\-type¤ª¤è¤Ólocation\-value¤Ë¤Ï¡¢SubjectAlternativeName¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤ëǤ°Õ¤Îtype:value¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.br -+.di -+.nr k| \n(dn -+.nr k- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di l+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+AIA¤Þ¤¿¤ÏAuthorityInfoAccess -+.br -+.di -+.nr l| \n(dn -+.nr l- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di m+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+SubjectInfoAccess¤ÈƱ¤¸¤Ç¤¹¡£method¤Ë¤Ï¡¢¡Öocsp¡×¡¢¡ÖcaIssuers¡×¡¢¤Þ¤¿¤ÏǤ°Õ¤ÎOID¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.br -+.di -+.nr m| \n(dn -+.nr m- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \w\f3̾Á°\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \wKU¤Þ¤¿¤ÏKeyUsage -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 38 \n(a- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \n(d- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \n(f- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \n(h- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \n(j- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \n(l- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 81 0 -+.nr 38 \w\f3ÃÍ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(g- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(i- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(k- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(m- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 325 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3̾Á°\fP\h'|\n(41u'\f3ÃÍ\fP -+.ne \n(a|u+\n(.Vu -+.ne \n(b|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'KU¤Þ¤¿¤ÏKeyUsage\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.ne \n(e|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.ne \n(g|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(h|u+\n(.Vu -+.ne \n(i|u+\n(.Vu -+.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -+.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.h+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.i+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(j|u+\n(.Vu -+.ne \n(k|u+\n(.Vu -+.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -+.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.j+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.k+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(l|u+\n(.Vu -+.ne \n(m|u+\n(.Vu -+.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -+.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.l+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.m+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.rm h+ -+.rm i+ -+.rm j+ -+.rm k+ -+.rm l+ -+.rm m+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-44 -+ -+.LP -+.LP -+OID̾¤Î¾ì¹ç¡¢OCTET STRING¥¿¥¤¥×¤ÈŤµ¤Î¥Ð¥¤¥È¤ò½ü³°¤·¤¿¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÃͤÏextnValue¤ÎHEX¥À¥ó¥×¤ÎDER¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ç¤¹¡£HEXʸ»úÎó¤Ç¤Ï¡¢É¸½à¤ÎHEX¿ô(0\-9¡¢a\-f¡¢A\-F)°Ê³°¤Îʸ»ú¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢\f2¡Ö01:02:03:04¡×\fP¤È\f2¡Ö01020304¡×\fP¤ÎξÊý¤È¤âƱ°ì¤ÎÃͤȤ·¤Æ¼õ¤±ÉÕ¤±¤é¤ì¤Þ¤¹¡£Ãͤ¬¤Ê¤¤¾ì¹ç¡¢¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤ÎÃÍ¥Õ¥£¡¼¥ë¥É¤Ï¶õ¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-gencert\fP¤Ç¤Î¤ß»ÈÍѤ¹¤ë\f2¡Öhonored¡×\fP¤È¤¤¤¦ÆÃÊ̤Ê̾Á°¤Ï¡¢¾ÚÌÀ½ñ¥ê¥¯¥¨¥¹¥È¤Ë´Þ¤Þ¤ì¤ë¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤òÍ¥À褹¤ëÊýË¡¤ò¼¨¤·¤Þ¤¹¡£¤³¤Î̾Á°¤ÎÃͤϡ¢\f2¡Öall¡×\fP(¥ê¥¯¥¨¥¹¥È¤µ¤ì¤ë¤¹¤Ù¤Æ¤Î¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤¬Í¥À褵¤ì¤ë)¡¢\f2¡Öname{:[critical|non\-critical]}¡×\fP(̾Á°ÉÕ¤¤Î¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤¬Í¥À褵¤ì¤ë¤¬¡¢Ê̤ÎisCritical°À¤ò»ÈÍѤ¹¤ë)¡¢¤ª¤è¤Ó\f2¡Ö\-name¡×\fP(¡Öall¡×¤È¤È¤â¤Ë»ÈÍѤ·¡¢Îã³°¤ò¼¨¤¹)¤Î¥«¥ó¥Þ¶èÀÚ¤ê¥ê¥¹¥È¤Ç¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥ê¥¯¥¨¥¹¥È¤µ¤ì¤ë¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤ÏÍ¥À褵¤ì¤Þ¤»¤ó¡£ -+.LP -+.LP -+\-extÍ¥Àè¤Î¥ª¥×¥·¥ç¥ó¤Ë²Ã¤¨¡¢Ê̤Î̾Á°¤Î¡¢¤Þ¤¿¤ÏOID \-ext¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢¤³¤Î¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤¬¡¢¤¹¤Ç¤ËÍ¥À褵¤ì¤Æ¤¤¤ë¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤ËÄɲ䵤ì¤Þ¤¹¡£¤¿¤À¤·¡¢¤³¤Î̾Á°(¤Þ¤¿¤ÏOID)¤òÍ¥À褵¤ì¤ëÃͤǤâ»ÈÍѤ·¤¿¾ì¹ç¤Ï¡¢¤½¤ÎÃͤȽÅÍ×À¤¬¥ê¥¯¥¨¥¹¥È¤Ë´Þ¤Þ¤ì¤ë¤â¤Î¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£ -+.LP -+.LP -+subjectKeyIdentifier¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Ï¾ï¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£¼«¸Ê½ð̾¤Ç¤Ê¤¤¾ÚÌÀ½ñ¤Î¾ì¹ç¤Ï¡¢authorityKeyIdentifier¤¬¾ï¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f3Ãí°Õ:\fP ¥æ¡¼¥¶¡¼¤Ï¡¢¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó(¤ª¤è¤Ó¾ÚÌÀ½ñ¤Î¾¤Î¥Õ¥£¡¼¥ë¥É)¤ÎÁȹ礻¤Ë¤è¤Ã¤Æ¤Ï¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤Îɸ½à¤Ë½àµò¤·¤Ê¤¤¾ì¹ç¤¬¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¾ÜºÙ¤Ï¡¢¾ÚÌÀ½ñ¤Î½àµò¤Ë´Ø¤¹¤ëÃí°Õ»ö¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "¥³¥Þ¥ó¥É" -+.LP -+.SS -+¥¡¼¥¹¥È¥¢¤Ø¤Î¥Ç¡¼¥¿¤ÎºîÀ®¤Þ¤¿¤ÏÄɲà -+.LP -+.RS 3 -+.TP 3 -+\-gencert {\-rfc} {\-infile infile} {\-outfile outfile} {\-alias alias} {\-sigalg sigalg} {\-dname dname} {\-startdate startdate {\-ext ext}* {\-validity valDays} [\-keypass keypass] {\-keystore keystore} [\-storepass storepass] {\-storetype storetype} {\-providername provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -+.LP -+¾ÚÌÀ½ñ¥ê¥¯¥¨¥¹¥È¡¦¥Õ¥¡¥¤¥ë(\f2keytool \-certreq\fP¥³¥Þ¥ó¥É¤ÇºîÀ®²Äǽ)¤ËÂФ¹¤ë¥ì¥¹¥Ý¥ó¥¹¤È¤·¤Æ¾ÚÌÀ½ñ¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢\f2infile\fP¤«¤é(¾Êά¤·¤¿¾ì¹ç¤Ï¡¢É¸½àÆþÎϤ«¤é)¥ê¥¯¥¨¥¹¥È¤òÆɤ߹þ¤ß¡¢ÊÌ̾¤ÎÈëÌ©¸°¤ò»ÈÍѤ·¤Æ¤½¤Î¥ê¥¯¥¨¥¹¥È¤Ë½ð̾¤·¤Æ¡¢X.509¾ÚÌÀ½ñ¤ò\f2outfile\fP¤Ë(¾Êά¤·¤¿¾ì¹ç¤Ï¡¢É¸½à½ÐÎϤË)½ÐÎϤ·¤Þ¤¹¡£\f2\-rfc\fP¤ò»ØÄꤷ¤¿¾ì¹ç¡¢½ÐÎÏ·Á¼°¤ÏBASE64Éä¹æ²½¤ÎPEM¤Ë¤Ê¤ê¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢¥Ð¥¤¥Ê¥êDER¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.LP -+\f2sigalg\fP¤Ë¤Ï¡¢¾ÚÌÀ½ñ¤Ë½ð̾¤òÉÕ¤±¤ë¤È¤¤Ë»ÈÍѤ¹¤ë¥¢¥ë¥´¥ê¥º¥à¤ò»ØÄꤷ¤Þ¤¹¡£\f2startdate\fP¤Ï¡¢¾ÚÌÀ½ñ¤¬Í¸ú¤Ë¤Ê¤ë³«»Ï»þ¹ï/ÆüÉդǤ¹¡£\f2valDays\fP¤Ë¤Ï¡¢¾ÚÌÀ½ñ¤Î͸úÆü¿ô¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+\f2dname\fP¤ò»ØÄꤹ¤ë¤È¡¢À¸À®¤µ¤ì¤ë¾ÚÌÀ½ñ¤Î¼çÂΤȤ·¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢¾ÚÌÀ½ñ¥ê¥¯¥¨¥¹¥È¤«¤é¤Î̾Á°¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.LP -+\f2ext\fP¤Ï¡¢¾ÚÌÀ½ñ¤ËËä¤á¹þ¤Þ¤ì¤ëX.509¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤ò¼¨¤·¤Þ¤¹¡£\f2\-ext\fP¤Î¹½Ê¸¤Ë¤Ä¤¤¤Æ¤Ï¡¢°ìÈÌ¥ª¥×¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+\f2\-gencert\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ë¤È¡¢¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤òºîÀ®¤Ç¤¤Þ¤¹¡£¼¡¤ÎÎã¤Ç¤Ï¡¢\f2e1\fP¤È¤¤¤¦¾ÚÌÀ½ñ¤òºîÀ®¤·¤Þ¤¹¡£¤³¤Î¾ÚÌÀ½ñ¤Î¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Ë¤Ï¡¢3¤Ä¤Î¾ÚÌÀ½ñ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+¼¡¤Î¥³¥Þ¥ó¥É¤Ï¡¢\f2ca\fP¡¢\f2ca1\fP¡¢\f2ca2\fP¤ª¤è¤Ó\f2e1\fP¤Î4¤Ä¤Î¸°¥Ú¥¢¤òºîÀ®¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+keytool \-alias ca \-dname CN=CA \-genkeypair -+.fl -+keytool \-alias ca1 \-dname CN=CA \-genkeypair -+.fl -+keytool \-alias ca2 \-dname CN=CA \-genkeypair -+.fl -+keytool \-alias e1 \-dname CN=E1 \-genkeypair -+.fl -+\fP -+.fi -+.LP -+¼¡¤Î2¤Ä¤Î¥³¥Þ¥ó¥É¤Ï¡¢½ð̾ÉÕ¤¾ÚÌÀ½ñ¤Î¥Á¥§¡¼¥ó¤òºîÀ®¤·¤Þ¤¹¡£\f2ca\fP¤Ïca1¤Ë½ð̾¤·¡¢\f2ca1\fP¤Ïca2¤Ë½ð̾¤·¤Þ¤¹¡£¤¹¤Ù¤Æ¼«¸Êȯ¹Ô¤Ç¤¹¡£ -+.nf -+\f3 -+.fl -+keytool \-alias ca1 \-certreq | keytool \-alias ca \-gencert \-ext san=dns:ca1 | keytool \-alias ca1 \-importcert -+.fl -+keytool \-alias ca2 \-certreq | $KT \-alias ca1 \-gencert \-ext san=dns:ca2 | $KT \-alias ca2 \-importcert -+.fl -+\fP -+.fi -+.LP -+¼¡¤Î¥³¥Þ¥ó¥É¤Ï¡¢¾ÚÌÀ½ñ\f2e1\fP¤òºîÀ®¤·¤Æ¥Õ¥¡¥¤¥ë\f2e1.cert\fP¤Ë³ÊǼ¤·¤Þ¤¹¡£¤³¤Î¾ÚÌÀ½ñ¤Ï\f2ca2\fP¤Ë¤è¤Ã¤Æ½ð̾¤µ¤ì¤Þ¤¹¡£¤½¤Î·ë²Ì¡¢\f2e1\fP¤Î¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Ë¤Ï\f2ca\fP¡¢\f2ca1\fP¤ª¤è¤Ó\f2ca2\fP¤¬´Þ¤Þ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+keytool \-alias e1 \-certreq | keytool \-alias ca2 \-gencert > e1.cert -+.fl -+\fP -+.fi -+.TP 3 -+\-genkeypair {\-alias alias} {\-keyalg keyalg} {\-keysize keysize} {\-sigalg sigalg} [\-dname dname] [\-keypass keypass] {\-startdate value} {\-ext ext}* {\-validity valDays} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -+.LP -+¸°¤Î¥Ú¥¢(¸ø³«¸°¤ª¤è¤Ó´ØÏ¢¤¹¤ëÈëÌ©¸°)¤òÀ¸À®¤·¤Þ¤¹¡£¸ø³«¸°¤ÏX.509 v3¼«¸Ê½ð̾¾ÚÌÀ½ñ¤Ç¥é¥Ã¥×¤µ¤ì¤Þ¤¹¡£¾ÚÌÀ½ñ¤Ï¡¢Ã±°ì¤ÎÍ×ÁǤò»ý¤Ä¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤È¤·¤Æ³ÊǼ¤µ¤ì¤Þ¤¹¡£¤³¤Î¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ÈÈëÌ©¸°¤Ï¡¢\f2alias\fP¤ÇÆÃÄꤵ¤ì¤ë¿·¤·¤¤¥¡¼¥¹¥È¥¢¡¦¥¨¥ó¥È¥ê¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ -+.LP -+\f2keyalg\fP¤Ï¸°¤Î¥Ú¥¢¤ÎÀ¸À®¤Ë»ÈÍѤ¹¤ë¥¢¥ë¥´¥ê¥º¥à¤ò¡¢\f2keysize\fP¤ÏÀ¸À®¤¹¤ë³Æ¸°¤Î¥µ¥¤¥º¤ò¡¢¤½¤ì¤¾¤ì»ØÄꤷ¤Þ¤¹¡£\f2sigalg\fP¤Ë¤Ï¡¢¼«¸Ê½ð̾¾ÚÌÀ½ñ¤Ë½ð̾¤òÉÕ¤±¤ë¤È¤¤Ë»ÈÍѤ¹¤ë¥¢¥ë¥´¥ê¥º¥à¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥¢¥ë¥´¥ê¥º¥à¤Ï¡¢\f2keyalg\fP¤È¸ß´¹¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+\f2dname\fP¤Ë¤Ï¡¢\f2alias\fP¤Ë´ØÏ¢ÉÕ¤±¡¢¼«¸Ê½ð̾¾ÚÌÀ½ñ¤Î\f2issuer\fP¥Õ¥£¡¼¥ë¥É¤È\f2subject\fP¥Õ¥£¡¼¥ë¥É¤È¤·¤Æ»ÈÍѤ¹¤ëX.500 ¼±ÊÌ̾¤ò»ØÄꤷ¤Þ¤¹¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¼±ÊÌ̾¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¼±ÊÌ̾¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.LP -+\f2keypass\fP¤Ë¤Ï¡¢À¸À®¤µ¤ì¤ë¸°¤Î¥Ú¥¢¤Î¤¦¤Á¡¢ÈëÌ©¸°¤òÊݸ¤ë¤Î¤Ë»ÈÍѤ¹¤ë¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£¤³¤Î¤È¤¡¢[Return]¥¡¼¤ò²¡¤¹¤È¡¢¥¡¼¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤ÈƱ¤¸¥Ñ¥¹¥ï¡¼¥É¤¬¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤ËÀßÄꤵ¤ì¤Þ¤¹¡£\f2keypass\fP¤Ï¡¢6ʸ»ú°Ê¾å¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+\f2startdate\fP¤Ë¤Ï¡¢¾ÚÌÀ½ñ¤Îȯ¹Ô»þ¹ï¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤ì¤Ï¡¢X.509¾ÚÌÀ½ñ¤Î¡ÖValidity¡×¥Õ¥£¡¼¥ë¥É¤Î¡ÖNot Before¡×ÃͤȤâ¸Æ¤Ð¤ì¤Þ¤¹¡£ -+.LP -+¥ª¥×¥·¥ç¥ó¤ÎÃͤϡ¢¼¡¤Î2¤Ä¤Î·Á¼°¤Î¤¤¤º¤ì¤«¤ÇÀßÄê¤Ç¤¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+1. -+([+\-]\f2nnn\fP[ymdHMS])+ -+.TP 3 -+2. -+[yyyy/mm/dd] [HH:MM:SS] -+.RE -+.LP -+ºÇ½é¤Î·Á¼°¤Ç¤Ï¡¢È¯¹Ô»þ¹ï¤Ï¡¢»ØÄꤵ¤ì¤ëÃͤÎʬ¡¢¸½ºß¤Î»þ¹ï¤«¤é°Ü¤ê¤Þ¤¹¡£»ØÄꤵ¤ì¤ëÃͤϡ¢°ìÏ¢¤Î²¼°Ì¤ÎÃͤòÏ¢·ë¤·¤¿¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£²¼°Ì¤Î³ÆÃͤǡ¢¥×¥é¥¹µ¹æ(¡Ö+¡×)¤Ï»þ´Ö¤¬¿Ê¤à¤³¤È¤ò¡¢¥Þ¥¤¥Ê¥¹µ¹æ(¡Ö\-¡×)¤Ï»þ´Ö¤¬Ìá¤ë¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£°Ü¤ë»þ´Ö¤Ï\f2nnn\fP¤Ç¡¢Ã±°Ì¤Ïǯ¡¢·î¡¢Æü¡¢»þ´Ö¡¢Ê¬¤Þ¤¿¤ÏÉäǤ¹(¤½¤ì¤¾¤ì¡¢1ʸ»ú¤Î¡Öy¡×¡¢¡Öm¡×¡¢¡Öd¡×¡¢¡ÖH¡×¡¢¡ÖM¡×¤Þ¤¿¤Ï¡ÖS¡×¤Ç¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹)¡£²¼°Ì¤Î³ÆÃͤÇ\f2java.util.GregorianCalendar.add(int field,int amount)\fP¥á¥½¥Ã¥É¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢È¯¹Ô»þ¹ï¤ÎÄɲäÎÃͤ¬º¸¤«¤é±¦¤Ø·×»»¤µ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2¡Ö\-startdate \-1y+1m\-1d¡×\fP¤È»ØÄꤹ¤ë¤È¡¢³«»Ï»þ¹ï¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ Calendar c = new GregorianCalendar(); -+.fl -+ c.add(Calendar.YEAR, \-1); -+.fl -+ c.add(Calendar.MONTH, 1); -+.fl -+ c.add(Calendar.DATE, \-1); -+.fl -+ return c.getTime() -+.fl -+\fP -+.fi -+.LP -+2ÈÖÌܤηÁ¼°¤Ç¤Ï¡¢¥æ¡¼¥¶¡¼¤Ï¡¢Ç¯/·î/Æü¤È»þ´Ö:ʬ:ÉäÎ2¤Ä¤ÎÉôʬ¤Ç¸·Ì©¤Ê³«»Ï»þ¹ï¤òÀßÄꤷ¤Þ¤¹(Ãϸµ¤Î»þ´ÖÂÓ¤ò»ÈÍÑ)¡£¥æ¡¼¥¶¡¼¤Ï¡¢1¤Ä¤ÎÉôʬ¤Î¤ß¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ï¡¢¤â¤¦1¤Ä¤ÎÉôʬ¤Ï¸½ºß¤ÎÆüÉÕ(¤Þ¤¿¤Ï»þ¹ï)¤ÈƱ¤¸¤Ë¤Ê¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¥æ¡¼¥¶¡¼¤Ï¡¢·Á¼°¤ÎÄêµÁ¤Ë¼¨¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¡¢·å¿ô¤ò¸·Ì©¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹(û¤¤¾ì¹ç¤Ï0¤ÇËä¤á¤Þ¤¹)¡£ÆüÉդȻþ¹ï¤ÎξÊý¤¬»ØÄꤵ¤ì¤¿¾õÂ֤ǡ¢2¤Ä¤ÎÉôʬ¤Î´Ö¤Ë¶õÇòʸ»ú¤¬1¤Ä(1¤Ä¤Î¤ß)¤¢¤ê¤Þ¤¹¡£»þ´Ö¤Ï¾ï¤Ë24»þ´Ö·Á¼°¤Ç»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤È¡¢³«»ÏÆüÉդϸ½ºß¤Î»þ¹ï¤Ë¤Ê¤ê¤Þ¤¹¡£¥ª¥×¥·¥ç¥ó¤Ï¡¢ºÇÂç¤Ç1²ó»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+\f2valDays\fP¤Ë¤Ï¡¢¾ÚÌÀ½ñ¤Î͸úÆü¿ô¤ò»ØÄꤷ¤Þ¤¹(\f2\-startdate\fP¤Ç»ØÄꤵ¤ì¤¿ÆüÉÕ¡¢¤Þ¤¿¤Ï\f2\-startdate\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¸½ºß¤ÎÆüÉÕ¤«¤é»Ï¤Þ¤ê¤Þ¤¹)¡£ -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢°ÊÁ°¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï\f2\-genkey\fP¤È¤¤¤¦Ì¾Á°¤Ç¤·¤¿¡£¤³¤Î¸Å¤¤Ì¾Á°¤Ï¡¢¤³¤Î¥ê¥ê¡¼¥¹¤Ç¤â°ú³¤¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤ª¤ê¡¢º£¸å¤Î¥ê¥ê¡¼¥¹¤Ç¤â¥µ¥Ý¡¼¥È¤µ¤ì¤ëͽÄê¤Ç¤¹¡£¤¿¤À¤·¡¢º£¸å¤Ï¤ï¤«¤ê¤ä¤¹¤¤¤è¤¦¤Ë¡¢¿·¤·¤¤Ì¾Á°\f2\-genkeypair\fP¤ò»ÈÍѤ¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ -+.TP 3 -+\-genseckey {\-aliasalias} {\-keyalgkeyalg} {\-keysizekeysize} [\-keypasskeypass] {\-storetypestoretype} {\-keystorekeystore} [\-storepassstorepass] {\-providerClassprovider_class_name {\-providerArgprovider_arg}} {\-v} {\-protected} {\-Jjavaoption} -+.LP -+ÈëÌ©¸°¤òÀ¸À®¤·¡¢¤½¤ì¤ò¿·¤·¤¤\f2KeyStore.SecretKeyEntry\fP(\f2alias\fP¤ÇÆÃÄꤵ¤ì¤ë)Æâ¤Ë³ÊǼ¤·¤Þ¤¹¡£ -+.LP -+\f2keyalg\fP¤ÏÈëÌ©¸°¤ÎÀ¸À®¤Ë»ÈÍѤ¹¤ë¥¢¥ë¥´¥ê¥º¥à¤ò¡¢\f2keysize\fP¤ÏÀ¸À®¤¹¤ë¸°¤Î¥µ¥¤¥º¤ò¡¢¤½¤ì¤¾¤ì»ØÄꤷ¤Þ¤¹¡£\f2keypass\fP¤ÏÈëÌ©¸°¤ÎÊݸî¤Ë»ÈÍѤ¹¤ë¥Ñ¥¹¥ï¡¼¥É¤Ç¤¹¡£¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£¤³¤Î¤È¤¡¢[Return]¥¡¼¤ò²¡¤¹¤È¡¢¥¡¼¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤ÈƱ¤¸¥Ñ¥¹¥ï¡¼¥É¤¬¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤ËÀßÄꤵ¤ì¤Þ¤¹¡£\f2keypass\fP¤Ï¡¢6ʸ»ú°Ê¾å¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-importcert {\-alias alias} {\-file cert_file} [\-keypass keypass] {\-noprompt} {\-trustcacerts} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -+.LP -+¥Õ¥¡¥¤¥ë\f2cert_file\fP¤«¤é¾ÚÌÀ½ñ¤Þ¤¿¤Ï¾ÚÌÀ½ñ¥Á¥§¡¼¥ó(¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Î¾ì¹ç¤Ï¡¢PKCS#7·Á¼°¤Î±þÅú¤Þ¤¿¤Ï°ìÏ¢¤ÎX.509¾ÚÌÀ½ñ¤ÇÄ󶡤µ¤ì¤ë¤â¤Î)¤òÆɤ߹þ¤ß¡¢\f2alias\fP¤Ë¤è¤Ã¤ÆÆÃÄꤵ¤ì¤ë¥¡¼¥¹¥È¥¢¡¦¥¨¥ó¥È¥ê¤Ë³ÊǼ¤·¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢É¸½àÆþÎϤ«¤é¾ÚÌÀ½ñ¤Þ¤¿¤Ï¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤òÆɤ߹þ¤ß¤Þ¤¹¡£ -+.LP -+\f3keytool\fP¤Ç¤Ï¡¢X.509 v1¡¢v2¡¢v3¤Î¾ÚÌÀ½ñ¡¢¤ª¤è¤ÓPKCS#7·Á¼°¤Î¾ÚÌÀ½ñ¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤ëPKCS#7·Á¼°¤Î¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ò¥¤¥ó¥Ý¡¼¥È¤Ç¤¤Þ¤¹¡£¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥Ç¡¼¥¿¤Ï¡¢¥Ð¥¤¥Ê¥êÉä¹æ²½Êý¼°¡¢¤Þ¤¿¤Ï½ÐÎϲÄǽÉä¹æ²½Êý¼°(Base64Éä¹æ²½¤È¤â¸Æ¤Ð¤ì¤ë)¤Î¤É¤Á¤é¤«¤ÇÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£½ÐÎϲÄǽÉä¹æ²½Êý¼°¤Ï¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥ÈRFC 1421¾ÚÌÀ½ñÉä¹æ²½µ¬³Ê¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ÎÉä¹æ²½Êý¼°¤Î¾ì¹ç¡¢¾ÚÌÀ½ñ¤Ï¡Ö\-\-\-\-\-BEGIN¡×¤Ç»Ï¤Þ¤ëʸ»úÎó¤Ç³«»Ï¤µ¤ì¡¢¡Ö\-\-\-\-\-END¡×¤Ç»Ï¤Þ¤ëʸ»úÎó¤Ç½ªÎ»¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+¾ÚÌÀ½ñ¤Î¥¤¥ó¥Ý¡¼¥È¤Ë¤Ï¡¢¼¡¤Î2¤Ä¤ÎÌÜŪ¤¬¤¢¤ê¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+1. -+¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤Î¥ê¥¹¥È¤Ë¾ÚÌÀ½ñ¤òÄɲä·¤Þ¤¹¡£ -+.TP 3 -+2. -+CA¤Ë¾ÚÌÀ½ñ½ð̾¥ê¥¯¥¨¥¹¥È(\-certreq¥³¥Þ¥ó¥É¤ò»²¾È)¤òÁ÷¿®¤·¤¿·ë²Ì¤È¤·¤Æ¡¢CA¤«¤é¼õ¤±¼è¤Ã¤¿¾ÚÌÀ±þÅú¤ò¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤¹¡£ -+.RE -+.LP -+¤É¤Á¤é¤Î¥¿¥¤¥×¤Î¥¤¥ó¥Ý¡¼¥È¤ò¹Ô¤¦¤«¤Ï¡¢\f2\-alias\fP¥ª¥×¥·¥ç¥ó¤ÎÃͤˤè¤Ã¤Æ»ØÄꤷ¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+1. -+\f3ÊÌ̾¤¬¥¡¼¡¦¥¨¥ó¥È¥ê¤ò¥Ý¥¤¥ó¥È¤·¤Ê¤¤¾ì¹ç\fP¡¢\f3keytool\fP¤Ï¥æ¡¼¥¶¡¼¤¬¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¥¨¥ó¥È¥ê¤òÄɲ䷤褦¤È¤·¤Æ¤¤¤ë¤â¤Î¤È¸«¤Ê¤·¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢ÊÌ̾¤¬¥¡¼¥¹¥È¥¢Æâ¤Ë¸ºß¤·¤Æ¤¤¤Ê¤¤¤³¤È¤¬É¬ÍפǤ¹¡£ÊÌ̾¤¬¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤ë¾ì¹ç¡¢¤½¤ÎÊÌ̾¤Î¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¤³¤È¤Ë¤Ê¤ë¤Î¤Ç¡¢\f3keytool\fP¤Ï¥¨¥é¡¼¤ò½ÐÎϤ·¡¢¾ÚÌÀ½ñ¤Î¥¤¥ó¥Ý¡¼¥È¤ò¹Ô¤¤¤Þ¤»¤ó¡£ -+.TP 3 -+2. -+\f3ÊÌ̾¤¬¥¡¼¡¦¥¨¥ó¥È¥ê¤ò¥Ý¥¤¥ó¥È¤¹¤ë¾ì¹ç\fP¡¢\f3keytool\fP¤Ï¥æ¡¼¥¶¡¼¤¬¾ÚÌÀ½ñ±þÅú¤ò¥¤¥ó¥Ý¡¼¥È¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤â¤Î¤È¸«¤Ê¤·¤Þ¤¹¡£ -+.RE -+\f3¿·¤·¤¤¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤Î¥¤¥ó¥Ý¡¼¥È\fP -+.LP -+\f3keytool\fP¤Ï¡¢¥¡¼¥¹¥È¥¢¤Ë¾ÚÌÀ½ñ¤òÄɲ乤ëÁ°¤Ë¡¢¥¡¼¥¹¥È¥¢Æâ¤Ë¤¹¤Ç¤Ë¸ºß¤¹¤ë¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤ò»ÈÍѤ·¤Æ¡¢¥¤¥ó¥Ý¡¼¥È¤¹¤ë¾ÚÌÀ½ñ¤«¤é(¥ë¡¼¥ÈCA¤Î)¼«¸Ê½ð̾¾ÚÌÀ½ñ¤Ë»ê¤ë¤Þ¤Ç¤Î¿®Íê¤Î¥Á¥§¡¼¥ó¤Î¹½ÃÛ¤ò»î¤ß¤Þ¤¹¡£ -+.LP -+\f2\-trustcacerts\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢ÄɲäξÚÌÀ½ñ¤Ï¿®Íê¤Ç¤¤ë¤¹¤Ê¤ï¤Ácacerts¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Ë´Þ¤Þ¤ì¤ë¾ÚÌÀ½ñ¤Î¥Á¥§¡¼¥ó¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£ -+.LP -+\f3keytool\fP¤¬¡¢¥¤¥ó¥Ý¡¼¥È¤¹¤ë¾ÚÌÀ½ñ¤«¤é¼«¸Ê½ð̾¾ÚÌÀ½ñ(¥¡¼¥¹¥È¥¢¤Þ¤¿¤Ïcacerts¥Õ¥¡¥¤¥ë¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¼«¸Ê½ð̾¾ÚÌÀ½ñ)¤Ë»ê¤ë¤Þ¤Ç¤Î¿®Íê¤Î¥Ñ¥¹¤Î¹½Ãۤ˼ºÇÔ¤·¤¿¾ì¹ç¤Ï¡¢¥¤¥ó¥Ý¡¼¥È¤¹¤ë¾ÚÌÀ½ñ¤Î¾ðÊó¤òɽ¼¨¤·¡¢¥æ¡¼¥¶¡¼¤Ë³Îǧ¤òµá¤á¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ï¡¢É½¼¨¤µ¤ì¤¿¾ÚÌÀ½ñ¤Î¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤È¡¢Â¾¤Î¤Ê¤ó¤é¤«¤Î(¿®Íê¤Ç¤¤ë)¾ðÊó¸»(¾ÚÌÀ½ñ¤Î½êͼÔËܿͤʤÉ)¤«¤éÆþ¼ê¤·¤¿¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤È¤òÈæ³Ó¤·¤Þ¤¹¡£¡Ö¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¡×¤È¤·¤Æ¾ÚÌÀ½ñ¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤È¤¤Ï¡¢¾ÚÌÀ½ñ¤¬Í¸ú¤Ç¤¢¤ë¤³¤È¤ò¿µ½Å¤Ë³Îǧ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤Î¥¤¥ó¥Ý¡¼¥È¤Ë´Ø¤¹¤ëÃí°Õ»ö¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¥¤¥ó¥Ý¡¼¥ÈÁàºî¤Ï¡¢¾ÚÌÀ½ñ¤ò³Îǧ¤¹¤ë»þÅÀ¤ÇÃæ»ß¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢\f2\-noprompt\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥æ¡¼¥¶¡¼¤È¤ÎÂÐÏäϹԤï¤ì¤Þ¤»¤ó¡£ -+\f3¾ÚÌÀ½ñ±þÅú¤Î¥¤¥ó¥Ý¡¼¥È\fP -+.LP -+¡Ö¾ÚÌÀ±þÅú¡×¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤È¤¤Ï¡¢¥¡¼¥¹¥È¥¢Æâ¤Î¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¡¢¤ª¤è¤Ó(\f2\-trustcacerts\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï)cacerts¥¡¼¥¹¥È¥¢¡¦¥Õ¥¡¥¤¥ë¤Ç¹½À®¤µ¤ì¤¿¾ÚÌÀ½ñ¤ò»ÈÍѤ·¤Æ¾ÚÌÀ±þÅú¤¬¸¡ºº¤µ¤ì¤Þ¤¹¡£ -+.LP -+¾ÚÌÀ½ñ±þÅú¤¬¿®Íê¤Ç¤¤ë¤«¤É¤¦¤«¤ò·èÄꤹ¤ëÊýË¡¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f3¾ÚÌÀ±þÅú¤¬Ã±°ì¤ÎX.509¾ÚÌÀ½ñ¤Ç¤¢¤ë¾ì¹ç\fP¡¢\f3keytool\fP¤Ï¡¢¾ÚÌÀ±þÅú¤«¤é(¥ë¡¼¥ÈCA¤Î)¼«¸Ê½ð̾¾ÚÌÀ½ñ¤Ë»ê¤ë¤Þ¤Ç¤Î¿®Íê¥Á¥§¡¼¥ó¤Î³ÎΩ¤ò»î¤ß¤Þ¤¹¡£¾ÚÌÀ±þÅú¤È¡¢¾ÚÌÀ±þÅú¤Îǧ¾Ú¤Ë»ÈÍѤµ¤ì¤ë¾ÚÌÀ½ñ¤Î³¬Áع½Â¤¤Ï¡¢\f2alias\fP¤Î¿·¤·¤¤¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ò·ÁÀ®¤·¤Þ¤¹¡£¿®Íê¥Á¥§¡¼¥ó¤¬³ÎΩ¤µ¤ì¤Ê¤¤¾ì¹ç¡¢¾ÚÌÀ±þÅú¤Ï¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó¡£¤³¤Î¾ì¹ç¡¢\f3keytool\fP¤Ï¾ÚÌÀ½ñ¤ò½ÐÎϤ»¤º¡¢¥æ¡¼¥¶¡¼¤Ë¸¡¾Ú¤òµá¤á¤ë¥×¥í¥ó¥×¥È¤òɽ¼¨¤·¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤¬¾ÚÌÀ±þÅú¤Î¿®ÍêÀ¤òȽÃǤ¹¤ë¤Î¤Ï¡¢ÉÔ²Äǽ¤Ç¤Ï¤Ê¤¯¤Æ¤âÈó¾ï¤Ëº¤Æñ¤À¤«¤é¤Ç¤¹¡£ -+.TP 2 -+o -+\f3¾ÚÌÀ±þÅú¤¬PKCS#7·Á¼°¤Î¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Þ¤¿¤Ï°ìÏ¢¤ÎX.509¾ÚÌÀ½ñ¤Ç¤¢¤ë¾ì¹ç\fP¡¢¥Á¥§¡¼¥ó¤Ï¡¢¥æ¡¼¥¶¡¼¤Î¾ÚÌÀ½ñ¤¬ºÇ½é¤Ë¡¢0°Ê¾å¤ÎCA¾ÚÌÀ½ñ¤¬¤½¤Î¼¡¤Ë¤¯¤ë¤è¤¦¤Ëʤ٤é¤ì¤Þ¤¹¡£¥Á¥§¡¼¥ó¤¬¼«¸Ê½ð̾¤Î¥ë¡¼¥ÈCA¾ÚÌÀ½ñ¤Ç½ª¤ï¤ê¡¢\f2\-trustcacerts\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢\f3keytool\fP¤Ï¡¢¤½¤Î¾ÚÌÀ½ñ¤È¡¢¥¡¼¥¹¥È¥¢Æâ¤Þ¤¿¤Ï¡Öcacerts¡×¥¡¼¥¹¥È¥¢¡¦¥Õ¥¡¥¤¥ëÆâ¤Î¿®Íê¤Ç¤¤ë¤¹¤Ù¤Æ¤Î¾ÚÌÀ½ñ¤ò¾È¹ç¤·¤è¤¦¤È¤·¤Þ¤¹¡£¥Á¥§¡¼¥ó¤¬¼«¸Ê½ð̾¤Î¥ë¡¼¥ÈCA¾ÚÌÀ½ñ¤Ç½ª¤ï¤Ã¤Æ¤ª¤é¤º¡¢\f2\-trustcacerts\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢\f3keytool\fP¤Ï¡¢¥¡¼¥¹¥È¥¢Æâ¤Þ¤¿¤Ï¡Öcacerts¡×¥¡¼¥¹¥È¥¢¡¦¥Õ¥¡¥¤¥ëÆâ¤Î¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤«¤é¼«¸Ê½ð̾¤Î¥ë¡¼¥ÈCA¾ÚÌÀ½ñ¤ò¸«¤Ä¤±¤Æ¤½¤ì¤ò¥Á¥§¡¼¥ó¤ÎËöÈø¤ËÄɲ䷤褦¤È¤·¤Þ¤¹¡£¤½¤Î¾ÚÌÀ½ñ¤¬¸«¤Ä¤«¤é¤º¡¢\f2\-noprompt\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥Á¥§¡¼¥óÆâ¤ÎºÇ¸å¤Î¾ÚÌÀ½ñ¤Î¾ðÊ󤬽ÐÎϤµ¤ì¡¢¥æ¡¼¥¶¡¼¤Ï³Îǧ¤òµá¤á¤é¤ì¤Þ¤¹¡£ -+.RE -+.LP -+¾ÚÌÀ½ñ±þÅúÆâ¤Î¸ø³«¸°¤¬\f2alias\fP¤Î²¼¤Ë¤¹¤Ç¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¥æ¡¼¥¶¡¼¤Î¸ø³«¸°¤Ë°ìÃפ·¤¿¾ì¹ç¡¢¸Å¤¤¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤¬±þÅúÆâ¤Î¿·¤·¤¤¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ÇÃÖ¤´¹¤¨¤é¤ì¤Þ¤¹¡£°ÊÁ°¤Î¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ò¿·¤·¤¤¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ÇÃÖ¤´¹¤¨¤ë¤³¤È¤¬¤Ç¤¤ë¤Î¤Ï¡¢Í¸ú¤Ê\f2keypass\fP¡¢¤Ä¤Þ¤ê³ºÅö¤¹¤ë¥¨¥ó¥È¥ê¤ÎÈëÌ©¸°¤òÊݸ¤ë¤¿¤á¤Î¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤¿¾ì¹ç¤Î¤ß¤Ç¤¹¡£¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Æ¤ª¤é¤º¡¢ÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤¬¥¡¼¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤È°Û¤Ê¤ë¾ì¹ç¤Ï¡¢ÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢°ÊÁ°¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï\f2\-import\fP¤È¤¤¤¦Ì¾Á°¤Ç¤·¤¿¡£¤³¤Î¸Å¤¤Ì¾Á°¤Ï¡¢¤³¤Î¥ê¥ê¡¼¥¹¤Ç¤â°ú³¤¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤ª¤ê¡¢º£¸å¤Î¥ê¥ê¡¼¥¹¤Ç¤â¥µ¥Ý¡¼¥È¤µ¤ì¤ëͽÄê¤Ç¤¹¡£¤¿¤À¤·¡¢º£¸å¤Ï¤ï¤«¤ê¤ä¤¹¤¤¤è¤¦¤Ë¡¢¿·¤·¤¤Ì¾Á°\f2\-importcert\fP¤ò»ÈÍѤ¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ -+.TP 3 -+\-importkeystore \-srckeystore srckeystore \-destkeystore destkeystore {\-srcstoretype srcstoretype} {\-deststoretype deststoretype} [\-srcstorepass srcstorepass] [\-deststorepass deststorepass] {\-srcprotected} {\-destprotected} {\-srcalias srcalias {\-destalias destalias} [\-srckeypass srckeypass] [\-destkeypass destkeypass] } {\-noprompt} {\-srcProviderName src_provider_name} {\-destProviderName dest_provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -+.LP -+¥½¡¼¥¹¡¦¥¡¼¥¹¥È¥¢¤«¤é¥¿¡¼¥²¥Ã¥È¡¦¥¡¼¥¹¥È¥¢¤Ø¡¢Ã±°ì¤Î¥¨¥ó¥È¥ê¤Þ¤¿¤Ï¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤ò¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤¹¡£ -+.LP -+\f2srcalias\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢¤½¤ÎÊÌ̾¤ÇÆÃÄꤵ¤ì¤ëñ°ì¤Î¥¨¥ó¥È¥ê¤ò¥¿¡¼¥²¥Ã¥È¡¦¥¡¼¥¹¥È¥¢¤Ë¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤¹¡£\f2destalias\fP·Ðͳ¤Ç¥¿¡¼¥²¥Ã¥ÈÊÌ̾¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢\f2srcalias\fP¤¬¥¿¡¼¥²¥Ã¥ÈÊÌ̾¤È¤·¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£¥½¡¼¥¹¤Î¥¨¥ó¥È¥ê¤¬¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸ¤ì¤Æ¤¤¤¿¾ì¹ç¡¢\f2srckeypass\fP¤ò»ÈÍѤ·¤Æ¤½¤Î¥¨¥ó¥È¥ê¤¬²óÉü¤µ¤ì¤Þ¤¹¡£\f2srckeypass\fP¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢\f3keytool\fP¤Ï\f2srcstorepass\fP¤ò»ÈÍѤ·¤Æ¤½¤Î¥¨¥ó¥È¥ê¤ò²óÉü¤·¤è¤¦¤È¤·¤Þ¤¹¡£\f2srcstorepass\fP¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¤«Àµ¤·¤¯¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¥æ¡¼¥¶¡¼¤Ï¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£¥¿¡¼¥²¥Ã¥È¡¦¥¨¥ó¥È¥ê¤Ï\f2destkeypass\fP¤Ë¤è¤Ã¤ÆÊݸ¤ì¤Þ¤¹¡£\f2destkeypass\fP¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¥¿¡¼¥²¥Ã¥È¡¦¥¨¥ó¥È¥ê¤Ï¥½¡¼¥¹¡¦¥¨¥ó¥È¥ê¤Î¥Ñ¥¹¥ï¡¼¥É¤Ë¤è¤Ã¤ÆÊݸ¤ì¤Þ¤¹¡£ -+.LP -+\f2srcalias\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¥½¡¼¥¹¡¦¥¡¼¥¹¥È¥¢Æâ¤Î¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤¬¥¿¡¼¥²¥Ã¥È¡¦¥¡¼¥¹¥È¥¢Æâ¤Ë¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤Þ¤¹¡£³Æ¥¿¡¼¥²¥Ã¥È¡¦¥¨¥ó¥È¥ê¤ÏÂбþ¤¹¤ë¥½¡¼¥¹¡¦¥¨¥ó¥È¥ê¤ÎÊÌ̾¤Î²¼¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£¥½¡¼¥¹¤Î¥¨¥ó¥È¥ê¤¬¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸ¤ì¤Æ¤¤¤¿¾ì¹ç¡¢\f2srcstorepass\fP¤ò»ÈÍѤ·¤Æ¤½¤Î¥¨¥ó¥È¥ê¤¬²óÉü¤µ¤ì¤Þ¤¹¡£\f2srcstorepass\fP¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¤«Àµ¤·¤¯¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¥æ¡¼¥¶¡¼¤Ï¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£¥½¡¼¥¹¡¦¥¡¼¥¹¥È¥¢Æâ¤Î¤¢¤ë¥¨¥ó¥È¥ê¡¦¥¿¥¤¥×¤¬¥¿¡¼¥²¥Ã¥È¡¦¥¡¼¥¹¥È¥¢¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤ä¡¢¤¢¤ë¥¨¥ó¥È¥ê¤ò¥¿¡¼¥²¥Ã¥È¡¦¥¡¼¥¹¥È¥¢¤Ë³ÊǼ¤¹¤ëºÝ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¡¢¥æ¡¼¥¶¡¼¤Ï¤½¤Î¥¨¥ó¥È¥ê¤ò¥¹¥¥Ã¥×¤·¤Æ½èÍý¤ò³¹Ô¤¹¤ë¤«¡¢¤¢¤ë¤¤¤Ï½èÍý¤òÃæÃǤ¹¤ë¤«¤ÎÁªÂò¤òµá¤á¤é¤ì¤Þ¤¹¡£¥¿¡¼¥²¥Ã¥È¡¦¥¨¥ó¥È¥ê¤Ï¥½¡¼¥¹¡¦¥¨¥ó¥È¥ê¤Î¥Ñ¥¹¥ï¡¼¥É¤Ë¤è¤Ã¤ÆÊݸ¤ì¤Þ¤¹¡£ -+.LP -+¥¿¡¼¥²¥Ã¥ÈÊÌ̾¤¬¥¿¡¼¥²¥Ã¥È¡¦¥¡¼¥¹¥È¥¢Æâ¤Ë¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤¿¾ì¹ç¡¢¥æ¡¼¥¶¡¼¤Ï¡¢¤½¤Î¥¨¥ó¥È¥ê¤ò¾å½ñ¤¤¹¤ë¤«¡¢¤¢¤ë¤¤¤Ï°Û¤Ê¤ëÊÌ̾¤Î²¼¤Ç¿·¤·¤¤¥¨¥ó¥È¥ê¤òºîÀ®¤¹¤ë¤«¤ÎÁªÂò¤òµá¤á¤é¤ì¤Þ¤¹¡£ -+.LP -+\f2\-noprompt\fP¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¥æ¡¼¥¶¡¼¤Ï¿·¤·¤¤¥¿¡¼¥²¥Ã¥ÈÊÌ̾¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤»¤ó¡£´û¸¤Î¥¨¥ó¥È¥ê¤Ï¤½¤Î¥¿¡¼¥²¥Ã¥ÈÊÌ̾¤Ç¼«Æ°Åª¤Ë¾å½ñ¤¤µ¤ì¤Þ¤¹¡£ºÇ¸å¤Ë¡¢¥¤¥ó¥Ý¡¼¥È¤Ç¤¤Ê¤¤¥¨¥ó¥È¥ê¤Ï¼«Æ°Åª¤Ë¥¹¥¥Ã¥×¤µ¤ì¡¢·Ù¹ð¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-printcertreq {\-file file} -+.LP -+PKCS#10·Á¼°¤Î¾ÚÌÀ½ñ¥ê¥¯¥¨¥¹¥È¤ÎÆâÍƤò½ÐÎϤ·¤Þ¤¹¡£¤³¤Î¥ê¥¯¥¨¥¹¥È¤Ï¡¢keytool \-certreq¥³¥Þ¥ó¥É¤ÇÀ¸À®¤Ç¤¤Þ¤¹¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢file¤«¤é¥ê¥¯¥¨¥¹¥È¤òÆɤ߹þ¤ß¤Þ¤¹¡£file¤¬¾Êά¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢É¸½àÆþÎϤ«¤éÆɤ߹þ¤ß¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+¥Ç¡¼¥¿¤Î¥¨¥¯¥¹¥Ý¡¼¥È -+.LP -+.RS 3 -+.TP 3 -+\-certreq {\-alias alias} {\-dname dname} {\-sigalg sigalg} {\-file certreq_file} [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -+.LP -+PKCS#10·Á¼°¤ò»ÈÍѤ·¤Æ¾ÚÌÀ½ñ½ð̾¥ê¥¯¥¨¥¹¥È(CSR)¤òÀ¸À®¤·¤Þ¤¹¡£ -+.LP -+CSR¤Ï¡¢¾ÚÌÀ½ñȯ¹Ô¶É(CA)¤ËÁ÷¿®¤¹¤ë¤³¤È¤òÌÜŪ¤È¤·¤¿¤â¤Î¤Ç¤¹¡£CA¤Ï¡¢¾ÚÌÀ½ñÍ×µá¼Ô¤ò(Ä̾ï¤Ï¥ª¥Õ¥é¥¤¥ó¤Ç)ǧ¾Ú¤·¡¢¾ÚÌÀ½ñ¤Þ¤¿¤Ï¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤òÁ÷¤êÊÖ¤·¤Þ¤¹¡£¤³¤Î¾ÚÌÀ½ñ¤Þ¤¿¤Ï¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Ï¡¢¥¡¼¥¹¥È¥¢Æâ¤Î´û¸¤Î¾ÚÌÀ½ñ¥Á¥§¡¼¥ó(ºÇ½é¤Ï1¤Ä¤Î¼«¸Ê½ð̾¾ÚÌÀ½ñ¤«¤é¹½À®¤µ¤ì¤ë)¤ËÃÖ¤´¹¤¨¤Æ»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+\f2alias\fP¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿ÈëÌ©¸°¤Ï¡¢PKCS#10¾ÚÌÀ½ñ¥ê¥¯¥¨¥¹¥È¤òºîÀ®¤¹¤ë¤Î¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ÈëÌ©¸°¤Ï¥¡¼¥¹¥È¥¢Æâ¤Ç¤Ï¥Ñ¥¹¥ï¡¼¥É¤Ë¤è¤Ã¤ÆÊݸ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ÈëÌ©¸°¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤Ë¤Ï¡¢Å¬Àڤʥѥ¹¥ï¡¼¥É¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç\f2keypass\fP¤ò»ØÄꤷ¤Æ¤ª¤é¤º¡¢ÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤¬¥¡¼¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤È°Û¤Ê¤ë¾ì¹ç¤Ï¡¢ÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£dname¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤ì¤¬CSR¤Ç¼çÂΤȤ·¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢ÊÌ̾¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿X.500¼±ÊÌ̾¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.LP -+\f2sigalg\fP¤Ë¤Ï¡¢CSR¤Ë½ð̾¤òÉÕ¤±¤ë¤È¤¤Ë»ÈÍѤ¹¤ë¥¢¥ë¥´¥ê¥º¥à¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+CSR¤Ï¡¢¥Õ¥¡¥¤¥ë\f2certreq_file\fP¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢É¸½à½ÐÎϤËCSR¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.LP -+CA¤«¤é¤Î¥ì¥¹¥Ý¥ó¥¹¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤Ë¤Ï¡¢\f2importcert\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.TP 3 -+\-exportcert {\-alias alias} {\-file cert_file} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-rfc} {\-v} {\-protected} {\-Jjavaoption} -+.LP -+\f2alias\fP¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¾ÚÌÀ½ñ¤ò(¥¡¼¥¹¥È¥¢¤«¤é)Æɤ߹þ¤ß¡¢¥Õ¥¡¥¤¥ë\f2cert_file\fP¤Ë³ÊǼ¤·¤Þ¤¹¡£ -+.LP -+¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢É¸½à½ÐÎϤ˾ÚÌÀ½ñ¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥Ð¥¤¥Ê¥êÉä¹æ²½Êý¼°¤Î¾ÚÌÀ½ñ¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢\f2\-rfc\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢½ÐÎϲÄǽÉä¹æ²½Êý¼°¤Î¾ÚÌÀ½ñ¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£½ÐÎϲÄǽÉä¹æ²½Êý¼°¤Ï¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥ÈRFC 1421¾ÚÌÀ½ñÉä¹æ²½µ¬³Ê¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+\f2alias\fP¤¬¡¢¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤ò»²¾È¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢³ºÅö¤¹¤ë¾ÚÌÀ½ñ¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¡¢\f2alias\fP¤Ï¡¢´ØÏ¢ÉÕ¤±¤é¤ì¤¿¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ò»ý¤Ä¸°¥¨¥ó¥È¥ê¤ò»²¾È¤·¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ï¡¢¥Á¥§¡¼¥óÆâ¤ÎºÇ½é¤Î¾ÚÌÀ½ñ¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£¤³¤Î¾ÚÌÀ½ñ¤Ï¡¢\f2alias\fP¤Ë¤è¤Ã¤Æɽ¤µ¤ì¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤Î¸ø³«¸°¤òǧ¾Ú¤¹¤ë¾ÚÌÀ½ñ¤Ç¤¹¡£ -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢°ÊÁ°¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï\f2\-export\fP¤È¤¤¤¦Ì¾Á°¤Ç¤·¤¿¡£¤³¤Î¸Å¤¤Ì¾Á°¤Ï¡¢¤³¤Î¥ê¥ê¡¼¥¹¤Ç¤â°ú³¤¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤ª¤ê¡¢º£¸å¤Î¥ê¥ê¡¼¥¹¤Ç¤â¥µ¥Ý¡¼¥È¤µ¤ì¤ëͽÄê¤Ç¤¹¡£¤¿¤À¤·¡¢º£¸å¤Ï¤ï¤«¤ê¤ä¤¹¤¤¤è¤¦¤Ë¡¢¿·¤·¤¤Ì¾Á°\f2\-exportcert\fP¤ò»ÈÍѤ¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+¥Ç¡¼¥¿¤Îɽ¼¨ -+.LP -+.RS 3 -+.TP 3 -+\-list {\-alias alias} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v | \-rfc} {\-protected} {\-Jjavaoption} -+.LP -+\f2alias\fP¤ÇÆÃÄꤵ¤ì¤ë¥¡¼¥¹¥È¥¢¡¦¥¨¥ó¥È¥ê¤ÎÆâÍƤò(ɸ½à½ÐÎϤË)½ÐÎϤ·¤Þ¤¹¡£ÊÌ̾¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥¡¼¥¹¥È¥¢Á´ÂΤÎÆâÍƤ¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¾ÚÌÀ½ñ¤ÎSHA1¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤òɽ¼¨¤·¤Þ¤¹¡£\f2\-v\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢½êͼԡ¢È¯¹Ô¼Ô¡¢¥·¥ê¥¢¥ëÈֹ桢³ÈÄ¥µ¡Ç½¤Ê¤É¤ÎÉÕ²ÃŪ¤Ê¾ðÊó¤È¤È¤â¤Ë¡¢¿Í´Ö¤¬Æɤळ¤È¤Î¤Ç¤¤ë·Á¼°¤Ç¾ÚÌÀ½ñ¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£\f2\-rfc\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢½ÐÎϲÄǽÉä¹æ²½Êý¼°¤Ç¾ÚÌÀ½ñ¤ÎÆâÍƤ¬É½¼¨¤µ¤ì¤Þ¤¹¡£½ÐÎϲÄǽÉä¹æ²½Êý¼°¤Ï¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥ÈRFC 1421¾ÚÌÀ½ñÉä¹æ²½µ¬³Ê¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+\f2\-v\fP¥ª¥×¥·¥ç¥ó¤È\f2\-rfc\fP¥ª¥×¥·¥ç¥ó¤òƱ»þ¤Ë»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£ -+.TP 3 -+\-printcert {\-file cert_file | \-sslserver host[:port]} {\-jarfile JAR_file {\-rfc} {\-v} {\-Jjavaoption} -+.LP -+¥Õ¥¡¥¤¥ë\f2cert_file\fP¡¢\f2host:port\fP¤Ë¤¢¤ëSSL¥µ¡¼¥Ð¡¼¡¢¤Þ¤¿¤Ï½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë\f2JAR_file\fP(\f2\-jarfile\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄê)¤«¤é¾ÚÌÀ½ñ¤òÆɤ߹þ¤ß¡¢¿Í´Ö¤¬Æɤळ¤È¤Î¤Ç¤¤ë·Á¼°¤Ç¾ÚÌÀ½ñ¤ÎÆâÍƤòɽ¼¨¤·¤Þ¤¹¡£¥Ý¡¼¥È¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢É¸½à¤ÎHTTPS¥Ý¡¼¥È443¤¬ÁÛÄꤵ¤ì¤Þ¤¹¡£\f2\-sslserver\fP¤ª¤è¤Ó\f2\-file\fP¥ª¥×¥·¥ç¥ó¤òƱ»þ¤Ë»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£Æ±»þ¤Ë»ØÄꤹ¤ë¤È¡¢¥¨¥é¡¼¤¬Êó¹ð¤µ¤ì¤Þ¤¹¡£¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢É¸½àÆþÎϤ«¤é¾ÚÌÀ½ñ¤òÆɤ߹þ¤ß¤Þ¤¹¡£ -+.LP -+\f2\-rfc\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢keytool¤Ï¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥ÈRFC 1421ɸ½à¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¡¢PEM¥â¡¼¥É¤Ç¾ÚÌÀ½ñ¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.LP -+¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ïɸ½àÆþÎϤ«¤é¾ÚÌÀ½ñ¤òÆɤ߹þ¤à¾ì¹ç¡¢¤½¤Î¾ÚÌÀ½ñ¤Ï¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥ÈRFC 1421ɸ½à¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¡¢¥Ð¥¤¥Ê¥êÉä¹æ²½Êý¼°¤Þ¤¿¤Ï½ÐÎϲÄǽÉä¹æ²½Êý¼°¤Çɽ¼¨¤Ç¤¤Þ¤¹¡£ -+.LP -+SSL¥µ¡¼¥Ð¡¼¤¬¥Õ¥¡¥¤¥¢¥¦¥©¡¼¥ë¤ÎÇظå¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢\f2\-J\-Dhttps.proxyHost=proxyhost\fP¤È\f2\-J\-Dhttps.proxyPort=proxyport\fP¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤Æ¡¢¥×¥í¥¥·¡¦¥È¥ó¥Í¥ê¥ó¥°¤ò»ÈÍѤǤ¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2JSSE¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥¬¥¤¥É\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+\f3Ãí°Õ\fP: ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥¡¼¥¹¥È¥¢¤È¤Ï´Ø·¸¤Ê¤¯»ÈÍѤǤ¤Þ¤¹¡£ -+.TP 3 -+\-printcrl \-file crl_ {\-v} -+.LP -+¥Õ¥¡¥¤¥ë\f2crl_file\fP¤«¤é¾ÚÌÀ½ñ¤Î¼è¾Ã¤·¥ê¥¹¥È(CRL)¤òÆɤ߹þ¤ß¤Þ¤¹¡£ -+.LP -+¾ÚÌÀ½ñ¤Î¼è¾Ã¤·¥ê¥¹¥È(CRL)¤Ï¡¢¥Ç¥¸¥¿¥ë¾ÚÌÀ½ñ¤òȯ¹Ô¤·¤¿¾ÚÌÀ½ñȯ¹Ô¶É(CA)¤Ë¤è¤Ã¤Æ¼è¤ê¾Ã¤µ¤ì¤¿¥Ç¥¸¥¿¥ë¾ÚÌÀ½ñ¤Î¥ê¥¹¥È¤Ç¤¹¡£CA¤Ï¡¢\f2crl_file\fP¤òÀ¸À®¤·¤Þ¤¹¡£ -+.LP -+\f3Ãí°Õ\fP: ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥¡¼¥¹¥È¥¢¤È¤Ï´Ø·¸¤Ê¤¯»ÈÍѤǤ¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+¥¡¼¥¹¥È¥¢¤Î´ÉÍý -+.LP -+.RS 3 -+.TP 3 -+\-storepasswd [\-new new_storepass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-Jjavaoption} -+.LP -+¥¡¼¥¹¥È¥¢¤ÎÆâÍƤÎÀ°¹çÀ¤òÊݸ¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¥Ñ¥¹¥ï¡¼¥É¤òÊѹ¹¤·¤Þ¤¹¡£\f2new_storepass\fP¤Ë¤Ï¡¢¿·¤·¤¤¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£new_storepass¤Ï¡¢6ʸ»ú°Ê¾å¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-keypasswd {\-alias alias} [\-keypass old_keypass] [\-new new_keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-Jjavaoption} -+.LP -+\f2alias\fP¤Ë¤è¤Ã¤ÆÆÃÄꤵ¤ì¤ëÈó¸ø³«/ÈëÌ©¸°¤òÊݸ¤ë¤¿¤á¤Î¥Ñ¥¹¥ï¡¼¥É¤ò¡¢\f2old_keypass\fP¤«¤é\f2new_keypass\fP¤ËÊѹ¹¤·¤Þ¤¹¡£new_keypass¤Ï¡¢6ʸ»ú°Ê¾å¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç\f2\-keypass\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤ª¤é¤º¡¢¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤¬¥¡¼¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤È°Û¤Ê¤ë¾ì¹ç¤Ï¡¢¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.LP -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç\f2\-new\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¿·¤·¤¤¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.TP 3 -+\-delete [\-alias alias] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -+.LP -+\f2alias\fP¤Ë¤è¤Ã¤ÆÆÃÄꤵ¤ì¤ë¥¨¥ó¥È¥ê¤ò¥¡¼¥¹¥È¥¢¤«¤éºï½ü¤·¤Þ¤¹¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÇÊÌ̾¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢ÊÌ̾¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.TP 3 -+\-changealias {\-alias alias} [\-destalias destalias] [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -+.LP -+»ØÄꤵ¤ì¤¿\f2alias\fP¤«¤é¿·¤·¤¤ÊÌ̾\f2destalias\fP¤Ø¡¢´û¸¤Î¥¡¼¥¹¥È¥¢¡¦¥¨¥ó¥È¥ê¤ò°ÜÆ°¤·¤Þ¤¹¡£¥¿¡¼¥²¥Ã¥ÈÊÌ̾¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¤³¤Î¥³¥Þ¥ó¥É¤Ï¤½¤ÎÆþÎϤòµá¤á¤Þ¤¹¡£¸µ¤Î¥¨¥ó¥È¥ê¤¬¥¨¥ó¥È¥ê¡¦¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸ¤ì¤Æ¤¤¤¿¾ì¹ç¡¢¡Ö\-keypass¡×¥ª¥×¥·¥ç¥ó·Ðͳ¤Ç¤½¤Î¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¸°¥Ñ¥¹¥ï¡¼¥É¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢\f2storepass\fP(»ØÄꤵ¤ì¤¿¾ì¹ç)¤¬¤Þ¤º»î¤ß¤é¤ì¤Þ¤¹¡£¤½¤Î»î¤ß¤¬¼ºÇÔ¤¹¤ë¤È¡¢¥æ¡¼¥¶¡¼¤Ï¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+¥Ø¥ë¥×¤Îɽ¼¨ -+.LP -+.RS 3 -+.TP 3 -+\-help -+.LP -+´ðËÜŪ¤Ê¥³¥Þ¥ó¥É¤È¤½¤Î¥ª¥×¥·¥ç¥ó¤Î°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£ -+.LP -+ÆÃÄê¤Î¥³¥Þ¥ó¥É¤Î¾ÜºÙ¤ò»²¾È¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤ËÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£\f2command_name\fP¤Ï¥³¥Þ¥ó¥É¤Î̾Á°¤Ç¤¹¡£ -+.nf -+\f3 -+.fl -+ keytool \-\fP\f4command_name\fP\f3 \-help -+.fl -+\fP -+.fi -+.RE -+ -+.LP -+.SH "Îã" -+.LP -+.LP -+¤³¤³¤Ç¤Ï¡¢¼«Ê¬¤Î¸°¤Î¥Ú¥¢¤ª¤è¤Ó¿®Íê¤Ç¤¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤«¤é¤Î¾ÚÌÀ½ñ¤ò´ÉÍý¤¹¤ë¤¿¤á¤Î¥¡¼¥¹¥È¥¢¤òºîÀ®¤¹¤ë¾ì¹ç¤òÎã¤È¤·¤Æ¼¨¤·¤Þ¤¹¡£ -+.LP -+.SS -+¸°¤Î¥Ú¥¢¤ÎÀ¸À® -+.LP -+.LP -+¤Þ¤º¡¢¥¡¼¥¹¥È¥¢¤òºîÀ®¤·¤Æ¸°¤Î¥Ú¥¢¤òÀ¸À®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¼¡¤Ë¼¨¤¹¤Î¤Ï¡¢¼Â¹Ô¤¹¤ë¥³¥Þ¥ó¥É¤ÎÎã¤Ç¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ keytool \-genkeypair \-dname "cn=Mark Jones, ou=Java, o=Oracle, c=US" -+.fl -+ \-alias business \-keypass \fP\f4<new password for private key>\fP\f3 \-keystore /working/mykeystore -+.fl -+ \-storepass \fP\f4<new password for keystore>\fP\f3 \-validity 180 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+Ãí°Õ: ¤³¤Î¥³¥Þ¥ó¥É¤Ï1¹Ô¤ËÆþÎϤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Îã¤ÇÊ£¿ô¹Ô¤ËÆþÎϤ·¤Æ¤¤¤ë¤Î¤ÏÆɤߤ䤹¤¯¤¹¤ë¤¿¤á¤Ç¤¹¡£ -+.LP -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢working¥Ç¥£¥ì¥¯¥È¥ê¤Ëmykeystore¤È¤¤¤¦Ì¾Á°¤Î¥¡¼¥¹¥È¥¢¤òºîÀ®¤·(¥¡¼¥¹¥È¥¢¤Ï¤Þ¤À¸ºß¤·¤Æ¤¤¤Ê¤¤¤È²¾Äê)¡¢ºîÀ®¤·¤¿¥¡¼¥¹¥È¥¢¤Ë¡¢\f2<new password for keystore>\fP¤Ç»ØÄꤷ¤¿¥Ñ¥¹¥ï¡¼¥É¤ò³ä¤êÅö¤Æ¤Þ¤¹¡£À¸À®¤¹¤ë¸ø³«¸°¤ÈÈëÌ©¸°¤Î¥Ú¥¢¤ËÂбþ¤¹¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤Î¡Ö¼±ÊÌ̾¡×¤Ï¡¢Ä̾Τ¬¡ÖMark Jones¡×¡¢ÁÈ¿¥Ã±°Ì¤¬¡ÖJava¡×¡¢ÁÈ¿¥¤¬¡ÖOracle¡×¡¢2ʸ»ú¤Î¹ñÈֹ椬¡ÖUS¡×¤Ç¤¹¡£¸ø³«¸°¤ÈÈëÌ©¸°¤Î¥µ¥¤¥º¤Ï¤É¤Á¤é¤â1024¥Ó¥Ã¥È¤Ç¡¢¸°¤ÎºîÀ®¤Ë¤Ï¥Ç¥Õ¥©¥ë¥È¤ÎDSA¸°À¸À®¥¢¥ë¥´¥ê¥º¥à¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢¸ø³«¸°¤È¼±ÊÌ̾¾ðÊó¤ò´Þ¤à¼«¸Ê½ð̾¾ÚÌÀ½ñ(¥Ç¥Õ¥©¥ë¥È¤ÎSHA1withDSA½ð̾¥¢¥ë¥´¥ê¥º¥à¤ò»ÈÍÑ)¤òºîÀ®¤·¤Þ¤¹¡£¾ÚÌÀ½ñ¤Î͸ú´ü´Ö¤Ï180Æü¤Ç¤¹¡£¾ÚÌÀ½ñ¤Ï¡¢ÊÌ̾¡Öbusiness¡×¤ÇÆÃÄꤵ¤ì¤ë¥¡¼¥¹¥È¥¢¡¦¥¨¥ó¥È¥êÆâ¤ÎÈëÌ©¸°¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤Þ¤¹¡£ÈëÌ©¸°¤Ë¤Ï¡¢\f2<new password for private key>\fP¤Ç»ØÄꤷ¤¿¥Ñ¥¹¥ï¡¼¥É¤¬³ä¤êÅö¤Æ¤é¤ì¤Þ¤¹¡£ -+.LP -+.LP -+¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢¾å¤Ë¼¨¤·¤¿¥³¥Þ¥ó¥É¤òÂçÉý¤Ëû¤¯¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¼ÂºÝ¤Ë¤Ï¡¢¥ª¥×¥·¥ç¥ó¤ò1¤Ä¤â»ØÄꤻ¤º¤Ë¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¥Ç¥Õ¥©¥ë¥ÈÃͤò»ý¤Ä¥ª¥×¥·¥ç¥ó¤Ç¤Ï¡¢¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¥Ç¥Õ¥©¥ë¥ÈÃͤ¬»ÈÍѤµ¤ì¡¢É¬ÍפÊÃͤˤĤ¤¤Æ¤ÏÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢Ã±¤Ë¼¡¤Î¤è¤¦¤ËÆþÎϤ¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ keytool \-genkeypair -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤Î¾ì¹ç¤Ï¡¢mykey¤È¤¤¤¦ÊÌ̾¤Ç¥¡¼¥¹¥È¥¢¡¦¥¨¥ó¥È¥ê¤¬ºîÀ®¤µ¤ì¡¢¿·¤·¤¯À¸À®¤µ¤ì¤¿¸°¤Î¥Ú¥¢¡¢¤ª¤è¤Ó90Æü´Ö͸ú¤Ê¾ÚÌÀ½ñ¤¬¤³¤Î¥¨¥ó¥È¥ê¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£¤³¤Î¥¨¥ó¥È¥ê¤Ï¡¢¥Û¡¼¥à¡¦¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î .keystore¤È¤¤¤¦Ì¾Á°¤Î¥¡¼¥¹¥È¥¢¤ËÃÖ¤«¤ì¤Þ¤¹¡£¤³¤Î¥¡¼¥¹¥È¥¢¤¬¤Þ¤À¸ºß¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ºîÀ®¤µ¤ì¤Þ¤¹¡£¼±ÊÌ̾¾ðÊó¡¢¥¡¼¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤ª¤è¤ÓÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.LP -+.LP -+°Ê¹ß¤Ç¤Ï¡¢¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤Ç\f2\-genkeypair\fP¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤¿¤â¤Î¤È¤·¤ÆÎã¤ò¼¨¤·¤Þ¤¹¡£¾ðÊó¤ÎÆþÎϤòµá¤á¤é¤ì¤¿¾ì¹ç¤Ï¡¢ºÇ½é¤Ë¼¨¤·¤¿\f2\-genkeypair\fP¥³¥Þ¥ó¥É¤ÎÃͤòÆþÎϤ·¤¿¤â¤Î¤È¤·¤Þ¤¹(¤¿¤È¤¨¤Ð¡¢¼±ÊÌ̾¤Ë¤Ïcn=Mark Jones,ou=Java,o=Oracle,c=US¤È»ØÄê)¡£ -+.LP -+.SS -+¾ÚÌÀ½ñȯ¹Ô¶É¤ËÂФ¹¤ë½ð̾ÉÕ¤¾ÚÌÀ½ñ¤Î¥ê¥¯¥¨¥¹¥È -+.LP -+.LP -+¸½»þÅÀ¤Ç¼ê¸µ¤Ë¤¢¤ë¤Î¤Ï¡¢1Ä̤μ«¸Ê½ð̾¾ÚÌÀ½ñ¤Î¤ß¤Ç¤¹¡£¾ÚÌÀ½ñ¤Ë¾ÚÌÀ½ñȯ¹Ô¶É(CA)¤Î½ð̾¤¬ÉÕ¤¤¤Æ¤¤¤ì¤Ð¡¢Â¾¤Î¥æ¡¼¥¶¡¼¤«¤é¾ÚÌÀ½ñ¤¬¿®Íꤵ¤ì¤ë²ÄǽÀ¤â¹â¤¯¤Ê¤ê¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ê½ð̾¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢¤Þ¤º¡¢¾ÚÌÀ½ñ½ð̾¥ê¥¯¥¨¥¹¥È(CSR)¤òÀ¸À®¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ keytool \-certreq \-file MarkJ.csr -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+CSR(¥Ç¥Õ¥©¥ë¥ÈÊÌ̾¡Ömykey¡×¤Ë¤è¤Ã¤ÆÆÃÄꤵ¤ì¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤ÎCSR)¤¬ºîÀ®¤µ¤ì¡¢MarkJ.csr¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤ËÃÖ¤«¤ì¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢VeriSign¤Ê¤É¤ÎCA¤ËÄó½Ð¤·¤Þ¤¹¡£CA¤ÏÍ×µá¼Ô¤ò(Ä̾ï¤Ï¥ª¥Õ¥é¥¤¥ó¤Ç)ǧ¾Ú¤·¡¢Í×µá¼Ô¤Î¸ø³«¸°¤òǧ¾Ú¤·¤¿½ð̾ÉÕ¤¤Î¾ÚÌÀ½ñ¤òÁ÷¤êÊÖ¤·¤Þ¤¹¡£¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¡¢CA¤¬¾ÚÌÀ½ñ¤Î¥Á¥§¡¼¥ó¤òÊÖ¤¹¤³¤È¤â¤¢¤ê¤Þ¤¹¡£¾ÚÌÀ½ñ¤Î¥Á¥§¡¼¥ó¤Ç¤Ï¡¢³Æ¾ÚÌÀ½ñ¤¬¥Á¥§¡¼¥óÆâ¤Î¤½¤ÎÁ°¤Î½ð̾¼Ô¤Î¸ø³«¸°¤òǧ¾Ú¤·¤Þ¤¹¡£ -+.LP -+.SS -+CA¤«¤é¤Î¾ÚÌÀ½ñ¤Î¥¤¥ó¥Ý¡¼¥È -+.LP -+.LP -+ºîÀ®¤·¤¿¼«¸Ê½ð̾¾ÚÌÀ½ñ¤Ï¡¢¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ÇÃÖ¤´¹¤¨¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Ç¤Ï¡¢³Æ¾ÚÌÀ½ñ¤¬¡¢¡Ö¥ë¡¼¥È¡×CA¤òµ¯ÅÀ¤È¤¹¤ë¥Á¥§¡¼¥óÆâ¤Î¼¡¤Î¾ÚÌÀ½ñ¤Î½ð̾¼Ô¤Î¸ø³«¸°¤òǧ¾Ú¤·¤Þ¤¹¡£ -+.LP -+.LP -+CA¤«¤é¤Î¾ÚÌÀ±þÅú¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤Ë¤Ï¡¢¥¡¼¥¹¥È¥¢¤«¡¢\f2cacerts\fP¥¡¼¥¹¥È¥¢¡¦¥Õ¥¡¥¤¥ë(importcert¥³¥Þ¥ó¥É¤ÇÀâÌÀ)Æâ¤Ë1¤Ä°Ê¾å¤Î¡Ö¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¡×¤¬¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+¾ÚÌÀ±þÅú¤¬¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Î¾ì¹ç¤Ï¡¢¥Á¥§¡¼¥ó¤Î¥È¥Ã¥×¤Î¾ÚÌÀ½ñ(¤½¤ÎCA¤Î¸ø³«¸°¤òǧ¾Ú¤¹¤ë¡Ö¥ë¡¼¥È¡×CA¤Î¾ÚÌÀ½ñ)¤Î¤ß¤¬É¬ÍפǤ¹¡£ -+.TP 2 -+o -+¾ÚÌÀ±þÅú¤¬Ã±°ì¤Î¾ÚÌÀ½ñ¤Î¾ì¹ç¤Ï¡¢¾ÚÌÀ½ñ¤Ë½ð̾¤·¤¿CA¤Îȯ¹ÔÍѤξÚÌÀ½ñ¤¬É¬Íפǡ¢¤½¤Î¾ÚÌÀ½ñ¤¬¼«¸Ê½ð̾¤µ¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢¤µ¤é¤Ë¤½¤Î¾ÚÌÀ½ñ¤Î½ð̾¼ÔÍѤξÚÌÀ½ñ¤¬É¬ÍפǤ¹¡£¤³¤Î¤è¤¦¤Ë¤·¤Æ¼«¸Ê½ð̾¤µ¤ì¤ë¡Ö¥ë¡¼¥È¡×CA¤Î¾ÚÌÀ½ñ¤Þ¤Ç¡¢¤½¤ì¤¾¤ì¾ÚÌÀ½ñ¤¬É¬ÍפǤ¹¡£ -+.RE -+ -+.LP -+.LP -+cacerts¥¡¼¥¹¥È¥¢¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢¤¤¤¯¤Ä¤«¤ÎVeriSign¥ë¡¼¥ÈCA¾ÚÌÀ½ñ¤ò´Þ¤ó¤À¾õÂ֤ǽв٤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢VeriSign¤Î¾ÚÌÀ½ñ¤ò¡¢¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤È¤·¤Æ¥¡¼¥¹¥È¥¢Æâ¤Ë¥¤¥ó¥Ý¡¼¥È¤¹¤ëɬÍפϤʤ¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤¿¤À¤·¡¢Â¾¤ÎCA¤ËÂФ·¤Æ½ð̾ÉÕ¤¾ÚÌÀ½ñ¤ò¥ê¥¯¥¨¥¹¥È¤·¤Æ¤¤¤Æ¡¢¤³¤ÎCA¤Î¸ø³«¸°¤òǧ¾Ú¤¹¤ë¾ÚÌÀ½ñ¤¬¡¢cacerts¤Ë¤Þ¤ÀÄɲ䵤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢³ºÅö¤¹¤ëCA¤«¤é¤Î¾ÚÌÀ½ñ¤ò¡¢¡Ö¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¡×¤È¤·¤Æ¥¤¥ó¥Ý¡¼¥È¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+Ä̾CA¤«¤é¤Î¾ÚÌÀ½ñ¤Ï¡¢¼«¸Ê½ð̾¾ÚÌÀ½ñ¡¢¤Þ¤¿¤Ï¾¤ÎCA¤Ë¤è¤Ã¤Æ½ð̾¤µ¤ì¤¿¾ÚÌÀ½ñ¤Ç¤¹(¸å¼Ô¤Î¾ì¹ç¤Ï¡¢³ºÅö¤¹¤ë¾¤ÎCA¤Î¸ø³«¸°¤òǧ¾Ú¤¹¤ë¾ÚÌÀ½ñ¤âɬÍ×)¡£¤¿¤È¤¨¤Ð¡¢ABC¤È¤¤¤¦´ë¶È¤¬CA¤À¤È¤·¤Þ¤¹¡£¤³¤Î¤È¤¡¢¤³¤ÎCA¤Î¸ø³«¸°¤òǧ¾Ú¤¹¤ë¼«¸Ê½ð̾¾ÚÌÀ½ñ¤È¹Í¤¨¤é¤ì¤ë¡ÖABCCA.cer¡×¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤ò¡¢ABC¤«¤éÆþ¼ê¤·¤¿¤È¤·¤Þ¤¹¡£ -+.LP -+.LP -+¡Ö¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¡×¤È¤·¤Æ¾ÚÌÀ½ñ¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤È¤¤Ï¡¢¾ÚÌÀ½ñ¤¬Í¸ú¤Ç¤¢¤ë¤³¤È¤ò¿µ½Å¤Ë³Îǧ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤Þ¤º¡¢¾ÚÌÀ½ñ¤ÎÆâÍƤòɽ¼¨¤·(\f3keytool\fP \f2\-printcert\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ë¤«¡¢¤Þ¤¿¤Ï\f2\-noprompt\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤Ç\f3keytool\fP \f2\-importcert\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¡¢É½¼¨¤µ¤ì¤¿¾ÚÌÀ½ñ¤Î¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤¬¡¢´üÂÔ¤µ¤ì¤ë¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤È°ìÃפ¹¤ë¤«¤É¤¦¤«¤ò³Îǧ¤·¤Þ¤¹¡£¾ÚÌÀ½ñ¤òÁ÷¿®¤·¤¿¿Íʪ¤ËÏ¢Íí¤·¡¢¤³¤Î¿Íʪ¤¬Ä󼨤·¤¿(¤Þ¤¿¤Ï°ÂÁ´¤Ê¸ø³«¸°¤Î¥ê¥Ý¥¸¥È¥ê¤Ë¤è¤Ã¤ÆÄ󼨤µ¤ì¤ë)¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤È¡¢¾å¤Î¥³¥Þ¥ó¥É¤Çɽ¼¨¤µ¤ì¤¿¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤È¤òÈæ³Ó¤·¤Þ¤¹¡£¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤¬°ìÃפ¹¤ì¤Ð¡¢Á÷¿®ÅÓÃæ¤Ç¾¤Î²¿¼Ô¤«(¹¶·â¼Ô¤Ê¤É)¤Ë¤è¤ë¾ÚÌÀ½ñ¤Î¤¹¤êÂؤ¨¤¬¹Ô¤ï¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤Ç¤¤Þ¤¹¡£Á÷¿®ÅÓÃæ¤Ç¤³¤Î¼ï¤Î¹¶·â¤¬¹Ô¤ï¤ì¤Æ¤¤¤¿¾ì¹ç¡¢¥Á¥§¥Ã¥¯¤ò¹Ô¤ï¤º¤Ë¾ÚÌÀ½ñ¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤È¡¢¹¶·â¼Ô¤Ë¤è¤Ã¤Æ½ð̾¤µ¤ì¤¿¤¹¤Ù¤Æ¤Î¤â¤Î¤ò¿®Íꤹ¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¤³¤Î¾ÚÌÀ½ñ¤ò͸ú¤Ê¤â¤Î¤È¤·¤Æ¿®Íꤹ¤ë¾ì¹ç¤Ï¡¢¾ÚÌÀ½ñ¤ò¥¡¼¥¹¥È¥¢¤ËÄɲäǤ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ keytool \-importcert \-alias abc \-file ABCCA.cer -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+ABCCA.cer¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿¤ò´Þ¤à¡Ö¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¡×¤Î¥¨¥ó¥È¥ê¤¬¥¡¼¥¹¥È¥¢Æâ¤ËºîÀ®¤µ¤ì¡¢³ºÅö¤¹¤ë¥¨¥ó¥È¥ê¤Ëabc¤È¤¤¤¦ÊÌ̾¤¬³ä¤êÅö¤Æ¤é¤ì¤Þ¤¹¡£ -+.LP -+.SS -+CA¤«¤é¤Î¾ÚÌÀ½ñ±þÅú¤Î¥¤¥ó¥Ý¡¼¥È -+.LP -+.LP -+¾ÚÌÀ½ñ½ð̾¥ê¥¯¥¨¥¹¥È¤ÎÄó½ÐÀè¤ÎCA¤Î¸ø³«¸°¤òǧ¾Ú¤¹¤ë¾ÚÌÀ½ñ¤ò¥¤¥ó¥Ý¡¼¥È¤·¤¿¸å¤Ï(¤Þ¤¿¤ÏƱ¼ï¤Î¾ÚÌÀ½ñ¤¬¤¹¤Ç¤Ëcacerts¥Õ¥¡¥¤¥ëÆâ¤Ë¸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ï)¡¢¾ÚÌÀ±þÅú¤ò¥¤¥ó¥Ý¡¼¥È¤·¡¢¼«¸Ê½ð̾¾ÚÌÀ½ñ¤ò¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ÇÃÖ¤´¹¤¨¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤Î¥Á¥§¡¼¥ó¤Ï¡¢CA¤Î±þÅú¤¬¥Á¥§¡¼¥ó¤Î¾ì¹ç¤Ë¡¢¥ê¥¯¥¨¥¹¥È¤ËÂФ¹¤ë¥ì¥¹¥Ý¥ó¥¹¤È¤·¤ÆCA¤«¤éÁ÷¤êÊÖ¤µ¤ì¤¿¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Ç¤¹¡£¤Þ¤¿¡¢CA¤Î±þÅú¤¬Ã±°ì¤Î¾ÚÌÀ½ñ¤Î¾ì¹ç¤Ï¡¢¤³¤Î¾ÚÌÀ±þÅú¤È¡¢¥¤¥ó¥Ý¡¼¥ÈÀè¤Î¥¡¼¥¹¥È¥¢Æâ¤Þ¤¿¤Ïcacerts¥¡¼¥¹¥È¥¢¥Õ¥¡¥¤¥ëÆâ¤Ë¤¹¤Ç¤Ë¸ºß¤¹¤ë¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤È¤ò»ÈÍѤ·¤Æ¹½ÃÛ¤·¤¿¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Ç¤¹¡£ -+.LP -+.LP -+¤¿¤È¤¨¤Ð¡¢¾ÚÌÀ½ñ½ð̾¥ê¥¯¥¨¥¹¥È¤òVeriSign¤ËÁ÷¿®¤·¤¿¤È¤·¤Þ¤¹¡£Á÷¤êÊÖ¤µ¤ì¤¿¾ÚÌÀ½ñ¤Î̾Á°¤¬VSMarkJ.cer¤À¤È¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ±þÅú¤ò¥¤¥ó¥Ý¡¼¥È¤Ç¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ keytool \-importcert \-trustcacerts \-file VSMarkJ.cer -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+¸ø³«¸°¤òǧ¾Ú¤¹¤ë¾ÚÌÀ½ñ¤Î¥¨¥¯¥¹¥Ý¡¼¥È -+.LP -+.LP -+¤¿¤È¤¨¤Ð¡¢jarsigner(1)¥Ä¡¼¥ë¤ò»ÈÍѤ·¤ÆJava ARchive(JAR)¥Õ¥¡¥¤¥ë¤Ë½ð̾¤òÉÕ¤±¤¿¤È¤·¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¥¯¥é¥¤¥¢¥ó¥È¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤Þ¤¹¤¬¡¢¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¤Ï½ð̾¤òǧ¾Ú¤·¤¿¤¤¤È¹Í¤¨¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.LP -+¥¯¥é¥¤¥¢¥ó¥È¤¬½ð̾¤òǧ¾Ú¤¹¤ëÊýË¡¤Î1¤Ä¤Ë¡¢¤Þ¤º¼«Ê¬¤Î¸ø³«¸°¤Î¾ÚÌÀ½ñ¤ò¡Ö¿®Íê¤Ç¤¤ë¡×¥¨¥ó¥È¥ê¤È¤·¤Æ¥¯¥é¥¤¥¢¥ó¥È¤Î¥¡¼¥¹¥È¥¢¤Ë¥¤¥ó¥Ý¡¼¥È¤¹¤ëÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¤¿¤á¤Ë¤Ï¡¢¾ÚÌÀ½ñ¤ò¥¨¥¯¥¹¥Ý¡¼¥È¤·¤Æ¡¢¥¯¥é¥¤¥¢¥ó¥È¤ËÄ󶡤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ¡¢¾ÚÌÀ½ñ¤ò\f2MJ.cer\fP¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Ë¥³¥Ô¡¼¤·¤Þ¤¹¡£¤³¤Î¥¨¥ó¥È¥ê¤Ë¤Ï¡Ömykey¡×¤È¤¤¤¦ÊÌ̾¤¬»ÈÍѤµ¤ì¤Æ¤¤¤ë¤È¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ keytool \-exportcert \-alias mykey \-file MJ.cer -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¾ÚÌÀ½ñ¤È½ð̾ÉÕ¤JAR¥Õ¥¡¥¤¥ë¤òÆþ¼ê¤·¤¿¥¯¥é¥¤¥¢¥ó¥È¤Ï¡¢\f3jarsigner\fP¥Ä¡¼¥ë¤ò»ÈÍѤ·¤Æ½ð̾¤òǧ¾Ú¤Ç¤¤Þ¤¹¡£ -+.LP -+.SS -+¥¡¼¥¹¥È¥¢¤Î¥¤¥ó¥Ý¡¼¥È -+.LP -+.LP -+¥³¥Þ¥ó¥É¡Öimportkeystore¡×¤ò»ÈÍѤ¹¤ì¤Ð¡¢¤¢¤ë¥¡¼¥¹¥È¥¢¤ÎÁ´ÂΤòÊ̤Υ¡¼¥¹¥È¥¢Æâ¤Ë¥¤¥ó¥Ý¡¼¥È¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ï¡¢¸°¤ä¾ÚÌÀ½ñ¤È¤¤¤Ã¤¿¥½¡¼¥¹¥¡¼¥¹¥È¥¢Æâ¤Î¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤¬¡¢Ã±°ì¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¥¿¡¼¥²¥Ã¥È¥¡¼¥¹¥È¥¢Æâ¤Ë¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£¤³¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ì¤Ð¡¢°Û¤Ê¤ë¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢Æâ¤Ë´Þ¤Þ¤ì¤ë¥¨¥ó¥È¥ê¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥¤¥ó¥Ý¡¼¥È»þ¤Ë¤Ï¡¢¥¿¡¼¥²¥Ã¥È¡¦¥¡¼¥¹¥È¥¢Æâ¤Î¿·¤·¤¤¥¨¥ó¥È¥ê¤Ï¤¹¤Ù¤Æ¡¢¸µ¤ÈƱ¤¸ÊÌ̾¤ª¤è¤Ó(ÈëÌ©¸°¤äÈëÌ©¸°¤Î¾ì¹ç¤Ï)ÊݸîÍѥѥ¹¥ï¡¼¥É¤ò»ý¤Á¤Þ¤¹¡£¥½¡¼¥¹¥¡¼¥¹¥È¥¢Æâ¤ÎÈëÌ©¸°¤äÈëÌ©¸°¤Î²óÉü»þ¤ËÌäÂ꤬ȯÀ¸¤·¤¿¾ì¹ç¡¢\f3keytool\fP¤Ï¥æ¡¼¥¶¡¼¤Ë¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤Þ¤¹¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢ÊÌ̾¤Î½ÅÊ£¤ò¸¡½Ð¤¹¤ë¤È¡¢¥æ¡¼¥¶¡¼¤Ë¿·¤·¤¤ÊÌ̾¤ÎÆþÎϤòµá¤á¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤Ï¡¢¿·¤·¤¤ÊÌ̾¤ò»ØÄꤹ¤ë¤³¤È¤â¡¢Ã±½ã¤Ë´û¸¤ÎÊÌ̾¤Î¾å½ñ¤¤ò\f3keytool\fP¤Ëµö²Ä¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+¤¿¤È¤¨¤Ð¡¢Ä̾ï¤ÎJKS¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢key.jksÆâ¤Î¥¨¥ó¥È¥ê¤òPKCS#11¥¿¥¤¥×¤Î¥Ï¡¼¥É¥¦¥§¥¢¡¦¥Ù¡¼¥¹¤Î¥¡¼¥¹¥È¥¢Æâ¤Ë¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤǤ¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ keytool \-importkeystore -+.fl -+ \-srckeystore key.jks \-destkeystore NONE -+.fl -+ \-srcstoretype JKS \-deststoretype PKCS11 -+.fl -+ \-srcstorepass \fP\f4<source keystore password>\fP\f3 \-deststorepass \fP\f4<destination keystore password>\fP\f3 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤Þ¤¿¡¢importkeystore¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ì¤Ð¡¢¤¢¤ë¥½¡¼¥¹¡¦¥¡¼¥¹¥È¥¢Æâ¤Îñ°ì¤Î¥¨¥ó¥È¥ê¤ò¥¿¡¼¥²¥Ã¥È¡¦¥¡¼¥¹¥È¥¢¤Ë¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢¾åµ¤ÎÎã¤Ç¼¨¤·¤¿¥ª¥×¥·¥ç¥ó¤Ë²Ã¤¨¡¢¥¤¥ó¥Ý¡¼¥ÈÂоݤȤʤëÊÌ̾¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£srcalias¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¾ì¹ç¤Ë¤Ï¡¢¥¿¡¼¥²¥Ã¥ÈÊÌ̾¤â¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é»ØÄê¤Ç¤¤ë¤Û¤«¡¢ÈëÌ©/ÈëÌ©¸°¤ÎÊݸîÍѥѥ¹¥ï¡¼¥É¤ä¥¿¡¼¥²¥Ã¥ÈÊݸîÍѥѥ¹¥ï¡¼¥É¤â»ØÄê¤Ç¤¤Þ¤¹¡£¤½¤ÎÊýË¡¤ò¼¨¤¹¥³¥Þ¥ó¥É¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ keytool \-importkeystore -+.fl -+ \-srckeystore key.jks \-destkeystore NONE -+.fl -+ \-srcstoretype JKS \-deststoretype PKCS11 -+.fl -+ \-srcstorepass \fP\f4<source keystore password>\fP\f3 \-deststorepass \fP\f4<destination keystore password>\fP\f3 -+.fl -+ \-srcalias myprivatekey \-destalias myoldprivatekey -+.fl -+ \-srckeypass \fP\f4<source entry password>\fP\f3 \-destkeypass \fP\f4<destination entry password>\fP\f3 -+.fl -+ \-noprompt -+.fl -+\fP -+.fi -+ -+.LP -+.SS -+°ìÈÌŪ¤ÊSSL¥µ¡¼¥Ð¡¼ÍѤξÚÌÀ½ñ¤ÎÀ¸À® -+.LP -+.LP -+¼¡¤Ë¡¢3¤Ä¤Î¥¨¥ó¥Æ¥£¥Æ¥£¡¢¤Ä¤Þ¤ê¥ë¡¼¥ÈCA(root)¡¢Ãæ´ÖCA(ca)¤ª¤è¤ÓSSL¥µ¡¼¥Ð¡¼(server)ÍѤθ°¥Ú¥¢¤È¾ÚÌÀ½ñ¤òÀ¸À®¤¹¤ëkeytool¥³¥Þ¥ó¥É¤ò¼¨¤·¤Þ¤¹¡£¤¹¤Ù¤Æ¤Î¾ÚÌÀ½ñ¤òƱ¤¸¥¡¼¥¹¥È¥¢¤Ë³ÊǼ¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤é¤ÎÎã¤Ç¤Ï¡¢¸°¤Î¥¢¥ë¥´¥ê¥º¥à¤È¤·¤ÆRSA¤ò»ØÄꤹ¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+keytool \-genkeypair \-keystore root.jks \-alias root \-ext bc:c -+.fl -+keytool \-genkeypair \-keystore ca.jks \-alias ca \-ext bc:c -+.fl -+keytool \-genkeypair \-keystore server.jks \-alias server -+.fl -+ -+.fl -+keytool \-keystore root.jks \-alias root \-exportcert \-rfc > root.pem -+.fl -+ -+.fl -+keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore ca.jks \-certreq \-alias ca | keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore root.jks \-gencert \-alias root \-ext BC=0 \-rfc > ca.pem -+.fl -+keytool \-keystore ca.jks \-importcert \-alias ca \-file ca.pem -+.fl -+ -+.fl -+keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore server.jks \-certreq \-alias server | keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore ca.jks \-gencert \-alias ca \-ext ku:c=dig,kE \-rfc > server.pem -+.fl -+cat root.pem ca.pem server.pem | keytool \-keystore server.jks \-importcert \-alias server -+.fl -+\fP -+.fi -+ -+.LP -+.SH "ÍѸì¤È·Ù¹ð" -+.LP -+.SS -+¥¡¼¥¹¥È¥¢ -+.LP -+.LP -+¥¡¼¥¹¥È¥¢¤Ï¡¢°Å¹æ²½¤Î¸°¤È¾ÚÌÀ½ñ¤ò³ÊǼ¤¹¤ë¤¿¤á¤Îµ¡Ç½¤Ç¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+\f3¥¡¼¥¹¥È¥¢¤Î¥¨¥ó¥È¥ê\fP -+.LP -+¥¡¼¥¹¥È¥¢¤Ë¤Ï°Û¤Ê¤ë¥¿¥¤¥×¤Î¥¨¥ó¥È¥ê¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£\f3keytool\fP¤ÇºÇ¤âŬÍÑÈϰϤ餤¥¨¥ó¥È¥ê¡¦¥¿¥¤¥×¤Ï¡¢¼¡¤Î2¤Ä¤Ç¤¹¡£ -+.RS 3 -+.TP 3 -+1. -+\f3¸°¤Î¥¨¥ó¥È¥ê\fP \- ³Æ¥¨¥ó¥È¥ê¤Ï¡¢Èó¾ï¤Ë½ÅÍפʰŹ沽¤Î¸°¤Î¾ðÊó¤òÊÝ»ý¤·¤Þ¤¹¡£¤³¤Î¾ðÊó¤Ï¡¢µö²Ä¤·¤Æ¤¤¤Ê¤¤¥¢¥¯¥»¥¹¤òËɤ°¤¿¤á¤Ë¡¢Êݸ¤ì¤¿·Á¤Ç³ÊǼ¤µ¤ì¤Þ¤¹¡£°ìÈ̤ˡ¢¤³¤Î¼ï¤Î¥¨¥ó¥È¥ê¤È¤·¤Æ³ÊǼ¤µ¤ì¤ë¸°¤Ï¡¢ÈëÌ©¸°¤«¡¢Âбþ¤¹¤ë¸ø³«¸°¤Î¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤òȼ¤¦ÈëÌ©¸°¤Ç¤¹¡£\f3keytool\fP¤¬¤³¤ÎξÊý¤Î¥¿¥¤¥×¤Î¥¨¥ó¥È¥ê¤ò½èÍý¤Ç¤¤ë¤Î¤ËÂФ·¡¢\f3jarsigner\fP¥Ä¡¼¥ë¤Ï¸å¼Ô¤Î¥¿¥¤¥×¤Î¥¨¥ó¥È¥ê¡¢¤Ä¤Þ¤êÈëÌ©¸°¤È¤½¤ì¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Î¤ß¤ò½èÍý¤·¤Þ¤¹¡£ -+.TP 3 -+2. -+\f3¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤Î¥¨¥ó¥È¥ê\fP \- ³Æ¥¨¥ó¥È¥ê¤Ï¡¢Âè»°¼Ô¤«¤é¤Î¸ø³«¸°¾ÚÌÀ½ñ¤ò1¤Ä´Þ¤ó¤Ç¤¤¤Þ¤¹¡£¤³¤Î¾ÚÌÀ½ñ¤Ï¡¢¡Ö¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¡×¤È¸Æ¤Ð¤ì¤Þ¤¹¡£¤½¤ì¤Ï¡¢¾ÚÌÀ½ñÆâ¤Î¸ø³«¸°¤¬¡¢¾ÚÌÀ½ñ¤Î¡ÖSubject¡×(½êͼÔ)¤Ë¤è¤Ã¤ÆÆÃÄꤵ¤ì¤ë¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¤ËͳÍ褹¤ë¤â¤Î¤Ç¤¢¤ë¤³¤È¤ò¡¢¥¡¼¥¹¥È¥¢¤Î½êͼԤ¬¿®Íꤹ¤ë¤«¤é¤Ç¤¹¡£¾ÚÌÀ½ñ¤Îȯ¹Ô¼Ô¤Ï¡¢¾ÚÌÀ½ñ¤Ë½ð̾¤òÉÕ¤±¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤½¤ÎÆâÍƤòÊݾڤ·¤Þ¤¹¡£ -+.RE -+.TP 2 -+o -+\f3¥¡¼¥¹¥È¥¢¤ÎÊÌ̾\fP -+.LP -+¥¡¼¥¹¥È¥¢¤Î¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê(¸°¤ª¤è¤Ó¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ)¤Ï¡¢°ì°Õ¤Î\f2ÊÌ̾\fP¤ò²ð¤·¤Æ¥¢¥¯¥»¥¹¤µ¤ì¤Þ¤¹¡£ -+.LP -+ÊÌ̾¤ò»ØÄꤹ¤ë¤Î¤Ï¡¢\-genseckey¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤ÆÈëÌ©¸°¤òÀ¸À®¤·¤¿¤ê¡¢\-genkeypair¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¸°¥Ú¥¢(¸ø³«¸°¤ÈÈëÌ©¸°)¤òÀ¸À®¤·¤¿¤ê¡¢\-importcert¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¾ÚÌÀ½ñ¤Þ¤¿¤Ï¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ò¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤Î¥ê¥¹¥È¤ËÄɲ乤ë¤Ê¤É¡¢ÆÃÄê¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤ò¥¡¼¥¹¥È¥¢¤ËÄɲ乤ë¾ì¹ç¤Ç¤¹¡£¤³¤ì°Ê¸å¡¢\f3keytool\fP¥³¥Þ¥ó¥É¤Ç¥¨¥ó¥Æ¥£¥Æ¥£¤ò»²¾È¤¹¤ë¾ì¹ç¤Ï¡¢¤³¤Î¤È¤¤Ë»ØÄꤷ¤¿ÊÌ̾¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+¤¿¤È¤¨¤Ð¡¢\f2duke\fP¤È¤¤¤¦ÊÌ̾¤ò»ÈÍѤ·¤Æ¿·¤·¤¤¸ø³«¸°¤ÈÈëÌ©¸°¤Î¥Ú¥¢¤òÀ¸À®¤·¡¢¸ø³«¸°¤ò¼«¸Ê½ð̾¾ÚÌÀ½ñ(¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ò»²¾È)¤Ç¥é¥Ã¥×¤¹¤ë¤È¤·¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ keytool \-genkeypair \-alias duke \-keypass dukekeypasswd -+.fl -+\fP -+.fi -+.LP -+¤³¤³¤Ç¤Ï¡¢½é´ü¥Ñ¥¹¥ï¡¼¥É¤È¤·¤Ædukekeypasswd¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¡£°Ê¸å¡¢ÊÌ̾\f2duke\fP¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿ÈëÌ©¸°¤Ë¥¢¥¯¥»¥¹¤¹¤ë¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ï¡¢¤³¤Î¥Ñ¥¹¥ï¡¼¥É¤¬É¬Íפˤʤê¤Þ¤¹¡£duke¤ÎÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤ò¤¢¤È¤«¤éÊѹ¹¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ keytool \-keypasswd \-alias duke \-keypass dukekeypasswd \-new newpass -+.fl -+\fP -+.fi -+.LP -+¥Ñ¥¹¥ï¡¼¥É¤¬¡¢dukekeypasswd¤«¤énewpass¤ËÊѹ¹¤µ¤ì¤Þ¤¹¡£ -+.LP -+Ãí°Õ: ¥Æ¥¹¥È¤òÌÜŪ¤È¤¹¤ë¾ì¹ç¡¢¤Þ¤¿¤Ï°ÂÁ´¤Ç¤¢¤ë¤³¤È¤¬¤ï¤«¤Ã¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¼Â¹Ô¤¹¤ë¾ì¹ç°Ê³°¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤ä¥¹¥¯¥ê¥×¥È¤Ç¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£É¬Íפʥѥ¹¥ï¡¼¥É¤Î¥ª¥×¥·¥ç¥ó¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.TP 2 -+o -+\f3¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ\fP -+.LP -+\f2java.security\fP¥Ñ¥Ã¥±¡¼¥¸¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë\f2KeyStore\fP¥¯¥é¥¹¤Ï¡¢¥¡¼¥¹¥È¥¢Æâ¤Î¾ðÊó¤Ø¤Î¥¢¥¯¥»¥¹¤ª¤è¤Ó¾ðÊó¤ÎÊѹ¹¤ò¹Ô¤¦¤¿¤á¤Î¡¢ÌÀ³Î¤ËÄêµÁ¤µ¤ì¤¿¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÄ󶡤·¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤Î¸ÇÄê¼ÂÁõ¤È¤·¤Æ¤Ï¡¢¤½¤ì¤¾¤ì¤¬ÆÃÄê¤Î\f2¥¿¥¤¥×\fP¤Î¥¡¼¥¹¥È¥¢¤òÂоݤȤ¹¤ëÊ£¿ô¤Î°Û¤Ê¤ë¼ÂÁõ¤¬Â¸ºß²Äǽ¤Ç¤¹¡£ -+.LP -+¸½ºß¡¢\f3keytool\fP¤È\f3jarsigner\fP¤Î2¤Ä¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥Ä¡¼¥ë¤È¡¢\f3Policy Tool\fP¤È¤¤¤¦Ì¾Á°¤ÎGUI¥Ù¡¼¥¹¤Î¥Ä¡¼¥ë¤¬¡¢¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£\f2KeyStore\fP¤Ïpublic¤È¤·¤Æ»ÈÍѲÄǽ¤Ê¤Î¤Ç¡¢¥æ¡¼¥¶¡¼¤ÏKeyStore¤ò»ÈÍѤ·¤¿Â¾¤Î¥»¥¥å¥ê¥Æ¥£¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤âºîÀ®¤Ç¤¤Þ¤¹¡£ -+.LP -+¥¡¼¥¹¥È¥¢¤Ë¤Ï¡¢Oracle¤¬Ä󶡤¹¤ëÁȹþ¤ß¤Î¥Ç¥Õ¥©¥ë¥È¤Î¼ÂÁõ¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢JKS¤È¤¤¤¦Ì¾Á°¤ÎÆȼ«¤Î¥¡¼¥¹¥È¥¢¡¦¥¿¥¤¥×(·Á¼°)¤òÍøÍѤ¹¤ë¤â¤Î¤Ç¡¢¥¡¼¥¹¥È¥¢¤ò¥Õ¥¡¥¤¥ë¤È¤·¤Æ¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤Î¼ÂÁõ¤Ç¤Ï¡¢¸Ä¡¹¤ÎÈëÌ©¸°¤Ï¸ÄÊ̤Υѥ¹¥ï¡¼¥É¤Ë¤è¤Ã¤ÆÊݸ¤ì¡¢¥¡¼¥¹¥È¥¢Á´ÂΤÎÀ°¹çÀ¤â(ÈëÌ©¸°¤È¤ÏÊ̤Î)¥Ñ¥¹¥ï¡¼¥É¤Ë¤è¤Ã¤ÆÊݸ¤ì¤Þ¤¹¡£ -+.LP -+¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤Ï¡¢¥×¥í¥Ð¥¤¥À¥Ù¡¼¥¹¤Ç¤¹¡£¶ñÂÎŪ¤Ë¤Ï¡¢\f2KeyStore\fP¤Ë¤è¤Ã¤ÆÄ󶡤µ¤ì¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¬¡Ö¥µ¡¼¥Ó¥¹¡¦¥×¥í¥Ð¥¤¥À¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡×(SPI)¤Ë´ð¤Å¤¤¤Æ¼ÂÁõ¤µ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢Âбþ¤¹¤ë\f2KeystoreSpi\fPÃê¾Ý¥¯¥é¥¹(¤³¤ì¤â\f2java.security\fP¥Ñ¥Ã¥±¡¼¥¸¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹)¤¬¤¢¤ê¡¢¤³¤Î¥¯¥é¥¹¤¬¡¢¡Ö¥×¥í¥Ð¥¤¥À¡×¤¬¼ÂÁõ¤¹¤ëɬÍפΤ¢¤ëService Provider Interface¤Î¥á¥½¥Ã¥É¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£(¤³¤³¤Ç¡¢¡Ö¥×¥í¥Ð¥¤¥À¡×¤È¤Ï¡¢Java Security API¤Ë¤è¤Ã¤Æ¥¢¥¯¥»¥¹²Äǽ¤Ê¥µ¡¼¥Ó¥¹¤Î¥µ¥Ö¥»¥Ã¥È¤ËÂФ·¡¢¤½¤Î¸ÇÄê¼ÂÁõ¤òÄ󶡤¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¤Î½¸¹ç¤Î¤³¤È¤Ç¤¹¡£)¤·¤¿¤¬¤Ã¤Æ¡¢¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤òÄ󶡤¹¤ë¤Ë¤Ï¡¢ -+.na -+\f2Java°Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ãÍÑ¥×¥í¥Ð¥¤¥À¤Î¼ÂÁõÊýË¡\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/HowToImplAProvider.html¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢¥¯¥é¥¤¥¢¥ó¥È¤¬¡Ö¥×¥í¥Ð¥¤¥À¡×¤ò¼ÂÁõ¤·¡¢KeystoreSpi¥µ¥Ö¥¯¥é¥¹¤Î¼ÂÁõ¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢\f2KeyStore\fP¥¯¥é¥¹¤¬Ä󶡤¹¤ëgetInstance¥Õ¥¡¥¯¥È¥ê¡¦¥á¥½¥Ã¥É¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢ÍÍ¡¹¤Ê¥×¥í¥Ð¥¤¥À¤«¤é°Û¤Ê¤ë\f2¥¿¥¤¥×\fP¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤òÁªÂò¤Ç¤¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤Ï¡¢¥¡¼¥¹¥È¥¢¾ðÊó¤Î³ÊǼ·Á¼°¤È¥Ç¡¼¥¿·Á¼°¤òÄêµÁ¤¹¤ë¤È¤È¤â¤Ë¡¢¥¡¼¥¹¥È¥¢Æâ¤ÎÈó¸ø³«/ÈëÌ©¸°¤È¥¡¼¥¹¥È¥¢¼«ÂΤÎÀ°¹çÀ¤òÊݸ¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤ë¥¢¥ë¥´¥ê¥º¥à¤òÄêµÁ¤·¤Þ¤¹¡£°Û¤Ê¤ë¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤Ë¤Ï¡¢¸ß´¹À¤Ï¤¢¤ê¤Þ¤»¤ó¡£ -+.LP -+\f3keytool\fP¤Ï¡¢Ç¤°Õ¤Î¥Õ¥¡¥¤¥ë¥Ù¡¼¥¹¤Î¥¡¼¥¹¥È¥¢¼ÂÁõ¤ÇÆ°ºî¤·¤Þ¤¹¡£(¤³¤ì¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤éÅϤµ¤ì¤¿¥¡¼¥¹¥È¥¢¤Î¾ì½ê¤ò¥Õ¥¡¥¤¥ë̾¤È¤·¤Æ°·¤¤¡¢¤³¤ì¤òFileInputStream¤ËÊÑ´¹¤·¤Æ¡¢FileInputStream¤«¤é¥¡¼¥¹¥È¥¢¤Î¾ðÊó¤ò¥í¡¼¥É¤·¤Þ¤¹¡£)°ìÊý¡¢\f3jarsigner\fP¥Ä¡¼¥ë¤È\f3policytool\fP¥Ä¡¼¥ë¤Ï¡¢URL¤Ç»ØÄê²Äǽ¤ÊǤ°Õ¤Î¾ì½ê¤«¤é¥¡¼¥¹¥È¥¢¤òÆɤ߹þ¤à¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+\f3keytool\fP¤È\f3jarsigner\fP¤Î¾ì¹ç¡¢\f2\-storetype\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤ò»ØÄê¤Ç¤¤Þ¤¹¡£\f3Policy Tool\fP¤Î¾ì¹ç¤Ï¡¢¡Ö¥¡¼¥¹¥È¥¢¡×¥á¥Ë¥å¡¼¤Ë¤è¤Ã¤Æ¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+¥æ¡¼¥¶¡¼¤¬¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤òÌÀ¼¨Åª¤Ë»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢Ã±½ã¤Ë¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ë¤Ç»ØÄꤵ¤ì¤¿\f2keystore.type\fP¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ˴ð¤Å¤¤¤Æ¡¢¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤¬ÁªÂò¤µ¤ì¤Þ¤¹¡£¤³¤Î¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ë¤Ï\f2java.security\fP¤È¸Æ¤Ð¤ì¡¢¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Ç¥£¥ì¥¯¥È¥ê\f2java.home\fP/lib/securityÆâ¤Ë¸ºß¤·¤Æ¤¤¤Þ¤¹¡£¤³¤³¤Ç¡¢\f2java.home\fP¤Ï¼Â¹Ô»þ´Ä¶¤Î¥Ç¥£¥ì¥¯¥È¥ê(SDK¤Î\f2jre\fP¥Ç¥£¥ì¥¯¥È¥ê¤Þ¤¿¤ÏJava 2 Runtime Environment¤Î¥È¥Ã¥×¥ì¥Ù¥ë¡¦¥Ç¥£¥ì¥¯¥È¥ê)¤Ç¤¹¡£ -+.LP -+³Æ¥Ä¡¼¥ë¤Ï¡¢\f2keystore.type\fP¤ÎÃͤò¼èÆÀ¤·¡¢¤³¤ÎÃͤǻØÄꤵ¤ì¤¿¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¥×¥í¥Ð¥¤¥À¤¬¸«¤Ä¤«¤ë¤Þ¤Ç¡¢¸½ºß¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥×¥í¥Ð¥¤¥À¤òÄ´¤Ù¤Þ¤¹¡£ÌÜŪ¤Î¥×¥í¥Ð¥¤¥À¤¬¸«¤Ä¤«¤ë¤È¡¢¤½¤Î¥×¥í¥Ð¥¤¥À¤«¤é¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+\f2KeyStore\fP¥¯¥é¥¹¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ëstatic¥á¥½¥Ã¥É\f2getDefaultType\fP¤ò»ÈÍѤ¹¤ë¤È¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ä¥¢¥×¥ì¥Ã¥È¤«¤é\f2keystore.type\fP¥×¥í¥Ñ¥Æ¥£¤ÎÃͤò¼èÆÀ¤Ç¤¤Þ¤¹¡£¼¡¤Î¥³¡¼¥É¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥¡¼¥¹¥È¥¢¡¦¥¿¥¤¥×(\f2keystore.type\fP¥×¥í¥Ñ¥Æ¥£¤Ç»ØÄꤵ¤ì¤¿¥¿¥¤¥×)¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); -+.fl -+\fP -+.fi -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Î¥¡¼¥¹¥È¥¢¡¦¥¿¥¤¥×¤ÏJKS(Oracle¤¬Ä󶡤¹¤ëÆȼ«¤Î¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ)¤Ç¤¹¡£¤³¤ì¤Ï¡¢¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ëÆâ¤Î¼¡¤Î¹Ô¤Ë¤è¤Ã¤Æ»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ keystore.type=jks -+.fl -+\fP -+.fi -+.LP -+³Æ¥Ä¡¼¥ë¤Ç¥Ç¥Õ¥©¥ë¥È°Ê³°¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢¾å¤Î¹Ô¤òÊѹ¹¤·¤ÆÊ̤Υ¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+¤¿¤È¤¨¤Ð¡¢pkcs12¤È¸Æ¤Ð¤ì¤ë¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤òÄ󶡤·¤Æ¤¤¤ë¥×¥í¥Ð¥¤¥À¡¦¥Ñ¥Ã¥±¡¼¥¸¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢¾å¤Î¹Ô¤ò¼¡¤Î¤è¤¦¤ËÊѹ¹¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ keystore.type=pkcs12 -+.fl -+\fP -+.fi -+.LP -+Ãí°Õ: ¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤Î»ØÄê¤Ç¤Ï¡¢Âçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢JKS¤Èjks¤ÏƱ¤¸¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+¾ÚÌÀ½ñ -+.LP -+\f3¾ÚÌÀ½ñ\fP(\f3¸ø³«¸°¾ÚÌÀ½ñ\fP¤È¤â¸Æ¤Ð¤ì¤Þ¤¹)¤È¤Ï¡¢¤¢¤ë¥¨¥ó¥Æ¥£¥Æ¥£(\f2ȯ¹Ô¼Ô\fP)¤«¤é¤Î¥Ç¥¸¥¿¥ë½ð̾ÉÕ¤¤Îʸ½ñ¤Î¤³¤È¤Ç¤¹¡£¾ÚÌÀ½ñ¤Ë¤Ï¡¢Â¾¤Î¤¢¤ë¥¨¥ó¥Æ¥£¥Æ¥£(\f2½ð̾¼Ô\fP)¤Î¸ø³«¸°(¤ª¤è¤Ó¤½¤Î¾¤Î¾ðÊó)¤¬ÆÃÊ̤ÊÃͤò»ý¤Ã¤Æ¤¤¤ë¤³¤È¤¬½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f3¾ÚÌÀ½ñ¤ÎÍѸì\fP -+.RS 3 -+.TP 3 -+¸ø³«¸° -+.LP -+¸ø³«¸°¤Ï¡¢ÆÃÄê¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¿ô¤Ç¤¹¡£¸ø³«¸°¤Ï¡¢³ºÅö¤¹¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤È¤Î´Ö¤Ë¿®Íê¤Ç¤¤ë´Ø·¸¤ò»ý¤ÄɬÍפ¬¤¢¤ë¤¹¤Ù¤Æ¤Î¿Í¤ËÂФ·¤Æ¸ø³«¤¹¤ë¤³¤È¤ò°Õ¿Þ¤·¤¿¤â¤Î¤Ç¤¹¡£¸ø³«¸°¤Ï¡¢½ð̾¤ò¸¡¾Ú¤¹¤ë¤Î¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+¥Ç¥¸¥¿¥ë½ð̾ -+.LP -+¥Ç¡¼¥¿¤¬¡Ö\f2¥Ç¥¸¥¿¥ë½ð̾\fP¡×¤µ¤ì¤ë¤È¡¢¤½¤Î¥Ç¡¼¥¿¤Ï¡¢¥¨¥ó¥Æ¥£¥Æ¥£¤Î¡Ö¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¡×¤È¡¢¤½¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤¬¥Ç¡¼¥¿¤ÎÆâÍƤˤĤ¤¤ÆÃΤäƤ¤¤ë¤³¤È¤ò¾ÚÌÀ½ñ¤¹¤ë½ð̾¤È¤È¤â¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£¥¨¥ó¥Æ¥£¥Æ¥£¤ÎÈëÌ©¸°¤ò»ÈÍѤ·¤Æ¥Ç¡¼¥¿¤Ë½ð̾¤òÉÕ¤±¤ë¤È¡¢¥Ç¡¼¥¿¤Îµ¶Â¤¤ÏÉÔ²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£ -+.LP -+¥¨¥ó¥Æ¥£¥Æ¥£¤òÆÃÄꤹ¤ë¤¿¤á¤Î´ûÃΤÎÊýË¡¤Ç¤¹¡£¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ¤Ï¡¢¸ø³«¸°¤ò¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¤Ë¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£¸ø³«¸°¤Î¾¤Ë¤â¡¢Unix UID¤äÅŻҥ᡼¥ë¡¦¥¢¥É¥ì¥¹¡¢X.509¼±ÊÌ̾¤Ê¤É¡¢ÍÍ¡¹¤Ê¤â¤Î¤ò¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¤È¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+½ð̾ -+.LP -+½ð̾¤Ï¡¢¤Ê¤ó¤é¤«¤Î¥Ç¡¼¥¿¤ò´ð¤Ë¥¨¥ó¥Æ¥£¥Æ¥£(\f2½ð̾¼Ô\fP¡£¾ÚÌÀ½ñ¤Ë´Ø¤·¤Æ¤Ï\f2ȯ¹Ô¼Ô\fP¤È¤â¸Æ¤Ð¤ì¤Þ¤¹)¤ÎÈëÌ©¸°¤ò»ÈÍѤ·¤Æ·×»»¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+ÈëÌ©¸° -+.LP -+ÈëÌ©¸°¤ÏÆÃÄê¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Î¤ß¤¬ÃΤäƤ¤¤ë¿ô¤Î¤³¤È¤Ç¡¢¤³¤Î¿ô¤Î¤³¤È¤ò¡¢¤½¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤ÎÈëÌ©¸°¤È¤¤¤¤¤Þ¤¹¡£ÈëÌ©¸°¤Ï¡¢Â¾¤ËÃΤé¤ì¤Ê¤¤¤è¤¦¤ËÈëÌ©¤Ë¤·¤Æ¤ª¤¯¤³¤È¤¬Á°Äó¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ÈëÌ©¸°¤È¸ø³«¸°¤Ï¡¢¤¹¤Ù¤Æ¤Î¸ø³«¸°°Å¹æ²½¥·¥¹¥Æ¥à¤ÇÂФˤʤäƸºß¤·¤Æ¤¤¤Þ¤¹¡£DSA¤Ê¤É¤Îŵ·¿Åª¤Ê¸ø³«¸°°Å¹æ²½¥·¥¹¥Æ¥à¤Î¾ì¹ç¡¢1¤Ä¤ÎÈëÌ©¸°¤ÏÀµ³Î¤Ë1¤Ä¤Î¸ø³«¸°¤ËÂбþ¤·¤Þ¤¹¡£ÈëÌ©¸°¤Ï¡¢½ð̾¤ò·×»»¤¹¤ë¤Î¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.TP 3 -+¥¨¥ó¥Æ¥£¥Æ¥£ -+.LP -+¥¨¥ó¥Æ¥£¥Æ¥£¤Ï¡¢¿Í¡¢ÁÈ¿¥¡¢¥×¥í¥°¥é¥à¡¢¥³¥ó¥Ô¥å¡¼¥¿¡¢´ë¶È¡¢¶ä¹Ô¤Ê¤É¡¢°ìÄê¤ÎÅٹ礤¤Ç¿®Íê¤ÎÂоݤȤʤëÍÍ¡¹¤Ê¤â¤Î¤ò»Ø¤·¤Þ¤¹¡£ -+.RE -+.LP -+¸ø³«¸°°Å¹æ²½¤Ç¤Ï¡¢¤½¤ÎÀ¼Á¾å¡¢¥æ¡¼¥¶¡¼¤Î¸ø³«¸°¤Ë¥¢¥¯¥»¥¹¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Â絬ÌϤʥͥåȥ¥¯´Ä¶¤Ç¤Ï¡¢¸ß¤¤¤ËÄÌ¿®¤·¤Æ¤¤¤ë¥¨¥ó¥Æ¥£¥Æ¥£´Ö¤Ç°ÊÁ°¤Î´Ø·¸¤¬°ú³¤³ÎΩ¤µ¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤¿¤ê¡¢»ÈÍѤµ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¸ø³«¸°¤ò¼ý¤á¤¿¿®Íê¤Ç¤¤ë¥ê¥Ý¥¸¥È¥ê¤¬Â¸ºß¤¹¤ë¤È²¾Äꤷ¤¿¤ê¤¹¤ë¤³¤È¤ÏÉÔ²Äǽ¤Ç¤¹¡£¤³¤Î¤è¤¦¤Ê¸ø³«¸°¤ÎÇÛÉۤ˴ؤ¹¤ëÌäÂê¤ò²ò·è¤¹¤ë¤¿¤á¤Ë¾ÚÌÀ½ñ¤¬¹Í°Æ¤µ¤ì¤Þ¤·¤¿¡£¸½ºß¤Ç¤Ï¡¢\f2¾ÚÌÀ½ñȯ¹Ô¶É\fP(CA)¤¬¿®Íê¤Ç¤¤ëÂè»°¼Ô¤È¤·¤Æµ¡Ç½¤·¤Þ¤¹¡£CA¤Ï¡¢Â¾¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Î¾ÚÌÀ½ñ¤Ë½ð̾¤¹¤ë(ȯ¹Ô¤¹¤ë)¹Ô°Ù¤ò¡¢¿®Íꤷ¤ÆǤ¤µ¤ì¤Æ¤¤¤ë¥¨¥ó¥Æ¥£¥Æ¥£(´ë¶È¤Ê¤É)¤Ç¤¹¡£CA¤ÏˡΧ¾å¤Î·ÀÌó¤Ë¹´Â«¤µ¤ì¤ë¤Î¤Ç¡¢Í¸ú¤«¤Ä¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤Î¤ß¤òºîÀ®¤¹¤ë¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£ -+.na -+\f2VeriSign\fP @ -+.fi -+http://www.verisign.com/¡¢ -+.na -+\f2Thawte\fP @ -+.fi -+http://www.thawte.com/¡¢ -+.na -+\f2Entrust\fP @ -+.fi -+http://www.entrust.com/¤ò¤Ï¤¸¤á¡¢Â¿¤¯¤Î¸øŪ¤Ê¾ÚÌÀ½ñȯ¹Ô¶É¤¬Â¸ºß¤·¤Þ¤¹¡£Microsoft¤Îǧ¾Ú¥µ¡¼¥Ð¡¼¡¢Entrust¤ÎCAÀ½Éʤʤɤò½ê°ÁÈ¿¥Æâ¤ÇÍøÍѤ¹¤ì¤Ð¡¢Æȼ«¤Î¾ÚÌÀ½ñȯ¹Ô¶É¤ò±¿±Ä¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ -+.LP -+\f3keytool\fP¤ò»ÈÍѤ¹¤ë¤È¡¢¾ÚÌÀ½ñ¤Îɽ¼¨¡¢¥¤¥ó¥Ý¡¼¥È¤ª¤è¤Ó¥¨¥¯¥¹¥Ý¡¼¥È¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤Þ¤¿¡¢¼«¸Ê½ð̾¾ÚÌÀ½ñ¤òÀ¸À®¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.LP -+¸½ºß¡¢\f3keytool\fP¤ÏX.509¾ÚÌÀ½ñ¤òÂоݤˤ·¤Æ¤¤¤Þ¤¹¡£ -+.TP 2 -+o -+\f3X.509¾ÚÌÀ½ñ\fP -+.LP -+X.509µ¬³Ê¤Ç¤Ï¡¢¾ÚÌÀ½ñ¤Ë´Þ¤á¤ë¾ðÊó¤¬ÄêµÁ¤µ¤ì¤Æ¤ª¤ê¡¢¤³¤Î¾ðÊó¤ò¾ÚÌÀ½ñ¤Ë½ñ¤¹þ¤àÊýË¡(¥Ç¡¼¥¿·Á¼°)¤Ë¤Ä¤¤¤Æ¤âµ½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¾ÚÌÀ½ñ¤Î¤¹¤Ù¤Æ¤Î¥Ç¡¼¥¿¤Ï¡¢ASN.1/DER¤È¸Æ¤Ð¤ì¤ë2¤Ä¤Î´ØÏ¢µ¬³Ê¤ò»ÈÍѤ·¤ÆÉä¹æ²½¤µ¤ì¤Þ¤¹¡£\f2Abstract Syntax Notation 1\fP¤Ï¥Ç¡¼¥¿¤Ë¤Ä¤¤¤Æµ½Ò¤·¤Æ¤¤¤Þ¤¹¡£\f2Definite Encoding Rules\fP¤Ï¡¢¥Ç¡¼¥¿¤ÎÊݸ¤ª¤è¤ÓžÁ÷¤ÎÊýË¡¤Ë¤Ä¤¤¤Æµ½Ò¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+¤¹¤Ù¤Æ¤ÎX.509¾ÚÌÀ½ñ¤Ï¡¢½ð̾¤Î¾¤Ë¼¡¤Î¥Ç¡¼¥¿¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+¥Ð¡¼¥¸¥ç¥ó -+.LP -+¾ÚÌÀ½ñ¤ËŬÍѤµ¤ì¤ëX.509µ¬³Ê¤Î¥Ð¡¼¥¸¥ç¥ó¤òÆÃÄꤷ¤Þ¤¹¡£¾ÚÌÀ½ñ¤Ë»ØÄê¤Ç¤¤ë¾ðÊó¤Ï¡¢¥Ð¡¼¥¸¥ç¥ó¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤Þ¤Ç¤Ë¡¢3¤Ä¤Î¥Ð¡¼¥¸¥ç¥ó¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\f3keytool\fP¤Ç¤Ï¡¢v1¡¢v2¤ª¤è¤Óv3¤Î¾ÚÌÀ½ñ¤Î¥¤¥ó¥Ý¡¼¥È¤È¥¨¥¯¥¹¥Ý¡¼¥È¤¬²Äǽ¤Ç¤¹¡£v3¤Î¾ÚÌÀ½ñ¤òÀ¸À®¤·¤Þ¤¹¡£ -+.LP -+\f2X.509 Version 1\fP¤Ï¡¢1988ǯ¤«¤éÍøÍѤµ¤ì¤Æ¹¤¯ÉáµÚ¤·¤Æ¤ª¤ê¡¢ºÇ¤â°ìÈÌŪ¤Ç¤¹¡£ -+.LP -+\f2X.509 Version 2\fP¤Ç¤Ï¡¢Subject¤äȯ¹Ô¼Ô¤Î̾Á°¤ò¤¢¤È¤ÇºÆÍøÍѤǤ¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¡¢Subject¤Èȯ¹Ô¼Ô¤Î°ì°Õ¼±Ê̻ҤγµÇ°¤¬Æ³Æþ¤µ¤ì¤Þ¤·¤¿¡£¤Û¤È¤ó¤É¤Î¾ÚÌÀ½ñ¥×¥í¥Õ¥¡¥¤¥ëʸ½ñ¤Ç¤Ï¡¢Ì¾Á°¤òºÆ»ÈÍѤ·¤Ê¤¤¤³¤È¤È¡¢¾ÚÌÀ½ñ¤Ç°ì°Õ¤Î¼±Ê̻Ҥò»ÈÍѤ·¤Ê¤¤¤³¤È¤¬¡¢¶¯¤¯¿ä¾©¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Version 2¤Î¾ÚÌÀ½ñ¤Ï¡¢¹¤¯¤Ï»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ -+.LP -+\f2X.509 Version 3\fP¤ÏºÇ¤â¿·¤·¤¤(1996ǯ)µ¬³Ê¤Ç¡¢¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Î³µÇ°¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Ïï¤Ç¤âÄêµÁ¤¹¤ë¤³¤È¤¬¤Ç¤¡¢¾ÚÌÀ½ñ¤Ë´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¸½ºß»ÈÍѤµ¤ì¤Æ¤¤¤ë°ìÈÌŪ¤Ê¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤È¤·¤Æ¤Ï¡¢\f2KeyUsage\fP(¡Ö½ð̾ÀìÍѡפʤɡ¢¸°¤Î»ÈÍѤòÆÃÄê¤ÎÌÜŪ¤ËÀ©¸Â¤¹¤ë)¡¢\f2AlternativeNames\fP(DNS̾¡¢ÅŻҥ᡼¥ë¡¦¥¢¥É¥ì¥¹¡¢IP¥¢¥É¥ì¥¹¤Ê¤É¡¢Â¾¤Î¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¤ò¸ø³«¸°¤Ë´ØÏ¢ÉÕ¤±¤ë¤³¤È¤¬¤Ç¤¤ë)¤Ê¤É¤¬¤¢¤ê¤Þ¤¹¡£¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Ë¤Ï¡¢\f2critical\fP¤È¤¤¤¦¥Þ¡¼¥¯¤òÉÕ¤±¤Æ¡¢¤½¤Î¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Î¥Á¥§¥Ã¥¯¤È»ÈÍѤòµÁ̳¤Å¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢critical¤È¥Þ¡¼¥¯¤µ¤ì¡¢KeyCertSign¤¬ÀßÄꤵ¤ì¤¿KeyUsage¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤¬¾ÚÌÀ½ñ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¤³¤Î¾ÚÌÀ½ñ¤òSSLÄÌ¿®Ãæ¤ËÄ󼨤¹¤ë¤È¡¢¾ÚÌÀ½ñ¤¬µñÈݤµ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢¾ÚÌÀ½ñ¤Î¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¡¢´ØÏ¢¤¹¤ëÈëÌ©¸°¤¬¾ÚÌÀ½ñ¤Î½ð̾ÀìÍѤȤ·¤Æ»ØÄꤵ¤ì¤Æ¤ª¤ê¡¢SSL¤Ç¤Ï»ÈÍѤǤ¤Ê¤¤¤¿¤á¤Ç¤¹¡£ -+.TP 3 -+¥·¥ê¥¢¥ëÈÖ¹æ -+.LP -+¾ÚÌÀ½ñ¤òºîÀ®¤·¤¿¥¨¥ó¥Æ¥£¥Æ¥£¤Ï¡¢¤½¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤¬È¯¹Ô¤¹¤ë¾¤Î¾ÚÌÀ½ñ¤È¶èÊ̤¹¤ë¤¿¤á¤Ë¡¢¾ÚÌÀ½ñ¤Ë¥·¥ê¥¢¥ëÈÖ¹æ¤ò³ä¤êÅö¤Æ¤Þ¤¹¡£¤³¤Î¾ðÊó¤Ï¡¢ÍÍ¡¹¤ÊÊýË¡¤Ç»ÈÍѤµ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¾ÚÌÀ½ñ¤¬¼è¤ê¾Ã¤µ¤ì¤ë¤È¡¢¥·¥ê¥¢¥ëÈֹ椬¾ÚÌÀ½ñ¤Î¼è¾Ã¤·¥ê¥¹¥È(CRL)¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+½ð̾¥¢¥ë¥´¥ê¥º¥à¼±ÊÌ»Ò -+.LP -+¾ÚÌÀ½ñ¤Ë½ð̾¤òÉÕ¤±¤ë¤È¤¤ËCA¤¬»ÈÍѤ·¤¿¥¢¥ë¥´¥ê¥º¥à¤òÆÃÄꤷ¤Þ¤¹¡£ -+.TP 3 -+ȯ¹Ô¼Ô̾ -+.LP -+¾ÚÌÀ½ñ¤Ë½ð̾¤òÉÕ¤±¤¿¥¨¥ó¥Æ¥£¥Æ¥£¤ÎX.500¼±ÊÌ̾¤Ç¤¹¡£¥¨¥ó¥Æ¥£¥Æ¥£¤Ï¡¢Ä̾ï¤ÏCA¤Ç¤¹¡£¤³¤Î¾ÚÌÀ½ñ¤ò»ÈÍѤ¹¤ë¤³¤È¤Ï¡¢¾ÚÌÀ½ñ¤Ë½ð̾¤òÉÕ¤±¤¿¥¨¥ó¥Æ¥£¥Æ¥£¤ò¿®Íꤹ¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£\f2¥ë¡¼¥È¤Ä¤Þ¤ê¥È¥Ã¥×¥ì¥Ù¥ë\fP¤ÎCA¤Î¾ÚÌÀ½ñ¤Ê¤É¡¢¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ïȯ¹Ô¼Ô¤¬¼«¿È¤Î¾ÚÌÀ½ñ¤Ë½ð̾¤òÉÕ¤±¤ë¤³¤È¤¬¤¢¤ëÅÀ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+͸ú´ü´Ö -+.LP -+³Æ¾ÚÌÀ½ñ¤Ï¡¢¸Â¤é¤ì¤¿´ü´Ö¤Î¤ß͸ú¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î´ü´Ö¤Ï³«»Ï¤ÎÆü»þ¤È½ªÎ»¤ÎÆü»þ¤Ë¤è¤Ã¤Æ»ØÄꤵ¤ì¡¢¿ôÉäÎû¤¤´ü´Ö¤«¤é100ǯ¤È¤¤¤¦Ä¹´ü¤Ë¤ï¤¿¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ÁªÂò¤µ¤ì¤ë͸ú´ü´Ö¤Ï¡¢¾ÚÌÀ½ñ¤Ø¤Î½ð̾¤Ë»ÈÍѤµ¤ì¤ëÈëÌ©¸°¤Î¶¯ÅÙ¤ä¾ÚÌÀ½ñ¤Ë»Ùʧ¤¦¶â³Û¤Ê¤É¡¢ÍÍ¡¹¤ÊÍ×°ø¤Ç°Û¤Ê¤ê¤Þ¤¹¡£Í¸ú´ü´Ö¤Ï¡¢´ØÏ¢¤¹¤ëÈëÌ©¸°¤¬Â»¤Ê¤ï¤ì¤Ê¤¤¾ì¹ç¤Ë¡¢¥¨¥ó¥Æ¥£¥Æ¥£¤¬¸ø³«¸°¤ò¿®Íê¤Ç¤¤ë¤È´üÂÔ¤µ¤ì¤ë´ü´Ö¤Ç¤¹¡£ -+.TP 3 -+Subject̾ -+.LP -+¾ÚÌÀ½ñ¤Ç¸ø³«¸°¤¬¼±Ê̤µ¤ì¤Æ¤¤¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤Î̾Á°¤Ç¤¹¡£¤³¤Î̾Á°¤ÏX.500ɸ½à¤ò»ÈÍѤ¹¤ë¤Î¤Ç¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥ÈÁ´ÂΤǰì°Õ¤Ê¤â¤Î¤ÈÁÛÄꤵ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥¨¥ó¥Æ¥£¥Æ¥£¤ÎX.500¼±ÊÌ̾(DN)¤Ç¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ CN=Java Duke, OU=Java Software Division, O=Oracle Corporation, C=US -+.fl -+\fP -+.fi -+.LP -+¤³¤ì¤é¤Ï¤½¤ì¤¾¤ì¼çÂΤÎÄ̾Ρ¢ÁÈ¿¥Ã±°Ì¡¢ÁÈ¿¥¡¢¹ñ¤òɽ¤·¤Þ¤¹¡£ -+.TP 3 -+Subject¤Î¸ø³«¸°¾ðÊó -+.LP -+̾Á°¤òÉÕ¤±¤é¤ì¤¿¥¨¥ó¥Æ¥£¥Æ¥£¤Î¸ø³«¸°¤È¥¢¥ë¥´¥ê¥º¥à¼±Ê̻ҤǤ¹¡£¥¢¥ë¥´¥ê¥º¥à¼±Ê̻ҤǤϡ¢¸ø³«¸°¤ËÂФ·¤Æ»ÈÍѤµ¤ì¤Æ¤¤¤ë¸ø³«¸°°Å¹æ²½¥·¥¹¥Æ¥à¤ª¤è¤Ó´ØÏ¢¤¹¤ë¸°¥Ñ¥é¥á¡¼¥¿¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.RE -+.TP 2 -+o -+\f3¾ÚÌÀ½ñ¥Á¥§¡¼¥ó\fP -+.LP -+\f3keytool\fP¤Ç¤Ï¡¢ÈëÌ©¸°¤ª¤è¤Ó´ØÏ¢¤¹¤ë¾ÚÌÀ½ñ¡Ö¥Á¥§¡¼¥ó¡×¤ò´Þ¤à¥¡¼¥¹¥È¥¢¤Î¡Ö¸°¡×¥¨¥ó¥È¥ê¤òºîÀ®¤·¡¢´ÉÍý¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ê¥¨¥ó¥È¥ê¤Ç¤Ï¡¢ÈëÌ©¸°¤ËÂбþ¤¹¤ë¸ø³«¸°¤Ï¡¢¥Á¥§¡¼¥ó¤ÎºÇ½é¤Î¾ÚÌÀ½ñ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+¸°¤ò½é¤á¤ÆºîÀ®¤¹¤ë¤È(\-genkeypair¥³¥Þ¥ó¥É¤ò»²¾È)¡¢¡Ö\f2¼«¸Ê½ð̾¾ÚÌÀ½ñ\fP¡×¤È¤¤¤¦1¤Ä¤ÎÍ×ÁǤΤߤò´Þ¤à¥Á¥§¡¼¥ó¤¬³«»Ï¤µ¤ì¤Þ¤¹¡£¼«¸Ê½ð̾¾ÚÌÀ½ñ¤Ï¡¢È¯¹Ô¼Ô(½ð̾¼Ô)¤¬¼çÂÎ(¾ÚÌÀ½ñ¤Çǧ¾Ú¤µ¤ì¤Æ¤¤¤ë¸ø³«¸°¤Î»ý¤Á¼ç)¤ÈƱ¤¸¤Ç¤¢¤ë¾ÚÌÀ½ñ¤Î¤³¤È¤Ç¤¹¡£\f2\-genkeypair\fP¥³¥Þ¥ó¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¿·¤·¤¤¸ø³«¸°¤ÈÈëÌ©¸°¤Î¥Ú¥¢¤òºîÀ®¤¹¤ë¤È¡¢¸ø³«¸°¤Ï¾ï¤Ë¼«¸Ê½ð̾¾ÚÌÀ½ñ¤Ç¥é¥Ã¥×¤µ¤ì¤Þ¤¹¡£ -+.LP -+¤³¤Î¸å¡¢¾ÚÌÀ½ñ½ð̾¥ê¥¯¥¨¥¹¥È(CSR)¤¬À¸À®¤µ¤ì¤Æ(\-certreq¥³¥Þ¥ó¥É¤ò»²¾È)¡¢CSR¤¬¾ÚÌÀ½ñȯ¹Ô¶É(CA)¤ËÁ÷¿®¤µ¤ì¤ë¤È¡¢CA¤«¤é¤Î¥ì¥¹¥Ý¥ó¥¹¤¬¥¤¥ó¥Ý¡¼¥È¤µ¤ì(\-importcert¥³¥Þ¥ó¥É¤ò»²¾È)¡¢¸µ¤Î¼«¸Ê½ð̾¾ÚÌÀ½ñ¤Ï¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Ë¤è¤Ã¤ÆÃÖ¤´¹¤¨¤é¤ì¤Þ¤¹¡£¥Á¥§¡¼¥ó¤ÎºÇ¸å¤Ë¤¢¤ë¤Î¤Ï¡¢Subject¤Î¸ø³«¸°¤òǧ¾Ú¤·¤¿CA¤¬È¯¹Ô¤·¤¿¾ÚÌÀ½ñ(±þÅú)¤Ç¤¹¡£¥Á¥§¡¼¥óÆâ¤Î¤½¤ÎÁ°¤Î¾ÚÌÀ½ñ¤Ï¡¢\f2CA\fP¤Î¸ø³«¸°¤òǧ¾Ú¤¹¤ë¾ÚÌÀ½ñ¤Ç¤¹¡£ -+.LP -+CA¤Î¸ø³«¸°¤òǧ¾Ú¤¹¤ë¾ÚÌÀ½ñ¤Ï¡¢Â¿¤¯¤Î¾ì¹ç¡¢¼«¸Ê½ð̾¾ÚÌÀ½ñ(¤Ä¤Þ¤êCA¤¬¼«¿È¤Î¸ø³«¸°¤òǧ¾Ú¤·¤¿¾ÚÌÀ½ñ)¤Ç¤¢¤ê¡¢¤³¤ì¤Ï¥Á¥§¡¼¥ó¤ÎºÇ½é¤Î¾ÚÌÀ½ñ¤Ë¤Ê¤ê¤Þ¤¹¡£¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¡¢CA¤¬¾ÚÌÀ½ñ¤Î¥Á¥§¡¼¥ó¤òÊÖ¤¹¤³¤È¤â¤¢¤ê¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢¥Á¥§¡¼¥óÆâ¤ÎºÇ¸å¤Î¾ÚÌÀ½ñ(CA¤Ë¤è¤Ã¤Æ½ð̾¤µ¤ì¡¢¸°¥¨¥ó¥È¥ê¤Î¸ø³«¸°¤òǧ¾Ú¤¹¤ë¾ÚÌÀ½ñ)¤ËÊѤï¤ê¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¥Á¥§¡¼¥óÆâ¤Î¤½¤ÎÁ°¤Î¾ÚÌÀ½ñ¤Ï¡¢CSR¤ÎÁ÷¿®Àè¤ÎCA¤È¤Ï\f2Ê̤Î\fPCA¤Ë¤è¤Ã¤Æ½ð̾¤µ¤ì¡¢CSR¤ÎÁ÷¿®Àè¤ÎCA¤Î¸ø³«¸°¤òǧ¾Ú¤¹¤ë¾ÚÌÀ½ñ¤Ë¤Ê¤ê¤Þ¤¹¡£¤µ¤é¤Ë¡¢¥Á¥§¡¼¥óÆâ¤Î¤½¤ÎÁ°¤Î¾ÚÌÀ½ñ¤Ï¡¢¼¡¤ÎCA¤Î¸°¤òǧ¾Ú¤¹¤ë¾ÚÌÀ½ñ¤Ë¤Ê¤ê¤Þ¤¹¡£°Ê²¼Æ±Íͤˡ¢¼«¸Ê½ð̾¤µ¤ì¤¿¡Ö¥ë¡¼¥È¡×¾ÚÌÀ½ñ¤Ë㤹¤ë¤Þ¤Ç¥Á¥§¡¼¥ó¤¬Â³¤¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥Á¥§¡¼¥óÆâ¤Î(ºÇ½é¤Î¾ÚÌÀ½ñ°Ê¸å¤Î)³Æ¾ÚÌÀ½ñ¤Ç¤Ï¡¢¥Á¥§¡¼¥óÆâ¤Î¼¡¤Î¾ÚÌÀ½ñ¤Î½ð̾¼Ô¤Î¸ø³«¸°¤¬Ç§¾Ú¤µ¤ì¤Æ¤¤¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+¿¤¯¤ÎCA¤Ï¡¢¥Á¥§¡¼¥ó¤ò¥µ¥Ý¡¼¥È¤»¤º¤Ëȯ¹ÔºÑ¤ß¤Î¾ÚÌÀ½ñ¤Î¤ß¤òÊÖ¤·¤Þ¤¹¡£Æäˡ¢Ãæ´Ö¤ÎCA¤¬Â¸ºß¤·¤Ê¤¤¥Õ¥é¥Ã¥È¤Ê³¬Áع½Â¤¤Î¾ì¹ç¤Ï¡¢¤½¤Î·¹¸þ¤¬¸²Ãø¤Ç¤¹¡£¤³¤Î¤è¤¦¤Ê¾ì¹ç¤Ï¡¢¥¡¼¥¹¥È¥¢¤Ë¤¹¤Ç¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¾ðÊ󤫤顢¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤ò³ÎΩ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+Ê̤αþÅú·Á¼°(PKCS#7¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë·Á¼°)¤Ç¤â¡¢È¯¹ÔºÑ¤ß¾ÚÌÀ½ñ¤Ë²Ã¤¨¡¢¾ÚÌÀ½ñ¥Á¥§¡¼¥ó¤Î¥µ¥Ý¡¼¥È¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£\f3keytool\fP¤Ç¤Ï¡¢¤É¤Á¤é¤Î±þÅú·Á¼°¤â°·¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+¥È¥Ã¥×¥ì¥Ù¥ë(¥ë¡¼¥È)CA¤Î¾ÚÌÀ½ñ¤Ï¡¢¼«¸Ê½ð̾¾ÚÌÀ½ñ¤Ç¤¹¡£¤¿¤À¤·¡¢¥ë¡¼¥È¤Î¸ø³«¸°¤ËÂФ¹¤ë¿®Íê¤Ï¡¢¥ë¡¼¥È¤Î¾ÚÌÀ½ñ¼«ÂΤ«¤éƳ¤½Ð¤µ¤ì¤ë¤â¤Î¤Ç¤Ï¤Ê¤¯(¤¿¤È¤¨¤Ð¡¢VeriSign¥ë¡¼¥ÈCA¤Î¤è¤¦¤ÊÍ̾¤Ê¼±ÊÌ̾¤ò»ÈÍѤ·¤¿¼«¸Ê½ð̾¾ÚÌÀ½ñ¤òºîÀ®¤¹¤ë¤³¤È¼«ÂΤÏï¤Ç¤â²Äǽ)¡¢¿·Ê¹¤Ê¤É¤Î¾¤Î¾ðÊ󸻤ËͳÍ褹¤ë¤â¤Î¤Ç¤¹¡£¥ë¡¼¥ÈCA¤Î¸ø³«¸°¤Ï¹¤¯ÃΤé¤ì¤Æ¤¤¤Þ¤¹¡£¥ë¡¼¥ÈCA¤Î¸ø³«¸°¤ò¾ÚÌÀ½ñ¤Ë³ÊǼ¤¹¤ëÍýͳ¤Ï¡¢¾ÚÌÀ½ñ¤È¤¤¤¦·Á¼°¤Ë¤¹¤ë¤³¤È¤Ç¿¤¯¤Î¥Ä¡¼¥ë¤«¤éÍøÍѤǤ¤ë¤è¤¦¤Ë¤Ê¤ë¤«¤é¤Ë¤¹¤®¤Þ¤»¤ó¡£¤Ä¤Þ¤ê¡¢¾ÚÌÀ½ñ¤Ï¡¢¥ë¡¼¥ÈCA¤Î¸ø³«¸°¤ò±¿¤Ö¡ÖÇÞÂΡפȤ·¤ÆÍøÍѤµ¤ì¤ë¤Î¤ß¤Ç¤¹¡£¥ë¡¼¥ÈCA¤Î¾ÚÌÀ½ñ¤ò¥¡¼¥¹¥È¥¢¤ËÄɲ乤ë¤È¤¤Ï¡¢¤½¤ÎÁ°¤Ë¾ÚÌÀ½ñ¤ÎÆâÍƤòɽ¼¨¤·(\f2\-printcert\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍÑ)¡¢É½¼¨¤µ¤ì¤¿¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤È¡¢¿·Ê¹¤ä¥ë¡¼¥ÈCA¤ÎWeb¥Ú¡¼¥¸¤Ê¤É¤«¤éÆþ¼ê¤·¤¿´ûÃΤΥե£¥ó¥¬¡¼¥×¥ê¥ó¥È¤È¤òÈæ³Ó¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 2 -+o -+\f3cacerts¾ÚÌÀ½ñ¥Õ¥¡¥¤¥ë\fP -+.LP -+\f3cacerts\fP¤È¤¤¤¦Ì¾Á°¤Î¾ÚÌÀ½ñ¥Õ¥¡¥¤¥ë¤Ï¡¢¥»¥¥å¥ê¥Æ¥£¡¦¥×¥í¥Ñ¥Æ¥£¡¦¥Ç¥£¥ì¥¯¥È¥ê\f2java.home\fP/lib/security¤ËÃÖ¤«¤ì¤Æ¤¤¤Þ¤¹¡£\f2java.home\fP¤Ï¡¢¼Â¹Ô´Ä¶¤Î¥Ç¥£¥ì¥¯¥È¥ê(SDK¤Î\f2jre\fP¥Ç¥£¥ì¥¯¥È¥ê¤Þ¤¿¤ÏJava 2 Runtime Environment¤ÎºÇ¾å°Ì¥Ç¥£¥ì¥¯¥È¥ê)¤Ç¤¹¡£ -+.LP -+cacerts¥Õ¥¡¥¤¥ë¤Ï¡¢CA¤Î¾ÚÌÀ½ñ¤ò´Þ¤à¡¢¥·¥¹¥Æ¥àÁ´ÂΤΥ¡¼¥¹¥È¥¢¤Ç¤¹¡£¥·¥¹¥Æ¥à´ÉÍý¼Ô¤Ï¡¢¥¡¼¥¹¥È¥¢¡¦¥¿¥¤¥×¤Ëjks¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢\f3keytool\fP¤ò»ÈÍѤ·¤Æ¤³¤Î¥Õ¥¡¥¤¥ë¤Î¹½À®¤È´ÉÍý¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£cacerts¥¡¼¥¹¥È¥¢¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢¥ë¡¼¥ÈCA¾ÚÌÀ½ñ¤Î¥Ç¥Õ¥©¥ë¥È¡¦¥»¥Ã¥È¤ò´Þ¤ó¤À¾õÂ֤ǽв٤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤é¤Î¾ÚÌÀ½ñ¤ò°ìÍ÷ɽ¼¨¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+keytool \-list \-keystore \fP\f4java.home\fP\f3/lib/security/cacerts -+.fl -+\fP -+.fi -+.LP -+cacerts¥¡¼¥¹¥È¥¢¡¦¥Õ¥¡¥¤¥ë¤Î½é´ü¥Ñ¥¹¥ï¡¼¥É¤Ï¡¢changeit¤Ç¤¹¡£¥·¥¹¥Æ¥à´ÉÍý¼Ô¤Ï¡¢SDK¤Î¥¤¥ó¥¹¥È¡¼¥ë¸å¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¥ï¡¼¥É¤È¥Ç¥Õ¥©¥ë¥È¡¦¥¢¥¯¥»¥¹¸¢¤òÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+\f3½ÅÍ×: \fP\f4cacerts\fP\f3¥Õ¥¡¥¤¥ë¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤\fP: \f2cacerts\fP¥Õ¥¡¥¤¥ëÆâ¤ÎCA¤Ï¡¢½ð̾¤ª¤è¤Ó¾¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ø¤Î¾ÚÌÀ½ñȯ¹Ô¤Î¤¿¤á¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤È¤·¤Æ¿®Íꤵ¤ì¤ë¤¿¤á¡¢\f2cacerts\fP¥Õ¥¡¥¤¥ë¤Î´ÉÍý¤Ï¿µ½Å¤Ë¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£\f2cacerts\fP¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¿®Íꤹ¤ëCA¤Î¾ÚÌÀ½ñ¤Î¤ß¤¬´Þ¤Þ¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤Ï¡¢¼«¿È¤ÎÀÕǤ¤Ë¤ª¤¤¤Æ¡¢\f2cacerts\fP¥Õ¥¡¥¤¥ë¤Ë¥Ð¥ó¥É¥ë¤µ¤ì¤Æ¤¤¤ë¿®Íê¤Ç¤¤ë¥ë¡¼¥ÈCA¾ÚÌÀ½ñ¤ò¸¡¾Ú¤·¡¢¿®ÍêÀ¤Ë´Ø¤¹¤ëÆȼ«¤Î·èÄê¤ò¹Ô¤¤¤Þ¤¹¡£¿®Íê¤Ç¤¤Ê¤¤CA¾ÚÌÀ½ñ¤ò\f2cacerts\fP¥Õ¥¡¥¤¥ë¤«¤éºï½ü¤¹¤ë¤Ë¤Ï¡¢\f2keytool\fP¥³¥Þ¥ó¥É¤Îºï½ü¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£\f2cacerts\fP¥Õ¥¡¥¤¥ë¤ÏJRE¤Î¥¤¥ó¥¹¥È¡¼¥ë¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ê¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤òÊÔ½¸¤¹¤ë¥¢¥¯¥»¥¹¸¢¤¬¤Ê¤¤¾ì¹ç¤Ï¡¢¥·¥¹¥Æ¥à´ÉÍý¼Ô¤ËÏ¢Íí¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 2 -+o -+\f3¥¤¥ó¥¿¡¼¥Í¥Ã¥ÈRFC 1421¾ÚÌÀ½ñÉä¹æ²½µ¬³Ê\fP -+.LP -+¿¤¯¤Î¾ì¹ç¡¢¾ÚÌÀ½ñ¤Ï¡¢¥Ð¥¤¥Ê¥êÉä¹æ²½¤Ç¤Ï¤Ê¤¯¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥ÈRFC 1421µ¬³Ê¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë½ÐÎϲÄǽÉä¹æ²½Êý¼°¤ò»ÈÍѤ·¤Æ³ÊǼ¤µ¤ì¤Þ¤¹¡£¡ÖBase 64Éä¹æ²½¡×¤È¤â¸Æ¤Ð¤ì¤ë¤³¤Î¾ÚÌÀ½ñ·Á¼°¤Ç¤Ï¡¢ÅŻҥ᡼¥ë¤ä¤½¤Î¾¤Îµ¡¹½¤òÄ̤¸¤Æ¡¢Â¾¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë¾ÚÌÀ½ñ¤òÍưפ˥¨¥¯¥¹¥Ý¡¼¥È¤Ç¤¤Þ¤¹¡£ -+.LP -+\f2\-importcert\fP¤È\f2\-printcert\fP¥³¥Þ¥ó¥É¤Ç¤Ï¡¢¤³¤Î·Á¼°¤Î¾ÚÌÀ½ñ¤È¥Ð¥¤¥Ê¥êÉä¹æ²½¤Î¾ÚÌÀ½ñ¤òÆɤ߹þ¤à¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+\f2\-exportcert\fP¥³¥Þ¥ó¥É¤Ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¥Ð¥¤¥Ê¥êÉä¹æ²½¤Î¾ÚÌÀ½ñ¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢\f2\-rfc\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢½ÐÎϲÄǽÉä¹æ²½Êý¼°¤Î¾ÚÌÀ½ñ¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.LP -+\f2\-list\fP¥³¥Þ¥ó¥É¤Ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¾ÚÌÀ½ñ¤ÎSHA1¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£\f2\-v\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢¿Í´Ö¤¬Æɤळ¤È¤Î¤Ç¤¤ë·Á¼°¤Ç¾ÚÌÀ½ñ¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£°ìÊý¡¢\f2\-rfc\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢½ÐÎϲÄǽÉä¹æ²½Êý¼°¤Ç¾ÚÌÀ½ñ¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.LP -+½ÐÎϲÄǽÉä¹æ²½Êý¼°¤ÇÉä¹æ²½¤µ¤ì¤¿¾ÚÌÀ½ñ¤Ï¡¢¼¡¤Î¹Ô¤Ç»Ï¤Þ¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\- -+.fl -+\fP -+.fi -+.LP -+ºÇ¸å¤Ï¡¢¼¡¤Î¹Ô¤Ç½ª¤ï¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+\-\-\-\-\-END CERTIFICATE\-\-\-\-\- -+.fl -+\fP -+.fi -+.RE -+ -+.LP -+.SS -+X.500¼±ÊÌ̾ -+.LP -+.LP -+X.500¼±ÊÌ̾¤Ï¡¢¥¨¥ó¥Æ¥£¥Æ¥£¤òÆÃÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢X.509¾ÚÌÀ½ñ¤Î\f2subject\fP¥Õ¥£¡¼¥ë¥É¤È\f2issuer\fP(½ð̾¼Ô)¥Õ¥£¡¼¥ë¥É¤Ç»ØÄꤵ¤ì¤ë̾Á°¤Ï¡¢X.500¼±ÊÌ̾¤Ç¤¹¡£\f3keytool\fP¤Ï¡¢¼¡¤Î¥µ¥Ö¥Ñ¡¼¥È¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+\f2commonName\fP \- ¿Í¤ÎÄ̾Ρ£¡ÖSusan Jones¡×¤Ê¤É -+.TP 2 -+o -+\f2organizationUnit\fP \- ¾®¤µ¤ÊÁÈ¿¥(Éô¡¢²Ý¤Ê¤É)¤Î̾¾Î¡£¡ÖPurchasing¡×¤Ê¤É -+.TP 2 -+o -+\f2organizationName\fP \- Â礤ÊÁÈ¿¥¤Î̾¾Î¡£¡ÖABCSystems,Inc.¡×¤Ê¤É -+.TP 2 -+o -+\f2localityName\fP \- ÃÏ°è(ÅÔ»Ô)̾¡£¡ÖPalo Alto¡×¤Ê¤É -+.TP 2 -+o -+\f2stateName\fP \- ½£Ì¾¤Þ¤¿¤ÏÃÏÊý̾¡£¡ÖCalifornia¡×¤Ê¤É -+.TP 2 -+o -+\f2country\fP \- 2ʸ»ú¤Î¹ñÈֹ档¡ÖCH¡×¤Ê¤É -+.RE -+ -+.LP -+.LP -+¼±ÊÌ̾ʸ»úÎó¤ò\f2\-dname\fP¥ª¥×¥·¥ç¥ó¤ÎÃͤȤ·¤Æ»ØÄꤹ¤ë¾ì¹ç¤Ï(\f2\-genkeypair\fP ¥³¥Þ¥ó¥É)¡¢¼¡¤Î·Á¼°¤Ç»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+CN=\fP\f4cName\fP\f3, OU=\fP\f4orgUnit\fP\f3, O=\fP\f4org\fP\f3, L=\fP\f4city\fP\f3, S=\fP\f4state\fP\f3, C=\fP\f4countryCode\fP\f3 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥¤¥¿¥ê¥Ã¥¯ÂΤιàÌܤϡ¢¼ÂºÝ¤Ë»ØÄꤹ¤ëÃͤòɽ¤·¤Þ¤¹¡£Ã»½Ì·Á¤Î¥¡¼¥ï¡¼¥É¤Î°ÕÌ£¤Ï¡¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ CN=commonName -+.fl -+ OU=organizationUnit -+.fl -+ O=organizationName -+.fl -+ L=localityName -+.fl -+ S=stateName -+.fl -+ C=country -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¼¡¤Ë¼¨¤¹¤Î¤Ï¡¢¼±ÊÌ̾ʸ»úÎó¤ÎÎã¤Ç¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, S=California, C=US -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¼¡¤Ï¡¢¤³¤Îʸ»úÎó¤ò»ÈÍѤ·¤¿¥³¥Þ¥ó¥É¤ÎÎã¤Ç¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+keytool \-genkeypair \-dname "CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, -+.fl -+S=California, C=US" \-alias mark -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥¡¼¥ï¡¼¥É¤Îû½Ì·Á¤Ç¤Ï¡¢Âçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢CN¡¢cn¤ª¤è¤ÓCn¤Ï¡¢¤É¤ì¤âƱ¤¸¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£ -+.LP -+.LP -+°ìÊý¡¢¥¡¼¥ï¡¼¥É¤Î»ØÄê½ç½ø¤Ë¤Ï°ÕÌ£¤¬¤¢¤ê¡¢³Æ¥µ¥Ö¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï¾å¤Ë¼¨¤·¤¿½ç½ø¤Ç»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤À¤·¡¢¥µ¥Ö¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¤¹¤Ù¤Æ»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë°ìÉô¤Î¥µ¥Ö¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¤ß¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+CN=Steve Meier, OU=Java, O=Oracle, C=US -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¼±ÊÌ̾ʸ»úÎó¤ÎÃͤ˥«¥ó¥Þ¤¬´Þ¤Þ¤ì¤ë¾ì¹ç¤Ë¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Çʸ»úÎó¤ò»ØÄꤹ¤ë¤È¤¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥«¥ó¥Þ¤òʸ»ú¡Ö\\¡×¤Ç¥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ cn=Peter Schuster, ou=Java\\, Product Development, o=Oracle, c=US -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¼±ÊÌ̾ʸ»úÎó¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¼±ÊÌ̾¤òɬÍפȤ¹¤ë¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¼±ÊÌ̾¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢³Æ¥µ¥Ö¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ï¡¢¥«¥ó¥Þ¤ò¡Ö\\¡×¤Ç¥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ -+.LP -+.SS -+¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤Î¥¤¥ó¥Ý¡¼¥È¤Ë´Ø¤¹¤ëÃí°Õ»ö¹à -+.LP -+.LP -+½ÅÍ×: ¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤È¤·¤Æ¾ÚÌÀ½ñ¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ëÁ°¤Ë¡¢¾ÚÌÀ½ñ¤ÎÆâÍƤò¿µ½Å¤ËÄ´¤Ù¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+¤Þ¤º¡¢¾ÚÌÀ½ñ¤ÎÆâÍƤòɽ¼¨¤·(\f2\-printcert\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ë¤«¡¢¤Þ¤¿¤Ï\f2\-noprompt\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤Ç\f2\-importcert\fP¥³¥Þ¥ó¥É¤ò»ÈÍÑ)¡¢É½¼¨¤µ¤ì¤¿¾ÚÌÀ½ñ¤Î¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤¬¡¢´üÂÔ¤µ¤ì¤ë¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤È°ìÃפ¹¤ë¤«¤É¤¦¤«¤ò³Îǧ¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¤¢¤ë¥æ¡¼¥¶¡¼¤«¤é¾ÚÌÀ½ñ¤¬Á÷¤é¤ì¤Æ¤¤Æ¡¢¤³¤Î¾ÚÌÀ½ñ¤ò\f2/tmp/cert\fP¤È¤¤¤¦Ì¾Á°¤Ç¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤·¤Æ¤¤¤ë¤È¤·¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ï¡¢¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤Î¥ê¥¹¥È¤Ë¤³¤Î¾ÚÌÀ½ñ¤òÄɲ乤ëÁ°¤Ë¡¢\f2\-printcert\fP¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Æ¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤òɽ¼¨¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ keytool \-printcert \-file /tmp/cert -+.fl -+ Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll -+.fl -+ Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll -+.fl -+ Serial Number: 59092b34 -+.fl -+ Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997 -+.fl -+ Certificate Fingerprints: -+.fl -+ MD5: 11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F -+.fl -+ SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE -+.fl -+ SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90: -+.fl -+ 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¼¡¤Ë¡¢¾ÚÌÀ½ñ¤òÁ÷¿®¤·¤¿¿Íʪ¤ËÏ¢Íí¤·¡¢¤³¤Î¿Íʪ¤¬Ä󼨤·¤¿¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤È¡¢¾å¤Î¥³¥Þ¥ó¥É¤Çɽ¼¨¤µ¤ì¤¿¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤È¤òÈæ³Ó¤·¤Þ¤¹¡£¥Õ¥£¥ó¥¬¡¼¥×¥ê¥ó¥È¤¬°ìÃפ¹¤ì¤Ð¡¢Á÷¿®ÅÓÃæ¤Ç¾¤Î²¿¼Ô¤«(¹¶·â¼Ô¤Ê¤É)¤Ë¤è¤ë¾ÚÌÀ½ñ¤Î¤¹¤êÂؤ¨¤¬¹Ô¤ï¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤Ç¤¤Þ¤¹¡£Á÷¿®ÅÓÃæ¤Ç¤³¤Î¼ï¤Î¹¶·â¤¬¹Ô¤ï¤ì¤Æ¤¤¤¿¾ì¹ç¡¢¥Á¥§¥Ã¥¯¤ò¹Ô¤ï¤º¤Ë¾ÚÌÀ½ñ¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤È¡¢¹¶·â¼Ô¤Ë¤è¤Ã¤Æ½ð̾¤µ¤ì¤¿¤¹¤Ù¤Æ¤Î¤â¤Î(¹¶·âŪ°Õ¿Þ¤ò»ý¤Ä¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò´Þ¤ó¤ÀJAR¥Õ¥¡¥¤¥ë¤Ê¤É)¤ò¿®Íꤹ¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+Ãí°Õ: ¾ÚÌÀ½ñ¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ëÁ°¤Ë\f2\-printcert\fP¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¥¡¼¥¹¥È¥¢Æâ¤Î¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤Î¥ê¥¹¥È¤Ë¾ÚÌÀ½ñ¤òÄɲ乤ëÁ°¤Ë\f2\-importcert\fP¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢¾ÚÌÀ½ñ¤Î¾ðÊó¤¬É½¼¨¤µ¤ì¡¢³Îǧ¤òµá¤á¤ë¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¥¤¥ó¥Ý¡¼¥ÈÁàºî¤Ï¡¢¤³¤Î»þÅÀ¤ÇÃæ»ß¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢³Îǧ¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤ë¤Î¤Ï¡¢\f2\-importcert\fP¥³¥Þ¥ó¥É¤ò\f2\-noprompt\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤻ¤º¤Ë¼Â¹Ô¤·¤¿¾ì¹ç¤Î¤ß¤Ç¤¹¡£¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¡¢\f2\-noprompt\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥æ¡¼¥¶¡¼¤È¤ÎÂÐÏäϹԤï¤ì¤Þ¤»¤ó¡£ -+.LP -+.SS -+¥Ñ¥¹¥ï¡¼¥É¤Ë´Ø¤¹¤ëÃí°Õ»ö¹à -+.LP -+.LP -+¥¡¼¥¹¥È¥¢¤ËÂФ¹¤ëÁàºî¤ò¹Ô¤¦¤Û¤È¤ó¤É¤Î¥³¥Þ¥ó¥É¤Ç¤Ï¡¢¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤¬É¬ÍפǤ¹¡£¤Þ¤¿¡¢°ìÉô¤Î¥³¥Þ¥ó¥É¤Ç¤Ï¡¢Èó¸ø³«/ÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤¬É¬Íפˤʤ뤳¤È¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¥Ñ¥¹¥ï¡¼¥É¤Ï¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄê¤Ç¤¤Þ¤¹(¥¹¥È¥¢¤Î¥Ñ¥¹¥ï¡¼¥É¤Ë¤Ï\f2\-storepass\fP¥ª¥×¥·¥ç¥ó¡¢ÈëÌ©¸°¤Î¥Ñ¥¹¥ï¡¼¥É¤Ë¤Ï\f2\-keypass\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍÑ)¡£¤¿¤À¤·¡¢¥Æ¥¹¥È¤òÌÜŪ¤È¤¹¤ë¾ì¹ç¡¢¤Þ¤¿¤Ï°ÂÁ´¤Ç¤¢¤ë¤³¤È¤¬¤ï¤«¤Ã¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¼Â¹Ô¤¹¤ë¾ì¹ç°Ê³°¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤ä¥¹¥¯¥ê¥×¥È¤Ç¥Ñ¥¹¥ï¡¼¥É¤ò»ØÄꤷ¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+ɬÍפʥѥ¹¥ï¡¼¥É¤Î¥ª¥×¥·¥ç¥ó¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.LP -+.SS -+¾ÚÌÀ½ñ¤Î½àµò¤Ë´Ø¤¹¤ëÃí°Õ»ö¹à -+.LP -+.LP -+¥¤¥ó¥¿¡¼¥Í¥Ã¥Èɸ½à¤Î -+.na -+\f2RFC 5280\fP @ -+.fi -+http://tools.ietf.org/rfc/rfc5280.txt¤Ç¤Ï¡¢X.509¾ÚÌÀ½ñ¤¬½àµò¤¹¤ë¥×¥í¥Õ¥¡¥¤¥ë¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥×¥í¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¾ÚÌÀ½ñ¤Î¥Õ¥£¡¼¥ë¥É¤ä¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤Ç͸ú¤ÊÃͤäÃͤÎÁȹ礻¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£\f3keytool\fP¤Ç¤Ï¡¢¤³¤ì¤é¤Î¤¹¤Ù¤Æ¤Îµ¬Â§¤¬Å¬ÍѤµ¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢É¸½à¤Ë½àµò¤·¤Ê¤¤¾ÚÌÀ½ñ¤¬À¸À®¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¡¢¤½¤Î¤è¤¦¤Ê¾ÚÌÀ½ñ¤ÏJRE¤ä¾¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÇµñÈݤµ¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤Ï¡¢\f2\-dname\fP¤ä\f2\-ext\fP¤Ê¤É¤ÇŬÀµ¤Ê¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+jar(1)¥Ä¡¼¥ë¤Î¥É¥¥å¥á¥ó¥È -+.TP 2 -+o -+jarsigner(1)¥Ä¡¼¥ë¤Î¥É¥¥å¥á¥ó¥È -+.TP 2 -+o -+\f3keytool\fP¤Î»ÈÍÑÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢ -+.na -+\f4Java¥Á¥å¡¼¥È¥ê¥¢¥ë\fP @ -+.fi -+http://docs.oracle.com/javase/tutorial/¤Î -+.na -+\f4¥»¥¥å¥ê¥Æ¥£\fP @ -+.fi -+http://docs.oracle.com/javase/tutorial/security/index.html¤ò»²¾È -+.RE -+ -+.LP -+.SH "Êѹ¹ÅÀ" -+.LP -+.LP -+Java SE 6¤Çkeytool¤Î¥³¥Þ¥ó¥É¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¬Êѹ¹¤µ¤ì¤Þ¤·¤¿¡£ -+.LP -+.LP -+\f3keytool\fP¤Ï¡¢¥æ¡¼¥¶¡¼¤¬¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ¹¤ëºÝ¤Ë¤½¤ÎÆþÎÏÆâÍƤòɽ¼¨¤·¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£¥æ¡¼¥¶¡¼¤Ï¥Ñ¥¹¥ï¡¼¥ÉÆþÎÏ»þ¤Ë¤½¤ÎÆþÎÏÆâÍƤò³Îǧ¤Ç¤¤Ê¤¯¤Ê¤Ã¤¿¤¿¤á¡¢½é´ü¥¡¼¥¹¥È¥¢¡¦¥Ñ¥¹¥ï¡¼¥É¤òÀßÄꤷ¤¿¤ê¸°¥Ñ¥¹¥ï¡¼¥É¤òÊѹ¹¤·¤¿¤ê¤¹¤ë¤Ê¤É¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÀßÄê¤äÊѹ¹¤ò¹Ô¤¦¤¿¤Ó¤Ë¥Ñ¥¹¥ï¡¼¥É¤ÎºÆÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -+.LP -+.LP -+Êѹ¹¤µ¤ì¤¿¥³¥Þ¥ó¥É¤ÎÃæ¤Ë¤Ï¡¢Ì¾Á°¤Î¤ß¤¬Êѹ¹¤µ¤ì¤¿¤â¤Î¤â¤¢¤ì¤Ð¡¢Çѻߤµ¤ì¤Æ¤³¤Î¥É¥¥å¥á¥ó¥È¤ËµºÜ¤µ¤ì¤Ê¤¯¤Ê¤Ã¤¿¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£°ÊÁ°¤Î¤¹¤Ù¤Æ¤Î¥³¥Þ¥ó¥É(̾Á°¤¬Êѹ¹¤µ¤ì¤¿¤â¤Î¤ÈÇѻߤµ¤ì¤¿¤â¤Î¤ÎξÊý)¤Ï¡¢¤³¤Î¥ê¥ê¡¼¥¹¤Ç¤â°ú³¤¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤ª¤ê¡¢º£¸å¤Î¥ê¥ê¡¼¥¹¤Ç¤â¥µ¥Ý¡¼¥È¤µ¤ì¤ëͽÄê¤Ç¤¹¡£keytool¤Î¥³¥Þ¥ó¥É¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë²Ã¤¨¤é¤ì¤¿¤¹¤Ù¤Æ¤ÎÊѹ¹ÅÀ¤Î³µÍפò¡¢¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.LP -+.LP -+̾Á°¤¬Êѹ¹¤µ¤ì¤¿¥³¥Þ¥ó¥É: -+.LP -+.RS 3 -+.TP 2 -+o -+\f2\-export\fP¤Î̾Á°¤¬\f2\-exportcert\fP¤ËÊѹ¹ -+.TP 2 -+o -+\f2\-genkey\fP¤Î̾Á°¤¬\f2\-genkeypair\fP¤ËÊѹ¹ -+.TP 2 -+o -+\f2\-import\fP¤Î̾Á°¤¬\f2\-importcert\fP¤ËÊѹ¹ -+.RE -+ -+.LP -+.LP -+Çѻߤµ¤ì¤Æ¥É¥¥å¥á¥ó¥È¤ËµºÜ¤µ¤ì¤Ê¤¯¤Ê¤Ã¤¿¥³¥Þ¥ó¥É: -+.LP -+.RS 3 -+.TP 2 -+o -+.na -+\f2\-keyclone\fP @ -+.fi -+http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/keytool.html#keycloneCmd -+.TP 2 -+o -+.na -+\f2\-identitydb\fP @ -+.fi -+http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/keytool.html#identitydbCmd -+.TP 2 -+o -+.na -+\f2\-selfcert\fP @ -+.fi -+http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/keytool.html#selfcertCmd -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/native2ascii.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/native2ascii.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,54 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH native2ascii 1 "07 May 2011" -+.TH native2ascii 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+native2ascii \- ¥Í¥¤¥Æ¥£¥Ö \- ASCII¥³¥ó¥Ð¡¼¥¿ -+.LP -+.LP -+¥µ¥Ý¡¼¥È¤µ¤ì¤ëʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Îʸ»ú¤Î¥Õ¥¡¥¤¥ë¤òASCII¤Þ¤¿¤ÏUnicode¥¨¥¹¥±¡¼¥×¤¢¤ë¤¤¤Ï¤½¤ÎξÊý¤Î¥Õ¥¡¥¤¥ë¤ËÊÑ´¹¤·¤Þ¤¹¡£¤½¤ÎµÕ¤ÎÊÑ´¹¤â¹Ô¤¤¤Þ¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f4native2ascii\fP\f2 [options] [inputfile [outputfile]]\fP -+.fl -+.fi -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f2native2ascii\fP Java¼Â¹Ô´Ä¶¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤ëʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ë¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¡¢ASCII¤Ç¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ËÊÑ´¹¤·¤Þ¤¹¡£ASCIIʸ»ú¥»¥Ã¥È¤Î°ìÉô¤Ç¤Ê¤¤¤¹¤Ù¤Æ¤Îʸ»ú¤ÇUnicode¥¨¥¹¥±¡¼¥×(¡Ö\\uxxxx¡×¤Îɽµ)¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¥×¥í¥»¥¹¤Ï¡¢ISO\-8859\-1ʸ»ú¥»¥Ã¥È¤Ë´Þ¤Þ¤ì¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¥×¥í¥Ñ¥Æ¥£¡¦¥Õ¥¡¥¤¥ë¤ÇɬÍפǤ¹¡£¤³¤Î¥Ä¡¼¥ë¤Ï¡¢¤½¤ÎµÕ¤ÎÊÑ´¹¤ò¼Â¹Ô¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f2outputfile\fP¤ò¾Êά¤·¤¿¾ì¹ç¡¢É¸½à½ÐÎϤ˽ÐÎϤµ¤ì¤Þ¤¹¡£¤µ¤é¤Ë¡¢\f2inputfile\fP¤ò¾Êά¤·¤¿¾ì¹ç¡¢É¸½àÆþÎϤ«¤éÆþÎϤµ¤ì¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-reverse -+µÕ¤Î½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ISO\-8859\-1¤ÇUnicode¥¨¥¹¥±¡¼¥×¤ò»ÈÍѤ·¤Æ¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¡¢Java¼Â¹Ô´Ä¶¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤ëʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î¥Õ¥¡¥¤¥ë¤ËÊÑ´¹¤·¤Þ¤¹¡£ -+.br -+.br -+.TP 3 -+\-encoding encoding_name -+ÊÑ´¹½èÍý¤Ç»ÈÍѤ¹¤ëʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Îʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°(\f2java.nio.charset.Charset.defaultCharset\fP¥á¥½¥Ã¥É¤ÇÄêµÁ¤µ¤ì¤ë)¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£\f2encoding_name\fPʸ»úÎó¤Ï¡¢ -+.na -+\f4¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëʸ»úÎ󥨥󥳡¼¥Ç¥£¥ó¥°\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html¡¦¥É¥¥å¥á¥ó¥È¤Ë¼¨¤µ¤ì¤Æ¤¤¤ë¡¢Java¼Â¹Ô´Ä¶¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤ëʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î̾Á°¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.br -+.br -+.TP 3 -+\-Joption -+Java²¾ÁÛ¥Þ¥·¥ó¤Ë\f2option\fP¤òÅϤ·¤Þ¤¹¡£\f2option\fP¤Ë¤Ï¡¢java(1)¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥Ú¡¼¥¸¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë¥ª¥×¥·¥ç¥ó¤ò1¤Ä»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/orbd.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/orbd.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,350 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH orbd 1 "07 May 2011" -+.TH orbd 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+orbd \- The Object Request Broker Daemon -+.LP -+.LP -+\f3orbd\fP¤Ï¡¢CORBA´Ä¶¤Î¥µ¡¼¥Ð¡¼¤Ë¤¢¤ë±Ê³¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¯¥é¥¤¥¢¥ó¥È¤«¤éÆ©²áŪ¤Ë¸¡º÷¤·¤Æ¸Æ¤Ó½Ð¤»¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.LP -+\f3´ØÏ¢¹àÌÜ:\fP -+.na -+\f2¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/jidlNaming.html -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+orbd <\fP\f3options\fP\f3> -+.fl -+\fP -+.fi -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3orbd\fP¥Ä¡¼¥ë¤Ë´Þ¤Þ¤ì¤ë¥µ¡¼¥Ð¡¼¡¦¥Þ¥Í¡¼¥¸¥ã¤ò»ÈÍѤ¹¤ë¤È¡¢¥¯¥é¥¤¥¢¥ó¥È¤ÏCORBA´Ä¶¤Ç¥µ¡¼¥Ð¡¼¾å¤Ë¤¢¤ë±Ê³¥ª¥Ö¥¸¥§¥¯¥È¤òÆ©²áŪ¤Ë¸¡º÷¤·¤Æ¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£±Ê³¥µ¡¼¥Ð¡¼¤Ï¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ë±Ê³¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤òȯ¹Ô¤¹¤ëºÝ¡¢¥µ¡¼¥Ð¡¼¤Î¥Ý¡¼¥ÈÈÖ¹æ¤Î¤«¤ï¤ê¤ËORBD¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ò¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤Ë´Þ¤á¤Þ¤¹¡£±Ê³¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤Î¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤ËORBD¥Ý¡¼¥ÈÈÖ¹æ¤ò´Þ¤á¤ë¤³¤È¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤ÊÍøÅÀ¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ë¤¢¤ë¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤¬¡¢¥µ¡¼¥Ð¡¼¤Î¥é¥¤¥Õ¡¦¥µ¥¤¥¯¥ë¤È̵´Ø·¸¤Ë¤Ê¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤Ï¡¢½é¤á¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿¤È¤¤Ï¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Î¥µ¡¼¥Ð¡¼¤Ë¤è¤Ã¤Æ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ëȯ¹Ô¤µ¤ì¤Þ¤¹¤¬¡¢¤½¤Î¸å¤Ï¡¢¥µ¡¼¥Ð¡¼¤Î³«»Ï¤Þ¤¿¤Ï¥·¥ã¥Ã¥È¥À¥¦¥ó¤Î²ó¿ô¤Ë¤«¤«¤ï¤é¤º¡¢¸Æ¤Ó½Ð¤·¤¿¥¯¥é¥¤¥¢¥ó¥È¤ËORBD¤¬¤¤¤Ä¤Ç¤âÀµ¤·¤¤¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤òÊÖ¤·¤Þ¤¹¡£ -+.TP 2 -+o -+¥¯¥é¥¤¥¢¥ó¥È¤Ï°ìÅ٤Τߥ͡¼¥ß¥ó¥°¡¦¥µ¡¼¥Ó¥¹¤Î¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤ò¥ë¥Ã¥¯¥¢¥Ã¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¡¢¤½¤Î¸å¤Ï¥µ¡¼¥Ð¡¼¤Î¥é¥¤¥Õ¡¦¥µ¥¤¥¯¥ë¤Ë¤è¤ëÊѹ¹¤È¤Ï̵´Ø·¸¤Ë¤³¤Î»²¾È¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+ORBD¤Î¥µ¡¼¥Ð¡¼¡¦¥Þ¥Í¡¼¥¸¥ã¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤Ë¤Ï¡¢servertool(1)¤ò»ÈÍѤ·¤Æ¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£servertool¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥×¥í¥°¥é¥Þ¤¬¡¢±Ê³¥µ¡¼¥Ð¡¼¤ÎÅÐÏ¿¡¢ÅÐÏ¿²ò½ü¡¢µ¯Æ°¤ª¤è¤Ó¥·¥ã¥Ã¥È¥À¥¦¥ó¤ò¹Ô¤¦¤¿¤á¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤¹¡£¥µ¡¼¥Ð¡¼¡¦¥Þ¥Í¡¼¥¸¥ã¤Î¾ÜºÙ¤Ï¡¢¤³¤Î¥É¥¥å¥á¥ó¥È¤Î\f2¥µ¡¼¥Ð¡¼¡¦¥Þ¥Í¡¼¥¸¥ã\fP¤È¤¤¤¦¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+\f2orbd\fP¤òµ¯Æ°¤¹¤ë¤È¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤âµ¯Æ°¤µ¤ì¤Þ¤¹¡£¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Î¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/jidlNaming.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.SS -+ɬ¿Ü¥ª¥×¥·¥ç¥ó -+.LP -+.RS 3 -+.TP 3 -+\-ORBInitialPort nameserverport -+¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤¹¤ë¥Ý¡¼¥È¤ÎÈÖ¹æ¤ò»ØÄꤷ¤Þ¤¹¡£\f2orbd\fP¤Ï¡¢µ¯Æ°¤µ¤ì¤ë¤È¡¢¤³¤Î¥Ý¡¼¥È¾å¤ÇÃå¿®¥ê¥¯¥¨¥¹¥È¤òÂÔµ¡¤·¤Þ¤¹¡£Solaris¥½¥Õ¥È¥¦¥§¥¢¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢1024¤è¤ê¾®¤µ¤¤¥Ý¡¼¥È¾å¤Ç¥×¥í¥»¥¹¤ò³«»Ï¤¹¤ë¤Ë¤Ï¡¢root¥æ¡¼¥¶¡¼¤Ë¤Ê¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢1024°Ê¾å¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ò»ÈÍѤ¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£(ɬ¿Ü) -+.RE -+ -+.LP -+.LP -+ -+.LP -+.SS -+¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó -+.LP -+.RS 3 -+.TP 3 -+\-port port -+ORBD¤òµ¯Æ°¤¹¤ë¥Ý¡¼¥È¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥Ý¡¼¥È¤Ç¡¢±Ê³¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ¹¤ë¥ê¥¯¥¨¥¹¥È¤òORBD¤¬¼õ¤±¼è¤ê¤Þ¤¹¡£¤³¤Î¥Ý¡¼¥È¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤÏ1049¤Ç¤¹¡£¤³¤Î¥Ý¡¼¥ÈÈÖ¹æ¤Ï¡¢±Ê³Interoperable Object References(IOR)¤Î¥Ý¡¼¥È¡¦¥Õ¥£¡¼¥ë¥É¤ËÄɲ䵤ì¤Þ¤¹¡£(¾Êά²Ä) -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+\-defaultdb directory -+ORBD±Ê³³ÊǼ¥Ç¥£¥ì¥¯¥È¥ê\f2orb.db\fP¤¬ºîÀ®¤µ¤ì¤ë¥Ù¡¼¥¹¡¦¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥ÈÃͤϡÖ./orb.db¡×¤Ë¤Ê¤ê¤Þ¤¹¡£(¾Êά²Ä) -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+\-serverPollingTime milliseconds -+\f2servertool\fP¤ò»ÈÍѤ·¤ÆÅÐÏ¿¤µ¤ì¤¿±Ê³¥µ¡¼¥Ð¡¼¤¬Àµ¾ï¤ËÆ°ºî¤·¤Æ¤¤¤ë¤³¤È¤òORBD¤¬³Îǧ¤¹¤ë²ó¿ô¤ò»ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥ÈÃͤÏ1,000¥ß¥êÉäǤ¹¡£\f2milliseconds\fP¤Ë»ØÄꤹ¤ëÃͤϡ¢Í¸ú¤ÊÀµ¤ÎÀ°¿ô¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£(¾Êά²Ä) -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+\-serverStartupDelay milliseconds -+\f2servertool\fP¤ò»ÈÍѤ·¤ÆÅÐÏ¿¤µ¤ì¤¿±Ê³¥µ¡¼¥Ð¡¼¤òºÆµ¯Æ°¤·¤Æ¤«¤é¡¢°ÌÃÖžÁ÷¤ÎÎã³°¤òÁ÷¿®¤¹¤ë¤Þ¤Ç¤ÎORBD¤ÎÂÔµ¡»þ´Ö¤ò»ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥ÈÃͤÏ1,000¥ß¥êÉäǤ¹¡£\f2milliseconds\fP¤Ë»ØÄꤹ¤ëÃͤϡ¢Í¸ú¤ÊÀµ¤ÎÀ°¿ô¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£(¾Êά²Ä) -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+\-Joption -+Java²¾ÁÛ¥Þ¥·¥ó¤Ë\f2option\fP¤òÅϤ·¤Þ¤¹¡£\f2option\fP¤Ë¤Ï¡¢java(1)¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥Ú¡¼¥¸¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë¥ª¥×¥·¥ç¥ó¤ò1¤Ä»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£\f3\-J\fP¤ò»ÈÍѤ·¤ÆÇظå¤Î²¾ÁÛ¥Þ¥·¥ó¤Ë¥ª¥×¥·¥ç¥ó¤òÅϤ¹¤³¤È¤Ï¤è¤¯¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ -+.TP 3 -+ -+.RE -+ -+.LP -+.SH "¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Îµ¯Æ°¤ÈÄä»ß" -+.LP -+.LP -+¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ï¡¢ -+.na -+\f2CORBA¥ª¥Ö¥¸¥§¥¯¥È\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/jidlGlossary.html#CORBA%20object¤Ë¥Í¡¼¥ß¥ó¥°¤ò²Äǽ¤Ë¤¹¤ëCORBA¥µ¡¼¥Ó¥¹¤Ç¤¹¡£¥Í¡¼¥ß¥ó¥°¤Ï̾Á°¤ò¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤Ë¥Ð¥¤¥ó¥É¤¹¤ë¤³¤È¤Ë¤è¤ê²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.na -+\f2¥Í¡¼¥à¡¦¥Ð¥¤¥ó¥Ç¥£¥ó¥°\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/jidlGlossary.html#name%20binding¤ò¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ë³ÊǼ¤¹¤ì¤Ð¡¢¥¯¥é¥¤¥¢¥ó¥È¤¬Ì¾Á°¤ò»ØÄꤷ¤ÆÌÜŪ¤Î¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤ò¼èÆÀ¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+ORBD¤Ï¡¢¥¯¥é¥¤¥¢¥ó¥È¤Þ¤¿¤Ï¥µ¡¼¥Ð¡¼¤ò¼Â¹Ô¤¹¤ëÁ°¤Ëµ¯Æ°¤·¤Þ¤¹¡£ORBD¤Ë¤Ï¡¢±Ê³¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤ª¤è¤Ó°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤¬ÁȤ߹þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤é¤Ï¤É¤Á¤é¤âCOS¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Î¼ÂÁõ¤Ç¤¹¡£ -+.LP -+.LP -+\f4±Ê³\fP\f3¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹\fP¤Ï¡¢¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤ËÂФ·¤Æ±Ê³À¤òÄ󶡤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤³¤Î¾ðÊó¤Ï¡¢¥µ¡¼¥Ó¥¹¤ÎÄä»ß¤äµ¯Æ°¸å¤Ë¤â°Ý»ý¤µ¤ì¡¢¥µ¡¼¥Ó¥¹¤Ë¾ã³²¤¬È¯À¸¤·¤¿¾ì¹ç¤Ç¤â²óÉü¤Ç¤¤Þ¤¹¡£ORBD¤òºÆµ¯Æ°¤¹¤ë¤È¡¢±Ê³¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ï¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤Î¥°¥é¥Õ¤òÉü¸µ¤·¡¢¤¹¤Ù¤Æ¤Î¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¡¼¤Î̾Á°¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤¬¤½¤Î¤Þ¤Þ(±Ê³Ū¤Ë)ÊÝ»ý¤µ¤ì¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.LP -+.LP -+\ -+.LP -+.LP -+²¼°Ì¸ß´¹À¤Î¤¿¤á¡¢µì¥Ð¡¼¥¸¥ç¥ó¤ÎJDK¤ËƱº¤µ¤ì¤Æ¤¤¤¿\f4°ì»þ\fP\f3¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹\fP\f2tnameserv\fP¤¬¡¢º£²ó¤Î¥ê¥ê¡¼¥¹¤ÎJ2SE¤Ë¤âƱº¤µ¤ì¤Æ¤¤¤Þ¤¹¡£°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ç¤Ï¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Î¼Â¹ÔÃæ¤Ë¤Î¤ß¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤¬ÊÝ»ý¤µ¤ì¤Þ¤¹¡£¥µ¡¼¥Ó¥¹¤¬ÃæÃǤµ¤ì¤ë¤È¡¢¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¡¦¥°¥é¥Õ¤Ï¼º¤ï¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-ORBInitialPort\fP°ú¿ô¤Ï¡¢\f2orbd\fP¤Îɬ¿Ü¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤Ç¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤¬¼Â¹Ô¤µ¤ì¤ë¥Ý¡¼¥È¤ÎÈÖ¹æ¤òÀßÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£¼¡¤Î¼ê½ç¤Ç¤Ï¡¢Java\ IDL Object Request Broker DaemonÍѤ˥ݡ¼¥È1050¤ò»ÈÍѤǤ¤ë¤³¤È¤òÁ°Äó¤È¤·¤Æ¤¤¤Þ¤¹¡£Solaris¥½¥Õ¥È¥¦¥§¥¢¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢1024¤è¤ê¾®¤µ¤¤¥Ý¡¼¥È¾å¤Ç¥×¥í¥»¥¹¤ò³«»Ï¤¹¤ë¤Ë¤Ï¡¢root¥æ¡¼¥¶¡¼¤Ë¤Ê¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢1024°Ê¾å¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ò»ÈÍѤ¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£É¬ÍפǤ¢¤ì¤ÐÊ̤Υݡ¼¥È¤ËÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+UNIX¥³¥Þ¥ó¥É¡¦¥·¥§¥ë¤Ç\f2orbd\fP¤òµ¯Æ°¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤ËÆþÎϤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ orbd \-ORBInitialPort 1050& -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+Windows¤ÎMS\-DOS¥·¥¹¥Æ¥à¡¦¥×¥í¥ó¥×¥È¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤ËÆþÎϤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ start orbd \-ORBInitialPort 1050 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤ì¤ÇORBD¤¬¼Â¹Ô¤µ¤ì¡¢¥µ¡¼¥Ð¡¼¤È¥¯¥é¥¤¥¢¥ó¥È¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¡¼¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢¼Â¹Ô»þ¤Ë¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¥Ý¡¼¥È¤ÎÈÖ¹æ(ɬÍפʾì¹ç¤Ï¤µ¤é¤Ë¥Þ¥·¥ó̾)¤òǧ¼±¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤ò¼Â¸½¤¹¤ë1¤Ä¤ÎÊýË¡¤Ï¡¢¼¡¤Î¥³¡¼¥É¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËÄɲ乤뤳¤È¤Ç¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ Properties props = new Properties(); -+.fl -+ props.put("org.omg.CORBA.ORBInitialPort", "1050"); -+.fl -+ props.put("org.omg.CORBA.ORBInitialHost", "MyHost"); -+.fl -+ ORB orb = ORB.init(args, props); -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ï¡¢¥Û¥¹¥ÈMyHost¤Î¥Ý¡¼¥È1050¾å¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£Ê̤ÎÊýË¡¤È¤·¤Æ¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é¥µ¡¼¥Ð¡¼¤Þ¤¿¤Ï¥¯¥é¥¤¥¢¥ó¥È¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë¡¢¥Ý¡¼¥ÈÈÖ¹æ¤Þ¤¿¤Ï¥Þ¥·¥ó̾¤¢¤ë¤¤¤Ï¤½¤ÎξÊý¤ò»ØÄꤹ¤ëÊýË¡¤â¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢¡ÖHelloApplication¡×¤òµ¯Æ°¤Ç¤¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ java HelloApplication \-ORBInitialPort 1050 \-ORBInitialHost MyHost -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤òÄä»ß¤¹¤ë¤Ë¤Ï¡¢Å¬Àڤʥª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¡¦¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢Solaris¾å¤Ç\f2pkill orbd\fP¤ò¼Â¹Ô¤·¤¿¤ê¡¢\f2orbd\fP¤¬Æ°ºîÃæ¤ÎDOS¥¦¥£¥ó¥É¥¦¤Ç\f2[Ctrl]+[C]\fP¥¡¼¤ò²¡¤·¤Þ¤¹¡£°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Î¾ì¹ç¤Ï¡¢¥µ¡¼¥Ó¥¹¤¬½ªÎ»¤µ¤ì¤ë¤È¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤ËÅÐÏ¿¤µ¤ì¤¿Ì¾Á°¤¬¾Ãµî¤µ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£Java IDL¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ï¡¢ÌÀ¼¨Åª¤ËÄä»ß¤µ¤ì¤ë¤Þ¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+ORBD¤Ë´Þ¤Þ¤ì¤ë¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Î¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/jidlNaming.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "¥µ¡¼¥Ð¡¼¡¦¥Þ¥Í¡¼¥¸¥ã" -+.LP -+.LP -+ORBD¤Î¥µ¡¼¥Ð¡¼¡¦¥Þ¥Í¡¼¥¸¥ã¤Ë¥¢¥¯¥»¥¹¤·¤Æ¡¢±Ê³¥µ¡¼¥Ð¡¼¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¢servertool(1)¤ò»ÈÍѤ·¤Æ¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£servertool¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥×¥í¥°¥é¥Þ¤¬¡¢±Ê³¥µ¡¼¥Ð¡¼¤ÎÅÐÏ¿¡¢ÅÐÏ¿²ò½ü¡¢µ¯Æ°¤ª¤è¤Ó¥·¥ã¥Ã¥È¥À¥¦¥ó¤ò¹Ô¤¦¤¿¤á¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤¹¡£\f2servertool\fP¤ò»ÈÍѤ·¤Æ¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤¹¤ë¾ì¹ç¤Ï¡¢\f2orbd\fP¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¾ì½ê¤ÈƱ¤¸¥Ý¡¼¥È¤È¥Û¥¹¥È¤Çµ¯Æ°¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥µ¡¼¥Ð¡¼¤ò°Û¤Ê¤ë¥Ý¡¼¥È¤Ç¼Â¹Ô¤¹¤ë¤È¡¢¥í¡¼¥«¥ë¡¦¥³¥ó¥Æ¥¥¹¥ÈÍѤ˥ǡ¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¤Æ¤¤¤ë¾ðÊó¤¬Ìµ¸ú¤Ë¤Ê¤ê¡¢¥µ¡¼¥Ó¥¹¤¬Àµ¤·¤¯Æ°ºî¤·¤Þ¤»¤ó¡£ -+.LP -+.SS -+¥µ¡¼¥Ð¡¼¡¦¥Þ¥Í¡¼¥¸¥ã: Îã -+.LP -+.LP -+¥Ç¥âÍѤΠ-+.na -+\f2¥µ¥ó¥×¥ë¡¦¥Á¥å¡¼¥È¥ê¥¢¥ë\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/jidlExample.html¤ò»ÈÍѤ·¡¢¥Á¥å¡¼¥È¥ê¥¢¥ë¤Î¼ê½ç¤Ë½¾¤Ã¤Æ¡¢\f2idlj\fP¥³¥ó¥Ñ¥¤¥é¤È\f2javac\fP¥³¥ó¥Ñ¥¤¥é¤ò¼Â¹Ô¤·¤Þ¤¹¡£¥µ¡¼¥Ð¡¼¡¦¥Þ¥Í¡¼¥¸¥ã¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¼ê½ç¤Ë½¾¤Ã¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2orbd\fP¤òµ¯Æ°¤·¤Þ¤¹¡£ -+.LP -+.LP -+UNIX¥³¥Þ¥ó¥É¡¦¥·¥§¥ë¤Ç\f2orbd\fP¤òµ¯Æ°¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤ËÆþÎϤ·¤Þ¤¹¡£ -+.LP -+.LP -+\ -+.LP -+.nf -+\f3 -+.fl -+ orbd \-ORBInitialPort 1050 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+Windows¤ÎMS\-DOS¥·¥¹¥Æ¥à¡¦¥×¥í¥ó¥×¥È¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤ËÆþÎϤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ start orbd \-ORBInitialPort 1050 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f21050\fP¤Ï¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼¤ò¼Â¹Ô¤¹¤ë¥Ý¡¼¥È¤Ç¤¹¡£\f2\-ORBInitialPort\fP¤ÏɬÍפʥ³¥Þ¥ó¥É¥é¥¤¥ó¤Î°ú¿ô¤Ç¤¹¡£Solaris¥½¥Õ¥È¥¦¥§¥¢¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢1024¤è¤ê¾®¤µ¤¤¥Ý¡¼¥È¾å¤Ç¥×¥í¥»¥¹¤ò³«»Ï¤¹¤ë¤Ë¤Ï¡¢root¥æ¡¼¥¶¡¼¤Ë¤Ê¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢1024°Ê¾å¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ò»ÈÍѤ¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2servertool\fP¤òµ¯Æ°¤·¤Þ¤¹¡£ -+.LP -+.LP -+Hello¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤ËÆþÎϤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ servertool \-ORBInitialPort 1050 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+Á°²ó¤Î¼ê½ç¤È¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼(\f2orbd\fP)¤Î¥Ý¡¼¥È¤¬Æ±¤¸¤Ç¤¢¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð\f2\-ORBInitialPort 1050\fP¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£\f2servertool\fP¤Ï¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼¤ÈƱ¤¸¥Ý¡¼¥È¾å¤Çµ¯Æ°¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f2servertool\fP¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+ -+.LP -+.LP -+\f2servertool\fP¥×¥í¥ó¥×¥È¤«¤éHello¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ servertool > register \-server HelloServer \-classpath . \-applicationName -+.fl -+ HelloServerApName -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f2servertool\fP¤Ë¤è¤Ã¤Æ¥µ¡¼¥Ð¡¼¤¬ÅÐÏ¿¤µ¤ì¤Æ¡¢¡ÖHelloServerApName¡×¤È¤¤¤¦Ì¾Á°¤¬¥µ¡¼¥Ð¡¼¤Ë³ä¤êÅö¤Æ¤é¤ì¡¢ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥µ¡¼¥Ð¡¼°ìÍ÷¤È¤È¤â¤Ë¥µ¡¼¥Ð¡¼ID¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+ -+.LP -+.LP -+Ê̤ÎüËö¥¦¥£¥ó¥É¥¦¤Þ¤¿¤Ï¥×¥í¥ó¥×¥È¤«¤é¥¯¥é¥¤¥¢¥ó¥È¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.LP -+.LP -+\ -+.LP -+.nf -+\f3 -+.fl -+ java HelloClient \-ORBInitialPort 1050 \-ORBInitialHost localhost -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤ÎÎã¤Î\f2\-ORBInitialHost localhost\fP¤Ï¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼¤¬Hello¥¯¥é¥¤¥¢¥ó¥È¤È¤·¤ÆƱ°ì¥Û¥¹¥È¾å¤ÇÆ°ºî¤·¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼¤¬Ê̤Υۥ¹¥È¤ÇÆ°ºî¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢IDL¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼¤¬Æ°ºî¤·¤Æ¤¤¤ë¥Û¥¹¥È¤ò\f2\-ORBInitialHost\fP \f2nameserverhost\fP¤Ç»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.LP -+Á°²ó¤Î¼ê½ç¤ÈƱÍͤ˥͡¼¥à¡¦¥µ¡¼¥Ð¡¼(\f2orbd\fP)¤Î¥Ý¡¼¥È¤ò»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð\f2\-ORBInitialPort 1050\fP¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\ -+.LP -+.LP -+\ -+.LP -+.LP -+¥µ¡¼¥Ð¡¼¡¦¥Þ¥Í¡¼¥¸¥ã¤ÎÁàºî¤¬½ªÎ»¤·¤¿¤é¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼(\f2orbd\fP)¤È\f2servertool\fP¤òÄä»ß¤¹¤ë¤«½ªÎ»¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+DOS¥×¥í¥ó¥×¥È¤Ç\f2orbd\fP¤ò¥·¥ã¥Ã¥È¥À¥¦¥ó¤¹¤ë¤Ë¤Ï¡¢¥µ¡¼¥Ð¡¼¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¥¦¥£¥ó¥É¥¦¤òÁªÂò¤·¤Æ\f2[Ctrl]+[C]\fP¥¡¼¤ò²¡¤·¤Þ¤¹¡£UNIX¥·¥§¥ë¤Ç\f2orbd\fP¤ò¥·¥ã¥Ã¥È¥À¥¦¥ó¤¹¤ë¤Ë¤Ï¡¢¥×¥í¥»¥¹¤ò¸¡½Ð¤·¤Æ½ªÎ»(kill)¤·¤Þ¤¹¡£¥µ¡¼¥Ð¡¼¤òÌÀ¼¨Åª¤ËÄä»ß¤¹¤ë¤Þ¤Ç¤Ï¡¢¸Æ½Ð¤·ÂÔµ¡¾õÂÖ¤¬Â³¤¤Þ¤¹¡£ -+.LP -+.LP -+\f2servertool\fP¤ò¥·¥ã¥Ã¥È¥À¥¦¥ó¤¹¤ë¤Ë¤Ï¡¢\f2quit\fP¤ÈÆþÎϤ·¤Æ¥¡¼¥Ü¡¼¥É¤Î\f2[Enter]\fP¥¡¼¤ò²¡¤·¤Þ¤¹¡£ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+.na -+\f2¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/jidlNaming.html -+.br -+.TP 2 -+o -+servertool(1) -+.RE -+ -+.LP -+.br -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/pack200.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/pack200.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,344 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH pack200 1 "07 May 2011" -+.TH pack200 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+pack200 \- JAR¥Ñ¥Ã¥¯¡¦¥Ä¡¼¥ë -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+½ªÎ»¥¹¥Æ¡¼¥¿¥¹ -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.TP 2 -+o -+Ãí°Õ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.LP -+\f4pack200\fP\f2 [ \fP\f2options\fP ] \f2output\-file\fP \f2JAR\-file\fP -+.LP -+.LP -+¥ª¥×¥·¥ç¥ó¤Î»ØÄê½ç½ø¤Ë·è¤Þ¤ê¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Þ¤¿¤Ïproperties¥Õ¥¡¥¤¥ë¤Ë»ØÄꤵ¤ì¤¿ºÇ¸å¤Î¥ª¥×¥·¥ç¥ó¤¬¡¢¤½¤ì°ÊÁ°¤Ë»ØÄꤵ¤ì¤¿¤¹¤Ù¤Æ¤Î¥ª¥×¥·¥ç¥ó¤è¤êÍ¥À褵¤ì¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+options -+¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¡£ -+.TP 3 -+output\-file -+½ÐÎÏ¥Õ¥¡¥¤¥ë¤Î̾Á°¡£ -+.TP 3 -+JAR\-file -+ÆþÎÏ¥Õ¥¡¥¤¥ë¤Î̾Á°¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f2pack200\fP¥Ä¡¼¥ë¤Ï¡¢Java \f2gzip\fP°µ½Ì¥×¥í¥°¥é¥à¤ò»ÈÍѤ·¤ÆJAR¥Õ¥¡¥¤¥ë¤ò\f2pack200\fP°µ½Ì¥Õ¥¡¥¤¥ë¤ËÊÑ´¹¤¹¤ëJava¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤¹¡£\f2pack200\fP¥Õ¥¡¥¤¥ë¤Ï¹â°µ½Ì¤Î¥Õ¥¡¥¤¥ë¤Ç¡¢ÂÓ°èÉý¤ÎÀáÌó¤ä¥À¥¦¥ó¥í¡¼¥É»þ´Ö¤Îû½Ì¤äľÀÜ¥Ç¥×¥í¥¤¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f2pack200\fP¥Ä¡¼¥ë¤Ë¤Ï¡¢°µ½Ì¥¨¥ó¥¸¥ó¤ÎÀßÄê¤äÈùÄ´À°¤ò¹Ô¤¦¥ª¥×¥·¥ç¥ó¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.SS -+°ìÈÌŪ¤Ê»ÈÍÑÊýË¡: -+.LP -+.LP -+\f2% pack200 myarchive.pack.gz myarchive.jar\fP -+.LP -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Î\f2pack200\fPÀßÄê¤ò»ÈÍѤ·¤Æ\f2myarchive.pack.gz\fP¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+\f4\-r \-\-repack\fP -+.LP -+.LP -+¥Õ¥¡¥¤¥ë\f2myarchive.jar\fP¤ò¥Ñ¥Ã¥¯¤·¤¿¸å¥¢¥ó¥Ñ¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢JAR¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£À¸À®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï\f2jarsigner(1)\fP¥Ä¡¼¥ë¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤È¤·¤Æ»ÈÍѤǤ¤Þ¤¹¡£ -+.LP -+.LP -+\f2% pack200 \-\-repack myarchive\-packer.jar myarchive.jar\fP -+.LP -+.LP -+\f2% pack200 \-\-repack myarchive.jar\fP -+.LP -+.LP -+\f4\-g \-\-no\-gzip\fP -+.LP -+.LP -+\f2pack200\fP¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¤¤Ï¡¢Å¬Àڤʰµ½Ì¥Ä¡¼¥ë¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¥¿¡¼¥²¥Ã¥È¡¦¥·¥¹¥Æ¥à¤Ç¤Ï¡¢Âбþ¤¹¤ë°µ½Ì²ò½ü¥Ä¡¼¥ë¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f2% pack200 \-\-no\-gzip myarchive.pack myarchive.jar\fP -+.LP -+.LP -+\f4\-G \-\-strip\-debug\fP -+.LP -+.LP -+½ÐÎϤ«¤é¥Ç¥Ð¥Ã¥°ÍѤΰÀ¤òºï½ü¤·¤Þ¤¹¡£¤³¤ì¤Ë¤Ï¡¢\f2SourceFile\fP¡¢\f2LineNumberTable\fP¡¢\f2LocalVariableTable\fP¡¢\f2LocalVariableTypeTable\fP¤¬´Þ¤Þ¤ì¤Þ¤¹¡£¤³¤ì¤é¤Î°À¤òºï½ü¤¹¤ì¤Ð¡¢¥À¥¦¥ó¥í¡¼¥É¤È¥¤¥ó¥¹¥È¡¼¥ë¤Î¥µ¥¤¥º¤Ï¾®¤µ¤¯¤Ê¤ê¤Þ¤¹¤¬¡¢¥Ç¥Ð¥Ã¥¬¤Îµ¡Ç½¤ÏÀ©¸Â¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-\-keep\-file\-order\fP -+.LP -+.LP -+ÆþÎÏ¥Õ¥¡¥¤¥ëÆâ¤Î¥Õ¥¡¥¤¥ë¤Î½ç½ø¤ò°Ý»ý¤·¤Þ¤¹¡£¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤Ç¤¹¡£ -+.LP -+.LP -+\f4\-O \-\-no\-keep\-file\-order\fP -+.LP -+.LP -+¥Ñ¥Ã¥¯¡¦¥Ä¡¼¥ë¤Ï¡¢¤¹¤Ù¤Æ¤ÎÍ×ÁǤòʤÙÂؤ¨¤ÆžÁ÷¤·¤Þ¤¹¡£¤µ¤é¤Ë¡¢JAR¥Ç¥£¥ì¥¯¥È¥ê̾¤¬ºï½ü¤µ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢¥À¥¦¥ó¥í¡¼¥É¤Î¥µ¥¤¥º¤Ï¾®¤µ¤¯¤Ê¤ê¤Þ¤¹¤¬¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò¤Ï¤¸¤á¤È¤¹¤ëJAR¥Õ¥¡¥¤¥ë¤ÎºÇŬ²½µ¡Ç½¤ÏÀµ¾ï¤ËÆ°ºî¤·¤Ê¤¯¤Ê¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-Svalue \-\-segment\-limit=\fP\f2value\fP -+.LP -+.LP -+¤³¤ÎÃͤϡ¢³Æ¥¢¡¼¥«¥¤¥Ö¡¦¥»¥°¥á¥ó¥È¤ÎͽÁÛ¥¿¡¼¥²¥Ã¥È¡¦¥µ¥¤¥ºN(¥Ð¥¤¥Èñ°Ì)¤Ç¤¹¡£Ã±°ì¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤ÎɬÍ×¥µ¥¤¥º¤¬ -+.br -+N¥Ð¥¤¥È¤òĶ¤¨¤ë¤È¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤Ë¤ÏÆÈΩ¤·¤¿¥¢¡¼¥«¥¤¥Ö¡¦¥»¥°¥á¥ó¥È¤¬³ä¤êÅö¤Æ¤é¤ì¤Þ¤¹¡£Æüì¤Ê¥±¡¼¥¹¤È¤·¤Æ¡¢Ãͤ¬\f2\-1\fP¤Î¾ì¹ç¤Ï¡¢¤¹¤Ù¤Æ¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤ò´Þ¤àÂ礤Êñ°ì¤Î¥»¥°¥á¥ó¥È¤¬À¸À®¤µ¤ì¡¢Ãͤ¬\f20\fP¤Î¾ì¹ç¤Ï¡¢¥¯¥é¥¹¤´¤È¤Ë¥»¥°¥á¥ó¥È¤¬1¤Ä¤º¤ÄÀ¸À®¤µ¤ì¤Þ¤¹¡£¥¢¡¼¥«¥¤¥Ö¡¦¥»¥°¥á¥ó¥È¤¬Â礤¯¤Ê¤ë¤È¡¢ÃÇÊÒ²½¤¬¾¯¤Ê¤¯¤Ê¤ê°µ½ÌΨ¤¬¹â¤¯¤Ê¤ê¤Þ¤¹¤¬¡¢¤½¤Î½èÍý¤Ë¤Ï¿¤¯¤Î¥á¥â¥ê¡¼¤¬É¬ÍפǤ¹¡£ -+.LP -+.LP -+³Æ¥»¥°¥á¥ó¥È¤Î¥µ¥¤¥º¤Ï¡¢¥»¥°¥á¥ó¥È¤ËÊÑ´¹¤µ¤ì¤ë¤½¤ì¤¾¤ì¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤Î¥µ¥¤¥º¤Î¤Û¤«¡¢¤½¤Î̾Á°¤È¾¤ÎÁ÷¿®¤µ¤ì¤ë¥×¥í¥Ñ¥Æ¥£¤Î¥µ¥¤¥º¤ò·×»»¤·¤Æ¿ä¬¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ï \-1¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢¥Ñ¥Ã¥¯¡¦¥Ä¡¼¥ë¤Ï¾ï¤Ëñ°ì¤Î¥»¥°¥á¥ó¥È½ÐÎÏ¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹¡£¶Ëü¤ËÂ礤ʽÐÎÏ¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤ë¾ì¹ç¤Ë¤Ï¡¢ÆþÎÏ¥Õ¥¡¥¤¥ë¤ò¥»¥°¥á¥ó¥È²½(ʬ³ä)¤·¤Æ¤è¤ê¾®¤µ¤ÊJAR¤Ë¤¹¤ë¤³¤È¤ò¶¯¤¯¤ªÁ¦¤á¤·¤Þ¤¹¡£ -+.LP -+.LP -+¤³¤ÎÀ©¸Â¤¬²Ý¤µ¤ì¤Æ¤¤¤Ê¤¤10MB¤ÎJAR¥Ñ¥Ã¥¯¡¦¥Õ¥¡¥¤¥ë¤ÏÄ̾Ìó10%¾®¤µ¤¯¥Ñ¥Ã¥¯¤µ¤ì¤Þ¤¹¡£¤·¤«¤·¡¢¥Ñ¥Ã¥¯¡¦¥Ä¡¼¥ë¤Ç¤è¤êÂ礤ÊJava¥Ò¡¼¥×(¥»¥°¥á¥ó¥È¤ÎÀ©¸Â¤ÎÌó10ÇÜ)¤òɬÍפȤ¹¤ë¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-Evalue \-\-effort=\fP\f2value\fP -+.LP -+.LP -+ñ°ì¤Î10¿Ê¿ôÃͤò»ØÄꤷ¤¿¾ì¹ç¡¢¥Ñ¥Ã¥¯¡¦¥Ä¡¼¥ë¤Ï¡¢»ØÄꤵ¤ì¤¿°µ½ÌΨ¤Ç¥¢¡¼¥«¥¤¥Ö¤ò°µ½Ì¤·¤Þ¤¹¡£¥ì¥Ù¥ë\f21\fP¤Î¾ì¹ç¤Ï¡¢Èæ³ÓŪû¤¤°µ½Ì»þ´Ö¤Ç¤ä¤äÂ礤á¤Î¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤¹¤¬¡¢¥ì¥Ù¥ë\f29\fP¤Î¾ì¹ç¤Ï¡¢Èó¾ï¤ËŤ¤»þ´Ö¤¬¤«¤«¤ë¤â¤Î¤Î¡¢¤è¤ê°µ½ÌΨ¤Î¹â¤¤¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤¹¡£Æüì¤ÊÃÍ\f20\fP¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢¸µ¤ÎJAR¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤Ê¤·¤ÇľÀÜ¥³¥Ô¡¼¤·¤Þ¤¹¡£JSR 200ɸ½à¤Ç¤Ï¡¢¤¹¤Ù¤Æ¤Î²òÅà¥×¥í¥°¥é¥à¤¬¡¢¤³¤ÎÆÃÊ̤ʾì¹ç¤ò¥¢¡¼¥«¥¤¥ÖÁ´ÂΤΥѥ¹¥¹¥ë¡¼¤È²ò¼á¤¹¤ë¤è¤¦¤Ëµ¬Äꤷ¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ï\f25\fP¤Ç¤¹¡£¤³¤Î¾ì¹ç¡¢É¸½àŪ¤Ê»þ´Ö¤ÇŬÀڤʰµ½Ì¤¬¹Ô¤ï¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP -+.LP -+.LP -+ÆþÎϾðÊó¤òÊݸ¤¹¤ë¤È¤¤¤¦¥Ç¥Õ¥©¥ë¥ÈÃͤò¾å½ñ¤¤·¤Þ¤¹¡£Å¾Á÷¤µ¤ì¤ë¥¢¡¼¥«¥¤¥Ö¤Î¥µ¥¤¥º¤ÏÂ礤¯¤Ê¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¼¡¤ÎÃͤò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+true -+.TP 3 -+false -+¤É¤Á¤é¤Î¾ì¹ç¤Ç¤â¡¢»ØÄê¤Ë½¾¤Ã¤Æ¥Ñ¥Ã¥¯¡¦¥Ä¡¼¥ë¤¬¥Ç¥Õ¥ì¡¼¥·¥ç¥ó¡¦¥Ò¥ó¥È¤ò½ÐÎÏ¥¢¡¼¥«¥¤¥Ö¤ËÀßÄꤷ¤Þ¤¹¡£¥¢¡¼¥«¥¤¥ÖÍ×ÁǤθġ¹¤Î¥Ç¥Õ¥ì¡¼¥·¥ç¥ó¡¦¥Ò¥ó¥È¤ÏžÁ÷¤µ¤ì¤Þ¤»¤ó¡£ -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+keep -+ÆþÎÏJAR.Æâ¤Ç¸«¤Ä¤«¤Ã¤¿¥Ç¥Õ¥ì¡¼¥·¥ç¥ó¡¦¥Ò¥ó¥È¤ò°Ý»ý¤·¤Þ¤¹¡£(¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¹¡£) -+.RE -+ -+.LP -+.LP -+\f4\-mvalue \-\-modification\-time=\fP\f2value\fP -+.LP -+.LP -+¼¡¤ÎÃͤò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+latest -+¥Ñ¥Ã¥¯¡¦¥Ä¡¼¥ë¤Ï¡¢¸µ¤Î¥¢¡¼¥«¥¤¥Ö¤Î»ÈÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤Î¤¦¤Á¤ÎºÇ½ª¹¹¿·»þ¹ï¤«¡¢¤½¤Î¥»¥°¥á¥ó¥È¤Î»ÈÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤ÎºÇ½ª¹¹¿·»þ¹ï¤òÆÃÄꤷ¤è¤¦¤È¤·¤Þ¤¹¡£¤³¤Îñ°ì¤ÎÃͤϥ»¥°¥á¥ó¥È¤Î°ìÉô¤È¤·¤ÆžÁ÷¤µ¤ì¡¢³Æ¥»¥°¥á¥ó¥È¤ÎÁ´¥¨¥ó¥È¥ê¤ËŬÍѤµ¤ì¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢¤¹¤Ù¤Æ¤Î¥¤¥ó¥¹¥È¡¼¥ë¡¦¥Õ¥¡¥¤¥ë¤Ëñ°ì¤ÎÆüÉÕ¤¬ÀßÄꤵ¤ì¤ë¤È¤¤¤¦ÌäÂê¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢¥¢¡¼¥«¥¤¥Ö¤ÎžÁ÷¥µ¥¤¥º¤ò¾¯¤·¾®¤µ¤¯¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+keep -+ÆþÎÏJARÆâ¤Ç¸«¤Ä¤«¤Ã¤¿Êѹ¹»þ¹ï¤ò°Ý»ý¤·¤Þ¤¹¡£(¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¹¡£) -+.RE -+ -+.LP -+.LP -+\f4\-Pfile \-\-pass\-file=\fP\f2file\fP -+.LP -+.LP -+¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤»¤º¡¢¥Ð¥¤¥Èñ°Ì¤ÇžÁ÷¤¹¤ë¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò·«ÊÖ¤·»ÈÍѤ·¤Æ¡¢Ê£¿ô¤Î¥Õ¥¡¥¤¥ë¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥·¥¹¥Æ¥à¡¦¥Õ¥¡¥¤¥ë¡¦¥»¥Ñ¥ì¡¼¥¿¤¬JAR¥Õ¥¡¥¤¥ë¥»¥Ñ¥ì¡¼¥¿¡Ö\f2/\fP¡×¤ËÃÖ¤´¹¤¨¤é¤ì¤ëÅÀ¤ò½ü¤¡¢¥Ñ¥¹Ì¾¤ÎÊÑ´¹¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¡£·ë²Ì¤È¤·¤ÆÆÀ¤é¤ì¤ë¥Õ¥¡¥¤¥ë̾¤Ï¡¢Ê¸»úÎó¤È¤·¤ÆÀµ³Î¤ËJAR¥Õ¥¡¥¤¥ë¤Ç¤Î½Ð¸½¤È°ìÃפ·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£file¤Ë¥Ç¥£¥ì¥¯¥È¥ê̾¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤¬Å¾Á÷¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-Uaction \-\-unknown\-attribute=\fP\f2action\fP -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢ÉÔÌÀ¤Ê°À¤ò´Þ¤à¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤¿¥¢¥¯¥·¥ç¥ó¤ÇžÁ÷¤·¤Þ¤¹¡£¥¢¥¯¥·¥ç¥ó¤È¤·¤Æ»ØÄê²Äǽ¤ÊÃͤϼ¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+error -+\f2pack200\fP¤ÎÁàºîÁ´ÂΤ˼ºÇÔ¤·¡¢Å¬ÀڤʲòÀ⤬ɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+strip -+°À¤¬¥É¥í¥Ã¥×¤µ¤ì¤Þ¤¹¡£Ãí°Õ: VMɬ¿Ü°À¤òºï½ü¤¹¤ë¤È¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤Î¾ã³²¤¬È¯À¸¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+pass -+¤³¤Î°À¤¬¸¡½Ð¤µ¤ì¤¿¾ì¹ç¡¢¥¯¥é¥¹Á´ÂΤ¬1¤Ä¤Î¥ê¥½¡¼¥¹¤È¤·¤ÆžÁ÷¤µ¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+\f4\-Cattribute\-name=\fP\f2layout\fP \f3\-\-class\-attribute=\fP\f2attribute\-name=action\fP -+.br -+\f4\-Fattribute\-name=\fP\f2layout\fP \f3\-\-field\-attribute=\fP\f2attribute\-name=action\fP -+.br -+\f4\-Mattribute\-name=\fP\f2layout\fP \f3\-\-method\-attribute=\fP\f2attribute\-name=action\fP -+.br -+\f4\-Dattribute\-name=\fP\f2layout\fP \f3\-\-code\-attribute=\fP\f2attribute\-name=action\fP -+.LP -+.LP -+¤³¤ì¤é4¤Ä¤Î¥ª¥×¥·¥ç¥ó¤Ç¤Ï¡¢¥¯¥é¥¹¡¦¥¨¥ó¥Æ¥£¥Æ¥£¤ËClass°À¡¢Field°À¡¢Method°À¡¢Code°À¤Ê¤É¤Î°À¤Î¥ì¥¤¥¢¥¦¥È¤ò»ØÄê¤Ç¤¤Þ¤¹¡£attribute\-name¤Ë¤Ï¡¢¤³¤ì¤«¤é¥ì¥¤¥¢¥¦¥È¤Þ¤¿¤Ï¥¢¥¯¥·¥ç¥ó¤òÄêµÁ¤¹¤ë°À¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£¥¢¥¯¥·¥ç¥ó¤È¤·¤Æ»ØÄê²Äǽ¤ÊÃͤϼ¡¤Î¤È¤ª¤ê¤Ç¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+some\-layout\-string -+¥ì¥¤¥¢¥¦¥È¸À¸ì¤Ï¡¢JSR 200»ÅÍͤËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+Îã: \f2\-\-class\-attribute=SourceFile=RUH\fP -+.TP 3 -+error -+¤³¤Î°À¤¬¸¡½Ð¤µ¤ì¤¿¾ì¹ç¡¢pack200¤ÎÁàºî¤Ë¼ºÇÔ¤·¡¢Å¬ÀڤʲòÀ⤬ɽ¼¨¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+strip -+¤³¤Î°À¤¬¸¡½Ð¤µ¤ì¤¿¾ì¹ç¡¢Â°À¤Ï½ÐÎϤ«¤éºï½ü¤µ¤ì¤Þ¤¹¡£Ãí°Õ: VMɬ¿Ü°À¤òºï½ü¤¹¤ë¤È¥¯¥é¥¹¡¦¥í¡¼¥À¡¼¤Î¾ã³²¤¬È¯À¸¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ -+.RE -+ -+.LP -+.LP -+Îã: \f2\-\-class\-attribute=CompilationID=pass\fP¤È¤¤¤¦¤³¤Î°À¤ò´Þ¤à¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤òžÁ÷¤·¤Þ¤¹¡£¥Ñ¥Ã¥¯¡¦¥Ä¡¼¥ë¤Ï¡¢¤½¤Î¾¤Î¥¢¥¯¥·¥ç¥ó¤ò¹Ô¤¤¤Þ¤»¤ó¡£ -+.LP -+.LP -+\f4\-f\fP\f2 \fP\f2pack.properties\fP \f3\-\-config\-file=\fP\f2pack.properties\fP -+.LP -+.LP -+¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¡¢¥Ñ¥Ã¥¯¡¦¥Ä¡¼¥ë¤ò½é´ü²½¤¹¤ë¤¿¤á¤ÎJava¥×¥í¥Ñ¥Æ¥£¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¹½À®¥Õ¥¡¥¤¥ë¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f2% pack200 \-f pack.properties myarchive.pack.gz myarchive.jar\fP -+.br -+\f2% more pack.properties\fP -+.br -+\f2# Generic properties for the packer.\fP -+.br -+\f2modification.time=latest\fP -+.br -+\f2deflate.hint=false\fP -+.br -+\f2keep.file.order=false\fP -+.br -+\f2# This option will cause the files bearing new attributes to\fP -+.br -+\f2# be reported as an error rather than passed uncompressed.\fP -+.br -+\f2unknown.attribute=error\fP -+.br -+\f2# Change the segment limit to be unlimited.\fP -+.br -+\f2segment.limit=\-1\fP -+.LP -+.LP -+\f4\-v \-\-verbose\fP -+.LP -+.LP -+ºÇ¾®¸Â¤Î¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤òÊ£¿ô»ØÄꤹ¤ë¤È¡¢¤è¤êŤ¤¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-q \-\-quiet\fP -+.LP -+.LP -+¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤»¤º¤ËÆ°ºî¤¹¤ë¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-lfilename \-\-log\-file=\fP\f2filename\fP -+.LP -+.LP -+½ÐÎÏ¥á¥Ã¥»¡¼¥¸¤Î¥í¥°¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-? \-h \-\-help\fP -+.LP -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤Ë´Ø¤¹¤ë¥Ø¥ë¥×¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-V \-\-version\fP -+.LP -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤Ë´Ø¤¹¤ë¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-J\fP\f2option\fP -+.LP -+.LP -+\f2option\fP¤ò¡¢\f2pack200\fP¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤¿Javaµ¯Æ°¥Ä¡¼¥ë¤ËÅϤ·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤¬48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï\f2\-X\fP¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤Þ¤»¤ó¤¬¡¢\f2pack200\fP¤Îɸ½à¥ª¥×¥·¥ç¥ó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£\f2\-J\fP¤ò»ÈÍѤ·¤Æ¡¢Java¤Çµ½Ò¤µ¤ì¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤¹¤ëÇظå¤ÎVM¤Ë¥ª¥×¥·¥ç¥óÅϤ¹¤³¤È¤Ï¡¢¤è¤¯¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.SH "½ªÎ»¥¹¥Æ¡¼¥¿¥¹" -+.LP -+.LP -+¼¡¤Î½ªÎ»Ãͤ¬ÊÖ¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f2\ 0\fPÀµ¾ï½ªÎ»¤·¤¿¾ì¹ç -+.LP -+.LP -+\f2>0\fP¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+unpack200(1) -+.TP 2 -+o -+.na -+\f2Java SE¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/index.html -+.TP 2 -+o -+.na -+\f2Java¥Ç¥×¥í¥¤¥á¥ó¥È¡¦¥¬¥¤¥É \- Pack200\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/deployment/deployment\-guide/pack200.html -+.TP 2 -+o -+jar(1) \- Java Archive¥Ä¡¼¥ë -+.TP 2 -+o -+jarsigner(1) \- JAR½ð̾¥Ä¡¼¥ë -+.TP 2 -+o -+\f2attributes(5)\fP¤Î¥Þ¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸ -+.RE -+ -+.LP -+.SH "Ãí°Õ" -+.LP -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤È\f2pack(1)\fP¤òº®Æ±¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¤³¤ì¤é¤ÏÊÌÀ½ÉʤǤ¹¡£ -+.LP -+.LP -+JDK¤ËÉÕ°¤¹¤ëJava SE API»ÅÍͤȤÎÁê°ã¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢»ÅÍͤòÍ¥À褷¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/policytool.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/policytool.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,102 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH policytool 1 "07 May 2011" -+.TH policytool 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+policytool \- PolicyTool´ÉÍýGUI¥æ¡¼¥Æ¥£¥ê¥Æ¥£ -+.LP -+\f3policytool\fP¤Ï¡¢¥æ¡¼¥Æ¥£¥ê¥Æ¥£GUI·Ðͳ¤Ç¼èÆÀ¤·¤¿¥æ¡¼¥¶¡¼ÆþÎϤ˴ð¤Å¤¤¤Æ¡¢¥×¥ì¡¼¥ó¡¦¥Æ¥¥¹¥È¤Î¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤òÆɤ߽ñ¤¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.LP -+policytool´ÉÍý¼Ô¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ò¼Â¹Ô¤·¤Þ¤¹ -+.LP -+.LP -+\f4policytool\fP -+.LP -+.LP -+policytool¤ò¼Â¹Ô¤·¡¢»ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ß¤Þ¤¹ -+.LP -+.LP -+\f4policytool\fP\f2[\-file\ \fP\f2filename\fP\f2]\fP -+.LP -+.LP -+ÀâÌÀ -+.LP -+.RS 3 -+.TP 3 -+file -+¥í¡¼¥«¥ë¡¦¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤è¤¦¤Ë\f2policytool\fP¤Ë»Ø¼¨¤·¤Þ¤¹ -+.TP 3 -+filename -+¥Õ¥¡¥¤¥ë̾ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3policytool\fP¤Ï¡¢¥æ¡¼¥¶¡¼¤¬¥í¡¼¥«¥ë¡¦¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ÎÆâÍƤò´ÉÍý¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤¹¤ëGUI¤Ç¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ëºîÀ®¤ª¤è¤Ó´ÉÍý¥Ä¡¼¥ë\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyGuide.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+file -+\f2filename\fP¤òÆɤ߹þ¤ß¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.na -+\f2¥Ç¥Õ¥©¥ë¥È¤Î¥Ý¥ê¥·¡¼¼ÂÁõ¤ª¤è¤Ó¹½Ê¸\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html -+.br -+ -+.LP -+.na -+\f2¥Ý¥ê¥·¡¼¡¦¥Ä¡¼¥ë¡¦¥æ¡¼¥¶¡¼¥º¡¦¥¬¥¤¥É\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyGuide.html -+.br -+ -+.LP -+.na -+\f2¥»¥¥å¥ê¥Æ¥£¸¢¸Â\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/permissions.html -+.br -+ -+.LP -+.na -+\f2¥»¥¥å¥ê¥Æ¥£¤Î³µÍ×\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/security/overview/jsoverview.html -+.br -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/rmic.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/rmic.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,209 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH rmic 1 "07 May 2011" -+.TH rmic 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+rmic \- Java RMI¥³¥ó¥Ñ¥¤¥é -+.LP -+.LP -+\f3rmic\fP¤Ë¤è¤Ã¤Æ¡¢JRMP¤Þ¤¿¤ÏIIOP¥×¥í¥È¥³¥ë¤ò»ÈÍѤ¹¤ë¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¹¥¿¥Ö¡¢¥¹¥±¥ë¥È¥ó¡¢¤ª¤è¤ÓTie¥¯¥é¥¹¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢OMG IDL¤âÀ¸À®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+rmic [ \fP\f3options\fP\f3 ] \fP\f4package\-qualified\-class\-name(s)\fP\f3 -+.fl -+\fP -+.fi -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3rmic\fP¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤Ã¤Æ¡¢¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¡¢¥¹¥¿¥Ö¡¢¥¹¥±¥ë¥È¥ó¡¦¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë(JRMP¥×¥í¥È¥³¥ë)¡¢¤ª¤è¤Ó¥¹¥¿¥Ö¤ÈTie¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎÁȹ礻(IIOP¥×¥í¥È¥³¥ë)¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¼ÂÁõ¥¯¥é¥¹¤Ç¤¢¤ë¤³¤ì¤é¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Ï¡¢Java¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î¥¯¥é¥¹¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤È¤¤ËÀ¸À®¤µ¤ì¤Þ¤¹¡£¥ê¥â¡¼¥È¼ÂÁõ¥¯¥é¥¹¤Ï¡¢\f2java.rmi.Remote\fP¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤¹¤ë¥¯¥é¥¹¤Ç¤¹¡£\f3rmic\fP¥³¥Þ¥ó¥É¤Ç¤Î¥¯¥é¥¹Ì¾¤Ï¡¢¤½¤Î¥¯¥é¥¹¤¬\f3javac\fP¥³¥Þ¥ó¥É¤Ç¥³¥ó¥Ñ¥¤¥ë¤¬À®¸ù¤·¤Æ¤¤¤Æ¡¢¤«¤Ä´°Á´½¤¾þ¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë̾\f2HelloImpl\fP¤Ç\f3rmic\fP¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+rmic hello.HelloImpl -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f2HelloImpl_Stub.class\fP¥Õ¥¡¥¤¥ë¤¬¡¢¥¯¥é¥¹¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤¬ÉÕ¤¤¤¿\f2hello\fP¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î\f2¥¹¥±¥ë¥È¥ó\fP¤ÏJRMP¥×¥í¥È¥³¥ë¡¦¥µ¡¼¥Ð¡¼Â¦¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ç¡¢¼ÂºÝ¤Î¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¼ÂÁõ¤ò¸Æ¤Ó½Ð¤¹¥á¥½¥Ã¥É¤ò´Þ¤ß¤Þ¤¹¡£ -+.LP -+.LP -+¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î\f2Tie\fP¤Ï¡¢¥¹¥±¥ë¥È¥ó¤ÈƱÍͤ˥µ¡¼¥Ð¡¼Â¦¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ç¤¹¤¬¡¢IIOP¥×¥í¥È¥³¥ë¤ò»ÈÍѤ·¤Æ¥¯¥é¥¤¥¢¥ó¥È¤ÈÄÌ¿®¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2¥¹¥¿¥Ö\fP¤È¤Ï¡¢¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¤ÎÂåÍý¤Ç¤¹¡£¥¹¥¿¥Ö¤Ï¡¢¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥á¥½¥Ã¥É¸Æ½Ð¤·¤ò¡¢¼Âʪ¤Î¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤¬¾ïÃ󤹤륵¡¼¥Ð¡¼¤ÈÄÌ¿®¤¹¤ëÌò³ä¤ò»ý¤Á¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥¯¥é¥¤¥¢¥ó¥È¤Î¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î»²¾È¤Ï¡¢¼ÂºÝ¤Ï¥í¡¼¥«¥ë¡¦¥¹¥¿¥Ö¤Ø¤Î»²¾È¤È¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Ç\f3rmic\fP¤Ç¤Ï¡¢1.2 JRMP¥¹¥¿¥Ö¡¦¥×¥í¥È¥³¥ë¡¦¥Ð¡¼¥¸¥ç¥ó¤Î¤ß¤ò»ÈÍѤ¹¤ë¥¹¥¿¥Ö¡¦¥¯¥é¥¹¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤ì¤Ï¡¢\f2\-v1.2\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¤ÈƱ¤¸Æ°ºî¤Ç¤¹¡£(5.0°ÊÁ°¤Ç¤Ï\f2\-vcompat\fP¥ª¥×¥·¥ç¥ó¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤Ã¤¿¤³¤È¤ËÃí°Õ¡£)IIOP¥×¥í¥È¥³¥ëÍѤΥ¹¥¿¥Ö¤ª¤è¤ÓTie¥¯¥é¥¹¤òÀ¸À®¤¹¤ë¤Ë¤Ï\f2\-iiop\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.LP -+¥¹¥¿¥Ö¤Ï¥ê¥â¡¼¥È¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¤ß¤ò¼ÂÁõ¤·¡¢¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤¬¼ÂÁõ¤¹¤ë¥í¡¼¥«¥ë¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¼ÂÁõ¤·¤Æ¤¤¤Þ¤»¤ó¡£JRMP¥¹¥¿¥Ö¤Ï¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¼«ÂΤ¬¼ÂÁõ¤¹¤ë¥ê¥â¡¼¥È¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÈƱ¤¸¤â¤Î¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¤Î¤Ç¡¢¥¯¥é¥¤¥¢¥ó¥È¤Ï¡¢¥¥ã¥¹¥È¤ä·¿¥Á¥§¥Ã¥¯¤ËJava¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤ËÁȤ߹þ¤Þ¤ì¤¿±é»»»Ò¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£IIOP¤Î¾ì¹ç¤Ï¡¢\f2PortableRemoteObject.narrow\fP¥á¥½¥Ã¥É¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-bootclasspath path -+¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î°ÌÃÖ¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£ -+.TP 3 -+\-classpath path -+\f3rmic\fP¤¬¥¯¥é¥¹¤òõ¤¹¤¿¤á¤Î¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤äCLASSPATH´Ä¶ÊÑ¿ôÀßÄê¤ò¾å½ñ¤¤·¤Þ¤¹¡£¥Ç¥£¥ì¥¯¥È¥ê¤Ï¥³¥í¥ó¤Çʬ³ä¤·¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢\f2path\fP¤Î°ìÈÌ·Á¼°¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+.:<your_path> -+.fl -+\fP -+.fi -+¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+.:/usr/local/java/classes -+.fl -+\fP -+.fi -+.TP 3 -+\-d directory -+À¸À®¤µ¤ì¤¿¥¯¥é¥¹³¬ÁؤνÐÎÏÀè¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ë¡¼¥È¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¥¹¥¿¥Ö¡¢¥¹¥±¥ë¥È¥ó¡¢¤ª¤è¤ÓTie¥Õ¥¡¥¤¥ë¤ò³ÊǼ¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë»ÈÍѤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+% rmic \-d /java/classes foo.MyClass -+.fl -+\fP -+.fi -+\f2MyClass\fP¤«¤é¼èÆÀ¤·¤¿¥¹¥¿¥Ö¤È¥¹¥±¥ë¥È¥ó¡¦¥¯¥é¥¹¤ò\f2/java/classes/foo\fP¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¤Þ¤¹¡£\f2\-d\fP¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢\f2¡Ö\-d\ .¡×\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£¥¿¡¼¥²¥Ã¥È¡¦¥¯¥é¥¹¤Î¥Ñ¥Ã¥±¡¼¥¸³¬Áؤ¬¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËºîÀ®¤µ¤ì¡¢¥¹¥¿¥Ö¡¢Tie¡¢¤ª¤è¤Ó¥¹¥±¥ë¥È¥ó¡¦¥Õ¥¡¥¤¥ë¤¬¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£(°ÊÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Î\f3rmic\fP¤Ç¤Ï¡¢\f2\-d\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸³¬ÁؤϺîÀ®\f2¤µ¤ì¤º\fP¡¢½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï¤¹¤Ù¤Æ¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËľÀܳÊǼ¤µ¤ì¤Æ¤¤¤¿¡£) -+.br -+\ -+.TP 3 -+\-extdirs path -+¥¤¥ó¥¹¥È¡¼¥ë·¿³ÈÄ¥µ¡Ç½¤Î°ÌÃÖ¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Þ¤¹¡£ -+.TP 3 -+\-g -+¥í¡¼¥«¥ëÊÑ¿ô¤ò´Þ¤à¤¹¤Ù¤Æ¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤òÀ¸À®¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¹ÔÈÖ¹æ¾ðÊó¤Î¤ßÀ¸À®¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-idl -+\f2rmic\fP¤Ë¤è¤Ã¤Æ¡¢»ØÄꤷ¤¿¥¯¥é¥¹¤ª¤è¤Ó»²¾È¤µ¤ì¤¿¥¯¥é¥¹¤ÎOMG IDL¤¬À¸À®¤µ¤ì¤Þ¤¹¡£IDL¤Ç¤Ï¡¢¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ë°Í¸¤»¤º¤Ë¡¢Àë¸À¤¹¤ë¤À¤±¤Ç¥ª¥Ö¥¸¥§¥¯¥È¤ÎAPI¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£IDL¤Ï¡¢¥á¥½¥Ã¥É¤ª¤è¤Ó¥Ç¡¼¥¿¤Î»ÅÍͤȤ·¤Æ»ÈÍѤ·¤Þ¤¹¡£CORBA¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÄ󶡤¹¤ëǤ°Õ¤Î¸À¸ì¤Ç¡¢¥á¥½¥Ã¥É¤ª¤è¤Ó¥Ç¡¼¥¿¤ÎºîÀ®¤ª¤è¤Ó¸Æ½Ð¤·¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ì¤é¤Î¸À¸ì¤Ë¤Ï¡¢Java¤ª¤è¤ÓC++¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2Java ¸À¸ì¤ÈIDL¤Î¥Þ¥Ã¥Ô¥ó¥°\fP @ -+.fi -+http://www.omg.org/technology/documents/formal/java_language_mapping_to_omg_idl.htm(OMG)¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.br -+\f2\-idl\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¤¤Ë¤Ï¡¢Â¾¤Î¥ª¥×¥·¥ç¥ó¤â»ØÄê¤Ç¤¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+\-always¤Þ¤¿¤Ï\-alwaysgenerate -+´û¸¤Î¥¹¥¿¥Ö¡¢Tie¡¢¤ª¤è¤ÓIDL¤¬ÆþÎÏ¥¯¥é¥¹¤è¤ê¿·¤·¤¤¤È¤¤Ç¤â¡¢¶¯À©Åª¤ËÀ¸À®¤·Ä¾¤·¤Þ¤¹¡£ -+.TP 3 -+\-factory -+À¸À®¤µ¤ì¤¿IDL¤Çfactory¥¡¼¥ï¡¼¥É¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.TP 3 -+\-idlModule\ fromJavaPackage[.class]\ toIDLModule -+IDLEntity¥Ñ¥Ã¥±¡¼¥¸¤Î¥Þ¥Ã¥×¤ò»ØÄꤷ¤Þ¤¹¡£Îã¤ò¼¨¤·¤Þ¤¹¡£\ \f2\-idlModule foo.bar my::real::idlmod\fP -+.TP 3 -+\-idlFile\ fromJavaPackage[.class]\ toIDLFile -+IDLEntity¥Õ¥¡¥¤¥ë¤Î¥Þ¥Ã¥×¤ò»ØÄꤷ¤Þ¤¹¡£Îã¤ò¼¨¤·¤Þ¤¹¡£\ \f2\-idlFile test.pkg.X TEST16.idl\fP\ -+.RE -+.TP 3 -+\-iiop -+\f2rmic\fP¤Ë¤è¤Ã¤Æ¡¢JRMP¤Î¥¹¥¿¥Ö¤È¥¹¥±¥ë¥È¥ó¡¦¥¯¥é¥¹¤Î¤«¤ï¤ê¤Ë¡¢IIOP¤Î¥¹¥¿¥Ö¤ÈTie¥¯¥é¥¹¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¥¹¥¿¥Ö¡¦¥¯¥é¥¹¤Ï¡¢¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥í¡¼¥«¥ë¡¦¥×¥í¥¥·¤Ç¡¢¥¯¥é¥¤¥¢¥ó¥È¤«¤é¥µ¡¼¥Ð¡¼¤Ë¸Æ½Ð¤·¤òÁ÷¿®¤¹¤ë¤È¤¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£³Æ¥ê¥â¡¼¥È¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë¤Ï¥¹¥¿¥Ö¡¦¥¯¥é¥¹¤¬É¬ÍפǤ¹¡£¥¹¥¿¥Ö¡¦¥¯¥é¥¹¤Ë¤è¤Ã¤Æ¥ê¥â¡¼¥È¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¬¼ÂÁõ¤µ¤ì¤Þ¤¹¡£¥¯¥é¥¤¥¢¥ó¥È¤Ç¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò»²¾È¤¹¤ë¤È¤¤Ï¡¢¼ÂºÝ¤Ë¤Ï¥¹¥¿¥Ö¤ò»²¾È¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¥¿¥¤¡¦¥¯¥é¥¹¤Ï¡¢¥µ¡¼¥Ð¡¼Â¦¤ÇÃå¸Æ¤ò½èÍý¤·¡¢¤½¤Î¸Æ½Ð¤·¤òŬÀڤʼÂÁõ¥¯¥é¥¹¤Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¤¹¤ë¤È¤¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£³Æ¼ÂÁõ¥¯¥é¥¹¤Ë¤Ï¡¢¥¿¥¤¡¦¥¯¥é¥¹¤¬É¬ÍפǤ¹¡£ -+.br -+.br -+\f2\-iiop\fP¤ò»ÈÍѤ·¤Æ\f2rmic\fP¤ò¸Æ¤Ó½Ð¤¹¤È¡¢¼¡¤Î̿̾µ¬Ìó¤Ë½àµò¤·¤¿¥¹¥¿¥Ö¤ÈTie¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+_<implementationName>_stub.class -+.fl -+_<interfaceName>_tie.class -+.fl -+\fP -+.fi -+\f2\-iiop\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¤¤Ë¤Ï¡¢Â¾¤Î¥ª¥×¥·¥ç¥ó¤â»ØÄê¤Ç¤¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+\-always¤Þ¤¿¤Ï\-alwaysgenerate -+´û¸¤Î¥¹¥¿¥Ö¡¢Tie¡¢¤ª¤è¤ÓIDL¤¬ÆþÎÏ¥¯¥é¥¹¤è¤ê¿·¤·¤¤¤È¤¤Ç¤â¡¢¶¯À©Åª¤ËÀ¸À®¤·Ä¾¤·¤Þ¤¹¡£ -+.TP 3 -+\-nolocalstubs -+Ʊ¤¸¥×¥í¥»¥¹¤Î¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¡¼¤ËÂФ·¤ÆºÇŬ²½¤µ¤ì¤¿¥¹¥¿¥Ö¤òºîÀ®¤·¤Þ¤»¤ó¡£ -+.TP 3 -+\-noValueMethods -+¤³¤ì¤Ï\f2\-idl\fP¥ª¥×¥·¥ç¥ó¤È¤È¤â¤Ë»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£È¯¹Ô¤µ¤ì¤¿IDL¤Ë¡¢\f2valuetype\fP¥á¥½¥Ã¥É¤ª¤è¤Ó½é´ü²½»Ò¤òÄɲä·¤Þ¤»¤ó¡£¤³¤Î¥á¥½¥Ã¥É¤ª¤è¤Ó½é´ü²½»Ò¤Ï¡¢\f2valuetype\fP¤Î¾ì¹ç¤Ï¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£\f2\-idl\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¤¤Ë¡¢\f2\-noValueMethods\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¸Â¤êÀ¸À®¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-poa -+·Ñ¾µ¤¬\f2org.omg.CORBA_2_3.portable.ObjectImpl\fP¤«¤é\f2org.omg.PortableServer.Servant\fP¤ËÊѤï¤ê¤Þ¤¹¡£ -+.na -+\f2Portable Object Adapter\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/POA.html(POA)¤Î\f2PortableServer\fP¥â¥¸¥å¡¼¥ë¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¤Î\f2Servant\fP·¿¤òÄêµÁ¤·¤Þ¤¹¡£Java¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ç¤Ï¡¢\f2Servant\fP·¿¤ÏJava¤Î\f2org.omg.PortableServer.Servant\fP¥¯¥é¥¹¤Ë¥Þ¥Ã¥×¤µ¤ì¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤Ï¡¢¤¹¤Ù¤Æ¤ÎPOA¥µ¡¼¥Ð¥ó¥È¼ÂÁõ¤Î¥Ù¡¼¥¹¡¦¥¯¥é¥¹¤È¤·¤Æµ¡Ç½¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥×¥í¥°¥é¥Þ¤¬¸Æ¤Ó½Ð¤¹¤³¤È¤Î¤Ç¤¤ë¤¤¤¯¤Ä¤«¤Î¥á¥½¥Ã¥É¤Î¾¤Ë¡¢POA¤½¤Î¤â¤Î¤Ë¤è¤Ã¤Æ¸Æ¤Ó½Ð¤µ¤ì¡¢¥µ¡¼¥Ð¥ó¥È¤ÎÆ°ºî¤òÀ©¸æ¤¹¤ë¤¿¤á¤Ë¥æ¡¼¥¶¡¼¤¬¥ª¡¼¥Ð¡¼¥é¥¤¥É¤Ç¤¤ë¥á¥½¥Ã¥É¤âÄ󶡤·¤Þ¤¹¡£OMG IDL to Java Language Mapping Specification¡¢CORBA V 2.3.1 ptc/00\-01\-08.pdf¤Ë½àµò¤·¤Æ¤¤¤Þ¤¹¡£ -+.RE -+.TP 3 -+\-J -+\f2\-J\fP¤Î¸å¤í¤Ë³¤¯¥ª¥×¥·¥ç¥ó¤ò\f2java\fP¥¤¥ó¥¿¥×¥ê¥¿¤Ë°ú¤ÅϤ·¤Þ¤¹¡£\f2java\fP¥ª¥×¥·¥ç¥ó¤ÈÁȤ߹礻¤Æ»ÈÍѤ·¤Þ¤¹(\-J¤Èjava¥ª¥×¥·¥ç¥ó¤Î´Ö¤Ë¥¹¥Ú¡¼¥¹¤ÏÆþ¤ì¤Ê¤¤)¡£ -+.TP 3 -+\-keep¤Þ¤¿¤Ï\-keepgenerated -+¥¹¥¿¥Ö¡¢¥¹¥±¥ë¥È¥ó¡¢¤Þ¤¿¤ÏTie¥¯¥é¥¹¤Î¤¿¤á¤Î\f2.java\fP¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò\f2.class\fP¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë»Ä¤·¤Þ¤¹¡£ -+.TP 3 -+\-nowarn -+·Ù¹ð¤ò¥ª¥Õ¤Ë¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢¥³¥ó¥Ñ¥¤¥é¤Ï·Ù¹ð¤òɽ¼¨¤·¤Þ¤»¤ó¡£ -+.TP 3 -+\-nowrite -+¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥¯¥é¥¹¤ò¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ë½ñ¤¹þ¤ß¤Þ¤»¤ó¡£ -+.TP 3 -+\-vcompat -+1.1¤È1.2¤ÎξÊý¤ÎJRMP¥¹¥¿¥Ö¡¦¥×¥í¥È¥³¥ë¡¦¥Ð¡¼¥¸¥ç¥ó¤È¸ß´¹À¤Î¤¢¤ë¥¹¥¿¥Ö¤ª¤è¤Ó¥¹¥±¥ë¥È¥ó¡¦¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£(5.0°ÊÁ°¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥Ç¥Õ¥©¥ë¥È¡£)À¸À®¤µ¤ì¤¿¥¹¥¿¥Ö¡¦¥¯¥é¥¹¤Ï¡¢JDK 1.1²¾ÁÛ¥Þ¥·¥ó¤Ë¥í¡¼¥É¤µ¤ì¤ë¤È1.1¥¹¥¿¥Ö¡¦¥×¥í¥È¥³¥ë¡¦¥Ð¡¼¥¸¥ç¥ó¤ò»ÈÍѤ·¡¢JDK 1.2°Ê¹ß¤Î²¾ÁÛ¥Þ¥·¥ó¤Ë¥í¡¼¥É¤µ¤ì¤ë¤È1.2¥¹¥¿¥Ö¡¦¥×¥í¥È¥³¥ë¡¦¥Ð¡¼¥¸¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£À¸À®¤µ¤ì¤¿¥¹¥±¥ë¥È¥ó¡¦¥¯¥é¥¹¤Ç¤Ï¡¢1.1¤È1.2¤ÎξÊý¤Î¥¹¥¿¥Ö¡¦¥×¥í¥È¥³¥ë¡¦¥Ð¡¼¥¸¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£À¸À®¤µ¤ì¤¿¥¯¥é¥¹¤ÏξÊý¤ÎÁàºî¥â¡¼¥É¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë¡¢¥µ¥¤¥º¤¬Â礤¯¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+\-verbose -+¥³¥ó¥Ñ¥¤¥é¤ä¥ê¥ó¥«¡¼¤¬¡¢¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Æ¤¤¤ë¥¯¥é¥¹¤ä¥í¡¼¥É¤µ¤ì¤Æ¤¤¤ë¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¤Î¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ -+.TP 3 -+\-v1.1 -+1.1 JRMP¥¹¥¿¥Ö¡¦¥×¥í¥È¥³¥ë¡¦¥Ð¡¼¥¸¥ç¥ó¤Î¤ß¤Î¥¹¥¿¥Ö¤ª¤è¤Ó¥¹¥±¥ë¥È¥ó¡¦¥¯¥é¥¹¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ÈÍѤǤ¤ë¤Î¤Ï¡¢JDK 1.1¤«¤é\f3rmic\fP¥Ä¡¼¥ë¤ÇÀ¸À®¤µ¤ì¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ç¤¤Ê¤¤(¤µ¤é¤Ë¥À¥¤¥Ê¥ß¥Ã¥¯¡¦¥¯¥é¥¹¡¦¥í¡¼¥Ç¥£¥ó¥°¤ò»ÈÍѤ·¤Æ¤¤¤Ê¤¤)¡¢´û¸¤ÎÀÅŪ¥Ç¥×¥í¥¤¤µ¤ì¤¿¥¹¥¿¥Ö¡¦¥¯¥é¥¹¤ËÂФ·¡¢Ä¾Î󲽸ߴ¹À¤Î¤¢¤ë¥¹¥¿¥Ö¡¦¥¯¥é¥¹¤òÀ¸À®¤¹¤ë¾ì¹ç¤Î¤ß¤Ç¤¹¡£ -+.TP 3 -+\-v1.2 -+(¥Ç¥Õ¥©¥ë¥È)1.2 JRMP¥¹¥¿¥Ö¡¦¥×¥í¥È¥³¥ë¡¦¥Ð¡¼¥¸¥ç¥ó¤Î¤ß¤Î¥¹¥¿¥Ö¡¦¥¯¥é¥¹¤òÀ¸À®¤·¤Þ¤¹¡£¥¹¥±¥ë¥È¥ó¡¦¥¯¥é¥¹¤Ï1.2¥¹¥¿¥Ö¡¦¥×¥í¥È¥³¥ë¡¦¥Ð¡¼¥¸¥ç¥ó¤Ç»ÈÍѤǤ¤Ê¤¤¤¿¤á¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¤Ï¥¹¥±¥ë¥È¥ó¡¦¥¯¥é¥¹¤ÏÀ¸À®¤µ¤ì¤Þ¤»¤ó¡£À¸À®¤µ¤ì¤¿¥¹¥¿¥Ö¡¦¥¯¥é¥¹¤Ï¡¢JDK 1.1²¾ÁÛ¥Þ¥·¥ó¤Ë¥í¡¼¥É¤µ¤ì¤Æ¤âÆ°ºî¤·¤Þ¤»¤ó¡£ -+.RE -+ -+.LP -+.SH "´Ä¶ÊÑ¿ô" -+.LP -+.RS 3 -+.TP 3 -+CLASSPATH -+¥æ¡¼¥¶¡¼ÄêµÁ¥¯¥é¥¹¤Ø¤Î¥Ñ¥¹¤ò¥·¥¹¥Æ¥à¤Ë»ØÄꤷ¤Þ¤¹¡£¥Ç¥£¥ì¥¯¥È¥ê¤Ï¥³¥í¥ó¤Çʬ³ä¤·¤Þ¤¹¡£¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+.:/usr/local/java/classes -+.fl -+\fP -+.fi -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.LP -+java(1)¡¢javac(1)¡¢ -+.na -+\f2CLASSPATH\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#classpath -+.LP -+ ---- jdk/src/bsd/doc/man/ja/rmid.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/rmid.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,310 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH rmid 1 "07 May 2011" -+.TH rmid 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+rmid \- Java RMIµ¯Æ°¥·¥¹¥Æ¥à¡¦¥Ç¡¼¥â¥ó -+.LP -+.LP -+\f3rmid\fP¤Ç¥¢¥¯¥Æ¥£¥Ö²½¤¹¤ë¥·¥¹¥Æ¥à¡¦¥Ç¡¼¥â¥ó¤ò³«»Ï¤¹¤ë¤È¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò²¾ÁÛ¥Þ¥·¥ó(VM)¤ËÅÐÏ¿¤·¤Æ¥¢¥¯¥Æ¥£¥Ö²½¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+rmid [options] -+.fl -+\fP -+.fi -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3rmid\fP¥Ä¡¼¥ë¤Ï¡¢µ¯Æ°¥·¥¹¥Æ¥à¡¦¥Ç¡¼¥â¥ó¤ò³«»Ï¤·¤Þ¤¹¡£¥¢¥¯¥Æ¥£¥Ö²½¥·¥¹¥Æ¥à¡¦¥Ç¡¼¥â¥ó¤ò³«»Ï¤·¤Æ¤«¤é¤Ç¤Ê¤¤¤È¡¢¥¢¥¯¥Æ¥£¥Ö²½²Äǽ¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥¯¥Æ¥£¥Ö²½¥·¥¹¥Æ¥à¤ËÅÐÏ¿¤·¤¿¤ê¡¢VMÆâ¤Ç¥¢¥¯¥Æ¥£¥Ö²½¤·¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤»¤ó¡£µ¯Æ°²Äǽ¤Ê¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ·¤¿¥×¥í¥°¥é¥à¤ÎºîÀ®ÊýË¡¤Î¾ÜºÙ¤Ï¡¢ -+.na -+\f2Java RMI»ÅÍÍ\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/platform/rmi/spec/rmiTOC.html¤ª¤è¤Ó -+.na -+\f2µ¯Æ°¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/activation/overview.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+¥Ç¡¼¥â¥ó¤òµ¯Æ°¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¡¢¥»¥¥å¥ê¥Æ¥£¡¦¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Æ\f2rmid\fP¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ rmid \-J\-Djava.security.policy=rmid.policy -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+\f3Ãí°Õ:\fP \f2rmid\fP¤ÎSun¤Î¼ÂÁõ¤ò¼Â¹Ô¤¹¤ë¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥»¥¥å¥ê¥Æ¥£¡¦¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤ì¤Ï¡¢\f2rmid\fP¤¬µ¯Æ°¥°¥ë¡¼¥×ÍѤËVM¤òµ¯Æ°¤¹¤ë¤¿¤á¤Ë³Æ\f2ActivationGroupDesc\fPÆâ¤Î¾ðÊó¤ò»ÈÍѤǤ¤ë¤«¤É¤¦¤«¤ò¸¡¾Ú¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ç¤¹¡£Æäˡ¢\f2ActivationGroupDesc\fP¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤ËÅϤµ¤ì¤ë\f2CommandEnvironment\fP¤äǤ°Õ¤Î\f2Properties\fP¤Ë¤è¤Ã¤Æ»ØÄꤵ¤ì¤ë¥³¥Þ¥ó¥É¤ª¤è¤Ó¥ª¥×¥·¥ç¥ó¤Ï¡¢\f2rmid\fP¤Î¥»¥¥å¥ê¥Æ¥£¡¦¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÇÌÀ¼¨Åª¤Ëµö²Ä¤¹¤ë¤³¤È¤¬É¬Íפˤʤê¤Þ¤·¤¿¡£\f2sun.rmi.activation.execPolicy\fP¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϡ¢µ¯Æ°¥°¥ë¡¼¥×ÍѤËVM¤òµ¯Æ°¤¹¤ë¤¿¤á¤Ë\f2ActivationGroupDesc\fPÆâ¤Î¾ðÊó¤ò»ÈÍѤǤ¤ë¤«¤É¤¦¤«¤òȽÃǤ¹¤ë¤È¤¤Ë\f2rmid\fP¤¬»ÈÍѤ¹¤ë¥Ý¥ê¥·¡¼¤ò·èÄꤷ¤Þ¤¹¡£ -+.LP -+.LP -+\f2rmid\fP¤ò¥Ç¥Õ¥©¥ë¥ÈÀßÄê¤Ç¼Â¹Ô¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ê½èÍý¤¬¹Ô¤ï¤ì¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+¥¢¥¯¥Æ¥£¥Ù¡¼¥¿¤òµ¯Æ°¤·¡¢¥Ç¥Õ¥©¥ë¥È¡¦¥Ý¡¼¥È1098¤ÇÆâÉô¥ì¥¸¥¹¥È¥ê¤òµ¯Æ°¤¹¤ë -+.TP 2 -+o -+¤³¤ÎÆâÉô¥ì¥¸¥¹¥È¥ê¤ÎÃæ¤Ç¡¢\f2ActivationSystem\fP¤ò\f2java.rmi.activation.ActivationSystem¤È¤¤¤¦Ì¾Á°¤Ë\fP¥Ð¥¤¥ó¥É¤¹¤ë -+.RE -+ -+.LP -+.LP -+¥ì¥¸¥¹¥È¥ê¤Ë¾¤Î¥Ý¡¼¥È¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢\f2rmid\fP¤Îµ¯Æ°»þ¤Ë\f2\-port\fP¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ rmid \-J\-Djava.security.policy=rmid.policy \-port 1099 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢µ¯Æ°¥·¥¹¥Æ¥à¡¦¥Ç¡¼¥â¥ó¤ò³«»Ï¤·¡¢¥ì¥¸¥¹¥È¥ê¤Î¥Ç¥Õ¥©¥ë¥È¡¦¥Ý¡¼¥È1099¤Ç¥ì¥¸¥¹¥È¥ê¤ò³«»Ï¤·¤Þ¤¹¡£ -+.LP -+.SS -+rmid¤òinetd/xinetd¤«¤é³«»Ï¤¹¤ë -+.LP -+.LP -+\f2rmid\fP¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é³«»Ï¤¹¤ë¤Ë¤Ï¡¢\f2inetd\fP(Solaris¤Î¾ì¹ç)¡¢¤Þ¤¿¤Ï\f2xinetd\fP(Linux¤Î¾ì¹ç)¤ò¹½À®¤·¤Æ\f2rmid\fP¤òɬÍפ˱þ¤¸¤Æ³«»Ï¤¹¤ëÊýË¡¤â¤¢¤ê¤Þ¤¹¡£ -+.LP -+.LP -+\f2rmid\fP¤ò³«»Ï¤¹¤ë¤È¡¢\f2System.inheritedChannel\fP¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢·Ñ¾µ¤µ¤ì¤¿¥Á¥ã¥ó¥Í¥ë(\f2inetd\fP/\f2xinetd\fP¤«¤é·Ñ¾µ)¤ò¼èÆÀ¤·¤è¤¦¤È¤·¤Þ¤¹¡£·Ñ¾µ¤µ¤ì¤¿¥Á¥ã¥ó¥Í¥ë¤¬\f2null\fP¤Ç¤¢¤ë¤«¡¢\f2java.nio.channels.ServerSocketChannel\fP¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤Ê¤«¤Ã¤¿¾ì¹ç¡¢\f2rmid\fP¤Ï¤½¤Î¥Á¥ã¥ó¥Í¥ë¤Ï\f2inetd\fP/\f2xinetd\fP¤Ë¤è¤Ã¤Æµ¯Æ°¤µ¤ì¤¿¤â¤Î¤Ç¤Ï¤Ê¤¤¤ÈȽÃǤ·¡¢Á°½Ò¤Î¤è¤¦¤Ëµ¯Æ°¤·¤Þ¤¹¡£ -+.LP -+.LP -+·Ñ¾µ¤µ¤ì¤¿¥Á¥ã¥ó¥Í¥ë¤¬\f2ServerSocketChannel\fP¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¢¤ë¾ì¹ç¤Ï¡¢\f2rmid\fP¤Ï¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¡¢¤Ä¤Þ¤ê\f2java.rmi.activation.ActivationSystem\fP¤¬¥Ð¥¤¥ó¥É¤µ¤ì¤Æ¤¤¤ë¥ì¥¸¥¹¥È¥ê¤È\f2java.rmi.activation.Activator\fP¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ¹¤ë¥ê¥¯¥¨¥¹¥È¤ò¼õ¿®¤¹¤ë¥µ¡¼¥Ð¡¼¡¦¥½¥±¥Ã¥È¤È¤·¤Æ¡¢\f2ServerSocketChannel\fP¤«¤é¼èÆÀ¤·¤¿\f2java.net.ServerSocket\fP¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¥â¡¼¥É¤Ç¤Ï¡¢\f2rmid\fP¤ÎÆ°ºî¤Ï¡¢\f2¼¡¤Î¤³¤È¤ò½ü¤¤¤Æ\fP¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤éµ¯Æ°¤·¤¿¾ì¹ç¤ÈƱ¤¸¤Ç¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+\f2System.err\fP¤ËÂФ¹¤ë½ÐÎϤϡ¢¥Õ¥¡¥¤¥ë¤Ë¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤ë¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï\f2java.io.tmpdir\fP¥·¥¹¥Æ¥à¡¦¥×¥í¥Ñ¥Æ¥£¤Ç»ØÄꤵ¤ì¤ë¥Ç¥£¥ì¥¯¥È¥ê(Ä̾ï¤Ï\f2/var/tmp\fP¤Þ¤¿¤Ï\f2/tmp\fP)¤Ë¤¢¤ë¡£¥Õ¥¡¥¤¥ë̾¤ÎÀÜƬ¼¤Ï\f2"rmid\-err"\fP¤Ç¡¢ÀÜÈø¼¤Ï\f2"tmp"\fP¤Ç¤¢¤ë¡£ -+.TP 2 -+o -+\f2\-port\fP¥ª¥×¥·¥ç¥ó¤ÏµñÈݤµ¤ì¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢\f2rmid\fP¤Ï¥¨¥é¡¼¡¦¥á¥Ã¥»¡¼¥¸¤ò½Ð¤·¤Æ½ªÎ»¤¹¤ë¡£ -+.TP 2 -+o -+\f2\-log\fP¥ª¥×¥·¥ç¥ó¤Ïɬ¿Ü¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤È¡¢\f2rmid\fP¤Ï¥¨¥é¡¼¡¦¥á¥Ã¥»¡¼¥¸¤ò½Ð¤·¤Æ½ªÎ»¤¹¤ë¡£ -+.RE -+ -+.LP -+.LP -+ɬÍפ˱þ¤¸¤Æ¥µ¡¼¥Ó¥¹¤ò³«»Ï¤¹¤ë¤è¤¦¤Ë¹½À®¤¹¤ëÊýË¡¤Î¾ÜºÙ¤Ï¡¢\f2inetd\fP(Solaris¤Î¾ì¹ç)¡¢¤Þ¤¿¤Ï\f2xinetd\fP(Linux)¤Î¥Þ¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-C<someCommandLineOption> -+\f2rmid\fP¤Î»Ò¥×¥í¥»¥¹(µ¯Æ°¥°¥ë¡¼¥×)¤¬ºîÀ®¤µ¤ì¤¿¤È¤¤Ë¡¢¤½¤ì¤¾¤ì¤Î»Ò¥×¥í¥»¥¹¤Ë¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤ë¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë»ØÄꤹ¤ë¤È¡¢µ¯Æ°¥·¥¹¥Æ¥à¡¦¥Ç¡¼¥â¥ó¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë³Æ²¾ÁÛ¥Þ¥·¥ó¤Ë¥×¥í¥Ñ¥Æ¥£¤òÅϤ¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ rmid \-C\-Dsome.property=value -+.fl -+\fP -+.fi -+¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤ò»Ò¥×¥í¥»¥¹¤ËÅϤ¹µ¡Ç½¤Ï¡¢¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¦¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ rmid \-C\-Djava.rmi.server.logCalls=true -+.fl -+\fP -+.fi -+¤³¤Î¥³¥Þ¥ó¥É¤Ë¤è¤ê¡¢¤¹¤Ù¤Æ¤Î»ÒVM¤Ç¥µ¡¼¥Ð¡¼¸Æ½Ð¤·¤Î¥í¥°¤¬ºîÀ®¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.TP 3 -+\-J<someCommandLineOption> -+\f2rmid\fP¤ò¼Â¹Ô¤·¤Æ¤¤¤ë\f2java\fP¥¤¥ó¥¿¥×¥ê¥¿¤ËÅϤ¹¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f2rmid\fP¤¬\f2rmid.policy\fP¤È¤¤¤¦Ì¾Á°¤Î¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ¹¤ë¤è¤¦¤Ë»ØÄꤹ¤ë¤Ë¤Ï¡¢\f2rmid\fP¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç\f2\-J\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢\f2java.security.policy\fP¥×¥í¥Ñ¥Æ¥£¤òÄêµÁ¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ rmid \-J\-Djava.security.policy=rmid.policy -+.fl -+\fP -+.fi -+.TP 3 -+\-J\-Dsun.rmi.activation.execPolicy=<policy> -+µ¯Æ°¥°¥ë¡¼¥×¤¬¼Â¹Ô¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ëVM¤Îµ¯Æ°¤Ë»ÈÍѤ¹¤ë¥³¥Þ¥ó¥É¤ª¤è¤Ó¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤¿¤á¤Ë¡¢\f2rmid\fP¤¬ºÎÍѤ¹¤ë¥Ý¥ê¥·¡¼¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢Java RMIµ¯Æ°¥Ç¡¼¥â¥ó¤ÎSun¤Î¼ÂÁõ¤Î¤ß¤Ë¸ºß¤¹¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¤³¤Î¥×¥í¥Ñ¥Æ¥£¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¢·ë²Ì¤Ï\f2\-J\-Dsun.rmi.activation.execPolicy=default\fP¤ò»ØÄꤷ¤¿¾ì¹ç¤ÈƱ¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£\f2<policy>\fP¤Ë»ØÄê²Äǽ¤ÊÃͤϡ¢\f2default\fP¡¢\f2<policyClassName>\fP¡¢¤Þ¤¿¤Ï\f2none\fP¤Ç¤¹¡£ -+.RS 3 -+.TP 2 -+o -+\f3default(¤Þ¤¿¤Ï¡¢¤³¤Î¥×¥í¥Ñ¥Æ¥£¤¬\fP\f4»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤\fP\f3¾ì¹ç)\fP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤Î\f2execPolicy\fP¤Î¾ì¹ç¡¢\f2rmid\fP¤¬¼Â¹Ô¤Ç¤¤ë¤Î¤Ï¡¢\f2rmid\fP¤¬»ÈÍѤ¹¤ë¥»¥¥å¥ê¥Æ¥£¡¦¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¡¢¼Â¹Ô¤¹¤ë¸¢¸Â¤¬\f2rmid\fP¤ËÍ¿¤¨¤é¤ì¤Æ¤¤¤ë¥³¥Þ¥ó¥É¤ª¤è¤Ó¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤Î¤ß¤Ç¤¹¡£\f2¥Ç¥Õ¥©¥ë¥È\fP¤Î¼Â¹Ô¥Ý¥ê¥·¡¼¤Ç»ÈÍѤǤ¤ë¤Î¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Îµ¯Æ°¥°¥ë¡¼¥×¼ÂÁõ¤Î¤ß¤Ç¤¹¡£ -+.LP -+\f2rmid\fP¤Ï¡¢µ¯Æ°¥°¥ë¡¼¥×ÍѤÎVM¤òµ¯Æ°¤¹¤ë¤È¤¤Ë¡¢¤½¤Î¥°¥ë¡¼¥×¤Ë¤Ä¤¤¤ÆÅÐÏ¿¤µ¤ì¤¿µ¯Æ°¥°¥ë¡¼¥×µ½Ò»Ò¤Ç¤¢¤ë\f2ActivationGroupDesc\fPÆâ¤Î¾ðÊó¤ò»ÈÍѤ·¤Þ¤¹¡£¥°¥ë¡¼¥×µ½Ò»Ò¤Ï¡¢\f2ActivationGroupDesc.CommandEnvironment\fP¤ò»ØÄꤷ¤Þ¤¹(¾Êά²Äǽ)¡£¤³¤ì¤Ë¤Ï¡¢µ¯Æ°¥°¥ë¡¼¥×¤ò³«»Ï¤¹¤ë\f2¥³¥Þ¥ó¥É\fP¤È¡¢¤½¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤ËÄɲäǤ¤ë¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦\f2¥ª¥×¥·¥ç¥ó\fP¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢\f2rmid\fP¤Ï\f2java.home\fP¤Ë¤¢¤ë\f2java\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£¥°¥ë¡¼¥×µ½Ò»Ò¤Ë¤Ï¡¢¥ª¥×¥·¥ç¥ó¤È¤·¤Æ¥³¥Þ¥ó¥É¥é¥¤¥ó¤ËÄɲ䵤ì¤ë\f2¥×¥í¥Ñ¥Æ¥£\fP¡¦¥ª¡¼¥Ð¡¼¥é¥¤¥É¤â´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥×¥í¥Ñ¥Æ¥£¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ \-D\fP\f4<property>\fP\f3=\fP\f4<value>\fP\f3 -+.fl -+\fP -+.fi -+.LP -+¥¢¥¯¥»¥¹¸¢\f2com.sun.rmi.rmid.ExecPermission\fP¤ò»ÈÍѤ¹¤ë¤È¡¢\f2rmid\fP¤ËÂФ·¤Æ¡¢¥°¥ë¡¼¥×µ½Ò»Ò¤Î\f2CommandEnvironment\fP¤Ç»ØÄꤵ¤ì¤¿¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Æµ¯Æ°¥°¥ë¡¼¥×¤ò³«»Ï¤¹¤ë¸¢¸Â¤òµö²Ä¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥¢¥¯¥»¥¹¸¢\f2com.sun.rmi.rmid.ExecOptionPermission\fP¤ò»ÈÍѤ¹¤ë¤È¡¢¥°¥ë¡¼¥×µ½Ò»Ò¤Ç¥×¥í¥Ñ¥Æ¥£¡¦¥ª¡¼¥Ð¡¼¥é¥¤¥É¤È¤·¤Æ»ØÄꤵ¤ì¤¿¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¡¢¤Þ¤¿¤Ï\f2CommandEnvironment\fP¤Ç¥ª¥×¥·¥ç¥ó¤È¤·¤Æ»ØÄꤵ¤ì¤¿¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ò¡¢µ¯Æ°¥°¥ë¡¼¥×¤ò³«»Ï¤¹¤ë¤È¤¤Ë\f2rmid\fP¤¬»ÈÍѤǤ¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.LP -+\f2rmid¤Ë\fPÍÍ¡¹¤Ê¥³¥Þ¥ó¥É¤ª¤è¤Ó¥ª¥×¥·¥ç¥ó¤ò¼Â¹Ô¤¹¤ë¸¢¸Â¤òµö²Ä¤¹¤ë¾ì¹ç¤Ï¡¢¥¢¥¯¥»¥¹¸¢\f2ExecPermission\fP¤ª¤è¤Ó\f2ExecOptionPermission\fP¤òÈÆÍÑŪ¤Ëµö²Ä¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤¹¤Ù¤Æ¤Î¥³¡¼¥É¡¦¥½¡¼¥¹¤ËÂФ·¤Æµö²Ä¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+ExecPermission -+\f2ExecPermission\fP¥¯¥é¥¹¤Ï¡¢µ¯Æ°¥°¥ë¡¼¥×¤ò³«»Ï¤¹¤ë¤¿¤á¤Ë\f2rmid¤¬\fPÆÃÄê¤Î\f2¥³¥Þ¥ó¥É\fP¤ò¼Â¹Ô¤¹¤ë¸¢¸Â¤òɽ¤·¤Þ¤¹¡£ -+.LP -+\f3¹½Ê¸\fP -+.br -+\f2ExecPermission\fP¤Î\f2̾Á°\fP¤Ï¡¢\f2rmid\fP¤Ë¼Â¹Ô¤òµö²Ä¤¹¤ë¥³¥Þ¥ó¥É¤Î¥Ñ¥¹Ì¾¤Ç¤¹¡£¡Ö/*¡×(¡Ö/¡×¤Ï¥Õ¥¡¥¤¥ë¶èÀÚ¤êʸ»ú\f2File.separatorChar\fP)¤Ç½ª¤ï¤ë¥Ñ¥¹Ì¾¤Ï¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë´Þ¤Þ¤ì¤ë¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤ò¼¨¤·¤Þ¤¹¡£¡Ö/\-¡×¤Ç½ª¤ï¤ë¥Ñ¥¹Ì¾¤Ï¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë´Þ¤Þ¤ì¤ë¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤È¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê(ºÆµ¢Åª¤Ë)¤ò¼¨¤·¤Þ¤¹¡£¥Ñ¥¹Ì¾¤ËÆÃÊ̤ʥȡ¼¥¯¥ó¡Ö<<ALL FILES>>¡×¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢\f3Ǥ°Õ¤Î\fP¥Õ¥¡¥¤¥ë¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+\f3Ãí°Õ:\fP ¡Ö*¡×¤ò1¤Ä¤Î¤ß»ØÄꤷ¤¿¥Ñ¥¹Ì¾¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤òɽ¤·¤Þ¤¹¡£¤Þ¤¿¡¢¡Ö\-¡×¤ò1¤Ä¤Î¤ß»ØÄꤷ¤¿¥Ñ¥¹Ì¾¤Ï¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤È¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë´Þ¤Þ¤ì¤ë¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤È¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê(ºÆµ¢Åª¤Ë)¤òɽ¤·¤Þ¤¹¡£ -+.TP 3 -+ExecOptionPermission -+\f2ExecOptionPermission\fP¥¯¥é¥¹¤Ï¡¢µ¯Æ°¥°¥ë¡¼¥×¤ò³«»Ï¤¹¤ë¤È¤¤Ë\f2rmid\fP¤ÇÆÃÄê¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦\f2¥ª¥×¥·¥ç¥ó\fP¤ò»ÈÍѤǤ¤ë¸¢¸Â¤òɽ¤·¤Þ¤¹¡£\f2ExecOptionPermission\fP¤Î\f2̾Á°\fP¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ÎÃͤǤ¹¡£ -+.LP -+\f3¹½Ê¸\fP -+.br -+¥ª¥×¥·¥ç¥ó¤Ç¤Ï¡¢¥ï¥¤¥ë¥É¥«¡¼¥É¤¬¸ÂÄêŪ¤Ë¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹¡£¥¢¥¹¥¿¥ê¥¹¥¯¤Ï¡¢¥ï¥¤¥ë¥É¥«¡¼¥É¡¦¥Þ¥Ã¥Á¤òɽ¤·¤Þ¤¹¡£¥¢¥¹¥¿¥ê¥¹¥¯¤Ï¡¢¥ª¥×¥·¥ç¥ó̾¤½¤Î¤â¤Î¤È¤·¤Æ»ÈÍѤǤ¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢Ç¤°Õ¤Î¥ª¥×¥·¥ç¥ó¤òɽ¤¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤Þ¤¿¡¢¥ª¥×¥·¥ç¥ó̾¤ÎËöÈø¤Ë»ÈÍѤ¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤¿¤À¤·¡¢¡Ö.¡×¤«¡Ö=¡×¤Îľ¸å¤Ë¥¢¥¹¥¿¥ê¥¹¥¯¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.LP -+Îã¤ò¼¨¤·¤Þ¤¹¡£¡Ö*¡×¡¢¡Ö\-Dfoo.*¡×¡¢¡Ö\-Da.b.c=*¡×¤Ï͸ú¤Ç¤¹¤¬¡¢¡Ö*foo¡×¡¢¡Ö\-Da*b¡×¡¢¡Öab*¡×¤Ï̵¸ú¤Ç¤¹¡£ -+.TP 3 -+rmid¤Î¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë -+\f2rmid¤Ë\fPÍÍ¡¹¤Ê¥³¥Þ¥ó¥É¤ª¤è¤Ó¥ª¥×¥·¥ç¥ó¤ò¼Â¹Ô¤¹¤ë¸¢¸Â¤òµö²Ä¤¹¤ë¾ì¹ç¤Ï¡¢¥¢¥¯¥»¥¹¸¢\f2ExecPermission\fP¤ª¤è¤Ó\f2ExecOptionPermission\fP¤òÈÆÍÑŪ¤Ëµö²Ä¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤¹¤Ù¤Æ¤Î¥³¡¼¥É¡¦¥½¡¼¥¹¤ËÂФ·¤Æµö²Ä¤·¤Þ¤¹¡£¤³¤ì¤é¤Î¥¢¥¯¥»¥¹¸¢¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤Î¤Ï\f2rmid\fP¤Î¤ß¤Ê¤Î¤Ç¡¢¤³¤ì¤é¤Î¥¢¥¯¥»¥¹¸¢¤òÈÆÍÑŪ¤Ëµö²Ä¤·¤Æ¤â°ÂÁ´¤Ç¤¹¡£ -+.LP -+\f2rmid\fP¤Ë³Æ¼ï¤Î¼Â¹Ô¸¢¸Â¤òµö²Ä¤¹¤ë¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ÎÎã¤ò¡¢¼¡¤Ë¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+grant { -+.fl -+ permission com.sun.rmi.rmid.ExecPermission -+.fl -+ "/files/apps/java/jdk1.7.0/solaris/bin/java"; -+.fl -+ -+.fl -+ permission com.sun.rmi.rmid.ExecPermission -+.fl -+ "/files/apps/rmidcmds/*"; -+.fl -+ -+.fl -+ permission com.sun.rmi.rmid.ExecOptionPermission -+.fl -+ "\-Djava.security.policy=/files/policies/group.policy"; -+.fl -+ -+.fl -+ permission com.sun.rmi.rmid.ExecOptionPermission -+.fl -+ "\-Djava.security.debug=*"; -+.fl -+ -+.fl -+ permission com.sun.rmi.rmid.ExecOptionPermission -+.fl -+ "\-Dsun.rmi.*"; -+.fl -+}; -+.fl -+\fP -+.fi -+ºÇ½é¤ËÉÕÍ¿¤µ¤ì¤Æ¤¤¤ë¥¢¥¯¥»¥¹¸¢¤Ï¡¢\f2rmid\fP¤ËÂФ·¡¢¥Ñ¥¹Ì¾¤Ë¤è¤êÌÀ¼¨Åª¤Ë»ØÄꤵ¤ì¤ë\f2java\fP¥³¥Þ¥ó¥É¤Î1.7.0¥Ð¡¼¥¸¥ç¥ó¤Î¼Â¹Ô¤òµö²Ä¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢\f2java.home\fP¤Ë¤¢¤ë¥Ð¡¼¥¸¥ç¥ó¤Î\f2java\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£\f2rmid\fP¤¬»ÈÍѤ¹¤ë¤Î¤ÈƱ¤¸¥Ð¡¼¥¸¥ç¥ó¤¬»ÈÍѤµ¤ì¤ë¤¿¤á¡¢¤½¤Î¥³¥Þ¥ó¥É¤Ï¡¢¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤Ç»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£2ÈÖÌܤΥ¢¥¯¥»¥¹¸¢¤Ï¡¢\f2rmid\fP¤ËÂФ·¤Æ¡¢¥Ç¥£¥ì¥¯¥È¥ê\f2/files/apps/rmidcmds\fPÆâ¤ÎǤ°Õ¤Î¥³¥Þ¥ó¥É¤Î¼Â¹Ô¸¢¸Â¤òµö²Ä¤·¤Þ¤¹¡£ -+.LP -+3ÈÖÌܤËÉÕÍ¿¤µ¤ì¤Æ¤¤¤ë¥¢¥¯¥»¥¹¸¢\f2ExecOptionPermission\fP¤Ï¡¢\f2rmid\fP¤ËÂФ·¤Æ¡¢¥»¥¥å¥ê¥Æ¥£¡¦¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ò\f2/files/policies/group.policy\fP¤È¤·¤ÆÄêµÁ¤·¤Æ¤¤¤ëµ¯Æ°¥°¥ë¡¼¥×¤Î³«»Ï¤òµö²Ä¤·¤Þ¤¹¡£¼¡¤Î¥¢¥¯¥»¥¹¸¢¤Ï¡¢µ¯Æ°¥°¥ë¡¼¥×¤¬\f2java.security.debug\fP¥×¥í¥Ñ¥Æ¥£¤ò»ÈÍѤ¹¤ë¤³¤È¤òµö²Ä¤·¤Æ¤¤¤Þ¤¹¡£ºÇ¸å¤Î¥¢¥¯¥»¥¹¸¢¤Ï¡¢µ¯Æ°¥°¥ë¡¼¥×¤¬\f2sun.rmi\fP¤È¤¤¤¦¥×¥í¥Ñ¥Æ¥£Ì¾¤Î³¬ÁØÆâ¤ÎǤ°Õ¤Î¥×¥í¥Ñ¥Æ¥£¤ò»ÈÍѤ¹¤ë¤³¤È¤òµö²Ä¤·¤Æ¤¤¤Þ¤¹¡£ -+.LP -+¥Ý¥ê¥·¡¼¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Æ\f2rmid\fP¤òµ¯Æ°¤¹¤ë¤Ë¤Ï¡¢\f2rmid\fP¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç\f2java.security.policy\fP¥×¥í¥Ñ¥Æ¥£¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+\f2rmid \-J\-Djava.security.policy=rmid.policy\fP -+.RE -+.TP 2 -+o -+\f4<policyClassName>\fP -+.LP -+¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤Ç¤Ï½½Ê¬¤Ê½ÀÆðÀ¤¬ÆÀ¤é¤ì¤Ê¤¤¾ì¹ç¡¢´ÉÍý¼Ô¤Ï¡¢\f2rmid\fP¤Îµ¯Æ°»þ¤Ë¡¢\f2checkExecCommand\fP¥á¥½¥Ã¥É¤¬½ê°¤¹¤ë¥¯¥é¥¹¤Î̾Á°¤ò»ØÄꤷ¤Æ¡¢rmid¤¬¼Â¹Ô¤¹¤ë¥³¥Þ¥ó¥É¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -+.LP -+\f2policyClassName\fP¤Ë¤Ï¡¢°ú¿ô¤Ê¤·¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤ò»ý¤Á¡¢¼¡¤Î¤è¤¦¤Ê\f2checkExecCommand\fP¥á¥½¥Ã¥É¤ò¼ÂÁõ¤·¤Æ¤¤¤ëpublic¥¯¥é¥¹¤ò»ØÄꤷ¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ public void checkExecCommand(ActivationGroupDesc desc, -+.fl -+ String[] command) -+.fl -+ throws SecurityException; -+.fl -+\fP -+.fi -+¥¢¥¯¥Æ¥£¥Ö²½¥°¥ë¡¼¥×¤ò³«»Ï¤¹¤ëÁ°¤Ë¡¢\f2rmid\fP¤Ï¡¢¥Ý¥ê¥·¡¼¤Î\f2checkExecCommand\fP¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£¤³¤Î¤È¤¡¢¥¢¥¯¥Æ¥£¥Ö²½¥°¥ë¡¼¥×¤Îµ½Ò»Ò¤È¡¢¥¢¥¯¥Æ¥£¥Ö²½¥°¥ë¡¼¥×¤ò³«»Ï¤¹¤ë¤¿¤á¤Î´°Á´¤Ê¥³¥Þ¥ó¥É¤ò´Þ¤àÇÛÎó¤ò¤½¤Î¥á¥½¥Ã¥É¤ËÅϤ·¤Þ¤¹¡£\f2checkExecCommand\fP¤¬\f2SecurityException\fP¤ò¥¹¥í¡¼¤¹¤ë¤È¡¢\f2rmid\fP¤Ï¤½¤Î¥¢¥¯¥Æ¥£¥Ö²½¥°¥ë¡¼¥×¤ò³«»Ï¤»¤º¡¢¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥¯¥Æ¥£¥Ö²½¤ò»î¹Ô¤·¤Æ¤¤¤ë¸Æ½Ð¤·Â¦¤Ë¤Ï\f2ActivationException\fP¤¬¥¹¥í¡¼¤µ¤ì¤Þ¤¹¡£ -+.TP 2 -+o -+\f3none\fP -+.LP -+\f2sun.rmi.activation.execPolicy\fP¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬¡Önone¡×¤Î¾ì¹ç¡¢\f2rmid\fP¤Ï¡¢µ¯Æ°¥°¥ë¡¼¥×¤ò³«»Ï¤¹¤ë¥³¥Þ¥ó¥É¤ò¤Þ¤Ã¤¿¤¯¸¡¾Ú¤·¤Þ¤»¤ó¡£ -+.RE -+.LP -+.TP 3 -+\-log dir -+µ¯Æ°¥·¥¹¥Æ¥à¡¦¥Ç¡¼¥â¥ó¤¬¥Ç¡¼¥¿¥Ù¡¼¥¹¤ª¤è¤Ó´ØÏ¢¾ðÊó¤ò½ñ¤¹þ¤à¤Î¤Ë»ÈÍѤ¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢\f2rmid\fP¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Ë¡¢\f2log\fP¤È¤¤¤¦¥í¥°¡¦¥Ç¥£¥ì¥¯¥È¥ê¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.TP 3 -+\-port port -+\f2rmid\fP¤Î¥ì¥¸¥¹¥È¥ê¤¬»ÈÍѤ¹¤ë¥Ý¡¼¥È¤ò»ØÄꤷ¤Þ¤¹¡£µ¯Æ°¥·¥¹¥Æ¥à¡¦¥Ç¡¼¥â¥ó¤Ï¡¢¤³¤Î¥ì¥¸¥¹¥È¥ê¤ÎÃæ¤Ç¡¢\f2java.rmi.activation.ActivationSystem\fP¤È¤¤¤¦Ì¾Á°¤Ç\f2ActivationSystem\fP¤ò¥Ð¥¤¥ó¥É¤·¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥í¡¼¥«¥ë¡¦¥Þ¥·¥ó¾å¤Î\f2ActivationSystem\fP¤Ï¡¢¼¡¤Î¤è¤¦¤Ë\f2Naming.lookup\fP¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤Ã¤Æ¼èÆÀ¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ import java.rmi.*; -+.fl -+ import java.rmi.activation.*; -+.fl -+ -+.fl -+ ActivationSystem system; system = (ActivationSystem) -+.fl -+ Naming.lookup("//:\fP\f4port\fP/java.rmi.activation.ActivationSystem"); -+.fl -+.fi -+.TP 3 -+\-stop -+\f2\-port\fP¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤Æ»ØÄꤵ¤ì¤¿¥Ý¡¼¥È¤Î¡¢¸½ºß¤Î\f2rmid\fP¸Æ½Ð¤·¤òÄä»ß¤·¤Þ¤¹¡£¥Ý¡¼¥È¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ý¡¼¥È1098¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë\f2rmid\fP¤òÄä»ß¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "´Ä¶ÊÑ¿ô" -+.LP -+.RS 3 -+.TP 3 -+CLASSPATH -+¥æ¡¼¥¶¡¼ÄêµÁ¥¯¥é¥¹¤Ø¤Î¥Ñ¥¹¤ò¥·¥¹¥Æ¥à¤Ë»ØÄꤷ¤Þ¤¹¡£¥Ç¥£¥ì¥¯¥È¥ê¤Ï¥³¥í¥ó¤Çʬ³ä¤·¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ .:/usr/local/java/classes -+.fl -+\fP -+.fi -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.LP -+rmic(1)¡¢ -+.na -+\f2CLASSPATH\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#classpath¡¢java(1) -+.LP -+ ---- jdk/src/bsd/doc/man/ja/rmiregistry.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/rmiregistry.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,65 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH rmiregistry 1 "07 May 2011" -+.TH rmiregistry 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+rmiregistry \- Java¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¡¦¥ì¥¸¥¹¥È¥ê -+.LP -+.RS 3 -+\f3rmiregistry\fP¥³¥Þ¥ó¥É¤Ï¡¢¸½ºß¤Î¥Û¥¹¥È¤Î»ØÄꤷ¤¿¥Ý¡¼¥È¾å¤Ë¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¡¦¥ì¥¸¥¹¥È¥ê¤ò³«»Ï¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+rmiregistry [\fP\f4port\fP\f3] -+.fl -+\fP -+.fi -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3rmiregistry\fP¥³¥Þ¥ó¥É¤Ï¡¢¸½ºß¤Î¥Û¥¹¥È¤Î»ØÄê\f2port\fP¾å¤Ë¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¡¦¥ì¥¸¥¹¥È¥ê¤òºîÀ®¤·¡¢³«»Ï¤·¤Þ¤¹¡£\f2port\fP¤Î»ØÄê¤ò¾Êά¤·¤¿¾ì¹ç¡¢¥ì¥¸¥¹¥È¥ê¤Ï¥Ý¡¼¥È1099¤Ç³«»Ï¤·¤Þ¤¹¡£\f3rmiregistry\fP¥³¥Þ¥ó¥É¤Ë¡¢½ÐÎϵ¡Ç½¤Ï¤¢¤ê¤Þ¤»¤ó¡£Ä̾¤³¤ì¤Ï¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2rmiregistry &\fP -+.LP -+.LP -+¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¡¦¥ì¥¸¥¹¥È¥ê¤Ï¡¢¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¤Î¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ç¤¹¡£Æ±°ì¥Û¥¹¥È¤ÎRMI¥µ¡¼¥Ð¡¼¤¬¡¢¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò̾Á°¤Ë¥Ð¥¤¥ó¥É¤¹¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£¼¡¤Ë¡¢¥í¡¼¥«¥ë¤ª¤è¤Ó¥ê¥â¡¼¥È¡¦¥Û¥¹¥È¤Î¥¯¥é¥¤¥¢¥ó¥È¤Ï¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¸¡º÷¤·¡¢¥ê¥â¡¼¥È¡¦¥á¥½¥Ã¥É¤Î¸Æ½Ð¤·¤ò¹Ô¤¤¤Þ¤¹¡£ -+.LP -+.LP -+¥ì¥¸¥¹¥È¥ê¤Ï¡¢°ìÈÌŪ¤Ë¡¢ºÇ½é¤Î¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¤ò»ØÄꤷ¤Þ¤¹¡£¤½¤³¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤«¤ï¤Ã¤Æ¡¢¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó»ØÄê¤Î¥µ¥Ý¡¼¥È¤òÄ󶡤·¡¢Â¾¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òõ¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2java.rmi.registry.LocateRegistry\fP¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¤Ï¡¢¥í¡¼¥«¥ë¡¦¥Û¥¹¥È¡¢¤Þ¤¿¤Ï¥í¡¼¥«¥ë¡¦¥Û¥¹¥È¤È¥Ý¡¼¥È¤ÇÆ°ºî¤¹¤ë¥ì¥¸¥¹¥È¥ê¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f2java.rmi.Naming\fP¥¯¥é¥¹¤ÎURL¥Ù¡¼¥¹¤Î¥á¥½¥Ã¥É¤Ï¡¢¥ì¥¸¥¹¥È¥ê¤ÇÆ°ºî¤·¡¢Ç¤°Õ¤Î¥Û¥¹¥È¤ª¤è¤Ó¥í¡¼¥«¥ë¡¦¥Û¥¹¥È¾å¤Î¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¸¡º÷¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Ëñ½ã¤Ê(ʸ»úÎó)̾Á°¤ò¥Ð¥¤¥ó¥É¤·¤¿¤ê¡¢¿·¤·¤¤Ì¾Á°¤ò¥ê¥Ð¥¤¥ó¥É(¸Å¤¤¥Ð¥¤¥ó¥É¤Ë¥ª¡¼¥Ð¡¼¥é¥¤¥É)¤·¤Þ¤¹¡£¤Þ¤¿¥ê¥â¡¼¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥ó¥Ð¥¤¥ó¥É¤·¤¿¤ê¡¢¥ì¥¸¥¹¥È¥ê¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¤¿URL¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-J -+\f2\-J\fP¤Î¸å¤í¤Ë³¤¯¥ª¥×¥·¥ç¥ó¤ò\f2java\fP¥¤¥ó¥¿¥×¥ê¥¿¤Ë°ú¤ÅϤ·¤Þ¤¹¡£\f2java\fP¥ª¥×¥·¥ç¥ó¤ÈÁȤ߹礻¤Æ»ÈÍѤ·¤Þ¤¹(\-J¤Èjava¥ª¥×¥·¥ç¥ó¤Î´Ö¤Ë¥¹¥Ú¡¼¥¹¤ÏÆþ¤ì¤Ê¤¤)¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+java(1)¡¢ -+.na -+\f2java.rmi.registry.LocateRegistry\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/java/rmi/registry/LocateRegistry.html¤ª¤è¤Ó -+.na -+\f2java.rmi.Naming\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/java/rmi/Naming.html ---- jdk/src/bsd/doc/man/ja/schemagen.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/schemagen.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,109 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH schemagen 1 "07 May 2011" -+.TH schemagen 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+schemagen \- XML¥Ð¥¤¥ó¥É¤Î¤¿¤á¤ÎJava(tm)¥¢¡¼¥¥Æ¥¯¥Á¥ã¡¦¥¹¥¡¼¥Þ¡¦¥¸¥§¥Í¥ì¡¼¥¿ -+.LP -+.LP -+\f3»ÅÍͥС¼¥¸¥ç¥ó:\fP 2.1 -+.br -+\f3¼ÂÁõ¥Ð¡¼¥¸¥ç¥ó:\fP 2.1.3 -+.LP -+.SH "schemagen¤Îµ¯Æ°" -+.LP -+.LP -+¥¹¥¡¼¥Þ¡¦¥¸¥§¥Í¥ì¡¼¥¿¤òµ¯Æ°¤¹¤ë¤Ë¤Ï¡¢¥æ¡¼¥¶¡¼¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î\f2bin\fP¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ë¤¢¤ëŬÀÚ¤Ê\f2schemagen\fP¥·¥§¥ë¡¦¥¹¥¯¥ê¥×¥È¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.LP -+.LP -+¸½ºß¤Î¥¹¥¡¼¥Þ¡¦¥¸¥§¥Í¥ì¡¼¥¿¤Ï¡¢Java¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤È¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¤¤¤º¤ì¤â½èÍý¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+¤Þ¤¿¡¢¥¹¥¡¼¥Þ¡¦¥¸¥§¥Í¥ì¡¼¥¿¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤ÎAnt¥¿¥¹¥¯¤âÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.na -+\f2schemagen¤òAnt¤È¤È¤â¤Ë»ÈÍѤ¹¤ë\fP @ -+.fi -+https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.html¤¿¤á¤Î¼ê½ç¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.nf -+\f3 -+.fl -+% schemagen.sh Foo.java Bar.java ... -+.fl -+Note: Writing schema1.xsd -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥æ¡¼¥¶¡¼¤ÎJava¥½¡¼¥¹/¥¯¥é¥¹¤¬Â¾¤Î¥¯¥é¥¹¤ò»²¾È¤·¤Æ¤¤¤ë¾ì¹ç¡¢¥·¥¹¥Æ¥à¤ÎCLASSPATH´Ä¶ÊÑ¿ô¤Ç¤½¤ì¤é¤Î¥¯¥é¥¹¤Ë¥¢¥¯¥»¥¹¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¡¢\f2\-classpath\fP/\f2\-cp\fP¤ò»ÈÍѤ·¤Æ¤½¤ì¤é¤Î¥¯¥é¥¹¤ò¥Ä¡¼¥ë¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤¦¤·¤Ê¤¤¤È¡¢¥¹¥¡¼¥Þ¤ÎÀ¸À®»þ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤¹¡£ -+.LP -+.SS -+¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó -+.LP -+.nf -+\f3 -+.fl -+Usage: schemagen [\-options ...] <java files> -+.fl -+ -+.fl -+Options: -+.fl -+ \-d <path> : specify where to place processor and javac generated class files -+.fl -+ \-cp <path> : specify where to find user specified files -+.fl -+ \-classpath <path> : specify where to find user specified files -+.fl -+ \-encoding <encoding> : specify encoding to be used for apt/javac invocation -+.fl -+ -+.fl -+ \-episode <file> : generate episode file for separate compilation -+.fl -+ \-version : display version information -+.fl -+ \-help : display this usage message -+.fl -+\fP -+.fi -+ -+.LP -+.SH "À¸À®¤µ¤ì¤ë¥ê¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë" -+.LP -+.LP -+¸½ºß¤Î¥¹¥¡¼¥Þ¡¦¥¸¥§¥Í¥ì¡¼¥¿¤Ïñ½ã¤Ë¡¢Java¥¯¥é¥¹Æâ¤Ç»²¾È¤µ¤ì¤Æ¤¤¤ë̾Á°¶õ´Ö¤´¤È¤Ë1¤Ä¤Î¥¹¥¡¼¥Þ¡¦¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹¡£À¸À®¤µ¤ì¤ë¥¹¥¡¼¥Þ¡¦¥Õ¥¡¥¤¥ë¤Î̾Á°¤òÀ©¸æ¤¹¤ëÊýË¡¤Ï¡¢¸½»þÅÀ¤Ç¤Ï¸ºß¤·¤Þ¤»¤ó¡£¤½¤¦¤·¤¿ÌÜŪ¤Ë¤Ï¡¢ -+.na -+\f2¥¹¥¡¼¥Þ¡¦¥¸¥§¥Í¥ì¡¼¥¿¤Îant¥¿¥¹¥¯\fP @ -+.fi -+https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.html¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "̾Á°" -+´ØÏ¢¹àÌÜ -+.LP -+.RS 3 -+.TP 2 -+o -+¥¹¥¡¼¥Þ¡¦¥¸¥§¥Í¥ì¡¼¥¿¤Î¼Â¹Ô(schemagen): [ -+.na -+\f2¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÎÌ¿Îá\fP @ -+.fi -+https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagen.html¡¢ -+.na -+\f2SchemaGen¤ÎAnt¥¿¥¹¥¯¤Î»ÈÍÑ\fP @ -+.fi -+https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.html] -+.TP 2 -+o -+.na -+\f2XML¥Ð¥¤¥ó¥É¤Î¤¿¤á¤ÎJava¥¢¡¼¥¥Æ¥¯¥Á¥ã(JAXB)\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/xml/jaxb/index.html -+.RE -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/serialver.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/serialver.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,79 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH serialver 1 "07 May 2011" -+.TH serialver 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+serialver \- ¥·¥ê¥¢¥ë¡¦¥Ð¡¼¥¸¥ç¥ó¡¦¥³¥Þ¥ó¥É -+.LP -+.LP -+\f3serialver\fP¥³¥Þ¥ó¥É¤Ï\f2serialVersionUID\fP¤òÊÖ¤·¤Þ¤¹¡£ -+.LP -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+\fP\f3serialver\fP [ options ] [ classnames ] -+.fl -+.fi -+ -+.LP -+.RS 3 -+.TP 3 -+options -+¤³¤Î¥É¥¥å¥á¥ó¥È¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£ -+.TP 3 -+classnames -+1¤Ä°Ê¾å¤Î¥¯¥é¥¹Ì¾¤Ç¤¹¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f3serialver\fP¤Ï¡¢1¤Ä°Ê¾å¤Î¥¯¥é¥¹¤Î\f2serialVersionUID\fP¤ò¡¢Å¸³«¤·¤Æ¤¤¤ë¥¯¥é¥¹¤Ø¥³¥Ô¡¼¤¹¤ë¤Î¤ËŬ¤·¤¿·Á¼°¤ÇÊÖ¤·¤Þ¤¹¡£°ú¿ô¤ò»ØÄꤷ¤Ê¤¤¤Ç¸Æ¤Ó½Ð¤¹¤È¡¢»ÈÍÑÊýË¡¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-classpath<: ¤Ç¶èÀÚ¤é¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Èzip¤äjar¥Õ¥¡¥¤¥ë> -+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¤ª¤è¤Ó¥ê¥½¡¼¥¹¤Î¸¡º÷¥Ñ¥¹¤òÀßÄꤷ¤Þ¤¹¡£ -+.RE -+ -+.LP -+.RS 3 -+.TP 3 -+\-show -+´Êñ¤Ê¥æ¡¼¥¶¡¼¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òɽ¼¨¤·¤Þ¤¹¡£´°Á´»ØÄê¤Î¥¯¥é¥¹Ì¾¤òÆþÎϤ·¤Æ¡¢Enter¥¡¼¤«¡ÖShow¡×¥Ü¥¿¥ó¤ò²¡¤·¡¢¥·¥ê¥¢¥ë¡¦¥Ð¡¼¥¸¥ç¥óUID¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-Joption -+Java²¾ÁÛ¥Þ¥·¥ó¤Ë\f2option\fP¤òÅϤ·¤Þ¤¹¡£\f2option\fP¤Ë¤Ï¡¢java(1)¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥Ú¡¼¥¸¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë¥ª¥×¥·¥ç¥ó¤ò1¤Ä»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "Ãí°Õ" -+.LP -+.LP -+\f3serialver\fP¥³¥Þ¥ó¥É¤Ï¡¢»ØÄꤵ¤ì¤¿¥¯¥é¥¹¤ò¤½¤Î²¾ÁÛ¥Þ¥·¥óÆâ¤ËÆɤ߹þ¤ó¤Ç½é´ü²½¤·¤Þ¤¹¤¬¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥»¥¥å¥ê¥Æ¥£¡¦¥Þ¥Í¡¼¥¸¥ã¤ÎÀßÄê¤Ï¹Ô¤¤¤Þ¤»¤ó¡£¿®Íê¤Ç¤¤Ê¤¤¥¯¥é¥¹¤È¤È¤â¤Ë\f3serialver\fP¤ò¼Â¹Ô¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¼¡¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¥»¥¥å¥ê¥Æ¥£¡¦¥Þ¥Í¡¼¥¸¥ã¤òÀßÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-J\-Djava.security.manager\fP -+.LP -+.LP -+¤Þ¤¿¡¢É¬ÍפǤ¢¤ì¤Ð¡¢¼¡¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¥»¥¥å¥ê¥Æ¥£¡¦¥Ý¥ê¥·¡¼¤ò»ØÄê¤Ç¤¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-J\-Djava.security.policy=<policy file>\fP -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.LP -+.na -+\f2java.io.ObjectStreamClass\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/api/java/io/ObjectStreamClass.html -+.LP -+ ---- jdk/src/bsd/doc/man/ja/servertool.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/servertool.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,95 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH servertool 1 "07 May 2011" -+.TH servertool 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+servertool \- Java(tm)IDL¥µ¡¼¥Ð¡¼¡¦¥Ä¡¼¥ë -+.LP -+\f3servertool\fP¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥×¥í¥°¥é¥Þ¤¬¡¢±Ê³¥µ¡¼¥Ð¡¼¤ÎÅÐÏ¿¡¢ÅÐÏ¿²ò½ü¡¢µ¯Æ°¤ª¤è¤ÓÄä»ß¤ò¹Ô¤¦¤¿¤á¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÄ󶡤·¤Þ¤¹¡£ -+.SH "·Á¼°" -+.LP -+.nf -+\f3 -+.fl -+servertool \-ORBInitialPort \fP\f4nameserverport\fP\f3 \fP\f3options\fP\f3 [ \fP\f3commands\fP\f3 ] -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥³¥Þ¥ó¥É¤òÆþÎϤ·¤Ê¤¤¤Ç\f2servertool\fP¤òµ¯Æ°¤¹¤ë¤È¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥Ä¡¼¥ë¤È¤·¤Æ\f2servertool >\fP¥×¥í¥ó¥×¥È¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£\f2servertool >\fP¥×¥í¥ó¥×¥È¤Ë¥³¥Þ¥ó¥É¤òÆþÎϤ·¤Þ¤¹¡£ -+.LP -+.LP -+¥³¥Þ¥ó¥É¤òÆþÎϤ·¤Æ\f2servertool\fP¤òµ¯Æ°¤¹¤ë¤È¡¢Java IDL¥µ¡¼¥Ð¡¼¡¦¥Ä¡¼¥ë¤¬µ¯Æ°¤·¡¢¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f2\-ORBInitialPort\fP \f2nameserverport\fP¥ª¥×¥·¥ç¥ó¤Ï\f3ɬ¿Ü\fP¤Ç¤¹¡£\f2nameserverport\fP¤ÎÃͤˤϡ¢\f2orbd\fP¤¬¼Â¹Ô¤µ¤ì¡¢Ãå¿®¥ê¥¯¥¨¥¹¥È¤òÂÔµ¡¤·¤Æ¤¤¤ë¥Ý¡¼¥È¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Solaris¥½¥Õ¥È¥¦¥§¥¢¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢1024¤è¤ê¾®¤µ¤¤¥Ý¡¼¥È¾å¤Ç¥×¥í¥»¥¹¤ò³«»Ï¤¹¤ë¤Ë¤Ï¡¢root¥æ¡¼¥¶¡¼¤Ë¤Ê¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢\f2nameserverport\fP¤È¤·¤Æ1024°Ê¾å¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ò»ÈÍѤ¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f2servertool\fP¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥×¥í¥°¥é¥Þ¤¬¡¢±Ê³¥µ¡¼¥Ð¡¼¤ÎÅÐÏ¿¡¢ÅÐÏ¿²ò½ü¡¢µ¯Æ°¤ª¤è¤ÓÄä»ß¤ò¹Ô¤¦¤¿¤á¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÄ󶡤·¤Þ¤¹¡£¤½¤Î¾¤Ë¡¢¥µ¡¼¥Ð¡¼¤Ë´Ø¤¹¤ëÍÍ¡¹¤ÊÅý·×¾ðÊó¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Î¥³¥Þ¥ó¥É¤âÄ󶡤·¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-ORBInitialHost nameserverhost -+¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼¤¬¡¢¼Â¹Ô¤µ¤ì¡¢Ãå¿®¥ê¥¯¥¨¥¹¥È¤òÂÔµ¡¤·¤Æ¤¤¤ë¥Û¥¹¥È¡¦¥Þ¥·¥ó¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¢\f2nameserverhost\fP¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç\f2localhost\fP¤ËÀßÄꤵ¤ì¤Þ¤¹¡£\f2orbd\fP¤È\f2servertool\fP¤¬°Û¤Ê¤ë¥Þ¥·¥ó¾å¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢\f2orbd\fP¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¥Û¥¹¥È¤Î̾Á°¤ÈIP¥¢¥É¥ì¥¹¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-Joption -+Java²¾ÁÛ¥Þ¥·¥ó¤Ë\f2option\fP¤òÅϤ·¤Þ¤¹¡£\f2option\fP¤Ë¤Ï¡¢java(1)¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥Ú¡¼¥¸¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë¥ª¥×¥·¥ç¥ó¤ò1¤Ä»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£\f3\-J\fP¤ò»ÈÍѤ·¤ÆÇظå¤Î²¾ÁÛ¥Þ¥·¥ó¤Ë¥ª¥×¥·¥ç¥ó¤òÅϤ¹¤³¤È¤Ï¤è¤¯¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "¥³¥Þ¥ó¥É" -+.LP -+.RS 3 -+.TP 3 -+register \-server\ <server\ class\ name> \ \-classpath\ <classpath\ to\ server> [\ \-applicationName\ <application\ name> \-args\ <args\ to\ server> \-vmargs\ <flags\ to\ be\ passed\ to\ Java\ VM> \ ] -+Object Request Broker Daemon(ORBD)¤Ë¿·µ¬±Ê³¥µ¡¼¥Ð¡¼¤òÅÐÏ¿¤·¤Þ¤¹¡£¥µ¡¼¥Ð¡¼¤¬Ì¤ÅÐÏ¿¤Î¾ì¹ç¡¢ÅÐÏ¿¤·¤Æ¥¢¥¯¥Æ¥£¥Ö²½¤·¤Þ¤¹¡£¤³¤Î¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤Æ¡¢\f2\-server\fP¥ª¥×¥·¥ç¥ó¤Ç¼±Ê̤µ¤ì¤ë¥µ¡¼¥Ð¡¼¤Î¥á¥¤¥ó¡¦¥¯¥é¥¹Æâ¤Ç¥¤¥ó¥¹¥È¡¼¥ë¡¦¥á¥½¥Ã¥É¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£¤³¤Î¥¤¥ó¥¹¥È¡¼¥ë¡¦¥á¥½¥Ã¥É¤Ï¡¢\f2public static void install(org.omg.CORBA.ORB)\fP¤Ë¤Ê¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥¤¥ó¥¹¥È¡¼¥ë¡¦¥á¥½¥Ã¥É¤Ï¡¢¥ª¥×¥·¥ç¥ó¤Ç¤¢¤ê¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¹¥¡¼¥Þ¤ÎºîÀ®¤Ê¤É¤ÎÆȼ«¤Î¥µ¡¼¥Ð¡¼¡¦¥¤¥ó¥¹¥È¡¼¥ëÆ°ºî¤ò³«È¯¼Ô¤¬»ØÄê¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+unregister \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -+¥µ¡¼¥Ð¡¼ID¤Þ¤¿¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó̾¤ò»ÈÍѤ·¤Æ¡¢ORBD¤Î¥µ¡¼¥Ð¡¼¤ÎÅÐÏ¿¤ò²ò½ü¤·¤Þ¤¹¡£¤³¤Î¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤Æ¡¢\f2\-server\fP¥ª¥×¥·¥ç¥ó¤Ç¼±Ê̤µ¤ì¤ë¥µ¡¼¥Ð¡¼¤Î¥á¥¤¥ó¡¦¥¯¥é¥¹Æâ¤Ç¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë¡¦¥á¥½¥Ã¥É¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£¤³¤Î¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë¡¦¥á¥½¥Ã¥É¤Ï¡¢\f2public static void uninstall(org.omg.CORBA.ORB)\fP¤Ë¤Ê¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë¡¦¥á¥½¥Ã¥É¤Ï¡¢¥ª¥×¥·¥ç¥ó¤Ç¤¢¤ê¡¢¥¤¥ó¥¹¥È¡¼¥ë¡¦¥á¥½¥Ã¥É¤ÎÆ°ºî¤Î¼è¤ê¾Ã¤·¤Ê¤É¤ÎÆȼ«¤Î¥µ¡¼¥Ð¡¼¡¦¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ëÆ°ºî¤ò³«È¯¼Ô¤¬»ØÄê¤Ç¤¤Þ¤¹¡£ -+.TP 3 -+getserverid \-applicationName\ <application\ name> -+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤ë¥µ¡¼¥Ð¡¼ID¤òÊÖ¤·¤Þ¤¹¡£ -+.TP 3 -+list -+ORBD¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î±Ê³¥µ¡¼¥Ð¡¼¤Ë´Ø¤¹¤ë¾ðÊó¤ò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+listappnames -+¸½ºßORBD¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥µ¡¼¥Ð¡¼¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó̾¤ò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+listactive -+ORBD¤Ë¤è¤Ã¤Æµ¯Æ°¤µ¤ì¡¢¸½ºß¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î±Ê³¥µ¡¼¥Ð¡¼¤Ë´Ø¤¹¤ë¾ðÊó¤ò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+locate \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> [\-endpointType\ <endpointType>\ ] -+ÅÐÏ¿¤µ¤ì¤¿¥µ¡¼¥Ð¡¼¤ÇºîÀ®¤·¤¿¤¹¤Ù¤Æ¤ÎORB¤ÎÆÃÄê¤Î¥¿¥¤¥×¤Ë¤Ä¤¤¤Æ¥¨¥ó¥É¥Ý¥¤¥ó¥È(¥Ý¡¼¥È)¤ò¸¡½Ð¤·¤Þ¤¹¡£¥µ¡¼¥Ð¡¼¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥¢¥¯¥Æ¥£¥Ö²½¤µ¤ì¤Þ¤¹¡£¥¨¥ó¥É¥Ý¥¤¥ó¥È¡¦¥¿¥¤¥×¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥µ¡¼¥Ð¡¼¤ÎORB¤´¤È¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤ëplain¥¿¥¤¥×¤Þ¤¿¤Ïnon\-protected¥¿¥¤¥×¤Î¥¨¥ó¥É¥Ý¥¤¥ó¥È¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+locateperorb \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> [\-orbid\ <ORB\ name>\ ] -+ÅÐÏ¿¤µ¤ì¤¿¥µ¡¼¥Ð¡¼¤ÎÆÃÄê¤ÎORB¤ÇÅÐÏ¿¤µ¤ì¤¿¥¨¥ó¥É¥Ý¥¤¥ó¥È(¥Ý¡¼¥È)¤ò¸¡½Ð¤·¤Þ¤¹¡£¥µ¡¼¥Ð¡¼¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥¢¥¯¥Æ¥£¥Ö²½¤µ¤ì¤Þ¤¹¡£\f2orbid\fP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥ÈÃͤΡÖ""¡×¤¬\f2orbid\fP¤Ë³ä¤êÅö¤Æ¤é¤ì¤Þ¤¹¡£ORB¤¬¶õʸ»úÎó¤Î\f2orbid\fP¤ÇºîÀ®¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢ÅÐÏ¿¤·¤¿¥Ý¡¼¥È¤¬¤¹¤Ù¤ÆÊÖ¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+orblist \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -+¥µ¡¼¥Ð¡¼¾å¤ËÄêµÁ¤µ¤ì¤¿ORB¤ÎORBId¤ò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£ORBId¤Ï¥µ¡¼¥Ð¡¼¤ÇºîÀ®¤µ¤ì¤¿ORB¤Îʸ»úÎó̾¤Ç¤¹¡£¥µ¡¼¥Ð¡¼¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥¢¥¯¥Æ¥£¥Ö²½¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+shutdown \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -+ORBD¤ËÅÐÏ¿¤µ¤ì¤¿¥¢¥¯¥Æ¥£¥Ö¤Ê¥µ¡¼¥Ð¡¼¤òÄä»ß¤·¤Þ¤¹¡£¤³¤Î¥³¥Þ¥ó¥É¤Î¼Â¹ÔÃæ¤Ë¡¢\f2\-serverid\fP¥Ñ¥é¥á¡¼¥¿¤Þ¤¿¤Ï\f2\-applicationName\fP¥Ñ¥é¥á¡¼¥¿¤Ç»ØÄꤵ¤ì¤¿¥¯¥é¥¹Æâ¤ËÄêµÁ¤µ¤ì¤¿\f2shutdown()\fP¥á¥½¥Ã¥É¤â¸Æ¤Ó½Ð¤µ¤ì¤Æ¥µ¡¼¥Ð¡¼¡¦¥×¥í¥»¥¹¤òÀµ¤·¤¯Ää»ß¤·¤Þ¤¹¡£ -+.TP 3 -+startup \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -+ORBD¤ËÅÐÏ¿¤µ¤ì¤¿¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤·¤Þ¤¹¡£¥µ¡¼¥Ð¡¼¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¤³¤Î¥³¥Þ¥ó¥É¤Ç¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤·¤Þ¤¹¡£¥µ¡¼¥Ð¡¼¤¬¤¹¤Ç¤Ë¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥æ¡¼¥¶¡¼¤Ë¥¨¥é¡¼¡¦¥á¥Ã¥»¡¼¥¸¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+help -+¥µ¡¼¥Ð¡¼¤¬¥µ¡¼¥Ð¡¼¡¦¥Ä¡¼¥ë¤Ç»ÈÍѤǤ¤ë¤¹¤Ù¤Æ¤Î¥³¥Þ¥ó¥É¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+quit -+¥µ¡¼¥Ð¡¼¡¦¥Ä¡¼¥ë¤ò½ªÎ»¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+orbd(1) ---- jdk/src/bsd/doc/man/ja/tnameserv.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/tnameserv.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,476 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH tnameserv 1 "07 May 2011" -+.TH tnameserv 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+Java IDL: °ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹ \- \f2tnameserv\fP -+.LP -+.LP -+¤³¤Î¥É¥¥å¥á¥ó¥È¤Ç¤Ï¡¢Java IDL°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹\f2tnameserv\fP¤Î»ÈÍÑÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£Java IDL¤Ë¤Ï¡¢Object Request Broker Daemon(ORBD)¤â´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ORBD¤Ï¡¢¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥µ¡¼¥Ó¥¹¡¢°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¡¢\f3±Ê³\fP¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤ª¤è¤Ó¥µ¡¼¥Ð¡¼¡¦¥Þ¥Í¡¼¥¸¥ã¤ò´Þ¤à¥Ç¡¼¥â¥ó¡¦¥×¥í¥»¥¹¤Ç¤¹¡£Java IDL¤Î¤¹¤Ù¤Æ¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ç¤ÏORBD¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¤¬¡¢°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤ò»ÈÍѤ¹¤ëÎã¤Ç¤Ï¡¢\f2orbd\fP¤Î¤«¤ï¤ê¤Ë\f2tnameserv\fP¤ò»ÈÍѤǤ¤Þ¤¹¡£\f2orbd\fP¥Ä¡¼¥ë¤Î¾ÜºÙ¤Ï¡¢orbd¤Îorbd(1)¤Þ¤¿¤Ï -+.na -+\f2ORBD¤Ë´Þ¤Þ¤ì¤ëJava IDL¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/jidlNaming.html¤Ë´Ø¤¹¤ë¥È¥Ô¥Ã¥¯¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+¤³¤³¤Ç¤Ï¡¢°Ê²¼¤Î¹àÌܤˤĤ¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+Java\ IDL°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹ -+.TP 2 -+o -+Java\ IDL°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Îµ¯Æ° -+.TP 2 -+o -+Java\ IDL°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤ÎÄä»ß -+.TP 2 -+o -+¥µ¥ó¥×¥ë¡¦¥¯¥é¥¤¥¢¥ó¥È: ̾Á°¶õ´Ö¤Ø¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÄɲà -+.TP 2 -+o -+¥µ¥ó¥×¥ë¡¦¥¯¥é¥¤¥¢¥ó¥È: ̾Á°¶õ´Ö¤Î¥Ö¥é¥¦¥º -+.RE -+ -+.LP -+.SH "Java IDL°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹" -+.LP -+.LP -+CORBA¤ÎCOS(Common Object Services)¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ï¡¢¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤¬¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¥Ç¥£¥ì¥¯¥È¥ê¹½Â¤¤òÄ󶡤·¤Æ¤¤¤ë¤Î¤ÈƱ¤¸¤è¤¦¤Ë¡¢¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤ËÂФ·¤Æ¥Ä¥ê¡¼¹½Â¤¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÄ󶡤·¤Þ¤¹¡£Java IDL¤Î°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ç¤¢¤ë\f2tnameserv\fP¤Ï¡¢COS¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Î»ÅÍͤòñ½ã¤Ê·Á¤Ç¼ÂÁõ¤·¤¿¤â¤Î¤Ç¤¹¡£ -+.LP -+.LP -+¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤Ï̾Á°¶õ´Ö¤Ë̾Á°¤Ç³ÊǼ¤µ¤ì¡¢¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤È̾Á°¤Î¥Ú¥¢¤Ï¡¢¤½¤ì¤¾¤ì¥Í¡¼¥à¡¦\f2¥Ð¥¤¥ó¥Ç¥£¥ó¥°\fP¤È¸Æ¤Ð¤ì¤Þ¤¹¡£¥Í¡¼¥à¡¦¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ï\f2¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È\fP¤ËÁȤ߹þ¤à¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤Ï¤½¤ì¼«ÂΤ¬¥Í¡¼¥à¡¦¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ç¤¢¤ê¡¢¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ÈƱ¤¸ÊÔÀ®µ¡Ç½¤ò»ý¤Á¤Þ¤¹¡£¤¹¤Ù¤Æ¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ï\f2½é´ü¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È\fP¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£Ì¾Á°¶õ´Ö¤Ë¤ª¤¤¤Æ¡¢½é´ü¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤ÏÍ£°ì¤Î±Ê³Ū¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ç¤¹¡£¤½¤ì°Ê³°¤Î¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤Ï¡¢Java IDL¤Î¥Í¡¼¥ß¥ó¥°¡¦¥µ¡¼¥Ó¥¹¡¦¥×¥í¥»¥¹¤¬Ää»ß¤·¡¢ºÆµ¯Æ°¤µ¤ì¤ë¤È¼º¤ï¤ì¤Þ¤¹¡£ -+.LP -+.LP -+¥¢¥×¥ì¥Ã¥È¤Þ¤¿¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤«¤éCOS¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢¤½¤ÎORB¤¬¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤¬Æ°ºî¤·¤Æ¤¤¤ë¥Û¥¹¥È¤Î¥Ý¡¼¥È¤òÃΤäƤ¤¤ë¤«¡¢¤½¤Î¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Îʸ»úÎ󲽤µ¤ì¤¿½é´ü¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤Ë¥¢¥¯¥»¥¹¤Ç¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ï¡¢Java IDL¤Î¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ç¤â¤½¤Î¾¤ÎCOS½àµò¤Î¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ -+.LP -+.SH "Java IDL°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Îµ¯Æ°" -+.LP -+.LP -+Java IDL¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ï¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤ò»ÈÍѤ¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Þ¤¿¤Ï¥¢¥×¥ì¥Ã¥È¤è¤êÁ°¤Ëµ¯Æ°¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£Java\ IDLÀ½Éʤò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤È¡¢Java\ IDL¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤òµ¯Æ°¤¹¤ë¥¹¥¯¥ê¥×¥È(Solaris: \f2tnameserv\fP)¤Þ¤¿¤Ï¼Â¹Ô²Äǽ¥Õ¥¡¥¤¥ë(Windows NT: \f2tnameserv.exe\fP)¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¤ÇÆ°ºî¤¹¤ë¤è¤¦¤Ë¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤òµ¯Æ°¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+Æä˻ØÄꤷ¤Ê¤¤¾ì¹ç¡¢Java IDL¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Ï¡¢ORB¤Î\f2resolve_initial_references()\fP¥á¥½¥Ã¥É¤È\f2list_initial_references()\fP¥á¥½¥Ã¥É¤Î¼ÂÁõ¤Ë»ÈÍѤ¹¤ë¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¡¦¥×¥í¥È¥³¥ë¤ËÂФ·¤Æ¥Ý¡¼¥È900¤ÇÂÔµ¡¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ tnameserv \-ORBInitialPort \fP\f4nameserverport\fP\f3& -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼¡¦¥Ý¡¼¥È¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¥Ý¡¼¥È900¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£Solaris¥½¥Õ¥È¥¦¥§¥¢¤Î¼Â¹Ô»þ¤Ï¡¢1024¤è¤ê¾®¤µ¤¤¥Ý¡¼¥È¤Ç¥×¥í¥»¥¹¤ò³«»Ï¤¹¤ë¾ì¹ç¡¢root¥æ¡¼¥¶¡¼¤Ë¤Ê¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢1024°Ê¾å¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ò»ÈÍѤ¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£1050¤Î¤è¤¦¤ËÊ̤Υݡ¼¥È¤ò»ØÄꤷ¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤ò¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¤Ç¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¢UNIX¥³¥Þ¥ó¥É¡¦¥·¥§¥ë¤Ç¼¡¤Î¤è¤¦¤ËÆþÎϤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ tnameserv \-ORBInitialPort 1050& -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+Windows¤ÎMS\-DOS¥·¥¹¥Æ¥à¡¦¥×¥í¥ó¥×¥È¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤ËÆþÎϤ·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+ start tnameserv \-ORBInitialPort 1050 -+.fl -+\fP -+.fi -+ -+.LP -+.LP -+¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼¤Î¥¯¥é¥¤¥¢¥ó¥È¤Ë¤Ï¡¢¿·¤·¤¤¥Ý¡¼¥ÈÈÖ¹æ¤òÃΤ餻¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤ò¹Ô¤¦¤Ë¤Ï¡¢ORB¥ª¥Ö¥¸¥§¥¯¥È¤ÎºîÀ®»þ¤Ë\f2org.omg.CORBA.ORBInitialPort\fP¥×¥í¥Ñ¥Æ¥£¤Ë¿·¤·¤¤¥Ý¡¼¥ÈÈÖ¹æ¤òÀßÄꤷ¤Þ¤¹¡£ -+.LP -+.SS -+°Û¤Ê¤ë¥Þ¥·¥ó¾å¤Ç¤Î¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¡¼¤Î¼Â¹Ô -+.LP -+.LP -+Java IDL¤ÈRMI\-IIOP¤Î¤Û¤È¤ó¤É¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ç¤Ï¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¡¢¥µ¡¼¥Ð¡¼¤ª¤è¤Ó¥¯¥é¥¤¥¢¥ó¥È¤Ï¤¹¤Ù¤Æ³«È¯ÍѤΥޥ·¥ó¾å¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¼ÂºÝ¤Ë¥Ç¥×¥í¥¤¥á¥ó¥È¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¡¼¤ò¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤È¤Ï°Û¤Ê¤ë¥Û¥¹¥È¾å¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤¬Â¿¤¯¤Ê¤ê¤Þ¤¹¡£ -+.LP -+.LP -+¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¡¼¤¬¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤ò¸«¤Ä¤±¤ë¤Ë¤Ï¡¢¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¡¼¤¬¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¥Ý¡¼¥È¤ÎÈÖ¹æ¤È¥Û¥¹¥È¤òǧ¼±¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¤¿¤á¤Ë¤Ï¡¢¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¡¼¤Î¥Õ¥¡¥¤¥ëÆâ¤Î\f2org.omg.CORBA.ORBInitialPort\fP¥×¥í¥Ñ¥Æ¥£¤È\f2org.omg.CORBA.ORBInitialHost\fP¥×¥í¥Ñ¥Æ¥£¤ò¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¥Ý¡¼¥È¤ÎÈÖ¹æ¤È¥Þ¥·¥ó¤Î̾Á°¤ËÀßÄꤷ¤Þ¤¹¡£¤³¤ÎÎã¤Ï¡¢ -+.na -+\f2RMI\-IIOP¤ò»ÈÍѤ·¤¿Hello World¤ÎÎã\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/rmi\-iiop/rmiiiopexample.html¤Ë¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó\f2\-ORBInitialPort\fP \f2nameserverport#\fP¤È\f2\-ORBInitialHost\fP \f2nameserverhostname\fP¤ò»ÈÍѤ·¤Æ¡¢¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¡¼¤ËÂФ·¤Æ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤òõ¤¹¾ì½ê¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ -+.na -+\f2Java IDL: 2Âæ¤Î¥Þ¥·¥ó¾å¤Ç¼Â¹Ô¤¹¤ëHello World¥×¥í¥°¥é¥à\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/idl/tutorial/jidl2machines.html¤Ë¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ»ØÄꤹ¤ëÊýË¡¤¬¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.LP -+.LP -+¤¿¤È¤¨¤Ð¡¢°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹\f2tnameserv\fP¤¬¡¢¥Û¥¹¥È\f2nameserverhost\fP¤Î¥Ý¡¼¥È1050¾å¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤È¤·¤Þ¤¹¡£¤µ¤é¤Ë¡¢¥¯¥é¥¤¥¢¥ó¥È¤¬¥Û¥¹¥È\f2clienthost\fP¾å¤Ç¼Â¹Ô¤µ¤ì¡¢¥µ¡¼¥Ð¡¼¤Ï¥Û¥¹¥È\f2serverhost\fP¾å¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤È¤·¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+¼¡¤Î¤è¤¦¤Ë¡¢¥Û¥¹¥È\f2nameserverhost\fP¾å¤Ç\f2tnameserv\fP¤òµ¯Æ°¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ tnameserv \-ORBInitialPort 1050 -+.fl -+ -+.fl -+\fP -+.fi -+.TP 2 -+o -+¼¡¤Î¤è¤¦¤Ë¡¢\f2serverhost\fP¾å¤Ç¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ java Server \-ORBInitialPort 1050 \-ORBInitialHost nameserverhost -+.fl -+\fP -+.fi -+.TP 2 -+o -+¼¡¤Î¤è¤¦¤Ë¡¢\f2clienthost\fP¾å¤Ç¥¯¥é¥¤¥¢¥ó¥È¤òµ¯Æ°¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ java Client \-ORBInitialPort 1050 \-ORBInitialHost nameserverhost -+.fl -+\fP -+.fi -+.RE -+ -+.LP -+.SS -+\-J¥ª¥×¥·¥ç¥ó -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤Ï¡¢\f2tnameserve\fP¤È¤È¤â¤Ë»ÈÍѤǤ¤Þ¤¹¡£ -+.RS 3 -+.TP 3 -+\-Joption -+Java²¾ÁÛ¥Þ¥·¥ó¤Ë\f2option\fP¤òÅϤ·¤Þ¤¹¡£\f2option\fP¤Ë¤Ï¡¢java(1)¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥Ú¡¼¥¸¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë¥ª¥×¥·¥ç¥ó¤ò1¤Ä»ØÄꤷ¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢\f3\-J\-Xms48m\fP¤È»ØÄꤹ¤ë¤È¡¢¥¹¥¿¡¼¥È¥¢¥Ã¥×¡¦¥á¥â¥ê¡¼¤Ï48M¥Ð¥¤¥È¤ËÀßÄꤵ¤ì¤Þ¤¹¡£\f3\-J\fP¤ò»ÈÍѤ·¤ÆÇظå¤Î²¾ÁÛ¥Þ¥·¥ó¤Ë¥ª¥×¥·¥ç¥ó¤òÅϤ¹¤³¤È¤Ï¤è¤¯¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "Java IDL°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤ÎÄä»ß" -+.LP -+.LP -+Java IDL¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤òÄä»ß¤¹¤ë¤Ë¤Ï¡¢Unix¤Î¾ì¹ç¤Ï¡¢\f2kill\fP¤Ê¤É¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¡¢Windows¤Î¾ì¹ç¤Ï¡¢\f2[Ctrl]+[C]\fP¥¡¼¤ò»ÈÍѤ·¤Þ¤¹¡£¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤òÌÀ¼¨Åª¤ËÄä»ß¤¹¤ë¤Þ¤Ç¤Ï¡¢¸Æ½Ð¤·ÂÔµ¡¾õÂÖ¤¬Â³¤¤Þ¤¹¡£¥µ¡¼¥Ó¥¹¤ò½ªÎ»¤µ¤»¤ë¤È¡¢Java IDL¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë̾Á°¤Ï¼º¤ï¤ì¤Þ¤¹¡£ -+.LP -+.SH "¥µ¥ó¥×¥ë¡¦¥¯¥é¥¤¥¢¥ó¥È: ̾Á°¶õ´Ö¤Ø¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÄɲÃ" -+.LP -+.LP -+¼¡¤Ë¼¨¤¹¥µ¥ó¥×¥ë¡¦¥×¥í¥°¥é¥à¤Ï¡¢Ì¾Á°¤ò̾Á°¶õ´Ö¤ËÄɲ乤ëÊýË¡¤ò¼¨¤¹¤â¤Î¤Ç¤¹¡£¤³¤Î¥µ¥ó¥×¥ë¡¦¥×¥í¥°¥é¥à¤Ï¡¢¤³¤Î¤Þ¤Þ¤Î¾õÂ֤Ǵ°Á´¤ËÆ°ºî¤¹¤ë°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¡¦¥¯¥é¥¤¥¢¥ó¥È¤Ç¡¢¼¡¤Î¤è¤¦¤Êñ½ã¤Ê¥Ä¥ê¡¼¤òºîÀ®¤¹¤ë¤â¤Î¤Ç¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+\f4½é´ü¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È\fP -+.RS 3 -+.TP 2 -+* -+\f3plans\fP -+.TP 2 -+* -+\f4Personal\fP -+.RS 3 -+.TP 2 -+- -+\f3calendar\fP -+.TP 2 -+- -+\f3schedule\fP -+.RE -+.RE -+.RE -+ -+.LP -+.LP -+¤³¤ÎÎã¤Ç¡¢\f3plans\fP¤Ï¥ª¥Ö¥¸¥§¥¯¥È»²¾È¡¢\f3Personal\fP¤Ï\f3calendar\fP¤È\f3schedule\fP¤Î2¤Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤ò´Þ¤à¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤Ç¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+import java.util.Properties; -+.fl -+import org.omg.CORBA.*; -+.fl -+import org.omg.CosNaming.*; -+.fl -+ -+.fl -+public class NameClient -+.fl -+{ -+.fl -+ public static void main(String args[]) -+.fl -+ { -+.fl -+ try { -+.fl -+\fP -+.fi -+ -+.LP -+Á°½Ò¤ÎJava IDL°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Îµ¯Æ°¤Ç¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼¤Ï¥Ý¡¼¥È1050¤ò»ÈÍѤ·¤Æµ¯Æ°¤·¤Þ¤·¤¿¡£¼¡¤Î¥³¡¼¥É¤Ç¡¢¤³¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ò¥¯¥é¥¤¥¢¥ó¥È¡¦¥·¥¹¥Æ¥à¤ËÃΤ餻¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ Properties props = new Properties(); -+.fl -+ props.put("org.omg.CORBA.ORBInitialPort", "1050"); -+.fl -+ ORB orb = ORB.init(args, props); -+.fl -+ -+.fl -+\fP -+.fi -+ -+.LP -+¼¡¤Î¥³¡¼¥É¤Ç¤Ï¡¢½é´ü¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤ò¼èÆÀ¤·¡¢¤½¤ì¤ò\f3ctx\fP¤ËÂåÆþ¤·¤Þ¤¹¡£2¹ÔÌܤǤϡ¢\f3ctx\fP¤ò¥À¥ß¡¼¤Î¥ª¥Ö¥¸¥§¥¯¥È»²¾È\f3objref\fP¤Ë¥³¥Ô¡¼¤·¤Þ¤¹¡£¤³¤Îobjref¤Ë¤Ï¡¢¤¢¤È¤ÇÍÍ¡¹¤Ê̾Á°¤ò³ä¤êÅö¤Æ¤Æ̾Á°¶õ´Ö¤ËÄɲä·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ NamingContext ctx = -+.fl -+NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); -+.fl -+ NamingContext objref = ctx; -+.fl -+ -+.fl -+\fP -+.fi -+ -+.LP -+¼¡¤Î¥³¡¼¥É¤Ç¤Ï¡¢text¥¿¥¤¥×¤Î̾Á°plans¤òºîÀ®¤·¡¢¤½¤ì¤ò¥À¥ß¡¼¤Î¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤Ë¥Ð¥¤¥ó¥É¤·¤Þ¤¹¡£¤½¤Î¸å¡¢\f2rebind\fP¤ò»ÈÍѤ·¤Æ½é´ü¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤Î²¼¤Ëplans¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£\f2rebind\fP¥á¥½¥Ã¥É¤ò»ÈÍѤ¹¤ì¤Ð¡¢\f2bind\fP¤ò»ÈÍѤ·¤¿¾ì¹ç¤ËȯÀ¸¤¹¤ëÎã³°¤òȯÀ¸¤µ¤»¤º¤Ë¡¢¤³¤Î¥×¥í¥°¥é¥à¤ò²¿Å٤ⷫÊÖ¤·¼Â¹Ô¤Ç¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ NameComponent nc1 = new NameComponent("plans", "text"); -+.fl -+ NameComponent[] name1 = {nc1}; -+.fl -+ ctx.rebind(name1, objref); -+.fl -+ System.out.println("plans rebind successful!"); -+.fl -+ -+.fl -+\fP -+.fi -+ -+.LP -+¼¡¤Î¥³¡¼¥É¤Ç¤Ï¡¢directory¥¿¥¤¥×¤ÎPersonal¤È¤¤¤¦¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤òºîÀ®¤·¤Þ¤¹¡£¤½¤Î·ë²ÌÆÀ¤é¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È»²¾È\f3ctx2\fP¤ò¤³¤Î̾Á°¤Ë¥Ð¥¤¥ó¥É¤·¡¢½é´ü¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤ËÄɲä·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ NameComponent nc2 = new NameComponent("Personal", "directory"); -+.fl -+ NameComponent[] name2 = {nc2}; -+.fl -+ NamingContext ctx2 = ctx.bind_new_context(name2); -+.fl -+ System.out.println("new naming context added.."); -+.fl -+ -+.fl -+\fP -+.fi -+ -+.LP -+»Ä¤ê¤Î¥³¡¼¥É¤Ç¤Ï¡¢¥À¥ß¡¼¤Î¥ª¥Ö¥¸¥§¥¯¥È»²¾È¤òschedule¤Ècalendar¤È¤¤¤¦Ì¾Á°¤Ç¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¡ÖPersonal¡×(\f3ctx2\fP)¤Ë¥Ð¥¤¥ó¥É¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ NameComponent nc3 = new NameComponent("schedule", "text"); -+.fl -+ NameComponent[] name3 = {nc3}; -+.fl -+ ctx2.rebind(name3, objref); -+.fl -+ System.out.println("schedule rebind successful!"); -+.fl -+ -+.fl -+ NameComponent nc4 = new NameComponent("calender", "text"); -+.fl -+ NameComponent[] name4 = {nc4}; -+.fl -+ ctx2.rebind(name4, objref); -+.fl -+ System.out.println("calender rebind successful!"); -+.fl -+ -+.fl -+ -+.fl -+ } catch (Exception e) { -+.fl -+ e.printStackTrace(System.err); -+.fl -+ } -+.fl -+ } -+.fl -+} -+.fl -+\fP -+.fi -+ -+.LP -+.SH "¥µ¥ó¥×¥ë¡¦¥¯¥é¥¤¥¢¥ó¥È: ̾Á°¶õ´Ö¤Î¥Ö¥é¥¦¥º" -+.LP -+.LP -+¼¡¤Î¥µ¥ó¥×¥ë¡¦¥×¥í¥°¥é¥à¤Ç¤Ï¡¢Ì¾Á°¶õ´Ö¤ò¥Ö¥é¥¦¥º¤¹¤ëÊýË¡¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+.nf -+\f3 -+.fl -+import java.util.Properties; -+.fl -+import org.omg.CORBA.*; -+.fl -+import org.omg.CosNaming.*; -+.fl -+ -+.fl -+public class NameClientList -+.fl -+{ -+.fl -+ public static void main(String args[]) -+.fl -+ { -+.fl -+ try { -+.fl -+\fP -+.fi -+ -+.LP -+Á°½Ò¤ÎJava IDL°ì»þ¥Í¡¼¥à¡¦¥µ¡¼¥Ó¥¹¤Îµ¯Æ°¤Ç¡¢¥Í¡¼¥à¡¦¥µ¡¼¥Ð¡¼¤Ï¥Ý¡¼¥È1050¤ò»ÈÍѤ·¤Æµ¯Æ°¤·¤Þ¤·¤¿¡£¼¡¤Î¥³¡¼¥É¤Ç¡¢¤³¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ò¥¯¥é¥¤¥¢¥ó¥È¡¦¥·¥¹¥Æ¥à¤ËÃΤ餻¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ -+.fl -+ Properties props = new Properties(); -+.fl -+ props.put("org.omg.CORBA.ORBInitialPort", "1050"); -+.fl -+ ORB orb = ORB.init(args, props); -+.fl -+ -+.fl -+ -+.fl -+\fP -+.fi -+ -+.LP -+¼¡¤Î¥³¡¼¥É¤Ç¤Ï¡¢½é´ü¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤ò¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ NamingContext nc = -+.fl -+NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); -+.fl -+ -+.fl -+\fP -+.fi -+ -+.LP -+\f2list\fP¥á¥½¥Ã¥É¤Ï¡¢¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ò¥ê¥¹¥È¤·¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢ºÇÂç1000¸Ä¤Þ¤Ç¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤¬½é´ü¥Í¡¼¥ß¥ó¥°¡¦¥³¥ó¥Æ¥¥¹¥È¤«¤éBindingListHolder¤ËÊÖ¤µ¤ì¤Þ¤¹¡£»Ä¤ê¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ï¡¢BindingIteratorHolder¤ËÊÖ¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ BindingListHolder bl = new BindingListHolder(); -+.fl -+ BindingIteratorHolder blIt= new BindingIteratorHolder(); -+.fl -+ nc.list(1000, bl, blIt); -+.fl -+ -+.fl -+\fP -+.fi -+ -+.LP -+¼¡¤Î¥³¡¼¥É¤Ç¤Ï¡¢ÊÖ¤µ¤ì¤¿BindingListHolder¤«¤é¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ÎÇÛÎó¤ò¼èÆÀ¤·¤Þ¤¹¡£¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤¬¤Ê¤¤¾ì¹ç¤Ï¡¢¥×¥í¥°¥é¥à¤¬½ªÎ»¤·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ Binding bindings[] = bl.value; -+.fl -+ if (bindings.length == 0) return; -+.fl -+ -+.fl -+\fP -+.fi -+ -+.LP -+»Ä¤ê¤Î¥³¡¼¥É¤Ç¤Ï¡¢¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ËÂФ·¤Æ¥ë¡¼¥×½èÍý¤ò¹Ô¤¤¡¢Ì¾Á°¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+ for (int i=0; i < bindings.length; i++) { -+.fl -+ -+.fl -+ // get the object reference for each binding -+.fl -+ org.omg.CORBA.Object obj = nc.resolve(bindings[i].binding_name); -+.fl -+ String objStr = orb.object_to_string(obj); -+.fl -+ int lastIx = bindings[i].binding_name.length\-1; -+.fl -+ -+.fl -+ // check to see if this is a naming context -+.fl -+ if (bindings[i].binding_type == BindingType.ncontext) { -+.fl -+ System.out.println( "Context: " + -+.fl -+bindings[i].binding_name[lastIx].id); -+.fl -+ } else { -+.fl -+ System.out.println("Object: " + -+.fl -+bindings[i].binding_name[lastIx].id); -+.fl -+ } -+.fl -+ } -+.fl -+ -+.fl -+ } catch (Exception e) { -+.fl -+ e.printStackTrace(System.err); -+.fl -+ } -+.fl -+ } -+.fl -+} -+.fl -+\fP -+.fi -+ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/unpack200.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/unpack200.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,6 +19,160 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH unpack200 1 "07 May 2011" -+.TH unpack200 1 "05 Jul 2012" - - .LP -+.SH "̾Á°" -+unpack200 \- JAR¥¢¥ó¥Ñ¥Ã¥¯¡¦¥Ä¡¼¥ë -+.LP -+.RS 3 -+.TP 2 -+o -+·Á¼° -+.TP 2 -+o -+ÀâÌÀ -+.TP 2 -+o -+¥ª¥×¥·¥ç¥ó -+.TP 2 -+o -+½ªÎ»¥¹¥Æ¡¼¥¿¥¹ -+.TP 2 -+o -+´ØÏ¢¹àÌÜ -+.TP 2 -+o -+Ãí°Õ -+.RE -+ -+.LP -+.SH "·Á¼°" -+.LP -+.LP -+\f4unpack200\fP\f2 [ \fP\f2options\fP ] \f2input\-file\fP \f2JAR\-file\fP -+.LP -+.LP -+¥ª¥×¥·¥ç¥ó¤Î»ØÄê½ç½ø¤Ë·è¤Þ¤ê¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë»ØÄꤵ¤ì¤¿ºÇ¸å¤Î¥ª¥×¥·¥ç¥ó¤¬¡¢¤½¤ì°ÊÁ°¤Ë»ØÄꤵ¤ì¤¿¤¹¤Ù¤Æ¤Î¥ª¥×¥·¥ç¥ó¤è¤êÍ¥À褵¤ì¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 3 -+input\-file -+ÆþÎÏ¥Õ¥¡¥¤¥ë¤Î̾Á°¡£pack200 gzip¥Õ¥¡¥¤¥ë¤«pack200¥Õ¥¡¥¤¥ë¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¤³¤Î¾¤Ë¡¢0¤òÀßÄꤹ¤ì¤Ðpack200(1)¤«¤éºîÀ®¤µ¤ì¤¿JAR¥Õ¥¡¥¤¥ë¤âÆþÎϤȤ·¤Æ»ÈÍѤǤ¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢ÆþÎÏ¥Õ¥¡¥¤¥ë¤ÎÆâÍƤ¬Pack200¥Þ¡¼¥«¡¼¤È¤È¤â¤Ë½ÐÎÏJAR¥Õ¥¡¥¤¥ë¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+JAR\-file -+½ÐÎÏJAR¥Õ¥¡¥¤¥ë̾¡£ -+.RE -+ -+.LP -+.SH "ÀâÌÀ" -+.LP -+.LP -+\f2unpack200\fP¤Ï¡¢\f2pack200\fP(1)¤ÇºîÀ®¤µ¤ì¤¿¥Ñ¥Ã¥¯¡¦¥Õ¥¡¥¤¥ë¤òJAR¥Õ¥¡¥¤¥ë¤ËÊÑ´¹¤¹¤ë¥Í¥¤¥Æ¥£¥Ö¼ÂÁõ¤Ç¤¹¡£°ìÈÌŪ¤Ê»ÈÍÑÊýË¡: -+.LP -+.LP -+\f2% unpack200 myarchive.pack.gz myarchive.jar\fP -+.LP -+.LP -+¤³¤ÎÎã¤Ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Î\f2unpack200\fP¤ÎÀßÄê¤Ç¡¢\f2myarchive.pack.gz\fP¤«¤é\f2myarchive.jar\fP¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.LP -+\f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP -+.LP -+.LP -+JAR¥Õ¥¡¥¤¥ëÆâ¤Î¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤Ë\f2true\fP¡¢\f2false\fP¤Þ¤¿¤Ï\f2keep\fP¤Î¥Ç¥Õ¥ì¡¼¥·¥ç¥ó¤òÀßÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¡¦¥â¡¼¥É¤Ï\f2keep\fP¤Ç¤¹¡£\f2true\fP¤Þ¤¿¤Ï\f2false\fP¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Æ¡¢½ÐÎÏJAR¥Õ¥¡¥¤¥ëÆâ¤Î¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤Î¥Ç¥Õ¥ì¡¼¥·¥ç¥ó¡¦¥â¡¼¥É¤¬ÀßÄꤵ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-r \-\-remove\-pack\-file\fP -+.LP -+.LP -+ÆþÎϥѥ寡¦¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-v \-\-verbose\fP -+.LP -+.LP -+ºÇ¾®¸Â¤Î¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤òÊ£¿ô»ØÄꤹ¤ë¤È¡¢¤è¤êŤ¤¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-q \-\-quiet\fP -+.LP -+.LP -+¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤»¤º¤ËÆ°ºî¤¹¤ë¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-lfilename \-\-log\-file=\fP\f2filename\fP -+.LP -+.LP -+½ÐÎÏ¥á¥Ã¥»¡¼¥¸¤Î¥í¥°¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-? \-h \-\-help\fP -+.LP -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤Ë´Ø¤¹¤ë¥Ø¥ë¥×¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-V \-\-version\fP -+.LP -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤Ë´Ø¤¹¤ë¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ -+.LP -+.LP -+\f4\-J\fP\f2option\fP -+.LP -+.LP -+\f2unpack200\fP¤Ë¤è¤Ã¤Æ¸Æ¤Ó½Ð¤µ¤ì¤ëJavaµ¯Æ°¥Ä¡¼¥ë¤Ë\f2option\fP¤òÅϤ·¤Þ¤¹¡£ -+.LP -+.SH "½ªÎ»¥¹¥Æ¡¼¥¿¥¹" -+.LP -+.LP -+¼¡¤Î½ªÎ»Ãͤ¬ÊÖ¤µ¤ì¤Þ¤¹¡£ -+.LP -+.LP -+\f2\ 0\fP: Àµ¾ï½ªÎ»¤·¤¿¾ì¹ç -+.LP -+.LP -+\f2>0\fP: ¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+pack200(1) -+.TP 2 -+o -+.na -+\f2Java SE¤Î¥É¥¥å¥á¥ó¥È\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/index.html -+.TP 2 -+o -+.na -+\f2Java¥Ç¥×¥í¥¤¥á¥ó¥È¡¦¥¬¥¤¥É \- Pack200\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/deployment/deployment\-guide/pack200.html -+.TP 2 -+o -+jar(1) \- Java Archive¥Ä¡¼¥ë -+.TP 2 -+o -+jarsigner(1) \- JAR½ð̾¥Ä¡¼¥ë -+.TP 2 -+o -+\f2attributes(5)\fP¤Î¥Þ¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸ -+.RE -+ -+.LP -+.SH "Ãí°Õ" -+.LP -+.LP -+¤³¤Î¥³¥Þ¥ó¥É¤È\f2unpack(1)\fP¤òº®Æ±¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¤³¤ì¤é¤ÏÊÌÀ½ÉʤǤ¹¡£ -+.LP -+.LP -+JDK¤ËÉÕ°¤¹¤ëJava SE API»ÅÍͤȤÎÁê°ã¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢»ÅÍͤòÍ¥À褷¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+ ---- jdk/src/bsd/doc/man/ja/wsgen.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/wsgen.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,4 +19,638 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH wsgen 1 "07 May 2011" -+.TH wsgen 1 "05 Jul 2012" -+.SH "̾Á°" -+wsgen \- XML Web Services(JAX\-WS)2.0¤Î¤¿¤á¤ÎJava(tm)API -+.LP -+\f3»ÅÍͥС¼¥¸¥ç¥ó:\fP 2.1 -+.br -+\f3¼ÂÁõ¥Ð¡¼¥¸¥ç¥ó:\fP 2.1.1 -+.LP -+\f2wsgen\fP¥Ä¡¼¥ë¤Ï¡¢JAX\-WS Web¥µ¡¼¥Ó¥¹¤Ç»ÈÍѤµ¤ì¤ëJAX\-WS¥Ý¡¼¥¿¥Ö¥ë¡¦¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥Ä¡¼¥ë¤Ï¡¢Web¥µ¡¼¥Ó¥¹¤Î¥¨¥ó¥É¥Ý¥¤¥ó¥È¼ÂÁõ¥¯¥é¥¹(SEI)¤òÆɼè¤ê¡¢Web¥µ¡¼¥Ó¥¹¤Î¥Ç¥×¥í¥¤¥á¥ó¥È¤È¸Æ½Ð¤·¤ËɬÍפʤ¹¤Ù¤Æ¤Î¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤òÀ¸À®¤·¤Þ¤¹¡£ -+.SH "³µÍ×" -+.LP -+\f2wsgen\fP¥Ä¡¼¥ë¤Ï¡¢JAX\-WS Web¥µ¡¼¥Ó¥¹¤Ç»ÈÍѤµ¤ì¤ëJAX\-WS¥Ý¡¼¥¿¥Ö¥ë¡¦¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥Ä¡¼¥ë¤Ï¡¢Web¥µ¡¼¥Ó¥¹¤Î¥¨¥ó¥É¥Ý¥¤¥ó¥È¡¦¥¯¥é¥¹¤òÆɼè¤ê¡¢Web¥µ¡¼¥Ó¥¹¤Î¥Ç¥×¥í¥¤¥á¥ó¥È¤È¸Æ½Ð¤·¤ËɬÍפʤ¹¤Ù¤Æ¤Î¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤òÀ¸À®¤·¤Þ¤¹¡£JAXWS 2.1.1 RI¤Ë¤Ïwsgen Ant¥¿¥¹¥¯¤âÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢ -+.na -+\f2Wsgen Ant¥¿¥¹¥¯\fP @ -+.fi -+https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsgenant.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.SH "wsgen¤Îµ¯Æ°" -+.RS 3 -+.TP 2 -+o -+\f3Solaris/Linux\fP -+.RS 3 -+.TP 2 -+* -+\f2export JAXWS_HOME=/pathto/jaxws\-ri\fP -+.TP 2 -+* -+\f2$JAXWS_HOME/bin/wsgen.sh \-help\fP -+.RE -+.TP 2 -+o -+\f3Windows\fP -+.RS 3 -+.TP 2 -+* -+\f2set JAXWS_HOME=c:\\pathto\\jaxws\-ri\fP -+.TP 2 -+* -+\f2%JAXWS_HOME%\\bin\\wsgen.bat \-help\fP -+.RE -+.RE -+ -+.LP -+.SH "¹½Ê¸" -+.nf -+\f3 -+.fl -+wsgen [options] <SEI>\fP -+.br -+\f3 -+.fl -+\fP -+.fi -+.LP -+¼¡¤Îɽ¤Ë¡¢\f2wsgen\fP¤Î¥ª¥×¥·¥ç¥ó¤ò¼¨¤·¤Þ¤¹¡£ -+.br -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+ÆþÎÏ¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¸¡º÷¾ì½ê¤ò»ØÄꤷ¤Þ¤¹ -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+\f2\-classpath<path>\fP¤ÈƱ¤¸¤Ç¤¹ -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+À¸À®¤µ¤ì¤ë½ÐÎÏ¥Õ¥¡¥¤¥ë¤ò³ÊǼ¤¹¤ë¾ì½ê¤ò»ØÄꤷ¤Þ¤¹ -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Ù¥ó¥À¡¼³ÈÄ¥(»ÅÍͤǵ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤µ¡Ç½)¤òµö²Ä¤·¤Þ¤¹¡£³ÈÄ¥¤ò»ÈÍѤ¹¤ë¤È¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î°Ü¿¢À¤¬¼º¤ï¤ì¤¿¤ê¡¢Â¾¤Î¼ÂÁõ¤È¤ÎÁê¸ß±¿ÍѤ¬¹Ô¤¨¤Ê¤¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹ -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Ø¥ë¥×¤òɽ¼¨¤·¤Þ¤¹ -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+À¸À®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤òÊÝ»ý¤·¤Þ¤¹ -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¾ï¤Ë \-wsdl¥ª¥×¥·¥ç¥ó¤ÈÁȤ߹ç¤ï¤Æ»ÈÍѤ·¤Þ¤¹¡£WSDL¤Ê¤É¤ÎÀ¸À®¤µ¤ì¤¿¥ê¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤Î³ÊǼ¾ì½ê¤ò»ØÄꤷ¤Þ¤¹ -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di h+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+À¸À®¤µ¤ì¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò³ÊǼ¤¹¤ë¾ì½ê¤ò»ØÄꤷ¤Þ¤¹ -+.br -+.di -+.nr h| \n(dn -+.nr h- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di i+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥³¥ó¥Ñ¥¤¥é¤¬¼Â¹Ô¤·¤Æ¤¤¤ë½èÍý¤Ë´Ø¤¹¤ë¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤¹ -+.br -+.di -+.nr i| \n(dn -+.nr i- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di j+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤Î¤ß¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£Ä̾ï¤Î½èÍý¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£ -+.br -+.di -+.nr j| \n(dn -+.nr j- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di k+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï\f2wsgen\fP¤ÏWSDL¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤»¤ó¡£¤³¤Î¥Õ¥é¥°¤Ï¾Êά²Äǽ¤Ç¤¹¤¬¡¢»ØÄꤷ¤¿¾ì¹ç¤Ï\f2wsgen\fP¤¬WSDL¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î¥Õ¥é¥°¤ÏÄ̾¥¨¥ó¥É¥Ý¥¤¥ó¥È¤Î¥Ç¥×¥í¥¤Á°¤Ë³«È¯¼Ô¤¬WSDL¤ò»²¾È¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¤Î¤ß»ÈÍѤ·¤Þ¤¹¡£\f2protocol\fP¤Ï¾Êά²Äǽ¤Ç¤¢¤ê¡¢\f2wsdl:binding\fP¤Ç»ÈÍѤ¹¤ë¥×¥í¥È¥³¥ë¤ò»ØÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£Í¸ú¤Ê¥×¥í¥È¥³¥ë¤Ï\f2soap1.1\fP¤ª¤è¤Ó\f2Xsoap1.2\fP¤Ê¤É¤Ç¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ï\f2soap1.1\fP¤Ç¤¹¡£\f2Xsoap1.2\fP¤Ïɸ½à¤Ç¤Ï¤Ê¤¤¤¿¤á¡¢\f2\-extension\fP¥ª¥×¥·¥ç¥ó¤ÈÁȤ߹礻¤Ê¤¤¤È»ÈÍѤǤ¤Þ¤»¤ó¡£ -+.br -+.di -+.nr k| \n(dn -+.nr k- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di l+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¾ï¤Ë\f2\-wsdl\fP¥ª¥×¥·¥ç¥ó¤ÈÁȤ߹礻¤Æ»ÈÍѤ·¤Þ¤¹¡£WSDLÆâ¤ÇÀ¸À®¤µ¤ì¤ë\f2wsdl:service\fP¤Î̾Á°¤ò»ØÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤ·¤Þ¤¹¡£Îã: \f2\-servicename "{http://mynamespace/}MyService"\fP -+.br -+.di -+.nr l| \n(dn -+.nr l- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di m+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¾ï¤Ë\f2\-wsdl\fP¥ª¥×¥·¥ç¥ó¤ÈÁȤ߹礻¤Æ»ÈÍѤ·¤Þ¤¹¡£WSDLÆâ¤ÇÀ¸À®¤µ¤ì¤ë\f2wsdl:port\fP¤Î̾Á°¤ò»ØÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤ·¤Þ¤¹¡£Îã: \f2\-portname "{http://mynamespace/}MyPort"\fP -+.br -+.br -+.di -+.nr m| \n(dn -+.nr m- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \w\f3¥ª¥×¥·¥ç¥ó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-classpath <path>\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-cp <path>\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-d <directory>\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-extension\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-help\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-keep\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-r <directory>\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-s <directory>\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-verbose\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-version\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-wsdl[:protocol]\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-servicename <name>\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f4\-portname <name>\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(g- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(h- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(i- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(j- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(k- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(l- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(m- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 137 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3¥ª¥×¥·¥ç¥ó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-classpath <path>\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-cp <path>\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-d <directory>\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-extension\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-help\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-keep\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-r <directory>\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(h|u+\n(.Vu -+.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-s <directory>\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.h+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(i|u+\n(.Vu -+.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-verbose\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.i+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(j|u+\n(.Vu -+.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-version\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.j+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(k|u+\n(.Vu -+.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-wsdl[:protocol]\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.k+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(l|u+\n(.Vu -+.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-servicename <name>\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.l+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(m|u+\n(.Vu -+.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f4\-portname <name>\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.m+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.rm h+ -+.rm i+ -+.rm j+ -+.rm k+ -+.rm l+ -+.rm m+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-57 -+ -+.LP -+.SH "Îã" -+.nf -+\f3 -+.fl -+\fP\f3wsgen \-d stock \-cp myclasspath stock.StockService\fP -+.fl -+.fi -+.LP -+\f3stock\fP¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ë@WebServiceÃí¼á¤¬ÉÕ¤±¤é¤ì¤¿¡¢StockService¤ËɬÍפʥé¥Ã¥Ñ¡¼¡¦¥¯¥é¥¹¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+\fP\f3wsgen \-wsdl \-d stock \-cp myclasspath stock.StockService\fP -+.fl -+.fi -+.LP -+SOAP 1.1 WSDL¤È¡¢@WebServiceÃí¼á¤¬ÉÕ¤±¤é¤ì¤¿Java¥¯¥é¥¹stock.StockService¤Î¥¹¥¡¼¥Þ¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.nf -+\f3 -+.fl -+\fP\f3wsgen \-wsdl:Xsoap1.2 \-d stock \-cp myclasspath stock.StockService\fP -+.fl -+.fi -+.LP -+SOAP 1.2 WSDL¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -+.LP -+¥µ¡¼¥Ó¥¹¤ò¥Ç¥×¥í¥¤¤¹¤ë¤È¤¤ËJAXWS¥é¥ó¥¿¥¤¥à¤Ë¤è¤Ã¤Æ¼«Æ°Åª¤ËWSDL¤¬À¸À®¤µ¤ì¤ë¤¿¤á¡¢³«È¯»þ¤ËWSDL¤òÀ¸À®¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ ---- jdk/src/bsd/doc/man/ja/wsimport.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/wsimport.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,4 +19,1048 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH wsimport 1 "07 May 2011" -+.TH wsimport 1 "05 Jul 2012" -+.SH "̾Á°" -+wsimport \- XML Web Services(JAX\-WS)2.0¤Î¤¿¤á¤ÎJava(tm)API -+.LP -+\f3»ÅÍͥС¼¥¸¥ç¥ó:\fP 2.1 -+.br -+\f3¼ÂÁõ¥Ð¡¼¥¸¥ç¥ó:\fP 2.1.1 -+.br -+.SH "³µÍ×" -+.LP -+\f2wsimport\fP¥Ä¡¼¥ë¤Ï¡¢¼¡¤Î¤è¤¦¤ÊJAX\-WS¥Ý¡¼¥¿¥Ö¥ë¡¦¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤òÀ¸À®¤·¤Þ¤¹¡£ -+.RS 3 -+.TP 2 -+o -+¥µ¡¼¥Ó¥¹¡¦¥¨¥ó¥É¥Ý¥¤¥ó¥È¡¦¥¤¥ó¥¿¥Õ¥§¡¼¥¹(SEI) -+.TP 2 -+o -+¥µ¡¼¥Ó¥¹ -+.TP 2 -+o -+wsdl:fault¤«¤é¥Þ¥Ã¥×¤µ¤ì¤ëÎã³°¥¯¥é¥¹(¸ºß¤¹¤ë¾ì¹ç) -+.TP 2 -+o -+¥ì¥¹¥Ý¥ó¥¹wsdl:message¤«¤éÇÉÀ¸¤¹¤ëÈóƱ´ü¥ì¥¹¥Ý¥ó¥¹Bean(¸ºß¤¹¤ë¾ì¹ç) -+.TP 2 -+o -+JAXB¤¬À¸À®¤¹¤ëÃÍ¥¿¥¤¥×(¥¹¥¡¼¥Þ¤Î¥¿¥¤¥×¤«¤é¥Þ¥Ã¥×¤µ¤ì¤¿Java¥¯¥é¥¹) -+.RE -+.LP -+¤³¤ì¤é¤Î¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤Ï¡¢WSDL¥É¥¥å¥á¥ó¥È¡¢¥¹¥¡¼¥Þ¡¦¥É¥¥å¥á¥ó¥È¡¢¤ª¤è¤Ó¥¨¥ó¥É¥Ý¥¤¥ó¥È¼ÂÁõ¤È¤È¤â¤ËWAR¥Õ¥¡¥¤¥ëÆâ¤Ë¥Ñ¥Ã¥±¡¼¥¸²½¤·¤Æ¥Ç¥×¥í¥¤¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤Þ¤¿¡¢wsimport Ant¥¿¥¹¥¯¤âÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.na -+\f2wsimport Ant¥¿¥¹¥¯\fP @ -+.fi -+https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsimportant.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+ -+.LP -+.SH "wsimport¤Îµ¯Æ°" -+.RS 3 -+.TP 2 -+o -+\f3Solaris/Linux\fP -+.RS 3 -+.TP 2 -+* -+\f2/bin/wsimport.sh \-help\fP -+.RE -+.TP 2 -+o -+\f3Windows\fP -+.RS 3 -+.TP 2 -+* -+\f2\\bin\\wsimport.bat \-help\fP -+.RE -+.RE -+ -+.LP -+.SH "¹½Ê¸" -+.nf -+\f3 -+.fl -+wsimport [options] <wsdl> -+.fl -+\fP -+.fi -+.LP -+¼¡¤Îɽ¤Ë¡¢\f2wsimport\fP¤Î¥ª¥×¥·¥ç¥ó¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+À¸À®¤µ¤ì¤ë½ÐÎÏ¥Õ¥¡¥¤¥ë¤ò³ÊǼ¤¹¤ë¾ì½ê¤ò»ØÄꤷ¤Þ¤¹ -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+³°Éô¤ÎJAX\-WS¤Þ¤¿¤ÏJAXB¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹(\f2<file>\fP¤´¤È¤Ë\f2\-b\fP¤¬É¬Íפˤʤê¤Þ¤¹) -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¤³¤Î¥ª¥×¥·¥ç¥ó¤òJAXB¥¹¥¡¼¥Þ¡¦¥³¥ó¥Ñ¥¤¥é¤ËÅϤ·¤Þ¤¹ -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+³°Éô¥¨¥ó¥Æ¥£¥Æ¥£»²¾È¤ò²ò·è¤¹¤ë¤¿¤á¤Î¥«¥¿¥í¥°¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£TR9401¡¢XCatalog¡¢OASIS XML Catalog¤Î³Æ·Á¼°¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.na -+\f2¥«¥¿¥í¥°\fP @ -+.fi -+https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.html¤Î¥É¥¥å¥á¥ó¥È¤òÆɤó¤Ç¡¢\f3¥«¥¿¥í¥°\fP¤Î¥µ¥ó¥×¥ë¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Ù¥ó¥À¡¼³ÈÄ¥(»ÅÍͤǵ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤µ¡Ç½)¤òµö²Ä¤·¤Þ¤¹¡£³ÈÄ¥¤ò»ÈÍѤ¹¤ë¤È¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î°Ü¿¢À¤¬¼º¤ï¤ì¤¿¤ê¡¢Â¾¤Î¼ÂÁõ¤È¤ÎÁê¸ß±¿ÍѤ¬¹Ô¤¨¤Ê¤¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹ -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Ø¥ë¥×¤òɽ¼¨¤·¤Þ¤¹ -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di g+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\f3\-httpproxy:<host>:<port> \fP -+.br -+.di -+.nr g| \n(dn -+.nr g- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di h+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+HTTP¥×¥í¥¥·¡¦¥µ¡¼¥Ð¡¼¤ò»ØÄꤷ¤Þ¤¹(¥Ç¥Õ¥©¥ë¥È¤Î¥Ý¡¼¥È¤Ï8080¤Ç¤¹) -+.br -+.di -+.nr h| \n(dn -+.nr h- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di i+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+À¸À®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤òÊÝ»ý¤·¤Þ¤¹ -+.br -+.di -+.nr i| \n(dn -+.nr i- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di j+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¤³¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó·Ðͳ¤Ç¥¿¡¼¥²¥Ã¥È¡¦¥Ñ¥Ã¥±¡¼¥¸¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ËÂФ¹¤ë¤¹¤Ù¤Æ¤ÎWSDL/¥¹¥¡¼¥Þ¡¦¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Î¥«¥¹¥¿¥Þ¥¤¥º¤ä¡¢»ÅÍͤǵ¬Äꤵ¤ì¤Æ¤¤¤ë¥Ç¥Õ¥©¥ë¥È¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¥¢¥ë¥´¥ê¥º¥à¤è¤ê¤â¡¢¤½¤Î»ØÄ꤬ͥÀ褵¤ì¤Þ¤¹ -+.br -+.di -+.nr j| \n(dn -+.nr j- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di k+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+À¸À®¤µ¤ì¤ë¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò³ÊǼ¤¹¤ë¾ì½ê¤ò»ØÄꤷ¤Þ¤¹ -+.br -+.di -+.nr k| \n(dn -+.nr k- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di l+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥³¥ó¥Ñ¥¤¥é¤¬¼Â¹Ô¤·¤Æ¤¤¤ë½èÍý¤Ë´Ø¤¹¤ë¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤¹ -+.br -+.di -+.nr l| \n(dn -+.nr l- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di m+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹ -+.br -+.di -+.nr m| \n(dn -+.nr m- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di n+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\f3\-wsdllocation <location>\fP -+.br -+.di -+.nr n| \n(dn -+.nr n- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di o+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+\f2@WebServiceClient.wsdlLocation\fPÃÍ -+.br -+.di -+.nr o| \n(dn -+.nr o- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di p+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+»ØÄꤵ¤ì¤¿JAX\-WS»ÅÍͥС¼¥¸¥ç¥ó¤Ë½¾¤Ã¤Æ¥³¡¼¥É¤òÀ¸À®¤·¤Þ¤¹¡£¥Ð¡¼¥¸¥ç¥ó2.0¤Ç¤Ï¡¢JAX\-WS 2.0»ÅÍͤ˽àµò¤·¤¿¥³¡¼¥É¤¬À¸À®¤µ¤ì¤Þ¤¹ -+.br -+.di -+.nr p| \n(dn -+.nr p- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di q+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+wsimport½ÐÎϤòÍÞÀ©¤·¤Þ¤¹ -+.br -+.di -+.nr q| \n(dn -+.nr q- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \w\f3¥ª¥×¥·¥ç¥ó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-d <directory> \fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-b <path> \fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-B <jaxbOption>\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-catalog\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-extension \fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-help \fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-keep \fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-p \fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-s <directory> \fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-verbose \fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-version \fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-target \fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-quiet \fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 38 \n(g- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \n(n- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(d- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(h- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(i- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(j- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(k- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(l- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(m- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(o- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(p- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(q- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 163 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3¥ª¥×¥·¥ç¥ó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-d <directory> \fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-b <path> \fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-B <jaxbOption>\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-catalog\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(e|u+\n(.Vu -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-extension \fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-help \fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(g|u+\n(.Vu -+.ne \n(h|u+\n(.Vu -+.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -+.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.g+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.h+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(i|u+\n(.Vu -+.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-keep \fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.i+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(j|u+\n(.Vu -+.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-p \fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.j+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(k|u+\n(.Vu -+.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-s <directory> \fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.k+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(l|u+\n(.Vu -+.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-verbose \fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.l+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(m|u+\n(.Vu -+.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-version \fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.m+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(n|u+\n(.Vu -+.ne \n(o|u+\n(.Vu -+.if (\n(n|+\n(#^-1v)>\n(#- .nr #- +(\n(n|+\n(#^-\n(#--1v) -+.if (\n(o|+\n(#^-1v)>\n(#- .nr #- +(\n(o|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.n+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.o+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(p|u+\n(.Vu -+.if (\n(p|+\n(#^-1v)>\n(#- .nr #- +(\n(p|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-target \fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.p+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(q|u+\n(.Vu -+.if (\n(q|+\n(#^-1v)>\n(#- .nr #- +(\n(q|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-quiet \fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.q+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.rm g+ -+.rm h+ -+.rm i+ -+.rm j+ -+.rm k+ -+.rm l+ -+.rm m+ -+.rm n+ -+.rm o+ -+.rm p+ -+.rm q+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-72 -+.LP -+\f2\-b\fP¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢Ê£¿ô¤ÎJAX\-WS¤ª¤è¤ÓJAXB¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤Æ¡¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤äBean̾¤Ê¤É¡¢ÍÍ¡¹¤Ê¤â¤Î¤ò¥«¥¹¥¿¥Þ¥¤¥º¤Ç¤¤Þ¤¹¡£JAX\-WS¤ª¤è¤ÓJAXB¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥Õ¥¡¥¤¥ë¤Î¾ÜºÙ¤Ï¡¢ -+.na -+\f2¥«¥¹¥¿¥Þ¥¤¥º¡¦¥Þ¥Ë¥å¥¢¥ë\fP @ -+.fi -+https://jax\-ws.dev.java.net/nonav/2.1.1/docs/customizations.html¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+¼¡¤Îɽ¤Ë¡¢\f2wsimport\fP¤ÎÈóɸ½à¥ª¥×¥·¥ç¥ó¤ò¼¨¤·¤Þ¤¹¡£ -+.LP -+.TS -+.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -+.de 35 -+.ps \n(.s -+.vs \n(.vu -+.in \n(.iu -+.if \n(.u .fi -+.if \n(.j .ad -+.if \n(.j=0 .na -+.. -+.nf -+.nr #~ 0 -+.if n .nr #~ 0.6n -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.fc -+.nr 33 \n(.s -+.rm 80 81 -+.nr 34 \n(.lu -+.eo -+.am 81 -+.br -+.di a+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥ê¥¯¥¨¥¹¥È¤Þ¤¿¤Ï¥ì¥¹¥Ý¥ó¥¹¡¦¥á¥Ã¥»¡¼¥¸¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¤Ê¤¤¥Ø¥Ã¥À¡¼¤òJava¥á¥½¥Ã¥É¤Î¥Ñ¥é¥á¡¼¥¿¤Ë¥Þ¥Ã¥×¤·¤Þ¤¹ -+.br -+.di -+.nr a| \n(dn -+.nr a- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di b+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+ǧ¾Ú¾ðÊó¤ò´Þ¤à¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ëWSDL URI¤Ç¤¹¡£¤³¤ÎURI¤Î·Á¼°¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹ http://\f2<user name>\fP:\f2<password>\fP@\f2<host name>\fP/\f2<Web service name>\fP?wsdl -+.br -+.di -+.nr b| \n(dn -+.nr b- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di c+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+¥Ç¥Ð¥Ã¥°¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹ -+.br -+.di -+.nr c| \n(dn -+.nr c- \n(dl -+.. -+.ec \ -+.eo -+.am 80 -+.br -+.di d+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(80 .ll \n(80u -+.in 0 -+\f3\-Xno\-addressing\-databinding\fP -+.br -+.di -+.nr d| \n(dn -+.nr d- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di e+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+W3C \f2EndpointReferenceType\fP¤ÈJava¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ò͸ú¤Ë¤·¤Þ¤¹ -+.br -+.di -+.nr e| \n(dn -+.nr e- \n(dl -+.. -+.ec \ -+.eo -+.am 81 -+.br -+.di f+ -+.35 -+.ft \n(.f -+.ll \n(34u*1u/3u -+.if \n(.l<\n(81 .ll \n(81u -+.in 0 -+À¸À®¤µ¤ì¤¿Java¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤»¤ó -+.br -+.di -+.nr f| \n(dn -+.nr f- \n(dl -+.. -+.ec \ -+.35 -+.nf -+.ll \n(34u -+.nr 80 0 -+.nr 38 \w\f3¥ª¥×¥·¥ç¥ó\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-XadditionalHeaders\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-Xauthfile <file>\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-Xdebug\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 38 \w\f3\-Xnocompile\fP -+.if \n(80<\n(38 .nr 80 \n(38 -+.80 -+.rm 80 -+.nr 38 \n(d- -+.if \n(80<\n(38 .nr 80 \n(38 -+.nr 81 0 -+.nr 38 \w\f3ÀâÌÀ\fP -+.if \n(81<\n(38 .nr 81 \n(38 -+.81 -+.rm 81 -+.nr 38 \n(a- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(b- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(c- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(e- -+.if \n(81<\n(38 .nr 81 \n(38 -+.nr 38 \n(f- -+.if \n(81<\n(38 .nr 81 \n(38 -+.35 -+.nf -+.ll \n(34u -+.nr 38 1n -+.nr 79 0 -+.nr 40 \n(79+(0*\n(38) -+.nr 80 +\n(40 -+.nr 41 \n(80+(3*\n(38) -+.nr 81 +\n(41 -+.nr TW \n(81 -+.if t .if \n(TW>\n(.li .tm Table at line 199 file Input is too wide - \n(TW units -+.fc -+.nr #T 0-1 -+.nr #a 0-1 -+.eo -+.de T# -+.ds #d .d -+.if \(ts\n(.z\(ts\(ts .ds #d nl -+.mk ## -+.nr ## -1v -+.ls 1 -+.ls -+.. -+.ec -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3¥ª¥×¥·¥ç¥ó\fP\h'|\n(41u'\f3ÀâÌÀ\fP -+.ne \n(a|u+\n(.Vu -+.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-XadditionalHeaders\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.a+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(b|u+\n(.Vu -+.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-Xauthfile <file>\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.b+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(c|u+\n(.Vu -+.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-Xdebug\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.c+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(d|u+\n(.Vu -+.ne \n(e|u+\n(.Vu -+.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -+.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(40u -+.in +\n(37u -+.d+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.e+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.ne \n(f|u+\n(.Vu -+.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -+.ta \n(80u \n(81u -+.nr 31 \n(.f -+.nr 35 1m -+\&\h'|\n(40u'\f3\-Xnocompile\fP\h'|\n(41u' -+.mk ## -+.nr 31 \n(## -+.sp |\n(##u-1v -+.nr 37 \n(41u -+.in +\n(37u -+.f+ -+.in -\n(37u -+.mk 32 -+.if \n(32>\n(31 .nr 31 \n(32 -+.sp |\n(31u -+.fc -+.nr T. 1 -+.T# 1 -+.35 -+.rm a+ -+.rm b+ -+.rm c+ -+.rm d+ -+.rm e+ -+.rm f+ -+.TE -+.if \n-(b.=0 .nr c. \n(.c-\n(d.-26 -+ -+.LP -+.SH "Îã" -+.nf -+\f3 -+.fl -+\fP\f3wsimport \-p stockquote http://stockquote.example.com/quote?wsdl\fP -+.fl -+.fi -+.LP -+Java¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤òÀ¸À®¤·¡¢\f2http://stockquote.example.com/quote?wsdl\fP¤ò¥¤¥ó¥Ý¡¼¥È¤·¤Æ¤½¤ÎJava¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹ -+.br -+ ---- jdk/src/bsd/doc/man/ja/xjc.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/ja/xjc.1 2013-03-09 08:44:53.000000000 -0800 -@@ -19,7 +19,279 @@ - ." or visit www.oracle.com if you need additional information or have any - ." questions. - ." --.TH xjc 1 "07 May 2011" -+.TH xjc 1 "05 Jul 2012" - - .LP --.ad c -+.SH "̾Á°" -+xjc \- XML¥Ð¥¤¥ó¥É¤Î¤¿¤á¤ÎJava(tm)¥¢¡¼¥¥Æ¥¯¥Á¥ã -+.br -+¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é -+.LP -+.LP -+\f3»ÅÍͥС¼¥¸¥ç¥ó:\fP 2.1 -+.br -+\f3¥ê¥Õ¥¡¥ì¥ó¥¹¼ÂÁõ(RI)¥Ð¡¼¥¸¥ç¥ó:\fP 2.1.3 -+.LP -+.SH "xjc¤Îµ¯Æ°" -+.LP -+.LP -+¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é¤òµ¯Æ°¤¹¤ë¤Ë¤Ï¡¢»ÈÍѤ¹¤ë¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ë±þ¤¸¤¿\f2bin\fP¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î\f2xjc\fP¥·¥§¥ë¡¦¥¹¥¯¥ê¥×¥È¤ò»ÈÍѤ·¤Þ¤¹¡£¤Þ¤¿¡¢¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤ÎAnt¥¿¥¹¥¯¤âÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.na -+\f2XJC Ant¥¿¥¹¥¯¤Î»ÈÍÑ\fP @ -+.fi -+https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.html¤Î¼ê½ç¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.LP -+.LP -+\f2% xjc \-help\fP -+.LP -+.SS -+½ÐÎÏ -+.LP -+.nf -+\f3 -+.fl -+Usage: xjc [\-options ...] <schema file/URL/dir/jar> ... [\-b <bindinfo>] ... -+.fl -+If dir is specified, all schema files in it will be compiled. -+.fl -+If jar is specified, /META\-INF/sun\-jaxb.episode binding file will be compiled. -+.fl -+Options: -+.fl -+ \-nv : do not perform strict validation of the input schema(s) -+.fl -+ \-extension : allow vendor extensions \- do not strictly follow the Compatibility Rules and App E.2 from the JAXB Spec -+.fl -+ \-b <file/dir> : specify external bindings files (each <file> must have its own \-b); if a directory is given, **/*.xjb is searched -+.fl -+ \-d <dir> : generated files will go into this directory -+.fl -+ \-p <pkg> : specifies the target package -+.fl -+ \-httpproxy <proxy> : set HTTP/HTTPS proxy; format is [user[:password]@]proxyHost:proxyPort -+.fl -+ \-httpproxyfile <f> : works like \-httpproxy but takes the argument in a file to protect password -+.fl -+ \-classpath <arg> : specify where to find user class files -+.fl -+ \-catalog <file> : specify catalog files to resolve external entity references; support TR9401, XCatalog, and OASIS XML Catalog format -+.fl -+ \-readOnly : generated files will be in read\-only mode -+.fl -+ \-npa : suppress generation of package level annotations (**/package\-info.java) -+.fl -+ \-no\-header : suppress generation of a file header with timestamp -+.fl -+ \-target 2.0 : behave like XJC 2.0 and generate code that doesnt use any 2.1 features -+.fl -+ \-xmlschema : treat input as W3C XML Schema (default) -+.fl -+ \-relaxng : treat input as RELAX NG (experimental,unsupported) -+.fl -+ \-relaxng\-compact : treat input as RELAX NG compact syntax (experimental,unsupported) -+.fl -+ \-dtd : treat input as XML DTD (experimental,unsupported) -+.fl -+ \-wsdl : treat input as WSDL and compile schemas inside it (experimental,unsupported) -+.fl -+ \-verbose : be extra verbose -+.fl -+ \-quiet : suppress compiler output -+.fl -+ \-help : display this help message -+.fl -+ \-version : display version information -+.fl -+ -+.fl -+ -+.fl -+Extensions: -+.fl -+ \-Xlocator : enable source location support for generated code -+.fl -+ \-Xsync\-methods : generate accessor methods with the 'synchronized' keyword -+.fl -+ \-mark\-generated : mark the generated code as @javax.annotation.Generated -+.fl -+ \-episode <FILE> : generate the episode file for separate compilation -+.fl -+\fP -+.fi -+ -+.LP -+.SH "¥ª¥×¥·¥ç¥ó" -+.LP -+.RS 3 -+.TP 3 -+\-nv -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢XJC¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¥½¡¼¥¹¡¦¥¹¥¡¼¥Þ¤ò½èÍý¤¹¤ëÁ°¤Ë¸·Ì©¤Ê¸¡¾Ú¤ò¼Â¹Ô¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¸·Ì©¤Ê¥¹¥¡¼¥Þ¸¡¾Ú¤«Ìµ¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é¤¬¸¡¾Ú¤ò°ìÀڼ¹Ԥ·¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤è¤ê¸·Ì©¤Ç¤Ê¤¤¸¡¾Ú¤ò¼Â¹Ô¤¹¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£ -+.TP 3 -+\-extension -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢XJC¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é¤Ï¡¢JAXB»ÅÍͤÎCompatibility¤Î¾Ï¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¥ë¡¼¥ë¤ò¸·Ì©¤Ë¶¯À©¤·¤Þ¤¹¡£ÉÕÏ¿E.2¤Ë¤Ï¡¢JAXB v1.0¤Ç´°Á´¤Ë¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤°ìÏ¢¤ÎW3C XML¥¹¥¡¼¥Þµ¡Ç½¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¡¢¤³¤Î¥¹¥¤¥Ã¥Á¤Ç͸ú¤Ë¤Ê¤ë¡Ö\-extension¡×¥â¡¼¥É¤Ç¤½¤ì¤é¤Îµ¡Ç½¤¬»ÈÍѤǤ¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¥Ç¥Õ¥©¥ë¥È¤Î¸·Ì©¤Ê¥â¡¼¥É¤Ç¤Ï¡¢»ÅÍͤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥«¥¹¥¿¥Þ¥¤¥º¤Î¤ß¤¬»ÈÍѤǤ¤Þ¤¹¡£¡Ö\-extension¡×¥¹¥¤¥Ã¥Á¤ò»ØÄꤹ¤ì¤Ð¡¢JAXB Vendor Extension¤ò»ÈÍѤǤ¤Þ¤¹¡£ -+.TP 3 -+\-b <file> -+½èÍý¤¹¤ë³°Éô¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥Õ¥¡¥¤¥ë¤ò1¤Ä¤Þ¤¿¤ÏÊ£¿ô»ØÄꤷ¤Þ¤¹¡£(¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥Õ¥¡¥¤¥ë¤´¤È¤Ë\f2¡Ö\-b¡×\fP¥¹¥¤¥Ã¥Á¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£)³°Éô¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥Õ¥¡¥¤¥ë¤Î¹½Ê¸¤ÏÈó¾ï¤Ë½ÀÆð¤Ç¤¹¡£Ê£¿ô¤Î¥¹¥¡¼¥Þ¤Î¥«¥¹¥¿¥Þ¥¤¥º¤¬´Þ¤Þ¤ì¤ë1¤Ä¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤¿¤ê¡¢¤½¤ì¤é¤Î¥«¥¹¥¿¥Þ¥¤¥º¤òÊ£¿ô¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥Õ¥¡¥¤¥ë¤Ëʬ³ä¤·¤¿¤ê¤Ç¤¤Þ¤¹¡£¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£\f2xjc schema1.xsd schema2.xsd schema3.xsd \-b bindings123.xjb\fP -+.br -+\f2xjc schema1.xsd schema2.xsd schema3.xsd \-b bindings1.xjb \-b bindings2.xjb \-b bindings3.xjb\fP¤Þ¤¿¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¥¹¥¡¼¥Þ¡¦¥Õ¥¡¥¤¥ë¤È¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ë½çÈÖ¤ÏǤ°Õ¤Ç¤¹¡£ -+.TP 3 -+\-d <dir> -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢XJC¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é¤Ï¡¢Java¥³¥ó¥Æ¥ó¥Ä¡¦¥¯¥é¥¹¤ò¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢ÂåÂؽÐÎϥǥ£¥ì¥¯¥È¥ê¤ò»ØÄê¤Ç¤¤Þ¤¹¡£½ÐÎϥǥ£¥ì¥¯¥È¥ê¤Ï¤¢¤é¤«¤¸¤á¸ºß¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£XJC¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò¼«Æ°Åª¤ËºîÀ®¤·¤Þ¤»¤ó¡£ -+.TP 3 -+\-p <pkg> -+¤³¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó·Ðͳ¤Ç¥¿¡¼¥²¥Ã¥È¡¦¥Ñ¥Ã¥±¡¼¥¸¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¤½¤Î»ØÄêÆâÍƤϡ¢¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ËÂФ¹¤ë¤¹¤Ù¤Æ¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥«¥¹¥¿¥Þ¥¤¥º¤ä¡¢»ÅÍͤǵ¬Äꤵ¤ì¤Æ¤¤¤ë¥Ç¥Õ¥©¥ë¥È¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¥¢¥ë¥´¥ê¥º¥à¤è¤ê¤âÍ¥À褵¤ì¤Þ¤¹¡£ -+.TP 3 -+\-httpproxy <proxy> -+HTTP/HTTPS¥×¥í¥¥·¤ò»ØÄꤷ¤Þ¤¹¡£·Á¼°¤Ï[user[:password]@]proxyHost[:proxyPort]¤Ç¤¹¡£½¾Íè¤Î\f2\-host\fP¤ª¤è¤Ó\f2\-port\fP¤Ï¡¢²¼°Ì¸ß´¹À¤Î¤¿¤á¤Ë¥ê¥Õ¥¡¥ì¥ó¥¹¼ÂÁõ(RI)¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¿ä¾©¤µ¤ì¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤¿¥Ñ¥¹¥ï¡¼¥É¤Ï¡¢\f2top\fP¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ë¥æ¡¼¥¶¡¼¤Ê¤É¡¢Â¾¤Î¥æ¡¼¥¶¡¼¤¬É½¼¨¤Ç¤¤ë°ú¿ô¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¥»¥¥å¥ê¥Æ¥£¤ò¹â¤á¤ë¤Ë¤Ï¡¢¼¡¤Î\f2\-httpproxyfile\fP¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-httpproxyfile <file> -+HTTP/HTTPS¥×¥í¥¥·¤ò¥Õ¥¡¥¤¥ë·Ðͳ¤Ç»ØÄꤷ¤Þ¤¹¡£·Á¼°¤ÏÁ°½Ò¤Î¤â¤Î¤ÈƱ¤¸¤Ç¤¹¤¬¡¢¤³¤Î¥Õ¥¡¥¤¥ëÆâ¤Ë»ØÄꤵ¤ì¤¿¥Ñ¥¹¥ï¡¼¥É¤ò¾¤Î¥æ¡¼¥¶¡¼¤¬É½¼¨¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£ -+.TP 3 -+\-classpath <arg> -+\f2<jxb:javaType>\fP¤ª¤è¤Ó\f2<xjc:superClass>\fP¥«¥¹¥¿¥Þ¥¤¥º¤¬»ÈÍѤ¹¤ë¥¯¥é¥¤¥¢¥ó¥È¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¡¦¥Õ¥¡¥¤¥ë¤Î¸¡º÷¾ì½ê¤ò»ØÄꤷ¤Þ¤¹¡£ -+.TP 3 -+\-catalog <file> -+³°Éô¥¨¥ó¥Æ¥£¥Æ¥£»²¾È¤ò²ò·è¤¹¤ë¥«¥¿¥í¥°¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£TR9401¡¢XCatalog¤ª¤è¤ÓOASIS XML Catalog·Á¼°¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢XML Entity and URI Resolvers¤Î¥É¥¥å¥á¥ó¥È¤ò»²¾È¤¹¤ë¤«¡¢\f2catalog\-resolver\fP¥µ¥ó¥×¥ë¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òÄ´¤Ù¤Æ¤¯¤À¤µ¤¤¡£ -+.TP 3 -+\-readOnly -+¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢XJC¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é¤Ï¡¢À¸À®¤¹¤ëJava¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ò½ñ¹þ¤ß¤«¤éÊݸ¤Þ¤»¤ó¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢XJC¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é¤ÏÀ¸À®¤µ¤ì¤ëJava¥½¡¼¥¹¤ò¶¯À©Åª¤ËÆɼè¤êÀìÍѤˤ·¤Þ¤¹¡£ -+.TP 3 -+\-npa -+¥Ñ¥Ã¥±¡¼¥¸¡¦¥ì¥Ù¥ë¤ÎÃí¼á¤ò**/package\-info.java¤ËÀ¸À®¤¹¤ë¤³¤È¤òÍÞÀ©¤·¤Þ¤¹¡£¤³¤Î¥¹¥¤¥Ã¥Á¤ò»ÈÍѤ·¤ÆÀ¸À®¤¹¤ë¥³¡¼¥É¤Ç¤Ï¡¢¤³¤ì¤é¤ÎÃí¼á¤¬Â¾¤ÎÀ¸À®ºÑ¤ß¥¯¥é¥¹¤ËÆâÉô²½¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-no\-header -+¿¾¯¤Î¥á¥â¤È¥¿¥¤¥à¥¹¥¿¥ó¥×¤ò´Þ¤à¥Õ¥¡¥¤¥ë¡¦¥Ø¥Ã¥À¡¼¡¦¥³¥á¥ó¥È¤ÎÀ¸À®¤òÍÞÀ©¤·¤Þ¤¹¡£¤³¤ì¤ò»ÈÍѤ¹¤ë¤È¡¢À¸À®¤µ¤ì¤¿¥³¡¼¥É¤Çdiff¤ò»ÈÍѤ·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+\-target 2.0 -+JAXB 2.1µ¡Ç½¤Ë°Í¸¤¹¤ë¥³¡¼¥É¤òÀ¸À®¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢À¸À®¤µ¤ì¤¿¥³¡¼¥É¤òJAXB 2.0¥é¥ó¥¿¥¤¥à(JavaSE 6¤Ê¤É)¤Ç¼Â¹Ô¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+\-xmlschema -+ÆþÎÏ¥¹¥¡¼¥Þ¤òW3C XML¥¹¥¡¼¥Þ¤È¤·¤Æ°·¤¤¤Þ¤¹(¥Ç¥Õ¥©¥ë¥È)¡£¤³¤Î¥¹¥¤¥Ã¥Á¤ò»ØÄꤷ¤Ê¤¯¤Æ¤â¡¢ÆþÎÏ¥¹¥¡¼¥Þ¤ÏW3C XML¥¹¥¡¼¥Þ¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-relaxng -+ÆþÎÏ¥¹¥¡¼¥Þ¤òRELAX NG¤È¤·¤Æ°·¤¤¤Þ¤¹(»î¸³Åª¡¢Ì¤¥µ¥Ý¡¼¥È)¡£RELAX NG¥¹¥¡¼¥Þ¤Î¥µ¥Ý¡¼¥È¤ÏJAXB Vendor Extension¤È¤·¤ÆÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.TP 3 -+\-relaxng\-compact -+ÆþÎÏ¥¹¥¡¼¥Þ¤òRELAX NG°µ½Ì¹½Ê¸¤È¤·¤Æ½èÍý¤·¤Þ¤¹(»î¸³Åª¡¢Ì¤¥µ¥Ý¡¼¥È)¡£RELAX NG¥¹¥¡¼¥Þ¤Î¥µ¥Ý¡¼¥È¤ÏJAXB Vendor Extension¤È¤·¤ÆÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.TP 3 -+\-dtd -+ÆþÎÏ¥¹¥¡¼¥Þ¤òXML DTD¤È¤·¤Æ°·¤¤¤Þ¤¹(»î¸³Åª¡¢Ì¤¥µ¥Ý¡¼¥È)¡£RELAX NG¥¹¥¡¼¥Þ¤Î¥µ¥Ý¡¼¥È¤ÏJAXB Vendor Extension¤È¤·¤ÆÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£ -+.TP 3 -+\-wsdl -+ÆþÎϤòWSDL¤È¤·¤Æ°·¤¤¡¢¤½¤ÎÆâÉô¤Î¥¹¥¡¼¥Þ¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹(»î¸³Åª¡¢Ì¤¥µ¥Ý¡¼¥È)¡£ -+.TP 3 -+\-quiet -+¿ÊĽ¾ðÊó¤ä·Ù¹ð¤Ê¤É¡¢¥³¥ó¥Ñ¥¤¥é¤Î½ÐÎϤòÍÞÀ©¤·¤Þ¤¹¡£ -+.TP 3 -+\-verbose -+¾ðÊó¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤¿¤êÆÃÄê¤Î¥¨¥é¡¼È¯À¸»þ¤Ë¥¹¥¿¥Ã¥¯¡¦¥È¥ì¡¼¥¹¤òɽ¼¨¤·¤¿¤ê¤¹¤ë¤Ê¤É¡¢¤¤ï¤á¤Æ¾éĹ¤Ë¤Ê¤ê¤Þ¤¹¡£ -+.TP 3 -+\-help -+¥³¥ó¥Ñ¥¤¥é¡¦¥¹¥¤¥Ã¥Á¤Î³µÍפòɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+\-version -+¥³¥ó¥Ñ¥¤¥é¤Î¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Þ¤¹¡£ -+.TP 3 -+<schema file/URL/dir> -+¥³¥ó¥Ñ¥¤¥ëÂоݤȤʤë1¤Ä¤Þ¤¿¤ÏÊ£¿ô¤Î¥¹¥¡¼¥Þ¡¦¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤¬¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤¿¾ì¹ç¡¢xjc¤Ï¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÁöºº¤·¡¢¤½¤³¤Ç¸«¤Ä¤«¤Ã¤¿¤¹¤Ù¤Æ¤Î¥¹¥¡¼¥Þ¡¦¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+Èóɸ½à¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó -+.LP -+.RS 3 -+.TP 3 -+\-Xlocator -+À¸À®¤µ¤ì¤¿¥³¡¼¥É¤Ç¤Ï¡¢ÈóÀ°Î󲽤θå¤ËJava Bean¥¤¥ó¥¹¥¿¥ó¥¹¤Ë´Þ¤Þ¤ì¤ë¥½¡¼¥¹XML¤Ë´Ø¤¹¤ëSAX Locator¾ðÊ󤬸ø³«¤µ¤ì¤Þ¤¹¡£ -+.TP 3 -+\-Xsync\-methods -+À¸À®¤µ¤ì¤¿¤¹¤Ù¤Æ¤Î¥á¥½¥Ã¥É¡¦¥·¥°¥Ë¥Á¥ã¤Ë\f2synchronized\fP¥¡¼¥ï¡¼¥É¤¬´Þ¤á¤é¤ì¤Þ¤¹¡£ -+.TP 3 -+\-mark\-generated -+À¸À®¤µ¤ì¤¿¥³¡¼¥É¤ËÃí¼á\f2@javax.annotation.Generated\fP¤òÉÕ¤±¤Þ¤¹¡£ -+.TP 3 -+\-episode <file> -+¥³¥ó¥Ñ¥¤¥ë¤´¤È¤Ë»ØÄꤵ¤ì¤¿¥¨¥Ô¥½¡¼¥É¡¦¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SS -+Èó¿ä¾©¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ª¤è¤Óºï½ü¤µ¤ì¤¿¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó -+.LP -+.RS 3 -+.TP 3 -+\-host & \-port -+¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤ÏÈó¿ä¾©¤È¤Ê¤ê¡¢\f3\-httpproxy\fP¥ª¥×¥·¥ç¥ó¤ÇÃÖ¤´¹¤¨¤é¤ì¤Þ¤·¤¿¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢²¼°Ì¸ß´¹À¤ò³ÎÊݤ¹¤ëÌÜŪ¤Ç°ú³¤¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹¤¬¡¢¥É¥¥å¥á¥ó¥È¤Ë¤ÏµºÜ¤µ¤ì¤º¡¢¾Íè¤Î¥ê¥ê¡¼¥¹¤Çºï½ü¤µ¤ì¤ë²ÄǽÀ¤â¤¢¤ê¤Þ¤¹¡£ -+.TP 3 -+\-use\-runtime -+JAXB 2.0»ÅÍͤǤϡ¢°Ü¿¢À¤Î¤¢¤ë¥é¥ó¥¿¥¤¥à¤¬ÄêµÁ¤µ¤ì¤¿¤¿¤á¡¢JAXB RI¤¬**/impl/runtime¥Ñ¥Ã¥±¡¼¥¸¤òÀ¸À®¤¹¤ëɬÍפ¬¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£¤³¤Î¤¿¤á¡¢¤³¤Î¥¹¥¤¥Ã¥Á¤ÏÉÔÍפȤʤꡢºï½ü¤µ¤ì¤Þ¤·¤¿¡£ -+.TP 3 -+\-source -+\-source¸ß´¹À¥¹¥¤¥Ã¥Á¤Ï¡¢JAXB 2.0¤ÎºÇ½é¤ÎEarly AccessÈǤÇƳÆþ¤µ¤ì¤Þ¤·¤¿¡£¤³¤Î¥¹¥¤¥Ã¥Á¤Ï¡¢JAXB 2.0¤Îº£¸å¤Î¥ê¥ê¡¼¥¹¤«¤éºï½ü¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤·¤¿¡£1.0.x¥³¡¼¥É¤òÀ¸À®¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢1.0.x¥³¡¼¥É¥Ù¡¼¥¹¤Î¥¤¥ó¥¹¥È¡¼¥ë¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ -+.RE -+ -+.LP -+.SS -+¥³¥ó¥Ñ¥¤¥é¤ÎÀ©¸Â -+.LP -+.LP -+Ä̾ï¤Ï¡¢´ØÏ¢¤¹¤ë¤¹¤Ù¤Æ¤Î¥¹¥¡¼¥Þ¤ò¡¢Æ±¤¸¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é¡¦¥¹¥¤¥Ã¥Á¤ò»ØÄꤷ¤Æ1¤Ä¤Îñ°Ì¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤¬ºÇ¤â°ÂÁ´¤Ç¤¹¡£ -+.LP -+.LP -+xjc¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ï¡¢¼¡¤Ë¼¨¤¹À©¸Â¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤é¤ÎÌäÂê¤Î¤Û¤È¤ó¤É¤Ï¡¢xjc¤ò²¿ÅÙ¤«¸Æ¤Ó½Ð¤·¤ÆÊ£¿ô¤Î¥¹¥¡¼¥Þ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¤Ë¤Î¤ßÅö¤Æ¤Ï¤Þ¤ê¤Þ¤¹¡£ -+.LP -+.RS 3 -+.TP 2 -+o -+Ê£¿ô¤Î¥¹¥¡¼¥Þ¤òƱ»þ¤Ë¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¤Ï¡¢¥¿¡¼¥²¥Ã¥È¤ÎJava¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Ë¼¡¤ÎÍ¥Àè½ç°Ì¤Î¥ë¡¼¥ë¤¬Å¬ÍѤµ¤ì¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -+.RS 3 -+.TP 3 -+1. -+¡Ö\f2\-p\fP¡×¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤¬ºÇ¤âÍ¥À褵¤ì¤Þ¤¹¡£ -+.TP 3 -+2. -+<\f2jaxb:package\fP>¤Î¥«¥¹¥¿¥Þ¥¤¥º -+.TP 3 -+3. -+\f2targetNamespace\fP¤¬Àë¸À¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢»ÅÍͤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë\f2targetNamespace\fP \-> Java¥Ñ¥Ã¥±¡¼¥¸Ì¾¤Î¥¢¥ë¥´¥ê¥º¥à¤òŬÍѤ·¤Þ¤¹¡£ -+.TP 3 -+4. -+\f2targetNamespace\fP¤¬Àë¸À¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¡Ögenerated¡×¤È¤¤¤¦Ì¾Á°¤Î¥Ï¡¼¥É¥³¡¼¥É¤µ¤ì¤¿¥Ñ¥Ã¥±¡¼¥¸¤ò»ÈÍѤ·¤Þ¤¹¡£ -+.RE -+.TP 2 -+o -+̾Á°¶õ´Ö¤´¤È¤ËÊ£¿ô¤Î<\f2jaxb:schemaBindings\fP>¤ò»ý¤Ä¤³¤È¤ÏÉÔÀµ¤Ç¤¹¡£¤³¤Î¤¿¤á¡¢1¤Ä¤Î¥¿¡¼¥²¥Ã¥È̾Á°¶õ´ÖÆâ¤Î2¤Ä¤Î¥¹¥¡¼¥Þ¤ò°Û¤Ê¤ëJava¥Ñ¥Ã¥±¡¼¥¸¤Ë¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£ -+.TP 2 -+o -+1¤Ä¤ÎJava¥Ñ¥Ã¥±¡¼¥¸¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤¹¤Ù¤Æ¤Î¥¹¥¡¼¥Þ¤Ï¡¢XJC¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é¤ËƱ»þ¤ËÁ÷¿®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¸ÄÊ̤˥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤Ï¤Ç¤¤º¡¢Í½´ü¤·¤¿¤È¤ª¤ê¤ËÆ°ºî¤·¤Þ¤»¤ó¡£ -+.TP 2 -+o -+Ê£¿ô¤Î¥¹¥¡¼¥Þ¡¦¥Õ¥¡¥¤¥ë¤Ë¤Þ¤¿¤¬¤ëÍ×ÁÇÃÖ´¹¥°¥ë¡¼¥×¤Ï¡¢Æ±»þ¤Ë¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -+.RE -+ -+.LP -+.SH "´ØÏ¢¹àÌÜ" -+.LP -+.RS 3 -+.TP 2 -+o -+¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡¦¥³¥ó¥Ñ¥¤¥é(XJC)¤Î¼Â¹Ô: [ -+.na -+\f2¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÎÌ¿Îá\fP @ -+.fi -+https://jaxb.dev.java.net/nonav/2.1.3/docs/xjc.html¡¢ -+.na -+\f2XJC Ant¥¿¥¹¥¯¤Î»ÈÍÑ\fP @ -+.fi -+https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.html] -+.TP 2 -+o -+.na -+\f2XML¥Ð¥¤¥ó¥É¤Î¤¿¤á¤ÎJava¥¢¡¼¥¥Æ¥¯¥Á¥ã(JAXB)\fP @ -+.fi -+http://docs.oracle.com/javase/7/docs/technotes/guides/xml/jaxb/index.html -+.RE -+ -+.LP -+ --- jdk/src/bsd/doc/man/jar.1 2012-08-10 10:22:50.000000000 -0700 -+++ jdk/src/bsd/doc/man/jar.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jar.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,31 +19,31 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -37599,7 +22460,7 @@ - + --- jdk/src/bsd/doc/man/jarsigner.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jarsigner.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jarsigner.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -38409,7 +23270,7 @@ - + --- jdk/src/bsd/doc/man/java.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/java.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/java.1 2013-05-05 09:38:28.000000000 -0700 @@ -1,4 +1,4 @@ -." Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved. @@ -39073,7 +23934,7 @@ - + --- jdk/src/bsd/doc/man/javac.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/javac.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/javac.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -39956,7 +24817,7 @@ - + --- jdk/src/bsd/doc/man/javadoc.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/javadoc.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/javadoc.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -43246,7 +28107,7 @@ - + --- jdk/src/bsd/doc/man/javah.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/javah.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/javah.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -43358,7 +28219,7 @@ - + --- jdk/src/bsd/doc/man/javap.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/javap.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/javap.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -43591,7 +28452,7 @@ - + --- jdk/src/bsd/doc/man/javaws.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/javaws.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/javaws.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -43627,7 +28488,7 @@ - + --- jdk/src/bsd/doc/man/jcmd.1 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/bsd/doc/man/jcmd.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jcmd.1 2013-05-05 09:38:28.000000000 -0700 @@ -0,0 +1,118 @@ +." Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved. +." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -43748,7 +28609,7 @@ +.LP + --- jdk/src/bsd/doc/man/jconsole.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jconsole.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jconsole.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -43867,7 +28728,7 @@ - + --- jdk/src/bsd/doc/man/jdb.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jdb.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jdb.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -44202,7 +29063,7 @@ - + --- jdk/src/bsd/doc/man/jhat.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jhat.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jhat.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -44338,7 +29199,7 @@ - + --- jdk/src/bsd/doc/man/jinfo.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jinfo.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jinfo.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -44475,7 +29336,7 @@ - + --- jdk/src/bsd/doc/man/jmap.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jmap.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jmap.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -44612,7 +29473,7 @@ - + --- jdk/src/bsd/doc/man/jps.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jps.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jps.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -44729,7 +29590,7 @@ - + --- jdk/src/bsd/doc/man/jrunscript.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jrunscript.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jrunscript.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -44877,7 +29738,7 @@ - + --- jdk/src/bsd/doc/man/jsadebugd.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jsadebugd.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jsadebugd.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -44957,7 +29818,7 @@ - + --- jdk/src/bsd/doc/man/jstack.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jstack.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jstack.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -45068,7 +29929,7 @@ - + --- jdk/src/bsd/doc/man/jstat.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jstat.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jstat.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -46679,7 +31540,7 @@ - + --- jdk/src/bsd/doc/man/jstatd.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/jstatd.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/jstatd.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -46803,7 +31664,7 @@ - + --- jdk/src/bsd/doc/man/keytool.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/keytool.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/keytool.1 2013-05-05 09:38:28.000000000 -0700 @@ -1,4 +1,4 @@ -." Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1998-2011 keytool tool, Oracle and/or its affiliates. All rights reserved. @@ -48052,7 +32913,7 @@ - + --- jdk/src/bsd/doc/man/native2ascii.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/native2ascii.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/native2ascii.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -48094,7 +32955,7 @@ - + --- jdk/src/bsd/doc/man/orbd.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/orbd.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/orbd.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -48329,7 +33190,7 @@ - + --- jdk/src/bsd/doc/man/pack200.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/pack200.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/pack200.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -48495,7 +33356,7 @@ - + --- jdk/src/bsd/doc/man/policytool.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/policytool.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/policytool.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,71 +19,86 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -48609,7 +33470,7 @@ - + --- jdk/src/bsd/doc/man/rmic.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/rmic.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/rmic.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -48819,7 +33680,7 @@ - + --- jdk/src/bsd/doc/man/rmid.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/rmid.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/rmid.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -49100,7 +33961,7 @@ - + --- jdk/src/bsd/doc/man/rmiregistry.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/rmiregistry.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/rmiregistry.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,14 +19,14 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -49144,7 +34005,7 @@ -http://download.oracle.com/javase/7/docs/api/java/rmi/Naming.html +http://docs.oracle.com/javase/7/docs/api/java/rmi/Naming.html --- jdk/src/bsd/doc/man/schemagen.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/schemagen.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/schemagen.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -49212,7 +34073,7 @@ - + --- jdk/src/bsd/doc/man/serialver.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/serialver.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/serialver.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -49273,7 +34134,7 @@ - + --- jdk/src/bsd/doc/man/servertool.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/servertool.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/servertool.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,13 +19,13 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -49382,7 +34243,7 @@ -orbd(1) +orbd(1) --- jdk/src/bsd/doc/man/tnameserv.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/tnameserv.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/tnameserv.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,18 +19,18 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -49654,7 +34515,7 @@ - + --- jdk/src/bsd/doc/man/unpack200.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/unpack200.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/unpack200.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -49722,7 +34583,7 @@ - + --- jdk/src/bsd/doc/man/wsgen.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/wsgen.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/wsgen.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -49939,7 +34800,7 @@ -Note that you do not have to generate WSDL at the development time as JAXWS runtime will automatically generate a WSDL for you when you deploy your service. +Note that you do not have to generate WSDL at the development time as JAXWS runtime will automatically generate a WSDL for you when you deploy your service. --- jdk/src/bsd/doc/man/wsimport.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/wsimport.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/wsimport.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -50237,7 +35098,7 @@ - + --- jdk/src/bsd/doc/man/xjc.1 2012-08-10 10:22:51.000000000 -0700 -+++ jdk/src/bsd/doc/man/xjc.1 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/bsd/doc/man/xjc.1 2013-05-05 09:38:28.000000000 -0700 @@ -19,7 +19,7 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. @@ -50507,7 +35368,7 @@ - + --- jdk/src/macosx/classes/com/apple/laf/AquaPanelUI.java 2012-08-10 10:23:05.000000000 -0700 -+++ jdk/src/macosx/classes/com/apple/laf/AquaPanelUI.java 2013-01-16 00:07:00.000000000 -0800 ++++ jdk/src/macosx/classes/com/apple/laf/AquaPanelUI.java 2013-05-05 09:38:28.000000000 -0700 @@ -32,20 +32,10 @@ import com.apple.laf.AquaUtils.RecyclableSingleton; import com.apple.laf.AquaUtils.RecyclableSingletonFromDefaultConstructor; @@ -50530,7 +35391,7 @@ - } } --- jdk/src/macosx/classes/com/apple/laf/AquaRootPaneUI.java 2012-08-10 10:23:07.000000000 -0700 -+++ jdk/src/macosx/classes/com/apple/laf/AquaRootPaneUI.java 2013-01-16 00:07:00.000000000 -0800 ++++ jdk/src/macosx/classes/com/apple/laf/AquaRootPaneUI.java 2013-05-05 09:38:28.000000000 -0700 @@ -319,12 +319,4 @@ updateComponentTreeUIActivation(element, active); } @@ -50545,7 +35406,7 @@ - } } --- jdk/src/macosx/classes/com/apple/laf/AquaToolBarUI.java 2012-08-10 10:23:07.000000000 -0700 -+++ jdk/src/macosx/classes/com/apple/laf/AquaToolBarUI.java 2013-01-16 00:07:00.000000000 -0800 ++++ jdk/src/macosx/classes/com/apple/laf/AquaToolBarUI.java 2013-05-05 09:38:28.000000000 -0700 @@ -73,7 +73,9 @@ g.translate(x, y); @@ -50571,7 +35432,7 @@ - } } --- jdk/src/macosx/classes/com/apple/laf/AquaUtils.java 2012-08-10 10:23:08.000000000 -0700 -+++ jdk/src/macosx/classes/com/apple/laf/AquaUtils.java 2013-01-16 00:07:00.000000000 -0800 ++++ jdk/src/macosx/classes/com/apple/laf/AquaUtils.java 2013-05-05 09:38:28.000000000 -0700 @@ -28,19 +28,18 @@ import java.awt.*; import java.awt.image.*; @@ -50646,7 +35507,7 @@ } - --- jdk/src/macosx/classes/com/apple/laf/ScreenMenuItem.java 2012-08-10 10:23:09.000000000 -0700 -+++ jdk/src/macosx/classes/com/apple/laf/ScreenMenuItem.java 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/classes/com/apple/laf/ScreenMenuItem.java 2013-05-05 09:38:28.000000000 -0700 @@ -34,7 +34,7 @@ import sun.lwawt.macosx.CMenuItem; @@ -50701,7 +35562,7 @@ fMenuItem.doClick(0); // This takes care of all the different events } --- jdk/src/macosx/classes/com/apple/laf/ScreenMenuItemCheckbox.java 2012-08-10 10:23:09.000000000 -0700 -+++ jdk/src/macosx/classes/com/apple/laf/ScreenMenuItemCheckbox.java 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/classes/com/apple/laf/ScreenMenuItemCheckbox.java 2013-05-05 09:38:28.000000000 -0700 @@ -36,7 +36,7 @@ import sun.lwawt.macosx.*; @@ -50742,7 +35603,7 @@ public void actionPerformed(final ActionEvent e) { --- jdk/src/macosx/classes/sun/java2d/opengl/CGLGraphicsConfig.java 2012-08-10 10:23:11.000000000 -0700 -+++ jdk/src/macosx/classes/sun/java2d/opengl/CGLGraphicsConfig.java 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/classes/sun/java2d/opengl/CGLGraphicsConfig.java 2013-05-05 09:38:28.000000000 -0700 @@ -31,8 +31,12 @@ import java.awt.Component; import java.awt.Graphics; @@ -50863,7 +35724,7 @@ + } } --- jdk/src/macosx/classes/sun/java2d/opengl/CGLLayer.java 2012-08-10 10:23:11.000000000 -0700 -+++ jdk/src/macosx/classes/sun/java2d/opengl/CGLLayer.java 2013-01-16 00:07:01.000000000 -0800 ++++ jdk/src/macosx/classes/sun/java2d/opengl/CGLLayer.java 2013-05-05 09:38:28.000000000 -0700 @@ -68,12 +68,11 @@ } @@ -50880,7 +35741,7 @@ public Object getDestination() { --- jdk/src/macosx/classes/sun/lwawt/LWComponentPeer.java 2012-08-10 10:23:11.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/LWComponentPeer.java 2013-01-16 00:07:01.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/LWComponentPeer.java 2013-05-05 09:38:28.000000000 -0700 @@ -424,7 +424,8 @@ @Override @@ -51009,7 +35870,7 @@ * Used by ContainerPeer to skip all the paint events during layout. * --- jdk/src/macosx/classes/sun/lwawt/LWRepaintArea.java 2012-08-10 10:23:11.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/LWRepaintArea.java 2013-01-16 00:07:01.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/LWRepaintArea.java 2013-05-05 09:38:28.000000000 -0700 @@ -58,6 +58,9 @@ private static void flushBuffers(final LWComponentPeer peer) { @@ -51021,7 +35882,7 @@ } } --- jdk/src/macosx/classes/sun/lwawt/LWTextAreaPeer.java 2012-08-10 10:23:11.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/LWTextAreaPeer.java 2013-01-16 00:07:01.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/LWTextAreaPeer.java 2013-05-05 09:38:28.000000000 -0700 @@ -129,6 +129,16 @@ } @@ -51040,7 +35901,7 @@ final int end) { synchronized (getDelegateLock()) { --- jdk/src/macosx/classes/sun/lwawt/LWTextComponentPeer.java 2012-08-10 10:23:11.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/LWTextComponentPeer.java 2013-01-16 00:07:01.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/LWTextComponentPeer.java 2013-05-05 09:38:28.000000000 -0700 @@ -124,7 +124,7 @@ } @@ -51051,7 +35912,14 @@ // JTextArea.setText() posts two different events (remove & insert). // Since we make no differences between text events, --- jdk/src/macosx/classes/sun/lwawt/LWToolkit.java 2012-08-10 10:23:11.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/LWToolkit.java 2013-01-16 00:07:01.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/LWToolkit.java 2013-05-05 09:38:28.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it @@ -522,6 +522,12 @@ postEvent(targetToAppContext(event.getSource()), event); } @@ -51065,8 +35933,24 @@ @Override public void grab(Window w) { if (w.getPeer() != null) { +@@ -532,7 +538,7 @@ + @Override + public void ungrab(Window w) { + if (w.getPeer() != null) { +- ((LWWindowPeer)w.getPeer()).ungrab(); ++ ((LWWindowPeer)w.getPeer()).ungrab(false); + } + } + } --- jdk/src/macosx/classes/sun/lwawt/LWWindowPeer.java 2012-08-10 10:23:11.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/LWWindowPeer.java 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/LWWindowPeer.java 2013-05-05 09:38:28.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,6 @@ import sun.java2d.*; import sun.java2d.loops.Blit; @@ -51086,8 +35970,12 @@ /** * Current modal blocker or null. * -@@ -174,11 +169,6 @@ - setAlwaysOnTop(getTarget().isAlwaysOnTop()); +@@ -171,14 +166,9 @@ + setTitle(((Dialog) getTarget()).getTitle()); + } + +- setAlwaysOnTop(getTarget().isAlwaysOnTop()); ++ updateAlwaysOnTopState(); updateMinimumSize(); - final Shape shape = getTarget().getShape(); @@ -51135,6 +36023,17 @@ // Don't post ComponentMoved/Resized and Paint events // until we've got a notification from the delegate setBounds(x, y, w, h, op, false, false); +@@ -402,8 +404,8 @@ + } + + @Override +- public void setAlwaysOnTop(boolean value) { +- platformWindow.setAlwaysOnTop(value); ++ public void updateAlwaysOnTopState() { ++ platformWindow.setAlwaysOnTop(getTarget().isAlwaysOnTop()); + } + + @Override @@ -426,14 +428,33 @@ @Override @@ -51148,9 +36047,7 @@ + min.height = Math.max(min.height, MINIMUM_HEIGHT); + } else { + min = new Dimension(MINIMUM_WIDTH, MINIMUM_HEIGHT); - } -- if (d == null) { -- d = new Dimension(MINIMUM_WIDTH, MINIMUM_HEIGHT); ++ } + + final int maxW, maxH; + if (graphicsConfig instanceof TextureSizeConstraining) { @@ -51158,7 +36055,9 @@ + maxH = ((TextureSizeConstraining)graphicsConfig).getMaxTextureHeight(); + } else { + maxW = maxH = Integer.MAX_VALUE; -+ } + } +- if (d == null) { +- d = new Dimension(MINIMUM_WIDTH, MINIMUM_HEIGHT); + + final Dimension max; + if (getTarget().isMaximumSizeSet()) { @@ -51343,8 +36242,30 @@ getRegion(), 0, 0, 0, 0, size.width, size.height); } } +@@ -1271,13 +1268,19 @@ + grabbingWindow = this; + } + +- void ungrab() { ++ final void ungrab(boolean doPost) { + if (isGrabbing()) { + grabbingWindow = null; +- postEvent(new UngrabEvent(getTarget())); ++ if (doPost) { ++ postEvent(new UngrabEvent(getTarget())); ++ } + } + } + ++ void ungrab() { ++ ungrab(true); ++ } ++ + private boolean isGrabbing() { + return this == grabbingWindow; + } --- jdk/src/macosx/classes/sun/lwawt/PlatformWindow.java 2012-08-10 10:23:12.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/PlatformWindow.java 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/PlatformWindow.java 2013-05-05 09:38:28.000000000 -0700 @@ -131,7 +131,10 @@ public void setResizable(boolean resizable); @@ -51358,7 +36279,7 @@ /** * Transforms the given Graphics object according to the native --- jdk/src/macosx/classes/sun/lwawt/macosx/CDropTargetContextPeer.java 2012-08-10 10:23:12.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/macosx/CDropTargetContextPeer.java 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/macosx/CDropTargetContextPeer.java 2013-05-05 09:38:28.000000000 -0700 @@ -38,7 +38,7 @@ private long fNativeDropTransfer = 0; private long fNativeDataAvailable = 0; @@ -51368,8 +36289,39 @@ Object awtLockAccess = new Object(); +--- jdk/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java 2012-08-10 10:23:12.000000000 -0700 ++++ jdk/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java 2013-05-05 09:38:28.000000000 -0700 +@@ -119,7 +119,9 @@ + + public void handleWindowFocusEvent(boolean parentWindowActive) { + this.parentWindowActive = parentWindowActive; +- if (focused) { ++ // ignore focus "lost" native request as it may mistakenly ++ // deactivate active window (see 8001161) ++ if (focused && parentWindowActive) { + responder.handleWindowFocusEvent(parentWindowActive); + } + } +--- jdk/src/macosx/classes/sun/lwawt/macosx/CFileDialog.java 2012-08-10 10:23:12.000000000 -0700 ++++ jdk/src/macosx/classes/sun/lwawt/macosx/CFileDialog.java 2013-05-05 09:38:28.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -174,7 +174,7 @@ + } + + @Override +- public void setAlwaysOnTop(boolean alwaysOnTop) { ++ public void updateAlwaysOnTopState() { + } + + @Override --- jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java 2012-08-10 10:23:13.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java 2013-05-05 09:38:28.000000000 -0700 @@ -117,7 +117,7 @@ Rectangle r = peer.getBounds(); Image im = null; @@ -51389,7 +36341,7 @@ @Override public Graphics transformGraphics(Graphics g) { --- jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java 2012-08-10 10:23:13.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java 2013-01-16 00:07:01.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java 2013-05-05 09:38:28.000000000 -0700 @@ -64,7 +64,7 @@ } @@ -51400,7 +36352,7 @@ /* --- jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java 2012-08-10 10:23:13.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java 2013-05-05 09:38:28.000000000 -0700 @@ -299,7 +299,7 @@ // If the target is a dialog, popup or tooltip we want it to ignore the brushed metal look. @@ -51475,8 +36427,26 @@ // ---------------------------------------------------------------------- // UTILITY METHODS // ---------------------------------------------------------------------- +--- jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterDialogPeer.java 2012-08-10 10:23:13.000000000 -0700 ++++ jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterDialogPeer.java 2013-05-05 09:38:28.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -87,7 +87,7 @@ + } + + // 1.6 peer method +- public void setAlwaysOnTop(boolean value) { ++ public void updateAlwaysOnTopState() { + // no-op, since we just show the native print dialog + } + --- jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java 2012-08-10 10:23:14.000000000 -0700 -+++ jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java 2013-05-05 09:38:28.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. @@ -51542,7 +36512,7 @@ public boolean enableInputMethodsForTextComponent() { return true; --- jdk/src/macosx/native/sun/awt/AWTEvent.h 2012-08-10 10:23:21.000000000 -0700 -+++ jdk/src/macosx/native/sun/awt/AWTEvent.h 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/native/sun/awt/AWTEvent.h 2013-05-05 09:38:28.000000000 -0700 @@ -33,5 +33,7 @@ void DeliverJavaMouseEvent(JNIEnv *env, NSEvent *event, jobject peer); void SendAdditionalJavaEvents(JNIEnv *env, NSEvent *nsEvent, jobject peer); @@ -51552,7 +36522,7 @@ #endif /* __AWTEVENT_H */ --- jdk/src/macosx/native/sun/awt/AWTEvent.m 2012-08-10 10:23:21.000000000 -0700 -+++ jdk/src/macosx/native/sun/awt/AWTEvent.m 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/native/sun/awt/AWTEvent.m 2013-05-05 09:38:28.000000000 -0700 @@ -244,6 +244,7 @@ //NSUInteger cgsRightMask; unsigned short leftKeyCode; @@ -51712,7 +36682,7 @@ JNF_COCOA_EXIT(env); --- jdk/src/macosx/native/sun/awt/AWTWindow.m 2012-08-10 10:23:21.000000000 -0700 -+++ jdk/src/macosx/native/sun/awt/AWTWindow.m 2013-01-16 00:07:01.000000000 -0800 ++++ jdk/src/macosx/native/sun/awt/AWTWindow.m 2013-05-05 09:38:28.000000000 -0700 @@ -1017,17 +1017,14 @@ (JNIEnv *env, jclass clazz, jlong windowPtr) { @@ -51737,7 +36707,7 @@ JNF_COCOA_EXIT(env); } --- jdk/src/macosx/native/sun/awt/CDragSource.m 2012-08-10 10:23:22.000000000 -0700 -+++ jdk/src/macosx/native/sun/awt/CDragSource.m 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/native/sun/awt/CDragSource.m 2013-05-05 09:38:28.000000000 -0700 @@ -460,7 +460,7 @@ } @@ -51757,7 +36727,7 @@ NSDragOperation currentOp = [DnDUtilities nsDragOperationForModifiers:[NSEvent modifierFlags]]; NSDragOperation allowedOp = [DnDUtilities mapJavaDragOperationToNS:fSourceActions] & currentOp; --- jdk/src/macosx/native/sun/awt/CMenuItem.m 2012-08-10 10:23:22.000000000 -0700 -+++ jdk/src/macosx/native/sun/awt/CMenuItem.m 2013-01-16 08:58:09.000000000 -0800 ++++ jdk/src/macosx/native/sun/awt/CMenuItem.m 2013-05-05 09:38:28.000000000 -0700 @@ -70,6 +70,18 @@ JNIEnv *env = [ThreadUtilities getJNIEnv]; JNF_COCOA_ENTER(env); @@ -51806,7 +36776,7 @@ [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ --- jdk/src/macosx/native/sun/awt/DnDUtilities.h 2012-08-10 10:23:22.000000000 -0700 -+++ jdk/src/macosx/native/sun/awt/DnDUtilities.h 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/macosx/native/sun/awt/DnDUtilities.h 2013-05-05 09:38:28.000000000 -0700 @@ -42,7 +42,6 @@ + (jint)narrowJavaDropActions:(jint)actions; @@ -51826,7 +36796,7 @@ + (NSDragOperation)nsDragOperationForModifiers:(NSUInteger)modifiers; + (jint) javaKeyModifiersForNSDragOperation:(NSDragOperation)dragOp; --- jdk/src/macosx/native/sun/awt/DnDUtilities.m 2012-08-10 10:23:22.000000000 -0700 -+++ jdk/src/macosx/native/sun/awt/DnDUtilities.m 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/macosx/native/sun/awt/DnDUtilities.m 2013-05-05 09:38:28.000000000 -0700 @@ -161,28 +161,6 @@ } @@ -51890,7 +36860,7 @@ // Java first --- jdk/src/macosx/native/sun/awt/ImageSurfaceData.h 2012-08-10 10:23:22.000000000 -0700 -+++ jdk/src/macosx/native/sun/awt/ImageSurfaceData.h 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/macosx/native/sun/awt/ImageSurfaceData.h 2013-05-05 09:38:28.000000000 -0700 @@ -41,7 +41,7 @@ // If there is an image present, this is a no-op void makeSureImageIsCreated(ImageSDOps* isdo); @@ -51924,7 +36894,7 @@ struct _ImageSDOps { --- jdk/src/macosx/native/sun/awt/ImageSurfaceData.m 2012-08-10 10:23:22.000000000 -0700 -+++ jdk/src/macosx/native/sun/awt/ImageSurfaceData.m 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/macosx/native/sun/awt/ImageSurfaceData.m 2013-05-05 09:38:28.000000000 -0700 @@ -53,10 +53,6 @@ // for vImage framework headers #include <Accelerate/Accelerate.h> @@ -51956,7 +36926,7 @@ CGContextSetAlpha(qsdo->cgRef, 1.0f); CGContextDrawImage(qsdo->cgRef, CGRectMake(0, 0, width, height), javaImg); --- jdk/src/macosx/native/sun/awt/QuartzRenderer.m 2012-08-10 10:23:24.000000000 -0700 -+++ jdk/src/macosx/native/sun/awt/QuartzRenderer.m 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/macosx/native/sun/awt/QuartzRenderer.m 2013-05-05 09:38:28.000000000 -0700 @@ -50,9 +50,6 @@ // same value as defined in Sun's own code #define XOR_ALPHA_CUTOFF 128 @@ -51986,7 +36956,7 @@ } --- jdk/src/macosx/native/sun/awt/QuartzSurfaceData.m 2012-08-10 10:23:24.000000000 -0700 -+++ jdk/src/macosx/native/sun/awt/QuartzSurfaceData.m 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/macosx/native/sun/awt/QuartzSurfaceData.m 2013-05-05 09:38:28.000000000 -0700 @@ -40,9 +40,6 @@ #import <AppKit/AppKit.h> #import "ThreadUtilities.h" @@ -52018,7 +36988,7 @@ qsdo->graphicsStateInfo.offsetY = offsets.y; } --- jdk/src/macosx/native/sun/java2d/opengl/CGLGraphicsConfig.m 2012-08-10 10:23:24.000000000 -0700 -+++ jdk/src/macosx/native/sun/java2d/opengl/CGLGraphicsConfig.m 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/macosx/native/sun/java2d/opengl/CGLGraphicsConfig.m 2013-05-05 09:38:28.000000000 -0700 @@ -445,3 +445,20 @@ return cglinfo->context->caps; } @@ -52041,7 +37011,7 @@ +} + --- jdk/src/share/bin/java.c 2012-08-10 10:23:29.000000000 -0700 -+++ jdk/src/share/bin/java.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/bin/java.c 2013-05-05 09:38:28.000000000 -0700 @@ -104,7 +104,6 @@ static jboolean InitializeJVM(JavaVM **pvm, JNIEnv **penv, InvocationFunctions *ifn); @@ -52132,7 +37102,7 @@ return (jclass)result; --- jdk/src/share/bin/java.h 2012-08-10 10:23:29.000000000 -0700 -+++ jdk/src/share/bin/java.h 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/bin/java.h 2013-05-05 09:38:28.000000000 -0700 @@ -219,6 +219,10 @@ const char *name)); jclass FindBootStrapClass(JNIEnv *env, const char *classname); @@ -52145,7 +37115,7 @@ enum LaunchMode { // cf. sun.launcher.LauncherHelper --- jdk/src/share/bin/jli_util.c 2012-08-10 10:23:29.000000000 -0700 -+++ jdk/src/share/bin/jli_util.c 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/bin/jli_util.c 2013-05-05 09:38:28.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. @@ -52166,7 +37136,7 @@ } --- jdk/src/share/bin/jli_util.h 2012-08-10 10:23:29.000000000 -0700 -+++ jdk/src/share/bin/jli_util.h 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/bin/jli_util.h 2013-05-05 09:38:28.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. @@ -52214,7 +37184,7 @@ #define JLI_StrNCaseCmp(p1, p2, p3) strncasecmp((p1), (p2), (p3)) #define JLI_Snprintf snprintf --- jdk/src/share/bin/main.c 2012-08-10 10:23:29.000000000 -0700 -+++ jdk/src/share/bin/main.c 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/bin/main.c 2013-05-05 09:38:28.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved. @@ -52272,7 +37242,7 @@ sizeof(const_jargs) / sizeof(char *), const_jargs, sizeof(const_appclasspath) / sizeof(char *), const_appclasspath, --- jdk/src/share/bin/parse_manifest.c 2012-08-10 10:23:29.000000000 -0700 -+++ jdk/src/share/bin/parse_manifest.c 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/bin/parse_manifest.c 2013-05-05 09:38:28.000000000 -0700 @@ -490,9 +490,9 @@ #ifdef O_BINARY | O_BINARY /* use binary mode on windows */ @@ -52315,7 +37285,7 @@ if (rc = find_file(fd, &entry, manifest_name) != 0) { close(fd); --- jdk/src/share/bin/wildcard.c 2012-08-10 10:23:30.000000000 -0700 -+++ jdk/src/share/bin/wildcard.c 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/bin/wildcard.c 2013-05-05 09:38:28.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. @@ -52355,7 +37325,7 @@ " before: \"%s\"\n" " after : \"%s\"\n", --- jdk/src/share/classes/com/sun/beans/TypeResolver.java 2012-08-10 10:23:31.000000000 -0700 -+++ jdk/src/share/classes/com/sun/beans/TypeResolver.java 2013-01-16 00:07:02.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/TypeResolver.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. @@ -52594,7 +37564,7 @@ * with plain array class where it is possible. * Bug <a href="http://bugs.sun.com/view_bug.do?bug_id=5041784">5041784</a> --- jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java 2012-08-10 10:23:31.000000000 -0700 -+++ jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. @@ -52687,7 +37657,7 @@ /** --- jdk/src/share/classes/com/sun/beans/decoder/MethodElementHandler.java 2012-08-10 10:23:32.000000000 -0700 -+++ jdk/src/share/classes/com/sun/beans/decoder/MethodElementHandler.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/decoder/MethodElementHandler.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. @@ -52714,7 +37684,7 @@ ? ValueObjectImpl.VOID : ValueObjectImpl.create(value); --- jdk/src/share/classes/com/sun/beans/decoder/PropertyElementHandler.java 2012-08-10 10:23:32.000000000 -0700 -+++ jdk/src/share/classes/com/sun/beans/decoder/PropertyElementHandler.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/decoder/PropertyElementHandler.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. @@ -52760,7 +37730,7 @@ } --- jdk/src/share/classes/com/sun/beans/editors/BooleanEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/BooleanEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/BooleanEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. @@ -52839,7 +37809,7 @@ + } +} --- jdk/src/share/classes/com/sun/beans/editors/ByteEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/ByteEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/ByteEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,48 @@ +/* + * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -52890,7 +37860,7 @@ + +} --- jdk/src/share/classes/com/sun/beans/editors/ColorEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/ColorEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/ColorEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,214 @@ +/* + * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -53107,7 +38077,7 @@ + private PropertyChangeSupport support = new PropertyChangeSupport(this); +} --- jdk/src/share/classes/com/sun/beans/editors/DoubleEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/DoubleEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/DoubleEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,41 @@ +/* + * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -53151,7 +38121,7 @@ + +} --- jdk/src/share/classes/com/sun/beans/editors/EnumEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/EnumEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/EnumEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. @@ -53297,7 +38267,7 @@ + } +} --- jdk/src/share/classes/com/sun/beans/editors/FloatEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/FloatEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/FloatEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,48 @@ +/* + * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -53348,7 +38318,7 @@ + +} --- jdk/src/share/classes/com/sun/beans/editors/FontEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/FontEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/FontEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,219 @@ +/* + * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -53570,7 +38540,7 @@ + +} --- jdk/src/share/classes/com/sun/beans/editors/IntegerEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/IntegerEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/IntegerEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. @@ -53615,7 +38585,7 @@ + +} --- jdk/src/share/classes/com/sun/beans/editors/LongEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/LongEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/LongEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,48 @@ +/* + * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -53666,7 +38636,7 @@ + +} --- jdk/src/share/classes/com/sun/beans/editors/NumberEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/NumberEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/NumberEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -53713,7 +38683,7 @@ + +} --- jdk/src/share/classes/com/sun/beans/editors/ShortEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/ShortEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/ShortEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,49 @@ +/* + * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -53765,7 +38735,7 @@ + +} --- jdk/src/share/classes/com/sun/beans/editors/StringEditor.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/editors/StringEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/editors/StringEditor.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,74 @@ +/* + * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -53842,7 +38812,7 @@ + +} --- jdk/src/share/classes/com/sun/beans/finder/BeanInfoFinder.java 2012-08-10 10:23:32.000000000 -0700 -+++ jdk/src/share/classes/com/sun/beans/finder/BeanInfoFinder.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/finder/BeanInfoFinder.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. @@ -53874,7 +38844,7 @@ : null; --- jdk/src/share/classes/com/sun/beans/finder/ClassFinder.java 2012-08-10 10:23:33.000000000 -0700 -+++ jdk/src/share/classes/com/sun/beans/finder/ClassFinder.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/finder/ClassFinder.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved. @@ -53908,7 +38878,7 @@ try { return Class.forName(name, false, loader); --- jdk/src/share/classes/com/sun/beans/finder/ConstructorFinder.java 2012-08-10 10:23:33.000000000 -0700 -+++ jdk/src/share/classes/com/sun/beans/finder/ConstructorFinder.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/finder/ConstructorFinder.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. @@ -53935,7 +38905,7 @@ } PrimitiveWrapperMap.replacePrimitivesWithWrappers(args); --- jdk/src/share/classes/com/sun/beans/finder/FieldFinder.java 2012-08-10 10:23:33.000000000 -0700 -+++ jdk/src/share/classes/com/sun/beans/finder/FieldFinder.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/finder/FieldFinder.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. @@ -53963,7 +38933,7 @@ } return field; --- jdk/src/share/classes/com/sun/beans/finder/MethodFinder.java 2012-08-10 10:23:33.000000000 -0700 -+++ jdk/src/share/classes/com/sun/beans/finder/MethodFinder.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/finder/MethodFinder.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. @@ -54020,7 +38990,7 @@ } } --- jdk/src/share/classes/com/sun/beans/finder/PropertyEditorFinder.java 2012-08-10 10:23:33.000000000 -0700 -+++ jdk/src/share/classes/com/sun/beans/finder/PropertyEditorFinder.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/finder/PropertyEditorFinder.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. @@ -54077,7 +39047,7 @@ + } } --- jdk/src/share/classes/com/sun/beans/infos/ComponentBeanInfo.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/com/sun/beans/infos/ComponentBeanInfo.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/beans/infos/ComponentBeanInfo.java 2013-05-05 09:38:35.000000000 -0700 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -54142,7 +39112,7 @@ + } +} --- jdk/src/share/classes/com/sun/crypto/provider/AESCrypt.java 2012-08-10 10:23:33.000000000 -0700 -+++ jdk/src/share/classes/com/sun/crypto/provider/AESCrypt.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/crypto/provider/AESCrypt.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. @@ -54284,7 +39254,7 @@ --- jdk/src/share/classes/com/sun/crypto/provider/DHKeyAgreement.java 2012-08-10 10:23:34.000000000 -0700 -+++ jdk/src/share/classes/com/sun/crypto/provider/DHKeyAgreement.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/com/sun/crypto/provider/DHKeyAgreement.java 2013-05-05 09:38:35.000000000 -0700 @@ -41,6 +41,8 @@ import javax.crypto.SecretKey; import javax.crypto.spec.*; @@ -54304,8 +39274,779 @@ // store the y value this.y = dhPubKey.getY(); +--- jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java 2012-08-10 10:23:37.000000000 -0700 ++++ jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java 2013-05-05 09:38:35.000000000 -0700 +@@ -238,12 +238,17 @@ + * sending warnings to listeners. + */ + protected void warningOccurred(int code) { +- if ((code < 0) || (code > MAX_WARNING)){ +- throw new InternalError("Invalid warning index"); ++ cbLock.lock(); ++ try { ++ if ((code < 0) || (code > MAX_WARNING)){ ++ throw new InternalError("Invalid warning index"); ++ } ++ processWarningOccurred ++ ("com.sun.imageio.plugins.jpeg.JPEGImageReaderResources", ++ Integer.toString(code)); ++ } finally { ++ cbLock.unlock(); + } +- processWarningOccurred +- ("com.sun.imageio.plugins.jpeg.JPEGImageReaderResources", +- Integer.toString(code)); + } + + /** +@@ -260,7 +265,12 @@ + * library warnings from being printed to stderr. + */ + protected void warningWithMessage(String msg) { +- processWarningOccurred(msg); ++ cbLock.lock(); ++ try { ++ processWarningOccurred(msg); ++ } finally { ++ cbLock.unlock(); ++ } + } + + public void setInput(Object input, +@@ -269,18 +279,55 @@ + { + setThreadLock(); + try { ++ cbLock.check(); ++ + super.setInput(input, seekForwardOnly, ignoreMetadata); + this.ignoreMetadata = ignoreMetadata; + resetInternalState(); + iis = (ImageInputStream) input; // Always works +- setSource(structPointer, iis); ++ setSource(structPointer); + } finally { + clearThreadLock(); + } + } + +- private native void setSource(long structPointer, +- ImageInputStream source); ++ /** ++ * This method is called from native code in order to fill ++ * native input buffer. ++ * ++ * We block any attempt to change the reading state during this ++ * method, in order to prevent a corruption of the native decoder ++ * state. ++ * ++ * @return number of bytes read from the stream. ++ */ ++ private int readInputData(byte[] buf, int off, int len) throws IOException { ++ cbLock.lock(); ++ try { ++ return iis.read(buf, off, len); ++ } finally { ++ cbLock.unlock(); ++ } ++ } ++ ++ /** ++ * This method is called from the native code in order to ++ * skip requested number of bytes in the input stream. ++ * ++ * @param n ++ * @return ++ * @throws IOException ++ */ ++ private long skipInputBytes(long n) throws IOException { ++ cbLock.lock(); ++ try { ++ return iis.skipBytes(n); ++ } finally { ++ cbLock.unlock(); ++ } ++ } ++ ++ private native void setSource(long structPointer); + + private void checkTablesOnly() throws IOException { + if (debug) { +@@ -332,6 +379,8 @@ + public int getNumImages(boolean allowSearch) throws IOException { + setThreadLock(); + try { // locked thread ++ cbLock.check(); ++ + return getNumImagesOnThread(allowSearch); + } finally { + clearThreadLock(); +@@ -531,8 +580,13 @@ + if (debug) { + System.out.println("pushing back " + num + " bytes"); + } +- iis.seek(iis.getStreamPosition()-num); +- // The buffer is clear after this, so no need to set haveSeeked. ++ cbLock.lock(); ++ try { ++ iis.seek(iis.getStreamPosition()-num); ++ // The buffer is clear after this, so no need to set haveSeeked. ++ } finally { ++ cbLock.unlock(); ++ } + } + + /** +@@ -639,7 +693,12 @@ + * Ignore this profile. + */ + iccCS = null; +- warningOccurred(WARNING_IGNORE_INVALID_ICC); ++ cbLock.lock(); ++ try { ++ warningOccurred(WARNING_IGNORE_INVALID_ICC); ++ } finally { ++ cbLock.unlock(); ++ } + } + } + } +@@ -648,6 +707,7 @@ + setThreadLock(); + try { + if (currentImage != imageIndex) { ++ cbLock.check(); + readHeader(imageIndex, true); + } + return width; +@@ -660,6 +720,7 @@ + setThreadLock(); + try { + if (currentImage != imageIndex) { ++ cbLock.check(); + readHeader(imageIndex, true); + } + return height; +@@ -688,6 +749,8 @@ + setThreadLock(); + try { + if (currentImage != imageIndex) { ++ cbLock.check(); ++ + readHeader(imageIndex, true); + } + +@@ -711,6 +774,7 @@ + private Iterator getImageTypesOnThread(int imageIndex) + throws IOException { + if (currentImage != imageIndex) { ++ cbLock.check(); + readHeader(imageIndex, true); + } + +@@ -926,6 +990,7 @@ + setThreadLock(); + try { + if (!tablesOnlyChecked) { ++ cbLock.check(); + checkTablesOnly(); + } + return streamMetadata; +@@ -946,6 +1011,8 @@ + return imageMetadata; + } + ++ cbLock.check(); ++ + gotoImage(imageIndex); + + imageMetadata = new JPEGMetadata(false, false, iis, this); +@@ -962,6 +1029,7 @@ + throws IOException { + setThreadLock(); + try { ++ cbLock.check(); + try { + readInternal(imageIndex, param, false); + } catch (RuntimeException e) { +@@ -1191,58 +1259,63 @@ + } + target.setRect(destROI.x, destROI.y + y, raster); + +- processImageUpdate(image, +- destROI.x, destROI.y+y, +- raster.getWidth(), 1, +- 1, 1, +- destinationBands); +- if ((y > 0) && (y%progInterval == 0)) { +- int height = target.getHeight()-1; +- float percentOfPass = ((float)y)/height; +- if (progressive) { +- if (knownPassCount != UNKNOWN) { +- processImageProgress((pass + percentOfPass)*100.0F +- / knownPassCount); +- } else if (maxProgressivePass != Integer.MAX_VALUE) { +- // Use the range of allowed progressive passes +- processImageProgress((pass + percentOfPass)*100.0F +- / (maxProgressivePass - minProgressivePass + 1)); +- } else { +- // Assume there are a minimum of MIN_ESTIMATED_PASSES +- // and that there is always one more pass +- // Compute the percentage as the percentage at the end +- // of the previous pass, plus the percentage of this +- // pass scaled to be the percentage of the total remaining, +- // assuming a minimum of MIN_ESTIMATED_PASSES passes and +- // that there is always one more pass. This is monotonic +- // and asymptotic to 1.0, which is what we need. +- int remainingPasses = // including this one +- Math.max(2, MIN_ESTIMATED_PASSES-pass); +- int totalPasses = pass + remainingPasses-1; +- progInterval = Math.max(height/20*totalPasses, +- totalPasses); +- if (y%progInterval == 0) { +- percentToDate = previousPassPercentage + +- (1.0F - previousPassPercentage) +- * (percentOfPass)/remainingPasses; +- if (debug) { +- System.out.print("pass= " + pass); +- System.out.print(", y= " + y); +- System.out.print(", progInt= " + progInterval); +- System.out.print(", % of pass: " + percentOfPass); +- System.out.print(", rem. passes: " +- + remainingPasses); +- System.out.print(", prev%: " +- + previousPassPercentage); +- System.out.print(", %ToDate: " + percentToDate); +- System.out.print(" "); ++ cbLock.lock(); ++ try { ++ processImageUpdate(image, ++ destROI.x, destROI.y+y, ++ raster.getWidth(), 1, ++ 1, 1, ++ destinationBands); ++ if ((y > 0) && (y%progInterval == 0)) { ++ int height = target.getHeight()-1; ++ float percentOfPass = ((float)y)/height; ++ if (progressive) { ++ if (knownPassCount != UNKNOWN) { ++ processImageProgress((pass + percentOfPass)*100.0F ++ / knownPassCount); ++ } else if (maxProgressivePass != Integer.MAX_VALUE) { ++ // Use the range of allowed progressive passes ++ processImageProgress((pass + percentOfPass)*100.0F ++ / (maxProgressivePass - minProgressivePass + 1)); ++ } else { ++ // Assume there are a minimum of MIN_ESTIMATED_PASSES ++ // and that there is always one more pass ++ // Compute the percentage as the percentage at the end ++ // of the previous pass, plus the percentage of this ++ // pass scaled to be the percentage of the total remaining, ++ // assuming a minimum of MIN_ESTIMATED_PASSES passes and ++ // that there is always one more pass. This is monotonic ++ // and asymptotic to 1.0, which is what we need. ++ int remainingPasses = // including this one ++ Math.max(2, MIN_ESTIMATED_PASSES-pass); ++ int totalPasses = pass + remainingPasses-1; ++ progInterval = Math.max(height/20*totalPasses, ++ totalPasses); ++ if (y%progInterval == 0) { ++ percentToDate = previousPassPercentage + ++ (1.0F - previousPassPercentage) ++ * (percentOfPass)/remainingPasses; ++ if (debug) { ++ System.out.print("pass= " + pass); ++ System.out.print(", y= " + y); ++ System.out.print(", progInt= " + progInterval); ++ System.out.print(", % of pass: " + percentOfPass); ++ System.out.print(", rem. passes: " ++ + remainingPasses); ++ System.out.print(", prev%: " ++ + previousPassPercentage); ++ System.out.print(", %ToDate: " + percentToDate); ++ System.out.print(" "); ++ } ++ processImageProgress(percentToDate*100.0F); + } +- processImageProgress(percentToDate*100.0F); + } ++ } else { ++ processImageProgress(percentOfPass * 100.0F); + } +- } else { +- processImageProgress(percentOfPass * 100.0F); + } ++ } finally { ++ cbLock.unlock(); + } + } + +@@ -1255,33 +1328,58 @@ + } + + private void passStarted (int pass) { +- this.pass = pass; +- previousPassPercentage = percentToDate; +- processPassStarted(image, +- pass, +- minProgressivePass, +- maxProgressivePass, +- 0, 0, +- 1,1, +- destinationBands); ++ cbLock.lock(); ++ try { ++ this.pass = pass; ++ previousPassPercentage = percentToDate; ++ processPassStarted(image, ++ pass, ++ minProgressivePass, ++ maxProgressivePass, ++ 0, 0, ++ 1,1, ++ destinationBands); ++ } finally { ++ cbLock.unlock(); ++ } + } + + private void passComplete () { +- processPassComplete(image); ++ cbLock.lock(); ++ try { ++ processPassComplete(image); ++ } finally { ++ cbLock.unlock(); ++ } + } + + void thumbnailStarted(int thumbnailIndex) { +- processThumbnailStarted(currentImage, thumbnailIndex); ++ cbLock.lock(); ++ try { ++ processThumbnailStarted(currentImage, thumbnailIndex); ++ } finally { ++ cbLock.unlock(); ++ } + } + + // Provide access to protected superclass method + void thumbnailProgress(float percentageDone) { +- processThumbnailProgress(percentageDone); ++ cbLock.lock(); ++ try { ++ processThumbnailProgress(percentageDone); ++ } finally { ++ cbLock.unlock(); ++ } + } + + // Provide access to protected superclass method + void thumbnailComplete() { +- processThumbnailComplete(); ++ cbLock.lock(); ++ try { ++ processThumbnailComplete(); ++ } finally { ++ cbLock.unlock(); ++ } + } + + /** +@@ -1305,6 +1403,11 @@ + public void abort() { + setThreadLock(); + try { ++ /** ++ * NB: we do not check the call back lock here, ++ * we allow to abort the reader any time. ++ */ ++ + super.abort(); + abortRead(structPointer); + } finally { +@@ -1327,6 +1430,7 @@ + setThreadLock(); + Raster retval = null; + try { ++ cbLock.check(); + /* + * This could be further optimized by not resetting the dest. + * offset and creating a translated raster in readInternal() +@@ -1366,6 +1470,8 @@ + public int getNumThumbnails(int imageIndex) throws IOException { + setThreadLock(); + try { ++ cbLock.check(); ++ + getImageMetadata(imageIndex); // checks iis state for us + // Now check the jfif segments + JFIFMarkerSegment jfif = +@@ -1386,6 +1492,8 @@ + throws IOException { + setThreadLock(); + try { ++ cbLock.check(); ++ + if ((thumbnailIndex < 0) + || (thumbnailIndex >= getNumThumbnails(imageIndex))) { + throw new IndexOutOfBoundsException("No such thumbnail"); +@@ -1404,6 +1512,8 @@ + throws IOException { + setThreadLock(); + try { ++ cbLock.check(); ++ + if ((thumbnailIndex < 0) + || (thumbnailIndex >= getNumThumbnails(imageIndex))) { + throw new IndexOutOfBoundsException("No such thumbnail"); +@@ -1423,6 +1533,8 @@ + throws IOException { + setThreadLock(); + try { ++ cbLock.check(); ++ + if ((thumbnailIndex < 0) + || (thumbnailIndex >= getNumThumbnails(imageIndex))) { + throw new IndexOutOfBoundsException("No such thumbnail"); +@@ -1463,6 +1575,7 @@ + public void reset() { + setThreadLock(); + try { ++ cbLock.check(); + super.reset(); + } finally { + clearThreadLock(); +@@ -1474,6 +1587,8 @@ + public void dispose() { + setThreadLock(); + try { ++ cbLock.check(); ++ + if (structPointer != 0) { + disposerRecord.dispose(); + structPointer = 0; +@@ -1535,6 +1650,36 @@ + theThread = null; + } + } ++ ++ private CallBackLock cbLock = new CallBackLock(); ++ ++ private static class CallBackLock { ++ ++ private State lockState; ++ ++ CallBackLock() { ++ lockState = State.Unlocked; ++ } ++ ++ void check() { ++ if (lockState != State.Unlocked) { ++ throw new IllegalStateException("Access to the reader is not allowed"); ++ } ++ } ++ ++ private void lock() { ++ lockState = State.Locked; ++ } ++ ++ private void unlock() { ++ lockState = State.Unlocked; ++ } ++ ++ private static enum State { ++ Unlocked, ++ Locked ++ } ++ } + } + + /** +--- jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java 2012-08-10 10:23:37.000000000 -0700 ++++ jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java 2013-05-05 09:38:35.000000000 -0700 +@@ -178,8 +178,7 @@ + static { + java.security.AccessController.doPrivileged( + new sun.security.action.LoadLibraryAction("jpeg")); +- initWriterIDs(ImageOutputStream.class, +- JPEGQTable.class, ++ initWriterIDs(JPEGQTable.class, + JPEGHuffmanTable.class); + } + +@@ -195,11 +194,13 @@ + public void setOutput(Object output) { + setThreadLock(); + try { ++ cbLock.check(); ++ + super.setOutput(output); // validates output + resetInternalState(); + ios = (ImageOutputStream) output; // so this will always work + // Set the native destination +- setDest(structPointer, ios); ++ setDest(structPointer); + } finally { + clearThreadLock(); + } +@@ -354,6 +355,8 @@ + ImageWriteParam param) throws IOException { + setThreadLock(); + try { ++ cbLock.check(); ++ + writeOnThread(streamMetadata, image, param); + } finally { + clearThreadLock(); +@@ -1077,13 +1080,18 @@ + haveMetadata, + restartInterval); + +- if (aborted) { +- processWriteAborted(); +- } else { +- processImageComplete(); +- } ++ cbLock.lock(); ++ try { ++ if (aborted) { ++ processWriteAborted(); ++ } else { ++ processImageComplete(); ++ } + +- ios.flush(); ++ ios.flush(); ++ } finally { ++ cbLock.unlock(); ++ } + currentImage++; // After a successful write + } + +@@ -1091,6 +1099,8 @@ + throws IOException { + setThreadLock(); + try { ++ cbLock.check(); ++ + prepareWriteSequenceOnThread(streamMetadata); + } finally { + clearThreadLock(); +@@ -1170,6 +1180,8 @@ + throws IOException { + setThreadLock(); + try { ++ cbLock.check(); ++ + if (sequencePrepared == false) { + throw new IllegalStateException("sequencePrepared not called!"); + } +@@ -1183,6 +1195,8 @@ + public void endWriteSequence() throws IOException { + setThreadLock(); + try { ++ cbLock.check(); ++ + if (sequencePrepared == false) { + throw new IllegalStateException("sequencePrepared not called!"); + } +@@ -1195,6 +1209,10 @@ + public synchronized void abort() { + setThreadLock(); + try { ++ /** ++ * NB: we do not check the call back lock here, we allow to abort ++ * the reader any time. ++ */ + super.abort(); + abortWrite(structPointer); + } finally { +@@ -1218,6 +1236,8 @@ + public void reset() { + setThreadLock(); + try { ++ cbLock.check(); ++ + super.reset(); + } finally { + clearThreadLock(); +@@ -1227,6 +1247,8 @@ + public void dispose() { + setThreadLock(); + try { ++ cbLock.check(); ++ + if (structPointer != 0) { + disposerRecord.dispose(); + structPointer = 0; +@@ -1246,13 +1268,18 @@ + * sending warnings to listeners. + */ + void warningOccurred(int code) { +- if ((code < 0) || (code > MAX_WARNING)){ +- throw new InternalError("Invalid warning index"); ++ cbLock.lock(); ++ try { ++ if ((code < 0) || (code > MAX_WARNING)){ ++ throw new InternalError("Invalid warning index"); ++ } ++ processWarningOccurred ++ (currentImage, ++ "com.sun.imageio.plugins.jpeg.JPEGImageWriterResources", ++ Integer.toString(code)); ++ } finally { ++ cbLock.unlock(); + } +- processWarningOccurred +- (currentImage, +- "com.sun.imageio.plugins.jpeg.JPEGImageWriterResources", +- Integer.toString(code)); + } + + /** +@@ -1269,21 +1296,41 @@ + * library warnings from being printed to stderr. + */ + void warningWithMessage(String msg) { +- processWarningOccurred(currentImage, msg); ++ cbLock.lock(); ++ try { ++ processWarningOccurred(currentImage, msg); ++ } finally { ++ cbLock.unlock(); ++ } + } + + void thumbnailStarted(int thumbnailIndex) { +- processThumbnailStarted(currentImage, thumbnailIndex); ++ cbLock.lock(); ++ try { ++ processThumbnailStarted(currentImage, thumbnailIndex); ++ } finally { ++ cbLock.unlock(); ++ } + } + + // Provide access to protected superclass method + void thumbnailProgress(float percentageDone) { +- processThumbnailProgress(percentageDone); ++ cbLock.lock(); ++ try { ++ processThumbnailProgress(percentageDone); ++ } finally { ++ cbLock.unlock(); ++ } + } + + // Provide access to protected superclass method + void thumbnailComplete() { +- processThumbnailComplete(); ++ cbLock.lock(); ++ try { ++ processThumbnailComplete(); ++ } finally { ++ cbLock.unlock(); ++ } + } + + ///////// End of Package-access API +@@ -1610,16 +1657,14 @@ + ////////////// Native methods and callbacks + + /** Sets up static native structures. */ +- private static native void initWriterIDs(Class iosClass, +- Class qTableClass, ++ private static native void initWriterIDs(Class qTableClass, + Class huffClass); + + /** Sets up per-writer native structure and returns a pointer to it. */ + private native long initJPEGImageWriter(); + + /** Sets up native structures for output stream */ +- private native void setDest(long structPointer, +- ImageOutputStream ios); ++ private native void setDest(long structPointer); + + /** + * Returns <code>true</code> if the write was aborted. +@@ -1744,7 +1789,12 @@ + } + raster.setRect(sourceLine); + if ((y > 7) && (y%8 == 0)) { // Every 8 scanlines +- processImageProgress((float) y / (float) sourceHeight * 100.0F); ++ cbLock.lock(); ++ try { ++ processImageProgress((float) y / (float) sourceHeight * 100.0F); ++ } finally { ++ cbLock.unlock(); ++ } + } + } + +@@ -1772,6 +1822,25 @@ + } + } + ++ /** ++ * This method is called from native code in order to write encoder ++ * output to the destination. ++ * ++ * We block any attempt to change the writer state during this ++ * method, in order to prevent a corruption of the native encoder ++ * state. ++ */ ++ private void writeOutputData(byte[] data, int offset, int len) ++ throws IOException ++ { ++ cbLock.lock(); ++ try { ++ ios.write(data, offset, len); ++ } finally { ++ cbLock.unlock(); ++ } ++ } ++ + private Thread theThread = null; + private int theLockCount = 0; + +@@ -1806,4 +1875,34 @@ + theThread = null; + } + } ++ ++ private CallBackLock cbLock = new CallBackLock(); ++ ++ private static class CallBackLock { ++ ++ private State lockState; ++ ++ CallBackLock() { ++ lockState = State.Unlocked; ++ } ++ ++ void check() { ++ if (lockState != State.Unlocked) { ++ throw new IllegalStateException("Access to the writer is not allowed"); ++ } ++ } ++ ++ private void lock() { ++ lockState = State.Locked; ++ } ++ ++ private void unlock() { ++ lockState = State.Unlocked; ++ } ++ ++ private static enum State { ++ Unlocked, ++ Locked ++ } ++ } + } --- jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsRootPaneUI.java 2012-08-10 10:24:01.000000000 -0700 -+++ jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsRootPaneUI.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsRootPaneUI.java 2013-05-05 09:38:36.000000000 -0700 @@ -30,6 +30,8 @@ import java.awt.Event; import java.awt.KeyEventPostProcessor; @@ -54337,7 +40078,7 @@ path[0] = mbar; path[1] = menu; --- jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java 2012-08-10 10:24:12.000000000 -0700 -+++ jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java 2013-05-05 09:38:36.000000000 -0700 @@ -1003,7 +1003,6 @@ /** Write a constant pool reference. */ @@ -54356,7 +40097,7 @@ if (verbose > 2) Utils.log.fine("putRef "+coding+" => "+e); --- jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java 2012-08-10 10:24:13.000000000 -0700 -+++ jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java 2013-05-05 09:38:36.000000000 -0700 @@ -1053,6 +1053,8 @@ /** Index of all CP entries of a given tag and class. */ @@ -54367,7 +40108,7 @@ indexByTagAndClass = new Index[CONSTANT_Limit][]; Index allClasses = getIndexByTag(CONSTANT_Class); --- jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java 2012-08-10 10:24:14.000000000 -0700 -+++ jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java 2013-05-05 09:38:36.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. @@ -54387,7 +40128,7 @@ private long readInputFn(ByteBuffer pbuf, long minlen) throws IOException { if (in == null) return 0; // nothing is readable --- jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java 2012-08-10 10:24:14.000000000 -0700 -+++ jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java 2013-05-05 09:38:36.000000000 -0700 @@ -84,7 +84,7 @@ * @param out an OutputStream * @exception IOException if an error is encountered. @@ -54407,7 +40148,7 @@ TimeZone tz = (props.getBoolean(Utils.PACK_DEFAULT_TIMEZONE)) ? null : TimeZone.getDefault(); --- jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java 2012-08-10 10:24:14.000000000 -0700 -+++ jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java 2013-05-05 09:38:36.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. @@ -54434,7 +40175,7 @@ throw new NullPointerException("null input"); } --- jdk/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java 2012-08-10 10:24:19.000000000 -0700 -+++ jdk/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java 2013-05-05 09:38:36.000000000 -0700 @@ -36,6 +36,7 @@ import javax.management.ObjectName; @@ -54452,7 +40193,7 @@ for(int i=0; i<size; i++) { try { --- jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java 2012-08-10 10:24:19.000000000 -0700 -+++ jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java 2013-05-05 09:38:36.000000000 -0700 @@ -56,6 +56,8 @@ import java.lang.reflect.InvocationTargetException; import javax.management.AttributeNotFoundException; @@ -54476,7 +40217,7 @@ throw new AttributeNotFoundException( "Could not find the getter method for the property " + --- jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java 2012-08-10 10:24:19.000000000 -0700 -+++ jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java 2013-05-05 09:38:36.000000000 -0700 @@ -51,6 +51,7 @@ import javax.management.MBeanRegistrationException; import javax.management.MBeanServer; @@ -54507,11 +40248,19 @@ + } } --- jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java 2012-08-10 10:24:19.000000000 -0700 -+++ jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java 2013-03-09 08:44:48.000000000 -0800 -@@ -32,11 +32,13 @@ ++++ jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java 2013-05-05 09:38:36.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,14 @@ import java.io.ObjectInputStream; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; ++import java.lang.reflect.Modifier; +import java.security.Permission; import java.util.Map; import java.util.logging.Level; @@ -54522,7 +40271,7 @@ import javax.management.NotCompliantMBeanException; import javax.management.ObjectName; import javax.management.OperationsException; -@@ -44,7 +46,7 @@ +@@ -44,7 +47,7 @@ import javax.management.RuntimeErrorException; import javax.management.RuntimeMBeanException; import javax.management.RuntimeOperationsException; @@ -54531,7 +40280,7 @@ import sun.reflect.misc.ReflectUtil; /** -@@ -56,7 +58,6 @@ +@@ -56,7 +59,6 @@ * @since 1.5 */ public class MBeanInstantiator { @@ -54539,7 +40288,7 @@ private final ModifiableClassLoaderRepository clr; // private MetaData meta = null; -@@ -88,6 +89,7 @@ +@@ -88,6 +90,7 @@ "Exception occurred during object instantiation"); } @@ -54547,7 +40296,7 @@ try { if (clr == null) throw new ClassNotFoundException(className); theClass = clr.loadClass(className); -@@ -162,6 +164,7 @@ +@@ -162,6 +165,7 @@ continue; } @@ -54555,27 +40304,47 @@ // Ok we do not have a primitive type ! We need to build // the signature of the method // -@@ -205,6 +208,9 @@ +@@ -205,8 +209,10 @@ */ public Object instantiate(Class<?> theClass) throws ReflectionException, MBeanException { -+ +- Object moi; + + checkMBeanPermission(theClass, null, null, "instantiate"); + - Object moi; - ++ Object moi; -@@ -260,6 +266,9 @@ + // ------------------------------ + // ------------------------------ +@@ -218,6 +224,7 @@ + // Instantiate the new object + try { + ReflectUtil.checkPackageAccess(theClass); ++ ensureClassAccess(theClass); + moi= cons.newInstance(); + } catch (InvocationTargetException e) { + // Wrap the exception. +@@ -260,8 +267,10 @@ public Object instantiate(Class<?> theClass, Object params[], String signature[], ClassLoader loader) throws ReflectionException, MBeanException { -+ +- // Instantiate the new object + + checkMBeanPermission(theClass, null, null, "instantiate"); + - // Instantiate the new object - ++ // Instantiate the new object + // ------------------------------ // ------------------------------ -@@ -407,6 +416,8 @@ + final Class<?>[] tab; +@@ -291,6 +300,7 @@ + } + try { + ReflectUtil.checkPackageAccess(theClass); ++ ensureClassAccess(theClass); + moi = cons.newInstance(params); + } + catch (NoSuchMethodError error) { +@@ -407,6 +417,8 @@ throw new RuntimeOperationsException(new IllegalArgumentException(), "Null className passed in parameter"); } @@ -54584,7 +40353,7 @@ Class<?> theClass; if (loaderName == null) { // Load the class using the agent class loader -@@ -619,13 +630,13 @@ +@@ -619,13 +631,13 @@ **/ static Class<?> loadClass(String className, ClassLoader loader) throws ReflectionException { @@ -54599,7 +40368,7 @@ try { if (loader == null) loader = MBeanInstantiator.class.getClassLoader(); -@@ -676,6 +687,7 @@ +@@ -676,6 +688,7 @@ // We need to load the class through the class // loader of the target object. // @@ -54607,7 +40376,7 @@ tab[i] = Class.forName(signature[i], false, aLoader); } } catch (ClassNotFoundException e) { -@@ -701,7 +713,7 @@ +@@ -701,7 +714,7 @@ private Constructor<?> findConstructor(Class<?> c, Class<?>[] params) { try { @@ -54616,7 +40385,7 @@ } catch (Exception e) { return null; } -@@ -715,4 +727,18 @@ +@@ -715,4 +728,27 @@ char.class, boolean.class}) primitiveClasses.put(c.getName(), c); } @@ -54634,9 +40403,18 @@ + sm.checkPermission(perm); + } + } ++ ++ private static void ensureClassAccess(Class clazz) ++ throws IllegalAccessException ++ { ++ int mod = clazz.getModifiers(); ++ if (!Modifier.isPublic(mod)) { ++ throw new IllegalAccessException("Class is not public and can't be instantiated"); ++ } ++ } } --- jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanSupport.java 2012-08-10 10:24:19.000000000 -0700 -+++ jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanSupport.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanSupport.java 2013-05-05 09:38:36.000000000 -0700 @@ -38,6 +38,7 @@ import javax.management.ObjectName; import javax.management.ReflectionException; @@ -54654,7 +40432,7 @@ MBeanIntrospector<M> introspector = getMBeanIntrospector(); this.perInterface = introspector.getPerInterface(mbeanInterfaceType); --- jdk/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java 2012-08-10 10:24:20.000000000 -0700 -+++ jdk/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java 2013-05-05 09:38:36.000000000 -0700 @@ -68,9 +68,9 @@ this.notifBuffer = notifBuffer; this.connectionId = connectionId; @@ -54669,7 +40447,7 @@ EnvHelp.getNotificationAccessController(env); } --- jdk/src/share/classes/com/sun/jmx/remote/util/EnvHelp.java 2012-08-10 10:24:20.000000000 -0700 -+++ jdk/src/share/classes/com/sun/jmx/remote/util/EnvHelp.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/jmx/remote/util/EnvHelp.java 2013-05-05 09:38:36.000000000 -0700 @@ -665,97 +665,57 @@ * Computes a boolean value from a string value retrieved from a * property in the given map. @@ -54796,7 +40574,7 @@ } --- jdk/src/share/classes/com/sun/jndi/ldap/Connection.java 2012-08-10 10:24:27.000000000 -0700 -+++ jdk/src/share/classes/com/sun/jndi/ldap/Connection.java 2013-01-16 00:07:03.000000000 -0800 ++++ jdk/src/share/classes/com/sun/jndi/ldap/Connection.java 2013-05-05 09:38:36.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. @@ -54818,7 +40596,7 @@ --- jdk/src/share/classes/com/sun/jndi/ldap/LdapClient.java 2012-08-10 10:24:27.000000000 -0700 -+++ jdk/src/share/classes/com/sun/jndi/ldap/LdapClient.java 2013-01-16 00:07:03.000000000 -0800 ++++ jdk/src/share/classes/com/sun/jndi/ldap/LdapClient.java 2013-05-05 09:38:36.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. @@ -54850,8 +40628,143 @@ } // Remove from pool +--- jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java 2012-08-10 10:24:31.000000000 -0700 ++++ jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java 2013-05-05 09:38:36.000000000 -0700 +@@ -56,7 +56,7 @@ + // from simultaneous creation and destruction + // reduces possibility of deadlock, compared to + // synchronizing to the class instance +- private Object traRecLock = new Object(); ++ private final Object traRecLock = new Object(); + + // DEVICE ATTRIBUTES + +@@ -474,7 +474,7 @@ + This is necessary for Receivers retrieved via MidiSystem.getReceiver() + (which opens the device implicitely). + */ +- protected abstract class AbstractReceiver implements MidiDeviceReceiver { ++ abstract class AbstractReceiver implements MidiDeviceReceiver { + private boolean open = true; + + +@@ -483,24 +483,24 @@ + Receiver. Therefore, subclasses should not override this method. + Instead, they should implement implSend(). + */ +- public synchronized void send(MidiMessage message, long timeStamp) { +- if (open) { +- implSend(message, timeStamp); +- } else { ++ @Override ++ public final synchronized void send(final MidiMessage message, ++ final long timeStamp) { ++ if (!open) { + throw new IllegalStateException("Receiver is not open"); + } ++ implSend(message, timeStamp); + } + +- +- protected abstract void implSend(MidiMessage message, long timeStamp); +- ++ abstract void implSend(MidiMessage message, long timeStamp); + + /** Close the Receiver. + * Here, the call to the magic method closeInternal() takes place. + * Therefore, subclasses that override this method must call + * 'super.close()'. + */ +- public void close() { ++ @Override ++ public final void close() { + open = false; + synchronized (AbstractMidiDevice.this.traRecLock) { + AbstractMidiDevice.this.getReceiverList().remove(this); +@@ -508,11 +508,12 @@ + AbstractMidiDevice.this.closeInternal(this); + } + +- public MidiDevice getMidiDevice() { ++ @Override ++ public final MidiDevice getMidiDevice() { + return AbstractMidiDevice.this; + } + +- protected boolean isOpen() { ++ final boolean isOpen() { + return open; + } + +--- jdk/src/share/classes/com/sun/media/sound/FastShortMessage.java 2012-08-10 10:24:31.000000000 -0700 ++++ jdk/src/share/classes/com/sun/media/sound/FastShortMessage.java 2013-05-05 09:38:36.000000000 -0700 +@@ -32,7 +32,7 @@ + * + * @author Florian Bomers + */ +-class FastShortMessage extends ShortMessage { ++final class FastShortMessage extends ShortMessage { + private int packedMsg; + + public FastShortMessage(int packedMsg) throws InvalidMidiDataException { +--- jdk/src/share/classes/com/sun/media/sound/FastSysexMessage.java 2012-08-10 10:24:31.000000000 -0700 ++++ jdk/src/share/classes/com/sun/media/sound/FastSysexMessage.java 2013-05-05 09:38:36.000000000 -0700 +@@ -32,7 +32,7 @@ + * + * @author Florian Bomers + */ +-class FastSysexMessage extends SysexMessage { ++final class FastSysexMessage extends SysexMessage { + + FastSysexMessage(byte[] data) throws InvalidMidiDataException { + super(data); +--- jdk/src/share/classes/com/sun/media/sound/MidiOutDevice.java 2012-08-10 10:24:32.000000000 -0700 ++++ jdk/src/share/classes/com/sun/media/sound/MidiOutDevice.java 2013-05-05 09:38:36.000000000 -0700 +@@ -103,9 +103,9 @@ + + class MidiOutReceiver extends AbstractReceiver { + +- protected void implSend(MidiMessage message, long timeStamp) { +- int length = message.getLength(); +- int status = message.getStatus(); ++ void implSend(final MidiMessage message, final long timeStamp) { ++ final int length = message.getLength(); ++ final int status = message.getStatus(); + if (length <= 3 && status != 0xF0 && status != 0xF7) { + int packedMsg; + if (message instanceof ShortMessage) { +@@ -140,11 +140,15 @@ + } + nSendShortMessage(id, packedMsg, timeStamp); + } else { ++ final byte[] data; + if (message instanceof FastSysexMessage) { +- nSendLongMessage(id, ((FastSysexMessage) message).getReadOnlyMessage(), +- length, timeStamp); ++ data = ((FastSysexMessage) message).getReadOnlyMessage(); + } else { +- nSendLongMessage(id, message.getMessage(), length, timeStamp); ++ data = message.getMessage(); ++ } ++ final int dataLength = Math.min(length, data.length); ++ if (dataLength > 0) { ++ nSendLongMessage(id, data, dataLength, timeStamp); + } + } + } +--- jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java 2012-08-10 10:24:35.000000000 -0700 ++++ jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java 2013-05-05 09:38:36.000000000 -0700 +@@ -1026,7 +1026,7 @@ + + class SequencerReceiver extends AbstractReceiver { + +- protected void implSend(MidiMessage message, long timeStamp) { ++ void implSend(MidiMessage message, long timeStamp) { + if (recording) { + long tickPos = 0; + --- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/Init.java 2012-08-10 10:25:05.000000000 -0700 -+++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/Init.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/Init.java 2013-05-05 09:38:37.000000000 -0700 @@ -154,7 +154,7 @@ } } @@ -54862,7 +40775,7 @@ } String tag=el.getLocalName(); --- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/CanonicalizerBase.java 2012-08-10 10:25:07.000000000 -0700 -+++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/CanonicalizerBase.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/CanonicalizerBase.java 2013-05-05 09:38:36.000000000 -0700 @@ -202,7 +202,7 @@ try { NameSpaceSymbTable ns=new NameSpaceSymbTable(); @@ -54924,7 +40837,7 @@ //Visit them in reverse order. ListIterator it=parents.listIterator(parents.size()); --- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/encryption/XMLCipher.java 2012-08-10 10:25:08.000000000 -0700 -+++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/encryption/XMLCipher.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/encryption/XMLCipher.java 2013-05-05 09:38:36.000000000 -0700 @@ -1445,7 +1445,7 @@ // The de-serialiser returns a fragment whose children we need to // take on. @@ -54935,7 +40848,7 @@ // If this is a content decryption, this may have problems --- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/RetrievalMethodResolver.java 2012-08-10 10:25:22.000000000 -0700 -+++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/RetrievalMethodResolver.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/RetrievalMethodResolver.java 2013-05-05 09:38:36.000000000 -0700 @@ -283,7 +283,7 @@ Element e=null; while (it.hasNext()) { @@ -54964,7 +40877,7 @@ ListIterator it2=parents.listIterator(parents.size()-1); Element ele=null; --- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java 2012-08-10 10:25:34.000000000 -0700 -+++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java 2013-05-05 09:38:37.000000000 -0700 @@ -223,7 +223,7 @@ } while (sibling==null && parentNode!=null) { sibling=parentNode.getNextSibling(); @@ -54975,7 +40888,7 @@ } } --- jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java 2012-08-10 10:25:37.000000000 -0700 -+++ jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java 2013-05-05 09:38:37.000000000 -0700 @@ -146,7 +146,11 @@ */ public RhinoScriptEngine() { @@ -54990,384 +40903,19 @@ Context cx = enterContext(); --- jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties 2012-08-10 10:25:42.000000000 -0700 -+++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties 2013-01-16 00:07:04.000000000 -0800 -@@ -1,189 +1,186 @@ --# This properties file is used to create a PropertyResourceBundle --# It contains Locale specific strings used in Swing --# Currently, the following components need this for support: --# --# ColorChooser --# FileChooser --# OptionPane --# --# When this file is read in, the strings are put into the --# defaults table. This is an implementation detail of the current --# workings of Swing. DO NOT DEPEND ON THIS. --# This may change in future versions of Swing as we improve localization --# support. --# --# MNEMONIC NOTE: --# Many of strings in this file are used by widgets that have a --# mnemonic, for example: --# ColorChooser.rgbNameTextAndMnemonic=R&GB --# --# Indicates that the tab in the ColorChooser for RGB colors will have --# the text 'RGB', further the mnemonic character will be 'g' and that --# a decoration will be provided under the 'G'. This will typically --# look like: RGB --# - --# --# One important thing to remember is that the mnemonic MUST exist in --# the String, if it does not exist you should add text that makes it --# exist. This will typically take the form 'XXXX (M)' where M is the --# character for the mnemonic. --# --# @author Steve Wilson -- --############ FILE CHOOSER STRINGS ############# --FileChooser.fileDescription.textAndMnemonic=Generic File --FileChooser.directoryDescription.textAndMnemonic=Directory --FileChooser.newFolderError.textAndMnemonic=Error creating new folder --FileChooser.newFolderErrorSeparator= : --FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Unable to create folder --FileChooser.newFolderParentDoesntExist.textAndMnemonic=Unable to create the folder.\n\nThe system cannot find the path specified. --FileChooser.renameErrorTitle.textAndMnemonic=Error Renaming File or Folder --FileChooser.renameError.textAndMnemonic=Cannot rename {0} -+# This properties file is used to create a PropertyResourceBundle -+# It contains Locale specific strings used in Swing -+# Currently, the following components need this for support: -+# -+# ColorChooser -+# FileChooser -+# OptionPane -+# -+# When this file is read in, the strings are put into the -+# defaults table. This is an implementation detail of the current -+# workings of Swing. DO NOT DEPEND ON THIS. -+# This may change in future versions of Swing as we improve localization -+# support. -+# -+# MNEMONIC NOTE: -+# Many of strings in this file are used by widgets that have a -+# mnemonic, for example: -+# ColorChooser.rgbNameTextAndMnemonic=R&GB -+# -+# Indicates that the tab in the ColorChooser for RGB colors will have -+# the text 'RGB', further the mnemonic character will be 'g' and that -+# a decoration will be provided under the 'G'. This will typically -+# look like: RGB -+# - -+# -+# One important thing to remember is that the mnemonic MUST exist in -+# the String, if it does not exist you should add text that makes it -+# exist. This will typically take the form 'XXXX (M)' where M is the -+# character for the mnemonic. -+# -+# @author Steve Wilson -+ -+############ FILE CHOOSER STRINGS ############# -+FileChooser.fileDescription.textAndMnemonic=Generic File -+FileChooser.directoryDescription.textAndMnemonic=Directory -+FileChooser.newFolderError.textAndMnemonic=Error creating new folder -+FileChooser.newFolderErrorSeparator= : -+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Unable to create folder -+FileChooser.newFolderParentDoesntExist.textAndMnemonic=Unable to create the folder.\n\nThe system cannot find the path specified. -+FileChooser.renameErrorTitle.textAndMnemonic=Error Renaming File or Folder -+FileChooser.renameError.textAndMnemonic=Cannot rename {0} - FileChooser.renameErrorFileExists.textAndMnemonic=Cannot rename {0}: A file with the name you specified already exists. \ -- Specify a different file name. --FileChooser.acceptAllFileFilter.textAndMnemonic=All Files --FileChooser.cancelButton.textAndMnemonic=Cancel --FileChooser.saveButton.textAndMnemonic=&Save --FileChooser.openButton.textAndMnemonic=&Open --FileChooser.saveDialogTitle.textAndMnemonic=Save --FileChooser.openDialogTitle.textAndMnemonic=Open --FileChooser.updateButton.textAndMnemonic=&Update --FileChooser.helpButton.textAndMnemonic=&Help --FileChooser.directoryOpenButton.textAndMnemonic=&Open -- --# File Size Units --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=New Folder --FileChooser.win32.newFolder.subsequent=New Folder ({0}) --FileChooser.other.newFolder=NewFolder --FileChooser.other.newFolder.subsequent=NewFolder.{0} -- -- --## file chooser tooltips ### --FileChooser.cancelButtonToolTip.textAndMnemonic=Abort file chooser dialog --FileChooser.saveButtonToolTip.textAndMnemonic=Save selected file --FileChooser.openButtonToolTip.textAndMnemonic=Open selected file --FileChooser.updateButtonToolTip.textAndMnemonic=Update directory listing --FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser help --FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Open selected directory -- ++++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties 2013-05-05 09:38:37.000000000 -0700 +@@ -71,9 +71,6 @@ + FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser help + FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Open selected directory + -FileChooser.filesListAccessibleName=Files List -FileChooser.filesDetailsAccessibleName=Files Details - --############ COLOR CHOOSER STRINGS ############# --ColorChooser.preview.textAndMnemonic=Preview --ColorChooser.ok.textAndMnemonic=OK --ColorChooser.cancel.textAndMnemonic=Cancel --ColorChooser.reset.textAndMnemonic=&Reset --ColorChooser.sample.textAndMnemonic=Sample Text Sample Text --ColorChooser.swatches.textAndMnemonic=&Swatches --ColorChooser.swatchesRecent.textAndMnemonic=Recent: --ColorChooser.hsv.textAndMnemonic=&HSV --ColorChooser.hsvHue.textAndMnemonic=Hue --ColorChooser.hsvSaturation.textAndMnemonic=Saturation --ColorChooser.hsvValue.textAndMnemonic=Value --ColorChooser.hsvTransparency.textAndMnemonic=Transparency --ColorChooser.hsl.textAndMnemonic=HS&L --ColorChooser.hslHue.textAndMnemonic=Hue --ColorChooser.hslSaturation.textAndMnemonic=Saturation --ColorChooser.hslLightness.textAndMnemonic=Lightness --ColorChooser.hslTransparency.textAndMnemonic=Transparency --ColorChooser.rgb.textAndMnemonic=R&GB --ColorChooser.rgbRed.textAndMnemonic=Re&d --ColorChooser.rgbGreen.textAndMnemonic=Gree&n --ColorChooser.rgbBlue.textAndMnemonic=&Blue --ColorChooser.rgbAlpha.textAndMnemonic=Alpha --ColorChooser.rgbHexCode.textAndMnemonic=&Color Code --ColorChooser.cmyk.textAndMnemonic=C&MYK --ColorChooser.cmykCyan.textAndMnemonic=Cyan --ColorChooser.cmykMagenta.textAndMnemonic=Magenta --ColorChooser.cmykYellow.textAndMnemonic=Yellow --ColorChooser.cmykBlack.textAndMnemonic=Black --ColorChooser.cmykAlpha.textAndMnemonic=Alpha -- --############ OPTION PANE STRINGS ############# --# We only define mnemonics for YES/NO, but for completeness you can --# define mnemonics for any of the buttons. --OptionPane.yesButton.textAndMnemonic=&Yes --OptionPane.noButton.textAndMnemonic=&No --OptionPane.okButton.textAndMnemonic=OK --#OptionPane.okButtonMnemonic=0 --OptionPane.cancelButton.textAndMnemonic=Cancel --#OptionPane.cancelButtonMnemonic=0 --OptionPane.title.textAndMnemonic=Select an 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.inputDialog.titleAndMnemonic=Input --# 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.messageDialog.titleAndMnemonic=Message -- --############ Printing Dialog Strings ############ --PrintingDialog.titleProgress.textAndMnemonic=Printing --PrintingDialog.titleAborting.textAndMnemonic=Printing (Aborting) -- --PrintingDialog.contentInitial.textAndMnemonic=Printing in progress... -- --# The following string will be formatted by a MessageFormat --# and {0} will be replaced by page number being printed --PrintingDialog.contentProgress.textAndMnemonic=Printed page {0}... -- --PrintingDialog.contentAborting.textAndMnemonic=Printing aborting... -- --PrintingDialog.abortButton.textAndMnemonic=&Abort --PrintingDialog.abortButtonToolTip.textAndMnemonic=Abort Printing -- --############ Internal Frame Strings ############ --InternalFrame.iconButtonToolTip=Minimize --InternalFrame.maxButtonToolTip=Maximize --InternalFrame.restoreButtonToolTip=Restore --InternalFrame.closeButtonToolTip=Close -- --############ Internal Frame Title Pane Strings ############ --InternalFrameTitlePane.restoreButton.textAndMnemonic=Restore --InternalFrameTitlePane.moveButton.textAndMnemonic=Move --InternalFrameTitlePane.sizeButton.textAndMnemonic=Size --InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimize --InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximize --InternalFrameTitlePane.closeButton.textAndMnemonic=Close -- --############ Text strings ############# --# Used for html forms --FormView.submitButton.textAndMnemonic=Submit Query --FormView.resetButton.textAndMnemonic=Reset --FormView.browseFileButton.textAndMnemonic=Browse... -- --############ Abstract Document Strings ############ --AbstractDocument.styleChange.textAndMnemonic=style change --AbstractDocument.addition.textAndMnemonic=addition --AbstractDocument.deletion.textAndMnemonic=deletion --AbstractDocument.undo.textAndMnemonic=Undo --AbstractDocument.redo.textAndMnemonic=Redo -- --############ Abstract Button Strings ############ --AbstractButton.click.textAndMnemonic=click -- --############ Abstract Undoable Edit Strings ############ --AbstractUndoableEdit.undo.textAndMnemonic=Undo --AbstractUndoableEdit.redo.textAndMnemonic=Redo -- --############ Combo Box Strings ############ --ComboBox.togglePopup.textAndMnemonic=togglePopup -- --############ Progress Monitor Strings ############ --ProgressMonitor.progress.textAndMnemonic=Progress... -- --############ Split Pane Strings ############ --SplitPane.leftButton.textAndMnemonic=left button --SplitPane.rightButton.textAndMnemonic=right button --# Used for Isindex --IsindexView.prompt=This is a searchable index. Enter search keywords: -- --############ InternalFrameTitlePane Strings ############ --InternalFrameTitlePane.iconifyButtonAccessibleName=Iconify --InternalFrameTitlePane.maximizeButtonAccessibleName=Maximize --InternalFrameTitlePane.closeButtonAccessibleName=Close -+ Specify a different file name. -+FileChooser.acceptAllFileFilter.textAndMnemonic=All Files -+FileChooser.cancelButton.textAndMnemonic=Cancel -+FileChooser.saveButton.textAndMnemonic=&Save -+FileChooser.openButton.textAndMnemonic=&Open -+FileChooser.saveDialogTitle.textAndMnemonic=Save -+FileChooser.openDialogTitle.textAndMnemonic=Open -+FileChooser.updateButton.textAndMnemonic=&Update -+FileChooser.helpButton.textAndMnemonic=&Help -+FileChooser.directoryOpenButton.textAndMnemonic=&Open -+ -+# File Size Units -+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=New Folder -+FileChooser.win32.newFolder.subsequent=New Folder ({0}) -+FileChooser.other.newFolder=NewFolder -+FileChooser.other.newFolder.subsequent=NewFolder.{0} -+ -+ -+## file chooser tooltips ### -+FileChooser.cancelButtonToolTip.textAndMnemonic=Abort file chooser dialog -+FileChooser.saveButtonToolTip.textAndMnemonic=Save selected file -+FileChooser.openButtonToolTip.textAndMnemonic=Open selected file -+FileChooser.updateButtonToolTip.textAndMnemonic=Update directory listing -+FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser help -+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Open selected directory -+ -+############ COLOR CHOOSER STRINGS ############# -+ColorChooser.preview.textAndMnemonic=Preview -+ColorChooser.ok.textAndMnemonic=OK -+ColorChooser.cancel.textAndMnemonic=Cancel -+ColorChooser.reset.textAndMnemonic=&Reset -+ColorChooser.sample.textAndMnemonic=Sample Text Sample Text -+ColorChooser.swatches.textAndMnemonic=&Swatches -+ColorChooser.swatchesRecent.textAndMnemonic=Recent: -+ColorChooser.hsv.textAndMnemonic=&HSV -+ColorChooser.hsvHue.textAndMnemonic=Hue -+ColorChooser.hsvSaturation.textAndMnemonic=Saturation -+ColorChooser.hsvValue.textAndMnemonic=Value -+ColorChooser.hsvTransparency.textAndMnemonic=Transparency -+ColorChooser.hsl.textAndMnemonic=HS&L -+ColorChooser.hslHue.textAndMnemonic=Hue -+ColorChooser.hslSaturation.textAndMnemonic=Saturation -+ColorChooser.hslLightness.textAndMnemonic=Lightness -+ColorChooser.hslTransparency.textAndMnemonic=Transparency -+ColorChooser.rgb.textAndMnemonic=R&GB -+ColorChooser.rgbRed.textAndMnemonic=Re&d -+ColorChooser.rgbGreen.textAndMnemonic=Gree&n -+ColorChooser.rgbBlue.textAndMnemonic=&Blue -+ColorChooser.rgbAlpha.textAndMnemonic=Alpha -+ColorChooser.rgbHexCode.textAndMnemonic=&Color Code -+ColorChooser.cmyk.textAndMnemonic=C&MYK -+ColorChooser.cmykCyan.textAndMnemonic=Cyan -+ColorChooser.cmykMagenta.textAndMnemonic=Magenta -+ColorChooser.cmykYellow.textAndMnemonic=Yellow -+ColorChooser.cmykBlack.textAndMnemonic=Black -+ColorChooser.cmykAlpha.textAndMnemonic=Alpha -+ -+############ OPTION PANE STRINGS ############# -+# We only define mnemonics for YES/NO, but for completeness you can -+# define mnemonics for any of the buttons. -+OptionPane.yesButton.textAndMnemonic=&Yes -+OptionPane.noButton.textAndMnemonic=&No -+OptionPane.okButton.textAndMnemonic=OK -+#OptionPane.okButtonMnemonic=0 -+OptionPane.cancelButton.textAndMnemonic=Cancel -+#OptionPane.cancelButtonMnemonic=0 -+OptionPane.title.textAndMnemonic=Select an 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.inputDialog.titleAndMnemonic=Input -+# 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.messageDialog.titleAndMnemonic=Message -+ -+############ Printing Dialog Strings ############ -+PrintingDialog.titleProgress.textAndMnemonic=Printing -+PrintingDialog.titleAborting.textAndMnemonic=Printing (Aborting) -+ -+PrintingDialog.contentInitial.textAndMnemonic=Printing in progress... -+ -+# The following string will be formatted by a MessageFormat -+# and {0} will be replaced by page number being printed -+PrintingDialog.contentProgress.textAndMnemonic=Printed page {0}... -+ -+PrintingDialog.contentAborting.textAndMnemonic=Printing aborting... -+ -+PrintingDialog.abortButton.textAndMnemonic=&Abort -+PrintingDialog.abortButtonToolTip.textAndMnemonic=Abort Printing -+ -+############ Internal Frame Strings ############ -+InternalFrame.iconButtonToolTip=Minimize -+InternalFrame.maxButtonToolTip=Maximize -+InternalFrame.restoreButtonToolTip=Restore -+InternalFrame.closeButtonToolTip=Close -+ -+############ Internal Frame Title Pane Strings ############ -+InternalFrameTitlePane.restoreButton.textAndMnemonic=Restore -+InternalFrameTitlePane.moveButton.textAndMnemonic=Move -+InternalFrameTitlePane.sizeButton.textAndMnemonic=Size -+InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimize -+InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximize -+InternalFrameTitlePane.closeButton.textAndMnemonic=Close -+ -+############ Text strings ############# -+# Used for html forms -+FormView.submitButton.textAndMnemonic=Submit Query -+FormView.resetButton.textAndMnemonic=Reset -+FormView.browseFileButton.textAndMnemonic=Browse... -+ -+############ Abstract Document Strings ############ -+AbstractDocument.styleChange.textAndMnemonic=style change -+AbstractDocument.addition.textAndMnemonic=addition -+AbstractDocument.deletion.textAndMnemonic=deletion -+AbstractDocument.undo.textAndMnemonic=Undo -+AbstractDocument.redo.textAndMnemonic=Redo -+ -+############ Abstract Button Strings ############ -+AbstractButton.click.textAndMnemonic=click -+ -+############ Abstract Undoable Edit Strings ############ -+AbstractUndoableEdit.undo.textAndMnemonic=Undo -+AbstractUndoableEdit.redo.textAndMnemonic=Redo -+ -+############ Combo Box Strings ############ -+ComboBox.togglePopup.textAndMnemonic=togglePopup -+ -+############ Progress Monitor Strings ############ -+ProgressMonitor.progress.textAndMnemonic=Progress... -+ -+############ Split Pane Strings ############ -+SplitPane.leftButton.textAndMnemonic=left button -+SplitPane.rightButton.textAndMnemonic=right button -+# Used for Isindex -+IsindexView.prompt=This is a searchable index. Enter search keywords: -+ -+############ InternalFrameTitlePane Strings ############ -+InternalFrameTitlePane.iconifyButtonAccessibleName=Iconify -+InternalFrameTitlePane.maximizeButtonAccessibleName=Maximize -+InternalFrameTitlePane.closeButtonAccessibleName=Close + ############ COLOR CHOOSER STRINGS ############# + ColorChooser.preview.textAndMnemonic=Preview + ColorChooser.ok.textAndMnemonic=OK --- jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties 2012-08-10 10:25:42.000000000 -0700 -+++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties 2013-01-16 00:07:04.000000000 -0800 ++++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties 2013-05-05 09:38:37.000000000 -0700 @@ -70,9 +70,6 @@ FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser-Hilfe FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Ausgew\u00E4hltes Verzeichnis \u00F6ffnen @@ -55379,7 +40927,7 @@ ColorChooser.preview.textAndMnemonic=Vorschau ColorChooser.ok.textAndMnemonic=OK --- jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties 2012-08-10 10:25:42.000000000 -0700 -+++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties 2013-01-16 00:07:04.000000000 -0800 ++++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties 2013-05-05 09:38:37.000000000 -0700 @@ -70,9 +70,6 @@ FileChooser.helpButtonToolTip.textAndMnemonic=Ayuda del Selector de Archivos FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Abrir directorio seleccionado @@ -55391,7 +40939,7 @@ ColorChooser.preview.textAndMnemonic=Vista Previa ColorChooser.ok.textAndMnemonic=Aceptar --- jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties 2012-08-10 10:25:42.000000000 -0700 -+++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties 2013-01-16 00:07:04.000000000 -0800 ++++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties 2013-05-05 09:38:37.000000000 -0700 @@ -70,9 +70,6 @@ FileChooser.helpButtonToolTip.textAndMnemonic=Aide du s\u00E9lecteur de fichiers FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Ouvre le r\u00E9pertoire s\u00E9lectionn\u00E9 @@ -55403,7 +40951,7 @@ ColorChooser.preview.textAndMnemonic=Aper\u00E7u ColorChooser.ok.textAndMnemonic=OK --- jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties 2012-08-10 10:25:42.000000000 -0700 -+++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties 2013-01-16 00:07:04.000000000 -0800 ++++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties 2013-05-05 09:38:37.000000000 -0700 @@ -70,9 +70,6 @@ FileChooser.helpButtonToolTip.textAndMnemonic=Guida FileChooser FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Apre la directory selezionata @@ -55415,7 +40963,7 @@ ColorChooser.preview.textAndMnemonic=Anteprima ColorChooser.ok.textAndMnemonic=OK --- jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties 2012-08-10 10:25:42.000000000 -0700 -+++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties 2013-01-16 00:07:04.000000000 -0800 ++++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties 2013-05-05 09:38:37.000000000 -0700 @@ -70,9 +70,6 @@ FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser\u306E\u30D8\u30EB\u30D7\u3067\u3059 FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u9078\u629E\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u958B\u304D\u307E\u3059 @@ -55427,7 +40975,7 @@ ColorChooser.preview.textAndMnemonic=\u30D7\u30EC\u30D3\u30E5\u30FC ColorChooser.ok.textAndMnemonic=OK --- jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties 2012-08-10 10:25:42.000000000 -0700 -+++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties 2013-01-16 00:07:04.000000000 -0800 ++++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties 2013-05-05 09:38:37.000000000 -0700 @@ -70,9 +70,6 @@ FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser \uB3C4\uC6C0\uB9D0 FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\uC120\uD0DD\uB41C \uB514\uB809\uD1A0\uB9AC \uC5F4\uAE30 @@ -55439,7 +40987,7 @@ ColorChooser.preview.textAndMnemonic=\uBBF8\uB9AC\uBCF4\uAE30 ColorChooser.ok.textAndMnemonic=\uD655\uC778 --- jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties 2012-08-10 10:25:42.000000000 -0700 -+++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties 2013-01-16 00:07:04.000000000 -0800 ++++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties 2013-05-05 09:38:37.000000000 -0700 @@ -70,9 +70,6 @@ FileChooser.helpButtonToolTip.textAndMnemonic=Ajuda do FileChooser FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Abrir diret\u00F3rio selecionado @@ -55451,7 +40999,7 @@ ColorChooser.preview.textAndMnemonic=Visualizar ColorChooser.ok.textAndMnemonic=OK --- jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties 2012-08-10 10:25:42.000000000 -0700 -+++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties 2013-01-16 00:07:04.000000000 -0800 ++++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties 2013-05-05 09:38:37.000000000 -0700 @@ -70,9 +70,6 @@ FileChooser.helpButtonToolTip.textAndMnemonic=Hj\u00E4lp - Filv\u00E4ljare FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u00D6ppna vald katalog @@ -55463,7 +41011,7 @@ ColorChooser.preview.textAndMnemonic=Granska ColorChooser.ok.textAndMnemonic=OK --- jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties 2012-08-10 10:25:42.000000000 -0700 -+++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties 2013-01-16 00:07:04.000000000 -0800 ++++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties 2013-05-05 09:38:37.000000000 -0700 @@ -70,9 +70,6 @@ FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser \u5E2E\u52A9 FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u6253\u5F00\u9009\u62E9\u7684\u76EE\u5F55 @@ -55475,7 +41023,7 @@ ColorChooser.preview.textAndMnemonic=\u9884\u89C8 ColorChooser.ok.textAndMnemonic=\u786E\u5B9A --- jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties 2012-08-10 10:25:42.000000000 -0700 -+++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties 2013-01-16 00:07:04.000000000 -0800 ++++ jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties 2013-05-05 09:38:37.000000000 -0700 @@ -70,9 +70,6 @@ FileChooser.helpButtonToolTip.textAndMnemonic=\u300C\u6A94\u6848\u9078\u64C7\u5668\u300D\u8AAA\u660E FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u958B\u555F\u9078\u53D6\u7684\u76EE\u9304 @@ -55487,7 +41035,7 @@ ColorChooser.preview.textAndMnemonic=\u9810\u89BD ColorChooser.ok.textAndMnemonic=\u78BA\u5B9A --- jdk/src/share/classes/java/awt/AWTEvent.java 2012-08-10 10:25:54.000000000 -0700 -+++ jdk/src/share/classes/java/awt/AWTEvent.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/AWTEvent.java 2013-05-05 09:38:32.000000000 -0700 @@ -35,8 +35,6 @@ import java.security.AccessControlContext; @@ -55526,7 +41074,7 @@ } --- jdk/src/share/classes/java/awt/CheckboxMenuItem.java 2012-08-10 10:25:54.000000000 -0700 -+++ jdk/src/share/classes/java/awt/CheckboxMenuItem.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/CheckboxMenuItem.java 2013-05-05 09:38:32.000000000 -0700 @@ -31,6 +31,7 @@ import java.io.ObjectInputStream; import java.io.IOException; @@ -55550,7 +41098,7 @@ /** --- jdk/src/share/classes/java/awt/Cursor.java 2012-08-10 10:25:55.000000000 -0700 -+++ jdk/src/share/classes/java/awt/Cursor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/Cursor.java 2013-05-05 09:38:32.000000000 -0700 @@ -24,10 +24,6 @@ */ package java.awt; @@ -55593,7 +41141,7 @@ /** --- jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java 2012-08-10 10:25:55.000000000 -0700 -+++ jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java 2013-05-05 09:38:32.000000000 -0700 @@ -39,6 +39,7 @@ import sun.awt.AppContext; @@ -55619,7 +41167,7 @@ long after; Component untilFocused; --- jdk/src/share/classes/java/awt/Dialog.java 2012-08-10 10:25:55.000000000 -0700 -+++ jdk/src/share/classes/java/awt/Dialog.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/awt/Dialog.java 2013-05-05 09:38:32.000000000 -0700 @@ -39,6 +39,7 @@ import sun.awt.util.IdentityArrayList; import sun.awt.util.IdentityLinkedList; @@ -55734,7 +41282,7 @@ /* --- jdk/src/share/classes/java/awt/EventDispatchThread.java 2012-08-10 10:25:55.000000000 -0700 -+++ jdk/src/share/classes/java/awt/EventDispatchThread.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/EventDispatchThread.java 2013-05-05 09:38:32.000000000 -0700 @@ -67,8 +67,7 @@ private static final PlatformLogger eventLog = PlatformLogger.getLogger("java.awt.event.EventDispatchThread"); @@ -55798,7 +41346,7 @@ catch (Throwable e) { processException(e); --- jdk/src/share/classes/java/awt/EventQueue.java 2012-08-10 10:25:55.000000000 -0700 -+++ jdk/src/share/classes/java/awt/EventQueue.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/awt/EventQueue.java 2013-05-05 09:38:32.000000000 -0700 @@ -52,7 +52,6 @@ import java.util.concurrent.atomic.AtomicInteger; @@ -55858,7 +41406,7 @@ synchronized (lock) { Toolkit.getEventQueue().postEvent(event); --- jdk/src/share/classes/java/awt/KeyboardFocusManager.java 2012-08-10 10:25:56.000000000 -0700 -+++ jdk/src/share/classes/java/awt/KeyboardFocusManager.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/KeyboardFocusManager.java 2013-05-05 09:38:32.000000000 -0700 @@ -56,7 +56,6 @@ import sun.util.logging.PlatformLogger; @@ -55878,7 +41426,7 @@ ); } --- jdk/src/share/classes/java/awt/Menu.java 2012-08-10 10:25:56.000000000 -0700 -+++ jdk/src/share/classes/java/awt/Menu.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/Menu.java 2013-05-05 09:38:32.000000000 -0700 @@ -31,6 +31,7 @@ import java.awt.peer.MenuPeer; import java.awt.event.KeyEvent; @@ -55902,7 +41450,7 @@ /** --- jdk/src/share/classes/java/awt/MenuBar.java 2012-08-10 10:25:56.000000000 -0700 -+++ jdk/src/share/classes/java/awt/MenuBar.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/MenuBar.java 2013-05-05 09:38:32.000000000 -0700 @@ -28,6 +28,7 @@ import java.io.ObjectInputStream; import java.util.Vector; @@ -55929,7 +41477,7 @@ /** --- jdk/src/share/classes/java/awt/MenuComponent.java 2012-08-10 10:25:56.000000000 -0700 -+++ jdk/src/share/classes/java/awt/MenuComponent.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/MenuComponent.java 2013-05-05 09:38:32.000000000 -0700 @@ -29,7 +29,6 @@ import java.io.IOException; import java.io.ObjectInputStream; @@ -55949,7 +41497,7 @@ } --- jdk/src/share/classes/java/awt/MenuItem.java 2012-08-10 10:25:56.000000000 -0700 -+++ jdk/src/share/classes/java/awt/MenuItem.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/MenuItem.java 2013-05-05 09:38:32.000000000 -0700 @@ -31,7 +31,7 @@ import java.io.ObjectInputStream; import java.io.IOException; @@ -55990,7 +41538,7 @@ /** --- jdk/src/share/classes/java/awt/ScrollPaneAdjustable.java 2012-08-10 10:25:57.000000000 -0700 -+++ jdk/src/share/classes/java/awt/ScrollPaneAdjustable.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/ScrollPaneAdjustable.java 2013-05-05 09:38:32.000000000 -0700 @@ -24,6 +24,8 @@ */ package java.awt; @@ -56015,7 +41563,7 @@ /** --- jdk/src/share/classes/java/awt/SequencedEvent.java 2012-08-10 10:25:57.000000000 -0700 -+++ jdk/src/share/classes/java/awt/SequencedEvent.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/SequencedEvent.java 2013-05-05 09:38:32.000000000 -0700 @@ -26,6 +26,7 @@ package java.awt; @@ -56043,7 +41591,7 @@ * Constructs a new SequencedEvent which will dispatch the specified * nested event. --- jdk/src/share/classes/java/awt/SystemTray.java 2012-08-10 10:25:57.000000000 -0700 -+++ jdk/src/share/classes/java/awt/SystemTray.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/SystemTray.java 2013-05-05 09:38:32.000000000 -0700 @@ -33,6 +33,7 @@ import sun.awt.SunToolkit; import sun.awt.HeadlessToolkit; @@ -56072,7 +41620,7 @@ * Private <code>SystemTray</code> constructor. * --- jdk/src/share/classes/java/awt/TextComponent.java 2012-08-10 10:25:57.000000000 -0700 -+++ jdk/src/share/classes/java/awt/TextComponent.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/awt/TextComponent.java 2013-05-05 09:38:32.000000000 -0700 @@ -107,12 +107,6 @@ // the background color of non-editable TextComponents. boolean backgroundSetByClientCode = false; @@ -56144,7 +41692,7 @@ --- jdk/src/share/classes/java/awt/TrayIcon.java 2012-08-10 10:25:58.000000000 -0700 -+++ jdk/src/share/classes/java/awt/TrayIcon.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/TrayIcon.java 2013-05-05 09:38:32.000000000 -0700 @@ -25,19 +25,11 @@ package java.awt; @@ -56184,7 +41732,14 @@ private TrayIcon() --- jdk/src/share/classes/java/awt/Window.java 2012-08-10 10:25:58.000000000 -0700 -+++ jdk/src/share/classes/java/awt/Window.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/awt/Window.java 2013-05-05 09:38:32.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it @@ -1206,7 +1206,7 @@ } else { @@ -56194,8 +41749,17 @@ } catch (InterruptedException e) { System.err.println("Disposal was interrupted:"); +@@ -2234,7 +2234,7 @@ + WindowPeer peer = (WindowPeer)this.peer; + synchronized(getTreeLock()) { + if (peer != null) { +- peer.setAlwaysOnTop(alwaysOnTop); ++ peer.updateAlwaysOnTopState(); + } + } + } --- jdk/src/share/classes/java/awt/event/KeyEvent.java 2012-08-10 10:26:01.000000000 -0700 -+++ jdk/src/share/classes/java/awt/event/KeyEvent.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/awt/event/KeyEvent.java 2013-05-05 09:38:32.000000000 -0700 @@ -25,12 +25,12 @@ package java.awt.event; @@ -56234,8 +41798,38 @@ } /** +--- jdk/src/share/classes/java/awt/peer/WindowPeer.java 2012-08-10 10:26:07.000000000 -0700 ++++ jdk/src/share/classes/java/awt/peer/WindowPeer.java 2013-05-05 09:38:32.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -55,15 +55,14 @@ + void toBack(); + + /** +- * Sets if the window should always stay on top of all other windows or +- * not. +- * +- * @param alwaysOnTop if the window should always stay on top of all other +- * windows or not ++ * Updates the window's always-on-top state. ++ * Sets if the window should always stay ++ * on top of all other windows or not. + * ++ * @see Window#getAlwaysOnTop() + * @see Window#setAlwaysOnTop(boolean) + */ +- void setAlwaysOnTop(boolean alwaysOnTop); ++ void updateAlwaysOnTopState(); + + /** + * Updates the window's focusable state. --- jdk/src/share/classes/java/beans/IndexedPropertyDescriptor.java 2012-08-10 10:26:08.000000000 -0700 -+++ jdk/src/share/classes/java/beans/IndexedPropertyDescriptor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/beans/IndexedPropertyDescriptor.java 2013-05-05 09:38:32.000000000 -0700 @@ -181,21 +181,20 @@ // the Indexed readMethod was explicitly set to null. return null; @@ -56279,7 +41873,7 @@ * Returns a hash code value for the object. * See {@link java.lang.Object#hashCode} for a complete description. --- jdk/src/share/classes/java/beans/Introspector.java 2012-08-10 10:26:08.000000000 -0700 -+++ jdk/src/share/classes/java/beans/Introspector.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/beans/Introspector.java 2013-05-05 09:38:32.000000000 -0700 @@ -25,7 +25,6 @@ package java.beans; @@ -56535,7 +42129,7 @@ + } } --- jdk/src/share/classes/java/beans/PropertyDescriptor.java 2012-08-10 10:26:08.000000000 -0700 -+++ jdk/src/share/classes/java/beans/PropertyDescriptor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/beans/PropertyDescriptor.java 2013-05-05 09:38:32.000000000 -0700 @@ -210,13 +210,12 @@ // The read method was explicitly set to null. return null; @@ -56579,8 +42173,227 @@ /** * Returns the property type that corresponds to the read and write method. * The type precedence is given to the readMethod. +--- jdk/src/share/classes/java/beans/ThreadGroupContext.java 2012-08-10 10:26:08.000000000 -0700 ++++ jdk/src/share/classes/java/beans/ThreadGroupContext.java 2013-05-05 09:38:32.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,6 @@ + import com.sun.beans.finder.PropertyEditorFinder; + + import java.awt.GraphicsEnvironment; +-import java.util.HashMap; + import java.util.Map; + import java.util.WeakHashMap; + +@@ -42,7 +41,7 @@ + */ + final class ThreadGroupContext { + +- private static final Map<ThreadGroup, ThreadGroupContext> contexts = new WeakHashMap<>(); ++ private static final WeakIdentityMap<ThreadGroupContext> contexts = new WeakIdentityMap<>(); + + /** + * Returns the appropriate {@code AppContext} for the caller, +@@ -69,6 +68,8 @@ + private BeanInfoFinder beanInfoFinder; + private PropertyEditorFinder propertyEditorFinder; + ++ private ThreadGroupContext() { ++ } + + boolean isDesignTime() { + return this.isDesignTime; +--- jdk/src/share/classes/java/beans/WeakIdentityMap.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/classes/java/beans/WeakIdentityMap.java 2013-05-05 09:38:32.000000000 -0700 +@@ -0,0 +1,181 @@ ++/* ++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * 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.beans; ++ ++import java.lang.ref.ReferenceQueue; ++import java.lang.ref.WeakReference; ++ ++/** ++ * Hash table based mapping, which uses weak references to store keys ++ * and reference-equality in place of object-equality to compare them. ++ * An entry will automatically be removed when its key is no longer ++ * in ordinary use. Both null values and the null key are supported. ++ * ++ * @see java.util.IdentityHashMap ++ * @see java.util.WeakHashMap ++ */ ++final class WeakIdentityMap<T> { ++ ++ private static final int MAXIMUM_CAPACITY = 1 << 30; // it MUST be a power of two ++ private static final Object NULL = new Object(); // special object for null key ++ ++ private final ReferenceQueue<Object> queue = new ReferenceQueue<Object>(); ++ ++ private Entry<T>[] table = newTable(1<<3); // table's length MUST be a power of two ++ private int threshold = 6; // the next size value at which to resize ++ private int size = 0; // the number of key-value mappings ++ ++ public T get(Object key) { ++ removeStaleEntries(); ++ if (key == null) { ++ key = NULL; ++ } ++ int hash = key.hashCode(); ++ int index = getIndex(this.table, hash); ++ for (Entry<T> entry = this.table[index]; entry != null; entry = entry.next) { ++ if (entry.isMatched(key, hash)) { ++ return entry.value; ++ } ++ } ++ return null; ++ } ++ ++ public T put(Object key, T value) { ++ removeStaleEntries(); ++ if (key == null) { ++ key = NULL; ++ } ++ int hash = key.hashCode(); ++ int index = getIndex(this.table, hash); ++ for (Entry<T> entry = this.table[index]; entry != null; entry = entry.next) { ++ if (entry.isMatched(key, hash)) { ++ T oldValue = entry.value; ++ entry.value = value; ++ return oldValue; ++ } ++ } ++ this.table[index] = new Entry<T>(key, hash, value, this.queue, this.table[index]); ++ if (++this.size >= this.threshold) { ++ if (this.table.length == MAXIMUM_CAPACITY) { ++ this.threshold = Integer.MAX_VALUE; ++ } ++ else { ++ removeStaleEntries(); ++ Entry<T>[] table = newTable(this.table.length * 2); ++ transfer(this.table, table); ++ ++ // If ignoring null elements and processing ref queue caused massive ++ // shrinkage, then restore old table. This should be rare, but avoids ++ // unbounded expansion of garbage-filled tables. ++ if (this.size >= this.threshold / 2) { ++ this.table = table; ++ this.threshold *= 2; ++ } ++ else { ++ transfer(table, this.table); ++ } ++ } ++ } ++ return null; ++ } ++ ++ private void removeStaleEntries() { ++ for (Object ref = this.queue.poll(); ref != null; ref = this.queue.poll()) { ++ @SuppressWarnings("unchecked") ++ Entry<T> entry = (Entry<T>) ref; ++ int index = getIndex(this.table, entry.hash); ++ ++ Entry<T> prev = this.table[index]; ++ Entry<T> current = prev; ++ while (current != null) { ++ Entry<T> next = current.next; ++ if (current == entry) { ++ if (prev == entry) { ++ this.table[index] = next; ++ } ++ else { ++ prev.next = next; ++ } ++ entry.value = null; // Help GC ++ entry.next = null; // Help GC ++ this.size--; ++ break; ++ } ++ prev = current; ++ current = next; ++ } ++ } ++ } ++ ++ private void transfer(Entry<T>[] oldTable, Entry<T>[] newTable) { ++ for (int i = 0; i < oldTable.length; i++) { ++ Entry<T> entry = oldTable[i]; ++ oldTable[i] = null; ++ while (entry != null) { ++ Entry<T> next = entry.next; ++ Object key = entry.get(); ++ if (key == null) { ++ entry.value = null; // Help GC ++ entry.next = null; // Help GC ++ this.size--; ++ } ++ else { ++ int index = getIndex(newTable, entry.hash); ++ entry.next = newTable[index]; ++ newTable[index] = entry; ++ } ++ entry = next; ++ } ++ } ++ } ++ ++ ++ @SuppressWarnings("unchecked") ++ private Entry<T>[] newTable(int length) { ++ return (Entry<T>[]) new Entry<?>[length]; ++ } ++ ++ private static int getIndex(Entry<?>[] table, int hash) { ++ return hash & (table.length - 1); ++ } ++ ++ private static class Entry<T> extends WeakReference<Object> { ++ private final int hash; ++ private T value; ++ private Entry<T> next; ++ ++ Entry(Object key, int hash, T value, ReferenceQueue<Object> queue, Entry<T> next) { ++ super(key, queue); ++ this.hash = hash; ++ this.value = value; ++ this.next = next; ++ } ++ ++ boolean isMatched(Object key, int hash) { ++ return (this.hash == hash) && (key == get()); ++ } ++ } ++} --- jdk/src/share/classes/java/beans/XMLDecoder.java 2012-08-10 10:26:09.000000000 -0700 -+++ jdk/src/share/classes/java/beans/XMLDecoder.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/beans/XMLDecoder.java 2013-05-05 09:38:32.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. @@ -56624,7 +42437,7 @@ } return true; --- jdk/src/share/classes/java/beans/XMLEncoder.java 2012-08-10 10:26:09.000000000 -0700 -+++ jdk/src/share/classes/java/beans/XMLEncoder.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/beans/XMLEncoder.java 2013-05-05 09:38:32.000000000 -0700 @@ -631,7 +631,12 @@ } @@ -56660,7 +42473,7 @@ outputValue(value, outer, isArgument); } --- jdk/src/share/classes/java/io/FilePermission.java 2012-08-10 10:26:11.000000000 -0700 -+++ jdk/src/share/classes/java/io/FilePermission.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/io/FilePermission.java 2013-05-05 09:38:32.000000000 -0700 @@ -418,7 +418,7 @@ */ @@ -56671,8 +42484,58 @@ /** --- jdk/src/share/classes/java/io/ObjectInputStream.java 2012-08-10 10:26:15.000000000 -0700 -+++ jdk/src/share/classes/java/io/ObjectInputStream.java 2013-03-09 08:44:48.000000000 -0800 -@@ -1750,6 +1750,12 @@ ++++ jdk/src/share/classes/java/io/ObjectInputStream.java 2013-05-05 09:38:32.000000000 -0700 +@@ -41,6 +41,7 @@ + import java.util.concurrent.ConcurrentMap; + import java.util.concurrent.atomic.AtomicBoolean; + import static java.io.ObjectStreamClass.processQueue; ++import sun.reflect.misc.ReflectUtil; + + /** + * An ObjectInputStream deserializes primitive data and objects previously +@@ -1519,6 +1520,12 @@ + } + } + ++ private boolean isCustomSubclass() { ++ // Return true if this class is a custom subclass of ObjectInputStream ++ return getClass().getClassLoader() ++ != ObjectInputStream.class.getClassLoader(); ++ } ++ + /** + * Reads in and returns class descriptor for a dynamic proxy class. Sets + * passHandle to proxy class descriptor's assigned handle. If proxy class +@@ -1548,6 +1555,15 @@ + try { + if ((cl = resolveProxyClass(ifaces)) == null) { + resolveEx = new ClassNotFoundException("null class"); ++ } else if (!Proxy.isProxyClass(cl)) { ++ throw new InvalidClassException("Not a proxy"); ++ } else { ++ // ReflectUtil.checkProxyPackageAccess makes a test ++ // equivalent to isCustomSubclass so there's no need ++ // to condition this call to isCustomSubclass == true here. ++ ReflectUtil.checkProxyPackageAccess( ++ getClass().getClassLoader(), ++ cl.getInterfaces()); + } + } catch (ClassNotFoundException ex) { + resolveEx = ex; +@@ -1589,9 +1605,12 @@ + Class cl = null; + ClassNotFoundException resolveEx = null; + bin.setBlockDataMode(true); ++ final boolean checksRequired = isCustomSubclass(); + try { + if ((cl = resolveClass(readDesc)) == null) { + resolveEx = new ClassNotFoundException("null class"); ++ } else if (checksRequired) { ++ ReflectUtil.checkPackageAccess(cl); + } + } catch (ClassNotFoundException ex) { + resolveEx = ex; +@@ -1750,6 +1769,12 @@ ObjectStreamClass desc = readClassDesc(false); desc.checkDeserialize(); @@ -56686,7 +42549,7 @@ try { obj = desc.isInstantiable() ? desc.newInstance() : null; --- jdk/src/share/classes/java/lang/Class.java 2012-08-10 10:26:32.000000000 -0700 -+++ jdk/src/share/classes/java/lang/Class.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/lang/Class.java 2013-05-05 09:38:32.000000000 -0700 @@ -65,7 +65,9 @@ import sun.reflect.generics.scope.ClassScope; import sun.security.util.SecurityConstants; @@ -56863,8 +42726,56 @@ } } +--- jdk/src/share/classes/java/lang/ProcessBuilder.java 2012-08-10 10:26:45.000000000 -0700 ++++ jdk/src/share/classes/java/lang/ProcessBuilder.java 2013-05-05 09:38:32.000000000 -0700 +@@ -30,6 +30,7 @@ + import java.io.InputStream; + import java.io.OutputStream; + import java.io.FileOutputStream; ++import java.security.AccessControlException; + import java.util.Arrays; + import java.util.ArrayList; + import java.util.List; +@@ -1012,8 +1013,9 @@ + String prog = cmdarray[0]; + + SecurityManager security = System.getSecurityManager(); +- if (security != null) ++ if (security != null) { + security.checkExec(prog); ++ } + + String dir = directory == null ? null : directory.toString(); + +@@ -1024,13 +1026,24 @@ + redirects, + redirectErrorStream); + } catch (IOException e) { ++ String exceptionInfo = ": " + e.getMessage(); ++ Throwable cause = e; ++ if (security != null) { ++ // Can not disclose the fail reason for read-protected files. ++ try { ++ security.checkRead(prog); ++ } catch (AccessControlException ace) { ++ exceptionInfo = ""; ++ cause = ace; ++ } ++ } + // It's much easier for us to create a high-quality error + // message than the low-level C code which found the problem. + throw new IOException( + "Cannot run program \"" + prog + "\"" + + (dir == null ? "" : " (in directory \"" + dir + "\")") +- + ": " + e.getMessage(), +- e); ++ + exceptionInfo, ++ cause); + } + } + } --- jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java 2012-08-10 10:26:57.000000000 -0700 -+++ jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java 2013-05-05 09:38:32.000000000 -0700 @@ -44,6 +44,15 @@ if (!m.isResolved()) throw new InternalError(); @@ -56882,7 +42793,7 @@ } --- jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java 2012-08-10 10:26:57.000000000 -0700 -+++ jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java 2013-05-05 09:38:32.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. @@ -57059,7 +42970,7 @@ + } } --- jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2012-08-10 10:26:57.000000000 -0700 -+++ jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2013-05-05 09:38:32.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. @@ -57199,7 +43110,7 @@ + } } --- jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java 2012-08-10 10:26:57.000000000 -0700 -+++ jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java 2013-05-05 09:38:32.000000000 -0700 @@ -26,8 +26,12 @@ package java.lang.invoke; @@ -57319,7 +43230,7 @@ /** --- jdk/src/share/classes/java/lang/invoke/MethodHandleStatics.java 2012-08-10 10:26:57.000000000 -0700 -+++ jdk/src/share/classes/java/lang/invoke/MethodHandleStatics.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/lang/invoke/MethodHandleStatics.java 2013-05-05 09:38:32.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. @@ -57337,7 +43248,7 @@ err.initCause(ex); return err; --- jdk/src/share/classes/java/lang/invoke/MethodHandles.java 2012-08-10 10:26:57.000000000 -0700 -+++ jdk/src/share/classes/java/lang/invoke/MethodHandles.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/lang/invoke/MethodHandles.java 2013-05-05 09:38:32.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. @@ -57391,15 +43302,19 @@ return restrictProtectedReceiver(method, mh); } -@@ -687,6 +692,7 @@ - checkAccess(refc, ctor); +@@ -684,9 +689,10 @@ + } + private MethodHandle accessConstructor(Class<?> refc, MemberName ctor) throws IllegalAccessException { + assert(ctor.isConstructor()); +- checkAccess(refc, ctor); ++ checkAccess(refc, ctor, false /* is_setter */); MethodHandle rawMH = MethodHandleImpl.findMethod(ctor, false, lookupClassOrNull()); MethodHandle allocMH = MethodHandleImpl.makeAllocator(rawMH); + assert(!MethodHandleNatives.isCallerSensitive(ctor)); // maybeBindCaller not relevant here return fixVarargs(allocMH, rawMH); } private MethodHandle resolveConstructor(Class<?> refc, MethodType type) throws NoSuchMethodException, IllegalAccessException { -@@ -749,19 +755,22 @@ +@@ -749,19 +755,45 @@ checkSpecialCaller(specialCaller); MemberName method = resolveOrFail(refc, name, type, false, false, specialCaller); checkSecurityManager(refc, method); // stack walk magic: do not refactor @@ -57411,6 +43326,29 @@ + Class<?> callerClass, Class<?> specialCaller) throws NoSuchMethodException, IllegalAccessException { checkMethod(refc, method, false); ++ ++ Class<?> refcAsSuper; ++ if (refc != lookupClass() && ++ refc != (refcAsSuper = lookupClass().getSuperclass()) && ++ refc.isAssignableFrom(lookupClass())) { ++ assert(!method.getName().equals("<init>")); // not this code path ++ // Per JVMS 6.5, desc. of invokespecial instruction: ++ // If the method is in a superclass of the LC, ++ // and if our original search was above LC.super, ++ // repeat the search (symbolic lookup) from LC.super. ++ // FIXME: MemberName.resolve should handle this instead. ++ MemberName m2 = new MemberName(refcAsSuper, ++ method.getName(), ++ method.getMethodType(), ++ REF_invokeSpecial); ++ m2 = IMPL_NAMES.resolveOrNull(m2, true, lookupClassOrNull()); ++ if (m2 == null) throw new InternalError(method.toString()); ++ method = m2; ++ refc = refcAsSuper; ++ // redo basic checks ++ checkMethod(refc, method, false); ++ } ++ MethodHandle mh = MethodHandleImpl.findMethod(method, false, specialCaller); + mh = maybeBindCaller(method, mh, callerClass); return restrictReceiver(method, mh, specialCaller); @@ -57424,7 +43362,7 @@ } /** -@@ -922,6 +931,9 @@ +@@ -922,6 +954,9 @@ checkSecurityManager(refc, method); // stack walk magic: do not refactor checkMethod(refc, method, false); MethodHandle dmh = MethodHandleImpl.findMethod(method, true, lookupClassOrNull()); @@ -57434,7 +43372,7 @@ MethodHandle bmh = MethodHandleImpl.bindReceiver(dmh, receiver); if (bmh == null) throw method.makeAccessException("no access", this); -@@ -956,6 +968,8 @@ +@@ -956,6 +991,8 @@ return MethodHandleImpl.findMethod(method, true, /*no lookupClass*/ null); checkMethod(method.getDeclaringClass(), method, method.isStatic()); MethodHandle mh = MethodHandleImpl.findMethod(method, true, lookupClassOrNull()); @@ -57443,7 +43381,7 @@ return restrictProtectedReceiver(method, mh); } -@@ -987,6 +1001,8 @@ +@@ -987,6 +1024,8 @@ // ignore m.isAccessible: this is a new kind of access checkMethod(m.getDeclaringClass(), method, false); MethodHandle mh = MethodHandleImpl.findMethod(method, false, lookupClassOrNull()); @@ -57452,15 +43390,19 @@ return restrictReceiver(method, mh, specialCaller); } -@@ -1021,6 +1037,7 @@ - checkAccess(c.getDeclaringClass(), ctor); +@@ -1018,9 +1057,10 @@ + if (c.isAccessible()) { + rawCtor = MethodHandleImpl.findMethod(ctor, false, /*no lookupClass*/ null); + } else { +- checkAccess(c.getDeclaringClass(), ctor); ++ checkAccess(c.getDeclaringClass(), ctor, false /* is_setter */); rawCtor = MethodHandleImpl.findMethod(ctor, false, lookupClassOrNull()); } + assert(!MethodHandleNatives.isCallerSensitive(ctor)); // maybeBindCaller not relevant here MethodHandle allocator = MethodHandleImpl.makeAllocator(rawCtor); return fixVarargs(allocator, rawCtor); } -@@ -1095,7 +1112,29 @@ +@@ -1095,7 +1135,29 @@ } /** @@ -57490,7 +43432,27 @@ * This function performs stack walk magic: do not refactor it. */ void checkSecurityManager(Class<?> refc, MemberName m) { -@@ -1232,6 +1271,18 @@ +@@ -1149,14 +1211,17 @@ + else if (wantStatic != m.isStatic()) + message = wantStatic ? "expected a static method" : "expected a non-static method"; + else +- { checkAccess(refc, m); return; } ++ { checkAccess(refc, m, false /* is_setter */); return; } + throw m.makeAccessException(message, this); + } + +- void checkAccess(Class<?> refc, MemberName m) throws IllegalAccessException { ++ void checkAccess(Class<?> refc, MemberName m, boolean isSetter) throws IllegalAccessException { + int allowedModes = this.allowedModes; + if (allowedModes == TRUSTED) return; + int mods = m.getModifiers(); ++ if (m.isField() && Modifier.isFinal(mods) && isSetter) { ++ throw m.makeAccessException("unexpected set of a final field", this); ++ } + if (Modifier.isPublic(mods) && Modifier.isPublic(refc.getModifiers()) && allowedModes != 0) + return; // common case + int requestedModes = fixmods(mods); // adjust 0 => PACKAGE +@@ -1232,6 +1297,18 @@ MethodHandle narrowMH = MethodHandleImpl.convertArguments(mh, narrowType, rawType, 0); return fixVarargs(narrowMH, mh); } @@ -57509,8 +43471,17 @@ MethodHandle makeAccessor(Class<?> refc, MemberName field, boolean trusted, boolean isSetter, +@@ -1243,7 +1320,7 @@ + : "expected a non-static field", this); + if (trusted) + return MethodHandleImpl.accessField(field, isSetter, /*no lookupClass*/ null); +- checkAccess(refc, field); ++ checkAccess(refc, field, isSetter); + MethodHandle mh = MethodHandleImpl.accessField(field, isSetter, lookupClassOrNull()); + return restrictProtectedReceiver(field, mh); + } --- jdk/src/share/classes/java/lang/management/ManagementFactory.java 2012-08-10 10:26:58.000000000 -0700 -+++ jdk/src/share/classes/java/lang/management/ManagementFactory.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/lang/management/ManagementFactory.java 2013-05-05 09:38:32.000000000 -0700 @@ -802,20 +802,20 @@ */ private static void addMXBean(final MBeanServer mbs, final PlatformManagedObject pmo) { @@ -57541,8 +43512,62 @@ mbs.registerMBean(dmbean, pmo.getObjectName()); return null; } +--- jdk/src/share/classes/java/lang/ref/Finalizer.java 2012-08-10 10:26:59.000000000 -0700 ++++ jdk/src/share/classes/java/lang/ref/Finalizer.java 2013-05-05 09:38:32.000000000 -0700 +@@ -38,9 +38,9 @@ + */ + static native void invokeFinalizeMethod(Object o) throws Throwable; + +- static private ReferenceQueue queue = new ReferenceQueue(); +- static private Finalizer unfinalized = null; +- static private Object lock = new Object(); ++ private static ReferenceQueue queue = new ReferenceQueue(); ++ private static Finalizer unfinalized = null; ++ private static final Object lock = new Object(); + + private Finalizer + next = null, +@@ -142,7 +142,11 @@ + /* Called by Runtime.runFinalization() */ + static void runFinalization() { + forkSecondaryFinalizer(new Runnable() { ++ private volatile boolean running; + public void run() { ++ if (running) ++ return; ++ running = true; + for (;;) { + Finalizer f = (Finalizer)queue.poll(); + if (f == null) break; +@@ -155,7 +159,11 @@ + /* Invoked by java.lang.Shutdown */ + static void runAllFinalizers() { + forkSecondaryFinalizer(new Runnable() { ++ private volatile boolean running; + public void run() { ++ if (running) ++ return; ++ running = true; + for (;;) { + Finalizer f; + synchronized (lock) { +@@ -168,10 +176,14 @@ + } + + private static class FinalizerThread extends Thread { ++ private volatile boolean running; + FinalizerThread(ThreadGroup g) { + super(g, "Finalizer"); + } + public void run() { ++ if (running) ++ return; ++ running = true; + for (;;) { + try { + Finalizer f = (Finalizer)queue.remove(); --- jdk/src/share/classes/java/lang/reflect/Proxy.java 2012-08-10 10:27:00.000000000 -0700 -+++ jdk/src/share/classes/java/lang/reflect/Proxy.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/lang/reflect/Proxy.java 2013-05-05 09:38:32.000000000 -0700 @@ -27,6 +27,9 @@ import java.lang.ref.Reference; @@ -57748,8 +43773,19 @@ } } +--- jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java 2012-08-10 10:27:00.000000000 -0700 ++++ jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java 2013-05-05 09:38:32.000000000 -0700 +@@ -124,7 +124,7 @@ + * not connected already. + */ + protected void disconnect() { +- disconnect0(connectedAddress.family); ++ disconnect0(connectedAddress.holder().getFamily()); + connected = false; + connectedAddress = null; + connectedPort = -1; --- jdk/src/share/classes/java/net/InMemoryCookieStore.java 2012-08-10 10:27:01.000000000 -0700 -+++ jdk/src/share/classes/java/net/InMemoryCookieStore.java 2013-01-16 00:07:06.000000000 -0800 ++++ jdk/src/share/classes/java/net/InMemoryCookieStore.java 2013-05-05 09:38:31.000000000 -0700 @@ -91,10 +91,8 @@ if (cookie.getDomain() != null) { addIndex(domainIndex, cookie.getDomain(), cookie); @@ -57763,8 +43799,413 @@ } } finally { lock.unlock(); +--- jdk/src/share/classes/java/net/Inet4Address.java 2012-08-10 10:27:01.000000000 -0700 ++++ jdk/src/share/classes/java/net/Inet4Address.java 2013-05-05 09:38:31.000000000 -0700 +@@ -102,27 +102,28 @@ + + Inet4Address() { + super(); +- hostName = null; +- address = 0; +- family = IPv4; ++ holder().hostName = null; ++ holder().address = 0; ++ holder().family = IPv4; + } + + Inet4Address(String hostName, byte addr[]) { +- this.hostName = hostName; +- this.family = IPv4; ++ holder().hostName = hostName; ++ holder().family = IPv4; + if (addr != null) { + if (addr.length == INADDRSZ) { +- address = addr[3] & 0xFF; ++ int address = addr[3] & 0xFF; + address |= ((addr[2] << 8) & 0xFF00); + address |= ((addr[1] << 16) & 0xFF0000); + address |= ((addr[0] << 24) & 0xFF000000); ++ holder().address = address; + } + } + } + Inet4Address(String hostName, int address) { +- this.hostName = hostName; +- this.family = IPv4; +- this.address = address; ++ holder().hostName = hostName; ++ holder().family = IPv4; ++ holder().address = address; + } + + /** +@@ -136,8 +137,8 @@ + private Object writeReplace() throws ObjectStreamException { + // will replace the to be serialized 'this' object + InetAddress inet = new InetAddress(); +- inet.hostName = this.hostName; +- inet.address = this.address; ++ inet.holder().hostName = holder().getHostName(); ++ inet.holder().address = holder().getAddress(); + + /** + * Prior to 1.4 an InetAddress was created with a family +@@ -145,7 +146,7 @@ + * For compatibility reasons we must therefore write the + * the InetAddress with this family. + */ +- inet.family = 2; ++ inet.holder().family = 2; + + return inet; + } +@@ -159,7 +160,7 @@ + * @since JDK1.1 + */ + public boolean isMulticastAddress() { +- return ((address & 0xf0000000) == 0xe0000000); ++ return ((holder().getAddress() & 0xf0000000) == 0xe0000000); + } + + /** +@@ -169,7 +170,7 @@ + * @since 1.4 + */ + public boolean isAnyLocalAddress() { +- return address == 0; ++ return holder().getAddress() == 0; + } + + /** +@@ -198,6 +199,7 @@ + // defined in "Documenting Special Use IPv4 Address Blocks + // that have been Registered with IANA" by Bill Manning + // draft-manning-dsua-06.txt ++ int address = holder().getAddress(); + return (((address >>> 24) & 0xFF) == 169) + && (((address >>> 16) & 0xFF) == 254); + } +@@ -214,6 +216,7 @@ + // 10/8 prefix + // 172.16/12 prefix + // 192.168/16 prefix ++ int address = holder().getAddress(); + return (((address >>> 24) & 0xFF) == 10) + || ((((address >>> 24) & 0xFF) == 172) + && (((address >>> 16) & 0xF0) == 16)) +@@ -260,6 +263,7 @@ + */ + public boolean isMCLinkLocal() { + // 224.0.0/24 prefix and ttl == 1 ++ int address = holder().getAddress(); + return (((address >>> 24) & 0xFF) == 224) + && (((address >>> 16) & 0xFF) == 0) + && (((address >>> 8) & 0xFF) == 0); +@@ -275,6 +279,7 @@ + */ + public boolean isMCSiteLocal() { + // 239.255/16 prefix or ttl < 32 ++ int address = holder().getAddress(); + return (((address >>> 24) & 0xFF) == 239) + && (((address >>> 16) & 0xFF) == 255); + } +@@ -290,6 +295,7 @@ + */ + public boolean isMCOrgLocal() { + // 239.192 - 239.195 ++ int address = holder().getAddress(); + return (((address >>> 24) & 0xFF) == 239) + && (((address >>> 16) & 0xFF) >= 192) + && (((address >>> 16) & 0xFF) <= 195); +@@ -303,6 +309,7 @@ + * @return the raw IP address of this object. + */ + public byte[] getAddress() { ++ int address = holder().getAddress(); + byte[] addr = new byte[INADDRSZ]; + + addr[0] = (byte) ((address >>> 24) & 0xFF); +@@ -328,7 +335,7 @@ + * @return a hash code value for this IP address. + */ + public int hashCode() { +- return address; ++ return holder().getAddress(); + } + + /** +@@ -349,7 +356,7 @@ + */ + public boolean equals(Object obj) { + return (obj != null) && (obj instanceof Inet4Address) && +- (((InetAddress)obj).address == address); ++ (((InetAddress)obj).holder().getAddress() == holder().getAddress()); + } + + // Utilities +--- jdk/src/share/classes/java/net/Inet4AddressImpl.java 2012-08-10 10:27:01.000000000 -0700 ++++ jdk/src/share/classes/java/net/Inet4AddressImpl.java 2013-05-05 09:38:31.000000000 -0700 +@@ -40,7 +40,7 @@ + public synchronized InetAddress anyLocalAddress() { + if (anyLocalAddress == null) { + anyLocalAddress = new Inet4Address(); // {0x00,0x00,0x00,0x00} +- anyLocalAddress.hostName = "0.0.0.0"; ++ anyLocalAddress.holder().hostName = "0.0.0.0"; + } + return anyLocalAddress; + } +--- jdk/src/share/classes/java/net/Inet6Address.java 2012-08-10 10:27:01.000000000 -0700 ++++ jdk/src/share/classes/java/net/Inet6Address.java 2013-05-05 09:38:31.000000000 -0700 +@@ -213,18 +213,18 @@ + + Inet6Address() { + super(); +- hostName = null; ++ holder().hostName = null; + ipaddress = new byte[INADDRSZ]; +- family = IPv6; ++ holder().family = IPv6; + } + + /* checking of value for scope_id should be done by caller + * scope_id must be >= 0, or -1 to indicate not being set + */ + Inet6Address(String hostName, byte addr[], int scope_id) { +- this.hostName = hostName; ++ holder().hostName = hostName; + if (addr.length == INADDRSZ) { // normal IPv6 address +- family = IPv6; ++ holder().family = IPv6; + ipaddress = addr.clone(); + } + if (scope_id >= 0) { +@@ -325,9 +325,9 @@ + } + + private void initif(String hostName, byte addr[],NetworkInterface nif) throws UnknownHostException { +- this.hostName = hostName; ++ holder().hostName = hostName; + if (addr.length == INADDRSZ) { // normal IPv6 address +- family = IPv6; ++ holder().family = IPv6; + ipaddress = addr.clone(); + } + if (nif != null) { +@@ -412,6 +412,11 @@ + throws IOException, ClassNotFoundException { + scope_ifname = null; + scope_ifname_set = false; ++ ++ if (getClass().getClassLoader() != null) { ++ throw new SecurityException ("invalid address type"); ++ } ++ + s.defaultReadObject(); + + if (ifname != null && !"".equals (ifname)) { +@@ -445,7 +450,7 @@ + ipaddress.length); + } + +- if (family != IPv6) { ++ if (holder().getFamily() != IPv6) { + throw new InvalidObjectException("invalid address family type"); + } + } +--- jdk/src/share/classes/java/net/Inet6AddressImpl.java 2012-08-10 10:27:01.000000000 -0700 ++++ jdk/src/share/classes/java/net/Inet6AddressImpl.java 2013-05-05 09:38:32.000000000 -0700 +@@ -81,7 +81,7 @@ + if (anyLocalAddress == null) { + if (InetAddress.preferIPv6Address) { + anyLocalAddress = new Inet6Address(); +- anyLocalAddress.hostName = "::"; ++ anyLocalAddress.holder().hostName = "::"; + } else { + anyLocalAddress = (new Inet4AddressImpl()).anyLocalAddress(); + } +--- jdk/src/share/classes/java/net/InetAddress.java 2012-08-10 10:27:01.000000000 -0700 ++++ jdk/src/share/classes/java/net/InetAddress.java 2013-05-05 09:38:32.000000000 -0700 +@@ -34,8 +34,12 @@ + import java.util.ArrayList; + import java.security.AccessController; + import java.io.ObjectStreamException; ++import java.io.ObjectStreamField; + import java.io.IOException; + import java.io.ObjectInputStream; ++import java.io.ObjectInputStream.GetField; ++import java.io.ObjectOutputStream; ++import java.io.ObjectOutputStream.PutField; + import sun.security.action.*; + import sun.net.InetAddressCachePolicy; + import sun.net.util.IPAddressUtil; +@@ -199,25 +203,47 @@ + /* Specify address family preference */ + static transient boolean preferIPv6Address = false; + +- /** +- * @serial +- */ +- String hostName; ++ static class InetAddressHolder { + +- /** +- * Holds a 32-bit IPv4 address. +- * +- * @serial +- */ +- int address; ++ InetAddressHolder() {} + +- /** +- * Specifies the address family type, for instance, '1' for IPv4 +- * addresses, and '2' for IPv6 addresses. +- * +- * @serial +- */ +- int family; ++ InetAddressHolder(String hostName, int address, int family) { ++ this.hostName = hostName; ++ this.address = address; ++ this.family = family; ++ } ++ ++ String hostName; ++ ++ String getHostName() { ++ return hostName; ++ } ++ ++ /** ++ * Holds a 32-bit IPv4 address. ++ */ ++ int address; ++ ++ int getAddress() { ++ return address; ++ } ++ ++ /** ++ * Specifies the address family type, for instance, '1' for IPv4 ++ * addresses, and '2' for IPv6 addresses. ++ */ ++ int family; ++ ++ int getFamily() { ++ return family; ++ } ++ } ++ ++ final transient InetAddressHolder holder; ++ ++ InetAddressHolder holder() { ++ return holder; ++ } + + /* Used to store the name service provider */ + private static List<NameService> nameServices = null; +@@ -245,6 +271,7 @@ + * put in the address cache, since it is not created by name. + */ + InetAddress() { ++ holder = new InetAddressHolder(); + } + + /** +@@ -257,7 +284,7 @@ + */ + private Object readResolve() throws ObjectStreamException { + // will replace the deserialized 'this' object +- return new Inet4Address(this.hostName, this.address); ++ return new Inet4Address(holder().getHostName(), holder().getAddress()); + } + + /** +@@ -494,10 +521,10 @@ + * @see SecurityManager#checkConnect + */ + String getHostName(boolean check) { +- if (hostName == null) { +- hostName = InetAddress.getHostFromNameService(this, check); ++ if (holder().getHostName() == null) { ++ holder().hostName = InetAddress.getHostFromNameService(this, check); + } +- return hostName; ++ return holder().getHostName(); + } + + /** +@@ -660,6 +687,7 @@ + * @return a string representation of this IP address. + */ + public String toString() { ++ String hostName = holder().getHostName(); + return ((hostName != null) ? hostName : "") + + "/" + getHostAddress(); + } +@@ -1515,14 +1543,58 @@ + } + } + ++ private static final long FIELDS_OFFSET; ++ private static final sun.misc.Unsafe UNSAFE; ++ ++ static { ++ try { ++ sun.misc.Unsafe unsafe = sun.misc.Unsafe.getUnsafe(); ++ FIELDS_OFFSET = unsafe.objectFieldOffset( ++ InetAddress.class.getDeclaredField("holder") ++ ); ++ UNSAFE = unsafe; ++ } catch (ReflectiveOperationException e) { ++ throw new Error(e); ++ } ++ } ++ + private void readObject (ObjectInputStream s) throws + IOException, ClassNotFoundException { +- s.defaultReadObject (); + if (getClass().getClassLoader() != null) { +- hostName = null; +- address = 0; + throw new SecurityException ("invalid address type"); + } ++ GetField gf = s.readFields(); ++ String host = (String)gf.get("hostName", null); ++ int address= gf.get("address", 0); ++ int family= gf.get("family", 0); ++ InetAddressHolder h = new InetAddressHolder(host, address, family); ++ UNSAFE.putObject(this, FIELDS_OFFSET, h); ++ } ++ ++ /* needed because the serializable fields no longer exist */ ++ ++ /** ++ * @serialField hostName String ++ * @serialField address int ++ * @serialField family int ++ */ ++ private static final ObjectStreamField[] serialPersistentFields = { ++ new ObjectStreamField("hostName", String.class), ++ new ObjectStreamField("address", int.class), ++ new ObjectStreamField("family", int.class), ++ }; ++ ++ private void writeObject (ObjectOutputStream s) throws ++ IOException { ++ if (getClass().getClassLoader() != null) { ++ throw new SecurityException ("invalid address type"); ++ } ++ PutField pf = s.putFields(); ++ pf.put("hostName", holder().hostName); ++ pf.put("address", holder().address); ++ pf.put("family", holder().family); ++ s.writeFields(); ++ s.flush(); + } + } + --- jdk/src/share/classes/java/net/InetSocketAddress.java 2012-08-10 10:27:01.000000000 -0700 -+++ jdk/src/share/classes/java/net/InetSocketAddress.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/net/InetSocketAddress.java 2013-05-05 09:38:32.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. @@ -57841,8 +44282,8 @@ + if (hostname != null) + return hostname; + if (addr != null) { -+ if (addr.hostName != null) -+ return addr.hostName; ++ if (addr.holder().getHostName() != null) ++ return addr.holder().getHostName(); + else + return addr.getHostAddress(); + } @@ -58156,7 +44597,7 @@ } } --- jdk/src/share/classes/java/net/URL.java 2012-08-10 10:27:02.000000000 -0700 -+++ jdk/src/share/classes/java/net/URL.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/net/URL.java 2013-05-05 09:38:32.000000000 -0700 @@ -28,6 +28,8 @@ import java.io.IOException; import java.io.InputStream; @@ -58213,8 +44654,31 @@ try { String clsName = packagePrefix + "." + protocol + ".Handler"; +--- jdk/src/share/classes/java/rmi/server/LogStream.java 2012-08-10 10:27:08.000000000 -0700 ++++ jdk/src/share/classes/java/rmi/server/LogStream.java 2013-05-05 09:38:33.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1996, 2004, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -120,6 +120,13 @@ + */ + @Deprecated + public static synchronized void setDefaultStream(PrintStream newDefault) { ++ SecurityManager sm = System.getSecurityManager(); ++ ++ if (sm != null) { ++ sm.checkPermission( ++ new java.util.logging.LoggingPermission("control", null)); ++ } ++ + defaultStream = newDefault; + } + --- jdk/src/share/classes/java/security/AccessController.java 2012-08-10 10:27:09.000000000 -0700 -+++ jdk/src/share/classes/java/security/AccessController.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/security/AccessController.java 2013-05-05 09:38:33.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. @@ -58264,8 +44728,26 @@ } +--- jdk/src/share/classes/java/sql/DriverManager.java 2012-08-10 10:27:15.000000000 -0700 ++++ jdk/src/share/classes/java/sql/DriverManager.java 2013-05-05 09:38:33.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -516,7 +516,7 @@ + */ + try{ + while(driversIterator.hasNext()) { +- println(" Loading done by the java.util.ServiceLoader : "+driversIterator.next()); ++ driversIterator.next(); + } + } catch(Throwable t) { + // Do nothing --- jdk/src/share/classes/java/util/ServiceLoader.java 2012-08-10 10:27:19.000000000 -0700 -+++ jdk/src/share/classes/java/util/ServiceLoader.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/util/ServiceLoader.java 2013-05-05 09:38:33.000000000 -0700 @@ -358,14 +358,21 @@ } String cn = nextName; @@ -58293,7 +44775,7 @@ fail(service, "Provider " + cn + " could not be instantiated: " + x, --- jdk/src/share/classes/java/util/TimeZone.java 2012-08-10 10:27:19.000000000 -0700 -+++ jdk/src/share/classes/java/util/TimeZone.java 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/classes/java/util/TimeZone.java 2013-05-05 09:38:33.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. @@ -58410,8 +44892,66 @@ } return zi; } +--- jdk/src/share/classes/java/util/concurrent/ConcurrentHashMap.java 2012-08-10 10:27:20.000000000 -0700 ++++ jdk/src/share/classes/java/util/concurrent/ConcurrentHashMap.java 2013-05-05 09:38:33.000000000 -0700 +@@ -40,6 +40,7 @@ + import java.io.IOException; + import java.io.ObjectInputStream; + import java.io.ObjectOutputStream; ++import java.io.ObjectStreamField; + + /** + * A hash table supporting full concurrency of retrievals and +@@ -1535,7 +1536,23 @@ + @SuppressWarnings("unchecked") + private void readObject(java.io.ObjectInputStream s) + throws IOException, ClassNotFoundException { +- s.defaultReadObject(); ++ // Don't call defaultReadObject() ++ ObjectInputStream.GetField oisFields = s.readFields(); ++ final Segment<K,V>[] oisSegments = (Segment<K,V>[])oisFields.get("segments", null); ++ ++ final int ssize = oisSegments.length; ++ if (ssize < 1 || ssize > MAX_SEGMENTS ++ || (ssize & (ssize-1)) != 0 ) // ssize not power of two ++ throw new java.io.InvalidObjectException("Bad number of segments:" ++ + ssize); ++ int sshift = 0, ssizeTmp = ssize; ++ while (ssizeTmp > 1) { ++ ++sshift; ++ ssizeTmp >>>= 1; ++ } ++ UNSAFE.putIntVolatile(this, SEGSHIFT_OFFSET, 32 - sshift); ++ UNSAFE.putIntVolatile(this, SEGMASK_OFFSET, ssize - 1); ++ UNSAFE.putObjectVolatile(this, SEGMENTS_OFFSET, oisSegments); + + // set hashMask + UNSAFE.putIntVolatile(this, HASHSEED_OFFSET, randomHashSeed(this)); +@@ -1568,6 +1585,9 @@ + private static final long TBASE; + private static final int TSHIFT; + private static final long HASHSEED_OFFSET; ++ private static final long SEGSHIFT_OFFSET; ++ private static final long SEGMASK_OFFSET; ++ private static final long SEGMENTS_OFFSET; + + static { + int ss, ts; +@@ -1581,6 +1601,12 @@ + ss = UNSAFE.arrayIndexScale(sc); + HASHSEED_OFFSET = UNSAFE.objectFieldOffset( + ConcurrentHashMap.class.getDeclaredField("hashSeed")); ++ SEGSHIFT_OFFSET = UNSAFE.objectFieldOffset( ++ ConcurrentHashMap.class.getDeclaredField("segmentShift")); ++ SEGMASK_OFFSET = UNSAFE.objectFieldOffset( ++ ConcurrentHashMap.class.getDeclaredField("segmentMask")); ++ SEGMENTS_OFFSET = UNSAFE.objectFieldOffset( ++ ConcurrentHashMap.class.getDeclaredField("segments")); + } catch (Exception e) { + throw new Error(e); + } --- jdk/src/share/classes/java/util/concurrent/Executors.java 2012-08-10 10:27:20.000000000 -0700 -+++ jdk/src/share/classes/java/util/concurrent/Executors.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/util/concurrent/Executors.java 2013-05-05 09:38:33.000000000 -0700 @@ -530,18 +530,17 @@ return AccessController.doPrivileged( new PrivilegedExceptionAction<T>() { @@ -58441,7 +44981,7 @@ } }, acc); --- jdk/src/share/classes/java/util/concurrent/PriorityBlockingQueue.java 2012-08-10 10:27:20.000000000 -0700 -+++ jdk/src/share/classes/java/util/concurrent/PriorityBlockingQueue.java 2013-01-16 00:07:07.000000000 -0800 ++++ jdk/src/share/classes/java/util/concurrent/PriorityBlockingQueue.java 2013-05-05 09:38:33.000000000 -0700 @@ -35,8 +35,7 @@ package java.util.concurrent; @@ -58778,7 +45318,7 @@ private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException { --- jdk/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java 2012-08-10 10:27:21.000000000 -0700 -+++ jdk/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java 2013-05-05 09:38:33.000000000 -0700 @@ -34,8 +34,10 @@ */ @@ -59049,7 +45589,7 @@ } + --- jdk/src/share/classes/java/util/jar/JarFile.java 2012-08-10 10:27:22.000000000 -0700 -+++ jdk/src/share/classes/java/util/jar/JarFile.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/util/jar/JarFile.java 2013-05-05 09:38:33.000000000 -0700 @@ -34,6 +34,7 @@ import java.security.cert.Certificate; import java.security.AccessController; @@ -59108,7 +45648,7 @@ int i = 0; next: --- jdk/src/share/classes/java/util/logging/FileHandler.java 2012-08-10 10:27:22.000000000 -0700 -+++ jdk/src/share/classes/java/util/logging/FileHandler.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/util/logging/FileHandler.java 2013-05-05 09:38:33.000000000 -0700 @@ -220,7 +220,7 @@ * @exception NullPointerException if pattern property is an empty String. */ @@ -59164,7 +45704,7 @@ throw new IllegalArgumentException("file count = " + count); } --- jdk/src/share/classes/java/util/logging/Handler.java 2012-08-10 10:27:22.000000000 -0700 -+++ jdk/src/share/classes/java/util/logging/Handler.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/util/logging/Handler.java 2013-05-05 09:38:33.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. @@ -59239,7 +45779,7 @@ } } --- jdk/src/share/classes/java/util/logging/Level.java 2012-08-10 10:27:22.000000000 -0700 -+++ jdk/src/share/classes/java/util/logging/Level.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/util/logging/Level.java 2013-05-05 09:38:33.000000000 -0700 @@ -24,6 +24,10 @@ */ @@ -59578,7 +46118,7 @@ + } --- jdk/src/share/classes/java/util/logging/LogManager.java 2012-08-10 10:27:22.000000000 -0700 -+++ jdk/src/share/classes/java/util/logging/LogManager.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/util/logging/LogManager.java 2013-05-05 09:38:33.000000000 -0700 @@ -34,6 +34,8 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; @@ -60359,7 +46899,7 @@ } --- jdk/src/share/classes/java/util/logging/Logger.java 2012-08-10 10:27:22.000000000 -0700 -+++ jdk/src/share/classes/java/util/logging/Logger.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/util/logging/Logger.java 2013-05-05 09:38:33.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. @@ -60568,7 +47108,7 @@ } --- jdk/src/share/classes/java/util/logging/Logging.java 2012-08-10 10:27:22.000000000 -0700 -+++ jdk/src/share/classes/java/util/logging/Logging.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/util/logging/Logging.java 2013-05-05 09:38:33.000000000 -0700 @@ -34,15 +34,15 @@ * * The <tt>LoggingMXBean</tt> interface provides a standard @@ -60618,7 +47158,7 @@ logger.setLevel(level); --- jdk/src/share/classes/java/util/logging/LoggingProxyImpl.java 2012-08-10 10:27:22.000000000 -0700 -+++ jdk/src/share/classes/java/util/logging/LoggingProxyImpl.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/util/logging/LoggingProxyImpl.java 2013-05-05 09:38:33.000000000 -0700 @@ -37,7 +37,8 @@ @Override @@ -60649,7 +47189,7 @@ @Override --- jdk/src/share/classes/java/util/logging/MemoryHandler.java 2012-08-10 10:27:22.000000000 -0700 -+++ jdk/src/share/classes/java/util/logging/MemoryHandler.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/util/logging/MemoryHandler.java 2013-05-05 09:38:33.000000000 -0700 @@ -238,7 +238,7 @@ throw new NullPointerException(); } @@ -60660,7 +47200,7 @@ } --- jdk/src/share/classes/java/util/logging/SimpleFormatter.java 2012-08-10 10:27:22.000000000 -0700 -+++ jdk/src/share/classes/java/util/logging/SimpleFormatter.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/java/util/logging/SimpleFormatter.java 2013-05-05 09:38:33.000000000 -0700 @@ -162,7 +162,7 @@ dat, source, @@ -60671,7 +47211,7 @@ throwable); } --- jdk/src/share/classes/java/util/logging/StreamHandler.java 2012-08-10 10:27:22.000000000 -0700 -+++ jdk/src/share/classes/java/util/logging/StreamHandler.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/java/util/logging/StreamHandler.java 2013-05-05 09:38:33.000000000 -0700 @@ -249,7 +249,7 @@ } @@ -60682,7 +47222,7 @@ try { if (!doneHeader) { --- jdk/src/share/classes/javax/crypto/CryptoPermissions.java 2012-08-10 10:27:27.000000000 -0700 -+++ jdk/src/share/classes/javax/crypto/CryptoPermissions.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/javax/crypto/CryptoPermissions.java 2013-05-05 09:38:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved. @@ -60815,7 +47355,7 @@ private Enumeration getNextEnumWithMore() { --- jdk/src/share/classes/javax/crypto/JceSecurityManager.java 2012-08-10 10:27:28.000000000 -0700 -+++ jdk/src/share/classes/javax/crypto/JceSecurityManager.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/javax/crypto/JceSecurityManager.java 2013-05-05 09:38:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved. @@ -60874,7 +47414,7 @@ } --- jdk/src/share/classes/javax/management/modelmbean/DescriptorSupport.java 2012-08-10 10:27:37.000000000 -0700 -+++ jdk/src/share/classes/javax/management/modelmbean/DescriptorSupport.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/javax/management/modelmbean/DescriptorSupport.java 2013-05-05 09:38:34.000000000 -0700 @@ -1245,13 +1245,12 @@ return s.substring(1, s.length() - 1); } @@ -60892,7 +47432,7 @@ Class.forName(className, false, contextClassLoader); constr = c.getConstructor(new Class<?>[] {String.class}); --- jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java 2012-08-10 10:27:37.000000000 -0700 -+++ jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java 2013-05-05 09:38:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. @@ -61233,7 +47773,7 @@ +} \ No newline at end of file --- jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java 2012-08-10 10:27:41.000000000 -0700 -+++ jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java 2013-05-05 09:38:34.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. @@ -61420,7 +47960,7 @@ + } } --- jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java 2012-08-10 10:27:41.000000000 -0700 -+++ jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java 2013-05-05 09:38:34.000000000 -0700 @@ -277,9 +277,9 @@ // Check for secure RMIServer stub if the corresponding // client-side environment property is set to "true". @@ -61435,7 +47975,7 @@ // Connect IIOP Stub if needed. --- jdk/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java 2012-08-10 10:27:41.000000000 -0700 -+++ jdk/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java 2013-05-05 09:38:34.000000000 -0700 @@ -412,9 +412,8 @@ if (tracing) logger.trace("start", "Using external directory: " + jndiUrl); @@ -61449,7 +47989,7 @@ if (tracing) logger.trace("start", JNDI_REBIND_ATTRIBUTE + "=" + rebind); --- jdk/src/share/classes/javax/swing/AncestorNotifier.java 2012-08-10 10:27:55.000000000 -0700 -+++ jdk/src/share/classes/javax/swing/AncestorNotifier.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/javax/swing/AncestorNotifier.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. @@ -61467,7 +48007,7 @@ JComponent root; --- jdk/src/share/classes/javax/swing/ClientPropertyKey.java 2012-08-10 10:27:55.000000000 -0700 -+++ jdk/src/share/classes/javax/swing/ClientPropertyKey.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/javax/swing/ClientPropertyKey.java 2013-05-05 09:38:35.000000000 -0700 @@ -25,6 +25,8 @@ package javax.swing; @@ -61494,7 +48034,7 @@ * Constructs a key with the {@code reportValueNotSerializable} property * set to {@code false}. --- jdk/src/share/classes/javax/swing/JComponent.java 2012-08-10 10:27:56.000000000 -0700 -+++ jdk/src/share/classes/javax/swing/JComponent.java 2013-01-16 00:07:09.000000000 -0800 ++++ jdk/src/share/classes/javax/swing/JComponent.java 2013-05-05 09:38:35.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. @@ -61552,7 +48092,7 @@ - } --- jdk/src/share/classes/javax/swing/JTable.java 2012-08-10 10:27:58.000000000 -0700 -+++ jdk/src/share/classes/javax/swing/JTable.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/javax/swing/JTable.java 2013-05-05 09:38:35.000000000 -0700 @@ -781,15 +781,11 @@ scrollPane.getCorner(JScrollPane.UPPER_TRAILING_CORNER); if (corner == null || corner instanceof UIResource){ @@ -61575,7 +48115,7 @@ scrollPane.setCorner(JScrollPane.UPPER_TRAILING_CORNER, corner); --- jdk/src/share/classes/javax/swing/JViewport.java 2012-08-10 10:27:59.000000000 -0700 -+++ jdk/src/share/classes/javax/swing/JViewport.java 2013-01-16 00:07:09.000000000 -0800 ++++ jdk/src/share/classes/javax/swing/JViewport.java 2013-05-05 09:38:35.000000000 -0700 @@ -1586,18 +1586,10 @@ int bdx = blitToX - blitFromX; int bdy = blitToY - blitFromY; @@ -61597,7 +48137,7 @@ int x = view.getX(); int y = view.getY(); --- jdk/src/share/classes/javax/swing/RepaintManager.java 2012-08-10 10:28:00.000000000 -0700 -+++ jdk/src/share/classes/javax/swing/RepaintManager.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/javax/swing/RepaintManager.java 2013-05-05 09:38:35.000000000 -0700 @@ -27,11 +27,12 @@ import java.awt.*; @@ -61890,7 +48430,7 @@ } } --- jdk/src/share/classes/javax/swing/UIDefaults.java 2012-08-10 10:28:01.000000000 -0700 -+++ jdk/src/share/classes/javax/swing/UIDefaults.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/javax/swing/UIDefaults.java 2013-05-05 09:38:35.000000000 -0700 @@ -677,6 +677,8 @@ try { String className = (String)get(uiClassID); @@ -61901,7 +48441,7 @@ if (cls == null) { if (uiClassLoader == null) { --- jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java 2012-08-10 10:28:10.000000000 -0700 -+++ jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java 2013-05-05 09:38:34.000000000 -0700 @@ -159,7 +159,12 @@ // Store Table ScrollPane Corner Component @@ -61917,7 +48457,7 @@ // Setup the settings for ToolBarSeparator which is custom // installed for Nimbus --- jdk/src/share/classes/javax/swing/text/DefaultCaret.java 2012-08-10 10:28:13.000000000 -0700 -+++ jdk/src/share/classes/javax/swing/text/DefaultCaret.java 2013-01-16 00:07:10.000000000 -0800 ++++ jdk/src/share/classes/javax/swing/text/DefaultCaret.java 2013-05-05 09:38:35.000000000 -0700 @@ -403,10 +403,6 @@ * @see MouseListener#mouseClicked */ @@ -61930,7 +48470,7 @@ if (! e.isConsumed()) { --- jdk/src/share/classes/javax/swing/text/DefaultFormatter.java 2012-08-10 10:28:13.000000000 -0700 -+++ jdk/src/share/classes/javax/swing/text/DefaultFormatter.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/javax/swing/text/DefaultFormatter.java 2013-05-05 09:38:35.000000000 -0700 @@ -24,6 +24,8 @@ */ package javax.swing.text; @@ -61950,7 +48490,7 @@ } catch (NoSuchMethodException nsme) { cons = null; --- jdk/src/share/classes/sun/applet/AppletPanel.java 2012-08-10 10:28:21.000000000 -0700 -+++ jdk/src/share/classes/sun/applet/AppletPanel.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/applet/AppletPanel.java 2013-05-05 09:38:29.000000000 -0700 @@ -45,6 +45,7 @@ import java.util.Collections; import java.util.Locale; @@ -62053,7 +48593,7 @@ catch(InterruptedException ie) { --- jdk/src/share/classes/sun/awt/AWTAccessor.java 2012-08-10 10:28:23.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/AWTAccessor.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/AWTAccessor.java 2013-05-05 09:38:29.000000000 -0700 @@ -27,17 +27,19 @@ import java.awt.*; @@ -62620,7 +49160,7 @@ + } } --- jdk/src/share/classes/sun/awt/AppContext.java 2012-08-10 10:28:23.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/AppContext.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/AppContext.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. @@ -62709,7 +49249,14 @@ final class MostRecentKeyValue { --- jdk/src/share/classes/sun/awt/EmbeddedFrame.java 2012-08-10 10:28:23.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/EmbeddedFrame.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/EmbeddedFrame.java 2013-05-05 09:38:29.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,12 +29,6 @@ import java.awt.event.*; import java.awt.image.*; @@ -62809,8 +49356,17 @@ /** * Synthesize native message to activate or deactivate EmbeddedFrame window +@@ -595,7 +532,7 @@ + public void toBack() {} + public void updateFocusableWindowState() {} + public void updateAlwaysOnTop() {} +- public void setAlwaysOnTop(boolean alwaysOnTop) {} ++ public void updateAlwaysOnTopState() {} + public Component getGlobalHeavyweightFocusOwner() { return null; } + public void setBoundsPrivate(int x, int y, int width, int height) { + setBounds(x, y, width, height, SET_BOUNDS); --- jdk/src/share/classes/sun/awt/FontConfiguration.java 2012-08-10 10:28:23.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/FontConfiguration.java 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/FontConfiguration.java 2013-05-05 09:38:29.000000000 -0700 @@ -1146,7 +1146,7 @@ */ HashMap<String, Boolean> existsMap; @@ -62821,7 +49377,7 @@ } else if (existsMap == null) { existsMap = new HashMap<String, Boolean>(); --- jdk/src/share/classes/sun/awt/OSInfo.java 2012-08-10 10:28:24.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/OSInfo.java 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/OSInfo.java 2013-05-05 09:38:29.000000000 -0700 @@ -39,6 +39,7 @@ WINDOWS, LINUX, @@ -62842,7 +49398,7 @@ return MACOSX; } --- jdk/src/share/classes/sun/awt/SunToolkit.java 2012-08-10 10:28:24.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/SunToolkit.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/SunToolkit.java 2013-05-05 09:38:29.000000000 -0700 @@ -51,14 +51,8 @@ import sun.awt.image.*; import sun.security.action.GetPropertyAction; @@ -63119,7 +49675,7 @@ * component is * {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}. --- jdk/src/share/classes/sun/awt/TextureSizeConstraining.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/sun/awt/TextureSizeConstraining.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/TextureSizeConstraining.java 2013-05-05 09:38:29.000000000 -0700 @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -63167,7 +49723,7 @@ + +} --- jdk/src/share/classes/sun/awt/TimedWindowEvent.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/sun/awt/TimedWindowEvent.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/TimedWindowEvent.java 2013-05-05 09:38:29.000000000 -0700 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -63220,8 +49776,67 @@ + } +} + +--- jdk/src/share/classes/sun/awt/datatransfer/TransferableProxy.java 2012-08-10 10:28:25.000000000 -0700 ++++ jdk/src/share/classes/sun/awt/datatransfer/TransferableProxy.java 2013-05-05 09:38:29.000000000 -0700 +@@ -102,11 +102,11 @@ + protected final boolean isLocal; + } + +-class ClassLoaderObjectOutputStream extends ObjectOutputStream { ++final class ClassLoaderObjectOutputStream extends ObjectOutputStream { + private final Map<Set<String>, ClassLoader> map = + new HashMap<Set<String>, ClassLoader>(); + +- public ClassLoaderObjectOutputStream(OutputStream os) throws IOException { ++ ClassLoaderObjectOutputStream(OutputStream os) throws IOException { + super(os); + } + +@@ -140,15 +140,15 @@ + map.put(s, classLoader); + } + +- public Map<Set<String>, ClassLoader> getClassLoaderMap() { ++ Map<Set<String>, ClassLoader> getClassLoaderMap() { + return new HashMap(map); + } + } + +-class ClassLoaderObjectInputStream extends ObjectInputStream { ++final class ClassLoaderObjectInputStream extends ObjectInputStream { + private final Map<Set<String>, ClassLoader> map; + +- public ClassLoaderObjectInputStream(InputStream is, ++ ClassLoaderObjectInputStream(InputStream is, + Map<Set<String>, ClassLoader> map) + throws IOException { + super(is); +@@ -166,8 +166,11 @@ + s.add(className); + + ClassLoader classLoader = map.get(s); +- +- return Class.forName(className, false, classLoader); ++ if (classLoader != null) { ++ return Class.forName(className, false, classLoader); ++ } else { ++ return super.resolveClass(classDesc); ++ } + } + + protected Class<?> resolveProxyClass(String[] interfaces) +@@ -179,6 +182,9 @@ + } + + ClassLoader classLoader = map.get(s); ++ if (classLoader == null) { ++ return super.resolveProxyClass(interfaces); ++ } + + // The code below is mostly copied from the superclass. + ClassLoader nonPublicLoader = null; --- jdk/src/share/classes/sun/awt/image/ByteComponentRaster.java 2012-08-10 10:28:26.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/image/ByteComponentRaster.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/image/ByteComponentRaster.java 2013-05-05 09:38:29.000000000 -0700 @@ -198,7 +198,7 @@ } this.bandOffset = this.dataOffsets[0]; @@ -63331,7 +49946,7 @@ } --- jdk/src/share/classes/sun/awt/image/ByteInterleavedRaster.java 2012-08-10 10:28:26.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/image/ByteInterleavedRaster.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/image/ByteInterleavedRaster.java 2013-05-05 09:38:29.000000000 -0700 @@ -250,7 +250,7 @@ } } @@ -63376,7 +49991,7 @@ return new String ("ByteInterleavedRaster: width = "+width+" height = " + height --- jdk/src/share/classes/sun/awt/image/BytePackedRaster.java 2012-08-10 10:28:26.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/image/BytePackedRaster.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/image/BytePackedRaster.java 2013-05-05 09:38:29.000000000 -0700 @@ -1368,11 +1368,35 @@ throw new RasterFormatException("Data offsets must be >= 0"); } @@ -63414,8 +50029,54 @@ throw new RasterFormatException("raster dimensions overflow " + "array bounds"); } +--- jdk/src/share/classes/sun/awt/image/ImageRepresentation.java 2012-08-10 10:28:26.000000000 -0700 ++++ jdk/src/share/classes/sun/awt/image/ImageRepresentation.java 2013-05-05 09:38:29.000000000 -0700 +@@ -333,10 +333,10 @@ + hints = h; + } + +- private native void setICMpixels(int x, int y, int w, int h, int[] lut, ++ private native boolean setICMpixels(int x, int y, int w, int h, int[] lut, + byte[] pix, int off, int scansize, + IntegerComponentRaster ict); +- private native int setDiffICM(int x, int y, int w, int h, int[] lut, ++ private native boolean setDiffICM(int x, int y, int w, int h, int[] lut, + int transPix, int numLut, IndexColorModel icm, + byte[] pix, int off, int scansize, + ByteComponentRaster bct, int chanOff); +@@ -426,10 +426,10 @@ + IndexColorModel icm = (IndexColorModel) model; + ByteComponentRaster bct = (ByteComponentRaster) biRaster; + int numlut = numSrcLUT; +- if (setDiffICM(x, y, w, h, srcLUT, srcLUTtransIndex, ++ if (!setDiffICM(x, y, w, h, srcLUT, srcLUTtransIndex, + numSrcLUT, icm, + pix, off, scansize, bct, +- bct.getDataOffset(0)) == 0) { ++ bct.getDataOffset(0))) { + convertToRGB(); + } + else { +@@ -470,9 +470,14 @@ + if (s_useNative) { + // Note that setICMpixels modifies the raster directly + // so we must mark it as changed afterwards +- setICMpixels(x, y, w, h, srcLUT, pix, off, scansize, +- iraster); +- iraster.markDirty(); ++ if (setICMpixels(x, y, w, h, srcLUT, pix, off, scansize, ++ iraster)) ++ { ++ iraster.markDirty(); ++ } else { ++ abort(); ++ return; ++ } + } + else { + int[] storage = new int[w*h]; --- jdk/src/share/classes/sun/awt/image/IntegerComponentRaster.java 2012-08-10 10:28:26.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/image/IntegerComponentRaster.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/image/IntegerComponentRaster.java 2013-05-05 09:38:29.000000000 -0700 @@ -208,7 +208,7 @@ " SinglePixelPackedSampleModel"); } @@ -63516,7 +50177,7 @@ } --- jdk/src/share/classes/sun/awt/image/IntegerInterleavedRaster.java 2012-08-10 10:28:26.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/image/IntegerInterleavedRaster.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/image/IntegerInterleavedRaster.java 2013-05-05 09:38:29.000000000 -0700 @@ -151,7 +151,7 @@ throw new RasterFormatException("IntegerInterleavedRasters must have"+ " SinglePixelPackedSampleModel"); @@ -63559,7 +50220,7 @@ return new String ("IntegerInterleavedRaster: width = "+width +" height = " + height --- jdk/src/share/classes/sun/awt/image/ShortComponentRaster.java 2012-08-10 10:28:27.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/image/ShortComponentRaster.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/image/ShortComponentRaster.java 2013-05-05 09:38:29.000000000 -0700 @@ -198,7 +198,7 @@ } this.bandOffset = this.dataOffsets[0]; @@ -63668,7 +50329,7 @@ } --- jdk/src/share/classes/sun/awt/image/ShortInterleavedRaster.java 2012-08-10 10:28:27.000000000 -0700 -+++ jdk/src/share/classes/sun/awt/image/ShortInterleavedRaster.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/awt/image/ShortInterleavedRaster.java 2013-05-05 09:38:29.000000000 -0700 @@ -171,7 +171,7 @@ sampleModel); } @@ -63713,7 +50374,7 @@ return new String ("ShortInterleavedRaster: width = "+width +" height = " + height --- jdk/src/share/classes/sun/beans/editors/BooleanEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/BooleanEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/BooleanEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved. @@ -63776,7 +50437,7 @@ +public class BooleanEditor extends com.sun.beans.editors.BooleanEditor { } --- jdk/src/share/classes/sun/beans/editors/ByteEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/ByteEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/ByteEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved. @@ -63811,7 +50472,7 @@ +public class ByteEditor extends com.sun.beans.editors.ByteEditor { } --- jdk/src/share/classes/sun/beans/editors/ColorEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/ColorEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/ColorEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved. @@ -64015,7 +50676,7 @@ +public class ColorEditor extends com.sun.beans.editors.ColorEditor { } --- jdk/src/share/classes/sun/beans/editors/DoubleEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/DoubleEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/DoubleEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved. @@ -64043,7 +50704,7 @@ +public class DoubleEditor extends com.sun.beans.editors.DoubleEditor { } --- jdk/src/share/classes/sun/beans/editors/EnumEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/EnumEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/EnumEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. @@ -64180,7 +50841,7 @@ } } --- jdk/src/share/classes/sun/beans/editors/FloatEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/FloatEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/FloatEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved. @@ -64215,7 +50876,7 @@ +public class FloatEditor extends com.sun.beans.editors.FloatEditor { } --- jdk/src/share/classes/sun/beans/editors/FontEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/FontEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/FontEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved. @@ -64424,7 +51085,7 @@ +public class FontEditor extends com.sun.beans.editors.FontEditor { } --- jdk/src/share/classes/sun/beans/editors/IntegerEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/IntegerEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/IntegerEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved. @@ -64453,7 +51114,7 @@ +public class IntegerEditor extends com.sun.beans.editors.IntegerEditor { } --- jdk/src/share/classes/sun/beans/editors/LongEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/LongEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/LongEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved. @@ -64488,7 +51149,7 @@ +public class LongEditor extends com.sun.beans.editors.LongEditor { } --- jdk/src/share/classes/sun/beans/editors/NumberEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/NumberEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/NumberEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, Oracle and/or its affiliates. All rights reserved. @@ -64519,7 +51180,7 @@ +abstract public class NumberEditor extends com.sun.beans.editors.NumberEditor { } --- jdk/src/share/classes/sun/beans/editors/ShortEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/ShortEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/ShortEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved. @@ -64558,7 +51219,7 @@ +public class ShortEditor extends com.sun.beans.editors.ShortEditor { } --- jdk/src/share/classes/sun/beans/editors/StringEditor.java 2012-08-10 10:28:28.000000000 -0700 -+++ jdk/src/share/classes/sun/beans/editors/StringEditor.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/beans/editors/StringEditor.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved. @@ -64688,8 +51349,34 @@ - } - } -} +--- jdk/src/share/classes/sun/font/CMap.java 2012-08-10 10:28:29.000000000 -0700 ++++ jdk/src/share/classes/sun/font/CMap.java 2013-05-05 09:38:29.000000000 -0700 +@@ -841,7 +841,6 @@ + + CMapFormat6(ByteBuffer bbuffer, int offset, char[] xlat) { + +- System.err.println("WARNING: CMapFormat8 is untested."); + bbuffer.position(offset+6); + CharBuffer buffer = bbuffer.asCharBuffer(); + firstCode = buffer.get(); +@@ -884,7 +883,6 @@ + + CMapFormat8(ByteBuffer bbuffer, int offset, char[] xlat) { + +- System.err.println("WARNING: CMapFormat8 is untested."); + bbuffer.position(12); + bbuffer.get(is32); + nGroups = bbuffer.getInt(); +@@ -915,7 +913,6 @@ + + CMapFormat10(ByteBuffer bbuffer, int offset, char[] xlat) { + +- System.err.println("WARNING: CMapFormat10 is untested."); + firstCode = bbuffer.getInt() & INTMASK; + entryCount = bbuffer.getInt() & INTMASK; + bbuffer.position(offset+20); --- jdk/src/share/classes/sun/font/FontUtilities.java 2012-08-10 10:28:29.000000000 -0700 -+++ jdk/src/share/classes/sun/font/FontUtilities.java 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/classes/sun/font/FontUtilities.java 2013-05-05 09:38:29.000000000 -0700 @@ -48,6 +48,8 @@ public static boolean isLinux; @@ -64712,7 +51399,7 @@ String t2kStr = System.getProperty("sun.java2d.font.scaler"); --- jdk/src/share/classes/sun/font/SunFontManager.java 2012-08-10 10:28:31.000000000 -0700 -+++ jdk/src/share/classes/sun/font/SunFontManager.java 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/classes/sun/font/SunFontManager.java 2013-05-05 09:38:29.000000000 -0700 @@ -417,7 +417,7 @@ * registerFonts method as on-screen these JRE fonts * always go through the T2K rasteriser. @@ -64723,7 +51410,7 @@ registerFontDir(jreFontDirName); } --- jdk/src/share/classes/sun/invoke/anon/AnonymousClassLoader.java 2012-08-10 10:28:31.000000000 -0700 -+++ jdk/src/share/classes/sun/invoke/anon/AnonymousClassLoader.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/invoke/anon/AnonymousClassLoader.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. @@ -64821,8 +51508,20 @@ // preceding line requires that this class be on the boot class path static private final Method defineAnonymousClass; +--- jdk/src/share/classes/sun/invoke/util/Wrapper.java 2012-08-10 10:28:32.000000000 -0700 ++++ jdk/src/share/classes/sun/invoke/util/Wrapper.java 2013-05-05 09:38:29.000000000 -0700 +@@ -456,6 +456,9 @@ + // If the target type is an interface, perform no runtime check. + // (This loophole is safe, and is allowed by the JVM verifier.) + // If the target type is a primitive, change it to a wrapper. ++ assert(!type.isPrimitive()); ++ if (!type.isInterface()) ++ type.cast(x); + @SuppressWarnings("unchecked") + T result = (T) x; // unchecked warning is expected here + return result; --- jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java 2012-08-10 10:28:43.000000000 -0700 -+++ jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java 2013-05-05 09:38:29.000000000 -0700 @@ -99,50 +99,75 @@ int offset; @@ -65005,7 +51704,7 @@ + } } --- jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSTransform.java 2012-08-10 10:28:43.000000000 -0700 -+++ jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSTransform.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSTransform.java 2013-05-05 09:38:29.000000000 -0700 @@ -51,6 +51,7 @@ import java.awt.image.ComponentSampleModel; import sun.java2d.cmm.*; @@ -65242,8 +51941,112 @@ + } } } +--- jdk/src/share/classes/sun/java2d/opengl/OGLBlitLoops.java 2012-08-10 10:28:44.000000000 -0700 ++++ jdk/src/share/classes/sun/java2d/opengl/OGLBlitLoops.java 2013-05-05 09:38:29.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,6 +25,7 @@ + + package sun.java2d.opengl; + ++import java.awt.AlphaComposite; + import java.awt.Composite; + import java.awt.Transparency; + import java.awt.geom.AffineTransform; +@@ -96,6 +97,8 @@ + CompositeType.AnyAlpha, + blitIntArgbPreToSurface), + ++ new OGLAnyCompositeBlit(OGLSurfaceData.OpenGLSurface), ++ + new OGLSwToSurfaceScale(SurfaceType.IntRgb, + OGLSurfaceData.PF_INT_RGB), + new OGLSwToSurfaceScale(SurfaceType.IntRgbx, +@@ -172,6 +175,9 @@ + new OGLGeneralBlit(OGLSurfaceData.OpenGLTexture, + CompositeType.SrcNoEa, + blitIntArgbPreToTexture), ++ ++ new OGLAnyCompositeBlit(OGLSurfaceData.OpenGLTexture), ++ + }; + GraphicsPrimitiveMgr.register(primitives); + } +@@ -760,3 +766,49 @@ + } + } + } ++ ++class OGLAnyCompositeBlit extends Blit { ++ private WeakReference<SurfaceData> dstTmp; ++ ++ public OGLAnyCompositeBlit(SurfaceType dstType) { ++ super(SurfaceType.Any, CompositeType.Any, dstType); ++ } ++ public synchronized void Blit(SurfaceData src, SurfaceData dst, ++ Composite comp, Region clip, ++ int sx, int sy, int dx, int dy, ++ int w, int h) ++ { ++ Blit convertdst = Blit.getFromCache(dst.getSurfaceType(), ++ CompositeType.SrcNoEa, ++ SurfaceType.IntArgbPre); ++ ++ SurfaceData cachedDst = null; ++ ++ if (dstTmp != null) { ++ // use cached intermediate surface, if available ++ cachedDst = dstTmp.get(); ++ } ++ ++ // convert source to IntArgbPre ++ SurfaceData dstBuffer = convertFrom(convertdst, dst, dx, dy, w, h, ++ cachedDst, BufferedImage.TYPE_INT_ARGB_PRE); ++ ++ Blit performop = Blit.getFromCache(src.getSurfaceType(), ++ CompositeType.Any, dstBuffer.getSurfaceType()); ++ ++ performop.Blit(src, dstBuffer, comp, clip, ++ sx, sy, 0, 0, w, h); ++ ++ if (dstBuffer != cachedDst) { ++ // cache the intermediate surface ++ dstTmp = new WeakReference(dstBuffer); ++ } ++ ++ // now blit the buffer back to the destination ++ convertdst = Blit.getFromCache(dstBuffer.getSurfaceType(), ++ CompositeType.SrcNoEa, ++ dst.getSurfaceType()); ++ convertdst.Blit(dstBuffer, dst, AlphaComposite.Src, ++ clip, 0, 0, dx, dy, w, h); ++ } ++} +--- jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceDataProxy.java 2012-08-10 10:28:44.000000000 -0700 ++++ jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceDataProxy.java 2013-05-05 09:38:29.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * 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,7 @@ + CompositeType comp, + Color bgColor) + { +- return (bgColor == null || transparency == Transparency.OPAQUE); ++ return comp.isDerivedFrom(CompositeType.AnyAlpha) && ++ (bgColor == null || transparency == Transparency.OPAQUE); + } + } --- jdk/src/share/classes/sun/launcher/LauncherHelper.java 2012-08-10 10:28:48.000000000 -0700 -+++ jdk/src/share/classes/sun/launcher/LauncherHelper.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/launcher/LauncherHelper.java 2013-05-05 09:38:29.000000000 -0700 @@ -48,6 +48,9 @@ import java.math.BigDecimal; import java.math.RoundingMode; @@ -65369,7 +52172,7 @@ } + --- jdk/src/share/classes/sun/launcher/resources/launcher.properties 2012-08-10 10:28:48.000000000 -0700 -+++ jdk/src/share/classes/sun/launcher/resources/launcher.properties 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/launcher/resources/launcher.properties 2013-05-05 09:38:29.000000000 -0700 @@ -43,7 +43,7 @@ \ and ZIP archives to search for class files.\n\ \ -D<name>=<value>\n\ @@ -65385,7 +52188,7 @@ java.launcher.jar.error3=no main manifest attribute, in {0} +java.launcher.init.error=initialization error --- jdk/src/share/classes/sun/management/LockDataConverter.java 2012-08-10 10:28:49.000000000 -0700 -+++ jdk/src/share/classes/sun/management/LockDataConverter.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/management/LockDataConverter.java 2013-05-05 09:38:28.000000000 -0700 @@ -27,6 +27,8 @@ import java.lang.management.LockInfo; @@ -65438,7 +52241,7 @@ } + --- jdk/src/share/classes/sun/management/ThreadInfoCompositeData.java 2012-08-10 10:28:50.000000000 -0700 -+++ jdk/src/share/classes/sun/management/ThreadInfoCompositeData.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/management/ThreadInfoCompositeData.java 2013-05-05 09:38:28.000000000 -0700 @@ -85,7 +85,7 @@ } @@ -65467,7 +52270,7 @@ (CompositeData[]) cdata.get(LOCKED_SYNCS); --- jdk/src/share/classes/sun/misc/JavaAWTAccess.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/sun/misc/JavaAWTAccess.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/misc/JavaAWTAccess.java 2013-05-05 09:38:29.000000000 -0700 @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -65512,7 +52315,7 @@ + public boolean isMainAppContext(); +} --- jdk/src/share/classes/sun/misc/Service.java 2012-08-10 10:28:57.000000000 -0700 -+++ jdk/src/share/classes/sun/misc/Service.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/misc/Service.java 2013-05-05 09:38:29.000000000 -0700 @@ -284,12 +284,20 @@ } String cn = nextName; @@ -65537,7 +52340,7 @@ "Provider " + cn + " could not be instantiated: " + x, x); --- jdk/src/share/classes/sun/misc/SharedSecrets.java 2012-08-10 10:28:57.000000000 -0700 -+++ jdk/src/share/classes/sun/misc/SharedSecrets.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/misc/SharedSecrets.java 2013-05-05 09:38:29.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. @@ -65569,7 +52372,7 @@ + } } --- jdk/src/share/classes/sun/net/httpserver/ChunkedInputStream.java 2012-08-10 10:28:59.000000000 -0700 -+++ jdk/src/share/classes/sun/net/httpserver/ChunkedInputStream.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/net/httpserver/ChunkedInputStream.java 2013-05-05 09:38:29.000000000 -0700 @@ -41,8 +41,12 @@ private boolean needToReadHeader = true; @@ -65602,7 +52405,7 @@ } if (gotCR) { --- jdk/src/share/classes/sun/net/www/MessageHeader.java 2012-08-10 10:29:01.000000000 -0700 -+++ jdk/src/share/classes/sun/net/www/MessageHeader.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/net/www/MessageHeader.java 2013-05-05 09:38:30.000000000 -0700 @@ -138,6 +138,43 @@ return null; } @@ -65648,7 +52451,7 @@ int index = 0; int next = -1; --- jdk/src/share/classes/sun/net/www/http/ChunkedInputStream.java 2012-08-10 10:29:01.000000000 -0700 -+++ jdk/src/share/classes/sun/net/www/http/ChunkedInputStream.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/net/www/http/ChunkedInputStream.java 2013-05-05 09:38:29.000000000 -0700 @@ -125,6 +125,11 @@ */ private boolean closed; @@ -65673,7 +52476,7 @@ if (pos >= rawCount) { return; --- jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java 2012-08-10 10:29:02.000000000 -0700 -+++ jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java 2013-05-05 09:38:30.000000000 -0700 @@ -1323,6 +1323,16 @@ if (logger.isLoggable(PlatformLogger.FINE)) { logger.fine(responses.toString()); @@ -65706,7 +52509,7 @@ StringTokenizer st = new StringTokenizer(statusLine); st.nextToken(); --- jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java 2012-08-10 10:29:03.000000000 -0700 -+++ jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java 2013-05-05 09:38:30.000000000 -0700 @@ -419,7 +419,7 @@ synchronized (writeLock) { @@ -65794,7 +52597,7 @@ static { --- jdk/src/share/classes/sun/print/PSPrinterJob.java 2012-08-10 10:29:08.000000000 -0700 -+++ jdk/src/share/classes/sun/print/PSPrinterJob.java 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/classes/sun/print/PSPrinterJob.java 2013-05-05 09:38:30.000000000 -0700 @@ -1537,7 +1537,7 @@ } @@ -65805,22 +52608,72 @@ execCmd[n++] = "/usr/bin/lpr"; if ((pFlags & PRINTER) != 0) { --- jdk/src/share/classes/sun/reflect/misc/MethodUtil.java 2012-08-10 10:29:15.000000000 -0700 -+++ jdk/src/share/classes/sun/reflect/misc/MethodUtil.java 2013-03-09 08:44:48.000000000 -0800 -@@ -256,6 +256,12 @@ ++++ jdk/src/share/classes/sun/reflect/misc/MethodUtil.java 2013-05-05 09:38:30.000000000 -0700 +@@ -50,8 +50,28 @@ + + + class Trampoline { ++ static { ++ if (Trampoline.class.getClassLoader() == null) { ++ throw new Error( ++ "Trampoline must not be defined by the bootstrap classloader"); ++ } ++ } ++ ++ private static void ensureInvocableMethod(Method m) ++ throws InvocationTargetException ++ { ++ Class<?> clazz = m.getDeclaringClass(); ++ if (clazz.equals(AccessController.class) || ++ clazz.equals(Method.class) || ++ clazz.getName().startsWith("java.lang.invoke.")) ++ throw new InvocationTargetException( ++ new UnsupportedOperationException("invocation not supported")); ++ } ++ + private static Object invoke(Method m, Object obj, Object[] params) +- throws InvocationTargetException, IllegalAccessException { ++ throws InvocationTargetException, IllegalAccessException ++ { ++ ensureInvocableMethod(m); + return m.invoke(obj, params); + } + } +@@ -255,10 +275,6 @@ + */ public static Object invoke(Method m, Object obj, Object[] params) throws InvocationTargetException, IllegalAccessException { - if (m.getDeclaringClass().equals(AccessController.class) || -+ (m.getDeclaringClass().equals(java.lang.invoke.MethodHandles.class) -+ && m.getName().equals("lookup")) || -+ (m.getDeclaringClass().equals(java.lang.invoke.MethodHandles.Lookup.class) -+ && (m.getName().startsWith("find") || -+ m.getName().startsWith("bind") || -+ m.getName().startsWith("unreflect"))) || - m.getDeclaringClass().equals(Method.class)) - throw new InvocationTargetException( - new UnsupportedOperationException("invocation not supported")); +- if (m.getDeclaringClass().equals(AccessController.class) || +- m.getDeclaringClass().equals(Method.class)) +- throw new InvocationTargetException( +- new UnsupportedOperationException("invocation not supported")); + try { + return bounce.invoke(null, new Object[] {m, obj, params}); + } catch (InvocationTargetException ie) { +@@ -291,10 +307,10 @@ + Method.class, Object.class, Object[].class + }; + Method b = t.getDeclaredMethod("invoke", types); +- ((AccessibleObject)b).setAccessible(true); +- return b; +- } +- }); ++ b.setAccessible(true); ++ return b; ++ } ++ }); + } catch (Exception e) { + throw new InternalError("bouncer cannot be found"); + } --- jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java 2012-08-10 10:29:15.000000000 -0700 -+++ jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java 2013-05-05 09:38:30.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2005, 2013 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it @@ -144,4 +144,63 @@ } return true; @@ -65886,7 +52739,7 @@ + public static final String PROXY_PACKAGE = "com.sun.proxy"; } --- jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java 2012-08-10 10:29:15.000000000 -0700 -+++ jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java 2013-05-05 09:38:30.000000000 -0700 @@ -405,7 +405,8 @@ */ perms.add(new SocketPermission("*", "connect,accept")); @@ -65897,8 +52750,34 @@ perms.add(new FilePermission("<<ALL FILES>>", "read")); +--- jdk/src/share/classes/sun/rmi/server/MarshalInputStream.java 2012-08-10 10:29:16.000000000 -0700 ++++ jdk/src/share/classes/sun/rmi/server/MarshalInputStream.java 2013-05-05 09:38:30.000000000 -0700 +@@ -55,13 +55,19 @@ + public class MarshalInputStream extends ObjectInputStream { + + /** +- * value of "java.rmi.server.useCodebaseOnly" property, ++ * Value of "java.rmi.server.useCodebaseOnly" property, + * as cached at class initialization time. ++ * ++ * The default value is true. That is, the value is true ++ * if the property is absent or is not equal to "false". ++ * The value is only false when the property is present ++ * and is equal to "false". + */ + private static final boolean useCodebaseOnlyProperty = +- java.security.AccessController.doPrivileged( +- new sun.security.action.GetBooleanAction( +- "java.rmi.server.useCodebaseOnly")).booleanValue(); ++ ! java.security.AccessController.doPrivileged( ++ new sun.security.action.GetPropertyAction( ++ "java.rmi.server.useCodebaseOnly", "true")) ++ .equalsIgnoreCase("false"); + + /** table to hold sun classes to which access is explicitly permitted */ + protected static Map<String, Class<?>> permittedSunClasses --- jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java 2012-08-10 10:29:17.000000000 -0700 -+++ jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved. @@ -65945,7 +52824,7 @@ } while ((line.length() != 0) && (line.charAt(0) != '\r') && (line.charAt(0) != '\n')); --- jdk/src/share/classes/sun/rmi/transport/proxy/HttpInputStream.java 2012-08-10 10:29:17.000000000 -0700 -+++ jdk/src/share/classes/sun/rmi/transport/proxy/HttpInputStream.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/rmi/transport/proxy/HttpInputStream.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2001, Oracle and/or its affiliates. All rights reserved. @@ -65974,7 +52853,7 @@ // The idea here is to go past the first blank line. --- jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java 2012-08-10 10:29:20.000000000 -0700 -+++ jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java 2013-05-05 09:38:30.000000000 -0700 @@ -83,7 +83,8 @@ String osname = System.getProperty("os.name"); if (osname.startsWith("SunOS")) { @@ -65986,7 +52865,7 @@ "libgssapi.so", "libgssapi_krb5.so", --- jdk/src/share/classes/sun/security/pkcs11/P11KeyAgreement.java 2012-08-10 10:29:23.000000000 -0700 -+++ jdk/src/share/classes/sun/security/pkcs11/P11KeyAgreement.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/pkcs11/P11KeyAgreement.java 2013-05-05 09:38:30.000000000 -0700 @@ -37,6 +37,7 @@ import static sun.security.pkcs11.TemplateManager.*; import sun.security.pkcs11.wrapper.*; @@ -66018,7 +52897,7 @@ p = spec.getP(); g = spec.getG(); --- jdk/src/share/classes/sun/security/provider/SecureRandom.java 2012-08-10 10:29:25.000000000 -0700 -+++ jdk/src/share/classes/sun/security/provider/SecureRandom.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/security/provider/SecureRandom.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved. @@ -66084,7 +52963,7 @@ } --- jdk/src/share/classes/sun/security/provider/certpath/OCSPChecker.java 2012-08-10 10:29:26.000000000 -0700 -+++ jdk/src/share/classes/sun/security/provider/certpath/OCSPChecker.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/security/provider/certpath/OCSPChecker.java 2013-05-05 09:38:30.000000000 -0700 @@ -257,18 +257,21 @@ } } @@ -66118,7 +52997,7 @@ issuerCert = anchorCert; --- jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java 2012-08-10 10:29:26.000000000 -0700 -+++ jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java 2013-05-05 09:38:30.000000000 -0700 @@ -264,6 +264,7 @@ DEBUG.println("OCSP Responder name: " + responderName); } @@ -66188,7 +53067,7 @@ continue; // try next cert } --- jdk/src/share/classes/sun/security/ssl/CipherBox.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/CipherBox.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/CipherBox.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. @@ -66506,7 +53385,7 @@ + } --- jdk/src/share/classes/sun/security/ssl/CipherSuite.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/CipherSuite.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/CipherSuite.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. @@ -66552,7 +53431,7 @@ /** * PRFs (PseudoRandom Function) from TLS specifications. --- jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java 2013-05-05 09:38:30.000000000 -0700 @@ -128,9 +128,8 @@ * in the constructor. */ @@ -66589,7 +53468,7 @@ case K_ECDHE_RSA: case K_ECDHE_ECDSA: --- jdk/src/share/classes/sun/security/ssl/DHClientKeyExchange.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/DHClientKeyExchange.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/DHClientKeyExchange.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. @@ -66643,7 +53522,7 @@ void print(PrintStream s) throws IOException { --- jdk/src/share/classes/sun/security/ssl/DHCrypt.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/DHCrypt.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/DHCrypt.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved. @@ -66806,7 +53685,7 @@ + } } --- jdk/src/share/classes/sun/security/ssl/EngineInputRecord.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/EngineInputRecord.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/EngineInputRecord.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. @@ -67041,7 +53920,7 @@ /* --- jdk/src/share/classes/sun/security/ssl/EngineOutputRecord.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/EngineOutputRecord.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/EngineOutputRecord.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. @@ -67059,7 +53938,7 @@ /* * position was advanced to limit in compute above. --- jdk/src/share/classes/sun/security/ssl/HandshakeInStream.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/HandshakeInStream.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/HandshakeInStream.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved. @@ -67104,7 +53983,7 @@ + } --- jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. @@ -67175,7 +54054,7 @@ // read the signature and hash algorithm if (protocolVersion.v >= ProtocolVersion.TLS12.v) { --- jdk/src/share/classes/sun/security/ssl/Handshaker.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/Handshaker.java 2013-01-16 08:58:10.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/Handshaker.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. @@ -67200,7 +54079,7 @@ preMasterSecret = RSAClientKeyExchange.generateDummySecret(requestedVersion); --- jdk/src/share/classes/sun/security/ssl/InputRecord.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/InputRecord.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/InputRecord.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved. @@ -67406,7 +54285,7 @@ /* * Well ... hello_request messages are _never_ hashed since we can't --- jdk/src/share/classes/sun/security/ssl/MAC.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/MAC.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/MAC.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. @@ -67501,7 +54380,7 @@ // content if (bb != null) { --- jdk/src/share/classes/sun/security/ssl/OutputRecord.java 2012-08-10 10:29:27.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/OutputRecord.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/OutputRecord.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -67519,7 +54398,7 @@ } } --- jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java 2012-08-10 10:29:28.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. @@ -67628,7 +54507,7 @@ String s = ((version.v >= ProtocolVersion.TLS12.v) ? "SunTls12RsaPremasterSecret" : "SunTlsRsaPremasterSecret"); --- jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java 2012-08-10 10:29:28.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. @@ -67675,7 +54554,7 @@ // if (!inputRecord.decompress(c)) // fatal(Alerts.alert_decompression_failure, --- jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java 2012-08-10 10:29:28.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java 2013-05-05 09:38:30.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. @@ -67716,7 +54595,7 @@ // if (!r.decompress(c)) // fatal(Alerts.alert_decompression_failure, --- jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java 2012-08-10 10:29:28.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java 2013-05-05 09:38:30.000000000 -0700 @@ -150,7 +150,7 @@ // In SSLv3 and TLS, messages follow strictly increasing // numerical order _except_ for one annoying special case. @@ -67758,7 +54637,7 @@ private SecretKey clientKeyExchange(ECDHClientKeyExchange mesg) --- jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java 2012-08-10 10:29:28.000000000 -0700 -+++ jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java 2013-05-05 09:38:30.000000000 -0700 @@ -38,7 +38,7 @@ import java.util.Collections; import java.util.ArrayList; @@ -67778,7 +54657,7 @@ maxDigestLength = HashAlgorithm.SHA512.length; } else if ((keySize >= 512) && (keySize < 768)) { --- jdk/src/share/classes/sun/security/util/DerIndefLenConverter.java 2012-08-10 10:29:30.000000000 -0700 -+++ jdk/src/share/classes/sun/security/util/DerIndefLenConverter.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/util/DerIndefLenConverter.java 2013-05-05 09:38:31.000000000 -0700 @@ -325,6 +325,10 @@ } } @@ -67791,7 +54670,7 @@ dataPos=0; newDataPos=0; index=0; --- jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java 2012-08-10 10:29:30.000000000 -0700 -+++ jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java 2013-05-05 09:38:31.000000000 -0700 @@ -438,7 +438,7 @@ // Does this key constraint disable the specified key? @@ -67896,7 +54775,7 @@ -} - --- jdk/src/share/classes/sun/security/util/KeyUtil.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/classes/sun/security/util/KeyUtil.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/util/KeyUtil.java 2013-05-05 09:38:31.000000000 -0700 @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -68103,7 +54982,7 @@ +} + --- jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2012-08-10 10:29:31.000000000 -0700 -+++ jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2013-05-05 09:38:31.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -68111,7 +54990,7 @@ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it -@@ -737,5 +737,111 @@ +@@ -737,5 +737,158 @@ "B8WfedLHjFW/TMcnXlEWKz4=\n" + "-----END CERTIFICATE-----"); @@ -68221,10 +55100,57 @@ + "zCOfhbsRWdMLYepauaNZOIMZXmFwcrIl0TGMkTAtATz+XmZc\n" + + "-----END CERTIFICATE-----"); + ++ // ++ // Revoked code signing certificate w/ a stolen key issued by GoDaddy ++ // used to sign malware ++ // ++ ++ // Subject: CN=CLEARESULT CONSULTING INC., OU=Corporate IT, ++ // O=CLEARESULT CONSULTING INC., L=Austin, ST=TX, C=US ++ // Issuer: SERIALNUMBER=07969287, ++ // CN=Go Daddy Secure Certification Authority, ++ // OU=http://certificates.godaddy.com/repository, ++ // O="GoDaddy.com, Inc.", ++ // L=Scottsdale, ++ // ST=Arizona, ++ // C=US ++ // Serial: 2b:73:43:2a:a8:4f:44 ++ add("clearesult-consulting-inc-2AA84F44", ++ "-----BEGIN CERTIFICATE-----\n" + ++ "MIIFYjCCBEqgAwIBAgIHK3NDKqhPRDANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE\n" + ++ "BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY\n" + ++ "BgNVBAoTEUdvRGFkZHkuY29tLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydGlm\n" + ++ "aWNhdGVzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkxMDAuBgNVBAMTJ0dvIERhZGR5\n" + ++ "IFNlY3VyZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTERMA8GA1UEBRMIMDc5Njky\n" + ++ "ODcwHhcNMTIwMjE1MjEwOTA2WhcNMTQwMjE1MjEwOTA2WjCBjDELMAkGA1UEBgwC\n" + ++ "VVMxCzAJBgNVBAgMAlRYMQ8wDQYDVQQHDAZBdXN0aW4xIzAhBgNVBAoMGkNMRUFS\n" + ++ "RVNVTFQgQ09OU1VMVElORyBJTkMuMRUwEwYDVQQLDAxDb3Jwb3JhdGUgSVQxIzAh\n" + ++ "BgNVBAMMGkNMRUFSRVNVTFQgQ09OU1VMVElORyBJTkMuMIIBIjANBgkqhkiG9w0B\n" + ++ "AQEFAAOCAQ8AMIIBCgKCAQEAtIOjCKeAicull+7ZIzt0/4ya3IeXUFlfypqKMLkU\n" + ++ "IbKjn0P5uMj6VE3rlbZr44RCegxvdnR6umBh1c0ZXoN3o+yc0JKcKcLiApmJJ277\n" + ++ "p7IbLwYDhBXRQNoIJm187IOMRPIxsKN4hL91txn9jGBmW+9zKlJlNhR5R7vjwU2E\n" + ++ "jrH/6oqsc9EM2yYpfjlNv6+3jSwAYZCkSWr+27PQOV+YHKmIxtJjX0upFz5FdIrV\n" + ++ "9CCX+L2Kji1THOkSgG4QTbYxmEcHqGViWz8hXLeNXjcbEsPuIiAu3hknxRHfUTE/\n" + ++ "U0Lh0Ug1e3LrJu+WnxM2SmUY4krsZ22c0yWUW9hzWITIjQIDAQABo4IBhzCCAYMw\n" + ++ "DwYDVR0TAQH/BAUwAwEBADATBgNVHSUEDDAKBggrBgEFBQcDAzAOBgNVHQ8BAf8E\n" + ++ "BAMCB4AwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nb2RhZGR5LmNvbS9n\n" + ++ "ZHM1LTE2LmNybDBTBgNVHSAETDBKMEgGC2CGSAGG/W0BBxcCMDkwNwYIKwYBBQUH\n" + ++ "AgEWK2h0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS8w\n" + ++ "gYAGCCsGAQUFBwEBBHQwcjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZ29kYWRk\n" + ++ "eS5jb20vMEoGCCsGAQUFBzAChj5odHRwOi8vY2VydGlmaWNhdGVzLmdvZGFkZHku\n" + ++ "Y29tL3JlcG9zaXRvcnkvZ2RfaW50ZXJtZWRpYXRlLmNydDAfBgNVHSMEGDAWgBT9\n" + ++ "rGEyk2xF1uLuhV+auud2mWjM5zAdBgNVHQ4EFgQUDtdeKqeN2QkcbEp1HovFieNB\n" + ++ "XiowDQYJKoZIhvcNAQEFBQADggEBAD74Agw5tvi2aBl4/f/s7/VE/BClzDsKMb9K\n" + ++ "v9qpeC45ZA/jelxV11HKbQnVF194gDb7D2H9OsAsRUy8HVKbXEcc/8dKvwOqb+BC\n" + ++ "2i/EmfjLgmCfezNFtLq8xcPxF3zIRc44vPrK0z4YZsaHdH+yTEJ51p5EMdTqaLaP\n" + ++ "4n5m8LX3RfqlQB9dYFe6dUoYZjKm9d/pIRww3VqfOzjl42Edi1w6dWmBVMx1NZuR\n" + ++ "DBabJH1vJ9Gd+KwxMCmBZ6pQPl28JDimhJhI2LNqU349uADQVV0HJosddN/ARyyI\n" + ++ "LSIQO7BnNVKVG9Iujf33bvPNeg0qNz5qw+rKKq97Pqeum+L5oKU=\n" + ++ "-----END CERTIFICATE-----"); } } --- jdk/src/share/classes/sun/swing/FilePane.java 2012-08-10 10:29:34.000000000 -0700 -+++ jdk/src/share/classes/sun/swing/FilePane.java 2013-01-16 00:07:14.000000000 -0800 ++++ jdk/src/share/classes/sun/swing/FilePane.java 2013-05-05 09:38:31.000000000 -0700 @@ -35,7 +35,6 @@ import java.util.List; import java.util.concurrent.Callable; @@ -68273,7 +55199,7 @@ } // createDetailsView --- jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider 2012-08-10 10:29:42.000000000 -0700 -+++ jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider 2013-05-05 09:38:31.000000000 -0700 @@ -30,4 +30,5 @@ #[solaris]sun.tools.attach.SolarisAttachProvider #[windows]sun.tools.attach.WindowsAttachProvider @@ -68281,7 +55207,7 @@ +#[bsd]sun.tools.attach.BsdAttachProvider #[macosx]sun.tools.attach.BsdAttachProvider --- jdk/src/share/classes/sun/tools/jar/Main.java 2012-08-10 10:29:42.000000000 -0700 -+++ jdk/src/share/classes/sun/tools/jar/Main.java 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/classes/sun/tools/jar/Main.java 2013-05-05 09:38:31.000000000 -0700 @@ -51,6 +51,7 @@ String zname = ""; String[] files; @@ -68353,7 +55279,7 @@ throw new IOException(formatMsg( "error.create.dir", d.getPath())); --- jdk/src/share/classes/sun/tools/jar/resources/jar.properties 2012-08-10 10:29:42.000000000 -0700 -+++ jdk/src/share/classes/sun/tools/jar/resources/jar.properties 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/classes/sun/tools/jar/resources/jar.properties 2013-05-05 09:38:31.000000000 -0700 @@ -44,6 +44,8 @@ {0} : could not create directory error.incorrect.length=\ @@ -68364,7 +55290,7 @@ added manifest out.update.manifest=\ --- jdk/src/share/demo/jvmti/compiledMethodLoad/sample.makefile.txt 2012-08-10 10:30:07.000000000 -0700 -+++ jdk/src/share/demo/jvmti/compiledMethodLoad/sample.makefile.txt 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/demo/jvmti/compiledMethodLoad/sample.makefile.txt 2013-05-05 09:38:38.000000000 -0700 @@ -38,6 +38,7 @@ # gnumake JDK=<java_home> OSNAME=solaris [OPT=true] [LIBARCH=sparcv9] # gnumake JDK=<java_home> OSNAME=linux [OPT=true] @@ -68404,177 +55330,275 @@ CFLAGS += -I. CFLAGS += -I../agent_util --- jdk/src/share/lib/security/java.security 2012-08-10 10:30:16.000000000 -0700 -+++ jdk/src/share/lib/security/java.security 2013-03-09 08:44:48.000000000 -0800 -@@ -123,7 +123,18 @@ ++++ jdk/src/share/lib/security/java.security 2013-05-05 09:38:38.000000000 -0700 +@@ -123,7 +123,30 @@ # passed to checkPackageAccess unless the # corresponding RuntimePermission ("accessClassInPackage."+package) has # been granted. -package.access=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils. +package.access=sun.,\ -+ com.sun.xml.internal.bind.,\ -+ com.sun.xml.internal.org.jvnet.staxex.,\ -+ com.sun.xml.internal.ws.,\ ++ com.sun.xml.internal.,\ + com.sun.imageio.,\ + com.sun.istack.internal.,\ + com.sun.jmx.,\ + com.sun.proxy.,\ -+ com.sun.org.apache.xerces.internal.utils.,\ ++ com.sun.org.apache.bcel.internal.,\ ++ com.sun.org.apache.regexp.internal.,\ ++ com.sun.org.apache.xerces.internal.,\ ++ com.sun.org.apache.xpath.internal.,\ ++ com.sun.org.apache.xalan.internal.extensions.,\ ++ com.sun.org.apache.xalan.internal.lib.,\ ++ com.sun.org.apache.xalan.internal.res.,\ ++ com.sun.org.apache.xalan.internal.templates.,\ + com.sun.org.apache.xalan.internal.utils.,\ -+ com.sun.org.glassfish.external.,\ -+ com.sun.org.glassfish.gmbal. ++ com.sun.org.apache.xalan.internal.xslt.,\ ++ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ ++ com.sun.org.apache.xalan.internal.xsltc.compiler.,\ ++ com.sun.org.apache.xalan.internal.xsltc.trax.,\ ++ com.sun.org.apache.xalan.internal.xsltc.util.,\ ++ com.sun.org.apache.xml.internal.res.,\ ++ com.sun.org.apache.xml.internal.serializer.utils.,\ ++ com.sun.org.apache.xml.internal.utils.,\ ++ com.sun.org.glassfish. # # List of comma-separated packages that start with or equal this string -@@ -135,7 +146,18 @@ +@@ -135,7 +158,30 @@ # by default, none of the class loaders supplied with the JDK call # checkPackageDefinition. # -package.definition=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils. +package.definition=sun.,\ -+ com.sun.xml.internal.bind.,\ -+ com.sun.xml.internal.org.jvnet.staxex.,\ -+ com.sun.xml.internal.ws.,\ ++ com.sun.xml.internal.,\ + com.sun.imageio.,\ + com.sun.istack.internal.,\ + com.sun.jmx.,\ + com.sun.proxy.,\ -+ com.sun.org.apache.xerces.internal.utils.,\ ++ com.sun.org.apache.bcel.internal.,\ ++ com.sun.org.apache.regexp.internal.,\ ++ com.sun.org.apache.xerces.internal.,\ ++ com.sun.org.apache.xpath.internal.,\ ++ com.sun.org.apache.xalan.internal.extensions.,\ ++ com.sun.org.apache.xalan.internal.lib.,\ ++ com.sun.org.apache.xalan.internal.res.,\ ++ com.sun.org.apache.xalan.internal.templates.,\ + com.sun.org.apache.xalan.internal.utils.,\ -+ com.sun.org.glassfish.external.,\ -+ com.sun.org.glassfish.gmbal. ++ com.sun.org.apache.xalan.internal.xslt.,\ ++ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ ++ com.sun.org.apache.xalan.internal.xsltc.compiler.,\ ++ com.sun.org.apache.xalan.internal.xsltc.trax.,\ ++ com.sun.org.apache.xalan.internal.xsltc.util.,\ ++ com.sun.org.apache.xml.internal.res.,\ ++ com.sun.org.apache.xml.internal.serializer.utils.,\ ++ com.sun.org.apache.xml.internal.utils.,\ ++ com.sun.org.glassfish. # # Determines whether this properties file can be appended to --- jdk/src/share/lib/security/java.security-macosx 2012-08-10 10:30:16.000000000 -0700 -+++ jdk/src/share/lib/security/java.security-macosx 2013-03-09 08:44:48.000000000 -0800 -@@ -124,7 +124,19 @@ ++++ jdk/src/share/lib/security/java.security-macosx 2013-05-05 09:38:38.000000000 -0700 +@@ -124,7 +124,31 @@ # passed to checkPackageAccess unless the # corresponding RuntimePermission ("accessClassInPackage."+package) has # been granted. -package.access=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,apple. +package.access=sun.,\ -+ com.sun.xml.internal.bind.,\ -+ com.sun.xml.internal.org.jvnet.staxex.,\ -+ com.sun.xml.internal.ws.,\ ++ com.sun.xml.internal.,\ + com.sun.imageio.,\ + com.sun.istack.internal.,\ + com.sun.jmx.,\ + com.sun.proxy.,\ -+ com.sun.org.apache.xerces.internal.utils.,\ ++ com.sun.org.apache.bcel.internal.,\ ++ com.sun.org.apache.regexp.internal.,\ ++ com.sun.org.apache.xerces.internal.,\ ++ com.sun.org.apache.xpath.internal.,\ ++ com.sun.org.apache.xalan.internal.extensions.,\ ++ com.sun.org.apache.xalan.internal.lib.,\ ++ com.sun.org.apache.xalan.internal.res.,\ ++ com.sun.org.apache.xalan.internal.templates.,\ + com.sun.org.apache.xalan.internal.utils.,\ -+ com.sun.org.glassfish.external.,\ -+ com.sun.org.glassfish.gmbal.,\ ++ com.sun.org.apache.xalan.internal.xslt.,\ ++ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ ++ com.sun.org.apache.xalan.internal.xsltc.compiler.,\ ++ com.sun.org.apache.xalan.internal.xsltc.trax.,\ ++ com.sun.org.apache.xalan.internal.xsltc.util.,\ ++ com.sun.org.apache.xml.internal.res.,\ ++ com.sun.org.apache.xml.internal.serializer.utils.,\ ++ com.sun.org.apache.xml.internal.utils.,\ ++ com.sun.org.glassfish.,\ + apple. # # List of comma-separated packages that start with or equal this string -@@ -136,7 +148,19 @@ +@@ -136,7 +160,31 @@ # by default, none of the class loaders supplied with the JDK call # checkPackageDefinition. # -package.definition=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,apple. +package.definition=sun.,\ -+ com.sun.xml.internal.bind.,\ -+ com.sun.xml.internal.org.jvnet.staxex.,\ -+ com.sun.xml.internal.ws.,\ ++ com.sun.xml.internal.,\ + com.sun.imageio.,\ + com.sun.istack.internal.,\ + com.sun.jmx.,\ + com.sun.proxy.,\ -+ com.sun.org.apache.xerces.internal.utils.,\ ++ com.sun.org.apache.bcel.internal.,\ ++ com.sun.org.apache.regexp.internal.,\ ++ com.sun.org.apache.xerces.internal.,\ ++ com.sun.org.apache.xpath.internal.,\ ++ com.sun.org.apache.xalan.internal.extensions.,\ ++ com.sun.org.apache.xalan.internal.lib.,\ ++ com.sun.org.apache.xalan.internal.res.,\ ++ com.sun.org.apache.xalan.internal.templates.,\ + com.sun.org.apache.xalan.internal.utils.,\ -+ com.sun.org.glassfish.external.,\ -+ com.sun.org.glassfish.gmbal.,\ ++ com.sun.org.apache.xalan.internal.xslt.,\ ++ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ ++ com.sun.org.apache.xalan.internal.xsltc.compiler.,\ ++ com.sun.org.apache.xalan.internal.xsltc.trax.,\ ++ com.sun.org.apache.xalan.internal.xsltc.util.,\ ++ com.sun.org.apache.xml.internal.res.,\ ++ com.sun.org.apache.xml.internal.serializer.utils.,\ ++ com.sun.org.apache.xml.internal.utils.,\ ++ com.sun.org.glassfish.,\ + apple. # # Determines whether this properties file can be appended to --- jdk/src/share/lib/security/java.security-solaris 2012-08-10 10:30:16.000000000 -0700 -+++ jdk/src/share/lib/security/java.security-solaris 2013-03-09 08:44:48.000000000 -0800 -@@ -125,7 +125,18 @@ ++++ jdk/src/share/lib/security/java.security-solaris 2013-05-05 09:38:38.000000000 -0700 +@@ -125,7 +125,30 @@ # passed to checkPackageAccess unless the # corresponding RuntimePermission ("accessClassInPackage."+package) has # been granted. -package.access=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils. +package.access=sun.,\ -+ com.sun.xml.internal.bind.,\ -+ com.sun.xml.internal.org.jvnet.staxex.,\ -+ com.sun.xml.internal.ws.,\ ++ com.sun.xml.internal.,\ + com.sun.imageio.,\ + com.sun.istack.internal.,\ + com.sun.jmx.,\ + com.sun.proxy.,\ -+ com.sun.org.apache.xerces.internal.utils.,\ ++ com.sun.org.apache.bcel.internal.,\ ++ com.sun.org.apache.regexp.internal.,\ ++ com.sun.org.apache.xerces.internal.,\ ++ com.sun.org.apache.xpath.internal.,\ ++ com.sun.org.apache.xalan.internal.extensions.,\ ++ com.sun.org.apache.xalan.internal.lib.,\ ++ com.sun.org.apache.xalan.internal.res.,\ ++ com.sun.org.apache.xalan.internal.templates.,\ + com.sun.org.apache.xalan.internal.utils.,\ -+ com.sun.org.glassfish.external.,\ -+ com.sun.org.glassfish.gmbal. ++ com.sun.org.apache.xalan.internal.xslt.,\ ++ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ ++ com.sun.org.apache.xalan.internal.xsltc.compiler.,\ ++ com.sun.org.apache.xalan.internal.xsltc.trax.,\ ++ com.sun.org.apache.xalan.internal.xsltc.util.,\ ++ com.sun.org.apache.xml.internal.res.,\ ++ com.sun.org.apache.xml.internal.serializer.utils.,\ ++ com.sun.org.apache.xml.internal.utils.,\ ++ com.sun.org.glassfish. # # List of comma-separated packages that start with or equal this string -@@ -137,7 +148,18 @@ +@@ -137,7 +160,30 @@ # by default, none of the class loaders supplied with the JDK call # checkPackageDefinition. # -package.definition=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils. +package.definition=sun.,\ -+ com.sun.xml.internal.bind.,\ -+ com.sun.xml.internal.org.jvnet.staxex.,\ -+ com.sun.xml.internal.ws.,\ ++ com.sun.xml.internal.,\ + com.sun.imageio.,\ + com.sun.istack.internal.,\ + com.sun.jmx.,\ + com.sun.proxy.,\ -+ com.sun.org.apache.xerces.internal.utils.,\ ++ com.sun.org.apache.bcel.internal.,\ ++ com.sun.org.apache.regexp.internal.,\ ++ com.sun.org.apache.xerces.internal.,\ ++ com.sun.org.apache.xpath.internal.,\ ++ com.sun.org.apache.xalan.internal.extensions.,\ ++ com.sun.org.apache.xalan.internal.lib.,\ ++ com.sun.org.apache.xalan.internal.res.,\ ++ com.sun.org.apache.xalan.internal.templates.,\ + com.sun.org.apache.xalan.internal.utils.,\ -+ com.sun.org.glassfish.external.,\ -+ com.sun.org.glassfish.gmbal. ++ com.sun.org.apache.xalan.internal.xslt.,\ ++ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ ++ com.sun.org.apache.xalan.internal.xsltc.compiler.,\ ++ com.sun.org.apache.xalan.internal.xsltc.trax.,\ ++ com.sun.org.apache.xalan.internal.xsltc.util.,\ ++ com.sun.org.apache.xml.internal.res.,\ ++ com.sun.org.apache.xml.internal.serializer.utils.,\ ++ com.sun.org.apache.xml.internal.utils.,\ ++ com.sun.org.glassfish. # # Determines whether this properties file can be appended to --- jdk/src/share/lib/security/java.security-windows 2012-08-10 10:30:16.000000000 -0700 -+++ jdk/src/share/lib/security/java.security-windows 2013-03-09 08:44:48.000000000 -0800 -@@ -124,7 +124,18 @@ ++++ jdk/src/share/lib/security/java.security-windows 2013-05-05 09:38:38.000000000 -0700 +@@ -124,7 +124,31 @@ # passed to checkPackageAccess unless the # corresponding RuntimePermission ("accessClassInPackage."+package) has # been granted. -package.access=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils. +package.access=sun.,\ -+ com.sun.xml.internal.bind.,\ -+ com.sun.xml.internal.org.jvnet.staxex.,\ -+ com.sun.xml.internal.ws.,\ ++ com.sun.xml.internal.,\ + com.sun.imageio.,\ + com.sun.istack.internal.,\ + com.sun.jmx.,\ + com.sun.proxy.,\ -+ com.sun.org.apache.xerces.internal.utils.,\ ++ com.sun.org.apache.bcel.internal.,\ ++ com.sun.org.apache.regexp.internal.,\ ++ com.sun.org.apache.xerces.internal.,\ ++ com.sun.org.apache.xpath.internal.,\ ++ com.sun.org.apache.xalan.internal.extensions.,\ ++ com.sun.org.apache.xalan.internal.lib.,\ ++ com.sun.org.apache.xalan.internal.res.,\ ++ com.sun.org.apache.xalan.internal.templates.,\ + com.sun.org.apache.xalan.internal.utils.,\ -+ com.sun.org.glassfish.external.,\ -+ com.sun.org.glassfish.gmbal. ++ com.sun.org.apache.xalan.internal.xslt.,\ ++ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ ++ com.sun.org.apache.xalan.internal.xsltc.compiler.,\ ++ com.sun.org.apache.xalan.internal.xsltc.trax.,\ ++ com.sun.org.apache.xalan.internal.xsltc.util.,\ ++ com.sun.org.apache.xml.internal.res.,\ ++ com.sun.org.apache.xml.internal.serializer.utils.,\ ++ com.sun.org.apache.xml.internal.utils.,\ ++ com.sun.org.glassfish.,\ ++ com.sun.java.accessibility. # # List of comma-separated packages that start with or equal this string -@@ -136,7 +147,18 @@ +@@ -136,7 +160,31 @@ # by default, none of the class loaders supplied with the JDK call # checkPackageDefinition. # -package.definition=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils. +package.definition=sun.,\ -+ com.sun.xml.internal.bind.,\ -+ com.sun.xml.internal.org.jvnet.staxex.,\ -+ com.sun.xml.internal.ws.,\ ++ com.sun.xml.internal.,\ + com.sun.imageio.,\ + com.sun.istack.internal.,\ + com.sun.jmx.,\ + com.sun.proxy.,\ -+ com.sun.org.apache.xerces.internal.utils.,\ ++ com.sun.org.apache.bcel.internal.,\ ++ com.sun.org.apache.regexp.internal.,\ ++ com.sun.org.apache.xerces.internal.,\ ++ com.sun.org.apache.xpath.internal.,\ ++ com.sun.org.apache.xalan.internal.extensions.,\ ++ com.sun.org.apache.xalan.internal.lib.,\ ++ com.sun.org.apache.xalan.internal.res.,\ ++ com.sun.org.apache.xalan.internal.templates.,\ + com.sun.org.apache.xalan.internal.utils.,\ -+ com.sun.org.glassfish.external.,\ -+ com.sun.org.glassfish.gmbal. ++ com.sun.org.apache.xalan.internal.xslt.,\ ++ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ ++ com.sun.org.apache.xalan.internal.xsltc.compiler.,\ ++ com.sun.org.apache.xalan.internal.xsltc.trax.,\ ++ com.sun.org.apache.xalan.internal.xsltc.util.,\ ++ com.sun.org.apache.xml.internal.res.,\ ++ com.sun.org.apache.xml.internal.serializer.utils.,\ ++ com.sun.org.apache.xml.internal.utils.,\ ++ com.sun.org.glassfish.,\ ++ com.sun.java.accessibility. # # Determines whether this properties file can be appended to --- jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp 2012-08-10 10:30:16.000000000 -0700 -+++ jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp 2013-05-05 09:38:38.000000000 -0700 @@ -187,6 +187,10 @@ entry* band::getRefCommon(cpindex* ix_, bool nullOKwithCaller) { @@ -68587,7 +55611,7 @@ || (ixTag == CONSTANT_Literal && ix_->ixTag >= CONSTANT_Integer --- jdk/src/share/native/com/sun/java/util/jar/pack/bands.h 2012-08-10 10:30:16.000000000 -0700 -+++ jdk/src/share/native/com/sun/java/util/jar/pack/bands.h 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/native/com/sun/java/util/jar/pack/bands.h 2013-05-05 09:38:38.000000000 -0700 @@ -101,8 +101,8 @@ int getByte() { assert(ix == null); return vs[0].getByte(); } @@ -68600,7 +55624,7 @@ { assert(ix == null); return getRefCommon(ix2, true); } entry* getRefCommon(cpindex* ix, bool nullOK); --- jdk/src/share/native/com/sun/java/util/jar/pack/defines.h 2012-08-10 10:30:16.000000000 -0700 -+++ jdk/src/share/native/com/sun/java/util/jar/pack/defines.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/com/sun/java/util/jar/pack/defines.h 2013-05-05 09:38:38.000000000 -0700 @@ -93,7 +93,7 @@ // bytes and byte arrays @@ -68611,7 +55635,7 @@ typedef unsigned int uLong; // Historical zlib, should be 32-bit. #else --- jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp 2012-08-10 10:30:16.000000000 -0700 -+++ jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp 2013-05-05 09:38:38.000000000 -0700 @@ -50,6 +50,7 @@ static jmethodID currentInstMID; static jmethodID readInputMID; @@ -68727,7 +55751,7 @@ JNIEXPORT jlong JNICALL --- jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp 2012-08-10 10:30:16.000000000 -0700 -+++ jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp 2013-05-05 09:38:38.000000000 -0700 @@ -267,11 +267,13 @@ } @@ -68909,7 +55933,7 @@ if (global_ic != null) { if (global_ic->flags != extra_ic.flags || --- jdk/src/share/native/com/sun/media/sound/SoundDefs.h 2012-08-10 10:30:18.000000000 -0700 -+++ jdk/src/share/native/com/sun/media/sound/SoundDefs.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/com/sun/media/sound/SoundDefs.h 2013-05-05 09:38:38.000000000 -0700 @@ -64,7 +64,7 @@ @@ -68920,7 +55944,7 @@ #endif --- jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h 2012-08-10 10:30:19.000000000 -0700 -+++ jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h 2013-05-05 09:38:38.000000000 -0700 @@ -24,6 +24,9 @@ * questions. */ @@ -68944,8 +55968,512 @@ #ifdef __NEWVALID /* special setup for Sun test regime */ #if defined(i386) || defined(i486) || \ defined(intel) || defined(x86) || defined(arm) || \ +--- jdk/src/share/native/java/net/InetAddress.c 2012-08-10 10:30:21.000000000 -0700 ++++ jdk/src/share/native/java/net/InetAddress.c 2013-05-05 09:38:38.000000000 -0700 +@@ -33,8 +33,11 @@ + */ + + jclass ia_class; +-jfieldID ia_addressID; +-jfieldID ia_familyID; ++jclass iac_class; ++jfieldID ia_holderID; ++jfieldID iac_addressID; ++jfieldID iac_familyID; ++jfieldID iac_hostNameID; + jfieldID ia_preferIPv6AddressID; + + /* +@@ -48,10 +51,18 @@ + CHECK_NULL(c); + ia_class = (*env)->NewGlobalRef(env, c); + CHECK_NULL(ia_class); +- ia_addressID = (*env)->GetFieldID(env, ia_class, "address", "I"); +- CHECK_NULL(ia_addressID); +- ia_familyID = (*env)->GetFieldID(env, ia_class, "family", "I"); +- CHECK_NULL(ia_familyID); ++ c = (*env)->FindClass(env,"java/net/InetAddress$InetAddressHolder"); ++ CHECK_NULL(c); ++ iac_class = (*env)->NewGlobalRef(env, c); ++ ia_holderID = (*env)->GetFieldID(env, ia_class, "holder", "Ljava/net/InetAddress$InetAddressHolder;"); ++ CHECK_NULL(ia_holderID); + ia_preferIPv6AddressID = (*env)->GetStaticFieldID(env, ia_class, "preferIPv6Address", "Z"); + CHECK_NULL(ia_preferIPv6AddressID); ++ ++ iac_addressID = (*env)->GetFieldID(env, iac_class, "address", "I"); ++ CHECK_NULL(iac_addressID); ++ iac_familyID = (*env)->GetFieldID(env, iac_class, "family", "I"); ++ CHECK_NULL(iac_familyID); ++ iac_hostNameID = (*env)->GetFieldID(env, iac_class, "hostName", "Ljava/lang/String;"); ++ CHECK_NULL(iac_hostNameID); + } +--- jdk/src/share/native/java/net/net_util.c 2012-08-10 10:30:21.000000000 -0700 ++++ jdk/src/share/native/java/net/net_util.c 2013-05-05 09:38:38.000000000 -0700 +@@ -84,6 +84,58 @@ + } + } + ++/* The address, and family fields used to be in InetAddress ++ * but are now in an implementation object. So, there is an extra ++ * level of indirection to access them now. ++ */ ++ ++extern jclass iac_class; ++extern jfieldID ia_holderID; ++extern jfieldID iac_addressID; ++extern jfieldID iac_familyID; ++ ++void setInetAddress_addr(JNIEnv *env, jobject iaObj, int address) { ++ jobject holder; ++ init(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); ++ (*env)->SetIntField(env, holder, iac_addressID, address); ++} ++ ++void setInetAddress_family(JNIEnv *env, jobject iaObj, int family) { ++ jobject holder; ++ init(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); ++ (*env)->SetIntField(env, holder, iac_familyID, family); ++} ++ ++void setInetAddress_hostName(JNIEnv *env, jobject iaObj, jobject host) { ++ jobject holder; ++ init(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); ++ (*env)->SetObjectField(env, holder, iac_hostNameID, host); ++} ++ ++int getInetAddress_addr(JNIEnv *env, jobject iaObj) { ++ jobject holder; ++ init(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); ++ return (*env)->GetIntField(env, holder, iac_addressID); ++} ++ ++int getInetAddress_family(JNIEnv *env, jobject iaObj) { ++ jobject holder; ++ init(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); ++ return (*env)->GetIntField(env, holder, iac_familyID); ++} ++ ++jobject getInetAddress_hostName(JNIEnv *env, jobject iaObj) { ++ jobject holder; ++ init(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); ++ return (*env)->GetObjectField(env, holder, iac_hostNameID); ++} ++ + JNIEXPORT jobject JNICALL + NET_SockaddrToInetAddress(JNIEnv *env, struct sockaddr *him, int *port) { + jobject iaObj; +@@ -110,8 +162,8 @@ + iaObj = (*env)->NewObject(env, inet4Cls, ia4_ctrID); + CHECK_NULL_RETURN(iaObj, NULL); + address = NET_IPv4MappedToIPv4(caddr); +- (*env)->SetIntField(env, iaObj, ia_addressID, address); +- (*env)->SetIntField(env, iaObj, ia_familyID, IPv4); ++ setInetAddress_addr(env, iaObj, address); ++ setInetAddress_family(env, iaObj, IPv4); + } else { + static jclass inet6Cls = 0; + jint scope; +@@ -131,7 +183,7 @@ + + (*env)->SetObjectField(env, iaObj, ia6_ipaddressID, ipaddress); + +- (*env)->SetIntField(env, iaObj, ia_familyID, IPv6); ++ setInetAddress_family(env, iaObj, IPv6); + scope = getScopeID(him); + (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope); + if (scope > 0) +@@ -153,9 +205,8 @@ + } + iaObj = (*env)->NewObject(env, inet4Cls, ia4_ctrID); + CHECK_NULL_RETURN(iaObj, NULL); +- (*env)->SetIntField(env, iaObj, ia_familyID, IPv4); +- (*env)->SetIntField(env, iaObj, ia_addressID, +- ntohl(him4->sin_addr.s_addr)); ++ setInetAddress_family(env, iaObj, IPv4); ++ setInetAddress_addr(env, iaObj, ntohl(him4->sin_addr.s_addr)); + *port = ntohs(him4->sin_port); + } + return iaObj; +@@ -167,8 +218,7 @@ + jint family = AF_INET; + + #ifdef AF_INET6 +- family = (*env)->GetIntField(env, iaObj, ia_familyID) == IPv4? +- AF_INET : AF_INET6; ++ family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6; + if (him->sa_family == AF_INET6) { + #ifdef WIN32 + struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him; +@@ -183,7 +233,7 @@ + return JNI_FALSE; + } + addrNew = NET_IPv4MappedToIPv4(caddrNew); +- addrCur = (*env)->GetIntField(env, iaObj, ia_addressID); ++ addrCur = getInetAddress_addr(env, iaObj); + if (addrNew == addrCur) { + return JNI_TRUE; + } else { +@@ -215,7 +265,7 @@ + return JNI_FALSE; + } + addrNew = ntohl(him4->sin_addr.s_addr); +- addrCur = (*env)->GetIntField(env, iaObj, ia_addressID); ++ addrCur = getInetAddress_addr(env, iaObj); + if (addrNew == addrCur) { + return JNI_TRUE; + } else { +--- jdk/src/share/native/java/net/net_util.h 2012-08-10 10:30:21.000000000 -0700 ++++ jdk/src/share/native/java/net/net_util.h 2013-05-05 09:38:38.000000000 -0700 +@@ -53,10 +53,18 @@ + * i.e. psi_timeoutID is PlainSocketImpl's timeout field's ID. + */ + extern jclass ia_class; +-extern jfieldID ia_addressID; +-extern jfieldID ia_familyID; ++extern jfieldID iac_addressID; ++extern jfieldID iac_familyID; ++extern jfieldID iac_hostNameID; + extern jfieldID ia_preferIPv6AddressID; + ++extern void setInetAddress_addr(JNIEnv *env, jobject iaObj, int address); ++extern void setInetAddress_family(JNIEnv *env, jobject iaObj, int family); ++extern void setInetAddress_hostName(JNIEnv *env, jobject iaObj, jobject h); ++extern int getInetAddress_addr(JNIEnv *env, jobject iaObj); ++extern int getInetAddress_family(JNIEnv *env, jobject iaObj); ++extern jobject getInetAddress_hostName(JNIEnv *env, jobject iaObj); ++ + extern jclass ia4_class; + extern jmethodID ia4_ctrID; + +--- jdk/src/share/native/sun/awt/image/awt_ImageRep.c 2012-08-10 10:30:22.000000000 -0700 ++++ jdk/src/share/native/sun/awt/image/awt_ImageRep.c 2013-05-05 09:38:39.000000000 -0700 +@@ -45,6 +45,53 @@ + # define TRUE 1 + #endif + ++#define CHECK_STRIDE(yy, hh, ss) \ ++ if ((ss) != 0) { \ ++ int limit = 0x7fffffff / ((ss) > 0 ? (ss) : -(ss)); \ ++ if (limit < (yy) || limit < ((yy) + (hh) - 1)) { \ ++ /* integer oveflow */ \ ++ return JNI_FALSE; \ ++ } \ ++ } \ ++ ++#define CHECK_SRC() \ ++ do { \ ++ int pixeloffset; \ ++ if (off < 0 || off >= srcDataLength) { \ ++ return JNI_FALSE; \ ++ } \ ++ CHECK_STRIDE(0, h, scansize); \ ++ \ ++ /* check scansize */ \ ++ pixeloffset = scansize * (h - 1); \ ++ if ((w - 1) > (0x7fffffff - pixeloffset)) { \ ++ return JNI_FALSE; \ ++ } \ ++ pixeloffset += (w - 1); \ ++ \ ++ if (off > (0x7fffffff - pixeloffset)) { \ ++ return JNI_FALSE; \ ++ } \ ++ } while (0) \ ++ ++#define CHECK_DST(xx, yy) \ ++ do { \ ++ int soffset = (yy) * sStride; \ ++ int poffset = (xx) * pixelStride; \ ++ if (poffset > (0x7fffffff - soffset)) { \ ++ return JNI_FALSE; \ ++ } \ ++ poffset += soffset; \ ++ if (dstDataOff > (0x7fffffff - poffset)) { \ ++ return JNI_FALSE; \ ++ } \ ++ poffset += dstDataOff; \ ++ \ ++ if (poffset < 0 || poffset >= dstDataLength) { \ ++ return JNI_FALSE; \ ++ } \ ++ } while (0) \ ++ + static jfieldID s_JnumSrcLUTID; + static jfieldID s_JsrcLUTtransIndexID; + +@@ -58,7 +105,7 @@ + /* + * This routine is used to draw ICM pixels into a default color model + */ +-JNIEXPORT void JNICALL ++JNIEXPORT jboolean JNICALL + Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls, + jint x, jint y, jint w, + jint h, jintArray jlut, +@@ -67,7 +114,10 @@ + jobject jict) + { + unsigned char *srcData = NULL; ++ jint srcDataLength; + int *dstData; ++ jint dstDataLength; ++ jint dstDataOff; + int *dstP, *dstyP; + unsigned char *srcyP, *srcP; + int *srcLUT = NULL; +@@ -80,12 +130,20 @@ + + if (JNU_IsNull(env, jlut)) { + JNU_ThrowNullPointerException(env, "NullPointerException"); +- return; ++ return JNI_FALSE; + } + + if (JNU_IsNull(env, jpix)) { + JNU_ThrowNullPointerException(env, "NullPointerException"); +- return; ++ return JNI_FALSE; ++ } ++ ++ if (x < 0 || w < 1 || (0x7fffffff - x) < w) { ++ return JNI_FALSE; ++ } ++ ++ if (y < 0 || h < 1 || (0x7fffffff - y) < h) { ++ return JNI_FALSE; + } + + sStride = (*env)->GetIntField(env, jict, g_ICRscanstrID); +@@ -93,10 +151,47 @@ + joffs = (*env)->GetObjectField(env, jict, g_ICRdataOffsetsID); + jdata = (*env)->GetObjectField(env, jict, g_ICRdataID); + ++ if (JNU_IsNull(env, jdata)) { ++ /* no destination buffer */ ++ return JNI_FALSE; ++ } ++ ++ if (JNU_IsNull(env, joffs) || (*env)->GetArrayLength(env, joffs) < 1) { ++ /* invalid data offstes in raster */ ++ return JNI_FALSE; ++ } ++ ++ srcDataLength = (*env)->GetArrayLength(env, jpix); ++ dstDataLength = (*env)->GetArrayLength(env, jdata); ++ ++ cOffs = (int *) (*env)->GetPrimitiveArrayCritical(env, joffs, NULL); ++ if (cOffs == NULL) { ++ JNU_ThrowNullPointerException(env, "Null channel offset array"); ++ return JNI_FALSE; ++ } ++ ++ dstDataOff = cOffs[0]; ++ ++ /* the offset array is not needed anymore and can be released */ ++ (*env)->ReleasePrimitiveArrayCritical(env, joffs, cOffs, JNI_ABORT); ++ joffs = NULL; ++ cOffs = NULL; ++ ++ /* do basic validation: make sure that offsets for ++ * first pixel and for last pixel are safe to calculate and use */ ++ CHECK_STRIDE(y, h, sStride); ++ CHECK_STRIDE(x, w, pixelStride); ++ ++ CHECK_DST(x, y); ++ CHECK_DST(x + w -1, y + h - 1); ++ ++ /* check source array */ ++ CHECK_SRC(); ++ + srcLUT = (int *) (*env)->GetPrimitiveArrayCritical(env, jlut, NULL); + if (srcLUT == NULL) { + JNU_ThrowNullPointerException(env, "Null IndexColorModel LUT"); +- return; ++ return JNI_FALSE; + } + + srcData = (unsigned char *) (*env)->GetPrimitiveArrayCritical(env, jpix, +@@ -104,27 +199,18 @@ + if (srcData == NULL) { + (*env)->ReleasePrimitiveArrayCritical(env, jlut, srcLUT, JNI_ABORT); + JNU_ThrowNullPointerException(env, "Null data array"); +- return; +- } +- +- cOffs = (int *) (*env)->GetPrimitiveArrayCritical(env, joffs, NULL); +- if (cOffs == NULL) { +- (*env)->ReleasePrimitiveArrayCritical(env, jlut, srcLUT, JNI_ABORT); +- (*env)->ReleasePrimitiveArrayCritical(env, jpix, srcData, JNI_ABORT); +- JNU_ThrowNullPointerException(env, "Null channel offset array"); +- return; ++ return JNI_FALSE; + } + + dstData = (int *) (*env)->GetPrimitiveArrayCritical(env, jdata, NULL); + if (dstData == NULL) { + (*env)->ReleasePrimitiveArrayCritical(env, jlut, srcLUT, JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, jpix, srcData, JNI_ABORT); +- (*env)->ReleasePrimitiveArrayCritical(env, joffs, cOffs, JNI_ABORT); + JNU_ThrowNullPointerException(env, "Null tile data array"); +- return; ++ return JNI_FALSE; + } + +- dstyP = dstData + cOffs[0] + y*sStride + x*pixelStride; ++ dstyP = dstData + dstDataOff + y*sStride + x*pixelStride; + srcyP = srcData + off; + for (yIdx = 0; yIdx < h; yIdx++, srcyP += scansize, dstyP+=sStride) { + srcP = srcyP; +@@ -137,12 +223,12 @@ + /* Release the locked arrays */ + (*env)->ReleasePrimitiveArrayCritical(env, jlut, srcLUT, JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, jpix, srcData, JNI_ABORT); +- (*env)->ReleasePrimitiveArrayCritical(env, joffs, cOffs, JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, jdata, dstData, JNI_ABORT); + ++ return JNI_TRUE; + } + +-JNIEXPORT jint JNICALL ++JNIEXPORT jboolean JNICALL + Java_sun_awt_image_ImageRepresentation_setDiffICM(JNIEnv *env, jclass cls, + jint x, jint y, jint w, + jint h, jintArray jlut, +@@ -150,7 +236,7 @@ + jobject jicm, + jbyteArray jpix, jint off, + jint scansize, +- jobject jbct, jint chanOff) ++ jobject jbct, jint dstDataOff) + { + unsigned int *srcLUT = NULL; + unsigned int *newLUT = NULL; +@@ -159,6 +245,8 @@ + int mapSize; + jobject jdata = NULL; + jobject jnewlut = NULL; ++ jint srcDataLength; ++ jint dstDataLength; + unsigned char *srcData; + unsigned char *dstData; + unsigned char *dataP; +@@ -174,14 +262,23 @@ + + if (JNU_IsNull(env, jlut)) { + JNU_ThrowNullPointerException(env, "NullPointerException"); +- return 0; ++ return JNI_FALSE; + } + + if (JNU_IsNull(env, jpix)) { + JNU_ThrowNullPointerException(env, "NullPointerException"); +- return 0; ++ return JNI_FALSE; ++ } ++ ++ if (x < 0 || w < 1 || (0x7fffffff - x) < w) { ++ return JNI_FALSE; + } + ++ if (y < 0 || h < 1 || (0x7fffffff - y) < h) { ++ return JNI_FALSE; ++ } ++ ++ + sStride = (*env)->GetIntField(env, jbct, g_BCRscanstrID); + pixelStride =(*env)->GetIntField(env, jbct, g_BCRpixstrID); + jdata = (*env)->GetObjectField(env, jbct, g_BCRdataID); +@@ -193,13 +290,31 @@ + of byte data type, so we have to convert the image data + to default representation. + */ +- return 0; ++ return JNI_FALSE; ++ } ++ ++ if (JNU_IsNull(env, jdata)) { ++ /* no destination buffer */ ++ return JNI_FALSE; + } ++ ++ srcDataLength = (*env)->GetArrayLength(env, jpix); ++ dstDataLength = (*env)->GetArrayLength(env, jdata); ++ ++ CHECK_STRIDE(y, h, sStride); ++ CHECK_STRIDE(x, w, pixelStride); ++ ++ CHECK_DST(x, y); ++ CHECK_DST(x + w -1, y + h - 1); ++ ++ /* check source array */ ++ CHECK_SRC(); ++ + srcLUT = (unsigned int *) (*env)->GetPrimitiveArrayCritical(env, jlut, + NULL); + if (srcLUT == NULL) { + /* out of memory error already thrown */ +- return 0; ++ return JNI_FALSE; + } + + newLUT = (unsigned int *) (*env)->GetPrimitiveArrayCritical(env, jnewlut, +@@ -208,7 +323,7 @@ + (*env)->ReleasePrimitiveArrayCritical(env, jlut, srcLUT, + JNI_ABORT); + /* out of memory error already thrown */ +- return 0; ++ return JNI_FALSE; + } + + newNumLut = numLut; +@@ -219,7 +334,7 @@ + (*env)->ReleasePrimitiveArrayCritical(env, jlut, srcLUT, + JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, jnewlut, newLUT, JNI_ABORT); +- return 0; ++ return JNI_FALSE; + } + + /* Don't need these any more */ +@@ -239,7 +354,7 @@ + NULL); + if (srcData == NULL) { + /* out of memory error already thrown */ +- return 0; ++ return JNI_FALSE; + } + + dstData = (unsigned char *) (*env)->GetPrimitiveArrayCritical(env, jdata, +@@ -247,10 +362,10 @@ + if (dstData == NULL) { + (*env)->ReleasePrimitiveArrayCritical(env, jpix, srcData, JNI_ABORT); + /* out of memory error already thrown */ +- return 0; ++ return JNI_FALSE; + } + +- ydataP = dstData + chanOff + y*sStride + x*pixelStride; ++ ydataP = dstData + dstDataOff + y*sStride + x*pixelStride; + ypixP = srcData + off; + + for (i=0; i < h; i++) { +@@ -268,7 +383,7 @@ + (*env)->ReleasePrimitiveArrayCritical(env, jpix, srcData, JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, jdata, dstData, JNI_ABORT); + +- return 1; ++ return JNI_TRUE; + } + + static int compareLUTs(unsigned int *lut1, int numLut1, int transIdx, --- jdk/src/share/native/sun/awt/image/awt_parseImage.c 2012-08-10 10:30:22.000000000 -0700 -+++ jdk/src/share/native/sun/awt/image/awt_parseImage.c 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/native/sun/awt/image/awt_parseImage.c 2013-05-05 09:38:39.000000000 -0700 @@ -34,6 +34,7 @@ #include "java_awt_color_ColorSpace.h" #include "awt_Mlib.h" @@ -69126,7 +56654,7 @@ hintP->needToExpand = TRUE; hintP->expandToNbits = cmodelP->maxNbits; --- jdk/src/share/native/sun/awt/image/awt_parseImage.h 2012-08-10 10:30:22.000000000 -0700 -+++ jdk/src/share/native/sun/awt/image/awt_parseImage.h 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/native/sun/awt/image/awt_parseImage.h 2013-05-05 09:38:39.000000000 -0700 @@ -95,6 +95,7 @@ jint offsets[MAX_NUMBANDS]; jint nBits[MAX_NUMBANDS]; @@ -69135,8 +56663,150 @@ } SPPSampleModelS_t; /* Struct that holds information for the Raster object */ +--- jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c 2012-08-10 10:30:23.000000000 -0700 ++++ jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c 2013-05-05 09:38:39.000000000 -0700 +@@ -57,8 +57,8 @@ + #define MAX(a,b) ((a) > (b) ? (a) : (b)) + + /* Cached Java method ids */ +-static jmethodID ImageInputStream_readID; +-static jmethodID ImageInputStream_skipBytesID; ++static jmethodID JPEGImageReader_readInputDataID; ++static jmethodID JPEGImageReader_skipInputBytesID; + static jmethodID JPEGImageReader_warningOccurredID; + static jmethodID JPEGImageReader_warningWithMessageID; + static jmethodID JPEGImageReader_setImageDataID; +@@ -66,7 +66,7 @@ + static jmethodID JPEGImageReader_pushBackID; + static jmethodID JPEGImageReader_passStartedID; + static jmethodID JPEGImageReader_passCompleteID; +-static jmethodID ImageOutputStream_writeID; ++static jmethodID JPEGImageWriter_writeOutputDataID; + static jmethodID JPEGImageWriter_warningOccurredID; + static jmethodID JPEGImageWriter_warningWithMessageID; + static jmethodID JPEGImageWriter_writeMetadataID; +@@ -923,7 +923,7 @@ + RELEASE_ARRAYS(env, data, src->next_input_byte); + ret = (*env)->CallIntMethod(env, + sb->stream, +- ImageInputStream_readID, ++ JPEGImageReader_readInputDataID, + sb->hstreamBuffer, 0, + sb->bufferLength); + if ((*env)->ExceptionOccurred(env) +@@ -1013,7 +1013,7 @@ + } + + ret = (*env)->CallIntMethod(env, sb->stream, +- ImageInputStream_readID, ++ JPEGImageReader_readInputDataID, + sb->hstreamBuffer, + offset, buflen); + if ((*env)->ExceptionOccurred(env) +@@ -1107,7 +1107,7 @@ + RELEASE_ARRAYS(env, data, src->next_input_byte); + ret = (*env)->CallLongMethod(env, + sb->stream, +- ImageInputStream_skipBytesID, ++ JPEGImageReader_skipInputBytesID, + (jlong) num_bytes); + if ((*env)->ExceptionOccurred(env) + || !GET_ARRAYS(env, data, &(src->next_input_byte))) { +@@ -1382,13 +1382,13 @@ + jclass qTableClass, + jclass huffClass) { + +- ImageInputStream_readID = (*env)->GetMethodID(env, +- ImageInputStreamClass, +- "read", ++ JPEGImageReader_readInputDataID = (*env)->GetMethodID(env, ++ cls, ++ "readInputData", + "([BII)I"); +- ImageInputStream_skipBytesID = (*env)->GetMethodID(env, +- ImageInputStreamClass, +- "skipBytes", ++ JPEGImageReader_skipInputBytesID = (*env)->GetMethodID(env, ++ cls, ++ "skipInputBytes", + "(J)J"); + JPEGImageReader_warningOccurredID = (*env)->GetMethodID(env, + cls, +@@ -1531,8 +1531,7 @@ + Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_setSource + (JNIEnv *env, + jobject this, +- jlong ptr, +- jobject source) { ++ jlong ptr) { + + imageIODataPtr data = (imageIODataPtr)jlong_to_ptr(ptr); + j_common_ptr cinfo; +@@ -1546,7 +1545,7 @@ + + cinfo = data->jpegObj; + +- imageio_set_stream(env, cinfo, data, source); ++ imageio_set_stream(env, cinfo, data, this); + + imageio_init_source((j_decompress_ptr) cinfo); + } +@@ -2291,7 +2290,7 @@ + + (*env)->CallVoidMethod(env, + sb->stream, +- ImageOutputStream_writeID, ++ JPEGImageWriter_writeOutputDataID, + sb->hstreamBuffer, + 0, + sb->bufferLength); +@@ -2328,7 +2327,7 @@ + + (*env)->CallVoidMethod(env, + sb->stream, +- ImageOutputStream_writeID, ++ JPEGImageWriter_writeOutputDataID, + sb->hstreamBuffer, + 0, + datacount); +@@ -2366,13 +2365,12 @@ + Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initWriterIDs + (JNIEnv *env, + jclass cls, +- jclass IOSClass, + jclass qTableClass, + jclass huffClass) { + +- ImageOutputStream_writeID = (*env)->GetMethodID(env, +- IOSClass, +- "write", ++ JPEGImageWriter_writeOutputDataID = (*env)->GetMethodID(env, ++ cls, ++ "writeOutputData", + "([BII)V"); + + JPEGImageWriter_warningOccurredID = (*env)->GetMethodID(env, +@@ -2496,8 +2494,7 @@ + Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_setDest + (JNIEnv *env, + jobject this, +- jlong ptr, +- jobject destination) { ++ jlong ptr) { + + imageIODataPtr data = (imageIODataPtr)jlong_to_ptr(ptr); + j_compress_ptr cinfo; +@@ -2511,7 +2508,7 @@ + + cinfo = (j_compress_ptr) data->jpegObj; + +- imageio_set_stream(env, data->jpegObj, data, destination); ++ imageio_set_stream(env, data->jpegObj, data, this); + + + // Don't call the init method, as that depends on pinned arrays --- jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c 2012-08-10 10:30:26.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c 2013-05-05 09:38:39.000000000 -0700 @@ -42,6 +42,7 @@ #include "awt_Mlib.h" #include "gdefs.h" @@ -69218,7 +56888,7 @@ cDataP = (unsigned char *) mlib_ImageGetData(*mlibImagePP); return expandPackedICR(env, rasterP, -1, cDataP); --- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c 2012-08-10 10:30:27.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c 2013-05-05 09:38:39.000000000 -0700 @@ -86,7 +86,7 @@ #endif /* MLIB_USE_FTOI_CLAMPING */ @@ -69259,7 +56929,7 @@ #endif /* _NO_LONGLONG */ --- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c 2012-08-10 10:30:27.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c 2013-05-05 09:38:39.000000000 -0700 @@ -126,7 +126,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -69300,7 +56970,7 @@ /***************************************************************/ --- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c 2012-08-10 10:30:27.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c 2013-05-05 09:38:39.000000000 -0700 @@ -94,7 +94,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -69341,7 +57011,7 @@ /***************************************************************/ --- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c 2012-08-10 10:30:28.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c 2013-05-05 09:38:39.000000000 -0700 @@ -126,7 +126,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -69382,7 +57052,7 @@ /***************************************************************/ --- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c 2012-08-10 10:30:28.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c 2013-05-05 09:38:39.000000000 -0700 @@ -95,7 +95,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -69423,7 +57093,7 @@ /***************************************************************/ --- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c 2012-08-10 10:30:28.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c 2013-05-05 09:38:39.000000000 -0700 @@ -126,7 +126,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -69464,7 +57134,7 @@ /***************************************************************/ --- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c 2012-08-10 10:30:28.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c 2013-05-05 09:38:39.000000000 -0700 @@ -94,7 +94,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -69505,7 +57175,7 @@ /***************************************************************/ --- jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c 2012-08-10 10:30:28.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c 2013-05-05 09:38:39.000000000 -0700 @@ -95,7 +95,7 @@ dst = dp[0]; if (ld_offset + size < 32) { @@ -69726,7 +57396,7 @@ #else /* _LONGLONG */ --- jdk/src/share/native/sun/awt/medialib/mlib_ImageCreate.c 2012-08-10 10:30:28.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageCreate.c 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageCreate.c 2013-05-05 09:38:39.000000000 -0700 @@ -120,6 +120,7 @@ #include "mlib_image.h" #include "mlib_ImageRowTable.h" @@ -69792,7 +57462,7 @@ if (data == NULL) { return NULL; --- jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c 2012-08-10 10:30:28.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c 2013-05-05 09:38:39.000000000 -0700 @@ -168,7 +168,7 @@ } @@ -70074,7 +57744,7 @@ dp[13] = t1; dp[14] = t2; --- jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c 2012-08-10 10:30:28.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c 2013-05-05 09:38:39.000000000 -0700 @@ -88,7 +88,7 @@ } d64_2_f32; @@ -70227,7 +57897,7 @@ ((mlib_u32*)lh)[0] = l; ((mlib_u32*)lh)[1] = l; ((mlib_u32*)lh)[2] = l; ((mlib_u32*)lh)[3] = h; --- jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c 2012-08-10 10:30:28.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c 2013-05-05 09:38:39.000000000 -0700 @@ -30,7 +30,7 @@ typedef union { mlib_d64 db; @@ -70238,7 +57908,7 @@ #else mlib_s32 int0, int1; --- jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c 2012-08-10 10:30:29.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c 2013-05-05 09:38:39.000000000 -0700 @@ -275,11 +275,11 @@ for (i = 0; j <= (b_size - 4); j += 4, i++) { src0 = src1; @@ -70338,7 +58008,7 @@ dp += SIZE; sp += SIZE; --- jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c 2012-08-10 10:30:29.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c 2013-05-05 09:38:39.000000000 -0700 @@ -120,7 +120,7 @@ } \ } @@ -71572,7 +59242,7 @@ dp[13] = t1; dp[14] = t2; --- jdk/src/share/native/sun/awt/medialib/mlib_image.h 2012-08-10 10:30:29.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_image.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_image.h 2013-05-05 09:38:39.000000000 -0700 @@ -27,9 +27,21 @@ #ifndef MLIB_IMAGE_H #define MLIB_IMAGE_H @@ -71597,7 +59267,7 @@ #include <mlib_status.h> #include <mlib_sys.h> --- jdk/src/share/native/sun/awt/medialib/mlib_sys.c 2012-08-10 10:30:30.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_sys.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_sys.c 2013-05-05 09:38:39.000000000 -0700 @@ -26,7 +26,7 @@ #include <stdlib.h> @@ -71620,7 +59290,7 @@ #else return (void *) memalign(8, size); --- jdk/src/share/native/sun/awt/medialib/mlib_types.h 2012-08-10 10:30:30.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/mlib_types.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/mlib_types.h 2013-05-05 09:38:39.000000000 -0700 @@ -59,8 +59,16 @@ #if defined(__SUNPRO_C) || defined(__SUNPRO_CC) || defined(__GNUC__) @@ -71639,7 +59309,7 @@ #if defined(MLIB_OS64BIT) || (defined(MACOSX) && defined(_LP64)) --- jdk/src/share/native/sun/awt/medialib/safe_alloc.h 2012-08-10 10:30:30.000000000 -0700 -+++ jdk/src/share/native/sun/awt/medialib/safe_alloc.h 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/safe_alloc.h 2013-05-05 09:38:39.000000000 -0700 @@ -41,5 +41,4 @@ (((w) > 0) && ((h) > 0) && ((sz) > 0) && \ (((0xffffffffu / ((juint)(w))) / ((juint)(h))) > ((juint)(sz)))) @@ -71647,7 +59317,7 @@ - #endif // __SAFE_ALLOC_H__ --- jdk/src/share/native/sun/awt/medialib/safe_math.h 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/share/native/sun/awt/medialib/safe_math.h 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/native/sun/awt/medialib/safe_math.h 2013-05-05 09:38:39.000000000 -0700 @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. @@ -71685,7 +59355,7 @@ + +#endif // __SAFE_MATH_H__ --- jdk/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c 2012-08-10 10:30:30.000000000 -0700 -+++ jdk/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c 2013-03-09 08:44:48.000000000 -0800 ++++ jdk/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c 2013-05-05 09:38:39.000000000 -0700 @@ -133,6 +133,10 @@ ImageFormat srcFormat; @@ -71697,8 +59367,10110 @@ jpeg_start_decompress(cinfo); SplashCleanup(splash); +--- jdk/src/share/native/sun/font/FontInstanceAdapter.cpp 2012-08-10 10:30:30.000000000 -0700 ++++ jdk/src/share/native/sun/font/FontInstanceAdapter.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -66,8 +66,21 @@ + yScalePixelsToUnits = upem / yppem; + }; + ++ + const void *FontInstanceAdapter::getFontTable(LETag tableTag) const + { ++ size_t ignored = 0; ++ return getFontTable(tableTag, ignored); ++} ++ ++static const LETag cacheMap[LAYOUTCACHE_ENTRIES] = { ++ GPOS_TAG, GDEF_TAG, GSUB_TAG, MORT_TAG, MORX_TAG, KERN_TAG ++}; ++ ++const void *FontInstanceAdapter::getFontTable(LETag tableTag, size_t &length) const ++{ ++ length = 0; ++ + if (!layoutTables) { // t1 font + return 0; + } +@@ -75,14 +88,19 @@ + // cache in font's pscaler object + // font disposer will handle for us + +- switch(tableTag) { +- case GSUB_TAG: if (layoutTables->gsub_len != -1) return (void*)layoutTables->gsub; break; +- case GPOS_TAG: if (layoutTables->gpos_len != -1) return (void*)layoutTables->gpos; break; +- case GDEF_TAG: if (layoutTables->gdef_len != -1) return (void*)layoutTables->gdef; break; +- case MORT_TAG: if (layoutTables->mort_len != -1) return (void*)layoutTables->mort; break; +- case KERN_TAG: if (layoutTables->kern_len != -1) return (void*)layoutTables->kern; break; +- default: +- //fprintf(stderr, "unexpected table request from font instance adapter: %x\n", tableTag); ++ int cacheIdx; ++ for (cacheIdx=0;cacheIdx<LAYOUTCACHE_ENTRIES;cacheIdx++) { ++ if (tableTag==cacheMap[cacheIdx]) break; ++ } ++ ++ if (cacheIdx<LAYOUTCACHE_ENTRIES) { // if found ++ if (layoutTables->entries[cacheIdx].len != -1) { ++ length = layoutTables->entries[cacheIdx].len; ++ return layoutTables->entries[cacheIdx].ptr; ++ } ++ } else { ++ //fprintf(stderr, "unexpected table request from font instance adapter: %x\n", tableTag); ++ // (don't load any other tables) + return 0; + } + +@@ -96,16 +114,13 @@ + env->GetByteArrayRegion(tableBytes, 0, len, result); + } + +- switch(tableTag) { +- case GSUB_TAG: layoutTables->gsub = (void*)result; layoutTables->gsub_len = len; break; +- case GPOS_TAG: layoutTables->gpos = (void*)result; layoutTables->gpos_len = len; break; +- case GDEF_TAG: layoutTables->gdef = (void*)result; layoutTables->gdef_len = len; break; +- case MORT_TAG: layoutTables->mort = (void*)result; layoutTables->mort_len = len; break; +- case KERN_TAG: layoutTables->kern = (void*)result; layoutTables->kern_len = len; break; +- default: break; ++ if (cacheIdx<LAYOUTCACHE_ENTRIES) { // if cacheable table ++ layoutTables->entries[cacheIdx].len = len; ++ layoutTables->entries[cacheIdx].ptr = (const void*)result; + } + +- return (void*)result; ++ length = len; ++ return (const void*)result; + }; + + LEGlyphID FontInstanceAdapter::mapCharToGlyph(LEUnicode32 ch, const LECharMapper *mapper) const +--- jdk/src/share/native/sun/font/FontInstanceAdapter.h 2012-08-10 10:30:30.000000000 -0700 ++++ jdk/src/share/native/sun/font/FontInstanceAdapter.h 2013-05-05 09:38:38.000000000 -0700 +@@ -86,6 +86,7 @@ + // tables are cached with the native font scaler data + // only supports gsub, gpos, gdef, mort tables at present + virtual const void *getFontTable(LETag tableTag) const; ++ virtual const void *getFontTable(LETag tableTag, size_t &len) const; + + virtual void *getKernPairs() const { + return layoutTables->kernPairs; +--- jdk/src/share/native/sun/font/fontscalerdefs.h 2012-08-10 10:30:30.000000000 -0700 ++++ jdk/src/share/native/sun/font/fontscalerdefs.h 2013-05-05 09:38:38.000000000 -0700 +@@ -120,20 +120,19 @@ + #define GPOS_TAG 0x47504F53 /* 'GPOS' */ + #define GDEF_TAG 0x47444546 /* 'GDEF' */ + #define MORT_TAG 0x6D6F7274 /* 'mort' */ ++#define MORX_TAG 0x6D6F7278 /* 'morx' */ + #define KERN_TAG 0x6B65726E /* 'kern' */ + ++typedef struct TTLayoutTableCacheEntry { ++ const void* ptr; ++ int len; ++} TTLayoutTableCacheEntry; ++ ++#define LAYOUTCACHE_ENTRIES 6 ++ + typedef struct TTLayoutTableCache { +- void* gsub; +- void* gpos; +- void* gdef; +- void* mort; +- void* kern; +- void* kernPairs; +- int gsub_len; +- int gpos_len; +- int gdef_len; +- int mort_len; +- int kern_len; ++ TTLayoutTableCacheEntry entries[LAYOUTCACHE_ENTRIES]; ++ void* kernPairs; + } TTLayoutTableCache; + + #include "sunfontids.h" +--- jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.cpp 2012-08-10 10:30:30.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -39,19 +39,20 @@ + + U_NAMESPACE_BEGIN + +-le_uint32 AlternateSubstitutionSubtable::process(GlyphIterator *glyphIterator, const LEGlyphFilter *filter) const ++le_uint32 AlternateSubstitutionSubtable::process(const LEReferenceTo<AlternateSubstitutionSubtable> &base, ++ GlyphIterator *glyphIterator, LEErrorCode &success, const LEGlyphFilter *filter) const + { + // NOTE: For now, we'll just pick the first alternative... + LEGlyphID glyph = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(glyph); ++ le_int32 coverageIndex = getGlyphCoverage(base, glyph, success); + +- if (coverageIndex >= 0) { ++ if (coverageIndex >= 0 && LE_SUCCESS(success)) { + le_uint16 altSetCount = SWAPW(alternateSetCount); + + if (coverageIndex < altSetCount) { + Offset alternateSetTableOffset = SWAPW(alternateSetTableOffsetArray[coverageIndex]); +- const AlternateSetTable *alternateSetTable = +- (const AlternateSetTable *) ((char *) this + alternateSetTableOffset); ++ const LEReferenceTo<AlternateSetTable> alternateSetTable(base, success, ++ (const AlternateSetTable *) ((char *) this + alternateSetTableOffset)); + TTGlyphID alternate = SWAPW(alternateSetTable->alternateArray[0]); + + if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, alternate))) { +--- jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.h 2012-08-10 10:30:30.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -51,13 +51,17 @@ + TTGlyphID alternateArray[ANY_NUMBER]; + }; + ++LE_VAR_ARRAY(AlternateSetTable, alternateArray) ++ + struct AlternateSubstitutionSubtable : GlyphSubstitutionSubtable + { + le_uint16 alternateSetCount; + Offset alternateSetTableOffsetArray[ANY_NUMBER]; + +- le_uint32 process(GlyphIterator *glyphIterator, const LEGlyphFilter *filter = NULL) const; ++ le_uint32 process(const LEReferenceTo<AlternateSubstitutionSubtable> &base, GlyphIterator *glyphIterator, LEErrorCode &success, const LEGlyphFilter *filter = NULL) const; + }; + ++LE_VAR_ARRAY(AlternateSubstitutionSubtable, alternateSetTableOffsetArray) ++ + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/ArabicLayoutEngine.cpp 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ArabicLayoutEngine.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -26,7 +26,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -58,15 +58,18 @@ + + UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ArabicOpenTypeLayoutEngine) + +-ArabicOpenTypeLayoutEngine::ArabicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success) ++ArabicOpenTypeLayoutEngine::ArabicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, ++ le_int32 languageCode, le_int32 typoFlags, ++ const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, ++ LEErrorCode &success) + : OpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable, success) + { + fFeatureMap = ArabicShaping::getFeatureMap(fFeatureMapCount); + fFeatureOrder = TRUE; + } + +-ArabicOpenTypeLayoutEngine::ArabicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, ++ArabicOpenTypeLayoutEngine::ArabicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, ++ le_int32 languageCode, + le_int32 typoFlags, LEErrorCode &success) + : OpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success) + { +@@ -88,8 +91,9 @@ + // Input: characters + // Output: characters, char indices, tags + // Returns: output character count +-le_int32 ArabicOpenTypeLayoutEngine::characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, +- LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success) ++le_int32 ArabicOpenTypeLayoutEngine::characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, ++ le_int32 max, le_bool rightToLeft, LEUnicode *&outChars, ++ LEGlyphStorage &glyphStorage, LEErrorCode &success) + { + if (LE_FAILURE(success)) { + return 0; +@@ -137,32 +141,30 @@ + return; + } + +- if (fGPOSTable != NULL) { ++ if (!fGPOSTable.isEmpty()) { + OpenTypeLayoutEngine::adjustGlyphPositions(chars, offset, count, reverse, glyphStorage, success); +- } else if (fGDEFTable != NULL) { +- GDEFMarkFilter filter(fGDEFTable); +- ++ } else if (!fGDEFTable.isEmpty()) { ++ GDEFMarkFilter filter(fGDEFTable, success); + adjustMarkGlyphs(glyphStorage, &filter, success); + } else { +- GlyphDefinitionTableHeader *gdefTable = (GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable; +- GDEFMarkFilter filter(gdefTable); ++ LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(CanonShaping::glyphDefinitionTable, CanonShaping::glyphDefinitionTableLen); ++ GDEFMarkFilter filter(gdefTable, success); + + adjustMarkGlyphs(&chars[offset], count, reverse, glyphStorage, &filter, success); + } + } + + UnicodeArabicOpenTypeLayoutEngine::UnicodeArabicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, le_int32 typoFlags, LEErrorCode &success) +- : ArabicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success) ++ : ArabicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags | LE_CHAR_FILTER_FEATURE_FLAG, success) + { + fGSUBTable = (const GlyphSubstitutionTableHeader *) CanonShaping::glyphSubstitutionTable; + fGDEFTable = (const GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable; +- +- fSubstitutionFilter = new CharSubstitutionFilter(fontInstance); ++ /* OpenTypeLayoutEngine will allocate a substitution filter */ + } + + UnicodeArabicOpenTypeLayoutEngine::~UnicodeArabicOpenTypeLayoutEngine() + { +- delete fSubstitutionFilter; ++ /* OpenTypeLayoutEngine will cleanup the substitution filter */ + } + + // "glyphs", "indices" -> glyphs, indices +@@ -233,7 +235,7 @@ + return; + } + +- GDEFMarkFilter filter(fGDEFTable); ++ GDEFMarkFilter filter(fGDEFTable, success); + + adjustMarkGlyphs(&chars[offset], count, reverse, glyphStorage, &filter, success); + } +--- jdk/src/share/native/sun/font/layout/ArabicLayoutEngine.h 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ArabicLayoutEngine.h 2013-05-05 09:38:38.000000000 -0700 +@@ -75,7 +75,7 @@ + * @internal + */ + ArabicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success); ++ le_int32 typoFlags, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success); + + /** + * This constructor is used when the font requires a "canned" GSUB table which can't be known +--- jdk/src/share/native/sun/font/layout/ArabicShaping.cpp 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ArabicShaping.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -58,14 +58,16 @@ + */ + ArabicShaping::ShapeType ArabicShaping::getShapeType(LEUnicode c) + { +- const ClassDefinitionTable *joiningTypes = (const ClassDefinitionTable *) ArabicShaping::shapingTypeTable; +- le_int32 joiningType = joiningTypes->getGlyphClass(c); ++ LEErrorCode success = LE_NO_ERROR; ++ const LEReferenceTo<ClassDefinitionTable> joiningTypes((const ClassDefinitionTable *) ArabicShaping::shapingTypeTable, ++ ArabicShaping::shapingTypeTableLen); ++ le_int32 joiningType = joiningTypes->getGlyphClass(joiningTypes, c, success); ++ ++ if (joiningType >= 0 && joiningType < ArabicShaping::JT_COUNT && LE_SUCCESS(success)) { ++ return ArabicShaping::shapeTypes[joiningType]; ++ } + +- if (joiningType >= 0 && joiningType < ArabicShaping::JT_COUNT) { +- return ArabicShaping::shapeTypes[joiningType]; +- } +- +- return ArabicShaping::ST_NOSHAPE_NONE; ++ return ArabicShaping::ST_NOSHAPE_NONE; + } + + #define isolFeatureTag LE_ISOL_FEATURE_TAG +--- jdk/src/share/native/sun/font/layout/ArabicShaping.h 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ArabicShaping.h 2013-05-05 09:38:38.000000000 -0700 +@@ -93,6 +93,8 @@ + static ShapeType getShapeType(LEUnicode c); + + static const le_uint8 shapingTypeTable[]; ++ static const size_t shapingTypeTableLen; ++ + static const ShapeType shapeTypes[]; + + static void adjustTags(le_int32 outIndex, le_int32 shapeOffset, LEGlyphStorage &glyphStorage); +--- jdk/src/share/native/sun/font/layout/AttachmentPosnSubtables.h 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/AttachmentPosnSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -52,14 +52,14 @@ + Offset markArrayOffset; + Offset baseArrayOffset; + +- inline le_int32 getBaseCoverage(LEGlyphID baseGlyphId) const; ++ inline le_int32 getBaseCoverage(const LETableReference &base, LEGlyphID baseGlyphId, LEErrorCode &success) const; + + le_uint32 process(GlyphIterator *glyphIterator) const; + }; + +-inline le_int32 AttachmentPositioningSubtable::getBaseCoverage(LEGlyphID baseGlyphID) const ++inline le_int32 AttachmentPositioningSubtable::getBaseCoverage(const LETableReference &base, LEGlyphID baseGlyphID, LEErrorCode &success) const + { +- return getGlyphCoverage(baseCoverageTableOffset, baseGlyphID); ++ return getGlyphCoverage(base, baseCoverageTableOffset, baseGlyphID, success); + } + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/CanonData.cpp 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/CanonData.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -3641,4 +3641,9 @@ + 0x00, 0xE6, 0xD2, 0x42, 0xD2, 0x44, 0x00, 0xE6 + }; + ++ ++const size_t CanonShaping::glyphSubstitutionTableLen = sizeof(glyphSubstitutionTable)/sizeof(glyphSubstitutionTable[0]); ++ ++const size_t CanonShaping::glyphDefinitionTableLen = sizeof(glyphDefinitionTable)/sizeof(glyphDefinitionTable[0]); ++ + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/CanonShaping.cpp 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/CanonShaping.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -59,15 +59,15 @@ + void CanonShaping::reorderMarks(const LEUnicode *inChars, le_int32 charCount, le_bool rightToLeft, + LEUnicode *outChars, LEGlyphStorage &glyphStorage) + { +- const GlyphDefinitionTableHeader *gdefTable = (const GlyphDefinitionTableHeader *) glyphDefinitionTable; +- const ClassDefinitionTable *classTable = gdefTable->getMarkAttachClassDefinitionTable(); ++ LEErrorCode success = LE_NO_ERROR; ++ LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(CanonShaping::glyphDefinitionTable, CanonShaping::glyphDefinitionTableLen); ++ LEReferenceTo<ClassDefinitionTable> classTable = gdefTable->getMarkAttachClassDefinitionTable(gdefTable, success); + le_int32 *combiningClasses = LE_NEW_ARRAY(le_int32, charCount); + le_int32 *indices = LE_NEW_ARRAY(le_int32, charCount); +- LEErrorCode status = LE_NO_ERROR; + le_int32 i; + + for (i = 0; i < charCount; i += 1) { +- combiningClasses[i] = classTable->getGlyphClass((LEGlyphID) inChars[i]); ++ combiningClasses[i] = classTable->getGlyphClass(classTable, (LEGlyphID) inChars[i], success); + indices[i] = i; + } + +@@ -96,7 +96,7 @@ + le_int32 index = indices[i]; + + outChars[i] = inChars[index]; +- glyphStorage.setCharIndex(out, index, status); ++ glyphStorage.setCharIndex(out, index, success); + } + + LE_DELETE_ARRAY(indices); +--- jdk/src/share/native/sun/font/layout/CanonShaping.h 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/CanonShaping.h 2013-05-05 09:38:38.000000000 -0700 +@@ -42,7 +42,9 @@ + { + public: + static const le_uint8 glyphSubstitutionTable[]; ++ static const size_t glyphSubstitutionTableLen; + static const le_uint8 glyphDefinitionTable[]; ++ static const size_t glyphDefinitionTableLen; + + static void reorderMarks(const LEUnicode *inChars, le_int32 charCount, le_bool rightToLeft, + LEUnicode *outChars, LEGlyphStorage &glyphStorage); +--- jdk/src/share/native/sun/font/layout/ClassDefinitionTables.cpp 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ClassDefinitionTables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -37,49 +37,51 @@ + + U_NAMESPACE_BEGIN + +-le_int32 ClassDefinitionTable::getGlyphClass(LEGlyphID glyphID) const ++le_int32 ClassDefinitionTable::getGlyphClass(const LETableReference& base, LEGlyphID glyphID, LEErrorCode &success) const + { +- switch(SWAPW(classFormat)) { ++ LEReferenceTo<ClassDefinitionTable> thisRef(base, success); ++ if (LE_FAILURE(success)) return 0; ++ ++ switch(SWAPW(classFormat)) { + case 0: + return 0; + + case 1: + { +- const ClassDefFormat1Table *f1Table = (const ClassDefFormat1Table *) this; +- +- return f1Table->getGlyphClass(glyphID); ++ const LEReferenceTo<ClassDefFormat1Table> f1Table(thisRef, success); ++ return f1Table->getGlyphClass(f1Table, glyphID, success); + } + + case 2: + { +- const ClassDefFormat2Table *f2Table = (const ClassDefFormat2Table *) this; +- +- return f2Table->getGlyphClass(glyphID); ++ const LEReferenceTo<ClassDefFormat2Table> f2Table(thisRef, success); ++ return f2Table->getGlyphClass(f2Table, glyphID, success); + } + + default: + return 0; +- } ++ } + } + +-le_bool ClassDefinitionTable::hasGlyphClass(le_int32 glyphClass) const ++le_bool ClassDefinitionTable::hasGlyphClass(const LETableReference &base, le_int32 glyphClass, LEErrorCode &success) const + { ++ LEReferenceTo<ClassDefinitionTable> thisRef(base, success); ++ if (LE_FAILURE(success)) return 0; ++ + switch(SWAPW(classFormat)) { + case 0: + return 0; + + case 1: + { +- const ClassDefFormat1Table *f1Table = (const ClassDefFormat1Table *) this; +- +- return f1Table->hasGlyphClass(glyphClass); ++ const LEReferenceTo<ClassDefFormat1Table> f1Table(thisRef, success); ++ return f1Table->hasGlyphClass(f1Table, glyphClass, success); + } + + case 2: + { +- const ClassDefFormat2Table *f2Table = (const ClassDefFormat2Table *) this; +- +- return f2Table->hasGlyphClass(glyphClass); ++ const LEReferenceTo<ClassDefFormat2Table> f2Table(thisRef, success); ++ return f2Table->hasGlyphClass(f2Table, glyphClass, success); + } + + default: +@@ -87,26 +89,32 @@ + } + } + +-le_int32 ClassDefFormat1Table::getGlyphClass(LEGlyphID glyphID) const ++le_int32 ClassDefFormat1Table::getGlyphClass(const LETableReference& base, LEGlyphID glyphID, LEErrorCode &success) const + { ++ if(LE_FAILURE(success)) return 0; ++ ++ le_uint16 count = SWAPW(glyphCount); ++ LEReferenceToArrayOf<le_uint16> classValueArrayRef(base, success, &classValueArray[0], count); + TTGlyphID ttGlyphID = (TTGlyphID) LE_GET_GLYPH(glyphID); + TTGlyphID firstGlyph = SWAPW(startGlyph); +- TTGlyphID lastGlyph = firstGlyph + SWAPW(glyphCount); ++ TTGlyphID lastGlyph = firstGlyph + count; + +- if (ttGlyphID >= firstGlyph && ttGlyphID < lastGlyph) { +- return SWAPW(classValueArray[ttGlyphID - firstGlyph]); ++ if (LE_SUCCESS(success) && ttGlyphID >= firstGlyph && ttGlyphID < lastGlyph) { ++ return SWAPW( classValueArrayRef(ttGlyphID - firstGlyph, success) ); + } + + return 0; + } + +-le_bool ClassDefFormat1Table::hasGlyphClass(le_int32 glyphClass) const ++le_bool ClassDefFormat1Table::hasGlyphClass(const LETableReference &base, le_int32 glyphClass, LEErrorCode &success) const + { +- le_uint16 count = SWAPW(glyphCount); ++ if(LE_FAILURE(success)) return 0; ++ le_uint16 count = SWAPW(glyphCount); ++ LEReferenceToArrayOf<le_uint16> classValueArrayRef(base, success, &classValueArray[0], count); + int i; + +- for (i = 0; i < count; i += 1) { +- if (SWAPW(classValueArray[i]) == glyphClass) { ++ for (i = 0; LE_SUCCESS(success)&& (i < count); i += 1) { ++ if (SWAPW(classValueArrayRef(i,success)) == glyphClass) { + return TRUE; + } + } +@@ -114,27 +122,31 @@ + return FALSE; + } + +-le_int32 ClassDefFormat2Table::getGlyphClass(LEGlyphID glyphID) const ++le_int32 ClassDefFormat2Table::getGlyphClass(const LETableReference& base, LEGlyphID glyphID, LEErrorCode &success) const + { ++ if(LE_FAILURE(success)) return 0; + TTGlyphID ttGlyph = (TTGlyphID) LE_GET_GLYPH(glyphID); + le_uint16 rangeCount = SWAPW(classRangeCount); ++ LEReferenceToArrayOf<GlyphRangeRecord> classRangeRecordArrayRef(base, success, &classRangeRecordArray[0], rangeCount); + le_int32 rangeIndex = +- OpenTypeUtilities::getGlyphRangeIndex(ttGlyph, classRangeRecordArray, rangeCount); ++ OpenTypeUtilities::getGlyphRangeIndex(ttGlyph, classRangeRecordArrayRef, success); + +- if (rangeIndex < 0) { ++ if (rangeIndex < 0 || LE_FAILURE(success)) { + return 0; + } + +- return SWAPW(classRangeRecordArray[rangeIndex].rangeValue); ++ return SWAPW(classRangeRecordArrayRef(rangeIndex, success).rangeValue); + } + +-le_bool ClassDefFormat2Table::hasGlyphClass(le_int32 glyphClass) const ++le_bool ClassDefFormat2Table::hasGlyphClass(const LETableReference &base, le_int32 glyphClass, LEErrorCode &success) const + { ++ if(LE_FAILURE(success)) return 0; + le_uint16 rangeCount = SWAPW(classRangeCount); ++ LEReferenceToArrayOf<GlyphRangeRecord> classRangeRecordArrayRef(base, success, &classRangeRecordArray[0], rangeCount); + int i; + +- for (i = 0; i < rangeCount; i += 1) { +- if (SWAPW(classRangeRecordArray[i].rangeValue) == glyphClass) { ++ for (i = 0; i < rangeCount && LE_SUCCESS(success); i += 1) { ++ if (SWAPW(classRangeRecordArrayRef(i,success).rangeValue) == glyphClass) { + return TRUE; + } + } +--- jdk/src/share/native/sun/font/layout/ClassDefinitionTables.h 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ClassDefinitionTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -46,8 +46,20 @@ + { + le_uint16 classFormat; + +- le_int32 getGlyphClass(LEGlyphID glyphID) const; +- le_bool hasGlyphClass(le_int32 glyphClass) const; ++ le_int32 getGlyphClass(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const; ++ le_bool hasGlyphClass(const LETableReference &base, le_int32 glyphClass, LEErrorCode &success) const; ++ ++ le_int32 getGlyphClass(LEGlyphID glyphID) const { ++ LETableReference base((const le_uint8*)this); ++ LEErrorCode ignored = LE_NO_ERROR; ++ return getGlyphClass(base,glyphID,ignored); ++ } ++ ++ le_bool hasGlyphClass(le_int32 glyphClass) const { ++ LETableReference base((const le_uint8*)this); ++ LEErrorCode ignored = LE_NO_ERROR; ++ return hasGlyphClass(base,glyphClass,ignored); ++ } + }; + + struct ClassDefFormat1Table : ClassDefinitionTable +@@ -56,9 +68,11 @@ + le_uint16 glyphCount; + le_uint16 classValueArray[ANY_NUMBER]; + +- le_int32 getGlyphClass(LEGlyphID glyphID) const; +- le_bool hasGlyphClass(le_int32 glyphClass) const; ++ le_int32 getGlyphClass(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const; ++ le_bool hasGlyphClass(const LETableReference &base, le_int32 glyphClass, LEErrorCode &success) const; + }; ++LE_VAR_ARRAY(ClassDefFormat1Table, classValueArray) ++ + + struct ClassRangeRecord + { +@@ -72,9 +86,10 @@ + le_uint16 classRangeCount; + GlyphRangeRecord classRangeRecordArray[ANY_NUMBER]; + +- le_int32 getGlyphClass(LEGlyphID glyphID) const; +- le_bool hasGlyphClass(le_int32 glyphClass) const; ++ le_int32 getGlyphClass(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const; ++ le_bool hasGlyphClass(const LETableReference &base, le_int32 glyphClass, LEErrorCode &success) const; + }; ++LE_VAR_ARRAY(ClassDefFormat2Table, classRangeRecordArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/ContextualGlyphInsertion.h 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ContextualGlyphInsertion.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -49,6 +49,11 @@ + { + }; + ++struct ContextualGlyphInsertionHeader2 : MorphStateTableHeader2 ++{ ++ le_uint32 insertionTableOffset; ++}; ++ + enum ContextualGlyphInsertionFlags + { + cgiSetMark = 0x8000, +@@ -61,11 +66,17 @@ + cgiMarkedInsertCountMask = 0x001F + }; + +-struct LigatureSubstitutionStateEntry : StateEntry ++struct ContextualGlyphInsertionStateEntry : StateEntry + { + ByteOffset currentInsertionListOffset; + ByteOffset markedInsertionListOffset; + }; + ++struct ContextualGlyphInsertionStateEntry2 : StateEntry2 ++{ ++ le_uint16 currentInsertionListIndex; ++ le_uint16 markedInsertionListIndex; ++}; ++ + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/ContextualGlyphInsertionProc2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/ContextualGlyphInsertionProc2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,139 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "StateTables.h" ++#include "MorphStateTables.h" ++#include "SubtableProcessor2.h" ++#include "StateTableProcessor2.h" ++#include "ContextualGlyphInsertionProc2.h" ++#include "LEGlyphStorage.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ContextualGlyphInsertionProcessor2) ++ ++ContextualGlyphInsertionProcessor2::ContextualGlyphInsertionProcessor2( ++ const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : StateTableProcessor2(morphSubtableHeader, success) ++{ ++ contextualGlyphHeader = LEReferenceTo<ContextualGlyphInsertionHeader2>(morphSubtableHeader, success); ++ if(LE_FAILURE(success) || !contextualGlyphHeader.isValid()) return; ++ le_uint32 insertionTableOffset = SWAPL(contextualGlyphHeader->insertionTableOffset); ++ insertionTable = LEReferenceToArrayOf<le_uint16>(stHeader, success, insertionTableOffset, LE_UNBOUNDED_ARRAY); ++ entryTable = LEReferenceToArrayOf<ContextualGlyphInsertionStateEntry2>(stHeader, success, entryTableOffset, LE_UNBOUNDED_ARRAY); ++} ++ ++ContextualGlyphInsertionProcessor2::~ContextualGlyphInsertionProcessor2() ++{ ++} ++ ++void ContextualGlyphInsertionProcessor2::beginStateTable() ++{ ++ markGlyph = 0; ++} ++ ++void ContextualGlyphInsertionProcessor2::doInsertion(LEGlyphStorage &glyphStorage, ++ le_int16 atGlyph, ++ le_int16 &index, ++ le_int16 count, ++ le_bool /* isKashidaLike */, ++ le_bool isBefore, ++ LEErrorCode &success) { ++ LEGlyphID *insertGlyphs = glyphStorage.insertGlyphs(atGlyph, count + 1, success); ++ ++ if(LE_FAILURE(success) || insertGlyphs==NULL) { ++ return; ++ } ++ ++ // Note: Kashida vs Split Vowel seems to only affect selection and highlighting. ++ // We note the flag, but do not layout different. ++ // https://developer.apple.com/fonts/TTRefMan/RM06/Chap6mort.html ++ ++ le_int16 targetIndex = 0; ++ if(isBefore) { ++ // insert at beginning ++ insertGlyphs[targetIndex++] = glyphStorage[atGlyph]; ++ } else { ++ // insert at end ++ insertGlyphs[count] = glyphStorage[atGlyph]; ++ } ++ ++ while(count--) { ++ insertGlyphs[targetIndex++] = insertionTable.getObject(index++, success); ++ } ++ glyphStorage.applyInsertions(); ++} ++ ++le_uint16 ContextualGlyphInsertionProcessor2::processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, ++ EntryTableIndex2 index, LEErrorCode &success) ++{ ++ const ContextualGlyphInsertionStateEntry2 *entry = entryTable.getAlias(index, success); ++ ++ if(LE_FAILURE(success)) return 0; // TODO- which state? ++ ++ le_uint16 newState = SWAPW(entry->newStateIndex); ++ le_uint16 flags = SWAPW(entry->flags); ++ ++ le_int16 markIndex = SWAPW(entry->markedInsertionListIndex); ++ if (markIndex > 0) { ++ le_int16 count = (flags & cgiMarkedInsertCountMask) >> 5; ++ le_bool isKashidaLike = (flags & cgiMarkedIsKashidaLike); ++ le_bool isBefore = (flags & cgiMarkInsertBefore); ++ doInsertion(glyphStorage, markGlyph, markIndex, count, isKashidaLike, isBefore, success); ++ } ++ ++ le_int16 currIndex = SWAPW(entry->currentInsertionListIndex); ++ if (currIndex > 0) { ++ le_int16 count = flags & cgiCurrentInsertCountMask; ++ le_bool isKashidaLike = (flags & cgiCurrentIsKashidaLike); ++ le_bool isBefore = (flags & cgiCurrentInsertBefore); ++ doInsertion(glyphStorage, currGlyph, currIndex, count, isKashidaLike, isBefore, success); ++ } ++ ++ if (flags & cgiSetMark) { ++ markGlyph = currGlyph; ++ } ++ ++ if (!(flags & cgiDontAdvance)) { ++ currGlyph += dir; ++ } ++ ++ return newState; ++} ++ ++void ContextualGlyphInsertionProcessor2::endStateTable() ++{ ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/ContextualGlyphInsertionProc2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/ContextualGlyphInsertionProc2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,106 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __CONTEXTUALGLYPHINSERTIONPROCESSOR2_H ++#define __CONTEXTUALGLYPHINSERTIONPROCESSOR2_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "StateTableProcessor2.h" ++#include "ContextualGlyphInsertionProc2.h" ++#include "ContextualGlyphInsertion.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++class ContextualGlyphInsertionProcessor2 : public StateTableProcessor2 ++{ ++public: ++ virtual void beginStateTable(); ++ ++ virtual le_uint16 processStateEntry(LEGlyphStorage &glyphStorage, ++ le_int32 &currGlyph, EntryTableIndex2 index, LEErrorCode &success); ++ ++ virtual void endStateTable(); ++ ++ ContextualGlyphInsertionProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ virtual ~ContextualGlyphInsertionProcessor2(); ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for the actual class. ++ * ++ * @stable ICU 2.8 ++ */ ++ virtual UClassID getDynamicClassID() const; ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for this class. ++ * ++ * @stable ICU 2.8 ++ */ ++ static UClassID getStaticClassID(); ++ ++private: ++ ContextualGlyphInsertionProcessor2(); ++ ++ /** ++ * Perform the actual insertion ++ * @param atGlyph index of glyph to insert at ++ * @param index index into the insertionTable (in/out) ++ * @param count number of insertions ++ * @param isKashidaLike Kashida like (vs Split Vowel like). No effect currently. ++ * @param isBefore if true, insert extra glyphs before the marked glyph ++ */ ++ void doInsertion(LEGlyphStorage &glyphStorage, ++ le_int16 atGlyph, ++ le_int16 &index, ++ le_int16 count, ++ le_bool isKashidaLike, ++ le_bool isBefore, ++ LEErrorCode &success); ++ ++ ++protected: ++ le_int32 markGlyph; ++ LEReferenceToArrayOf<le_uint16> insertionTable; ++ LEReferenceToArrayOf<ContextualGlyphInsertionStateEntry2> entryTable; ++ LEReferenceTo<ContextualGlyphInsertionHeader2> contextualGlyphHeader; ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc.cpp 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -43,13 +43,18 @@ + + UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ContextualGlyphSubstitutionProcessor) + +-ContextualGlyphSubstitutionProcessor::ContextualGlyphSubstitutionProcessor(const MorphSubtableHeader *morphSubtableHeader) +- : StateTableProcessor(morphSubtableHeader) ++ContextualGlyphSubstitutionProcessor::ContextualGlyphSubstitutionProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) ++ : StateTableProcessor(morphSubtableHeader, success), entryTable(), contextualGlyphSubstitutionHeader(morphSubtableHeader, success) + { +- contextualGlyphSubstitutionHeader = (const ContextualGlyphSubstitutionHeader *) morphSubtableHeader; +- substitutionTableOffset = SWAPW(contextualGlyphSubstitutionHeader->substitutionTableOffset); ++ contextualGlyphSubstitutionHeader.orphan(); ++ substitutionTableOffset = SWAPW(contextualGlyphSubstitutionHeader->substitutionTableOffset); + +- entryTable = (const ContextualGlyphSubstitutionStateEntry *) ((char *) &stateTableHeader->stHeader + entryTableOffset); ++ ++ entryTable = LEReferenceToArrayOf<ContextualGlyphSubstitutionStateEntry>(stateTableHeader, success, ++ (const ContextualGlyphSubstitutionStateEntry*)(&stateTableHeader->stHeader), ++ entryTableOffset, LE_UNBOUNDED_ARRAY); ++ int16Table = LEReferenceToArrayOf<le_int16>(stateTableHeader, success, (const le_int16*)(&stateTableHeader->stHeader), ++ 0, LE_UNBOUNDED_ARRAY); // rest of the table as le_int16s + } + + ContextualGlyphSubstitutionProcessor::~ContextualGlyphSubstitutionProcessor() +@@ -63,27 +68,26 @@ + + ByteOffset ContextualGlyphSubstitutionProcessor::processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex index) + { +- const ContextualGlyphSubstitutionStateEntry *entry = &entryTable[index]; +- ByteOffset newState = SWAPW(entry->newStateOffset); +- le_int16 flags = SWAPW(entry->flags); +- WordOffset markOffset = SWAPW(entry->markOffset); +- WordOffset currOffset = SWAPW(entry->currOffset); +- +- if (markOffset != 0) { +- const le_int16 *table = (const le_int16 *) ((char *) &stateTableHeader->stHeader + markOffset * 2); +- LEGlyphID mGlyph = glyphStorage[markGlyph]; +- TTGlyphID newGlyph = SWAPW(table[LE_GET_GLYPH(mGlyph)]); +- +- glyphStorage[markGlyph] = LE_SET_GLYPH(mGlyph, newGlyph); +- } ++ LEErrorCode success = LE_NO_ERROR; ++ const ContextualGlyphSubstitutionStateEntry *entry = entryTable.getAlias(index, success); ++ ByteOffset newState = SWAPW(entry->newStateOffset); ++ le_int16 flags = SWAPW(entry->flags); ++ WordOffset markOffset = SWAPW(entry->markOffset); ++ WordOffset currOffset = SWAPW(entry->currOffset); ++ ++ if (markOffset != 0 && LE_SUCCESS(success)) { ++ LEGlyphID mGlyph = glyphStorage[markGlyph]; ++ TTGlyphID newGlyph = SWAPW(int16Table.getObject(markOffset + LE_GET_GLYPH(mGlyph), success)); // whew. ++ ++ glyphStorage[markGlyph] = LE_SET_GLYPH(mGlyph, newGlyph); ++ } ++ ++ if (currOffset != 0) { ++ LEGlyphID thisGlyph = glyphStorage[currGlyph]; ++ TTGlyphID newGlyph = SWAPW(int16Table.getObject(currOffset + LE_GET_GLYPH(thisGlyph), success)); // whew. + +- if (currOffset != 0) { +- const le_int16 *table = (const le_int16 *) ((char *) &stateTableHeader->stHeader + currOffset * 2); +- LEGlyphID thisGlyph = glyphStorage[currGlyph]; +- TTGlyphID newGlyph = SWAPW(table[LE_GET_GLYPH(thisGlyph)]); +- +- glyphStorage[currGlyph] = LE_SET_GLYPH(thisGlyph, newGlyph); +- } ++ glyphStorage[currGlyph] = LE_SET_GLYPH(thisGlyph, newGlyph); ++ } + + if (flags & cgsSetMark) { + markGlyph = currGlyph; +--- jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc.h 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc.h 2013-05-05 09:38:38.000000000 -0700 +@@ -56,7 +56,7 @@ + + virtual void endStateTable(); + +- ContextualGlyphSubstitutionProcessor(const MorphSubtableHeader *morphSubtableHeader); ++ ContextualGlyphSubstitutionProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); + virtual ~ContextualGlyphSubstitutionProcessor(); + + /** +@@ -78,11 +78,11 @@ + + protected: + ByteOffset substitutionTableOffset; +- const ContextualGlyphSubstitutionStateEntry *entryTable; +- ++ LEReferenceToArrayOf<ContextualGlyphSubstitutionStateEntry> entryTable; ++ LEReferenceToArrayOf<le_int16> int16Table; + le_int32 markGlyph; + +- const ContextualGlyphSubstitutionHeader *contextualGlyphSubstitutionHeader; ++ LEReferenceTo<ContextualGlyphSubstitutionHeader> contextualGlyphSubstitutionHeader; + + }; + +--- jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,170 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "StateTables.h" ++#include "MorphStateTables.h" ++#include "SubtableProcessor2.h" ++#include "StateTableProcessor2.h" ++#include "ContextualGlyphSubstProc2.h" ++#include "LEGlyphStorage.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ContextualGlyphSubstitutionProcessor2) ++ ++ContextualGlyphSubstitutionProcessor2::ContextualGlyphSubstitutionProcessor2( ++ const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : StateTableProcessor2(morphSubtableHeader, success), contextualGlyphHeader(morphSubtableHeader, success) ++{ ++ if(LE_FAILURE(success)) return; ++ le_uint32 perGlyphTableOffset = SWAPL(contextualGlyphHeader->perGlyphTableOffset); ++ perGlyphTable = LEReferenceToArrayOf<le_uint32> (stHeader, success, perGlyphTableOffset, LE_UNBOUNDED_ARRAY); ++ entryTable = LEReferenceToArrayOf<ContextualGlyphStateEntry2>(stHeader, success, entryTableOffset, LE_UNBOUNDED_ARRAY); ++} ++ ++ContextualGlyphSubstitutionProcessor2::~ContextualGlyphSubstitutionProcessor2() ++{ ++} ++ ++void ContextualGlyphSubstitutionProcessor2::beginStateTable() ++{ ++ markGlyph = 0; ++} ++ ++le_uint16 ContextualGlyphSubstitutionProcessor2::processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, ++ EntryTableIndex2 index, LEErrorCode &success) ++{ ++ if(LE_FAILURE(success)) return 0; ++ const ContextualGlyphStateEntry2 *entry = entryTable.getAlias(index, success); ++ if(LE_FAILURE(success)) return 0; ++ le_uint16 newState = SWAPW(entry->newStateIndex); ++ le_uint16 flags = SWAPW(entry->flags); ++ le_int16 markIndex = SWAPW(entry->markIndex); ++ le_int16 currIndex = SWAPW(entry->currIndex); ++ ++ if (markIndex != -1) { ++ le_uint32 offset = SWAPL(perGlyphTable(markIndex, success)); ++ LEGlyphID mGlyph = glyphStorage[markGlyph]; ++ TTGlyphID newGlyph = lookup(offset, mGlyph, success); ++ glyphStorage[markGlyph] = LE_SET_GLYPH(mGlyph, newGlyph); ++ } ++ ++ if (currIndex != -1) { ++ le_uint32 offset = SWAPL(perGlyphTable(currIndex, success)); ++ LEGlyphID thisGlyph = glyphStorage[currGlyph]; ++ TTGlyphID newGlyph = lookup(offset, thisGlyph, success); ++ glyphStorage[currGlyph] = LE_SET_GLYPH(thisGlyph, newGlyph); ++ } ++ ++ if (flags & cgsSetMark) { ++ markGlyph = currGlyph; ++ } ++ ++ if (!(flags & cgsDontAdvance)) { ++ currGlyph += dir; ++ } ++ ++ return newState; ++} ++ ++TTGlyphID ContextualGlyphSubstitutionProcessor2::lookup(le_uint32 offset, LEGlyphID gid, LEErrorCode &success) ++{ ++ TTGlyphID newGlyph = 0xFFFF; ++ if(LE_FAILURE(success)) return newGlyph; ++ LEReferenceTo<LookupTable> lookupTable(perGlyphTable, success, offset); ++ if(LE_FAILURE(success)) return newGlyph; ++ le_int16 format = SWAPW(lookupTable->format); ++ ++ switch (format) { ++ case ltfSimpleArray: { ++#ifdef TEST_FORMAT ++ // Disabled pending for design review ++ LEReferenceTo<SimpleArrayLookupTable> lookupTable0(lookupTable, success); ++ LEReferenceToArrayOf<LookupValue> valueArray(lookupTable0, success, &lookupTable0->valueArray[0], LE_UNBOUNDED_ARRAY); ++ if(LE_FAILURE(success)) return newGlyph; ++ TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(gid); ++ newGlyph = SWAPW(lookupTable0->valueArray(glyphCode, success)); ++#endif ++ break; ++ } ++ case ltfSegmentSingle: { ++#ifdef TEST_FORMAT ++ // Disabled pending for design review ++ LEReferenceTo<SegmentSingleLookupTable> lookupTable2 = (SegmentSingleLookupTable *) lookupTable; ++ const LookupSegment *segment = lookupTable2->lookupSegment(lookupTable2->segments, gid); ++ if (segment != NULL) { ++ newGlyph = SWAPW(segment->value); ++ } ++#endif ++ break; ++ } ++ case ltfSegmentArray: { ++ //printf("Context Lookup Table Format4: specific interpretation needed!\n"); ++ break; ++ } ++ case ltfSingleTable: ++ { ++#ifdef TEST_FORMAT ++ // Disabled pending for design review ++ LEReferenceTo<SingleTableLookupTable> lookupTable6 = (SingleTableLookupTable *) lookupTable; ++ const LEReferenceTo<LookupSingle> segment = lookupTable6->lookupSingle(lookupTable6->entries, gid); ++ if (segment != NULL) { ++ newGlyph = SWAPW(segment->value); ++ } ++#endif ++ break; ++ } ++ case ltfTrimmedArray: { ++ LEReferenceTo<TrimmedArrayLookupTable> lookupTable8(lookupTable, success); ++ if (LE_FAILURE(success)) return newGlyph; ++ TTGlyphID firstGlyph = SWAPW(lookupTable8->firstGlyph); ++ TTGlyphID glyphCount = SWAPW(lookupTable8->glyphCount); ++ TTGlyphID lastGlyph = firstGlyph + glyphCount; ++ TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(gid); ++ if ((glyphCode >= firstGlyph) && (glyphCode < lastGlyph)) { ++ LEReferenceToArrayOf<LookupValue> valueArray(lookupTable8, success, &lookupTable8->valueArray[0], glyphCount); ++ newGlyph = SWAPW(valueArray(glyphCode - firstGlyph, success)); ++ } ++ } ++ default: ++ break; ++ } ++ return newGlyph; ++} ++ ++void ContextualGlyphSubstitutionProcessor2::endStateTable() ++{ ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,92 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __CONTEXTUALGLYPHSUBSTITUTIONPROCESSOR2_H ++#define __CONTEXTUALGLYPHSUBSTITUTIONPROCESSOR2_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "StateTableProcessor2.h" ++#include "ContextualGlyphSubstitution.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++class ContextualGlyphSubstitutionProcessor2 : public StateTableProcessor2 ++{ ++public: ++ virtual void beginStateTable(); ++ ++ virtual le_uint16 processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex2 index, LEErrorCode &success); ++ ++ virtual void endStateTable(); ++ ++ ContextualGlyphSubstitutionProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ virtual ~ContextualGlyphSubstitutionProcessor2(); ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for the actual class. ++ * ++ * @stable ICU 2.8 ++ */ ++ virtual UClassID getDynamicClassID() const; ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for this class. ++ * ++ * @stable ICU 2.8 ++ */ ++ static UClassID getStaticClassID(); ++ ++private: ++ ContextualGlyphSubstitutionProcessor2(); ++ TTGlyphID lookup(le_uint32 offset, LEGlyphID gid, LEErrorCode &success); ++ ++protected: ++ LEReferenceToArrayOf<le_uint32> perGlyphTable; ++ LEReferenceToArrayOf<ContextualGlyphStateEntry2> entryTable; ++ ++ le_int16 perGlyphTableFormat; ++ le_int32 markGlyph; ++ ++ LEReferenceTo<ContextualGlyphHeader2> contextualGlyphHeader; ++ ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/ContextualGlyphSubstitution.h 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ContextualGlyphSubstitution.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -49,6 +49,11 @@ + ByteOffset substitutionTableOffset; + }; + ++struct ContextualGlyphHeader2 : MorphStateTableHeader2 ++{ ++ le_uint32 perGlyphTableOffset; // no more substitution tables ++}; ++ + enum ContextualGlyphSubstitutionFlags + { + cgsSetMark = 0x8000, +@@ -62,5 +67,11 @@ + WordOffset currOffset; + }; + ++struct ContextualGlyphStateEntry2 : StateEntry2 ++{ ++ le_uint16 markIndex; ++ le_uint16 currIndex; ++}; ++ + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.cpp 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -217,7 +217,7 @@ + } + + LEGlyphID glyph = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(glyph); ++ le_int32 coverageIndex = getGlyphCoverage(lookupProcessor->getReference(), glyph, success); + + if (coverageIndex >= 0) { + le_uint16 srSetCount = SWAPW(subRuleSetCount); +@@ -266,7 +266,7 @@ + } + + LEGlyphID glyph = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(glyph); ++ le_int32 coverageIndex = getGlyphCoverage(lookupProcessor->getReference(), glyph, success); + + if (coverageIndex >= 0) { + const ClassDefinitionTable *classDefinitionTable = +@@ -394,7 +394,7 @@ + } + + LEGlyphID glyph = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(glyph); ++ le_int32 coverageIndex = getGlyphCoverage(lookupProcessor->getReference(), glyph, success); + + if (coverageIndex >= 0) { + le_uint16 srSetCount = SWAPW(chainSubRuleSetCount); +@@ -465,7 +465,7 @@ + } + + LEGlyphID glyph = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(glyph); ++ le_int32 coverageIndex = getGlyphCoverage(lookupProcessor->getReference(), glyph, success); + + if (coverageIndex >= 0) { + const ClassDefinitionTable *backtrackClassDefinitionTable = +--- jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.h 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -43,6 +43,7 @@ + #include "GlyphSubstitutionTables.h" + #include "GlyphIterator.h" + #include "LookupProcessor.h" ++#include "LETableReference.h" + + U_NAMESPACE_BEGIN + +@@ -88,6 +89,8 @@ + + le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const; + }; ++LE_VAR_ARRAY(ContextualSubstitutionFormat1Subtable, subRuleSetTableOffsetArray) ++ + + struct SubRuleSetTable + { +@@ -95,6 +98,7 @@ + Offset subRuleTableOffsetArray[ANY_NUMBER]; + + }; ++LE_VAR_ARRAY(SubRuleSetTable, subRuleTableOffsetArray) + + // NOTE: Multiple variable size arrays!! + struct SubRuleTable +@@ -104,6 +108,7 @@ + TTGlyphID inputGlyphArray[ANY_NUMBER]; + //SubstitutionLookupRecord substLookupRecordArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(SubRuleTable, inputGlyphArray) + + struct ContextualSubstitutionFormat2Subtable : ContextualSubstitutionSubtable + { +@@ -113,12 +118,16 @@ + + le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const; + }; ++LE_VAR_ARRAY(ContextualSubstitutionFormat2Subtable, subClassSetTableOffsetArray) ++ + + struct SubClassSetTable + { + le_uint16 subClassRuleCount; + Offset subClassRuleTableOffsetArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(SubClassSetTable, subClassRuleTableOffsetArray) ++ + + // NOTE: Multiple variable size arrays!! + struct SubClassRuleTable +@@ -128,6 +137,8 @@ + le_uint16 classArray[ANY_NUMBER]; + //SubstitutionLookupRecord substLookupRecordArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(SubClassRuleTable, classArray) ++ + + // NOTE: This isn't a subclass of GlyphSubstitutionSubtable 'cause + // it has an array of coverage tables instead of a single coverage table... +@@ -143,6 +154,7 @@ + + le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const; + }; ++LE_VAR_ARRAY(ContextualSubstitutionFormat3Subtable, coverageTableOffsetArray) + + struct ChainingContextualSubstitutionSubtable : ContextualSubstitutionBase + { +@@ -156,6 +168,8 @@ + + le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const; + }; ++LE_VAR_ARRAY(ChainingContextualSubstitutionFormat1Subtable, chainSubRuleSetTableOffsetArray) ++ + + struct ChainSubRuleSetTable + { +@@ -163,6 +177,7 @@ + Offset chainSubRuleTableOffsetArray[ANY_NUMBER]; + + }; ++LE_VAR_ARRAY(ChainSubRuleSetTable, chainSubRuleTableOffsetArray) + + // NOTE: Multiple variable size arrays!! + struct ChainSubRuleTable +@@ -176,6 +191,7 @@ + //le_uint16 substCount; + //SubstitutionLookupRecord substLookupRecordArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(ChainSubRuleTable, backtrackGlyphArray) + + struct ChainingContextualSubstitutionFormat2Subtable : ChainingContextualSubstitutionSubtable + { +@@ -187,12 +203,15 @@ + + le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const; + }; ++LE_VAR_ARRAY(ChainingContextualSubstitutionFormat2Subtable, chainSubClassSetTableOffsetArray) + + struct ChainSubClassSetTable + { + le_uint16 chainSubClassRuleCount; + Offset chainSubClassRuleTableOffsetArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(ChainSubClassSetTable, chainSubClassRuleTableOffsetArray) ++ + + // NOTE: Multiple variable size arrays!! + struct ChainSubClassRuleTable +@@ -206,6 +225,7 @@ + //le_uint16 substCount; + //SubstitutionLookupRecord substLookupRecordArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(ChainSubClassRuleTable, backtrackClassArray) + + // NOTE: This isn't a subclass of GlyphSubstitutionSubtable 'cause + // it has arrays of coverage tables instead of a single coverage table... +@@ -225,6 +245,8 @@ + + le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const; + }; ++LE_VAR_ARRAY(ChainingContextualSubstitutionFormat3Subtable, backtrackCoverageTableOffsetArray) ++ + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/CoverageTables.h 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/CoverageTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -56,6 +56,8 @@ + + le_int32 getGlyphCoverage(LEGlyphID glyphID) const; + }; ++LE_VAR_ARRAY(CoverageFormat1Table, glyphArray) ++ + + struct CoverageFormat2Table : CoverageTable + { +@@ -64,6 +66,7 @@ + + le_int32 getGlyphCoverage(LEGlyphID glyphID) const; + }; ++LE_VAR_ARRAY(CoverageFormat2Table, rangeRecordArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -39,10 +39,10 @@ + + U_NAMESPACE_BEGIN + +-le_uint32 CursiveAttachmentSubtable::process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const ++le_uint32 CursiveAttachmentSubtable::process(const LEReferenceTo<CursiveAttachmentSubtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const + { + LEGlyphID glyphID = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(glyphID); ++ le_int32 coverageIndex = getGlyphCoverage(base, glyphID, success); + le_uint16 eeCount = SWAPW(entryExitCount); + + if (coverageIndex < 0 || coverageIndex >= eeCount) { +@@ -51,7 +51,7 @@ + } + + LEPoint entryAnchor, exitAnchor; +- Offset entryOffset = SWAPW(entryExitRecords[coverageIndex].entryAnchor); ++ Offset entryOffset = SWAPW(entryExitRecords[coverageIndex].entryAnchor); // TODO + Offset exitOffset = SWAPW(entryExitRecords[coverageIndex].exitAnchor); + + if (entryOffset != 0) { +--- jdk/src/share/native/sun/font/layout/CursiveAttachmentSubtables.h 2012-08-10 10:30:31.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/CursiveAttachmentSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -57,8 +57,9 @@ + le_uint16 entryExitCount; + EntryExitRecord entryExitRecords[ANY_NUMBER]; + +- le_uint32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; ++ le_uint32 process(const LEReferenceTo<CursiveAttachmentSubtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const; + }; ++LE_VAR_ARRAY(CursiveAttachmentSubtable, entryExitRecords) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/DeviceTables.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/DeviceTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -57,6 +57,7 @@ + static const le_uint16 fieldSignBits[]; + static const le_uint16 fieldBits[]; + }; ++LE_VAR_ARRAY(DeviceTable, deltaValues) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/ExtensionSubtables.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ExtensionSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -47,6 +47,8 @@ + le_uint32 ExtensionSubtable::process(const LookupProcessor *lookupProcessor, le_uint16 lookupType, + GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const + { ++ const LEReferenceTo<ExtensionSubtable> thisRef(lookupProcessor->getReference(), success); // create a reference to this ++ + if (LE_FAILURE(success)) { + return 0; + } +@@ -55,9 +57,11 @@ + + if (elt != lookupType) { + le_uint32 extOffset = READ_LONG(extensionOffset); +- LookupSubtable *subtable = (LookupSubtable *) ((char *) this + extOffset); ++ LEReferenceTo<LookupSubtable> subtable(thisRef, success, extOffset); + +- return lookupProcessor->applySubtable(subtable, elt, glyphIterator, fontInstance, success); ++ if(LE_SUCCESS(success)) { ++ return lookupProcessor->applySubtable(subtable, elt, glyphIterator, fontInstance, success); ++ } + } + + return 0; +--- jdk/src/share/native/sun/font/layout/Features.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/Features.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -38,19 +38,20 @@ + + U_NAMESPACE_BEGIN + +-const FeatureTable *FeatureListTable::getFeatureTable(le_uint16 featureIndex, LETag *featureTag) const ++LEReferenceTo<FeatureTable> FeatureListTable::getFeatureTable(const LETableReference &base, le_uint16 featureIndex, LETag *featureTag, LEErrorCode &success) const + { +- if (featureIndex >= SWAPW(featureCount)) { +- return 0; +- } ++ if (featureIndex >= SWAPW(featureCount) || LE_FAILURE(success)) { ++ return LEReferenceTo<FeatureTable>(); ++ } + + Offset featureTableOffset = featureRecordArray[featureIndex].featureTableOffset; + + *featureTag = SWAPT(featureRecordArray[featureIndex].featureTag); + +- return (const FeatureTable *) ((char *) this + SWAPW(featureTableOffset)); ++ return LEReferenceTo<FeatureTable>(base, success, SWAPW(featureTableOffset)); + } + ++#if 0 + /* + * Note: according to the OpenType Spec. v 1.4, the entries in the Feature + * List Table are sorted alphabetically by feature tag; however, there seem +@@ -82,5 +83,6 @@ + return 0; + #endif + } ++#endif + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/GDEFMarkFilter.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GDEFMarkFilter.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -36,9 +36,12 @@ + + U_NAMESPACE_BEGIN + +-GDEFMarkFilter::GDEFMarkFilter(const GlyphDefinitionTableHeader *gdefTable) ++GDEFMarkFilter::GDEFMarkFilter(const LEReferenceTo<GlyphDefinitionTableHeader> &gdefTable, LEErrorCode &success) ++ : classDefTable(gdefTable->getGlyphClassDefinitionTable(gdefTable, success)) + { +- classDefTable = gdefTable->getGlyphClassDefinitionTable(); ++ if(!classDefTable.isValid()) { ++ success = LE_INTERNAL_ERROR; ++ } + } + + GDEFMarkFilter::~GDEFMarkFilter() +--- jdk/src/share/native/sun/font/layout/GDEFMarkFilter.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GDEFMarkFilter.h 2013-05-05 09:38:38.000000000 -0700 +@@ -46,13 +46,13 @@ + class GDEFMarkFilter : public UMemory, public LEGlyphFilter + { + private: +- const GlyphClassDefinitionTable *classDefTable; ++ const LEReferenceTo<GlyphClassDefinitionTable> classDefTable; + + GDEFMarkFilter(const GDEFMarkFilter &other); // forbid copying of this class + GDEFMarkFilter &operator=(const GDEFMarkFilter &other); // forbid copying of this class + + public: +- GDEFMarkFilter(const GlyphDefinitionTableHeader *gdefTable); ++ GDEFMarkFilter(const LEReferenceTo<GlyphDefinitionTableHeader> &gdefTable, LEErrorCode &success); + virtual ~GDEFMarkFilter(); + + virtual le_bool accept(LEGlyphID glyph) const; +--- jdk/src/share/native/sun/font/layout/GXLayoutEngine.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GXLayoutEngine.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -41,9 +41,10 @@ + + UOBJECT_DEFINE_RTTI_IMPLEMENTATION(GXLayoutEngine) + +-GXLayoutEngine::GXLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, const MorphTableHeader *morphTable, LEErrorCode &success) ++ GXLayoutEngine::GXLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, const LEReferenceTo<MorphTableHeader> &morphTable, LEErrorCode &success) + : LayoutEngine(fontInstance, scriptCode, languageCode, 0, success), fMorphTable(morphTable) + { ++ fMorphTable.orphan(); + // nothing else to do? + } + +@@ -70,7 +71,7 @@ + return 0; + } + +- fMorphTable->process(glyphStorage); ++ fMorphTable->process(fMorphTable, glyphStorage, success); + + return count; + } +--- jdk/src/share/native/sun/font/layout/GXLayoutEngine.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GXLayoutEngine.h 2013-05-05 09:38:38.000000000 -0700 +@@ -74,7 +74,7 @@ + * + * @internal + */ +- GXLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, const MorphTableHeader *morphTable, LEErrorCode &success); ++ GXLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, const LEReferenceTo<MorphTableHeader> &morphTable, LEErrorCode &success); + + /** + * The destructor, virtual for correct polymorphic invocation. +@@ -104,7 +104,7 @@ + * + * @internal + */ +- const MorphTableHeader *fMorphTable; ++ LEReferenceTo<MorphTableHeader> fMorphTable; + + /** + * This method does GX layout using the font's 'mort' table. It converts the +--- jdk/src/share/native/sun/font/layout/GXLayoutEngine2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/GXLayoutEngine2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,91 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "LayoutEngine.h" ++#include "GXLayoutEngine2.h" ++#include "LEGlyphStorage.h" ++#include "MorphTables.h" ++ ++U_NAMESPACE_BEGIN ++ ++UOBJECT_DEFINE_RTTI_IMPLEMENTATION(GXLayoutEngine2) ++ ++GXLayoutEngine2::GXLayoutEngine2(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, const LEReferenceTo<MorphTableHeader2> &morphTable, le_int32 typoFlags, LEErrorCode &success) ++ : LayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success), fMorphTable(morphTable) ++{ ++ // nothing else to do? ++} ++ ++GXLayoutEngine2::~GXLayoutEngine2() ++{ ++ reset(); ++} ++ ++// apply 'morx' table ++le_int32 GXLayoutEngine2::computeGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, LEGlyphStorage &glyphStorage, LEErrorCode &success) ++{ ++ if (LE_FAILURE(success)) { ++ return 0; ++ } ++ ++ if (chars == NULL || offset < 0 || count < 0 || max < 0 || offset >= max || offset + count > max) { ++ success = LE_ILLEGAL_ARGUMENT_ERROR; ++ return 0; ++ } ++ ++ mapCharsToGlyphs(chars, offset, count, rightToLeft, rightToLeft, glyphStorage, success); ++ ++ if (LE_FAILURE(success)) { ++ return 0; ++ } ++ ++ fMorphTable->process(fMorphTable, glyphStorage, fTypoFlags, success); ++ return count; ++} ++ ++// apply positional tables ++void GXLayoutEngine2::adjustGlyphPositions(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool /*reverse*/, ++ LEGlyphStorage &/*glyphStorage*/, LEErrorCode &success) ++{ ++ if (LE_FAILURE(success)) { ++ return; ++ } ++ ++ if (chars == NULL || offset < 0 || count < 0) { ++ success = LE_ILLEGAL_ARGUMENT_ERROR; ++ return; ++ } ++ ++ // FIXME: no positional processing yet... ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/GXLayoutEngine2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/GXLayoutEngine2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,149 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __GXLAYOUTENGINE2_H ++#define __GXLAYOUTENGINE2_H ++ ++#include "LETypes.h" ++#include "LayoutEngine.h" ++ ++#include "MorphTables.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEFontInstance; ++class LEGlyphStorage; ++ ++/** ++ * This class implements layout for QuickDraw GX or Apple Advanced Typograyph (AAT) ++ * fonts. A font is a GX or AAT font if it contains a 'mort' table. See Apple's ++ * TrueType Reference Manual (http://fonts.apple.com/TTRefMan/index.html) for details. ++ * Information about 'mort' tables is in the chapter titled "Font Files." ++ * ++ * @internal ++ */ ++class GXLayoutEngine2 : public LayoutEngine ++{ ++public: ++ /** ++ * This is the main constructor. It constructs an instance of GXLayoutEngine for ++ * a particular font, script and language. It takes the 'mort' table as a parameter since ++ * LayoutEngine::layoutEngineFactory has to read the 'mort' table to know that it has a ++ * GX font. ++ * ++ * Note: GX and AAT fonts don't contain any script and language specific tables, so ++ * the script and language are ignored. ++ * ++ * @param fontInstance - the font ++ * @param scriptCode - the script ++ * @param langaugeCode - the language ++ * @param morphTable - the 'mort' table ++ * @param success - set to an error code if the operation fails ++ * ++ * @see LayoutEngine::layoutEngineFactory ++ * @see ScriptAndLangaugeTags.h for script and language codes ++ * ++ * @internal ++ */ ++ GXLayoutEngine2(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, const LEReferenceTo<MorphTableHeader2> &morphTable, le_int32 typoFlags, LEErrorCode &success); ++ ++ /** ++ * The destructor, virtual for correct polymorphic invocation. ++ * ++ * @internal ++ */ ++ virtual ~GXLayoutEngine2(); ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for the actual class. ++ * ++ * @stable ICU 2.8 ++ */ ++ virtual UClassID getDynamicClassID() const; ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for this class. ++ * ++ * @stable ICU 2.8 ++ */ ++ static UClassID getStaticClassID(); ++ ++protected: ++ ++ /** ++ * The address of the 'mort' table ++ * ++ * @internal ++ */ ++ const LEReferenceTo<MorphTableHeader2> fMorphTable; ++ ++ /** ++ * This method does GX layout using the font's 'mort' table. It converts the ++ * input character codes to glyph indices using mapCharsToGlyphs, and then ++ * applies the 'mort' table. ++ * ++ * Input parameters: ++ * @param chars - the input character context ++ * @param offset - the index of the first character to process ++ * @param count - the number of characters to process ++ * @param max - the number of characters in the input context ++ * @param rightToLeft - <code>TRUE</code> if the text is in a right to left directional run ++ * @param glyphStorage - the glyph storage object. The glyph and char index arrays will be set. ++ * ++ * Output parameters: ++ * @param success - set to an error code if the operation fails ++ * ++ * @return the number of glyphs in the glyph index array ++ * ++ * @internal ++ */ ++ virtual le_int32 computeGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, ++ LEGlyphStorage &glyphStorage, LEErrorCode &success); ++ ++ /** ++ * This method adjusts the glyph positions using the font's ++ * 'kern', 'trak', 'bsln', 'opbd' and 'just' tables. ++ * ++ * Input parameters: ++ * @param glyphStorage - the object holding the glyph storage. The positions will be updated as needed. ++ * ++ * Output parameters: ++ * @param success - set to an error code if the operation fails ++ * ++ * @internal ++ */ ++ virtual void adjustGlyphPositions(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, ++ LEGlyphStorage &glyphStorage, LEErrorCode &success); ++ ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/GlyphDefinitionTables.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphDefinitionTables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -36,24 +36,36 @@ + + U_NAMESPACE_BEGIN + +-const GlyphClassDefinitionTable *GlyphDefinitionTableHeader::getGlyphClassDefinitionTable() const ++const LEReferenceTo<GlyphClassDefinitionTable> ++GlyphDefinitionTableHeader::getGlyphClassDefinitionTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base, ++ LEErrorCode &success) const + { +- return (const GlyphClassDefinitionTable *) ((char *) this + SWAPW(glyphClassDefOffset)); ++ if(LE_FAILURE(success)) return LEReferenceTo<GlyphClassDefinitionTable>(); ++ return LEReferenceTo<GlyphClassDefinitionTable>(base, success, SWAPW(glyphClassDefOffset)); + } + +-const AttachmentListTable *GlyphDefinitionTableHeader::getAttachmentListTable() const ++const LEReferenceTo<AttachmentListTable> ++GlyphDefinitionTableHeader::getAttachmentListTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base, ++ LEErrorCode &success) const + { +- return (const AttachmentListTable *) ((char *) this + SWAPW(attachListOffset)); ++ if(LE_FAILURE(success)) return LEReferenceTo<AttachmentListTable>(); ++ return LEReferenceTo<AttachmentListTable>(base, success, SWAPW(attachListOffset)); + } + +-const LigatureCaretListTable *GlyphDefinitionTableHeader::getLigatureCaretListTable() const ++const LEReferenceTo<LigatureCaretListTable> ++GlyphDefinitionTableHeader::getLigatureCaretListTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base, ++ LEErrorCode &success) const + { +- return (const LigatureCaretListTable *) ((char *) this + SWAPW(ligCaretListOffset)); ++ if(LE_FAILURE(success)) return LEReferenceTo<LigatureCaretListTable>(); ++ return LEReferenceTo<LigatureCaretListTable>(base, success, SWAPW(ligCaretListOffset)); + } + +-const MarkAttachClassDefinitionTable *GlyphDefinitionTableHeader::getMarkAttachClassDefinitionTable() const ++const LEReferenceTo<MarkAttachClassDefinitionTable> ++GlyphDefinitionTableHeader::getMarkAttachClassDefinitionTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base, ++ LEErrorCode &success) const + { +- return (const MarkAttachClassDefinitionTable *) ((char *) this + SWAPW(MarkAttachClassDefOffset)); ++ if(LE_FAILURE(success)) return LEReferenceTo<MarkAttachClassDefinitionTable>(); ++ return LEReferenceTo<MarkAttachClassDefinitionTable>(base, success, SWAPW(MarkAttachClassDefOffset)); + } + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/GlyphDefinitionTables.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphDefinitionTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -60,12 +60,14 @@ + le_uint16 glyphCount; + Offset attachPointTableOffsetArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(AttachmentListTable, attachPointTableOffsetArray) + + struct AttachPointTable + { + le_uint16 pointCount; + le_uint16 pointIndexArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(AttachPointTable, pointIndexArray) + + struct LigatureCaretListTable + { +@@ -73,12 +75,14 @@ + le_uint16 ligGlyphCount; + Offset ligGlyphTableOffsetArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(LigatureCaretListTable, ligGlyphTableOffsetArray) + + struct LigatureGlyphTable + { + le_uint16 caretCount; + Offset caretValueTableOffsetArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(LigatureGlyphTable, caretValueTableOffsetArray) + + struct CaretValueTable + { +@@ -111,10 +115,18 @@ + Offset ligCaretListOffset; + Offset MarkAttachClassDefOffset; + +- const GlyphClassDefinitionTable *getGlyphClassDefinitionTable() const; +- const AttachmentListTable *getAttachmentListTable()const ; +- const LigatureCaretListTable *getLigatureCaretListTable() const; +- const MarkAttachClassDefinitionTable *getMarkAttachClassDefinitionTable() const; ++ const LEReferenceTo<GlyphClassDefinitionTable> ++ getGlyphClassDefinitionTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base, ++ LEErrorCode &success) const; ++ const LEReferenceTo<AttachmentListTable> ++ getAttachmentListTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base, ++ LEErrorCode &success)const ; ++ const LEReferenceTo<LigatureCaretListTable> ++ getLigatureCaretListTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base, ++ LEErrorCode &success) const; ++ const LEReferenceTo<MarkAttachClassDefinitionTable> ++ getMarkAttachClassDefinitionTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base, ++ LEErrorCode &success) const; + }; + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/GlyphIterator.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphIterator.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -41,18 +41,21 @@ + U_NAMESPACE_BEGIN + + GlyphIterator::GlyphIterator(LEGlyphStorage &theGlyphStorage, GlyphPositionAdjustments *theGlyphPositionAdjustments, le_bool rightToLeft, le_uint16 theLookupFlags, +- FeatureMask theFeatureMask, const GlyphDefinitionTableHeader *theGlyphDefinitionTableHeader) ++ FeatureMask theFeatureMask, const LEReferenceTo<GlyphDefinitionTableHeader> &theGlyphDefinitionTableHeader) + : direction(1), position(-1), nextLimit(-1), prevLimit(-1), + glyphStorage(theGlyphStorage), glyphPositionAdjustments(theGlyphPositionAdjustments), + srcIndex(-1), destIndex(-1), lookupFlags(theLookupFlags), featureMask(theFeatureMask), glyphGroup(0), +- glyphClassDefinitionTable(NULL), markAttachClassDefinitionTable(NULL) ++ glyphClassDefinitionTable(), markAttachClassDefinitionTable() + + { ++ LEErrorCode success = LE_NO_ERROR; // TODO + le_int32 glyphCount = glyphStorage.getGlyphCount(); + +- if (theGlyphDefinitionTableHeader != NULL) { +- glyphClassDefinitionTable = theGlyphDefinitionTableHeader->getGlyphClassDefinitionTable(); +- markAttachClassDefinitionTable = theGlyphDefinitionTableHeader->getMarkAttachClassDefinitionTable(); ++ if (theGlyphDefinitionTableHeader.isValid()) { ++ glyphClassDefinitionTable = theGlyphDefinitionTableHeader ++ -> getGlyphClassDefinitionTable(theGlyphDefinitionTableHeader, success); ++ markAttachClassDefinitionTable = theGlyphDefinitionTableHeader ++ ->getMarkAttachClassDefinitionTable(theGlyphDefinitionTableHeader, success); + } + + nextLimit = glyphCount; +@@ -380,6 +383,7 @@ + + le_bool GlyphIterator::filterGlyph(le_uint32 index) const + { ++ LEErrorCode success = LE_NO_ERROR; + LEGlyphID glyphID = glyphStorage[index]; + le_int32 glyphClass = gcdNoGlyphClass; + +@@ -387,8 +391,8 @@ + return TRUE; + } + +- if (glyphClassDefinitionTable != NULL) { +- glyphClass = glyphClassDefinitionTable->getGlyphClass(glyphID); ++ if (glyphClassDefinitionTable.isValid()) { ++ glyphClass = glyphClassDefinitionTable->getGlyphClass(glyphClassDefinitionTable, glyphID, success); + } + + switch (glyphClass) +@@ -410,8 +414,9 @@ + + le_uint16 markAttachType = (lookupFlags & lfMarkAttachTypeMask) >> lfMarkAttachTypeShift; + +- if ((markAttachType != 0) && (markAttachClassDefinitionTable != NULL)) { +- return markAttachClassDefinitionTable->getGlyphClass(glyphID) != markAttachType; ++ if ((markAttachType != 0) && (markAttachClassDefinitionTable.isValid())) { ++ return markAttachClassDefinitionTable ++ -> getGlyphClass(markAttachClassDefinitionTable, glyphID, success) != markAttachType; + } + + return FALSE; +@@ -461,6 +466,7 @@ + while (newPosition != nextLimit && delta > 0) { + do { + newPosition += direction; ++ //fprintf(stderr,"%s:%d:%s: newPosition = %d, delta = %d\n", __FILE__, __LINE__, __FUNCTION__, newPosition, delta); + } while (newPosition != nextLimit && filterGlyph(newPosition)); + + delta -= 1; +@@ -468,6 +474,7 @@ + + position = newPosition; + ++ //fprintf(stderr,"%s:%d:%s: exit position = %d, delta = %d\n", __FILE__, __LINE__, __FUNCTION__, position, delta); + return position != nextLimit; + } + +@@ -483,6 +490,7 @@ + while (newPosition != prevLimit && delta > 0) { + do { + newPosition -= direction; ++ //fprintf(stderr,"%s:%d:%s: newPosition = %d, delta = %d\n", __FILE__, __LINE__, __FUNCTION__, newPosition, delta); + } while (newPosition != prevLimit && filterGlyph(newPosition)); + + delta -= 1; +@@ -490,6 +498,7 @@ + + position = newPosition; + ++ //fprintf(stderr,"%s:%d:%s: exit position = %d, delta = %d\n", __FILE__, __LINE__, __FUNCTION__, position, delta); + return position != prevLimit; + } + +--- jdk/src/share/native/sun/font/layout/GlyphIterator.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphIterator.h 2013-05-05 09:38:38.000000000 -0700 +@@ -49,7 +49,7 @@ + class GlyphIterator : public UMemory { + public: + GlyphIterator(LEGlyphStorage &theGlyphStorage, GlyphPositionAdjustments *theGlyphPositionAdjustments, le_bool rightToLeft, le_uint16 theLookupFlags, +- FeatureMask theFeatureMask, const GlyphDefinitionTableHeader *theGlyphDefinitionTableHeader); ++ FeatureMask theFeatureMask, const LEReferenceTo<GlyphDefinitionTableHeader> &theGlyphDefinitionTableHeader); + + GlyphIterator(GlyphIterator &that); + +@@ -117,8 +117,8 @@ + FeatureMask featureMask; + le_int32 glyphGroup; + +- const GlyphClassDefinitionTable *glyphClassDefinitionTable; +- const MarkAttachClassDefinitionTable *markAttachClassDefinitionTable; ++ LEReferenceTo<GlyphClassDefinitionTable> glyphClassDefinitionTable; ++ LEReferenceTo<MarkAttachClassDefinitionTable> markAttachClassDefinitionTable; + + GlyphIterator &operator=(const GlyphIterator &other); // forbid copying of this class + }; +--- jdk/src/share/native/sun/font/layout/GlyphLookupTables.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphLookupTables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -37,21 +37,22 @@ + + U_NAMESPACE_BEGIN + +-le_bool GlyphLookupTableHeader::coversScript(LETag scriptTag) const ++le_bool GlyphLookupTableHeader::coversScript(const LETableReference &base, LETag scriptTag, LEErrorCode &success) const + { +- const ScriptListTable *scriptListTable = (const ScriptListTable *) ((char *)this + SWAPW(scriptListOffset)); ++ LEReferenceTo<ScriptListTable> scriptListTable(base, success, SWAPW(scriptListOffset)); + +- return scriptListOffset != 0 && scriptListTable->findScript(scriptTag) != NULL; ++ return (scriptListOffset != 0) && scriptListTable->findScript(scriptListTable, scriptTag, success) .isValid(); + } + +-le_bool GlyphLookupTableHeader::coversScriptAndLanguage(LETag scriptTag, LETag languageTag, le_bool exactMatch) const ++le_bool GlyphLookupTableHeader::coversScriptAndLanguage(const LETableReference &base, LETag scriptTag, LETag languageTag, LEErrorCode &success, le_bool exactMatch) const + { +- const ScriptListTable *scriptListTable = (const ScriptListTable *) ((char *)this + SWAPW(scriptListOffset)); +- const LangSysTable *langSysTable = scriptListTable->findLanguage(scriptTag, languageTag, exactMatch); ++ LEReferenceTo<ScriptListTable> scriptListTable(base, success, SWAPW(scriptListOffset)); ++ LEReferenceTo<LangSysTable> langSysTable = scriptListTable->findLanguage(scriptListTable, ++ scriptTag, languageTag, success, exactMatch); + + // FIXME: could check featureListOffset, lookupListOffset, and lookup count... + // Note: don't have to SWAPW langSysTable->featureCount to check for non-zero. +- return langSysTable != NULL && langSysTable->featureCount != 0; ++ return LE_SUCCESS(success)&&langSysTable.isValid() && langSysTable->featureCount != 0; + } + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/GlyphLookupTables.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphLookupTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -49,8 +49,8 @@ + Offset featureListOffset; + Offset lookupListOffset; + +- le_bool coversScript(LETag scriptTag) const; +- le_bool coversScriptAndLanguage(LETag scriptTag, LETag languageTag, le_bool exactMatch = FALSE) const; ++ le_bool coversScript(const LETableReference &base, LETag scriptTag, LEErrorCode &success) const; ++ le_bool coversScriptAndLanguage(const LETableReference &base, LETag scriptTag, LETag languageTag, LEErrorCode &success, le_bool exactMatch = FALSE) const; + }; + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/GlyphPositioningTables.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphPositioningTables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -41,16 +41,16 @@ + + U_NAMESPACE_BEGIN + +-void GlyphPositioningTableHeader::process(LEGlyphStorage &glyphStorage, GlyphPositionAdjustments *glyphPositionAdjustments, le_bool rightToLeft, ++void GlyphPositioningTableHeader::process(const LEReferenceTo<GlyphPositioningTableHeader> &base, LEGlyphStorage &glyphStorage, GlyphPositionAdjustments *glyphPositionAdjustments, le_bool rightToLeft, + LETag scriptTag, LETag languageTag, +- const GlyphDefinitionTableHeader *glyphDefinitionTableHeader, LEErrorCode &success, ++ const LEReferenceTo<GlyphDefinitionTableHeader> &glyphDefinitionTableHeader, LEErrorCode &success, + const LEFontInstance *fontInstance, const FeatureMap *featureMap, le_int32 featureMapCount, le_bool featureOrder) const + { + if (LE_FAILURE(success)) { + return; + } + +- GlyphPositioningLookupProcessor processor(this, scriptTag, languageTag, featureMap, featureMapCount, featureOrder, success); ++ GlyphPositioningLookupProcessor processor(base, scriptTag, languageTag, featureMap, featureMapCount, featureOrder, success); + if (LE_FAILURE(success)) { + return; + } +--- jdk/src/share/native/sun/font/layout/GlyphPositioningTables.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphPositioningTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -40,6 +40,7 @@ + #include "OpenTypeTables.h" + #include "Lookups.h" + #include "GlyphLookupTables.h" ++#include "LETableReference.h" + + U_NAMESPACE_BEGIN + +@@ -51,9 +52,9 @@ + + struct GlyphPositioningTableHeader : public GlyphLookupTableHeader + { +- void process(LEGlyphStorage &glyphStorage, GlyphPositionAdjustments *glyphPositionAdjustments, ++ void process(const LEReferenceTo<GlyphPositioningTableHeader> &base, LEGlyphStorage &glyphStorage, GlyphPositionAdjustments *glyphPositionAdjustments, + le_bool rightToLeft, LETag scriptTag, LETag languageTag, +- const GlyphDefinitionTableHeader *glyphDefinitionTableHeader, LEErrorCode &success, ++ const LEReferenceTo<GlyphDefinitionTableHeader> &glyphDefinitionTableHeader, LEErrorCode &success, + const LEFontInstance *fontInstance, const FeatureMap *featureMap, le_int32 featureMapCount, le_bool featureOrder) const; + }; + +--- jdk/src/share/native/sun/font/layout/GlyphPosnLookupProc.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphPosnLookupProc.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -57,7 +57,7 @@ + typedef ChainingContextualSubstitutionSubtable ChainingContextualPositioningSubtable; + + GlyphPositioningLookupProcessor::GlyphPositioningLookupProcessor( +- const GlyphPositioningTableHeader *glyphPositioningTableHeader, ++ const LEReferenceTo<GlyphPositioningTableHeader> &glyphPositioningTableHeader, + LETag scriptTag, + LETag languageTag, + const FeatureMap *featureMap, +@@ -65,7 +65,7 @@ + le_bool featureOrder, + LEErrorCode& success) + : LookupProcessor( +- (char *) glyphPositioningTableHeader, ++ glyphPositioningTableHeader, + SWAPW(glyphPositioningTableHeader->scriptListOffset), + SWAPW(glyphPositioningTableHeader->featureListOffset), + SWAPW(glyphPositioningTableHeader->lookupListOffset), +@@ -84,7 +84,7 @@ + { + } + +-le_uint32 GlyphPositioningLookupProcessor::applySubtable(const LookupSubtable *lookupSubtable, le_uint16 lookupType, ++le_uint32 GlyphPositioningLookupProcessor::applySubtable(const LEReferenceTo<LookupSubtable> &lookupSubtable, le_uint16 lookupType, + GlyphIterator *glyphIterator, + const LEFontInstance *fontInstance, + LEErrorCode& success) const +@@ -102,55 +102,55 @@ + + case gpstSingle: + { +- const SinglePositioningSubtable *subtable = (const SinglePositioningSubtable *) lookupSubtable; ++ LEReferenceTo<SinglePositioningSubtable> subtable(lookupSubtable, success); + +- delta = subtable->process(glyphIterator, fontInstance); ++ delta = subtable->process(subtable, glyphIterator, fontInstance, success); + break; + } + + case gpstPair: + { +- const PairPositioningSubtable *subtable = (const PairPositioningSubtable *) lookupSubtable; ++ LEReferenceTo<PairPositioningSubtable> subtable(lookupSubtable, success); + +- delta = subtable->process(glyphIterator, fontInstance); ++ delta = subtable->process(subtable, glyphIterator, fontInstance, success); + break; + } + + case gpstCursive: + { +- const CursiveAttachmentSubtable *subtable = (const CursiveAttachmentSubtable *) lookupSubtable; ++ LEReferenceTo<CursiveAttachmentSubtable> subtable(lookupSubtable, success); + +- delta = subtable->process(glyphIterator, fontInstance); ++ delta = subtable->process(subtable, glyphIterator, fontInstance, success); + break; + } + + case gpstMarkToBase: + { +- const MarkToBasePositioningSubtable *subtable = (const MarkToBasePositioningSubtable *) lookupSubtable; ++ LEReferenceTo<MarkToBasePositioningSubtable> subtable(lookupSubtable, success); + +- delta = subtable->process(glyphIterator, fontInstance); ++ delta = subtable->process(subtable, glyphIterator, fontInstance, success); + break; + } + + case gpstMarkToLigature: + { +- const MarkToLigaturePositioningSubtable *subtable = (const MarkToLigaturePositioningSubtable *) lookupSubtable; ++ LEReferenceTo<MarkToLigaturePositioningSubtable> subtable(lookupSubtable, success); + +- delta = subtable->process(glyphIterator, fontInstance); ++ delta = subtable->process(subtable, glyphIterator, fontInstance, success); + break; + } + + case gpstMarkToMark: + { +- const MarkToMarkPositioningSubtable *subtable = (const MarkToMarkPositioningSubtable *) lookupSubtable; ++ LEReferenceTo<MarkToMarkPositioningSubtable> subtable(lookupSubtable, success); + +- delta = subtable->process(glyphIterator, fontInstance); ++ delta = subtable->process(subtable, glyphIterator, fontInstance, success); + break; + } + + case gpstContext: + { +- const ContextualPositioningSubtable *subtable = (const ContextualPositioningSubtable *) lookupSubtable; ++ LEReferenceTo<ContextualPositioningSubtable> subtable(lookupSubtable, success); + + delta = subtable->process(this, glyphIterator, fontInstance, success); + break; +@@ -158,7 +158,7 @@ + + case gpstChainedContext: + { +- const ChainingContextualPositioningSubtable *subtable = (const ChainingContextualPositioningSubtable *) lookupSubtable; ++ LEReferenceTo<ChainingContextualPositioningSubtable> subtable(lookupSubtable, success); + + delta = subtable->process(this, glyphIterator, fontInstance, success); + break; +@@ -166,7 +166,7 @@ + + case gpstExtension: + { +- const ExtensionSubtable *subtable = (const ExtensionSubtable *) lookupSubtable; ++ LEReferenceTo<ExtensionSubtable> subtable(lookupSubtable, success); + + delta = subtable->process(this, lookupType, glyphIterator, fontInstance, success); + break; +--- jdk/src/share/native/sun/font/layout/GlyphPosnLookupProc.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphPosnLookupProc.h 2013-05-05 09:38:38.000000000 -0700 +@@ -51,7 +51,7 @@ + class GlyphPositioningLookupProcessor : public LookupProcessor + { + public: +- GlyphPositioningLookupProcessor(const GlyphPositioningTableHeader *glyphPositioningTableHeader, ++ GlyphPositioningLookupProcessor(const LEReferenceTo<GlyphPositioningTableHeader> &glyphPositioningTableHeader, + LETag scriptTag, + LETag languageTag, + const FeatureMap *featureMap, +@@ -61,7 +61,7 @@ + + virtual ~GlyphPositioningLookupProcessor(); + +- virtual le_uint32 applySubtable(const LookupSubtable *lookupSubtable, le_uint16 lookupType, GlyphIterator *glyphIterator, ++ virtual le_uint32 applySubtable(const LEReferenceTo<LookupSubtable> &lookupSubtable, le_uint16 lookupType, GlyphIterator *glyphIterator, + const LEFontInstance *fontInstance, LEErrorCode& success) const; + + protected: +--- jdk/src/share/native/sun/font/layout/GlyphSubstLookupProc.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphSubstLookupProc.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -51,7 +51,7 @@ + U_NAMESPACE_BEGIN + + GlyphSubstitutionLookupProcessor::GlyphSubstitutionLookupProcessor( +- const GlyphSubstitutionTableHeader *glyphSubstitutionTableHeader, ++ const LEReferenceTo<GlyphSubstitutionTableHeader> &glyphSubstitutionTableHeader, + LETag scriptTag, + LETag languageTag, + const LEGlyphFilter *filter, +@@ -60,7 +60,7 @@ + le_bool featureOrder, + LEErrorCode& success) + : LookupProcessor( +- (char *) glyphSubstitutionTableHeader, ++ glyphSubstitutionTableHeader, + SWAPW(glyphSubstitutionTableHeader->scriptListOffset), + SWAPW(glyphSubstitutionTableHeader->featureListOffset), + SWAPW(glyphSubstitutionTableHeader->lookupListOffset), +@@ -73,7 +73,7 @@ + { + } + +-le_uint32 GlyphSubstitutionLookupProcessor::applySubtable(const LookupSubtable *lookupSubtable, le_uint16 lookupType, ++le_uint32 GlyphSubstitutionLookupProcessor::applySubtable(const LEReferenceTo<LookupSubtable> &lookupSubtable, le_uint16 lookupType, + GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const + { + if (LE_FAILURE(success)) { +@@ -89,39 +89,39 @@ + + case gsstSingle: + { +- const SingleSubstitutionSubtable *subtable = (const SingleSubstitutionSubtable *) lookupSubtable; ++ const LEReferenceTo<SingleSubstitutionSubtable> subtable(lookupSubtable, success); + +- delta = subtable->process(glyphIterator, fFilter); ++ delta = subtable->process(subtable, glyphIterator, success, fFilter); + break; + } + + case gsstMultiple: + { +- const MultipleSubstitutionSubtable *subtable = (const MultipleSubstitutionSubtable *) lookupSubtable; ++ const LEReferenceTo<MultipleSubstitutionSubtable> subtable(lookupSubtable, success); + +- delta = subtable->process(glyphIterator, success, fFilter); ++ delta = subtable->process(subtable, glyphIterator, success, fFilter); + break; + } + + case gsstAlternate: + { +- const AlternateSubstitutionSubtable *subtable = (const AlternateSubstitutionSubtable *) lookupSubtable; ++ const LEReferenceTo<AlternateSubstitutionSubtable> subtable(lookupSubtable, success); + +- delta = subtable->process(glyphIterator, fFilter); ++ delta = subtable->process(subtable, glyphIterator, success, fFilter); + break; + } + + case gsstLigature: + { +- const LigatureSubstitutionSubtable *subtable = (const LigatureSubstitutionSubtable *) lookupSubtable; ++ const LEReferenceTo<LigatureSubstitutionSubtable> subtable(lookupSubtable, success); + +- delta = subtable->process(glyphIterator, fFilter); ++ delta = subtable->process(subtable, glyphIterator, success, fFilter); + break; + } + + case gsstContext: + { +- const ContextualSubstitutionSubtable *subtable = (const ContextualSubstitutionSubtable *) lookupSubtable; ++ const LEReferenceTo<ContextualSubstitutionSubtable> subtable(lookupSubtable, success); + + delta = subtable->process(this, glyphIterator, fontInstance, success); + break; +@@ -129,7 +129,7 @@ + + case gsstChainingContext: + { +- const ChainingContextualSubstitutionSubtable *subtable = (const ChainingContextualSubstitutionSubtable *) lookupSubtable; ++ const LEReferenceTo<ChainingContextualSubstitutionSubtable> subtable(lookupSubtable, success); + + delta = subtable->process(this, glyphIterator, fontInstance, success); + break; +@@ -137,7 +137,7 @@ + + case gsstExtension: + { +- const ExtensionSubtable *subtable = (const ExtensionSubtable *) lookupSubtable; ++ const LEReferenceTo<ExtensionSubtable> subtable(lookupSubtable, success); + + delta = subtable->process(this, lookupType, glyphIterator, fontInstance, success); + break; +--- jdk/src/share/native/sun/font/layout/GlyphSubstLookupProc.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphSubstLookupProc.h 2013-05-05 09:38:38.000000000 -0700 +@@ -52,7 +52,7 @@ + class GlyphSubstitutionLookupProcessor : public LookupProcessor + { + public: +- GlyphSubstitutionLookupProcessor(const GlyphSubstitutionTableHeader *glyphSubstitutionTableHeader, ++ GlyphSubstitutionLookupProcessor(const LEReferenceTo<GlyphSubstitutionTableHeader> &glyphSubstitutionTableHeader, + LETag scriptTag, + LETag languageTag, + const LEGlyphFilter *filter, +@@ -63,7 +63,7 @@ + + virtual ~GlyphSubstitutionLookupProcessor(); + +- virtual le_uint32 applySubtable(const LookupSubtable *lookupSubtable, le_uint16 lookupType, GlyphIterator *glyphIterator, ++ virtual le_uint32 applySubtable(const LEReferenceTo<LookupSubtable> &lookupSubtable, le_uint16 lookupType, GlyphIterator *glyphIterator, + const LEFontInstance *fontInstance, LEErrorCode& success) const; + + protected: +--- jdk/src/share/native/sun/font/layout/GlyphSubstitutionTables.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphSubstitutionTables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -42,11 +42,12 @@ + + U_NAMESPACE_BEGIN + +-le_int32 GlyphSubstitutionTableHeader::process(LEGlyphStorage &glyphStorage, ++le_int32 GlyphSubstitutionTableHeader::process(const LEReferenceTo<GlyphSubstitutionTableHeader> &base, ++ LEGlyphStorage &glyphStorage, + le_bool rightToLeft, + LETag scriptTag, + LETag languageTag, +- const GlyphDefinitionTableHeader *glyphDefinitionTableHeader, ++ const LEReferenceTo<GlyphDefinitionTableHeader> &glyphDefinitionTableHeader, + const LEGlyphFilter *filter, + const FeatureMap *featureMap, + le_int32 featureMapCount, +@@ -57,7 +58,7 @@ + return 0; + } + +- GlyphSubstitutionLookupProcessor processor(this, scriptTag, languageTag, filter, featureMap, featureMapCount, featureOrder, success); ++ GlyphSubstitutionLookupProcessor processor(base, scriptTag, languageTag, filter, featureMap, featureMapCount, featureOrder, success); + return processor.process(glyphStorage, NULL, rightToLeft, glyphDefinitionTableHeader, NULL, success); + } + +--- jdk/src/share/native/sun/font/layout/GlyphSubstitutionTables.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/GlyphSubstitutionTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -50,11 +50,12 @@ + + struct GlyphSubstitutionTableHeader : public GlyphLookupTableHeader + { +- le_int32 process(LEGlyphStorage &glyphStorage, ++ le_int32 process(const LEReferenceTo<GlyphSubstitutionTableHeader> &base, ++ LEGlyphStorage &glyphStorage, + le_bool rightToLeft, + LETag scriptTag, + LETag languageTag, +- const GlyphDefinitionTableHeader *glyphDefinitionTableHeader, ++ const LEReferenceTo<GlyphDefinitionTableHeader> &glyphDefinitionTableHeader, + const LEGlyphFilter *filter, + const FeatureMap *featureMap, + le_int32 featureMapCount, +--- jdk/src/share/native/sun/font/layout/HanLayoutEngine.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/HanLayoutEngine.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -64,7 +64,7 @@ + #define features (loclFeatureMask) + + HanOpenTypeLayoutEngine::HanOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success) ++ le_int32 typoFlags, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success) + : OpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable, success) + { + fFeatureMap = featureMap; +--- jdk/src/share/native/sun/font/layout/HanLayoutEngine.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/HanLayoutEngine.h 2013-05-05 09:38:38.000000000 -0700 +@@ -73,7 +73,7 @@ + * @internal + */ + HanOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTablem, LEErrorCode &success); ++ le_int32 typoFlags, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTablem, LEErrorCode &success); + + + /** +--- jdk/src/share/native/sun/font/layout/HangulLayoutEngine.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/HangulLayoutEngine.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -209,7 +209,7 @@ + } + + HangulOpenTypeLayoutEngine::HangulOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 /*languageCode*/, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success) ++ le_int32 typoFlags, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success) + : OpenTypeLayoutEngine(fontInstance, scriptCode, korLanguageCode, typoFlags, gsubTable, success) + { + fFeatureMap = featureMap; +--- jdk/src/share/native/sun/font/layout/HangulLayoutEngine.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/HangulLayoutEngine.h 2013-05-05 09:38:38.000000000 -0700 +@@ -79,7 +79,7 @@ + * @internal + */ + HangulOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success); ++ le_int32 typoFlags, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success); + + /** + * This constructor is used when the font requires a "canned" GSUB table which can't be known +--- jdk/src/share/native/sun/font/layout/ICUFeatures.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ICUFeatures.h 2013-05-05 09:38:38.000000000 -0700 +@@ -54,16 +54,21 @@ + le_uint16 lookupCount; + le_uint16 lookupListIndexArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(FeatureTable, lookupListIndexArray) + + struct FeatureListTable + { + le_uint16 featureCount; + FeatureRecord featureRecordArray[ANY_NUMBER]; + +- const FeatureTable *getFeatureTable(le_uint16 featureIndex, LETag *featureTag) const; ++ LEReferenceTo<FeatureTable> getFeatureTable(const LETableReference &base, le_uint16 featureIndex, LETag *featureTag, LEErrorCode &success) const; + +- const FeatureTable *getFeatureTable(LETag featureTag) const; ++#if 0 ++ const LEReferenceTo<FeatureTable> getFeatureTable(const LETableReference &base, LETag featureTag, LEErrorCode &success) const; ++#endif + }; + ++LE_VAR_ARRAY(FeatureListTable, featureRecordArray) ++ + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/IndicClassTables.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/IndicClassTables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2010 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -186,13 +186,15 @@ + }; + + // FIXME: Should some of the bb's be pb's? (KA, NA, MA, YA, VA, etc. (approx 13)) ++// U+C43 and U+C44 are _lm here not _dr. Similar to the situation with U+CC3 and ++// U+CC4 in Kannada below. + static const IndicClassTable::CharClass teluCharClasses[] = + { + _xx, _mp, _mp, _mp, _xx, _iv, _iv, _iv, _iv, _iv, _iv, _iv, _iv, _xx, _iv, _iv, // 0C00 - 0C0F + _iv, _xx, _iv, _iv, _iv, _bb, _bb, _bb, _bb, _bb, _bb, _bb, _bb, _bb, _bb, _bb, // 0C10 - 0C1F + _bb, _bb, _bb, _bb, _bb, _bb, _bb, _bb, _bb, _xx, _bb, _bb, _bb, _bb, _bb, _bb, // 0C20 - 0C2F + _bb, _bb, _bb, _bb, _xx, _bb, _bb, _bb, _bb, _bb, _xx, _xx, _xx, _xx, _da, _da, // 0C30 - 0C3F +- _da, _dr, _dr, _dr, _dr, _xx, _a1, _da, _s1, _xx, _da, _da, _da, _vr, _xx, _xx, // 0C40 - 0C4F ++ _da, _dr, _dr, _lm, _lm, _xx, _a1, _da, _s1, _xx, _da, _da, _da, _vr, _xx, _xx, // 0C40 - 0C4F + _xx, _xx, _xx, _xx, _xx, _da, _m2, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, // 0C50 - 0C5F + _iv, _iv, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx // 0C60 - 0C6F + }; +--- jdk/src/share/native/sun/font/layout/IndicLayoutEngine.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/IndicLayoutEngine.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -50,7 +50,7 @@ + UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IndicOpenTypeLayoutEngine) + + IndicOpenTypeLayoutEngine::IndicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, le_bool version2, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success) ++ le_int32 typoFlags, le_bool version2, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success) + : OpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable, success), fMPreFixups(NULL) + { + if ( version2 ) { +--- jdk/src/share/native/sun/font/layout/IndicLayoutEngine.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/IndicLayoutEngine.h 2013-05-05 09:38:38.000000000 -0700 +@@ -81,7 +81,7 @@ + * @internal + */ + IndicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, le_bool version2, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success); ++ le_int32 typoFlags, le_bool version2, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success); + + /** + * This constructor is used when the font requires a "canned" GSUB table which can't be known +--- jdk/src/share/native/sun/font/layout/IndicRearrangement.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/IndicRearrangement.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -49,6 +49,10 @@ + { + }; + ++struct IndicRearrangementSubtableHeader2 : MorphStateTableHeader2 ++{ ++}; ++ + enum IndicRearrangementFlags + { + irfMarkFirst = 0x8000, +@@ -85,6 +89,10 @@ + { + }; + ++struct IndicRearrangementStateEntry2 : StateEntry2 ++{ ++}; ++ + U_NAMESPACE_END + #endif + +--- jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -43,11 +43,14 @@ + + UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IndicRearrangementProcessor) + +-IndicRearrangementProcessor::IndicRearrangementProcessor(const MorphSubtableHeader *morphSubtableHeader) +- : StateTableProcessor(morphSubtableHeader) ++ IndicRearrangementProcessor::IndicRearrangementProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) ++ : StateTableProcessor(morphSubtableHeader, success), ++ indicRearrangementSubtableHeader(morphSubtableHeader, success), ++ entryTable(stateTableHeader, success, (const IndicRearrangementStateEntry*)(&stateTableHeader->stHeader), ++ entryTableOffset, LE_UNBOUNDED_ARRAY), ++ int16Table(stateTableHeader, success, (const le_int16*)entryTable.getAlias(), 0, LE_UNBOUNDED_ARRAY) ++ + { +- indicRearrangementSubtableHeader = (const IndicRearrangementSubtableHeader *) morphSubtableHeader; +- entryTable = (const IndicRearrangementStateEntry *) ((char *) &stateTableHeader->stHeader + entryTableOffset); + } + + IndicRearrangementProcessor::~IndicRearrangementProcessor() +@@ -62,7 +65,8 @@ + + ByteOffset IndicRearrangementProcessor::processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex index) + { +- const IndicRearrangementStateEntry *entry = &entryTable[index]; ++ LEErrorCode success = LE_NO_ERROR; // todo- make a param? ++ const IndicRearrangementStateEntry *entry = entryTable.getAlias(index,success); + ByteOffset newState = SWAPW(entry->newStateOffset); + IndicRearrangementFlags flags = (IndicRearrangementFlags) SWAPW(entry->flags); + +--- jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor.h 2013-05-05 09:38:38.000000000 -0700 +@@ -58,7 +58,7 @@ + + void doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb) const; + +- IndicRearrangementProcessor(const MorphSubtableHeader *morphSubtableHeader); ++ IndicRearrangementProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); + virtual ~IndicRearrangementProcessor(); + + /** +@@ -79,8 +79,9 @@ + le_int32 firstGlyph; + le_int32 lastGlyph; + +- const IndicRearrangementStateEntry *entryTable; +- const IndicRearrangementSubtableHeader *indicRearrangementSubtableHeader; ++ LEReferenceTo<IndicRearrangementSubtableHeader> indicRearrangementSubtableHeader; ++ LEReferenceToArrayOf<IndicRearrangementStateEntry> entryTable; ++ LEReferenceToArrayOf<le_int16> int16Table; + + }; + +--- jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,425 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "StateTables.h" ++#include "MorphStateTables.h" ++#include "SubtableProcessor2.h" ++#include "StateTableProcessor2.h" ++#include "IndicRearrangementProcessor2.h" ++#include "LEGlyphStorage.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IndicRearrangementProcessor2) ++ ++IndicRearrangementProcessor2::IndicRearrangementProcessor2( ++ const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : StateTableProcessor2(morphSubtableHeader, success), indicRearrangementSubtableHeader(morphSubtableHeader, success), ++ entryTable(stHeader, success, entryTableOffset, LE_UNBOUNDED_ARRAY) ++{ ++} ++ ++IndicRearrangementProcessor2::~IndicRearrangementProcessor2() ++{ ++} ++ ++void IndicRearrangementProcessor2::beginStateTable() ++{ ++ firstGlyph = 0; ++ lastGlyph = 0; ++} ++ ++le_uint16 IndicRearrangementProcessor2::processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, ++ EntryTableIndex2 index, LEErrorCode &success) ++{ ++ const IndicRearrangementStateEntry2 *entry = entryTable.getAlias(index, success); ++ if (LE_FAILURE(success)) return 0; // TODO - what to return in bad state? ++ le_uint16 newState = SWAPW(entry->newStateIndex); // index to the new state ++ IndicRearrangementFlags flags = (IndicRearrangementFlags) SWAPW(entry->flags); ++ ++ if (flags & irfMarkFirst) { ++ firstGlyph = currGlyph; ++ } ++ ++ if (flags & irfMarkLast) { ++ lastGlyph = currGlyph; ++ } ++ ++ doRearrangementAction(glyphStorage, (IndicRearrangementVerb) (flags & irfVerbMask)); ++ ++ if (!(flags & irfDontAdvance)) { ++ currGlyph += dir; ++ } ++ ++ return newState; // index to new state ++} ++ ++void IndicRearrangementProcessor2::endStateTable() ++{ ++} ++ ++void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb) const ++{ ++ LEGlyphID a, b, c, d; ++ le_int32 ia, ib, ic, id, ix, x; ++ LEErrorCode success = LE_NO_ERROR; ++ ++ switch(verb) ++ { ++ case irvNoAction: ++ break; ++ ++ case irvxA: ++ a = glyphStorage[firstGlyph]; ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ x = firstGlyph + 1; ++ ++ while (x <= lastGlyph) { ++ glyphStorage[x - 1] = glyphStorage[x]; ++ ix = glyphStorage.getCharIndex(x, success); ++ glyphStorage.setCharIndex(x - 1, ix, success); ++ x += 1; ++ } ++ ++ glyphStorage[lastGlyph] = a; ++ glyphStorage.setCharIndex(lastGlyph, ia, success); ++ break; ++ ++ case irvDx: ++ d = glyphStorage[lastGlyph]; ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ x = lastGlyph - 1; ++ ++ while (x >= firstGlyph) { ++ glyphStorage[x + 1] = glyphStorage[x]; ++ ix = glyphStorage.getCharIndex(x, success); ++ glyphStorage.setCharIndex(x + 1, ix, success); ++ x -= 1; ++ } ++ ++ glyphStorage[firstGlyph] = d; ++ glyphStorage.setCharIndex(firstGlyph, id, success); ++ break; ++ ++ case irvDxA: ++ a = glyphStorage[firstGlyph]; ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ ++ glyphStorage[firstGlyph] = glyphStorage[lastGlyph]; ++ glyphStorage[lastGlyph] = a; ++ ++ glyphStorage.setCharIndex(firstGlyph, id, success); ++ glyphStorage.setCharIndex(lastGlyph, ia, success); ++ break; ++ ++ case irvxAB: ++ a = glyphStorage[firstGlyph]; ++ b = glyphStorage[firstGlyph + 1]; ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ ib = glyphStorage.getCharIndex(firstGlyph + 1, success); ++ x = firstGlyph + 2; ++ ++ while (x <= lastGlyph) { ++ glyphStorage[x - 2] = glyphStorage[x]; ++ ix = glyphStorage.getCharIndex(x, success); ++ glyphStorage.setCharIndex(x - 2, ix, success); ++ x += 1; ++ } ++ ++ glyphStorage[lastGlyph - 1] = a; ++ glyphStorage[lastGlyph] = b; ++ ++ glyphStorage.setCharIndex(lastGlyph - 1, ia, success); ++ glyphStorage.setCharIndex(lastGlyph, ib, success); ++ break; ++ ++ case irvxBA: ++ a = glyphStorage[firstGlyph]; ++ b = glyphStorage[firstGlyph + 1]; ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ ib = glyphStorage.getCharIndex(firstGlyph + 1, success); ++ x = firstGlyph + 2; ++ ++ while (x <= lastGlyph) { ++ glyphStorage[x - 2] = glyphStorage[x]; ++ ix = glyphStorage.getCharIndex(x, success); ++ glyphStorage.setCharIndex(x - 2, ix, success); ++ x += 1; ++ } ++ ++ glyphStorage[lastGlyph - 1] = b; ++ glyphStorage[lastGlyph] = a; ++ ++ glyphStorage.setCharIndex(lastGlyph - 1, ib, success); ++ glyphStorage.setCharIndex(lastGlyph, ia, success); ++ break; ++ ++ case irvCDx: ++ c = glyphStorage[lastGlyph - 1]; ++ d = glyphStorage[lastGlyph]; ++ ic = glyphStorage.getCharIndex(lastGlyph - 1, success); ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ x = lastGlyph - 2; ++ ++ while (x >= firstGlyph) { ++ glyphStorage[x + 2] = glyphStorage[x]; ++ ix = glyphStorage.getCharIndex(x, success); ++ glyphStorage.setCharIndex(x + 2, ix, success); ++ x -= 1; ++ } ++ ++ glyphStorage[firstGlyph] = c; ++ glyphStorage[firstGlyph + 1] = d; ++ ++ glyphStorage.setCharIndex(firstGlyph, ic, success); ++ glyphStorage.setCharIndex(firstGlyph + 1, id, success); ++ break; ++ ++ case irvDCx: ++ c = glyphStorage[lastGlyph - 1]; ++ d = glyphStorage[lastGlyph]; ++ ic = glyphStorage.getCharIndex(lastGlyph - 1, success); ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ x = lastGlyph - 2; ++ ++ while (x >= firstGlyph) { ++ glyphStorage[x + 2] = glyphStorage[x]; ++ ix = glyphStorage.getCharIndex(x, success); ++ glyphStorage.setCharIndex(x + 2, ix, success); ++ x -= 1; ++ } ++ ++ glyphStorage[firstGlyph] = d; ++ glyphStorage[firstGlyph + 1] = c; ++ ++ glyphStorage.setCharIndex(firstGlyph, id, success); ++ glyphStorage.setCharIndex(firstGlyph + 1, ic, success); ++ break; ++ ++ case irvCDxA: ++ a = glyphStorage[firstGlyph]; ++ c = glyphStorage[lastGlyph - 1]; ++ d = glyphStorage[lastGlyph]; ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ ic = glyphStorage.getCharIndex(lastGlyph - 1, success); ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ x = lastGlyph - 2; ++ ++ while (x > firstGlyph) { ++ glyphStorage[x + 1] = glyphStorage[x]; ++ ix = glyphStorage.getCharIndex(x, success); ++ glyphStorage.setCharIndex(x + 1, ix, success); ++ x -= 1; ++ } ++ ++ glyphStorage[firstGlyph] = c; ++ glyphStorage[firstGlyph + 1] = d; ++ glyphStorage[lastGlyph] = a; ++ ++ glyphStorage.setCharIndex(firstGlyph, ic, success); ++ glyphStorage.setCharIndex(firstGlyph + 1, id, success); ++ glyphStorage.setCharIndex(lastGlyph, ia, success); ++ break; ++ ++ case irvDCxA: ++ a = glyphStorage[firstGlyph]; ++ c = glyphStorage[lastGlyph - 1]; ++ d = glyphStorage[lastGlyph]; ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ ic = glyphStorage.getCharIndex(lastGlyph - 1, success); ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ x = lastGlyph - 2; ++ ++ while (x > firstGlyph) { ++ glyphStorage[x + 1] = glyphStorage[x]; ++ ix = glyphStorage.getCharIndex(x, success); ++ glyphStorage.setCharIndex(x + 1, ix, success); ++ x -= 1; ++ } ++ ++ glyphStorage[firstGlyph] = d; ++ glyphStorage[firstGlyph + 1] = c; ++ glyphStorage[lastGlyph] = a; ++ ++ glyphStorage.setCharIndex(firstGlyph, id, success); ++ glyphStorage.setCharIndex(firstGlyph + 1, ic, success); ++ glyphStorage.setCharIndex(lastGlyph, ia, success); ++ break; ++ ++ case irvDxAB: ++ a = glyphStorage[firstGlyph]; ++ b = glyphStorage[firstGlyph + 1]; ++ d = glyphStorage[lastGlyph]; ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ ib = glyphStorage.getCharIndex(firstGlyph + 1, success); ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ x = firstGlyph + 2; ++ ++ while (x < lastGlyph) { ++ glyphStorage[x - 2] = glyphStorage[x]; ++ ix = glyphStorage.getCharIndex(x, success); ++ glyphStorage.setCharIndex(x - 2, ix, success); ++ x += 1; ++ } ++ ++ glyphStorage[firstGlyph] = d; ++ glyphStorage[lastGlyph - 1] = a; ++ glyphStorage[lastGlyph] = b; ++ ++ glyphStorage.setCharIndex(firstGlyph, id, success); ++ glyphStorage.setCharIndex(lastGlyph - 1, ia, success); ++ glyphStorage.setCharIndex(lastGlyph, ib, success); ++ break; ++ ++ case irvDxBA: ++ a = glyphStorage[firstGlyph]; ++ b = glyphStorage[firstGlyph + 1]; ++ d = glyphStorage[lastGlyph]; ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ ib = glyphStorage.getCharIndex(firstGlyph + 1, success); ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ x = firstGlyph + 2; ++ ++ while (x < lastGlyph) { ++ glyphStorage[x - 2] = glyphStorage[x]; ++ ix = glyphStorage.getCharIndex(x, success); ++ glyphStorage.setCharIndex(x - 2, ix, success); ++ x += 1; ++ } ++ ++ glyphStorage[firstGlyph] = d; ++ glyphStorage[lastGlyph - 1] = b; ++ glyphStorage[lastGlyph] = a; ++ ++ glyphStorage.setCharIndex(firstGlyph, id, success); ++ glyphStorage.setCharIndex(lastGlyph - 1, ib, success); ++ glyphStorage.setCharIndex(lastGlyph, ia, success); ++ break; ++ ++ case irvCDxAB: ++ a = glyphStorage[firstGlyph]; ++ b = glyphStorage[firstGlyph + 1]; ++ ++ glyphStorage[firstGlyph] = glyphStorage[lastGlyph - 1]; ++ glyphStorage[firstGlyph + 1] = glyphStorage[lastGlyph]; ++ ++ glyphStorage[lastGlyph - 1] = a; ++ glyphStorage[lastGlyph] = b; ++ ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ ib = glyphStorage.getCharIndex(firstGlyph + 1, success); ++ ic = glyphStorage.getCharIndex(lastGlyph - 1, success); ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ ++ glyphStorage.setCharIndex(firstGlyph, ic, success); ++ glyphStorage.setCharIndex(firstGlyph + 1, id, success); ++ ++ glyphStorage.setCharIndex(lastGlyph - 1, ia, success); ++ glyphStorage.setCharIndex(lastGlyph, ib, success); ++ break; ++ ++ case irvCDxBA: ++ a = glyphStorage[firstGlyph]; ++ b = glyphStorage[firstGlyph + 1]; ++ ++ glyphStorage[firstGlyph] = glyphStorage[lastGlyph - 1]; ++ glyphStorage[firstGlyph + 1] = glyphStorage[lastGlyph]; ++ ++ glyphStorage[lastGlyph - 1] = b; ++ glyphStorage[lastGlyph] = a; ++ ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ ib = glyphStorage.getCharIndex(firstGlyph + 1, success); ++ ic = glyphStorage.getCharIndex(lastGlyph - 1, success); ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ ++ glyphStorage.setCharIndex(firstGlyph, ic, success); ++ glyphStorage.setCharIndex(firstGlyph + 1, id, success); ++ ++ glyphStorage.setCharIndex(lastGlyph - 1, ib, success); ++ glyphStorage.setCharIndex(lastGlyph, ia, success); ++ break; ++ ++ case irvDCxAB: ++ a = glyphStorage[firstGlyph]; ++ b = glyphStorage[firstGlyph + 1]; ++ ++ glyphStorage[firstGlyph] = glyphStorage[lastGlyph]; ++ glyphStorage[firstGlyph + 1] = glyphStorage[lastGlyph - 1]; ++ ++ glyphStorage[lastGlyph - 1] = a; ++ glyphStorage[lastGlyph] = b; ++ ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ ib = glyphStorage.getCharIndex(firstGlyph + 1, success); ++ ic = glyphStorage.getCharIndex(lastGlyph - 1, success); ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ ++ glyphStorage.setCharIndex(firstGlyph, id, success); ++ glyphStorage.setCharIndex(firstGlyph + 1, ic, success); ++ ++ glyphStorage.setCharIndex(lastGlyph - 1, ia, success); ++ glyphStorage.setCharIndex(lastGlyph, ib, success); ++ break; ++ ++ case irvDCxBA: ++ a = glyphStorage[firstGlyph]; ++ b = glyphStorage[firstGlyph + 1]; ++ ++ glyphStorage[firstGlyph] = glyphStorage[lastGlyph]; ++ glyphStorage[firstGlyph + 1] = glyphStorage[lastGlyph - 1]; ++ ++ glyphStorage[lastGlyph - 1] = b; ++ glyphStorage[lastGlyph] = a; ++ ++ ia = glyphStorage.getCharIndex(firstGlyph, success); ++ ib = glyphStorage.getCharIndex(firstGlyph + 1, success); ++ ic = glyphStorage.getCharIndex(lastGlyph - 1, success); ++ id = glyphStorage.getCharIndex(lastGlyph, success); ++ ++ glyphStorage.setCharIndex(firstGlyph, id, success); ++ glyphStorage.setCharIndex(firstGlyph + 1, ic, success); ++ ++ glyphStorage.setCharIndex(lastGlyph - 1, ib, success); ++ glyphStorage.setCharIndex(lastGlyph, ia, success); ++ break; ++ ++ default: ++ break; ++ } ++ ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,88 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __INDICREARRANGEMENTPROCESSOR2_H ++#define __INDICREARRANGEMENTPROCESSOR2_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor.h" ++#include "StateTableProcessor2.h" ++#include "IndicRearrangement.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++class IndicRearrangementProcessor2 : public StateTableProcessor2 ++{ ++public: ++ virtual void beginStateTable(); ++ ++ virtual le_uint16 processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex2 index, LEErrorCode &success); ++ ++ virtual void endStateTable(); ++ ++ void doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb) const; ++ ++ IndicRearrangementProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ virtual ~IndicRearrangementProcessor2(); ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for the actual class. ++ * ++ * @stable ICU 2.8 ++ */ ++ virtual UClassID getDynamicClassID() const; ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for this class. ++ * ++ * @stable ICU 2.8 ++ */ ++ static UClassID getStaticClassID(); ++ ++protected: ++ le_int32 firstGlyph; ++ le_int32 lastGlyph; ++ ++ LEReferenceToArrayOf<IndicRearrangementStateEntry2> entryTable; ++ LEReferenceTo<IndicRearrangementSubtableHeader2> indicRearrangementSubtableHeader; ++ ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/IndicReordering.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/IndicReordering.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -266,7 +266,7 @@ + le_uint32 saveAuxData = fGlyphStorage.getAuxData(i+inv_count,success); + const SplitMatra *splitMatra = classTable->getSplitMatra(matraClass); + int j; +- for (j = 0 ; *(splitMatra)[j] != 0 ; j++) { ++ for (j = 0 ; j < SM_MAX_PIECES && *(splitMatra)[j] != 0 ; j++) { + LEUnicode piece = (*splitMatra)[j]; + if ( j == 0 ) { + fOutChars[i+inv_count] = piece; +@@ -357,7 +357,7 @@ + const SplitMatra *splitMatra = classTable->getSplitMatra(matraClass); + int i; + +- for (i = 0; i < 3 && (*splitMatra)[i] != 0; i += 1) { ++ for (i = 0; i < SM_MAX_PIECES && (*splitMatra)[i] != 0; i += 1) { + LEUnicode piece = (*splitMatra)[i]; + IndicClassTable::CharClass pieceClass = classTable->getCharClass(piece); + +@@ -658,6 +658,11 @@ + MPreFixups *mpreFixups = NULL; + const IndicClassTable *classTable = IndicClassTable::getScriptClassTable(scriptCode); + ++ if(classTable==NULL) { ++ success = LE_MEMORY_ALLOCATION_ERROR; ++ return 0; ++ } ++ + if (classTable->scriptFlags & SF_MPRE_FIXUP) { + mpreFixups = new MPreFixups(charCount); + if (mpreFixups == NULL) { +@@ -1224,7 +1229,6 @@ + + + LEUnicode currentChar; +- LEUnicode virama; + LEUnicode workChars[2]; + LEGlyphStorage workGlyphs; + +@@ -1232,14 +1236,17 @@ + + //le_int32 offset = 0; + ++#if 0 ++// TODO: Should this section of code have actually been doing something? + // First find the relevant virama for the script we are dealing with +- ++ LEUnicode virama; + for ( currentChar = classTable->firstChar ; currentChar <= classTable->lastChar ; currentChar++ ) { + if ( classTable->isVirama(currentChar)) { + virama = currentChar; + break; + } + } ++#endif + + for ( currentChar = classTable->firstChar ; currentChar <= classTable->lastChar ; currentChar++ ) { + if ( classTable->isConsonant(currentChar)) { +--- jdk/src/share/native/sun/font/layout/IndicReordering.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/IndicReordering.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2009 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -96,7 +96,9 @@ + #define SF_POST_BASE_LIMIT_MASK 0x0000FFFFU + #define SF_NO_POST_BASE_LIMIT 0x00007FFFU + +-typedef LEUnicode SplitMatra[3]; ++#define SM_MAX_PIECES 3 ++ ++typedef LEUnicode SplitMatra[SM_MAX_PIECES]; + + class MPreFixups; + class LEGlyphStorage; +--- jdk/src/share/native/sun/font/layout/KernTable.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/KernTable.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -48,7 +48,7 @@ + le_int16 value; // fword, kern value in funits + }; + #define KERN_PAIRINFO_SIZE 6 +- ++LE_CORRECT_SIZE(PairInfo, KERN_PAIRINFO_SIZE) + struct Subtable_0 { + le_uint16 nPairs; + le_uint16 searchRange; +@@ -56,6 +56,7 @@ + le_uint16 rangeShift; + }; + #define KERN_SUBTABLE_0_HEADER_SIZE 8 ++LE_CORRECT_SIZE(Subtable_0, KERN_SUBTABLE_0_HEADER_SIZE) + + // Kern table version 0 only + struct SubtableHeader { +@@ -64,6 +65,7 @@ + le_uint16 coverage; + }; + #define KERN_SUBTABLE_HEADER_SIZE 6 ++LE_CORRECT_SIZE(SubtableHeader, KERN_SUBTABLE_HEADER_SIZE) + + // Version 0 only, version 1 has different layout + struct KernTableHeader { +@@ -71,6 +73,7 @@ + le_uint16 nTables; + }; + #define KERN_TABLE_HEADER_SIZE 4 ++LE_CORRECT_SIZE(KernTableHeader, KERN_TABLE_HEADER_SIZE) + + #define COVERAGE_HORIZONTAL 0x1 + #define COVERAGE_MINIMUM 0x2 +@@ -92,21 +95,21 @@ + * TODO: support multiple subtables + * TODO: respect header flags + */ +-KernTable::KernTable(const LEFontInstance* font_, const void* tableData) +- : pairs(0), font(font_) ++KernTable::KernTable(const LETableReference& base, LEErrorCode &success) ++ : pairs(), pairsSwapped(NULL), fTable(base) + { +- const KernTableHeader* header = (const KernTableHeader*)tableData; +- if (header == 0) { ++ if(LE_FAILURE(success) || (fTable.isEmpty())) { + #if DEBUG + fprintf(stderr, "no kern data\n"); + #endif + return; + } ++ LEReferenceTo<KernTableHeader> header(fTable, success); + + #if DEBUG + // dump first 32 bytes of header + for (int i = 0; i < 64; ++i) { +- fprintf(stderr, "%0.2x ", ((const char*)tableData)[i]&0xff); ++ fprintf(stderr, "%0.2x ", ((const char*)header.getAlias())[i]&0xff); + if (((i+1)&0xf) == 0) { + fprintf(stderr, "\n"); + } else if (((i+1)&0x7) == 0) { +@@ -115,12 +118,17 @@ + } + #endif + +- if (header->version == 0 && SWAPW(header->nTables) > 0) { +- const SubtableHeader* subhead = (const SubtableHeader*)((char*)tableData + KERN_TABLE_HEADER_SIZE); +- if (subhead->version == 0) { ++ if(LE_FAILURE(success)) return; ++ ++ if (!header.isEmpty() && header->version == 0 && SWAPW(header->nTables) > 0) { ++ LEReferenceTo<SubtableHeader> subhead(header, success, KERN_TABLE_HEADER_SIZE); ++ ++ if (LE_SUCCESS(success) && !subhead.isEmpty() && subhead->version == 0) { + coverage = SWAPW(subhead->coverage); + if (coverage & COVERAGE_HORIZONTAL) { // only handle horizontal kerning +- const Subtable_0* table = (const Subtable_0*)((char*)subhead + KERN_SUBTABLE_HEADER_SIZE); ++ LEReferenceTo<Subtable_0> table(subhead, success, KERN_SUBTABLE_HEADER_SIZE); ++ ++ if(table.isEmpty() || LE_FAILURE(success)) return; + + nPairs = SWAPW(table->nPairs); + +@@ -134,19 +142,31 @@ + rangeShift = (nPairs * KERN_PAIRINFO_SIZE) - searchRange; + #endif + +- pairs = (PairInfo*)font->getKernPairs(); +- if (pairs == NULL) { +- char *pairData = (char*)table + KERN_SUBTABLE_0_HEADER_SIZE; +- char *pptr = pairData; +- pairs = (PairInfo*)(malloc(nPairs*sizeof(PairInfo))); +- PairInfo *p = (PairInfo*)pairs; +- for (int i = 0; i < nPairs; i++, pptr += KERN_PAIRINFO_SIZE, p++) { +- memcpy(p, pptr, KERN_PAIRINFO_SIZE); ++ if(LE_SUCCESS(success) && nPairs>0) { ++ // pairs is an instance member, and table is on the stack. ++ // set 'pairs' based on table.getAlias(). This will range check it. ++ ++ pairs = LEReferenceToArrayOf<PairInfo>(fTable, // based on overall table ++ success, ++ (const PairInfo*)table.getAlias(), // subtable 0 + .. ++ KERN_SUBTABLE_0_HEADER_SIZE, // .. offset of header size ++ nPairs); // count ++ } ++ if (LE_SUCCESS(success) && pairs.isValid()) { ++ pairsSwapped = (PairInfo*)(malloc(nPairs*sizeof(PairInfo))); ++ PairInfo *p = (PairInfo*)pairsSwapped; ++ for (int i = 0; LE_SUCCESS(success) && i < nPairs; i++, p++) { ++ memcpy(p, pairs.getAlias(i,success), KERN_PAIRINFO_SIZE); + p->key = SWAPL(p->key); + } +- font->setKernPairs((void*)pairs); ++ fTable.getFont()->setKernPairs((void*)pairsSwapped); // store it + } + ++#if 0 ++ fprintf(stderr, "coverage: %0.4x nPairs: %d pairs %p\n", coverage, nPairs, pairs.getAlias()); ++ fprintf(stderr, " searchRange: %d entrySelector: %d rangeShift: %d\n", searchRange, entrySelector, rangeShift); ++ fprintf(stderr, "[[ ignored font table entries: range %d selector %d shift %d ]]\n", SWAPW(table->searchRange), SWAPW(table->entrySelector), SWAPW(table->rangeShift)); ++#endif + #if DEBUG + fprintf(stderr, "coverage: %0.4x nPairs: %d pairs 0x%x\n", coverage, nPairs, pairs); + fprintf(stderr, +@@ -194,14 +214,17 @@ + * Process the glyph positions. The positions array has two floats for each + * glyph, plus a trailing pair to mark the end of the last glyph. + */ +-void KernTable::process(LEGlyphStorage& storage) ++void KernTable::process(LEGlyphStorage& storage, LEErrorCode &success) + { +- if (pairs) { +- LEErrorCode success = LE_NO_ERROR; ++ if(LE_FAILURE(success)) return; ++ ++ if (pairsSwapped) { ++ success = LE_NO_ERROR; + + le_uint32 key = storage[0]; // no need to mask off high bits + float adjust = 0; +- for (int i = 1, e = storage.getGlyphCount(); i < e; ++i) { ++ ++ for (int i = 1, e = storage.getGlyphCount(); LE_SUCCESS(success)&& i < e; ++i) { + key = key << 16 | (storage[i] & 0xffff); + + // argh, to do a binary search, we need to have the pair list in sorted order +@@ -209,7 +232,7 @@ + // so either I have to swap the element each time I examine it, or I have to swap + // all the elements ahead of time and store them in the font + +- const PairInfo* p = pairs; ++ const PairInfo* p = pairsSwapped; + const PairInfo* tp = (const PairInfo*)(p + (rangeShift/KERN_PAIRINFO_SIZE)); /* rangeshift is in original table bytes */ + if (key > tp->key) { + p = tp; +@@ -225,7 +248,7 @@ + tp = (const PairInfo*)(p + (probe/KERN_PAIRINFO_SIZE)); + le_uint32 tkey = tp->key; + #if DEBUG +- fprintf(stdout, " %.3d (%0.8x)\n", (tp - pairs), tkey); ++ fprintf(stdout, " %.3d (%0.8x)\n", (tp - pairsSwapped), tkey); + #endif + if (tkey <= key) { + if (tkey == key) { +@@ -240,10 +263,10 @@ + // device transform, or a faster way, such as moving the + // entire kern table up to Java. + LEPoint pt; +- pt.fX = font->xUnitsToPoints(value); ++ pt.fX = fTable.getFont()->xUnitsToPoints(value); + pt.fY = 0; + +- font->getKerningAdjustment(pt); ++ fTable.getFont()->getKerningAdjustment(pt); + adjust += pt.fX; + break; + } +--- jdk/src/share/native/sun/font/layout/KernTable.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/KernTable.h 2013-05-05 09:38:38.000000000 -0700 +@@ -26,7 +26,7 @@ + /* + * + * +- * (C) Copyright IBM Corp. 2004-2005 - All Rights Reserved ++ * (C) Copyright IBM Corp. 2004-2013 - All Rights Reserved + * + */ + +@@ -38,6 +38,7 @@ + #endif + + #include "LETypes.h" ++#include "LETableReference.h" + //#include "LEFontInstance.h" + //#include "LEGlyphStorage.h" + +@@ -56,19 +57,20 @@ + private: + le_uint16 coverage; + le_uint16 nPairs; +- const PairInfo* pairs; +- const LEFontInstance* font; ++ LEReferenceToArrayOf<PairInfo> pairs; ++ PairInfo *pairsSwapped; ++ const LETableReference &fTable; + le_uint16 searchRange; + le_uint16 entrySelector; + le_uint16 rangeShift; + + public: +- KernTable(const LEFontInstance* font, const void* tableData); ++ KernTable(const LETableReference &table, LEErrorCode &success); + + /* + * Process the glyph positions. + */ +- void process(LEGlyphStorage& storage); ++ void process(LEGlyphStorage& storage, LEErrorCode &success); + }; + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/KhmerLayoutEngine.cpp 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/KhmerLayoutEngine.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -43,7 +43,7 @@ + UOBJECT_DEFINE_RTTI_IMPLEMENTATION(KhmerOpenTypeLayoutEngine) + + KhmerOpenTypeLayoutEngine::KhmerOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success) ++ le_int32 typoFlags, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success) + : OpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable, success) + { + fFeatureMap = KhmerReordering::getFeatureMap(fFeatureMapCount); +--- jdk/src/share/native/sun/font/layout/KhmerLayoutEngine.h 2012-08-10 10:30:32.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/KhmerLayoutEngine.h 2013-05-05 09:38:38.000000000 -0700 +@@ -83,7 +83,7 @@ + * @internal + */ + KhmerOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success); ++ le_int32 typoFlags, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success); + + /** + * This constructor is used when the font requires a "canned" GSUB table which can't be known +--- jdk/src/share/native/sun/font/layout/LEFontInstance.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LEFontInstance.h 2013-05-05 09:38:38.000000000 -0700 +@@ -190,6 +190,25 @@ + */ + virtual const void *getFontTable(LETag tableTag) const = 0; + ++ /** ++ * This method reads a table from the font. Note that in general, ++ * it only makes sense to call this method on an <code>LEFontInstance</code> ++ * which represents a physical font - i.e. one which has been returned by ++ * <code>getSubFont()</code>. This is because each subfont in a composite font ++ * will have different tables, and there's no way to know which subfont to access. ++ * ++ * Subclasses which represent composite fonts should always return <code>NULL</code>. ++ * ++ * This version sets a length, for range checking. ++ * ++ * @param tableTag - the four byte table tag. (e.g. 'cmap') ++ * @param length - ignored on entry, on exit will be the length of the table if known, or -1 if unknown. ++ * @return the address of the table in memory, or <code>NULL</code> ++ * if the table doesn't exist. ++ * @internal ++ */ ++ virtual const void* getFontTable(LETag tableTag, size_t &length) const { length=-1; return getFontTable(tableTag); } /* -1 = unknown length */ ++ + virtual void *getKernPairs() const = 0; + virtual void setKernPairs(void *pairs) const = 0; + +--- jdk/src/share/native/sun/font/layout/LEGlyphFilter.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LEGlyphFilter.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -36,6 +36,7 @@ + + U_NAMESPACE_BEGIN + ++#ifndef U_HIDE_INTERNAL_API + /** + * This is a helper class that is used to + * recognize a set of glyph indices. +@@ -63,6 +64,7 @@ + */ + virtual le_bool accept(LEGlyphID glyph) const = 0; + }; ++#endif /* U_HIDE_INTERNAL_API */ + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/LEInsertionList.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LEInsertionList.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + ********************************************************************** +- * Copyright (C) 1998-2008, International Business Machines ++ * Copyright (C) 1998-2013, International Business Machines + * Corporation and others. All Rights Reserved. + ********************************************************************** + */ +@@ -39,6 +39,7 @@ + + struct InsertionRecord; + ++#ifndef U_HIDE_INTERNAL_API + /** + * This class encapsulates the callback used by <code>LEInsertionList</code> + * to apply an insertion from the insertion list. +@@ -194,6 +195,7 @@ + */ + le_bool append; + }; ++#endif /* U_HIDE_INTERNAL_API */ + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/LEScripts.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LEScripts.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2010. All Rights Reserved. ++ * (C) Copyright IBM Corp. 1998-2013. All Rights Reserved. + * + * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS + * YOU REALLY KNOW WHAT YOU'RE DOING. +@@ -241,8 +241,28 @@ + palmScriptCode = 144, + sindScriptCode = 145, + waraScriptCode = 146, ++/** ++ * @stable ICU 4.8 ++ */ ++ ++ afakScriptCode = 147, ++ jurcScriptCode = 148, ++ mrooScriptCode = 149, ++ nshuScriptCode = 150, ++ shrdScriptCode = 151, ++ soraScriptCode = 152, ++ takrScriptCode = 153, ++ tangScriptCode = 154, ++ woleScriptCode = 155, ++/** ++ * @stable ICU 49 ++ */ ++ ++ hluwScriptCode = 156, /* bump to match current ICU */ ++ khojScriptCode = 157, ++ tirhScriptCode = 158, + +- scriptCodeCount = 147 ++ scriptCodeCount = 159 + }; + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/LETableReference.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/LETableReference.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,443 @@ ++/* ++ * Copyright (c) 2007, 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. ++ */ ++ ++/* ++ * -*- c++ -*- ++ * ++ * (C) Copyright IBM Corp. and others 2013 - All Rights Reserved ++ * ++ * Range checking ++ * ++ */ ++ ++#ifndef __LETABLEREFERENCE_H ++#define __LETABLEREFERENCE_H ++ ++#include "LETypes.h" ++#include "LEFontInstance.h" ++ ++ ++#define kQuestionmarkTableTag 0x3F3F3F3FUL ++#define kTildeTableTag 0x7e7e7e7eUL ++#ifdef __cplusplus ++ ++// internal - interface for range checking ++U_NAMESPACE_BEGIN ++ ++#if LE_ASSERT_BAD_FONT ++class LETableReference; // fwd ++/** ++ * defined in OpenTypeUtilities.cpp ++ * @internal ++ */ ++extern void _debug_LETableReference(const char *f, int l, const char *msg, const LETableReference *what, const void *ptr, size_t len); ++ ++#define LE_DEBUG_TR(x) _debug_LETableReference(__FILE__, __LINE__, x, this, NULL, 0); ++#define LE_DEBUG_TR3(x,y,z) _debug_LETableReference(__FILE__, __LINE__, x, this, (const void*)y, (size_t)z); ++#if 0 ++#define LE_TRACE_TR(x) _debug_LETableReference(__FILE__, __LINE__, x, this, NULL, 0); ++#else ++#define LE_TRACE_TR(x) ++#endif ++ ++#else ++#define LE_DEBUG_TR(x) ++#define LE_DEBUG_TR3(x,y,z) ++#define LE_TRACE_TR(x) ++#endif ++ ++/** ++ * @internal ++ */ ++class LETableReference { ++public: ++/** ++ * @internal ++ * Construct from a specific tag ++ */ ++ LETableReference(const LEFontInstance* font, LETag tableTag, LEErrorCode &success) : ++ fFont(font), fTag(tableTag), fParent(NULL), fStart(NULL),fLength(LE_UINTPTR_MAX) { ++ loadTable(success); ++ LE_TRACE_TR("INFO: new table load") ++ } ++ ++ LETableReference(const LETableReference &parent, LEErrorCode &success) : fFont(parent.fFont), fTag(parent.fTag), fParent(&parent), fStart(parent.fStart), fLength(parent.fLength) { ++ if(LE_FAILURE(success)) { ++ clear(); ++ } ++ LE_TRACE_TR("INFO: new clone") ++ } ++ ++ LETableReference(const le_uint8* data, size_t length = LE_UINTPTR_MAX) : ++ fFont(NULL), fTag(kQuestionmarkTableTag), fParent(NULL), fStart(data), fLength(length) { ++ LE_TRACE_TR("INFO: new raw") ++ } ++ LETableReference() : ++ fFont(NULL), fTag(kQuestionmarkTableTag), fParent(NULL), fStart(NULL), fLength(0) { ++ LE_TRACE_TR("INFO: new empty") ++ } ++ ++ ~LETableReference() { ++ fTag=kTildeTableTag; ++ LE_TRACE_TR("INFO: new dtor") ++ } ++ ++ /** ++ * @internal ++ * @param length if LE_UINTPTR_MAX means "whole table" ++ * subset ++ */ ++ LETableReference(const LETableReference &parent, size_t offset, size_t length, ++ LEErrorCode &err) : ++ fFont(parent.fFont), fTag(parent.fTag), fParent(&parent), ++ fStart((parent.fStart)+offset), fLength(length) { ++ if(LE_SUCCESS(err)) { ++ if(isEmpty()) { ++ //err = LE_MISSING_FONT_TABLE_ERROR; ++ clear(); // it's just empty. Not an error. ++ } else if(offset >= fParent->fLength) { ++ LE_DEBUG_TR3("offset out of range: (%p) +%d", NULL, offset); ++ err = LE_INDEX_OUT_OF_BOUNDS_ERROR; ++ clear(); ++ } else { ++ if(fLength == LE_UINTPTR_MAX && ++ fParent->fLength != LE_UINTPTR_MAX) { ++ fLength = (fParent->fLength) - offset; // decrement length as base address is incremented ++ } ++ if(fLength != LE_UINTPTR_MAX) { // if we have bounds: ++ if(offset+fLength > fParent->fLength) { ++ LE_DEBUG_TR3("offset+fLength out of range: (%p) +%d", NULL, offset+fLength); ++ err = LE_INDEX_OUT_OF_BOUNDS_ERROR; // exceeded ++ clear(); ++ } ++ } ++ } ++ } else { ++ clear(); ++ } ++ LE_TRACE_TR("INFO: new subset") ++ } ++ ++ const void* getAlias() const { return (const void*)fStart; } ++ const void* getAliasTODO() const { LE_DEBUG_TR("getAliasTODO()"); return (const void*)fStart; } ++ le_bool isEmpty() const { return fStart==NULL || fLength==0; } ++ le_bool isValid() const { return !isEmpty(); } ++ le_bool hasBounds() const { return fLength!=LE_UINTPTR_MAX; } ++ void clear() { fLength=0; fStart=NULL; } ++ size_t getLength() const { return fLength; } ++ const LEFontInstance* getFont() const { return fFont; } ++ LETag getTag() const { return fTag; } ++ const LETableReference* getParent() const { return fParent; } ++ ++ void addOffset(size_t offset, LEErrorCode &success) { ++ if(hasBounds()) { ++ if(offset > fLength) { ++ LE_DEBUG_TR("addOffset off end"); ++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; ++ return; ++ } else { ++ fLength -= offset; ++ } ++ } ++ fStart += offset; ++ } ++ ++ size_t ptrToOffset(const void *atPtr, LEErrorCode &success) const { ++ if(atPtr==NULL) return 0; ++ if(LE_FAILURE(success)) return LE_UINTPTR_MAX; ++ if((atPtr < fStart) || ++ (hasBounds() && (atPtr > fStart+fLength))) { ++ LE_DEBUG_TR3("ptrToOffset args out of range: %p", atPtr, 0); ++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; ++ return LE_UINTPTR_MAX; ++ } ++ return ((const le_uint8*)atPtr)-fStart; ++ } ++ ++ /** ++ * Clamp down the length, for range checking. ++ */ ++ size_t contractLength(size_t newLength) { ++ if(fLength!=LE_UINTPTR_MAX&&newLength>0&&newLength<=fLength) { ++ fLength = newLength; ++ } ++ return fLength; ++ } ++ ++ /** ++ * Throw an error if offset+length off end ++ */ ++public: ++ size_t verifyLength(size_t offset, size_t length, LEErrorCode &success) { ++ if(isValid()&& ++ LE_SUCCESS(success) && ++ fLength!=LE_UINTPTR_MAX && length!=LE_UINTPTR_MAX && offset!=LE_UINTPTR_MAX && ++ (offset+length)>fLength) { ++ LE_DEBUG_TR3("verifyLength failed (%p) %d",NULL, offset+length); ++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; ++#if LE_ASSERT_BAD_FONT ++ fprintf(stderr, "offset=%lu, len=%lu, would be at %p, (%lu) off end. End at %p\n", offset,length, fStart+offset+length, (offset+length-fLength), (offset+length-fLength)+fStart); ++#endif ++ } ++ return fLength; ++ } ++ ++ /** ++ * Change parent link to another ++ */ ++ LETableReference &reparent(const LETableReference &base) { ++ fParent = &base; ++ return *this; ++ } ++ ++ /** ++ * remove parent link. Factory functions should do this. ++ */ ++ void orphan(void) { ++ fParent=NULL; ++ } ++ ++protected: ++ const LEFontInstance* fFont; ++ LETag fTag; ++ const LETableReference *fParent; ++ const le_uint8 *fStart; // keep as 8 bit internally, for pointer math ++ size_t fLength; ++ ++ void loadTable(LEErrorCode &success) { ++ if(LE_SUCCESS(success)) { ++ fStart = (const le_uint8*)(fFont->getFontTable(fTag, fLength)); // note - a null table is not an error. ++ } ++ } ++ ++ void setRaw(const void *data, size_t length = LE_UINTPTR_MAX) { ++ fFont = NULL; ++ fTag = kQuestionmarkTableTag; ++ fParent = NULL; ++ fStart = (const le_uint8*)data; ++ fLength = length; ++ } ++}; ++ ++ ++template<class T> ++class LETableVarSizer { ++ public: ++ inline static size_t getSize(); ++}; ++ ++// base definition- could override for adjustments ++template<class T> inline ++size_t LETableVarSizer<T>::getSize() { ++ return sizeof(T); ++} ++ ++/** ++ * \def LE_VAR_ARRAY ++ * @param x Type (T) ++ * @param y some member that is of length ANY_NUMBER ++ * Call this after defining a class, for example: ++ * LE_VAR_ARRAY(FeatureListTable,featureRecordArray) ++ * this is roughly equivalent to: ++ * template<> inline size_t LETableVarSizer<FeatureListTable>::getSize() { return sizeof(FeatureListTable) - (sizeof(le_uint16)*ANY_NUMBER); } ++ * it's a specialization that informs the LETableReference subclasses to NOT include the variable array in the size. ++ * dereferencing NULL is valid here because we never actually dereference it, just inside sizeof. ++ */ ++#define LE_VAR_ARRAY(x,y) template<> inline size_t LETableVarSizer<x>::getSize() { return sizeof(x) - (sizeof(((const x*)0)->y)); } ++/** ++ * \def LE_CORRECT_SIZE ++ * @param x type (T) ++ * @param y fixed size for T ++ */ ++#define LE_CORRECT_SIZE(x,y) template<> inline size_t LETableVarSizer<x>::getSize() { return y; } ++ ++/** ++ * Open a new entry based on an existing table ++ */ ++ ++/** ++ * \def LE_UNBOUNDED_ARRAY ++ * define an array with no *known* bound. Will trim to available size. ++ * @internal ++ */ ++#define LE_UNBOUNDED_ARRAY LE_UINT32_MAX ++ ++template<class T> ++class LEReferenceToArrayOf : public LETableReference { ++public: ++ LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, size_t offset, le_uint32 count) ++ : LETableReference(parent, offset, LE_UINTPTR_MAX, success), fCount(count) { ++ LE_TRACE_TR("INFO: new RTAO by offset") ++ if(LE_SUCCESS(success)) { ++ if(count == LE_UNBOUNDED_ARRAY) { // not a known length ++ count = getLength()/LETableVarSizer<T>::getSize(); // fit to max size ++ } ++ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*count, success); ++ } ++ if(LE_FAILURE(success)) { ++ fCount=0; ++ clear(); ++ } ++ } ++ ++ LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, const T* array, le_uint32 count) ++ : LETableReference(parent, parent.ptrToOffset(array, success), LE_UINTPTR_MAX, success), fCount(count) { ++LE_TRACE_TR("INFO: new RTAO") ++ if(LE_SUCCESS(success)) { ++ if(count == LE_UNBOUNDED_ARRAY) { // not a known length ++ count = getLength()/LETableVarSizer<T>::getSize(); // fit to max size ++ } ++ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*count, success); ++ } ++ if(LE_FAILURE(success)) clear(); ++ } ++ LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, const T* array, size_t offset, le_uint32 count) ++ : LETableReference(parent, parent.ptrToOffset(array, success)+offset, LE_UINTPTR_MAX, success), fCount(count) { ++LE_TRACE_TR("INFO: new RTAO") ++ if(LE_SUCCESS(success)) { ++ if(count == LE_UNBOUNDED_ARRAY) { // not a known length ++ count = getLength()/LETableVarSizer<T>::getSize(); // fit to max size ++ } ++ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*count, success); ++ } ++ if(LE_FAILURE(success)) clear(); ++ } ++ ++ LEReferenceToArrayOf() :LETableReference(), fCount(0) {} ++ ++ le_uint32 getCount() const { return fCount; } ++ ++ using LETableReference::getAlias; ++ ++ const T *getAlias(le_uint32 i, LEErrorCode &success) const { ++ return ((const T*)(((const char*)getAlias())+getOffsetFor(i, success))); ++ } ++ ++ const T *getAliasTODO() const { LE_DEBUG_TR("getAliasTODO<>"); return (const T*)fStart; } ++ ++ const T& getObject(le_uint32 i, LEErrorCode &success) const { ++ return *getAlias(i,success); ++ } ++ ++ const T& operator()(le_uint32 i, LEErrorCode &success) const { ++ return *getAlias(i,success); ++ } ++ ++ size_t getOffsetFor(le_uint32 i, LEErrorCode &success) const { ++ if(LE_SUCCESS(success)&&i<getCount()) { ++ return LETableVarSizer<T>::getSize()*i; ++ } else { ++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; ++ } ++ return 0; ++ } ++ ++ LEReferenceToArrayOf<T> &reparent(const LETableReference &base) { ++ fParent = &base; ++ return *this; ++ } ++ ++ LEReferenceToArrayOf(const LETableReference& parent, LEErrorCode & success) : LETableReference(parent,0, LE_UINTPTR_MAX, success), fCount(0) { ++ LE_TRACE_TR("INFO: null RTAO") ++ } ++ ++private: ++ le_uint32 fCount; ++}; ++ ++ ++template<class T> ++class LEReferenceTo : public LETableReference { ++public: ++ /** ++ * open a sub reference. ++ * @param parent parent reference ++ * @param success error status ++ * @param atPtr location of reference - if NULL, will be at offset zero (i.e. downcast of parent). Otherwise must be a pointer within parent's bounds. ++ */ ++ LEReferenceTo(const LETableReference &parent, LEErrorCode &success, const void* atPtr) ++ : LETableReference(parent, parent.ptrToOffset(atPtr, success), LE_UINTPTR_MAX, success) { ++ verifyLength(0, LETableVarSizer<T>::getSize(), success); ++ if(LE_FAILURE(success)) clear(); ++ } ++ /** ++ * ptr plus offset ++ */ ++ LEReferenceTo(const LETableReference &parent, LEErrorCode &success, const void* atPtr, size_t offset) ++ : LETableReference(parent, parent.ptrToOffset(atPtr, success)+offset, LE_UINTPTR_MAX, success) { ++ verifyLength(0, LETableVarSizer<T>::getSize(), success); ++ if(LE_FAILURE(success)) clear(); ++ } ++ LEReferenceTo(const LETableReference &parent, LEErrorCode &success, size_t offset) ++ : LETableReference(parent, offset, LE_UINTPTR_MAX, success) { ++ verifyLength(0, LETableVarSizer<T>::getSize(), success); ++ if(LE_FAILURE(success)) clear(); ++ } ++ LEReferenceTo(const LETableReference &parent, LEErrorCode &success) ++ : LETableReference(parent, 0, LE_UINTPTR_MAX, success) { ++ verifyLength(0, LETableVarSizer<T>::getSize(), success); ++ if(LE_FAILURE(success)) clear(); ++ } ++ LEReferenceTo(const LEFontInstance *font, LETag tableTag, LEErrorCode &success) ++ : LETableReference(font, tableTag, success) { ++ verifyLength(0, LETableVarSizer<T>::getSize(), success); ++ if(LE_FAILURE(success)) clear(); ++ } ++ LEReferenceTo(const le_uint8 *data, size_t length = LE_UINTPTR_MAX) : LETableReference(data, length) {} ++ LEReferenceTo(const T *data, size_t length = LE_UINTPTR_MAX) : LETableReference((const le_uint8*)data, length) {} ++ LEReferenceTo() : LETableReference(NULL) {} ++ ++ LEReferenceTo<T>& operator=(const T* other) { ++ setRaw(other); ++ return *this; ++ } ++ ++ LEReferenceTo<T> &reparent(const LETableReference &base) { ++ fParent = &base; ++ return *this; ++ } ++ ++ /** ++ * roll forward by one <T> size. ++ * same as addOffset(LETableVarSizer<T>::getSize(),success) ++ */ ++ void addObject(LEErrorCode &success) { ++ addOffset(LETableVarSizer<T>::getSize(), success); ++ } ++ void addObject(size_t count, LEErrorCode &success) { ++ addOffset(LETableVarSizer<T>::getSize()*count, success); ++ } ++ ++ const T *operator->() const { return getAlias(); } ++ const T *getAlias() const { return (const T*)fStart; } ++ const T *getAliasTODO() const { LE_DEBUG_TR("getAliasTODO<>"); return (const T*)fStart; } ++}; ++ ++ ++U_NAMESPACE_END ++ ++#endif ++ ++#endif +--- jdk/src/share/native/sun/font/layout/LETypes.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LETypes.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2010 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -50,14 +50,15 @@ + #endif + + #include "unicode/utypes.h" ++ ++#ifdef __cplusplus + #include "unicode/uobject.h" ++#endif ++ + #ifdef LE_USE_CMEMORY + #include "cmemory.h" + #endif +-#endif /* not standalone */ +- +- +-U_NAMESPACE_BEGIN ++#endif + + /*! + * \file +@@ -296,12 +297,14 @@ + */ + typedef UChar32 LEUnicode32; + ++#ifndef U_HIDE_DEPRECATED_API + /** + * Used to represent 16-bit Unicode code points. + * + * @deprecated since ICU 2.4. Use LEUnicode16 instead + */ + typedef UChar LEUnicode; ++#endif /* U_HIDE_DEPRECATED_API */ + + /** + * Used to hold a pair of (x, y) values which represent a point. +@@ -325,7 +328,7 @@ + float fY; + }; + +-#ifndef XP_CPLUSPLUS ++#ifndef __cplusplus + /** + * Used to hold a pair of (x, y) values which represent a point. + * +@@ -335,6 +338,39 @@ + #endif + + ++#ifndef U_HIDE_INTERNAL_API ++ ++#ifndef LE_ASSERT_BAD_FONT ++#define LE_ASSERT_BAD_FONT 0 ++#endif ++ ++#if LE_ASSERT_BAD_FONT ++#include <stdio.h> ++#define LE_DEBUG_BAD_FONT(x) fprintf(stderr,"%s:%d: BAD FONT: %s\n", __FILE__, __LINE__, (x)); ++#else ++#define LE_DEBUG_BAD_FONT(x) ++#endif ++ ++/** ++ * Max value representable by a uintptr ++ */ ++ ++#ifndef UINT32_MAX ++#define LE_UINT32_MAX 0xFFFFFFFFU ++#else ++#define LE_UINT32_MAX UINT32_MAX ++#endif ++ ++#ifndef UINTPTR_MAX ++#define LE_UINTPTR_MAX LE_UINT32_MAX ++#else ++#define LE_UINTPTR_MAX UINTPTR_MAX ++#endif ++ ++/** ++ * Range check for overflow ++ */ ++#define LE_RANGE_CHECK(type, count, ptrfn) (( (LE_UINTPTR_MAX / sizeof(type)) < count ) ? NULL : (ptrfn)) + /** + * A convenience macro to get the length of an array. + * +@@ -356,7 +392,7 @@ + * + * @internal + */ +-#define LE_NEW_ARRAY(type, count) (type *) uprv_malloc((count) * sizeof(type)) ++#define LE_NEW_ARRAY(type, count) (type *) LE_RANGE_CHECK(type,count,uprv_malloc((count) * sizeof(type))) + + /** + * Re-allocate an array of basic types. This is used to isolate the rest of +@@ -373,7 +409,52 @@ + * @internal + */ + #define LE_DELETE_ARRAY(array) uprv_free((void *) (array)) +-#endif ++#else ++/* !LE_USE_CMEMORY - Not using ICU memory - use C std lib versions */ ++ ++#include <stdlib.h> ++#include <string.h> ++ ++/** ++ * A convenience macro to get the length of an array. ++ * ++ * @internal ++ */ ++#define LE_ARRAY_SIZE(array) (sizeof array / sizeof array[0]) ++ ++/** ++ * A convenience macro for copying an array. ++ * ++ * @internal ++ */ ++#define LE_ARRAY_COPY(dst, src, count) memcpy((void *) (dst), (void *) (src), (count) * sizeof (src)[0]) ++ ++/** ++ * Allocate an array of basic types. This is used to isolate the rest of ++ * the LayoutEngine code from cmemory.h. ++ * ++ * @internal ++ */ ++#define LE_NEW_ARRAY(type, count) LE_RANGE_CHECK(type,count,(type *) malloc((count) * sizeof(type))) ++ ++/** ++ * Re-allocate an array of basic types. This is used to isolate the rest of ++ * the LayoutEngine code from cmemory.h. ++ * ++ * @internal ++ */ ++#define LE_GROW_ARRAY(array, newSize) realloc((void *) (array), (newSize) * sizeof (array)[0]) ++ ++ /** ++ * Free an array of basic types. This is used to isolate the rest of ++ * the LayoutEngine code from cmemory.h. ++ * ++ * @internal ++ */ ++#define LE_DELETE_ARRAY(array) free((void *) (array)) ++ ++#endif /* LE_USE_CMEMORY */ ++#endif /* U_HIDE_INTERNAL_API */ + + /** + * A macro to construct the four-letter tags used to +@@ -536,7 +617,7 @@ + LE_RAND_FEATURE_TAG = 0x72616E64UL, /**< 'rand' */ + LE_RLIG_FEATURE_TAG = 0x726C6967UL, /**< 'rlig' */ + LE_RPHF_FEATURE_TAG = 0x72706866UL, /**< 'rphf' */ +- LE_RKRF_FEATURE_TAG = 0x726B7266UL, /**< 'rkrf' */ ++ LE_RKRF_FEATURE_TAG = 0x726B7266UL, /**< 'rkrf' */ + LE_RTBD_FEATURE_TAG = 0x72746264UL, /**< 'rtbd' */ + LE_RTLA_FEATURE_TAG = 0x72746C61UL, /**< 'rtla' */ + LE_RUBY_FEATURE_TAG = 0x72756279UL, /**< 'ruby' */ +@@ -588,6 +669,68 @@ + }; + + /** ++ * @internal ++ */ ++enum LEFeatureENUMs { ++ LE_Kerning_FEATURE_ENUM = 0, /**< Requests Kerning. Formerly LayoutEngine::kTypoFlagKern */ ++ LE_Ligatures_FEATURE_ENUM = 1, /**< Requests Ligatures. Formerly LayoutEngine::kTypoFlagLiga */ ++ LE_NoCanon_FEATURE_ENUM = 2, /**< Requests No Canonical Processing */ ++ LE_CLIG_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_DLIG_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_HLIG_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_LIGA_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_RLIG_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_SMCP_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_FRAC_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_AFRC_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_ZERO_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_SWSH_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_CSWH_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_SALT_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_NALT_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_RUBY_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_SS01_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_SS02_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_SS03_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_SS04_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_SS05_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_SS06_FEATURE_ENUM, /**< Feature specific enum */ ++ LE_SS07_FEATURE_ENUM, /**< Feature specific enum */ ++ ++ LE_CHAR_FILTER_FEATURE_ENUM = 31, /**< Apply CharSubstitutionFilter */ ++ LE_FEATURE_ENUM_MAX = LE_CHAR_FILTER_FEATURE_ENUM ++}; ++ ++#define LE_Kerning_FEATURE_FLAG (1 << LE_Kerning_FEATURE_ENUM) ++#define LE_Ligatures_FEATURE_FLAG (1 << LE_Ligatures_FEATURE_ENUM) ++#define LE_NoCanon_FEATURE_FLAG (1 << LE_NoCanon_FEATURE_ENUM) ++#define LE_CLIG_FEATURE_FLAG (1 << LE_CLIG_FEATURE_ENUM) ++#define LE_DLIG_FEATURE_FLAG (1 << LE_DLIG_FEATURE_ENUM) ++#define LE_HLIG_FEATURE_FLAG (1 << LE_HLIG_FEATURE_ENUM) ++#define LE_LIGA_FEATURE_FLAG (1 << LE_LIGA_FEATURE_ENUM) ++#define LE_RLIG_FEATURE_FLAG (1 << LE_RLIG_FEATURE_ENUM) ++#define LE_SMCP_FEATURE_FLAG (1 << LE_SMCP_FEATURE_ENUM) ++#define LE_FRAC_FEATURE_FLAG (1 << LE_FRAC_FEATURE_ENUM) ++#define LE_AFRC_FEATURE_FLAG (1 << LE_AFRC_FEATURE_ENUM) ++#define LE_ZERO_FEATURE_FLAG (1 << LE_ZERO_FEATURE_ENUM) ++#define LE_SWSH_FEATURE_FLAG (1 << LE_SWSH_FEATURE_ENUM) ++#define LE_CSWH_FEATURE_FLAG (1 << LE_CSWH_FEATURE_ENUM) ++#define LE_SALT_FEATURE_FLAG (1 << LE_SALT_FEATURE_ENUM) ++#define LE_NALT_FEATURE_FLAG (1 << LE_NALT_FEATURE_ENUM) ++#define LE_RUBY_FEATURE_FLAG (1 << LE_RUBY_FEATURE_ENUM) ++#define LE_SS01_FEATURE_FLAG (1 << LE_SS01_FEATURE_ENUM) ++#define LE_SS02_FEATURE_FLAG (1 << LE_SS02_FEATURE_ENUM) ++#define LE_SS03_FEATURE_FLAG (1 << LE_SS03_FEATURE_ENUM) ++#define LE_SS04_FEATURE_FLAG (1 << LE_SS04_FEATURE_ENUM) ++#define LE_SS05_FEATURE_FLAG (1 << LE_SS05_FEATURE_ENUM) ++#define LE_SS06_FEATURE_FLAG (1 << LE_SS06_FEATURE_ENUM) ++#define LE_SS07_FEATURE_FLAG (1 << LE_SS07_FEATURE_ENUM) ++ ++#define LE_CHAR_FILTER_FEATURE_FLAG (1 << LE_CHAR_FILTER_FEATURE_ENUM) ++ ++#define LE_DEFAULT_FEATURE_FLAG (LE_Kerning_FEATURE_FLAG | LE_Ligatures_FEATURE_FLAG) /**< default features */ ++ ++/** + * Error codes returned by the LayoutEngine. + * + * @stable ICU 2.4 +@@ -611,7 +754,7 @@ + }; + #endif + +-#ifndef XP_CPLUSPLUS ++#ifndef __cplusplus + /** + * Error codes returned by the LayoutEngine. + * +@@ -638,7 +781,4 @@ + #define LE_FAILURE(code) (U_FAILURE((UErrorCode)code)) + #endif + +-U_NAMESPACE_END +-#endif +- +- ++#endif /* __LETYPES_H */ +--- jdk/src/share/native/sun/font/layout/LayoutEngine.cpp 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LayoutEngine.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -33,6 +33,7 @@ + #include "LETypes.h" + #include "LEScripts.h" + #include "LELanguages.h" ++#include "LESwaps.h" + + #include "LayoutEngine.h" + #include "ArabicLayoutEngine.h" +@@ -44,6 +45,8 @@ + #include "ThaiLayoutEngine.h" + #include "TibetanLayoutEngine.h" + #include "GXLayoutEngine.h" ++#include "GXLayoutEngine2.h" ++ + #include "ScriptAndLanguageTags.h" + #include "CharSubstitutionFilter.h" + +@@ -63,6 +66,10 @@ + /* Leave this copyright notice here! It needs to go somewhere in this library. */ + static const char copyright[] = U_COPYRIGHT_STRING; + ++/* TODO: remove these? */ ++const le_int32 LayoutEngine::kTypoFlagKern = LE_Kerning_FEATURE_FLAG; ++const le_int32 LayoutEngine::kTypoFlagLiga = LE_Ligatures_FEATURE_FLAG; ++ + const LEUnicode32 DefaultCharMapper::controlChars[] = { + 0x0009, 0x000A, 0x000D, + /*0x200C, 0x200D,*/ 0x200E, 0x200F, +@@ -140,21 +147,21 @@ + class CanonMarkFilter : public UMemory, public LEGlyphFilter + { + private: +- const GlyphClassDefinitionTable *classDefTable; ++ const LEReferenceTo<GlyphClassDefinitionTable> classDefTable; + + CanonMarkFilter(const CanonMarkFilter &other); // forbid copying of this class + CanonMarkFilter &operator=(const CanonMarkFilter &other); // forbid copying of this class + + public: +- CanonMarkFilter(const GlyphDefinitionTableHeader *gdefTable); ++ CanonMarkFilter(const LEReferenceTo<GlyphDefinitionTableHeader> &gdefTable, LEErrorCode &success); + virtual ~CanonMarkFilter(); + + virtual le_bool accept(LEGlyphID glyph) const; + }; + +-CanonMarkFilter::CanonMarkFilter(const GlyphDefinitionTableHeader *gdefTable) ++CanonMarkFilter::CanonMarkFilter(const LEReferenceTo<GlyphDefinitionTableHeader> &gdefTable, LEErrorCode &success) ++ : classDefTable(gdefTable->getMarkAttachClassDefinitionTable(gdefTable, success)) + { +- classDefTable = gdefTable->getMarkAttachClassDefinitionTable(); + } + + CanonMarkFilter::~CanonMarkFilter() +@@ -164,9 +171,10 @@ + + le_bool CanonMarkFilter::accept(LEGlyphID glyph) const + { +- le_int32 glyphClass = classDefTable->getGlyphClass(glyph); +- +- return glyphClass != 0; ++ LEErrorCode success = LE_NO_ERROR; ++ le_int32 glyphClass = classDefTable->getGlyphClass(classDefTable, glyph, success); ++ if(LE_FAILURE(success)) return false; ++ return glyphClass != 0; + } + + UOBJECT_DEFINE_RTTI_IMPLEMENTATION(LayoutEngine) +@@ -251,24 +259,24 @@ + return 0; + } + +- if ((fTypoFlags & 0x4) == 0) { // no canonical processing ++ if ((fTypoFlags & LE_NoCanon_FEATURE_FLAG) == 0) { // no canonical processing + return count; + } + +- const GlyphSubstitutionTableHeader *canonGSUBTable = (GlyphSubstitutionTableHeader *) CanonShaping::glyphSubstitutionTable; ++ LEReferenceTo<GlyphSubstitutionTableHeader> canonGSUBTable((GlyphSubstitutionTableHeader *) CanonShaping::glyphSubstitutionTable); + LETag scriptTag = OpenTypeLayoutEngine::getScriptTag(fScriptCode); + LETag langSysTag = OpenTypeLayoutEngine::getLangSysTag(fLanguageCode); + le_int32 i, dir = 1, out = 0, outCharCount = count; + +- if (canonGSUBTable->coversScript(scriptTag)) { ++ if (canonGSUBTable->coversScript(canonGSUBTable,scriptTag, success) || LE_SUCCESS(success)) { + CharSubstitutionFilter *substitutionFilter = new CharSubstitutionFilter(fFontInstance); + if (substitutionFilter == NULL) { + success = LE_MEMORY_ALLOCATION_ERROR; + return 0; + } + +- const LEUnicode *inChars = &chars[offset]; +- LEUnicode *reordered = NULL; ++ const LEUnicode *inChars = &chars[offset]; ++ LEUnicode *reordered = NULL; + LEGlyphStorage fakeGlyphStorage; + + fakeGlyphStorage.allocateGlyphArray(count, rightToLeft, success); +@@ -278,20 +286,20 @@ + return 0; + } + +- // This is the cheapest way to get mark reordering only for Hebrew. +- // We could just do the mark reordering for all scripts, but most +- // of them probably don't need it... +- if (fScriptCode == hebrScriptCode) { +- reordered = LE_NEW_ARRAY(LEUnicode, count); +- +- if (reordered == NULL) { +- delete substitutionFilter; +- success = LE_MEMORY_ALLOCATION_ERROR; +- return 0; +- } ++ // This is the cheapest way to get mark reordering only for Hebrew. ++ // We could just do the mark reordering for all scripts, but most ++ // of them probably don't need it... ++ if (fScriptCode == hebrScriptCode) { ++ reordered = LE_NEW_ARRAY(LEUnicode, count); + +- CanonShaping::reorderMarks(&chars[offset], count, rightToLeft, reordered, fakeGlyphStorage); +- inChars = reordered; ++ if (reordered == NULL) { ++ delete substitutionFilter; ++ success = LE_MEMORY_ALLOCATION_ERROR; ++ return 0; ++ } ++ ++ CanonShaping::reorderMarks(&chars[offset], count, rightToLeft, reordered, fakeGlyphStorage); ++ inChars = reordered; + } + + fakeGlyphStorage.allocateAuxData(success); +@@ -311,11 +319,11 @@ + fakeGlyphStorage.setAuxData(out, canonFeatures, success); + } + +- if (reordered != NULL) { +- LE_DELETE_ARRAY(reordered); +- } ++ if (reordered != NULL) { ++ LE_DELETE_ARRAY(reordered); ++ } + +- outCharCount = canonGSUBTable->process(fakeGlyphStorage, rightToLeft, scriptTag, langSysTag, NULL, substitutionFilter, canonFeatureMap, canonFeatureMapCount, FALSE, success); ++ outCharCount = canonGSUBTable->process(canonGSUBTable, fakeGlyphStorage, rightToLeft, scriptTag, langSysTag, (const GlyphDefinitionTableHeader*)NULL, substitutionFilter, canonFeatureMap, canonFeatureMapCount, FALSE, success); + + if (LE_FAILURE(success)) { + delete substitutionFilter; +@@ -416,16 +424,16 @@ + return; + } + +- GlyphDefinitionTableHeader *gdefTable = (GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable; +- CanonMarkFilter filter(gdefTable); ++ LEReferenceTo<GlyphDefinitionTableHeader> gdefTable((GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable, ++ CanonShaping::glyphDefinitionTableLen); ++ CanonMarkFilter filter(gdefTable, success); + + adjustMarkGlyphs(&chars[offset], count, reverse, glyphStorage, &filter, success); + +- if (fTypoFlags & 0x1) { /* kerning enabled */ +- static const le_uint32 kernTableTag = LE_KERN_TABLE_TAG; +- +- KernTable kt(fFontInstance, getFontTable(kernTableTag)); +- kt.process(glyphStorage); ++ if (fTypoFlags & LE_Kerning_FEATURE_FLAG) { /* kerning enabled */ ++ LETableReference kernTable(fFontInstance, LE_KERN_TABLE_TAG, success); ++ KernTable kt(kernTable, success); ++ kt.process(glyphStorage, success); + } + + // default is no adjustments +@@ -510,9 +518,9 @@ + glyphStorage.adjustPosition(glyphCount, xAdjust, 0, success); + } + +-const void *LayoutEngine::getFontTable(LETag tableTag) const ++const void *LayoutEngine::getFontTable(LETag tableTag, size_t &length) const + { +- return fFontInstance->getFontTable(tableTag); ++ return fFontInstance->getFontTable(tableTag, length); + } + + void LayoutEngine::mapCharsToGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, le_bool mirror, +@@ -559,37 +567,41 @@ + + void LayoutEngine::reset() + { ++ if(fGlyphStorage!=NULL) { + fGlyphStorage->reset(); ++ fGlyphStorage = NULL; ++ } + } + + LayoutEngine *LayoutEngine::layoutEngineFactory(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, LEErrorCode &success) + { +- // 3 -> kerning and ligatures +- return LayoutEngine::layoutEngineFactory(fontInstance, scriptCode, languageCode, 3, success); ++ //kerning and ligatures - by default ++ return LayoutEngine::layoutEngineFactory(fontInstance, scriptCode, languageCode, LE_DEFAULT_FEATURE_FLAG, success); + } + + LayoutEngine *LayoutEngine::layoutEngineFactory(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, le_int32 typoFlags, LEErrorCode &success) + { + static const le_uint32 gsubTableTag = LE_GSUB_TABLE_TAG; + static const le_uint32 mortTableTag = LE_MORT_TABLE_TAG; ++ static const le_uint32 morxTableTag = LE_MORX_TABLE_TAG; + + if (LE_FAILURE(success)) { + return NULL; + } + +- const GlyphSubstitutionTableHeader *gsubTable = (const GlyphSubstitutionTableHeader *) fontInstance->getFontTable(gsubTableTag); ++ LEReferenceTo<GlyphSubstitutionTableHeader> gsubTable(fontInstance,gsubTableTag,success); + LayoutEngine *result = NULL; + LETag scriptTag = 0x00000000; + LETag languageTag = 0x00000000; +- LETag v2ScriptTag = OpenTypeLayoutEngine::getV2ScriptTag(scriptCode); ++ LETag v2ScriptTag = OpenTypeLayoutEngine::getV2ScriptTag(scriptCode); + + // Right now, only invoke V2 processing for Devanagari. TODO: Allow more V2 scripts as they are + // properly tested. + +- if ( v2ScriptTag == dev2ScriptTag && gsubTable != NULL && gsubTable->coversScript( v2ScriptTag )) { +- result = new IndicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, TRUE, gsubTable, success); +- } +- else if (gsubTable != NULL && gsubTable->coversScript(scriptTag = OpenTypeLayoutEngine::getScriptTag(scriptCode))) { ++ if ( v2ScriptTag == dev2ScriptTag && gsubTable.isValid() && gsubTable->coversScript(gsubTable, v2ScriptTag, success )) { ++ result = new IndicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, TRUE, gsubTable, success); ++ } ++ else if (gsubTable.isValid() && gsubTable->coversScript(gsubTable, scriptTag = OpenTypeLayoutEngine::getScriptTag(scriptCode), success)) { + switch (scriptCode) { + case bengScriptCode: + case devaScriptCode: +@@ -608,6 +620,11 @@ + result = new ArabicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable, success); + break; + ++ case hebrScriptCode: ++ // Disable hebrew ligatures since they have only archaic uses, see ticket #8318 ++ result = new OpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags & ~kTypoFlagLiga, gsubTable, success); ++ break; ++ + case hangScriptCode: + result = new HangulOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable, success); + break; +@@ -620,10 +637,10 @@ + case janLanguageCode: + case zhtLanguageCode: + case zhsLanguageCode: +- if (gsubTable->coversScriptAndLanguage(scriptTag, languageTag, TRUE)) { ++ if (gsubTable->coversScriptAndLanguage(gsubTable, scriptTag, languageTag, success, TRUE)) { + result = new HanOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable, success); + break; +- } ++ } + + // note: falling through to default case. + default: +@@ -646,26 +663,29 @@ + break; + } + } else { +- const MorphTableHeader *morphTable = (MorphTableHeader *) fontInstance->getFontTable(mortTableTag); +- +- if (morphTable != NULL) { +- result = new GXLayoutEngine(fontInstance, scriptCode, languageCode, morphTable, success); ++ MorphTableHeader2 *morxTable = (MorphTableHeader2 *)fontInstance->getFontTable(morxTableTag); ++ if (morxTable != NULL && SWAPL(morxTable->version)==0x00020000) { ++ result = new GXLayoutEngine2(fontInstance, scriptCode, languageCode, morxTable, typoFlags, success); + } else { +- switch (scriptCode) { +- case bengScriptCode: +- case devaScriptCode: +- case gujrScriptCode: +- case kndaScriptCode: +- case mlymScriptCode: +- case oryaScriptCode: +- case guruScriptCode: +- case tamlScriptCode: +- case teluScriptCode: +- case sinhScriptCode: +- { +- result = new IndicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success); +- break; +- } ++ LEReferenceTo<MorphTableHeader> mortTable(fontInstance, mortTableTag, success); ++ if (LE_SUCCESS(success) && mortTable.isValid() && SWAPL(mortTable->version)==0x00010000) { // mort ++ result = new GXLayoutEngine(fontInstance, scriptCode, languageCode, mortTable, success); ++ } else { ++ switch (scriptCode) { ++ case bengScriptCode: ++ case devaScriptCode: ++ case gujrScriptCode: ++ case kndaScriptCode: ++ case mlymScriptCode: ++ case oryaScriptCode: ++ case guruScriptCode: ++ case tamlScriptCode: ++ case teluScriptCode: ++ case sinhScriptCode: ++ { ++ result = new IndicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success); ++ break; ++ } + + case arabScriptCode: + //case hebrScriptCode: +@@ -683,9 +703,10 @@ + result = new HangulOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success); + break; + +- default: +- result = new LayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success); +- break; ++ default: ++ result = new LayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success); ++ break; ++ } + } + } + } +--- jdk/src/share/native/sun/font/layout/LayoutEngine.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LayoutEngine.h 2013-05-05 09:38:38.000000000 -0700 +@@ -26,7 +26,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2008 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -90,6 +90,14 @@ + * @stable ICU 2.8 + */ + class U_LAYOUT_API LayoutEngine : public UObject { ++public: ++#ifndef U_HIDE_INTERNAL_API ++ /** @internal Flag to request kerning. Use LE_Kerning_FEATURE_FLAG instead. */ ++ static const le_int32 kTypoFlagKern; ++ /** @internal Flag to request ligatures. Use LE_Ligatures_FEATURE_FLAG instead. */ ++ static const le_int32 kTypoFlagLiga; ++#endif /* U_HIDE_INTERNAL_API */ ++ + protected: + /** + * The object which holds the glyph storage +@@ -140,6 +148,7 @@ + */ + le_bool fFilterZeroWidth; + ++#ifndef U_HIDE_INTERNAL_API + /** + * This constructs an instance for a given font, script and language. Subclass constructors + * must call this constructor. +@@ -161,7 +170,10 @@ + le_int32 languageCode, + le_int32 typoFlags, + LEErrorCode &success); ++#endif /* U_HIDE_INTERNAL_API */ + ++ // Do not enclose the protected default constructor with #ifndef U_HIDE_INTERNAL_API ++ // or else the compiler will create a public default constructor. + /** + * This overrides the default no argument constructor to make it + * difficult for clients to call it. Clients are expected to call +@@ -268,12 +280,18 @@ + * some other way must override this method. + * + * @param tableTag - the four byte table tag. ++ * @param length - length to use + * + * @return the address of the table. + * + * @internal + */ +- virtual const void *getFontTable(LETag tableTag) const; ++ virtual const void *getFontTable(LETag tableTag, size_t &length) const; ++ ++ /** ++ * @deprecated ++ */ ++ virtual const void *getFontTable(LETag tableTag) const { size_t ignored; return getFontTable(tableTag, ignored); } + + /** + * This method does character to glyph mapping. The default implementation +@@ -302,6 +320,7 @@ + */ + virtual void mapCharsToGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, le_bool mirror, LEGlyphStorage &glyphStorage, LEErrorCode &success); + ++#ifndef U_HIDE_INTERNAL_API + /** + * This is a convenience method that forces the advance width of mark + * glyphs to be zero, which is required for proper selection and highlighting. +@@ -336,7 +355,7 @@ + * @internal + */ + static void adjustMarkGlyphs(const LEUnicode chars[], le_int32 charCount, le_bool reverse, LEGlyphStorage &glyphStorage, LEGlyphFilter *markFilter, LEErrorCode &success); +- ++#endif /* U_HIDE_INTERNAL_API */ + + public: + /** +--- jdk/src/share/native/sun/font/layout/LigatureSubstProc.cpp 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LigatureSubstProc.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -47,15 +47,15 @@ + + UOBJECT_DEFINE_RTTI_IMPLEMENTATION(LigatureSubstitutionProcessor) + +-LigatureSubstitutionProcessor::LigatureSubstitutionProcessor(const MorphSubtableHeader *morphSubtableHeader) +- : StateTableProcessor(morphSubtableHeader) ++ LigatureSubstitutionProcessor::LigatureSubstitutionProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) ++: StateTableProcessor(morphSubtableHeader, success), ligatureSubstitutionHeader(morphSubtableHeader, success) + { +- ligatureSubstitutionHeader = (const LigatureSubstitutionHeader *) morphSubtableHeader; ++ if(LE_FAILURE(success)) return; + ligatureActionTableOffset = SWAPW(ligatureSubstitutionHeader->ligatureActionTableOffset); + componentTableOffset = SWAPW(ligatureSubstitutionHeader->componentTableOffset); + ligatureTableOffset = SWAPW(ligatureSubstitutionHeader->ligatureTableOffset); + +- entryTable = (const LigatureSubstitutionStateEntry *) ((char *) &stateTableHeader->stHeader + entryTableOffset); ++ entryTable = LEReferenceToArrayOf<LigatureSubstitutionStateEntry>(stHeader, success, entryTableOffset, LE_UNBOUNDED_ARRAY); + } + + LigatureSubstitutionProcessor::~LigatureSubstitutionProcessor() +@@ -69,7 +69,9 @@ + + ByteOffset LigatureSubstitutionProcessor::processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex index) + { +- const LigatureSubstitutionStateEntry *entry = &entryTable[index]; ++ LEErrorCode success = LE_NO_ERROR; ++ const LigatureSubstitutionStateEntry *entry = entryTable.getAlias(index, success); ++ + ByteOffset newState = SWAPW(entry->newStateOffset); + le_int16 flags = SWAPW(entry->flags); + +@@ -79,12 +81,16 @@ + } + + componentStack[m] = currGlyph; ++ } else if ( m == -1) { ++ // bad font- skip this glyph. ++ currGlyph++; ++ return newState; + } + + ByteOffset actionOffset = flags & lsfActionOffsetMask; + + if (actionOffset != 0) { +- const LigatureActionEntry *ap = (const LigatureActionEntry *) ((char *) &ligatureSubstitutionHeader->stHeader + actionOffset); ++ LEReferenceTo<LigatureActionEntry> ap(stHeader, success, actionOffset); + LigatureActionEntry action; + le_int32 offset, i = 0; + le_int32 stack[nComponents]; +@@ -93,7 +99,8 @@ + do { + le_uint32 componentGlyph = componentStack[m--]; + +- action = SWAPL(*ap++); ++ action = SWAPL(*ap.getAlias()); ++ ap.addObject(success); // ap++ + + if (m < 0) { + m = nComponents - 1; +@@ -101,29 +108,48 @@ + + offset = action & lafComponentOffsetMask; + if (offset != 0) { +- const le_int16 *offsetTable = (const le_int16 *)((char *) &ligatureSubstitutionHeader->stHeader + 2 * SignExtend(offset, lafComponentOffsetMask)); ++ LEReferenceToArrayOf<le_int16> offsetTable(stHeader, success, 2 * SignExtend(offset, lafComponentOffsetMask), LE_UNBOUNDED_ARRAY); + +- i += SWAPW(offsetTable[LE_GET_GLYPH(glyphStorage[componentGlyph])]); ++ if(LE_FAILURE(success)) { ++ currGlyph++; ++ LE_DEBUG_BAD_FONT("off end of ligature substitution header"); ++ return newState; // get out! bad font ++ } ++ if(componentGlyph > glyphStorage.getGlyphCount()) { ++ LE_DEBUG_BAD_FONT("preposterous componentGlyph"); ++ currGlyph++; ++ return newState; // get out! bad font ++ } ++ i += SWAPW(offsetTable.getObject(LE_GET_GLYPH(glyphStorage[componentGlyph]), success)); + + if (action & (lafLast | lafStore)) { +- const TTGlyphID *ligatureOffset = (const TTGlyphID *) ((char *) &ligatureSubstitutionHeader->stHeader + i); +- TTGlyphID ligatureGlyph = SWAPW(*ligatureOffset); ++ LEReferenceTo<TTGlyphID> ligatureOffset(stHeader, success, i); ++ TTGlyphID ligatureGlyph = SWAPW(*ligatureOffset.getAlias()); + +- glyphStorage[componentGlyph] = LE_SET_GLYPH(glyphStorage[componentGlyph], ligatureGlyph); +- stack[++mm] = componentGlyph; +- i = 0; ++ glyphStorage[componentGlyph] = LE_SET_GLYPH(glyphStorage[componentGlyph], ligatureGlyph); ++ if(mm==nComponents) { ++ LE_DEBUG_BAD_FONT("exceeded nComponents"); ++ mm--; // don't overrun the stack. ++ } ++ stack[++mm] = componentGlyph; ++ i = 0; + } else { +- glyphStorage[componentGlyph] = LE_SET_GLYPH(glyphStorage[componentGlyph], 0xFFFF); ++ glyphStorage[componentGlyph] = LE_SET_GLYPH(glyphStorage[componentGlyph], 0xFFFF); + } + } +- } while (!(action & lafLast)); ++#if LE_ASSERT_BAD_FONT ++ if(m<0) { ++ LE_DEBUG_BAD_FONT("m<0") ++ } ++#endif ++ } while (!(action & lafLast) && (m>=0) ); // stop if last bit is set, or if run out of items + + while (mm >= 0) { +- if (++m >= nComponents) { +- m = 0; +- } ++ if (++m >= nComponents) { ++ m = 0; ++ } + +- componentStack[m] = stack[mm--]; ++ componentStack[m] = stack[mm--]; + } + } + +--- jdk/src/share/native/sun/font/layout/LigatureSubstProc.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LigatureSubstProc.h 2013-05-05 09:38:38.000000000 -0700 +@@ -58,7 +58,7 @@ + + virtual void endStateTable(); + +- LigatureSubstitutionProcessor(const MorphSubtableHeader *morphSubtableHeader); ++ LigatureSubstitutionProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); + virtual ~LigatureSubstitutionProcessor(); + + /** +@@ -83,12 +83,12 @@ + ByteOffset componentTableOffset; + ByteOffset ligatureTableOffset; + +- const LigatureSubstitutionStateEntry *entryTable; ++ LEReferenceToArrayOf<LigatureSubstitutionStateEntry> entryTable; + + le_int32 componentStack[nComponents]; + le_int16 m; + +- const LigatureSubstitutionHeader *ligatureSubstitutionHeader; ++ LEReferenceTo<LigatureSubstitutionHeader> ligatureSubstitutionHeader; + + }; + +--- jdk/src/share/native/sun/font/layout/LigatureSubstProc2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/LigatureSubstProc2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,170 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp and Others. 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "StateTables.h" ++#include "MorphStateTables.h" ++#include "SubtableProcessor2.h" ++#include "StateTableProcessor2.h" ++#include "LigatureSubstProc2.h" ++#include "LEGlyphStorage.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++#define ExtendedComplement(m) ((le_int32) (~((le_uint32) (m)))) ++#define SignBit(m) ((ExtendedComplement(m) >> 1) & (le_int32)(m)) ++#define SignExtend(v,m) (((v) & SignBit(m))? ((v) | ExtendedComplement(m)): (v)) ++ ++UOBJECT_DEFINE_RTTI_IMPLEMENTATION(LigatureSubstitutionProcessor2) ++ ++LigatureSubstitutionProcessor2::LigatureSubstitutionProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : StateTableProcessor2(morphSubtableHeader, success), ++ ligActionOffset(0), ++ ligatureSubstitutionHeader(morphSubtableHeader, success), componentOffset(0), ligatureOffset(0), entryTable() ++{ ++ if (LE_FAILURE(success)) return; ++ ++ ligActionOffset = SWAPL(ligatureSubstitutionHeader->ligActionOffset); ++ componentOffset = SWAPL(ligatureSubstitutionHeader->componentOffset); ++ ligatureOffset = SWAPL(ligatureSubstitutionHeader->ligatureOffset); ++ ++ entryTable = LEReferenceToArrayOf<LigatureSubstitutionStateEntry2>(stHeader, success, entryTableOffset, LE_UNBOUNDED_ARRAY); ++} ++ ++LigatureSubstitutionProcessor2::~LigatureSubstitutionProcessor2() ++{ ++} ++ ++void LigatureSubstitutionProcessor2::beginStateTable() ++{ ++ m = -1; ++} ++ ++le_uint16 LigatureSubstitutionProcessor2::processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex2 index, LEErrorCode &success) ++{ ++ const LigatureSubstitutionStateEntry2 *entry = entryTable.getAlias(index, success); ++ if(LE_FAILURE(success)) return 0; ++ ++ le_uint16 nextStateIndex = SWAPW(entry->nextStateIndex); ++ le_uint16 flags = SWAPW(entry->entryFlags); ++ le_uint16 ligActionIndex = SWAPW(entry->ligActionIndex); ++ ++ if (flags & lsfSetComponent) { ++ if (++m >= nComponents) { ++ m = 0; ++ } ++ componentStack[m] = currGlyph; ++ } else if ( m == -1) { ++ // bad font- skip this glyph. ++ //LE_DEBUG_BAD_FONT("m==-1 (componentCount went negative)") ++ currGlyph+= dir; ++ return nextStateIndex; ++ } ++ ++ ByteOffset actionOffset = flags & lsfPerformAction; ++ ++ if (actionOffset != 0) { ++ LEReferenceTo<LigatureActionEntry> ap(stHeader, success, ligActionOffset); // byte offset ++ ap.addObject(ligActionIndex - 1, success); // index offset ( one before the actual start, because we will pre-increment) ++ LEReferenceToArrayOf<TTGlyphID> ligatureTable(stHeader, success, ligatureOffset, LE_UNBOUNDED_ARRAY); ++ LigatureActionEntry action; ++ le_int32 offset, i = 0; ++ le_int32 stack[nComponents]; ++ le_int16 mm = -1; ++ ++ LEReferenceToArrayOf<le_uint16> componentTable(stHeader, success, componentOffset, LE_UNBOUNDED_ARRAY); ++ if(LE_FAILURE(success)) { ++ currGlyph+= dir; ++ return nextStateIndex; // get out! bad font ++ } ++ ++ do { ++ le_uint32 componentGlyph = componentStack[m--]; // pop off ++ ++ ap.addObject(success); ++ action = SWAPL(*ap.getAlias()); ++ ++ if (m < 0) { ++ m = nComponents - 1; ++ } ++ ++ offset = action & lafComponentOffsetMask; ++ if (offset != 0) { ++ if(componentGlyph > glyphStorage.getGlyphCount()) { ++ LE_DEBUG_BAD_FONT("preposterous componentGlyph"); ++ currGlyph+= dir; ++ return nextStateIndex; // get out! bad font ++ } ++ i += SWAPW(componentTable(LE_GET_GLYPH(glyphStorage[componentGlyph]) + (SignExtend(offset, lafComponentOffsetMask)),success)); ++ ++ if (action & (lafLast | lafStore)) { ++ TTGlyphID ligatureGlyph = SWAPW(ligatureTable(i,success)); ++ glyphStorage[componentGlyph] = LE_SET_GLYPH(glyphStorage[componentGlyph], ligatureGlyph); ++ if(mm==nComponents) { ++ LE_DEBUG_BAD_FONT("exceeded nComponents"); ++ mm--; // don't overrun the stack. ++ } ++ stack[++mm] = componentGlyph; ++ i = 0; ++ } else { ++ glyphStorage[componentGlyph] = LE_SET_GLYPH(glyphStorage[componentGlyph], 0xFFFF); ++ } ++ } ++#if LE_ASSERT_BAD_FONT ++ if(m<0) { ++ LE_DEBUG_BAD_FONT("m<0") ++ } ++#endif ++ } while (!(action & lafLast) && (m>=0) ); // stop if last bit is set, or if run out of items ++ ++ while (mm >= 0) { ++ if (++m >= nComponents) { ++ m = 0; ++ } ++ ++ componentStack[m] = stack[mm--]; ++ } ++ } ++ ++ if (!(flags & lsfDontAdvance)) { ++ currGlyph += dir; ++ } ++ ++ return nextStateIndex; ++} ++ ++void LigatureSubstitutionProcessor2::endStateTable() ++{ ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/LigatureSubstProc2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/LigatureSubstProc2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,97 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __LIGATURESUBSTITUTIONPROCESSOR2_H ++#define __LIGATURESUBSTITUTIONPROCESSOR2_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "StateTableProcessor2.h" ++#include "LigatureSubstitution.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++#define nComponents 16 ++ ++class LigatureSubstitutionProcessor2 : public StateTableProcessor2 ++{ ++public: ++ virtual void beginStateTable(); ++ ++ virtual le_uint16 processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, ++ EntryTableIndex2 index, LEErrorCode &success); ++ ++ virtual void endStateTable(); ++ ++ LigatureSubstitutionProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ virtual ~LigatureSubstitutionProcessor2(); ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for the actual class. ++ * ++ * @stable ICU 2.8 ++ */ ++ virtual UClassID getDynamicClassID() const; ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for this class. ++ * ++ * @stable ICU 2.8 ++ */ ++ static UClassID getStaticClassID(); ++ ++private: ++ LigatureSubstitutionProcessor2(); ++ ++protected: ++ le_uint32 ligActionOffset; ++ le_uint32 componentOffset; ++ le_uint32 ligatureOffset; ++ ++ LEReferenceToArrayOf<LigatureSubstitutionStateEntry2> entryTable; ++ ++ le_int32 componentStack[nComponents]; ++ le_int16 m; ++ ++ const LEReferenceTo<LigatureSubstitutionHeader2> ligatureSubstitutionHeader; ++ ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/LigatureSubstSubtables.cpp 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LigatureSubstSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -40,10 +40,10 @@ + + U_NAMESPACE_BEGIN + +-le_uint32 LigatureSubstitutionSubtable::process(GlyphIterator *glyphIterator, const LEGlyphFilter *filter) const ++le_uint32 LigatureSubstitutionSubtable::process(const LETableReference &base, GlyphIterator *glyphIterator, LEErrorCode &success, const LEGlyphFilter *filter) const + { + LEGlyphID glyph = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(glyph); ++ le_int32 coverageIndex = getGlyphCoverage(base, glyph, success); + + if (coverageIndex >= 0) { + Offset ligSetTableOffset = SWAPW(ligSetTableOffsetArray[coverageIndex]); +--- jdk/src/share/native/sun/font/layout/LigatureSubstSubtables.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LigatureSubstSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -50,6 +50,7 @@ + le_uint16 ligatureCount; + Offset ligatureTableOffsetArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(LigatureSetTable, ligatureTableOffsetArray) + + struct LigatureTable + { +@@ -57,14 +58,16 @@ + le_uint16 compCount; + TTGlyphID componentArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(LigatureTable, componentArray) + + struct LigatureSubstitutionSubtable : GlyphSubstitutionSubtable + { + le_uint16 ligSetCount; + Offset ligSetTableOffsetArray[ANY_NUMBER]; + +- le_uint32 process(GlyphIterator *glyphIterator, const LEGlyphFilter *filter = NULL) const; ++ le_uint32 process(const LETableReference &base, GlyphIterator *glyphIterator, LEErrorCode &success, const LEGlyphFilter *filter = NULL) const; + }; ++LE_VAR_ARRAY(LigatureSubstitutionSubtable, ligSetTableOffsetArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/LigatureSubstitution.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LigatureSubstitution.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -52,17 +52,32 @@ + ByteOffset ligatureTableOffset; + }; + ++struct LigatureSubstitutionHeader2 : MorphStateTableHeader2 ++{ ++ le_uint32 ligActionOffset; ++ le_uint32 componentOffset; ++ le_uint32 ligatureOffset; ++}; ++ + enum LigatureSubstitutionFlags + { + lsfSetComponent = 0x8000, + lsfDontAdvance = 0x4000, +- lsfActionOffsetMask = 0x3FFF ++ lsfActionOffsetMask = 0x3FFF, // N/A in morx ++ lsfPerformAction = 0x2000 + }; + + struct LigatureSubstitutionStateEntry : StateEntry + { + }; + ++struct LigatureSubstitutionStateEntry2 ++{ ++ le_uint16 nextStateIndex; ++ le_uint16 entryFlags; ++ le_uint16 ligActionIndex; ++}; ++ + typedef le_uint32 LigatureActionEntry; + + enum LigatureActionFlags +--- jdk/src/share/native/sun/font/layout/LookupProcessor.cpp 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LookupProcessor.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2010 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -44,7 +44,7 @@ + + U_NAMESPACE_BEGIN + +-le_uint32 LookupProcessor::applyLookupTable(const LookupTable *lookupTable, GlyphIterator *glyphIterator, ++le_uint32 LookupProcessor::applyLookupTable(const LEReferenceTo<LookupTable> &lookupTable, GlyphIterator *glyphIterator, + const LEFontInstance *fontInstance, LEErrorCode& success) const + { + if (LE_FAILURE(success)) { +@@ -57,7 +57,7 @@ + le_uint32 delta; + + for (le_uint16 subtable = 0; subtable < subtableCount; subtable += 1) { +- const LookupSubtable *lookupSubtable = lookupTable->getLookupSubtable(subtable); ++ LEReferenceTo<LookupSubtable> lookupSubtable = lookupTable->getLookupSubtable(lookupTable, subtable, success); + + delta = applySubtable(lookupSubtable, lookupType, glyphIterator, fontInstance, success); + +@@ -72,7 +72,7 @@ + } + + le_int32 LookupProcessor::process(LEGlyphStorage &glyphStorage, GlyphPositionAdjustments *glyphPositionAdjustments, +- le_bool rightToLeft, const GlyphDefinitionTableHeader *glyphDefinitionTableHeader, ++ le_bool rightToLeft, const LEReferenceTo<GlyphDefinitionTableHeader> &glyphDefinitionTableHeader, + const LEFontInstance *fontInstance, LEErrorCode& success) const + { + if (LE_FAILURE(success)) { +@@ -89,22 +89,21 @@ + rightToLeft, 0, 0, glyphDefinitionTableHeader); + le_int32 newGlyphCount = glyphCount; + +- for (le_uint16 order = 0; order < lookupOrderCount; order += 1) { ++ for (le_uint16 order = 0; order < lookupOrderCount && LE_SUCCESS(success); order += 1) { + le_uint16 lookup = lookupOrderArray[order]; + FeatureMask selectMask = lookupSelectArray[lookup]; + + if (selectMask != 0) { +- const LookupTable *lookupTable = lookupListTable->getLookupTable(lookup); +- +- if (!lookupTable) ++ const LEReferenceTo<LookupTable> lookupTable = lookupListTable->getLookupTable(lookupListTable, lookup, success); ++ if (!lookupTable.isValid() ||LE_FAILURE(success) ) { + continue; +- ++ } + le_uint16 lookupFlags = SWAPW(lookupTable->lookupFlags); + + glyphIterator.reset(lookupFlags, selectMask); + + while (glyphIterator.findFeatureTag()) { +- applyLookupTable(lookupTable, &glyphIterator, fontInstance, success); ++ applyLookupTable(lookupTable, &glyphIterator, fontInstance, success); // TODO + if (LE_FAILURE(success)) { + return 0; + } +@@ -124,7 +123,11 @@ + return 0; + } + +- const LookupTable *lookupTable = lookupListTable->getLookupTable(lookupTableIndex); ++ const LEReferenceTo<LookupTable> lookupTable = lookupListTable->getLookupTable(lookupListTable, lookupTableIndex, success); ++ if (!lookupTable.isValid()) { ++ success = LE_INTERNAL_ERROR; ++ return 0; ++ } + le_uint16 lookupFlags = SWAPW(lookupTable->lookupFlags); + GlyphIterator tempIterator(*glyphIterator, lookupFlags); + le_uint32 delta = applyLookupTable(lookupTable, &tempIterator, fontInstance, success); +@@ -132,33 +135,35 @@ + return delta; + } + +-le_int32 LookupProcessor::selectLookups(const FeatureTable *featureTable, FeatureMask featureMask, le_int32 order) ++le_int32 LookupProcessor::selectLookups(const LEReferenceTo<FeatureTable> &featureTable, FeatureMask featureMask, le_int32 order, LEErrorCode &success) + { +- le_uint16 lookupCount = featureTable? SWAPW(featureTable->lookupCount) : 0; ++ le_uint16 lookupCount = featureTable.isValid()? SWAPW(featureTable->lookupCount) : 0; + le_int32 store = order; + +- for (le_uint16 lookup = 0; lookup < lookupCount; lookup += 1) { +- le_uint16 lookupListIndex = SWAPW(featureTable->lookupListIndexArray[lookup]); ++ LEReferenceToArrayOf<le_uint16> lookupListIndexArray(featureTable, success, featureTable->lookupListIndexArray, lookupCount); + +- if (lookupListIndex >= lookupSelectCount) +- continue; ++ for (le_uint16 lookup = 0; LE_SUCCESS(success) && lookup < lookupCount; lookup += 1) { ++ le_uint16 lookupListIndex = SWAPW(lookupListIndexArray.getObject(lookup,success)); ++ if (lookupListIndex >= lookupSelectCount) { ++ continue; ++ } + +- lookupSelectArray[lookupListIndex] |= featureMask; +- lookupOrderArray[store++] = lookupListIndex; ++ lookupSelectArray[lookupListIndex] |= featureMask; ++ lookupOrderArray[store++] = lookupListIndex; + } + + return store - order; + } + +-LookupProcessor::LookupProcessor(const char *baseAddress, ++LookupProcessor::LookupProcessor(const LETableReference &baseAddress, + Offset scriptListOffset, Offset featureListOffset, Offset lookupListOffset, + LETag scriptTag, LETag languageTag, const FeatureMap *featureMap, le_int32 featureMapCount, le_bool orderFeatures, + LEErrorCode& success) +- : lookupListTable(NULL), featureListTable(NULL), lookupSelectArray(NULL), lookupSelectCount(0), +- lookupOrderArray(NULL), lookupOrderCount(0) ++ : lookupListTable(), featureListTable(), lookupSelectArray(NULL), lookupSelectCount(0), ++ lookupOrderArray(NULL), lookupOrderCount(0), fReference(baseAddress) + { +- const ScriptListTable *scriptListTable = NULL; +- const LangSysTable *langSysTable = NULL; ++ LEReferenceTo<ScriptListTable> scriptListTable; ++ LEReferenceTo<LangSysTable> langSysTable; + le_uint16 featureCount = 0; + le_uint16 lookupListCount = 0; + le_uint16 requiredFeatureIndex; +@@ -168,29 +173,33 @@ + } + + if (scriptListOffset != 0) { +- scriptListTable = (const ScriptListTable *) (baseAddress + scriptListOffset); +- langSysTable = scriptListTable->findLanguage(scriptTag, languageTag); ++ scriptListTable = LEReferenceTo<ScriptListTable>(baseAddress, success, scriptListOffset); ++ langSysTable = scriptListTable->findLanguage(scriptListTable, scriptTag, languageTag, success); + +- if (langSysTable != 0) { +- featureCount = SWAPW(langSysTable->featureCount); +- } ++ if (langSysTable.isValid() && LE_SUCCESS(success)) { ++ featureCount = SWAPW(langSysTable->featureCount); ++ } + } + + if (featureListOffset != 0) { +- featureListTable = (const FeatureListTable *) (baseAddress + featureListOffset); ++ featureListTable = LEReferenceTo<FeatureListTable>(baseAddress, success, featureListOffset); + } + + if (lookupListOffset != 0) { +- lookupListTable = (const LookupListTable *) (baseAddress + lookupListOffset); ++ lookupListTable = LEReferenceTo<LookupListTable>(baseAddress,success, lookupListOffset); ++ if(LE_SUCCESS(success) && lookupListTable.isValid()) { + lookupListCount = SWAPW(lookupListTable->lookupCount); ++ } + } + +- if (langSysTable == NULL || featureListTable == NULL || lookupListTable == NULL || ++ if (langSysTable.isEmpty() || featureListTable.isEmpty() || lookupListTable.isEmpty() || + featureCount == 0 || lookupListCount == 0) { + return; + } + +- requiredFeatureIndex = SWAPW(langSysTable->reqFeatureIndex); ++ if(langSysTable.isValid()) { ++ requiredFeatureIndex = SWAPW(langSysTable->reqFeatureIndex); ++ } + + lookupSelectArray = LE_NEW_ARRAY(FeatureMask, lookupListCount); + if (lookupSelectArray == NULL) { +@@ -205,31 +214,39 @@ + lookupSelectCount = lookupListCount; + + le_int32 count, order = 0; +- le_int32 featureReferences = 0; +- const FeatureTable *featureTable = NULL; ++ le_uint32 featureReferences = 0; ++ LEReferenceTo<FeatureTable> featureTable; + LETag featureTag; + +- const FeatureTable *requiredFeatureTable = NULL; ++ LEReferenceTo<FeatureTable> requiredFeatureTable; + LETag requiredFeatureTag = 0x00000000U; + + // Count the total number of lookups referenced by all features. This will + // be the maximum number of entries in the lookupOrderArray. We can't use + // lookupListCount because some lookups might be referenced by more than + // one feature. +- for (le_int32 feature = 0; feature < featureCount; feature += 1) { +- le_uint16 featureIndex = SWAPW(langSysTable->featureIndexArray[feature]); ++ if(featureListTable.isValid() && LE_SUCCESS(success)) { ++ LEReferenceToArrayOf<le_uint16> featureIndexArray(langSysTable, success, langSysTable->featureIndexArray, featureCount); + +- featureTable = featureListTable->getFeatureTable(featureIndex, &featureTag); +- +- if (!featureTable) +- continue; ++ for (le_uint32 feature = 0; LE_SUCCESS(success)&&(feature < featureCount); feature += 1) { ++ le_uint16 featureIndex = SWAPW(featureIndexArray.getObject(feature, success)); + ++ featureTable = featureListTable->getFeatureTable(featureListTable, featureIndex, &featureTag, success); ++ if (!featureTable.isValid() || LE_FAILURE(success)) { ++ continue; ++ } + featureReferences += SWAPW(featureTable->lookupCount); ++ } ++ } ++ ++ if (!featureTable.isValid() || LE_FAILURE(success)) { ++ success = LE_INTERNAL_ERROR; ++ return; + } + + if (requiredFeatureIndex != 0xFFFF) { +- requiredFeatureTable = featureListTable->getFeatureTable(requiredFeatureIndex, &requiredFeatureTag); +- featureReferences += SWAPW(featureTable->lookupCount); ++ requiredFeatureTable = featureListTable->getFeatureTable(featureListTable, requiredFeatureIndex, &requiredFeatureTag, success); ++ featureReferences += SWAPW(featureTable->lookupCount); + } + + lookupOrderArray = LE_NEW_ARRAY(le_uint16, featureReferences); +@@ -244,7 +261,7 @@ + + // If this is the required feature, add its lookups + if (requiredFeatureTag == fm.tag) { +- count += selectLookups(requiredFeatureTable, fm.mask, order); ++ count += selectLookups(requiredFeatureTable, fm.mask, order, success); + } + + if (orderFeatures) { +@@ -254,7 +271,8 @@ + } + + for (le_uint16 feature = 0; feature < featureCount; feature += 1) { +- le_uint16 featureIndex = SWAPW(langSysTable->featureIndexArray[feature]); ++ LEReferenceToArrayOf<le_uint16> featureIndexArray(langSysTable, success, langSysTable->featureIndexArray, featureCount); ++ le_uint16 featureIndex = SWAPW(featureIndexArray.getObject(feature,success)); + + // don't add the required feature to the list more than once... + // TODO: Do we need this check? (Spec. says required feature won't be in feature list...) +@@ -262,10 +280,10 @@ + continue; + } + +- featureTable = featureListTable->getFeatureTable(featureIndex, &featureTag); ++ featureTable = featureListTable->getFeatureTable(featureListTable, featureIndex, &featureTag, success); + + if (featureTag == fm.tag) { +- count += selectLookups(featureTable, fm.mask, order + count); ++ count += selectLookups(featureTable, fm.mask, order + count, success); + } + } + +@@ -274,9 +292,10 @@ + } + + order += count; +- } else { +- for (le_uint16 feature = 0; feature < featureCount; feature += 1) { +- le_uint16 featureIndex = SWAPW(langSysTable->featureIndexArray[feature]); ++ } else if(langSysTable.isValid()) { ++ LEReferenceToArrayOf<le_uint16> featureIndexArray(langSysTable, success, langSysTable->featureIndexArray, featureCount); ++ for (le_uint16 feature = 0; LE_SUCCESS(success)&& (feature < featureCount); feature += 1) { ++ le_uint16 featureIndex = SWAPW(featureIndexArray.getObject(feature,success)); + + // don't add the required feature to the list more than once... + // NOTE: This check is commented out because the spec. says that +@@ -288,10 +307,10 @@ + } + #endif + +- featureTable = featureListTable->getFeatureTable(featureIndex, &featureTag); ++ featureTable = featureListTable->getFeatureTable(featureListTable, featureIndex, &featureTag, success); + + if (featureTag == fm.tag) { +- order += selectLookups(featureTable, fm.mask, order); ++ order += selectLookups(featureTable, fm.mask, order, success); + } + } + } +--- jdk/src/share/native/sun/font/layout/LookupProcessor.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LookupProcessor.h 2013-05-05 09:38:38.000000000 -0700 +@@ -41,6 +41,7 @@ + #include "LETypes.h" + #include "LEFontInstance.h" + #include "OpenTypeTables.h" ++#include "LETableReference.h" + //#include "Lookups.h" + //#include "Features.h" + +@@ -59,19 +60,21 @@ + class LookupProcessor : public UMemory { + public: + le_int32 process(LEGlyphStorage &glyphStorage, GlyphPositionAdjustments *glyphPositionAdjustments, +- le_bool rightToLeft, const GlyphDefinitionTableHeader *glyphDefinitionTableHeader, const LEFontInstance *fontInstance, LEErrorCode& success) const; ++ le_bool rightToLeft, const LEReferenceTo<GlyphDefinitionTableHeader> &glyphDefinitionTableHeader, const LEFontInstance *fontInstance, LEErrorCode& success) const; + +- le_uint32 applyLookupTable(const LookupTable *lookupTable, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const; ++ le_uint32 applyLookupTable(const LEReferenceTo<LookupTable> &lookupTable, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const; + + le_uint32 applySingleLookup(le_uint16 lookupTableIndex, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const; + +- virtual le_uint32 applySubtable(const LookupSubtable *lookupSubtable, le_uint16 subtableType, ++ virtual le_uint32 applySubtable(const LEReferenceTo<LookupSubtable> &lookupSubtable, le_uint16 subtableType, + GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const = 0; + + virtual ~LookupProcessor(); + ++ const LETableReference &getReference() const { return fReference; } ++ + protected: +- LookupProcessor(const char *baseAddress, ++ LookupProcessor(const LETableReference &baseAddress, + Offset scriptListOffset, + Offset featureListOffset, + Offset lookupListOffset, +@@ -84,10 +87,10 @@ + + LookupProcessor(); + +- le_int32 selectLookups(const FeatureTable *featureTable, FeatureMask featureMask, le_int32 order); ++ le_int32 selectLookups(const LEReferenceTo<FeatureTable> &featureTable, FeatureMask featureMask, le_int32 order, LEErrorCode &success); + +- const LookupListTable *lookupListTable; +- const FeatureListTable *featureListTable; ++ LEReferenceTo<LookupListTable> lookupListTable; ++ LEReferenceTo<FeatureListTable> featureListTable; + + FeatureMask *lookupSelectArray; + le_uint32 lookupSelectCount; +@@ -95,6 +98,8 @@ + le_uint16 *lookupOrderArray; + le_uint32 lookupOrderCount; + ++ LETableReference fReference; ++ + private: + + LookupProcessor(const LookupProcessor &other); // forbid copying of this class +--- jdk/src/share/native/sun/font/layout/LookupTables.cpp 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LookupTables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -49,22 +49,26 @@ + of the derived classes, and implement it in the others by casting + the "this" pointer to the type that has the implementation. + */ +-const LookupSegment *BinarySearchLookupTable::lookupSegment(const LookupSegment *segments, LEGlyphID glyph) const ++const LookupSegment *BinarySearchLookupTable::lookupSegment(const LETableReference &base, const LookupSegment *segments, LEGlyphID glyph, LEErrorCode &success) const + { ++ + le_int16 unity = SWAPW(unitSize); + le_int16 probe = SWAPW(searchRange); + le_int16 extra = SWAPW(rangeShift); + TTGlyphID ttGlyph = (TTGlyphID) LE_GET_GLYPH(glyph); +- const LookupSegment *entry = segments; +- const LookupSegment *trial = (const LookupSegment *) ((char *) entry + extra); ++ LEReferenceTo<LookupSegment> entry(base, success, segments); ++ LEReferenceTo<LookupSegment> trial(entry, success, extra); ++ ++ if(LE_FAILURE(success)) return NULL; + + if (SWAPW(trial->lastGlyph) <= ttGlyph) { + entry = trial; + } + +- while (probe > unity) { ++ while (probe > unity && LE_SUCCESS(success)) { + probe >>= 1; +- trial = (const LookupSegment *) ((char *) entry + probe); ++ trial = entry; // copy ++ trial.addOffset(probe, success); + + if (SWAPW(trial->lastGlyph) <= ttGlyph) { + entry = trial; +@@ -72,28 +76,29 @@ + } + + if (SWAPW(entry->firstGlyph) <= ttGlyph) { +- return entry; ++ return entry.getAlias(); + } + + return NULL; + } + +-const LookupSingle *BinarySearchLookupTable::lookupSingle(const LookupSingle *entries, LEGlyphID glyph) const ++const LookupSingle *BinarySearchLookupTable::lookupSingle(const LETableReference &base, const LookupSingle *entries, LEGlyphID glyph, LEErrorCode &success) const + { + le_int16 unity = SWAPW(unitSize); + le_int16 probe = SWAPW(searchRange); + le_int16 extra = SWAPW(rangeShift); + TTGlyphID ttGlyph = (TTGlyphID) LE_GET_GLYPH(glyph); +- const LookupSingle *entry = entries; +- const LookupSingle *trial = (const LookupSingle *) ((char *) entry + extra); ++ LEReferenceTo<LookupSingle> entry(base, success, entries); ++ LEReferenceTo<LookupSingle> trial(entry, success, extra); + + if (SWAPW(trial->glyph) <= ttGlyph) { + entry = trial; + } + +- while (probe > unity) { ++ while (probe > unity && LE_SUCCESS(success)) { + probe >>= 1; +- trial = (const LookupSingle *) ((char *) entry + probe); ++ trial = entry; ++ trial.addOffset(probe, success); + + if (SWAPW(trial->glyph) <= ttGlyph) { + entry = trial; +@@ -101,7 +106,7 @@ + } + + if (SWAPW(entry->glyph) == ttGlyph) { +- return entry; ++ return entry.getAlias(); + } + + return NULL; +--- jdk/src/share/native/sun/font/layout/LookupTables.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/LookupTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -39,6 +39,7 @@ + + #include "LETypes.h" + #include "LayoutTables.h" ++#include "LETableReference.h" + + U_NAMESPACE_BEGIN + +@@ -79,30 +80,34 @@ + le_int16 entrySelector; + le_int16 rangeShift; + +- const LookupSegment *lookupSegment(const LookupSegment *segments, LEGlyphID glyph) const; ++ const LookupSegment *lookupSegment(const LETableReference &base, const LookupSegment *segments, LEGlyphID glyph, LEErrorCode &success) const; + +- const LookupSingle *lookupSingle(const LookupSingle *entries, LEGlyphID glyph) const; ++ const LookupSingle *lookupSingle(const LETableReference &base, const LookupSingle *entries, LEGlyphID glyph, LEErrorCode &success) const; + }; + + struct SimpleArrayLookupTable : LookupTable + { + LookupValue valueArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(SimpleArrayLookupTable, valueArray) + + struct SegmentSingleLookupTable : BinarySearchLookupTable + { + LookupSegment segments[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(SegmentSingleLookupTable, segments) + + struct SegmentArrayLookupTable : BinarySearchLookupTable + { + LookupSegment segments[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(SegmentArrayLookupTable, segments) + + struct SingleTableLookupTable : BinarySearchLookupTable + { + LookupSingle entries[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(SingleTableLookupTable, entries) + + struct TrimmedArrayLookupTable : LookupTable + { +@@ -110,6 +115,7 @@ + TTGlyphID glyphCount; + LookupValue valueArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(TrimmedArrayLookupTable, valueArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/Lookups.cpp 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/Lookups.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -37,33 +37,35 @@ + + U_NAMESPACE_BEGIN + +-const LookupTable *LookupListTable::getLookupTable(le_uint16 lookupTableIndex) const ++const LEReferenceTo<LookupTable> LookupListTable::getLookupTable(const LEReferenceTo<LookupListTable> &base, le_uint16 lookupTableIndex, LEErrorCode &success) const + { +- if (lookupTableIndex >= SWAPW(lookupCount)) { +- return 0; +- } ++ LEReferenceToArrayOf<Offset> lookupTableOffsetArrayRef(base, success, (const Offset*)&lookupTableOffsetArray, SWAPW(lookupCount)); + +- Offset lookupTableOffset = lookupTableOffsetArray[lookupTableIndex]; +- +- return (const LookupTable *) ((char *) this + SWAPW(lookupTableOffset)); ++ if(LE_FAILURE(success) || lookupTableIndex>lookupTableOffsetArrayRef.getCount()) { ++ return LEReferenceTo<LookupTable>(); ++ } else { ++ return LEReferenceTo<LookupTable>(base, success, SWAPW(lookupTableOffsetArrayRef.getObject(lookupTableIndex, success))); ++ } + } + +-const LookupSubtable *LookupTable::getLookupSubtable(le_uint16 subtableIndex) const ++const LEReferenceTo<LookupSubtable> LookupTable::getLookupSubtable(const LEReferenceTo<LookupTable> &base, le_uint16 subtableIndex, LEErrorCode &success) const + { +- if (subtableIndex >= SWAPW(subTableCount)) { +- return 0; +- } +- +- Offset subtableOffset = subTableOffsetArray[subtableIndex]; ++ LEReferenceToArrayOf<Offset> subTableOffsetArrayRef(base, success, (const Offset*)&subTableOffsetArray, SWAPW(subTableCount)); + +- return (const LookupSubtable *) ((char *) this + SWAPW(subtableOffset)); ++ if(LE_FAILURE(success) || subtableIndex>subTableOffsetArrayRef.getCount()) { ++ return LEReferenceTo<LookupSubtable>(); ++ } else { ++ return LEReferenceTo<LookupSubtable>(base, success, SWAPW(subTableOffsetArrayRef.getObject(subtableIndex, success))); ++ } + } + +-le_int32 LookupSubtable::getGlyphCoverage(Offset tableOffset, LEGlyphID glyphID) const ++le_int32 LookupSubtable::getGlyphCoverage(const LEReferenceTo<LookupSubtable> &base, Offset tableOffset, LEGlyphID glyphID, LEErrorCode &success) const + { +- const CoverageTable *coverageTable = (const CoverageTable *) ((char *) this + SWAPW(tableOffset)); ++ const LEReferenceTo<CoverageTable> coverageTable(base, success, SWAPW(tableOffset)); ++ ++ if(LE_FAILURE(success)) return 0; + +- return coverageTable->getGlyphCoverage(glyphID); ++ return coverageTable->getGlyphCoverage(glyphID); + } + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/Lookups.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/Lookups.h 2013-05-05 09:38:38.000000000 -0700 +@@ -58,9 +58,14 @@ + le_uint16 subtableFormat; + Offset coverageTableOffset; + +- inline le_int32 getGlyphCoverage(LEGlyphID glyphID) const; ++ inline le_int32 getGlyphCoverage(const LEReferenceTo<LookupSubtable> &base, LEGlyphID glyphID, LEErrorCode &success) const; + +- le_int32 getGlyphCoverage(Offset tableOffset, LEGlyphID glyphID) const; ++ le_int32 getGlyphCoverage(const LEReferenceTo<LookupSubtable> &base, Offset tableOffset, LEGlyphID glyphID, LEErrorCode &success) const; ++ ++ // convenience ++ inline le_int32 getGlyphCoverage(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const; ++ ++ inline le_int32 getGlyphCoverage(const LETableReference &base, Offset tableOffset, LEGlyphID glyphID, LEErrorCode &success) const; + }; + + struct LookupTable +@@ -70,20 +75,32 @@ + le_uint16 subTableCount; + Offset subTableOffsetArray[ANY_NUMBER]; + +- const LookupSubtable *getLookupSubtable(le_uint16 subtableIndex) const; ++ const LEReferenceTo<LookupSubtable> getLookupSubtable(const LEReferenceTo<LookupTable> &base, le_uint16 subtableIndex, LEErrorCode &success) const; + }; ++LE_VAR_ARRAY(LookupTable, subTableOffsetArray) + + struct LookupListTable + { + le_uint16 lookupCount; + Offset lookupTableOffsetArray[ANY_NUMBER]; + +- const LookupTable *getLookupTable(le_uint16 lookupTableIndex) const; ++ const LEReferenceTo<LookupTable> getLookupTable(const LEReferenceTo<LookupListTable> &base, le_uint16 lookupTableIndex, LEErrorCode &success) const; + }; ++LE_VAR_ARRAY(LookupListTable, lookupTableOffsetArray) + +-inline le_int32 LookupSubtable::getGlyphCoverage(LEGlyphID glyphID) const ++inline le_int32 LookupSubtable::getGlyphCoverage(const LEReferenceTo<LookupSubtable> &base, LEGlyphID glyphID, LEErrorCode &success) const + { +- return getGlyphCoverage(coverageTableOffset, glyphID); ++ return getGlyphCoverage(base, coverageTableOffset, glyphID, success); ++} ++ ++inline le_int32 LookupSubtable::getGlyphCoverage(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const { ++ LEReferenceTo<LookupSubtable> thisRef(base, success, this); ++ return getGlyphCoverage(thisRef, glyphID, success); ++} ++ ++inline le_int32 LookupSubtable::getGlyphCoverage(const LETableReference &base, Offset tableOffset, LEGlyphID glyphID, LEErrorCode &success) const { ++ LEReferenceTo<LookupSubtable> thisRef(base, success, this); ++ return getGlyphCoverage(thisRef, tableOffset, glyphID, success); + } + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/MPreFixups.cpp 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MPreFixups.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 2002-2008 - All Rights Reserved ++ * (C) Copyright IBM Corp. 2002-2013 - All Rights Reserved + * + */ + +@@ -65,9 +65,9 @@ + } + } + +-void MPreFixups::apply(LEGlyphStorage &glyphStorage, LEErrorCode& leSuccess) ++void MPreFixups::apply(LEGlyphStorage &glyphStorage, LEErrorCode& success) + { +- if (LE_FAILURE(leSuccess)) { ++ if (LE_FAILURE(success)) { + return; + } + +--- jdk/src/share/native/sun/font/layout/MarkArrays.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MarkArrays.h 2013-05-05 09:38:38.000000000 -0700 +@@ -57,6 +57,7 @@ + le_int32 getMarkClass(LEGlyphID glyphID, le_int32 coverageIndex, const LEFontInstance *fontInstance, + LEPoint &anchor) const; + }; ++LE_VAR_ARRAY(MarkArray, markRecordArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.cpp 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -51,10 +51,10 @@ + return 0xFFFF; + } + +-le_int32 MarkToBasePositioningSubtable::process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const ++le_int32 MarkToBasePositioningSubtable::process(const LETableReference &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const + { + LEGlyphID markGlyph = glyphIterator->getCurrGlyphID(); +- le_int32 markCoverage = getGlyphCoverage((LEGlyphID) markGlyph); ++ le_int32 markCoverage = getGlyphCoverage(base, (LEGlyphID) markGlyph, success); + + if (markCoverage < 0) { + // markGlyph isn't a covered mark glyph +@@ -75,7 +75,7 @@ + // FIXME: We probably don't want to find a base glyph before a previous ligature... + GlyphIterator baseIterator(*glyphIterator, (le_uint16) (lfIgnoreMarks /*| lfIgnoreLigatures*/)); + LEGlyphID baseGlyph = findBaseGlyph(&baseIterator); +- le_int32 baseCoverage = getBaseCoverage((LEGlyphID) baseGlyph); ++ le_int32 baseCoverage = getBaseCoverage(base, (LEGlyphID) baseGlyph, success); + const BaseArray *baseArray = (const BaseArray *) ((char *) this + SWAPW(baseArrayOffset)); + le_uint16 baseCount = SWAPW(baseArray->baseRecordCount); + +--- jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.h 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -48,7 +48,7 @@ + + struct MarkToBasePositioningSubtable : AttachmentPositioningSubtable + { +- le_int32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; ++ le_int32 process(const LETableReference &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const; + LEGlyphID findBaseGlyph(GlyphIterator *glyphIterator) const; + }; + +@@ -56,12 +56,14 @@ + { + Offset baseAnchorTableOffsetArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(BaseRecord, baseAnchorTableOffsetArray) + + struct BaseArray + { + le_int16 baseRecordCount; + BaseRecord baseRecordArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(BaseArray, baseRecordArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/MarkToLigaturePosnSubtables.cpp 2012-08-10 10:30:33.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MarkToLigaturePosnSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -50,10 +50,10 @@ + return 0xFFFF; + } + +-le_int32 MarkToLigaturePositioningSubtable::process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const ++le_int32 MarkToLigaturePositioningSubtable::process(const LETableReference &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const + { + LEGlyphID markGlyph = glyphIterator->getCurrGlyphID(); +- le_int32 markCoverage = getGlyphCoverage((LEGlyphID) markGlyph); ++ le_int32 markCoverage = getGlyphCoverage(base, (LEGlyphID) markGlyph, success); + + if (markCoverage < 0) { + // markGlyph isn't a covered mark glyph +@@ -74,7 +74,7 @@ + // FIXME: we probably don't want to find a ligature before a previous base glyph... + GlyphIterator ligatureIterator(*glyphIterator, (le_uint16) (lfIgnoreMarks /*| lfIgnoreBaseGlyphs*/)); + LEGlyphID ligatureGlyph = findLigatureGlyph(&ligatureIterator); +- le_int32 ligatureCoverage = getBaseCoverage((LEGlyphID) ligatureGlyph); ++ le_int32 ligatureCoverage = getBaseCoverage(base, (LEGlyphID) ligatureGlyph, success); + const LigatureArray *ligatureArray = (const LigatureArray *) ((char *) this + SWAPW(baseArrayOffset)); + le_uint16 ligatureCount = SWAPW(ligatureArray->ligatureCount); + +--- jdk/src/share/native/sun/font/layout/MarkToLigaturePosnSubtables.h 2012-08-10 10:30:34.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MarkToLigaturePosnSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -48,7 +48,7 @@ + + struct MarkToLigaturePositioningSubtable : AttachmentPositioningSubtable + { +- le_int32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; ++ le_int32 process(const LETableReference &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const; + LEGlyphID findLigatureGlyph(GlyphIterator *glyphIterator) const; + }; + +@@ -56,18 +56,21 @@ + { + Offset ligatureAnchorTableOffsetArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(ComponentRecord, ligatureAnchorTableOffsetArray) + + struct LigatureAttachTable + { + le_uint16 componentCount; + ComponentRecord componentRecordArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(LigatureAttachTable, componentRecordArray) + + struct LigatureArray + { + le_uint16 ligatureCount; + Offset ligatureAttachTableOffsetArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(LigatureArray, ligatureAttachTableOffsetArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/MarkToMarkPosnSubtables.cpp 2012-08-10 10:30:34.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MarkToMarkPosnSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -51,10 +51,10 @@ + return 0xFFFF; + } + +-le_int32 MarkToMarkPositioningSubtable::process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const ++le_int32 MarkToMarkPositioningSubtable::process(const LETableReference &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const + { + LEGlyphID markGlyph = glyphIterator->getCurrGlyphID(); +- le_int32 markCoverage = getGlyphCoverage((LEGlyphID) markGlyph); ++ le_int32 markCoverage = getGlyphCoverage(base, (LEGlyphID) markGlyph, success); + + if (markCoverage < 0) { + // markGlyph isn't a covered mark glyph +@@ -74,7 +74,7 @@ + + GlyphIterator mark2Iterator(*glyphIterator); + LEGlyphID mark2Glyph = findMark2Glyph(&mark2Iterator); +- le_int32 mark2Coverage = getBaseCoverage((LEGlyphID) mark2Glyph); ++ le_int32 mark2Coverage = getBaseCoverage(base, (LEGlyphID) mark2Glyph, success); + const Mark2Array *mark2Array = (const Mark2Array *) ((char *) this + SWAPW(baseArrayOffset)); + le_uint16 mark2Count = SWAPW(mark2Array->mark2RecordCount); + +--- jdk/src/share/native/sun/font/layout/MarkToMarkPosnSubtables.h 2012-08-10 10:30:34.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MarkToMarkPosnSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -48,7 +48,7 @@ + + struct MarkToMarkPositioningSubtable : AttachmentPositioningSubtable + { +- le_int32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; ++ le_int32 process(const LETableReference &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const; + LEGlyphID findMark2Glyph(GlyphIterator *glyphIterator) const; + }; + +@@ -56,12 +56,14 @@ + { + Offset mark2AnchorTableOffsetArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(Mark2Record, mark2AnchorTableOffsetArray) + + struct Mark2Array + { + le_uint16 mark2RecordCount; + Mark2Record mark2RecordArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(Mark2Array, mark2RecordArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/MorphStateTables.h 2012-08-10 10:30:35.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MorphStateTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -49,5 +49,10 @@ + StateTableHeader stHeader; + }; + ++struct MorphStateTableHeader2 : MorphSubtableHeader2 ++{ ++ StateTableHeader2 stHeader; ++}; ++ + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/MorphTables.cpp 2012-08-10 10:30:35.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MorphTables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -44,61 +44,61 @@ + + U_NAMESPACE_BEGIN + +-void MorphTableHeader::process(LEGlyphStorage &glyphStorage) const ++void MorphTableHeader::process(const LETableReference &base, LEGlyphStorage &glyphStorage, LEErrorCode &success) const + { +- const ChainHeader *chainHeader = chains; +- le_uint32 chainCount = SWAPL(this->nChains); ++ le_uint32 chainCount = SWAPL(this->nChains); ++ LEReferenceTo<ChainHeader> chainHeader(base, success, chains); // moving header ++ LEReferenceToArrayOf<ChainHeader> chainHeaderArray(base, success, chains, chainCount); + le_uint32 chain; + +- for (chain = 0; chain < chainCount; chain += 1) { ++ for (chain = 0; LE_SUCCESS(success) && (chain < chainCount); chain += 1) { + FeatureFlags defaultFlags = SWAPL(chainHeader->defaultFlags); + le_uint32 chainLength = SWAPL(chainHeader->chainLength); + le_int16 nFeatureEntries = SWAPW(chainHeader->nFeatureEntries); + le_int16 nSubtables = SWAPW(chainHeader->nSubtables); +- const MorphSubtableHeader *subtableHeader = +- (const MorphSubtableHeader *)&chainHeader->featureTable[nFeatureEntries]; ++ LEReferenceTo<MorphSubtableHeader> subtableHeader = ++ LEReferenceTo<MorphSubtableHeader>(chainHeader,success, &(chainHeader->featureTable[nFeatureEntries])); + le_int16 subtable; + +- for (subtable = 0; subtable < nSubtables; subtable += 1) { ++ for (subtable = 0; LE_SUCCESS(success) && (subtable < nSubtables); subtable += 1) { + le_int16 length = SWAPW(subtableHeader->length); + SubtableCoverage coverage = SWAPW(subtableHeader->coverage); + FeatureFlags subtableFeatures = SWAPL(subtableHeader->subtableFeatures); + + // should check coverage more carefully... +- if ((coverage & scfVertical) == 0 && (subtableFeatures & defaultFlags) != 0) { +- subtableHeader->process(glyphStorage); ++ if ((coverage & scfVertical) == 0 && (subtableFeatures & defaultFlags) != 0 && LE_SUCCESS(success)) { ++ subtableHeader->process(subtableHeader, glyphStorage, success); + } + +- subtableHeader = (const MorphSubtableHeader *) ((char *)subtableHeader + length); ++ subtableHeader.addOffset(length, success); + } +- +- chainHeader = (const ChainHeader *)((char *)chainHeader + chainLength); ++ chainHeader.addOffset(chainLength, success); + } + } + +-void MorphSubtableHeader::process(LEGlyphStorage &glyphStorage) const ++void MorphSubtableHeader::process(const LEReferenceTo<MorphSubtableHeader> &base, LEGlyphStorage &glyphStorage, LEErrorCode &success) const + { + SubtableProcessor *processor = NULL; + + switch (SWAPW(coverage) & scfTypeMask) + { + case mstIndicRearrangement: +- processor = new IndicRearrangementProcessor(this); ++ processor = new IndicRearrangementProcessor(base, success); + break; + + case mstContextualGlyphSubstitution: +- processor = new ContextualGlyphSubstitutionProcessor(this); ++ processor = new ContextualGlyphSubstitutionProcessor(base, success); + break; + + case mstLigatureSubstitution: +- processor = new LigatureSubstitutionProcessor(this); ++ processor = new LigatureSubstitutionProcessor(base, success); + break; + + case mstReservedUnused: + break; + + case mstNonContextualGlyphSubstitution: +- processor = NonContextualGlyphSubstitutionProcessor::createInstance(this); ++ processor = NonContextualGlyphSubstitutionProcessor::createInstance(base, success); + break; + + /* +@@ -112,8 +112,10 @@ + } + + if (processor != NULL) { +- processor->process(glyphStorage); +- delete processor; ++ if(LE_SUCCESS(success)) { ++ processor->process(glyphStorage, success); ++ } ++ delete processor; + } + } + +--- jdk/src/share/native/sun/font/layout/MorphTables.h 2012-08-10 10:30:35.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MorphTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -39,6 +39,7 @@ + + #include "LETypes.h" + #include "LayoutTables.h" ++#include "LETableReference.h" + + U_NAMESPACE_BEGIN + +@@ -65,6 +66,7 @@ + le_int16 nSubtables; + FeatureTableEntry featureTable[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(ChainHeader, featureTable) + + struct MorphTableHeader + { +@@ -72,10 +74,12 @@ + le_uint32 nChains; + ChainHeader chains[ANY_NUMBER]; + +- void process(LEGlyphStorage &glyphStorage) const; ++ void process(const LETableReference& base, LEGlyphStorage &glyphStorage, LEErrorCode &success) const; + }; ++LE_VAR_ARRAY(MorphTableHeader, chains) + + typedef le_int16 SubtableCoverage; ++typedef le_uint32 SubtableCoverage2; + + enum SubtableCoverageFlags + { +@@ -102,7 +106,305 @@ + SubtableCoverage coverage; + FeatureFlags subtableFeatures; + +- void process(LEGlyphStorage &glyphStorage) const; ++ void process(const LEReferenceTo<MorphSubtableHeader> &base, LEGlyphStorage &glyphStorage, LEErrorCode &success) const; ++}; ++ ++enum SubtableCoverageFlags2 ++{ ++ scfVertical2 = 0x80000000, ++ scfReverse2 = 0x40000000, ++ scfIgnoreVt2 = 0x20000000, ++ scfReserved2 = 0x1FFFFF00, ++ scfTypeMask2 = 0x000000FF ++}; ++ ++struct MorphSubtableHeader2 ++{ ++ le_uint32 length; ++ SubtableCoverage2 coverage; ++ FeatureFlags subtableFeatures; ++ ++ void process(const LEReferenceTo<MorphSubtableHeader2> &base, LEGlyphStorage &glyphStorage, LEErrorCode &success) const; ++}; ++ ++struct ChainHeader2 ++{ ++ FeatureFlags defaultFlags; ++ le_uint32 chainLength; ++ le_uint32 nFeatureEntries; ++ le_uint32 nSubtables; ++ FeatureTableEntry featureTable[ANY_NUMBER]; ++}; ++LE_VAR_ARRAY(ChainHeader2, featureTable) ++ ++struct MorphTableHeader2 ++{ ++ le_int32 version; ++ le_uint32 nChains; ++ ChainHeader2 chains[ANY_NUMBER]; ++ ++ void process(const LEReferenceTo<MorphTableHeader2> &base, LEGlyphStorage &glyphStorage, le_int32 typoFlags, LEErrorCode &success) const; ++}; ++LE_VAR_ARRAY(MorphTableHeader2, chains) ++ ++/* ++ * AAT Font Features ++ * source: https://developer.apple.com/fonts/registry/ ++ * (plus addition from ATS/SFNTLayoutTypes.h) ++ */ ++ ++enum { ++ ++ allTypographicFeaturesType = 0, ++ ++ allTypeFeaturesOnSelector = 0, ++ allTypeFeaturesOffSelector = 1, ++ ++ ligaturesType = 1, ++ ++ requiredLigaturesOnSelector = 0, ++ requiredLigaturesOffSelector = 1, ++ commonLigaturesOnSelector = 2, ++ commonLigaturesOffSelector = 3, ++ rareLigaturesOnSelector = 4, ++ rareLigaturesOffSelector = 5, ++ logosOnSelector = 6, ++ logosOffSelector = 7, ++ rebusPicturesOnSelector = 8, ++ rebusPicturesOffSelector = 9, ++ diphthongLigaturesOnSelector = 10, ++ diphthongLigaturesOffSelector = 11, ++ squaredLigaturesOnSelector = 12, ++ squaredLigaturesOffSelector = 13, ++ abbrevSquaredLigaturesOnSelector = 14, ++ abbrevSquaredLigaturesOffSelector = 15, ++ symbolLigaturesOnSelector = 16, ++ symbolLigaturesOffSelector = 17, ++ contextualLigaturesOnSelector = 18, ++ contextualLigaturesOffSelector = 19, ++ historicalLigaturesOnSelector = 20, ++ historicalLigaturesOffSelector = 21, ++ ++ cursiveConnectionType = 2, ++ ++ unconnectedSelector = 0, ++ partiallyConnectedSelector = 1, ++ cursiveSelector = 2, ++ ++ letterCaseType = 3, ++ ++ upperAndLowerCaseSelector = 0, ++ allCapsSelector = 1, ++ allLowerCaseSelector = 2, ++ smallCapsSelector = 3, ++ initialCapsSelector = 4, ++ initialCapsAndSmallCapsSelector = 5, ++ ++ verticalSubstitutionType = 4, ++ ++ substituteVerticalFormsOnSelector = 0, ++ substituteVerticalFormsOffSelector = 1, ++ ++ linguisticRearrangementType = 5, ++ ++ linguisticRearrangementOnSelector = 0, ++ linguisticRearrangementOffSelector = 1, ++ ++ numberSpacingType = 6, ++ ++ monospacedNumbersSelector = 0, ++ proportionalNumbersSelector = 1, ++ ++ /* ++ appleReserved1Type = 7, ++ */ ++ ++ smartSwashType = 8, ++ ++ wordInitialSwashesOnSelector = 0, ++ wordInitialSwashesOffSelector = 1, ++ wordFinalSwashesOnSelector = 2, ++ wordFinalSwashesOffSelector = 3, ++ lineInitialSwashesOnSelector = 4, ++ lineInitialSwashesOffSelector = 5, ++ lineFinalSwashesOnSelector = 6, ++ lineFinalSwashesOffSelector = 7, ++ nonFinalSwashesOnSelector = 8, ++ nonFinalSwashesOffSelector = 9, ++ ++ diacriticsType = 9, ++ ++ showDiacriticsSelector = 0, ++ hideDiacriticsSelector = 1, ++ decomposeDiacriticsSelector = 2, ++ ++ verticalPositionType = 10, ++ ++ normalPositionSelector = 0, ++ superiorsSelector = 1, ++ inferiorsSelector = 2, ++ ordinalsSelector = 3, ++ ++ fractionsType = 11, ++ ++ noFractionsSelector = 0, ++ verticalFractionsSelector = 1, ++ diagonalFractionsSelector = 2, ++ ++ /* ++ appleReserved2Type = 12, ++ */ ++ ++ overlappingCharactersType = 13, ++ ++ preventOverlapOnSelector = 0, ++ preventOverlapOffSelector = 1, ++ ++ typographicExtrasType = 14, ++ ++ hyphensToEmDashOnSelector = 0, ++ hyphensToEmDashOffSelector = 1, ++ hyphenToEnDashOnSelector = 2, ++ hyphenToEnDashOffSelector = 3, ++ unslashedZeroOnSelector = 4, ++ slashedZeroOffSelector = 4, ++ unslashedZeroOffSelector = 5, ++ slashedZeroOnSelector = 5, ++ formInterrobangOnSelector = 6, ++ formInterrobangOffSelector = 7, ++ smartQuotesOnSelector = 8, ++ smartQuotesOffSelector = 9, ++ periodsToEllipsisOnSelector = 10, ++ periodsToEllipsisOffSelector = 11, ++ ++ mathematicalExtrasType = 15, ++ ++ hyphenToMinusOnSelector = 0, ++ hyphenToMinusOffSelector = 1, ++ asteriskToMultiplyOnSelector = 2, ++ asteriskToMultiplyOffSelector = 3, ++ slashToDivideOnSelector = 4, ++ slashToDivideOffSelector = 5, ++ inequalityLigaturesOnSelector = 6, ++ inequalityLigaturesOffSelector = 7, ++ exponentsOnSelector = 8, ++ exponentsOffSelector = 9, ++ ++ ornamentSetsType = 16, ++ ++ noOrnamentsSelector = 0, ++ dingbatsSelector = 1, ++ piCharactersSelector = 2, ++ fleuronsSelector = 3, ++ decorativeBordersSelector = 4, ++ internationalSymbolsSelector = 5, ++ mathSymbolsSelector = 6, ++ ++ characterAlternativesType = 17, ++ ++ noAlternatesSelector = 0, ++ ++ designComplexityType = 18, ++ ++ designLevel1Selector = 0, ++ designLevel2Selector = 1, ++ designLevel3Selector = 2, ++ designLevel4Selector = 3, ++ designLevel5Selector = 4, ++ designLevel6Selector = 5, ++ designLevel7Selector = 6, ++ ++ styleOptionsType = 19, ++ ++ noStyleOptionsSelector = 0, ++ displayTextSelector = 1, ++ engravedTextSelector = 2, ++ illuminatedCapsSelector = 3, ++ titlingCapsSelector = 4, ++ tallCapsSelector = 5, ++ ++ characterShapeType = 20, ++ ++ traditionalCharactersSelector = 0, ++ simplifiedCharactersSelector = 1, ++ jis1978CharactersSelector = 2, ++ jis1983CharactersSelector = 3, ++ jis1990CharactersSelector = 4, ++ traditionalAltOneSelector = 5, ++ traditionalAltTwoSelector = 6, ++ traditionalAltThreeSelector = 7, ++ traditionalAltFourSelector = 8, ++ traditionalAltFiveSelector = 9, ++ expertCharactersSelector = 10, ++ ++ numberCaseType = 21, ++ ++ lowerCaseNumbersSelector = 0, ++ upperCaseNumbersSelector = 1, ++ ++ textSpacingType = 22, ++ ++ proportionalTextSelector = 0, ++ monospacedTextSelector = 1, ++ halfWidthTextSelector = 2, ++ normallySpacedTextSelector = 3, ++ ++ transliterationType = 23, ++ ++ noTransliterationSelector = 0, ++ hanjaToHangulSelector = 1, ++ hiraganaToKatakanaSelector = 2, ++ katakanaToHiraganaSelector = 3, ++ kanaToRomanizationSelector = 4, ++ romanizationToHiraganaSelector = 5, ++ romanizationToKatakanaSelector = 6, ++ hanjaToHangulAltOneSelector = 7, ++ hanjaToHangulAltTwoSelector = 8, ++ hanjaToHangulAltThreeSelector = 9, ++ ++ annotationType = 24, ++ ++ noAnnotationSelector = 0, ++ boxAnnotationSelector = 1, ++ roundedBoxAnnotationSelector = 2, ++ circleAnnotationSelector = 3, ++ invertedCircleAnnotationSelector = 4, ++ parenthesisAnnotationSelector = 5, ++ periodAnnotationSelector = 6, ++ romanNumeralAnnotationSelector = 7, ++ diamondAnnotationSelector = 8, ++ ++ kanaSpacingType = 25, ++ ++ fullWidthKanaSelector = 0, ++ proportionalKanaSelector = 1, ++ ++ ideographicSpacingType = 26, ++ ++ fullWidthIdeographsSelector = 0, ++ proportionalIdeographsSelector = 1, ++ ++ cjkRomanSpacingType = 103, ++ ++ halfWidthCJKRomanSelector = 0, ++ proportionalCJKRomanSelector = 1, ++ defaultCJKRomanSelector = 2, ++ fullWidthCJKRomanSelector = 3, ++ ++ rubyKanaType = 28, ++ ++ rubyKanaOnSelector = 2, ++ rubyKanaOffSelector = 3, ++ ++/* The following types are provided for compatibility; note that ++ their use is deprecated. */ ++ ++ adobeCharacterSpacingType = 100, /* prefer 22 */ ++ adobeKanaSpacingType = 101, /* prefer 25 */ ++ adobeKanjiSpacingType = 102, /* prefer 26 */ ++ adobeSquareLigatures = 104, /* prefer 1 */ ++ ++ lastFeatureType = -1 + }; + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/MorphTables2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/MorphTables2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,248 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * (C) Copyright IBM Corp. and others 1998 - 2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "LayoutTables.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "IndicRearrangementProcessor2.h" ++#include "ContextualGlyphSubstProc2.h" ++#include "LigatureSubstProc2.h" ++#include "NonContextualGlyphSubstProc2.h" ++#include "ContextualGlyphInsertionProc2.h" ++#include "LEGlyphStorage.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++void MorphTableHeader2::process(const LEReferenceTo<MorphTableHeader2> &base, LEGlyphStorage &glyphStorage, ++ le_int32 typoFlags, LEErrorCode &success) const ++{ ++ if(LE_FAILURE(success)) return; ++ ++ le_uint32 chainCount = SWAPL(this->nChains); ++ LEReferenceTo<ChainHeader2> chainHeader(base, success, &chains[0]); ++ /* chainHeader and subtableHeader are implemented as a moving pointer rather than an array dereference ++ * to (slightly) reduce code churn. However, must be careful to preincrement them the 2nd time through. ++ * We don't want to increment them at the end of the loop, as that would attempt to dereference ++ * out of range memory. ++ */ ++ le_uint32 chain; ++ ++ for (chain = 0; LE_SUCCESS(success) && (chain < chainCount); chain++) { ++ if (chain>0) { ++ le_uint32 chainLength = SWAPL(chainHeader->chainLength); ++ chainHeader.addOffset(chainLength, success); // Don't increment the first time ++ } ++ FeatureFlags flag = SWAPL(chainHeader->defaultFlags); ++ le_uint32 nFeatureEntries = SWAPL(chainHeader->nFeatureEntries); ++ le_uint32 nSubtables = SWAPL(chainHeader->nSubtables); ++ LEReferenceTo<MorphSubtableHeader2> subtableHeader(chainHeader, ++ success, (const MorphSubtableHeader2 *)&chainHeader->featureTable[nFeatureEntries]); ++ le_uint32 subtable; ++ if(LE_FAILURE(success)) break; // malformed table ++ ++ if (typoFlags != 0) { ++ le_uint32 featureEntry; ++ LEReferenceToArrayOf<FeatureTableEntry> featureTableRef(chainHeader, success, &chainHeader->featureTable[0], nFeatureEntries); ++ if(LE_FAILURE(success)) break; ++ // Feature subtables ++ for (featureEntry = 0; featureEntry < nFeatureEntries; featureEntry++) { ++ const FeatureTableEntry &featureTableEntry = featureTableRef(featureEntry, success); ++ le_int16 featureType = SWAPW(featureTableEntry.featureType); ++ le_int16 featureSetting = SWAPW(featureTableEntry.featureSetting); ++ le_uint32 enableFlags = SWAPL(featureTableEntry.enableFlags); ++ le_uint32 disableFlags = SWAPL(featureTableEntry.disableFlags); ++ switch (featureType) { ++ case ligaturesType: ++ if ((typoFlags & LE_Ligatures_FEATURE_ENUM ) && (featureSetting ^ 0x1)){ ++ flag &= disableFlags; ++ flag |= enableFlags; ++ } else { ++ if (((typoFlags & LE_RLIG_FEATURE_FLAG) && featureSetting == requiredLigaturesOnSelector) || ++ ((typoFlags & LE_CLIG_FEATURE_FLAG) && featureSetting == contextualLigaturesOnSelector) || ++ ((typoFlags & LE_HLIG_FEATURE_FLAG) && featureSetting == historicalLigaturesOnSelector) || ++ ((typoFlags & LE_LIGA_FEATURE_FLAG) && featureSetting == commonLigaturesOnSelector)) { ++ flag &= disableFlags; ++ flag |= enableFlags; ++ } ++ } ++ break; ++ case letterCaseType: ++ if ((typoFlags & LE_SMCP_FEATURE_FLAG) && featureSetting == smallCapsSelector) { ++ flag &= disableFlags; ++ flag |= enableFlags; ++ } ++ break; ++ case verticalSubstitutionType: ++ break; ++ case linguisticRearrangementType: ++ break; ++ case numberSpacingType: ++ break; ++ case smartSwashType: ++ if ((typoFlags & LE_SWSH_FEATURE_FLAG) && (featureSetting ^ 0x1)){ ++ flag &= disableFlags; ++ flag |= enableFlags; ++ } ++ break; ++ case diacriticsType: ++ break; ++ case verticalPositionType: ++ break; ++ case fractionsType: ++ if (((typoFlags & LE_FRAC_FEATURE_FLAG) && featureSetting == diagonalFractionsSelector) || ++ ((typoFlags & LE_AFRC_FEATURE_FLAG) && featureSetting == verticalFractionsSelector)) { ++ flag &= disableFlags; ++ flag |= enableFlags; ++ } else { ++ flag &= disableFlags; ++ } ++ break; ++ case typographicExtrasType: ++ if ((typoFlags & LE_ZERO_FEATURE_FLAG) && featureSetting == slashedZeroOnSelector) { ++ flag &= disableFlags; ++ flag |= enableFlags; ++ } ++ break; ++ case mathematicalExtrasType: ++ break; ++ case ornamentSetsType: ++ break; ++ case characterAlternativesType: ++ break; ++ case designComplexityType: ++ if (((typoFlags & LE_SS01_FEATURE_FLAG) && featureSetting == designLevel1Selector) || ++ ((typoFlags & LE_SS02_FEATURE_FLAG) && featureSetting == designLevel2Selector) || ++ ((typoFlags & LE_SS03_FEATURE_FLAG) && featureSetting == designLevel3Selector) || ++ ((typoFlags & LE_SS04_FEATURE_FLAG) && featureSetting == designLevel4Selector) || ++ ((typoFlags & LE_SS05_FEATURE_FLAG) && featureSetting == designLevel5Selector) || ++ ((typoFlags & LE_SS06_FEATURE_FLAG) && featureSetting == designLevel6Selector) || ++ ((typoFlags & LE_SS07_FEATURE_FLAG) && featureSetting == designLevel7Selector)) { ++ ++ flag &= disableFlags; ++ flag |= enableFlags; ++ } ++ break; ++ case styleOptionsType: ++ break; ++ case characterShapeType: ++ break; ++ case numberCaseType: ++ break; ++ case textSpacingType: ++ break; ++ case transliterationType: ++ break; ++ case annotationType: ++ if ((typoFlags & LE_NALT_FEATURE_FLAG) && featureSetting == circleAnnotationSelector) { ++ flag &= disableFlags; ++ flag |= enableFlags; ++ } ++ break; ++ case kanaSpacingType: ++ break; ++ case ideographicSpacingType: ++ break; ++ case rubyKanaType: ++ if ((typoFlags & LE_RUBY_FEATURE_FLAG) && featureSetting == rubyKanaOnSelector) { ++ flag &= disableFlags; ++ flag |= enableFlags; ++ } ++ break; ++ case cjkRomanSpacingType: ++ break; ++ default: ++ break; ++ } ++ } ++ } ++ ++ for (subtable = 0; LE_SUCCESS(success) && subtable < nSubtables; subtable++) { ++ if(subtable>0) { ++ le_uint32 length = SWAPL(subtableHeader->length); ++ subtableHeader.addOffset(length, success); // Don't addOffset for the last entry. ++ } ++ le_uint32 coverage = SWAPL(subtableHeader->coverage); ++ FeatureFlags subtableFeatures = SWAPL(subtableHeader->subtableFeatures); ++ // should check coverage more carefully... ++ if (((coverage & scfIgnoreVt2) || !(coverage & scfVertical2)) && (subtableFeatures & flag) != 0) { ++ subtableHeader->process(subtableHeader, glyphStorage, success); ++ } ++ } ++ } ++} ++ ++void MorphSubtableHeader2::process(const LEReferenceTo<MorphSubtableHeader2> &base, LEGlyphStorage &glyphStorage, LEErrorCode &success) const ++{ ++ SubtableProcessor2 *processor = NULL; ++ ++ switch (SWAPL(coverage) & scfTypeMask2) ++ { ++ case mstIndicRearrangement: ++ processor = new IndicRearrangementProcessor2(base, success); ++ break; ++ ++ case mstContextualGlyphSubstitution: ++ processor = new ContextualGlyphSubstitutionProcessor2(base, success); ++ break; ++ ++ case mstLigatureSubstitution: ++ processor = new LigatureSubstitutionProcessor2(base, success); ++ break; ++ ++ case mstReservedUnused: ++ break; ++ ++ case mstNonContextualGlyphSubstitution: ++ processor = NonContextualGlyphSubstitutionProcessor2::createInstance(base, success); ++ break; ++ ++ ++ case mstContextualGlyphInsertion: ++ processor = new ContextualGlyphInsertionProcessor2(base, success); ++ break; ++ ++ default: ++ return; ++ break; /*NOTREACHED*/ ++ } ++ ++ if (processor != NULL) { ++ processor->process(glyphStorage, success); ++ delete processor; ++ } else { ++ if(LE_SUCCESS(success)) { ++ success = LE_MEMORY_ALLOCATION_ERROR; // because ptr is null and we didn't break out. ++ } ++ } ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp 2012-08-10 10:30:35.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -39,7 +39,7 @@ + + U_NAMESPACE_BEGIN + +-le_uint32 MultipleSubstitutionSubtable::process(GlyphIterator *glyphIterator, LEErrorCode& success, const LEGlyphFilter *filter) const ++le_uint32 MultipleSubstitutionSubtable::process(const LETableReference &base, GlyphIterator *glyphIterator, LEErrorCode& success, const LEGlyphFilter *filter) const + { + if (LE_FAILURE(success)) { + return 0; +@@ -58,7 +58,7 @@ + return 0; + } + +- le_int32 coverageIndex = getGlyphCoverage(glyph); ++ le_int32 coverageIndex = getGlyphCoverage(base, glyph, success); + le_uint16 seqCount = SWAPW(sequenceCount); + + if (coverageIndex >= 0 && coverageIndex < seqCount) { +--- jdk/src/share/native/sun/font/layout/MultipleSubstSubtables.h 2012-08-10 10:30:35.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/MultipleSubstSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -50,14 +50,16 @@ + le_uint16 glyphCount; + TTGlyphID substituteArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(SequenceTable, substituteArray) + + struct MultipleSubstitutionSubtable : GlyphSubstitutionSubtable + { + le_uint16 sequenceCount; + Offset sequenceTableOffsetArray[ANY_NUMBER]; + +- le_uint32 process(GlyphIterator *glyphIterator, LEErrorCode& success, const LEGlyphFilter *filter = NULL) const; ++ le_uint32 process(const LETableReference &base, GlyphIterator *glyphIterator, LEErrorCode& success, const LEGlyphFilter *filter = NULL) const; + }; ++LE_VAR_ARRAY(MultipleSubstitutionSubtable, sequenceTableOffsetArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/NonContextualGlyphSubst.h 2012-08-10 10:30:35.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/NonContextualGlyphSubst.h 2013-05-05 09:38:38.000000000 -0700 +@@ -26,7 +26,7 @@ + /* + * + * +- * (C) Copyright IBM Corp. 1998-2003 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -50,6 +50,11 @@ + LookupTable table; + }; + ++struct NonContextualGlyphSubstitutionHeader2 : MorphSubtableHeader2 ++{ ++ LookupTable table; ++}; ++ + U_NAMESPACE_END + #endif + +--- jdk/src/share/native/sun/font/layout/NonContextualGlyphSubstProc.cpp 2012-08-10 10:30:35.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/NonContextualGlyphSubstProc.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -47,8 +47,8 @@ + { + } + +-NonContextualGlyphSubstitutionProcessor::NonContextualGlyphSubstitutionProcessor(const MorphSubtableHeader *morphSubtableHeader) +- : SubtableProcessor(morphSubtableHeader) ++NonContextualGlyphSubstitutionProcessor::NonContextualGlyphSubstitutionProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) ++ : SubtableProcessor(morphSubtableHeader, success) + { + } + +@@ -56,26 +56,27 @@ + { + } + +-SubtableProcessor *NonContextualGlyphSubstitutionProcessor::createInstance(const MorphSubtableHeader *morphSubtableHeader) ++SubtableProcessor *NonContextualGlyphSubstitutionProcessor::createInstance(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) + { +- const NonContextualGlyphSubstitutionHeader *header = (const NonContextualGlyphSubstitutionHeader *) morphSubtableHeader; ++ LEReferenceTo<NonContextualGlyphSubstitutionHeader> header(morphSubtableHeader, success); + +- switch (SWAPW(header->table.format)) +- { ++ if(LE_FAILURE(success)) return NULL; ++ ++ switch (SWAPW(header->table.format)) { + case ltfSimpleArray: +- return new SimpleArrayProcessor(morphSubtableHeader); ++ return new SimpleArrayProcessor(morphSubtableHeader, success); + + case ltfSegmentSingle: +- return new SegmentSingleProcessor(morphSubtableHeader); ++ return new SegmentSingleProcessor(morphSubtableHeader, success); + + case ltfSegmentArray: +- return new SegmentArrayProcessor(morphSubtableHeader); ++ return new SegmentArrayProcessor(morphSubtableHeader, success); + + case ltfSingleTable: +- return new SingleTableProcessor(morphSubtableHeader); ++ return new SingleTableProcessor(morphSubtableHeader, success); + + case ltfTrimmedArray: +- return new TrimmedArrayProcessor(morphSubtableHeader); ++ return new TrimmedArrayProcessor(morphSubtableHeader, success); + + default: + return NULL; +--- jdk/src/share/native/sun/font/layout/NonContextualGlyphSubstProc.h 2012-08-10 10:30:35.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/NonContextualGlyphSubstProc.h 2013-05-05 09:38:38.000000000 -0700 +@@ -49,13 +49,13 @@ + class NonContextualGlyphSubstitutionProcessor : public SubtableProcessor + { + public: +- virtual void process(LEGlyphStorage &glyphStorage) = 0; ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success) = 0; + +- static SubtableProcessor *createInstance(const MorphSubtableHeader *morphSubtableHeader); ++ static SubtableProcessor *createInstance(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); + + protected: + NonContextualGlyphSubstitutionProcessor(); +- NonContextualGlyphSubstitutionProcessor(const MorphSubtableHeader *morphSubtableHeader); ++ NonContextualGlyphSubstitutionProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &status); + + virtual ~NonContextualGlyphSubstitutionProcessor(); + +--- jdk/src/share/native/sun/font/layout/NonContextualGlyphSubstProc2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/NonContextualGlyphSubstProc2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,88 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++#include "NonContextualGlyphSubstProc2.h" ++#include "SimpleArrayProcessor2.h" ++#include "SegmentSingleProcessor2.h" ++#include "SegmentArrayProcessor2.h" ++#include "SingleTableProcessor2.h" ++#include "TrimmedArrayProcessor2.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++NonContextualGlyphSubstitutionProcessor2::NonContextualGlyphSubstitutionProcessor2() ++{ ++} ++ ++NonContextualGlyphSubstitutionProcessor2::NonContextualGlyphSubstitutionProcessor2( ++ const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : SubtableProcessor2(morphSubtableHeader, success) ++{ ++} ++ ++NonContextualGlyphSubstitutionProcessor2::~NonContextualGlyphSubstitutionProcessor2() ++{ ++} ++ ++SubtableProcessor2 *NonContextualGlyphSubstitutionProcessor2::createInstance( ++ const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++{ ++ const LEReferenceTo<NonContextualGlyphSubstitutionHeader2> header(morphSubtableHeader, success); ++ if(LE_FAILURE(success)) return NULL; ++ ++ switch (SWAPW(header->table.format)) ++ { ++ case ltfSimpleArray: ++ return new SimpleArrayProcessor2(morphSubtableHeader, success); ++ ++ case ltfSegmentSingle: ++ return new SegmentSingleProcessor2(morphSubtableHeader, success); ++ ++ case ltfSegmentArray: ++ return new SegmentArrayProcessor2(morphSubtableHeader, success); ++ ++ case ltfSingleTable: ++ return new SingleTableProcessor2(morphSubtableHeader, success); ++ ++ case ltfTrimmedArray: ++ return new TrimmedArrayProcessor2(morphSubtableHeader, success); ++ ++ default: ++ return NULL; ++ } ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/NonContextualGlyphSubstProc2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/NonContextualGlyphSubstProc2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,68 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __NONCONTEXTUALGLYPHSUBSTITUTIONPROCESSOR2_H ++#define __NONCONTEXTUALGLYPHSUBSTITUTIONPROCESSOR2_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++class NonContextualGlyphSubstitutionProcessor2 : public SubtableProcessor2 ++{ ++public: ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success) = 0; ++ ++ static SubtableProcessor2 *createInstance(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ ++protected: ++ NonContextualGlyphSubstitutionProcessor2(); ++ NonContextualGlyphSubstitutionProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ ++ virtual ~NonContextualGlyphSubstitutionProcessor2(); ++ ++private: ++ NonContextualGlyphSubstitutionProcessor2(const NonContextualGlyphSubstitutionProcessor2 &other); // forbid copying of this class ++ NonContextualGlyphSubstitutionProcessor2 &operator=(const NonContextualGlyphSubstitutionProcessor2 &other); // forbid copying of this class ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/OpenTypeLayoutEngine.cpp 2012-08-10 10:30:35.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/OpenTypeLayoutEngine.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -26,7 +26,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2010 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -64,11 +64,27 @@ + #define loclFeatureTag LE_LOCL_FEATURE_TAG + #define caltFeatureTag LE_CALT_FEATURE_TAG + +-// 'dlig' not used at the moment +-#define dligFeatureTag 0x646C6967 +- +-// 'palt' +-#define paltFeatureTag 0x70616C74 ++#define dligFeatureTag LE_DLIG_FEATURE_TAG ++#define rligFeatureTag LE_RLIG_FEATURE_TAG ++#define paltFeatureTag LE_PALT_FEATURE_TAG ++ ++#define hligFeatureTag LE_HLIG_FEATURE_TAG ++#define smcpFeatureTag LE_SMCP_FEATURE_TAG ++#define fracFeatureTag LE_FRAC_FEATURE_TAG ++#define afrcFeatureTag LE_AFRC_FEATURE_TAG ++#define zeroFeatureTag LE_ZERO_FEATURE_TAG ++#define swshFeatureTag LE_SWSH_FEATURE_TAG ++#define cswhFeatureTag LE_CSWH_FEATURE_TAG ++#define saltFeatureTag LE_SALT_FEATURE_TAG ++#define naltFeatureTag LE_NALT_FEATURE_TAG ++#define rubyFeatureTag LE_RUBY_FEATURE_TAG ++#define ss01FeatureTag LE_SS01_FEATURE_TAG ++#define ss02FeatureTag LE_SS02_FEATURE_TAG ++#define ss03FeatureTag LE_SS03_FEATURE_TAG ++#define ss04FeatureTag LE_SS04_FEATURE_TAG ++#define ss05FeatureTag LE_SS05_FEATURE_TAG ++#define ss06FeatureTag LE_SS06_FEATURE_TAG ++#define ss07FeatureTag LE_SS07_FEATURE_TAG + + #define ccmpFeatureMask 0x80000000UL + #define ligaFeatureMask 0x40000000UL +@@ -80,60 +96,146 @@ + #define loclFeatureMask 0x01000000UL + #define caltFeatureMask 0x00800000UL + ++#define dligFeatureMask 0x00400000UL ++#define rligFeatureMask 0x00200000UL ++#define hligFeatureMask 0x00100000UL ++#define smcpFeatureMask 0x00080000UL ++#define fracFeatureMask 0x00040000UL ++#define afrcFeatureMask 0x00020000UL ++#define zeroFeatureMask 0x00010000UL ++#define swshFeatureMask 0x00008000UL ++#define cswhFeatureMask 0x00004000UL ++#define saltFeatureMask 0x00002000UL ++#define naltFeatureMask 0x00001000UL ++#define rubyFeatureMask 0x00000800UL ++#define ss01FeatureMask 0x00000400UL ++#define ss02FeatureMask 0x00000200UL ++#define ss03FeatureMask 0x00000100UL ++#define ss04FeatureMask 0x00000080UL ++#define ss05FeatureMask 0x00000040UL ++#define ss06FeatureMask 0x00000020UL ++#define ss07FeatureMask 0x00000010UL ++ + #define minimalFeatures (ccmpFeatureMask | markFeatureMask | mkmkFeatureMask | loclFeatureMask | caltFeatureMask) +-#define ligaFeatures (ligaFeatureMask | cligFeatureMask | minimalFeatures) +-#define kernFeatures (kernFeatureMask | paltFeatureMask | minimalFeatures) +-#define kernAndLigaFeatures (ligaFeatures | kernFeatures) + + static const FeatureMap featureMap[] = + { + {ccmpFeatureTag, ccmpFeatureMask}, + {ligaFeatureTag, ligaFeatureMask}, + {cligFeatureTag, cligFeatureMask}, +- {kernFeatureTag, kernFeatureMask}, ++ {kernFeatureTag, kernFeatureMask}, + {paltFeatureTag, paltFeatureMask}, + {markFeatureTag, markFeatureMask}, + {mkmkFeatureTag, mkmkFeatureMask}, + {loclFeatureTag, loclFeatureMask}, +- {caltFeatureTag, caltFeatureMask} ++ {caltFeatureTag, caltFeatureMask}, ++ {hligFeatureTag, hligFeatureMask}, ++ {smcpFeatureTag, smcpFeatureMask}, ++ {fracFeatureTag, fracFeatureMask}, ++ {afrcFeatureTag, afrcFeatureMask}, ++ {zeroFeatureTag, zeroFeatureMask}, ++ {swshFeatureTag, swshFeatureMask}, ++ {cswhFeatureTag, cswhFeatureMask}, ++ {saltFeatureTag, saltFeatureMask}, ++ {naltFeatureTag, naltFeatureMask}, ++ {rubyFeatureTag, rubyFeatureMask}, ++ {ss01FeatureTag, ss01FeatureMask}, ++ {ss02FeatureTag, ss02FeatureMask}, ++ {ss03FeatureTag, ss03FeatureMask}, ++ {ss04FeatureTag, ss04FeatureMask}, ++ {ss05FeatureTag, ss05FeatureMask}, ++ {ss06FeatureTag, ss06FeatureMask}, ++ {ss07FeatureTag, ss07FeatureMask} + }; + + static const le_int32 featureMapCount = LE_ARRAY_SIZE(featureMap); + + OpenTypeLayoutEngine::OpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success) ++ le_int32 typoFlags, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success) + : LayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success), fFeatureMask(minimalFeatures), + fFeatureMap(featureMap), fFeatureMapCount(featureMapCount), fFeatureOrder(FALSE), +- fGSUBTable(gsubTable), fGDEFTable(NULL), fGPOSTable(NULL), fSubstitutionFilter(NULL) ++ fGSUBTable(gsubTable), ++ fGDEFTable(fontInstance, LE_GDEF_TABLE_TAG, success), ++ fGPOSTable(fontInstance, LE_GPOS_TABLE_TAG, success), fSubstitutionFilter(NULL) + { +- static const le_uint32 gdefTableTag = LE_GDEF_TABLE_TAG; +- static const le_uint32 gposTableTag = LE_GPOS_TABLE_TAG; +- const GlyphPositioningTableHeader *gposTable = (const GlyphPositioningTableHeader *) getFontTable(gposTableTag); +- +- // todo: switch to more flags and bitfield rather than list of feature tags? +- switch (typoFlags & ~0x80000000L) { +- case 0: break; // default +- case 1: fFeatureMask = kernFeatures; break; +- case 2: fFeatureMask = ligaFeatures; break; +- case 3: fFeatureMask = kernAndLigaFeatures; break; +- default: break; +- } +- +- if (typoFlags & 0x80000000L) { +- fSubstitutionFilter = new CharSubstitutionFilter(fontInstance); +- } ++ applyTypoFlags(); + + setScriptAndLanguageTags(); + +- fGDEFTable = (const GlyphDefinitionTableHeader *) getFontTable(gdefTableTag); +- + // JK patch, 2008-05-30 - see Sinhala bug report and LKLUG font + // if (gposTable != NULL && gposTable->coversScriptAndLanguage(fScriptTag, fLangSysTag)) { +- if (gposTable != NULL && gposTable->coversScript(fScriptTag)) { +- fGPOSTable = gposTable; ++ if (!fGPOSTable.isEmpty()&& !fGPOSTable->coversScript(fGPOSTable, fScriptTag, success)) { ++ fGPOSTable.clear(); // already loaded + } + } + ++void OpenTypeLayoutEngine::applyTypoFlags() { ++ const le_int32& typoFlags = fTypoFlags; ++ const LEFontInstance *fontInstance = fFontInstance; ++ ++ switch (typoFlags & (LE_SS01_FEATURE_FLAG ++ | LE_SS02_FEATURE_FLAG ++ | LE_SS03_FEATURE_FLAG ++ | LE_SS04_FEATURE_FLAG ++ | LE_SS05_FEATURE_FLAG ++ | LE_SS06_FEATURE_FLAG ++ | LE_SS07_FEATURE_FLAG)) { ++ case LE_SS01_FEATURE_FLAG: ++ fFeatureMask |= ss01FeatureMask; ++ break; ++ case LE_SS02_FEATURE_FLAG: ++ fFeatureMask |= ss02FeatureMask; ++ break; ++ case LE_SS03_FEATURE_FLAG: ++ fFeatureMask |= ss03FeatureMask; ++ break; ++ case LE_SS04_FEATURE_FLAG: ++ fFeatureMask |= ss04FeatureMask; ++ break; ++ case LE_SS05_FEATURE_FLAG: ++ fFeatureMask |= ss05FeatureMask; ++ break; ++ case LE_SS06_FEATURE_FLAG: ++ fFeatureMask |= ss06FeatureMask; ++ break; ++ case LE_SS07_FEATURE_FLAG: ++ fFeatureMask |= ss07FeatureMask; ++ break; ++ } ++ ++ if (typoFlags & LE_Kerning_FEATURE_FLAG) { ++ fFeatureMask |= (kernFeatureMask | paltFeatureMask); ++ // Convenience. ++ } ++ if (typoFlags & LE_Ligatures_FEATURE_FLAG) { ++ fFeatureMask |= (ligaFeatureMask | cligFeatureMask); ++ // Convenience TODO: should add: .. dligFeatureMask | rligFeatureMask ? ++ } ++ if (typoFlags & LE_CLIG_FEATURE_FLAG) fFeatureMask |= cligFeatureMask; ++ if (typoFlags & LE_DLIG_FEATURE_FLAG) fFeatureMask |= dligFeatureMask; ++ if (typoFlags & LE_HLIG_FEATURE_FLAG) fFeatureMask |= hligFeatureMask; ++ if (typoFlags & LE_LIGA_FEATURE_FLAG) fFeatureMask |= ligaFeatureMask; ++ if (typoFlags & LE_RLIG_FEATURE_FLAG) fFeatureMask |= rligFeatureMask; ++ if (typoFlags & LE_SMCP_FEATURE_FLAG) fFeatureMask |= smcpFeatureMask; ++ if (typoFlags & LE_FRAC_FEATURE_FLAG) fFeatureMask |= fracFeatureMask; ++ if (typoFlags & LE_AFRC_FEATURE_FLAG) fFeatureMask |= afrcFeatureMask; ++ if (typoFlags & LE_ZERO_FEATURE_FLAG) fFeatureMask |= zeroFeatureMask; ++ if (typoFlags & LE_SWSH_FEATURE_FLAG) fFeatureMask |= swshFeatureMask; ++ if (typoFlags & LE_CSWH_FEATURE_FLAG) fFeatureMask |= cswhFeatureMask; ++ if (typoFlags & LE_SALT_FEATURE_FLAG) fFeatureMask |= saltFeatureMask; ++ if (typoFlags & LE_RUBY_FEATURE_FLAG) fFeatureMask |= rubyFeatureMask; ++ if (typoFlags & LE_NALT_FEATURE_FLAG) { ++ // Mutually exclusive with ALL other features. http://www.microsoft.com/typography/otspec/features_ko.htm ++ fFeatureMask = naltFeatureMask; ++ } ++ ++ if (typoFlags & LE_CHAR_FILTER_FEATURE_FLAG) { ++ // This isn't a font feature, but requests a Char Substitution Filter ++ fSubstitutionFilter = new CharSubstitutionFilter(fontInstance); ++ } ++ ++} ++ + void OpenTypeLayoutEngine::reset() + { + // NOTE: if we're called from +@@ -146,15 +248,17 @@ + OpenTypeLayoutEngine::OpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, + le_int32 typoFlags, LEErrorCode &success) + : LayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success), fFeatureOrder(FALSE), +- fGSUBTable(NULL), fGDEFTable(NULL), fGPOSTable(NULL), fSubstitutionFilter(NULL) ++ fGSUBTable(), fGDEFTable(), fGPOSTable(), fSubstitutionFilter(NULL) + { +- setScriptAndLanguageTags(); ++ applyTypoFlags(); ++ setScriptAndLanguageTags(); + } + + OpenTypeLayoutEngine::~OpenTypeLayoutEngine() + { +- if (fTypoFlags & 0x80000000L) { ++ if (fTypoFlags & LE_CHAR_FILTER_FEATURE_FLAG) { + delete fSubstitutionFilter; ++ fSubstitutionFilter = NULL; + } + + reset(); +@@ -267,13 +371,13 @@ + return 0; + } + +- if (fGSUBTable != NULL) { +- if (fScriptTagV2 != nullScriptTag && fGSUBTable->coversScriptAndLanguage(fScriptTagV2,fLangSysTag)) { +- count = fGSUBTable->process(glyphStorage, rightToLeft, fScriptTagV2, fLangSysTag, fGDEFTable, fSubstitutionFilter, ++ if (fGSUBTable.isValid()) { ++ if (fScriptTagV2 != nullScriptTag && fGSUBTable->coversScriptAndLanguage(fGSUBTable, fScriptTagV2, fLangSysTag, success)) { ++ count = fGSUBTable->process(fGSUBTable, glyphStorage, rightToLeft, fScriptTagV2, fLangSysTag, fGDEFTable, fSubstitutionFilter, + fFeatureMap, fFeatureMapCount, fFeatureOrder, success); + + } else { +- count = fGSUBTable->process(glyphStorage, rightToLeft, fScriptTag, fLangSysTag, fGDEFTable, fSubstitutionFilter, ++ count = fGSUBTable->process(fGSUBTable, glyphStorage, rightToLeft, fScriptTag, fLangSysTag, fGDEFTable, fSubstitutionFilter, + fFeatureMap, fFeatureMapCount, fFeatureOrder, success); + } + } +@@ -294,13 +398,13 @@ + return 0; + } + +- if (fGSUBTable != NULL) { +- if (fScriptTagV2 != nullScriptTag && fGSUBTable->coversScriptAndLanguage(fScriptTagV2,fLangSysTag)) { +- count = fGSUBTable->process(glyphStorage, rightToLeft, fScriptTagV2, fLangSysTag, fGDEFTable, fSubstitutionFilter, ++ if (fGSUBTable.isValid()) { ++ if (fScriptTagV2 != nullScriptTag && fGSUBTable->coversScriptAndLanguage(fGSUBTable,fScriptTagV2,fLangSysTag,success)) { ++ count = fGSUBTable->process(fGSUBTable, glyphStorage, rightToLeft, fScriptTagV2, fLangSysTag, fGDEFTable, fSubstitutionFilter, + fFeatureMap, fFeatureMapCount, fFeatureOrder, success); + + } else { +- count = fGSUBTable->process(glyphStorage, rightToLeft, fScriptTag, fLangSysTag, fGDEFTable, fSubstitutionFilter, ++ count = fGSUBTable->process(fGSUBTable, glyphStorage, rightToLeft, fScriptTag, fLangSysTag, fGDEFTable, fSubstitutionFilter, + fFeatureMap, fFeatureMapCount, fFeatureOrder, success); + } + } +@@ -325,7 +429,7 @@ + { + LEUnicode *outChars = NULL; + LEGlyphStorage fakeGlyphStorage; +- le_int32 outCharCount, outGlyphCount, fakeGlyphCount; ++ le_int32 outCharCount, outGlyphCount; + + if (LE_FAILURE(success)) { + return 0; +@@ -343,11 +447,13 @@ + } + + if (outChars != NULL) { +- fakeGlyphCount = glyphProcessing(outChars, 0, outCharCount, outCharCount, rightToLeft, fakeGlyphStorage, success); ++ // le_int32 fakeGlyphCount = ++ glyphProcessing(outChars, 0, outCharCount, outCharCount, rightToLeft, fakeGlyphStorage, success); + LE_DELETE_ARRAY(outChars); // FIXME: a subclass may have allocated this, in which case this delete might not work... + //adjustGlyphs(outChars, 0, outCharCount, rightToLeft, fakeGlyphs, fakeGlyphCount); + } else { +- fakeGlyphCount = glyphProcessing(chars, offset, count, max, rightToLeft, fakeGlyphStorage, success); ++ // le_int32 fakeGlyphCount = ++ glyphProcessing(chars, offset, count, max, rightToLeft, fakeGlyphStorage, success); + //adjustGlyphs(chars, offset, count, rightToLeft, fakeGlyphs, fakeGlyphCount); + } + +@@ -378,7 +484,7 @@ + return; + } + +- if (fGPOSTable != NULL) { ++ if (!fGPOSTable.isEmpty()) { + GlyphPositionAdjustments *adjustments = new GlyphPositionAdjustments(glyphCount); + le_int32 i; + +@@ -401,19 +507,20 @@ + } + #endif + +- if (fGPOSTable != NULL) { +- if (fScriptTagV2 != nullScriptTag && fGPOSTable->coversScriptAndLanguage(fScriptTagV2,fLangSysTag)) { +- fGPOSTable->process(glyphStorage, adjustments, reverse, fScriptTagV2, fLangSysTag, fGDEFTable, success, fFontInstance, +- fFeatureMap, fFeatureMapCount, fFeatureOrder); ++ if (!fGPOSTable.isEmpty()) { ++ if (fScriptTagV2 != nullScriptTag && ++ fGPOSTable->coversScriptAndLanguage(fGPOSTable, fScriptTagV2,fLangSysTag,success)) { ++ fGPOSTable->process(fGPOSTable, glyphStorage, adjustments, reverse, fScriptTagV2, fLangSysTag, ++ fGDEFTable, success, fFontInstance, fFeatureMap, fFeatureMapCount, fFeatureOrder); + + } else { +- fGPOSTable->process(glyphStorage, adjustments, reverse, fScriptTag, fLangSysTag, fGDEFTable, success, fFontInstance, +- fFeatureMap, fFeatureMapCount, fFeatureOrder); ++ fGPOSTable->process(fGPOSTable, glyphStorage, adjustments, reverse, fScriptTag, fLangSysTag, ++ fGDEFTable, success, fFontInstance, fFeatureMap, fFeatureMapCount, fFeatureOrder); + } +- } else if ( fTypoFlags & 0x1 ) { +- static const le_uint32 kernTableTag = LE_KERN_TABLE_TAG; +- KernTable kt(fFontInstance, getFontTable(kernTableTag)); +- kt.process(glyphStorage); ++ } else if (fTypoFlags & LE_Kerning_FEATURE_FLAG) { /* kerning enabled */ ++ LETableReference kernTable(fFontInstance, LE_KERN_TABLE_TAG, success); ++ KernTable kt(kernTable, success); ++ kt.process(glyphStorage, success); + } + + float xAdjust = 0, yAdjust = 0; +--- jdk/src/share/native/sun/font/layout/OpenTypeLayoutEngine.h 2012-08-10 10:30:35.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/OpenTypeLayoutEngine.h 2013-05-05 09:38:38.000000000 -0700 +@@ -24,7 +24,7 @@ + */ + + /* +- * (C) Copyright IBM Corp. 1998-2010 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -35,6 +35,7 @@ + #include "LEGlyphFilter.h" + #include "LEFontInstance.h" + #include "LayoutEngine.h" ++#include "LETableReference.h" + + #include "GlyphSubstitutionTables.h" + #include "GlyphDefinitionTables.h" +@@ -88,7 +89,7 @@ + * @internal + */ + OpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success); ++ le_int32 typoFlags, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success); + + /** + * This constructor is used when the font requires a "canned" GSUB table which can't be known +@@ -184,6 +185,11 @@ + */ + static const LETag scriptTags[]; + ++ /** ++ * apply the typoflags. Only called by the c'tors. ++ */ ++ void applyTypoFlags(); ++ + protected: + /** + * A set of "default" features. The default characterProcessing method +@@ -223,21 +229,21 @@ + * + * @internal + */ +- const GlyphSubstitutionTableHeader *fGSUBTable; ++ LEReferenceTo<GlyphSubstitutionTableHeader> fGSUBTable; + + /** + * The address of the GDEF table. + * + * @internal + */ +- const GlyphDefinitionTableHeader *fGDEFTable; ++ LEReferenceTo<GlyphDefinitionTableHeader> fGDEFTable; + + /** + * The address of the GPOS table. + * + * @internal + */ +- const GlyphPositioningTableHeader *fGPOSTable; ++ LEReferenceTo<GlyphPositioningTableHeader> fGPOSTable; + + /** + * An optional filter used to inhibit substitutions +--- jdk/src/share/native/sun/font/layout/OpenTypeTables.h 2012-08-10 10:30:36.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/OpenTypeTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -38,6 +38,7 @@ + */ + + #include "LETypes.h" ++#include "LETableReference.h" + + U_NAMESPACE_BEGIN + +@@ -50,7 +51,7 @@ + #define LE_GLYPH_GROUP_MASK 0x00000001UL + typedef le_uint32 FeatureMask; + +-#define SWAPT(atag) ((LETag) ((atag[0] << 24) + (atag[1] << 16) + (atag[2] << 8) + atag[3])) ++#define SWAPT(atag) ((LETag) (((atag[0]) << 24) + ((atag[1]) << 16) + ((atag[2]) << 8) + (atag[3]))) + + struct TagAndOffsetRecord + { +--- jdk/src/share/native/sun/font/layout/OpenTypeUtilities.cpp 2012-08-10 10:30:36.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/OpenTypeUtilities.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -76,58 +76,74 @@ + return bit; + } + +-Offset OpenTypeUtilities::getTagOffset(LETag tag, const TagAndOffsetRecord *records, le_int32 recordCount) ++ ++Offset OpenTypeUtilities::getTagOffset(LETag tag, const LEReferenceToArrayOf<TagAndOffsetRecord> &records, LEErrorCode &success) + { +- le_uint8 bit = highBit(recordCount); +- le_int32 power = 1 << bit; +- le_int32 extra = recordCount - power; +- le_int32 probe = power; +- le_int32 index = 0; ++ if(LE_FAILURE(success)) return 0; + +- if (SWAPT(records[extra].tag) <= tag) { +- index = extra; ++ le_uint32 recordCount = records.getCount(); ++ le_uint8 bit = highBit(recordCount); ++ le_int32 power = 1 << bit; ++ le_int32 extra = recordCount - power; ++ le_int32 probe = power; ++ le_int32 index = 0; ++ ++ { ++ const ATag &aTag = records.getAlias(extra,success)->tag; ++ if (SWAPT(aTag) <= tag) { ++ index = extra; + } ++ } + +- while (probe > (1 << 0)) { +- probe >>= 1; ++ while (probe > (1 << 0) && LE_SUCCESS(success)) { ++ probe >>= 1; + +- if (SWAPT(records[index + probe].tag) <= tag) { +- index += probe; +- } ++ { ++ const ATag &aTag = records.getAlias(index+probe,success)->tag; ++ if (SWAPT(aTag) <= tag) { ++ index += probe; ++ } + } ++ } + +- if (SWAPT(records[index].tag) == tag) { +- return SWAPW(records[index].offset); ++ { ++ const ATag &aTag = records.getAlias(index,success)->tag; ++ if (SWAPT(aTag) == tag) { ++ return SWAPW(records.getAlias(index,success)->offset); + } ++ } + +- return 0; ++ return 0; + } + +-le_int32 OpenTypeUtilities::getGlyphRangeIndex(TTGlyphID glyphID, const GlyphRangeRecord *records, le_int32 recordCount) ++le_int32 OpenTypeUtilities::getGlyphRangeIndex(TTGlyphID glyphID, const LEReferenceToArrayOf<GlyphRangeRecord> &records, LEErrorCode &success) + { ++ if(LE_FAILURE(success)) return -1; ++ ++ le_uint32 recordCount = records.getCount(); + le_uint8 bit = highBit(recordCount); + le_int32 power = 1 << bit; + le_int32 extra = recordCount - power; + le_int32 probe = power; + le_int32 range = 0; + +- if (recordCount == 0) { +- return -1; +- } ++ if (recordCount == 0) { ++ return -1; ++ } + +- if (SWAPW(records[extra].firstGlyph) <= glyphID) { ++ if (SWAPW(records(extra,success).firstGlyph) <= glyphID) { + range = extra; + } + +- while (probe > (1 << 0)) { ++ while (probe > (1 << 0) && LE_SUCCESS(success)) { + probe >>= 1; + +- if (SWAPW(records[range + probe].firstGlyph) <= glyphID) { ++ if (SWAPW(records(range + probe,success).firstGlyph) <= glyphID) { + range += probe; + } + } + +- if (SWAPW(records[range].firstGlyph) <= glyphID && SWAPW(records[range].lastGlyph) >= glyphID) { ++ if (SWAPW(records(range,success).firstGlyph) <= glyphID && SWAPW(records(range,success).lastGlyph) >= glyphID) { + return range; + } + +@@ -199,6 +215,38 @@ + } + } + ++U_NAMESPACE_END + ++#if LE_ASSERT_BAD_FONT ++#include <stdio.h> + +-U_NAMESPACE_END ++static const char *letagToStr(LETag tag, char *str) { ++ str[0]= 0xFF & (tag>>24); ++ str[1]= 0xFF & (tag>>16); ++ str[2]= 0xFF & (tag>>8); ++ str[3]= 0xFF & (tag>>0); ++ str[4]= 0; ++ return str; ++} ++ ++U_CAPI void U_EXPORT2 _debug_LETableReference(const char *f, int l, const char *msg, const LETableReference *what, const void *ptr, size_t len) { ++ char tagbuf[5]; ++ ++ fprintf(stderr, "%s:%d: LETableReference@0x%p: ", f, l, what); ++ fprintf(stderr, msg, ptr, len); ++ fprintf(stderr, "\n"); ++ ++ for(int depth=0;depth<10&&(what!=NULL);depth++) { ++ for(int i=0;i<depth;i++) { ++ fprintf(stderr, " "); // indent ++ } ++ if(!what->isValid()) { ++ fprintf(stderr, "(invalid)"); ++ } ++ fprintf(stderr, "@%p: tag (%s) font (0x%p), [0x%p+0x%lx]\n", what, letagToStr(what->getTag(), tagbuf), what->getFont(), ++ what->getAlias(), what->getLength()); ++ ++ what = what->getParent(); ++ } ++} ++#endif +--- jdk/src/share/native/sun/font/layout/OpenTypeUtilities.h 2012-08-10 10:30:36.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/OpenTypeUtilities.h 2013-05-05 09:38:38.000000000 -0700 +@@ -45,8 +45,17 @@ + class OpenTypeUtilities /* not : public UObject because all methods are static */ { + public: + static le_int8 highBit(le_int32 value); +- static Offset getTagOffset(LETag tag, const TagAndOffsetRecord *records, le_int32 recordCount); +- static le_int32 getGlyphRangeIndex(TTGlyphID glyphID, const GlyphRangeRecord *records, le_int32 recordCount); ++ static Offset getTagOffset(LETag tag, const LEReferenceToArrayOf<TagAndOffsetRecord> &records, LEErrorCode &success); ++ /** ++ * @deprecated TODO remove ++ */ ++ static le_int32 getGlyphRangeIndex(TTGlyphID glyphID, const GlyphRangeRecord *records, le_int32 recordCount) { ++ LEErrorCode success = LE_NO_ERROR; ++ LETableReference recordRef0((const le_uint8*)records); ++ LEReferenceToArrayOf<GlyphRangeRecord> recordRef(recordRef0, success, (size_t)0, recordCount); ++ return getGlyphRangeIndex(glyphID, recordRef, success); ++ } ++ static le_int32 getGlyphRangeIndex(TTGlyphID glyphID, const LEReferenceToArrayOf<GlyphRangeRecord> &records, LEErrorCode &success); + static le_int32 search(le_uint16 value, const le_uint16 array[], le_int32 count); + static le_int32 search(le_uint32 value, const le_uint32 array[], le_int32 count); + static void sort(le_uint16 *array, le_int32 count); +--- jdk/src/share/native/sun/font/layout/PairPositioningSubtables.cpp 2012-08-10 10:30:36.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/PairPositioningSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -41,7 +41,7 @@ + + U_NAMESPACE_BEGIN + +-le_uint32 PairPositioningSubtable::process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const ++le_uint32 PairPositioningSubtable::process(const LEReferenceTo<PairPositioningSubtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const + { + switch(SWAPW(subtableFormat)) + { +@@ -50,27 +50,32 @@ + + case 1: + { +- const PairPositioningFormat1Subtable *subtable = (const PairPositioningFormat1Subtable *) this; ++ const LEReferenceTo<PairPositioningFormat1Subtable> subtable(base, success, (const PairPositioningFormat1Subtable *) this); + +- return subtable->process(glyphIterator, fontInstance); ++ if(LE_SUCCESS(success)) ++ return subtable->process(subtable, glyphIterator, fontInstance, success); ++ else ++ return 0; + } + + case 2: + { +- const PairPositioningFormat2Subtable *subtable = (const PairPositioningFormat2Subtable *) this; ++ const LEReferenceTo<PairPositioningFormat2Subtable> subtable(base, success, (const PairPositioningFormat2Subtable *) this); + +- return subtable->process(glyphIterator, fontInstance); ++ if(LE_SUCCESS(success)) ++ return subtable->process(subtable, glyphIterator, fontInstance, success); ++ else ++ return 0; + } +- + default: +- return 0; ++ return 0; + } + } + +-le_uint32 PairPositioningFormat1Subtable::process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const ++le_uint32 PairPositioningFormat1Subtable::process(const LEReferenceTo<PairPositioningFormat1Subtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const + { + LEGlyphID firstGlyph = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(firstGlyph); ++ le_int32 coverageIndex = getGlyphCoverage(base, firstGlyph, success); + GlyphIterator tempIterator(*glyphIterator); + + if (coverageIndex >= 0 && glyphIterator->next()) { +@@ -110,10 +115,10 @@ + return 0; + } + +-le_uint32 PairPositioningFormat2Subtable::process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const ++le_uint32 PairPositioningFormat2Subtable::process(const LEReferenceTo<PairPositioningFormat2Subtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const + { + LEGlyphID firstGlyph = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(firstGlyph); ++ le_int32 coverageIndex = getGlyphCoverage(base, firstGlyph, success); + GlyphIterator tempIterator(*glyphIterator); + + if (coverageIndex >= 0 && glyphIterator->next()) { +--- jdk/src/share/native/sun/font/layout/PairPositioningSubtables.h 2012-08-10 10:30:37.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/PairPositioningSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -59,13 +59,14 @@ + le_uint16 pairValueCount; + PairValueRecord pairValueRecordArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(PairSetTable, pairValueRecordArray) + + struct PairPositioningSubtable : GlyphPositioningSubtable + { + ValueFormat valueFormat1; + ValueFormat valueFormat2; + +- le_uint32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; ++ le_uint32 process(const LEReferenceTo<PairPositioningSubtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const; + }; + + struct PairPositioningFormat1Subtable : PairPositioningSubtable +@@ -73,12 +74,13 @@ + le_uint16 pairSetCount; + Offset pairSetTableOffsetArray[ANY_NUMBER]; + +- le_uint32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; ++ le_uint32 process(const LEReferenceTo<PairPositioningFormat1Subtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const; + + private: + const PairValueRecord *findPairValueRecord(TTGlyphID glyphID, const PairValueRecord *records, + le_uint16 recordCount, le_uint16 recordSize) const; + }; ++LE_VAR_ARRAY(PairPositioningFormat1Subtable, pairSetTableOffsetArray) + + // NOTE: ValueRecord has a variable size + struct Class2Record +@@ -91,6 +93,7 @@ + { + Class2Record class2RecordArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(Class1Record, class2RecordArray) + + struct PairPositioningFormat2Subtable : PairPositioningSubtable + { +@@ -100,8 +103,9 @@ + le_uint16 class2Count; + Class1Record class1RecordArray[ANY_NUMBER]; + +- le_uint32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; ++ le_uint32 process(const LEReferenceTo<PairPositioningFormat2Subtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const; + }; ++LE_VAR_ARRAY(PairPositioningFormat2Subtable, class1RecordArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/ScriptAndLanguage.cpp 2012-08-10 10:30:37.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ScriptAndLanguage.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -38,29 +38,33 @@ + + U_NAMESPACE_BEGIN + +-const LangSysTable *ScriptTable::findLanguage(LETag languageTag, le_bool exactMatch) const ++LEReferenceTo<LangSysTable> ScriptTable::findLanguage(const LETableReference& base, LETag languageTag, LEErrorCode &success, le_bool exactMatch) const + { + le_uint16 count = SWAPW(langSysCount); + Offset langSysTableOffset = exactMatch? 0 : SWAPW(defaultLangSysTableOffset); + + if (count > 0) { +- Offset foundOffset = +- OpenTypeUtilities::getTagOffset(languageTag, langSysRecordArray, count); +- +- if (foundOffset != 0) { +- langSysTableOffset = foundOffset; +- } ++ LEReferenceToArrayOf<TagAndOffsetRecord> langSysRecords(base, success, langSysRecordArray, count); ++ Offset foundOffset = ++ OpenTypeUtilities::getTagOffset(languageTag, langSysRecords, success); ++ ++ if (foundOffset != 0 && LE_SUCCESS(success)) { ++ langSysTableOffset = foundOffset; ++ } + } + + if (langSysTableOffset != 0) { +- return (const LangSysTable *) ((char *)this + langSysTableOffset); ++ return LEReferenceTo<LangSysTable>(base, success, langSysTableOffset); + } + +- return NULL; ++ return LEReferenceTo<LangSysTable>(); + } + +-const ScriptTable *ScriptListTable::findScript(LETag scriptTag) const ++LEReferenceTo<ScriptTable> ScriptListTable::findScript(const LETableReference &base, LETag scriptTag, LEErrorCode &success) const + { ++ if (LE_FAILURE(success) ) { ++ return LEReferenceTo<ScriptTable>(); // get out ++ } + /* + * There are some fonts that have a large, bogus value for scriptCount. To try + * and protect against this, we use the offset in the first scriptRecord, +@@ -74,38 +78,53 @@ + * to be unsorted. + */ + le_uint16 count = SWAPW(scriptCount); ++ ++ if (count == 0) { ++ return LEReferenceTo<ScriptTable>(); // no items, no search ++ } ++ ++ // attempt to construct a ref with at least one element ++ LEReferenceToArrayOf<ScriptRecord> oneElementTable(base, success, &scriptRecordArray[0], 1); ++ ++ if( LE_FAILURE(success) ) { ++ return LEReferenceTo<ScriptTable>(); // couldn't even read the first record - bad font. ++ } ++ + le_uint16 limit = ((SWAPW(scriptRecordArray[0].offset) - sizeof(ScriptListTable)) / sizeof(scriptRecordArray)) + ANY_NUMBER; + Offset scriptTableOffset = 0; + ++ + if (count > limit) { + // the scriptCount value is bogus; do a linear search + // because limit may still be too large. +- for(le_int32 s = 0; s < limit; s += 1) { +- if (SWAPT(scriptRecordArray[s].tag) == scriptTag) { +- scriptTableOffset = SWAPW(scriptRecordArray[s].offset); +- break; +- } ++ LEReferenceToArrayOf<ScriptRecord> scriptRecordArrayRef(base, success, &scriptRecordArray[0], limit); ++ for(le_int32 s = 0; (s < limit)&&LE_SUCCESS(success); s += 1) { ++ if (SWAPT(scriptRecordArrayRef(s,success).tag) == scriptTag) { ++ scriptTableOffset = SWAPW(scriptRecordArrayRef(s,success).offset); ++ break; ++ } + } + } else { +- scriptTableOffset = OpenTypeUtilities::getTagOffset(scriptTag, scriptRecordArray, count); ++ LEReferenceToArrayOf<ScriptRecord> scriptRecordArrayRef(base, success, &scriptRecordArray[0], count); ++ scriptTableOffset = OpenTypeUtilities::getTagOffset(scriptTag, scriptRecordArrayRef, success); // TODO + } + + if (scriptTableOffset != 0) { +- return (const ScriptTable *) ((char *)this + scriptTableOffset); ++ return LEReferenceTo<ScriptTable>(base, success, scriptTableOffset); + } + +- return NULL; ++ return LEReferenceTo<ScriptTable>(); + } + +-const LangSysTable *ScriptListTable::findLanguage(LETag scriptTag, LETag languageTag, le_bool exactMatch) const ++LEReferenceTo<LangSysTable> ScriptListTable::findLanguage(const LETableReference &base, LETag scriptTag, LETag languageTag, LEErrorCode &success, le_bool exactMatch) const + { +- const ScriptTable *scriptTable = findScript(scriptTag); ++ const LEReferenceTo<ScriptTable> scriptTable = findScript(base, scriptTag, success); + +- if (scriptTable == 0) { +- return NULL; +- } ++ if (scriptTable.isEmpty()) { ++ return LEReferenceTo<LangSysTable>(); ++ } + +- return scriptTable->findLanguage(languageTag, exactMatch); ++ return scriptTable->findLanguage(scriptTable, languageTag, success, exactMatch).reparent(base); + } + + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/ScriptAndLanguage.h 2012-08-10 10:30:37.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ScriptAndLanguage.h 2013-05-05 09:38:38.000000000 -0700 +@@ -51,6 +51,7 @@ + le_uint16 featureCount; + le_uint16 featureIndexArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(LangSysTable, featureIndexArray) + + struct ScriptTable + { +@@ -58,8 +59,9 @@ + le_uint16 langSysCount; + LangSysRecord langSysRecordArray[ANY_NUMBER]; + +- const LangSysTable *findLanguage(LETag languageTag, le_bool exactMatch = FALSE) const; ++ LEReferenceTo<LangSysTable> findLanguage(const LETableReference &base, LETag languageTag, LEErrorCode &success, le_bool exactMatch = FALSE) const; + }; ++LE_VAR_ARRAY(ScriptTable, langSysRecordArray) + + typedef TagAndOffsetRecord ScriptRecord; + +@@ -68,9 +70,10 @@ + le_uint16 scriptCount; + ScriptRecord scriptRecordArray[ANY_NUMBER]; + +- const ScriptTable *findScript(LETag scriptTag) const; +- const LangSysTable *findLanguage(LETag scriptTag, LETag languageTag, le_bool exactMatch = FALSE) const; ++ LEReferenceTo<ScriptTable> findScript(const LETableReference &base, LETag scriptTag, LEErrorCode &success) const; ++ LEReferenceTo<LangSysTable> findLanguage(const LETableReference &base, LETag scriptTag, LETag languageTag, LEErrorCode &success, le_bool exactMatch = FALSE) const; + }; ++LE_VAR_ARRAY(ScriptListTable, scriptRecordArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.cpp 2012-08-10 10:30:37.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2010. All Rights Reserved. ++ * (C) Copyright IBM Corp. 1998-2013. All Rights Reserved. + * + * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS + * YOU REALLY KNOW WHAT YOU'RE DOING. +@@ -186,7 +186,18 @@ + nbatScriptTag, /* 'nbat' (NBAT) */ + palmScriptTag, /* 'palm' (PALM) */ + sindScriptTag, /* 'sind' (SIND) */ +- waraScriptTag /* 'wara' (WARA) */ ++ waraScriptTag, /* 'wara' (WARA) */ ++ afakScriptTag, /* 'afak' (AFAK) */ ++ jurcScriptTag, /* 'jurc' (JURC) */ ++ mrooScriptTag, /* 'mroo' (MROO) */ ++ nshuScriptTag, /* 'nshu' (NSHU) */ ++ shrdScriptTag, /* 'shrd' (SHARADA) */ ++ soraScriptTag, /* 'sora' (SORA_SOMPENG) */ ++ takrScriptTag, /* 'takr' (TAKRI) */ ++ tangScriptTag, /* 'tang' (TANG) */ ++ woleScriptTag, /* 'wole' (WOLE) */ ++ khojScriptTag, /* 'khoj' (KHOJ) */ ++ tirhScriptTag /* 'tirh' (TIRH) */ + }; + + const LETag OpenTypeLayoutEngine::languageTags[] = { +--- jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.h 2012-08-10 10:30:37.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2010. All Rights Reserved. ++ * (C) Copyright IBM Corp. 1998-2013. All Rights Reserved. + * + * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS + * YOU REALLY KNOW WHAT YOU'RE DOING. +@@ -201,6 +201,17 @@ + const LETag palmScriptTag = 0x70616C6D; /* 'palm' (PALM) */ + const LETag sindScriptTag = 0x73696E64; /* 'sind' (SIND) */ + const LETag waraScriptTag = 0x77617261; /* 'wara' (WARA) */ ++const LETag afakScriptTag = 0x6166616B; /* 'afak' (AFAK) */ ++const LETag jurcScriptTag = 0x6A757263; /* 'jurc' (JURC) */ ++const LETag mrooScriptTag = 0x6D726F6F; /* 'mroo' (MROO) */ ++const LETag nshuScriptTag = 0x6E736875; /* 'nshu' (NSHU) */ ++const LETag shrdScriptTag = 0x73687264; /* 'shrd' (SHARADA) */ ++const LETag soraScriptTag = 0x736F7261; /* 'sora' (SORA_SOMPENG) */ ++const LETag takrScriptTag = 0x74616B72; /* 'takr' (TAKRI) */ ++const LETag tangScriptTag = 0x74616E67; /* 'tang' (TANG) */ ++const LETag woleScriptTag = 0x776F6C65; /* 'wole' (WOLE) */ ++const LETag khojScriptTag = 0x6B686F6A; /* 'khoj' (KHOJ) */ ++const LETag tirhScriptTag = 0x74697268; /* 'tirh' (TIRH) */ + + const LETag nullScriptTag = 0x00000000; /* '' (NULL) */ + +--- jdk/src/share/native/sun/font/layout/SegmentArrayProcessor.cpp 2012-08-10 10:30:37.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SegmentArrayProcessor.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -46,19 +46,18 @@ + { + } + +-SegmentArrayProcessor::SegmentArrayProcessor(const MorphSubtableHeader *morphSubtableHeader) +- : NonContextualGlyphSubstitutionProcessor(morphSubtableHeader) ++SegmentArrayProcessor::SegmentArrayProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) ++ : NonContextualGlyphSubstitutionProcessor(morphSubtableHeader, success) + { +- const NonContextualGlyphSubstitutionHeader *header = (const NonContextualGlyphSubstitutionHeader *) morphSubtableHeader; +- +- segmentArrayLookupTable = (const SegmentArrayLookupTable *) &header->table; ++ LEReferenceTo<NonContextualGlyphSubstitutionHeader> header(morphSubtableHeader, success); ++ segmentArrayLookupTable = LEReferenceTo<SegmentArrayLookupTable>(morphSubtableHeader, success, (const SegmentArrayLookupTable*)&header->table); + } + + SegmentArrayProcessor::~SegmentArrayProcessor() + { + } + +-void SegmentArrayProcessor::process(LEGlyphStorage &glyphStorage) ++void SegmentArrayProcessor::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) + { + const LookupSegment *segments = segmentArrayLookupTable->segments; + le_int32 glyphCount = glyphStorage.getGlyphCount(); +@@ -66,17 +65,16 @@ + + for (glyph = 0; glyph < glyphCount; glyph += 1) { + LEGlyphID thisGlyph = glyphStorage[glyph]; +- const LookupSegment *lookupSegment = segmentArrayLookupTable->lookupSegment(segments, thisGlyph); ++ const LookupSegment *lookupSegment = segmentArrayLookupTable->lookupSegment(segmentArrayLookupTable, segments, thisGlyph, success); + + if (lookupSegment != NULL) { + TTGlyphID firstGlyph = SWAPW(lookupSegment->firstGlyph); + le_int16 offset = SWAPW(lookupSegment->value); + + if (offset != 0) { +- TTGlyphID *glyphArray = (TTGlyphID *) ((char *) subtableHeader + offset); +- TTGlyphID newGlyph = SWAPW(glyphArray[LE_GET_GLYPH(thisGlyph) - firstGlyph]); +- +- glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph); ++ LEReferenceToArrayOf<TTGlyphID> glyphArray(subtableHeader, success, offset, LE_UNBOUNDED_ARRAY); ++ TTGlyphID newGlyph = SWAPW(glyphArray(LE_GET_GLYPH(thisGlyph) - firstGlyph, success)); ++ glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph); + } + } + } +--- jdk/src/share/native/sun/font/layout/SegmentArrayProcessor.h 2012-08-10 10:30:37.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SegmentArrayProcessor.h 2013-05-05 09:38:38.000000000 -0700 +@@ -50,9 +50,9 @@ + class SegmentArrayProcessor : public NonContextualGlyphSubstitutionProcessor + { + public: +- virtual void process(LEGlyphStorage &glyphStorage); ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); + +- SegmentArrayProcessor(const MorphSubtableHeader *morphSubtableHeader); ++ SegmentArrayProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); + + virtual ~SegmentArrayProcessor(); + +@@ -74,7 +74,7 @@ + SegmentArrayProcessor(); + + protected: +- const SegmentArrayLookupTable *segmentArrayLookupTable; ++ LEReferenceTo<SegmentArrayLookupTable> segmentArrayLookupTable; + + }; + +--- jdk/src/share/native/sun/font/layout/SegmentArrayProcessor2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/SegmentArrayProcessor2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,84 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++#include "NonContextualGlyphSubstProc2.h" ++#include "SegmentArrayProcessor2.h" ++#include "LEGlyphStorage.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SegmentArrayProcessor2) ++ ++SegmentArrayProcessor2::SegmentArrayProcessor2() ++{ ++} ++ ++SegmentArrayProcessor2::SegmentArrayProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : NonContextualGlyphSubstitutionProcessor2(morphSubtableHeader, success) ++{ ++ const LEReferenceTo<NonContextualGlyphSubstitutionHeader2> header(morphSubtableHeader, success); ++ segmentArrayLookupTable = LEReferenceTo<SegmentArrayLookupTable>(morphSubtableHeader, success, &header->table); // don't parent to 'header' as it is on the stack ++} ++ ++SegmentArrayProcessor2::~SegmentArrayProcessor2() ++{ ++} ++ ++void SegmentArrayProcessor2::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) ++{ ++ const LookupSegment *segments = segmentArrayLookupTable->segments; ++ le_int32 glyphCount = glyphStorage.getGlyphCount(); ++ le_int32 glyph; ++ ++ for (glyph = 0; glyph < glyphCount; glyph += 1) { ++ LEGlyphID thisGlyph = glyphStorage[glyph]; ++ const LookupSegment *lookupSegment = segmentArrayLookupTable->lookupSegment(segmentArrayLookupTable, segments, thisGlyph, success); ++ ++ if (lookupSegment != NULL) { ++ TTGlyphID firstGlyph = SWAPW(lookupSegment->firstGlyph); ++ le_int16 offset = SWAPW(lookupSegment->value); ++ ++ if (offset != 0) { ++ TTGlyphID *glyphArray = (TTGlyphID *) ((char *) subtableHeader.getAliasTODO() + offset); ++ TTGlyphID newGlyph = SWAPW(glyphArray[LE_GET_GLYPH(thisGlyph) - firstGlyph]); ++ ++ glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph); ++ } ++ } ++ } ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/SegmentArrayProcessor2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/SegmentArrayProcessor2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,82 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __SEGMENTARRAYPROCESSOR_H ++#define __SEGMENTARRAYPROCESSOR_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++#include "NonContextualGlyphSubstProc2.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++class SegmentArrayProcessor2 : public NonContextualGlyphSubstitutionProcessor2 ++{ ++public: ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); ++ ++ SegmentArrayProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ ++ virtual ~SegmentArrayProcessor2(); ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for the actual class. ++ * ++ * @stable ICU 2.8 ++ */ ++ virtual UClassID getDynamicClassID() const; ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for this class. ++ * ++ * @stable ICU 2.8 ++ */ ++ static UClassID getStaticClassID(); ++ ++private: ++ SegmentArrayProcessor2(); ++ ++protected: ++ LEReferenceTo<SegmentArrayLookupTable> segmentArrayLookupTable; ++ ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/SegmentSingleProcessor.cpp 2012-08-10 10:30:37.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SegmentSingleProcessor.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -46,29 +46,28 @@ + { + } + +-SegmentSingleProcessor::SegmentSingleProcessor(const MorphSubtableHeader *morphSubtableHeader) +- : NonContextualGlyphSubstitutionProcessor(morphSubtableHeader) ++SegmentSingleProcessor::SegmentSingleProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) ++ : NonContextualGlyphSubstitutionProcessor(morphSubtableHeader, success) + { +- const NonContextualGlyphSubstitutionHeader *header = (const NonContextualGlyphSubstitutionHeader *) morphSubtableHeader; +- +- segmentSingleLookupTable = (const SegmentSingleLookupTable *) &header->table; ++ LEReferenceTo<NonContextualGlyphSubstitutionHeader> header(morphSubtableHeader, success); ++ segmentSingleLookupTable = LEReferenceTo<SegmentSingleLookupTable>(morphSubtableHeader, success, (const SegmentSingleLookupTable*)&header->table); + } + + SegmentSingleProcessor::~SegmentSingleProcessor() + { + } + +-void SegmentSingleProcessor::process(LEGlyphStorage &glyphStorage) ++void SegmentSingleProcessor::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) + { + const LookupSegment *segments = segmentSingleLookupTable->segments; + le_int32 glyphCount = glyphStorage.getGlyphCount(); + le_int32 glyph; + +- for (glyph = 0; glyph < glyphCount; glyph += 1) { ++ for (glyph = 0; glyph < glyphCount && LE_SUCCESS(success); glyph += 1) { + LEGlyphID thisGlyph = glyphStorage[glyph]; +- const LookupSegment *lookupSegment = segmentSingleLookupTable->lookupSegment(segments, thisGlyph); ++ const LookupSegment *lookupSegment = segmentSingleLookupTable->lookupSegment(segmentSingleLookupTable, segments, thisGlyph, success); + +- if (lookupSegment != NULL) { ++ if (lookupSegment != NULL && LE_SUCCESS(success)) { + TTGlyphID newGlyph = (TTGlyphID) LE_GET_GLYPH(thisGlyph) + SWAPW(lookupSegment->value); + + glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph); +--- jdk/src/share/native/sun/font/layout/SegmentSingleProcessor.h 2012-08-10 10:30:38.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SegmentSingleProcessor.h 2013-05-05 09:38:38.000000000 -0700 +@@ -50,9 +50,9 @@ + class SegmentSingleProcessor : public NonContextualGlyphSubstitutionProcessor + { + public: +- virtual void process(LEGlyphStorage &glyphStorage); ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); + +- SegmentSingleProcessor(const MorphSubtableHeader *morphSubtableHeader); ++ SegmentSingleProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); + + virtual ~SegmentSingleProcessor(); + +@@ -74,7 +74,7 @@ + SegmentSingleProcessor(); + + protected: +- const SegmentSingleLookupTable *segmentSingleLookupTable; ++ LEReferenceTo<SegmentSingleLookupTable> segmentSingleLookupTable; + + }; + +--- jdk/src/share/native/sun/font/layout/SegmentSingleProcessor2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/SegmentSingleProcessor2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,79 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++#include "NonContextualGlyphSubstProc2.h" ++#include "SegmentSingleProcessor2.h" ++#include "LEGlyphStorage.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SegmentSingleProcessor2) ++ ++SegmentSingleProcessor2::SegmentSingleProcessor2() ++{ ++} ++ ++SegmentSingleProcessor2::SegmentSingleProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : NonContextualGlyphSubstitutionProcessor2(morphSubtableHeader, success) ++{ ++ const LEReferenceTo<NonContextualGlyphSubstitutionHeader2> header(morphSubtableHeader, success); ++ ++ segmentSingleLookupTable = LEReferenceTo<SegmentSingleLookupTable>(morphSubtableHeader, success, &header->table); ++} ++ ++SegmentSingleProcessor2::~SegmentSingleProcessor2() ++{ ++} ++ ++void SegmentSingleProcessor2::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) ++{ ++ const LookupSegment *segments = segmentSingleLookupTable->segments; ++ le_int32 glyphCount = glyphStorage.getGlyphCount(); ++ le_int32 glyph; ++ ++ for (glyph = 0; glyph < glyphCount; glyph += 1) { ++ LEGlyphID thisGlyph = glyphStorage[glyph]; ++ const LookupSegment *lookupSegment = segmentSingleLookupTable->lookupSegment(segmentSingleLookupTable, segments, thisGlyph, success); ++ ++ if (lookupSegment != NULL && LE_SUCCESS(success)) { ++ TTGlyphID newGlyph = (TTGlyphID) LE_GET_GLYPH(thisGlyph) + SWAPW(lookupSegment->value); ++ ++ glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph); ++ } ++ } ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/SegmentSingleProcessor2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/SegmentSingleProcessor2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,82 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __SEGMENTSINGLEPROCESSOR_H ++#define __SEGMENTSINGLEPROCESSOR_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++#include "NonContextualGlyphSubstProc2.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++class SegmentSingleProcessor2 : public NonContextualGlyphSubstitutionProcessor2 ++{ ++public: ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); ++ ++ SegmentSingleProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ ++ virtual ~SegmentSingleProcessor2(); ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for the actual class. ++ * ++ * @stable ICU 2.8 ++ */ ++ virtual UClassID getDynamicClassID() const; ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for this class. ++ * ++ * @stable ICU 2.8 ++ */ ++ static UClassID getStaticClassID(); ++ ++private: ++ SegmentSingleProcessor2(); ++ ++protected: ++ LEReferenceTo<SegmentSingleLookupTable> segmentSingleLookupTable; ++ ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/ShapingTypeData.cpp 2012-08-10 10:30:38.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ShapingTypeData.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -122,4 +122,6 @@ + 0x00, 0x05, 0xFE, 0xFF, 0xFE, 0xFF, 0x00, 0x05, 0xFF, 0xF9, 0xFF, 0xFB, 0x00, 0x05 + }; + ++const size_t ArabicShaping::shapingTypeTableLen = sizeof(shapingTypeTable)/sizeof(shapingTypeTable[0]); ++ + U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/SimpleArrayProcessor.cpp 2012-08-10 10:30:38.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SimpleArrayProcessor.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -46,29 +46,29 @@ + { + } + +-SimpleArrayProcessor::SimpleArrayProcessor(const MorphSubtableHeader *morphSubtableHeader) +- : NonContextualGlyphSubstitutionProcessor(morphSubtableHeader) ++SimpleArrayProcessor::SimpleArrayProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) ++ : NonContextualGlyphSubstitutionProcessor(morphSubtableHeader, success) + { +- const NonContextualGlyphSubstitutionHeader *header = (const NonContextualGlyphSubstitutionHeader *) morphSubtableHeader; +- +- simpleArrayLookupTable = (const SimpleArrayLookupTable *) &header->table; ++ LEReferenceTo<NonContextualGlyphSubstitutionHeader> header(morphSubtableHeader, success); ++ simpleArrayLookupTable = LEReferenceTo<SimpleArrayLookupTable>(morphSubtableHeader, success, (const SimpleArrayLookupTable*)&header->table); + } + + SimpleArrayProcessor::~SimpleArrayProcessor() + { + } + +-void SimpleArrayProcessor::process(LEGlyphStorage &glyphStorage) ++void SimpleArrayProcessor::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) + { + le_int32 glyphCount = glyphStorage.getGlyphCount(); + le_int32 glyph; + +- for (glyph = 0; glyph < glyphCount; glyph += 1) { ++ LEReferenceToArrayOf<LookupValue> valueArray(simpleArrayLookupTable, success, (const LookupValue*)&simpleArrayLookupTable->valueArray, LE_UNBOUNDED_ARRAY); ++ ++ for (glyph = 0; LE_SUCCESS(success) && (glyph < glyphCount); glyph += 1) { + LEGlyphID thisGlyph = glyphStorage[glyph]; + if (LE_GET_GLYPH(thisGlyph) < 0xFFFF) { +- TTGlyphID newGlyph = SWAPW(simpleArrayLookupTable->valueArray[LE_GET_GLYPH(thisGlyph)]); +- +- glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph); ++ TTGlyphID newGlyph = SWAPW(valueArray.getObject(LE_GET_GLYPH(thisGlyph),success)); ++ glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph); + } + } + } +--- jdk/src/share/native/sun/font/layout/SimpleArrayProcessor.h 2012-08-10 10:30:38.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SimpleArrayProcessor.h 2013-05-05 09:38:38.000000000 -0700 +@@ -50,9 +50,9 @@ + class SimpleArrayProcessor : public NonContextualGlyphSubstitutionProcessor + { + public: +- virtual void process(LEGlyphStorage &glyphStorage); ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); + +- SimpleArrayProcessor(const MorphSubtableHeader *morphSubtableHeader); ++ SimpleArrayProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); + + virtual ~SimpleArrayProcessor(); + +@@ -74,7 +74,7 @@ + SimpleArrayProcessor(); + + protected: +- const SimpleArrayLookupTable *simpleArrayLookupTable; ++ LEReferenceTo<SimpleArrayLookupTable> simpleArrayLookupTable; + + }; + +--- jdk/src/share/native/sun/font/layout/SimpleArrayProcessor2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/SimpleArrayProcessor2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,78 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++#include "NonContextualGlyphSubstProc2.h" ++#include "SimpleArrayProcessor2.h" ++#include "LEGlyphStorage.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SimpleArrayProcessor2) ++ ++SimpleArrayProcessor2::SimpleArrayProcessor2() ++{ ++} ++ ++SimpleArrayProcessor2::SimpleArrayProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : NonContextualGlyphSubstitutionProcessor2(morphSubtableHeader, success) ++{ ++ const LEReferenceTo<NonContextualGlyphSubstitutionHeader2> header(morphSubtableHeader, success); ++ ++ simpleArrayLookupTable = LEReferenceTo<SimpleArrayLookupTable>(morphSubtableHeader, success, &header->table); ++ valueArray = LEReferenceToArrayOf<LookupValue>(morphSubtableHeader, success, &simpleArrayLookupTable->valueArray[0], LE_UNBOUNDED_ARRAY); ++} ++ ++SimpleArrayProcessor2::~SimpleArrayProcessor2() ++{ ++} ++ ++void SimpleArrayProcessor2::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) ++{ ++ if (LE_FAILURE(success)) return; ++ le_int32 glyphCount = glyphStorage.getGlyphCount(); ++ le_int32 glyph; ++ ++ for (glyph = 0; glyph < glyphCount; glyph += 1) { ++ LEGlyphID thisGlyph = glyphStorage[glyph]; ++ if (LE_GET_GLYPH(thisGlyph) < 0xFFFF) { ++ TTGlyphID newGlyph = SWAPW(valueArray(LE_GET_GLYPH(thisGlyph),success)); ++ ++ glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph); ++ } ++ } ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/SimpleArrayProcessor2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/SimpleArrayProcessor2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,83 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __SIMPLEARRAYPROCESSOR2_H ++#define __SIMPLEARRAYPROCESSOR2_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++#include "NonContextualGlyphSubstProc2.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++class SimpleArrayProcessor2 : public NonContextualGlyphSubstitutionProcessor2 ++{ ++public: ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); ++ ++ SimpleArrayProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ ++ virtual ~SimpleArrayProcessor2(); ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for the actual class. ++ * ++ * @stable ICU 2.8 ++ */ ++ virtual UClassID getDynamicClassID() const; ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for this class. ++ * ++ * @stable ICU 2.8 ++ */ ++ static UClassID getStaticClassID(); ++ ++private: ++ SimpleArrayProcessor2(); ++ ++protected: ++ LEReferenceTo<SimpleArrayLookupTable> simpleArrayLookupTable; ++ LEReferenceToArrayOf<LookupValue> valueArray; ++ ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/SinglePositioningSubtables.cpp 2012-08-10 10:30:38.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SinglePositioningSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -40,7 +40,7 @@ + + U_NAMESPACE_BEGIN + +-le_uint32 SinglePositioningSubtable::process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const ++le_uint32 SinglePositioningSubtable::process(const LEReferenceTo<SinglePositioningSubtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const + { + switch(SWAPW(subtableFormat)) + { +@@ -49,16 +49,16 @@ + + case 1: + { +- const SinglePositioningFormat1Subtable *subtable = (const SinglePositioningFormat1Subtable *) this; ++ const LEReferenceTo<SinglePositioningFormat1Subtable> subtable(base, success, (const SinglePositioningFormat1Subtable *) this); + +- return subtable->process(glyphIterator, fontInstance); ++ return subtable->process(subtable, glyphIterator, fontInstance, success); + } + + case 2: + { +- const SinglePositioningFormat2Subtable *subtable = (const SinglePositioningFormat2Subtable *) this; ++ const LEReferenceTo<SinglePositioningFormat2Subtable> subtable(base, success, (const SinglePositioningFormat2Subtable *) this); + +- return subtable->process(glyphIterator, fontInstance); ++ return subtable->process(subtable, glyphIterator, fontInstance, success); + } + + default: +@@ -66,10 +66,10 @@ + } + } + +-le_uint32 SinglePositioningFormat1Subtable::process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const ++le_uint32 SinglePositioningFormat1Subtable::process(const LEReferenceTo<SinglePositioningFormat1Subtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const + { + LEGlyphID glyph = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(glyph); ++ le_int32 coverageIndex = getGlyphCoverage(base, glyph, success); + + if (coverageIndex >= 0) { + valueRecord.adjustPosition(SWAPW(valueFormat), (const char *) this, *glyphIterator, fontInstance); +@@ -80,10 +80,10 @@ + return 0; + } + +-le_uint32 SinglePositioningFormat2Subtable::process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const ++le_uint32 SinglePositioningFormat2Subtable::process(const LEReferenceTo<SinglePositioningFormat2Subtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const + { + LEGlyphID glyph = glyphIterator->getCurrGlyphID(); +- le_int16 coverageIndex = (le_int16) getGlyphCoverage(glyph); ++ le_int16 coverageIndex = (le_int16) getGlyphCoverage(base, glyph, success); + + if (coverageIndex >= 0) { + valueRecordArray[0].adjustPosition(coverageIndex, SWAPW(valueFormat), (const char *) this, *glyphIterator, fontInstance); +--- jdk/src/share/native/sun/font/layout/SinglePositioningSubtables.h 2012-08-10 10:30:38.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SinglePositioningSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -48,7 +48,7 @@ + + struct SinglePositioningSubtable : GlyphPositioningSubtable + { +- le_uint32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; ++ le_uint32 process(const LEReferenceTo<SinglePositioningSubtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const; + }; + + struct SinglePositioningFormat1Subtable : SinglePositioningSubtable +@@ -56,7 +56,7 @@ + ValueFormat valueFormat; + ValueRecord valueRecord; + +- le_uint32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; ++ le_uint32 process(const LEReferenceTo<SinglePositioningFormat1Subtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const; + }; + + struct SinglePositioningFormat2Subtable : SinglePositioningSubtable +@@ -65,8 +65,9 @@ + le_uint16 valueCount; + ValueRecord valueRecordArray[ANY_NUMBER]; + +- le_uint32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; ++ le_uint32 process(const LEReferenceTo<SinglePositioningFormat2Subtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const; + }; ++LE_VAR_ARRAY(SinglePositioningFormat2Subtable, valueRecordArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.cpp 2012-08-10 10:30:38.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -39,7 +39,7 @@ + + U_NAMESPACE_BEGIN + +-le_uint32 SingleSubstitutionSubtable::process(GlyphIterator *glyphIterator, const LEGlyphFilter *filter) const ++le_uint32 SingleSubstitutionSubtable::process(const LEReferenceTo<SingleSubstitutionSubtable> &base, GlyphIterator *glyphIterator, LEErrorCode &success, const LEGlyphFilter *filter) const + { + switch(SWAPW(subtableFormat)) + { +@@ -48,16 +48,16 @@ + + case 1: + { +- const SingleSubstitutionFormat1Subtable *subtable = (const SingleSubstitutionFormat1Subtable *) this; ++ const LEReferenceTo<SingleSubstitutionFormat1Subtable> subtable(base, success, (const SingleSubstitutionFormat1Subtable *) this); + +- return subtable->process(glyphIterator, filter); ++ return subtable->process(subtable, glyphIterator, success, filter); + } + + case 2: + { +- const SingleSubstitutionFormat2Subtable *subtable = (const SingleSubstitutionFormat2Subtable *) this; ++ const LEReferenceTo<SingleSubstitutionFormat2Subtable> subtable(base, success, (const SingleSubstitutionFormat2Subtable *) this); + +- return subtable->process(glyphIterator, filter); ++ return subtable->process(subtable, glyphIterator, success, filter); + } + + default: +@@ -65,10 +65,10 @@ + } + } + +-le_uint32 SingleSubstitutionFormat1Subtable::process(GlyphIterator *glyphIterator, const LEGlyphFilter *filter) const ++le_uint32 SingleSubstitutionFormat1Subtable::process(const LEReferenceTo<SingleSubstitutionFormat1Subtable> &base, GlyphIterator *glyphIterator, LEErrorCode &success, const LEGlyphFilter *filter) const + { + LEGlyphID glyph = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(glyph); ++ le_int32 coverageIndex = getGlyphCoverage(base, glyph, success); + + if (coverageIndex >= 0) { + TTGlyphID substitute = ((TTGlyphID) LE_GET_GLYPH(glyph)) + SWAPW(deltaGlyphID); +@@ -83,10 +83,10 @@ + return 0; + } + +-le_uint32 SingleSubstitutionFormat2Subtable::process(GlyphIterator *glyphIterator, const LEGlyphFilter *filter) const ++le_uint32 SingleSubstitutionFormat2Subtable::process(const LEReferenceTo<SingleSubstitutionFormat2Subtable> &base, GlyphIterator *glyphIterator, LEErrorCode &success, const LEGlyphFilter *filter) const + { + LEGlyphID glyph = glyphIterator->getCurrGlyphID(); +- le_int32 coverageIndex = getGlyphCoverage(glyph); ++ le_int32 coverageIndex = getGlyphCoverage(base, glyph, success); + + if (coverageIndex >= 0) { + TTGlyphID substitute = SWAPW(substituteArray[coverageIndex]); +--- jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.h 2012-08-10 10:30:38.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -47,14 +47,14 @@ + + struct SingleSubstitutionSubtable : GlyphSubstitutionSubtable + { +- le_uint32 process(GlyphIterator *glyphIterator, const LEGlyphFilter *filter = NULL) const; ++ le_uint32 process(const LEReferenceTo<SingleSubstitutionSubtable> &base, GlyphIterator *glyphIterator, LEErrorCode &success, const LEGlyphFilter *filter = NULL) const; + }; + + struct SingleSubstitutionFormat1Subtable : SingleSubstitutionSubtable + { + le_int16 deltaGlyphID; + +- le_uint32 process(GlyphIterator *glyphIterator, const LEGlyphFilter *filter = NULL) const; ++ le_uint32 process(const LEReferenceTo<SingleSubstitutionFormat1Subtable> &base, GlyphIterator *glyphIterator, LEErrorCode &success, const LEGlyphFilter *filter = NULL) const; + }; + + struct SingleSubstitutionFormat2Subtable : SingleSubstitutionSubtable +@@ -62,8 +62,9 @@ + le_uint16 glyphCount; + TTGlyphID substituteArray[ANY_NUMBER]; + +- le_uint32 process(GlyphIterator *glyphIterator, const LEGlyphFilter *filter = NULL) const; ++ le_uint32 process(const LEReferenceTo<SingleSubstitutionFormat2Subtable> &base, GlyphIterator *glyphIterator, LEErrorCode &success, const LEGlyphFilter *filter = NULL) const; + }; ++LE_VAR_ARRAY(SingleSubstitutionFormat2Subtable, substituteArray) + + U_NAMESPACE_END + #endif +--- jdk/src/share/native/sun/font/layout/SingleTableProcessor.cpp 2012-08-10 10:30:38.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SingleTableProcessor.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -46,26 +46,25 @@ + { + } + +-SingleTableProcessor::SingleTableProcessor(const MorphSubtableHeader *moprhSubtableHeader) +- : NonContextualGlyphSubstitutionProcessor(moprhSubtableHeader) ++SingleTableProcessor::SingleTableProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) ++ : NonContextualGlyphSubstitutionProcessor(morphSubtableHeader, success) + { +- const NonContextualGlyphSubstitutionHeader *header = (const NonContextualGlyphSubstitutionHeader *) moprhSubtableHeader; +- +- singleTableLookupTable = (const SingleTableLookupTable *) &header->table; ++ LEReferenceTo<NonContextualGlyphSubstitutionHeader> header(morphSubtableHeader, success); ++ singleTableLookupTable = LEReferenceTo<SingleTableLookupTable>(morphSubtableHeader, success, (const SingleTableLookupTable*)&header->table); + } + + SingleTableProcessor::~SingleTableProcessor() + { + } + +-void SingleTableProcessor::process(LEGlyphStorage &glyphStorage) ++void SingleTableProcessor::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) + { + const LookupSingle *entries = singleTableLookupTable->entries; + le_int32 glyph; + le_int32 glyphCount = glyphStorage.getGlyphCount(); + + for (glyph = 0; glyph < glyphCount; glyph += 1) { +- const LookupSingle *lookupSingle = singleTableLookupTable->lookupSingle(entries, glyphStorage[glyph]); ++ const LookupSingle *lookupSingle = singleTableLookupTable->lookupSingle(singleTableLookupTable, entries, glyphStorage[glyph], success); + + if (lookupSingle != NULL) { + glyphStorage[glyph] = SWAPW(lookupSingle->value); +--- jdk/src/share/native/sun/font/layout/SingleTableProcessor.h 2012-08-10 10:30:39.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SingleTableProcessor.h 2013-05-05 09:38:38.000000000 -0700 +@@ -50,9 +50,9 @@ + class SingleTableProcessor : public NonContextualGlyphSubstitutionProcessor + { + public: +- virtual void process(LEGlyphStorage &glyphStorage); ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); + +- SingleTableProcessor(const MorphSubtableHeader *morphSubtableHeader); ++ SingleTableProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); + + virtual ~SingleTableProcessor(); + +@@ -74,7 +74,7 @@ + SingleTableProcessor(); + + protected: +- const SingleTableLookupTable *singleTableLookupTable; ++ LEReferenceTo<SingleTableLookupTable> singleTableLookupTable; + + }; + +--- jdk/src/share/native/sun/font/layout/SingleTableProcessor2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/SingleTableProcessor2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,77 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++#include "NonContextualGlyphSubstProc2.h" ++#include "SingleTableProcessor2.h" ++#include "LEGlyphStorage.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SingleTableProcessor2) ++ ++SingleTableProcessor2::SingleTableProcessor2() ++{ ++} ++ ++SingleTableProcessor2::SingleTableProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : NonContextualGlyphSubstitutionProcessor2(morphSubtableHeader, success) ++{ ++ const LEReferenceTo<NonContextualGlyphSubstitutionHeader2> header(morphSubtableHeader, success); ++ ++ singleTableLookupTable = LEReferenceTo<SingleTableLookupTable>(morphSubtableHeader, success, &header->table); ++} ++ ++SingleTableProcessor2::~SingleTableProcessor2() ++{ ++} ++ ++void SingleTableProcessor2::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) ++{ ++ if(LE_FAILURE(success)) return; ++ const LookupSingle *entries = singleTableLookupTable->entries; ++ le_int32 glyph; ++ le_int32 glyphCount = glyphStorage.getGlyphCount(); ++ ++ for (glyph = 0; glyph < glyphCount; glyph += 1) { ++ const LookupSingle *lookupSingle = singleTableLookupTable->lookupSingle(singleTableLookupTable, entries, glyphStorage[glyph], success); ++ ++ if (lookupSingle != NULL) { ++ glyphStorage[glyph] = SWAPW(lookupSingle->value); ++ } ++ } ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/SingleTableProcessor2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/SingleTableProcessor2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,82 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __SINGLETABLEPROCESSOR2_H ++#define __SINGLETABLEPROCESSOR2_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++#include "NonContextualGlyphSubstProc2.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++class SingleTableProcessor2 : public NonContextualGlyphSubstitutionProcessor2 ++{ ++public: ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); ++ ++ SingleTableProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ ++ virtual ~SingleTableProcessor2(); ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for the actual class. ++ * ++ * @stable ICU 2.8 ++ */ ++ virtual UClassID getDynamicClassID() const; ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for this class. ++ * ++ * @stable ICU 2.8 ++ */ ++ static UClassID getStaticClassID(); ++ ++private: ++ SingleTableProcessor2(); ++ ++protected: ++ LEReferenceTo<SingleTableLookupTable> singleTableLookupTable; ++ ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/StateTableProcessor.cpp 2012-08-10 10:30:39.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/StateTableProcessor.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -44,17 +44,18 @@ + { + } + +-StateTableProcessor::StateTableProcessor(const MorphSubtableHeader *morphSubtableHeader) +- : SubtableProcessor(morphSubtableHeader) ++StateTableProcessor::StateTableProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) ++ : SubtableProcessor(morphSubtableHeader, success), stateTableHeader(morphSubtableHeader, success), ++ stHeader(stateTableHeader, success, (const StateTableHeader*)&stateTableHeader->stHeader) + { +- stateTableHeader = (const MorphStateTableHeader *) morphSubtableHeader; +- ++ if(LE_FAILURE(success)) return; + stateSize = SWAPW(stateTableHeader->stHeader.stateSize); + classTableOffset = SWAPW(stateTableHeader->stHeader.classTableOffset); + stateArrayOffset = SWAPW(stateTableHeader->stHeader.stateArrayOffset); + entryTableOffset = SWAPW(stateTableHeader->stHeader.entryTableOffset); + +- classTable = (const ClassTable *) ((char *) &stateTableHeader->stHeader + classTableOffset); ++ classTable = LEReferenceTo<ClassTable>(stateTableHeader, success, ((char *) &stateTableHeader->stHeader + classTableOffset)); ++ if(LE_FAILURE(success)) return; + firstGlyph = SWAPW(classTable->firstGlyph); + lastGlyph = firstGlyph + SWAPW(classTable->nGlyphs); + } +@@ -63,8 +64,11 @@ + { + } + +-void StateTableProcessor::process(LEGlyphStorage &glyphStorage) ++void StateTableProcessor::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) + { ++ if (LE_FAILURE(success)) return; ++ LE_STATE_PATIENCE_INIT(); ++ + // Start at state 0 + // XXX: How do we know when to start at state 1? + ByteOffset currentState = stateArrayOffset; +@@ -76,6 +80,7 @@ + beginStateTable(); + + while (currGlyph <= glyphCount) { ++ if(LE_STATE_PATIENCE_DECR()) break; // patience exceeded. + ClassCode classCode = classCodeOOB; + if (currGlyph == glyphCount) { + // XXX: How do we handle EOT vs. EOL? +@@ -90,10 +95,11 @@ + } + } + +- const EntryTableIndex *stateArray = (const EntryTableIndex *) ((char *) &stateTableHeader->stHeader + currentState); +- EntryTableIndex entryTableIndex = stateArray[(le_uint8)classCode]; +- ++ LEReferenceToArrayOf<EntryTableIndex> stateArray(stHeader, success, currentState, LE_UNBOUNDED_ARRAY); ++ EntryTableIndex entryTableIndex = stateArray.getObject((le_uint8)classCode, success); ++ LE_STATE_PATIENCE_CURR(le_int32, currGlyph); + currentState = processStateEntry(glyphStorage, currGlyph, entryTableIndex); ++ LE_STATE_PATIENCE_INCR(currGlyph); + } + + endStateTable(); +--- jdk/src/share/native/sun/font/layout/StateTableProcessor.h 2012-08-10 10:30:39.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/StateTableProcessor.h 2013-05-05 09:38:38.000000000 -0700 +@@ -49,7 +49,7 @@ + class StateTableProcessor : public SubtableProcessor + { + public: +- void process(LEGlyphStorage &glyphStorage); ++ void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); + + virtual void beginStateTable() = 0; + +@@ -58,7 +58,7 @@ + virtual void endStateTable() = 0; + + protected: +- StateTableProcessor(const MorphSubtableHeader *morphSubtableHeader); ++ StateTableProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); + virtual ~StateTableProcessor(); + + StateTableProcessor(); +@@ -68,11 +68,12 @@ + ByteOffset stateArrayOffset; + ByteOffset entryTableOffset; + +- const ClassTable *classTable; ++ LEReferenceTo<ClassTable> classTable; + TTGlyphID firstGlyph; + TTGlyphID lastGlyph; + +- const MorphStateTableHeader *stateTableHeader; ++ LEReferenceTo<MorphStateTableHeader> stateTableHeader; ++ LEReferenceTo<StateTableHeader> stHeader; // for convenience + + private: + StateTableProcessor(const StateTableProcessor &other); // forbid copying of this class +--- jdk/src/share/native/sun/font/layout/StateTableProcessor2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/StateTableProcessor2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,236 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "StateTables.h" ++#include "MorphStateTables.h" ++#include "SubtableProcessor2.h" ++#include "StateTableProcessor2.h" ++#include "LEGlyphStorage.h" ++#include "LESwaps.h" ++#include "LookupTables.h" ++ ++U_NAMESPACE_BEGIN ++ ++StateTableProcessor2::StateTableProcessor2() ++{ ++} ++ ++StateTableProcessor2::StateTableProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : SubtableProcessor2(morphSubtableHeader, success), stateTableHeader(morphSubtableHeader, success), ++ stHeader(stateTableHeader, success, (const StateTableHeader2*)&stateTableHeader->stHeader), ++ nClasses(0), classTableOffset(0), stateArrayOffset(0), entryTableOffset(0), classTable(), format(0), ++ stateArray() ++{ ++ if (LE_FAILURE(success)) { ++ return; ++ } ++ nClasses = SWAPL(stHeader->nClasses); ++ classTableOffset = SWAPL(stHeader->classTableOffset); ++ stateArrayOffset = SWAPL(stHeader->stateArrayOffset); ++ entryTableOffset = SWAPL(stHeader->entryTableOffset); ++ ++ classTable = LEReferenceTo<LookupTable>(stHeader, success, classTableOffset); ++ format = SWAPW(classTable->format); ++ ++ stateArray = LEReferenceToArrayOf<EntryTableIndex2>(stHeader, success, stateArrayOffset, LE_UNBOUNDED_ARRAY); ++} ++ ++StateTableProcessor2::~StateTableProcessor2() ++{ ++} ++ ++void StateTableProcessor2::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) ++{ ++ if (LE_FAILURE(success)) return; ++ // Start at state 0 ++ // XXX: How do we know when to start at state 1? ++ le_uint16 currentState = 0; ++ le_int32 glyphCount = glyphStorage.getGlyphCount(); ++ ++ LE_STATE_PATIENCE_INIT(); ++ ++ le_int32 currGlyph = 0; ++ if ((coverage & scfReverse2) != 0) { // process glyphs in descending order ++ currGlyph = glyphCount - 1; ++ dir = -1; ++ } else { ++ dir = 1; ++ } ++ ++ beginStateTable(); ++ switch (format) { ++ case ltfSimpleArray: { ++#ifdef TEST_FORMAT ++ LEReferenceTo<SimpleArrayLookupTable> lookupTable0(classTable, success); ++ if(LE_FAILURE(success)) break; ++ while ((dir == 1 && currGlyph <= glyphCount) || (dir == -1 && currGlyph >= -1)) { ++ if (LE_FAILURE(success)) break; ++ if (LE_STATE_PATIENCE_DECR()) { ++ LE_DEBUG_BAD_FONT("patience exceeded - state table not moving") ++ break; // patience exceeded. ++ } ++ LookupValue classCode = classCodeOOB; ++ if (currGlyph == glyphCount || currGlyph == -1) { ++ // XXX: How do we handle EOT vs. EOL? ++ classCode = classCodeEOT; ++ } else { ++ LEGlyphID gid = glyphStorage[currGlyph]; ++ TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(gid); ++ ++ if (glyphCode == 0xFFFF) { ++ classCode = classCodeDEL; ++ } else { ++ classCode = SWAPW(lookupTable0->valueArray[gid]); ++ } ++ } ++ EntryTableIndex2 entryTableIndex = SWAPW(stateArray(classCode + currentState * nClasses, success)); ++ LE_STATE_PATIENCE_CURR(le_int32, currGlyph); ++ currentState = processStateEntry(glyphStorage, currGlyph, entryTableIndex); // return a zero-based index instead of a byte offset ++ LE_STATE_PATIENCE_INCR(currGlyph); ++ } ++#endif ++ break; ++ } ++ case ltfSegmentSingle: { ++ LEReferenceTo<SegmentSingleLookupTable> lookupTable2(classTable, success); ++ if(LE_FAILURE(success)) break; ++ while ((dir == 1 && currGlyph <= glyphCount) || (dir == -1 && currGlyph >= -1)) { ++ if (LE_FAILURE(success)) break; ++ if (LE_STATE_PATIENCE_DECR()) { ++ LE_DEBUG_BAD_FONT("patience exceeded - state table not moving") ++ break; // patience exceeded. ++ } ++ LookupValue classCode = classCodeOOB; ++ if (currGlyph == glyphCount || currGlyph == -1) { ++ // XXX: How do we handle EOT vs. EOL? ++ classCode = classCodeEOT; ++ } else { ++ LEGlyphID gid = glyphStorage[currGlyph]; ++ TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(gid); ++ ++ if (glyphCode == 0xFFFF) { ++ classCode = classCodeDEL; ++ } else { ++ const LookupSegment *segment = ++ lookupTable2->lookupSegment(lookupTable2, lookupTable2->segments, gid, success); ++ if (segment != NULL && LE_SUCCESS(success)) { ++ classCode = SWAPW(segment->value); ++ } ++ } ++ } ++ EntryTableIndex2 entryTableIndex = SWAPW(stateArray(classCode + currentState * nClasses,success)); ++ LE_STATE_PATIENCE_CURR(le_int32, currGlyph); ++ currentState = processStateEntry(glyphStorage, currGlyph, entryTableIndex, success); ++ LE_STATE_PATIENCE_INCR(currGlyph); ++ } ++ break; ++ } ++ case ltfSegmentArray: { ++ //printf("Lookup Table Format4: specific interpretation needed!\n"); ++ break; ++ } ++ case ltfSingleTable: { ++ LEReferenceTo<SingleTableLookupTable> lookupTable6(classTable, success); ++ while ((dir == 1 && currGlyph <= glyphCount) || (dir == -1 && currGlyph >= -1)) { ++ if (LE_FAILURE(success)) break; ++ if (LE_STATE_PATIENCE_DECR()) { ++ LE_DEBUG_BAD_FONT("patience exceeded - state table not moving") ++ break; // patience exceeded. ++ } ++ LookupValue classCode = classCodeOOB; ++ if (currGlyph == glyphCount || currGlyph == -1) { ++ // XXX: How do we handle EOT vs. EOL? ++ classCode = classCodeEOT; ++ } else if(currGlyph > glyphCount) { ++ // note if > glyphCount, we've run off the end (bad font) ++ currGlyph = glyphCount; ++ classCode = classCodeEOT; ++ } else { ++ LEGlyphID gid = glyphStorage[currGlyph]; ++ TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(gid); ++ ++ if (glyphCode == 0xFFFF) { ++ classCode = classCodeDEL; ++ } else { ++ const LookupSingle *segment = lookupTable6->lookupSingle(lookupTable6, lookupTable6->entries, gid, success); ++ if (segment != NULL) { ++ classCode = SWAPW(segment->value); ++ } ++ } ++ } ++ EntryTableIndex2 entryTableIndex = SWAPW(stateArray(classCode + currentState * nClasses, success)); ++ LE_STATE_PATIENCE_CURR(le_int32, currGlyph); ++ currentState = processStateEntry(glyphStorage, currGlyph, entryTableIndex, success); ++ LE_STATE_PATIENCE_INCR(currGlyph); ++ } ++ break; ++ } ++ case ltfTrimmedArray: { ++ LEReferenceTo<TrimmedArrayLookupTable> lookupTable8(classTable, success); ++ if (LE_FAILURE(success)) break; ++ TTGlyphID firstGlyph = SWAPW(lookupTable8->firstGlyph); ++ TTGlyphID lastGlyph = firstGlyph + SWAPW(lookupTable8->glyphCount); ++ ++ while ((dir == 1 && currGlyph <= glyphCount) || (dir == -1 && currGlyph >= -1)) { ++ if(LE_STATE_PATIENCE_DECR()) { ++ LE_DEBUG_BAD_FONT("patience exceeded - state table not moving") ++ break; // patience exceeded. ++ } ++ ++ LookupValue classCode = classCodeOOB; ++ if (currGlyph == glyphCount || currGlyph == -1) { ++ // XXX: How do we handle EOT vs. EOL? ++ classCode = classCodeEOT; ++ } else { ++ TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(glyphStorage[currGlyph]); ++ if (glyphCode == 0xFFFF) { ++ classCode = classCodeDEL; ++ } else if ((glyphCode >= firstGlyph) && (glyphCode < lastGlyph)) { ++ classCode = SWAPW(lookupTable8->valueArray[glyphCode - firstGlyph]); ++ } ++ } ++ EntryTableIndex2 entryTableIndex = SWAPW(stateArray(classCode + currentState * nClasses, success)); ++ LE_STATE_PATIENCE_CURR(le_int32, currGlyph); ++ currentState = processStateEntry(glyphStorage, currGlyph, entryTableIndex, success); ++ LE_STATE_PATIENCE_INCR(currGlyph); ++ } ++ break; ++ } ++ default: ++ break; ++ } ++ ++ endStateTable(); ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/StateTableProcessor2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/StateTableProcessor2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,85 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __STATETABLEPROCESSOR2_H ++#define __STATETABLEPROCESSOR2_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "MorphStateTables.h" ++#include "SubtableProcessor2.h" ++#include "LookupTables.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++class StateTableProcessor2 : public SubtableProcessor2 ++{ ++public: ++ void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); ++ ++ virtual void beginStateTable() = 0; ++ ++ virtual le_uint16 processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex2 index, LEErrorCode &success) = 0; ++ ++ virtual void endStateTable() = 0; ++ ++protected: ++ StateTableProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ virtual ~StateTableProcessor2(); ++ ++ StateTableProcessor2(); ++ ++ le_int32 dir; ++ le_uint16 format; ++ le_uint32 nClasses; ++ le_uint32 classTableOffset; ++ le_uint32 stateArrayOffset; ++ le_uint32 entryTableOffset; ++ ++ LEReferenceTo<LookupTable> classTable; ++ LEReferenceToArrayOf<EntryTableIndex2> stateArray; ++ LEReferenceTo<MorphStateTableHeader2> stateTableHeader; ++ LEReferenceTo<StateTableHeader2> stHeader; // for convenience ++ ++private: ++ StateTableProcessor2(const StateTableProcessor2 &other); // forbid copying of this class ++ StateTableProcessor2 &operator=(const StateTableProcessor2 &other); // forbid copying of this class ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/StateTables.h 2012-08-10 10:30:42.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/StateTables.h 2013-05-05 09:38:38.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* + * +- * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved ++ * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved + * + */ + +@@ -42,6 +42,41 @@ + + U_NAMESPACE_BEGIN + ++ ++ ++ ++/* ++ * State table loop detection. ++ * Detects if too many ( LE_STATE_PATIENCE_COUNT ) state changes occur without moving the glyph index 'g'. ++ * ++ * Usage (pseudocode): ++ * ++ * { ++ * LE_STATE_PATIENCE_INIT(); ++ * ++ * int g=0; // the glyph index - expect it to be moving ++ * ++ * for(;;) { ++ * if(LE_STATE_PATIENCE_DECR()) { // decrements the patience counter ++ * // ran out of patience, get out. ++ * break; ++ * } ++ * ++ * LE_STATE_PATIENCE_CURR(int, g); // store the 'current' ++ * state = newState(state,g); ++ * g+= <something, could be zero>; ++ * LE_STATE_PATIENCE_INCR(g); // if g has moved, increment the patience counter. Otherwise leave it. ++ * } ++ * ++ */ ++ ++#define LE_STATE_PATIENCE_COUNT 4096 /**< give up if a state table doesn't move the glyph after this many iterations */ ++#define LE_STATE_PATIENCE_INIT() le_uint32 le_patience_count = LE_STATE_PATIENCE_COUNT ++#define LE_STATE_PATIENCE_DECR() --le_patience_count==0 ++#define LE_STATE_PATIENCE_CURR(type,x) type le_patience_curr=(x) ++#define LE_STATE_PATIENCE_INCR(x) if((x)!=le_patience_curr) ++le_patience_count; ++ ++ + struct StateTableHeader + { + le_int16 stateSize; +@@ -50,6 +85,14 @@ + ByteOffset entryTableOffset; + }; + ++struct StateTableHeader2 ++{ ++ le_uint32 nClasses; ++ le_uint32 classTableOffset; ++ le_uint32 stateArrayOffset; ++ le_uint32 entryTableOffset; ++}; ++ + enum ClassCodes + { + classCodeEOT = 0, +@@ -68,6 +111,7 @@ + le_uint16 nGlyphs; + ClassCode classArray[ANY_NUMBER]; + }; ++LE_VAR_ARRAY(ClassTable, classArray) + + enum StateNumber + { +@@ -85,6 +129,14 @@ + le_int16 flags; + }; + ++typedef le_uint16 EntryTableIndex2; ++ ++struct StateEntry2 // same struct different interpretation ++{ ++ le_uint16 newStateIndex; ++ le_uint16 flags; ++}; ++ + U_NAMESPACE_END + #endif + +--- jdk/src/share/native/sun/font/layout/SubtableProcessor.cpp 2012-08-10 10:30:47.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SubtableProcessor.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -40,10 +40,10 @@ + { + } + +-SubtableProcessor::SubtableProcessor(const MorphSubtableHeader *morphSubtableHeader) ++SubtableProcessor::SubtableProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) ++ : length(0), coverage(0), subtableFeatures(0L), subtableHeader(morphSubtableHeader) + { +- subtableHeader = morphSubtableHeader; +- ++ if(LE_FAILURE(success)) return; + length = SWAPW(subtableHeader->length); + coverage = SWAPW(subtableHeader->coverage); + subtableFeatures = SWAPL(subtableHeader->subtableFeatures); +--- jdk/src/share/native/sun/font/layout/SubtableProcessor.h 2012-08-10 10:30:47.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/SubtableProcessor.h 2013-05-05 09:38:38.000000000 -0700 +@@ -46,11 +46,11 @@ + + class SubtableProcessor : public UMemory { + public: +- virtual void process(LEGlyphStorage &glyphStorage) = 0; ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success) = 0; + virtual ~SubtableProcessor(); + + protected: +- SubtableProcessor(const MorphSubtableHeader *morphSubtableHeader); ++ SubtableProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); + + SubtableProcessor(); + +@@ -58,7 +58,7 @@ + SubtableCoverage coverage; + FeatureFlags subtableFeatures; + +- const MorphSubtableHeader *subtableHeader; ++ const LEReferenceTo<MorphSubtableHeader> subtableHeader; + + private: + +--- jdk/src/share/native/sun/font/layout/SubtableProcessor2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/SubtableProcessor2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,57 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++SubtableProcessor2::SubtableProcessor2() ++{ ++} ++ ++SubtableProcessor2::SubtableProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : subtableHeader(morphSubtableHeader, success), length(0), coverage(0), subtableFeatures(0L) ++{ ++ if(LE_FAILURE(success)) return; ++ ++ length = SWAPL(subtableHeader->length); ++ coverage = SWAPL(subtableHeader->coverage); ++ subtableFeatures = SWAPL(subtableHeader->subtableFeatures); ++} ++ ++SubtableProcessor2::~SubtableProcessor2() ++{ ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/SubtableProcessor2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/SubtableProcessor2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,70 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __SUBTABLEPROCESSOR2_H ++#define __SUBTABLEPROCESSOR2_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++class SubtableProcessor2 : public UMemory { ++public: ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success) = 0; ++ virtual ~SubtableProcessor2(); ++ ++protected: ++ SubtableProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ ++ SubtableProcessor2(); ++ ++ le_uint32 length; ++ SubtableCoverage2 coverage; ++ FeatureFlags subtableFeatures; ++ ++ const LEReferenceTo<MorphSubtableHeader2> subtableHeader; ++ ++private: ++ ++ SubtableProcessor2(const SubtableProcessor2 &other); // forbid copying of this class ++ SubtableProcessor2 &operator=(const SubtableProcessor2 &other); // forbid copying of this class ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/ThaiLayoutEngine.cpp 2012-08-10 10:30:48.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ThaiLayoutEngine.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -134,11 +134,10 @@ + return; + } + +- if (fTypoFlags & 0x1) { /* kerning enabled */ +- static const le_uint32 kernTableTag = LE_KERN_TABLE_TAG; +- +- KernTable kt(fFontInstance, getFontTable(kernTableTag)); +- kt.process(glyphStorage); ++ if (fTypoFlags & LE_Kerning_FEATURE_FLAG) { /* kerning enabled */ ++ LETableReference kernTable(fFontInstance, LE_KERN_TABLE_TAG, success); ++ KernTable kt(kernTable, success); ++ kt.process(glyphStorage, success); + } + + // default is no adjustments +--- jdk/src/share/native/sun/font/layout/TibetanLayoutEngine.cpp 2012-08-10 10:30:50.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/TibetanLayoutEngine.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -49,7 +49,7 @@ + UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TibetanOpenTypeLayoutEngine) + + TibetanOpenTypeLayoutEngine::TibetanOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success) ++ le_int32 typoFlags, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success) + : OpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable, success) + { + fFeatureMap = TibetanReordering::getFeatureMap(fFeatureMapCount); +--- jdk/src/share/native/sun/font/layout/TibetanLayoutEngine.h 2012-08-10 10:30:51.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/TibetanLayoutEngine.h 2013-05-05 09:38:38.000000000 -0700 +@@ -83,7 +83,7 @@ + * @internal + */ + TibetanOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, +- le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable, LEErrorCode &success); ++ le_int32 typoFlags, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success); + + /** + * This constructor is used when the font requires a "canned" GSUB table which can't be known +--- jdk/src/share/native/sun/font/layout/TrimmedArrayProcessor.cpp 2012-08-10 10:30:51.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/TrimmedArrayProcessor.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -46,22 +46,28 @@ + { + } + +-TrimmedArrayProcessor::TrimmedArrayProcessor(const MorphSubtableHeader *morphSubtableHeader) +- : NonContextualGlyphSubstitutionProcessor(morphSubtableHeader) ++TrimmedArrayProcessor::TrimmedArrayProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success) ++ : NonContextualGlyphSubstitutionProcessor(morphSubtableHeader, success), firstGlyph(0), lastGlyph(0) + { +- const NonContextualGlyphSubstitutionHeader *header = (const NonContextualGlyphSubstitutionHeader *) morphSubtableHeader; ++ LEReferenceTo<NonContextualGlyphSubstitutionHeader> header(morphSubtableHeader, success); + +- trimmedArrayLookupTable = (const TrimmedArrayLookupTable *) &header->table; +- firstGlyph = SWAPW(trimmedArrayLookupTable->firstGlyph); +- lastGlyph = firstGlyph + SWAPW(trimmedArrayLookupTable->glyphCount); ++ if(LE_FAILURE(success)) return; ++ ++ trimmedArrayLookupTable = LEReferenceTo<TrimmedArrayLookupTable>(morphSubtableHeader, success, (const TrimmedArrayLookupTable*)&header->table); ++ ++ if(LE_FAILURE(success)) return; ++ ++ firstGlyph = SWAPW(trimmedArrayLookupTable->firstGlyph); ++ lastGlyph = firstGlyph + SWAPW(trimmedArrayLookupTable->glyphCount); + } + + TrimmedArrayProcessor::~TrimmedArrayProcessor() + { + } + +-void TrimmedArrayProcessor::process(LEGlyphStorage &glyphStorage) ++void TrimmedArrayProcessor::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) + { ++ if(LE_FAILURE(success)) return; + le_int32 glyphCount = glyphStorage.getGlyphCount(); + le_int32 glyph; + +--- jdk/src/share/native/sun/font/layout/TrimmedArrayProcessor.h 2012-08-10 10:30:52.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/TrimmedArrayProcessor.h 2013-05-05 09:38:38.000000000 -0700 +@@ -50,9 +50,9 @@ + class TrimmedArrayProcessor : public NonContextualGlyphSubstitutionProcessor + { + public: +- virtual void process(LEGlyphStorage &glyphStorage); ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); + +- TrimmedArrayProcessor(const MorphSubtableHeader *morphSubtableHeader); ++ TrimmedArrayProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); + + virtual ~TrimmedArrayProcessor(); + +@@ -76,7 +76,7 @@ + protected: + TTGlyphID firstGlyph; + TTGlyphID lastGlyph; +- const TrimmedArrayLookupTable *trimmedArrayLookupTable; ++ LEReferenceTo<TrimmedArrayLookupTable> trimmedArrayLookupTable; + + }; + +--- jdk/src/share/native/sun/font/layout/TrimmedArrayProcessor2.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/TrimmedArrayProcessor2.cpp 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,82 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++#include "NonContextualGlyphSubstProc2.h" ++#include "TrimmedArrayProcessor2.h" ++#include "LEGlyphStorage.h" ++#include "LESwaps.h" ++ ++U_NAMESPACE_BEGIN ++ ++UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TrimmedArrayProcessor2) ++ ++TrimmedArrayProcessor2::TrimmedArrayProcessor2() ++{ ++} ++ ++TrimmedArrayProcessor2::TrimmedArrayProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success) ++ : NonContextualGlyphSubstitutionProcessor2(morphSubtableHeader, success) ++{ ++ const LEReferenceTo<NonContextualGlyphSubstitutionHeader2> header(morphSubtableHeader, success); ++ ++ trimmedArrayLookupTable = LEReferenceTo<TrimmedArrayLookupTable>(morphSubtableHeader, success, &header->table); ++ firstGlyph = SWAPW(trimmedArrayLookupTable->firstGlyph); ++ lastGlyph = firstGlyph + SWAPW(trimmedArrayLookupTable->glyphCount); ++ valueArray = LEReferenceToArrayOf<LookupValue>(morphSubtableHeader, success, &trimmedArrayLookupTable->valueArray[0], LE_UNBOUNDED_ARRAY); ++} ++ ++TrimmedArrayProcessor2::~TrimmedArrayProcessor2() ++{ ++} ++ ++void TrimmedArrayProcessor2::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) ++{ ++ if(LE_FAILURE(success)) return; ++ le_int32 glyphCount = glyphStorage.getGlyphCount(); ++ le_int32 glyph; ++ ++ for (glyph = 0; glyph < glyphCount; glyph += 1) { ++ LEGlyphID thisGlyph = glyphStorage[glyph]; ++ TTGlyphID ttGlyph = (TTGlyphID) LE_GET_GLYPH(thisGlyph); ++ ++ if ((ttGlyph > firstGlyph) && (ttGlyph < lastGlyph)) { ++ TTGlyphID newGlyph = SWAPW(valueArray(ttGlyph - firstGlyph, success)); ++ ++ glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph); ++ } ++ } ++} ++ ++U_NAMESPACE_END +--- jdk/src/share/native/sun/font/layout/TrimmedArrayProcessor2.h 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/src/share/native/sun/font/layout/TrimmedArrayProcessor2.h 2013-05-05 09:38:38.000000000 -0700 +@@ -0,0 +1,84 @@ ++/* ++ * 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. ++ * ++ */ ++ ++/* ++ * ++ * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved ++ * ++ */ ++ ++#ifndef __TRIMMEDARRAYPROCESSOR2_H ++#define __TRIMMEDARRAYPROCESSOR2_H ++ ++/** ++ * \file ++ * \internal ++ */ ++ ++#include "LETypes.h" ++#include "MorphTables.h" ++#include "SubtableProcessor2.h" ++#include "NonContextualGlyphSubst.h" ++#include "NonContextualGlyphSubstProc2.h" ++ ++U_NAMESPACE_BEGIN ++ ++class LEGlyphStorage; ++ ++class TrimmedArrayProcessor2 : public NonContextualGlyphSubstitutionProcessor2 ++{ ++public: ++ virtual void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); ++ ++ TrimmedArrayProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); ++ ++ virtual ~TrimmedArrayProcessor2(); ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for the actual class. ++ * ++ * @stable ICU 2.8 ++ */ ++ virtual UClassID getDynamicClassID() const; ++ ++ /** ++ * ICU "poor man's RTTI", returns a UClassID for this class. ++ * ++ * @stable ICU 2.8 ++ */ ++ static UClassID getStaticClassID(); ++ ++private: ++ TrimmedArrayProcessor2(); ++ ++protected: ++ TTGlyphID firstGlyph; ++ TTGlyphID lastGlyph; ++ LEReferenceTo<TrimmedArrayLookupTable> trimmedArrayLookupTable; ++ LEReferenceToArrayOf<LookupValue> valueArray; ++}; ++ ++U_NAMESPACE_END ++#endif +--- jdk/src/share/native/sun/font/layout/ValueRecords.h 2012-08-10 10:30:52.000000000 -0700 ++++ jdk/src/share/native/sun/font/layout/ValueRecords.h 2013-05-05 09:38:38.000000000 -0700 +@@ -64,6 +64,7 @@ + static le_int16 getFieldCount(ValueFormat valueFormat); + static le_int16 getFieldIndex(ValueFormat valueFormat, ValueRecordField field); + }; ++LE_VAR_ARRAY(ValueRecord, values) + + enum ValueRecordFields + { +--- jdk/src/share/native/sun/font/sunFont.c 2012-08-10 10:30:52.000000000 -0700 ++++ jdk/src/share/native/sun/font/sunFont.c 2013-05-05 09:38:38.000000000 -0700 +@@ -320,22 +320,20 @@ + JNIEXPORT TTLayoutTableCache* newLayoutTableCache() { + TTLayoutTableCache* ltc = calloc(1, sizeof(TTLayoutTableCache)); + if (ltc) { +- ltc->gsub_len = -1; +- ltc->gpos_len = -1; +- ltc->gdef_len = -1; +- ltc->mort_len = -1; +- ltc->kern_len = -1; ++ int i; ++ for(i=0;i<LAYOUTCACHE_ENTRIES;i++) { ++ ltc->entries[i].len = -1; ++ } + } + return ltc; + } + + JNIEXPORT void freeLayoutTableCache(TTLayoutTableCache* ltc) { + if (ltc) { +- if (ltc->gsub) free(ltc->gsub); +- if (ltc->gpos) free(ltc->gpos); +- if (ltc->gdef) free(ltc->gdef); +- if (ltc->mort) free(ltc->mort); +- if (ltc->kern) free(ltc->kern); ++ int i; ++ for(i=0;i<LAYOUTCACHE_ENTRIES;i++) { ++ if(ltc->entries[i].ptr) free (ltc->entries[i].ptr); ++ } + if (ltc->kernPairs) free(ltc->kernPairs); + free(ltc); + } --- jdk/src/share/native/sun/java2d/opengl/OGLBlitLoops.c 2012-08-10 10:31:05.000000000 -0700 -+++ jdk/src/share/native/sun/java2d/opengl/OGLBlitLoops.c 2013-01-16 00:07:18.000000000 -0800 ++++ jdk/src/share/native/sun/java2d/opengl/OGLBlitLoops.c 2013-05-05 09:38:38.000000000 -0700 @@ -393,16 +393,7 @@ OGLSDOps *dstOps, jint dx1, jint dy1, jint dx2, jint dy2) @@ -71729,7 +69501,7 @@ /** --- jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h 2012-08-10 10:31:05.000000000 -0700 -+++ jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h 2013-05-05 09:38:38.000000000 -0700 @@ -26,7 +26,7 @@ #ifndef OGLFuncs_h_Included #define OGLFuncs_h_Included @@ -71740,7 +69512,7 @@ #endif #include "jni.h" --- jdk/src/solaris/back/util_md.h 2012-08-10 10:31:14.000000000 -0700 -+++ jdk/src/solaris/back/util_md.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/back/util_md.h 2013-05-05 09:38:40.000000000 -0700 @@ -51,7 +51,7 @@ /* On little endian machines, convert java big endian numbers. */ @@ -71751,7 +69523,7 @@ #define HOST_TO_JAVA_CHAR(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff))) #define HOST_TO_JAVA_SHORT(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff))) --- jdk/src/solaris/bin/ergo.c 2012-08-10 10:31:14.000000000 -0700 -+++ jdk/src/solaris/bin/ergo.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/bin/ergo.c 2013-05-05 09:38:39.000000000 -0700 @@ -100,6 +100,27 @@ /* Compute physical memory by asking the OS */ uint64_t @@ -71787,7 +69559,7 @@ +#endif } --- jdk/src/solaris/bin/ergo.h 2012-08-10 10:31:14.000000000 -0700 -+++ jdk/src/solaris/bin/ergo.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/bin/ergo.h 2013-05-05 09:38:39.000000000 -0700 @@ -33,6 +33,10 @@ #include <sys/stat.h> #include <unistd.h> @@ -71800,7 +69572,7 @@ #include "java.h" --- jdk/src/solaris/bin/ergo_i586.c 2012-08-10 10:31:14.000000000 -0700 -+++ jdk/src/solaris/bin/ergo_i586.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/bin/ergo_i586.c 2013-05-05 09:38:39.000000000 -0700 @@ -106,7 +106,7 @@ #endif /* __solaris__ */ @@ -71860,7 +69632,7 @@ +#endif } --- jdk/src/solaris/bin/java_md_common.c 2012-08-10 10:31:14.000000000 -0700 -+++ jdk/src/solaris/bin/java_md_common.c 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/bin/java_md_common.c 2013-05-05 09:38:39.000000000 -0700 @@ -502,3 +502,19 @@ return findBootClass(env, classname); } @@ -71882,7 +69654,7 @@ + return NewPlatformStringArray(env, strv, argc); +} --- jdk/src/solaris/bin/java_md_solinux.c 2012-08-10 10:31:14.000000000 -0700 -+++ jdk/src/solaris/bin/java_md_solinux.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/bin/java_md_solinux.c 2013-05-05 09:38:39.000000000 -0700 @@ -951,6 +951,19 @@ return exec_path; } @@ -71944,7 +69716,7 @@ } --- jdk/src/solaris/bin/java_md_solinux.h 2012-08-10 10:31:14.000000000 -0700 -+++ jdk/src/solaris/bin/java_md_solinux.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/bin/java_md_solinux.h 2013-05-05 09:38:39.000000000 -0700 @@ -33,6 +33,10 @@ #include <sys/time.h> #define CounterGet() (gethrtime()/1000) @@ -71980,7 +69752,7 @@ #define JVM_DLL "libjvm.so" --- jdk/src/solaris/classes/sun/awt/X11/XCheckboxMenuItemPeer.java 2012-08-10 10:31:17.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XCheckboxMenuItemPeer.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XCheckboxMenuItemPeer.java 2013-05-05 09:38:39.000000000 -0700 @@ -29,27 +29,12 @@ import java.awt.peer.*; import java.awt.event.*; @@ -72030,7 +69802,7 @@ /************************************************ --- jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java 2012-08-10 10:31:18.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java 2013-05-05 09:38:39.000000000 -0700 @@ -29,14 +29,8 @@ import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetListener; @@ -72066,7 +69838,7 @@ void forwardKeyEvent(KeyEvent e) { --- jdk/src/solaris/classes/sun/awt/X11/XEmbeddingContainer.java 2012-08-10 10:31:18.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XEmbeddingContainer.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XEmbeddingContainer.java 2013-05-05 09:38:39.000000000 -0700 @@ -29,7 +29,7 @@ import java.util.HashMap; import java.awt.event.KeyEvent; @@ -72099,7 +69871,7 @@ if (data == 0) { return; --- jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java 2012-08-10 10:31:18.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java 2013-05-05 09:38:39.000000000 -0700 @@ -27,10 +27,7 @@ import java.awt.*; @@ -72156,7 +69928,7 @@ catch (Exception e) { --- jdk/src/solaris/classes/sun/awt/X11/XMenuBarPeer.java 2012-08-10 10:31:18.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XMenuBarPeer.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XMenuBarPeer.java 2013-05-05 09:38:39.000000000 -0700 @@ -28,10 +28,9 @@ import java.awt.peer.*; import java.awt.event.*; @@ -72209,7 +69981,7 @@ addHelpMenu(targetHelpMenu); } --- jdk/src/solaris/classes/sun/awt/X11/XMenuItemPeer.java 2012-08-10 10:31:18.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XMenuItemPeer.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XMenuItemPeer.java 2013-05-05 09:38:39.000000000 -0700 @@ -28,10 +28,7 @@ import java.awt.peer.*; import java.awt.event.*; @@ -72336,7 +70108,7 @@ String getShortcutText() { --- jdk/src/solaris/classes/sun/awt/X11/XMenuPeer.java 2012-08-10 10:31:19.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XMenuPeer.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XMenuPeer.java 2013-05-05 09:38:39.000000000 -0700 @@ -27,10 +27,9 @@ import java.awt.*; import java.awt.peer.*; @@ -72381,7 +70153,7 @@ /************************************************ --- jdk/src/solaris/classes/sun/awt/X11/XPopupMenuPeer.java 2012-08-10 10:31:19.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XPopupMenuPeer.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XPopupMenuPeer.java 2013-05-05 09:38:39.000000000 -0700 @@ -28,15 +28,10 @@ import java.awt.peer.*; import java.awt.event.*; @@ -72491,7 +70263,7 @@ /************************************************ --- jdk/src/solaris/classes/sun/awt/X11/XScrollPanePeer.java 2012-08-10 10:31:19.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XScrollPanePeer.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XScrollPanePeer.java 2013-05-05 09:38:39.000000000 -0700 @@ -29,7 +29,7 @@ import java.awt.event.*; import java.awt.peer.*; @@ -72533,7 +70305,7 @@ paintComponent(g); } --- jdk/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java 2012-08-10 10:31:19.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java 2013-05-05 09:38:39.000000000 -0700 @@ -27,10 +27,9 @@ import java.awt.*; @@ -72624,7 +70396,7 @@ for (AppContext appContext : AppContext.getAppContexts()) { SunToolkit.invokeLaterOnAppContext(appContext, runnable); --- jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java 2012-08-10 10:31:19.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java 2013-05-05 09:38:39.000000000 -0700 @@ -105,6 +105,7 @@ this.target = target; @@ -72669,7 +70441,7 @@ firePropertyChange("transferHandler", oldHandler, newHandler); --- jdk/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java 2012-08-10 10:31:19.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java 2013-05-05 09:38:39.000000000 -0700 @@ -73,6 +73,8 @@ xtext = new XAWTTextField(text,this, target.getParent()); xtext.getDocument().addDocumentListener(xtext); @@ -72743,7 +70515,7 @@ - } -} --- jdk/src/solaris/classes/sun/awt/X11/XToolkit.java 2012-08-10 10:31:19.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XToolkit.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XToolkit.java 2013-05-05 09:38:39.000000000 -0700 @@ -41,8 +41,6 @@ import java.awt.image.ColorModel; import java.awt.peer.*; @@ -72826,7 +70598,7 @@ public boolean isAlwaysOnTopSupported() { --- jdk/src/solaris/classes/sun/awt/X11/XWindow.java 2012-08-10 10:31:19.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XWindow.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XWindow.java 2013-05-05 09:38:39.000000000 -0700 @@ -126,10 +126,6 @@ native void getWindowBounds(long window, long x, long y, long width, long height); private native static void initIDs(); @@ -72915,8 +70687,28 @@ postEventToEventQueue(ke); } +--- jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java 2012-08-10 10:31:19.000000000 -0700 ++++ jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java 2013-05-05 09:38:39.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -992,8 +992,8 @@ + XLayerProtocol.LAYER_NORMAL); + } + +- public void setAlwaysOnTop(boolean alwaysOnTop) { +- this.alwaysOnTop = alwaysOnTop; ++ public void updateAlwaysOnTopState() { ++ this.alwaysOnTop = ((Window) this.target).isAlwaysOnTop(); + updateAlwaysOnTop(); + } + --- jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java 2012-08-10 10:31:19.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java 2013-05-05 09:38:39.000000000 -0700 @@ -27,6 +27,7 @@ import java.security.AccessController; @@ -72951,7 +70743,7 @@ } --- jdk/src/solaris/classes/sun/awt/X11FontManager.java 2012-08-10 10:31:20.000000000 -0700 -+++ jdk/src/solaris/classes/sun/awt/X11FontManager.java 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/classes/sun/awt/X11FontManager.java 2013-05-05 09:38:40.000000000 -0700 @@ -213,7 +213,7 @@ if (fontID != null) { fileName = (String)fontNameMap.get(fontID); @@ -72980,7 +70772,7 @@ !mFontConfig.fontFilesArePresent()) || (FontUtilities.isSolaris && !mFontConfig.fontFilesArePresent()))) { --- jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java 2012-08-10 10:31:23.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java 2013-01-16 08:58:11.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java 2013-05-05 09:38:40.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved. @@ -73065,7 +70857,7 @@ j++; } --- jdk/src/solaris/classes/sun/nio/ch/SctpChannelImpl.java 2012-08-10 10:31:23.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/ch/SctpChannelImpl.java 2013-03-09 08:44:49.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/ch/SctpChannelImpl.java 2013-05-05 09:38:40.000000000 -0700 @@ -1019,13 +1019,21 @@ boolean unordered, int ppid) @@ -73100,7 +70892,7 @@ private static native int checkConnect(FileDescriptor fd, boolean block, --- jdk/src/solaris/classes/sun/nio/ch/SctpMultiChannelImpl.java 2012-08-10 10:31:23.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/ch/SctpMultiChannelImpl.java 2013-03-09 08:44:49.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/ch/SctpMultiChannelImpl.java 2013-05-05 09:38:40.000000000 -0700 @@ -880,13 +880,20 @@ boolean unordered, int ppid) @@ -73142,7 +70934,7 @@ } --- jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java 2012-08-10 10:31:24.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java 2013-05-05 09:38:40.000000000 -0700 @@ -68,7 +68,7 @@ return createProvider("sun.nio.fs.SolarisFileSystemProvider"); if (osname.equals("Linux")) @@ -73153,7 +70945,7 @@ throw new AssertionError("Platform not recognized"); } --- jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java 2012-08-10 10:31:24.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java 2013-01-16 00:07:19.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java 2013-05-05 09:38:40.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. @@ -73216,7 +71008,7 @@ } finally { close(fd); --- jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java 2012-08-10 10:31:24.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java 2013-01-16 00:07:19.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java 2013-05-05 09:38:40.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. @@ -73234,7 +71026,7 @@ // register with inotify (replaces existing mask if already registered) --- jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java 2012-08-10 10:31:24.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java 2013-01-16 00:07:19.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java 2013-05-05 09:38:40.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. @@ -73261,7 +71053,7 @@ } if (x.errno() == EINVAL && (n < 3)) --- jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java 2012-08-10 10:31:24.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java 2013-01-16 00:07:19.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java 2013-05-05 09:38:40.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. @@ -73324,7 +71116,7 @@ "': " + x.getMessage()); } finally { --- jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java 2012-08-10 10:31:24.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java 2013-01-16 00:07:19.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java 2013-05-05 09:38:40.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. @@ -73342,7 +71134,7 @@ // return existing watch key after updating events if already --- jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java 2012-08-10 10:31:24.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java 2013-01-16 00:07:19.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java 2013-05-05 09:38:40.000000000 -0700 @@ -36,6 +36,8 @@ import sun.misc.SharedSecrets; import sun.misc.JavaIOFileDescriptorAccess; @@ -73385,7 +71177,7 @@ oflags |= O_NOFOLLOW; } --- jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java 2012-08-10 10:31:24.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java 2013-01-16 00:07:19.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java 2013-05-05 09:38:40.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. @@ -73450,7 +71242,7 @@ x.rethrowAsIOException(target); } --- jdk/src/solaris/classes/sun/nio/fs/UnixException.java 2012-08-10 10:31:24.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/UnixException.java 2013-01-16 00:07:19.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/UnixException.java 2013-05-05 09:38:40.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. @@ -73478,7 +71270,7 @@ } } --- jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java 2012-08-10 10:31:24.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java 2013-01-16 00:07:19.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java 2013-05-05 09:38:40.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. @@ -73530,7 +71322,7 @@ return null; // keep compiler happy } --- jdk/src/solaris/classes/sun/nio/fs/UnixNativeDispatcher.java 2012-08-10 10:31:25.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/UnixNativeDispatcher.java 2013-01-16 00:07:19.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/UnixNativeDispatcher.java 2013-05-05 09:38:40.000000000 -0700 @@ -548,10 +548,6 @@ return hasAtSysCalls; } @@ -73543,7 +71335,7 @@ private static native int init(); --- jdk/src/solaris/classes/sun/nio/fs/UnixPath.java 2012-08-10 10:31:25.000000000 -0700 -+++ jdk/src/solaris/classes/sun/nio/fs/UnixPath.java 2013-01-16 00:07:19.000000000 -0800 ++++ jdk/src/solaris/classes/sun/nio/fs/UnixPath.java 2013-05-05 09:38:40.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. @@ -73583,7 +71375,7 @@ x.rethrowAsIOException(this); --- jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java 2012-08-10 10:31:25.000000000 -0700 -+++ jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java 2013-05-05 09:38:40.000000000 -0700 @@ -125,6 +125,7 @@ static boolean isBSD() { @@ -73593,7 +71385,7 @@ } --- jdk/src/solaris/javavm/export/jvm_md.h 2012-08-10 10:31:28.000000000 -0700 -+++ jdk/src/solaris/javavm/export/jvm_md.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/javavm/export/jvm_md.h 2013-05-05 09:38:39.000000000 -0700 @@ -75,7 +75,11 @@ #define JVM_O_O_APPEND O_APPEND #define JVM_O_EXCL O_EXCL @@ -73607,7 +71399,7 @@ /* Signals */ --- jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c 2012-08-10 10:31:28.000000000 -0700 -+++ jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c 2013-05-05 09:38:40.000000000 -0700 @@ -168,6 +168,9 @@ /* * XXXBSD: there's no way available to get swap info in @@ -73658,7 +71450,7 @@ // throw_internal_error(env, "Unimplemented in FreeBSD"); return (100); --- jdk/src/solaris/native/java/io/UnixFileSystem_md.c 2012-08-10 10:31:30.000000000 -0700 -+++ jdk/src/solaris/native/java/io/UnixFileSystem_md.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/java/io/UnixFileSystem_md.c 2013-05-05 09:38:40.000000000 -0700 @@ -146,7 +146,6 @@ return rv; } @@ -73668,7 +71460,7 @@ Java_java_io_UnixFileSystem_setPermission(JNIEnv *env, jobject this, jobject file, --- jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c 2012-08-10 10:31:30.000000000 -0700 -+++ jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c 2013-05-05 09:38:40.000000000 -0700 @@ -53,7 +53,7 @@ for (i = 0; environ[i]; i++) { @@ -73688,7 +71480,7 @@ const char * valBeg = varEnd + 1; jsize varLength = varEnd - environ[i]; --- jdk/src/solaris/native/java/lang/UNIXProcess_md.c 2012-08-10 10:31:30.000000000 -0700 -+++ jdk/src/solaris/native/java/lang/UNIXProcess_md.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/java/lang/UNIXProcess_md.c 2013-05-05 09:38:40.000000000 -0700 @@ -394,7 +394,17 @@ return c >= '0' && c <= '9'; } @@ -73717,7 +71509,7 @@ static int moveDescriptor(int fd_from, int fd_to) --- jdk/src/solaris/native/java/lang/java_props_md.c 2012-08-10 10:31:30.000000000 -0700 -+++ jdk/src/solaris/native/java/lang/java_props_md.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/java/lang/java_props_md.c 2013-05-05 09:38:40.000000000 -0700 @@ -151,7 +151,7 @@ lc = setlocale(cat, NULL); #endif @@ -73748,8 +71540,72 @@ sprops.language = "en"; sprops.encoding = "ISO8859-1"; --- jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2012-08-10 10:31:30.000000000 -0700 -+++ jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2013-03-09 08:44:53.000000000 -0800 -@@ -669,11 +669,11 @@ ++++ jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2013-05-05 09:38:40.000000000 -0700 +@@ -102,9 +102,6 @@ + static jclass ni_iacls; + static jclass ni_ia4cls; + static jmethodID ni_ia4ctrID; +-static jfieldID ni_iaaddressID; +-static jfieldID ni_iahostID; +-static jfieldID ni_iafamilyID; + static int initialized = 0; + + /* +@@ -135,9 +132,6 @@ + ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address"); + ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls); + ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V"); +- ni_iaaddressID = (*env)->GetFieldID(env, ni_iacls, "address", "I"); +- ni_iafamilyID = (*env)->GetFieldID(env, ni_iacls, "family", "I"); +- ni_iahostID = (*env)->GetFieldID(env, ni_iacls, "hostName", "Ljava/lang/String;"); + initialized = 1; + } + +@@ -238,9 +232,8 @@ + ret = NULL; + goto cleanupAndReturn; + } +- (*env)->SetIntField(env, iaObj, ni_iaaddressID, +- ntohl(((struct sockaddr_in*)(iterator->ai_addr))->sin_addr.s_addr)); +- (*env)->SetObjectField(env, iaObj, ni_iahostID, name); ++ setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)(iterator->ai_addr))->sin_addr.s_addr)); ++ setInetAddress_hostName(env, iaObj, name); + (*env)->SetObjectArrayElement(env, ret, retLen - i -1, iaObj); + i++; + iterator = iterator->ai_next; +@@ -395,9 +388,6 @@ + static jclass ni_iacls; + static jclass ni_ia4cls; + static jmethodID ni_ia4ctrID; +-static jfieldID ni_iaaddressID; +-static jfieldID ni_iahostID; +-static jfieldID ni_iafamilyID; + static int initialized = 0; + + /* +@@ -431,9 +421,6 @@ + ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address"); + ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls); + ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V"); +- ni_iaaddressID = (*env)->GetFieldID(env, ni_iacls, "address", "I"); +- ni_iafamilyID = (*env)->GetFieldID(env, ni_iacls, "family", "I"); +- ni_iahostID = (*env)->GetFieldID(env, ni_iacls, "hostName", "Ljava/lang/String;"); + initialized = 1; + } + +@@ -502,9 +489,8 @@ + ret = NULL; + goto cleanupAndReturn; + } +- (*env)->SetIntField(env, iaObj, ni_iaaddressID, +- ntohl((*addrp)->s_addr)); +- (*env)->SetObjectField(env, iaObj, ni_iahostID, host); ++ setInetAddress_addr(env, iaObj, ntohl((*addrp)->s_addr)); ++ setInetAddress_hostName(env, iaObj, host); + (*env)->SetObjectArrayElement(env, ret, i, iaObj); + addrp++; + i++; +@@ -669,11 +655,11 @@ sizeof(struct sockaddr)); if (n < 0 && errno != EINPROGRESS ) { #ifdef __linux__ @@ -73764,7 +71620,7 @@ */ #endif /*__linux__ */ NET_ThrowNew(env, errno, "Can't send ICMP packet"); -@@ -828,11 +828,10 @@ +@@ -828,11 +814,10 @@ case EADDRNOTAVAIL: /* address is not available on the remote machine */ #ifdef __linux__ case EINVAL: @@ -73779,8 +71635,49 @@ #endif /* __linux__ */ close(fd); --- jdk/src/solaris/native/java/net/Inet6AddressImpl.c 2012-08-10 10:31:30.000000000 -0700 -+++ jdk/src/solaris/native/java/net/Inet6AddressImpl.c 2013-03-09 08:44:53.000000000 -0800 -@@ -512,11 +512,11 @@ ++++ jdk/src/solaris/native/java/net/Inet6AddressImpl.c 2013-05-05 09:38:40.000000000 -0700 +@@ -122,9 +122,6 @@ + static jclass ni_ia6cls; + static jmethodID ni_ia4ctrID; + static jmethodID ni_ia6ctrID; +-static jfieldID ni_iaaddressID; +-static jfieldID ni_iahostID; +-static jfieldID ni_iafamilyID; + static jfieldID ni_ia6ipaddressID; + static int initialized = 0; + +@@ -161,9 +158,6 @@ + ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls); + ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V"); + ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V"); +- ni_iaaddressID = (*env)->GetFieldID(env, ni_iacls, "address", "I"); +- ni_iafamilyID = (*env)->GetFieldID(env, ni_iacls, "family", "I"); +- ni_iahostID = (*env)->GetFieldID(env, ni_iacls, "hostName", "Ljava/lang/String;"); + ni_ia6ipaddressID = (*env)->GetFieldID(env, ni_ia6cls, "ipaddress", "[B"); + initialized = 1; + } +@@ -318,9 +312,8 @@ + ret = NULL; + goto cleanupAndReturn; + } +- (*env)->SetIntField(env, iaObj, ni_iaaddressID, +- ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr)); +- (*env)->SetObjectField(env, iaObj, ni_iahostID, host); ++ setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr)); ++ setInetAddress_hostName(env, iaObj, host); + (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj); + inetIndex++; + } else if (iterator->ai_family == AF_INET6) { +@@ -351,7 +344,7 @@ + (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE); + } + (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress); +- (*env)->SetObjectField(env, iaObj, ni_iahostID, host); ++ setInetAddress_hostName(env, iaObj, host); + (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj); + inet6Index++; + } +@@ -512,11 +505,11 @@ n = sendto(fd, sendbuf, plen, 0, (struct sockaddr*) him, sizeof(struct sockaddr_in6)); if (n < 0 && errno != EINPROGRESS) { #ifdef __linux__ @@ -73795,7 +71692,7 @@ */ #endif /*__linux__ */ NET_ThrowNew(env, errno, "Can't send ICMP packet"); -@@ -680,11 +680,10 @@ +@@ -680,11 +673,10 @@ case EADDRNOTAVAIL: /* address is not available on the remote machine */ #ifdef __linux__ case EINVAL: @@ -73810,7 +71707,7 @@ #endif /* __linux__ */ close(fd); --- jdk/src/solaris/native/java/net/NetworkInterface.c 2012-08-10 10:31:31.000000000 -0700 -+++ jdk/src/solaris/native/java/net/NetworkInterface.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/java/net/NetworkInterface.c 2013-05-05 09:38:40.000000000 -0700 @@ -60,14 +60,18 @@ #include <sys/param.h> #include <sys/ioctl.h> @@ -73832,7 +71729,62 @@ #include "jvm.h" #include "jni_util.h" -@@ -1289,7 +1293,11 @@ +@@ -118,8 +122,6 @@ + static jmethodID ni_ia4ctrID; + static jmethodID ni_ia6ctrID; + static jmethodID ni_ibctrID; +-static jfieldID ni_iaaddressID; +-static jfieldID ni_iafamilyID; + static jfieldID ni_ia6ipaddressID; + static jfieldID ni_ibaddressID; + static jfieldID ni_ib4broadcastID; +@@ -195,8 +197,6 @@ + ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V"); + ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V"); + ni_ibctrID = (*env)->GetMethodID(env, ni_ibcls, "<init>", "()V"); +- ni_iaaddressID = (*env)->GetFieldID(env, ni_iacls, "address", "I"); +- ni_iafamilyID = (*env)->GetFieldID(env, ni_iacls, "family", "I"); + ni_ia6ipaddressID = (*env)->GetFieldID(env, ni_ia6cls, "ipaddress", "[B"); + ni_ibaddressID = (*env)->GetFieldID(env, ni_ibcls, "address", "Ljava/net/InetAddress;"); + ni_ib4broadcastID = (*env)->GetFieldID(env, ni_ibcls, "broadcast", "Ljava/net/Inet4Address;"); +@@ -300,7 +300,7 @@ + netif *ifs, *curr; + + #ifdef AF_INET6 +- int family = ( (*env)->GetIntField(env, iaObj, ni_iafamilyID) == IPv4 ) ? AF_INET : AF_INET6; ++ int family = (getInetAddress_family(env, iaObj) == IPv4) ? AF_INET : AF_INET6; + #else + int family = AF_INET; + #endif +@@ -325,7 +325,7 @@ + if (family == addrP->family) { + if (family == AF_INET) { + int address1 = htonl(((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr); +- int address2 = (*env)->GetIntField(env, iaObj, ni_iaaddressID); ++ int address2 = getInetAddress_addr(env, iaObj); + + if (address1 == address2) { + match = JNI_TRUE; +@@ -650,7 +650,7 @@ + if (addrP->family == AF_INET) { + iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); + if (iaObj) { +- (*env)->SetIntField(env, iaObj, ni_iaaddressID, htonl(((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr)); ++ setInetAddress_addr(env, iaObj, htonl(((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr)); + } + ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); + if (ibObj) { +@@ -659,8 +659,7 @@ + jobject ia2Obj = NULL; + ia2Obj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); + if (ia2Obj) { +- (*env)->SetIntField(env, ia2Obj, ni_iaaddressID, +- htonl(((struct sockaddr_in*)addrP->brdcast)->sin_addr.s_addr)); ++ setInetAddress_addr(env, ia2Obj, htonl(((struct sockaddr_in*)addrP->brdcast)->sin_addr.s_addr)); + (*env)->SetObjectField(env, ibObj, ni_ib4broadcastID, ia2Obj); + (*env)->SetShortField(env, ibObj, ni_ib4maskID, addrP->mask); + } +@@ -1289,7 +1288,11 @@ return -1; } @@ -73845,7 +71797,7 @@ } #endif -@@ -1979,7 +1987,11 @@ +@@ -1979,7 +1982,11 @@ return -1; } @@ -73858,7 +71810,7 @@ #endif --- jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2012-08-10 10:31:31.000000000 -0700 -+++ jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2013-05-05 09:38:40.000000000 -0700 @@ -23,12 +23,12 @@ * questions. */ @@ -73896,7 +71848,80 @@ len = sizeof(struct sockaddr_in); } JVM_Connect(fd, (struct sockaddr *)&addr, len); -@@ -1350,7 +1358,7 @@ +@@ -616,14 +624,13 @@ + + iaObj = NET_SockaddrToInetAddress(env, (struct sockaddr *)&remote_addr, &port); + #ifdef AF_INET6 +- family = (*env)->GetIntField(env, iaObj, ia_familyID) == IPv4? +- AF_INET : AF_INET6; ++ family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6; + #else + family = AF_INET; + #endif + if (family == AF_INET) { /* this api can't handle IPV6 addresses */ +- int address = (*env)->GetIntField(env, iaObj, ia_addressID); +- (*env)->SetIntField(env, addressObj, ia_addressID, address); ++ int address = getInetAddress_addr(env, iaObj); ++ setInetAddress_addr(env, addressObj, address); + } + return port; + } +@@ -1170,23 +1177,18 @@ + */ + static void mcast_set_if_by_if_v4(JNIEnv *env, jobject this, int fd, jobject value) { + static jfieldID ni_addrsID; +- static jfieldID ia_addressID; + struct in_addr in; + jobjectArray addrArray; + jsize len; + jobject addr; + int i; + +- if (ni_addrsID == NULL || ia_addressID == NULL) { ++ if (ni_addrsID == NULL ) { + jclass c = (*env)->FindClass(env, "java/net/NetworkInterface"); + CHECK_NULL(c); + ni_addrsID = (*env)->GetFieldID(env, c, "addrs", + "[Ljava/net/InetAddress;"); + CHECK_NULL(ni_addrsID); +- c = (*env)->FindClass(env,"java/net/InetAddress"); +- CHECK_NULL(c); +- ia_addressID = (*env)->GetFieldID(env, c, "address", "I"); +- CHECK_NULL(ia_addressID); + } + + addrArray = (*env)->GetObjectField(env, value, ni_addrsID); +@@ -1207,8 +1209,8 @@ + */ + for (i = 0; i < len; i++) { + addr = (*env)->GetObjectArrayElement(env, addrArray, i); +- if ((*env)->GetIntField(env, addr, ia_familyID) == IPv4) { +- in.s_addr = htonl((*env)->GetIntField(env, addr, ia_addressID)); ++ if (getInetAddress_family(env, addr) == IPv4) { ++ in.s_addr = htonl(getInetAddress_addr(env, addr)); + break; + } + } +@@ -1268,17 +1270,9 @@ + * Throw exception if failed. + */ + static void mcast_set_if_by_addr_v4(JNIEnv *env, jobject this, int fd, jobject value) { +- static jfieldID ia_addressID; + struct in_addr in; + +- if (ia_addressID == NULL) { +- jclass c = (*env)->FindClass(env,"java/net/InetAddress"); +- CHECK_NULL(c); +- ia_addressID = (*env)->GetFieldID(env, c, "address", "I"); +- CHECK_NULL(ia_addressID); +- } +- +- in.s_addr = htonl( (*env)->GetIntField(env, value, ia_addressID) ); ++ in.s_addr = htonl( getInetAddress_addr(env, value) ); + + if (JVM_SetSockOpt(fd, IPPROTO_IP, IP_MULTICAST_IF, + (const char*)&in, sizeof(in)) < 0) { +@@ -1350,7 +1344,7 @@ * value is an InetAddress. */ #ifdef AF_INET6 @@ -73905,7 +71930,7 @@ if (ipv6_available()) { mcast_set_if_by_addr_v6(env, this, fd, value); } else { -@@ -1373,7 +1381,7 @@ +@@ -1373,7 +1367,7 @@ * value is a NetworkInterface. */ #ifdef AF_INET6 @@ -73914,7 +71939,7 @@ if (ipv6_available()) { mcast_set_if_by_if_v6(env, this, fd, value); } else { -@@ -1456,7 +1464,7 @@ +@@ -1456,7 +1450,7 @@ static void setMulticastLoopbackMode(JNIEnv *env, jobject this, int fd, jint opt, jobject value) { #ifdef AF_INET6 @@ -73923,7 +71948,38 @@ if (ipv6_available()) { mcast_set_loop_v6(env, this, fd, value); } else { -@@ -2030,7 +2038,7 @@ +@@ -1629,7 +1623,6 @@ + if (isIPV4) { + static jclass inet4_class; + static jmethodID inet4_ctrID; +- static jfieldID inet4_addrID; + + static jclass ni_class; + static jmethodID ni_ctrID; +@@ -1667,8 +1660,6 @@ + CHECK_NULL_RETURN(c, NULL); + inet4_ctrID = (*env)->GetMethodID(env, c, "<init>", "()V"); + CHECK_NULL_RETURN(inet4_ctrID, NULL); +- inet4_addrID = (*env)->GetFieldID(env, c, "address", "I"); +- CHECK_NULL_RETURN(inet4_addrID, NULL); + inet4_class = (*env)->NewGlobalRef(env, c); + CHECK_NULL_RETURN(inet4_class, NULL); + } +@@ -1676,10 +1667,10 @@ + CHECK_NULL_RETURN(addr, NULL); + + #ifdef __linux__ +- (*env)->SetIntField(env, addr, inet4_addrID, +- (isOldKernel ? ntohl(mreqn.imr_address.s_addr) : ntohl(in.s_addr)) ); ++ setInetAddress_addr(env, addr, (isOldKernel ? ++ ntohl(mreqn.imr_address.s_addr) : ntohl(in.s_addr))); + #else +- (*env)->SetIntField(env, addr, inet4_addrID, ntohl(in.s_addr)); ++ setInetAddress_addr(env, addr, ntohl(in.s_addr)); + #endif + + /* +@@ -2030,7 +2021,7 @@ } /* setsockopt to be correct ttl */ #ifdef AF_INET6 @@ -73932,8 +71988,72 @@ if (ipv6_available()) { setHopLimit(env, fd, ttl); } else { +@@ -2164,7 +2155,7 @@ + ipv6_join_leave = ipv6_available(); + + #ifdef __linux__ +- if ((*env)->GetIntField(env, iaObj, ia_familyID) == IPv4) { ++ if (getInetAddress_family(env, iaObj) == IPv4) { + ipv6_join_leave = JNI_FALSE; + } + #endif +@@ -2211,7 +2202,7 @@ + CHECK_NULL(ni_indexID); + } + +- mname.imr_multiaddr.s_addr = htonl((*env)->GetIntField(env, iaObj, ia_addressID)); ++ mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); + mname.imr_address.s_addr = 0; + mname.imr_ifindex = (*env)->GetIntField(env, niObj, ni_indexID); + mname_len = sizeof(struct ip_mreqn); +@@ -2229,11 +2220,11 @@ + } + addr = (*env)->GetObjectArrayElement(env, addrArray, 0); + +- mname.imr_multiaddr.s_addr = htonl((*env)->GetIntField(env, iaObj, ia_addressID)); ++ mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); + #ifdef __linux__ +- mname.imr_address.s_addr = htonl((*env)->GetIntField(env, addr, ia_addressID)); ++ mname.imr_address.s_addr = htonl(getInetAddress_addr(env, addr)); + #else +- mname.imr_interface.s_addr = htonl((*env)->GetIntField(env, addr, ia_addressID)); ++ mname.imr_interface.s_addr = htonl(getInetAddress_addr(env, addr)); + #endif + mname_len = sizeof(struct ip_mreq); + } +@@ -2272,7 +2263,7 @@ + } + } + +- mname.imr_multiaddr.s_addr = htonl((*env)->GetIntField(env, iaObj, ia_addressID)); ++ mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); + mname.imr_address.s_addr = 0 ; + mname.imr_ifindex = index; + mname_len = sizeof(struct ip_mreqn); +@@ -2302,7 +2293,7 @@ + #else + mname.imr_interface.s_addr = in.s_addr; + #endif +- mname.imr_multiaddr.s_addr = htonl((*env)->GetIntField(env, iaObj, ia_addressID)); ++ mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); + mname_len = sizeof(struct ip_mreq); + } + } +@@ -2367,10 +2358,10 @@ + jbyte caddr[16]; + jint family; + jint address; +- family = (*env)->GetIntField(env, iaObj, ia_familyID) == IPv4? AF_INET : AF_INET6; ++ family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6; + if (family == AF_INET) { /* will convert to IPv4-mapped address */ + memset((char *) caddr, 0, 16); +- address = (*env)->GetIntField(env, iaObj, ia_addressID); ++ address = getInetAddress_addr(env, iaObj); + + caddr[10] = 0xff; + caddr[11] = 0xff; --- jdk/src/solaris/native/java/net/bsd_close.c 2012-08-10 10:31:31.000000000 -0700 -+++ jdk/src/solaris/native/java/net/bsd_close.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/java/net/bsd_close.c 2013-05-05 09:38:40.000000000 -0700 @@ -345,6 +345,76 @@ * signal other than our wakeup signal. */ @@ -74018,7 +72138,7 @@ +#endif } --- jdk/src/solaris/native/java/net/net_util_md.c 2012-08-10 10:31:31.000000000 -0700 -+++ jdk/src/solaris/native/java/net/net_util_md.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/java/net/net_util_md.c 2013-05-05 09:38:40.000000000 -0700 @@ -45,6 +45,10 @@ #endif #endif @@ -74030,6 +72150,33 @@ #ifdef __solaris__ #include <sys/sockio.h> #include <stropts.h> +@@ -818,7 +822,7 @@ + NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port, struct sockaddr *him, + int *len, jboolean v4MappedAddress) { + jint family; +- family = (*env)->GetIntField(env, iaObj, ia_familyID); ++ family = getInetAddress_family(env, iaObj); + #ifdef AF_INET6 + /* needs work. 1. family 2. clean up him6 etc deallocate memory */ + if (ipv6_available() && !(family == IPv4 && v4MappedAddress == JNI_FALSE)) { +@@ -830,7 +834,7 @@ + + if (family == IPv4) { /* will convert to IPv4-mapped address */ + memset((char *) caddr, 0, 16); +- address = (*env)->GetIntField(env, iaObj, ia_addressID); ++ address = getInetAddress_addr(env, iaObj); + if (address == INADDR_ANY) { + /* we would always prefer IPv6 wildcard address + caddr[10] = 0xff; +@@ -942,7 +946,7 @@ + return -1; + } + memset((char *) him4, 0, sizeof(struct sockaddr_in)); +- address = (*env)->GetIntField(env, iaObj, ia_addressID); ++ address = getInetAddress_addr(env, iaObj); + him4->sin_port = htons((short) port); + him4->sin_addr.s_addr = (uint32_t) htonl(address); + him4->sin_family = AF_INET; @@ -1505,7 +1509,22 @@ } } @@ -74055,7 +72202,7 @@ return setsockopt(fd, level, opt, arg, len); } --- jdk/src/solaris/native/java/net/net_util_md.h 2012-08-10 10:31:31.000000000 -0700 -+++ jdk/src/solaris/native/java/net/net_util_md.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/java/net/net_util_md.h 2013-05-05 09:38:40.000000000 -0700 @@ -37,7 +37,7 @@ #endif @@ -74066,7 +72213,7 @@ extern int NET_Read(int s, void* buf, size_t len); extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags, --- jdk/src/solaris/native/java/util/TimeZone_md.c 2012-08-10 10:31:31.000000000 -0700 -+++ jdk/src/solaris/native/java/util/TimeZone_md.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/java/util/TimeZone_md.c 2013-05-05 09:38:40.000000000 -0700 @@ -123,7 +123,7 @@ return NULL; } @@ -74101,7 +72248,7 @@ -#endif /* MACOSX */ +#endif /* _ALLBSD_SOURCE */ --- jdk/src/solaris/native/sun/awt/awt_Font.c 2012-08-10 10:31:32.000000000 -0700 -+++ jdk/src/solaris/native/sun/awt/awt_Font.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/awt/awt_Font.c 2013-05-05 09:38:40.000000000 -0700 @@ -334,7 +334,7 @@ if (strcmp(style, "regular") == 0) { altstyle = "roman"; @@ -74112,7 +72259,7 @@ family = "lucida"; } --- jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c 2012-08-10 10:31:32.000000000 -0700 -+++ jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c 2013-05-05 09:38:40.000000000 -0700 @@ -123,7 +123,7 @@ */ @@ -74173,7 +72320,7 @@ return point; } --- jdk/src/solaris/native/sun/awt/awt_InputMethod.c 2012-08-10 10:31:32.000000000 -0700 -+++ jdk/src/solaris/native/sun/awt/awt_InputMethod.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/awt/awt_InputMethod.c 2013-05-05 09:38:40.000000000 -0700 @@ -67,7 +67,7 @@ XIMPreeditDrawCallbackStruct *); static void PreeditCaretCallback(XIC, XPointer, @@ -74414,7 +72561,7 @@ adjustStatusWindow(window); AWT_UNLOCK(); --- jdk/src/solaris/native/sun/awt/awt_Robot.c 2012-08-10 10:31:32.000000000 -0700 -+++ jdk/src/solaris/native/sun/awt/awt_Robot.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/awt/awt_Robot.c 2013-05-05 09:38:40.000000000 -0700 @@ -45,7 +45,7 @@ #include "wsutils.h" #include "list.h" @@ -74425,7 +72572,7 @@ #endif --- jdk/src/solaris/native/sun/awt/awt_util.h 2012-08-10 10:31:33.000000000 -0700 -+++ jdk/src/solaris/native/sun/awt/awt_util.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/awt/awt_util.h 2013-05-05 09:38:40.000000000 -0700 @@ -187,7 +187,7 @@ #ifdef __solaris__ extern Widget awt_util_getXICStatusAreaWindow(Widget w); @@ -74445,7 +72592,7 @@ Cardinal num_refs; /* Number of referencing widgets. */ Cardinal max_refs; /* Maximum length of refs array. */ --- jdk/src/solaris/native/sun/awt/awt_wm.c 2012-08-10 10:31:33.000000000 -0700 -+++ jdk/src/solaris/native/sun/awt/awt_wm.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/awt/awt_wm.c 2013-05-05 09:38:40.000000000 -0700 @@ -121,12 +121,19 @@ static Atom XA_KWM_WIN_MAXIMIZED; @@ -74544,7 +72691,7 @@ } else { --- jdk/src/solaris/native/sun/awt/awt_wm.h 2012-08-10 10:31:33.000000000 -0700 -+++ jdk/src/solaris/native/sun/awt/awt_wm.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/awt/awt_wm.h 2013-05-05 09:38:40.000000000 -0700 @@ -45,7 +45,10 @@ KDE2_WM, SAWFISH_WM, @@ -74558,7 +72705,7 @@ extern void awt_wm_init(void); --- jdk/src/solaris/native/sun/awt/extutil.h 2012-08-10 10:31:33.000000000 -0700 -+++ jdk/src/solaris/native/sun/awt/extutil.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/awt/extutil.h 2013-05-05 09:38:40.000000000 -0700 @@ -58,7 +58,7 @@ */ /* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */ @@ -74575,7 +72722,7 @@ -#endif /* __linux__ || MACOSX */ +#endif /* __linux__ || _ALLBSD_SOURCE */ --- jdk/src/solaris/native/sun/awt/fontpath.c 2012-08-10 10:31:33.000000000 -0700 -+++ jdk/src/solaris/native/sun/awt/fontpath.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/awt/fontpath.c 2013-05-05 09:38:40.000000000 -0700 @@ -23,7 +23,7 @@ * questions. */ @@ -74654,7 +72801,7 @@ #endif #endif /* !HEADLESS */ --- jdk/src/solaris/native/sun/awt/robot_common.c 2012-08-10 10:31:35.000000000 -0700 -+++ jdk/src/solaris/native/sun/awt/robot_common.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/awt/robot_common.c 2013-05-05 09:38:40.000000000 -0700 @@ -27,7 +27,7 @@ #error This file should not be included in headless library #endif @@ -74665,7 +72812,7 @@ #endif --- jdk/src/solaris/native/sun/awt/splashscreen/splashscreen_config.h 2012-08-10 10:31:35.000000000 -0700 -+++ jdk/src/solaris/native/sun/awt/splashscreen/splashscreen_config.h 2013-01-16 00:07:20.000000000 -0800 ++++ jdk/src/solaris/native/sun/awt/splashscreen/splashscreen_config.h 2013-05-05 09:38:40.000000000 -0700 @@ -32,7 +32,7 @@ #include <X11/Xutil.h> #include <X11/extensions/shape.h> @@ -74676,7 +72823,7 @@ #include <signal.h> #include <inttypes.h> --- jdk/src/solaris/native/sun/java2d/j2d_md.h 2012-08-10 10:31:35.000000000 -0700 -+++ jdk/src/solaris/native/sun/java2d/j2d_md.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/java2d/j2d_md.h 2013-05-05 09:38:40.000000000 -0700 @@ -28,9 +28,9 @@ #include <sys/types.h> @@ -74690,7 +72837,7 @@ #endif /* __linux__ || MACOSX */ --- jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c 2012-08-10 10:31:36.000000000 -0700 -+++ jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c 2013-05-05 09:38:40.000000000 -0700 @@ -804,7 +804,7 @@ static int initialized; static int usevis = JNI_TRUE; @@ -74701,7 +72848,7 @@ #else # define ULTRA_CHIP "sun4u" --- jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c 2012-08-10 10:31:37.000000000 -0700 -+++ jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c 2013-05-05 09:38:40.000000000 -0700 @@ -46,8 +46,6 @@ #include "sun_nio_ch_DatagramChannelImpl.h" @@ -74757,7 +72904,7 @@ if (len > MAX_PACKET_LEN) { len = MAX_PACKET_LEN; --- jdk/src/solaris/native/sun/nio/ch/DatagramDispatcher.c 2012-08-10 10:31:37.000000000 -0700 -+++ jdk/src/solaris/native/sun/nio/ch/DatagramDispatcher.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/nio/ch/DatagramDispatcher.c 2013-05-05 09:38:40.000000000 -0700 @@ -36,7 +36,6 @@ #include <sys/socket.h> @@ -74823,7 +72970,7 @@ result = sendmsg(fd, &m, 0); if (result < 0 && errno == ECONNREFUSED) { --- jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c 2012-08-10 10:31:37.000000000 -0700 -+++ jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c 2013-05-05 09:38:40.000000000 -0700 @@ -201,7 +201,7 @@ return IOS_THROWN; } @@ -74843,7 +72990,7 @@ if (numBytes > 0) --- jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c 2012-08-10 10:31:37.000000000 -0700 -+++ jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c 2013-05-05 09:38:40.000000000 -0700 @@ -200,7 +200,7 @@ } lockResult = fcntl(fd, cmd, &fl); @@ -74876,7 +73023,7 @@ JNU_ThrowIOExceptionWithLastError(env, "Release failed"); } --- jdk/src/solaris/native/sun/nio/ch/Sctp.h 2012-08-10 10:31:37.000000000 -0700 -+++ jdk/src/solaris/native/sun/nio/ch/Sctp.h 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/nio/ch/Sctp.h 2013-05-05 09:38:40.000000000 -0700 @@ -320,8 +320,20 @@ typedef int sctp_peeloff_func(int sock, sctp_assoc_t id); @@ -74917,7 +73064,7 @@ #endif /* !SUN_NIO_CH_SCTP_H */ --- jdk/src/solaris/native/sun/nio/ch/SctpChannelImpl.c 2012-08-10 10:31:37.000000000 -0700 -+++ jdk/src/solaris/native/sun/nio/ch/SctpChannelImpl.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/nio/ch/SctpChannelImpl.c 2013-05-05 09:38:40.000000000 -0700 @@ -67,8 +67,6 @@ static jmethodID spc_ctrID; /* sun.nio.ch.SctpPeerAddressChanged.<init> */ static jclass ss_class; /* sun.nio.ch.SctpShutdown */ @@ -74980,7 +73127,7 @@ (struct sockaddr *)&sa, &sa_len, JNI_TRUE) != 0) { --- jdk/src/solaris/native/sun/nio/ch/SctpNet.c 2012-08-10 10:31:37.000000000 -0700 -+++ jdk/src/solaris/native/sun/nio/ch/SctpNet.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/nio/ch/SctpNet.c 2013-05-05 09:38:40.000000000 -0700 @@ -58,6 +58,7 @@ */ jboolean loadSocketExtensionFuncs @@ -74998,7 +73145,7 @@ funcsLoaded = JNI_TRUE; return JNI_TRUE; --- jdk/src/solaris/native/sun/nio/fs/genSolarisConstants.c 2012-08-10 10:31:38.000000000 -0700 -+++ jdk/src/solaris/native/sun/nio/fs/genSolarisConstants.c 2013-01-16 00:07:20.000000000 -0800 ++++ jdk/src/solaris/native/sun/nio/fs/genSolarisConstants.c 2013-05-05 09:38:40.000000000 -0700 @@ -27,7 +27,7 @@ #include <errno.h> #include <unistd.h> @@ -75009,7 +73156,7 @@ /** --- jdk/src/solaris/native/sun/nio/fs/genUnixConstants.c 2012-08-10 10:31:38.000000000 -0700 -+++ jdk/src/solaris/native/sun/nio/fs/genUnixConstants.c 2013-03-09 08:44:53.000000000 -0800 ++++ jdk/src/solaris/native/sun/nio/fs/genUnixConstants.c 2013-05-05 09:38:40.000000000 -0700 @@ -26,7 +26,7 @@ #include <stdio.h> #include <errno.h> @@ -75033,7 +73180,7 @@ // mode masks emitX("S_IAMB", --- jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c 2012-08-10 10:31:38.000000000 -0700 -+++ jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c 2013-05-05 09:38:40.000000000 -0700 @@ -36,6 +36,11 @@ #include "j2secmod.h" @@ -75069,7 +73216,7 @@ dprintf2("-handle: %u (0X%X)\n", hModule, hModule); --- jdk/src/solaris/native/sun/xawt/XWindow.c 2012-08-10 10:31:38.000000000 -0700 -+++ jdk/src/solaris/native/sun/xawt/XWindow.c 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/src/solaris/native/sun/xawt/XWindow.c 2013-05-05 09:38:40.000000000 -0700 @@ -867,7 +867,7 @@ { KeySym originalKeysym = *keysym; @@ -75080,7 +73227,7 @@ * not to echo on JTextField when the NumLock is on. The * keysyms will be 0, because the last parameter 2 is not defined. --- jdk/src/solaris/transport/socket/socket_md.c 2012-08-10 10:31:39.000000000 -0700 -+++ jdk/src/solaris/transport/socket/socket_md.c 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/src/solaris/transport/socket/socket_md.c 2013-05-05 09:38:40.000000000 -0700 @@ -35,7 +35,8 @@ #include <sys/time.h> #ifdef __solaris__ @@ -75103,10 +73250,10 @@ dbgsysTlsAlloc() { pthread_key_t key; --- jdk/src/windows/bin/cmdtoargs.c 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/src/windows/bin/cmdtoargs.c 2013-01-16 08:58:12.000000000 -0800 -@@ -0,0 +1,598 @@ ++++ jdk/src/windows/bin/cmdtoargs.c 2013-05-05 09:38:40.000000000 -0700 +@@ -0,0 +1,609 @@ +/* -+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it @@ -75211,6 +73358,11 @@ + + case ' ': + case '\t': ++ if (prev == '\\') { ++ for (i = 0 ; i < slashes; i++) { ++ *dest++ = prev; ++ } ++ } + if (quotes % 2 == 1) { + *dest++ = ch; + } else { @@ -75698,13 +73850,19 @@ + // v->disable(); + vectors[i++] = v; + ++ v= new Vector(argv[0], "a b\\\\ d"); ++ v->add("a", FALSE); ++ v->add("b\\\\", FALSE); ++ v->add("d", FALSE); ++ vectors[i++] = v; ++ + dotest(vectors); + printf("All tests pass [%d]\n", i); + doexit(0); +} +#endif /* IDE_STANDALONE */ --- jdk/src/windows/bin/java_md.c 2012-08-10 10:31:39.000000000 -0700 -+++ jdk/src/windows/bin/java_md.c 2013-03-09 08:44:50.000000000 -0800 ++++ jdk/src/windows/bin/java_md.c 2013-05-05 09:38:40.000000000 -0700 @@ -101,7 +101,6 @@ /* funtion in awt.dll (src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp) */ #define D3D_PRELOAD_FUNC "preloadD3D" @@ -75882,8 +74040,167 @@ + JLI_MemFree(nargv); + return outArray; +} +--- jdk/src/windows/classes/java/lang/ProcessImpl.java 2012-08-10 10:31:40.000000000 -0700 ++++ jdk/src/windows/classes/java/lang/ProcessImpl.java 2013-05-05 09:38:40.000000000 -0700 +@@ -144,6 +144,88 @@ + + } + ++ // We guarantee the only command file execution for implicit [cmd.exe] run. ++ // http://technet.microsoft.com/en-us/library/bb490954.aspx ++ private static final char CMD_BAT_ESCAPE[] = {' ', '\t', '<', '>', '&', '|', '^'}; ++ private static final char WIN32_EXECUTABLE_ESCAPE[] = {' ', '\t', '<', '>'}; ++ ++ private static boolean isQuoted(boolean noQuotesInside, String arg, ++ String errorMessage) { ++ int lastPos = arg.length() - 1; ++ if (lastPos >=1 && arg.charAt(0) == '"' && arg.charAt(lastPos) == '"') { ++ // The argument has already been quoted. ++ if (noQuotesInside) { ++ if (arg.indexOf('"', 1) != lastPos) { ++ // There is ["] inside. ++ throw new IllegalArgumentException(errorMessage); ++ } ++ } ++ return true; ++ } ++ if (noQuotesInside) { ++ if (arg.indexOf('"') >= 0) { ++ // There is ["] inside. ++ throw new IllegalArgumentException(errorMessage); ++ } ++ } ++ return false; ++ } ++ ++ private static boolean needsEscaping(boolean isCmdFile, String arg) { ++ // Switch off MS heuristic for internal ["]. ++ // Please, use the explicit [cmd.exe] call ++ // if you need the internal ["]. ++ // Example: "cmd.exe", "/C", "Extended_MS_Syntax" ++ ++ // For [.exe] or [.com] file the unpaired/internal ["] ++ // in the argument is not a problem. ++ boolean argIsQuoted = isQuoted(isCmdFile, arg, ++ "Argument has embedded quote, use the explicit CMD.EXE call."); ++ ++ if (!argIsQuoted) { ++ char testEscape[] = isCmdFile ++ ? CMD_BAT_ESCAPE ++ : WIN32_EXECUTABLE_ESCAPE; ++ for (int i = 0; i < testEscape.length; ++i) { ++ if (arg.indexOf(testEscape[i]) >= 0) { ++ return true; ++ } ++ } ++ } ++ return false; ++ } ++ ++ private static String getExecutablePath(String path) ++ throws IOException ++ { ++ boolean pathIsQuoted = isQuoted(true, path, ++ "Executable name has embedded quote, split the arguments"); ++ ++ // Win32 CreateProcess requires path to be normalized ++ File fileToRun = new File(pathIsQuoted ++ ? path.substring(1, path.length() - 1) ++ : path); ++ ++ // From the [CreateProcess] function documentation: ++ // ++ // "If the file name does not contain an extension, .exe is appended. ++ // Therefore, if the file name extension is .com, this parameter ++ // must include the .com extension. If the file name ends in ++ // a period (.) with no extension, or if the file name contains a path, ++ // .exe is not appended." ++ // ++ // "If the file name !does not contain a directory path!, ++ // the system searches for the executable file in the following ++ // sequence:..." ++ // ++ // In practice ANY non-existent path is extended by [.exe] extension ++ // in the [CreateProcess] funcion with the only exception: ++ // the path ends by (.) ++ ++ return fileToRun.getPath(); ++ } ++ ++ + private long handle = 0; + private OutputStream stdin_stream; + private InputStream stdout_stream; +@@ -156,30 +238,47 @@ + final boolean redirectErrorStream) + throws IOException + { +- // Win32 CreateProcess requires cmd[0] to be normalized +- cmd[0] = new File(cmd[0]).getPath(); ++ // The [executablePath] is not quoted for any case. ++ String executablePath = getExecutablePath(cmd[0]); ++ ++ // We need to extend the argument verification procedure ++ // to guarantee the only command file execution for implicit [cmd.exe] ++ // run. ++ String upPath = executablePath.toUpperCase(); ++ boolean isCmdFile = (upPath.endsWith(".CMD") || upPath.endsWith(".BAT")); + + StringBuilder cmdbuf = new StringBuilder(80); +- for (int i = 0; i < cmd.length; i++) { +- if (i > 0) { +- cmdbuf.append(' '); +- } ++ ++ // Quotation protects from interpretation of the [path] argument as ++ // start of longer path with spaces. Quotation has no influence to ++ // [.exe] extension heuristic. ++ cmdbuf.append('"'); ++ cmdbuf.append(executablePath); ++ cmdbuf.append('"'); ++ ++ for (int i = 1; i < cmd.length; i++) { ++ cmdbuf.append(' '); + String s = cmd[i]; +- if (s.indexOf(' ') >= 0 || s.indexOf('\t') >= 0) { +- if (s.charAt(0) != '"') { +- cmdbuf.append('"'); +- cmdbuf.append(s); +- if (s.endsWith("\\")) { +- cmdbuf.append("\\"); +- } +- cmdbuf.append('"'); +- } else if (s.endsWith("\"")) { +- /* The argument has already been quoted. */ +- cmdbuf.append(s); +- } else { +- /* Unmatched quote for the argument. */ +- throw new IllegalArgumentException(); ++ if (needsEscaping(isCmdFile, s)) { ++ cmdbuf.append('"'); ++ cmdbuf.append(s); ++ ++ // The code protects the [java.exe] and console command line ++ // parser, that interprets the [\"] combination as an escape ++ // sequence for the ["] char. ++ // http://msdn.microsoft.com/en-us/library/17w5ykft.aspx ++ // ++ // If the argument is an FS path, doubling of the tail [\] ++ // char is not a problem for non-console applications. ++ // ++ // The [\"] sequence is not an escape sequence for the [cmd.exe] ++ // command line parser. The case of the [""] tail escape ++ // sequence could not be realized due to the argument validation ++ // procedure. ++ if (!isCmdFile && s.endsWith("\\")) { ++ cmdbuf.append('\\'); + } ++ cmdbuf.append('"'); + } else { + cmdbuf.append(s); + } --- jdk/src/windows/classes/sun/awt/windows/WCanvasPeer.java 2012-08-10 10:31:41.000000000 -0700 -+++ jdk/src/windows/classes/sun/awt/windows/WCanvasPeer.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/src/windows/classes/sun/awt/windows/WCanvasPeer.java 2013-05-05 09:38:40.000000000 -0700 @@ -27,7 +27,6 @@ import java.awt.*; import java.awt.peer.*; @@ -75893,7 +74210,7 @@ import sun.awt.Win32GraphicsDevice; import sun.awt.PaintEventDispatcher; --- jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java 2012-08-10 10:31:41.000000000 -0700 -+++ jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java 2013-03-09 08:44:50.000000000 -0800 ++++ jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java 2013-05-05 09:38:40.000000000 -0700 @@ -491,14 +491,15 @@ try { replaceSurfaceData(); @@ -75923,7 +74240,7 @@ dispose(); } --- jdk/src/windows/classes/sun/awt/windows/WEmbeddedFrame.java 2012-08-10 10:31:41.000000000 -0700 -+++ jdk/src/windows/classes/sun/awt/windows/WEmbeddedFrame.java 2013-03-09 08:44:50.000000000 -0800 ++++ jdk/src/windows/classes/sun/awt/windows/WEmbeddedFrame.java 2013-05-05 09:38:40.000000000 -0700 @@ -29,12 +29,9 @@ import java.awt.*; import java.awt.event.*; @@ -75956,8 +74273,26 @@ } } +--- jdk/src/windows/classes/sun/awt/windows/WFileDialogPeer.java 2012-08-10 10:31:41.000000000 -0700 ++++ jdk/src/windows/classes/sun/awt/windows/WFileDialogPeer.java 2013-05-05 09:38:40.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -237,7 +237,7 @@ + + // unused methods. Overridden to disable this functionality as + // it requires HWND which is not available for FileDialog +- public void setAlwaysOnTop(boolean value) {} ++ public void updateAlwaysOnTopState() {} + public void setDirectory(String dir) {} + public void setFile(String file) {} + public void setTitle(String title) {} --- jdk/src/windows/classes/sun/awt/windows/WMouseDragGestureRecognizer.java 2012-08-10 10:31:42.000000000 -0700 -+++ jdk/src/windows/classes/sun/awt/windows/WMouseDragGestureRecognizer.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/src/windows/classes/sun/awt/windows/WMouseDragGestureRecognizer.java 2013-05-05 09:38:40.000000000 -0700 @@ -39,8 +39,6 @@ import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; @@ -75968,7 +74303,7 @@ /** --- jdk/src/windows/classes/sun/awt/windows/WPopupMenuPeer.java 2012-08-10 10:31:42.000000000 -0700 -+++ jdk/src/windows/classes/sun/awt/windows/WPopupMenuPeer.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/src/windows/classes/sun/awt/windows/WPopupMenuPeer.java 2013-05-05 09:38:40.000000000 -0700 @@ -26,9 +26,7 @@ import java.awt.*; @@ -75979,8 +74314,33 @@ import sun.awt.AWTAccessor; public class WPopupMenuPeer extends WMenuPeer implements PopupMenuPeer { +--- jdk/src/windows/classes/sun/awt/windows/WPrintDialogPeer.java 2012-08-10 10:31:42.000000000 -0700 ++++ jdk/src/windows/classes/sun/awt/windows/WPrintDialogPeer.java 2013-05-05 09:38:40.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -117,7 +117,7 @@ + // unused methods. Overridden to disable this functionality as + // it requires HWND which is not available for FileDialog + void initialize() {} +- public void setAlwaysOnTop(boolean b) {} ++ public void updateAlwaysOnTopState() {} + public void setResizable(boolean resizable) {} + public void hide() {} + public void enable() {} --- jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java 2012-08-10 10:31:42.000000000 -0700 -+++ jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java 2013-05-05 09:38:40.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it @@ -31,8 +31,6 @@ import java.beans.*; @@ -75990,8 +74350,19 @@ import java.util.*; import java.util.List; import sun.util.logging.PlatformLogger; +@@ -134,6 +132,10 @@ + } + } + ++ public void updateAlwaysOnTopState() { ++ setAlwaysOnTop(((Window)target).isAlwaysOnTop()); ++ } ++ + public void updateFocusableWindowState() { + setFocusableWindow(((Window)target).isFocusableWindow()); + } --- jdk/src/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.java 2012-08-10 10:31:45.000000000 -0700 -+++ jdk/src/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/src/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.java 2013-05-05 09:38:40.000000000 -0700 @@ -45,15 +45,25 @@ private long ctxHandle; @@ -76050,7 +74421,7 @@ class B64Encoder extends BASE64Encoder { --- jdk/src/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java 2012-08-10 10:31:45.000000000 -0700 -+++ jdk/src/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/src/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java 2013-05-05 09:38:40.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. @@ -76079,9 +74450,112 @@ return false; } } +--- jdk/src/windows/native/java/net/Inet4AddressImpl.c 2012-08-10 10:31:48.000000000 -0700 ++++ jdk/src/windows/native/java/net/Inet4AddressImpl.c 2013-05-05 09:38:41.000000000 -0700 +@@ -114,9 +114,6 @@ + static jclass ni_iacls; + static jclass ni_ia4cls; + static jmethodID ni_ia4ctrID; +-static jfieldID ni_iaaddressID; +-static jfieldID ni_iahostID; +-static jfieldID ni_iafamilyID; + static int initialized = 0; + + /* +@@ -149,9 +146,6 @@ + ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address"); + ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls); + ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V"); +- ni_iaaddressID = (*env)->GetFieldID(env, ni_iacls, "address", "I"); +- ni_iafamilyID = (*env)->GetFieldID(env, ni_iacls, "family", "I"); +- ni_iahostID = (*env)->GetFieldID(env, ni_iacls, "hostName", "Ljava/lang/String;"); + initialized = 1; + } + +@@ -208,8 +202,7 @@ + ret = NULL; + goto cleanupAndReturn; + } +- (*env)->SetIntField(env, iaObj, ni_iaaddressID, +- ntohl(address)); ++ setInetAddress_addr(env, iaObj, ntohl(address)); + (*env)->SetObjectArrayElement(env, ret, 0, iaObj); + JNU_ReleaseStringPlatformChars(env, host, hostname); + return ret; +@@ -242,9 +235,8 @@ + ret = NULL; + goto cleanupAndReturn; + } +- (*env)->SetIntField(env, iaObj, ni_iaaddressID, +- ntohl((*addrp)->s_addr)); +- (*env)->SetObjectField(env, iaObj, ni_iahostID, host); ++ setInetAddress_addr(env, iaObj, ntohl((*addrp)->s_addr)); ++ setInetAddress_hostName(env, iaObj, host); + (*env)->SetObjectArrayElement(env, ret, i, iaObj); + addrp++; + i++; +--- jdk/src/windows/native/java/net/Inet6AddressImpl.c 2012-08-10 10:31:48.000000000 -0700 ++++ jdk/src/windows/native/java/net/Inet6AddressImpl.c 2013-05-05 09:38:41.000000000 -0700 +@@ -77,9 +77,6 @@ + static jclass ni_ia6cls; + static jmethodID ni_ia4ctrID; + static jmethodID ni_ia6ctrID; +-static jfieldID ni_iaaddressID; +-static jfieldID ni_iahostID; +-static jfieldID ni_iafamilyID; + static jfieldID ni_ia6ipaddressID; + static int initialized = 0; + +@@ -104,9 +101,6 @@ + ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls); + ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V"); + ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V"); +- ni_iaaddressID = (*env)->GetFieldID(env, ni_iacls, "address", "I"); +- ni_iafamilyID = (*env)->GetFieldID(env, ni_iacls, "family", "I"); +- ni_iahostID = (*env)->GetFieldID(env, ni_iacls, "hostName", "Ljava/lang/String;"); + ni_ia6ipaddressID = (*env)->GetFieldID(env, ni_ia6cls, "ipaddress", "[B"); + initialized = 1; + } +@@ -243,9 +237,8 @@ + ret = NULL; + goto cleanupAndReturn; + } +- (*env)->SetIntField(env, iaObj, ni_iaaddressID, +- ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr)); +- (*env)->SetObjectField(env, iaObj, ni_iahostID, host); ++ setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr)); ++ setInetAddress_hostName(env, iaObj, host); + (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj); + inetIndex ++; + } else if (iterator->ai_family == AF_INET6) { +@@ -269,7 +262,7 @@ + (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE); + } + (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress); +- (*env)->SetObjectField(env, iaObj, ni_iahostID, host); ++ setInetAddress_hostName(env, iaObj, host); + (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj); + inet6Index ++; + } --- jdk/src/windows/native/java/net/NetworkInterface.c 2012-08-10 10:31:48.000000000 -0700 -+++ jdk/src/windows/native/java/net/NetworkInterface.c 2013-01-16 00:07:21.000000000 -0800 -@@ -504,7 +504,8 @@ ++++ jdk/src/windows/native/java/net/NetworkInterface.c 2013-05-05 09:38:41.000000000 -0700 +@@ -66,7 +66,6 @@ + jfieldID ni_displayNameID; /* NetworkInterface.displayName */ + jfieldID ni_childsID; /* NetworkInterface.childs */ + jclass ni_iacls; /* InetAddress */ +-jfieldID ni_iaAddr; /* InetAddress.address */ + + jclass ni_ia4cls; /* Inet4Address */ + jmethodID ni_ia4Ctor; /* Inet4Address() */ +@@ -445,7 +444,6 @@ + + ni_iacls = (*env)->FindClass(env, "java/net/InetAddress"); + ni_iacls = (*env)->NewGlobalRef(env, ni_iacls); +- ni_iaAddr = (*env)->GetFieldID(env, ni_iacls, "address", "I"); + + ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address"); + ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls); +@@ -504,7 +502,8 @@ */ if (netaddrCount < 0) { netaddrCount = enumAddresses_win(env, ifs, &netaddrP); @@ -76091,9 +74565,55 @@ return NULL; } } +@@ -533,7 +532,7 @@ + } + /* default ctor will set family to AF_INET */ + +- (*env)->SetIntField(env, iaObj, ni_iaAddr, ntohl(addrs->addr.him4.sin_addr.s_addr)); ++ setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr)); + if (addrs->mask != -1) { + ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); + if (ibObj == NULL) { +@@ -546,8 +545,7 @@ + free_netaddr(netaddrP); + return NULL; + } +- (*env)->SetIntField(env, ia2Obj, ni_iaAddr, +- ntohl(addrs->brdcast.him4.sin_addr.s_addr)); ++ setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr)); + (*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj); + (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask); + (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); +@@ -701,7 +699,7 @@ + (JNIEnv *env, jclass cls, jobject iaObj) + { + netif *ifList, *curr; +- jint addr = (*env)->GetIntField(env, iaObj, ni_iaAddr); ++ jint addr = getInetAddress_addr(env, iaObj); + jobject netifObj = NULL; + + // Retained for now to support IPv4 only stack, java.net.preferIPv4Stack +--- jdk/src/windows/native/java/net/NetworkInterface.h 2012-08-10 10:31:48.000000000 -0700 ++++ jdk/src/windows/native/java/net/NetworkInterface.h 2013-05-05 09:38:41.000000000 -0700 +@@ -71,7 +71,6 @@ + extern jfieldID ni_childsID; /* NetworkInterface.childs */ + + extern jclass ni_iacls; /* InetAddress */ +-extern jfieldID ni_iaAddr; /* InetAddress.address */ + + extern jclass ni_ia4cls; /* Inet4Address */ + extern jmethodID ni_ia4Ctor; /* Inet4Address() */ --- jdk/src/windows/native/java/net/NetworkInterface_winXP.c 2012-08-10 10:31:48.000000000 -0700 -+++ jdk/src/windows/native/java/net/NetworkInterface_winXP.c 2013-01-16 00:07:21.000000000 -0800 -@@ -194,7 +194,8 @@ ++++ jdk/src/windows/native/java/net/NetworkInterface_winXP.c 2013-05-05 09:38:41.000000000 -0700 +@@ -33,6 +33,7 @@ + #include "jni_util.h" + + #include "NetworkInterface.h" ++#include "net_util.h" + + /* + * Windows implementation of the java.net.NetworkInterface native methods. +@@ -194,7 +195,8 @@ while (curr != NULL) { netaddr *netaddrP; ret = enumAddresses_win(env, curr, &netaddrP); @@ -76103,7 +74623,7 @@ return -1; } curr->addrs = netaddrP; -@@ -448,7 +449,8 @@ +@@ -448,7 +450,8 @@ */ if (netaddrCount < 0) { netaddrCount = enumAddresses_win(env, ifs, &netaddrP); @@ -76113,8 +74633,257 @@ return NULL; } } +@@ -477,7 +480,7 @@ + } + /* default ctor will set family to AF_INET */ + +- (*env)->SetIntField(env, iaObj, ni_iaAddr, ntohl(addrs->addr.him4.sin_addr.s_addr)); ++ setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr)); + + ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); + if (ibObj == NULL) { +@@ -490,8 +493,7 @@ + free_netaddr(netaddrP); + return NULL; + } +- (*env)->SetIntField(env, ia2Obj, ni_iaAddr, +- ntohl(addrs->brdcast.him4.sin_addr.s_addr)); ++ setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr)); + (*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj); + (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask); + (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); +--- jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c 2012-08-10 10:31:48.000000000 -0700 ++++ jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c 2013-05-05 09:38:41.000000000 -0700 +@@ -432,7 +432,7 @@ + int lcladdrlen; + int address; + +- family = (*env)->GetIntField(env, addressObj, ia_familyID); ++ family = getInetAddress_family(env, addressObj); + if (family == IPv6 && !ipv6_supported) { + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", + "Protocol family not supported"); +@@ -452,7 +452,7 @@ + JNU_ThrowNullPointerException(env, "argument address"); + return; + } else { +- address = (*env)->GetIntField(env, addressObj, ia_addressID); ++ address = getInetAddress_addr(env, addressObj); + } + + if (NET_InetAddressToSockaddr(env, addressObj, port, (struct sockaddr *)&lcladdr, &lcladdrlen, JNI_FALSE) != 0) { +@@ -552,9 +552,9 @@ + return; + } + +- addr = (*env)->GetIntField(env, address, ia_addressID); ++ addr = getInetAddress_addr(env, address); + +- family = (*env)->GetIntField(env, address, ia_familyID); ++ family = getInetAddress_family(env, address); + if (family == IPv6 && !ipv6_supported) { + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", + "Protocol family not supported"); +@@ -670,7 +670,7 @@ + return; + } + +- family = (*env)->GetIntField(env, iaObj, ia_familyID); ++ family = getInetAddress_family(env, iaObj); + if (family == IPv4) { + fdObj = (*env)->GetObjectField(env, this, pdsi_fdID); + } else { +@@ -714,7 +714,7 @@ + if (!w2k_or_later) { /* avoid this check on Win 2K or better. Does not work with IPv6. + * Check is not necessary on these OSes */ + if (connected) { +- address = (*env)->GetIntField(env, iaObj, ia_addressID); ++ address = getInetAddress_addr(env, iaObj); + } else { + address = ntohl(rmtaddr.him4.sin_addr.s_addr); + } +@@ -823,7 +823,7 @@ + if (IS_NULL(addressObj)) { + JNU_ThrowNullPointerException(env, "Null address in peek()"); + } else { +- address = (*env)->GetIntField(env, addressObj, ia_addressID); ++ address = getInetAddress_addr(env, addressObj); + /* We only handle IPv4 for now. Will support IPv6 once its in the os */ + family = AF_INET; + } +@@ -905,9 +905,8 @@ + JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException", 0); + return 0; + } +- (*env)->SetIntField(env, addressObj, ia_addressID, +- ntohl(remote_addr.sin_addr.s_addr)); +- (*env)->SetIntField(env, addressObj, ia_familyID, IPv4); ++ setInetAddress_addr(env, addressObj, ntohl(remote_addr.sin_addr.s_addr)); ++ setInetAddress_family(env, addressObj, IPv4); + + /* return port */ + return ntohs(remote_addr.sin_port); +@@ -1574,21 +1573,16 @@ + { + jobjectArray addrArray; + static jfieldID ni_addrsID=0; +- static jfieldID ia_familyID=0; + jsize len; + jobject addr; + int i; + +- if (ni_addrsID == NULL || ia_familyID == NULL) { ++ if (ni_addrsID == NULL ) { + jclass c = (*env)->FindClass(env, "java/net/NetworkInterface"); + CHECK_NULL_RETURN (c, -1); + ni_addrsID = (*env)->GetFieldID(env, c, "addrs", + "[Ljava/net/InetAddress;"); + CHECK_NULL_RETURN (ni_addrsID, -1); +- c = (*env)->FindClass(env,"java/net/InetAddress"); +- CHECK_NULL_RETURN (c, -1); +- ia_familyID = (*env)->GetFieldID(env, c, "family", "I"); +- CHECK_NULL_RETURN (ia_familyID, -1); + } + + addrArray = (*env)->GetObjectField(env, nif, ni_addrsID); +@@ -1606,7 +1600,7 @@ + for (i=0; i<len; i++) { + int fam; + addr = (*env)->GetObjectArrayElement(env, addrArray, i); +- fam = (*env)->GetIntField(env, addr, ia_familyID); ++ fam = getInetAddress_family(env, addr); + if (fam == family) { + *iaddr = addr; + return 0; +@@ -1618,20 +1612,13 @@ + static int getInet4AddrFromIf (JNIEnv *env, jobject nif, struct in_addr *iaddr) + { + jobject addr; +- static jfieldID ia_addressID; + + int ret = getInetAddrFromIf (env, IPv4, nif, &addr); + if (ret == -1) { + return -1; + } + +- if (ia_addressID == 0) { +- jclass c = (*env)->FindClass(env,"java/net/InetAddress"); +- CHECK_NULL_RETURN (c, -1); +- ia_addressID = (*env)->GetFieldID(env, c, "address", "I"); +- CHECK_NULL_RETURN (ia_addressID, -1); +- } +- iaddr->s_addr = htonl((*env)->GetIntField(env, addr, ia_addressID)); ++ iaddr->s_addr = htonl(getInetAddress_addr(env, addr)); + return 0; + } + +@@ -1706,17 +1693,9 @@ + } + opt = java_net_SocketOptions_IP_MULTICAST_IF2; + } else { +- static jfieldID ia_addressID; + struct in_addr in; + +- if (ia_addressID == NULL) { +- jclass c = (*env)->FindClass(env,"java/net/InetAddress"); +- CHECK_NULL(c); +- ia_addressID = (*env)->GetFieldID(env, c, "address", "I"); +- CHECK_NULL(ia_addressID); +- } +- +- in.s_addr = htonl((*env)->GetIntField(env, value, ia_addressID)); ++ in.s_addr = htonl(getInetAddress_addr(env, value)); + + if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, + (const char*)&in, sizeof(in)) < 0) { +@@ -1945,7 +1924,6 @@ + if (isIPV4) { + static jclass inet4_class; + static jmethodID inet4_ctrID; +- static jfieldID inet4_addrID; + + static jclass ni_class; + static jmethodID ni_ctrID; +@@ -1975,15 +1953,13 @@ + CHECK_NULL_RETURN(c, NULL); + inet4_ctrID = (*env)->GetMethodID(env, c, "<init>", "()V"); + CHECK_NULL_RETURN(inet4_ctrID, NULL); +- inet4_addrID = (*env)->GetFieldID(env, c, "address", "I"); +- CHECK_NULL_RETURN(inet4_addrID, NULL); + inet4_class = (*env)->NewGlobalRef(env, c); + CHECK_NULL_RETURN(inet4_class, NULL); + } + addr = (*env)->NewObject(env, inet4_class, inet4_ctrID, 0); + CHECK_NULL_RETURN(addr, NULL); + +- (*env)->SetIntField(env, addr, inet4_addrID, ntohl(in.s_addr)); ++ setInetAddress_addr(env, addr, ntohl(in.s_addr)); + + /* + * For IP_MULTICAST_IF return InetAddress +--- jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c 2012-08-10 10:31:48.000000000 -0700 ++++ jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c 2013-05-05 09:38:41.000000000 -0700 +@@ -412,7 +412,7 @@ + fdObj = (*env)->GetObjectField(env, this, psi_fdID); + fd1Obj = (*env)->GetObjectField(env, this, psi_fd1ID); + +- family = (*env)->GetIntField(env, iaObj, ia_familyID); ++ family = getInetAddress_family(env, iaObj); + + if (family == IPv6 && !ipv6_supported) { + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", +@@ -724,9 +724,8 @@ + return; + } + +- (*env)->SetIntField(env, socketAddressObj, ia_addressID, +- ntohl(him.him4.sin_addr.s_addr)); +- (*env)->SetIntField(env, socketAddressObj, ia_familyID, IPv4); ++ setInetAddress_addr(env, socketAddressObj, ntohl(him.him4.sin_addr.s_addr)); ++ setInetAddress_family(env, socketAddressObj, IPv4); + (*env)->SetObjectField(env, socket, psi_addressID, socketAddressObj); + } else { + jbyteArray addr; +@@ -754,7 +753,7 @@ + } + addr = (*env)->GetObjectField (env, socketAddressObj, ia6_ipaddressID); + (*env)->SetByteArrayRegion (env, addr, 0, 16, (const char *)&him.him6.sin6_addr); +- (*env)->SetIntField(env, socketAddressObj, ia_familyID, IPv6); ++ setInetAddress_family(env, socketAddressObj, IPv6); + (*env)->SetIntField(env, socketAddressObj, ia6_scopeidID, him.him6.sin6_scope_id); + } + /* fields common to AF_INET and AF_INET6 */ +--- jdk/src/windows/native/java/net/net_util_md.c 2012-08-10 10:31:48.000000000 -0700 ++++ jdk/src/windows/native/java/net/net_util_md.c 2013-05-05 09:38:41.000000000 -0700 +@@ -804,7 +804,7 @@ + NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port, struct sockaddr *him, + int *len, jboolean v4MappedAddress) { + jint family, iafam; +- iafam = (*env)->GetIntField(env, iaObj, ia_familyID); ++ iafam = getInetAddress_family(env, iaObj); + family = (iafam == IPv4)? AF_INET : AF_INET6; + if (ipv6_available() && !(family == AF_INET && v4MappedAddress == JNI_FALSE)) { + struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him; +@@ -815,7 +815,7 @@ + + if (family == AF_INET) { /* will convert to IPv4-mapped address */ + memset((char *) caddr, 0, 16); +- address = (*env)->GetIntField(env, iaObj, ia_addressID); ++ address = getInetAddress_addr(env, iaObj); + if (address == INADDR_ANY) { + /* we would always prefer IPv6 wildcard address + caddr[10] = 0xff; +@@ -854,7 +854,7 @@ + return -1; + } + memset((char *) him4, 0, sizeof(struct sockaddr_in)); +- address = (int)(*env)->GetIntField(env, iaObj, ia_addressID); ++ address = getInetAddress_addr(env, iaObj); + him4->sin_port = htons((short) port); + him4->sin_addr.s_addr = (u_long) htonl(address); + him4->sin_family = AF_INET; --- jdk/src/windows/native/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.c 2012-08-10 10:31:52.000000000 -0700 -+++ jdk/src/windows/native/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.c 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/src/windows/native/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.c 2013-05-05 09:38:41.000000000 -0700 @@ -41,18 +41,20 @@ #define SECURITY_WIN32 #include "sspi.h" @@ -76205,7 +74974,7 @@ + (*env)->SetBooleanField(env, status, status_seqCompleteID, JNI_TRUE); } --- jdk/src/windows/native/sun/nio/ch/DatagramChannelImpl.c 2012-08-10 10:31:52.000000000 -0700 -+++ jdk/src/windows/native/sun/nio/ch/DatagramChannelImpl.c 2013-03-09 08:44:50.000000000 -0800 ++++ jdk/src/windows/native/sun/nio/ch/DatagramChannelImpl.c 2013-05-05 09:38:41.000000000 -0700 @@ -34,8 +34,6 @@ #include "net_util.h" #include <winsock2.h> @@ -76253,7 +75022,7 @@ if (NET_InetAddressToSockaddr(env, destAddress, destPort, (struct sockaddr *)&sa, --- jdk/src/windows/native/sun/windows/awt_Component.cpp 2012-08-10 10:31:55.000000000 -0700 -+++ jdk/src/windows/native/sun/windows/awt_Component.cpp 2013-01-16 00:07:21.000000000 -0800 ++++ jdk/src/windows/native/sun/windows/awt_Component.cpp 2013-05-05 09:38:41.000000000 -0700 @@ -558,8 +558,6 @@ m_hwnd = hwnd; @@ -76264,7 +75033,7 @@ (jint)JAWT_LOCK_BOUNDS_CHANGED | (jint)JAWT_LOCK_CLIP_CHANGED); --- jdk/src/windows/native/sun/windows/awt_TextComponent.cpp 2012-08-10 10:31:58.000000000 -0700 -+++ jdk/src/windows/native/sun/windows/awt_TextComponent.cpp 2013-03-09 08:44:50.000000000 -0800 ++++ jdk/src/windows/native/sun/windows/awt_TextComponent.cpp 2013-05-05 09:38:41.000000000 -0700 @@ -53,14 +53,12 @@ * AwtTextComponent fields */ @@ -76313,7 +75082,7 @@ CATCH_BAD_ALLOC; } --- jdk/src/windows/native/sun/windows/awt_TextComponent.h 2012-08-10 10:31:58.000000000 -0700 -+++ jdk/src/windows/native/sun/windows/awt_TextComponent.h 2013-03-09 08:44:50.000000000 -0800 ++++ jdk/src/windows/native/sun/windows/awt_TextComponent.h 2013-05-05 09:38:41.000000000 -0700 @@ -42,8 +42,7 @@ class AwtTextComponent : public AwtComponent { @@ -76325,7 +75094,7 @@ AwtTextComponent(); --- jdk/src/windows/native/sun/windows/awt_Window.cpp 2012-08-10 10:31:58.000000000 -0700 -+++ jdk/src/windows/native/sun/windows/awt_Window.cpp 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/src/windows/native/sun/windows/awt_Window.cpp 2013-05-05 09:38:41.000000000 -0700 @@ -1477,7 +1477,7 @@ if (wClassEvent == NULL) { if (env->PushLocalFrame(1) < 0) @@ -76378,7 +75147,7 @@ HWND proxyContainerHWnd = GetProxyToplevelContainer(); HWND proxyHWnd = GetProxyFocusOwner(); --- jdk/test/Makefile 2012-08-10 10:31:59.000000000 -0700 -+++ jdk/test/Makefile 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/Makefile 2013-05-05 09:38:49.000000000 -0700 @@ -79,6 +79,11 @@ endif OS_VERSION := $(shell $(UNAME) -r) @@ -76391,17 +75160,84 @@ ifeq ($(UNAME_S), Darwin) OS_NAME = macosx OS_ARCH := $(shell $(UNAME) -m) -@@ -512,7 +517,7 @@ +@@ -512,7 +517,8 @@ JDK_ALL_TARGETS += jdk_misc jdk_misc: $(call TestDirs, \ demo/jvmti demo/zipfs javax/naming javax/script \ - javax/smartcardio com/sun/jndi com/sun/xml sun/misc) -+ javax/smartcardio javax/xml/soap com/sun/jndi com/sun/xml sun/misc) ++ javax/smartcardio javax/xml com/sun/jndi com/sun/org/glassfish \ ++ com/sun/xml sun/misc) $(call RunAgentvmBatch) # Stable samevm testruns (minus items from PROBLEM_LIST) +@@ -560,7 +566,7 @@ + # Using samevm has serious problems with these tests + JDK_ALL_TARGETS += jdk_security2 + jdk_security2: $(call TestDirs, javax/crypto com/sun/crypto) +- $(call RunOthervmBatch) ++ $(call RunAgentvmBatch) + + # Stable othervm testruns (minus items from PROBLEM_LIST) + # Using samevm has serious problems with these tests +@@ -570,7 +576,7 @@ + com/sun/org/apache/xml/internal/security \ + com/oracle/security/ucrypto) + $(call SharedLibraryPermissions,sun/security) +- $(call RunOthervmBatch) ++ $(call RunAgentvmBatch) + + # All security tests + jdk_security: jdk_security1 jdk_security2 jdk_security3 +@@ -834,17 +840,17 @@ + # The jtjck.jar utility to use to run the tests + JTJCK_JAR = $(JCK_HOME)/lib/jtjck.jar + JTJCK_JAVA_ARGS = -XX:MaxPermSize=256m -Xmx512m +-JTJCK_OPTIONS = -headless -v ++JTJCK_OPTIONS = -headless -v + + # Default tests to run + ifndef JCK_COMPILER_TESTS +- JCK_COMPILER_TESTS = ++ JCK_COMPILER_TESTS = + endif + ifndef JCK_RUNTIME_TESTS +- JCK_RUNTIME_TESTS = ++ JCK_RUNTIME_TESTS = + endif + ifndef JCK_DEVTOOLS_TESTS +- JCK_DEVTOOLS_TESTS = ++ JCK_DEVTOOLS_TESTS = + endif + + # Generic rule used to run jck tests +@@ -870,14 +876,14 @@ + _generic_jck_tests + + # JCK7 runtime tests +-jck7runtime: ++jck7runtime: + $(MAKE) UNIQUE_DIR=$@ \ + JCK_HOME=$(JCK7RUNTIME_HOME) \ + TESTDIRS="$(JCK_RUNTIME_TESTS)" \ + _generic_jck_tests + + # JCK7 devtools tests +-jck7devtools: ++jck7devtools: + $(MAKE) UNIQUE_DIR=$@ \ + JCK_HOME=$(JCK7DEVTOOLS_HOME) \ + TESTDIRS="$(JCK_DEVTOOLS_TESTS)" \ --- jdk/test/ProblemList.txt 2012-08-10 10:31:59.000000000 -0700 -+++ jdk/test/ProblemList.txt 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/ProblemList.txt 2013-05-05 09:38:49.000000000 -0700 +@@ -1,6 +1,6 @@ +-########################################################################### ++########################################################################## + # +-# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. + # 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,83 +114,10 @@ # jdk_awt @@ -76486,6 +75322,15 @@ ############################################################################ # jdk_lang +@@ -290,7 +217,7 @@ + # Windows X64, java.lang.IllegalStateException + javax/management/monitor/AttributeArbitraryDataTypeTest.java generic-all + +-# 7149181 ++# 7149181 + sun/management/jmxremote/startstop/JMXStartStopTest.sh generic-all + + ############################################################################ @@ -304,95 +231,29 @@ # 6988950 demo/jvmti/compiledMethodLoad/CompiledMethodLoadTest.java generic-all @@ -76602,17 +75447,286 @@ ############################################################################ -@@ -708,15 +569,12 @@ - sun/security/tools/keytool/importreadall.sh solaris-all - sun/security/tools/keytool/selfissued.sh solaris-all +@@ -436,6 +297,11 @@ + # 6962637 + java/io/File/MaxPathLength.java windows-all --############################################################################ ++# 7162111 - these tests need to be updated to run headless ++java/io/Serializable/resolveClass/deserializeButton/run.sh macosx-all ++java/io/Serializable/serialver/classpath/run.sh macosx-all ++java/io/Serializable/serialver/nested/run.sh macosx-all ++ + ############################################################################ + + # jdk_nio +@@ -458,153 +324,36 @@ + + # jdk_rmi + +-# Port already in use, fails on sparc, othervm +-java/rmi/reliability/benchmark/runRmiBench.sh generic-all +- +-# Already in use port issues? othervm solaris +-java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java generic-all +-java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java generic-all +- +-java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java generic-all +-java/rmi/transport/dgcDeadLock/TestImpl_Stub.java generic-all +- +-# Address already in use, othervm mode, solaris +-java/rmi/activation/Activatable/elucidateNoSuchMethod/ElucidateNoSuchMethod.java generic-all +-java/rmi/activation/Activatable/forceLogSnapshot/ForceLogSnapshot.java generic-all +- +-# Registry already running on port, solaris +-java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java generic-all +- +-# Fails on Linux 32 and 64bit -server?, impl not garbage collected??? +-java/rmi/transport/pinLastArguments/PinLastArguments.java generic-all +- + # 7146541 + java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java linux-all + +-# Times out on solaris sparc +-java/rmi/server/RemoteServer/AddrInUse.java generic-all ++# 7190106 ++java/rmi/reliability/benchmark/runRmiBench.sh generic-all + +-# Connection error on Windows i586 -server +-# Also connection errors in othervm on Solaris 10 sparc, same port??? +-sun/rmi/transport/tcp/DeadCachedConnection.java generic-all +- +-# Connection errors in othervm on Solaris 10 sparc, same port??? +-java/rmi/activation/Activatable/checkActivateRef/CheckActivateRef.java generic-all +-java/rmi/activation/Activatable/checkAnnotations/CheckAnnotations.java generic-all +-java/rmi/activation/Activatable/checkImplClassLoader/CheckImplClassLoader.java generic-all +-java/rmi/activation/Activatable/checkRegisterInLog/CheckRegisterInLog.java generic-all +-java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java generic-all +-java/rmi/activation/Activatable/downloadParameterClass/DownloadParameterClass.java generic-all +-java/rmi/activation/Activatable/extLoadedImpl/ext.sh generic-all +-java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java generic-all +-java/rmi/activation/Activatable/lookupActivationSystem/LookupActivationSystem.java generic-all +-java/rmi/activation/Activatable/nestedActivate/NestedActivate.java generic-all +-java/rmi/activation/Activatable/restartCrashedService/RestartCrashedService.java generic-all +-java/rmi/activation/Activatable/restartLatecomer/RestartLatecomer.java generic-all +-java/rmi/activation/Activatable/shutdownGracefully/ShutdownGracefully.java generic-all +-java/rmi/activation/Activatable/unregisterInactive/UnregisterInactive.java generic-all +-java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java generic-all +-java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java generic-all +-java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java generic-all +-java/rmi/reliability/juicer/AppleUserImpl.java generic-all +-java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java generic-all +-java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java generic-all +-java/rmi/transport/handshakeTimeout/HandshakeTimeout.java generic-all +-java/rmi/activation/Activatable/restartService/RestartService.java generic-all +-java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java generic-all +-java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java generic-all +-java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java generic-all +-java/rmi/activation/CommandEnvironment/SetChildEnv.java generic-all +-java/rmi/registry/classPathCodebase/ClassPathCodebase.java generic-all +-java/rmi/registry/reexport/Reexport.java generic-all +-java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java generic-all +-java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java generic-all +-java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java generic-all +-java/rmi/server/useCustomRef/UseCustomRef.java generic-all +-java/rmi/transport/checkFQDN/CheckFQDN.java generic-all +-java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java generic-all +-java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java generic-all +-java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java generic-all +-java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java generic-all ++# 7191877 ++java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java generic-all + +-# 7142596 +-java/rmi/transport/httpSocket/HttpSocketTest.java macosx-all ++# 7195095 ++sun/rmi/transport/proxy/EagerHttpFallback.java generic-all + + ############################################################################ + + # jdk_security + +-# Filed 6986868 +-sun/security/tools/jarsigner/crl.sh generic-all +- +-# Filed 6951285, not sure how often this fails, last was Linux 64bit Fedora 9 +-sun/security/krb5/auto/MaxRetries.java generic-all +- +-# Filed 6950930, fails on windows 32bit c1 and windows 64bit +-sun/security/krb5/auto/IgnoreChannelBinding.java windows-all +- +-# Filed 6950931, failing on all windows systems +-sun/security/tools/jarsigner/crl.sh windows-all +- +-# Filed 6950929, only seemed to fail on solaris sparcv9 (-d64) +-# Failed on Linux -server 32bit too, making generic +-sun/security/krb5/auto/BadKdc4.java generic-all +- + # Failing on Solaris i586, 3/9/2010, not a -samevm issue (jdk_security3) + sun/security/pkcs11/Secmod/AddPrivateKey.java solaris-i586 + sun/security/pkcs11/ec/ReadCertificates.java solaris-i586 + sun/security/pkcs11/ec/ReadPKCS12.java solaris-i586 + sun/security/pkcs11/ec/TestCurves.java solaris-i586 + sun/security/pkcs11/ec/TestECDSA.java solaris-i586 +-sun/security/pkcs11/ec/TestECGenSpec.java solaris-i586 +-sun/security/pkcs11/ec/TestKeyFactory.java solaris-i586 +- +-# Unknown problem, could be a jtreg -samevm issue? +-# Error while cleaning up threads after test +-java/security/Security/SynchronizedAccess.java generic-all +- +-# Failing on Solaris X64 (-d64 -server) with: +-# GSSException: Failure unspecified at GSS-API level +-# (Mechanism level: Specified version of key is not available (44)) +-sun/security/krb5/auto/BasicKrb5Test.java generic-all +- +-# Solaris X86 failures, readjar.jks: No such file or directory +-sun/security/tools/keytool/readjar.sh generic-all +- +-# Fails with -ea -esa, but only on Solaris sparc? Suspect it is timing out +-sun/security/tools/keytool/standard.sh generic-all +- +-# Fails on Solaris 10 X64, address already in use +-sun/security/krb5/auto/HttpNegotiateServer.java generic-all +- +-# Fails on almost all platforms +-# java.lang.UnsupportedClassVersionError: SerialTest : +-# Unsupported major.minor version 51.0 +-# at java.lang.ClassLoader.defineClass1(Native Method) +-sun/security/util/Oid/S11N.sh generic-all +- +-# Fails on Fedora 9 32bit +-# GSSException: Failure unspecified at GSS-API level (Mechanism level: +-# Invalid argument (400) - Cannot find key of appropriate type to decrypt +-# AP REP - DES CBC mode with MD5) +-# at sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:778) +-sun/security/krb5/auto/NonMutualSpnego.java generic-all +- +-# Fails on Solaris 10 sparc, GSSException: Failure unspecified at GSS-API level +-# Also fails on Windows 2000 similar way +-sun/security/krb5/auto/ok-as-delegate.sh generic-all +- +-# Fails on Windows 2000, GSSException: Failure unspecified at GSS-API level +-# (Mechanism level: Request is a replay (34)) +-sun/security/krb5/auto/ok-as-delegate-xrealm.sh generic-all +- +-# Fails on Windows 2000, ExceptionInInitializerError +-sun/security/mscapi/AccessKeyStore.sh generic-all ++#sun/security/pkcs11/ec/TestECGenSpec.java solaris-i586 ++#sun/security/pkcs11/ec/TestKeyFactory.java solaris-i586 ++sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java generic-all + +-# Fails on Solaris 10, KrbException: Additional pre-authentication required (25) +-sun/security/krb5/auto/basic.sh generic-all ++# Directly references PKCS11 class ++sun/security/pkcs11/Provider/Absolute.java windows-x64 + +-# Fails on Fedora 9 64bit, PKCS11Exception: CKR_DEVICE_ERROR ++# Fails on Fedora 9/Ubuntu 10.04 64bit, PKCS11Exception: CKR_DEVICE_ERROR + sun/security/pkcs11/KeyAgreement/TestDH.java generic-all + + # Run too slow on Solaris 10 sparc +@@ -613,18 +362,10 @@ + sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/ServerTimeout.java solaris-sparc + sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/ReadTimeout.java solaris-sparc + sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh solaris-sparc +-sun/security/tools/keytool/AltProviderPath.sh solaris-sparc + + # Solaris 10 sparc, passed/failed confusion? java.security.ProviderException: update() failed + sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java generic-all + +-# Seem really slow on Solaris sparc, being excluded just for timing reasons +-sun/security/tools/jarsigner/AlgOptions.sh solaris-sparc +-sun/security/tools/jarsigner/nameclash.sh solaris-sparc +-sun/security/krb5/auto/basic.sh solaris-sparc +-sun/security/provider/PolicyFile/getinstance/getinstance.sh solaris-sparc +-sun/security/tools/jarsigner/samename.sh solaris-sparc +- + # Timed out, Solaris 10 64bit sparcv9 + com/sun/crypto/provider/Cipher/DES/PaddingTest.java generic-all + +@@ -635,88 +376,25 @@ + # Solaris sparc and sparcv9 -server, timeout + sun/security/ssl/javax/net/ssl/NewAPIs/SessionTimeOutTests.java generic-all + +-# Failed on solaris 10 sparc, othervm mode, "js.jks: No such file or directory" +-# Also, cannot verify signature on solaris i586 -server +-sun/security/tools/jarsigner/concise_jarsigner.sh generic-all +- + # Various failures on Linux Fedora 9 X64, othervm mode + sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/TestAllSuites.java generic-all + sun/security/ssl/sanity/ciphersuites/CheckCipherSuites.java generic-all +-sun/security/tools/jarsigner/oldsig.sh generic-all + + # Various failures on Linux Fedora 9 X64, othervm mode + sun/security/ssl/sanity/interop/ClientJSSEServerJSSE.java generic-all + +-# Linux i586 -server, buffer too short to hold shared secret? +-com/sun/crypto/provider/KeyAgreement/DHKeyAgreement2.java generic-all +- +-# Solaris sparcv9: Failed to parse input emptysubject.jks: No such file or directory +-sun/security/tools/keytool/emptysubject.sh generic-all +- +-# Timeout on solaris-sparcv9 or exception thrown +-com/sun/crypto/provider/Cipher/RSA/TestOAEP_KAT.java solaris-all +- +-# Leaving file open: SerialVersion.current, windows samevm +-java/security/BasicPermission/SerialVersion.java generic-all +- +-# Solaris 11 i586, these all fail with samevm, need to be othervm??? +-java/security/BasicPermission/NullOrEmptyName.java generic-all +- +-# Suspect missing close() on file PermClass.current, windows samevm cascade +-java/security/BasicPermission/PermClass.java generic-all +- + # Solaris 11 i586, these all fail with samevm, need to be othervm??? +-java/security/KeyPairGenerator/Failover.java generic-all +-java/security/Provider/DefaultPKCS11.java generic-all + java/security/SecureClassLoader/DefineClassByteBuffer.java generic-all +-java/security/SecureRandom/GetAlgorithm.java generic-all +-java/security/Security/removing/RemoveProviders.java generic-all +-java/security/Signature/ByteBuffers.java generic-all +-java/security/Signature/NONEwithRSA.java generic-all +-java/security/Signature/SignWithOutputBuffer.java generic-all +-java/security/Signature/TestInitSignWithMyOwnRandom.java generic-all +-java/security/UnresolvedPermission/AccessorMethods.java generic-all +-java/security/UnresolvedPermission/Equals.java generic-all +- +-# Fails on OpenSolaris, missing classes, slow on Solaris sparc +-sun/security/ec/TestEC.java generic-all +- +-# Problems with windows x64 +-sun/security/mscapi/IsSunMSCAPIAvailable.sh windows-x64 +-sun/security/mscapi/RSAEncryptDecrypt.sh windows-x64 +- +-# Exception in test solaris-sparc -client -server, no windows +-sun/security/pkcs11/KeyGenerator/TestKeyGenerator.java solaris-all +- +-# Solaris sparc client, fails to compile? +-sun/security/pkcs11/KeyStore/SecretKeysBasic.sh solaris-all +- +-# Fails on OpenSolaris java.net.BindException: Address already in use +-sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java generic-all +- +-# Timeout on solaris-sparcv9 or ArrayIndexOutOfBoundsException? +-sun/security/rsa/TestKeyPairGeneratorLength.java solaris-all +-sun/security/rsa/TestSignatures.java solaris-all + + # Timeout on solaris-sparc and i586 and x64, -client and -server + sun/security/ssl/com/sun/net/ssl/internal/ssl/InputRecord/InterruptedIO.java solaris-all + +-# Do not seem to run on windows machines? dll missing? +-sun/security/tools/jarsigner/emptymanifest.sh windows-all +- +-# Files does not exist or no encoding? solaris-sparcv9 +-sun/security/tools/keytool/importreadall.sh solaris-all +-sun/security/tools/keytool/selfissued.sh solaris-all +# 7147060 +com/sun/org/apache/xml/internal/security/transforms/ClassLoaderTest.java generic-all --# jdk_swing (not using samevm) -+############################################################################ + ############################################################################ +-# jdk_swing (not using samevm) +- -# Fails on solaris 11 i586, with othervm -javax/swing/JFileChooser/6570445/bug6570445.java generic-all -javax/swing/JFileChooser/6738668/bug6738668.java generic-all @@ -76622,7 +75736,7 @@ ############################################################################ -@@ -729,6 +587,9 @@ +@@ -729,6 +407,9 @@ # jdk_tools @@ -76632,33 +75746,233 @@ # Filed 6952105 com/sun/jdi/SuspendThreadTest.java generic-all -@@ -752,6 +613,13 @@ - sun/tools/jrunscript/jrunscript-fTest.sh macosx-all - sun/tools/jrunscript/jrunscriptTest.sh macosx-all +@@ -745,12 +426,19 @@ + sun/jvmstat/monitor/MonitoredVm/CR6672135.java generic-all + # 7162111 +-sun/tools/jrunscript/jrunscript-DTest.sh macosx-all +-sun/tools/jrunscript/jrunscript-argsTest.sh macosx-all +-sun/tools/jrunscript/jrunscript-cpTest.sh macosx-all +-sun/tools/jrunscript/jrunscript-eTest.sh macosx-all +-sun/tools/jrunscript/jrunscript-fTest.sh macosx-all +-sun/tools/jrunscript/jrunscriptTest.sh macosx-all ++sun/tools/jrunscript/jrunscript-DTest.sh macosx-all ++sun/tools/jrunscript/jrunscript-argsTest.sh macosx-all ++sun/tools/jrunscript/jrunscript-cpTest.sh macosx-all ++sun/tools/jrunscript/jrunscript-eTest.sh macosx-all ++sun/tools/jrunscript/jrunscript-fTest.sh macosx-all ++sun/tools/jrunscript/jrunscriptTest.sh macosx-all ++ +# 8001118 +sun/tools/jcmd/jcmd-f.sh generic-all +sun/tools/jcmd/jcmd-help-help.sh generic-all + +# 7175775 +sun/tools/jinfo/Basic.sh macosx-all -+ + ############################################################################ - # jdk_util -@@ -785,6 +653,10 @@ +@@ -784,7 +472,11 @@ + java/util/concurrent/locks/Lock/TimedAcquireLeak.java generic-all # 7162111 - java/util/ResourceBundle/Control/Bug6530694.java macosx-all -+java/util/logging/LoggingDeadlock4.java macosx-all +-java/util/ResourceBundle/Control/Bug6530694.java macosx-all ++java/util/ResourceBundle/Control/Bug6530694.java macosx-all ++java/util/logging/LoggingDeadlock4.java macosx-all + +# 7041639, Solaris DSA keypair generation bug +java/util/TimeZone/TimeZoneDatePermissionCheck.sh solaris-all ############################################################################ +--- jdk/test/TEST.ROOT 2012-08-10 10:31:59.000000000 -0700 ++++ jdk/test/TEST.ROOT 2013-05-05 09:38:49.000000000 -0700 +@@ -4,3 +4,9 @@ + + # The list of keywords supported in the entire test suite + keys=2d dnd i18n ++ ++# Tests that must run in othervm mode ++othervm.dirs=java/awt java/beans java/rmi javax/accessibility javax/imageio javax/sound javax/print javax/management com/sun/awt sun/awt sun/java2d sun/pisces sun/rmi ++ ++# Tests that cannot run concurrently ++exclusiveAccess.dirs=java/rmi/Naming java/util/prefs sun/management/jmxremote sun/tools/jstatd sun/security/mscapi +--- jdk/test/com/sun/crypto/provider/Cipher/DES/Sealtest.java 2012-08-10 10:32:00.000000000 -0700 ++++ jdk/test/com/sun/crypto/provider/Cipher/DES/Sealtest.java 2013-05-05 09:38:48.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,7 @@ + + /* + * @test +- * @bug 0000000 ++ * @bug 0000000 7055362 + * @summary Sealtest + * @author Jan Luehe + */ +@@ -54,14 +54,16 @@ + SealedObject sealed = new SealedObject(kp.getPrivate(), c); + + // serialize +- FileOutputStream fos = new FileOutputStream("sealed"); +- ObjectOutputStream oos = new ObjectOutputStream(fos); +- oos.writeObject(sealed); ++ try (FileOutputStream fos = new FileOutputStream("sealed"); ++ ObjectOutputStream oos = new ObjectOutputStream(fos)) { ++ oos.writeObject(sealed); ++ } + + // deserialize +- FileInputStream fis = new FileInputStream("sealed"); +- ObjectInputStream ois = new ObjectInputStream(fis); +- sealed = (SealedObject)ois.readObject(); ++ try (FileInputStream fis = new FileInputStream("sealed"); ++ ObjectInputStream ois = new ObjectInputStream(fis)) { ++ sealed = (SealedObject)ois.readObject(); ++ } + + System.out.println(sealed.getAlgorithm()); + +--- jdk/test/com/sun/crypto/provider/Cipher/RSA/TestOAEP_KAT.java 2012-08-10 10:32:01.000000000 -0700 ++++ jdk/test/com/sun/crypto/provider/Cipher/RSA/TestOAEP_KAT.java 2013-05-05 09:38:48.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,7 @@ + + /* + * @test +- * @bug 4894151 ++ * @bug 4894151 7055362 + * @summary known answer test for OAEP encryption + * @author Andreas Sterbenz + */ +@@ -62,60 +62,62 @@ + System.out.println("Testing provider " + provider.getName() + "..."); + Cipher c = Cipher.getInstance("RSA/ECB/OAEPwithSHA1andMGF1Padding", provider); + KeyFactory kf = KeyFactory.getInstance("RSA", kfProvider); +- InputStream in = new FileInputStream(new File(BASE, "oaep-vect.txt")); +- BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF8")); +- while (true) { +- String line = reader.readLine(); +- if (line == null) { +- break; +- } +- line = line.trim(); +- if (line.length() == 0) { +- continue; +- } +- if (line.equals("# RSA modulus n:")) { +- n = parseNumber(reader); +- } else if (line.equals("# RSA public exponent e:")) { +- e = parseNumber(reader); +- } else if (line.equals("# RSA private exponent d:")) { +- d = parseNumber(reader); +- } else if (line.equals("# Prime p:")) { +- p = parseNumber(reader); +- } else if (line.equals("# Prime q:")) { +- q = parseNumber(reader); +- } else if (line.equals("# p's CRT exponent dP:")) { +- pe = parseNumber(reader); +- } else if (line.equals("# q's CRT exponent dQ:")) { +- qe = parseNumber(reader); +- } else if (line.equals("# CRT coefficient qInv:")) { +- coeff = parseNumber(reader); +- } else if (line.equals("# Message to be encrypted:")) { +- plainText = parseBytes(reader); +- } else if (line.equals("# Seed:")) { +- seed = parseBytes(reader); +- } else if (line.equals("# Encryption:")) { +- cipherText = parseBytes(reader); +- // do encryption test first +- KeySpec pubSpec = new RSAPublicKeySpec(n, e); +- PublicKey pubKey = kf.generatePublic(pubSpec); +- c.init(Cipher.ENCRYPT_MODE, pubKey, new MyRandom(seed)); +- cipherText2 = c.doFinal(plainText); +- if (Arrays.equals(cipherText2, cipherText) == false) { +- throw new Exception("Encryption mismatch"); ++ try (InputStream in = new FileInputStream(new File(BASE, "oaep-vect.txt")); ++ BufferedReader reader = ++ new BufferedReader(new InputStreamReader(in, "UTF8"))) { ++ while (true) { ++ String line = reader.readLine(); ++ if (line == null) { ++ break; ++ } ++ line = line.trim(); ++ if (line.length() == 0) { ++ continue; + } +- // followed by decryption test +- KeySpec privSpec = new RSAPrivateCrtKeySpec(n, e, d, p, q, pe, qe, coeff); +- PrivateKey privKey = kf.generatePrivate(privSpec); +- c.init(Cipher.DECRYPT_MODE, privKey); +- byte[] dec = c.doFinal(cipherText); +- if (Arrays.equals(plainText, dec) == false) { +- throw new Exception("Decryption mismatch"); ++ if (line.equals("# RSA modulus n:")) { ++ n = parseNumber(reader); ++ } else if (line.equals("# RSA public exponent e:")) { ++ e = parseNumber(reader); ++ } else if (line.equals("# RSA private exponent d:")) { ++ d = parseNumber(reader); ++ } else if (line.equals("# Prime p:")) { ++ p = parseNumber(reader); ++ } else if (line.equals("# Prime q:")) { ++ q = parseNumber(reader); ++ } else if (line.equals("# p's CRT exponent dP:")) { ++ pe = parseNumber(reader); ++ } else if (line.equals("# q's CRT exponent dQ:")) { ++ qe = parseNumber(reader); ++ } else if (line.equals("# CRT coefficient qInv:")) { ++ coeff = parseNumber(reader); ++ } else if (line.equals("# Message to be encrypted:")) { ++ plainText = parseBytes(reader); ++ } else if (line.equals("# Seed:")) { ++ seed = parseBytes(reader); ++ } else if (line.equals("# Encryption:")) { ++ cipherText = parseBytes(reader); ++ // do encryption test first ++ KeySpec pubSpec = new RSAPublicKeySpec(n, e); ++ PublicKey pubKey = kf.generatePublic(pubSpec); ++ c.init(Cipher.ENCRYPT_MODE, pubKey, new MyRandom(seed)); ++ cipherText2 = c.doFinal(plainText); ++ if (Arrays.equals(cipherText2, cipherText) == false) { ++ throw new Exception("Encryption mismatch"); ++ } ++ // followed by decryption test ++ KeySpec privSpec = new RSAPrivateCrtKeySpec(n, e, d, p, q, pe, qe, coeff); ++ PrivateKey privKey = kf.generatePrivate(privSpec); ++ c.init(Cipher.DECRYPT_MODE, privKey); ++ byte[] dec = c.doFinal(cipherText); ++ if (Arrays.equals(plainText, dec) == false) { ++ throw new Exception("Decryption mismatch"); ++ } ++ } else if (line.startsWith("# ------------------------------")) { ++ // ignore, do not print ++ } else { ++ // unknown line (comment), print ++ System.out.println(": " + line); + } +- } else if (line.startsWith("# ------------------------------")) { +- // ignore, do not print +- } else { +- // unknown line (comment), print +- System.out.println(": " + line); + } + } + long stop = System.currentTimeMillis(); --- jdk/test/com/sun/jdi/ImmutableResourceTest.sh 2012-08-10 10:32:04.000000000 -0700 -+++ jdk/test/com/sun/jdi/ImmutableResourceTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/com/sun/jdi/ImmutableResourceTest.sh 2013-05-05 09:38:48.000000000 -0700 @@ -56,7 +56,7 @@ OS=`uname -s` @@ -76669,7 +75983,7 @@ ;; --- jdk/test/com/sun/jdi/JITDebug.sh 2012-08-10 10:32:04.000000000 -0700 -+++ jdk/test/com/sun/jdi/JITDebug.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/com/sun/jdi/JITDebug.sh 2013-05-05 09:38:48.000000000 -0700 @@ -63,7 +63,7 @@ OS=`uname -s` export TRANSPORT_METHOD @@ -76680,7 +75994,7 @@ TRANSPORT_METHOD=dt_socket ;; --- jdk/test/com/sun/jdi/PrivateTransportTest.sh 2012-08-10 10:32:05.000000000 -0700 -+++ jdk/test/com/sun/jdi/PrivateTransportTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/com/sun/jdi/PrivateTransportTest.sh 2013-05-05 09:38:48.000000000 -0700 @@ -123,7 +123,7 @@ esac libloc=${jreloc}/lib/${libarch} @@ -76691,8 +76005,32 @@ libloc=`dirname ${xx}` ;; --- jdk/test/com/sun/jdi/ShellScaffold.sh 2012-08-10 10:32:06.000000000 -0700 -+++ jdk/test/com/sun/jdi/ShellScaffold.sh 2013-03-09 08:44:54.000000000 -0800 -@@ -292,7 +292,7 @@ ++++ jdk/test/com/sun/jdi/ShellScaffold.sh 2013-05-05 09:38:48.000000000 -0700 +@@ -250,6 +250,7 @@ + isCygwin= + case "$osname" in + Windows* | CYGWIN*) ++ devnull=NUL + if [ "$osname" = Windows_98 -o "$osname" = Windows_ME ]; then + isWin98=1 + debuggeeKeyword='we_cant_kill_debuggees_on_win98' +@@ -259,6 +260,7 @@ + case "$osname" in + CYGWIN*) + isCygwin=1 ++ devnull=/dev/null + ;; + esac + +@@ -269,7 +271,6 @@ + transport=dt_socket + address= + fi +- devnull=NUL + baseArgs="$baseArgs -XX:-ShowMessageBoxOnError" + # jtreg puts \\s in TESTCLASSES and some uses, eg. echo + # treat them as control chars on mks (eg \t is tab) +@@ -292,7 +293,7 @@ psCmd=ps jstack=jstack.exe ;; @@ -76702,7 +76040,7 @@ address= devnull=/dev/null --- jdk/test/com/sun/jdi/Solaris32AndSolaris64Test.sh 2012-08-10 10:32:06.000000000 -0700 -+++ jdk/test/com/sun/jdi/Solaris32AndSolaris64Test.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/com/sun/jdi/Solaris32AndSolaris64Test.sh 2013-05-05 09:38:48.000000000 -0700 @@ -112,7 +112,7 @@ fi ;; @@ -76713,7 +76051,7 @@ ;; --- jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh 2012-08-10 10:32:07.000000000 -0700 -+++ jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh 2013-05-05 09:38:48.000000000 -0700 @@ -45,7 +45,7 @@ OS=`uname -s` @@ -76723,8 +76061,117 @@ PS=":" ;; Windows* | CYGWIN*) +--- jdk/test/com/sun/jndi/rmi/registry/RegistryContext/ContextWithNullProperties.java 2012-08-10 10:32:09.000000000 -0700 ++++ jdk/test/com/sun/jndi/rmi/registry/RegistryContext/ContextWithNullProperties.java 2013-05-05 09:38:48.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,26 +25,21 @@ + * @test + * @bug 6676075 + * @summary RegistryContext (com.sun.jndi.url.rmi.rmiURLContext) coding problem ++ * @library ../../../../../../java/rmi/testlibrary ++ * @build TestLibrary ++ * @run main ContextWithNullProperties + */ + +-import java.rmi.RemoteException; +-import java.rmi.registry.LocateRegistry; +- +-import com.sun.jndi.rmi.registry.*; ++import com.sun.jndi.rmi.registry.RegistryContext; ++import java.rmi.registry.Registry; + + public class ContextWithNullProperties { +- + public static void main(String[] args) throws Exception { +- +- // Create registry on port 1099 if one is not already running. +- try { +- LocateRegistry.createRegistry(1099); +- } catch (RemoteException e) { +- } +- ++ Registry registry = TestLibrary.createRegistryOnUnusedPort(); ++ int registryPort = TestLibrary.getRegistryPort(registry); + System.out.println("Connecting to the default Registry..."); + // Connect to the default Registry. + // Pass null as the JNDI environment properties (see final argument) +- RegistryContext ctx = new RegistryContext(null, -1, null); ++ RegistryContext ctx = new RegistryContext(null, registryPort, null); + } + } +--- jdk/test/com/sun/jndi/rmi/registry/RegistryContext/UnbindIdempotent.java 2012-08-10 10:32:09.000000000 -0700 ++++ jdk/test/com/sun/jndi/rmi/registry/RegistryContext/UnbindIdempotent.java 2013-05-05 09:38:48.000000000 -0700 +@@ -1,26 +1,52 @@ + /* ++ * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. ++ * 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 4278121 + * @summary Ensure that calling unbind() on an unbound name returns + * successfully. ++ * @library ../../../../../../java/rmi/testlibrary ++ * @build TestLibrary ++ * @run main UnbindIdempotent + */ + +-import javax.naming.*; ++import java.rmi.registry.Registry; ++import javax.naming.Context; ++import javax.naming.InitialContext; ++import javax.naming.NameNotFoundException; ++import javax.naming.NamingException; + + public class UnbindIdempotent { + + public static void main(String[] args) throws Exception { +- +- // Create registry on port 1099 if one is not already running. +- try { +- java.rmi.registry.LocateRegistry.createRegistry(1099); +- } catch (java.rmi.RemoteException e) { +- } +- +- Context ictx = new InitialContext(); ++ Registry registry = TestLibrary.createRegistryOnUnusedPort(); ++ int registryPort = TestLibrary.getRegistryPort(registry); ++ InitialContext ictx = new InitialContext(); + Context rctx; ++ + try { +- rctx = (Context)ictx.lookup("rmi://localhost:1099"); ++ rctx = (Context)ictx.lookup("rmi://localhost:" + Integer.toString(registryPort)); + } catch (NamingException e) { + // Unable to set up for test. + return; --- jdk/test/com/sun/management/OperatingSystemMXBean/TestTotalSwap.sh 2012-08-10 10:32:09.000000000 -0700 -+++ jdk/test/com/sun/management/OperatingSystemMXBean/TestTotalSwap.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/com/sun/management/OperatingSystemMXBean/TestTotalSwap.sh 2013-05-05 09:38:48.000000000 -0700 @@ -72,6 +72,16 @@ done } @@ -76753,7 +76200,7 @@ # $ sysctl -n vm.swapusage # total = 8192.00M used = 7471.11M free = 720.89M (encrypted) --- jdk/test/com/sun/management/UnixOperatingSystemMXBean/GetMaxFileDescriptorCount.sh 2012-08-10 10:32:11.000000000 -0700 -+++ jdk/test/com/sun/management/UnixOperatingSystemMXBean/GetMaxFileDescriptorCount.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/com/sun/management/UnixOperatingSystemMXBean/GetMaxFileDescriptorCount.sh 2013-05-05 09:38:48.000000000 -0700 @@ -48,7 +48,7 @@ # Test GetMaxFileDescriptorCount if we are running on Unix @@ -76764,7 +76211,7 @@ ;; * ) --- jdk/test/com/sun/management/UnixOperatingSystemMXBean/GetOpenFileDescriptorCount.sh 2012-08-10 10:32:11.000000000 -0700 -+++ jdk/test/com/sun/management/UnixOperatingSystemMXBean/GetOpenFileDescriptorCount.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/com/sun/management/UnixOperatingSystemMXBean/GetOpenFileDescriptorCount.sh 2013-05-05 09:38:48.000000000 -0700 @@ -48,7 +48,7 @@ # Test GetOpenFileDescriptorCount if we are running on Unix @@ -76774,8 +76221,22 @@ runOne GetOpenFileDescriptorCount ;; * ) +--- jdk/test/com/sun/security/auth/login/ConfigFile/IllegalURL.java 2012-08-10 10:32:13.000000000 -0700 ++++ jdk/test/com/sun/security/auth/login/ConfigFile/IllegalURL.java 2013-05-05 09:38:49.000000000 -0700 +@@ -43,8 +43,9 @@ + static void use(String f) throws Exception { + System.out.println("Testing " + f + "..."); + System.setProperty("java.security.auth.login.config", f); +- try { +- new FileInputStream(new URL(f).getFile().replace('/', File.separatorChar)); ++ try (FileInputStream fis = ++ new FileInputStream(new URL(f).getFile().replace('/', File.separatorChar))) { ++ // do nothing + } catch (Exception e) { + System.out.println("Even old implementation does not support it. Ignored."); + return; --- jdk/test/com/sun/tools/attach/CommonSetup.sh 2012-08-10 10:32:15.000000000 -0700 -+++ jdk/test/com/sun/tools/attach/CommonSetup.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/com/sun/tools/attach/CommonSetup.sh 2013-05-05 09:38:49.000000000 -0700 @@ -36,7 +36,7 @@ OS=`uname -s` @@ -76785,168 +76246,56 @@ PS=":" FS="/" ;; ---- jdk/test/java/awt/Focus/OverrideRedirectWindowActivationTest/OverrideRedirectWindowActivationTest.java 2012-08-10 10:32:20.000000000 -0700 -+++ jdk/test/java/awt/Focus/OverrideRedirectWindowActivationTest/OverrideRedirectWindowActivationTest.java 1969-12-31 16:00:00.000000000 -0800 -@@ -1,157 +0,0 @@ --/* -- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. -- * 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 6385277 -- * @summary Tests that override redirect window gets activated on click. -- * @author anton.tarasov@sun.com: area=awt.focus -- * @library ../../regtesthelpers -- * @build Util -- * @run main OverrideRedirectWindowActivationTest -- */ --import java.awt.*; --import java.awt.event.*; --import java.util.concurrent.Callable; --import javax.swing.SwingUtilities; --import sun.awt.SunToolkit; --import test.java.awt.regtesthelpers.Util; -- --public class OverrideRedirectWindowActivationTest { -- -- private static Frame frame; -- private static Window window; -- private static Button fbutton; -- private static Button wbutton; -- private static Label label; -- private static Robot robot; -- private static SunToolkit toolkit; -- -- public static void main(String[] args) throws Exception { -- -- if ("sun.awt.motif.MToolkit".equals(Toolkit.getDefaultToolkit().getClass().getName())) { -- System.out.println("No testing on Motif. Test passed."); -- return; -- } -- -- toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); -- robot = new Robot(); -- robot.setAutoDelay(50); -- -- Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() { -- -- public void eventDispatched(AWTEvent e) { -- System.out.println(e); -- } -- }, FocusEvent.FOCUS_EVENT_MASK | WindowEvent.WINDOW_FOCUS_EVENT_MASK); -- -- createAndShowWindow(); -- toolkit.realSync(); -- -- createAndShowFrame(); -- toolkit.realSync(); -- -- // click on Frame -- clickOn(getClickPoint(frame)); -- -- if (!frame.isFocused()) { -- throw new RuntimeException("Error: a frame couldn't be focused by click."); -- } -- -- //click on Label in Window -- clickOn(getClickPoint(label)); -- -- if (!window.isFocused()) { -- throw new RuntimeException("Test failed: the window couldn't be activated by click!"); -- } -- -- // bring focus back to the frame -- clickOn(getClickPoint(fbutton)); -- -- if (!frame.isFocused()) { -- throw new RuntimeException("Error: a frame couldn't be focused by click."); -- } -- -- // Test 2. Verifies that clicking on a component of unfocusable Window -- // won't activate it. -- -- window.setFocusableWindowState(false); -- toolkit.realSync(); -- -- -- clickOn(getClickPoint(label)); -- -- if (window.isFocused()) { -- throw new RuntimeException("Test failed: unfocusable window got activated by click!"); -- } -- System.out.println("Test passed."); -- -- } -- -- private static void createAndShowWindow() { -- -- frame = new Frame("Test Frame"); -- window = new Window(frame); -- wbutton = new Button("wbutton"); -- label = new Label("label"); -- -- window.setBounds(800, 200, 200, 100); -- window.setLayout(new FlowLayout()); -- window.add(wbutton); -- window.add(label); -- window.setVisible(true); -- -- } -- -- private static void createAndShowFrame() { -- fbutton = new Button("fbutton"); -- -- frame.setBounds(800, 0, 200, 100); -- frame.setLayout(new FlowLayout()); -- frame.add(fbutton); -- frame.setVisible(true); -- -- } -- -- static void clickOn(Point point) { -- -- robot.mouseMove(point.x, point.y); -- -- robot.mousePress(InputEvent.BUTTON1_MASK); -- robot.mouseRelease(InputEvent.BUTTON1_MASK); -- -- toolkit.realSync(); -- } +--- jdk/test/demo/jvmti/mtrace/TraceJFrame.java 2012-08-10 10:32:16.000000000 -0700 ++++ jdk/test/demo/jvmti/mtrace/TraceJFrame.java 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,21 +32,26 @@ + * @run main TraceJFrame JFrameCreateTime + */ + +-public class TraceJFrame { ++import java.awt.GraphicsEnvironment; + ++public class TraceJFrame { + public static void main(String args[]) throws Exception { +- DemoRun demo; ++ if (GraphicsEnvironment.getLocalGraphicsEnvironment().isHeadlessInstance()) { ++ System.out.println("JFrame test was skipped due to headless mode"); ++ } else { ++ DemoRun demo; ++ ++ /* Run demo that uses JVMTI mtrace agent (no options) */ ++ demo = new DemoRun("mtrace", "" /* options to mtrace */ ); ++ demo.runit(args[0]); ++ ++ /* Make sure patterns in output look ok */ ++ if (demo.output_contains("ERROR")) { ++ throw new RuntimeException("Test failed - ERROR seen in output"); ++ } + +- /* Run demo that uses JVMTI mtrace agent (no options) */ +- demo = new DemoRun("mtrace", "" /* options to mtrace */ ); +- demo.runit(args[0]); - -- static Point getClickPoint(Component c) { -- Point p = c.getLocationOnScreen(); -- Dimension d = c.getSize(); -- return new Point(p.x + (int) (d.getWidth() / 2), p.y + (int) (d.getHeight() / 2)); -- } +- /* Make sure patterns in output look ok */ +- if (demo.output_contains("ERROR")) { +- throw new RuntimeException("Test failed - ERROR seen in output"); ++ /* Must be a pass. */ ++ System.out.println("Test passed - cleanly terminated"); + } - -- static Point getClickPoint(Frame frame) { -- Point p = frame.getLocationOnScreen(); -- Dimension d = frame.getSize(); -- return new Point(p.x + (int) (d.getWidth() / 2), p.y + (frame.getInsets().top / 2)); -- } --} +- /* Must be a pass. */ +- System.out.println("Test passed - cleanly terminated"); + } + } --- jdk/test/java/awt/Frame/7024749/bug7024749.java 2012-08-10 10:32:20.000000000 -0700 -+++ jdk/test/java/awt/Frame/7024749/bug7024749.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/awt/Frame/7024749/bug7024749.java 2013-05-05 09:38:43.000000000 -0700 @@ -23,9 +23,9 @@ /* @@ -76960,7 +76309,7 @@ * @author Oleg Pekhovskiy: area=awt.toplevel @run main bug7024749 --- jdk/test/java/awt/Frame/HugeFrame/HugeFrame.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/java/awt/Frame/HugeFrame/HugeFrame.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/awt/Frame/HugeFrame/HugeFrame.java 2013-05-05 09:38:43.000000000 -0700 @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -77011,8 +76360,509 @@ + f.dispose(); + } +} +--- jdk/test/java/awt/Frame/WindowDragTest/WindowDragTest.java 2012-08-10 10:32:21.000000000 -0700 ++++ jdk/test/java/awt/Frame/WindowDragTest/WindowDragTest.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,10 +23,11 @@ + + /* + @test +- @bug 7128738 ++ @bug 7128738 7161759 + @summary dragged dialog freezes system on dispose + @author Oleg Pekhovskiy: area=awt.toplevel + @library ../../regtesthelpers ++ @build Util + @run main WindowDragTest + */ + +--- jdk/test/java/awt/Modal/ModalDialogMultiscreenTest/ModalDialogMultiscreenTest.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/java/awt/Modal/ModalDialogMultiscreenTest/ModalDialogMultiscreenTest.java 2013-05-05 09:38:42.000000000 -0700 +@@ -0,0 +1,441 @@ ++/* ++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * 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 6430802 8008379 ++ @summary WM should not hang after show()/close() ++ @author anthony.petrov@sun.com: area=awt.modal ++ @run main/manual ModalDialogMultiscreenTest ++*/ ++ ++ ++/** ++ * ModalDialogMultiscreenTest.java ++ * ++ * summary: Tests whether a WM will hang on show()/close() a modal dialog in multiscreen mode ++ */ ++ ++import java.awt.*; ++import java.awt.event.*; ++import javax.swing.*; ++ ++ ++public class ModalDialogMultiscreenTest ++{ ++ ++ private static class ButtonActionListener implements ActionListener { ++ JFrame frame; ++ JDialog dialog; ++ public ButtonActionListener(JFrame frame, JDialog dialog) { ++ this.frame = frame; ++ this.dialog = dialog; ++ } ++ public void actionPerformed(ActionEvent e) { ++ dialog.setLocationRelativeTo(frame); ++ dialog.setVisible(true); ++ } ++ } ++ public static class TestDialog extends JDialog { ++ public TestDialog(Frame owner, String title, boolean modal, GraphicsConfiguration gc) { ++ super(owner, title, modal, gc); ++ setSize(200, 100); ++ JButton button = new JButton("Close"); ++ button.addActionListener(new ActionListener() { ++ public void actionPerformed(ActionEvent e) { ++ dispose(); ++ } ++ }); ++ getContentPane().add(button); ++ } ++ } ++ ++ private static void init() ++ { ++ GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); ++ GraphicsDevice[] gs = ge.getScreenDevices(); ++ ++ Sysout.createDialog( ); ++ ++ if (gs.length < 2) { ++ System.out.println("Not multi-head environment, test not valid!"); ++ ModalDialogMultiscreenTest.pass( ); ++ } ++ ++ String[] instructions = ++ { ++ "The test should be run on a multi-head X (non-xinerama) systems.", ++ "Otherwise click the Pass button right now.", ++ "You will see an open Frame on each screen your system has.", ++ "The frame has an 'Open dialog' button.", ++ "Clicking the button opens a modal dialog with a Close button.", ++ "The test procedure:", ++ "1. Open a dialog and close it with appropriate buttons.", ++ "2. Switch to another screen ($ DISPLAY=X.Y xprop)", ++ "3. Repeat steps 1-2 several times (about 3*<number-of-screens>)", ++ "If the test doesn't cause the window manager to hang, it's passed." ++ }; ++ Sysout.printInstructions( instructions ); ++ ++ ++ for (int i = 0; i < gs.length; i++) { ++ JFrame frame = new JFrame("Frame "+i,gs[i].getDefaultConfiguration()); ++ JButton button = new JButton("Open Dialog"); ++ button.setMinimumSize(new Dimension(200, 100)); ++ button.setPreferredSize(new Dimension(200, 100)); ++ button.setSize(new Dimension(200, 100)); ++ button.addActionListener(new ButtonActionListener(frame, new TestDialog(frame, "Dialog #"+i, true, gs[i].getDefaultConfiguration()))); ++ frame.getContentPane().add(button); ++ frame.pack(); ++ frame.setVisible(true); ++ } ++ ++ }//End init() ++ ++ ++ //ap203012: NO MORE CHANGES BELOW THIS LINE ++ ++ ++ ++ /***************************************************** ++ * 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; ++ 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 ModalDialogMultiscreenTest ++ ++//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 ++ ++ ModalDialogMultiscreenTest.pass(); ++ } ++ else if( tries == 20 ) ++ { ++ //tried too many times without getting enough events so fail ++ ++ ModalDialogMultiscreenTest.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; ++ ++ 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." ); ++ } ++ ++ ++ public static void printInstructions( String[] instructions ) ++ { ++ dialog.printInstructions( instructions ); ++ } ++ ++ ++ public static void println( String messageIn ) ++ { ++ 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 ++ //ModalDialogMultiscreenTest ++ public void actionPerformed( ActionEvent e ) ++ { ++ if( e.getActionCommand() == "pass" ) ++ { ++ ModalDialogMultiscreenTest.pass(); ++ } ++ else ++ { ++ ModalDialogMultiscreenTest.fail(); ++ } ++ } ++ ++}// TestDialog class +--- jdk/test/java/awt/Modal/WsDisabledStyle/Winkey/Winkey.java 2012-08-10 10:32:23.000000000 -0700 ++++ jdk/test/java/awt/Modal/WsDisabledStyle/Winkey/Winkey.java 2013-05-05 09:38:42.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -22,8 +22,8 @@ + */ + + /* +- @test %I% %E% +- @bug 6572263 6571808 ++ @test ++ @bug 6572263 6571808 8005920 + @summary PIT:FileDialog minimized to taskbar(through 'Show Desktop')selecting the fileDialog using windowList + @author dmitry.cherepanov: area=awt.modal + @run main/manual Winkey +@@ -48,12 +48,14 @@ + + String[] instructions = + { ++ " 0. This test is for MS Windows only, if you use other OS, press \"pass\" button.", + " 1. there is a frame with a 'show modal' button, ", + " 2. press the button to show a modal dialog, ", + " 3. the modal dialog will be shown over the frame, ", + " 4. please verify that all (5.1, 5.2.1, 5.2.2) the following tests pass: ", + " ", + " 5.1. press combination Windows Key and M key to minimize all windows, ", ++ " note that the modal dialog and modal blocked windows are NOT minimized", + " 5.2. press combination Windows Key and D key to show desktop, ", + " 5.2.1. restore the dialog by choosing this one in the ALT-TAB list, ", + " 5.2.2. restore the dialog by mouse click on taskbar (on java or any other item)", --- jdk/test/java/awt/PrintJob/Text/stringwidth.sh 2012-08-10 10:32:25.000000000 -0700 -+++ jdk/test/java/awt/PrintJob/Text/stringwidth.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/awt/PrintJob/Text/stringwidth.sh 2013-05-05 09:38:43.000000000 -0700 @@ -25,10 +25,11 @@ fi @@ -77029,8 +76879,138 @@ # Windows if [ -z "${TESTJAVA}" ] ; then +--- jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh 2012-08-10 10:32:25.000000000 -0700 ++++ jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh 2013-05-05 09:38:43.000000000 -0700 +@@ -1,7 +1,7 @@ + #!/bin/ksh -p + + # +-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,7 +39,7 @@ + + #Call this from anywhere to fail the test with an error message + # usage: fail "reason why the test failed" +-fail() ++fail() + { echo "The test failed :-(" + echo "$*" 1>&2 + echo "exit status was $status" +@@ -48,7 +48,7 @@ + + #Call this from anywhere to pass the test with a message + # usage: pass "reason why the test passed if applicable" +-pass() ++pass() + { echo "The test passed!!!" + echo "$*" 1>&2 + exit 0 +@@ -64,20 +64,42 @@ + case "$OS" in + SunOS ) + VAR="One value for Sun" +- DEFAULT_JDK=/usr/local/java/jdk1.2/solaris ++ DEFAULT_JDK=/ + FILESEP="/" ++ PATHSEP=":" ++ TMP="/tmp" + ;; + + Linux ) + VAR="A different value for Linux" +- DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386 ++ DEFAULT_JDK=/ + FILESEP="/" ++ PATHSEP=":" ++ TMP="/tmp" + ;; + +- Windows_95 | Windows_98 | Windows_NT | Windows_ME ) ++ Darwin ) ++ VAR="A different value for MacOSX" ++ DEFAULT_JDK=/usr ++ FILESEP="/" ++ PATHSEP=":" ++ TMP="/tmp" ++ ;; ++ ++ Windows* ) + VAR="A different value for Win32" +- DEFAULT_JDK=/usr/local/java/jdk1.2/win32 ++ DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0" + FILESEP="\\" ++ PATHSEP=";" ++ TMP=`cd "${SystemRoot}/Temp"; echo ${PWD}` ++ ;; ++ ++ CYGWIN* ) ++ VAR="A different value for Cygwin" ++ DEFAULT_JDK="/cygdrive/c/Program\ Files/Java/jdk1.8.0" ++ FILESEP="/" ++ PATHSEP=";" ++ TMP=`cd "${SystemRoot}/Temp"; echo ${PWD}` + ;; + + # catch all other OSs +@@ -88,8 +110,8 @@ + esac + + +-# Want this test to run standalone as well as in the harness, so do the +-# following to copy the test's directory into the harness's scratch directory ++# Want this test to run standalone as well as in the harness, so do the ++# following to copy the test's directory into the harness's scratch directory + # and set all appropriate variables: + + if [ -z "${TESTJAVA}" ] ; then +@@ -104,7 +126,7 @@ + if [ -n "$1" ] ; + then TESTJAVA=$1 + else echo "no JDK specified on command line so using default!" +- TESTJAVA=$DEFAULT_JDK ++ TESTJAVA=$DEFAULT_JDK + fi + TESTSRC=. + TESTCLASSES=. +@@ -113,25 +135,25 @@ + echo "JDK under test is: $TESTJAVA" + + #Deal with .class files: +-if [ -n "${STANDALONE}" ] ; +- then ++if [ -n "${STANDALONE}" ] ; ++ then + #if standalone, remind user to cd to dir. containing test before running it + echo "Just a reminder: cd to the dir containing this test when running it" + # then compile all .java files (if there are any) into .class files +- if [ -a *.java ] ; ++ if [ -a *.java ] ; + then echo "Reminder, this test should be in its own directory with all" + echo "supporting files it needs in the directory with it." +- ${TESTJAVA}/bin/javac ./*.java ; ++ ${TESTJAVA}/bin/javac ./*.java ; + fi + # else in harness so copy all the class files from where jtreg put them +- # over to the scratch directory this test is running in. ++ # over to the scratch directory this test is running in. + else cp ${TESTCLASSES}/*.class . ; + fi + +-#if in test harness, then copy the entire directory that the test is in over ++#if in test harness, then copy the entire directory that the test is in over + # to the scratch directory. This catches any support files needed by the test. +-if [ -z "${STANDALONE}" ] ; +- then cp ${TESTSRC}/* . ++if [ -z "${STANDALONE}" ] ; ++ then cp ${TESTSRC}/* . + fi + + #Just before executing anything, make sure it has executable permission! --- jdk/test/java/awt/Window/Grab/GrabTest.java 2012-08-10 10:32:26.000000000 -0700 -+++ jdk/test/java/awt/Window/Grab/GrabTest.java 2013-01-16 00:07:23.000000000 -0800 ++++ jdk/test/java/awt/Window/Grab/GrabTest.java 2013-05-05 09:38:43.000000000 -0700 @@ -65,7 +65,7 @@ }, sun.awt.SunToolkit.GRAB_EVENT_MASK); @@ -77068,6 +77048,149 @@ robot.mousePress(InputEvent.BUTTON1_MASK); robot.delay(50); robot.mouseRelease(InputEvent.BUTTON1_MASK); +--- jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh 2012-08-10 10:32:26.000000000 -0700 ++++ jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,7 +38,7 @@ + + #Call this from anywhere to fail the test with an error message + # usage: fail "reason why the test failed" +-fail() ++fail() + { echo "The test failed :-(" + echo "$*" 1>&2 + echo "exit status was $status" +@@ -47,7 +47,7 @@ + + #Call this from anywhere to pass the test with a message + # usage: pass "reason why the test passed if applicable" +-pass() ++pass() + { echo "The test passed!!!" + echo "$*" 1>&2 + exit 0 +@@ -99,20 +99,42 @@ + case "$OS" in + SunOS ) + VAR="One value for Sun" +- DEFAULT_JDK=/usr/local/java/jdk1.2.1/solaris ++ DEFAULT_JDK=/ + FILESEP="/" ++ PATHSEP=":" ++ TMP="/tmp" + ;; + + Linux ) + VAR="A different value for Linux" +- DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386 ++ DEFAULT_JDK=/ + FILESEP="/" ++ PATHSEP=":" ++ TMP="/tmp" + ;; + +- Windows_95 | Windows_98 | Windows_NT | Windows_ME | CYGWIN_NT-5.1) ++ Darwin ) ++ VAR="A different value for MacOSX" ++ DEFAULT_JDK=/usr ++ FILESEP="/" ++ PATHSEP=":" ++ TMP="/tmp" ++ ;; ++ ++ Windows* ) + VAR="A different value for Win32" +- DEFAULT_JDK=/usr/local/java/jdk1.2.1/win32 ++ DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0" + FILESEP="\\" ++ PATHSEP=";" ++ TMP=`cd "${SystemRoot}/Temp"; echo ${PWD}` ++ ;; ++ ++ CYGWIN* ) ++ VAR="A different value for Cygwin" ++ DEFAULT_JDK="/cygdrive/c/Program\ Files/Java/jdk1.8.0" ++ FILESEP="/" ++ PATHSEP=";" ++ TMP=`cd "${SystemRoot}/Temp"; echo ${PWD}` + ;; + + # catch all other OSs +@@ -132,12 +154,12 @@ + # note that the name of the executable is in the fail string as well. + # this is how to check for presence of the compiler, etc. + #RESOURCE=`whence SomeProgramOrFileNeeded` +-#if [ "${RESOURCE}" = "" ] ; +-# then fail "Need SomeProgramOrFileNeeded to perform the test" ; ++#if [ "${RESOURCE}" = "" ] ; ++# then fail "Need SomeProgramOrFileNeeded to perform the test" ; + #fi + +-# Want this test to run standalone as well as in the harness, so do the +-# following to copy the test's directory into the harness's scratch directory ++# Want this test to run standalone as well as in the harness, so do the ++# following to copy the test's directory into the harness's scratch directory + # and set all appropriate variables: + + if [ -z "${TESTJAVA}" ] ; then +@@ -152,7 +174,7 @@ + if [ -n "$1" ] ; + then TESTJAVA=$1 + else echo "no JDK specified on command line so using default!" +- TESTJAVA=$DEFAULT_JDK ++ TESTJAVA=$DEFAULT_JDK + fi + TESTSRC=. + TESTCLASSES=. +@@ -161,25 +183,25 @@ + echo "JDK under test is: $TESTJAVA" + + #Deal with .class files: +-if [ -n "${STANDALONE}" ] ; +- then ++if [ -n "${STANDALONE}" ] ; ++ then + #if standalone, remind user to cd to dir. containing test before running it + echo "Just a reminder: cd to the dir containing this test when running it" + # then compile all .java files (if there are any) into .class files +- if [ -a *.java ] ; ++ if [ -a *.java ] ; + then echo "Reminder, this test should be in its own directory with all" + echo "supporting files it needs in the directory with it." +- ${TESTJAVA}/bin/javac ./*.java ; ++ ${TESTJAVA}/bin/javac ./*.java ; + fi + # else in harness so copy all the class files from where jtreg put them +- # over to the scratch directory this test is running in. ++ # over to the scratch directory this test is running in. + else cp ${TESTCLASSES}/*.class . ; + fi + +-#if in test harness, then copy the entire directory that the test is in over ++#if in test harness, then copy the entire directory that the test is in over + # to the scratch directory. This catches any support files needed by the test. +-#if [ -z "${STANDALONE}" ] ; +-# then cp ${TESTSRC}/* . ++#if [ -z "${STANDALONE}" ] ; ++# then cp ${TESTSRC}/* . + #fi + + #Just before executing anything, make sure it has executable permission! +@@ -198,7 +220,7 @@ + # this shell test as appropriate ( 0 status is considered a pass here ) + + # The test verifies that appletviewer correctly works with the different +-# names of the files, including relative and absolute paths ++# names of the files, including relative and absolute paths + + # 6619458: exclude left brace from the name of the files managed by the VCS + NAME='test.html' --- jdk/test/java/awt/event/TextEvent/TextEventSequenceTest/TextEventSequenceTest.java 2012-08-10 10:32:28.000000000 -0700 +++ jdk/test/java/awt/event/TextEvent/TextEventSequenceTest/TextEventSequenceTest.java 1969-12-31 16:00:00.000000000 -0800 @@ -1,138 +0,0 @@ @@ -77209,8 +77332,105 @@ - } -} - +--- jdk/test/java/awt/font/TextLayout/TestKerning.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/java/awt/font/TextLayout/TestKerning.java 2013-05-05 09:38:43.000000000 -0700 +@@ -0,0 +1,94 @@ ++/* ++ * 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 ++ * @summary Test Kerning is working. ++ * @bug 8009530 ++ */ ++ ++import java.applet.*; ++import java.awt.*; ++import java.awt.event.*; ++import java.awt.font.*; ++import java.util.Map; ++import java.util.HashMap; ++import java.util.Locale; ++ ++public class TestKerning extends Applet { ++ private Panel panel; ++ ++ static public void main(String[] args) { ++System.out.println(System.getProperty("os.name")); ++ ++ Applet test = new TestKerning(); ++ test.init(); ++ test.start(); ++ ++ Frame f = new Frame("Test Kerning"); ++ f.addWindowListener(new WindowAdapter() { ++ public void windowClosing(WindowEvent e) { ++ System.exit(0); ++ } ++ }); ++ f.add("Center", test); ++ f.pack(); ++ f.setVisible(true); ++ } ++ ++ public Dimension getPreferredSize() { ++ return new Dimension(500, 200); ++ } ++ ++ public Dimension getMaximumSize() { ++ return getPreferredSize(); ++ } ++ ++ private static final String testString = "To WAVA 1,45 office glyph."; ++ ++ public void paint(Graphics g) { ++ Graphics2D g2d = (Graphics2D)g; ++ Font f = new Font("Arial", Font.PLAIN, 36); ++ // testing Arial on Solaris. ++ if (!("SunOS".equals(System.getProperty("os.name")))) { ++ return; ++ } ++ if (!("Arial".equals(f.getFamily(Locale.ENGLISH)))) { ++ return; ++ } ++ Map m = new HashMap(); ++ m.put(TextAttribute.KERNING, TextAttribute.KERNING_ON); ++ Font kf = f.deriveFont(m); ++ g.setFont(f); ++ FontMetrics fm1 = g.getFontMetrics(); ++ int sw1 = fm1.stringWidth(testString); ++ g.drawString(testString, 10, 50); ++ g.setFont(kf); ++ FontMetrics fm2 = g.getFontMetrics(); ++ int sw2 = fm2.stringWidth(testString); ++ g.drawString(testString, 10, 90); ++ if (sw1 == sw2) { ++ System.out.println(sw1+" " + sw2); ++ throw new RuntimeException("No kerning"); ++ } ++ } ++} --- jdk/test/java/beans/Introspector/4520754/Test4520754.java 2012-08-10 10:32:30.000000000 -0700 -+++ jdk/test/java/beans/Introspector/4520754/Test4520754.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/beans/Introspector/4520754/Test4520754.java 2013-05-05 09:38:41.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved. @@ -77228,7 +77448,7 @@ // Swing classes (dt.jar) test(null, JApplet.class, JButton.class, JCheckBox.class); --- jdk/test/java/beans/Introspector/6380849/TestBeanInfo.java 2012-08-10 10:32:31.000000000 -0700 -+++ jdk/test/java/beans/Introspector/6380849/TestBeanInfo.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/beans/Introspector/6380849/TestBeanInfo.java 2013-05-05 09:38:41.000000000 -0700 @@ -38,8 +38,7 @@ import java.beans.BeanInfo; @@ -77254,7 +77474,7 @@ catch (Exception exception) { throw new Error("unexpected error", exception); --- jdk/test/java/beans/Introspector/Test7193977.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/java/beans/Introspector/Test7193977.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/beans/Introspector/Test7193977.java 2013-05-05 09:38:41.000000000 -0700 @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -77416,7 +77636,7 @@ + } +} --- jdk/test/java/beans/Introspector/Test7195106.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/java/beans/Introspector/Test7195106.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/beans/Introspector/Test7195106.java 2013-05-05 09:38:41.000000000 -0700 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -77620,7 +77840,7 @@ - } -} --- jdk/test/java/beans/PropertyEditor/6380849/TestPropertyEditor.java 2012-08-10 10:32:33.000000000 -0700 -+++ jdk/test/java/beans/PropertyEditor/6380849/TestPropertyEditor.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/beans/PropertyEditor/6380849/TestPropertyEditor.java 2013-05-05 09:38:41.000000000 -0700 @@ -1,5 +1,5 @@ /** - * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. @@ -77667,7 +77887,7 @@ public class TestPropertyEditor implements Runnable { --- jdk/test/java/beans/PropertyEditor/Test6963811.java 2012-08-10 10:32:33.000000000 -0700 -+++ jdk/test/java/beans/PropertyEditor/Test6963811.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/beans/PropertyEditor/Test6963811.java 2013-05-05 09:38:41.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. @@ -77690,7 +77910,7 @@ public class Test6963811 implements Runnable { private final long time; --- jdk/test/java/beans/XMLEncoder/Test7169395.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/java/beans/XMLEncoder/Test7169395.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/beans/XMLEncoder/Test7169395.java 2013-05-05 09:38:42.000000000 -0700 @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -77794,7 +78014,7 @@ + } +} --- jdk/test/java/io/File/GetXSpace.sh 2012-08-10 10:32:44.000000000 -0700 -+++ jdk/test/java/io/File/GetXSpace.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/io/File/GetXSpace.sh 2013-05-05 09:38:42.000000000 -0700 @@ -26,7 +26,7 @@ # set platform-dependent variable OS=`uname -s` @@ -77804,8 +78024,122 @@ Windows_98 ) return ;; Windows* ) SID=`sid`; TMP="c:/temp" ;; * ) +--- jdk/test/java/io/FileInputStream/LargeFileAvailable.java 2012-08-10 10:32:45.000000000 -0700 ++++ jdk/test/java/io/FileInputStream/LargeFileAvailable.java 2013-05-05 09:38:42.000000000 -0700 +@@ -23,7 +23,7 @@ + + /* + * @test +- * @bug 6402006 ++ * @bug 6402006 7030573 + * @summary Test if available returns correct value when reading + * a large file. + */ +@@ -35,23 +35,35 @@ + import static java.nio.file.StandardOpenOption.*; + + public class LargeFileAvailable { +- private static final long FILESIZE = 7405576182L; + public static void main(String args[]) throws Exception { +- File file = createLargeFile(FILESIZE); ++ // Create a temporary file in the current directory. ++ // Use it to check if we have 7G available for ++ // a large sparse file test. As a fallback use whatever ++ // space is available, so the test can proceed. ++ File file = File.createTempFile("largefile", null, new File(".")); ++ long spaceavailable = file.getUsableSpace(); ++ long filesize = Math.min(spaceavailable, 7405576182L); ++ if (spaceavailable == 0L) { ++ // A full disk is considered fatal. ++ throw new RuntimeException("No space available for temp file."); ++ } ++ ++ createLargeFile(filesize, file); ++ + try (FileInputStream fis = new FileInputStream(file)) { +- if (file.length() != FILESIZE) { +- throw new RuntimeException("unexpected file size = " + file.length()); ++ if (file.length() != filesize) { ++ throw new RuntimeException("unexpected file size = " ++ + file.length()); + } + +- long bigSkip = 3110608882L; +- long remaining = FILESIZE; ++ long bigSkip = Math.min(filesize/2, 3110608882L); ++ long remaining = filesize; + remaining -= skipBytes(fis, bigSkip, remaining); + remaining -= skipBytes(fis, 10L, remaining); + remaining -= skipBytes(fis, bigSkip, remaining); + if (fis.available() != (int) remaining) { +- throw new RuntimeException("available() returns " + +- fis.available() + +- " but expected " + remaining); ++ throw new RuntimeException("available() returns " ++ + fis.available() + " but expected " + remaining); + } + } finally { + file.delete(); +@@ -64,39 +76,41 @@ + throws IOException { + long skip = is.skip(toSkip); + if (skip != toSkip) { +- throw new RuntimeException("skip() returns " + skip + +- " but expected " + toSkip); ++ throw new RuntimeException("skip() returns " + skip ++ + " but expected " + toSkip); + } + long remaining = avail - skip; + int expected = remaining >= Integer.MAX_VALUE + ? Integer.MAX_VALUE + : (int) remaining; + +- System.out.println("Skipped " + skip + " bytes " + +- " available() returns " + expected + ++ System.out.println("Skipped " + skip + " bytes " ++ + " available() returns " + expected + + " remaining=" + remaining); + if (is.available() != expected) { +- throw new RuntimeException("available() returns " + +- is.available() + " but expected " + expected); ++ throw new RuntimeException("available() returns " ++ + is.available() + " but expected " + expected); + } + return skip; + } + +- private static File createLargeFile(long filesize) throws Exception { +- // Create a large file as a sparse file if possible +- File largefile = File.createTempFile("largefile", null); +- // re-create as a sparse file +- Files.delete(largefile.toPath()); ++ private static void createLargeFile(long filesize, ++ File file) throws Exception { ++ // Recreate a large file as a sparse file if possible ++ Files.delete(file.toPath()); ++ + try (FileChannel fc = +- FileChannel.open(largefile.toPath(), +- CREATE_NEW, WRITE, SPARSE)) { ++ FileChannel.open(file.toPath(), ++ CREATE_NEW, WRITE, SPARSE)) { + ByteBuffer bb = ByteBuffer.allocate(1).put((byte)1); + bb.rewind(); +- int rc = fc.write(bb, filesize-1); ++ int rc = fc.write(bb, filesize - 1); ++ + if (rc != 1) { +- throw new RuntimeException("Failed to write 1 byte to the large file"); ++ throw new RuntimeException("Failed to write 1 byte" ++ + " to the large file"); + } + } +- return largefile; ++ return; + } + } --- jdk/test/java/io/FileOutputStream/ManyFiles.java 2012-08-10 10:32:46.000000000 -0700 -+++ jdk/test/java/io/FileOutputStream/ManyFiles.java 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/io/FileOutputStream/ManyFiles.java 2013-05-05 09:38:42.000000000 -0700 @@ -43,7 +43,7 @@ // Windows capability it is much simpler to only run it // on that platform. @@ -77816,7 +78150,7 @@ for (int n = 0; n < NUM_FILES; n++) { --- jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh 2012-08-10 10:33:10.000000000 -0700 -+++ jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh 2013-05-05 09:38:42.000000000 -0700 @@ -41,7 +41,7 @@ # Need to determine the classpath separator and filepath separator based on the # operating system. @@ -77826,8 +78160,96 @@ PS=":" ;; Windows* | CYGWIN* ) PS=";" ;; +--- jdk/test/java/io/Serializable/resolveClass/deserializeButton/Foo.java 2012-08-10 10:33:29.000000000 -0700 ++++ jdk/test/java/io/Serializable/resolveClass/deserializeButton/Foo.java 2013-05-05 09:38:42.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,27 +26,26 @@ + * @summary Verify that class loaded outside of application class loader is + * correctly resolved during deserialization when read in by custom + * readObject() method of a bootstrap class (in this case, +- * java.awt.Button). ++ * java.util.Vector). + */ + +-import java.awt.Button; +-import java.awt.event.MouseAdapter; + import java.io.*; ++import java.util.Vector; + + public class Foo implements Runnable { + +- static class Adapter extends MouseAdapter implements Serializable {} ++ static class TestElement extends Object implements Serializable {} + + public void run() { + try { +- Button button = new Button(); +- button.addMouseListener(new Adapter()); ++ Vector<TestElement> container = new Vector<TestElement>(); ++ container.add(new TestElement()); + + // iterate to trigger java.lang.reflect code generation + for (int i = 0; i < 100; i++) { + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + ObjectOutputStream oout = new ObjectOutputStream(bout); +- oout.writeObject(button); ++ oout.writeObject(container); + oout.close(); + ObjectInputStream oin = new ObjectInputStream( + new ByteArrayInputStream(bout.toByteArray())); +@@ -54,7 +53,7 @@ + } + } catch (Exception ex) { + throw new Error( +- "Error occured while (de)serializing Button: " + ex); ++ "Error occured while (de)serializing container: ", ex); + } + } + } +--- jdk/test/java/io/Serializable/resolveClass/deserializeButton/Test.java 2012-08-10 10:33:29.000000000 -0700 ++++ jdk/test/java/io/Serializable/resolveClass/deserializeButton/Test.java 2013-05-05 09:38:42.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,7 @@ + * @summary Verify that class loaded outside of application class loader is + * correctly resolved during deserialization when read in by custom + * readObject() method of a bootstrap class (in this case, +- * java.awt.Button). ++ * java.util.Vector). + */ + + import java.io.*; +--- jdk/test/java/io/Serializable/resolveClass/deserializeButton/run.sh 2012-08-10 10:33:30.000000000 -0700 ++++ jdk/test/java/io/Serializable/resolveClass/deserializeButton/run.sh 2013-05-05 09:38:42.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + # 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,7 @@ + # @summary Verify that class loaded outside of application class loader is + # correctly resolved during deserialization when read in by custom + # readObject() method of a bootstrap class (in this case, +-# java.awt.Button). ++# java.util.Vector). + + if [ "${TESTJAVA}" = "" ] + then --- jdk/test/java/io/Serializable/serialver/classpath/run.sh 2012-08-10 10:33:31.000000000 -0700 -+++ jdk/test/java/io/Serializable/serialver/classpath/run.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/io/Serializable/serialver/classpath/run.sh 2013-05-05 09:38:42.000000000 -0700 @@ -47,7 +47,7 @@ # set platform-dependent variables OS=`uname -s` @@ -77838,7 +78260,7 @@ Windows* | CYGWIN* ) PS=";" ;; --- jdk/test/java/io/Serializable/serialver/nested/run.sh 2012-08-10 10:33:31.000000000 -0700 -+++ jdk/test/java/io/Serializable/serialver/nested/run.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/io/Serializable/serialver/nested/run.sh 2013-05-05 09:38:42.000000000 -0700 @@ -47,7 +47,7 @@ # set platform-dependent variables OS=`uname -s` @@ -77849,7 +78271,7 @@ Windows* | CYGWIN* ) PS=";" ;; --- jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh 2012-08-10 10:34:02.000000000 -0700 -+++ jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh 2013-05-05 09:38:42.000000000 -0700 @@ -45,13 +45,7 @@ # set platform-specific variables OS=`uname -s` @@ -77866,7 +78288,7 @@ ;; Windows*) --- jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh 2012-08-10 10:34:02.000000000 -0700 -+++ jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh 2013-05-05 09:38:42.000000000 -0700 @@ -49,13 +49,7 @@ # set platform-specific variables OS=`uname -s` @@ -77882,8 +78304,220 @@ FS="/" ;; Windows* | CYGWIN* ) +--- jdk/test/java/lang/ProcessBuilder/Basic.java 2012-08-10 10:34:03.000000000 -0700 ++++ jdk/test/java/lang/ProcessBuilder/Basic.java 2013-05-05 09:38:42.000000000 -0700 +@@ -36,9 +36,11 @@ + import static java.lang.ProcessBuilder.Redirect.*; + + import java.io.*; ++import java.lang.reflect.Field; + import java.util.*; + import java.util.concurrent.CountDownLatch; + import java.security.*; ++import sun.misc.Unsafe; + import java.util.regex.Pattern; + import java.util.regex.Matcher; + import static java.lang.System.getenv; +@@ -1908,17 +1910,21 @@ + final byte[] bytes = new byte[10]; + final Process p = new ProcessBuilder(childArgs).start(); + final CountDownLatch latch = new CountDownLatch(1); ++ final InputStream s; ++ switch (action & 0x1) { ++ case 0: s = p.getInputStream(); break; ++ case 1: s = p.getErrorStream(); break; ++ default: throw new Error(); ++ } + final Thread thread = new Thread() { + public void run() { + try { +- latch.countDown(); + int r; +- switch (action) { +- case 0: r = p.getInputStream().read(); break; +- case 1: r = p.getErrorStream().read(); break; +- case 2: r = p.getInputStream().read(bytes); break; +- case 3: r = p.getErrorStream().read(bytes); break; +- default: throw new Error(); ++ latch.countDown(); ++ switch (action & 0x2) { ++ case 0: r = s.read(); break; ++ case 2: r = s.read(bytes); break; ++ default: throw new Error(); + } + equal(-1, r); + } catch (Throwable t) { unexpected(t); }}}; +@@ -1926,6 +1932,40 @@ + thread.start(); + latch.await(); + Thread.sleep(10); ++ ++ String os = System.getProperty("os.name"); ++ if (os.equalsIgnoreCase("Solaris") || ++ os.equalsIgnoreCase("SunOS")) ++ { ++ final Object deferred; ++ Class<?> c = s.getClass(); ++ if (c.getName().equals( ++ "java.lang.UNIXProcess$DeferredCloseInputStream")) ++ { ++ deferred = s; ++ } else { ++ Field deferredField = p.getClass(). ++ getDeclaredField("stdout_inner_stream"); ++ deferredField.setAccessible(true); ++ deferred = deferredField.get(p); ++ } ++ Field useCountField = deferred.getClass(). ++ getDeclaredField("useCount"); ++ useCountField.setAccessible(true); ++ ++ while (useCountField.getInt(deferred) <= 0) { ++ Thread.yield(); ++ } ++ } else if (s instanceof BufferedInputStream) { ++ Field f = Unsafe.class.getDeclaredField("theUnsafe"); ++ f.setAccessible(true); ++ Unsafe unsafe = (Unsafe)f.get(null); ++ ++ while (unsafe.tryMonitorEnter(s)) { ++ unsafe.monitorExit(s); ++ Thread.sleep(1); ++ } ++ } + p.destroy(); + thread.join(); + } +--- jdk/test/java/lang/Runtime/exec/StreamsSurviveDestroy.java 2012-08-10 10:34:04.000000000 -0700 ++++ jdk/test/java/lang/Runtime/exec/StreamsSurviveDestroy.java 2013-05-05 09:38:42.000000000 -0700 +@@ -28,6 +28,7 @@ + */ + + import java.io.*; ++import java.util.concurrent.*; + + + public class StreamsSurviveDestroy { +@@ -40,15 +41,17 @@ + boolean wantInterrupt; + boolean acceptException; + Exception exc = null; ++ CountDownLatch latch; + + Copier(String name, InputStream in, OutputStream out, +- boolean ae, boolean wi) ++ boolean ae, boolean wi, CountDownLatch l) + { + this.name = name; + this.in = in; + this.out = out; + this.acceptException = ae; + this.wantInterrupt = wi; ++ this.latch = l; + setName(name); + start(); + } +@@ -59,6 +62,7 @@ + + public void run() { + byte[] buf = new byte[4242]; ++ latch.countDown(); + for (;;) { + try { + int n = in.read(buf); +@@ -95,13 +99,17 @@ + } + + static void test() throws Exception { ++ CountDownLatch latch = new CountDownLatch(2); ++ + System.err.println("test"); + Process p = Runtime.getRuntime().exec("/bin/cat"); + Copier cp1 = new Copier("out", p.getInputStream(), System.err, +- false, false); ++ false, false, latch); + Copier cp2 = new Copier("err", p.getErrorStream(), System.err, +- false, false); +- Thread.sleep(100); ++ false, false, latch); ++ latch.await(); // Wait till both Copiers about to read ++ Thread.sleep(100);// Give both Copiers a chance to start read ++ + p.destroy(); + System.err.println(" exit: " + p.waitFor()); + cp1.join(); +@@ -111,13 +119,17 @@ + } + + static void testCloseBeforeDestroy() throws Exception { ++ CountDownLatch latch = new CountDownLatch(2); ++ + System.err.println("testCloseBeforeDestroy"); + Process p = Runtime.getRuntime().exec("/bin/cat"); + Copier cp1 = new Copier("out", p.getInputStream(), System.err, +- true, false); ++ true, false, latch); + Copier cp2 = new Copier("err", p.getErrorStream(), System.err, +- true, false); +- Thread.sleep(100); ++ true, false, latch); ++ latch.await(); // Wait till both Copiers about to read ++ Thread.sleep(100);// Give both Copiers a chance to start read ++ + p.getInputStream().close(); + p.getErrorStream().close(); + p.destroy(); +@@ -129,13 +141,17 @@ + } + + static void testCloseAfterDestroy() throws Exception { ++ CountDownLatch latch = new CountDownLatch(2); + System.err.println("testCloseAfterDestroy"); + Process p = Runtime.getRuntime().exec("/bin/cat"); + Copier cp1 = new Copier("out", p.getInputStream(), System.err, +- true, false); ++ true, false,latch); + Copier cp2 = new Copier("err", p.getErrorStream(), System.err, +- true, false); +- Thread.sleep(100); ++ true, false, latch); ++ ++ latch.await(); // Wait till both Copiers about to read ++ Thread.sleep(100);// Give both Copiers a chance to start read ++ + p.destroy(); + p.getInputStream().close(); + p.getErrorStream().close(); +@@ -147,13 +163,16 @@ + } + + static void testInterrupt() throws Exception { ++ CountDownLatch latch = new CountDownLatch(2); + System.err.println("testInterrupt"); + Process p = Runtime.getRuntime().exec("/bin/cat"); + Copier cp1 = new Copier("out", p.getInputStream(), System.err, +- false, true); ++ false, true, latch); + Copier cp2 = new Copier("err", p.getErrorStream(), System.err, +- false, true); +- Thread.sleep(100); ++ false, true, latch); ++ latch.await(); // Wait till both Copiers about to read ++ Thread.sleep(100);// Give both Copiers a chance to start read ++ + cp1.interrupt(); + cp2.interrupt(); + Thread.sleep(100); +@@ -176,7 +195,5 @@ + testCloseBeforeDestroy(); + testCloseAfterDestroy(); + testInterrupt(); +- + } +- + } --- jdk/test/java/lang/StringCoding/CheckEncodings.sh 2012-08-10 10:34:06.000000000 -0700 -+++ jdk/test/java/lang/StringCoding/CheckEncodings.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/lang/StringCoding/CheckEncodings.sh 2013-05-05 09:38:42.000000000 -0700 @@ -30,7 +30,7 @@ # set platform-dependent variables OS=`uname -s` @@ -77893,8 +78527,110 @@ Windows* | CYGWIN* ) echo "Passed"; exit 0 ;; * ) echo "Unrecognized system!" ; exit 1 ;; +--- jdk/test/java/lang/ThreadGroup/NullThreadName.java 2012-08-10 10:34:06.000000000 -0700 ++++ jdk/test/java/lang/ThreadGroup/NullThreadName.java 2013-05-05 09:38:42.000000000 -0700 +@@ -24,7 +24,6 @@ + /* + * @test + * @bug 6576763 +- * @ignore until hotspot 6776144 bug is resolved + * @summary (thread) Thread constructors throw undocumented NPE for null name + */ + +@@ -64,8 +63,8 @@ + try { Thread.sleep(2000); } + catch (InterruptedException unused) {} + +- /* do not wait forever */ +- if (count++ > 5) ++ /* do not wait forever - allow 120 seconds same as jtreg default timeout. */ ++ if (count++ > 60) + throw new AssertionError("GoodThread is still alive!"); + } + +--- jdk/test/java/lang/ThreadGroup/Stop.java 2012-08-10 10:34:07.000000000 -0700 ++++ jdk/test/java/lang/ThreadGroup/Stop.java 2013-05-05 09:38:42.000000000 -0700 +@@ -29,37 +29,58 @@ + */ + + public class Stop implements Runnable { +- private static Thread first=null; +- private static Thread second=null; +- private static ThreadGroup group = new ThreadGroup(""); +- +- Stop() { +- Thread thread = new Thread(group, this); +- if (first == null) +- first = thread; +- else +- second = thread; ++ private static boolean groupStopped = false ; ++ private static final Object lock = new Object(); + +- thread.start(); +- } ++ private static final ThreadGroup group = new ThreadGroup(""); ++ private static final Thread first = new Thread(group, new Stop()); ++ private static final Thread second = new Thread(group, new Stop()); + + public void run() { + while (true) { ++ // Give the other thread a chance to start + try { +- Thread.sleep(1000); // Give other thread a chance to start +- if (Thread.currentThread() == first) +- group.stop(); +- } catch(InterruptedException e){ ++ Thread.sleep(1000); ++ } catch (InterruptedException e) { ++ } ++ ++ // When the first thread runs, it will stop the group. ++ if (Thread.currentThread() == first) { ++ synchronized (lock) { ++ try { ++ group.stop(); ++ } finally { ++ // Signal the main thread it is time to check ++ // that the stopped thread group was successful ++ groupStopped = true; ++ lock.notifyAll(); ++ } ++ } + } + } + } + + public static void main(String[] args) throws Exception { +- for (int i=0; i<2; i++) +- new Stop(); +- Thread.sleep(3000); ++ // Launch two threads as part of the same thread group ++ first.start(); ++ second.start(); ++ ++ // Wait for the thread group stop to be issued ++ synchronized(lock){ ++ while (!groupStopped) { ++ lock.wait(); ++ // Give the other thread a chance to stop ++ Thread.sleep(1000); ++ } ++ } ++ ++ // Check that the second thread is terminated when the ++ // first thread terminates the thread group. + boolean failed = second.isAlive(); +- first.stop(); second.stop(); ++ ++ // Clean up any threads that may have not been terminated ++ first.stop(); ++ second.stop(); + if (failed) + throw new RuntimeException("Failure."); + } --- jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh 2012-08-10 10:34:07.000000000 -0700 -+++ jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh 2013-05-05 09:38:42.000000000 -0700 @@ -44,7 +44,7 @@ # set platform-dependent variables OS=`uname -s` @@ -77905,7 +78641,7 @@ PS=":" FS="/" --- jdk/test/java/lang/instrument/MakeJAR2.sh 2012-08-10 10:34:08.000000000 -0700 -+++ jdk/test/java/lang/instrument/MakeJAR2.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/lang/instrument/MakeJAR2.sh 2013-05-05 09:38:42.000000000 -0700 @@ -49,7 +49,7 @@ OS=`uname -s` @@ -77915,8 +78651,100 @@ PATHSEP=":" ;; +--- jdk/test/java/lang/instrument/ManifestTest.sh 2012-08-10 10:34:08.000000000 -0700 ++++ jdk/test/java/lang/instrument/ManifestTest.sh 2013-05-05 09:38:42.000000000 -0700 +@@ -26,7 +26,7 @@ + # @summary JLI JAR manifest processing should ignore leading and trailing white space. + # @author Daniel D. Daugherty + # +-# @run build ManifestTestApp ++# @run build ManifestTestApp ExampleForBootClassPath + # @run shell/timeout=900 ManifestTest.sh + # + +@@ -42,6 +42,9 @@ + expect_retrans_line="isRetransformClassesSupported()=false" + can_set_nmp_line="" + expect_set_nmp_line="isNativeMethodPrefixSupported()=false" ++ # some tests create directories with spaces in their name, ++ # explicitly delete these. ++ to_be_deleted="" + + while [ $# != 0 ] ; do + case "$1" in +@@ -59,30 +62,33 @@ + boot_cp_line2) + boot_cp_line="Boot-Class-Path: has_leading_blank" + expect_boot_cp_line="ExampleForBootClassPath was loaded." ++ to_be_deleted=" has_leading_blank" + mkdir -p has_leading_blank " has_leading_blank" + # the good class is in the directory without the blank + cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class \ + has_leading_blank + # the bad class is in the directory with the blank + cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class.bad \ +- " has_leading_blank"/ExampleForBootClassPath.class ++ " has_leading_blank/ExampleForBootClassPath.class" + ;; + + boot_cp_line3) + boot_cp_line="Boot-Class-Path: has_trailing_blank " + expect_boot_cp_line="ExampleForBootClassPath was loaded." ++ to_be_deleted="has_trailing_blank " + mkdir -p has_trailing_blank "has_trailing_blank " + # the good class is in the directory without the blank + cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class \ + has_trailing_blank + # the bad class is in the directory with the blank + cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class.bad \ +- "has_trailing_blank "/ExampleForBootClassPath.class ++ "has_trailing_blank /ExampleForBootClassPath.class" + ;; + + boot_cp_line4) + boot_cp_line="Boot-Class-Path: has_leading_and_trailing_blank " + expect_boot_cp_line="ExampleForBootClassPath was loaded." ++ to_be_deleted=" has_leading_and_trailing_blank " + mkdir -p has_leading_and_trailing_blank \ + " has_leading_and_trailing_blank " + # the good class is in the directory without the blanks +@@ -90,18 +96,19 @@ + has_leading_and_trailing_blank + # the bad class is in the directory with the blanks + cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class.bad \ +- " has_leading_and_trailing_blank "/ExampleForBootClassPath.class ++ " has_leading_and_trailing_blank /ExampleForBootClassPath.class" + ;; + + boot_cp_line5) + boot_cp_line="Boot-Class-Path: has_embedded blank" + expect_boot_cp_line="ExampleForBootClassPath was loaded." ++ to_be_deleted="has_embedded blank" + mkdir -p has_embedded "has_embedded blank" + # the good class is in the first blank separated word + cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class has_embedded + # the bad class is in the directory with the blank + cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class.bad \ +- "has_embedded blank"/ExampleForBootClassPath.class ++ "has_embedded blank/ExampleForBootClassPath.class" + ;; + + can_redef_line1) +@@ -429,6 +436,12 @@ + touch $FAIL_MARKER + fi + ++ #clean up any problematic directories ++ if [ -n "$to_be_deleted" ]; then ++ echo "Test removing [$to_be_deleted]" ++ rm -rf "$to_be_deleted" ++ fi ++ + echo "===== end test case: $token =====" + echo + done << EOF --- jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh 2012-08-10 10:34:11.000000000 -0700 -+++ jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh 2013-05-05 09:38:42.000000000 -0700 @@ -35,15 +35,7 @@ OS=`uname -s` @@ -77934,8 +78762,19 @@ PS=":" FS="/" ;; +--- jdk/test/java/lang/invoke/InvokeGenericTest.java 2012-08-10 10:34:11.000000000 -0700 ++++ jdk/test/java/lang/invoke/InvokeGenericTest.java 2013-05-05 09:38:42.000000000 -0700 +@@ -25,7 +25,7 @@ + + /* @test + * @summary unit tests for java.lang.invoke.MethodHandle.invoke +- * @compile -target 7 InvokeGenericTest.java ++ * @compile InvokeGenericTest.java + * @run junit/othervm test.java.lang.invoke.InvokeGenericTest + */ + --- jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh 2012-08-10 10:34:13.000000000 -0700 -+++ jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh 2013-05-05 09:38:42.000000000 -0700 @@ -61,7 +61,7 @@ while true; do echo "Run $i: TestSystemLoadAvg" @@ -77946,7 +78785,7 @@ ;; * ) --- jdk/test/java/net/Authenticator/B4933582.sh 2012-08-10 10:34:17.000000000 -0700 -+++ jdk/test/java/net/Authenticator/B4933582.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/net/Authenticator/B4933582.sh 2013-05-05 09:38:41.000000000 -0700 @@ -26,7 +26,7 @@ OS=`uname -s` @@ -77956,6 +78795,66 @@ PS=":" FS="/" ;; +--- jdk/test/java/net/BindException/Test.java 2012-08-10 10:34:17.000000000 -0700 ++++ jdk/test/java/net/BindException/Test.java 2013-05-05 09:38:41.000000000 -0700 +@@ -46,7 +46,7 @@ + static int failures; + + static void doTest(Object test[], InetAddress ia1, InetAddress ia2, +- boolean silent) { ++ boolean silent) throws Exception { + String s1_type = (String)test[0]; + String s2_type = (String)test[1]; + int port = 0; +@@ -64,11 +64,10 @@ + boolean failed = false; + Exception failed_exc = null; + ++ Socket sock1 = null; ++ ServerSocket ss = null; ++ DatagramSocket dsock1 = null; + try { +- Socket sock1, sock2; +- ServerSocket ss; +- DatagramSocket dsock1, dsock2; +- + /* bind the first socket */ + + if (s1_type.equals("Socket")) { +@@ -90,16 +89,18 @@ + /* bind the second socket */ + + if (s2_type.equals("Socket")) { +- sock2 = new Socket(); +- sock2.bind( new InetSocketAddress(ia2, port)); ++ try (Socket sock2 = new Socket()) { ++ sock2.bind( new InetSocketAddress(ia2, port)); ++ } + } + + if (s2_type.equals("ServerSocket")) { +- ss = new ServerSocket(port, 0, ia2); ++ try (ServerSocket ss2 = new ServerSocket(port, 0, ia2)) { } + } + + if (s2_type.equals("DatagramSocket")) { +- dsock2 = new DatagramSocket( new InetSocketAddress(ia2, port) ); ++ try (DatagramSocket ds = ++ new DatagramSocket(new InetSocketAddress(ia2, port))) { } + } + + } catch (BindException be) { +@@ -107,6 +108,10 @@ + } catch (Exception e) { + failed = true; + failed_exc = e; ++ } finally { ++ if (sock1 != null) sock1.close(); ++ if (ss != null) ss.close(); ++ if (dsock1 != null) dsock1.close(); + } + + /* --- jdk/test/java/net/CookieHandler/NullUriCookieTest.java 2012-08-10 10:34:18.000000000 -0700 +++ jdk/test/java/net/CookieHandler/NullUriCookieTest.java 1969-12-31 16:00:00.000000000 -0800 @@ -1,80 +0,0 @@ @@ -78040,7 +78939,7 @@ -} - --- jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java 2012-08-10 10:34:18.000000000 -0700 -+++ jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java 2013-05-05 09:38:41.000000000 -0700 @@ -45,6 +45,8 @@ return (true); if (p.getProperty ("os.name").equals ("Linux")) @@ -78051,7 +78950,7 @@ return (true); // Check for specific Solaris version from here --- jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh 2012-08-10 10:34:18.000000000 -0700 -+++ jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh 2013-05-05 09:38:41.000000000 -0700 @@ -27,11 +27,7 @@ # set platform-dependent variables OS=`uname -s` @@ -78065,8 +78964,183 @@ PATHSEP=":" FILESEP="/" ;; +--- jdk/test/java/net/InetAddress/GetLocalHostWithSM.java 2012-08-10 10:34:19.000000000 -0700 ++++ jdk/test/java/net/InetAddress/GetLocalHostWithSM.java 2013-05-05 09:38:41.000000000 -0700 +@@ -41,14 +41,13 @@ + public static void main(String[] args) throws Exception { + + // try setting the local hostname +- try { +- System.setProperty("host.name", InetAddress. +- getLocalHost(). +- getHostName()); +- } catch (UnknownHostException e) { +- System.out.println("Cannot find the local hostname, " + +- "no nameserver entry found"); ++ InetAddress localHost = InetAddress.getLocalHost(); ++ if (localHost.isLoopbackAddress()) { ++ System.err.println("Local host name is resolved into a loopback address. Quit now!"); ++ return; + } ++ System.setProperty("host.name", localHost. ++ getHostName()); + String policyFileName = System.getProperty("test.src", ".") + + "/" + "policy.file"; + System.setProperty("java.security.policy", policyFileName); +@@ -66,6 +65,7 @@ + new MyAction(), null); + + if (localHost1.equals(localHost2)) { ++ System.out.println("localHost1 = " + localHost1); + throw new RuntimeException("InetAddress.getLocalHost() test " + + " fails. localHost2 should be " + + " the real address instead of " + +--- jdk/test/java/net/ResponseCache/Test.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/java/net/ResponseCache/Test.java 2013-05-05 09:38:41.000000000 -0700 +@@ -0,0 +1,80 @@ ++/* ++ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ * 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 ++ * @summary Fixed a potential NullPointerException when setting a ResponseCache that returns a null CacheRequest ++ * @bug 4837267 ++ * @author Michael McMahon ++ */ ++ ++import com.sun.net.httpserver.*; ++import java.net.*; ++import java.io.*; ++import java.util.*; ++ ++public class Test ++{ ++ ++ static class MyHandler implements HttpHandler { ++ public void handle(HttpExchange t) throws IOException { ++ byte[] b = new byte[1024]; ++ int r = 0; ++ InputStream is = t.getRequestBody(); ++ while (is.read(b) != -1) ; ++ String response = "This is the response"; ++ t.sendResponseHeaders(200, response.length()); ++ OutputStream os = t.getResponseBody(); ++ os.write(response.getBytes()); ++ os.close(); ++ } ++ } ++ ++ public static void main(String args[]) throws Exception { ++ HttpServer server = HttpServer.create(new InetSocketAddress(0), 0); ++ server.createContext("/", new MyHandler()); ++ server.start(); ++ ResponseCache bak = ResponseCache.getDefault(); ++ ++ try { ++ ResponseCache.setDefault (new ResponseCache() { ++ public CacheResponse get (URI uri, String rqstMethod, Map<String,List<String>> rqstHeaders) ++ throws IOException { ++ return null; ++ } ++ public CacheRequest put(URI uri, URLConnection conn) throws IOException ++ { ++ return null; ++ } ++ }); ++ ++ URL url = new URL ("http://localhost:" + server.getAddress().getPort() + "/"); ++ URLConnection urlc = url.openConnection (); ++ InputStream is = urlc.getInputStream(); ++ while (is.read() != -1) ; ++ is.close(); ++ } finally { ++ ResponseCache.setDefault(bak); ++ server.stop(0); ++ } ++ } ++} +--- jdk/test/java/net/Socket/B6210227.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/java/net/Socket/B6210227.java 2013-05-05 09:38:41.000000000 -0700 +@@ -0,0 +1,58 @@ ++/* ++ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ * 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 6210227 ++ * @summary REGRESSION: Socket.getLocalAddress() returns address of 0.0.0.0 on outbound TCP ++ */ ++ ++import java.util.*; ++import java.net.*; ++ ++public class B6210227 { ++ public static void main(String[] args) throws Exception ++ { ++ ServerSocket ss = new ServerSocket(0); ++ int port = ss.getLocalPort(); ++ ++ byte[] bad = {0,0,0,0}; ++ try { ++ InetSocketAddress isa = new InetSocketAddress(InetAddress.getLocalHost(), port); ++ Socket s = new Socket(); ++ s.connect( isa, 1000 ); ++ InetAddress iaLocal = s.getLocalAddress(); // if this comes back as 0.0. 0.0 this would demonstrate issue ++ String sLocalHostname = iaLocal.getHostName(); ++ if (Arrays.equals (iaLocal.getAddress(), bad)) { ++ throw new RuntimeException ("0.0.0.0 returned"); ++ } ++ System.out.println("local hostname is "+sLocalHostname ); ++ } catch(Exception e) { ++ System.out.println("Exception happened"); ++ throw e; ++ } finally { ++ ss.close(); ++ } ++ } ++} ++ --- jdk/test/java/net/Socket/OldSocketImpl.sh 2012-08-10 10:34:21.000000000 -0700 -+++ jdk/test/java/net/Socket/OldSocketImpl.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/net/Socket/OldSocketImpl.sh 2013-05-05 09:38:41.000000000 -0700 @@ -28,7 +28,7 @@ OS=`uname -s` @@ -78076,8 +79150,164 @@ PS=":" FS="/" ;; +--- jdk/test/java/net/Socks/SocksServer.java 2012-08-10 10:34:22.000000000 -0700 ++++ jdk/test/java/net/Socks/SocksServer.java 2013-05-05 09:38:41.000000000 -0700 +@@ -22,13 +22,14 @@ + */ + import java.net.*; + import java.io.*; ++import java.util.HashMap; + + public class SocksServer extends Thread { + // Some useful SOCKS constant + +- static final int PROTO_VERS4 = 4; ++ static final int PROTO_VERS4 = 4; + static final int PROTO_VERS = 5; +- static final int DEFAULT_PORT = 1080; ++ static final int DEFAULT_PORT = 1080; + + static final int NO_AUTH = 0; + static final int GSSAPI = 1; +@@ -36,28 +37,28 @@ + static final int NO_METHODS = -1; + + static final int CONNECT = 1; +- static final int BIND = 2; ++ static final int BIND = 2; + static final int UDP_ASSOC = 3; + +- static final int IPV4 = 1; +- static final int DOMAIN_NAME = 3; +- static final int IPV6 = 4; ++ static final int IPV4 = 1; ++ static final int DOMAIN_NAME = 3; ++ static final int IPV6 = 4; + + static final int REQUEST_OK = 0; + static final int GENERAL_FAILURE = 1; +- static final int NOT_ALLOWED = 2; ++ static final int NOT_ALLOWED = 2; + static final int NET_UNREACHABLE = 3; + static final int HOST_UNREACHABLE = 4; +- static final int CONN_REFUSED = 5; +- static final int TTL_EXPIRED = 6; ++ static final int CONN_REFUSED = 5; ++ static final int TTL_EXPIRED = 6; + static final int CMD_NOT_SUPPORTED = 7; + static final int ADDR_TYPE_NOT_SUP = 8; + + private int port; + private ServerSocket server; + private boolean useV4 = false; +- private java.util.Hashtable users = new java.util.Hashtable(); +- private boolean done = false; ++ private HashMap<String,String> users = new HashMap<>(); ++ private volatile boolean done = false; + // Inner class to handle protocol with client + // This is the bulk of the work (protocol handler) + class ClientHandler extends Thread { +@@ -136,7 +137,7 @@ + System.err.println("User: '" + uname); + System.err.println("PSWD: '" + password); + if (users.containsKey(uname)) { +- String p1 = (String) users.get(uname); ++ String p1 = users.get(uname); + System.err.println("p1 = " + p1); + if (p1.equals(password)) { + out.write(PROTO_VERS); +@@ -492,7 +493,12 @@ + public SocksServer(int port) throws IOException { + this.port = port; + server = new ServerSocket(); +- server.bind(new InetSocketAddress(port)); ++ if (port == 0) { ++ server.bind(null); ++ this.port = server.getLocalPort(); ++ } else { ++ server.bind(new InetSocketAddress(port)); ++ } + } + + public SocksServer() throws IOException { +@@ -503,8 +509,13 @@ + users.put(user, passwd); + } + +- public synchronized void terminate() { ++ public int getPort() { ++ return port; ++ } ++ ++ public void terminate() { + done = true; ++ try { server.close(); } catch (IOException unused) {} + } + + public void run() { +--- jdk/test/java/net/Socks/SocksV4Test.java 2012-08-10 10:34:22.000000000 -0700 ++++ jdk/test/java/net/Socks/SocksV4Test.java 2013-05-05 09:38:41.000000000 -0700 +@@ -26,23 +26,29 @@ + * @bug 4727547 + * @summary SocksSocketImpl throws NullPointerException + * @build SocksServer ++ * @run main SocksV4Test + */ + + import java.net.*; +-import java.io.*; + + public class SocksV4Test { +- public static void main(String[] args) throws IOException { +- // Create a SOCKS V4 proxy on port 8888 +- SocksServer srvr = new SocksServer(8888, true); ++ ++ // An unresolvable host ++ static final String HOSTNAME = "doesnot.exist.invalid"; ++ ++ public static void main(String[] args) throws Exception { ++ // sanity before running the test ++ assertUnresolvableHost(HOSTNAME); ++ ++ // Create a SOCKS V4 proxy ++ SocksServer srvr = new SocksServer(0, true); + srvr.start(); +- System.setProperty("socksProxyHost", "localhost"); +- System.setProperty("socksProxyPort", "8888"); ++ Proxy sp = new Proxy(Proxy.Type.SOCKS, ++ new InetSocketAddress("localhost", srvr.getPort())); + // Let's create an unresolved address +- InetSocketAddress ad = new InetSocketAddress("doesnt.exist.name", 1234); +- Socket s = new Socket(); +- try { +- s.connect(ad,10000); ++ InetSocketAddress ad = new InetSocketAddress(HOSTNAME, 1234); ++ try (Socket s = new Socket(sp)) { ++ s.connect(ad, 10000); + } catch (UnknownHostException ex) { + // OK, that's what we expected + } catch (NullPointerException npe) { +@@ -50,7 +56,17 @@ + throw new RuntimeException("Got a NUllPointerException"); + } finally { + srvr.terminate(); +- srvr.interrupt(); + } + } ++ ++ static void assertUnresolvableHost(String host) { ++ InetAddress addr = null; ++ try { ++ addr = InetAddress.getByName(host); ++ } catch (UnknownHostException x) { ++ // OK, expected ++ } ++ if (addr != null) ++ throw new RuntimeException("Test cannot run. resolvable address:" + addr); ++ } + } --- jdk/test/java/net/URL/B5086147.sh 2012-08-10 10:34:22.000000000 -0700 -+++ jdk/test/java/net/URL/B5086147.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/net/URL/B5086147.sh 2013-05-05 09:38:41.000000000 -0700 @@ -26,7 +26,7 @@ OS=`uname -s` @@ -78088,7 +79318,7 @@ ;; CYGWIN* ) --- jdk/test/java/net/URL/Gopher.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/java/net/URL/Gopher.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/net/URL/Gopher.java 2013-05-05 09:38:41.000000000 -0700 @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved. @@ -78165,7 +79395,7 @@ + } +} --- jdk/test/java/net/URL/Test.java 2012-08-10 10:34:23.000000000 -0700 -+++ jdk/test/java/net/URL/Test.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/net/URL/Test.java 2013-05-05 09:38:41.000000000 -0700 @@ -322,10 +322,6 @@ test("ftp://ftp.is.co.za/rfc/rfc1808.txt") .s("ftp").h("ftp.is.co.za").p("/rfc/rfc1808.txt").z(); @@ -78178,7 +79408,7 @@ .s("http").h("www.math.uio.no").p("/faq/compression-faq/part1.html").z(); --- jdk/test/java/net/URL/runconstructor.sh 2012-08-10 10:34:23.000000000 -0700 -+++ jdk/test/java/net/URL/runconstructor.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/net/URL/runconstructor.sh 2013-05-05 09:38:41.000000000 -0700 @@ -27,7 +27,7 @@ # OS=`uname -s` @@ -78189,7 +79419,7 @@ FS="/" ;; --- jdk/test/java/net/URLClassLoader/B5077773.sh 2012-08-10 10:34:23.000000000 -0700 -+++ jdk/test/java/net/URLClassLoader/B5077773.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/net/URLClassLoader/B5077773.sh 2013-05-05 09:38:41.000000000 -0700 @@ -34,11 +34,7 @@ OS=`uname -s` @@ -78204,7 +79434,7 @@ FS="/" ;; --- jdk/test/java/net/URLClassLoader/sealing/checksealed.sh 2012-08-10 10:34:25.000000000 -0700 -+++ jdk/test/java/net/URLClassLoader/sealing/checksealed.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/net/URLClassLoader/sealing/checksealed.sh 2013-05-05 09:38:41.000000000 -0700 @@ -27,11 +27,7 @@ OS=`uname -s` @@ -78219,7 +79449,7 @@ FS="/" ;; --- jdk/test/java/net/URLConnection/6212146/test.sh 2012-08-10 10:34:25.000000000 -0700 -+++ jdk/test/java/net/URLConnection/6212146/test.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/net/URLConnection/6212146/test.sh 2013-05-05 09:38:41.000000000 -0700 @@ -33,11 +33,7 @@ OS=`uname -s` @@ -78233,6 +79463,1467 @@ PS=":" FS="/" ;; +--- jdk/test/java/net/ipv6tests/B6521014.java 2012-08-10 10:34:25.000000000 -0700 ++++ jdk/test/java/net/ipv6tests/B6521014.java 2013-05-05 09:38:41.000000000 -0700 +@@ -95,14 +95,12 @@ + Socket sock; + ServerSocket ssock; + int port; +- int localport; + + ssock = new ServerSocket(0); + ssock.setSoTimeout(100); + port = ssock.getLocalPort(); +- localport = port + 1; + sock = new Socket(); +- sock.bind(new InetSocketAddress(sin, localport)); ++ sock.bind(new InetSocketAddress(sin, 0)); + try { + sock.connect(new InetSocketAddress(sin, port), 100); + } catch (SocketTimeoutException e) { +--- jdk/test/java/nio/channels/AsynchronousSocketChannel/Basic.java 2012-08-10 10:34:28.000000000 -0700 ++++ jdk/test/java/nio/channels/AsynchronousSocketChannel/Basic.java 2013-05-05 09:38:43.000000000 -0700 +@@ -24,7 +24,7 @@ + /* @test + * @bug 4607272 6842687 6878369 6944810 7023403 + * @summary Unit test for AsynchronousSocketChannel +- * @run main/timeout=600 Basic ++ * @run main Basic -skipSlowConnectTest + */ + + import java.nio.ByteBuffer; +@@ -34,12 +34,25 @@ + import java.util.Random; + import java.util.concurrent.*; + import java.util.concurrent.atomic.*; ++import java.io.Closeable; + import java.io.IOException; + + public class Basic { + static final Random rand = new Random(); + ++ static boolean skipSlowConnectTest = false; ++ + public static void main(String[] args) throws Exception { ++ for (String arg: args) { ++ switch (arg) { ++ case "-skipSlowConnectTest" : ++ skipSlowConnectTest = true; ++ break; ++ default: ++ throw new RuntimeException("Unrecognized argument: " + arg); ++ } ++ } ++ + testBind(); + testSocketOptions(); + testConnect(); +@@ -54,7 +67,7 @@ + testShutdown(); + } + +- static class Server { ++ static class Server implements Closeable { + private final ServerSocketChannel ssc; + private final InetSocketAddress address; + +@@ -74,10 +87,8 @@ + return ssc.accept(); + } + +- void close() { +- try { +- ssc.close(); +- } catch (IOException ignore) { } ++ public void close() throws IOException { ++ ssc.close(); + } + + } +@@ -85,28 +96,28 @@ + static void testBind() throws Exception { + System.out.println("-- bind --"); + +- AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); +- if (ch.getLocalAddress() != null) +- throw new RuntimeException("Local address should be 'null'"); +- ch.bind(new InetSocketAddress(0)); +- +- // check local address after binding +- InetSocketAddress local = (InetSocketAddress)ch.getLocalAddress(); +- if (local.getPort() == 0) +- throw new RuntimeException("Unexpected port"); +- if (!local.getAddress().isAnyLocalAddress()) +- throw new RuntimeException("Not bound to a wildcard address"); +- +- // try to re-bind +- try { ++ try (AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) { ++ if (ch.getLocalAddress() != null) ++ throw new RuntimeException("Local address should be 'null'"); + ch.bind(new InetSocketAddress(0)); +- throw new RuntimeException("AlreadyBoundException expected"); +- } catch (AlreadyBoundException x) { ++ ++ // check local address after binding ++ InetSocketAddress local = (InetSocketAddress)ch.getLocalAddress(); ++ if (local.getPort() == 0) ++ throw new RuntimeException("Unexpected port"); ++ if (!local.getAddress().isAnyLocalAddress()) ++ throw new RuntimeException("Not bound to a wildcard address"); ++ ++ // try to re-bind ++ try { ++ ch.bind(new InetSocketAddress(0)); ++ throw new RuntimeException("AlreadyBoundException expected"); ++ } catch (AlreadyBoundException x) { ++ } + } +- ch.close(); + + // check ClosedChannelException +- ch = AsynchronousSocketChannel.open(); ++ AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); + ch.close(); + try { + ch.bind(new InetSocketAddress(0)); +@@ -118,109 +129,124 @@ + static void testSocketOptions() throws Exception { + System.out.println("-- socket options --"); + +- AsynchronousSocketChannel ch = AsynchronousSocketChannel.open() +- .setOption(SO_RCVBUF, 128*1024) +- .setOption(SO_SNDBUF, 128*1024) +- .setOption(SO_REUSEADDR, true); +- +- // check SO_SNDBUF/SO_RCVBUF limits +- int before, after; +- before = ch.getOption(SO_SNDBUF); +- after = ch.setOption(SO_SNDBUF, Integer.MAX_VALUE).getOption(SO_SNDBUF); +- if (after < before) +- throw new RuntimeException("setOption caused SO_SNDBUF to decrease"); +- before = ch.getOption(SO_RCVBUF); +- after = ch.setOption(SO_RCVBUF, Integer.MAX_VALUE).getOption(SO_RCVBUF); +- if (after < before) +- throw new RuntimeException("setOption caused SO_RCVBUF to decrease"); +- +- ch.bind(new InetSocketAddress(0)); +- +- // default values +- if ((Boolean)ch.getOption(SO_KEEPALIVE)) +- throw new RuntimeException("Default of SO_KEEPALIVE should be 'false'"); +- if ((Boolean)ch.getOption(TCP_NODELAY)) +- throw new RuntimeException("Default of TCP_NODELAY should be 'false'"); +- +- // set and check +- if (!(Boolean)ch.setOption(SO_KEEPALIVE, true).getOption(SO_KEEPALIVE)) +- throw new RuntimeException("SO_KEEPALIVE did not change"); +- if (!(Boolean)ch.setOption(TCP_NODELAY, true).getOption(TCP_NODELAY)) +- throw new RuntimeException("SO_KEEPALIVE did not change"); +- +- // read others (can't check as actual value is implementation dependent) +- ch.getOption(SO_RCVBUF); +- ch.getOption(SO_SNDBUF); ++ try (AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) { ++ ch.setOption(SO_RCVBUF, 128*1024) ++ .setOption(SO_SNDBUF, 128*1024) ++ .setOption(SO_REUSEADDR, true); ++ ++ // check SO_SNDBUF/SO_RCVBUF limits ++ int before, after; ++ before = ch.getOption(SO_SNDBUF); ++ after = ch.setOption(SO_SNDBUF, Integer.MAX_VALUE).getOption(SO_SNDBUF); ++ if (after < before) ++ throw new RuntimeException("setOption caused SO_SNDBUF to decrease"); ++ before = ch.getOption(SO_RCVBUF); ++ after = ch.setOption(SO_RCVBUF, Integer.MAX_VALUE).getOption(SO_RCVBUF); ++ if (after < before) ++ throw new RuntimeException("setOption caused SO_RCVBUF to decrease"); + +- ch.close(); ++ ch.bind(new InetSocketAddress(0)); ++ ++ // default values ++ if (ch.getOption(SO_KEEPALIVE)) ++ throw new RuntimeException("Default of SO_KEEPALIVE should be 'false'"); ++ if (ch.getOption(TCP_NODELAY)) ++ throw new RuntimeException("Default of TCP_NODELAY should be 'false'"); ++ ++ // set and check ++ if (!ch.setOption(SO_KEEPALIVE, true).getOption(SO_KEEPALIVE)) ++ throw new RuntimeException("SO_KEEPALIVE did not change"); ++ if (!ch.setOption(TCP_NODELAY, true).getOption(TCP_NODELAY)) ++ throw new RuntimeException("SO_KEEPALIVE did not change"); ++ ++ // read others (can't check as actual value is implementation dependent) ++ ch.getOption(SO_RCVBUF); ++ ch.getOption(SO_SNDBUF); ++ } + } + + static void testConnect() throws Exception { + System.out.println("-- connect --"); + +- Server server = new Server(); +- AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); +- ch.connect(server.address()).get(); ++ SocketAddress address; + +- // check local address +- if (ch.getLocalAddress() == null) +- throw new RuntimeException("Not bound to local address"); +- +- // check remote address +- InetSocketAddress remote = (InetSocketAddress)ch.getRemoteAddress(); +- if (remote.getPort() != server.address().getPort()) +- throw new RuntimeException("Connected to unexpected port"); +- if (!remote.getAddress().equals(server.address().getAddress())) +- throw new RuntimeException("Connected to unexpected address"); ++ try (Server server = new Server()) { ++ address = server.address(); + +- // try to connect again +- try { +- ch.connect(server.address()).get(); +- throw new RuntimeException("AlreadyConnectedException expected"); +- } catch (AlreadyConnectedException x) { +- } +- ch.close(); ++ // connect to server and check local/remote addresses ++ try (AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) { ++ ch.connect(address).get(); ++ // check local address ++ if (ch.getLocalAddress() == null) ++ throw new RuntimeException("Not bound to local address"); + +- // check that connect fails with ClosedChannelException) +- ch = AsynchronousSocketChannel.open(); +- ch.close(); +- try { +- ch.connect(server.address()).get(); +- throw new RuntimeException("ExecutionException expected"); +- } catch (ExecutionException x) { +- if (!(x.getCause() instanceof ClosedChannelException)) +- throw new RuntimeException("Cause of ClosedChannelException expected"); +- } +- final AtomicReference<Throwable> connectException = +- new AtomicReference<Throwable>(); +- ch.connect(server.address(), (Void)null, new CompletionHandler<Void,Void>() { +- public void completed(Void result, Void att) { ++ // check remote address ++ InetSocketAddress remote = (InetSocketAddress)ch.getRemoteAddress(); ++ if (remote.getPort() != server.address().getPort()) ++ throw new RuntimeException("Connected to unexpected port"); ++ if (!remote.getAddress().equals(server.address().getAddress())) ++ throw new RuntimeException("Connected to unexpected address"); ++ ++ // try to connect again ++ try { ++ ch.connect(server.address()).get(); ++ throw new RuntimeException("AlreadyConnectedException expected"); ++ } catch (AlreadyConnectedException x) { ++ } ++ ++ // clean-up ++ server.accept().close(); + } +- public void failed(Throwable exc, Void att) { +- connectException.set(exc); ++ ++ // check that connect fails with ClosedChannelException ++ AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); ++ ch.close(); ++ try { ++ ch.connect(server.address()).get(); ++ throw new RuntimeException("ExecutionException expected"); ++ } catch (ExecutionException x) { ++ if (!(x.getCause() instanceof ClosedChannelException)) ++ throw new RuntimeException("Cause of ClosedChannelException expected"); ++ } ++ final AtomicReference<Throwable> connectException = new AtomicReference<>(); ++ ch.connect(server.address(), (Void)null, new CompletionHandler<Void,Void>() { ++ public void completed(Void result, Void att) { ++ } ++ public void failed(Throwable exc, Void att) { ++ connectException.set(exc); ++ } ++ }); ++ while (connectException.get() == null) { ++ Thread.sleep(100); + } +- }); +- while (connectException.get() == null) { +- Thread.sleep(100); ++ if (!(connectException.get() instanceof ClosedChannelException)) ++ throw new RuntimeException("ClosedChannelException expected"); + } +- if (!(connectException.get() instanceof ClosedChannelException)) +- throw new RuntimeException("ClosedChannelException expected"); +- +- System.out.println("-- connect to non-existent host --"); + + // test that failure to connect closes the channel +- ch = AsynchronousSocketChannel.open(); +- try { +- ch.connect(genSocketAddress()).get(); +- } catch (ExecutionException x) { +- // failed to establish connection +- if (ch.isOpen()) +- throw new RuntimeException("Channel should be closed"); +- } finally { +- ch.close(); ++ try (AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) { ++ try { ++ ch.connect(address).get(); ++ } catch (ExecutionException x) { ++ // failed to establish connection ++ if (ch.isOpen()) ++ throw new RuntimeException("Channel should be closed"); ++ } + } + +- server.close(); ++ // repeat test by connecting to a (probably) non-existent host. This ++ // improves the chance that the connect will not fail immediately. ++ if (!skipSlowConnectTest) { ++ try (AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) { ++ try { ++ ch.connect(genSocketAddress()).get(); ++ } catch (ExecutionException x) { ++ // failed to establish connection ++ if (ch.isOpen()) ++ throw new RuntimeException("Channel should be closed"); ++ } ++ } ++ } + } + + static void testCloseWhenPending() throws Exception { +@@ -249,466 +275,460 @@ + + System.out.println("-- asynchronous close when reading --"); + +- Server server = new Server(); +- ch = AsynchronousSocketChannel.open(); +- ch.connect(server.address()).get(); ++ try (Server server = new Server()) { ++ ch = AsynchronousSocketChannel.open(); ++ ch.connect(server.address()).get(); + +- ByteBuffer dst = ByteBuffer.allocateDirect(100); +- Future<Integer> result = ch.read(dst); ++ ByteBuffer dst = ByteBuffer.allocateDirect(100); ++ Future<Integer> result = ch.read(dst); + +- // attempt a second read - should fail with ReadPendingException +- ByteBuffer buf = ByteBuffer.allocateDirect(100); +- try { +- ch.read(buf); +- throw new RuntimeException("ReadPendingException expected"); +- } catch (ReadPendingException x) { +- } ++ // attempt a second read - should fail with ReadPendingException ++ ByteBuffer buf = ByteBuffer.allocateDirect(100); ++ try { ++ ch.read(buf); ++ throw new RuntimeException("ReadPendingException expected"); ++ } catch (ReadPendingException x) { ++ } + +- // close channel (should cause initial read to complete) +- ch.close(); ++ // close channel (should cause initial read to complete) ++ ch.close(); ++ server.accept().close(); + +- // check that AsynchronousCloseException is thrown +- try { +- result.get(); +- throw new RuntimeException("Should not read"); +- } catch (ExecutionException x) { +- if (!(x.getCause() instanceof AsynchronousCloseException)) +- throw new RuntimeException(x); +- } ++ // check that AsynchronousCloseException is thrown ++ try { ++ result.get(); ++ throw new RuntimeException("Should not read"); ++ } catch (ExecutionException x) { ++ if (!(x.getCause() instanceof AsynchronousCloseException)) ++ throw new RuntimeException(x); ++ } + +- System.out.println("-- asynchronous close when writing --"); ++ System.out.println("-- asynchronous close when writing --"); + +- ch = AsynchronousSocketChannel.open(); +- ch.connect(server.address()).get(); ++ ch = AsynchronousSocketChannel.open(); ++ ch.connect(server.address()).get(); + +- final AtomicReference<Throwable> writeException = +- new AtomicReference<Throwable>(); ++ final AtomicReference<Throwable> writeException = ++ new AtomicReference<Throwable>(); + +- // write bytes to fill socket buffer +- ch.write(genBuffer(), ch, new CompletionHandler<Integer,AsynchronousSocketChannel>() { +- public void completed(Integer result, AsynchronousSocketChannel ch) { +- ch.write(genBuffer(), ch, this); +- } +- public void failed(Throwable x, AsynchronousSocketChannel ch) { +- writeException.set(x); +- } +- }); ++ // write bytes to fill socket buffer ++ ch.write(genBuffer(), ch, new CompletionHandler<Integer,AsynchronousSocketChannel>() { ++ public void completed(Integer result, AsynchronousSocketChannel ch) { ++ ch.write(genBuffer(), ch, this); ++ } ++ public void failed(Throwable x, AsynchronousSocketChannel ch) { ++ writeException.set(x); ++ } ++ }); + +- // give time for socket buffer to fill up. +- Thread.sleep(5*1000); ++ // give time for socket buffer to fill up. ++ Thread.sleep(5*1000); + +- // attempt a concurrent write - should fail with WritePendingException +- try { +- ch.write(genBuffer()); +- throw new RuntimeException("WritePendingException expected"); +- } catch (WritePendingException x) { +- } ++ // attempt a concurrent write - should fail with WritePendingException ++ try { ++ ch.write(genBuffer()); ++ throw new RuntimeException("WritePendingException expected"); ++ } catch (WritePendingException x) { ++ } + +- // close channel - should cause initial write to complete +- ch.close(); ++ // close channel - should cause initial write to complete ++ ch.close(); ++ server.accept().close(); + +- // wait for exception +- while (writeException.get() == null) { +- Thread.sleep(100); ++ // wait for exception ++ while (writeException.get() == null) { ++ Thread.sleep(100); ++ } ++ if (!(writeException.get() instanceof AsynchronousCloseException)) ++ throw new RuntimeException("AsynchronousCloseException expected"); + } +- if (!(writeException.get() instanceof AsynchronousCloseException)) +- throw new RuntimeException("AsynchronousCloseException expected"); +- +- server.close(); + } + + static void testCancel() throws Exception { + System.out.println("-- cancel --"); + +- Server server = new Server(); ++ try (Server server = new Server()) { ++ for (int i=0; i<2; i++) { ++ boolean mayInterruptIfRunning = (i == 0) ? false : true; ++ ++ // establish loopback connection ++ AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); ++ ch.connect(server.address()).get(); ++ SocketChannel peer = server.accept(); ++ ++ // start read operation ++ ByteBuffer buf = ByteBuffer.allocate(1); ++ Future<Integer> res = ch.read(buf); ++ ++ // cancel operation ++ boolean cancelled = res.cancel(mayInterruptIfRunning); ++ ++ // check post-conditions ++ if (!res.isDone()) ++ throw new RuntimeException("isDone should return true"); ++ if (res.isCancelled() != cancelled) ++ throw new RuntimeException("isCancelled not consistent"); ++ try { ++ res.get(); ++ throw new RuntimeException("CancellationException expected"); ++ } catch (CancellationException x) { ++ } ++ try { ++ res.get(1, TimeUnit.SECONDS); ++ throw new RuntimeException("CancellationException expected"); ++ } catch (CancellationException x) { ++ } ++ ++ // check that the cancel doesn't impact writing to the channel ++ if (!mayInterruptIfRunning) { ++ buf = ByteBuffer.wrap("a".getBytes()); ++ ch.write(buf).get(); ++ } + +- for (int i=0; i<2; i++) { +- boolean mayInterruptIfRunning = (i == 0) ? false : true; ++ ch.close(); ++ peer.close(); ++ } ++ } ++ } + +- // establish loopback connection +- AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); ++ static void testRead1() throws Exception { ++ System.out.println("-- read (1) --"); ++ ++ try (Server server = new Server()) { ++ final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); + ch.connect(server.address()).get(); +- SocketChannel peer = server.accept(); + +- // start read operation ++ // read with 0 bytes remaining should complete immediately + ByteBuffer buf = ByteBuffer.allocate(1); +- Future<Integer> res = ch.read(buf); +- +- // cancel operation +- boolean cancelled = res.cancel(mayInterruptIfRunning); ++ buf.put((byte)0); ++ int n = ch.read(buf).get(); ++ if (n != 0) ++ throw new RuntimeException("0 expected"); ++ ++ // write bytes and close connection ++ ByteBuffer src = genBuffer(); ++ try (SocketChannel sc = server.accept()) { ++ sc.setOption(SO_SNDBUF, src.remaining()); ++ while (src.hasRemaining()) ++ sc.write(src); ++ } ++ ++ // reads should complete immediately ++ final ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity() + 100); ++ final CountDownLatch latch = new CountDownLatch(1); ++ ch.read(dst, (Void)null, new CompletionHandler<Integer,Void>() { ++ public void completed(Integer result, Void att) { ++ int n = result; ++ if (n > 0) { ++ ch.read(dst, (Void)null, this); ++ } else { ++ latch.countDown(); ++ } ++ } ++ public void failed(Throwable exc, Void att) { ++ } ++ }); + +- // check post-conditions +- if (!res.isDone()) +- throw new RuntimeException("isDone should return true"); +- if (res.isCancelled() != cancelled) +- throw new RuntimeException("isCancelled not consistent"); +- try { +- res.get(); +- throw new RuntimeException("CancellationException expected"); +- } catch (CancellationException x) { +- } +- try { +- res.get(1, TimeUnit.SECONDS); +- throw new RuntimeException("CancellationException expected"); +- } catch (CancellationException x) { +- } ++ latch.await(); + +- // check that the cancel doesn't impact writing to the channel +- if (!mayInterruptIfRunning) { +- buf = ByteBuffer.wrap("a".getBytes()); +- ch.write(buf).get(); ++ // check buffers ++ src.flip(); ++ dst.flip(); ++ if (!src.equals(dst)) { ++ throw new RuntimeException("Contents differ"); + } + ++ // close channel + ch.close(); +- peer.close(); +- } +- +- server.close(); +- } +- +- static void testRead1() throws Exception { +- System.out.println("-- read (1) --"); +- +- Server server = new Server(); +- final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); +- ch.connect(server.address()).get(); +- +- // read with 0 bytes remaining should complete immediately +- ByteBuffer buf = ByteBuffer.allocate(1); +- buf.put((byte)0); +- int n = ch.read(buf).get(); +- if (n != 0) +- throw new RuntimeException("0 expected"); +- +- // write bytes and close connection +- SocketChannel sc = server.accept(); +- ByteBuffer src = genBuffer(); +- sc.setOption(StandardSocketOptions.SO_SNDBUF, src.remaining()); +- while (src.hasRemaining()) +- sc.write(src); +- sc.close(); +- +- // reads should complete immediately +- final ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity() + 100); +- final CountDownLatch latch = new CountDownLatch(1); +- ch.read(dst, (Void)null, new CompletionHandler<Integer,Void>() { +- public void completed(Integer result, Void att) { +- int n = result; +- if (n > 0) { +- ch.read(dst, (Void)null, this); +- } else { +- latch.countDown(); +- } +- } +- public void failed(Throwable exc, Void att) { +- } +- }); +- +- latch.await(); +- +- // check buffers +- src.flip(); +- dst.flip(); +- if (!src.equals(dst)) { +- throw new RuntimeException("Contents differ"); +- } + +- // close channel +- ch.close(); +- +- // check read fails with ClosedChannelException +- try { +- ch.read(dst).get(); +- throw new RuntimeException("ExecutionException expected"); +- } catch (ExecutionException x) { +- if (!(x.getCause() instanceof ClosedChannelException)) +- throw new RuntimeException("Cause of ClosedChannelException expected"); ++ // check read fails with ClosedChannelException ++ try { ++ ch.read(dst).get(); ++ throw new RuntimeException("ExecutionException expected"); ++ } catch (ExecutionException x) { ++ if (!(x.getCause() instanceof ClosedChannelException)) ++ throw new RuntimeException("Cause of ClosedChannelException expected"); ++ } + } +- +- server.close(); + } + + static void testRead2() throws Exception { + System.out.println("-- read (2) --"); + +- Server server = new Server(); ++ try (Server server = new Server()) { ++ final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); ++ ch.connect(server.address()).get(); ++ SocketChannel sc = server.accept(); + +- final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); +- ch.connect(server.address()).get(); +- SocketChannel sc = server.accept(); +- +- ByteBuffer src = genBuffer(); +- +- // read until the buffer is full +- final ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity()); +- final CountDownLatch latch = new CountDownLatch(1); +- ch.read(dst, (Void)null, new CompletionHandler<Integer,Void>() { +- public void completed(Integer result, Void att) { +- if (dst.hasRemaining()) { +- ch.read(dst, (Void)null, this); +- } else { +- latch.countDown(); +- } +- } +- public void failed(Throwable exc, Void att) { +- } +- }); +- +- // trickle the writing +- do { +- int rem = src.remaining(); +- int size = (rem <= 100) ? rem : 50 + rand.nextInt(rem - 100); +- ByteBuffer buf = ByteBuffer.allocate(size); +- for (int i=0; i<size; i++) +- buf.put(src.get()); +- buf.flip(); +- Thread.sleep(50 + rand.nextInt(1500)); +- while (buf.hasRemaining()) +- sc.write(buf); +- } while (src.hasRemaining()); +- +- // wait until ascynrhonous reading has completed +- latch.await(); +- +- // check buffers +- src.flip(); +- dst.flip(); +- if (!src.equals(dst)) { +- throw new RuntimeException("Contents differ"); +- } ++ ByteBuffer src = genBuffer(); + +- sc.close(); +- ch.close(); +- server.close(); ++ // read until the buffer is full ++ final ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity()); ++ final CountDownLatch latch = new CountDownLatch(1); ++ ch.read(dst, (Void)null, new CompletionHandler<Integer,Void>() { ++ public void completed(Integer result, Void att) { ++ if (dst.hasRemaining()) { ++ ch.read(dst, (Void)null, this); ++ } else { ++ latch.countDown(); ++ } ++ } ++ public void failed(Throwable exc, Void att) { ++ } ++ }); ++ ++ // trickle the writing ++ do { ++ int rem = src.remaining(); ++ int size = (rem <= 100) ? rem : 50 + rand.nextInt(rem - 100); ++ ByteBuffer buf = ByteBuffer.allocate(size); ++ for (int i=0; i<size; i++) ++ buf.put(src.get()); ++ buf.flip(); ++ Thread.sleep(50 + rand.nextInt(1500)); ++ while (buf.hasRemaining()) ++ sc.write(buf); ++ } while (src.hasRemaining()); ++ ++ // wait until ascynrhonous reading has completed ++ latch.await(); ++ ++ // check buffers ++ src.flip(); ++ dst.flip(); ++ if (!src.equals(dst)) { ++ throw new RuntimeException("Contents differ"); ++ } ++ ++ sc.close(); ++ ch.close(); ++ } + } + + // exercise scattering read + static void testRead3() throws Exception { + System.out.println("-- read (3) --"); + +- Server server = new Server(); +- final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); +- ch.connect(server.address()).get(); +- SocketChannel sc = server.accept(); +- +- ByteBuffer[] dsts = new ByteBuffer[3]; +- for (int i=0; i<dsts.length; i++) { +- dsts[i] = ByteBuffer.allocateDirect(100); +- } +- +- // scattering read that completes ascynhronously +- final CountDownLatch l1 = new CountDownLatch(1); +- ch.read(dsts, 0, dsts.length, 0L, TimeUnit.SECONDS, (Void)null, +- new CompletionHandler<Long,Void>() { +- public void completed(Long result, Void att) { +- long n = result; +- if (n <= 0) +- throw new RuntimeException("No bytes read"); +- l1.countDown(); +- } +- public void failed(Throwable exc, Void att) { +- } +- }); ++ try (Server server = new Server()) { ++ final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); ++ ch.connect(server.address()).get(); ++ SocketChannel sc = server.accept(); + +- // write some bytes +- sc.write(genBuffer()); ++ ByteBuffer[] dsts = new ByteBuffer[3]; ++ for (int i=0; i<dsts.length; i++) { ++ dsts[i] = ByteBuffer.allocateDirect(100); ++ } ++ ++ // scattering read that completes ascynhronously ++ final CountDownLatch l1 = new CountDownLatch(1); ++ ch.read(dsts, 0, dsts.length, 0L, TimeUnit.SECONDS, (Void)null, ++ new CompletionHandler<Long,Void>() { ++ public void completed(Long result, Void att) { ++ long n = result; ++ if (n <= 0) ++ throw new RuntimeException("No bytes read"); ++ l1.countDown(); ++ } ++ public void failed(Throwable exc, Void att) { ++ } ++ }); + +- // read should now complete +- l1.await(); ++ // write some bytes ++ sc.write(genBuffer()); + +- // write more bytes +- sc.write(genBuffer()); +- +- // read should complete immediately +- for (int i=0; i<dsts.length; i++) { +- dsts[i].rewind(); +- } +- +- final CountDownLatch l2 = new CountDownLatch(1); +- ch.read(dsts, 0, dsts.length, 0L, TimeUnit.SECONDS, (Void)null, +- new CompletionHandler<Long,Void>() { +- public void completed(Long result, Void att) { +- long n = result; +- if (n <= 0) +- throw new RuntimeException("No bytes read"); +- l2.countDown(); +- } +- public void failed(Throwable exc, Void att) { +- } +- }); +- l2.await(); ++ // read should now complete ++ l1.await(); + +- ch.close(); +- sc.close(); +- server.close(); ++ // write more bytes ++ sc.write(genBuffer()); ++ ++ // read should complete immediately ++ for (int i=0; i<dsts.length; i++) { ++ dsts[i].rewind(); ++ } ++ ++ final CountDownLatch l2 = new CountDownLatch(1); ++ ch.read(dsts, 0, dsts.length, 0L, TimeUnit.SECONDS, (Void)null, ++ new CompletionHandler<Long,Void>() { ++ public void completed(Long result, Void att) { ++ long n = result; ++ if (n <= 0) ++ throw new RuntimeException("No bytes read"); ++ l2.countDown(); ++ } ++ public void failed(Throwable exc, Void att) { ++ } ++ }); ++ l2.await(); ++ ++ ch.close(); ++ sc.close(); ++ } + } + + static void testWrite1() throws Exception { + System.out.println("-- write (1) --"); + +- Server server = new Server(); +- final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); +- ch.connect(server.address()).get(); +- SocketChannel sc = server.accept(); +- +- // write with 0 bytes remaining should complete immediately +- ByteBuffer buf = ByteBuffer.allocate(1); +- buf.put((byte)0); +- int n = ch.write(buf).get(); +- if (n != 0) +- throw new RuntimeException("0 expected"); +- +- // write all bytes and close connection when done +- final ByteBuffer src = genBuffer(); +- ch.write(src, (Void)null, new CompletionHandler<Integer,Void>() { +- public void completed(Integer result, Void att) { +- if (src.hasRemaining()) { +- ch.write(src, (Void)null, this); +- } else { +- try { +- ch.close(); +- } catch (IOException ignore) { } +- } +- } +- public void failed(Throwable exc, Void att) { +- } +- }); +- +- // read to EOF or buffer full +- ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity() + 100); +- do { +- n = sc.read(dst); +- } while (n > 0); +- sc.close(); +- +- // check buffers +- src.flip(); +- dst.flip(); +- if (!src.equals(dst)) { +- throw new RuntimeException("Contents differ"); +- } ++ try (Server server = new Server()) { ++ final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); ++ ch.connect(server.address()).get(); ++ SocketChannel sc = server.accept(); + +- // check write fails with ClosedChannelException +- try { +- ch.read(dst).get(); +- throw new RuntimeException("ExecutionException expected"); +- } catch (ExecutionException x) { +- if (!(x.getCause() instanceof ClosedChannelException)) +- throw new RuntimeException("Cause of ClosedChannelException expected"); +- } ++ // write with 0 bytes remaining should complete immediately ++ ByteBuffer buf = ByteBuffer.allocate(1); ++ buf.put((byte)0); ++ int n = ch.write(buf).get(); ++ if (n != 0) ++ throw new RuntimeException("0 expected"); ++ ++ // write all bytes and close connection when done ++ final ByteBuffer src = genBuffer(); ++ ch.write(src, (Void)null, new CompletionHandler<Integer,Void>() { ++ public void completed(Integer result, Void att) { ++ if (src.hasRemaining()) { ++ ch.write(src, (Void)null, this); ++ } else { ++ try { ++ ch.close(); ++ } catch (IOException ignore) { } ++ } ++ } ++ public void failed(Throwable exc, Void att) { ++ } ++ }); + +- server.close(); ++ // read to EOF or buffer full ++ ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity() + 100); ++ do { ++ n = sc.read(dst); ++ } while (n > 0); ++ sc.close(); ++ ++ // check buffers ++ src.flip(); ++ dst.flip(); ++ if (!src.equals(dst)) { ++ throw new RuntimeException("Contents differ"); ++ } ++ ++ // check write fails with ClosedChannelException ++ try { ++ ch.read(dst).get(); ++ throw new RuntimeException("ExecutionException expected"); ++ } catch (ExecutionException x) { ++ if (!(x.getCause() instanceof ClosedChannelException)) ++ throw new RuntimeException("Cause of ClosedChannelException expected"); ++ } ++ } + } + + // exercise gathering write + static void testWrite2() throws Exception { + System.out.println("-- write (2) --"); + +- Server server = new Server(); +- final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); +- ch.connect(server.address()).get(); +- SocketChannel sc = server.accept(); +- +- // number of bytes written +- final AtomicLong bytesWritten = new AtomicLong(0); +- +- // write buffers (should complete immediately) +- ByteBuffer[] srcs = genBuffers(1); +- final CountDownLatch l1 = new CountDownLatch(1); +- ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, (Void)null, +- new CompletionHandler<Long,Void>() { +- public void completed(Long result, Void att) { +- long n = result; +- if (n <= 0) +- throw new RuntimeException("No bytes read"); +- bytesWritten.addAndGet(n); +- l1.countDown(); +- } +- public void failed(Throwable exc, Void att) { +- } +- }); +- l1.await(); ++ try (Server server = new Server()) { ++ final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); ++ ch.connect(server.address()).get(); ++ SocketChannel sc = server.accept(); + +- // set to true to signal that no more buffers should be written +- final AtomicBoolean continueWriting = new AtomicBoolean(true); ++ // number of bytes written ++ final AtomicLong bytesWritten = new AtomicLong(0); + +- // write until socket buffer is full so as to create the conditions +- // for when a write does not complete immediately +- srcs = genBuffers(1); +- ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, (Void)null, +- new CompletionHandler<Long,Void>() { +- public void completed(Long result, Void att) { +- long n = result; +- if (n <= 0) +- throw new RuntimeException("No bytes written"); +- bytesWritten.addAndGet(n); +- if (continueWriting.get()) { +- ByteBuffer[] srcs = genBuffers(8); +- ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, +- (Void)null, this); ++ // write buffers (should complete immediately) ++ ByteBuffer[] srcs = genBuffers(1); ++ final CountDownLatch l1 = new CountDownLatch(1); ++ ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, (Void)null, ++ new CompletionHandler<Long,Void>() { ++ public void completed(Long result, Void att) { ++ long n = result; ++ if (n <= 0) ++ throw new RuntimeException("No bytes read"); ++ bytesWritten.addAndGet(n); ++ l1.countDown(); + } +- } +- public void failed(Throwable exc, Void att) { +- } +- }); ++ public void failed(Throwable exc, Void att) { ++ } ++ }); ++ l1.await(); + +- // give time for socket buffer to fill up. +- Thread.sleep(5*1000); ++ // set to true to signal that no more buffers should be written ++ final AtomicBoolean continueWriting = new AtomicBoolean(true); + +- // signal handler to stop further writing +- continueWriting.set(false); ++ // write until socket buffer is full so as to create the conditions ++ // for when a write does not complete immediately ++ srcs = genBuffers(1); ++ ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, (Void)null, ++ new CompletionHandler<Long,Void>() { ++ public void completed(Long result, Void att) { ++ long n = result; ++ if (n <= 0) ++ throw new RuntimeException("No bytes written"); ++ bytesWritten.addAndGet(n); ++ if (continueWriting.get()) { ++ ByteBuffer[] srcs = genBuffers(8); ++ ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, ++ (Void)null, this); ++ } ++ } ++ public void failed(Throwable exc, Void att) { ++ } ++ }); + +- // read until done +- ByteBuffer buf = ByteBuffer.allocateDirect(4096); +- long total = 0L; +- do { +- int n = sc.read(buf); +- if (n <= 0) +- throw new RuntimeException("No bytes read"); +- buf.rewind(); +- total += n; +- } while (total < bytesWritten.get()); ++ // give time for socket buffer to fill up. ++ Thread.sleep(5*1000); + +- ch.close(); +- sc.close(); +- server.close(); ++ // signal handler to stop further writing ++ continueWriting.set(false); ++ ++ // read until done ++ ByteBuffer buf = ByteBuffer.allocateDirect(4096); ++ long total = 0L; ++ do { ++ int n = sc.read(buf); ++ if (n <= 0) ++ throw new RuntimeException("No bytes read"); ++ buf.rewind(); ++ total += n; ++ } while (total < bytesWritten.get()); ++ ++ ch.close(); ++ sc.close(); ++ } + } + + static void testShutdown() throws Exception { + System.out.println("-- shutdown--"); + +- Server server = new Server(); +- AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); +- ch.connect(server.address()).get(); +- SocketChannel sc = server.accept(); +- +- ByteBuffer buf = ByteBuffer.allocateDirect(1000); +- int n; +- +- // check read +- ch.shutdownInput(); +- n = ch.read(buf).get(); +- if (n != -1) +- throw new RuntimeException("-1 expected"); +- // check full with full buffer +- buf.put(new byte[100]); +- n = ch.read(buf).get(); +- if (n != -1) +- throw new RuntimeException("-1 expected"); +- +- // check write +- ch.shutdownOutput(); +- try { +- ch.write(buf).get(); +- throw new RuntimeException("ClosedChannelException expected"); +- } catch (ExecutionException x) { +- if (!(x.getCause() instanceof ClosedChannelException)) +- throw new RuntimeException("ClosedChannelException expected"); ++ try (Server server = new Server(); ++ AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) ++ { ++ ch.connect(server.address()).get(); ++ try (SocketChannel peer = server.accept()) { ++ ByteBuffer buf = ByteBuffer.allocateDirect(1000); ++ int n; ++ ++ // check read ++ ch.shutdownInput(); ++ n = ch.read(buf).get(); ++ if (n != -1) ++ throw new RuntimeException("-1 expected"); ++ // check full with full buffer ++ buf.put(new byte[100]); ++ n = ch.read(buf).get(); ++ if (n != -1) ++ throw new RuntimeException("-1 expected"); ++ ++ // check write ++ ch.shutdownOutput(); ++ try { ++ ch.write(buf).get(); ++ throw new RuntimeException("ClosedChannelException expected"); ++ } catch (ExecutionException x) { ++ if (!(x.getCause() instanceof ClosedChannelException)) ++ throw new RuntimeException("ClosedChannelException expected"); ++ } ++ } + } +- +- sc.close(); +- ch.close(); +- server.close(); + } + + static void testTimeout() throws Exception { +@@ -720,88 +740,88 @@ + } + + static void testTimeout(final long timeout, final TimeUnit unit) throws Exception { +- Server server = new Server(); +- AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); +- ch.connect(server.address()).get(); +- +- ByteBuffer dst = ByteBuffer.allocate(512); +- +- final AtomicReference<Throwable> readException = new AtomicReference<Throwable>(); +- +- // this read should timeout if value is > 0 +- ch.read(dst, timeout, unit, null, new CompletionHandler<Integer,Void>() { +- public void completed(Integer result, Void att) { +- readException.set(new RuntimeException("Should not complete")); +- } +- public void failed(Throwable exc, Void att) { +- readException.set(exc); +- } +- }); +- if (timeout > 0L) { +- // wait for exception +- while (readException.get() == null) { +- Thread.sleep(100); +- } +- if (!(readException.get() instanceof InterruptedByTimeoutException)) +- throw new RuntimeException("InterruptedByTimeoutException expected"); ++ try (Server server = new Server()) { ++ AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); ++ ch.connect(server.address()).get(); + +- // after a timeout then further reading should throw unspecified runtime exception +- boolean exceptionThrown = false; +- try { +- ch.read(dst); +- } catch (RuntimeException x) { +- exceptionThrown = true; +- } +- if (!exceptionThrown) +- throw new RuntimeException("RuntimeException expected after timeout."); +- } else { +- Thread.sleep(1000); +- Throwable exc = readException.get(); +- if (exc != null) +- throw new RuntimeException(exc); +- } ++ ByteBuffer dst = ByteBuffer.allocate(512); + +- final AtomicReference<Throwable> writeException = new AtomicReference<Throwable>(); ++ final AtomicReference<Throwable> readException = new AtomicReference<Throwable>(); + +- // write bytes to fill socket buffer +- ch.write(genBuffer(), timeout, unit, ch, +- new CompletionHandler<Integer,AsynchronousSocketChannel>() +- { +- public void completed(Integer result, AsynchronousSocketChannel ch) { +- ch.write(genBuffer(), timeout, unit, ch, this); +- } +- public void failed(Throwable exc, AsynchronousSocketChannel ch) { +- writeException.set(exc); +- } +- }); +- if (timeout > 0) { +- // wait for exception +- while (writeException.get() == null) { +- Thread.sleep(100); ++ // this read should timeout if value is > 0 ++ ch.read(dst, timeout, unit, null, new CompletionHandler<Integer,Void>() { ++ public void completed(Integer result, Void att) { ++ readException.set(new RuntimeException("Should not complete")); ++ } ++ public void failed(Throwable exc, Void att) { ++ readException.set(exc); ++ } ++ }); ++ if (timeout > 0L) { ++ // wait for exception ++ while (readException.get() == null) { ++ Thread.sleep(100); ++ } ++ if (!(readException.get() instanceof InterruptedByTimeoutException)) ++ throw new RuntimeException("InterruptedByTimeoutException expected"); ++ ++ // after a timeout then further reading should throw unspecified runtime exception ++ boolean exceptionThrown = false; ++ try { ++ ch.read(dst); ++ } catch (RuntimeException x) { ++ exceptionThrown = true; ++ } ++ if (!exceptionThrown) ++ throw new RuntimeException("RuntimeException expected after timeout."); ++ } else { ++ Thread.sleep(1000); ++ Throwable exc = readException.get(); ++ if (exc != null) ++ throw new RuntimeException(exc); ++ } ++ ++ final AtomicReference<Throwable> writeException = new AtomicReference<Throwable>(); ++ ++ // write bytes to fill socket buffer ++ ch.write(genBuffer(), timeout, unit, ch, ++ new CompletionHandler<Integer,AsynchronousSocketChannel>() ++ { ++ public void completed(Integer result, AsynchronousSocketChannel ch) { ++ ch.write(genBuffer(), timeout, unit, ch, this); ++ } ++ public void failed(Throwable exc, AsynchronousSocketChannel ch) { ++ writeException.set(exc); ++ } ++ }); ++ if (timeout > 0) { ++ // wait for exception ++ while (writeException.get() == null) { ++ Thread.sleep(100); ++ } ++ if (!(writeException.get() instanceof InterruptedByTimeoutException)) ++ throw new RuntimeException("InterruptedByTimeoutException expected"); ++ ++ // after a timeout then further writing should throw unspecified runtime exception ++ boolean exceptionThrown = false; ++ try { ++ ch.write(genBuffer()); ++ } catch (RuntimeException x) { ++ exceptionThrown = true; ++ } ++ if (!exceptionThrown) ++ throw new RuntimeException("RuntimeException expected after timeout."); ++ } else { ++ Thread.sleep(1000); ++ Throwable exc = writeException.get(); ++ if (exc != null) ++ throw new RuntimeException(exc); + } +- if (!(writeException.get() instanceof InterruptedByTimeoutException)) +- throw new RuntimeException("InterruptedByTimeoutException expected"); + +- // after a timeout then further writing should throw unspecified runtime exception +- boolean exceptionThrown = false; +- try { +- ch.write(genBuffer()); +- } catch (RuntimeException x) { +- exceptionThrown = true; +- } +- if (!exceptionThrown) +- throw new RuntimeException("RuntimeException expected after timeout."); +- } else { +- Thread.sleep(1000); +- Throwable exc = writeException.get(); +- if (exc != null) +- throw new RuntimeException(exc); ++ // clean-up ++ server.accept().close(); ++ ch.close(); + } +- +- // clean-up +- server.accept().close(); +- ch.close(); +- server.close(); + } + + // returns ByteBuffer with random bytes +--- jdk/test/java/nio/channels/AsynchronousSocketChannel/Leaky.java 2012-08-10 10:34:28.000000000 -0700 ++++ jdk/test/java/nio/channels/AsynchronousSocketChannel/Leaky.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -22,9 +22,9 @@ + */ + + /* @test +- * @bug 4607272 6999915 ++ * @bug 4607272 6999915 7185340 + * @summary Unit test for AsynchronousSocketChannel +- * @run main/othervm -XX:+DisableExplicitGC -XX:MaxDirectMemorySize=64m Leaky ++ * @run main/othervm -XX:+DisableExplicitGC -XX:MaxDirectMemorySize=75m Leaky + */ + + import java.nio.ByteBuffer; +--- jdk/test/java/nio/channels/DatagramChannel/AdaptDatagramSocket.java 2012-08-10 10:34:28.000000000 -0700 ++++ jdk/test/java/nio/channels/DatagramChannel/AdaptDatagramSocket.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,29 +27,16 @@ + * @library .. + */ + +-import java.io.*; + import java.net.*; +-import java.nio.*; + import java.nio.channels.*; +-import java.nio.charset.*; + import java.util.*; + + + public class AdaptDatagramSocket { + + static java.io.PrintStream out = System.out; +- + static Random rand = new Random(); + +- static final int ECHO_PORT = 7; +- static final int DISCARD_PORT = 9; +- static final String REMOTE_HOST = TestUtil.HOST; +- +- static final InetSocketAddress echoAddress +- = new InetSocketAddress(REMOTE_HOST, ECHO_PORT); +- static final InetSocketAddress discardAddress +- = new InetSocketAddress(REMOTE_HOST, DISCARD_PORT); +- + static String toString(DatagramPacket dp) { + return ("DatagramPacket[off=" + dp.getOffset() + + ", len=" + dp.getLength() +@@ -88,10 +75,11 @@ + out.println("rtt: " + (System.currentTimeMillis() - start)); + out.println("post op: " + toString(op) + " ip: " + toString(ip)); + +- for (int i = 0; i < ip.getLength(); i++) ++ for (int i = 0; i < ip.getLength(); i++) { + if (ip.getData()[ip.getOffset() + i] + != op.getData()[op.getOffset() + i]) + throw new Exception("Incorrect data received"); ++ } + + if (!(ip.getSocketAddress().equals(dst))) { + throw new Exception("Incorrect sender address, expected: " + dst +@@ -130,8 +118,9 @@ + ds.setSoTimeout(timeout); + out.println("timeout: " + ds.getSoTimeout()); + +- for (int i = 0; i < 5; i++) ++ for (int i = 0; i < 5; i++) { + test(ds, dst, shouldTimeout); ++ } + + // Leave the socket open so that we don't reuse the old src address + //ds.close(); +@@ -139,10 +128,23 @@ + } + + public static void main(String[] args) throws Exception { +- test(echoAddress, 0, false, false); +- test(echoAddress, 0, false, true); +- test(echoAddress, 5000, false, false); +- test(discardAddress, 10, true, false); ++ // need an UDP echo server ++ try (TestServers.UdpEchoServer echoServer ++ = TestServers.UdpEchoServer.startNewServer(100)) { ++ final InetSocketAddress address ++ = new InetSocketAddress(echoServer.getAddress(), ++ echoServer.getPort()); ++ test(address, 0, false, false); ++ test(address, 0, false, true); ++ test(address, 5000, false, false); ++ } ++ try (TestServers.UdpDiscardServer discardServer ++ = TestServers.UdpDiscardServer.startNewServer()) { ++ final InetSocketAddress address ++ = new InetSocketAddress(discardServer.getAddress(), ++ discardServer.getPort()); ++ test(address, 10, true, false); ++ } + } + + } --- jdk/test/java/nio/channels/DatagramChannel/Disconnect.java 2012-08-10 10:34:28.000000000 -0700 +++ jdk/test/java/nio/channels/DatagramChannel/Disconnect.java 1969-12-31 16:00:00.000000000 -0800 @@ -1,77 +0,0 @@ @@ -78313,8 +81004,154 @@ - } - } -} +--- jdk/test/java/nio/channels/DatagramChannel/IsBound.java 2012-08-10 10:34:28.000000000 -0700 ++++ jdk/test/java/nio/channels/DatagramChannel/IsBound.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,21 +34,25 @@ + + public class IsBound { + public static void main(String argv[]) throws Exception { +- InetSocketAddress isa = new InetSocketAddress( +- InetAddress.getByName(TestUtil.HOST), 13); +- ByteBuffer bb = ByteBuffer.allocateDirect(256); +- bb.put("hello".getBytes()); +- bb.flip(); +- +- DatagramChannel dc = DatagramChannel.open(); +- dc.send(bb, isa); +- if(!dc.socket().isBound()) +- throw new Exception("Test failed"); +- dc.close(); +- +- dc = DatagramChannel.open(); +- if(dc.socket().isBound()) +- throw new Exception("Test failed"); +- dc.close(); ++ try (TestServers.UdpDayTimeServer daytimeServer ++ = TestServers.UdpDayTimeServer.startNewServer(100)) { ++ InetSocketAddress isa = new InetSocketAddress( ++ daytimeServer.getAddress(), ++ daytimeServer.getPort()); ++ ByteBuffer bb = ByteBuffer.allocateDirect(256); ++ bb.put("hello".getBytes()); ++ bb.flip(); ++ ++ DatagramChannel dc = DatagramChannel.open(); ++ dc.send(bb, isa); ++ if(!dc.socket().isBound()) ++ throw new Exception("Test failed"); ++ dc.close(); ++ ++ dc = DatagramChannel.open(); ++ if(dc.socket().isBound()) ++ throw new Exception("Test failed"); ++ dc.close(); ++ } + } + } +--- jdk/test/java/nio/channels/DatagramChannel/IsConnected.java 2012-08-10 10:34:28.000000000 -0700 ++++ jdk/test/java/nio/channels/DatagramChannel/IsConnected.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,21 +28,23 @@ + */ + + import java.net.*; +-import java.nio.*; + import java.nio.channels.*; + + + public class IsConnected { + public static void main(String argv[]) throws Exception { +- InetSocketAddress isa = new InetSocketAddress( +- InetAddress.getByName(TestUtil.HOST), 13); +- DatagramChannel dc = DatagramChannel.open(); +- dc.configureBlocking(true); +- dc.connect(isa); +- if (!dc.isConnected()) +- throw new RuntimeException("channel.isConnected inconsistent"); +- if (!dc.socket().isConnected()) +- throw new RuntimeException("socket.isConnected inconsistent"); +- dc.close(); ++ try (TestServers.UdpDayTimeServer daytimeServer ++ = TestServers.UdpDayTimeServer.startNewServer(100)) { ++ InetSocketAddress isa = new InetSocketAddress( ++ daytimeServer.getAddress(), daytimeServer.getPort()); ++ DatagramChannel dc = DatagramChannel.open(); ++ dc.configureBlocking(true); ++ dc.connect(isa); ++ if (!dc.isConnected()) ++ throw new RuntimeException("channel.isConnected inconsistent"); ++ if (!dc.socket().isConnected()) ++ throw new RuntimeException("socket.isConnected inconsistent"); ++ dc.close(); ++ } + } + } +--- jdk/test/java/nio/channels/DatagramChannel/SelectWhenRefused.java 2012-08-10 10:34:29.000000000 -0700 ++++ jdk/test/java/nio/channels/DatagramChannel/SelectWhenRefused.java 2013-05-05 09:38:43.000000000 -0700 +@@ -22,7 +22,7 @@ + */ + + /* @test +- * @bug 6935563 ++ * @bug 6935563 7044870 + * @summary Test that Selector does not select an unconnected DatagramChannel when + * ICMP port unreachable received + */ +@@ -35,14 +35,15 @@ + public class SelectWhenRefused { + + public static void main(String[] args) throws IOException { +- DatagramChannel dc = DatagramChannel.open().bind(new InetSocketAddress(0)); +- int port = dc.socket().getLocalPort(); +- dc.close(); ++ DatagramChannel dc1 = DatagramChannel.open().bind(new InetSocketAddress(0)); ++ int port = dc1.socket().getLocalPort(); + + // datagram sent to this address should be refused + SocketAddress refuser = new InetSocketAddress(InetAddress.getLocalHost(), port); + +- dc = DatagramChannel.open().bind(new InetSocketAddress(0)); ++ DatagramChannel dc = DatagramChannel.open().bind(new InetSocketAddress(0)); ++ dc1.close(); ++ + Selector sel = Selector.open(); + try { + dc.configureBlocking(false); +@@ -52,6 +53,10 @@ + sendDatagram(dc, refuser); + int n = sel.select(2000); + if (n > 0) { ++ sel.selectedKeys().clear(); ++ // BindException will be thrown if another service is using ++ // our expected refuser port, cannot run just exit. ++ DatagramChannel.open().bind(refuser).close(); + throw new RuntimeException("Unexpected wakeup"); + } + +@@ -80,6 +85,8 @@ + throw new RuntimeException("Unexpected wakeup after disconnect"); + } + ++ } catch(BindException e) { ++ // Do nothing, some other test has used this port + } finally { + sel.close(); + dc.close(); --- jdk/test/java/nio/channels/DatagramChannel/SendToUnresolved.java 2012-08-10 10:34:29.000000000 -0700 -+++ jdk/test/java/nio/channels/DatagramChannel/SendToUnresolved.java 2013-03-09 08:44:50.000000000 -0800 ++++ jdk/test/java/nio/channels/DatagramChannel/SendToUnresolved.java 2013-05-05 09:38:43.000000000 -0700 @@ -42,7 +42,7 @@ try { dc.send(bb, sa); @@ -78324,8 +81161,183 @@ // Correct result } dc.close(); +--- jdk/test/java/nio/channels/Selector/Alias.java 2012-08-10 10:34:29.000000000 -0700 ++++ jdk/test/java/nio/channels/Selector/Alias.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,12 +27,11 @@ + * @library .. + */ + +-import java.io.*; + import java.net.*; + import java.nio.*; + import java.nio.channels.*; +-import java.util.*; + import java.nio.channels.spi.SelectorProvider; ++import java.util.*; + + public class Alias { + +@@ -40,18 +39,26 @@ + static int LIMIT = 20; // Hangs after just 1 if problem is present + + public static void main(String[] args) throws Exception { +- test1(); ++ try (TestServers.DayTimeServer daytimeServer ++ = TestServers.DayTimeServer.startNewServer(100)) { ++ test1(daytimeServer); ++ } + } + +- public static void test1() throws Exception { ++ static void test1(TestServers.DayTimeServer daytimeServer) throws Exception { + Selector selector = SelectorProvider.provider().openSelector(); +- InetAddress myAddress=InetAddress.getByName(TestUtil.HOST); +- InetSocketAddress isa = new InetSocketAddress(myAddress,13); ++ InetAddress myAddress = daytimeServer.getAddress(); ++ InetSocketAddress isa ++ = new InetSocketAddress(myAddress, ++ daytimeServer.getPort()); + + for (int j=0; j<LIMIT; j++) { + SocketChannel sc = SocketChannel.open(); + sc.configureBlocking(false); + boolean result = sc.connect(isa); ++ ++ // On some platforms - given that we're using a local server, ++ // we may not enter into the if () { } statement below... + if (!result) { + SelectionKey key = sc.register(selector, + SelectionKey.OP_CONNECT); +--- jdk/test/java/nio/channels/Selector/BasicConnect.java 2012-08-10 10:34:30.000000000 -0700 ++++ jdk/test/java/nio/channels/Selector/BasicConnect.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,12 +27,10 @@ + * @library .. + */ + +-import java.io.*; + import java.net.*; + import java.nio.*; + import java.nio.channels.*; + import java.nio.channels.spi.SelectorProvider; +-import java.nio.charset.*; + import java.util.*; + + +@@ -44,52 +42,57 @@ + + public class BasicConnect { + +- static final int PORT = 7; // echo +- static final String HOST = TestUtil.HOST; +- + public static void main(String[] args) throws Exception { + Selector connectSelector = + SelectorProvider.provider().openSelector(); +- InetSocketAddress isa +- = new InetSocketAddress(InetAddress.getByName(HOST), PORT); +- SocketChannel sc = SocketChannel.open(); +- sc.configureBlocking(false); +- boolean result = sc.connect(isa); +- while (!result) { +- SelectionKey connectKey = sc.register(connectSelector, +- SelectionKey.OP_CONNECT); +- int keysAdded = connectSelector.select(); +- if (keysAdded > 0) { +- Set readyKeys = connectSelector.selectedKeys(); +- Iterator i = readyKeys.iterator(); +- while (i.hasNext()) { +- SelectionKey sk = (SelectionKey)i.next(); +- i.remove(); +- SocketChannel nextReady = (SocketChannel)sk.channel(); +- result = nextReady.finishConnect(); +- if (result) +- sk.cancel(); ++ try (TestServers.EchoServer echoServer ++ = TestServers.EchoServer.startNewServer(100)) { ++ InetSocketAddress isa ++ = new InetSocketAddress(echoServer.getAddress(), ++ echoServer.getPort()); ++ SocketChannel sc = SocketChannel.open(); ++ sc.configureBlocking(false); ++ boolean result = sc.connect(isa); ++ if (result) { ++ System.out.println("Socket immediately connected on " ++ + System.getProperty("os.name") ++ + ": " + sc); ++ } ++ while (!result) { ++ SelectionKey connectKey = sc.register(connectSelector, ++ SelectionKey.OP_CONNECT); ++ int keysAdded = connectSelector.select(); ++ if (keysAdded > 0) { ++ Set readyKeys = connectSelector.selectedKeys(); ++ Iterator i = readyKeys.iterator(); ++ while (i.hasNext()) { ++ SelectionKey sk = (SelectionKey)i.next(); ++ i.remove(); ++ SocketChannel nextReady = (SocketChannel)sk.channel(); ++ result = nextReady.finishConnect(); ++ if (result) ++ sk.cancel(); ++ } + } + } +- } + +- byte[] bs = new byte[] { (byte)0xca, (byte)0xfe, +- (byte)0xba, (byte)0xbe }; +- ByteBuffer bb = ByteBuffer.wrap(bs); +- sc.configureBlocking(true); +- sc.write(bb); +- bb.rewind(); +- +- ByteBuffer bb2 = ByteBuffer.allocateDirect(100); +- int n = sc.read(bb2); +- bb2.flip(); +- +- sc.close(); +- connectSelector.close(); +- +- if (!bb.equals(bb2)) +- throw new Exception("Echoed bytes incorrect: Sent " +- + bb + ", got " + bb2); ++ byte[] bs = new byte[] { (byte)0xca, (byte)0xfe, ++ (byte)0xba, (byte)0xbe }; ++ ByteBuffer bb = ByteBuffer.wrap(bs); ++ sc.configureBlocking(true); ++ sc.write(bb); ++ bb.rewind(); ++ ++ ByteBuffer bb2 = ByteBuffer.allocateDirect(100); ++ int n = sc.read(bb2); ++ bb2.flip(); ++ ++ sc.close(); ++ connectSelector.close(); ++ ++ if (!bb.equals(bb2)) ++ throw new Exception("Echoed bytes incorrect: Sent " ++ + bb + ", got " + bb2); ++ } + } +- + } --- jdk/test/java/nio/channels/Selector/ChangingInterests.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/java/nio/channels/Selector/ChangingInterests.java 2013-01-16 08:58:12.000000000 -0800 ++++ jdk/test/java/nio/channels/Selector/ChangingInterests.java 2013-05-05 09:38:43.000000000 -0700 @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -78517,8 +81529,1756 @@ + } + +} +--- jdk/test/java/nio/channels/Selector/Connect.java 2012-08-10 10:34:30.000000000 -0700 ++++ jdk/test/java/nio/channels/Selector/Connect.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,12 +27,11 @@ + * @library .. + */ + +-import java.io.*; + import java.net.*; + import java.nio.*; + import java.nio.channels.*; +-import java.util.*; + import java.nio.channels.spi.SelectorProvider; ++import java.util.*; + + public class Connect { + +@@ -40,12 +39,18 @@ + static int LIMIT = 100; + + public static void main(String[] args) throws Exception { +- scaleTest(); ++ try (TestServers.DayTimeServer daytimeServer ++ = TestServers.DayTimeServer.startNewServer(50)) { ++ scaleTest(daytimeServer); ++ } + } + +- public static void scaleTest() throws Exception { +- InetAddress myAddress=InetAddress.getByName(TestUtil.HOST); +- InetSocketAddress isa = new InetSocketAddress(myAddress,13); ++ static void scaleTest(TestServers.DayTimeServer daytimeServer) ++ throws Exception ++ { ++ InetAddress myAddress = daytimeServer.getAddress(); ++ InetSocketAddress isa ++ = new InetSocketAddress(myAddress, daytimeServer.getPort()); + + for (int j=0; j<LIMIT; j++) { + SocketChannel sc = SocketChannel.open(); +--- jdk/test/java/nio/channels/Selector/ConnectWrite.java 2012-08-10 10:34:30.000000000 -0700 ++++ jdk/test/java/nio/channels/Selector/ConnectWrite.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,23 +27,25 @@ + * @library .. + */ + +-import java.io.*; + import java.net.*; +-import java.nio.*; + import java.nio.channels.*; +-import java.util.*; + import java.nio.channels.spi.SelectorProvider; ++import java.util.*; + + public class ConnectWrite { + + public static void main(String[] args) throws Exception { +- test1(13); ++ try (TestServers.DayTimeServer daytimeServer ++ = TestServers.DayTimeServer.startNewServer(25)) { ++ test1(daytimeServer); ++ } + } + +- public static void test1(int port) throws Exception { ++ static void test1(TestServers.DayTimeServer daytimeServer) throws Exception { + Selector selector = SelectorProvider.provider().openSelector(); +- InetAddress myAddress=InetAddress.getByName(TestUtil.HOST); +- InetSocketAddress isa = new InetSocketAddress(myAddress, port); ++ InetAddress myAddress = daytimeServer.getAddress(); ++ InetSocketAddress isa ++ = new InetSocketAddress(myAddress, daytimeServer.getPort()); + SocketChannel sc = SocketChannel.open(); + try { + sc.configureBlocking(false); +--- jdk/test/java/nio/channels/Selector/KeysReady.java 2012-08-10 10:34:30.000000000 -0700 ++++ jdk/test/java/nio/channels/Selector/KeysReady.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,21 +28,15 @@ + */ + + import java.net.*; +-import java.io.*; +-import java.nio.*; + import java.nio.channels.*; +-import java.nio.charset.*; + import java.nio.channels.spi.SelectorProvider; + + public class KeysReady { + +- static final int DAYTIME_PORT = 13; +- static final String DAYTIME_HOST = TestUtil.HOST; +- +- static void test() throws Exception { ++ static void test(TestServers.DayTimeServer dayTimeServer) throws Exception { + InetSocketAddress isa +- = new InetSocketAddress(InetAddress.getByName(DAYTIME_HOST), +- DAYTIME_PORT); ++ = new InetSocketAddress(dayTimeServer.getAddress(), ++ dayTimeServer.getPort()); + SocketChannel sc = SocketChannel.open(); + sc.configureBlocking(false); + sc.connect(isa); +@@ -64,7 +58,10 @@ + } + + public static void main(String[] args) throws Exception { +- test(); ++ try (TestServers.DayTimeServer daytimeServer ++ = TestServers.DayTimeServer.startNewServer(50)) { ++ test(daytimeServer); ++ } + } + + } +--- jdk/test/java/nio/channels/SocketChannel/AdaptSocket.java 2012-08-10 10:34:30.000000000 -0700 ++++ jdk/test/java/nio/channels/SocketChannel/AdaptSocket.java 2013-05-05 09:38:43.000000000 -0700 +@@ -35,19 +35,16 @@ + + static java.io.PrintStream out = System.out; + +- static final int ECHO_PORT = 7; +- static final int DAYTIME_PORT = 13; +- static final String REMOTE_HOST = TestUtil.HOST; +- static final String VERY_REMOTE_HOST = TestUtil.FAR_HOST; +- +- static void test(String hn, int timeout, boolean shouldTimeout) ++ static void test(TestServers.DayTimeServer dayTimeServer, ++ int timeout, ++ boolean shouldTimeout) + throws Exception + { + out.println(); + + InetSocketAddress isa +- = new InetSocketAddress(InetAddress.getByName(hn), +- DAYTIME_PORT); ++ = new InetSocketAddress(dayTimeServer.getAddress(), ++ dayTimeServer.getPort()); + SocketChannel sc = SocketChannel.open(); + Socket so = sc.socket(); + out.println("opened: " + so); +@@ -116,13 +113,16 @@ + } + } + +- static void testRead(String hn, int timeout, boolean shouldTimeout) ++ static void testRead(TestServers.EchoServer echoServer, ++ int timeout, ++ boolean shouldTimeout) + throws Exception + { + out.println(); + + InetSocketAddress isa +- = new InetSocketAddress(InetAddress.getByName(hn), ECHO_PORT); ++ = new InetSocketAddress(echoServer.getAddress(), ++ echoServer.getPort()); + SocketChannel sc = SocketChannel.open(); + sc.connect(isa); + Socket so = sc.socket(); +@@ -134,22 +134,38 @@ + out.println("timeout: " + so.getSoTimeout()); + + testRead(so, shouldTimeout); +- for (int i = 0; i < 4; i++) ++ for (int i = 0; i < 4; i++) { + testRead(so, shouldTimeout); ++ } + + sc.close(); + } + + public static void main(String[] args) throws Exception { + +- test(REMOTE_HOST, 0, false); +- test(REMOTE_HOST, 1000, false); +- test(VERY_REMOTE_HOST, 10, true); +- +- testRead(REMOTE_HOST, 0, false); +- testRead(REMOTE_HOST, 8000, false); +- testRead(VERY_REMOTE_HOST, 10, true); ++ try (TestServers.DayTimeServer dayTimeServer ++ = TestServers.DayTimeServer.startNewServer()) { ++ test(dayTimeServer, 0, false); ++ test(dayTimeServer, 1000, false); ++ } + +- } ++ try (TestServers.DayTimeServer lingerDayTimeServer ++ = TestServers.DayTimeServer.startNewServer(100)) { ++ // this test no longer really test the connection timeout ++ // since there is no way to prevent the server from eagerly ++ // accepting connection... ++ test(lingerDayTimeServer, 10, true); ++ } + ++ try (TestServers.EchoServer echoServer ++ = TestServers.EchoServer.startNewServer()) { ++ testRead(echoServer, 0, false); ++ testRead(echoServer, 8000, false); ++ } ++ ++ try (TestServers.EchoServer lingerEchoServer ++ = TestServers.EchoServer.startNewServer(100)) { ++ testRead(lingerEchoServer, 10, true); ++ } ++ } + } +--- jdk/test/java/nio/channels/SocketChannel/Basic.java 2012-08-10 10:34:30.000000000 -0700 ++++ jdk/test/java/nio/channels/SocketChannel/Basic.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -36,13 +36,10 @@ + + static java.io.PrintStream out = System.out; + +- static final int DAYTIME_PORT = 13; +- static final String DAYTIME_HOST = TestUtil.HOST; +- +- static void test() throws Exception { ++ static void test(TestServers.DayTimeServer daytimeServer) throws Exception { + InetSocketAddress isa +- = new InetSocketAddress(InetAddress.getByName(DAYTIME_HOST), +- DAYTIME_PORT); ++ = new InetSocketAddress(daytimeServer.getAddress(), ++ daytimeServer.getPort()); + SocketChannel sc = SocketChannel.open(isa); + out.println("opened: " + sc); + /* +@@ -76,7 +73,10 @@ + } + + public static void main(String[] args) throws Exception { +- test(); ++ try (TestServers.DayTimeServer dayTimeServer ++ = TestServers.DayTimeServer.startNewServer(100)) { ++ test(dayTimeServer); ++ } + } + + } +--- jdk/test/java/nio/channels/SocketChannel/BufferSize.java 2012-08-10 10:34:31.000000000 -0700 ++++ jdk/test/java/nio/channels/SocketChannel/BufferSize.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,17 +28,10 @@ + */ + + import java.nio.channels.*; +-import java.net.*; + + public class BufferSize { + +- static final int DAYTIME_PORT = 13; +- static final String DAYTIME_HOST = TestUtil.HOST; +- + public static void main(String[] args) throws Exception { +- InetSocketAddress isa +- = new InetSocketAddress(InetAddress.getByName(DAYTIME_HOST), +- DAYTIME_PORT); + ServerSocketChannel sc = ServerSocketChannel.open(); + try { + sc.socket().setReceiveBufferSize(-1); +--- jdk/test/java/nio/channels/SocketChannel/Connect.java 2012-08-10 10:34:31.000000000 -0700 ++++ jdk/test/java/nio/channels/SocketChannel/Connect.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,9 +27,9 @@ + * @library .. + */ + ++import java.net.*; + import java.nio.*; + import java.nio.channels.*; +-import java.net.*; + import java.util.*; + + public class Connect { +@@ -37,21 +37,26 @@ + private static final long INCREMENTAL_DELAY = 30L * 1000L; + + public static void main(String args[]) throws Exception { +- test1(TestUtil.HOST); ++ try (TestServers.EchoServer echoServer ++ = TestServers.EchoServer.startNewServer(1000)) { ++ test1(echoServer); ++ } + try { +- test1(TestUtil.REFUSING_HOST); ++ TestServers.RefusingServer refusingServer ++ = TestServers.RefusingServer.startNewServer(); ++ test1(refusingServer); + throw new Exception("Refused connection throws no exception"); + } catch (ConnectException ce) { + // Correct result + } + } + +- static void test1(String hostname) throws Exception { ++ static void test1(TestServers.AbstractServer server) throws Exception { + Selector selector; + SocketChannel sc; + SelectionKey sk; + InetSocketAddress isa = new InetSocketAddress( +- InetAddress.getByName (hostname), 80); ++ server.getAddress(), server.getPort()); + sc = SocketChannel.open(); + sc.configureBlocking(false); + +--- jdk/test/java/nio/channels/SocketChannel/ConnectState.java 2012-08-10 10:34:31.000000000 -0700 ++++ jdk/test/java/nio/channels/SocketChannel/ConnectState.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,20 +30,39 @@ + import java.net.*; + import java.nio.*; + import java.nio.channels.*; ++import java.util.Arrays; ++import java.util.Collection; ++import java.util.Collections; ++import java.util.HashSet; + + + public class ConnectState { + + static PrintStream log = System.err; + +- static String REMOTE_HOST = TestUtil.HOST; +- static int REMOTE_PORT = 7; // echo + static InetSocketAddress remote; + + final static int ST_UNCONNECTED = 0; + final static int ST_PENDING = 1; + final static int ST_CONNECTED = 2; + final static int ST_CLOSED = 3; ++ final static int ST_PENDING_OR_CONNECTED = 4; ++ // NO exceptions expected ++ final static Collection<Class<?>> NONE = Collections.emptySet(); ++ ++ // make a set of expected exception. ++ static Collection<Class<?>> expectedExceptions(Class<?>... expected) { ++ final Collection<Class<?>> exceptions; ++ if (expected.length == 0) { ++ exceptions = NONE; ++ } else if (expected.length == 1) { ++ assert expected[0] != null; ++ exceptions = Collections.<Class<?>>singleton(expected[0]); ++ } else { ++ exceptions = new HashSet<>(Arrays.asList(expected)); ++ } ++ return exceptions; ++ } + + static abstract class Test { + +@@ -76,37 +95,65 @@ + check(!sc.isConnectionPending(), "!isConnectionPending"); + check(sc.isOpen(), "isOpen"); + break; ++ case ST_PENDING_OR_CONNECTED: ++ check(sc.isConnected() || sc.isConnectionPending(), ++ "isConnected || isConnectionPending"); ++ check(sc.isOpen(), "isOpen"); ++ break; + } + } + +- Test(String name, Class exception, int state) throws Exception { ++ Test(String name, Class<?> exception, int state) throws Exception { ++ this(name, expectedExceptions(exception), state); ++ } ++ ++ // On some architecture we may need to accept several exceptions. ++ // For instance on Solaris, when using a server colocated on the ++ // machine we cannot guarantee that we will get a ++ // ConnectionPendingException when connecting twice on the same ++ // non-blocking socket. We may instead get a an ++ // AlreadyConnectedException, which is also valid: it simply means ++ // that the first connection has been immediately accepted. ++ Test(String name, Collection<Class<?>> exceptions, int state) ++ throws Exception { + SocketChannel sc = SocketChannel.open(); +- String note = null; ++ String note; + try { + try { + note = go(sc); + } catch (Exception x) { +- if (exception != null) { ++ Class<?> expectedExceptionClass = null; ++ for (Class<?> exception : exceptions) { + if (exception.isInstance(x)) { + log.println(name + ": As expected: " + + x); ++ expectedExceptionClass = exception; + check(sc, state); +- return; +- } else { +- throw new Exception(name ++ break; ++ } ++ } ++ if (expectedExceptionClass == null ++ && !exceptions.isEmpty()) { ++ // we had an exception, but it's not of the set of ++ // exceptions we expected. ++ throw new Exception(name + + ": Incorrect exception", + x); +- } +- } else { ++ } else if (exceptions.isEmpty()) { ++ // we didn't expect any exception + throw new Exception(name + + ": Unexpected exception", + x); + } ++ // if we reach here, we have our expected exception ++ assert expectedExceptionClass != null; ++ return; + } +- if (exception != null) ++ if (!exceptions.isEmpty()) { + throw new Exception(name + + ": Expected exception not thrown: " +- + exception); ++ + exceptions.iterator().next()); ++ } + check(sc, state); + log.println(name + ": Returned normally" + + ((note != null) ? ": " + note : "")); +@@ -123,6 +170,7 @@ + + new Test("Read unconnected", NotYetConnectedException.class, + ST_UNCONNECTED) { ++ @Override + String go(SocketChannel sc) throws Exception { + ByteBuffer b = ByteBuffer.allocateDirect(1024); + sc.read(b); +@@ -131,19 +179,22 @@ + + new Test("Write unconnected", NotYetConnectedException.class, + ST_UNCONNECTED) { ++ @Override + String go(SocketChannel sc) throws Exception { + ByteBuffer b = ByteBuffer.allocateDirect(1024); + sc.write(b); + return null; + }}; + +- new Test("Simple connect", null, ST_CONNECTED) { ++ new Test("Simple connect", NONE, ST_CONNECTED) { ++ @Override + String go(SocketChannel sc) throws Exception { + sc.connect(remote); + return null; + }}; + +- new Test("Simple connect & finish", null, ST_CONNECTED) { ++ new Test("Simple connect & finish", NONE, ST_CONNECTED) { ++ @Override + String go(SocketChannel sc) throws Exception { + sc.connect(remote); + if (!sc.finishConnect()) +@@ -153,6 +204,7 @@ + + new Test("Double connect", + AlreadyConnectedException.class, ST_CONNECTED) { ++ @Override + String go(SocketChannel sc) throws Exception { + sc.connect(remote); + sc.connect(remote); +@@ -161,12 +213,16 @@ + + new Test("Finish w/o start", + NoConnectionPendingException.class, ST_UNCONNECTED) { ++ @Override + String go(SocketChannel sc) throws Exception { + sc.finishConnect(); + return null; + }}; + +- new Test("NB simple connect", null, ST_CONNECTED) { ++ // Note: using our local EchoServer rather than echo on a distant ++ // host - we see that Tries to finish = 0 (instead of ~ 18). ++ new Test("NB simple connect", NONE, ST_CONNECTED) { ++ @Override + String go(SocketChannel sc) throws Exception { + sc.configureBlocking(false); + sc.connect(remote); +@@ -179,8 +235,15 @@ + return ("Tries to finish = " + n); + }}; + ++ // Note: using our local EchoServer rather than echo on a distant ++ // host - we cannot guarantee that this test will get a ++ // a ConnectionPendingException: it may get an ++ // AlreadyConnectedException, so we should allow for both. + new Test("NB double connect", +- ConnectionPendingException.class, ST_PENDING) { ++ expectedExceptions(ConnectionPendingException.class, ++ AlreadyConnectedException.class), ++ ST_PENDING_OR_CONNECTED) { ++ @Override + String go(SocketChannel sc) throws Exception { + sc.configureBlocking(false); + sc.connect(remote); +@@ -190,13 +253,15 @@ + + new Test("NB finish w/o start", + NoConnectionPendingException.class, ST_UNCONNECTED) { ++ @Override + String go(SocketChannel sc) throws Exception { + sc.configureBlocking(false); + sc.finishConnect(); + return null; + }}; + +- new Test("NB connect, B finish", null, ST_CONNECTED) { ++ new Test("NB connect, B finish", NONE, ST_CONNECTED) { ++ @Override + String go(SocketChannel sc) throws Exception { + sc.configureBlocking(false); + sc.connect(remote); +@@ -208,9 +273,12 @@ + } + + public static void main(String[] args) throws Exception { +- remote = new InetSocketAddress(InetAddress.getByName(REMOTE_HOST), +- REMOTE_PORT); +- tests(); ++ try (TestServers.EchoServer echoServer ++ = TestServers.EchoServer.startNewServer(500)) { ++ remote = new InetSocketAddress(echoServer.getAddress(), ++ echoServer.getPort()); ++ tests(); ++ } + } + + } +--- jdk/test/java/nio/channels/SocketChannel/FinishConnect.java 2012-08-10 10:34:31.000000000 -0700 ++++ jdk/test/java/nio/channels/SocketChannel/FinishConnect.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -36,21 +36,25 @@ + + public class FinishConnect { + +- static final int DAYTIME_PORT = 13; +- static final String DAYTIME_HOST = TestUtil.HOST; +- + public static void main(String[] args) throws Exception { +- test1(true, true); +- test1(true, false); +- test1(false, true); +- test1(false, false); +- test2(); ++ try (TestServers.DayTimeServer dayTimeServer ++ = TestServers.DayTimeServer.startNewServer(100)) { ++ test1(dayTimeServer, true, true); ++ test1(dayTimeServer, true, false); ++ test1(dayTimeServer, false, true); ++ test1(dayTimeServer, false, false); ++ test2(dayTimeServer); ++ } + } + +- static void test1(boolean select, boolean setBlocking) throws Exception { ++ static void test1(TestServers.DayTimeServer daytimeServer, ++ boolean select, ++ boolean setBlocking) ++ throws Exception ++ { + InetSocketAddress isa +- = new InetSocketAddress(InetAddress.getByName(DAYTIME_HOST), +- DAYTIME_PORT); ++ = new InetSocketAddress(daytimeServer.getAddress(), ++ daytimeServer.getPort()); + SocketChannel sc = SocketChannel.open(); + sc.configureBlocking(false); + boolean connected = sc.connect(isa); +@@ -109,15 +113,27 @@ + sc.close(); + } + +- static void test2() throws Exception { ++ static void test2(TestServers.DayTimeServer daytimeServer) throws Exception { + InetSocketAddress isa +- = new InetSocketAddress(InetAddress.getByName(DAYTIME_HOST), +- DAYTIME_PORT); ++ = new InetSocketAddress(daytimeServer.getAddress(), ++ daytimeServer.getPort()); + boolean done = false; + int globalAttempts = 0; ++ int connectSuccess = 0; + while (!done) { +- if (globalAttempts++ > 50) ++ // When using a local daytime server it is not always possible ++ // to get a pending connection, as sc.connect(isa) may always ++ // return true. ++ // So we're going to throw the exception only if there was ++ // at least 1 case where we did not manage to connect. ++ if (globalAttempts++ > 50) { ++ if (globalAttempts == connectSuccess + 1) { ++ System.out.println("Can't fully test on " ++ + System.getProperty("os.name")); ++ break; ++ } + throw new RuntimeException("Failed to connect"); ++ } + SocketChannel sc = SocketChannel.open(); + sc.configureBlocking(false); + boolean connected = sc.connect(isa); +@@ -132,6 +148,9 @@ + } + Thread.sleep(10); + } ++ if (connected) { ++ connectSuccess++; ++ } + sc.close(); + } + } +--- jdk/test/java/nio/channels/SocketChannel/IsConnectable.java 2012-08-10 10:34:31.000000000 -0700 ++++ jdk/test/java/nio/channels/SocketChannel/IsConnectable.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,24 +28,19 @@ + */ + + import java.net.*; +-import java.io.*; +-import java.nio.*; + import java.nio.channels.*; + import java.nio.channels.spi.SelectorProvider; + import java.util.*; + + public class IsConnectable { + +- static final int DAYTIME_PORT = 13; +- static final String DAYTIME_HOST = TestUtil.HOST; +- +- static void test() throws Exception { ++ static void test(TestServers.DayTimeServer daytimeServer) throws Exception { + InetSocketAddress isa +- = new InetSocketAddress(InetAddress.getByName(DAYTIME_HOST), +- DAYTIME_PORT); ++ = new InetSocketAddress(daytimeServer.getAddress(), ++ daytimeServer.getPort()); + SocketChannel sc = SocketChannel.open(); + sc.configureBlocking(false); +- sc.connect(isa); ++ final boolean immediatelyConnected = sc.connect(isa); + + Selector selector = SelectorProvider.provider().openSelector(); + try { +@@ -67,7 +62,12 @@ + throw new Exception("Test failed: 4737146 detected"); + } + } else { +- throw new Exception("Select failed"); ++ if (!immediatelyConnected) { ++ throw new Exception("Select failed"); ++ } else { ++ System.out.println("IsConnectable couldn't be fully tested for " ++ + System.getProperty("os.name")); ++ } + } + } finally { + sc.close(); +@@ -76,7 +76,10 @@ + } + + public static void main(String[] args) throws Exception { +- test(); ++ try (TestServers.DayTimeServer daytimeServer ++ = TestServers.DayTimeServer.startNewServer(100)) { ++ test(daytimeServer); ++ } + } + + } +--- jdk/test/java/nio/channels/SocketChannel/LocalAddress.java 2012-08-10 10:34:31.000000000 -0700 ++++ jdk/test/java/nio/channels/SocketChannel/LocalAddress.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,18 +28,20 @@ + */ + + import java.net.*; +-import java.nio.*; + import java.nio.channels.*; + + public class LocalAddress { + public static void main(String[] args) throws Exception { +- test1(); ++ try (TestServers.EchoServer echoServer ++ = TestServers.EchoServer.startNewServer()) { ++ test1(echoServer); ++ } + } + +- static void test1() throws Exception { ++ static void test1(TestServers.AbstractServer server) throws Exception { + InetAddress bogus = InetAddress.getByName("0.0.0.0"); + InetSocketAddress saddr = new InetSocketAddress( +- InetAddress.getByName(TestUtil.HOST), 23); ++ server.getAddress(), server.getPort()); + + //Test1: connect only + SocketChannel sc = SocketChannel.open(); +--- jdk/test/java/nio/channels/SocketChannel/Stream.java 2012-08-10 10:34:31.000000000 -0700 ++++ jdk/test/java/nio/channels/SocketChannel/Stream.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,22 +27,17 @@ + * @library .. + */ + +-import java.net.*; + import java.io.*; +-import java.nio.*; ++import java.net.*; + import java.nio.channels.*; +-import java.nio.charset.*; + + + public class Stream { + +- static final int DAYTIME_PORT = 13; +- static final String DAYTIME_HOST = TestUtil.HOST; +- +- static void test() throws Exception { ++ static void test(TestServers.DayTimeServer daytimeServer) throws Exception { + InetSocketAddress isa +- = new InetSocketAddress(InetAddress.getByName(DAYTIME_HOST), +- DAYTIME_PORT); ++ = new InetSocketAddress(daytimeServer.getAddress(), ++ daytimeServer.getPort()); + SocketChannel sc = SocketChannel.open(); + sc.connect(isa); + sc.configureBlocking(false); +@@ -58,7 +53,9 @@ + } + + public static void main(String[] args) throws Exception { +- test(); ++ try (TestServers.DayTimeServer dayTimeServer ++ = TestServers.DayTimeServer.startNewServer(100)) { ++ test(dayTimeServer); ++ } + } +- + } +--- jdk/test/java/nio/channels/SocketChannel/VectorParams.java 2012-08-10 10:34:31.000000000 -0700 ++++ jdk/test/java/nio/channels/SocketChannel/VectorParams.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,31 +27,31 @@ + * @library .. + */ + +-import java.net.*; + import java.io.*; ++import java.net.*; + import java.nio.*; + import java.nio.channels.*; +-import java.nio.charset.*; + + public class VectorParams { + + static java.io.PrintStream out = System.out; + +- static final int DAYTIME_PORT = 13; +- static final String DAYTIME_HOST = TestUtil.HOST; + static final int testSize = 10; + static ByteBuffer[] bufs = null; + static InetSocketAddress isa = null; + + public static void main(String[] args) throws Exception { +- initBufs(); +- testSocketChannelVectorParams(); +- testDatagramChannelVectorParams(); +- testPipeVectorParams(); +- testFileVectorParams(); ++ try (TestServers.DayTimeServer daytimeServer ++ = TestServers.DayTimeServer.startNewServer(100)) { ++ initBufs(daytimeServer); ++ testSocketChannelVectorParams(); ++ testDatagramChannelVectorParams(); ++ testPipeVectorParams(); ++ testFileVectorParams(); ++ } + } + +- static void initBufs() throws Exception { ++ static void initBufs(TestServers.DayTimeServer daytimeServer) throws Exception { + bufs = new ByteBuffer[testSize]; + for(int i=0; i<testSize; i++) { + String source = "buffer" + i; +@@ -59,8 +59,8 @@ + bufs[i].put(source.getBytes("8859_1")); + bufs[i].flip(); + } +- isa = new InetSocketAddress(InetAddress.getByName(DAYTIME_HOST), +- DAYTIME_PORT); ++ isa = new InetSocketAddress(daytimeServer.getAddress(), ++ daytimeServer.getPort()); + } + + static void testSocketChannelVectorParams() throws Exception { +--- jdk/test/java/nio/channels/TestServers.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/java/nio/channels/TestServers.java 2013-05-05 09:38:43.000000000 -0700 +@@ -0,0 +1,849 @@ ++/* ++ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ * 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 utility classes ++ * ++ */ ++ ++import java.io.*; ++import java.net.*; ++import java.util.ArrayList; ++import java.util.Date; ++import java.util.List; ++ ++ ++public class TestServers { ++ ++ private TestServers() { } ++ ++ /** ++ * An abstract server identifies a server which listens on a port on on a ++ * given machine. ++ */ ++ static abstract class AbstractServer { ++ ++ private AbstractServer() { ++ } ++ ++ public abstract int getPort(); ++ ++ public abstract InetAddress getAddress(); ++ } ++ ++ /** ++ * A downgraded type of AbstractServer which will refuse connections. Note: ++ * use it once and throw it away - this implementation opens an anonymous ++ * socket and closes it, returning the address of the closed socket. If ++ * other servers are started afterwards, the address/port might get reused ++ * and become connectable again - so it's not a good idea to assume that ++ * connections using this address/port will always be refused. Connections ++ * will be refused as long as the address/port of the refusing server has ++ * not been reused. ++ */ ++ static class RefusingServer extends AbstractServer { ++ ++ final InetAddress address; ++ final int port; ++ ++ private RefusingServer(InetAddress address, int port) { ++ this.address = address; ++ this.port = port; ++ } ++ ++ @Override ++ public int getPort() { ++ return port; ++ } ++ ++ @Override ++ public InetAddress getAddress() { ++ return address; ++ } ++ ++ public static RefusingServer startNewServer() throws IOException { ++ ServerSocket socket = new ServerSocket(0, 100, ++ InetAddress.getLocalHost()); ++ RefusingServer server = new RefusingServer(socket.getInetAddress(), ++ socket.getLocalPort()); ++ socket.close(); ++ return server; ++ } ++ } ++ ++ /** ++ * An abstract class for implementing small TCP servers for the nio tests ++ * purposes. Disclaimer: This is a naive implementation that uses the old ++ * networking APIs (not those from {@code java.nio.*}) and shamelessly ++ * extends/creates Threads instead of using an executor service. ++ */ ++ static abstract class AbstractTcpServer extends AbstractServer ++ implements Runnable, Closeable { ++ ++ protected final long linger; // #of ms to wait before responding ++ private Thread acceptThread; // thread waiting for accept ++ // list of opened connections that should be closed on close. ++ private List<TcpConnectionThread> connections = new ArrayList<>(); ++ private ServerSocket serverSocket; // the server socket ++ private boolean started = false; // whether the server is started ++ Throwable error = null; ++ ++ /** ++ * Creates a new abstract TCP server. ++ * ++ * @param linger the amount of time the server should wait before ++ * responding to requests. ++ */ ++ protected AbstractTcpServer(long linger) { ++ this.linger = linger; ++ } ++ ++ /** ++ * The local port to which the server is bound. ++ * ++ * @return The local port to which the server is bound. ++ * @exception IllegalStateException is thrown if the server is not ++ * started. ++ */ ++ @Override ++ public final synchronized int getPort() { ++ if (!started) { ++ throw new IllegalStateException("Not started"); ++ } ++ return serverSocket.getLocalPort(); ++ } ++ ++ /** ++ * The local address to which the server is bound. ++ * ++ * @return The local address to which the server is bound. ++ * @exception IllegalStateException is thrown if the server is not ++ * started. ++ */ ++ @Override ++ public final synchronized InetAddress getAddress() { ++ if (!started) { ++ throw new IllegalStateException("Not started"); ++ } ++ return serverSocket.getInetAddress(); ++ } ++ ++ /** ++ * Tells whether the server is started. ++ * ++ * @return true if the server is started. ++ */ ++ public final synchronized boolean isStarted() { ++ return started; ++ } ++ ++ /** ++ * Creates a new server socket. ++ * ++ * @param port local port to bind to. ++ * @param backlog requested maximum length of the queue of incoming ++ * connections. ++ * @param address local address to bind to. ++ * @return a new bound server socket ready to accept connections. ++ * @throws IOException if the socket cannot be created or bound. ++ */ ++ protected ServerSocket newServerSocket(int port, int backlog, ++ InetAddress address) ++ throws IOException { ++ return new ServerSocket(port, backlog, address); ++ } ++ ++ /** ++ * Starts listening for connections. ++ * ++ * @throws IOException if the server socket cannot be created or bound. ++ */ ++ public final synchronized void start() throws IOException { ++ if (started) { ++ return; ++ } ++ final ServerSocket socket = ++ newServerSocket(0, 100, InetAddress.getLocalHost()); ++ serverSocket = socket; ++ acceptThread = new Thread(this); ++ acceptThread.setDaemon(true); ++ acceptThread.start(); ++ started = true; ++ } ++ ++ /** ++ * Calls {@code Thread.sleep(linger);} ++ */ ++ protected final void lingerIfRequired() { ++ if (linger > 0) { ++ try { ++ Thread.sleep(linger); ++ } catch (InterruptedException x) { ++ Thread.interrupted(); ++ final ServerSocket socket = serverSocket(); ++ if (socket != null && !socket.isClosed()) { ++ System.err.println("Thread interrupted..."); ++ } ++ } ++ } ++ } ++ ++ final synchronized ServerSocket serverSocket() { ++ return this.serverSocket; ++ } ++ ++ /** ++ * The main accept loop. ++ */ ++ @Override ++ public final void run() { ++ final ServerSocket sSocket = serverSocket(); ++ try { ++ Socket s; ++ while (isStarted() && !Thread.interrupted() ++ && (s = sSocket.accept()) != null) { ++ lingerIfRequired(); ++ listen(s); ++ } ++ } catch (Exception x) { ++ error = x; ++ } finally { ++ synchronized (this) { ++ if (!sSocket.isClosed()) { ++ try { ++ sSocket.close(); ++ } catch (IOException x) { ++ System.err.println("Failed to close server socket"); ++ } ++ } ++ if (started && this.serverSocket == sSocket) { ++ started = false; ++ this.serverSocket = null; ++ this.acceptThread = null; ++ } ++ } ++ } ++ } ++ ++ /** ++ * Represents a connection accepted by the server. ++ */ ++ protected abstract class TcpConnectionThread extends Thread { ++ ++ protected final Socket socket; ++ ++ protected TcpConnectionThread(Socket socket) { ++ this.socket = socket; ++ this.setDaemon(true); ++ } ++ ++ public void close() throws IOException { ++ socket.close(); ++ interrupt(); ++ } ++ } ++ ++ /** ++ * Creates a new TcpConnnectionThread to handle the connection through ++ * an accepted socket. ++ * ++ * @param s the socket returned by {@code serverSocket.accept()}. ++ * @return a new TcpConnnectionThread to handle the connection through ++ * an accepted socket. ++ */ ++ protected abstract TcpConnectionThread createConnection(Socket s); ++ ++ /** ++ * Creates and starts a new TcpConnectionThread to handle the accepted ++ * socket. ++ * ++ * @param s the socket returned by {@code serverSocket.accept()}. ++ */ ++ private synchronized void listen(Socket s) { ++ TcpConnectionThread c = createConnection(s); ++ c.start(); ++ addConnection(c); ++ } ++ ++ /** ++ * Add the connection to the list of accepted connections. ++ * ++ * @param connection an accepted connection. ++ */ ++ protected synchronized void addConnection( ++ TcpConnectionThread connection) { ++ connections.add(connection); ++ } ++ ++ /** ++ * Remove the connection from the list of accepted connections. ++ * ++ * @param connection an accepted connection. ++ */ ++ protected synchronized void removeConnection( ++ TcpConnectionThread connection) { ++ connections.remove(connection); ++ } ++ ++ /** ++ * Close the server socket and all the connections present in the list ++ * of accepted connections. ++ * ++ * @throws IOException ++ */ ++ @Override ++ public synchronized void close() throws IOException { ++ if (serverSocket != null && !serverSocket.isClosed()) { ++ serverSocket.close(); ++ } ++ if (acceptThread != null) { ++ acceptThread.interrupt(); ++ } ++ int failed = 0; ++ for (TcpConnectionThread c : connections) { ++ try { ++ c.close(); ++ } catch (IOException x) { ++ // no matter - we're closing. ++ failed++; ++ } ++ } ++ connections.clear(); ++ if (failed > 0) { ++ throw new IOException("Failed to close some connections"); ++ } ++ } ++ } ++ ++ /** ++ * A small TCP Server that emulates the echo service for tests purposes. See ++ * http://en.wikipedia.org/wiki/Echo_Protocol This server uses an anonymous ++ * port - NOT the standard port 7. We don't guarantee that its behavior ++ * exactly matches the RFC - the only purpose of this server is to have ++ * something that responds to nio tests... ++ */ ++ static final class EchoServer extends AbstractTcpServer { ++ ++ public EchoServer() { ++ this(0L); ++ } ++ ++ public EchoServer(long linger) { ++ super(linger); ++ } ++ ++ @Override ++ protected TcpConnectionThread createConnection(Socket s) { ++ return new EchoConnection(s); ++ } ++ ++ private final class EchoConnection extends TcpConnectionThread { ++ ++ public EchoConnection(Socket socket) { ++ super(socket); ++ } ++ ++ @Override ++ public void run() { ++ try { ++ final InputStream is = socket.getInputStream(); ++ final OutputStream out = socket.getOutputStream(); ++ byte[] b = new byte[255]; ++ int n; ++ while ((n = is.read(b)) > 0) { ++ lingerIfRequired(); ++ out.write(b, 0, n); ++ } ++ } catch (IOException io) { ++ // fall through to finally ++ } finally { ++ if (!socket.isClosed()) { ++ try { ++ socket.close(); ++ } catch (IOException x) { ++ System.err.println( ++ "Failed to close echo connection socket"); ++ } ++ } ++ removeConnection(this); ++ } ++ } ++ } ++ ++ public static EchoServer startNewServer() throws IOException { ++ return startNewServer(0); ++ } ++ ++ public static EchoServer startNewServer(long linger) throws IOException { ++ final EchoServer echoServer = new EchoServer(linger); ++ echoServer.start(); ++ return echoServer; ++ } ++ } ++ ++ /** ++ * A small TCP server that emulates the Day & Time service for tests ++ * purposes. See http://en.wikipedia.org/wiki/Daytime_Protocol This server ++ * uses an anonymous port - NOT the standard port 13. We don't guarantee ++ * that its behavior exactly matches the RFC - the only purpose of this ++ * server is to have something that responds to nio tests... ++ */ ++ static final class DayTimeServer extends AbstractTcpServer { ++ ++ public DayTimeServer() { ++ this(0L); ++ } ++ ++ public DayTimeServer(long linger) { ++ super(linger); ++ } ++ ++ @Override ++ protected TcpConnectionThread createConnection(Socket s) { ++ return new DayTimeServerConnection(s); ++ } ++ ++ @Override ++ protected void addConnection(TcpConnectionThread connection) { ++ // do nothing - the connection just write the date and terminates. ++ } ++ ++ @Override ++ protected void removeConnection(TcpConnectionThread connection) { ++ // do nothing - we're not adding connections to the list... ++ } ++ ++ private final class DayTimeServerConnection extends TcpConnectionThread { ++ ++ public DayTimeServerConnection(Socket socket) { ++ super(socket); ++ } ++ ++ @Override ++ public void run() { ++ try { ++ final OutputStream out = socket.getOutputStream(); ++ lingerIfRequired(); ++ out.write(new Date(System.currentTimeMillis()) ++ .toString().getBytes("US-ASCII")); ++ out.flush(); ++ } catch (IOException io) { ++ // fall through to finally ++ } finally { ++ if (!socket.isClosed()) { ++ try { ++ socket.close(); ++ } catch (IOException x) { ++ System.err.println( ++ "Failed to close echo connection socket"); ++ } ++ } ++ } ++ } ++ } ++ ++ public static DayTimeServer startNewServer() ++ throws IOException { ++ return startNewServer(0); ++ } ++ ++ public static DayTimeServer startNewServer(long linger) ++ throws IOException { ++ final DayTimeServer daytimeServer = new DayTimeServer(linger); ++ daytimeServer.start(); ++ return daytimeServer; ++ } ++ } ++ ++ /** ++ * An abstract class for implementing small UDP Servers for the nio tests ++ * purposes. Disclaimer: This is a naive implementation that uses the old ++ * networking APIs (not those from {@code java.nio.*}) and shamelessly ++ * extends/creates Threads instead of using an executor service. ++ */ ++ static abstract class AbstractUdpServer extends AbstractServer ++ implements Runnable, Closeable { ++ ++ protected final long linger; // #of ms to wait before responding ++ private Thread acceptThread; // thread waiting for packets ++ private DatagramSocket serverSocket; // the server socket ++ private boolean started = false; // whether the server is started ++ Throwable error = null; ++ ++ /** ++ * Creates a new abstract UDP server. ++ * ++ * @param linger the amount of time the server should wait before ++ * responding to requests. ++ */ ++ protected AbstractUdpServer(long linger) { ++ this.linger = linger; ++ } ++ ++ /** ++ * The local port to which the server is bound. ++ * ++ * @return The local port to which the server is bound. ++ * @exception IllegalStateException is thrown if the server is not ++ * started. ++ */ ++ @Override ++ public final synchronized int getPort() { ++ if (!started) { ++ throw new IllegalStateException("Not started"); ++ } ++ return serverSocket.getLocalPort(); ++ } ++ ++ /** ++ * The local address to which the server is bound. ++ * ++ * @return The local address to which the server is bound. ++ * @exception IllegalStateException is thrown if the server is not ++ * started. ++ */ ++ @Override ++ public final synchronized InetAddress getAddress() { ++ if (!started) { ++ throw new IllegalStateException("Not started"); ++ } ++ return serverSocket.getLocalAddress(); ++ } ++ ++ /** ++ * Tells whether the server is started. ++ * ++ * @return true if the server is started. ++ */ ++ public final synchronized boolean isStarted() { ++ return started; ++ } ++ ++ /** ++ * Creates a new datagram socket. ++ * ++ * @param port local port to bind to. ++ * @param address local address to bind to. ++ * @return a new bound server socket ready to listen for packets. ++ * @throws IOException if the socket cannot be created or bound. ++ */ ++ protected DatagramSocket newDatagramSocket(int port, ++ InetAddress address) ++ throws IOException { ++ return new DatagramSocket(port, address); ++ } ++ ++ /** ++ * Starts listening for connections. ++ * ++ * @throws IOException if the server socket cannot be created or bound. ++ */ ++ public final synchronized void start() throws IOException { ++ if (started) { ++ return; ++ } ++ final DatagramSocket socket = ++ newDatagramSocket(0, InetAddress.getLocalHost()); ++ serverSocket = socket; ++ acceptThread = new Thread(this); ++ acceptThread.setDaemon(true); ++ acceptThread.start(); ++ started = true; ++ } ++ ++ /** ++ * Calls {@code Thread.sleep(linger);} ++ */ ++ protected final void lingerIfRequired() { ++ if (linger > 0) { ++ try { ++ Thread.sleep(linger); ++ } catch (InterruptedException x) { ++ Thread.interrupted(); ++ final DatagramSocket socket = serverSocket(); ++ if (socket != null && !socket.isClosed()) { ++ System.err.println("Thread interrupted..."); ++ } ++ } ++ } ++ } ++ ++ final synchronized DatagramSocket serverSocket() { ++ return this.serverSocket; ++ } ++ ++ final synchronized boolean send(DatagramSocket socket, ++ DatagramPacket response) throws IOException { ++ if (!socket.isClosed()) { ++ socket.send(response); ++ return true; ++ } else { ++ return false; ++ } ++ } ++ ++ /** ++ * The main receive loop. ++ */ ++ @Override ++ public final void run() { ++ final DatagramSocket sSocket = serverSocket(); ++ try { ++ final int size = Math.max(1024, sSocket.getReceiveBufferSize()); ++ if (size > sSocket.getReceiveBufferSize()) { ++ sSocket.setReceiveBufferSize(size); ++ } ++ while (isStarted() && !Thread.interrupted() && !sSocket.isClosed()) { ++ final byte[] buf = new byte[size]; ++ final DatagramPacket packet = ++ new DatagramPacket(buf, buf.length); ++ lingerIfRequired(); ++ sSocket.receive(packet); ++ //System.out.println("Received packet from: " ++ // + packet.getAddress()+":"+packet.getPort()); ++ handle(sSocket, packet); ++ } ++ } catch (Exception x) { ++ error = x; ++ } finally { ++ synchronized (this) { ++ if (!sSocket.isClosed()) { ++ sSocket.close(); ++ } ++ if (started && this.serverSocket == sSocket) { ++ started = false; ++ this.serverSocket = null; ++ this.acceptThread = null; ++ } ++ } ++ } ++ } ++ ++ /** ++ * Represents an UDP request received by the server. ++ */ ++ protected abstract class UdpRequestThread extends Thread { ++ ++ protected final DatagramPacket request; ++ protected final DatagramSocket socket; ++ ++ protected UdpRequestThread(DatagramSocket socket, DatagramPacket request) { ++ this.socket = socket; ++ this.request = request; ++ this.setDaemon(true); ++ } ++ } ++ ++ /** ++ * Creates a new UdpRequestThread to handle a DatagramPacket received ++ * through a DatagramSocket. ++ * ++ * @param socket the socket through which the request was received. ++ * @param request the datagram packet received through the socket. ++ * @return a new UdpRequestThread to handle the request received through ++ * a DatagramSocket. ++ */ ++ protected abstract UdpRequestThread createConnection(DatagramSocket socket, ++ DatagramPacket request); ++ ++ /** ++ * Creates and starts a new UdpRequestThread to handle the received ++ * datagram packet. ++ * ++ * @param socket the socket through which the request was received. ++ * @param request the datagram packet received through the socket. ++ */ ++ private synchronized void handle(DatagramSocket socket, ++ DatagramPacket request) { ++ UdpRequestThread c = createConnection(socket, request); ++ // c can be null if the request requires no response. ++ if (c != null) { ++ c.start(); ++ } ++ } ++ ++ /** ++ * Close the server socket. ++ * ++ * @throws IOException ++ */ ++ @Override ++ public synchronized void close() throws IOException { ++ if (serverSocket != null && !serverSocket.isClosed()) { ++ serverSocket.close(); ++ } ++ if (acceptThread != null) { ++ acceptThread.interrupt(); ++ } ++ } ++ } ++ ++ /** ++ * A small UDP Server that emulates the discard service for tests purposes. ++ * See http://en.wikipedia.org/wiki/Discard_Protocol This server uses an ++ * anonymous port - NOT the standard port 9. We don't guarantee that its ++ * behavior exactly matches the RFC - the only purpose of this server is to ++ * have something that responds to nio tests... ++ */ ++ static final class UdpDiscardServer extends AbstractUdpServer { ++ ++ public UdpDiscardServer() { ++ this(0L); ++ } ++ ++ public UdpDiscardServer(long linger) { ++ super(linger); ++ } ++ ++ @Override ++ protected UdpRequestThread createConnection(DatagramSocket socket, ++ DatagramPacket request) { ++ // no response required ++ return null; ++ } ++ ++ public static UdpDiscardServer startNewServer() throws IOException { ++ return startNewServer(0); ++ } ++ ++ public static UdpDiscardServer startNewServer(long linger) throws IOException { ++ final UdpDiscardServer discardServer = new UdpDiscardServer(linger); ++ discardServer.start(); ++ return discardServer; ++ } ++ } ++ ++ /** ++ * A small UDP Server that emulates the echo service for tests purposes. See ++ * http://en.wikipedia.org/wiki/Echo_Protocol This server uses an anonymous ++ * port - NOT the standard port 7. We don't guarantee that its behavior ++ * exactly matches the RFC - the only purpose of this server is to have ++ * something that responds to nio tests... ++ */ ++ static final class UdpEchoServer extends AbstractUdpServer { ++ ++ public UdpEchoServer() { ++ this(0L); ++ } ++ ++ public UdpEchoServer(long linger) { ++ super(linger); ++ } ++ ++ @Override ++ protected UdpEchoRequest createConnection(DatagramSocket socket, ++ DatagramPacket request) { ++ return new UdpEchoRequest(socket, request); ++ } ++ ++ private final class UdpEchoRequest extends UdpRequestThread { ++ ++ public UdpEchoRequest(DatagramSocket socket, DatagramPacket request) { ++ super(socket, request); ++ } ++ ++ @Override ++ public void run() { ++ try { ++ lingerIfRequired(); ++ final DatagramPacket response = ++ new DatagramPacket(request.getData(), ++ request.getOffset(), request.getLength(), ++ request.getAddress(), request.getPort()); ++ send(socket, response); ++ } catch (IOException io) { ++ System.err.println("Failed to send response: " + io); ++ io.printStackTrace(System.err); ++ } ++ } ++ } ++ ++ public static UdpEchoServer startNewServer() throws IOException { ++ return startNewServer(0); ++ } ++ ++ public static UdpEchoServer startNewServer(long linger) throws IOException { ++ final UdpEchoServer echoServer = new UdpEchoServer(linger); ++ echoServer.start(); ++ return echoServer; ++ } ++ } ++ ++ /** ++ * A small UDP server that emulates the Day & Time service for tests ++ * purposes. See http://en.wikipedia.org/wiki/Daytime_Protocol This server ++ * uses an anonymous port - NOT the standard port 13. We don't guarantee ++ * that its behavior exactly matches the RFC - the only purpose of this ++ * server is to have something that responds to nio tests... ++ */ ++ static final class UdpDayTimeServer extends AbstractUdpServer { ++ ++ public UdpDayTimeServer() { ++ this(0L); ++ } ++ ++ public UdpDayTimeServer(long linger) { ++ super(linger); ++ } ++ ++ @Override ++ protected UdpDayTimeRequestThread createConnection(DatagramSocket socket, ++ DatagramPacket request) { ++ return new UdpDayTimeRequestThread(socket, request); ++ } ++ ++ private final class UdpDayTimeRequestThread extends UdpRequestThread { ++ ++ public UdpDayTimeRequestThread(DatagramSocket socket, ++ DatagramPacket request) { ++ super(socket, request); ++ } ++ ++ @Override ++ public void run() { ++ try { ++ lingerIfRequired(); ++ final byte[] data = new Date(System.currentTimeMillis()) ++ .toString().getBytes("US-ASCII"); ++ final DatagramPacket response = ++ new DatagramPacket(data, 0, data.length, ++ request.getAddress(), request.getPort()); ++ send(socket, response); ++ } catch (IOException io) { ++ System.err.println("Failed to send response: " + io); ++ io.printStackTrace(System.err); ++ } ++ } ++ } ++ ++ public static UdpDayTimeServer startNewServer() throws IOException { ++ return startNewServer(0); ++ } ++ ++ public static UdpDayTimeServer startNewServer(long linger) ++ throws IOException { ++ final UdpDayTimeServer echoServer = new UdpDayTimeServer(linger); ++ echoServer.start(); ++ return echoServer; ++ } ++ } ++} +--- jdk/test/java/nio/channels/TestUtil.java 2012-08-10 10:34:31.000000000 -0700 ++++ jdk/test/java/nio/channels/TestUtil.java 2013-05-05 09:38:43.000000000 -0700 +@@ -27,7 +27,6 @@ + + import java.io.*; + import java.net.*; +-import java.nio.*; + import java.nio.channels.*; + import java.util.Random; + +@@ -36,9 +35,6 @@ + + // Test hosts used by the channels tests - change these when + // executing in a different network. +- public static final String HOST = "javaweb.sfbay.sun.com"; +- public static final String REFUSING_HOST = "jano1.sfbay.sun.com"; +- public static final String FAR_HOST = "irejano.ireland.sun.com"; + public static final String UNRESOLVABLE_HOST = "blah-blah.blah-blah.blah"; + + private TestUtil() { } --- jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Makefile 2012-08-10 10:34:31.000000000 -0700 -+++ jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Makefile 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Makefile 2013-05-05 09:38:43.000000000 -0700 @@ -71,6 +71,48 @@ EXTRA_LIBS = -lc endif @@ -78569,7 +83329,7 @@ LAUNCHERLIB=$(LIBDIR)/libLauncher.so --- jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/run_tests.sh 2012-08-10 10:34:32.000000000 -0700 -+++ jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/run_tests.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/run_tests.sh 2013-05-05 09:38:43.000000000 -0700 @@ -33,11 +33,14 @@ # @run shell run_tests.sh @@ -78639,7 +83399,7 @@ LIBDIR=lib/${PLATFORM}-${ARCH} LAUNCHERLIB=${LIBDIR}/libLauncher.so --- jdk/test/java/nio/charset/Charset/default.sh 2012-08-10 10:34:32.000000000 -0700 -+++ jdk/test/java/nio/charset/Charset/default.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/nio/charset/Charset/default.sh 2013-05-05 09:38:43.000000000 -0700 @@ -41,10 +41,14 @@ fi @@ -78660,7 +83420,7 @@ JAVA=$TESTJAVA/bin/java --- jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh 2012-08-10 10:34:32.000000000 -0700 -+++ jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh 2013-05-05 09:38:43.000000000 -0700 @@ -34,7 +34,7 @@ OS=`uname -s` @@ -78671,7 +83431,7 @@ Windows* ) echo "Passed"; exit 0 ;; --- jdk/test/java/nio/charset/spi/basic.sh 2012-08-10 10:34:32.000000000 -0700 -+++ jdk/test/java/nio/charset/spi/basic.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/nio/charset/spi/basic.sh 2013-05-05 09:38:43.000000000 -0700 @@ -70,10 +70,14 @@ L="$1" shift @@ -78701,7 +83461,7 @@ *) echo "Unknown platform: `uname`"; exit 1 ;; esac --- jdk/test/java/nio/file/FileSystem/Basic.java 2012-08-10 10:34:32.000000000 -0700 -+++ jdk/test/java/nio/file/FileSystem/Basic.java 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/nio/file/FileSystem/Basic.java 2013-05-05 09:38:43.000000000 -0700 @@ -76,6 +76,8 @@ checkSupported(fs, "posix", "unix", "owner", "acl", "user"); if (os.equals("Linux")) @@ -78712,7 +83472,7 @@ checkSupported(fs, "posix", "unix", "owner"); if (os.equals("Windows")) --- jdk/test/java/nio/file/Files/CopyAndMove.java 2012-08-10 10:34:32.000000000 -0700 -+++ jdk/test/java/nio/file/Files/CopyAndMove.java 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/nio/file/Files/CopyAndMove.java 2013-05-05 09:38:43.000000000 -0700 @@ -634,7 +634,7 @@ // check POSIX attributes are copied @@ -78731,9 +83491,2548 @@ boolean isDirectory = isDirectory(file, NOFOLLOW_LINKS); if (isUnix) { +--- jdk/test/java/rmi/MarshalledObject/compare/Compare.java 2012-08-10 10:34:33.000000000 -0700 ++++ jdk/test/java/rmi/MarshalledObject/compare/Compare.java 2013-05-05 09:38:43.000000000 -0700 +@@ -29,7 +29,6 @@ + * not involved in location should be compared. + * @author Ken Arnold + * +- * @build Compare + * @run main Compare 11 annotatedRef + */ + +--- jdk/test/java/rmi/MarshalledObject/compare/HashCode.java 2012-08-10 10:34:33.000000000 -0700 ++++ jdk/test/java/rmi/MarshalledObject/compare/HashCode.java 2013-05-05 09:38:43.000000000 -0700 +@@ -27,7 +27,6 @@ + * @summary MarshalledObject with null throws NullPointerException + * @author Ken Arnold + * +- * @build HashCode + * @run main HashCode 11 annotatedRef + */ + +--- jdk/test/java/rmi/MarshalledObject/compare/NullReference.java 2012-08-10 10:34:33.000000000 -0700 ++++ jdk/test/java/rmi/MarshalledObject/compare/NullReference.java 2013-05-05 09:38:43.000000000 -0700 +@@ -27,7 +27,6 @@ + * @summary MarshalledObject with null throws NullPointerException + * @author Ken Arnold + * +- * @build NullReference + * @run main NullReference + */ + +--- jdk/test/java/rmi/Naming/DefaultRegistryPort.java 2012-08-10 10:34:34.000000000 -0700 ++++ jdk/test/java/rmi/Naming/DefaultRegistryPort.java 2013-05-05 09:38:43.000000000 -0700 +@@ -28,7 +28,6 @@ + * @author Dana Burns + * @library ../testlibrary + * @build TestLibrary +- * @build DefaultRegistryPort + * @run main DefaultRegistryPort + */ + +--- jdk/test/java/rmi/Naming/LookupIPv6.java 2012-08-10 10:34:34.000000000 -0700 ++++ jdk/test/java/rmi/Naming/LookupIPv6.java 2013-05-05 09:38:43.000000000 -0700 +@@ -22,12 +22,11 @@ + */ + + /* @test ++ * @summary Ensure that java.rmi.Naming.lookup can handle URLs containing ++ * IPv6 addresses. + * @bug 4402708 + * + * @run main/othervm -Djava.net.preferIPv6Addresses=true LookupIPv6 +- * +- * @summary Ensure that java.rmi.Naming.lookup can handle URLs containing +- * IPv6 addresses. + */ + + import java.net.InetAddress; +--- jdk/test/java/rmi/Naming/LookupNameWithColon.java 2012-08-10 10:34:34.000000000 -0700 ++++ jdk/test/java/rmi/Naming/LookupNameWithColon.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,10 +25,13 @@ + * @bug 4387038 + * @summary Ensure that java.rmi.Naming.lookup functions properly for names + * containing embedded ':' characters. ++ * ++ * @library ../testlibrary ++ * @build TestLibrary ++ * @run main LookupNameWithColon + */ + + import java.rmi.Naming; +-import java.rmi.registry.LocateRegistry; + import java.rmi.registry.Registry; + + public class LookupNameWithColon { +@@ -38,15 +41,12 @@ + "multiple:colons:in:name" + }; + +- Registry reg; +- try { +- reg = LocateRegistry.createRegistry(Registry.REGISTRY_PORT); +- } catch (Exception ex) { +- reg = LocateRegistry.getRegistry(); +- } ++ Registry reg = TestLibrary.createRegistryOnUnusedPort(); ++ int port = TestLibrary.getRegistryPort(reg); ++ + for (int i = 0; i < names.length; i++) { + reg.rebind(names[i], reg); +- Naming.lookup("rmi://localhost/" + names[i]); ++ Naming.lookup("rmi://localhost:" + port + "/" + names[i]); + } + } + } +--- jdk/test/java/rmi/Naming/RmiIsNoScheme.java 2012-08-10 10:34:34.000000000 -0700 ++++ jdk/test/java/rmi/Naming/RmiIsNoScheme.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * 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 @@ + * + * @library ../testlibrary + * @build TestLibrary +- * @build RmiIsNoScheme + * @run main/othervm RmiIsNoScheme + */ + +@@ -39,9 +38,6 @@ + import java.rmi.registry.*; + + public class RmiIsNoScheme implements Remote, Serializable { +- +- private static final int REGISTRY_PORT = 2002; +- + private RmiIsNoScheme() {} + + public static void main(String[] args) { +@@ -49,10 +45,11 @@ + System.err.println("\nRegression test for bug 4626311\n"); + + try { +- LocateRegistry.createRegistry(REGISTRY_PORT); +- Naming.rebind("//:" + REGISTRY_PORT + "/RmiIsNoScheme", ++ Registry registry = TestLibrary.createRegistryOnUnusedPort(); ++ int registryPort = TestLibrary.getRegistryPort(registry); ++ Naming.rebind("//:" + registryPort + "/RmiIsNoScheme", + new RmiIsNoScheme()); +- String name = Naming.list("//:" + REGISTRY_PORT)[0]; ++ String name = Naming.list("//:" + registryPort)[0]; + System.err.println("name = " + name); + if (name.startsWith("rmi:", 0) == false) { + System.err.println("TEST PASSED: rmi scheme not present"); +--- jdk/test/java/rmi/Naming/UnderscoreHost.java 2012-08-10 10:34:34.000000000 -0700 ++++ jdk/test/java/rmi/Naming/UnderscoreHost.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,37 +1,36 @@ +-/* +- * Copyright (c) 2005, 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 +- * 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 5083594 +- * @summary Ensure that Naming.java correctly parses host names with '_' in +- * them. +- * @author Vinod Johnson +- * +- * @library ../testlibrary +- * @build TestLibrary +- * @build UnderscoreHost UnderscoreHost_Stub +- * @run main/othervm UnderscoreHost ++ /* ++ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. ++ * 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 5083594 ++ * @summary Ensure that Naming.java correctly parses host names with '_' in ++ * them. ++ * @author Vinod Johnson ++ * ++ * @library ../testlibrary ++ * @build TestLibrary UnderscoreHost_Stub ++ * @run main/othervm UnderscoreHost + */ + + import java.io.IOException; +@@ -77,11 +76,12 @@ + try { + HostVerifyingSocketFactory hvf = new HostVerifyingSocketFactory(); + RMISocketFactory.setSocketFactory(hvf); +- Registry r = LocateRegistry.createRegistry(Registry.REGISTRY_PORT); ++ Registry r = TestLibrary.createRegistryOnUnusedPort(); ++ int port = TestLibrary.getRegistryPort(r); + t = new UnderscoreHost(); + r.rebind(NAME, t); + Naming.lookup("rmi://" + HOSTNAME + +- ":" + Registry.REGISTRY_PORT + "/" + NAME); ++ ":" + port + "/" + NAME); + /* + * This test is coded to pass whether java.net.URI obeys + * RFC 2396 or RFC 3986 (see 5085902, 6394131, etc.). +--- jdk/test/java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java 2012-08-10 10:34:34.000000000 -0700 ++++ jdk/test/java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,14 +21,13 @@ + * questions. + */ + +-/** ++/* + * @test + * @bug 4254808 + * @summary Naming assumes '/' is present in relative URL; change in URL causes regression + * @author Dana Burns + * @library ../../testlibrary +- * @build TestLibrary +- * @build Legal LegalRegistryNames LegalRegistryNames_Stub ++ * @build TestLibrary Legal LegalRegistryNames_Stub + * @run main LegalRegistryNames + */ + +@@ -45,7 +44,9 @@ + + /** + * Ensure that all legal forms of Naming URLs operate with the +- * java.rmi.Naming interface ++ * java.rmi.Naming interface. This test requires using the default RMI Registry ++ * port as it tests all of the RMI naming URL's, including the ones which do not ++ * take a port (and therefore uses the default port). + */ + public class LegalRegistryNames extends UnicastRemoteObject + implements Legal +--- jdk/test/java/rmi/RMISecurityManager/checkPackageAccess/CheckPackageAccess.java 2012-08-10 10:34:34.000000000 -0700 ++++ jdk/test/java/rmi/RMISecurityManager/checkPackageAccess/CheckPackageAccess.java 2013-05-05 09:38:43.000000000 -0700 +@@ -28,10 +28,9 @@ + * as when the default java.lang.SecurityManager is set, which with the + * default "java.security" file in the JDK means that access to packages in + * the sun.* package hierarchy is denied (without explicit runtime permission +- * "accessClassInPackge.*"). ++ * "accessClassInPackage.*"). + * @author Peter Jones + * +- * @build CheckPackageAccess + * @run main/othervm CheckPackageAccess + */ + +--- jdk/test/java/rmi/activation/Activatable/checkActivateRef/CheckActivateRef.java 2012-08-10 10:34:34.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/checkActivateRef/CheckActivateRef.java 2013-05-05 09:38:43.000000000 -0700 +@@ -36,8 +36,7 @@ + * functionality is in place + * + * @library ../../../testlibrary +- * @build TestLibrary RMID +- * @build ActivateMe CheckActivateRef_Stub CheckActivateRef ++ * @build TestLibrary RMID ActivateMe CheckActivateRef_Stub + * @run main/othervm/policy=security.policy/timeout=240 -Djava.rmi.server.ignoreStubClasses=true CheckActivateRef + * @run main/othervm/policy=security.policy/timeout=240 -Djava.rmi.server.ignoreStubClasses=false CheckActivateRef + */ +--- jdk/test/java/rmi/activation/Activatable/checkActivateRef/security.policy 2012-08-10 10:34:34.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/checkActivateRef/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -29,11 +29,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Needed to create an activation group + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/Activatable/checkAnnotations/CheckAnnotations.java 2012-08-10 10:34:34.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/checkAnnotations/CheckAnnotations.java 2013-05-05 09:38:43.000000000 -0700 +@@ -28,10 +28,7 @@ + * @author Laird Dornin; code borrowed from Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary RMID JavaVM StreamPipe +- * @build MyRMI +- * @build CheckAnnotations +- * @build CheckAnnotations_Stub ++ * @build TestLibrary RMID MyRMI CheckAnnotations_Stub + * @run main/othervm/policy=security.policy/timeout=480 CheckAnnotations + */ + +--- jdk/test/java/rmi/activation/Activatable/checkAnnotations/security.policy 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/checkAnnotations/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,11 +21,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // required for test to create an ActivationGroup + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/Activatable/checkImplClassLoader/CheckImplClassLoader.java 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/checkImplClassLoader/CheckImplClassLoader.java 2013-05-05 09:38:43.000000000 -0700 +@@ -24,14 +24,11 @@ + /* @test + * @bug 4289544 + * @summary ActivationGroupImpl.newInstance does not set context classloader for impl +- * + * @author Laird Dornin; code borrowed from Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary RMID JavaVM StreamPipe +- * @build MyRMI +- * @build CheckImplClassLoader ActivatableImpl +- * @build ActivatableImpl ActivatableImpl_Stub ++ * @build TestLibrary RMID ++ * MyRMI ActivatableImpl ActivatableImpl ActivatableImpl_Stub + * @run main/othervm/policy=security.policy/timeout=150 CheckImplClassLoader + */ + +--- jdk/test/java/rmi/activation/Activatable/checkImplClassLoader/security.policy 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/checkImplClassLoader/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -32,11 +32,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // required for test to create an ActivationGroup + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/CheckRegisterInLog.java 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/CheckRegisterInLog.java 2013-05-05 09:38:43.000000000 -0700 +@@ -27,8 +27,8 @@ + * @author Ann Wollrath + * + * @library ../../../testlibrary +- * @build RMID ActivationLibrary TestLibrary +- * @build ActivateMe CheckRegisterInLog CheckRegisterInLog_Stub ++ * @build TestLibrary RMID ActivationLibrary ++ * ActivateMe CheckRegisterInLog_Stub + * @run main/othervm/policy=security.policy/timeout=240 CheckRegisterInLog + */ + +--- jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/security.policy 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,17 +21,18 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Needed to create an activation group + permission java.lang.RuntimePermission "setFactory"; + + // allow exporting of remote objects on an arbitrary port. +- permission java.net.SocketPermission "*:1024-", "connect,accept"; ++ permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + + // allow exporting object with non-public remote interface + permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe"; +--- jdk/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java 2013-05-05 09:38:43.000000000 -0700 +@@ -22,14 +22,12 @@ + */ + + /* @test +- * @author Laird Dornin + * @bug 4164971 + * @summary allow non-public activatable class and/or constructor ++ * @author Laird Dornin + * + * @library ../../../testlibrary +- * @build TestLibrary RMID +- * @build ActivateMe +- * @build CreatePrivateActivatable ++ * @build TestLibrary RMID ActivateMe + * @run main/othervm/policy=security.policy/timeout=240 CreatePrivateActivatable + */ + +--- jdk/test/java/rmi/activation/Activatable/createPrivateActivable/security.policy 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/createPrivateActivable/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,11 +21,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Needed to create an activation group + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/Activatable/downloadParameterClass/DownloadParameterClass.java 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/downloadParameterClass/DownloadParameterClass.java 2013-05-05 09:38:43.000000000 -0700 +@@ -32,11 +32,7 @@ + * + * @library ../../../testlibrary + * @build TestLibrary RMID ActivationLibrary +- * @build DownloadParameterClass +- * @build Foo +- * @build FooReceiverImpl +- * @build FooReceiverImpl_Stub +- * @build Bar ++ * Foo FooReceiverImpl FooReceiverImpl_Stub Bar + * @run main/othervm/policy=security.policy/timeout=240 DownloadParameterClass + */ + +--- jdk/test/java/rmi/activation/Activatable/downloadParameterClass/security.policy 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/downloadParameterClass/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -31,11 +31,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // allow exporting of remote objects on an arbitrary port. + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; +--- jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/ElucidateNoSuchMethod.java 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/ElucidateNoSuchMethod.java 2013-05-05 09:38:43.000000000 -0700 +@@ -23,14 +23,11 @@ + + /* @test + * @bug 4128620 +- * + * @summary synopsis: NoSuchMethodError should be elucidated +- * + * @author Laird Dornin + * + * @library ../../../testlibrary +- * @build TestLibrary RMID +- * @build ActivateMe ElucidateNoSuchMethod ElucidateNoSuchMethod_Stub ++ * @build TestLibrary RMID ActivateMe ElucidateNoSuchMethod_Stub + * @run main/othervm/policy=security.policy/timeout=240 ElucidateNoSuchMethod + */ + +--- jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/security.policy 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -30,11 +30,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Needed to create an activation group + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,11 +28,25 @@ + # set to the impl's class loader) when the impl is activated. + # @library ../../../testlibrary + # @build TestLibrary RMID ActivationLibrary +-# @build ExtLoadedImplTest ExtLoadedImpl ExtLoadedImpl_Stub CheckLoader ++# ExtLoadedImplTest ExtLoadedImpl ExtLoadedImpl_Stub CheckLoader + # @run shell ext.sh + ++OS=`uname -s` ++case "$OS" in ++ SunOS | Linux | Darwin ) ++ PS=":" ++ ;; ++ Windows* | CYGWIN* ) ++ PS=";" ++ ;; ++ * ) ++ echo "Unrecognized system!" ++ exit 1; ++ ;; ++esac ++ + mkdir -p classes +-cp $TESTCLASSES/*.class classes ++for dir in `echo ${TESTCLASSPATH:-$TESTCLASSES} | sed -e "s/$PS/ /"` ; do cp $dir/*.class classes ; done + rm classes/ExtLoadedImpl.class classes/ExtLoadedImpl_Stub.class classes/CheckLoader.class + mkdir -p ext + $TESTJAVA/bin/jar cf ext/ext.jar -C $TESTCLASSES ExtLoadedImpl.class -C $TESTCLASSES ExtLoadedImpl_Stub.class -C $TESTCLASSES CheckLoader.class +--- jdk/test/java/rmi/activation/Activatable/extLoadedImpl/security.policy 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/extLoadedImpl/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -17,11 +17,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // allow exporting of remote objects on an arbitrary port. + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; +--- jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/ForceLogSnapshot.java 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/ForceLogSnapshot.java 2013-05-05 09:38:43.000000000 -0700 +@@ -27,9 +27,8 @@ + * @author Laird Dornin + * + * @library ../../../testlibrary +- * @build ActivateMe +- * @build ForceLogSnapshot +- * @build ForceLogSnapshot_Stub ++ * @build TestLibrary RMID ActivationLibrary ++ * ActivateMe ForceLogSnapshot_Stub + * @run main/othervm/policy=security.policy/timeout=640 ForceLogSnapshot + */ + +--- jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/security.policy 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,11 +21,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Needed to create an activation group + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java 2013-05-05 09:38:43.000000000 -0700 +@@ -29,10 +29,7 @@ + * @author Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary RMID ActivationLibrary +- * @build ActivateMe +- * @build InactiveGroup +- * @build InactiveGroup_Stub ++ * @build TestLibrary RMID ActivationLibrary ActivateMe InactiveGroup_Stub + * @run main/othervm/policy=security.policy/timeout=240 InactiveGroup + */ + +--- jdk/test/java/rmi/activation/Activatable/inactiveGroup/security.policy 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/inactiveGroup/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,17 +21,18 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Needed to create an activation group + permission java.lang.RuntimePermission "setFactory"; + + // allow exporting of remote objects on an arbitrary port. +- permission java.net.SocketPermission "*:1024-", "connect,accept"; ++ permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + + // allow exporting object with non-public remote interface + permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe"; +--- jdk/test/java/rmi/activation/Activatable/lookupActivationSystem/LookupActivationSystem.java 2012-08-10 10:34:35.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/lookupActivationSystem/LookupActivationSystem.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,14 +24,12 @@ + /* + * @test + * @bug 6245733 +- * + * @summary synopsis: rmid's registry's list operation doesn't include + * activation system + * @author Ann Wollrath + * + * @library ../../../testlibrary + * @build TestLibrary RMID ActivationLibrary +- * @build LookupActivationSystem + * @run main/othervm/timeout=240 LookupActivationSystem + */ + +@@ -58,7 +56,7 @@ + + System.err.println("look up activation system"); + Registry rmidRegistry = +- LocateRegistry.getRegistry(ActivationSystem.SYSTEM_PORT); ++ LocateRegistry.getRegistry(rmid.getPort()); + ActivationSystem system = (ActivationSystem) + rmidRegistry.lookup(NAME); + +--- jdk/test/java/rmi/activation/Activatable/nestedActivate/NestedActivate.java 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/nestedActivate/NestedActivate.java 2013-05-05 09:38:43.000000000 -0700 +@@ -23,15 +23,11 @@ + + /* @test + * @bug 4138056 +- * + * @summary synopsis: Activating objects from an Activatable constructor causes deadlock + * @author Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary RMID ActivationLibrary +- * @build ActivateMe +- * @build NestedActivate +- * @build NestedActivate_Stub ++ * @build TestLibrary RMID ActivationLibrary ActivateMe NestedActivate_Stub + * @run main/othervm/policy=security.policy/timeout=240 NestedActivate + */ + +--- jdk/test/java/rmi/activation/Activatable/nestedActivate/security.policy 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/nestedActivate/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,17 +21,18 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Needed to create an activation group + permission java.lang.RuntimePermission "setFactory"; + + // allow exporting of remote objects on an arbitrary port. +- permission java.net.SocketPermission "*:1024-", "connect,accept"; ++ permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + + // allow exporting of non-public remote interface + permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe"; +--- jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/NonExistentActivatable.java 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/NonExistentActivatable.java 2013-05-05 09:38:43.000000000 -0700 +@@ -23,16 +23,13 @@ + + /* @test + * @bug 4115296 +- * + * @summary synopsis: NoSuchObjectException not thrown for non-existent + * activatable objects + * @author Ann Wollrath + * + * @library ../../../testlibrary + * @build TestLibrary RMID ActivationLibrary +- * @build ActivateMe +- * @build NonExistentActivatable +- * @build NonExistentActivatable_Stub ++ * ActivateMe NonExistentActivatable_Stub + * @run main/othervm/policy=security.policy/timeout=240 NonExistentActivatable + */ + +--- jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/security.policy 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,11 +21,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Needed to create an activation group + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/Activatable/restartCrashedService/RestartCrashedService.java 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/restartCrashedService/RestartCrashedService.java 2013-05-05 09:38:43.000000000 -0700 +@@ -28,10 +28,7 @@ + * @author Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary RMID JavaVM StreamPipe +- * @build ActivateMe +- * @build RestartCrashedService +- * @build RestartCrashedService_Stub ++ * @build TestLibrary RMID ActivateMe RestartCrashedService_Stub + * @run main/othervm/policy=security.policy/timeout=240 RestartCrashedService + */ + +--- jdk/test/java/rmi/activation/Activatable/restartCrashedService/security.policy 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/restartCrashedService/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,11 +21,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Needed to create an activation group + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/Activatable/restartLatecomer/RestartLatecomer.java 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/restartLatecomer/RestartLatecomer.java 2013-05-05 09:38:43.000000000 -0700 +@@ -28,8 +28,7 @@ + * + * @library ../../../testlibrary + * @build TestLibrary RMID ActivationLibrary +- * @build RestartLatecomer +- * @build RestartLatecomer_Stub ++ * RestartLatecomer RestartLatecomer_Stub + * @run main/othervm/policy=security.policy/timeout=240 RestartLatecomer + */ + +--- jdk/test/java/rmi/activation/Activatable/restartLatecomer/security.policy 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/restartLatecomer/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,11 +21,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Used in remote impl of Activator.inactive; by the method + // "restartThread.dispose()"when it calls thread.interrupt() +--- jdk/test/java/rmi/activation/Activatable/restartService/RestartService.java 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/restartService/RestartService.java 2013-05-05 09:38:43.000000000 -0700 +@@ -23,15 +23,11 @@ + + /* @test + * @bug 4095165 4321151 +- + * @summary synopsis: activator should restart daemon services + * @author Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary RMID ActivationLibrary +- * @build ActivateMe +- * @build RestartService +- * @build RestartService_Stub ++ * @build TestLibrary RMID ActivationLibrary ActivateMe RestartService_Stub + * @run main/othervm/policy=security.policy/timeout=240 RestartService + */ + +--- jdk/test/java/rmi/activation/Activatable/restartService/security.policy 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/restartService/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,11 +21,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Used in remote impl of Activator.inactive; by the method + // "restartThread.dispose()"when it calls thread.interrupt() +--- jdk/test/java/rmi/activation/Activatable/shutdownGracefully/ShutdownGracefully.java 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/shutdownGracefully/ShutdownGracefully.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,11 +28,8 @@ + * @author Laird Dornin; code borrowed from Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary RMID JavaVM StreamPipe +- * @build TestSecurityManager +- * @build RegisteringActivatable +- * @build ShutdownGracefully +- * @build ShutdownGracefully_Stub ++ * @build TestLibrary RMID ++ * TestSecurityManager RegisteringActivatable ShutdownGracefully_Stub + * @run main/othervm/policy=security.policy/timeout=700 ShutdownGracefully + */ + +@@ -171,7 +168,7 @@ + registering = null; + + // Need to make sure that rmid goes away by itself +- Process rmidProcess = rmid.getVM(); ++ JavaVM rmidProcess = rmid; + if (rmidProcess != null) { + try { + Runnable waitThread = +@@ -208,9 +205,9 @@ + * class that waits for rmid to exit + */ + private static class ShutdownDetectThread implements Runnable { +- private Process rmidProcess = null; ++ private JavaVM rmidProcess = null; + +- ShutdownDetectThread(Process rmidProcess) { ++ ShutdownDetectThread(JavaVM rmidProcess) { + this.rmidProcess = rmidProcess; + } + public void run() { +--- jdk/test/java/rmi/activation/Activatable/shutdownGracefully/security.policy 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/shutdownGracefully/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,11 +21,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // allow exporting of remote objects on an arbitrary port. + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; +--- jdk/test/java/rmi/activation/Activatable/unregisterInactive/UnregisterInactive.java 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/unregisterInactive/UnregisterInactive.java 2013-05-05 09:38:43.000000000 -0700 +@@ -23,16 +23,12 @@ + + /* @test + * @bug 4115331 +- + * @summary synopsis: activatable object fails to go inactive after + * unregister/inactive sequence. + * @author Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary RMID ActivationLibrary +- * @build ActivateMe +- * @build UnregisterInactive +- * @build UnregisterInactive_Stub ++ * @build TestLibrary RMID ActivationLibrary ActivateMe UnregisterInactive_Stub + * @run main/othervm/policy=security.policy/timeout=240 UnregisterInactive + */ + +--- jdk/test/java/rmi/activation/Activatable/unregisterInactive/security.policy 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/Activatable/unregisterInactive/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,11 +21,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // Needed to create an activation group + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java 2013-05-05 09:38:43.000000000 -0700 +@@ -31,11 +31,8 @@ + * @author Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary RMID JavaVM StreamPipe +- * @build ActivateMe +- * @build ActivateFails +- * @build ActivateFails_Stub +- * @build ShutdownThread ++ * @build TestLibrary RMID ActivationLibrary ++ * ActivateMe ActivateFails_Stub ShutdownThread + * @run main/othervm/policy=security.policy/timeout=240 ActivateFails + */ + +--- jdk/test/java/rmi/activation/ActivateFailedException/activateFails/security.policy 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivateFailedException/activateFails/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,11 +21,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // required for test to create an ActivationGroup + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java 2013-05-05 09:38:43.000000000 -0700 +@@ -33,9 +33,7 @@ + * + * @library ../../../testlibrary + * @build TestLibrary RMID ActivationLibrary +- * @build MyActivationGroupImpl +- * @build DownloadActivationGroup +- * @build DownloadActivationGroup_Stub ++ * DownloadActivationGroup MyActivationGroupImpl DownloadActivationGroup_Stub + * @run main/othervm/policy=security.policy/timeout=240 DownloadActivationGroup + */ + +--- jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java 2012-08-10 10:34:36.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java 2013-05-05 09:38:43.000000000 -0700 +@@ -21,16 +21,15 @@ + * questions. + */ + +-/** ++/* + * @test + * @bug 4252236 + * @summary ActivationGroupDesc should not do early binding of default classname +- * @library ../../../testlibrary +- * +- * @build CheckDefaultGroupName ++ * @author Laird Dornin + * ++ * @library ../../../testlibrary ++ * @build TestLibrary + * @run main CheckDefaultGroupName +- * @author Laird Dornin + */ + + import java.rmi.activation.*; +--- jdk/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java 2013-05-05 09:38:43.000000000 -0700 +@@ -23,15 +23,13 @@ + + /* @test + * @bug 4720528 +- * + * @summary synopsis: (spec) ActivationSystem.activeGroup spec should be + * relaxed (duplicate call to activeGroup with same instantiator and + * incarnation should not throw ActivationException; it should succeed) + * @author Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary RMID +- * @build IdempotentActiveGroup ++ * @build TestLibrary RMID ActivationLibrary + * @run main/othervm/policy=security.policy/timeout=480 IdempotentActiveGroup + */ + +--- jdk/test/java/rmi/activation/ActivationSystem/activeGroup/security.policy 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/activeGroup/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -15,11 +15,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // test needs to export rmid and communicate with objects on arbitrary ports + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; +--- jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java 2013-05-05 09:38:43.000000000 -0700 +@@ -29,9 +29,8 @@ + * @author Ann Wollrath + * + * @library ../../../testlibrary +- * @build ActivateMe +- * @build ModifyDescriptor +- * @build ModifyDescriptor_Stub ++ * @build TestLibrary RMID ActivationLibrary ++ * ActivateMe ModifyDescriptor_Stub + * @run main/othervm/policy=security.policy/timeout=240 ModifyDescriptor + */ + +--- jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/security.policy 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,11 +21,12 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // required for test to create an ActivationGroup + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,14 +24,11 @@ + /* @test + * @bug 4179055 + * @summary Some java apps need to have access to read "accessClassInPackage.sun.rmi.server" +- * + * @author Laird Dornin + * + * @library ../../../testlibrary +- * @build TestLibrary RMID JavaVM StreamPipe ActivationLibrary +- * @build CanCreateStubs +- * @build StubClassesPermitted +- * @build StubClassesPermitted_Stub ++ * @build TestLibrary RMID ActivationLibrary ++ * CanCreateStubs StubClassesPermitted_Stub + * @run main/othervm/policy=security.policy/secure=java.lang.SecurityManager/timeout=240 StubClassesPermitted + */ + +@@ -61,7 +58,7 @@ + extends Activatable implements Runnable, CanCreateStubs + { + public static boolean sameGroup = false; +- ++ private static int registryPort = -1; + private static CanCreateStubs canCreateStubs = null; + private static Registry registry = null; + +@@ -76,8 +73,8 @@ + try { + TestLibrary.suggestSecurityManager("java.lang.SecurityManager"); + +- registry = java.rmi.registry.LocateRegistry. +- createRegistry(TestLibrary.REGISTRY_PORT); ++ registry = TestLibrary.createRegistryOnUnusedPort(); ++ registryPort = TestLibrary.getRegistryPort(registry); + + // must run with java.lang.SecurityManager or the test + // result will be nullified if running with a build where +@@ -192,7 +189,7 @@ + + // obtain reference to the test registry + registry = java.rmi.registry.LocateRegistry. +- getRegistry(TestLibrary.REGISTRY_PORT); ++ getRegistry(registryPort); + } + + /** +--- jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/security.policy 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,15 +21,22 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // required for test to create an ActivationGroup + permission java.lang.RuntimePermission "setFactory"; + ++ // required for test to get the registry port ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.registry"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.server"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport.tcp"; ++ + // test needs to export rmid and communicate with objects on arbitrary ports + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + }; +--- jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/ActivateMe.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/ActivateMe.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,7 +28,5 @@ + import java.rmi.RemoteException; + interface ActivateMe extends Remote { + public void ping() throws RemoteException; +- public void unregister() throws Exception; + public void shutdown() throws Exception; +- public void justGoAway() throws RemoteException; + } +--- jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/CallbackInterface.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/CallbackInterface.java 1969-12-31 16:00:00.000000000 -0800 +@@ -1,29 +0,0 @@ +-/* +- * Copyright (c) 2000, 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. +- */ +- +-import java.rmi.Remote; +-import java.rmi.RemoteException; +-public interface CallbackInterface extends Remote { +- public void inc() throws RemoteException; +- public int getNumDeactivated() throws RemoteException; +-} +--- jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/Callback_Stub.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/Callback_Stub.java 1969-12-31 16:00:00.000000000 -0800 +@@ -1,122 +0,0 @@ +-/* +- * Copyright (c) 2000, 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. +- */ +- +-// Stub class generated by rmic, do not edit. +-// Contents subject to change without notice. +- +-public final class Callback_Stub +- extends java.rmi.server.RemoteStub +- implements CallbackInterface, java.rmi.Remote +-{ +- private static final java.rmi.server.Operation[] operations = { +- new java.rmi.server.Operation("int getNumDeactivated()"), +- new java.rmi.server.Operation("void inc()") +- }; +- +- private static final long interfaceHash = -1008194523112388035L; +- +- private static final long serialVersionUID = 2; +- +- private static boolean useNewInvoke; +- private static java.lang.reflect.Method $method_getNumDeactivated_0; +- private static java.lang.reflect.Method $method_inc_1; +- +- static { +- try { +- java.rmi.server.RemoteRef.class.getMethod("invoke", +- new java.lang.Class[] { +- java.rmi.Remote.class, +- java.lang.reflect.Method.class, +- java.lang.Object[].class, +- long.class +- }); +- useNewInvoke = true; +- $method_getNumDeactivated_0 = CallbackInterface.class.getMethod("getNumDeactivated", new java.lang.Class[] {}); +- $method_inc_1 = CallbackInterface.class.getMethod("inc", new java.lang.Class[] {}); +- } catch (java.lang.NoSuchMethodException e) { +- useNewInvoke = false; +- } +- } +- +- // constructors +- public Callback_Stub() { +- super(); +- } +- public Callback_Stub(java.rmi.server.RemoteRef ref) { +- super(ref); +- } +- +- // methods from remote interfaces +- +- // implementation of getNumDeactivated() +- public int getNumDeactivated() +- throws java.rmi.RemoteException +- { +- try { +- if (useNewInvoke) { +- Object $result = ref.invoke(this, $method_getNumDeactivated_0, null, -761062487639949912L); +- return ((java.lang.Integer) $result).intValue(); +- } else { +- java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject) this, operations, 0, interfaceHash); +- ref.invoke(call); +- int $result; +- try { +- java.io.ObjectInput in = call.getInputStream(); +- $result = in.readInt(); +- } catch (java.io.IOException e) { +- throw new java.rmi.UnmarshalException("error unmarshalling return", e); +- } finally { +- ref.done(call); +- } +- return $result; +- } +- } catch (java.lang.RuntimeException e) { +- throw e; +- } catch (java.rmi.RemoteException e) { +- throw e; +- } catch (java.lang.Exception e) { +- throw new java.rmi.UnexpectedException("undeclared checked exception", e); +- } +- } +- +- // implementation of inc() +- public void inc() +- throws java.rmi.RemoteException +- { +- try { +- if (useNewInvoke) { +- ref.invoke(this, $method_inc_1, null, 4394985085384332959L); +- } else { +- java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject) this, operations, 1, interfaceHash); +- ref.invoke(call); +- ref.done(call); +- } +- } catch (java.lang.RuntimeException e) { +- throw e; +- } catch (java.rmi.RemoteException e) { +- throw e; +- } catch (java.lang.Exception e) { +- throw new java.rmi.UnexpectedException("undeclared checked exception", e); +- } +- } +-} +--- jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,57 +24,26 @@ + /* @test + * @bug 4134233 + * @bug 4213186 +- * + * @summary synopsis: ActivationSystem.unregisterGroup should unregister objects in group + * @author Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary RMID JavaVM StreamPipe +- * @build ActivateMe CallbackInterface +- * @build UnregisterGroup +- * @build UnregisterGroup_Stub +- * @build Callback_Stub +- * @run main/othervm/policy=security.policy/timeout=480 UnregisterGroup ++ * @build TestLibrary RMID ActivationLibrary ActivateMe ++ * @run main/othervm/policy=security.policy UnregisterGroup + */ + + import java.io.*; + import java.rmi.*; + import java.rmi.activation.*; + import java.rmi.server.*; +-import java.rmi.registry.*; + import java.util.Properties; + +-class Callback extends UnicastRemoteObject implements CallbackInterface { +- +- public static int num_deactivated = 0; +- +- public Callback() throws RemoteException { super(); } +- +- public void inc() throws RemoteException { +- incNumDeactivated(); +- } +- +- public synchronized int getNumDeactivated() throws RemoteException { +- return(num_deactivated); +- } +- +- public synchronized void incNumDeactivated() { +- num_deactivated++; +- } +- +-} +- +-public class UnregisterGroup +- extends Activatable +- implements ActivateMe, Runnable ++public class UnregisterGroup extends Activatable implements ActivateMe + { +- +- private static Exception exception = null; +- private static String error = null; +- private static boolean done = false; +- private static ActivateMe lastResortExitObj = null; ++ private static volatile Exception exception = null; ++ private static volatile String error = null; ++ private static volatile boolean done = false; + private static final int NUM_OBJECTS = 10; +- private static int PORT = 2006; + + public UnregisterGroup(ActivationID id, MarshalledObject mobj) + throws Exception +@@ -82,55 +51,22 @@ + super(id, 0); + } + +- public void ping() +- {} +- +- public void unregister() throws Exception { +- super.unregister(super.getID()); +- } +- +- /** +- * Spawns a thread to deactivate the object. +- */ +- public void shutdown() throws Exception { +- (new Thread(this,"UnregisterGroup")).start(); +- } +- + /** +- * To support exiting of group VM as a last resort ++ * Does nothing, but serves to activate this object. + */ +- public void justGoAway() { +- System.exit(0); +- } ++ public void ping() { } + + /** +- * Thread to deactivate object. First attempts to make object +- * inactive (via the inactive method). If that fails (the +- * object may still have pending/executing calls), then +- * unexport the object forcibly. ++ * Deactivates the object. We need to unexport forcibly because ++ * this call is in-progress on this object, which is the same object ++ * that we are trying to deactivate. + */ +- public void run() { +- ++ public void shutdown() throws Exception { ++ Activatable.unexportObject(this, true); + ActivationLibrary.deactivate(this, getID()); +- System.err.println("\tActivationLibrary.deactivate returned"); +- +- try { +- CallbackInterface cobj = +- (CallbackInterface)Naming.lookup("//:" + PORT + "/Callback"); +- cobj.inc(); +- } catch (Exception e) { +- System.err.println("cobj.inc exception"); +- e.printStackTrace(); +- } +- + } + +- public static void main(String[] args) { +- +- Registry registry; +- +- System.err.println("\nRegression test for bug 4134233\n"); +- ++ public static void main(String[] args) throws RemoteException { + TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager"); + RMID rmid = null; + +@@ -145,12 +81,8 @@ + final Properties p = new Properties(); + // this test must always set policies/managers in its + // activation groups +- p.put("java.security.policy", +- TestParams.defaultGroupPolicy); +- p.put("java.security.manager", +- TestParams.defaultSecurityManager); +- +- //final int NUM_OBJECTS = 10; ++ p.put("java.security.policy", TestParams.defaultGroupPolicy); ++ p.put("java.security.manager", TestParams.defaultSecurityManager); + + Thread t = new Thread() { + public void run () { +@@ -174,7 +106,6 @@ + System.err.println("Activating object: " + i); + obj[i].ping(); + } +- lastResortExitObj = obj[0]; + + System.err.println("Unregistering group"); + system.unregisterGroup(groupID); +@@ -188,7 +119,6 @@ + "group unregistered"); + } + +- + /* + * Deactivate objects so group VM will exit. + */ +@@ -197,7 +127,7 @@ + obj[i].shutdown(); + obj[i] = null; + } +- lastResortExitObj = null; ++ System.err.println("Successfully deactivated all objects."); + + } catch (Exception e) { + exception = e; +@@ -208,7 +138,11 @@ + }; + + t.start(); +- t.join(120000); ++ ++ // Default jtreg timeout is two minutes. ++ // Timeout ourselves after one minute so that ++ // we can clean up. ++ t.join(60000); + + if (exception != null) { + TestLibrary.bomb("test failed", exception); +@@ -219,42 +153,9 @@ + } else { + System.err.println("Test passed"); + } +- +- + } catch (Exception e) { + TestLibrary.bomb("test failed", e); + } finally { +- if (lastResortExitObj != null) { +- try { +- lastResortExitObj.justGoAway(); +- } catch (Exception munch) { +- } +- } +- +- // Wait for the object deactivation to take place first +- try { +- +- // create reg and export callback object +- registry = LocateRegistry.createRegistry(PORT); +- Callback robj = new Callback(); +- registry.bind("Callback", robj); +- +- //get the callback object +- int maxwait=30; +- int nd = robj.getNumDeactivated(); +- while ((nd < NUM_OBJECTS) && (maxwait> 0)) { +- System.err.println("num_deactivated="+nd); +- try { +- Thread.sleep(1000); +- } catch (InterruptedException ie) {} +- maxwait--; +- nd = robj.getNumDeactivated(); +- } +- } catch (Exception ce) { +- System.err.println("E:"+ce); +- ce.printStackTrace(); +- } +- + ActivationLibrary.rmidCleanup(rmid); + } + } +--- jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup_Stub.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup_Stub.java 1969-12-31 16:00:00.000000000 -0800 +@@ -1,144 +0,0 @@ +-/* +- * Copyright (c) 1998, 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. +- */ +- +-// Stub class generated by rmic, do not edit. +-// Contents subject to change without notice. +- +-public final class UnregisterGroup_Stub +- extends java.rmi.server.RemoteStub +- implements ActivateMe, java.rmi.Remote +-{ +- private static final java.rmi.server.Operation[] operations = { +- new java.rmi.server.Operation("void justGoAway()"), +- new java.rmi.server.Operation("void ping()"), +- new java.rmi.server.Operation("void shutdown()"), +- new java.rmi.server.Operation("void unregister()") +- }; +- +- private static final long interfaceHash = -4733924075192691630L; +- +- private static final long serialVersionUID = 2; +- +- private static boolean useNewInvoke; +- private static java.lang.reflect.Method $method_justGoAway_0; +- private static java.lang.reflect.Method $method_ping_1; +- private static java.lang.reflect.Method $method_shutdown_2; +- private static java.lang.reflect.Method $method_unregister_3; +- +- static { +- try { +- java.rmi.server.RemoteRef.class.getMethod("invoke", +- new java.lang.Class[] { +- java.rmi.Remote.class, +- java.lang.reflect.Method.class, +- java.lang.Object[].class, +- long.class +- }); +- useNewInvoke = true; +- $method_justGoAway_0 = ActivateMe.class.getMethod("justGoAway", new java.lang.Class[] {}); +- $method_ping_1 = ActivateMe.class.getMethod("ping", new java.lang.Class[] {}); +- $method_shutdown_2 = ActivateMe.class.getMethod("shutdown", new java.lang.Class[] {}); +- $method_unregister_3 = ActivateMe.class.getMethod("unregister", new java.lang.Class[] {}); +- } catch (java.lang.NoSuchMethodException e) { +- useNewInvoke = false; +- } +- } +- +- // constructors +- public UnregisterGroup_Stub() { +- super(); +- } +- public UnregisterGroup_Stub(java.rmi.server.RemoteRef ref) { +- super(ref); +- } +- +- // methods from remote interfaces +- +- // implementation of justGoAway() +- public void justGoAway() +- throws java.rmi.RemoteException +- { +- try { +- if (useNewInvoke) { +- ref.invoke(this, $method_justGoAway_0, null, -5382478058620783904L); +- } else { +- java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject) this, operations, 0, interfaceHash); +- ref.invoke(call); +- ref.done(call); +- } +- } catch (java.lang.RuntimeException e) { +- throw e; +- } catch (java.rmi.RemoteException e) { +- throw e; +- } catch (java.lang.Exception e) { +- throw new java.rmi.UnexpectedException("undeclared checked exception", e); +- } +- } +- +- // implementation of ping() +- public void ping() +- throws java.rmi.RemoteException +- { +- try { +- if (useNewInvoke) { +- ref.invoke(this, $method_ping_1, null, 5866401369815527589L); +- } else { +- java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject) this, operations, 1, interfaceHash); +- ref.invoke(call); +- ref.done(call); +- } +- } catch (java.lang.RuntimeException e) { +- throw e; +- } catch (java.rmi.RemoteException e) { +- throw e; +- } catch (java.lang.Exception e) { +- throw new java.rmi.UnexpectedException("undeclared checked exception", e); +- } +- } +- +- // implementation of shutdown() +- public void shutdown() +- throws java.lang.Exception +- { +- if (useNewInvoke) { +- ref.invoke(this, $method_shutdown_2, null, -7207851917985848402L); +- } else { +- java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject) this, operations, 2, interfaceHash); +- ref.invoke(call); +- ref.done(call); +- } +- } +- +- // implementation of unregister() +- public void unregister() +- throws java.lang.Exception +- { +- if (useNewInvoke) { +- ref.invoke(this, $method_unregister_3, null, -5366864281862648102L); +- } else { +- java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject) this, operations, 3, interfaceHash); +- ref.invoke(call); +- ref.done(call); +- } +- } +-} +--- jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -7,4 +7,5 @@ + + // test needs to communicate with the activation system + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; ++ permission java.util.PropertyPermission "unregisterGroup.port", "read"; + }; +--- jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/security.policy 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -21,15 +21,22 @@ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +- // used by TestLibrary to determine test environment ++ // used by TestLibrary to determine test environment + permission java.util.PropertyPermission "test.classes", "read"; + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // required for test to create an ActivationGroup + permission java.lang.RuntimePermission "setFactory"; + + // test needs to export rmid and communicate with objects on arbitrary ports + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; ++ ++ // required for test to get the registry port ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.registry"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.server"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport.tcp"; + }; +--- jdk/test/java/rmi/activation/CommandEnvironment/NullOptions.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/CommandEnvironment/NullOptions.java 2013-05-05 09:38:43.000000000 -0700 +@@ -27,7 +27,6 @@ + * ActivationGroupDesc.CommandEnvironment + * @author Ann Wollrath + * +- * @build NullOptions + * @run main/othervm/timeout=240 NullOptions + */ + +--- jdk/test/java/rmi/activation/CommandEnvironment/SetChildEnv.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/CommandEnvironment/SetChildEnv.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,10 @@ + * @author Adrian Colley + * + * @library ../../testlibrary +- * @build TestLibrary RMID JavaVM StreamPipe +- * @build Eliza Retireable Doctor Doctor_Stub SetChildEnv +- * @run main/othervm/timeout=240/policy=security.policy -Djava.compiler=NONE SetChildEnv ++ * @build TestLibrary RMID ActivationLibrary ++ * Eliza Retireable Doctor Doctor_Stub ++ * @run main/othervm/timeout=240/policy=security.policy ++ * -Djava.compiler=NONE SetChildEnv + */ + import java.rmi.*; + import java.util.Properties; +@@ -53,31 +54,37 @@ + public static void main(String argv[]) + throws Exception + { ++ int runningPort = TestLibrary.getUnusedRandomPort(); ++ + System.out.println("java.compiler=" + System.getProperty("java.compiler")); + // don't embed spaces in any of the test args/props, because + // they won't be parsed properly +- runwith (new String[0], new String[0]); ++ runwith (new String[0], new String[0], runningPort); + + runwith ( + new String[] { "-verbosegc" }, + new String[] { "foo.bar=SetChildEnvTest", +- "sun.rmi.server.doSomething=true" } ++ "sun.rmi.server.doSomething=true" }, ++ runningPort + ); + + runwith ( + new String[] { }, +- new String[] { "parameter.count=zero" } ++ new String[] { "parameter.count=zero" }, ++ runningPort + ); + + runwith ( + new String[] { "-Xmx32m" }, +- new String[] { } ++ new String[] { }, ++ runningPort + ); + } + + private static void runwith( + String[] params, // extra args +- String[] props // extra system properties ++ String[] props, // extra system properties ++ int port // port on which to communicate + ) + throws Exception + { +@@ -89,7 +96,8 @@ + + RMID.removeLog(); + RMID rmid = RMID.createRMID(watcher.otherEnd(), watcher.otherEnd(), +- true); // debugExec turned on ++ true, // debugExec turned on ++ true, port); + + rmid.start(); + +@@ -195,7 +203,7 @@ + actsys.unregisterGroup(gid); + + Thread.sleep(5000); +- rmid.destroy(); ++ ActivationLibrary.rmidCleanup(rmid); + } + + public static class DebugExecWatcher +@@ -243,7 +251,19 @@ + System.err.println(line); + } + } catch (IOException e) { +- e.printStackTrace(); ++ /* During termination of distant rmid, StreamPipes will be broken when ++ * distant vm terminates. A "Pipe broken" exception is expected because ++ * DebugExecWatcher points to the same streams as StreamPipes used by RMID. ++ * If we get this exception. We just terminate the thread. ++ */ ++ if (e.getMessage().equals("Pipe broken")) { ++ try { ++ str.close(); ++ } catch (IOException ioe) {} ++ } ++ else { ++ e.printStackTrace(); ++ } + } + } + } +--- jdk/test/java/rmi/activation/CommandEnvironment/security.policy 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/CommandEnvironment/security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -27,6 +27,7 @@ + permission java.util.PropertyPermission "test.src", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + + // required for test to create an ActivationGroup + permission java.lang.RuntimePermission "setFactory"; +--- jdk/test/java/rmi/activation/checkusage/CheckUsage.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/checkusage/CheckUsage.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,9 +23,10 @@ + + /* @test + * @bug 4259564 ++ * @summary RMID's usage message is incomplete and inconsistent with other tools + * + * @library ../../testlibrary +- * @build TestLibrary JavaVM CheckUsage ++ * @build TestLibrary JavaVM + * @run main/othervm CheckUsage + */ + +@@ -37,28 +38,18 @@ + */ + public class CheckUsage { + public static void main(String[] args) { +- +- System.err.println("\nregression test for 4259564\n"); +- +- JavaVM rmidVM = null; +- + try { +- // make sure the registry exits with a proper usage statement + ByteArrayOutputStream berr = new ByteArrayOutputStream(); + +- // run a VM to start the registry +- rmidVM = new JavaVM("sun.rmi.server.Activation", "", "foo", +- System.out, berr); ++ // create rmid with incorrect command line args ++ JavaVM rmidVM = new JavaVM("sun.rmi.server.Activation", "", "foo", ++ System.out, berr); + System.err.println("starting rmid"); +- rmidVM.start(); + +- // wait for registry exit ++ // run the subprocess and wait for it to exit ++ int rmidVMExitStatus = rmidVM.execute(); + System.err.println("rmid exited with status: " + +- rmidVM.getVM().waitFor()); +- try { +- Thread.sleep(7000); +- } catch (InterruptedException ie) { +- } ++ rmidVMExitStatus); + + String usage = new String(berr.toByteArray()); + +@@ -69,12 +60,8 @@ + } else { + System.err.println("test passed"); + } +- + } catch (Exception e) { + TestLibrary.bomb(e); +- } finally { +- rmidVM.destroy(); +- rmidVM = null; + } + } + } +--- jdk/test/java/rmi/activation/log/LogTest.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/log/LogTest.java 2013-05-05 09:38:43.000000000 -0700 +@@ -29,7 +29,6 @@ + * boundaries + * @author Ann Wollrath + * +- * @build LogTest + * @run main/othervm/timeout=240 LogTest + */ + +--- jdk/test/java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,10 +29,8 @@ + * @author Peter Jones + * + * @library ../../testlibrary +- * @build RMID ActivationLibrary +- * @build InheritedChannelNotServerSocket +- * @run main/othervm/timeout=240 -Djava.rmi.activation.port=5398 +- * InheritedChannelNotServerSocket ++ * @build TestLibrary RMID ActivationLibrary ++ * @run main/othervm/timeout=240 InheritedChannelNotServerSocket + */ + + import java.io.IOException; +@@ -55,8 +53,6 @@ + import java.rmi.server.UnicastRemoteObject; + + public class InheritedChannelNotServerSocket { +- +- private static final int PORT = 5398; + private static final Object lock = new Object(); + private static boolean notified = false; + +@@ -79,7 +75,8 @@ + + public static void main(String[] args) throws Exception { + System.err.println("\nRegression test for bug 6261402\n"); +- ++ System.setProperty("java.rmi.activation.port", ++ Integer.toString(TestLibrary.INHERITEDCHANNELNOTSERVERSOCKET_ACTIVATION_PORT)); + RMID rmid = null; + Callback obj = null; + try { +@@ -91,7 +88,8 @@ + Callback proxy = + (Callback) UnicastRemoteObject.exportObject(obj, 0); + Registry registry = +- LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT); ++ LocateRegistry.createRegistry( ++ TestLibrary.INHERITEDCHANNELNOTSERVERSOCKET_REGISTRY_PORT); + registry.bind("Callback", proxy); + + /* +@@ -99,7 +97,8 @@ + */ + System.err.println("start rmid with inherited channel"); + RMID.removeLog(); +- rmid = RMID.createRMID(System.out, System.err, true, true, PORT); ++ rmid = RMID.createRMID(System.out, System.err, true, true, ++ TestLibrary.INHERITEDCHANNELNOTSERVERSOCKET_ACTIVATION_PORT); + rmid.addOptions(new String[]{ + "-Djava.nio.channels.spi.SelectorProvider=" + + "InheritedChannelNotServerSocket$SP"}); +@@ -122,7 +121,7 @@ + if (obj != null) { + UnicastRemoteObject.unexportObject(obj, true); + } +- ActivationLibrary.rmidCleanup(rmid, PORT); ++ ActivationLibrary.rmidCleanup(rmid); + } + } + +@@ -175,7 +174,7 @@ + try { + System.err.println("notify test..."); + Registry registry = +- LocateRegistry.getRegistry(TestLibrary.REGISTRY_PORT); ++ LocateRegistry.getRegistry(TestLibrary.INHERITEDCHANNELNOTSERVERSOCKET_REGISTRY_PORT); + Callback obj = (Callback) registry.lookup("Callback"); + obj.notifyTest(); + } catch (NotBoundException nbe) { +--- jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,9 +27,8 @@ + * @author Ann Wollrath + * + * @library ../../testlibrary +- * @build RMID ActivationLibrary +- * @build RmidViaInheritedChannel +- * @run main/othervm/timeout=240 -Djava.rmi.activation.port=5398 RmidViaInheritedChannel ++ * @build TestLibrary RMID ActivationLibrary ++ * @run main/othervm/timeout=240 RmidViaInheritedChannel + */ + + import java.io.IOException; +@@ -48,8 +47,6 @@ + import java.rmi.server.UnicastRemoteObject; + + public class RmidViaInheritedChannel implements Callback { +- +- private static final int PORT = 5398; + private static final Object lock = new Object(); + private static boolean notified = false; + +@@ -64,7 +61,8 @@ + } + + public static void main(String[] args) throws Exception { +- ++ System.setProperty("java.rmi.activation.port", ++ Integer.toString(TestLibrary.RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT)); + RMID rmid = null; + Callback obj = null; + +@@ -77,7 +75,8 @@ + Callback proxy = (Callback) + UnicastRemoteObject.exportObject(obj, 0); + Registry registry = +- LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT); ++ LocateRegistry.createRegistry( ++ TestLibrary.RMIDVIAINHERITEDCHANNEL_REGISTRY_PORT); + registry.bind("Callback", proxy); + + /* +@@ -85,7 +84,8 @@ + */ + System.err.println("start rmid with inherited channel"); + RMID.removeLog(); +- rmid = RMID.createRMID(System.out, System.err, true, false, PORT); ++ rmid = RMID.createRMID(System.out, System.err, true, false, ++ TestLibrary.RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT); + rmid.addOptions(new String[]{ + "-Djava.nio.channels.spi.SelectorProvider=RmidViaInheritedChannel$RmidSelectorProvider"}); + rmid.start(); +@@ -108,7 +108,7 @@ + if (obj != null) { + UnicastRemoteObject.unexportObject(obj, true); + } +- ActivationLibrary.rmidCleanup(rmid, PORT); ++ ActivationLibrary.rmidCleanup(rmid); + } + } + +@@ -166,7 +166,8 @@ + channel = ServerSocketChannel.open(); + ServerSocket serverSocket = channel.socket(); + serverSocket.bind( +- new InetSocketAddress(InetAddress.getLocalHost(), PORT)); ++ new InetSocketAddress(InetAddress.getLocalHost(), ++ TestLibrary.RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT)); + System.err.println("serverSocket = " + serverSocket); + + /* +@@ -175,7 +176,7 @@ + try { + System.err.println("notify test..."); + Registry registry = +- LocateRegistry.getRegistry(TestLibrary.REGISTRY_PORT); ++ LocateRegistry.getRegistry(TestLibrary.RMIDVIAINHERITEDCHANNEL_REGISTRY_PORT); + Callback obj = (Callback) registry.lookup("Callback"); + obj.notifyTest(); + } catch (NotBoundException nbe) { +--- jdk/test/java/rmi/activation/rmidViaInheritedChannel/rmid.security.policy 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/activation/rmidViaInheritedChannel/rmid.security.policy 2013-05-05 09:38:43.000000000 -0700 +@@ -2,4 +2,5 @@ + permission java.lang.RuntimePermission "selectorProvider"; + permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch"; + permission java.net.SocketPermission "*", "connect,accept"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; + }; +--- jdk/test/java/rmi/dgc/VMID/CheckVMID.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/dgc/VMID/CheckVMID.java 2013-05-05 09:38:43.000000000 -0700 +@@ -30,7 +30,7 @@ + * @author Ann Wollrath + * + * @library ../../testlibrary +- * @build CheckVMID ++ * @build TestLibrary + * @run main/othervm/policy=security.policy CheckVMID + */ + +--- jdk/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure.java 2013-05-05 09:38:43.000000000 -0700 +@@ -30,8 +30,7 @@ + * rather than pinning it indefinitely. + * @author Peter Jones + * +- * @build DGCAckFailure +- * @build DGCAckFailure_Stub ++ * @build DGCAckFailure DGCAckFailure_Stub + * @run main/othervm DGCAckFailure + */ + +--- jdk/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java 2013-05-05 09:38:43.000000000 -0700 +@@ -31,9 +31,7 @@ + * @author Peter Jones + * + * @library ../../testlibrary +- * @build TestLibrary +- * @build DGCImplInsulation +- * @build DGCImplInsulation_Stub ++ * @build TestLibrary DGCImplInsulation_Stub + * @run main/othervm/policy=security.policy DGCImplInsulation + */ + +--- jdk/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls.java 2012-08-10 10:34:37.000000000 -0700 ++++ jdk/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls.java 2013-05-05 09:38:43.000000000 -0700 +@@ -29,8 +29,7 @@ + * renewing that lease at all after the first failure. + * @author Peter Jones (inspired by Adrian Colley's test case in 4268258) + * +- * @build RetryDirtyCalls +- * @build RetryDirtyCalls_Stub ++ * @build RetryDirtyCalls RetryDirtyCalls_Stub + * @run main/othervm RetryDirtyCalls + */ + +--- jdk/test/java/rmi/invalidName/InvalidName.java 2012-08-10 10:34:39.000000000 -0700 ++++ jdk/test/java/rmi/invalidName/InvalidName.java 2013-05-05 09:38:43.000000000 -0700 +@@ -32,7 +32,7 @@ + * @author Laird Dornin + * + * @library ../testlibrary +- * @build InvalidName ++ * @build TestLibrary + * @run main/othervm InvalidName + */ + +--- jdk/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java 2012-08-10 10:34:39.000000000 -0700 ++++ jdk/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,8 +27,7 @@ + * @author Laird Dornin + * + * @library ../../testlibrary +- * @build StreamPipe TestParams TestLibrary JavaVM +- * @build AltSecurityManager TestSecurityManager ++ * @build TestLibrary JavaVM RMID TestSecurityManager + * @run main/othervm AltSecurityManager + */ + +@@ -41,26 +40,43 @@ + * if registry and rmid take too long to exit. + */ + public class AltSecurityManager implements Runnable { +- ++ private final int regPort; + // variable to hold registry and rmid children + static JavaVM vm = null; + + // names of utilities + static String utilityToStart = null; +- static String registry = "sun.rmi.registry.RegistryImpl"; +- static String rmid = "sun.rmi.server.Activation"; ++ static final String REGISTRY_IMPL = "sun.rmi.registry.RegistryImpl"; ++ static final String ACTIVATION = "sun.rmi.server.Activation"; + + // children should exit in at least this time. + static long TIME_OUT = 15000; + ++ public AltSecurityManager(int port) { ++ if (port <= 0) { ++ TestLibrary.bomb("Port must be greater then 0."); ++ } ++ ++ this.regPort = port; ++ } ++ + public void run() { + try { +- vm = new JavaVM(utilityToStart, +- " -Djava.security.manager=TestSecurityManager", +- ""); ++ if (utilityToStart.equals(REGISTRY_IMPL)) { ++ vm = new JavaVM(utilityToStart, ++ " -Djava.security.manager=TestSecurityManager", ++ Integer.toString(regPort)); ++ } else if (utilityToStart.contains(ACTIVATION)) { ++ vm = new JavaVM(utilityToStart, ++ " -Djava.security.manager=TestSecurityManager", ++ "-port " + Integer.toString(regPort)); ++ } else { ++ TestLibrary.bomb("Utility to start must be " + REGISTRY_IMPL + ++ " or " + ACTIVATION); ++ } ++ + System.err.println("starting " + utilityToStart); +- vm.start(); +- vm.getVM().waitFor(); ++ vm.execute(); + + } catch (Exception e) { + TestLibrary.bomb(e); +@@ -75,7 +91,8 @@ + utilityToStart = utility; + + try { +- Thread thread = new Thread(new AltSecurityManager()); ++ int port = TestLibrary.getUnusedRandomPort(); ++ Thread thread = new Thread(new AltSecurityManager(port)); + System.err.println("expecting RuntimeException for " + + "checkListen in child process"); + long start = System.currentTimeMillis(); +@@ -90,8 +107,8 @@ + + // dont pollute other tests; increase the likelihood + // that rmid will go away if it did not exit already. +- if (utility.equals(rmid)) { +- RMID.shutdown(); ++ if (utility.equals(ACTIVATION)) { ++ RMID.shutdown(port); + } + + TestLibrary.bomb(utilityToStart + +@@ -111,10 +128,10 @@ + System.err.println("\nRegression test for bug 4183202\n"); + + // make sure the registry exits early. +- ensureExit(registry); ++ ensureExit(REGISTRY_IMPL); + + // make sure rmid exits early +- ensureExit(rmid); ++ ensureExit(ACTIVATION); + + System.err.println("test passed"); + +--- jdk/test/java/rmi/registry/checkusage/CheckUsage.java 2012-08-10 10:34:39.000000000 -0700 ++++ jdk/test/java/rmi/registry/checkusage/CheckUsage.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,7 +27,7 @@ + * @author Laird Dornin + * + * @library ../../testlibrary +- * @build TestLibrary JavaVM CheckUsage ++ * @build TestLibrary JavaVM + * @run main/othervm CheckUsage + */ + +@@ -35,34 +35,21 @@ + + /** + * Make sure that the rmiregistry prints out a correct usage statement +- * when run with an incorrect command line; test written to conform to +- * new tighter bug fix/regression test guidelines. ++ * when run with an incorrect command line. + */ + public class CheckUsage { + public static void main(String[] args) { + +- System.err.println("\nregression test for 4151966\n"); +- +- JavaVM registryVM = null; +- + try { +- // make sure the registry exits with a proper usage statement + ByteArrayOutputStream berr = new ByteArrayOutputStream(); + + // run a VM to start the registry +- registryVM = new JavaVM("sun.rmi.registry.RegistryImpl", +- "", "foo", +- System.out, berr); ++ JavaVM registryVM = new JavaVM("sun.rmi.registry.RegistryImpl", ++ "", "foo", ++ System.out, berr); + System.err.println("starting registry"); +- registryVM.start(); +- +- // wait for registry exit + System.err.println(" registry exited with status: " + +- registryVM.getVM().waitFor()); +- try { +- Thread.sleep(7000); +- } catch (InterruptedException ie) { +- } ++ registryVM.execute()); + + String usage = new String(berr.toByteArray()); + +@@ -75,9 +62,6 @@ + } + } catch (Exception e) { + TestLibrary.bomb(e); +- } finally { +- registryVM.destroy(); +- registryVM = null; + } + } + } +--- jdk/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java 2012-08-10 10:34:39.000000000 -0700 ++++ jdk/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,8 +30,9 @@ + * @author Peter Jones + * + * @library ../../testlibrary +- * @build ClassPathCodebase Dummy +- * @run main/othervm/policy=security.policy ClassPathCodebase ++ * @build TestLibrary Dummy ++ * @run main/othervm/policy=security.policy ++ * -Djava.rmi.server.useCodebaseOnly=false ClassPathCodebase + */ + + import java.io.*; +@@ -83,11 +84,12 @@ + System.getProperty("java.home") + File.separator + + "bin" + File.separator + "rmiregistry"; + ++ int port = TestLibrary.getUnusedRandomPort(); + String cmdarray[] = new String[] { + rmiregistryCommand, + "-J-Denv.class.path=.", + "-J-Djava.rmi.server.codebase=" + exportCodebaseURL, +- Integer.toString(TestLibrary.REGISTRY_PORT) }; ++ Integer.toString(port) }; + + System.err.println("\nCommand used to spawn rmiregistry process:"); + System.err.println("\t" + Arrays.asList(cmdarray).toString()); +@@ -118,7 +120,7 @@ + * dummy object to it. + */ + Registry registry = LocateRegistry.getRegistry( +- "localhost", TestLibrary.REGISTRY_PORT); ++ "localhost", port); + + try { + registry.bind(dummyBinding, dummyObject); +@@ -133,7 +135,7 @@ + { + System.err.println( + "Error: another registry running on port " + +- TestLibrary.REGISTRY_PORT + "?"); ++ port + "?"); + } + throw e; + } +--- jdk/test/java/rmi/registry/emptyName/EmptyName.java 2012-08-10 10:34:39.000000000 -0700 ++++ jdk/test/java/rmi/registry/emptyName/EmptyName.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,6 +24,8 @@ + /* @test + * @bug 4399304 + * @summary check that registry allows empty names ++ * @library ../../testlibrary ++ * @build TestLibrary + * @run main/othervm EmptyName + */ + import java.rmi.registry.LocateRegistry; +@@ -32,7 +34,7 @@ + + public class EmptyName { + public static void main(String[] args) throws Exception { +- Registry impl = LocateRegistry.createRegistry(0); ++ Registry impl = TestLibrary.createRegistryOnUnusedPort(); + Registry stub = (Registry) RemoteObject.toStub(impl); + stub.bind("", stub); + stub.lookup(""); +--- jdk/test/java/rmi/registry/interfaceHash/InterfaceHash.java 2012-08-10 10:34:39.000000000 -0700 ++++ jdk/test/java/rmi/registry/interfaceHash/InterfaceHash.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,8 +35,8 @@ + * "interface hash": 4905912898345647071L. + * + * @author Peter Jones +- * @build InterfaceHash +- * @build ReferenceRegistryStub ++ * @library ../../testlibrary ++ * @build TestLibrary ReferenceRegistryStub + * @run main/othervm InterfaceHash + */ + +@@ -58,7 +58,7 @@ + + public class InterfaceHash { + +- private static final int PORT = 2020; ++ private static final int PORT = TestLibrary.getUnusedRandomPort(); + private static final String NAME = "WMM"; + + public static void main(String[] args) throws Exception { +--- jdk/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java 2012-08-10 10:34:39.000000000 -0700 ++++ jdk/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,8 @@ + * @summary Can't run multiple registries in the same VM + * @author Ann Wollrath + * +- * @build MultipleRegistries ++ * @library ../../testlibrary ++ * @build TestLibrary + * @run main/othervm/timeout=240 MultipleRegistries + */ + +@@ -58,12 +59,13 @@ + System.err.println("proxy = " + proxy); + + System.err.println("export registries"); +- Registry registryImpl1 = LocateRegistry.createRegistry(2030); +- Registry registryImpl2 = LocateRegistry.createRegistry(2040); +- ++ Registry registryImpl1 = TestLibrary.createRegistryOnUnusedPort(); ++ int port1 = TestLibrary.getRegistryPort(registryImpl1); ++ Registry registryImpl2 = TestLibrary.createRegistryOnUnusedPort(); ++ int port2 = TestLibrary.getRegistryPort(registryImpl2); + System.err.println("bind remote object in registries"); +- Registry registry1 = LocateRegistry.getRegistry(2030); +- Registry registry2 = LocateRegistry.getRegistry(2040); ++ Registry registry1 = LocateRegistry.getRegistry(port1); ++ Registry registry2 = LocateRegistry.getRegistry(port2); + + registry1.bind(NAME, proxy); + registry2.bind(NAME, proxy); +--- jdk/test/java/rmi/registry/readTest/readTest.java 2012-08-10 10:34:39.000000000 -0700 ++++ jdk/test/java/rmi/registry/readTest/readTest.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,18 +30,19 @@ + public class readTest { + + public static void main(String args[]) throws Exception { +- int port = 7491; + try { + testPkg.Server obj = new testPkg.Server(); + testPkg.Hello stub = (testPkg.Hello) UnicastRemoteObject.exportObject(obj, 0); + // Bind the remote object's stub in the registry +- Registry registry = LocateRegistry.getRegistry(port); ++ Registry registry = ++ LocateRegistry.getRegistry(TestLibrary.READTEST_REGISTRY_PORT); + registry.bind("Hello", stub); + + System.err.println("Server ready"); + + // now, let's test client +- testPkg.Client client = new testPkg.Client(port); ++ testPkg.Client client = ++ new testPkg.Client(TestLibrary.READTEST_REGISTRY_PORT); + String testStubReturn = client.testStub(); + if(!testStubReturn.equals(obj.hello)) { + throw new RuntimeException("Test Fails : unexpected string from stub call"); --- jdk/test/java/rmi/registry/readTest/readTest.sh 2012-08-10 10:34:39.000000000 -0700 -+++ jdk/test/java/rmi/registry/readTest/readTest.sh 2013-03-09 08:44:54.000000000 -0800 -@@ -28,7 +28,7 @@ ++++ jdk/test/java/rmi/registry/readTest/readTest.sh 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,43 +23,61 @@ + + # @test + # @bug 7102369 7094468 7100592 +-# @summary remove java.rmi.server.codebase property parsing from registyimpl ++# @library ../../testlibrary ++# @build TestLibrary ++# @summary remove java.rmi.server.codebase property parsing from RegistryImpl + # @run shell readTest.sh OS=`uname -s` case "$OS" in @@ -78742,8 +86041,415 @@ PS=":" FS="/" FILEURL="file:" + ;; +- Windows* | CYGWIN* ) ++ Windows* ) + PS=";" + FS="\\" + FILEURL="file:/" + ;; ++ CYGWIN* ) ++ PS=";" ++ FS="/" ++ FILEURL="file:/" ++ ;; + * ) + echo "Unrecognized system!" + exit 1; + ;; + esac + ++TEST_CLASSPATH=.$PS${TESTCLASSPATH:-$TESTCLASSES} + cp -r ${TESTSRC}${FS}* . + ${TESTJAVA}${FS}bin${FS}javac testPkg${FS}*java +-${TESTJAVA}${FS}bin${FS}javac readTest.java ++${TESTJAVA}${FS}bin${FS}javac -cp $TEST_CLASSPATH readTest.java + + mkdir rmi_tmp + RMIREG_OUT=rmi.out + #start rmiregistry without any local classes on classpath + cd rmi_tmp +-${TESTJAVA}${FS}bin${FS}rmiregistry 7491 > ..${FS}${RMIREG_OUT} 2>&1 & ++# NOTE: This RMI Registry port must match TestLibrary.READTEST_REGISTRY_PORT ++${TESTJAVA}${FS}bin${FS}rmiregistry -J-Djava.rmi.server.useCodebaseOnly=false \ ++ ${TESTTOOLVMOPTS} 64005 > ..${FS}${RMIREG_OUT} 2>&1 & + RMIREG_PID=$! + # allow some time to start + sleep 3 + cd .. + ++case "$OS" in ++ CYGWIN* ) ++ CODEBASE=`cygpath -w $PWD` ++ ;; ++ * ) ++ CODEBASE=`pwd` ++ ;; ++esac + # trailing / after code base is important for rmi codebase property. +-${TESTJAVA}${FS}bin${FS}java -Djava.rmi.server.codebase=${FILEURL}`pwd`/ readTest > OUT.TXT 2>&1 & ++${TESTJAVA}${FS}bin${FS}java -cp $TEST_CLASSPATH -Djava.rmi.server.codebase=${FILEURL}$CODEBASE/ readTest > OUT.TXT 2>&1 & + TEST_PID=$! + #bulk of testcase - let it run for a while + sleep 5 +--- jdk/test/java/rmi/registry/reexport/Reexport.java 2012-08-10 10:34:39.000000000 -0700 ++++ jdk/test/java/rmi/registry/reexport/Reexport.java 2013-05-05 09:38:43.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,9 +25,7 @@ + * @bug 4120329 + * @summary RMI registry creation is impossible if first attempt fails. + * @library ../../testlibrary +- * @build StreamPipe TestParams TestLibrary JavaVM +- * @build RegistryRunner RegistryRunner_Stub +- * @build Reexport ++ * @build TestLibrary JavaVM RegistryRunner RegistryRunner_Stub + * @run main/othervm Reexport + */ + +@@ -49,22 +47,21 @@ + import java.rmi.server.*; + + public class Reexport { +- static public final int regport = TestLibrary.REGISTRY_PORT; +- + static public void main(String[] argv) { + + Registry reg = null; ++ int regPort = TestLibrary.getUnusedRandomPort(); + + try { + System.err.println("\nregression test for 4120329\n"); + + // establish the registry (we hope) +- System.err.println("Starting registry on port " + regport); +- Reexport.makeRegistry(regport); ++ System.err.println("Starting registry on port " + regPort); ++ Reexport.makeRegistry(regPort); + + // Get a handle to the registry + System.err.println("Creating duplicate registry, this should fail..."); +- reg = createReg(true); ++ reg = createReg(true, regPort); + + if (reg != null) { + TestLibrary.bomb("failed was able to duplicate the registry?!?"); +@@ -73,7 +70,7 @@ + // Kill the first registry. + System.err.println("Bringing down the first registry"); + try { +- Reexport.killRegistry(); ++ Reexport.killRegistry(regPort); + } catch (Exception foo) { + } + +@@ -81,7 +78,7 @@ + System.err.println("Trying again to start our own " + + "registry... this should work"); + +- reg = createReg(false); ++ reg = createReg(false, regPort); + + if (reg == null) { + TestLibrary.bomb("Could not create registry on second try"); +@@ -93,17 +90,17 @@ + TestLibrary.bomb(e); + } finally { + // dont leave the registry around to affect other tests. +- killRegistry(); ++ killRegistry(regPort); + + reg = null; + } + } + +- static Registry createReg(boolean remoteOk) { ++ static Registry createReg(boolean remoteOk, int port) { + Registry reg = null; + + try { +- reg = LocateRegistry.createRegistry(regport); ++ reg = LocateRegistry.createRegistry(port); + } catch (Throwable e) { + if (remoteOk) { + System.err.println("EXPECTING PORT IN USE EXCEPTION:"); +@@ -125,8 +122,7 @@ + try { + JavaVM jvm = new JavaVM("RegistryRunner", "", Integer.toString(p)); + jvm.start(); +- Reexport.subreg = jvm.getVM(); +- ++ Reexport.subreg = jvm; + } catch (IOException e) { + // one of these is summarily dropped, can't remember which one + System.out.println ("Test setup failed - cannot run rmiregistry"); +@@ -138,12 +134,13 @@ + } catch (Exception whatever) { + } + } +- private static Process subreg = null; + +- public static void killRegistry() { ++ private static JavaVM subreg = null; ++ ++ public static void killRegistry(int port) { + if (Reexport.subreg != null) { + +- RegistryRunner.requestExit(); ++ RegistryRunner.requestExit(port); + + try { + Reexport.subreg.waitFor(); +--- jdk/test/java/rmi/reliability/benchmark/runRmiBench.sh 2012-08-10 10:34:42.000000000 -0700 ++++ jdk/test/java/rmi/reliability/benchmark/runRmiBench.sh 2013-05-05 09:38:44.000000000 -0700 +@@ -27,20 +27,20 @@ + # used to run the test under JTREG. + # + # @build bench.BenchInfo bench.HtmlReporter bench.Util bench.Benchmark +-# @build bench.Reporter bench.XmlReporter bench.ConfigFormatException +-# @build bench.Harness bench.TextReporter bench.rmi.BenchServer +-# @build bench.rmi.DoubleArrayCalls bench.rmi.LongCalls bench.rmi.ShortCalls +-# @build bench.rmi.BenchServerImpl bench.rmi.DoubleCalls +-# @build bench.rmi.Main bench.rmi.SmallObjTreeCalls +-# @build bench.rmi.BooleanArrayCalls bench.rmi.ExceptionCalls +-# @build bench.rmi.NullCalls bench.rmi.BooleanCalls bench.rmi.ExportObjs +-# @build bench.rmi.ObjArrayCalls bench.rmi.ByteArrayCalls +-# @build bench.rmi.FloatArrayCalls bench.rmi.ObjTreeCalls +-# @build bench.rmi.ByteCalls bench.rmi.FloatCalls bench.rmi.ProxyArrayCalls +-# @build bench.rmi.CharArrayCalls bench.rmi.IntArrayCalls +-# @build bench.rmi.RemoteObjArrayCalls bench.rmi.CharCalls bench.rmi.IntCalls +-# @build bench.rmi.ClassLoading bench.rmi.LongArrayCalls +-# @build bench.rmi.ShortArrayCalls bench.rmi.altroot.Node ++# bench.Reporter bench.XmlReporter bench.ConfigFormatException ++# bench.Harness bench.TextReporter bench.rmi.BenchServer ++# bench.rmi.DoubleArrayCalls bench.rmi.LongCalls bench.rmi.ShortCalls ++# bench.rmi.BenchServerImpl bench.rmi.DoubleCalls ++# bench.rmi.Main bench.rmi.SmallObjTreeCalls ++# bench.rmi.BooleanArrayCalls bench.rmi.ExceptionCalls ++# bench.rmi.NullCalls bench.rmi.BooleanCalls bench.rmi.ExportObjs ++# bench.rmi.ObjArrayCalls bench.rmi.ByteArrayCalls ++# bench.rmi.FloatArrayCalls bench.rmi.ObjTreeCalls ++# bench.rmi.ByteCalls bench.rmi.FloatCalls bench.rmi.ProxyArrayCalls ++# bench.rmi.CharArrayCalls bench.rmi.IntArrayCalls ++# bench.rmi.RemoteObjArrayCalls bench.rmi.CharCalls bench.rmi.IntCalls ++# bench.rmi.ClassLoading bench.rmi.LongArrayCalls ++# bench.rmi.ShortArrayCalls bench.rmi.altroot.Node + # + # @run shell/timeout=1800 runRmiBench.sh + # +--- jdk/test/java/rmi/reliability/benchmark/runSerialBench.sh 2012-08-10 10:34:42.000000000 -0700 ++++ jdk/test/java/rmi/reliability/benchmark/runSerialBench.sh 2013-05-05 09:38:44.000000000 -0700 +@@ -27,22 +27,22 @@ + # used to run the test under JTREG. + # + # @build bench.BenchInfo bench.HtmlReporter bench.Util bench.Benchmark +-# @build bench.Reporter bench.XmlReporter bench.ConfigFormatException +-# @build bench.Harness bench.TextReporter +-# @build bench.serial.BooleanArrays bench.serial.Booleans +-# @build bench.serial.ByteArrays bench.serial.Bytes bench.serial.CharArrays +-# @build bench.serial.Chars bench.serial.ClassDesc bench.serial.Cons +-# @build bench.serial.CustomDefaultObjTrees bench.serial.CustomObjTrees +-# @build bench.serial.DoubleArrays bench.serial.Doubles +-# @build bench.serial.ExternObjTrees bench.serial.FloatArrays +-# @build bench.serial.Floats bench.serial.GetPutFieldTrees +-# @build bench.serial.IntArrays bench.serial.Ints bench.serial.LongArrays +-# @build bench.serial.Longs bench.serial.Main bench.serial.ObjArrays +-# @build bench.serial.ObjTrees bench.serial.ProxyArrays +-# @build bench.serial.ProxyClassDesc bench.serial.RepeatObjs +-# @build bench.serial.ReplaceTrees bench.serial.ShortArrays +-# @build bench.serial.Shorts bench.serial.SmallObjTrees +-# @build bench.serial.StreamBuffer bench.serial.Strings ++# bench.Reporter bench.XmlReporter bench.ConfigFormatException ++# bench.Harness bench.TextReporter ++# bench.serial.BooleanArrays bench.serial.Booleans ++# bench.serial.ByteArrays bench.serial.Bytes bench.serial.CharArrays ++# bench.serial.Chars bench.serial.ClassDesc bench.serial.Cons ++# bench.serial.CustomDefaultObjTrees bench.serial.CustomObjTrees ++# bench.serial.DoubleArrays bench.serial.Doubles ++# bench.serial.ExternObjTrees bench.serial.FloatArrays ++# bench.serial.Floats bench.serial.GetPutFieldTrees ++# bench.serial.IntArrays bench.serial.Ints bench.serial.LongArrays ++# bench.serial.Longs bench.serial.Main bench.serial.ObjArrays ++# bench.serial.ObjTrees bench.serial.ProxyArrays ++# bench.serial.ProxyClassDesc bench.serial.RepeatObjs ++# bench.serial.ReplaceTrees bench.serial.ShortArrays ++# bench.serial.Shorts bench.serial.SmallObjTrees ++# bench.serial.StreamBuffer bench.serial.Strings + # + # @run shell/timeout=1800 runSerialBench.sh + # +--- jdk/test/java/rmi/reliability/juicer/AppleUserImpl.java 2012-08-10 10:34:42.000000000 -0700 ++++ jdk/test/java/rmi/reliability/juicer/AppleUserImpl.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -55,23 +55,24 @@ + * has been reached. + * + * @library ../../testlibrary +- * +- * @build Apple AppleEvent AppleImpl AppleUserImpl +- * @build Orange OrangeEcho OrangeEchoImpl OrangeImpl +- * @build ApplicationServer ++ * @build TestLibrary ++ * Apple AppleEvent AppleImpl ++ * Orange OrangeEcho OrangeEchoImpl OrangeImpl ++ * ApplicationServer + * + * @run main/othervm/policy=security.policy AppleUserImpl -seconds 30 + * + * @author Peter Jones, Nigel Daley + */ + +-import java.rmi.RemoteException; + import java.rmi.NoSuchObjectException; +-import java.rmi.server.UnicastRemoteObject; ++import java.rmi.RemoteException; + import java.rmi.registry.LocateRegistry; ++import java.rmi.registry.Registry; ++import java.rmi.server.UnicastRemoteObject; + import java.util.Random; +-import java.util.logging.Logger; + import java.util.logging.Level; ++import java.util.logging.Logger; + + /** + * The AppleUserImpl class implements the behavior of the remote +@@ -80,7 +81,7 @@ + * AppleUserThread is created for each apple. + */ + public class AppleUserImpl extends UnicastRemoteObject implements AppleUser { +- ++ private static int registryPort = -1; + private static final Logger logger = + Logger.getLogger("reliability.appleuser"); + private static int threadNum = 0; +@@ -308,8 +309,10 @@ + + synchronized (user) { + // create new registry and bind new AppleUserImpl in registry +- LocateRegistry.createRegistry(2006); +- LocateRegistry.getRegistry(2006).rebind("AppleUser",user); ++ Registry registry = TestLibrary.createRegistryOnUnusedPort(); ++ registryPort = TestLibrary.getRegistryPort(registry); ++ LocateRegistry.getRegistry(registryPort).rebind("AppleUser", ++ user); + + // start the other server if applicable + if (othervm) { +@@ -318,7 +321,9 @@ + "started in separate process"); + } else { + Class app = Class.forName("ApplicationServer"); +- server = new Thread((Runnable) app.newInstance()); ++ java.lang.reflect.Constructor appConstructor = ++ app.getDeclaredConstructor(new Class[] {Integer.TYPE}); ++ server = new Thread((Runnable) appConstructor.newInstance(registryPort)); + logger.log(Level.INFO, "Starting application server " + + "in same process"); + server.start(); +--- jdk/test/java/rmi/reliability/juicer/ApplicationServer.java 2012-08-10 10:34:42.000000000 -0700 ++++ jdk/test/java/rmi/reliability/juicer/ApplicationServer.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,18 +38,21 @@ + private static final int LOOKUP_ATTEMPTS = 5; + private static final int DEFAULT_NUMAPPLES = 10; + private static final String DEFAULT_REGISTRYHOST = "localhost"; ++ private static final int DEFAULT_REGISTRYPORT = -1; + private final int numApples; + private final String registryHost; ++ private final int registryPort; + private final Apple[] apples; + private AppleUser user; + +- ApplicationServer() { +- this(DEFAULT_NUMAPPLES, DEFAULT_REGISTRYHOST); ++ ApplicationServer(int registryPort) { ++ this(DEFAULT_NUMAPPLES, DEFAULT_REGISTRYHOST, registryPort); + } + +- ApplicationServer(int numApples, String registryHost) { ++ ApplicationServer(int numApples, String registryHost, int registryPort) { + this.numApples = numApples; + this.registryHost = registryHost; ++ this.registryPort = registryPort; + apples = new Apple[numApples]; + } + +@@ -71,7 +74,7 @@ + for (i = 0; i < LOOKUP_ATTEMPTS; i++) { + try { + Registry registry = LocateRegistry.getRegistry( +- registryHost, 2006); ++ registryHost, registryPort); + user = (AppleUser) registry.lookup("AppleUser"); + user.startTest(); + break; //successfully obtained AppleUser +@@ -120,16 +123,20 @@ + private static void usage() { + System.err.println("Usage: ApplicationServer [-numApples <numApples>]"); + System.err.println(" [-registryHost <host>]"); ++ System.err.println(" -registryPort <port>"); + System.err.println(" numApples The number of apples (threads) to use."); + System.err.println(" The default is 10 apples."); + System.err.println(" host The host running rmiregistry " + + "which contains AppleUser."); + System.err.println(" The default is \"localhost\"."); ++ System.err.println(" port The port the rmiregistry is running" + ++ "on."); + System.err.println(); + } + + public static void main(String[] args) { + int num = DEFAULT_NUMAPPLES; ++ int port = -1; + String host = DEFAULT_REGISTRYHOST; + + // parse command line args +@@ -142,17 +149,25 @@ + } else if (arg.equals("-registryHost")) { + i++; + host = args[i]; ++ } else if (arg.equals("-registryPort")) { ++ i++; ++ port = Integer.parseInt(args[i]); + } else { + usage(); + } + } ++ ++ if (port == -1) { ++ usage(); ++ throw new RuntimeException("Port must be specified."); ++ } + } catch (Throwable t) { + usage(); + throw new RuntimeException("TEST FAILED: Bad argument"); + } + + // start the client server +- Thread server = new Thread(new ApplicationServer(num,host)); ++ Thread server = new Thread(new ApplicationServer(num,host,port)); + server.start(); + // main should exit once all exported remote objects are gc'd + } --- jdk/test/java/rmi/reliability/launch_reliability.ksh 2012-08-10 10:34:42.000000000 -0700 -+++ jdk/test/java/rmi/reliability/launch_reliability.ksh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/rmi/reliability/launch_reliability.ksh 2013-05-05 09:38:44.000000000 -0700 @@ -84,14 +84,12 @@ @@ -78763,8 +86469,118 @@ export PATH_SEP mainpid=$$ +--- jdk/test/java/rmi/server/ObjID/randomIDs/RandomIDs.java 2012-08-10 10:34:43.000000000 -0700 ++++ jdk/test/java/rmi/server/ObjID/randomIDs/RandomIDs.java 2013-05-05 09:38:44.000000000 -0700 +@@ -30,7 +30,6 @@ + * ObjID() should still generate sequential object numbers. + * @author Peter Jones + * +- * @build RandomIDs + * @run main/othervm RandomIDs random + * @run main/othervm -Djava.rmi.server.randomIDs=true RandomIDs random + * @run main/othervm -Djava.rmi.server.randomIDs=false RandomIDs sequential +--- jdk/test/java/rmi/server/RMIClassLoader/delegateBeforePermissionCheck/DelegateBeforePermissionCheck.java 2012-08-10 10:34:43.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/delegateBeforePermissionCheck/DelegateBeforePermissionCheck.java 2013-05-05 09:38:44.000000000 -0700 +@@ -33,9 +33,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build DelegateBeforePermissionCheck +- * @build Foo ++ * @build TestLibrary Foo + * @run main/othervm DelegateBeforePermissionCheck + */ + +--- jdk/test/java/rmi/server/RMIClassLoader/delegateToContextLoader/DelegateToContextLoader.java 2012-08-10 10:34:43.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/delegateToContextLoader/DelegateToContextLoader.java 2013-05-05 09:38:44.000000000 -0700 +@@ -29,7 +29,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build DelegateToContextLoader Dummy ++ * @build TestLibrary Dummy + * @run main/othervm/policy=security.policy/timeout=120 DelegateToContextLoader + */ + +--- jdk/test/java/rmi/server/RMIClassLoader/downloadArrayClass/DownloadArrayClass.java 2012-08-10 10:34:43.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/downloadArrayClass/DownloadArrayClass.java 2013-05-05 09:38:44.000000000 -0700 +@@ -31,11 +31,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build Receiver +- * @build DownloadArrayClass +- * @build DownloadArrayClass_Stub +- * @build Foo ++ * @build TestLibrary Receiver DownloadArrayClass_Stub Foo + * @run main/othervm/policy=security.policy DownloadArrayClass + */ + +@@ -68,6 +64,10 @@ + TestLibrary.bomb(e); + } + ++ System.err.println("Setting codebase property to: " + remoteCodebase); ++ System.setProperty("java.rmi.server.codebase", ++ remoteCodebase.toString()); ++ + /* + * Load Foo from a non-RMI class loader so that it won't be already + * loaded by an RMI class loader in this VM (for whatever that's +--- jdk/test/java/rmi/server/RMIClassLoader/downloadArrayClass/security.policy 2012-08-10 10:34:43.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/downloadArrayClass/security.policy 2013-05-05 09:38:44.000000000 -0700 +@@ -7,6 +7,8 @@ + }; + + grant { ++ permission java.util.PropertyPermission ++ "java.rmi.server.codebase", "read,write"; + + // permissions needed to move classes into separate codebase directories + permission java.io.FilePermission +--- jdk/test/java/rmi/server/RMIClassLoader/getClassAnnotation/NullClass.java 2012-08-10 10:34:43.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/getClassAnnotation/NullClass.java 2013-05-05 09:38:44.000000000 -0700 +@@ -29,7 +29,6 @@ + * + * @library ../../../testlibrary + * @build TestLibrary +- * @build NullClass + * @run main/othervm NullClass + */ + +--- jdk/test/java/rmi/server/RMIClassLoader/getClassLoader/GetClassLoader.java 2012-08-10 10:34:43.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/getClassLoader/GetClassLoader.java 2013-05-05 09:38:44.000000000 -0700 +@@ -29,9 +29,7 @@ + * @author Ann Wollrath + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build GetClassLoader +- * @build Foo ++ * @build TestLibrary Foo + * @run main/othervm/policy=security.policy GetClassLoader + */ + +--- jdk/test/java/rmi/server/RMIClassLoader/loadProxyClasses/LoadProxyClasses.java 2012-08-10 10:34:43.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/loadProxyClasses/LoadProxyClasses.java 2013-05-05 09:38:44.000000000 -0700 +@@ -30,9 +30,10 @@ + * @author Laird Dornin + * + * @library ../../../testlibrary +- * @build TestLibrary FnnClass FnnUnmarshal LoadProxyClasses NonpublicInterface +- * @build NonpublicInterface1 PublicInterface PublicInterface1 +- * @run main/othervm/policy=security.policy LoadProxyClasses ++ * @build TestLibrary FnnClass FnnUnmarshal NonpublicInterface ++ * NonpublicInterface1 PublicInterface PublicInterface1 ++ * @run main/othervm/policy=security.policy ++ * -Djava.rmi.server.useCodebaseOnly=false LoadProxyClasses + */ + + import java.rmi.server.RMIClassLoader; --- jdk/test/java/rmi/server/RMIClassLoader/loadProxyClasses/security.policy 2012-08-10 10:34:43.000000000 -0700 -+++ jdk/test/java/rmi/server/RMIClassLoader/loadProxyClasses/security.policy 2013-03-09 08:44:51.000000000 -0800 ++++ jdk/test/java/rmi/server/RMIClassLoader/loadProxyClasses/security.policy 2013-05-05 09:38:44.000000000 -0700 @@ -13,6 +13,7 @@ permission java.io.FilePermission ".${/}-", "read,write,delete"; @@ -78773,9 +86589,1339 @@ permission java.lang.RuntimePermission "setContextClassLoader"; // used by TestLibrary to determine test environment +--- jdk/test/java/rmi/server/RMIClassLoader/noSecurityManager/NoSecurityManager.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/noSecurityManager/NoSecurityManager.java 2013-05-05 09:38:44.000000000 -0700 +@@ -30,7 +30,7 @@ + * been used for the RMI class loader instance. + * @author Peter Jones + * +- * @build NoSecurityManager Dummy LocalDummy ++ * @build Dummy LocalDummy + * @run main/othervm/timeout=120 NoSecurityManager + */ + +--- jdk/test/java/rmi/server/RMIClassLoader/spi/ContextInsulation.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/spi/ContextInsulation.java 2013-05-05 09:38:44.000000000 -0700 +@@ -30,11 +30,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build ContextInsulation +- * @build ServiceConfiguration +- * @build TestProvider +- * @build TestProvider2 ++ * @build TestLibrary ServiceConfiguration TestProvider TestProvider2 + * @run main/othervm/policy=security.policy ContextInsulation + */ + +--- jdk/test/java/rmi/server/RMIClassLoader/spi/DefaultProperty.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/spi/DefaultProperty.java 2013-05-05 09:38:44.000000000 -0700 +@@ -29,10 +29,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build DefaultProperty +- * @build ServiceConfiguration +- * @build Foo ++ * @build TestLibrary ServiceConfiguration Foo + * @run main/othervm/policy=security.policy DefaultProperty + */ + +--- jdk/test/java/rmi/server/RMIClassLoader/spi/Installed.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/spi/Installed.java 2013-05-05 09:38:44.000000000 -0700 +@@ -29,11 +29,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build Installed +- * @build ServiceConfiguration +- * @build TestProvider +- * @build TestProvider2 ++ * @build TestLibrary ServiceConfiguration TestProvider TestProvider2 + * @run main/othervm/policy=security.policy Installed + */ + +--- jdk/test/java/rmi/server/RMIClassLoader/spi/InvalidProperty.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/spi/InvalidProperty.java 2013-05-05 09:38:44.000000000 -0700 +@@ -29,9 +29,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build InvalidProperty +- * @build ServiceConfiguration ++ * @build TestLibrary ServiceConfiguration + * @run main/othervm/policy=security.policy InvalidProperty + */ + +--- jdk/test/java/rmi/server/RMIClassLoader/spi/Property.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/spi/Property.java 2013-05-05 09:38:44.000000000 -0700 +@@ -29,10 +29,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build Property +- * @build ServiceConfiguration +- * @build TestProvider ++ * @build TestLibrary ServiceConfiguration TestProvider + * @run main/othervm/policy=security.policy Property + */ + +--- jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnly/UseCodebaseOnly.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnly/UseCodebaseOnly.java 2013-05-05 09:38:44.000000000 -0700 +@@ -31,12 +31,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build Receiver +- * @build UseCodebaseOnly +- * @build UseCodebaseOnly_Stub +- * @build Foo +- * @build Bar ++ * @build TestLibrary Receiver UseCodebaseOnly_Stub Foo Bar + * @run main/othervm/policy=security.policy UseCodebaseOnly + */ + +--- jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnlyDefault/UseCodebaseOnlyDefault.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnlyDefault/UseCodebaseOnlyDefault.java 2013-05-05 09:38:44.000000000 -0700 +@@ -0,0 +1,100 @@ ++/* ++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * 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 8001040 ++ * @summary Tests proper parsing and defaulting of the ++ * "java.rmi.server.useCodebaseOnly" property. ++ * ++ * @run main/othervm UseCodebaseOnlyDefault true ++ * @run main/othervm -Djava.rmi.server.useCodebaseOnly=xyzzy UseCodebaseOnlyDefault true ++ * @run main/othervm -Djava.rmi.server.useCodebaseOnly UseCodebaseOnlyDefault true ++ * @run main/othervm -Djava.rmi.server.useCodebaseOnly=true UseCodebaseOnlyDefault true ++ * @run main/othervm -Djava.rmi.server.useCodebaseOnly=false UseCodebaseOnlyDefault false ++ */ ++ ++import java.io.ByteArrayInputStream; ++import java.io.ByteArrayOutputStream; ++import java.io.ObjectOutputStream; ++import java.lang.reflect.Field; ++import sun.rmi.server.MarshalInputStream; ++ ++/** ++ * usage: UseCodebaseOnlyDefault expected ++ * ++ * 'expected' is the expected value of useCodebaseOnly, which ++ * must be "true" or "false". ++ */ ++public class UseCodebaseOnlyDefault { ++ static final String USAGE = "usage: UseCodebaseOnlyDefault boolean"; ++ static final String PROPNAME = "java.rmi.server.useCodebaseOnly"; ++ ++ /** ++ * Gets the actual useCodebaseOnly value by creating an instance ++ * of MarshalInputStream and reflecting on the useCodebaseOnly field. ++ */ ++ static boolean getActualValue() throws Exception { ++ ByteArrayOutputStream baos = new ByteArrayOutputStream(); ++ ObjectOutputStream oos = new ObjectOutputStream(baos); ++ oos.writeObject("foo"); ++ oos.close(); ++ ++ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ++ MarshalInputStream mis = new MarshalInputStream(bais); ++ ++ Field f = MarshalInputStream.class.getDeclaredField("useCodebaseOnly"); ++ f.setAccessible(true); ++ return f.getBoolean(mis); ++ } ++ ++ public static void main(String[] args) throws Exception { ++ if (args.length != 1) { ++ throw new IllegalArgumentException(USAGE); ++ } ++ ++ boolean expected; ++ if (args[0].equals("true")) { ++ expected = true; ++ } else if (args[0].equals("false")) { ++ expected = false; ++ } else { ++ throw new IllegalArgumentException(USAGE); ++ } ++ System.out.println("expected = " + expected); ++ ++ String prop = System.getProperty(PROPNAME); ++ System.out.print("Property " + PROPNAME); ++ if (prop == null) { ++ System.out.println(" is not set"); ++ } else { ++ System.out.println(" = '" + prop + "'"); ++ } ++ ++ boolean actual = getActualValue(); ++ System.out.println("actual = " + actual); ++ ++ if (expected != actual) ++ throw new AssertionError("actual does not match expected value"); ++ } ++} +--- jdk/test/java/rmi/server/RMIClassLoader/useGetURLs/UseGetURLs.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMIClassLoader/useGetURLs/UseGetURLs.java 2013-05-05 09:38:44.000000000 -0700 +@@ -30,8 +30,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build UseGetURLs Dummy ++ * @build TestLibrary Dummy + * @run main/othervm/policy=security.policy/timeout=120 UseGetURLs + */ + +--- jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -128,8 +128,9 @@ + ActivationGroup.createGroup(groupID, groupDesc, 0); + + EchoImpl impl = new EchoImpl(protocol); +- System.out.println("EchoServer: binding in registry"); +- Naming.rebind("//:" + UseCustomSocketFactory.REGISTRY_PORT + ++ int registryPort = Integer.parseInt(System.getProperty("rmi.registry.port")); ++ System.out.println("EchoServer: binding in registry on port:" + registryPort); ++ Naming.rebind("//:" + registryPort + + "/EchoServer", impl); + System.out.println("EchoServer ready."); + } catch (Exception e) { +--- jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,10 +28,7 @@ + * @author Ann Wollrath + * + * @library ../../../../testlibrary +- * @build Echo +- * @build EchoImpl +- * @build EchoImpl_Stub +- * @build UseCustomSocketFactory ++ * @build TestLibrary Echo EchoImpl EchoImpl_Stub + * @run main/othervm/policy=security.policy/timeout=360 UseCustomSocketFactory + */ + +@@ -42,8 +39,8 @@ + import java.rmi.registry.*; + + public class UseCustomSocketFactory { ++ static final int REGISTRY_PORT = TestLibrary.getUnusedRandomPort(); + +- final static int REGISTRY_PORT = 2006; + static String[] protocol = new String[] { "", "compress", "xor" }; + + public static void main(String[] args) { +@@ -68,7 +65,7 @@ + " -C-Djava.security.manager=java.rmi.RMISecurityManager "}); + rmid.start(); + +- Echo[] echo = spawnAndTest(); ++ Echo[] echo = spawnAndTest(rmid.getPort()); + reactivateAndTest(echo); + } catch (IOException e) { + TestLibrary.bomb("creating rmid", e); +@@ -78,17 +75,20 @@ + } + } + +- private static Echo[] spawnAndTest() { ++ private static Echo[] spawnAndTest(int rmidPort) { + + System.err.println("\nCreate Test-->"); + + Echo[] echo = new Echo[protocol.length]; + + for (int i = 0; i < protocol.length; i++) { +- + JavaVM serverVM = new JavaVM("EchoImpl", + "-Djava.security.policy=" + +- TestParams.defaultPolicy, ++ TestParams.defaultPolicy + ++ " -Drmi.registry.port=" + ++ REGISTRY_PORT + ++ " -Djava.rmi.activation.port=" + ++ rmidPort, + protocol[i]); + + System.err.println("\nusing protocol: " + +--- jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/security.policy 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/security.policy 2013-05-05 09:38:44.000000000 -0700 +@@ -30,6 +30,9 @@ + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; + ++ permission java.util.PropertyPermission "rmi.registry.port", "read"; ++ permission java.util.PropertyPermission "java.rmi.activation.port", "write"; ++ + // required for test to create an ActivationGroup + permission java.lang.RuntimePermission "setFactory"; + +--- jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -65,8 +65,9 @@ + if (args.length >= 1) + protocol = args[0]; + ++ int registryPort = Integer.parseInt(System.getProperty("rmi.registry.port")); + registry = java.rmi.registry.LocateRegistry. +- getRegistry("localhost", TestLibrary.REGISTRY_PORT, ++ getRegistry("localhost", registryPort, + new Compress.CompressRMIClientSocketFactory()); + UseCustomSocketFactory.checkStub(registry, "RMIClientSocket"); + hello = (Hello) registry.lookup("/HelloServer"); +--- jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,11 +29,7 @@ + * @author Laird Dornin; code borrowed from Ann Wollrath + * + * @library ../../../../testlibrary +- * @build Hello +- * @build HelloImpl +- * @build HelloImpl_Stub +- * @build UseCustomSocketFactory +- * @build Compress ++ * @build TestLibrary Compress Hello HelloImpl HelloImpl_Stub + * @run main/othervm/policy=security.policy/timeout=240 UseCustomSocketFactory + */ + +@@ -58,6 +54,7 @@ + System.out.println("\nRegression test for bug 4148850\n"); + + TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager"); ++ int registryPort = TestLibrary.getUnusedRandomPort(); + + try { + impl = new HelloImpl(); +@@ -67,7 +64,7 @@ + * allow the rmiregistry to be secure. + */ + registry = LocateRegistry. +- createRegistry(TestLibrary.REGISTRY_PORT, ++ createRegistry(registryPort, + new Compress.CompressRMIClientSocketFactory(), + new Compress.CompressRMIServerSocketFactory()); + registry.rebind("/HelloServer", impl); +@@ -77,8 +74,12 @@ + TestLibrary.bomb("creating registry", e); + } + +- JavaVM serverVM = new JavaVM("HelloImpl", "-Djava.security.policy=" + +- TestParams.defaultPolicy, ""); ++ JavaVM serverVM = new JavaVM("HelloImpl", ++ "-Djava.security.policy=" + ++ TestParams.defaultPolicy + ++ " -Drmi.registry.port=" + ++ registryPort, ++ ""); + + try { + +--- jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/security.policy 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/security.policy 2013-05-05 09:38:44.000000000 -0700 +@@ -22,6 +22,8 @@ + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; + ++ permission java.util.PropertyPermission "rmi.registry.port", "read"; ++ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +--- jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -64,8 +64,9 @@ + + System.out.println("EchoServer: creating remote object"); + EchoImpl impl = new EchoImpl(protocol); ++ int registryPort = Integer.parseInt(System.getProperty("rmi.registry.port")); + System.out.println("EchoServer: binding in registry"); +- Naming.rebind("//:" + TestLibrary.REGISTRY_PORT + ++ Naming.rebind("//:" + registryPort + + "/EchoServer", impl); + System.out.println("EchoServer ready."); + } catch (Exception e) { +--- jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,11 +29,7 @@ + * @author Ann Wollrath + * + * @library ../../../../testlibrary +- * @build TestLibrary RMID JavaVM StreamPipe +- * @build Echo +- * @build EchoImpl +- * @build EchoImpl_Stub +- * @build UseCustomSocketFactory ++ * @build TestLibrary RMID JavaVM Echo EchoImpl EchoImpl_Stub + * @run main/othervm/policy=security.policy/timeout=120 UseCustomSocketFactory + */ + +@@ -46,6 +42,8 @@ + + public static void main(String[] args) { + ++ int registryPort = -1; ++ + String[] protocol = new String[] { "", "compress", "xor" }; + + System.out.println("\nRegression test for bug 4127826\n"); +@@ -53,7 +51,8 @@ + TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager"); + + try { +- LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT); ++ Registry registry = TestLibrary.createRegistryOnUnusedPort(); ++ registryPort = TestLibrary.getRegistryPort(registry); + } catch (Exception e) { + TestLibrary.bomb("creating registry", e); + } +@@ -65,7 +64,9 @@ + + JavaVM serverVM = new JavaVM("EchoImpl", + "-Djava.security.policy=" + +- TestParams.defaultPolicy, ++ TestParams.defaultPolicy + ++ " -Drmi.registry.port=" + ++ registryPort, + protocol[i]); + System.err.println("\nusing protocol: " + + (protocol[i] == "" ? "none" : protocol[i])); +@@ -79,7 +80,7 @@ + Echo obj = null; + do { + try { +- obj = (Echo) Naming.lookup("//:" + TestLibrary.REGISTRY_PORT + ++ obj = (Echo) Naming.lookup("//:" + registryPort + + "/EchoServer"); + break; + } catch (NotBoundException e) { +@@ -109,7 +110,7 @@ + } finally { + serverVM.destroy(); + try { +- Naming.unbind("//:" + TestLibrary.REGISTRY_PORT + ++ Naming.unbind("//:" + registryPort + + "/EchoServer"); + } catch (Exception e) { + TestLibrary.bomb("unbinding EchoServer", e); +--- jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/security.policy 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/security.policy 2013-05-05 09:38:44.000000000 -0700 +@@ -22,9 +22,18 @@ + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; + ++ permission java.util.PropertyPermission "rmi.registry.port", "read"; ++ + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + ++ // used by TestLibrary to get the RMI Registry port ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.registry"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.server"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport.proxy"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport.tcp"; ++ + // test needs to export rmid and communicate with objects on arbitrary ports + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + }; +--- jdk/test/java/rmi/server/RemoteObject/notExtending/NotExtending.java 2012-08-10 10:34:44.000000000 -0700 ++++ jdk/test/java/rmi/server/RemoteObject/notExtending/NotExtending.java 2013-05-05 09:38:44.000000000 -0700 +@@ -29,9 +29,7 @@ + * (specifically: stubs) that contain the instance's RemoteRef. + * @author Peter Jones + * +- * @build NotExtending +- * @build NotExtending_Stub +- * @build NotExtending_Skel ++ * @build NotExtending_Stub NotExtending_Skel + * @run main/othervm/timeout=240 NotExtending + */ + +--- jdk/test/java/rmi/server/RemoteObject/verifyRemoteEquals/VerifyRemoteEquals.java 2012-08-10 10:34:45.000000000 -0700 ++++ jdk/test/java/rmi/server/RemoteObject/verifyRemoteEquals/VerifyRemoteEquals.java 2013-05-05 09:38:44.000000000 -0700 +@@ -21,16 +21,16 @@ + * questions. + */ + +-/** ++/* + * @test + * @bug 4251010 + * @summary equals does not works on stub objects created with + * custom socket AndFactory +- * @library ../../../testlibrary ++ * @author Laird Dornin + * +- * @build VerifyRemoteEquals ++ * @library ../../../testlibrary ++ * @build TestLibrary + * @run main/othervm/timeout=40 VerifyRemoteEquals +- * @author Laird Dornin + */ + + import java.io.*; +--- jdk/test/java/rmi/server/RemoteServer/AddrInUse.java 2012-08-10 10:34:45.000000000 -0700 ++++ jdk/test/java/rmi/server/RemoteServer/AddrInUse.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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 @@ + * @summary retryServerSocket should not retry on BindException + * @author Ann Wollrath + * +- * @build AddrInUse + * @run main/othervm AddrInUse + */ + +@@ -36,7 +35,7 @@ + + public class AddrInUse implements Runnable { + +- private static final int PORT = 9999; ++ private static int port = -1; + private static final long TIMEOUT = 10000; + + private boolean exportSucceeded = false; +@@ -49,7 +48,7 @@ + * has already been bound, and record the result. + */ + try { +- LocateRegistry.createRegistry(PORT); ++ LocateRegistry.createRegistry(port); + synchronized (this) { + exportSucceeded = true; + notifyAll(); +@@ -68,8 +67,9 @@ + /* + * Bind a server socket to a port. + */ +- System.err.println("create a ServerSocket on port " + PORT + "..."); +- ServerSocket server = new ServerSocket(PORT); ++ ServerSocket server = new ServerSocket(0); ++ port = server.getLocalPort(); ++ System.err.println("Created a ServerSocket on port " + port + "..."); + + /* + * Start a thread that creates a registry on the same port, +--- jdk/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName.java 2012-08-10 10:34:45.000000000 -0700 ++++ jdk/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName.java 2013-05-05 09:38:44.000000000 -0700 +@@ -31,8 +31,7 @@ + * + * @author Ann Wollrath + * +- * @build ChangeHostName +- * @build ChangeHostName_Stub ++ * @build ChangeHostName ChangeHostName_Stub + * @run main/othervm ChangeHostName + */ + +--- jdk/test/java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java 2012-08-10 10:34:45.000000000 -0700 ++++ jdk/test/java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java 2013-05-05 09:38:44.000000000 -0700 +@@ -30,6 +30,7 @@ + * @bug 6597112 + * @summary GC'ing objects whilst being exported to RMI should not cause exceptions + * @author Neil Richards <neil.richards@ngmr.net>, <neil_richards@uk.ibm.com> ++ * @run main GcDuringExport + */ + + import java.rmi.Remote; +--- jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java 2012-08-10 10:34:45.000000000 -0700 ++++ jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,14 +32,8 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build JavaVM +- * @build KeepAliveDuringCall +- * @build KeepAliveDuringCall_Stub +- * @build ShutdownMonitor +- * @build Shutdown +- * @build ShutdownImpl +- * @build ShutdownImpl_Stub ++ * @build TestLibrary JavaVM KeepAliveDuringCall_Stub ++ * ShutdownMonitor Shutdown ShutdownImpl ShutdownImpl_Stub + * @run main/othervm KeepAliveDuringCall + */ + +@@ -82,15 +76,17 @@ + UnicastRemoteObject.exportObject(obj); + System.err.println("exported shutdown monitor"); + +- Registry localRegistry = +- LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT); ++ Registry localRegistry = TestLibrary.createRegistryOnUnusedPort(); ++ int registryPort = TestLibrary.getRegistryPort(localRegistry); + System.err.println("created local registry"); + + localRegistry.bind(BINDING, obj); + System.err.println("bound shutdown monitor in local registry"); + + System.err.println("starting remote ShutdownImpl VM..."); +- (new JavaVM("ShutdownImpl")).start(); ++ (new JavaVM("ShutdownImpl", ++ "-Drmi.registry.port=" + ++ registryPort, "")).start(); + + Shutdown s; + synchronized (obj.lock) { +--- jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl.java 2012-08-10 10:34:45.000000000 -0700 ++++ jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -68,8 +68,9 @@ + + public static void main(String[] args) { + try { ++ int registryPort = Integer.parseInt(System.getProperty("rmi.registry.port")); + Registry registry = +- LocateRegistry.getRegistry("", TestLibrary.REGISTRY_PORT); ++ LocateRegistry.getRegistry("", registryPort); + ShutdownMonitor monitor = (ShutdownMonitor) + registry.lookup(KeepAliveDuringCall.BINDING); + System.err.println("(ShutdownImpl) retrieved shutdown monitor"); +--- jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport.java 2012-08-10 10:34:45.000000000 -0700 ++++ jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport.java 2013-05-05 09:38:44.000000000 -0700 +@@ -31,8 +31,7 @@ + * IOException (see fix for bugid 4017232). + * @author Peter Jones + * +- * @build MarshalAfterUnexport +- * @build MarshalAfterUnexport_Stub ++ * @build MarshalAfterUnexport MarshalAfterUnexport_Stub + * @run main/othervm MarshalAfterUnexport + */ + +--- jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2.java 2012-08-10 10:34:45.000000000 -0700 ++++ jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2.java 2013-05-05 09:38:44.000000000 -0700 +@@ -33,8 +33,7 @@ + * @author Peter Jones + * @author Ann Wollrath + * +- * @build MarshalAfterUnexport2 +- * @build MarshalAfterUnexport2_Stub ++ * @build MarshalAfterUnexport2 MarshalAfterUnexport2_Stub + * @run main/othervm MarshalAfterUnexport2 + */ + +--- jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,9 +28,8 @@ + * + * @author Ann Wollrath + * +- * @build UnexportLeak +- * @build UnexportLeak_Stub +- * @build Ping ++ * @library ../../../testlibrary ++ * @build TestLibrary UnexportLeak_Stub Ping + * @run main/othervm UnexportLeak + */ + +@@ -40,20 +39,18 @@ + import java.rmi.registry.*; + + public class UnexportLeak implements Ping { +- +- private static int PORT = 2006; +- + public void ping() { + } + + public static void main(String[] args) { + try { + System.err.println("\nRegression test for bug 4331349\n"); +- LocateRegistry.createRegistry(PORT); ++ Registry registry = TestLibrary.createRegistryOnUnusedPort(); ++ int registryPort = TestLibrary.getRegistryPort(registry); + Remote obj = new UnexportLeak(); + WeakReference wr = new WeakReference(obj); + UnicastRemoteObject.exportObject(obj); +- LocateRegistry.getRegistry(PORT).rebind("UnexportLeak", obj); ++ LocateRegistry.getRegistry(registryPort).rebind("UnexportLeak", obj); + UnicastRemoteObject.unexportObject(obj, true); + obj = null; + flushRefs(); +--- jdk/test/java/rmi/server/Unmarshal/PrimitiveClasses.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/Unmarshal/PrimitiveClasses.java 2013-05-05 09:38:44.000000000 -0700 +@@ -25,6 +25,7 @@ + * @bug 4442373 + * @summary Verify that RMI can successfully unmarshal Class objects for + * primitive types. ++ * @run main PrimitiveClasses + */ + + import java.rmi.MarshalledObject; +--- jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshal.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshal.java 2013-05-05 09:38:44.000000000 -0700 +@@ -0,0 +1,39 @@ ++/* ++ * Copyright (c) 1999, 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. ++ */ ++ ++/** ++ * ++ */ ++import java.rmi.Remote; ++import java.rmi.RemoteException; ++ /* ++ * Interface with methods to exercise RMI parameter marshalling ++ * and unmarshalling. ++ */ ++ interface CheckUnmarshal extends java.rmi.Remote { ++ public PoisonPill getPoisonPill() throws RemoteException; ++ public Object ping() throws RemoteException; ++ public void passRuntimeExceptionParameter( ++ RuntimeExceptionParameter rep) ++ throws RemoteException; ++ } +--- jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java 2013-05-05 09:38:44.000000000 -0700 +@@ -31,10 +31,8 @@ + * @author Laird Dornin + * + * @library ../../../testlibrary +- * @build TestLibrary RMID JavaVM StreamPipe +- * @build CheckUnmarshall PoisonPill RuntimeExceptionParameter +- * @build CheckUnmarshalOnStopThread +- * @build CheckUnmarshalOnStopThread_Stub ++ * @build TestLibrary CheckUnmarshal CheckUnmarshalOnStopThread_Stub ++ * PoisonPill RuntimeExceptionParameter + * @run main/othervm/timeout=480 CheckUnmarshalOnStopThread + */ + +--- jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshall.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshall.java 1969-12-31 16:00:00.000000000 -0800 +@@ -1,39 +0,0 @@ +-/* +- * Copyright (c) 1999, 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. +- */ +- +-/** +- * +- */ +-import java.rmi.Remote; +-import java.rmi.RemoteException; +- /* +- * Interface with methods to exercise RMI parameter marshalling +- * and unmarshalling. +- */ +- interface CheckUnmarshal extends java.rmi.Remote { +- public PoisonPill getPoisonPill() throws RemoteException; +- public Object ping() throws RemoteException; +- public void passRuntimeExceptionParameter( +- RuntimeExceptionParameter rep) +- throws RemoteException; +- } +--- jdk/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,8 +35,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build FiniteGCLatency +- * @build FiniteGCLatency_Stub ++ * @build TestLibrary FiniteGCLatency_Stub + * @run main/othervm/timeout=120 FiniteGCLatency + */ + +@@ -78,11 +77,11 @@ + try { + UnicastRemoteObject.exportObject(obj); + System.err.println("exported remote object"); +- +- LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT); ++ Registry registry1 = TestLibrary.createRegistryOnUnusedPort(); ++ int port = TestLibrary.getRegistryPort(registry1); + System.err.println("created registry"); + +- Registry registry = LocateRegistry.getRegistry("", TestLibrary.REGISTRY_PORT); ++ Registry registry = LocateRegistry.getRegistry("", port); + registry.bind(BINDING, obj); + System.err.println("bound remote object in registry"); + +--- jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,11 +37,7 @@ + * @author Peter Jones + * + * @library ../../../testlibrary +- * @build TestLibrary +- * @build JavaVM +- * @build LeaseCheckInterval +- * @build LeaseCheckInterval_Stub +- * @build SelfTerminator ++ * @build TestLibrary JavaVM LeaseCheckInterval_Stub SelfTerminator + * @run main/othervm LeaseCheckInterval + */ + +@@ -87,8 +83,9 @@ + UnicastRemoteObject.exportObject(obj); + System.err.println("exported remote object"); + ++ int registryPort = TestLibrary.getUnusedRandomPort(); + Registry localRegistry = +- LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT); ++ LocateRegistry.createRegistry(registryPort); + System.err.println("created local registry"); + + localRegistry.bind(BINDING, obj); +@@ -96,7 +93,8 @@ + + synchronized (obj.lock) { + System.err.println("starting remote client VM..."); +- (new JavaVM("SelfTerminator")).start(); ++ (new JavaVM("SelfTerminator", "-Drmi.registry.port=" + ++ registryPort, "")).start(); + + System.err.println("waiting for unreferenced() callback..."); + obj.lock.wait(TIMEOUT); +--- jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/SelfTerminator.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/SelfTerminator.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,8 +33,10 @@ + + public static void main(String[] args) { + try { ++ int registryPort = ++ Integer.parseInt(System.getProperty("rmi.registry.port")); + Registry registry = +- LocateRegistry.getRegistry("", TestLibrary.REGISTRY_PORT); ++ LocateRegistry.getRegistry("", registryPort); + Remote stub = registry.lookup(LeaseCheckInterval.BINDING); + Runtime.getRuntime().halt(0); + } catch (Exception e) { +--- jdk/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet.java 2013-05-05 09:38:44.000000000 -0700 +@@ -30,8 +30,6 @@ + * invoked. + * @author Peter Jones + * +- * @library ../../../testlibrary +- * @build MarshalledObjectGet + * @build MarshalledObjectGet_Stub + * @run main/othervm/timeout=120 MarshalledObjectGet + */ +--- jdk/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 @@ + * @author Laird Dornin + * + * @library ../../../testlibrary +- * @build UnreferencedContext +- * @build UnreferencedContext_Stub ++ * @build TestLibrary UnreferencedContext_Stub + * @run main/othervm/timeout=120 UnreferencedContext + */ + +@@ -119,10 +118,11 @@ + UnicastRemoteObject.exportObject(obj); + System.err.println("exported remote object"); + +- LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT); ++ Registry registry1 = TestLibrary.createRegistryOnUnusedPort(); ++ int port = TestLibrary.getRegistryPort(registry1); + System.err.println("created registry"); + +- Registry registry = LocateRegistry.getRegistry("", TestLibrary.REGISTRY_PORT); ++ Registry registry = LocateRegistry.getRegistry("", port); + registry.bind(BINDING, obj); + System.err.println("bound remote object in registry"); + +--- jdk/test/java/rmi/server/clientStackTrace/ClientStackTrace.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/clientStackTrace/ClientStackTrace.java 2013-05-05 09:38:44.000000000 -0700 +@@ -28,7 +28,7 @@ + * @author Laird Dornin + * + * @library ../../testlibrary +- * @build ClientStackTrace MyRemoteObject_Stub TestLibrary TestParams ++ * @build TestLibrary ClientStackTrace MyRemoteObject_Stub + * @run main/othervm/policy=security.policy/timeout=120 ClientStackTrace + */ + +--- jdk/test/java/rmi/server/getRemoteClass/GetRemoteClass.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/getRemoteClass/GetRemoteClass.java 2013-05-05 09:38:44.000000000 -0700 +@@ -28,7 +28,7 @@ + * @author Laird Dornin + * + * @library ../../testlibrary +- * @build GetRemoteClass TestLibrary TestParams ++ * @build TestLibrary + * @run main/othervm GetRemoteClass + */ + +--- jdk/test/java/rmi/server/serverStackTrace/ServerStackTrace.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/serverStackTrace/ServerStackTrace.java 2013-05-05 09:38:44.000000000 -0700 +@@ -29,8 +29,7 @@ + * serialized with the Throwable from the server. + * @author Peter Jones + * +- * @build ServerStackTrace +- * @build ServerStackTrace_Stub ++ * @build ServerStackTrace ServerStackTrace_Stub + * @run main/othervm ServerStackTrace + */ + +--- jdk/test/java/rmi/server/serverStackTrace/SuppressStackTraces.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/serverStackTrace/SuppressStackTraces.java 2013-05-05 09:38:44.000000000 -0700 +@@ -36,10 +36,7 @@ + * for reasons of performance or confidentiality requirements. + * @author Peter Jones + * +- * @build SuppressStackTraces +- * @build Impl2_Stub +- * @build Impl1_Stub +- * @build Impl1_Skel ++ * @build SuppressStackTraces Impl2_Stub Impl1_Stub Impl1_Skel + * @run main/othervm SuppressStackTraces + */ + +--- jdk/test/java/rmi/server/useCustomRef/UseCustomRef.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/useCustomRef/UseCustomRef.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -31,10 +31,7 @@ + * 4180392 + * + * @library ../../testlibrary +- * @build UseCustomRef +- * @build Ping +- * @build UseCustomRef_Stub +- * @build UseCustomRef_Skel ++ * @build TestLibrary Ping UseCustomRef_Stub UseCustomRef_Skel + * @run main/othervm/policy=security.policy/secure=java.rmi.RMISecurityManager/timeout=120 UseCustomRef + * + * This test was failing to run because the synthetic access +@@ -84,8 +81,9 @@ + TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager"); + + System.err.println("creating Registry..."); +- registry = LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT); + ++ registry = TestLibrary.createRegistryOnUnusedPort(); ++ int port = TestLibrary.getRegistryPort(registry); + /* + * create object with custom ref and bind in registry + */ +@@ -97,7 +95,7 @@ + "instanceof CustomServerRef"); + } + +- String name = "//:" + TestLibrary.REGISTRY_PORT + "/UseCustomRef"; ++ String name = "//:" + port + "/UseCustomRef"; + // String name = "UseCustomRef"; + System.err.println("binding object in registry..."); + Naming.rebind(name, cr); +--- jdk/test/java/rmi/server/useCustomRef/security.policy 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/server/useCustomRef/security.policy 2013-05-05 09:38:44.000000000 -0700 +@@ -8,8 +8,11 @@ + + grant { + // the test uses a class in the package sun.rmi.server ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.registry"; + permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.server"; + permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport.proxy"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport.tcp"; + permission java.util.PropertyPermission "package.restrict.access.sun", "read"; + permission java.util.PropertyPermission "package.restrict.access.sun.rmi", "read"; + +--- jdk/test/java/rmi/testlibrary/ActivationLibrary.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/testlibrary/ActivationLibrary.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,19 +63,30 @@ + */ + public static void deactivate(Remote remote, + ActivationID id) { +- for (int i = 0; i < 5; i ++) { ++ // We do as much as 50 deactivation trials, each separated by ++ // at least 100 milliseconds sleep time (max sleep time of 5 secs). ++ final long deactivateSleepTime = 100; ++ for (int i = 0; i < 50; i ++) { + try { + if (Activatable.inactive(id) == true) { + mesg("inactive successful"); + return; + } else { +- Thread.sleep(1000); ++ mesg("inactive trial failed. Sleeping " + ++ deactivateSleepTime + ++ " milliseconds before next trial"); ++ Thread.sleep(deactivateSleepTime); + } + } catch (InterruptedException e) { +- continue; ++ Thread.currentThread().interrupt(); ++ mesg("Thread interrupted while trying to deactivate activatable. Exiting deactivation"); ++ return; + } catch (Exception e) { + try { + // forcibly unexport the object ++ mesg("Unexpected exception. Have to forcibly unexport the object." + ++ " Exception was :"); ++ e.printStackTrace(); + Activatable.unexportObject(remote, true); + } catch (NoSuchObjectException ex) { + } +@@ -99,59 +110,60 @@ + * activation system. + */ + public static boolean rmidRunning(int port) { +- int allowedNotReady = 10; ++ int allowedNotReady = 50; + int connectionRefusedExceptions = 0; + +- for (int i = 0; i < 15 ; i++) { ++ /* We wait as much as a total of 7.5 secs trying to see Rmid running. ++ * We do this by pausing steps of 100 milliseconds (so up to 75 steps), ++ * right after trying to lookup and find RMID running in the other vm. ++ */ ++ final long rmidWaitingStepTime = 100; ++ for (int i = 0; i <= 74; i++) { + + try { +- Thread.sleep(500); + LocateRegistry.getRegistry(port).lookup(SYSTEM_NAME); ++ mesg("Activation System available after " + ++ (i * rmidWaitingStepTime) + " milliseconds"); + return true; + + } catch (java.rmi.ConnectException e) { +- // ignore connect exceptions until we decide rmid is not up ++ mesg("Remote connection refused after " + ++ (i * rmidWaitingStepTime) + " milliseconds"); + ++ // ignore connect exceptions until we decide rmid is not up + if ((connectionRefusedExceptions ++) >= allowedNotReady) { + return false; + } + +- } catch (NotBoundException e) { ++ } catch (java.rmi.NoSuchObjectException nsoe) { ++ /* Activation System still unavailable. ++ * Ignore this since we are just waiting for its availibility. ++ * Just signal unavailibility. ++ */ ++ mesg("Activation System still unavailable after more than " + ++ (i * rmidWaitingStepTime) + " milliseconds"); + ++ } catch (NotBoundException e) { + return false; + + } catch (Exception e) { +- // print out other types of exceptions as an FYI. +- // test should not fail as rmid is likely to be in an +- // undetermined state at this point. +- ++ /* print out other types of exceptions as an FYI. ++ * test should not fail as rmid is likely to be in an ++ * undetermined state at this point. ++ */ + mesg("caught an exception trying to" + + " start rmid, last exception was: " + + e.getMessage()); + e.printStackTrace(); + } +- } +- return false; +- } + +- /** +- * Check to see if an arry of Strings contains a given string. +- */ +- private static boolean +- containsString(String[] strings, String contained) +- { +- if (strings == null) { +- if (contained == null) { +- return true; +- } +- return false; +- } +- +- for (int i = 0 ; i < strings.length ; i ++ ) { +- if ((strings[i] != null) && +- (strings[i].indexOf(contained) >= 0)) +- { +- return true; ++ // Waiting for another 100 milliseconds. ++ try { ++ Thread.sleep(100); ++ } catch (InterruptedException e) { ++ Thread.currentThread().interrupt(); ++ mesg("Thread interrupted while checking if Activation System is running. Exiting check"); ++ return false; + } + } + return false; +@@ -159,12 +171,8 @@ + + /** cleanup after rmid */ + public static void rmidCleanup(RMID rmid) { +- rmidCleanup(rmid, TestLibrary.RMID_PORT); +- } +- +- public static void rmidCleanup(RMID rmid, int port) { + if (rmid != null) { +- if (!ActivationLibrary.safeDestroy(rmid, port, SAFE_WAIT_TIME)) { ++ if (!ActivationLibrary.safeDestroy(rmid, SAFE_WAIT_TIME)) { + TestLibrary.bomb("rmid not destroyed in: " + + SAFE_WAIT_TIME + + " milliseconds"); +@@ -180,8 +188,8 @@ + * @return whether or not shutdown completed succesfully in the + * timeAllowed + */ +- private static boolean safeDestroy(RMID rmid, int port, long timeAllowed) { +- DestroyThread destroyThread = new DestroyThread(rmid, port); ++ private static boolean safeDestroy(RMID rmid, long timeAllowed) { ++ DestroyThread destroyThread = new DestroyThread(rmid); + destroyThread.start(); + + try { +@@ -201,9 +209,9 @@ + private final int port; + private boolean succeeded = false; + +- DestroyThread(RMID rmid, int port) { ++ DestroyThread(RMID rmid) { + this.rmid = rmid; +- this.port = port; ++ this.port = rmid.getPort(); + this.setDaemon(true); + } + --- jdk/test/java/rmi/testlibrary/JavaVM.java 2012-08-10 10:34:46.000000000 -0700 -+++ jdk/test/java/rmi/testlibrary/JavaVM.java 2013-03-09 08:44:51.000000000 -0800 -@@ -109,6 +109,14 @@ ++++ jdk/test/java/rmi/testlibrary/JavaVM.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,13 +21,10 @@ + * questions. + */ + +-/** +- * +- */ +- +-import java.io.*; ++import java.io.File; ++import java.io.IOException; ++import java.io.OutputStream; + import java.util.Arrays; +-import java.util.Properties; + import java.util.StringTokenizer; + + /** +@@ -36,7 +33,6 @@ + */ + public class JavaVM { + +- // need to + protected Process vm = null; + + private String classname = ""; +@@ -45,6 +41,8 @@ + private OutputStream outputStream = System.out; + private OutputStream errorStream = System.err; + private String policyFileName = null; ++ private StreamPipe outPipe; ++ private StreamPipe errPipe; + + private static void mesg(Object mesg) { + System.err.println("JAVAVM: " + mesg.toString()); +@@ -79,6 +77,7 @@ + this.errorStream = err; + } + ++ // Prepends passed opts array to current options + public void addOptions(String[] opts) { + String newOpts = ""; + for (int i = 0 ; i < opts.length ; i ++) { +@@ -87,6 +86,8 @@ + newOpts += " "; + options = newOpts + options; + } ++ ++ // Prepends passed arguments array to current args + public void addArguments(String[] arguments) { + String newArgs = ""; + for (int i = 0 ; i < arguments.length ; i ++) { +@@ -109,13 +110,22 @@ return TestLibrary.getExtraProperty("jcov.options",""); } @@ -78790,10 +87936,65 @@ /** * Exec the VM as specified in this object's constructor. -@@ -171,4 +179,35 @@ - protected Process getVM() { - return vm; + */ + public void start() throws IOException { + +- if (vm != null) return; ++ if (vm != null) ++ throw new IllegalStateException("JavaVM already started"); + + /* + * If specified, add option for policy file +@@ -145,20 +155,12 @@ + } + + mesg("command = " + Arrays.asList(javaCommand).toString()); +- System.err.println(""); + + vm = Runtime.getRuntime().exec(javaCommand); + + /* output from the execed process may optionally be captured. */ +- StreamPipe.plugTogether(vm.getInputStream(), this.outputStream); +- StreamPipe.plugTogether(vm.getErrorStream(), this.errorStream); +- +- try { +- Thread.sleep(2000); +- } catch (Exception ignore) { +- } +- +- mesg("finished starting vm."); ++ outPipe = StreamPipe.plugTogether(vm.getInputStream(), this.outputStream); ++ errPipe = StreamPipe.plugTogether(vm.getErrorStream(), this.errorStream); } + + public void destroy() { +@@ -168,7 +170,56 @@ + vm = null; + } + +- protected Process getVM() { +- return vm; ++ /** ++ * Waits for the subprocess to exit, joins the pipe threads to ensure that ++ * all output is collected, and returns its exit status. ++ */ ++ public int waitFor() throws InterruptedException { ++ if (vm == null) ++ throw new IllegalStateException("can't wait for JavaVM that hasn't started"); ++ ++ int status = vm.waitFor(); ++ outPipe.join(); ++ errPipe.join(); ++ return status; ++ } ++ ++ /** ++ * Starts the subprocess, waits for it to exit, and returns its exit status. ++ */ ++ public int execute() throws IOException, InterruptedException { ++ start(); ++ return waitFor(); ++ } + + /** + * Handles calling the callback. @@ -78824,10 +88025,1704 @@ + runnable.run(); + } + } + } + } +--- jdk/test/java/rmi/testlibrary/RMID.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/testlibrary/RMID.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,7 +28,6 @@ + import java.io.*; + import java.rmi.*; + import java.rmi.activation.*; +-import java.util.Properties; + + /** + * Utility class that creates an instance of rmid with a policy +@@ -109,6 +108,9 @@ + if (!TestParams.testClasses.equals("")) { + args += " -C-Dtest.classes=" + TestParams.testClasses; + } ++ ++ args += " -C-Djava.rmi.server.useCodebaseOnly=false "; ++ + args += " " + getCodeCoverageArgs(); + return args; + } +@@ -133,7 +135,7 @@ + boolean debugExec) + { + return createRMID(out, err, debugExec, true, +- TestLibrary.RMID_PORT); ++ TestLibrary.getUnusedRandomPort()); + } + + public static RMID createRMID(OutputStream out, OutputStream err, +@@ -203,12 +205,10 @@ + + public void start(long waitTime) throws IOException { + +- if (getVM() != null) return; +- + // if rmid is already running, then the test will fail with + // a well recognized exception (port already in use...). + +- mesg("starting rmid..."); ++ mesg("starting rmid on port #" + port + "..."); + super.start(); + + int slopFactor = 1; +@@ -218,20 +218,38 @@ + } catch (NumberFormatException ignore) {} + waitTime = waitTime * slopFactor; + +- // give rmid time to come up ++ // We check several times (as many as provides passed waitTime) to ++ // see if Rmid is currently running. Waiting steps last 100 msecs. ++ final long rmidStartSleepTime = 100; + do { ++ // Sleeping for another rmidStartSleepTime time slice. + try { +- Thread.sleep(Math.min(waitTime, 10000)); ++ Thread.sleep(Math.min(waitTime, rmidStartSleepTime)); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); ++ mesg("Thread interrupted while checking for start of Activation System. Giving up check."); ++ mesg("Activation System state unknown"); ++ return; + } +- waitTime -= 10000; ++ waitTime -= rmidStartSleepTime; + +- // is rmid present? ++ // Checking if rmid is present + if (ActivationLibrary.rmidRunning(port)) { ++ /** ++ * We need to set the java.rmi.activation.port value as the ++ * activation system will use the property to determine the ++ * port #. The activation system will use this value if set. ++ * If it isn't set, the activation system will set it to an ++ * incorrect value. ++ */ ++ System.setProperty("java.rmi.activation.port", Integer.toString(port)); + mesg("finished starting rmid."); + return; + } ++ else { ++ mesg("rmid still not started"); ++ } ++ + } while (waitTime > 0); + TestLibrary.bomb("start rmid failed... giving up", null); + } +@@ -249,10 +267,6 @@ + * Shutdown does not nullify possible references to the rmid + * process object (destroy does though). + */ +- public static void shutdown() { +- shutdown(TestLibrary.RMID_PORT); +- } +- + public static void shutdown(int port) { + + try { +@@ -264,6 +278,8 @@ + port + + "/java.rmi.activation.ActivationSystem"); + mesg("obtained a reference to the activation system"); ++ } catch (RemoteException re) { ++ mesg("could not contact registry while trying to shutdown activation system"); + } catch (java.net.MalformedURLException mue) { + } + +@@ -272,19 +288,14 @@ + } + system.shutdown(); + ++ } catch (RemoteException re) { ++ mesg("shutting down the activation daemon failed"); + } catch (Exception e) { + mesg("caught exception trying to shutdown rmid"); + mesg(e.getMessage()); + e.printStackTrace(); + } + +- try { +- // wait for the shutdown to happen +- Thread.sleep(5000); +- } catch (InterruptedException ie) { +- Thread.currentThread().interrupt(); +- } +- + mesg("testlibrary finished shutting down rmid"); + } + +@@ -294,25 +305,52 @@ + * if rmid is a child process of the current VM. + */ + public void destroy() { +- +- // attempt graceful shutdown of the activation system on +- // TestLibrary.RMID_PORT ++ // attempt graceful shutdown of the activation system + shutdown(port); + + if (vm != null) { + try { +- // destroy rmid if it is still running... +- try { +- vm.exitValue(); +- mesg("rmid exited on shutdown request"); +- } catch (IllegalThreadStateException illegal) { +- mesg("Had to destroy RMID's process " + +- "using Process.destroy()"); ++ /* Waiting for distant RMID process to shutdown. ++ * Waiting is bounded at a hardcoded max of 60 secs (1 min). ++ * Waiting by steps of 200 msecs, thus at most 300 such attempts ++ * for termination of distant RMID process. If process is not ++ * known to be terminated properly after that time, ++ * we give up for a gracefull termination, and thus go for ++ * forcibly destroying the process. ++ */ ++ boolean vmEnded = false; ++ int waitingTrials = 0; ++ final int maxTrials = 300; ++ final long vmProcessEndWaitInterval = 200; ++ int vmExitValue; ++ do { ++ try { ++ Thread.sleep(vmProcessEndWaitInterval); ++ waitingTrials++; ++ vmExitValue = vm.exitValue(); ++ mesg("rmid exited on shutdown request"); ++ vmEnded = true; ++ } catch (IllegalThreadStateException illegal) { ++ mesg("RMID's process still not terminated after more than " + ++ (waitingTrials * vmProcessEndWaitInterval) + " milliseconds"); ++ } ++ } ++ while (!vmEnded && ++ (waitingTrials < maxTrials)); ++ ++ if (waitingTrials >= maxTrials) { ++ mesg("RMID's process still not terminated after more than " + ++ (waitingTrials * vmProcessEndWaitInterval) + " milliseconds." + ++ "Givinp up gracefull termination..."); ++ mesg("destroying RMID's process using Process.destroy()"); + super.destroy(); + } + ++ } catch (InterruptedException ie) { ++ Thread.currentThread().interrupt(); ++ mesg("Thread interrupted while checking for termination of distant rmid vm. Giving up check."); + } catch (Exception e) { +- mesg("caught exception trying to destroy rmid: " + ++ mesg("caught unexpected exception trying to destroy rmid: " + + e.getMessage()); + e.printStackTrace(); + } +@@ -321,4 +359,6 @@ + vm = null; + } + } ++ ++ public int getPort() {return port;} + } +--- jdk/test/java/rmi/testlibrary/RegistryRunner.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/testlibrary/RegistryRunner.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -56,12 +56,13 @@ + * Request that the registry process exit and handle + * related exceptions. + */ +- public static void requestExit() { ++ public static void requestExit(int port) { ++ + try { + RemoteExiter exiter = + (RemoteExiter) + Naming.lookup("rmi://localhost:" + +- TestLibrary.REGISTRY_PORT + ++ port + + "/RemoteExiter"); + try { + exiter.exit(); +@@ -84,7 +85,7 @@ + System.err.println("Usage: <port>"); + System.exit(0); + } +- int port = TestLibrary.REGISTRY_PORT; ++ int port = -1; + try { + port = Integer.parseInt(args[0]); + } catch (NumberFormatException nfe) { +--- jdk/test/java/rmi/testlibrary/StreamPipe.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/testlibrary/StreamPipe.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,11 +21,10 @@ + * questions. + */ + +-/** +- * +- */ +- +-import java.io.*; ++import java.io.InputStream; ++import java.io.InterruptedIOException; ++import java.io.IOException; ++import java.io.OutputStream; + + /** + * Pipe output of one stream into input of another. +@@ -34,47 +33,51 @@ + + private InputStream in; + private OutputStream out; +- private String preamble; +- private static Object lock = new Object(); ++ ++ private static Object countLock = new Object(); + private static int count = 0; + +- public StreamPipe(InputStream in, OutputStream out, String name) { ++ /** ++ * StreamPipe constructor : should only be called by plugTogether() method. ++ */ ++ private StreamPipe(InputStream in, OutputStream out, String name) { + super(name); + this.in = in; + this.out = out; +- this.preamble = "# "; + } + +- public void run() { +- BufferedReader r = new BufferedReader(new InputStreamReader(in), 1); +- BufferedWriter w = new BufferedWriter(new OutputStreamWriter(out)); +- byte[] buf = new byte[256]; +- boolean bol = true; // beginning-of-line +- int count; ++ /** ++ * Creates a StreamPipe thread that copies in to out and returns ++ * the created instance. ++ */ ++ public static StreamPipe plugTogether(InputStream in, OutputStream out) { ++ String name; ++ ++ synchronized (countLock) { ++ name = "java.rmi.testlibrary.StreamPipe-" + (count++); ++ } ++ ++ StreamPipe pipe = new StreamPipe(in, out, name); ++ pipe.setDaemon(true); ++ pipe.start(); ++ return pipe; ++ } + ++ // Starts redirection of streams. ++ public void run() { + try { +- String line; +- while ((line = r.readLine()) != null) { +- w.write(preamble); +- w.write(line); +- w.newLine(); +- w.flush(); ++ byte[] buf = new byte[1024]; ++ ++ while (true) { ++ int nr = in.read(buf); ++ if (nr == -1) ++ break; ++ out.write(buf, 0, nr); + } ++ + } catch (IOException e) { + System.err.println("*** IOException in StreamPipe.run:"); + e.printStackTrace(); + } + } +- +- public static void plugTogether(InputStream in, OutputStream out) { +- String name = null; +- +- synchronized (lock) { +- name = "TestLibrary: StreamPipe-" + (count ++ ); +- } +- +- Thread pipe = new StreamPipe(in, out, name); +- pipe.setDaemon(true); +- pipe.start(); +- } + } +--- jdk/test/java/rmi/testlibrary/TestLibrary.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/testlibrary/TestLibrary.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -36,37 +36,64 @@ + * not make use of packages. + */ + ++import java.io.ByteArrayOutputStream; + import java.io.File; + import java.io.FileInputStream; + import java.io.FileOutputStream; + import java.io.IOException; +-import java.io.OutputStream; + import java.io.PrintStream; +-import java.net.URL; + import java.net.MalformedURLException; +-import java.rmi.activation.Activatable; +-import java.rmi.activation.ActivationID; ++import java.net.ServerSocket; ++import java.net.URL; + import java.rmi.NoSuchObjectException; +-import java.rmi.registry.Registry; + import java.rmi.Remote; ++import java.rmi.RemoteException; ++import java.rmi.registry.LocateRegistry; ++import java.rmi.registry.Registry; ++import java.rmi.server.RemoteRef; + import java.rmi.server.UnicastRemoteObject; + import java.util.Enumeration; +-import java.util.Hashtable; + import java.util.Properties; +-import java.io.ByteArrayOutputStream; +-import java.security.AccessController; +-import java.security.PrivilegedAction; ++ ++import sun.rmi.registry.RegistryImpl; ++import sun.rmi.server.UnicastServerRef; ++import sun.rmi.transport.Endpoint; ++import sun.rmi.transport.LiveRef; ++import sun.rmi.transport.tcp.TCPEndpoint; + + /** + * Class of utility/library methods (i.e. procedures) that assist with + * the writing and maintainance of rmi regression tests. + */ + public class TestLibrary { +- +- /** standard test port number for registry */ +- public final static int REGISTRY_PORT = 2006; +- /** port for rmid necessary: not used to actually start rmid */ +- public final static int RMID_PORT = 1098; ++ /** ++ * IMPORTANT! ++ * ++ * RMI tests are run concurrently and port conflicts result when a single ++ * port number is used by multiple tests. When needing a port, use ++ * getUnusedRandomPort() wherever possible. If getUnusedRandomPort() cannot ++ * be used, reserve and specify a port to use for your test here. This ++ * will ensure there are no port conflicts amongst the RMI tests. The ++ * port numbers specified here may also be specified in the respective ++ * tests. Do not change the reserved port numbers here without also ++ * changing the port numbers in the respective tests. ++ * ++ * When needing an instance of the RMIRegistry, use ++ * createRegistryOnUnusedPort wherever possible to prevent port conflicts. ++ * ++ * Reserved port range: FIXED_PORT_MIN to FIXED_PORT_MAX (inclusive) for ++ * tests which cannot use a random port. If new fixed ports are added below ++ * FIXED_PORT_MIN or above FIXED_PORT_MAX, then adjust ++ * FIXED_PORT_MIN/MAX appropriately. ++ */ ++ public final static int FIXED_PORT_MIN = 64001; ++ public final static int FIXED_PORT_MAX = 64010; ++ public final static int RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT = 64001; ++ public final static int RMIDVIAINHERITEDCHANNEL_REGISTRY_PORT = 64002; ++ public final static int INHERITEDCHANNELNOTSERVERSOCKET_ACTIVATION_PORT = 64003; ++ public final static int INHERITEDCHANNELNOTSERVERSOCKET_REGISTRY_PORT = 64004; ++ public final static int READTEST_REGISTRY_PORT = 64005; ++ private final static int MAX_SERVER_SOCKET_TRIES = 2*(FIXED_PORT_MAX-FIXED_PORT_MIN+1); + + static void mesg(Object mesg) { + System.err.println("TEST_LIBRARY: " + mesg.toString()); +@@ -100,36 +127,15 @@ + bomb(null, e); + } + +- /** +- * Property accessors +- */ +- private static boolean getBoolean(String name) { +- return (new Boolean(getProperty(name, "false")).booleanValue()); +- } +- private static Integer getInteger(String name) { +- int val = 0; +- Integer value = null; +- +- String propVal = getProperty(name, null); +- if (propVal == null) { +- return null; +- } +- +- try { +- value = new Integer(Integer.parseInt(propVal)); +- } catch (NumberFormatException nfe) { +- } +- return value; +- } + public static String getProperty(String property, String defaultVal) { + final String prop = property; + final String def = defaultVal; +- return ((String) java.security.AccessController.doPrivileged +- (new java.security.PrivilegedAction() { +- public Object run() { ++ return java.security.AccessController.doPrivileged( ++ new java.security.PrivilegedAction<String>() { ++ public String run() { + return System.getProperty(prop, def); + } +- })); ++ }); + } + + /** +@@ -144,9 +150,9 @@ + public static void setProperty(String property, String value) { + final String prop = property; + final String val = value; +- java.security.AccessController.doPrivileged +- (new java.security.PrivilegedAction() { +- public Object run() { ++ java.security.AccessController.doPrivileged( ++ new java.security.PrivilegedAction<Void>() { ++ public Void run() { + System.setProperty(prop, val); + return null; + } +@@ -163,7 +169,7 @@ + out.println("-------------------Test environment----------" + + "---------"); + +- for(Enumeration keys = System.getProperties().keys(); ++ for(Enumeration<?> keys = System.getProperties().keys(); + keys.hasMoreElements();) { + + String property = (String) keys.nextElement(); +@@ -227,7 +233,7 @@ + /* + * Obtain the URL for the codebase. + */ +- URL codebaseURL = dstDir.toURL(); ++ URL codebaseURL = dstDir.toURI().toURL(); + + /* + * Specify where we will copy the class definition from, if +@@ -340,6 +346,103 @@ + } + + /** ++ * Creates an RMI {@link Registry} on a random, un-reserved port. ++ * ++ * @returns an RMI Registry, using a random port. ++ * @throws RemoteException if there was a problem creating a Registry. ++ */ ++ public static Registry createRegistryOnUnusedPort() throws RemoteException { ++ return LocateRegistry.createRegistry(getUnusedRandomPort()); ++ } ++ ++ /** ++ * Returns the port number the RMI {@link Registry} is running on. ++ * ++ * @param registry the registry to find the port of. ++ * @return the port number the registry is using. ++ * @throws RuntimeException if there was a problem getting the port number. ++ */ ++ public static int getRegistryPort(Registry registry) { ++ int port = -1; ++ ++ try { ++ RemoteRef remoteRef = ((RegistryImpl)registry).getRef(); ++ LiveRef liveRef = ((UnicastServerRef)remoteRef).getLiveRef(); ++ Endpoint endpoint = liveRef.getChannel().getEndpoint(); ++ TCPEndpoint tcpEndpoint = (TCPEndpoint) endpoint; ++ port = tcpEndpoint.getPort(); ++ } catch (Exception ex) { ++ throw new RuntimeException("Error getting registry port.", ex); ++ } ++ ++ return port; ++ } ++ ++ /** ++ * Returns an unused random port number which is not a reserved port. Will ++ * try up to 10 times to get a random port before giving up and throwing a ++ * RuntimeException. ++ * ++ * @return an unused random port number. ++ * @throws RuntimeException if there was a problem getting a port. ++ */ ++ public static int getUnusedRandomPort() { ++ int numTries = 0; ++ IOException ex = null; ++ ++ while (numTries++ < MAX_SERVER_SOCKET_TRIES) { ++ int unusedRandomPort = -1; ++ ex = null; //reset ++ ++ try (ServerSocket ss = new ServerSocket(0)) { ++ unusedRandomPort = ss.getLocalPort(); ++ } catch (IOException e) { ++ ex = e; ++ // temporarily print stack trace here until we find out why ++ // tests are failing. ++ System.err.println("TestLibrary.getUnusedRandomPort() caught " ++ + "exception on iteration " + numTries ++ + (numTries==MAX_SERVER_SOCKET_TRIES ? " (the final try)." ++ : ".")); ++ ex.printStackTrace(); ++ } ++ ++ if (unusedRandomPort >= 0) { ++ if (isReservedPort(unusedRandomPort)) { ++ System.out.println("INFO: On try # " + numTries ++ + (numTries==MAX_SERVER_SOCKET_TRIES ? ", the final try, ": ",") ++ + " ServerSocket(0) returned the reserved port " ++ + unusedRandomPort ++ + " in TestLibrary.getUnusedRandomPort() "); ++ } else { ++ return unusedRandomPort; ++ } ++ } ++ } ++ ++ // If we're here, then either an exception was thrown or the port is ++ // a reserved port. ++ if (ex==null) { ++ throw new RuntimeException("Error getting unused random port. The" ++ +" last port returned by ServerSocket(0) was a reserved port"); ++ } else { ++ throw new RuntimeException("Error getting unused random port.", ex); ++ } + } ++ ++ /** ++ * Determines if a port is one of the reserved port numbers. ++ * ++ * @param port the port to test. ++ * @return {@code true} if the port is a reserved port, otherwise ++ * {@code false}. ++ */ ++ public static boolean isReservedPort(int port) { ++ return ((port >= FIXED_PORT_MIN) && (port <= FIXED_PORT_MAX) || ++ (port == 1099)); ++ } ++ ++ /** + * Method to capture the stack trace of an exception and return it + * as a string. + */ +--- jdk/test/java/rmi/transport/acceptLoop/CloseServerSocketOnTermination.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/transport/acceptLoop/CloseServerSocketOnTermination.java 2013-05-05 09:38:44.000000000 -0700 +@@ -31,7 +31,6 @@ + * exception for which it doesn't even consult the RMIFailureHandler. + * @author Peter Jones + * +- * @build CloseServerSocketOnTermination + * @run main/othervm CloseServerSocketOnTermination + */ + +--- jdk/test/java/rmi/transport/checkFQDN/CheckFQDN.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/transport/checkFQDN/CheckFQDN.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,7 +33,7 @@ + * @author Laird Dornin + * + * @library ../../testlibrary +- * @build CheckFQDN CheckFQDNClient CheckFQDN_Stub TellServerName ++ * @build TestLibrary CheckFQDNClient CheckFQDN_Stub TellServerName + * @run main/othervm/timeout=120 CheckFQDN + */ + +@@ -63,7 +63,7 @@ + */ + public class CheckFQDN extends UnicastRemoteObject + implements TellServerName { +- ++ public static int REGISTRY_PORT =-1; + static String propertyBeingTested = null; + static String propertyBeingTestedValue = null; + +@@ -77,8 +77,8 @@ + System.err.println + ("\nRegression test for bug/rfe 4115683\n"); + +- Registry registry = java.rmi.registry.LocateRegistry. +- createRegistry(TestLibrary.REGISTRY_PORT); ++ Registry registry = TestLibrary.createRegistryOnUnusedPort(); ++ REGISTRY_PORT = TestLibrary.getRegistryPort(registry); + registry.bind("CheckFQDN", checkFQDN); + + /* test the host name scheme in different environments.*/ +@@ -114,19 +114,19 @@ + equal = "="; + } + ++ // create a client to tell checkFQDN what its rmi name is. + JavaVM jvm = new JavaVM("CheckFQDNClient", + propOption + property + + equal + +- propertyValue + extraProp, ++ propertyValue + extraProp + ++ " -Drmi.registry.port=" + ++ REGISTRY_PORT, + ""); + + propertyBeingTested=property; + propertyBeingTestedValue=propertyValue; + +- // create a client to tell checkFQDN what its rmi name is. */ +- jvm.start(); +- +- if (jvm.getVM().waitFor() != 0 ) { ++ if (jvm.execute() != 0) { + TestLibrary.bomb("Test failed, error in client."); + } + +--- jdk/test/java/rmi/transport/checkFQDN/CheckFQDNClient.java 2012-08-10 10:34:46.000000000 -0700 ++++ jdk/test/java/rmi/transport/checkFQDN/CheckFQDNClient.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,9 @@ + System.err.println("Client host name: " + + hostname); + ++ int registryPort = Integer.parseInt(System.getProperty("rmi.registry.port")); + tell = (TellServerName) Naming.lookup("rmi://:" + +- TestLibrary.REGISTRY_PORT ++ registryPort + + "/CheckFQDN"); + tell.tellServerName(hostname); + System.err.println("client has exited"); +--- jdk/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,7 +28,7 @@ + * @author Laird Dornin + * + * @library ../../testlibrary +- * @build CheckLeaseLeak CheckLeaseLeak_Stub LeaseLeakClient LeaseLeak ++ * @build TestLibrary CheckLeaseLeak_Stub LeaseLeakClient LeaseLeak + * @run main/othervm/timeout=240 CheckLeaseLeak + * + */ +@@ -57,7 +57,6 @@ + import java.rmi.registry.*; + + public class CheckLeaseLeak extends UnicastRemoteObject implements LeaseLeak { +- + public CheckLeaseLeak() throws RemoteException { } + public void ping () throws RemoteException { } + +@@ -87,8 +86,8 @@ + + try { + Registry registry = +- java.rmi.registry.LocateRegistry. +- createRegistry(TestLibrary.REGISTRY_PORT); ++ TestLibrary.createRegistryOnUnusedPort(); ++ int registryPort = TestLibrary.getRegistryPort(registry); + + leakServer = new CheckLeaseLeak(); + registry.rebind("/LeaseLeak", leakServer); +@@ -99,10 +98,12 @@ + + JavaVM jvm = new JavaVM("LeaseLeakClient", + " -Djava.security.policy=" + +- TestParams.defaultPolicy, ""); +- jvm.start(); ++ TestParams.defaultPolicy + ++ " -Drmi.registry.port=" + ++ registryPort, ++ ""); + +- if (jvm.getVM().waitFor() == 1 ) { ++ if (jvm.execute() != 0) { + TestLibrary.bomb("Client process failed"); + } + } +--- jdk/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -31,11 +31,11 @@ + + try { + LeaseLeak leaseLeak = null; ++ int registryPort = Integer.parseInt(System.getProperty("rmi.registry.port")); + + // put a reference on a remote object. + Registry registry = +- java.rmi.registry.LocateRegistry.getRegistry( +- TestLibrary.REGISTRY_PORT); ++ java.rmi.registry.LocateRegistry.getRegistry(registryPort); + leaseLeak = (LeaseLeak) registry.lookup("/LeaseLeak"); + leaseLeak.ping(); + +--- jdk/test/java/rmi/transport/checkLeaseInfoLeak/security.policy 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/checkLeaseInfoLeak/security.policy 2013-05-05 09:38:44.000000000 -0700 +@@ -19,6 +19,7 @@ + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "java.home", "read"; + ++ permission java.util.PropertyPermission "rmi.registry.port", "read"; + permission java.util.PropertyPermission "java.security.policy", "read"; + permission java.util.PropertyPermission "java.security.manager", "read"; + +--- jdk/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,8 @@ + * the local port is released). + * @author Peter Jones + * +- * @build CloseServerSocket ++ * @library ../../testlibrary ++ * @build TestLibrary + * @run main/othervm CloseServerSocket + */ + +@@ -44,8 +45,7 @@ + import java.rmi.server.UnicastRemoteObject; + + public class CloseServerSocket implements Remote { +- +- private static final int PORT = 2020; ++ private static final int PORT = TestLibrary.getUnusedRandomPort(); + + private CloseServerSocket() { } + +@@ -88,7 +88,7 @@ + } + + private static void verifyPortFree(int port) throws IOException { +- ServerSocket ss = new ServerSocket(PORT); ++ ServerSocket ss = new ServerSocket(port); + ss.close(); + System.err.println("- port " + port + " is free"); + } +--- jdk/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,10 +28,7 @@ + * @author Laird Dornin + * + * @library ../../testlibrary +- * @build DGCDeadLock +- * @build Test +- * @build TestImpl +- * @build TestImpl_Stub ++ * @build TestLibrary Test TestImpl TestImpl_Stub + * @run main/othervm/policy=security.policy/timeout=360 DGCDeadLock + */ + +@@ -53,7 +50,7 @@ + import java.io.*; + + public class DGCDeadLock implements Runnable { +- ++ private static final int REGISTRY_PORT = TestLibrary.getUnusedRandomPort(); + final static public int HOLD_TARGET_TIME = 25000; + public static int TEST_FAIL_TIME = HOLD_TARGET_TIME + 30000; + public static boolean finished = false; +@@ -75,7 +72,9 @@ + TestParams.defaultPolicy + + " -Djava.rmi.dgc.leaseValue=500000" + + " -Dsun.rmi.dgc.checkInterval=" + +- (HOLD_TARGET_TIME - 5000) + ""; ++ (HOLD_TARGET_TIME - 5000) + ++ " -Drmi.registry.port=" + REGISTRY_PORT + ++ "" ; + + testImplVM = new JavaVM("TestImpl", options, ""); + testImplVM.start(); +@@ -112,7 +111,7 @@ + + // create a test client + Test foo = (Test) Naming.lookup("rmi://:" + +- TestLibrary.REGISTRY_PORT + ++ REGISTRY_PORT + + "/Foo"); + echo = foo.echo("Hello world"); + System.err.println("Test object created."); +@@ -131,7 +130,7 @@ + + //import "Bar" + Test bar = (Test) Naming.lookup("rmi://:" + +- TestLibrary.REGISTRY_PORT + ++ REGISTRY_PORT + + "/Bar"); + + /* infinite loop to show the liveness of Client, +--- jdk/test/java/rmi/transport/dgcDeadLock/TestImpl.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/dgcDeadLock/TestImpl.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -36,7 +36,6 @@ + + public class TestImpl extends UnicastRemoteObject + implements Test { +- + static Thread locker = null; + static TestImpl foo = null; + static TestImpl bar = null; +@@ -57,20 +56,21 @@ + Registry registry = null; + + try { ++ int registryPort = Integer.parseInt(System.getProperty("rmi.registry.port")); + registry = java.rmi.registry.LocateRegistry. +- createRegistry(TestLibrary.REGISTRY_PORT); ++ createRegistry(registryPort); + + //export "Foo" + foo = new TestImpl(); + Naming.rebind("rmi://:" + +- TestLibrary.REGISTRY_PORT ++ registryPort + + "/Foo", foo); + + try { + //export "Bar" after leases have been expired. + bar = new TestImpl(); + Naming.rebind("rmi://localhost:" + +- TestLibrary.REGISTRY_PORT ++ registryPort + + "/Bar", bar); + } catch (Exception e) { + throw new RemoteException(e.getMessage()); +--- jdk/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,8 @@ + * java.rmi.ConnectException or ConnectIOException, not a MarshalException. + * @author Peter Jones + * +- * @build HandshakeFailure ++ * @library ../../testlibrary ++ * @build TestLibrary + * @run main/othervm HandshakeFailure + */ + +@@ -44,7 +45,7 @@ + + public class HandshakeFailure { + +- private static final int PORT = 2020; ++ private static final int PORT = TestLibrary.getUnusedRandomPort(); + private static final int TIMEOUT = 10000; + + public static void main(String[] args) throws Exception { +--- jdk/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +33,8 @@ + * this point (because no data for the invocation has yet been written). + * @author Peter Jones + * +- * @build HandshakeTimeout ++ * @library ../../testlibrary ++ * @build TestLibrary + * @run main/othervm HandshakeTimeout + */ + +@@ -46,7 +47,7 @@ + + public class HandshakeTimeout { + +- private static final int PORT = 2020; ++ private static final int PORT = TestLibrary.getUnusedRandomPort(); + private static final int TIMEOUT = 10000; + + public static void main(String[] args) throws Exception { +--- jdk/test/java/rmi/transport/httpSocket/HttpSocketTest.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/httpSocket/HttpSocketTest.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +27,7 @@ + * @author Dana Burns + * + * @library ../../testlibrary +- * @build HttpSocketTest HttpSocketTest_Stub ++ * @build TestLibrary HttpSocketTest HttpSocketTest_Stub + * @run main/othervm/policy=security.policy HttpSocketTest + */ + +@@ -56,10 +56,7 @@ + public class HttpSocketTest extends UnicastRemoteObject + implements MyRemoteInterface + { +- + private static final String NAME = "HttpSocketTest"; +- private static final String REGNAME = +- "//:" + TestLibrary.REGISTRY_PORT + "/" + NAME; + + public HttpSocketTest() throws RemoteException{} + +@@ -76,21 +73,20 @@ + // Set the socket factory. + System.err.println("installing socket factory"); + RMISocketFactory.setSocketFactory(new RMIHttpToPortSocketFactory()); ++ int registryPort = -1; + + try { +- + System.err.println("Starting registry"); +- registry = LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT); +- ++ registry = TestLibrary.createRegistryOnUnusedPort(); ++ registryPort = TestLibrary.getRegistryPort(registry); + } catch (Exception e) { + TestLibrary.bomb(e); + } + + try { +- + registry.rebind( NAME, new HttpSocketTest() ); + MyRemoteInterface httpTest = +- (MyRemoteInterface)Naming.lookup( REGNAME ); ++ (MyRemoteInterface)Naming.lookup("//:" + registryPort + "/" + NAME); + httpTest.setRemoteObject( new HttpSocketTest() ); + Remote r = httpTest.getRemoteObject(); + +--- jdk/test/java/rmi/transport/httpSocket/security.policy 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/httpSocket/security.policy 2013-05-05 09:38:44.000000000 -0700 +@@ -4,6 +4,10 @@ + + grant { + permission java.net.SocketPermission "*:1024-", "accept,connect,listen"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.registry"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.server"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport"; + permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport.proxy"; ++ permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport.tcp"; + permission java.lang.RuntimePermission "setFactory"; + }; +--- jdk/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -31,6 +31,8 @@ + * should become unreachable too (through the RMI implementation). + * @author Peter Jones + * ++ * @library ../../testlibrary ++ * @build TestLibrary + * @run main/othervm -Dsun.rmi.transport.connectionTimeout=2000 + * PinClientSocketFactory + */ +@@ -56,7 +58,7 @@ + + public class PinClientSocketFactory { + +- private static final int PORT = 2345; ++ private static final int PORT = TestLibrary.getUnusedRandomPort(); + private static final int SESSIONS = 50; + + public interface Factory extends Remote { +--- jdk/test/java/rmi/transport/pinLastArguments/PinLastArguments.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/pinLastArguments/PinLastArguments.java 2013-05-05 09:38:44.000000000 -0700 +@@ -78,10 +78,15 @@ + } + impl = null; + +- System.gc(); +- +- if (ref.get() != null) { +- throw new Error("TEST FAILED: impl not garbage collected"); ++ // Might require multiple calls to System.gc() for weak-references ++ // processing to be complete. If the weak-reference is not cleared as ++ // expected we will hang here until timed out by the test harness. ++ while (true) { ++ System.gc(); ++ Thread.sleep(20); ++ if (ref.get() == null) { ++ break; ++ } + } + + System.err.println("TEST PASSED"); +--- jdk/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -31,7 +31,8 @@ + * procedure (which sleeps 10 seconds after 10 rapid failures). + * @author Peter Jones + * +- * @build RapidExportUnexport ++ * @library ../../testlibrary ++ * @build TestLibrary + * @run main/othervm RapidExportUnexport + */ + +@@ -39,9 +40,7 @@ + import java.rmi.server.UnicastRemoteObject; + + public class RapidExportUnexport { +- +- private static final int PORT = 2055; +- ++ private static final int PORT = TestLibrary.getUnusedRandomPort(); + private static final int REPS = 100; + private static final long TIMEOUT = 60000; + +--- jdk/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java 2013-05-05 09:38:44.000000000 -0700 +@@ -27,12 +27,9 @@ + * @summary Incoming connections should be subject to timeout + * @author Adrian Colley + * +- * @library ../../testlibrary +- * @build TestIface +- * @build TestImpl +- * @build TestImpl_Stub +- * @build ReadTimeoutTest +- * @run main/othervm/policy=security.policy/timeout=60 -Dsun.rmi.transport.tcp.readTimeout=5000 ReadTimeoutTest ++ * @build TestIface TestImpl TestImpl_Stub ++ * @run main/othervm/policy=security.policy/timeout=60 ++ * -Dsun.rmi.transport.tcp.readTimeout=5000 ReadTimeoutTest + */ + + /* This test sets a very short read timeout, exports an object, and then +--- jdk/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +33,8 @@ + * continue to work because existing applications might depend on it. + * @author Peter Jones + * +- * @build ReuseDefaultPort ++ * @library ../../testlibrary ++ * @build TestLibrary + * @run main/othervm ReuseDefaultPort + */ + +@@ -48,7 +49,7 @@ + + public class ReuseDefaultPort implements Remote { + +- private static final int PORT = 2223; ++ private static final int PORT = TestLibrary.getUnusedRandomPort(); + + private ReuseDefaultPort() { } + +--- jdk/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak.java 2013-05-05 09:38:44.000000000 -0700 +@@ -38,7 +38,6 @@ + * subsystems also not holding on to the loader in their daemon threads.] + * @author Peter Jones + * +- * @build RuntimeThreadInheritanceLeak + * @build RuntimeThreadInheritanceLeak_Stub + * @run main/othervm RuntimeThreadInheritanceLeak + */ +--- jdk/test/java/security/BasicPermission/PermClass.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/security/BasicPermission/PermClass.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,7 @@ + + /* + * @test +- * @bug 4511601 ++ * @bug 4511601 7054918 + * @summary BasicPermissionCollection does not set permClass + * during deserialization + */ +@@ -55,59 +55,66 @@ + + // read in a 1.2.1 BasicPermissionCollection + File sFile = new File(dir, "PermClass.1.2.1"); +- ObjectInputStream ois = new ObjectInputStream +- (new FileInputStream(sFile)); +- PermissionCollection pc = (PermissionCollection)ois.readObject(); +- System.out.println("1.2.1 collection = " + pc); +- +- if (pc.implies(mp)) { +- System.out.println("JDK 1.2.1 test passed"); +- } else { +- throw new Exception("JDK 1.2.1 test failed"); ++ try (FileInputStream fis = new FileInputStream(sFile); ++ ObjectInputStream ois = new ObjectInputStream(fis)) { ++ PermissionCollection pc = (PermissionCollection) ois.readObject(); ++ System.out.println("1.2.1 collection = " + pc); ++ ++ if (pc.implies(mp)) { ++ System.out.println("JDK 1.2.1 test passed"); ++ } else { ++ throw new Exception("JDK 1.2.1 test failed"); ++ } + } + + // read in a 1.3.1 BasicPermissionCollection + sFile = new File(dir, "PermClass.1.3.1"); +- ois = new ObjectInputStream(new FileInputStream(sFile)); +- pc = (PermissionCollection)ois.readObject(); +- System.out.println("1.3.1 collection = " + pc); +- +- if (pc.implies(mp)) { +- System.out.println("JDK 1.3.1 test passed"); +- } else { +- throw new Exception("JDK 1.3.1 test failed"); ++ try (FileInputStream fis = new FileInputStream(sFile); ++ ObjectInputStream ois = new ObjectInputStream(fis)) { ++ PermissionCollection pc = (PermissionCollection)ois.readObject(); ++ System.out.println("1.3.1 collection = " + pc); ++ ++ if (pc.implies(mp)) { ++ System.out.println("JDK 1.3.1 test passed"); ++ } else { ++ throw new Exception("JDK 1.3.1 test failed"); ++ } + } + + // read in a 1.4 BasicPermissionCollection + sFile = new File(dir, "PermClass.1.4"); +- ois = new ObjectInputStream(new FileInputStream(sFile)); +- pc = (PermissionCollection)ois.readObject(); +- System.out.println("1.4 collection = " + pc); +- +- if (pc.implies(mp)) { +- System.out.println("JDK 1.4 test 1 passed"); +- } else { +- throw new Exception("JDK 1.4 test 1 failed"); ++ try (FileInputStream fis = new FileInputStream(sFile); ++ ObjectInputStream ois = new ObjectInputStream(fis)) { ++ PermissionCollection pc = (PermissionCollection)ois.readObject(); ++ System.out.println("1.4 collection = " + pc); ++ ++ if (pc.implies(mp)) { ++ System.out.println("JDK 1.4 test 1 passed"); ++ } else { ++ throw new Exception("JDK 1.4 test 1 failed"); ++ } + } + + // write out current BasicPermissionCollection + PermissionCollection bpc = mp.newPermissionCollection(); + bpc.add(mp); + sFile = new File(dir, "PermClass.current"); +- ObjectOutputStream oos = new ObjectOutputStream +- (new FileOutputStream("PermClass.current")); +- oos.writeObject(bpc); +- oos.close(); ++ try (FileOutputStream fos = new FileOutputStream("PermClass.current"); ++ ObjectOutputStream oos = new ObjectOutputStream(fos)) { ++ oos.writeObject(bpc); ++ } + + // read in current BasicPermissionCollection +- ois = new ObjectInputStream(new FileInputStream("PermClass.current")); +- pc = (PermissionCollection)ois.readObject(); +- System.out.println("current collection = " + pc); +- +- if (pc.implies(mp)) { +- System.out.println("JDK 1.4 test 2 passed"); +- } else { +- throw new Exception("JDK 1.4 test 2 failed"); ++ try (FileInputStream fis = new FileInputStream("PermClass.current"); ++ ObjectInputStream ois = new ObjectInputStream(fis)) { ++ PermissionCollection pc = (PermissionCollection)ois.readObject(); ++ System.out.println("current collection = " + pc); ++ ++ if (pc.implies(mp)) { ++ System.out.println("JDK 1.4 test 2 passed"); ++ } else { ++ throw new Exception("JDK 1.4 test 2 failed"); ++ } + } + } } +--- jdk/test/java/security/BasicPermission/SerialVersion.java 2012-08-10 10:34:47.000000000 -0700 ++++ jdk/test/java/security/BasicPermission/SerialVersion.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,7 @@ + + /* + * @test +- * @bug 4502729 ++ * @bug 4502729 7054918 + * @summary BasicPermissionCollection serial version UID incorrect + */ + +@@ -36,40 +36,44 @@ + String dir = System.getProperty("test.src"); + File sFile = new File (dir,"SerialVersion.1.2.1"); + // read in a 1.2.1 BasicPermissionCollection +- ObjectInputStream ois = new ObjectInputStream +- (new FileInputStream(sFile)); +- PermissionCollection pc = (PermissionCollection)ois.readObject(); +- System.out.println("1.2.1 collection = " + pc); ++ try (FileInputStream fis = new FileInputStream(sFile); ++ ObjectInputStream ois = new ObjectInputStream(fis)) { ++ PermissionCollection pc = (PermissionCollection)ois.readObject(); ++ System.out.println("1.2.1 collection = " + pc); ++ } + + // read in a 1.3.1 BasicPermissionCollection + sFile = new File (dir,"SerialVersion.1.3.1"); + +- ois = new ObjectInputStream +- (new FileInputStream(sFile)); +- pc = (PermissionCollection)ois.readObject(); +- System.out.println("1.3.1 collection = " + pc); ++ try (FileInputStream fis = new FileInputStream(sFile); ++ ObjectInputStream ois = new ObjectInputStream(fis)) { ++ PermissionCollection pc = (PermissionCollection)ois.readObject(); ++ System.out.println("1.3.1 collection = " + pc); ++ } + + // read in a 1.4 BasicPermissionCollection + sFile = new File (dir,"SerialVersion.1.4"); +- ois = new ObjectInputStream +- (new FileInputStream(sFile)); +- pc = (PermissionCollection)ois.readObject(); +- System.out.println("1.4 collection = " + pc); ++ try (FileInputStream fis = new FileInputStream(sFile); ++ ObjectInputStream ois = new ObjectInputStream(fis)) { ++ PermissionCollection pc = (PermissionCollection)ois.readObject(); ++ System.out.println("1.4 collection = " + pc); ++ } + + // write out current BasicPermissionCollection + MyPermission mp = new MyPermission("SerialVersionTest"); + PermissionCollection bpc = mp.newPermissionCollection(); + sFile = new File (dir,"SerialVersion.current"); +- ObjectOutputStream oos = new ObjectOutputStream +- (new FileOutputStream("SerialVersion.current")); +- oos.writeObject(bpc); +- oos.close(); ++ try (FileOutputStream fos = new FileOutputStream("SerialVersion.current"); ++ ObjectOutputStream oos = new ObjectOutputStream(fos)) { ++ oos.writeObject(bpc); ++ } + + // read in current BasicPermissionCollection +- ois = new ObjectInputStream +- (new FileInputStream("SerialVersion.current")); +- pc = (PermissionCollection)ois.readObject(); +- System.out.println("current collection = " + pc); ++ try (FileInputStream fis = new FileInputStream("SerialVersion.current"); ++ ObjectInputStream ois = new ObjectInputStream(fis)) { ++ PermissionCollection pc = (PermissionCollection)ois.readObject(); ++ System.out.println("current collection = " + pc); ++ } + } + } + +--- jdk/test/java/security/KeyFactory/Failover.java 2012-08-10 10:34:48.000000000 -0700 ++++ jdk/test/java/security/KeyFactory/Failover.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,8 @@ + + /** + * @test +- * @bug 4894125 ++ * @bug 4894125 7054918 ++ * @library ../testlibrary + * @summary test that failover for KeyFactory works + * @author Andreas Sterbenz + */ +@@ -37,6 +38,15 @@ + public class Failover { + + public static void main(String[] args) throws Exception { ++ ProvidersSnapshot snapshot = ProvidersSnapshot.create(); ++ try { ++ main0(args); ++ } finally { ++ snapshot.restore(); ++ } ++ } ++ ++ public static void main0(String[] args) throws Exception { + Security.insertProviderAt(new ProviderFail(), 1); + Security.addProvider(new ProviderPass()); + System.out.println(Arrays.asList(Security.getProviders())); +--- jdk/test/java/security/KeyPairGenerator/Failover.java 2012-08-10 10:34:48.000000000 -0700 ++++ jdk/test/java/security/KeyPairGenerator/Failover.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,8 @@ + + /** + * @test +- * @bug 4894125 ++ * @bug 4894125 7054918 ++ * @library ../testlibrary + * @summary test that failover for KeyPairGenerator works + * @author Andreas Sterbenz + */ +@@ -37,6 +38,15 @@ + public class Failover { + + public static void main(String[] args) throws Exception { ++ ProvidersSnapshot snapshot = ProvidersSnapshot.create(); ++ try { ++ main0(args); ++ } finally { ++ snapshot.restore(); ++ } ++ } ++ ++ public static void main0(String[] args) throws Exception { + Security.insertProviderAt(new ProviderFail(), 1); + Security.addProvider(new ProviderPass()); + System.out.println(Arrays.asList(Security.getProviders())); +--- jdk/test/java/security/Provider/ChangeProviders.java 2012-08-10 10:34:51.000000000 -0700 ++++ jdk/test/java/security/Provider/ChangeProviders.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,8 @@ + + /* + * @test +- * @bug 4856968 ++ * @bug 4856968 7054918 ++ * @library ../testlibrary + * @summary make sure add/insert/removeProvider() work correctly + * @author Andreas Sterbenz + */ +@@ -43,6 +44,15 @@ + } + + public static void main(String[] args) throws Exception { ++ ProvidersSnapshot snapshot = ProvidersSnapshot.create(); ++ try { ++ main0(args); ++ } finally { ++ snapshot.restore(); ++ } ++ } ++ ++ public static void main0(String[] args) throws Exception { + long start = System.currentTimeMillis(); + Provider p = new ChangeProviders(); + +--- jdk/test/java/security/Provider/GetInstance.java 2012-08-10 10:34:51.000000000 -0700 ++++ jdk/test/java/security/Provider/GetInstance.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,8 @@ + + /* + * @test +- * @bug 4856968 ++ * @bug 4856968 7054918 ++ * @library ../testlibrary + * @summary make sure getInstance() works correctly, including failover + * and delayed provider selection for Signatures + * @author Andreas Sterbenz +@@ -43,6 +44,15 @@ + } + + public static void main(String[] args) throws Exception { ++ ProvidersSnapshot snapshot = ProvidersSnapshot.create(); ++ try { ++ main0(args); ++ } finally { ++ snapshot.restore(); ++ } ++ } ++ ++ public static void main0(String[] args) throws Exception { + long start = System.currentTimeMillis(); + + Provider foo = new FooProvider(); +--- jdk/test/java/security/Provider/RemoveProvider.java 2012-08-10 10:34:51.000000000 -0700 ++++ jdk/test/java/security/Provider/RemoveProvider.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,8 @@ + + /* + * @test +- * @bug 4190873 ++ * @bug 4190873 7054918 ++ * @library ../testlibrary + * @summary Make sure provider instance can be removed from list of registered + * providers, and "entrySet", "keySet", and "values" methods don't loop + * indefinitely. +@@ -34,6 +35,15 @@ + public class RemoveProvider { + + public static void main(String[] args) throws Exception { ++ ProvidersSnapshot snapshot = ProvidersSnapshot.create(); ++ try { ++ main0(args); ++ } finally { ++ snapshot.restore(); ++ } ++ } ++ ++ public static void main0(String[] args) throws Exception { + + // Add provider 1 + Provider p1 = new MyProvider("name1",1,""); +--- jdk/test/java/security/Provider/Turkish.java 2012-08-10 10:34:51.000000000 -0700 ++++ jdk/test/java/security/Provider/Turkish.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,9 +23,8 @@ + + /** + * @test +- * @bug 6220064 ++ * @bug 6220064 7054918 + * @summary make sure everything works ok in the Turkish local (dotted/dotless i problem) +- * @run main/othervm Turkish + * @author Andreas Sterbenz + */ + +@@ -41,54 +40,59 @@ + Provider p1 = new TProvider("T1"); + System.out.println(p1.getServices()); // trigger service parsing + +- Locale.setDefault(new Locale("tr", "TR")); +- +- Provider p2 = new TProvider("T2"); +- System.out.println(p2.getServices()); // trigger service parsing +- +- System.out.println(Signature.getInstance("MD5withRSA")); +- System.out.println(Signature.getInstance("md5withrsa")); +- System.out.println(Signature.getInstance("MD5WITHRSA")); +- Service s1, s2; +- s1 = p1.getService("Signature", "MD5withRSA"); +- check(s1, null); +- check(s1, p1.getService("Signature", "md5withrsa")); +- check(s1, p1.getService("Signature", "MD5WITHRSA")); +- check(s1, p1.getService("Signature", "MD5RSA")); +- check(s1, p1.getService("Signature", "md5rsa")); +- check(s1, p1.getService("Signature", "MD5rsa")); +- +- s1 = p1.getService("Signature", "SHAwithRSA"); +- check(s1, null); +- check(s1, p1.getService("Signature", "shawithrsa")); +- check(s1, p1.getService("Signature", "SHAWITHRSA")); +- check(s1, p1.getService("Signature", "SHARSA")); +- check(s1, p1.getService("Signature", "sharsa")); +- check(s1, p1.getService("Signature", "SHArsa")); +- check(s1, p1.getService("Signature", "SHA1RSA")); +- check(s1, p1.getService("Signature", "sha1rsa")); +- check(s1, p1.getService("Signature", "SHA1rsa")); +- +- s1 = p2.getService("Signature", "MD5withRSA"); +- check(s1, null); +- check(s1, p2.getService("Signature", "md5withrsa")); +- check(s1, p2.getService("Signature", "MD5WITHRSA")); +- check(s1, p2.getService("Signature", "MD5RSA")); +- check(s1, p2.getService("Signature", "md5rsa")); +- check(s1, p2.getService("Signature", "MD5rsa")); +- +- s1 = p2.getService("Signature", "SHAwithRSA"); +- check(s1, null); +- check(s1, p2.getService("Signature", "shawithrsa")); +- check(s1, p2.getService("Signature", "SHAWITHRSA")); +- check(s1, p2.getService("Signature", "SHARSA")); +- check(s1, p2.getService("Signature", "sharsa")); +- check(s1, p2.getService("Signature", "SHArsa")); +- check(s1, p2.getService("Signature", "SHA1RSA")); +- check(s1, p2.getService("Signature", "sha1rsa")); +- check(s1, p2.getService("Signature", "SHA1rsa")); +- +- System.out.println("OK"); ++ Locale loc = Locale.getDefault(); ++ try { ++ Locale.setDefault(new Locale("tr", "TR")); ++ ++ Provider p2 = new TProvider("T2"); ++ System.out.println(p2.getServices()); // trigger service parsing ++ ++ System.out.println(Signature.getInstance("MD5withRSA")); ++ System.out.println(Signature.getInstance("md5withrsa")); ++ System.out.println(Signature.getInstance("MD5WITHRSA")); ++ Service s1, s2; ++ s1 = p1.getService("Signature", "MD5withRSA"); ++ check(s1, null); ++ check(s1, p1.getService("Signature", "md5withrsa")); ++ check(s1, p1.getService("Signature", "MD5WITHRSA")); ++ check(s1, p1.getService("Signature", "MD5RSA")); ++ check(s1, p1.getService("Signature", "md5rsa")); ++ check(s1, p1.getService("Signature", "MD5rsa")); ++ ++ s1 = p1.getService("Signature", "SHAwithRSA"); ++ check(s1, null); ++ check(s1, p1.getService("Signature", "shawithrsa")); ++ check(s1, p1.getService("Signature", "SHAWITHRSA")); ++ check(s1, p1.getService("Signature", "SHARSA")); ++ check(s1, p1.getService("Signature", "sharsa")); ++ check(s1, p1.getService("Signature", "SHArsa")); ++ check(s1, p1.getService("Signature", "SHA1RSA")); ++ check(s1, p1.getService("Signature", "sha1rsa")); ++ check(s1, p1.getService("Signature", "SHA1rsa")); ++ ++ s1 = p2.getService("Signature", "MD5withRSA"); ++ check(s1, null); ++ check(s1, p2.getService("Signature", "md5withrsa")); ++ check(s1, p2.getService("Signature", "MD5WITHRSA")); ++ check(s1, p2.getService("Signature", "MD5RSA")); ++ check(s1, p2.getService("Signature", "md5rsa")); ++ check(s1, p2.getService("Signature", "MD5rsa")); ++ ++ s1 = p2.getService("Signature", "SHAwithRSA"); ++ check(s1, null); ++ check(s1, p2.getService("Signature", "shawithrsa")); ++ check(s1, p2.getService("Signature", "SHAWITHRSA")); ++ check(s1, p2.getService("Signature", "SHARSA")); ++ check(s1, p2.getService("Signature", "sharsa")); ++ check(s1, p2.getService("Signature", "SHArsa")); ++ check(s1, p2.getService("Signature", "SHA1RSA")); ++ check(s1, p2.getService("Signature", "sha1rsa")); ++ check(s1, p2.getService("Signature", "SHA1rsa")); ++ ++ System.out.println("OK"); ++ } finally { ++ Locale.setDefault(loc); ++ } + } + + private static void check(Service s1, Service s2) throws Exception { --- jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh 2012-08-10 10:34:51.000000000 -0700 -+++ jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh 2013-05-05 09:38:44.000000000 -0700 @@ -46,15 +46,7 @@ # set platform-dependent variables OS=`uname -s` @@ -78845,8 +89740,16 @@ PATHSEP=":" FILESEP="/" ;; +@@ -89,6 +81,7 @@ + # run the test + ${TESTJAVA}${FILESEP}bin${FILESEP}java \ + -classpath "${TESTCLASSES}${PATHSEP}${TESTSRC}${FILESEP}Deadlock.jar" \ ++ -Djava.awt.headless=true \ + ClassLoaderDeadlock + + STATUS=$? --- jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh 2012-08-10 10:34:51.000000000 -0700 -+++ jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh 2013-05-05 09:38:44.000000000 -0700 @@ -34,15 +34,7 @@ # set platform-dependent variables OS=`uname -s` @@ -78865,7 +89768,16 @@ FILESEP="/" ;; --- jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh 2012-08-10 10:34:51.000000000 -0700 -+++ jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh 2013-05-05 09:38:44.000000000 -0700 +@@ -1,7 +1,7 @@ + #!/bin/sh + + # +-# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,15 +50,7 @@ # set platform-dependent variables OS=`uname -s` @@ -78883,8 +89795,117 @@ PATHSEP=":" FILESEP="/" ;; +--- jdk/test/java/security/Security/NoInstalledProviders.java 2012-08-10 10:34:51.000000000 -0700 ++++ jdk/test/java/security/Security/NoInstalledProviders.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,8 @@ + + /* + * @test +- * @bug 4273454 7052537 ++ * @bug 4273454 7054918 7052537 ++ * @library ../testlibrary + * @summary Make sure getProviders(filter) doesn't throw NPE + * @run main/othervm NoInstalledProviders + */ +@@ -32,7 +33,16 @@ + + public class NoInstalledProviders { + +- public static void main(String[] argv) { ++ public static void main(String[] args) throws Exception { ++ ProvidersSnapshot snapshot = ProvidersSnapshot.create(); ++ try { ++ main0(args); ++ } finally { ++ snapshot.restore(); ++ } ++ } ++ ++ public static void main0(String[] args) throws Exception { + + Provider[] provs = Security.getProviders(); + // make sure there are no providers in the system +--- jdk/test/java/security/Security/SynchronizedAccess.java 2012-08-10 10:34:51.000000000 -0700 ++++ jdk/test/java/security/Security/SynchronizedAccess.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,8 @@ + + /* + * @test +- * @bug 4162583 ++ * @bug 4162583 7054918 ++ * @library ../testlibrary + * @summary Make sure Provider api implementations are synchronized properly + */ + +@@ -31,7 +32,16 @@ + + public class SynchronizedAccess { + +- public static void main(String[] args) { ++ public static void main(String[] args) throws Exception { ++ ProvidersSnapshot snapshot = ProvidersSnapshot.create(); ++ try { ++ main0(args); ++ } finally { ++ snapshot.restore(); ++ } ++ } ++ ++ public static void main0(String[] args) throws Exception { + AccessorThread[] acc = new AccessorThread[200]; + for (int i=0; i < acc.length; i++) + acc[i] = new AccessorThread("thread"+i); +--- jdk/test/java/security/Security/removing/RemoveProviders.java 2012-08-10 10:34:51.000000000 -0700 ++++ jdk/test/java/security/Security/removing/RemoveProviders.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,8 @@ + + /** + * @test +- * @bug 4963416 ++ * @bug 4963416 7054918 ++ * @library ../../testlibrary + * @summary make sure removeProvider() always works correctly + * @author Andreas Sterbenz + */ +@@ -35,6 +36,15 @@ + public class RemoveProviders { + + public static void main(String[] args) throws Exception { ++ ProvidersSnapshot snapshot = ProvidersSnapshot.create(); ++ try { ++ main0(args); ++ } finally { ++ snapshot.restore(); ++ } ++ } ++ ++ public static void main0(String[] args) throws Exception { + Provider[] providers = Security.getProviders(); + System.out.println("Providers: " + Arrays.asList(providers)); + --- jdk/test/java/security/Security/signedfirst/Dyn.sh 2012-08-10 10:34:51.000000000 -0700 -+++ jdk/test/java/security/Security/signedfirst/Dyn.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/security/Security/signedfirst/Dyn.sh 2013-05-05 09:38:44.000000000 -0700 @@ -46,15 +46,7 @@ # set platform-dependent variables OS=`uname -s` @@ -78903,7 +89924,7 @@ FILESEP="/" ;; --- jdk/test/java/security/Security/signedfirst/Static.sh 2012-08-10 10:34:51.000000000 -0700 -+++ jdk/test/java/security/Security/signedfirst/Static.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/security/Security/signedfirst/Static.sh 2013-05-05 09:38:44.000000000 -0700 @@ -46,15 +46,7 @@ # set platform-dependent variables OS=`uname -s` @@ -78921,8 +89942,148 @@ PATHSEP=":" FILESEP="/" ;; +--- jdk/test/java/security/UnresolvedPermission/Equals.java 2012-08-10 10:34:52.000000000 -0700 ++++ jdk/test/java/security/UnresolvedPermission/Equals.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,6 +24,7 @@ + /* + * @test + * @bug 4513737 ++ * @run main/othervm Equals + * @summary UnresolvedPermission.equals() throws NullPointerException + */ + +--- jdk/test/java/security/spec/EllipticCurveMatch.java 2012-08-10 10:34:53.000000000 -0700 ++++ jdk/test/java/security/spec/EllipticCurveMatch.java 2013-05-05 09:38:44.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * 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,12 @@ + * @test + * @bug 6738532 + * @summary Check EllipticCurve.equals() does not compare seed value of curve. +- * @run main/othervm EllipticCurveMatch + * @author Mike StJohns + */ + + import java.security.spec.*; + import java.math.BigInteger; +-import java.security.SecureRandom; ++import java.util.Random; + + public class EllipticCurveMatch { + static String primeP256 = +@@ -45,7 +44,7 @@ + + private static EllipticCurve addSeedToCurve(EllipticCurve curve) + { +- SecureRandom rand = new SecureRandom(); ++ Random rand = new Random(); + byte[] seed = new byte[12]; + rand.nextBytes(seed); + +--- jdk/test/java/security/testlibrary/Providers.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/java/security/testlibrary/Providers.java 2013-05-05 09:38:44.000000000 -0700 +@@ -0,0 +1,36 @@ ++/* ++ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ * 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.security.Provider; ++import java.security.Security; ++ ++public class Providers { ++ public static void setAt(Provider p, int pos) throws Exception { ++ if (Security.getProvider(p.getName()) != null) { ++ Security.removeProvider(p.getName()); ++ } ++ if (Security.insertProviderAt(p, pos) == -1) { ++ throw new Exception("cannot setAt"); ++ } ++ } ++} +--- jdk/test/java/security/testlibrary/ProvidersSnapshot.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/java/security/testlibrary/ProvidersSnapshot.java 2013-05-05 09:38:44.000000000 -0700 +@@ -0,0 +1,48 @@ ++/* ++ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ * 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.security.Provider; ++import java.security.Security; ++ ++public class ProvidersSnapshot { ++ ++ private Provider[] oldProviders; ++ ++ private ProvidersSnapshot() { ++ oldProviders = Security.getProviders(); ++ } ++ ++ public static ProvidersSnapshot create() { ++ return new ProvidersSnapshot(); ++ } ++ ++ public void restore() { ++ Provider[] newProviders = Security.getProviders(); ++ for (Provider p: newProviders) { ++ Security.removeProvider(p.getName()); ++ } ++ for (Provider p: oldProviders) { ++ Security.addProvider(p); ++ } ++ } ++} --- jdk/test/java/util/Currency/PropertiesTest.sh 2012-08-10 10:34:57.000000000 -0700 -+++ jdk/test/java/util/Currency/PropertiesTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/util/Currency/PropertiesTest.sh 2013-05-05 09:38:44.000000000 -0700 @@ -30,7 +30,7 @@ # set platform-dependent variables OS=`uname -s` @@ -78933,7 +90094,7 @@ FS="/" ;; --- jdk/test/java/util/PluggableLocale/ExecTest.sh 2012-08-10 10:35:02.000000000 -0700 -+++ jdk/test/java/util/PluggableLocale/ExecTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/util/PluggableLocale/ExecTest.sh 2013-05-05 09:38:44.000000000 -0700 @@ -58,7 +58,7 @@ # set platform-dependent variables OS=`uname -s` @@ -78944,7 +90105,7 @@ FS="/" ;; --- jdk/test/java/util/ResourceBundle/Bug6299235Test.sh 2012-08-10 10:35:04.000000000 -0700 -+++ jdk/test/java/util/ResourceBundle/Bug6299235Test.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/util/ResourceBundle/Bug6299235Test.sh 2013-05-05 09:38:44.000000000 -0700 @@ -31,7 +31,7 @@ # set platform-dependent variables OS=`uname -s` @@ -78955,7 +90116,7 @@ FILESEP="/" ;; --- jdk/test/java/util/ResourceBundle/Control/ExpirationTest.sh 2012-08-10 10:35:05.000000000 -0700 -+++ jdk/test/java/util/ResourceBundle/Control/ExpirationTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/util/ResourceBundle/Control/ExpirationTest.sh 2013-05-05 09:38:44.000000000 -0700 @@ -72,10 +72,10 @@ Windows* | CYGWIN* ) DEL=";" @@ -78970,7 +90131,7 @@ HAS_S=YES ;; --- jdk/test/java/util/ServiceLoader/basic.sh 2012-08-10 10:35:06.000000000 -0700 -+++ jdk/test/java/util/ServiceLoader/basic.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/java/util/ServiceLoader/basic.sh 2013-05-05 09:38:44.000000000 -0700 @@ -42,9 +42,7 @@ OS=`uname -s` @@ -78982,8 +90143,37 @@ SEP=':' ;; * ) SEP='\;' ;; +--- jdk/test/java/util/Timer/KillThread.java 2012-08-10 10:35:08.000000000 -0700 ++++ jdk/test/java/util/Timer/KillThread.java 2013-05-05 09:38:44.000000000 -0700 +@@ -32,20 +32,25 @@ + + public class KillThread { + public static void main (String[] args) throws Exception { ++ final Thread[] tdThread = new Thread[1]; + Timer t = new Timer(); + + // Start a mean event that kills the timer thread + t.schedule(new TimerTask() { + public void run() { ++ tdThread[0] = Thread.currentThread(); + throw new ThreadDeath(); + } + }, 0); + + // Wait for mean event to do the deed and thread to die. + try { +- Thread.sleep(100); ++ do { ++ Thread.sleep(100); ++ } while(tdThread[0] == null); + } catch(InterruptedException e) { + } ++ tdThread[0].join(); + + // Try to start another event + try { --- jdk/test/java/util/concurrent/BlockingQueue/LastElement.java 2012-08-10 10:35:08.000000000 -0700 -+++ jdk/test/java/util/concurrent/BlockingQueue/LastElement.java 2013-01-16 00:07:30.000000000 -0800 ++++ jdk/test/java/util/concurrent/BlockingQueue/LastElement.java 2013-05-05 09:38:44.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. @@ -79047,7 +90237,7 @@ volatile int passed = 0, failed = 0; void pass() {passed++;} --- jdk/test/java/util/concurrent/Executors/AutoShutdown.java 2012-08-10 10:35:09.000000000 -0700 -+++ jdk/test/java/util/concurrent/Executors/AutoShutdown.java 2013-01-16 08:58:13.000000000 -0800 ++++ jdk/test/java/util/concurrent/Executors/AutoShutdown.java 2013-05-05 09:38:44.000000000 -0700 @@ -67,6 +67,11 @@ e1 = e2 = null; for (int i = 0; i < 10 && Thread.activeCount() > count0; i++) @@ -79060,8 +90250,100 @@ equal(Thread.activeCount(), count0); } +--- jdk/test/java/util/concurrent/FutureTask/BlockingTaskExecutor.java 2012-08-10 10:35:09.000000000 -0700 ++++ jdk/test/java/util/concurrent/FutureTask/BlockingTaskExecutor.java 2013-05-05 09:38:44.000000000 -0700 +@@ -75,10 +75,10 @@ + throw new Error("Executor stuck"); + + // Wait for the invocation thread to complete. +- thread.join(1000); ++ thread.join(5000); + if (thread.isAlive()) { + thread.interrupt(); +- thread.join(1000); ++ thread.join(5000); + throw new Error("invokeAll stuck"); + } + } +--- jdk/test/java/util/concurrent/Phaser/Basic.java 2012-08-10 10:35:09.000000000 -0700 ++++ jdk/test/java/util/concurrent/Phaser/Basic.java 2013-05-05 09:38:44.000000000 -0700 +@@ -96,7 +96,7 @@ + int phase = atTheStartingGate.getPhase(); + equal(phase, atTheStartingGate.arrive()); + int awaitPhase = atTheStartingGate.awaitAdvanceInterruptibly +- (phase, 10, SECONDS); ++ (phase, 30, SECONDS); + if (expectNextPhase) check(awaitPhase == (phase + 1)); + + pass(); +@@ -188,7 +188,7 @@ + case 2: case 6: case 7: + return awaiter(phaser, -1, SECONDS); + default: +- return awaiter(phaser, 10, SECONDS); }} ++ return awaiter(phaser, 30, SECONDS); }} + public void remove() {throw new UnsupportedOperationException();}}; + } + +@@ -204,7 +204,7 @@ + case 2: case 5: + return awaiter(phaser, -1, SECONDS); + default: +- return awaiter(phaser, 10, SECONDS); }} ++ return awaiter(phaser, 30, SECONDS); }} + public void remove() {throw new UnsupportedOperationException();}}; + } + +@@ -251,9 +251,11 @@ + int phase = phaser.getPhase(); + for (int i = 0; i < 4; i++) { + check(phaser.getPhase() == phase); +- Awaiter a1 = awaiter(phaser, 10, SECONDS); a1.start(); ++ Awaiter a1 = awaiter(phaser, 30, SECONDS); a1.start(); + Arriver a2 = arrivers.next(); a2.start(); + toTheStartingGate(); ++ // allow a1 to block in awaitAdvanceInterruptibly ++ Thread.sleep(2000); + a1.interrupt(); + a1.join(); + phaser.arriveAndAwaitAdvance(); +--- jdk/test/java/util/concurrent/ThreadPoolExecutor/Custom.java 2012-08-10 10:35:10.000000000 -0700 ++++ jdk/test/java/util/concurrent/ThreadPoolExecutor/Custom.java 2013-05-05 09:38:44.000000000 -0700 +@@ -100,8 +100,8 @@ + equal(countExecutorThreads(), threadCount); + equal(CustomTask.births.get(), threadCount); + tpe.shutdown(); +- tpe.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); +- Thread.sleep(10); ++ tpe.awaitTermination(120, TimeUnit.SECONDS); ++ Thread.sleep(1000); + equal(countExecutorThreads(), 0); + + CustomSTPE stpe = new CustomSTPE(); +@@ -110,8 +110,8 @@ + equal(CustomSTPE.decorations.get(), threadCount); + equal(countExecutorThreads(), threadCount); + stpe.shutdown(); +- stpe.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); +- Thread.sleep(10); ++ stpe.awaitTermination(120, TimeUnit.SECONDS); ++ Thread.sleep(1000); + equal(countExecutorThreads(), 0); + + System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); +--- jdk/test/java/util/concurrent/locks/Lock/FlakyMutex.java 2012-08-10 10:35:10.000000000 -0700 ++++ jdk/test/java/util/concurrent/locks/Lock/FlakyMutex.java 2013-05-05 09:38:44.000000000 -0700 +@@ -86,7 +86,7 @@ + } catch (Throwable t) { unexpected(t); }}});} + barrier.await(); + es.shutdown(); +- check(es.awaitTermination(10, TimeUnit.SECONDS)); ++ check(es.awaitTermination(30, TimeUnit.SECONDS)); + } + + private static class FlakySync extends AbstractQueuedLongSynchronizer { --- jdk/test/java/util/logging/CustomLogManager.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/java/util/logging/CustomLogManager.java 2013-03-09 08:44:51.000000000 -0800 ++++ jdk/test/java/util/logging/CustomLogManager.java 2013-05-05 09:38:44.000000000 -0700 @@ -0,0 +1,177 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. @@ -79241,7 +90523,7 @@ + } +} --- jdk/test/java/util/logging/CustomLogManagerTest.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/java/util/logging/CustomLogManagerTest.java 2013-03-09 08:44:51.000000000 -0800 ++++ jdk/test/java/util/logging/CustomLogManagerTest.java 2013-05-05 09:38:44.000000000 -0700 @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. @@ -79307,7 +90589,7 @@ + } +} --- jdk/test/java/util/logging/SimpleLogManager.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/java/util/logging/SimpleLogManager.java 2013-03-09 08:44:51.000000000 -0800 ++++ jdk/test/java/util/logging/SimpleLogManager.java 2013-05-05 09:38:44.000000000 -0700 @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. @@ -79422,8 +90704,82 @@ + } + } +} +--- jdk/test/javax/crypto/EncryptedPrivateKeyInfo/GetKeySpecException.java 2012-08-10 10:35:14.000000000 -0700 ++++ jdk/test/javax/crypto/EncryptedPrivateKeyInfo/GetKeySpecException.java 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,8 @@ + + /** + * @test +- * @bug 4508341 ++ * @bug 4508341 7055362 ++ * @library ../../../java/security/testlibrary + * @summary Test the error conditions of + * EncryptedPrivateKeyInfo.getKeySpec(...) methods. + * @author Valerie Peng +@@ -97,7 +98,16 @@ + } + } + +- public static void main(String[] argv) throws Exception { ++ public static void main(String[] args) throws Exception { ++ ProvidersSnapshot snapshot = ProvidersSnapshot.create(); ++ try { ++ main0(args); ++ } finally { ++ snapshot.restore(); ++ } ++ } ++ ++ public static void main0(String[] args) throws Exception { + if ((GOOD_PARAMS == null) || (BAD_PARAMS == null)) { + throw new Exception("Static parameter generation failed"); + } +--- jdk/test/javax/crypto/JceSecurity/SunJCE_BC_LoadOrdering.java 2012-08-10 10:35:14.000000000 -0700 ++++ jdk/test/javax/crypto/JceSecurity/SunJCE_BC_LoadOrdering.java 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +23,8 @@ + + /* + * @test +- * @bug 6377058 ++ * @bug 6377058 7055362 ++ * @library ../../../java/security/testlibrary + * @summary SunJCE depends on sun.security.provider.SignatureImpl + * behaviour, BC can't load into 1st slot. + * @author Brad R. Wetmore +@@ -35,7 +36,16 @@ + + public class SunJCE_BC_LoadOrdering { + +- public static void main(String args[]) throws Exception { ++ public static void main(String[] args) throws Exception { ++ ProvidersSnapshot snapshot = ProvidersSnapshot.create(); ++ try { ++ main0(args); ++ } finally { ++ snapshot.restore(); ++ } ++ } ++ ++ public static void main0(String[] args) throws Exception { + /* + * Generate a random key, and encrypt the data + */ --- jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh 2012-08-10 10:35:14.000000000 -0700 -+++ jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh 2013-05-05 09:38:47.000000000 -0700 @@ -51,7 +51,7 @@ # set platform-dependent variables OS=`uname -s` @@ -79434,7 +90790,7 @@ PS=":" FS="/" --- jdk/test/javax/crypto/sanity/CheckManifestForRelease.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/javax/crypto/sanity/CheckManifestForRelease.java 2013-01-16 08:58:13.000000000 -0800 ++++ jdk/test/javax/crypto/sanity/CheckManifestForRelease.java 2013-05-05 09:38:47.000000000 -0700 @@ -0,0 +1,187 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -79624,7 +90980,7 @@ + } +} --- jdk/test/javax/crypto/sanity/p11-solaris.txt 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/javax/crypto/sanity/p11-solaris.txt 2013-01-16 08:58:13.000000000 -0800 ++++ jdk/test/javax/crypto/sanity/p11-solaris.txt 2013-05-05 09:38:47.000000000 -0700 @@ -0,0 +1,21 @@ +# +# Configuration file to allow the SunPKCS11 provider to utilize @@ -79648,18 +91004,59 @@ + CKM_MD2 +} --- jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh 2012-08-10 10:35:15.000000000 -0700 -+++ jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh 2013-03-09 08:44:54.000000000 -0800 -@@ -84,7 +84,7 @@ ++++ jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,6 +1,6 @@ + #!/bin/ksh -p + # +-# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,28 +78,36 @@ + case "$OS" in + SunOS ) + VAR="One value for Sun" +- DEFAULT_JDK=/usr/local/java/jdk1.2/solaris ++ DEFAULT_JDK=/ + FILESEP="/" + PATHSEP=":" TMP="/tmp" ;; - Linux | Darwin ) + Linux | *BSD | Darwin ) VAR="A different value for Linux" - DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386 +- DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386 ++ DEFAULT_JDK=/ FILESEP="/" + PATHSEP=":" + TMP="/tmp" + ;; + +- Windows_95 | Windows_98 | Windows_NT | Windows_ME | CYGWIN* ) ++ Windows* ) + VAR="A different value for Win32" +- DEFAULT_JDK=/usr/local/java/jdk1.2/win32 ++ DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0" + FILESEP="\\" + PATHSEP=";" + TMP=`cd "${SystemRoot}/Temp"; echo ${PWD}` + ;; + ++ CYGWIN* ) ++ VAR="A different value for Cygwin" ++ DEFAULT_JDK="/cygdrive/c/Program\ Files/Java/jdk1.8.0" ++ FILESEP="/" ++ PATHSEP=";" ++ TMP=`cd "${SystemRoot}/Temp"; echo ${PWD}` ++ ;; ++ + # catch all other OSs + * ) + echo "Unrecognized system! $OS" --- jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation2Test.java 2012-08-10 10:35:22.000000000 -0700 -+++ jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation2Test.java 2013-03-09 08:44:51.000000000 -0800 ++++ jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation2Test.java 2013-05-05 09:38:47.000000000 -0700 @@ -119,9 +119,6 @@ System.out.println("Create SimpleStandard MBean"); SimpleStandard s = new SimpleStandard("monitorRole"); @@ -79681,7 +91078,7 @@ // System.out.println("Create an RMI connector server"); --- jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation3Test.java 2012-08-10 10:35:22.000000000 -0700 -+++ jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation3Test.java 2013-03-09 08:44:51.000000000 -0800 ++++ jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation3Test.java 2013-05-05 09:38:47.000000000 -0700 @@ -120,9 +120,6 @@ System.out.println("Create SimpleStandard MBean"); SimpleStandard s = new SimpleStandard("delegate"); @@ -79702,8 +91099,20 @@ // Create an RMI connector server // System.out.println("Create an RMI connector server"); +--- jdk/test/javax/rmi/ssl/SocketFactoryTest.java 2012-08-10 10:35:25.000000000 -0700 ++++ jdk/test/javax/rmi/ssl/SocketFactoryTest.java 2013-05-05 09:38:47.000000000 -0700 +@@ -26,8 +26,7 @@ + * @bug 4932837 6582235 + * @summary Test SslRMI[Client|Server]SocketFactory equals() and hashCode(). + * @author Daniel Fuchs +- * @run clean SocketFactoryTest +- * @run build SocketFactoryTest ++ * + * @run main SocketFactoryTest + */ + --- jdk/test/javax/script/CommonSetup.sh 2012-08-10 10:35:25.000000000 -0700 -+++ jdk/test/javax/script/CommonSetup.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/javax/script/CommonSetup.sh 2013-05-05 09:38:47.000000000 -0700 @@ -36,7 +36,7 @@ OS=`uname -s` @@ -79714,7 +91123,7 @@ FS="/" ;; --- jdk/test/javax/security/auth/Subject/doAs/Test.sh 2012-08-10 10:35:26.000000000 -0700 -+++ jdk/test/javax/security/auth/Subject/doAs/Test.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/javax/security/auth/Subject/doAs/Test.sh 2013-05-05 09:38:47.000000000 -0700 @@ -33,17 +33,7 @@ # set platform-dependent variables OS=`uname -s` @@ -79734,9 +91143,83 @@ PS=":" FS="/" RM="/bin/rm -f" +--- jdk/test/javax/security/auth/login/LoginContext/ResetConfigModule.java 2012-08-10 10:35:28.000000000 -0700 ++++ jdk/test/javax/security/auth/login/LoginContext/ResetConfigModule.java 2013-05-05 09:38:47.000000000 -0700 +@@ -25,7 +25,6 @@ + * @test + * @bug 4633622 + * @summary bug in LoginContext when Configuration is subclassed +- * + * @build ResetConfigModule ResetModule + * @run main ResetConfigModule + */ +@@ -40,32 +39,42 @@ + + public static void main(String[] args) throws Exception { + +- Configuration.setConfiguration(new MyConfig()); ++ Configuration previousConf = Configuration.getConfiguration(); ++ ClassLoader previousCL = Thread.currentThread().getContextClassLoader(); + +- LoginContext lc = new LoginContext("test"); + try { +- lc.login(); +- throw new SecurityException("test 1 failed"); +- } catch (LoginException le) { +- if (le.getCause() != null && +- le.getCause() instanceof SecurityException) { +- System.out.println("good so far"); +- } else { +- throw le; ++ Thread.currentThread().setContextClassLoader( ++ ResetConfigModule.class.getClassLoader()); ++ Configuration.setConfiguration(new MyConfig()); ++ ++ LoginContext lc = new LoginContext("test"); ++ try { ++ lc.login(); ++ throw new SecurityException("test 1 failed"); ++ } catch (LoginException le) { ++ if (le.getCause() != null && ++ le.getCause() instanceof SecurityException) { ++ System.out.println("good so far"); ++ } else { ++ throw le; ++ } + } +- } + +- LoginContext lc2 = new LoginContext("test2"); +- try { +- lc2.login(); +- throw new SecurityException("test 2 failed"); +- } catch (LoginException le) { +- if (le.getCause() != null && +- le.getCause() instanceof SecurityException) { +- System.out.println("test succeeded"); +- } else { +- throw le; ++ LoginContext lc2 = new LoginContext("test2"); ++ try { ++ lc2.login(); ++ throw new SecurityException("test 2 failed"); ++ } catch (LoginException le) { ++ if (le.getCause() != null && ++ le.getCause() instanceof SecurityException) { ++ System.out.println("test succeeded"); ++ } else { ++ throw le; ++ } + } ++ } finally { ++ Configuration.setConfiguration(previousConf); ++ Thread.currentThread().setContextClassLoader(previousCL); + } + } + } --- jdk/test/javax/swing/AncestorNotifier/7193219/bug7193219.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/javax/swing/AncestorNotifier/7193219/bug7193219.java 2013-01-16 08:58:13.000000000 -0800 -@@ -0,0 +1,83 @@ ++++ jdk/test/javax/swing/AncestorNotifier/7193219/bug7193219.java 2013-05-05 09:38:48.000000000 -0700 +@@ -0,0 +1,85 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -79769,6 +91252,7 @@ +import java.io.*; + +import javax.swing.*; ++import javax.swing.plaf.metal.*; + +public class bug7193219 { + private static byte[] serializeGUI() { @@ -79812,6 +91296,7 @@ + } + + public static void main(String[] args) throws Exception { ++ UIManager.setLookAndFeel(new MetalLookAndFeel()); + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { @@ -79820,6 +91305,176 @@ + }); + } +} +--- jdk/test/javax/swing/JColorChooser/Test6827032.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/javax/swing/JColorChooser/Test6827032.java 2013-05-05 09:38:48.000000000 -0700 +@@ -0,0 +1,86 @@ ++/* ++ * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. ++ * 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 6827032 ++ * @summary Color chooser with drag enabled shouldn't throw NPE ++ * @author Peter Zhelezniakov ++ * @library ../regtesthelpers ++ */ ++ ++import sun.awt.SunToolkit; ++ ++import java.awt.*; ++import java.awt.event.*; ++ ++import javax.swing.*; ++import javax.swing.plaf.nimbus.NimbusLookAndFeel; ++ ++ ++public class Test6827032 { ++ ++ private static volatile Point point; ++ private static JColorChooser cc; ++ ++ public static void main(String[] args) throws Exception { ++ UIManager.setLookAndFeel(new NimbusLookAndFeel()); ++ ++ Robot robot = new Robot(); ++ robot.setAutoDelay(50); ++ ++ SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); ++ ++ SwingUtilities.invokeAndWait(new Runnable() { ++ public void run() { ++ createAndShowGUI(); ++ } ++ }); ++ ++ toolkit.realSync(); ++ ++ SwingUtilities.invokeAndWait(new Runnable() { ++ public void run() { ++ Component previewPanel = Util.findSubComponent(cc, "javax.swing.colorchooser.DefaultPreviewPanel"); ++ point = previewPanel.getLocationOnScreen(); ++ } ++ }); ++ ++ point.translate(5, 5); ++ ++ robot.mouseMove(point.x, point.y); ++ robot.mousePress(InputEvent.BUTTON1_MASK); ++ robot.mouseRelease(InputEvent.BUTTON1_MASK); ++ } ++ ++ ++ private static void createAndShowGUI() { ++ JFrame frame = new JFrame(Test6827032.class.getName()); ++ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ++ cc = new JColorChooser(); ++ cc.setDragEnabled(true); ++ frame.add(cc); ++ frame.pack(); ++ frame.setVisible(true); ++ } ++} +--- jdk/test/javax/swing/JComboBox/ShowPopupAfterHidePopupTest/ShowPopupAfterHidePopupTest.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/javax/swing/JComboBox/ShowPopupAfterHidePopupTest/ShowPopupAfterHidePopupTest.java 2013-05-05 09:38:48.000000000 -0700 +@@ -0,0 +1,78 @@ ++/* ++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * 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 8006417 ++ @summary JComboBox.showPopup(), hidePopup() fails in JRE 1.7 on OS X ++ @author Anton Litvinov ++*/ ++ ++import java.awt.*; ++ ++import javax.swing.*; ++import javax.swing.plaf.metal.*; ++ ++import sun.awt.SunToolkit; ++ ++public class ShowPopupAfterHidePopupTest { ++ private static JFrame frame = null; ++ private static JComboBox comboBox = null; ++ private static boolean popupIsVisible = false; ++ ++ public static void main(String[] args) throws Exception { ++ UIManager.setLookAndFeel(new MetalLookAndFeel()); ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ frame = new JFrame("Popup Menu of JComboBox"); ++ comboBox = new JComboBox(new String[]{"Item1", "Item2", "Item3"}); ++ frame.getContentPane().add(comboBox); ++ frame.pack(); ++ frame.setVisible(true); ++ } ++ }); ++ final SunToolkit toolkit = (SunToolkit)Toolkit.getDefaultToolkit(); ++ toolkit.realSync(); ++ ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ comboBox.showPopup(); ++ comboBox.hidePopup(); ++ comboBox.showPopup(); ++ } ++ }); ++ toolkit.realSync(); ++ ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ popupIsVisible = comboBox.isPopupVisible(); ++ frame.dispose(); ++ } ++ }); ++ if (!popupIsVisible) { ++ throw new RuntimeException("Calling hidePopup() affected the next call to showPopup()."); ++ } ++ } ++} --- jdk/test/javax/swing/JComponent/7154030/bug7154030.java 2012-08-10 10:36:00.000000000 -0700 +++ jdk/test/javax/swing/JComponent/7154030/bug7154030.java 1969-12-31 16:00:00.000000000 -0800 @@ -1,169 +0,0 @@ @@ -79992,8 +91647,292 @@ - } - } -} +--- jdk/test/javax/swing/JFrame/4962534/bug4962534.html 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/javax/swing/JFrame/4962534/bug4962534.html 2013-05-05 09:38:48.000000000 -0700 +@@ -0,0 +1,43 @@ ++<html> ++<!-- ++ Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ 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 4962534 ++ @summary JFrame dances very badly ++ @author dav@sparc.spb.su area= ++ @run applet bug4962534.html ++ --> ++<head> ++<title> </title> ++</head> ++<body> ++ ++<h1>bug4962534<br>Bug ID: 4962534 </h1> ++ ++<p> This is an AUTOMATIC test, simply wait for completion </p> ++ ++<APPLET CODE="bug4962534.class" WIDTH=200 HEIGHT=200></APPLET> ++</body> ++</html> +--- jdk/test/javax/swing/JFrame/4962534/bug4962534.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/javax/swing/JFrame/4962534/bug4962534.java 2013-05-05 09:38:48.000000000 -0700 +@@ -0,0 +1,235 @@ ++/* ++ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ * 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 4962534 7104594 ++ @summary JFrame dances very badly ++ @author dav@sparc.spb.su area= ++ @run applet bug4962534.html ++ */ ++import java.applet.Applet; ++import java.awt.*; ++import java.awt.event.*; ++import java.util.Random; ++import javax.swing.*; ++import sun.awt.SunToolkit; ++ ++public class bug4962534 extends Applet { ++ ++ Robot robot; ++ volatile Point framePosition; ++ volatile Point newFrameLocation; ++ JFrame frame; ++ Rectangle gcBounds; ++ Component titleComponent; ++ JLayeredPane lPane; ++ volatile boolean titleFound = false; ++ SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); ++ public static Object LOCK = new Object(); ++ ++ @Override ++ public void init() { ++ try { ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ createAndShowGUI(); ++ } ++ }); ++ } catch (Exception ex) { ++ throw new RuntimeException("Init failed. " + ex.getMessage()); ++ } ++ }//End init() ++ ++ @Override ++ public void start() { ++ validate(); ++ ++ try { ++ setJLayeredPaneEDT(); ++ setTitleComponentEDT(); ++ } catch (Exception ex) { ++ ex.printStackTrace(); ++ throw new RuntimeException("Test failed. " + ex.getMessage()); ++ } ++ ++ if (!titleFound) { ++ throw new RuntimeException("Test Failed. Unable to determine title's size."); ++ } ++ ++ Random r = new Random(); ++ ++ for (int iteration = 0; iteration < 10; iteration++) { ++ try { ++ setFramePosEDT(); ++ } catch (Exception ex) { ++ ex.printStackTrace(); ++ throw new RuntimeException("Test failed."); ++ } ++ try { ++ robot = new Robot(); ++ robot.setAutoDelay(70); ++ ++ toolkit.realSync(); ++ ++ robot.mouseMove(framePosition.x + getJFrameWidthEDT() / 2, ++ framePosition.y + titleComponent.getHeight() / 2); ++ robot.mousePress(InputEvent.BUTTON1_MASK); ++ ++ toolkit.realSync(); ++ ++ gcBounds = ++ GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getConfigurations()[0].getBounds(); ++ ++ robot.mouseMove(framePosition.x + getJFrameWidthEDT() / 2, ++ framePosition.y + titleComponent.getHeight() / 2); ++ ++ toolkit.realSync(); ++ ++ int multier = gcBounds.height / 2 - 10; //we will not go out the borders ++ for (int i = 0; i < 10; i++) { ++ robot.mouseMove(gcBounds.width / 2 - (int) (r.nextDouble() * multier), gcBounds.height / 2 - (int) (r.nextDouble() * multier)); ++ } ++ robot.mouseRelease(InputEvent.BUTTON1_MASK); ++ ++ toolkit.realSync(); ++ ++ } catch (AWTException e) { ++ throw new RuntimeException("Test Failed. AWTException thrown." + e.getMessage()); ++ } catch (Exception e) { ++ e.printStackTrace(); ++ throw new RuntimeException("Test Failed."); ++ } ++ System.out.println("Mouse lies in " + MouseInfo.getPointerInfo().getLocation()); ++ boolean frameIsOutOfScreen = false; ++ try { ++ setNewFrameLocationEDT(); ++ System.out.println("Now Frame lies in " + newFrameLocation); ++ frameIsOutOfScreen = checkFrameIsOutOfScreenEDT(); ++ } catch (Exception ex) { ++ ex.printStackTrace(); ++ throw new RuntimeException("Test Failed."); ++ } ++ ++ if (frameIsOutOfScreen) { ++ throw new RuntimeException("Test failed. JFrame is out of screen."); ++ } ++ ++ } //for iteration ++ System.out.println("Test passed."); ++ }// start() ++ ++ private void createAndShowGUI() { ++ try { ++ UIManager.setLookAndFeel( ++ "javax.swing.plaf.metal.MetalLookAndFeel"); ++ } catch (Exception ex) { ++ throw new RuntimeException(ex.getMessage()); ++ } ++ JFrame.setDefaultLookAndFeelDecorated(true); ++ frame = new JFrame("JFrame Dance Test"); ++ frame.pack(); ++ frame.setSize(450, 260); ++ frame.setVisible(true); ++ } ++ ++ private void setJLayeredPaneEDT() throws Exception { ++ ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ lPane = frame.getLayeredPane(); ++ System.out.println("JFrame's LayeredPane " + lPane); ++ } ++ }); ++ } ++ ++ private void setTitleComponentEDT() throws Exception { ++ ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ for (int j = 0; j < lPane.getComponentsInLayer(JLayeredPane.FRAME_CONTENT_LAYER.intValue()).length; j++) { ++ titleComponent = lPane.getComponentsInLayer(JLayeredPane.FRAME_CONTENT_LAYER.intValue())[j]; ++ if (titleComponent.getClass().getName().equals("javax.swing.plaf.metal.MetalTitlePane")) { ++ titleFound = true; ++ break; ++ } ++ } ++ } ++ }); ++ } ++ ++ private void setFramePosEDT() throws Exception { ++ ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ framePosition = frame.getLocationOnScreen(); ++ } ++ }); ++ } ++ ++ private boolean checkFrameIsOutOfScreenEDT() throws Exception { ++ ++ final boolean[] result = new boolean[1]; ++ ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ if (newFrameLocation.x > gcBounds.width || newFrameLocation.x < 0 ++ || newFrameLocation.y > gcBounds.height || newFrameLocation.y ++ < 0) { ++ result[0] = true; ++ } ++ } ++ }); ++ return result[0]; ++ } ++ ++ private void setNewFrameLocationEDT() throws Exception { ++ ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ newFrameLocation = new Point(frame.getLocationOnScreen().x ++ + frame.getWidth() / 2, frame.getLocationOnScreen().y + titleComponent.getHeight() / 2); ++ } ++ }); ++ } ++ ++ private int getJFrameWidthEDT() throws Exception { ++ ++ final int[] result = new int[1]; ++ ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ result[0] = frame.getWidth(); ++ } ++ }); ++ ++ return result[0]; ++ } ++}// class --- jdk/test/javax/swing/JMenuItem/ActionListenerCalledTwice/ActionListenerCalledTwiceTest.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/javax/swing/JMenuItem/ActionListenerCalledTwice/ActionListenerCalledTwiceTest.java 2013-01-16 08:58:13.000000000 -0800 ++++ jdk/test/javax/swing/JMenuItem/ActionListenerCalledTwice/ActionListenerCalledTwiceTest.java 2013-05-05 09:38:48.000000000 -0700 @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -80079,7 +92018,7 @@ + } +} --- jdk/test/javax/swing/JMenuItem/ShortcutNotDiplayed/ShortcutNotDisplayedTest.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/javax/swing/JMenuItem/ShortcutNotDiplayed/ShortcutNotDisplayedTest.java 2013-01-16 08:58:13.000000000 -0800 ++++ jdk/test/javax/swing/JMenuItem/ShortcutNotDiplayed/ShortcutNotDisplayedTest.java 2013-05-05 09:38:48.000000000 -0700 @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -80186,6 +92125,92 @@ + testFrame.setVisible(true); + } +} +--- jdk/test/javax/swing/JSlider/4252173/bug4252173.java 2012-08-10 10:36:08.000000000 -0700 ++++ jdk/test/javax/swing/JSlider/4252173/bug4252173.java 2013-05-05 09:38:48.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -22,11 +22,11 @@ + */ + + /* @test +- @bug 4252173 +- @summary Inability to reuse the HorizontalSliderThumbIcon +- @author Pavel Porvatov +- @run main bug4252173 +-*/ ++ * @bug 4252173 7077259 ++ * @summary Inability to reuse the HorizontalSliderThumbIcon ++ * @author Pavel Porvatov ++ * @run main/othervm -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel bug4252173 ++ */ + + import javax.swing.*; + import javax.swing.plaf.metal.DefaultMetalTheme; +--- jdk/test/javax/swing/JSpinner/6532833/bug6532833.java 2012-08-10 10:36:10.000000000 -0700 ++++ jdk/test/javax/swing/JSpinner/6532833/bug6532833.java 2013-05-05 09:38:48.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -22,10 +22,11 @@ + */ + + /* @test +- @bug 6532833 +- @summary PIT: Metal LAF - The right side border is not shown for the Spinner after the removing the buttons +- @author Pavel Porvatov +-*/ ++ * @bug 6532833 7077259 ++ * @summary PIT: Metal LAF - The right side border is not shown for the Spinner after the removing the buttons ++ * @author Pavel Porvatov ++ * @run main/othervm -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel bug6532833 ++ */ + + import javax.swing.*; + import java.awt.*; +--- jdk/test/javax/swing/plaf/metal/MetalSliderUI/Test6657026.java 2012-08-10 10:36:14.000000000 -0700 ++++ jdk/test/javax/swing/plaf/metal/MetalSliderUI/Test6657026.java 2013-05-05 09:38:48.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,22 +23,21 @@ + + /* + * @test +- * @bug 6657026 ++ * @bug 6657026 7077259 + * @summary Tests shared MetalSliderUI in different application contexts + * @author Sergey Malenkov ++ * @run main/othervm -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel Test6657026 + */ + +-import sun.awt.SunToolkit; +- + import javax.swing.JSlider; + import javax.swing.UIManager; + import javax.swing.plaf.metal.MetalLookAndFeel; + import javax.swing.plaf.metal.MetalSliderUI; ++import sun.awt.SunToolkit; + + public class Test6657026 extends MetalSliderUI implements Runnable { + + public static void main(String[] args) throws Exception { +- UIManager.setLookAndFeel(new MetalLookAndFeel()); + JSlider slider = new JSlider(); + test(slider); + --- jdk/test/javax/swing/text/DefaultCaret/6938583/bug6938583.java 2012-08-10 10:36:15.000000000 -0700 +++ jdk/test/javax/swing/text/DefaultCaret/6938583/bug6938583.java 1969-12-31 16:00:00.000000000 -0800 @@ -1,51 +0,0 @@ @@ -80240,8 +92265,190 @@ - }); - } -} +--- jdk/test/javax/swing/text/StyledEditorKit/4506788/bug4506788.html 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/javax/swing/text/StyledEditorKit/4506788/bug4506788.html 2013-05-05 09:38:48.000000000 -0700 +@@ -0,0 +1,28 @@ ++<!-- ++ Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ 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. ++--> ++ ++<Html> ++<Body> ++<APPLET code="bug4506788.class" WIDTH = 600 HEIGHT = 400></APPLET> ++</Body> ++</Html> +--- jdk/test/javax/swing/text/StyledEditorKit/4506788/bug4506788.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/javax/swing/text/StyledEditorKit/4506788/bug4506788.java 2013-05-05 09:38:48.000000000 -0700 +@@ -0,0 +1,131 @@ ++/* ++ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ * 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 4506788 7147408 ++ @summary Tests if cursor gets stuck after insertion a character ++ @author Denis Sharypov ++ @run applet bug4506788.html ++ */ ++import java.awt.*; ++import java.awt.event.*; ++import java.lang.reflect.InvocationTargetException; ++import javax.swing.*; ++import javax.swing.event.*; ++import javax.swing.text.*; ++import sun.awt.SunToolkit; ++ ++public class bug4506788 extends JApplet { ++ ++ private volatile boolean passed = false; ++ private JEditorPane jep; ++ private SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); ++ ++ @Override ++ public void init() { ++ try { ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ createAndShowGUI(); ++ } ++ }); ++ } catch (InterruptedException | InvocationTargetException ex) { ++ ex.printStackTrace(); ++ throw new RuntimeException("FAILED: SwingUtilities.invokeAndWait method failed then creating and showing GUI"); ++ } ++ } ++ ++ @Override ++ public void start() { ++ Robot robot; ++ try { ++ robot = new Robot(); ++ } catch (AWTException e) { ++ throw new RuntimeException("Robot could not be created"); ++ } ++ ++ toolkit.realSync(); ++ ++ Point p; ++ try { ++ p = getJEPLocOnScreen(); ++ } catch (Exception e) { ++ throw new RuntimeException("Could not get JEditorPane location on screen"); ++ } ++ ++ robot.setAutoDelay(50); ++ robot.mouseMove(p.x, p.y); ++ robot.mousePress(InputEvent.BUTTON1_MASK); ++ robot.mouseRelease(InputEvent.BUTTON1_MASK); ++ robot.keyPress(KeyEvent.VK_RIGHT); ++ robot.keyRelease(KeyEvent.VK_RIGHT); ++ robot.keyPress(KeyEvent.VK_X); ++ robot.keyRelease(KeyEvent.VK_X); ++ robot.keyPress(KeyEvent.VK_RIGHT); ++ robot.keyRelease(KeyEvent.VK_RIGHT); ++ ++ toolkit.realSync(); ++ ++ if (!passed) { ++ throw new RuntimeException("Test failed."); ++ } ++ } ++ ++ private Point getJEPLocOnScreen() throws Exception { ++ ++ final Point[] result = new Point[1]; ++ ++ SwingUtilities.invokeAndWait(new Runnable() { ++ @Override ++ public void run() { ++ result[0] = jep.getLocationOnScreen(); ++ } ++ }); ++ ++ return result[0]; ++ } ++ ++ private void createAndShowGUI() { ++ jep = new JEditorPane(); ++ String text = "abc"; ++ JFrame f = new JFrame(); ++ jep.setEditorKit(new StyledEditorKit()); ++ jep.setText(text); ++ jep.addCaretListener(new CaretListener() { ++ @Override ++ public void caretUpdate(CaretEvent e) { ++ passed = (e.getDot() == 3); ++ } ++ }); ++ ++ DefaultStyledDocument doc = (DefaultStyledDocument) jep.getDocument(); ++ MutableAttributeSet atr = new SimpleAttributeSet(); ++ StyleConstants.setBold(atr, true); ++ doc.setCharacterAttributes(1, 1, atr, false); ++ ++ f.getContentPane().add(jep); ++ f.setSize(100, 100); ++ f.setVisible(true); ++ } ++} +--- jdk/test/javax/xml/crypto/dsig/SecurityManager/XMLDSigWithSecMgr.java 2012-08-10 10:36:16.000000000 -0700 ++++ jdk/test/javax/xml/crypto/dsig/SecurityManager/XMLDSigWithSecMgr.java 2013-05-05 09:38:48.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,6 +26,7 @@ + * @bug 6436919 6460930 + * @summary check that XML Signatures can be generated and validated with + * SecurityManager enabled and default policy ++ * @run main/othervm XMLDSigWithSecMgr + * @author Sean Mullan + */ + import java.io.*; --- jdk/test/jprt.config 2012-08-10 10:36:17.000000000 -0700 -+++ jdk/test/jprt.config 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/jprt.config 2013-05-05 09:38:49.000000000 -0700 @@ -71,8 +71,8 @@ # Uses 'uname -s', but only expect SunOS or Linux, assume Windows otherwise. @@ -80310,7 +92517,7 @@ # Export PATH setting PATH="${path4sdk}" --- jdk/test/lib/security/java.policy/Ext_AllPolicy.sh 2012-08-10 10:36:17.000000000 -0700 -+++ jdk/test/lib/security/java.policy/Ext_AllPolicy.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/lib/security/java.policy/Ext_AllPolicy.sh 2013-05-05 09:38:49.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved. @@ -80352,6 +92559,275 @@ ;; * ) echo "Unrecognized system!" +--- jdk/test/sun/java2d/OpenGL/CustomCompositeTest.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/sun/java2d/OpenGL/CustomCompositeTest.java 2013-05-05 09:38:45.000000000 -0700 +@@ -0,0 +1,266 @@ ++/* ++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * 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 7124347 ++ * @summary Verifies that rendering with XOR composite, and arbitraty ++ * custom composite doesn not cause internal errors. ++ * ++ * @run main/othervm -Dsun.java2d.opengl=True CustomCompositeTest ++ */ ++ ++import java.awt.AWTException; ++import java.awt.Color; ++import java.awt.Composite; ++import java.awt.CompositeContext; ++import java.awt.Dimension; ++import java.awt.GradientPaint; ++import java.awt.Graphics; ++import java.awt.Graphics2D; ++import java.awt.GraphicsConfiguration; ++import java.awt.GraphicsEnvironment; ++import java.awt.ImageCapabilities; ++import java.awt.RenderingHints; ++import java.awt.image.BufferedImage; ++import java.awt.image.ColorModel; ++import java.awt.image.DataBufferInt; ++import java.awt.image.Raster; ++import java.awt.image.SinglePixelPackedSampleModel; ++import java.awt.image.VolatileImage; ++import java.awt.image.WritableRaster; ++import java.util.concurrent.CountDownLatch; ++import javax.swing.JComponent; ++import javax.swing.JFrame; ++import javax.swing.SwingUtilities; ++ ++public class CustomCompositeTest { ++ ++ private static JFrame frame; ++ private static CountDownLatch paintLatch; ++ private static Throwable paintError; ++ ++ public static void main(String[] args) { ++ ++ paintLatch = new CountDownLatch(1); ++ paintError = null; ++ ++ SwingUtilities.invokeLater(new Runnable() { ++ public void run() { ++ initGUI(); ++ } ++ }); ++ ++ try { ++ paintLatch.await(); ++ } catch (InterruptedException e) { ++ }; ++ System.out.println("Paint is done!"); ++ if (paintError != null) { ++ frame.dispose(); ++ throw new RuntimeException("Test FAILED.", paintError); ++ } ++ ++ System.out.println("Phase 1: PASSED."); ++ ++ // now resise the frame in order to cause re-paint with accelerated ++ // source images. ++ paintError = null; ++ paintLatch = new CountDownLatch(1); ++ ++ SwingUtilities.invokeLater(new Runnable() { ++ @Override ++ public void run() { ++ Dimension size = frame.getSize(); ++ size.width += 50; ++ size.height += 50; ++ ++ frame.setSize(size); ++ } ++ }); ++ ++ try { ++ paintLatch.await(); ++ } catch (InterruptedException e) { ++ }; ++ if (paintError != null) { ++ frame.dispose(); ++ throw new RuntimeException("Resize test FAILED.", paintError); ++ } ++ frame.dispose(); ++ System.out.println("Phase 2: PASSED."); ++ ++ GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); ++ GraphicsConfiguration cfg = env.getDefaultScreenDevice().getDefaultConfiguration(); ++ // test rendering to accelerated volatile image ++ testVolatileImage(cfg, true); ++ System.out.println("Phase 3: PASSED."); ++ ++ // test rendering to unaccelerated volatile image ++ testVolatileImage(cfg, false); ++ System.out.println("Phase 4: PASSED."); ++ } ++ ++ private static void testVolatileImage(GraphicsConfiguration cfg, ++ boolean accelerated) ++ { ++ VolatileImage dst = null; ++ try { ++ dst = cfg.createCompatibleVolatileImage(640, 480, ++ new ImageCapabilities(accelerated)); ++ } catch (AWTException e) { ++ System.out.println("Unable to create volatile image, skip the test."); ++ return; ++ } ++ renderToVolatileImage(dst); ++ } ++ ++ private static void renderToVolatileImage(VolatileImage dst) { ++ Graphics2D g = dst.createGraphics(); ++ do { ++ System.out.println("Render to volatile image.."); ++ try { ++ MyComp.renderTest(g, dst.getHeight(), dst.getHeight()); ++ } catch (Throwable e) { ++ throw new RuntimeException("Test FAILED.", e); ++ } ++ } while (dst.contentsLost()); ++ System.out.println("Done."); ++ } ++ ++ private static void initGUI() { ++ frame = new JFrame("Silly composite"); ++ frame.getContentPane().add(new MyComp()); ++ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ++ frame.pack(); ++ frame.setVisible(true); ++ } ++ ++ private static class MyComp extends JComponent { ++ ++ private static BufferedImage theImage; ++ ++ public MyComp() { ++ } ++ ++ private static BufferedImage getTestImage() { ++ if (theImage == null) { ++ theImage = new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB); ++ Graphics2D g2d = theImage.createGraphics(); ++ g2d.setColor(Color.red); ++ g2d.fillRect(0, 0, 256, 256); ++ ++ g2d.setPaint(new GradientPaint(0, 0, Color.red, 256, 256, Color.blue)); ++ g2d.fillRect(0, 100, 256, 256); ++ g2d.dispose(); ++ } ++ return theImage; ++ } ++ ++ public Dimension getPreferredSize() { ++ return new Dimension(640, 375); ++ } ++ ++ public void paintComponent(Graphics g) { ++ ++ ++ Graphics2D g2d = (Graphics2D) g; ++ try { ++ renderTest(g2d, getWidth(), getHeight()); ++ } catch (Throwable e) { ++ paintError = e; ++ } ++ if (paintLatch != null) { ++ paintLatch.countDown(); ++ } ++ } ++ ++ public static void renderTest(Graphics2D g2d, int w, int h) { ++ g2d.setColor(Color.yellow); ++ g2d.fillRect(0, 0, w, h); ++ ++ BufferedImage image = getTestImage(); ++ // draw original image ++ g2d.drawRenderedImage(image, null); ++ ++ // draw image with custom composite ++ g2d.translate(175, 25); ++ Composite currentComposite = g2d.getComposite(); ++ g2d.setComposite(new TestComposite()); ++ g2d.drawRenderedImage(image, null); ++ g2d.setComposite(currentComposite); ++ ++ // draw image with XOR ++ g2d.translate(175, 25); ++ g2d.setXORMode(Color.red); ++ g2d.drawRenderedImage(image, null); ++ ++ ++ System.out.println("Painting is done..."); ++ } ++ } ++ ++ // A silly custom Composite to demonstrate the problem - just inverts the RGB ++ private static class TestComposite implements Composite { ++ ++ public CompositeContext createContext(ColorModel srcColorModel, ColorModel dstColorModel, RenderingHints hints) { ++ return new TestCompositeContext(); ++ } ++ } ++ ++ private static class TestCompositeContext implements CompositeContext { ++ ++ public void dispose() { ++ } ++ ++ public void compose(Raster src, Raster dstIn, WritableRaster dstOut) { ++ int w = src.getWidth(); ++ int h = src.getHeight(); ++ ++ DataBufferInt srcDB = (DataBufferInt) src.getDataBuffer(); ++ DataBufferInt dstOutDB = (DataBufferInt) dstOut.getDataBuffer(); ++ int srcRGB[] = srcDB.getBankData()[0]; ++ int dstOutRGB[] = dstOutDB.getBankData()[0]; ++ int srcOffset = srcDB.getOffset(); ++ int dstOutOffset = dstOutDB.getOffset(); ++ int srcScanStride = ((SinglePixelPackedSampleModel) src.getSampleModel()).getScanlineStride(); ++ int dstOutScanStride = ((SinglePixelPackedSampleModel) dstOut.getSampleModel()).getScanlineStride(); ++ int srcAdjust = srcScanStride - w; ++ int dstOutAdjust = dstOutScanStride - w; ++ ++ int si = srcOffset; ++ int doi = dstOutOffset; ++ ++ for (int i = 0; i < h; i++) { ++ for (int j = 0; j < w; j++) { ++ dstOutRGB[doi] = srcRGB[si] ^ 0x00ffffff; ++ si++; ++ doi++; ++ } ++ ++ si += srcAdjust; ++ doi += dstOutAdjust; ++ } ++ } ++ } ++} --- jdk/test/sun/java2d/OpenGL/bug7181438.java 2012-08-10 10:36:19.000000000 -0700 +++ jdk/test/sun/java2d/OpenGL/bug7181438.java 1969-12-31 16:00:00.000000000 -0800 @@ -1,83 +0,0 @@ @@ -80439,7 +92915,7 @@ - } -} --- jdk/test/sun/management/jmxremote/bootstrap/CustomLauncherTest.sh 2012-08-10 10:36:21.000000000 -0700 -+++ jdk/test/sun/management/jmxremote/bootstrap/CustomLauncherTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/management/jmxremote/bootstrap/CustomLauncherTest.sh 2013-05-05 09:38:45.000000000 -0700 @@ -45,37 +45,53 @@ # has to locate libjvm.so. Also $! is not reliable on some releases of MKS. #{ @@ -80520,7 +92996,7 @@ # --- jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh 2012-08-10 10:36:21.000000000 -0700 -+++ jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh 2013-05-05 09:38:45.000000000 -0700 @@ -35,7 +35,7 @@ UMASK=`umask` @@ -80531,7 +93007,7 @@ FILESEP="/" DFILESEP=$FILESEP --- jdk/test/sun/management/jmxremote/bootstrap/LocalManagementTest.sh 2012-08-10 10:36:21.000000000 -0700 -+++ jdk/test/sun/management/jmxremote/bootstrap/LocalManagementTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/management/jmxremote/bootstrap/LocalManagementTest.sh 2013-05-05 09:38:45.000000000 -0700 @@ -86,10 +86,12 @@ # on Windows 98. @@ -80550,7 +93026,7 @@ JAVA=${TESTJAVA}/bin/java CLASSPATH=${TESTCLASSES} --- jdk/test/sun/management/jmxremote/bootstrap/PasswordFilePermissionTest.sh 2012-08-10 10:36:21.000000000 -0700 -+++ jdk/test/sun/management/jmxremote/bootstrap/PasswordFilePermissionTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/management/jmxremote/bootstrap/PasswordFilePermissionTest.sh 2013-05-05 09:38:45.000000000 -0700 @@ -70,10 +70,12 @@ # security the password file. @@ -80569,7 +93045,7 @@ # Create configuration file and dummy password file --- jdk/test/sun/management/jmxremote/bootstrap/SSLConfigFilePermissionTest.sh 2012-08-10 10:36:22.000000000 -0700 -+++ jdk/test/sun/management/jmxremote/bootstrap/SSLConfigFilePermissionTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/management/jmxremote/bootstrap/SSLConfigFilePermissionTest.sh 2013-05-05 09:38:45.000000000 -0700 @@ -69,10 +69,12 @@ # security the password file. @@ -80588,7 +93064,7 @@ # Create management and SSL configuration files --- jdk/test/sun/misc/URLClassPath/ClassnameCharTest.sh 2012-08-10 10:36:24.000000000 -0700 -+++ jdk/test/sun/misc/URLClassPath/ClassnameCharTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/misc/URLClassPath/ClassnameCharTest.sh 2013-05-05 09:38:45.000000000 -0700 @@ -36,7 +36,7 @@ OS=`uname -s` @@ -80598,8 +93074,163 @@ PS=":" FS="/" ;; +--- jdk/test/sun/misc/Version/Version.java 2012-08-10 10:36:25.000000000 -0700 ++++ jdk/test/sun/misc/Version/Version.java 2013-05-05 09:38:45.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,11 +29,13 @@ + * @run main Version + */ + ++import java.util.regex.*; + import static sun.misc.Version.*; ++ + public class Version { + + public static void main(String[] args) throws Exception { +- VersionInfo jdk = newVersionInfo(System.getProperty("java.runtime.version")); ++ VersionInfo jdk = jdkVersionInfo(System.getProperty("java.runtime.version")); + VersionInfo v1 = new VersionInfo(jdkMajorVersion(), + jdkMinorVersion(), + jdkMicroVersion(), +@@ -44,7 +46,7 @@ + if (!jdk.equals(v1)) { + throw new RuntimeException("Unmatched version: " + jdk + " vs " + v1); + } +- VersionInfo jvm = newVersionInfo(System.getProperty("java.vm.version")); ++ VersionInfo jvm = jvmVersionInfo(System.getProperty("java.vm.version")); + VersionInfo v2 = new VersionInfo(jvmMajorVersion(), + jvmMinorVersion(), + jvmMicroVersion(), +@@ -95,68 +97,68 @@ + } + } + +- private static VersionInfo newVersionInfo(String version) throws Exception { ++ private static VersionInfo jdkVersionInfo(String version) throws Exception { + // valid format of the version string is: +- // n.n.n[_uu[c]][-<identifer>]-bxx ++ // <major>.<minor>[.<micro>][_uu[c]][-<identifier>]-bxx + int major = 0; + int minor = 0; + int micro = 0; + int update = 0; + String special = ""; + int build = 0; +- CharSequence cs = version; +- if (cs.length() >= 5) { +- if (Character.isDigit(cs.charAt(0)) && cs.charAt(1) == '.' && +- Character.isDigit(cs.charAt(2)) && cs.charAt(3) == '.' && +- Character.isDigit(cs.charAt(4))) { +- major = Character.digit(cs.charAt(0), 10); +- minor = Character.digit(cs.charAt(2), 10); +- micro = Character.digit(cs.charAt(4), 10); +- cs = cs.subSequence(5, cs.length()); +- } else if (Character.isDigit(cs.charAt(0)) && +- Character.isDigit(cs.charAt(1)) && cs.charAt(2) == '.' && +- Character.isDigit(cs.charAt(3))) { +- // HSX has nn.n (major.minor) version +- major = Integer.valueOf(version.substring(0, 2)).intValue(); +- minor = Character.digit(cs.charAt(3), 10); +- cs = cs.subSequence(4, cs.length()); +- } +- if (cs.charAt(0) == '_' && cs.length() >= 3 && +- Character.isDigit(cs.charAt(1)) && +- Character.isDigit(cs.charAt(2))) { +- int nextChar = 3; +- String uu = cs.subSequence(1, 3).toString(); +- update = Integer.valueOf(uu).intValue(); +- if (cs.length() >= 4) { +- char c = cs.charAt(3); +- if (c >= 'a' && c <= 'z') { +- special = Character.toString(c); +- nextChar++; +- } +- } +- cs = cs.subSequence(nextChar, cs.length()); +- } +- if (cs.charAt(0) == '-') { +- // skip the first character +- // valid format: <identifier>-bxx or bxx +- // non-product VM will have -debug|-release appended +- cs = cs.subSequence(1, cs.length()); +- String[] res = cs.toString().split("-"); +- for (int i = res.length - 1; i >= 0; i--) { +- String s = res[i]; +- if (s.charAt(0) == 'b') { +- try { +- build = Integer.parseInt(s.substring(1, s.length())); +- break; +- } catch (NumberFormatException nfe) { +- // ignore +- } +- } +- } +- } +- } ++ ++ String regex = "^([0-9]{1,2})"; // major ++ regex += "\\."; // separator ++ regex += "([0-9]{1,2})"; // minor ++ regex += "(\\."; // separator ++ regex += "([0-9]{1,2})"; // micro ++ regex += ")?"; // micro is optional ++ regex += "(_"; ++ regex += "([0-9]{2})"; // update ++ regex += "([a-z])?"; // special char (optional) ++ regex += ")?"; // _uu[c] is optional ++ regex += ".*"; // -<identifier> ++ regex += "(\\-b([0-9]{1,3}$))"; // JDK -bxx ++ ++ Pattern p = Pattern.compile(regex); ++ Matcher m = p.matcher(version); ++ m.matches(); ++ ++ major = Integer.parseInt(m.group(1)); ++ minor = Integer.parseInt(m.group(2)); ++ micro = (m.group(4) == null) ? 0 : Integer.parseInt(m.group(4)); ++ update = (m.group(6) == null) ? 0 : Integer.parseInt(m.group(6)); ++ special = (m.group(7) == null) ? "" : m.group(7); ++ build = Integer.parseInt(m.group(9)); ++ + VersionInfo vi = new VersionInfo(major, minor, micro, update, special, build); + System.out.printf("newVersionInfo: input=%s output=%s\n", version, vi); + return vi; + } ++ ++ private static VersionInfo jvmVersionInfo(String version) throws Exception { ++ // valid format of the version string is: ++ // <major>.<minor>-bxx[-<identifier>][-<debug_flavor>] ++ int major = 0; ++ int minor = 0; ++ int build = 0; ++ ++ String regex = "^([0-9]{1,2})"; // major ++ regex += "\\."; // separator ++ regex += "([0-9]{1,2})"; // minor ++ regex += "(\\-b([0-9]{1,3}))"; // JVM -bxx ++ regex += ".*"; ++ ++ Pattern p = Pattern.compile(regex); ++ Matcher m = p.matcher(version); ++ m.matches(); ++ ++ major = Integer.parseInt(m.group(1)); ++ minor = Integer.parseInt(m.group(2)); ++ build = Integer.parseInt(m.group(4)); ++ ++ VersionInfo vi = new VersionInfo(major, minor, 0, 0, "", build); ++ System.out.printf("newVersionInfo: input=%s output=%s\n", version, vi); ++ return vi; ++ } + } --- jdk/test/sun/net/www/MarkResetTest.sh 2012-08-10 10:36:27.000000000 -0700 -+++ jdk/test/sun/net/www/MarkResetTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/net/www/MarkResetTest.sh 2013-05-05 09:38:45.000000000 -0700 @@ -28,7 +28,7 @@ OS=`uname -s` @@ -80610,7 +93241,7 @@ FS="/" ;; --- jdk/test/sun/net/www/http/HttpClient/RetryPost.sh 2012-08-10 10:36:28.000000000 -0700 -+++ jdk/test/sun/net/www/http/HttpClient/RetryPost.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/net/www/http/HttpClient/RetryPost.sh 2013-05-05 09:38:45.000000000 -0700 @@ -28,7 +28,7 @@ OS=`uname -s` @@ -80621,7 +93252,7 @@ FS="/" ;; --- jdk/test/sun/net/www/messageheader/HTest.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/sun/net/www/messageheader/HTest.java 2013-01-16 08:58:13.000000000 -0800 ++++ jdk/test/sun/net/www/messageheader/HTest.java 2013-05-05 09:38:45.000000000 -0700 @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -80696,8 +93327,188 @@ + false, false, true, true, true, false, false + }; +} +--- jdk/test/sun/net/www/protocol/http/StackTraceTest.java 2012-08-10 10:36:29.000000000 -0700 ++++ jdk/test/sun/net/www/protocol/http/StackTraceTest.java 2013-05-05 09:38:45.000000000 -0700 +@@ -32,26 +32,28 @@ + import java.io.IOException; + + public class StackTraceTest { +- public static void main(String[] args) { ++ public static void main(String[] args) throws Exception { ++ URL url; ++ try (ServerSocket ss = new ServerSocket(0)) { // refusing socket ++ url = new URL("http://localhost:" + ss.getLocalPort() + "/"); ++ } ++ URLConnection uc = url.openConnection(); ++ ++ // Trigger implicit connection by trying to retrieve bogus ++ // response header, and force remembered exception ++ uc.getHeaderFieldKey(20); ++ + try { +- URL url = new URL("http://localhost:8080/"); +- URLConnection uc = url.openConnection(); +- System.out.println("key = "+uc.getHeaderFieldKey(20)); +- uc.getInputStream(); ++ uc.getInputStream(); // expect to throw ++ throw new RuntimeException("Expected getInputStream to throw"); + } catch (IOException ioe) { +- ioe.printStackTrace(); +- +- if (!(ioe instanceof ConnectException)) { +- throw new RuntimeException("Expect ConnectException, got "+ioe); +- } +- if (ioe.getMessage() == null) { ++ if (!(ioe instanceof ConnectException)) ++ throw new RuntimeException("Expect ConnectException, got " + ioe); ++ if (ioe.getMessage() == null) + throw new RuntimeException("Exception message is null"); +- } +- +- // this exception should be a chained exception +- if (ioe.getCause() == null) { +- throw new RuntimeException("Excepting a chained exception, but got: ", ioe); +- } ++ if (ioe.getCause() == null) ++ throw new RuntimeException("Excepting a chained exception, but got: ", ++ ioe); + } + } + } +--- jdk/test/sun/net/www/protocol/jar/B4957695.java 2012-08-10 10:36:29.000000000 -0700 ++++ jdk/test/sun/net/www/protocol/jar/B4957695.java 2013-05-05 09:38:45.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,6 @@ + /** + * @test + * @bug 4957695 +- * @library ../../httptest/ +- * @build HttpCallback HttpServer ClosedChannelList HttpTransaction AbstractCallback + * @summary URLJarFile.retrieve does not delete tmpFile on IOException + */ + +@@ -34,43 +32,73 @@ + + public class B4957695 { + +- static int count = 0; +- static boolean error = false; ++ static Server server; + +- static void read (InputStream is) throws IOException { +- int c,len=0; +- while ((c=is.read()) != -1) { +- len += c; ++ static class Server extends Thread { ++ final ServerSocket srv; ++ static final byte[] requestEnd = new byte[] {'\r', '\n', '\r', '\n'}; ++ ++ Server(ServerSocket s) { ++ srv = s; ++ } ++ ++ void readOneRequest(InputStream is) throws IOException { ++ int requestEndCount = 0, r; ++ while ((r = is.read()) != -1) { ++ if (r == requestEnd[requestEndCount]) { ++ requestEndCount++; ++ if (requestEndCount == 4) { ++ break; ++ } ++ } else { ++ requestEndCount = 0; ++ } ++ } + } +- System.out.println ("read " + len + " bytes"); +- } + +- static class CallBack extends AbstractCallback { +- +- public void request (HttpTransaction req, int count) { +- try { +- System.out.println ("Request received"); +- req.setResponseEntityBody (new FileInputStream ("foo1.jar")); +- System.out.println ("content length " + req.getResponseHeader ( +- "Content-length" +- )); +- req.sendPartialResponse (200, "Ok"); +- req.abortiveClose(); ++ public void run() { ++ try (Socket s = srv.accept()) { ++ // read HTTP request from client ++ readOneRequest(s.getInputStream()); ++ try (OutputStreamWriter ow = ++ new OutputStreamWriter((s.getOutputStream()))) { ++ FileInputStream fin = new FileInputStream(new File( ++ System.getProperty("test.src", "."), "foo1.jar")); ++ int length = fin.available(); ++ byte[] b = new byte[length-10]; ++ fin.read(b, 0, length-10); ++ ow.write("HTTP/1.0 200 OK\r\n"); ++ ++ // Note: The client expects length bytes. ++ ow.write("Content-Length: " + length + "\r\n"); ++ ow.write("Content-Type: text/html\r\n"); ++ ow.write("\r\n"); ++ ++ // Note: The (buggy) server only sends length-10 bytes. ++ ow.write(new String(b)); ++ ow.flush(); ++ } + } catch (IOException e) { + e.printStackTrace(); + } + } ++ } + +- }; +- +- static HttpServer server; ++ static void read (InputStream is) throws IOException { ++ int c,len=0; ++ while ((c=is.read()) != -1) { ++ len += c; ++ } ++ System.out.println ("read " + len + " bytes"); ++ } + + public static void main (String[] args) throws Exception { + String tmpdir = System.getProperty("java.io.tmpdir"); + String[] list1 = listTmpFiles(tmpdir); +- //server = new HttpServer (new CallBack(), 10, 1, 0); +- server = new HttpServer (new CallBack(), 1, 5, 0); +- int port = server.getLocalPort(); ++ ServerSocket serverSocket = new ServerSocket(0); ++ server = new Server(serverSocket); ++ server.start(); ++ int port = serverSocket.getLocalPort(); + System.out.println ("Server: listening on port: " + port); + URL url = new URL ("jar:http://localhost:"+port+"!/COPYRIGHT"); + try { +@@ -81,14 +109,12 @@ + } catch (IOException e) { + System.out.println ("Received IOException as expected"); + } +- server.terminate(); + String[] list2 = listTmpFiles(tmpdir); + if (!sameList (list1, list2)) { + throw new RuntimeException ("some jar_cache files left behind"); + } + } + +- + static String[] listTmpFiles (String d) { + File dir = new File (d); + return dir.list (new FilenameFilter () { --- jdk/test/sun/net/www/protocol/jar/B5105410.sh 2012-08-10 10:36:29.000000000 -0700 -+++ jdk/test/sun/net/www/protocol/jar/B5105410.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/net/www/protocol/jar/B5105410.sh 2013-05-05 09:38:45.000000000 -0700 @@ -31,7 +31,7 @@ OS=`uname -s` @@ -80708,7 +93519,7 @@ FS="/" ;; --- jdk/test/sun/net/www/protocol/jar/jarbug/run.sh 2012-08-10 10:36:30.000000000 -0700 -+++ jdk/test/sun/net/www/protocol/jar/jarbug/run.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/net/www/protocol/jar/jarbug/run.sh 2013-05-05 09:38:45.000000000 -0700 @@ -31,7 +31,7 @@ OS=`uname -s` @@ -80719,7 +93530,7 @@ FS="/" ;; --- jdk/test/sun/nio/ch/SelProvider.java 2012-08-10 10:36:30.000000000 -0700 -+++ jdk/test/sun/nio/ch/SelProvider.java 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/nio/ch/SelProvider.java 2013-05-05 09:38:44.000000000 -0700 @@ -39,6 +39,8 @@ expected = "sun.nio.ch.DevPollSelectorProvider"; } else if ("Linux".equals(osname)) { @@ -80729,8 +93540,610 @@ } else if (osname.contains("OS X")) { expected = "sun.nio.ch.KQueueSelectorProvider"; } else +--- jdk/test/sun/rmi/log/ReliableLog/LogAlignmentTest.java 2012-08-10 10:36:35.000000000 -0700 ++++ jdk/test/sun/rmi/log/ReliableLog/LogAlignmentTest.java 2013-05-05 09:38:45.000000000 -0700 +@@ -22,8 +22,10 @@ + */ + + /* @test +- @bug 4094889 +- @summary rmid can have a corrupted log ++ * @bug 4094889 ++ * @summary rmid can have a corrupted log ++ * ++ * @run main LogAlignmentTest + */ + + /* Fault: ReliableLog used RandomAccessFile.skipBytes() to seek past the end +--- jdk/test/sun/rmi/log/ReliableLog/SnapshotSize.java 2012-08-10 10:36:35.000000000 -0700 ++++ jdk/test/sun/rmi/log/ReliableLog/SnapshotSize.java 2013-05-05 09:38:45.000000000 -0700 +@@ -25,6 +25,8 @@ + * @bug 4319866 + * @summary Verify that ReliableLog.snapshotSize() returns correct snapshot + * file size even if LogHandler doesn't flush. ++ * ++ * @run main SnapshotSize + */ + + import java.io.ByteArrayOutputStream; +--- jdk/test/sun/rmi/rmic/RMIGenerator/RmicDefault.java 2012-08-10 10:36:35.000000000 -0700 ++++ jdk/test/sun/rmi/rmic/RMIGenerator/RmicDefault.java 2013-05-05 09:38:45.000000000 -0700 +@@ -28,7 +28,6 @@ + * @library ../../../../java/rmi/testlibrary + * + * @build StreamPipe +- * @build RmicDefault + * @run main RmicDefault + */ + +--- jdk/test/sun/rmi/rmic/newrmic/equivalence/AppleUserImpl.java 2012-08-10 10:36:36.000000000 -0700 ++++ jdk/test/sun/rmi/rmic/newrmic/equivalence/AppleUserImpl.java 2013-05-05 09:38:45.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,6 +25,7 @@ + import java.rmi.Naming; + import java.rmi.server.UnicastRemoteObject; + import java.rmi.registry.LocateRegistry; ++import java.rmi.registry.Registry; + import java.util.Random; + import java.util.ArrayList; + import java.util.Date; +@@ -249,11 +250,12 @@ + } + + synchronized (user) { ++ int port = -1; + // create new registry and bind new AppleUserImpl in registry + try { +- LocateRegistry.createRegistry(1099); //TestLibrary.REGISTRY_PORT); +- Naming.rebind("rmi://localhost:1099/AppleUser",user); +- //TestLibrary.REGISTRY_PORT + "/AppleUser", user); ++ Registry registry = TestLibrary.createRegistryOnUnusedPort(); ++ port = TestLibrary.getRegistryPort(registry); ++ Naming.rebind("rmi://localhost:" + port + "/AppleUser",user); + } catch (RemoteException e) { + //TestLibrary.bomb("Failed to bind AppleUser", e); + } catch (java.net.MalformedURLException e) { +@@ -263,10 +265,9 @@ + // start the other server if available + try { + Class app = Class.forName("ApplicationServer"); +- server = new Thread((Runnable) app.newInstance()); +- logger.log(Level.INFO, "Starting application server " + +- "in same process"); +- server.start(); ++ java.lang.reflect.Constructor appConstructor = ++ app.getDeclaredConstructor(new Class[] {Integer.TYPE}); ++ server = new Thread((Runnable) appConstructor.newInstance(port)); + } catch (ClassNotFoundException e) { + // assume the other server is running in a separate process + logger.log(Level.INFO, "Application server must be " + +--- jdk/test/sun/rmi/rmic/newrmic/equivalence/run.sh 2012-08-10 10:36:36.000000000 -0700 ++++ jdk/test/sun/rmi/rmic/newrmic/equivalence/run.sh 2013-05-05 09:38:45.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,18 +28,22 @@ + # of sample input classes. + # @author Peter Jones + # +-# @build AgentServerImpl +-# @build AppleImpl +-# @build AppleUserImpl +-# @build ComputeServerImpl +-# @build CountServerImpl +-# @build DayTimeServerImpl +-# @build G1Impl +-# @build MyObjectImpl +-# @build NotActivatableServerImpl +-# @build OrangeEchoImpl +-# @build OrangeImpl +-# @build ServerImpl ++# @library ../../../../../java/rmi/testlibrary ++# ++# @build TestLibrary ++# AgentServerImpl ++# AppleImpl ++# AppleUserImpl ++# ComputeServerImpl ++# CountServerImpl ++# DayTimeServerImpl ++# G1Impl ++# MyObjectImpl ++# NotActivatableServerImpl ++# OrangeEchoImpl ++# OrangeImpl ++# ServerImpl ++# + # @run shell run.sh + + if [ "${TESTJAVA}" = "" ] +--- jdk/test/sun/rmi/runtime/Log/4504153/Test4504153.java 2012-08-10 10:36:36.000000000 -0700 ++++ jdk/test/sun/rmi/runtime/Log/4504153/Test4504153.java 2013-05-05 09:38:45.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -48,8 +48,7 @@ + ByteArrayOutputStream err = new ByteArrayOutputStream(); + JavaVM vm = new JavaVM(StartRegistry.class.getName(), + "-Dsun.rmi.transport.logLevel=v", "", out, err); +- vm.start(); +- vm.getVM().waitFor(); ++ vm.execute(); + + String errString = err.toString(); + +--- jdk/test/sun/rmi/runtime/Log/6409194/NoConsoleOutput.java 2012-08-10 10:36:36.000000000 -0700 ++++ jdk/test/sun/rmi/runtime/Log/6409194/NoConsoleOutput.java 2013-05-05 09:38:45.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -31,8 +31,7 @@ + * @author Peter Jones + * + * @library ../../../../../java/rmi/testlibrary +- * @build JavaVM +- * @build NoConsoleOutput ++ * @build TestLibrary JavaVM + * @run main/othervm NoConsoleOutput + */ + +@@ -60,11 +59,13 @@ + File.separatorChar + "logging.properties"; + ByteArrayOutputStream out = new ByteArrayOutputStream(); + ByteArrayOutputStream err = new ByteArrayOutputStream(); ++ ++ // We instantiate a JavaVM that should not produce any console output ++ // (neither on standard output, nor on standard err streams). + JavaVM vm = new JavaVM(DoRMIStuff.class.getName(), + "-Djava.util.logging.config.file=" + loggingPropertiesFile, + "", out, err); +- vm.start(); +- vm.getVM().waitFor(); ++ vm.execute(); + + /* + * Verify that the subprocess had no System.out or System.err +@@ -87,7 +88,6 @@ + } + + public static class DoRMIStuff { +- private static final int PORT = 2020; + private interface Foo extends Remote { + Object echo(Object obj) throws RemoteException; + } +@@ -96,8 +96,9 @@ + public Object echo(Object obj) { return obj; } + } + public static void main(String[] args) throws Exception { +- LocateRegistry.createRegistry(PORT); +- Registry reg = LocateRegistry.getRegistry("", PORT); ++ Registry registry = TestLibrary.createRegistryOnUnusedPort(); ++ int registryPort = TestLibrary.getRegistryPort(registry); ++ Registry reg = LocateRegistry.getRegistry("", registryPort); + FooImpl fooimpl = new FooImpl(); + UnicastRemoteObject.exportObject(fooimpl, 0); + reg.rebind("foo", fooimpl); +--- jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogStreams.java 2012-08-10 10:36:37.000000000 -0700 ++++ jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogStreams.java 2013-05-05 09:38:45.000000000 -0700 +@@ -28,11 +28,7 @@ + * @author Laird Dornin + * + * @library ../../../../../java/rmi/testlibrary +- * @build TestLibrary +- * @build TestParams +- * @build TestFailedException +- * @build CheckLogging +- * @build CheckLogStreams ++ * @build TestLibrary CheckLogging + * @run main/othervm -Dsun.rmi.log.useOld=true CheckLogStreams + */ + +--- jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogging.java 2012-08-10 10:36:37.000000000 -0700 ++++ jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogging.java 2013-05-05 09:38:45.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,9 +29,6 @@ + * + * @library ../../../../../java/rmi/testlibrary + * @build TestLibrary +- * @build TestParams +- * @build TestFailedException +- * @build CheckLogging + * @run main/othervm CheckLogging + */ + +@@ -77,8 +74,9 @@ + * logger output is non-null. + */ + public class CheckLogging { +- private static final String LOCATION = +- "rmi://localhost:" + TestLibrary.REGISTRY_PORT + "/"; ++ private static int REGISTRY_PORT = -1; ++ private static String LOCATION; ++ + private static final ByteArrayOutputStream clientCallOut = + new ByteArrayOutputStream(); + +@@ -100,7 +98,9 @@ + private static Registry registry; + static { + try { +- registry = LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT); ++ registry = TestLibrary.createRegistryOnUnusedPort(); ++ REGISTRY_PORT = TestLibrary.getRegistryPort(registry); ++ LOCATION = "rmi://localhost:" + REGISTRY_PORT + "/"; + } catch (Exception e) { + TestLibrary.bomb("could not create registry"); + } +--- jdk/test/sun/rmi/server/MarshalOutputStream/marshalForeignStub/MarshalForeignStub.java 2012-08-10 10:36:37.000000000 -0700 ++++ jdk/test/sun/rmi/server/MarshalOutputStream/marshalForeignStub/MarshalForeignStub.java 2013-05-05 09:38:45.000000000 -0700 +@@ -31,11 +31,7 @@ + * @author Ann Wollrath + * + * @library ../../../../../java/rmi/testlibrary +- * @build TestLibrary +- * @build TestFailedException +- * @build MarshalForeignStub +- * @build Receiver +- * @build MarshalForeignStub_Stub ++ * @build TestLibrary Receiver MarshalForeignStub_Stub + * @run main/othervm/policy=security.policy MarshalForeignStub + */ + +--- jdk/test/sun/rmi/transport/proxy/EagerHttpFallback.java 2012-08-10 10:36:37.000000000 -0700 ++++ jdk/test/sun/rmi/transport/proxy/EagerHttpFallback.java 2013-05-05 09:38:45.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,6 +25,9 @@ + * @bug 4290727 + * @summary Verify that ConnectException will trigger HTTP fallback if + * sun.rmi.transport.proxy.eagerHttpFallback system property is set. ++ * ++ * @library ../../../../java/rmi/testlibrary ++ * @build TestLibrary + * @run main/othervm EagerHttpFallback + */ + +@@ -33,8 +36,8 @@ + + public class EagerHttpFallback { + +- static final int INITIAL_PORT = 7070; +- static final int FALLBACK_PORT = 7071; ++ static final int INITIAL_PORT = TestLibrary.getUnusedRandomPort(); ++ static final int FALLBACK_PORT = TestLibrary.getUnusedRandomPort(); + + public static void main(String[] args) throws Exception { + System.setProperty("http.proxyHost", "127.0.0.1"); +--- jdk/test/sun/rmi/transport/tcp/DeadCachedConnection.java 2012-08-10 10:36:37.000000000 -0700 ++++ jdk/test/sun/rmi/transport/tcp/DeadCachedConnection.java 2013-05-05 09:38:45.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * 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,9 +25,7 @@ + * @bug 4094891 + * @summary unable to retry call if cached connection to server is used + * @library ../../../../java/rmi/testlibrary +- * @build DeadCachedConnection +- * @build JavaVM +- * @build TestLibrary ++ * @build TestLibrary JavaVM + * @run main/othervm DeadCachedConnection + */ + +@@ -58,7 +56,7 @@ + import java.rmi.server.*; + + public class DeadCachedConnection { +- static public final int regport = 17340; ++ static public final int regport = TestLibrary.getUnusedRandomPort(); + + static public void main(String[] argv) + throws Exception { +@@ -106,7 +104,7 @@ + JavaVM jvm = + new JavaVM("sun.rmi.registry.RegistryImpl", "", Integer.toString(p)); + jvm.start(); +- DeadCachedConnection.subreg = jvm.getVM(); ++ DeadCachedConnection.subreg = jvm; + + } catch (IOException e) { + // one of these is summarily dropped, can't remember which one +@@ -119,7 +117,7 @@ + } catch (Exception whatever) { + } + } +- private static Process subreg = null; ++ private static JavaVM subreg = null; + + public static void killRegistry() { + if (DeadCachedConnection.subreg != null) { +--- jdk/test/sun/rmi/transport/tcp/blockAccept/BlockAcceptTest.java 2012-08-10 10:36:37.000000000 -0700 ++++ jdk/test/sun/rmi/transport/tcp/blockAccept/BlockAcceptTest.java 2013-05-05 09:38:45.000000000 -0700 +@@ -27,11 +27,8 @@ + * @summary RMI blocks in HttpAwareServerSocket.accept() if you telnet to it + * @author Adrian Colley + * +- * @library ../../../../../java/rmi/testlibrary/ +- * @build TestIface +- * @build TestImpl +- * @build TestImpl_Stub +- * @build BlockAcceptTest ++ * @library ../../../../../java/rmi/testlibrary ++ * @build TestIface TestImpl TestImpl_Stub + * @run main/othervm/policy=security.policy/timeout=60 BlockAcceptTest + */ + +--- jdk/test/sun/rmi/transport/tcp/disableMultiplexing/DisableMultiplexing.java 2012-08-10 10:36:37.000000000 -0700 ++++ jdk/test/sun/rmi/transport/tcp/disableMultiplexing/DisableMultiplexing.java 2013-05-05 09:38:45.000000000 -0700 +@@ -28,7 +28,6 @@ + * on that port, rather than engage in the deprecated "multiplexing protocol". + * @author Peter Jones + * +- * @build DisableMultiplexing + * @build DisableMultiplexing_Stub + * @run main/othervm DisableMultiplexing + */ +--- jdk/test/sun/security/ec/TestEC.java 2012-08-10 10:36:37.000000000 -0700 ++++ jdk/test/sun/security/ec/TestEC.java 2013-05-05 09:38:45.000000000 -0700 +@@ -28,11 +28,13 @@ + * @library ../pkcs11 + * @library ../pkcs11/ec + * @library ../pkcs11/sslecc ++ * @library ../../../java/security/testlibrary + * @compile -XDignore.symbol.file TestEC.java + * @run main TestEC + */ + + import java.security.Provider; ++import java.security.Security; + + /* + * Leverage the collection of EC tests used by PKCS11 +@@ -51,6 +53,15 @@ + public class TestEC { + + public static void main(String[] args) throws Exception { ++ ProvidersSnapshot snapshot = ProvidersSnapshot.create(); ++ try { ++ main0(args); ++ } finally { ++ snapshot.restore(); ++ } ++ } ++ ++ public static void main0(String[] args) throws Exception { + Provider p = new sun.security.ec.SunEC(); + System.out.println("Running tests with " + p.getName() + + " provider...\n"); +@@ -67,6 +78,11 @@ + new TestECGenSpec().main(p); + new ReadPKCS12().main(p); + new ReadCertificates().main(p); ++ ++ // ClientJSSEServerJSSE fails on Solaris 11 when both SunEC and ++ // SunPKCS11-Solaris providers are enabled. ++ // Workaround: ++ // Security.removeProvider("SunPKCS11-Solaris"); + new ClientJSSEServerJSSE().main(p); + + long stop = System.currentTimeMillis(); +--- jdk/test/sun/security/jgss/spnego/NoSpnegoAsDefMech.java 2012-08-10 10:36:37.000000000 -0700 ++++ jdk/test/sun/security/jgss/spnego/NoSpnegoAsDefMech.java 2013-05-05 09:38:45.000000000 -0700 +@@ -36,7 +36,7 @@ + public static void main(String[] argv) throws Exception { + System.setProperty("sun.security.jgss.mechanism", GSSUtil.GSS_SPNEGO_MECH_OID.toString()); + try { +- GSSManager.getInstance().createName("service@host", GSSName.NT_HOSTBASED_SERVICE, new Oid("1.3.6.1.5.5.2")); ++ GSSManager.getInstance().createName("service@localhost", GSSName.NT_HOSTBASED_SERVICE, new Oid("1.3.6.1.5.5.2")); + } catch (GSSException e) { + // This is OK, for example, krb5.conf is missing or other problems + } +--- jdk/test/sun/security/krb5/auto/BadKdc.java 2012-08-10 10:36:38.000000000 -0700 ++++ jdk/test/sun/security/krb5/auto/BadKdc.java 2013-05-05 09:38:45.000000000 -0700 +@@ -67,7 +67,7 @@ + * This is tough. + * c. Feed the KDC a UDP packet first. The current "solution". + */ +- public static void go(int[]... expected) ++ public static void go(String... expected) + throws Exception { + try { + go0(expected); +@@ -83,7 +83,7 @@ + } + } + +- public static void go0(int[]... expected) ++ public static void go0(String... expected) + throws Exception { + System.setProperty("sun.security.krb5.debug", "true"); + +@@ -135,8 +135,9 @@ + return k; + } + +- private static void test(int... expected) throws Exception { ++ private static void test(String expected) throws Exception { + ByteArrayOutputStream bo = new ByteArrayOutputStream(); ++ System.out.println("----------------- TEST -----------------"); + try { + test0(bo, expected); + } catch (Exception e) { +@@ -151,31 +152,34 @@ + * One round of test for max_retries and timeout. + * @param expected the expected kdc# timeout kdc# timeout... + */ +- private static void test0(ByteArrayOutputStream bo, int... expected) ++ private static void test0(ByteArrayOutputStream bo, String expected) + throws Exception { + PrintStream oldout = System.out; ++ boolean failed = false; + System.setOut(new PrintStream(bo)); + try { + Context.fromUserPass(OneKDC.USER, OneKDC.PASS, false); ++ } catch (Exception e) { ++ failed = true; + } finally { + System.setOut(oldout); + } + + String[] lines = new String(bo.toByteArray()).split("\n"); +- System.out.println("----------------- TEST -----------------"); +- int count = 0; ++ StringBuilder sb = new StringBuilder(); + for (String line: lines) { + Matcher m = re.matcher(line); + if (m.find()) { + System.out.println(line); +- if (Integer.parseInt(m.group(1)) != expected[count++] || +- Integer.parseInt(m.group(2)) != expected[count++]) { +- throw new Exception("Fail here"); +- } ++ sb.append(m.group(1)).append(m.group(2)); + } + } +- if (count != expected.length) { +- throw new Exception("Less rounds"); ++ if (failed) sb.append('-'); ++ ++ String output = sb.toString(); ++ System.out.println("Expected: " + expected + ", actual " + output); ++ if (!output.matches(expected)) { ++ throw new Exception("Does not match"); + } + } + } +--- jdk/test/sun/security/krb5/auto/BadKdc1.java 2012-08-10 10:36:38.000000000 -0700 ++++ jdk/test/sun/security/krb5/auto/BadKdc1.java 2013-05-05 09:38:45.000000000 -0700 +@@ -37,16 +37,16 @@ + throws Exception { + Security.setProperty("krb5.kdc.bad.policy", "tryLess"); + BadKdc.go( +- new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,2,2,2,3,2}, // 1, 2 +- // The above line means try kdc1 for 2 seconds, then kdc1 +- // for 2 seconds,..., finally kdc3 for 2 seconds. +- new int[]{1,2,2,2,3,2,1,2,2,2,3,2}, // 1, 2 ++ "121212222222(32){1,2}1222(32){1,2}", // 1 2 ++ // The above line means try kdc1 for 2 seconds then kdc1 ++ // for 2 seconds... finally kdc3 for 2 seconds. ++ "1222(32){1,2}1222(32){1,2}", // 1 2 + // refresh +- new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,2,2,2,3,2}, // 1, 2 +- // k3 off, k2 on +- new int[]{1,2,2,2,1,2,2,2}, // 1 ++ "121212222222(32){1,2}1222(32){1,2}", // 1 2 ++ // k3 off k2 on ++ "(122212(22){1,2}|1222323232-)", // 1 + // k1 on +- new int[]{1,2,1,2} // empty ++ "(12(12){1,2}|122232-)" // empty + ); + } + } +--- jdk/test/sun/security/krb5/auto/BadKdc2.java 2012-08-10 10:36:38.000000000 -0700 ++++ jdk/test/sun/security/krb5/auto/BadKdc2.java 2013-05-05 09:38:45.000000000 -0700 +@@ -37,14 +37,14 @@ + throws Exception { + Security.setProperty("krb5.kdc.bad.policy", "tryLess:2,1000"); + BadKdc.go( +- new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,1,1,1,2,1,2,1,3,2}, // 1, 2 +- new int[]{1,1,1,1,2,1,2,1,3,2,1,1,1,1,2,1,2,1,3,2}, // 1, 2 ++ "121212222222(32){1,2}11112121(32){1,2}", // 1 2 ++ "11112121(32){1,2}11112121(32){1,2}", // 1 2 + // refresh +- new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,1,1,1,2,1,2,1,3,2}, // 1, 2 +- // k3 off, k2 on +- new int[]{1,1,1,1,2,1,1,1,1,1,2,2}, // 1 ++ "121212222222(32){1,2}11112121(32){1,2}", // 1 2 ++ // k3 off k2 on ++ "1111(21){1,2}1111(22){1,2}", // 1 + // k1 on +- new int[]{1,1,1,2} // empty ++ "(11){1,2}(12){1,2}" // empty + ); + } + } +--- jdk/test/sun/security/krb5/auto/BadKdc3.java 2012-08-10 10:36:38.000000000 -0700 ++++ jdk/test/sun/security/krb5/auto/BadKdc3.java 2013-05-05 09:38:45.000000000 -0700 +@@ -37,14 +37,14 @@ + throws Exception { + Security.setProperty("krb5.kdc.bad.policy", "tryLast"); + BadKdc.go( +- new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,3,2}, // 1, 2 +- new int[]{3,2,3,2}, // 1, 2 ++ "121212222222(32){2,4}", // 1 2 ++ "(32){2,4}", // 1 2 + // refresh +- new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,3,2}, // 1, 2 +- // k3 off, k2 on +- new int[]{3,2,3,2,3,2,1,2,1,2,1,2,2,2,2,2}, // 1, 3 ++ "121212222222(32){2,4}", // 1 2 ++ // k3 off k2 on ++ "323232121212(22){2,4}", // 1 3 + // k1 on +- new int[]{2,2,2,2} // 1, 3 ++ "(22){2,4}" // 1 3 + ); + } + } +--- jdk/test/sun/security/krb5/auto/BadKdc4.java 2012-08-10 10:36:38.000000000 -0700 ++++ jdk/test/sun/security/krb5/auto/BadKdc4.java 2013-05-05 09:38:45.000000000 -0700 +@@ -37,14 +37,14 @@ + throws Exception { + Security.setProperty("krb5.kdc.bad.policy", ""); + BadKdc.go( +- new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,2,1,2,1,2,2,2,2,2,2,2,3,2}, +- new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,2,1,2,1,2,2,2,2,2,2,2,3,2}, ++ "121212222222(32){1,2}121212222222(32){1,2}", ++ "121212222222(32){1,2}121212222222(32){1,2}", + // refresh +- new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,2,1,2,1,2,2,2,2,2,2,2,3,2}, +- // k3 off, k2 on +- new int[]{1,2,1,2,1,2,2,2,1,2,1,2,1,2,2,2}, ++ "121212222222(32){1,2}121212222222(32){1,2}", ++ // k3 off k2 on ++ "121212(22){1,2}121212(22){1,2}", + // k1 on +- new int[]{1,2,1,2} ++ "(12){2,4}" + ); + } + } --- jdk/test/sun/security/krb5/runNameEquals.sh 2012-08-10 10:36:39.000000000 -0700 -+++ jdk/test/sun/security/krb5/runNameEquals.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/krb5/runNameEquals.sh 2013-05-05 09:38:45.000000000 -0700 @@ -48,15 +48,11 @@ # set platform-dependent variables OS=`uname -s` @@ -80748,8 +94161,251 @@ CYGWIN* ) PATHSEP=";" FILESEP="/" +--- jdk/test/sun/security/mscapi/ShortRSAKey1024.sh 2012-08-10 10:36:39.000000000 -0700 ++++ jdk/test/sun/security/mscapi/ShortRSAKey1024.sh 2013-05-05 09:38:45.000000000 -0700 +@@ -27,7 +27,9 @@ + # @test + # @bug 7106773 + # @summary 512 bits RSA key cannot work with SHA384 and SHA512 +-# @run shell ShortRSAKey1024.sh ++# @run shell ShortRSAKey1024.sh 1024 ++# @run shell ShortRSAKey1024.sh 768 ++# @run shell ShortRSAKey1024.sh 512 + + # set a few environment variables so that the shell-script can run stand-alone + # in the source directory +@@ -45,24 +47,39 @@ + exit 1 + fi + ++BITS=$1 ++ + OS=`uname -s` + case "$OS" in + Windows* | CYGWIN* ) + ++ echo "Removing the keypair if it already exists (for unknown reason)..." ++ ${TESTJAVA}/bin/keytool \ ++ -delete \ ++ -storetype Windows-My \ ++ -debug \ ++ -alias 7106773.$BITS ++ + echo "Creating a temporary RSA keypair in the Windows-My store..." + ${TESTJAVA}/bin/keytool \ + -genkeypair \ + -storetype Windows-My \ + -keyalg RSA \ +- -alias 7106773.1024 \ +- -keysize 1024 \ ++ -alias 7106773.$BITS \ ++ -keysize $BITS \ + -dname "cn=localhost,c=US" \ ++ -debug \ + -noprompt + ++ if [ "$?" -ne "0" ]; then ++ echo "Unable to generate key pair in Windows-My keystore" ++ exit 1 ++ fi ++ + echo + echo "Running the test..." + ${TESTJAVA}/bin/javac -d . ${TESTSRC}\\ShortRSAKeyWithinTLS.java +- ${TESTJAVA}/bin/java ShortRSAKeyWithinTLS 7106773.1024 1024 \ ++ ${TESTJAVA}/bin/java ShortRSAKeyWithinTLS 7106773.$BITS $BITS \ + TLSv1.2 TLS_DHE_RSA_WITH_AES_128_CBC_SHA + + rc=$? +@@ -72,7 +89,8 @@ + ${TESTJAVA}/bin/keytool \ + -delete \ + -storetype Windows-My \ +- -alias 7106773.1024 ++ -debug \ ++ -alias 7106773.$BITS + + echo done. + exit $rc +--- jdk/test/sun/security/mscapi/ShortRSAKey512.sh 2012-08-10 10:36:39.000000000 -0700 ++++ jdk/test/sun/security/mscapi/ShortRSAKey512.sh 1969-12-31 16:00:00.000000000 -0800 +@@ -1,86 +0,0 @@ +-#!/bin/sh +- +-# +-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +-# 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 7106773 +-# @summary 512 bits RSA key cannot work with SHA384 and SHA512 +-# @run shell ShortRSAKey512.sh +- +-# set a few environment variables so that the shell-script can run stand-alone +-# in the source directory +-if [ "${TESTSRC}" = "" ] ; then +- TESTSRC="." +-fi +- +-if [ "${TESTCLASSES}" = "" ] ; then +- TESTCLASSES="." +-fi +- +-if [ "${TESTJAVA}" = "" ] ; then +- echo "TESTJAVA not set. Test cannot execute." +- echo "FAILED!!!" +- exit 1 +-fi +- +-OS=`uname -s` +-case "$OS" in +- Windows* | CYGWIN* ) +- +- echo "Creating a temporary RSA keypair in the Windows-My store..." +- ${TESTJAVA}/bin/keytool \ +- -genkeypair \ +- -storetype Windows-My \ +- -keyalg RSA \ +- -alias 7106773.512 \ +- -keysize 512 \ +- -dname "cn=localhost,c=US" \ +- -noprompt +- +- echo +- echo "Running the test..." +- ${TESTJAVA}/bin/javac -d . ${TESTSRC}\\ShortRSAKeyWithinTLS.java +- ${TESTJAVA}/bin/java ShortRSAKeyWithinTLS 7106773.512 512 \ +- TLSv1.2 TLS_DHE_RSA_WITH_AES_128_CBC_SHA +- +- +- rc=$? +- +- echo +- echo "Removing the temporary RSA keypair from the Windows-My store..." +- ${TESTJAVA}/bin/keytool \ +- -delete \ +- -storetype Windows-My \ +- -alias 7106773.512 +- +- echo done. +- exit $rc +- ;; +- +- * ) +- echo "This test is not intended for '$OS' - passing test" +- exit 0 +- ;; +-esac +--- jdk/test/sun/security/mscapi/ShortRSAKey768.sh 2012-08-10 10:36:39.000000000 -0700 ++++ jdk/test/sun/security/mscapi/ShortRSAKey768.sh 1969-12-31 16:00:00.000000000 -0800 +@@ -1,85 +0,0 @@ +-#!/bin/sh +- +-# +-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +-# 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 7106773 +-# @summary 512 bits RSA key cannot work with SHA384 and SHA512 +-# @run shell ShortRSAKey768.sh +- +-# set a few environment variables so that the shell-script can run stand-alone +-# in the source directory +-if [ "${TESTSRC}" = "" ] ; then +- TESTSRC="." +-fi +- +-if [ "${TESTCLASSES}" = "" ] ; then +- TESTCLASSES="." +-fi +- +-if [ "${TESTJAVA}" = "" ] ; then +- echo "TESTJAVA not set. Test cannot execute." +- echo "FAILED!!!" +- exit 1 +-fi +- +-OS=`uname -s` +-case "$OS" in +- Windows* | CYGWIN* ) +- +- echo "Creating a temporary RSA keypair in the Windows-My store..." +- ${TESTJAVA}/bin/keytool \ +- -genkeypair \ +- -storetype Windows-My \ +- -keyalg RSA \ +- -alias 7106773.768 \ +- -keysize 768 \ +- -dname "cn=localhost,c=US" \ +- -noprompt +- +- echo +- echo "Running the test..." +- ${TESTJAVA}/bin/javac -d . ${TESTSRC}\\ShortRSAKeyWithinTLS.java +- ${TESTJAVA}/bin/java ShortRSAKeyWithinTLS 7106773.768 768 \ +- TLSv1.2 TLS_DHE_RSA_WITH_AES_128_CBC_SHA +- +- rc=$? +- +- echo +- echo "Removing the temporary RSA keypair from the Windows-My store..." +- ${TESTJAVA}/bin/keytool \ +- -delete \ +- -storetype Windows-My \ +- -alias 7106773.768 +- +- echo done. +- exit $rc +- ;; +- +- * ) +- echo "This test is not intended for '$OS' - passing test" +- exit 0 +- ;; +-esac --- jdk/test/sun/security/mscapi/ShortRSAKeyWithinTLS.java 2012-08-10 10:36:39.000000000 -0700 -+++ jdk/test/sun/security/mscapi/ShortRSAKeyWithinTLS.java 2013-03-09 08:44:51.000000000 -0800 ++++ jdk/test/sun/security/mscapi/ShortRSAKeyWithinTLS.java 2013-05-05 09:38:45.000000000 -0700 @@ -29,7 +29,7 @@ import javax.net.ssl.*; import java.lang.reflect.*; @@ -80776,7 +94432,7 @@ throw new Exception("Expected key size is " + keySize + ", but the public key size is " + publicKeySize); --- jdk/test/sun/security/pkcs11/KeyStore/Basic.sh 2012-08-10 10:36:40.000000000 -0700 -+++ jdk/test/sun/security/pkcs11/KeyStore/Basic.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/pkcs11/KeyStore/Basic.sh 2013-05-05 09:38:45.000000000 -0700 @@ -131,6 +131,27 @@ ;; esac @@ -80806,7 +94462,7 @@ FS="\\" PS=";" --- jdk/test/sun/security/pkcs11/KeyStore/ClientAuth.sh 2012-08-10 10:36:41.000000000 -0700 -+++ jdk/test/sun/security/pkcs11/KeyStore/ClientAuth.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/pkcs11/KeyStore/ClientAuth.sh 2013-05-05 09:38:45.000000000 -0700 @@ -93,6 +93,27 @@ ;; esac @@ -80835,8 +94491,81 @@ Windows* ) FS="\\" PS=";" +--- jdk/test/sun/security/pkcs11/PKCS11Test.java 2012-08-10 10:36:41.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/PKCS11Test.java 2013-05-05 09:38:46.000000000 -0700 +@@ -72,10 +72,33 @@ + } + + public static void main(PKCS11Test test) throws Exception { +- System.out.println("Beginning test run " + test.getClass().getName() + "..."); +- testDefault(test); +- testNSS(test); +- testDeimos(test); ++ Provider[] oldProviders = Security.getProviders(); ++ try { ++ System.out.println("Beginning test run " + test.getClass().getName() + "..."); ++ testDefault(test); ++ testNSS(test); ++ testDeimos(test); ++ } finally { ++ Provider[] newProviders = Security.getProviders(); ++ // Do not restore providers if nothing changed. This is especailly ++ // useful for ./Provider/Login.sh, where a SecurityManager exists. ++ if (oldProviders.length == newProviders.length) { ++ boolean found = false; ++ for (int i = 0; i<oldProviders.length; i++) { ++ if (oldProviders[i] != newProviders[i]) { ++ found = true; ++ break; ++ } ++ } ++ if (!found) return; ++ } ++ for (Provider p: newProviders) { ++ Security.removeProvider(p.getName()); ++ } ++ for (Provider p: oldProviders) { ++ Security.addProvider(p); ++ } ++ } + } + + public static void testDeimos(PKCS11Test test) throws Exception { +@@ -153,21 +176,21 @@ + return libdir; + } + +- static boolean loadNSPR(String libdir) throws Exception { +- // load NSS softoken dependencies in advance to avoid resolver issues ++ protected static void safeReload(String lib) throws Exception { + try { +- System.load(libdir + System.mapLibraryName(NSPR_PREFIX + "nspr4")); ++ System.load(lib); + } catch (UnsatisfiedLinkError e) { +- // GLIBC problem on older linux-amd64 machines +- if (libdir.contains("linux-amd64")) { +- System.out.println(e); +- System.out.println("NSS does not work on this platform, skipping."); +- return false; ++ if (e.getMessage().contains("already loaded")) { ++ return; + } +- throw e; + } +- System.load(libdir + System.mapLibraryName(NSPR_PREFIX + "plc4")); +- System.load(libdir + System.mapLibraryName(NSPR_PREFIX + "plds4")); ++ } ++ ++ static boolean loadNSPR(String libdir) throws Exception { ++ // load NSS softoken dependencies in advance to avoid resolver issues ++ safeReload(libdir + System.mapLibraryName(NSPR_PREFIX + "nspr4")); ++ safeReload(libdir + System.mapLibraryName(NSPR_PREFIX + "plc4")); ++ safeReload(libdir + System.mapLibraryName(NSPR_PREFIX + "plds4")); + return true; + } + --- jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh 2012-08-10 10:36:42.000000000 -0700 -+++ jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh 2013-05-05 09:38:45.000000000 -0700 @@ -50,19 +50,7 @@ OS=`uname -s` @@ -80859,7 +94588,7 @@ PS=":" CP="${FS}bin${FS}cp" --- jdk/test/sun/security/pkcs11/Provider/Login.sh 2012-08-10 10:36:42.000000000 -0700 -+++ jdk/test/sun/security/pkcs11/Provider/Login.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/pkcs11/Provider/Login.sh 2013-05-05 09:38:45.000000000 -0700 @@ -51,19 +51,7 @@ OS=`uname -s` @@ -80881,22 +94610,405 @@ FS="/" PS=":" CP="${FS}bin${FS}cp" +--- jdk/test/sun/security/pkcs11/Secmod/AddPrivateKey.java 2012-08-10 10:36:42.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/Secmod/AddPrivateKey.java 2013-05-05 09:38:46.000000000 -0700 +@@ -27,6 +27,7 @@ + * @summary Test that the PKCS#11 KeyStore handles RSA, DSA, and EC keys + * @author Andreas Sterbenz + * @library .. ++ * @run main/othervm AddPrivateKey + */ + + import java.io.*; +--- jdk/test/sun/security/pkcs11/Secmod/AddTrustedCert.java 2012-08-10 10:36:42.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/Secmod/AddTrustedCert.java 2013-05-05 09:38:46.000000000 -0700 +@@ -27,6 +27,7 @@ + * @summary make sure we can add a trusted cert to the NSS KeyStore module + * @author Andreas Sterbenz + * @library .. ++ * @run main/othervm AddTrustedCert + */ + + import java.io.*; +--- jdk/test/sun/security/pkcs11/Secmod/Crypto.java 2012-08-10 10:36:42.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/Secmod/Crypto.java 2013-05-05 09:38:46.000000000 -0700 +@@ -27,6 +27,7 @@ + * @summary verify that NSS no-db mode works correctly + * @author Andreas Sterbenz + * @library .. ++ * @run main/othervm Crypto + */ + + import java.util.*; +--- jdk/test/sun/security/pkcs11/Secmod/GetPrivateKey.java 2012-08-10 10:36:42.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/Secmod/GetPrivateKey.java 2013-05-05 09:38:46.000000000 -0700 +@@ -27,6 +27,7 @@ + * @summary make sure we can access the NSS softtoken KeyStore and use a private key + * @author Andreas Sterbenz + * @library .. ++ * @run main/othervm GetPrivateKey + */ + + import java.util.*; +--- jdk/test/sun/security/pkcs11/Secmod/JksSetPrivateKey.java 2012-08-10 10:36:42.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/Secmod/JksSetPrivateKey.java 2013-05-05 09:38:46.000000000 -0700 +@@ -27,6 +27,7 @@ + * @summary store a NSS PKCS11 PrivateKeyEntry to JKS KeyStore throws confusing NPE + * @author Wang Weijun + * @library .. ++ * @run main/othervm JksSetPrivateKey + */ + + import java.util.*; +--- jdk/test/sun/security/pkcs11/Secmod/TrustAnchors.java 2012-08-10 10:36:42.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/Secmod/TrustAnchors.java 2013-05-05 09:38:46.000000000 -0700 +@@ -27,6 +27,7 @@ + * @summary make sure we can access the NSS trust anchor module + * @author Andreas Sterbenz + * @library .. ++ * @run main/othervm TrustAnchors + */ + + import java.util.*; +--- jdk/test/sun/security/pkcs11/SecmodTest.java 2012-08-10 10:36:42.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/SecmodTest.java 2013-05-05 09:38:46.000000000 -0700 +@@ -44,8 +44,8 @@ + if (loadNSPR(LIBPATH) == false) { + return false; + } +- System.load(LIBPATH + System.mapLibraryName("softokn3")); +- System.load(LIBPATH + System.mapLibraryName("nssckbi")); ++ safeReload(LIBPATH + System.mapLibraryName("softokn3")); ++ safeReload(LIBPATH + System.mapLibraryName("nssckbi")); + + DBDIR = System.getProperty("test.classes", ".") + SEP + "tmpdb"; + System.setProperty("pkcs11test.nss.db", DBDIR); +--- jdk/test/sun/security/pkcs11/ec/ReadCertificates.java 2012-08-10 10:36:42.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/ec/ReadCertificates.java 2013-05-05 09:38:46.000000000 -0700 +@@ -28,6 +28,7 @@ + * and verify their signatures + * @author Andreas Sterbenz + * @library .. ++ * @library ../../../../java/security/testlibrary + */ + + import java.io.*; +@@ -62,7 +63,7 @@ + System.out.println("Provider does not support ECDSA, skipping..."); + return; + } +- Security.insertProviderAt(p, 1); ++ Providers.setAt(p, 1); + + random = new SecureRandom(); + factory = CertificateFactory.getInstance("X.509"); +--- jdk/test/sun/security/pkcs11/ec/ReadPKCS12.java 2012-08-10 10:36:43.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/ec/ReadPKCS12.java 2013-05-05 09:38:46.000000000 -0700 +@@ -27,6 +27,7 @@ + * @summary Verify that we can parse ECPrivateKeys from PKCS#12 and use them + * @author Andreas Sterbenz + * @library .. ++ * @library ../../../../java/security/testlibrary + */ + + import java.io.*; +@@ -52,7 +53,7 @@ + System.out.println("Provider does not support ECDSA, skipping..."); + return; + } +- Security.insertProviderAt(p, 1); ++ Providers.setAt(p, 1); + + CertificateFactory factory = CertificateFactory.getInstance("X.509"); + try { +--- jdk/test/sun/security/pkcs11/ec/TestECDH.java 2012-08-10 10:36:43.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/ec/TestECDH.java 2013-05-05 09:38:46.000000000 -0700 +@@ -27,6 +27,7 @@ + * @summary Basic known answer test for ECDH + * @author Andreas Sterbenz + * @library .. ++ * @library ../../../../java/security/testlibrary + */ + + import java.io.*; +@@ -59,7 +60,7 @@ + System.out.println("Provider does not support ECDH, skipping"); + return; + } +- Security.insertProviderAt(p, 1); ++ Providers.setAt(p, 1); + + if (false) { + KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", p); +--- jdk/test/sun/security/pkcs11/ec/TestECDSA.java 2012-08-10 10:36:43.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/ec/TestECDSA.java 2013-05-05 09:38:46.000000000 -0700 +@@ -27,6 +27,7 @@ + * @summary basic test of SHA1withECDSA and NONEwithECDSA signing/verifying + * @author Andreas Sterbenz + * @library .. ++ * @library ../../../../java/security/testlibrary + */ + + import java.io.*; +@@ -115,7 +116,7 @@ + System.out.println("ECDSA not supported, skipping"); + return; + } +- Security.insertProviderAt(provider, 1); ++ Providers.setAt(provider, 1); + + if (false) { + KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", provider); +--- jdk/test/sun/security/pkcs11/fips/CipherTest.java 2012-08-10 10:36:43.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/fips/CipherTest.java 2013-05-05 09:38:46.000000000 -0700 +@@ -394,47 +394,52 @@ + + public static void main(PeerFactory peerFactory, KeyStore keyStore, + String[] args) throws Exception { +- +- long time = System.currentTimeMillis(); +- String relPath; +- if ((args != null) && (args.length > 0) && args[0].equals("sh")) { +- relPath = pathToStoresSH; +- } else { +- relPath = pathToStores; ++ SSLContext reservedSSLContext = SSLContext.getDefault(); ++ try { ++ long time = System.currentTimeMillis(); ++ String relPath; ++ if ((args != null) && (args.length > 0) && args[0].equals("sh")) { ++ relPath = pathToStoresSH; ++ } else { ++ relPath = pathToStores; ++ } ++ PATH = new File(System.getProperty("test.src", "."), relPath); ++ CipherTest.peerFactory = peerFactory; ++ System.out.print( ++ "Initializing test '" + peerFactory.getName() + "'..."); ++// secureRandom = new SecureRandom(); ++// secureRandom.nextInt(); ++// trustStore = readKeyStore(trustStoreFile); ++ CipherTest.keyStore = keyStore; ++// keyStore = readKeyStore(keyStoreFile); ++ KeyManagerFactory keyFactory = ++ KeyManagerFactory.getInstance( ++ KeyManagerFactory.getDefaultAlgorithm()); ++ keyFactory.init(keyStore, "test12".toCharArray()); ++ keyManager = (X509ExtendedKeyManager)keyFactory.getKeyManagers()[0]; ++ ++ TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); ++ tmf.init(keyStore); ++ trustManager = (X509TrustManager)tmf.getTrustManagers()[0]; ++ ++// trustManager = new AlwaysTrustManager(); ++ SSLContext context = SSLContext.getInstance("TLS"); ++ context.init(new KeyManager[] {keyManager}, ++ new TrustManager[] {trustManager}, null); ++ SSLContext.setDefault(context); ++ ++ CipherTest cipherTest = new CipherTest(peerFactory); ++ Thread serverThread = new Thread(peerFactory.newServer(cipherTest), ++ "Server"); ++ serverThread.setDaemon(true); ++ serverThread.start(); ++ System.out.println("Done"); ++ cipherTest.run(); ++ time = System.currentTimeMillis() - time; ++ System.out.println("Done. (" + time + " ms)"); ++ } finally { ++ SSLContext.setDefault(reservedSSLContext); + } +- PATH = new File(System.getProperty("test.src", "."), relPath); +- CipherTest.peerFactory = peerFactory; +- System.out.print( +- "Initializing test '" + peerFactory.getName() + "'..."); +-// secureRandom = new SecureRandom(); +-// secureRandom.nextInt(); +-// trustStore = readKeyStore(trustStoreFile); +- CipherTest.keyStore = keyStore; +-// keyStore = readKeyStore(keyStoreFile); +- KeyManagerFactory keyFactory = +- KeyManagerFactory.getInstance( +- KeyManagerFactory.getDefaultAlgorithm()); +- keyFactory.init(keyStore, "test12".toCharArray()); +- keyManager = (X509ExtendedKeyManager)keyFactory.getKeyManagers()[0]; +- +- TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); +- tmf.init(keyStore); +- trustManager = (X509TrustManager)tmf.getTrustManagers()[0]; +- +-// trustManager = new AlwaysTrustManager(); +- SSLContext context = SSLContext.getInstance("TLS"); +- context.init(new KeyManager[] {keyManager}, new TrustManager[] {trustManager}, null); +- SSLContext.setDefault(context); +- +- CipherTest cipherTest = new CipherTest(peerFactory); +- Thread serverThread = new Thread(peerFactory.newServer(cipherTest), +- "Server"); +- serverThread.setDaemon(true); +- serverThread.start(); +- System.out.println("Done"); +- cipherTest.run(); +- time = System.currentTimeMillis() - time; +- System.out.println("Done. (" + time + " ms)"); + } + + static abstract class PeerFactory { --- jdk/test/sun/security/pkcs11/fips/ClientJSSEServerJSSE.java 2012-08-10 10:36:43.000000000 -0700 -+++ jdk/test/sun/security/pkcs11/fips/ClientJSSEServerJSSE.java 2013-03-09 08:44:51.000000000 -0800 -@@ -25,10 +25,10 @@ ++++ jdk/test/sun/security/pkcs11/fips/ClientJSSEServerJSSE.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,10 +25,11 @@ * @test * @bug 6313675 6323647 * @summary Verify that all ciphersuites work in FIPS mode + * @library .. * @ignore JSSE supported cipher suites are changed with CR 6916074, * need to update this test case in JDK 7 soon ++ * @run main/othervm ClientJSSEServerJSSE * @author Andreas Sterbenz - * @library .. */ import java.security.*; +--- jdk/test/sun/security/pkcs11/fips/TrustManagerTest.java 2012-08-10 10:36:43.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/fips/TrustManagerTest.java 2013-05-05 09:38:46.000000000 -0700 +@@ -27,6 +27,7 @@ + * @summary Verify that the SunJSSE trustmanager works correctly in FIPS mode + * @author Andreas Sterbenz + * @library .. ++ * @run main/othervm TrustManagerTest + */ + + import java.io.*; +--- jdk/test/sun/security/pkcs11/rsa/TestCACerts.java 2012-08-10 10:36:53.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/rsa/TestCACerts.java 2013-05-05 09:38:46.000000000 -0700 +@@ -48,32 +48,35 @@ + public void main(Provider p) throws Exception { + long start = System.currentTimeMillis(); + Security.addProvider(p); +- String PROVIDER = p.getName(); +- String javaHome = System.getProperty("java.home"); +- String caCerts = javaHome + SEP + "lib" + SEP + "security" + SEP + "cacerts"; +- InputStream in = new FileInputStream(caCerts); +- KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); +- ks.load(in, null); +- in.close(); +- for (Enumeration e = ks.aliases(); e.hasMoreElements(); ) { +- String alias = (String)e.nextElement(); +- if (ks.isCertificateEntry(alias)) { +- System.out.println("* Testing " + alias + "..."); +- X509Certificate cert = (X509Certificate)ks.getCertificate(alias); +- PublicKey key = cert.getPublicKey(); +- String alg = key.getAlgorithm(); +- if (alg.equals("RSA")) { +- System.out.println("Signature algorithm: " + cert.getSigAlgName()); +- cert.verify(key, PROVIDER); ++ try { ++ String PROVIDER = p.getName(); ++ String javaHome = System.getProperty("java.home"); ++ String caCerts = javaHome + SEP + "lib" + SEP + "security" + SEP + "cacerts"; ++ InputStream in = new FileInputStream(caCerts); ++ KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); ++ ks.load(in, null); ++ in.close(); ++ for (Enumeration e = ks.aliases(); e.hasMoreElements(); ) { ++ String alias = (String)e.nextElement(); ++ if (ks.isCertificateEntry(alias)) { ++ System.out.println("* Testing " + alias + "..."); ++ X509Certificate cert = (X509Certificate)ks.getCertificate(alias); ++ PublicKey key = cert.getPublicKey(); ++ String alg = key.getAlgorithm(); ++ if (alg.equals("RSA")) { ++ System.out.println("Signature algorithm: " + cert.getSigAlgName()); ++ cert.verify(key, PROVIDER); ++ } else { ++ System.out.println("Skipping cert with key: " + alg); ++ } + } else { +- System.out.println("Skipping cert with key: " + alg); ++ System.out.println("Skipping alias " + alias); + } +- } else { +- System.out.println("Skipping alias " + alias); + } ++ long stop = System.currentTimeMillis(); ++ System.out.println("All tests passed (" + (stop - start) + " ms)."); ++ } finally { ++ Security.removeProvider(p.getName()); + } +- long stop = System.currentTimeMillis(); +- System.out.println("All tests passed (" + (stop - start) + " ms)."); + } +- + } +--- jdk/test/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java 2012-08-10 10:36:53.000000000 -0700 ++++ jdk/test/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java 2013-05-05 09:38:45.000000000 -0700 +@@ -27,6 +27,7 @@ + * @summary Verify that all ciphersuites work (incl. ECC using NSS crypto) + * @author Andreas Sterbenz + * @library .. ++ * @library ../../../../java/security/testlibrary + */ + + import java.security.*; +@@ -45,7 +46,7 @@ + System.out.println("Provider does not support EC, skipping"); + return; + } +- Security.insertProviderAt(p, 1); ++ Providers.setAt(p, 1); + CipherTest.main(new JSSEFactory(), cmdArgs); + Security.removeProvider(p.getName()); + } +--- jdk/test/sun/security/pkcs12/PKCS12SameKeyId.java 2012-08-10 10:36:53.000000000 -0700 ++++ jdk/test/sun/security/pkcs12/PKCS12SameKeyId.java 2013-05-05 09:38:45.000000000 -0700 +@@ -86,7 +86,9 @@ + + // Reads from JKS keystore and pre-calculate + KeyStore ks = KeyStore.getInstance("jks"); +- ks.load(new FileInputStream(JKSFILE), PASSWORD); ++ try (FileInputStream fis = new FileInputStream(JKSFILE)) { ++ ks.load(fis, PASSWORD); ++ } + for (int i=0; i<SIZE; i++) { + aliases[i] = "p" + i; + byte[] enckey = cipher.doFinal( +@@ -103,11 +105,15 @@ + for (int i=0; i<SIZE; i++) { + p12.setKeyEntry(aliases[i], keys[i], certChains[i]); + } +- p12.store(new FileOutputStream(P12FILE), PASSWORD); ++ try (FileOutputStream fos = new FileOutputStream(P12FILE)) { ++ p12.store(fos, PASSWORD); ++ } + + // Check private keys still match certs + p12 = KeyStore.getInstance("pkcs12"); +- p12.load(new FileInputStream(P12FILE), PASSWORD); ++ try (FileInputStream fis = new FileInputStream(P12FILE)) { ++ p12.load(fis, PASSWORD); ++ } + for (int i=0; i<SIZE; i++) { + String a = "p" + i; + X509Certificate x = (X509Certificate)p12.getCertificate(a); +--- jdk/test/sun/security/provider/PolicyFile/Comparator.java 2012-08-10 10:36:53.000000000 -0700 ++++ jdk/test/sun/security/provider/PolicyFile/Comparator.java 2013-05-05 09:38:46.000000000 -0700 +@@ -24,6 +24,7 @@ + /* + * @test + * @bug 5037004 ++ * @run main/othervm Comparator + * @summary Frivolous ClassCastExceptions thrown by SubjectCodeSource.implies + * + * Note: if you want to see the java.security.debug output, --- jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh 2012-08-10 10:36:53.000000000 -0700 -+++ jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh 2013-05-05 09:38:46.000000000 -0700 @@ -44,11 +44,7 @@ # set platform-dependent variables OS=`uname -s` @@ -80911,7 +95023,7 @@ FILESEP="/" ;; --- jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh 2012-08-10 10:36:55.000000000 -0700 -+++ jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh 2013-05-05 09:38:46.000000000 -0700 @@ -47,15 +47,7 @@ # set platform-dependent variables OS=`uname -s` @@ -80929,8 +95041,199 @@ PS=":" FS="/" ;; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/SSLSecurity/ProviderTest.java 2012-08-10 10:36:57.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/SSLSecurity/ProviderTest.java 2013-05-05 09:38:46.000000000 -0700 +@@ -40,28 +40,32 @@ + TrustManagerFactory tmf; + KeyManagerFactory kmf; + +- Security.addProvider(new MyProvider()); +- +- System.out.println("getting a javax SSLContext"); +- sslc = SSLContext.getInstance("javax"); +- sslc.init(null, null, null); +- System.out.println("\ngetting a com SSLContext"); +- sslc = SSLContext.getInstance("com"); +- sslc.init(null, null, null); +- +- System.out.println("\ngetting a javax TrustManagerFactory"); +- tmf = TrustManagerFactory.getInstance("javax"); +- tmf.init((KeyStore) null); +- System.out.println("\ngetting a com TrustManagerFactory"); +- tmf = TrustManagerFactory.getInstance("com"); +- tmf.init((KeyStore) null); +- +- System.out.println("\ngetting a javax KeyManagerFactory"); +- kmf = KeyManagerFactory.getInstance("javax"); +- kmf.init((KeyStore) null, null); +- System.out.println("\ngetting a com KeyManagerFactory"); +- kmf = KeyManagerFactory.getInstance("com"); +- kmf.init((KeyStore) null, null); ++ Provider extraProvider = new MyProvider(); ++ Security.addProvider(extraProvider); ++ try { ++ System.out.println("getting a javax SSLContext"); ++ sslc = SSLContext.getInstance("javax"); ++ sslc.init(null, null, null); ++ System.out.println("\ngetting a com SSLContext"); ++ sslc = SSLContext.getInstance("com"); ++ sslc.init(null, null, null); ++ ++ System.out.println("\ngetting a javax TrustManagerFactory"); ++ tmf = TrustManagerFactory.getInstance("javax"); ++ tmf.init((KeyStore) null); ++ System.out.println("\ngetting a com TrustManagerFactory"); ++ tmf = TrustManagerFactory.getInstance("com"); ++ tmf.init((KeyStore) null); ++ ++ System.out.println("\ngetting a javax KeyManagerFactory"); ++ kmf = KeyManagerFactory.getInstance("javax"); ++ kmf.init((KeyStore) null, null); ++ System.out.println("\ngetting a com KeyManagerFactory"); ++ kmf = KeyManagerFactory.getInstance("com"); ++ kmf.init((KeyStore) null, null); ++ } finally { ++ Security.removeProvider(extraProvider.getName()); ++ } + } + } + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/AppInputStream/ReadBlocksClose.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/AppInputStream/ReadBlocksClose.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to ++// re-use system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4814140 + * @summary AppInputStream: read can block a close ++ * @run main/othervm ReadBlocksClose + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/AppInputStream/ReadHandshake.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/AppInputStream/ReadHandshake.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4514971 + * @summary Verify applications do not read handshake data after failure ++ * @run main/othervm ReadHandshake + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/AppInputStream/ReadZeroBytes.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/AppInputStream/ReadZeroBytes.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6697270 + * @summary Inputstream dosent behave correct ++ * @run main/othervm ReadZeroBytes + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/AppInputStream/RemoveMarkReset.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/AppInputStream/RemoveMarkReset.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4413664 + * @summary remove mark/reset functionality from AppInputStream ++ * @run main/othervm RemoveMarkReset + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/AppOutputStream/NoExceptionOnClose.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/AppOutputStream/NoExceptionOnClose.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test 1.3 01/03/08 + * @bug 4378397 + * @summary JSSE socket output stream doesn't throw after socket is closed ++ * @run main/othervm NoExceptionOnClose + * @author Jaya Hangal + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/CipherSuiteOrder.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/CipherSuiteOrder.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test 1.3 01/03/08 + * @bug 4330535 + * @summary Client should follow suite order in + * SSLSocket.setEnabledCipherSuites() ++ * @run main/othervm CipherSuiteOrder + * @author Jaya Hangal + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/RSAExport.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/RSAExport.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6690018 + * @summary RSAClientKeyExchange NullPointerException ++ * @run main/othervm RSAExport + */ + + /* --- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh 2012-08-10 10:36:58.000000000 -0700 -+++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh 2013-05-05 09:38:46.000000000 -0700 @@ -33,7 +33,7 @@ OS=`uname -s` @@ -80940,8 +95243,457 @@ PS=":" FS="/" ;; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/GenSSLConfigs/main.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/GenSSLConfigs/main.java 2013-05-05 09:38:46.000000000 -0700 +@@ -5,8 +5,13 @@ + * @summary Make sure that different configurations of SSL sockets work + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* +- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/HandshakeOutStream/NullCerts.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/HandshakeOutStream/NullCerts.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4453053 +- * @summary If a server shuts down correctly during handshaking, the client doesn't see it. ++ * @summary If a server shuts down correctly during handshaking, the client ++ * doesn't see it. ++ * @run main/othervm NullCerts + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/InputRecord/ClientHelloRead.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/InputRecord/ClientHelloRead.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4432868 + * @summary A client-hello message may not always be read correctly ++ * @run main/othervm ClientHelloRead + */ + + import java.io.*; +@@ -154,23 +160,29 @@ + * we want to avoid URLspoofCheck failures in cases where the cert + * DN name does not match the hostname in the URL. + */ +- HttpsURLConnection.setDefaultHostnameVerifier( +- new NameVerifier()); +- URL url = new URL("https://" + "localhost:" + serverPort +- + "/index.html"); +- BufferedReader in = null; ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); + try { +- in = new BufferedReader(new InputStreamReader( +- url.openStream())); +- String inputLine; +- System.out.print("Client recieved from the server: "); +- while ((inputLine = in.readLine()) != null) +- System.out.println(inputLine); +- in.close(); +- } catch (SSLException e) { +- if (in != null) ++ HttpsURLConnection.setDefaultHostnameVerifier( ++ new NameVerifier()); ++ URL url = new URL("https://" + "localhost:" + serverPort ++ + "/index.html"); ++ BufferedReader in = null; ++ try { ++ in = new BufferedReader(new InputStreamReader( ++ url.openStream())); ++ String inputLine; ++ System.out.print("Client recieved from the server: "); ++ while ((inputLine = in.readLine()) != null) ++ System.out.println(inputLine); + in.close(); +- throw e; ++ } catch (SSLException e) { ++ if (in != null) ++ in.close(); ++ throw e; ++ } ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } + } + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/InputRecord/SSLSocketTimeoutNulls.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/InputRecord/SSLSocketTimeoutNulls.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,13 +21,18 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4456039 + * @summary Setting timeouts on SSLSockets immediately return null + * after timeout occurs. This bug was fixed as part of 4393337, + * but this is another bug we want to check regressions against. +- * @run main/timeout=140 SSLSocketTimeoutNulls ++ * @run main/othervm/timeout=140 SSLSocketTimeoutNulls + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ProtocolVersion/HttpsProtocols.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ProtocolVersion/HttpsProtocols.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -147,12 +147,18 @@ + Thread.sleep(50); + } + +- HttpsURLConnection.setDefaultHostnameVerifier(this); +- +- URL url = new URL("https://localhost:" + serverPort + "/"); +- HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); +- +- System.out.println("response is " + urlc.getResponseCode()); ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); ++ try { ++ HttpsURLConnection.setDefaultHostnameVerifier(this); ++ ++ URL url = new URL("https://localhost:" + serverPort + "/"); ++ HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); ++ ++ System.out.println("response is " + urlc.getResponseCode()); ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); ++ } + } + + public boolean verify(String hostname, SSLSession session) { +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/BadKSProvider.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/BadKSProvider.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4919147 + * @summary Support for token-based KeyStores ++ * @run main/othervm BadKSProvider + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/BadTSProvider.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/BadTSProvider.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4919147 + * @summary Support for token-based KeyStores ++ * @run main/othervm BadTSProvider + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/GoodProvider.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/GoodProvider.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4919147 + * @summary Support for token-based KeyStores ++ * @run main/othervm GoodProvider + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/RehandshakeFinished.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/RehandshakeFinished.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,24 +21,31 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6207322 + * @summary SSLEngine is returning a premature FINISHED message when doing + * an abbreviated handshake. +- * ++ * @run main/othervm RehandshakeFinished ++ * @author Brad Wetmore ++ */ ++ ++/* + * This test may need some updating if the messages change order. + * Currently I'm expecting that there is a simple renegotiation, with + * each message being contained in a single SSL packet. + * +- * ClientHello +- * Server Hello +- * CCS +- * FINISHED +- * CCS +- * FINISHED +- * +- * @author Brad Wetmore ++ * ClientHello ++ * Server Hello ++ * CCS ++ * FINISHED ++ * CCS ++ * FINISHED + */ + + /** +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/SSLEngineDeadlock.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/SSLEngineDeadlock.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6492872 + * @summary Deadlock in SSLEngine +- * ++ * @run main/othervm SSLEngineDeadlock + * @author Brad R. Wetmore + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSessionImpl/HashCodeMissing.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSessionImpl/HashCodeMissing.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4910892 + * @summary 4518403 was not properly fixed. hashcode should be hashCode. ++ * @run main/othervm HashCodeMissing + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6447412 + * @summary Issue with socket.close() for ssl sockets when poweroff on + * other system ++ * @run main/othervm AsyncSSLSocketClose + */ + + import javax.net.ssl.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/ClientModeClientAuth.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/ClientModeClientAuth.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4390659 +- * @run main/othervm -Djavax.net.debug=all ClientModeClientAuth + * @summary setNeedClientAuth() isn't working after a handshaker is established ++ * @run main/othervm ClientModeClientAuth + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/ClientTimeout.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/ClientTimeout.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4836493 + * @summary Socket timeouts for SSLSockets causes data corruption. ++ * @run main/othervm ClientTimeout + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/CloseSocketException.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/CloseSocketException.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,16 +21,23 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4969799 + * @summary javax.net.ssl.SSLSocket.SSLSocket(InetAddress,int) shouldn't + * throw exception +- * ++ * @run main/othervm CloseSocketException ++ * @author Brad Wetmore ++ */ ++ ++/* + * This is making sure that starting a new handshake throws the right + * exception. There is a similar test for SSLEngine. +- * +- * @author Brad Wetmore + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java 2012-08-10 10:36:58.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4403428 + * @summary Invalidating JSSE session on server causes SSLProtocolException ++ * @run main/othervm InvalidateServerSessionRenegotiate + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NewSocketMethods.java 2012-08-10 10:36:59.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NewSocketMethods.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4429176 + * @summary need to sync up SSL sockets with merlin java.net changes ++ * @run main/othervm NewSocketMethods + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NonAutoClose.java 2012-08-10 10:36:59.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NonAutoClose.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4404399 + * @summary When a layered SSL socket is closed, it should wait for close_notify ++ * @run main/othervm NonAutoClose + * @author Brad Wetmore + */ + --- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh 2012-08-10 10:36:59.000000000 -0700 -+++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh 2013-05-05 09:38:46.000000000 -0700 @@ -42,7 +42,7 @@ OS=`uname -s` @@ -80951,8 +95703,2645 @@ FILESEP="/" PATHSEP=":" ;; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/ReuseAddr.java 2012-08-10 10:36:59.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/ReuseAddr.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4482446 + * @summary java.net.SocketTimeoutException on 98, NT, 2000 for JSSE ++ * @run main/othervm ReuseAddr + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/ReverseNameLookup.java 2012-08-10 10:36:59.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/ReverseNameLookup.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4748292 + * @summary Prevent/Disable reverse name lookups with JSSE SSL sockets ++ * @run main/othervm ReverseNameLookup + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/SSLSocketImplThrowsWrongExceptions.java 2012-08-10 10:36:59.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/SSLSocketImplThrowsWrongExceptions.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4361124 4325806 + * @summary SSLServerSocket isn't throwing exceptions when negotiations are + * failing & java.net.SocketException: occures in Auth and clientmode ++ * @run main/othervm SSLSocketImplThrowsWrongExceptions + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/ServerTimeout.java 2012-08-10 10:36:59.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/ServerTimeout.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4836493 + * @summary Socket timeouts for SSLSockets causes data corruption. ++ * @run main/othervm ServerTimeout + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/SetClientMode.java 2012-08-10 10:36:59.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/SetClientMode.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6223624 + * @summary SSLSocket.setUseClientMode() fails to throw expected + * IllegalArgumentException ++ * @run main/othervm SetClientMode + */ + + /* +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/UnconnectedSocketWrongExceptions.java 2012-08-10 10:36:59.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/UnconnectedSocketWrongExceptions.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4480441 + * @summary startHandshake giving wrong message when unconnected. ++ * @run main/othervm UnconnectedSocketWrongExceptions + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ServerHandshaker/AnonCipherWithWantClientAuth.java 2012-08-10 10:36:59.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ServerHandshaker/AnonCipherWithWantClientAuth.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4392475 + * @summary Calling setWantClientAuth(true) disables anonymous suites +- * @run main/timeout=180 AnonCipherWithWantClientAuth ++ * @run main/othervm/timeout=180 AnonCipherWithWantClientAuth + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ServerHandshaker/GetPeerHost.java 2012-08-10 10:36:59.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ServerHandshaker/GetPeerHost.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /** +- *@test +- *@bug 4302026 +- *@run main GetPeerHost +- *@summary make sure the server side doesn't do DNS lookup. ++ * @test ++ * @bug 4302026 ++ * @run main/othervm GetPeerHost ++ * @summary make sure the server side doesn't do DNS lookup. + */ + import javax.net.*; + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SocketCreation/SocketCreation.java 2012-08-10 10:36:59.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SocketCreation/SocketCreation.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,13 +21,18 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4414843 + * @summary This test tries all the different ways in which an SSL + * connection can be established to exercise different SSLSocketImpl + * constructors. +- * @run main/timeout=300 SocketCreation ++ * @run main/othervm/timeout=300 SocketCreation + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/ClientServer.java 2012-08-10 10:37:00.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/ClientServer.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4717766 + * @summary 1.0.3 JsseX509TrustManager erroneously calls isClientTrusted() ++ * @run main/othervm ClientServer + * @ignore JSSE supports algorithm constraints with CR 6916074, + * need to update this test case in JDK 7 soon + * @author Brad Wetmore +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/PKIXExtendedTM.java 2012-08-10 10:37:00.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/PKIXExtendedTM.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// + + /* + * @test + * @bug 6916074 + * @summary Add support for TLS 1.2 ++ * @run main/othervm PKIXExtendedTM + */ + + import java.net.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SelfIssuedCert.java 2012-08-10 10:37:00.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SelfIssuedCert.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,6 +21,11 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6822460 +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SunX509ExtendedTM.java 2012-08-10 10:37:00.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SunX509ExtendedTM.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6916074 +- * @run main/othervm -Djavax.net.debug=all SunX509ExtendedTM + * @summary Add support for TLS 1.2 ++ * @run main/othervm SunX509ExtendedTM + */ + + import java.net.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/X509ExtendedTMEnabled.java 2012-08-10 10:37:00.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/X509ExtendedTMEnabled.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,12 +21,18 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++// Ensure that the SunJSSE provider enables the X509ExtendedTrustManager. ++// ++ + /* + * @test + * @bug 6916074 + * @summary Add support for TLS 1.2 +- * +- * Ensure that the SunJSSE provider enables the X509ExtendedTrustManager. ++ * @run main/othervm X509ExtendedTMEnabled + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/spi/ProviderInit.java 2012-08-10 10:37:00.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/spi/ProviderInit.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test 1.3 01/03/08 + * @bug 4522550 + * @summary SSLContext TrustMananagerFactory and KeyManagerFactory + * should throw if not init ++ * @run main/othervm ProviderInit + * @author Jaya Hangal + */ + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsClient/ProxyAuthTest.java 2012-08-10 10:37:00.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsClient/ProxyAuthTest.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +25,11 @@ + * @test + * @bug 4323990 4413069 + * @summary HttpsURLConnection doesn't send Proxy-Authorization on CONNECT +- * Incorrect checking of proxy server response ++ * Incorrect checking of proxy server response ++ * @run main/othervm ProxyAuthTest ++ * ++ * No way to reserve and restore java.lang.Authenticator, need to run this ++ * test in othervm mode. + */ + + import java.io.*; +@@ -77,8 +81,7 @@ + /* + * Main method to create the server and the client + */ +- public static void main(String args[]) throws Exception +- { ++ public static void main(String args[]) throws Exception { + String keyFilename = + System.getProperty("test.src", "./") + "/" + pathToStores + + "/" + keyStoreFile; +@@ -110,10 +113,9 @@ + try { + doClientSide(); + } catch (Exception e) { +- System.out.println("Client side failed: " + +- e.getMessage()); ++ System.out.println("Client side failed: " + e.getMessage()); + throw e; +- } ++ } + } + + private static ServerSocketFactory getServerSocketFactory +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsClient/ServerIdentityTest.java 2012-08-10 10:37:00.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsClient/ServerIdentityTest.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4328195 + * @summary Need to include the alternate subject DN for certs, + * https should check for this ++ * @run main/othervm ServerIdentityTest + * @author Yingxian Wang + */ + +@@ -136,39 +142,45 @@ + volatile Exception clientException = null; + + public static void main(String[] args) throws Exception { +- for (int i = 0; i < keyStoreFiles.length; i++) { +- String keyFilename = +- System.getProperty("test.src", ".") + "/" + pathToStores + +- "/" + keyStoreFiles[i]; +- String trustFilename = +- System.getProperty("test.src", ".") + "/" + pathToStores + +- "/" + trustStoreFiles[i]; +- +- System.setProperty("javax.net.ssl.keyStore", keyFilename); +- System.setProperty("javax.net.ssl.keyStorePassword", passwd); +- System.setProperty("javax.net.ssl.trustStore", trustFilename); +- System.setProperty("javax.net.ssl.trustStorePassword", passwd); +- +- if (debug) +- System.setProperty("javax.net.debug", "all"); +- SSLContext context = SSLContext.getInstance("SSL"); +- +- KeyManager[] kms = new KeyManager[1]; +- KeyStore ks = KeyStore.getInstance("JKS"); +- FileInputStream fis = new FileInputStream(keyFilename); +- ks.load(fis, passwd.toCharArray()); +- fis.close(); +- KeyManager km = new MyKeyManager(ks, passwd.toCharArray()); +- kms[0] = km; +- context.init(kms, null, null); +- HttpsURLConnection.setDefaultSSLSocketFactory( +- context.getSocketFactory()); +- +- /* +- * Start the tests. +- */ +- System.out.println("Testing " + keyFilename); +- new ServerIdentityTest(context, keyStoreFiles[i]); ++ SSLSocketFactory reservedSFactory = ++ HttpsURLConnection.getDefaultSSLSocketFactory(); ++ try { ++ for (int i = 0; i < keyStoreFiles.length; i++) { ++ String keyFilename = ++ System.getProperty("test.src", ".") + "/" + pathToStores + ++ "/" + keyStoreFiles[i]; ++ String trustFilename = ++ System.getProperty("test.src", ".") + "/" + pathToStores + ++ "/" + trustStoreFiles[i]; ++ ++ System.setProperty("javax.net.ssl.keyStore", keyFilename); ++ System.setProperty("javax.net.ssl.keyStorePassword", passwd); ++ System.setProperty("javax.net.ssl.trustStore", trustFilename); ++ System.setProperty("javax.net.ssl.trustStorePassword", passwd); ++ ++ if (debug) ++ System.setProperty("javax.net.debug", "all"); ++ SSLContext context = SSLContext.getInstance("SSL"); ++ ++ KeyManager[] kms = new KeyManager[1]; ++ KeyStore ks = KeyStore.getInstance("JKS"); ++ FileInputStream fis = new FileInputStream(keyFilename); ++ ks.load(fis, passwd.toCharArray()); ++ fis.close(); ++ KeyManager km = new MyKeyManager(ks, passwd.toCharArray()); ++ kms[0] = km; ++ context.init(kms, null, null); ++ HttpsURLConnection.setDefaultSSLSocketFactory( ++ context.getSocketFactory()); ++ ++ /* ++ * Start the tests. ++ */ ++ System.out.println("Testing " + keyFilename); ++ new ServerIdentityTest(context, keyStoreFiles[i]); ++ } ++ } finally { ++ HttpsURLConnection.setDefaultSSLSocketFactory(reservedSFactory); + } + } + +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnection/CriticalSubjectAltName.java 2012-08-10 10:37:00.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnection/CriticalSubjectAltName.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6668231 + * @summary Presence of a critical subjectAltName causes JSSE's SunX509 to + * fail trusted checks ++ * @run main/othervm CriticalSubjectAltName + * @author Xuelei Fan + * + * This test depends on binary keystore, crisubn.jks and trusted.jks. Because +--- jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnection/GetResponseCode.java 2012-08-10 10:37:00.000000000 -0700 ++++ jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnection/GetResponseCode.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4482187 + * @summary HttpsClient tests are failing for build 71 ++ * @run main/othervm GetResponseCode + * @author Yingxian Wang + */ + import java.io.*; +--- jdk/test/sun/security/ssl/javax/net/ssl/Fix5070632.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/Fix5070632.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 5070632 + * @summary Default SSLSockeFactory override createSocket() now ++ * @run main/othervm Fix5070632 + * @author Weijun Wang + */ + +@@ -35,8 +41,13 @@ + + public class Fix5070632 { + public static void main(String[] args) throws Exception { ++ // reserve the security properties ++ String reservedSFacProvider = ++ Security.getProperty("ssl.SocketFactory.provider"); ++ + // use a non-existing provider so that the DefaultSSLSocketFactory + // will be used, and then test against it. ++ + Security.setProperty("ssl.SocketFactory.provider", "foo.NonExistant"); + SSLSocketFactory fac = (SSLSocketFactory)SSLSocketFactory.getDefault(); + try { +@@ -46,8 +57,16 @@ + System.out.println("Throw SocketException"); + se.printStackTrace(); + return; ++ } finally { ++ // restore the security properties ++ if (reservedSFacProvider == null) { ++ reservedSFacProvider = ""; ++ } ++ Security.setProperty("ssl.SocketFactory.provider", ++ reservedSFacProvider); + } +- throw new Exception("should throw SocketException"); ++ + // if not caught, or other exception caught, then it's error ++ throw new Exception("should throw SocketException"); + } + } +--- jdk/test/sun/security/ssl/javax/net/ssl/FixingJavadocs/ComURLNulls.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/FixingJavadocs/ComURLNulls.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,12 +21,18 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4387882 4451038 + * @summary Need to revisit the javadocs for JSSE, especially the + * promoted classes, and HttpsURLConnection.getCipherSuite throws + * NullPointerException ++ * @run main/othervm ComURLNulls + * @author Brad Wetmore + */ + +@@ -34,6 +40,7 @@ + import java.io.*; + import javax.net.ssl.*; + import com.sun.net.ssl.HttpsURLConnection; ++import com.sun.net.ssl.HostnameVerifier; + + /* + * Tests that the com null argument changes made it in ok. +@@ -42,59 +49,64 @@ + public class ComURLNulls { + + public static void main(String[] args) throws Exception { +- +- System.setProperty("java.protocol.handler.pkgs", +- "com.sun.net.ssl.internal.www.protocol"); +- /** +- * This test does not establish any connection to the specified +- * URL, hence a dummy URL is used. +- */ +- URL foobar = new URL("https://example.com/"); +- +- HttpsURLConnection urlc = +- (HttpsURLConnection) foobar.openConnection(); +- +- try { +- urlc.getCipherSuite(); +- } catch (IllegalStateException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); +- } +- +- try { +- urlc.getServerCertificateChain(); +- } catch (IllegalStateException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); +- } +- +- try { +- urlc.setDefaultHostnameVerifier(null); +- } catch (IllegalArgumentException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); +- } +- +- try { +- urlc.setHostnameVerifier(null); +- } catch (IllegalArgumentException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); +- } +- +- try { +- urlc.setDefaultSSLSocketFactory(null); +- } catch (IllegalArgumentException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); +- } +- ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); + try { +- urlc.setSSLSocketFactory(null); +- } catch (IllegalArgumentException e) { +- System.out.print("Caught proper exception"); +- System.out.println(e.getMessage()); ++ System.setProperty("java.protocol.handler.pkgs", ++ "com.sun.net.ssl.internal.www.protocol"); ++ /** ++ * This test does not establish any connection to the specified ++ * URL, hence a dummy URL is used. ++ */ ++ URL foobar = new URL("https://example.com/"); ++ ++ HttpsURLConnection urlc = ++ (HttpsURLConnection) foobar.openConnection(); ++ ++ try { ++ urlc.getCipherSuite(); ++ } catch (IllegalStateException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ ++ try { ++ urlc.getServerCertificateChain(); ++ } catch (IllegalStateException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ ++ try { ++ urlc.setDefaultHostnameVerifier(null); ++ } catch (IllegalArgumentException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ ++ try { ++ urlc.setHostnameVerifier(null); ++ } catch (IllegalArgumentException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ ++ try { ++ urlc.setDefaultSSLSocketFactory(null); ++ } catch (IllegalArgumentException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ ++ try { ++ urlc.setSSLSocketFactory(null); ++ } catch (IllegalArgumentException e) { ++ System.out.print("Caught proper exception"); ++ System.out.println(e.getMessage()); ++ } ++ System.out.println("TESTS PASSED"); ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } +- System.out.println("TESTS PASSED"); + } + } +--- jdk/test/sun/security/ssl/javax/net/ssl/FixingJavadocs/ImplicitHandshake.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/FixingJavadocs/ImplicitHandshake.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4387882 + * @summary Need to revisit the javadocs for JSSE, especially the + * promoted classes. ++ * @run main/othervm ImplicitHandshake + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/javax/net/ssl/FixingJavadocs/JavaxURLNulls.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/FixingJavadocs/JavaxURLNulls.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -42,63 +42,69 @@ + + public static void main(String[] args) throws Exception { + +- /** +- * This test does not establish any connection to the specified +- * URL, hence a dummy URL is used. +- */ +- URL foobar = new URL("https://example.com/"); +- +- HttpsURLConnection urlc = +- (HttpsURLConnection) foobar.openConnection(); +- +- try { +- urlc.getCipherSuite(); +- } catch (IllegalStateException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); +- } +- +- try { +- urlc.getLocalCertificates(); +- } catch (IllegalStateException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); +- } +- +- try { +- urlc.getServerCertificates(); +- } catch (IllegalStateException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); +- } +- +- try { +- urlc.setDefaultHostnameVerifier(null); +- } catch (IllegalArgumentException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); +- } +- +- try { +- urlc.setHostnameVerifier(null); +- } catch (IllegalArgumentException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); +- } +- +- try { +- urlc.setDefaultSSLSocketFactory(null); +- } catch (IllegalArgumentException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); +- } +- ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); + try { +- urlc.setSSLSocketFactory(null); +- } catch (IllegalArgumentException e) { +- System.out.print("Caught proper exception: "); +- System.out.println(e.getMessage()); ++ /** ++ * This test does not establish any connection to the specified ++ * URL, hence a dummy URL is used. ++ */ ++ URL foobar = new URL("https://example.com/"); ++ ++ HttpsURLConnection urlc = ++ (HttpsURLConnection) foobar.openConnection(); ++ ++ try { ++ urlc.getCipherSuite(); ++ } catch (IllegalStateException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ ++ try { ++ urlc.getLocalCertificates(); ++ } catch (IllegalStateException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ ++ try { ++ urlc.getServerCertificates(); ++ } catch (IllegalStateException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ ++ try { ++ urlc.setDefaultHostnameVerifier(null); ++ } catch (IllegalArgumentException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ ++ try { ++ urlc.setHostnameVerifier(null); ++ } catch (IllegalArgumentException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ ++ try { ++ urlc.setDefaultSSLSocketFactory(null); ++ } catch (IllegalArgumentException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ ++ try { ++ urlc.setSSLSocketFactory(null); ++ } catch (IllegalArgumentException e) { ++ System.out.print("Caught proper exception: "); ++ System.out.println(e.getMessage()); ++ } ++ System.out.println("TESTS PASSED"); ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } +- System.out.println("TESTS PASSED"); + } + } +--- jdk/test/sun/security/ssl/javax/net/ssl/FixingJavadocs/SSLSessionNulls.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/FixingJavadocs/SSLSessionNulls.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4387882 + * @summary Need to revisit the javadocs for JSSE, especially the + * promoted classes. ++ * @run main/othervm SSLSessionNulls + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/javax/net/ssl/FixingJavadocs/SSLSocketInherit.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/FixingJavadocs/SSLSocketInherit.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,12 +21,18 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4387882 + * @summary Need to revisit the javadocs for JSSE, especially the + * promoted classes. This test checks to see if the settings + * on the server sockets get propagated to the sockets. ++ * @run main/othervm SSLSocketInherit + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/CheckMyTrustedKeystore.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/CheckMyTrustedKeystore.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4329114 + * @summary Need better way of reflecting the reason when a chain is + * rejected as untrusted. ++ * @run main/othervm CheckMyTrustedKeystore + * @ignore JSSE supports algorithm constraints with CR 6916074, + * need to update this test case in JDK 7 soon + * This is a serious hack job! +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/HttpsURLConnectionLocalCertificateChain.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/HttpsURLConnectionLocalCertificateChain.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,6 +21,11 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4395238 4354003 4387961 4395266 +@@ -30,6 +35,7 @@ + * Fixed 4354003: Need API to get client certificate chain + * Fixed 4387961: HostnameVerifier needs to pass various hostnames + * Fixed 4395266: HttpsURLConnection should be made protected ++ * @run main/othervm HttpsURLConnectionLocalCertificateChain + * @author Brad Wetmore + */ + +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/JSSERenegotiate.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/JSSERenegotiate.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,12 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4280338 + * @summary "Unsupported SSL message version" SSLProtocolException + * w/SSL_RSA_WITH_NULL_MD5 +- * ++ * @run main/othervm JSSERenegotiate + * @author Ram Marti + * @author Brad Wetmore + */ +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/KeyManagerTrustManager.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/KeyManagerTrustManager.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,6 +21,11 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4387949 4302197 4396290 4395286 +@@ -35,6 +40,7 @@ + * 4396290: Need a way to pass algorithm specific parameters to TM's and KM's + * 4395286: The property for setting the default + * KeyManagerFactory/TrustManagerFactory algorithms needs real name ++ * @run main/othervm KeyManagerTrustManager + * @author Brad Wetmore + */ + +@@ -77,17 +83,40 @@ + String kmfAlg = null; + String tmfAlg = null; + +- Security.setProperty("ssl.KeyManagerFactory.algorithm", "hello"); +- Security.setProperty("ssl.TrustManagerFactory.algorithm", "goodbye"); +- +- kmfAlg = KeyManagerFactory.getDefaultAlgorithm(); +- tmfAlg = TrustManagerFactory.getDefaultAlgorithm(); +- +- if (!kmfAlg.equals("hello")) { +- throw new Exception("ssl.KeyManagerFactory.algorithm not set"); +- } +- if (!tmfAlg.equals("goodbye")) { +- throw new Exception("ssl.TrustManagerFactory.algorithm not set"); ++ // reserve the security properties ++ String reservedKMFacAlg = ++ Security.getProperty("ssl.KeyManagerFactory.algorithm"); ++ String reservedTMFacAlg = ++ Security.getProperty("ssl.TrustManagerFactory.algorithm"); ++ ++ try { ++ Security.setProperty("ssl.KeyManagerFactory.algorithm", "hello"); ++ Security.setProperty("ssl.TrustManagerFactory.algorithm", ++ "goodbye"); ++ ++ kmfAlg = KeyManagerFactory.getDefaultAlgorithm(); ++ tmfAlg = TrustManagerFactory.getDefaultAlgorithm(); ++ ++ if (!kmfAlg.equals("hello")) { ++ throw new Exception("ssl.KeyManagerFactory.algorithm not set"); ++ } ++ if (!tmfAlg.equals("goodbye")) { ++ throw new Exception( ++ "ssl.TrustManagerFactory.algorithm not set"); ++ } ++ } finally { ++ // restore the security properties ++ if (reservedKMFacAlg == null) { ++ reservedKMFacAlg = ""; ++ } ++ ++ if (reservedTMFacAlg == null) { ++ reservedTMFacAlg = ""; ++ } ++ Security.setProperty("ssl.KeyManagerFactory.algorithm", ++ reservedKMFacAlg); ++ Security.setProperty("ssl.TrustManagerFactory.algorithm", ++ reservedTMFacAlg); + } + } + } +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLCtxAccessToSessCtx.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLCtxAccessToSessCtx.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4473210 + * @summary SSLSessionContext should be accessible from SSLContext ++ * @run main/othervm SSLCtxAccessToSessCtx + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/AcceptLargeFragments.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/AcceptLargeFragments.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,17 +21,24 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6388456 + * @summary Need adjustable TLS max record size for interoperability + * with non-compliant stacks +- * +- * Check the system property "jsse.SSLEngine.acceptLargeFragments" +- * ++ * @run main/othervm AcceptLargeFragments + * @author xuelei fan + */ + ++/* ++ * Check the system property "jsse.SSLEngine.acceptLargeFragments" ++ */ ++ + import javax.net.ssl.SSLContext; + import javax.net.ssl.SSLEngine; + import javax.net.ssl.SSLSession; +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ExtendedKeySocket.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ExtendedKeySocket.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4981697 + * @summary Rework the X509KeyManager to avoid incompatibility issues ++ * @run main/othervm ExtendedKeySocket + * @author Brad R. Wetmore + */ + +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/LargePacket.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/LargePacket.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,13 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * + * @bug 6388456 + * @summary Need adjustable TLS max record size for interoperability + * with non-compliant +- * + * @run main/othervm -Djsse.enableCBCProtection=false LargePacket + * + * @author Xuelei Fan +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/NoAuthClientAuth.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/NoAuthClientAuth.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4495742 + * @summary Demonstrate SSLEngine switch from no client auth to client auth. +- * ++ * @run main/othervm NoAuthClientAuth + * @author Brad R. Wetmore + */ + +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SessionCacheSizeTests.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SessionCacheSizeTests.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4366807 + * @summary Need new APIs to get/set session timeout and session cache size. ++ * @run main/othervm SessionCacheSizeTests + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SessionTimeOutTests.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SessionTimeOutTests.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4366807 + * @summary Need new APIs to get/set session timeout and session cache size. ++ * @run main/othervm SessionTimeOutTests + */ + + import java.io.*; +@@ -207,7 +213,7 @@ + timeout = sessCtx.getSessionTimeout(); + System.out.println("timeout is changed to: " + timeout); + System.out.println(); +- } ++ } + } + + // check the ids returned by the enumerator +--- jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/testEnabledProtocols.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/testEnabledProtocols.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,6 +21,11 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4416068 4478803 4479736 +@@ -30,6 +35,7 @@ + * session + * 4701722 protocol mismatch exceptions should be consistent between + * SSLv3 and TLSv1 ++ * @run main/othervm testEnabledProtocols + * @author Ram Marti + */ + +--- jdk/test/sun/security/ssl/javax/net/ssl/SSLServerSocket/DefaultSSLServSocketFac.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/SSLServerSocket/DefaultSSLServSocketFac.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /** + * @test + * @bug 6449579 + * @summary DefaultSSLServerSocketFactory does not override createServerSocket() ++ * @run main/othervm DefaultSSLServSocketFac + */ + import java.security.Security; + import javax.net.ServerSocketFactory; +@@ -33,6 +39,10 @@ + + public class DefaultSSLServSocketFac { + public static void main(String[] args) throws Exception { ++ // reserve the security properties ++ String reservedSSFacProvider = ++ Security.getProperty("ssl.ServerSocketFactory.provider"); ++ + try { + Security.setProperty("ssl.ServerSocketFactory.provider", "oops"); + ServerSocketFactory ssocketFactory = +@@ -44,6 +54,13 @@ + throw e; + } + // get the expected exception ++ } finally { ++ // restore the security properties ++ if (reservedSSFacProvider == null) { ++ reservedSSFacProvider = ""; ++ } ++ Security.setProperty("ssl.ServerSocketFactory.provider", ++ reservedSSFacProvider); + } + } + } +--- jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/EmptyCertificateAuthorities.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/EmptyCertificateAuthorities.java 2013-05-05 09:38:46.000000000 -0700 +@@ -23,12 +23,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4873188 + * @summary Support TLS 1.1 +- * @run main/othervm -Djavax.net.debug=all EmptyCertificateAuthorities +- * ++ * @run main/othervm EmptyCertificateAuthorities + * @author Xuelei Fan + */ + +--- jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/ExportableBlockCipher.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/ExportableBlockCipher.java 2013-05-05 09:38:46.000000000 -0700 +@@ -23,12 +23,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4873188 + * @summary Support TLS 1.1 +- * @run main/othervm -Djavax.net.debug=all ExportableBlockCipher +- * ++ * @run main/othervm ExportableBlockCipher + * @author Xuelei Fan + */ + +--- jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/ExportableStreamCipher.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/ExportableStreamCipher.java 2013-05-05 09:38:46.000000000 -0700 +@@ -23,12 +23,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4873188 + * @summary Support TLS 1.1 +- * @run main/othervm -Djavax.net.debug=all ExportableStreamCipher +- * ++ * @run main/othervm ExportableStreamCipher + * @author Xuelei Fan + */ + +--- jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/GenericBlockCipher.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/GenericBlockCipher.java 2013-05-05 09:38:46.000000000 -0700 +@@ -23,12 +23,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4873188 + * @summary Support TLS 1.1 +- * @run main/othervm -Djavax.net.debug=all GenericBlockCipher +- * ++ * @run main/othervm GenericBlockCipher + * @author Xuelei Fan + */ + +--- jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/GenericStreamCipher.java 2012-08-10 10:37:01.000000000 -0700 ++++ jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/GenericStreamCipher.java 2013-05-05 09:38:46.000000000 -0700 +@@ -23,12 +23,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4873188 + * @summary Support TLS 1.1 +- * @run main/othervm -Djavax.net.debug=all GenericStreamCipher +- * ++ * @run main/othervm GenericStreamCipher + * @author Xuelei Fan + */ + +--- jdk/test/sun/security/ssl/sanity/pluggability/CheckSSLContextExport.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sanity/pluggability/CheckSSLContextExport.java 2013-05-05 09:38:46.000000000 -0700 +@@ -64,8 +64,8 @@ + default: + throw new Exception("Internal Test Error!"); + } +- System.out.println("Testing with " + (standardCiphers ? "standard" : "custom") + +- " cipher suites"); ++ System.out.println("Testing with " + ++ (standardCiphers ? "standard" : "custom") + " cipher suites"); + for (int j = 0; j < 4; j++) { + String clsName = null; + try { +@@ -107,11 +107,16 @@ + + public static void main(String[] argv) throws Exception { + String protocols[] = { "SSL", "TLS" }; +- Security.insertProviderAt(new CheckSSLContextExport(protocols), 1); +- for (int i = 0; i < protocols.length; i++) { +- System.out.println("Testing " + protocols[i] + "'s SSLContext"); +- test(protocols[i]); ++ Provider extraProvider = new CheckSSLContextExport(protocols); ++ Security.insertProviderAt(extraProvider, 1); ++ try { ++ for (int i = 0; i < protocols.length; i++) { ++ System.out.println("Testing " + protocols[i] + "'s SSLContext"); ++ test(protocols[i]); ++ } ++ System.out.println("Test Passed"); ++ } finally { ++ Security.removeProvider(extraProvider.getName()); + } +- System.out.println("Test Passed"); + } + } +--- jdk/test/sun/security/ssl/sanity/pluggability/CheckSockFacExport1.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sanity/pluggability/CheckSockFacExport1.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4635454 6208022 + * @summary Check pluggability of SSLSocketFactory and + * SSLServerSocketFactory classes. ++ * @run main/othervm CheckSockFacExport1 + */ + + import java.util.*; +@@ -37,36 +43,57 @@ + public class CheckSockFacExport1 { + + public static void main(String argv[]) throws Exception { +- Security.setProperty("ssl.SocketFactory.provider", +- "MySSLSocketFacImpl"); +- MySSLSocketFacImpl.useCustomCipherSuites(); +- Security.setProperty("ssl.ServerSocketFactory.provider", +- "MySSLServerSocketFacImpl"); +- MySSLServerSocketFacImpl.useCustomCipherSuites(); +- +- String[] supportedCS = null; +- for (int i = 0; i < 2; i++) { +- switch (i) { +- case 0: +- System.out.println("Testing SSLSocketFactory:"); +- SSLSocketFactory sf = (SSLSocketFactory) +- SSLSocketFactory.getDefault(); +- supportedCS = sf.getSupportedCipherSuites(); +- break; +- case 1: +- System.out.println("Testing SSLServerSocketFactory:"); +- SSLServerSocketFactory ssf = (SSLServerSocketFactory) +- SSLServerSocketFactory.getDefault(); +- supportedCS = ssf.getSupportedCipherSuites(); +- break; +- default: +- throw new Exception("Internal Test Error"); ++ // reserve the security properties ++ String reservedSFacAlg = ++ Security.getProperty("ssl.SocketFactory.provider"); ++ String reservedSSFacAlg = ++ Security.getProperty("ssl.ServerSocketFactory.provider"); ++ ++ try { ++ Security.setProperty("ssl.SocketFactory.provider", ++ "MySSLSocketFacImpl"); ++ MySSLSocketFacImpl.useCustomCipherSuites(); ++ Security.setProperty("ssl.ServerSocketFactory.provider", ++ "MySSLServerSocketFacImpl"); ++ MySSLServerSocketFacImpl.useCustomCipherSuites(); ++ ++ String[] supportedCS = null; ++ for (int i = 0; i < 2; i++) { ++ switch (i) { ++ case 0: ++ System.out.println("Testing SSLSocketFactory:"); ++ SSLSocketFactory sf = (SSLSocketFactory) ++ SSLSocketFactory.getDefault(); ++ supportedCS = sf.getSupportedCipherSuites(); ++ break; ++ case 1: ++ System.out.println("Testing SSLServerSocketFactory:"); ++ SSLServerSocketFactory ssf = (SSLServerSocketFactory) ++ SSLServerSocketFactory.getDefault(); ++ supportedCS = ssf.getSupportedCipherSuites(); ++ break; ++ default: ++ throw new Exception("Internal Test Error"); ++ } ++ System.out.println(Arrays.asList(supportedCS)); ++ if (supportedCS.length == 0) { ++ throw new Exception("supported ciphersuites are empty"); ++ } ++ } ++ System.out.println("Test Passed"); ++ } finally { ++ // restore the security properties ++ if (reservedSFacAlg == null) { ++ reservedSFacAlg = ""; + } +- System.out.println(Arrays.asList(supportedCS)); +- if (supportedCS.length == 0) { +- throw new Exception("supported ciphersuites are empty"); ++ ++ if (reservedSSFacAlg == null) { ++ reservedSSFacAlg = ""; + } ++ Security.setProperty("ssl.SocketFactory.provider", ++ reservedSFacAlg); ++ Security.setProperty("ssl.ServerSocketFactory.provider", ++ reservedSSFacAlg); + } +- System.out.println("Test Passed"); + } + } +--- jdk/test/sun/security/ssl/sanity/pluggability/CheckSockFacExport2.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sanity/pluggability/CheckSockFacExport2.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4635454 + * @summary Check pluggability of SSLSocketFactory and +- * SSLServerSocketFactory classes. ++ * SSLServerSocketFactory classes. ++ * @run main/othervm CheckSockFacExport2 + */ + import java.security.*; + import java.net.*; +@@ -34,38 +40,59 @@ + public class CheckSockFacExport2 { + + public static void main(String argv[]) throws Exception { +- Security.setProperty("ssl.SocketFactory.provider", +- "MySSLSocketFacImpl"); +- MySSLSocketFacImpl.useStandardCipherSuites(); +- Security.setProperty("ssl.ServerSocketFactory.provider", +- "MySSLServerSocketFacImpl"); +- MySSLServerSocketFacImpl.useStandardCipherSuites(); +- +- boolean result = false; +- for (int i = 0; i < 2; i++) { +- switch (i) { +- case 0: +- System.out.println("Testing SSLSocketFactory:"); +- SSLSocketFactory sf = (SSLSocketFactory) +- SSLSocketFactory.getDefault(); +- result = (sf instanceof MySSLSocketFacImpl); +- break; +- +- case 1: +- System.out.println("Testing SSLServerSocketFactory:"); +- SSLServerSocketFactory ssf = (SSLServerSocketFactory) +- SSLServerSocketFactory.getDefault(); +- result = (ssf instanceof MySSLServerSocketFacImpl); +- break; +- default: +- throw new Exception("Internal Test Error"); ++ // reserve the security properties ++ String reservedSFacAlg = ++ Security.getProperty("ssl.SocketFactory.provider"); ++ String reservedSSFacAlg = ++ Security.getProperty("ssl.ServerSocketFactory.provider"); ++ ++ try { ++ Security.setProperty("ssl.SocketFactory.provider", ++ "MySSLSocketFacImpl"); ++ MySSLSocketFacImpl.useStandardCipherSuites(); ++ Security.setProperty("ssl.ServerSocketFactory.provider", ++ "MySSLServerSocketFacImpl"); ++ MySSLServerSocketFacImpl.useStandardCipherSuites(); ++ ++ boolean result = false; ++ for (int i = 0; i < 2; i++) { ++ switch (i) { ++ case 0: ++ System.out.println("Testing SSLSocketFactory:"); ++ SSLSocketFactory sf = (SSLSocketFactory) ++ SSLSocketFactory.getDefault(); ++ result = (sf instanceof MySSLSocketFacImpl); ++ break; ++ ++ case 1: ++ System.out.println("Testing SSLServerSocketFactory:"); ++ SSLServerSocketFactory ssf = (SSLServerSocketFactory) ++ SSLServerSocketFactory.getDefault(); ++ result = (ssf instanceof MySSLServerSocketFacImpl); ++ break; ++ default: ++ throw new Exception("Internal Test Error"); ++ } ++ if (result) { ++ System.out.println("...accepted valid SFs"); ++ } else { ++ throw new Exception("...wrong SF is used"); ++ } ++ } ++ System.out.println("Test Passed"); ++ } finally { ++ // restore the security properties ++ if (reservedSFacAlg == null) { ++ reservedSFacAlg = ""; + } +- if (result) { +- System.out.println("...accepted valid SFs"); +- } else { +- throw new Exception("...wrong SF is used"); ++ ++ if (reservedSSFacAlg == null) { ++ reservedSSFacAlg = ""; + } ++ Security.setProperty("ssl.SocketFactory.provider", ++ reservedSFacAlg); ++ Security.setProperty("ssl.ServerSocketFactory.provider", ++ reservedSSFacAlg); + } +- System.out.println("Test Passed"); + } + } +--- jdk/test/sun/security/ssl/sun/net/www/http/ChunkedOutputStream/Test.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/http/ChunkedOutputStream/Test.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,6 +21,11 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /** + * @test + * @bug 5026745 +@@ -283,31 +288,37 @@ + System.getProperty("test.src", "./") + "/" + pathToStores + + "/" + trustStoreFile; + +- System.setProperty("javax.net.ssl.keyStore", keyFilename); +- System.setProperty("javax.net.ssl.keyStorePassword", passwd); +- System.setProperty("javax.net.ssl.trustStore", trustFilename); +- System.setProperty("javax.net.ssl.trustStorePassword", passwd); +- HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier()); +- ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); + try { +- server = new HttpServer (new Test(), 1, 10, 0); +- System.out.println ("Server started: listening on port: " + server.getLocalPort()); +- // the test server doesn't support keep-alive yet +- // test1("http://localhost:"+server.getLocalPort()+"/d0"); +- test1("https://localhost:"+server.getLocalPort()+"/d01"); +- test3("https://localhost:"+server.getLocalPort()+"/d3"); +- test4("https://localhost:"+server.getLocalPort()+"/d4"); +- test5("https://localhost:"+server.getLocalPort()+"/d5"); +- test6("https://localhost:"+server.getLocalPort()+"/d6"); +- test7("https://localhost:"+server.getLocalPort()+"/d7"); +- test8("https://localhost:"+server.getLocalPort()+"/d8"); +- } catch (Exception e) { +- if (server != null) { +- server.terminate(); ++ System.setProperty("javax.net.ssl.keyStore", keyFilename); ++ System.setProperty("javax.net.ssl.keyStorePassword", passwd); ++ System.setProperty("javax.net.ssl.trustStore", trustFilename); ++ System.setProperty("javax.net.ssl.trustStorePassword", passwd); ++ HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier()); ++ ++ try { ++ server = new HttpServer (new Test(), 1, 10, 0); ++ System.out.println ("Server started: listening on port: " + server.getLocalPort()); ++ // the test server doesn't support keep-alive yet ++ // test1("http://localhost:"+server.getLocalPort()+"/d0"); ++ test1("https://localhost:"+server.getLocalPort()+"/d01"); ++ test3("https://localhost:"+server.getLocalPort()+"/d3"); ++ test4("https://localhost:"+server.getLocalPort()+"/d4"); ++ test5("https://localhost:"+server.getLocalPort()+"/d5"); ++ test6("https://localhost:"+server.getLocalPort()+"/d6"); ++ test7("https://localhost:"+server.getLocalPort()+"/d7"); ++ test8("https://localhost:"+server.getLocalPort()+"/d8"); ++ } catch (Exception e) { ++ if (server != null) { ++ server.terminate(); ++ } ++ throw e; + } +- throw e; ++ server.terminate(); ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } +- server.terminate(); + } + + static class NameVerifier implements HostnameVerifier { +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/B6216082.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/B6216082.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,14 +21,19 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6216082 + * @library ../../../httpstest/ + * @build HttpCallback HttpServer ClosedChannelList HttpTransaction TunnelProxy +- * @run main/othervm B6216082 + * @summary Redirect problem with HttpsURLConnection using a proxy +-*/ ++ * @run main/othervm B6216082 ++ */ + + import java.io.*; + import java.net.*; +@@ -46,20 +51,27 @@ + static InetAddress firstNonLoAddress = null; + + public static void main(String[] args) throws Exception { +- // XXX workaround for CNFE +- Class.forName("java.nio.channels.ClosedByInterruptException"); +- setupEnv(); ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); ++ try { ++ // XXX workaround for CNFE ++ Class.forName("java.nio.channels.ClosedByInterruptException"); ++ setupEnv(); + +- startHttpServer(); ++ startHttpServer(); + +- // https.proxyPort can only be set after the TunnelProxy has been +- // created as it will use an ephemeral port. +- System.setProperty( "https.proxyPort", (new Integer(proxy.getLocalPort())).toString() ); ++ // https.proxyPort can only be set after the TunnelProxy has been ++ // created as it will use an ephemeral port. ++ System.setProperty("https.proxyPort", ++ (new Integer(proxy.getLocalPort())).toString() ); + +- makeHttpCall(); ++ makeHttpCall(); + +- if (httpTrans.hasBadRequest) { +- throw new RuntimeException("Test failed : bad http request"); ++ if (httpTrans.hasBadRequest) { ++ throw new RuntimeException("Test failed : bad http request"); ++ } ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } + } + +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CloseKeepAliveCached.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CloseKeepAliveCached.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,13 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6618387 + * @summary SSL client sessions do not close cleanly. A TCP reset occurs + * instead of a close_notify alert. +- * @run main/othervm -Djavax.net.debug=ssl CloseKeepAliveCached +- * ++ * @run main/othervm CloseKeepAliveCached + * @ignore + * After run the test manually, at the end of the debug output, + * if "MainThread, called close()" found, the test passed. Otherwise, +@@ -140,13 +144,15 @@ + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { +- + /* + * Wait for server to get started. + */ + while (!serverReady) { + Thread.sleep(50); + } ++ ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); + try { + HttpsURLConnection http = null; + +@@ -180,6 +186,8 @@ + if (sslServerSocket != null) + sslServerSocket.close(); + throw ioex; ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } + } + +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CookieHandlerTest.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CookieHandlerTest.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,9 +21,15 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* @test +- * @summary Unit test for java.net.CookieHandler + * @bug 4696506 4942650 ++ * @summary Unit test for java.net.CookieHandler ++ * @run main/othervm CookieHandlerTest + * @author Yingxian Wang + */ + +@@ -182,26 +188,34 @@ + System.getProperty("test.src", "./") + "/" + pathToStores + + "/" + trustStoreFile; + +- System.setProperty("javax.net.ssl.keyStore", keyFilename); +- System.setProperty("javax.net.ssl.keyStorePassword", passwd); +- System.setProperty("javax.net.ssl.trustStore", trustFilename); +- System.setProperty("javax.net.ssl.trustStorePassword", passwd); +- +- if (debug) +- System.setProperty("javax.net.debug", "all"); +- +- /* +- * Start the tests. +- */ +- cookies = new HashMap<String, String>(); +- cookies.put("Cookie", +- "$Version=\"1\"; Customer=\"WILE_E_COYOTE\"; $Path=\"/acme\""); +- cookies.put("Set-Cookie2", +- "$Version=\"1\"; Part_Number=\"Riding_Rocket_0023\"; " + +- "$Path=\"/acme/ammo\"; Part_Number=\"Rocket_Launcher_0001\"; "+ +- "$Path=\"/acme\""); +- CookieHandler.setDefault(new MyCookieHandler()); +- new CookieHandlerTest(); ++ CookieHandler reservedCookieHandler = CookieHandler.getDefault(); ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); ++ try { ++ System.setProperty("javax.net.ssl.keyStore", keyFilename); ++ System.setProperty("javax.net.ssl.keyStorePassword", passwd); ++ System.setProperty("javax.net.ssl.trustStore", trustFilename); ++ System.setProperty("javax.net.ssl.trustStorePassword", passwd); ++ ++ if (debug) ++ System.setProperty("javax.net.debug", "all"); ++ ++ /* ++ * Start the tests. ++ */ ++ cookies = new HashMap<String, String>(); ++ cookies.put("Cookie", ++ "$Version=\"1\"; Customer=\"WILE_E_COYOTE\"; $Path=\"/acme\""); ++ cookies.put("Set-Cookie2", ++ "$Version=\"1\"; Part_Number=\"Riding_Rocket_0023\"; " + ++ "$Path=\"/acme/ammo\"; Part_Number=\"Rocket_Launcher_0001\"; "+ ++ "$Path=\"/acme\""); ++ CookieHandler.setDefault(new MyCookieHandler()); ++ new CookieHandlerTest(); ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); ++ CookieHandler.setDefault(reservedCookieHandler); ++ } + } + + Thread clientThread = null; +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CookieHttpsClientTest.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CookieHttpsClientTest.java 2013-05-05 09:38:46.000000000 -0700 +@@ -26,6 +26,7 @@ + * @bug 7129083 + * @summary Cookiemanager does not store cookies if url is read + * before setting cookiemanager ++ * @run main/othervm CookieHttpsClientTest + */ + + import java.net.CookieHandler; +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,9 +21,15 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* @test +- * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 + * @bug 6766775 ++ * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 ++ * @run main/othervm DNSIdentities + * @author Xuelei Fan + */ + +@@ -691,34 +697,39 @@ + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { +- SSLContext context = getSSLContext(trusedCertStr, clientCertStr, +- clientModulus, clientPrivateExponent, passphrase); +- +- SSLContext.setDefault(context); +- +- /* +- * Wait for server to get started. +- */ +- while (!serverReady) { +- Thread.sleep(50); +- } ++ SSLContext reservedSSLContext = SSLContext.getDefault(); ++ try { ++ SSLContext context = getSSLContext(trusedCertStr, clientCertStr, ++ clientModulus, clientPrivateExponent, passphrase); + +- HttpsURLConnection http = null; ++ SSLContext.setDefault(context); + +- /* establish http connection to server */ +- URL url = new URL("https://localhost:" + serverPort+"/"); +- System.out.println("url is "+url.toString()); ++ /* ++ * Wait for server to get started. ++ */ ++ while (!serverReady) { ++ Thread.sleep(50); ++ } + +- try { +- http = (HttpsURLConnection)url.openConnection(); ++ HttpsURLConnection http = null; + +- int respCode = http.getResponseCode(); +- System.out.println("respCode = "+respCode); +- } finally { +- if (http != null) { +- http.disconnect(); ++ /* establish http connection to server */ ++ URL url = new URL("https://localhost:" + serverPort+"/"); ++ System.out.println("url is "+url.toString()); ++ ++ try { ++ http = (HttpsURLConnection)url.openConnection(); ++ ++ int respCode = http.getResponseCode(); ++ System.out.println("respCode = "+respCode); ++ } finally { ++ if (http != null) { ++ http.disconnect(); ++ } ++ closeReady = true; + } +- closeReady = true; ++ } finally { ++ SSLContext.setDefault(reservedSSLContext); + } + } + +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsCreateSockTest.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsCreateSockTest.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /** + * @test + * @bug 6771432 +- * @summary createSocket() - smpatch fails using 1.6.0_10 because of "Unconnected sockets not implemented" ++ * @summary createSocket() - smpatch fails using 1.6.0_10 because of ++ * "Unconnected sockets not implemented" ++ * @run main/othervm HttpsCreateSockTest + */ + + import javax.net.SocketFactory; +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsPost.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsPost.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4423074 + * @summary Need to rebase all the duplicated classes from Merlin. + * This test will check out http POST ++ * @run main/othervm HttpsPost + */ + + import java.io.*; +@@ -140,34 +146,38 @@ + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); ++ try { ++ /* ++ * Wait for server to get started. ++ */ ++ while (!serverReady) { ++ Thread.sleep(50); ++ } + +- /* +- * Wait for server to get started. +- */ +- while (!serverReady) { +- Thread.sleep(50); +- } +- +- // Send HTTP POST request to server +- URL url = new URL("https://localhost:"+serverPort); +- +- HttpsURLConnection.setDefaultHostnameVerifier( +- new NameVerifier()); +- HttpsURLConnection http = (HttpsURLConnection)url.openConnection(); +- http.setDoOutput(true); ++ // Send HTTP POST request to server ++ URL url = new URL("https://localhost:"+serverPort); + +- http.setRequestMethod("POST"); +- PrintStream ps = new PrintStream(http.getOutputStream()); +- try { +- ps.println(postMsg); +- ps.flush(); +- if (http.getResponseCode() != 200) { +- throw new RuntimeException("test Failed"); ++ HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier()); ++ HttpsURLConnection http = (HttpsURLConnection)url.openConnection(); ++ http.setDoOutput(true); ++ ++ http.setRequestMethod("POST"); ++ PrintStream ps = new PrintStream(http.getOutputStream()); ++ try { ++ ps.println(postMsg); ++ ps.flush(); ++ if (http.getResponseCode() != 200) { ++ throw new RuntimeException("test Failed"); ++ } ++ } finally { ++ ps.close(); ++ http.disconnect(); ++ closeReady = true; + } + } finally { +- ps.close(); +- http.disconnect(); +- closeReady = true; ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } + } + +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsProxyStackOverflow.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsProxyStackOverflow.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,13 @@ + * questions. + */ + ++// No way to reserve default Authenticator, need to run in othervm mode. ++ + /* + * @test + * @bug 6670868 + * @summary StackOverFlow with bad authenticated Proxy tunnels ++ * @run main/othervm HttpsProxyStackOverflow + */ + + import java.io.IOException; +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsSocketFacTest.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsSocketFacTest.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,6 +21,11 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 6614957 +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,9 +21,15 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* @test +- * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 + * @bug 6766775 ++ * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 ++ * @run main/othervm IPAddressDNSIdentities + * @author Xuelei Fan + */ + +@@ -691,43 +697,48 @@ + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { +- SSLContext context = getSSLContext(trusedCertStr, clientCertStr, +- clientModulus, clientPrivateExponent, passphrase); +- +- SSLContext.setDefault(context); +- +- /* +- * Wait for server to get started. +- */ +- while (!serverReady) { +- Thread.sleep(50); +- } +- +- HttpsURLConnection http = null; ++ SSLContext reservedSSLContext = SSLContext.getDefault(); ++ try { ++ SSLContext context = getSSLContext(trusedCertStr, clientCertStr, ++ clientModulus, clientPrivateExponent, passphrase); + +- /* establish http connection to server */ +- URL url = new URL("https://127.0.0.1:" + serverPort+"/"); +- System.out.println("url is "+url.toString()); ++ SSLContext.setDefault(context); + +- try { +- http = (HttpsURLConnection)url.openConnection(); ++ /* ++ * Wait for server to get started. ++ */ ++ while (!serverReady) { ++ Thread.sleep(50); ++ } + +- int respCode = http.getResponseCode(); +- System.out.println("respCode = " + respCode); ++ HttpsURLConnection http = null; + +- throw new Exception("Unexpectly found subject alternative name " + +- "matching IP address"); +- } catch (SSLHandshakeException sslhe) { +- // no subject alternative names matching IP address 127.0.0.1 found +- // that's the expected exception, ignore it. +- } catch (IOException ioe) { +- // HttpsClient may throw IOE during checking URL spoofing, +- // that's the expected exception, ignore it. +- } finally { +- if (http != null) { +- http.disconnect(); ++ /* establish http connection to server */ ++ URL url = new URL("https://127.0.0.1:" + serverPort+"/"); ++ System.out.println("url is "+url.toString()); ++ ++ try { ++ http = (HttpsURLConnection)url.openConnection(); ++ ++ int respCode = http.getResponseCode(); ++ System.out.println("respCode = " + respCode); ++ ++ throw new Exception("Unexpectly found " + ++ "subject alternative name matching IP address"); ++ } catch (SSLHandshakeException sslhe) { ++ // no subject alternative names matching IP address 127.0.0.1 ++ // found that's the expected exception, ignore it. ++ } catch (IOException ioe) { ++ // HttpsClient may throw IOE during checking URL spoofing, ++ // that's the expected exception, ignore it. ++ } finally { ++ if (http != null) { ++ http.disconnect(); ++ } ++ closeReady = true; + } +- closeReady = true; ++ } finally { ++ SSLContext.setDefault(reservedSSLContext); + } + } + +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,9 +21,15 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* @test + * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 + * @bug 6766775 ++ * @run main/othervm IPAddressIPIdentities + * @author Xuelei Fan + */ + +@@ -692,34 +698,39 @@ + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { +- SSLContext context = getSSLContext(trusedCertStr, clientCertStr, +- clientModulus, clientPrivateExponent, passphrase); +- +- SSLContext.setDefault(context); +- +- /* +- * Wait for server to get started. +- */ +- while (!serverReady) { +- Thread.sleep(50); +- } ++ SSLContext reservedSSLContext = SSLContext.getDefault(); ++ try { ++ SSLContext context = getSSLContext(trusedCertStr, clientCertStr, ++ clientModulus, clientPrivateExponent, passphrase); + +- HttpsURLConnection http = null; ++ SSLContext.setDefault(context); + +- /* establish http connection to server */ +- URL url = new URL("https://127.0.0.1:" + serverPort+"/"); +- System.out.println("url is "+url.toString()); ++ /* ++ * Wait for server to get started. ++ */ ++ while (!serverReady) { ++ Thread.sleep(50); ++ } + +- try { +- http = (HttpsURLConnection)url.openConnection(); ++ HttpsURLConnection http = null; + +- int respCode = http.getResponseCode(); +- System.out.println("respCode = "+respCode); +- } finally { +- if (http != null) { +- http.disconnect(); ++ /* establish http connection to server */ ++ URL url = new URL("https://127.0.0.1:" + serverPort+"/"); ++ System.out.println("url is "+url.toString()); ++ ++ try { ++ http = (HttpsURLConnection)url.openConnection(); ++ ++ int respCode = http.getResponseCode(); ++ System.out.println("respCode = "+respCode); ++ } finally { ++ if (http != null) { ++ http.disconnect(); ++ } ++ closeReady = true; + } +- closeReady = true; ++ } finally { ++ SSLContext.setDefault(reservedSSLContext); + } + } + +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,9 +21,15 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* @test + * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 + * @bug 6766775 ++ * @run main/othervm IPIdentities + * @author Xuelei Fan + */ + +@@ -692,34 +698,38 @@ + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { +- SSLContext context = getSSLContext(trusedCertStr, clientCertStr, +- clientModulus, clientPrivateExponent, passphrase); +- +- SSLContext.setDefault(context); +- +- /* +- * Wait for server to get started. +- */ +- while (!serverReady) { +- Thread.sleep(50); +- } +- +- HttpsURLConnection http = null; +- +- /* establish http connection to server */ +- URL url = new URL("https://localhost:" + serverPort+"/"); +- System.out.println("url is "+url.toString()); +- ++ SSLContext reservedSSLContext = SSLContext.getDefault(); + try { +- http = (HttpsURLConnection)url.openConnection(); ++ SSLContext context = getSSLContext(trusedCertStr, clientCertStr, ++ clientModulus, clientPrivateExponent, passphrase); ++ SSLContext.setDefault(context); ++ ++ /* ++ * Wait for server to get started. ++ */ ++ while (!serverReady) { ++ Thread.sleep(50); ++ } + +- int respCode = http.getResponseCode(); +- System.out.println("respCode = "+respCode); +- } finally { +- if (http != null) { +- http.disconnect(); ++ HttpsURLConnection http = null; ++ ++ /* establish http connection to server */ ++ URL url = new URL("https://localhost:" + serverPort+"/"); ++ System.out.println("url is "+url.toString()); ++ ++ try { ++ http = (HttpsURLConnection)url.openConnection(); ++ ++ int respCode = http.getResponseCode(); ++ System.out.println("respCode = "+respCode); ++ } finally { ++ if (http != null) { ++ http.disconnect(); ++ } ++ closeReady = true; + } +- closeReady = true; ++ } finally { ++ SSLContext.setDefault(reservedSSLContext); + } + } + +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,9 +21,15 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* @test +- * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 + * @bug 6766775 ++ * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 ++ * @run main/othervm Identities + * @author Xuelei Fan + */ + +@@ -691,34 +697,39 @@ + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { +- SSLContext context = getSSLContext(trusedCertStr, clientCertStr, +- clientModulus, clientPrivateExponent, passphrase); +- +- SSLContext.setDefault(context); +- +- /* +- * Wait for server to get started. +- */ +- while (!serverReady) { +- Thread.sleep(50); +- } ++ SSLContext reservedSSLContext = SSLContext.getDefault(); ++ try { ++ SSLContext context = getSSLContext(trusedCertStr, clientCertStr, ++ clientModulus, clientPrivateExponent, passphrase); + +- HttpsURLConnection http = null; ++ SSLContext.setDefault(context); + +- /* establish http connection to server */ +- URL url = new URL("https://localhost:" + serverPort+"/"); +- System.out.println("url is "+url.toString()); ++ /* ++ * Wait for server to get started. ++ */ ++ while (!serverReady) { ++ Thread.sleep(50); ++ } + +- try { +- http = (HttpsURLConnection)url.openConnection(); ++ HttpsURLConnection http = null; + +- int respCode = http.getResponseCode(); +- System.out.println("respCode = "+respCode); +- } finally { +- if (http != null) { +- http.disconnect(); ++ /* establish http connection to server */ ++ URL url = new URL("https://localhost:" + serverPort+"/"); ++ System.out.println("url is "+url.toString()); ++ ++ try { ++ http = (HttpsURLConnection)url.openConnection(); ++ ++ int respCode = http.getResponseCode(); ++ System.out.println("respCode = "+respCode); ++ } finally { ++ if (http != null) { ++ http.disconnect(); ++ } ++ closeReady = true; + } +- closeReady = true; ++ } finally { ++ SSLContext.setDefault(reservedSSLContext); + } + } + +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.java 2012-08-10 10:37:02.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -147,44 +147,51 @@ + static String postMsg = "Testing HTTP post on a https server"; + + static void doClientSide(String hostname) throws Exception { +- /* +- * setup up a proxy +- */ +- setupProxy(); +- +- /* +- * we want to avoid URLspoofCheck failures in cases where the cert +- * DN name does not match the hostname in the URL. +- */ +- HttpsURLConnection.setDefaultHostnameVerifier( +- new NameVerifier()); +- URL url = new URL("https://" + hostname+ ":" + serverPort); +- +- HttpsURLConnection https = (HttpsURLConnection)url.openConnection(); +- https.setDoOutput(true); +- https.setRequestMethod("POST"); +- PrintStream ps = null; ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); + try { +- ps = new PrintStream(https.getOutputStream()); +- ps.println(postMsg); +- ps.flush(); +- if (https.getResponseCode() != 200) { +- throw new RuntimeException("test Failed"); +- } +- ps.close(); +- +- // clear the pipe +- BufferedReader in = new BufferedReader( +- new InputStreamReader( +- https.getInputStream())); +- String inputLine; +- while ((inputLine = in.readLine()) != null) +- System.out.println("Client received: " + inputLine); +- in.close(); +- } catch (SSLException e) { +- if (ps != null) +- ps.close(); +- throw e; ++ /* ++ * setup up a proxy ++ */ ++ SocketAddress pAddr = setupProxy(); ++ ++ /* ++ * we want to avoid URLspoofCheck failures in cases where the cert ++ * DN name does not match the hostname in the URL. ++ */ ++ HttpsURLConnection.setDefaultHostnameVerifier( ++ new NameVerifier()); ++ URL url = new URL("https://" + hostname+ ":" + serverPort); ++ ++ Proxy p = new Proxy(Proxy.Type.HTTP, pAddr); ++ HttpsURLConnection https = (HttpsURLConnection)url.openConnection(p); ++ https.setDoOutput(true); ++ https.setRequestMethod("POST"); ++ PrintStream ps = null; ++ try { ++ ps = new PrintStream(https.getOutputStream()); ++ ps.println(postMsg); ++ ps.flush(); ++ if (https.getResponseCode() != 200) { ++ throw new RuntimeException("test Failed"); ++ } ++ ps.close(); ++ ++ // clear the pipe ++ BufferedReader in = new BufferedReader( ++ new InputStreamReader( ++ https.getInputStream())); ++ String inputLine; ++ while ((inputLine = in.readLine()) != null) ++ System.out.println("Client received: " + inputLine); ++ in.close(); ++ } catch (SSLException e) { ++ if (ps != null) ++ ps.close(); ++ throw e; ++ } ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } + } + +@@ -194,14 +201,12 @@ + } + } + +- static void setupProxy() throws IOException { ++ static SocketAddress setupProxy() throws IOException { + ProxyTunnelServer pserver = new ProxyTunnelServer(); + + // disable proxy authentication + pserver.needUserAuth(false); + pserver.start(); +- System.setProperty("https.proxyHost", "localhost"); +- System.setProperty("https.proxyPort", String.valueOf( +- pserver.getPort())); ++ return new InetSocketAddress("localhost", pserver.getPort()); + } + } --- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh 2012-08-10 10:37:02.000000000 -0700 -+++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh 2013-05-05 09:38:46.000000000 -0700 @@ -32,7 +32,7 @@ HOSTNAME=`uname -n` OS=`uname -s` @@ -80962,8 +98351,57 @@ PS=":" FS="/" ;; +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.java 2012-08-10 10:37:03.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.java 2013-05-05 09:38:46.000000000 -0700 +@@ -152,7 +152,7 @@ + /* + * setup up a proxy + */ +- setupProxy(); ++ SocketAddress pAddr = setupProxy(); + + /* + * we want to avoid URLspoofCheck failures in cases where the cert +@@ -162,7 +162,8 @@ + new NameVerifier()); + URL url = new URL("https://" + hostname + ":" + serverPort); + +- HttpsURLConnection https = (HttpsURLConnection)url.openConnection(); ++ Proxy p = new Proxy(Proxy.Type.HTTP, pAddr); ++ HttpsURLConnection https = (HttpsURLConnection)url.openConnection(p); + https.setDoOutput(true); + https.setRequestMethod("POST"); + PrintStream ps = null; +@@ -195,7 +196,7 @@ + } + } + +- static void setupProxy() throws IOException { ++ static SocketAddress setupProxy() throws IOException { + ProxyTunnelServer pserver = new ProxyTunnelServer(); + + /* +@@ -209,9 +210,8 @@ + pserver.setUserAuth("Test", "test123"); + + pserver.start(); +- System.setProperty("https.proxyHost", "localhost"); +- System.setProperty("https.proxyPort", String.valueOf( +- pserver.getPort())); ++ ++ return new InetSocketAddress("localhost", pserver.getPort()); + } + + public static class TestAuthenticator extends Authenticator { +@@ -220,6 +220,4 @@ + "test123".toCharArray()); + } + } +- +- + } --- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh 2012-08-10 10:37:03.000000000 -0700 -+++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh 2013-05-05 09:38:46.000000000 -0700 @@ -32,7 +32,7 @@ HOSTNAME=`uname -n` OS=`uname -s` @@ -80973,8 +98411,605 @@ PS=":" FS="/" ;; +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/ReadTimeout.java 2012-08-10 10:37:03.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/ReadTimeout.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,10 +21,18 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4811482 4700777 4905410 +- * @summary sun.net.client.defaultConnectTimeout should work with HttpsURLConnection; HTTP client: Connect and read timeouts; Https needs to support new tiger features that went into http ++ * @summary sun.net.client.defaultConnectTimeout should work with ++ * HttpsURLConnection; HTTP client: Connect and read timeouts; ++ * Https needs to support new tiger features that went into http ++ * @run main/othervm ReadTimeout + */ + + import java.io.*; +@@ -143,44 +151,48 @@ + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { +- +- /* +- * Wait for server to get started. +- */ +- while (!serverReady) { +- Thread.sleep(50); +- } +- HttpsURLConnection http = null; ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); + try { +- URL url = new URL("https://localhost:"+serverPort); +- +- // set read timeout through system property +- System.setProperty("sun.net.client.defaultReadTimeout", "2000"); +- HttpsURLConnection.setDefaultHostnameVerifier( +- new NameVerifier()); +- http = (HttpsURLConnection)url.openConnection(); +- +- InputStream is = http.getInputStream (); +- } catch (SocketTimeoutException stex) { +- done(); +- http.disconnect(); +- } ++ /* ++ * Wait for server to get started. ++ */ ++ while (!serverReady) { ++ Thread.sleep(50); ++ } ++ HttpsURLConnection http = null; ++ try { ++ URL url = new URL("https://localhost:"+serverPort); ++ ++ // set read timeout through system property ++ System.setProperty("sun.net.client.defaultReadTimeout", "2000"); ++ HttpsURLConnection.setDefaultHostnameVerifier( ++ new NameVerifier()); ++ http = (HttpsURLConnection)url.openConnection(); ++ ++ InputStream is = http.getInputStream (); ++ } catch (SocketTimeoutException stex) { ++ done(); ++ http.disconnect(); ++ } + +- try { +- URL url = new URL("https://localhost:"+serverPort); ++ try { ++ URL url = new URL("https://localhost:"+serverPort); + +- HttpsURLConnection.setDefaultHostnameVerifier( +- new NameVerifier()); +- http = (HttpsURLConnection)url.openConnection(); +- // set read timeout through API +- http.setReadTimeout(2000); +- +- InputStream is = http.getInputStream (); +- } catch (SocketTimeoutException stex) { +- done(); +- http.disconnect(); ++ HttpsURLConnection.setDefaultHostnameVerifier( ++ new NameVerifier()); ++ http = (HttpsURLConnection)url.openConnection(); ++ // set read timeout through API ++ http.setReadTimeout(2000); ++ ++ InputStream is = http.getInputStream (); ++ } catch (SocketTimeoutException stex) { ++ done(); ++ http.disconnect(); ++ } ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } +- + } + + static class NameVerifier implements HostnameVerifier { +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Redirect.java 2012-08-10 10:37:03.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Redirect.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,11 +21,17 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4423074 + * @summary Need to rebase all the duplicated classes from Merlin. + * This test will check out http POST ++ * @run main/othervm Redirect + */ + + import java.io.*; +@@ -139,28 +145,33 @@ + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); ++ try { ++ /* ++ * Wait for server to get started. ++ */ ++ while (!serverReady) { ++ Thread.sleep(50); ++ } + +- /* +- * Wait for server to get started. +- */ +- while (!serverReady) { +- Thread.sleep(50); +- } +- +- // Send HTTP POST request to server +- URL url = new URL("https://localhost:"+serverPort); ++ // Send HTTP POST request to server ++ URL url = new URL("https://localhost:"+serverPort); + +- HttpsURLConnection.setDefaultHostnameVerifier( +- new NameVerifier()); +- HttpsURLConnection http = (HttpsURLConnection)url.openConnection(); +- try { +- System.out.println("response header: "+http.getHeaderField(0)); +- if (http.getResponseCode() != 200) { +- throw new RuntimeException("test Failed"); ++ HttpsURLConnection.setDefaultHostnameVerifier( ++ new NameVerifier()); ++ HttpsURLConnection http = (HttpsURLConnection)url.openConnection(); ++ try { ++ System.out.println("response header: "+http.getHeaderField(0)); ++ if (http.getResponseCode() != 200) { ++ throw new RuntimeException("test Failed"); ++ } ++ } finally { ++ http.disconnect(); ++ closeReady = true; + } + } finally { +- http.disconnect(); +- closeReady = true; ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } + } + +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/RetryHttps.java 2012-08-10 10:37:03.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/RetryHttps.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,9 +21,15 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* @test +- * @summary Https can not retry request + * @bug 4799427 ++ * @summary Https can not retry request ++ * @run main/othervm RetryHttps + * @author Yingxian Wang + */ + +@@ -129,36 +135,41 @@ + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { +- +- /* +- * Wait for server to get started. +- */ +- while (!serverReady) { +- Thread.sleep(50); +- } ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); + try { +- HttpsURLConnection http = null; +- /* establish http connection to server */ +- URL url = new URL("https://localhost:" + serverPort+"/file1"); +- System.out.println("url is "+url.toString()); +- HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier()); +- http = (HttpsURLConnection)url.openConnection(); +- int respCode = http.getResponseCode(); +- int cl = http.getContentLength(); +- InputStream is = http.getInputStream (); +- int count = 0; +- while (is.read() != -1 && count++ < cl); +- System.out.println("respCode1 = "+respCode); +- Thread.sleep(2000); +- url = new URL("https://localhost:" + serverPort+"/file2"); +- http = (HttpsURLConnection)url.openConnection(); +- respCode = http.getResponseCode(); +- System.out.println("respCode2 = "+respCode); +- +- } catch (IOException ioex) { +- if (sslServerSocket != null) +- sslServerSocket.close(); +- throw ioex; ++ /* ++ * Wait for server to get started. ++ */ ++ while (!serverReady) { ++ Thread.sleep(50); ++ } ++ try { ++ HttpsURLConnection http = null; ++ /* establish http connection to server */ ++ URL url = new URL("https://localhost:" + serverPort+"/file1"); ++ System.out.println("url is "+url.toString()); ++ HttpsURLConnection.setDefaultHostnameVerifier( ++ new NameVerifier()); ++ http = (HttpsURLConnection)url.openConnection(); ++ int respCode = http.getResponseCode(); ++ int cl = http.getContentLength(); ++ InputStream is = http.getInputStream (); ++ int count = 0; ++ while (is.read() != -1 && count++ < cl); ++ System.out.println("respCode1 = "+respCode); ++ Thread.sleep(2000); ++ url = new URL("https://localhost:" + serverPort+"/file2"); ++ http = (HttpsURLConnection)url.openConnection(); ++ respCode = http.getResponseCode(); ++ System.out.println("respCode2 = "+respCode); ++ } catch (IOException ioex) { ++ if (sslServerSocket != null) ++ sslServerSocket.close(); ++ throw ioex; ++ } ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } + } + +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/NewImpl/ComHTTPSConnection.java 2012-08-10 10:37:03.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/NewImpl/ComHTTPSConnection.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4474255 + * @summary Can no longer obtain a com.sun.net.ssl.HttpsURLConnection ++ * @run main/othervm ComHTTPSConnection + * @author Brad Wetmore + */ + +@@ -198,44 +204,50 @@ + Thread.sleep(50); + } + +- System.setProperty("java.protocol.handler.pkgs", +- "com.sun.net.ssl.internal.www.protocol"); +- HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier()); +- +- URL url = new URL("https://" + "localhost:" + serverPort + +- "/etc/hosts"); +- URLConnection urlc = url.openConnection(); +- +- if (!(urlc instanceof com.sun.net.ssl.HttpsURLConnection)) { +- throw new Exception( +- "URLConnection ! instanceof " + +- "com.sun.net.ssl.HttpsURLConnection"); +- } +- +- BufferedReader in = null; ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); + try { +- in = new BufferedReader(new InputStreamReader( +- urlc.getInputStream())); +- String inputLine; +- System.out.print("Client reading... "); +- while ((inputLine = in.readLine()) != null) +- System.out.println(inputLine); +- +- System.out.println("Cipher Suite: " + +- ((HttpsURLConnection)urlc).getCipherSuite()); +- X509Certificate[] certs = +- ((HttpsURLConnection)urlc).getServerCertificateChain(); +- for (int i = 0; i < certs.length; i++) { +- System.out.println(certs[0]); ++ System.setProperty("java.protocol.handler.pkgs", ++ "com.sun.net.ssl.internal.www.protocol"); ++ HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier()); ++ ++ URL url = new URL("https://" + "localhost:" + serverPort + ++ "/etc/hosts"); ++ URLConnection urlc = url.openConnection(); ++ ++ if (!(urlc instanceof com.sun.net.ssl.HttpsURLConnection)) { ++ throw new Exception( ++ "URLConnection ! instanceof " + ++ "com.sun.net.ssl.HttpsURLConnection"); + } + +- in.close(); +- } catch (SSLException e) { +- if (in != null) ++ BufferedReader in = null; ++ try { ++ in = new BufferedReader(new InputStreamReader( ++ urlc.getInputStream())); ++ String inputLine; ++ System.out.print("Client reading... "); ++ while ((inputLine = in.readLine()) != null) ++ System.out.println(inputLine); ++ ++ System.out.println("Cipher Suite: " + ++ ((HttpsURLConnection)urlc).getCipherSuite()); ++ X509Certificate[] certs = ++ ((HttpsURLConnection)urlc).getServerCertificateChain(); ++ for (int i = 0; i < certs.length; i++) { ++ System.out.println(certs[0]); ++ } ++ + in.close(); +- throw e; ++ } catch (SSLException e) { ++ if (in != null) ++ in.close(); ++ throw e; ++ } ++ System.out.println("Client reports: SUCCESS"); ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } +- System.out.println("Client reports: SUCCESS"); + } + + static class NameVerifier implements HostnameVerifier { +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/NewImpl/ComHostnameVerifier.java 2012-08-10 10:37:03.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/NewImpl/ComHostnameVerifier.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,6 +21,11 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4474255 +@@ -28,6 +33,7 @@ + * @bug 4484246 + * @summary When an application enables anonymous SSL cipher suite, + * Hostname verification is not required ++ * @run main/othervm ComHostnameVerifier + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/NewImpl/JavaxHTTPSConnection.java 2012-08-10 10:37:03.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/NewImpl/JavaxHTTPSConnection.java 2013-05-05 09:38:46.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4474255 + * @summary Can no longer obtain a com.sun.net.ssl.HttpsURLConnection ++ * @run main/othervm JavaxHTTPSConnection + * @author Brad Wetmore + */ + +@@ -189,47 +195,53 @@ + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { +- /* +- * Wait for server to get started. +- */ +- while (!serverReady) { +- Thread.sleep(50); +- } +- +- HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier()); +- URL url = new URL("https://" + "localhost:" + serverPort + +- "/etc/hosts"); +- URLConnection urlc = url.openConnection(); +- +- if (!(urlc instanceof javax.net.ssl.HttpsURLConnection)) { +- throw new Exception( +- "URLConnection ! instanceof javax.net.ssl.HttpsURLConnection"); +- } +- +- BufferedReader in = null; ++ HostnameVerifier reservedHV = ++ HttpsURLConnection.getDefaultHostnameVerifier(); + try { +- in = new BufferedReader(new InputStreamReader( +- urlc.getInputStream())); +- String inputLine; +- System.out.print("Client reading... "); +- while ((inputLine = in.readLine()) != null) +- System.out.println(inputLine); +- +- System.out.println("Cipher Suite: " + +- ((HttpsURLConnection)urlc).getCipherSuite()); +- Certificate[] certs = +- ((HttpsURLConnection)urlc).getServerCertificates(); +- for (int i = 0; i < certs.length; i++) { +- System.out.println(certs[0]); ++ /* ++ * Wait for server to get started. ++ */ ++ while (!serverReady) { ++ Thread.sleep(50); ++ } ++ ++ HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier()); ++ URL url = new URL("https://" + "localhost:" + serverPort + ++ "/etc/hosts"); ++ URLConnection urlc = url.openConnection(); ++ ++ if (!(urlc instanceof javax.net.ssl.HttpsURLConnection)) { ++ throw new Exception("URLConnection ! instanceof " + ++ "javax.net.ssl.HttpsURLConnection"); + } + +- in.close(); +- } catch (SSLException e) { +- if (in != null) ++ BufferedReader in = null; ++ try { ++ in = new BufferedReader(new InputStreamReader( ++ urlc.getInputStream())); ++ String inputLine; ++ System.out.print("Client reading... "); ++ while ((inputLine = in.readLine()) != null) ++ System.out.println(inputLine); ++ ++ System.out.println("Cipher Suite: " + ++ ((HttpsURLConnection)urlc).getCipherSuite()); ++ Certificate[] certs = ++ ((HttpsURLConnection)urlc).getServerCertificates(); ++ for (int i = 0; i < certs.length; i++) { ++ System.out.println(certs[0]); ++ } ++ + in.close(); +- throw e; ++ } catch (SSLException e) { ++ if (in != null) ++ in.close(); ++ throw e; ++ } ++ System.out.println("Client reports: SUCCESS"); ++ } finally { ++ HttpsURLConnection.setDefaultHostnameVerifier(reservedHV); + } +- System.out.println("Client reports: SUCCESS"); + } + + static class NameVerifier implements HostnameVerifier { +--- jdk/test/sun/security/ssl/sun/net/www/protocol/https/NewImpl/JavaxHostnameVerifier.java 2012-08-10 10:37:03.000000000 -0700 ++++ jdk/test/sun/security/ssl/sun/net/www/protocol/https/NewImpl/JavaxHostnameVerifier.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,6 +21,11 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4474255 +@@ -28,6 +33,7 @@ + * @bug 4484246 + * @summary When an application enables anonymous SSL cipher suite, + * Hostname verification is not required ++ * @run main/othervm JavaxHostnameVerifier + */ + + import java.io.*; +--- jdk/test/sun/security/ssl/templates/SSLEngineTemplate.java 2012-08-10 10:37:03.000000000 -0700 ++++ jdk/test/sun/security/ssl/templates/SSLEngineTemplate.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,11 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 1234567 + * @summary SSLEngine has not yet caused Solaris kernel to panic +- * ++ * @run main/othervm SSLEngineTemplate + */ + + /** +--- jdk/test/sun/security/ssl/templates/SSLSocketTemplate.java 2012-08-10 10:37:03.000000000 -0700 ++++ jdk/test/sun/security/ssl/templates/SSLSocketTemplate.java 2013-05-05 09:38:46.000000000 -0700 +@@ -21,10 +21,16 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 1234567 + * @summary Use this template to help speed your client/server tests. ++ * @run main/othervm SSLSocketTemplate + * @author Brad Wetmore + */ + --- jdk/test/sun/security/tools/jarsigner/AlgOptions.sh 2012-08-10 10:37:03.000000000 -0700 -+++ jdk/test/sun/security/tools/jarsigner/AlgOptions.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/jarsigner/AlgOptions.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. @@ -81020,7 +99055,7 @@ * ) echo "Unrecognized operating system!" --- jdk/test/sun/security/tools/jarsigner/PercentSign.sh 2012-08-10 10:37:03.000000000 -0700 -+++ jdk/test/sun/security/tools/jarsigner/PercentSign.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/jarsigner/PercentSign.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. @@ -81066,7 +99101,7 @@ * ) echo "Unrecognized operating system!" --- jdk/test/sun/security/tools/jarsigner/diffend.sh 2012-08-10 10:37:03.000000000 -0700 -+++ jdk/test/sun/security/tools/jarsigner/diffend.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/jarsigner/diffend.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. @@ -81112,7 +99147,7 @@ * ) echo "Unrecognized operating system!" --- jdk/test/sun/security/tools/jarsigner/oldsig.sh 2012-08-10 10:37:03.000000000 -0700 -+++ jdk/test/sun/security/tools/jarsigner/oldsig.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/jarsigner/oldsig.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. @@ -81158,7 +99193,7 @@ * ) echo "Unrecognized operating system!" --- jdk/test/sun/security/tools/keytool/AltProviderPath.sh 2012-08-10 10:37:04.000000000 -0700 -+++ jdk/test/sun/security/tools/keytool/AltProviderPath.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/keytool/AltProviderPath.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved. @@ -81201,7 +99236,7 @@ * ) echo "Unrecognized operating system!" --- jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh 2012-08-10 10:37:04.000000000 -0700 -+++ jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh 2013-05-05 09:38:46.000000000 -0700 @@ -47,15 +47,7 @@ # set platform-dependent variables OS=`uname -s` @@ -81220,7 +99255,7 @@ FILESEP="/" ;; --- jdk/test/sun/security/tools/keytool/NoExtNPE.sh 2012-08-10 10:37:04.000000000 -0700 -+++ jdk/test/sun/security/tools/keytool/NoExtNPE.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/keytool/NoExtNPE.sh 2013-05-05 09:38:46.000000000 -0700 @@ -42,13 +42,7 @@ # set platform-dependent variables OS=`uname -s` @@ -81237,7 +99272,7 @@ ;; CYGWIN* ) --- jdk/test/sun/security/tools/keytool/SecretKeyKS.sh 2012-08-10 10:37:04.000000000 -0700 -+++ jdk/test/sun/security/tools/keytool/SecretKeyKS.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/keytool/SecretKeyKS.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. @@ -81280,7 +99315,7 @@ * ) echo "Unrecognized operating system!" --- jdk/test/sun/security/tools/keytool/StandardAlgName.sh 2012-08-10 10:37:04.000000000 -0700 -+++ jdk/test/sun/security/tools/keytool/StandardAlgName.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/keytool/StandardAlgName.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved. @@ -81322,8 +99357,21 @@ ;; * ) echo "Unrecognized operating system!" +--- jdk/test/sun/security/tools/keytool/StartDateTest.java 2012-08-10 10:37:04.000000000 -0700 ++++ jdk/test/sun/security/tools/keytool/StartDateTest.java 2013-05-05 09:38:46.000000000 -0700 +@@ -132,7 +132,9 @@ + + static Date getIssueDate() throws Exception { + KeyStore ks = KeyStore.getInstance("jks"); +- ks.load(new FileInputStream("jks"), "changeit".toCharArray()); ++ try (FileInputStream fis = new FileInputStream("jks")) { ++ ks.load(fis, "changeit".toCharArray()); ++ } + X509Certificate cert = (X509Certificate)ks.getCertificate("me"); + return cert.getNotBefore(); + } --- jdk/test/sun/security/tools/keytool/autotest.sh 2012-08-10 10:37:04.000000000 -0700 -+++ jdk/test/sun/security/tools/keytool/autotest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/keytool/autotest.sh 2013-05-05 09:38:46.000000000 -0700 @@ -72,6 +72,27 @@ ;; esac @@ -81353,7 +99401,7 @@ echo "Will not run test on: ${OS}" exit 0; --- jdk/test/sun/security/tools/keytool/i18n.sh 2012-08-10 10:37:04.000000000 -0700 -+++ jdk/test/sun/security/tools/keytool/i18n.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/keytool/i18n.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved. @@ -81396,7 +99444,7 @@ * ) echo "Unrecognized system!" --- jdk/test/sun/security/tools/keytool/printssl.sh 2012-08-10 10:37:05.000000000 -0700 -+++ jdk/test/sun/security/tools/keytool/printssl.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/keytool/printssl.sh 2013-05-05 09:38:46.000000000 -0700 @@ -37,7 +37,7 @@ # set platform-dependent variables OS=`uname -s` @@ -81407,7 +99455,7 @@ ;; CYGWIN* ) --- jdk/test/sun/security/tools/keytool/resource.sh 2012-08-10 10:37:05.000000000 -0700 -+++ jdk/test/sun/security/tools/keytool/resource.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/keytool/resource.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. @@ -81463,7 +99511,7 @@ -rm ${TMP}${FS}temp_file_40875602475 exit 0 --- jdk/test/sun/security/tools/keytool/standard.sh 2012-08-10 10:37:05.000000000 -0700 -+++ jdk/test/sun/security/tools/keytool/standard.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/keytool/standard.sh 2013-05-05 09:38:46.000000000 -0700 @@ -44,7 +44,7 @@ # set platform-dependent variables OS=`uname -s` @@ -81474,7 +99522,7 @@ ;; Windows_* ) --- jdk/test/sun/security/tools/policytool/Alias.sh 2012-08-10 10:37:05.000000000 -0700 -+++ jdk/test/sun/security/tools/policytool/Alias.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/policytool/Alias.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved. @@ -81516,7 +99564,7 @@ * ) echo "Unrecognized system!" --- jdk/test/sun/security/tools/policytool/ChangeUI.sh 2012-08-10 10:37:05.000000000 -0700 -+++ jdk/test/sun/security/tools/policytool/ChangeUI.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/policytool/ChangeUI.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. @@ -81558,7 +99606,7 @@ * ) echo "Unrecognized system!" --- jdk/test/sun/security/tools/policytool/OpenPolicy.sh 2012-08-10 10:37:05.000000000 -0700 -+++ jdk/test/sun/security/tools/policytool/OpenPolicy.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/policytool/OpenPolicy.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved. @@ -81601,7 +99649,7 @@ * ) echo "Unrecognized system!" --- jdk/test/sun/security/tools/policytool/SaveAs.sh 2012-08-10 10:37:05.000000000 -0700 -+++ jdk/test/sun/security/tools/policytool/SaveAs.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/policytool/SaveAs.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved. @@ -81644,7 +99692,7 @@ * ) echo "Unrecognized system!" --- jdk/test/sun/security/tools/policytool/UpdatePermissions.sh 2012-08-10 10:37:05.000000000 -0700 -+++ jdk/test/sun/security/tools/policytool/UpdatePermissions.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/policytool/UpdatePermissions.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved. @@ -81687,7 +99735,7 @@ * ) echo "Unrecognized system!" --- jdk/test/sun/security/tools/policytool/UsePolicy.sh 2012-08-10 10:37:05.000000000 -0700 -+++ jdk/test/sun/security/tools/policytool/UsePolicy.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/policytool/UsePolicy.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved. @@ -81730,7 +99778,7 @@ * ) echo "Unrecognized system!" --- jdk/test/sun/security/tools/policytool/i18n.sh 2012-08-10 10:37:05.000000000 -0700 -+++ jdk/test/sun/security/tools/policytool/i18n.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/security/tools/policytool/i18n.sh 2013-05-05 09:38:46.000000000 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. @@ -81772,30 +99820,366 @@ ;; * ) echo "Unrecognized system!" +--- jdk/test/sun/security/util/Oid/S11N.java 1969-12-31 16:00:00.000000000 -0800 ++++ jdk/test/sun/security/util/Oid/S11N.java 2013-05-05 09:38:46.000000000 -0700 +@@ -0,0 +1,246 @@ ++/* ++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * 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 4811968 6908628 8006564 ++ * @run main S11N check ++ * @summary Serialization compatibility with old versions (and fixes) ++ */ ++ ++import java.io.ByteArrayInputStream; ++import java.io.ByteArrayOutputStream; ++import java.io.ObjectInputStream; ++import java.io.ObjectOutputStream; ++import java.util.HashMap; ++import java.util.Map; ++import sun.misc.BASE64Encoder; ++import sun.security.util.ObjectIdentifier; ++ ++public class S11N { ++ static String[] SMALL= { ++ "0.0", ++ "1.1", ++ "2.2", ++ "1.2.3456", ++ "1.2.2147483647.4", ++ "1.2.268435456.4", ++ }; ++ ++ static String[] HUGE = { ++ "2.16.764.1.3101555394.1.0.100.2.1", ++ "1.2.2147483648.4", ++ "2.3.4444444444444444444444", ++ "1.2.8888888888888888.33333333333333333.44444444444444", ++ }; ++ ++ // Do not use j.u.Base64, the test needs to run in jdk6 ++ static BASE64Encoder encoder = new BASE64Encoder() { ++ @Override ++ protected int bytesPerLine() { ++ return 48; ++ } ++ }; ++ ++ public static void main(String[] args) throws Exception { ++ if (args[0].equals("check")) { ++ int version = Integer.valueOf(System.getProperty("java.version") ++ .split("\\.")[1]); ++ System.out.println("version is " + version); ++ if (version >= 7) { ++ for (String oid: SMALL) { ++ // 7 -> 7 ++ check(out(oid), oid); ++ // 6 -> 7 ++ check(out6(oid), oid); ++ } ++ for (String oid: HUGE) { ++ // 7 -> 7 ++ check(out(oid), oid); ++ } ++ } else { ++ for (String oid: SMALL) { ++ // 6 -> 6 ++ check(out(oid), oid); ++ // 7 -> 6 ++ check(out7(oid), oid); ++ } ++ for (String oid: HUGE) { ++ // 7 -> 6 fails for HUGE oids ++ boolean ok = false; ++ try { ++ check(out7(oid), oid); ++ ok = true; ++ } catch (Exception e) { ++ System.out.println(e); ++ } ++ if (ok) { ++ throw new Exception(); ++ } ++ } ++ } ++ } else { ++ // Generates the JDK6 serialized string inside this test, call ++ // $JDK7/bin/java S11N dump7 ++ // $JDK6/bin/java S11N dump6 ++ // and paste the output at the end of this test. ++ dump(args[0], SMALL); ++ // For jdk6, the following line will throw an exception, ignore it ++ dump(args[0], HUGE); ++ } ++ } ++ ++ // Gets the serialized form for jdk6 ++ private static byte[] out6(String oid) throws Exception { ++ return new sun.misc.BASE64Decoder().decodeBuffer(dump6.get(oid)); ++ } ++ ++ // Gets the serialized form for jdk7 ++ private static byte[] out7(String oid) throws Exception { ++ return new sun.misc.BASE64Decoder().decodeBuffer(dump7.get(oid)); ++ } ++ ++ // Gets the serialized form for this java ++ private static byte[] out(String oid) throws Exception { ++ ByteArrayOutputStream bout = new ByteArrayOutputStream(); ++ new ObjectOutputStream(bout).writeObject(new ObjectIdentifier(oid)); ++ return bout.toByteArray(); ++ } ++ ++ // Makes sure serialized form can be deserialized ++ private static void check(byte[] in, String oid) throws Exception { ++ ObjectIdentifier o = (ObjectIdentifier) ( ++ new ObjectInputStream(new ByteArrayInputStream(in)).readObject()); ++ if (!o.toString().equals(oid)) { ++ throw new Exception("Read Fail " + o + ", not " + oid); ++ } ++ } ++ ++ // dump serialized form to java code style text ++ private static void dump(String title, String[] oids) throws Exception { ++ for (String oid: oids) { ++ String[] base64 = encoder.encodeBuffer(out(oid)).split("\n"); ++ System.out.println(" " + title + ".put(\"" + oid + "\","); ++ for (int i = 0; i<base64.length; i++) { ++ System.out.print(" \"" + base64[i] + "\""); ++ if (i == base64.length - 1) { ++ System.out.println(");"); ++ } else { ++ System.out.println(" +"); ++ } ++ } ++ } ++ } ++ ++ // Do not use diamond operator, this test is also meant to run in jdk6 ++ private static Map<String,String> dump7 = new HashMap<String,String>(); ++ private static Map<String,String> dump6 = new HashMap<String,String>(); ++ ++ static { ++ ////////////// PASTE BEGIN ////////////// ++ dump7.put("0.0", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4DAANJAAxjb21wb25lbnRMZW5MAApjb21wb25lbnRzdAASTGphdmEvbGFuZy9P" + ++ "YmplY3Q7WwAIZW5jb2Rpbmd0AAJbQnhwAAAAAnVyAAJbSU26YCZ26rKlAgAAeHAA" + ++ "AAACAAAAAAAAAAB1cgACW0Ks8xf4BghU4AIAAHhwAAAAAQB4"); ++ dump7.put("1.1", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4DAANJAAxjb21wb25lbnRMZW5MAApjb21wb25lbnRzdAASTGphdmEvbGFuZy9P" + ++ "YmplY3Q7WwAIZW5jb2Rpbmd0AAJbQnhwAAAAAnVyAAJbSU26YCZ26rKlAgAAeHAA" + ++ "AAACAAAAAQAAAAF1cgACW0Ks8xf4BghU4AIAAHhwAAAAASl4"); ++ dump7.put("2.2", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4DAANJAAxjb21wb25lbnRMZW5MAApjb21wb25lbnRzdAASTGphdmEvbGFuZy9P" + ++ "YmplY3Q7WwAIZW5jb2Rpbmd0AAJbQnhwAAAAAnVyAAJbSU26YCZ26rKlAgAAeHAA" + ++ "AAACAAAAAgAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAAAVJ4"); ++ dump7.put("1.2.3456", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4DAANJAAxjb21wb25lbnRMZW5MAApjb21wb25lbnRzdAASTGphdmEvbGFuZy9P" + ++ "YmplY3Q7WwAIZW5jb2Rpbmd0AAJbQnhwAAAAA3VyAAJbSU26YCZ26rKlAgAAeHAA" + ++ "AAADAAAAAQAAAAIAAA2AdXIAAltCrPMX+AYIVOACAAB4cAAAAAMqmwB4"); ++ dump7.put("1.2.2147483647.4", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4DAANJAAxjb21wb25lbnRMZW5MAApjb21wb25lbnRzdAASTGphdmEvbGFuZy9P" + ++ "YmplY3Q7WwAIZW5jb2Rpbmd0AAJbQnhwAAAABHVyAAJbSU26YCZ26rKlAgAAeHAA" + ++ "AAAEAAAAAQAAAAJ/////AAAABHVyAAJbQqzzF/gGCFTgAgAAeHAAAAAHKof///9/" + ++ "BHg="); ++ dump7.put("1.2.268435456.4", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4DAANJAAxjb21wb25lbnRMZW5MAApjb21wb25lbnRzdAASTGphdmEvbGFuZy9P" + ++ "YmplY3Q7WwAIZW5jb2Rpbmd0AAJbQnhwAAAABHVyAAJbSU26YCZ26rKlAgAAeHAA" + ++ "AAAEAAAAAQAAAAIQAAAAAAAABHVyAAJbQqzzF/gGCFTgAgAAeHAAAAAHKoGAgIAA" + ++ "BHg="); ++ dump7.put("2.16.764.1.3101555394.1.0.100.2.1", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4DAANJAAxjb21wb25lbnRMZW5MAApjb21wb25lbnRzdAASTGphdmEvbGFuZy9P" + ++ "YmplY3Q7WwAIZW5jb2Rpbmd0AAJbQnhw/////3NyAD5zdW4uc2VjdXJpdHkudXRp" + ++ "bC5PYmplY3RJZGVudGlmaWVyJEh1Z2VPaWROb3RTdXBwb3J0ZWRCeU9sZEpESwAA" + ++ "AAAAAAABAgAAeHB1cgACW0Ks8xf4BghU4AIAAHhwAAAADmCFfAGLxvf1QgEAZAIB" + ++ "eA=="); ++ dump7.put("1.2.2147483648.4", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4DAANJAAxjb21wb25lbnRMZW5MAApjb21wb25lbnRzdAASTGphdmEvbGFuZy9P" + ++ "YmplY3Q7WwAIZW5jb2Rpbmd0AAJbQnhw/////3NyAD5zdW4uc2VjdXJpdHkudXRp" + ++ "bC5PYmplY3RJZGVudGlmaWVyJEh1Z2VPaWROb3RTdXBwb3J0ZWRCeU9sZEpESwAA" + ++ "AAAAAAABAgAAeHB1cgACW0Ks8xf4BghU4AIAAHhwAAAAByqIgICAAAR4"); ++ dump7.put("2.3.4444444444444444444444", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4DAANJAAxjb21wb25lbnRMZW5MAApjb21wb25lbnRzdAASTGphdmEvbGFuZy9P" + ++ "YmplY3Q7WwAIZW5jb2Rpbmd0AAJbQnhw/////3NyAD5zdW4uc2VjdXJpdHkudXRp" + ++ "bC5PYmplY3RJZGVudGlmaWVyJEh1Z2VPaWROb3RTdXBwb3J0ZWRCeU9sZEpESwAA" + ++ "AAAAAAABAgAAeHB1cgACW0Ks8xf4BghU4AIAAHhwAAAADFOD4e+HpNG968eOHHg="); ++ dump7.put("1.2.8888888888888888.33333333333333333.44444444444444", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4DAANJAAxjb21wb25lbnRMZW5MAApjb21wb25lbnRzdAASTGphdmEvbGFuZy9P" + ++ "YmplY3Q7WwAIZW5jb2Rpbmd0AAJbQnhw/////3NyAD5zdW4uc2VjdXJpdHkudXRp" + ++ "bC5PYmplY3RJZGVudGlmaWVyJEh1Z2VPaWROb3RTdXBwb3J0ZWRCeU9sZEpESwAA" + ++ "AAAAAAABAgAAeHB1cgACW0Ks8xf4BghU4AIAAHhwAAAAGCqP5Yzbxa6cOLubj9ek" + ++ "japVio3AusuOHHg="); ++ ++ dump6.put("0.0", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4CAAJJAAxjb21wb25lbnRMZW5bAApjb21wb25lbnRzdAACW0l4cAAAAAJ1cgAC" + ++ "W0lNumAmduqypQIAAHhwAAAAAgAAAAAAAAAA"); ++ dump6.put("1.1", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4CAAJJAAxjb21wb25lbnRMZW5bAApjb21wb25lbnRzdAACW0l4cAAAAAJ1cgAC" + ++ "W0lNumAmduqypQIAAHhwAAAAAgAAAAEAAAAB"); ++ dump6.put("2.2", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4CAAJJAAxjb21wb25lbnRMZW5bAApjb21wb25lbnRzdAACW0l4cAAAAAJ1cgAC" + ++ "W0lNumAmduqypQIAAHhwAAAAAgAAAAIAAAAC"); ++ dump6.put("1.2.3456", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4CAAJJAAxjb21wb25lbnRMZW5bAApjb21wb25lbnRzdAACW0l4cAAAAAN1cgAC" + ++ "W0lNumAmduqypQIAAHhwAAAAAwAAAAEAAAACAAANgA=="); ++ dump6.put("1.2.2147483647.4", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4CAAJJAAxjb21wb25lbnRMZW5bAApjb21wb25lbnRzdAACW0l4cAAAAAR1cgAC" + ++ "W0lNumAmduqypQIAAHhwAAAABAAAAAEAAAACf////wAAAAQ="); ++ dump6.put("1.2.268435456.4", ++ "rO0ABXNyACJzdW4uc2VjdXJpdHkudXRpbC5PYmplY3RJZGVudGlmaWVyeLIO7GQX" + ++ "fy4CAAJJAAxjb21wb25lbnRMZW5bAApjb21wb25lbnRzdAACW0l4cAAAAAR1cgAC" + ++ "W0lNumAmduqypQIAAHhwAAAABAAAAAEAAAACEAAAAAAAAAQ="); ++ ////////////// PASTE END ////////////// ++ } ++} --- jdk/test/sun/security/util/Oid/S11N.sh 2012-08-10 10:37:06.000000000 -0700 -+++ jdk/test/sun/security/util/Oid/S11N.sh 2013-01-16 00:07:38.000000000 -0800 -@@ -71,7 +71,7 @@ - i[3-6]86 ) - PF="linux-i586" - ;; ++++ jdk/test/sun/security/util/Oid/S11N.sh 1969-12-31 16:00:00.000000000 -0800 +@@ -1,185 +0,0 @@ +-# +-# Copyright (c) 2004, 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 4811968 6908628 +-# @summary Serialization compatibility with old versions (and fix) +-# @author Weijun Wang +-# +-# set a few environment variables so that the shell-script can run stand-alone +-# in the source directory +- +-if [ "${TESTSRC}" = "" ] ; then +- TESTSRC="." +-fi +-if [ "${TESTCLASSES}" = "" ] ; then +- TESTCLASSES="." +-fi +-if [ "${TESTJAVA}" = "" ] ; then +- echo "TESTJAVA not set. Test cannot execute." +- echo "FAILED!!!" +- exit 1 +-fi +- +-# set platform-dependent variables +-PF="" +- +-OS=`uname -s` +-case "$OS" in +- SunOS ) +- FS="/" +- ARCH=`isainfo` +- case "$ARCH" in +- sparc* ) +- PF="solaris-sparc" +- ;; +- i[3-6]86 ) +- PF="solaris-i586" +- ;; +- amd64* ) +- PF="solaris-amd64" +- ;; +- * ) +- echo "Unsupported System: Solaris ${ARCH}" +- exit 0; +- ;; +- esac +- ;; +- Linux ) +- ARCH=`uname -m` +- FS="/" +- case "$ARCH" in +- i[3-6]86 ) +- PF="linux-i586" +- ;; - amd64* | x86_64 ) -+ amd64* ) - PF="linux-amd64" - ;; - * ) -@@ -97,29 +97,15 @@ - ;; - esac - +- PF="linux-amd64" +- ;; +- * ) +- echo "Unsupported System: Linux ${ARCH}" +- exit 0; +- ;; +- esac +- ;; +- Windows* ) +- FS="\\" +- PF="windows-i586" +- +- # 'uname -m' does not give us enough information - +- # should rely on $PROCESSOR_IDENTIFIER (as is done in Defs-windows.gmk), +- # but JTREG does not pass this env variable when executing a shell script. +- # +- # execute test program - rely on it to exit if platform unsupported +- +- ;; +- * ) +- echo "Unsupported System: ${OS}" +- exit 0; +- ;; +-esac +- -echo "===================================================" -echo "Try to set ALT_JAVA_RE_JDK if you see timeout error" -echo "===================================================" - - # the test code - - ${TESTJAVA}${FS}bin${FS}javac -target 1.4 -source 1.4 \ - -d . ${TESTSRC}${FS}SerialTest.java || exit 10 - +-# the test code +- +-${TESTJAVA}${FS}bin${FS}javac -target 1.4 -source 1.4 \ +- -d . ${TESTSRC}${FS}SerialTest.java || exit 10 +- -# You can set ALT_JAVA_RE_JDK to another location that contains the -# binaries for older JDK releases. You can set it to a non-existent -# directory to skip the interop tests between different versions. @@ -81806,18 +100190,308 @@ - JAVA_RE_JDK=$ALT_JAVA_RE_JDK -fi - - OLDJAVA=" +-OLDJAVA=" - $JAVA_RE_JDK/1.6.0/latest/binaries/${PF} - $JAVA_RE_JDK/1.5.0/latest/binaries/${PF} - $JAVA_RE_JDK/1.4.2/latest/binaries/${PF} -+ /java/re/j2se/1.6.0/latest/binaries/${PF} -+ /java/re/j2se/1.5.0/latest/binaries/${PF} -+ /java/re/j2se/1.4.2/latest/binaries/${PF} - " +-" +- +-SMALL=" +- 0.0 +- 1.1 +- 2.2 +- 1.2.3456 +- 1.2.2147483647.4 +- 1.2.268435456.4 +-" +- +-HUGE=" +- 2.16.764.1.3101555394.1.0.100.2.1 +- 1.2.2147483648.4 +- 2.3.4444444444444444444444 +- 1.2.888888888888888888.111111111111111.2222222222222.33333333333333333.44444444444444 +-" +- +-for oid in ${SMALL}; do +- echo ${oid} +- # new -> +- ${TESTJAVA}${FS}bin${FS}java SerialTest out ${oid} > tmp.oid.serial || exit 1 +- # -> new +- ${TESTJAVA}${FS}bin${FS}java SerialTest in ${oid} < tmp.oid.serial || exit 2 +- for oldj in ${OLDJAVA}; do +- if [ -d ${oldj} ]; then +- echo ${oldj} +- # -> old +- ${oldj}${FS}bin${FS}java SerialTest in ${oid} < tmp.oid.serial || exit 3 +- # old -> +- ${oldj}${FS}bin${FS}java SerialTest out ${oid} > tmp.oid.serial.old || exit 4 +- # -> new +- ${TESTJAVA}${FS}bin${FS}java SerialTest in ${oid} < tmp.oid.serial.old || exit 5 +- fi +- done +-done +- +-for oid in ${HUGE}; do +- echo ${oid} +- # new -> +- ${TESTJAVA}${FS}bin${FS}java SerialTest out ${oid} > tmp.oid.serial || exit 1 +- # -> new +- ${TESTJAVA}${FS}bin${FS}java SerialTest in ${oid} < tmp.oid.serial || exit 2 +- for oldj in ${OLDJAVA}; do +- if [ -d ${oldj} ]; then +- echo ${oldj} +- # -> old +- ${oldj}${FS}bin${FS}java SerialTest badin < tmp.oid.serial || exit 3 +- fi +- done +-done +- +-rm -f tmp.oid.serial +-rm -f tmp.oid.serial.old +-rm -f SerialTest.class +- +-for oldj in ${OLDJAVA}; do +- if [ ! -d ${oldj} ]; then +- echo WARNING: ${oldj} is missing. Test incomplete! > /dev/stderr +- fi +-done +- +-exit 0 +--- jdk/test/sun/security/util/Oid/SerialTest.java 2012-08-10 10:37:06.000000000 -0700 ++++ jdk/test/sun/security/util/Oid/SerialTest.java 1969-12-31 16:00:00.000000000 -0800 +@@ -1,66 +0,0 @@ +-/* +- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. +- * 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. +- */ +- +-/* +- * read S11.sh +- */ +-import java.io.*; +-import sun.security.util.*; +- +-/** +- * Test OID serialization between versions +- * +- * java SerialTest out oid // write a OID into System.out +- * java SerialTest in oid // read from System.in and compare it with oid +- * java SerialTest badin // make sure *cannot* read from System.in +- */ +-class SerialTest { +- public static void main(String[] args) throws Exception { +- if (args[0].equals("out")) +- out(args[1]); +- else if (args[0].equals("in")) +- in(args[1]); +- else +- badin(); +- } +- +- static void in(String oid) throws Exception { +- ObjectIdentifier o = (ObjectIdentifier) (new ObjectInputStream(System.in).readObject()); +- if (!o.toString().equals(oid)) +- throw new Exception("Read Fail " + o + ", not " + oid); +- } +- +- static void badin() throws Exception { +- boolean pass = true; +- try { +- new ObjectInputStream(System.in).readObject(); +- } catch (Exception e) { +- pass = false; +- } +- if (pass) throw new Exception("Should fail but not"); +- } +- +- static void out(String oid) throws Exception { +- new ObjectOutputStream(System.out).writeObject(new ObjectIdentifier(oid)); +- } +-} +--- jdk/test/sun/security/x509/AlgorithmId/ExtensibleAlgorithmId.java 2012-08-10 10:37:06.000000000 -0700 ++++ jdk/test/sun/security/x509/AlgorithmId/ExtensibleAlgorithmId.java 2013-05-05 09:38:46.000000000 -0700 +@@ -24,9 +24,12 @@ + /* + * @test + * @bug 4162868 ++ * @run main/othervm ExtensibleAlgorithmId + * @summary Algorithm Name-to-OID mapping needs to be made extensible. + */ + ++// Run in othervm, coz AlgorithmId.oidTable is only initialized once ++ + import java.security.*; + import sun.security.x509.AlgorithmId; + +--- jdk/test/sun/tools/common/ApplicationSetup.sh 2012-08-10 10:37:07.000000000 -0700 ++++ jdk/test/sun/tools/common/ApplicationSetup.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,7 +1,7 @@ + #!/bin/sh + + # +-# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + # + # This code is free software; you can redistribute it and/or modify it +@@ -43,7 +43,7 @@ + { + appOutput="${TESTCLASSES}/Application.out" + +- ${JAVA} -XX:+UsePerfData -classpath "${TESTCLASSES}" "$@" > "$appOutput" 2>&1 & ++ ${JAVA} -XX:+UsePerfData -classpath "${TESTCLASSPATH:-${TESTCLASSES}}" "$@" > "$appOutput" 2>&1 & + appJavaPid="$!" + appOtherPid= + appPidList="$appJavaPid" +@@ -131,7 +131,7 @@ + # + stopApplication() + { +- $JAVA -XX:+UsePerfData -classpath "${TESTCLASSES}" ShutdownSimpleApplication $1 ++ $JAVA -XX:+UsePerfData -classpath "${TESTCLASSPATH:-${TESTCLASSES}}" ShutdownSimpleApplication $1 + } + + +--- jdk/test/sun/tools/jcmd/help_help.out 2012-08-10 10:37:07.000000000 -0700 ++++ jdk/test/sun/tools/jcmd/help_help.out 2013-05-05 09:38:47.000000000 -0700 +@@ -1,7 +1,7 @@ + help + For more information about a specific command use 'help <command>'. With no argument this will show a list of available commands. 'help all' will show help for all commands. + +-Impact: Low: ++Impact: Low + + Syntax : help [options] [<command name>] - SMALL=" +--- jdk/test/sun/tools/jcmd/jcmd-Defaults.sh 2012-08-10 10:37:07.000000000 -0700 ++++ jdk/test/sun/tools/jcmd/jcmd-Defaults.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -28,6 +28,6 @@ + + JCMD="${TESTJAVA}/bin/jcmd" + +-${JCMD} 2>&1 | awk -f ${TESTSRC}/jcmd_Output1.awk ++${JCMD} -J-XX:+UsePerfData 2>&1 | awk -f ${TESTSRC}/jcmd_Output1.awk + +-${JCMD} -l 2>&1 | awk -f ${TESTSRC}/jcmd_Output1.awk ++${JCMD} -J-XX:+UsePerfData -l 2>&1 | awk -f ${TESTSRC}/jcmd_Output1.awk +--- jdk/test/sun/tools/jcmd/jcmd-f.sh 2012-08-10 10:37:07.000000000 -0700 ++++ jdk/test/sun/tools/jcmd/jcmd-f.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -46,7 +46,7 @@ + + # -f <script> + rm -f jcmd.out 2>/dev/null +-${JCMD} $appJavaPid -f ${TESTSRC}/dcmd-script.txt | awk '{ if (NR>1) print $0;}' > jcmd.out 2>&1 ++${JCMD} -J-XX:+UsePerfData $appJavaPid -f ${TESTSRC}/dcmd-script.txt | awk '{ if (NR>1) print $0;}' > jcmd.out 2>&1 + echo jcmd.out + diff -w jcmd.out ${TESTSRC}/help_help.out + if [ $? != 0 ]; then +--- jdk/test/sun/tools/jcmd/jcmd-help-help.sh 2012-08-10 10:37:07.000000000 -0700 ++++ jdk/test/sun/tools/jcmd/jcmd-help-help.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -46,7 +46,7 @@ + + # help help + rm -f jcmd.out 2>/dev/null +-${JCMD} $appJavaPid help help | awk '{ if (NR>1) print $0;}' > jcmd.out 2>&1 ++${JCMD} -J-XX:+UsePerfData $appJavaPid help help | awk '{ if (NR>1) print $0;}' > jcmd.out 2>&1 + echo jcmd.out + diff -w jcmd.out ${TESTSRC}/help_help.out + if [ $? != 0 ]; then +--- jdk/test/sun/tools/jcmd/jcmd-help.sh 2012-08-10 10:37:07.000000000 -0700 ++++ jdk/test/sun/tools/jcmd/jcmd-help.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -29,7 +29,7 @@ + JCMD="${TESTJAVA}/bin/jcmd" + + rm -f jcmd.out 2>/dev/null +-${JCMD} -h > jcmd.out 2>&1 ++${JCMD} -J-XX:+UsePerfData -h > jcmd.out 2>&1 + + diff -w jcmd.out ${TESTSRC}/usage.out + if [ $? != 0 ] +@@ -40,7 +40,7 @@ + fi + + rm -f jcmd.out 2>/dev/null +-${JCMD} -help > jcmd.out 2>&1 ++${JCMD} -J-XX:+UsePerfData -help > jcmd.out 2>&1 + + diff -w jcmd.out ${TESTSRC}/usage.out + if [ $? != 0 ] +--- jdk/test/sun/tools/jcmd/jcmd-pid.sh 2012-08-10 10:37:07.000000000 -0700 ++++ jdk/test/sun/tools/jcmd/jcmd-pid.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -45,11 +45,11 @@ + failed=0 + + # help command +-${JCMD} $appJavaPid help 2>&1 | awk -f ${TESTSRC}/jcmd_pid_Output1.awk ++${JCMD} -J-XX:+UsePerfData $appJavaPid help 2>&1 | awk -f ${TESTSRC}/jcmd_pid_Output1.awk + if [ $? != 0 ]; then failed=1; fi + + # PerfCounter.list option +-${JCMD} $appJavaPid PerfCounter.print 2>&1 | awk -f ${TESTSRC}/jcmd_pid_Output2.awk ++${JCMD} -J-XX:+UsePerfData $appJavaPid PerfCounter.print 2>&1 | awk -f ${TESTSRC}/jcmd_pid_Output2.awk + if [ $? != 0 ]; then failed=1; fi + + set -e +--- jdk/test/sun/tools/jcmd/jcmd_Output1.awk 2012-08-10 10:37:07.000000000 -0700 ++++ jdk/test/sun/tools/jcmd/jcmd_Output1.awk 2013-05-05 09:38:47.000000000 -0700 +@@ -1,26 +1,31 @@ + # + BEGIN { +- totallines=0; matched=0 ++ totallines=0; matched=0; current=0 + } + + # match on a main class name followed by arbitrary arguments + /^[0-9]+ [a-z|A-Z][a-z|A-Z|0-9|\.]*($| .*$)/ { +- matched++; ++ current=1; + } + + # or match on a path name to a jar file followed by arbitraty arguments + # - note, jar files ending with ".jar" is only a convention, not a requirement. + #Theoretically, any valid file name could occur here. + /^[0-9]+ .*\.jar($| .*$)/ { +- matched++; ++ current=1; + } + + # or match on the condition that the class name is not available +-/^[0-9]+ -- process information unavailable$/ { +- matched++; ++/^[0-9]+ -- .*$/ { ++ current=1; + } + +- { totallines++; print $0 } ++# or match an empty class name ++/^[0-9]+ $/ { ++ current=1; ++ } ++ ++ { totallines++; matched+=current; current=0; print $0 } + + END { + if ((totallines > 0) && (matched == totallines)) { --- jdk/test/sun/tools/jconsole/ImmutableResourceTest.sh 2012-08-10 10:37:09.000000000 -0700 -+++ jdk/test/sun/tools/jconsole/ImmutableResourceTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/tools/jconsole/ImmutableResourceTest.sh 2013-05-05 09:38:47.000000000 -0700 @@ -53,7 +53,7 @@ OS=`uname -s` @@ -81828,7 +100502,7 @@ ;; --- jdk/test/sun/tools/jconsole/ResourceCheckTest.sh 2012-08-10 10:37:09.000000000 -0700 -+++ jdk/test/sun/tools/jconsole/ResourceCheckTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/tools/jconsole/ResourceCheckTest.sh 2013-05-05 09:38:47.000000000 -0700 @@ -54,7 +54,7 @@ OS=`uname -s` @@ -81838,8 +100512,529 @@ PATHSEP=":" ;; +--- jdk/test/sun/tools/jinfo/Basic.sh 2012-08-10 10:37:09.000000000 -0700 ++++ jdk/test/sun/tools/jinfo/Basic.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -44,7 +44,20 @@ + + failed=0 + +-if [ $isWindows = false ]; then ++# Skip SA options for now, see 7175133 ++runSA=false ++ ++if [ $isLinux = true ]; then ++ # Some Linux systems disable non-child ptrace (see 7050524) ++ ptrace_scope=`/sbin/sysctl -n kernel.yama.ptrace_scope` ++ if [ $? = 0 ]; then ++ if [ $ptrace_scope = 1 ]; then ++ runSA=false ++ fi ++ fi ++fi ++ ++if [ $runSA = true ]; then + # -sysprops option + ${JINFO} -J-XX:+UsePerfData -sysprops $appJavaPid + if [ $? != 0 ]; then failed=1; fi +--- jdk/test/sun/tools/jps/jps-Vvml_2.sh 2012-08-10 10:37:09.000000000 -0700 ++++ jdk/test/sun/tools/jps/jps-Vvml_2.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,7 +51,7 @@ + # and we can not set -XX:+UsePerfData as that invalidates the test premise of + # there being no jvm flags + +-${JAVA} -cp ${TESTCLASSES} Sleeper & ++${JAVA} -cp ${TESTCLASSPATH:-${TESTCLASSES}} Sleeper & + SLEEPER_PID=$! + + ${JPS} -J-XX:Flags=${TESTSRC}/vmflags -Vvml | awk -f ${TESTSRC}/jps-Vvml_Output2.awk +--- jdk/test/sun/tools/jps/jps-l_Output1.awk 2012-08-10 10:37:09.000000000 -0700 ++++ jdk/test/sun/tools/jps/jps-l_Output1.awk 2013-05-05 09:38:47.000000000 -0700 +@@ -16,7 +16,12 @@ + } + + # or match on the condition that the class name is not available +-/^[0-9]+ -- process information unavailable$/ { ++/^[0-9]+ -- .*$/ { ++ matched++; ++ } ++ ++# or match an empty class name ++/^[0-9]+ $/ { + matched++; + } + +--- jdk/test/sun/tools/jps/jps-m_2.sh 2012-08-10 10:37:10.000000000 -0700 ++++ jdk/test/sun/tools/jps/jps-m_2.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,7 +46,7 @@ + # any args to Sleeper.main(), as we need to inspect jps output + # for the no args condition. + # +-${JAVA} -XX:+UsePerfData -cp ${TESTCLASSES} Sleeper & ++${JAVA} -XX:+UsePerfData -cp ${TESTCLASSPATH:-${TESTCLASSES}} Sleeper & + SLEEPER_PID=$! + + ${JPS} -J-XX:+UsePerfData -m | awk -f ${TESTSRC}/jps-m_Output2.awk +--- jdk/test/sun/tools/jps/jps_Output1.awk 2012-08-10 10:37:10.000000000 -0700 ++++ jdk/test/sun/tools/jps/jps_Output1.awk 2013-05-05 09:38:47.000000000 -0700 +@@ -16,7 +16,12 @@ + } + + # or match on the condition that the class name is not available +-/^[0-9]+ -- process information unavailable$/ { ++/^[0-9]+ -- .*$/ { ++ matched++; ++ } ++ ++# or match an empty class name ++/^[0-9]+ $/ { + matched++; + } + +--- jdk/test/sun/tools/jstat/jstatClassOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatClassOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -class 0 2>&1 | awk -f ${TESTSRC}/classOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -class 0 2>&1 | awk -f ${TESTSRC}/classOutput1.awk +--- jdk/test/sun/tools/jstat/jstatClassloadOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatClassloadOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -classload -J-Djstat.showUnsupported=true 0 2>&1 | awk -f ${TESTSRC}/classloadOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -classload -J-Djstat.showUnsupported=true 0 2>&1 | awk -f ${TESTSRC}/classloadOutput1.awk +--- jdk/test/sun/tools/jstat/jstatCompilerOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatCompilerOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -compiler 0 2>&1 | awk -f ${TESTSRC}/compilerOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -compiler 0 2>&1 | awk -f ${TESTSRC}/compilerOutput1.awk +--- jdk/test/sun/tools/jstat/jstatFileURITest1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatFileURITest1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,12 @@ + # characters into forward slash characters in an effort to convert + # TESTSRC into a canonical form useable as URI path. + cp ${TESTSRC}/hsperfdata_3433 . +- ${JSTAT} -J-XX:+UsePerfData -gcutil file:/`pwd`/hsperfdata_3433 2>&1 | awk -f ${TESTSRC}/fileURITest1.awk ++ ${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil file:/`pwd`/hsperfdata_3433 2>&1 | awk -f ${TESTSRC}/fileURITest1.awk + RC=$? + rm -f hsperfdata_3433 2>&1 > /dev/null + ;; + *) +- ${JSTAT} -J-XX:+UsePerfData -gcutil file:${TESTSRC}/hsperfdata_3433 2>&1 | awk -f ${TESTSRC}/fileURITest1.awk ++ ${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil file:${TESTSRC}/hsperfdata_3433 2>&1 | awk -f ${TESTSRC}/fileURITest1.awk + RC=$? + ;; + esac +--- jdk/test/sun/tools/jstat/jstatGcCapacityOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatGcCapacityOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gccapacity 0 2>&1 | awk -f ${TESTSRC}/gcCapacityOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gccapacity 0 2>&1 | awk -f ${TESTSRC}/gcCapacityOutput1.awk +--- jdk/test/sun/tools/jstat/jstatGcCauseOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatGcCauseOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +37,4 @@ + # class machine, ergonomics will automatically use UseParallelGC. + # The UseParallelGC collector does not currently update the gc cause counters. + +-${JSTAT} -J-XX:+UsePerfData -J-XX:+UseSerialGC -gccause 0 2>&1 | awk -f ${TESTSRC}/gcCauseOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -J-XX:+UseSerialGC -gccause 0 2>&1 | awk -f ${TESTSRC}/gcCauseOutput1.awk +--- jdk/test/sun/tools/jstat/jstatGcNewCapacityOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatGcNewCapacityOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gcnewcapacity 0 2>&1 | awk -f ${TESTSRC}/gcNewCapacityOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcnewcapacity 0 2>&1 | awk -f ${TESTSRC}/gcNewCapacityOutput1.awk +--- jdk/test/sun/tools/jstat/jstatGcNewOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatGcNewOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gcnew 0 2>&1 | awk -f ${TESTSRC}/gcNewOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcnew 0 2>&1 | awk -f ${TESTSRC}/gcNewOutput1.awk +--- jdk/test/sun/tools/jstat/jstatGcOldCapacityOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatGcOldCapacityOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gcoldcapacity 0 2>&1 | awk -f ${TESTSRC}/gcOldCapacityOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcoldcapacity 0 2>&1 | awk -f ${TESTSRC}/gcOldCapacityOutput1.awk +--- jdk/test/sun/tools/jstat/jstatGcOldOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatGcOldOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gcold 0 2>&1 | awk -f ${TESTSRC}/gcOldOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcold 0 2>&1 | awk -f ${TESTSRC}/gcOldOutput1.awk +--- jdk/test/sun/tools/jstat/jstatGcOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatGcOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gc 0 2>&1 | awk -f ${TESTSRC}/gcOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gc 0 2>&1 | awk -f ${TESTSRC}/gcOutput1.awk +--- jdk/test/sun/tools/jstat/jstatGcPermCapacityOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatGcPermCapacityOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gcpermcapacity 0 2>&1 | awk -f ${TESTSRC}/gcPermCapacityOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcpermcapacity 0 2>&1 | awk -f ${TESTSRC}/gcPermCapacityOutput1.awk +--- jdk/test/sun/tools/jstat/jstatLineCounts1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatLineCounts1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gcutil 0 250 5 2>&1 | awk -f ${TESTSRC}/lineCounts1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil 0 250 5 2>&1 | awk -f ${TESTSRC}/lineCounts1.awk +--- jdk/test/sun/tools/jstat/jstatLineCounts2.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatLineCounts2.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gcutil 0 2>&1 | awk -f ${TESTSRC}/lineCounts2.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil 0 2>&1 | awk -f ${TESTSRC}/lineCounts2.awk +--- jdk/test/sun/tools/jstat/jstatLineCounts3.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatLineCounts3.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gcutil -h 10 0 250 10 2>&1 | awk -f ${TESTSRC}/lineCounts3.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil -h 10 0 250 10 2>&1 | awk -f ${TESTSRC}/lineCounts3.awk +--- jdk/test/sun/tools/jstat/jstatLineCounts4.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatLineCounts4.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gcutil -h 10 0 250 11 2>&1 | awk -f ${TESTSRC}/lineCounts4.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil -h 10 0 250 11 2>&1 | awk -f ${TESTSRC}/lineCounts4.awk +--- jdk/test/sun/tools/jstat/jstatOptions1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatOptions1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,8 +33,8 @@ + JSTAT="${TESTJAVA}/bin/jstat" + + rm -f jstat.out1 jstat.out2 2>/dev/null +-${JSTAT} -J-XX:+UsePerfData -options > jstat.out1 2>&1 +-${JSTAT} -J-XX:+UsePerfData -options -J-Djstat.showUnsupported=true > jstat.out2 2>&1 ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -options > jstat.out1 2>&1 ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -options -J-Djstat.showUnsupported=true > jstat.out2 2>&1 + + diff -w jstat.out1 ${TESTSRC}/options1.out + diff -w jstat.out2 ${TESTSRC}/options2.out +--- jdk/test/sun/tools/jstat/jstatPrintCompilationOutput1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatPrintCompilationOutput1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +35,4 @@ + + # run with -Xcomp as jstat may complete too quickly to assure + # that compilation occurs. +-${JSTAT} -J-XX:+UsePerfData -J-Xcomp -printcompilation 0 2>&1 | awk -f ${TESTSRC}/printCompilationOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -J-Xcomp -printcompilation 0 2>&1 | awk -f ${TESTSRC}/printCompilationOutput1.awk +--- jdk/test/sun/tools/jstat/jstatSnap1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatSnap1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -snap 0 2>&1 | awk -f ${TESTSRC}/snap1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -snap 0 2>&1 | awk -f ${TESTSRC}/snap1.awk +--- jdk/test/sun/tools/jstat/jstatSnap2.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatSnap2.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -J-Djstat.showUnsupported=true -snap 0 2>&1 | awk -f ${TESTSRC}/snap2.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -J-Djstat.showUnsupported=true -snap 0 2>&1 | awk -f ${TESTSRC}/snap2.awk +--- jdk/test/sun/tools/jstat/jstatTimeStamp1.sh 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstat/jstatTimeStamp1.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # 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,4 +33,4 @@ + + JSTAT="${TESTJAVA}/bin/jstat" + +-${JSTAT} -J-XX:+UsePerfData -gcutil -t 0 2>&1 | awk -f ${TESTSRC}/timeStamp1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil -t 0 2>&1 | awk -f ${TESTSRC}/timeStamp1.awk +--- jdk/test/sun/tools/jstatd/jpsOutput1.awk 2012-08-10 10:37:11.000000000 -0700 ++++ jdk/test/sun/tools/jstatd/jpsOutput1.awk 2013-05-05 09:38:47.000000000 -0700 +@@ -7,7 +7,11 @@ + matched++; + } + +-/^[0-9]+ -- process information unavailable$/ { ++/^[0-9]+ -- .*$/ { ++ matched++; ++ } ++ ++/^[0-9]+ $/ { + matched++; + } + +--- jdk/test/sun/tools/jstatd/jstatdDefaults.sh 2012-08-10 10:37:12.000000000 -0700 ++++ jdk/test/sun/tools/jstatd/jstatdDefaults.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + # + # This code is free software; you can redistribute it and/or modify it +@@ -60,7 +60,7 @@ + exit 1 + fi + +-${JSTAT} -J-XX:+UsePerfData -gcutil ${JSTATD_PID}@${HOSTNAME} 250 5 2>&1 | awk -f ${TESTSRC}/jstatGcutilOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil ${JSTATD_PID}@${HOSTNAME} 250 5 2>&1 | awk -f ${TESTSRC}/jstatGcutilOutput1.awk + RC=$? + + if [ ${RC} -ne 0 ] +--- jdk/test/sun/tools/jstatd/jstatdExternalRegistry.sh 2012-08-10 10:37:12.000000000 -0700 ++++ jdk/test/sun/tools/jstatd/jstatdExternalRegistry.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + # + # This code is free software; you can redistribute it and/or modify it +@@ -73,7 +73,7 @@ + exit 1 + fi + +-${JSTAT} -J-XX:+UsePerfData -gcutil ${JSTATD_PID}@${HOSTNAME}:${PORT} 250 5 2>&1 | awk -f ${TESTSRC}/jstatGcutilOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil ${JSTATD_PID}@${HOSTNAME}:${PORT} 250 5 2>&1 | awk -f ${TESTSRC}/jstatGcutilOutput1.awk + RC=$? + + if [ ${RC} -ne 0 ] +--- jdk/test/sun/tools/jstatd/jstatdPort.sh 2012-08-10 10:37:12.000000000 -0700 ++++ jdk/test/sun/tools/jstatd/jstatdPort.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + # + # This code is free software; you can redistribute it and/or modify it +@@ -65,7 +65,7 @@ + exit 1 + fi + +-${JSTAT} -J-XX:+UsePerfData -gcutil ${JSTATD_PID}@${HOSTNAME}:${PORT} 250 5 2>&1 | awk -f ${TESTSRC}/jstatGcutilOutput1.awk ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil ${JSTATD_PID}@${HOSTNAME}:${PORT} 250 5 2>&1 | awk -f ${TESTSRC}/jstatGcutilOutput1.awk + RC=$? + + if [ ${RC} -ne 0 ] +--- jdk/test/sun/tools/jstatd/jstatdServerName.sh 2012-08-10 10:37:12.000000000 -0700 ++++ jdk/test/sun/tools/jstatd/jstatdServerName.sh 2013-05-05 09:38:47.000000000 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + # + # This code is free software; you can redistribute it and/or modify it +@@ -86,8 +86,8 @@ + exit 1 + fi + +-echo "running: ${JSTAT} -J-XX:+UsePerfData -gcutil ${JSTATD_1_PID}@${HOSTNAME}:${PORT_1} 250 5" +-${JSTAT} -J-XX:+UsePerfData -gcutil ${JSTATD_1_PID}@${HOSTNAME}:${PORT_1} 250 5 2>&1 | awk -f ${TESTSRC}/jstatGcutilOutput1.awk ++echo "running: ${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil ${JSTATD_1_PID}@${HOSTNAME}:${PORT_1} 250 5" ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil ${JSTATD_1_PID}@${HOSTNAME}:${PORT_1} 250 5 2>&1 | awk -f ${TESTSRC}/jstatGcutilOutput1.awk + RC=$? + + if [ ${RC} -ne 0 ] +@@ -95,8 +95,8 @@ + echo "jstat output differs from expected output" + fi + +-echo "running: ${JSTAT} -J-XX:+UsePerfData -gcutil ${JSTATD_1_PID}@${HOSTNAME}:${PORT_2}/${SERVERNAME} 250 5" +-${JSTAT} -J-XX:+UsePerfData -gcutil ${JSTATD_1_PID}@${HOSTNAME}:${PORT_2}/${SERVERNAME} 250 5 2>&1 | awk -f ${TESTSRC}/jstatGcutilOutput1.awk ++echo "running: ${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil ${JSTATD_1_PID}@${HOSTNAME}:${PORT_2}/${SERVERNAME} 250 5" ++${JSTAT} -J-XX:+UsePerfData -J-Duser.language=en -gcutil ${JSTATD_1_PID}@${HOSTNAME}:${PORT_2}/${SERVERNAME} 250 5 2>&1 | awk -f ${TESTSRC}/jstatGcutilOutput1.awk + RC=$? + + if [ ${RC} -ne 0 ] --- jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh 2012-08-10 10:37:12.000000000 -0700 -+++ jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh 2013-05-05 09:38:47.000000000 -0700 @@ -33,7 +33,7 @@ case `uname -s` in @@ -81850,7 +101045,7 @@ N2A=$TESTJAVA/bin/native2ascii --- jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh 2012-08-10 10:37:12.000000000 -0700 -+++ jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh 2013-03-09 08:44:54.000000000 -0800 ++++ jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh 2013-05-05 09:38:47.000000000 -0700 @@ -56,7 +56,7 @@ OS=`uname -s` @@ -81861,7 +101056,14 @@ ;; --- jdk/test/tools/launcher/Arrrghs.java 2012-08-10 10:37:13.000000000 -0700 -+++ jdk/test/tools/launcher/Arrrghs.java 2013-01-16 08:58:13.000000000 -0800 ++++ jdk/test/tools/launcher/Arrrghs.java 2013-05-05 09:38:41.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it @@ -36,7 +36,13 @@ import java.io.IOException; import java.io.InputStream; @@ -81929,7 +101131,7 @@ /* * Tests for 6214916 * These tests require that a JVM (any JVM) be installed in the system registry. -@@ -155,96 +162,425 @@ +@@ -155,96 +162,426 @@ // Basic test @@ -82093,6 +101295,7 @@ + checkArgumentParsing("../../*", "../../*"); + checkArgumentParsing("..\\..\\", "..\\..\\"); + checkArgumentParsing("../../", "../../"); ++ checkArgumentParsing("a b\\ c", "a", "b\\", "c"); + } + + private void initEmptyDir(File emptyDir) throws IOException { @@ -82376,7 +101579,7 @@ if (!isEnglishLocale()) { return; } -@@ -256,55 +592,65 @@ +@@ -256,55 +593,65 @@ (String[])null); tr = doExec(javaCmd, "-jar", "some.jar"); tr.contains("Error: Could not find or load main class MIA"); @@ -82452,7 +101655,7 @@ // amongst a potpourri of kindred main methods, is the right one chosen ? createJar(new File("some.jar"), new File("Foo"), -@@ -316,25 +662,29 @@ +@@ -316,25 +663,29 @@ "public static void main(String[] args) {System.out.println(\"THE_CHOSEN_ONE\");}"); tr = doExec(javaCmd, "-jar", "some.jar"); tr.contains("THE_CHOSEN_ONE"); @@ -82486,7 +101689,7 @@ if (!isEnglishLocale()) { // only english version return; } -@@ -345,48 +695,51 @@ +@@ -345,48 +696,51 @@ tr = doExec(javaCmd, "-Xdiag", "-jar", "some.jar"); tr.contains("Error: Could not find or load main class MIA"); tr.contains("java.lang.ClassNotFoundException: MIA"); @@ -82551,7 +101754,7 @@ System.out.println("Total of " + testExitValue + " failed"); System.exit(1); --- jdk/test/tools/launcher/TestHelper.java 2012-08-10 10:37:13.000000000 -0700 -+++ jdk/test/tools/launcher/TestHelper.java 2013-01-16 08:58:13.000000000 -0800 ++++ jdk/test/tools/launcher/TestHelper.java 2013-05-05 09:38:41.000000000 -0700 @@ -21,6 +21,14 @@ * questions. */ @@ -82790,7 +101993,7 @@ + public @interface Test {} } --- jdk/test/tools/launcher/ToolsOpts.java 1969-12-31 16:00:00.000000000 -0800 -+++ jdk/test/tools/launcher/ToolsOpts.java 2013-03-09 08:44:51.000000000 -0800 ++++ jdk/test/tools/launcher/ToolsOpts.java 2013-05-05 09:38:41.000000000 -0700 @@ -0,0 +1,218 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. @@ -83011,7 +102214,7 @@ + } +} --- langtools/.hgtags 2012-08-10 10:39:19.000000000 -0700 -+++ langtools/.hgtags 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/.hgtags 2013-05-05 09:38:26.000000000 -0700 @@ -123,6 +123,7 @@ 9425dd4f53d5bfcd992d9aecea0eb7d8b2d4f62b jdk7-b146 d34578643d1c6c752d4a6b5e79c6ab1b60850b4a jdk7u1-b01 @@ -83020,7 +102223,7 @@ cd2cc8b5edb045b950aed46d159b4fb8fc2fd1df jdk7u1-b02 82820a30201dbf4b80f1916f3d0f4a92ad21b61a jdk7u1-b03 baa2c13c70fea3d6e259a34f0903197fdceb64b5 jdk7u1-b04 -@@ -197,5 +198,46 @@ +@@ -197,5 +198,69 @@ a35ca56cf8d09b92511f0cd71208a2ea05c8a338 jdk7u6-b21 4f3aafa690d1fcb18693fc4085049eeffe4778f7 jdk7u6-b22 dd3e29d8892fcaba6d76431d5fa9d49e7c088f76 jdk7u6-b23 @@ -83028,6 +102231,7 @@ -41bc8da868e58f7182d26b2ab9b6f8a4b09894ed jdk7u8-b02 +6aac89e84fc96d15bb78b13aa71c9e6b73d7237e jdk7u6-b24 +bcd1d067d525065630deb98b678bc00b499adbe1 jdk7u6-b30 ++2d6017454236d4e95aad7feaff5fc92a612598f4 jdk7u6-b31 +2d6017454236d4e95aad7feaff5fc92a612598f4 jdk7u7-b10 +27041587508dbc4e08c956ba98a11ce0d5608dc4 jdk7u7-b30 +b92a9f4f6bce4ec500ed3adb8203e6424b579f94 jdk7u7-b11 @@ -83041,6 +102245,8 @@ +0d4cb328938002fa9a2efc8190ea97beae3230a9 jdk7u9-b02 +9148cdb9a18b55ad7d51bb9644b6db812de34eea jdk7u9-b04 +1de4a0865a714076b4922a9a7119adb98aee23f2 jdk7u9-b05 ++5d1a6a593fa17933683b34ea3a55c7d13c028a13 jdk7u9-b31 ++acd27fc7fcf3e9dc0a1ae7e101cc036e960b6295 jdk7u9-b32 +8dfbebb98865d822ddd9e0b9641d21e8bdb8a866 jdk7u10-b10 +01c6dde274bd520067264231b3015c37e8e62d24 jdk7u10-b11 +1fb02747d3bce646374c2cab95048c516cec6b01 jdk7u10-b12 @@ -83051,8 +102257,11 @@ +7101b3e80e96b000b0b4f0bd7fe4dd7910d02f74 jdk7u10-b17 +4f529e320d83f517a55065b4710c7f1e5ff692c9 jdk7u10-b18 +1e5aed8511b9bea5c2ebe51a2d9094be8bac73cc jdk7u10-b30 ++db426c20b06918feeeaa036d52a5096c2bb646b0 jdk7u10-b31 +b01338429ab6821f44d19601de433b538942b53d jdk7u11-b20 +aeef1c7e43bc2d4a0960ebf42b642f7a34ec8afc jdk7u11-b21 ++92de02b43596ea1d01c87d56dbc9acc0960a90c3 jdk7u11-b32 ++309b5ccd0501d48fa7eed29e45197b4101de4683 jdk7u11-b33 +eaa8a0141c35edc382d7ce0b1148912db8422b16 jdk7u11-b03 +e8071ede35dc5948f5ed127941be192a4a8c1ebd jdk7u11-b04 +17b9bb22f3fd6a624879a29a3fc4b252327c113d jdk7u11-b05 @@ -83066,11 +102275,28 @@ +1298307076c2f0c2a4acd3a2a132cbe98d399009 jdk7u15-b01 +8db0105f00ce9fe6899ece52d46d78995111c456 jdk7u15-b02 +b00c1580ffa95d9edd567835e1b9a77cf8ca2af6 jdk7u15-b30 ++2c82a733594aef14f7a91a910c6b7b20e6220078 jdk7u15-b31 ++5639dfc55f771823fab02438e5c89c6b18f57d07 jdk7u15-b33 +c160d7d1616d099afad0986b7d06aee2d9405e57 jdk7u15-b03 +a778aaf53c52f78c92f29a1220d9f46de94c9247 jdk7u15-b32 +edfcf07c2877af8efa649e514167b22b7f6fc0b4 jdk7u17-b01 ++2782a1c60faf7585dee0af0ef585aeed3288e521 jdk7u17-b02 ++0abc443a68676c7231b274a324d27204c735acac jdk7u17-b30 ++1a9b32d36ff86136549f20156cf3e821295228a0 jdk7u17-b31 ++8a12629ea21378f96666628f472cd9a6936a4933 jdk7u21-b01 ++82103a284427a2512fe884d8f232f1a83d46beb6 jdk7u21-b02 ++9adfe6a84c3884d5c24f6655e89546a6e0a80129 jdk7u21-b03 ++71704143744ee46f105bf1bf3e4b7aecaf9c1003 jdk7u21-b04 ++0970c229028499d5348d77712edf42d712538441 jdk7u21-b05 ++5e0127eb56c3f70bdf67a5b2c57cf218838371ae jdk7u21-b06 ++08034557136e484b3a7c4d0ec9b21e57ea9cd30b jdk7u21-b07 ++f3c75c441d5623186e43de0b5a645e12fc360c29 jdk7u21-b08 ++b6c7a18b668b85bdc41914b2b354c1928deb659e jdk7u21-b09 ++de06078efe709392d7faf44803d54b74599f6bda jdk7u21-b10 ++e120818fc321b5d9d8573a58bf5f6a6eb7471229 jdk7u21-b11 ++ff6f8ab2635c6e0b0f6bb1a68dca48b4fc31b107 jdk7u21-b30 --- langtools/test/Makefile 2012-08-10 10:39:30.000000000 -0700 -+++ langtools/test/Makefile 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/Makefile 2013-05-05 09:38:21.000000000 -0700 @@ -42,6 +42,14 @@ ARCH=i586 endif @@ -83107,7 +102333,7 @@ # Root of all test results TEST_OUTPUT_DIR = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)/test/langtools --- langtools/test/tools/javac/4846262/Test.sh 2012-08-10 10:39:38.000000000 -0700 -+++ langtools/test/tools/javac/4846262/Test.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/4846262/Test.sh 2013-05-05 09:38:19.000000000 -0700 @@ -44,7 +44,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83118,7 +102344,7 @@ ;; CYGWIN* ) --- langtools/test/tools/javac/6302184/T6302184.sh 2012-08-10 10:39:38.000000000 -0700 -+++ langtools/test/tools/javac/6302184/T6302184.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/6302184/T6302184.sh 2013-05-05 09:38:19.000000000 -0700 @@ -41,7 +41,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83129,7 +102355,7 @@ ;; CYGWIN* ) --- langtools/test/tools/javac/ClassPathTest/ClassPathTest.sh 2012-08-10 10:39:41.000000000 -0700 -+++ langtools/test/tools/javac/ClassPathTest/ClassPathTest.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/ClassPathTest/ClassPathTest.sh 2013-05-05 09:38:19.000000000 -0700 @@ -56,7 +56,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83140,7 +102366,7 @@ ;; Windows* ) --- langtools/test/tools/javac/ExtDirs/ExtDirs.sh 2012-08-10 10:39:43.000000000 -0700 -+++ langtools/test/tools/javac/ExtDirs/ExtDirs.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/ExtDirs/ExtDirs.sh 2013-05-05 09:38:19.000000000 -0700 @@ -54,7 +54,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83151,7 +102377,7 @@ FS="/" ;; --- langtools/test/tools/javac/MissingInclude.sh 2012-08-10 10:39:44.000000000 -0700 -+++ langtools/test/tools/javac/MissingInclude.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/MissingInclude.sh 2013-05-05 09:38:21.000000000 -0700 @@ -47,7 +47,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83162,7 +102388,7 @@ ;; Windows* ) --- langtools/test/tools/javac/ProtectedInnerClass/ProtectedInnerClass.sh 2012-08-10 10:39:45.000000000 -0700 -+++ langtools/test/tools/javac/ProtectedInnerClass/ProtectedInnerClass.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/ProtectedInnerClass/ProtectedInnerClass.sh 2013-05-05 09:38:19.000000000 -0700 @@ -52,7 +52,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83173,7 +102399,7 @@ FS="/" ;; --- langtools/test/tools/javac/T5090006/compiler.sh 2012-08-10 10:39:47.000000000 -0700 -+++ langtools/test/tools/javac/T5090006/compiler.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/T5090006/compiler.sh 2013-05-05 09:38:19.000000000 -0700 @@ -47,7 +47,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83184,7 +102410,7 @@ ;; Windows* ) --- langtools/test/tools/javac/apt.sh 2012-08-10 10:39:53.000000000 -0700 -+++ langtools/test/tools/javac/apt.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/apt.sh 2013-05-05 09:38:21.000000000 -0700 @@ -38,7 +38,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83195,7 +102421,7 @@ PS=":" FS="/" --- langtools/test/tools/javac/constDebug/ConstDebug.sh 2012-08-10 10:39:55.000000000 -0700 -+++ langtools/test/tools/javac/constDebug/ConstDebug.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/constDebug/ConstDebug.sh 2013-05-05 09:38:19.000000000 -0700 @@ -47,7 +47,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83206,7 +102432,7 @@ FS="/" ;; --- langtools/test/tools/javac/fatalErrors/NoJavaLang.sh 2012-08-10 10:40:03.000000000 -0700 -+++ langtools/test/tools/javac/fatalErrors/NoJavaLang.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/fatalErrors/NoJavaLang.sh 2013-05-05 09:38:20.000000000 -0700 @@ -48,7 +48,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83217,7 +102443,7 @@ ;; CYGWIN* ) --- langtools/test/tools/javac/innerClassFile/Driver.sh 2012-08-10 10:40:14.000000000 -0700 -+++ langtools/test/tools/javac/innerClassFile/Driver.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/innerClassFile/Driver.sh 2013-05-05 09:38:21.000000000 -0700 @@ -53,7 +53,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83228,7 +102454,7 @@ ;; Windows* ) --- langtools/test/tools/javac/javazip/Test.sh 2012-08-10 10:40:14.000000000 -0700 -+++ langtools/test/tools/javac/javazip/Test.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/javazip/Test.sh 2013-05-05 09:38:21.000000000 -0700 @@ -41,7 +41,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83239,7 +102465,7 @@ SCR=`pwd` ;; --- langtools/test/tools/javac/links/links.sh 2012-08-10 10:40:15.000000000 -0700 -+++ langtools/test/tools/javac/links/links.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/links/links.sh 2013-05-05 09:38:21.000000000 -0700 @@ -53,7 +53,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83250,7 +102476,7 @@ PS=":" FS="/" --- langtools/test/tools/javac/newlines/Newlines.sh 2012-08-10 10:40:17.000000000 -0700 -+++ langtools/test/tools/javac/newlines/Newlines.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/newlines/Newlines.sh 2013-05-05 09:38:21.000000000 -0700 @@ -50,7 +50,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83260,8 +102486,129 @@ FS="/" ;; Windows* ) +--- langtools/test/tools/javac/processing/6348499/T6348499.java 2012-08-10 10:40:18.000000000 -0700 ++++ langtools/test/tools/javac/processing/6348499/T6348499.java 2013-05-05 09:38:21.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,6 +47,7 @@ + public static void main(String... args) { + String testSrc = System.getProperty("test.src", "."); + String testClasses = System.getProperty("test.classes"); ++ String testClassPath = System.getProperty("test.class.path", testClasses); + String A_java = new File(testSrc, "A.java").getPath(); + JavacTool tool = JavacTool.create(); + MyDiagListener dl = new MyDiagListener(); +@@ -55,7 +56,7 @@ + fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "A.java"))); + Iterable<String> opts = Arrays.asList("-proc:only", + "-processor", "A", +- "-processorpath", testClasses); ++ "-processorpath", testClassPath); + StringWriter out = new StringWriter(); + JavacTask task = tool.getTask(out, fm, dl, opts, null, files); + task.call(); +--- langtools/test/tools/javac/processing/6414633/T6414633.java 2012-08-10 10:40:18.000000000 -0700 ++++ langtools/test/tools/javac/processing/6414633/T6414633.java 2013-05-05 09:38:21.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -43,20 +43,20 @@ + public static void main(String... args) { + String testSrc = System.getProperty("test.src", "."); + String testClasses = System.getProperty("test.classes", "."); ++ String testClassPath = System.getProperty("test.class.path", testClasses); + + JavacTool tool = JavacTool.create(); + MyDiagListener dl = new MyDiagListener(); + StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null); + try { +- fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(new File(testClasses))); ++ fm.setLocation(StandardLocation.CLASS_PATH, pathToFiles(testClassPath)); + } catch (IOException e) { + throw new AssertionError(e); + } + Iterable<? extends JavaFileObject> files = + fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, A.class.getName()+".java"))); + String[] opts = { "-proc:only", +- "-processor", A.class.getName(), +- "-classpath", testClasses + System.getProperty("path.separator") + "../../lib" }; ++ "-processor", A.class.getName() }; + JavacTask task = tool.getTask(null, fm, dl, Arrays.asList(opts), null, files); + task.call(); + +@@ -65,6 +65,15 @@ + throw new AssertionError(dl.diags + " diagnostics reported"); + } + ++ private static List<File> pathToFiles(String path) { ++ List<File> list = new ArrayList<File>(); ++ for (String s: path.split(File.pathSeparator)) { ++ if (!s.isEmpty()) ++ list.add(new File(s)); ++ } ++ return list; ++ } ++ + private static class MyDiagListener implements DiagnosticListener<JavaFileObject> + { + public void report(Diagnostic d) { +--- langtools/test/tools/javac/processing/6430209/T6430209.java 2012-08-10 10:40:18.000000000 -0700 ++++ langtools/test/tools/javac/processing/6430209/T6430209.java 2013-05-05 09:38:21.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -56,6 +56,7 @@ + // -proc:only -processor b6341534 -cp . ./src/*.java + String testSrc = System.getProperty("test.src", "."); + String testClasses = System.getProperty("test.classes") + System.getProperty("path.separator") + "../../lib"; ++ String testClassPath = System.getProperty("test.class.path", testClasses); + JavacTool tool = JavacTool.create(); + MyDiagListener dl = new MyDiagListener(); + StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null); +@@ -64,7 +65,7 @@ + new File(testSrc, "test0.java"), new File(testSrc, "test1.java"))); + Iterable<String> opts = Arrays.asList("-proc:only", + "-processor", "b6341534", +- "-processorpath", testClasses); ++ "-processorpath", testClassPath); + StringWriter out = new StringWriter(); + JavacTask task = tool.getTask(out, fm, dl, opts, null, files); + task.call(); +--- langtools/test/tools/javac/processing/T6920317.java 2012-08-10 10:40:19.000000000 -0700 ++++ langtools/test/tools/javac/processing/T6920317.java 2013-05-05 09:38:21.000000000 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. + * 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,7 +156,9 @@ + String expect = null; + + opts.add("-processorpath"); +- opts.add(System.getProperty("test.classes")); ++ String testClasses = System.getProperty("test.classes"); ++ String testClassPath = System.getProperty("test.class.path", testClasses); ++ opts.add(testClassPath); + opts.add("-processor"); + opts.add(Processor.class.getName()); + opts.add("-proc:only"); --- langtools/test/tools/javac/stackmap/T4955930.sh 2012-08-10 10:40:22.000000000 -0700 -+++ langtools/test/tools/javac/stackmap/T4955930.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/stackmap/T4955930.sh 2013-05-05 09:38:21.000000000 -0700 @@ -41,7 +41,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83272,7 +102619,7 @@ ;; Windows_95 | Windows_98 | Windows_NT ) --- langtools/test/tools/javac/unicode/SupplementaryJavaID6.sh 2012-08-10 10:40:25.000000000 -0700 -+++ langtools/test/tools/javac/unicode/SupplementaryJavaID6.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javac/unicode/SupplementaryJavaID6.sh 2013-05-05 09:38:21.000000000 -0700 @@ -55,7 +55,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83283,7 +102630,7 @@ then ENV="env LANG=en_US.UTF-8" --- langtools/test/tools/javah/6257087/foo.sh 2012-08-10 10:40:28.000000000 -0700 -+++ langtools/test/tools/javah/6257087/foo.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javah/6257087/foo.sh 2013-05-05 09:38:21.000000000 -0700 @@ -41,7 +41,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83294,7 +102641,7 @@ FS="/" ;; --- langtools/test/tools/javah/ConstMacroTest.sh 2012-08-10 10:40:28.000000000 -0700 -+++ langtools/test/tools/javah/ConstMacroTest.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javah/ConstMacroTest.sh 2013-05-05 09:38:21.000000000 -0700 @@ -56,7 +56,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83305,7 +102652,7 @@ FS="/" ;; --- langtools/test/tools/javah/MissingParamClassTest.sh 2012-08-10 10:40:28.000000000 -0700 -+++ langtools/test/tools/javah/MissingParamClassTest.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javah/MissingParamClassTest.sh 2013-05-05 09:38:21.000000000 -0700 @@ -58,7 +58,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83316,7 +102663,7 @@ FS="/" ;; --- langtools/test/tools/javah/ReadOldClass.sh 2012-08-10 10:40:28.000000000 -0700 -+++ langtools/test/tools/javah/ReadOldClass.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javah/ReadOldClass.sh 2013-05-05 09:38:21.000000000 -0700 @@ -43,7 +43,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83327,7 +102674,7 @@ FS="/" ;; --- langtools/test/tools/javap/pathsep.sh 2012-08-10 10:40:29.000000000 -0700 -+++ langtools/test/tools/javap/pathsep.sh 2013-03-09 08:44:59.000000000 -0800 ++++ langtools/test/tools/javap/pathsep.sh 2013-05-05 09:38:21.000000000 -0700 @@ -40,7 +40,7 @@ # set platform-dependent variables OS=`uname -s` @@ -83337,140 +102684,6 @@ FS="/" ;; Windows* ) ---- make/scripts/hgforest.sh 2012-08-10 09:07:04.000000000 -0700 -+++ make/scripts/hgforest.sh 2013-01-15 23:01:23.000000000 -0800 -@@ -1,7 +1,7 @@ - #!/bin/sh - - # --# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. -+# 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 -@@ -24,8 +24,6 @@ - # - - # Shell script for a fast parallel forest command --command="$1" --pull_extra_base="$2" - - tmp=/tmp/forest.$$ - rm -f -r ${tmp} -@@ -37,58 +35,40 @@ - - # Only look in specific locations for possible forests (avoids long searches) - pull_default="" --repos="" --repos_extra="" --if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then -+if [ "$1" = "clone" -o "$1" = "fclone" ] ; then - subrepos="corba jaxp jaxws langtools jdk hotspot" - if [ -f .hg/hgrc ] ; then - pull_default=`hg paths default` -- if [ "${pull_default}" = "" ] ; then -- echo "ERROR: Need initial clone with 'hg paths default' defined" -- exit 1 -- fi - fi - if [ "${pull_default}" = "" ] ; then -- echo "ERROR: Need initial repository to use this script" -+ echo "ERROR: Need initial clone with 'hg paths default' defined" - exit 1 - fi -+ repos="" - for i in ${subrepos} ; do - if [ ! -f ${i}/.hg/hgrc ] ; then - repos="${repos} ${i}" - fi - done -- if [ "${pull_extra_base}" != "" ] ; then -- subrepos_extra="jdk/src/closed jdk/make/closed jdk/test/closed hotspot/src/closed hotspot/test/closed deploy install sponsors pubs" -- pull_default_tail=`echo ${pull_default} | sed -e 's@^.*://[^/]*/\(.*\)@\1@'` -- pull_extra="${pull_extra_base}/${pull_default_tail}" -- for i in ${subrepos_extra} ; do -- if [ ! -f ${i}/.hg/hgrc ] ; then -- repos_extra="${repos_extra} ${i}" -- fi -- done -- fi - at_a_time=2 -- # Any repos to deal with? -- if [ "${repos}" = "" -a "${repos_extra}" = "" ] ; then -- echo "No repositories to clone." -- exit -- fi - else - hgdirs=`ls -d ./.hg ./*/.hg ./*/*/.hg ./*/*/*/.hg ./*/*/*/*/.hg 2>/dev/null` - # Derive repository names from the .hg directory locations -+ repos="" - for i in ${hgdirs} ; do - repos="${repos} `echo ${i} | sed -e 's@/.hg$@@'`" - done - at_a_time=8 -- # Any repos to deal with? -- if [ "${repos}" = "" ] ; then -- echo "No repositories to process." -- exit -- fi - fi - --# Echo out what repositories we will clone --echo "# Repos: ${repos} ${repos_extra}" -+# Any repos to deal with? -+if [ "${repos}" = "" ] ; then -+ echo "No repositories to process." -+ exit -+fi -+ -+# Echo out what repositories we will process -+echo "# Repos: ${repos}" - - # Run the supplied command on all repos in parallel, save output until end - n=0 -@@ -97,9 +77,8 @@ - n=`expr ${n} '+' 1` - ( - ( -- if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then -- pull_newrepo="`echo ${pull_default}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`" -- cline="hg clone ${pull_newrepo} ${i}" -+ if [ "$1" = "clone" -o "$1" = "fclone" ] ; then -+ cline="hg $* ${pull_default}/${i} ${i}" - echo "# ${cline}" - ( eval "${cline}" ) - else -@@ -113,29 +92,10 @@ - sleep 5 - fi - done -+ - # Wait for all hg commands to complete - wait - --if [ "${repos_extra}" != "" ] ; then -- for i in ${repos_extra} ; do -- echo "Starting on ${i}" -- n=`expr ${n} '+' 1` -- ( -- ( -- pull_newextrarepo="`echo ${pull_extra}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`" -- cline="hg clone ${pull_newextrarepo} ${i}" -- echo "# ${cline}" -- ( eval "${cline}" ) -- echo "# exit code $?" -- ) > ${tmp}/repo.${n} 2>&1 ; cat ${tmp}/repo.${n} ) & -- if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then -- sleep 5 -- fi -- done -- # Wait for all hg commands to complete -- wait --fi -- - # Cleanup - rm -f -r ${tmp} - --- make/scripts/normalizer.pl 2012-08-10 09:07:04.000000000 -0700 +++ make/scripts/normalizer.pl 1969-12-31 16:00:00.000000000 -0800 @@ -1,208 +0,0 @@ diff --git a/java/openjdk7/files/patch-zzz-make-sun-awt-Makefile b/java/openjdk7/files/patch-zzz-make-sun-awt-Makefile deleted file mode 100644 index c13f54679579..000000000000 --- a/java/openjdk7/files/patch-zzz-make-sun-awt-Makefile +++ /dev/null @@ -1,20 +0,0 @@ ---- jdk/make/sun/awt/Makefile.orig 2013-03-26 18:41:21.000000000 -0700 -+++ jdk/make/sun/awt/Makefile 2013-03-26 18:41:38.000000000 -0700 -@@ -123,8 +123,6 @@ - OTHER_LDLIBS = $(JVMLIB) $(LIBM) $(LIBDL) - endif - --FILES_c += initIDs.c -- - ifeq ($(PLATFORM), bsd) - FILES_c = $(FILES_2D_c) - FILES_c += awt_LoadLibrary.c -@@ -139,6 +137,8 @@ - OTHER_LDLIBS = $(JVMLIB) $(LIBM) - endif - -+FILES_c += initIDs.c -+ - # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS/LINUX - endif # PLATFORM - |