summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorGreg Lewis <glewis@FreeBSD.org>2013-05-05 20:10:26 +0000
committerGreg Lewis <glewis@FreeBSD.org>2013-05-05 20:10:26 +0000
commitb46768de7aa34893d0146899b48cb5e1ab4f4dea (patch)
tree1a3fcca1aaecdd3e6d4841641d39ee0013e78071 /java
parentUpdate 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/Makefile5
-rw-r--r--java/openjdk7/files/patch-set69643
-rw-r--r--java/openjdk7/files/patch-zzz-make-sun-awt-Makefile20
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 &lt;real.class.name&gt; [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&#064;\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¥¨¥ó¥Æ¥£¥Æ¥£É½µ­Ë¡¤Î¡Ö&#125;¡×¤ò»ÈÍѤ·¤Þ¤¹¡£
-+.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 &copy; 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 &copy; 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 &copy; 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 &copy; 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
-