diff --git a/.hgignore b/.hgignore index 52a5512a408912d15d645c6adb390ed2368ea042..67c84657748ad807b406b4375aab6323742d3d89 100644 --- a/.hgignore +++ b/.hgignore @@ -3,3 +3,4 @@ /nbproject/private/ ^make/netbeans/.*/build/ ^make/netbeans/.*/dist/ +^.hgtip diff --git a/.hgtags b/.hgtags index d83c29f1bedc2f0df4258045dcb42ec6f09f0e2b..c3032b54af605d63fb51930314236cc48992e196 100644 --- a/.hgtags +++ b/.hgtags @@ -113,3 +113,4 @@ d8ced728159fbb2caa8b6adb477fd8efdbbdf179 jdk7-b135 aa13e7702cd9d8aca9aa38f1227f966990866944 jdk7-b136 29296ea6529a418037ccce95903249665ef31c11 jdk7-b137 60d3d55dcc9c31a30ced9caa6ef5c0dcd7db031d jdk7-b138 +d80954a89b49fda47c0c5cace65a17f5a758b8bd jdk7-b139 diff --git a/make/com/sun/java/pack/Makefile b/make/com/sun/java/pack/Makefile index b9b79648bb3e043ea35a55de44b9eae083da2f26..f0841521fb9327422480a29ca6b6c0a560f933df 100644 --- a/make/com/sun/java/pack/Makefile +++ b/make/com/sun/java/pack/Makefile @@ -56,10 +56,6 @@ build: unpacker vpath %.cpp $(SHARE_SRC)/native/$(PKGDIR) - - - - ifeq ($(STANDALONE),true) ZIPOBJDIR = $(OUTPUTDIR)/tmp/sun/java.util.zip/zip/$(OBJDIRNAME) @@ -131,8 +127,9 @@ prop: pack200-tool: $(call make-launcher, pack200, com.sun.java.util.jar.pack.Driver, , --pack) +# ignore mapfile for non-product binary unpacker: - $(MAKE) $(UNPACK_EXE) STANDALONE=true LDMAPFLAGS_OPT= LDMAPFLAGS_DBG= + $(MAKE) $(UNPACK_EXE) STANDALONE=true LDMAPFLAGS_DBG= ifeq ($(PLATFORM), windows) IMVERSIONVALUE=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER) @@ -147,8 +144,14 @@ winres:: $(ECHO) "Resource files not required for Unix" endif +# Mapfile-vers.gmk, does not copy over the mapfile-vers-unpack200, when +# the make utiliy is re-invoked, as in this case. In order to workaround +# this special case, the mapfile required for the unpack200 command, is +# explicitly copied over to the expected location. $(UNPACK_EXE): $(UNPACK_EXE_FILES_o) updatefiles winres $(prep-target) + $(RM) $(TEMPDIR)/mapfile-vers + $(CP) mapfile-vers-unpack200 $(TEMPDIR)/mapfile-vers $(LINKER) $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX) ifdef MT $(MT) /manifest $(OBJDIR)/unpack200$(EXE_SUFFIX).manifest /outputresource:$(TEMPDIR)/unpack200$(EXE_SUFFIX);#1 diff --git a/make/com/sun/java/pack/mapfile-vers-unpack200 b/make/com/sun/java/pack/mapfile-vers-unpack200 new file mode 100644 index 0000000000000000000000000000000000000000..8a659d3f98551480ce737680836d9013cf9baa66 --- /dev/null +++ b/make/com/sun/java/pack/mapfile-vers-unpack200 @@ -0,0 +1,31 @@ +# +# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# Define library interface. + +SUNWprivate_1.1 { + local: + *; +}; diff --git a/make/common/Defs-linux.gmk b/make/common/Defs-linux.gmk index fcaad70af32c98d7f5c4662081285a76342496ef..515691dd29303280dc047fd04e975e12584c6d1c 100644 --- a/make/common/Defs-linux.gmk +++ b/make/common/Defs-linux.gmk @@ -251,9 +251,8 @@ LDFLAGS_COMMON += -Wl,-soname=$(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX) # statically link libgcc but will print a warning with the flag. We don't # want the warning, so check gcc version first. # -CC_VER_MAJOR := $(shell $(CC) -dumpversion | $(SED) 's/egcs-//' | $(CUT) -d'.' -f1) -ifeq ("$(CC_VER_MAJOR)", "3") -OTHER_LDFLAGS += -static-libgcc +ifeq ($(CC_MAJORVER),3) + OTHER_LDFLAGS += -static-libgcc endif # Automatic precompiled header option to use (if COMPILE_APPROACH=batch) diff --git a/make/common/Defs-solaris.gmk b/make/common/Defs-solaris.gmk index 1442959756ffbe8958118db551d5f3455604ed01..c062f275c25564f3d140c8db391a5e096eccf901 100644 --- a/make/common/Defs-solaris.gmk +++ b/make/common/Defs-solaris.gmk @@ -457,14 +457,15 @@ else # On X86, make sure tail call optimization is off # The z and y are the tail call optimizations. ifeq ($(ARCH_FAMILY), i586) - ifeq ($(shell $(EXPR) $(CC_MAJORVER) \>= 5), 1) - ifeq ($(shell $(EXPR) $(CC_MINORVER) \> 8), 1) - # Somehow, tail call optimization is creeping in. - # Make sure it is off. - # WARNING: These may cause compiler warnings about duplicate -O options - CC_XKEEPFRAME_OPTIONS += -Wu,-O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz - CXX_XKEEPFRAME_OPTIONS += -Qoption ube -O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz - endif + CC_NEWER_THAN_58 := \ + $(shell $(EXPR) $(CC_MAJORVER) \> 5 \| \ + \( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \> 8 \) ) + ifeq ($(CC_NEWER_THAN_58),1) + # Somehow, tail call optimization is creeping in. + # Make sure it is off. + # WARNING: These may cause compiler warnings about duplicate -O options + CC_XKEEPFRAME_OPTIONS += -Wu,-O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz + CXX_XKEEPFRAME_OPTIONS += -Qoption ube -O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz endif endif @@ -481,14 +482,15 @@ else CXX_XKEEPFRAME_OPTIONS += -Qoption ube -Z~B endif - ifeq ($(shell $(EXPR) $(CC_MAJORVER) \>= 5), 1) - ifeq ($(shell $(EXPR) $(CC_MINORVER) \> 6), 1) - # Do NOT use frame pointer register as a general purpose opt register - CC_OPT/NONE += -xregs=no%frameptr - CXX_OPT/NONE += -xregs=no%frameptr - CC_XKEEPFRAME_OPTIONS += -xregs=no%frameptr - CXX_XKEEPFRAME_OPTIONS += -xregs=no%frameptr - endif + CC_NEWER_THAN_56 := \ + $(shell $(EXPR) $(CC_MAJORVER) \> 5 \| \ + \( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \> 6 \) ) + ifeq ($(CC_NEWER_THAN_56),1) + # Do NOT use frame pointer register as a general purpose opt register + CC_OPT/NONE += -xregs=no%frameptr + CXX_OPT/NONE += -xregs=no%frameptr + CC_XKEEPFRAME_OPTIONS += -xregs=no%frameptr + CXX_XKEEPFRAME_OPTIONS += -xregs=no%frameptr endif endif @@ -566,8 +568,10 @@ else CFLAGS_REQUIRED_sparc += -xregs=no%appl CFLAGS_REQUIRED_sparcv9 += -xregs=no%appl endif - ifeq ($(shell $(EXPR) $(CC_VER) \> 5.6), 1) - # We MUST allow data alignment of 4 for sparc V8 (32bit) + CC_NEWER_THAN_56 := \ + $(shell $(EXPR) $(CC_MAJORVER) \> 5 \| \ + \( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \> 6 \) ) + ifeq ($(CC_NEWER_THAN_56),1) # Presents an ABI issue with customer JNI libs? We must be able to # to handle 4byte aligned objects? (rare occurance, but possible?) CFLAGS_REQUIRED_sparc += -xmemalign=4s diff --git a/make/common/Demo.gmk b/make/common/Demo.gmk index c804e94d180ec3d8e1ce424f984b3cadba58de14..a3788aea7d5f9f2948cd708912d433277220f282 100644 --- a/make/common/Demo.gmk +++ b/make/common/Demo.gmk @@ -211,9 +211,13 @@ $(DEMO_BUILD_SRCDIR)/%: $(DEMO_SRCDIR)/../java_crw_demo/% endif # Jar manifest file -$(DEMO_MANIFEST): +MAINMANIFEST = $(JDK_TOPDIR)/make/tools/manifest.mf +$(DEMO_MANIFEST): $(MAINMANIFEST) @$(prep-target) - $(ECHO) "Main-Class: $(DEMO_MAINCLASS)" > $@ + $(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \ + -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \ + $(MAINMANIFEST) >> $@ + $(ECHO) "Main-Class: $(DEMO_MAINCLASS)" >> $@ ifdef DEMO_MANIFEST_ATTR $(ECHO) "$(DEMO_MANIFEST_ATTR)" >> $@ endif diff --git a/make/common/Mapfile-vers.gmk b/make/common/Mapfile-vers.gmk index e4e151f321474586ad59b9eba2e2bd1032c50793..15c8ccd519a6cec9a42c66004e98f29768686059 100644 --- a/make/common/Mapfile-vers.gmk +++ b/make/common/Mapfile-vers.gmk @@ -52,8 +52,8 @@ ifeq ($(VARIANT), OPT) endif # If we are re-ordering functions in this solaris library, we need to make - # sure that -xF is added to the compile lines. This option is critical and - # enables the functions to be reordered. + # sure that -xF is added to the compile lines. This option is critical and + # enables the functions to be reordered. ifdef FILES_reorder CFLAGS_OPT += -xF CXXFLAGS_OPT += -xF @@ -76,7 +76,6 @@ endif endif # PLATFORM - ifeq ($(PLATFORM), linux) ifeq ($(VARIANT), OPT) diff --git a/make/common/Program.gmk b/make/common/Program.gmk index 23f704e46a732e2ae0bfb04c1fbbc03cb138346e..9fdde6d9745446d2eb3c55de51385b098d84a579 100644 --- a/make/common/Program.gmk +++ b/make/common/Program.gmk @@ -55,6 +55,11 @@ program_default_rule: all program: $(ACTUAL_PROGRAM) +# reuse the mapfiles in the launcher's directory, the same should +# be applicable to the tool launchers as well. +FILES_m = $(BUILDDIR)/java/main/java/mapfile-$(ARCH) +include $(BUILDDIR)/common/Mapfile-vers.gmk + include $(JDK_TOPDIR)/make/common/Rules.gmk ifdef NEVER_ACT_AS_SERVER_CLASS_MACHINE diff --git a/make/common/Release-embedded.gmk b/make/common/Release-embedded.gmk index f7a87f28421a6867ba6c8a625cbe13cadaa47358..06e2127ecf307da3cf0d589d966f3b969e735fe9 100644 --- a/make/common/Release-embedded.gmk +++ b/make/common/Release-embedded.gmk @@ -84,10 +84,10 @@ MakeHeadlessJarFileList: $(TOTAL_HEADLESS_JAR_FILELIST) $(JARSPLIT_JARFILE) # Create headless rt.jar HL_RT_JAR=$(ABS_TEMPDIR)/rt-hl-orig.jar -$(HL_RT_JAR): MakeHeadlessJarFileList $(JAR_MANIFEST_FILE) +$(HL_RT_JAR): MakeHeadlessJarFileList $(RT_JAR_MANIFEST_FILE) $(prep-target) $(CD) $(CLASSBINDIR) ; \ - $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(JAR_MANIFEST_FILE) $@ @$(HEADLESS_RT_JAR_FILELIST) \ + $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(RT_JAR_MANIFEST_FILE) $@ @$(HEADLESS_RT_JAR_FILELIST) \ $(JAR_JFLAGS) @$(CD) $(CLASSBINDIR); $(java-vm-cleanup) diff --git a/make/common/Release.gmk b/make/common/Release.gmk index 17297d573b04613a6f6c585864f7d8a00f50e952..fbb9f0d55f4c9bc8a95a1b9deebef3e60413a05c 100644 --- a/make/common/Release.gmk +++ b/make/common/Release.gmk @@ -609,8 +609,8 @@ $(RT_JAR_FILELIST) + $(RES_JAR_FILELIST): \ @$(java-vm-cleanup) # Create the manifest file. -JAR_MANIFEST_FILE=$(ABS_TEMPDIR)/manifest.tmp -$(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST) +RT_JAR_MANIFEST_FILE=$(ABS_TEMPDIR)/rt_manifest.tmp +$(RT_JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST) $(prep-target) $(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \ -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \ @@ -618,21 +618,28 @@ $(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST) $(ECHO) >> $@ $(CAT) $(BEANMANIFEST) >> $@ +OTHER_JAR_MANIFEST_FILE=$(ABS_TEMPDIR)/other_manifest.tmp +$(OTHER_JAR_MANIFEST_FILE): $(MAINMANIFEST) + $(prep-target) + $(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \ + -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \ + $(MAINMANIFEST) >> $@ + # Create resources.jar containing non-class files RESOURCES_JAR=$(ABS_TEMPDIR)/resources-orig.jar -$(RESOURCES_JAR): $(RES_JAR_FILELIST) $(JAR_MANIFEST_FILE) +$(RESOURCES_JAR): $(RES_JAR_FILELIST) $(OTHER_JAR_MANIFEST_FILE) $(prep-target) $(CD) $(CLASSBINDIR) && \ - $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(JAR_MANIFEST_FILE) $@ \ + $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(OTHER_JAR_MANIFEST_FILE) $@ \ @$(RES_JAR_FILELIST) $(BOOT_JAR_JFLAGS) @$(CD) $(CLASSBINDIR) && $(java-vm-cleanup) # Create jsse.jar containing SunJSSE implementation classes JSSE_JAR=$(ABS_TEMPDIR)/jsse-orig.jar -$(JSSE_JAR): $(JAR_MANIFEST_FILE) +$(JSSE_JAR): $(OTHER_JAR_MANIFEST_FILE) $(prep-target) $(CD) $(CLASSBINDIR) && \ - $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(JAR_MANIFEST_FILE) $@ \ + $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(OTHER_JAR_MANIFEST_FILE) $@ \ $(JSSE_CLASSES_DIRS) $(BOOT_JAR_JFLAGS) @$(CD) $(CLASSBINDIR) && $(java-vm-cleanup) @@ -676,10 +683,10 @@ endif # Create rt.jar RT_JAR=$(ABS_TEMPDIR)/rt-orig.jar -$(RT_JAR): $(RT_JAR_FILELIST) $(JAR_MANIFEST_FILE) +$(RT_JAR): $(RT_JAR_FILELIST) $(RT_JAR_MANIFEST_FILE) $(prep-target) $(CD) $(CLASSBINDIR) && \ - $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(JAR_MANIFEST_FILE) $@ \ + $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(RT_JAR_MANIFEST_FILE) $@ \ @$(RT_JAR_FILELIST) $(BOOT_JAR_JFLAGS) @$(CD) $(CLASSBINDIR) && $(java-vm-cleanup) @@ -885,12 +892,18 @@ else ABS_DB_PATH :=$(call FullPath,$(CLOSED_SHARE_SRC)/db) DB_ZIP_LIST = $(shell $(LS) $(ABS_DB_PATH)/*.zip 2>/dev/null) +# Java DB image. Move the Java DB demo directory into the JDK's demo +# dir and in the process, rename it to db. Also remove index.html, +# since it presumes docs are co-located. Also remove register.html (no +# longer relevant). initial-image-jdk-db: $(DB_ZIP_LIST) $(MKDIR) -p $(JDK_IMAGE_DIR)/db for d in $(DB_ZIP_LIST); do \ ($(CD) $(JDK_IMAGE_DIR)/db && $(UNZIP) -o $$d); \ done - + $(RM) -rf $(DEMODIR)/db + $(MV) $(JDK_IMAGE_DIR)/db/demo $(DEMODIR)/db + $(RM) $(JDK_IMAGE_DIR)/db/index.html $(JDK_IMAGE_DIR)/db/register.html endif # Standard jdk image @@ -1111,6 +1124,10 @@ endef MINIMUM_OS_NAME := $(REQUIRED_OS_NAME) MINIMUM_OS_VERSION := $(REQUIRED_OS_VERSION) MINIMUM_OS_ARCH := $(ARCH) +ALL_SOURCE_TIPS = $(shell \ + if [ -f $(SOURCE_TIPS) ] ; then \ + $(CAT) $(SOURCE_TIPS) ; \ + fi) $(JDK_INFO_FILE): FRC $(prep-target) @@ -1118,6 +1135,7 @@ $(JDK_INFO_FILE): FRC $(call info-file-item, "OS_NAME", "$(MINIMUM_OS_NAME)") $(call info-file-item, "OS_VERSION", "$(MINIMUM_OS_VERSION)") $(call info-file-item, "OS_ARCH", "$(MINIMUM_OS_ARCH)") + $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)") # Create release file to identify this image identify-image-jdk:: $(JDK_INFO_FILE) @@ -1128,6 +1146,7 @@ $(JRE_INFO_FILE): FRC $(call info-file-item, "OS_NAME", "$(MINIMUM_OS_NAME)") $(call info-file-item, "OS_VERSION", "$(MINIMUM_OS_VERSION)") $(call info-file-item, "OS_ARCH", "$(MINIMUM_OS_ARCH)") + $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)") # Create release file to identify this image identify-image-jre:: $(JRE_INFO_FILE) diff --git a/make/common/shared/Compiler-gcc.gmk b/make/common/shared/Compiler-gcc.gmk index 570ea1c85dba9d787ee9eb0a86ba4f8637264b30..092ec16834610c83bbb3cb5a3ad0a887582b9edc 100644 --- a/make/common/shared/Compiler-gcc.gmk +++ b/make/common/shared/Compiler-gcc.gmk @@ -87,6 +87,8 @@ endif # Get gcc version _CC_VER :=$(shell $(CC) -dumpversion 2>&1 ) CC_VER :=$(call GetVersion,"$(_CC_VER)") +CC_MAJORVER :=$(call MajorVersion,$(CC_VER)) +CC_MINORVER :=$(call MinorVersion,$(CC_VER)) # Name of compiler COMPILER_NAME = GCC$(call MajorVersion,$(CC_VER)) diff --git a/make/common/shared/Compiler-sun.gmk b/make/common/shared/Compiler-sun.gmk index 3881d393dc9df7bc35841480b534caa761c96854..fc0e9df6e3a785182582d22270019e813a2b89a9 100644 --- a/make/common/shared/Compiler-sun.gmk +++ b/make/common/shared/Compiler-sun.gmk @@ -117,7 +117,10 @@ ifeq ($(ARCH_FAMILY), i586) LINT_XARCH_OPTION_OLD/64 += -Xarch=amd64 endif # Pick the options we want based on the compiler being used. (5.9 or newer) -ifeq ($(shell expr $(CC_MINORVER) \>= 9), 1) +CC_59_OR_NEWER := \ + $(shell expr $(CC_MAJORVER) \> 5 \| \ + \( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \>= 9 \) ) +ifeq ($(CC_59_OR_NEWER), 1) XARCH_OPTION/32 = $(XARCH_OPTION_NEW/32) XARCH_OPTION/64 = $(XARCH_OPTION_NEW/64) LINT_XARCH_OPTION/32 = $(LINT_XARCH_OPTION_NEW/32) diff --git a/make/common/shared/Defs-utils.gmk b/make/common/shared/Defs-utils.gmk index 674330146fb927472cb1ed3d33c7e1d35c60a1f7..a5b1802c46b1956aa651f75bcb45c08f33302158 100644 --- a/make/common/shared/Defs-utils.gmk +++ b/make/common/shared/Defs-utils.gmk @@ -110,6 +110,7 @@ GDB = $(UTILS_USR_BIN_PATH)gdb GREP = $(UTILS_COMMAND_PATH)grep GUNZIP = $(UTILS_COMMAND_PATH)gunzip HEAD = $(UTILS_USR_BIN_PATH)head +HG = hg ID = $(UTILS_COMMAND_PATH)id ISAINFO = $(UTILS_COMMAND_PATH)isainfo KSH = $(UTILS_COMMAND_PATH)ksh diff --git a/make/common/shared/Defs.gmk b/make/common/shared/Defs.gmk index cc7236582039e00095cf3aa187f9d9b2e76a52c3..87a3ec3b2666ed311179e9212961c72f17463384 100644 --- a/make/common/shared/Defs.gmk +++ b/make/common/shared/Defs.gmk @@ -218,11 +218,7 @@ ifdef OPENJDK else LAUNCHER_NAME = java PRODUCT_NAME = Java(TM) - ifeq ($(J4B), true) - PRODUCT_SUFFIX = SE Runtime Environment for Business - else - PRODUCT_SUFFIX = SE Runtime Environment - endif + PRODUCT_SUFFIX = SE Runtime Environment JDK_RC_PLATFORM_NAME = Platform SE COMPANY_NAME = Oracle Corporation endif @@ -616,6 +612,44 @@ else COPYRIGHT_YEAR = $(shell $(DATE) '+%Y') endif +# Create file with source information +SOURCE_TIPS=$(ABS_OUTPUTDIR)/source_tips + +# The source tips can come from the Mercurial repository, or in the files +# $(HGTIP_FILENAME) which contains the tip but is also positioned in the same +# directory as the original $(HGDIR) directory. +# These should not be := assignments, only used from the root Makefile. +HG_VERSION = $(shell $(HG) version 2> $(DEV_NULL)) +HG_DIRECTORY=.hg +HGTIP_FILENAME=.hgtip +HG_SEARCH = ./REPO ./*/REPO ./*/*/REPO ./*/*/*/REPO +REPO_LIST = $(patsubst ./%,%,$(patsubst %/,%,$(sort $(dir \ + $(shell ( $(LS) -d $(HG_SEARCH:%/REPO=%/$(HG_DIRECTORY)) ; \ + $(LS) $(HG_SEARCH:%/REPO=%/$(HGTIP_FILENAME)) ) \ + 2> $(DEV_NULL)))))) + +# Emit the repo:tip pairs to $@ +define GetSourceTips +for i in $(REPO_LIST) IGNORE ; do \ + if [ "$${i}" = "IGNORE" ] ; then \ + continue; \ + elif [ -d $${i}/$(HG_DIRECTORY) -a "$(HG_VERSION)" != "" ] ; then \ + $(PRINTF) " %s:%s" \ + "$${i}" `$(HG) tip --repository $${i} --template '{node|short}\n'` ; \ + elif [ -f $${i}/$(HGTIP_FILENAME) ] ; then \ + $(PRINTF) " %s:%s" \ + "$${i}" `$(CAT) $${i}/$(HGTIP_FILENAME)` ; \ + fi; \ +done >> $@ +$(PRINTF) "\n" >> $@ +endef + +# Create the HGTIP_FILENAME file +define CreateHgTip +$(HG) tip --repository $1 --template '{node|short}\n' > $1/$(HGTIP_FILENAME);\ +$(ECHO) $1/$(HGTIP_FILENAME) +endef + # Get the compiler specific settings (will run the compiler to find out) # NOTE: COMPILER_PATH must be set by this time. # Up until we include this file, we don't know what specific compiler diff --git a/make/common/shared/Platform.gmk b/make/common/shared/Platform.gmk index 3998a2a24fce7a207ca7bc6e8ce0f255fda7b2a5..97cbc6ee78572e82e4d3b702fd48874e4028401c 100644 --- a/make/common/shared/Platform.gmk +++ b/make/common/shared/Platform.gmk @@ -428,8 +428,6 @@ endif # Machines with 512Mb or less of real memory are considered low memory # build machines and adjustments will be made to prevent excessing # system swapping during the build. -# If we don't know, assume 512. Subtract 128 from MB for VM MAX. -# Don't set VM max over 1024-128=896. ifeq ($(JDK_HAS_MEM_INFO),) JDK_HAS_MEM_INFO=true export JDK_HAS_MEM_INFO @@ -440,18 +438,8 @@ ifeq ($(JDK_HAS_MEM_INFO),) else \ echo "false"; \ fi) - MAX_VM_MEMORY := $(shell \ - if [ $(MB_OF_MEMORY) -le 1024 ] ; then \ - expr $(MB_OF_MEMORY) '-' 128 2> $(DEV_NULL) ; \ - else \ - echo "896"; \ - fi) - MIN_VM_MEMORY := $(shell \ - if [ $(MAX_VM_MEMORY) -le 128 ] ; then \ - expr $(MAX_VM_MEMORY) '-' 8 2> $(DEV_NULL) ; \ - else \ - echo "128"; \ - fi) + MAX_VM_MEMORY := 512 + MIN_VM_MEMORY := $(MAX_VM_MEMORY) else MB_OF_MEMORY := unknown LOW_MEMORY_MACHINE := true diff --git a/make/docs/Makefile b/make/docs/Makefile index ee8eb03b7a9ee02b27d8350ca3ac2d653f651f6a..567f796bbcedb87c628ad6b0b5831c5934123a58 100644 --- a/make/docs/Makefile +++ b/make/docs/Makefile @@ -53,7 +53,7 @@ DEV_DOCS_URL-7 = http://download.oracle.com/javase/7/docs/index.html DEV_DOCS_URL = $(DEV_DOCS_URL-$(JDK_MINOR_VERSION)) # Url to Java Language Spec -JLS3_URL = http://java.sun.com/docs/books/jls/ +#JLS3_URL = http://java.sun.com/docs/books/jls/ # Common Java trademark line JAVA_TRADEMARK_LINE = Java is a trademark or registered trademark of \ @@ -293,8 +293,8 @@ COREAPI_HEADER = \ Java$(TRADEMARK) Platform
Standard Ed. $(JDK_MINOR_VERSION)
# Java language specification cite -TAG_JLS3 = jls3:a:See \ -The Java Language Specification, Third Edition: +TAG_JLS = jls:a:See \ +The Java™ Language Specification: # Overview file for core apis COREAPI_OVERVIEW = $(SHARE_SRC)/classes/overview-core.html @@ -329,7 +329,7 @@ $(COREAPI_OPTIONS_FILE): $(COREAPI_OVERVIEW) $(call OptionPair,-tag,specdefault:X) ; \ $(call OptionPair,-tag,Note:X) ; \ $(call OptionPair,-tag,ToDo:X) ; \ - $(call OptionPair,-tag,$(TAG_JLS3)) ; \ + $(call OptionPair,-tag,$(TAG_JLS)) ; \ $(call OptionOnly,-splitIndex) ; \ $(call OptionPair,-overview,$(COREAPI_OVERVIEW)) ; \ $(call OptionPair,-doctitle,$(COREAPI_DOCTITLE)) ; \ @@ -1081,6 +1081,7 @@ $(TREEAPI_OPTIONS_FILE): $(call OptionPair,-doctitle,$(TREEAPI_DOCTITLE)) ; \ $(call OptionPair,-windowtitle,$(TREEAPI_WINDOWTITLE) $(DRAFT_WINTITLE));\ $(call OptionPair,-header,$(TREEAPI_HEADER)$(DRAFT_HEADER)) ; \ + $(call OptionPair,-tag,$(TAG_JLS)) ; \ $(call OptionPair,-bottom,$(TREEAPI_BOTTOM)$(DRAFT_BOTTOM)) ; \ $(call OptionTrip,-group,$(TREEAPI_GROUPNAME),$(TREEAPI_REGEXP)); \ $(call OptionTrip,-linkoffline,$(TREEAPI2COREAPI),$(COREAPI_DOCSDIR)/); \ diff --git a/make/java/java/FILES_java.gmk b/make/java/java/FILES_java.gmk index d07efda0aa1c246e0ed65cdd7536548beb19bac2..b5449106cd7855131df288ba8bbde39fa0576f8f 100644 --- a/make/java/java/FILES_java.gmk +++ b/make/java/java/FILES_java.gmk @@ -189,7 +189,6 @@ JAVA_JAVA_java = \ java/util/ListResourceBundle.java \ sun/util/EmptyListResourceBundle.java \ java/util/Locale.java \ - sun/util/locale/AsciiUtil.java \ sun/util/locale/BaseLocale.java \ sun/util/locale/Extension.java \ sun/util/locale/InternalLocaleBuilder.java \ @@ -197,6 +196,7 @@ JAVA_JAVA_java = \ sun/util/locale/LocaleExtensions.java \ sun/util/locale/LocaleObjectCache.java \ sun/util/locale/LocaleSyntaxException.java \ + sun/util/locale/LocaleUtils.java \ sun/util/locale/ParseStatus.java \ sun/util/locale/StringTokenIterator.java \ sun/util/locale/UnicodeLocaleExtension.java \ diff --git a/make/java/main/java/Makefile b/make/java/main/java/Makefile index 2a40bdf9fdd371fe9ff59243d7e0c548da91f940..1766880712ccf98adaaac81999c1828a113cd774 100644 --- a/make/java/main/java/Makefile +++ b/make/java/main/java/Makefile @@ -61,5 +61,4 @@ OTHER_CPPFLAGS += -DLAUNCHER_NAME='"$(LAUNCHER_NAME)"' ifeq ($(PLATFORM), solaris) LDFLAGS += -R$(OPENWIN_LIB) -LDFLAGS += -M mapfile-$(ARCH) endif diff --git a/make/java/main/java/mapfile-amd64 b/make/java/main/java/mapfile-amd64 index 8ca4394733e553cd1fd87eaa40fa695f8b02a8ae..760fcc1a90ab51b5c52a7fdbb0a52b7a579ac6e9 100644 --- a/make/java/main/java/mapfile-amd64 +++ b/make/java/main/java/mapfile-amd64 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -27,7 +27,7 @@ # interested in declaring a version, simply scoping the file is sufficient. # -{ +SUNWprivate_1.1 { global: main; # Provides basic adb symbol offsets environ; # Public symbols and required by Java run time diff --git a/make/java/main/java/mapfile-i586 b/make/java/main/java/mapfile-i586 index 116bbfbb46a5dccf58462dc18c9fc7a3b1f5ab7e..48061dd8e903dc5617fb0d5a2e9a6356ad63f76a 100644 --- a/make/java/main/java/mapfile-i586 +++ b/make/java/main/java/mapfile-i586 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -27,7 +27,7 @@ # interested in declaring a version, simply scoping the file is sufficient. # -{ +SUNWprivate_1.1 { global: main; # Provides basic adb symbol offsets environ; # Public symbols and required by Java run time diff --git a/make/java/main/java/mapfile-sparc b/make/java/main/java/mapfile-sparc index de0ec8b7ac64d5a353d598ca97c97327f1a98d67..ef7eaf9b7b2177b4da8f74863481cfa4538a72d0 100644 --- a/make/java/main/java/mapfile-sparc +++ b/make/java/main/java/mapfile-sparc @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,7 @@ # interested in declaring a version, simply scoping the file is sufficient. # -{ +SUNWprivate_1.1 { global: main; # Provides basic adb symbol offsets environ; # Public symbols and required by Java run time diff --git a/make/java/main/java/mapfile-sparcv9 b/make/java/main/java/mapfile-sparcv9 index 4e50bb5d0971c4484df0263aedd47b769061cfa3..5ecdf6fbcf3bd2f85c47b6beab8eb23d25ac27fd 100644 --- a/make/java/main/java/mapfile-sparcv9 +++ b/make/java/main/java/mapfile-sparcv9 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -28,7 +28,7 @@ # interested in declaring a version, simply scoping the file is sufficient. # -{ +SUNWprivate_1.1 { global: main; # Provides basic adb symbol offsets environ; # Public symbols and required by Java run time diff --git a/make/javax/crypto/Defs-jce.gmk b/make/javax/crypto/Defs-jce.gmk index bd5cec9d4eb4d46f458a057f45dcf98e275ec97f..7aecdc0a754094b0f6679e556357f3e1858d9d70 100644 --- a/make/javax/crypto/Defs-jce.gmk +++ b/make/javax/crypto/Defs-jce.gmk @@ -31,9 +31,11 @@ include $(BUILDDIR)/common/Release.gmk JCE_MANIFEST_FILE = $(TEMPDIR)/manifest.mf $(JCE_MANIFEST_FILE): $(MAINMANIFEST) $(prep-target) - ( $(SED) "s/@@RELEASE@@/$(RELEASE)/" $<; \ - $(ECHO) "Extension-Name: javax.crypto"; \ - $(ECHO) "Implementation-Vendor-Id: com.sun"; ) > $@ + $(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \ + -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \ + $(MAINMANIFEST) >> $@ + $(ECHO) "Extension-Name: javax.crypto" >> $@ + $(ECHO) "Implementation-Vendor-Id: com.sun" >> $@ README-MAKEFILE_WARNING = \ "\nPlease read make/javax/crypto/Makefile for further build instructions." @@ -58,7 +60,7 @@ endef SIGNING_KEY_DIR = /security/ws/JCE-signing/src SIGNING_KEYSTORE = $(SIGNING_KEY_DIR)/KeyStore.jks SIGNING_PASSPHRASE = $(SIGNING_KEY_DIR)/passphrase.txt -SIGNING_ALIAS = jce_rsa +SIGNING_ALIAS = oracle_jce_rsa # # Defines for signing the various jar files. diff --git a/make/jpda/jdwp/jdwp.spec b/make/jpda/jdwp/jdwp.spec index 0a3fd9faf978796be92d9454eb0cb6e8e899c675..86bce315226d5b41663250b592f990999c0c1b62 100644 --- a/make/jpda/jdwp/jdwp.spec +++ b/make/jpda/jdwp/jdwp.spec @@ -519,9 +519,8 @@ JDWP "Java(tm) Debug Wire Protocol" "Both the JNI signature and the generic signature are " "returned for each class. " "Generic signatures are described in the signature attribute " - "section in the " - " - "Java Virtual Machine Specification, 3rd Edition. " + "section in " + "The Java™ Virtual Machine Specification. " "Since JDWP version 1.5." (Out ) @@ -623,8 +622,8 @@ JDWP "Java(tm) Debug Wire Protocol" (referenceType refType "The reference type ID.") ) (Reply - (int modBits "Modifier bits as defined in the " - "VM Specification") + (int modBits "Modifier bits as defined in Chapter 4 of " + "The Java™ Virtual Machine Specification") ) (ErrorSet (Error INVALID_CLASS "refType is not the ID of a reference " @@ -651,8 +650,8 @@ JDWP "Java(tm) Debug Wire Protocol" (int modBits "The modifier bit flags (also known as access flags) " "which provide additional information on the " "field declaration. Individual flag values are " - "defined in the " - "VM Specification." + "defined in Chapter 4 of " + "The Java™ Virtual Machine Specification. " "In addition, The 0xf0000000 bit identifies " "the field as synthetic, if the synthetic attribute " "capability is available.") @@ -686,8 +685,8 @@ JDWP "Java(tm) Debug Wire Protocol" (int modBits "The modifier bit flags (also known as access flags) " "which provide additional information on the " "method declaration. Individual flag values are " - "defined in the " - "VM Specification." + "defined in Chapter 4 of " + "The Java™ Virtual Machine Specification. " "In addition, The 0xf0000000 bit identifies " "the method as synthetic, if the synthetic attribute " "capability is available.") @@ -773,8 +772,8 @@ JDWP "Java(tm) Debug Wire Protocol" (Command Status=9 "Returns the current status of the reference type. The status " "indicates the extent to which the reference type has been " - "initialized, as described in the " - "VM specification. " + "initialized, as described in section 2.1.6 of " + "The Java™ Virtual Machine Specification. " "If the class is linked the PREPARED and VERIFIED bits in the returned status bits " "will be set. If the class is initialized the INITIALIZED bit in the returned " "status bits will be set. If an error occured during initialization then the " @@ -852,9 +851,8 @@ JDWP "Java(tm) Debug Wire Protocol" "Returns the JNI signature of a reference type along with the " "generic signature if there is one. " "Generic signatures are described in the signature attribute " - "section in the " - " - "Java Virtual Machine Specification, 3rd Edition. " + "section in " + "The Java™ Virtual Machine Specification. " "Since JDWP version 1.5." "

(Out @@ -882,9 +880,8 @@ JDWP "Java(tm) Debug Wire Protocol" "by the compiler. " "Fields are returned in the order they occur in the class file. " "Generic signatures are described in the signature attribute " - "section in the " - " - "Java Virtual Machine Specification, 3rd Edition. " + "section in " + "The Java™ Virtual Machine Specification. " "Since JDWP version 1.5." (Out (referenceType refType "The reference type ID.") @@ -900,8 +897,8 @@ JDWP "Java(tm) Debug Wire Protocol" (int modBits "The modifier bit flags (also known as access flags) " "which provide additional information on the " "field declaration. Individual flag values are " - "defined in the " - "VM Specification." + "defined in Chapter 4 of " + "The Java™ Virtual Machine Specification. " "In addition, The 0xf0000000 bit identifies " "the field as synthetic, if the synthetic attribute " "capability is available.") @@ -925,9 +922,8 @@ JDWP "Java(tm) Debug Wire Protocol" "if present, and any synthetic methods created by the compiler. " "Methods are returned in the order they occur in the class file. " "Generic signatures are described in the signature attribute " - "section in the " - " - "Java Virtual Machine Specification, 3rd Edition. " + "section in " + "The Java™ Virtual Machine Specification. " "Since JDWP version 1.5." (Out (referenceType refType "The reference type ID.") @@ -943,8 +939,8 @@ JDWP "Java(tm) Debug Wire Protocol" (int modBits "The modifier bit flags (also known as access flags) " "which provide additional information on the " "method declaration. Individual flag values are " - "defined in the " - "VM Specification." + "defined in Chapter 4 of " + "The Java™ Virtual Machine Specification. " "In addition, The 0xf0000000 bit identifies " "the method as synthetic, if the synthetic attribute " "capability is available.") @@ -1006,8 +1002,8 @@ JDWP "Java(tm) Debug Wire Protocol" ) (Command ConstantPool=18 "Return the raw bytes of the constant pool in the format of the " - "constant_pool item of the Class File Format in the " - "Java Virtual Machine Specification. " + "constant_pool item of the Class File Format in " + "The Java™ Virtual Machine Specification. " "

Since JDWP version 1.6. Requires canGetConstantPool capability - see " "CapabilitiesNew."" (Out @@ -1016,7 +1012,8 @@ JDWP "Java(tm) Debug Wire Protocol" (Reply (int count "Total number of constant pool entries plus one. This " "corresponds to the constant_pool_count item of the " - "Class File Format in the Java Virtual Machine Specification. ") + "Class File Format in " + "The Java™ Virtual Machine Specification. ") (Repeat bytes (byte cpbytes "Raw bytes of constant pool") ) @@ -1324,7 +1321,8 @@ JDWP "Java(tm) Debug Wire Protocol" ) ) (Command Bytecodes=3 - "Retrieve the method's bytecodes as defined in the JVM Specification." + "Retrieve the method's bytecodes as defined in " + "The Java™ Virtual Machine Specification. " "Requires canGetBytecodes capability - see " "CapabilitiesNew." (Out @@ -1379,9 +1377,8 @@ JDWP "Java(tm) Debug Wire Protocol" "instance methods, the \"this\" reference is included in the " "table. Also, synthetic variables may be present. " "Generic signatures are described in the signature attribute " - "section in the " - " - "Java Virtual Machine Specification, 3rd Edition. " + "section in " + "The Java™ Virtual Machine Specification. " "Since JDWP version 1.5." (Out (referenceType refType "The class.") @@ -1970,8 +1967,9 @@ JDWP "Java(tm) Debug Wire Protocol" "

" "The method which will return early is referred to as the " "called method. The called method is the current method (as " - "defined by the Frames section in the Java Virtual Machine " - "Specification) for the specified thread at the time this command " + "defined by the Frames section in " + "The Java™ Virtual Machine Specification) " + "for the specified thread at the time this command " "is received. " "

" "The specified thread must be suspended. " diff --git a/make/mksample/Makefile b/make/mksample/Makefile index 8528e92328bfc097d02bbc40d7e4f225976934a0..bdc770b4f7a67b3b7a9e46f94a89ba50c4cb3a8a 100644 --- a/make/mksample/Makefile +++ b/make/mksample/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -38,7 +38,7 @@ else endif SUBDIRS = -SUBDIRS_misc = nio scripting nbproject +SUBDIRS_misc = nio scripting nbproject forkjoin SUBDIRS_enterprise = $(WEBSERVICES_SUBDIR) SUBDIRS_management = jmx diff --git a/make/mksample/forkjoin/Makefile b/make/mksample/forkjoin/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..b9f557a9d1a77ca751afe52b500d7dae88d18011 --- /dev/null +++ b/make/mksample/forkjoin/Makefile @@ -0,0 +1,41 @@ +# +# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# +# Makefile for building all the samples under the forkjoin subdirectory. +# + +BUILDDIR = ../.. +PRODUCT = java +include $(BUILDDIR)/common/Defs.gmk + +SUBDIRS = mergesort +include $(BUILDDIR)/common/Subdirs.gmk + +all build clean clobber:: + $(SUBDIRS-loop) + +clobber clean :: + $(RM) -r $(SAMPLEDIR)/forkjoin diff --git a/make/mksample/forkjoin/mergesort/Makefile b/make/mksample/forkjoin/mergesort/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..e611d76e5ceb80bb93dc029b33feb6a0e0234649 --- /dev/null +++ b/make/mksample/forkjoin/mergesort/Makefile @@ -0,0 +1,51 @@ +# +# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. 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. +# + +# +# Makefile for the forkjoin/mergesort sample code +# + +BUILDDIR = ../../.. + +PRODUCT = java + +include $(BUILDDIR)/common/Defs.gmk + +SAMPLE_SRC_DIR = $(SHARE_SRC)/sample/forkjoin/mergesort +SAMPLE_DST_DIR = $(SAMPLEDIR)/forkjoin/mergesort + +SAMPLE_FILES = \ + $(SAMPLE_DST_DIR)/MergeDemo.java \ + $(SAMPLE_DST_DIR)/MergeSort.java + +all build: $(SAMPLE_FILES) + +$(SAMPLE_DST_DIR)/%: $(SAMPLE_SRC_DIR)/% + $(install-file) + +clean clobber: + $(RM) -r $(SAMPLE_DST_DIR) + +.PHONY: all build clean clobber diff --git a/make/mksample/nio/Makefile b/make/mksample/nio/Makefile index 7c7736b0bcf116659d338097e60b66f4cd2e4df9..291230909e1d6832c0b9b0c9b9ace4d885f775fa 100644 --- a/make/mksample/nio/Makefile +++ b/make/mksample/nio/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -31,7 +31,7 @@ BUILDDIR = ../.. PRODUCT = java include $(BUILDDIR)/common/Defs.gmk -SUBDIRS = file multicast server +SUBDIRS = chatserver file multicast server include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: diff --git a/make/mksample/nio/chatserver/Makefile b/make/mksample/nio/chatserver/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..c2a243090b89391ffa3712f2448127ba6e392109 --- /dev/null +++ b/make/mksample/nio/chatserver/Makefile @@ -0,0 +1,56 @@ +# +# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# +# Makefile for the nio/chatserver sample code +# + +BUILDDIR = ../../.. + +PRODUCT = java + +include $(BUILDDIR)/common/Defs.gmk + +SAMPLE_SRC_DIR = $(SHARE_SRC)/sample/nio/chatserver +SAMPLE_DST_DIR = $(SAMPLEDIR)/nio/chatserver + +SAMPLE_FILES = \ + $(SAMPLE_DST_DIR)/ChatServer.java \ + $(SAMPLE_DST_DIR)/Client.java \ + $(SAMPLE_DST_DIR)/ClientReader.java \ + $(SAMPLE_DST_DIR)/DataReader.java \ + $(SAMPLE_DST_DIR)/MessageReader.java \ + $(SAMPLE_DST_DIR)/NameReader.java \ + $(SAMPLE_DST_DIR)/README.txt + +all build: $(SAMPLE_FILES) + +$(SAMPLE_DST_DIR)/%: $(SAMPLE_SRC_DIR)/% + $(install-file) + +clean clobber: + $(RM) -r $(SAMPLE_DST_DIR) + +.PHONY: all build clean clobber diff --git a/make/sun/Makefile b/make/sun/Makefile index 6e0830cd1174f2955d7ce54101dea0dacadfc29e..4c19f4ecbc0041f861caa95684274c7e1597adc1 100644 --- a/make/sun/Makefile +++ b/make/sun/Makefile @@ -83,6 +83,11 @@ SUBDIRS_desktop = audio $(RENDER_SUBDIR) image \ SUBDIRS_management = management SUBDIRS_misc = $(ORG_SUBDIR) rmi $(JDBC_SUBDIR) tracing SUBDIRS_tools = native2ascii serialver tools jconsole + +ifndef OPENJDK + SUBDIRS += usagetracker +endif + include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: diff --git a/make/sun/jpeg/Makefile b/make/sun/jpeg/Makefile index da2aff171f31824b52c233f845f31ae29be832ed..f73acf3a2e175474f74682c1c3ff98cd3f8d5011 100644 --- a/make/sun/jpeg/Makefile +++ b/make/sun/jpeg/Makefile @@ -73,9 +73,14 @@ ifeq ($(PLATFORM), linux) # Recommended way to avoid such warning is to declare the variable as # volatile to prevent the optimization. However, this approach does not # work because we have to declare all variables as volatile in result. -ifndef CROSS_COMPILE_ARCH - OTHER_CFLAGS += -Wno-clobbered -endif + ifndef CROSS_COMPILE_ARCH + CC_43_OR_NEWER := \ + $(shell $(EXPR) $(CC_MAJORVER) \> 4 \| \ + \( $(CC_MAJORVER) = 4 \& $(CC_MINORVER) \>= 3 \) ) + ifeq ($(CC_43_OR_NEWER),1) + OTHER_CFLAGS += -Wno-clobbered + endif + endif endif include $(BUILDDIR)/common/Mapfile-vers.gmk diff --git a/make/sun/usagetracker/Makefile b/make/sun/usagetracker/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..ccb66182e46dc9b88279805e60488ad316e26ff1 --- /dev/null +++ b/make/sun/usagetracker/Makefile @@ -0,0 +1,40 @@ +# +# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +BUILDDIR = ../.. +PACKAGE = sun.usagetracker +PRODUCT = sun +include $(BUILDDIR)/common/Defs.gmk + +# +# Files +# +AUTO_FILES_JAVA_DIRS = sun/usagetracker + +# +# Rules +# +include $(BUILDDIR)/common/Classes.gmk + diff --git a/make/tools/manifest.mf b/make/tools/manifest.mf index 5e631b7bb41daf86319c6be180197b5ed12cb98d..bbfd1c3cfb65dfeb807da574063c9c049e37123a 100644 --- a/make/tools/manifest.mf +++ b/make/tools/manifest.mf @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Specification-Title: Java Platform API Specification Specification-Version: 1.7 -Specification-Vendor: Oracle +Specification-Vendor: Oracle Corporation Implementation-Title: Java Runtime Environment Implementation-Version: @@RELEASE@@ Implementation-Vendor: @@COMPANY_NAME@@ diff --git a/src/linux/doc/man/ja/appletviewer.1 b/src/linux/doc/man/ja/appletviewer.1 index e7b128d68691e4d41bf2a120cfa5ca370e0e40c1..fcbcc19a43bca8d71af4bf1fac9883f202224a9b 100644 --- a/src/linux/doc/man/ja/appletviewer.1 +++ b/src/linux/doc/man/ja/appletviewer.1 @@ -19,54 +19,44 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH appletviewer 1 "02 Jun 2010" +.TH appletviewer 1 "14 Apr 2011" .LP -.SH "名前" -appletviewer \- Java アプレットビューア -.LP -.RS 3 - +.SH "̾" +appletviewer \- Java ץåȥӥ塼 .LP .LP -\f3appletviewer\fP コマンドは Web ブラウザの外でアプレットを実行させます。 -.LP -.RE -.SH "形式" +\f3appletviewer\fP ޥɤ Web ֥饦γǥץåȤ¹Ԥޤ .LP - +.SH "" .LP .LP \f4appletviewer\fP \f2[\fP \f2options\fP \f2] \fP\f2urls\fP ... .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3appletviewer\fP コマンドは \f2urls\fP に指定されたドキュメントあるいはリソースと接続して、そのドキュメントが参照するそれぞれのアプレットを独自のウィンドウで表示します。注: \f2urls\fP によって参照されたドキュメントが、\f2OBJECT\fP、\f2EMBED\fP、または \f2APPLET\fP タグでどのアプレットも参照していない場合、\f3appletviewer\fP は何も行いません。\f3appletviewer\fP でサポートされる HTML タグの詳細については、 +\f3appletviewer\fP ޥɤ \f2urls\fP ˻ꤵ줿ɥȤ뤤ϥ꥽³ơΥɥȤȤ뤽줾ΥץåȤȼΥɥɽޤ: \f2urls\fP ˤäƻȤ줿ɥȤ\f2OBJECT\fP\f2EMBED\fPޤ \f2APPLET\fP ǤɤΥץåȤ⻲ȤƤʤ硢\f3appletviewer\fP ϲԤޤ\f3appletviewer\fP ǥݡȤ HTML ξܺ٤ˤĤƤϡ .na -\f2「アプレットビューアのタグ」\fP @ +\f2֥ץåȥӥ塼Υ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/appletviewertags.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/tools/appletviewertags.html򻲾ȤƤ .LP .LP -\f3注:\fP \f3appletviewer\fP は、RFC2396 で規定されたエスケープ機構に従って符号化された URL を必要とします。サポートされるのは、符号化された URL だけです。ただし、ファイル名については、RFC2396 に指定された方法で符号化を解除しておく必要があります。 +\f3:\fP \f3appletviewer\fP ϡRFC2396 ǵꤵ줿׵˽ä沽줿 URL ɬפȤޤݡȤΤϡ沽줿 URL Ǥե̾ˤĤƤϡRFC2396 ˻ꤵ줿ˡ沽Ƥɬפޤ .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-debug -Java デバッガ jdb(1) でアプレットビューアを開始します。 これにより、ドキュメント中のアプレットをデバッグすることができます。 +Java ǥХå jdb(1) ǥץåȥӥ塼򳫻ϤޤˤꡢɥΥץåȤǥХå뤳ȤǤޤ .TP 3 \-encoding \ \ encoding name -入力 HTML ファイルのエンコーディング名を指定します。 + HTML եΥ󥳡ǥ̾ꤷޤ .TP 3 \-Jjavaoption -文字列 \f2javaoption\fP は、appletviewer を実行する Java インタプリタに 1 つの引数として渡されます。引数にスペースを含めてはいけません。複数の引数は、各引数のすべてを接頭辞 \f3\-J\fP で始めることにより区分する必要があります。これは、コンパイラの実行環境、またはメモリーの利用に有効です。 +ʸ \f2javaoption\fP ϡappletviewer ¹Ԥ Java 󥿥ץ꥿ 1 ĤΰȤϤޤ˥ڡޤƤϤޤʣΰϡưΤ٤ƤƬ \f3\-J\fP ǻϤ뤳Ȥˤʬɬפޤϡѥμ¹ԴĶޤϥ꡼ѤͭǤ .RE .LP diff --git a/src/linux/doc/man/ja/apt.1 b/src/linux/doc/man/ja/apt.1 index 45f9ebb16ff1df991a4ee87eeb409c13bfa553cd..6255300f0aa81ffbaa1b094aff79c5c0b185ce81 100644 --- a/src/linux/doc/man/ja/apt.1 +++ b/src/linux/doc/man/ja/apt.1 @@ -19,102 +19,133 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH apt 1 "02 Jun 2010" +.TH apt 1 "14 Apr 2011" .LP .SH "NAME" .LP .LP -\f2apt\fP \- 注釈処理ツール +\f2apt\fP \- ġ .LP -.SH "形式" +.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] +\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 "パラメータ" +.SH "ѥ᡼" .LP .LP -オプションは順不同です。特定のオプションに適用されるパラメータについては、下記の「オプション」を参照してください。 +ץλ˷ޤϤޤΥץŬѤѥ᡼ˤĤƤϡΡ֥ץפ򻲾ȤƤ .LP .RS 3 .TP 3 sourcefiles -ゼロ、1 つ、または複数の処理対象のソースファイル +1 ġޤʣνоݤΥե .TP 3 @files -ソースファイルまたは他のオプションを一覧表示する 1 つまたは複数のファイル +եޤ¾Υץɽ 1 ĤޤʣΥե .RE .LP -.SH "説明" +.SH "" .LP .LP -注釈処理ツール \f2apt\fP は、新しいリフレクト API とサポートインフラストラクチャーから構成され、プログラム注釈を処理します。\f2apt\fP リフレクト API は、 構築時のソースベースで、プログラム構造に関する読み取り専用ビューを提供します。これらのリフレクト API は、総称を追加した後に、Java(TM) プログラミング言語の型システムを正しくモデル化するように設計されています。最初に、\f2apt\fP は、新しいソースコードと他のファイルを作成する注釈プロセッサを実行します。次に、\f2apt\fP は、元のソースファイルと生成したソースファイルの両方をコンパイルするため、開発が楽になります。ツールとのインタフェースに使用されるリフレクト API などの API は、\f2com.sun.mirror\fP のサブパッケージです。 +ġ \f2apt\fP ϡե쥯 API ȥݡȥե饹ȥ饯㡼鹽졢ץޤ\f2apt\fP ե쥯 API ϡ ۻΥ١ǡץ๽¤˴ؤɤ߼ѥӥ塼󶡤ޤΥե쥯 API ϡΤɲäˡJava(TM) ץߥ󥰸ηƥǥ벽褦߷פƤޤǽˡ\f2apt\fP ϡɤ¾Υեץå¹Ԥޤˡ\f2apt\fP ϡΥեեξ򥳥ѥ뤹뤿ᡢȯڤˤʤޤġȤΥ󥿥ե˻Ѥե쥯 API ʤɤ API ϡ\f2com.sun.mirror\fP Υ֥ѥåǤ .LP .LP -ツールの機能に関する詳細と、\f2apt\fP を使用した開発方法については、 +ġεǽ˴ؤܺ٤ȡ\f2apt\fP ѤȯˡˤĤƤϡ .na -\f4「\fP\f4apt\fP\f3 入門」\fP @ +\f4apt \fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/apt/GettingStarted.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/apt/GettingStarted.html򻲾ȤƤ .LP .RS 3 .TP 3 -注: -\f2apt\fP の機能は、\f2javac(1)\fP ツールの一部となった注釈処理インフラストラクチャーに組み込まれ、すべての Java コンパイラで使用できるように標準化されました。この新しいインフラストラクチャーは、言語モデルおよび Java プラットフォームの一部となった注釈処理 API に依存します。注釈プロセッサの開発は、新しい API および \f2javac\fP ツールに基づいて行うようお勧めします。 +: +\f2apt\fP εǽϡ\f2javac(1)\fP ġΰȤʤäե饹ȥ饯㡼Ȥ߹ޤ졢٤Ƥ Java ѥǻѤǤ褦ɸಽޤοե饹ȥ饯㡼ϡǥ뤪 Java ץåȥեΰȤʤä API ˰¸ޤץåγȯϡ API \f2javac\fP ġ˴ŤƹԤ褦ᤷޤ .RE .LP -.SH "オプション" +.SH "ץ" .LP .SS -apt 固有のオプション +apt ͭΥץ .LP .RS 3 .TP 3 \-s dir -プロセッサの生成するソースファイルを置くディレクトリルートを指定します。 ファイルは、パッケージの名前空間に基づいてサブディレクトリに置かれます。 +ץå륽ե֤ǥ쥯ȥ롼Ȥꤷޤ եϡѥå֤̾˴Ťƥ֥ǥ쥯ȥ֤ޤ .TP 3 \-nocompile -ソースファイルをクラスファイルにコンパイルしません。 +ե򥯥饹ե˥ѥ뤷ޤ .TP 3 \-print -指定したタイプのテキスト表現を出力します。 注釈処理またはコンパイルは行いません。 +ꤷפΥƥɽϤޤ ޤϥѥϹԤޤ .TP 3 \-A[key[=val]] -注釈プロセッサへ渡すオプションです。 このオプションは、\f2apt\fP が直接解釈するのではなく、それぞれのプロセッサによって使用できるように変えられます。 +ץåϤץǤ Υץϡ\f2apt\fP ľ᤹ܲΤǤϤʤ줾ΥץåˤäƻѤǤ褦Ѥޤ .TP 3 \-factorypath path -注釈プロセッサファクトリを検索する場所を指定します。 このオプションを使用する場合、クラスパスのファクトリは検索されません。 +ץåեȥ򸡺ꤷޤ ΥץѤ硢饹ѥΥեȥϸޤ .TP 3 \-factory classname -使用する注釈プロセッサファクトリの名前です。 デフォルトの検出プロセスを省略します。 +Ѥץåեȥ̾Ǥ ǥեȤθХץάޤ +.TP 3 +\-version +СϤޤ +.TP 3 +\-X +ɸ४ץ˴ؤɽޤ .RE .LP .SS -javac と共用するオプション +javac ȶѤ륪ץ .LP .RS 3 .TP 3 \-d dir -プロセッサと javac 生成のクラスファイルを置く場所を指定します。 +ץå javac Υ饹ե֤ꤷޤ +.TP 3 +\-cp path ޤ \-classpath path +桼饹եץåեȥ򸡺ꤷޤ\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 -\-cp path or \-classpath path -ユーザークラスファイルと注釈プロセッサファクトリを検索する場所を指定します。\f2\-factorypath\fP が指定されている場合、クラスパスのファクトリは検索されません。 +\-XclassesAsDecls +饹եȥեξ򡢽оݤȤƽޤ .RE .LP .LP -\f2javac\fP オプションの詳細については、javac(1) のマニュアルページを参照してください。 +\f3\fP: ɸ४ץʤΤǡͽʤѹǽޤ .LP -.SH "注" +.SH "" .LP .LP -\f2apt\fP の機能は、\f2javac\fP により提供される標準注釈処理インフラストラクチャーに組み込まれました。今後の JDK リリースでは、\f2apt\fP および関連する API のサポートが中止する可能性があります。 +\f2apt\fP εǽϡ\f2javac\fP ˤ󶡤ɸե饹ȥ饯㡼Ȥ߹ޤޤ JDK ꡼Ǥϡ\f2apt\fP ӴϢ API ΥݡȤߤǽޤ .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 diff --git a/src/linux/doc/man/ja/extcheck.1 b/src/linux/doc/man/ja/extcheck.1 index ea241914df3969b54e273b530e796bb7cdc0dd65..9cc66788eb7af0c318809a8b5cbd6566c8e95861 100644 --- a/src/linux/doc/man/ja/extcheck.1 +++ b/src/linux/doc/man/ja/extcheck.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH extcheck 1 "02 Jun 2010" +.TH extcheck 1 "14 Apr 2011" .LP -.SH "名前" -extcheck \- jar の競合検出ユーティリティー -.LP -.RS 3 - +.SH "̾" +extcheck \- jar ζ縡Х桼ƥƥ .LP .LP -\f3extcheck\fP は、ターゲットの jar ファイルと現在インストールされている拡張機能の jar ファイル間のバージョンの競合を検出します。 +\f3extcheck\fP ϡåȤ jar եȸߥ󥹥ȡ뤵Ƥĥǽ jar ե֤ΥСζ򸡽Фޤ .LP -.RE -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -45,39 +39,33 @@ extcheck [ \-verbose ] targetfile.jar .fi .LP -.SH "説明" +.SH "" .LP - -.LP -.LP -\f3extcheck\fP ユーティリティーは、指定された Jar ファイルのタイトルおよびバージョンが Java(TM) 2 SDK にインストールされている拡張機能と競合していないかをチェックします。拡張機能をインストールする前に、このユーティリティーを使って、バージョンが同じか、より新しい拡張機能がすでにインストールされていないかどうかを調べることができます。 .LP +\f3extcheck\fP 桼ƥƥϡꤵ줿 Jar եΥȥ뤪ӥС Java(TM) 2 SDK ˥󥹥ȡ뤵Ƥĥǽȶ礷Ƥʤåޤĥǽ򥤥󥹥ȡ뤹ˡΥ桼ƥƥȤäơСƱ꿷ĥǽǤ˥󥹥ȡ뤵ƤʤɤĴ٤뤳ȤǤޤ .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 +\f3extcheck\fP 桼ƥƥϡtargetfile.jar եΥޥ˥եΥإå \f2Specification\-title\fP \f2Specification\-version\fP 򡢳ĥǽǥ쥯ȥ˸ߥ󥹥ȡ뤵Ƥ \f2٤Ƥ Jar ե\fP бإåӤޤǥեȤǤϡĥǽǥ쥯ȥϡ\f2jre/lib/ext\fP Ǥ\f3extcheck\fP 桼ƥƥϡ\f2java.lang.Package.isCompatibleWith\fP ᥽åɤƱͤˡǥСֹӤޤ .LP -競合が検出されない場合のリターンコードは \f20\fP です。 .LP +礬ФʤΥ꥿󥳡ɤ \f20\fP Ǥ .LP -拡張機能ディレクトリ内のいずれかの jar ファイルのマニフェストに、同一の \f2Specification\-title\fP、および同一またはより新しい \f2Specification\-version\fP 番号がある場合は、ゼロでないエラーコードが返されます。\f2targetfile.jar\fP のマニフェストに \f2Specification\-title\fP または \f2Specification\-version\fP 属性がない場合も、ゼロでないエラーコードが返されます。 .LP -.SH "オプション" +ĥǽǥ쥯ȥΤ줫 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 ファイルについても報告します。 +ĥǽǥ쥯ȥ Jar ե򡢥å˰ɽޤޤå jar եΥޥ˥եȤ°Ӷ礹 jar եˤĤƤ𤷤ޤ .TP 3 \-Joption -Java 仮想マシンに \f2option\fP を渡します。 \f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ .RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP jar(1) diff --git a/src/linux/doc/man/ja/idlj.1 b/src/linux/doc/man/ja/idlj.1 index adb0061abecbb378dc7af83cb282deb153cff6eb..0a05be7383afce7bcb2eecac5f28fec320d59976 100644 --- a/src/linux/doc/man/ja/idlj.1 +++ b/src/linux/doc/man/ja/idlj.1 @@ -19,20 +19,14 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH idlj 1 "02 Jun 2010" +.TH idlj 1 "14 Apr 2011" .LP -.SH "名前" -idlj \- IDL\-to\-Java コンパイラ +.SH "̾" +idlj \- IDL\-to\-Java ѥ .LP -.RS 3 - -.LP -\f3idlj\fP は、指定された IDL ファイルから Java バインディングを生成します。 -.RE -.SH "形式" -.LP - +\f3idlj\fP ϡꤵ줿 IDL ե뤫 Java Хǥ󥰤ޤ +.SH "" .LP .nf \f3 @@ -44,68 +38,118 @@ idlj [ \fP\f3options\fP\f3 ] \fP\f4idl\-file\fP\f3 .LP .LP -\f2idl\-file\fP は、インタフェース定義言語 (IDL) による定義が入ったファイルの名前です。\f2options\fP の順番は任意ですが、\f2idl\-file\fP よりも前に指定しなければなりません。 +\f2idl\-file\fP ϡ󥿥ե (IDL) ˤäե̾Ǥ\f2options\fP ν֤ǤդǤ\f2idl\-file\fP ˻ꤷʤФʤޤ .LP -.SH "説明" +.SH "" .LP - .LP -IDL\-to\-Java コンパイラは、指定された IDL ファイルについて Java バインディングを生成します。 バインディングの詳細は、 +IDL\-to\-Java ѥϡꤵ줿 IDL եˤĤ Java Хǥ󥰤ޤХǥ󥰤ξܺ٤ϡ .na \f2OMG IDL to Java Language Mapping Specification\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/mapping/jidlMapping.html を参照してください。IDL\-to\-Java コンパイラの以前のリリースの中には、\f2idltojava\fP という名前だったものがあります。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/mapping/jidlMapping.html 򻲾ȤƤIDL\-to\-Java ѥΰΥ꡼ˤϡ\f2idltojava\fP Ȥ̾äΤޤ +.LP .SS -クライアントバインディングおよびサーバーバインディングの発行 +饤ȥХǥ󥰤ӥСХǥ󥰤ȯ .LP -.RS 3 +.LP +My.idl Ȥ̾ IDL եФ Java Хǥ󥰤ˤϡΥޥɤ¹Ԥޤ +.LP +.nf +\f3 +.fl +idlj My.idl +.fl +\fP +.fi .LP -My.idl という名前の IDL ファイルに対して Java バインディングを生成するには、次のコマンドを実行します。 \f2idlj My.idl\fP .LP -これにより、クライアント側のバインディングが生成されます。 このコマンドは、次のコマンドと等価です。 \f2idlj \fP\f4\-fclient\fP\f2 My.idl\fP +ˤꡢ饤¦ΥХǥ󥰤ޤΥޥɤϡΥޥɤǤ .LP -クライアント側のバインディングには、サーバー側のスケルトンは組み込まれていません。インタフェースに対してサーバー側のバインディングを生成するには、次のコマンドを実行します。 \f2idlj \fP\f4\-fserver\fP\f2 My.idl\fP +.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 -サーバー側のバインディングには、クライアント側のバインディングに加えて、スケルトンが組み込まれてています。 これらは、すべて \f2POA\fP (継承モデル) クラスです。クライアント側とサーバー側の両方のバインディングを生成する場合は、次のコマンド (どれも等価) のうちの 1 つを使用します。 \f2idlj \fP\f4\-fclient \-fserver\fP\f2 My.idl\fP -.br -\f2idlj \fP\f4\-fall\fP\f2 My.idl\fP +.nf +\f3 +.fl +idlj \fP\f3\-fclient \-fserver\fP My.idl +.fl +idlj \f3\-fall\fP My.idl +.fl +.fi + .LP .LP -サーバー側のモデルとしては、2 つのモデルが可能です。それは、継承モデルと、Tie 委譲モデルです。 +С¦Dzǽʥǥ 2 ĤޤѾǥ Tie ѾǥǤ .LP .LP -デフォルトのサーバー側のモデルは、「移殖可能サーバント継承モデル」です。\f2My.idl\fP 内で \f2My\fP インタフェースが定義されている場合は、\f2MyPOA.java\fP というファイルが生成されます。\f2My\fP に対してその実装を提供し、この実装は \f2_MyPOA\fP から継承する必要があります。 +ǥեȤΥС¦ΥǥϡְܿǽХȷѾǥפǤ\f2My.idl\fP \f2My\fP 󥿥եƤϡ\f2MyPOA.java\fP Ȥե뤬ޤμ \f2My\fP 󶡤\f2MyPOA\fP Ѿɬפޤ .LP .LP -\f2MyPOA.java\fP は +\f2MyPOA.java\fP .na \f2org.omg.PortableServer.Servant\fP @ .fi -http://java.sun.com/javase/6/docs/api/org/omg/PortableServer/Servant.html を拡張するストリームベースのスケルトンで、スケルトンが実装する IDL インタフェースに関連付けられている \f2InvokeHandler\fP インタフェースとオペレーションインタフェースを実装します。 +http://java.sun.com/javase/6/docs/api/org/omg/PortableServer/Servant.html ĥ륹ȥ꡼١Υȥǡȥ󤬼 IDL 󥿥ե˴ϢդƤ \f2InvokeHandler\fP 󥿥եȥڥ졼󥤥󥿥եޤ .LP .LP .na \f2Portable Object Adapter (POA)\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/POA.html の \f2PortableServer\fP モジュールは、ネイティブの \f2Servant\fP 型を定義します。Java プログラミング言語では、\f2Servant\fP 型は、Java の \f2org.omg.PortableServer.Servant\fP クラスにマッピングされています。これはあらゆる POA サーバント実装の基底クラスとなり多数のメソッドを提供します。 これらのメソッドはアプリケーションプログラマが呼び出すだけではなく、POA 自身からも呼び出され、場合によってはサーバントの動作を制御するためにユーザーがオーバーライドすることもあります。 +http://java.sun.com/javase/6/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 ベースのサーバー側マッピングが生成されます。下位互換性のあるサーバー側バインディングを生成するには、次のコマンドを使用します。 +ѾǥΤ⤦ 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 -\f2idlj \fP\f4\-fclient \-fserver\fP\f2 \fP\f4\-oldImplBase\fP\f2 My.idl\fP -.br -\f2idlj \fP\f4\-fall\fP\f2 \fP\f4\-oldImplBase\fP\f2 My.idl\fP .LP -\f2My.idl\fP 内で \f2My\fP インタフェースが定義されている場合は、\f2_MyImplBase.java\fP というファイルが生成されます。\f2My\fP に対してその実装を提供し、この実装は \f2_MyImplBase\fP から継承しなければなりません。 +\f2My.idl\fP \f2My\fP 󥿥եƤϡ\f2_MyImplBase.java\fP Ȥե뤬ޤ\f2My\fP ФƤμ󶡤μ \f2_MyImplBase\fP ѾʤФʤޤ .LP -もう 1 つのサーバー側モデルは、Tie モデルと呼ばれるものです。このサーバー側モデルは、委譲モデルです。Tie とスケルトンを同時に生成することはできないため、それらは別々に生成しなければなりません。次のコマンドによって、Tie モデル用のバインディングが生成されます。 .LP -\f2idlj \fP\f4\-fall\fP\f2 My.idl\fP -.br -\f2idlj \fP\f4\-fallTIE\fP\f2 My.idl\fP +⤦ 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 -\f2My\fP というインタフェースの場合、上記の 2 番目のコマンドにより、\f2MyPOATie.java\fP が生成されます。\f2MyPOATie\fP のコンストラクタは、\f2delegate\fP を取ります。この例では、デフォルトの POA モデルを使用しているため、コンストラクタにも \f2poa\fP が必要です。\f2delegate\fP に対して実装を提供しなければなりませんが、この実装は \f2MyOperations\fP インタフェースから継承する必要があるだけで、その他のクラスから継承する必要はありません。しかし、この実装を ORB と一緒に使用するには、\f2MyPOATie\fP 内で実装をラップしなければなりません。たとえば、次のようにします。 .nf \f3 .fl @@ -143,16 +187,24 @@ http://java.sun.com/javase/6/docs/technotes/guides/idl/POA.html の \f2PortableS .fi .LP -他の実装から継承しなければならない場合、標準の継承モデルではなく Tie モデルを使用することがあります。Java の場合は、インタフェースの継承の個数に制限はありませんが、クラスの継承に使用できるスロットは 1 つだけです。継承モデルを使用した場合は、そのスロットが占有されます。Tie モデルを使用した場合は、そのスロットが使用されず、ユーザーが独自の目的で使用することができます。ただし、間接参照のレベルが 1 つ導入されるという欠点があります。つまり、メソッドを呼び出すときに余分なメソッド呼び出しが発生します。 .LP -IDL のバージョンから J2SE 1.4 より前のバージョンの Java 言語へのマッピングと互換性のある、サーバー側の Tie モデルのバインディングを生成するには、次のコマンドを使用します。 +¾μѾʤФʤʤ硢ɸηѾǥǤϤʤ Tie ǥѤ뤳ȤޤJava ξϡ󥿥եηѾθĿ¤Ϥޤ󤬡饹ηѾ˻ѤǤ륹åȤ 1 ĤǤѾǥѤϡΥåȤͭޤTie ǥѤϡΥåȤѤ줺桼ȼŪǻѤ뤳ȤǤޤˡˤϡΥ٥뤬 1 ƳȤޤ᥽åɤƤӽФȤˡ;ʬʥ᥽åɸƤӽФ 1 ȯޤ .LP -\f2idlj \fP\f4\-oldImplBase\fP\f2 \fP\f4\-fall\fP\f2 My.idl\fP -.br -\f2idlj \fP\f4\-oldImplBase\fP\f2 \fP\f4\-fallTIE\fP\f2 My.idl\fP .LP +IDL ΥС󤫤 J2SE 1.4 ΥС Java ؤΥޥåԥ󥰤ȸߴΤ롢С¦ 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 -\f2My\fP というインタフェースの場合、これにより \f2My_Tie.java\fP が生成されます。\f2My_Tie\fP のコンストラクタは、\f2impl\fP を取ります。\f2impl\fP に対して実装を提供しなければなりませんが、その実装は \f2HelloOperations\fP インタフェースから継承する必要があるだけで、その他のクラスから継承する必要はありません。しかし、この実装を ORB と一緒に使用するには、\f2My_Tie\fP 内で実装をラップしなければなりません。たとえば、次のようにします。 +.LP +\f2My\fP Ȥ󥿥եξ硢ˤ \f2My_Tie.java\fP ޤ\f2My_Tie\fP Υ󥹥ȥ饯ϡ\f2impl\fP ޤ\f2impl\fP ФƼ󶡤ʤФʤޤ󤬡μ \f2HelloOperations\fP 󥿥եѾɬפǡ¾Υ饹ѾɬפϤޤ󡣤μ ORB Ȱ˻Ѥˤϡ\f2My_Tie\fP ǼåפʤФʤޤ󡣤ȤСΤ褦ˤޤ .LP .nf \f3 @@ -183,201 +235,383 @@ IDL のバージョンから J2SE 1.4 より前のバージョンの Java 言語 .fi .LP -.RE .SS -発行されたファイルの代替位置の指定 +ȯԤ줿եذ֤λ .LP -.RS 3 - .LP -発行されたファイルをカレントディレクトリ以外のディレクトリに置くには、次のようなコマンドでコンパイラを呼び出します。 -.RS 3 +ȯԤ줿ե򥫥ȥǥ쥯ȥʳΥǥ쥯ȥ֤ˤϡΤ褦ʥޥɤǥѥƤӽФޤ +.LP +.nf +\f3 +.fl +idlj \fP\f3\-td /altdir\fP My.idl +.fl +.fi .LP -\f2idlj \fP\f4\-td /altdir\fP\f2 My.idl\fP -.RE -\f2My\fP インタフェースの場合、バインディングは、\f2./My.java\fP ではなく、\f2/altdir/My.java\fP などに発行されます。 -.RE +.LP +\f2My\fP 󥿥եξ硢Хǥ󥰤ϡ\f2./My.java\fP ǤϤʤ\f2/altdir/My.java\fP ʤɤȯԤޤ +.LP .SS -インクルードファイルの代替位置の指定 +󥯥롼ɥեذ֤λ .LP -.RS 3 +.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 -\f2My.idl\fP にもう 1 つの IDL ファイル \f2MyOther.idl\fP がインクルードされている場合、コンパイラは、ローカルディレクトリに \f2MyOther.idl\fP があるものと想定します。もしそのファイルが、たとえば \f2/includes\fP にある場合は、次のようなコマンドでコンパイラを呼び出します。 \f2idlj \fP\f4\-i /includes\fP\f2 My.idl\fP .LP -また、もし \f2My.idl\fP に、たとえば \f2/moreIncludes\fP にある \f2Another.idl\fP もインクルードされているのであれば、次のようなコマンドでコンパイラを呼び出します。 \f2idlj \fP\f4\-i /includes \-i /moreIncludes\fP\f2 My.idl\fP +ޤ⤷ \f2My.idl\fP ˡȤ \f2/moreIncludes\fP ˤ \f2Another.idl\fP ⥤󥯥롼ɤƤΤǤСΤ褦ʥޥɤǥѥƤӽФޤ .LP -このような形式でインクルードを指定すると、コマンドが長くて複雑になります。 そこで、インクルードファイルを検索する場所をコンパイラに指示するための別の方法が用意されています。この方法は、環境変数の考え方と似ています。CLASSPATH にリストされているディレクトリ内に \f2idl.config\fP という名前のファイルを作成します。その \f2idl.config\fP の中に、次のような形式の行を入れます。 \f2includes=/includes;/moreIncludes\fP +.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 -コンパイラは、このファイルを検索し、インクルードリストを読み込みます。この例では、ディレクトリの間の区切り文字はセミコロン (;) になっています。この区切り文字は、プラットフォームによって異なります。たとえば、Windows プラットフォームではセミコロンですが、Unix プラットフォームではコロンです。 \f2インクルード\fPの詳細については、 +.nf +\f3 +.fl +includes=/includes;/moreIncludes +.fl +\fP +.fi + +.LP +.LP +ѥϡΥե򸡺󥯥롼ɥꥹȤɤ߹ߤޤǤϡǥ쥯ȥδ֤ζڤʸϥߥ (;) ˤʤäƤޤζڤʸϡץåȥեˤäưۤʤޤȤСWindows ץåȥեǤϥߥǤUnix ץåȥեǤϥǤ \f2󥯥롼\fPξܺ٤ˤĤƤϡ .na -\f2CLASSPATH の設定\fP @ +\f2CLASSPATH \fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#general を参照してください。 -.RE +http://java.sun.com/javase/6/docs/technotes/tools/index.html#general 򻲾ȤƤ +.LP .SS -インクルードファイルに対するバインディングの発行 +󥯥롼ɥեФХǥ󥰤ȯ +.LP +.LP +ǥեȤǤϡޥɹԤ˻ꤷ IDL եƤ륤󥿥ե乽¤ΤʤɤˤĤƤΤߡJava Хǥ󥰤ޤ󥯥롼ɤ줿եƤ뷿ˤĤƤϡJava Хǥ󥰤ޤ󡣤ȤС 2 Ĥ IDL եˤĤƹͤƤߤޤ礦 .LP -.RS 3 .LP -デフォルトでは、コマンド行に指定した IDL ファイルで定義されているインタフェースや構造体などについてのみ、Java バインディングが生成されます。インクルードされたファイルで定義されている型については、Java バインディングは生成されません。たとえば、次の 2 つの IDL ファイルについて考えてみましょう。 \f4My.idl\fP -.LP -\f2#include \fP -.br -\f2interface My\fP -.br -\f2{\fP -.br -\f2};\fP -.br -\f4MyOther.idl\fP -.LP -\f2interface MyOther\fP -.br -\f2{\fP -.br -\f2};\fP\ -.LP -次のコマンドでは、\f2My\fP に対する Java バインディングだけが生成されます。 \f2idlj My.idl\fP -.LP -\f2My.idl\fP で定義されている型と、\f2My.idl\fP にインクルードされたファイル (この例では \f2MyOther.idl\fP) で定義されている型すべてについて Java バインディングを生成するには、次のコマンドを使用します。 \f2idlj \fP\f4\-emitAll\fP\f2 My.idl\fP -.LP -このデフォルトの規則に関して注意しなければならないことがあります。グローバルスコープに指定した \f2#include\fP 文は、前述のとおりに処理されます。これらの \f2#include\fP 文は、インポート文と見なすことができます。それに対して、他の定義に囲まれたスコープ内に指定した \f2#include\fP 文は、本当の意味での \f2#include\fP 文として処理されます。 つまり、インクルードされたファイルにあるコードが、元のファイルにそのまま指定されているかのように処理され、それに対して Java バインディングが発行されます。次に例を示します。 \f4My.idl\fP -.LP -\f2#include \fP -.br -\f2interface My\fP -.br -\f2{\fP -.br -\f2\ #include \fP -.br -\f2};\ \fP \f4MyOther.idl\fP -.LP -\f2interface MyOther\fP -.br -\f2{\fP -.br -\f2};\ \fP \f4Embedded.idl\fP -.LP -\f2enum E {one, two, three};\fP\ -.LP -このとき、次のコマンドを実行すると、 \f2idlj My.idl\fP -.LP -次のような一連の Java ファイルが生成されます。 \f2./MyHolder.java\fP -.br -\f2./MyHelper.java\fP -.br -\f2./_MyStub.java\fP -.br -\f2./MyPackage\fP -.br -\f2./MyPackage/EHolder.java\fP -.br -\f2./MyPackage/EHelper.java\fP -.br -\f2./MyPackage/E.java\fP -.br -\f2./My.java\fP -.LP -インポート文と見なされる \f2#include\fP に定義されているため、\f2MyOther.java\fP は生成されません。ただし、本当の意味での \f2#include\fP で定義されているため、\f2E.java\fP は生成されます。さらに、\f2Embedded.idl\fP が \f2My\fP インタフェースのスコープ内にインクルードされていたため、\f2My\fP のスコープ内 (つまり、\f2MyPackage\fP 内) に生成されています。 -.LP -上記の例で \f2\-emitAll\fP フラグを使用すれば、インクルードされたすべてのファイルにあるすべての型が発行されます。 .LP -.RE -.SS -パッケージの接頭辞の挿入 +\f4My.idl\fP .LP -.RS 3 +.nf +\f3 +.fl +#include +.fl +interface My +.fl +{ +.fl +}; +.fl +\fP +.fi .LP -ABC という名前の会社のために作業していて、次のような IDL ファイルを構築したとしましょう。 -.br -\f4Widgets.idl\fP + .LP -\f2module Widgets\fP -.br -\f2{\fP -.br -\f2\ interface W1 {...};\fP -.br -\f2\ interface W2 {...};\fP -.br -\f2};\fP\ .LP -このファイルに対して IDL\-to\-Java コンパイラを実行すると、\f2W1\fP および \f2W2\fP に対する Java バインディングが \f2Widgets\fP パッケージ内に生成されます。しかし、業界の慣例によると、会社のパッケージは、\f2com.<会社名>\fP という名前のパッケージ内に置くことになっています。そのため、\f2Widgets\fP パッケージでは不十分です。慣例に従うには、パッケージを \f2com.abc.Widgets\fP にする必要があります。このパッケージ接頭辞を \f2Widgets\fP モジュールに付加するには、次のコマンドを実行します。 \f2idlj \fP\f4\-pkgPrefix Widgets com.abc\fP\f2 Widgets.idl\fP +\f4MyOther.idl\fP .LP -\f2Widgets.idl\fP をインクルードしている IDL ファイルがある場合は、そのコマンドにも \f2\-pkgPrefix\fP フラグが必要です。このフラグを指定しないと、その IDL ファイルは、\f2com.abc.Widgets\fP パッケージではなく、\f2Widgets\fP パッケージを検索することになります。 +.nf +\f3 +.fl +interface MyOther +.fl +{ +.fl +}; +.fl +\fP +.fi + .LP -接頭辞が必要なパッケージがいくつもある場合は、前述の \f2idl.config\fP ファイルで接頭辞を指定するのが簡単です。パッケージの接頭辞を指定する行は、それぞれ次の形式で記述します。 + .LP -\f2PkgPrefix.=\fP .LP -したがって、上記の例の場合は、次のように記述します。 \f2PkgPrefix.Widgets=com.abc\fP +ΥޥɤǤϡ\f2My\fP Ф Java Хǥ󥰤ޤ .LP +.nf +\f3 +.fl +idlj My.idl +.fl +\fP +.fi + .LP -このオプションを使用しても、リポジトリ ID は影響を受けません。 .LP -.RE -.SS -コンパイル前のシンボルの定義 +\f2My.idl\fP Ƥ뷿ȡ\f2My.idl\fP ˥󥯥롼ɤ줿ե (Ǥ \f2MyOther.idl\fP) Ƥ뷿٤ƤˤĤ Java Хǥ󥰤ˤϡΥޥɤѤޤ .LP -.RS 3 +.nf +\f3 +.fl +idlj \fP\f3\-emitAll\fP My.idl +.fl +.fi .LP -コンパイル用のシンボルが IDL ファイル内で定義されていない場合は、そのシンボルを定義する必要があります。 これは、たとえば、バインディング内にデバッグコードを組み入れるときに使用します。次のコマンドは、 \f2idlj \fP\f4\-d\fP\f2 MYDEF My.idl\fP .LP -\f2My.idl\fP 内に \f2#define MYDEF\fP という行を指定した場合と等価です。 -.RE +ΥǥեȤε§˴ؤդʤФʤʤȤޤХ륹פ˻ꤷ \f2#include\fP ʸϡҤΤȤ˽ޤ \f2#include\fP ʸϡݡʸȸʤȤǤޤФơ¾˰Ϥޤ줿˻ꤷ \f2#include\fP ʸϡΰ̣Ǥ \f2#include\fP ʸȤƽޤĤޤꡢ󥯥롼ɤ줿եˤ륳ɤΥեˤΤޤ޻ꤵƤ뤫Τ褦˽졢Ф Java Хǥ󥰤ȯԤޤϤǤ +.LP + +.LP +.LP +\f4My.idl\fP +.LP +.nf +\f3 +.fl +#include +.fl +interface My +.fl +{ +.fl + #include +.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 ޤˡ\f2Embedded.idl\fP \f2My\fP 󥿥եΥ˥󥯥롼ɤƤᡢ\f2My\fP Υ (Ĥޤꡢ\f2MyPackage\fP ) Ƥޤ +.LP +.LP +嵭 \f2\-emitAll\fP ե饰ѤС󥯥롼ɤ줿٤ƤΥեˤ뤹٤ƤηȯԤޤ +.LP .SS -既存のバインディングの保持 +ѥåƬ +.LP +.LP +ABC Ȥ̾βҤΤ˺ȤƤơΤ褦 IDL եۤȤޤ礦 .LP -.RS 3 .LP -Java バインディングファイルがすでに存在する場合は、\f2\-keep\fP フラグを指定すると、コンパイラによる上書きを回避できます。デフォルトでは、すでに存在するかどうかにかかわらず、すべてのファイルが生成されます。これらのファイルをカスタマイズした場合 (ただし、それらの内容が正確であるとき以外はカスタマイズは避ける)、\f2\-keep\fP オプションは有用です。次のコマンドは、 \f2idlj \fP\f4\-keep\fP\f2 My.idl\fP .LP -クライアント側のバインディングで、まだ存在しないものをすべて発行します。 -.RE +\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.<̾>\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.= +.fl +\fP +.fi + +.LP +äơ嵭ξϡΤ褦˵Ҥޤ +.nf +\f3 +.fl +PkgPrefix.Widgets=com.abc +.fl +\fP +.fi + +.LP +.LP +ΥץѤƤ⡢ݥȥ ID ϱƶޤ +.LP .SS -コンパイルの進捗状況の表示 +ѥΥܥ .LP -.RS 3 +.LP +ѥѤΥܥ뤬 IDL եƤʤϡΥܥɬפޤϡȤСХǥ˥ǥХåɤȤȤ˻ѤޤΥޥɤϡ +.LP +.nf +\f3 +.fl +idlj \fP\f3\-d\fP MYDEF My.idl +.fl +.fi .LP -IDL\-to\-Java コンパイラは、実行の各段階で状態メッセージを生成します。「冗長」モード (メッセージが多いモード) にするには、\f2\-v\fP オプションを使用します。 \f2idlj \fP\f4\-v\fP\f2 My.idl\fP .LP -デフォルトでは、コンパイラは冗長モードでは実行されません。 -.RE +\f2My.idl\fP \f2#define MYDEF\fP ȤԤꤷǤ +.LP .SS -バージョン情報の表示 +¸ΥХǥ󥰤ݻ .LP -.RS 3 +.LP +Java Хǥ󥰥ե뤬Ǥ¸ߤϡ\f2\-keep\fP ե饰ꤹȡѥˤ񤭤ǤޤǥեȤǤϡǤ¸ߤ뤫ɤˤ餺٤ƤΥե뤬ޤΥե򥫥ޥ (ƤΤǤȤʳϥޥ򤱤)\-keep ץͭѤǤΥޥɤϡ +.LP +.nf +\f3 +.fl +idlj \fP\f3\-keep\fP My.idl +.fl +.fi .LP .LP -IDL\-to\-Java コンパイラのビルドバージョンを表示するには、コマンド行で \f2\-version\fP オプションを指定します。 +饤¦ΥХǥ󥰤ǡޤ¸ߤʤΤ򤹤٤ȯԤޤ .LP +.SS +ѥοĽɽ +.LP +.LP +IDL\-to\-Java ѥϡ¹ԤγʳǾ֥åޤ־Ĺץ⡼ (å¿⡼) ˤˤϡ\f2\-v\fP ץѤޤ .LP -\f2idlj \-version\fP +.nf +\f3 +.fl +idlj \fP\f3\-v\fP My.idl +.fl +.fi + .LP .LP -バージョン情報は、コンパイラによって生成されたバインディング内にも書き込まれています。このオプションをコマンド行に指定すると、それ以外のオプションを指定しても、すべて無視されます。 +ǥեȤǤϡѥϾĹ⡼ɤǤϼ¹Ԥޤ .LP -.RE -.SH "オプション" +.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 ファイルに次のような行を追加した場合と等価です。 -.RS 3 - -.LP +ΥץϡIDL ե˼Τ褦ʹԤɲäǤ .nf \f3 .fl @@ -385,33 +619,32 @@ IDL\-to\-Java コンパイラのビルドバージョンを表示するには、 .fl \fP .fi -.RE .TP 3 \-emitAll -\f2#include\fP ファイル内で定義されているものも含めて、すべての型を発行します。 +#include ե ƤΤޤơ \f2٤Ƥη\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 が指定されたものと見なされます。 +ȯԤХǥ󥰤ޤ\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 -v1.4 より前の JDK ORB と互換性のあるスケルトンを生成します。デフォルトでは、POA 継承モデルのサーバー側バインディングが生成されます。このオプションを指定すると、\f2ImplBase\fP 継承モデルのクラスであるサーバー側バインディングが生成されるので、古いバージョンの Java プログラミング言語との下位互換性が得られます。 +v1.4 JDK ORB ȸߴΤ륹ȥޤǥեȤǤϡPOA ѾǥΥС¦Хǥ󥰤ޤΥץꤹȡ\f2ImplBase\fP ѾǥΥ饹Ǥ륵С¦Хǥ󥰤ΤǡŤС Java ץߥ󥰸Ȥβ̸ߴޤ .TP 3 \-pkgPrefix type prefix -\f2type\fP がファイルスコープで検出された場合は、その型に対して生成されるすべてのファイルについて、生成される Java パッケージ名に \f2prefix\fP という接頭辞が付加されます。\f2type\fP は、トップレベルモジュールの単純名か、どのモジュールよりも外側で定義された IDL 型の単純名のどちらかです。 +\f2type\fP ե륹פǸФ줿ϡηФ뤹٤ƤΥեˤĤơ Java ѥå̾ \f2prefix\fP ȤƬղäޤ\f2type\fP ϡȥåץ٥⥸塼ñ̾ɤΥ⥸塼⳰¦줿 IDL ñ̾Τɤ餫Ǥ .TP 3 \-pkgTranslate type package -識別子の中にモジュール名 \f2type\fP が検出されると、生成される Java パッケージ内のすべてのファイルについて、識別子の中のその名前が \f2package\fP で置き換えられます。最初に \f2pkgPrefix\fP を変更します。\f2type\fP は、トップレベルのモジュール、またはすべてのモジュールの外部で定義された IDL 型の単純名です。 そして、完全なパッケージ名に正確に一致しなければなりません。 +̻Ҥ˥⥸塼̾ type Фȡ Java ѥåΤ٤ƤΥեˤĤơ̻ҤΤ̾ package ֤ޤǽ \f2pkgPrefix\fP ѹޤ\f2type\fP ϡȥåץ٥Υ⥸塼롢ޤϤ٤ƤΥ⥸塼γ줿 IDL ñ̾Ǥơʥѥå̾Τ˰פʤФʤޤ .LP -1 つの識別子の中で複数の変換がマッチする場合は、もっとも長いマッチが選ばれます。たとえば、次のような引数が指定されている場合は、 +1 Ĥμ̻ҤʣѴޥåϡäȤĹޥåФޤȤСΤ褦ʰꤵƤϡ .nf \f3 .fl @@ -420,89 +653,85 @@ v1.4 より前の JDK ORB と互換性のあるスケルトンを生成します \fP .fi .LP -次のような変換が実施されます。 +Τ褦Ѵ»ܤޤ .nf \f3 .fl -foo => bar +foo => bar .fl -foo.boo => bar.boo +foo.boo => bar.boo .fl -foo.baz => buzz.fizz +foo.baz => buzz.fizz .fl -foo.baz.bar => buzz.fizz.bar +foo.baz.bar => buzz.fizz.bar .fl \fP .fi .LP -次のパッケージ名を変換することはできません。 +Υѥå̾Ѵ뤳ȤϤǤޤ .RS 3 .TP 2 o \f2org\fP .TP 2 o -\f2org.omg\fP、または \f2org.omg\fP のサブパッケージ +\f2org.omg\fPޤ \f2org.omg\fP Υ֥ѥå .RE .LP -これらのパッケージ名を変換しようとすると、互換性のないコードが生成されます。 そして、\f2\-pkgTranslate\fP のあとの最初の引数としてそれらのパッケージを使用すると、エラーとして扱われます。 +Υѥå̾Ѵ褦ȤȡߴΤʤɤޤơ\f2\-pkgTranslate\fP ΤȤκǽΰȤƤΥѥåѤȡ顼Ȥưޤ .TP 3 \-skeletonName xxx%yyy -\f2xxx%yyy\fP が、スケルトンに名前を付けるパターンとして使用されます。デフォルトは、次のとおりです。 +\f2xxx%yyy\fP ȥ̾դѥȤƻѤޤǥեȤϼΤȤǤ .RS 3 .TP 2 o -\f2POA\fP 基底クラスの場合は「%POA」(\f2\-fserver\fP または \f2\-fall\fP) +\f2POA\fP 쥯饹ξϡ%POA(\f2\-fserver\fP ޤ \f2\-fall\fP) .TP 2 o -\f2oldImplBase\fP クラスの場合は「_%ImplBase」(\f2\-oldImplBase\fP かつ (\f2\-fserver\fP または \f2\-fall\fP)) +\f2oldImplBase\fP 饹ξϡ_%ImplBase(\f2\-oldImplBase\fP (\f2\-fserver\fP ޤ \f2\-fall\fP)) .RE .TP 3 \-td dir -出力ディレクトリとして、カレントディレクトリではなく、\f2dir\fP が使用されます。 +ϥǥ쥯ȥȤơȥǥ쥯ȥǤϤʤ\f2dir\fP Ѥޤ .TP 3 \-tieName xxx%yyy -このパターンに従って Tie に名前が付けられます。デフォルトは、次のとおりです。 +Υѥ˽ä Tie ̾դޤǥեȤϼΤȤǤ .RS 3 .TP 2 o -\f2POA\fP Tie 基底クラスの場合は「%POATie」(\f2\-fserverTie\fP または \f2\-fallTie\fP) +\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)) +\f2oldImplBase\fP Tie 饹ξϡ%_Tie(\f2\-oldImplBase\fP (\f2\-fserverTie\fP ޤ \f2\-fallTie\fP)) .RE .TP 3 -\-verbose -冗長モードになります。 +\-nowarn, \-verbose +Ĺ⡼ɤˤʤޤ .TP 3 \-version -バージョン情報を表示して終了します。 +Сɽƽλޤ .RE .LP -各オプションの詳細については、「説明」のセクションを参照してください。 -.SH "制約" -.LP - +ƥץξܺ٤ˤĤƤϡפΥ򻲾ȤƤ +.SH "" .LP .RS 3 .TP 2 o -グローバルスコープ内のエスケープされた識別子は、IDL プリミティブ型の \f2Object\fP または \f2ValueBase\fP と同じ綴りであってはなりません。これらの識別子については、シンボルテーブルが事前にロードされており、これらの識別子の再定義を許可すると元の定義が上書きされてしまいます。これは、おそらく恒久的な制約です。 +Х륹Υפ줿̻ҤϡIDL ץߥƥַ \f2Object\fP ޤ \f2ValueBase\fP Ʊ֤ǤäƤϤʤޤ󡣤μ̻ҤˤĤƤϡܥơ֥뤬˥ɤƤꡢμ̻ҤκĤȸ񤭤Ƥޤޤϡ餯ŪǤ .TP 2 o -\f2fixed\fP という IDL 型はサポートされていません。 +\f2fixed\fP Ȥ IDL ϥݡȤƤޤ .RE .LP -.SH "既知の問題点" -.LP - +.SH "Τ" .LP .RS 3 .TP 2 o -グローバル識別子についてインポートが生成されません。予期されないローカル impl を呼び出すと、例外を受け取ります。 しかし、その原因は、\f2ServerDelegate\fP DSI コード内の \f2NullPointerException\fP にあるようです。 +Х뼱̻ҤˤĤƥݡȤޤͽʤ impl ƤӽФȡ㳰ޤ θϡ\f2ServerDelegate\fP DSI \f2NullPointerException\fP ˤ褦Ǥ .RE .LP diff --git a/src/linux/doc/man/ja/jar.1 b/src/linux/doc/man/ja/jar.1 index cea01c9efc899ac1dbc77ece22370a1e622720f6..acdc31b6a07bb82eb11ee5c969de79525d9520cc 100644 --- a/src/linux/doc/man/ja/jar.1 +++ b/src/linux/doc/man/ja/jar.1 @@ -19,104 +19,93 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jar 1 "02 Jun 2010" +.TH jar 1 "14 Apr 2011" .LP -.SH "名前" -jar \- Java ARchive ツール +.SH "̾" +jar \- Java ARchive ġ .LP -\f3jar\fP は複数のファイルを 1 つの JAR アーカイブファイルに結合します。 +\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 - +.SH "" .LP .RS 3 .TP 3 -JAR ファイルの作成 +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 ファイルの更新 +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 ファイルの抽出 +JAR ե \f4jar x\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP .TP 3 -JAR ファイルの内容の表形式による一覧表示 +JAR եƤɽˤɽ \f4jar t\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP .TP 3 -JAR ファイルへのインデックスの追加 +JAR եؤΥǥåɲ \f4jar i\fP \f2jarfile\fP \f2[\-J\fP\f2option\fP\f2]\fP .RE .LP .LP -説明 -.LP -.RS 3 - + .LP .RS 3 .TP 3 cuxtiv0Mmfe -\f2jar\fP コマンドを制御するオプション +\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 の場合)。 + (\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 の場合) される、空白で区切られたファイルまたはディレクトリ。すべてのディレクトリは再帰的に処理されます。このファイルは、オプション \f2O\fP (ゼロ) を使用しないかぎり圧縮されます。 +\f2jarfile\fP ˷礵뤫 (c u ξ)\f2jarfile\fP (x ξ) ޤϰɽ (t ξ) 롢Ƕڤ줿եޤϥǥ쥯ȥꡣ٤ƤΥǥ쥯ȥϺƵŪ˽ޤΥեϡץ \f20\fP () Ѥʤ갵̤ޤ .TP 3 manifest -\f2name\fP\f2:\fP\f2value\fP のペアが、JAR ファイルの MANIFEST.MF に含まれている既存のマニフェストファイル。\f2\-m\fP オプションとファイル名 \f2manifest\fP とがペアになります。 つまり、片方を記述すれば、もう一方も記述する必要があります。\f3m\fP、\f3f\fP、および \f3e\fP の出現順序は、\f2manifest\fP、\f2jarfile\fP、\f2entrypoint\fP の出現順序と一致する必要があります。 +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 ファイル内にバンドルされたスタンドアロンアプリケーションのアプリケーションエントリポイントとして設定するクラスの名前。\f2\-e\fP オプションと entrypoint は対になっています。 どちらかを指定する場合は両方とも指定する必要があります。\f3m\fP、\f3f\fP、および \f3e\fP の出現順序は、\f2manifest\fP、\f2jarfile\fP、\f2entrypoint\fP の出現順序と一致する必要があります。 +¹Բǽ JAR ե˥Хɥ뤵줿ɥ󥢥ץꥱΥץꥱ󥨥ȥݥȤȤꤹ륯饹̾\f2\-e\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 のセットは複数使用できます。 +³ \f2inputfiles\fP ֡ǥ쥯ȥ \f2dir\fP ذŪѹޤ \f2\-C\ \fP\f2\-\ dir\fP \f2inputfiles\fP ΥåȤʣѤǤޤ .TP 3 \-Joption -Java 実行環境へ渡されるオプション。\f2\-J\fP と \f2option\fP の間には空白を入れないでください。 +Java ¹ԴĶϤ륪ץ\f2\-J\fP \f2option\fP δ֤ˤ϶ʤǤ .RE .LP -.RE -.SH "説明" -.LP - +.SH "" .LP -\f3jar\fP ツールは、複数のファイルを 1 つの JAR アーカイブファイルに結合します。 \f3jar\fP は、ZIP および +\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 アーカイブは、圧縮されているかどうかにかかわらず、クラスパスのエントリとして使用できます。 +http://www.gzip.org/zlib/ ̷˴ŤѤΥ֤Ӱ̥ġǤ \f3jar\fP ġμŪϡĤ Java ץåȤ䥢ץꥱ 1 ĤΥ֤礹뤳ȤǤץåȤ䥢ץꥱΥݡͥ (ե롢᡼ӥ) 1 ĤΥ֤˷礵ƤȡJava (֥饦ʤ) ϡΥݡͥȤ 1 HTTP ȥ󥶥ǥɤ뤳ȤǤݡͥȤȤ˿³ɬפȤ뤳Ȥޤ󡣤ˤꡢɻ֤ṳ̂ޤޤ\f3jar\fP ϥեΰ̤ԤΤǡɻ֤ṳ̂ޤޤեθġΥȥ˥ץåȺԤˤ̾񤭹Τǡ۸ǧڤǽˤʤޤjar ġιʸϡ\f2tar\fP ޥɤιʸȤۤƱǤ\f3JAR\fP ֤ϡ̤Ƥ뤫ɤˤ餺饹ѥΥȥȤƻѤǤޤ .LP -複数のファイルを JAR ファイルへ結合する一般的な使用法は次のとおりです。 -.LP -.RS 3 - +ʣΥե JAR եط礹ŪʻˡϼΤȤǤ .LP .nf \f3 @@ -125,19 +114,15 @@ http://www.gzip.org/zlib/ 圧縮形式をベースにした、汎用のアーカ .fl \fP .fi -.RE .LP -この例では、現在のディレクトリにあるクラス (.class) ファイルがすべて、\f2myFile.jar\fP という名前のファイルに格納されます。jar ツールは自動的に、\f2META\-INF/MANIFEST.MF\fP という名前のマニフェストファイルエントリを生成します。これは常に、JAR ファイルの最初のエントリになります。マニフェストファイルは、アーカイブに関するメタ情報を宣言し、そのデータを \f2name\ :\ value\fP ペアとして格納します。jar ツールがマニフェストファイル内にメタ情報を格納する方法の詳細については、「 +ǤϡߤΥǥ쥯ȥˤ륯饹 (.class) ե뤬٤ơ\f2myFile.jar\fP Ȥ̾Υե˳Ǽޤjar ġϼưŪˡ \f2META\-INF/MANIFEST.MF\fP Ȥ̾Υޥ˥եȥե륨ȥޤϾˡJAR եκǽΥȥˤʤޤޥ˥եȥեϡ֤˴ؤ᥿Υǡ \f2name\ :\ value\fP ڥȤƳǼޤjar ġ뤬ޥ˥եȥե˥᥿Ǽˡξܺ٤ˤĤƤϡ .na \f2JAR file specification\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest」を参照してください。 -.LP -既存のマニフェストファイル内に格納された \f2name\ :\ value\fP ペアを JAR ファイルに含める必要がある場合には、そのファイルを次のように \f2\-m\fP オプションを使って指定します。 +http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifestפ򻲾ȤƤ .LP -.RS 3 - +¸Υޥ˥եȥե˳Ǽ줿 \f2name\ :\ value\fP ڥ JAR ե˴ޤɬפˤϡΥե򼡤Τ褦 \f2\-m\fP ץȤäƻꤷޤ .LP .nf \f3 @@ -146,20 +131,16 @@ http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest .fl \fP .fi -.RE .LP -既存のマニフェストファイルは改行文字で終わっている必要があります。 マニフェストファイルが改行文字で終わっていない場合、\f3jar\fP はその最後の行を解析しません。 +¸Υޥ˥եȥեϲʸǽäƤɬפޤޥ˥եȥե뤬ʸǽäƤʤȡ\f3jar\fP ϤκǽԤϤޤ .br .LP .br .LP -\f3注:\ \fPコマンド行に \f2cmf\fP ではなく \f2cfm\fP が指定された jar コマンド (m と \-f オプションの順番を逆にする) の場合、\f3jar\fP コマンド行にまず JAR アーカイブの名前を指定し、続いてマニフェストファイルの名前を指定する必要があります。 次に例を示します。 -.RS 3 - -.LP +\f3:\ \fPޥɹԤ \f2cmf\fP ǤϤʤ \f2cfm\fP ꤵ줿 jar ޥ (m \-f ץν֤դˤ) ξ硢\f3jar\fP ޥɹԤˤޤ JAR ֤̾ꤷ³ƥޥ˥եȥե̾ꤹɬפޤ 򼨤ޤ .nf \f3 .fl @@ -167,15 +148,11 @@ http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest .fl \fP .fi -.RE .LP -マニフェストは、RFC822 ASCII 形式で規定されたテキスト形式であるため、マニフェストファイルの内容を簡単に表示および編集できます。 -.LP -JAR ファイルからファイルを抽出する場合は、\f2x\fP を使用します。 +ޥ˥եȤϡRFC822 ASCII ǵꤵ줿ƥȷǤ뤿ᡢޥ˥եȥեƤñɽԽǤޤ .LP -.RS 3 - +JAR ե뤫եФϡ \f2x\fP Ѥޤ .LP .nf \f3 @@ -184,14 +161,10 @@ JAR ファイルからファイルを抽出する場合は、\f2x\fP を使用 .fl \fP .fi -.RE .LP .LP -jar ファイルから個別のファイルを抽出する場合は、そのファイル名を指定します。 -.LP -.RS 3 - +jar ե뤫̤ΥեФϡΥե̾ꤷޤ .LP .nf \f3 @@ -200,18 +173,14 @@ jar ファイルから個別のファイルを抽出する場合は、そのフ .fl \fP .fi -.RE .LP .LP -JDK のバージョン 1.3 以降から、\f2jar\fP ユーティリティーで +JDK ΥС 1.3 ʹߤ顢\f2jar\fP 桼ƥƥ .na \f2JarIndex\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JARIndex がサポートされています。 JarIndex を使用すると、アプリケーションのクラスローダーで JAR ファイルからクラスがロードされるときの効率が向上します。アプリケーションまたはアプレットが複数の JAR ファイルにバンドルされている場合は、クラスがロードされるときに、必要な JAR ファイル以外のダウンロードおよびオープンは行われません。このパフォーマンスの最適化は、新しい \f2\-i\fP オプションを指定して \f2jar\fP を実行すると有効になります。このオプションを使うと、指定した JAR メインファイルとそのメインファイルが依存しているすべての JAR ファイルについて、パッケージ位置情報が生成されます。 メインファイルが依存している JAR ファイルは、JAR メインファイルのマニフェストの \f2Class\-Path\fP 属性に指定しておく必要があります。 -.LP -.RS 3 - +http://java.sun.com/javase/6/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 @@ -220,52 +189,42 @@ http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JARIndex がサ .fl \fP .fi -.RE .LP .LP -この例では、\f2INDEX.LIST\fP ファイルが \f2main.jar\fP の \f2META\-INF\fP ディレクトリに挿入されます。 +Ǥϡ \f2INDEX.LIST\fP ե뤬 \f2main.jar\fP \f2META\-INF\fP ǥ쥯ȥޤ .br .br -このファイルに格納されている情報を使用して、アプリケーションのクラスローダーは、効率的にクラスをロードします。 インデックスファイルに位置情報を格納する方法の詳細は、 「\f2JarIndex\fP 仕様」を参照してください。 +Υե˳ǼƤѤơץꥱΥ饹ϡΨŪ˥饹ɤޤǥåե˰־Ǽˡξܺ٤ϡJarIndex ͡פ򻲾ȤƤ .br .br -ディレクトリをコピーするには、まず \f2dir1\fP 内のファイルを圧縮して標準出力に出力し、続いて標準入力から \f2dir2\fP に抽出します (両方の \f2jar\fP コマンドから \f2\-f\fP オプションを省く)。 次に例を示します。 -.LP -.RS 3 - +ǥ쥯ȥ򥳥ԡˤϡޤ \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) +% (cd dir1; jar c .)| (cd dir2; jar x) .fl \fP .fi -.RE .LP .LP -\f2jar\fP を使って JAR ファイルや JAR ファイルマニフェストを操作するコマンドサンプルを確認するには、「例」を参照してください。また、「 +\f2jar\fP Ѥ JAR ե JAR ޥ˥եȥե륵ץ륳ޥɤǧϡҤΡפ򻲾ȤƤޤ .na \f2Java Tutorial\fP @ .fi -http://java.sun.com/docs/books/tutorial/jar」の JAR コースも参照してください。 -.LP -.SH "オプション" +http://download.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 で指定されたファイルとディレクトリを、このアーカイブに追加します。 +f ꤵ줿 \f2jarfile\fP Ȥ̾ \f2\fP ֥ե \f2\fP f \f2jarfile\fP ά줿ɸϤ˾Ϥޤ\f2inputfiles\fP ǻꤵ줿եȥǥ쥯ȥ򡢤Υ֤ɲäޤ .TP 3 u -\f2inputfiles\fP で指定されたファイルとディレクトリを追加することにより、既存のファイル \f2jarfile\fP を更新します (\f2f\fP が指定されている場合)。 例を示します。 -.RS 3 - -.LP +f ꤵƤˡ¸ե \f2jarfile\fP \f2Ūǡ\fP \f2inputfiles\fP ˻ꤵ줿եǥ쥯ȥɲäޤ򼨤ޤ .nf \f3 .fl @@ -273,11 +232,7 @@ jar uf foo.jar foo.class .fl \fP .fi -.RE -上のコマンドは、ファイル \f2foo.class\fP を既存の JAR ファイル \f2foo.jar\fP に追加します。次の例に示すように、\f2\-u\fP オプションは、マニフェストエントリも更新できます。 -.RS 3 - -.LP +Υޥɤϡե \f2foo.class\fP ¸ JAR ե \f2foo.jar\fP ɲäޤ˼褦ˡ\f2\-u\fP ץϡޥ˥եȥȥ⹹Ǥޤ .nf \f3 .fl @@ -285,20 +240,16 @@ jar umf manifest foo.jar .fl \fP .fi -.RE -\f2foo.jar\fP マニフェストをマニフェスト内の \f2name:value\fP ペアで更新します。 +\f2foo.jar\fP ޥ˥եȤޥ˥ե \f2name:value\fP ڥǹޤ .TP 3 x -\f2jarfile\fP から (\f2f\fP が指定されている場合)、または標準入力から (\f2f\fP と \f2jarfile\fP が省略されている場合)、ファイルとディレクトリを抽出します。\f2inputfiles\fP が指定されている場合は、その指定したファイルとディレクトリだけが抽出されます。指定されていなければ、すべてのファイルとディレクトリが抽出されます。抽出されたファイルの日時は、アーカイブ内で設定されたものです。 +f ꤵ줿 \f2jarfile\fP \f2\fP \f2f\fP \f2jarfile\fP ά줿ɸϤ顢եǥ쥯ȥФޤ\f2inputfiles\fP ꤵƤϡλꤷեȥǥ쥯ȥФޤꤵƤʤС٤ƤΥեȥǥ쥯ȥ꤬ФޤФ줿եϡꤵ줿ΤǤ .TP 3 t -\f2jarfile\fP から (\f2f\fP が指定されている場合)、または標準入力から (\f2f\fP と \f2jarfile\fP が省略されている場合)、内容を表形式で一覧表示します。\f2inputfiles\fP が指定されている場合は、その指定したファイルとディレクトリだけが一覧表示されます。指定されていなければ、すべてのファイルとディレクトリが一覧表示されます。 +f ꤵ줿 \f2jarfile\fP \f2\fP \f2f\fP \f2jarfile\fP ά줿ɸϤ顢ܼɽޤ\f2inputfiles\fP ꤵƤϡλꤷեȥǥ쥯ȥɽޤꤵƤʤС٤ƤΥեȥǥ쥯ȥ꤬ɽޤ .TP 3 i -指定された \f2jarfile\fP と、それに依存する JAR ファイルについて、インデックス情報を生成します。例を示します。 -.RS 3 - -.LP +ꤵ줿 \f2jarfile\fP ȡ˰¸ JAR եˤĤơǥåޤȤС .nf \f3 .fl @@ -306,29 +257,25 @@ jar i foo.jar .fl \fP .fi -.RE .LP -上のコマンドは、\f2foo.jar\fP 内に \f2INDEX.LIST\fP ファイルを生成します。 このファイルには、\f2foo.jar\fP と、\f2foo.jar\fP の \f2Class\-Path\fP 属性に指定されたすべての JAR ファイルに入っている各パッケージの位置情報が書き込まれています。 インデックスの例を参照してください。 +Υޥɤϡ\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 を省略すると、標準入力から JAR ファイル名が使用されたり (x および t の場合)、標準出力に jar ファイルが 送信されたりします (c および u の場合)。 +γƽоݤȤʤե \f2jarfile\fP ꤷޤ (\f2c\fP) (\f2u\fP) (\f2x\fP)ǥåɲ (\f2i\fP)ޤɽ (\f2t\fP)\f2f\fP ץȥե̾ \f2jarfile\fP Ȥڥˤʤޤ Ĥޤꡢ򵭽ҤС⤦⵭ҤɬפޤOmitting \f2f\fP \f2jarfile\fP άȡx t ξ \f2ɸ\fP JAR ե̾졢c u ξ \f2ɸ\fP JAR ե뤬ޤ .TP 3 v -詳細な出力を標準出力に生成します。あとで例を示します。 +ܺ٤ʽϤɸϤޤȤ򼨤ޤ .TP 3 0 -(ゼロ) ZIP による圧縮を使用せずに、保存します。 +() ZIP ˤ밵̤Ѥˡ¸ޤ .TP 3 M -マニフェストファイルエントリを作成しません (c および u の場合)。 または、マニフェストファイルエントリが存在する場合にそれを削除します (u の場合)。 +ޥ˥եȥե륨ȥޤ (c u ξ)ޤϡޥ˥եȥե륨ȥ꤬¸ߤˤޤ (u ξ) .TP 3 m -\f2META\-INF/MANIFEST.MF\fP のファイルで指定したマニフェストファイル \f2manifest\fP の \f2name :value\fP の属性ペアを組み込みます。すでに同じ名前で存在しない限り、 \f2jar\fP はその \f2name\ :\ value\fP ペアを追加します。同じ名前で存在する場合は、\f2jar\fP はその値を更新します。 -.LP -コマンド行で、\f3m\fP と \f3f\fP の文字は、\f2manifest\fP と \f2jarfile\fP の入力順序と同じ順序で記述する必要があります。たとえば、次のようにして使います。 -.RS 3 - +\f2META\-INF/MANIFEST.MF\fP Υեǻꤷޥ˥եȥե \f2manifest\fP \f2name : value\fP °ڥȤ߹ߤޤ \f2jar\fP ϡǤƱ̾¸ߤʤꡢ \f2name:value\fP ڥɲäޤƱ̾¸ߤ硢 \f2jar\fP Ϥͤ򹹿ޤ .LP +ޥɹԤǡ\f3m\fP \f3f\fP ʸϡ\f2manifest\fP \f2jarfile\fP ϽƱǵҤɬפޤȤСΤ褦ˤƻȤޤ .nf \f3 .fl @@ -336,22 +283,17 @@ jar cmf myManifestFile myFile.jar *.class .fl \fP .fi -.RE -デフォルトのマニフェストには含まれないマニフェストに、特別な目的の \f2name\ :\ value\fP の属性ペアを追加できます。たとえば、ベンダー情報、バージョン情報、パッケージシーリング、または JAR にバンドルされたアプリケーションを実行するための属性を追加できます。\f4\-m\fP オプションの使用例については、「Java Tutorial」 にある「 +ǥեȤΥޥ˥եȤˤϴޤޤʤޥ˥եȤˡ̤Ū \f2name\ :\ value\fP °ڥɲäǤޤȤС٥󡢥С󡢥ѥå󥰡ޤ JAR ˥Хɥ뤵줿ץꥱ¹Ԥ뤿°ɲäǤޤJava TutorialפΡ .na \f2JAR Files\fP @ .fi -http://java.sun.com/docs/books/tutorial/jar/」コースを参照してください。 -.LP +http://download.oracle.com/javase/tutorial/deployment/jar/ץ򻲾Ȥ \f4\-m\fP ץλǧƤ .TP 3 e -実行可能 JAR ファイル内にバンドルされたスタンドアロンアプリケーションのアプリケーションエントリポイントとして、\f2entrypoint\fP を設定します。このオプションを使用すると、マニフェストファイル内の \f2Main\-Class\fP 属性値が作成または上書きされます。 このオプションは、JAR ファイルの作成中または更新中に使用できます。 このオプションを使えば、マニフェストファイルを編集または作成することなしに、アプリケーションのエントリポイントを指定できます。 +¹Բǽ JAR ե˥Хɥ뤵줿ɥ󥢥ץꥱΥץꥱ󥨥ȥݥȤȤơ\f2entrypoint\fP ꤷޤΥץѤȡޥ˥եȥե \f2Main\-Class\fP °ͤޤϾ񤭤ޤΥץϡJAR եκޤϹ˻ѤǤޤΥץȤСޥ˥եȥեԽޤϺ뤳ȤʤˡץꥱΥȥݥȤǤޤ .br .br -たとえば、次のコマンドは \f2Main.jar\fP を作成しますが、その際、マニフェストファイル内の \f2Main\-Class\fP 属性値は \f2Main\fP に設定されます。 -.RS 3 - -.LP +ȤСΥޥɤǤ \f2Main.jar\fP ޤκݡޥ˥ե \f2Main\-Class\fP °ͤ \f2Main\fP ꤵޤ .nf \f3 .fl @@ -359,12 +301,8 @@ jar cfe Main.jar Main Main.class .fl \fP .fi -.RE -.LP -次のコマンドを実行すると java ランタイムから直接このアプリケーションを起動できます。 -.RS 3 - .LP +Υޥɤ¹Ԥ java 󥿥फľܤΥץꥱưǤޤ .nf \f3 .fl @@ -372,11 +310,7 @@ java \-jar Main.jar .fl \fP .fi -.RE -エントリポイントのクラス名が特定のパッケージ内に存在している場合、エントリポイントの区切り文字としてドット (「.」) またはスラッシュ (「/」) を使用できます。たとえば、\f2Main.class\fP が \f2foo\fP という名前のパッケージ内に存在している場合、次のようにしてエントリポイントを指定できます。 -.RS 3 - -.LP +ѥå˥ȥݥȤΥ饹̾ޤޤƤ硢ɥå (.) å (/) Τ줫ʸ򤽤ζڤʸȤƻѤǤޤȤС \f2Main.class\fP \f2foo\fP Ȥ̾Υѥå˴ޤޤƤ硢ȥݥȤϼΤ褦ˤƻǤޤ .nf \f3 .fl @@ -384,11 +318,7 @@ jar \-cfe Main.jar foo/Main foo/Main.class .fl \fP .fi -.RE -または -.RS 3 - -.LP +ޤ .nf \f3 .fl @@ -396,18 +326,14 @@ jar \-cfe Main.jar foo.Main foo/Main.class .fl \fP .fi -.RE -\f3注:\ \fP \f2\-m\fP オプションと \f2\-e\fP オプションの両方を同時に指定する場合、指定されたマニフェストにも \f2Main\-Class\fP 属性が含まれていると、\f2Main.class\fP の指定があいまいになってエラーが発生し、JAR の作成または更新処理が異常終了します。 +\f3:\ \fP \f2\-m\fP ץ \f2\-e\fP ץξƱ˻ꤷ硢ꤷޥ˥եȤˤ \f2Main\-Class\fP °ޤޤƤС \f2Main.class\fP λ꤬ޤˤʤäƥ顼ȯJAR κ乹۾ェλޤ .LP .TP 3 \-C \ dir -\f2jar\fP コマンドの実行中に後続の \f2inputfiles\fP 引数を処理するときに、一時的にディレクトリを変更します (\f2cd\fP\ \f2dir\fP)。この処理は、UNIX の \f2tar\fP ユーティリティーの \f2\-C\fP オプションの機能に類似しています。 +\f2jar\fP ޥɤμ¹˸³ \f2inputfiles\fP ȤˡŪ˥ǥ쥯ȥѹޤ (cd \f2dir\fP)νϡUNIX \f2tar\fP 桼ƥƥ \f2\-C\fP ץεǽƤޤ .br .br -たとえば、次のコマンドは、\f2classes\fP ディレクトリに移動し、そのディレクトリから \f2bar.class\fP を \f2foo.jar\fP に追加します。 -.RS 3 - -.LP +ȤСΥޥɤϡ\f2classes\fP ǥ쥯ȥ˰ưΥǥ쥯ȥ꤫ \f2bar.class\fP \f2foo.jar\fP ɲäޤ .nf \f3 .fl @@ -415,23 +341,15 @@ jar uf foo.jar \-C classes bar.class .fl \fP .fi -.RE -次のコマンドでは、\f2classes\fP ディレクトリに移動し、\f2classes\fP ディレクトリ内のすべてのファイルを \f2foo.jar\fP に追加します (jar ファイルには classes ディレクトリを作成しません)。 次に元のディレクトリに戻ってから、\f2bin\fP ディレクトリに移動し、\f2xyz.class\fP を \f2foo.jar\fP に追加します。 -.RS 3 - -.LP +ΥޥɤǤϡ\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 +jar uf foo.jar \-C classes .\-C bin xyz.class .fl \fP .fi -.RE -\f2classes\fP に \f2bar1\fP と \f2bar2\fP が保持されている場合、\f2jar tf foo.jar\fP を使用すると、JAR ファイルには次の要素が含められます。 -.RS 3 - -.LP +\f2classes\fP ˥ե \f2bar1\fP \f2bar2\fP ǼƤˡ \f2jar tf foo.jar\fP ѤȤ JAR եȤ򡢼˼ޤ .nf \f3 .fl @@ -447,30 +365,24 @@ xyz.class .fl \fP .fi -.RE .LP .TP 3 \-Joption -Java 実行環境に \f2option\fP を渡します。 \f2option\fP には、「Java アプリケーション起動ツール」のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f4\-J\-Xmx48M\fP と指定すると、最大メモリーは 48M バイトに設定されます。\f2\-J\fP を使って背後の実行環境にオプションを渡すことはよく行われています。 +Java ¹ԴĶ \f2option\fP Ϥޤ \f2option\fP ˤϡJava ץꥱưġפΥե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС \f4\-J\-Xmx48M\fP Ȼꤹȡ꡼ 48M ХȤꤵޤ\f2\-J\fP Ȥäظμ¹ԴĶ˥ץϤȤϤ褯ԤƤޤ .RE .LP -.SH "コマンド行引数ファイル" -.LP - +.SH "ޥɹ԰ե" .LP -jar のコマンド行を短くしたり簡潔にしたりするために、\f2jar\fP コマンドに対する引数 (\f2\-J\fP オプションを除く) を含む 1 つ以上のファイルを指定することができます。これにより、任意の長さの jar コマンドを作成でき、オペレーティングシステムによるコマンド行の制限から解放されます。 +jar ΥޥɹԤûʷˤꤹ뤿ˡjar ޥɤФ (\-J ץ) ޤ 1 İʾ \f2ե\fP ꤹ뤳Ȥ \f2Ǥޤ\fP ˤꡢǤդĹ jar ޥɤǤڥ졼ƥ󥰥ƥˤ륳ޥɹԤ¤ޤ .LP -引数ファイルにはオプションとファイル名を含めることができます。ファイル内の各引数は、スペースまたは改行で区切ります。引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。 引数ファイルの位置から見た相対パスではありません。ワイルドカード (*) は、通常ならばオペレーティングシステムシェルによってあらゆる文字に解釈されますが、この場合はそのようには解釈されません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、\f2\-J\fP オプションもサポートされていません。 このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 +եˤϥץȥե̾ޤ뤳ȤǤޤեγưϡڡޤϲԤǶڤޤեΥե̾ϡߤΥǥ쥯ȥ꤫鸫Хѥˤʤޤեΰ֤鸫ХѥǤϤޤ󡣥磻ɥ (*) ϡ̾ʤХڥ졼ƥ󥰥ƥॷˤäƤʸ˲ᤵޤξϤΤ褦ˤϲᤵޤ󡣰եΰ \f2@\fP ʸѤơʣΥեƵŪ˲᤹뤳ȤϥݡȤƤޤ󡣤ޤ\f2\-J\fP ץ⥵ݡȤƤޤ󡣤ΥץϵưġϤޤưġǤϰե򥵥ݡȤƤʤǤ .LP .LP -\f2jar\fP を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。\f2jar\fP は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +\f2jar\fP ¹ԤȤˡưեΥѥȥե̾Ƭ \f2@\fP ʸդϤޤ \f2jar\fP ϡ\f2@\fP ʸǻϤޤ򸫤ĤȡΥեƤŸưꥹȤޤ .br .br -次の例では、\f2find\fP コマンドから出力されたファイル名を \f2classes.list\fP 内に格納しています。 -.LP -.RS 3 - +ǡ \f2classes.list\fP ˤϡ \f2find\fP ޥɤˤäƽϤ줿ե̾Ǽޤ .LP .nf \f3 @@ -478,14 +390,10 @@ jar のコマンド行を短くしたり簡潔にしたりするために、\f2j % find \fP\f3.\fP \-name '*.class' \-print > classes.list .fl .fi -.RE .LP .LP -その後、引数ファイル構文を使って \f2jar\fP にリストを渡すと、\f2Classes.list\fP で \f2jar\fP コマンドを実行できます。 -.LP -.RS 3 - +ˡե빽ʸѤ \f2classes.list\fP jar ϤȤǡ \f2Υꥹ\fP Ф \f2jar\fP ޥɤ¹ԤǤޤ .LP .nf \f3 @@ -494,13 +402,9 @@ jar のコマンド行を短くしたり簡潔にしたりするために、\f2j .fl \fP .fi -.RE - -.LP -引数ファイルはパスを指定できますが、相対パスが記述された引数ファイル内のすべてのファイル名は、渡されたパスに対して相対的ではなく、現在の作業ディレクトリに相対的となります。 次に例を示します。 -.RS 3 .LP +եϥѥǤޤХѥҤ줿եΤ٤ƤΥե̾ϡϤ줿ѥФŪǤϤʤߤκȥǥ쥯ȥŪȤʤޤϤǤ .nf \f3 .fl @@ -508,20 +412,14 @@ jar のコマンド行を短くしたり簡潔にしたりするために、\f2j .fl \fP .fi -.RE .LP .LP .LP -.SH "例" -.LP - -.LP -特定のディレクトリ内のすべてのファイルをアーカイブに追加する (そのアーカイブがすでに存在する場合は、その内容を上書きする) には、次のようにします。\f2\-v\fP オプションを使用して情報を詳細に列挙するように指定すると、サイズや最新の更新日など、アーカイブ内のファイルについての詳細情報が表示されます。 -.RS 3 - +.SH "" .LP +Υǥ쥯ȥΤ٤ƤΥե򥢡֤ɲä (Υ֤Ǥ¸ߤϡƤ񤭤) ˤϡΤ褦ˤޤ\f2\-v\fP ץѤƾܺ٤󤹤褦˻ꤹȡǿιʤɡΥեˤĤƤξܺپɽޤ .nf \f3 .fl @@ -557,13 +455,9 @@ adding: spacemusic.au(in = 3079) (out= 73)(deflated 97%) .fl \fP .fi -.RE - -.LP -すでに画像、オーディオファイル、およびクラス用のサブディレクトリに分けている場合は、これらを単一の JAR ファイルに結合できます。 -.RS 3 .LP +Ǥ˲ǥե롢ӥ饹ѤΥ֥ǥ쥯ȥʬƤϡñ JAR ե˷Ǥޤ .nf \f3 .fl @@ -607,13 +501,9 @@ audio/ bundle.jar classes/ images/ .fl \fP .fi -.RE - -.LP -JAR ファイルのエントリ名を表示するには、「\f2t\fP」オプションを使用します。 -.RS 3 .LP +JAR եΥȥ̾ɽˤϡ\f2t\fPץץѤޤ .nf \f3 .fl @@ -641,28 +531,24 @@ images/at_work.gif .fl \fP .fi -.RE .LP .LP -クラスロードを高速にするためにインデックスファイルを JAR ファイルに追加するには、「\f2i\fP」オプションを使用します。 +饹ɤ®ˤ뤿˥ǥåե JAR եɲäˤϡ\f2i\fPץץѤޤ .br .br -例: +: .br .LP -.RS 3 - -.LP -たとえば、株取引アプリケーション用の相互依存したクラスを、\f2main.jar\fP、\f2buy.jar\fP、および \f2sell.jar\fP という 3 つの JAR ファイルに分割したとします。 +ȤСץꥱ¸Ƥ륯饹\f2main.jar\fP\f2buy.jar\fP \f2sell.jar\fP Ȥ 3 Ĥ JAR եʬ䤷Ȥޤ .br .LP .br .LP -\f2main.jar\fP のマニフェストの \f2Class\-path\fP 属性に次のように指定した場合、 +\f2main.jar\fP Υޥ˥եȤ \f2Class\-path\fP °˼Τ褦˻ꤷ硢 .nf \f3 .fl @@ -672,7 +558,7 @@ Class\-Path: buy.jar sell.jar .fi .LP -\f2\-i\fP オプションを使用すれば、アプリケーションのクラスの 読み込みを高速化できます。 +\f2\-i\fP ץѤСץꥱΥ饹 ɤ߹ߤ®Ǥޤ .nf \f3 .fl @@ -682,38 +568,34 @@ Class\-Path: buy.jar sell.jar .fi .LP -\f2INDEX.LIST\fP ファイルが \f2META\-INF\fP ディレクトリに挿入されます。この結果、アプリケーションのクラスローダーによってクラスまたは リソースの検索が行われるときに、適切な jar ファイルがダウンロードされます。 -.RE -.SH "関連項目" +\f2INDEX.LIST\fP ե뤬 \f2META\-INF\fP ǥ쥯ȥޤη̡ץꥱΥ饹ˤäƥ饹ޤϥ꥽θԤȤˡŬڤ jar ե뤬ɤޤ +.SH "Ϣ" .LP - .LP .na -\f2「JAR ファイルの概要」\fP @ +\f2JAR եγ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/jar/jarGuide.html -.br - +.LP .LP .na -\f2「JAR ファイルの仕様」\fP @ +\f2JAR եλ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html -.br - +.LP .LP .na -\f2「Jar インデックス」\fP @ +\f2JarIndex λ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JARIndex -.br - +http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR_Index +.LP .LP .na -\f2「Jar チュートリアル」\fP @ +\f2JAR 塼ȥꥢ\fP @ .fi -http://java.sun.com/docs/books/tutorial/jar (Java Software の Web サイト内) -.br - +http://download.oracle.com/javase/tutorial/deployment/jar/index.html +.LP +.LP +pack200(1) .LP -pack200(1) + diff --git a/src/linux/doc/man/ja/jarsigner.1 b/src/linux/doc/man/ja/jarsigner.1 index 3f224f76e0bc24eaf57bf2573d2b9cdfc7b9f581..c349b53e8d6e3bbfb59b006e372bd625371a4c32 100644 --- a/src/linux/doc/man/ja/jarsigner.1 +++ b/src/linux/doc/man/ja/jarsigner.1 @@ -1,4 +1,4 @@ -." Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ." ." This code is free software; you can redistribute it and/or modify it @@ -19,1599 +19,1641 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jarsigner 1 "02 Jun 2010" +.TH jarsigner 1 "14 Apr 2011" .LP -.SH "名前" -jarsigner \- JAR 署名および検証ツール +.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 -Java ARchive (JAR) ファイルの署名を生成し、署名付き JAR ファイルの署名を検証します。 +JAR ǽȤȡ饹ե롢᡼ɡӤ¾ΥǥǡñΥե˥ѥåǤΤǡե®ưפۤǤޤȯԤϡjar(1) Ȥ̾ΥġȤä JAR եǤޤŪʴС٤Ƥ ZIP ե JAR եȤߤʤȤǤޤ \f3jar\fP ˤäƺ줿 JAR ե롢ޤ \f3jarsigner\fP ˤäƽ줿 JAR եˤϡMETA\-INF/MANIFEST.MF ե뤬ޤޤƤޤ +.LP +.LP +֥ǥ̾פϡʤ餫Υǡ (ֽ̾פоݤȤʤǡ) ȡƥƥ (͡Ҥʤ) Ȥ˴ŤƷ׻ӥåǤ񤭤ν̾Ʊ͡ǥ̾ˤ¿ޤ .LP +.RS 3 +.TP 2 +o +̾˻Ȥ줿ФˤʤȤäƷ׻ԤȤǡǥ̾ʪɤ򸡾ڤǤ +.TP 2 +o +¾ͤΤʤ¤ꡢǥ̾ε¤ԲǽǤ +.TP 2 +o +ǥ̾ϡν̾դǡоݤȤΤǤꡢۤΥǡν̾ȤƵǽ뤳ȤϤʤ +.TP 2 +o +̾դΥǡѹǤʤ ǡѹ줿ϡν̾ˤäƥǡʪǤϤʤȤڤ .RE -.SH "形式" + +.LP +.LP +եФƥƥƥν̾ˤϡޤƥƥϡΥƥƥ˴ϢΥڥɬפޤޤǧڤ 1 ĤޤʣξɬפǤ־פȤϡ륨ƥƥȯԤǥ̾դʸǡ̤ʥƥƥθͤǤ뤳ȤƤޤ +.LP +.LP +\f3jarsigner\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 ǽ̾ǤΤϡJDK jar(1) ġǺ줿 JAR ե롢ޤ ZIP եǤJAR ե ZIP եƱǤJAR եˤ META\-INF/MANIFEST.MF ե뤬ޤޤƤۤʤޤMETA\-INF/MANIFEST.MF եϡ\f3jarsigner\fP ZIP ե˽̾դȤ˼ưŪ˺ޤ +.LP +.LP +ǥեȤǤϡ\f3jarsigner\fP JAR (ޤ ZIP) եˡֽ̾פդޤ̾դ JAR եָڡפϡ \f2\-verify\fP ץꤷޤ +.LP +.SS +ȥ̾ .LP +.LP +ȥΤ٤ƤΥȥϡդΡ̾פ𤷤ƥޤ +.LP +.LP +\f3jarsigner\fP Ȥä JAR ե˽̾դȤϡ̾ɬפޤ७ȥȥ̾ꤹɬפޤȤСϡworking ǥ쥯ȥ mystore Ȥ̾Υȥ˴ޤޤ̾ duke ˴Ϣդ줿ȤäơMyJARFile.jar Ȥ̾ JAR ե˽̾դޤϥեϻꤵƤʤΤǡMyJARFile.jar Ͻ̾դ JAR եˤäƾ񤭤ޤ +.LP +.nf +\f3 +.fl + jarsigner \-keystore /working/mystore \-storepass myspass +.fl + \-keypass dukekeypasswd MyJARFile.jar duke +.fl +\fP +.fi +.LP +.LP +ȥϥѥɤݸƤΤǡȥΥѥ (Ǥ mypass) ꤹɬפޤޥɹԤǥȥΥѥɤꤷʤȡѥɤϤޤƱͤˡ⥭ȥǥѥɤˤäݸƤ뤿ᡢΥѥ (Ǥ dukekeypasswd) ꤹɬפޤ ޥɹԤΥѥɤꤷƤʤޤꤷѥȤ¸ƤѥɤȰäƤˤϡΥѥɤϤޤ +.LP +.SS +ȥξ +.LP +.LP +\f3jarsigner\fP ˤϡ \f2Ѥ륭ȥ URL ꤹ \-keystore\fP ޤȥ \f2\fP ǥեȤǡ \f2user.home\fP ƥץѥƥǷޤ桼Υۡǥ쥯ȥ .keystore Ȥ̾Υե˳ǼޤSolaris ƥξ硢 \f2user.home\fP ΥǥեȤϥ桼 home ǥ쥯ȥˤʤޤ +.LP +.LP +\-keystore ץ \f2˻ꤷ\fP ϥȥ꡼ब \f2KeyStore.load\fP ᥽åɤϤդƤURL Ȥ \f2NONE\fP ꤵƤϡnull Υȥ꡼ब \f2KeyStore.load\fP ᥽åɤϤޤ \f2NONE\fP ϡ \f2KeyStore\fP ե١ǤϤʤ硢ȤФ줬ϡɥȡǥХ¸ߤƤʤɤ˻ꤹ٤Ǥ +.LP +.SS +ȥμ +.LP +.LP +java.security ѥå \f2󶡤Ƥ\fP KeyStore 饹 \f2ϡ\fP ȥξؤΥӾѹԤΡΤ줿󥿥ե󶡤ޤȥθȤƤϡ줾줬Ρ֥ספΥȥоݤȤʣΰۤʤ¸߲ǽǤ +.LP +.LP +ߡȥμѤΤȤơ\f3keytool\fP \f3jarsigner\fP 2 ĤΥޥɹԥġȡ\f3Policy Tool\fP Ȥ̾ 1 Ĥ GUI ١Υġ뤬ޤKeyStore \f2\fP public ȤƻѲǽʤΤǡJava 2 SDK 桼 KeyStore ȤäۤΥƥץꥱǤޤ +.LP +.LP +ȥˤϡSun 󶡤Ȥ߹ߤΥǥեȤμޤϡJKS Ȥ̾ȼΥȥ () ѤΤǡȥեȤƼƤޤμǤϡġϸ̤Υѥɤˤäݸ졢ȥΤ (Ȥ̤) ѥɤˤäݸޤ +.LP +.LP +ȥμϡץХ١ǤŪˤϡ \f2KeyStore\fP ˤä󶡤륢ץꥱ󥤥󥿥ե֥ӥץХ󥿥ե (SPI) ˴ŤƼޤĤޤꡢбݥ饹 \f2KeystoreSpi\fP Ʊ \f2java.security\fP ѥå¸ߤƤꡢΥ饹ˤäơ֥ץХפɬפΤ륵ӥץХ󥿥ե᥽åɤƤޤǡ֥ץХפȤϡJava Security API ˤäƥǽʥӥΥ֥åȤФθ󶡤ѥåޤϥѥåνΤȤǤäơȥμ󶡤ˤϡ +.na +\f2Java Ź沽ƥ㡼ѥץХμˡ\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.htmlƤ褦ˡ饤Ȥ֥ץХפKeystoreSpi ֥饹μ󶡤ɬפޤ +.LP +.LP +ץꥱǤϡKeyStore 饹󶡤 getInstance եȥ᥽åɤȤȤǡޤޤʥץХۤʤ֥ספΥȥ \f2\fP ǤޤȥΥפϡȥγǼȥǡȤȤˡȥȥȥΤݸ뤿˻Ȥ륢르ꥺޤۤʤ륿פΥȥμˤϡߴϤޤ +.LP +.LP +\f3keytool\fP ϡǤդΥե١Υȥưޤkeytool ϡޥɹԤϤ줿ȥξե̾Ȥư 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 ץѥƥͤǤޤΥɤϡǥեȤΥȥ \f2(keystore.type ץѥƥǻꤵ줿)\fP Υ󥹥󥹤ޤ .LP .nf \f3 .fl -\fP\f3jarsigner\fP [ options ] jar\-file alias + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); +.fl +\fP +.fi + +.LP +.LP +ǥեȤΥȥפ JKS (Sun 󶡤ȼΥפΥȥμ) ǤϡƥץѥƥեμιԤˤäƻꤵƤޤ +.LP +.nf +\f3 .fl -\f3jarsigner\fP \-verify [ options ] jar\-file + keystore.type=jks .fl +\fP .fi .LP -.SH "説明" .LP +: ȥΥפλǤϡʸȾʸ϶̤ޤ󡣤ȤСJKS jks ƱΤȤưޤ +.LP +.LP +ƥġǥǥեȰʳΥȥμѤˤϡιԤѹ̤ΥȥΥפꤷޤȤСpkcs12 ȸƤФ륿פΥȥμ󶡤ƤץХѥåѤˤϡιԤ򼡤Τ褦ѹޤ +.LP +.nf +\f3 +.fl + keystore.type=pkcs12 +.fl +\fP +.fi .LP .LP -\f3jarsigner\fP ツールは、次の 2 つの目的で使用します。 +PKCS#11 ץХѥåѤ硢ξܺ٤ˤĤƤϡJava PKCS#11 Reference Guideפˤ +.na +\f2KeyTool and JarSigner\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#KeyToolJarSigner򻲾ȤƤ +.LP +.SS +ݡȤ륢르ꥺ +.LP +.LP +\f3jarsigner\fP ϥǥեȤǡΤ줫Ѥ JAR ե˽̾ޤ .LP .RS 3 -.TP 3 -1. -Java ARchive (JAR) ファイルに署名を付ける -.TP 3 -2. -署名付き JAR ファイルの署名と整合性を検証する +.TP 2 +o +SHA1 ȥ르ꥺȤä DSA (ǥ̾르ꥺ) +.TP 2 +o +SHA256 ȥ르ꥺѤ RSA 르ꥺ +.TP 2 +o +SHA256 ECDSA (ʱ߶ǥ̾르ꥺ) Ѥ EC (ʱ߶) Ź르ꥺ .RE .LP .LP -JAR 機能を使うと、クラスファイル、イメージ、サウンド、およびその他のデジタルデータを単一のファイルにパッケージ化できるので、ファイルを迅速かつ容易に配布できます。開発者は、jar(1) という名前のツールを使って JAR ファイルを作成できます。技術的な観点から言えば、すべての ZIP ファイルも JAR ファイルとみなすことができます。 ただし、\f3jar\fP によって作成された JAR ファイル、または \f3jarsigner\fP によって処理された JAR ファイルには、META\-INF/MANIFEST.MF ファイルが含まれています。 +Ūˤϡ̾Ԥθ 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 -ファイルに対してエンティティーの署名を生成するには、まず、エンティティーは、そのエンティティーに関連する公開鍵と非公開鍵のペアを持つ必要があります。 また、公開鍵を認証する 1 つまたは複数の証明書も必要です。「証明書」とは、あるエンティティーが発行したデジタル署名付きの文書で、別なエンティティーの公開鍵が特定の値であることを証明しています。 +ޥ˥եȥեǤϡSHA ȤͤϡեΥХʥǡΥ (ϥå) Ǥ.SF եǤϡեΥȤͤϡޥ˥եȥեγ륽եб 3 ԤΥϥåǤ .LP .LP -\f3jarsigner\fP は、「キーストア」に含まれる鍵と証明書情報を使って、JAR ファイルのデジタル署名を生成します。キーストアは、非公開鍵と、非公開鍵に関連付けられた X.509 証明書チェーンが収められたデータベースです。キーストアの作成と管理には、keytool(1) ユーティリティーを使います。 +̾եˤϡǥեȤǥޥ˥եȥեΤΥϥåޤޤƤޤҤΡJAR եθڡפ褦ˡΥإå¸ߤˤäƸڤκŬǽˤʤäƤޤ .LP +\f3֥̾åե\fP .LP -\f3jarsigner\fP は、エンティティーの非公開鍵を使って署名を生成します。署名付き JAR ファイルには、ファイルの署名に使用する非公開鍵に対応する公開鍵を保存するキーストアからとった証明書のコピーも含まれています。 \f3jarsigner\fP は、署名付き JAR ファイルのデジタル署名を、ファイル内 (の署名ブロックファイル) に含まれている証明書を使って検証することができます。 -.LP +.SF եˤϽ̾դ졢̾Ͻ֥̾åե֤ޤΥեˤϡȥξޤϾ沽줿ǴޤޤƤޤ ޤϾϡ̾˻Ȥ줿бǧڤޤեγĥҤϡѤȥ르ꥺ˱ .DSA.RSA.EC Τ줫ˤʤޤ +.SS +̾ॹ .LP -5.0 以降では、\f3jarsigner\fP はタイムスタンプを含む署名を生成するので、システムやデプロイヤ (Java Plug\-in を含む) はJAR ファイルが署名証明書の有効期間中に署名されたかどうかをチェックできます。さらに、5.0 で追加された API を使用して、アプリケーションはタイムスタンプ情報を取得できます。 .LP +\f2jarsigner\fP ġϡJAR եν̾˽̾ॹפ¸Ǥޤˡ \f2jarsigner\fP ؽ̾򥵥ݡȤޤưϾάǽǡ̾˼γƥץˤä椵ޤ .LP -現時点では、\f3jarsigner\fP で署名できるのは、JDK の jar(1) ツールで作成された JAR ファイル、または ZIP ファイルだけです。JAR ファイルは ZIP ファイルと同じですが、JAR ファイルには META\-INF/MANIFEST.MF ファイルが含まれている点が異なります。META\-INF/MANIFEST.MF ファイルは、\f3jarsigner\fP が ZIP ファイルに署名を付けるときに自動的に作成されます。 +.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 -デフォルトでは、\f3jarsigner\fP は JAR (または ZIP) ファイルに「署名」を付けます。署名付き JAR ファイルを「検証」する場合は、\f2\-verify\fP オプションを指定します。 +γƥץξܺ٤ˤĤƤϡҤΡ֥ץ򻲾ȤƤ .LP .SS -JDK 1.1 との互換性 +JAR եθ +.LP +.LP +JAR եθڤΤϡ̾ͭǤꡢĽ̾ʸ JAR եΤɤΥեѹƤʤǤJAR եθڤϡμǹԤޤ .LP .RS 3 +.TP 3 +1. +.SF ե뤽켫Τν̾򸡾ڤޤ +.LP +μǤϡƽ֥̾å (.DSA) ե˳ǼƤ̾ºݤˡбȤä줿ΤǤ뤳Ȥǧޤ .DSA եˤϡξ (ޤϾ) ޤޤƤޤޤμǤϡŪν̾б̾ (.SF) եͭʽ̾Ǥ뤫ɤĴ١.SF ե뤬ѤƤʤȤǧޤ +.TP 3 +2. +.SF եγƥȥΥȤޥ˥եбƥͤ碌Ƹڤޤ +.LP +.SF եˤϡޥ˥եȥեΤΥϥå夬Ǽ줿إåǥեȤǴޤޤƤޤΥإå¸ߤϡإåΥϥå夬ºݤ˥ޥ˥եȥեΥϥåȰפ뤫ɤ򸡾ڤ뤳ȤǤޤϥå夬פϡμ˿ʤߤޤ +.LP +ϥå夬פʤϡΨŪˤˡȤäƸڤԤޤŪˤϡ.SF եγƥե󥻥Υϥå夬ޥ˥եȥեб륻ΥϥåȰפ뤫ɤǧޤ (ֽ̾ (.SF) եפ򻲾) +.LP +.SF եΥإå˳Ǽ줿ޥ˥եȥեΥϥåȡºݤΥޥ˥եȥեΥϥåȤפʤϡ̾ ( .SF ե) ˡJAR ե 1 İʾΥե뤬ɲ \f2(jar ġ)\fP 줿ǽޤjar \f2ġ\fP Ȥäƥեɲä硢ޥ˥եȥեѹޤ (եѤΥɲä).SF եѹޤ󡣤ξ硢.SF եΥإåʳΥ˳Ǽ줿ϥå夬ޥ˥եȥեб륻ΥϥåȰפȤϡ̾ JAR ե¸ߤƤեΤɤΥեѹƤʤȤˤʤꡢڤΤȤưޤ +.TP 3 +3. +JAR եΥեΤ.SF ե˥ȥijƥեɤ߹ߤޤɤ߹˥եΥȤ׻̤ޥ˥եȥγեΥȤӤޤ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 -\f3keytool\fP ツールと \f3jarsigner\fP ツールは、JDK 1.1 で提供されていた \f3javakey\fP ツールを完全に置き換えるものです。これらの新しいツールは \f3javakey\fP よりも多くの機能を備えており、キーストアと非公開鍵をパスワードで保護する機能や、署名の生成に加えて署名を検証する機能を持っています。 +: JAR եǤϡJDK 1.1 \f3javakey\fP ġ줿̾ \f3jarsigner\fP 줿̾ߤǤޤĤޤꡢǤ \f3javakey\fP Ȥäƽ̾դƤ JAR եˡ\f3jarsigner\fP Ȥäƽ̾դ뤳ȤǤޤ .LP +.SH "ץ" .LP -新しいキーストアアーキテクチャーは、\f3javakey\fP が作成して管理していたアイデンティティーデータベースに代わるものです。キーストア形式と、JDK 1.1 の \f3javakey\fP が使っていたデータベース形式との間には下位互換性はありません。ただし、次のようなことは可能です。 +.LP +ʲǤϡ\f3jarsigner\fP ΥץˤĤޤ: .LP .RS 3 .TP 2 o -\f3keytool\fP の \f2\-identitydb\fP コマンドを使うと、アイデンティティーデータベースの情報をキーストアにインポートできます。 +ɤΥץ̾ˤƬ˥ޥʥ (\-) դ +.TP 2 +o +ץǤդνǻǤ .TP 2 o -\f3jarsigner\fP は、以前に \f3javakey\fP を使って署名された JAR ファイルに署名を付けることができます。 +åΤιܤμºݤ (ץ) ϡ桼ꤹɬפ .TP 2 o -\f3jarsigner\fP は、\f3javakey\fPを使って署名された JAR ファイルを検証できます。したがって、jarsigner は、Java 2 SDK のキーストアではなく JDK 1.1 のアイデンティティーデータベースからの署名者別名を認識し、これらを対象に処理を行うことができます。 +\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 ƥץѥƥˤäƷޤޤ .LP -次の表は、JDK 1.1.x で署名された JAR ファイルが、Java 2 プラットフォームでどのように扱われるかを示しています。 +̾ȤϥȥɬפǤ ΤᡢǥեȤΥȥ¸ߤʤ硢뤤ϥǥեȰʳΤۤΥȥѤϡȥŪ˻ꤹɬפޤ .LP +ڤȤϥȥɬפޤ󡣤ȥꤵƤ뤫뤤ϥǥեȤΥȥ¸ߤƤơ \f2\-verbose\fP ץꤵƤ硢JAR եθڤ˻Ѥ񤬤Υȥ 1 ĤǤޤޤƤ뤫ɤ˴ؤɲþ󤬽Ϥޤ .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 -.. +: \f2\-keystore\fP ΰˤϡURL ˥ե̾ (ȥѥ) Ǥޤ ե̾ (ȥѥ) ꤷϡfile:URL ȤưޤȤСΤ褦˻Ǥޤ .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 185 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 -.SS -キーストアの別名 -.LP -.RS 3 - -.LP -.LP -キーストアのすべてのエントリは、一意の「別名」を介してアクセスされます。 -.LP -.LP -\f3jarsigner\fP を使って JAR ファイルに署名を付けるときは、署名の生成に必要な非公開鍵を含むキーストアエントリの別名を指定する必要があります。たとえば、次の例は、working ディレクトリの mystore という名前のキーストアに含まれる別名 duke に関連付けられた非公開鍵を使って、MyJARFile.jar という名前の JAR ファイルに署名を付けます。出力ファイルは指定されていないので、MyJARFile.jar は署名付きの JAR ファイルによって上書きされます。 +\f3 +.fl + \-keystore \fP\f4filePathAndName\fP\f3 +.fl +\fP +.fi .LP +ϡλƱΤȤưޤ .nf \f3 .fl - jarsigner \-keystore /working/mystore \-storepass myspass -.fl - \-keypass dukekeypasswd MyJARFile.jar duke + \-keystore file:\fP\f4filePathAndName\fP\f3 .fl \fP .fi - -.LP -.LP -キーストアはパスワードで保護されているので、ストアのパスワード (上の例では mypass) を指定する必要があります。コマンド行でストアのパスワードを指定しないと、パスワードの入力を求められます。同様に、非公開鍵もキーストア内でパスワードによって保護されているため、非公開鍵のパスワード (上の例では dukekeypasswd) を指定する必要があります。 コマンド行で非公開鍵のパスワードを指定していない、また、指定したパスワートが保存されているパスワードと違っている場合には、非公開鍵のパスワードの入力を求められます。 .LP +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 -.SS -キーストアの場所 .LP -.RS 3 +ȤСΥޥɤϡꤵ줿 PKCS#11 ȡƤɽޤ +.nf +\f3 +.fl + jarsigner \-keystore NONE \-storetype PKCS11 \-list +.fl +.fl +\fP +.fi +.TP 3 +\-storetype storetype +󥹥󥹤륭ȥΥפꤷޤǥեȤΥȥפϡƥץѥƥե keystore.type ץѥƥͤǻꤵ줿פǤͤϡ \f2java.security.KeyStore\fP static getDefaultType ᥽å \f2ǼǤޤ\fP. .LP +\-storepass ץȤä PCKS#11 ȡ PIN \f2ꤹ뤳Ȥ\fP Ǥޤꤷʤä硢keytool jarsigner ϥ桼˥ȡ PIN Ϥޤȡݸ줿ǧڥѥ (Ѥ PIN ѥåɤɤ߼굡ʤ) 硢\f2\-protected\fP ץꤹɬפޤѥɥץꤹɬפϤޤ +.TP 3 +\-storepass[:env | :file] argument .LP -\f3jarsigner\fP には、使用するキーストアの URL を指定する \f2\-keystore\fP オプションがあります。キーストアは、デフォルトではユーザーのホームディレクトリの \f2.keystore\fP という名前のファイルに格納されます。 ユーザーのホームディレクトリは、\f2user.home\fP システムプロパティーによって決まります。Solaris システムの場合、\f2user.home\fP がデフォルトでユーザーのホームディレクトリになっています。 -.LP -.LP -\f2\-keystore\fP オプションからの入力ストリームは、\f2KeyStore.load\fP メソッドに渡されます。URL として \f2NONE\fP が指定されている場合は、null のストリームが \f2KeyStore.load\fP メソッドに渡されます。\f2NONE\fP は、\f2KeyStore\fP がファイルベースではなく、たとえば、ハードウェアトークンデバイスに置かれている場合に指定します。 -.LP -.RE -.SS -キーストアの実装 +ȥ˥ΤɬפʥѥɤꤷޤΥץɬפʤΤϡJAR ե˽̾դȤǤ (JAR ե򸡾ڤȤ)ξ硢 \f2\-storepass\fP ץ򥳥ޥɹԤǻꤷʤäϡѥɤϤޤ .LP + \f2env\fP ޤ \f2file\fP ꤵƤʤ硢ѥɤͤ \f2argument\fP ˤʤޤʳξ硢ѥɤϼΤ褦ˤƼޤ .RS 3 - -.LP +.TP 2 +o +\f2env\fP: \f2argument\fP Ȥ̾δĶѿѥɤ +.TP 2 +o +\f2file\fP: \f2argument\fP Ȥ̾Υե뤫ѥɤ +.RE .LP -\f2java.security\fP パッケージで提供される \f2KeyStore\fP クラスには、キーストア内の情報に対するアクセスと変更を行うための明確に定義されたインタフェースが用意されています。キーストアの固定実装としては、それぞれが特定の「タイプ」のキーストアを対象とする複数の異なる実装が存在可能です。 +: ƥȤŪȤ硢ޤϥƥݸ줿ƥѤƤʳϡޥɹԤ䥹ץȤǥѥɤꤷʤǤ +.TP 3 +\-keypass[:env | :file] argument .LP +ޥɹԤǻꤵ줿̾б륭ȥȥݸΤ˻Ȥѥɤꤷޤ\f3jarsigner\fP Ȥä JAR ե˽̾դȤϡѥɤɬפǤޥɹԤǥѥɤꤵƤ餺ɬפʥѥɤȥΥѥɤȰۤʤϡѥɤϤޤ .LP -現在、キーストアの実装を使用するものとして、\f3keytool\fP と \f3jarsigner\fP の 2 つのコマンド行ツールと、\f3Policy Tool\fP という名前の 1 つの GUI ベースのツールがあります。\f2KeyStore\fP は public として使用可能なので、Java 2 SDK ユーザーは KeyStore を使ったほかのセキュリティーアプリケーションも作成できます。 + \f2env\fP ޤ \f2file\fP ꤵƤʤ硢ѥɤͤ \f2argument\fP ˤʤޤʳξ硢ѥɤϼΤ褦ˤƼޤ +.RS 3 +.TP 2 +o +\f2env\fP: \f2argument\fP Ȥ̾δĶѿѥɤ +.TP 2 +o +\f2file\fP: \f2argument\fP Ȥ̾Υե뤫ѥɤ +.RE .LP +: ƥȤŪȤ硢ޤϥƥݸ줿ƥѤƤʳϡޥɹԤ䥹ץȤǥѥɤꤷʤǤ +.TP 3 +\-sigfile file +.SF ե .DSA ե˻Ȥ١ե̾ꤷޤȤС\f2file\fP DUKESIGN ꤹȡ .SF ե .DSA ե̾ϡ줾 DUKESIGN.SF DUKESIGN.DSA ˤʤޤ Υեϡ̾դ JAR ե META\-INF ǥ쥯ȥ֤ޤ .LP -キーストアには、Sun が提供する組み込みのデフォルトの実装があります。これは、JKS という名前の独自のキーストアタイプ (形式) を利用するもので、キーストアをファイルとして実装しています。この実装では、個々の非公開鍵は個別のパスワードによって保護され、キーストア全体の整合性も (非公開鍵とは別の) パスワードによって保護されます。 +\f2file\fP ˻ѤǤʸϡa\-zA\-Z0\-9_\-פǤĤޤꡢʸӥϥեѤǤޤ: .SF .DSA Υե̾ǤϡʸϤ٤ʸѴޤ .LP +\-sigfile \f2ץ\fP ꤷʤä硢.SF ե .DSA եΥ١ե̾ϡޥɹԤǻꤵ줿̾Ƭ 8 ʸ򤹤٤ʸѴΤˤʤޤ̾ 8 ʸ̤ξϡ̾Τޤ޻Ȥޤ̾ˡ̾ե̾˻ѤǤʤʸޤޤƤϡʸ (_) ֤ƥե̾ޤ +.TP 3 +\-sigalg algorithm +JAR եν̾˻Ѥ̾르ꥺ̾ꤷޤ .LP -キーストアの実装は、プロバイダベースです。具体的には、\f2KeyStore\fP が提供するアプリケーションインタフェースは、Service Provider Interface (SPI) という形で実装されています。つまり、対応する \f2KeystoreSpi\fP 抽象クラス (これも \f2java.security\fP パッケージに含まれている) があり、このクラスが Service Provider Interface のメソッドを定義しています。 これらのメソッドは、「プロバイダ」が実装しなければなりません。ここで、「プロバイダ」とは、Java Security API によってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。したがって、キーストアの実装を提供するには、 +ɸ̾르ꥺ̾ΰˤĤƤϡJava Cryptography Architectureפˤ .na -\f2「Java 暗号化アーキテクチャー用プロバイダの実装方法」\fP @ +\f2Appendix A \fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.htmlで説明しているように、クライアントが「プロバイダ」を実装し、KeystoreSpi サブクラスの実装を提供する必要があります。 -.LP -.LP -アプリケーションでは、\f2KeyStore\fP クラスが提供する getInstance ファクトリメソッドを使うことで、さまざまなプロバイダから異なる「タイプ」のキーストアの実装を選択できます。キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の非公開鍵とキーストア自体の整合性を保護するために使われるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。 -.LP -.LP -\f3keytool\fP は、任意のファイルベースのキーストア実装で動作します。keytool は、コマンド行から渡されたキーストアの場所をファイル名として扱い、これを FileInputStream に変換して、FileInputStream からキーストアの情報をロードします。一方、\f3jarsigner\fP ツールと \f3policytool\fP ツールは、URL で指定可能な任意の場所からキーストアを読み込むことができます。 +http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA򻲾ȤƤΥ르ꥺϡJAR եν̾˻Ѥ̩ȸߴΤΤǤʤФʤޤ󡣤Υץꤷʤä硢̩Υפ˱ SHA1withDSASHA256withRSASHA256withECDSA Τ줫Ѥޤꤵ줿르ꥺμ󶡤ץХŪ˥󥹥ȡ뤵Ƥ뤫뤤ϥ桼Τ褦ʥץХ \f2\-providerClass\fP ץȤäƻꤹɬפޤǤʤ硢ޥɤμ¹ԤԤޤ +.TP 3 +\-digestalg algorithm +JAR եΥȥȤݤ˻Ѥåȥ르ꥺ̾ꤷޤ .LP +ɸåȥ르ꥺ̾ΰˤĤƤϡJava Cryptography Architectureפˤ +.na +\f2Appendix A \fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA򻲾ȤƤΥץꤷʤä硢SHA256 Ѥޤꤵ줿르ꥺμ󶡤ץХŪ˥󥹥ȡ뤵Ƥ뤫뤤ϥ桼Τ褦ʥץХ \f2\-providerClass\fP ץȤäƻꤹɬפޤǤʤ硢ޥɤμ¹ԤԤޤ +.TP 3 +\-signedjar file +̾դ JAR ե̾ꤷޤ .LP -\f3jarsigner\fP と \f3keytool\fP の場合、\f2\-storetype\fP オプションを使ってコマンド行でキーストアのタイプを指定できます。\f3Policy Tool\fP の場合は、[Edit] メニューの [Change Keystore] コマンドを使ってキーストアのタイプを指定できます。 +ޥɹԤ̾ꤷʤäϡ JAR ե (̾оݤȤʤ JAR ե) ̾Ʊ̾Ȥޤ ξ硢 JAR եϽ̾դ JAR եˤäƾ񤭤ޤ +.TP 3 +\-verify +ޥɹԤǤΥץ󤬻ꤵƤϡꤵ줿 JAR ե뤬ڤޤ JAR եؤν̾ϹԤޤ󡣸ڤȡjar verified Ȥåɽޤ̾Ƥʤ JAR ե롢ޤϥݡȤƤʤ르ꥺ (RSA ץХΥ󥹥ȡλƤʤ RSA ʤ) Ȥäƽ̾줿 JAR ե򸡾ڤ褦Ȥȡjar is unsigned. (signatures missing or not parsable)פȤåɽޤ .LP +̾դ JAR եϡ\f3jarsigner\fP ޤ JDK 1.1 \f3javakey\fP ġ롢뤤ϤξȤäƸڤǤޤ .LP -キーストアのタイプを明示的に指定しない場合、keytool、jarsigner、および policytool の各ツールは、セキュリティープロパティーファイル内で指定された \f2keystore.type\fP プロパティーの値に基づいてキーストアの実装を選択します。セキュリティープロパティーファイルは、\f2java.security\fP という名前で SDK セキュリティープロパティーディレクトリ \f2java.home\fP/lib/security に置かれています。 \f2java.home\fP は、実行環境のディレクトリ (SDK の \f2jre\fP ディレクトリまたは Java 2 Runtime Environment の最上位のディレクトリ) です。 +ڤˤĤƤξܺ٤ϡJAR եθڡפ򻲾ȤƤ +.TP 3 +\-certs +ޥɹԤǡ \f2\-verify\fP \f2\-verbose\fP ץȤȤˤΥץꤷ硢JAR եγƽ̾Ԥξ󤬽Ϥ˴ޤޤޤˤϼΤΤޤޤޤ +.RS 3 +.TP 2 +o +̾Ԥθ (.DSA ե˳Ǽ줿) μ̾ +.TP 2 +o + X. (Ĥޤꡢ \f2java.security.cert.X509Certificate\fP Υ󥹥) Ǥϡ̾Ԥμ̾ +.RE .LP +ȥγǧԤޤޥɹԤǥȥͤꤵƤʤ硢ǥեȤΥȥե뤬Сޤ̾Ԥθξ񤬥ȥΥȥȰפϡξɽޤ +.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 ե (̾ե) ˤϡޥ˥եȥեΤΥϥåޤإåɲäޤ󡣤ξ硢.SF ե˴ޤޤΤϡJAR եγƥե˴ؤ󤪤ӥϥåǤܺ٤ϡֽ̾ (.SF) եפ򻲾ȤƤ .LP -各ツールは、\f2keystore.type\fP の値を取得し、この値で指定されたタイプのキーストアを実装しているプロバイダが見つかるまで、現在インストールされているすべてのプロバイダを調べます。目的のプロバイダが見つかると、そのプロバイダからのキーストアの実装を使います。 +ǥեȤǤϡŬԤˡޥ˥եȥեΤΥϥåޤإåɲäޤإå¸ߤϡJAR եθڻˡޤإåΥϥå夬ޥ˥եȥեΤΥϥåȼºݤ˰פ뤫ɤǧޤϥå夬פ硢ڤϼμ˿ʤߤޤϥå夬פʤϡΨŪˤˡȤäƸڤԤޤ Ūˤϡ.SF եγƥե󥻥Υϥå夬ޥ˥եȥեб륻ΥϥåȰפ뤫ɤǧޤ .LP +ܺ٤ϡJAR եθڡפ򻲾ȤƤ .LP -\f2KeyStore\fP クラスでは \f2getDefaultType\fP という名前の static メソッドが定義されており、アプリケーションとアプレットはこのメソッドを使うことで \f2keystore.type\fP プロパティーの値を取得できます。次のコードは、デフォルトのキーストアタイプ (\f2keystore.type\fP プロパティーで指定されたタイプ) のインスタンスを生成します。 +\f3ΥץϡƥȤԤˤǤʳˤϻѤʤǤ ΥץѤȡͭפʺŬԤʤʤޤ\fP +.TP 3 +\-protected +\f2true\fP ޤ \f2false\fP PIN ꡼ʤɤݸ줿ǧڥѥ𤷤ƥѥɤꤹɬפˤϡͤ \f2true\fP ˻ꤷƤ +.TP 3 +\-providerClass provider\-class\-name +ӥץХƥץѥƥե (\f2java.security\fP) ΥꥹȤäƤʤȤˡŹ沽ӥץХΥޥ饹ե̾ꤷޤ .LP +\f2\-providerArg\fP \f2ConfigFilePath\fP ץȤ߹碌ƻѤޤkeytool jarsigner ϥץХưŪ˥󥹥ȡ뤷ޤ (ǡ\f2ConfigFilePath\fP ϥȡեؤΥѥǤ)ƥץѥƥե Sun PKCS#11 ץХꤵƤʤ PKCS#11 ȥɽ륳ޥɤ򼡤˼ޤ .nf \f3 .fl - KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); +jarsigner \-keystore NONE \-storetype PKCS11 \\ .fl -\fP -.fi - -.LP -.LP -デフォルトのキーストアタイプは JKS (Sun が提供する独自のタイプのキーストアの実装) です。これは、セキュリティープロパティーファイル内の次の行によって指定されています。 -.LP -.nf -\f3 + \-providerClass sun.security.pkcs11.SunPKCS11 \\ .fl - keystore.type=jks + \-providerArg /foo/bar/token.config \\ +.fl + \-list .fl \fP .fi - -.LP -.LP -注:キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、JKS と jks は同じものとして扱われます。 -.LP -.LP -各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。たとえば、pkcs12 と呼ばれるタイプのキーストアの実装を提供しているプロバイダパッケージを使用するには、上の行を次のように変更します。 +.TP 3 +\-providerName providerName +\f2java.security\fP ƥץѥƥե 2 İʾΥץХꤵƤ硢\f2\-providerName\fP ץȤäΥץХ󥹥󥹤ǤޤΥץΰϡץХ̾Ǥ .LP +Sun PKCS#11 ץХξ硢\f2providerName\fP \f2SunPKCS11\-\fP\f2TokenName\fP Ȥˤʤޤ ǡ\f2TokenName\fPפϡץХ󥹥󥹤줿̾Ǥ ܺ٤ +.na +\f2°ɽ\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#ATTRS򻲾ȤƤȤСʲΥޥɤǤϡ̾ \f2SmartCard\fP PKCS#11 ȥץХ󥹥󥹤ƤꥹȤޤ .nf \f3 .fl - keystore.type=pkcs12 +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 ȥޥɹԤϤޤ .LP +.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 θ򥭡ȥ֤ɬפϤޤ .LP -PKCS#11 プロバイダパッケージを使用する場合、その詳細については、「Java PKCS#11 Reference Guide」にある +ॹפ뤿ˡ \f2jarsigner\fP ϡ .na -\f2「KeyTool and JarSigner」\fP @ +\f2RFC 3161\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#KeyToolJarSignerの節を参照してください。 +http://www.ietf.org/rfc/rfc3161.txt Ƥ ॹץץȥ (TSP) Ѥ TSA ̿ޤȡTSA ֤줿ॹץȡϽ֥̾åեν̾ȤȤ¸ޤ .LP -.RE -.RE -.SS -サポートされるアルゴリズム +.TP 3 +\-tsacert alias +\f2\-tsacert alias\fP JAR եν̾˥ޥɹԤɽ硢̾Υॹפޤ \f2alias\fP ϡȥθͭ TSA θꤷޤȥξǡTSA ξꤹ URL ޤ Subject Information Access ĥǽǧޤ .LP -.RS 3 - +TSA θϡ \f2\-tsacert Ȥä硢ȥ֤Ƥɬפޤ\fP. .LP +.TP 3 +\-altsigner class +ؽ̾Ѥ뤳Ȥꤷޤ饹̾ϡcom.sun.jarsigner.ContentSigner ݥ饹ĥ륯饹ե \f2ꤷޤ\fP. Υ饹եؤΥѥϡ \f2\-altsignerpath\fP ץˤäޤ \f2\-altsigner\fP ץ󤬻Ѥȡ \f2jarsigner\fP ϡꤵ줿饹󶡤̾ѤޤǤʤ硢 \f2jarsigner\fP ϥǥեȤν̾Ѥޤ .LP -デフォルトでは、\f3jarsigner\fP は次のどちらかのアルゴリズムを使って JAR ファイルに署名します。 +ȤС \f2com.sun.sun.jarsigner.AuthSigner\fP Ȥ̾Υ饹󶡤̾Ѥˤϡ \f2jarsigner\fP ץ \f2\-altsigner com.sun.jarsigner.AuthSignerפѤޤ\fP .LP -.RS 3 -.TP 2 -o -SHA\-1 ダイジェストアルゴリズムを使った DSA (デジタル署名アルゴリズム) -.TP 2 -o -MD5 ダイジェストアルゴリズムを使った RSA アルゴリズム -.RE - +.TP 3 +\-altsignerpath classpathlist +饹ե (Υ饹ե̾Ҥ \f2\-altsigner\fP ץǻꤵ) ӤΥ饹¸뤹٤Ƥ JAR եؤΥѥꤷޤ饹ե뤬 JAR եˤ硢ʲΤ褦 JAR եؤΥѥꤵޤ .LP +ХѥޤϸߤΥǥ쥯ȥ꤫ХѥǤޤ \f2classpathlist\fP ʣΥѥ JAR ե뤬ޤޤˤϡ Solaris ξϥ (\f2:\fP) ǡWindows ξϥߥ (\f2;\fP) Ǥ줾ڤޤŪΥ饹Ǥ˸ѥˤϡΥץפǤ .LP -具体的には、署名者の公開鍵と非公開鍵が DSA 鍵である場合、\f3jarsigner\fP は SHA1withDSA アルゴリズムを使って JAR ファイルに署名を付けます。署名者の鍵が RSA 鍵である場合、\f3jarsigner\fP は MD5withRSA アルゴリズムを使って JAR ファイルに署名を付けます。 +饹եޤࡢJAR եؤΥѥꤹ򼨤ޤ +.nf +\f3 +.fl +\-altsignerpath /home/user/lib/authsigner.jar +.fl +\fP +.fi .LP +JAR ե̾ޤޤƤ뤳ȤդƤ .LP -これらのデフォルトの署名アルゴリズムは、\f2\-sigalg\fP オプションを使ってオーバーライドできます。 +饹եޤ JAR եؤΥѥꤹ򼨤ޤ +.nf +\f3 +.fl +\-altsignerpath /home/user/classes/com/sun/tools/jarsigner/ +.fl +\fP +.fi .LP +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 -.SS -署名付き JAR ファイル -.LP -.RS 3 .LP +.SH "" .LP -\f3jarsigner\fP を使って JAR ファイルに署名を付けた場合、出力される署名付き JAR ファイルは入力 JAR ファイルと同じですが、次の 2 つの追加ファイルが META\-INF ディレクトリに置かれる点が異なります。 -.LP -.RS 3 -.TP 2 -o -.SF 拡張子の付いた署名ファイル -.TP 2 -o -.DSA 拡張子の付いた署名ブロックファイル -.RE - +.SS +JAR եν̾ .LP .LP -これら 2 つのファイルのベースファイル名は、\f2\-sigFile\fP オプションの値から作成されます。たとえば、次のようにオプションを指定したとします。 +bundle.jar Ȥ̾ JAR ե뤬ȤޤΥեˡȥ̾ jane Ǥ桼Ȥäơ̾դȤޤȥϡmystore Ȥ̾ǡC ɥ饤֤ working ǥ쥯ȥˤꡢȥΥѥɤ mypass\f2jane\fP Υѥɤ j638klm Ȥޤξ硢Υޥɤ¹ԤȡJAR ե˽̾դ sbundle.jar Ȥ̾դ JAR եǤޤ .LP .nf \f3 .fl - \-sigFile MKSIGN + jarsigner \-keystore /working/mystore \-storepass myspass +.fl + \-keypass j638klm \-signedjar sbundle.jar bundle.jar jane .fl \fP .fi .LP .LP -この場合、ファイル名はそれぞれ MKSIGN.SF と MKSIGN.DSA になります。 +ΥޥɤǤ \f2\-sigfile\fP ꤵƤʤᡢ̾դ JAR ե˳Ǽ .SF ե .DSA ե̾ϡ̾ǥե̾ĤޤĤޤꡢ̾ \f2JANE.SF\fP \f2JANE.DSA\fP ˤʤޤ .LP .LP -コマンド行で \f2\-sigfile\fP オプションを指定しなかった場合、.SF ファイルと .DSA ファイルのベースファイル名は、コマンド行で指定された別名の先頭の 8 文字をすべて大文字に変換したものになります。別名が 8 文字未満の場合は、別名がそのまま使われます。別名の中に、署名ファイル名に使用できない文字が含まれている場合は、該当する文字を下線 (_) に置き換えてファイル名が作成されます。使用できる文字は、アルファベット、数字、下線 (_)、ハイフンです。 +ȥΥѥɤΥѥɤ򤢤ȤϤϡΥޥɤṳ̂ƼΤ褦ϤǤޤ .LP -\f3署名 (.SF) ファイル\fP -.LP -.RS 3 +.nf +\f3 +.fl + jarsigner \-keystore /working/mystore +.fl + \-signedjar sbundle.jar bundle.jar jane +.fl +\fP +.fi .LP .LP -署名ファイル (.SF ファイル) は、\f3jarsigner\fP で署名を付けた JAR ファイルに常に含まれるマニフェストファイルと似ています。つまり、マニフェストファイル同様、.SF ファイルには、JAR ファイルに含まれているソースファイルごとに、次の 3 つの行があります。 +ǥեȤΥȥ (ۡǥ쥯ȥ .keystore Ȥ̾Υȥ) Ѥϡ˼褦ˡȥλάǤޤ .LP -.RS 3 -.TP 2 -o -ファイル名 -.TP 2 -o -使われているダイジェストアルゴリズム (SHA) の名前 -.TP 2 -o -SHA ダイジェストの値 -.RE +.nf +\f3 +.fl + jarsigner \-signedjar sbundle.jar bundle.jar jane +.fl +\fP +.fi .LP .LP -マニフェストファイルでは、SHA ダイジェストの値は、ソースファイルのバイナリデータのダイジェスト (ハッシュ) です。一方、.SF ファイルでは、ソースファイルのダイジェストの値は、マニフェストファイル中の該当するソースファイルに対応する 3 行のハッシュです。 +Ǹˡ JAR ե (\f2bundle.jar\fP) ̾դ JAR եñ˾񤭤ϡΤ褦 \f2\-signedjar\fP ץꤹɬפϤޤ .LP -.LP -署名ファイルには、デフォルトでマニフェストファイル全体のハッシュも含まれています。後述の「JAR ファイルの検証」で説明するように、このヘッダーの存在によって検証の最適化が可能になっています。 -.LP -.RE -\f3署名ブロック (.DSA) ファイル\fP -.LP -.RS 3 +.nf +\f3 +.fl + jarsigner bundle.jar jane +.fl +\fP +.fi .LP -.LP -.SF ファイルには署名が付けられ、署名は .DSA ファイルに置かれます。.DSA ファイルには、キーストアからの証明書または証明書チェーンも符号化された形で含まれています。 証明書または証明書チェーンは、署名に使われた非公開鍵に対応する公開鍵を認証します。 -.LP -.RE -.RE .SS -署名タイムスタンプ -.LP -.RS 3 - -.LP -.LP -J2SE 5.0 リリースの \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 - +̾դ JAR եθ .LP .LP -これらの各オプションの詳細については、後述の「オプション」節を参照してください。 +˼Τϡ̾դ JAR ե򸡾ڤ̾ͭ JAR ե뤬ѤƤʤȤǧ뤿ΥޥǤ .LP -.RE -.SS -JAR ファイルの検証 -.LP -.RS 3 +.nf +\f3 +.fl + jarsigner \-verify sbundle.jar +.fl +\fP +.fi .LP .LP -JAR ファイルの検証が成功するのは、署名が有効であり、かつ署名の生成以後に JAR ファイル内のどのファイルも変更されていない場合です。JAR ファイルの検証は、次の手順で行われます。 -.LP -.RS 3 -.TP 3 -1. -.SF ファイルそれ自体の署名を検証します。 -.LP -この手順では、各署名ブロック (.DSA) ファイルに格納されている署名が、実際に、公開鍵に対応する非公開鍵を使って生成されたものであることを確認します。 .DSA ファイルには、公開鍵の証明書 (または証明書チェーン) も含まれています。また、この手順では、目的の署名が、対応する署名 (.SF) ファイル内の有効な署名であるかどうかを調べ、.SF ファイルが改変されていないことも確認します。 -.TP 3 -2. -.SF ファイル内の各エントリのダイジェストをマニフェスト内の対応する各セクションと突き合わせて検証します。 -.LP -.SF ファイルには、マニフェストファイル全体のハッシュが格納されたヘッダーがデフォルトで含まれています。このヘッダーが存在する場合は、ヘッダー内のハッシュが実際にマニフェストファイルのハッシュと一致するかどうかを検証することができます。ハッシュが一致する場合は、次の手順に進みます。 +ڤȡΤ褦ʥåɽޤ .LP -ハッシュが一致しない場合は、効率的には劣る方法を使って検証を行います。 具体的には、.SF ファイル内の各ソースファイル情報セクションのハッシュが、マニフェストファイル内の対応するセクションのハッシュと一致するかどうかを確認します (「署名 (.SF) ファイル」を参照)。 -.LP -.SF ファイルのヘッダーに格納されたマニフェストファイルのハッシュと、実際のマニフェストファイルのハッシュとが一致しない場合は、署名 (および .SF ファイル) の生成後に、JAR ファイルに 1 つ以上のファイルが追加 (\f2jar\fP ツールを使用) された可能性があります。\f2jar\fP ツールを使ってファイルを追加した場合、マニフェストファイルは変更されますが (新しいファイル用のセクションが追加される)、.SF ファイルは変更されません。この場合、.SF ファイルのヘッダー以外のセクションに格納されたハッシュが、マニフェストファイル内の対応するセクションのハッシュと一致するときは、署名の生成時に JAR ファイル内に存在していたファイルのうち、どのファイルも変更されていないことになり、検証は成功したものとして扱われます。 -.TP 3 -3. -JAR ファイル内のファイルのうち、.SF ファイル内にエントリを持つ各ファイルを読み込みます。読み込み中にファイルのダイジェストを計算し、結果をマニフェストセクション内の該当するファイルのダイジェストと比較します。2 つのダイジェストは同じでなければならず、そうでない場合は検証が失敗します。 -.RE +.nf +\f3 +.fl + jar verified. +.fl +\fP +.fi .LP .LP -検証プロセスの途中でなんらかの重大な検証エラーが発生した場合、検証プロセスは中止され、セキュリティー例外がスローされます。スローされたセキュリティー例外は、\f3jarsigner\fP がキャッチして表示します。 -.LP -.RE -.SS -1 つの JAR ファイルを対象とする複数の署名 -.LP -.RS 3 - +ȤץץȤɽޤڤʤäϡ顼åɽޤ .LP .LP -1 つの JAR ファイルに対して \f3jarsigner\fP ツールを複数回実行し、実行のたびに、異なるユーザーの別名を指定すれば、JAR ファイルに複数のユーザーの署名を付けることができます。 +\-verbose ץȤȡ \f2¿ξ\fP ɽޤ\-verbose ץդ \f3jarsigner\fP \f2ѤȤν\fP ˼ޤ .LP .nf \f3 .fl - jarsigner myBundle.jar susan + jarsigner \-verify \-verbose sbundle.jar .fl - jarsigner myBundle.jar kevin + +.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 = ̾ڤޤ +.fl + m = ޥ˥եȤ˥ȥ꤬ܤƤޤ +.fl + k = ȥ 1 İʾξ񤬸Ĥޤ +.fl + +.fl + JAR ڤޤ .fl \fP .fi +.LP +.SS +Ȥä .LP .LP -JAR ファイルが複数回署名されている場合、その JAR ファイルには .SF ファイルと .DSA ファイルの対が複数含まれることになります。 .SF ファイルと .DSA ファイルの対は、1 回の署名に対して 1 つ作成されます。したがって、上の例で出力される JAR ファイルには、次の名前を持つファイルが含まれます。 +ڻ \-verify \-verbose ץ˲ä \f2\-certs\fP ץꤷϡ JAR եγƽ̾ԤξϤޤˤϡ񥿥ס̾Լ̾ (X.509 ξΤ) JAR եθξ񤬥ȥȥξ˰פˤϡ̤ǰϤޤ줿̾ԤΥȥ̾ޤޤޤ򼨤ޤ .LP .nf \f3 .fl - SUSAN.SF + jarsigner \-keystore /working/mystore \-verify \-verbose \-certs myTest.jar .fl - SUSAN.DSA + .fl - KEVIN.SF + 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST.MF .fl - KEVIN.DSA + 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 = ̾ڤޤ +.fl + m = ޥ˥եȤ˥ȥ꤬ܤƤޤ +.fl + k = ȥ 1 İʾξ񤬸Ĥޤ +.fl + +.fl + JAR ڤޤ .fl \fP .fi .LP .LP -注:JAR ファイルでは、JDK 1.1 の \f3javakey\fP ツールで生成された署名と \f3jarsigner\fP で生成された署名が混在できます。つまり、すでに \f3javakey\fP を使って署名が付けられている JAR ファイルに、\f3jarsigner\fP を使って署名を付けることができます。 -.LP -.RE -.SH "オプション" +̾Ԥξ X.509 Ǥʤϡ̾ɽޤ󡣤ξˤϡΥפ̾ɽޤȤС PGP ǡ̾ bob ξϡΤ褦ɽޤ .LP +.nf +\f3 +.fl + PGP, (bob) +.fl +\fP +.fi .LP +.SS +ǥƥƥǡ١ν̾Ԥޤ JAR եθ .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 システムプロパティーによって決まります。 +JAR ե뤬JDK 1.1 \f3javakey\fP ġȤäƽ̾Ƥ硢̾Ԥϥǥƥƥǡ١̾Ǥξ硢ڤνϤˤ i Ȥ椬ޤޤޤJAR ե뤬ǥƥƥǡ١̾ȥȥ̾ξˤäƽ̾Ƥϡk i ξɽޤ .LP -署名するときはキーストアが必要です。 このため、デフォルトのキーストアが存在しない場合、あるいはデフォルト以外のほかのキーストアを使用する場合は、キーストアを明示的に指定する必要があります。 .LP -検証するときはキーストアは必要ありません。 ただし、キーストアが指定されているか、あるいはデフォルトのキーストアが存在していて、さらに \f2\-verbose\fP オプションも指定されている場合は、JAR ファイルの検証に使われる証明書がキーストアに存在するかどうかについての追加情報が出力されます。 +\f2\-certs\fP ץꤷ硢ȥ̾ϳ̤ǰϤޤΤФǥƥƥǡ١̾ϳѳ̤ǰϤޤɽޤȤС .LP -注:\f2\-keystore\fP の引数には、URL の代わりにファイル名 (とパス) を指定できます。 ファイル名 (とパス) を指定した場合は、「file:」URL として扱われます。たとえば、次のように指定できます。 .nf \f3 .fl - \-keystore \fP\f4filePathAndName\fP\f3 + jarsigner \-keystore /working/mystore \-verify \-verbose \-certs writeFile.jar .fl -\fP -.fi -これは、次の指定と同じものとして扱われます。 -.nf -\f3 + .fl - \-keystore file:\fP\f4filePathAndName\fP\f3 + 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 = ̾ڤޤ +.fl + m = ޥ˥եȤ˥ȥ꤬ܤƤޤ +.fl + k = ȥ 1 İʾξ񤬸Ĥޤ +.fl + i = ǥƥƥפ 1 İʾξ񤬸Ĥޤ +.fl + +.fl + JAR ڤޤ .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 トークンの内容を一覧表示します。 -.RS 3 .LP +.LP +̾ duke ϳѳ̤ǰϤޤƤΤǡ̾ϥȥ̾ǤϤʤǥƥƥǡ١̾Ǥ +.LP +.SH "ٹ" +.LP +̾/ڽˤϡjarsigner 餵ޤޤʷٹɽǽޤηٹ𥳡ɤϼΤ褦Ƥޤ .nf \f3 .fl - jarsigner \-keystore NONE \-storetype PKCS11 \-list + hasExpiringCert 2 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ 6 ˴ڤˤʤޤ +.fl + +.fl + hasExpiredCert 4 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ񤬴ڤˤʤäƤޤ +.fl + +.fl + notYetValidCert 4 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ񤬤ޤͭˤʤäƤޤ +.fl + +.fl + chainNotValidated 4 +.fl + JAR ˴ޤޤ륨ȥξθڤԤޤ +.fl + +.fl + badKeyUsa ge 8 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ KeyUsage ĥɤν̾ĤƤޤ +.fl + +.fl + badExtendedKeyUsage 8 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ ExtendedKeyUsage ĥ +.fl + ɤν̾ĤƤޤ +.fl + +.fl + badNetscapeCertType 8 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ NetscapeCertType ĥ +.fl + ɤν̾ĤƤޤ +.fl + +.fl + hasUnsignedEntry 16 +.fl + JAR ˤϡåԤƤʤ̾ʤȥ꤬ޤޤƤޤ +.fl + +.fl + notSignedByAlias 32 +.fl + JAR ˤϡꤵ줿̾ˤäƽ̾Ƥʤ̾դȥ꤬ޤޤƤޤ +.fl + +.fl + aliasNotInStore 32 .fl - + JAR ˤϡΥȥ̾ˤäƽ̾Ƥʤ̾դȥ꤬ޤޤƤޤ +.fl + .fl \fP .fi -.RE -.TP 3 -\-storetype storetype -インスタンスを生成するキーストアのタイプを指定します。デフォルトのキーストアタイプは、セキュリティープロパティーファイル内の keystore.type プロパティーの値で指定されたタイプです。 この値は、\f2java.security.KeyStore\fP の static \f2getDefaultType\fP メソッドで取得できます。 -.LP -\f2\-storepass\fP オプションを使って PCKS#11 トークンの PIN を指定することもできます。何も指定しなかった場合、keytool と jarsigner はユーザーにトークン PIN の 入力を求めます。トークンに保護された認証パス (専用の PIN パッドや生体読み取り機など) がある場合、\f2\-protected\fP オプションを指定する必要がありますが、パスワードオプションを指定する必要はありません。 -.TP 3 -\-storepass password -キーストアにアクセスするのに必要なパスワードを指定します。このオプションが必要なのは、JAR ファイルに署名を付けるときだけです (JAR ファイルを検証するときは不要)。署名を付けるときに、コマンド行で \f2\-storepass\fP オプションを指定しなかった場合は、パスワードの入力を求められます。 -.LP -注:テストを目的とする場合、またはセキュリティー保護されたシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。また、password プロンプトでパスワードを入力すると、入力したパスワードがエコーされ、そのまま画面に表示されます。 このため、周囲にほかのユーザーがいる場合は、パスワードを見られないように注意してください。 -.TP 3 -\-keypass password -コマンド行で指定された別名に対応するキーストアエントリの非公開鍵を保護するのに使うパスワードを指定します。\f3jarsigner\fP を使って JAR ファイルに署名を付けるときは、パスワードが必要です。コマンド行でパスワードが指定されておらず、必要なパスワードがストアのパスワードと異なる場合は、パスワードの入力を求められます。 + .LP -注:テストを目的とする場合、またはセキュリティー保護されたシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。また、password プロンプトでパスワードを入力すると、入力したパスワードがエコーされ、そのまま画面に表示されます。 このため、周囲にほかのユーザーがいる場合は、パスワードを見られないように注意してください。 -.TP 3 -\-sigfile file -.SF ファイルと .DSA ファイルの生成に使うベースファイル名を指定します。たとえば、\f2file\fP に DUKESIGN を指定すると、生成される .SF ファイルと .DSA ファイルの名前は、それぞれ DUKESIGN.SF と DUKESIGN.DSA になります。 これらのファイルは、署名付き JAR ファイルの META\-INF ディレクトリに置かれます。 .LP -\f2file\fP に使用できる文字は「a\-zA\-Z0\-9_\-」です。つまり、文字、数字、下線、およびハイフンだけを使用できます。注:.SF および .DSA のファイル名では、小文字はすべて大文字に変換されます。 +\f2\-strict\fP ץꤷ硢Ф줿ٹ OR äͤġνλɤȤ֤ޤȤСȥν̾˻Ѥ񤬴ڤˤʤäƤơĤξ keyUsage ĥǥեν̾ĤƤʤ硢λ 12 (=4+8) ֤ޤ .LP -コマンド行で \f2\-sigfile\fP オプションを指定しなかった場合、.SF ファイルと .DSA ファイルのベースファイル名は、コマンド行で指定された別名の先頭の 8 文字をすべて大文字に変換したものになります。別名が 8 文字未満の場合は、別名がそのまま使われます。別名の中に、署名ファイル名に使用できない文字が含まれている場合は、該当する文字を下線 (_) に置き換えてファイル名が作成されます。 -.TP 3 -\-sigalg algorithm -.RS 3 - .LP -JAR ファイルの署名に使用する署名アルゴリズムの名前を指定します。 +\f3\fP: UNIX ǻѲǽͤ 0 255 Ǥ뤿ᡢλɤϺѤޤˤƤ⡢̾/ڽԤȡνλɤ֤ޤ .LP -標準署名アルゴリズム名の一覧については、「Java Cryptography Architecture」にある -.na -\f2「Appendix A 」\fP @ +.nf +\f3 +.fl +failure 1 +.fl +\fP .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。このアルゴリズムは、JAR ファイルの署名に使用する秘密鍵と互換性のあるものでなければなりません。このオプションを指定しなかった場合、秘密鍵のタイプに応じて SHA1withDSA、MD5withRSA のいずれかが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、あるいはユーザーがそのようなプロバイダを \f2\-providerClass\fP オプションを使って指定する必要があります。 そうでない場合、コマンドの実行が失敗します。 + .LP -.RE -.TP 3 -\-digestalg algorithm -.RS 3 -JAR ファイルのエントリをダイジェストする際に使用するメッセージダイジェストアルゴリズムの名前を指定します。 +.SS +JDK 1.1 Ȥθߴ .LP -標準メッセージダイジェストアルゴリズム名の一覧については、「Java Cryptography Architecture」にある -.na -\f2「Appendix A 」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。このオプションを指定しなかった場合、SHA\-1 が使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、あるいはユーザーがそのようなプロバイダを \f2\-providerClass\fP オプションを使って指定する必要があります。 そうでない場合、コマンドの実行が失敗します。 .LP -.RE -.TP 3 -\-signedjar file -署名付き JAR ファイルの名前を指定します。 +\f3keytool\fP ġ \f3jarsigner\fP ġϡJDK 1.1 󶡤Ƥ \f3javakey\fP ġ֤ΤǤοġϡȥѥɤݸ뵡ǽ䡢̾˲äƽ̾򸡾ڤ뵡ǽʤɡ\f3javakey\fP ¿ΤǽƤޤ .LP -コマンド行で名前を指定しなかった場合は、入力 JAR ファイル (署名の対象となる JAR ファイル) の名前と同じ名前が使われます。 この場合、入力 JAR ファイルは署名付き JAR ファイルによって上書きされます。 -.TP 3 -\-verify -コマンド行でこのオプションが指定されている場合は、指定された JAR ファイルが検証されます。JAR ファイルへの署名は行われません。 検証が成功すると、「jar が検証されました。」 というメッセージが表示されます。署名されていない JAR ファイル、またはサポートされていないアルゴリズム (RSA プロバイダのインストールを終了していない場合の RSA など) を使って署名された JAR ファイルを検証しようとすると、「jar は署名されていません。(署名が見つからないか、構文解析できません)」というメッセージが表示されます。 .LP -署名付き JAR ファイルは、\f3jarsigner\fP または JDK 1.1 の \f3javakey\fP ツール、あるいはその両方を使って検証できます。 +ȥƥ㡼ϡ\f3javakey\fP ƴƤǥƥƥǡ١ΤǤȥȡJDK 1.1 \f3javakey\fP ȤäƤǡ١Ȥδ֤ˤϲ̸ߴϤޤ󡣤ΤȤϲǽǤ .LP -検証についての詳細は、「JAR ファイルの検証」を参照してください。 -.TP 3 -\-certs -コマンド行で、\f2\-verify\fP および \f2\-verbose\fP オプションとともにこのオプションが指定されている場合は、JAR ファイルの各署名者の証明書情報も出力されます。証明書情報には次のものが含まれます。 .RS 3 .TP 2 o -署名者の公開鍵を証明する (.DSA ファイルに格納された) 証明書の種類の名前 +\f3keytool\fP \f2\-identitydb\fP ޥɤȤȡǥƥƥǡ١ξ򥭡ȥ˥ݡȤǤޤ .TP 2 o -証明書が X.509 証明書 (つまり、\f2java.security.cert.X509Certificate\fP のインスタンス) である場合は、署名者の識別名 -.RE -.LP -キーストアの確認も行われます。コマンド行でキーストアの値が指定されていない場合、デフォルトのキーストアファイルがあれば、検査されます。署名者の公開鍵の証明書がキーストア内のエントリと一致した場合は、次の情報も表示されます。 -.RS 3 +\f3jarsigner\fP ϡ \f3javakey\fP Ȥäƽ̾줿 JAR ե˽̾դ뤳ȤǤޤ .TP 2 o -署名者に該当するキーストアエントリの別名。 この別名は括弧で囲まれます。ただし、キーストアではなく JDK 1.1 のアイデンティティーデータベースに由来する署名者の場合は、括弧ではなく大括弧で囲まれます。 +\f3jarsigner\fP ϡ\f3javakey\fPȤäƽ̾줿 JAR ե򸡾ڤǤޤäơjarsigner ϡJava 2 SDK ΥȥǤϤʤ JDK 1.1 Υǥƥƥǡ١ν̾̾ǧоݤ˽ԤȤǤޤ .RE -.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 ファイル (署名ファイル) には、マニフェストファイル全体のハッシュを含むヘッダーは追加されません。この場合、.SF ファイルに含まれるのは、JAR ファイル内の各ソースファイルに関する情報およびハッシュだけです。 詳細は、「署名 (.SF) ファイル」を参照してください。 -.LP -デフォルトでは、最適化を行うために、マニフェストファイル全体のハッシュを含むヘッダーが追加されます。ヘッダーが存在する場合は、JAR ファイルの検証時に、まずヘッダー内のハッシュが、マニフェストファイル全体のハッシュと実際に一致するかどうかが確認されます。ハッシュが一致する場合、検証は次の手順に進みます。ハッシュが一致しない場合は、効率的には劣る方法を使って検証を行います。 具体的には、.SF ファイル内の各ソースファイル情報セクションのハッシュが、マニフェストファイル内の対応するセクションのハッシュと一致するかどうかを確認します。 + .LP -詳細は、「JAR ファイルの検証」を参照してください。 .LP -\f3このオプションは、テストを行う場合には便利ですが、それ以外には使用しないでください。 このオプションを使用すると、有益な最適化が行われなくなります。\fP -.TP 3 -\-protected -\f2true\fP または \f2false\fP のいずれか。専用 PIN リーダーなどの保護された認証パスを介してパスワードを指定する必要がある場合には、この値に \f2true\fP を指定してください。 -.RE -.RS 3 -.TP 3 -\-provider provider\-class\-name -サービスプロバイダがセキュリティープロパティーファイル (\f2java.security\fP) のリストに入っていないときに、暗号化サービスプロバイダのマスタークラスファイルの名前を指定します。 +ɽϡJDK 1.1.x ǽ̾줿 JAR ե뤬Java 2 ץåȥեǤɤΤ褦˰뤫򼨤Ƥޤ .LP -\f2\-providerArg\fP \f2ConfigFilePath\fP オプションと組み合わせて使用します。 keytool と jarsigner はプロバイダを動的にインストールします (ここで、\f2ConfigFilePath\fP はトークン設定ファイルへのパスです)。セキュリティープロパティーファイル内で Sun PKCS#11 プロバイダが設定されていない場合に PKCS#11 キーストアを一覧表示するコマンドの例を次に示します。 -.RS 3 - .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 -\f3 -.fl -jarsigner \-keystore NONE \-storetype PKCS11 \\ -.fl - \-providerClass sun.security.pkcs11.SunPKCS11 \\ -.fl - \-providerArg /foo/bar/token.config \\ -.fl - \-list -.fl -\fP -.fi -.RE -.TP 3 -\-providerName providerName -\f2java.security\fP セキュリティープロパティーファイル内で 2 つ以上のプロバイダが設定されている場合、\f2\-providerName\fP オプションを使って特定のプロバイダインスタンスを選択できます。このオプションの引数は、プロバイダの名前です。 -.LP -Sun PKCS#11 プロバイダの場合、\f2providerName\fP は \f2SunPKCS11\-\fP\f2TokenName\fP という形式になります。 ここで「\f2TokenName\fP」は、プロバイダインスタンスが構成された名前の接尾辞です。 詳細は -.na -\f2構成属性の表\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#ATTRSを参照してください。たとえば、以下のコマンドでは、名前接尾辞 \f2SmartCard\fP の PKCS#11 キーストアプロバイダインスタンスの内容をリストします。 -.RS 3 - -.LP +.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 -\f3 -.fl -jarsigner \-keystore NONE \-storetype PKCS11 \\ -.fl - \-providerName SunPKCS11\-SmartCard \\ -.fl - \-list -.fl -\fP -.fi -.RE -.TP 3 -\-Jjavaoption -指定された \f2javaoption\fP 文字列を Java インタプリタに直接渡します。(\f3jarsigner\fP は、実際には Java インタプリタに対する「ラッパー」です。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタオプションを一覧表示するには、コマンド行で \f2java \-h\fP または \f2java \-X\fP と入力してください。 +.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 1078 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 -.TP 3 -\-tsa url -JAR ファイルの署名時にコマンド行に「\f2\-tsa http://example.tsa.url\fP」が表示される場合、署名のタイムスタンプが生成されます。URL \f2http://example.tsa.url\fP は、TSA (Time Stamping Authority) の場所を特定します。これは、\f2\-tsacert\fP オプションで検出された URL をオーバーライドします。\f2\-tsa\fP オプションでは、TSA の公開鍵証明書をキーストアに配置する必要はありません。 .LP -タイムスタンプを生成するため、\f2jarsigner\fP は -.na -\f2RFC 3161\fP @ -.fi -http://www.ietf.org/rfc/rfc3161.txt で定義されている TSP (Time\-Stamp Protocol) を使用して TSA と通信します。成功すると、TSA から返されたタイムスタンプトークンは署名ブロックファイルの署名とともに保存されます。 + \- .LP +.RS 3 .TP 3 -\-tsacert alias -JAR ファイルの署名時にコマンド行に「\f2\-tsacert alias\fP」が表示される場合、署名のタイムスタンプが生成されます。\f2alias\fP は、キーストア内の現在有効な TSA の公開鍵証明書を特定します。エントリの証明書で、TSA の場所を特定する URL を含む Subject Information Access 拡張機能が確認されます。 -.LP -TSA の公開鍵証明書は、\f2\-tsacert\fP を使った場合、キーストアに配置されている必要があります。 -.LP +1. +ݥꥷե˥ǥƥƥ/̾ˤĤƤθڤ硢򥭡ȥ˥ݡȤơݥꥷե꤬Ϳ줿øȿǤ褦ˤɬפޤ .TP 3 -\-altsigner class -代替署名機構を使用することを指定します。完全修飾クラス名は、\f2com.sun.jarsigner.ContentSigner\fP の abstract クラスを拡張するクラスファイルを特定します。このクラスファイルへのパスは、\f2\-altsignerpath\fP オプションによって定義されます。\f2\-altsigner\fP オプションを使用した場合、\f2jarsigner\fP は指定されたクラスが提供する署名機構を使用します。または、\f2jarsigner\fP はデフォルトの署名機構を使用します。 -.LP -たとえば、\f2com.sun.sun.jarsigner.AuthSigner\fP というクラスが提供する署名機構を使用するには、\f2jarsigner\fP オプション「\f2\-altsigner com.sun.jarsigner.AuthSigner\fP」を使用します。 -.LP +2. +ݥꥷե/ȥȤ߹碌ϡǥƥƥǡ١οǤ륢ǥƥƥͥ褵ޤ .TP 3 -\-altsignerpath classpathlist -クラスファイル (クラスファイル名は上記のように \f2\-altsigner\fP オプションで指定される) およびそれが依存する JAR ファイルへのパスを指定します。クラスファイルが JAR ファイル内にある場合、以下の例のように JAR ファイルへのパスが指定されます。 -.LP -絶対パスまたは現在のディレクトリからの相対パスを指定できます。\f2classpathlist\fP には、複数のパスまたは JAR ファイルを含めることができます。 その場合、各パスまたは JAR ファイルを、Solaris の場合にはコロン (\f2:\fP)、Windows の場合にはセミコロン (\f2;\fP) で区切ります。目的のクラスがすでに検索パス内にある場合は、このオプションは不要です。 -.LP -クラスファイルを含む、JAR ファイルへのパスを指定する例を示します。 -.RS 3 - -.LP -.LP -\f2\-altsignerpath /home/user/lib/authsigner.jar\fP -.LP -.RE -.LP -JAR ファイル名が含まれていることに注意してください。 -.LP -クラスファイルを含む JAR ファイルへのパスを指定する例を示します。 -.RS 3 -.LP -\f2\-altsignerpath /home/user/classes/com/sun/tools/jarsigner/\fP -.LP -.RE -.LP -JAR ファイル名は含まれていないことに留意してください。 -.RE -.SH "例" -.LP - -.LP -.SS -JAR ファイルの署名 -.LP -.RS 3 - -.LP -.LP -bundle.jar という名前の JAR ファイルがあるとします。 このファイルに、キーストアの別名が jane であるユーザーの非公開鍵を使って、署名を付けるとします。キーストアは、mystore という名前で、C ドライブの working ディレクトリにあり、キーストアのパスワードは mypass、\f2jane\fP の非公開鍵のパスワードは j638klm とします。この場合、次のコマンドを実行すると、JAR ファイルに署名を付けて sbundle.jar という署名付き JAR ファイルを作成できます。 -.LP -.nf -\f3 -.fl - jarsigner \-keystore /working/mystore \-storepass myspass -.fl - \-keypass j638klm \-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 ファイルで入力 JAR ファイル (\f2bundle.jar\fP) を上書きする場合は、\f2\-signedjar\fP オプションの指定も省略できます。 -.LP -.nf -\f3 -.fl - jarsigner bundle.jar jane -.fl -\fP -.fi +3. +Java 2 ץåȥեǤϡǤʤǥƥƥ̵뤵ޤ +.TP 3 +4. +Java 2 SDK ȥ˥ݡȤǤΤϡǤ륢ǥƥƥǤ .RE .LP -.SS -署名付き JAR ファイルの検証 -.LP -.RS 3 - -.LP -.LP -次に示すのは、署名付き JAR ファイルを検証し、署名が有効で JAR ファイルが改変されていないことを確認するためのコマンド例です。 -.LP -.nf -\f3 -.fl - jarsigner \-verify sbundle.jar -.fl -\fP -.fi - -.LP -.LP -検証が成功すると、次のようなメッセージが表示されます。 -.LP -.nf -\f3 -.fl - jar が検証されました。 -.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 = 署名が検証されました。 -.fl - m = エントリがマニフェスト内にリストされます。 -.fl - k = 1 つ以上の証明書がキーストアで検出されました。 -.fl - -.fl - jar が検証されました。 -.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 = 署名が検証されました。 -.fl - m = エントリがマニフェスト内にリストされます。 -.fl - k = 1 つ以上の証明書がキーストアで検出されました。 -.fl - -.fl - jar が検証されました。 -.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 = 署名が検証されました。 -.fl - m = エントリがマニフェスト内にリストされます。 -.fl - k = 1 つ以上の証明書がキーストアで検出されました。 -.fl - i = 1 つ以上の証明書がアイデンティティースコープで検出されました。 -.fl - -.fl - jar が検証されました。 -.fl -\fP -.fi - -.LP -.LP -別名 duke は角括弧で囲まれているので、この別名はキーストアの別名ではなく、アイデンティティーデータベースの別名です。 -.LP -.RE -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .RS 3 .TP 2 o -jar(1) ツールのドキュメント +jar(1) ġΥɥ .TP 2 o -keytool(1) ツールのドキュメント +keytool(1) ġΥɥ .TP 2 o -\f3jarsigner\fP ツールの使用例については、 .na -\f4「Java Tutorial」\fP @ +\f4jarsigner\fP\f2 ġλˤĤƤϡ\fP @ .fi -http://java.sun.com/docs/books/tutorial/index.htmlの +http://download.oracle.com/javase/tutorial/index.html .na -\f4「Security」\fP @ +\f2Java 塼ȥꥢ\fP\f4\fP @ .fi -http://java.sun.com/docs/books/tutorial/security/index.htmlを参照 +http://download.oracle.com/javase/tutorial/index.htmlSecurity\f3򻲾\fP .RE .LP diff --git a/src/linux/doc/man/ja/java.1 b/src/linux/doc/man/ja/java.1 index b939d72adcfc0ba9c94234c54fe40f890085b7f0..5385d6ef039027e078697a9151325e2489f7cdf7 100644 --- a/src/linux/doc/man/ja/java.1 +++ b/src/linux/doc/man/ja/java.1 @@ -1,4 +1,4 @@ -." Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1994, 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 @@ -19,29 +19,29 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH java 1 "02 Jun 2010" +.TH java 1 "14 Apr 2011" .LP -.SH "名前" -java \- Java アプリケーション起動ツール +.SH "̾" +java \- Java ץꥱưġ .LP .RS 3 .TP 2 o -形式 + .TP 2 o -説明 + .TP 2 o -オプション +ץ .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" +.SH "" .LP .nf \f3 @@ -52,90 +52,80 @@ o .fl .fi -.LP -.RS 3 - .LP .RS 3 .TP 3 options -コマンド行オプション。 +ޥɹԥץ .TP 3 class -呼び出されるクラスの名前 +ƤӽФ륯饹̾ .TP 3 file.jar -呼び出される JAR ファイルの名前。必ず \f2\-jar\fP とともに使用する +ƤӽФ JAR ե̾ɬ \f2\-jar\fP ȤȤ˻Ѥ .TP 3 argument -\f3main\fP 関数に渡される引数 +\f3main\fP ؿϤ .RE .LP -.RE -.SH " 説明" -.LP - +.SH "" .LP .LP -\f3java\fP ツールは、Java アプリケーションを起動します。java ツールは、Java Runtime Environment を起動したあと、指定されたクラスをロードし、そのクラスの \f3main\fP メソッドを呼び出すことにより、Java アプリケーションを起動します。 +\f3java\fP ġϡJava ץꥱưޤjava ġϡJava Runtime Environment ưȡꤵ줿饹ɤΥ饹 \f3main\fP ᥽åɤƤӽФȤˤꡢJava ץꥱưޤ .LP .LP -このメソッドは、public および static として宣言する必要があります。 また、値を返してはいけません。 さらに、\f2String\fP 配列をパラメータとして指定できなければなりません。メソッドの宣言は、次のようになっていなければなりません。 +Υ᥽åɤϡpublic static Ȥɬפޤ ޤ֤ͤƤϤޤ ˡ \f2String\fP ѥ᡼ȤƻǤʤФʤޤ󡣥᥽åɤϡΤ褦ˤʤäƤʤФʤޤ .LP .nf \f3 .fl - public static void main(String args[]) +public static void main(String args[]) .fl \fP .fi .LP .LP -デフォルトでは、コマンド行オプション以外の最初の引数が、呼び出されるクラスの名前になります。この名前には、完全指定のクラス名を使用する必要があります。\f3\-jar\fP オプションを指定した場合、コマンド行オプション以外の最初の引数が、アプリケーションのクラスファイルとリソースファイルを含む \f3JAR\fP アーカイブの名前になります。 この場合、マニフェストの \f3Main\-Class\fP ヘッダーで指定されたクラスが起動クラスになります。 +ǥեȤǤϡޥɹԥץʳκǽΰƤӽФ륯饹̾ˤʤޤ̾ˤϡΥ饹̾Ѥɬפޤ\f3\-jar\fP ץꤷ硢ޥɹԥץʳκǽΰץꥱΥ饹եȥ꥽եޤ \f3JAR\fP ֤̾ˤʤޤξ硢ޥ˥եȤ \f3Main\-Class\fP إåǻꤵ줿饹ư饹ˤʤޤ .LP .LP -Java Runtime は、ブートストラップクラスパス、インストール型拡張機能、およびユーザークラスパスの 3 箇所から起動クラスと他の使用されているクラスを検索します。 +Java Runtime ϡ֡ȥȥåץ饹ѥ󥹥ȡ뷿ĥǽӥ桼饹ѥ 3 ս꤫鵯ư饹¾λѤƤ륯饹򸡺ޤ .LP .LP -クラス名または JAR ファイル名のあとにある、コマンド行オプション以外の引数は、\f3main\fP 関数に渡されます。 +饹̾ޤ JAR ե̾ΤȤˤ롢ޥɹԥץʳΰϡ\f3main\fP ؿϤޤ .LP -.SH "オプション" +.SH "ץ" .LP - -.LP -.LP -起動ツールには、現在の実行環境および将来のリリースでサポートされる標準オプションがあります。また、仮想マシンの現在の実装では、非標準オプションのセットもサポートされます。 これは、将来のリリースで変更される可能性があります。 .LP -.SH "標準オプション" +ưġˤϡߤμ¹ԴĶӾΥ꡼ǥݡȤɸ४ץ󤬤ޤޤۥޥθߤμǤϡɸ४ץΥåȤ⥵ݡȤޤϡΥ꡼ѹǽޤ .LP - +.SH "ɸ४ץ" .LP .RS 3 .TP 3 \-client .LP -Java HotSpot Client VM を選択します。64 ビット対応 JDK は現時点では、このオプションを無視し、代わりに Java Hotspot Server VM を使用します。 +Java HotSpot Client VM 򤷤ޤ64 ӥåб JDK ϸǤϡΥץ̵뤷 Java Hotspot Server VM Ѥޤ .LP -デフォルトの VM の選択については、 +ǥեȤ VM ˤĤƤϡ .na -\f2「サーバー \- クラスマシンの検出」\fP @ +\f2֥С \- 饹ޥθС\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.html򻲾ȤƤ .TP 3 \-server .LP -Java HotSpot Server VM を選択します。64 ビット対応 JDK 上では、サポートされるのは Java Hotspot Server VM だけであるため、\-server オプションが暗黙的に選択されます。 +Java HotSpot Server VM 򤷤ޤ64 ӥåб JDK ǤϡݡȤΤ Java Hotspot Server VM Ǥ뤿ᡢ\-server ץ󤬰Ū򤵤ޤ .LP -デフォルトの VM の選択については、 +ǥեȤ VM ˤĤƤϡ .na -\f2「サーバー \- クラスマシンの検出」\fP @ +\f2֥С \- 饹ޥθС\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.html򻲾ȤƤ .TP 3 \-agentlib:libname[=options] -ネイティブエージェントライブラリ \f2libname\fP をロードします。 たとえば次のように指定します。 +ͥƥ֥ȥ饤֥ \f2libname\fP ɤޤȤмΤ褦˻ꤷޤ .LP \-agentlib:hprof .LP @@ -143,57 +133,57 @@ http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.htmlを参 .LP \-agentlib:hprof=help .LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2「JVMTI エージェントのコマンド行オプション」\fP @ +\f2JVMTI ȤΥޥɹԥץ\fP @ .fi -http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#startingを参照してください。 +http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#starting򻲾ȤƤ .TP 3 \-agentpath:pathname[=options] -フルパス名を使用して、ネーティブエージェントライブラリをロードします。詳細については、 +եѥ̾Ѥơ͡ƥ֥ȥ饤֥ɤޤܺ٤ˤĤƤϡ .na -\f2「JVMTI エージェントのコマンド行オプション」\fP @ +\f2JVMTI ȤΥޥɹԥץ\fP @ .fi -http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#startingを参照してください。 +http://java.sun.com/javase/6/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 環境変数の設定がオーバーライドされます。 +饹ե򸡺ǥ쥯ȥꡢJAR ֡ ZIP ֤ΥꥹȤꤷޤ饹ѥγƥȥϥ (\f3:\fP) Ƕڤޤ\f3\-classpath\fP ޤ \f3\-cp\fP ꤹȡΥץͤˤä \f3CLASSPATH\fP Ķѿ꤬С饤ɤޤ .LP -\f3\-classpath\fP も \f3\-cp\fP も使用されず、\f3CLASSPATH\fP も設定されていない場合、ユーザークラスパスは現在のディレクトリ (\f4.\fP) になります。 +\f3\-classpath\fP \f3\-cp\fP Ѥ줺\f3CLASSPATH\fP ꤵƤʤ硢桼饹ѥϸߤΥǥ쥯ȥ (\f4.\fP) ˤʤޤ .LP -便宜上、\f2*\fP のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 \f2.jar\fP または \f2.JAR\fP を持つすべてのファイルのリストを指定するのと同じとみなされます (Java プログラムはこの 2 つの呼び出しを区別できない)。 +ص塢 \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 仮想マシンの起動前に実行されます。したがって、\f2System.getenv("CLASSPATH")\fP 呼び出しのように環境に問い合わせを行わない限り、Java プログラムが展開されていないワイルドカードを認識することはありません。 +ȤСǥ쥯ȥ \f2foo\fP \f2a.jar\fP \f2b.JAR\fP ޤޤƤ硢饹ѥ \f2foo/*\fP \f2A.jar:b.JAR\fP ŸޤJAR եν֤̤ȤʤޤΥꥹȤˤϡեޤᡢꤵ줿ǥ쥯ȥΤ٤Ƥ JAR ե뤬ޤޤޤ* \f2饹ѥȥϡ\fP ȥǥ쥯ȥΤ٤Ƥ JAR եΥꥹȤŸޤ \f2CLASSPATH\fP Ķѿ⡢ˤƱͤŸޤ饹ѥΥ磻ɥŸɬJava ۥޥεư˼¹Ԥޤäơ\f2System.getenv("CLASSPATH")\fP ƤӽФΤ褦˴Ķ䤤碌Ԥʤ¤ꡢJava ץबŸƤʤ磻ɥɤǧ뤳ȤϤޤ .LP -クラスパスの詳細は、 +饹ѥξܺ٤ϡ .na -\f2「クラスパスの設定」\fP @ +\f2֥饹ѥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照してください。 +http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath򻲾ȤƤ .TP 3 \-Dproperty=value -システムプロパティーの値を設定します。 +ƥץѥƥͤꤷޤ .TP 3 \-d32 .TP 3 \-d64 -それぞれ 32 ビット環境、64 ビット環境でプログラムを実行することを要求します。要求された環境がインストールされていないかサポートされていない場合は、エラーが報告されます。 +줾 32 ӥåȴĶ64 ӥåȴĶǥץ¹Ԥ뤳Ȥ׵ᤷޤ׵ᤵ줿Ķ󥹥ȡ뤵ƤʤݡȤƤʤϡ顼𤵤ޤ .LP -現在のところ、Java HotSpot Server VM だけが 64 ビットの操作をサポートしており、\-d64 を使用すると \-server オプションが暗黙的に有効になります。したがって、\-d64 使用時には「\-client」オプションは無視されます。この仕様は、将来のリリースでは変更になる可能性があります。 +ߤΤȤJava HotSpot Server VM 64 ӥåȤ򥵥ݡȤƤꡢ\-server ץѤϡ\-d64 ˻Ѥɬפޤäơ\-d64 ѻˤϡ\-clientץץ̵뤵ޤλͤϡΥ꡼Ǥѹˤʤǽޤ .LP -\f3\-d32\fP と \f3\-d64\fP がどちらも指定されていない場合は、デフォルトとして、32 ビット環境で実行されます。この仕様は、将来のリリースでは変更になる可能性があります。 +\f3\-d32\fP \f3\-d64\fP ɤꤵƤʤϡǥեȤȤơ32 ӥåȴĶǼ¹ԤޤλͤϡΥ꡼Ǥѹˤʤǽޤ .TP 3 -\-enableassertions[:"..."| : ] +\-enableassertions[:"..." | : ] .TP 3 -\-ea[:"..."| : ] -アサーションを有効にします。アサーションは、デフォルトでは無効になっています。 +\-ea[:"..." | : ] +ͭˤޤϡǥեȤǤ̵ˤʤäƤޤ .LP -引数なしの \f3enableassertions\fP または \f3\-ea\fP を指定すると、アサーションが有効になります。「\f2...\fP」で終わる引数を 1 つ指定すると、指定したパッケージとそのサブパッケージ内でアサーションが有効になります。引数として「\f2...\fP」だけを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが有効になります。「\f2...\fP」で終わらない引数を 1 つ指定すると、指定したクラス内でアサーションが有効になります。 +ʤ \f3enableassertions\fP ޤ \f3\-ea\fP ꤹȡͭˤʤޤ\f2...\fPפǽ 1 ĻꤹȡꤷѥåȤΥ֥ѥåǥͭˤʤޤȤơ\f2...\fPפꤹȡߤκȥǥ쥯ȥˤ̾Τʤѥåǥͭˤʤޤ\f2...\fPפǽʤ 1 Ļꤹȡꤷ饹ǥͭˤʤޤ .LP -単一コマンド行にこれらのスイッチのインスタンスを複数指定した場合は、指定したスイッチが順番に処理されてからクラスがロードされます。したがって、たとえば、パッケージ \f2com.wombat.fruitbat\fP (サブパッケージを含む) 内でのみアサーションを有効にしてプログラムを実行するには、次のようなコマンドを使用します。 +ñ쥳ޥɹԤˤΥåΥ󥹥󥹤ʣꤷϡꤷå֤˽Ƥ饯饹ɤޤäơȤСѥå \f2com.wombat.fruitbat\fP (֥ѥåޤ) ǤΤߥͭˤƥץ¹ԤˤϡΤ褦ʥޥɤѤޤ .nf \f3 .fl @@ -202,151 +192,156 @@ java \-ea:com.wombat.fruitbat...

\fP .fi .LP -\f3\-enableassertions\fP および \f3\-ea\fP スイッチは、すべてのクラスローダおよびシステムクラスに適用されます。 システムクラスにはクラスローダはありません。ただし、この規則には例外が 1 つあります。それは、引数なしでこのスイッチを指定すると、その指定はシステムクラスには適用されない、ということです。この例外を利用すれば、システムクラスを除くすべてのクラスでアサーションを簡単に有効にすることができます。すべてのシステムクラスでアサーションを有効にするために、別のスイッチが用意されています。 このあとの \f3\-enablesystemassertions\fP を参照してください。 +\f3\-enableassertions\fP \f3\-ea\fP åϡ٤ƤΥ饹ӥƥ९饹ŬѤޤƥ९饹ˤϥ饹Ϥޤ󡣤ε§ˤ 1 㳰ޤϡʤηǤΥåꤹȡλ꤬ƥŬѤʤȤȤǤ㳰ѤСƥ९饹٤ƤΥ饹ǥñͭˤ뤳ȤǤޤ٤ƤΥƥ९饹ǥͭˤ뤿ˡ̤ΥåѰդƤޤΤȤ \f3\-enablesystemassertions\fP 򻲾ȤƤ .TP 3 -\-disableassertions[:"..."| : ] +\-disableassertions[:"..." | : ] .TP 3 -\-da[:"..."| : ] -アサーションを無効にします。これはデフォルトの設定です。 +\-da[:"..." | : ] +̵ˤޤ줬ǥեȤǤ .LP -引数なしの \f3disableassertions\fP または \f3\-da\fP を指定すると、アサーションが無効になります。「\f2...\fP」で終わる引数を 1 つ指定すると、指定したパッケージとそのサブパッケージ内でアサーションが無効になります。引数として「\f2...\fP」だけを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが無効になります。「\f2...\fP」で終わらない引数を 1 つ指定すると、指定したクラス内でアサーションが無効になります。 +ʤ \f3disableassertions\fP ޤ \f3\-da\fP ꤹȡ̵ˤʤޤ\f2...\fPפǽ 1 ĻꤹȡꤷѥåȤΥ֥ѥåǥ̵ˤʤޤȤơ\f2...\fPפꤹȡߤκȥǥ쥯ȥˤ̾Τʤѥåǥ̵ˤʤޤ\f2...\fPפǽʤ 1 Ļꤹȡꤷ饹ǥ̵ˤʤޤ .LP -パッケージ \f2com.wombat.fruitbat\fP 内ではアサーションを有効にし、クラス \f2com.wombat.fruitbat.Brickbat\fP 内ではアサーションを無効にしたうえで、プログラムを実行するには、次のようなコマンドを使用します。 +ѥå \f2com.wombat.fruitbat\fP Ǥϥͭˤ饹 \f2com.wombat.fruitbat.Brickbat\fP Ǥϥ̵ˤǡץ¹ԤˤϡΤ褦ʥޥɤѤޤ .nf \f3 .fl -java \-ea:com.wombat.fruitbat... \-da:com.wombat.fruitbat.Brickbat
+java \-ea:com.wombat.fruitbat... \-da:com.wombat.fruitbat.Brickbat \fP\f4
\fP\f3 .fl \fP .fi .LP -\f3\-disableassertions\fP および \f3\-da\fP スイッチは、すべてのクラスローダおよびシステムクラスに適用されます。 システムクラスにはクラスローダはありません。ただし、この規則には例外が 1 つあります。それは、引数なしでこのスイッチを指定すると、その指定はシステムクラスには適用されない、ということです。この例外を利用すれば、システムクラスを除くすべてのクラスでアサーションを簡単に有効にすることができます。すべてのシステムクラスでアサーションを無効にするために、別のスイッチが用意されています。 このあとの \f3\-disablesystemassertions\fP を参照してください。 +\f3\-disableassertions\fP \f3\-da\fP åϡ٤ƤΥ饹ӥƥ९饹ŬѤޤƥ९饹ˤϥ饹Ϥޤ󡣤ε§ˤ 1 㳰ޤϡʤηǤΥåꤹȡλ꤬ƥŬѤʤȤȤǤ㳰ѤСƥ९饹٤ƤΥ饹ǥñͭˤ뤳ȤǤޤ٤ƤΥƥ९饹ǥ̵ˤ뤿ˡ̤ΥåѰդƤޤΤȤ \f3\-disablesystemassertions\fP 򻲾ȤƤ .TP 3 \-enablesystemassertions .TP 3 \-esa -すべてのシステムクラス内でアサーションを有効にします。 つまり、システムクラスについてアサーションのデフォルトステータスを \f2true\fP に設定します。 +٤ƤΥƥ९饹ǥͭˤޤĤޤꡢƥ९饹ˤĤƥΥǥեȥơ \f2true\fP ꤷޤ .TP 3 \-disablesystemassertions .TP 3 \-dsa -すべてのシステムクラス内でアサーションを無効にします。 -.LP +٤ƤΥƥ९饹ǥ̵ˤޤ .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)と、 +JAR ե˥ץ벽줿ץ¹Ԥޤǽΰϡư饹̾ǤϤʤJAR ե̾ˤޤΥץ󤬵ǽˤϡJAR եΥޥ˥եȤ\f3Main\-Class:\fP\f4classname\fP\f3\fPȤιԤꤹɬפޤ\f2classname\fP ˤϡץꥱγϰ֤ȤƵǽ \f2public\ static\ void\ main(String[]\ args)\fP ᥽åɤޤ९饹ꤷޤJAR եȤΥޥ˥եȤˤĤƤϡjar(1)ȡ .na -\f2Java チュートリアル\fP @ +\f2Java 塼ȥꥢ\fP @ .fi -http://java.sun.com/docs/books/tutorial/jarの「Trail: Jar Files」を参照してください。 +http://download.oracle.com/javase/tutorial/deployment/jarΡTrail: Jar Filesפ򻲾ȤƤ .LP -このオプションを使用すると、指定した JAR ファイルがすべてのユーザークラスのソースになり、ユーザークラスパスのほかの設定は無視されます。 +ΥץѤȡꤷ JAR ե뤬٤ƤΥ桼饹Υˤʤꡢ桼饹ѥΤ̵ۤ뤵ޤ .LP -Solaris 8 では、「java \-jar」オプションで実行できる JAR ファイルは、実行権限のセットを保持しています。 このため、「java \-jar」を使用しないで実行することも可能です。 +Solaris 8 Ǥϡjava \-jarץץǼ¹ԤǤ JAR եϡ¹Ը¤ΥåȤݻƤޤΤᡢjava \-jarפѤʤǼ¹Ԥ뤳ȤǽǤJava Archive (JAR) ե .na -\f2Java Archive (JAR) ファイル\fP @ + @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/index.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/jar/index.html .TP 3 \-javaagent:jarpath[=options] -Java プログラミング言語エージェントをロードします。 +Java ץߥ󥰸쥨Ȥɤޤ java.lang.instrument 򻲾ȤƤ .na -\f2java.lang.instrument\fP @ + @ .fi -http://java.sun.com/javase/6/docs/api/java/lang/instrument/package\-summary.html を参照してください。 +http://java.sun.com/javase/6/docs/api/java/lang/instrument/package\-summary.html +.TP 3 +\-jre\-restrict\-search +桼ץ饤١Ȥ JRE С󸡺˴ޤޤ +.TP 3 +\-no\-jre\-restrict\-search +桼ץ饤١Ȥ JRE С󸡺ޤ .TP 3 \-verbose .TP 3 \-verbose:class -クラスがロードされるたびにクラスに関する情報を表示します。 +饹ɤ뤿Ӥ˥饹˴ؤɽޤ .TP 3 \-verbose:gc -ガベージコレクションイベントが発生するたびに報告します。 +١쥯󥤥٥Ȥȯ뤿Ӥ𤷤ޤ .TP 3 \-verbose:jni -ネイティブメソッドの使用およびその他の Java Native Interface (JNI) アクティビティーに関する情報を報告します。 +ͥƥ֥᥽åɤλѤӤ¾ Java Native Interface (JNI) ƥӥƥ˴ؤ𤷤ޤ .TP 3 \-version -バージョン情報を表示して終了します。 +Сɽƽλޤ .TP 3 \-version:release -コマンド行に指定されたクラスまたは JAR ファイルが、\f2release\fP で指定されたバージョンを必要としていることを示します。起動された java コマンドのバージョンがこの指定内容を満たさず、かつ適切な実装がシステム上で見つかった場合には、その適切な実装が使用されます。 +ޥɹԤ˻ꤵ줿饹ޤ JAR ե뤬\f2release\fP ǻꤵ줿СɬפȤƤ뤳Ȥ򼨤ޤư줿 java ޥɤΥС󤬤λƤŬڤʼƥǸĤäˤϡŬڤʼѤޤ .LP -\f2release\fP では、特定のバージョンを指定できるだけでなく、バージョン文字列と呼ばれるバージョンのリストを指定することもできます。バージョン文字列は、いくつかのバージョン範囲を空白で区切った形式の順序付きリストです。バージョン範囲は、バージョン ID、バージョン ID の後にアスタリスク (*) を付加したもの、バージョン ID の後にプラス記号 (+) を付加したもの、2 つのバージョン範囲をアンパサンド (&) で結合したもの、のいずれかになります。アスタリスクはプレフィックス一致を、プラス記号は指定されたバージョン以上を、アンパサンドは 2 つのバージョン範囲の論理積を、それぞれ意味します。例を示します。 +\f2release\fP ǤϡΥСǤǤʤСʸȸƤФСΥꥹȤꤹ뤳ȤǤޤСʸϡĤΥСϰϤǶڤäνդꥹȤǤСϰϤϡС IDС ID θ˥ꥹ (*) ղäΡС ID θ˥ץ饹 (+) ղäΡ2 ĤΥСϰϤ򥢥ѥ (&) Ƿ礷ΡΤ줫ˤʤޤꥹϥץեåפ򡢥ץ饹ϻꤵ줿Сʾ򡢥ѥɤ 2 ĤΥСϰϤѤ򡢤줾̣ޤ򼨤ޤ .nf \f3 .fl -\-version:"1.5.0_04 1.5*&1.5.1_02+" +\-version:"1.6.0_13 1.6*&1.6.0_10+" .fl \fP .fi -上記の意味は、バージョン 1.5.0_04、または 1.5.1_02 以上で 1.5 をバージョン ID プレフィックスとして持つバージョン、のいずれかをクラスまたは JAR ファイルが必要とする、ということです。 バージョン文字列の厳密な構文や定義については、「Java Network Launching Protocol & API Specification (JSR\-56)」の「Appendix A」を参照してください。 +嵭ΰ̣ϡС 1.6.0_131.6 С ID ץեå˻ 1.6.0_10 ʾΥС󡢤Τ줫򥯥饹ޤ JAR ե뤬ɬפȤƤ롢ȤȤǤСʸθ̩ʹʸˤĤƤϡJava Network Launching Protocol & API Specification (JSR\-56)פΡAppendix Aפ򻲾ȤƤ .LP -JAR ファイルの場合は通常、バージョン要件をコマンド行に指定するよりも、JAR ファイルのマニフェスト内に指定することが推奨されています。 +JAR եξ̾С׷򥳥ޥɹԤ˻ꤹ⡢JAR եΥޥ˥ե˻ꤹ뤳Ȥ侩Ƥޤ .LP -このオプションの使用に関する重要なポリシー情報については、後述の「注」節を参照してください。 +ΥץλѤ˴ؤפʥݥꥷˤĤƤϡҤΡ򻲾ȤƤ .TP 3 \-showversion -バージョン情報を表示して続行します。 +Сɽ³Ԥޤ .TP 3 \-? .TP 3 \-help -使用法を表示して終了します。 +ˡɽƽλޤ +.TP 3 +\-splash:imagepath +\f2imagepath\fP ˻ꤵ줿ޤॹץå̤ɽޤ .TP 3 \-X -非標準オプションに関する情報を表示して終了します。 +ɸ४ץ˴ؤɽƽλޤ .RE .LP .SS -非標準オプション -.LP -.RS 3 - +ɸ४ץ .LP .RS 3 .TP 3 \-Xint -インタプリタ専用モードで動作します。ネイティブコードへのコンパイルは無効になり、すべてのバイトコードがインタプリタによって実行されます。Java HotSpot VM に対応するコンパイラが提供するパフォーマンス上の利点は、このモードでは実現されません。 +󥿥ץ꥿ѥ⡼ɤưޤͥƥ֥ɤؤΥѥ̵ˤʤꡢ٤ƤΥХȥɤ󥿥ץ꥿ˤäƼ¹ԤޤJava HotSpot VM б륳ѥ餬󶡤ѥեޥ󥹾ϡΥ⡼ɤǤϼ¸ޤ .TP 3 \-Xbatch -バックグラウンドコンパイルを無効にします。通常、VM では、バックグラウンドコンパイルが終了するまで、メソッドをバックグラウンドタスクとしてコンパイルし、インタプリタモードでメソッドを実行します。\f2\-Xbatch\fP フラグを指定すると、バックグラウンドコンパイルが無効になり、すべてのメソッドのコンパイルが完了するまでフォアグラウンドタスクとして処理されます。 +Хå饦ɥѥ̵ˤޤ̾VM ǤϡХå饦ɥѥ뤬λޤǡ᥽åɤХå饦ɥȤƥѥ뤷󥿥ץ꥿⡼ɤǥ᥽åɤ¹Ԥޤ\f2\-Xbatch\fP ե饰ꤹȡХå饦ɥѥ뤬̵ˤʤꡢ٤ƤΥ᥽åɤΥѥ뤬λޤǥե饦ɥȤƽޤ .TP 3 \-Xbootclasspath:bootclasspath -ブートクラスファイルを探すディレクトリ、JAR アーカイブ、および ZIP アーカイブをコロンで区切ったリストで指定します。指定したパスに存在するブートクラスファイルが、JDK に含まれるブートクラスファイルの代わりに使用されます。\f2注: rt.jar 内のクラスをオーバーライドする目的でこのオプションを使用するアプリケーションは、システムに配置しないでください。Java Runtime Environment バイナリコードライセンス違反になります。\fP +֡ȥ饹եõǥ쥯ȥꡢJAR ֡ ZIP ֤򥳥ǶڤäꥹȤǻꤷޤꤷѥ¸ߤ֡ȥ饹ե뤬Java ץåȥե JDK ˴ޤޤ֡ȥ饹ե˻Ѥޤ\f2: rt.jar Υ饹򥪡С饤ɤŪǤΥץѤ륢ץꥱϡƥ֤ʤǤJava Runtime Environment Хʥꥳɥ饤󥹰ȿˤʤޤ\fP .TP 3 \-Xbootclasspath/a:path -ディレクトリ、JAR アーカイブ、および ZIP アーカイブのパスをコロンで区切って指定します。 パスはデフォルトのブートストラップクラスパスのあとに追加されます。 +ǥ쥯ȥꡢJAR ֡ ZIP ֤Υѥ򥳥ǶڤäƻꤷޤѥϥǥեȤΥ֡ȥȥåץ饹ѥΤȤɲäޤ .TP 3 \-Xbootclasspath/p:path -ディレクトリ、JAR アーカイブ、および ZIP アーカイブのパスをコロンで区切って指定します。 パスはデフォルトのブートストラップクラスパスの前に追加されます。\f2注 rt.jar 内のクラスをオーバーライドする目的でこのオプションを使用するアプリケーションは、システムに配置しないでください。Java Runtime Environment バイナリコードライセンス違反になります。\fP +ǥ쥯ȥꡢJAR ֡ ZIP ֤Υѥ򥳥ǶڤäƻꤷޤѥϥǥեȤΥ֡ȥȥåץ饹ѥɲäޤ\f2: rt.jar Υ饹򥪡С饤ɤŪǤΥץѤ륢ץꥱϡƥ֤ʤǤJava Runtime Environment Хʥꥳɥ饤󥹰ȿˤʤޤ\fP .TP 3 \-Xcheck:jni -Java Native Interface (JNI) 機能に対して追加チェックを行います。具体的には、Java 仮想マシンは JNI 要求を処理する前に、JNI 関数に渡されるパラメータと、実行環境のデータを検証します。無効なデータが見つかった場合は、ネイティブコードに問題があることを示しているため、Java 仮想マシンは致命的エラーを発生して終了します。このオプションを使用すると、パフォーマンス低下が予想されます。 +Java Native Interface (JNI) ǽФɲååԤޤŪˤϡJava ۥޥ JNI ׵ˡJNI ؿϤѥ᡼ȡ¹ԴĶΥǡ򸡾ڤޤ̵ʥǡĤäϡͥƥ֥ɤ꤬뤳Ȥ򼨤Ƥ뤿ᡢJava ۥޥ̿Ū顼ȯƽλޤΥץѤȡѥեޥ㲼ͽۤޤ .TP 3 \-Xfuture -クラスとファイルの形式を厳密にチェックします。下位互換性を保つため、JDK の仮想マシンが実行するデフォルトの形式チェックは、JDK ソフトウェアのバージョン 1.1.x が実行するチェックと同程度の厳密さになっています。\f3\-Xfuture\fP フラグを指定すると、クラスファイル形式の仕様への準拠を強化するためのより厳密なチェックが有効になります。Java アプリケーション起動ツールの将来のリリースでは、より厳密なチェックがデフォルトになるため、新しいコードを開発するときにはこのフラグを使用することをお勧めします。 +饹ȥեη̩˥åޤ̸ߴݤĤᡢJDK βۥޥ󤬼¹ԤǥեȤηåϡJDK եȥΥС 1.1.x ¹ԤåƱ٤θ̩ˤʤäƤޤ\f3\-Xfuture\fP ե饰ꤹȡ饹եλͤؤν򶯲뤿Τ긷̩ʥåͭˤʤޤJava ץꥱưġξΥ꡼Ǥϡ긷̩ʥåǥեȤˤʤ뤿ᡢɤȯȤˤϤΥե饰Ѥ뤳Ȥ򤪴ᤷޤ .TP 3 \-Xnoclassgc -クラスのガベージコレクションを無効にします。このオプションを使用すると、ロード済みクラスからメモリーが回復されることがなくなるため、全体的なメモリー使用量が増大します。この場合、アプリケーションによっては OutOfMemoryError がスローされる可能性があります。 +饹Υ١쥯̵ˤޤΥץѤȡɺѤߥ饹꡼뤳Ȥʤʤ뤿ᡢŪʥ꡼̤礷ޤξ硢ץꥱˤäƤ OutOfMemoryError ǽޤ .TP 3 \-Xincgc -インクリメンタルガーベジコレクタを有効にします。インクリメンタルガベージコレクタは、デフォルトでは無効になっています。 有効にすると、プログラムの実行中にガベージコレクションによる一時停止が発生しなくなります。インクリメンタルガベージコレクタは、プログラムと同時に実行することがあり、この場合、プログラムの利用できるプロセッサ能力が低下します。 +󥯥󥿥륬٥쥯ͭˤޤ󥯥󥿥륬١쥯ϡǥեȤǤ̵ˤʤäƤޤ ͭˤȡץμ¹˥١쥯ˤߤȯʤʤޤ󥯥󥿥륬١쥯ϡץƱ˼¹Ԥ뤳Ȥꡢξ硢ץѤǤץåǽϤ㲼ޤ .TP 3 \-Xloggc:file -\-verbose:gc と同様にガベージコレクションイベントが発生するたびに報告しますが、そのデータを \f2file\fP に記録します。\f2\-verbose:gc\fP を指定したときに報告される情報のほかに、報告される各イベントの先頭に、最初のガベージコレクションイベントからの経過時間 (秒単位) が付け加えられます。 -.LP -ネットワークの応答時間によって JVM の実行速度が低下するのを避けるため、このファイルの格納先は、常にローカルファイルシステムにしてください。ファイルシステムが満杯になると、ファイルは切り詰められ、そのファイルにデータが引き続き記録されます。このオプションと \f2\-verbose:gc\fP の両方がコマンド行に指定されている場合は、このオプションが優先されます。 +\-verbose:gc Ʊͤ˥١쥯󥤥٥Ȥȯ뤿Ӥ𤷤ޤΥǡ \f2file\fP ˵Ͽޤ\f2\-verbose:gc\fP ꤷȤ𤵤Τۤˡ𤵤ƥ٥ȤƬˡǽΥ١쥯󥤥٥Ȥηв (ñ) դäޤ .LP +ͥåȥα֤ˤä JVM μ¹®٤㲼Τ򤱤뤿ᡢΥեγǼϡ˥ե륷ƥˤƤե륷ƥबդˤʤȡեڤͤ졢Υե˥ǡ³ϿޤΥץ \f2\-verbose:gc\fP ξޥɹԤ˻ꤵƤϡΥץͥ褵ޤ .TP 3 \-Xmsn -メモリー割り当てプールの初期サイズをバイト数で指定します。指定する値は、1M バイトより大きい 1024 の倍数にしなければなりません。キロバイトを指定するには、文字 \f2k\fP または \f2K\fP を付けます。 メガバイトを指定するには、文字 \f2m\fP または \f2M\fP を付けます。デフォルト値は、実行時にシステムの設定に基づいて選択されます。詳細については、「HotSpot Ergonomics」を参照してください。 -.br -例: -.RS 3 - +꡼ƥסνХȿǻꤷޤꤹͤϡ1M ХȤ礭 1024 ܿˤʤФʤޤ󡣥ХȤꤹˤϡʸ \f2k\fP ޤ \f2K\fP դޤᥬХȤꤹˤϡʸ \f2m\fP ޤ \f2M\fP դޤǥեͤϡ¹Ի˥ƥ˴Ť򤵤ޤܺ٤ˤĤƤϡ +.na +\f2HotSpot Ergonomics\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/vm/gc\-ergonomics.htmlפ򻲾ȤƤ .LP +: .nf \f3 .fl @@ -356,19 +351,19 @@ Java Native Interface (JNI) 機能に対して追加チェックを行います .fl \-Xms6m .fl - + .fl \fP .fi -.RE .TP 3 \-Xmxn -メモリー割り当てプールの最大サイズをバイト数で指定します。指定する値は、2M バイトより大きい 1024 の倍数にしなければなりません。キロバイトを指定するには、文字 \f2k\fP または \f2K\fP を付けます。 メガバイトを指定するには、文字 \f2m\fP または \f2M\fP を付けます。デフォルト値は、実行時にシステムの設定に基づいて選択されます。詳細については、「HotSpot Ergonomics」を参照してください。 +꡼ƥסκ祵Хȿǻꤷޤꤹͤϡ2M ХȤ礭 1024 ܿˤʤФʤޤ󡣥ХȤꤹˤϡʸ \f2k\fP ޤ \f2K\fP դޤᥬХȤꤹˤϡʸ \f2m\fP ޤ \f2M\fP դޤǥեͤϡ¹Ի˥ƥ˴Ť򤵤ޤܺ٤ˤĤƤϡ +.na +\f2HotSpot Ergonomics\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/vm/gc\-ergonomics.htmlפ򻲾ȤƤ .br -例: -.RS 3 - -.LP +: .nf \f3 .fl @@ -378,95 +373,104 @@ Java Native Interface (JNI) 機能に対して追加チェックを行います .fl \-Xmx80m .fl - + .fl \fP .fi -.RE -Solaris 7 および Solaris 8 SPARC プラットフォームの場合、この値の上限はおよそ 4000m からオーバーヘッドの量を引いたものであり、Solaris 2.6 および x86 プラットフォームの場合は 2000m からオーバーヘッドの量を引いたものです。Linux プラットフォームの場合の上限は、およそ 2000m からオーバーヘッドの量を引いたものです。 +Solaris 7 Solaris 8 SPARC ץåȥեξΤͤξ¤ϡ褽 4000m 饪Сإåɤ̤ΤǤSolaris 2.6 x86 ץåȥեξξ¤ϡ褽 2000m 饪Сإåɤ̤ΤǤLinux ץåȥեξξ¤ϡ褽 2000m 饪Сإåɤ̤ΤǤ .TP 3 \-Xprof -実行中のプログラムのプロファイルを生成し、プロファイリングデータを標準出力に出力します。このオプションは、プログラム開発用のユーティリティーとして提供されています。 本番稼動システムでの使用を目的としたものではありません。 -.LP +¹ΥץΥץեץեǡɸϤ˽ϤޤΥץϡץ೫ȯѤΥ桼ƥƥȤ󶡤Ƥޤ ֲưƥǤλѤŪȤΤǤϤޤ .TP 3 \-Xrs -Java 仮想マシン (JVM) によるオペレーティングシステムシグナルの使用を減らします。 +Java ۥޥ (JVM) ˤ륪ڥ졼ƥ󥰥ƥॷʥλѤ򸺤餷ޤ .LP -以前のリリースでは、Java アプリケーションを秩序正しくシャットダウンするためのシャットダウンフック機能が追加されました。この機能により、JVM が突然終了した場合でも、シャットダウン時にユーザークリーンアップコード (データベース接続のクローズなど) を実行できるようになりました。 +Υ꡼ǤϡJava ץꥱåȥ󤹤뤿ΥåȥեåǽɲäޤεǽˤꡢJVM λǤ⡢åȥ˥桼꡼󥢥åץ (ǡ١³Υʤ) ¹ԤǤ褦ˤʤޤ .LP -Sun の JVM は、シグナルをキャッチすることによって、JVM の異常終了のためのシャットダウンフックを実装します。JVM は、SIGHUP、SIGINT、および SIGTERM を使用して、シャットダウンフックの実行を開始します。 +Sun JVM ϡʥ򥭥å뤳ȤˤäơJVM ΰ۾ェλΤΥåȥեåޤJVM ϡSIGHUPSIGINT SIGTERM Ѥơåȥեåμ¹Ԥ򳫻Ϥޤ .LP -JVM は、デバッグの目的でスレッドスタックをダンプするという、1.2 より前からある機能を実現するためにも、同様の機構を使用します。Sun の JVM は、スレッドダンプを実行するために SIGQUIT を使用します。 +JVM ϡǥХåŪǥåɥåפȤ1.2 餢뵡ǽ¸뤿ˤ⡢ƱͤεѤޤSun JVM ϡåɥפ¹Ԥ뤿 SIGQUIT Ѥޤ .LP -JVM を埋め込んでいるアプリケーションが SIGINT や SIGTERM などのシグナルを頻繁にトラップする必要があると、JVM そのもののシグナルハンドラの処理に支障が出る可能性があります。\f3\-Xrs\fP コマンド行オプションを使用すると、この問題に対処できます。Sun の JVM に対して \f3\-Xrs\fP を使用すると、SIGINT、SIGTERM、SIGHUP、および SIGQUIT に対するシグナルマスクは JVM によって変更されず、これらのシグナルに対するシグナルハンドラはインストールされません。 +JVM Ǥ륢ץꥱ SIGINT SIGTERM ʤɤΥʥˤ˥ȥåפɬפȡJVM ΤΤΥʥϥɥν˻پ㤬Фǽޤ\f3\-Xrs\fP ޥɹԥץѤȡнǤޤSun JVM Ф \f3\-Xrs\fP ѤȡSIGINTSIGTERMSIGHUP SIGQUIT Ф륷ʥޥ JVM ˤäѹ줺ΥʥФ륷ʥϥɥϥ󥹥ȡ뤵ޤ .LP -\f3\-Xrs\fP を指定した場合、次の 2 つの影響があります。 +\f3\-Xrs\fP ꤷ硢 2 Ĥαƶޤ .RS 3 .TP 2 o -SIGQUIT によるスレッドダンプを利用できない +SIGQUIT ˤ륹åɥפѤǤʤ .TP 2 o -シャットダウンフック処理の実行は、JVM が終了しようとしている時点で System.exit() を呼び出すなどして、ユーザーコード側で行う必要がある +åȥեåμ¹ԤϡJVM λ褦ȤƤ System.exit() ƤӽФʤɤơ桼¦ǹԤɬפ .RE .TP 3 \-Xssn -スレッドのスタックサイズを設定します。 +åɤΥåꤷޤ .TP 3 \-XX:+UseAltSigs -VM ではデフォルトで \f2SIGUSR1\fP および \f2SIGUSR2\fP を使用しますが、\f2SIGUSR1\fP および \f2SIGUSR2\fP をシグナル連鎖するアプリケーションと 競合する場合があります。\f2\-XX:+UseAltSigs\fP オプションは、VM にデフォルトとして \f2SIGUSR1\fP と \f2SIGUSR2\fP 以外のシグナルを使用させます。 +VM ǤϥǥեȤ \f2SIGUSR1\fP \f2SIGUSR2\fP Ѥޤ\f2SIGUSR1\fP \f2SIGUSR2\fP 򥷥ʥϢ륢ץꥱ 礹礬ޤ\f2\-XX:+UseAltSigs\fP ץϡVM ˥ǥեȤȤ \f2SIGUSR1\fP \f2SIGUSR2\fP ʳΥʥѤޤ .RE .LP -.RE -.SH "注" +.SH "" .LP - .LP -\f3\-version:\fP\f2release\fP コマンド行オプションでは、どんなに複雑にリリースを指定してもかまいません。ただし、現実的なリリース指定の限られたサブセットを使用するだけでも適切なポリシーを表現できるため、それらのサブセットのみが完全にサポートされます。それらのポリシーを次に示します。 +\f3\-version:\fP\f2release\fP ޥɹԥץǤϡɤʤʣ˥꡼ꤷƤ⤫ޤޤ󡣤Ūʥ꡼θ¤줿֥åȤѤǤŬڤʥݥꥷɽǤ뤿ᡢΥ֥åȤΤߤ˥ݡȤޤΥݥꥷ򼡤˼ޤ +.LP .RS 3 .TP 3 1. -任意のバージョン。 これは、このオプションを使用しないことで表現できます。 +ǤդΥС󡣤ϡΥץѤʤȤɽǤޤ .TP 3 2. -ある特定のバージョン ID よりも大きい任意のバージョン。 次に例を示します。 +ΥС ID 礭ǤդΥС󡣼򼨤ޤ .nf \f3 .fl -"1.5.0_03+" +"1.6.0_10+" .fl \fP .fi -.LP -この場合、1.5.0_03 よりも大きい任意のバージョンが使用されます。 これは、指定されたバージョンで特定のインタフェースが導入された (あるいはそのバグが修正された) 場合に便利です。 +ξ硢 \f21.6.0_10\fP 礭ǤդΥС󤬻Ѥޤϡꤵ줿СΥ󥿥եƳ줿 (뤤ϤΥХ줿) Ǥ .TP 3 3. -ある特定のバージョン ID よりも大きいバージョン。 ただし、そのリリースファミリの上限によって制限するもの。例を示します。 +ΥС ID 礭С󡣤Υ꡼եߥξ¤ˤä¤Ρ򼨤ޤ .nf \f3 .fl -"1.5.0_03+&1.5*" +"1.6.0_10+&1.6*" .fl \fP .fi .TP 3 4. -上の項目 2 または 3 の「OR」表現。例を示します。 +ι 2 ȹ 3 ΡOR׼򼨤ޤ .nf \f3 .fl -"1.4.2_05+&1.4* 1.5+" +"1.6.0_10+&1.6* 1.7+" .fl \fP .fi -これは項目 2 に似ていますが、ある変更が特定のリリース (1.5) で導入されたが、その同じ変更が以前のリリースのアップデートでも利用可能になった、という場合に便利です。 +Ϲ 2 ˻ƤޤѹΥ꡼ (1.7) Ƴ줿ƱѹΥ꡼ΥåץǡȤǤѲǽˤʤäȤǤ .RE .LP -.SH "関連項目" +.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 @@ -484,19 +488,19 @@ jar(1) .TP 2 o .na -\f2「Java 拡張機能フレームワーク」\fP @ +\f2Java ĥǽե졼\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html .TP 2 o .na -\f2「セキュリティー」\fP @ +\f2֥ƥ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/security/index.html .TP 2 o .na -\f2「HotSpot VM Specific Options」\fP @ +\f2HotSpot VM Specific Options\fP @ .fi http://java.sun.com/docs/hotspot/VMOptions.html .RE diff --git a/src/linux/doc/man/ja/javac.1 b/src/linux/doc/man/ja/javac.1 index 905022aaa850b81271f6a910a7d55e4bc55dac80..6987ff94b684ffed2bbeb5a735a13d9693e1d19e 100644 --- a/src/linux/doc/man/ja/javac.1 +++ b/src/linux/doc/man/ja/javac.1 @@ -1,4 +1,4 @@ -." Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1994, 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 @@ -19,325 +19,423 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH javac 1 "02 Jun 2010" +.TH javac 1 "14 Apr 2011" .LP -.SH "名前" -javac \- Java プログラミング言語コンパイラ +.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 - +.SH "" .LP .nf \f3 .fl \fP\f3javac\fP [ options ] [ sourcefiles ] [ classes ] [ @argfiles ] .fl - + .fl .fi .LP .LP -引数は順不同です。 -.LP -.RS 3 - +ϽƱǤ .LP .RS 3 .TP 3 options -コマンド行オプション。 +ޥɹԥץ .TP 3 sourcefiles -コンパイルされる 1 つ以上のソースファイル (MyClass.java など) +ѥ뤵 1 İʾΥե (MyClass.java ʤ) .TP 3 classes -注釈の処理対象となる 1 つ以上のクラス (MyPackage.MyClass など) +νоݤȤʤ 1 İʾΥ饹 (MyPackage.MyClass ʤ) .TP 3 @argfiles -オプションとソースファイルを列挙した 1 つ以上のファイル。このファイルの中では、\f2\-J\fP オプションは指定できません。 +ץȥե󤷤 1 İʾΥե롣ΥեǤ \f2\-J\fP ץϻǤޤ .RE .LP -.RE -.SH "説明" -.LP - +.SH "" .LP .LP -\f3javac\fP ツールは、Java プログラミング言語で記述されたクラスとインタフェースの定義を読み取り、バイトコードのクラスファイルにコンパイルします。また、Java ソースファイルおよびクラス内の注釈の処理も行います。 +\f3javac\fP ġϡJava ץߥ󥰸ǵҤ줿饹ȥ󥿥եɤ߼ꡢХȥɤΥ饹ե˥ѥ뤷ޤޤJava ե뤪ӥ饹νԤޤ .LP .LP -ソースコードのファイル名を \f3javac\fP に渡すには、次の 2 つの方法があります。 +ɤΥե̾ \f3javac\fP Ϥˤϡ 2 Ĥˡޤ .LP .RS 3 .TP 2 o -ソースファイルの数が少ない場合は、ファイル名をコマンド行で直接指定します。 +եοʤϡե̾򥳥ޥɹԤľܻꤷޤ .TP 2 o -ソースファイルの数が多い場合は、ファイル名を空白または改行で区切って、1 つのファイルに列挙します。次に、このリストファイル名の先頭に \f3@\fP を付けて、\f3javac\fP のコマンド行で指定します。 +եο¿ϡե̾ޤϲԤǶڤäơ1 ĤΥե󤷤ޤˡΥꥹȥե̾Ƭ \f3@\fP դơ\f3javac\fP ΥޥɹԤǻꤷޤ .RE .LP .LP -ソースコードのファイル名は \f2.java\fP 拡張子を、クラスのファイル名は \f2.class\fP 拡張子を持っていなければなりません。 また、ソースファイルとクラスファイルのどちらも、該当するクラスに対応するルート名を持っていなければなりません。たとえば、\f2MyClass\fP という名前のクラスは、\f2MyClass.java\fP という名前のソースファイルに記述します。 このソースファイルは、\f2MyClass.class\fP という名前のバイトコードクラスファイルにコンパイルされます。 +ɤΥե̾ \f2.java\fP ĥҤ򡢥饹Υե̾ \f2.class\fP ĥҤäƤʤФʤޤ󡣤ޤեȥ饹եΤɤ⡢륯饹б롼̾äƤʤФʤޤ󡣤ȤС \f2MyClass\fP Ȥ̾Υ饹ϡ \f2MyClass.java\fP Ȥ̾Υե˵ҤޤΥեϡ \f2MyClass.class\fP Ȥ̾ΥХȥɥ饹ե˥ѥ뤵ޤ .LP .LP -内部クラスが定義されていると、追加のクラスファイルが生成されます。これらのクラスファイルの名前は、\f2MyClass$MyInnerClass.class\fP のように、外部クラス名と内部クラス名を組み合わせたものになります。 +饹ƤȡɲäΥ饹ե뤬ޤΥ饹ե̾ϡ \f2MyClass$MyInnerClass.class\fP Τ褦ˡ饹̾饹̾Ȥ߹碌Τˤʤޤ .LP .LP -ソースファイルは、パッケージツリーを反映したディレクトリツリーに配置する必要があります。たとえば、すべてのソースファイルを \f3/workspace\fP に置いている場合、\f2com.mysoft.mypack.MyClass\fP のソースコードは \f3/workspace/com/mysoft/mypack/MyClass.java\fP にある必要があります。 +եϡѥåĥ꡼ȿǤǥ쥯ȥĥ꡼֤ɬפޤȤС٤ƤΥե \f3/workspace\fP ֤Ƥ硢 \f2com.mysoft.mypack.MyClass\fP Υɤ \f3/workspace/com/mysoft/mypack/MyClass.java\fP ˤɬפޤ .LP .LP -デフォルトでは、コンパイラは、各クラスファイルを対応するソースファイルと同じディレクトリに置きます。別の出力先ディレクトリを指定するには、\f3\-d\fP を使用します (このあとのオプションを参照)。 +ǥեȤǤϡѥϡƥ饹եб륽եƱǥ쥯ȥ֤ޤ̤νǥ쥯ȥꤹˤϡ\f3\-d\fP Ѥޤ (ΤȤΥץ򻲾) .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .LP -コンパイラには、現在の開発環境でサポートされており、将来のリリースでもサポートされる標準オプションのセットがあります。これ以外の非標準オプションは、現在の仮想マシンおよびコンパイラの実装に固有のオプションで、将来に変更される可能性があります。非標準オプションは、\f3\-X\fP で始まります。 +ѥˤϡߤγȯĶǥݡȤƤꡢΥ꡼Ǥ⥵ݡȤɸ४ץΥåȤޤʳɸ४ץϡߤβۥޥ󤪤ӥѥμ˸ͭΥץǡѹǽޤɸ४ץϡ\f3\-X\fP ǻϤޤޤ .LP .SS -標準オプション -.LP -.RS 3 - +ɸ४ץ .LP .RS 3 .TP 3 \-Akey[=value] -注釈プロセッサに渡されるオプション。これらは、javac によって直接解釈されず、個々のプロセッサによって使用されます。 \f2key\fP には、1 つまたは複数の識別子を「.」で区切ったものを指定してください。 +ץåϤ륪ץ󡣤ϡjavac ˤäľܲᤵ줺ġΥץåˤäƻѤޤ\f2key\fP ˤϡ1 Ĥޤʣμ̻Ҥ.פǶڤäΤꤷƤ .TP 3 -\-cp path または \-classpath path -ユーザーのクラスファイルおよび (場合によっては) 注釈プロセッサやソースファイルの検索場所を指定します。このクラスパスは \f3CLASSPATH\fP 環境変数のユーザークラスパスをオーバーライドします。\f3CLASSPATH\fP、\f3\-cp\fP、\f3\-classpath\fP のいずれも指定されていない場合、ユーザークラスパスは、現在のディレクトリになります。詳細は、 -.na -\f2「クラスパスの設定」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照してください。 +\-cp path ޤ \-classpath path +桼Υ饹ե뤪 (ˤäƤ) ץå䥽եθꤷޤΥ饹ѥ \f3CLASSPATH\fP ĶѿΥ桼饹ѥ򥪡С饤ɤޤ\f3CLASSPATH\fP\f3\-cp\fP\f3\-classpath\fP ΤꤵƤʤ硢桼饹ѥϡߤΥǥ쥯ȥˤʤޤܺ٤ϡ֥饹ѥפ򻲾ȤƤ .LP -\f3\-sourcepath\fP オプションが指定されていない場合は、ソースファイルもユーザークラスパスから検索されます。 +\f3\-sourcepath\fP ץ󤬻ꤵƤʤϡե桼饹ѥ鸡ޤ .LP -\f3\-processorpath\fP オプションが指定されていない場合は、注釈プロセッサもユーザークラスパスから検索されます。 +\f3\-processorpath\fP ץ󤬻ꤵƤʤϡץå桼饹ѥ鸡ޤ .LP -便宜上、\f2*\fP のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 \f2.jar\fP または \f2.JAR\fP を持つすべてのファイルのリストを指定するのと同じとみなされます。 -.br -.br -たとえば、ディレクトリ \f2foo\fP に \f2a.jar\fP と \f2b.JAR\fP が含まれている場合、クラスパス要素 \f2foo/*\fP は \f2A.jar:b.JAR\fP に展開されます。 ただし、JAR ファイルの順番は指定されません。このリストには、隠しファイルも含め、指定されたディレクトリ内のすべての JAR ファイルが含まれます。\f2*\fP だけから成るクラスパスエントリは、カレントディレクトリ内のすべての JAR ファイルのリストに展開されます。\f2CLASSPATH\fP 環境変数も、定義時には同様に展開されます。\f3注:\fPコマンド行環境の構成によっては、\f2javac \-cp "*.jar" MyClass.java\fP などのように、ワイルドカード文字を引用符で囲まなければならない場合があります。 +ص塢 \f2*\fP Υ١̾ޤ९饹ѥǤϡǥ쥯ȥγĥ \f2.jar\fP ޤ \f2.JAR\fP Ĥ٤ƤΥեΥꥹȤꤹΤƱȤߤʤޤ +.LP +ȤСǥ쥯ȥ \f2foo\fP \f2a.jar\fP \f2b.JAR\fP ޤޤƤ硢饹ѥ \f2foo/*\fP \f2A.jar:b.JAR\fP ŸޤJAR եν֤ϻꤵޤ󡣤ΥꥹȤˤϡեޤᡢꤵ줿ǥ쥯ȥΤ٤Ƥ JAR ե뤬ޤޤޤ \f2*\fP 륯饹ѥȥϡߤΥǥ쥯ȥΤ٤Ƥ JAR եΥꥹȤŸޤ \f2CLASSPATH\fP Ķѿ⡢ˤƱͤŸޤ\f3:\fP ޥɹԴĶιˤäƤϡ \f2javac \-cp "*.jar" MyClass.java\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 になります。 +饹եνǥ쥯ȥꤷޤΥǥ쥯ȥϤǤ¸ߤƤɬפޤ\f3javac\fP Ϻޤ󡣥饹ѥåΰǤ硢\f3javac\fP ϡɬפ˱ƥǥ쥯ȥѥå̾ȿǤ֥ǥ쥯ȥ˥饹ե֤ޤȤС\f3\-d /home/myclasses\fP Ȼꤷ饹̾ \f2com.mypackage.MyClass\fP Ǥ硢饹ե \f2/home/myclasses/com/mypackage/MyClass.class\fP ˤʤޤ .LP -\f3\-d\fP が指定されなかった場合、\f3javac\fP は各クラスファイルを、その生成元となるソースファイルと同じディレクトリ内に格納します。 +\f3\-d\fP ꤵʤä硢\f3javac\fP ϳƥ饹ե򡢤Ȥʤ륽եƱǥ쥯ȥ˳Ǽޤ .LP -\f3注:\fP\f3\-d\fP で指定したディレクトリはユーザークラスパスに自動的には追加されません。 +\f3:\fP \f3\-d\fP ǻꤷǥ쥯ȥϥ桼饹ѥ˼ưŪˤɲäޤ .TP 3 \-deprecation -推奨されないメンバーやクラスが、使用またはオーバーライドされるたびに説明を表示します。\f3\-deprecation\fP が指定されていない場合、\f3javac\fP は、推奨されないメンバーやクラスを使用またはオーバーライドしているソースファイルの要約を表示します。\f3\-deprecation\fP は \f3\-Xlint:deprecation\fP の省略表記です。 +侩ʤС䥯饹ѤޤϥС饤ɤ뤿Ӥɽޤ\f3\-deprecation\fP ꤵƤʤ硢\f3javac\fP ϡ侩ʤС䥯饹ѤޤϥС饤ɤƤ륽եɽޤ\f3\-deprecation\fP \f3\-Xlint:deprecation\fP ξάɽǤ .TP 3 \-encoding encoding -ソースファイルのエンコーディング名 (\f2EUC\-JP\fP や \f2UTF\-8\fP など) を指定します。\f3\-encoding\fP が指定されていない場合は、プラットフォームのデフォルトコンバータが使われます。 +եΥ󥳡ǥ̾ ( \f2EUC\-JP UTF\-8\fP ʤ) ꤷޤ\f3\-encoding\fP ꤵƤʤϡץåȥեΥǥեȥСȤޤ +.TP 3 +\-endorseddirs directories +ǧ줿ɸѥΰ֤򥪡С饤ɤޤ +.TP 3 +\-extdirs directories +\f2ext\fP ǥ쥯ȥΰ֤򥪡С饤ɤޤ\f2directories\fP ѿˤϡǶڤäǥ쥯ȥΥꥹȤꤷޤꤷǥ쥯ȥγ JAR ֤顢饹ե뤬ޤĤä٤Ƥ JAR ֤ϼưŪ˥饹ѥΰˤʤޤ +.LP +ѥ (ۤʤ 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 を使用します。 このオプションが指定されなかった場合のデフォルト動作は、クラスファイルの自動生成になります。その場合、そのようなクラスファイルが生成された時に注釈処理も実行されると、コンパイラから警告が発行されます。 このオプションが明示的に設定された場合には、警告は発行されません。 「型の検索」を参照してください。 +Ū˥ɤ줿եФ륯饹ե椷ޤ饹եưˤϡ\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 ˥ץϤȤϡ褯ԤƤޤ +.LP +\f3:\fP \f3CLASSPATH\fP\f3\-classpath\fP\f3\-bootclasspath\fP \f3\-extdirs\fP ϡ\f3javac\fP ¹Ԥ뤿˻Ȥ饹ꤹΤǤϤޤ󡣤Τ褦ˡǥѥμ뤳Ȥϡ̵̣̾Ǥꡢ˴ȼޤΤ褦ˡȤɬפϡ\f3\-J\fP ץȤäơɬפʥץظ \f3java\fP ưġϤƤ .TP 3 \-nowarn -警告メッセージを無効にします。これは \f3\-Xlint:none\fP と同じ意味です。 +ٹå̵ˤޤ \f3\-Xlint:none\fP Ʊ̣Ǥ .TP 3 \-proc: {none,only} -注釈処理、コンパイル、その両方、のいずれを実行するかを制御します。\f3\-proc:none\fP は、注釈処理なしでコンパイルが実行されることを意味します。\f3\-proc:only\fP は、注釈処理だけが実行され、後続のコンパイルはまったく実行されないことを意味します。 +ѥ롢ξΤ¹Ԥ뤫椷ޤ\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 内に格納されます。 +줿եγǼȤʤǥ쥯ȥꤷޤΥǥ쥯ȥϤǤ¸ߤƤɬפޤ\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 には次の値を指定できます。 +դ륽ɤΥСꤷޤ\f2release\fP ˤϼͤǤޤ .RS 3 .TP 3 1.3 -このコンパイラでは、JDK 1.3 以降に導入されたアサーション、総称、または他の言語機能をサポートしません。 +ΥѥǤϡJDK 1.3 ʹߤƳ줿Ρޤ¾θ쵡ǽ򥵥ݡȤޤ .TP 3 1.4 -JDK 1.4 で導入された、アサーションを含むコードを受け付けます。 +JDK 1.4 Ƴ줿ޤॳɤդޤ .TP 3 1.5 -JDK 5 で導入された総称および他の言語機能を含んだコードを受け付けます。 +JDK 5 Ƴ줿Τ¾θ쵡ǽޤɤդޤ .TP 3 5 -1.5 と同義です。 +1.5 ƱǤ .TP 3 1.6 -これがデフォルト値です。Java SE 6 では言語に対する変更は導入されませんでしたが、ソースファイル内のエンコーディングエラーが、以前のような「警告」ではなく、「エラー」として報告されるようになりました。 +줬ǥեͤǤJava SE 6 ǤϸФѹƳޤǤեΥ󥳡ǥ󥰥顼Τ褦ʡַٹפǤϤʤ֥顼פȤ𤵤褦ˤʤޤ .TP 3 6 -1.6 と同義です。 +1.6 ƱǤ +.TP 3 +1.7 +JDK 7 Ƴ줿ǽޤॳɤդޤ +.TP 3 +7 +1.7 ƱǤ .RE .TP 3 \-sourcepath sourcepath -クラスまたはインタフェースの定義を検索するソースコードパスを指定します。ユーザークラスパスと同様に、ソースパスの複数のエントリはコロン (\f3:\fP) で区切ります。 ソースパスのエントリには、ディレクトリ、JAR アーカイブ、または ZIP アーカイブを指定できます。パッケージを使っている場合は、ディレクトリまたはアーカイブ内のローカルパス名がパッケージ名を反映していなければなりません。 +饹ޤϥ󥿥ե򸡺륽ɥѥꤷޤ桼饹ѥƱͤˡѥʣΥȥϥ (\f3:\fP) ǶڤޤѥΥȥˤϡǥ쥯ȥꡢJAR ֡ޤ ZIP ֤ǤޤѥåȤäƤϡǥ쥯ȥޤϥΥѥ̾ѥå̾ȿǤƤʤФʤޤ .LP -\f3注:\fP\ クラスパスからクラスだけでなくそのソースも見つかった場合、そのクラスは自動再コンパイルの対象になることがあります。「型の検索」を参照してください。 +\f3:\fP\ 饹ѥ饯饹ǤʤΥ⸫Ĥä硢Υ饹ϼưƥѥоݤˤʤ뤳Ȥޤַθפ򻲾ȤƤ .TP 3 \-verbose -詳細な出力を表示します。ロードされるクラスおよびコンパイルされるソースファイルごとの情報が出力されます。 +ܺ٤ʽϤɽޤɤ륯饹ӥѥ뤵륽ե뤴Ȥξ󤬽Ϥޤ +.TP 3 +\-version +СϤޤ +.TP 3 +\-Werror +ٹȯ˥ѥλޤ .TP 3 \-X -非標準オプションに関する情報を表示して終了します。 +ɸ४ץ˴ؤɽƽλޤ .RE .LP -.RE .SS -クロスコンパイルオプション -.LP -.RS 3 - +ѥ륪ץ .LP .LP -デフォルトでは、クラスのコンパイルは、\f3javac\fP が添付されているプラットフォームのブートストラップクラスおよび拡張機能クラスに対して行われます。ただし、\f3javac\fP は、異なる Java プラットフォームに実装されたブートストラップクラスおよび拡張機能クラスに対してコンパイルを行う「クロスコンパイル」もサポートしています。クロスコンパイルを行う場合は、\f3\-bootclasspath\fP および \f3\-extdirs\fP を使うことが重要です。 このあとの「クロスコンパイルの例」を参照してください。 +ǥեȤǤϡ饹Υѥϡ\f3javac\fP źդƤץåȥեΥ֡ȥȥåץ饹ӳĥǽ饹ФƹԤޤ\f3javac\fP ϡۤʤ Java ץåȥե˼줿֡ȥȥåץ饹ӳĥǽ饹ФƥѥԤ֥ѥפ⥵ݡȤƤޤѥԤϡ\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 も可) です。 +ꤵ줿С 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 の値によって決まります。 +\f3\-target\fP ΥǥեȤϡΤ褦 \f3\-source\fP ͤˤäƷޤޤ .RS 3 .TP 2 o -\-source が\f3指定されなかった\fP場合、\-target の値は \f31.6\fP になります。 +\-source \f3ꤵʤä\fP硢\-target ͤ \f31.7\fP ˤʤޤ .TP 2 o -\-source が\f31.2\fP の場合、\-target の値は \f31.4\fP になります。 +\-source \f31.2\fP ξ硢\-target ͤ \f31.4\fP ˤʤޤ .TP 2 o -\-source が\f31.3\fP の場合、\-target の値は \f31.4\fP になります。 +\-source \f31.3\fP ξ硢\-target ͤ \f31.4\fP ˤʤޤ .TP 2 o -\-source が\f3それ以外の値の場合はすべて\fP、\\\-target の値は \f3\-source\fP の値になります。 +\-source \f3ʳͤξϤ٤\fP\f3\\\-target\fP ͤ \f3\-source\fP ͤˤʤޤ .RE .TP 3 \-bootclasspath bootclasspath -指定された一連のブートクラスに対してクロスコンパイルを行います。ユーザークラスパスと同様に、ブートクラスパスの複数のエントリはコロン (\f3:\fP) で区切ります。 ブートクラスパスのエントリには、ディレクトリ、JAR アーカイブ、または ZIP アーカイブを指定できます。 -.TP 3 -\-extdirs directories -指定された拡張機能ディレクトリに対してクロスコンパイルを行います。\f2directories\fP には、コロンで区切ったディレクトリのリストを指定します。指定したディレクトリ内の各 JAR アーカイブから、クラスファイルが検索されます。 +ꤵ줿ϢΥ֡ȥ饹ФƥѥԤޤ桼饹ѥƱͤˡ֡ȥ饹ѥʣΥȥϥ (\f3:\fP) Ƕڤޤ֡ȥ饹ѥΥȥˤϡǥ쥯ȥꡢJAR ֡ޤ ZIP ֤Ǥޤ .RE .LP -.RE .SS -非標準オプション -.LP -.RS 3 - +ɸ४ץ .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 -Java 言語仕様では指定されていないすべての警告を無効にします。 +Java ͤǤϻꤵƤʤ٤Ƥηٹ̵ˤޤ +.TP 3 +\-Xlint:name +ٹ \f2name\fP ͭˤޤΥץͭˤǤٹΥꥹȤˤĤƤϡ\-Xlint ץȤäͭޤ̵ˤǤٹפ򻲾ȤƤ .TP 3 \-Xlint:\-name -警告 \f2name\fP を無効にします。 ただし、\f2name\fP は、\f3\-Xlint:\fP\f2name\fP に使用できる警告名のいずれかになります。 この警告名は次のとおりです。 +ٹ \f2name\fP ̵ˤޤΥץ̵ˤǤٹΥꥹȤˤĤƤϡ\-Xlint ץȤäͭޤ̵ˤǤٹפ򻲾ȤƤ .TP 3 -\-Xlint:unchecked -Java 言語仕様で指定されている未検査変換警告の詳細を示します。 +\-Xmaxerrs number +륨顼κꤷޤ .TP 3 -\-Xlint:path -存在しないパス (classpath、sourcepath など) ディレクトリについて警告します。 +\-Xmaxwarns number +ٹκꤷޤ .TP 3 -\-Xlint:serial -\f2serialVersionUID\fP 定義が直列化可能クラスにないことを警告します。 +\-Xstdout filename +ѥΥå򡢻ꤵ줿եޤǥեȤǤϡѥΥå \f2System.err\fP ޤ +.TP 3 +\-Xprefer:{newer,source} +뷿Фƥեȥ饹եξĤä硢ΤɤΥեɤ߼٤ꤷޤ (ַθפ򻲾)\f2\-Xprefer:newer\fP Ѥ硢뷿Ф륽եȥ饹եοɤ߼ޤ (ǥե)\f2\-Xprefer:source\fP ץѤ硢ե뤬ɤ߼ޤSOURCE ¸ݥꥷȤä줿ǤդץåǤ褦ˤϡ\f2\-Xprefer:source\fP \f2ѤƤ\fP .TP 3 -\-Xlint:finally -正常に完了できない \f2finally\fP 節について警告します。 +\-Xpkginfo:{always,legacy,nonempty} +ѥåեνꤷޤ .TP 3 -\-Xlint:fallthrough -fall\-through ケースの \f2switch\fP ブロックをチェックし、検出されたものに対して警告メッセージを表示します。Fall\-through ケースは、\f2switch\fP ブロック内の最後のケースを除くケースです。 このコードには \f2break\fP 文は含まれません。 コードの実行をそのケースから次のケースへ移動します。たとえば、この \f2switch\fP ブロック内の \f2case 1\fP ラベルに続くコードは、\f2break\fP 文で終わっていません。 -.RS 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 +.LP +᥽å \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 @@ -347,104 +445,383 @@ case 1: .fl System.out.println("1"); .fl - // No break; statement here. + // No break statement here. .fl case 2: .fl System.out.println("2"); .fl } -.fl - .fl \fP .fi -.RE -このコードのコンパイル時に \f2\-Xlint:fallthrough\fP フラグが使用されていた場合、コンパイラは 当該ケースの行番号とともに、fall\-through ケースの可能性があることを示す警告を発行します。 +.LP +ΥɤΥѥ \f2\-Xlint:fallthrough\fP ե饰ѤƤ硢ѥ ιֹȤȤˡfall\-through βǽ뤳Ȥ򼨤ٹȯԤޤ .TP 3 -\-Xmaxerrs number -印刷するエラーの最大数を設定します。 +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 +.LP +Ǥϡѥ \f2finally\fP ֥å˴ؤٹޤΥ᥽åɤƤӽФȡ 1 ǤϤʤ \f20\fP \f2֤ޤ\fP \f2finally\fP ֥åϡ \f2try\fP ֥åλɬ¹ԤޤǤϡ椬 \f2catch\fP ˰ܤ줿硢᥽åɤϽλޤ \f2finally\fP ֥åϼ¹Ԥɬפ뤿ᡢ椬ǤˤΥ᥽åɤγ˰ܤƤƤ⡢Υ֥åϼ¹Ԥޤ .TP 3 -\-Xmaxwarns number -印刷する警告の最大数を設定します。 +options +ޥɹԥץλѤ˴ؤˤĤƷٹ𤷤ޤμηٹˤĤƤϡ֥ѥפ򻲾ȤƤ .TP 3 -\-Xstdout filename -コンパイラのメッセージを、指定されたファイルに送ります。デフォルトでは、コンパイラのメッセージは \f2System.err\fP に送られます。 +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 +.LP +ѥϼΤ褦ʷٹޤ +.nf +\f3 +.fl +warning: [override] varargsMethod(String[]) in ClassWithOverridingMethod overrides varargsMethod(String...) in ClassWithVarargsMethod; overriding method is missing '...' +.fl +\fP +.fi +.LP +ѥϡvarargs ᥽åɤ򸡽Фȡvarargs βѥ᡼Ѵޤ᥽å \f2ClassWithVarargsMethod.varargsMethod\fP Ǥϡѥ varargs βѥ᡼ \f2String... s\fP 򲾥ѥ᡼ \f2String[] s\fP ѴޤString[] s ϡ᥽å \f2ClassWithOverridingMethod.varargsMethod\fP βѥ᡼бǤη̡Ǥϥѥ뤬Ԥޤ .TP 3 -\-Xprefer:{newer,source} -ある型に対してソースファイルとクラスファイルの両方が見つかった場合、そのどちらのファイルを読み取るべきかを指定します (「型の検索」を参照)。\f2\-Xprefer:newer\fP を使用した場合、ある型に対するソースファイルとクラスファイルの新しい方が読み取られます (デフォルト)。\f2\-Xprefer:source\fPオプションを使用した場合、ソースファイルが読み取られます。\f2SOURCE\fP の保存ポリシーを使って宣言された注釈に任意の注釈プロセッサがアクセスできるようにしたい場合は、\f2\-Xprefer:source\fPを使用してください。 +path +ޥɹԤǤ̵ʥѥǤ¸ߤʤѥǥ쥯ȥˤĤƷٹ𤷤ޤ (饹ѥѥʤɤΥѥϢ)Τ褦ʷٹ \f2@SuppressWarnings\fP 뤳ȤϤǤޤ󡣼򼨤ޤ +.nf +\f3 +.fl +javac \-Xlint:path \-classpath /nonexistentpath Example.java +.fl +\fP +.fi .TP 3 -\-Xprint -指定された型のテキスト表現をデバッグ目的で出力します。 注釈処理、コンパイルのどちらも実行しません。出力形式は変更される可能性があります。 +processing +˴ؤˤĤƷٹ𤷤ޤѥ餬ηٹΤϡޤ९饹ȤˡѤƤץåǤη㳰ǤʤǤñץå򼡤˼ޤ +.LP +\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 elems, RoundEnvironment renv) { +.fl + return true; +.fl + } +.fl + +.fl + public SourceVersion getSupportedSourceVersion() { +.fl + return SourceVersion.latest(); +.fl + } +.fl +} +.fl +\fP +.fi +.LP +\f3ե \fP\f4AnnosWithoutProcessors.java\fP\f3:\fP +.nf +\f3 +.fl +@interface Anno { } +.fl + +.fl +@Anno +.fl +class AnnosWithoutProcessors { } +.fl +\fP +.fi +.LP +Υޥɤϡץå \f2AnnoProc\fP 򥳥ѥ뤷ץå򥽡ե \f2AnnosWithoutProcessors.java\fP ФƼ¹Ԥޤ +.nf +\f3 +.fl +% javac AnnoProc.java +.fl +% javac \-cp . \-Xlint:processing \-processor AnnoProc \-proc:only AnnosWithoutProcessors.java +.fl +\fP +.fi +.LP +ѥ餬ե \f2AnnosWithoutProcessors.java\fP Фץå¹Ԥȡηٹޤ +.nf +\f3 +.fl +warning: [processing] No processor claimed any of these annotations: Anno +.fl +\fP +.fi +.LP +褹ˤϡ饹 \f2AnnosWithoutProcessors\fP ӻѤ̾ \f2Anno\fP \f2NotAnno\fP ѹޤ .TP 3 -\-XprintProcessorInfo -ある特定のプロセッサが処理を依頼されている注釈に関する情報を出力します。 +rawtypes +raw Ф̤ˤĤƷٹ𤷤ޤäˤΥץϡʤѥ᡼줿Ѥ桼ФƷٹ𤷤ޤʸǤϡ \f2rawtypes\fP ٹޤ +.nf +\f3 +.fl +void countElements(List l) { ... } +.fl +\fP +.fi +.LP +ʸǤϡ \f2rawtypes\fP ٹޤ +.nf +\f3 +.fl +void countElements(List l) { ... } +.fl +\fP +.fi +.LP +\f2List\fP raw Ǥ \f2List\fP ϥХɷΥ磻ɥɤΥѥ᡼줿Ǥ \f2List\fP ϥѥ᡼줿󥿥եʤΤǡɬηꤹɬפޤǤϡ \f2List\fP βϥХɷΥ磻ɥ (\f2?\fP) ȤäƤβѥ᡼ȤƻꤵޤĤޤꡢ \f2countElements\fP ᥽åɤ \f2List\fP 󥿥եΤɤΥ󥹥󥹲դ뤳ȤǤޤ .TP 3 -\-XprintRounds -初回および後続の注釈処理ラウンドに関する情報を出力します。 -.RE +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 .LP -.RE -.SS -\-J オプション +ѥϼηٹޤ +.nf +\f3 +.fl +warning: [serial] serializable class PersistentTime has no definition of serialVersionUID +.fl +\fP +.fi .LP -.RS 3 - +ľ󲽲ǽ饹 \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 .LP -.RS 3 +ѥϼηٹޤ +.nf +\f3 +.fl +warning: [static] static method should be qualified by type name, XLintStatic, instead of by an expression +.fl +\fP +.fi +.LP +褹뤿ˡΤ褦 static ᥽å \f2m1\fP ƤӽФȤǤޤ +.nf +\f3 +.fl +XLintStatic.m1(); +.fl +\fP +.fi +.LP +뤤ϡ \f2static\fP ɤ᥽å \f2m1\fP 뤳ȤǤޤ .TP 3 -\-Joption -\f3javac\fP が呼び出す \f3java\fP 起動ツールに、\f2option\fP を渡します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。このオプションは \f3\-X\fP で始まっていませんが、\f3javac\fP の「標準オプション」ではありません。\f3\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 +try +try\-with\-resources ʸޤࡢ \f2try\fP ֥åλѤ˴ؤˤĤƷٹ𤷤ޤȤСtry ʸ줿꥽ \f2ac\fP Ѥʤˡ \f2ʸФƷٹ\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(); +.fl + List ls = l; // unchecked warning +.fl +\fP +.fi .LP -\f3注:\fP \ \f3CLASSPATH\fP、\f3\-classpath\fP、\f3\-bootclasspath\fP、および \f3\-extdirs\fP は、\f3javac\fP を実行するために使うクラスを指定するものではありません。このような方法でコンパイラの実装を操作することは、通常は無意味であり、常に危険を伴います。このような方法を使う必要がある場合は、\f3\-J\fP オプションを使って、必要なオプションを背後の \f3java\fP 起動ツールに渡してください。 -.RE - +ξõˡ \f2ArrayList\fP \f2List\fP Ϥ줾 \f2ArrayList\fP \f2List\fP ˤʤޤ .LP -.RE -.SH "コマンド行引数ファイル" +ѿ \f2ls\fP ˤϥѥ᡼줿 \f2List\fP ꤵƤޤl ˤäƻȤ \f2List\fP \f2\fP \f2ls\fP ȡѥ̤ٹޤѥ \f2l\fP \f2List\fP 򻲾Ȥ뤫ɤ򥳥ѥȽǤǤޤ󡣤ޤJVM ¹ԻˤȽǤǤʤȤǧƤޤl List 򻲾Ȥޤ󡣤η̡ҡױȯޤ +.LP +ܤȡҡױ֤ȯΤϡ \f2List\fP ֥ \f2l\fP ( static \f2List\fP) ̤ \f2List\fP ֥ \f2ls\fP (ۤʤ static \f2List\fP ) ǤѥǤϤ̤˵ĤƤޤΤ򥵥ݡȤʤ Java SE ΥСȤβ̸ߴݤ뤿ˡĤɬפޤõΤˡ \f2List\fP \f2List\fP \f2List\fP ˤʤޤη̡ѥϥ֥ \f2l\fP ( \f2List\fP Ȥ raw ) 򥪥֥ \f2ls\fP뤳ȤĤޤ +.TP 3 +varargs +Ѱ (varargs) ᥽åɡäݲǽޤΤλѤǤʤȤٹ𤷤ޤ򼨤ޤ +.nf +\f3 +.fl +public class ArrayBuilder { +.fl + public static void addToList (List listArg, T... elements) { +.fl + for (T x : elements) { +.fl + listArg.add(x); +.fl + } +.fl + } +.fl +} +.fl +\fP +.fi +.LP +ѥϡ᥽å \f2ArrayBuilder.addToList\fP ˴ؤ뼡ηٹޤ +.nf +\f3 +.fl +warning: [varargs] Possible heap pollution from parameterized vararg type T +.fl +\fP +.fi .LP +ѥϡvarargs ᥽åɤ򸡽Фȡvarargs βѥ᡼ѴޤJava ץߥ󥰸Ǥϡѥ᡼줿κĤƤޤ󡣥᥽å \f2ArrayBuilder.addToList\fP Ǥϡѥ varargs βѥ᡼ \f2T... elements\fP 򲾥ѥ᡼ \f2T[] elements\fP() ѴޤõΤˡѥ varargs βѥ᡼ \f2Object[] elements\fP Ѵޤη̡ҡױȯǽޤ +.RE .LP +.SH "ޥɹ԰ե" .LP -\f2javac\fP のコマンド行を短くしたり簡潔にしたりするために、\f2javac\fP コマンドに対する引数 (\f2\-J\fP オプションを除く) を含む 1 つ以上のファイルを指定することができます。この方法を使うと、どのオペレーティングシステム上でも、任意の長さの javac コマンドを作成できます。 .LP +javac ΥޥɹԤûʷˤꤹ뤿ˡ \f2javac\fP ޥɤФ ( \f2\-J\fP ץ) ޤ 1 İʾΥեꤹ뤳ȤǤޤˡȤȡɤΥڥ졼ƥ󥰥ƥǤ⡢ǤդĹ javac ޥɤǤޤ .LP -引数ファイルには、javac のオプションとソースファイル名を自由に組み合わせて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に空白が含まれている場合は、そのファイル名全体を二重引用符で囲みます。 .LP +եˤϡjavac Υץȥե̾ͳȤ߹碌ƵҤǤޤեγưϡڡޤϲԤǶڤޤե̾˶򤬴ޤޤƤϡΥե̾ΤŰǰϤߤޤ .LP -引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。引数ファイル内のファイル名リストでは、ワイルドカード (*) は使用できません。たとえば、\f2*.java\fP とは指定できません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、\f2\-J\fP オプションもサポートされていません。 このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 .LP +եΥե̾ϡߤΥǥ쥯ȥ꤫鸫Хѥˤʤޤեΰ֤鸫ХѥǤϤޤ󡣰եΥե̾ꥹȤǤϡ磻ɥ (*) ϻѤǤޤ󡣤ȤС \f2*.java\fP ȤϻǤޤ󡣰եΰ \f2@\fP ʸѤơʣΥեƵŪ˲᤹뤳ȤϥݡȤƤޤ󡣤ޤ \f2\-J\fP ץ⥵ݡȤƤޤ󡣤ΥץϵưġϤޤưġǤϰե򥵥ݡȤƤʤǤ .LP -javac を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。javac は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +.LP +javac ¹ԤȤˡưեΥѥȥե̾Ƭ \f2@\fP ʸդϤޤjavac ϡ\f2@\fP ʸǻϤޤ򸫤ĤȡΥեƤŸưꥹȤޤ .LP .SS -引数ファイルを 1 つ指定する例 +ե 1 Ļꤹ .LP .LP -\f2argfile\fP という名前の引数ファイルにすべての javac 引数を格納する場合は、次のように指定します。 +\f2argfileפȤ̾ΰե\fP٤Ƥ javac ǼϡΤ褦˻ꤷޤ .LP .nf \f3 .fl - % \fP\f3javac @argfile\fP -.fl - +% \fP\f3javac @argfile\fP .fl .fi .LP .LP -この引数ファイルには、次の例で示されている 2 つのファイルの内容を両方とも入れることができます。 +ΰեˤϡǼƤ 2 ĤΥեƤξȤ뤳ȤǤޤ .LP .SS -引数ファイルを 2 つ指定する例 +ե 2 Ļꤹ .LP .LP -たとえば、javac オプション用に 1 ファイル、ソースファイル名用に 1 ファイルというように、2 つの引数ファイルを作成することもできます。なお、このあとのリストでは、行の継続文字を使用していません。 +ȤСjavac ץѤ 1 ե롢ե̾Ѥ 1 եȤ褦ˡ2 Ĥΰե뤳ȤǤޤʤΤȤΥꥹȤǤϡԤη³ʸѤƤޤ .LP .LP -以下の内容を含む \f2options\fP という名前のファイルを作成します。 +ʲƤޤ \f2options\fP Ȥեޤ .LP .nf \f3 @@ -455,14 +832,14 @@ javac を実行するときに、各引数ファイルのパスとファイル .fl \-sourcepath /java/pubs/ws/1.3/src/share/classes .fl - + .fl \fP .fi .LP .LP -以下の内容を含む \f2classes\fP という名前のファイルを作成します。 +ʲƤޤ \f2classes\fP Ȥեޤ .LP .nf \f3 @@ -473,120 +850,104 @@ javac を実行するときに、各引数ファイルのパスとファイル .fl MyClass3.java .fl - + .fl \fP .fi .LP .LP -次のコマンドを使用して \f3javac\fP を実行します。 +ΥޥɤѤ \f3javac\fP ¹Ԥޤ .LP .nf \f3 .fl % \fP\f3javac @options @classes\fP .fl - + .fl .fi .LP .SS -パス付きの引数ファイルの例 +ѥդΰե .LP .LP -引数ファイルには、パスを指定できます。 ただし、そのファイル内に指定されたファイル名は、現在の作業ディレクトリから見た相対パスになります。 つまり、下の例の場合は、\f2path1\fP や \f2path2\fP から見た相対パスではありません。 +եˤϡѥǤޤΥե˻ꤵ줿ե̾ϡߤκȥǥ쥯ȥ꤫鸫ХѥˤʤޤĤޤꡢξϡ \f2path1\fP \f2path2\fP 鸫ХѥǤϤޤ .LP .nf \f3 .fl - % \fP\f3javac @path1/options @path2/classes\fP -.fl - +% \fP\f3javac @path1/options @path2/classes\fP .fl .fi .LP -.SH "注釈処理" +.SH "" .LP - .LP +\f3javac\fP ľܥݡȤƤ뤿ᡢΩġǤ \f3apt\fP Ѥɬפʤʤޤ .LP -\f3javac\fP が注釈処理を直接サポートしているため、独立した注釈処理ツールである \f3apt\fP を使用する必要がなくなりました。 .LP -.LP -注釈処理の API は、\f2javax.annotation.processing\fP および \f2javax.lang.model\fP パッケージとそのサブパッケージ内に定義されています。 + API ϡ \f2javax.annotation.processing\fP \f2javax.lang.model\fP ѥåȤΥ֥ѥåƤޤ .LP .SS -注釈処理の概要 +γ .LP .LP -\f3\-proc:none\fP オプションによって注釈処理が無効化されないかぎり、コンパイラは使用可能なすべての注釈プロセッサを検索します。検索パスは \f3\-processorpath\fP オプションを使って指定できます。 検索パスを指定しなかった場合は、ユーザークラスパスが使用されます。プロセッサの検索は、検索パス上の -.br -\f2\ META\-INF/services/javax.annotation.processing.Processor\fP -.br -という名前のサービスプロバイダ構成ファイルに基づいて行われます。このようなファイルには、使用するすべての注釈プロセッサの名前を、1 行に 1 つずつ含めてください。また、別の方法として、\f3\-processor\fP オプションを使ってプロセッサを明示的に指定することもできます。 +\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 回目のラウンドが開始されます。新しく生成されたすべてのソースファイルが走査され、前回と同様に注釈が処理されます。以前のラウンドで呼び出されたプロセッサはすべて、後続のどのラウンドでも呼び出されます。これが、新しいソースファイルが生成されなくなるまで続きます。 +줫Υץåˤäƿե뤬ȡ 2 ܤΥ饦ɤϤޤ줿٤ƤΥե뤬졢Ʊͤ᤬ޤΥ饦ɤǸƤӽФ줿ץåϤ٤ơ³ΤɤΥ饦ɤǤƤӽФޤ줬ե뤬ʤʤޤ³ޤ .LP .LP -あるラウンドで新しいソースファイルが生成されなかった場合、注釈プロセッサがあと 1 回だけ呼び出され、必要な処理を実行する機会が与えられます。 最後に、\f3\-proc:only\fP オプションが使用されないかぎり、コンパイラは、元のソースファイルと生成されたすべてのソースファイルをコンパイルします。 +饦ɤǿե뤬ʤä硢ץå 1 ƤӽФ졢ɬפʽ¹Ԥ뵡ͿޤǸˡ\f3\-proc:only\fP ץ󤬻ѤʤꡢѥϡΥե줿٤ƤΥե򥳥ѥ뤷ޤ .LP .SS -暗黙的にロードされたソースファイル -.LP -.LP -コンパイラは、一連のソースファイルをコンパイルする際に、別のソースファイルを暗黙的にロードしなければならない場合があります (「型の検索」を参照)。そのようなファイルは、現時点では注釈処理の対象になりません。デフォルトでは、注釈処理が実行され、かつ暗黙的にロードされたソースファイルが 1 つでもコンパイルされた場合にコンパイラは警告を発行します。この警告を抑制する方法については、\-implicit オプションを参照してください。 +Ū˥ɤ줿ե .LP -.SH "型の検索" .LP - +ѥϡϢΥե򥳥ѥ뤹ݤˡ̤ΥեŪ˥ɤ뤳Ȥɬפʾ礬ޤ (ַθפ򻲾)Τ褦ʥեϡǤоݤˤʤޤ󡣥ǥեȤǤϡ¹Ԥ졢İŪ˥ɤ줿ե뤬 1 ĤǤ⥳ѥ뤵줿˥ѥϷٹȯԤޤηٹˡˤĤƤϡ\-implicit ץ򻲾ȤƤ .LP +.SH "θ" .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 +ȤС\f3java.applet.Applet\fP 򥵥֥饹ˤ硢\f3ץåȤ\fPΥ饹\f3java.awt.Panel\fP\f3java.awt.Container\fP\f3java.awt.Component\fP\f3java.lang.Object\fPˤѤƤ뤳Ȥˤʤޤ .LP -コンパイラは、型の情報が必要になると、その型を定義しているソースファイルまたはクラスファイルを探します。まず、ブートストラップクラスと拡張機能クラスを検索し、続いてユーザークラスパス (デフォルトではカレントディレクトリ) を検索します。ユーザークラスパスは、\f3CLASSPATH\fP 環境変数を設定して定義するか、または \f3\-classpath\fP コマンド行オプションを使って設定します。詳細は、 -.na -\f2「クラスパスの設定」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照してください。 .LP +ѥϡξɬפˤʤȡηƤ륽եޤϥ饹եõޤޤ֡ȥȥåץ饹ȳĥǽ饹򸡺³ƥ桼饹ѥ (ǥեȤǤϥȥǥ쥯ȥ) 򸡺ޤ桼饹ѥϡ\f3CLASSPATH\fP Ķѿꤷ뤫ޤ \f3\-classpath\fP ޥɹԥץȤäꤷޤܺ٤ϡ֥饹ѥפ򻲾ȤƤ .LP -\-sourcepath オプションが指定されている場合、コンパイラは、指定されたパスからソースファイルを検索します。 それ以外の場合は、ユーザークラスパスからクラスファイルとソースファイルの両方を検索します。 .LP +\-sourcepath ץ󤬻ꤵƤ硢ѥϡꤵ줿ѥ饽ե򸡺ޤʳξϡ桼饹ѥ饯饹եȥեξ򸡺ޤ .LP -\f3\-bootclasspath\fP オプションと \f3\-extdirs\fP オプションを使うと、別のブートストラップクラスや拡張機能クラスを指定できます。 このあとの「クロスコンパイルオプション」を参照してください。 .LP +\f3\-bootclasspath\fP ץ \f3\-extdirs\fP ץȤȡ̤Υ֡ȥȥåץ饹ĥǽ饹ǤޤΤȤΡ֥ѥ륪ץפ򻲾ȤƤ .LP -型の検索に成功したときに得られる結果は、クラスファイル、ソースファイル、またはその両方である場合があります。両方が見つかった場合、そのどちらを使用すべきかを \-Xprefer オプションでコンパイラに指示できます。\f3newer\fP が指定された場合、コンパイラは 2 つのファイルの新しい方を使用します。\f3source\fP が指定された場合、コンパイラはソースファイルを使用します。デフォルトは \f3newer\fP です。 .LP +θȤ̤ϡ饹ե롢ե롢ޤϤξǤ礬ޤξĤä硢ΤɤѤ٤ \-Xprefer ץǥѥ˻ؼǤޤ\f3newer\fP ꤵ줿硢ѥ 2 ĤΥեοѤޤ\f3source\fP ꤵ줿硢ѥϥեѤޤǥեȤ \f3newer\fP Ǥ .LP -型の検索自体によって、または \f3\-Xprefer\fP が設定された結果として必要な型のソースファイルが見つかった場合、コンパイラはそのソースファイルを読み取り、必要な情報を取得します。さらに、コンパイラはデフォルトで、そのソースファイルのコンパイルも行います。\-implicit オプションを使えばその動作を指定できます。\f3none\fP を指定した場合、そのソースファイルのクラスファイルは生成されません。\f3class\fP を指定した場合、そのソースファイルのクラスファイルが生成されます。 .LP +θΤˤäơޤ \f3\-Xprefer\fP ꤵ줿̤ȤɬפʷΥե뤬Ĥä硢ѥϤΥեɤ߼ꡢɬפʾޤˡѥϥǥեȤǡΥեΥѥԤޤ\-implicit ץȤФưǤޤ\f3none\fP ꤷ硢ΥեΥ饹եޤ\f3class\fP ꤷ硢ΥեΥ饹ե뤬ޤ .LP -コンパイラは、注釈処理の完了後に、ある型情報の必要性を認識しない場合があります。その型情報があるソースファイル内に見つかり、かつ \f3\-implicit\fP オプションが指定されていない場合は、そのファイルが注釈処理の対象とならずにコンパイルされることを、コンパイラがユーザーに警告します。この警告を無効にするには、(そのファイルが注釈処理の対象となるように) そのファイルをコマンド行に指定するか、あるいはそのようなソースファイルに対してクラスファイルを生成すべきかどうかを \f3\-implicit\fP オプションを使って指定します。 .LP -.SH "プログラマティックインタフェース" +ѥϡδλˡ뷿ɬǧʤ礬ޤη󤬤륽ե˸Ĥꡢ \f3\-implicit\fP ץ󤬻ꤵƤʤϡΥե뤬оݤȤʤ餺˥ѥ뤵뤳Ȥ򡢥ѥ餬桼˷ٹ𤷤ޤηٹ̵ˤˤϡ(Υե뤬оݤȤʤ褦) Υե򥳥ޥɹԤ˻ꤹ뤫뤤ϤΤ褦ʥեФƥ饹ե٤ɤ \f3\-implicit\fP ץȤäƻꤷޤ .LP - +.SH "ץޥƥå󥿥ե" .LP .LP -\f3javac\fP は、\f2javax.tools\fP パッケージ内のクラスとインタフェースによって定義される新しい Java Compiler API をサポートします。 +\f3javac\fP ϡ \f2javax.tools\fP ѥåΥ饹ȥ󥿥եˤä뿷 Java Compiler API 򥵥ݡȤޤ .LP .SS -例 + .LP .LP -コマンド行から指定された引数を使ってコンパイルを実行するには、次のようなコードを使用します。 +ޥɹԤꤵ줿Ȥäƥѥ¹ԤˤϡΤ褦ʥɤѤޤ .LP .nf \f3 @@ -594,30 +955,25 @@ http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照 JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); .fl int rc = javac.run(null, null, null, args); -.fl - .fl \fP .fi .LP .LP -この場合、標準出力ストリームにすべての診断メッセージが書き出され、コマンド行から呼び出された \f3javac\fP が返すのと同じ終了コードが返されます。 +ξ硢ɸϥȥ꡼ˤ٤Ƥοǥå񤭽Ф졢ޥɹԤƤӽФ줿 \f3javac\fP ֤ΤƱλɤ֤ޤ .LP .LP -\f2javax.tools.JavaCompiler\fP インタフェース上のほかのメソッドを使えば、診断メッセージの処理やファイルの読み取り元/書き込み先の制御などを行えます。 +\f2javax.tools.JavaCompiler\fP 󥿥եΤۤΥ᥽åɤȤСǥåνեɤ߼긵/񤭹ʤɤԤޤ .LP .SS -旧式のインタフェース +켰Υ󥿥ե .LP -.RS 3 - .LP +\f3:\fP API ϡ̸ߴݤ뤿˻ĤƤޤɤǤϡɬҤ Java Compiler API ѤƤ .LP -\f3注:\fP \ この API は、下位互換性を確保するためだけに残されています。 新しいコードでは、必ず前述の Java Compiler API を使用してください。 .LP -.LP -\f2com.sun.tools.javac.Main\fP クラスには、プログラム内からコンパイラを呼び出すための static メソッドが 2 つ用意されています。 それらを次に示します。 +\f2com.sun.tools.javac.Main\fP 饹ˤϡץ⤫饳ѥƤӽФ static ᥽åɤ 2 ѰդƤޤ򼡤˼ޤ .LP .nf \f3 @@ -625,39 +981,30 @@ int rc = javac.run(null, null, null, args); public static int compile(String[] args); .fl public static int compile(String[] args, PrintWriter out); -.fl - .fl \fP .fi .LP .LP -\f2args\fP パラメータは、javac プログラムに通常渡される任意のコマンド行引数を表しています。 その概要については、前出の「形式」節を参照してください。 +\f2args\fP ѥ᡼ϡjavac ץ̾ϤǤդΥޥɹ԰ɽƤޤγפˤĤƤϡФΡַ򻲾ȤƤ .LP .LP -\f2out\fP パラメータは、コンパイラの診断メッセージの出力先を示します。 +\f2out\fP ѥ᡼ϡѥοǥåν򼨤ޤ .LP .LP -戻り値は、\f3javac\fP の終了値と同じです。 +ͤϡ\f3javac\fP νλͤƱǤ .LP .LP -名前が \f2com.sun.tools.javac\fP で始まるパッケージ (非公式には \f2com.sun.tools.javac\fP のサブパッケージとして知られる) に含まれる\f3その他の\fPクラスやメソッドは、どれも完全に内部用であり、いつでも変更される可能性があります。 +̾ \f2com.sun.tools.javac\fP ǻϤޤѥå (ˤ \f2com.sun.tools.javac\fP Υ֥ѥåȤΤ) ˴ޤޤ뤽¾Υ饹᥽åɤϡɤⴰѤǤꡢĤǤѹǽޤ .LP -.RE -.SH "例" +.SH "" .LP .SS -簡単なプログラムのコンパイル +ñʥץΥѥ .LP -.RS 3 - .LP -.LP -\f2Hello.java\fP というソースファイルで、\f3greetings.Hello\fP という名前のクラスを定義しているとします。\f2greetings\fP ディレクトリは、ソースファイルとクラスファイルの両方があるパッケージディレクトリで、現在のディレクトリのすぐ下にあります。このため、この例では、デフォルトのユーザークラスパスを使用できます。また、\f3\-d\fP を使って別の出力先ディレクトリを指定する必要もありません。 -.LP -.RS 3 - +\f2Hello.java\fP Ȥեǡ\f3greetings.Hello\fP Ȥ̾Υ饹ƤȤޤ \f2greetings\fP ǥ쥯ȥϡեȥ饹եξѥåǥ쥯ȥǡߤΥǥ쥯ȥΤˤޤΤᡢǤϡǥեȤΥ桼饹ѥѤǤޤޤ\f3\-d\fP Ȥä̤νǥ쥯ȥꤹɬפ⤢ޤ .LP .nf \f3 @@ -703,25 +1050,15 @@ Hello World Hello Universe .fl Hello Everyone -.fl - .fl .fi -.RE .LP -.RE .SS -複数のソースファイルのコンパイル +ʣΥեΥѥ .LP -.RS 3 - .LP -.LP -次の例では、パッケージ \f2greetings\fP 内のすべてのソースファイルをコンパイルします。 -.LP -.RS 3 - +Ǥϡѥå \f2greetings\fP Τ٤ƤΥե򥳥ѥ뤷ޤ .LP .nf \f3 @@ -741,27 +1078,15 @@ Aloha.java GutenTag.java Hello.java Hi.java Aloha.class GutenTag.class Hello.class Hi.class .fl Aloha.java GutenTag.java Hello.java Hi.java -.fl - -.fl - .fl .fi -.RE .LP -.RE .SS -ユーザークラスパスの指定 +桼饹ѥλ .LP -.RS 3 - .LP -.LP -上の例のソースファイルのうち 1 つを変更し、変更後のファイルを再コンパイルするとします。 -.LP -.RS 3 - +ΥեΤ 1 ĤѹѹΥեƥѥ뤹Ȥޤ .LP .nf \f3 @@ -771,35 +1096,23 @@ Aloha.java GutenTag.java Hello.java Hi.java /examples .fl % \f3javac greetings/Hi.java\fP -.fl - .fl .fi -.RE .LP .LP -\f2greetings.Hi\fP は、\f2greetings\fP パッケージ内のほかのクラスを参照しているため、コンパイラはこれらのクラスを探す必要があります。上の例では、デフォルトのユーザークラスパスが、パッケージディレクトリを含むディレクトリと同じであるため、コンパイルは正常に実行されます。ただし、現在どのディレクトリにいるかに関係なく、このファイルを再コンパイルする場合は、ユーザークラスパスに \f2/examples\fP を追加する必要があります。ユーザークラスパスにエントリを追加するには、\f3CLASSPATH\fP を設定する方法もありますが、ここでは \f3\-classpath\fP オプションを使うことにします。 -.LP -.RS 3 - +\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 - .fl .fi -.RE .LP .LP -再度 \f2greetings.Hi\fP を変更してバナーユーティリティーを使うようにした場合は、このバナーユーティリティーもユーザークラスパスを通じてアクセスできるようになっている必要があります。 -.LP -.RS 3 - + \f2greetings.Hi\fP ѹƥХʡ桼ƥƥȤ褦ˤϡΥХʡ桼ƥƥ桼饹ѥ̤ƥǤ褦ˤʤäƤɬפޤ .LP .nf \f3 @@ -808,41 +1121,25 @@ Aloha.java GutenTag.java Hello.java Hi.java .fl /examples/greetings/Hi.java\fP .fl - -.fl .fi -.RE .LP .LP -\f2greetings\fP 内のクラスを実行するには、\f2greetings\fP と、\f2greetings\fP が使うクラスの両方にアクセスできる必要があります。 -.LP -.RS 3 - +\f2greetings\fP Υ饹¹Ԥˤϡ \f2greetings\fP ȡ줬Ȥ饹ξ˥Ǥɬפޤ .LP .nf \f3 .fl % \fP\f3java \-classpath /examples:/lib/Banners.jar greetings.Hi\fP -.fl - .fl .fi -.RE .LP -.RE .SS -ソースファイルとクラスファイルの分離 -.LP -.RS 3 - +եȥ饹եʬΥ .LP .LP -特に大規模プロジェクトの場合は、ソースファイルとクラスファイルを別々のディレクトリに置くと便利なことがあります。クラスファイルの出力先を別に指定するには、\f3\-d\fP を使います。ソースファイルはユーザークラスパスにはないので、\f3\-sourcepath\fP を使って、コンパイラがソースファイルを見つけることができるようにします。 -.LP -.RS 3 - +ä絬ϥץȤξϡեȥ饹ե̡Υǥ쥯ȥ֤ʤȤޤ饹եν̤˻ꤹˤϡ\f3\-d\fP Ȥޤեϥ桼饹ѥˤϤʤΤǡ\f3\-sourcepath\fP Ȥäơѥ餬ե򸫤Ĥ뤳ȤǤ褦ˤޤ .LP .nf \f3 @@ -876,84 +1173,79 @@ farewells/ % \f3ls classes/farewells\fP .fl Base.class GoodBye.class -.fl - -.fl - .fl .fi -.RE .LP .LP -\f3注:\fP \ コマンド行では \f2src/farewells/Base.java\fP を指定していませんが、このファイルもコンパイラによってコンパイルされています。自動コンパイルを監視するには、\f3\-verbose\fP オプションを使います。 +\f3:\fP ޥɹԤǤ \f2src/farewells/Base.java\fP ꤷƤޤ󤬡Υե⥳ѥˤäƥѥ뤵Ƥޤưѥƻ뤹ˤϡ\f3\-verbose\fP ץȤޤ .LP -.RE .SS -クロスコンパイルの例 -.LP -.RS 3 - +ѥ .LP .LP -ここでは、\f3javac\fP を使って、1.5 VM 上で実行するコードをコンパイルします。 -.LP -.RS 3 - +Ǥϡ\f3javac\fP Ȥäơ1.6 VM Ǽ¹Ԥ륳ɤ򥳥ѥ뤷ޤ .LP .nf \f3 .fl -% \fP\f3javac \-target 1.5 \-bootclasspath jdk1.5.0/lib/rt.jar \\ +% \fP\f3javac \-source 1.6 \-target 1.6 \-bootclasspath jdk1.6.0/lib/rt.jar \\ .fl \-extdirs "" OldCode.java\fP .fl - -.fl .fi -.RE .LP .LP -\f3\-target 1.5\fP オプションにより、1.5 VM と互換性のあるクラスファイルが生成されます。デフォルトでは、\f3javac\fP は JDK 6 用にコンパイルします。 +\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 -Java プラットフォーム JDK の \f3javac\fP は、デフォルトでは、Java 2 SDK のブートストラップクラスに対してコンパイルを行うので、Java 2 SDK ではなく JDK 1.5 のブートストラップクラスに対してコンパイルを行うように指定する必要があります。これは、\f3\-bootclasspath\fP および \f3\-extdirs\fP を使って指定します。この指定を行わないと、1.5 VM には存在しない Java 2 プラットフォーム API に対応したコンパイルが行われるため、プログラムの実行時に障害が発生することがあります。 -.LP -.RE -.SH "関連項目" +\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 -\f2「The javac Guide」\fP @ +\f2The javac Guide\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/javac/index.html .TP 2 o -「java(1) \- Java アプリケーション起動ツール」 +java(1) \- Java ץꥱưġ .TP 2 o -「jdb(1) \- Java デバッガ」 +jdb(1) \- Java ǥХå .TP 2 o -「javah(1) \- C ヘッダーとスタブファイルジェネレータ」 +javah(1) \- C إåȥ֥ե른ͥ졼 .TP 2 o -「javap(1) \- クラスファイル逆アセンブラ」 +javap(1) \- 饹եե֥ .TP 2 o -「javadoc(1) \- Java API ドキュメントジェネレータ」 +javadoc(1) \- Java API ɥȥͥ졼 .TP 2 o -「jar(1) \- JAR アーカイブツール」 +jar(1) \- JAR ֥ġ .TP 2 o .na -\f2「Java 拡張機能フレームワーク」\fP @ +\f2Java ĥǽե졼\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html .RE diff --git a/src/linux/doc/man/ja/javadoc.1 b/src/linux/doc/man/ja/javadoc.1 index 283c6a81c1be46c57f0e5295c8cb7a5a25fedbf0..57c6cd75a354b410bcbd6358e69350a5b9ec17e3 100644 --- a/src/linux/doc/man/ja/javadoc.1 +++ b/src/linux/doc/man/ja/javadoc.1 @@ -1,4 +1,4 @@ -." Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1994, 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 @@ -19,328 +19,244 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH javadoc 1 "02 Jun 2010" -.SH "名前" -javadoc \- Java API ドキュメントジェネレータ -.RS 3 - -.LP -.LP -Java ソースファイルから、API ドキュメントの HTML ページを生成します。このドキュメントで紹介されている Javadoc の例は、Sun Solaris を使用した場合のものです。 -.LP -.RE -.SH "形式" +.TH javadoc 1 "14 Apr 2011" +.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 -.LP -引数を指定する順序は任意です。Javadoc ツールでの、処理対象の \f2.java\fP ファイルを決定する方法の詳細については、「ソースファイルの処理」を参照してください。 -.LP -.RS 3 - -.LP +ꤹǤդǤJavadoc ġǤΡоݤ .java եꤹˡξܺ٤ˤĤƤϡ֥եν\f2򻲾\fPƤ .RS 3 .TP 3 options -このドキュメントで説明されているコマンド行オプションです。Javadoc オプションの標準的な使用法については、「使用例」を参照してください。 +ΥɥȤƤ륳ޥɹԥץǤJavadoc ץɸŪʻˡˤĤƤϡֻפ򻲾ȤƤ .TP 3 packagenames -スペースで区切られた一連のパッケージ名です。 たとえば、\f2java.lang\ java.lang.reflect\ java.awt\fP のように指定します。ドキュメント化するパッケージを個別に指定する必要があります。ワイルドカードは使用不可です。 再帰的処理のためには、\-subpackages を使用します。Javadoc ツールは、\f2\-sourcepath\fP を使ってこれらのパッケージ名を検索します。「1 つ以上のパッケージのドキュメント化」の例を参照してください。 +ڡǶڤ줿ϢΥѥå̾ǤȤС \f2java.lang\ java.lang.reflect\ java.awt Τ褦˻ꤷޤ\fPɥȲѥå̤˻ꤹɬפޤ磻ɥɤϻԲĤǤƵŪΤˤϡ\-subpackages ѤޤJavadoc ġϡ\f2\-sourcepath\fP ѤƤΥѥå̾򸡺ޤ1 İʾΥѥåΥɥȲפ򻲾ȤƤ .TP 3 sourcefilenames -スペースで区切られた一連のソースファイル名です。各ファイルは、パスで始まります。アスタリスク (*) などのワイルドカードを含めることができます。 Javadoc ツールが処理するのは、ファイル名が「.java」という拡張子で終わり、その拡張子を除いた名前が実際に有効なクラス名であるすべてのファイルです ( +ڡǶڤ줿ϢΥե̾Ǥ ƥեϡѥǻϤޤޤꥹ (*) ʤɤΥ磻ɥɤޤ뤳ȤǤޤJavadoc ġ뤬Τϡե̾.javaפȤĥҤǽꡢγĥҤ̾ºݤͭʥ饹̾Ǥ뤹٤ƤΥեǤ ( .na -\f2「Identifiers」\fP @ +\f2Identifiers\fP @ .fi -http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625を参照)。したがって、ハイフンを含む名前 (\f2X\-Buffer\fP など) や、その他の無効な文字を含む名前を付けることによって、それらのファイルをドキュメント化の対象から除外できます。これは、テスト用のファイルや、テンプレートから生成されたファイルの場合に便利です。 ソースファイル名の前に指定したパスによって、javadoc がそのファイルを検索する場所が決まります。Javadoc ツールは、これらのソースファイル名を検索するときに \f2\-sourcepath\fP は使いません。相対パスは、現在のディレクトリからの相対パスです。 \f2Button.java\fP を渡すことは、\f2./Button.java\fP を渡すことと同じです。ソースファイル名をフルパスで指定すると、\f2/home/src/java/awt/Graphics*.java\fP のようになります。「1 つ以上のクラスのドキュメント化」の例を参照してください。また、「パッケージとクラスのドキュメント化」の例のように、パッケージ名とソースファイル名を混在させることもできます。 +http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625򻲾)äơϥեޤ̾ ( \f2X\-Buffer\fP ʤ) 䡢¾̵ʸޤ̾դ뤳ȤˤäơΥեɥȲоݤǤޤϡƥѤΥե䡢ƥץ졼Ȥ줿եξǤե̾˻ꤷѥˤäơjavadoc Υե򸡺꤬ޤޤJavadoc ġϡΥե̾򸡺Ȥˤ \f2\-sourcepath\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 - -.LP +Javadoc ץ󡢥ѥå̾ӥե̾Ǥդν¤٤ꥹȤޤޤ 1 İʾΥեǤ磻ɥ (*) \f2\-J\fP ץϡΥեǤϻǤޤ .RE -.SH " 説明" -.LP -.LP -\f3Javadoc\fP ツールは、一連の Java ソースファイルにある宣言およびドキュメンテーションコメントを解析し、デフォルトでは public クラス、protected クラス、入れ子にされたクラス (匿名の内部クラスは除く)、インタフェース、コンストラクタ、メソッド、およびフィールドについて説明した一連の HTML ページを生成します。また、API (アプリケーションプログラミングインタフェース) ドキュメントの生成や、一連のソースファイルの実装ドキュメントの生成に使用できます。 +.SH " " .LP +\f3Javadoc\fP ġϡϢ Java եˤӥɥơ󥳥ȤϤǥեȤǤ public 饹protected 饹Ҥˤ줿饹 (ƿ̾饹Ͻ)󥿥ե󥹥ȥ饯᥽åɡӥեɤˤĤϢ HTML ڡޤޤAPI (ץꥱץߥ󥰥󥿥ե) ɥȤ䡢ϢΥեμɥȤ˻ѤǤޤ .LP -Javadoc ツールは、パッケージ全体、個々のソースファイル、またはその両方に対して実行できます。javadoc ツールをパッケージ全体に対して実行する場合は、最上位ディレクトリから再帰的にたどるために \f2\-subpackages\fP を使用するか、パッケージ名の明示的なリストを渡します。個々ソースファイルに対して javadoc を実行する場合は、一連のソース (\f2.java\fP) ファイル名を渡します。具体的な例は、このドキュメントの最後に紹介します。次に、Javadoc によるソースファイルの処理について説明します。 -.LP +Javadoc ġϡѥåΡġΥե롢ޤϤξФƼ¹ԤǤޤѥåΤΥɥȲԤˤϡ\f2\-subpackages\fP ѤƺǾ̥ǥ쥯ȥ꤫鲼˺ƵŪˤɤ뤫ѥå̾ŪʥꥹȤϤޤġեФ javadoc ¹ԤϡϢΥ (.\f2.java\fP) ե̾ϤޤŪϡΥɥȤκǸ˾Ҳ𤷤ޤˡJavadoc ˤ륽եνˤĤޤ .SS -ソースファイルの処理 -.LP -.LP -Javadoc ツールは、末尾に \f2.java\fP の付いたファイル以外に、ソースファイルで説明する他のファイルも処理します。個々のソースファイル名を明示的に渡すことによって Javadoc ツールを実行する場合、どの \f2.java\fP ファイルを処理するかを正確に指定できます。ただし、多くの開発者はこの方法では作業しません。 パッケージ名を渡すほうが簡単だからです。ソースファイル名を明示的に指定しなくても、Javadoc ツールは 3 つの方法で実行できます。この方法は、(1) パッケージ名を渡す、(2) \f2\-subpackages\fP を使用する、(3) ソースファイル名にワイルドカードを使用する (\f2*.java\fP) という方法です。これらの方法を使用する場合、Javadoc ツールは、\f2.java\fP ファイルが次のすべての要件を満たしている場合にかぎり、このファイルを処理します。 +եν .LP +Javadoc ġϡ\f2.java\fPפΥեǤʤ֥եפ뤽¾ΥեޤġΥե̾ŪϤȤˤä Javadoc ġ¹Ԥ硢ɤ \f2.java\fP ե뤫Τ˻Ǥޤ¿γȯԤϤˡǤϺȤޤ󡣥ѥå̾ϤۤñǤե̾Ū˻ꤷʤƤ⡢Javadoc ġ 3 ĤˡǼ¹ԤǤޤˡȤϡ(1) ѥå̾Ϥ(2) \f2\-subpackages\fP Ѥ롢(3) ե̾ǥ磻ɥɤѤ (\f2*.java\fP) 3 ĤǤξ硢Javadoc ġ뤬\f2.java\fPץեνԤΤϡΥե뤬Τ٤Ƥ׷Ǥ .RS 3 .TP 2 o -名前から \f2.java\fP の接尾辞を取り除くと、実際に有効なクラス名になっている (有効な文字については、 +̾\f2.java\fPפȼºݤͭʥ饹̾ˤʤäƤ (ͭʸˤĤƤ .na -\f2「Identifiers」\fP @ +\f2Identifiers\fP @ .fi -http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625を参照) +http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625򻲾) .TP 2 o -ソースツリーのルートから相対的なディレクトリパスが、区切り文字をドットに変換すると、実際に有効なパッケージ名になっている +ĥ꡼Υ롼ȤŪʥǥ쥯ȥѥڤʸɥåȤѴȡºݤͭʥѥå̾ˤʤäƤ .TP 2 o -パッケージ文には有効なパッケージ名が含まれる (前項目で指定) +ѥåʸˤͭʥѥå̾ޤޤ (ܤǻ) .RE - -.LP -.LP -\f3リンクの処理\fP \- Javadoc ツールは、処理の実行中に、その実行でドキュメント化されるパッケージ、クラス、およびメンバーの名前に対して、自動的に相互参照リンクを追加します。このようなリンクは、次のような場所に追加されます。 .LP +\f3󥯤ν\fP \- Javadoc ġϡμ¹ˡμ¹ԤǥɥȲѥå饹ӥС̾ФơưŪ߻ȥ󥯤ɲäޤΤ褦ʥ󥯤ϡΤ褦ʾɲäޤ .RS 3 .TP 2 o -宣言 (戻り値の型、引数の型、フィールドの型) + (ͤηηեɤη) .TP 2 o -\f2@see\fP タグから生成された [関連項目] セクション +\f2@see\fP 줿 [Ϣ] .TP 2 o -\f2{@link}\fP タグから生成されたインラインテキスト +\f2{@link}\fP 줿饤ƥ .TP 2 o -\f2@throws\fP タグから生成された例外の名前 +\f2@throws\fP 줿㳰̾ .TP 2 o -"インタフェースのメンバーに対する [定義] リンクと、クラスのメンバーに対する [オーバーライド] リンク +󥿥եΥСФץ󥯤ȡ饹ΥСФ֥С饤ɡץ .TP 2 o -パッケージ、クラス、およびメンバーを列挙している概要テーブル +ѥå饹ӥС󤷤Ƥ복ץơ֥ .TP 2 o -パッケージおよびクラスの継承ツリー +ѥåӥ饹ηѾĥ꡼ .TP 2 o -索引 + .RE - -.LP .LP -コマンド行で指定しなかったクラスについての既存のテキスト (別に生成したテキスト) に対してハイパーリンクを追加するには、\f2\-link\fP および \f2\-linkoffline\fP オプションを利用できます。 +ޥɹԤǻꤷʤä饹ˤĤƤδ¸Υƥ (̤ƥ) Фƥϥѡ󥯤ɲäˤϡ\f2\-link\fP \f2\-linkoffline\fP ץѤǤޤ .LP +\f3¾νˤĤƤξܺ\fP \- Javadoc ġϡ¹Ԥ뤿Ӥ 1 ĤδʥɥȤޤɥȤɲ뤳ȤϤǤޤ󡣤ĤޤꡢJavadoc ġΰμ¹Է̤ꡢƤľȤ줿ꤹ뤳ȤϤǤޤ󡣤ҤΤ褦ˡμ¹Է̤Фƥ󥯤ɲä뤳ȤϤǤޤ .LP -\f3その他の処理についての詳細\fP \- Javadoc ツールは、実行するたびに 1 つの完全なドキュメントを作成します。 ドキュメントを追加生成することはできません。 つまり、Javadoc ツールの以前の実行結果を修正したり、その内容を直接組み入れたりすることはできません。ただし、前述のように、以前の実行結果に対してリンクを追加することはできます。 +ͳ顢Javadoc ġϡ¹Ԥ뤿 java ѥɬפȤjava ѥ˰¸ƤޤJavadoc ġϡ \f2javac\fP ΰƤӽФ򥳥ѥ뤷ޤСμ̵뤷ޤJavadoc ġϡ饹ؤޤ९饹˭٤ɽȥ饹Ρֻѡ״طۤξ󤫤 HTML ޤˡJavadoc ġϡɤΥɥơ󥳥Ȥ顢桼󶡤ɥȤޤ .LP +ºݤˤϡJavadoc ġϡ᥽åΤʤʥ֥եǤ褦 \f2.java\fP եǤưޤäơAPI κˤϡ򵭽Ҥ߷פᤤʳǡɥơ󥳥Ȥ򵭽Ҥ javadoc ġ¹ԤǤޤ .LP -実装上の理由から、Javadoc ツールは、処理を実行するために java コンパイラを必要とし、java コンパイラに依存しています。Javadoc ツールは \f2javac\fP の一部を呼び出すことにより、宣言をコンパイルし、メンバーの実装は無視します。Javadoc ツールは、クラス階層を含むクラスの豊富な内部表現とクラスの「使用」関係を構築し、その情報から HTML を生成します。さらに、Javadoc ツールは、ソースコードのドキュメンテーションコメントから、ユーザーの提供したドキュメントも取得します。 -.LP -.LP -Javadoc ツールは、メソッド本体のない純粋なスタブファイルである \f2.java\fP ソースファイルに対しても、実行することができます。したがって、API の作成時には、実装を記述する前の設計の早い段階で、ドキュメンテーションコメントを記述して javadoc ツールを実行できます。 -.LP -.LP -コンパイラに依存することによって、HTML 出力は、実際の実装に正確に対応します。 実際の実装は、明示的なソースコードにではなく、暗黙のソースコードに依存する場合があります。たとえば、Javadoc ツールは、\f2.class\fP ファイル内に存在するが、ソースコード内には存在しない +ѥ˰¸뤳ȤˤäơHTML ϤϡºݤμΤбޤºݤμϡŪʥɤˤǤϤʤۤΥɤ˰¸礬ޤȤСJavadoc ġϡ.class եˤ¸ߤ뤬ɤˤ¸ߤʤ .na -\f2デフォルトコンストラクタ\fP @ +\f2ǥեȥ󥹥ȥ饯\fP @ .fi -http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#36154 (Java 言語仕様のセクション 8.6.7) をドキュメント化します。 +http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#36154 (Java ͤΥ 8.6.7) \f2ɥȲ\fP ޤ .LP +̾Javadoc ġǤϡեΥɤԴޤϥ顼ޤǤǤɥȤǤޤΤᡢǥХåȥ֥륷塼ƥ󥰤λ˥ɥȤǤޤȤСJava ͤˤȡݥ᥽åɤޤ९饹ϡ켫ݤȤʤФʤޤ󡣤Υ顼򸡽Фȡjavac ѥߤޤJavadoc ġϷٹФ˽³ԤޤJavadoc ġϥɥơ󥳥ȤδŪʥåԤޤɥơ󥳥ȤܤåɬפϡDocCheck ɥååȤѤƤ .LP -通常、Javadoc ツールでは、ソースファイルのコードが不完全またはエラーを含んでいる場合でもドキュメントを生成できます。このため、デバッグやトラブルシューティングを完了する前にドキュメントを生成できます。たとえば、Java 言語仕様によると、抽象メソッドを含むクラスは、それ自体抽象として宣言されなければなりません。このエラーを検出すると、javac コンパイラは停止しますが、Javadoc ツールは警告を出さずに処理を続行します。Javadoc ツールはドキュメンテーションコメントの基本的なチェックを行います。ドキュメンテーションコメントをより詳しくチェックする必要がある場合は、DocCheck ドックレットを使用してください。 -.LP -.LP -Javadoc ツールは、ドキュメントの内部構造を構築する際、参照クラスをすべてロードします。このため、Javadoc ツールは、ブートストラップクラス、拡張機能、またはユーザークラスにかかわらず、すべての参照クラスを検索できなければなりません。詳細は、 +Javadoc ġϡɥȤ¤ۤݡȥ饹򤹤٤ƥɤޤΤᡢJavadoc ġϡ֡ȥȥåץ饹ĥǽޤϥ桼饹ˤ餺٤Ƥλȥ饹򸡺ǤʤФʤޤ󡣾ܺ٤ϡ .na -\f2「クラスの検索方法」\fP @ +\f2֥饹θˡ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.htmlを参照してください。通常、作成するクラスは、拡張機能としてロードするか、Javadoc ツールのクラスパス内に置く必要があります。 -.LP +http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html򻲾ȤƤ̾륯饹ϡĥǽȤƥɤ뤫Javadoc ġΥ饹ѥ֤ɬפޤ .SS -Javadoc のドックレット -.LP -.LP -Javadoc ツールの出力の内容と形式は、ドックレットを使ってカスタマイズできます。Javadoc ツールには、標準ドックレットと呼ばれるデフォルトの「組み込み」ドックレットがあります。 標準ドックレットは、HTML 形式の API ドキュメントを生成します。標準ドックレットを修正またはサブクラス化することや、HTML、XML、MIF、RTF などの好みの出力形式を生成する独自のドックレットを記述することも可能です。ドックレットとその使用法については、次の項目を参照してください。 +Javadoc Υɥåå .LP +Javadoc ġνϤƤȷϡɥååȤȤäƥޥǤޤJavadoc ġˤϡɸɥååȤȸƤФǥեȤΡȤ߹ߡץɥååȤޤɸɥååȤϡHTML API ɥȤޤɸɥååȤޤϥ֥饹뤳Ȥ䡢HTMLXMLMIFRTF ʤɤιߤνϷȼΥɥååȤ򵭽Ҥ뤳ȤǽǤɥååȤȤλˡˤĤƤϡιܤ򻲾ȤƤ .RS 3 .TP 2 o .na -\f2Javadoc のドックレット\fP @ +\f2Javadoc Υɥåå\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/javadoc/index.html .TP 2 o -\f2\-doclet\fP コマンド行オプション +\f2\-doclet\fP ޥɹԥץ .RE - -.LP -.LP -\f2\-doclet\fP コマンド行オプションでカスタムドックレットが指定されていない場合、Javadoc ツールは、デフォルトの標準ドックレットを使用します。javadoc ツールには、使用されているドックレットに関係なく使用できるコマンド行オプションがあります。標準ドックレットでは、これらのほかに、いくつかのコマンド行オプションが追加されます。どちらのオプションについても、このあとの「オプション」で説明します。 .LP +\f2\-doclet\fP ޥɹԥץǥɥååȤꤵƤʤ硢Javadoc ġϡǥեȤɸɥååȤѤޤjavadoc ġˤϡѤƤɥååȤ˴طʤѤǤ륳ޥɹԥץ󤬤ޤɸɥååȤǤϡΤۤˡĤΥޥɹԥץɲäޤɤΥץˤĤƤ⡢ΤȤΡ֥ץפޤ .SS -関連ドキュメントおよびドックレット -.LP +ϢɥȤӥɥåå .RS 3 .TP 2 o .na -\f2Javadoc に施された機能強化\fP @ +\f2Javadoc ˻ܤ줿ĥǽ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/index.html \- Javadoc で追加された改良点の詳細 +http://java.sun.com/javase/6/docs/technotes/guides/javadoc/index.html \- Javadoc 1.4 ɲä줿ξܺ .TP 2 o .na \f2Javadoc FAQ\fP @ .fi -http://java.sun.com/j2se/javadoc/faq/index.html \- 頻繁に寄せられる質問に対する回答、Javadoc 関連のツールについての情報、およびバグの回避方法 +http://java.sun.com/j2se/javadoc/faq/index.html \- ˤ˴󤻤ФJavadoc ϢΥġˤĤƤξ󡢤ӥХβˡ .TP 2 o .na \f2How to Write Doc Comments for Javadoc\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html \- ドキュメンテーションコメントの記述方法に関する Sun の規約 +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html \- ɥơ󥳥Ȥεˡ˴ؤ Sun ε .TP 2 o .na \f2Requirements for Writing API Specifications\fP @ .fi -http://java.sun.com/j2se/javadoc/writingapispecs/index.html \- Java 2 プラットフォーム仕様を記述する際に使用された標準要件。この情報は、ソースファイルのドキュメンテーションコメント形式で API 仕様を記述する場合にも、その他の形式で記述する場合にも役立ちます。検証可能なアサーションを満たすパッケージ、クラス、インタフェース、フィールド、およびメソッドについての要件を定めています。 +http://java.sun.com/j2se/javadoc/writingapispecs/index.html \- Java SE ץåȥեͤ򵭽Ҥݤ˻Ѥ줿ɸ׷盧ξϡեΥɥơ󥳥ȷ API ͤ򵭽Ҥˤ⡢¾ηǵҤˤΩޤڲǽʥѥå饹󥿥եեɡӥ᥽åɤˤĤƤ׷Ƥޤ .TP 2 o .na -\f2ドキュメンテーションコメントの仕様\fP @ +\f2ɥơ󥳥Ȥλ\fP @ .fi -http://java.sun.com/docs/books/jls/first_edition/html/18.doc.html \- ドキュメンテーションコメントのオリジナル仕様については、『Java Language Specification』 (James Gosling、Bill Joy、Guy Steele 共著) の初版の第 18 章「Documentation Comments」を参照してください。この章は、第 2 版では削除されました。 +http://java.sun.com/docs/books/jls/first_edition/html/18.doc.html \- ɥơ󥳥ȤΥꥸʥͤˤĤƤϡJava Language Specification (James GoslingBill JoyGuy Steele ) νǤ 18 ϡDocumentation Commentsפ򻲾ȤƤξϤϡ 2 ǤǤϺޤ .TP 2 o .na -\f2DocCheck ドックレット\fP @ +\f2DocCheck ɥåå\fP @ .fi -http://java.sun.com/javadoc/doccheck \- ソースファイル内のドキュメンテーションコメントをチェックし、検出されたエラーや不正のレポートを生成します。Sun Doc Check ユーティリティーの一部です。Sun Doc Check ユーティリティーの一部です。 +http://java.sun.com/javadoc/doccheck \- եΥɥơ󥳥ȤåФ줿顼ΥݡȤޤDoc Check 桼ƥƥΰǤ .TP 2 o .na -\f2MIF ドックレット\fP @ +\f2MIF ɥåå\fP @ .fi -http://java.sun.com/javadoc/mifdoclet \- MIF、FrameMaker、PDF の書式で API ドキュメントを自動生成します。MIF は Adobe FrameMaker の交換書式です。 +http://java.sun.com/javadoc/mifdoclet \- MIFFrameMakerPDF ν񼰤 API ɥȤưޤMIF Adobe FrameMaker θ򴹽񼰤Ǥ .RE - -.LP .SS -用語 -.LP -.LP -\f2「ドキュメンテーションコメント」\fP、\f2「doc コメント」\fP、\f2「主説明」\fP、\f2「タグ」\fP、\f2「ブロックタグ」\fP、および\f2「インラインタグ」\fPの用語については、「ドキュメンテーションコメント」で説明します。次のその他の用語は、Javadoc ツールのコンテキストで特定の意味を持ちます。 +Ѹ .LP +\f2֥ɥơ󥳥ȡ\fP\f2doc ȡ\fP\f2ּ\fP\f2֥\fP\f2֥֥å\fP\f2֥饤󥿥\fPѸˤĤƤϡ֥ɥơ󥳥ȡפޤʲΤ¾ѸϡJavadoc ġΥƥȤΰ̣ޤ .RS 3 .TP 3 -生成ドキュメント (generated document) -javadoc ツールが Java ソースコード内のドキュメンテーションコメントから生成したドキュメントのことです。デフォルトの生成ドキュメントは HTML 形式で、標準ドックレットによって作成されます。 +ɥ (generated document) +javadoc ġ뤬 Java Υɥơ󥳥ȤɥȤΤȤǤǥեȤɥȤ HTML ǡɸɥååȤˤäƺޤ .LP .TP 3 -名前 (name) -Java 言語で書かれたプログラム要素の名前、つまりパッケージ、クラス、インタフェース、フィールド、コンストラクタ、またはメソッドの名前のことです。名前は、\f2java.lang.String.equals(java.lang.Object)\fP のように完全修飾することも、\f2equals(Object)\fP のように部分修飾することもできます。 +̾ (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 ツールの出力に組み込まれるクラス、つまり「包含クラス」とも呼ばれます。 +ɥȲ륯饹 (documented classes) +javadoc ġμ¹Ԥˤäƾܺ٤ʥɥȤ륯饹ӥ󥿥եΤȤǤɥȲˤϡե뤬ѲǽǤʤФʤ餺ե̾ޤϥѥå̾ javadoc ޥɤϤ졢 (publicprotectedpackage\-private ޤ private) ˤäƥե륿ʤ褦ˤʤФʤޤ󡣥ɥȲ륯饹ϡjavadoc ġνϤȤ߹ޤ륯饹Ĥޤޥ饹פȤƤФޤ .LP .TP 3 -包含クラス (included classes) -ツールの実行によって詳細なドキュメントが生成されるクラスおよびインタフェースのことです。「ドキュメント化されるクラス」 と同じ。 +ޥ饹 (included classes) +ġμ¹Ԥˤäƾܺ٤ʥɥȤ륯饹ӥ󥿥եΤȤǤ֥ɥȲ륯饹פƱ .LP .TP 3 -除外クラス (excluded classes) -ツールの実行によって詳細なドキュメントが生成されないクラスおよびインタフェースのことです。 +饹 (excluded classes) +ġμ¹Ԥˤäƾܺ٤ʥɥȤʤ饹ӥ󥿥եΤȤǤ .LP .TP 3 -参照クラス (referenced classes) -ドキュメント化されるクラスおよびインタフェースの定義 (実装) またはドキュメンテーションコメントの中で明示的に参照されているクラスおよびインタフェースのことです。参照の例としては、戻り値の型、パラメータの型、キャストの型、拡張されたクラス、実装されたインタフェース、インポートされたクラス、メソッド本体で使用されるクラス、@see、{@link}、{@linkplain}、{@inheritDoc} タグなどがあります。この定義は +ȥ饹 (referenced classes) +ɥȲ륯饹ӥ󥿥ե () ޤϥɥơ󥳥ȤŪ˻ȤƤ륯饹ӥ󥿥եΤȤǤȤȤƤϡͤηѥ᡼η㥹Ȥηĥ줿饹줿󥿥եݡȤ줿饹᥽åΤǻѤ륯饹@see{@link}{@linkplain}{@inheritDoc} ʤɤޤ .na \f21.3\fP @ .fi -http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/javadoc.html#referencedclasses から変更されています。javadoc ツールを実行するときは、Javadoc のブートクラスパスおよびクラスパス内にあるすべての参照クラスをメモリーにロードする必要があります。参照クラスが見つからない場合は、「クラスが見つかりません」という警告が表示されます。Javadoc ツールは、クラスの存在とそのメンバーの完全指定の名前を判別するのに必要なすべての情報を、.class ファイルから引き出すことができます。 +http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/javadoc.html#referencedclasses ѹƤޤjavadoc ġ¹ԤȤϡJavadoc Υ֡ȥ饹ѥӥ饹ѥˤ뤹٤Ƥλȥ饹꡼˥ɤɬפޤȥ饹Ĥʤϡ֥饹ĤޤפȤٹɽޤJavadoc ġϡ饹¸ߤȤΥСδ̾Ƚ̤Τɬפʤ٤Ƥξ.class ե뤫ФȤǤޤ .LP .TP 3 -外部参照クラス (external referenced classes) -参照クラスのうち、javadoc ツールの実行中にドキュメントが生成されないクラスのことです。つまり、これらのクラスは、コマンド行で Javadoc ツールに渡されていません。生成ドキュメント内でこれらのクラスにリンクしている箇所は、「外部参照」または「外部リンク」と呼ばれます。たとえば、\f2java.awt\fP パッケージに対してだけ Javadoc ツールを実行した場合、\f2Object\fP などの \f2java.lang\fP 内のすべてのクラスが外部参照クラスになります。外部参照クラスにリンクするには、\f2\-link\fP および \f2\-linkoffline\fP オプションを使用します。外部参照クラスには、通常そのソースコメントを javadoc ツールの実行で利用できないという重要な特徴があります。この場合、それらのコメントを継承することはできません。 +ȥ饹 (external referenced classes) +ȥ饹Τjavadoc ġμ¹˥ɥȤʤ饹ΤȤǤĤޤꡢΥ饹ϡޥɹԤ Javadoc ġϤƤޤɥǤΥ饹˥󥯤Ƥսϡֳȡפޤϡֳ󥯡פȸƤФޤȤСJavadoc ġμ¹оݤ \f2java.awt\fP ѥåΤߤǤ硢 \f2java.lang\fP Τ٤ƤΥ饹 ( \f2Object\fPʤ) ȥ饹ˤʤޤȥ饹˥󥯤ˤϡ \f2\-link\fP \f2\-linkoffline\fP ץѤޤȥ饹ˤϡ̾綠ΥȤ javadoc ġμ¹ԤѤǤʤȤפħޤξ硢ΥȤѾ뤳ȤϤǤޤ .RE - -.LP -.SH "ソースファイル" -.LP -.LP -Javadoc ツールは、4 種類の異なるソースファイルから出力結果を生成します。そのファイルは、クラスの Java 言語ソースファイル (\f2.java\fP)、パッケージコメントファイル、概要コメントファイル、およびその他の処理されないファイルです。また、ドキュメント化しないがソースツリーに存在する場合があるテストファイルやテンプレートファイルについても説明します。 +.SH "ե" .LP +Javadoc ġ 4 ΰۤʤ֥ץե뤫Ϥޤ 4 Ȥϡ饹 Java 쥽ե (\f2.java\fP)ѥåȥե롢ץȥե롢Ӥ¾νʤեǤޤɥȲʤĥ꡼¸ߤ礬ƥȥեƥץ졼ȥեˤĤƤޤ .SS -クラスソースコードファイル -.LP -.LP -それぞれのクラスまたはインタフェース、およびそのメンバーは、独自のドキュメンテーションコメントを持つことができ、それを \f2.java\fP ファイル内に保持します。ドキュメンテーションコメントの詳細は、「ドキュメンテーションコメント」を参照してください。 +饹ɥե .LP +줾Υ饹ޤϥ󥿥եӤΥСϡȼΥɥơ󥳥ȤĤȤǤ \f2.java\fP եݻޤɥơ󥳥Ȥξܺ٤ϡ֥ɥơ󥳥ȡפ򻲾ȤƤ .SS -パッケージコメントファイル -.LP +ѥåȥե .LP -それぞれのパッケージは、独自のドキュメンテーションコメントを持つことができ、それを専用の「ソース」ファイルに保持します。 その内容は、Javadoc ツールによって生成される概要ページに組み込まれます。このコメントには、通常、そのパッケージ全体に当てはまるドキュメントを記述します。 -.LP -.LP -パッケージコメントファイルを作成する場合、コメントの格納先として、次の 2 つのファイルのいずれかを選択できます。 +줾ΥѥåϡȼΥɥơ󥳥ȤĤȤǤѤΡ֥ץեݻޤƤϡJavadoc ġˤä복ץڡȤ߹ޤޤΥȤˤϡ̾ΥѥåΤƤϤޤɥȤ򵭽Ҥޤ .LP +ѥåȥե硢ȤγǼȤơ 2 ĤΥեΤ줫Ǥޤ .RS 3 .TP 2 o -\f2package\-info.java\fP \- パッケージ宣言、パッケージ注釈、パッケージコメント、および Javadoc タグを格納できます。このファイルは JDK 5.0 で導入されたものであり、package.html よりも推奨されています。 +\f2package\-info.java\fP \- ѥåѥåᡢѥåȡ Javadoc ǼǤޤΥեϰ̤ˡpackage.html 侩ޤ .TP 2 o -\f2package.html\fP \- 格納できるのはパッケージコメントと Javadoc タグだけです。 パッケージ注釈は格納できません。 +\f2package.html\fP \- ǼǤΤϥѥåȤ Javadoc ǤѥåϳǼǤޤ .RE - -.LP -.LP -各パッケージは、単一の \f2package.html\fP ファイル、単一の \f2package\-info.java\fP ファイルのいずれかを持つことができますが、両方を持つことはできません。このどちらかのファイルを \f2.java\fP ファイルとともに、ソースツリー内のそのパッケージのディレクトリ内に配置してください。 -.LP -.LP -\f4package\-info.java\fP \- このファイルには、次の構造のパッケージコメントを格納できます。 コメントはパッケージ宣言の前に配置します。 -.LP .LP -File:\f2java/applet/package\-info.java\fP +ƥѥåǤϡñ \f2package.html\fP ե롢ñ \f2package\-info.java\fP եΤ줫Ǥޤξ򤹤뤳ȤϤǤޤ󡣤Τɤ餫Υե \f2.java\fP եȤȤˡĥ꡼ΤΥѥåΥǥ쥯ȥ֤Ƥ .LP +\f4package\-info.java\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 -.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 +File: \f2java/applet/package\-info.java\fP .nf \f3 .fl /** .fl - * Provides the classes necessary to create an + * Provides the classes necessary to create an .fl * applet and the classes an applet uses .fl @@ -372,285 +288,91 @@ package java.lang.applet; .fl \fP .fi -.br -.di -.nr a| \n(dn -.nr a- \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 -.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 352 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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-42 - -.LP -.LP -コメント区切り文字の \f2/**\fP と \f2/*\fP は記述する必要がありますが、中間行の行頭のアスタリスクは省略してもかまいません。 .LP +ȶڤʸ \f2/**\fP \f2/*\fP ¸ߤƤɬפޤֹԤιƬΥꥹϾάƤ⤫ޤޤ .LP -\f4package.html\fP \- このファイルには、次の構造のパッケージコメントを格納できます。 コメントは \f2\fP 要素内に配置します。 +\f4package.html\fP \- Υեˤϡι¤ΥѥåȤǼǤޤȤ \f2\fP ֤ޤ .LP -.LP -File:\f2java/applet/package.html\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 +File: \f2java/applet/package.html\fP .nf \f3 .fl - -.fl - -.fl -Provides the classes necessary to create an applet and the -.fl -classes an applet uses to communicate with its applet context. -.fl -

+ Provides the classes necessary to create an applet and the classes an applet uses to communicate with its applet context.

.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 - -.fl - +and the applet context. An applet is an embeddable window (see the {@link java.awt.Panel} class) with a few extra methods that the applet context can use to initialize, start, and stop the applet.@since 1.0 @see java.awt .fl \fP .fi -.br -.di -.nr a| \n(dn -.nr a- \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 -.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 405 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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-40 - .LP -.LP -これは単なる通常の HTML ファイルであり、パッケージ宣言を含んでいない点に注意してください。パッケージコメントファイルの内容は、ほかのすべてのコメントと同様に HTML で記述されています。それは、このドキュメンテーションコメントには、コメント区切り文字である \f2/**\fP と \f2*/\fP、および行頭のアスタリスクを含めてはならない、ということです。コメントを書く場合は、最初の文をパッケージの概要とし、\f2\fP と最初の文の間にタイトルやその他のテキストを含めないようにします。パッケージタグを含めることはできますが、ほかのドキュメンテーションコメントと同様、すべてのブロックタグは、主説明のあとに置かなければなりません。パッケージコメントファイルに \f2@see\fP タグを追加する場合は、完全指定の名前を使用する必要があります。詳細は、 +ñʤ̾ HTML եǤꡢѥåޤǤʤդƤѥåȥեƤϡۤΤ٤ƤΥȤƱͤ HTML ǵҤޤ1 Ĥ㳰ޤϡΥɥơ󥳥Ȥˤϡȶڤʸ Ǥ \f2/**\fP \f2*/\fP ӹƬΥꥹޤƤϤʤʤȤǤȤ񤯾ϡǽʸѥåγפȤ \f2\fP Ⱥǽʸδ֤˥ȥ䤽¾ΥƥȤޤʤ褦ˤޤѥåޤ뤳ȤϤǤޤۤΥɥơ󥳥ȤƱ͡٤ƤΥ֥åϡΤȤ֤ʤФʤޤ \f2@see\fP ѥåȥեɲäˤϡ̾Ѥɬפޤܺ٤ϡ .na -\f2package.html\fP の例 @ +\f2package.html\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#packagecommentsを参照してください。 -.LP -.LP -\f3パッケージコメントファイルの処理\fP \- Javadoc ツールは、実行時にパッケージコメントファイルを自動的に検索し、このファイルを見つけると次の処理を行います。 +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#packagecomments򻲾ȤƤ .LP +\f3ѥåȥեν\fP \- Javadoc ġϡ¹Ի˥ѥåȥեưŪ˸Υե򸫤ĤȼνԤޤ .RS 3 .TP 2 o -処理できるようにコメントをコピーする (\f2package.html\fP の場合であれば、\f2\fP と \f2\fP HTML タグの間にある内容をすべてコピーする。\f2\fP を含め、そこに \f2\fP やソースファイルの著作権記述などの情報を配置することもできるが、生成後のドキュメンテーションにはそれらは一切表示されない) +Ǥ褦˥Ȥ򥳥ԡ( \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 @ +\f2ѥåγ\fP @ .fi http://java.sun.com/javase/6/docs/api/java/applet/package\-summary.html) .TP 2 o -パッケージの概要ページの先頭に、パッケージコメントの最初の文をコピーする。さらに、概要ページのパッケージリストに、パッケージ名とパッケージコメントの最初の文を追加する (例: +ѥåγץڡƬˡѥåȤκǽʸ򥳥ԡ롣ˡץڡΥѥåꥹȤˡѥå̾ȥѥåȤκǽʸɲä (: .na -\f2概要の要約\fP @ +\f2פ\fP @ .fi -http://java.sun.com/javase/6/docs/api/overview\-summary.html)。文の末尾は、クラスやメンバーの主説明の最初の文の末尾と同じ規則によって判断される +http://java.sun.com/javase/6/docs/api/overview\-summary.html)ʸϡ饹СμκǽʸƱ§ˤäȽǤ .RE - -.LP .SS -概要コメントファイル -.LP -.LP -ドキュメント化する各アプリケーションまたはパッケージセットは、独自の概要ドキュメンテーションコメントを持つことができ、それは専用の「ソース」ファイルに保持されます。 その内容は、Javadoc ツールによって生成される概要ページに組み込まれます。このコメントには、通常、アプリケーションまたはパッケージセット全体に当てはまるドキュメントを記述します。 -.LP -.LP -概要コメントファイルを作成する場合は、ファイルに任意の名前を付け、任意の場所に置くことができます。ただし、通常は、ファイル名を \f4overview.html\fP にして、ソースツリーの最上位レベルに置きます。たとえば、\f2java.applet\fP パッケージのソースファイルが \f2/home/user/src/java/applet\fP ディレクトリに含まれている場合は、\f2/home/user/src/overview.html\fP に概要コメントファイルを作成できます。 -.LP +ץȥե .LP -異なるパッケージのセットに対して javadoc を複数回実行する場合は、同じ 1 つのソースファイルのセットに対して複数の概要コメントファイルを作成できます。たとえば、内部ドキュメンテーション用に \-private を指定して javadoc を 1 回実行したあと、公開ドキュメンテーション用にそのオプションを指定しないで再度実行することができます。この場合、各概要コメントファイルの 1 文目で、そのドキュメンテーションを公開用または内部用として記述できます。 +ɥȲƥץꥱޤϥѥååȤϡȼγץɥơ󥳥ȤĤȤǤѤΡ֥ץեݻޤƤϡJavadoc ġˤä복ץڡȤ߹ޤޤΥȤˤϡ̾ץꥱޤϥѥååΤƤϤޤɥȤ򵭽Ҥޤ .LP +ץȥեˤϡեǤդ̾ (̾ \f4overview.html\fP) դǤդξ (̾ϥĥ꡼κǾ) ֤ǤޤȤС \f2java.applet\fP ѥåΥե뤬 \f2/home/user/src/java/applet\fP ǥ쥯ȥ˳ǼƤСץȥե \f2/home/user/src/overview.html ˺Ǥޤ\fP .LP -概要コメントファイルの内容は、前述のパッケージコメントファイルと同様、HTML で記述された 1 つの大きなドキュメンテーションコメントです。詳細は、前述の説明を参照してください。要点を繰り返すと、このコメントを記述する場合は、最初の文をアプリケーションまたはパッケージセットの要約とし、\f2<body>\fP と最初の文の間にタイトルその他のテキストを含めないようにします。概要タグを含めることができます。 どのドキュメンテーションコメントについても、インラインタグ (\f2{@link}\fP など) 以外のすべてのタグは、主説明のあとに置く必要があります。\f2@see\fP タグを追加する場合は、完全指定の名前を使用しなければなりません。 +ۤʤѥåΥåȤФ javadoc ʣ¹ԤϡƱ 1 ĤΥեΥåȤФʣγץȥեǤޤȤСɥơѤ \-private ꤷ javadoc 1 ¹ԤȡɥơѤˤΥץꤷʤǺټ¹Ԥ뤳ȤǤޤξ硢Ƴץȥե 1 ʸܤǡΥɥơѤޤѤȤƵҤǤޤ .LP +ץȥեƤϡҤΥѥåȥեƱ͡HTML ǵҤ줿 1 Ĥ礭ʥɥơ󥳥ȤǤܺ٤ϡҤ򻲾ȤƤ򷫤֤ȡΥȤ򵭽Ҥϡǽʸ򥢥ץꥱޤϥѥååȤȤ \f2<body>\fP Ⱥǽʸδ֤˥ȥ뤽¾ΥƥȤޤʤ褦ˤޤץޤ뤳ȤǤޤۤΥɥơ󥳥ȤƱ \f2{@link}\fP ʤɤΥ饤󥿥٤ƤΥϡΤȤ֤ɬפޤ \f2@see\fP ɲäˤϡ̾Ѥɬפޤ .LP -Javadoc ツールの実行時に、\-overview オプションを使って概要コメントファイル名を指定します。このファイルは、パッケージコメントファイルと同じように処理されます。 -.LP +Javadoc ġμ¹Իˡ\-overview ץȤäƳץȥե̾ꤷޤΥեϡѥåȥեƱ褦˽ޤ .RS 3 .TP 2 o -\f2<body>\fP タグと \f2</body>\fP タグの間にあるすべての内容を処理のためにコピーする +\f2<body>\fP \f2</body>\fP δ֤ˤ뤹٤ƤƤоݤȤƥԡ .TP 2 o -概要タグがあればすべて処理する +ץС٤ƽ .TP 2 o -生成した概要ページの最後に、処理したテキストを挿入する (例: +ץڡκǸˡƥȤ (: .na -\f2概要の要約\fP @ +\f2פ\fP @ .fi http://java.sun.com/javase/6/docs/api/overview\-summary.html) .TP 2 o -概要ページの先頭に、概要コメントの最初の文をコピーする +ץڡƬˡץȤκǽʸ򥳥ԡ .RE - -.LP .SS -その他の未処理のファイル -.LP +¾̤Υե .LP -ソースには、Javadoc ツールによって生成先のディレクトリにコピーされる、その他の任意のファイルを含めることができます。一般に、このようなファイルには、グラフィックファイル、サンプルの Java ソース (.java) およびクラス (.class) ファイル、内容が通常の Java ソースファイルのドキュメンテーションコメントの影響を受けない独立した HTML ファイルなどがあります。 +ˤϡ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 -未処理のファイルをソースに含めるには、それらのファイルを \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 はパッケージではなく、そのディレクトリそのものにソースファイルが入っていないからです。 -.LP -.LP -これらの未処理のファイルへのリンクは、すべて明示的に記述する必要があります。 これは、Javadoc ツールがそれらのファイルを見ずに、単にディレクトリとその内容を生成先にコピーするだけだからです。たとえば、\f2Button.java\fP のドキュメンテーションコメント内のリンクは、次のようになります。 -.LP +̤ΥեؤΥ󥯤ϡ٤Ū˵ҤɬפޤϡJavadoc ġ뤬Υե򸫤ˡñ˥ǥ쥯ȥȤƤ˥ԡǤȤС \f2Button.java\fP Υɥơ󥳥Υ󥯤ϡΤ褦ˤʤޤ .nf \f3 .fl @@ -664,23 +386,16 @@ o .fl \fP .fi - -.LP .SS -テストファイルおよびテンプレートファイル -.LP -.LP -一部の開発者から、テストファイルおよびテンプレートファイルを対応するソースファイルの近くのソースツリーに保存したいという要望がありました。つまり、これらのソースファイルと同じディレクトリまたはサブディレクトリに保存したいということです。 -.LP +ƥȥե뤪ӥƥץ졼ȥե .LP -個別のソースファイル名で明示的に渡して Javadoc ツールを実行する場合は、テストファイルおよびテンプレートファイルを意図的に除外して、処理されないようにすることができます。ただし、パッケージ名またはワイルドカードで渡す場合は、以下のルールに従って、これらのテストファイルおよびテンプレートファイルが処理されないようにする必要があります。 +γȯԤ顢ƥȥե뤪ӥƥץ졼ȥեб륽եζ᤯Υĥ꡼¸Ȥ˾ޤĤޤꡢΥեƱǥ쥯ȥޤϥ֥ǥ쥯ȥ¸ȤȤǤ .LP +̤Υե̾ŪϤ Javadoc ġ¹Ԥϡƥȥե뤪ӥƥץ졼ȥետŪ˽ơʤ褦ˤ뤳ȤǤޤѥå̾ޤϥ磻ɥɤϤϡʲΥ롼˽äơΥƥȥե뤪ӥƥץ졼ȥե뤬ʤ褦ˤɬפޤ .LP -テストファイルとテンプレートファイルの違いは、テストファイルは、正当でコンパイル可能なソースファイルであるのに対して、テンプレートファイルは、そうではないという点です。 ただし、テンプレートファイルも「.java」で終わることができます。 -.LP -.LP -\f3テストファイル\fP \- 開発者の多くは、あるパッケージのコンパイル可能で実行可能なテストファイルをそのパッケージのソースファイルと同じディレクトリに配置したいと考えています。しかしテストファイルは、名前なしパッケージなど、ソースファイルパッケージとは別のパッケージに属させたいとも考えています (そのため、テストファイルには package ステートメントがないか、またはソースとは別の package ステートメントがある)。このような状況では、コマンド行で指定されているソースのパッケージ名を指定してそのソースがドキュメント化されているときに、テストファイルは警告またはエラーを引き起こします。そのようなテストファイルはサブディレクトリに配置する必要があります。\f2com.package1\fP に追加する場合は、それらのテストファイルを、ハイフンが含まれるためパッケージ名としては無効になるサブディレクトリに配置します。 +ƥȥեȥƥץ졼ȥեΰ㤤ϡƥȥեϡǥѥǽʥեǤΤФơƥץ졼ȥեϡǤϤʤȤǤƥץ졼ȥե.javaפǽ뤳ȤǤޤ .LP +\f3ƥȥե\fP \- ȯԤ¿ϡѥåΥѥǽǼ¹Բǽʥƥȥե򤽤ΥѥåΥեƱǥ쥯ȥ֤ȹͤƤޤƥȥեϡ̾ʤѥåʤɡեѥåȤ̤Υѥå°ȤͤƤޤ (Τᡢƥȥեˤ package ơȥȤʤޤϥȤ̤ package ơȥȤ)Τ褦ʾǤϡޥɹԤǻꤵƤ륽Υѥå̾ꤷƤΥɥȲƤȤˡƥȥեϷٹޤϥ顼ޤΤ褦ʥƥȥեϥ֥ǥ쥯ȥ֤ɬפޤȤС \f2com.package1\fP ΥեФƥȥեɲäϼΤ褦ˡϥեޤǤ뤿˥ѥå̾ȤƤ̵Ǥ褦ʥ֥ǥ쥯ȥˡΥե֤ޤ .nf \f3 .fl @@ -688,248 +403,189 @@ o .fl \fP .fi - -.LP .LP -こうすると、Javadoc ツールでは警告なしで test ディレクトリをスキップします。 +ȡJavadoc ġǤϷٹʤ test ǥ쥯ȥ򥹥åפޤ .LP +ƥȥե doc Ȥޤޤ硢Τ褦˥磻ɥɤޤƥȥե̾ϤƥƥȥեΥɥȤ褦ˡJavadoc ġ̸Ĥ˼¹ԤǤ褦ǤޤȤС \f2com/package1/test\-files/*.java ʤɤǤ\fP .LP -テストファイルに doc コメントが含まれる場合、次のようにワイルドカードを含んだテストソースファイル名で渡してテストファイルのドキュメントを生成するように、Javadoc ツールを別個に実行できるように設定できます。 たとえば、\f2com/package1/test\-files/*.java\fP などです。 -.LP -.LP -\f3ソースファイルのテンプレート\fP \- テンプレートファイルの名前は「.java」で終わることもありますが、テンプレートファイルはコンパイルできません。ソースディレクトリに保持したいソースファイルのテンプレートがある場合は、このファイル名にハイフン (\f2Buffer\-Template.java\fP など) やその他の不正な Java 文字を使用します。 こうすることで、処理されないようになります。これは、Javadoc ツールが処理するのは、「.java」接尾辞を除いた名前が 正規のクラス名であるソースファイルだけであるためです ( +\f3եΥƥץ졼\fP \- ƥץ졼ȥե̾ϡ.javaפǽ뤳Ȥ⤢ޤƥץ졼ȥեϥѥǤޤ󡣥ǥ쥯ȥݻեΥƥץ졼Ȥϡ \f2Buffer\-Template.java\fP Τ褦˥ϥե䤽¾̵ Java ʸ̾˴ޤ뤳Ȥǡƥץ졼Ȥʤ褦ˤޤϡJavadoc ġ뤬Τϡ.java̾ Υ饹̾Ǥ륽եǤ뤿Ǥ ( .na -\f2「識別子」\fP @ +\f2Identifiers\fP @ .fi -http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625参照)。 -.LP -.SH "生成されるファイル" -.LP +http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625) +.SH "ե" .LP -デフォルトでは、javadoc ツールは、HTML 形式のドキュメントを生成する標準ドックレットを使います。このドックレットは、以下の種類のファイルを生成します。 それぞれの HTML ページは、個々のファイルに相当します。javadoc が生成するファイルの名前には、クラスやインタフェースの名前にちなんだものと、そうでないもの (\f2package\-summary.html\fP など) の 2 種類があります。後者のグループのファイル名には、前者のグループとファイル名が競合しないように、ハイフンが含まれています。 -.LP -.LP -\f3基本内容ページ\fP +ǥեȤǤϡ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) +ɥȲ륯饹ޤϥ󥿥եȤ 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 テキストをこのページに組み入れます。 +ɥȲѥåȤ 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 フレーム」を参照してください。 +ѥåΥåΤФ 1 Ĥ\f3ץڡ\fP (\f2overview\-summary.html\fP)ϡɥȤƬڡˤʤޤJavadoc ġϡ\f2\-overview\fP ץǻꤵ줿ե HTML ƥȤ򤹤٤ȤޤΥڡΥեϡjavadoc ʣΥѥå̾Ϥˤޤܺ٤ϡHTML ե졼פ򻲾ȤƤ .RE - -.LP -.LP -\f3相互参照ページ\fP .LP +\f3߻ȥڡ\fP .RS 3 .TP 2 o -\f3パッケージのセット全体に対して 1 つのクラス階層ページ\fP (\f2overview\-tree.html\fP)。このページを表示するには、ナビゲーションバーの [概要] をクリックしてから、[階層ツリー] をクリックします。 +\f3ѥåΥåΤФ 1 ĤΥ饹إڡ\fP (\f2overview\-tree.html\fP)ΥڡɽˤϡʥӥС [] 򥯥åƤ顢[إĥ꡼] 򥯥åޤ .TP 2 o -\f3パッケージごとに 1 つのクラス階層ページ\fP (\f2package\-tree.html\fP)。 特定のパッケージ、クラス、またはインタフェースのページを表示してから、[階層ツリー] をクリックすると、そのパッケージのクラス階層が表示されます。 +\f3ѥåȤ 1 ĤΥ饹إڡ\fP (\f2package\-tree.html\fP)ɽˤϡΥѥå饹ޤϥ󥿥եΥڡ˰ư[إĥ꡼] 򥯥åƤΥѥåγؤɽޤ .TP 2 o -\f3パッケージごとに 1 つの [使用] ページ\fP (\f2package\-use.html\fP)と、\f3クラスおよびインタフェースごとに 1 つずつの [使用] ページ\fP (\f2class\-use/\fP\f2クラス名\fP\f2.html\fP)。このページには、特定のクラス、インタフェース、またはパッケージの一部を使っているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドについて記述されます。クラスまたはインタフェース A を例にして考えると、その [使用] ページには、A のサブクラス、A として宣言されたフィールド、A を返すメソッド、A 型のパラメータを持つメソッドおよびコンストラクタが表示されます。 このページを表示するには、まず、パッケージ、クラス、またはインタフェースのページに移動してから、ナビゲーションバーの [使用] リンクをクリックします。 +\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 の名前であり、通常、それに置き換わる名前が提示されています。非推奨 API は、将来の実装では削除される可能性があります。 +\f3侩 API ڡ\fP (\f2deprecated\-list.html\fP)侩ʤ̾٤ưɽޤ侩̾ϡ̤˲ɤ줿 API ¸ߤ뤿˻Ѥ侩Ƥʤ API ̾Ǥꡢ̾֤̾󼨤Ƥޤ侩 API ϡμǤϺǽޤ .TP 2 o -\f3定数フィールド値ページ\fP (\f2constant\-values.html\fP)。 static フィールドの値用です。 +\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 オプションの指定なしで javadoc ツールを実行することにより、public クラスおよび private クラスの完全に直列化されたクラスを生成できます。 +\f3ľ󲽤줿ڡ\fP (\f2serialized\-form.html\fP)ľ󲽲ǽijǽʥ饹˴ؤѤǤγƥ饹ˤϡľ󲽥եɤӥ᥽åɤ˴ؤޤξϡ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 ץλʤ javadoc ġ¹Ԥ뤳Ȥˤꡢpublic 饹 private 饹δľ󲽤줿饹Ǥޤ .TP 2 o -\f3索引\fP (\f2index\-*.html\fP)。 すべてのクラス名、インタフェース名、コンストラクタ名、フィールド名、およびメソッド名が、アルファベット順に並んでいます。索引は、Unicode を扱えるように国際化されています。 1 つのファイルとして生成することも、先頭文字 (英語の場合 A 〜 Z) ごとに別々のファイルとして生成することもできます。 +\f3\fP (\f2index\-*.html\fP)٤ƤΥ饹󥿥ե󥹥ȥ饯եɡӥ᥽åɤ̾ե٥åȽ¤ǤޤϡUnicode 򰷤褦˹ݲƤޤ1 ĤΥեȤ뤳Ȥ⡢Ƭʸ (Ѹξ A Z) Ȥ̡ΥեȤ뤳ȤǤޤ .RE - -.LP -.LP -\f3サポートファイル\fP .LP +\f3ݡȥե\fP .RS 3 .TP 2 o -\f3ヘルプページ\fP (\f2help\-doc.html\fP)。 ナビゲーションバーや前述の各ページに関する説明が記載されています。\f2\-helpfile\fP を使うと、デフォルトのヘルプファイルに代わる独自のカスタムヘルプファイルを提供することもできます。 +\f3إץڡ\fP (\f2help\-doc.html\fP)ʥӥСҤγƥڡ˴ؤܤƤޤǥեȤΥإץեȼΥإץե󶡤ˤϡ\f2\-helpfile\fP Ѥޤ .TP 2 o -表示用の HTML フレームを作成する 1 つの \f3index.html ファイル\fP。このファイルは、フレーム付きの先頭ページを表示する場合にロードします。このファイル自体には、テキスト内容は含まれていません。 +ɽѤ HTML ե졼 1 Ĥ \f3index.html ե\fPΥեϡե졼դƬڡɽ˥ɤޤΥե뼫ΤˤϡƥƤϴޤޤƤޤ .TP 2 o -複数の\f3フレームファイル\fP (\f2*\-frame.html\fP)。 パッケージ、クラス、およびインタフェースのリストが含まれています。 HTML フレームを表示するときに使用されます。 +ʣ\f3ե졼ե\fP (\f2*\-frame.html\fP)ѥå饹ӥ󥿥եΥꥹȤޤޤƤޤHTML ե졼ɽȤ˻Ѥޤ .TP 2 o -\f3パッケージリスト\fPファイル (\f2package\-list\fP)。 \f2\-link\fP オプションおよび \f2\-linkoffline\fP オプションで使用されます。これは、HTML ファイルではなくテキストファイルであり、どのリンクからもアクセスできません。 +\f3ѥåꥹ\fPե (\f2package\-list\fP) \f2\-link\fP \f2\-linkoffline\fP ץǻѤޤϡHTML եǤϤʤƥȥեǤꡢɤΥ󥯤⥢Ǥޤ .TP 2 o -\f3スタイルシート\fPファイル (\f2stylesheet.css\fP)。 生成されるページ上のいくつかの要素について、色、フォントファミリ、フォントサイズ、フォントのスタイル、および配置を制御します。 +\f3륷\fPե (\f2stylesheet.css\fP)ڡΤĤǤˤĤơեȥեߥꡢեȥեȤΥ롢֤椷ޤ .TP 2 o -\f3doc\-files\fP ディレクトリ。 生成先ディレクトリにコピーするイメージ、サンプルコード、ソースコードなどのファイルがすべて格納されます。これらのファイルは、Javadoc ツールによって処理されないため、ファイル内に javadoc タグがあっても無視されます。このディレクトリは、ソースツリーの中にある場合にのみ生成されます。 +\f3doc\-files\fP ǥ쥯ȥꡣǥ쥯ȥ˥ԡ륤᡼ץ륳ɡɤʤɤΥե뤬٤ƳǼޤΥեϡJavadoc ġˤäƽʤᡢե avadoc äƤ̵뤵ޤΥǥ쥯ȥϡĥ꡼ˤˤΤޤ .RE - -.LP -.LP -\f3HTML フレーム\fP -.LP .LP -Javadoc ツールは、下の図に示すように、2 〜 3 つの HTML フレームを生成します。1 つのパッケージしかない場合 (またはパッケージがない場合) は、パッケージの一覧を省略することによって最低限必要な数のフレームを作成します。単一のパッケージに属するソースファイル (*.java) または単一のパッケージ名を引数として javadoc コマンドに渡す場合は、左側の列にクラスの一覧を表示するフレーム (C) 1 つだけが作成されます。Javadoc に複数のパッケージ名を渡した場合は、概要ページ (Detail) に加えて、すべてのパッケージを一覧表示する第 3 のフレーム (P) が作成されます。この概要ページのファイル名は、\f2overview\-summary.html\fP です。したがって、このファイルは、2 つ以上のパッケージ名を渡した場合にだけ作成されます。[フレームなし] リンクをクリックするか、overview\-summary.html を最初に表示すると、フレームを省略できます。 +\f3HTML ե졼\fP .LP +Javadoc ġϡοޤ˼褦ˡ2 3 Ĥ HTML ե졼ޤ1 ĤΥѥåʤ (ޤϥѥåʤ) ϡѥåΰά뤳ȤˤäƺɬפʿΥե졼ޤñΥѥå°륽ե (*.java) ޤñΥѥå̾Ȥ javadoc ޥɤϤϡ¦˥饹ΰɽե졼 (C) 1 ĤޤJavadoc ʣΥѥå̾Ϥϡץڡ (Detail) ˲äơ٤ƤΥѥåɽ 3 Υե졼 (P) ޤγץڡΥե̾ϡ \f2overview\-summary.html Ǥ\fPäơΥեϡ2 İʾΥѥå̾Ϥˤޤ֥ե졼ʤץ󥯤򥯥å뤫overview\-summary.html ǽɽȡե졼άǤޤ .LP -HTML フレームに慣れていない場合は、特定のフレームを印刷およびスクロールするには、そのフレームに「フォーカス」がなければならないことに注意してください。フレームにフォーカスを与えるには、そのフレームをクリックします。このようにすると、多くのブラウザでは、矢印キーやページキーを使ってそのフレームをスクロールしたり、[印刷] メニューコマンドを使ってそのフレームを印刷したりできます。 -.LP -.nf -\f3 -.fl - \-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\- -.fl - |C| Detail | |P| Detail | -.fl - | | | | | | -.fl - | | | |\-| | -.fl - | | | |C| | -.fl - | | | | | | -.fl - | | | | | | -.fl - \-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\- -.fl - javadoc *.java javadoc java.lang java.awt -.fl -\fP -.fi - -.LP -.LP -HTML フレームが必要かどうかによって、次のどちらかのファイルを開始ページとしてロードします。 +HTML ե졼˴ƤʤϡΥե졼ӥ뤹ˤϡΥե졼ˡ֥եפʤФʤʤȤդƤե졼˥եͿˤϡΥե졼򥯥åޤΤ褦ˤȡ¿Υ֥饦ǤϡڡȤäƤΥե졼򥹥뤷ꡢְץ˥塼ޥɤȤäƤΥե졼Ǥޤ .LP +HTML ե졼बɬפɤˤäơΤɤ餫Υե򳫻ϥڡȤƥɤޤ .RS 3 .TP 2 o -\f2index.html\fP (フレームあり) +\f2index.html\fP (ե졼ढ) .TP 2 o -\f2overview\-summary.html\fP (フレームなし) +\f2overview\-summary.html\fP (ե졼ʤ) .RE - -.LP -.LP -\f3生成されるファイルの構造\fP -.LP -.LP -生成されるクラスファイルおよびインタフェースファイルは、Java ソースファイルおよびクラスファイルと同じディレクトリ階層に編成されます。1 つのサブパッケージにつき 1 つのディレクトリ、という構造になります。 -.LP .LP -たとえば、\f2java.applet.Applet\fP クラスに対して生成されるドキュメントは、\f2java/applet/Applet.html\fP に格納されます。生成先のディレクトリの名前が \f2apidocs\fP だとすると、java.applet パッケージのファイル構造は、その下に構築されます。前述のように、「frame」という語を名前に含むファイルは、すべて左上または左下のフレームに表示されます。それ以外の HTML ファイルは、すべて右側のフレームに表示されます。 +\f3եι¤\fP .LP -.RS 3 - +륯饹ե뤪ӥ󥿥եեϡJava ե뤪ӥ饹եƱǥ쥯ȥ곬ؤޤ1 ĤΥ֥ѥåˤĤ 1 ĤΥǥ쥯ȥꡢȤ¤ˤʤޤ .LP +ȤС \f2java.applet.Applet\fP 饹Ѥ줿ɥȤϡ \f2java/applet/Applet.html\fP ˳ǼޤΥǥ쥯ȥ̾ \f2apidocs\fP Ȥȡjava.applet ѥåΥե빽¤ϡβ˹ۤޤҤΤ褦ˡframeפȤ̾˴ޤեϡ٤ƺޤϺΥե졼ɽޤʳ HTML եϡ٤Ʊ¦Υե졼ɽޤ .LP -注 \- 下の階層図で、ディレクトリは\f3太字\fP (\f3bold\fP) で示してあります。アスタリスク (\f2*\fP) は、javadoc への引数がパッケージ名ではなくソースファイル名 (*.java) である場合に省略されるファイルおよびディレクトリを示しています。また、引数がソースファイル名の場合は、\f2package\-list\fP は作成されますが、内容は空です。doc\-files ディレクトリは、ソースツリー内に存在する場合にのみ、生成先に作成されます。 -.LP -.RE + \- γؿޤǡǥ쥯ȥ\f3\fP (bold) ǼƤޤꥹ (\f2*\fP) ϡjavadoc ؤΰѥå̾ǤϤʤե̾ (*.java) Ǥ˾άե뤪ӥǥ쥯ȥ򼨤Ƥޤޤե̾ξ硢 \f2package\-list\fP ϺޤȤ϶Ǥdoc\-files ǥ쥯ȥϡĥ꡼¸ߤˤΤߡ˺ޤ .nf \f3 .fl .fl -\fP\f3apidocs\fP 最上位ディレクトリ +\fP\f3apidocs\fP Ǿ̥ǥ쥯ȥ .fl - index.html HTML フレームを設定する初期ページ + index.html HTML ե졼ꤹڡ .fl - * overview\-summary.html 全パッケージのリスト。 先頭に要約文がある + * overview\-summary.html ѥåΥꥹȡƬʸˤդ .fl - overview\-tree.html 全パッケージのクラス階層のリスト + overview\-tree.html ѥåΥ饹ؤΥꥹ .fl - deprecated\-list.html 全パッケージの推奨されない API のリスト + deprecated\-list.html ѥå侩 API Υꥹ .fl - constant\-values.html 全パッケージの static フィールドの値のリスト + constant\-values.html ѥå static եɤͤΥꥹ .fl - serialized\-form.html 全パッケージの直列化された形式のリスト + serialized\-form.html ѥåľ󲽤줿Υꥹ .fl - * overview\-frame.html 全パッケージのリスト。 左上のフレームに表示される + * overview\-frame.html ѥåΥꥹȡΥե졼ǻѤ .fl - allclasses\-frame.html 全パッケージの全クラスのリスト。 左下のフレームに表示される + allclasses\-frame.html ѥå饹ΥꥹȡΥե졼ǻѤ .fl - help\-doc.html これらのページの構成を示すユーザーヘルプを表示する + help\-doc.html Υڡι򼨤桼إפΥꥹ .fl - index\-all.html \-splitindex オプションなしで作成されたデフォルト索引 + index\-all.html \-splitindex ץꤷʤä˺ǥեȤκ .fl - \f3index\-files\fP \-splitindex オプションを指定して作成されたディレクトリ + \f3index\-files\fP \-splitindex ץꤷ˺ǥ쥯ȥ .fl - index\-<number>.html \-splitindex オプションを指定して作成された索引ファイル + index\-<number>.html \-splitindex ץꤷ˺ե .fl - package\-list パッケージ名のリスト。 外部参照を解決するためだけに使用される + package\-list ѥå̾ΥꥹȡȤ褹뤿˻Ѥ .fl - stylesheet.css フォント、色、配置を定義する HTML スタイルシート + stylesheet.css եȡ֤ HTML 륷 .fl - \f3java\fP パッケージディレクトリ + \f3java\fP ѥåǥ쥯ȥ .fl - \f3applet\fP サブパッケージディレクトリ + \f3applet\fP ֥ѥåǥ쥯ȥ .fl - Applet.html Applet クラスのページ + Applet.html Applet 饹Υڡ .fl - AppletContext.html AppletContext インタフェースのページ + AppletContext.html AppletContext 󥿥եΥڡ .fl - AppletStub.html AppletStub インタフェースのページ + AppletStub.html AppletStub 󥿥եΥڡ .fl - AudioClip.html AudioClip インタフェースのページ + AudioClip.html AudioClip 󥿥եΥڡ .fl - * package\-summary.html このパッケージのクラスのリスト。 先頭に要約文がある + * package\-summary.html ΥѥåΥ饹ΥꥹȡƬʸˤդ .fl - * package\-frame.html このパッケージのクラスのリスト。 左下のフレームに表示される + * package\-frame.html ΥѥåΥ饹ΥꥹȡΥե졼ǻѤ .fl - * package\-tree.html このパッケージのクラス階層のリスト + * package\-tree.html ΥѥåΥ饹ؤΥꥹ .fl - package\-use このパッケージが使用されている場所のリスト + package\-use ΥѥåѤƤΥꥹ .fl - \f3doc\-files\fP イメージやサンプルのファイルが格納されるディレクトリ + \f3doc\-files\fP 䥵ץեݻǥ쥯ȥ .fl - \f3class\-use\fP API が使用されている場所のページを格納するディレクトリ + \f3class\-use\fP API ѤƤΥڡݻǥ쥯ȥ .fl - Applet.html Applet クラスを使用するページ + Applet.html Applet 饹λѤ˴ؤڡ .fl - AppletContext.html AppletContext インタフェースを使用するページ + AppletContext.html AppletContext 󥿥եλѤ˴ؤڡ .fl - AppletStub.html AppletStub インタフェースを使用するページ + AppletStub.html AppletStub 󥿥եλѤ˴ؤڡ .fl - AudioClip.html AudioClip インタフェースを使用するページ + AudioClip.html AudioClip 󥿥եλѤ˴ؤڡ .fl - \f3src\-html\fP ソースコードディレクトリ + \f3src\-html\fP ɥǥ쥯ȥ .fl - \f3java\fP パッケージディレクトリ + \f3java\fP ѥåǥ쥯ȥ .fl - \f3applet\fP サブパッケージディレクトリ + \f3applet\fP ֥ѥåǥ쥯ȥ .fl - Applet.html Applet ソースコードのページ + Applet.html Applet ɤΥڡ .fl - AppletContext.html AppletContext ソースコードのページ + AppletContext.html AppletContext ɤΥڡ .fl - AppletStub.html AppletStub ソースコードのページ + AppletStub.html AppletStub ɤΥڡ .fl - AudioClip.html AudioClip ソースコードのページ + AudioClip.html AudioClip ɤΥڡ .fl .fi - -.LP .SS -生成される API 宣言 -.LP -.LP -Javadoc ツールは、それぞれのクラス、インタフェース、フィールド、コンストラクタ、およびメソッドの説明の最初に、その API 用の宣言を生成します。 この宣言は、その API 項目の宣言です。たとえば、\f2Boolean\fP クラスの宣言は、次のようになります。 + API .LP +Javadoc ġϡ줾Υ饹󥿥եեɡ󥹥ȥ饯ӥ᥽åɤκǽˡ API ѤޤȤС \f2Boolean\fP 饹ϡΤ褦ˤʤޤ .LP \f2public final class Boolean\fP .br @@ -937,29 +593,20 @@ Javadoc ツールは、それぞれのクラス、インタフェース、フィ .br \f2implements Serializable\fP .LP -.LP -また、\f2Boolean.valueOf\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 -Javadoc ツールは、修飾子 \f2public\fP、\f2protected\fP、\f2private\fP、\f2abstract\fP、\f2final\fP、\f2static\fP、\f2transient\fP、および \f2volatile\fP を組み込むことができますが、\f2synchronized\fP と \f2native\fP を組み込むことができません。これら後者の 2 つの修飾子は、実装の詳細と見なされているため、API 仕様には含まれません。 -.LP -.LP -API では、並行性のセマンティクスについて、キーワード \f2synchronized\fP に依存するのではなく、コメントによる主説明としてドキュメント化する必要があります。 たとえば、「1 つの \f2Enumeration\fP を複数のスレッドから並行して使用することはできない」などのコメントを記述します。ドキュメントには、これらのセマンティクスを実現する方法を記述するべきではありません。たとえば、\f2Hashtable\fP はスレッドに対して安全である必要がありますが、「エクスポートされるすべてのメソッドを同期化すればそれを実現できる」のようには指定する根拠はありません。バケットレベルで内部的に同期化する権利を残しておく必要があります。 そうすれば、より高度な並行性が提供されます。 -.LP -.SH "ドキュメンテーションコメント" -.LP -.LP -オリジナルの「ドキュメンテーションコメントの仕様」は、「関連項目」を参照してください。 +API Ǥϡ¹ޥƥˤĤơ \f2synchronized\fP ˰¸ΤǤϤʤȤμȤƥɥȲ٤Ǥ \f2ȤС1 Ĥ Enumeration \fP ʣΥåɤ¹ԤƻѤ뤳ȤϤǤʤפʤɤȵҤޤɥȤˤϡΥޥƥ¸ˡ򵭽Ҥ٤ǤϤޤ󡣤ȤС \f2Hashtable\fP ϥåɤФưǤɬפޤ֥ݡȤ뤹٤ƤΥ᥽åɤƱФ¸ǤפΤ褦ˤϻꤹ뺬Ϥޤ󡣥Хåȥ٥ŪƱ븢ĤƤɬפޤС٤¹󶡤ޤ +.SH "ɥơ󥳥" .LP +ꥸʥΡ֥ɥơ󥳥Ȥλ͡פϡִϢܡפ򻲾ȤƤ .SS -ソースコードへのコメントの挿入 -.LP -.LP -ソースコードの任意のクラス、インタフェース、メソッド、コンストラクタ、またはフィールドの宣言の前に、ドキュメンテーションコメント ("doc comments") を記述することができます。各パッケージにドキュメンテーションコメントを作成できます。 構文は若干異なりますが、概要にもドキュメンテーションコメントを作成できます。ドキュメンテーションコメントは、非公式に「Javadoc コメント」と呼ばれています (この用語は商標関連の使用法に違反)。ドキュメンテーションコメントは、コメントの始まりを示す文字列 \f2/**\fP と、コメントの終わりを示す文字列 \f2*/\fP の間にある文字で構成されます。行の先頭のアスタリスクは、各行に記述できます。 詳細は、以下で説明します。コメントのテキストは、複数行にわたって記述できます。 +ɤؤΥȤ .LP +ɤǤդΥ饹󥿥ե᥽åɡ󥹥ȥ饯ޤϥեɤˡɥơ󥳥 ("doc comments") 򵭽Ҥ뤳ȤǤޤƥѥå˥ɥơ󥳥ȤǤޤʸϼ㴳ۤʤޤפˤɥơ󥳥ȤǤޤɥơ󥳥ȤϡˡJavadoc ȡפȸƤФƤޤ (ѸϾɸϢλˡ˰ȿ)ɥơ󥳥ȤϡȤϤޤ򼨤ʸ \f2/**\fP ȡȤ򽪤򼨤ʸ \f2*/\fP δ֤ˤʸ鹽ޤԤƬΥꥹϡƹԤ˵ҤǤޤܺ٤ϡʲޤȤΥƥȤϡʣԤˤ錄äƵҤǤޤ .nf \f3 .fl @@ -973,26 +620,19 @@ API では、並行性のセマンティクスについて、キーワード \f2 .fl \fP .fi - -.LP -.LP -次のようにして 1 行に記述すると、スペースを節約できます。 .LP +Τ褦ˤ 1 Ԥ˵ҤȡڡǤޤ .nf \f3 .fl -/** This comment takes up only one line. */ +/** This comment takes up only one line.*/ .fl \fP .fi - -.LP -.LP -\f3コメントの配置\fP \- ドキュメンテーションコメントは、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドの宣言の直前に置かれているときにだけ認識されます。 クラスの例、メソッドの例、およびフィールドの例を参照してください。メソッドの本体に置かれているドキュメンテーションコメントは無視されます。javadoc ツールでは、1 つの宣言文につき 1 つのドキュメンテーションコメントだけが認識されます。 -.LP .LP -よくある間違いは、クラスのコメントとクラスの宣言の間に \f2import\fP 文を置いてしまうことです。このような記述はしないでください。 このようなクラスコメントは無視されます。 +\f3Ȥ\fP \- ɥơ󥳥Ȥϡ饹󥿥ե󥹥ȥ饯᥽åɡޤϥեɤľ֤ƤȤˤǧޤ饹㡢᥽åɤ㡢ӥեɤ򻲾ȤƤ᥽åɤΤ֤Ƥɥơ󥳥Ȥ̵뤵ޤjavadoc ġǤϡ1 ĤʸˤĤ 1 ĤΥɥơ󥳥Ȥǧޤ .LP +褯ְ㤤ϡ饹Ȥȥ饹δ֤ \f2import\fP ʸ֤ƤޤȤǤΤ褦ʵҤϤʤǤΤ褦ʥ饹Ȥ̵뤵ޤ .nf \f3 .fl @@ -1014,11 +654,8 @@ API では、並行性のセマンティクスについて、キーワード \f2 .fl \fP .fi - -.LP -.LP -\f3ドキュメンテーションコメントは主説明のあとにタグセクションが続く\fP \- コメントの開始区切り文字である \f2/**\fP のあとからタグセクションまでが主説明になります。タグセクションは、先頭文字が \f2@\fP である行で定義される最初のブロックタグから始まります (行の先頭のアスタリスク、空白、および行の先頭の区切り文字 \f2/**\fP は除く)。主説明を記述せず、タグセクションだけのコメントを記述することもできます。主説明は、タグセクション以降に続けることはできません。タグの引数は、複数行にわたって記述できます。タグの数に制限はありません。 何回も記述できるタグと、1 回しか記述できないタグがあります。例えば、次の \f2@see\fP からタグセクションが始まります。 .LP +\f3ɥơ󥳥ȤϼΤȤ˥³ \- Ȥγ϶ڤʸǤ\fP \f2/**\fP ΤȤ饿ޤǤˤʤޤϡԤƬˤǽ \f2@\fP ǽΥ֥åϤޤޤ (ƬΥꥹƬζڤʸ \f2/**\fP Ͻ)򵭽ҤΥȤ򵭽Ҥ뤳ȤǤޤϡʹߤ³뤳ȤϤǤޤ󡣥ΰϡʣԤˤ錄äƵҤǤޤο¤Ϥޤ󡣲⵭ҤǤ륿ȡ1 󤷤ҤǤʤޤȤС \f2@see\fP ϡ򳫻ϤƤޤ .nf \f3 .fl @@ -1032,11 +669,8 @@ API では、並行性のセマンティクスについて、キーワード \f2 .fl \fP .fi - -.LP -.LP -\f3ブロックタグとインラインタグ\fP \- 「タグ」は、Javadoc が処理できる、ドキュメンテーションコメント内の特別なキーワードです。\f2@tag\fP のように記述するブロックタグ (「スタンドアロンタグ」とも呼ばれる) と、インラインタグ (\f2{@tag}\fP のように中括弧で囲んで記述) の 2 種類のタグがあります。ブロックタグが正しく解釈されるためには、行の先頭のアスタリスク、空白、区切り文字 (\f2/**\fP) を除いて、行の先頭に置かなければなりません。これは、テキスト内のそれ以外の位置で \f2@\fP 文字を使用しても、タグの開始としては解釈されないことを意味しています。行の最初に \f2@\fP 文字を使用してもタグとして解釈されないようにするには、HTML エンティティーの「\f2@\fP」を使用してください。それぞれのブロックタグには、対応付けられたテキストがあります。 このテキストは、タグのあとから、次のタグの前、またはドキュメンテーションコメントの最後までの間に記述されたテキスト (タグやコメント区切り文字を除く) です。この関連テキストは複数行にわたって記述できます。インラインタグは、テキストを記述できる場所であればどこにでも置くことができ、正しく解釈されます。次のコード例には、ブロックタグ \f2@deprecated\fP と、インラインタグ \f2{@link}\fP が含まれています。 .LP +\f3֥åȥ饤󥿥\fP \- \f2֥\fPϡJavadoc Ǥ롢ɥơ󥳥̤ʥɤǤˤ 2 ढޤ1 Ĥ @tag Τ褦ɽ֥å \f2(ɸॿפȤƤФ)\fP ⤦ 1 Ĥ {@tag} Τ褦̤ǰϤޤ륤饤󥿥 \f2Ǥ\fP֥åᤵ뤿ˤϡԤƬΥꥹ򡢶ڤʸ (\f2/**\fP) ơԤƬ֤ʤФʤޤ󡣤ϡ \f2@\fP ʸƥ̤ξǻѤˤϥγϤȤƲᤵʤȤ̣ƤޤԤƬ \f2@\fP ʸѤƤ⤽줬ᤵʤ褦ˤˤϡHTML ƥƥ \f2@\fP Ѥޤ줾Υ֥åˤϡбդ줿ƥȤޤΥƥȤϡΤȤ顢Υޤϥɥơ󥳥ȤκǸޤǤδ֤˵Ҥ줿ƥ (䥳ȶڤʸ) ǤδϢƥȤʣԤˤ錄äƵҤǤޤ饤󥿥ϡƥȤ򵭽ҤǤǤФɤˤǤ֤ȤǤᤵޤˤϥ֥å \f2@deprecated\fP ȥ饤󥿥 \f2{@link}\fP ޤޤƤޤ .nf \f3 .fl @@ -1048,17 +682,12 @@ API では、並行性のセマンティクスについて、キーワード \f2 .fl \fP .fi - -.LP .LP -\f3コメントは HTML で記述する\fP \- テキストは HTML 形式で記述しなければなりません。 これは、HTML のエンティティーを使う必要があること、および HTML タグを使用できることを意味します。記述する HTML のバージョンとしては、使用するブラウザがサポートする任意のバージョンを使用できます。 標準ドックレットは、カスケーディングスタイルシート (CSS) とフレームを含め、すべての部分 (ドキュメンテーションコメント以外の部分) で HTML 3.2 に準拠したコードを生成するように作成されています。ただし、フレームセット対応のため、生成される各ファイルには「HTML 4.0」と記述されます。 +\f3Ȥ HTML ǵҤ\fP \- ƥȤ HTML ǵҤʤФʤޤ󡣤ϡHTML ΥƥƥȤɬפ뤳ȡ HTML ѤǤ뤳Ȥ̣ޤҤ HTML ΥСȤƤϡѤ֥饦ݡȤǤդΥСѤǤޤɸɥååȤϡǥ󥰥륷 (CSS) ȥե졼ޤᡢ٤Ƥʬ (ɥơ󥳥Ȱʳʬ) HTML 3.2 ˽򤷤ɤ褦˺Ƥޤե졼ॻåбΤᡢƥեˤϡHTML 4.0פȵҤޤ .LP +ȤС꾮 (\f2<\fP) 椪Ӥ礭 (\f2>\fP) Υƥƥϡ \f2<\fP \f2>\fP ȵҤ٤ǤƱͤˡѥ (\f2&\fP) \f2&\fP ȵҤ٤ǤǤϥܡɤ HTML \f2<b>\fP Ƥޤ .LP -たとえば、より小さい (\f2<\fP) およびより大きい (\f2>\fP) という記号は\f2<\fP および \f2>\fP として記述する必要があります。同様に、アンパサンド (\f2&\fP) は、\f2&\fP と記述する必要があります。次の例では、ボールドの HTML タグ \f2<b>\fP を使っています。 -.LP -.LP -次に、ドキュメンテーションコメントを示します。 -.LP +ˡɥơ󥳥Ȥ򼨤ޤ .nf \f3 .fl @@ -1072,20 +701,12 @@ API では、並行性のセマンティクスについて、キーワード \f2 .fl \fP .fi - -.LP -.LP -\f3行頭のアスタリスク\fP \- Javadoc は、ドキュメンテーションコメントを解析するときに、各行の先頭にあるアスタリスク (\f2*\fP) をすべて破棄します。 また、最初のアスタリスク (\f2*\fP) より前の空白とタブも破棄します。バージョン 1.4 からは、行の先頭のアスタリスクを省略しても、先頭の空白文字は削除されなくなりました。このため、コード例を直接ドキュメンテーションコメントの \f2<PRE>\fP タグ内にペーストしても、インデントが保持されます。通常、ブラウザは、空白文字をタブよりも一律に解釈します。インデントは区切り文字 \f2/**\fP または \f2<PRE>\fP タグよりも左寄りになります。 -.LP -.LP -\f3最初の文\fP \- 各ドキュメンテーションコメントの最初の文は、宣言されているエンティティーに関する簡潔かつ完全な要約文である必要があります。この「最初の文」は、直後にスペース、タブ、または改行が続く最初のピリオド (ロケールが英語に設定されている場合)、または最初のタグがある位置で終わります。最初の文は、Javadoc ツールによって HTML ページの最初にあるメンバーの概要の部分にコピーされます。 .LP +\f3ƬΥꥹ\fP \- javadoc ˤɥơ󥳥ȤβϻˡƹԤƬˤ륢ꥹ (\f2*\fP) ʸ˴ޤǽΥꥹ (\f2*\fP) ʸˤ䥿֤˴ޤС 1.4 ϡԤƬΥꥹάƤ⡢ƬζʸϺʤʤޤΤᡢľܥɥơ󥳥Ȥ \f2<PRE>\fP ˥ڡȤƤ⡢ǥȤݻޤ̾֥饦ϡʸ򥿥֤Χ˲ᤷޤǥȤεϺޡˤʤޤ (ڤʸ \f2/**\fP ޤ \f2<PRE>\fP ǤϤʤ) .LP -\f3複数フィールドの宣言\fP \- Java では、1 つの文で複数のフィールドを宣言できます。 ただし、この文には、1 つのドキュメンテーションコメントしか記述できません。 そのコメントが、すべてのフィールドに対してコピーされます。したがって、フィールドごとにドキュメンテーションコメントを記述する必要がある場合は、各フィールドを別々の文で宣言しなければなりません。たとえば、次のドキュメンテーションコメントは、1 つの宣言として記述すると不適切です。 この場合は、宣言を 2 つに分けることをお勧めします。 -.LP -.RS 3 - +\f3ǽʸ\fP \- ƥɥơ󥳥ȤκǽʸϡƤ륨ƥƥ˴ؤʷ餫ĴʸǤɬפޤΡֺǽʸפϡľ˥ڡ֡ޤϲԤ³ǽΥԥꥪ (뤬ѸꤵƤ)ޤϺǽΥ֤ǽޤǽʸϡJavadoc ġˤä HTML ڡκǽˤСγפʬ˥ԡޤ .LP +\f3ʣեɤ\fP \- Java Ǥϡ1 ĤʸʣΥեɤǤޤʸˤϡ1 ĤΥɥơ󥳥ȤҤǤޤ󡣤ΥȤ٤ƤΥեɤФƥԡޤäơեɤȤ˥ɥơ󥳥Ȥ򵭽Ҥɬפϡƥեɤ̡ʸʤФʤޤ󡣤ȤСΥɥơ󥳥Ȥϡ1 ĤȤƵҤŬڤǤξϡ 2 Ĥʬ뤳Ȥ򤪴ᤷޤ .nf \f3 .fl @@ -1099,145 +720,105 @@ public int x, y; // Avoid this .fl \fP .fi -.RE - -.LP -.LP -上記のコードからは、次のようなドキュメントが生成されます。 -.LP -.RS 3 - .LP +嵭ΥɤϡΤ褦ʥɥȤޤ .nf \f3 .fl public int \fP\f3x\fP .fl .fi - -.LP .RS 3 The horizontal and vertical distances of point (x,y) .RE - -.LP .nf \f3 .fl public int \fP\f3y\fP .fl .fi - -.LP .RS 3 The horizontal and vertical distances of point (x,y) .RE - -.LP -.RE -.LP -\f3見出しタグはなるべく使用しない\fP \- メンバーに対してドキュメンテーションコメントを記述するときには、<H1> や <H2> などの HTML 見出しタグは、なるべく使わないでください。 Javadoc ツールは、完全に構造化されたドキュメントを作成するので、このような構造化タグが使われていると、生成ドキュメントの形式が悪影響を受けることがあります。ただし、クラスやパッケージのコメントでは、これらの見出しタグを使って独自の構造を組み立ててかまいません。 .LP +\f3ФϤʤ٤Ѥʤ\fP \- СФƥɥơ󥳥Ȥ򵭽ҤȤˤϡ<H1> <H2> ʤɤ HTML Фϡʤ٤ȤʤǤ Javadoc ġϡ˹¤줿ɥȤΤǡΤ褦ʹ¤ȤƤȡɥȤηƶ뤳Ȥޤ饹ѥåΥȤǤϡθФȤäȼι¤ȤΩƤƤޤޤ .SS -メソッドコメントの自動コピー -.LP -.LP -Javadoc ツールには、次の 2 つの場合に、クラスおよびインタフェースのメソッドコメントをコピーまたは「継承」する機能があります。コンストラクタ、フィールド、および入れ子のクラスは、ドキュメンテーションコメントを継承しません。 +᥽åɥȤμưԡ .LP +Javadoc ġˤϡ 2 Ĥξˡ饹ӥ󥿥եΥ᥽åɥȤ򥳥ԡޤϡַѾפ뵡ǽޤ󥹥ȥ饯եɡҤΥ饹ϡɥơ󥳥ȤѾޤ .RS 3 .TP 2 o -\f3自動的にコメントを継承して、見つからないテキストを埋める\fP \- 主説明、または \f2@return\fP タグ、\f2@param\fP タグ、\f2@throws\fP タグが、メソッドコメントで見つからない場合、Javadoc ツールは、オーバーライドしたメソッドまたは実装している場合はそのメソッドから、対応する主説明またはタグコメントを、次のアルゴリズムに従ってコピーします。 +\f3ưŪ˥ȤѾƸĤʤƥȤ\fP \- \f2@return\fP \f2@param\fP ޤ \f2@throws\fP ᥽åɥȤ˸Ĥʤ硢Javadoc ġϡС饤ɤޤϼƤϤоݤȤʤ᥽åɤ顢бޤϥȤ򡢼Υ르ꥺ˽äƥԡޤ .LP -厳密には、特定のパラメータの \f2@param\fP タグが見つからない場合、そのパラメータのコメントが、上位の継承階層のメソッドからコピーされます。特定の例外の \f2@throws\fP タグが見つからない場合、その例外が宣言されている場合にかぎり、その \f2@throws\fP タグがコピーされます。 +̩ˤϡΥѥ᡼ \f2@param\fP Ĥʤ硢Υѥ᡼ΥȤ̤ηѾؤΥ᥽åɤ饳ԡޤ㳰 \f2@throws\fP Ĥʤ硢㳰Ƥˤꡢ \f2@throws\fP ԡޤ .LP -この動作はバージョン 1.3 以前の動作とは対照的です。 これまでのバージョンでは、主説明またはタグが存在すれば、コメントは一切継承されませんでした。 +ưϥС 1.3 ưȤоŪǤޤǤΥСǤϡޤϥ¸ߤСȤϰڷѾޤǤ .TP 2 o -\f3{@inheritDoc} タグを持つコメントを明示的に継承する\fP \- インラインタグ \f2{@inheritDoc}\fP を、メソッドの主説明、または \f2@return\fP、\f2@param\fP、\f2@throws\fP タグコメントに挿入します。 継承した対応する主説明またはタグコメントは、その箇所にコピーされます。 +\f3{@inheritDoc} ޤॳȤŪ˷Ѿ\fP \- 饤󥿥 \f2{@inheritDoc}\fP 򡢥᥽åɤμޤ \f2@return\fP \f2@param\fP \f2@throws\fP Τ줫ΥޤбѾ줿ޤϥȤΰ֤˥ԡޤ .RE - -.LP .LP -ドキュメンテーションコメントを実際にコピーに利用するには、継承したメソッドのソースファイルが \-sourcepath で指定したパスだけに置かれていることが必要になります。コマンド行で、クラスもパッケージも渡す必要はありません。この点は、クラスがドキュメント化されるクラスでなければならなかった 1.3.x 以前のリリースと異なります。 -.LP -.LP -\f3クラスおよびインタフェースからの継承\fP \- クラスおよびインタフェースから継承する次の 3 つの場合に、コメントの継承が行われます。 +ɥơ󥳥Ȥºݤ˥ԡѤˤϡѾ᥽åɤΥե뤬 \-sourcepath ǻꤷѥ֤Ƥ뤳ȤɬפˤʤޤޥɹԤǡ饹ѥåϤɬפϤޤ󡣤ϡ饹ɥȲ륯饹ǤʤФʤʤä 1.3.x Υ꡼Ȱۤʤޤ .LP +\f3饹ӥ󥿥եηѾ\fP \- 饹ӥ󥿥եѾ뼡 3 ĤξˡȤηѾԤޤ .RS 3 .TP 2 o -クラスのメソッドがスーパークラスのメソッドをオーバーライドしている +饹Υ᥽åɤѡ饹Υ᥽åɤ򥪡С饤ɤƤ .TP 2 o -インタフェースのメソッドがスーパーインタフェースのメソッドをオーバーライドしている +󥿥եΥ᥽åɤѡ󥿥եΥ᥽åɤ򥪡С饤ɤƤ .TP 2 o -クラスのメソッドがインタフェースのメソッドを実装している +饹Υ᥽åɤ󥿥եΥ᥽åɤƤ .RE - -.LP .LP -最初の 2 つのケース (メソッドがオーバーライドしている場合) では、Javadoc ツールは、そのコメントが継承されているかどうかにかかわらず、オーバーライドしているメソッドのドキュメント内に「オーバーライド」という小見出しを生成し、オーバーライドされているメソッドへのリンクを書き込みます。 +ǽ 2 ĤΥ (᥽åɤС饤ɤƤ) ǤϡJavadoc ġϡΥȤѾƤ뤫ɤˤ餺С饤ɤƤ᥽åɤΥɥˡ֥С饤ɡפȤФС饤ɤƤ᥽åɤؤΥ󥯤񤭹ߤޤ .LP +3 ܤΥ (Υ饹Υ᥽åɤ󥿥եΥ᥽åɤƤ) Ǥϡjavadoc ġϡС饤ɤƤ᥽åɤΥɥˡפȤФƤ᥽åɤؤΥ󥯤񤭹ߤޤϡȤѾƤ뤫ɤˤޤ .LP -3 つ目のケース (特定のクラスのメソッドがインタフェースのメソッドを実装している場合) では、javadoc ツールは、オーバーライドしているメソッドのドキュメント内に「定義」という小見出しを生成し、実装されているメソッドへのリンクを書き込みます。これは、コメントが継承されているかどうかにかかわりません。 -.LP -.LP -\f3メソッドの説明が継承されるアルゴリズム\fP \- あるメソッドにドキュメンテーションコメントが記述されていない場合、または {@inheritDoc} タグがある場合、Javadoc ツールは、次のようなアルゴリズムを使用して適切なコメントを検索します。 このアルゴリズムは、もっとも適切なドキュメンテーションコメントを検索できるように設計されており、スーパークラスよりもインタフェースが優先されるようになっています。 -.LP +\f3᥽åɤѾ륢르ꥺ\fP \- ᥽åɤ˥ɥơ󥳥ȤҤƤʤ硢ޤ {@inheritDoc} 硢Javadoc ġϡΤ褦ʥ르ꥺѤŬڤʥȤ򸡺ޤ Υ르ꥺϡäȤŬڤʥɥơ󥳥Ȥ򸡺Ǥ褦߷פƤꡢѡ饹⥤󥿥եͥ褵褦ˤʤäƤޤ .RS 3 .TP 3 1. -直接に実装されている (または、拡張されている) インタフェースを、メソッドの宣言で implements (または extends) キーワードのあとに登場する順序で、1 つずつ調べる。このメソッドについて最初に見つかったドキュメンテーションコメントを採用する +ľܤ˼Ƥ (ޤϡĥƤ) 󥿥ե򡢥᥽åɤ implements (ޤ extends) ɤΤȤо줹ǡ1 ĤĴ٤롣Υ᥽åɤˤĤƺǽ˸Ĥäɥơ󥳥ȤѤ .TP 3 2. -手順 1 でドキュメンテーションコメントが見つからなかった場合は、直接実装されている (または、拡張されている) インタフェースのそれぞれに対して、このアルゴリズム全体を再帰的に適用する (その際の順序は、手順 1 でインタフェースを調べたときの順序と同じ) + 1 ǥɥơ󥳥ȤĤʤäϡľܼƤ (ޤϡĥƤ) 󥿥եΤ줾ФơΥ르ꥺΤƵŪŬѤ (κݤνϡ 1 ǥ󥿥եĴ٤ȤνƱ) .TP 3 3. -手順 2 でドキュメンテーションコメントが見つからなかった場合で、このクラスが Object 以外のクラスである (インタフェースではない) 場合は、次のように処理する + 2 ǥɥơ󥳥ȤĤʤäǡΥ饹 Object ʳΥ饹Ǥ (󥿥եǤϤʤ) ϡΤ褦˽ .RS 3 .TP 3 a. -スーパークラスにこのメソッドについてのドキュメンテーションコメントが記述されていれば、そのコメントを採用する +ѡ饹ˤΥ᥽åɤˤĤƤΥɥơ󥳥ȤҤƤСΥȤѤ .TP 3 b. -手順 3a でドキュメンテーションコメントが見つからなかった場合は、スーパークラスに対して、このアルゴリズム全体を適用する + 3a ǥɥơ󥳥ȤĤʤäϡѡ饹ФơΥ르ꥺΤŬѤ .RE .RE - +.SH "javadoc " .LP -.SH "javadoc タグ" -.LP -.LP -Javadoc ツールは、Java のドキュメンテーションコメント内に埋め込まれた特別なタグを解析します。これらのドキュメンテーションタグを使うと、書式の整った完全な API ドキュメントをソースコードから自動的に生成できます。タグは、単価記号 (\f2@\fP) で始まり、大文字と小文字が区別されます。 これらのタグは、定められたとおりの大文字と小文字を使用して記述する必要があります。タグは、行の先頭 (先行する空白と省略可能なアスタリスクは除く) に置かなければなりません。慣例として、同じ名前のタグは 1 か所にまとめて記述するようにします。たとえば、\f2@see\fP タグが複数ある場合は、すべてを 1 か所にまとめて記述します。 -.LP -.LP -タグには 2 つのタイプがあります。 +Javadoc ġϡJava Υɥơ󥳥ޤ줿̤ʥϤޤΥɥơ󥿥Ȥȡ񼰤ä API ɥȤ򥽡ɤ鼫ưŪǤޤϡ֥åȥޡ׵ (\f2@\fP) ǻϤޤꡢʸȾʸζ̤ޤϡʸȾʸѤơɽƤȤϤɬפޤϡԤƬ (ԤȾάǽʥꥹϽ) ֤ʤФʤޤ󡣴ȤơƱ̾Υ 1 ˤޤȤƵҤ褦ˤޤȤС \f2@see\fP Ϥ٤Ʊ֤ޤ .LP +ˤ 2 ĤΥפޤ .RS 3 .TP 2 o -\f3ブロックタグ\fP \- 主説明に続くタグセクション内にのみ記述可能。ブロックタグは、\f2@tag\fP の形式をとります。 +\f3֥å\fP \- ³ˤΤߵҲǽ֥åϡ \f2@tag\fP ηȤޤ .TP 2 o -\f3インラインタグ\fP \- コメントの主説明内またはブロックタグのコメント内に記述可能。インラインタグは、\f2{@tag}\fP のように中括弧で囲みます。 +\f3饤󥿥\fP \- ⡢ޤϥ֥åΥ˵Ҳǽ饤󥿥ϡ \f2{@tag}\fP.Τ褦̤ǰϤߤޤ .RE - -.LP .LP -今後のリリースで導入されるタグについては、 +Υ꡼Ƴ륿ˤĤƤϡ .na -\f2「Proposed Javadoc Tags」\fP @ +\f2Proposed Javadoc Tags\fP @ .fi -http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください。 -.LP -.LP -現時点で有効なタグは、次のとおりです。 -.LP -.RS 3 - +http://java.sun.com/j2se/javadoc/proposed\-tags.html򻲾ȤƤ .LP +ͭʥϡΤȤǤ .LP .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 @@ -1267,7 +848,7 @@ http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -\f3導入された JDK/SDK のバージョン\fP +\f3Ƴ줿 JDK/SDK ΥС\fP .br .di .nr a| \n(dn @@ -1278,7 +859,7 @@ http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください .nf .ll \n(34u .nr 80 0 -.nr 38 \w\f3タグ\fP +.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 @@ -1373,7 +954,7 @@ http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください .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 1124 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 867 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -1392,7 +973,7 @@ http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'\f3タグ\fP\h'|\n(41u' +\&\h'|\n(40u'\f3\fP\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -1486,74 +1067,38 @@ http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください .rm a+ .TE .if \n-(b.=0 .nr c. \n(.c-\n(d.-44 - -.LP -.RE -.LP -カスタムタグについては、\-tag オプションを参照してください。 .LP +ॿˤĤƤϡ\-tag ץ򻲾ȤƤ .RS 3 .TP 3 @author\ name\-text -\-author オプションが使われている場合、生成ドキュメントに「著者」の項目を追加し、指定された \f2name\-text\fP を書き込みます。1 つのドキュメンテーションコメントに複数の \f2@author\fP タグを含めることができます。1 つの \f2@author\fP タグに 1 つの名前を指定することも、1 つのタグに複数の名前を指定することもできます。前者の場合は、Javadoc ツールによって、名前と名前の間にコンマ (\f2,\fP) とスペースが挿入されます。後者の場合は、テキスト全体が、解析されることなく、生成ドキュメントにそのままコピーされます。したがって、コンマではなく、各言語に対応した名前区切り文字を使う必要があるときは、1 つのタグに複数の名前を指定してください。 +\-author ץ󤬻ѤƤ硢ꤵ줿 \f2name\-text\fP ޤ [] ȥɥȤɲäޤ1 ĤΥɥơ󥳥Ȥʣ \f2@author\fP ޤ뤳ȤǤޤ1 Ĥ \f2@author\fP 1 Ĥ̾ꤹ뤳Ȥ⡢ʣ̾ꤹ뤳ȤǤޤԤξϡJavadoc ġˤä̾̾δ֤˥ (\f2,\fP) ȶޤԤξϡƥΤϤ뤳ȤʤɥȤˤΤޤޥԡޤäơޤǤϤʤƸб̾ڤʸȤɬפȤϡ1 ĤΥʣ̾ꤷƤ .RE - .LP -.RS 3 - -.LP -.LP -詳細については、「タグを使用できる場所」および +ܺ٤ˤĤƤϡ֥ѤǤפ .na -\f2@author タグのドキュメント\fP @ +\f2@author Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@authorを参照してください。 +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@author򻲾ȤƤ .LP -.LP - -.LP -.RE .RS 3 .TP 3 -@deprecated\ deprecated\-text -.RS 3 - -.LP -.LP -注: JDK 5.0 から、 -.na -\f2@Deprecated 注釈\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/deprecation.htmlを使って特定のプログラム要素を非推奨にできるようになりました。 -.LP -.RE +@deprecated\ deprecated\-text : @Deprecated ȤäΥץǤ侩ˤǤޤ .RE -.RS 3 - -.LP -.LP -この API は動作し続けますが、この API を使用するべきではないことを示すコメントを追加します。Javadoc ツールは、\f2deprecated\-text\fP を主説明の前に移動してイタリックにし、その前にボールドの警告「推奨されません。」を追加します。このタグは、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 .LP + API ư³ޤ API Ѥ٤ǤϤʤȤ򼨤ȤɲäޤJavadoc ġϡ \f2deprecated\-text\fP ˰ưƥåˤ˥ܡɤηٹֿ侩ޤ󡣡פɲäޤΥϡ٤ƤΥɥơ󥳥ȡĤޤ공סѥå饹󥿥ե󥹥ȥ饯᥽åɡӥեɤͭǤ .LP -\f2deprecated\-text\fP の最初の文では、少なくとも、その API が推奨されなくなった時期と、代替使用するべき API を読者に提示する必要があります。Javadoc ツールは、この最初の文だけを、概要セクションと索引にコピーします。そのあとの文では、その API が推奨されない理由を説明することもできます。また、代わりの API を指し示す \f2{@link}\fP タグ (Javadoc 1.2 以降の場合) を含める必要があります。 次のように記述します。 +\f2deprecated\-text\fP κǽʸǤϡʤȤ⡢ API 侩ʤʤäȡػѤ٤ API ɼԤ󼨤ɬפޤJavadoc ġϡκǽʸ򡢳ץȺ˥ԡޤΤȤʸǤϡ API 侩ʤͳ뤳ȤǤޤAPI ؤ \f2{@link}\fP ( Javadoc 1.2 ʹߤξ) ޤ٤Ǥ .LP -.LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@deprecated タグのドキュメント\fP @ +\f2@deprecated Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@deprecatedを参照してください。 -.LP +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@deprecated򻲾ȤƤ .RS 3 .TP 2 o -Javadoc 1.2 以降では、\f2{@link}\fP タグを使用します。これにより、必要な場所にインラインでリンクを作成できます。例を示します。 -.RE - -.LP -.RS 3 - -.LP +Javadoc 1.2 ʹߤǤ \f2{@link}\fP Ѥޤˤꡢɬפʾ˥饤ǥ󥯤ǤޤȤС .nf \f3 .fl @@ -1567,106 +1112,71 @@ Javadoc 1.2 以降では、\f2{@link}\fP タグを使用します。これによ .fl \fP .fi -.RE - -.LP -.RS 3 .TP 2 o -Javadoc 1.1 では、各 \f2@deprecated\fP タグに対して \f2@see\fP タグ (インラインにはできない) を記述するのが標準の形式です。 +Javadoc 1.1 ξɸϡ \f2@see\fP (饤Բ) \f2@deprecated\fP Ȥ˺뤳ȤǤ .RE - -.LP .LP -推奨されないタグについての詳細は、 +侩ʤˤĤƤξܺ٤ϡ .na -\f2@deprecated タグ\fP @ +\f2@deprecated \fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/index.htmlのドキュメントを参照してください。 -.LP -.LP - +http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/index.htmlΥɥȤ򻲾ȤƤ .LP -.RE .RS 3 .TP 3 {@code\ text} -\f2<code>{@literal}</code>\fP と同等です。 -.RE - -.LP -.RS 3 - -.LP -.LP -テキストを HTML マークアップまたは入れ子になった javadoc タグとして解釈せずに、\f2text\fP を \f2code\fP フォントで表示します。これにより doc コメントでは、パラメータの種類 (\f2<Object>\fP)、不等号 (\f23 < 4\fP)、または矢印 (\f2<\-\fP) などで、HTML エンティティー (\f2<\fP および \f2>\fP) ではなく、通常の山括弧 (\f2<\fP および \f2>\fP) を使用できます。たとえば doc コメントのテキスト +\f2<code>{@literal}</code>\fP ƱǤ .LP +ƥȤ \f2HTML ޡå\fP ޤ \f2Ҥˤʤä javadoc \fP ȤƲ᤻ˡtext 򥳡ɥեȤɽޤΤᡢɥơ󥳥̾λ (\f2<\fP \f2>\fP) HTML ƥƥ (\f2<\fP \f2>\fP) ˻ѤǤޤȤСѥ᡼η (\f2<Object>\fP) (\f23 < 4\fP) (\f2<\-\fP) ʤɤǤȤСΥɥơ󥳥 .nf \f3 .fl \fP\f4{@code A<B>C}\fP\f3 .fl - + .fl \fP .fi - -.LP -.LP -は、生成された HTML ページで、次のようにそのまま表示されます。 .LP +ϡ줿 HTML ڡǡΤ褦ˤΤޤɽޤ .nf \f3 .fl \fP\f4A<B>C\fP\f3 .fl - + .fl \fP .fi - -.LP -.LP -注目すべき点として、\f2<B>\fP は太字であると解釈されませんが、コードフォントになります。 -.LP .LP -コードフォントなしで同じ機能を実現するには、\f2{@literal}\fP を使用します。 +ܤ٤ϡ \f2<B>\fP ȤƲᤵ줺ΥեȤϥɥեȤˤʤ롢ȤǤ .LP +ɥեȤʤƱǽ¸ˤϡ\f2{@literal}\fP Ѥޤ .LP - -.LP -.RE -.RS 3 .TP 3 {@docRoot} -生成されるページから見た、生成ドキュメントの (生成先の) ルートディレクトリへの相対パスを表します。このタグは、著作権のページや会社のロゴなど、生成されるすべてのページから参照するファイルを組み込むときに便利です。通常は、各ページの下部から著作権のページにリンクします。 -.RE - -.LP -.RS 3 - -.LP -.LP -この \f2{@docRoot}\fP タグは、コマンド行からも、ドキュメンテーションコメントの中でも使用できます。このタグは、@return、@param、@deprecated などの任意のタグのテキスト部分を含む、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 +ڡ鸫ɥȤ () 롼ȥǥ쥯ȥؤХѥɽޤΥϡΥڡҤΥʤɡ뤹٤ƤΥڡ黲ȤեȤ߹ȤǤ̾ϡƥڡβΥڡ˥󥯤ޤ .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 プログラムでは、中括弧 { } 文字をエスケープする必要があります。たとえば、Inprise MAKE バージョン 5.2 を Windows 上で実行する場合は、「\f2{{@docRoot}}\fP」のように、中括弧を二重にする必要があります。さらに、\f2\-bottom\fP などのオプションに対する引数を、単一引用符ではなく、二重引用符で囲む必要があります。 \f2href\fP 引数の値を囲む引用符は省略します。 + \- \f2{@docRoot}\fP Makefile ǤΤ褦Ѥ硢 Makefile ץǤϡ { } ʸ򥨥פɬפޤȤСInprise MAKE С 5.2 Windows Ǽ¹Ԥϡ \f2{{@docRoot}} Τ褦ˡ̤Ťˤɬפޤ\fPˡ \f2\-bottom\fP ʤɤΥץФñǤϤʤŰǰϤɬפ⤢ޤ ( \f2href\fP ΰϤϾά) .TP 3 2. -ドキュメンテーションコメントの中では、次のように使用します。 +ɥơ󥳥ȤǤϡΤ褦˻Ѥޤ .nf \f3 .fl @@ -1676,16 +1186,13 @@ http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/index.htm .fl */ .fl - + .fl \fP .fi .RE - -.LP -.LP -このタグが必要な理由は、生成ドキュメントが、サブパッケージと同じ深さを持つ階層構造のディレクトリに格納されるからです。次に例を示します。 .LP +ΥɬפͳϡɥȤ֥ѥåƱijع¤Υǥ쥯ȥ˳Ǽ뤫Ǥ򼨤ޤ .nf \f3 .fl @@ -1695,201 +1202,118 @@ http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/index.htm .fl \fP .fi - -.LP -.LP -次のように解決されます。 .LP +Τ褦˲褵ޤ .nf \f3 .fl - <a href="../../copyright.html"> java/lang/Object.java の場合 + <a href="../../copyright.html"> java/lang/Object.java ξ .fl .fl \fP .fi - -.LP -.LP -および .LP + .nf \f3 .fl - <a href="../../../copyright.html"> java/lang/ref/Reference.java の場合 + <a href="../../../copyright.html"> java/lang/ref/Reference.java ξ .fl .fl \fP .fi - -.LP .LP - -.LP -.RE -.RS 3 .TP 3 @exception\ class\-name\ description -\f2@exception\fP タグは、\f2@throws\fP タグと同義です。 -.RE - -.LP -.RS 3 - -.LP -.LP - +\f2@exception\fP \f2@throws\fP ƱǤ .LP -.RE -.RS 3 .TP 3 {@inheritDoc}\ -もっとも近い継承可能なクラスまたは実装可能なインタフェースから、このタグの現在のドキュメンテーションコメントに、ドキュメントを継承 (コピー) します。この機能により、より汎用的なコメントを継承ツリーの上位に記述し、コピーしたテキストを使って記述することができます。 -.RE - -.LP -.RS 3 - -.LP -.LP -このタグは、ドキュメンテーションコメントの次の位置でのみ有効です。 +äȤᤤѾǽʥ饹ޤϼǽʥ󥿥ե顢ΥθߤΥɥơ󥳥ȤˡɥȤѾ (ԡ) ޤεǽˤꡢŪʥȤѾĥ꡼ξ̤˵ҤԡƥȤȤäƵҤ뤳ȤǤޤ .LP +Υϡɥơ󥳥Ȥμΰ֤ǤΤͭǤ .RS 3 .TP 2 o -メソッドの主説明ブロック内。この場合、主説明は、上位階層のクラスまたはインタフェースからコピーされる +᥽åɤμ֥å⡣ξ硢ϡ̳ؤΥ饹ޤϥ󥿥ե饳ԡ .TP 2 o -メソッドの @return、@param、@throws タグのテキスト引数内。この場合、タグテキストは、上位階層の対応するタグからコピーされる +᥽åɤ @return@param@throws ΥƥȰ⡣ξ硢ƥȤϡ̳ؤб륿饳ԡ .RE - -.LP -.LP -継承階層でコメントを見つける方法に関する正確な説明について、「メソッドコメントの自動コピー」を参照してください。このタグが見つからない場合、コメントは、この節で説明するルールに応じて、自動的に継承されるかどうかが決まります。 .LP +ѾؤǥȤ򸫤Ĥˡ˴ؤΤˤĤơ֥᥽åɥȤμưԡפ򻲾ȤƤΥĤʤ硢Ȥϡ롼˱ơưŪ˷Ѿ뤫ɤޤޤ .LP - -.LP -.RE -.RS 3 .TP 3 -{@link\ \ package.class#member\ \ label}\ -表示テキスト \f2label\fP とのインラインリンクを挿入します。 \f2label\fP は、参照クラスの指定されたパッケージ、クラス、またはメンバーの名前のドキュメンテーションを指し示します。このタグは、@return、@param、@deprecated などの任意のタグのテキスト部分を含む、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 -.RE - +{@link\ package.class#member\ label} +ɽƥ \f2label\fP ȤΥ饤󥯤ޤlabel ϡȥ饹λꤵ줿ѥå饹ޤϥС̾ΥɥơؤޤΥϡ@return@param@deprecated ʤɤǤդΥΥƥʬޤࡢ٤ƤΥɥơ󥳥ȡĤޤ공סѥå饹󥿥ե󥹥ȥ饯᥽åɡӥեɤͭǤ .LP -.RS 3 - +Υ \f2@see\fP ˤ褯Ƥޤɤ⡢\f2package.class\fP\f2#\fP\f2member\fP \f2label\fP λȤλƱǡͭʹʸޤäƱǤ礭ʰ㤤ϡ \f2{@link}\fP Ǥϡ[Ϣ] ˥󥯤֤ˡ饤Υ󥯤ȤǤޤ饤ƥȤΤۤʬȶ̤뤿ˡ \f2{@link}\fP κǽȺǸ̤򵭽Ҥޤ٥ǡ}פȤɬפϡHTML ƥƥΡ}פȤޤ .LP +1 ʸǻѲǽ \f2{@link}\fP ο¤Ϥޤ󡣤Υϡɥơ󥳥Ȥμʬޤ @deprecated@return@param ʤɤǤդΥΥƥʬǻȤȤǤޤ .LP -このタグは、\f2@see\fP タグとよく似ています。 どちらのタグも、\f2package.class\fP\f2#\fP\f2member\fP および \f2label\fP の参照の仕方が同じで、有効な構文もまったく同じです。大きな違いは、\f2{@link}\fP は、リンクを [関連項目] セクションに置くのではなく、インラインリンクを生成するということです。また、インラインテキストのほかの部分と区別するために、\f2{@link}\fP タグの最初と最後に中括弧を記述します。ラベルの中で「}」を使う必要がある場合は、HTML エンティティーの「}」を使います。 -.LP -.LP -1 つの文の中で使用できる \f2{@link}\fP タグの数に制限はありません。このタグは、ドキュメンテーションコメントの主説明部分、または @deprecated、@return、@param などの任意のタグのテキスト部分で使うことができます。 -.LP -.LP -たとえば、次のコメントでは \f2getComponentAt(int, int)\fP メソッドを参照しています。 -.LP +ȤСΥȤǤ \f2getComponentAt(int, int)\fP ᥽åɤ򻲾ȤƤޤ .nf \f3 .fl -{@link #getComponentAt(int, int) getComponentAt} メソッドを使用します。 +{@link #getComponentAt(int, int) getComponentAt} ᥽åɤѤޤ .fl .fl \fP .fi - -.LP -.LP -標準ドックレットでは、上記のコメントから次の HTML が生成されます (このコメントが同じパッケージの別のクラスを参照している場合)。 .LP +ɸɥååȤǤϡ嵭ΥȤ鼡 HTML ޤ (ΥȤƱѥå̤Υ饹򻲾ȤƤ) .nf \f3 .fl -<a href="Component.html#getComponentAt(int, int)">getComponentAt</a> メソッドを使用します。 +<a href="Component.html#getComponentAt(int, int)">getComponentAt</a> ᥽åɤѤޤ .fl .fl \fP .fi - -.LP -.LP -この HTML は、Web ページ上では次のように表示されます。 .LP + HTML ϡWeb ڡǤϼΤ褦ɽޤ .nf \f3 .fl -getComponentAt メソッドを使用します。 +getComponentAt ᥽åɤѤޤ .fl .fl \fP .fi - .LP +\f2{@link}\fP ĥƥɥȲʤ饹ؤΥ󥯤ǽˤˤϡ\f2\-link\fP ץѤޤ .LP -\f2{@link}\fP を、ドキュメント化の対象にしていないクラスにまで拡張するには、\f2\-link\fP オプションを使用します。 -.LP -.LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2{@link} タグのドキュメント\fP @ +\f2{@link} Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#{@link}を参照してください。 -.LP -.LP - +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#{@link}򻲾ȤƤ .LP -.RE -.RS 3 .TP 3 {@linkplain\ package.class#member\ label} -リンクのラベルがコードフォントではなくプレーンテキストで表示される点以外は \f2{@link}\fP と同じです。ラベルがプレーンテキストで記述されていると便利です。例: -.RE - -.LP -.RS 3 - -.LP +󥯤Υ٥뤬ɥեȤǤϤʤץ졼ƥȤɽʳ \f2{@link}\fP ƱǤ٥뤬ץ졼ƥȤǵҤƤǤ򻲾ȤƤ: .nf \f3 .fl - {@linkplain add() the overridden method} を参照してください。 + {@linkplain add() the overridden method} 򻲾ȤƤ .fl .fl \fP .fi - -.LP -.LP -これは以下のように表示されます。 -.LP -.RS 3 - -.LP .LP -the overridden method を参照してください。 +ϰʲΤ褦ɽޤ .LP -.RE -.LP - +the overridden method 򻲾ȤƤ .LP -.RE -.RS 3 .TP 3 {@literal\ text} -テキストを HTML マークアップまたは入れ子になった javadoc タグとして解釈せずに、\f2text\fP を表示します。これにより doc コメントでは、パラメータの種類 (\f2<Object>\fP)、不等号 (\f23 < 4\fP)、または矢印 (\f2<\-\fP) などで、HTML エンティティー (\f2<\fP および \f2>\fP) ではなく、通常の山括弧 (\f2<\fP および \f2>\fP) を使用できます。たとえば doc コメントのテキスト -.RE - -.LP -.RS 3 - -.LP +ƥȤ HTML ޡåפޤҤˤʤä javadoc ȤƲ᤻ˡ \f2text\fP ɽޤΤᡢɥơ󥳥̾λ (\f2<\fP \f2>\fP) HTML ƥƥ (\f2<\fP \f2>\fP) ˻ѤǤޤȤСѥ᡼η (\f2<Object>\fP) (\f23 < 4\fP) (\f2<\-\fP) ʤɤǤȤСΥɥơ󥳥 .nf \f3 .fl @@ -1899,40 +1323,22 @@ the overridden method を参照してください。 .fl \fP .fi - -.LP -.LP -は、生成された HTML ページはブラウザで次のようにそのまま表示されます。 -.LP -.LP -\f2\ \ \ \ \ \fPA<B>C .LP +ϡ줿 HTML ڡϥ֥饦ǼΤ褦ˤΤޤɽޤ .LP -注目すべき点として、\f2<B>\fP は太字であると解釈されません (コードフォントにならない)。 +\f2\ \ \ \ \ \fPA<B>C .LP +ܤ٤ϡ \f2<B>\fP ȤƲᤵ줺ΥեȤϥɥեȤˤʤ롢ȤǤ .LP -コードフォントで同じ機能を実現するには、\f2{@code}\fP を使用します。 +ɥեȤƱǽ¸ˤϡ\f2{@code}\fP Ѥޤ .LP -.LP - -.LP -.RE -.RS 3 .TP 3 @param\ parameter\-name description -指定した \f2parameter\-name\fP と指定した \f2description\fP を使用してパラメータを「Parameters」セクションに追加します。doc コメントを記述するときは、\f2description\fP を複数行に続けることができます。このタグは、メソッド、コンストラクタ、またはクラスの doc コメント内でのみ有効です。 -.RE - -.LP -.RS 3 - -.LP -.LP -\f2parameter\-name\fP は、メソッドまたはコンストラクタでのパラメータの名前か、クラス、メソッドまたはコンストラクタのタイプパラメータの名前になります。山括弧でパラメータ名を囲むと、型パラメータを使用することを指定します。 +ꤵ줿 \f2parameter\-name\fP ΤȤ˻ꤵ줿 \f2description\fP ³ѥ᡼[ѥ᡼] ɲäޤɥơ󥳥Ȥ򵭽ҤȤˤϡ \f2description\fP ʣԤˤ錄äƵҤ뤳ȤǤޤΥϡ᥽åɡ󥹥ȥ饯ޤϥ饹 doc ǤΤͭǤ .LP +\f2parameter\-name\fP ϡ᥽åɤޤϥ󥹥ȥ饯ǤΥѥ᡼̾饹᥽åɤޤϥ󥹥ȥ饯Υץѥ᡼̾ˤʤޤ̤ǥѥ᡼̾Ϥȡѥ᡼Ѥ뤳Ȥ ꤷޤ .LP -クラスの型パラメータの例: -.LP +饹ηѥ᡼: .nf \f3 .fl @@ -1950,11 +1356,8 @@ the overridden method を参照してください。 .fl \fP .fi - -.LP -.LP -メソッドの型パラメータの例: .LP +᥽åɤηѥ᡼: .nf \f3 .fl @@ -1978,125 +1381,87 @@ the overridden method を参照してください。 .fl \fP .fi - -.LP .LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@param タグのドキュメント\fP @ +\f2@param Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@paramを参照してください。 -.LP -.LP - +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@param򻲾ȤƤ .LP -.RE -.RS 3 .TP 3 @return\ description -[戻り値] セクションを追加して、\f2description\fP のテキストを書き込みます。このテキストでは、戻り値の型と、取り得る値の範囲について記述する必要があります。このタグは、メソッドのドキュメンテーションコメントでのみ有効です。 -.RE - -.LP -.RS 3 - +[] ɲäơ \f2description\fP ΥƥȤ񤭹ߤޤΥƥȤǤϡͤηȡͤϰϤˤĤƵҤɬפޤΥϡ᥽åɤΥɥơ󥳥ȤǤΤͭǤ .LP -.LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@return タグのドキュメント\fP @ +\f2@return Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@returnを参照してください。 -.LP -.LP - +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@return򻲾ȤƤ .LP -.RE -.RS 3 .TP 3 -@see\ \ reference -[関連項目] 見出しを追加し、\f2reference\fP を指すリンクか、またはテキストエントリを書き込みます。1 つのドキュメンテーションコメントには、任意の数の \f2@see\fP タグを指定できます。 すべての \f2@see\fP タグの内容は、同じの見出しの下にグループ化されます。\f2@see\fP タグには、次の 3 種類の形式があります。 もっともよく使われるのは、3 番目の形式です。このタグは、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。パッケージ、クラス、またはメンバーに対するインラインリンクを文中に挿入する方法は、\f2{@link}\fP を参照してください。 +@see\ reference +ִϢܡ׸Фɲä \f2reference ؤ󥯤ޤϥƥȥȥ񤭹ߤޤ\fPɥơ󥳥ȤˤǤդο \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) かどうかを調べて、この形式をほかの 2 つの形式と区別します。例を示します。 +\f2string Υƥȥȥɲäޤ\fP󥯤ޤ \f2string\fP ϡҤޤ URL ǤϥǤʤλǤJavadoc ġϡǽʸŰ (\f2"\fP) ɤĴ٤ơηۤ 2 Ĥηȶ̤ޤȤС .nf \f3 .fl @see "The Java Programming Language" .fl - + .fl \fP .fi .LP -これは次のようなテキストを生成します。 +ϼΤ褦ʥƥȤޤ +.RE .RE .RS 3 .RS 3 - -.LP +.RS 3 .RS 3 .TP 3 -関連項目: +Ϣ: The Java Programming Language .RE - -.LP -.RE .RE .TP 3 @see <a href="URL#value">label</a> -\f2URL\fP#\f2value\fP で定義されたとおりにリンクを追加します。\f2URL\fP#\f2value\fP は、相対 URL または絶対 URL です。Javadoc ツールは、最初の文字が「より小さい」記号 (\f2<\fP) かどうかを調べて、この形式をほかの 2 つの形式と区別します。例を示します。 +\f2URL\fP#\f2value\fP 줿Ȥ˥󥯤ɲäޤ \f2URL\fP#\f2value\fP URL ޤ URL ǤJavadoc ġϡǽʸ֤꾮׵ (\f2<\fP) ɤĴ٤ơηۤ 2 Ĥηȶ̤ޤȤС .nf \f3 .fl @see <a href="spec.html#section">Java Spec</a> .fl - -.fl \fP .fi -.LP -これは次のようなリンクを生成します。 -.RS 3 +ϼΤ褦ʥ󥯤ޤ .RS 3 .TP 3 -関連項目: +Ϣ: Java Spec .RE -.RE -.RE -.RS 3 - -.LP -.LP - -.LP -.RE -.RS 3 .TP 3 @see\ package.class#member\ label -指定された名前を持つ、参照されている Java 言語のメンバーについてのドキュメントを指すリンクを、表示テキスト \f2label\fP とともに追加します。\f2label\fP は省略可能です。 \f2label\fP を省略すると、リンク先のメンバーの名前が適切に短縮されて表示されます。 「名前が表示される方法」を参照してください。\-noqualifier を使用すると、表示テキストからパッケージ名が全体的に削除されます。ラベルは、自動生成される表示テキストとは異なる表示テキストを指定する場合に使います。 +ĻΥƥ \f2label\fP ĥ󥯤ɲäޤΥ󥯤ϡȤʤ롢ꤵ줿 Java ̾Υɥơؤޤ \f2label\fP ϾάǽǤlabel άȡΥС̾Ŭڤṳ̂ɽޤ ̾ɽˡפ򻲾ȤƤ\-noqualifier ѤȡɽƥȤѥå̾Ū˺ޤ٥ϡưɽƥȤȤϰۤʤɽƥȤꤹ˻Ȥޤ .LP -バージョン 1.2 だけは、ラベルではなく、名前が <code> HTML タグ内に自動的に表示されます。 1.2.2 からは、ラベルを使用するか、しないかにかかわらず、<code> は常に表示テキストを囲むかたちで、含まれます。 +С 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 タグを使います。この引数については、このあとの「名前の指定」で詳しく説明します。 +\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 が、現在のクラスおよびパッケージに応じて適切に短縮されて表示されます。 「名前が表示される方法」を参照してください。 +\f4label\fP ϡάǽʥƥȤǡ󥯤Υ٥Ȥɽޤ \f2label\fP ˤ϶ޤ뤳ȤǤޤ \f2label\fP άȡ\f2package.class.member\fP ߤΥ饹ӥѥå˱Ŭڤṳ̂ɽޤ̾ɽˡפ򻲾ȤƤ .TP 2 o -空白文字は、\f2package.class\fP\f2#\fP\f2member\fP と \f2label\fP の間の区切り文字です。括弧の内側の空白文字はラベルの先頭とは解釈されないため、メソッドのパラメータ間に空白文字を入れてもかまいません。 +򤬡 \f2package.class\fP\f2#\fP\f2member\fP \f2label\fP δ֤ζڤʸˤʤޤ̤¦ζʸϥ٥ƬȤϲᤵʤᡢ᥽åɤΥѥ᡼֤˶ʸƤ⤫ޤޤ .RE .LP -\f3例\fP \- この例では、\f2Character\fP クラスにある \f2@see\fP タグが、\f2String\fP クラスの \f2equals\fP メソッドを参照しています。タグには、名前 \f2String#equals(Object)\fP とラベル \f2equals\fP の両方の引数が含まれています。 -.RS 3 - -.LP +\f3\fP \- Ǥϡ \f2@see\fP ( \f2Character\fP 饹) String 饹 \f2equals\fP ᥽å \f2򻲾\fP ƤޤΥˤ̾\f2String#equals(Object)\fPפȥ٥\f2equals\fPפξΰޤޤƤޤ .nf \f3 .fl @@ -2106,63 +1471,34 @@ o .fl */ .fl - -.fl \fP .fi -.RE -.LP -標準ドックレットは、次のような HTML を生成します。 -.RS 3 - -.LP +ɸɥååȤϡΤ褦 HTML ޤ .nf \f3 .fl <dl> .fl -<dt><b>See also:</b> +<dt><b>See Also:</b> .fl <dd><a href="../../java/lang/String#equals(java.lang.Object)"><code>equals<code></a> .fl </dl> -.fl - .fl \fP .fi -.RE -.LP -これは、ブラウザでは次のように表示され、ラベルがリンクテキストになります。 -.RS 3 +ϡ֥饦ǤϼΤ褦ɽ졢٥뤬󥯥ƥȤˤʤޤ .RS 3 .TP 3 -関連項目: +Ϣ: equals .RE -.RE -.RE - -.LP -.RS 3 - -.LP -.LP - .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 -\f3名前の指定\fP \- このタグに指定する \f2package.class\fP\f2#\fP\f2member\fP という名前は、\f2java.lang.String#toUpperCase()\fP のように完全指定することも、\f2String#toUpperCase()\fP や \f2#toUpperCase()\fP のように部分的に指定することもできます。名前が完全指定されていない場合、Javadoc ツールは、Java コンパイラの通常の検索順序でその名前を検索します。詳細は、このあとの「@see の検索順序」を参照してください。名前には、メソッドの複数の引数の間など、括弧の内側であれば空白を含めることができます。 +ʬŪ˻פû̾ꤹ뤳ȤϡϤʸ뤳Ȥ䡢ɤɤߤ䤹ʤ뤳ȤǤɽˡޤޤʷ̾򼨤ޤǡ \f2Class\fP ˤϥ饹ޤϥ󥿥ե \f2Type\fP ˤϥ饹󥿥ե󡢤ޤϴܥǡ \f2method\fP ˤϥ᥽åɤޤϥ󥹥ȥ饯򡢤줾Ǥޤ .LP .LP -「部分的に指定」した短い名前を指定することの利点は、入力する文字数が減ることや、ソースコードが読みやすくなることです。次の表に、さまざまな形式の名前を示します。 この表の中で、\f2Class\fP にはクラスまたはインタフェースを、\f2Type\fP にはクラス、インタフェース、配列、または基本データ型を、そして \f2method\fP にはメソッドまたはコンストラクタを指定できます。 -.LP -.LP - -.LP -.RE -.RS 3 -.RS 3 -.LP .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 .de 35 @@ -2191,7 +1527,7 @@ equals .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 +\f4@see\fP\f3\ \fP\f4package.class#member\fP\f3 ΰŪʷ\fP .br .di .nr a| \n(dn @@ -2207,9 +1543,9 @@ equals .ll \n(34u*1u/2u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f3現在のクラスのメンバーを参照する\fP +\f3ߤΥ饹ΥС򻲾Ȥ\fP .br -\f2@see\fP\ \f2#\fP\f2field\fP +\f2@see\fP\ \f2#\fP\f2ե\fP .br \f2@see\fP\ \f2#\fP\f2method(Type,\ Type,...)\fP .br @@ -2233,21 +1569,21 @@ equals .ll \n(34u*1u/2u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f3現在の、またはインポートされたパッケージの別のクラスを参照する\fP +\f3ߤΡޤϥݡȤ줿ѥå̤Υ饹򻲾Ȥ\fP .br -\f2@see\fP\ \f2Class\fP\f2#\fP\f2field\fP +\f2@see\fP\ \f2饹\fP\f2#\fP\f2ե\fP .br -\f2@see\fP\ \f2Class\fP\f2#\fP\f2method(Type,\ Type,...)\fP +\f2@see\fP\ \f2饹\fP\f2#\fP\f2method(Type,\ Type,...)\fP .br -\f2@see\fP\ \f2Class\fP\f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP +\f2@see\fP\ \f2饹\fP\f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP .br -\f2@see\fP\ \f2Class\fP\f2#\fP\f2constructor(Type,\ Type,...)\fP +\f2@see\fP\ \f2饹\fP\f2#\fP\f2constructor(Type,\ Type,...)\fP .br -\f2@see\fP\ \f2Class\fP\f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP +\f2@see\fP\ \f2饹\fP\f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP .br \f2@see\fP\ \f2Class.NestedClass\fP .br -\f2@see\fP\ \f2Class\fP +\f2@see\fP\ \f2饹\fP .br .di .nr c| \n(dn @@ -2263,9 +1599,9 @@ equals .ll \n(34u*1u/2u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f3別のパッケージの要素を参照する\fP\ (完全修飾) +\f3̤ΥѥåǤ򻲾Ȥ\fP\ () .br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2field\fP +\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2ե\fP .br \f2@see\fP\ \f2package.Class\fP\f2#\fP\f2method(Type,\ Type,...)\fP .br @@ -2279,7 +1615,7 @@ equals .br \f2@see\fP\ \f2package.Class\fP .br -\f2@see\fP\ \f2package\fP +\f2@see\fP\ \f2ѥå\fP .br .di .nr d| \n(dn @@ -2308,7 +1644,7 @@ equals .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 1860 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 1358 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -2396,74 +1732,52 @@ equals .rm d+ .TE .if \n-(b.=0 .nr c. \n(.c-\n(d.-58 -.RE -.RE - -.LP -.RS 3 - -.LP -.LP -上の表に対する補足事項を次に示します。 .LP +ɽФ­򼡤˼ޤ .RS 3 .TP 2 o -最初の種類の形式 (パッケージとクラスを省略) の場合、Javadoc ツールは、現在のクラスの階層だけを検索します。つまり、現在のクラスかインタフェース、そのスーパークラスかスーパーインタフェース、または現在のクラスかインタフェースを囲んでいるクラスかインタフェースからメンバーを検索します (このあとの検索手順 1 〜 3)。現在のパッケージのほかの部分や、ほかのパッケージは検索しません (検索手順 4 〜 5)。 +ǽμη (ѥåȥ饹ά) ξ硢Javadoc ġϡߤΥ饹γؤ򸡺ޤĤޤꡢߤΥ饹󥿥եΥѡ饹ѡ󥿥եޤϸߤΥ饹󥿥եϤǤ륯饹󥿥եС򸡺ޤ (ΤȤθ 1 3)ߤΥѥåΤۤʬ䡢ۤΥѥåϸޤ ( 4 5) .TP 2 o -メソッドまたはコンストラクタを指定するときに括弧を付けずに名前だけ (\f2getValue\fP など) を使用した場合、同じ名前のフィールドが存在しなければ、Javadoc ツールはそのメソッドに対して正しくリンクを作成します。 ただし、括弧と引数を追加するように促す警告メッセージを出力します。このメソッドがオーバーロードされている場合、Javadoc ツールは、検索で最初に見つかったメソッドにリンクします。 結果は前もって特定できません。 +᥽åɤޤϥ󥹥ȥ饯λˡ \f2getValue\fP Τ褦˳̤ʤ̾Ѥ硢Ʊ̾Υեɤ¸ߤƤʤСJavadoc ġˤäƤ̾ؤΥ󥯤ޤ̤ɲä桼¥ηٹåɽޤΥ᥽åɤСɤƤ硢Javadoc ġϡǺǽ˸Ĥä᥽åɤ˥󥯤ޤ̤äǤޤ .TP 2 o -入れ子にされたクラスは、上記のどの形式の場合も、単に「\f2inner\fP」ではなく、「\f2outer\fP\f2.\fP\f2inner\fP」として指定しなければなりません。 +Ҥˤʤä饹ϡ٤ƤηˤĤơ \f2outer\fP\f2.\fP\f2inner\fP Ȥƻꤹɬפޤñ \f2inner\fP ȤϤʤǤ .TP 2 o -すでに述べたとおり、クラスとメンバーを区切るために、ドット (\f2.\fP) ではなくシャープ記号 (\f2#\fP) を使用することに注意してください。このように指定すると、Javadoc ツールは、あいまいさを解決できます。 ドットは、クラス、入れ子にされたクラス、パッケージ、およびサブパッケージを区切るためにも使用されます。ただし、Javadoc ツールでは一般に許容範囲が広く、あいまいさがなければ、ドットでも正しく解析されます。 その場合でも警告は表示されます。 +Ǥ˽Ҥ٤褦ˡ\f2饹ȥСȤδ֤ζڤʸȤƤϡ\fPɥå (\f2.\fP) ǤϤʤ㡼ʸ (#) ѤޤΤ褦˻ꤹȡJavadoc ġϡޤǤޤɥåȤϡ饹Ҥˤ줿饹ѥåӥ֥ѥåڤ뤿ˤѤޤJavadoc ġǤϰ̤˵ϰϤޤʤСɥåȤǤϤޤξǤٹɽޤ .RE - -.LP -.LP -\f3@see の検索順序\fP \- Javadoc ツールは、ソースファイル (.java)、パッケージファイル (package.html または package\-info.java)、または概要ファイル (overview.html) の中に登場する \f2@see\fP タグを処理します。後者の 2 つのファイルでは、完全指定の名前を \f2@see\fP タグに指定しなければなりません。ソースファイルでは、完全指定の名前、または部分指定の名前を指定できます。 -.LP .LP -Javadoc ツールは、\f2.java\fP ファイル内で完全指定でない名前が記述された \f2@see\fP タグを見つけると、Java コンパイラと同じ順序で指定された名前を検索します。 ただし、Javadoc ツールは、特定の名前空間のあいまいさを検出しません。 これは、ソースコードにこれらのエラーが存在していないことを前提としているためです。この検索順序は、Java 言語仕様第 2 版の第 6 章「Names」で正式に定義されています。Javadoc ツールは、関連するクラスとパッケージ、およびインポートされたクラスとパッケージのすべてから名前を検索します。具体的には、次の順序で検索します。 +\f3@see θ\fP \- Javadoc ġϡե (.java)ѥåե (package.html ޤ package\-info.java) ޤϳץե (overview.html) ˴ޤޤ \f2@see\fP ޤԤ 2 ĤΥեǤϡ̾ \f2@see\fP ˻ꤷʤФʤޤ󡣥եǤϡ̾ޤʬ̾Ǥޤ .LP +Javadoc ġϡǤʤ̾Ҥ줿 \f2@see\fP \f2.java եǸĤȡ\fP Java ѥƱǻꤵ줿̾򸡺ޤ Javadoc ġϡ֤̾Τޤ򸡽Фޤ ϡɤˤΥ顼¸ߤƤʤȤȤƤ뤿ǤθϡJava 2 Ǥ 6 ϡNamesפƤޤJavadoc ġϡϢ륯饹ȥѥåӥݡȤ줿饹ȥѥåΤ٤Ƥ̾򸡺ޤŪˤϡνǸޤ .RS 3 .TP 3 1. -現在のクラスまたはインタフェース +ߤΥ饹ޤϥ󥿥ե .TP 3 2. -外側を囲んでいるクラスとインタフェース (もっとも近いものから検索) +¦ϤǤ륯饹ȥ󥿥ե (äȤᤤΤ鸡) .TP 3 3. -スーパークラスとスーパーインタフェース (もっとも近いものから検索) +ѡ饹ȥѡ󥿥ե (äȤᤤΤ鸡) .TP 3 4. -現在のパッケージ +ߤΥѥå .TP 3 5. -インポートされているパッケージ、クラス、およびインタフェース (import 文の順序に従って検索) +ݡȤƤѥå饹ӥ󥿥ե (import ʸν˽äƸ) .RE - -.LP -.LP -Javadoc ツールは、各クラスについて手順 1 〜 3 を再帰的に適用しながら、一致する名前が見つかるまで検索を続けます。つまり、まず現在のクラスを検索し、次にそのクラスを囲んでいるクラス E を検索し、その次に E のスーパークラスを検索し、さらにその次に E を囲んでいるクラスを検索します。 手順 4 と 5 では、1 つのパッケージ内のクラスまたはインタフェースを検索する順序は決まっていません。 その順序は、個々のコンパイラによって異なります。手順 5 では、Javadoc ツールは、java.lang を検索します。 このパッケージは、すべてのプログラムに自動的にインポートされるからです。 -.LP .LP -Javadoc ツールは、必ずしもサブクラスを検索するとは限りません。 また、javadoc の実行中にほかのパッケージのドキュメントが生成される場合でも、ほかのパッケージを検索しません。たとえば、\f2@see\fP タグが \f2java.awt.event.KeyEvent\fP クラス内にあって、\f2java.awt\fP パッケージにある名前を参照している場合、Javadoc は、そのクラスがインポートしないかぎりそのパッケージを検索しません。 +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 が表示されます。一般に、package.class.member は、現在のクラスおよびパッケージに応じて適切に短縮されます。「短縮される」とは、必要最小限の名前だけが表示されるということです。たとえば、\f2String.toUpperCase()\fP メソッドに、同じクラスのメンバーへの参照とほかのクラスのメンバーへの参照が含まれている場合、クラス名が表示されるのは後者のケースだけです (次の表を参照)。 +\f3̾ɽˡ\fP \- \f2label\fP άϡ\f2package.class.member\fP ɽޤ̤ˡpackage.class.member ϡߤΥ饹ӥѥå˱Ŭڤṳ̂ޤṳ̂פȤϡɬ׺Ǿ¤̾ɽȤȤǤȤС \f2String.toUpperCase()\fP ᥽åɤˡƱ饹ΥСؤλȤȤۤΥ饹ΥСؤλȤޤޤƤ硢饹̾ɽΤϸԤΥǤ (ɽ򻲾) .LP -.LP -パッケージ名を広域的に削除するには、\-noqualifier を使用します。 +ѥå̾򹭰Ū˺ˤϡ\-noqualifier Ѥޤ .br - -.LP -.RE -.RS 3 -.RS 3 .LP .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 @@ -2493,7 +1807,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(81 .ll \n(81u .in 0 -\f4String.toUpperCase()\fP\f3 での例\fP +\f4String.toUpperCase() Ǥ\fP .br .di .nr a| \n(dn @@ -2509,7 +1823,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f2@see\fP タグが同じクラスのメンバーを参照している +\f2@see\fP Ʊ饹ƱѥåΥС򻲾ȤƤ .br .di .nr b| \n(dn @@ -2525,7 +1839,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(82 .ll \n(82u .in 0 -\f2toLowerCase()\fP (クラス名は省略) +\f2toLowerCase()\fP (饹̾Ͼά) .br .di .nr c| \n(dn @@ -2541,7 +1855,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f2@see\fP タグが別のクラスのメンバーを参照している +\f2@see\fP ۤʤ륯饹ƱѥåΥС򻲾ȤƤ .br .di .nr d| \n(dn @@ -2573,7 +1887,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(82 .ll \n(82u .in 0 -\f2Character.toLowerCase(char)\fP (パッケージ名は省略し、クラス名を含む) +\f2Character.toLowerCase(char)\fP (ѥå̾Ͼά饹̾ޤ) .br .di .nr f| \n(dn @@ -2589,7 +1903,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f2@see\fP タグが別のクラスのメンバーを参照している +\f2@see\fP ۤʤ륯饹ۤʤѥåΥС򻲾ȤƤ .br .di .nr g| \n(dn @@ -2621,7 +1935,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(82 .ll \n(82u .in 0 -\f2java.io.File.exists()\fP (パッケージ名とクラス名を含む) +\f2java.io.File.exists()\fP (ѥå̾ȥ饹̾ޤ) .br .di .nr i| \n(dn @@ -2632,7 +1946,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .nf .ll \n(34u .nr 80 0 -.nr 38 \w\f3参照の種類\fP +.nr 38 \w\f3Ȥμ\fP .if \n(80<\n(38 .nr 80 \n(38 .80 .rm 80 @@ -2654,7 +1968,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .nr 38 \n(h- .if \n(81<\n(38 .nr 81 \n(38 .nr 82 0 -.nr 38 \w\f3表示される名前\fP +.nr 38 \w\f3ɽ̾\fP .if \n(82<\n(38 .nr 82 \n(38 .82 .rm 82 @@ -2676,7 +1990,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .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 1958 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 1434 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -2695,7 +2009,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .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 +\&\h'|\n(40u'\f3Ȥμ\fP\h'|\n(41u'\h'|\n(42u'\f3ɽ̾\fP .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -2814,22 +2128,14 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .rm i+ .TE .if \n-(b.=0 .nr c. \n(.c-\n(d.-28 -.RE -.RE - -.LP -.RS 3 - .LP -.LP -\f3@see の例\fP +\f3@see \fP .br -右側のコメントは、\f2@see\fP タグが別のパッケージ (\f2java.applet.Applet\fP など) のクラス内にある場合に、名前がどのように表示されるかを示しています。 -.LP +¦ΥȤϡ \f2@see\fP \f2java.applet.Applet\fP Τ褦̤ΥѥåΥ饹ˤˡ̾ɤΤ褦ɽ뤫򼨤Ƥޤ .nf \f3 .fl - 関連項目: + Ϣ: .fl @see java.lang.String // String \fP\f3 .fl @@ -2848,122 +2154,69 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま @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 - .fl \fP .fi - -.LP -.LP -\f2@see\fP を、ドキュメント化の対象にしていないクラスにまで拡張するには、\f2\-link\fP オプションを使用します。 -.LP +\f2@see\fP ĥƥɥȲʤ饹ؤΥ󥯤ǽˤˤϡ\f2\-link\fP ץѤޤ .LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@see タグのドキュメント\fP @ +\f2@see Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@seeを参照してください。 -.LP +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@see򻲾ȤƤ +.RE .RE -.LP - .LP .RS 3 .TP 3 @serial\ field\-description | include | exclude -デフォルトの直列化可能フィールドのドキュメンテーションコメントで使用します。 -.RE - -.LP -.RS 3 - -.LP -.LP -\f2field\-description\fP (省略可能) では、フィールドの意味を説明し、取り得る値のリストを示す必要があります。必要に応じて、複数の行に渡って説明を記述できます。標準ドックレットは、この情報を、直列化された形式のページに追加します。 -.LP +ǥեȤľ󲽲ǽեɤΥɥơ󥳥ȤǻѤޤ .LP -クラスを直列化したあとしばらくしてから直列化可能フィールドをクラスに追加した場合、主説明に、追加したバージョンを識別する文を追加する必要があります。 +\f2field\-description\fP (άǽ) Ǥϡեɤΰ̣ͤΥꥹȤ򼨤ɬפޤɬפ˱ơʣιԤϤä򵭽ҤǤޤɸɥååȤϡξľ󲽤줿Υڡɲäޤ .LP +饹ľ󲽤ȤФ餯Ƥľ󲽲ǽեɤ򥯥饹ɲä硢ˡɲäС̤ʸɲäɬפޤ .LP -\f2include\fP および \f2exclude\fP 引数は、直列化された形式のページにクラスまたはパッケージを含めるか除外するかを示します。これらの引数には、次のような効果があります。 -.LP +\f2include\fP \f2exclude\fP ϡľ󲽤줿Υڡ˥饹ޤϥѥåޤ뤫뤫򼨤ޤΰˤϡΤ褦ʸ̤ޤ .RS 3 .TP 2 o -\f2Serializable\fP を実装している public または protected クラスは、通常はそのページに含められます。 ただし、そのクラスまたはそのクラスが属するパッケージが \f2@serial exclude\fP で指定されていると、そのページから除外されます。 +\f2Serializable\fP Ƥ public ޤ protected 饹ϡΥ饹 (ޤϤΥѥå) \f2@serial exclude\fP ȤƥޡƤʤꡢޤޤ .TP 2 o -\f2Serializable\fP を実装している private または package private クラスは、通常はそのページから除外されます。 ただし、そのクラスまたはそのクラスが属するパッケージが \f2@serial include\fP で指定されていると、そのページに含められます。 +\f2Serializable\fP Ƥ private ޤ package\-private 饹ϡΥ饹 (ޤϤΥѥå) \f2@serial include\fP Ȥ ޡƤʤꡢޤ .RE - -.LP -.LP -例: \f2javax.swing\fP パッケージは、\f2@serial exclude\fP で指定されています (\f2package.html\fP または \f2package\-info.java\fP 内)。public クラス \f2java.security.BasicPermission\fP は、\f2@serial exclude\fP で指定されています。package private クラス \f2java.util.PropertyPermissionCollection\fP は、\f2@serial include\fP で指定されています。 .LP +: \f2javax.swing\fP ѥå \f2@serial exclude\fP ( \f2package.html\fP ޤ \f2package\-info.java\fP) ȤƥޡƤޤpublic 饹 \f2java.security.BasicPermission\fP \f2@serial exclude\fP ȤƥޡƤޤpackage\-private 饹 \f2java.util.PropertyPermissionCollection\fP \f2@serial include\fP ȤƥޡƤޤ .LP -クラスレベルで指定された @serial タグは、パッケージレベルで指定された @serial タグをオーバーライドします。 +饹٥ǻꤵ줿 @serial ϡѥå٥ǻꤵ줿 @serial 򥪡С饤ɤޤ .LP -.LP -これらのタグの使用法についての詳細と使用例は、「Java オブジェクト直列化仕様」の第 1.6 節 +ΥλˡˤĤƤξܺ٤ȻϡJava ֥ľ󲽻͡פ 1.6 .na -\f2「クラスの直列化可能なフィールドおよびデータの文書化」\fP @ +\f2֥饹ľ󲽲ǽʥեɤӥǡʸ񲽡\fP @ .fi -http://java.sun.com/javase/6/docs/platform/serialization/spec/serial\-arch.htmlを参照してください。また、 +http://java.sun.com/javase/6/docs/platform/serialization/spec/serial\-arch.html򻲾ȤƤޤ .na -\f2「直列化の FAQ」\fP @ +\f2ľ󲽤 FAQ\fP @ .fi -http://java.sun.com/products/jdk/serialization/faq/#javadoc_warn_missingも参照してください。 この FAQ には、「\-private スイッチを指定しないで javadoc を実行しているのに private フィールドの @serial タグが見つからないという javadoc の警告が表示される」などの一般的な質問への回答が記載されています。直列化形式仕様にクラスを含める場合には、 +http://java.sun.com/products/jdk/serialization/faq/#javadoc_warn_missing⻲ȤƤ FAQ ˤϡ\-private åꤷʤ javadoc ¹ԤƤΤ private եɤ @serial ĤʤȤ javadoc ηٹɽפʤɤΰŪʼؤβܤƤޤľ󲽷ͤ˥饹ޤˤϡ .na -\f2「Sun の仕様」\fP @ +\f2Sun λ͡\fP @ .fi -http://java.sun.com/j2se/javadoc/writingapispecs/serialized\-criteria.htmlも参照してください。 -.LP -.LP - +http://java.sun.com/j2se/javadoc/writingapispecs/serialized\-criteria.html⻲ȤƤ .LP -.RE -.RS 3 .TP 3 @serialField\ field\-name\ field\-type\ field\-description -\f2Serializable\fP クラスの \f2serialPersistentFields\fP メンバーの \f2ObjectStreamField\fP コンポーネントをドキュメント化します。各 \f2ObjectStreamField\fP コンポーネントに対して \f2@serialField\fP タグを 1 つ使う必要があります。 -.RE - -.LP -.RS 3 - -.LP +Serializable \f2饹\fP serialPersistentFields \f2С\fP ObjectStreamField ݡͥ \f2ɥȲ\fP ޤ1 Ĥ \f2@serialField\fP \f2ObjectStreamField\fP ݡͥȤǻѤ٤Ǥ .LP - -.LP -.RE -.RS 3 .TP 3 @serialData\ data\-description -\f2data\-description\fP は、直列化された形式でのデータの型と順序を説明するテキストです。このデータには、特に、\f2writeObject\fP メソッドによって書き込まれる省略可能なデータ、および \f2Externalizable.writeExternal\fP メソッドによって書き込まれるすべてのデータ (基底クラスを含む) が含まれます。 -.RE - -.LP -.RS 3 - -.LP -.LP -\f2@serialData\fP タグは、\f2writeObject\fP、\f2readObject\fP、\f2writeExternal\fP、\f2readExternal\fP、\f2writeReplace\fP、および \f2readResolve\fP メソッドのドキュメンテーションコメントで使用できます。 -.LP +\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 -.RE -.RS 3 .TP 3 @since\ since\-text -生成ドキュメントに [導入されたバージョン] 見出しを追加し、指定された \f2since\-text\fP を書き込みます。このテキストには、特別な内部構造はありません。このタグは、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。このタグは、特定の変更または機能が、\f2since\-text\fP に示されたソフトウェアリリース以降、存在していることを意味します。例を示します。 -.RE - -.LP -.RS 3 - -.LP +ɥȤ [Ƴ줿С] Фɲäꤵ줿 \f2since\-text\fP 񤭹ߤޤΥƥȤˤϡ̤¤Ϥޤ󡣤Υϡ٤ƤΥɥơ󥳥ȡĤޤ공סѥå饹󥿥ե󥹥ȥ饯᥽åɡӥեɤͭǤΥϡѹޤϵǽ \f2since\-text ˼줿եȥ꡼ʹߡ¸ߤƤ뤳Ȥ̣ޤ\fPȤС .nf \f3 .fl @@ -2973,52 +2226,26 @@ http://java.sun.com/j2se/javadoc/writingapispecs/serialized\-criteria.htmlも参 .fl \fP .fi - -.LP -.LP -Java プラットフォームのソースコードの場合、このタグは、Java プラットフォーム API 仕様のバージョンを示します。 その変更や機能がリファレンス実装に追加された時期を示すとは限りません。複数の @since タグを使用でき、複数の @author タグのように扱われます。プログラム要素が複数の API で使用される場合、複数のタグを使用できます。 .LP +Java ץåȥեΥɤξ硢ΥϡJava ץåȥե API ͤΥС򼨤ޤѹ䵡ǽե󥹼ɲä줿򼨤Ȥϸ¤ޤʣ @since ѤǤʣ @author Τ褦˰ޤץǤʣ API ǻѤ硢ʣΥѤǤޤ .LP - -.LP -.RE -.RS 3 .TP 3 -@throws\ class\-name\ description\ -\f2@throws\fP タグと \f2@exception\fP タグは同義です。生成ドキュメントに [例外] 小見出しを追加して、\f2class\-name\fP と \f2description\fP テキストを書き込みます。\f2class\-name\fP は、そのメソッドからスローされる可能性のある例外の名前です。このタグは、メソッド、コンストラクタの doc コメント内でのみ有効です。このクラスが完全指定の名前で記述されていない場合、Javadoc ツールは、検索順序に従ってクラスを探します。同じまたは異なる例外の doc コメントで、複数の \f2@throws\fP タグを使用できます。 -.RE - -.LP -.RS 3 - -.LP -.LP -すべてのチェック済み例外がドキュメント化されるようにするために、\f2@throws\fP タグが throws 節内の例外用に存在しない場合は、@throws タグのあるドキュメントであるかのように、Javadoc ツールによって例外が HTML 出力に説明なしで自動的に追加されます。 -.LP +@throws\ class\-name\ description +\f2@throws\fP \f2@exception\fP ƱǤɥȤˡ㳰׾Фɲäơ \f2class\-name\fP \f2description\fP ΥƥȤ񤭹ߤޤ \f2class\-name\fP ϡΥ᥽åɤ饹ǽΤ㳰̾ǤΥϡ᥽åɡ󥹥ȥ饯 doc ǤΤͭǤΥ饹̾ǵҤƤʤ硢Javadoc ġϡ˽äƥ饹õޤƱޤϰۤʤ㳰 doc Ȥǡʣ \f2@throws\fP ѤǤޤ .LP -オーバーライドされるメソッド内で例外が明示的に宣言されている場合のみ、\f2@throws\fP ドキュメンテーションをそのメソッドからサブクラスにコピーされます。インタフェースメソッドから実装メソッドにコピーされる場合も同様です。@throws にドキュメンテーションを継承させるには、{@inheritDoc} を使用できます。 +٤ƤΥåѤ㳰ɥȲ褦ˤ뤿ˡ \f2@throws\fP throws 㳰Ѥ¸ߤʤϡ@throws ΤɥȤǤ뤫Τ褦ˡJavadoc ġˤä㳰 HTML ϤʤǼưŪɲäޤ .LP +С饤ɤ᥽å㳰ŪƤΤߡ \f2@throws\fP ɥơ󤬤Υ᥽åɤ饵֥饹˥ԡޤ󥿥ե᥽åɤ᥽åɤ˥ԡƱͤǤ@throws ˥ɥơѾˤϡ{@inheritDoc} ѤǤޤ .LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@throws タグのドキュメント\fP @ +\f2@throws Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@exceptionを参照してください。 +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@exception򻲾ȤƤ .LP -.LP - -.LP -.RE -.RS 3 .TP 3 {@value\ package.class#field} -\f2{@value}\fP が静的フィールドの doc コメントで 引数なしで使用されている場合、その定数の値が表示されます。 -.RE - -.LP -.RS 3 - -.LP +\f2{@value}\fP Ūեɤ doc Ȥ ʤǻѤƤ硢ͤɽޤ .nf \f3 .fl @@ -3034,11 +2261,8 @@ http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@exceptionを参 .fl \fP .fi - -.LP -.LP -任意の doc コメント内で引数 \f2package.class#field\fP ありで使用されている場合は、指定した定数の値が表示されます。 .LP +ǤդΥɥơ󥳥ǰ \f2package.class#field\fP ǻѤ줿ϡλꤵ줿ͤɽޤ .nf \f3 .fl @@ -3056,448 +2280,130 @@ http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@exceptionを参 .fl \fP .fi - -.LP .LP -引数 \f2package.class#field\fP は、@see 引数と同一の形式になります。ただし、メンバーが静的フィールドになければならない点が異なります。 + \f2package.class#field\fP ϡ@see ƱηˤʤޤСŪեɤˤʤФʤʤۤʤޤ .LP -.LP -これらの定数での値は、 +Ǥͤϡ .na -\f2定数フィールド値\fP @ +\f2ե\fP @ .fi -http://java.sun.com/javase/6/docs/api/constant\-values.htmlページにも表示されます。 +http://java.sun.com/javase/6/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 -.RE -.RS 3 -.TP 3 -@version\ version\-text -\-version オプションが使われている場合、生成ドキュメントに [バージョン] 小見出しを追加して、指定された \f2version\-text\fP を書き込みます。このタグは、このコードが含まれるソフトウェアの現在のバージョン番号を保持するように意図されています。 これに対し、@since は、このコードが導入されたバージョン番号を保持します。\f2version\-text\fP には、特別な内部構造はありません。バージョンタグを使用できる場所を調べるには、「タグを使用できる場所」を参照してください。 -.RE - -.LP -.RS 3 - -.LP -.LP -1 つのドキュメンテーションコメントに複数の \f2@version\fP タグを含めることができます。必要に応じて、\f2@version\fP タグごとに 1 つのバージョン番号を指定することも、タグごとに複数のバージョン番号を指定することもできます。前者の場合は、Javadoc ツールによって、名前と名前の間にコンマ (\f2,\fP) とスペースが挿入されます。後者の場合は、テキスト全体が、解析されることなく、生成ドキュメントにそのままコピーされます。したがって、コンマではなく、各言語に対応した名前区切り文字を使う必要があるときは、1 つのタグに複数の名前を指定してください。 -.LP -.LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@version タグのドキュメント\fP @ +\f2@version Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@versionを参照してください。 -.LP +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@version򻲾ȤƤ .RE -.LP .SS -タグを使用できる場所 -.LP -ここでは、タグを使用できる場所について説明します。\f2@see\fP、\f2@since\fP、\f2@deprecated\fP、\f2{@link}\fP、\f2{@linkplain}\fP および \f2{@docroot}\fP のタグは、すべての doc コメントで使用できます。 -.RS 3 - +ѤǤ .LP +ǤϡѤǤˤĤޤ٤ƤΥɥơ󥳥ȤǻѲǽʥϼΤȤǤ \f2@see\fP \f2@since\fP \f2@deprecated\fP \f2{@link}\fP \f2{@linkplain}\fP \f2{@docroot}\fP .SS -概要のドキュメンテーションタグ -.LP -.LP -概要タグは、概要ページのドキュメンテーションコメントで使用できるタグです。 このドキュメンテーションコメントは、通常 \f2overview.html\fP という名前ソースファイル内にあります。ほかのドキュメンテーションコメントの場合と同様に、これらのタグは、主説明のあとで使う必要があります。 +פΥɥơ󥿥 .LP +ץϡץڡΥɥơ󥳥ȤǻѤǤ륿ǤΥɥơ󥳥Ȥϡ̾ \f2overview.html\fP Ȥ̾Υեˤޤ ۤΥɥơ󥳥ȤξƱͤˡΥϡΤȤǻȤɬפޤ .LP -\f3注\fP \- バージョン 1.2 では、概要ドキュメント内の \f2{@link}\fP タグにバグがあります。テキストは正しく表示されますが、リンクが設定されません。現在のところ、\f2{@docRoot}\fP タグは、概要ドキュメント内では動作しません。 +\f3\fP \- С 1.2 Ǥϡץɥ \f2{@link}\fP ˥ХޤƥȤɽޤ󥯤ꤵޤ󡣸ߤΤȤ \f2{@docRoot}\fP ϡץɥǤưޤ .LP +\f3ץ\fP .RS 3 - -.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 -\f2@see\fP -.br -\f2@since\fP -.br -\f2@author\fP -.br -\f2@version\fP -.br -\f2{@link}\fP -.br -\f2{@linkplain}\fP -.br -\f2{@docRoot}\fP -.br -.di -.nr a| \n(dn -.nr a- \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(a- -.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 2279 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 -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3概要タグ\fP -.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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-20 - -.LP +.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 -パッケージタグは、パッケージのドキュメンテーションコメントで使用できるタグです。 このドキュメンテーションコメントは、\f2package.html\fP または \f2package\-info.java\fP という名前のソースファイル内にあります。ここで使用できる \f2@serial\fP タグは、\f2include\fP または \f2exclude\fP 引数を指定したものだけです。 -.LP +\f3ѥå\fP .RS 3 - -.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 -\f2@see\fP -.br -\f2@since\fP -.br -\f2@serial\fP -.br -\f2@author\fP -.br -\f2@version\fP -.br -\f2{@link}\fP -.br -\f2{@linkplain}\fP -.br -\f2{@docRoot}\fP -.br -.di -.nr a| \n(dn -.nr a- \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(a- -.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 2315 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 -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3パッケージタグ\fP -.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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-22 - -.LP +.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 -次に、クラスまたはインタフェースのドキュメンテーションコメントで使用できるタグを示します。ここで使用できる \f2@serial\fP タグは、\f2include\fP または \f2exclude\fP 引数を指定したものだけです。 -.LP +\f3饹ӥ󥿥ե\fP .RS 3 - -.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 -\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 -\f2@see\fP -.br -\f2@since\fP -.br -\f2@deprecated\fP -.br -\f2@serial\fP -.br -\f2@author\fP -.br -\f2@version\fP -.br -\f2{@link}\fP -.br -\f2{@linkplain}\fP -.br -\f2{@docRoot}\fP -.br -.di -.nr b| \n(dn -.nr b- \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 -.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 2355 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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-26 - -.LP +.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 -.LP +\f3˥饹Ȥ򼨤ޤ\fP .nf \f3 .fl @@ -3532,317 +2438,104 @@ class Window extends BaseWindow { ... .fl } -.fl - .fl \fP .fi - -.LP .SS -フィールドドキュメンテーションタグ -.LP +եɥɥơ󥿥 .LP -次に、フィールドのドキュメンテーションコメントで使用できるタグを示します。 +ˡեɤΥɥơ󥳥ȤǻѤǤ륿򼨤ޤ .LP +\f3եɥ\fP .RS 3 - -.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 -\f2@see\fP -.br -\f2@since\fP -.br -\f2@deprecated\fP -.br -\f2@serial\fP -.br -\f2@serialField\fP -.br -\f2{@link}\fP -.br -\f2{@linkplain}\fP -.br -\f2{@docRoot}\fP -.br -\f2{@value}\fP -.br -.di -.nr a| \n(dn -.nr a- \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(a- -.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 2436 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 -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3フィールドタグ\fP -.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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-24 - -.LP -.RE -\f3次にフィールドコメントの例を示します。\fP -.LP -.nf -\f3 -.fl - /** -.fl - * The X\-coordinate of the component. -.fl - * -.fl - * @see #getLocation() -.fl - */ -.fl - int x = 1263732; -.fl - -.fl -\fP -.fi - -.LP -.SS -コンストラクタおよびメソッドドキュメンテーションタグ -.LP -.LP -次に、コンストラクタまたはメソッドのドキュメンテーションコメント内で表示できるタグを示します。 ただし、\f2@return\fP はコンストラクタでは表示できず、\f2{@inheritDoc}\fP は表示に制限があります。\f2@serialData\fP タグは特定の直列化メソッドの doc コメントでのみ使用できます。 -.LP -.RS 3 - -.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 -\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 -\f2@see\fP -.br -\f2@since\fP -.br -\f2@deprecated\fP -.br -\f2@param\fP -.br -\f2@return\fP -.br -\f2@throws\fP と \f2@exception\fP -.br -\f2@serialData\fP -.br -\f2{@link}\fP -.br -\f2{@linkplain}\fP -.br -\f2{@inheritDoc}\fP -.br -\f2{@docRoot}\fP -.br -.di -.nr b| \n(dn -.nr b- \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 -.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 2503 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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-30 - -.LP +.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 +\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 ľ󲽥᥽åɤ doc ȤǤΤ߻ѤǤޤ +.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 @@ -3874,22 +2567,13 @@ class Window extends BaseWindow { .fl } .fl - -.fl \fP .fi -.RE -.SH "オプション" -.LP +.SH "ץ" .LP -javadoc ツールは、ドックレットを使って出力を決定します。Javadoc ツールは、\-doclet オプションでカスタムドックレットが指定されている場合以外は、デフォルトの標準ドックレットを使います。Javadoc ツールには、任意のドックレットとともに使用できるコマンド行オプションがあります。 これらのオプションについては、このあとの「Javadoc オプション」で説明します。標準ドックレットでは、このほかに、いくつかの追加のコマンド行オプションが提供されます。 これらのオプションについては、そのあとの「標準ドックレットが提供するオプション」で説明します。どのオプション名も、大文字と小文字が区別されません。 ただし、オプションの引数では、大文字と小文字が区別されます。 -.LP -.LP -オプションを次に示します。 -.LP -.RS 3 - +javadoc ġϡɥååȤȤäƽϤꤷޤJavadoc ġϡ\-doclet ץǥɥååȤꤵƤʳϡǥեȤɸɥååȤȤޤJavadoc ġˤϡǤդΥɥååȤȤȤ˻ѤǤ륳ޥɹԥץ󤬤ޤΥץˤĤƤϡΤȤΡJavadoc ץפޤɸɥååȤǤϡΤۤˡĤɲäΥޥɹԥץ󶡤ޤΥץˤĤƤϡΤȤΡɸɥååȤ󶡤륪ץפޤɤΥץ̾⡢ʸȾʸ̤ޤ󡣤ץΰǤϡʸȾʸ̤ޤ .LP +ץϼΤȤǤ .LP .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 @@ -4043,6 +2727,8 @@ javadoc ツールは、ドックレットを使って出力を決定します。 .br \-\f2sourcepath\fP .br +\-sourcetab +.br \-splitindex .br \-stylesheetfile @@ -4053,267 +2739,20 @@ javadoc ツールは、ドックレットを使って出力を決定します。 .br \-taglet .br -\-tagletpath -.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 2680 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.-123 - -.LP -.RE -.LP -\f2イタリック\fPで示されたオプションは、Javadoc の基本オプションであり、Javadoc ツールのフロントエンドによって提供され、すべてのドックレットで使用できます。標準ドックレット自体は、イタリックでないオプションを提供します。 -.LP -.SS -Javadoc オプション -.LP -.RS 3 -.TP 3 -\-overview \ path/filename -Javadoc に対して、\f2path/filename\fP で指定された「ソース」ファイルから概要ドキュメント用のテキストを取得し、そのテキストを概要ページ (\f2overview\-summary.html\fP) に配置するように指定します。\f2path/filename\fP は、\f2\-sourcepath\fP への相対パスです。 -.LP -\f2filename\fP と \f2path\fP には、それぞれ任意の名前と場所を指定できますが、通常は、\f2overview.html\fP という名前を付けて、ソースツリー内の最上位のパッケージディレクトリがあるディレクトリに配置します。この場所に配置すると、\f2\-sourcepath\fP によってこのファイルが指し示されるので、パッケージをドキュメント化する際に \f2path\fP が不要になります。たとえば、\f2java.lang\fP パッケージのソースツリーが \f2/src/classes/java/lang/\fP の場合、概要ファイルを \f2/src/classes/overview.html\fP に配置できます。「使用例」を参照してください。 -.LP -\f2path/filename\fP で指定するファイルについては、「概要コメントファイル」を参照してください。 -.LP -概要ページが作成されるのは、Javadoc に複数のパッケージ名を渡した場合だけです。詳細は、「HTML フレーム」を参照してください。 -.LP -概要ページのタイトルは、\f2\-doctitle\fP によって設定されます。 -.LP -.TP 3 -\-public -public クラスおよびメンバーだけを表示します。 -.LP -.TP 3 -\-protected -protected および public のクラスとメンバーだけを表示します。これはデフォルトの設定です。 -.LP -.TP 3 -\-package -package、protected、および public のクラスとメンバーだけを表示します。 -.LP -.TP 3 -\-private -すべてのクラスとメンバーを表示します。 -.LP -.TP 3 -\-help -オンラインヘルプを表示します。 Javadoc とドックレットのコマンド行オプションが一覧表示されます。 -.LP -.TP 3 -\-doclet\ class -ドキュメントの生成に使うドックレットを起動するためのクラスファイルを指定します。完全指定の名前を指定してください。このドックレットにより、出力の内容と形式が定義されます。\f4\-doclet\fP オプションが使われていない場合、Javadoc は、標準ドックレットを使ってデフォルトの HTML 形式を生成します。このクラスには、\f2start(Root)\fP メソッドが含まれていなければなりません。この起動クラスへのパスは、\f2\-docletpath\fP オプションによって定義されます。 -.LP -たとえば、MIF ドックレットを呼び出すには、次のように指定します。 -.nf -\f3 -.fl - \-doclet com.sun.tools.doclets.mif.MIFDoclet -.fl -\fP -.fi -.LP -特定のドックレットを実行した完全な例については、 -.na -\f2MIF Doclet のドキュメント\fP @ -.fi -http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.htmlを参照してください。 -.LP -.TP 3 -\-docletpath\ classpathlist -\f2\-doclet\fP オプションで指定されているドックレット開始クラスファイル、およびそれが依存するすべての jar ファイルへのパスを指定します。開始クラスファイルが jar ファイル内にある場合、以下の例のように jar ファイルのパスが指定されます。絶対パスまたは現在のディレクトリからの相対パスを指定できます。\f2classpathlist\fP には、複数のパスまたは JAR ファイルを含めることができます。 その場合、各パスまたは JAR ファイルを、Solaris の場合にはコロン (:)、Windows の場合にはセミコロン (;) で区切ります。目的のドックレット開始クラスがすでに検索パス内にある場合は、このオプションは不要です。 -.LP -jar ファイルへのパスの例には、ドックレット開始クラスファイルが含まれています。jar ファイル名が含まれている点に注目してください。 -.nf -\f3 -.fl - \-docletpath /home/user/mifdoclet/lib/mifdoclet.jar -.fl -\fP -.fi -ドックレット開始クラスファイルのパスの例。クラスファイル名が省略されている点に注目してください。 -.nf -\f3 -.fl - \-docletpath /home/user/mifdoclet/classes/com/sun/tools/doclets/mif/ -.fl -\fP -.fi -特定のドックレットを実行した完全な例については、 -.na -\f2MIF Doclet のドキュメント\fP @ -.fi -http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.htmlを参照してください。 -.LP -.TP 3 -\-1.1 -\f2この機能は、Javadoc 1.4 では削除されました。代替機能はありません。このオプションは、Javadoc 1.1 によって生成されるのと同じ外見と機能を持つドキュメントを作成するためのものでした。 入れ子のクラスはサポートされていません。このオプションが必要な場合は、Javadoc 1.2 または 1.3 を使用してください。\fP -.LP -.TP 3 -\-source release -受け付けるソースコードのバージョンを指定します。\f2release\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 +\-tagletpath .br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Javadoc は、JDK 1.5 で導入された総称および他の言語機能を含んだコードを受け付けます。\f3\-source\fP フラグを指定しないと、コンパイラはデフォルトとして 1.5 の動作をします。 +\-top .br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 +\-title .br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Javadoc は、JDK 1.4 で導入された、アサーションを含むコードを受け付けます。 +\-use .br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 +\-\f2verbose\fP +.br +\-version +.br +\-windowtitle .br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、または他の言語機能をサポートしません。 .br .di .nr c| \n(dn @@ -4324,35 +2763,20 @@ Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、ま .nf .ll \n(34u .nr 80 0 -.nr 31 0 -.nr 32 0 -.nr 38 \w\f31 -.if \n(31<\n(38 .nr 31 \n(38 -.nr 38 \w.5\fP -.if \n(32<\n(38 .nr 32 \n(38 -.nr 38 \w\f31 -.if \n(31<\n(38 .nr 31 \n(38 -.nr 38 \w.4\fP -.if \n(32<\n(38 .nr 32 \n(38 -.nr 38 \w\f31 -.if \n(31<\n(38 .nr 31 \n(38 -.nr 38 \w.3\fP -.if \n(32<\n(38 .nr 32 \n(38 .80 .rm 80 -.nr 60 \n(31 -.nr 38 \n(60+\n(32 -.if \n(38>\n(80 .nr 80 \n(38 -.if \n(38<\n(80 .nr 60 +(\n(80-\n(38)/2 +.nr 38 \n(a- +.if \n(80<\n(38 .nr 80 \n(38 .nr 81 0 .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 82 0 +.82 +.rm 82 .nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 +.if \n(82<\n(38 .nr 82 \n(38 .35 .nf .ll \n(34u @@ -4360,11 +2784,12 @@ Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、ま .nr 79 0 .nr 40 \n(79+(0*\n(38) .nr 80 +\n(40 -.nr 60 +\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 2790 file Input is too wide - \n(TW units +.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 2009 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -4379,29 +2804,24 @@ Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、ま .. .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) -.ta \n(60u \n(80u \n(81u +.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'\f31.5\fP\h'|\n(41u' +\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u' .mk ## .nr 31 \n(## .sp |\n(##u-1v -.nr 37 \n(41u +.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(60u \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f31.4\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## .sp |\n(##u-1v .nr 37 \n(41u .in +\n(37u @@ -4409,17 +2829,8 @@ Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、ま .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(60u \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f31.3\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## .sp |\n(##u-1v -.nr 37 \n(41u +.nr 37 \n(42u .in +\n(37u .c+ .in -\n(37u @@ -4434,17 +2845,117 @@ Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、ま .rm b+ .rm c+ .TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-14 +.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 ϡȥǥ쥯ȥ꤫ХѥǤ +.LP +\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 ֤Ǥޤֻפ򻲾ȤƤ +.LP +\f2path/filename\fP ǻꤹեˤĤƤϡֳץȥեפ򻲾ȤƤ +.LP +ץڡΤϡJavadoc ʣΥѥå̾ϤǤܺ٤ϡHTML ե졼פ򻲾ȤƤ +.LP +ץڡΥȥϡ\f2\-doctitle\fP ˤäꤵޤ +.LP +.TP 3 +\-public +public 饹ӥСɽޤ +.LP +.TP 3 +\-protected +protected public Υ饹ȥСɽޤ줬ǥեȤǤ +.LP +.TP 3 +\-package +packageprotected public Υ饹ȥСɽޤ +.LP +.TP 3 +\-private +٤ƤΥ饹ȥСɽޤ +.LP +.TP 3 +\-help +饤إפɽޤJavadoc ȥɥååȤΥޥɹԥץ󤬰ɽޤ +.LP +.TP 3 +\-doclet\ class +ɥȤ˻ȤɥååȤư뤿Υ饹եꤷޤ̾ꤷƤΥɥååȤˤꡢϤƤȷޤ\f4\-doclet\fP ץ󤬻ȤƤʤ硢Javadoc ϡɸɥååȤȤäƥǥեȤ HTML ޤΥ饹ˤ \f2start(Root)\fP ޤޤƤɬפޤεư饹ؤΥѥ \f2\-docletpath\fP ץˤäޤ +.LP +ȤСMIF ɥååȤƤӽФˤϡΤ褦˻ꤷޤ +.nf +\f3 +.fl + \-doclet com.sun.tools.doclets.mif.MIFDoclet +.fl +\fP +.fi +.LP +ΥɥååȤ¹ԤˤĤƤϡ +.na +\f2MIF Doclet Υɥ\fP @ +.fi +http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.html򻲾ȤƤ +.LP +.TP 3 +\-docletpath\ classpathlist +\f2\-doclet\fP ץǻꤵ줿ɥååȳϥ饹ե롢 ӤΥ饹¸뤹٤Ƥ JAR եؤΥѥꤷޤϥ饹ե뤬 jar եˤ硢ʲΤ褦 jar եΥѥꤵޤХѥޤϸߤΥǥ쥯ȥ꤫ХѥǤޤ \f2classpathlist\fP ˤϡʣΥѥޤ JAR եޤ뤳ȤǤޤ ξ硢ƥѥޤ JAR եSolaris ξˤϥ (:)Windows ξˤϥߥ (;) ǶڤޤŪΥɥååȳϥ饹Ǥ˸ѥˤϡΥץפǤ +.LP +jar եؤΥѥˤϡɥååȳϥ饹ե뤬ޤޤƤޤjar ե̾ޤޤƤܤƤ +.nf +\f3 +.fl + \-docletpath /home/user/mifdoclet/lib/mifdoclet.jar +.fl +\fP +.fi +ɥååȳϥ饹եΥѥ㡣饹ե̾άƤܤƤ +.nf +\f3 +.fl + \-docletpath /home/user/mifdoclet/classes/com/sun/tools/doclets/mif/ +.fl +\fP +.fi +ΥɥååȤ¹ԤˤĤƤϡ +.na +\f2MIF Doclet Υɥ\fP @ +.fi +http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.html򻲾ȤƤ +.LP +.TP 3 +\-1.1 +\f2εǽ Javadoc 1.4 ޤصǽϤޤ󡣤ΥץϡJavadoc 1.1 ˤäΤƱȵǽĥɥȤ뤿ΤΤǤҤΥ饹ϥݡȤƤޤ󡣤ΥץɬפʾϡJavadoc 1.2 ޤ 1.3 ѤƤ\fP +.LP +.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 .LP -javac でコードをコンパイルするときに使用した値に対応する \f2release\fP の値を使用します。 +javac ǥɤ򥳥ѥ뤹Ȥ˻Ѥͤб \f2release\fP ͤѤޤ .LP .TP 3 \-sourcepath\ sourcepathlist -\f2javadoc\fP コマンドにパッケージ名または \f2\-subpackages\fP を渡すときに、ソースファイル (\f2.java\fP) を検索するためのパスを指定します。\f2sourcepathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパス以下のすべてのサブディレクトリを検索します。このオプションを使って、ドキュメント化されるソースファイルの位置だけでなく、それ自体はドキュメント化されないがドキュメント化されるソースファイルから継承されたコメントを持つソースファイルの位置も確認できます。 +ѥå̾ޤ \-subpackages javadoc ޥɤϤȤϡե (.\f2.java\fP) 򸫤Ĥ뤿 \f2ѥ\fP \f2ޤ\fP \f2sourcepathlist\fP ˤϡ (\f2:\fP) ǶڤäʣΥѥޤ뤳ȤǤޤJavadoc ġϡꤵ줿ѥʲΤ٤ƤΥ֥ǥ쥯ȥ򸡺ޤΥץȤäơɥȲ륽եΰ֤Ǥʤ켫ΤϥɥȲʤɥȲ륽ե뤫Ѿ줿Ȥĥեΰ֤ǧǤޤ .LP -\f2\-sourcepath\fP オプションは、javadoc コマンドにパッケージ名を渡すときにだけ使用できます。 \f2javadoc\fP コマンドに渡される \f2.java\fP ファイルは、このパスからは検索されません。\f2.java\fP ファイルを検索するには、そのファイルのあるディレクトリに cd によって移動するか、または各ファイルの先頭にパスを含めます (「1 つ以上のクラスのドキュメント化」を参照)。\f2\-sourcepath\fP が省略された場合、Javadoc は、クラスパスを使ってソースファイルを検索します (\-classpath を参照)。したがって、デフォルトの \-sourcepath は、クラスパスの値です。\-classpath も省略してパッケージ名を Javadoc に渡すと、Javadoc は現在のディレクトリおよびそのサブディレクトリからソースファイルを検索します。 +\f2\-sourcepath\fP ץѤǤΤϡjavadoc ޥɤ˥ѥå̾ϤǤΥѥϡjavadoc ޥɤϤ줿 \f2.java\fP ե \f2\fP ޤ \f2.java\fP ե򸡺ˤϡΥեΤǥ쥯ȥ cd ˤäưư뤫ޤϳƥեƬ˥ѥޤޤ (1 İʾΥ饹ΥɥȲפ򻲾) \f2\-sourcepath\fP ά줿硢Javadoc ϡ饹ѥȤäƥե򸡺ޤ (\-classpath 򻲾)äơǥեȤ \-sourcepath ϡ饹ѥͤǤ\-classpath άƥѥå̾ Javadoc ϤȡJavadoc ϸߤΥǥ쥯ȥꤪӤΥ֥ǥ쥯ȥ꤫饽ե򸡺ޤ .LP -\f2sourcepathlist\fP には、ドキュメント化するパッケージ名のソースツリーのルートディレクトリを設定します。たとえば、\f2com.mypackage\fP というパッケージをドキュメント化する場合に、そのソースファイルが次の場所にあるとします。 +\f2sourcepathlist\fP ˤϡɥȲѥå̾Υĥ꡼Υ롼ȥǥ쥯ȥꤷޤȤС \f2com.mypackage\fP Ȥ̾ΥѥåɥȲˡΥե뤬ξˤȤޤ .nf \f3 .fl @@ -4452,16 +2963,16 @@ javac でコードをコンパイルするときに使用した値に対応す .fl \fP .fi -この場合、次のようにして \f2sourcepath\fP を \f2/home/user/src\fP、つまり \f2com/mypackage\fP を含むディレクトリに指定し、それからパッケージ名 \f2com.mypackage\fP を指定します。 +ΤȤΤ褦ˡ \f2sourcepath\fP com/mypackage ޤǥ쥯ȥǤ \f2/home/user/src\fP ˻ꤷȡ ѥå̾ \f2com.mypackage\fP ꤷޤ .nf \f3 .fl % \fP\f3javadoc \-sourcepath /home/user/src/ com.mypackage\fP .fl .fi -この方法は、ソースパスの値とパッケージ名を連結して、ドットを (円記号) 「\\」に変えると、パッケージのフルパス (C:\\user\\src\\com\\mypackage) になることを理解すると簡単です。\f2/home/user/src/com/mypackage\fP. +ˡϡѥͤȥѥå̾Ϣ뤷ơɥåȤ (ߵ) \\פѤȡѥåΥեѥ \f2/home/user/src/com/mypackage ˤʤ뤳Ȥ򤹤ȴñǤ\fP .LP -2 つのソースパスを設定するには、次のようにします。 +2 ĤΥѥꤹˤϡΤ褦ˤޤ .nf \f3 .fl @@ -4471,132 +2982,124 @@ javac でコードをコンパイルするときに使用した値に対応す .LP .TP 3 \-classpath\ classpathlist -Javadoc が参照クラス (\f2.class\fP ファイル) を検索するパスを指定します。 参照クラスとは、ドキュメント化されるクラスとそれらのクラスによって参照されるすべてのクラスのことです。\f2classpathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパスの以下すべてのサブディレクトリを検索します。\f2classpathlist\fP を指定するときは、 +javadoc ȥ饹 (\f2.class\fP ե) θԤȤ˻Ѥѥꤷޤȥ饹ȤϡɥȲ륯饹ȡΥ饹黲Ȥ뤹٤ƤΥ饹ؤޤ\f2classpathlist\fP ˤϡ (\f2:\fP) ǶڤäʣΥѥޤ뤳ȤǤޤ Javadoc ġϡꤵ줿ѥʲΤ٤ƤΥ֥ǥ쥯ȥ򸡺ޤclasspathlist ꤹȤϡ .na -\f2クラスパス\fP @ +\f2饹ѥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#generalのドキュメントにある指示に従ってください。 +http://java.sun.com/javase/6/docs/technotes/tools/index.html#generalΥɥȤˤؼ \f2˽äƤ\fP .LP -\f2\-sourcepath\fP が省略されている場合、Javadoc ツールは、\f2\-classpath\fP を使って、クラスファイルだけでなくソースファイルも検索します (下位互換性のため)。したがって、ソースファイルとクラスファイルを別々のパスから検索する必要がある場合は、\f2\-sourcepath\fP と \f2\-classpath\fP の両方を使います。 +\f2\-sourcepath\fP άȡJavadoc ġϥ饹ե򸡺ȤǤʤե򸡺Ȥˤ \f2\-classpath\fP Ѥޤ (̸ߴΤ)äơեȥ饹ե̡Υѥ鸡ɬפϡ \f2\-sourcepath\fP \f2\-classpath ξȤޤ\fP. .LP -たとえば、\f2com.mypackage\fP をドキュメント化する場合に、ソースファイルがディレクトリ \f2/home/user/src/com/mypackage\fP にあり、このパッケージが \f2/home/user/lib\fP 内のライブラリを使うのであれば、次のように指定します。 +ȤС \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 ツールは現在のディレクトリからクラスを検索します。 +\f2\-classpath\fP ꤵʤä硢Javadoc ġϤۤΥġƱCLASSPATH ĶѿꤵƤФͤѤޤɤꤵƤʤ硢Javadoc ġϸߤΥǥ쥯ȥ꤫饯饹򸡺ޤ .LP -Javadoc ツールは拡張機能クラスおよびブートストラップクラスに関連しているため、Javadoc ツールが \f2\-classpath\fP を使用してユーザークラスを検索する方法についての詳細は、 +Javadoc ġ뤬 \f2\-classpath\fP Ѥƥ桼饹򸡺ˡˤĤơĥ饹֡ȥȥåץ饹ȴϢդƤꤹˤϡ .na -\f2「クラスの検索方法」\fP @ +\f2֥饹θˡ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.htmlをご覧ください。 +http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html򻲾ȤƤ .LP -便宜上、\f2*\fP のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 \f2.jar\fP または \f2.JAR\fP を持つすべてのファイルのリストを指定するのと同じとみなされます (Java プログラムはこの 2 つの呼び出しを区別できない)。 +ص塢 \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 仮想マシンの起動前に実行されます。したがって、\f2System.getenv("CLASSPATH")\fP 呼び出しのように環境に問い合わせを行わない限り、Java プログラムが展開されていないワイルドカードを認識することはありません。 +ȤСǥ쥯ȥ \f2foo\fP \f2a.jar\fP \f2b.JAR\fP ޤޤƤ硢饹ѥ \f2foo/*\fP \f2A.jar:b.JAR\fP ŸޤJAR եν֤̤ȤʤޤΥꥹȤˤϡեޤᡢꤵ줿ǥ쥯ȥΤ٤Ƥ JAR ե뤬ޤޤޤ* \f2饹ѥȥϡ\fP ȥǥ쥯ȥΤ٤Ƥ JAR եΥꥹȤŸޤ \f2CLASSPATH\fP Ķѿ⡢ˤƱͤŸޤ饹ѥΥ磻ɥŸɬJava ۥޥεư˼¹Ԥޤäơ\f2System.getenv("CLASSPATH")\fP ƤӽФΤ褦˴Ķ䤤碌Ԥʤ¤ꡢJava ץबŸƤʤ磻ɥɤǧ뤳ȤϤޤ .LP .TP 3 \-subpackages\ \ package1:package2:... -ソースファイルから指定されたパッケージおよびそのサブパッケージ内に再帰的にドキュメントを生成します。このオプションは、ソースコードに新しいサブパッケージを追加する際に便利です。新しいサブパッケージは自動的に組み込まれます。各 \f2package\fP 引数は、任意の最上位サブパッケージ (\f2java\fP など) または完全指定のパッケージ (\f2javax.swing\fP など) になります。ソースファイルを含める必要はありません。引数は、コロンで区切られます (すべてのオペレーティングシステム)。ワイルドカードは不要です (使用不可)。パッケージの検索場所を指定するには、\f2\-sourcepath\fP を使用します。このオプションは、「ソースファイルの処理」で説明したとおり、ソースツリーにあるがパッケージには属していないソースファイルを処理しないので役立ちます。 +ե뤫ꤵ줿ѥåӤΥ֥ѥå˺ƵŪ˥ɥȤޤΥץϡɤ˿֥ѥåɲäݤǤ֥ѥåϼưŪȤ߹ޤޤ \f2package\fP ϡǤդκǾ̥֥ѥå ( \f2java\fP ʤ) ޤϴѥå ( \f2javax.swing\fP ʤ) ˤʤޤեޤɬפϤޤ󡣰ϡǶڤޤ (٤ƤΥڥ졼ƥ󥰥ƥ)磻ɥɤפǤ (Բ)ѥåθꤹˤϡ\f2\-sourcepath\fP ѤޤΥץϡ֥եνפȤꡢĥ꡼ˤ뤬ѥåˤ°ƤʤեʤΤΩޤ .LP -例を示します。 +ȤС .nf \f3 .fl % \fP\f3javadoc \-d docs \-sourcepath /home/user/src \-subpackages java:javax.swing\fP .fl .fi -このコマンドは、「java」および「javax.swing」という名前のパッケージとこれらのサブパッケージ全部のドキュメントを生成します。 +Υޥɤϡjavaפӡjavax.swingפȤ̾ΥѥåȤΥ֥ѥåΥɥȤޤ .LP -\f2\-exclude\fP とともに \f2\-subpackages\fP を使用すると、特定のパッケージを除外できます。 +\f2\-subpackages\fP \f2\-exclude\fP Ȥ߹碌ƻѤȡΥѥåǤޤ .LP .TP 3 \-exclude\ \ packagename1:packagename2:... -指定されたパッケージとそのサブパッケージを \f2\-subpackages\fP によって作成されたリストから無条件に除外します。過去の \f2\-subpackages\fP オプションの指定によって組み込まれたパッケージ、または将来組み込まれるパッケージも除外の対象となります。例を示します。 +ꤵ줿ѥåȤΥ֥ѥå \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 は除外されます。 +ξ硢 \f2java.io\fP \f2java.util\fP \f2java.math\fP ʤɤޤ졢 \f2java.net\fP \f2java.lang\fP 롼Ȥ˻ĥѥåޤξ硢 \f2java.lang\fP Υ֥ѥåǤ \f2java.lang.ref\fP դƤ .LP .TP 3 \-bootclasspath\ classpathlist -ブートクラスが存在するパスを指定します。ブートクラスとは、通常、Java プラットフォームのコアクラスのことです。ブートクラスパスは、Javadoc ツールがソースファイルとクラスファイルを探すときに使う検索パスの一部です。詳細は、 +֡ȥ饹¸ߤѥꤷޤ֡ȥ饹Ȥϡ̾Java ץåȥեΥ饹ΤȤǤ֡ȥ饹ѥϡJavadoc ġ뤬եȥ饹եõȤ˻ȤѥΰǤܺ٤ϡ .na -\f2「javac と javadoc がクラスを検索する方法」\fP @ +\f2֥饹θˡ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html#srcfilesを参照してください。\f2classpathlist\fP 内の複数のディレクトリは、コロン (:) で区切ります。 +http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html#srcfiles򻲾ȤƤ (:) \f2classpathlist\fP Υǥ쥯ȥ֤ζڤʸȤƻѤޤ .LP .TP 3 \-extdirs\ dirlist -拡張機能クラスが存在するディレクトリを指定します。拡張機能クラスとは、Java 拡張機能機構を使うすべてのクラスです。extdirs は、Javadoc ツールがソースファイルとクラスファイルを探すときに使う検索パスの一部です。詳細は、前述の \f2\-classpath\fP を参照してください。\f2dirlist\fP 内の複数のディレクトリは、コロン (:) で区切ります。 +ĥǽ饹¸ߤǥ쥯ȥꤷޤĥǽ饹ȤϡJava ĥǽȤ٤ƤΥ饹Ǥextdirs ϡJavadoc ġ뤬եȥ饹եõȤ˻ȤѥΰǤܺ٤ϡҤ \f2\-classpath\fP 򻲾ȤƤ (:) \f2dirlist\fP Υǥ쥯ȥ֤ζڤʸȤƻѤޤ .LP .TP 3 \-verbose -javadoc の実行中に詳細なメッセージを表示します。verbose オプションを指定しないと、ソースファイルのロード時、ドキュメントの生成時 (ソースファイルごとに 1 つのメッセージ)、およびソート時にメッセージが表示されます。verbose オプションを指定すると、各 Java ソースファイルの解析に要した時間 (ミリ秒単位) など、追加のメッセージが表示されます。 +javadoc μ¹˾ܺ٤ʥåɽޤverbose ץꤷʤȡեΥɻɥȤ (ե뤴Ȥ 1 ĤΥå)ӥȻ˥åɽޤverbose ץꤹȡ Java եβϤפ (ߥñ) ʤɡɲäΥåɽޤ .LP .TP 3 \-quiet -エラーメッセージまたは警告メッセージ以外のメッセージを抑制し、警告とエラーだけが表示されるようにして、これらを特定しやすくします。バージョン文字列も抑制します。 +顼åޤϷٹåʳΥåٹȥ顼ɽ褦ˤơꤷ䤹ޤСʸޤ .LP .TP 3 \-breakiterator\ -英語言語というロケール固有のアルゴリズムではなく、 +ѸκǽʸꤹݤˡѸѤΥͭΥ르ꥺǤϤʤ .na \f2java.text.BreakIterator\fP @ .fi -http://java.sun.com/javase/6/docs/api/java/text/BreakIterator.html の国際化された文境界を使用して、英文の最初の文の終わりを判断します (他のすべてのロケールはすでに \f2BreakIterator\fP を使用)。\f2「最初の文」\fPとは、パッケージ、クラス、またはメンバーの主説明での最初の文のことです。この文は、パッケージ、クラス、またはメンバーの要約にコピーされ、アルファベット順のインデックスにコピーされます。 +http://java.sun.com/javase/6/docs/api/java/text/BreakIterator.html ιݲ줿ʸѤޤ (ۤΤ٤ƤΥǤϤǤ \f2BreakIterator\fP ѤƤ)\f2ֺǽʸ\fPȤϡѥå饹ޤϥСμǤκǽʸΤȤǤʸϡѥå饹ޤϥС˥ԡ졢ե٥åȽΥǥå˥ԡޤ .LP -JDK 1.2 以降、BreakIterator クラスは、英語を除くすべての言語の文の終わりを判断するために、すでに使用されています。したがって、1.2 以降では、\f2\-breakiterator\fP オプションは英文以外には効果がありません。英文には、次のような独自のデフォルトのアルゴリズムがあります。 +JDK 1.2 ʹߡBreakIterator 饹ϡѸ٤ƤθʸνȽǤ뤿ˡǤ˻ѤƤޤäơ \f2\-breakiterator\fP ץϡ1.2 ʹߤǤϱʸʳˤϸ̤ޤ󡣱ʸˤϡΤ褦ȼΥǥեȤΥ르ꥺबޤ .RS 3 .TP 2 o -英文のデフォルトの文区切りアルゴリズム \- 空白または HTML ブロックタグ (\f2<P>\fP など) が続くピリオドで停止する +ʸΥǥեȤʸڤꥢ르ꥺ \- ޤ HTML ֥å ( \f2<P>\fP ʤ) ³ԥꥪɤߤ .TP 2 o -breakiterator 文区切りアルゴリズム \- 一般に、次の語が大文字で始まる場合、空白文字が続くピリオド、疑問符、または感嘆符で停止する。このアルゴリズムでは、ほとんどの省略表記が処理される (「The serial no. is valid」は処理されるが「Mr. Smith」は処理されない)。HTML タグや、数字または記号で始まる文では停止しない。HTML タグに埋め込まれている場合でも、「../filename」の最後のピリオドで停止する +breakiterator ʸڤꥢ르ꥺ \- ̤ˡθ줬ʸǻϤޤ硢ʸ³ԥꥪɡ䡢ޤϴòߤ롣Υ르ꥺǤϡThe serial no. is validפʤɡۤȤɤξάɽޤMr. SmithפʤɤϽޤHTML 䡢ޤϵǻϤޤʸǤߤʤHTML ޤƤǤ⡢../filenameפκǸΥԥꥪɤߤ .RE -.RS 3 - -.LP .LP -注: 1.5.0 からは、1.4.x に設けられていた breakiterator 警告メッセージを削除し、デフォルトの文区切りアルゴリズムを変更していません。つまり、\\\-breakiterator オプションは、1.5.0 ではデフォルトではなくなり、またデフォルトにするつもりもありません。これは、「次のメジャーリリース」(1.5.0) でデフォルトを変更するという、以前の目的とは逆になっています。つまり、ソースコードを変更せず、1.4.x での breakiterator 警告を除去していない場合でも、1.5.0 からは何もする必要がなく、警告は消滅しています。 この逆戻りの理由は、breakiterator をデフォルトにするメリットよりも、デフォルトにするために必要となる、互換性のないソースの変更の方が負担が大きかったためです。この件で皆様に余分の手間をおかけし、混乱を招いたことをお詫びいたします。 -.LP -.RE +: 1.5.0 ϡ1.4.x ߤƤ breakiterator ٹåǥեȤʸڤꥢ르ꥺѹƤޤ󡣤Ĥޤꡢ\\\-breakiterator ץϡ1.5.0 ǤϥǥեȤǤϤʤʤꡢޤǥեȤˤĤ⤢ޤ󡣤ϡּΥ᥸㡼꡼(1.5.0) ǥǥեȤѹȤŪȤϵդˤʤäƤޤĤޤꡢɤѹ1.4.x Ǥ breakiterator ٹƤʤǤ⡢1.5.0 ϲ⤹ɬפʤٹϾǤƤޤεͳϡbreakiterator ǥեȤˤåȤ⡢ǥեȤˤ뤿ɬפȤʤ롢ߴΤʤѹô礭äǤηdzͤ;ʬμ֤򤪤򾷤ȤͤӤޤ .TP 3 \-locale\ language_country_variant -.RS 3 -.LP -\f3重要\fP \- \f2\-locale\fP オプションは、標準ドックレットが提供するすべてのオプション、またはその他の任意のドックレットの提供するすべてのオプションより前 (左側) に指定する必要があります。そうしないと、ナビゲーションバーが英語で表示されます。このコマンド行オプションだけは、指定する順序に依存します。 .LP -.RE +\f3\fP \- \f2\-locale\fP ץϡ\f2ɸɥååȤ󶡤뤹٤ƤΥץ\fPޤϤ¾ǤդΥɥååȤ󶡤뤹٤ƤΥץ (¦) ˻ꤹɬפޤʤȡʥӥСѸɽޤΥޥɹԥץϡꤹ˰¸ޤ .LP -Javadoc がドキュメントを生成するときに使うロケールを指定します。引数には、java.util.Locale のドキュメントで説明されているロケールの名前を指定します。たとえば、\f2en_US\fP (英語、米国)、\f2en_US_WIN\fP (Windows で使われる英語) などを指定します。 +Javadoc ɥȤȤ˻ȤꤷޤΰϼΤ褦ʡjava.util.Locale ΥɥơƤ̾Ǥ \f2en_US\fP (Ѹ졢ƹ) ޤ \f2en_US_WIN\fP (Windows ǻѤѸ) .LP -ロケールを指定すると、指定したロケールのリソースファイルが Javadoc によって選択されて、メッセージ (ナビゲーションバー、リストと表の見出し、ヘルプファイルの目次、stylesheet.css のコメントなどの文字列) のために使われます。また、アルファベット順にソートされるリストのソート順、および最初の文の末尾を判別するための文の区切り文字も、指定したロケールによって決まります。ただし、このオプションは、ドキュメント化されるクラスのソースファイル内で指定されているドキュメンテーションコメントのテキストのロケールを決定するものではありません。 +ꤹȡꤷΥ꥽ե뤬 Javadoc ˤä򤵤ơå (ʥӥСꥹȤɽθФإץեܼstylesheet.css ΥȤʤɤʸ) Τ˻Ȥޤޤե٥åȽ˥ȤꥹȤΥȽ硢ӺǽʸȽ̤뤿ʸζڤʸ⡢ꤷˤäƷޤޤΥץϡɥȲ륯饹ΥեǻꤵƤɥơ󥳥ȤΥƥȤΥꤹΤǤϤޤ .LP .TP 3 \-encoding\ name -ソースファイルのエンコーディングの名前 (\f2EUCJIS/SJIS\fP など) を指定します。このオプションが指定されていない場合は、プラットフォームのデフォルトコンバータが使われます。 +եΥ󥳡ǥ󥰤̾ ( \f2EUCJIS/SJIS\fP ʤ) ꤷޤ Υץ󤬻ꤵƤʤϡץåȥեΥǥեȥСȤޤ .LP -\-docencoding および \-charset も参照してください。 +\-docencoding \-charset ⻲ȤƤ .LP .TP 3 \-Jflag -javadoc を実行する実行時システム java に、\f2flag\fP を直接渡します。\f2J\fP と \f2flag\fP の間に空白を入れてはなりません。たとえば、生成ドキュメントを処理するためにシステムで 32M バイトのメモリーを確保しておく必要がある場合は、Java の \f2\-Xmx\fP オプションを次のように呼び出します。 \f2\-Xms\fP は、省略可能です。 これは、初期メモリーのサイズを設定するだけのオプションで、必要なメモリーの最小サイズがわかっている場合に便利です。 +javadoc ¹Ԥ¹Իƥ java ˡ\f2flag\fP ľϤޤ \f2J\fP \f2flag\fP δ֤˶ʤ褦դƤȤСɥȤνѤȤ32M ХȤΥ꡼򥷥ƥdzݤƤɬפˤϡ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」オプションを呼び出します。 +ѤƤ javadoc ΥСǧˤϡΤ褦 Java \f2\-version\fPץƤӽФޤ .nf \f3 .fl @@ -4607,17 +3110,16 @@ javadoc を実行する実行時システム java に、\f2flag\fP を直接渡 Classic VM (build JDK\-1.2\-V, green threads, sunwjit) .fl .fi -出力ストリームには標準ドックレットのバージョン番号が含まれます。 +ϥȥ꡼ˤɸɥååȤΥСֹ椬ޤޤޤ .RE .SS -標準ドックレットが提供するオプション -.LP +ɸɥååȤ󶡤륪ץ .RS 3 .TP 3 \-d\ directory -生成された HTML ファイルを保存する生成先ディレクトリを指定します(「d」は「生成先 (destination)」の意味)。このオプションを省略すると、生成されたファイルは現在のディレクトリに保存されます。値 \f2directory\fP には、絶対ディレクトリ、または現在の作業ディレクトリからの相対ディレクトリを指定できます。バージョン 1.4 では、javadoc を実行すると生成先ディレクトリが自動的に作成されます。 +줿 HTML ե¸ǥ쥯ȥꤷޤ(dפϡ (destination)פΰ̣)Υץάȡ줿եϸߤΥǥ쥯ȥ¸ޤ \f2directory\fP ˤϡХǥ쥯ȥꡢޤϸߤκȥǥ쥯ȥ꤫Хǥ쥯ȥǤޤС 1.4 Ǥϡjavadoc ¹Ԥǥ쥯ȥ꤬ưŪ˺ޤ .LP -たとえば、次の例では、\f2com.mypackage\fP パッケージのドキュメントを生成し、結果を \f2/home/user/doc/\fP ディレクトリに保存します。 +Ȥмξ硢ѥå \f2com.mypackage\fP ΥɥȤ졢η̤ \f2/home/user/doc/\fP ǥ쥯ȥ¸ޤ .nf \f3 .fl @@ -4627,50 +3129,50 @@ javadoc を実行する実行時システム java に、\f2flag\fP を直接渡 .LP .TP 3 \-use -ドキュメント化されるクラスおよびパッケージごとに 1 つの [使用] ページを組み込みます。このページには、その特定のクラスまたはパッケージの API を使っているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドが記述されます。たとえば、クラス C を例にとると、クラス C を使っているものとしては、C のサブクラス、C として宣言されているフィールド、C を返すメソッド、および、型 C のパラメータを持つメソッドとコンストラクタがあります。 +ɥȲ륯饹ӥѥåȤ 1 ĤΡֻѡץڡȤ߹ߤޤΥڡˤϡΥ饹ޤϥѥå API ȤäƤѥå饹᥽åɡ󥹥ȥ饯ӥեɤҤޤȤС饹 C ˤȤȡ饹 C ȤäƤΤȤƤϡC Υ֥饹C ȤƤեɡC ֤᥽åɡӡ C Υѥ᡼ĥ᥽åɤȥ󥹥ȥ饯ޤ .LP -たとえば、String の [使用] ページに何が表示されるかを見てみましょう。\f2java.awt.Font\fP クラスの \f2getName()\fP メソッドは、\f2String\fP 型を返します。したがって、\f2getName()\fP は \f2String\fP を使っているので、\f2String\fP の [使用] ページにはこのメソッドがあります。 +ȤСString [] ڡ˲ɽ뤫򸫤Ƥߤޤ礦java.awt.Font 饹 \f2getName()\fP ᥽åɤϡ \f2String\fP ͤ \f2֤ޤ\fPäơ \f2getName()\fP \f2String\fP ѤƤΤǡString [] ڡ \f2Υ᥽åɤɽޤ\fP .LP -ただし、ドキュメント化されるのは API の使用だけであって、実装はドキュメント化されません。あるメソッドが、その実装の中で \f2String\fP を使っていても、引数として文字列をとったり、文字列を返したりしない場合は、\f2String\fP の「使用」とはみなされません。 +ɥȲΤ API λѤǤäơϥɥȲޤ󡣤᥽åɤμ \f2String\fP ȤäƤƤ⡢ȤʸȤäꡢʸ֤ꤷʤϡ \f2String\fP ΡֻѡפȤϤߤʤޤ .LP -生成された [使用] ページにアクセスするには、目的のクラスまたはパッケージに移動し、ナビゲーションバーの [使用] リンクをクリックします。 +줿 [] ڡ˥ˤϡŪΥ饹ޤϥѥå˰ưʥӥС [] 󥯤򥯥åޤ .TP 3 \-version -生成ドキュメントに、@version のテキストを組み込みます。このテキストは、デフォルトでは省略されます。使用している Javadoc ツールのバージョンを確認するには、\f2\-J\-version\fP オプションを使用します。 +ɥȤˡ@version ΥƥȤȤ߹ߤޤΥƥȤϡǥեȤǤϾάޤѤƤ Javadoc ġΥСǧˤ \f2\-J\-version\fP ץѤޤ .LP .TP 3 \-author -生成ドキュメントに、@author のテキストを組み込みます。 +ɥȤˡ@author ΥƥȤȤ߹ߤޤ .LP .TP 3 \-splitindex -索引ファイルをアルファベットごとに複数のファイルに分割し、文字ごとに 1 つのファイルと、アルファベット以外の文字で始まる索引エントリ用に 1 つのファイルを作成します。 +ե򥢥ե٥åȤȤʣΥեʬ䤷ʸȤ 1 ĤΥեȡե٥åȰʳʸǻϤޤȥѤ 1 ĤΥեޤ .LP .TP 3 \-windowtitle\ title -HTML の <title> タグに配置するタイトルを指定します。指定したタイトルは、ウィンドウのタイトルや、このページに対して作成されたブラウザのブックマーク (お気に入り) に表示されます。このタイトルには HTML タグを含めないでください。 タイトルに HTML タグが含まれていると、ブラウザがタグを正しく解釈できません。\f2title\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。\-windowtitle が省略されている場合、Javadoc ツールは、このオプションの代わりに \-doctitle の値を使います。 +HTML <title> ֤륿ȥꤷޤꤷȥϡɥΥȥ䡢ΥڡФƺ줿֥饦Υ֥åޡ () ɽޤΥȥˤ HTML ޤʤǤȥ HTML ޤޤƤȡ֥饦Ǥޤ\f2title\fP ǰȤϡ򥨥פɬפޤ\-windowtitle άƤ硢Javadoc ġϡΥץ \-doctitle ͤȤޤ .nf \f3 .fl - % \fP\f3javadoc \-windowtitle "Java 2 Platform" com.mypackage\fP + % \fP\f3javadoc \-windowtitle "Java SE Platform" com.mypackage\fP .fl .fi .TP 3 \-doctitle\ title -概要ファイルの最上部の近くに配置するタイトルを指定します。タイトルは中央揃えになり、レベル 1 の見出しとして、上部ナビゲーションバーのすぐ下に置かれます。\f2title\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2title\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 +ץեκǾζ᤯֤륿ȥꤷޤȥ·ˤʤꡢ٥ 1 θФȤơʥӥСΤ֤ޤ\f2title\fP ˤϡHTML ȶޤ뤳ȤǤޤޤϡΤǰϤޤʤФʤޤ\f2title\fP ǰȤϡ򥨥פɬפޤ .nf \f3 .fl - % \fP\f3javadoc \-doctitle "Java (TM)" com.mypackage\fP + % \fP\f3javadoc \-doctitle "Java(TM)" com.mypackage\fP .fl .fi .TP 3 \-title\ title -\f3このオプションは、現在は存在しません。\fPJavadoc 1.2 のベータ版にだけ存在しました。このオプションは、\f2\-doctitle\fP という名前に変更されました。名前を変更した理由は、このオプションが、ウィンドウのタイトルではなくドキュメントのタイトルを定義することを明確にするためです。 +\f3ΥץϤ⤦¸ߤƤޤ\fPΥץ Javadoc 1.2 Υ١Ǥˤ¸ߤƤޤǤΥץ̾ \f2\-doctitle\fP ѹޤ̾ѹͳϡΥץ󤬡ɥΥȥǤϤʤɥȤΥȥ뤳ȤΤˤ뤿Ǥ .LP .TP 3 \-header\ header -各出力ファイルの上端に配置するヘッダーテキストを指定します。ヘッダーは、上部ナビゲーションバーの右側に配置されます。\f2header\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2header\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 +ƽϥեξü֤إåƥȤꤷޤإåϡʥӥСα¦֤ޤ\f2header\fP ˤϡHTML ȶޤ뤳ȤǤޤޤϡΤǰϤޤʤФʤޤ\f2header\fP ǰȤϡ򥨥פɬפޤ .nf \f3 .fl @@ -4680,73 +3182,77 @@ HTML の <title> タグに配置するタイトルを指定します。指定し .LP .TP 3 \-footer\ footer -各出力ファイルの下端に配置するフッターテキストを指定します。フッターは、下部ナビゲーションバーの右側に配置されます。 \f2footer\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2footer\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 +ƽϥեβü֤եåƥȤꤷޤեåϡʥӥСα¦֤ޤ\f2footer\fP ˤϡHTML ȶޤ뤳ȤǤޤޤϡΤǰϤޤʤФʤޤ\f2footer\fP ǰȤϡ򥨥פɬפޤ +.LP +.TP 3 +\-top +ƽϥեξü֤ƥȤꤷޤ .LP .TP 3 \-bottom\ text -各出力ファイルの最下部に配置するテキストを指定します。このテキストは、下部ナビゲーションバーより下の、ページの最下部に配置されます。\f2text\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2text\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 +ƽϥեκDz֤ƥȤꤷޤΥƥȤϡʥӥС겼ΡڡκDz֤ޤ \f2text\fP ˤϡHTML ȶޤ뤳ȤǤޤޤϡΤǰϤޤʤФʤޤ󡣰 \f2text\fP ǻѤ硢򥨥פʤФʤʤǽޤ .LP .TP 3 \-link\ extdocURL -javadoc により生成された既存の外部参照クラスのドキュメンテーションへのリンクを作成します。引数を 1 つとります。 +javadoc ˤ줿¸γȥ饹ΥɥơؤΥ󥯤ޤ 1 ĤȤޤ .LP .RS 3 .TP 2 o -\f4extdocURL\fP は、リンク先として指定する、javadoc によって生成された外部ドキュメントを含むディレクトリの絶対 URL または相対 URL です。あとで例を示します。このディレクトリ内にパッケージリストファイルが存在していなければなりません。 存在しない場合は、\f2\-linkoffline\fP を使用します。Javadoc ツールは、\f2パッケージリスト\fPファイルからパッケージ名を読み取り、これらのパッケージをその URL にリンクします。Javadoc ツールを実行すると、作成される \f2<A HREF>\fP リンク内に \f2extdocURL\fP の値がそのままコピーされます。したがって、\f2extdocURL\fP はファイルへの URL ではなく「ディレクトリへの URL」でなければなりません。 +\f4extdocURL\fP ϡȤƻꤹ롢javadoc ˤä줿ɥȤޤǥ쥯ȥ URL ޤ URL ǤȤ򼨤ޤΥǥ쥯ȥ˥ѥåꥹȥե뤬¸ߤƤʤФʤޤ ¸ߤʤϡ\f2\-linkoffline\fP ѤޤJavadoc ġϡ \f2package\-list\fP ե뤫ѥå̾ɤ߼äȡ URL ǤΥѥå˥󥯤ޤJavadoc ġμ¹Իˡ\f2extdocURL\fP ͤΤޤޡ줿 \f2<A HREF>\fP ˥ԡޤäơ\f2extdocURL\fP ϥեؤ URL ǤϤʤ֥ǥ쥯ȥؤ URLפǤʤФʤޤ .LP -\f2extdocURL\fP への絶対リンクを使用すると、ユーザーのドキュメントを任意の Web サイト上のドキュメントにリンクできます。 相対位置へリンクするだけでよい場合は相対リンクを使用できます。相対リンクを使用する場合、\f2\-d\fP を使って、生成先ディレクトリからリンクされるパッケージのあるディレクトリの相対パスを指定する必要があります。 +\f2extdocURL\fP ؤХ󥯤Ѥȡ桼ΥɥȤǤդ Web ȾΥɥȤ˥󥯤Ǥޤа֤إ󥯤Ǥ褤Х󥯤ѤǤޤХ󥯤ξ硢桼Ϥͤϡ( \f2\-d\fP ǻꤵ줿) ǥ쥯ȥ꤫顢Ȥʤѥåޤǥ쥯ȥؤХѥˤ٤Ǥ .LP -通常、絶対リンクを指定する場合は、\f2http:\fPリンクを使用します。Web サーバーを持たないファイルシステムにリンクする場合は、\f2file:\fP リンクを使用できます。ただし、この方法は、すべてのユーザーが生成された同じファイルシステムを共有するドキュメントにアクセスする必要がある場合以外は使用しないでください。 +̾Х󥯤ꤹϡ \f2http:\fP 󥯤ѤޤWeb Сʤե륷ƥ˥󥯤ϡ \f2file: 󥯤ѤǤޤ\fP ˡϡ٤ƤΥ桼줿Ʊե륷ƥͭɥȤ˥ɬפʳϻѤʤǤ .LP -いかなる場合にも、いかなるオペレーティングシステムでも、絶対 URL か相対 URL か、「http:」ベースか「file:」ベースかにかかわらず、スラッシュを区切り文字として使用します ( +٤Ƥξ硢٤ƤΥڥ졼ƥ󥰥ƥǡ URL URLhttp:ץ١ȡfile:ץ١ˤ餺åڤʸȤƻѤޤ ( .na \f2URL Memo\fP @ .fi -http://www.ietf.org/rfc/rfc1738.txt で指定)。 +http://www.ietf.org/rfc/rfc1738.txt ǻ) .RS 3 .TP 3 -http:ベースの絶対リンク: +http: ١Х: \f2\-link http://<host>/<directory>/<directory>/.../<name>\fP .TP 3 -file:ベースの絶対リンク: +file: ١Х: \f2\-link file://<host>/<directory>/<directory>/.../<name>\fP .TP 3 -相対リンク: +Х: \f2\-link <directory>/<directory>/.../<name>\fP .RE .RE .LP -javadoc の実行時に複数の \f2\-link\fP オプションを指定して、複数のドキュメントへのリンクを作成することもできます。 \f3\-linkoffline または \-link の選択\fP +javadoc 1 μ¹Ԥʣ \f2\-link\fP ץꤹСʣΥɥȤؤΥ󥯤Ǥޤ \f3\-linkoffline ޤ \-link \fP .br -\f2\-link\fP を使用する場合: +\f2\-link\fPѤ: .RS 3 .TP 2 o -外部 API ドキュメントへの相対パスを使用する場合 + API ɥȤؤХѥѤ .TP 2 o -外部 API ドキュメントへの絶対 URL を使用する場合 (プログラムがその URL に接続し、読み取りを行うことがシェルによって許可されている場合) + API ɥȤؤ URL Ѥ (ץब URL ³ɤ߼ԤȤˤäƵĤƤ) .RE -次のような場合は、\f2\-linkoffline\fP オプションを使用します。 +\f2\-linkoffline\fP Ѥ: .RS 3 .TP 2 o -プログラムがその URL に接続し、読み取りを行うことがシェルによって許可されていない場合に外部 API ドキュメントへの絶対 URL を使用する場合。このような状況は、リンク先のドキュメントがファイアウォールの向こう側にある場合に発生します。 + API ɥȤؤ URL Ѥ (ץब URL ³ɤ߼ԤȤˤäƵĤƤʤ)Τ褦ʾϡΥɥȤեθ¦ˤȯޤ .RE .LP -\f3外部ドキュメントへの絶対リンクの使用例\fP \- +\f3ɥȤؤХ󥯤λ\fP \- \f2java.lang\fP \f2java.io\fP ¾ Java ץåȥեѥå ( .na -\f2http://java.sun.com/j2se/1.5.0/docs/api\fP @ +\f2http://java.sun.com/javase/6/docs/api/\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/api 内の \f2java.lang\fP、\f2java.io\fP、その他の Java 2 プラットフォームパッケージにリンクしたい場合があります。 次のコマンドは、\f2com.mypackage\fP パッケージのドキュメントと Java 2 プラットフォームパッケージへのリンクを生成します。生成されたドキュメントには、たとえばクラスツリー内の \f2Object\fP クラスへのリンクが含まれています。\f2\-sourcepath\fP や \f2\-d\fP などの他のオプションは表示されません。 +http://java.sun.com/javase/6/docs/api ) ˥󥯤ͤޤΥޥɤϡJava SE ץåȥեѥåؤΥ󥯤ޤѥå \f2com.mypackage\fP ΥɥȤޤ줿ɥȤˤϡȤХ饹ĥ꡼ \f2Object\fP 饹ؤΥ󥯤ޤޤƤޤʤ \f2\-sourcepath\fP \f2\-d\fP ʤɡ¾ΥץϼƤޤ .nf \f3 .fl - % \fP\f3javadoc \-link http://java.sun.com/j2se/1.5.0/docs/api com.mypackage\fP + % \fP\f3javadoc \-link http://java.sun.com/javase/6/docs/api com.mypackage\fP .fl .fi -\f3外部ドキュメントへの相対リンクの使用例\fP \- 2 つのパッケージがあり、そのドキュメントが Javadoc ツールを複数回実行した結果生成されたものであるとします。 さらに、これらのドキュメントが相対パスで分割されているとします。この例の場合、2 つのパッケージは、API である \f2com.apipackage\fP とSPI (サービスプロバイダインタフェース) である \f2com.spipackage\fP です。ドキュメントの格納先は \f2docs/api/com/apipackage\fP パッケージと \f2docs/spi/com/spipackage\fP パッケージです。API パッケージのドキュメントがすでに生成されていて、現在のディレクトリが \f2docs\fP である場合、次のコマンドを実行することによって、この API ドキュメントへのリンクを持つ SPI パッケージをドキュメント化します。 +\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 @@ -4754,43 +3260,43 @@ http://java.sun.com/j2se/1.5.0/docs/api 内の \f2java.lang\fP、\f2java.io\fP .fl .fi .LP -\f2\-link\fP 引数は、生成先ディレクトリ (\f2docs/spi\fP) の相対パスです。 +\f2\-link\fP ΰϡǥ쥯ȥ (\f2docs/spi\fP) ХѥǤ .LP -\f3詳細\fP \- \f2\-link\fP オプションを使うと、「コードからは参照されていても、Javadoc の今回の実行ではドキュメント化されない」というクラスにリンクできるようになります。リンクから有効なページに移動できるようにするには、それらの HTML ページがある場所を調べ、その場所を \f2extdocURL\fP に指定する必要があります。このオプションを使うと、たとえば、サードパーティーのドキュメントから、\f2http://java.sun.com\fP にある \f2java.*\fP のドキュメントにリンクすることができます。 +\f3ܺ\fP \- \f2\-link\fP ץȤȡ֥ɤϻȤƤƤ⡢Javadoc κμ¹ԤǤϥɥȲʤפȤ饹˥󥯤Ǥ褦ˤʤޤ󥯤ͭʥڡ˰ưǤ褦ˤˤϡ HTML ڡĴ١ξ \f2extdocURL\fP ˻ꤹɬפޤˤꡢȤСɥѡƥΥɥȤ \f2http://java.sun.com java.*\fP ΥɥȤؤΥ󥯤 \f2ǽȤʤޤ\fP .LP -今回の実行で Javadoc によって生成されるドキュメント内の API だけを対象にリンクを作成する場合は、\f2\-link\fP オプションを省略します。\f2\-link\fP オプションが指定されていない場合、Javadoc ツールは、外部参照されたドキュメントへのリンクを作成しません。これは、そのドキュメントが存在するかどうか、および存在する場合はその場所を判別できないからです。 +μ¹Ԥ Javadoc ˤäɥ API оݤ \f2󥯤ϡ\fP \-link ץάޤ \f2\-link\fP ץ󤬻ꤵƤʤ硢Javadoc ġϡȤ줿ɥȤؤΥ󥯤ޤ󡣤ϡΥɥȤ¸ߤ뤫ɤ¸ߤϤξȽ̤ǤʤǤ .LP -このオプションでは、生成ドキュメント内の複数の場所にリンクを作成できます。 +ΥץǤϡɥʣξ˥󥯤Ǥޤ .LP -また、このオプションを使うと、複数のパッケージ群の間にクロスリンクを作成することもできます。つまり、ある一式のパッケージに対して javadoc を実行したあと、別の一式のパッケージに対して javadoc を実行し、これら 2 つのパッケージ群の間にクロスリンクを作成できます。 +⤦ 1 ĤӤϡѥååȴ֤ǤΥ󥯤ǤΥѥååȤФ javadoc ¹Ԥȡ¾ΥѥååȤФ javadoc ټ¹Ԥ뤳Ȥˤꡢξåȴ֤Υ󥯤Ǥޤ .LP -\f3クラスの参照方法\fP \- 外部参照クラスへのリンクを、テキストラベルだけではなく実際に表示するには、次の方法でクラスを参照する必要があります。メソッドの本体でクラスを参照するだけでは十分ではありません。\f2import\fP 文または宣言で参照する必要があります。次に、クラス \f2java.io.File\fP を参照する方法の例を示します。 +\f3饹λˡ\fP \- ȥ饹ؤΥ󥯤򡢥ƥȥ٥ǤϤʤºݤɽˤϡˡǥ饹򻲾Ȥɬפޤ᥽åɤΤǥ饹򻲾ȤǤϽʬǤϤޤ󡣤Υ饹ϡ \f2import\fP ʸΤξǻȤƤɬפޤHere are examples of how the class \f2java.io.File\fP can be referenced: .RS 3 .TP 2 o -すべての種類の \f2import\fP 文の場合: ワイルドカードによるインポート、名前による明示的なインポート、または \f2java.lang.*\fP に対する自動的なインポート。たとえば、次のようにすれば十分です。 +٤Ƥμ \f2import\fP ʸξ: 磻ɥɤˤ륤ݡȡ̾ˤŪʥݡȡޤ \f2java.lang.* Ф뼫ưŪʥݡ\fPȤСΤ褦ˤнʬǤ .br \f2import java.io.*;\fP .br -1.3.x および 1.2.x では、名前による明示的なインポートだけです。ワイルドカードによるインポート文も、自動インポート \f2java.lang.*\fP も使用できません。 +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 文に置きます。 +λȤѤ᥽åɡ󥹥ȥ饯եɡ饹ޤϥ󥿥եͤηޤϥѥ᡼η֤ \f2implements\fP \f2extends\fP ޤ \f2throws\fP ʸ֤ޤ .RE .LP -この結果、\f2\-link\fP オプションを使用しても、この制限のために誤って表示されない多くのリンクが多数発生する可能性があります。テキストはハイパーテキストリンクが付けられずに表示されます。これらのリンクが表示する警告から、このリンクを認識できます。クラスを正しく参照し、それによってリンクを追加するためのもっとも安全な方法は上で説明したとおり、当該のクラスをインポートすることです。 +פʷ̤Ȥơ \f2\-link\fP ץλѻˡ¤Τ˸äɽʤ󥯤¿ȯǽޤƥȤϥϥѡƥȥ󥯤դ줺ɽޤΥ󥯤ɽٹ𤫤顢Υ󥯤ǧǤޤ饹Ȥˤäƥ󥯤ɲä뤿ΤäȤˡϾȤꡢΥ饹򥤥ݡȤ뤳ȤǤ .LP -\f3パッケージリスト\fP \- \f2\-link\fP オプションは、\f2package\-list\fP という名前のファイルを要求します。 このファイルは、Javadoc ツールによって生成され、\f2\-link\fP によって指定した URL に存在します。\f2package\-list\fP ファイルは、その場所にあるドキュメント化されたパッケージの名前のリストが入った単純なテキストファイルです。前の例では、Javadoc ツールは指定された URL にある \f2package\-list\fP という名前のファイルを探し、パッケージ名を読み込んで、その URL にあるそれらのパッケージへのリンクを作成しました。 +\f3ѥåꥹ\fP \- \f2\-link\fP ץǽˤϡJavadoc ġˤä \f2package\-list\fP Ȥ̾Υե뤬桼 \f2\-link\fP ˻ꤷ URL ¸ߤƤɬפޤ \f2package\-list\fP եϡξˤɥȲ줿ѥå̾ΥꥹȤäñʥƥȥեǤǤϡJavadoc ġϡꤵ줿 URL \f2package\-list\fP Ȥ̾Υե򸡺ѥå̾ɤ߹ȡ URL ˤ뤽ΥѥåؤΥ󥯤ޤ .LP -たとえば、Java プラットフォーム v5.0 API のパッケージリストは +ȤСJava SE 6 API ΥѥåꥹȤ .na -\f2http://java.sun.com/j2se/1.5.0/docs/api/package\-list\fP @ +\f2http://java.sun.com/javase/6/docs/api/package\-list\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/api/package\-list にあり、次のような内容で始まっています。 +http://java.sun.com/javase/6/docs/api/package\-list ˤꡢΤ褦ƤǻϤޤäƤޤ .nf \f3 .fl @@ -4808,64 +3314,64 @@ http://java.sun.com/j2se/1.5.0/docs/api/package\-list にあり、次のよう .fl java.awt.font .fl - その他 ... + ¾ .fl \fP .fi .LP -\f2\-link\fP オプションを指定せずに javadoc を実行した場合、外部参照クラスに属する名前を見つけると、javadoc はその名前をリンクを持たない形で出力します。一方、\f2\-link\fP オプションを指定した場合は、指定した \f2extdocURL\fP にある \f2package\-list\fP ファイルから該当するパッケージ名が検索されます。パッケージ名が見つかると、\f2extdocURL\fP が名前の前に付加されます。 +\f2\-link\fP ץꤻ javadoc ¹Ԥ硢ȥ饹°̾򸫤Ĥȡjavadoc Ϥ̾󥯤ʤǽϤޤ \f2\-link\fP ץ󤬻ꤵ줿硢Javadoc ġϡ \f2ꤵ줿\fP \f2extdocURL\fP ξˤ package\-list եǡΥѥå̾򸡺ޤѥå̾Ĥȡ\f2extdocURL\fP ̾ղäޤ .LP -すべてのリンクが正しく機能するためには、外部参照のすべてのドキュメントが、指定した URL に存在していなければなりません。Javadoc ツールは、指定された package\-list が存在するかどうかを調べるだけで、指定された URL に目的のページが存在するかどうかはチェックしません。 +٤ƤΥ󥯤ǽ뤿ˤϡȤΤ٤ƤΥɥȤꤷ URL ¸ߤƤʤФʤޤJavadoc ġϡꤵ줿 package\-list ¸ߤ뤫ɤĴ٤ǡꤵ줿 URL ŪΥڡ¸ߤ뤫ɤϥåޤ .LP -\f3複数のリンク\fP \- 複数の \f2\-link\fP オプションを指定すると、生成された任意の数の外部ドキュメントに対してリンクを設定できます。Javadoc 1.2 には、複数の \f2\-link\fP オプションを指定できないというバグがあります。これは 1.2.2 で修正されました。 +\f3ʣΥ\fP \- ʣ \f2\-link\fP ץꤹȡǤդογɥȤؤΥ󥯤ǤޤJavadoc 1.2 ˤϡʣ \f2\-link\fP ޥɤǤʤȤХޤ 1.2.2 ǽޤ .LP -リンクする外部ドキュメントごとに、次のように別々のリンクオプションを指定します。 +󥯤볰ɥȤȤˡΤ褦̡Υ󥯥ץꤷޤ .LP -\ \ \f2% \fP\f4javadoc \-link\fP \f2extdocURL1\fP \f4\-link\fP \f2extdocURL2\fP \f2...\fP\f4\-link\fP \f2extdocURLn\fP \f4com.mypackage\fP +\ \ \f2% \fP\f4javadoc \-link\fP \f2extdocURL1\fP \f4\-link\fP \f2extdocURL2\fP \f2... \fP\f4\-link\fP \f2extdocURLn\fP \f4com.mypackage\fP .LP -\f2extdocURL1\fP、\f2extdocURL2\fP、... \f2extdocURLn\fP は、それぞれ外部ドキュメントのルートを指し、各ルートには \f2package\-list\fP という名前のファイルが入っています。 +\f2extdocURL1\fP\f2extdocURL2\fP... \f2extdocURLn\fP ϡ줾쳰ɥȤΥ롼Ȥؤƥ롼Ȥˤϡ \f2package\-list\fP Ȥ̾Υե뤬äƤޤ .LP -\f3クロスリンク\fP \- まだ生成されていない 2 つ以上のドキュメントをクロスリンクする場合は、「ブートストラップ」が必要になります。つまり、どのドキュメントについても \f2package\-list\fP が存在していない場合は、最初のドキュメントに対して javadoc ツールを実行する時点で、2 番目のドキュメントの \f2package\-list\fP がまだ存在していません。したがって、外部リンクを作成するには、2 番目のドキュメントを生成したあとで、最初のドキュメントを生成し直す必要があります。 +\f3\fP \- ޤƤʤ 2 İʾΥɥȤ򥯥󥯤ϡ֥֡ȥȥåספɬפˤʤޤĤޤꡢɤΥɥȤˤĤƤ \f2package\-list\fP ¸ߤƤʤϡǽΥɥȤФ Javadoc ġ¹Ԥǡ2 ܤΥɥȤ \f2package\-list\fP Ϥޤ¸ߤƤޤ󡣤äơ󥯤ˤϡ2 ܤΥɥȤȤǡǽΥɥȤľɬפޤ .LP -この場合、最初のドキュメント生成の目的は、そのドキュメントの \f2package\-list\fP を作成することです。 パッケージ名をすべて把握している場合は、package\-list を手動で作成することもできます。次に、2 番目のドキュメントとその外部リンクを生成します。必要な外部の \f2package\-list\fP ファイルが存在しない場合、Javadoc ツールは警告を表示します。 +ξ硢ǽΥɥŪϡ \f2package\-list\fP 뤳ȤǤѥå̾򤹤٤İƤϡpackage\-list ưǺƤ⤫ޤޤ󡣼ˡ2 ܤΥɥȤȤγ󥯤ޤɬפʳ \f2package\-list\fP ե뤬¸ߤʤϡJavadoc ġ뤫ٹ𤬽Ϥޤ .LP .TP 3 \-linkoffline\ extdocURL\ packagelistLoc -このオプションは、\f2\-link\fP オプションを変えたものです。 どちらも、javadoc によって生成された外部参照クラスのドキュメントへのリンクを作成します。Javadoc ツール自体がオフラインになっているとき (Web 接続を使ってドキュメントにアクセスできないとき)、Web 上のドキュメントにリンクするには、\f2\-linkoffline\fP オプションを使用します。 +Υץ \f2\-link\fP ΥХꥨ 1 ĤǤɤ⡢ȥ饹 javadoc ɥȤؤΥ󥯤ޤJavadoc \f2ġ뼫Τ\fP ե饤ˤʤäƤȤ (Web ³ȤäƥɥȤ˥ǤʤȤ)Web ΥɥȤ˥󥯤ˤϡ\-linkoffline ץѤޤ .LP -厳密には、外部ドキュメントの \f2package\-list\fP ファイルにアクセスできないとき、またはこのファイルが \f2extdocURL\fP で指定された場所とは異なる場所 (通常、\f2packageListLoc\fP で指定可能なローカルな場所) に存在するとき、\f2\-linkoffline\fP を使用します。したがって、\f2extdocURL\fP に WWW 上でしかアクセスできない場合は、\f2\-linkoffline\fP を指定することにより、ドキュメントの生成時に javadoc ツールが Web に接続できなければならないという制約がなくなります。 +̩ˤϡ \f2\fP ɥȤ \f2package\-list\fP ե˥ǤʤȤޤϤΥե뤬 \f2extdocURL\fP ǻꤵ줿Ȥϰۤʤ (̾\f2packageListLoc\fP ǻǽʥʾ) ¸ߤȤ\-linkoffline ѤޤäơWWW ͳǤ \f2extdocURL\fP ˥Ǥʤ硢 \f2\-linkoffline\fP ꤹ뤳ȤˤꡢɥȤ Javadoc ġ뤬 Web ³ǤʤФʤʤȤ󤬤ʤʤޤ .LP -さらに、ドキュメントを更新するための「ハッキング」としての使用も可能です。パッケージのセット全体に対して javadoc を実行したあと、変更した一部のパッケージだけに対して javadoc を実行します。 こうして、更新されたファイルを、オリジナルのファイルセットに挿入できるようにします。例をあとで示します。 +ˡɥȤ򹹿뤿Ρ֥ϥå󥰡פȤƤλѤǽǤѥåΥåΤФ javadoc ¹ԤȡѹΥѥåФ javadoc ¹Ԥޤơ줿ե򡢥ꥸʥΥե륻åȤǤ褦ˤޤ򤢤ȤǼޤ .LP -\f2\-linkoffline\fP オプションは引数を 2 つ取ります。 最初の引数は \f2<a href>\fP リンクに組み込まれる文字列を指定する引数、2 番目の引数は \f2package\-list\fP の検索場所を指定する引数です。 +\f2\-linkoffline\fP ץϰ 2 ļޤ1 Ĥϡ \f2<a href>\fP 󥯤Ȥ߹ޤʸɽ⤦ 1 Ĥ \f2package\-list\fP θ򼨤Ǥ .RS 3 .TP 2 o -\f4extdocURL\fP は、リンク先として指定する、javadoc によって生成された外部ドキュメントを含むディレクトリの絶対 URL または相対 URL です。相対リンクを使用する場合、\f2\-d\fP を使って、生成先ディレクトリからリンクされるパッケージのルートの相対パスを指定する必要があります。詳細は、\f2\-link\fP オプションの \f2extdocURL\fP を参照してください。 +\f4extdocURL\fP ϡȤƻꤹ롢javadoc ˤä줿ɥȤޤǥ쥯ȥ URL ޤ URL ǤХ󥯤ξ硢ͤϡ( \f2\-d\fP ǻꤵ줿) ǥ쥯ȥ꤫ѥåΥ롼ȤؤХѥˤ٤Ǥܺ٤ϡ\-link ץ \f2extdocURL\fP \f2򻲾\fP Ƥ .TP 2 o -\f4packagelistLoc\fP には、外部ドキュメントの \f2package\-list\fP ファイルが入っているディレクトリのパスまたは URL を指定します。これは、URL (http: または file:)or file:)とファイルパスのどちらでもかまいません。また、絶対パスと相対パスのどちらでも指定できます。相対パスの場合は、javadoc が実行されるカレントディレクトリからの相対パスとして指定します。\f2package\-list\fP というファイル名は含めないでください。 +\f4packagelistLoc\fP ϡɥȤ \f2package\-list\fP եޤǥ쥯ȥؤΥѥޤ URL ǤϡURL (http: ޤ file:) ǤեѥǤ⤫ޤޤ󤷡ХѥǤХѥǤ⤫ޤޤХѥξϡjavadoc ¹Ԥ륫ȥǥ쥯ȥ꤫ХѥȤƻꤷޤե̾ \f2package\-list\fP ϴޤʤǤ .RE .LP -javadoc の 1 回の実行で、複数の \f2\-linkoffline\fP オプションを指定できます。1.2.2 より前は、複数のオプションを指定することはできませんでした。 +1 javadoc ¹Ԥʣ \f2\-linkoffline\fP ץǤޤ1.2.2 ϡʣΥץꤹ뤳ȤϤǤޤǤ .LP -\f3外部ドキュメントへの絶対リンクを使った例\fP \- \f2http://java.sun.com/j2se/1.5.0/docs/api\fP 内の \f2java.lang\fP、\f2java.io\fP、、およびその他の Java 2 プラットフォームパッケージにリンクしたくても、Web にアクセスできない 場合について考えてみます。この場合は、ブラウザで +\f3ɥȤؤХ󥯤λ\fP \- http://java.sun.com/javase/6/docs/api \f2java.lang\fP \f2java.io\fP Ӥ¾ Java SE ץåȥեѥå \f2˥󥯤Ƥ\fP Web ˥Ǥʤͤޤ֥饦 \f2\fP .na -\f2http://java.sun.com/j2se/1.5.0/docs/api/package\-list\fP @ +\f2http://java.sun.com/javase/6/docs/api/package\-list\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/api/package\-list にある \f2package\-list\fP ファイルを開き、ローカルディレクトリに保存します。 さらに、2 番目の引数 \f2packagelistLoc\fP にこのローカルコピーの場所を指定します。この例では、パッケージリストファイルはカレントディレクトリ "\f2.\fP" に保存されています。次のコマンドは、Java 2 プラットフォーム API へのリンクを含む、\f2com.mypackage\fP パッケージのドキュメントを生成します。生成されたドキュメントには、たとえばクラスツリー内の \f2Object\fP クラスへのリンクが含まれています。\f2\-sourcepath\fP などの他の必要なオプションは表示されません。 +http://java.sun.com/javase/6/docs/api/package\-list ˤ package\-list ե򳫤ǥ쥯ȥ¸ 2 \f2packagelistLoc\fP ǤΥ륳ԡؤΥѥꤷޤǤϡѥåꥹȥեϥȥǥ쥯ȥ "\f2.\fP" ¸ƤޤΥޥɤϡJava SE ץåȥեѥåؤΥ󥯤ޤѥå \f2com.mypackage\fP ΥɥȤޤ줿ɥȤˤϡȤХ饹ĥ꡼ \f2Object\fP 饹ؤΥ󥯤ޤޤƤޤʤ \f2\-sourcepath\fP ʤɡ¾ɬץץϼƤޤ .nf \f3 .fl -% \fP\f3javadoc \-linkoffline http://java.sun.com/j2se/1.5.0/docs/api . com.mypackage\fP +% \fP\f3javadoc \-linkoffline http://java.sun.com/javase/6/docs/api . com.mypackage\fP .fl .fi .LP -\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 の相対リンクの例を参照してください。 +\f3ɥȤؤХ󥯤λ\fP \- \f2\-linkoffline\fP ХѥѤ뤳Ȥϡޤꤢޤͳñǡ̾ \f2\-link\fP ǽʬǤ \f2\-linkoffline\fP Ѥݡ \f2package\-list\fP ˤ̾Υեꤷޤ Х󥯤Ѥݤ⡢Υեˤ̾Υեꤷޤäơ \f2\-linkoffline 2 Ĥΰ̡ΥѥꤹɬפϤޤ\fP2 ĤΰƱǤϡ \f2\-link\fP ѤǤޤ \f2\-link\fP Х󥯤򻲾ȤƤ .LP -\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 ファイルを共有することもできるため、クロスリンクを設定したドキュメントを同時にリリースすることも可能です。 +\f4package\-list\fP\f3 եưǺ\fP \- \f2package\-list\fP ե뤬ޤ¸ߤʤƤ⡢ɥȤΥΥѥå̾狼äƤϡΥեʬǺpackagelistLoc \f2ǤΥѥꤹ뤳ȤǤޤ\fPcom.apipackage ǽ \f2com.spipackage\fP ΥѥåꥹȤ¸ߤƤʤäȤ \f2ФΥ\fP ȤƵ󤲤ޤˡϡѥå̾Ϥ狼äƤΤΡޤƤʤɥȤ˥󥯤ɥȤɬפǤޤJavadoc 1.0 ޤ 1.1 줿ѥå \f2package\-list\fP եɬפˤ⡢ˡȤޤΥСǤϡ \f2package\-list\fP եƤޤǤƱͤˡ2 ĤδȤ̤ \f2package\-list\fP եͭС󥯤ޤɥȤƱ˥꡼뤳ȤǽȤʤޤ .LP -\f3複数のドキュメントへのリンク\fP \- \f2\-linkoffline\fP は、参照先の生成ドキュメントごとに 1 つずつ指定します。 次の例では、わかりやすくするためにオプションごとに行を分けています。 +\f3ʣΥɥȤؤΥ\fP \- ȤʤɥȤȤ \f2\-linkoffline\fP 1 󤺤Ĵޤ뤳ȤǤޤ狼䤹뤿ˡץ󤴤Ȥ˲ԤƼƤޤ .LP \f2% \fP\f4javadoc \-linkoffline\fP \f2extdocURL1\fP \f2packagelistLoc1\fP \f2\\\fP .br @@ -4873,24 +3379,24 @@ http://java.sun.com/j2se/1.5.0/docs/api/package\-list にある \f2package\-list .br \f2\ \ \ \ \ \ \ \ \ \ ...\fP .LP -\f3ドキュメントの更新\fP \- 前述の \f2\-linkoffline\fP オプションのもうひとつの用途は、プロジェクトに大量のパッケージが含まれていて、すでにツリー全体に対して javadoc の実行が完了している場合に、次の実行では、少量の変更を手早く加えたあと、ソースツリーのごく一部に対してだけ javadoc を再実行する場合に便利です。これは、ドキュメンテーションコメントに対してだけ変更を加え、宣言は変更しない場合にのみ正しく処理されるので、ハッキングのようなものです。ソースコードの宣言を追加、削除、または変更した場合は、索引、パッケージツリー、継承されるメンバーのリスト、[使用] ページなどの場所で、リンクが壊れることがあります。 +\f3ɥȤι\fP \- Ҥ \f2\-linkoffline\fP ץΤ⤦ҤȤĤӤϡץȤ̤ΥѥåޤޤƤơǤ˥ĥ꡼ΤФ javadoc μ¹ԤλƤˡμ¹ԤǤϡ̤ѹ᤯äȡĥ꡼ΤФƤ javadoc Ƽ¹ԤǤϡɥơ󥳥ȤФƤѹäѹʤˤΤΤǡϥå󥰤Τ褦ʤΤǤɤɲáޤѹϡѥåĥ꡼ѾСΥꥹȡֻѡץڡʤɤξǡ󥯤뤳Ȥޤ .LP -まず、今回の実行で使用する新しい生成先ディレクトリ (\f2update\fP) を作成します。元の生成先ディレクトリの名前が \f2html\fP だとします。もっとも単純な例では、\f2html\fP ディレクトリの親ディレクトリに移動 (cd) します。\f2\-linkoffline\fP の最初の引数にカレントディレクトリ "." を指定し、2 番目の引数に \f2html\fP への相対パスを指定します。 ここで、\f2package\-list\fP が検索されます。 更新対照のパッケージのパッケージ名だけを指定してください。 +ޤοʼ¹ѤȤơǥ쥯ȥ ( \f2update\fP ̿̾) ޤǥ쥯ȥ̾ \f2html\fP äȤޤäȤñǤϡ \f2html ǥ쥯ȥοƥǥ쥯ȥ˰ư (cd) ޤ\fP \f2\-linkoffline\fP 1 򥫥ȥǥ쥯ȥ.פꤷ 2 package\-list ޤޤƤ \f2html\fP ؤХѥꤷ \f2ѥåΥѥå̾Τߤ\fPϤޤ .nf \f3 .fl % \fP\f3javadoc \-d update \-linkoffline . html com.mypackage\fP .fl .fi -Javadoc ツールの終了後、\f2update/com/package\fP 内の生成されたクラスのページをコピーし (概要や索引を除く)、\f2html/com/package\fP 内の元のファイルに上書きします。 +Javadoc ĥ꡼νλ塢 \f2update/com/package\fP 줿饹Υڡ򥳥ԡ (פϽ) \f2html/com/package θΥե˾񤭤ޤ\fP .LP .TP 3 \-linksource\ -各ソースファイル (行番号付き) の HTML バージョンを作成し、標準 HTML ドキュメントからソースファイルへのリンクを追加します。リンクは、ソースファイル内に宣言されているクラス、インタフェース、コンストラクタ、メソッド、フィールドに対して作成されます。デフォルトコンストラクタ、生成されたクラスに対しては作成されません。 +ƥե (ֹդ) HTML Сɸ HTML ɥȤ饽եؤΥ󥯤ɲäޤ󥯤ϡեƤ륯饹󥿥ե󥹥ȥ饯᥽åɡեɤФƺޤǥեȥ󥹥ȥ饯줿饹ФƤϺޤ .LP -\f3このオプションは、\fP\f4\-public\fP\f3、\fP\f4\-package\fP\f3、\fP\f4\-protected\fP\f3、\fP\f4\-private\fP\f3 の各オプションとは関係なく、非公開のクラス、フィールド、非公開のメソッドの本体をはじめとする組み込まれたソースファイル内のすべての非公開実装の詳細を公開します。\fP\f2\-private\fP オプションを指定しないかぎり、非公開のクラスやインタフェースの一部には、リンクを介してアクセスできないことがあります。 +\f3Υץϡ\fP\f4\-public\fP\f3 \fP\f4\-package\fP\f3 \fP\f4\-protected\fP\f3 \fP\f4\-private\fP\f3 γƥץȤϴطʤΥ饹եɡΥ᥽åɤΤϤȤȤ߹ޤ줿եΤ٤Ƥξܺ٤ޤ\fP\f2\-private\fP ץʻƻꤷʤꡢΤ٤ƤΥ饹䥤󥿥ե˥󥯷ͳǥǤȤϤޤ .LP -各リンクは、その宣言内の識別子名の上に作成されます。たとえば、\f2Button\fP クラスのソースコードヘのリンクは、「Button」という語の上に作成されます。 +ƥ󥯤ϡμ̻̾ξ˺ޤȤС \f2Button\fP 饹ΥɤؤΥ󥯤ϡButtonפȤξ˺ޤ .nf \f3 .fl @@ -4902,7 +3408,7 @@ Javadoc ツールの終了後、\f2update/com/package\fP 内の生成された .fl \fP .fi -Button クラスの \f2getLabel()\fP メソッドのソースコードへのリンクは、「getLabel」という語の上に作成されます。 +ޤButton 饹 \f2getLabel()\fP ᥽åɤΥɤؤΥ󥯤ϡgetLabelפȤξ˺ޤ .nf \f3 .fl @@ -4913,26 +3419,21 @@ Button クラスの \f2getLabel()\fP メソッドのソースコードへのリ .LP .TP 3 \-group\ groupheading\ packagepattern:packagepattern:... -概要ページの複数のパッケージを、指定したグループに分けて、グループごとに表を作成します。各グループは、それぞれ別の \f2\-group\fP オプションで指定します。これらのグループは、コマンド行で指定した順序でページに表示されます。 各グループ内では、パッケージがアルファベット順に並べられます。指定した \f2\-group\fP オプションごとに、\f2packagepattern\fP 式のリストと一致するパッケージが、見出し \f2groupheading\fP を持つ 1 つの表にまとめて表示されます。 +ץڡʣΥѥå򡢻ꤷ롼פʬơ롼פȤɽޤƥ롼פϡ줾̤ \f2\-group\fP ץǻꤷޤΥ롼פϡޥɹԤǻꤷǥڡɽޤƥ롼Ǥϡѥåե٥åȽ¤٤ޤ \f2\-group\fP ץǤϡ \f2packagepattern\fP ΥꥹȤ˰פѥå \f2groupheading\fP ȤФɽɽޤ .RS 3 .TP 2 o -\f4groupheading\fP には、任意のテキストを指定でき、空白を含めることができます。指定したテキストは、グループの表見出しになります。 +\f4groupheading\fP ˤϡǤդΥƥȤǤޤ뤳ȤǤޤꤷƥȤϡ롼פɽФˤʤޤ .TP 2 o -\f4packagepattern\fP には、任意のパッケージ名、または任意のパッケージ名の先頭部分とそれに続く 1 つのアスタリスク (\f2*\fP) を指定できます。アスタリスクは、「任意の文字に一致する」という意味のワイルドカードです。ワイルドカードとして指定できるのは、アスタリスクだけです。1 つのグループには、コロン (\f2:\fP) で区切って複数のパターンを含めることができます。 +\f4packagepattern\fP ˤϡǤդΥѥå̾ޤǤդΥѥå̾ƬʬȤ³ 1 ĤΥꥹ (\f2*\fP) Ǥޤ ꥹϡǤդʸ˰פפȤ̣Υ磻ɥɤǤ磻ɥɤȤƻǤΤϡꥹǤ1 ĤΥ롼פˤϡ (\f2:\fP) ǶڤäʣΥѥޤ뤳ȤǤޤ .RE -.RS 3 - -.LP -.LP -\f3注: パターンやパターンリスト内でアスタリスクを使う場合は、\fP\f4"java.lang*:java.util"\fP\f3 のように、パターンリストを引用符で囲む必要があります。\fP .LP -.RE +\f3: ѥѥꥹǥꥹȤϡ \fP\f4"java.lang*:java.util" Τ褦ˡѥꥹȤǰϤɬפޤ\fP .LP -\f2\-group\fP オプションが指定されていない場合は、すべてのパッケージが、「パッケージ」という見出しの 1 つのグループに入れられます。ドキュメント化されるパッケージの中に、指定したグループのどのグループにも入らないパッケージがある場合、このようなパッケージは「その他のパッケージ」という見出しを持つ独立したグループに入れられます。 +桼 \f2\-group\fP ץ 1 Ĥꤷʤä硢֥ѥåפȤФ 1 ĤΥ롼ˡ٤ƤΥѥå֤ޤɥȲѥåˡꤷ롼פΤɤΥ롼פˤʤѥå硢Τ褦ʥѥåϡ֤¾ΥѥåפȤФΩ롼פޤ .LP -たとえば、次のようにオプションを指定すると、ドキュメント化される 5 つのパッケージは、コアパッケージ、拡張機能パッケージ、およびその他のパッケージに分けられます。「java.lang*」では、最後のドットを指定していないことに注目してください。 「java.lang.*」のようにドットを入れると、java.lang パッケージは除外されることになります。 +ȤСΤ褦˥ץꤹȡɥȲ 5 ĤΥѥåϡѥåĥǽѥåӤ¾Υѥåʬޤjava.lang*פǤϡǸΥɥåȤꤷƤʤȤܤƤjava.lang.*פΤ褦˥ɥåȤȡjava.lang ѥåϽ뤳Ȥˤʤޤ .nf \f3 .fl @@ -4943,56 +3444,52 @@ o java.lang java.lang.reflect java.util javax.servlet java.new\fP .fl .fi -この結果、次のようなグループ化が行われます。 -.RS 3 +η̡Τ褦ʥ롼ײԤޤ .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 - -.LP -.RE .LP .TP 3 \-nodeprecated -推奨されない API をドキュメントに生成しないようにします。このオプションを指定すると、\-nodeprecatedlist オプションを指定した場合と同じ効果があることに加えて、ドキュメントのほかの部分全体でも、推奨されない API が生成されません。このオプションは、コードを記述しているとき、推奨されないコードによって気を散らされたくない場合に便利です。 +侩ʤ API ɥȤʤ褦ˤޤΥץꤹȡ\-nodeprecatedlist ץꤷƱ̤뤳Ȥ˲äơɥȤΤۤʬΤǤ⡢侩ʤ API ޤ󡣤Υץϡɤ򵭽ҤƤȤ侩ʤɤˤäƵ򻶤餵줿ʤǤ .LP .TP 3 \-nodeprecatedlist -推奨されない API のリストを含むファイル (deprecated\-list.html)、およびナビゲーションバーのそのページへのリンクが生成されないようにします。ただし、ドキュメントのほかの部分では、推奨されない API が生成されます。このオプションは、推奨されない API がソースコードに含まれておらず、ナビゲーションバーをすっきりと見せたい場合に便利です。 +侩ʤ API ΥꥹȤޤե (deprecated\-list.html)ӥʥӥСΤΥڡؤΥ󥯤ʤ褦ˤޤɥȤΤۤʬǤϡ侩ʤ API ޤΥץϡ侩ʤ API ɤ˴ޤޤƤ餺ʥӥС򤹤äȸǤ .LP .TP 3 \-nosince -生成ドキュメントから、@since タグに対応する「導入されたバージョン」 セクションを省略します。 +ɥȤ顢@since бƳ줿С άޤ .LP .TP 3 \-notree -生成されるドキュメントからクラスおよびインタフェースの階層ページを省略します。これらのページには、ナビゲーションバーの「ツリー」ボタンからアクセスできます。デフォルトでは、階層が生成されます。 +ɥȤ饯饹ӥ󥿥եγإڡάޤΥڡˤϡʥӥСΡ֥ĥ꡼ץܥ󤫤饢ǤޤǥեȤǤϡؤޤ .LP .TP 3 \-noindex -生成ドキュメントから、索引を省略します。デフォルトでは、索引が生成されます。 +ɥȤ顢άޤǥեȤǤϡޤ .LP .TP 3 \-nohelp -出力の各ページの最上部と最下部にあるナビゲーションバーから [ヘルプ] リンクを省略します。 +ϤγƥڡκǾȺDzˤʥӥС֥إסץ󥯤άޤ .LP .TP 3 \-nonavbar -生成されるページの最上部と最下部に表示されるナビゲーションバー、ヘッダー、およびフッターを生成しないようにします。このオプションは、bottom オプションには影響を与えません。\f2\-nonavbar\fP オプションは、印刷するためだけにファイルを PostScript または PDF に変換する場合など、内容だけが重要で、ナビゲーションの必要がない場合に便利です。 +ڡκǾȺDzɽʥӥСإåӥեåʤ褦ˤޤΥץϡbottom ץˤϱƶͿޤ \f2\-nonavbar\fP ץϡ뤿˥ե PostScript ޤ PDF ѴʤɡƤפǡʥӥɬפʤǤ .LP .TP 3 \-helpfile\ path/filename -上部と下部のナビゲーションバーの [ヘルプ] リンクのリンク先となる代替ヘルプファイル \f2path/filename\fP のパスを指定します。このオプションが指定されていない場合、Javadoc ツールは、ハードコードされているヘルプファイル \f2help\-doc.html\fP を自動的に作成します。このオプションを使うと、そのデフォルトの動作をオーバーライドできます。\f2filename\fP にはどんなファイル名でも指定でき、\f2help\-doc.html\fP には限定されません。例を示します。 +ȲΥʥӥСΡ֥إסץ󥯤ΥȤʤإإץե \f2path/filename\fP ΥѥꤷޤΥץ󤬻ꤵʤȡJavadoc ġϡġǥϡɥɤƤإץե \f2help\-doc.html\fP ưޤΥץȤȡΥǥեȤư򥪡С饤ɤǤޤ\f2filename\fP ˤϤɤʥե̾ǤǤ \f2help\-doc.html ˤϸꤵޤ\fP Javadoc ġϡʥӥСΥ󥯤ɬפ˱Ĵޤ򼨤ޤ .nf \f3 .fl @@ -5001,7 +3498,7 @@ o .fi .TP 3 \-stylesheetfile\ path/filename -代替 HTML スタイルシートファイルのパスを指定します。このオプションが指定されていない場合、Javadoc ツールは、ハードコードされているスタイルシートファイル \f2stylesheet.css\fP を自動的に作成します。このオプションを使うと、そのデフォルトの動作をオーバーライドできます。\f2filename\fP にはどんなファイル名でも指定でき、\f2stylesheet.css\fP には限定されません。例を示します。 + HTML 륷ȥեΥѥꤷޤΥץ󤬻ꤵʤȡJavadoc ġϡġǥϡɥɤƤ륹륷ȥե \f2stylesheet.css\fP ưޤΥץȤȡΥǥեȤư򥪡С饤ɤǤޤ\f2filename\fP ˤϤɤʥե̾ǤǤ \f2stylesheet.css ˤϸꤵޤ\fPȤС .nf \f3 .fl @@ -5010,22 +3507,22 @@ o .fi .TP 3 \-serialwarn -@serial タグがない場合は、コンパイル時に警告を生成します。デフォルトでは、Javadoc 1.2.2 以降のバージョンでは、直列化の警告は生成されません。1.2.2 より前の初期バージョンでは、警告が生成されます。このオプションを使用すると、直列化の警告が表示されるので、デフォルトの直列化可能フィールドと \f2writeExternal\fP メソッドを適切にドキュメント化するのに役立ちます。 +@serial ʤϡѥ˷ٹޤǥեȤǤϡJavadoc 1.2.2 ʹߤΥСǤϡľ󲽤ηٹޤ1.2.2 νСǤϡٹޤΥץѤȡľ󲽤ηٹɽΤǡǥեȤľ󲽲ǽեɤ \f2writeExternal\fP ᥽åɤŬڤ˥ɥȲΤΩޤ .LP .TP 3 \-charset\ name -このドキュメント用の HTML 文字セットを指定します。この名前は、 +ΥɥѤ HTML ʸåȤꤷޤ̾ϡ .na \f2IANA Registry\fP @ .fi -http://www.iana.org/assignments/character\-sets で与えられた、推奨される MIME 名でなければなりません。例を示します。 +http://www.iana.org/assignments/character\-sets Ϳ줿侩 MIME ̾ǤʤФʤޤ󡣤ȤС .nf \f3 .fl % \fP\f3javadoc \-charset "iso\-8859\-1" mypackage\fP .fl .fi -生成されるすべてのページの先頭に、次の行が挿入されます。 +뤹٤ƤΥڡƬˡιԤޤ .nf \f3 .fl @@ -5033,34 +3530,34 @@ http://www.iana.org/assignments/character\-sets で与えられた、推奨さ .fl \fP .fi -この META タグについては、 + META ˤĤƤϡ .na -\f2HTML の標準\fP @ +\f2HTML ɸ\fP @ .fi -http://www.w3.org/TR/REC\-html40/charset.html#h\-5.2.2 (4197265 および 4137321) を参照してください。 +http://www.w3.org/TR/REC\-html40/charset.html#h\-5.2.2 (4197265 4137321) 򻲾ȤƤ .LP -\-encoding および \-docencoding も参照してください。 +\-encoding \-docencoding ⻲ȤƤ .LP .TP 3 \-docencoding\ name -生成される HTML ファイルのエンコーディングを指定します。この名前は、 + HTML եΥ󥳡ǥ󥰤ꤷޤ̾ϡ .na \f2IANA Registry\fP @ .fi -http://www.iana.org/assignments/character\-sets で与えられた、推奨される MIME 名でなければなりません。このオプションを省略しながら \-encoding を使用した場合、生成される HTML ファイルのエンコードは、\-encoding によって決められます。例: +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 も参照してください。 +\-encoding \-charset ⻲ȤƤ .LP .TP 3 \-keywords -HTML メタキーワードタグを、クラスごとに生成されるファイルに追加します。これらのタグは、メタタグを検索するサーチエンジンがページを見つける場合に役立ちます。インターネット全体を検索する多くのサーチエンジンは、ページがメタタグを誤用しているため、メタタグを調べません。 一方、検索を自身の Web サイトに限定している企業では、サーチエンジンがメタタグを調べることによってメリットを得られます。 +HTML ᥿ɥ򡢥饹ȤեɲäޤΥϡ᥿򸡺륵󥸥󤬥ڡ򸫤ĤΩޤ󥿡ͥåΤ򸡺¿Υ󥸥ϡڡ᥿ѤƤ뤿ᡢ᥿Ĵ٤ޤ󡣰򼫿Ȥ Web Ȥ˸ꤷƤȤǤϡ󥸥󤬥᥿Ĵ٤뤳ȤˤäƥåȤޤ .LP -メタタグには、クラスの完全修飾名と、フィールドおよびメソッドの修飾されていない名前が含まれます。コンストラクタは、クラス名と同じであるため含まれません。たとえば、クラス String は次のキーワードで開始します。 +᥿ˤϡ饹δ̾ȡեɤӥ᥽åɤνƤʤ̾ޤޤޤ󥹥ȥ饯ϡ饹̾ƱǤ뤿ޤޤޤ󡣤ȤС饹 String ϼΥɤdzϤޤ .nf \f3 .fl @@ -5077,29 +3574,29 @@ HTML メタキーワードタグを、クラスごとに生成されるファイ .LP .TP 3 \-tag\ \ tagname:Xaoptcmf:"taghead" -Javadoc ツールがドキュメンテーションコメント内の引数を 1 つ取る単純なカスタムブロックタグ \f2@\fP\f2tagname\fP を解釈できるようにします。これにより、Javadoc ツールはタグ名の「スペルチェック」を行うことができるので、ソースコード内のすべてのカスタムタグに \f2\-tag\fP オプションを組み込むことをお勧めします。今回の実行で出力されないタグは、\f2X\fP を付けて無効にします。 +Javadoc ġ뤬ɥơ󥳥ΰ 1 ļñʥ֥å \f2@\fP\f2tagname\fP Ǥ褦ˤޤJavadoc ġϥ̾Ρ֥ڥåפԤȤǤΤǡ¸ߤ뤹٤ƤΥॿˤĤơ \f2\-tag\fP ץޤ뤳ȤפǤμ¹ԤǤϽϤʤϡX դ̵ \f2ˤޤ\fP .LP -コロン (\f4:\fP) は常に区切り文字になります。\f2tagname\fP でコロンを使用するには、「タグ名でのコロンの使用」を参照してください。 + (\f4:\fP) ˶ڤʸˤʤޤtagname \f2ǥѤˡˤĤƤϡ\fP ֥̾ǤΥλѡפ򻲾ȤƤ .LP -\f2\-tag\fP オプションは、タグの見出し「taghead」を太字で出力します。 その次の行には、このオプションの引数で指定したテキストが続きます。 以下の例を参照してください。ブロックタグと同様、この引数のテキストにはインラインタグを含めることができます。 このインラインタグも解釈されます。出力は、引数を 1 つ取る標準のタグ (\f2@return\fP、\f2@author\fP など) の出力とよく似ています。\f2taghead\fP を省略すると、\f2tagname\fP が見出しとして表示されます。 +\f2\-tag\fP ץϡθФtagheadפǽϤޤ μιԤˤϡΥץΰǻꤷƥȤ³ޤ ʲ򻲾ȤƤ֥åƱ͡ΰΥƥȤˤϥ饤󥿥ޤ뤳ȤǤޤΥ饤󥿥ᤵޤϤϡ 1 ļɸΥ ( \f2@return\fP \f2@author\fP ʤ) νϤȤ褯Ƥޤ\f2taghead\fP άȡ\f2tagname\fP ФȤɽޤ .LP -\f3タグの配置\fP \- 引数の \f4Xaoptcmf\fP 部分は、ソースコード内のタグを配置できる位置と、\f2X\fP を使ってこのタグを無効にできるかどうかを特定します。タグの配置位置を制限しない場合は \f4a\fP を指定します。 それ以外の文字の組み合わせも可能です。 \f4X\fP (タグの無効化) +\f3\fP \- \f4Xaoptcmf\fP ʬϡΥ֤Ǥ֤ȡ ȤäƤΥ̵ˤǤ뤫ɤꤷޤ \f2X\fP). ְ֤¤ʤ \f4a\fP ꤷޤʳʸȤ߹碌ǽǤ \f4X\fP (̵) .br -\f4a\fP (すべての位置) +\f4a\fP (٤) .br -\f4o\fP (概要) +\f4o\fP () .br -\f4p\fP (パッケージ) +\f4p\fP (ѥå) .br -\f4t\fP (型すなわちクラスおよびインタフェース) +\f4t\fP (Ĥޤꥯ饹ȥ󥿥ե) .br -\f4c\fP (コンストラクタ) +\f4c\fP (󥹥ȥ饯) .br -\f4m\fP (メソッド) +\f4m\fP (᥽å) .br -\f4f\fP (フィールド) +\f4f\fP (ե) .LP -\f3シングルタグの例\fP \- ソースコード内の任意の位置で使用で気るタグのタグオプションの例を示します。 +\f3󥰥륿\fP \- Ǥդΰ֤ǻѤǤ륿Υץ򼨤ޤ .nf \f3 .fl @@ -5107,7 +3604,7 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -@todo をコンストラクタ、メソッド、フィールドのみで使用する場合は、以下のオプションを使用します。 +@todo 򥳥󥹥ȥ饯᥽åɡեɤΤߤǻѤϡʲΥץѤޤ .nf \f3 .fl @@ -5115,7 +3612,7 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -上の例の最後のコロン (\f2:\fP) は、パラメータ区切り子ですが、見出しテキストの一部になっています (以下の例を参照)。次の例のように、\f2@todo\fP タグを含むソースコードでは、いずれかのタグオプションを使用します。 +κǸΥ (\f2:\fP) ϡѥ᡼ڤҤǤФƥȤΰˤʤäƤޤ (ʲ򻲾)Τ褦ˡ \f2@todo\fP ޤॽɤǤϡ줫ΥץѤޤ .nf \f3 .fl @@ -5123,7 +3620,7 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -\f3タグ名にコロンを使用する\fP \- コロン (:) をバックスラッシュでエスケープすると、コロンをタグ名に使用することができます。このドキュメンテーションコメントの中では、次のように使用します。 +\f3̾˥Ѥ\fP \- (:) Хååǥפȡ򥿥̾˻Ѥ뤳ȤǤޤΥɥơ󥳥ȤǤϡΤ褦˻Ѥޤ .nf \f3 .fl @@ -5135,7 +3632,7 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -でこのタグオプションを使用すると、 +ǤΥץѤȡ .nf \f3 .fl @@ -5143,9 +3640,9 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -\f3タグ名のスペルチェック (タグの無効化)\fP \- ソースコード内に配置した一部のカスタムタグの出力を抑制したい場合があります。この場合も、ソースコード内にすべてのタグを配置し、出力を抑制しないタグを有効にし、出力を抑制するタグを無効にします。タグを無効にするには、\f2X\fP を指定します。指定しないと、そのタグは有効になります。 これにより、Javadoc ツールは、検出したタグが入力ミスなどによる未知のタグであるかどうかを特定できます。未知のタグを検出した場合、Javadoc ツールは警告を出力します。 +\f3̾Υڥå (̵)\fP \- ֤ΥॿνϤ礬ޤξ⡢ˤ٤ƤΥ֤ϤʤͭˤϤ륿̵ˤޤ \f2X\fP ¸ߤϥ̵ˤʤꡢ¸ߤʤϥͭˤʤޤˤꡢJavadoc ġϡФϥߥʤɤˤ̤ΤΥǤ뤫ɤǤޤ̤ΤΥ򸡽Ф硢Javadoc ġϷٹϤޤ .LP -すでに配置されている値に \f2X\fP を追加できます。 こうしておけば、\f2X\fP を削除するだけでタグを有効にすることができます。たとえば、@todo タグの出力を抑制したい場合、次のように指定します。 +Ǥ֤Ƥͤ \f2X\fP ɲäǤޤƤС \f2X ǥͭˤ뤳ȤǤޤ\fPȤС@todo νϤ硢Τ褦˻ꤷޤ .nf \f3 .fl @@ -5153,7 +3650,7 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -さらに単純な指定方法もあります。 +ñʻˡ⤢ޤ .nf \f3 .fl @@ -5162,13 +3659,13 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 \fP .fi .LP -構文 \f2\-tag todo:X\fP は、\f2@todo\fP が taglet で定義されている場合も有効です。 +ʸ \f2\-tag todo:X\fP ϡ \f2@todo\fP åȤƤƤͭǤ .LP -\f3タグの順序\fP \- \f2\-tag\fP (および \f2\-taglet\fP) オプションの順序によって、その出力順序が決定します。カスタムタグと標準タグを組み合わせて使用することもできます。標準タグのタグオプションは、順序を決定するためだけのプレースホルダです。これらは標準タグ名のみを使用します。(標準タグの小見出しは変更できません。)これについては、以下の例で説明します。 +\f3ν\fP \- \f2\-tag\fP ( \f2\-taglet\fP) ץνˤäơνϽ礬ޤޤॿɸॿȤ߹碌ƻѤ뤳ȤǤޤɸॿΥץϡꤹ뤿Υץ졼ۥǤɸॿ̾ΤߤѤޤ(ɸॿξФѹǤޤ)ˤĤƤϡʲޤ .LP -\f2\-tag\fP がない場合、\f2\-taglet\fP の位置によってその順序が決定します。タグが両方とも存在する場合、コマンド行の最後にあるほうがその順序を決定します。これは、タグやタグレットがコマンド行に指定された順番に処理されるためです。たとえば、\f2\-taglet\fP と \f2\-tag\fP の両方が todo という名前を持っている場合、コマンド行の最後にあるほうが順序を決定します。 +\f2\-tag\fP ¸ߤʤϡ \f2\-taglet\fP ΰ֤ˤäƤνޤޤξȤ¸ߤ硢ޥɹԤκǸˤۤνꤷޤϡ䥿åȤޥɹԤ˻ꤵ줿֤˽뤿ǤȤС \f2\-taglet\fP \f2\-tag\fP ξ todo Ȥ̾äƤ硢ޥɹԤκǸˤۤꤷޤ .LP -\f3タグの完全セットの例\fP \- この例では、出力の「Parameters」と「Throws」の間に「To Do」を挿入します。X を使用して、@example が、ソースコード内の今回の実行では出力されないタグであることを指定します。@argfile を使用する場合は、次のように、引数ファイル内の別々の行にタグを配置できます。 行の継続を示す文字は不要です。 +\f3δåȤ\fP \- ǤϡϤΡParametersפȡThrowsפδ֤ˡTo DoפޤX Ѥơ@example κμ¹ԤǤϽϤʤǤ뤳Ȥꤷޤ@argfile ѤϡΤ褦ˡե̡ιԤ˥֤ǤޤԤη³򼨤ʸפǤ .nf \f3 .fl @@ -5187,37 +3684,37 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 \fP .fi .LP -javadoc がドキュメンテーションコメントを解析する際に検出されたタグのうち、標準タグでも \f2\-tag\fP や \f2\-taglet\fP で渡されるタグでもないものは、未知のタグの見なされます。 この場合、警告がスローされます。 +javadoc ɥơ󥳥ȤϤݤ˸줿ΤɸॿǤ⡢ \f2\-tag\fP \f2\-taglet\fP Ϥ줿ǤʤΤϤ٤̤ΤΥȤߤʤ졢ٹ𤬥ޤ .LP -標準タグは、最初、デフォルトの順序でリスト内に内部的に格納されます。\f2\-tag\fP オプションを使用すると、このリストに追加されるタグ、すなわち標準タグの位置がデフォルトの位置から移動します。つまり、標準タグに \f2\-tag\fP オプションを付けなければ、これらはデフォルトの位置に配置されたままになります。 +ɸॿϡǽ顢ǥեȤνǥꥹŪ˳Ǽޤ \f2\-tag\fP ץѤȡΥꥹȤɲä륿ʤɸॿΰ֤ǥեȤΰ֤ưޤĤޤꡢɸॿ \f2\-tag\fP ץդʤСϥǥեȤΰ֤֤줿ޤޤˤʤޤ .LP -\f3競合の回避\fP \- 固有の名前空間を分割するには、パッケージに使用されている \f2com.mycompany.todo\fP のように、ドット (.) 区切りの命名規則を使用します。Sun は、今後も名前にドットを含まない標準タグを作成します。ユーザーが作成したタグは、Sun が提供する同じ名前のタグの動作をオーバーライドします。つまり、ユーザーが \f2@todo\fP という名前のタグまたはタグレットを作成している場合、Sun があとから同じ名前の標準タグを作成しても、そのタグまたはタグレットは元の動作を保持します。 +\f3β\fP \- ֤ͭ̾٤ʬˤϡѥå˻ѤƤ \f2com.mycompany.todo Ȥ̾Τ褦ˡɥå (.) ڤ국Ȥ̾Ȥޤ\fPOracle ϡ̾˥ɥåȤޤޤʤɸॿޤ桼ϡOracle 󶡤Ʊ̾Υư򥪡С饤ɤޤĤޤꡢ \f2@todo\fP Ȥ̾ΥޤϥåȤ桼硢Oracle θƱ̾ɸॿȤƤ⡢ưϾ˥桼ưƱˤʤޤ .LP -\f3注釈 vs. Javadoc タグ\fP \- 一般に、追加する必要のあるマークアップが、ドキュメンテーションに影響を与えたりドキュメンテーションを生成したりするためのものである場合、そのマークアップは javadoc タグにすべきです。 それ以外の場合は注釈にすべきです。 +\f3 vs. Javadoc \fP \- ̤ˡɲäɬפΤޡåפɥơ˱ƶͿɥơꤹ뤿ΤΤǤ硢Υޡåפ javadoc ˤ٤Ǥʳξˤ٤Ǥ .na -\f2「Comparing Annotations and Javadoc Tags」\fP @ +\f2Comparing Annotations and Javadoc Tags\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#annotationsを参照してください。 +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#annotations򻲾ȤƤ .LP -\-taglet オプションを使用して、より複雑なブロックタグやカスタムインラインタグを 作成することができます。 +\-taglet ץѤơʣʥ֥å䥫।饤󥿥 뤳ȤǤޤ .LP .TP 3 \-taglet\ \ class -そのタグのドキュメントの生成に使うドックレットを起動するためのクラスファイルを指定します。クラスの完全指定名を指定してください。このタグレットは、カスタムタグのテキスト引数の数も定義します。タグレットは、これらの引数を受け付け、処理し、出力を生成します。外部ドキュメントとサンプルタグレットについては、以下を参照してください。 +ΥΥɥȤ˻ȤɥååȤư뤿Υ饹եꤷޤ饹δ̾ꤷƤΥåȤϡॿΥƥȰοޤåȤϡΰդϤޤɥȤȥץ륿åȤˤĤƤϡʲ򻲾ȤƤ .RS 3 .TP 2 o .na -\f2「タグレットの概要」\fP @ +\f2֥åȤγס\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/javadoc/taglet/overview.html .RE .LP -タグレットは、標準タグまたはインラインタグで便利です。タグレットは任意の数の引数をとることができます。 また、テキストを太字にする、箇条書きを作成する、テキストをファイルに書き出す、その他のプロセスを開始するなどのカスタム動作を実装できます。 +åȤϡ֥åޤϥ饤󥿥ǤåȤǤդοΰȤ뤳ȤǤޤޤƥȤˤ롢վ񤭤롢ƥȤե˽񤭽Ф¾Υץ򳫻ϤʤɤΥưǤޤ .LP -タグレットで指定できるのは、タグの配置場所と配置形式のみです。その他のすべての決定は、ドックレットによって行われます。タグレットを使用しても、包含クラスのリストからクラス名を削除するなどの処理は実行できません。ただし、タグのテキストをファイルに出力したり、別のプロセスをトリガーするなどの副作用は得られます。 +åȤǻǤΤϡ־ַΤߤǤ¾Τ٤ƤηϡɥååȤˤäƹԤޤåȤѤƤ⡢ޥ饹ΥꥹȤ饯饹̾ʤɤνϼ¹ԤǤޤ󡣤ΥƥȤե˽Ϥꡢ̤ΥץȥꥬʤɤѤޤ .LP -タグレットのパスを指定するには、\f2\-tagletpath\fP オプションを使用します。以下は、生成されるページの「Parameter」と「Throws」の間に「To Do」タグレットを挿入する例です。 +åȤΥѥꤹˤϡ\f2\-tagletpath\fP ץѤޤʲϡڡΡParameterפȡThrowsפδ֤ˡTo DoץåȤǤ .nf \f3 .fl @@ -5238,25 +3735,25 @@ http://java.sun.com/javase/6/docs/technotes/guides/javadoc/taglet/overview.html \fP .fi .LP -\f2\-tag\fP オプションの代わりに \f2\-taglet\fP オプションを使用することもできますが、読みやすさを考慮するなら、\f2\-tag\fP オプションを使用したほうがよいでしょう。 +ޤ \f2\-taglet\fP ץ \f2\-tag\fP ץ˻Ѥ뤳ȤǤޤȲ㲼ǽޤ .LP .TP 3 \-tagletpath\ \ tagletpathlist -taglet クラスファイル (.class) の検索パスを指定します。\f2tagletpathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパスの以下すべてのサブディレクトリを検索します。 +taglet 饹ե (.class) θѥꤷޤ\f2tagletpathlist\fP ˤϡ (\f2:\fP) ǶڤäʣΥѥޤ뤳ȤǤޤJavadoc ġϡꤵ줿ѥʲΤ٤ƤΥ֥ǥ쥯ȥ򸡺ޤ .LP .TP 3 \-docfilessubdirs\ -\f2doc\-files\fP ディレクトリの深いコピーを有効にします。つまり、コピー先には、サブディレクトリとすべてのコンテンツがコピーされます。たとえば、\f2doc\-files/example/images\fP ディレクトリとその中のファイルがコピーされます。ここでも、サブディレクトリを除外する指定が可能です。 +\f2doc\-files\fPץǥ쥯ȥοԡͭˤޤĤޤꡢԡˤϡ֥ǥ쥯ȥȤ٤ƤΥƥĤԡޤȤСǥ쥯ȥ \f2doc\-files/example/images\fP ȤΤ٤ƤƤԡޤǤ⡢֥ǥ쥯ȥ꤬ǽǤ .LP .TP 3 \-excludedocfilessubdir\ \ name1:name2... -所定の名前の \f2doc\-files\fP サブディレクトリを除外します。これにより、SCCS とその他のソースコード制御サブディレクトリのコピーを防ぎます。 +\f2doc\-files\fPפΡꤵ줿̾Υ֥ǥ쥯ȥ򤹤٤ƽޤˤꡢSCCS Ȥ¾Υ極֥ǥ쥯ȥΥԡɤޤ .LP .TP 3 \-noqualifier\ \ all\ | \ packagename1:packagename2:... -出力されるクラス名の先頭のパッケージ名 (パッケージ修飾子) を省略します。\f2\-noqualifier\fP の引数として \f2all\fP を指定した場合、すべてのパッケージ修飾子がすべて省略されます。 削除する複数のパッケージ名をコロンで区切って、ワイルドカードとともに指定することもできます。クラスまたはインタフェース名が表示される位置からパッケージ名が削除されます。 +Ϥ륯饹̾ƬΥѥå̾ (ѥå) άޤ \f2\-noqualifier\fP ΰϡ\f2all\fP(٤ƤΥѥåҤά)ҤȤƺ٤ѥåΥڤꥹ (磻ɥɤ)Τ줫Ȥʤޤ饹ޤϥ󥿥ե̾ɽ֤ѥå̾ޤ .LP -次の例では、すべてのパッケージ修飾子を省略します。 +Ǥϡ٤ƤΥѥåҤάޤ .nf \f3 .fl @@ -5264,7 +3761,7 @@ taglet クラスファイル (.class) の検索パスを指定します。\f2tag .fl \fP .fi -次の例では、パッケージ修飾子 java.lang および java.io を省略します。 +Ǥϡѥå java.lang java.io άޤ .nf \f3 .fl @@ -5272,7 +3769,7 @@ taglet クラスファイル (.class) の検索パスを指定します。\f2tag .fl \fP .fi -次の例では、java で始まるパッケージ修飾子と com.sun というサブパッケージ (javax ではない) を省略します。 +Ǥϡjava ǻϤޤѥåҤ com.sun Ȥ֥ѥå (javax ǤϤʤ) άޤ .nf \f3 .fl @@ -5280,63 +3777,54 @@ taglet クラスファイル (.class) の検索パスを指定します。\f2tag .fl \fP .fi -パッケージ修飾子が上記の動作に従って表示される場合、名前は適切に短くされます。 詳細は「名前の表示方法」を参照してください。この規則は、\f2\-noqualifier\fP を使用したかどうかにかかわらず有効です。 +ѥåҤ嵭ư˽äɽ硢̾Ŭڤûޤܺ٤ϡ̾ɽˡפ򻲾ȤƤε§ϡ \f2\-noqualifier\fP Ѥ뤫ɤˤ餺ͭǤ .LP .TP 3 \-notimestamp\ -タイムスタンプが抑制されます。 各ページ先頭近くにある、生成された HTML 内の HTML コメントでタイムスタンプが隠されます。Javadoc を 2 つのソースベースで実行し、それらに対して diff を実行するときにこのオプションを使用すると、タイムスタンプによって diff が発生しなくなるので便利です (このオプションを使用しないと、各ページで diff になります)。タイムスタンプには Javadoc のバージョン番号が含まれており、次のようになります。 +ॹפޤƥڡƬ᤯ˤ롢줿 HTML HTML ȤǥॹפޤJavadoc 2 ĤΥ١Ǽ¹ԤФ diff ¹ԤȤˤΥץѤȡॹפˤä diff ȯʤʤΤǤ (ΥץѤʤȡƥڡ diff ˤʤޤ)ॹפˤ Javadoc ΥСֹ椬ޤޤƤꡢΤ褦ˤʤޤ .nf \f3 .fl - <!\-\- Generated by javadoc (build 1.5.0\-internal) on Tue Jun 22 09:57:24 PDT 2004 \-\-> + <!\-\- Generated by javadoc (build 1.5.0_01) on Thu Apr 02 14:04:52 IST 2009 \-\-> .fl \fP .fi .LP .TP 3 \-nocomment\ -主説明およびすべてのタグを含むコメント本文全体を抑制し、宣言だけを生成します。このオプションにより、元は異なる目的のためだったソースファイルを再利用し、新しいプロジェクトの早い段階でスケルトン HTML ドキュメントを作成できるようになりました。 -.RE -.SH "コマンド行引数ファイル" -.LP -.LP -\f2javadoc\fP のコマンド行を短くしたり簡潔にしたりするために、\f2javadoc\fP コマンドに対する引数 (\f2\-J\fP オプションを除く) が入った 1 つ以上のファイルを指定することができます。このことを利用すれば、どのオペレーティングシステム上でも、任意の長さの javadoc コマンドを作成できます。 -.LP -.LP -引数ファイルには、javac のオプションとソースファイル名を自由に組み合わせて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に空白が含まれている場合は、そのファイル名全体を二重引用符で囲みます。 +Ӥ٤ƤΥޤॳʸΤޤΥץˤꡢϰۤʤŪΤäեѤץȤᤤʳǥȥ HTML ɥȤǤ褦ˤʤޤ .LP +.TP 3 +\-sourcetab tabLength +dzƥ֤οꤷޤ +.RE +.SH "ޥɹ԰ե" .LP -引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。引数ファイル内のファイル名リストでは、ワイルドカード (*) は使用できません。たとえば、\f2*.java\fP とは指定できません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、\f2\-J\fP オプションもサポートされていません。 このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 +javadoc ΥޥɹԤûʷˤꤹ뤿ˡ \f2javadoc\fP ޥɤФ ( \f2\-J\fP ץ) ä 1 İʾΥեꤹ뤳ȤǤޤΤȤѤСɤΥڥ졼ƥ󥰥ƥǤ⡢ǤդĹ javadoc ޥɤǤޤ .LP +եˤϡjavac Υץȥե̾ͳȤ߹碌ƵҤǤޤեγưϡڡޤϲԤǶڤޤե̾˶򤬴ޤޤƤϡΥե̾ΤŰǰϤߤޤ .LP -javadoc を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。javadoc は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +եΥե̾ϡߤΥǥ쥯ȥ꤫鸫Хѥˤʤޤեΰ֤鸫ХѥǤϤޤ󡣰եΥե̾ꥹȤǤϡ磻ɥ (*) ϻѤǤޤ󡣤ȤС \f2*.java\fP ȤϻǤޤ󡣰եΰ \f2@\fP ʸѤơʣΥեƵŪ˲᤹뤳ȤϥݡȤƤޤ󡣤ޤ \f2\-J\fP ץ⥵ݡȤƤޤ ΥץϵưġϤޤưġǤϰե򥵥ݡȤƤʤǤ .LP +javadoc ¹ԤȤˡưեΥѥȥե̾Ƭ \f2@\fP ʸդϤޤjavadoc ϡ\f2@\fP ʸǻϤޤ򸫤ĤȡΥեƤŸưꥹȤޤ .SS -引数ファイルを 1 つ指定する例 -.LP -.LP -\f2argfile\fP という名前の引数ファイルにすべての Javadoc 引数を格納し、次のように使用することができます。 +ե 1 Ļꤹ .LP +Τ褦ˡ\f2argfile\fPפȤ̾ñΰեˡJavadoc Τ٤ƤΰǼޤ .nf \f3 .fl % \fP\f3javadoc @argfile\fP .fl .fi - -.LP -.LP -この引数ファイルには、次の例で示されている 2 つのファイルの内容を両方とも入れることができます。 .LP +ΰեˤϡǼƤ 2 ĤΥեƤξȤ뤳ȤǤޤ .SS -引数ファイルを 2 つ指定する例 -.LP -.LP -Javadoc オプション用に 1 つ、ソースファイル名用に 1 つというように、2 つの引数ファイルを作成し、次のようにして使用することができます。なお、このあとのリストでは、行の継続文字を使用していません。 -.LP +ե 2 Ļꤹ .LP -以下の内容を含む \f2options\fP という名前のファイルを作成します。 +2 ĤΰեǤޤ1 Ĥ Javadoc ץѡ⤦ 1 Ĥϥѥå̾ޤϥե̾ѤǤʤΥꥹȤǤϹԷ³ʸѤƤޤ .LP +Ƥޤࡢ\f2options\fPפȤ̾Υեޤ .nf \f3 .fl @@ -5346,27 +3834,24 @@ Javadoc オプション用に 1 つ、ソースファイル名用に 1 つとい .fl \-splitindex .fl - \-windowtitle 'Java 2 Platform v1.3 API Specification' + \-windowtitle 'Java SE 7 API Specification' .fl - \-doctitle 'Java(TM) 2 Platform 5.0 API Specification' + \-doctitle 'Java SE 7 API Specification' .fl - \-header '<b>Java 2 Platform </b><br><font size="\-1">5.0</font>' + \-header '<b>Java(TM) SE 7</b>' .fl - \-bottom 'Copyright 1993\-2000 Sun Microsystems, Inc. All Rights Reserved.' + \-bottom 'Copyright © 1993\-2011 Oracle and/or its affiliates. All rights reserved.' .fl \-group "Core Packages" "java.*" .fl - \-overview /java/pubs/ws/1.5/src/share/classes/overview\-core.html + \-overview /java/pubs/ws/1.7.0/src/share/classes/overview\-core.html .fl - \-sourcepath /java/pubs/ws/1.5/src/share/classes + \-sourcepath /java/pubs/ws/1.7.0/src/share/classes .fl \fP .fi - -.LP -.LP -以下の内容を含む \f2packages\fP という名前のファイルを作成します。 .LP +Ƥޤࡢ\f2packages\fPפȤ̾Υեޤ .nf \f3 .fl @@ -5378,115 +3863,89 @@ Javadoc オプション用に 1 つ、ソースファイル名用に 1 つとい .fl \fP .fi - -.LP -.LP -そのあと、次のコマンドを使用して javadoc を実行します。 .LP +ΤȡΥޥɤѤ javadoc ¹Ԥޤ .nf \f3 .fl % \fP\f3javadoc @options @packages\fP .fl .fi - -.LP .SS -パス付きの引数ファイルの例 -.LP -.LP -引数ファイルには、パスを指定できます。 ただし、そのファイル内に指定されたファイル名は、現在の作業ディレクトリから見た相対パスになります。 つまり、下の例の場合は、\f2path1\fP や \f2path2\fP から見た相対パスではありません。 +ѥդΰե .LP +եˤϡѥǤޤΥե˻ꤵ줿ե̾ϡߤκȥǥ쥯ȥ꤫鸫ХѥˤʤޤĤޤꡢξϡ \f2path1\fP \f2path2\fP 鸫ХѥǤϤޤ .nf \f3 .fl % \fP\f3javadoc @path1/options @path2/packages\fP .fl .fi - -.LP .SS -オプションの引数の例 -.LP -.LP -次に、Javadoc オプションに対する引数だけを引数ファイルに格納する例を示します。ここでは、\f2\-bottom\fP を例に取り上げます。 そのオプションには、かなり長い引数を指定することがあるからです。まず、このオプションのテキスト引数になる次のような内容を含む、\f2bottom\fP という名前のファイルを作成します。 +ץΰ .LP +ˡJavadoc ץФե˳Ǽ򼨤ޤǤ \f2\-bottom\fP ץѤޤȤΤ⡢Ĺʤǽ뤫ǤΤ褦ʥƥȰޤࡢ\f2bottom\fPפȤ̾ΥեǤޤ .nf \f3 .fl -'<font size="\-1"><a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit a +<font size="\-1"> .fl -bug or feature</a><br><br>Java is a trademark or registered trademark of + <a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit a bug or feature</a><br/> .fl -Sun Microsystems, Inc. in the US and other countries.<br>Copyright 1993\-2000 Sun + Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> .fl -Microsystems, Inc. 901 San Antonio Road,<br>Palo Alto, California, 94303, U.S.A. + Oracle is a registered trademark of Oracle Corporation and/or its affiliates. .fl -All Rights Reserved.</font>' + Other names may be trademarks of their respective owners.</font> .fl \fP .fi - -.LP -.LP -そのあと、次のようにして Javadoc ツールを実行します。 .LP +ΤȡΤ褦ˤ Javadoc ġ¹Ԥޤ .nf \f3 .fl % \fP\f3javadoc \-bottom @bottom @packages\fP .fl .fi - -.LP -.LP -また、引数ファイルの先頭に \f2\-bottom\fP オプションを組み込んでおけば、次のようにして実行できます。 .LP +뤤ϡեƬ \f2\-bottom\fP ץȤ߹ȡΤ褦˼¹ԤƤ⤫ޤޤ .nf \f3 .fl % \fP\f3javadoc @bottom @packages\fP .fl .fi -.SH "名前" -実行 -.SH "Javadoc の実行" +.SH "̾" +¹ +.SH "Javadoc μ¹" .LP +\f3Сֹ\fP \- javadoc ΥСֹȽ̤ˤϡ\f3javadoc \-J\-version\fP Ѥޤϥȥ꡼ˤɸɥååȤΥСֹ椬ޤޤޤνϤ̵ˤˤϡ \f2\-quiet\fP Ѥޤ .LP -\f3バージョン番号\fP \- javadoc のバージョン番号を判別するには、\f3javadoc \-J\-version\fP を使用します。出力ストリームには標準ドックレットのバージョン番号が含まれます。\f2\-quiet\fP で無効にできます。 -.LP -.LP -\f3公開プログラムインタフェース\fP \- Java 言語で記述されたプログラムから Javadoc ツールを起動するとき使用します。このインタフェースは \f2com.sun.tools.javadoc.Main\fP にあります (javadoc は再入可能)。詳細は、 +\f3ץ।󥿥ե\fP \- Java ǵҤ줿ץफ Javadoc ġưȤѤޤΥ󥿥ե \f2com.sun.tools.javadoc.Main ˤޤ\fP (javadoc Ϻǽ)ܺ٤ϡ .na -\f2「標準ドックレット」\fP @ +\f2ɸɥååȡ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/standard\-doclet.html#runningprogrammaticallyを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/javadoc/standard\-doclet.html#runningprogrammatically򻲾ȤƤ .LP -.LP -\f3ドックレットの実行\fP \- 下記の説明は、標準 HTML ドックレットを呼び出すためのものです。カスタムドックレットを呼び出すには、\-doclet および \-docletpath オプションを使用します。特定のドックレットを実行した完全な例については、 +\f3ɥååȤμ¹\fP \- ϡɸ HTML ɥååȤƤӽФΤΤǤɥååȤƤӽФˤϡ\-doclet \-docletpath ץѤޤΥɥååȤ¹ԤˤĤƤϡ .na -\f2MIF Doclet のドキュメント\fP @ +\f2MIF Doclet Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.htmlを参照してください。 -.LP -.SH "簡単な例" -.LP -.LP -javadoc は、パッケージ全体に対して実行することも、個々のソースファイルに対して実行することもできます。各パッケージ名は、それぞれのパッケージ名に対応するディレクトリ名を持ちます。次の例では、ソースファイルは \f2/home/src/java/awt/*.java\fP にあります。生成先ディレクトリは \f2/home/html\fP です。 +http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.html򻲾ȤƤ +.SH "ñ" .LP +javadoc ϡѥåΤФƼ¹Ԥ뤳Ȥ⡢ġΥեФƼ¹Ԥ뤳ȤǤޤƥѥå̾ϡ줾Υѥå̾бǥ쥯ȥ̾ޤǤϡե \f2/home/src/java/awt/*.java ˤޤ\fPǥ쥯ȥ \f2/home/html Ǥ\fP .SS -1 つ以上のパッケージのドキュメント化 -.LP -.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 によって、その両方の場所を指定しなければなりません。 +1 İʾΥѥåΥɥȲ .LP +ѥåɥȲˤϡΥѥåΥե (\f2*.java\fP) 򡢤ΥѥåƱ̾Υǥ쥯ȥ˳Ǽɬפޤѥå̾ ( \f2java.awt.color\fP Τ褦˥ɥåȤǶڤ줿) Ĥμ̻Ҥ鹽Ƥ硢¦μ̻Ҥ˿ʤिӤˡμ̻Ҥ꿼֥ǥ쥯ȥбƤɬפޤ ( \f2java/awt/color\fP ʤ) ñѥåΥե 2 롼פʬۤʤˤ뤽Τ褦 2 ĤΥǥ쥯ȥĥ꡼ˤ줾ǼƤ⤫ޤޤ󡣤ξΥǥ쥯ȥؤΥѥ \f2\-sourcepath\fP ꤹɬפޤ: \f2src1/java/awt/color\fP \f2src2/java/awt/color\fP .LP -javadoc を実行するには、\f2cd\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 は除外されます。 +\f3 1 \- 1 İʾΥѥåεưƵŪ˼¹\fP \- Ǥ javadoc ǤդΥǥ쥯ȥ꤫¹ԤǤ褦ˡ\-sourcepath ѤƵŪΤ \-subpackages (1.4 οץ) Ѥޤϡ \f2java\fP ǥ쥯ȥΥ֥ѥå򤿤ɤޤκݤˡ \f2java.net\fP \f2java.lang\fP 롼Ȥ˻ĥѥåϽޤΤȤ \f2java.lang Υ֥ѥå\fPǤ java.lang.ref \f2ޤ\fP .nf \f3 .fl @@ -5494,10 +3953,10 @@ o .fl .fi .LP -その他のパッケージツリーを巡回するには、\f2java:javax:org.xml.sax\fP のように、\f2\-subpackages\fP 引数にその名前を追加します。 +ۤΥѥåĥ꡼Ⲽˤɤˤϡ \f2java:javax:org.xml.sax Τ褦ˡ\fP Υѥå̾ \-subpackages \f2ΰɲäޤ\fP .TP 2 o -\f3ケース 2 \- ルートソースディレクトリに移ってから明示的なパッケージに対して実行\fP \- 完全指定のパッケージ名の親ディレクトリに移ります。次に、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。 +\f3 2 \- 롼ȥǥ쥯ȥ˰ܤäƤŪʥѥåФƼ¹\fP \- Υѥå̾οƥǥ쥯ȥ˰ܤޤˡɥȲ 1 İʾΥѥå̾ꤷ javadoc ¹Ԥޤ .nf \f3 .fl @@ -5508,7 +3967,7 @@ o .fi .TP 2 o -\f3ケース 3 \- 任意のディレクトリから実行。 ソースファイルは 1 つのディレクトリツリー内にある\fP \- このケースでは、現在のディレクトリがどこであってもかまいません。最上位パッケージの親ディレクトリを \f2\-sourcepath\fP に指定し、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。 +\f3 3 \- ǤդΥǥ쥯ȥ꤫¹ԡե 1 ĤΥǥ쥯ȥĥ꡼ˤ\fP \- ΥǤϡߤΥǥ쥯ȥ꤬ɤǤäƤ⤫ޤޤ󡣺Ǿ̥ѥåοƥǥ쥯ȥ \f2\-sourcepath\fP ˻ꤷɥȲ 1 İʾΥѥå̾ꤷ javadoc ¹Ԥޤ .nf \f3 .fl @@ -5517,7 +3976,7 @@ o .fi .TP 2 o -\f3ケース 4 \- 任意のディレクトリから実行。 ソースファイルは複数のディレクトリツリー内にある\fP \- これはケース 3 と似ていますが、パッケージが複数のディレクトリツリーに存在します。それぞれのツリーのルートへのパスを \f2\-sourcepath\fP に指定し (コロンで区切る)、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。1 つのパッケージのすべてのソースファイルが、1 つのルートディレクトリの下に存在しなければならない、ということはありません。 ソースパスとして指定された場所のどこかで見つかれば十分です。 +\f3 4 \- ǤդΥǥ쥯ȥ꤫¹ԡեʣΥǥ쥯ȥĥ꡼ˤ\fP \- ϥ 3 ȻƤޤѥåʣΥǥ쥯ȥĥ꡼¸ߤޤ줾Υĥ꡼Υ롼ȤؤΥѥ \f2\-sourcepath\fP ˻ꤷ (Ƕڤ)ɥȲ 1 İʾΥѥå̾ꤷ javadoc ¹Ԥޤ1 ĤΥѥåΤ٤ƤΥե뤬1 ĤΥ롼ȥǥ쥯ȥβ¸ߤʤФʤʤȤȤϤޤ󡣥ѥȤƻꤵ줿ΤɤǸĤнʬǤ .nf \f3 .fl @@ -5525,21 +3984,16 @@ o .fl .fi .RE - -.LP -.LP -結果: 上記のどのケースでも、\f2java.awt\fP と \f2java.awt.event\fP パッケージ内の public および protected クラスとインタフェースについて、HTML 形式のドキュメントが生成され、指定された生成先ディレクトリ (\f2/home/html\fP) に HTML ファイルが保存されます。2 つ以上のパッケージが生成されているので、ドキュメントは、パッケージのリスト、クラスのリスト、およびメインのクラスページという 3 つのフレームを持つことになります。 .LP +: ٤ƤΥǥѥå \f2java.awt\fP \f2java.awt.event\fP public protected 饹ȥ󥿥եˤĤơHTML ΥɥȤ졢ꤵ줿ǥ쥯ȥ (\f2/home/html\fP) HTML ե뤬¸ޤ2 İʾΥѥåƤΤǡɥȤϡѥåΥꥹȡ饹ΥꥹȡӥᥤΥ饹ڡȤ 3 ĤΥե졼ĤȤˤʤޤ .SS -1 つ以上のクラスのドキュメント化 -.LP -.LP -また、1 つ以上のソースファイル (\f2.java\fP) を渡して、Javadoc ツールを実行することもできます。javadoc は、次の 2 つのどちらかの方法で実行できます。 1 つは、\f2cd\fP コマンドでディレクトリを変更する方法、もう 1 つは \f2.java\fP ファイルへのパスを完全指定する方法です。相対パスは、現在のディレクトリを起点とします。ソースファイル名を渡すときは、\f2\-sourcepath\fP オプションは無視されます。アスタリスク (*) のようなコマンド行ワイルドカードを使用すると、クラスのグループを指定できます。 +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 を実行します。 +\f3 1 \- ǥ쥯ȥ˰ܤ\fP \- \f2.java\fP եΤǥ쥯ȥ˰ܤޤˡɥȲ 1 İʾΥե̾ꤷ javadoc ¹Ԥޤ .nf \f3 .fl @@ -5548,10 +4002,10 @@ o % \f3javadoc \-d /home/html Button.java Canvas.java Graphics*.java\fP .fl .fi -この例では、クラス \f2Button\fP と \f2Canvas\fP、および名前が \f2Graphics\fP で始まるクラスについて、HTML 形式のドキュメントが生成されます。パッケージ名ではなくソースファイルが javadoc に引数として渡されているので、ドキュメントは、クラスのリストとメインページという 2 つのフレームを持つことになります。 +Ǥϡ饹 \f2Button\fP \f2Canvas\fP ̾ \f2Graphics ǻϤޤ륯饹ˤĤơHTML ΥɥȤޤ\fPѥå̾ǤϤʤե뤬 javadoc ˰ȤϤƤΤǡɥȤϡ饹ΥꥹȤȥᥤڡȤ 2 ĤΥե졼ĤȤˤʤޤ .TP 2 o -\f3ケース 2 \- パッケージのルートディレクトリに移る\fP \- これは、同じルート内にある複数のサブパッケージの個々のソースファイルをドキュメント化する場合に便利です。パッケージのルートディレクトリに移り、各ソースファイルを、ルートからのパスとともに指定します。 +\f3 2 \- ѥåΥ롼ȥǥ쥯ȥ˰ܤ\fP \- ϡƱ롼ˤʣΥ֥ѥåθġΥեɥȲǤѥåΥ롼ȥǥ쥯ȥ˰ܤꡢƥե򡢥롼ȤΥѥȤȤ˻ꤷޤ .nf \f3 .fl @@ -5560,103 +4014,88 @@ o % \f3javadoc \-d /home/html java/awt/Button.java java/applet/Applet.java\fP .fl .fi -この例では、\f2Button\fP クラスおよび \f2Applet\fP クラスについて、HTML 形式のドキュメントが生成されます。 +Ǥϡ饹 \f2Button\fP \f2Applet ˤĤơHTML ΥɥȤޤ\fP .TP 2 o -\f3ケース 3 \- 任意のディレクトリから\fP \- このケースでは、現在のディレクトリがどこであってもかまいません。ドキュメント化する \f2.java\fP ファイルへの絶対パス (または、現在のディレクトリからの相対パス) を指定して javadoc を実行します。 +\f3 3 \- ǤդΥǥ쥯ȥ꤫\fP \- ΥǤϡߤΥǥ쥯ȥ꤬ɤǤäƤ⤫ޤޤ󡣥ɥȲ .java եؤХѥ (ޤϥȥǥ쥯ȥ꤫Хѥ) ꤷ \f2javadoc\fP ¹Ԥޤ .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 形式のドキュメントが生成されます。 +Ǥϡ饹 \f2Button\fP ȡ̾ \f2Graphics ǻϤޤ륯饹ˤĤơHTML ΥɥȤޤ\fP .RE - -.LP .SS -パッケージとクラスのドキュメント化 -.LP -.LP -パッケージ全体と個々のクラスを同時に指定してドキュメント化することもできます。次に前述の 2 つの例を組み合わせた例を示します。\f2\-sourcepath\fP は、パッケージへのパスに対しては使用できますが、個々のクラスのパスに対しては使用できません。 +ѥåȥ饹ΥɥȲ .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 .LP -この例では、パッケージ \f2java.awt\fP と、クラス \f2Applet\fP について、HTML 形式のドキュメントが生成されます。Javadoc ツールは、\f2Applet\fP のパッケージ名を、\f2Applet.java\fP ソースファイル内のパッケージ宣言 (その宣言がある場合) から判別します。 +Ǥϡѥå \f2java.awt\fP ȥ饹 \f2Applet ˤĤơHTML ΥɥȤޤ\fPJavadoc ġϡ \f2Applet.java ե˥ѥåС\fP ˴Ť \f2Applet Υѥå̾\fP Ƚꤷޤ +.SH "" .LP -.SH "使用例" -.LP -.LP -Javadoc ツールには多くの便利なオプションがあり、その中にはほかのオプションよりも頻繁に使われるものがあります。ここで紹介するのは、Java プラットフォーム API に対して Javadoc ツールを実行するときに使用する実際のコマンドです。Java 2 Platform, Standard Edition, v1.2 に存在する、約 1500 個の public および protected クラスについてドキュメントを生成するために、180M バイトのメモリーを使用しました。 -.LP -.LP -同じ例を 2 回掲載します。 最初の例はコマンド行から実行するもので、2 番目の例は Makefile から実行するものです。オプションの引数に絶対パスを使用しているため、任意のディレクトリからこの \f2javadoc\fP コマンドを実行できます。 +Javadoc ġˤ¿ʥץ󤬤ꡢˤϤۤΥץˤ˻ȤΤޤǾҲ𤹤ΤϡJava ץåȥե API Ф Javadoc ġ¹ԤȤ˻ѤºݤΥޥɤǤǤϡJava SE Platform, Standard Edition, v1.2 () 1500 Ĥ public protected 饹ΥɥȤ뤿ˡ180M ХȤΥ꡼Ѥޤ .LP +Ʊ 2 ǺܤޤǽϥޥɹԤ¹ԤΤǡ2 ܤ Makefile ¹ԤΤǤץΰХѥѤƤ뤿ᡢƱ \f2javadoc\fP ޥɤɤΥǥ쥯ȥ꤫Ǥ¹ԤǤޤ .SS -コマンド行の例 -.LP -.LP -次のコマンド行の例は 900 文字を超えているため、DOS などのシェルには大きすぎます。この制限を回避するには、コマンド行引数ファイルを使用します。 または、シェルスクリプトを記述します。 +ޥɹԤ .LP +ϡDOS ʤɤΰΥǤĹǽޤ¤򤹤ˤϡޥɹ԰եѤޤޤϡ륹ץȤ򵭽Ҥޤ .nf \f3 .fl -% javadoc \-sourcepath /java/jdk/src/share/classes \\ +% javadoc \-sourcepath /java/jdk/src/share/classes \\ .fl - \-overview /java/jdk/src/share/classes/overview.html \\ + \-overview /java/jdk/src/share/classes/overview.html \\ .fl - \-d /java/jdk/build/api \\ + \-d /java/jdk/build/api \\ .fl - \-use \\ + \-use \\ .fl - \-splitIndex \\ + \-splitIndex \\ .fl - \-windowtitle 'Java 2 Platform 5.0 API Specification' \\ + \-windowtitle 'Java Platform, Standard Edition 7 API Specification' \\ .fl - \-doctitle 'Java(TM) 2 Platform 5.0 API Specification' \\ + \-doctitle 'Java Platform, Standard Edition 7 API Specification' \\ .fl - \-header '<b>Java 2 Platform </b><br><font size="\-1">5.0</font>' \\ + \-header '<b>Java(TM) SE 7</b>' \\ .fl - \-bottom '<font size="\-1"><a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit + \-bottom '<font size="\-1"> .fl -a bug or feature</a><br><br>Java is a trademark or registered trademark of Sun Microsystems, + <a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit a bug or feature</a><br/> .fl -Inc. in the US and other countries.<br>Copyright 1993\-1999 Sun Microsystems, Inc. + Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> .fl -901 San Antonio Road,<br>Palo Alto, California, 94303, U.S.A. All Rights Reserved.</font>' \\ + 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.*" \\ + \-group "Extension Packages" "javax.*" \\ .fl - \-J\-Xmx180m \\ + \-J\-Xmx180m \\ .fl @packages .fl \fP .fi - -.LP -.LP -上記のコマンドで、\f2packages\fP は、処理対象のパッケージ名 (\f2java.applet java.lang\fP など) が入っているファイルの名前です。各オプションの、単一引用符で囲まれた引数の内側には、改行文字を挿入できません。たとえば、この例をコピー&ペーストする場合は、\f2\-bottom\fP オプションから改行文字を削除してください。さらに、このあとの「注」も参照してください。 .LP +嵭Υޥɤǡ \f2packages\fP ϡоݤΥѥå̾ ( \f2java.applet java.lang\fP ʤ) äƤե̾ǤƥץΡñǰϤޤ줿¦ˤϡʸǤޤ󡣤ȤС򥳥ԡڡȤϡ \f2\-bottom\fP ץ󤫤ʸƤˡΤȤΡפ⻲ȤƤ .SS -Makefile の例 +Makefile .LP -.LP -ここでは、GNU Makefile の例を示します。Windows の Makefile の例については、 +ǤϡGNU Makefile 򼨤ޤWindows Makefile ˤĤƤϡ .na -\f2Windows の Makefile の作成方法\fP @ +\f2Windows Makefile κˡ\fP @ .fi -http://java.sun.com/j2se/javadoc/faq/index.html#makefilesを参照してください。 -.LP +http://java.sun.com/j2se/javadoc/faq/index.html#makefiles򻲾ȤƤ .nf \f3 .fl @@ -5692,101 +4131,83 @@ javadoc \-\fP\f3sourcepath\fP\f3 $(SRCDIR) \\ /* Sets path for so .fl .fl -WINDOWTITLE = 'Java 2 Platform v1.2 API Specification' +WINDOWTITLE = 'Java(TM) SE 7 API Specification' .fl -DOCTITLE = 'Java(TM) 2 Platform v1.2 API Specification' +DOCTITLE = 'Java(TM) Platform Standard Edition 7 API Specification' .fl -HEADER = '<b>Java 2 Platform </b><br><font size="\-1">v1.2</font>' +HEADER = '<b>Java(TM) SE 7</font>' .fl -BOTTOM = '<font size="\-1"><a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit +BOTTOM = '<font size="\-1"> .fl - a bug or feature</a><br><br>Java is a trademark or registered trademark + <a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit a bug or feature</a><br/> .fl - of Sun Microsystems, Inc. in the US and other countries.<br>Copyright 1993\-1999 + Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> .fl - Sun Microsystems, Inc. 901 San Antonio Road,<br>Palo Alto, California, 94303, U.S.A. + Oracle is a registered trademark of Oracle Corporation and/or its affiliates. .fl - All Rights Reserved.</font>' + 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.2/src/share/classes' +SRCDIR = '/java/jdk/1.7.0/src/share/classes' .fl \fP .fi - -.LP -.LP -Makefile の引数は、単一引用符で囲みます。 -.LP .LP -\f3注\fP +Makefile ΰϡñǰϤߤޤ .LP +\f3\fP .RS 3 .TP 2 o -\f2\-windowtitle\fP オプションを省略すると、Javadoc ツールによって、ドキュメントタイトルがウィンドウタイトルにコピーされます。\f2\-windowtitle\fP のテキストは、基本的に \f2\-doctitle\fP と同じです。 ただし、HTML タグは使用しません。 HTML タグは、ウィンドウタイトルにそのままのテキストとして表示されてしまいます。 +\-windowtitle \f2ץάȡ\fP Javadoc ġˤäƥɥȥȥ뤬ɥȥ˥ԡޤ \f2\-windowtitle\fP ΥƥȤϴŪ \f2\-doctitle\fP ΤΤƱǤHTML ޤޤʤۤʤޤϡHTML raw ƥȤȤƥɥȥɽΤɤǤ .TP 2 o -この例のように \f2\-footer\fP オプションを省略すると、Javadoc ツールによって、ヘッダーテキストがフッターにコピーされます。 +ǹԤäƤ褦 \f2\-footer\fP ץάȡJavadoc ġˤäƥإåΥƥȤեå˥ԡޤ .TP 2 o -この例では必要ありませんが、\-\f2classpath\fP および \-\f2link\fP も重要なオプションです。 +Ǥɬפޤ󤬡\-\f2classpath\fP \-\f2link\fP פʥץǤ .RE - -.LP -.SH "トラブルシューティング" -.LP +.SH "ȥ֥륷塼ƥ" .SS -一般的なトラブルシューティング -.LP +Ūʥȥ֥륷塼ƥ .RS 3 .TP 2 o -\f3Javadoc FAQ\fP \- 一般的なバグおよびトラブルシューティングのヒントは、 +\f3Javadoc FAQ\fP \- ŪʥХӥȥ֥륷塼ƥ󥰤ΥҥȤϡ .na -\f2「Javadoc FAQ」\fP @ +\f2Javadoc FAQ\fP @ .fi -http://java.sun.com/j2se/javadoc/faq/index.html#B で参照できます。 +http://java.sun.com/j2se/javadoc/faq/index.html#B ǻȤǤޤ .TP 2 o -\f3バグおよび制限事項\fP \- バグの一部は、「Important Bug Fixes and Changes」 でも参照できます。 +\f3Х»\fP \- ХΰϡImportant Bug Fixes and Changes Ǥ⻲ȤǤޤ .TP 2 o -\f3バージョン番号\fP \- 「バージョン番号」を参照してください。 +\f3Сֹ\fP \- ֥Сֹפ򻲾ȤƤ .TP 2 o -\f3有効なクラスだけをドキュメント化\fP \- パッケージをドキュメント化するとき、Javadoc は、有効なクラス名で構成されているファイルのみを読み込みます。たとえば、ファイル名にハイフン「\-」を含めることで、javadoc によるファイルの解析を防ぐことができます。 +\f3ͭʥ饹ɥȲ\fP \- ѥåɥȲȤJavadoc ϡͭʥ饹̾ǹƤեΤߤɤ߹ߤޤȤСե̾˥ϥե\-פޤ뤳Ȥǡjavadoc ˤեβϤɤȤǤޤ .RE - -.LP .SS -エラーと警告 -.LP -.LP -エラーおよび警告メッセージには、ファイル名と宣言行 (ドキュメンテーションコメント内の特定の行ではない) の行番号が含まれます。 +顼ȷٹ .LP +顼ӷٹåˤϡե̾ (ɥơ󥳥ιԤǤϤʤ) ιֹ椬ޤޤޤ .RS 3 .TP 2 o -\f2"error:cannot read:Class1.java"\fP Javadoc ツールはカレントディレクトリに Class1.java クラスをロードしようとしています。絶対パスまたは相対パスとともに表示されるクラス名は、この例の場合 \f2./Class1.java\fP と同じです。 +\f2"error: cannot read: Class1.java"\fP Javadoc ġϥȥǥ쥯ȥ Class1.java 饹ɤ褦ȤƤޤХѥޤХѥȤȤɽ륯饹̾ϡξ \f2./Class1.java ƱǤ\fP .RE - -.LP -.SH "環境" -.LP +.SH "Ķ" .RS 3 .TP 3 CLASSPATH -Javadoc がユーザークラスのファイルを探すときに使うパスを指定する環境変数です。この環境変数は、\f2\-classpath\fP オプションによってオーバーライドされます。ディレクトリは、次のようにコロンで区切ります。 +Javadoc 桼饹ΥեõȤ˻ȤѥꤹĶѿǤδĶѿϡ \f2\-classpath\fP ץˤäƥС饤ɤޤǥ쥯ȥϡΤ褦˥Ƕڤޤ .:/home/classes:/usr/local/java/classes .RE - -.LP -.SH "関連項目" -.LP +.SH "Ϣ" .RS 3 .TP 2 o @@ -5806,7 +4227,7 @@ javap(1) .TP 2 o .na -\f2Javadoc のホームページ\fP @ +\f2Javadoc Υۡڡ\fP @ .fi http://java.sun.com/j2se/javadoc/index.jsp .TP 2 @@ -5818,16 +4239,14 @@ http://java.sun.com/j2se/javadoc/writingdoccomments/index.html .TP 2 o .na -\f2クラスパスの設定\fP @ +\f2饹ѥ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/tools/index.html#general .TP 2 o .na -\f2javac と javadoc がクラスを検索する方法\fP @ +\f2javac javadoc 饹򸡺ˡ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html#srcfiles (tools.jar) .RE - -.LP diff --git a/src/linux/doc/man/ja/javah.1 b/src/linux/doc/man/ja/javah.1 index 386c5d01752a2fec32931b750c0e91587e1a0da4..114b2138719ee8b1dfadce7fb83ede61e7814039 100644 --- a/src/linux/doc/man/ja/javah.1 +++ b/src/linux/doc/man/ja/javah.1 @@ -19,82 +19,67 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH javah 1 "02 Jun 2010" +.TH javah 1 "14 Apr 2011" .LP -.SH "名前" -javah \- C ヘッダーとスタブファイルジェネレータ +.SH "̾" +javah \- C إåȥ֥ե른ͥ졼 .LP -.RS 3 - .LP +\f3javah\fP ϡJava 饹 C إåե C եޤΥեϡJava ץߥ󥰸ǽ񤫤줿ɤȡC ʤɤΤ¾θǽ񤫤줿ɤ³ɤߤ˺Ѥ褦ˤޤ .LP -\f3javah\fP は、Java クラスから C ヘッダーファイルと C ソースファイルを作成します。これらのファイルは、Java プログラミング言語で書かれたコードと、C などのその他の言語で書かれたコードを接続し、コードが相互に作用するようにします。 -.LP -.RE -.SH "形式" -.LP - +.SH "" .LP .nf \f3 .fl javah [ \fP\f3options\fP\f3 ] fully\-qualified\-classname. . . .fl -javah_g [ \fP\f3options\fP\f3 ] fully\-qualified\-classname. . . -.fl \fP .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3javah\fP は、ネイティブメソッドを実装するために必要な C ヘッダーとソースファイルを生成します。作成されたヘッダーとソースファイルは、ネイティブソースコードからオブジェクトのインスタンス変数を参照するために C プログラムによって使用されます。.h ファイルは、対応するクラスと一致する配置を持つ構造体定義を含みます。構造体のフィールドは、クラスのインスタンス変数に対応します。 +\f3javah\fP ϡͥƥ֥᥽åɤ뤿ɬפ C إåȥեޤ줿إåȥեϡͥƥ֥ɤ饪֥ȤΥ󥹥ѿ򻲾Ȥ뤿 C ץˤäƻѤޤ.h եϡб륯饹Ȱפ֤Ťޤߤޤ¤ΤΥեɤϡ饹Υ󥹥ѿбޤ .LP .LP -ヘッダーファイルとその中で宣言される構造体の名前はクラスの名前から派生します。\f3javah\fP に渡されるクラスがパッケージの中にある場合、パッケージ名はヘッダーファイル名と構造体名の両方に付加されます。下線 (_) が名前の区切り文字として使用されます。 +إåեȤ빽¤Τ̾ϥ饹̾ޤ\f3javah\fP Ϥ륯饹ѥåˤ硢ѥå̾ϥإåե̾ȹ¤̾ξղäޤ (_) ̾ζڤʸȤƻѤޤ .LP .LP -デフォルトでは \f3javah\fP は、コマンド行にリストされる各クラスのヘッダーファイルを作成し、現在のディレクトリにファイルを置きます。ソースファイルを作成するには、\f2\-stubs\fP オプションを使用してください。1 つのファイルの中に、リストされたすべてのクラスの結果を連結するには、\f2\-o\fP オプションを使用してください。 +ǥեȤǤ \f3javah\fP ϡޥɹԤ˥ꥹȤƥ饹ΥإåեߤΥǥ쥯ȥ˥ե֤ޤեˤϡ\f2\-stubs\fP ץѤƤ1 ĤΥեˡꥹȤ줿٤ƤΥ饹η̤Ϣ뤹ˤϡ\f2\-o\fP ץѤƤ .LP .LP -新しいネイティブメソッドインタフェースである Java Native Interface (JNI) は、ヘッダー情報またはスタブファイルを必要としません。 現在では、\f3javah\fP は、JNI 形式のネイティブメソッドに必要なネイティブメソッド機能プロトタイプを生成します。 デフォルトでは、\f3javah\fP は JNI 形式で出力され、その結果は .h ファイルに格納されます。 +ͥƥ֥᥽åɥ󥿥եǤ Java Native Interface (JNI) ϡإåޤϥ֥եɬפȤޤ󡣸ߤǤϡ\f3javah\fP ϡJNI Υͥƥ֥᥽åɤɬפʥͥƥ֥᥽åɵǽץȥפޤǥեȤǤϡ\f3javah\fP JNI ǽϤ졢η̤ .h ե˳Ǽޤ .LP -.LP -\f3javah_g\fP は、jdb(1) のようなデバッガに適した、\f3javah\fP の最適化されていないバージョンです。 -.LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-o outputfile -コマンド行にリストされたすべてのクラスに対して、結果のヘッダーまたはソースファイルを連結して \f2outputfile\fP に格納します。\f3\-o\fP または \f3\-d\fP のどちらか一方だけが使われます。 +ޥɹԤ˥ꥹȤ줿٤ƤΥ饹Фơ̤ΥإåޤϥեϢ뤷 \f2outputfile\fP ˳Ǽޤ\f3\-o\fP ޤ \f3\-d\fP Τɤ餫Ȥޤ .TP 3 \-d directory -\f3javah\fP がヘッダーファイルまたはスタブファイルを保存する、ディレクトリを設定します。\f3\-d\fP または \f3\-o\fP のどちらか一方だけが使われます。 +\f3javah\fP إåեޤϥ֥ե¸롢ǥ쥯ȥꤷޤ\f3\-d\fP ޤ \f3\-o\fP Τɤ餫Ȥޤ .TP 3 \-stubs -\f3javah\fP が、Java オブジェクトファイルから C 宣言を生成します。 +\f3javah\fP Java ֥ȥե뤫 C ޤ .TP 3 \-verbose -詳細出力を指定し、作成ファイルの状態に関するメッセージを、\f3javah\fP が標準出力に出力します。 +ܺٽϤꤷեξ֤˴ؤå\f3javah\fP ɸϤ˽Ϥޤ .TP 3 \-help -\f3javah\fP の使用法についてのヘルプメッセージを出力します。 +\f3javah\fP λˡˤĤƤΥإץåϤޤ .TP 3 \-version -\f3javah\fP のバージョン情報を出力します。 +\f3javah\fP ΥСϤޤ .TP 3 \-jni -JNI 形式のネイティブファイル機能プロトタイプを含む出力ファイルを、\f3javah\fP が作成します。これは標準出力であるため、\f3\-jni\fP の使用はオプションです。 +JNI Υͥƥ֥ե뵡ǽץȥפޤϥե\f3javah\fP ޤɸϤǤ뤿ᡢ\f3\-jni\fP λѤϥץǤ .TP 3 \-classpath path -クラスを探すために \f3javah\fP が使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 +饹õ \f3javah\fP ѤѥꤷޤǥեȤޤ CLASSPATH Ķѿ񤭤ޤǥ쥯ȥϥʬ䤷ޤäơ\f2path\fP ΰ̷ϼΤ褦ˤʤޤ .nf \f3 .fl @@ -102,7 +87,7 @@ JNI 形式のネイティブファイル機能プロトタイプを含む出力 .fl \fP .fi -例を示します。 +򼨤ޤ .nf \f3 .fl @@ -111,33 +96,31 @@ JNI 形式のネイティブファイル機能プロトタイプを含む出力 \fP .fi .LP -便宜上、\f2*\fP のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 \f2.jar\fP または \f2.JAR\fP を持つすべてのファイルのリストを指定するのと同じとみなされます (Java プログラムはこの 2 つの呼び出しを区別できない)。 +ص塢 \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 仮想マシンの起動前に実行されます。したがって、\f2System.getenv("CLASSPATH")\fP 呼び出しのように環境に問い合わせを行わない限り、Java プログラムが展開されていないワイルドカードを認識することはありません。 +ȤСǥ쥯ȥ \f2foo\fP \f2a.jar\fP \f2b.JAR\fP ޤޤƤ硢饹ѥ \f2foo/*\fP \f2A.jar:b.JAR\fP ŸޤJAR եν֤ϻꤵޤ󡣤ΥꥹȤˤϡեޤᡢꤵ줿ǥ쥯ȥΤ٤Ƥ JAR ե뤬ޤޤޤ \f2*\fP 륯饹ѥȥϡߤΥǥ쥯ȥΤ٤Ƥ JAR եΥꥹȤŸޤ \f2CLASSPATH\fP Ķѿ⡢ˤƱͤŸޤ饹ѥΥ磻ɥŸɬJava ۥޥεư˼¹Ԥޤäơ\f2System.getenv("CLASSPATH")\fP ƤӽФΤ褦˴Ķ䤤碌Ԥʤ¤ꡢJava ץबŸƤʤ磻ɥɤǧ뤳ȤϤޤ .TP 3 \-bootclasspath path -ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは \f2jre/lib/rt.jar\fP および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。 +֡ȥȥåץ饹ɤѥꤷޤ֡ȥȥåץ饹ϡǥեȤǤ \f2jre/lib/rt.jar\fP ¾ΤĤ JAR ե ˤ롢 Java 2 ץåȥե륯饹Ǥ .TP 3 \-old -古い JDK1.0 形式のヘッダーファイルを生成するように指定します。 +Ť JDK1.0 Υإåե褦˻ꤷޤ .TP 3 \-force -出力ファイルが常に書き込まれるように指定します。 +ϥե뤬˽񤭹ޤ褦˻ꤷޤ .TP 3 \-Joption -Java 仮想マシンに \f2option\fP を渡します。 \f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ .RE .LP -.SH "環境変数" -.LP - +.SH "Ķѿ" .LP .RS 3 .TP 3 CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割されています。 +桼饹ؤΥѥ򥷥ƥ˻ꤷޤǥ쥯ȥϥʬ䤵Ƥޤ .nf \f3 .fl @@ -148,11 +131,9 @@ CLASSPATH .RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP -javac(1)、java(1)、jdb(1)、javap(1)、javadoc(1) +javac(1)java(1)jdb(1)javap(1)javadoc(1) .LP diff --git a/src/linux/doc/man/ja/javap.1 b/src/linux/doc/man/ja/javap.1 index f8589435ec72de63c5d9fd01b938147702632b4b..99e6edfcb2843e18fbc3d8d01093d501e43c3a96 100644 --- a/src/linux/doc/man/ja/javap.1 +++ b/src/linux/doc/man/ja/javap.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH javap 1 "02 Jun 2010" +.TH javap 1 "14 Apr 2011" .LP -.SH "名前" -javap \- Java クラスファイル逆アセンブラ -.LP -.RS 3 - +.SH "̾" +javap \- Java 饹եե֥ .LP .LP -クラスファイルを逆アセンブルします。 -.LP -.RE -.SH "形式" +饹եե֥뤷ޤ .LP - +.SH "" .LP .nf \f3 @@ -45,15 +39,10 @@ javap [ \fP\f3options\fP\f3 ] class. . . .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3javap\fP コマンドは、クラスファイルを逆アセンブルします。その出力は指定するオプションにより異なります。オプションを指定しない場合、\f3javap\fP は、そのパッケージ、渡されたクラスの protected および public のフィールドとメソッドを出力します。 \f3javap\fP はその出力を標準出力に表示します。たとえば、次のクラス宣言をコンパイルするとします。 -.LP -.RS 3 - +\f3javap\fP ޥɤϡ饹եե֥뤷ޤνϤϻꤹ륪ץˤۤʤޤץꤷʤ硢\f3javap\fP ϡΥѥåϤ줿饹 protected public Υեɤȥ᥽åɤϤޤ\f3javap\fP ϤνϤɸϤɽޤȤСΥ饹򥳥ѥ뤹Ȥޤ .LP .nf \f3 @@ -96,14 +85,10 @@ public class DocFooter extends Applet { .fl \fP .fi -.RE .LP .LP -\f3javap DocFooter\fP がもたらす出力は次のようになります。 -.LP -.RS 3 - +\f3javap DocFooter\fP ⤿餹ϤϼΤ褦ˤʤޤ .LP .nf \f3 @@ -126,14 +111,10 @@ public class DocFooter extends java.applet.Applet { .fl \fP .fi -.RE .LP .LP -\f3javap \-c DocFooter\fP がもたらす出力は次のようになります。 -.LP -.RS 3 - +\f3javap \-c DocFooter\fP ⤿餹ϤϼΤ褦ˤʤޤ .LP .nf \f3 @@ -244,41 +225,35 @@ Method void paint(java.awt.Graphics) .fl \fP .fi -.RE .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 -\-help -\f3javap\fP のヘルプメッセージを出力します。 +\-help \-\-help \-? +\f3javap\fP ΥإץåϤޤ .TP 3 -\-l -行番号と局所変数テーブルを表示します。 +\-version +Сɽޤ .TP 3 -\-b -JDK 1.1 の \f3javap\fP との下位互換性を保証します。 +\-l +ֹȶɽѿơ֥ɽޤ .TP 3 \-public -public クラスおよびメンバーだけを表示します。 +public 饹ӥСɽޤ .TP 3 \-protected -protected および public のクラスとメンバーだけを表示します。 +protected public Υ饹ȥСɽޤ .TP 3 \-package -package、protected、および public のクラスとメンバーだけを表示します。これはデフォルトの設定です。 +packageprotected public Υ饹ȥСɽޤϥǥեȤǤ .TP 3 -\-private -すべてのクラスとメンバーを表示します。 +\-private \-p +٤ƤΥ饹ȥСɽޤ .TP 3 \-Jflag -ランタイムシステムに直接 \f2flag\fP を渡します。使用例を次に示します。 -.RS 3 - -.LP +󥿥ॷƥľ \f2flag\fP Ϥޤ򼡤˼ޤ .nf \f3 .fl @@ -288,23 +263,28 @@ javap \-J\-Djava.security.manager \-J\-Djava.security.policy=MyPolicy MyClassNam .fl \fP .fi -.RE .TP 3 \-s -内部の型シグニチャーを出力します。 +η˥㡼Ϥޤ +.TP 3 +\-sysinfo +Υ饹Υƥ (ѥաMD5 ϥå) ɽޤ +.TP 3 +\-constants +static final ɽޤ .TP 3 \-c -クラスの各メソッドのために逆アセンブルされるコード、すなわち Java バイトコードから成る命令を表示します。これらは +饹γƥ᥽åɤΤ˵ե֥뤵륳ɡʤ Java Хȥɤ̿ɽޤ .na -\f2「Java Virtual Machine Specification」\fP @ +\f2Java Virtual Machine Specification\fP @ .fi -http://java.sun.com/docs/books/vmspec/にドキュメント化されています。 +http://java.sun.com/docs/books/vmspec/˥ɥȲƤޤ .TP 3 \-verbose -メソッドのスタックサイズ、および \f2locals\fP と \f2args\fP の数を出力します。 +᥽åɤΥå \f2locals\fP \f2args\fP οϤޤ .TP 3 \-classpath path -\f3javap\fP がクラスを探すために使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 +\f3javap\fP 饹õ˻ѤѥꤷޤǥեȤޤ CLASSPATH Ķѿ񤭤ޤǥ쥯ȥϥʬ䤷ޤäơ\f2path\fP ΰ̷ϼΤ褦ˤʤޤ .nf \f3 .fl @@ -312,7 +292,7 @@ http://java.sun.com/docs/books/vmspec/にドキュメント化されています .fl \fP .fi -例を示します。 +򼨤ޤ .nf \f3 .fl @@ -322,24 +302,19 @@ http://java.sun.com/docs/books/vmspec/にドキュメント化されています .fi .TP 3 \-bootclasspath path -ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは \f2jre/lib/rt.jar\fP および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。 +֡ȥȥåץ饹ɤѥꤷޤ֡ȥȥåץ饹ϡǥեȤǤ \f2jre/lib/rt.jar\fP ¾ΤĤ JAR ե ˤ롢 Java 2 ץåȥե륯饹Ǥ .TP 3 \-extdirs dirs -インストールされた拡張機能を検索する場所をオーバーライドします。The default location for extensions is the value of \f2java.ext.dirs\fP. +󥹥ȡ뤵줿ĥǽ򸡺򥪡С饤ɤޤĥǽϡǥեȤǤ \f2java.ext.dirs\fP ˤޤ .RE .LP -.SH "環境変数" -.LP - +.SH "Ķѿ" .LP .RS 3 .TP 3 CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。 次に例を示します。 -.RS 3 - -.LP +桼饹ؤΥѥ򥷥ƥ˻ꤷޤǥ쥯ȥϥʬ䤷ޤ򼨤ޤ .nf \f3 .fl @@ -348,14 +323,11 @@ CLASSPATH \fP .fi .RE -.RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP -javac(1)、 java(1)、jdb(1)、javah(1)、javadoc(1) +javac(1)java(1)jdb(1)javah(1)javadoc(1) .LP diff --git a/src/linux/doc/man/ja/javaws.1 b/src/linux/doc/man/ja/javaws.1 index 72e426f4461b46451b9b75ae0566880cc42871fe..03d3349c7a0052ae798dbfd62ba2cce2eca8fa0c 100644 --- a/src/linux/doc/man/ja/javaws.1 +++ b/src/linux/doc/man/ja/javaws.1 @@ -19,30 +19,18 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH javaws 1 "02 Jun 2010" +.TH javaws 1 "14 Apr 2011" .LP -.SH "名前" -\f2javaws\fP コマンド行 +.SH "̾" +\f2javaws\fP ޥɹ .LP +.SH "̾" .LP -\ .LP -.SS -NAME +\f2javaws\fP \- Java Web Start ưޥ .LP -.RS 3 - -.LP -.LP -\f2javaws\fP \- Java Web Start 起動コマンド -.LP -.RE -.SS -形式 -.LP -.RS 3 - +.SH "" .LP .LP \f2javaws [run\-options] <jnlp>\fP @@ -50,309 +38,185 @@ NAME .LP \f2javaws [control\-options]\fP .LP -.RE -.SS -パラメータ -.LP -.RS 3 - +.SH "ѥ᡼" .LP .LP \f2[run\-options]\fP .LP -.RS 3 - .LP +ޥɹԼ¹ԥץ󡣼¹ԥץǤդνǻǤޤƼ索ץˤĤƤϡ ּ¹ԥץפ򻲾ȤƤ .LP -コマンド行実行オプション。 実行オプションは任意の順序で指定できます。各種オプションについては、下の 「実行オプション」を参照してください。 -.LP -.RE .LP \f2<jnlp>\fP -.LP -.RS 3 - .LP .LP -JNLP (Java Network Launching Protocol) ファイルのパスまたは URL (Uniform Resource Locator) のどちらかです。 +JNLP (Java Network Launching Protocol) եΥѥޤ URL (Uniform Resource Locator) Τɤ餫Ǥ .LP -.RE .LP \f2[control\-options]\fP .LP -.RS 3 - -.LP -.LP -コマンド行制御オプション。 制御オプションは任意の順序で指定できます。各種オプションについては、下の 「制御オプション」を参照してください。 .LP -.RE -.RE -.SS -説明 -.LP -.RS 3 - +ޥɹ楪ץ楪ץǤդνǻǤޤƼ索ץˤĤƤϡ 楪ץפ򻲾ȤƤ .LP +.SH "" .LP -\f2javaws\fP コマンドは、JNLP (Java Network Launching Protocol) のリファレンス実装である Java Web Start を起動します。Java Web Start は、ネットワーク上で動作する Java アプリケーションまたはアプレットを起動します。 .LP +\f2javaws\fP ޥɤϡJNLP (Java Network Launching Protocol) Υե󥹼Ǥ Java Web Start ưޤJava Web Start ϡͥåȥư Java ץꥱޤϥץåȤưޤ .LP -JNLP ファイルを指定すると、\f2javaws\fP は JNLP ファイルに指定された Java アプリケーションまたはアプレットを起動します。 .LP +JNLP ե뤬ꤵ줿硢 \f2javaws\fP ϡ JNLP եǻꤵ줿 Java ץꥱ/ץåȤưޤ .LP -\f2javaws\fP 起動ツールには、現在のリリースでサポートされている 1 組のオプションがあります。ただし、これらのオプションは将来のリリースでは削除される可能性があります。 .LP -.RE -.SS -実行オプション +\f2javaws\fP ưġˤϡߤΥ꡼ǥݡȤƤ 1 ȤΥץ󤬤ޤΥץϾΥ꡼ǤϺǽޤ .LP -.RS 3 - +.SH "¹ԥץ" .LP .LP \f2\-offline\fP -.LP -.RS 3 - .LP .LP -Java Web Start をオフラインモードで実行します。 +Java Web Start 򥪥ե饤⡼ɤǼ¹Ԥޤ .LP -.RE .LP \f2\-Xnosplash\fP -.LP -.RS 3 - .LP .LP -最初のスプラッシュ画面の表示を無効にします。 +ǽΥץå̤ɽ̵ˤޤ .LP -.RE .LP \f2\-open <arguments>\fP -.LP -.RS 3 - .LP .LP -このオプションを指定すると、JNLP ファイル内の引数が \f2\-open <arguments>\fP に置き換わります。 +ΥץꤹȡJNLP եΰ \f2\-open <arguments>\fP ֤ޤ .LP -.RE .LP \f2\-print <arguments>\fP -.LP -.RS 3 - .LP .LP -このオプションを指定すると、JNLP ファイル内の引数が \f2\-print <arguments>\fP に置き換わります。 +ΥץꤹȡJNLP եΰ \f2\-print <arguments>\fP ֤ޤ .LP -.RE .LP \f2\-online\fP -.LP -.RS 3 - .LP .LP -オンラインモードで実行します (デフォルトの動作)。 +饤⡼ɤǼ¹Ԥޤ (ǥեȤư) .LP -.RE .LP \f2\-wait\fP -.LP -.RS 3 - .LP .LP -このオプションを指定すると、アプリケーションが終了するまで \f2javaws\fP プロセスは終了しません。 +Υץꤷ硢 \f2javaws\fP ץϡץꥱ󤬽λޤǽλޤWindows ץåȥեǤϡΥץȤ˵ǽޤ .LP -.RE .LP \f2\-verbose\fP -.LP -.RS 3 - .LP .LP -追加の出力を表示します。 +ɲäνϤɽޤ .LP -.RE .LP \f2\-J<option>\fP -.LP -.RS 3 - .LP .LP -vm にオプションを補います。 +vm ˥ץ䤤ޤ .LP -.RE .LP \f2\-system\fP .LP -.RS 3 - .LP +ץꥱ򥷥ƥ७å夫Τ߼¹Ԥޤ .LP -アプリケーションをシステムキャッシュからのみ実行します。 +.SH "楪ץ" .LP -.RE -.RE -.SS -制御オプション .LP -.RS 3 - +\f2\-viewer\fP .LP .LP -\f2\-viewer\fP +Java ȥѥͥǥåӥ塼ɽޤ .LP -.RS 3 - .LP +\f2\-clearcache\fP .LP -Java コントロールパネルでキャッシュビューアを表示します。 .LP -.RE +󥹥ȡ뤵Ƥʤ٤ƤΥץꥱ򥭥å夫ޤ .LP -\f2\-userConfig <property name>\fP .LP -.RS 3 - +\f2\-userConfig <property name>\fP .LP .LP -指定された配備プロパティーをクリアします。 +ꤵ줿ץѥƥ򥯥ꥢޤ .LP -.RE .LP \f2\-userConfig <property name> <property value>\fP .LP -.RS 3 - .LP +ꤵ줿ץѥƥꤵ줿ͤꤷޤ .LP -指定された配備プロパティーを指定された値に設定します。 -.LP -.RE .LP \f2\-uninstall\fP -.LP -.RS 3 - .LP .LP -キャッシュからすべてのアプリケーションを削除します。 +å夫餹٤ƤΥץꥱޤ .LP -.RE .LP \f2\-uninstall <jnlp>\fP -.LP -.RS 3 - .LP .LP -キャッシュからアプリケーションを削除します。 +å夫饢ץꥱޤ .LP -.RE .LP \f2\-import [import\-options] <jnlp>\fP -.LP -.RS 3 - .LP .LP -キャッシュにアプリケーションをインポートします。 +å˥ץꥱ򥤥ݡȤޤ .LP -.RE -\f3インポートオプション\fP +.SH "ݡȥץ" .LP .LP \f2\-silent\fP -.LP -.RS 3 - .LP .LP -サイレントモードでインポートします (UI は表示されません)。 +ȥ⡼ɤǥݡȤޤ (UI ɽޤ) .LP -.RE .LP \f2\-system\fP -.LP -.RS 3 - .LP .LP -システムキャッシュにアプリケーションをインポートします。 +ƥ७å˥ץꥱ򥤥ݡȤޤ .LP -.RE .LP \f2\-codebase <url>\fP -.LP -.RS 3 - .LP .LP -任意の codebase からリソースを取得します。 +Ǥդ codebase ꥽ޤ .LP -.RE .LP \f2\-shortcut\fP -.LP -.RS 3 - .LP .LP -ユーザー許容プロンプトのようにショートカットをインストールします。このオプションは、\f2\-silent\fP オプションと一緒に使用しないと効果がありません。 +桼ƥץץȤΤ褦˥硼ȥåȤ򥤥󥹥ȡ뤷ޤΥץϡ \f2\-silent\fP ץѤʤȸ̤ޤ .LP -.RE .LP \f2\-association\fP .LP -.RS 3 - .LP +桼ƥץץȤΤ褦˴Ϣդ򥤥󥹥ȡ뤷ޤΥץϡ \f2\-silent\fP ץѤʤȸ̤ޤ .LP -ユーザー許容プロンプトのように関連付けをインストールします。このオプションは、\f2\-silent\fP オプションと一緒に使用しないと効果がありません。 +.SH "ե" .LP -.RE -.RE -.SS -ファイル .LP -.RS 3 - -.LP -.LP -ユーザーキャッシュ、システムキャッシュ、および deployment.properties ファイルについては、 +桼å塢ƥ७å塢 deployment.properties եˤĤƤϡ .na -\f2システムレベルおよびユーザーレベルのプロパティー\fP @ +\f2ƥ٥뤪ӥ桼٥Υץѥƥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/properties.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/properties.html򻲾ȤƤ .LP -.RE -.SS -詳細情報 -.LP -.RS 3 - +.SH "ܺپ" .LP .LP -Java Web Start の詳細は、 +Java Web Start ξܺ٤ϡ .na -\f2「Java Web Start」\fP @ +\f2Java Web Start\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/javaws/index.htmlを参照してください。 -.LP -.RS 3 - -.LP -.LP -\ +http://java.sun.com/javase/6/docs/technotes/guides/javaws/index.html򻲾ȤƤ .LP -.RE -.RE diff --git a/src/linux/doc/man/ja/jconsole.1 b/src/linux/doc/man/ja/jconsole.1 index 2ce3990317c4e2cbaf8322080e646ba9fd7ab473..309fc14f41dedc39ecb6b36afc9f36a62841bdee 100644 --- a/src/linux/doc/man/ja/jconsole.1 +++ b/src/linux/doc/man/ja/jconsole.1 @@ -19,34 +19,32 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jconsole 1 "02 Jun 2010" +.TH jconsole 1 "14 Apr 2011" .LP -.SH "名前" -jconsole \- Java 監視および管理コンソール +.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 - +.SH "" .LP .nf \f3 @@ -58,63 +56,60 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 options -オプションを使用する場合、コマンド名の直後に記述してください。 -.br +ץѤ硢ޥ̾ľ˵ҤƤ .TP 3 connection = pid | host:port | jmxUrl .RS 3 -\f2pid\fP\ \ \ ローカルの Java VM のプロセス ID。Java VM は、jconsole を実行しているユーザー ID と同じユーザー ID を使用して実行する必要があります。詳細については、 +.TP 2 +o +\f2pid\fP Java VM Υץ IDJava VM ϡjconsole ¹ԤƤ桼 ID Ʊ桼 ID ѤƼ¹Ԥɬפޤܺ٤ˤĤƤϡ .na -\f2「JMX 監視および管理」\fP @ +\f2JMX ƻ뤪Ӵ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/management/agent.htmlを参照してください。 -.br -\f2host\fP:\f2port\fP\ \ Java VM が実行しているホストシステムの名前と、JVM を起動したときにシステムプロパティー \f2com.sun.management.jmxremote.port\fP で指定したポート番号。詳細については、 +http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html򻲾ȤƤ +.TP 2 +o +\f2host\fP:\f2port\fP Java VM ¹ԤƤۥȥƥ̾ȡJVM ưȤ˥ƥץѥƥ \f2com.sun.management.jmxremote.port\fP ǻꤷݡֹ档ܺ٤ˤĤƤϡ .na -\f2「JMX 監視および管理」\fP @ +\f2JMX ƻ뤪Ӵ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/management/agent.htmlを参照してください。 -.br -\f2jmxUrl\fP 接続先の JMX エージェントのアドレス。 これについては、 +http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html򻲾ȤƤ +.TP 2 +o +\f2jmxUrl\fP ³ JMX ȤΥɥ쥹ˤĤƤϡ .na \f2JMXServiceURL\fP @ .fi -http://java.sun.com/javase/6/docs/api/javax/management/remote/JMXServiceURL.html を参照してください。 +http://java.sun.com/javase/6/docs/api/javax/management/remote/JMXServiceURL.html 򻲾ȤƤ .RE .RE .LP -.SH " 説明" -.LP - +.SH " " .LP .LP -\f3jconsole\fP コマンドは、ローカルマシンまたはリモートマシン上の Java アプリケーションと仮想マシンの監視と管理を行うグラフィカルコンソールツールを起動します。 +\f3jconsole\fP ޥɤϡޥޤϥ⡼ȥޥ Java ץꥱȲۥޥδƻȴԤե륳󥽡ġưޤ .LP .LP -Windows 上では、\f3jconsole\fP はコンソールウィンドウと関連付けられていません。ただし、なんらかの理由で \f3jconsole\fP コマンドが失敗すると、エラー情報を示すダイアログボックスが表示されます。 +Windows Ǥϡ\f3jconsole\fP ϥ󥽡륦ɥȴϢդƤޤ󡣤ʤ餫ͳ \f3jconsole\fP ޥɤԤȡ顼򼨤ܥåɽޤ .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-interval=n -更新間隔を \f2n\fP 秒に設定します (デフォルトは 4 秒)。 +ֳ֤ \f2n\fP äꤷޤ (ǥեȤ 4 ) .TP 3 -\-notile\ -最初にウィンドウをタイリングしません (複数の接続のため)。 +\-notile +ǽ˥ɥ򥿥󥰤ޤ (ʣ³Τ) .TP 3 -\-pluginpath\ plugins -JConsole プラグインの検索先となるディレクトリまたは JAR ファイルのリストを指定します。\f2plugins\fP パスには、次の名前のプロバイダ構成ファイルを含めてください。 +\-pluginpath plugins +JConsole ץ饰θȤʤǥ쥯ȥޤ JAR եΥꥹȤꤷޤ\f2plugins\fP ѥˤϡ̾ΥץХեޤƤ .br .nf \f3 @@ -124,36 +119,36 @@ JConsole プラグインの検索先となるディレクトリまたは JAR フ \fP .fi .LP -これには、 +ˤϡ .na \f2com.sun.tools.jconsole.JConsolePlugin\fP @ .fi -http://java.sun.com/javase/6/docs/jdk/api/jconsole/spec/com/sun/tools/jconsole/JConsolePlugin.html クラスを実装するクラスの完全修飾クラス名を指定する行が、プラグインごとに 1 行ずつ含まれています。 +http://java.sun.com/javase/6/docs/jdk/api/jconsole/spec/com/sun/tools/jconsole/JConsolePlugin.html 饹륯饹δ饹̾ꤹԤץ饰󤴤Ȥ 1 ԤĴޤޤƤޤ .TP 3 -\-version\ -バージョン情報を出力して終了します。 +\-version +СϤƽλޤ .TP 3 -\-help\ -ヘルプメッセージを出力して終了します。 +\-help +إץåϤƽλޤ .TP 3 -\-J<flag>\ -jconsole が実行されている Java 仮想マシンに <flag> を渡します。 +\-J<flag> +jconsole ¹ԤƤ Java ۥޥ <flag> Ϥޤ .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o .na -\f2jconsole の使用\fP @ +\f2JConsole λ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html .TP 2 o .na -\f2「Java プラットフォームの監視および管理」\fP @ +\f2Java ץåȥեδƻ뤪Ӵ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/management/index.html .RE diff --git a/src/linux/doc/man/ja/jdb.1 b/src/linux/doc/man/ja/jdb.1 index af81524bb8a5ab5c409863ed80a7ac28983c8dd0..7c18936974856d3202b67ddc12eb9604f6f96645 100644 --- a/src/linux/doc/man/ja/jdb.1 +++ b/src/linux/doc/man/ja/jdb.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jdb 1 "02 Jun 2010" +.TH jdb 1 "14 Apr 2011" .LP -.SH "名前" -jdb \- Java デバッガ -.LP -.RS 3 - +.SH "̾" +jdb \- Java ǥХå .LP .LP -\f3jdb\fP は、Java 言語プログラムのバグを見つけて修正するために使用するツールです。 -.LP -.RE -.SH "形式" +\f3jdb\fP ϡJava ץΥХ򸫤Ĥƽ뤿˻ѤġǤ .LP - +.SH "" .LP .nf \f3 @@ -43,43 +37,34 @@ jdb \- Java デバッガ .fl .fi -.LP -.RS 3 - .LP .RS 3 .TP 3 options -次に示すコマンド行オプション +˼ޥɹԥץ .TP 3 class -デバッグを開始するクラスの名前 +ǥХå򳫻Ϥ륯饹̾ .TP 3 arguments -\f2class\fP の \f2main()\fP メソッドに渡す引数 +class \f2main()\fP ᥽åɤϤ \f2\fP .RE .LP -.RE -.SH " 説明" -.LP - +.SH " " .LP .LP -Java デバッガ \f3jdb\fP は、Java クラス用の簡単なコマンド行デバッガです。 +Java ǥХå \f3jdb\fP ϡJava 饹ѤδñʥޥɹԥǥХåǤ .na \f2Java Platform Debugger Architecture\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jpda/index.html を視覚的に実行し、ローカルまたはリモートの Java Virtual Machine の検査とデバッグを行うことができます。 +http://java.sun.com/javase/6/docs/technotes/guides/jpda/index.html Ū˼¹Ԥޤϥ⡼Ȥ Java Virtual Machine θȥǥХåԤȤǤޤ .LP .SS -jdb セッションの開始 -.LP -.RS 3 - +jdb åγ .LP .LP -jdb セッションを開始するにはさまざまな方法があります。もっとも頻繁に使われるのは、デバッグするアプリケーションのメインクラスを使用して、\f3jdb\fP から新しい Java 仮想マシン (VM) を起動する方法です。コマンド行で、 \f3java\fP の代わりに \f3jdb\fP コマンドを入力します。たとえば、アプリケーションのメインクラスが MyClass の場合は、JDB 環境でデバッグするときに次のコマンドを使用します。 +jdb å򳫻ϤˤϤޤޤˡޤäȤˤ˻ȤΤϡǥХå륢ץꥱΥᥤ󥯥饹Ѥơ\f3jdb\fP 鿷 Java ۥޥ (VM) ưˡǤޥɹԤǡ\f3java\fP \f3jdb\fP ޥɤϤޤȤСץꥱΥᥤ󥯥饹 MyClass ξϡJDB ĶǥǥХåȤ˼ΥޥɤѤޤ .LP .nf \f3 @@ -91,10 +76,10 @@ jdb セッションを開始するにはさまざまな方法があります。 .LP .LP -この方法で起動すると、\f3jdb\fP は、指定されたパラメータを使って 2 つ目の Java VM を呼び出します。 次に、指定されたクラスをロードして、クラスの最初の命令を実行する前に VM を停止させます。 +ˡǵưȡ\f3jdb\fP ϡꤵ줿ѥ᡼Ȥä 2 ܤ Java VM ƤӽФޤˡꤵ줿饹ɤơ饹κǽ̿¹Ԥ VM ߤޤ .LP .LP -\f3jdb\fP のもう 1 つの使用方法は、すでに起動している Java VM に jdb を接続することです。jdb が接続する VM を、その実行中に起動するための構文を次に示します。これは、インプロセスデバッグ用ライブラリをロードし、接続の種類を指定します。 +\f3jdb\fP Τ⤦ 1 ĤλˡϡǤ˵ưƤ Java VM jdb ³뤳ȤǤjdb ³ VM 򡢤μ¹˵ư뤿ιʸ򼡤˼ޤϡץǥХåѥ饤֥ɤ³μꤷޤ .LP .nf \f3 @@ -106,7 +91,7 @@ jdb セッションを開始するにはさまざまな方法があります。 .LP .LP -たとえば、次のコマンドは、MyClass アプリケーションを実行して、\f3jdb\fP があとでそのアプリケーションに接続できるようにします。 +ȤСΥޥɤϡMyClass ץꥱ¹Ԥơ\f3jdb\fP ȤǤΥץꥱ³Ǥ褦ˤޤ .LP .nf \f3 @@ -118,7 +103,7 @@ jdb セッションを開始するにはさまざまな方法があります。 .LP .LP -次のコマンドを使用して、\f3jdb\fP を VM に接続できます。 +ΥޥɤѤơ\f3jdb\fP VM ³Ǥޤ .LP .nf \f3 @@ -130,45 +115,42 @@ jdb セッションを開始するにはさまざまな方法があります。 .LP .LP -この場合、\f3jdb\fP は新しい VM を起動する代わりに既存の VM に接続されるため、\f3jdb\fP コマンド行には「MyClass」は指定しません。 +ξ硢\f3jdb\fP Ͽ VM ư˴¸ VM ³뤿ᡢ\f3jdb\fP ޥɹԤˤϡMyClassפϻꤷޤ .LP .LP -デバッガを VM に接続するにはほかにもさまざまな方法があり、すべて \f3jdb\fP でサポートされています。接続オプションについては、Java Platform Debugger Architecture の +ǥХå VM ³ˤϤۤˤ⤵ޤޤˡꡢ٤ \f3jdb\fP ǥݡȤƤޤ³ץˤĤƤϡJava Platform Debugger Architecture .na -\f2ドキュメント\fP @ +\f2ɥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.htmlを参照してください。\f3jdb\fP で使用するために J2SE 1.4.2 以前の VM を起動する方法については、 +http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.html򻲾ȤƤ\f3jdb\fP ǻѤ뤿 J2SE 1.4.2 VM ưˡˤĤƤϡ .na -\f21.4.2 のドキュメント\fP @ +\f21.4.2 Υɥ\fP @ .fi -http://java.sun.com/j2se/1.4.2/docs/guide/jpda/conninv.htmlを参照してください。 +http://java.sun.com/j2se/1.4.2/docs/guide/jpda/conninv.html򻲾ȤƤ .LP .SS -基本 jdb コマンド + jdb ޥ .LP .LP -基本的な \f3jdb\fP コマンドの一覧を示します。Java デバッガがサポートするコマンドはこれ以外にもあり、それらは \f3jdb\fP の \f2help\fP コマンドを使用して表示できます。 -.LP -.RS 3 - +Ū \f3jdb\fP ޥɤΰ򼨤ޤJava ǥХåݡȤ륳ޥɤϤʳˤ⤢ꡢ \f3jdb\fP \f2help\fP ޥɤѤɽǤޤ .LP .RS 3 .TP 3 -help または ? -もっとも重要な \f3jdb\fP コマンド \f2help\fP は、認識されたコマンドのリストに簡潔な説明を付けて表示します。 +help ޤ ? +äȤפ \f3jdb\fP ޥ \f2help\fP ϡǧ줿ޥɤΥꥹȤ˴ʷդɽޤ .TP 3 run -\f3jdb\fP を起動して必要なブレークポイントを設定したあとに、このコマンドを使用して、デバッグするアプリケーションの実行を開始できます。このコマンドは、既存の VM に接続している場合とは異なり、デバッグするアプリケーションが \f3jdb\fP から起動したときにだけ使用できます。 +\f3jdb\fP ưɬפʥ֥졼ݥȤꤷȤˡΥޥɤѤơǥХå륢ץꥱμ¹Ԥ򳫻ϤǤޤΥޥɤϡ¸ VM ³ƤȤϰۤʤꡢǥХå륢ץꥱ \f3jdb\fP 鵯ưȤˤѤǤޤ .TP 3 cont -ブレークポイント、例外、またはステップ実行のあとで、デバッグするアプリケーションの実行を継続します。 +֥졼ݥȡ㳰ޤϥƥå׼¹ԤΤȤǡǥХå륢ץꥱμ¹Ԥ³ޤ .TP 3 print -Java オブジェクトおよびプリミティブ値を表示します。プリミティブ型の変数またはフィールドの場合には、実際の値が出力されます。オブジェクトの場合には、短い説明が出力されます。オブジェクトについては、以降の \f2dump\fP コマンドの説明を参照してください。 +Java ֥ȤӥץߥƥͤɽޤץߥƥַѿޤϥեɤξˤϡºݤͤϤޤ֥ȤξˤϡûϤޤ֥ȤˤĤƤϡʹߤ \f2dump\fP ޥɤ򻲾ȤƤ .LP -\f2注:局所変数を表示するには、その変数を含むクラスが \fP\f2javac(1)\fP\f2 \fP\f2\-g\fP オプションでコンパイルされていなければなりません。 +\f2: ɽѿɽˤϡѿޤ९饹 \fP\f2javac(1)\fP\f2 \fP\f2\-g\fP ץǥѥ뤵Ƥɬפޤ .LP -\f2print\fP では、メソッドの呼び出しを含む多数の簡単な Java 式がサポートされています。 次に例を示します。 +\f2print\fP Ǥϡ᥽åɤθƤӽФޤ¿δñ Java ݡȤƤޤ򼨤ޤ .RS 3 .TP 2 o @@ -178,25 +160,22 @@ o \f2print myObj.myInstanceField\fP .TP 2 o -\f2print i + j + k\fP (i、j、および k はプリミティブであり、フィールドまたは局所変数のいずれか) +\f2print i + j + k\fP (ij k ϥץߥƥ֤Ǥꡢեɤޤ϶ɽѿΤ줫) .TP 2 o -\f2print myObj.myMethod()\fP (myMethod が null 以外を返す場合) +\f2print myObj.myMethod()\fP (myMethod null ʳ֤) .TP 2 o \f2print new java.lang.String("Hello").length()\fP .RE .TP 3 dump -プリミティブ値の場合には、このコマンドは \f2print\fP と同じです。オブジェクトの場合には、オブジェクト内に定義されている各フィールドの現在の値が出力されます。static フィールドと instance フィールドが出力されます。 +ץߥƥͤξˤϡΥޥɤ \f2print\fP ƱǤ֥Ȥξˤϡ֥ƤƥեɤθߤͤϤޤstatic եɤ instance եɤϤޤ .LP -\f2dump\fP コマンドでは、\f2print\fP コマンドと同じ式がサポートされます。 +\f2dump\fP ޥɤǤϡ\f2print\fP ޥɤƱݡȤޤ .TP 3 threads -現在実行中のスレッドを一覧表示します。スレッドごとに、名前と現在の状態、およびほかのコマンドに使用できるインデックスが出力されます。 次に例を示します。 -.RS 3 - -.LP +߼¹ΥåɤɽޤåɤȤˡ̾ȸߤξ֡ӤۤΥޥɤ˻ѤǤ륤ǥåϤޤ򼨤ޤ .nf \f3 .fl @@ -204,163 +183,144 @@ threads .fl \fP .fi -.RE -この例では、スレッドインデックスは 4 であり、スレッドは java.lang.Thread のインスタンスです。 スレッドの名前は「main」であり、現在実行中です。 +Ǥϡåɥǥå 4 Ǥꡢåɤ java.lang.Thread Υ󥹥󥹤Ǥåɤ̾ϡmainפǤꡢ߼¹Ǥ .TP 3 thread -現在のスレッドにするスレッドを選択します。多くの \f3jdb\fP コマンドは、現在のスレッドの設定に基づいて実行されます。スレッドは、\f2threads\fP コマンドで説明したスレッドインデックスとともに指定します。 +ߤΥåɤˤ륹åɤ򤷤ޤ¿ \f3jdb\fP ޥɤϡߤΥåɤ˴ŤƼ¹Ԥޤåɤϡ\f2threads\fP ޥɤåɥǥåȤȤ˻ꤷޤ .TP 3 where -引数を指定しないで \f2where\fP を実行すると、現在のスレッドのスタックがダンプされます。 \f2where all\fP コマンドは、現在のスレッドグループにあるスレッドのスタックを、すべてダンプします。 \f2where\fP \f2threadindex\fP は、指定されたスレッドのスタックをダンプします。 +\f2ꤷʤ\fP where ¹ԤȡߤΥåɤΥåפޤ \f2where all\fP ޥɤϡߤΥåɥ롼פˤ륹åɤΥå򤹤٤ƥפޤ \f2where\fP \f2threadindex\fP ϡꤵ줿åɤΥåפޤ .LP -現在のスレッドが (ブレークポイントか \f2suspend\fP コマンドによって) 中断している場合は、局所変数とフィールドは \f2print\fP コマンドと \f2dump\fP コマンドで表示できます。\f2up\fP コマンドと \f2down\fP コマンドで、どのスタックフレームをカレントにするかを選ぶことができます。 +ߤΥåɤ (֥졼ݥȤ \f2suspend\fP ޥɤˤä) ǤƤϡɽѿȥեɤ \f2print\fP ޥɤ \f2dump\fP ޥɤɽǤޤ\f2up\fP ޥɤ \f2down\fP ޥɤǡɤΥåե졼򥫥Ȥˤ뤫֤ȤǤޤ .RE .LP -.RE .SS -ブレークポイント -.LP -.RS 3 - +֥졼ݥ .LP .LP -ブレークポイントは、行番号またはメソッドの最初の命令で \f3jdb\fP に設定できます。 次に例を示します。 +֥졼ݥȤϡֹޤϥ᥽åɤκǽ̿ \f3jdb\fP Ǥޤ򼨤ޤ .LP .RS 3 .TP 2 o -\f2stop at MyClass:22\fP (MyClass が含まれるソースファイルの 22 行目の最初の命令にブレークポイントを設定) +\f2stop at MyClass:22\fP (MyClass ޤޤ륽ե 22 ܤκǽ̿˥֥졼ݥȤ) .TP 2 o -\f2stop in java.lang.String.length\fP (\f2java.lang.String.length\fP メソッドの最初にブレークポイントを設定) +\f2stop in java.lang.String.length\fP (\f2java.lang.String.length\fP ᥽åɤκǽ˥֥졼ݥȤ) .TP 2 o -\f2stop in MyClass.<init>\fP (<init> は MyClass コンストラクタを識別) +\f2stop in MyClass.<init>\fP (<init> MyClass 󥹥ȥ饯) .TP 2 o -\f2stop in MyClass.<clinit>\fP (<clinit> は MyClass の静的初期化コードを識別) +\f2stop in MyClass.<clinit>\fP (<clinit> MyClass Ūɤ) .RE .LP .LP -メソッドがオーバーロードされている場合には、メソッドの引数の型も指定して、ブレークポイントに対して適切なメソッドが選択されるようにしなければなりません。たとえば、「\f2MyClass.myMethod(int,java.lang.String)\fP」または「\f2MyClass.myMethod()\fP」と指定します。 +᥽åɤСɤƤˤϡ᥽åɤΰηꤷơ֥졼ݥȤФŬڤʥ᥽åɤ򤵤褦ˤʤФʤޤ󡣤ȤС\f2MyClass.myMethod(int,java.lang.String)\fPפޤϡ\f2MyClass.myMethod()\fPפȻꤷޤ .LP .LP -\f2clear\fP コマンドは、「\f2clear\ MyClass:45\fP」のような構文を使用してブレークポイントを削除します。\f2clear\fP を使用するか、引数を指定しないでコマンドを使用すると、現在設定されているすべてのブレークポイントが表示されます。\f2cont\fP コマンドは実行を継続します。 +\f2clear\fP ޥɤϡ\f2clear\ MyClass:45\fPפΤ褦ʹʸѤƥ֥졼ݥȤޤ\f2clear\fP Ѥ뤫ꤷʤǥޥɤѤȡꤵƤ뤹٤ƤΥ֥졼ݥȤɽޤ\f2cont\fP ޥɤϼ¹Ԥ³ޤ .LP -.RE .SS -ステップ実行 -.LP -.RS 3 - +ƥå׼¹ .LP .LP -\f2step\fP コマンドは、現在のスタックフレームまたは呼び出されたメソッド内で、次の行を実行します。\f2next\fP コマンドは、現在のスタックフレームの次の行を実行します。 +\f2step\fP ޥɤϡߤΥåե졼ޤϸƤӽФ줿᥽åǡιԤ¹Ԥޤ\f2next\fP ޥɤϡߤΥåե졼μιԤ¹Ԥޤ .LP -.RE .SS -例外 -.LP -.RS 3 - -.LP +㳰 .LP -スローしているスレッドの呼び出しスタック上のどこにも catch 文がない場合に例外が発生すると、VM は通常、例外トレースを出力して終了します。ただし、\f3jdb\fP 環境で実行している場合は、例外が発生すると \f3jdb\fP に制御が戻ります。次に、\f3jdb\fP を使用して例外の原因を診断します。 .LP +Ƥ륹åɤθƤӽФåΤɤˤ catch ʸʤ㳰ȯȡVM ̾㳰ȥ졼Ϥƽλޤ\f3jdb\fP ĶǼ¹ԤƤϡ㳰ȯ \f3jdb\fP 椬ޤˡ\f3jdb\fP Ѥ㳰θǤޤ .LP -たとえば、「\f2catch java.io.FileNotFoundException\fP」または「\f2catch mypackage.BigTroubleException\fP」のように \f2catch\fP コマンドを使用すると、デバッグされたアプリケーションは、ほかの例外がスローされたときに停止します。例外が特定のクラス (またはサブクラス) のインスタンスの場合は、アプリケーションは例外がスローされた場所で停止します。 .LP +ȤС\f2catch java.io.FileNotFoundException\fPפޤϡ\f2catch mypackage.BigTroubleException\fPפΤ褦 \f2catch\fP ޥɤѤȡǥХå줿ץꥱϡۤ㳰줿Ȥߤޤ㳰Υ饹 (ޤϥ֥饹) Υ󥹥󥹤ξϡץꥱ㳰줿ߤޤ .LP -\f2ignore\fP コマンドを使うと、以前の \f2catch\fP コマンドの効果が無効になります。 .LP +\f2ignore\fP ޥɤȤȡ \f2catch\fP ޥɤθ̵̤ˤʤޤ .LP -\f2注:\fP\f2ignore\fP コマンドでは、デバッグされる VM は例外を無視せず、デバッガだけが例外を無視します。 .LP -.RE -.RE -.SH "コマンド行オプション" +\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 コマンドと同じ数のオプションを受け入れます。 +ޥɹԤ Java ץꥱưġ \f3jdb\fP Ѥ硢\f3jdb\fP ϡ\f2\-D\fP\f2\-classpath\fP\f2\-X<option>\fP ʤɡjava ޥɤƱΥץޤ .LP .LP -\f3jdb\fP は、そのほかに次のオプションを受け入れます。 +\f3jdb\fP ϡΤۤ˼Υץޤ .LP .RS 3 .TP 3 \-help -ヘルプメッセージを表示します。 +إץåɽޤ .TP 3 \-sourcepath <dir1:dir2:...> -指定されたパスを使用して、ソースファイルを検索します。このオプションが指定されていない場合は、デフォルトパスの「.」が使われます。 +ꤵ줿ѥѤơե򸡺ޤΥץ󤬻ꤵƤʤϡǥեȥѥΡ.פȤޤ .TP 3 \-attach <address> -デフォルトの接続機構を使用して、すでに実行中の VM にデバッガを接続します。 +ǥեȤ³ѤơǤ˼¹ VM ˥ǥХå³ޤ .TP 3 \-listen <address> -実行中の VM が標準のコネクタを使って指定されたアドレスに接続するのを待機します。 +¹ VM ɸΥͥȤäƻꤵ줿ɥ쥹³ΤԵޤ .TP 3 \-listenany -実行中の VM が標準のコネクタを使って利用可能な任意のアドレスに接続するのを待機します。 +¹ VM ɸΥͥȤäѲǽǤդΥɥ쥹³ΤԵޤ .TP 3 \-launch -デバッグするアプリケーションを jdb の起動後ただちに起動します。このオプションによって、\f2run\fP コマンドを使用する必要がなくなります。デバッグするアプリケーションは、起動後、初期アプリケーションクラスがロードされる直前に停止します。その時点で、必要なブレークポイントを設定し、\f2cont\fP を使用して実行を継続できます。 +ǥХå륢ץꥱ jdb εư夿˵ưޤΥץˤäơ\f2run\fP ޥɤѤɬפʤʤޤǥХå륢ץꥱϡư塢ץꥱ󥯥饹ɤľߤޤλǡɬפʥ֥졼ݥȤꤷ\f2cont\fP ѤƼ¹Ԥ³Ǥޤ .TP 3 \-listconnectors -この VM で利用できるコネクタを一覧表示します。 + VM ѤǤ륳ͥɽޤ .TP 3 \-connect <connector\-name>:<name1>=<value1>,... -一覧表示された引数の値と指定のコネクタを使ってターゲット VM に接続します。 +ɽ줿ͤȻΥͥȤäƥå VM ³ޤ .TP 3 \-dbgtrace [flags] -jdb のデバッグ情報を出力します。 +jdb ΥǥХåϤޤ .TP 3 \-tclient -Java HotSpot(tm) VM (クライアント) 内でアプリケーションを実行します。 +Java HotSpot(tm) VM (饤) ǥץꥱ¹Ԥޤ .TP 3 \-tserver -Java HotSpot(tm) VM (サーバー) 内でアプリケーションを実行します。 +Java HotSpot(tm) VM (С) ǥץꥱ¹Ԥޤ .TP 3 \-Joption -jdb の実行に使用される Java 仮想マシンに \f2option\fP を渡します。(アプリケーション Java 仮想マシンに対するオプションは、\f3run\fP コマンドに渡される)。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +jdb μ¹Ԥ˻Ѥ Java ۥޥ \f2option\fP Ϥޤ(ץꥱ Java ۥޥФ륪ץϡ\f3run\fP ޥɤϤ)ȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ .RE .LP .LP -デバッガとデバッグを行う VM を接続するための代替機構に対して、その他のオプションがサポートされています。その他の接続オプションについては、Java Platform Debugger Architecture の +ǥХåȥǥХåԤ VM ³뤿صФơ¾Υץ󤬥ݡȤƤޤ¾³ץˤĤƤϡJava Platform Debugger Architecture .na -\f2ドキュメント\fP @ +\f2ɥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.htmlを参照してください。 +http://java.sun.com/javase/6/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 オプションです。 +ɸॿå VM ץǤ .RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP -javac(1)、java(1)、javah(1)、javap(1)、javadoc(1) +javac(1)java(1)javah(1)javap(1)javadoc(1) .LP diff --git a/src/linux/doc/man/ja/jhat.1 b/src/linux/doc/man/ja/jhat.1 index 1871ec8686986a57fec3486d31e7934728d95ccb..57ff839ce47354a57153d52e623baf4a95631d1b 100644 --- a/src/linux/doc/man/ja/jhat.1 +++ b/src/linux/doc/man/ja/jhat.1 @@ -19,34 +19,32 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jhat 1 "02 Jun 2010" +.TH jhat 1 "14 Apr 2011" .LP -.SH "名前" -jhat \- Java ヒープ解析ツール +.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 - +.SH "" .LP .nf \f3 @@ -58,88 +56,90 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 options -オプションを使用する場合、コマンド名の直後に記述してください。 -.br +ץѤ硢ޥ̾ľ˵ҤƤ .TP 3 heap\-dump\-file -ブラウズ対象となる Java バイナリヒープダンプファイル。複数のヒープダンプを含むダンプファイルの場合、「foo.hprof#3」のようにファイル名の後に「#<number>」を付加することで、ファイル内の特定のダンプを指定できます。 -.SH "説明" +֥饦оݤȤʤ Java Хʥҡץץե롣ʣΥҡץפޤץեξ硢foo.hprof#3פΤ褦˥ե̾θˡ#<number>פղä뤳ȤǡեΥפǤޤ +.RE + .LP +.SH "" .LP -\f3jhat\fP コマンドは、java ヒープダンプファイルを解析し、Web サーバーを起動します。 jhat を使えば、お好みの Web ブラウザを使ってヒープダンプをブラウズできます。 jhat は、「ある既知のクラス「Foo」のすべてのインスタンスを表示する」といった、事前に設計されたクエリのほか、\f3OQL\fP (\f3O\fPbject \f3Q\fPuery \f3L\fPanguage) もサポートします。OQL のヘルプには、jhat によって表示される OQL ヘルプページからアクセスできます。デフォルトポートを使用する場合、OQL のヘルプは http://localhost:7000/oqlhelp/ で利用可能です。 .LP +\f3jhat\fP ޥɤϡjava ҡץץեϤWeb Сưޤjhat ȤСߤ Web ֥饦Ȥäƥҡץפ֥饦Ǥޤjhat ϡ֤ΤΥ饹FooפΤ٤ƤΥ󥹥󥹤ɽפȤä߷פ줿Τۤ\f3OQL\fP (\f3O\fPbject \f3Q\fPuery \f3L\fPanguage) ⥵ݡȤޤOQL Υإפˤϡjhat ˤäɽ OQL إץڡ饢ǤޤǥեȥݡȤѤ硢OQL Υإפ http://localhost:7000/oqlhelp/ ѲǽǤ .LP -Java のヒープダンプを生成するには、いくつかの方法があります。 +.LP +Java ΥҡץפˤϡĤˡޤ .LP .RS 3 .TP 2 o -jmap(1) の \-dump オプションを使って実行時にヒープダンプを取得する。 +jmap(1) \-dump ץȤäƼ¹Ի˥ҡץפ롣 .TP 2 o -jconsole(1) のオプションを使って +jconsole(1) ΥץȤä .na \f2HotSpotDiagnosticMXBean\fP @ .fi -http://java.sun.com/javase/6/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html 経由で実行時にヒープダンプを取得する。 +http://java.sun.com/javase/6/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html ͳǼ¹Ի˥ҡץפ롣 .TP 2 o -\-XX:+HeapDumpOnOutOfMemoryError VM オプションを指定すると、OutOfMemoryError のスロー時にヒープダンプが生成される。 +\-XX:+HeapDumpOnOutOfMemoryError VM ץꤹȡOutOfMemoryError Υ˥ҡץפ롣 .TP 2 o .na \f2hprof\fP @ .fi -http://java.sun.com/developer/technicalArticles/Programming/HPROF.html を使用する。 +http://java.sun.com/developer/technicalArticles/Programming/HPROF.html Ѥ롣 .RE .LP .LP -\f3注:\fP このツールは\f3試験的なもの\fPであり、将来の JDK のバージョンでは\f3利用できなくなる\fP可能性があります。 +\f3:\fP Υġ\f3Ūʤ\fPǤꡢ JDK ΥСǤ\f3ѤǤʤʤ\fPǽޤ +.LP +.SH "ץ" .LP -.SH "オプション" .RS 3 .TP 3 \-stack false/true -オブジェクト割り当て呼び出しスタックの追跡を無効にします。ヒープダンプ内で割り当てサイト情報が使用できない場合、このフラグを false に設定する必要があります。デフォルトは true です。 +֥ȳƸƤӽФåפ̵ˤޤҡץdzƥȾ󤬻ѤǤʤ硢Υե饰 false ꤹɬפޤǥեȤ true Ǥ .TP 3 \-refs false/true -オブジェクトへの参照の追跡を無効にします。デフォルトは true です。デフォルトでは、ヒープ内のすべてのオブジェクトについて、バックポインタ (指定されたオブジェクトをポイントしているオブジェクト。 参照者または受信参照とも呼ばれる) が計算されます。 +֥ȤؤλȤפ̵ˤޤǥեȤ true ǤǥեȤǤϡҡΤ٤ƤΥ֥ȤˤĤơХåݥ (ꤵ줿֥ȤݥȤƤ륪֥ȡȼԤޤϼȤȤƤФ) ׻ޤ .TP 3 \-port port\-number -jhat の HTTP サーバーのポートを設定します。デフォルトは 7000 です。 +jhat HTTP СΥݡȤꤷޤǥեȤ 7000 Ǥ .TP 3 \-exclude exclude\-file -「到達可能なオブジェクト」のクエリから除外すべきデータメンバーの一覧を含むファイルを指定します。たとえば、このファイルに \f2java.lang.String.value\fP が含まれていた場合、特定のオブジェクト「o」から到達可能なオブジェクトのリストを計算する際に、\f2java.lang.String.value\fP フィールドに関連する参照パスが考慮されなくなります。 +ãǽʥ֥ȡפΥ꤫٤ǡСΰޤեꤷޤȤСΥե \f2java.lang.String.value\fP ޤޤƤ硢Υ֥ȡoפãǽʥ֥ȤΥꥹȤ׻ݤˡ\f2java.lang.String.value\fP եɤ˴Ϣ뻲ȥѥθʤʤޤ .TP 3 \-baseline baseline\-dump\-file -ベースラインとなるヒープダンプを指定します。両方のヒープダンプ内で同じオブジェクト ID を持つオブジェクトは「新規ではない」としてマークされます。その他のオブジェクトは「新規」としてマークされます。これは、異なる 2 つのヒープダンプを比較する際に役立ちます。 +١饤ȤʤҡץפꤷޤξΥҡץƱ֥ ID ĥ֥ȤϡֿǤϤʤפȤƥޡޤ¾Υ֥ȤϡֿפȤƥޡޤϡۤʤ 2 ĤΥҡץפӤݤΩޤ .TP 3 \-debug int -このツールのデバッグレベルを設定します。0 は「デバッグ出力なし」を意味します。より大きな値を設定すると、より冗長なモードになります。 +ΥġΥǥХå٥ꤷޤ0 ϡ֥ǥХåϤʤפ̣ޤ礭ͤꤹȡĹʥ⡼ɤˤʤޤ .TP 3 -\-version\ -バージョン番号を報告したあと、終了します。 +\-version +Сֹ𤷤ȡλޤ .TP 3 -\-h\ -ヘルプメッセージを出力して終了します。 +\-h +إץåϤƽλޤ .TP 3 -\-help\ -ヘルプメッセージを出力して終了します。 +\-help +إץåϤƽλޤ .TP 3 -\-J<flag>\ -jhat が実行されている Java 仮想マシンに <flag> を渡します。たとえば、512M バイトの最大ヒープサイズを使用するには、\-J\-Xmx512m とします。 +\-J<flag> +jhat ¹ԤƤ Java ۥޥ <flag> ϤޤȤС512M ХȤκҡץѤˤϡ\-J\-Xmx512m Ȥޤ .RE .LP -.SH "関連項目" +.SH "Ϣ" +.LP .RS 3 .TP 2 o @@ -150,9 +150,10 @@ jconsole(1) .TP 2 o .na -\f2hprof \- ヒープおよび CPU プロファイリングツール\fP @ +\f2hprof \- ҡפ CPU ץե󥰥ġ\fP @ .fi http://java.sun.com/developer/technicalArticles/Programming/HPROF.html .RE -.RE + +.LP diff --git a/src/linux/doc/man/ja/jinfo.1 b/src/linux/doc/man/ja/jinfo.1 index 4a8856260f9665164c9da786991356dd0e567480..14b6814173eaad06045e2a0f82e2963e0e821984 100644 --- a/src/linux/doc/man/ja/jinfo.1 +++ b/src/linux/doc/man/ja/jinfo.1 @@ -19,34 +19,32 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jinfo 1 "02 Jun 2010" +.TH jinfo 1 "14 Apr 2011" .LP -.SH "名前" -jinfo \- 構成情報 +.SH "̾" +jinfo \- .LP .RS 3 .TP 2 o -形式 + .TP 2 o -パラメータ +ѥ᡼ .TP 2 o -説明 + .TP 2 o -オプション +ץ .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -60,98 +58,100 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 option -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。 +ƥץϸߤ¾ŪǤץѤ硢ޥ̾ľ˵Ҥޤ +.RE + +.LP .RS 3 .TP 3 pid -出力する構成情報のプロセス ID。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 +Ϥ빽Υץ IDץ Java ץǤɬפޤޥǼ¹ԤƤ Java ץΰˤϡjps(1) Ѥޤ .RE + +.LP .RS 3 .TP 3 executable -コアダンプの作成元の Java 実行可能ファイルです。 +פκ Java ¹ԲǽեǤ .RE + +.LP .RS 3 .TP 3 core -出力する構成情報のコアファイル。 +Ϥ빽Υե롣 .RE + +.LP .RS 3 .TP 3 remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 +⡼ȥǥХåС (jsadebugd(1) 򻲾) Υۥ̾ޤ IP ɥ쥹Ǥ .RE + +.LP .RS 3 .TP 3 server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 -.RE +ʣΥǥХåСƱΥ⡼ȥۥȤǼ¹ԤƤΡץͭ ID Ǥ .RE .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3jinfo\fP は、指定された Java プロセスやコアファイルまたはリモートデバッグサーバーの Java 構成情報を出力します。構成情報は、Java システムプロパティーと Java 仮想マシンのコマンド行フラグから構成されます。指定されたプロセスが 64 ビット VM 上で実行されている場合、\f2\-J\-d64\fP オプションを指定しなければならない場合があります。 次に例を示します。 +\f3jinfo\fP ϡꤵ줿 Java ץ䥳եޤϥ⡼ȥǥХåС Java ϤޤϡJava ƥץѥƥ Java ۥޥΥޥɹԥե饰鹽ޤꤵ줿ץ 64 ӥå VM Ǽ¹ԤƤ硢\f2\-J\-d64\fP ץꤷʤФʤʤ礬ޤ򼨤ޤ .br - +jinfo \-J\-d64 \-sysprops pid .LP -.RS 3 - .LP -jinfo \-J\-d64 \-sysprops pid -.RE +\f3 \- Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤdbgeng.dll ¸ߤƤʤ Windows ƥǤϡDebugging Tools For Windowsפ򥤥󥹥ȡ뤷ʤȤΥġ뤬ưޤ󡣤ޤ \fP\f4PATH\fP\f3 ĶѿˤϡåȥץˤäƻѤ \fP\f4jvm.dll\fP\f3 ξꡢޤϥåץե뤬줿꤬ޤޤ褦ˤƤ\fP .LP -\f3注 \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。Windows 上の jinfo でサポートされているのは、実行中のプロセスの \-flag オプションだけです。\fP .LP -.SH "オプション" +\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 に渡されるコマンド行フラグをペアで出力します。 +JVM Ϥ륳ޥɹԥե饰ڥǽϤޤ .br .TP 3 \-sysprops -Java システムプロパティーを名前と値のペアとして出力します。 +Java ƥץѥƥ̾ͤΥڥȤƽϤޤ .br .TP 3 \-h -ヘルプメッセージを出力します。 +إץåϤޤ .TP 3 \-help -ヘルプメッセージを出力します。 +إץåϤޤ .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 diff --git a/src/linux/doc/man/ja/jmap.1 b/src/linux/doc/man/ja/jmap.1 index 87dc7cdf37ee44464020d22cb26e60c31a0214c1..b3679c520fea733a8f42f7a07772d29d2d2d105c 100644 --- a/src/linux/doc/man/ja/jmap.1 +++ b/src/linux/doc/man/ja/jmap.1 @@ -19,34 +19,32 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jmap 1 "02 Jun 2010" +.TH jmap 1 "14 Apr 2011" .LP -.SH "名前" -jmap \- メモリーマップ +.SH "̾" +jmap \- ꡼ޥå .LP .RS 3 .TP 2 o -形式 + .TP 2 o -パラメータ +ѥ᡼ .TP 2 o -説明 + .TP 2 o -オプション +ץ .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -60,46 +58,39 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 option -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。 +ƥץϸߤ¾ŪǤץѤ硢ޥ̾ľ˵Ҥޤ .TP 3 pid -印刷するメモリーマップのプロセス ID。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 +꡼ޥåפΥץ IDץ Java ץǤɬפޤޥǼ¹ԤƤ Java ץΰˤϡjps(1) Ѥޤ .br .TP 3 executable -コアダンプの作成元の Java 実行可能ファイルです。 +פκ Java ¹ԲǽեǤ .br .TP 3 core -印刷するメモリーマップのコアファイル。 +꡼ޥåפΥե롣 .br .TP 3 remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 +⡼ȥǥХåС (jsadebugd(1) 򻲾) Υۥ̾ޤ IP ɥ쥹Ǥ .br .TP 3 server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 +ʣΥǥХåСƱΥ⡼ȥۥȤǼ¹ԤƤΡץͭ ID Ǥ .br .RE .LP -.SH " 説明" -.LP - -.LP +.SH "" .LP -\f3jmap\fP は、指定されたプロセスやコアファイルまたはリモートデバッグサーバーの、共用オブジェクトメモリーマップまたはヒープメモリーの詳細を印刷します。指定されたプロセスが 64 ビット VM 上で実行されている場合、\f2\-J\-d64\fP オプションを指定しなければならない場合があります。 次に例を示します。 .LP -.RS 3 - +\f3jmap\fP ϡꤵ줿ץ䥳եޤϥ⡼ȥǥХåСΡѥ֥ȥ꡼ޥåפޤϥҡץ꡼ξܺ٤ޤꤵ줿ץ 64 ӥå VM Ǽ¹ԤƤ硢\f2\-J\-d64\fP ץꤷʤФʤʤ礬ޤ򼨤ޤ .LP .nf \f3 @@ -108,76 +99,66 @@ jmap \-J\-d64 \-heap pid .fl \fP .fi -.RE .LP -\f3注 \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。\fP -.br - .LP -Windows プラットフォーム上で使用可能な唯一の jmap 形式は、次のとおりです。 -.RS 3 - +\f3: Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤdbgeng.dll ¸ߤƤʤ Windows ƥǤϡDebugging Tools For Windowsפ򥤥󥹥ȡ뤷ʤȤΥġ뤬ưޤ󡣤ޤ \fP\f4PATH\fP\f3 ĶѿˤϡåȥץˤäƻѤ \fP\f4jvm.dll\fP\f3 ξꡢޤϥåץե뤬줿꤬ޤޤ褦ˤƤ\fP .LP -jmap \-dump:<\f2dump\-options\fP> pid -.RE -および -.RS 3 - .LP -jmap \-histo[:live] pid -.RE -.SH "オプション" +\f3򼨤ޤ \fP\f4set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP .LP +.br +.LP +.SH "ץ" .LP .RS 3 .TP 3 -<オプションなし> -オプションを使用しない場合、\f3jmap\fP は共用オブジェクトマッピングを印刷します。ターゲット VM にロードされた共用オブジェクトごとに、開始アドレス、マッピングのサイズ、および共用オブジェクトファイルのフルパスが印刷されます。これは、Solaris \f3pmap\fP ユーティリティーと類似しています。 +<ץʤ> +ץѤʤ硢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) を使って読み取ります。 +Java ҡפ hprof Хʥ filename ˥פޤ\f2live\fP ֥ץϾάǽǤ줬ꤵ줿硢ҡ¸Υ֥ȤΤߤפޤҡץפ򻲾Ȥˤϡ줿ե jhat(1) (Java Heap Analysis Tool) Ȥäɤ߼ޤ .br .TP 3 \-finalizerinfo -ファイナライズを待っているオブジェクトに関する情報を出力します。 +եʥ饤ԤäƤ륪֥Ȥ˴ؤϤޤ .br .TP 3 \-heap -ヒープサマリーを印刷します。使用される GC アルゴリズム、ヒープ構成、および世代ごとのヒープ使用率が印刷されます。 +ҡץޥ꡼ޤѤ GC 르ꥺࡢҡ׹头ȤΥҡ׻Ψޤ .br .TP 3 \-histo[:live] -ヒープのヒストグラムを印刷します。Java クラスごとに、オブジェクトの数、バイト単位でのメモリーサイズ、および完全修飾クラス名が印刷されます。VM 内部クラス名は、「*」の接頭辞を付けて印刷されます。\f2live\fP サブオプションが指定された場合、生存中のオブジェクトのみがカウントされます。 +ҡפΥҥȥޤJava 饹Ȥˡ֥ȤοХñ̤ǤΥ꡼Ӵ饹̾ޤVM 饹̾ϡ*פƬդưޤ\f2live\fP ֥ץ󤬻ꤵ줿硢¸Υ֥ȤΤߤȤޤ .br .TP 3 \-permstat -Permanent 世代の Java ヒープの、クラスローダー関連の統計データを印刷します。クラスローダーごとに、その名前、状態、アドレス、親クラスローダー、およびクラスローダーがロードしたクラスの数とサイズが印刷されます。さらに、intern された文字列の数とサイズも出力されます。 +Permanent Java ҡפΡ饹Ϣץǡޤ饹Ȥˡ̾֡ɥ쥹ƥ饹ӥ饹ɤ饹οȥޤˡintern 줿ʸοȥϤޤ .br .TP 3 \-F -強制 (Force)。pid が応答しない場合に、jmap \-dump または jmap \-histo オプションとともに使用します。このモードでは、\f2live\fP サブオプションはサポートされません。 + (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> を渡します。 +jmap ¹ԤƤ Java ۥޥ <flag> Ϥޤ .br .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 diff --git a/src/linux/doc/man/ja/jps.1 b/src/linux/doc/man/ja/jps.1 index f4f80ce430e11718aff0410ab4e86072336fbd60..718cbdc8ef04294dd68698d2d678d69ab4edb892 100644 --- a/src/linux/doc/man/ja/jps.1 +++ b/src/linux/doc/man/ja/jps.1 @@ -19,43 +19,41 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jps 1 "02 Jun 2010" +.TH jps 1 "14 Apr 2011" .LP -.SH "名前" -jps \- Java 仮想マシンプロセスステータスツール +.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 - +.SH "" .LP .nf \f3 @@ -67,79 +65,70 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 options -コマンド行オプション。 +ޥɹԥץ .TP 3 hostid -プロセスレポートを生成するホストのホスト識別子。\f2hostid\fP には、通信プロトコル、ポート番号、実装に固有な他のデータを指定したオプションコンポーネントを含めることができます。 +ץݡȤۥȤΥۥȼ̻ҡ\f2hostid\fP ˤϡ̿ץȥ롢ݡֹ桢˸ͭ¾Υǡꤷץ󥳥ݡͥȤޤ뤳ȤǤޤ .RE .LP -.SH " 説明" -.LP - +.SH " " .LP .LP -\f3jps\fP ツールは、ターゲットシステム上で計測された HotSpot Java 仮想マシン (JVM) を一覧表示します。このツールで表示できるレポート情報は、アクセス権を持った JVM に関するものに限定されます。 +\f3jps\fP ġϡåȥƥǷ¬줿 HotSpot Java ۥޥ (JVM) ɽޤΥġɽǤݡȾϡä JVM ˴ؤΤ˸ꤵޤ .LP .LP -\f2hostid\fP を指定せずに \f3jps\fP を実行した場合、ローカルホストで計測された JVM が検索されます。\f2hostid\fP を指定して起動した場合、指定されたプロトコルとポートを使用して、指定されたホスト上の JVM を検索します。\f3jstatd\fP プロセスがターゲットホスト上で実行されていると想定されます。 +\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 ファイルパス情報が省略されています。 +\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 を出力します。 +\f3jps\fP ޥɤϡ\f3Java\fP ưġѤ \f2main\fP ᥽åɤϤ륯饹̾Ȱ򸡺ޤȼεưġѤƥå JVM ưϡ \f2main\fP ᥽åɤϤ륯饹̾ (ޤ JAR ե̾) ȰѤǤޤ󡣤ξ硢\f3jps\fP ޥɤϡmain ᥽åɤϤ륯饹̾ (ޤ JAR ե̾) ȰФơʸ \f2Unknown\fP Ϥޤ .LP .LP -\f3jps\fP コマンドで生成される JVM のリストは、このコマンドを実行する主体に与えられたアクセス権に基づき、制限される場合があります。このコマンドは、オペレーティングシステム独自のアクセス制御機構による決定に基づいて、主体にアクセス権が与えられている JVM だけを一覧表示します。 +\f3jps\fP ޥɤ JVM ΥꥹȤϡΥޥɤ¹ԤΤͿ줿˴Ť¤礬ޤΥޥɤϡڥ졼ƥ󥰥ƥȼΥ浡ˤ˴ŤơΤ˥ͿƤ JVM ɽޤ .LP .LP -\f3注:\fP このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 +\f3:\fP Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤߡWindows 98 Windows Me ץåȥեǤϻѤǤޤ .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .LP -\f3jps\fP コマンドでは、コマンドの出力を変更するオプションが多数サポートされています。将来、これらのオプションは、変更または廃止される可能性があります。 +\f3jps\fP ޥɤǤϡޥɤνϤѹ륪ץ¿ݡȤƤޤ衢Υץϡѹޤѻߤǽޤ .LP .RS 3 .TP 3 \-q -ローカル VM 識別子のリストだけを生成するように、\f2main\fP メソッドに渡されるクラス名、JAR ファイル名、および引数の出力を制御します。 +饹̾JAR ե̾ \f2main\fP ᥽åɤϤ줿νϤ VM ̻ҤΰΤߤޤ .TP 3 \-m -main メソッドに渡される引数を出力します。この出力は、組み込まれている JVM に対して null になることもあります。 +main ᥽åɤϤϤޤνϤϡȤ߹ޤƤ JVM Ф null ˤʤ뤳Ȥ⤢ޤ .TP 3 \-l -アプリケーションの主要なクラスのフルパッケージ名、またはアプリケーションの JAR ファイルへのフルパス名を出力します。 +ץꥱμפʥ饹Υեѥå̾ޤϥץꥱ JAR եؤΥեѥ̾Ϥޤ .TP 3 \-v -JVM に渡される引数を出力します。 +JVM ϤϤޤ .TP 3 \-V -フラグファイル (.hotspotrc ファイルまたは \-XX:Flags=<\f2filename\fP> の引数で指定されたファイル) を通じて JVM に渡される引数を出力します。 +ե饰ե (.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 にオプション渡すことは、よく行われています。 +\f3jps\fP ƤӽФ \f3java\fP ưġˡ\f2option\fP ϤޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ\f3\-J\fP ȤäơJava ǵҤ줿ץꥱ¹Ԥظ VM ˥ץϤȤϡ褯ԤƤޤ .RE .LP .SS -ホスト識別子 +ۥȼ̻ .LP -.RS 3 - .LP -.LP -ホスト識別子、つまり \f2hostid\fP は、ターゲットシステムを示す文字列です。\f2hostid\fP 文字列の構文の大部分は、URI の構文に対応しています。 +ۥȼ̻ҡĤޤ \f2hostid\fP ϡåȥƥ򼨤ʸǤ\f2hostid\fP ʸιʸʬϡURI ιʸбƤޤ .LP .nf \f3 @@ -155,26 +144,23 @@ JVM に渡される引数を出力します。 .RS 3 .TP 3 protocol -通信プロトコルです。\f2protocol\fP が省略され、\f2hostname\fP が指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカルプロトコルになります。\f2protocol\fP が省略され、\f2hostname\fP が指定されている場合は、デフォルトプロトコルは \f3rmi\fP になります。 +̿ץȥǤ\f2protocol\fP ά졢\f2hostname\fP ꤵƤʤ硢ǥեȤΥץȥ뤬ץåȥեͭκŬ줿ץȥˤʤޤ\f2protocol\fP ά졢\f2hostname\fP ꤵƤϡǥեȥץȥ \f3rmi\fP ˤʤޤ .TP 3 hostname -ターゲットホストを示すホスト名または IP アドレスです。\f2hostname\fP が省略されている場合は、ターゲットホストはローカルホストになります。 +åȥۥȤ򼨤ۥ̾ޤ 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) が使用されます。 +⡼ȥС̿뤿ΥǥեȥݡȤǤ\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 オプションを参照してください。 +Υѥ᡼ΰϡˤäưۤʤޤŬ줿ץȥξ硢Υեɤ̵뤵ޤ\f3rmi\fP ץȥξ硢Υѥ᡼ϡ⡼ȥۥȾ RMI ⡼ȥ֥Ȥ̾򼨤ʸˤʤޤjstatd(1) ޥɤˤĤƤϡ\f3\-n\fP ץ򻲾ȤƤ .RE .LP -.RE -.SH "出力形式" -.LP - +.SH "Ϸ" .LP .LP -\f3jps\fP コマンドの出力は、次のパターンに従います。 +\f3jps\fP ޥɤνϤϡΥѥ˽ޤ .LP .nf \f3 @@ -188,22 +174,20 @@ servername .LP .LP -すべての出力トークンは空白で区切ります。\f2arg\fP の中で空白を使用すると、実際の定位置パラメータに引数をマッピングしようとするときに、あいまいになります。 +٤Ƥνϥȡ϶Ƕڤޤ\f2arg\fP ǶѤȡºݤ֥ѥ᡼˰ޥåԥ󥰤褦ȤȤˡޤˤʤޤ .br .br -\f3注\fP: 将来のリリースでこの形式は変更される可能性があるため、\f3jps\fP 出力を解析するスクリプトは作成しないことをお勧めします。\f3jps\fP 出力を解析するスクリプトを作成すると、このツールの将来のリリースで、作成したスクリプトを変更する必要が予測されます。 +\f3\fP: Υ꡼Ǥηѹǽ뤿ᡢ\f3jps\fP νϤϤ륹ץȤϺʤȤ򤪴ᤷޤ\f3jps\fP ϤϤ륹ץȤȡΥġξΥ꡼ǡץȤѹɬפͽ¬ޤ .br .LP -.SH "例" -.LP - +.SH "" .LP .LP -この節では、\f3jps\fP コマンドの例を示します。 +Ǥϡ\f3jps\fP ޥɤ򼨤ޤ .LP .LP -ローカルホスト上で計測された JVM を一覧表示する場合: +ۥȾǷ¬줿 JVM ɽ: .LP .nf \f3 @@ -228,10 +212,10 @@ servername .LP .LP -リモートホスト上で計測された JVM を一覧表示する場合: +⡼ȥۥȾǷ¬줿 JVM ɽ: .LP .LP -この例では、\f3jstat\fP サーバーと、その内部 RMI レジストリまたは別の外部 \f3rmiregistry\fP プロセスのいずれかとが、リモートホストのデフォルトポート (ポート 1099) で実行されていると想定しています。また、ローカルホストが、リモートホストへの有効なアクセス権を持っていることも想定しています。この例には、\f2\-l\fP オプションも含まれ、クラス名または JAR ファイル名を詳細な形式で出力します。 +Ǥϡ\f3jstat\fP Сȡ RMI 쥸ȥޤ̤γ \f3rmiregistry\fP ץΤ줫Ȥ⡼ȥۥȤΥǥեȥݡ (ݡ 1099) Ǽ¹ԤƤꤷƤޤޤۥȤ⡼ȥۥȤؤͭʥäƤ뤳ȤꤷƤޤˤϡ\f2\-l\fP ץޤޤ졢饹̾ޤ JAR ե̾ܺ٤ʷǽϤޤ .LP .nf \f3 @@ -240,7 +224,7 @@ servername .br .fl -3002 /opt/jdk1.5.0/demo/jfc/Java2D/Java2Demo.JAR +3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR .br .fl @@ -252,10 +236,10 @@ servername .LP .LP -RMI レジストリにデフォルトではないポートを使用して、リモートホスト上で計測された JVM を一覧表示する場合: +RMI 쥸ȥ˥ǥեȤǤϤʤݡȤѤơ⡼ȥۥȾǷ¬줿 JVM ɽ: .LP .LP -この例では、内部 RMI レジストリがポート 2002 にバインドされた \f3jstatd\fP サーバーが、リモートホスト上で実行していると想定しています。また、\f2\-m\fP オプションを使用して、一覧表示されたそれぞれの Java アプリケーションの \f2main\fP メソッドに渡される引数を組み込んでいます。 +Ǥϡ RMI 쥸ȥ꤬ݡ 2002 ˥Хɤ줿 \f3jstatd\fP С⡼ȥۥȾǼ¹ԤƤꤷƤޤޤ\f2\-m\fP ץѤơɽ줿줾 Java ץꥱ \f2main\fP ᥽åɤϤȤ߹Ǥޤ .LP .nf \f3 @@ -264,7 +248,7 @@ RMI レジストリにデフォルトではないポートを使用して、リ .br .fl -3002 /opt/jdk1.5.0/demo/jfc/Java2D/Java2Demo.JAR +3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR .br .fl @@ -273,21 +257,21 @@ RMI レジストリにデフォルトではないポートを使用して、リ .fi .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o -「java(1) \- Java アプリケーション起動ツール」 +java(1) \- Java ץꥱưġ .TP 2 o -「jstat(1) \- Java 仮想マシン統計データ監視ツール」 +jstat(1) \- Java ۥޥץǡƻġ .TP 2 o -「jstatd(1) \- 仮想マシン jstat デーモン」 +jstatd(1) \- ۥޥ jstat ǡ .TP 2 o -「rmiregistry(1) \- Java リモートオブジェクトレジストリ」 +rmiregistry(1) \- Java ⡼ȥ֥ȥ쥸ȥ .RE .LP diff --git a/src/linux/doc/man/ja/jrunscript.1 b/src/linux/doc/man/ja/jrunscript.1 index 0f4b3599cde3e6e3721feeeede0111488ec26e44..70b527f7e45b5f3d55d38ebe7ec247dfaa302934 100644 --- a/src/linux/doc/man/ja/jrunscript.1 +++ b/src/linux/doc/man/ja/jrunscript.1 @@ -1,4 +1,4 @@ -." Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 2006, 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 @@ -19,40 +19,38 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jrunscript 1 "02 Jun 2010" +.TH jrunscript 1 "14 Apr 2011" .LP -.SH "名前" -jrunscript \- コマンド行スクリプトシェル +.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 - +.SH "" .LP .nf \f3 @@ -62,85 +60,77 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 options -オプションを使用する場合、コマンド名の直後に記述してください。 +ץѤ硢ޥ̾ľ˵ҤƤ .TP 3 arguments -引数を使用する場合、オプションまたはコマンド名の直後に記述してください。 +Ѥ硢ץޤϥޥ̾ľ˵ҤƤ .RE .LP -.SH " 説明" -.LP - -.LP +.SH " " .LP -\f3jrunscript\fP はコマンド行スクリプトシェルです。 jrunscript は、対話型 (読み取り \- 評価 \- 出力) モードとバッチ (\-f オプション) モードの両方のスクリプト実行をサポートします。これはスクリプト言語に依存しないシェルです。デフォルトの使用言語は JavaScript ですが、\-l オプションを使えばほかの言語も指定できます。jrunscript は、Java とスクリプト言語との通信によって「探求的なプログラミング」スタイルをサポートします。 .LP +\f3jrunscript\fP ϥޥɹԥץȥǤjrunscript ϡ÷ (ɤ߼ \- ɾ \- ) ⡼ɤȥХå (\-f ץ) ⡼ɤξΥץȼ¹Ԥ򥵥ݡȤޤϥץȸ˰¸ʤǤǥեȤλѸ JavaScript Ǥ\-l ץȤФۤθǤޤjrunscript ϡJava ȥץȸȤ̿ˤäơõŪʥץߥ󥰡ץ򥵥ݡȤޤ .LP -\f3注:\fP このツールは\f3試験的なもの\fPであり、将来の JDK のバージョンでは\f3利用できなくなる\fP可能性があります。 .LP -.SH "オプション" +\f3:\fP Υġ\f3Ūʤ\fPǤꡢ JDK ΥСǤ\f3ѤǤʤʤ\fPǽޤ .LP - +.SH "ץ" .LP .RS 3 .TP 3 \-classpath path -スクリプトからのアクセス対象となるユーザーの .class ファイルの検索場所を指定します。 +ץȤΥоݤȤʤ桼 .class եθꤷޤ .TP 3 \-cp path -\-classpath \f2path\fP と同義です。 +\-classpath \f2path\fP ƱǤ .TP 3 \-Dname=value -Java のシステムプロパティーを設定します。 +Java Υƥץѥƥꤷޤ .TP 3 \-J<flag> -jrunscript が実行されている Java 仮想マシンに <flag> を渡します。 +jrunscript ¹ԤƤ Java ۥޥ <flag> Ϥޤ .TP 3 \-l language -指定されたスクリプト言語を使用します。デフォルトでは JavaScript が使用されます。ほかのスクリプト言語を使用するには、対応するスクリプトエンジンの JAR ファイルも指定する必要があります。 それには、\-cp、\-classpath のいずれかのオプションを使用します。 +ꤵ줿ץȸѤޤǥեȤǤ JavaScript ѤޤۤΥץȸѤˤϡб륹ץȥ󥸥 JAR եꤹɬפޤˤϡ\-cp\-classpath Τ줫ΥץѤޤ .TP 3 \-e script -指定されたスクリプトを評価します。このオプションを使えば、コマンド行にすべてが指定された「1 行」スクリプトを実行できます。 +ꤵ줿ץȤɾޤΥץȤСޥɹԤˤ٤Ƥꤵ줿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 +.SH "" .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 "例" +[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 -\f3インラインスクリプトの実行\fP +.SH "" .LP -.RS 3 - +.SS +饤󥹥ץȤμ¹ .LP .nf \f3 @@ -151,13 +141,10 @@ jrunscript \-e "cat('http://java.sun.com')" .fl \fP .fi -.RE .LP -\f3指定された言語を使用し、指定されたスクリプトファイルを評価する\fP -.LP -.RS 3 - +.SS +ꤵ줿Ѥꤵ줿ץȥեɾ .LP .nf \f3 @@ -166,42 +153,42 @@ jrunscript \-l js \-f test.js .fl \fP .fi -.RE .LP -\f3対話型モード\fP -.LP -.RS 3 - +.SS +÷⡼ .LP .nf \f3 .fl jrunscript .fl -js>print('hello world'); +js> print('Hello World\\n'); +.fl +Hello World +.fl +js> 34 + 55 .fl -hello world +89.0 .fl -js>34 + 55 +js> t = new java.lang.Thread(function() { print('Hello World\\n'); }) .fl -89 +Thread[Thread\-0,5,main] .fl -js> thread(function() { print('hello world'); } +js> t.start() .fl -hello world +js> Hello World +.fl + .fl js> .fl \fP .fi -.RE .LP -\f3スクリプト引数を指定してスクリプトファイルを実行する\fP -.LP -.RS 3 - +.SS +ץȰꤷƥץȥե¹Ԥ .LP .nf \f3 @@ -210,13 +197,12 @@ jrunscript test.js arg1 arg2 arg3 .fl \fP .fi -.RE .LP -test.js が実行対象となるスクリプトファイルであり、arg1、arg2、および arg3 はスクリプト引数としてスクリプトに渡されます。スクリプトは「arguments」配列を使ってこれらにアクセスできます。 -.SH "関連項目" +test.js ¹оݤȤʤ륹ץȥեǤꡢarg1arg2 arg3 ϥץȰȤƥץȤϤޤץȤϡargumentsȤäƤ˥Ǥޤ +.SH "Ϣ" .LP .LP -JavaScript が使用される場合、jrunscript は、最初のユーザー定義スクリプトを評価する前に、いくつかの組み込み関数や組み込みオブジェクトを初期化します。これらの JavaScript 組み込み機能については、jsdocs を参照してください。 +JavaScript Ѥ硢jrunscript ϡǽΥ桼ץȤɾˡĤȤ߹ߴؿȤ߹ߥ֥Ȥޤ JavaScript Ȥ߹ߵǽˤĤƤϡjsdocs 򻲾ȤƤ .LP diff --git a/src/linux/doc/man/ja/jsadebugd.1 b/src/linux/doc/man/ja/jsadebugd.1 index d61e4ec9b481cd30dbc3eb933fa768cddad9f0b4..928334062e72429b962ae69228e9fa93ba2c4e7f 100644 --- a/src/linux/doc/man/ja/jsadebugd.1 +++ b/src/linux/doc/man/ja/jsadebugd.1 @@ -19,31 +19,29 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jsadebugd 1 "02 Jun 2010" +.TH jsadebugd 1 "14 Apr 2011" .LP -.SH "名前" -jsadebugd \- サービスアビリティーエージェントデバッグデーモン +.SH "̾" +jsadebugd \- ӥӥƥȥǥХåǡ .LP .RS 3 .TP 2 o -形式 + .TP 2 o -パラメータ +ѥ᡼ .TP 2 o -説明 + .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -55,14 +53,12 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 pid -デバッグサーバーが接続するプロセスのプロセス ID です。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。単一のプロセスに接続できるデバッグサーバーのインスタンスは、1 つに制限されます。 +ǥХåС³ץΥץ ID Ǥץ Java ץǤɬפޤޥǼ¹ԤƤ Java ץΰˤϡjps(1) ѤޤñΥץ³ǤǥХåСΥ󥹥󥹤ϡ1 Ĥ¤ޤ .RE .LP @@ -74,37 +70,32 @@ executable .LP .RS 3 .TP 3 -コアダンプの作成元になる Java 実行可能ファイルです。 +פκˤʤ Java ¹ԲǽեǤ .RE .LP .RS 3 .TP 3 core -デバッグサーバーを接続するコアファイルです。 +ǥХåС³륳եǤ .RE .LP .RS 3 .TP 3 server\-id -複数のデバッグサーバーが同一のマシン上で実行している場合に必要になる、オプション固有の ID です。この ID は、リモートクライアントが、接続先のデバッグサーバーを特定するために使用する必要があります。この ID は、単一のマシン内で一意でなければなりません。 +ʣΥǥХåСƱΥޥǼ¹ԤƤɬפˤʤ롢ץͭ ID Ǥ ID ϡ⡼ȥ饤Ȥ³ΥǥХåСꤹ뤿˻Ѥɬפޤ ID ϡñΥޥǰդǤʤФʤޤ .RE .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3jsadebugd\fP は、Java プロセスまたはコアファイルに接続し、デバッグサーバーとして機能します。jstack(1)、jmap(1)、および jinfo(1) などのリモートクライアントは、Java Remote Method Invocation (RMI) を使用しているサーバーに接続できます。\f2jsadebugd\fP を起動する前に、次のように指定して +\f3jsadebugd\fP ϡJava ץޤϥե³ǥХåСȤƵǽޤjstack(1)jmap(1) jinfo(1) ʤɤΥ⡼ȥ饤ȤϡJava Remote Method Invocation (RMI) ѤƤ륵С³Ǥޤ \f2jsadebugd\fP ưˡΤ褦ˤ .na \f2rmiregistry\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi を起動する必要があります。 -.LP -.RS 3 - +http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi ưɬפޤ .LP .nf \f3 @@ -113,16 +104,18 @@ http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi を起動する .fl \fP .fi -.RE .LP .LP -ここで、\f2$JAVA_HOME\fP は、JDK のインストールディレクトリです。rmiregistry が起動していない場合、jsadebugd は標準 (1099) ポートの rmiregistry を内部で起動します。デバッグサーバーは、SIGINT を送信する (Ctrl+C を押す) ことにより停止できます。 +ǡ \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 -\f3注 \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。 jsadebugd は、現時点では、Windows プラットフォームでは使用できません。\fP +򼨤ޤ \f2set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 diff --git a/src/linux/doc/man/ja/jstack.1 b/src/linux/doc/man/ja/jstack.1 index f8e29461513689b66a6d5fb1c01c5f98121d9495..a8b3c8f59ab7750db54e8c956b187ce44ff0f663 100644 --- a/src/linux/doc/man/ja/jstack.1 +++ b/src/linux/doc/man/ja/jstack.1 @@ -19,41 +19,39 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jstack 1 "02 Jun 2010" +.TH jstack 1 "14 Apr 2011" .LP -.SH "名前" -jstack \- スタックトレース +.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 - +.SH "" .LP .nf \f3 @@ -67,50 +65,43 @@ o .fi .LP -.SH "パラメータ" +.SH "ѥ᡼" .LP - .LP -.LP -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。オプションを参照してください。 +ƥץϸߤ¾ŪǤץѤ硢ޥ̾ľ˵Ҥޤץ򻲾ȤƤ .LP .RS 3 .TP 3 pid -印刷するスタックトレースのプロセス ID です。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 +륹åȥ졼Υץ ID Ǥץ Java ץǤɬפޤޥǼ¹ԤƤ Java ץΰˤϡjps(1) Ѥޤ .RE .LP .RS 3 .TP 3 executable -コアダンプの作成元の Java 実行可能ファイルです。 +פκ Java ¹ԲǽեǤ .br .TP 3 core -印刷するスタックトレースのコアファイルです。 +륹åȥ졼ΥեǤ .br .TP 3 remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 +⡼ȥǥХåС (jsadebugd(1) 򻲾) Υۥ̾ޤ IP ɥ쥹Ǥ .br .TP 3 server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 +ʣΥǥХåСƱΥ⡼ȥۥȤǼ¹ԤƤΡץͭ ID Ǥ .RE .LP -.SH "説明" -.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 オプションを指定しなければならない場合があります。 次に例を示します。 +\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 -.RS 3 - .LP .nf \f3 @@ -119,51 +110,43 @@ jstack \-J\-d64 \-m pid .fl \fP .fi -.RE .LP .LP -\f3注 \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。Windows プラットフォーム上で使用可能な唯一の jstack 形式は、次のとおりです。\fP +\f3\fP \- Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤdbgeng.dll ¸ߤƤʤ Windows ƥǤϡDebugging Tools For Windowsפ򥤥󥹥ȡ뤷ʤȤΥġ뤬ưޤ󡣤ޤ \f2PATH\fP ĶѿˤϡåȥץˤäƻѤ \f2jvm.dll\fP ξꡢޤϥåץե뤬줿꤬ޤޤ褦ˤƤ .LP -.nf -\f3 -.fl -\fP\f3 jstack [\-l] pid \fP -.fl -.fi - .LP -.SH "オプション" +򼨤ޤ \f2set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP .LP - +.SH "ץ" .LP .RS 3 .TP 3 \-F -「jstack [\-l] pid」が応答しない場合にスタックダンプを強制します。 +jstack [\-l] pidפʤ˥åפޤ .TP 3 \-l -長形式のリスト。所有 java.util.concurrent の +ĹΥꥹȡͭ java.util.concurrent .na -\f2所有できるシンクロナイザ\fP @ +\f2ͭǤ륷󥯥ʥ\fP @ .fi -http://java.sun.com/javase/6/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.htmlの一覧など、ロックについての追加情報を印刷します。 +http://java.sun.com/javase/6/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.htmlΰʤɡåˤĤƤɲþޤ .TP 3 \-m -混合モード (Java およびネイティブ C/C++ フレームの両方) のスタックトレースを印刷します。 +⡼ (Java ӥͥƥ C/C++ ե졼ξ) Υåȥ졼ޤ .TP 3 \-h -ヘルプメッセージを印刷します。 +إץåޤ .br .br .TP 3 \-help -ヘルプメッセージを印刷します。 +إץåϤޤ .br .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 @@ -181,11 +164,9 @@ jsadebugd(1) .RE .LP -.SH "既知のバグ" -.LP - +.SH "ΤΥХ" .LP .LP -混合モードのスタックトレース (\-m オプション使用) は、リモートデバッグサーバーでは機能しません。 +⡼ɤΥåȥ졼 (\-m ץ) ϡ⡼ȥǥХåСǤϵǽޤ .LP diff --git a/src/linux/doc/man/ja/jstat.1 b/src/linux/doc/man/ja/jstat.1 index 3ee68ea035d74a58823d9cb22b7fa381ef7919b6..8b3e670a49dcb4bec4fb2d26bbff1de7b6c47e14 100644 --- a/src/linux/doc/man/ja/jstat.1 +++ b/src/linux/doc/man/ja/jstat.1 @@ -19,44 +19,46 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jstat 1 "02 Jun 2010" +.TH jstat 1 "14 Apr 2011" .LP -.SH "名前" -jstat \- Java 仮想マシン統計データ監視ツール +.SH "̾" +jstat \- Java ۥޥץǡƻġ .LP .RS 3 .TP 2 o -形式 + .TP 2 o -パラメータ +ѥ᡼ .TP 2 o -説明 + .TP 2 o -仮想マシン識別子 +ۥޥ̻ .TP 2 o -オプション -.br -\ \ \- 一般的なオプション -.br -\ \ \- 出力オプション +ץ +.RS 3 +.TP 2 +* +Ūʥץ +.TP 2 +* +ϥץ +.RE .TP 2 o -例 + .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -66,56 +68,49 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 generalOption -単独で使用する一般的なコマンド行オプションです (\-help、\-options、または \-version)。 +ñȤǻѤŪʥޥɹԥץǤ (\-help\-optionsޤ \-version) .TP 3 outputOptions -単一の \f2statOption\fP と、\-t、\-h、および \-J オプションのいずれかを組み合わせた、1 つまたは複数の出力オプションです。 +ñ \f2statOption\fP ȡ\-t\-h \-J ץΤ줫Ȥ߹碌1 ĤޤʣνϥץǤ .TP 3 vmid -ターゲットの Java 仮想マシン (JVM) を示す文字列である仮想マシン識別子です。一般的な構文は次のようになります。 +åȤ 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 を表す単純な整数から、通信プロトコル、ポート番号、および他の実装固有の値を示す複雑な構造まで、さまざまに異なります。詳細は、「仮想マシン識別子」を参照してください。 +vmid ʸιʸʬϡURI ιʸбƤޤ\f2vmid\fP ϡ JVM ɽñ顢̿ץȥ롢ݡֹ桢¾μͭͤ򼨤ʣʹ¤ޤǡޤޤ˰ۤʤޤܺ٤ϡֲۥޥ̻ҡפ򻲾ȤƤ .TP 3 interval[s|ms] -秒 (s) またはミリ秒 (ms) のうち指定した単位でのサンプリング間隔です。デフォルトの単位はミリ秒です。\ 正の整数でなければなりません。\ これが指定された場合、\f3jstat\fP は interval ごとに出力を生成します。 + (s) ޤϥߥ (ms) Τꤷñ̤ǤΥץ󥰴ֳ֤ǤǥեȤñ̤ϥߥäǤǤʤФʤޤ󡣤줬ꤵ줿硢\f3jstat\fP interval Ȥ˽Ϥޤ .TP 3 count -表示するサンプル数です。デフォルト値は無限です。 つまり、\f3jstat\fP は、ターゲット JVM が終了するまで、または \f3jstat\fP コマンドが終了するまで、統計データを表示します。 正の整数値を使用する必要があります。 +ɽ륵ץǤǥե̵ͤ¤ǤĤޤꡢ\f3jstat\fP ϡå JVM λޤǡޤ \f3jstat\fP ޥɤλޤǡץǡɽޤǤʤФʤޤ .RE .LP -.SH " 説明" -.LP - +.SH " " .LP .LP -\f3jstat\fP ツールは、設置されている HotSpot Java 仮想マシン (JVM) のパフォーマンス統計データを表示します。ターゲット JVM は、仮想マシン識別子、つまり下記の \f2vmid\fP オプションによって識別されます。 +\f3jstat\fP ġϡ֤Ƥ HotSpot Java ۥޥ (JVM) Υѥեޥץǡɽޤå JVM ϡۥޥ̻ҡĤޤ겼 \f2vmid\fP ץˤäƼ̤ޤ .LP .LP -\f3注\fP: このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 +\f3\fP: Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤߡWindows 98 Windows Me ץåȥեǤϻѤǤޤ .br .LP .SS -仮想マシン識別子 -.LP -.RS 3 - +ۥޥ̻ .LP .LP -\f2vmid\fP 文字列の構文の大部分は、URI の構文に対応しています。 +\f2vmid\fP ʸιʸʬϡURI ιʸбƤޤ .LP .nf \f3 @@ -128,79 +123,73 @@ count .RS 3 .TP 3 protocol -通信プロトコルです。\f2protocol\fP が省略され、\f2hostname\fP が指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカルプロトコルになります。\f2protocol\fP が省略され、\f2hostname\fP が指定されている場合は、デフォルトプロトコルは \f3rmi\fP になります。 +̿ץȥǤ\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 を指定できます。 +å 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 が省略されている場合は、ターゲットホストはローカルホストになります。 +åȥۥȤ򼨤ۥ̾ޤ 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) が使用されます。 +⡼ȥС̿뤿ΥǥեȥݡȤǤ\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 リソースオブジェクトの名前を示します。 +Υѥ᡼ΰϡˤäưۤʤޤŬ줿ץȥξ硢Υեɤ̵뤵ޤ\f3rmi\fP ץȥξϡΥѥ᡼ϡ⡼ȥۥȾ RMI ꥽֥Ȥ̾򼨤ޤ .RE .LP -.RE -.SH "オプション" +.SH "ץ" .LP - .LP -.LP -\f3jstat\fP コマンドは、一般的なオプションと出力オプションの 2 つのタイプのオプションをサポートしています。一般的なオプションを使用した場合、\f3jstat\fP は簡単な使用率およびバージョン情報を表示します。出力オプションでは、統計データ出力の内容と形式を指定します。 +\f3jstat\fP ޥɤϡŪʥץȽϥץ 2 ĤΥפΥץ򥵥ݡȤƤޤŪʥץѤ硢\f3jstat\fP ϴñʻΨӥСɽޤϥץǤϡץǡϤƤȷꤷޤ .br .LP .LP -\f3注\fP: すべてのオプションとその機能は、将来のリリースで変更または廃止される可能性があります。 +\f3\fP: ٤ƤΥץȤεǽϡΥ꡼ѹޤѻߤǽޤ .LP .SS -一般的なオプション +Ūʥץ .LP .LP -いずれかの一般的なオプションを指定した場合、他のオプションまたはパラメータは一切指定できません。 +줫ΰŪʥץꤷ硢¾Υץޤϥѥ᡼ϰڻǤޤ .LP .RS 3 .TP 3 \-help -ヘルプメッセージを表示します。 +إץåɽޤ .TP 3 \-version -バージョン情報を表示します。 +Сɽޤ .TP 3 \-options -統計データオプションを一覧表示します。下記の「出力オプション」の節を参照してください。 +ץǡץɽޤΡֽϥץפ򻲾ȤƤ .RE .LP .SS -出力オプション +ϥץ .LP -.RS 3 - .LP +ŪʥץꤷʤˡϥץǤޤϥץϡ\f3jstat\fP νϤƤӷꤷñ \f2statOption\fP ȡ¾Τ줫νϥץ (\-h\-t \-J) Ȥǹޤ\f2statOption\fP Ϻǽ˵Ҥɬפޤ .LP -一般的なオプションを指定しない場合に、出力オプションを指定できます。出力オプションは、\f3jstat\fP の出力の内容および形式を指定し、単一の \f2statOption\fP と、他のいずれかの出力オプション (\-h、\-t、および \-J) とで構成されます。\ \f2statOption\fP は最初に記述する必要があります。 .LP +Ϥϡ󤬶Ƕڤ줿ơ֥ηǹޤȥޤإåԤˤäơΰ̣狼ޤإåɽ٤ꤹˤϡ\f3\-h\fP ץѤޤΥإå̾ϰ̤ˡץ֤ǰݤƤޤ̤ˡ2 ĤΥץƱ̾󤬻ѤƤС2 ĤΥǡƱˤʤޤ .LP -出力は、各列が空白で区切られたテーブルの形式で構成されます。タイトルを記したヘッダー行に、各列の説明が記されます。 \f3\-h\fP オプションを使用して、ヘッダーを表示する頻度を設定します。\ 通常、列のヘッダー名はオプションが異なっている場合でも一貫しています。一般に、2 つのオプションで同じ名前の列が使用されていれば、2 つの列のデータソースは同じになります。 .LP +\f3\-t\fP ץѤȡ \f2Timestamp Ȥ٥դॹפ󤬡\fP ϤκǽȤɽޤ \f2Timestamp\fP ˤϡå JVM εưηв֤ñ̤ɽޤॹפ٤ϡޤޤװˤäưۤʤꡢ̤٤ΤäƥǤΥåɥ塼ٱˤưޤ .LP -\f3\-t\fP オプションを使用すると、\f2Timestamp\fP というラベルの付いたタイムスタンプの列が、出力の最初の列として表示されます。\f2Timestamp\fP 列には、ターゲット JVM の起動からの経過時間が、秒単位で表示されます。タイムスタンプの精度は、さまざまな要因によって異なり、大量の負荷のかかったシステムでのスレッドスケジュールの遅延により変動します。 .LP +\f2interval\fP \f2count\fP ѥ᡼Ѥơ\f3jstat\fP νϤɽ٤Ȳ򤽤줾ꤷޤ .LP -\f2interval\fP および \f2count\fP パラメータを使用して、\f3jstat\fP がその出力を表示する頻度と回数をそれぞれ指定します。 .LP -.LP -\f3注\fP: 将来のリリースでこの形式は変更される可能性があるため、\f3jstat\fP の出力を解析するスクリプトは作成しないことをお勧めします。\f3jstat\fP 出力を解析するスクリプトを作成する場合は、このツールの将来のリリースで、そのスクリプトを変更しなければならないことに留意してください。 +\f3\fP: Υ꡼Ǥηѹǽ뤿ᡢ\f3jstat\fP νϤϤ륹ץȤϺʤȤ򤪴ᤷޤ\f3jstat\fP ϤϤ륹ץȤϡΥġξΥ꡼ǡΥץȤѹʤФʤʤȤαդƤ .LP .RS 3 .TP 3 \-statOption -\f3jstat\fP が表示する統計データ情報を指定します。次の表には、利用可能なオプションが一覧表示されています。 特定のプラットフォームのインストールについて、オプションを一覧表示するには、一般的なオプションの \f3\-options\fP を使用します。 +\f3jstat\fP ɽץǡꤷޤɽˡѲǽʥץΰ򼨤ޤΥץåȥե।󥹥ȡΥץɽˤϡŪʥץ \f3\-options\fP Ѥޤ .br .br .LP @@ -232,7 +221,7 @@ servername .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -クラスローダーの動作に関する統計データ +饹ư˴ؤץǡ .br .di .nr a| \n(dn @@ -248,7 +237,7 @@ servername .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -HotSpot Just\-in\-Time コンパイラの動作に関する統計データ +HotSpot Just\-in\-Time ѥư˴ؤץǡ .br .di .nr b| \n(dn @@ -264,7 +253,7 @@ HotSpot Just\-in\-Time コンパイラの動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクトされたヒープの動作に関する統計データ +١쥯Ȥ줿ҡפư˴ؤץǡ .br .di .nr c| \n(dn @@ -280,7 +269,7 @@ HotSpot Just\-in\-Time コンパイラの動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -世代ごとの容量と対応する領域に関する統計データ +头Ȥ̤бΰ˴ؤץǡ .br .di .nr d| \n(dn @@ -296,7 +285,7 @@ HotSpot Just\-in\-Time コンパイラの動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション統計データの概要 (\f3\-gcutil\fP と同じ) と、直前および現在 (適用可能な場合) のガベージコレクションイベントの原因 +١쥯ץǡγ (\f3\-gcutil\fP Ʊ) ȡľӸ (ŬѲǽʾ) Υ١쥯󥤥٥Ȥθ .br .di .nr e| \n(dn @@ -312,7 +301,7 @@ HotSpot Just\-in\-Time コンパイラの動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の動作に関する統計データ +New ư˴ؤץǡ .br .di .nr f| \n(dn @@ -328,7 +317,7 @@ New 世代の動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代のサイズと対応する領域に関する統計データ +New Υбΰ˴ؤץǡ .br .di .nr g| \n(dn @@ -344,7 +333,7 @@ New 世代のサイズと対応する領域に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代および Permanent 世代の動作に関する統計データ +Old 太 Permanent ư˴ؤץǡ .br .di .nr h| \n(dn @@ -360,7 +349,7 @@ Old 世代および Permanent 世代の動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代のサイズに関する統計データ +Old Υ˴ؤץǡ .br .di .nr i| \n(dn @@ -376,7 +365,7 @@ Old 世代のサイズに関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代のサイズに関する統計データ +Permanent Υ˴ؤץǡ .br .di .nr j| \n(dn @@ -392,7 +381,7 @@ Permanent 世代のサイズに関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション統計データの概要 +١쥯ץǡγ .br .di .nr k| \n(dn @@ -408,7 +397,7 @@ Permanent 世代のサイズに関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -HotSpot コンパイル方法の統計データ +HotSpot ѥˡץǡ .br .di .nr l| \n(dn @@ -419,7 +408,7 @@ HotSpot コンパイル方法の統計データ .nf .ll \n(34u .nr 80 0 -.nr 38 \w\f3オプション\fP +.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 @@ -448,7 +437,7 @@ HotSpot コンパイル方法の統計データ .80 .rm 80 .nr 81 0 -.nr 38 \w\f3表示内容\fP +.nr 38 \w\f3ɽ\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -486,7 +475,7 @@ HotSpot コンパイル方法の統計データ .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 259 file Input is too wide - \n(TW units +.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 @@ -503,7 +492,7 @@ HotSpot コンパイル方法の統計データ .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3表示内容\fP +\&\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 @@ -716,30 +705,26 @@ HotSpot コンパイル方法の統計データ .if \n-(b.=0 .nr c. \n(.c-\n(d.-52 .TP 3 \-h n -\f2n\fP サンプル (出力行) ごとに列ヘッダーを表示。 ただし、\f2n\fP は正の整数値。デフォルト値は 0。 このとき、データの最初の行の上に列ヘッダーが表示される +\f2n\fP ץ (Ϲ) Ȥإåɽ \f2n\fP ͡ǥեͤ 0 ΤȤǡκǽιԤξإåɽ .TP 3 \-t n -タイムスタンプ列を出力の最初の列として表示。タイムスタンプは、ターゲット JVM の起動時からの経過時間 +ॹϤκǽȤɽॹפϡå JVM εưηв .TP 3 -\-J javaOption -\f2javaOption\fP を \f3java\fP アプリケーション起動ツールへ渡す。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。オプションの完全なリストについては、「java(1)」のドキュメントを参照してください。 +\-JjavaOption +\f2javaOption\fP \f3java\fP ץꥱưġϤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤץδʥꥹȤˤĤƤϡjava(1)פΥɥȤ򻲾ȤƤ .RE .LP -.RE .SS -statOption と出力 -.LP -.RS 3 - +statOption Ƚ .LP .LP -以降の表では、\f3jstat\fP が \f2statOption\fP ごとに出力する列について概要を示します。 +ʹߤɽǤϡ\f3jstat\fP \f2statOption\fP Ȥ˽ϤˤĤƳפ򼨤ޤ .br .LP .SS -\-class オプション +\-class ץ .LP .LP .TS @@ -770,7 +755,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ロードされたクラスの数 +ɤ줿饹ο .br .di .nr a| \n(dn @@ -786,7 +771,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ロードされた K バイト数 +ɤ줿 K Хȿ .br .di .nr b| \n(dn @@ -802,7 +787,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -アンロードされたクラスの数 +ɤ줿饹ο .br .di .nr c| \n(dn @@ -818,7 +803,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -アンロードされた K バイト数 +ɤ줿 K Хȿ .br .di .nr d| \n(dn @@ -834,7 +819,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -クラスのロードやアンロード処理に要した時間 +饹Υɤ䥢ɽפ .br .di .nr e| \n(dn @@ -845,9 +830,9 @@ statOption と出力 .nf .ll \n(34u .nr 80 0 -.nr 38 \wクラスローダーの統計データ +.nr 38 \w饹ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -862,7 +847,7 @@ statOption と出力 .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -886,7 +871,7 @@ statOption と出力 .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 313 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 298 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -903,11 +888,11 @@ statOption と出力 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'クラスローダーの統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -1002,7 +987,7 @@ statOption と出力 .LP .SS -\-compiler オプション +\-compiler ץ .LP .LP .TS @@ -1033,7 +1018,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -実行されたコンパイルタスクの数 +¹Ԥ줿ѥ륿ο .br .di .nr a| \n(dn @@ -1049,7 +1034,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -失敗したコンパイルタスクの数 +Ԥѥ륿ο .br .di .nr b| \n(dn @@ -1065,7 +1050,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -無効にされたコンパイルタスクの数 +̵ˤ줿ѥ륿ο .br .di .nr c| \n(dn @@ -1081,7 +1066,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -コンパイルタスクの実行に要した時間 +ѥ륿μ¹Ԥפ .br .di .nr d| \n(dn @@ -1097,7 +1082,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -最後に失敗したコンパイルのコンパイルタイプ +Ǹ˼ԤѥΥѥ륿 .br .di .nr e| \n(dn @@ -1113,7 +1098,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -最後に失敗したコンパイルのクラス名とメソッド +Ǹ˼ԤѥΥ饹̾ȥ᥽å .br .di .nr f| \n(dn @@ -1124,9 +1109,9 @@ statOption と出力 .nf .ll \n(34u .nr 80 0 -.nr 38 \wHotSpot Just\-In\-Time コンパイラの統計データ +.nr 38 \wHotSpot Just\-In\-Time ѥץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -1143,7 +1128,7 @@ statOption と出力 .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -1169,7 +1154,7 @@ statOption と出力 .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 349 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 334 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -1186,11 +1171,11 @@ statOption と出力 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'HotSpot Just\-In\-Time コンパイラの統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -1302,7 +1287,7 @@ statOption と出力 .LP .SS -\-gc オプション +\-gc ץ .LP .LP .TS @@ -1333,7 +1318,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の現在の容量 (KB) +Survivor ΰ 0 θߤ (KB) .br .di .nr a| \n(dn @@ -1349,7 +1334,7 @@ Survivor 領域 0 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の現在の容量 (KB) +Survivor ΰ 1 θߤ (KB) .br .di .nr b| \n(dn @@ -1365,7 +1350,7 @@ Survivor 領域 1 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の使用率 (KB) +Survivor ΰ 0 λΨ (KB) .br .di .nr c| \n(dn @@ -1381,7 +1366,7 @@ Survivor 領域 0 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の使用率 (KB) +Survivor ΰ 1 λΨ (KB) .br .di .nr d| \n(dn @@ -1397,7 +1382,7 @@ Survivor 領域 1 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の現在の容量 (KB) +Eden ΰθߤ (KB) .br .di .nr e| \n(dn @@ -1413,7 +1398,7 @@ Eden 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の使用率 (KB) +Eden ΰλΨ (KB) .br .di .nr f| \n(dn @@ -1429,7 +1414,7 @@ Eden 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の現在の容量 (KB) +Old ΰθߤ (KB) .br .di .nr g| \n(dn @@ -1445,7 +1430,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の使用率 (KB) +Old ΰλΨ (KB) .br .di .nr h| \n(dn @@ -1461,7 +1446,7 @@ Old 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の現在の容量 (KB) +Permanent ΰθߤ (KB) .br .di .nr i| \n(dn @@ -1477,7 +1462,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の使用率 (KB) +Permanent ΰλΨ (KB) .br .di .nr j| \n(dn @@ -1493,7 +1478,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr k| \n(dn @@ -1509,7 +1494,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代のガベージコレクション時間 +㤤Υ١쥯 .br .di .nr l| \n(dn @@ -1525,7 +1510,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -フルガベージコレクション時間 +ե륬١쥯 .br .di .nr m| \n(dn @@ -1541,7 +1526,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション総時間 +١쥯 .br .di .nr n| \n(dn @@ -1552,9 +1537,9 @@ Permanent 領域の使用率 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wガベージコレクトされたヒープの統計データ +.nr 38 \w١쥯Ȥ줿ҡפץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -1589,9 +1574,9 @@ Permanent 領域の使用率 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -1633,7 +1618,7 @@ Permanent 領域の使用率 (KB) .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 419 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 404 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -1650,11 +1635,11 @@ Permanent 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'ガベージコレクトされたヒープの統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -1850,7 +1835,7 @@ Permanent 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\h'|\n(40u'FGC\h'|\n(41u'ե GC ٥ȿ .ne \n(m|u+\n(.Vu .if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) .ta \n(80u \n(81u @@ -1906,7 +1891,7 @@ Permanent 領域の使用率 (KB) .LP .SS -\-gccapacity オプション +\-gccapacity ץ .LP .LP .TS @@ -1937,7 +1922,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の最小容量 (KB) +New κǾ (KB) .br .di .nr a| \n(dn @@ -1953,7 +1938,7 @@ New 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の最大容量 (KB) +New κ (KB) .br .di .nr b| \n(dn @@ -1969,7 +1954,7 @@ New 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の現在の容量 (KB) +New θߤ (KB) .br .di .nr c| \n(dn @@ -1985,7 +1970,7 @@ New 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の現在の容量 (KB) +Survivor ΰ 0 θߤ (KB) .br .di .nr d| \n(dn @@ -2001,7 +1986,7 @@ Survivor 領域 0 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の現在の容量 (KB) +Survivor ΰ 1 θߤ (KB) .br .di .nr e| \n(dn @@ -2017,7 +2002,7 @@ Survivor 領域 1 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の現在の容量 (KB) +Eden ΰθߤ (KB) .br .di .nr f| \n(dn @@ -2033,7 +2018,7 @@ Eden 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の最小容量 (KB) +Old κǾ (KB) .br .di .nr g| \n(dn @@ -2049,7 +2034,7 @@ Old 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の最大容量 (KB) +Old κ (KB) .br .di .nr h| \n(dn @@ -2065,7 +2050,7 @@ Old 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の現在の容量 (KB) +Old θߤ (KB) .br .di .nr i| \n(dn @@ -2081,7 +2066,7 @@ Old 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の現在の容量 (KB) +Old ΰθߤ (KB) .br .di .nr j| \n(dn @@ -2097,7 +2082,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の最小容量 (KB) +Permanent κǾ (KB) .br .di .nr k| \n(dn @@ -2113,7 +2098,7 @@ Permanent 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の最大容量 (KB) +Permanent κ (KB) .br .di .nr l| \n(dn @@ -2129,7 +2114,7 @@ Permanent 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の現在の容量 (KB) +Permanent θߤ (KB) .br .di .nr m| \n(dn @@ -2145,7 +2130,7 @@ Permanent 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の現在の容量 (KB) +Permanent ΰθߤ (KB) .br .di .nr n| \n(dn @@ -2161,7 +2146,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr o| \n(dn @@ -2172,9 +2157,9 @@ Permanent 領域の現在の容量 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wメモリープール世代および領域容量 +.nr 38 \w꡼ס太ΰ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -2211,9 +2196,9 @@ Permanent 領域の現在の容量 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -2257,7 +2242,7 @@ Permanent 領域の現在の容量 (KB) .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 493 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 478 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -2274,11 +2259,11 @@ Permanent 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'メモリープール世代および領域容量\h'|\n(41u' +\&\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 +\&\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 @@ -2522,7 +2507,7 @@ Permanent 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\h'|\n(40u'FGC\h'|\n(41u'ե GC ٥ȿ .fc .nr T. 1 .T# 1 @@ -2547,10 +2532,10 @@ Permanent 領域の現在の容量 (KB) .LP .SS -\-gccause オプション +\-gccause ץ .LP .LP -このオプションは、\f3\-gcutil\fP オプションと同じガベージコレクション統計データの概要を表示しますが、最後のガベージコレクションイベントと (適用可能な場合は) 現在のガベージコレクションイベントの原因が含まれます。\f3\-gcutil\fP で一覧表示される列の他に、このオプションでは次の列が追加されます。 +Υץϡ\f3\-gcutil\fP ץƱ١쥯ץǡγפɽޤǸΥ١쥯󥤥٥Ȥ (ŬѲǽʾ) ߤΥ١쥯󥤥٥Ȥθޤޤޤ\f3\-gcutil\fP ǰɽ¾ˡΥץǤϼɲäޤ .LP .LP .TS @@ -2581,7 +2566,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -最後のガベージコレクションの原因 +ǸΥ١쥯θ .br .di .nr a| \n(dn @@ -2597,7 +2582,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -現在のガベージコレクションの原因 +ߤΥ١쥯θ .br .di .nr b| \n(dn @@ -2608,9 +2593,9 @@ Permanent 領域の現在の容量 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wGC イベントを含むガベージコレクション統計データ +.nr 38 \wGC ٥Ȥޤ६١쥯ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -2619,7 +2604,7 @@ Permanent 領域の現在の容量 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -2637,7 +2622,7 @@ Permanent 領域の現在の容量 (KB) .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 516 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 501 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -2654,11 +2639,11 @@ Permanent 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'GC イベントを含むガベージコレクション統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -2702,7 +2687,7 @@ Permanent 領域の現在の容量 (KB) .LP .SS -\-gcnew オプション +\-gcnew ץ .LP .LP .TS @@ -2733,7 +2718,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の現在の容量 (KB) +Survivor ΰ 0 θߤ (KB) .br .di .nr a| \n(dn @@ -2749,7 +2734,7 @@ Survivor 領域 0 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の現在の容量 (KB) +Survivor ΰ 1 θߤ (KB) .br .di .nr b| \n(dn @@ -2765,7 +2750,7 @@ Survivor 領域 1 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の使用率 (KB) +Survivor ΰ 0 λΨ (KB) .br .di .nr c| \n(dn @@ -2781,7 +2766,7 @@ Survivor 領域 0 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の使用率 (KB) +Survivor ΰ 1 λΨ (KB) .br .di .nr d| \n(dn @@ -2797,7 +2782,7 @@ Survivor 領域 1 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -最大殿堂入りしきい値 +Ʋꤷ .br .di .nr e| \n(dn @@ -2813,7 +2798,7 @@ Survivor 領域 1 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -適切な Survivor サイズ (KB) +Ŭڤ Survivor (KB) .br .di .nr f| \n(dn @@ -2829,7 +2814,7 @@ Survivor 領域 1 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の現在の容量 (KB) +Eden ΰθߤ (KB) .br .di .nr g| \n(dn @@ -2845,7 +2830,7 @@ Eden 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の使用率 (KB) +Eden ΰλΨ (KB) .br .di .nr h| \n(dn @@ -2861,7 +2846,7 @@ Eden 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr i| \n(dn @@ -2877,7 +2862,7 @@ Eden 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代のガベージコレクション時間 +㤤Υ١쥯 .br .di .nr j| \n(dn @@ -2888,9 +2873,9 @@ Eden 領域の使用率 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wNew 世代の統計データ +.nr 38 \wNew ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -2917,9 +2902,9 @@ Eden 領域の使用率 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w殿堂入りしきい値 +.nr 38 \wƲꤷ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -2953,7 +2938,7 @@ Eden 領域の使用率 (KB) .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 570 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 555 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -2970,11 +2955,11 @@ Eden 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'New 世代の統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -3042,7 +3027,7 @@ Eden 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'TT\h'|\n(41u'殿堂入りしきい値 +\&\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 @@ -3158,7 +3143,7 @@ Eden 領域の使用率 (KB) .LP .SS -\-gcnewcapacity オプション +\-gcnewcapacity ץ .LP .LP .TS @@ -3181,16 +3166,15 @@ Eden 領域の使用率 (KB) .rm 80 81 .nr 34 \n(.lu .eo -.am 80 +.am 81 .br .di a+ .35 .ft \n(.f .ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u +.if \n(.l<\n(81 .ll \n(81u .in 0 -NGCMN\ \ \ \ \ \ \ \ \ T}~T{ -New 世代の最小容量 (KB) +New κǾ (KB) .br .di .nr a| \n(dn @@ -3206,7 +3190,7 @@ New 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の最大容量 (KB) +New κ (KB) .br .di .nr b| \n(dn @@ -3222,7 +3206,7 @@ New 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の現在の容量 (KB) +New θߤ (KB) .br .di .nr c| \n(dn @@ -3238,7 +3222,7 @@ New 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の最大容量 (KB) +Survivor ΰ 0 κ (KB) .br .di .nr d| \n(dn @@ -3254,7 +3238,7 @@ Survivor 領域 0 の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の現在の容量 (KB) +Survivor ΰ 0 θߤ (KB) .br .di .nr e| \n(dn @@ -3270,7 +3254,7 @@ Survivor 領域 0 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の最大容量 (KB) +Survivor ΰ 1 κ (KB) .br .di .nr f| \n(dn @@ -3286,7 +3270,7 @@ Survivor 領域 1 の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の現在の容量 (KB) +Survivor ΰ 1 θߤ (KB) .br .di .nr g| \n(dn @@ -3302,7 +3286,7 @@ Survivor 領域 1 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の最大容量 (KB) +Eden ΰκ (KB) .br .di .nr h| \n(dn @@ -3318,7 +3302,7 @@ Eden 領域の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の現在の容量 (KB) +Eden ΰθߤ (KB) .br .di .nr i| \n(dn @@ -3334,7 +3318,7 @@ Eden 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr j| \n(dn @@ -3345,13 +3329,15 @@ Eden 領域の現在の容量 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wNew 世代領域サイズの統計データ +.nr 38 \wNew ΰ襵ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.nr 38 \w\f3\fP .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGCMX \ \ \ +.nr 38 \wNGCMN .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGC \ \ \ +.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 @@ -3371,15 +3357,15 @@ Eden 領域の現在の容量 (KB) .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\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.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- @@ -3408,7 +3394,7 @@ Eden 領域の現在の容量 (KB) .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 626 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 609 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -3425,21 +3411,21 @@ Eden 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'New 世代領域サイズの統計データ\h'|\n(41u' +\&\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 +\&\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'\h'|\n(41u' +\&\h'|\n(40u'NGCMN\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v -.nr 37 \n(40u +.nr 37 \n(41u .in +\n(37u .a+ .in -\n(37u @@ -3451,7 +3437,7 @@ Eden 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'NGCMX \ \ \\h'|\n(41u' +\&\h'|\n(40u'NGCMX\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -3467,7 +3453,7 @@ Eden 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'NGC \ \ \\h'|\n(41u' +\&\h'|\n(40u'NGC\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -3593,7 +3579,7 @@ Eden 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\h'|\n(40u'FGC\h'|\n(41u'ե GC ٥ȿ .fc .nr T. 1 .T# 1 @@ -3609,11 +3595,11 @@ Eden 領域の現在の容量 (KB) .rm i+ .rm j+ .TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-49 +.if \n-(b.=0 .nr c. \n(.c-\n(d.-47 .LP .SS -\-gcold オプション +\-gcold ץ .LP .LP .TS @@ -3644,7 +3630,7 @@ Eden 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の現在の容量 (KB) +Permanent ΰθߤ (KB) .br .di .nr a| \n(dn @@ -3660,7 +3646,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の使用率 (KB) +Permanent ΰλΨ (KB) .br .di .nr b| \n(dn @@ -3676,7 +3662,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の現在の容量 (KB) +Old ΰθߤ (KB) .br .di .nr c| \n(dn @@ -3692,7 +3678,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の使用率 (KB) +Old ΰλΨ (KB) .br .di .nr d| \n(dn @@ -3708,7 +3694,7 @@ Old 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr e| \n(dn @@ -3724,7 +3710,7 @@ Old 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -フルガベージコレクション時間 +ե륬١쥯 .br .di .nr f| \n(dn @@ -3740,7 +3726,7 @@ Old 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション総時間 +١쥯 .br .di .nr g| \n(dn @@ -3751,9 +3737,9 @@ Old 領域の使用率 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wOld および Permanent 世代の統計データ +.nr 38 \wOld Permanent ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -3774,9 +3760,9 @@ Old 領域の使用率 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -3804,7 +3790,7 @@ Old 領域の使用率 (KB) .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 668 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 651 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -3821,11 +3807,11 @@ Old 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'Old および Permanent 世代の統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -3909,7 +3895,7 @@ Old 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\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 @@ -3958,7 +3944,7 @@ Old 領域の使用率 (KB) .LP .SS -\-gcoldcapacity オプション +\-gcoldcapacity ץ .LP .LP .TS @@ -3989,7 +3975,7 @@ Old 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の最小容量 (KB) +Old κǾ (KB) .br .di .nr a| \n(dn @@ -4005,7 +3991,7 @@ Old 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の最大容量 (KB) +Old κ (KB) .br .di .nr b| \n(dn @@ -4021,7 +4007,7 @@ Old 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の現在の容量 (KB) +Old θߤ (KB) .br .di .nr c| \n(dn @@ -4037,7 +4023,7 @@ Old 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の現在の容量 (KB) +Old ΰθߤ (KB) .br .di .nr d| \n(dn @@ -4053,7 +4039,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr e| \n(dn @@ -4069,7 +4055,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -フルガベージコレクション時間 +ե륬١쥯 .br .di .nr f| \n(dn @@ -4085,7 +4071,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション総時間 +١쥯 .br .di .nr g| \n(dn @@ -4096,9 +4082,9 @@ Old 領域の現在の容量 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wOld 世代の統計データ +.nr 38 \wOld ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -4119,9 +4105,9 @@ Old 領域の現在の容量 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -4149,7 +4135,7 @@ Old 領域の現在の容量 (KB) .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 710 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 693 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -4166,11 +4152,11 @@ Old 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'Old 世代の統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -4254,7 +4240,7 @@ Old 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\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 @@ -4303,7 +4289,7 @@ Old 領域の現在の容量 (KB) .LP .SS -\-gcpermcapacity オプション +\-gcpermcapacity ץ .LP .LP .TS @@ -4334,7 +4320,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の最小容量 (KB) +Permanent κǾ (KB) .br .di .nr a| \n(dn @@ -4350,7 +4336,7 @@ Permanent 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の最大容量 (KB) +Permanent κ (KB) .br .di .nr b| \n(dn @@ -4366,7 +4352,7 @@ Permanent 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の現在の容量 (KB) +Permanent θߤ (KB) .br .di .nr c| \n(dn @@ -4382,7 +4368,7 @@ Permanent 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の現在の容量 (KB) +Permanent ΰθߤ (KB) .br .di .nr d| \n(dn @@ -4398,7 +4384,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr e| \n(dn @@ -4414,7 +4400,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -フルガベージコレクション時間 +ե륬١쥯 .br .di .nr f| \n(dn @@ -4430,7 +4416,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション総時間 +١쥯 .br .di .nr g| \n(dn @@ -4441,9 +4427,9 @@ Permanent 領域の現在の容量 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wPermanent 世代の統計データ +.nr 38 \wPermanent ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -4464,9 +4450,9 @@ Permanent 領域の現在の容量 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -4494,7 +4480,7 @@ Permanent 領域の現在の容量 (KB) .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 752 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 735 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -4511,11 +4497,11 @@ Permanent 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'Permanent 世代の統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -4599,7 +4585,7 @@ Permanent 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\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 @@ -4648,7 +4634,7 @@ Permanent 領域の現在の容量 (KB) .LP .SS -\-gcutil オプション +\-gcutil ץ .LP .LP .TS @@ -4679,7 +4665,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の使用率 (現在の容量に対するパーセンテージ) +Survivor ΰ 0 λΨ (ߤ̤Фѡơ) .br .di .nr a| \n(dn @@ -4695,7 +4681,7 @@ Survivor 領域 0 の使用率 (現在の容量に対するパーセンテージ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の使用率 (現在の容量に対するパーセンテージ) +Survivor ΰ 1 λΨ (ߤ̤Фѡơ) .br .di .nr b| \n(dn @@ -4711,7 +4697,7 @@ Survivor 領域 1 の使用率 (現在の容量に対するパーセンテージ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の使用率 (現在の容量に対するパーセンテージ) +Eden ΰλΨ (ߤ̤Фѡơ) .br .di .nr c| \n(dn @@ -4727,7 +4713,7 @@ Eden 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の使用率 (現在の容量に対するパーセンテージ) +Old ΰλΨ (ߤ̤Фѡơ) .br .di .nr d| \n(dn @@ -4743,7 +4729,7 @@ Old 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の使用率 (現在の容量に対するパーセンテージ) +Permanent ΰλΨ (ߤ̤Фѡơ) .br .di .nr e| \n(dn @@ -4759,7 +4745,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr f| \n(dn @@ -4775,7 +4761,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代のガベージコレクション時間 +㤤Υ١쥯 .br .di .nr g| \n(dn @@ -4791,7 +4777,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -フルガベージコレクション時間 +ե륬١쥯 .br .di .nr h| \n(dn @@ -4807,7 +4793,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション総時間 +١쥯 .br .di .nr i| \n(dn @@ -4818,9 +4804,9 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .nf .ll \n(34u .nr 80 0 -.nr 38 \wガベージコレクション統計データの概要 +.nr 38 \w١쥯ץǡγ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -4845,9 +4831,9 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -4879,7 +4865,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .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 802 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 785 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -4896,11 +4882,11 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'ガベージコレクション統計データの概要\h'|\n(41u' +\&\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 +\&\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 @@ -5016,7 +5002,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\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 @@ -5067,7 +5053,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .LP .SS -\-printcompilation オプション +\-printcompilation ץ .LP .LP .TS @@ -5098,7 +5084,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -実行されたコンパイルタスクの数 +¹Ԥ줿ѥ륿ο .br .di .nr a| \n(dn @@ -5114,7 +5100,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -メソッドのバイトコードのバイト数 +᥽åɤΥХȥɤΥХȿ .br .di .nr b| \n(dn @@ -5130,7 +5116,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -コンパイル方法を特定するクラス名とメソッド名。クラス名では、名前空間の区切り文字として、「.」ではなく「/」が使用される。メソッド名は、指定されたクラス内のメソッドである。これらの 2 つのフィールドの形式は、HotSpot \- \f3XX:+PrintComplation\fP オプションと対応している +ѥˡꤹ륯饹̾ȥ᥽å̾饹̾Ǥϡ֤̾ζڤʸȤơ.פˡ/פѤ롣᥽å̾ϡꤵ줿饹Υ᥽åɤǤ롣 2 ĤΥեɤηϡHotSpot \- \f3XX:+PrintComplation\fP ץбƤ .br .di .nr c| \n(dn @@ -5141,24 +5127,24 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .nf .ll \n(34u .nr 80 0 -.nr 38 \wHotSpot コンパイル方法の統計データ +.nr 38 \wHotSpot ѥˡץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 \wサイズ +.nr 38 \w .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w型 +.nr 38 \w .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wメソッド +.nr 38 \w᥽å .if \n(80<\n(38 .nr 80 \n(38 .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wコンパイルタイプ +.nr 38 \wѥ륿 .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -5178,7 +5164,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .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 828 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 811 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -5195,11 +5181,11 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'HotSpot コンパイル方法の統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -5221,7 +5207,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'サイズ\h'|\n(41u' +\&\h'|\n(40u'\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -5235,13 +5221,13 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'型\h'|\n(41u'コンパイルタイプ +\&\h'|\n(40u'\h'|\n(41u'ѥ륿 .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'メソッド\h'|\n(41u' +\&\h'|\n(40u'᥽å\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -5263,19 +5249,16 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .if \n-(b.=0 .nr c. \n(.c-\n(d.-19 .LP -.SS - +.SH "" .LP -.SH "" .LP -.LP -この項では、21891 の \f2lvmid\fP を持つローカル JVM を監視する例を示します。 +ιǤϡ21891 \f2lvmid\fP ĥ JVM ƻ뤹򼨤ޤ .LP .SS -gcutil オプションの使用 +gcutil ץλ .LP .LP -この例は、\f2lvmid\fP 21891 に接続して、250 ミリ秒間隔で 7 つのサンプルを取得し、\f3\-gcutil\fP オプションでの指定に従って出力を表示します。 +ϡ\f2lvmid\fP 21891 ³ơ250 ߥôֳ֤ 7 ĤΥץ\f3\-gcutil\fP ץǤλ˽äƽϤɽޤ .LP .nf \f3 @@ -5320,13 +5303,13 @@ gcutil オプションの使用 .LP .LP -この例の出力は、若い世代のコレクションが 3 番目と 4 番目のサンプル間で行われたことを示しています。コレクションには 0.001 秒かかっており、オブジェクトが Eden 領域 (E) から Old 領域 (O) に昇格したため、Old 領域の使用率は 9.49% から 9.51% に増加しています。Survivor 領域は、コレクション前は 12.44% が使用されていましたが、コレクション後は 7.74% しか使用されていません。 +νϤϡ㤤Υ쥯 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 行表示されるごとに列ヘッダーを出力します。 +ϡ\f2lvmid\fP 21891 ³ơ250 ߥôֳ֤ǥץ\f3\-gcutil\fP ץǤλ˽äƽϤɽޤˡ\f3\-h3\fP ץѤơǡ 3 ɽ뤴ȤإåϤޤ .LP .nf \f3 @@ -5379,16 +5362,16 @@ gcutil オプションの使用 .LP .LP -この例では、ヘッダー文字列の繰り返しが見られるほかにも、2 番目と 3 番目のサンプル間で Young GC が行われたことがわかります。この継続時間は 0.001 秒でした。このコレクションでは、Survivor 領域 0 の使用率 (S0U) が適切な Survivor サイズ (DSS) を超過することになるライブデータが検出されました。この結果、オブジェクトは、Old 世代 (この出力には非表示) へ昇格され、殿堂入りしきい値 (TT) が、31 から 2 へ降格されました。 +Ǥϡإåʸη֤ۤˤ⡢2 ܤ 3 ܤΥץ֤ Young GC Ԥ줿Ȥ狼ޤη³֤ 0.001 äǤΥ쥯ǤϡSurvivor ΰ 0 λΨ (S0U) Ŭڤ Survivor (DSS) Ķ᤹뤳Ȥˤʤ饤֥ǡФޤη̡֥ȤϡOld (νϤˤɽ) ؾʤ졢Ʋꤷ (TT) 31 2 ع߳ʤޤ .LP .LP -別のコレクションが、5 番目と 6 番目のサンプル間で行われています。このコレクションでは、Survivor がほとんど見られず、殿堂入りしきい値を 31 に戻しました。 +̤Υ쥯󤬡5 ܤ 6 ܤΥץ֤ǹԤƤޤΥ쥯ǤϡSurvivor ۤȤɸ줺Ʋꤷͤ 31 ᤷޤ .LP .SS -サンプルごとのタイムスタンプの挿入 +ץ뤴ȤΥॹפ .LP .LP -この例は、\f2lvmid\fP 21891 へ接続し、250 ミリ秒間隔で 3 つのサンプルを取得しています。\f3\-t\fP オプションを使用して、最初の列にサンプルごとのタイムスタンプを表示しています。 +ϡ\f2lvmid\fP 21891 ³250 ߥôֳ֤ 3 ĤΥץƤޤ\f3\-t\fP ץѤơǽ˥ץ뤴ȤΥॹפɽƤޤ .LP .nf \f3 @@ -5417,13 +5400,13 @@ Timestamp OGCMN OGCMX OGC OC YGC FGC .LP .LP -\f2Timestamp\fP 列には、ターゲット JVM の起動時からの経過時間が、秒単位でレポートされています。さらに、\f3\-gcoldcapacity\fP 出力では、割り当て要求または昇格要求あるいはその両方を満たすためにヒープが拡張するごとに、Old 世代の容量 (OGC) と Old 領域の容量 (OC) とが増加していることがわかります。Old 世代の容量 (OGC) は、81 番目のフル GC (FGC) 後に、11696 KB から 13820 KB へ増加しています。Old 世代 (および領域) の最大容量は、60544 KB (OGCMX) なので、まだ拡張できる余裕が残されています。 +\f2Timestamp\fP ˤϡå JVM εưηв֤ñ̤ǥݡȤƤޤˡ\f3\-gcoldcapacity\fP ϤǤϡ׵ޤϾ׵ᤢ뤤Ϥξ˥ҡפĥ뤴ȤˡOld (OGC) Old ΰ (OC) ȤäƤ뤳Ȥ狼ޤOld (OGC) ϡ81 ܤΥե GC (FGC) ˡ11696 KB 13820 KB äƤޤOld (ΰ) κ̤ϡ60544 KB (OGCMX) ʤΤǡޤĥǤ;͵ĤƤޤ .LP .SS -リモート JVM のインストゥルメンテーションの監視 +⡼ JVM Υ󥹥ȥơδƻ .LP .LP -この例は、\f3\-gcutil\fP オプションを使用して、\f2remote.domain\fP というシステム上の \f2lvmid\fP 40496 に接続し、サンプルを秒単位で無期限に取得しています。 +ϡ\f3\-gcutil\fP ץѤơ\f2remote.domain\fP Ȥƥ \f2lvmid\fP 40496 ³ץñ̵̤¤˼Ƥޤ .LP .nf \f3 @@ -5440,24 +5423,23 @@ Timestamp OGCMN OGCMX OGC OC YGC FGC .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 に配置されれます。 +\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 -.RE -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o -「java(1) \- Java アプリケーション起動ツール」 +java(1) \- Java ץꥱưġ .TP 2 o -「jps(1) \- Java 仮想マシンプロセスステータスツール」 +jps(1) \- Java ۥޥץơġ .TP 2 o -「jstatd(1) \- 仮想マシン jstat デーモン」 +jstatd(1) \- ۥޥ jstat ǡ .TP 2 o -「rmiregistry(1) \- Java リモートオブジェクトレジストリ」 +rmiregistry(1) \- Java ⡼ȥ֥ȥ쥸ȥ .RE .LP diff --git a/src/linux/doc/man/ja/jstatd.1 b/src/linux/doc/man/ja/jstatd.1 index 4aca5a7fe63b030bf3ad37cfaaea9a7830d3616e..af3fc39b9db6e747f9f2dc98de1eff92870d6962 100644 --- a/src/linux/doc/man/ja/jstatd.1 +++ b/src/linux/doc/man/ja/jstatd.1 @@ -19,43 +19,41 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jstatd 1 "02 Jun 2010" +.TH jstatd 1 "14 Apr 2011" .LP -.SH "名前" -jstatd \- 仮想マシン jstat デーモン +.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 - +.SH "" .LP .nf \f3 @@ -68,72 +66,64 @@ jstatd [ \fP\f4options\fP\f3 ]\fP .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 options -コマンド行オプション。オプションは任意の順序で指定できます。重複または矛盾するオプションがある場合、最後に指定したオプションが優先されます。 +ޥɹԥץ󡣥ץǤդνǻǤޤʣޤ̷⤹륪ץ󤬤硢Ǹ˻ꤷץͥ褵ޤ .RE .LP -.SH " 説明" -.LP - -.LP +.SH " " .LP -\f3jstatd\fP ツールは、計測された HotSpot Java 仮想マシン (JVM) の作成と終了を監視し、ローカルシステム上で実行している Java 仮想マシンに、リモート監視ツールが接続できるようにするためのインタフェースを提供する RMI サーバーアプリケーションです。 .LP +\f3jstatd\fP ġϡ¬줿 HotSpot Java ۥޥ (JVM) κȽλƻ뤷륷ƥǼ¹ԤƤ Java ۥޥˡ⡼ȴƻġ뤬³Ǥ褦ˤ뤿Υ󥿥ե󶡤 RMI СץꥱǤ .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 +\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 -\f3注:\fP このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 .LP -.SH "オプション" +\f3:\fP Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤߡWindows 98 Windows Me ץåȥեǤϻѤǤޤ .LP - +.SH "ץ" .LP .LP -\f3jstatd\fP コマンドは次のオプションをサポートしています。 +\f3jstatd\fP ޥɤϼΥץ򥵥ݡȤƤޤ .LP .RS 3 .TP 3 \-nr -既存の RMI レジストリが見つからない場合、\f2jstatd\fP プロセス内に内部 RMI レジストリを作成しないようにします。 +¸ RMI 쥸ȥ꤬Ĥʤ硢\f2jstatd\fP ץ RMI 쥸ȥʤ褦ˤޤ .TP 3 \-p\ port -RMI レジストリがあると予想されるポート番号です。 見つからない場合は、\f2\-nr\fP が指定されていなければ作成されます。 +RMI 쥸ȥ꤬ͽۤݡֹǤ Ĥʤϡ\f2\-nr\fP ꤵƤʤкޤ .TP 3 \-n\ rminame -RMI レジストリにおいて、リモート RMI オブジェクトがバインドされる名前です。デフォルト名は \f2JStatRemoteHost\fP です。複数の \f3jstatd\fP サーバーが同じホスト上で起動している場合、各サーバーのエクスポートした RMI オブジェクトの名前は、このオプションを指定することによって、一意の名前にすることができます。ただし、このオプションを使用する場合、監視クライアントの \f2hostid\fP および \f2vmid\fP 文字列に、その一意のサーバー名を含める必要があります。 +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 にオプション渡すことは、よく行われています。 +\f3javac\fP ƤӽФ \f3java\fP ưġˡ\f2option\fP ϤޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ\f3\-J\fP ȤäơJava ǵҤ줿ץꥱ¹Ԥظ VM ˥ץϤȤϡ褯ԤƤޤ .RE .LP -.SH "セキュリティー" -.LP - +.SH "ƥ" .LP .LP -\f3jstatd\fP サーバーは、有効なネイティブアクセス権を持つ JVM だけを監視できます。したがって、\f3jstatd\fP プロセスは、ターゲット JVM と同じユーザー資格で実行している必要があります。一部のユーザー資格は、Unix(TM) ベースのシステムにおける \f2root\fP ユーザーのように、システム上の任意の JVM によってエクスポートされたインストゥルメンテーションへのアクセス権を持っています。このような資格で実行している \f3jstatd\fP プロセスは、システム上のすべての JVM を監視できますが、セキュリティー上の別の問題が起こります。 +\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 プロセスを起動する前に、ローカルセキュリティーポリシーを検討する必要があります。 +\f3jstatd\fP Сϡ⡼ȥ饤ȤǧڤͿޤ󡣤Τᡢ\f3jstatd\fP Сץ¹Ԥȡ\f3jstatd\fP ץĤ٤Ƥ JVM ˤ륤󥹥ȥơΥݡȤ򡢥ͥåȥΤ٤ƤΥ桼˸뤳Ȥˤʤޤ̵ʾ֤ϡĶŪ˾ޤʤ礬ޤ ä˼²ƯĶޤϰǤʤͥåȥǤϡ\f3jstatd\fP ץưˡ륻ƥݥꥷƤɬפޤ .LP .LP -\f3jstatd\fP サーバーは、他のセキュリティーマネージャーがインストールされていない場合には、RMISecurityPolicy のインスタンスをインストールします。 そのため、セキュリティーポリシーファイルを指定する必要があります。ポリシーファイルは、デフォルトポリシー実装の +\f3jstatd\fP Сϡ¾Υƥޥ͡㡼󥹥ȡ뤵ƤʤˤϡRMISecurityPolicy Υ󥹥󥹤򥤥󥹥ȡ뤷ޤ Τᡢƥݥꥷեꤹɬפޤݥꥷեϡǥեȥݥꥷ .na -\f2ポリシーファイルの構文\fP @ +\f2ݥꥷեιʸ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyFiles.htmlに準拠する必要があります。 +http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyFiles.html˽򤹤ɬפޤ .LP .LP -次のポリシーファイルの場合、\f3jstatd\fP サーバーは一切のセキュリティー例外を使用せずに実行できます。このポリシーは、すべてのコードベースへのあらゆるアクセス権を認めるポリシーよりも自由度は低いですが、\f3jstatd\fP サーバーを実行するために最低限必要なアクセス権しか認めないポリシーよりも自由度は高くなっています。 +Υݥꥷեξ硢\f3jstatd\fP СϰڤΥƥ㳰Ѥ˼¹ԤǤޤΥݥꥷϡ٤ƤΥɥ١ؤΤ륢ǧݥꥷ⼫ͳ٤㤤Ǥ\f3jstatd\fP С¹Ԥ뤿˺ɬפʥǧʤݥꥷ⼫ͳ٤Ϲ⤯ʤäƤޤ .LP .nf \f3 @@ -155,7 +145,7 @@ grant codebase "file:${java.home}/../lib/tools.jar" {\fP .LP .LP -このポリシーを使用するには、このテキストを \f2jstatd.all.policy\fP というファイルにコピーし、次のように \f3jstatd\fP サーバーを実行します。 +ΥݥꥷѤˤϡΥƥȤ \f2jstatd.all.policy\fP Ȥե˥ԡΤ褦 \f3jstatd\fP С¹Ԥޤ .LP .nf \f3 @@ -169,27 +159,23 @@ jstatd \-J\-Djava.security.policy=jstatd.all.policy\fP .LP .LP -より厳しいセキュリティーを実施するサイトの場合、カスタムポリシーファイルを使用して、特定の信頼できるホストまたはネットワークにアクセスを制限することができます。 ただし、このような方法は、IP アドレスの盗聴攻撃を受けやすくなります。セキュリティーの問題について、カスタマイズしたポリシーファイルでも対処できない場合は、\f3jstatd\fP サーバーを実行せずに、\f3jstat\fP と \f3jps\fP ツールをローカルで使用することがもっとも安全な方法になります。 +긷ƥ»ܤ륵Ȥξ硢ݥꥷեѤơοǤۥȤޤϥͥåȥ˥¤뤳ȤǤޤ Τ褦ˡϡIP ɥ쥹İ䤹ʤޤƥˤĤơޥݥꥷեǤнǤʤϡ\f3jstatd\fP С¹Ԥˡ\f3jstat\fP \f3jps\fP ġǻѤ뤳ȤäȤˡˤʤޤ .LP -.SH "リモートインタフェース" +.SH "⡼ȥ󥿥ե" .LP - .LP +\f3jstatd\fP ץݡȤ륤󥿥եϡȼ˳ȯΤǤѹͽǤ桼ӳȯԤϡΥ󥿥եؤν񤭹ߤԤʤǤ .LP -\f3jstatd\fP プロセスがエクスポートするインタフェースは、独自に開発したものであり変更される予定です。ユーザーおよび開発者は、このインタフェースへの書き込みを行わないでください。 -.LP -.SH "例" -.LP - +.SH "" .LP .LP -次に \f3jstatd\fP を起動する例を紹介します。\f3jstatd\fP スクリプトによって、サーバーはバックグラウンドで自動的に起動します。 + \f3jstatd\fP ưҲ𤷤ޤ\f3jstatd\fP ץȤˤäơСϥХå饦ɤǼưŪ˵ưޤ .LP .SS -内部 RMI レジストリの使用 + RMI 쥸ȥλ .LP .LP -この例は、内部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。この例では、デフォルトの RMI レジストリポート (ポート 1099) には、他のサーバーはバインドされていないと想定しています。 +ϡ RMI 쥸ȥѤ \f3jstatd\fP εưɽƤޤǤϡǥեȤ RMI 쥸ȥݡ (ݡ 1099) ˤϡ¾ΥСϥХɤƤʤꤷƤޤ .LP .nf \f3 @@ -201,10 +187,10 @@ jstatd \-J\-Djava.security.policy=all.policy .LP .SS -外部 RMI レジストリの使用 + RMI 쥸ȥλ .LP .LP -この例は、外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 +ϡ RMI 쥸ȥѤ \f3jstatd\fP εưɽƤޤ .LP .nf \f3 @@ -218,7 +204,7 @@ jstatd \-J\-Djava.security.policy=all.policy .LP .LP -この例は、ポート 2020 の外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 +ϡݡ 2020 γ RMI 쥸ȥѤ \f3jstatd\fP εưɽƤޤ .LP .nf \f3 @@ -232,7 +218,7 @@ jstatd \-J\-Djava.security.policy=all.policy \-p 2020 .LP .LP -この例は、AlternateJstatdServerName の名前にバインドされた、ポート 2020 の外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 +ϡAlternateJstatdServerName ̾˥Хɤ줿ݡ 2020 γ RMI 쥸ȥѤ \f3jstatd\fP εưɽƤޤ .LP .nf \f3 @@ -246,10 +232,10 @@ jstatd \-J\-Djava.security.policy=all.policy \-p 2020 \-n AlternateJstatdServerN .LP .SS -インプロセス RMI レジストリの作成の禁止 +ץ RMI 쥸ȥκζػ .LP .LP -この例は、RMI レジストリが見つからない場合に RMI レジストリを作成しない \f3jstatd\fP の起動を表しています。この例では、RMI レジストリがすでに実行していると想定しています。実行していない場合は、該当するエラーメッセージが表示されます。 +ϡRMI 쥸ȥ꤬Ĥʤ RMI 쥸ȥʤ \f3jstatd\fP εưɽƤޤǤϡRMI 쥸ȥ꤬Ǥ˼¹ԤƤꤷƤޤ¹ԤƤʤϡ륨顼åɽޤ .LP .nf \f3 @@ -261,10 +247,10 @@ jstatd \-J\-Djava.security.policy=all.policy \-nr .LP .SS -RMI ログ機能の有効化 +RMI ǽͭ .LP .LP -この例は、RMI ログ機能を有効にした \f3jstatd\fP の起動を表しています。この方法は、トラブルシューティングまたはサーバー活動の監視に役立ちます。 +ϡRMI ǽͭˤ \f3jstatd\fP εưɽƤޤˡϡȥ֥륷塼ƥ󥰤ޤϥСưδƻΩޤ .LP .nf \f3 @@ -275,25 +261,25 @@ jstatd \-J\-Djava.security.policy=all.policy \-J\-Djava.rmi.server.logCalls=true .fi .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o -「java(1) \- Java アプリケーション起動ツール」 +java(1) \- Java ץꥱưġ .TP 2 o -「jps(1) \- Java 仮想マシンプロセスステータスツール」 +jps(1) \- Java ۥޥץơġ .TP 2 o -「jstat(1) \- Java 仮想マシン統計データ監視ツール」 +jstat(1) \- Java ۥޥץǡƻġ .TP 2 o -「 + .na \f2rmiregistry\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi \- Java リモートオブジェクトレジストリ」 +http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi \- Java ⡼ȥ֥ȥ쥸ȥ .RE .LP diff --git a/src/linux/doc/man/ja/jvisualvm.1 b/src/linux/doc/man/ja/jvisualvm.1 new file mode 100644 index 0000000000000000000000000000000000000000..f31c622f479523f2a16834e8b60bdc61b78ea7c3 --- /dev/null +++ b/src/linux/doc/man/ja/jvisualvm.1 @@ -0,0 +1,126 @@ +." Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. +." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +." +." This code is free software; you can redistribute it and/or modify it +." under the terms of the GNU General Public License version 2 only, as +." published by the Free Software Foundation. +." +." This code is distributed in the hope that it will be useful, but WITHOUT +." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +." version 2 for more details (a copy is included in the LICENSE file that +." accompanied this code). +." +." You should have received a copy of the GNU General Public License version +." 2 along with this work; if not, write to the Free Software Foundation, +." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +." +." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +." or visit www.oracle.com if you need additional information or have any +." questions. +." +.TH jvisualvm 1 "14 Apr 2011" + +.LP +.SH "̾" +\f2jvisualvm\fP \- Java ۥޥδƻ롢ȥ֥륷塼ƥ󥰡ӥץե󥰥ġ +.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 +.nf +\f3 +.fl + \fP\f3jvisualvm\fP [ \f2options\fP ] +.fl +.fi + +.LP +.SH "ѥ᡼" +.LP +.LP +ץѤ硢ޥ̾ľ˵ҤƤץλ˷ޤϤޤΥץŬѤѥ᡼ˤĤƤϡΤȤΡ֥ץפ򻲾ȤƤ +.LP +.SH " " +.LP +.LP +Java VisualVM ϡꤵ줿 Java ۥޥ (JVM(*)) Java ƥΥ١Υץꥱ (Java ץꥱ) ¹ԤƤȤˡ Java ץꥱ˴ؤܺ٤ʾ󶡤ľŪʥե桼󥿥եǤJava VisualVM Ȥ̾ϡJava VisualVM JVM եȥ˴ؤֻŪˡ󶡤Ȥ¤ͳ褷Ƥޤ +.LP +.LP +Java VisualVM ϡĤδƻ롢ȥ֥륷塼ƥ󥰡ӥץե󥰥桼ƥƥ 1 ĤΥġ礷ޤȤСɥġ \f2jmap\fP \f2jinfo\fP \f2jstat\fP \f2jstack\fP 󶡤Ƥ뵡ǽΤۤȤɤJava VisualVM Ȥ߹ޤƤޤJConsole ġˤä󶡤εǽʤɡۤεǽϥץΥץ饰ȤɲäǤޤ +.LP +.SH "ץ" +.LP +.LP +ΥץϡJava VisualVM ưȤ˼¹Բǽˤʤޤ +.LP +.RS 3 +.TP 3 +\-J<jvm_option>\ + \f2<jvm_option>\fP JVM եȥϤޤ +.RE + +.LP +.SH "ˡ" +.LP +.LP +Java VisualVM ϡJava ץꥱγȯԤץꥱΥȥ֥륷塼ƥ󥰤ԤʤäꡢץꥱΥѥեޥ󥹤ƻ뤪ӲꤹΤΩޤJava VisualVM ѤȡȯԤϥҡץפӲϡ꡼꡼ꡢ١쥯μ¹ԤӴƻ롢ӥ꡼ CPU δʰץץե󥰤μ¹ԤǽˤʤޤJava VisualVM εǽĥץ饰⤤ĤޤȤСJConsole ġΤۤȤɤεǽϡMBeans ֤ JConsole Plug\-in Wrapper ץ饰𤷤ƻѤǤޤɸ Java VisualVM ץ饰Υ򤹤ˤϡJava VisualVM ˥塼Ρ֥ġ>֥ץ饰פ򤷤ޤ +.LP +.LP +Java VisualVM ưˤϡΥޥɤ¹Ԥޤ +.LP +.nf +\f3 +.fl +% jvisualvm \fP\f4<options>\fP\f3 +.fl +\fP +.fi + +.LP +.SH "Ϣ" +.LP +.LP +Java VisualVM ξܺ٤ϡΥڡ򻲾ȤƤ +.LP +.RS 3 +.TP 2 +o +.na +\f2Java VisualVM ȯԤΥ\fP @ +.fi +https://visualvm.dev.java.net +.TP 2 +o +.na +\f2Java SE ץåȥեǤ Java VisualVM Υɥ\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/visualvm/index.html +.RE + +.LP +.LP +\f2(* Java ۥޥפȡJVMפȤѸϡJava ץåȥեβۥޥ̣Ƥޤ)\fP +.LP + diff --git a/src/linux/doc/man/ja/keytool.1 b/src/linux/doc/man/ja/keytool.1 index 6ee2f26e028fce0759598f6cee7499f4f3a181c2..e9701dd73adc9cdf0d92f04c1ffe51d1c3f5f204 100644 --- a/src/linux/doc/man/ja/keytool.1 +++ b/src/linux/doc/man/ja/keytool.1 @@ -1,4 +1,4 @@ -." Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1998-2010 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,20 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH keytool 1 "02 Jun 2010" +.TH keytool 1 "14 Apr 2011" .LP -.SH "名前" -keytool \- 鍵と証明書の管理ツール +.SH "̾" +keytool \- Ⱦδġ .LP -.RS 3 - .LP -暗号化鍵、X.509 証明書チェーン、および信頼できる証明書を含むキーストア (データベース) を管理します。 -.RE -.SH "形式" +Ź沽X.509 󡢤ӿǤޤ७ȥ (ǡ١) ޤ .LP - +.SH "" .LP .nf \f3 @@ -43,48 +39,44 @@ keytool \- 鍵と証明書の管理ツール .LP .LP -Java SE 6 で keytool のコマンドインタフェースが変更されました。 詳細については「変更点」の節を参照してください。以前に定義されたコマンドも引き続きサポートされています。 +Java SE 6 keytool Υޥɥ󥿥եѹޤܺ٤ˤĤƤϡѹפ򻲾ȤƤ줿ޥɤ³ݡȤƤޤ .LP -.SH "説明" +.SH "" .LP - -.LP -\f3keytool\fP は、鍵と証明書を管理するためのユーティリティーです。keytool を使うと、自分の公開鍵と非公開鍵のペア、および関連する証明書を管理し、デジタル署名を使った自己認証 (ほかのユーザーまたはサービスに対して自分自身を認証すること) や、データの整合性と証明書に関するサービスを利用することができます。keytool では、通信相手の公開鍵を (証明書の形で) キャッシュすることもできます。 +\f3keytool\fP ϡȾ뤿Υ桼ƥƥǤkeytool ȤȡʬθΥڥӴϢǥ̾Ȥäǧ (ۤΥ桼ޤϥӥФƼʬȤǧڤ뤳) 䡢ǡȾ˴ؤ륵ӥѤ뤳ȤǤޤkeytool Ǥϡ̿θ (η) å夹뤳ȤǤޤ .LP -「証明書」とは、あるエンティティー (人物、会社など) からのデジタル署名付きの文書のことです。 証明書には、ほかのあるエンティティーの公開鍵 (およびその他の情報) が特別な値を持っていることが書かれています(「証明書」を参照)。データにデジタル署名が付いている場合は、デジタル署名を検証することで、データの整合性およびデータが本物であることをチェックできます。データの「整合性」とは、データが変更されたり、改変されたりしていないことを意味します。 また、データが「本物である」とは、そのデータが、データを作成して署名したと称する人物から実際に渡されたデータであることを意味します。 +־פȤϡ륨ƥƥ (ʪҤʤ) Υǥ̾դʸΤȤǤˤϡۤΤ륨ƥƥθ (Ӥ¾ξ) ̤ͤäƤ뤳Ȥ񤫤Ƥޤ(־פ򻲾)ǡ˥ǥ̾դƤϡǥ̾򸡾ڤ뤳ȤǡǡӥǡʪǤ뤳ȤåǤޤǡΡפȤϡǡѹ줿ꡢѤ줿ꤷƤʤȤ̣ޤ ޤǡʪǤפȤϡΥǡǡƽ̾ȾΤʪºݤϤ줿ǡǤ뤳Ȥ̣ޤ .LP .LP -また、\f3keytool\fP を使えば、DES などの対称暗号化/復号化で使用される秘密鍵を管理することもできます。 +ޤ\f3keytool\fP ȤСDES ʤɤоΰŹ沽/沽ǻѤ̩뤳ȤǤޤ .LP .LP -\f3keytool\fP は、鍵と証明書を\f2「キーストア」\fPに格納します。 +\f3keytool\fP ϡȾ\f2֥ȥ\fP˳Ǽޤ .LP -.SH "コマンドとオプションに関する注" -.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 オプションを囲むのにも使われるが、これらのオプションはコマンド行で指定された場合にのみ意味を持つ (つまり、これらのオプションには、オプション自体を指定しないこと以外に「デフォルト値」は存在しない) +ץϤ̤ϡ̤ˡΥץ򥳥ޥɹԤǻꤷʤäˡǥեͤȤ뤳Ȥ̣롣̤ϡ \f2\-v\fP \f2\-rfc\fP \f2\-J\fP ץϤΤˤȤ뤬ΥץϥޥɹԤǻꤵ줿ˤΤ̣߰ (ĤޤꡢΥץˤϡץΤꤷʤȰʳˡ֥ǥե͡פ¸ߤʤ) .TP 2 o -オプションを囲む角括弧は、そのオプションをコマンド行で指定しなかった場合に、値の入力を求められることを意味する。ただし、\f2\-keypass\fP オプションをコマンド行で指定しなかった場合は、\f3keytool\fP がキーストアのパスワードから非公開/秘密鍵の復元を試みる。 ユーザーは、この試みが失敗した場合に非公開/秘密鍵の入力を求められる +ץϤѳ̤ϡΥץ򥳥ޥɹԤǻꤷʤäˡͤϤ뤳Ȥ̣롣( \f2\-keypass\fP ץξ硢ץ򥳥ޥɹԤǻꤷʤäϡ\f3keytool\fP ޤȥΥѥɤ/̩ߤ롣 桼ϡλߤԤ/̩ΥѥɤϤ .TP 2 o -イタリック体の項目の実際の値 (オプションの値) は、ユーザーが指定する必要がある。たとえば、\f2\-printcert\fP コマンドの形式は次のとおりである +åΤιܤμºݤ (ץ) ϡ桼ꤹɬפ뤿ȤС \f2\-printcert\fP ޥɤηϼΤȤǤ .nf \f3 .fl @@ -93,7 +85,7 @@ o \fP .fi .LP -\f2\-printcert\fP コマンドを指定するときは、\f2cert_file\fP の代わりに実際のファイル名を指定する。次に例を示す +\f2\-printcert\fP ޥɤꤹȤϡ\f2cert_file\fP ˼ºݤΥե̾ꤹ롣򼨤 .nf \f3 .fl @@ -103,10 +95,10 @@ o .fi .TP 2 o -オプションの値に空白 (スペース) が含まれている場合は、値を引用符で囲む必要がある +ץͤ˶ (ڡ) ޤޤƤϡͤǰϤɬפ .TP 2 o -\f2\-help\fP コマンドはデフォルトのコマンドである。たとえば、次のようにコマンド行を指定したとする +\f2\-help\fP ޥɤϥǥեȤΥޥɤǤ롣ȤСΤ褦˥ޥɹԤꤷȤ .nf \f3 .fl @@ -114,7 +106,8 @@ o .fl \fP .fi -これは、次のように指定することと同じである +.LP +ϡΤ褦˻ꤹ뤳ȤƱǤ .nf \f3 .fl @@ -126,12 +119,11 @@ o .LP .SS -オプションのデフォルト値 +ץΥǥե .LP -.RS 3 - .LP -オプションのデフォルト値は、次のとおりです。 +ץΥǥեͤϡΤȤǤ +.LP .nf \f3 .fl @@ -141,19 +133,25 @@ o .fl \-keyalg .fl - "DSA" (\fP\f3\-genkeypair\fP\f3 を使用している場合) + "DSA" (\fP\f3\-genkeypair\fP\f3 ѤƤ) .fl - "DES" (\fP\f3\-genseckey\fP\f3 を使用している場合) + "DES" (\fP\f3\-genseckey\fP\f3 ѤƤ) .fl .fl \-keysize .fl - 1024 (\fP\f3\-genkeypair\fP\f3 を使用している場合) + 2048 (\fP\f3\-genkeypair\fP\f3 ѤƤ \-keyalg "RSA" ξ) .fl - 56 (\fP\f3\-genseckey\fP\f3 を使用していて \-keyalg が "DES" の場合) + 1024 (\fP\f3\-genkeypair\fP\f3 ѤƤ \-keyalg "DSA" ξ) .fl - 168 (\fP\f3\-genseckey\fP\f3 を使用していて \-keyalg が "DESede" の場合) + 256 (\fP\f3\-genkeypair\fP\f3 ѤƤ \-keyalg "EC" ξ) +.fl + 56 (\fP\f3\-genseckey\fP\f3 ѤƤ \-keyalg "DES" ξ) +.fl + 168 (\fP\f3\-genseckey\fP\f3 ѤƤ \-keyalg "DESede" ξ) +.fl + .fl .fl @@ -161,320 +159,933 @@ o .fl .fl -\-keystore \fP\f4ユーザーのホームディレクトリの \fP\f4.keystore\fP\f3 というファイル\fP\f3 +\-keystore 桼Υۡǥ쥯ȥ \fP\f4.keystore\fP\f3 Ȥե .fl .fl -\-storetype \fP\f4セキュリティープロパティーファイルの「keystore.type」プロパティーの値で、 +\-storetype ƥץѥƥեΡkeystore.typeץץѥƥͤǡ .fl - \fP\f4java.security.KeyStore\fP\f3 の静的な \fP\f4getDefaultType\fP\f3 メソッドから返される\fP\f3 + java.security.KeyStore Ū getDefaultType ᥽åɤ֤ \fP\f4 \fP\f3 +.fl + \fP\f4 \fP\f3 .fl .fl -\-file \fP\f4読み込みの場合は標準入力、書き込みの場合は標準出力\fP\f3 +\-file ɤ߹ߤξɸϡ񤭹ߤξɸ .fl .fl \-protected false -.fl - .fl \fP .fi .LP -公開/非公開鍵ペアの生成において、署名アルゴリズム (\f2\-sigalg\fP オプション) は、基になる非公開鍵のアルゴリズムから派生します。基になる非公開鍵が DSA タイプである場合、\f2\-sigalg\fP オプションのデフォルト値は SHA1withDSA になり、基になる非公開鍵が RSA タイプである場合は、\f2\-sigalg\fP オプションのデフォルト値は MD5withRSA になります。選択可能な \f2\-keyalg\fP および \f2\-sigalg\fP の完全な一覧については、 +.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 -\f2「Java Cryptography Architecture API Specification & Reference」\fP @ +\f2Java Cryptography Architecture API Specification & Reference\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。 -.RE +http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA򻲾ȤƤ +.LP .SS -一般オプション +̥ץ .LP -.RS 3 - .LP -\f2\-v\fP オプションは、\f2\-help\fP コマンドを除くすべてのコマンドで使用できます。このオプションを指定した場合、コマンドは「冗長」モードで実行され、詳細な証明書情報が出力されます。 +\f2\-v\fP ץϡ \f2\-help\fP ޥɤ٤ƤΥޥɤǻѤǤޤΥץꤷ硢ޥɤϡ־Ĺץ⡼ɤǼ¹Ԥ졢ܺ٤ʾ󤬽Ϥޤ .LP -また、\f2\-J\fP\f2javaoption\fP オプションも、任意のコマンドで使用できます。このオプションを指定した場合、指定された \f2javaoption\fP 文字列が Java インタプリタに直接渡されます。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタオプションを一覧表示するには、コマンド行で \f2java \-h\fP または \f2java \-X\fP と入力してください。 .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 -特定の \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 がファイルベースではなく、たとえば、ハードウェアトークンデバイスに置かれている場合に指定します。 + \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 storepass -キーストアの整合性を保護するために使うパスワードを指定します。 +\-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 -\f2storepass\fP は、6 文字以上にする必要があります。指定したパスワードは、キーストアの内容にアクセスするすべてのコマンドで使われます。この種のコマンドを実行するときに、コマンド行で \f2\-storepass\fP オプションを指定しなかった場合は、パスワードの入力を求められます。 +ѥɤϡȥƤ˥뤹٤ƤΥޥɤǻȤޤμΥޥɤ¹ԤȤˡޥɹԤ \f2\-storepass\fP ץꤷʤäϡѥɤϤޤ .LP -キーストアから情報を取り出す場合は、パスワードを省略できます。 パスワードを省略すると、取り出す情報の整合性をチェックできないので、警告が表示されます。 +ȥФϡѥɤάǤޤ ѥɤάȡФåǤʤΤǡٹɽޤ .TP 3 \-providerName provider_name -セキュリティープロパティーファイル内に含まれる暗号化サービスプロバイダ名を特定するために使用されます。 +.LP +ƥץѥƥե˴ޤޤŹ沽ӥץХ̾ꤹ뤿˻Ѥޤ .TP 3 \-providerClass provider_class_name -暗号化サービスプロバイダがセキュリティープロパティーファイルに指定されていないときは、そのマスタークラスファイルの名前を指定するときに使われます。 +.LP +Ź沽ӥץХƥץѥƥե˻ꤵƤʤȤϡΥޥ饹ե̾ꤹȤ˻Ȥޤ .TP 3 \-providerArg provider_arg -\f2\-providerClass\fP と組み合わせて使用します。\f2provider_class_name\fP のコンストラクタに対する省略可能な文字列入力引数を表します。 +.LP +\f2\-providerClass\fP Ȥ߹碌ƻѤޤ\f2provider_class_name\fP Υ󥹥ȥ饯Фάǽʸϰɽޤ .TP 3 \-protected -\f2true\fP または \f2false\fP のいずれか。専用 PIN リーダーなどの保護された認証パスを介してパスワードを指定する必要がある場合には、この値に \f2true\fP を指定してください。 +.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 Ǥ뤳Ȥ򼨤ޤ:critical : \f2:c\fP ѤǤޤ . .RE .LP -.RE -.SH "コマンド" .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>פξάɽǤ άȡca:trueפΰ̣ˤʤޤ +.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)keyEnciphermentdataEnciphermentkeyAgreementkeyCertSigncRLSignencipherOnlydecipherOnly Τ줫ǤޤUsage ϡޤʤСǽοʸ (ȤСdigitalSignature dig ) ޤϥ륱 (ȤС digitalSignature dS ˡcRLSign cRLS ) ṳ̂Ǥޤ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 serverAuthclientAuthcodeSigningemailProtection timeStampingOCSPSigningޤǤդ 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 ˤϡEMAILURIDNSIPޤ 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\-9a\-fA\-F) ʳʸ̵뤵ޤäơ \f201:02:03:04\fP \f201020304פξȤ\fP ƱͤȤƼդޤͤʤ硢ƥ󥷥ͥեɤ϶ˤʤޤ +.LP +.LP +\f2\-gencert\fP ǤΤ߻ѤhonoredפȤ̤̾ϡ׵˴ޤޤ륨ƥ󥷥ͥ褹ˡ򼨤ޤ̾ͤϡ \f2all\fP (׵ᤵ뤹٤ƤΥƥ󥷥ͥ褵) \f2name{:[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 -.RS 3 +׵ե ( \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 ƥ󥷥򼨤ޤ\-ext ʸˡˤĤƤϡְ̥ץפ򻲾ȤƤ +.LP +\f2\-gencert\fP ޥɤѤȡǤޤǤϡ \f2e1\fP Ȥޤξξˤϡ3 Ĥξ񤬴ޤޤƤޤ +.LP +Υޥɤϡcaca1ca2 e1 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 signs ca2\fP ˽̾ޤ٤ƼȯԤǤ +.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 +Υޥɤϡ e1 ƥե e1.cert ˳Ǽޤξ ca2 ˤäƽ̾ޤη̡e1 ξˤ caca1 ca2 ޤޤ뤳Ȥˤʤޤ +.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] {\-validity valDays} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} +\-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 -鍵のペア (公開鍵および関連する非公開鍵) を生成します。公開鍵は X.509 v3 自己署名証明書でラップされます。 証明書は、単一の要素を持つ証明書チェーンとして格納されます。この証明書チェーンと非公開鍵は、\f2alias\fP で特定される新しいキーストアエントリに格納されます。 +\f2dname\fP ˤϡ\f2alias\fP ˴Ϣդʽ̾ issuer եɤ subject եɤȤƻȤ X.500 ̾ꤷޤ ޥɹԤǼ̾ꤷʤäϡ̾Ϥޤ .LP -\f2keyalg\fP には、鍵のペアを生成するのに使うアルゴリズムを指定し、\f2keysize\fP には、生成する各鍵のサイズを指定します。 \f2sigalg\fP には、自己署名証明書に署名を付けるときに使うアルゴリズムを指定します。このアルゴリズムは、\f2keyalg\fP と互換性のあるものでなければなりません。 +\f2keypass\fP ˤϡ븰ΥڥΤݸΤ˻ȤѥɤꤷޤѥɤꤷʤäϡѥɤϤޤΤȤReturn 򲡤ȡȥΥѥɤƱѥɤΥѥɤꤵޤ\f2keypass\fP ϡ6 ʸʾˤɬפޤ .LP -\f2dname\fP には、\f2alias\fP に関連付け、自己署名証明書の \f2issuer\fP フィールドと \f2subject\fP フィールドとして使う X.500 識別名を指定します。コマンド行で識別名を指定しなかった場合は、識別名の入力を求められます。 +\f2startdate\fP ˤϡȯԻꤷޤϡX.509 ΡValidityץեɤΡNot BeforeͤȤƤФޤ .LP -\f2keypass\fP には、生成される鍵のペアのうち、非公開鍵を保護するのに使うパスワードを指定します。パスワードを指定しなかった場合、ユーザーはその入力求められます。このとき、Return キーを押すと、キーストアのパスワードと同じパスワードが鍵のパスワードに設定されます。 \f2keypass\fP は、6 文字以上でなければなりません。 +ץͤϡ 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 -\f2valDays\fP には、証明書の有効日数を指定します。 +ץꤷʤȡդϸߤλˤʤޤץϡ 1 Ǥޤ .LP -このコマンドは、以前のリリースでは \f2\-genkey\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-genkeypair\fP を使用することをお勧めします。 +\f2valDays\fP ˤϡͭꤷޤ ( \f2\-startdate\fP ǻꤵ줿աޤ \f2\-startdate\fP ꤵƤʤϸߤդϤޤ) +.LP +ΥޥɤϡΥ꡼Ǥ \f2\-genkey\fP Ȥ̾ǤθŤ̾ϡΥ꡼Ǥ³ݡȤƤꡢΥ꡼Ǥ⥵ݡȤͽǤϤ狼䤹褦ˡ̾ \f2\-genkeypair\fP Ѥ뤳Ȥ򤪴ᤷޤ .TP 3 \-genseckey {\-alias alias} {\-keyalg keyalg} {\-keysize keysize} [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} .LP -秘密鍵を生成し、それを \f2alias\fP で特定される新しい \f2KeyStore.SecretKeyEntry\fP 内に格納します。 +̩򿷤 \f2KeyStore.SecretKeyEntry\fP (\f2alias\fP ꤵ) ˳Ǽޤ .LP -\f2keyalg\fP は秘密鍵の生成に使用するアルゴリズムを、\f2keysize\fP は生成する鍵のサイズを、それぞれ指定します。\f2keypass\fP は秘密鍵の保護に使用するパスワードです。パスワードを指定しなかった場合、ユーザーはその入力求められます。このとき、Return キーを押すと、キーストアのパスワードと同じパスワードが鍵のパスワードに設定されます。 \f2keypass\fP は、6 文字以上でなければなりません。 +\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 形式の応答で提供されるもの) を読み込み、\f2alias\fP によって特定されるキーストアエントリに格納します。ファイルが指定されていない場合は、標準入力から証明書または PKCS#7 応答を読み込みます。 +ե \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」で始まる文字列で終了しなければなりません。 +\f3keytool\fP ǤϡX.509 v1v2v3 ξ񡢤ӡPKCS#7 ξ񤫤鹽Ƥ PKCS#7 ξ򥤥ݡȤǤޤݡȤǡϡХʥ沽ޤϽϲǽ沽 (Base64 沽ȤƤФ) Τɤ餫󶡤ɬפޤ ϲǽ沽ϡ󥿡ͥå RFC 1421 沽ʤƤޤ沽ξ硢ϡ\-\-\-\-\-BEGINפǻϤޤʸdzϤ졢\-\-\-\-\-ENDפǻϤޤʸǽλʤФʤޤ .LP -証明書のインポートには、次の 2 つの目的があります。 +ΥݡȤˤϡ 2 ĤŪޤ .RS 3 .TP 3 1. -信頼できる証明書のリストに証明書を追加する +ǤΥꥹȤ˾ɲä .TP 3 2. -CA に証明書署名要求 (\-certreq コマンドを参照) を送信した結果として、CA から受け取った証明応答をインポートする +CA ˾̾׵ (\-certreq ޥɤ򻲾) ̤ȤơCA ä򥤥ݡȤ .RE .LP -どちらの種類のインポートを行うかは、\f2\-alias\fP オプションの値によって指定します。 +ɤμΥݡȤԤϡ \f2\-alias\fP ץͤˤäƻꤷޤ .RS 3 .TP 3 1. -\f3別名がキーエントリをポイントしない場合\fP、\f3keytool\fP はユーザーが信頼できる証明書エントリを追加しようとしているものと見なします。この場合、別名がキーストア内にすでに存在していてはいけません。別名がすでに存在している場合、その別名の信頼できる証明書がすでに存在することになるので、\f3keytool\fP はエラーを出力し、証明書のインポートを行いません。 +\f3̾ȥݥȤʤ\fP\f3keytool\fP ϥ桼Ǥ񥨥ȥɲä褦ȤƤΤȸʤޤξ硢̾ȥˤǤ¸ߤƤƤϤޤ̾Ǥ¸ߤƤ硢̾οǤ񤬤Ǥ¸ߤ뤳ȤˤʤΤǡ\f3keytool\fP ϥ顼ϤΥݡȤԤޤ .TP 3 2. -\f3別名がキーエントリをポイントしない場合\fP、\f3keytool\fP はユーザーが信頼できる証明書エントリを追加しようとしているものと見なします。 -.RE -\f3新しい信頼できる証明書のインポート\fP -.RS 3 - -.LP -.LP -\f3keytool\fP は、キーストアに証明書を追加する前に、キーストア内にすでに存在する信頼できる証明書を使って、インポートする証明書から (ルート CA の) 自己署名証明書に至るまでの信頼のチェーンの構築を試みます。 -.LP -.LP -\f2\-trustcacerts\fP オプションを指定した場合、追加の証明書は信頼できるすなわち cacerts という名前のファイルに含まれる証明書のチェーンと見なされます。 -.LP -.LP -\f3keytool\fP が、インポートする証明書から自己署名証明書 (キーストアまたは cacerts ファイルに含まれている自己署名証明書) に至るまでの信頼のパスの構築に失敗した場合は、インポートする証明書の情報を表示し、ユーザーに確認を求めます。 この場合は、表示された証明書のフィンガープリントと、ほかのなんらかの (信頼できる) 情報源 (証明書の所有者本人など) から入手したフィンガープリントとを比較します。「信頼できる証明書」として証明書をインポートするときは、証明書が有効であることを慎重に確認する必要があります。詳細は、「信頼できる証明書のインポートに関する注意事項」を参照してください。インポート操作は、証明書を確認する時点で中止できます。ただし、\f2\-noprompt\fP オプションが指定されている場合、ユーザーとの対話は行われません。 .LP +\f3̾ȥݥȤʤ\fP\f3keytool\fP ϥ桼Ǥ񥨥ȥɲä褦ȤƤΤȸʤޤ .RE -\f3証明応答のインポート\fP -.RS 3 +\f3ǤΥݡ\fP +.LP +\f3keytool\fP ϡȥ˾ɲäˡȥˤǤ¸ߤ뿮ǤȤäơݡȤ񤫤 (롼 CA ) ʽ̾˻ޤǤοΥιۤߤޤ .LP -「証明応答」をインポートするときは、キーストア内の信頼できる証明書、および (\f2\-trustcacerts\fP オプションが指定されている場合は) cacerts キーストアファイルで構成された証明書を使って証明応答が検査されます。 +\f2\-trustcacerts\fP ץꤷ硢ɲäξϿǤ뤹ʤ cacerts Ȥ̾Υե˴ޤޤΥȸʤޤ .LP +\f3keytool\fP ݡȤ񤫤鼫ʽ̾ (ȥޤ cacerts ե˴ޤޤƤ뼫ʽ̾) ˻ޤǤοΥѥιۤ˼ԤϡݡȤξɽ桼˳ǧޤ ξϡɽ줿Υե󥬡ץȤȡۤΤʤ餫 (Ǥ) (νͭܿͤʤ) ꤷե󥬡ץȤȤӤޤֿǤפȤƾ򥤥ݡȤȤϡͭǤ뤳Ȥ򿵽Ť˳ǧɬפޤܺ٤ϡֿǤΥݡȤ˴ؤջפ򻲾ȤƤݡϡǧߤǤޤ \f2\-noprompt\fP ץ󤬻ꤵƤ硢桼ȤäϹԤޤ +\f3Υݡ\fP .LP -証明応答が信頼できるかどうかを決定する方法は次のとおりです。 +־פ򥤥ݡȤȤϡȥοǤ񡢤 (\-trustcacerts ץ󤬻ꤵƤ) cacerts ȥեǹ줿Ȥäƾޤ .LP +Ǥ뤫ɤꤹˡϼΤȤǤ .RS 3 .TP 2 o -\f3証明応答が単一の X.509 証明書である場合\fP、\f3keytool\fP は、証明応答から (ルート CA の) 自己署名証明書に至るまでの信頼チェーンの確立を試みます。証明応答と、証明応答の認証に使われる証明書の階層構造は、\f2alias\fP の新しい証明書チェーンを形成します。信頼チェーンが確立されない場合、証明応答はインポートされません。この場合、\f3keytool\fP は証明書を出力せず、ユーザーに検証を求めるプロンプトを表示します。 ユーザーが証明応答の信頼性を判断するのは、不可能ではなくても非常に困難だからです。 +\f3ñ X.509 Ǥ\fP\f3keytool\fP ϡ (롼 CA ) ʽ̾˻ޤǤογΩߤޤȡǧڤ˻Ȥγع¤ϡ\f2alias\fP οޤ󤬳Ωʤ硢ϥݡȤޤ󡣤ξ硢\f3keytool\fP ϾϤ桼˸ڤץץȤɽޤ桼οȽǤΤϡԲǽǤϤʤƤ˺Ǥ .TP 2 o -\f3証明応答が PKCS#7 形式の証明書チェーンである場合\fP、\f3keytool\fP は、まずチェーンを並べ替えて、ユーザーの証明書が最初に、ルート CA の自己署名証明書が最後にくるようにしたあと、証明応答に含まれるルート CA の証明書と、キーストア内または (\f2\-trustcacerts\fP オプションが指定されている場合は) cacerts キーストアファイル内の信頼できる証明書とをすべて比較し、一致するものがあるかどうかを調べます。一致するものが見つからなかった場合は、ルート CA の証明書の情報を表示し、ユーザーに確認を求めます。 この場合は、表示された証明書のフィンガープリントと、ほかのなんらかの (信頼できる) 情報源 (ルート CA 自身など) から入手したフィンガープリントとを比較します。インポート操作は、証明書を確認する時点で中止できます。ただし、\f2\-noprompt\fP オプションが指定されている場合、ユーザーとの対話は行われません。 +\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 .LP -証明書応答内の公開鍵が \f2alias\fP の下にすでに格納されているユーザーの公開鍵に一致した場合、古い証明書チェーンが応答内の新しい証明書チェーンで置き換えられます。以前の証明書チェーンを新しい証明書チェーンで置き換えることができるのは、有効な \f2keypass\fP、つまり該当するエントリの非公開鍵を保護するためのパスワードを指定した場合だけです。パスワードを指定しておらず、非公開鍵のパスワードがキーストアのパスワードと異なる場合は、非公開鍵のパスワードの入力を求められます。 +θ \f2alias\fP βˤǤ˳ǼƤ桼θ˰פ硢Ť󤬱ο֤ޤξ򿷤֤뤳ȤǤΤϡͭ \f2keypass\fPĤޤ곺륨ȥݸ뤿ΥѥɤꤷǤѥɤꤷƤ餺ΥѥɤȥΥѥɤȰۤʤϡΥѥɤϤޤ .LP -.RE -.LP -このコマンドは、以前のリリースでは \f2\-import\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-importcert\fP を使用することをお勧めします。 +ΥޥɤϡΥ꡼Ǥ \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 が指定されなかった場合、ターゲットエントリはソースエントリのパスワードによって保護されます。 +\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 が指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ソースキーストア内のあるエントリタイプがターゲットキーストアでサポートされていない場合や、あるエントリをターゲットキーストアに格納する際にエラーが発生した場合、ユーザーはそのエントリをスキップして処理を続行するか、あるいは処理を中断するかの選択を求められます。ターゲットエントリはソースエントリのパスワードによって保護されます。 +\f2srcalias\fP ץ󤬻ꤵʤä硢ȥΤ٤ƤΥȥ꤬åȥȥ˥ݡȤޤƥåȥȥб륽ȥ̾β˳ǼޤΥȥ꤬ѥɤݸƤ硢\f2srcstorepass\fP ȤäƤΥȥ꤬ޤ\f2srcstorepass\fP ꤵʤäʤä硢桼ϥѥɤϤޤȥΤ륨ȥ꥿פåȥȥǥݡȤƤʤ䡢륨ȥ򥿡åȥȥ˳Ǽݤ˥顼ȯ硢桼ϤΥȥ򥹥åפƽ³Ԥ뤫뤤ϽǤ뤫ޤåȥȥϥȥΥѥɤˤäݸޤ .LP -ターゲット別名がターゲットキーストア内にすでに存在していた場合、ユーザーは、そのエントリを上書きするか、あるいは異なる別名の下で新しいエントリを作成するかの選択を求められます。 +å̾åȥȥˤǤ¸ߤƤ硢桼ϡΥȥ񤭤뤫뤤ϰۤʤ̾βǿȥ뤫ޤ .LP -\f2\-noprompt\fP を指定した場合、ユーザーは新しいターゲット別名の入力を求められません。既存のエントリはそのターゲット別名で自動的に上書きされます。最後に、インポートできないエントリは自動的にスキップされ、警告が出力されます。 -.RE -.RE -.SS -データのエクスポート +\f2\-noprompt\fP ꤷ硢桼Ͽå̾Ϥޤ󡣴¸ΥȥϤΥå̾ǼưŪ˾񤭤ޤǸˡݡȤǤʤȥϼưŪ˥åפ졢ٹ𤬽Ϥޤ +.TP 3 +\-printcertreq {\-file file} .LP -.RS 3 +PKCS #10 ξ׵ƤϤޤ׵ϡkeytool \-certreq ޥɤǤޤΥޥɤϡfile ׵ɤ߹ߤޤfile άƤϡɸϤɤ߹ߤޤ +.RE +.LP +.SS +ǡΥݡ .LP .RS 3 .TP 3 -\-certreq {\-alias alias} {\-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} +\-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) を生成します。 +PKCS#10 Ȥäƾ̾׵ (CSR) ޤ .LP -CSR は、証明書発行局 (CA) に送信することを目的としたものです。CA は、証明書要求者を (通常はオフラインで) 認証し、証明書または証明書チェーンを送り返します。 この証明書または証明書チェーンは、キーストア内の既存の証明書チェーン (最初は 1 つの自己署名証明書から構成される) に置き換えて使います。 +CSR ϡȯԶ (CA) 뤳ȤŪȤΤǤCA ϡ׵Ԥ (̾ϥե饤) ǧڤޤϾ֤ޤ ξޤϾϡȥδ¸ξ (ǽ 1 Ĥμʽ̾񤫤鹽) ֤ƻȤޤ .LP -\f2alias\fP に関連付けられた非公開鍵と X.500 識別名は、PKCS#10 証明書要求を作成するのに使われます。非公開鍵はキーストア内ではパスワードによって保護されているので、非公開鍵にアクセスするには、適切なパスワードを提供する必要があります。コマンド行で \f2keypass\fP を指定しておらず、非公開鍵のパスワードがキーストアのパスワードと異なる場合は、非公開鍵のパスワードの入力を求められます。 +\f2alias\fP ˴Ϣդ줿ϡPKCS#10 ׵Τ˻ȤޤϥȥǤϥѥɤˤäݸƤΤǡ˥ˤϡŬڤʥѥɤ󶡤ɬפޤޥɹԤ \f2keypass\fP ꤷƤ餺ΥѥɤȥΥѥɤȰۤʤϡΥѥɤϤޤdname ꤵƤϡ줬 CSR ǼΤȤƻѤޤʳξϡ̾˴Ϣդ줿 X.500 ̾Ѥޤ .LP -\f2sigalg\fP には、CSR に署名を付けるときに使うアルゴリズムを指定します。 +\f2sigalg\fP ˤϡCSR ˽̾դȤ˻Ȥ르ꥺꤷޤ .LP -CSR は、ファイル \f2certreq_file\fP に格納されます。ファイルが指定されていない場合は、標準出力に CSR が出力されます。 +CSR ϡե \f2certreq_file\fP ˳Ǽޤե뤬ꤵƤʤϡɸϤ CSR Ϥޤ .LP -CA からの応答をインポートするには、\f2importcert\fP コマンドを使います。 +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 に格納します。 +\f2alias\fP ˴Ϣդ줿 (ȥ) ɤ߹ߡե \f2cert_file\fP ˳Ǽޤ .LP -ファイルが指定されていない場合は、標準出力に証明書が出力されます。 +ե뤬ꤵƤʤϡɸϤ˾񤬽Ϥޤ .LP -デフォルトでは、バイナリ符号化方式の証明書が出力されます。 ただし、\f2\-rfc\fP オプションを指定した場合は、出力可能符号化方式の証明書が出力されます。 出力可能符号化方式は、インターネット RFC 1421 証明書符号化規格で定義されています。 +ǥեȤǤϡХʥ沽ξ񤬽Ϥޤ \-rfc ץꤷϡϲǽ沽ξ񤬽Ϥޤ ϲǽ沽ϡ󥿡ͥå RFC 1421 沽ʤƤޤ .LP -\f2alias\fP が、信頼できる証明書を参照している場合は、該当する証明書が出力されます。それ以外の場合、\f2alias\fP は、関連付けられた証明書チェーンを持つ鍵エントリを参照します。この場合は、チェーン内の最初の証明書が返されます。この証明書は、\f2alias\fP によって表されるエンティティーの公開鍵を認証する証明書です。 +\f2alias\fP Ǥ򻲾ȤƤϡ񤬽Ϥޤʳξ硢\f2alias\fP ϡϢդ줿ĸȥ򻲾Ȥޤξϡκǽξ֤ޤξϡ\f2alias\fP ˤäɽ륨ƥƥθǧڤǤ .LP -このコマンドは、以前のリリースでは \f2\-export\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-exportcert\fP を使用することをお勧めします。 +ΥޥɤϡΥ꡼Ǥ \f2\-export\fP Ȥ̾ǤθŤ̾ϡΥ꡼Ǥ³ݡȤƤꡢΥ꡼Ǥ⥵ݡȤͽǤϤ狼䤹褦ˡ̾ \f2\-exportcert\fP Ѥ뤳Ȥ򤪴ᤷޤ .RE .LP -.RE .SS -データの表示 -.LP -.RS 3 - +ǡɽ .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 で特定されるキーストアエントリの内容を (標準出力に) 出力します。別名が指定されていない場合は、キーストア全体の内容が表示されます。 +\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 -このコマンドは、デフォルトでは証明書の MD5 フィンガープリントを表示します。\f2\-v\fP オプションが指定されている場合は、所有者、発行者、シリアル番号、拡張機能などの付加的な情報とともに、人間が読むことのできる形式で証明書が表示されます。\f2\-rfc\fP オプションが指定されている場合は、出力可能符号化方式で証明書の内容が表示されます。 出力可能符号化方式は、インターネット RFC 1421 証明書符号化規格で定義されています。 +SSL Сեظˤϡ \f2\-J\-Dhttps.proxyHost=proxyhost\fP \f2\-J\-Dhttps.proxyPort=proxyport\fP 򥳥ޥɹԤǻꤷơץȥͥ󥰤ѤǤޤܺ٤ϡ +.na +\f2JSSE ե󥹥ɡ\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html򻲾ȤƤ .LP -\f2\-v\fP オプションと \f2\-rfc\fP オプションとを同時に指定することはできません。 +\f3\fP: ΥץϥȥȤϴطʤѤǤޤ .TP 3 -\-printcert {\-file cert_file} {\-v} {\-Jjavaoption} +\-printcrl \-file crl_ {\-v} .LP -ファイル +ե \f2crl_file\fP μäꥹ (CRL) ɤ߹ߤޤ .LP -インターネット RFC 1421 証明書符号化規格で定義されています。 +μäꥹ (CRL) ϡǥȯԤȯԶ (CA) ˤäƼä줿ǥΥꥹȤǤCA ϡ\f2crl_file\fP ޤ .LP -注:このコマンドはキーストアとは関係なく動作します。 +\f3\fP: ΥץϥȥȤϴطʤѤǤޤ .RE .LP -.RE .SS -キーストアの管理 -.LP -.RS 3 - +ȥδ .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 には、新しいパスワードを指定します。 \f2new_storepass\fP は、6 文字以上でなければなりません。 +ȥƤݸ뤿˻Ȥѥɤѹޤ\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 に変更します。 \f2new_keypass\fP は、6 文字以上でなければなりません。 +\f2alias\fP ˤäꤵ/̩ݸ뤿Υѥɤ\f2old_keypass\fP \f2new_keypass\fP ѹޤnew_keypass ϡ6 ʸʾǤʤФʤޤ .LP -コマンド行で \f2\-keypass\fP オプションを指定しておらず、鍵のパスワードがキーストアのパスワードと異なる場合は、鍵のパスワードの入力を求められます。 +ޥɹԤ \f2\-keypass\fP ץꤷƤ餺ΥѥɤȥΥѥɤȰۤʤϡΥѥɤϤޤ .LP -コマンド行で \f2\-new\fP オプションを指定しなかった場合は、新しいパスワードの入力を求められます。 +ޥɹԤ \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 によって特定されるエントリをキーストアから削除します。コマンド行で別名を指定しなかった場合は、別名の入力を求められます。 +\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 (指定された場合) がまず試みられます。その試みが失敗すると、ユーザーはパスワードの入力を求められます。 +ꤵ줿 \f2alias\fP 鿷̾ \f2destalias\fP ء¸Υȥȥưޤå̾ꤵʤä硢ΥޥɤϤϤޤΥȥ꤬ȥѥɤݸƤ硢\-keypassץץͳǤΥѥɤǤޤѥɤꤵʤä硢\f2storepass\fP (ꤵ줿) ޤߤޤλߤԤȡ桼ϥѥɤϤޤ .RE .LP -.RE .SS -ヘルプの表示 -.LP -.RS 3 - +إפɽ .LP .RS 3 .TP 3 \-help .LP -基本的なコマンドとそのオプションの一覧を表示します。 -.RE - +ŪʥޥɤȤΥץΰɽޤ .LP +Υޥɤξܺ٤ˤĤƤϡΤ褦ϤƤ \f2command_name\fP ϥޥɤ̾Ǥ +.nf +\f3 +.fl + keytool \-\fP\f4command_name\fP\f3 \-help +.fl +\fP +.fi .RE -.SH "例" -.LP .LP +.SH "" .LP -ここでは、自分の鍵のペアおよび信頼できるエンティティーからの証明書を管理するためのキーストアを作成する場合を例として示します。 .LP -.SS -鍵のペアの生成 +ǤϡʬθΥڥӿǤ륨ƥƥξ뤿ΥȥȤƼޤ .LP -.RS 3 - +.SS +Υڥ .LP .LP -まず、キーストアを作成して鍵のペアを生成する必要があります。次に示すのは、実行するコマンドの例です。 +ޤȥƸΥڥɬפޤ˼Τϡ¹Ԥ륳ޥɤǤ .LP .nf \f3 .fl - keytool \-genkeypair \-dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US" + keytool \-genkeypair \-dname "cn=Mark Jones, ou=Java, o=Oracle, c=US" .fl \-alias business \-keypass kpi135 \-keystore /working/mykeystore .fl @@ -485,16 +1096,16 @@ CA からの応答をインポートするには、\f2importcert\fP コマンド .LP .LP -注:このコマンドは 1 行に入力しなければなりません。例で複数行に入力しているのは読みやすくするためです。 +: Υޥɤ 1 ԤϤʤФʤޤʣԤϤƤΤɤߤ䤹뤿Ǥ .LP .LP -この例では、working ディレクトリに mykeystore という名前のキーストアを作成し (キーストアはまだ存在していないと仮定する)、作成したキーストアにパスワード ab987c を割り当てます。生成する公開鍵と非公開鍵のペアに対応するエンティティーの「識別名」は、通称が「Mark Jones」、組織単位が「JavaSoft」、組織が「Sun」、2 文字の国番号が「US」です。公開鍵と非公開鍵のサイズはどちらも 1024 ビットで、鍵の作成にはデフォルトの DSA 鍵生成アルゴリズムを使用します。 +Ǥϡworking ǥ쥯ȥ mykeystore Ȥ̾Υȥ (ȥϤޤ¸ߤƤʤȲꤹ)ȥ˥ѥ ab987c ƤޤΥڥб륨ƥƥΡּ̾פϡ̾ΤMark Jonesסȿñ̤JavaסȿOracleס2 ʸιֹ椬USפǤΥϤɤ 1024 ӥåȤǡκˤϥǥեȤ DSA 르ꥺѤޤ .LP .LP -このコマンドは、公開鍵と識別名情報を含む自己署名証明書 (デフォルトの SHA1withDSA 署名アルゴリズムを使用) を作成します。証明書の有効期間は 180 日です。 証明書は、別名「business」で特定されるキーストアエントリ内の非公開鍵に関連付けられます。非公開鍵にはパスワード「kpi135」が割り当てられます。 +Υޥɤϡȼ̾ޤ༫ʽ̾ (ǥեȤ SHA1withDSA ̾르ꥺ) ޤ֤ͭ 180 Ǥ ϡ̾businessפꤵ륭ȥȥ˴Ϣդޤˤϥѥɡkpi135פƤޤ .LP .LP -オプションのデフォルト値を使う場合は、上に示したコマンドを大幅に短くすることができます。実際には、オプションを 1 つも指定せずにコマンドを実行することも可能です。 デフォルト値を持つオプションでは、オプションを指定しなければデフォルト値が使われ、必要な値については入力を求められます。たとえば、単に次のように入力することもできます。 +ץΥǥեͤȤϡ˼ޥɤû뤳ȤǤޤºݤˤϡץ 1 Ĥꤻ˥ޥɤ¹Ԥ뤳ȤǽǤ ǥեͤĥץǤϡץꤷʤХǥեͤȤ졢ɬפͤˤĤƤϤޤȤСñ˼Τ褦Ϥ뤳ȤǤޤ .LP .nf \f3 @@ -505,19 +1116,17 @@ CA からの応答をインポートするには、\f2importcert\fP コマンド .fi .LP -この場合は、mykey という別名でキーストアエントリが作成され、新しく生成された鍵のペア、および 90 日間有効な証明書がこのエントリに格納されます。このエントリは、ホームディレクトリ内の .keystore という名前のキーストアに置かれます。このキーストアがまだ存在していない場合は、作成されます。識別名情報、キーストアのパスワード、および非公開鍵のパスワードについては、入力を求められます。 .LP -以下では、オプションを指定しないで \f2\-genkeypair\fP コマンドを実行したものとして例を示します。 情報の入力を求められた場合は、最初に示した \f2\-genkeypair\fP コマンドの値を入力したものとします (たとえば、非公開鍵のパスワードには kpi135 と指定)。 +ξϡmykey Ȥ̾ǥȥȥ꤬졢줿Υڥ 90 ͭʾ񤬤Υȥ˳ǼޤΥȥϡۡǥ쥯ȥ .keystore Ȥ̾Υȥ֤ޤΥȥޤ¸ߤƤʤϡޤ̾󡢥ȥΥѥɡΥѥɤˤĤƤϡϤޤ .LP -.RE -.SS -証明書発行局に対する署名付き証明書の要求 .LP -.RS 3 - +ʲǤϡץꤷʤ \f2\-genkeypair\fP ޥɤ¹ԤΤȤ򼨤ޤϤ줿ϡǽ˼ \f2\-genkeypair\fP ޥɤͤϤΤȤޤ (ȤСΥѥɤˤ kpi135 Ȼ) +.LP +.SS +ȯԶɤФ̾դ׵ .LP .LP -現時点で手元にあるのは、1 通の自己署名証明書だけです。証明書に証明書発行局 (CA) の署名が付いていれば、ほかのユーザーから証明書が信頼できる可能性も高くなります。CA の署名を取得するには、まず、証明書署名要求 (CSR) を生成します。 たとえば、次のようにします。 +Ǽ긵ˤΤϡ1 ̤μʽ̾Ǥ˾ȯԶ (CA) ν̾դƤСۤΥ桼񤬿Ǥǽ⤯ʤޤCA ν̾ˤϡޤ̾׵ (CSR) ޤ ȤСΤ褦ˤޤ .LP .nf \f3 @@ -528,41 +1137,39 @@ CA からの応答をインポートするには、\f2importcert\fP コマンド .fi .LP -CSR (デフォルト別名「mykey」によって特定されるエンティティーの CSR) が作成され、MarkJ.csr という名前のファイルに置かれます。このファイルは、VeriSign などの CA に提出します。 CA は要求者を (通常はオフラインで) 認証し、要求者の公開鍵を認証した署名付きの証明書を送り返します。場合によっては、CA が証明書のチェーンを返すこともあります。 証明書のチェーンでは、各証明書がチェーン内のその前の署名者の公開鍵を認証します。 -.RE -.SS -CA からの証明書のインポート .LP -.RS 3 - +CSR (ǥե̾mykeyפˤäꤵ륨ƥƥ CSR) 졢MarkJ.csr Ȥ̾Υե֤ޤΥեϡVeriSign ʤɤ CA Фޤ CA ׵Ԥ (̾ϥե饤) ǧڤ׵Ԥθǧڤ̾դξ֤ޤˤäƤϡCA Υ֤Ȥ⤢ޤΥǤϡƾ񤬥Τν̾Ԥθǧڤޤ +.LP +.SS +CA ξΥݡ .LP .LP -作成した自己署名証明書は、証明書チェーンで置き換える必要があります。 証明書チェーンでは、各証明書が、「ルート」CA を起点とするチェーン内の次の証明書の署名者の公開鍵を認証します。 +ʽ̾ϡ֤ɬפޤǤϡƾ񤬡֥롼ȡCA Ȥμξν̾Ԥθǧڤޤ .LP .LP -CA からの証明応答をインポートするには、キーストアか、(importcert コマンド で説明しているように) \f2cacerts\fP キーストアファイル内に 1 つ以上の「信頼できる証明書」がある必要があります。 +CA ξ򥤥ݡȤˤϡȥ \f2cacerts\fP ȥե (importcert ޥɤ) 1 İʾΡֿǤפɬפޤ .LP .RS 3 .TP 2 o -証明応答が証明書チェーンの場合は、チェーンのトップの証明書 (その CA の公開鍵を認証する「ルート」CA の証明書) だけを必要とする +ξϡΥȥåפξ ( CA θǧڤ֥롼ȡCA ξ) ɬפȤ .TP 2 o -証明応答が単一の証明書の場合は、証明書に署名した CA の発行用の証明書が必要で、その証明書が自己署名されない場合は、さらにその証明書の署名者用の証明書を必要とする。 このようにして自己署名される「ルート」CA の証明書までそれぞれ証明書を必要とする +ñξξϡ˽̾ CA ȯѤξɬפǡξ񤬼ʽ̾ʤϡˤξν̾ѤξɬפȤ롣 Τ褦ˤƼʽ֥̾롼ȡCA ξޤǤ줾ɬפȤ .RE .LP .LP -cacerts キーストアファイルは、5 つの VeriSign ルート CA 証明書を含んだ状態で出荷されているので、VeriSign の証明書を、信頼できる証明書としてキーストア内にインポートする必要はないかもしれません。ただし、ほかの CA に対して署名付き証明書を要求していて、この CA の公開鍵を認証する証明書が、cacerts にまだ追加されていない場合は、該当する CA からの証明書を、「信頼できる証明書」としてインポートする必要があります。 +cacerts ȥեϡĤ VeriSign 롼 CA ޤ֤ǽв٤ƤΤǡVeriSign ξ򡢿ǤȤƥȥ˥ݡȤɬפϤʤ⤷ޤ󡣤ۤ CA Фƽ̾դ׵ᤷƤơ CA θǧڤ񤬡cacerts ˤޤɲäƤʤϡ CA ξ򡢡ֿǤפȤƥݡȤɬפޤ .LP .LP -通常、CA からの証明書は、自己署名証明書、またはほかの CA によって署名された証明書です (後者の場合は、該当するほかの CA の公開鍵を認証する証明書も必要)。たとえば、ABC という企業が CA だとします。 このとき、この CA の公開鍵を認証する自己署名証明書と考えられる ABCCA.cer という名前のファイルを、ABC から入手したとします。 +̾CA ξϡʽ̾񡢤ޤϤۤ CA ˤäƽ̾줿Ǥ (Ԥξϡۤ CA θǧڤɬ)ȤСABC ȤȤ CA ȤޤΤȤ CA θǧڤ뼫ʽ̾ȹͤ ABCCA.cer Ȥ̾ΥեABC ꤷȤޤ .LP .LP -「信頼できる証明書」として証明書をインポートするときは、証明書が有効であることを慎重に確認する必要があります。まず、証明書の内容を表示し (\f3keytool\fP \f2\-printcert\fP コマンドを使用するか、または \f2\-noprompt\fP オプションを指定しないで \f3keytool\fP \f2\-importcert\fP コマンドを使用)、表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致するかどうかを確認します。証明書を送信した人物に連絡し、この人物が提示した (または安全な公開鍵のリポジトリによって提示される) フィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中でほかの何者か (攻撃者など) による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのものを信頼することになります。 +ֿǤפȤƾ򥤥ݡȤȤϡͭǤ뤳Ȥ򿵽Ť˳ǧɬפޤޤƤɽ (\f3keytool\fP \f2\-printcert\fP ޥɤѤ뤫ޤ \-noprompt ץꤷʤ \f3keytool\fP \f2\-importcert\fP ޥɤѤ ɽ줿Υե󥬡ץȤԤե󥬡ץȤȰפ뤫ɤǧޤʪϢοʪ󼨤 (ޤϰʸΥݥȥˤä󼨤) ե󥬡ץȤȡΥޥɤɽ줿ե󥬡ץȤȤӤޤե󥬡ץȤפСǤۤβԤ (Ԥʤ) ˤΤؤԤƤʤȤǧǤޤǤμι⤬ԤƤ硢åԤ鷺˾򥤥ݡȤȡԤˤäƽ̾줿٤ƤΤΤꤹ뤳Ȥˤʤޤ .LP .LP -ABCCA.cer を有効な証明書として信頼する場合は、証明書をキーストアに追加できます。 たとえば、次のようにします。 +ABCCA.cer ͭʾȤƿꤹϡ򥭡ȥɲäǤޤ ȤСΤ褦ˤޤ .LP .nf \f3 @@ -573,19 +1180,17 @@ ABCCA.cer を有効な証明書として信頼する場合は、証明書をキ .fi .LP -ABCCA.cer ファイルのデータを含む「信頼できる証明書」のエントリがキーストア内に作成され、該当するエントリに abc という別名が割り当てられます。 -.RE -.SS -CA からの証明応答のインポート .LP -.RS 3 - +ABCCA.cer եΥǡޤֿǤפΥȥ꤬ȥ˺졢륨ȥ abc Ȥ̾Ƥޤ +.LP +.SS +CA ξΥݡ .LP .LP -証明書署名要求の提出先の CA の公開鍵を認証する証明書をインポートしたあとは (または同種の証明書がすでに cacerts ファイル内に存在している場合は)、証明応答をインポートし、自己署名証明書を証明書チェーンで置き換えることができます。この証明書チェーンは、CA の応答がチェーンの場合、証明書署名要求に対する応答として CA から送り返された証明書チェーンです。 また、CA の応答が単一の証明書の場合は、この証明応答と、インポート先のキーストア内または cacerts キーストアファイル内にすでに存在する信頼できる証明書とを使って構築した証明書チェーンです。 +̾׵ CA θǧڤ򥤥ݡȤȤ (ޤƱξ񤬤Ǥ cacerts ե¸ߤƤ)򥤥ݡȤʽ֤̾뤳ȤǤޤξϡCA αξ硢̾׵ФȤ CA ֤줿Ǥ ޤCA αñξξϡξȡݡΥȥޤ cacerts ȥեˤǤ¸ߤ뿮ǤȤȤäƹۤǤ .LP .LP -たとえば、証明書署名要求を VeriSign に送信したとします。送り返された証明書の名前が VSMarkJ.cer だとすると、次のようにして応答をインポートできます。 +ȤС̾׵ VeriSign Ȥޤ֤줿̾ VSMarkJ.cer ȤȡΤ褦ˤƱ򥤥ݡȤǤޤ .LP .nf \f3 @@ -594,18 +1199,16 @@ CA からの証明応答のインポート .fl \fP .fi -.RE .LP .SS -公開鍵を認証する証明書のエクスポート +ǧڤΥݡ .LP -.RS 3 - .LP -たとえば、jarsigner(1) を使って Java ARchive (JAR) ファイルに署名したとします。この JAR ファイルはクライアントによって使われますが、クライアント側では署名を認証したいと考えています。 +ȤСjarsigner(1) ġȤä Java ARchive (JAR) ե˽̾դȤޤ JAR եϥ饤ȤˤäƻȤޤ饤¦ǤϽ̾ǧڤȹͤƤޤ .LP -クライアントが署名を認証する方法の 1 つに、まず自分の公開鍵の証明書を「信頼できる」エントリとしてクライアントのキーストアにインポートする方法があります。そのためには、証明書をエクスポートして、クライアントに提供します。たとえば、次のようにして、証明書を \f2MJ.cer\fP という名前のファイルにコピーします。 このエントリには「mykey」という別名が使われているとします。 +.LP +饤Ȥ̾ǧڤˡ 1 ĤˡޤʬθξֿǤץȥȤƥ饤ȤΥȥ˥ݡȤˡޤΤˤϡ򥨥ݡȤơ饤Ȥ󶡤ޤȤСΤ褦ˤơ \f2MJ.cer\fP Ȥ̾Υե˥ԡޤΥȥˤϡmykeyפȤ̾ȤƤȤޤ .LP .nf \f3 @@ -616,24 +1219,22 @@ CA からの証明応答のインポート .fi .LP -証明書と署名付き JAR ファイルを入手したクライアントは、\f3jarsigner\fP ツールを使って署名を認証できます。 -.RE -.SS -キーストアのインポート .LP -.RS 3 - +Ƚ̾դ JAR եꤷ饤Ȥϡ\f3jarsigner\fP ġȤäƽ̾ǧڤǤޤ +.LP +.SS +ȥΥݡ .LP .LP -コマンド「importkeystore」を使えば、あるキーストアの全体を別のキーストア内にインポートできます。 これは、鍵や証明書といったソースキーストア内のすべてのエントリが、単一のコマンドを使ってターゲットキーストア内にインポートされることを意味します。このコマンドを使えば、異なるタイプのキーストア内に含まれるエントリをインポートすることができます。インポート時には、ターゲットキーストア内の新しいエントリはすべて、元と同じ別名および (秘密鍵や非公開鍵の場合は) 保護用パスワードを持ちます。ソースキーストア内の非公開鍵や秘密鍵の回復時に問題が発生した場合、\f3keytool\fP はユーザーにパスワードの入力を求めます。このコマンドは、別名の重複を検出すると、ユーザーに新しい別名の入力を求めます。 ユーザーは、新しい別名を指定することも、単純に既存の別名の上書きを \f3keytool\fP に許可することもできます。 +ޥɡimportkeystoreפȤС륭ȥΤ̤Υȥ˥ݡȤǤޤϡȤäȥΤ٤ƤΥȥ꤬ñΥޥɤȤäƥåȥȥ˥ݡȤ뤳Ȥ̣ޤΥޥɤȤСۤʤ륿פΥȥ˴ޤޤ륨ȥ򥤥ݡȤ뤳ȤǤޤݡȻˤϡåȥȥοȥϤ٤ơƱ̾ (̩ξ) ݸѥѥɤޤȥ̩β꤬ȯ硢\f3keytool\fP ϥ桼˥ѥɤϤޤΥޥɤϡ̾νʣ򸡽Фȡ桼˿̾Ϥޤ桼ϡ̾ꤹ뤳Ȥ⡢ñ˴¸̾ξ񤭤 \f3keytool\fP ˵Ĥ뤳ȤǤޤ .LP .LP -たとえば、通常の JKS タイプのキーストア key.jks 内のエントリを PKCS #11 タイプのハードウェアベースのキーストア内にインポートするには、次のコマンドを使用できます。 +ȤС̾ JKS פΥȥ key.jks Υȥ PKCS #11 פΥϡɥ١Υȥ˥ݡȤˤϡΥޥɤѤǤޤ .LP .nf \f3 .fl -keytool \-importkeystore + keytool \-importkeystore .fl \-srckeystore key.jks \-destkeystore NONE .fl @@ -646,12 +1247,12 @@ keytool \-importkeystore .LP .LP -また、importkeystore コマンドを使えば、あるソースキーストア内の単一のエントリをターゲットキーストアにインポートすることもできます。この場合、上記の例で示したオプションに加え、インポート対象となる別名を指定する必要があります。srcalias オプションを指定する場合には、ターゲット別名もコマンド行から指定できるほか、秘密/非公開鍵の保護用パスワードやターゲット保護用パスワードも指定できます。そうすれば、プロンプトのまったく表示されない \f3keytool\fP コマンドを発行できます。これは、\f3keytool\fP コマンドをスクリプトファイルに含める際に非常に便利です。 次に例を示します。 +ޤimportkeystore ޥɤȤС륽ȥñΥȥ򥿡åȥȥ˥ݡȤ뤳ȤǤޤξ硢嵭Ǽץ˲äݡоݤȤʤ̾ꤹɬפޤsrcalias ץꤹˤϡå̾⥳ޥɹԤǤ̩ۤ/ݸѥѥɤ䥿åݸѥѥɤǤޤСץץȤΤޤäɽʤ \f3keytool\fP ޥɤȯԤǤޤϡ\f3keytool\fP ޥɤ򥹥ץȥե˴ޤݤǤ򼨤ޤ .LP .nf \f3 .fl -keytool \-importkeystore + keytool \-importkeystore .fl \-srckeystore key.jks \-destkeystore NONE .fl @@ -667,55 +1268,74 @@ keytool \-importkeystore .fl \fP .fi -.RE .LP -.SH "用語と警告" +.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 -キーストア +KeyStore .LP -.RS 3 - .LP -キーストアは、暗号化の鍵と証明書を格納するための機能です。 -.RE +ȥϡŹ沽θȾǼ뤿εǽǤ +.LP .RS 3 .TP 2 o -.TP 2 -o -\f3キーストアのエントリ\fP -.RS 3 - +\f3ȥΥȥ\fP .LP -キーストアには異なるタイプのエントリを含めることができます。\f3keytool\fP でもっとも適用範囲の広いエントリタイプは、次の 2 つです。 +ȥˤϰۤʤ륿פΥȥޤ뤳ȤǤޤ\f3keytool\fP ǤäȤŬϰϤιȥ꥿פϡ 2 ĤǤ .RS 3 .TP 3 1. -\f3鍵のエントリ\fP \- 各エントリは、非常に重要な暗号化の鍵の情報を保持します。この情報は、許可していないアクセスを防ぐために、保護された形で格納されます。一般に、この種のエントリとして格納される鍵は、秘密鍵か、対応する公開鍵の証明書チェーンを伴う非公開鍵です。\f3keytool\fP がこの両方のタイプのエントリを処理できるのに対し、\f3jarsigner\fP ツールは後者のタイプのエントリ、つまり非公開鍵とそれに関連付けられた証明書チェーンのみを処理します。 +\f3Υȥ\fP \- ƥȥϡ˽פʰŹ沽θξݻޤξϡĤƤʤɤˡݸ줿dzǼޤ ̤ˡμΥȥȤƳǼ븰ϡ̩бξȼǤ\f3keytool\fP ξΥפΥȥǤΤФ\f3jarsigner\fP ġϸԤΥפΥȥꡢĤޤȤ˴Ϣդ줿Τߤޤ .TP 3 2. -\f3信頼できる証明書のエントリ\fP \- 各エントリは、第三者からの公開鍵証明書を 1 つ含んでいます。この証明書は、「信頼できる証明書」と呼ばれます。 それは、証明書内の公開鍵が、証明書の「Subject」(所有者) によって特定されるアイデンティティーに由来するものであることを、キーストアの所有者が信頼するからです。証明書の発行者は、証明書に署名を付けることによって、その内容を保証します。 -.RE - -.LP +\f3ǤΥȥ\fP \- ƥȥϡ軰Ԥθ 1 ĴޤǤޤξϡֿǤפȸƤФޤ ϡθΡSubject(ͭ) ˤäꤵ륢ǥƥƥͳ褹ΤǤ뤳Ȥ򡢥ȥνͭԤꤹ뤫ǤȯԼԤϡ˽̾դ뤳ȤˤäơƤݾڤޤ .RE .TP 2 o -\f3キーストアの別名\fP -.RS 3 -.LP -キーストアのすべてのエントリ (鍵および信頼できる証明書) は、一意の「別名」を介してアクセスされます。 +\f3ȥ̾\fP .LP +ȥΤ٤ƤΥȥ (ӿǤ) ϡդΡ̾פ𤷤ƥޤ .LP -別名を指定するのは、\-genseckey コマンドを使って秘密鍵を生成したり、\-genkeypair コマンドを使って鍵ペア (公開鍵と非公開鍵) を生成したり、\-importcert コマンドを使って証明書または証明書チェーンを信頼できる証明書のリストに追加したりするなど、特定のエンティティーをキーストアに追加する場合です。これ以後、\f3keytool\fP コマンドでエンティティーを参照する場合は、このときに指定した別名を使用する必要があります。 -.LP -.LP -たとえば、\f2duke\fP という別名を使って新しい公開鍵と非公開鍵のペアを生成し、公開鍵を自己署名証明書 (「証明書チェーン」を参照) でラップするとします。 この場合は、次のコマンドを実行します。 +̾ꤹΤϡ\-genseckey ޥɤȤä̩ꡢ\-genkeypair ޥɤȤäƸڥ () ꡢ\-importcert ޥɤȤäƾޤϾǤΥꥹȤɲäꤹʤɡΥƥƥ򥭡ȥɲäǤʸ塢\f3keytool\fP ޥɤǥƥƥ򻲾ȤϡΤȤ˻ꤷ̾Ѥɬפޤ .LP +ȤС\f2duke\fP Ȥ̾ȤäƿΥڥ򼫸ʽ̾ (־פ򻲾) ǥåפȤޤ ξϡΥޥɤ¹Ԥޤ .nf \f3 .fl @@ -723,9 +1343,8 @@ o .fl \fP .fi - .LP -ここでは、初期パスワードとして dukekeypasswd を指定しています。 以後、別名 \f2duke\fP に関連付けられた非公開鍵にアクセスするコマンドを実行するときは、このパスワードが必要になります。duke の非公開鍵のパスワードをあとから変更するには、次のコマンドを実行します。 +ǤϡѥɤȤ dukekeypasswd ꤷƤޤ ʸ塢̾ duke Ϣդ줿˥륳ޥɤ¹ԤȤϡΥѥɤɬפˤʤޤ duke Υѥɤ򤢤ȤѹˤϡΥޥɤ¹Ԥޤ .nf \f3 .fl @@ -733,49 +1352,37 @@ o .fl \fP .fi - .LP -パスワードが、dukekeypasswd から newpass に変更されます。 +ѥɤdukekeypasswd newpass ѹޤ .LP -注 \-テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。必要なパスワードのオプションをコマンド行で指定しなかった場合は、パスワードの入力を求められます。 -.LP -.RE +: ƥȤŪȤ硢ޤϰǤ뤳Ȥ狼äƤ륷ƥǼ¹ԤʳϡޥɹԤ䥹ץȤǥѥɤꤷʤǤɬפʥѥɤΥץ򥳥ޥɹԤǻꤷʤäϡѥɤϤޤ .TP 2 o -\f3キーストアの実装\fP -.RS 3 -\f2java.security\fP パッケージで提供される \f2KeyStore\fP クラスには、キーストア内の情報に対するアクセスと変更を行うための明確に定義されたインタフェースが用意されています。キーストアの固定実装としては、それぞれが特定の「タイプ」のキーストアを対象とする複数の異なる実装が存在可能です。 -.LP -現在、\f3keytool\fP と \f3jarsigner\fP の 2 つのコマンド行ツールと、\f3Policy Tool\fP という名前の 1 つの GUI ベースのツールが、キーストアの実装を使用しています。\f2KeyStore\fP は public として使用可能なので、JDK ユーザーは \f2KeyStore\fP を使ったほかのセキュリティーアプリケーションも作成できます。 +\f3ȥμ\fP .LP +\f2KeyStore\fP 饹 ( \f2java.security\fP ѥå󶡤) ˤϡȥξФ륢ѹԤΤ줿󥿥եѰդƤޤȥθȤƤϡ줾줬Ρ֥ספΥȥоݤȤʣΰۤʤ¸߲ǽǤ .LP -キーストアには、Sun が提供する組み込みのデフォルトの実装があります。これは、JKS という名前の独自のキーストアタイプ (形式) を利用するもので、キーストアをファイルとして実装しています。この実装では、個々の非公開鍵は個別のパスワードによって保護され、キーストア全体の整合性も (非公開鍵とは別の) パスワードによって保護されます。 +ߡ\f3keytool\fP \f3jarsigner\fP 2 ĤΥޥɹԥġȡ\f3Policy Tool\fP Ȥ̾ 1 Ĥ GUI ١Υġ뤬ȥμѤƤޤ \f2KeyStore\fP public ȤƻѲǽʤΤǡJDK 桼 KeyStore ȤäۤΥƥץꥱǤޤ .LP +ȥˤϡOracle 󶡤Ȥ߹ߤΥǥեȤμޤϡJKS Ȥ̾ȼΥȥ () ѤΤǡȥեȤƼƤޤμǤϡġϸ̤Υѥɤˤäݸ졢ȥΤ (Ȥ̤) ѥɤˤäݸޤ .LP -キーストアの実装は、プロバイダベースです。具体的には、\f2KeyStore\fP が提供するアプリケーションインタフェースは、Service Provider Interface (SPI) という形で実装されています。つまり、対応する \f2KeystoreSpi\fP 抽象クラス (これも \f2java.security\fP パッケージに含まれている) があり、このクラスが Service Provider Interface のメソッドを定義しています。 これらのメソッドは、「プロバイダ」が実装しなければなりません。ここで、「プロバイダ」とは、Java Security API によってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。したがって、キーストアの実装を提供するには、 +ȥμϡץХ١ǤŪˤϡ \f2KeyStore\fP 󶡤륢ץꥱ󥤥󥿥եϡService Provider Interface (SPI) ȤǼƤޤĤޤꡢб \f2KeystoreSpi\fP ݥ饹 ( \f2java.security\fP ѥå˴ޤޤƤ) ꡢΥ饹֥ץХפɬפΤ Service Provider Interface Υ᥽åɤƤޤǡ֥ץХפȤϡJava Security API ˤäƥǽʥӥΥ֥åȤФθ󶡤ѥåޤϥѥåνΤȤǤäơȥμ󶡤ˤϡ .na -\f2「Java(TM) 暗号化アーキテクチャー用プロバイダの実装方法」\fP @ +\f2Java(TM) Ź沽ƥ㡼ѥץХμˡ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.htmlで説明しているように、クライアントが「プロバイダ」を実装し、KeystoreSpi サブクラスの実装を提供する必要があります。 -.LP -.LP -アプリケーションでは、\f2KeyStore\fP クラスが提供する getInstance ファクトリメソッドを使うことで、さまざまなプロバイダから異なる「タイプ」のキーストアの実装を選択できます。キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の非公開/秘密鍵とキーストア自体の整合性を保護するために使われるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。 -.LP -.LP -\f3keytool\fP は、任意のファイルベースのキーストア実装で動作します。keytool は、コマンド行から渡されたキーストアの場所をファイル名として扱い、これを FileInputStream に変換して、FileInputStream からキーストアの情報をロードします。一方、\f3jarsigner\fP ツールと \f3policytool\fP ツールは、URL で指定可能な任意の場所からキーストアを読み込むことができます。 +http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.htmlƤ褦ˡ饤Ȥ֥ץХפKeystoreSpi ֥饹μ󶡤ɬפޤ .LP +ץꥱǤϡKeyStore 饹󶡤 getInstance եȥ᥽åɤȤȤǡޤޤʥץХۤʤ֥ספΥȥμǤޤ ȥΥפϡȥγǼȥǡȤȤˡȥ/̩ȥȥΤݸ뤿˻Ȥ륢르ꥺޤۤʤ륿פΥȥμˤϡߴϤޤ .LP -\f3keytool\fP と \f3jarsigner\fP の場合、\f2\-storetype\fP オプションを使ってコマンド行でキーストアのタイプを指定できます。\f3Policy Tool\fPの場合は、「キーストア」メニューによってキーストアのタイプを指定できます。 +\f3keytool\fP ϡǤդΥե١Υȥưޤkeytool ϡޥɹԤϤ줿ȥξե̾Ȥư FileInputStream ѴơFileInputStream 饭ȥξɤޤ\f3jarsigner\fP ġ \f3policytool\fP ġϡURL ǻǽǤդξ꤫饭ȥɤ߹ळȤǤޤ .LP +\f3keytool\fP \f3jarsigner\fP ξ硢\f2\-storetype\fP ץȤäƥޥɹԤǥȥΥפǤޤ\f3Policy Tool\fPξϡ֥ȥץ˥塼ˤäƥȥΥפǤޤ .LP -キーストアのタイプを明示的に指定しない場合、keytool、jarsigner、および policytool の各ツールは、セキュリティープロパティーファイル内で指定された \f2keystore.type\fP プロパティーの値に基づいてキーストアの実装を選択します。セキュリティープロパティーファイルは、\f2java.security\fP という名前でセキュリティープロパティーディレクトリ \f2java.home\fP/lib/security に置かれています。 \f2java.home\fP は、実行環境のディレクトリ (SDK の \f2jre\fP ディレクトリまたは Java 2 Runtime Environment の最上位ディレクトリ) です。 +ȥΥפŪ˻ꤷʤ硢keytooljarsigner policytool γƥġϡƥץѥƥեǻꤵ줿 \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.type\fP の値を取得し、この値で指定されたタイプのキーストアを実装しているプロバイダが見つかるまで、現在インストールされているすべてのプロバイダを調べます。目的のプロバイダが見つかると、そのプロバイダからのキーストアの実装を使います。 -.LP -.LP -\f2KeyStore\fP クラスでは \f2getDefaultType\fP という名前の static メソッドが定義されており、アプリケーションとアプレットはこのメソッドを使うことで \f2keystore.type\fP プロパティーの値を取得できます。次のコードは、デフォルトのキーストアタイプ (\f2keystore.type\fP プロパティーで指定されたタイプ) のインスタンスを生成します。 -.LP +\f2KeyStore\fP 饹Ǥ \f2getDefaultType\fP Ȥ̾ static ᥽åɤƤꡢץꥱȥץåȤϤΥ᥽åɤȤȤ \f2keystore.type\fP ץѥƥͤǤޤΥɤϡǥեȤΥȥ ( \f2keystore.type\fP ץѥƥǻꤵ줿) Υ󥹥󥹤ޤ .nf \f3 .fl @@ -783,11 +1390,8 @@ http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAPro .fl \fP .fi - -.LP -.LP -デフォルトのキーストアタイプは JKS (Sun が提供する独自のタイプのキーストアの実装) です。これは、セキュリティープロパティーファイル内の次の行によって指定されています。 .LP +ǥեȤΥȥפ JKS (Oracle 󶡤ȼΥפΥȥμ) ǤϡƥץѥƥեμιԤˤäƻꤵƤޤ .nf \f3 .fl @@ -795,14 +1399,10 @@ http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAPro .fl \fP .fi - -.LP .LP -各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。 -.LP -.LP -たとえば、pkcs12 と呼ばれるタイプのキーストアの実装を提供しているプロバイダパッケージを使用するには、上の行を次のように変更します。 +ƥġǥǥեȰʳΥȥμѤˤϡιԤѹ̤ΥȥΥפꤷޤ .LP +ȤСpkcs12 ȸƤФ륿פΥȥμ󶡤ƤץХѥåѤˤϡιԤ򼡤Τ褦ѹޤ .nf \f3 .fl @@ -810,561 +1410,163 @@ http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAPro .fl \fP .fi - .LP -注:キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、JKS と jks は同じものとして扱われます。 +: ȥΥפλǤϡʸȾʸ϶̤ޤ󡣤ȤСJKS jks ƱΤȤưޤ .RE -.RE -.SS -証明書 -.LP -.RS 3 .LP -\f3証明書\fP (\f3公開鍵証明書\fPとも呼ぶ) とは、あるエンティティー (「発行者」) からのデジタル署名付きの文書のことです。 証明書には、ほかのあるエンティティー (「署名者」) の公開鍵 (およびその他の情報) が特別な値を持っていることが書かれています。 -.RE +.SS + +.LP +\f3\fP (\f3\fPȤƤ) Ȥϡ륨ƥƥ (ȯԼԡ) Υǥ̾դʸΤȤǤ ˤϡۤΤ륨ƥƥ (ֽ̾ԡ) θ (Ӥ¾ξ) ̤ͤäƤ뤳Ȥ񤫤Ƥޤ .RS 3 .TP 2 o -.TP 2 -o -\f3証明書の用語\fP -.RS 3 - -.LP +\f3Ѹ\fP .RS 3 .TP 3 -公開鍵 -公開鍵は、特定のエンティティーに関連付けられた数です。 公開鍵は、該当するエンティティーとの間に信頼できる関係を持つ必要があるすべての人に対して公開することを意図したものです。公開鍵は、署名を検証するのに使われます。 + +.LP +ϡΥƥƥ˴Ϣդ줿Ǥϡ륨ƥƥȤδ֤˿Ǥطɬפ뤹٤ƤοͤФƸ뤳ȤտޤΤǤϡ̾򸡾ڤΤ˻Ȥޤ .TP 3 -デジタル署名 -データが「\f2デジタル署名\fP」されると、そのデータは、エンティティーの「アイデンティティー」と、そのエンティティーがデータの内容について知っていることを証明する署名とともに格納されます。エンティティーの非公開鍵を使ってデータに署名を付けると、データの偽造は不可能になります。 +ǥ̾ +.LP +ǡ֥ǥ̾פȡΥǡϡƥƥΡ֥ǥƥƥפȡΥƥƥǡƤˤĤΤäƤ뤳Ȥ̾ȤȤ˳ǼޤƥƥȤäƥǡ˽̾դȡǡε¤Բǽˤʤޤ .TP 3 -アイデンティティー -エンティティーを特定するための既知の方法です。システムによっては、公開鍵をアイデンティティーにするものがあります。 公開鍵のほかにも、Unix UID や電子メールアドレス、X.509 識別名など、さまざまなものをアイデンティティーとすることができます。 +ǥƥƥ +.LP +ƥƥꤹ뤿δΤˡǤƥˤäƤϡ򥢥ǥƥƥˤΤޤΤۤˤ⡢Unix UID Żҥ᡼륢ɥ쥹X.509 ̾ʤɡޤޤʤΤ򥢥ǥƥƥȤ뤳ȤǤޤ .TP 3 -署名 -署名は、なんらかのデータを基にエンティティー (署名者。 証明書に関しては発行者とも呼ばれる) の非公開鍵を使って計算されます。 +̾ +.LP +̾ϡʤ餫Υǡ˥ƥƥ (̾ԡ ˴ؤƤȯԼԤȤƤФ) ȤäƷ׻ޤ .TP 3 -非公開鍵 -非公開鍵は特定のエンティティーだけが知っている数のことで、この数のことを、そのエンティティーの非公開鍵といいます。非公開鍵は、ほかに知られないように秘密にしておくことが前提になっています。 非公開鍵と公開鍵は、すべての公開鍵暗号化システムで対になって存在しています。DSA などの典型的な公開鍵暗号化システムの場合、1 つの非公開鍵は正確に 1 つの公開鍵に対応します。非公開鍵は、署名を計算するのに使われます。 + +.LP +ΥƥƥΤäƤΤȤǡοΤȤ򡢤ΥƥƥȤޤϡۤΤʤ褦̩ˤƤȤˤʤäƤޤȸϡ٤ƤθŹ沽ƥФˤʤä¸ߤƤޤDSA ʤɤŵŪʸŹ沽ƥξ硢1 ĤΤ 1 Ĥθбޤϡ̾׻Τ˻Ȥޤ .TP 3 -エンティティー -エンテンティーは、人、組織、プログラム、コンピュータ、企業、銀行など、一定の度合いで信頼の対象となるさまざまなものを指します。 -.RE - +ƥƥ .LP +ƥƥϡ͡ȿץࡢԥ塼ȡԤʤɡٹ礤ǿоݤȤʤ뤵ޤޤʤΤؤޤ +.RE .LP -公開鍵暗号化では、その性質上、ユーザーの公開鍵にアクセスする必要があります。大規模なネットワーク環境では、互いに通信しているエンティティー間で以前の関係が引き続き確立されていると仮定したり、使われているすべての公開鍵を収めた信頼できるリポジトリが存在すると仮定したりすることは不可能です。このような公開鍵の配布に関する問題を解決するために証明書が考案されました。現在では、「証明書発行局 (CA)」が信頼できる第三者として機能します。CA は、ほかのエンティティーの証明書に署名する (発行する) 行為を、信頼して任されているエンティティー (企業など) です。CA は法律上の契約に拘束されるので、有効かつ信頼できる証明書だけを作成するものとして扱われます。 +Ź沽Ǥϡ塢桼θ˥ɬפޤ絬ϤʥͥåȥĶǤϡߤ̿Ƥ륨ƥƥ֤ǰδط³ΩƤȲꤷꡢȤƤ뤹٤Ƥθ᤿Ǥݥȥ꤬¸ߤȲꤷꤹ뤳ȤԲǽǤΤ褦ʸۤ˴ؤ褹뤿˾񤬹ͰƤޤߤǤϡ־ȯԶ (CA)פǤ軰ԤȤƵǽޤCA ϡۤΥƥƥξ˽̾ (ȯԤ) ԰٤򡢿ꤷǤƤ륨ƥƥ (Ȥʤ) ǤCA ˡΧη˹«ΤǡͭĿǤΤȤưޤ .na \f2VeriSign\fP @ .fi -http://www.verisign.com/、 +http://www.verisign.com/ .na \f2Thawte\fP @ .fi -http://www.thawte.com/、 +http://www.thawte.com/ .na \f2Entrust\fP @ .fi -http://www.entrust.com/ をはじめ、多くの CA が存在します。Netscape や Microsoft の認証サーバー、Entrust の CA 製品などを所属組織内で利用すれば、独自の証明書発行局を運営することも可能です。 -.LP -.LP -\f3keytool\fP を使うと、証明書の表示、インポート、およびエクスポートを行うことができます。また、自己署名証明書を生成することもできます。 -.LP +http://www.entrust.com/ Ϥᡢ¿ CA ¸ߤޤMicrosoft ǧڥСEntrust CA ʤʤɤ°ȿѤСȼξȯԶɤ򱿱Ĥ뤳ȤǽǤ .LP -現在、\f3keytool\fP は X.509 証明書を対象にしています。 +\f3keytool\fP ȤȡɽݡȡӥݡȤԤȤǤޤޤʽ̾뤳ȤǤޤ .LP -.RE +ߡ\f3keytool\fP X.509 оݤˤƤޤ .TP 2 o -\f3X.509 証明書\fP -.RS 3 -X.509 規格では、証明書に含める情報が定義されており、この情報を証明書に書き込む方法 (データ形式) についても記述されています。証明書のすべてのデータは、ASN.1/DER と呼ばれる 2 つの関連規格を使って符号化されます。\f2Abstract Syntax Notation 1\fP はデータについて記述しています。\f2Definite Encoding Rules\fP は、データの保存および転送の方法について記述しています。 +\f3X.509 \fP .LP -すべての X.509 証明書は、署名のほかに次のデータを含んでいます。 +X.509 ʤǤϡ˴ޤƤꡢξ˽񤭹ˡ (ǡ) ˤĤƤ⵭ҤƤޤΤ٤ƤΥǡϡASN.1/DER ȸƤФ 2 ĤδϢʤȤä沽ޤ\f2Abstract Syntax Notation 1\fP ϥǡˤĤƵҤƤޤ\f2Definite Encoding Rules\fP ϡǡ¸žˡˤĤƵҤƤޤ .LP +٤Ƥ X.509 ϡ̾Τۤ˼ΥǡޤǤޤ .RS 3 .TP 3 -バージョン -証明書に適用される X.509 規格のバージョンを特定します。 証明書に指定できる情報は、バージョンによって異なります。これまでに、3 つのバージョンが定義されています。\f3keytool\fP では、v1、v2、および v3 の証明書のインポートとエクスポートが可能です。keytool が生成するのは、v3 の証明書です。 +С .LP -「X.509 Version 1」は、1988 年から利用されて広く普及しており、もっとも一般的です。 +ŬѤ X.509 ʤΥСꤷޤ˻ǤϡСˤäưۤʤޤޤǤˡ3 ĤΥСƤޤ\f3keytool\fP Ǥϡv1v2 v3 ξΥݡȤȥݡȤǽǤkeytool Τϡv3 ξǤ .LP -「X.509 Version 2」では、Subject や発行者の名前をあとで再利用できるようにするために、Subject と発行者の一意識別子の概念が導入されました。ほとんどの証明書プロファイル文書では、名前を再使用しないことと、証明書で一意な識別子を使わないことが、強く推奨されています。Version 2 の証明書は、広くは使われていません。 +X.509 Version 1פϡ1988 ǯѤƹڤƤꡢäȤŪǤ .LP -「X.509 Version 3」はもっとも新しい (1996 年) 規格で、エクステンションの概念をサポートしています。エクステンションは誰でも定義することができ、証明書に含めることができます。現在使われている一般的なエクステンションとしては、KeyUsage (「署名専用」など、鍵の使用を特定の目的に制限する)、AlternativeNames (DNS 名、電子メールアドレス、IP アドレスなど、ほかのアイデンティティーを公開鍵に関連付けることができる) などがあります。エクステンションには、critical というマークを付けて、そのエクステンションのチェックと使用を義務づけることができます。たとえば、critical とマークされ、KeyCertSign が設定された KeyUsage エクステンションが証明書に含まれている場合、この証明書を SSL 通信中に提示すると、証明書が拒否されます。 これは、証明書のエクステンションによって、関連する非公開鍵が証明書の署名専用として指定されており、SSL では使用できないためです。 +X.509 Version 2פǤϡSubject ȯԼԤ̾򤢤ȤǺѤǤ褦ˤ뤿ˡSubject ȯԼԤΰռ̻ҤγǰƳޤۤȤɤξץեʸǤϡ̾ƻѤʤȤȡǰդʼ̻ҤȤʤȤ侩ƤޤVersion 2 ξϡϻȤƤޤ +.LP +X.509 Version 3פϤäȤ⿷ (1996 ǯ) ʤǡƥ󥷥γǰ򥵥ݡȤƤޤƥ󥷥ïǤ뤳ȤǤ˴ޤ뤳ȤǤޤ߻ȤƤŪʥƥ󥷥ȤƤϡKeyUsage (ֽ̾ѡפʤɡλѤŪ¤)AlternativeNames (DNS ̾Żҥ᡼륢ɥ쥹IP ɥ쥹ʤɡۤΥǥƥƥ˴Ϣդ뤳ȤǤ) ʤɤޤƥ󥷥ˤϡcritical ȤޡդơΥƥ󥷥ΥåȻѤ̳Ť뤳ȤǤޤȤСcritical ȥޡ졢KeyCertSign ꤵ줿 KeyUsage ƥ󥷥󤬾˴ޤޤƤ硢ξ SSL ̿󼨤ȡ񤬵ݤޤϡΥƥ󥷥ˤäơϢν̾ѤȤƻꤵƤꡢSSL ǤϻѤǤʤǤ .TP 3 -シリアル番号 -証明書を作成したエンティティーは、そのエンティティーが発行するほかの証明書と区別するために、証明書にシリアル番号を割り当てます。この情報は、さまざまな方法で使われます。 たとえば、証明書が取り消されると、シリアル番号が証明書の取り消しリスト (CRL) に格納されます。 +ꥢֹ +.LP +ƥƥϡΥƥƥȯԤۤξȶ̤뤿ˡ˥ꥢֹƤޤξϡޤޤˡǻȤޤȤС񤬼äȡꥢֹ椬μäꥹ (CRL) ˳Ǽޤ .TP 3 -署名アルゴリズム識別子 -証明書に署名を付けるときに CA が使ったアルゴリズムを特定します。 +̾르ꥺ༱̻ +.LP +˽̾դȤ CA Ȥä르ꥺꤷޤ .TP 3 -発行者名 -証明書に署名を付けたエンティティーの X.500 識別名です。エンティティーは、通常は CA です。この証明書を使うことは、証明書に署名を付けたエンティティーを信頼することを意味します。「ルート」つまり「トップレベル」の CA の証明書など、場合によっては発行者が自身の証明書に署名を付けることがある点に注意してください。 +ȯԼ̾ +.LP +˽̾դƥƥ X.500 ̾Ǥƥƥϡ̾ CA ǤξȤȤϡ˽̾դƥƥꤹ뤳Ȥ̣ޤ֥롼ȡפĤޤ֥ȥåץ٥פ CA ξʤɡˤäƤȯԼԤȤξ˽̾դ뤳ȤդƤ .TP 3 -有効期間 -各証明書は、限られた期間だけ有効になります。この期間は開始の日時と終了の日時によって指定され、数秒の短い期間から 100 年という長期にわたることもあります。選択される有効期間は、証明書への署名に使われる非公開鍵の強度や証明書に支払う金額など、さまざまな要因で異なります。有効期間は、使用する非公開鍵が損なわれない場合に、エンティティーが公開鍵を信頼できると期待される期間です。 +ͭ +.LP +ƾϡ¤줿֤ͭˤʤޤδ֤ϳϤȽλˤäƻꤵ졢äû֤ 100 ǯȤĹˤ錄뤳Ȥ⤢ޤ򤵤֤ͭϡؤν̾˻Ȥζ٤˻ʧۤʤɡޤޤװǰۤʤޤ֤ͭϡѤ»ʤʤˡƥƥǤȴԤ֤Ǥ .TP 3 -Subject 名 -証明書で公開鍵が識別されているエンティティーの名前です。この名前は X.500 標準を使うので、インターネット全体で一意なものと想定されます。これは、エンティティーの X.500 識別名 (DN) です。 次に例を示します。 +Subject ̾ +.LP +Ǹ̤Ƥ륨ƥƥ̾Ǥ̾ X.500 ɸȤΤǡ󥿡ͥåΤǰդʤΤꤵޤϡƥƥ X.500 ̾ (DN) Ǥ򼨤ޤ .nf \f3 .fl - CN=Java Duke, OU=Java Software Division, O=Sun Microsystems Inc, C=US + CN=Java Duke, OU=Java Software Division, O=Oracle Corporation, C=US .fl \fP .fi -これらはそれぞれ主体の通称、組織単位、組織、国を表します。 +.LP +Ϥ줾Τ̾Ρȿñ̡ȿɽޤ .TP 3 -Subject の公開鍵情報 -名前を付けられたエンティティーの公開鍵とアルゴリズム識別子です。 アルゴリズム識別子では、公開鍵に対して使われている公開鍵暗号化システムおよび関連する鍵パラメータが指定されています。 -.RE - +Subject θ .LP +̾դ줿ƥƥθȥ르ꥺ༱̻ҤǤ르ꥺ༱̻ҤǤϡФƻȤƤŹ沽ƥपӴϢ븰ѥ᡼ꤵƤޤ .RE .TP 2 o -\f3証明書チェーン\fP -.RS 3 -.LP -\f3keytool\fP では、非公開鍵および関連する証明書「チェーン」を含むキーストアの「鍵」エントリを作成し、管理することができます。このようなエントリでは、非公開鍵に対応する公開鍵は、チェーンの最初の証明書に含まれています。 -.LP -.LP -鍵を初めて作成すると (\-genkeypair コマンドを参照)、「自己署名証明書」という 1 つの要素だけを含むチェーンが開始されます。自己署名証明書は、発行者 (署名者) が主体 (証明書で認証されている公開鍵の持ち主) と同じである証明書のことです。\f2\-genkeypair\fP コマンドを呼び出して新しい公開鍵と非公開鍵のペアを作成すると、公開鍵は常に自己署名証明書でラップされます。 -.LP -.LP -このあと、証明書署名要求 (CSR) が生成されて (\-certreq コマンドを参照)、CSR が証明書発行局 (CA) に送信されると、CA からの応答がインポートされ (\-importcert コマンドを参照)、元の自己署名証明書は証明書チェーンによって置き換えられます。チェーンの最後にあるのは、Subject の公開鍵を認証した CA が発行した証明書 (応答) です。チェーン内のその前の証明書は、「CA」の公開鍵を認証する証明書です。 +\f3\fP .LP +\f3keytool\fP ǤϡӴϢ֥פޤ७ȥΡָץȥ뤳ȤǤޤΤ褦ʥȥǤϡбϡκǽξ˴ޤޤƤޤ .LP -CA の公開鍵を認証する証明書は、多くの場合、自己署名証明書 (つまり CA が自身の公開鍵を認証した証明書) であり、これはチェーンの最初の証明書になります。場合によっては、CA が証明書のチェーンを返すこともあります。この場合、チェーン内の最後の証明書 (CA によって署名され、鍵エントリの公開鍵を認証する証明書) に変わりはありませんが、チェーン内のその前の証明書は、CSR の送信先の CA とは「別の」CA によって署名され、CSR の送信先の CA の公開鍵を認証する証明書になります。さらに、チェーン内のその前の証明書は、次の CA の鍵を認証する証明書になります。 以下同様に、自己署名された「ルート」証明書に達するまでチェーンが続きます。したがって、チェーン内の (最初の証明書以後の) 各証明書では、チェーン内の次の証明書の署名者の公開鍵が認証されていることになります。 +ƺ (\-genkeypair ޥɤ򻲾)ּʽ̾פȤ 1 ĤǤޤ󤬳Ϥޤʽ̾ϡȯԼ (̾) (ǧڤƤλ) ƱǤΤȤǤ \f2\-genkeypair\fP ޥɤƤӽФƿΥڥȡϾ˼ʽ̾ǥåפޤ .LP +Τȡ̾׵ (CSR) (\-certreq ޥɤ򻲾)CSR ȯԶ (CA) ȡCA αݡȤ (\-importcert ޥɤ򻲾)μʽ̾Ͼˤä֤ޤκǸˤΤϡSubject θǧڤ CA ȯԤ () ǤΤξϡCAפθǧڤǤ .LP -多くの CA は、チェーンをサポートせずに発行済みの証明書だけを返します。 特に、中間の CA が存在しないフラットな階層構造の場合は、その傾向が顕著です。このような場合は、キーストアにすでに格納されている信頼できる証明書情報から、証明書チェーンを確立する必要があります。 +CA θǧڤϡ¿ξ硢ʽ̾ (Ĥޤ CA Ȥθǧڤ) ǤꡢϥκǽξˤʤޤˤäƤϡCA Υ֤Ȥ⤢ޤξ硢κǸξ (CA ˤäƽ̾졢ȥθǧڤ) ѤϤޤ󤬡ΤξϡCSR CA Ȥϡ̤ΡCA ˤäƽ̾졢CSR CA θǧڤˤʤޤˡΤξϡ CA θǧڤˤʤޤ ʲƱͤˡʽ̾줿֥롼ȡ׾ãޤǥ³ޤäơ (ǽξʸ) ƾǤϡμξν̾ԤθǧڤƤ뤳Ȥˤʤޤ .LP +¿ CA ϡ򥵥ݡȤȯԺѤߤξ֤ޤäˡ֤ CA ¸ߤʤեåȤʳع¤ξϡηǤΤ褦ʾϡȥˤǤ˳ǼƤ뿮Ǥ󤫤顢Ωɬפޤ .LP -別の応答形式 (PKCS#7 で定義されている形式) でも、発行済み証明書に加え、証明書チェーンのサポートが含まれています。\f3keytool\fP では、どちらの応答形式も扱うことができます。 +̤α (PKCS#7 Ƥ) Ǥ⡢ȯԺѤ߾˲äΥݡȤޤޤƤޤ\f3keytool\fP ǤϡɤαⰷȤǤޤ .LP -.LP -トップレベル (ルート) CA の証明書は、自己署名証明書です。ただし、ルートの公開鍵に対する信頼は、ルートの証明書自体から導き出されるものではなく (たとえば、VeriSign ルート CA のような有名な識別名を使った自己署名証明書を作成すること自体は誰でも可能)、新聞などのほかの情報源に由来するものです。ルート CA の公開鍵は広く知られています。ルート CA の公開鍵を証明書に格納する理由は、証明書という形式にすることで多くのツールから利用できるようになるからにすぎません。 つまり、証明書は、ルート CA の公開鍵を運ぶ「媒体」として利用されるだけです。ルート CA の証明書をキーストアに追加するときは、その前に証明書の内容を表示し (\f2\-printcert\fP オプションを使用)、表示されたフィンガープリントと、新聞やルート CA の Web ページなどから入手した既知のフィンガープリントとを比較する必要があります。 -.LP -.RE +ȥåץ٥ (롼) CA ξϡʽ̾Ǥ롼ȤθФ뿮ϡ롼ȤξΤƳФΤǤϤʤ (ȤСVeriSign 롼 CA Τ褦ͭ̾ʼ̾Ȥäʽ̾뤳ȼΤïǤǽ)ʹʤɤΤۤξ󸻤ͳ褹ΤǤ롼 CA θϹΤƤޤ롼 CA θ˳ǼͳϡȤˤ뤳Ȥ¿Υġ뤫ѤǤ褦ˤʤ뤫ˤޤ Ĥޤꡢϡ롼 CA θ򱿤֡ΡפȤѤǤ롼 CA ξ򥭡ȥɲäȤϡ˾Ƥɽ ( \f2\-printcert\fP ץ)ɽ줿ե󥬡ץȤȡʹ롼 CA Web ڡʤɤꤷΤΥե󥬡ץȤȤӤɬפޤ .TP 2 o -\f3cacerts 証明書ファイル\fP -.RS 3 +\f3cacerts ե\fP .LP -\f3cacerts\fP 証明書ファイルは、セキュリティープロパティーディレクトリ \f2java.home\fP/lib/security に置かれています。 \f2java.home\fP は、実行環境のディレクトリ (SDK の \f2jre\fP ディレクトリまたは Java 2 Runtime Environment の最上位ディレクトリ) です。 +\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 ファイルは、CA の証明書を含む、システム全体のキーストアです。システム管理者は、キーストアタイプに jks を指定することで、\f3keytool\fP を使ってこのファイルの構成と管理を行うことができます。cacerts キーストアファイルは、次の別名および X.500 所有者識別名を持ついくつかのルート CA 証明書を含んだ状態で出荷されています。 -.LP -.RS 3 -.TP 2 -* -\f3Alias\fP:thawtepersonalfreemailca -.br -\f3Owner DN\fP:EmailAddress=personal\-freemail@thawte.com, -.br -CN=Thawte Personal Freemail CA, -.br -OU=Certification Services Division, -.br -O=Thawte Consulting, L=Cape Town, ST=Western Cape, C=ZA -.TP 2 -* -\f3Alias\fP:thawtepersonalbasicca -.br -\f3Owner DN\fP:EmailAddress=personal\-basic@thawte.com, -.br -CN=Thawte Personal Basic CA, -.br -OU=Certification Services Division, -.br -O=Thawte Consulting, L=Cape Town, ST=Western Cape, C=ZA -.TP 2 -* -\f3Alias\fP:thawtepersonalpremiumca -.br -\f3Owner DN\fP:EmailAddress=personal\-premium@thawte.com, -.br -CN=Thawte Personal Premium CA, -.br -OU=Certification Services Division, -.br -O=Thawte Consulting, L=Cape Town, ST=Western Cape, C=ZA -.TP 2 -* -\f3Alias\fP:thawteserverca -.br -\f3Owner DN\fP:EmailAddress=server\-certs@thawte.com, -.br -CN=Thawte Server CA, OU=Certification Services Division, -.br -O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA -.TP 2 -* -\f3Alias\fP:thawtepremiumserverca -.br -\f3Owner DN\fP:EmailAddress=premium\-server@thawte.com, -.br -CN=Thawte Premium Server CA, -.br -OU=Certification Services Division, -.br -O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA -.TP 2 -* -\f3Alias\fP:verisignclass1ca -.br -\f3Owner DN\fP:OU=Class 1 Public Primary Certification Authority, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass2ca -.br -\f3Owner DN\fP:OU=Class 2 Public Primary Certification Authority, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass3ca -.br -\f3Owner DN\fP:OU=Class 3 Public Primary Certification Authority, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignserverca -.br -\f3Owner DN\fP:OU=Secure Server Certification Authority, -.br -O="RSA Data Security, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass1g2ca -.br -\f3Owner DN\fP:OU=VeriSign Trust Network, -.br -OU="(c) 1998 VeriSign, Inc. \- For authorized use only", -.br -OU=Class 1 Public Primary Certification Authority \- G2, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass1g3ca -.br -\f3Owner DN\fP:CN=VeriSign Class 1 Public Primary Certification Authority \- G3, OU="(c) 1999 VeriSign, Inc. \- For authorized use only", -.br -OU=VeriSign Trust Network, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass2g2ca -.br -\f3Owner DN\fP:OU=VeriSign Trust Network, -.br -OU="(c) 1998 VeriSign, Inc. \- For authorized use only", -.br -OU=Class 2 Public Primary Certification Authority \- G2, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass2g3ca -.br -\f3Owner DN\fP:CN=VeriSign Class 2 Public Primary Certification Authority \- G3, -.br -OU="(c) 1999 VeriSign, Inc. \- For authorized use only", -.br -OU=VeriSign Trust Network, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass3g2ca -.br -\f3Owner DN\fP:OU=VeriSign Trust Network, -.br -OU="(c) 1998 VeriSign, Inc. \- For authorized use only", -.br -OU=Class 3 Public Primary Certification Authority \- G2, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass3g3ca -.br -\f3Owner DN\fP:CN=VeriSign Class 3 Public Primary Certification Authority \- G3, -.br -OU="(c) 1999 VeriSign, Inc. \- For authorized use only", -.br -OU=VeriSign Trust Network, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:baltimorecodesigningca -.br -\f3Owner DN\fP:CN=Baltimore CyberTrust Code Signing Root, -.br -OU=CyberTrust, O=Baltimore, C=IE -.TP 2 -* -\f3Alias\fP:gtecybertrustglobalca -.br -\f3Owner DN\fP:CN=GTE CyberTrust Global Root, -.br -OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US -.TP 2 -* -\f3Alias\fP:baltimorecybertrustca -.br -\f3Owner DN\fP:CN=Baltimore CyberTrust Root, -.br -OU=CyberTrust, O=Baltimore, C=IE -.TP 2 -* -\f3Alias\fP:gtecybertrust5ca -.br -\f3Owner DN\fP:CN=GTE CyberTrust Root 5, -.br -OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US -.TP 2 -* -\f3Alias\fP:entrustclientca -.br -\f3Owner DN\fP:CN=Entrust.net Client Certification Authority, -.br -OU=(c) 1999 Entrust.net Limited, -.br -OU=www.entrust.net/Client_CA_Info/CPS incorp. by ref. limits liab., -.br -O=Entrust.net, C=US -.TP 2 -* -\f3Alias\fP:entrustglobalclientca -.br -\f3Owner DN\fP:CN=Entrust.net Client Certification Authority, -.br -OU=(c) 2000 Entrust.net Limited, -.br -OU=www.entrust.net/GCCA_CPS incorp. by ref. (limits liab.), -.br -O=Entrust.net -.TP 2 -* -\f3Alias\fP:entrust2048ca -.br -\f3Owner DN\fP:CN=Entrust.net Certification Authority (2048), -.br -OU=(c) 1999 Entrust.net Limited, -.br -OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), -.br -O=Entrust.net -.TP 2 -* -\f3Alias\fP:entrustsslca -.br -\f3Owner DN\fP:CN=Entrust.net Secure Server Certification Authority, -.br -OU=(c) 1999 Entrust.net Limited, -.br -OU=www.entrust.net/CPS incorp. by ref. (limits liab.), -.br -O=Entrust.net, C=US -.TP 2 -* -\f3Alias\fP:entrustgsslca -.br -\f3Owner DN\fP:CN=Entrust.net Secure Server Certification Authority, -.br -OU=(c) 2000 Entrust.net Limited, -.br -OU=www.entrust.net/SSL_CPS incorp. by ref. (limits liab.), -.br -O=Entrust.net -.TP 2 -* -\f3Alias\fP:godaddyclass2ca -.br -\f3Owner DN\fP:OU=Go Daddy Class 2 Certification Authority, -.br -O="The Go Daddy Group, Inc.", C=US -.TP 2 -* -\f3Alias\fP:starfieldclass2ca -.br -\f3Owner DN\fP:OU=Starfield Class 2 Certification Authority, -.br -O="Starfield Technologies, Inc.", C=US -.TP 2 -* -\f3Alias\fP:valicertclass2ca -.br -\f3Owner DN\fP:EMAILADDRESS=info@valicert.com, -.br -CN=http://www.valicert.com/, -.br -OU=ValiCert Class 2 Policy Validation Authority, -.br -O="ValiCert, Inc.", L=ValiCert Validation Network -.TP 2 -* -\f3Alias\fP:geotrustglobalca -.br -\f3Owner DN\fP:CN=GeoTrust Global CA, -.br -O=GeoTrust Inc., C=US -.TP 2 -* -\f3Alias\fP:equifaxsecureca -.br -\f3Owner DN\fP:OU=Equifax Secure Certificate Authority, -.br -O=Equifax, C=US -.TP 2 -* -\f3Alias\fP:equifaxsecureebusinessca1 -.br -\f3Owner DN\fP:CN=Equifax Secure eBusiness CA\-1, -.br -O=Equifax Secure Inc., C=US -.TP 2 -* -\f3Alias\fP:equifaxsecureebusinessca2 -.br -\f3Owner DN\fP:OU=Equifax Secure eBusiness CA\-2, -.br -O=Equifax Secure, C=US -.TP 2 -* -\f3Alias\fP:equifaxsecureglobalebusinessca1 -.br -\f3Owner DN\fP:CN=Equifax Secure Global eBusiness CA\-1, -.br -O=Equifax Secure Inc., C=US -.TP 2 -* -\f3Alias\fP:soneraclass1ca -.br -\f3Owner DN\fP:CN=Sonera Class1 CA, O=Sonera, C=FI -.TP 2 -* -\f3Alias\fP:soneraclass2ca -.br -\f3Owner DN\fP:CN=Sonera Class2 CA, O=Sonera, C=FI -.TP 2 -* -\f3Alias\fP:comodoaaaca -.br -\f3Owner DN\fP:CN=AAA Certificate Services, -.br -O=Comodo CA Limited, L=Salford, ST=Greater Manchester, C=GB -.TP 2 -* -\f3Alias\fP:addtrustclass1ca -.br -\f3Owner DN\fP:CN=AddTrust Class 1 CA Root, -.br -OU=AddTrust TTP Network, O=AddTrust AB, C=SE -.TP 2 -* -\f3Alias\fP:addtrustexternalca -.br -\f3Owner DN\fP:CN=AddTrust External CA Root, -.br -OU=AddTrust External TTP Network, O=AddTrust AB, C=SE -.TP 2 -* -\f3Alias\fP:addtrustqualifiedca -.br -\f3Owner DN\fP:CN=AddTrust Qualified CA Root, -.br -OU=AddTrust TTP Network, O=AddTrust AB, C=SE -.TP 2 -* -\f3Alias\fP:utnuserfirsthardwareca -.br -\f3Owner DN\fP:CN=UTN\-USERFirst\-Hardware, -.br -OU=http://www.usertrust.com, O=The USERTRUST Network, -.br -L=Salt Lake City, ST=UT, C=US -.TP 2 -* -\f3Alias\fP:utnuserfirstclientauthemailca -.br -\f3Owner DN\fP:CN=UTN\-USERFirst\-Client Authentication and Email, -.br -OU=http://www.usertrust.com, O=The USERTRUST Network, -.br -L=Salt Lake City, ST=UT, C=US -.TP 2 -* -\f3Alias\fP:utndatacorpsgcca -.br -\f3Owner DN\fP:CN=UTN \- DATACorp SGC, -.br -OU=http://www.usertrust.com, O=The USERTRUST Network, -.br -L=Salt Lake City, ST=UT, C=US -.TP 2 -* -\f3Alias\fP:utnuserfirstobjectca -.br -\f3Owner DN\fP:CN=UTN\-USERFirst\-Object, -.br -OU=http://www.usertrust.com, O=The USERTRUST Network, -.br -L=Salt Lake City, ST=UT, C=US -.RE - -.LP -.LP -cacerts キーストアファイルの初期パスワードは、changeit です。システム管理者は、SDK のインストール後、このファイルのパスワードとデフォルトアクセス権を変更する必要があります。 -.LP -.RS 3 - -.LP - -.LP -\f3重要:\fP\f4cacerts\fP\f3 ファイルを確認してください。\fP -.br - -.LP -\f2cacerts\fP ファイル内の CA は、署名および他のエンティティーへの証明書発行のためのエンティティーとして信頼されるため、\f2cacerts\fP ファイルの管理は慎重に行う必要があります。\f2cacerts\fP ファイルには、信頼する CA の証明書だけが含まれていなければなりません。ユーザーは、自身の責任において、\f2cacerts\fP ファイルにバンドルされている信頼できるルート CA 証明書を検証し、信頼性に関する独自の決定を行います。信頼できない CA 証明書を \f2cacerts\fP ファイルから削除するには、\f2keytool\fP コマンドの削除オプションを使用します。\f2cacerts\fP ファイルは JRE のインストールディレクトリにあります。このファイルを編集するアクセス権がない場合は、システム管理者に連絡してください。 -.br - -.LP -.RE - +cacerts ȥեνѥɤϡchangeit ǤƥԤϡSDK Υ󥹥ȡ塢ΥեΥѥɤȥǥեȥѹɬפޤ .LP -.RE +\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 -.RS 3 -.LP -多くの場合、証明書は、バイナリ符号化ではなく、インターネット RFC 1421 規格で定義されている出力可能符号化方式を使って格納されます。「Base 64 符号化」とも呼ばれるこの証明書形式では、電子メールやその他の機構を通じて、ほかのアプリケーションに証明書を容易にエクスポートできます。 -.LP -.LP -\f2\-importcert\fP コマンドと \f2\-printcert\fP コマンドでは、この形式の証明書とバイナリ符号化の証明書を読み込むことができます。 +\f3󥿡ͥå RFC 1421 沽\fP .LP +¿ξ硢ϡХʥ沽ǤϤʤ󥿡ͥå RFC 1421 ʤƤϲǽ沽ȤäƳǼޤBase 64 沽פȤƤФ뤳ξǤϡŻҥ᡼䤽¾ε̤ơۤΥץꥱ˾ưפ˥ݡȤǤޤ .LP -\f2\-exportcert\fP コマンドでは、デフォルトでバイナリ符号化の証明書が出力されます。 ただし、\f2\-rfc\fP オプションを指定した場合は、出力可能符号化方式の証明書が出力されます。 +\f2\-importcert\fP \f2\-printcert\fP ޥɤǤϡηξȥХʥ沽ξɤ߹ळȤǤޤ .LP +\f2\-exportcert\fP ޥɤǤϡǥեȤǥХʥ沽ξ񤬽Ϥޤ \f2\-rfc\fP ץꤷϡϲǽ沽ξ񤬽Ϥޤ .LP -\f2\-list\fP コマンドでは、デフォルトで証明書の MD5 フィンガープリントが出力されます。\f2\-v\fP オプションを指定すると、人間が読むことのできる形式で証明書が出力されます。 一方、\f2\-rfc\fP オプションを指定すると、出力可能符号化方式で証明書が出力されます。 -.LP -.LP -出力可能符号化方式で符号化された証明書は、次の行で始まります。 +\f2\-list\fP ޥɤǤϡǥեȤǾ SHA1 ե󥬡ץȤϤޤ \f2\-v\fP ץꤹȡʹ֤ɤळȤΤǤǾ񤬽Ϥޤ \f2\-rfc\fP ץꤹȡϲǽ沽Ǿ񤬽Ϥޤ .LP +ϲǽ沽沽줿ϡιԤǻϤޤޤ .nf \f3 .fl @@ -1372,11 +1574,8 @@ o .fl \fP .fi - -.LP -.LP -最後は、次の行で終わります。 .LP +ǸϡιԤǽޤ .nf \f3 .fl @@ -1385,40 +1584,38 @@ o \fP .fi .RE -.RE .LP .SS -X.500 識別名 +X.500 ̾ .LP -.RS 3 - .LP -X.500 識別名は、エンティティーを特定するために使われます。 たとえば、X.509 証明書の \f2subject\fP フィールドと \f2issuer\fP (署名者) フィールドで指定される名前は、X.500 識別名です。 \f3keytool\fP は、次のサブパートをサポートしています。 +X.500 ̾ϡƥƥꤹ뤿˻ȤޤȤСX.509 \f2subject\fP եɤ \f2issuer\fP (̾) եɤǻꤵ̾ϡX.500 ̾Ǥ\f3keytool\fP ϡΥ֥ѡȤ򥵥ݡȤƤޤ +.LP .RS 3 .TP 2 o -\f2commonName\fP \- 人の通称。 「Susan Jones」など +\f2commonName\fP \- ͤ̾Ρ Susan Jonesפʤ .TP 2 o -\f2organizationUnit\fP \- 小さな組織 (部、課など) の名称。 「仕入部」など +\f2organizationUnit\fP \- ȿ (ݤʤ) ̾Ρ ֻפʤ .TP 2 o -\f2organizationName\fP \- 大きな組織の名称。 「ABCSystems, Inc.」など +\f2organizationName\fP \- 礭ȿ̾Ρ ABCSystems, Inc.פʤ .TP 2 o -\f2localityName\fP \- 地域 (都市) 名。 「Palo Alto」など +\f2localityName\fP \- ϰ (Ի) ̾ Palo Altoפʤ .TP 2 o -\f2stateName\fP \- 州名または地方名。 「California」など +\f2stateName\fP \- ̾ޤ̾ Californiaפʤ .TP 2 o -\f2country\fP \- 2 文字の国番号。 「CH」など +\f2country\fP \- 2 ʸιֹ档 CHפʤ .RE .LP .LP -\f2\-genkeypair\fP コマンド の \f2\-dname\fP オプションの値として識別名文字列を指定する場合は、次の形式で指定する必要があります。 +\-genkeypair ޥɤ \f2\-dname\fP ץͤȤƼ̾ʸꤹϡ ηǻꤹɬפޤ .LP .nf \f3 @@ -1430,12 +1627,12 @@ CN=\fP\f4cName\fP\f3, OU=\fP\f4orgUnit\fP\f3, O=\fP\f4org\fP\f3, L=\fP\f4city\fP .LP .LP -イタリック体の項目は、実際に指定する値を表します。 短縮形のキーワードの意味は、次のとおりです。 +åΤιܤϡºݤ˻ꤹͤɽޤ û̷Υɤΰ̣ϡΤȤǤ .LP .nf \f3 .fl - CN=commonName + CN=commonName .fl OU=organizationUnit .fl @@ -1452,22 +1649,24 @@ CN=\fP\f4cName\fP\f3, OU=\fP\f4orgUnit\fP\f3, O=\fP\f4org\fP\f3, L=\fP\f4city\fP .LP .LP -次に示すのは、識別名文字列の例です。 +˼Τϡ̾ʸǤ .LP .nf \f3 .fl -CN=Mark Smith, OU=JavaSoft, O=Sun, L=Cupertino, S=California, C=US +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=JavaSoft, O=Sun, L=Cupertino, +keytool \-genkeypair \-dname "CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, .fl S=California, C=US" \-alias mark .fl @@ -1476,45 +1675,43 @@ S=California, C=US" \-alias mark .LP .LP -キーワードの短縮形では、大文字と小文字は区別されません。たとえば、CN、cn、および Cn は、どれも同じものとして扱われます。 +ɤû̷ǤϡʸȾʸ϶̤ޤ󡣤ȤСCNcn Cn ϡɤƱΤȤưޤ .LP .LP -一方、キーワードの指定順序には意味があり、各サブコンポーネントは上に示した順序で指定する必要があります。ただし、サブコンポーネントをすべて指定する必要はありません。たとえば、次のように一部のサブコンポーネントだけを指定できます。 +ɤλˤϰ̣ꡢƥ֥ݡͥȤϾ˼ǻꤹɬפޤ֥ݡͥȤ򤹤٤ƻꤹɬפϤޤ󡣤ȤСΤ褦˰Υ֥ݡͥȤǤޤ .LP .nf \f3 .fl -CN=Steve Meier, OU=SunSoft, O=Sun, C=US +CN=Steve Meier, OU=Java, O=Oracle, C=US .fl \fP .fi .LP .LP -識別名文字列の値にコンマが含まれる場合に、コマンド行で文字列を指定するときには、次のようにコンマを文字 \\ でエスケープする必要があります。 +̾ʸͤ˥ޤޤޤˡޥɹԤʸꤹȤˤϡΤ褦˥ޤʸ \\ ǥפɬפޤ .LP .nf \f3 .fl - cn=peter schuster, o=Sun Microsystems\\, Inc., o=sun, c=us + cn=Peter Schuster, ou=Java\\, Product Development, o=Oracle, c=US .fl \fP .fi .LP .LP -識別名文字列をコマンド行で指定する必要はありません。識別名を必要とするコマンドを実行するときに、コマンド行で識別名を指定しなかった場合は、各サブコンポーネントの入力を求められます。この場合は、コンマを文字 \\ でエスケープする必要はありません。 +̾ʸ򥳥ޥɹԤǻꤹɬפϤޤ󡣼̾ɬפȤ륳ޥɤ¹ԤȤˡޥɹԤǼ̾ꤷʤäϡƥ֥ݡͥȤϤޤξϡޤʸ \\ ǥפɬפϤޤ .LP -.RE .SS -信頼できる証明書のインポートに関する注意事項 +ǤΥݡȤ˴ؤջ .LP -.RS 3 - .LP -重要:信頼できる証明書として証明書をインポートする前に、証明書の内容を慎重に調べてください。 +: ǤȤƾ򥤥ݡȤˡƤ򿵽ŤĴ٤Ƥ +.LP .LP -まず、証明書の内容を表示し (\f2\-printcert\fP コマンドを使用するか、または \f2\-noprompt\fP オプションを指定しないで \f2\-import\fP コマンドを使用)、表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致するかどうかを確認します。たとえば、あるユーザーから証明書が送られてきて、この証明書を \f2/tmp/cert\fP という名前でファイルに格納しているとします。この場合は、信頼できる証明書のリストにこの証明書を追加する前に、\f2\-printcert\fP コマンドを実行してフィンガープリントを表示できます。 たとえば、次のようにします。 +ޤƤɽ (\-printcert ޥɤѤ뤫ޤ \-noprompt ץꤷʤ \-importcert ޥɤ) ɽ줿Υե󥬡ץȤԤե󥬡ץȤȰפ뤫ɤǧޤȤС桼Ƥơξ /tmp/cert Ȥ̾ǥե˳ǼƤȤޤ ξϡǤΥꥹȤˤξɲäˡ \f2\-printcert\fP ޥɤ¹Ԥƥե󥬡ץȤɽǤޤȤСΤ褦ˤޤ .LP .nf \f3 @@ -1534,91 +1731,94 @@ CN=Steve Meier, OU=SunSoft, O=Sun, C=US 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 -次に、証明書を送信した人物に連絡し、この人物が提示したフィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中でほかの何者か (攻撃者など) による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのもの (攻撃的意図を持つクラスファイルを含んだ JAR ファイルなど) を信頼することになります。 .LP -注:証明書をインポートする前に必ず \f2\-printcert\fP コマンドを実行しなければならないわけではありません。 キーストア内の信頼できる証明書のリストに証明書を追加する前に \f2\-importcert\fP コマンドを実行すると、証明書の情報が表示され、確認を求めるメッセージが表示されます。インポート操作は、この時点で中止できます。ただし、確認メッセージが表示されるのは、\f2\-importcert\fP コマンドを \f2\-noprompt\fP オプションを指定せずに実行した場合だけです。\f2\-noprompt\fP オプションが指定されている場合、ユーザーとの対話は行われません。 +ˡʪϢοʪ󼨤ե󥬡ץȤȡΥޥɤɽ줿ե󥬡ץȤȤӤޤե󥬡ץȤפСǤۤβԤ (Ԥʤ) ˤΤؤԤƤʤȤǧǤޤǤμι⤬ԤƤ硢åԤ鷺˾򥤥ݡȤȡԤˤäƽ̾줿٤ƤΤ (Ūտޤĥ饹եޤ JAR եʤ) ꤹ뤳Ȥˤʤޤ +.LP +.LP +: 򥤥ݡȤɬ \f2\-printcert\fP ޥɤ¹ԤʤФʤʤ櫓ǤϤޤ󡣥ȥοǤΥꥹȤ˾ɲä \f2\-importcert\fP ޥɤ¹Ԥȡξɽ졢ǧåɽޤݡϡλߤǤޤǧåɽΤϡ\-importcert ޥɤ \-noprompt ץꤻ˼¹ԤǤ \f2\-noprompt\fP ץ󤬻ꤵƤ硢桼ȤäϹԤޤ .LP -.RE .SS -パスワードに関する注意事項 +ѥɤ˴ؤջ .LP -.RS 3 - .LP +ȥФԤۤȤɤΥޥɤǤϡȥΥѥɤɬפǤޤΥޥɤǤϡ/̩Υѥɤɬפˤʤ뤳Ȥޤ .LP -キーストアに対する操作を行うほとんどのコマンドでは、ストアのパスワードが必要です。また、一部のコマンドでは、非公開/秘密鍵のパスワードが必要になることがあります。 .LP +ѥɤϥޥɹԤǻǤޤ (ȥΥѥɤˤ \f2\-storepass\fP ץΥѥɤˤ \f2\-keypass\fP ץ)ƥȤŪȤ硢ޤϰǤ뤳Ȥ狼äƤ륷ƥǼ¹ԤʳϡޥɹԤ䥹ץȤǥѥɤꤷʤǤ .LP -パスワードはコマンド行で指定できます (ストアのパスワードには \f2\-storepass\fP オプション、非公開鍵のパスワードには \f2\-keypass\fP オプションを使用)。ただし、テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。 .LP +ɬפʥѥɤΥץ򥳥ޥɹԤǻꤷʤäϡѥɤϤޤ .LP -必要なパスワードのオプションをコマンド行で指定しなかった場合は、パスワードの入力を求められます。 +.SS +ν˴ؤջ .LP -.RE -.SH "関連項目" .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 -.LP -jar(1) ツールのドキュメント +jar(1) ġΥɥ .TP 2 o -.LP -jarsigner(1) ツールのドキュメント +jarsigner(1) ġΥɥ .TP 2 o -.LP -\f3keytool\fP の使用例については、 .na -\f4「Java Tutorial」\fP @ +\f4keytool\fP\f2 λˤĤƤϡ\fP @ .fi -http://java.sun.com/docs/books/tutorialの +http://download.oracle.com/javase/tutorial/security/index.html .na -\f4「Security」\fP @ +\f2Java Tutorial\fP\f4\fP @ .fi -http://java.sun.com/docs/books/tutorial/security/index.htmlを参照 +http://download.oracle.com/javase/tutorial/Security\f3򻲾\fP .RE .LP -.SH "変更点" -.LP - +.SH "ѹ" .LP .LP -Java SE 6 で keytool のコマンドインタフェースが変更されました。 +Java SE 6 keytool Υޥɥ󥿥եѹޤ .LP .LP -\f3keytool\fP は、ユーザーがパスワードを入力する際にその入力内容を表示しなくなりました。ユーザーはパスワード入力時にその入力内容を確認できなくなったため、初期キーストアパスワードを設定したり鍵パスワードを変更したりするなど、パスワードの設定や変更を行うたびにパスワードの再入力を求められます。 +\f3keytool\fP ϡ桼ѥɤϤݤˤƤɽʤʤޤ桼ϥѥϻˤƤǧǤʤʤäᡢȥѥɤꤷ기ѥɤѹꤹʤɡѥɤѹԤӤ˥ѥɤκϤޤ .LP .LP -変更されたコマンドの中には、名前が変更されただけのものもあれば、廃止されてこのドキュメントに記載されなくなったものもあります。以前のすべてのコマンド (名前が変更されたものと廃止されたものの両方) は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。keytool のコマンドインタフェースに加えられたすべての変更点の概要を、次に示します。 +ѹ줿ޥɤˤϡ̾ѹ줿ΤΤ⤢СѻߤƤΥɥȤ˵ܤʤʤäΤ⤢ޤΤ٤ƤΥޥ (̾ѹ줿Τѻߤ줿Τξ) ϡΥ꡼Ǥ³ݡȤƤꡢΥ꡼Ǥ⥵ݡȤͽǤkeytool Υޥɥ󥿥ե˲ä줿٤Ƥѹγפ򡢼˼ޤ .LP .LP -名前が変更されたコマンド: +̾ѹ줿ޥ: .LP .RS 3 .TP 2 o -\f2\-export\fP の名前が \f2\-exportcert\fP に変更 +\f2\-export\fP ̾ \f2\-exportcert ѹ\fP .TP 2 o -\f2\-genkey\fP の名前が \f2\-genkeypair\fP に変更 +\f2\-genkey\fP ̾ \f2\-genkeypair ѹ\fP .TP 2 o -\f2\-import\fP の名前が \f2\-importcert\fP に変更 +\f2\-import\fP ̾ \f2\-importcert ѹ\fP .RE .LP .LP -廃止されてドキュメントに記載されなくなったコマンド: +ѻߤƥɥȤ˵ܤʤʤäޥ: .LP .RS 3 .TP 2 @@ -1626,19 +1826,19 @@ o .na \f2\-keyclone\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html#keycloneCmd +http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/keytool.html#keycloneCmd .TP 2 o .na \f2\-identitydb\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html#identitydbCmd +http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/keytool.html#identitydbCmd .TP 2 o .na \f2\-selfcert\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html#selfcertCmd +http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/keytool.html#selfcertCmd .RE .LP diff --git a/src/linux/doc/man/ja/native2ascii.1 b/src/linux/doc/man/ja/native2ascii.1 index d7f1eedd9d4b9b4e1bceaffc5db27b200cc348a2..6e775392b92d96c23eadfd541b0e4238993ea54c 100644 --- a/src/linux/doc/man/ja/native2ascii.1 +++ b/src/linux/doc/man/ja/native2ascii.1 @@ -1,4 +1,4 @@ -." Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ." ." This code is free software; you can redistribute it and/or modify it @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH native2ascii 1 "02 Jun 2010" +.TH native2ascii 1 "14 Apr 2011" .LP -.SH "名前" -native2ascii \- ネイティブ \- ASCII コンバータ -.LP -.RS 3 - +.SH "̾" +native2ascii \- ͥƥ \- ASCII С .LP .LP -ネイティブコード (Latin 1 および Unicode 以外) のファイルを Unicode コードに変換します。 +ݡȤʸ󥳡ǥ󥰤ʸΥե ASCII ޤ Unicode פ뤤ϤξΥեѴޤεդѴԤޤ .LP -.RE -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -44,36 +38,34 @@ native2ascii \- ネイティブ \- ASCII コンバータ .fi .LP -.SH "説明" +.SH "" .LP - -.LP -.LP -Java コンパイラおよびその他の Java ツールは、Latin\-1 または Unicode コード (\\udddd 表記) 文字を含んだファイルだけを処理することができます。 \f2native2ascii\fP は、これら以外の文字コードのファイルを Latin\-1 または Unicode コードのファイルに変換します。 .LP +\f2native2ascii\fP Java ¹ԴĶǥݡȤʸ󥳡ǥ󥰤˥󥳡ɤ줿եASCII ǥ󥳡ɤ줿եѴޤASCII ʸåȤΰǤʤ٤Ƥʸ Unicode (\\uxxxxפɽ) ѤޤΥץϡISO\-8859\-1 ʸåȤ˴ޤޤʤʸޤޤƤץѥƥեɬפǤΥġϡεդѴ¹Ԥ뤳ȤǤޤ .LP -\f2outputfile\fP を省略した場合、標準出力に出力されます。さらに、\f2inputfile\fP を省略した場合、標準入力から入力されます。 .LP -.SH "オプション" +\f2outputfile\fP ά硢ɸϤ˽Ϥޤˡ \f2inputfile\fP ά硢ɸϤϤޤ .LP - +.SH "ץ" .LP .RS 3 .TP 3 \-reverse -逆の処理を行います。つまり、Latin\-1 または Unicode コードのファイルをネイティブコードに変換します。 +դνԤޤĤޤꡢISO\-8859\-1 Unicode פȤäƥ󥳡ɤ줿եJava ¹ԴĶǥݡȤʸ󥳡ǥ󥰤ΥեѴޤ .br .br .TP 3 \-encoding encoding_name -変換処理で使用するコードの名前を指定します。デフォルトのコードは、システムプロパティーの \f2file.encoding\fP から取得されます。\f2encoding_name\fP 文字列は、 +ѴǻѤʸ󥳡ǥ󥰤̾ꤷޤΥץ¸ߤʤϡǥեȤʸ󥳡ǥ ( \f2java.nio.charset.Charset.defaultCharset\fP ᥽åɤ) Ѥޤ \f2encoding_name\fP ʸϡ .na -\f4「サポートされているエンコーディング」\fP @ +\f4֥ݡȤƤʸ󥨥󥳡ǥ󥰡\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/intl/encoding.doc.htmlドキュメントに示されている、サポートされるエンコーディングの表の最初の列から取得される必要があります。 +http://java.sun.com/javase/6/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 バイトに設定されます。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ .RE .LP diff --git a/src/linux/doc/man/ja/orbd.1 b/src/linux/doc/man/ja/orbd.1 index 79406bece968e1264683c098fca058434c0a47f9..b6485a6e714db313403214fa9ffd715709e529c1 100644 --- a/src/linux/doc/man/ja/orbd.1 +++ b/src/linux/doc/man/ja/orbd.1 @@ -19,29 +19,23 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH orbd 1 "02 Jun 2010" +.TH orbd 1 "14 Apr 2011" .LP -.SH "名前" +.SH "̾" orbd \- The Object Request Broker Daemon .LP -.RS 3 - .LP +\f3orbd\fP ϡ饤Ȥ CORBA ĶΥСˤ³֥ȤƩŪ˸ƸƤӽФ˻Ѥޤ .LP -\f3orbd\fP は、クライアントから CORBA 環境のサーバーにある持続オブジェクトを透過的に検索して呼び出すために使用します。 .LP -.LP -\f3関連項目:\fP +\f3Ϣ:\fP .na -\f2ネームサービス\fP @ +\f2͡ॵӥ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html .LP -.RE -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -52,42 +46,40 @@ orbd <\fP\f3options\fP\f3> .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3orbd\fP ツールに含まれるサーバーマネージャーを使うと、クライアントは CORBA 環境でサーバー上にある持続オブジェクトを透過的に検索して呼び出すことができます。持続サーバーは、ネームサービスに持続オブジェクト参照を発行する際、サーバーのポート番号の代わりに OBRD のポート番号をオブジェクト参照に含めます。持続オブジェクト参照のオブジェクト参照に ORBD ポート番号を含めることには、次のような利点があります。 +\f3orbd\fP ġ˴ޤޤ륵Сޥ͡㡼Ȥȡ饤Ȥ CORBA ĶǥСˤ³֥ȤƩŪ˸ƸƤӽФȤǤޤ³Сϡ͡ॵӥ˻³֥ȻȤȯԤݡСΥݡֹ OBRD Υݡֹ򥪥֥ȻȤ˴ޤޤ³֥ȻȤΥ֥ȻȤ ORBD ݡֹޤ뤳ȤˤϡΤ褦ޤ .LP .RS 3 .TP 2 o -ネームサービスにあるオブジェクト参照が、サーバーのライフタイムと無関係になる。オブジェクト参照は、始めてインストールされたときはネームサービスのサーバーによりネームサービスに発行されますが、その後は、サーバーの開始またはシャットダウンの回数にかかわらず、ORBD がいつでも呼び出したクライアントに正しいオブジェクト参照を返します。 +͡ॵӥˤ륪֥ȻȤСΥ饤ե̵طˤʤ롣֥ȻȤϡϤƥ󥹥ȡ뤵줿Ȥϥ͡ॵӥΥСˤ͡ॵӥȯԤޤθϡСγϤޤϥåȥβˤ餺ORBD ĤǤƤӽФ饤Ȥ֥ȻȤ֤ޤ .TP 2 o -クライアントは一度だけネーミングサービスのオブジェクト参照をルックアップする必要があるが、その後はサーバーのライフタイムによる変更とは無関係にこの参照を利用することができる +饤Ȥϰ٤͡ߥ󥰥ӥΥ֥ȻȤååפɬפ뤬θϥСΥ饤եˤѹȤ̵طˤλȤѤ뤳ȤǤ .RE .LP .LP -ORBD のサーバーマネージャーにアクセスするには、servertool(1) を使用してサーバーを起動する必要があります。 servertool は、アプリケーションプログラマが、持続サーバーの登録、登録解除、起動、およびシャットダウンを行うためのコマンド行インタフェースです。サーバーマネージャーの詳細については、このドキュメントの\f2「サーバーマネージャー」\fPを参照してください。 +ORBD ΥСޥ͡㡼˥ˤϡservertool(1) ѤƥСưɬפޤservertool ϡץꥱץޤ³СϿϿưӥåȥԤΥޥɹԥ󥿥եǤСޥ͡㡼ξܺ٤ˤĤƤϡΥɥȤΡ֥Сޥ͡㡼פ򻲾ȤƤ .LP .LP -\f2orbd\fP を起動すると、ネームサービスも起動されます。ネームサービスについては、 +\f2orbd\fP ưȡ͡ॵӥⵯưޤ͡ॵӥˤĤƤϡ .na -\f2「ネームサービス」\fP @ +\f2֥͡ॵӥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html򻲾ȤƤ .LP -.SH "オプション" +.SH "ץ" .LP .SS -必須オプション +ɬܥץ .LP .RS 3 .TP 3 \-ORBInitialPort nameserverport -ネームサーバーを起動するポートの番号を指定します。\f2orbd\fP は、起動されると、このポート上で着信要求を待機します。Solaris ソフトウェアの使用時は、1024 より小さいポートでプロセスを開始する場合、root ユーザーになる必要があります。 このため、1024 または 1024 より大きいポートを使用することをお勧めします。 (必須) +͡ॵСưݡȤֹꤷޤ\f2orbd\fP ϡưȡΥݡȾ忮׵ԵޤSolaris եȥѤ硢1024 꾮ݡȾǥץ򳫻Ϥˤϡroot 桼ˤʤɬפޤΤᡢ1024 ʾΥݡֹѤ뤳Ȥ򤪴ᤷޤ(ɬ) .RE .LP @@ -95,75 +87,75 @@ http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlを参照 .LP .SS -その他のオプション +¾Υץ .LP .RS 3 .TP 3 \-port port -ORBD を起動するポートを指定します。 ORBD は、このポートで、持続オブジェクトに対する要求を受け取ります。このポートのデフォルト値は 1049 です。 このポート番号は持続 Interoperable Object References (IOR) のポートフィールドに追加されます。(省略可) +ORBD ưݡȤꤷޤORBD ϡΥݡȤǡ³֥ȤФ׵ޤΥݡȤΥǥեͤ 1049 ǤΥݡֹ椬³ Interoperable Object References (IOR). Υݡȥեɤɲäޤ(ά) .RE .LP .RS 3 .TP 3 \-defaultdb directory -ORBD 持続格納ディレクトリ \f2orb.db\fP が作成されるベースディレクトリを指定します。このオプションが指定されていない場合、デフォルト値は「./orb.db」となります。(省略可) +ORBD ³Ǽǥ쥯ȥ \f2orb.db\fP ١ǥ쥯ȥꤷޤΥץ󤬻ꤵƤʤ硢ǥեͤϡ./orb.dbפȤʤޤ(ά) .RE .LP .RS 3 .TP 3 \-serverPollingTime milliseconds -\f2servertool\fP を使用して登録された持続サーバーが正常に動作していることを ORBD が確認する回数を指定します。デフォルト値は 1,000 ミリ秒です。 「ミリ秒」の指定値は有効な整数値である必要があります。(省略可) +\f2servertool\fP ѤϿ줿³СưƤ뤳Ȥ ORBD ǧꤷޤǥեͤ 1,000 ߥäǤ\f2milliseconds\fP ˻ꤹͤϡͭǤʤФʤޤ(ά) .RE .LP .RS 3 .TP 3 \-serverStartupDelay milliseconds -\f2servertool\fP を使用して登録された持続サーバーを再起動してから、位置転送の例外を送信するまでの ORBD の待機時間を指定します。デフォルト値は 1,000 ミリ秒です。 「ミリ秒」の指定値は有効な整数値である必要があります。(省略可) +\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 を使って背後の実行環境にオプションを渡すことはよく行われています。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ\f3\-J\fP Ȥäظμ¹ԴĶ˥ץϤȤϤ褯ԤƤޤ .TP 3 .RE .LP -.SH "ネームサービスの起動と停止" +.SH "͡ॵӥεư" .LP .LP -ネームサービスは、 +͡ॵӥϡ .na -\f2CORBA オブジェクト\fP @ +\f2CORBA ֥\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#CORBA%20objectにネーミングを可能にする CORBA サービスです。 ネーミングは名前をオブジェクト参照にバインドすることにより可能になります。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#CORBA%20object˥͡ߥ󥰤ǽˤ CORBA ӥǤ͡ߥ󥰤̾򥪥֥ȻȤ˥Хɤ뤳Ȥˤǽˤʤޤ .na -\f2「ネームバインディング」\fP @ +\f2֥͡Хǥ󥰡\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#name%20bindingはネームサービスに格納され、クライアントは名前を与えて目的のオブジェクト参照を取得できます。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#name%20bindingϥ͡ॵӥ˳Ǽ졢饤Ȥ̾ͿŪΥ֥ȻȤǤޤ .LP .LP -ORBD は、クライアントまたはサーバーを実行する前に起動します。ORBD には、持続ネームサービスおよび一時ネームサービスが組み込まれています。 これらはどちらも COS ネームサービスの実装です。 +ORBD ϡ饤ȤޤϥС¹Ԥ˵ưޤORBD ˤϡ³͡ॵӥӰ͡ॵӥȤ߹ޤƤޤϤɤ COS ͡ॵӥμǤ .LP .LP -\f3「持続」ネームサービス\fPは、ネーミングコンテキストに対して持続性を提供します。つまり、この情報は、サービスの停止や起動後にも維持され、サービスに障害が発生した場合でも回復できます。ORBD を再起動すると、持続ネームサービスはネーミングコンテキストのグラフを復元し、すべてのクライアントとサーバーの名前のバインディングが保持されます。 +\f3ֻ³ץ͡ॵӥ\fPϡ͡ߥ󥰥ƥȤФƻ³󶡤ޤĤޤꡢξϡӥߤ䵯ưˤݻ졢ӥ˾㳲ȯǤǤޤORBD Ƶưȡ³͡ॵӥϥ͡ߥ󥰥ƥȤΥդ٤ƤΥ饤ȤȥС̾ΥХǥ󥰤ݻޤ .LP .LP \ .LP .LP -下位互換性のため、旧バージョンの JDK に同梱されていた\f3一時ネームサービス\fPが、今回のリリースの J2SE にも同梱されています。一時ネームサービスでは、ネームサービスの実行中にのみネーミングコンテキストが保持されます。サービスが中断されると、ネーミングコンテキストは失われます。 +̸ߴΤᡢС JDK ƱƤ\f2͡ॵӥ\fPΥ꡼ J2SE ˤƱƤޤ͡ॵӥǤϡ͡ॵӥμ¹ˤΤߥ͡ߥ󥰥ƥȤݻޤӥǤȡ͡ߥ󥰥ƥȤϼޤ .LP .LP -\f2\-ORBInitialPort\fP 引数は、\f2orbd\fP の必須のコマンド行引数で、ネームサービスが実行されるポートの番号を設定するために使われます。以下の説明では、Java\ IDL Object Request Broker Daemon 用にポート 1050 を使用できることを前提としています。Solaris ソフトウェアの使用時は、1024 より小さいポートでプロセスを開始する場合は、root ユーザーになる必要があります。 このため、1024 または 1024 より大きいポートを使用することをお勧めします。 +\f2\-ORBInitialPort\fP ϡ\f2orbd\fP ɬܤΥޥɹ԰ǡ͡ॵӥ¹ԤݡȤֹꤹ뤿˻ȤޤʲǤϡJavaIDL Object Request Broker Daemon Ѥ˥ݡ 1050 ѤǤ뤳ȤȤƤޤSolaris եȥѤ硢1024 꾮ݡȾǥץ򳫻Ϥˤϡroot 桼ˤʤɬפޤΤᡢ1024 ʾΥݡֹѤ뤳Ȥ򤪴ᤷޤɬפǤ̤ΥݡȤѹƤ .LP .LP -UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように入力します。 +UNIX ޥɥ \f2orbd\fP ưˤϡΤ褦Ϥޤ .LP .nf \f3 @@ -175,7 +167,7 @@ UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように .LP .LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 +Windows MS\-DOS ƥץץȤǤϡΤ褦Ϥޤ .LP .nf \f3 @@ -187,7 +179,7 @@ Windows の MS\-DOS システムプロンプトでは、次のように入力し .LP .LP -これで ORBD が実行され、サーバーとクライアントのアプリケーションを実行できるようになります。クライアントとサーバーのアプリケーションは、実行時に、ネームサービスが実行されているポートの番号 (必要な場合はさらにマシン名) を認識している必要があります。これを実現する 1 つの方法は、次のコードをアプリケーションに追加することです。 + ORBD ¹Ԥ졢Сȥ饤ȤΥץꥱ¹ԤǤ褦ˤʤޤ饤ȤȥСΥץꥱϡ¹Իˡ͡ॵӥ¹ԤƤݡȤֹ (ɬפʾϤ˥ޥ̾) ǧƤɬפޤ¸ 1 ĤˡϡΥɤ򥢥ץꥱɲä뤳ȤǤ .LP .nf \f3 @@ -205,7 +197,7 @@ Windows の MS\-DOS システムプロンプトでは、次のように入力し .LP .LP -この例では、ネームサービスは、ホスト MyHost のポート 1050 上で実行されます。別の方法として、コマンド行からサーバーまたはクライアントのアプリケーションを実行するときに、ポート番号またはマシン名あるいはその両方を指定する方法もあります。たとえば、次のコマンド行オプションを使用して、「HelloApplication」を起動できます。 +Ǥϡ͡ॵӥϡۥ MyHost Υݡ 1050 Ǽ¹Ԥޤ̤ˡȤơޥɹԤ饵Сޤϥ饤ȤΥץꥱ¹ԤȤˡݡֹޤϥޥ̾뤤Ϥξꤹˡ⤢ޤȤСΥޥɹԥץѤơHelloApplicationפưǤޤ .LP .nf \f3 @@ -217,35 +209,35 @@ Windows の MS\-DOS システムプロンプトでは、次のように入力し .LP .LP -ネームサービスを停止するには、適切なオペレーティングシステムコマンドを使用します。 たとえば、Solaris では \f2pkill orbd\fP を使用し、\f2orbd\fP が実行されている DOS ウィンドウでは \f2Ctrl+C\fP キーを使用します。一時ネームサービスの場合は、サービスが終了されると、ネームサービスに登録された名前が消去される場合があります。Java IDL ネームサービスは、明示的に停止されるまで実行されます。 +͡ॵӥߤˤϡŬڤʥڥ졼ƥ󥰥ƥॳޥɤѤޤȤСSolaris \f2pkill orbd\fP \f2¹Ԥꡢ\fP \f2orbd\fP ư DOS ɥ Ctrl+C 򲡤ꤷޤ͡ॵӥξϡӥλȡ͡ॵӥϿ줿̾õ礬ޤJava IDL ͡ॵӥϡŪߤޤǼ¹Ԥޤ .LP .LP -ORDB に含まれるネームサービスの詳細については、 +ORDB ˴ޤޤ͡ॵӥξܺ٤ˤĤƤϡ .na -\f2「ネームサービス」\fP @ +\f2֥͡ॵӥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html򻲾ȤƤ .LP -.SH "サーバーマネージャー" +.SH "Сޥ͡㡼" .LP .LP -ORBD のサーバーマネージャーにアクセスして持続サーバーを実行するには、servertool(1) を使用してサーバーを起動する必要があります。 servertool は、アプリケーションプログラマが、持続サーバーの登録、登録解除、起動、およびシャットダウンを行うためのコマンド行インタフェースです。servertool を使用してサーバーを起動する場合は、\f2orbd\fP が実行されている場所と同じポートとホストで起動する必要があります。サーバーを異なるポートで実行すると、ローカルコンテキスト用にデータベースに保存されている情報が無効になり、サービスが正しく動作しません。 +ORBD ΥСޥ͡㡼˥ƻ³С¹Ԥˤϡservertool(1) ѤƥСưɬפޤservertool ϡץꥱץޤ³СϿϿưӥåȥԤΥޥɹԥ󥿥եǤ\f2servertool\fP ѤƥСưϡ\f2orbd\fP ¹ԤƤƱݡȤȥۥȤǵưɬפޤСۤʤݡȤǼ¹Ԥȡ륳ƥѤ˥ǡ١¸Ƥ̵ˤʤꡢӥưޤ .LP .SS -サーバーマネージャー:例 +Сޥ͡㡼: .LP .LP -デモ用の +ǥѤ .na -\f2サンプルチュートリアル\fP @ +\f2ץ塼ȥꥢ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlExample.htmlを使用し、チュートリアルの手順に従って、\f2idlj\fP コンパイラと \f2javac\fP コンパイラを実行します。サーバーマネージャーを実行するには、次の手順に従ってアプリケーションを実行します。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlExample.htmlѤ塼ȥꥢμ˽äơ\f2idlj\fP ѥ \f2javac\fP ѥ¹ԤޤСޥ͡㡼¹Ԥˤϡμ˽äƥץꥱ¹Ԥޤ .LP .LP -\f2orbd\fP を起動します。 +\f2orbd\fP ưޤ .LP .LP -UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように入力します。 +UNIX ޥɥ \f2orbd\fP ưˤϡΤ褦Ϥޤ .LP .LP \ @@ -260,7 +252,7 @@ UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように .LP .LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 +Windows MS\-DOS ƥץץȤǤϡΤ褦Ϥޤ .LP .nf \f3 @@ -272,13 +264,13 @@ Windows の MS\-DOS システムプロンプトでは、次のように入力し .LP .LP -\f21050\fP はネームサーバーを実行するポートです。\f2\-ORBInitialPort\fP は必要なコマンド行の引数です。Solaris ソフトウェアの使用時は、1024 より小さいポートでプロセスを開始する場合は、root ユーザーになる必要があります。 このため、1024 または 1024 より大きいポートを使用することをお勧めします。 +\f21050\fP ϥ͡ॵС¹ԤݡȤǤ\f2\-ORBInitialPort\fP ɬפʥޥɹԤΰǤSolaris եȥѤ硢1024 꾮ݡȾǥץ򳫻Ϥˤϡroot 桼ˤʤɬפޤΤᡢ1024 ʾΥݡֹѤ뤳Ȥ򤪴ᤷޤ .LP .LP -\f2servertool\fP を起動します。 +\f2servertool\fP ưޤ .LP .LP -Hello サーバーを起動するには、次のように入力します。 +Hello СưˤϡΤ褦Ϥޤ .LP .nf \f3 @@ -290,21 +282,21 @@ Hello サーバーを起動するには、次のように入力します。 .LP .LP -前回の手順と同様にネームサーバー (\f2orbd\fP) のポートを指定します。 たとえば \f2\-ORBInitialPort 1050\fP のようになります。\f2servertool\fP は、ネームサーバーと同じポート上で起動する必要があります。 +μƱͤ˥͡ॵС (\f2orbd\fP) ΥݡȤꤷޤȤ \f2\-ORBInitialPort 1050\fP Τ褦ˤʤޤ\f2servertool\fP ϡ͡ॵСƱݡȾǵưɬפޤ .LP .LP -\f2servertool\fP コマンド行インタフェースが表示されます。 +\f2servertool\fP ޥɹԥ󥿥եɽޤ .LP .LP .LP .LP -\f2servertool\fP プロンプトから Hello サーバーを起動します。 +\f2servertool\fP ץץȤ Hello Сưޤ .LP .nf \f3 .fl - servertool > register \-server HelloServer \-classpath . \-applicationName + servertool > register \-server HelloServer \-classpath .\-applicationName .fl HelloServerApName .fl @@ -313,13 +305,13 @@ Hello サーバーを起動するには、次のように入力します。 .LP .LP -\f2servertool\fP によってサーバーが登録されて、「HelloServerApName」という名前がサーバーに割り当てられ、サーバー ID が表示されます。 +\f2servertool\fP ˤäƥСϿơHelloServerApNameפȤ̾С˳Ƥ졢С ID ɽޤ .LP .LP .LP .LP -別の端末ウィンドウまたはプロンプトからクライアントアプリケーションを実行します。 +̤üɥޤϥץץȤ饯饤ȥץꥱ¹Ԥޤ .LP .LP \ @@ -334,10 +326,10 @@ Hello サーバーを起動するには、次のように入力します。 .LP .LP -この例の \f2\-ORBInitialHost localhost\fP は省略することができます。 ネームサーバーが Hello クライアントとして同一ホスト上で動作しているからです。ネームサーバーが別のホストで動作している場合は、IDL ネームサーバーが動作しているホストを \f2\-ORBInitialHost\fP \f2nameserverhost\fP で指定します。 + \f2\-ORBInitialHost localhost\fP Ͼά뤳ȤǤޤ͡ॵС Hello 饤ȤȤƱۥȾưƤ뤫Ǥ͡ॵС̤ΥۥȤưƤϡIDL ͡ॵСưƤۥȤ \f2\-ORBInitialHost\fP \f2nameserverhost\fP ǻꤷޤ .LP .LP -前回の手順と同様にネームサーバー (\f2orbd\fP) のポートを指定します。 たとえば \f2\-ORBInitialPort 1050\fP のようになります。 +μƱͤ˥͡ॵС (\f2orbd\fP) ΥݡȤꤷޤȤ \f2\-ORBInitialPort 1050\fP Τ褦ˤʤޤ .LP .LP \ @@ -346,21 +338,21 @@ Hello サーバーを起動するには、次のように入力します。 \ .LP .LP -サーバーマネージャーの操作が終了したら、ネームサーバー (\f2orbd\fP) と \f2servertool\fP を停止するか終了してください。 +Сޥ͡㡼λ顢͡ॵС (\f2orbd\fP) \f2servertool\fP ߤ뤫λƤ .LP .LP -DOS プロンプトで \f2orbd\fP をシャットダウンするには、サーバーを実行しているウィンドウを選択して \f2Ctrl+C\fP と入力します。UNIX シェルで \f2orbd\fP をシャットダウンするには、プロセスを検出して終了 (kill) します。サーバーを明示的に停止するまでは、呼び出し待機状態が続きます。 +DOS ץץȤ \f2orbd\fP 򥷥åȥ󤹤ˤϡС¹ԤƤ륦ɥ򤷤 \f2Ctrl+C\fP ϤޤUNIX \f2orbd\fP 򥷥åȥ󤹤ˤϡץ򸡽Фƽλ (kill) ޤСŪߤޤǤϡƤӽФԵ֤³ޤ .LP .LP -\f2servertool\fP をシャットダウンするには、\f2quit\fP と入力し、キーボードの \f2Enter\fP キーを押します。 +\f2servertool\fP 򥷥åȥ󤹤ˤϡ \f2quit\fP Ϥƥܡɤ \f2Enter\fP 򲡤ޤ .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o .na -\f2ネームサービス\fP @ +\f2͡ॵӥ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html .br diff --git a/src/linux/doc/man/ja/pack200.1 b/src/linux/doc/man/ja/pack200.1 index 51fb78b71012471282682f478c84d33bd4417dcc..74886e8d9506152fa88fceaa4abad4dae723af53 100644 --- a/src/linux/doc/man/ja/pack200.1 +++ b/src/linux/doc/man/ja/pack200.1 @@ -19,99 +19,79 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH pack200 1 "02 Jun 2010" +.TH pack200 1 "14 Apr 2011" .LP -.SH "名前" -pack200 \- JAR パックツール +.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 - +.SH "" .LP .LP \f4pack200\fP\f2 [ \fP\f2options\fP ] \f2output\-file\fP \f2JAR\-file\fP .LP .LP -オプションの指定順序に決まりはありません。コマンド行または properties ファイルに指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。 -.LP -.RS 3 - +ץλ˷ޤϤޤ󡣥ޥɹԤޤ properties ե˻ꤵ줿ǸΥץ󤬡˻ꤵ줿٤ƤΥץͥ褵ޤ .LP .RS 3 .TP 3 options -コマンド行オプション。 +ޥɹԥץ .TP 3 output\-file -出力ファイルの名前。 +ϥե̾ .TP 3 JAR\-file -入力ファイルの名前。 +ϥե̾ .RE .LP -.RE -.SH " 説明" +.SH " " .LP - .LP +\f2pack200\fP ġϡJava gzip ̥ץѤ JAR ե \f2pack200\fP ̥եѴ \f2Java ץꥱ\fP Ǥ \f2pack200\fP եϹⰵ̤ΥեǡӰɻ֤ṳ̂ľ뤳ȤǤޤ .LP -\f2pack200\fP ツールは、Java \f2gzip\fP 圧縮プログラムを使用して、JAR ファイルを \f2pack200\fP 圧縮ファイルに変換する Java アプリケーションです。\f2pack200\fP ファイルは高圧縮のファイルで、帯域幅の節約やダウンロード時間の短縮や直接配備することができます。 .LP -.LP -\f2pack200\fP ツールには、圧縮エンジンの設定や微調整を行うオプションが用意されています。 +\f2pack200\fP ġˤϡ̥󥸥ĴԤץѰդƤޤ .LP .SS -一般的な使用方法: -.LP -.RS 3 - +Ūʻˡ: .LP .LP \f2% pack200 myarchive.pack.gz myarchive.jar\fP .LP -.RE -.LP -この例では、デフォルトの \f2pack200\fP 設定で、\f2myarchive.pack.gz\fP が作成されます。 .LP -.SH "オプション" +Ǥϡ \f2ǥեȤ pack200 Ѥ\fP myarchive.pack.gz \f2ޤ\fP .LP - +.SH "ץ" .LP .LP \f4\-r \-\-repack\fP -.LP -.RS 3 - .LP .LP -\f2myarchive.jar\fP ファイルをパックした後にアンパックすることにより、JAR ファイルを生成します。生成されたファイルは、\f2jarsigner(1)\fP ツールの入力ファイルとして使用できます。 -.LP -.RS 3 - +ե \f2myarchive.jar\fP ѥåȥѥå뤳ȤǡJAR եޤ줿ե \f2jarsigner(1)\fP ġϥեȤƻѤǤޤ .LP .LP \f2% pack200 \-\-repack myarchive\-packer.jar myarchive.jar\fP @@ -119,158 +99,122 @@ JAR\-file .LP \f2% pack200 \-\-repack myarchive.jar\fP .LP -.RE -.RE .LP \f4\-g \-\-no\-gzip\fP .LP -.RS 3 - -.LP -.LP -\f2pack200\fP ファイルを生成します。このオプションを指定するときは、適切な圧縮ツールを使用する必要があります。 また、ターゲットシステムでは、対応する圧縮解除ツールを使用する必要があります。 .LP -.RS 3 - +\f2pack200\fP եޤΥץꤹȤϡŬڤʰ̥ġѤɬפޤޤåȥƥǤϡб밵̲ġѤɬפޤ .LP .LP \f2% pack200 \-\-no\-gzip myarchive.pack myarchive.jar\fP .LP -.RE -.RE .LP \f4\-G \-\-strip\-debug\fP .LP -.RS 3 - .LP +ϤǥХåѤ°ޤ°ȤƤϡ \f2SourceFile\fP \f2LineNumberTable\fP \f2LocalVariableTable\fP \f2LocalVariableTypeTable\fP ʤɤ󤲤ޤ°Сɤȥ󥹥ȡΥϾʤޤǥХåεǽ¤ޤ .LP -出力からデバッグ用の属性を削除します。対象となる属性には、\f2SourceFile\fP、\f2LineNumberTable\fP、\f2LocalVariableTable\fP、および \f2LocalVariableTypeTable\fP などがあります。これらの属性を削除すれば、ダウンロードとインストールのサイズは小さくなりますが、デバッガの機能は制限されます。 .LP -.RE +\f4\-\-keep\-file\-order\fP .LP -\f4\-O \-\-no\-keep\-file\-order\fP .LP -.RS 3 - +ϥեΥեνݻޤ줬ǥեȤưǤ .LP .LP -パックツールは、すべての要素を並べ替えて転送します。また、JAR ディレクトリ名を削除します。このため、ダウンロードのサイズは小さくなりますが、インデックスをはじめとする JAR ファイルの最適化機能は正常に動作しなくなることがあります。 +\f4\-O \-\-no\-keep\-file\-order\fP .LP -.RE .LP -\f4\-Svalue \-\-segment\-limit=\fP\f2value\fP +ѥåġϡ٤ƤǤ¤ؤžޤޤJAR ǥ쥯ȥ̾ޤΤᡢɤΥϾʤޤǥåϤȤ JAR եκŬǽưʤʤ뤳Ȥޤ .LP -.RS 3 - +.LP +\f4\-Svalue \-\-segment\-limit=\fP\f2value\fP .LP .LP -この値は、各アーカイブセグメントの予想ターゲットサイズ N (バイト単位) です。N バイト以上を必要とする単一の入力ファイルには、 +ͤϡƥ֥Ȥͽۥåȥ N (Хñ) Ǥñϥեɬץ .br -独立したアーカイブセグメントが割り当てられます。たとえば、これは特殊な例ですが、値が \f2\-1\fP の場合、すべての入力ファイルを含む単一の巨大なセグメントが生成されます。 一方、値が \f20\fP の場合、クラスごとにセグメントが 1 つずつ生成されます。アーカイブセグメントのサイズが大きければ大きいほど断片化は起こりにくく、圧縮率も高くなります。しかし、こうしたセグメントを処理するためには、大量のメモリーが必要になります。 +N ХȤĶȡΥեˤΩ֥ȤƤޤüʥȤơͤ \f2\-1\fP ξϡ٤Ƥϥեޤ礭ñΥȤ졢ͤ \f20\fP ξϡ饹Ȥ˥Ȥ 1 Ĥޤ֥Ȥ礭ʤȡҲʤʤ갵Ψ⤯ʤޤνˤ¿Υ꡼ɬפǤ .LP .LP -各セグメントのサイズは、セグメント内で転送される入力ファイルのサイズと、このファイルの名前のサイズ、およびその他の転送プロパティーによって予測されます。 +ƥȤΥϡȤѴ뤽줾ϥեΥΤۤ̾ȤۤץѥƥΥ׻ƿ¬ޤ .LP .LP -デフォルトのサイズは \f21000000\fP (100 万バイト) です。これは、標準サイズの入力 JAR ファイルを単一セグメント内で転送できるサイズです。パックツールおよびアンパックツールのメモリー要件には制限が課されます。 +ǥեȤ \-1 ǤĤޤꡢѥåġϾñΥȽϥեޤü礭ʽϥե뤬ˤϡϥե򥻥Ȳ (ʬ) Ƥ꾮 JAR ˤ뤳Ȥ򶯤ᤷޤ .LP .LP -この制限が課されていない 10M バイトの JAR パックファイルは通常、元の 10% 程度のサイズにパックされます。 しかし、パックツールでより大きな Java ヒープ (セグメントの制限の約 10 倍) を必要とする場合もあります。 +¤ݤƤʤ 10M ХȤ JAR ѥåե̾ 10% ٤Υ˥ѥåޤѥåġǤ礭 Java ҡ (Ȥ¤ 10 ) ɬפȤ⤢ޤ .LP -.RE .LP \f4\-Evalue \-\-effort=\fP\f2value\fP .LP -.RS 3 - .LP +ñ 10 ʿͤꤷ硢ѥåġϡꤵ줿Ψǥ֤򰵽̤ޤ٥ \f21\fP ξϡŪû̻֤Ǥ礭Υե뤬ޤ٥ \f29\fP ξϡĹ֤ΤΡ갵Ψι⤤ե뤬ޤü \f20\fP ꤷϡ JAR ե򰵽̤ʤľܥԡޤJSR 200 ɸǤϡ٤Ƥβץब̤ʾ򥢡ΤΥѥ롼Ȳ᤹褦˵ꤷƤޤ .LP -単一の 10 進数値を指定した場合、パックツールは、指定された圧縮率でアーカイブを圧縮します。レベル \f21\fP の場合、圧縮速度は速くても圧縮率はそれほど高くありません。 レベル \f29\fP の場合、圧縮速度は遅くても圧縮率は高くなります。特殊な値 \f20\fP を指定した場合は、元の JAR ファイルを圧縮なしで直接コピーします。JSR 200 標準では、すべてのアンパックツールはこの特殊な処理をアーカイブ全体のパススルーとして理解する必要があります。 .LP +ǥեȤ \f25\fPǤξ硢ɸŪʻ֤Ŭڤʰ̤Ԥޤ .LP -デフォルト値は \f25\fP です。 この場合、標準的な時間で、適度な圧縮が行われます。 -.LP -.RE .LP \f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP -.LP -.RS 3 - .LP .LP -デフォルト値を上書きし、入力情報を保持します。 転送されるアーカイブのサイズは大きくなります。可能な値: +ǥեͤ񤭤Ͼ¸ޤž륢֤Υ礭ʤޤ֤ͤϼΤɤ줫ˤʤޤ .LP .RS 3 .TP 3 true .TP 3 false -どちらの場合でも、パックツールはデフレーションヒントを出力アーカイブに設定します。 アーカイブ要素の個々のデフレーションヒントは転送しません。 +ɤξǤ⡢ѥåġϥǥե졼ҥȤϥ֤ꤷޤǤθġΥǥե졼ҥȤžޤ .RE .LP .RS 3 .TP 3 keep -入力 JAR 内のデフレーションヒントを保持します (デフォルト)。 + JAR.ǸĤäǥե졼ҥȤݻޤ(줬ǥեȤǤ) .RE .LP -.RE .LP \f4\-mvalue \-\-modification\-time=\fP\f2value\fP .LP -.RS 3 - .LP -.LP -可能な値: +֤ͤϼΤɤ줫ˤʤޤ .LP .RS 3 .TP 3 latest -パックツールは、元のアーカイブの全エントリの最終更新時刻か、そのセグメントのすべてのエントリの最終更新時刻を特定しようとします。この単一の値はセグメントの一部として転送され、各セグメントの全エントリに適用されます。この場合、すべてのインストールファイルに単一の日付が設定されるという問題はありますが、アーカイブの転送サイズを少し小さくすることができます。 +ѥåġϡΥ֤ȥκǽ狼ΥȤΤ٤ƤΥȥκǽꤷ褦ȤޤñͤϥȤΰȤž졢ƥȤȥŬѤޤξ硢٤ƤΥ󥹥ȡեñդꤵȤϤޤ֤ž򾯤뤳ȤǤޤ .TP 3 keep -入力 JAR 内の更新時刻を保持します (デフォルト)。 + JAR. ǸĤäѹݻޤ(줬ǥեȤǤ) .RE .LP -.RE .LP \f4\-Pfile \-\-pass\-file=\fP\f2file\fP .LP -.RS 3 - .LP +ե򰵽̤Хñ̤ž褦˻ꤷޤΥץ򷫤֤ѤơʣΥեǤޤƥե륻ѥ졼 JAR ե륻ѥ졼\f2/\fPפ֤ѥ̾ѴϹԤޤ ̤Ȥե̾ϡʸȤΤ JAR եǤνиȰפƤɬפޤfile ˥ǥ쥯ȥ̾ꤷ硢Υǥ쥯ȥΤ٤ƤΥե뤬žޤ .LP -ファイルを圧縮せず、バイト単位で転送するように指定します。このオプションを繰り返し使用して、複数のファイルを指定できます。パス名の変換は行われません。 システムファイルの区切り文字が JAR ファイルの区切り文字「\f2/\fP」で置き換えられるだけです。ファイル名は、JAR ファイル内の文字列と完全に一致していなければなりません。file にディレクトリ名を指定した場合、そのディレクトリ内のすべてのファイルが転送されます。 -.LP -.RE .LP \f4\-Uaction \-\-unknown\-attribute=\fP\f2action\fP -.LP -.RS 3 - .LP .LP -デフォルトの動作を無効にします。 たとえば、不明な属性を含むクラスファイルを指定したアクションで転送します。アクションとして指定可能な値: +ǥեȤư̵ˤޤȤС°ޤ९饹եꤷžޤȤƻǽ: .LP .RS 3 .TP 3 error -\f2pack200\fP の操作に失敗し、適切な解説が表示されます。 +\f2pack200\fP ˼ԤŬڤʲ⤬ɽޤ .TP 3 strip -属性はドロップされます。注: VM 必須属性を削除すると、クラスローダーの障害が発生することがあります。 +°ϥɥåפޤ: VM ɬ°ȥ饹ξ㳲ȯ뤳Ȥޤ .TP 3 pass -この属性が検出された場合、クラス全体が 1 つのリソースとして転送されます。 +°Ф줿硢饹Τ 1 ĤΥ꥽Ȥžޤ .RE .LP -.RE .LP \f4\-Cattribute\-name=\fP\f2layout\fP \f3\-\-class\-attribute=\fP\f2attribute\-name=action\fP .br @@ -279,43 +223,33 @@ pass \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 -.RS 3 - .LP .LP -これら 4 つのオプションでは、クラスエンティティーに Class 属性、Field 属性、Method 属性、Code 属性などの属性のレイアウトを指定できます。attribute\-name には、これからレイアウトまたはアクションを定義する属性の名前を指定します。アクションとして指定可能な値: + 4 ĤΥץǤϡ饹ƥƥ Class °Field °Method °Code °ʤɤ°Υ쥤ȤǤޤattribute\-name ˤϡ줫쥤Ȥޤϥ°̾ꤷޤȤƻǽ: .LP .RS 3 .TP 3 -(一部のレイアウト文字列) -レイアウト言語は、JSR 200 仕様に定義されています。 +some\-layout\-string +쥤ȸϡJSR 200 ͤƤޤ .LP -例: \f2\-\-class\-attribute=SourceFile=RUH\fP +: \f2\-\-class\-attribute=SourceFile=RUH\fP .TP 3 error -この属性が検出された場合、pack200 の操作に失敗し、適切な解説が表示されます。 +°Ф줿硢pack200 ˼ԤŬڤʲ⤬ɽޤ .TP 3 strip -この属性が検出された場合、属性は出力から削除されます。注: VM 必須属性を削除すると、クラスローダーの障害が発生することがあります。 +°Ф줿硢°ϽϤޤ: VM ɬ°ȥ饹ξ㳲ȯ뤳Ȥޤ .RE .LP .LP -例: \f2\-\-class\-attribute=CompilationID=pass\fP というこの属性を含むクラスファイルを転送します。 パックツールは、その他のアクションを行いません。 +: \f2\-\-class\-attribute=CompilationID=pass\fP Ȥ°ޤ९饹եžޤѥåġϡ¾ΥԤޤ .LP -.RE .LP \f4\-f\fP\f2 \fP\f2pack.properties\fP \f3\-\-config\-file=\fP\f2pack.properties\fP .LP -.RS 3 - .LP -.LP -コマンド行に、パックツールを初期化するための Java プロパティーが含まれている設定ファイルを指定できます。 -.LP -.RS 3 - +ޥɹԤˡѥåġ뤿 Java ץѥƥޤޤƤեǤޤ .LP .LP \f2% pack200 \-f pack.properties myarchive.pack.gz myarchive.jar\fP @@ -339,71 +273,55 @@ strip \f2# Change the segment limit to be unlimited.\fP .br \f2segment.limit=\-1\fP -.LP -.RE -.RE -.RS 3 - .LP .LP \f4\-v \-\-verbose\fP .LP -.RS 3 - .LP +Ǿ¤ΥåϤޤΥץʣꤹȡĹåϤޤ .LP -最小限のメッセージを出力します。このオプションを複数指定すると、より長いメッセージが出力されます。 -.LP -.RE .LP \f4\-q \-\-quiet\fP .LP -.RS 3 - .LP +åɽưޤ .LP -メッセージを表示せずに動作します。 -.LP -.RE .LP \f4\-lfilename \-\-log\-file=\fP\f2filename\fP .LP -.RS 3 - .LP +ϥåΥեꤷޤ .LP -出力メッセージのログファイルを指定します。 .LP -.RE +\f4\-? \-h \-\-help\fP .LP -\f4\-Joption\fP .LP -.RS 3 - +Υޥɤ˴ؤإ׾Ϥޤ .LP .LP -\f2pack200\fP によって呼び出される Java 起動ツールにオプションを渡します。たとえば、\f2\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。このオプションは \f2\-X\fP で始まっていませんが、\f2pack200\fP の標準オプションではありません。\f2\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 +\f4\-V \-\-version\fP .LP -.RE -.RE -.SH "終了ステータス" .LP - +Υޥɤ˴ؤСϤޤ .LP .LP -次の終了値が返されます。 +\f4\-J\fP\f2option\fP .LP -.RS 3 - .LP +\f2option\fP \f2pack200\fP ƤӽФ줿 Java ưġϤޤȤС \f2\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤΥץ \f2\-X\fP ǻϤޤäƤޤ󤬡 \f2pack200\fP ɸ४ץǤϤޤ \f2\-J\fP ȤäơJava ǵҤ줿ץꥱ¹Ԥظ VM ˥ץϤȤϡ褯ԤƤޤ .LP -\f2\ 0\fP "成功" +.SH "λơ" .LP .LP -\f2>0\fP "エラー" +νλ֤ͤޤ .LP -.RE -.SH "関連項目" +.LP +\f2\ 0\fP ェλ +.LP +.LP +\f2>0\fP 顼ȯ +.LP +.SH "Ϣ" .LP .RS 3 .TP 2 @@ -412,35 +330,33 @@ unpack200(1) .TP 2 o .na -\f2Java SE のドキュメント\fP @ +\f2Java SE Υɥ\fP @ .fi http://java.sun.com/javase/6/docs/index.html .TP 2 o .na -\f2「Java 配備ガイド \- Pack200」\fP @ +\f2Java \- Pack200\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/pack200.html .TP 2 o -jar(1) \- Java Archive ツール」 +jar(1) \- Java Archive ġ .TP 2 o -「jarsigner(1) \- JAR 署名および検証ツール」 +jarsigner(1) \- JAR ̾Ӹڥġ .TP 2 o -\f2attributes(5)\fP のマニュアルページ +\f2attributes(5) \fP ޥ˥奢ڡ .RE .LP -.SH "注意事項" -.LP - +.SH "ջ" .LP .LP -このコマンドと \f2pack(1)\fP を混同しないでください。これらは別製品です。 +Υޥɤ \f2pack(1)\fP ƱʤǤʤǤ .LP .LP -SDK に付属する Java SE API 仕様との相違が見つかった場合には、仕様を優先してください。 +SDK ° Java SE API ͤȤ㤬Ĥäˤϡͤͥ褷Ƥ .LP diff --git a/src/linux/doc/man/ja/policytool.1 b/src/linux/doc/man/ja/policytool.1 index c53d78fe09cf3bcb23cf330964e37b43022ffaac..ee5b9c7dbff7a653b829c04675398b1e7d49bb2b 100644 --- a/src/linux/doc/man/ja/policytool.1 +++ b/src/linux/doc/man/ja/policytool.1 @@ -19,84 +19,82 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH policytool 1 "02 Jun 2010" +.TH policytool 1 "14 Apr 2011" .LP -.SH "名前" -policytool \- PolicyTool 管理 GUI ユーティリティー +.SH "̾" +policytool \- PolicyTool GUI 桼ƥƥ .LP -\f3policytool\fP は、ユーティリティー GUI 経由で取得したユーザー入力に基づいて、プレーンテキストのポリシーファイルを読み書きします。 +\f3policytool\fP ϡ桼ƥƥ GUI ͳǼ桼Ϥ˴Ťơץ졼ƥȤΥݥꥷեɤ߽񤭤ޤ .RS 3 .TP 2 o -形式 + .TP 2 o -説明 + .TP 2 o -オプション +ץ .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" -.LP - +.SH "" .LP .RS 3 .TP 3 \ .TP 3 -policytool 管理者ユーティリティーを実行します +policytool ԥ桼ƥƥ¹Ԥޤ \f4policytool\fP .TP 3 -policytool を実行し、指定されたポリシーファイルを読み込みます -\f4policytool\fP\f2 [\-file\ \fP\f2filename\fP\f2]\fP +policytool ¹Ԥꤵ줿ݥꥷեɤ߹ߤޤ +\f4policytool\fP\f2[\-file\ \fP\f2filename\fP\f2]\fP .TP 3 \ .TP 3 -各要素は次のとおりです。 +ʲˤ줾ΰ̣򼨤ޤ .RS 3 .TP 3 file -ローカルポリシーファイルを読み込むように \f2policytool\fP に指示します +ݥꥷեɤ߹褦 \f2policytool\fP ˻ؼޤ .TP 3 filename -ファイル名 +ե̾ .RE -.SH "説明" +.SH "" .LP -\f3policytool\fP は、ユーザーがローカルポリシーファイルの内容を管理することを可能にする GUI です。詳細については、 +\f3policytool\fP ϡ桼ݥꥷեƤ뤳Ȥǽˤ GUI Ǥܺ٤ˤĤƤϡ .na -\f2「ポリシーファイル作成および管理ツール」\fP @ +\f2֥ݥꥷեӴġ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyGuide.htmlを参照してください。 -.SH "オプション" +http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyGuide.html򻲾ȤƤ +.SH "ץ" .RS 3 .TP 3 file -\f2filename\fP を読み込みます。 -.SH "関連項目" +\f2filename\fP ɤ߹ߤޤ +.SH "Ϣ" .na -\f2「Default Policy Implementation and Syntax」\fP @ +\f2Default Policy Implementation and Syntax\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyFiles.html .br .na -\f2「Policy Tool Users' Guide」\fP @ +\f2Policy Tool Users' Guide\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyGuide.html .br .na -\f2「Security Permissions」\fP @ +\f2Security Permissions\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/security/permissions.html .br .na -\f2「Security Overview」\fP @ +\f2Security Overview\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/security/overview/jsoverview.html .br diff --git a/src/linux/doc/man/ja/rmic.1 b/src/linux/doc/man/ja/rmic.1 index 85e045e6446879657fb242c6d274eb16b2d5e57f..bef409008e59245da22ae96aa089fc410a6c1d25 100644 --- a/src/linux/doc/man/ja/rmic.1 +++ b/src/linux/doc/man/ja/rmic.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH rmic 1 "02 Jun 2010" +.TH rmic 1 "14 Apr 2011" .LP -.SH "名前" -rmic \- Java RMI コンパイラ -.LP -.RS 3 - +.SH "̾" +rmic \- Java RMI ѥ .LP .LP -\f3rmic\fP によって、JRMP または IIOP プロトコルを使用するリモートオブジェクトのスタブ、スケルトン、および Tie クラスが生成されます。また、OMG IDL も生成されます。 -.LP -.RE -.SH "形式" +\f3rmic\fP ˤäơJRMP ޤ IIOP ץȥѤ⡼ȥ֥ȤΥ֡ȥ󡢤 Tie 饹ޤޤOMG IDL ޤ .LP - +.SH "" .LP .nf \f3 @@ -45,12 +39,10 @@ rmic [ \fP\f3options\fP\f3 ] \fP\f4package\-qualified\-class\-name(s)\fP\f3 .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3rmic\fP コンパイラによって、リモートオブジェクトの、スタブ、スケルトンクラスファイル (JRMP プロトコル)、およびスタブと Tie クラスファイルの組み合わせ (IIOP プロトコル) が生成されます。リモートオブジェクトの実装クラスであるこれらのクラスファイルは、Java プログラミング言語のクラスをコンパイルしたときに生成されます。リモート実装クラスは、\f2java.rmi.Remote\fP インタフェースを実装するクラスです。\f3rmic\fP コマンドでのクラス名は、そのクラスが \f3javac\fP コマンドでコンパイルが成功していて、かつ完全なパッケージ名が指定されている必要があります。たとえば、クラスファイル名 \f2HelloImpl\fP で \f3rmic\fP を実行するには、次のようにします。 +\f3rmic\fP ѥˤäơ⡼ȥ֥ȤΡ֡ȥ󥯥饹ե (JRMP ץȥ)ӥ֤ Tie 饹եȤ߹碌 (IIOP ץȥ) ޤ⡼ȥ֥Ȥμ饹Ǥ뤳Υ饹եϡJava ץߥ󥰸Υ饹򥳥ѥ뤷Ȥޤ⡼ȼ饹ϡ\f2java.rmi.Remote\fP 󥿥ե륯饹Ǥ\f3rmic\fP ޥɤǤΥ饹̾ϡΥ饹 \f3javac\fP ޥɤǥѥ뤬ƤơĴʥѥå̾ꤵƤɬפޤȤС饹ե̾ \f2HelloImpl\fP \f3rmic\fP ¹ԤˤϡΤ褦ˤޤ .LP .nf \f3 @@ -62,37 +54,32 @@ rmic hello.HelloImpl .LP .LP -\f2HelloImpl_Stub.class\fP ファイルが、クラスのパッケージ名が付いた \f2hello\fP サブディレクトリに作成されます。 +\f2HelloImpl_Stub.class\fP ե뤬饹Υѥå̾դ \f2hello\fP ֥ǥ쥯ȥ˺ޤ .LP .LP -リモートオブジェクトの「スケルトン」は JRMP プロトコルサーバー側のエンティティーで、実際のリモートオブジェクト実装を呼び出すメソッドを含みます。 +⡼ȥ֥ȤΡ֥ȥפ JRMP ץȥ륵С¦ΥƥƥǡºݤΥ⡼ȥ֥ȼƤӽФ᥽åɤޤߤޤ .LP .LP -リモートオブジェクトの「Tie」は、スケルトンと同様にサーバー側のエンティティーですが、IIOP プロトコルを使ってクライアントと通信します。 +⡼ȥ֥ȤΡTieפϡȥƱͤ˥С¦ΥƥƥǤIIOP ץȥȤäƥ饤Ȥ̿ޤ .LP .LP -「スタブ」とは、リモートオブジェクトのクライアント側での代理です。 スタブは、リモートオブジェクトのメソッド呼び出しを、実物のリモートオブジェクトが常駐するサーバーと通信する役割を持ちます。したがって、クライアントのリモートオブジェクトへの参照は、実際はローカルスタブへの参照となります。 +֥֡פȤϡ⡼ȥ֥ȤΥ饤¦ǤǤ֤ϡ⡼ȥ֥ȤΥ᥽åɸƤӽФ򡢼ʪΥ⡼ȥ֥Ȥ󤹤륵С̿ޤäơ饤ȤΥ⡼ȥ֥ȤؤλȤϡºݤϥ륹֤ؤλȤȤʤޤ .LP .LP -デフォルトで \f3rmic\fP では、1.2 JRMP スタブプロトコルバージョンだけを使用するスタブクラスを生成します。 これは、\f2\-v1.2\fP オプションを指定した場合と同じ動作です。(5.0 以前では \f2\-vcompat\fP オプションがデフォルトであったことに注意。) IIOP プロトコル用のスタブおよび Tie クラスを生成するには \f2\-iiop\fP オプションを使用します。 +ǥեȤ \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 メソッドを使わなければなりません。 +֤ϥ⡼ȥ󥿥ե⡼ȥ֥Ȥɽꥤ󥿥եϼƤޤJRMP ֤ϥ⡼ȥ֥ȼΤ⡼ȥ󥿥եƱΤƤΤǡ饤Ȥϡ㥹Ȥ䷿å Java ץߥ󥰸Ȥ߹ޤ줿黻ҤѤ뤳ȤǤޤIIOP ξϡ\f2PortableRemoteObject.narrow\fP ᥽åɤȤʤФʤޤ .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-bootclasspath path -ブートストラップクラスファイルの位置をオーバーライドします。 +֡ȥȥåץ饹եΰ֤򥪡С饤ɤޤ .TP 3 \-classpath path -\f3rmic\fP がクラスを探すためのパスを指定します。このオプションは、デフォルトや CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 -.RS 3 - -.LP +\f3rmic\fP 饹õΥѥꤷޤΥץϡǥեȤ CLASSPATH Ķѿ񤭤ޤǥ쥯ȥϥʬ䤷ޤäơ\f2path\fP ΰ̷ϼΤ褦ˤʤޤ .nf \f3 .fl @@ -100,11 +87,7 @@ rmic hello.HelloImpl .fl \fP .fi -.RE -例を示します。 -.RS 3 - -.LP +򼨤ޤ .nf \f3 .fl @@ -112,13 +95,9 @@ rmic hello.HelloImpl .fl \fP .fi -.RE .TP 3 \-d directory -生成されたクラス階層の出力先ディレクトリのルートを指定します。このオプションを使えば、スタブ、スケルトン、および Tie ファイルを格納するディレクトリを指定できます。たとえば、次のようにして使います。 -.RS 3 - -.LP +줿饹ؤνǥ쥯ȥΥ롼ȤꤷޤΥץȤС֡ȥ󡢤 Tie եǼǥ쥯ȥǤޤȤСΤ褦ˤƻȤޤ .nf \f3 .fl @@ -126,49 +105,43 @@ rmic hello.HelloImpl .fl \fP .fi -.RE -\f2MyClass\fP から取得したスタブとスケルトンクラスを \f2/java/classes/foo\fP ディレクトリに置きます。\f2\-d\fP オプションが指定されていない場合は、\f2「\-d\ .」\fPが指定されていると見なされます。ターゲットクラスのパッケージ階層が現在のディレクトリに作成され、スタブ、Tie、およびスケルトンファイルがそのディレクトリに格納されます。(以前のバージョンの \f3rmic\fP では、\f2\-d\fP が指定されていない場合は、パッケージ階層は作成されず、出力ファイルはすべて現在のディレクトリに直接格納されていた)。 +MyClass \f2֤ȥȥ󥯥饹\fP \f2/java/classes/foo\fP ǥ쥯ȥ֤ޤ\f2\-d\fP ץ󤬻ꤵƤʤϡ\f2\-d\ .\fPꤵƤȸʤޤåȥ饹ΥѥåؤߤΥǥ쥯ȥ˺졢֡Tieӥȥե뤬Υǥ쥯ȥ˳Ǽޤ(ΥС \f3rmic\fP Ǥϡ\f2\-d\fP ꤵƤʤϡѥåؤϺ줺ϥեϤ٤ƸߤΥǥ쥯ȥľܳǼƤ) .br \ .TP 3 \-extdirs path -インストール型拡張機能の位置をオーバーライドします。 +󥹥ȡ뷿ĥǽΰ֤򥪡С饤ɤޤ .TP 3 \-g -局所変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号情報だけが生成されます。 -.LP +ɽѿޤह٤ƤΥǥХåޤǥեȤǤϡֹޤ .TP 3 \-idl -\f2rmic\fP によって、指定したクラスおよび参照されたクラスの OMG IDL が生成されます。IDL では、プログラミング言語に依存せずに、宣言するだけでオブジェクトの API を指定することができます。IDL は、メソッドおよびデータの仕様として使用します。 CORBA バインディングを提供する任意の言語で、メソッドおよびデータの作成および呼び出しを行うことができます。これらの言語には、Java および C++ が含まれています。詳細は、 +\f2rmic\fP ˤäơꤷ饹ӻȤ줿饹 OMG IDL ޤIDL Ǥϡץߥ󥰸˰¸ˡǥ֥Ȥ API ꤹ뤳ȤǤޤIDL ϡ᥽åɤӥǡλͤȤƻѤޤCORBA Хǥ󥰤󶡤Ǥդθǡ᥽åɤӥǡκӸƤӽФԤȤǤޤθˤϡJava C++ ޤޤƤޤܺ٤ϡ .na \f2Java Language to IDL Mapping\fP @ .fi -http://www.omg.org/technology/documents/formal/java_language_mapping_to_omg_idl.htm (OMG) を参照してください。 +http://www.omg.org/technology/documents/formal/java_language_mapping_to_omg_idl.htm (OMG) 򻲾ȤƤ .LP -\f2\-idl\fP オプションを使うときは、ほかのオプションも指定できます。 +\f2\-idl\fP ץȤȤϡۤΥץǤޤ .RS 3 .TP 3 -\-always または \-alwaysgenerate -既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。 +\-always ޤ \-alwaysgenerate +¸Υ֡Tie IDL ϥ饹꿷ȤǤ⡢Ūľޤ .TP 3 \-factory -生成された IDL で factory キーワードを使います。 +줿 IDL factory ɤȤޤ .TP 3 \-idlModule\ fromJavaPackage[.class]\ toIDLModule -IDLEntity パッケージのマップを指定します。例を示します。 \f2\-idlModule foo.bar my::real::idlmod\fP +IDLEntity ѥåΥޥåפꤷޤ򼨤ޤ \f2\-idlModule foo.bar my::real::idlmod\fP .TP 3 \-idlFile\ fromJavaPackage[.class]\ toIDLFile -IDLEntity ファイルのマップを指定します。例を示します。 \f2\-idlFile test.pkg.X TEST16.idl\fP\ +IDLEntity եΥޥåפꤷޤ򼨤ޤ \f2\-idlFile test.pkg.X TEST16.idl\fP\ .RE -.LP .TP 3 \-iiop -\f2rmic\fP によって、JRMP のスタブとスケルトンクラスの代わりに、IIOP のスタブと Tie クラスが生成されます。スタブクラスは、リモートオブジェクトのローカルプロキシで、クライアントからサーバーに呼び出しを送信するときに使われます。各リモートインタフェースにはスタブクラスが必要です。 スタブクラスによってリモートインタフェースが実装されます。クライアントでリモートオブジェクトを参照するときは、実際にはスタブを参照することになります。タイクラスは、サーバー側で着呼を処理し、その呼び出しを適切な実装クラスにディスパッチするときに使われます。各実装クラスには、タイクラスが必要です。 -.LP -\f2\-iiop\fP を使って \f2rmic\fP を呼び出すと、次の命名規約に準拠したスタブと Tie が生成されます。 -.RS 3 - +\f2rmic\fP ˤäơJRMP Υ֤ȥȥ󥯥饹ˡIIOP Υ֤ Tie 饹ޤ֥饹ϡ⡼ȥ֥ȤΥץǡ饤Ȥ饵С˸ƤӽФȤ˻Ȥޤƥ⡼ȥ󥿥եˤϥ֥饹ɬפǤ֥饹ˤäƥ⡼ȥ󥿥եޤ饤Ȥǥ⡼ȥ֥Ȥ򻲾ȤȤϡºݤˤϥ֤򻲾Ȥ뤳Ȥˤʤޤ饹ϡС¦ƤθƤӽФŬڤʼ饹˥ǥѥåȤ˻ȤޤƼ饹ˤϡ饹ɬפǤ .LP +\f2\-iiop\fP Ȥä \f2rmic\fP ƤӽФȡ̿̾˽򤷤֤ Tie ޤ .nf \f3 .fl @@ -182,66 +155,60 @@ _<interfaceName>_tie.class .fl \fP .fi -.RE .LP -\f2\-iiop\fP オプションを使うときは、ほかのオプションも指定できます。 +\f2\-iiop\fP ץȤȤϡۤΥץǤޤ .RS 3 .TP 3 -\-always または \-alwaysgenerate -既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。 +\-always ޤ \-alwaysgenerate +¸Υ֡Tie IDL ϥ饹꿷ȤǤ⡢Ūľޤ .TP 3 \-nolocalstubs -同じプロセスのクライアントとサーバーに対して最適化されたスタブを作成しません。 +ƱץΥ饤ȤȥСФƺŬ줿֤ޤ .TP 3 \-noValueMethods -\f2\-idl\fP オプションとともに使われなければなりません。発行された IDL に、\f2valuetype\fP メソッドおよび初期化子を追加しません。このメソッドおよび初期化子は、\f2valuetype\fP の場合はオプションです。 \f2\-idl\fP オプションを使うときは、 \f2\-noValueMethods\fP オプションを指定しない限り生成されます。 + \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 に変わります。 +Ѿ \f2org.omg.CORBA_2_3.portable.ObjectImpl\fP \f2org.omg.PortableServer.Servant\fP Ѥޤ .LP .na \f2Portable Object Adapter\fP @ .fi -http://java.sun.com/javase/6/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 に準拠しています。 +http://java.sun.com/javase/6/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 SpecificationCORBA V 2.3.1 ptc/00\-01\-08.pdf ˽򤷤Ƥޤ .RE .TP 3 \-J -\f2\-J\fP の後ろに続くオプションを \f2java\fP インタプリタに引き渡します。 \f2java\fP オプションと組み合わせて使います (\f2\-J\fP と \f2java\fP オプションの間にスペースは入れない)。 +\f2\-J\fP θ³ץ \f2java\fP 󥿥ץ꥿˰Ϥޤ \f2java\fP ץȤ߹碌ƻȤޤ (\-J java ץδ֤˥ڡʤ) .TP 3 -\-keep または \-keepgenerated -スタブ、スケルトン、または Tie クラスのための \f2.java\fP ソースファイルを \f2.class\fP ファイルと同じディレクトリに残します。 +\-keep ޤ \-keepgenerated +֡ȥ󡢤ޤ Tie 饹Τ \f2.java\fP ե \f2.class\fP եƱǥ쥯ȥ˻Ĥޤ .TP 3 \-nowarn -警告をオフにします。このオプションを指定すると、コンパイラは警告を表示しません。 -.LP +ٹ򥪥դˤޤΥץꤹȡѥϷٹɽޤ +.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 の両方のスタブプロトコルバージョンをサポートします。生成されたクラスは両方の操作モードをサポートするために、サイズが大きくなります。 +1.1 1.2 ξ JRMP ֥ץȥСȸߴΤ륹֤ӥȥ󥯥饹ޤ(5.0 Υ꡼ǤϤΥץϥǥեȡ)줿֥饹ϡJDK 1.1 ۥޥ˥ɤ 1.1 ֥ץȥСѤJDK 1.2 ʹߤβۥޥ˥ɤ 1.2 ֥ץȥСѤޤ줿ȥ󥯥饹Ǥϡ1.1 1.2 ξΥ֥ץȥС򥵥ݡȤޤ줿饹ξ⡼ɤ򥵥ݡȤ뤿ˡ礭ʤޤ .TP 3 \-verbose -コンパイラやリンカーが、コンパイルされているクラスやロードされているクラスファイルについてのメッセージを表示するようにします。 -.LP +ѥ󥫡ѥ뤵Ƥ륯饹ɤƤ륯饹եˤĤƤΥåɽ褦ˤޤ .TP 3 \-v1.1 -1.1 JRMP スタブプロトコルバージョンのみのスタブおよびスケルトンクラスを生成します。このオプションが使用できるのは、JDK 1.1 から \f3rmic\fP ツールで生成され、アップグレードできない (さらにダイナミッククラスローディングを使用していない) 、既存の静的配備されたスタブクラスに対し、直列化互換性のあるスタブクラスを生成場合だけです。 -.LP +1.1 JRMP ֥ץȥСΤߤΥ֤ӥȥ󥯥饹ޤΥץ󤬻ѤǤΤϡJDK 1.1 \f3rmic\fP ġ졢åץ졼ɤǤʤ (˥ʥߥå饹ǥ󥰤ѤƤʤ) ¸Ū줿֥饹Фľ󲽸ߴΤ륹֥饹Ǥ .TP 3 \-v1.2 -(デフォルト) 1.2 JRMP スタブプロトコルバージョンのみのスタブクラスを生成します。スケルトンクラスは 1.2 スタブプロトコルバージョンで使用できないため、このオプションではスケルトンクラスは生成されません。生成されたスタブクラスは、JDK 1.1 仮想マシンにロードされても動作しません。 +(ǥե) 1.2 JRMP ֥ץȥСΤߤΥ֥饹ޤȥ󥯥饹 1.2 ֥ץȥСǻѤǤʤᡢΥץǤϥȥ󥯥饹ޤ줿֥饹ϡJDK 1.1 ۥޥ˥ɤƤưޤ .RE .LP -.SH "環境変数" -.LP - +.SH "Ķѿ" .LP .RS 3 .TP 3 CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。次に例を示します。 -.RS 3 - -.LP +桼饹ؤΥѥ򥷥ƥ˻ꤷޤǥ쥯ȥϥʬ䤷ޤ򼨤ޤ .nf \f3 .fl @@ -250,15 +217,12 @@ CLASSPATH \fP .fi .RE -.RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP -java(1)、javac(1)、 +java(1)javac(1) .na \f2CLASSPATH\fP @ .fi diff --git a/src/linux/doc/man/ja/rmid.1 b/src/linux/doc/man/ja/rmid.1 index 37d7d6a765767646721362d579a3ec0d0c4589ff..232cf1ad050bea6ebc0301fd2c1c082a0cc8e8a3 100644 --- a/src/linux/doc/man/ja/rmid.1 +++ b/src/linux/doc/man/ja/rmid.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH rmid 1 "02 Jun 2010" +.TH rmid 1 "14 Apr 2011" .LP -.SH "名前" -rmid \- Java RMI 起動システムデーモン +.SH "̾" +rmid \- Java RMI ưƥǡ .LP -.RS 3 - -.LP -.LP -\f3rmid\fP で起動システムデーモンを開始すると、オブジェクトを仮想マシン (VM) に登録して起動できるようになります。 .LP -.RE -.SH "形式" +\f3rmid\fP ǵưƥǡ򳫻Ϥȡ֥Ȥۥޥ (VM) ϿƵưǤ褦ˤʤޤ .LP - +.SH "" .LP .nf \f3 @@ -45,23 +39,21 @@ rmid [options] .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3rmid\fP ツールは、起動システムデーモンを開始します。起動システムデーモンを開始してからでないと、起動可能オブジェクトを起動システムに登録したり、VM 内で起動したりすることができません。起動可能なリモートオブジェクトを使ったプログラムの作成方法の詳細は、 +\f3rmid\fP ġϡưƥǡ򳫻Ϥޤưƥǡ򳫻ϤƤǤʤȡưǽ֥ȤưƥϿꡢVM ǵưꤹ뤳ȤǤޤ󡣵ưǽʥ⡼ȥ֥ȤȤäץκˡξܺ٤ϡ .na -\f2「Java RMI 仕様」\fP @ +\f2Java RMI ͡\fP @ .fi -http://java.sun.com/javase/6/docs/platform/rmi/spec/rmiTOC.htmlおよび +http://java.sun.com/javase/6/docs/platform/rmi/spec/rmiTOC.html .na -\f2「起動のチュートリアル」\fP @ +\f2ֵưΥ塼ȥꥢ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/rmi/activation/overview.htmlを参照してくだ さい。 +http://java.sun.com/javase/6/docs/technotes/guides/rmi/activation/overview.html򻲾ȤƤ .LP .LP -デーモンを起動するには、次のように、セキュリティーポリシーファイルを指定して \f2rmid\fP コマンドを実行します。 +ǡưˤϡΤ褦ˡƥݥꥷեꤷ \f2rmid\fP ޥɤ¹Ԥޤ .LP .nf \f3 @@ -73,23 +65,23 @@ http://java.sun.com/javase/6/docs/technotes/guides/rmi/activation/overview.html .LP .LP -\f3注:\fP\f2rmid\fP の Sun の 実装を実行する場合、デフォルトでは、セキュリティーポリシーファイルを指定する必要があります。 それは、起動グループ用に VM を起動するために各 \f2ActivationGroupDesc\fP 内の情報を使用できるかどうかを \f2rmid\fP が検証できるようにするためです。特に、\f2ActivationGroupDesc\fP のコンストラクタに渡される \f2CommandEnvironment\fP や任意の \f2Properties\fP によって指定されるコマンドおよびオプションは、\f2rmid\fP のセキュリティーポリシーファイルの中で明示的に許可することが必要になりました。\f2sun.rmi.activation.execPolicy\fP プロパティーの値は、起動グループ用に VM を起動するために \f2ActivationGroupDesc\fP 内の情報を使用できるかどうかを判断するときに \f2rmid\fP が使用するポリシーを決定します。 +\f3:\fP \f2rmid\fP Sun ¹Ԥ硢ǥեȤǤϡƥݥꥷեꤹɬפޤϡ \f2rmid\fP ư롼Ѥ VM ư뤿˳ \f2ActivationGroupDesc\fP ξѤǤ뤫ɤ򸡾ڤǤ褦ˤ뤿ǤäˡActivationGroupDesc Υ󥹥ȥ饯Ϥ \f2CommandEnvironment\fP Ǥդ \f2Properties\fP ˤäƻꤵ \f2ޥɤ\fPץϡ \f2rmid\fP ΥƥݥꥷեŪ˵Ĥ뤳Ȥɬפˤʤޤ\f2sun.rmi.activation.execPolicy\fP ץѥƥͤϡ \f2ư롼Ѥ VM \fP ư뤿 \f2ActivationGroupDesc\fP ξѤǤ뤫ɤȽǤȤ rmid Ѥݥꥷꤷޤ .LP .LP -\f2rmid\fP をデフォルト設定で実行すると、次のような処理が行われます。 +\f2rmid\fP ǥեǼ¹ԤȡΤ褦ʽԤޤ .LP .RS 3 .TP 2 o -アクティベータを起動し、デフォルトポート 1098 で内部レジストリを起動する +ƥ١ưǥեȥݡ 1098 쥸ȥư .TP 2 o -この内部レジストリの中で、\f2ActivationSystem\fP を \f2java.rmi.activation.ActivationSystem\fP という名前にバインドする +쥸ȥǡ \f2ActivationSystem\fP \f2java.rmi.activation.ActivationSystem Ȥ̾\fP Хɤ .RE .LP .LP -レジストリにほかのポートを指定するには、\f2rmid\fP の起動時に \f2\-port\fP オプションを指定しなければなりません。次に例を示します。 +쥸ȥˤۤΥݡȤꤹˤϡrmid εư \f2\-port\fP ץ \f2ꤷʤФʤޤ\fP򼨤ޤ .LP .nf \f3 @@ -101,44 +93,42 @@ o .LP .LP -このコマンドは、起動システムデーモンを開始し、レジストリのデフォルトポート 1099 でレジストリを開始します。 +Υޥɤϡưƥǡ򳫻Ϥ쥸ȥΥǥեȥݡ 1099 ǥ쥸ȥ򳫻Ϥޤ .LP .SS -rmid を inetd/xinetd から開始する +rmid inetd/xinetd 鳫Ϥ .LP .LP -\f2rmid\fP をコマンド行から開始するには、\f2inetd\fP (Solaris の場合)、または \f2xinetd\fP (Linux) を構成して \f2rmid\fP を必要に応じて開始する方法もあります。 +\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 によって起動されたものではないと判断し、前述のように起動します。 +\f2rmid\fP 򳫻ϤȡSystem.inheritedChannel ᥽åɤƤӽФơѾ줿ͥ ( \f2inetd\fP/\f2xinetd\fP Ѿ) 褦Ȥޤ Ѿ줿ͥ뤬 \f2null\fP Ǥ뤫 \f2java.nio.channels.ServerSocketChannel\fP Υ󥹥󥹤Ǥʤä硢 \f2rmid\fP rmid ϤΥͥ \f2inetd\fP/\f2xinetd\fP ˤäƵư줿ΤǤϤʤȽǤҤΤ褦˵ưޤ .LP .LP -継承されたチャンネルが \f2ServerSocketChannel\fP インスタンスである場合は、エクスポートするリモートオブジェクト、つまり \f2java.rmi.activation.ActivationSystem\fP がバインドされているレジストリと \f2java.rmi.activation.Activator\fP リモートオブジェクトに対する要求を受信するサーバーソケットとして、\f2ServerSocketChannel\fP から取得した \f2java.net.ServerSocket\fP を \f2rmid\fP では使用します。このモードでは、\f2rmid\fP の動作は、次のことを除いて、 コマンド行から起動した場合と同じです。 +Ѿ줿ͥ뤬 \f2ServerSocketChannel\fP 󥹥󥹤Ǥϡ \f2rmid\fP ϥݡȤ⡼ȥ֥ȡĤޤ java.rmi.activation.ActivationSystem ХɤƤ쥸ȥ java.rmi.activation.Activator ⡼ȥ֥ȤФ׵륵СåȤȤơServerSocketChannel java.net.ServerSocket Ѥޤ Υ⡼ɤǤϡ \f2rmid\fP ưϡΤȤơ ޥɹԤ鵯ưƱǤ .LP .RS 3 .TP 2 o -\f2System.err\fP に対する出力は、ファイルにリダイレクトされる。このファイルは \f2java.io.tmpdir\fP システムプロパティーで指定されるディレクトリ (通常は \f2/var/tmp\fP または \f2/tmp\fP) にある。 ファイル名の接頭辞は \f2rmid\-err\fP で、接尾辞は \f2"tmp"\fP である +\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 はエラーメッセージを出して終了する +\f2\-port\fP ץϵݤ롣Υץꤹȡ \f2rmid\fP ϥ顼åФƽλ .TP 2 o -\f2\-log\fP オプションは必須。このオプションを指定しないと、\f2rmid\fP はエラーメッセージを出して終了する +\f2\-log\fP ץɬܡΥץꤷʤȡ \f2rmid\fP ϥ顼åФƽλ .RE .LP .LP -必要に応じてサービスを開始するように設定する詳細については、\f2inetd\fP (Solaris) または \f2xinetd\fP (Linux) のマニュアルページを参照してください。 +ɬפ˱ƥӥ򳫻Ϥ褦ꤹܺ٤ˤĤƤϡ \f2inetd\fP (Solaris) ޤ \f2xinetd\fP (Linux) Υޥ˥奢ڡ򻲾ȤƤ .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-C<someCommandLineOption> -\f2rmid\fP の子プロセス (起動グループ) が作成されたときに、それぞれの子プロセスにコマンド行引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システムデーモ ンによって生成される各仮想マシンにプロパティーを渡すことができます。 +\f2rmid\fP λҥץ (ư롼) 줿Ȥˡ줾λҥץ˥ޥɹ԰ȤϤ륪ץꤷޤȤСΤ褦˻ꤹȡưƥǡˤäƲۥޥ˥ץѥƥϤȤǤޤ .nf \f3 .fl @@ -146,7 +136,7 @@ o .fl \fP .fi -コマンド行引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のようなコマンドを実行できます。 +ޥɹ԰ҥץϤǽϡǥХåԤǤȤСΤ褦ʥޥɤ¹ԤǤޤ .nf \f3 .fl @@ -154,11 +144,11 @@ o .fl \fP .fi -このコマンドにより、すべての子 VM でサーバー呼び出しのログが作成されるようになります。 +Υޥɤˤꡢ٤Ƥλ VM ǥСƤӽФΥ褦ˤʤޤ .LP .TP 3 \-J<someCommandLineOption> -\f2rmid\fP を実行している \f2java\fP インタプリタに渡すオプションを指定します。たとえば、\f2rmid\fP が \f2rmid.policy\fP という名前のポリシーファイルを使用するように指定するには、\f2rmid\fP のコマンド行で \f2\-J\fP オプションを使って、\f2java.security.policy\fP プロパティーを定義します。 次に例を示します。 +rmid ¹ԤƤ \f2java\fP 󥿥ץ꥿Ϥץꤷޤ ȤС \f2rmid\fP \f2rmid.policy\fP Ȥ̾ΥݥꥷեѤ褦˻ꤹˤϡrmid ΥޥɹԤ \f2\-J\fP ץȤäơ \f2java.security.policy\fP ץѥƥޤ 򼨤ޤ .nf \f3 .fl @@ -168,16 +158,15 @@ o .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 です。 それぞれの値について、このあと説明します。 -.LP +ư롼פ¹Ԥ뤳Ȥˤʤ 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 +\f3default (ޤϡΥץѥƥֻꤵƤʤ׾)\fP .LP -デフォルトの \f2execPolicy\fP の場合、\f2rmid\fP が実行できるのは、\f2rmid\fP が使用する セキュリティーポリシーファイルの中で、実行する権限が \f2rmid\fP に与えられているコマンドおよびコマンド行オプションだけです。「デフォルト」の実行ポリシーで使用できるのは、デフォルトの起動グループ実装だけです。 +ǥեȤ \f2execPolicy\fP ξ硢 \f2rmid\fP ¹ԤǤΤϡ \f2rmid\fP Ѥ륻ƥݥꥷեǡ¹Ԥ븢¤ \f2rmid\fP ͿƤ륳ޥɤӥޥɹԥץǤ֥ǥեȡפμ¹ԥݥꥷǻѤǤΤϡǥեȤεư롼׼Ǥ .LP -\f2rmid\fP は、起動グループ用の VM を起動するときに、そのグループについて登録された起動グループ記述子である \f2ActivationGroupDesc\fP 内の情報を使用します。グループ記述子は、\f2ActivationGroupDesc.CommandEnvironment\fP を指定します (省略可能)。 これには、起動グループを開始する「コマンド」と、そのコマンド行に追加できるコマンド行「オプション」が含まれています。デフォルトでは、\f2rmid\fP は、\f2java.home\fP にある \f2java\fP コマンドを使用します。グループ記述子には、オプションとしてコマンド行に追加される「プロパティー」オーバーライドも含まれています。 このプロパティーは、次のように定義します。 +\f2rmid ϡ\fP ư롼Ѥ VM ưȤˡΥ롼פˤĤϿ줿ư롼׵һҤǤ \f2ActivationGroupDesc\fP ξѤޤ롼׵һҤϡ \f2ActivationGroupDesc.CommandEnvironment\fP ꤷޤ (άǽ)ˤϡư롼פ򳫻Ϥ֥ޥɡפȡΥޥɹԤɲäǤ륳ޥɹԡ֥ץפޤޤƤޤǥեȤǤϡ \f2rmid \fP java.home ˤ \f2java\fP ޥɤѤޤ 롼׵һҤˤϡץȤƥޥɹԤɲä֥ץѥƥץС饤ɤޤޤƤޤΥץѥƥϡΤ褦ޤ .nf \f3 .fl @@ -186,33 +175,33 @@ o \fP .fi .LP -アクセス権 \f2com.sun.rmi.rmid.ExecPermission\fP を使用すると、グループ記述子の \f2CommandEnvironment\fP で指定されたコマンドを実行して起動グループを開始する権限を、\f2rmid\fP に対して許可することができます。アクセス権 \f2com.sun.rmi.rmid.ExecOptionPermission\fP を使用すると、グループ記述子でプロパティーオーバーライドとして指定されたコマンド行オプション、または \f2CommandEnvironment\fP でオプションとして指定されたコマンド行オプションを、起動グループを開始するときに \f2rmid\fP が使用できるようになります。 + \f2com.sun.rmi.rmid.ExecPermission\fP Ѥȡ \f2rmid\fP Фơ롼׵һҤ \f2CommandEnvironment\fP ǻꤵ줿ޥɤ¹ԤƵư롼פ򳫻Ϥ븢¤Ĥ뤳ȤǤޤ \f2com.sun.rmi.rmid.ExecOptionPermission\fP Ѥȡ롼׵һҤǥץѥƥС饤ɤȤƻꤵ줿ޥɹԥץ󡢤ޤ \f2CommandEnvironment\fP ǥץȤƻꤵ줿ޥɹԥץ򡢵ư롼פ򳫻ϤȤ rmid ѤǤ褦ˤʤޤ .LP -\f2rmid\fP にさまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。 つまり、すべてのコードソースに対して許可します。 +\f2rmid \fP ޤޤʥޥɤӥץ¹Ԥ븢¤Ĥϡ \f2ExecPermission\fP \f2ExecOptionPermission\fP Ū˵ĤɬפޤĤޤꡢ٤ƤΥɥФƵĤޤ .RS 3 .TP 3 ExecPermission -\f2ExecPermission\fP クラスは、起動グループを開始するために \f2rmid\fP が特定の「コマンド」を実行する権限を表します。 +\f2ExecPermission\fP 饹ϡư롼פ򳫻Ϥ뤿 \f2rmid \fP Ρ֥ޥɡפ¹Ԥ븢¤ɽޤ .LP -\f3構文\fP +\f3ʸ\fP .br -\f2ExecPermission\fP の「名前」は、\f2rmid\fP に実行を許可するコマンドのパス名です。「/*」 (「/」はファイル区切り文字 \f2File.separatorChar\fP) で終わるパス名は、そのディレクトリに含まれるすべてのファイルを示します。「/\-」で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を示します。パス名に特別なトークン「<<ALL FILES>>」を指定した場合は、\f3任意の\fPファイルを示します。 +\f2ExecPermission\fP Ρ̾פϡ \f2rmid\fP ˼¹ԤĤ륳ޥɤΥѥ̾Ǥ/* (/פϥեڤʸ File.separatorChar) ǽѥ̾ϡΥǥ쥯ȥ˴ޤޤ뤹٤ƤΥե򼨤ޤ /\-פǽѥ̾ϡΥǥ쥯ȥ˴ޤޤ뤹٤ƤΥեȥ֥ǥ쥯ȥ (ƵŪ) 򼨤ޤѥ̤̾ʥȡ<<ALL FILES>>פꤷϡ\f3Ǥդ\fPե򼨤ޤ .LP -\f3注:\fP「*」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルを表します。 また、「\-」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルと、現在のディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を表します。 +\f3:\fP *פ 1 ĻꤷΥѥ̾ϡߤΥǥ쥯ȥΤ٤ƤΥեɽޤޤ\-פ 1 ĻꤷΥѥ̾ϡߤΥǥ쥯ȥΤ٤ƤΥեȡߤΥǥ쥯ȥ˴ޤޤ뤹٤ƤΥեȥ֥ǥ쥯ȥ (ƵŪ) ɽޤ .TP 3 ExecOptionPermission -\f2ExecOptionPermission\fP クラスは、起動グループを開始するときに \f2rmid\fP が特定のコマンド行「オプション」を使用できる権限を表します。\f2ExecOptionPermission\fP の「名前」は、コマンド行オプションの値です。 +\f2ExecOptionPermission\fP 饹ϡư롼פ򳫻ϤȤ \f2rmid ϡư롼פ򳫻Ϥ륳ޥɤޤäڤޤ\fP Υޥɹԡ֥ץפѤǤ븢¤ɽޤ \f2ExecOptionPermission\fP Ρ̾פϡޥɹԥץͤǤ .LP -\f3構文\fP +\f3ʸ\fP .br -オプションでは、ワイルドカードが限定的にサポートされます。アスタリスクは、ワイルドカードマッチを表します。 アスタリスクは、オプション名そのものとして使用できます。 つまり、任意のオプションを表すことができます。 また、オプション名の末尾に使用することもできます。 ただし、「.」か「=」の直後にアスタリスクを指定する必要があります。 +ץǤϡ磻ɥɤŪ˥ݡȤޤꥹϡ磻ɥɥޥåɽޤ ꥹϡץ̾ΤΤȤƻѤǤޤ ĤޤꡢǤդΥץɽȤǤޤ ޤץ̾˻Ѥ뤳ȤǤޤ .פ=פľ˥ꥹꤹɬפޤ .LP -例を示します。「*」、「\-Dfoo.*」、「\-Da.b.c=*」は有効ですが、「*foo」、「\-Da*b」、「ab*」は無効です。 +򼨤ޤ*ס\-Dfoo.*ס\-Da.b.c=*פͭǤ*fooס\-Da*bסab*פ̵Ǥ .TP 3 -rmid のポリシーファイル -\f2rmid\fP にさまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。 つまり、すべてのコードソースに対して許可します。これらのアクセス権をチェックするのは \f2rmid\fP だけなので、これらのアクセス権を汎用的に許可しても安全です。 +rmid Υݥꥷե +\f2rmid \fP ޤޤʥޥɤӥץ¹Ԥ븢¤Ĥϡ \f2ExecPermission\fP \f2ExecOptionPermission\fP Ū˵ĤɬפޤĤޤꡢ٤ƤΥɥФƵĤޤΥåΤ \f2rmid\fP ʤΤǡΥŪ˵ĤƤǤ .LP -\f2rmid\fP に各種の実行権限を許可するポリシーファイルの例を、次に示します。 +rmid ˳Ƽμ¹Ը¤Ĥݥꥷե򡢼˼ޤ .nf \f3 .fl @@ -220,13 +209,7 @@ grant { .fl permission com.sun.rmi.rmid.ExecPermission .fl - "/files/apps/java/jdk1.2.2/solaris/bin/java"; -.fl - -.fl - permission com.sun.rmi.rmid.ExecPermission -.fl - "/files/apps/java/jdk1.2.2/solaris/bin/java_g"; + "/files/apps/java/jdk1.7.0/solaris/bin/java"; .fl .fl @@ -256,29 +239,21 @@ grant { .fl \fP .fi -最初の 2 つの付与されているアクセス権は、\f2rmid\fP に対し、パス名により明示的に指定される \f2java\fP コマンドおよび \f2java_g\fP コマンドの 1.2.2 バージョンの実行を許可します。デフォルトでは、\f2java.home\fP にあるバージョンの \f2java\fP コマンド (\f2rmid\fP が使用するのと同じバージョン) が使用されるため、そのコマンドは、ポリシーファイルで指定する必要はありません。3 番目のアクセス権は、\f2rmid\fP に対して、ディレクトリ \f2/files/apps/rmidcmds\fP 内の任意のコマンドの実行権限を許可します。 -.LP -4 番目のアクセス権 \f2ExecOptionPermission\fP は、\f2rmid\fP に対して、セキュリティーポリシーファイルを \f2/files/policies/group.policy\fP として定義している起動グループの開始を許可します。5 番目のアクセス権は、起動グループが \f2java.security.debug\fP プロパティーを使用することを許可しています。最後のアクセス権は、起動グループが \f2sun.rmi\fP というプロパティー名の階層内の任意のプロパティーを使用することを許可しています。 +ǽͿƤ륢ϡ \f2rmid\fP Фѥ̾ˤŪ˻ꤵ \f2java\fP ޥɤ 1.7.0 Сμ¹ԤĤޤǥեȤǤϡjava.home ˤС \f2java\fP ޥ ( \f2rmid\fP ѤΤƱС) Ѥ뤿ᡢΥޥɤϡݥꥷեǻꤹɬפϤޤ2 ܤΥϡ \f2rmid\fP Фơǥ쥯ȥ \f2/files/apps/rmidcmds\fP ǤդΥޥɤμ¹Ը¤Ĥޤ .LP -ポリシーファイルを指定して \f2rmid\fP を起動するには、\f2rmid\fP のコマンド行で \f2java.security.policy\fP プロパティーを指定する必要があります。 次に例を示します。 -.RS 3 - +3 ܤͿƤ륢 \f2ExecOptionPermission\fP ϡ \f2rmid\fP Фơƥݥꥷե \f2/files/policies/group.policy\fP ȤƤ뵯ư롼פγϤĤޤΥϡư롼פ \f2java.security.debug\fP ץѥƥѤ뤳ȤĤƤޤǸΥϡư롼פ \f2sun.rmi\fP Ȥץѥƥ̾γǤդΥץѥƥѤ뤳ȤĤƤޤ .LP +ݥꥷեꤷ \f2rmid\fP ưˤϡrmid ΥޥɹԤ \f2java.security.policy\fP ץѥƥꤹɬפޤ 򼨤ޤ .LP -\f2rmid \-J\-Djava.security.policy=rmid.policy\fP -.LP -.RE +\f2rmid \-J\-Djava.security.policy=rmid.policy\fP .RE .TP 2 o -.LP -.TP 2 -o \f4<policyClassName>\fP .LP -デフォルトの動作では十分な柔軟性が得られない場合、管理者は、\f2rmid\fP の起動時に、\f2checkExecCommand\fP メソッドが所属するクラスの名前を指定して、rmid が実行するコマンドをチェックすることができます。 +ǥեȤưǤϽʬʽʤ硢Ԥϡ \f2rmid\fP εưˡ \f2checkExecCommand\fP ᥽åɤ°륯饹̾ꤷơrmid ¹Ԥ륳ޥɤå뤳ȤǤޤ .LP -\f2policyClassName\fP には、引数なしのコンストラクタを持ち、次のような \f2checkExecCommand\fP メソッドを実装している public クラスを指定します。 +\f2policyClassName\fP ˤϡʤΥ󥹥ȥ饯Τ褦 \f2checkExecCommand\fP ᥽åɤƤ public 饹ꤷޤ .nf \f3 .fl @@ -290,22 +265,21 @@ o .fl \fP .fi -起動グループを開始する前に、\f2rmid\fP は、ポリシーの \f2checkExecCommand\fP メソッドを呼び出します。このとき、起動グループの記述子と、起動グループを開始するための完全なコマンドを含む配列をそのメソッドに渡します。\f2checkExecCommand\fP が \f2SecurityException\fP をスローすると、\f2rmid\fP はその起動グループを開始せず、オブジェクトの起動を試行している呼び出し側には \f2ActivationException\fP がスローされます。 -.LP +ư롼פ򳫻Ϥˡ \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 は、起動グループを開始するコマンドをまったく検証しません。 +\f2sun.rmi.activation.execPolicy\fP ץѥƥͤnoneפξ硢 \f2rmid\fP ϡư롼פ򳫻Ϥ륳ޥɤޤäڤޤ .RE .LP .TP 3 \-log dir -起動システムデーモンがデータベースおよび関連情報を書き込むのに使うディレクトリの名前を指定します。デフォルトでは、\f2rmid\fP コマンドを実行したディレクトリに、\f2log\fP というログディレクトリが作成されます。 +ưƥǡ󤬥ǡ١ӴϢ񤭹Τ˻Ȥǥ쥯ȥ̾ꤷޤǥեȤǤϡrmid ޥɤ¹Ԥǥ쥯ȥˡ \f2log\fP Ȥǥ쥯ȥ꤬ޤ .LP .TP 3 \-port port -\f2rmid\fP のレジストリが使うポートを指定します。起動システムデーモンは、このレジストリの中で、\f2java.rmi.activation.ActivationSystem\fP という名前で\f2ActivationSystem\fP をバインドします。したがって、ローカルマシン上の \f2ActivationSystem\fP は、次のように \f2Naming.lookup\fP メソッドを呼び出すことによって取得できます。 +\f2rmid\fP Υ쥸ȥ꤬ȤݡȤꤷޤưƥǡϡΥ쥸ȥǡ \f2java.rmi.activation.ActivationSystem\fP Ȥ̾ActivationSystem Хɤޤäơޥ \f2ActivationSystem\fP ϡΤ褦 \f2Naming.lookup\fP ᥽åɤƤӽФȤˤäƼǤޤ .nf \f3 .fl @@ -322,16 +296,16 @@ o .fi .TP 3 \-stop -\f2\-port\fP オプションによって指定されたポートの、現在の \f2rmid\fP 呼び出しを停止します。ポートが指定されていない場合は、ポート 1098 で実行されている \f2rmid\fP を停止します。 +\-port ץˤäƻꤵ줿ݡȤΡߤ \f2rmid\fP ƤӽФߤޤ ݡȤꤵƤʤϡݡ 1098 Ǽ¹ԤƤ \f2rmid\fP ߤޤ .RE -.SH "環境変数" -.LP +.LP +.SH "Ķѿ" .LP .RS 3 .TP 3 CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。例を示します。 +桼饹ؤΥѥ򥷥ƥ˻ꤷޤǥ쥯ȥϥʬ䤷ޤ򼨤ޤ .nf \f3 .fl @@ -342,15 +316,13 @@ CLASSPATH .RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP -rmic(1)、 +rmic(1) .na \f2CLASSPATH\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath、java(1) +http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathjava(1) .LP diff --git a/src/linux/doc/man/ja/rmiregistry.1 b/src/linux/doc/man/ja/rmiregistry.1 index 7a36ac9e5d29ce6f9fc5aa1ad6d7e747fdef6add..864ccc7837523cbf4105eb02057e7367f5b024c6 100644 --- a/src/linux/doc/man/ja/rmiregistry.1 +++ b/src/linux/doc/man/ja/rmiregistry.1 @@ -19,22 +19,18 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH rmiregistry 1 "02 Jun 2010" +.TH rmiregistry 1 "14 Apr 2011" .LP -.SH "名前" -rmiregistry \- Java リモートオブジェクトレジストリ +.SH "̾" +rmiregistry \- Java ⡼ȥ֥ȥ쥸ȥ .LP .RS 3 - -.LP -.LP -\f3rmiregistry\fP コマンドは、現在のホストの指定したポート上にリモートオブジェクトレジストリを開始します。 -.LP +\f3rmiregistry\fP ޥɤϡߤΥۥȤλꤷݡȾ˥⡼ȥ֥ȥ쥸ȥ򳫻Ϥޤ .RE -.SH "形式" -.LP +.LP +.SH "" .LP .nf \f3 @@ -45,52 +41,43 @@ rmiregistry [\fP\f4port\fP\f3] .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3rmiregistry\fP コマンドは、現在のホストの指定 \f2port\fP 上にリモートオブジェクトレジストリを作成し、開始します。\f2port\fP の指定を省略した場合、レジストリはポート 1099 で開始します。\f3rmiregistry\fP コマンドに、出力機能はありません。通常、これはバックグラウンドで実行されます。例を示します。 +\f3rmiregistry\fP ޥɤϡߤΥۥȤλ \f2port\fP ˥⡼ȥ֥ȥ쥸ȥϤޤ\f2port\fP λά硢쥸ȥϥݡ 1099 dzϤޤ\f3rmiregistry\fP ޥɤˡϵǽϤޤ̾ϥХå饦ɤǼ¹Ԥޤ򼨤ޤ .LP .LP \f2rmiregistry&\fP .LP .LP -リモートオブジェクトレジストリは、ブートストラップのネームサービスです。 同一ホストの RMI サーバーが、リモートオブジェクトを名前にバインドするために使用されます。次に、ローカルおよびリモートホストのクライアントはリモートオブジェクトを検索し、リモートメソッドの呼び出しを行います。 -.LP +⡼ȥ֥ȥ쥸ȥϡ֡ȥȥåפΥ͡ॵӥǤƱۥȤ RMI С⡼ȥ֥Ȥ̾˥Хɤ뤿˻Ѥޤˡ뤪ӥ⡼ȥۥȤΥ饤Ȥϥ⡼ȥ֥Ȥ򸡺⡼ȥ᥽åɤθƤӽФԤޤ .LP -レジストリは、一般的に、最初のリモートオブジェクトの位置を指定します。 そこで、アプリケーションはメソッドを呼び出す必要があります。代わって、そのオブジェクトはアプリケーション指定のサポートを提供し、他のオブジェクトを探します。 .LP +쥸ȥϡŪˡǽΥ⡼ȥ֥Ȥΰ֤ꤷޤ ǡץꥱϥ᥽åɤƤӽФɬפޤäơΥ֥ȤϥץꥱΥݡȤ󶡤¾Υ֥Ȥõޤ .LP -\f2java.rmi.registry.LocateRegistry\fP クラスのメソッドは、ローカルホスト、またはローカルホストとポートで動作するレジストリを取得するために使用されます。 .LP +\f2java.rmi.registry.LocateRegistry\fP 饹Υ᥽åɤϡۥȡޤϥۥȤȥݡȤư쥸ȥ뤿˻Ѥޤ .LP -\f2java.rmi.Naming\fP クラスの URL ベースのメソッドは、レジストリで動作し、任意のホストおよびローカルホスト上のリモートオブジェクトの検索に使用されます。リモートオブジェクトに単純な (文字列) 名前をバインドしたり、新しい名前をリバインド (古いバインドにオーバーライド) します。 またリモートオブジェクトをアンバインドしたり、レジストリにバインドされた URL を出力します。 .LP -.SH "オプション" +\f2java.rmi.Naming\fP 饹 URL ١Υ᥽åɤϡ쥸ȥưǤդΥۥȤӥۥȾΥ⡼ȥ֥Ȥθ˻Ѥޤ⡼ȥ֥Ȥñ (ʸ) ̾Хɤꡢ̾Х (ŤХɤ˥С饤) ޤޤ⡼ȥ֥Ȥ򥢥Хɤꡢ쥸ȥ˥Хɤ줿 URL Ϥޤ .LP - +.SH "ץ" .LP .RS 3 .TP 3 \-J -\f2\-J\fP の後ろに続くオプションを \f2java\fP インタプリタに引き渡します。 \f2java\fP オプションと組み合わせて使います (\f2\-J\fP と \f2java\fP オプションの間にスペースは入れない)。 +\f2\-J\fP θ³ץ \f2java\fP 󥿥ץ꥿˰Ϥޤ \f2java\fP ץȤ߹碌ƻȤޤ (\-J java ץδ֤˥ڡʤ) .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP - -.LP -.LP -java(1)、 +java(1) .na \f2java.rmi.registry.LocateRegistry\fP @ .fi -http://java.sun.com/javase/6/docs/api/java/rmi/registry/LocateRegistry.html、および +http://java.sun.com/javase/6/docs/api/java/rmi/registry/LocateRegistry.html .na \f2java.rmi.Naming\fP @ .fi -http://java.sun.com/javase/6/docs/api/java/rmi/Naming.html -.LP - +http://java.sun.com/javase/6/docs/api/java/rmi/Naming.html diff --git a/src/linux/doc/man/ja/schemagen.1 b/src/linux/doc/man/ja/schemagen.1 index 6906d33f850a9edd180c6e80ccf9ce203e9c081f..b9cb1a27c65a5b6d52869726832d81fe945ef85e 100644 --- a/src/linux/doc/man/ja/schemagen.1 +++ b/src/linux/doc/man/ja/schemagen.1 @@ -19,110 +19,106 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH schemagen 1 "02 Jun 2010" +.TH schemagen 1 "14 Apr 2011" .LP -.SH "名前" -schemagen \- XML バインドのための Java(TM) アーキテクチャースキーマジェネレータ +.SH "̾" +schemagen \- XML ХɤΤ Java(TM) ƥ㡼ޥͥ졼 .LP .LP -\f3仕様バージョン:\fP 2.1 +\f3ͥС:\fP 2.1 .br -\f3実装バージョン:\fP 2.1.3 +\f3С:\fP 2.1.3 .LP -.SS -schemagen の起動 +.SH "schemagen εư" .LP .LP -スキーマジェネレータは、ユーザーのプラットフォームの \f2bin\fP ディレクトリにある \f2schemagen\fP シェルスクリプトを使って起動できます。 +ޥͥ졼ưˤϡ桼Υץåȥե bin ǥ쥯ȥˤ \f2Ŭڤ schemagen 륹ץ\fP \f2ޤ\fP .LP .LP -現在のスキーマジェネレータは、Java ソースファイルとクラスファイルのいずれも処理できます。 +ߤΥޥͥ졼ϡJava եȥ饹եΤǤޤ .LP .LP -また、スキーマジェネレータを実行するための Ant タスクも用意されています。 +ޤޥͥ졼¹Ԥ뤿 Ant ѰդƤޤ .na -\f2schemagen を Ant とともに使用する\fP @ +\f2schemagen Ant ȤȤ˻Ѥ\fP @ .fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlための手順を参照してください。 -.LP -.RS 3 - +https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlμ򻲾ȤƤ .LP .nf \f3 .fl % schemagen.sh Foo.java Bar.java ... .fl -注: Writing schema1.xsd +Note: Writing schema1.xsd .fl \fP .fi -.RE .LP .LP -ユーザーの Java ソース/クラスがほかのクラスを参照している場合、システムの CLASSPATH 環境変数経由でそれらのクラスにアクセスできるようになっているか、あるいは \f2\-classpath\fP/\f2\-cp\fP オプションを使ってそれらのクラスをツールに指定する必要があります。そうしないと、スキーマの生成時にエラーが発生します。 +桼 Java /饹ۤΥ饹򻲾ȤƤ硢ƥ ĶѿͳǤΥ饹˥Ǥ褦ˤʤäƤ뤫뤤 \f2\-classpath\fP/\f2\-cp\fP ȤäƤΥ饹ġ˻ꤹɬפޤʤȡޤ˥顼ȯޤ .LP -.RS 3 - -.LP -\f3コマンド行オプション\fP -.LP -.RS 3 - +.SS +ޥɹԥץ .LP .nf \f3 .fl -使用方法: schemagen [\-options ...] <java files> +ˡ: schemagen [\-options ...] <java files> .fl .fl -オプション: +ץ: +.fl + \-d <path> : ץå javac ˤä륯饹եγǼꤷޤ +.fl + \-cp <path> : 桼եθꤷޤ +.fl + \-classpath <path> : 桼եθꤷޤ .fl - \-d <path> : プロセッサと javac 生成のクラスファイルを置く場所を指定します。 + \-encoding <encoding> : apt/javac ƤӽФ˻Ѥ륨󥳡ǥ󥰤ꤷޤ .fl - \-cp <path> : ユーザー指定ファイルの検索場所を指定します。 + +.fl + \-episode <file> : ̥ѥѤΥԥɥեޤ .fl - \-classpath <path> : ユーザー指定ファイルの検索場所を指定します。 + \-version : Сɽޤ .fl - \-help : この使用方法に関するメッセージを表示します。 + \-help : λˡ˴ؤåɽޤ .fl \fP .fi -.RE .LP -.RE -.SS -生成されるリソースファイル +.SH "꥽ե" .LP .LP -現在のスキーマジェネレータは単純に、Java クラス内で参照されている名前空間ごとに 1 つのスキーマファイルを作成します。生成されるスキーマファイルの名前を制御する方法は、現時点では存在しません。そうした目的には、 +ߤΥޥͥ졼ñˡJava 饹ǻȤƤ֤̾Ȥ 1 ĤΥޥեޤ륹ޥե̾椹ˡϡǤ¸ߤޤ󡣤Ūˤϡ .na -\f2スキーマジェネレータの Ant タスク\fP @ +\f2ޥͥ졼 ant \fP @ .fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlを使用してください。 +https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlѤƤ .LP -.SH "関連項目" +.SH "̾" +Ϣ .LP .RS 3 .TP 2 o -スキーマジェネレータの実行 (schemagen):[ +ޥͥ졼μ¹ (schemagen): [ .na -\f2コマンド行の命令\fP @ +\f2ޥɹԤ̿\fP @ .fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagen.html、 +https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagen.html .na -\f2SchemaGen を Ant とともに使用する\fP @ +\f2SchemaGen Ant ȤȤ˻Ѥ\fP @ .fi https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.html] .TP 2 o .na -\f2XML バインドのための JavaTM アーキテクチャー (JAXB)\fP @ +\f2XML ХɤΤ JavaTM ƥ㡼 (JAXB)\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/xml/jaxb/index.html .RE diff --git a/src/linux/doc/man/ja/serialver.1 b/src/linux/doc/man/ja/serialver.1 index abbaa0e5e2f0f2c580a382351720b2a218277b4c..4929593320c492f143641c5273b7586b29d84f75 100644 --- a/src/linux/doc/man/ja/serialver.1 +++ b/src/linux/doc/man/ja/serialver.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH serialver 1 "02 Jun 2010" +.TH serialver 1 "14 Apr 2011" .LP -.SH "名前" -serialver \- シリアルバージョンコマンド +.SH "̾" +serialver \- ꥢС󥳥ޥ .LP -.RS 3 - .LP +\f3serialver\fP ޥɤ \f2serialVersionUID\fP ֤ޤ .LP -\f3serialver\fP コマンドは \f2serialVersionUID\fP を返します。 -.LP -.RE -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -43,76 +37,56 @@ serialver \- シリアルバージョンコマンド .fl .fi -.LP -.RS 3 - .LP .RS 3 .TP 3 options -このドキュメントで説明されているコマンド行オプションです。 +ΥɥȤƤ륳ޥɹԥץǤ .TP 3 classnames -1 つ以上のクラス名です。 -.RE - -.LP +1 İʾΥ饹̾Ǥ .RE -.SH "説明" -.LP .LP +.SH "" .LP -\f3serialver\fP は、1 つ以上のクラスの \f2serialVersionUID\fP を、展開しているクラスへコピーするのに適した形式で返します。引数を指定しないで呼び出すと、使用方法が表示されます。 .LP -.SH "オプション" +\f3serialver\fP ϡ1 İʾΥ饹 \f2serialVersionUID\fP ŸƤ륯饹إԡΤŬ֤ޤꤷʤǸƤӽФȡˡɽޤ .LP - +.SH "ץ" .LP .RS 3 .TP 3 -\-classpath <: で区切られたディレクトリと zip や jar ファイル> -アプリケーションのクラスおよびリソースの検索パスを設定します。 +\-classpath <: Ƕڤ줿ǥ쥯ȥ zip jar ե> +ץꥱΥ饹ӥ꥽θѥꤷޤ .RE .LP .RS 3 .TP 3 \-show -簡単なユーザーインタフェースを表示します。完全指定のクラス名を入力して、Enter キーか [Show] ボタンを押し、シリアルバージョン UID を表示します。 +ñʥ桼󥿥եɽޤΥ饹̾ϤơEnter Showץܥ򲡤ꥢС UID ɽޤ .TP 3 \-Joption -Java 仮想マシンに \f2option\fP を渡します。 \f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ .RE .LP -.SH "注" +.SH "" .LP - .LP -.LP -\f3serialver\fP コマンドは、指定されたクラスをその仮想マシン内に読み込んで初期化しますが、デフォルトではセキュリティーマネージャーの設定は行いません。信頼できないクラスとともに \f3serialver\fP を実行する場合には、次のオプションを使ってセキュリティーマネージャーを設定できます。 -.LP -.RS 3 - +\f3serialver\fP ޥɤϡꤵ줿饹򤽤βۥޥɤ߹ǽޤǥեȤǤϥƥޥ͡㡼ϹԤޤ󡣿Ǥʤ饹ȤȤ \f3serialver\fP ¹ԤˤϡΥץȤäƥƥޥ͡㡼Ǥޤ .LP .LP \f2\-J\-Djava.security.manager\fP .LP -.RE .LP -また、必要であれば、次のオプションを使ってセキュリティーポリシーを指定できます。 -.LP -.RS 3 - +ޤɬפǤСΥץȤäƥƥݥꥷǤޤ .LP .LP \f2\-J\-Djava.security.policy=<policy file>\fP .LP -.RE -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP .na diff --git a/src/linux/doc/man/ja/servertool.1 b/src/linux/doc/man/ja/servertool.1 index 2bf60b6f9286df3433aa06ab5a44838b1c261098..1cb919bca170bdb8397ad9e2e16b9cf5b561fe28 100644 --- a/src/linux/doc/man/ja/servertool.1 +++ b/src/linux/doc/man/ja/servertool.1 @@ -19,20 +19,14 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH servertool 1 "02 Jun 2010" +.TH servertool 1 "14 Apr 2011" .LP -.SH "名前" -servertool \- Java(TM) IDL サーバーツール +.SH "̾" +servertool \- Java(TM) IDL Сġ .LP -.RS 3 - -.LP -\f3servertool\fP はアプリケーションプログラマが、持続サーバーの登録、登録解除、起動、および停止を行うためのコマンド行インタフェースを提供します。 -.RE -.SH "形式" -.LP - +\f3servertool\fP ϥץꥱץޤ³СϿϿưߤԤΥޥɹԥ󥿥ե󶡤ޤ +.SH "" .LP .nf \f3 @@ -44,84 +38,76 @@ servertool \-ORBInitialPort \fP\f4nameserverport\fP\f3 \fP\f3options\fP\f3 [ \fP .LP .LP -コマンドを入力しないで \f2servertool\fP を起動すると、コマンド行ツールとして \f2servertool >\fP プロンプトが表示されます。\f2servertool >\fP プロンプトにコマンドを入力します。 -.LP +ޥɤϤʤ \f2servertool\fP ưȡޥɹԥġȤ \f2servertool >\fP ץץȤɽޤ\f2servertool >\fP ץץȤ˥ޥɤϤޤ .LP -コマンドを入力して \f2servertool\fP を起動すると、Java IDL サーバーツールが起動し、コマンドを実行して終了します。 .LP +ޥɤϤ \f2servertool\fP ưȡJava IDL Сġ뤬ưޥɤ¹Ԥƽλޤ .LP -\f2\-ORBInitialPort\fP \f2nameserverport\fP オプションは\f3必須\fPです。\f2nameserverport\fP の値には、\f2orbd\fP が実行され、着信要求を待機しているポートを指定する必要があります。Solaris ソフトウェアの使用時は、1024 より小さいポートでプロセスを開始する場合は、root ユーザーになる必要があります。 このため、\f2nameserverport\fP として 1024 または 1024 より大きいポートを使用することをお勧めします。 .LP -.SH "説明" -.LP - +\f2\-ORBInitialPort\fP \f2nameserverport\fP ץ\f3ɬ\fPǤ \f2nameserverport\fP ͤˤϡ\f2orbd\fP ¹Ԥ졢忮׵ԵƤݡȤꤹɬפޤSolaris եȥѤ硢1024 꾮ݡȾǥץ򳫻Ϥˤϡroot 桼ˤʤɬפޤΤᡢ\f2nameserverport\fPȤ 1024 ʾΥݡֹѤ뤳Ȥ򤪴ᤷޤ .LP +.SH "" .LP -\f2servertool\fP はアプリケーションプログラマが、持続サーバーの登録、登録解除、起動、および停止を行うためのコマンド行インタフェースを提供します。そのほかに、サーバーに関するさまざまな統計情報を取得するためのコマンドも提供します。 .LP -.SH "オプション" +\f2servertool\fP ϥץꥱץޤ³СϿϿưߤԤΥޥɹԥ󥿥ե󶡤ޤΤۤˡС˴ؤ뤵ޤޤ׾뤿Υޥɤ󶡤ޤ .LP - +.SH "ץ" .LP .RS 3 .TP 3 \-ORBInitialHost nameserverhost -ネームサーバーが、実行され、着信要求を待機しているホストマシンを指定します。このオプションを指定しない場合、\f2nameserverhost\fP はデフォルトで \f2localhost\fP に設定されます。\f2orbd\fP と \f2servertool\fP が異なるマシン上で実行されている場合は、\f2orbd\fP が実行されているホストの名前と IP アドレスを指定する必要があります。 +͡ॵС¹Ԥ졢忮׵ԵƤۥȥޥꤷޤΥץꤷʤ硢\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 を使って背後の実行環境にオプションを渡すことはよく行われています。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ\f3\-J\fP Ȥäظμ¹ԴĶ˥ץϤȤϤ褯ԤƤޤ .RE .LP -.SH "コマンド" -.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 になっている必要があります。インストールメソッドは、オプションであり、データベーススキーマの作成などの独自のサーバーインストール動作を開発者が指定できます。 +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 になっている必要があります。アンインストールメソッドは、オプションであり、インストールメソッドの動作の取り消しなどの独自のサーバーアンインストール動作を開発者が指定できます。 +С ID ޤϥץꥱ̾ѤơORBD ΥСϿޤΥޥɤˤäơ\f2\-server\fP ץǼ̤륵СΥᥤ󥯥饹ǥ󥤥󥹥ȡ᥽åɤƤӽФޤΥ󥤥󥹥ȡ᥽åɤϡ\f2public static void uninstall(org.omg.CORBA.ORB)\fP ˤʤäƤɬפޤ󥤥󥹥ȡ᥽åɤϡץǤꡢ󥹥ȡ᥽åɤưμäʤɤȼΥС󥤥󥹥ȡưȯԤǤޤ .TP 3 getserverid \-applicationName\ <application\ name> -アプリケーションに関連付けられているサーバー ID を返します。 +ץꥱ˴ϢդƤ륵С ID ֤ޤ .TP 3 list -ORBD に登録されているすべての持続サーバーに関する情報を一覧表示します。 +ORBD ϿƤ뤹٤Ƥλ³С˴ؤɽޤ .TP 3 listappnames -現在 ORBD に登録されているすべてのサーバーのアプリケーション名を一覧表示します。 + ORBD ϿƤ뤹٤ƤΥСΥץꥱ̾ɽޤ .TP 3 listactive -ORDB によって起動され、現在実行されているすべての持続サーバーに関する情報を一覧表示します。 +ORDB ˤäƵư졢߼¹ԤƤ뤹٤Ƥλ³С˴ؤɽޤ .TP 3 locate \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> [\-endpointType\ <endpointType>\ ] -登録されたサーバーで作成したすべての ORB の特定の型について端点 (ポート) を検出します。サーバーが実行されていない場合、起動されます。端点の型が指定されていない場合、サーバーの ORB ごとに関連付けられている plain 型 または non\-protected 型の端点が返されます。 +Ͽ줿СǺ٤Ƥ 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 で作成されている場合、登録したポートがすべて返されます。 +Ͽ줿С ORB Ͽ줿ü (ݡ) 򸡽ФޤС¹ԤƤʤ硢ưޤ\f2orbid\fP ꤵƤʤϡǥեͤΡ""פ\f2orbid\fP˳ƤޤORB ʸ \f2orbid\fP ǺƤ硢ϿݡȤ٤֤ޤ .TP 3 orblist \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -サーバー上に定義された ORB の ORBId を一覧表示します。ORBId はサーバーで作成された ORB の文字列名です。サーバーが実行されていない場合、起動されます。 +С줿 ORB ORBId ɽޤORBId ϥСǺ줿 ORB ʸ̾ǤС¹ԤƤʤ硢ưޤ .TP 3 shutdown \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -ORBD に登録されたアクティブなサーバーを停止します。このコマンドの実行中に、\f2\-serverid\fP パラメータまたは \f2\-applicationName\fP パラメータで指定されたクラス内に定義された \f2shutdown()\fP メソッドも呼び出されてサーバープロセスを正しく停止します。 +ORBD Ͽ줿ƥ֤ʥСߤޤΥޥɤμ¹ˡ\f2\-serverid\fP ѥ᡼ޤ \f2\-applicationName\fP ѥ᡼ǻꤵ줿饹줿 \f2shutdown()\fP ᥽åɤƤӽФƥСץߤޤ .TP 3 startup \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -ORBD に登録されたサーバーを起動します。サーバーが実行されていない場合は、このコマンドでサーバーを起動します。サーバーがすでに実行されている場合は、ユーザーにエラーメッセージが返されます。 +ORBD Ͽ줿СưޤС¹ԤƤʤϡΥޥɤǥСưޤСǤ˼¹ԤƤϡ桼˥顼å֤ޤ .TP 3 help -サーバーがサーバーツールで使用できるすべてのコマンドを表示します。 +ССġǻѤǤ뤹٤ƤΥޥɤɽޤ .TP 3 quit -サーバーツールを終了します。 +Сġλޤ .RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP orbd(1) diff --git a/src/linux/doc/man/ja/tnameserv.1 b/src/linux/doc/man/ja/tnameserv.1 index 4b96e1b9998c56fc443363f01a7b2d5212fecf06..216075e37ecec3fdc36755130c4373a8b3682e5c 100644 --- a/src/linux/doc/man/ja/tnameserv.1 +++ b/src/linux/doc/man/ja/tnameserv.1 @@ -19,59 +19,59 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH tnameserv 1 "02 Jun 2010" +.TH tnameserv 1 "14 Apr 2011" .LP -.SH "名前" -Java IDL:一時ネームサービス \- \f2tnameserv\fP +.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 ツールの詳細については、\f2orbd\fP の orbd(1)または +ΥɥȤǤϡ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 @ +\f2ORBD ˴ޤޤ Java IDL ͡ॵӥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlに関するトピックを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html˴ؤȥԥå򻲾ȤƤ .LP .LP -ここでは、以下の項目について説明します。 +ǤϡʲιܤˤĤޤ .LP .RS 3 .TP 2 o -Java\ IDL 一時ネームサービス +Java\ IDL ͡ॵӥ .TP 2 o -Java\ IDL 一時ネームサービスの起動 +Java\ IDL ͡ॵӥεư .TP 2 o -Java\ IDL 一時ネームサービスの停止 +Java\ IDL ͡ॵӥ .TP 2 o -サンプルクライアント:名前空間へのオブジェクトの追加 +ץ륯饤: ֤̾ؤΥ֥Ȥɲ .TP 2 o -サンプルクライアント:名前空間のブラウズ +ץ륯饤: ֤̾Υ֥饦 .RE .LP -.SH "Java\ IDL 一時ネームサービス" +.SH "Java IDL ͡ॵӥ" .LP .LP -CORBA の COS (Common Object Services) ネームサービスは、ファイルシステムがファイルに対してディレクトリ構造を提供しているのと同じように、オブジェクト参照に対してツリー構造のディレクトリを提供します。Java IDL の一時ネームサービスである \f2tnameserv\fP は、COS ネームサービスの仕様を単純な形で実装したものです。 +CORBA COS (Common Object Services) ͡ॵӥϡե륷ƥबեФƥǥ쥯ȥ깽¤󶡤ƤΤƱ褦ˡ֥ȻȤФƥĥ꡼¤Υǥ쥯ȥ󶡤ޤJava IDL ΰ͡ॵӥǤ \f2tnameserv\fP ϡCOS ͡ॵӥλͤñʷǼΤǤ .LP .LP -オブジェクト参照は名前空間に名前で格納され、オブジェクト参照と名前のペアは、それぞれ「ネームバインディング」と呼ばれます。ネームバインディングは「ネーミングコンテキスト」に組み込むことができます。ネーミングコンテキストはそれ自体がネームバインディングであり、ファイルシステムのサブディレクトリと同じ編成機能を持ちます。すべてのバインディングは「初期ネーミングコンテキスト」に格納されます。名前空間において、初期ネーミングコンテキストは唯一の持続的バインディングです。 それ以外のネーミングコンテキストは、Java IDL のネーミングサービスプロセスが停止し、再起動されると失われます。 +֥ȻȤ֤̾̾dzǼ졢֥ȻȤ̾Υڥϡ줾֥͡Хǥ󥰡פȸƤФޤ͡Хǥ󥰤ϡ֥͡ߥ󥰥ƥȡפȤ߹ळȤǤޤ͡ߥ󥰥ƥȤϤ켫Τ͡Хǥ󥰤Ǥꡢե륷ƥΥ֥ǥ쥯ȥƱǽޤ٤ƤΥХǥ󥰤ϡֽ͡ߥ󥰥ƥȡפ˳Ǽޤ֤̾ˤơ͡ߥ󥰥ƥȤͣλ³ŪХǥ󥰤ǤʳΥ͡ߥ󥰥ƥȤϡJava IDL Υ͡ߥ󥰥ӥץߤƵưȼޤ .LP .LP -アプレットまたはアプリケーションから COS ネームサービスを使用するためには、その ORB はネームサービスが動作しているホストのポートを知っているか、そのネームサービスの文字列化された初期ネーミングコンテキストにアクセスできなければなりません。ネームサービスは、Java\ IDL のネームサービスでもその他の COS 準拠のネームサービスでもかまいません。 +ץåȤޤϥץꥱ󤫤 COS ͡ॵӥѤ뤿ˤϡ ORB ϥ͡ॵӥưƤۥȤΥݡȤΤäƤ뤫Υ͡ॵӥʸ󲽤줿͡ߥ󥰥ƥȤ˥ǤʤФʤޤ󡣥͡ॵӥϡJava IDL Υ͡ॵӥǤ⤽¾ COS Υ͡ॵӥǤ⤫ޤޤ .LP -.SH "Java\ IDL 一時ネームサービスの起動" +.SH "Java IDL ͡ॵӥεư" .LP .LP -Java\ IDL ネームサービスは、ネームサービスを使用するアプリケーションまたはアプレットより前に起動しておかなければなりません。Java\ IDL 製品をインストールすると、Java IDL ネームサービスを起動するスクリプト (Solaris: \f2tnameserv\fP) か、実行可能ファイル (Windows NT: \f2tnameserv.exe\fP) が作成されます。バックグラウンドで動作するように、ネームサービスを起動してください。 +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 で待機します。 +ä˻ꤷʤ硢Java IDL ͡ॵӥϡORB \f2resolve_initial_references()\fP ᥽åɤ \f2list_initial_references()\fP ᥽åɤμ˻Ѥ֡ȥȥåץץȥФƥݡ 900 Եޤ .LP .nf \f3 @@ -83,7 +83,7 @@ Java\ IDL ネームサービスは、ネームサービスを使用するアプ .LP .LP -ネームサーバーポートを指定しない場合、デフォルトでポート 900 が使用されます。Solaris ソフトウェアの実行時は、1024 より小さいポートでプロセスを開始する場合、root ユーザーになる必要があります。 このため、1024 または 1024 より大きいポートを使用することをお勧めします。 1050 のように別のポートを指定し、ネームサービスをバックグラウンドで実行するには、UNIX コマンドシェルで次のように入力します。 +͡ॵСݡȤꤷʤ硢ǥեȤǥݡ 900 ѤޤSolaris եȥμ¹Իϡ1024 꾮ݡȤǥץ򳫻Ϥ硢root 桼ˤʤɬפޤΤᡢ1024 ޤ 1024 礭ݡֹѤ뤳Ȥ򤪴ᤷޤ1050 Τ褦̤ΥݡȤꤷ͡ॵӥХå饦ɤǼ¹ԤˤϡUNIX ޥɥǼΤ褦Ϥޤ .LP .nf \f3 @@ -95,7 +95,7 @@ Java\ IDL ネームサービスは、ネームサービスを使用するアプ .LP .LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 +Windows MS\-DOS ƥץץȤǤϡΤ褦Ϥޤ .LP .nf \f3 @@ -107,32 +107,32 @@ Windows の MS\-DOS システムプロンプトでは、次のように入力し .LP .LP -ネームサーバーのクライアントには、新しいポート番号を知らせる必要があります。このため、ORB オブジェクトの作成時に \f2org.omg.CORBA.ORBInitialPort\fP プロパティーに新しいポート番号を設定します。 +͡ॵСΥ饤ȤˤϡݡֹΤ餻ɬפޤΤᡢORB ֥Ȥκ \f2org.omg.CORBA.ORBInitialPort\fP ץѥƥ˿ݡֹꤷޤ .LP .SS -異なるマシン上でのクライアントとサーバーの実行 +ۤʤޥǤΥ饤ȤȥСμ¹ .LP .LP -Java IDL と RMI\-IIOP のほとんどのチュートリアルでは、ネームサービス、サーバー、およびクライアントはすべて開発用のマシン上で実行されます。実際に配備する場合には、クライアントとサーバーを、ネームサービスとは異なるホスト上で実行することが多くなります。 +Java IDL RMI\-IIOP ΤۤȤɤΥ塼ȥꥢǤϡ͡ॵӥСӥ饤ȤϤ٤ƳȯѤΥޥǼ¹Ԥޤºݤˤϡ饤ȤȥС򡢥͡ॵӥȤϰۤʤۥȾǼ¹Ԥ뤳Ȥ¿ʤޤ .LP .LP -クライアントとサーバーがネームサービスを見つけるには、クライアントとサーバーが、ネームサービスが実行されているポートの番号とホストを認識している必要があります。そのためには、クライアントとサーバーのファイル内の \f2org.omg.CORBA.ORBInitialPort\fP プロパティーと \f2org.omg.CORBA.ORBInitialHost\fP プロパティーをネームサービスが実行されているポートの番号とマシンの名前に設定します。この例は、 +饤ȤȥС͡ॵӥ򸫤Ĥˤϡ饤ȤȥС͡ॵӥ¹ԤƤݡȤֹȥۥȤǧƤɬפޤΤˤϡ饤ȤȥСΥե \f2org.omg.CORBA.ORBInitialPort\fP ץѥƥ \f2org.omg.CORBA.ORBInitialHost\fP ץѥƥ͡ॵӥ¹ԤƤݡȤֹȥޥ̾ꤷޤϡ .na -\f2「RMI\-IIOP を使った Hello World の例」\fP @ +\f2RMI\-IIOP Ȥä Hello World פ˼Ƥޤ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/rmi\-iiop/rmiiiopexample.htmlに示されています。コマンド行オプション \f2\-ORBInitialPort\fP \f2nameserverport#\fP と \f2\-ORBInitialHost\fP \f2nameserverhostname\fP を使用して、クライアントとサーバーに対してネームサービスを探す場所を指定することもできます。 +http://java.sun.com/javase/6/docs/technotes/guides/rmi\-iiop/rmiiiopexample.htmlޥɹԥץ \f2\-ORBInitialPort\fP \f2nameserverport#\fP \f2\-ORBInitialHost\fP \f2nameserverhostname\fP Ѥơ饤ȤȥСФƥ͡ॵӥõꤹ뤳ȤǤޤ .na -\f2「Java IDL: 2 台のマシン上で実行する Hello World プログラム」\fP @ +\f2Java IDL: 2 ΥޥǼ¹Ԥ Hello World ץ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/tutorial/jidl2machines.html には、コマンド行オプションを使用して指定する方法が示されています。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/tutorial/jidl2machines.html ˤϡޥɹԥץѤƻꤹˡƤޤ .LP .LP -たとえば、一時ネームサービス \f2tnameserv\fP が、ホスト \f2nameserverhost\fP のポート 1050 上で実行されているとします。さらに、クライアントがホスト \f2clienthost\fP 上で実行され、サーバーはホスト \f2serverhost\fP 上で実行されているとします。 +ȤС͡ॵӥ \f2tnameserv\fP ۥ \f2nameserverhost\fP Υݡ 1050 Ǽ¹ԤƤȤޤˡ饤Ȥۥ \f2clienthost\fP Ǽ¹Ԥ졢Сϥۥ \f2serverhost\fP Ǽ¹ԤƤȤޤ .LP .RS 3 .TP 2 o -次のように、ホスト \f2nameserverhost\fP 上で \f2tnameserv\fP を起動します。 +Τ褦ˡۥ \f2nameserverhost\fP \f2tnameserv\fP ưޤ .nf \f3 .fl @@ -144,7 +144,7 @@ o .fi .TP 2 o -\f2serverhost\fP 上でサーバーを起動します。 +\f2serverhost\fP ǥСưޤ .nf \f3 .fl @@ -154,7 +154,7 @@ o .fi .TP 2 o -\f2clienthost\fP 上でクライアントを起動します。 +\f2clienthost\fP ǥ饤Ȥưޤ .nf \f3 .fl @@ -166,38 +166,34 @@ o .LP .SS -\-J オプション -.LP -このコマンド行オプションは、\f2tnameserve\fP とともに使用できます。 -.RS 3 - +\-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 を使って背後の実行環境にオプションを渡すことはよく行われています。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ\f3\-J\fP Ȥäظμ¹ԴĶ˥ץϤȤϤ褯ԤƤޤ .RE .LP -.RE -.SH "Java\ IDL 一時ネームサービスの停止" +.SH "Java IDL ͡ॵӥ" .LP .LP -Java IDL ネームサービスを停止するには、Unix の場合は、\f2kill\fP などのオペレーティングシステムのコマンドを使い、Windows の場合は、\f2Ctrl\-C\fP を使います。ネームサービスを明示的に停止するまでは、呼び出し待機状態が続きます。なお、サービスを終了させると、Java\ IDL ネームサービスに登録されている名前は失われます。 +Java IDL ͡ॵӥߤˤϡUnix ξϡ\f2kill\fP ʤɤΥڥ졼ƥ󥰥ƥΥޥɤȤWindows ξϡ\f2Ctrl\-C\fP Ȥޤ͡ॵӥŪߤޤǤϡƤӽФԵ֤³ޤʤӥλȡJava IDL ͡ॵӥϿƤ̾ϼޤ .LP -.SH "サンプルクライアント:名前空間へのオブジェクトの追加" +.SH "ץ륯饤: ֤̾ؤΥ֥Ȥɲ" .LP .LP -次に示すサンプルプログラムは、名前を名前空間に追加する方法を示すものです。このサンプルプログラムは、このままの状態で完全に動作する一時ネームサービスクライアントで、次のような単純なツリーを作成するものです。 +˼ץץϡ֤̾̾ɲäˡ򼨤ΤǤΥץץϡΤޤޤξ֤Ǵư͡ॵӥ饤ȤǡΤ褦ñʥĥ꡼ΤǤ .LP .nf \f3 .fl \fP\f3 .fl - \fP\f4初期\fP\f3 + \fP\f4\fP\f3 .fl - \fP\f4ネーミングコンテキスト\fP\f3 + \fP\f4͡ߥ󥰥ƥ\fP\f3 .fl / \\ .fl @@ -215,7 +211,7 @@ Java IDL ネームサービスを停止するには、Unix の場合は、\f2kil .LP .LP -この例で、\f3plans\fP はオブジェクト参照、\f3Personal\fP は \f3calendar\fP と \f3schedule\fP の 2 つのオブジェクト参照を含むネーミングコンテキストです。 +ǡ\f3plans\fP ϥ֥Ȼȡ\f3Personal\fP \f3calendar\fP \f3schedule\fP 2 ĤΥ֥ȻȤޤ͡ߥ󥰥ƥȤǤ .LP .nf \f3 @@ -242,7 +238,7 @@ public class NameClient .fi .LP -前述の「Java IDL 一時ネームサービスの起動」で、ネームサーバーはポート 1050 を使用して起動しました。 次のコードで、このポート番号をクライアントプログラムに知らせます。 +ҤΡJava IDL ͡ॵӥεưפǡ͡ॵСϥݡ 1050 ѤƵưޤΥɤǡΥݡֹ򥯥饤ȥƥΤ餻ޤ .nf \f3 .fl @@ -258,7 +254,7 @@ public class NameClient .fi .LP -次のコードでは、初期ネーミングコンテキストを取得し、それを \f3ctx\fP に代入します。2 行目では、\f3ctx\fP をダミーのオブジェクト参照 \f3objref\fP にコピーします。 この \f3objref\fP には、あとでさまざまな名前を割り当てて名前空間に追加します。 +ΥɤǤϡ͡ߥ󥰥ƥȤ \f3ctx\fP ޤ2 ܤǤϡ\f3ctx\fP ߡΥ֥Ȼ \f3objref\fP ˥ԡޤ objref ˤϡȤǤޤޤ̾Ƥ֤̾ɲäޤ .nf \f3 .fl @@ -274,7 +270,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -次のコードでは、text 型の名前 plans を作成し、それをダミーのオブジェクト参照にバインドします。その後、\f2rebind\fP を使用して初期ネーミングコンテキストの下に "plans" を追加しています。\f2rebind\fP メソッドを使用すれば、\f2bind\fP を使用した場合に発生する例外を発生させずに、このプログラムを何度も繰り返し実行できます。 +ΥɤǤϡtext ̾ plans ߡΥ֥ȻȤ˥Хɤޤθ塢rebind Ѥƽ͡ߥ󥰥ƥȤβ \f2plans ɲäƤޤ\fP \f2rebind\fP ᥽åɤѤСbind Ѥȯ㳰ȯˡ \f2Υץ٤֤ⷫ¹ԤǤޤ\fP .nf \f3 .fl @@ -292,7 +288,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -次のコードでは、directory 型の Personal というネーミングコンテキストを作成します。その結果得られるオブジェクト参照 \f3ctx2\fP をこの名前にバインドし、初期ネーミングコンテキストに追加します。 +ΥɤǤϡdirectory Personal Ȥ͡ߥ󥰥ƥȤޤη륪֥Ȼ \f3ctx2\fP 򤳤̾˥Хɤ͡ߥ󥰥ƥȤɲäޤ .nf \f3 .fl @@ -310,7 +306,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -残りのコードでは、ダミーのオブジェクト参照を schedule と calendar という名前でネーミングコンテキスト "Personal" (\f3ctx2\fP) にバインドします。 +ĤΥɤǤϡߡΥ֥ȻȤ schedule calendar Ȥ̾ǥ͡ߥ󥰥ƥ "Personal" (\f3ctx2\fP) ˥Хɤޤ .nf \f3 .fl @@ -350,10 +346,10 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -.SH "サンプルクライアント:名前空間のブラウズ" +.SH "ץ륯饤: ֤̾Υ֥饦" .LP .LP -次のサンプルプログラムでは、名前空間をブラウズする方法を示します。 +ΥץץǤϡ֤֥̾饦ˡ򼨤ޤ .LP .nf \f3 @@ -380,7 +376,7 @@ public class NameClientList .fi .LP -前述の「Java IDL 一時ネームサービスの起動」で、ネームサーバーはポート 1050 を使用して起動しました。 次のコードで、このポート番号をクライアントプログラムに知らせます。 +ҤΡJava IDL ͡ॵӥεưפǡ͡ॵСϥݡ 1050 ѤƵưޤΥɤǡΥݡֹ򥯥饤ȥƥΤ餻ޤ .nf \f3 .fl @@ -400,7 +396,7 @@ public class NameClientList .fi .LP -次のコードでは、初期ネーミングコンテキストを取得しています。 +ΥɤǤϡ͡ߥ󥰥ƥȤƤޤ .nf \f3 .fl @@ -414,7 +410,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -\f2list\fP メソッドは、ネーミングコンテキストに追加されているバインディングをリストします。この場合、最大 1000 個までのバインディングが初期ネーミングコンテキストから BindingListHolder に返されます。 残りのバインディングは、BindingIteratorHolder に返されます。 +\f2list\fP ᥽åɤϡ͡ߥ󥰥ƥȤɲäƤХǥ󥰤ꥹȤޤξ硢 1000 ĤޤǤΥХǥ󥰤͡ߥ󥰥ƥȤ BindingListHolder ֤ޤĤΥХǥ󥰤ϡBindingIteratorHolder ֤ޤ .nf \f3 .fl @@ -430,7 +426,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -次のコードでは、返された BindingListHolder からバインディングの配列を取得します。バインディングがない場合は、プログラムは終了します。 +ΥɤǤϡ֤줿 BindingListHolder Хǥ󥰤ޤХǥ󥰤ʤϡץϽλޤ .nf \f3 .fl @@ -444,7 +440,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -残りのコードでは、バインディングに対してループ処理を行い、名前を出力します。 +ĤΥɤǤϡХǥ󥰤Фƥ롼׽Ԥ̾Ϥޤ .nf \f3 .fl diff --git a/src/linux/doc/man/ja/unpack200.1 b/src/linux/doc/man/ja/unpack200.1 index 8a34dd3b7183635c397942e5088d36c45f794002..c5f121364305e223507272c32e29a93865620317 100644 --- a/src/linux/doc/man/ja/unpack200.1 +++ b/src/linux/doc/man/ja/unpack200.1 @@ -19,159 +19,125 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH unpack200 1 "02 Jun 2010" +.TH unpack200 1 "14 Apr 2011" .LP -.SH "名前" -unpack200 \- JAR アンパックツール +.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 - +.SH "" .LP .LP \f4unpack200\fP\f2 [ \fP\f2options\fP ] \f2input\-file\fP \f2JAR\-file\fP .LP .LP -オプションの指定順序に決まりはありません。コマンド行に指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。 -.LP -.RS 3 - +ץλ˷ޤϤޤ󡣥ޥɹԤ˻ꤵ줿ǸΥץ󤬡˻ꤵ줿٤ƤΥץͥ褵ޤ .LP .RS 3 .TP 3 input\-file -入力ファイルの名前。 入力ファイルは通常、pack200 gzip ファイルか pack200 ファイルです。このほかに、0 を設定すれば pack200(1) から作成された JAR ファイルも入力ファイルとして使用できます。 この場合、入力ファイルの内容が Pack200 マーカーとともに出力 JAR ファイルにコピーされます。 +ϥե̾ϥե̾pack200 gzip ե뤫 pack200 եǤΤۤˡ0 ꤹ pack200(1) 줿 JAR եϥեȤƻѤǤޤξ硢ϥեƤ Pack200 ޡȤȤ˽ JAR ե˥ԡޤ .TP 3 JAR\-file -出力 JAR ファイル名。 + JAR ե̾ .RE .LP -.RE -.SH " 説明" +.SH " " .LP - .LP -.LP -\f2unpack200\fP は、\f2pack200\fP(1) で作成されたパックファイルを JAR ファイルに変換するネイティブ実装です。一般的な使用方法: -.LP -.RS 3 - +\f2unpack200\fP ϡpack200(1) Ǻ줿ѥåե JAR եѴ \f2ͥƥּ\fPǤŪʻˡ: .LP .LP \f2% unpack200 myarchive.pack.gz myarchive.jar\fP .LP -.RE .LP -この例では、デフォルトの \f2unpack200\fP 設定で、\f2myarchive.jar\fP から \f2myarchive.pack.gz\fP が作成されます。 +Ǥϡ \f2ǥեȤ unpack200 ǡmyarchive.pack.gz\fP \f2myarchive.jar\fP \f2ޤ\fP .LP -.SH "オプション" +.SH "ץ" .LP -.SS -標準オプション .LP -.RS 3 - +\f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP .LP .LP -\f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP +JAR եΤ٤ƤΥȥ \f2true\fP \f2false\fP \f2keep\fP Ȥƥǥե졼ꤷޤǥեȥ⡼ɤ \f2keep\fP Ǥ \f2true\fP ޤ \f2false 硢\fPǥեȤư򥪡С饤ɤơ JAR եΤ٤ƤΥȥΥǥե졼⡼ɤꤷޤ .LP -.RS 3 - .LP +\f4\-r \-\-remove\-pack\-file\fP .LP -JAR ファイル内のすべてのエントリに \f2true\fP、\f2false\fP、\f2keep\fP としてデフレーションを設定します。デフォルトモードは \f2keep\fP です。\f2true\fP または \f2false\fP の場合、デフォルトの動作をオーバーライドして、出力 JAR ファイル内のすべてのエントリのデフレーションモードを設定します。 .LP -.RE -.RE -.SS -非標準オプション +ϥѥåեޤ .LP -.RS 3 - .LP +\f4\-v \-\-verbose\fP .LP -\f4\-r \-\-remove\-pack\-file\fP .LP -.RS 3 - +Ǿ¤ΥåϤޤΥץʣꤹȡĹåϤޤ .LP .LP -入力パックファイルを削除します。 +\f4\-q \-\-quiet\fP .LP -.RE .LP -\f4\-v \-\-verbose\fP +åɽưޤ .LP -.RS 3 - .LP +\f4\-lfilename \-\-log\-file=\fP\f2filename\fP .LP -最小限のメッセージを出力します。このオプションを複数指定すると、より長いメッセージが出力されます。 .LP -.RE +ϥåΥեꤷޤ .LP -\f4\-q \-\-quiet\fP .LP -.RS 3 - +\f4\-? \-h \-\-help\fP .LP .LP -メッセージを表示せずに動作します。 +Υޥɤ˴ؤإ׾Ϥޤ .LP -.RE .LP -\f4\-lfilename \-\-log\-file=\fP\f2filename\fP +\f4\-V \-\-version\fP .LP -.RS 3 - .LP +Υޥɤ˴ؤСϤޤ .LP -出力メッセージのログファイルを指定します。 .LP -.RE -.RE -.SH "終了ステータス" +\f4\-J\fP\f2option\fP .LP - .LP +unpack200 ˤäƸƤӽФ Java ưġ \f2ץ\fP \f2Ϥޤ\fP .LP -次の終了値が返されます。 +.SH "λơ" .LP -.RS 3 - .LP +νλ֤ͤޤ .LP -\f2\ 0\fP " 成功" .LP +\f2\ 0\fP " " .LP -\f2>0\fP " エラー" .LP -.RE -.SH "関連項目" +\f2>0\fP " 顼" +.LP +.SH "Ϣ" .LP .RS 3 .TP 2 @@ -180,35 +146,33 @@ pack200(1) .TP 2 o .na -\f2Java SE のドキュメント\fP @ +\f2Java SE Υɥ\fP @ .fi http://java.sun.com/javase/6/docs/index.html .TP 2 o .na -\f2「Java 配備ガイド \- Pack200」\fP @ +\f2Java \- Pack200\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/pack200.html .TP 2 o -jar(1) \- Java Archive ツール」 +jar(1) \- Java Archive ġ .TP 2 o -「jarsigner(1) \- JAR 署名および検証ツール」 +jarsigner(1) \- JAR ̾Ӹڥġ .TP 2 o -\f2attributes(5)\fP のマニュアルページ +\f2attributes(5)\fP Υޥ˥奢ڡ .RE .LP -.SH "注意事項" -.LP - +.SH "ջ" .LP .LP -このコマンドと \f2unpack(1)\fP を混同しないでください。これらは別製品です。 +Υޥɤ \f2unpack(1) \fPƱʤǤʤǤ .LP .LP -SDK に付属する Java SE API 仕様との相違が見つかった場合には、仕様を優先してください。 +SDK ° Java SE API ͤȤ㤬Ĥäˤϡͤͥ褷Ƥ .LP diff --git a/src/linux/doc/man/ja/wsgen.1 b/src/linux/doc/man/ja/wsgen.1 index 49f39d6054f6ff05e273564d2eedd95786e7d398..2a3bc5874eb4939ff1724ed4191632b602fe0c1d 100644 --- a/src/linux/doc/man/ja/wsgen.1 +++ b/src/linux/doc/man/ja/wsgen.1 @@ -19,30 +19,24 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH wsgen 1 "02 Jun 2010" -.SH "名前" -wsgen \- XML Web Services (JAX\-WS) 2.0 のための Java(TM) API -.RS 3 - -.LP +.TH wsgen 1 "14 Apr 2011" +.SH "̾" +wsgen \- XML Web Services (JAX\-WS) 2.0 Τ Java(TM) API .LP -\f3仕様バージョン:\fP 2.1 +\f3ͥС:\fP 2.1 .br -\f3実装バージョン:\fP 2.1.1 +\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 サービスのエンドポイント実装クラス (SEI) を読み取り、Web サービスの配備と呼び出しに必要なすべてのアーティファクトを生成します。 -.LP -.RE -.SH "概要" -.LP -\f2wsgen\fP ツールは、JAX\-WS Web サービスで使用される JAX\-WS ポータブルアーティファクトを生成します。このツールは、Web サービスのエンドポイントクラスを読み取り、Web サービスの配備と呼び出しに必要なすべてのアーティファクトを生成します。JAXWS 2.1.1 RI には wsgen Ant タスクも用意されています。詳細は、 +\f2wsgen\fP ġϡJAX\-WS Web ӥǻѤ JAX\-WS ݡ֥륢ƥեȤޤΥġϡWeb ӥΥɥݥȥ饹ɤ߼ꡢWeb ӥȸƤӽФɬפʤ٤ƤΥƥեȤޤJAXWS 2.1.1 RI ˤ wsgen Ant ѰդƤޤܺ٤ϡ .na -\f2Wsgen Ant タスク\fP @ +\f2Wsgen Ant \fP @ .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsgenant.htmlを参照してください。 +https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsgenant.html򻲾ȤƤ .LP -.SH "wsgen の起動" +.SH "wsgen εư" .RS 3 .TP 2 o @@ -69,7 +63,7 @@ o .RE .LP -.SH "構文" +.SH "ʸ" .nf \f3 .fl @@ -80,7 +74,7 @@ wsgen [options] <SEI>\fP \fP .fi .LP -次の表に、\f2wsgen\fP のオプションを示します。 +ɽˡ \f2wsgen\fP Υץ򼨤ޤ .br .LP .TS @@ -111,7 +105,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -入力クラスファイルの検索場所を指定します +ϥ饹եθꤷޤ .br .di .nr a| \n(dn @@ -127,7 +121,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -\f2\-classpath <path>\fP と同じ +\-classpath <path> \f2ƱǤ\fP .br .di .nr b| \n(dn @@ -143,7 +137,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成される出力ファイルを格納する場所を指定する +ϥեǼꤷޤ .br .di .nr c| \n(dn @@ -159,7 +153,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ベンダー拡張 (仕様で規定されていない機能) を許可します。拡張を使用すると、アプリケーションの移植性が失われたり、ほかの実装との相互運用が行えなくなる可性があります +٥ĥ (ͤǵꤵƤʤǽ) ĤޤĥѤȡץꥱΰܿ줿ꡢۤμȤ߱ѤԤʤʤޤ .br .di .nr d| \n(dn @@ -175,7 +169,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ヘルプを表示します +إפɽޤ .br .di .nr e| \n(dn @@ -191,7 +185,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成されたファイルを保持します +줿եݻޤ .br .di .nr f| \n(dn @@ -207,7 +201,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -常に \-wsdl オプションと組み合わせて使用します。WSDL などの生成されたリソースファイルの格納場所を指定します + \-wsdl ץȤ߹碌ƻѤޤWSDL ʤɤ줿꥽եγǼꤷޤ .br .di .nr g| \n(dn @@ -223,7 +217,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成されるソースファイルを格納する場所を指定する +륽եǼꤹ .br .di .nr h| \n(dn @@ -239,7 +233,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -コンパイラが実行している処理に関するメッセージを出力します +ѥ餬¹ԤƤ˴ؤåϤޤ .br .di .nr i| \n(dn @@ -255,7 +249,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -バージョン情報を出力します。このオプションを使用した場合、バージョン情報が出力されるだけです。通常の処理は実行されません。 +СϤޤΥץѤ硢С󤬽ϤǤ̾νϼ¹Ԥޤ .br .di .nr j| \n(dn @@ -271,7 +265,7 @@ wsgen [options] <SEI>\fP .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 オプションと組み合わせないと使用できません。 +ǥեȤǤ \f2wsgen\fP WSDL եޤ󡣤Υե饰ϾάǽǤꤷ \f2wsgen\fP WSDL ե褦ˤʤޤΥե饰̾ɥݥȤ˳ȯԤ WSDL 򻲾ȤǤ褦ˤ뤿˻Ѥޤ \f2protocol\fP ϾάǽǤꡢwsdl:binding ǻѤ٤ץȥꤹ뤿 \f2Ѥޤ\fPͭʥץȥϼΤȤǤ \f2soap1.1\fP \f2Xsoap1.2\fPǥեȤ \f2soap1.1\fP Ǥ \f2Xsoap1.2\fP ɸǤϤʤᡢ \f2\-extension\fP ץȤ߹碌ʤȻѤǤޤ .br .di .nr k| \n(dn @@ -287,7 +281,7 @@ wsgen [options] <SEI>\fP .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 + \f2\-wsdl\fP ץȤ߹碌ƻѤޤWSDL ٤ \f2wsdl:service\fP ̾ꤹ뤿˻Ѥޤ: \f2\-servicename "{http://mynamespace/}MyService"\fP .br .di .nr l| \n(dn @@ -303,7 +297,7 @@ wsgen [options] <SEI>\fP .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 + \f2\-wsdl\fP ץȤ߹碌ƻѤޤWSDL ٤ \f2wsdl:port\fP ̾ꤹ뤿˻Ѥޤ: \f2\-portname "{http://mynamespace/}MyPort"\fP .br .br .di @@ -315,7 +309,7 @@ wsgen [options] <SEI>\fP .nf .ll \n(34u .nr 80 0 -.nr 38 \w\f3オプション\fP +.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 @@ -346,7 +340,7 @@ wsgen [options] <SEI>\fP .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -386,7 +380,7 @@ wsgen [options] <SEI>\fP .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 143 file Input is too wide - \n(TW units +.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 @@ -403,7 +397,7 @@ wsgen [options] <SEI>\fP .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3説明\fP +\&\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 @@ -633,7 +627,7 @@ wsgen [options] <SEI>\fP .if \n-(b.=0 .nr c. \n(.c-\n(d.-57 .LP -.SH "例" +.SH "" .nf \f3 .fl @@ -641,7 +635,7 @@ wsgen [options] <SEI>\fP .fl .fi .LP -\f3stock\fP ディレクトリ内に @WebService 注釈が付けられた、StockService に必要なラッパークラスが生成されます。 +\f3stock\fP ǥ쥯ȥ @WebService ᤬դ줿StockService ɬפʥåѡ饹ޤ .nf \f3 .fl @@ -649,7 +643,7 @@ wsgen [options] <SEI>\fP .fl .fi .LP -SOAP 1.1 WSDL と、@WebService 注釈が付けられた Java クラス stock.StockService のスキーマが生成されます。 +SOAP 1.1 WSDL ȡ@WebService ᤬դ줿 Java 饹 stock.StockService Υޤޤ .nf \f3 .fl @@ -657,6 +651,6 @@ SOAP 1.1 WSDL と、@WebService 注釈が付けられた Java クラス stock.St .fl .fi .LP -SOAP 1.2 WSDL が生成されます。 +SOAP 1.2 WSDL ޤ .LP -サービスを配備するときに JAXWS ランタイムによって自動的に WSDL が生成されるため、開発時に WSDL を生成する必要はありません。 +ӥȤ JAXWS 󥿥ˤäƼưŪ WSDL 뤿ᡢȯ WSDL ɬפϤޤ diff --git a/src/linux/doc/man/ja/wsimport.1 b/src/linux/doc/man/ja/wsimport.1 index bd51f28ca1a60c8033452492558d9e3eba539311..ff5301792d86add28b3320b9d6d556f4b7c40d8f 100644 --- a/src/linux/doc/man/ja/wsimport.1 +++ b/src/linux/doc/man/ja/wsimport.1 @@ -19,44 +19,44 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH wsimport 1 "02 Jun 2010" -.SH "名前" -wsimport \- XML Web Services (JAX\-WS) 2.0 のための Java(TM) API +.TH wsimport 1 "14 Apr 2011" +.SH "̾" +wsimport \- XML Web Services (JAX\-WS) 2.0 Τ Java(TM) API .LP -\f3仕様バージョン:\fP 2.1 +\f3ͥС:\fP 2.1 .br -\f3実装バージョン:\fP 2.1.1 +\f3С:\fP 2.1.1 .br -.SH "概要" +.SH "" .LP -\f2wsimport\fP ツールは、次のような JAX\-WS ポータブルアーティファクトを生成します。 +\f2wsimport\fP ġϡΤ褦 JAX\-WS ݡ֥륢ƥեȤޤ .RS 3 .TP 2 o -サービスエンドポイントインタフェース (SEI) +ӥɥݥȥ󥿥ե (SEI) .TP 2 o -サービス +ӥ .TP 2 o -wsdl:fault からマップされる例外クラス (存在する場合) +wsdl:fault ޥåפ㳰饹 (¸ߤ) .TP 2 o -応答 wsdl:message から派生する非同期応答 Bean (存在する場合) + wsdl:message Ʊ Bean (¸ߤ) .TP 2 o -JAX\-B が生成する値タイプ (スキーマの型からマップされた Java クラス) +JAX\-B ͥ (ޤηޥåפ줿 Java 饹) .RE .LP -これらのアーティファクトは、WSDL ドキュメント、スキーマドキュメント、およびエンドポイント実装とともに WAR ファイル内にパッケージ化して配備することができます。また、wsimport Ant タスクも用意されています。 +ΥƥեȤϡWSDL ɥȡޥɥȡӥɥݥȼȤȤ WAR ե˥ѥå뤳ȤǤޤޤwsimport Ant ѰդƤޤ .na -\f2Wsimport Ant タスク\fP @ +\f2wsimport Ant \fP @ .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsimportant.htmlを参照してください。 +https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsimportant.html򻲾ȤƤ .br .LP -.SH "wsimport の起動" +.SH "wsimport εư" .RS 3 .TP 2 o @@ -77,7 +77,7 @@ o .RE .LP -.SH "構文" +.SH "ʸ" .nf \f3 .fl @@ -86,7 +86,7 @@ wsimport [options] <wsdl> \fP .fi .LP -次の表に、\f2wsimport\fP のオプションを示します。 +ɽˡ \f2wsimport\fP Υץ򼨤ޤ .LP .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 @@ -116,7 +116,7 @@ wsimport [options] <wsdl> .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成される出力ファイルを格納する場所を指定します +ϥեǼꤷޤ .br .di .nr a| \n(dn @@ -132,7 +132,7 @@ wsimport [options] <wsdl> .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -外部の JAX\-WS または JAXB バインディングファイルを指定します (\f2<file>\fP ごとに \f2\-b\fP が必要となる) + JAX\-WS ޤ JAXB Хǥ󥰥եꤷޤ ( \f2<file>\fP Ȥ \f2\-b\fP ɬפȤʤ) .br .di .nr b| \n(dn @@ -148,7 +148,7 @@ wsimport [options] <wsdl> .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -このオプションを JAXB スキーマコンパイラに渡します +Υץ JAXB ޥѥϤޤ .br .di .nr c| \n(dn @@ -164,11 +164,11 @@ wsimport [options] <wsdl> .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -外部エンティティー参照を解決するためのカタログファイルを指定します。 TR9401、XCatalog、OASIS XML Catalog の各形式がサポートされています。 +ƥƥȤ褹뤿ΥեꤷޤTR9401XCatalogOASIS XML Catalog γƷݡȤƤޤ .na -\f2カタログ\fP @ +\f2\fP @ .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlのドキュメントをお読みになり、\f3カタログ\fPのサンプルを参照してください。 +https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlΥɥȤɤߤˤʤꡢ\f3\fPΥץ򻲾ȤƤ .br .di .nr d| \n(dn @@ -184,7 +184,7 @@ https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlのドキュ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ベンダー拡張 (仕様で規定されていない機能) を許可します。拡張を使用すると、アプリケーションの移植性が失われたり、ほかの実装との相互運用が行えなくなる可能性があります +٥ĥ (ͤǵꤵƤʤǽ) ĤޤĥѤȡץꥱΰܿ줿ꡢۤμȤ߱ѤԤʤʤǽޤ .br .di .nr e| \n(dn @@ -200,7 +200,7 @@ https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlのドキュ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ヘルプを表示します +إפɽޤ .br .di .nr f| \n(dn @@ -232,7 +232,7 @@ https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlのドキュ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -HTTP プロキシサーバーを指定します (デフォルトのポートは 8080) +HTTP ץСꤷޤ (ǥեȤΥݡȤ 8080) .br .di .nr h| \n(dn @@ -248,7 +248,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成されたファイルを保持します +줿եݻޤ .br .di .nr i| \n(dn @@ -264,7 +264,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -このコマンド行オプション経由でターゲットパッケージを指定した場合、その指定内容は、パッケージ名に対するすべての WSDL/スキーマバインディングカスタマイズや、 仕様で規定されているデフォルトのパッケージ名アルゴリズムよりも優先されます +Υޥɹԥץͳǥåȥѥåꤷ硢λƤϡѥå̾Ф뤹٤Ƥ WSDL/ޥХǥ󥰥ޥ䡢 ͤǵꤵƤǥեȤΥѥå̾르ꥺͥ褵ޤ .br .di .nr j| \n(dn @@ -280,7 +280,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成されるソースファイルを格納する場所を指定します +륽եǼꤹ .br .di .nr k| \n(dn @@ -296,7 +296,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -コンパイラが実行している処理に関するメッセージを出力します +ѥ餬¹ԤƤ˴ؤåϤޤ .br .di .nr l| \n(dn @@ -312,7 +312,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -バージョン情報を出力します +СϤޤ .br .di .nr m| \n(dn @@ -344,7 +344,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -\f2@WebServiceClient.wsdlLocation\fP 値 +\f2@WebServiceClient.wsdlLocation\fP .br .di .nr o| \n(dn @@ -360,7 +360,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -指定された JAX\-WS 仕様バージョンに従ってコードを生成します。バージョン 2.0 では、JAX\-WS 2.0 仕様に準拠したコードを生成します。 +ꤵ줿 JAX\-WS ͥС˽äƥɤޤС 2.0 ǤϡJAX\-WS 2.0 ͤ˽򤷤ɤޤ .br .di .nr p| \n(dn @@ -376,7 +376,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -wsimport 出力を抑制します +wsimport Ϥޤ .br .di .nr q| \n(dn @@ -387,7 +387,7 @@ wsimport 出力を抑制します .nf .ll \n(34u .nr 80 0 -.nr 38 \w\f3オプション\fP +.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 @@ -422,7 +422,7 @@ wsimport 出力を抑制します .nr 38 \n(n- .if \n(80<\n(38 .nr 80 \n(38 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -483,7 +483,7 @@ wsimport 出力を抑制します .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3説明\fP +\&\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 @@ -766,13 +766,294 @@ wsimport 出力を抑制します .TE .if \n-(b.=0 .nr c. \n(.c-\n(d.-72 .LP -\f2\-b\fP オプションを使って、複数の JAX\-WS および JAXB バインディングファイルを指定できます。 これらのファイルを使って、パッケージ名や Bean 名など、さまざまなカスタマイズが可能です。 JAX\-WS および JAXB バインディングファイルの詳細は、 +\-b ץȤäơʣ JAX\-WS JAXB Хǥ󥰥ե \f2Ǥޤ\fP ΥեȤäơѥå̾ Bean ̾ʤɡޤޤʥޥǽǤJAX\-WS JAXB Хǥ󥰥եξܺ٤ϡ .na -\f2カスタマイズマニュアル\fP @ +\f2ޥޥ˥奢\fP @ .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/customizations.htmlを参照してください。 +https://jax\-ws.dev.java.net/nonav/2.1.1/docs/customizations.html򻲾ȤƤ .LP -.SH "例" +ɽˡ \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://username:password@example.org/stock?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 @@ -780,6 +1061,6 @@ https://jax\-ws.dev.java.net/nonav/2.1.1/docs/customizations.htmlを参照して .fl .fi .LP -Java アーティファクトを生成し、\f2http://stockquote.xyz/quote?wsdl\fP をインポートすることで、それらのアーティファクトをコンパイルします。 +Java ƥեȤ \f2http://stockquote.xyz/quote?wsdl\fP 򥤥ݡȤ뤳ȤǡΥƥեȤ򥳥ѥ뤷ޤ .br diff --git a/src/linux/doc/man/ja/xjc.1 b/src/linux/doc/man/ja/xjc.1 index 83d80e9c21b606fed0bf4505c71b49c966b387ff..7aec40218aaa65aa91a8d36458d6d9345e6d60d5 100644 --- a/src/linux/doc/man/ja/xjc.1 +++ b/src/linux/doc/man/ja/xjc.1 @@ -19,266 +19,277 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH xjc 1 "02 Jun 2010" +.TH xjc 1 "14 Apr 2011" .LP .ad c -.SH "名前" -xjc \- XML バインドのための Java(TM) アーキテクチャー +.SH "̾" +xjc \- XML ХɤΤ Java(TM) ƥ㡼 .br -バインディングコンパイラ +Хǥ󥰥ѥ .LP -\f3仕様バージョン:\fP 2.1 +\f3ͥС:\fP 2.1 .br -\f3リファレンス実装 (RI) バージョン:\fP 2.1.3 .ad l +\f3ե󥹼 (RI) С:\fP 2.1.3 .ad l .LP -.SH "xjc の起動" +.SH "xjc εư" .LP .LP -バインディングコンパイラを起動するには、使用するプラットフォームに応じた \f2bin\fP ディレクトリ内の \f2xjc\fP シェルスクリプトを使用します。また、バインディングコンパイラを実行するための Ant タスクも用意されています。 +Хǥ󥰥ѥưˤϡѤץåȥե˱ bin ǥ쥯ȥ \f2xjc\fP 륹ץ \f2\fP ѤޤޤХǥ󥰥ѥ¹Ԥ뤿 Ant ѰդƤޤ .na -\f2xjc を Ant とともに使用する\fP @ +\f2xjc Ant ȤȤ˻Ѥ\fP @ .fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.htmlための手順を参照してください。 -.LP -.RS 3 - +https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.htmlμ򻲾ȤƤ .LP .LP \f2% xjc \-help\fP .LP -.RE -\f3出力\fP -.LP -.RS 3 - +.SS + .LP .nf \f3 .fl -Usage: xjc [\-options ...] <schema_file/URL/dir> ... [\-b <bindinfo>] ... +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) + \-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 - \-extension : allow vendor extensions \- do not strictly follow the + \-p <pkg> : specifies the target package .fl - Compatibility Rules and App E.2 from the JAXB Spec + \-httpproxy <proxy> : set HTTP/HTTPS proxy; format is [user[:password]@]proxyHost:proxyPort .fl - \-b <file/dir> : specify external bindings files (each <file> must have its own \-b) + \-httpproxyfile <f> : works like \-httpproxy but takes the argument in a file to protect password .fl - If a directory is given, **/*.xjb is searched + \-classpath <arg> : specify where to find user class files .fl - \-d <dir> : generated files will go into this directory + \-catalog <file> : specify catalog files to resolve external entity references; support TR9401, XCatalog, and OASIS XML Catalog format .fl - \-p <pkg> : specifies the target package + \-readOnly : generated files will be in read\-only mode .fl - \-httpproxy <proxy> : set HTTP/HTTPS proxy. Format is [user[:password]@]proxyHost:proxyPort + \-npa : suppress generation of package level annotations (**/package\-info.java) .fl - \-httpproxyfile <file>: set the proxy string (same format as above). + \-no\-header : suppress generation of a file header with timestamp .fl - \-classpath <arg> : specify where to find user class files + \-target 2.0 : behave like XJC 2.0 and generate code that doesnt use any 2.1 features .fl - \-catalog <file> : specify catalog files to resolve external entity references + \-xmlschema : treat input as W3C XML Schema (default) .fl - support TR9401, XCatalog, and OASIS XML Catalog format. + \-relaxng : treat input as RELAX NG (experimental,unsupported) .fl - \-readOnly : generated files will be in read\-only mode + \-relaxng\-compact : treat input as RELAX NG compact syntax (experimental,unsupported) .fl - \-npa : suppress generation of package level annotations (**/package\-info.java) + \-dtd : treat input as XML DTD (experimental,unsupported) .fl - \-no\-header : suppress generation of a file header with timestamp + \-wsdl : treat input as WSDL and compile schemas inside it (experimental,unsupported) .fl - \-target 2.0 : behave like XJC 2.0 and generate code that doesnt use any 2.1 features. + \-verbose : be extra verbose .fl - \-xmlschema : treat input as W3C XML Schema (default) + \-quiet : suppress compiler output .fl - \-relaxng : treat input as RELAX NG (experimental,unsupported) + \-help : display this help message .fl - \-relaxng\-compact : treat input as RELAX NG compact syntax (experimental,unsupported) + \-version : display version information .fl - \-dtd : treat input as XML DTD (experimental,unsupported) + +.fl + .fl - \-wsdl : treat input as WSDL and compile schemas inside it (experimental,unsupported) +Extensions: .fl - \-verbose : be extra verbose + \-Xlocator : enable source location support for generated code .fl - \-quiet : suppress compiler output + \-Xsync\-methods : generate accessor methods with the 'synchronized' keyword .fl - \-help : display this help message + \-mark\-generated : mark the generated code as @javax.annotation.Generated .fl - \-version : display version information + \-episode <FILE> : generate the episode file for separate compilation .fl \fP .fi -.RE .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-nv -デフォルトでは、XJC バインディングコンパイラは、ソーススキーマを処理する前に厳密な検証を実行します。このオプションを使用すると、厳密なスキーマ検証を無効にします。これは、バインディングコンパイラが検証を一切実行しないということではありません。 より厳密でない検証を実行するということです。 +ǥեȤǤϡXJC Хǥ󥰥ѥϡޤ˸̩ʸڤ¹ԤޤΥץѤȡ̩ʥ޸ڤ̵ˤޤϡХǥ󥰥ѥ餬ڤڼ¹ԤʤȤȤǤϤޤ󡣤긷̩Ǥʤڤ¹ԤȤȤǤ .TP 3 \-extension -デフォルトでは、XJC バインディングコンパイラは、JAXB 仕様の「Compatibility」の章で説明されている規則を厳密に強制します。付録 E.2 には、JAXB v1.0 で完全にはサポートされていない一連の W3C XML スキーマ機能が定義されています。 場合によっては、このスイッチで有効になる「\-extension」モードでそれらの機能が使用できるかもしれません。また、デフォルトの厳密なモードでは、仕様に定義されているバインディングカスタマイズのみが使用できます。「\-extension」スイッチを指定すれば、JAXB Vendor 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 つのバインディングファイルを使用したり、それらのカスタマイズを複数のバインディングファイルに分割したりできます。 次に例を示します。 -.RS 3 - -.LP -\f2xjc schema1.xsd schema2.xsd schema3.xsd \-b bindings123.xjb\fP +볰Хǥ󥰥ե 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 -.RE -また、コマンド行にスキーマファイルとバインディングファイルを指定する順番は任意です。 +\f2xjc schema1.xsd schema2.xsd schema3.xsd \-b bindings1.xjb \-b bindings2.xjb \-b bindings3.xjb\fP ޤޥɹԤ˥ޥեȥХǥ󥰥եꤹ֤ǤդǤ .TP 3 \-d <dir> -デフォルトでは、XJC バインディングコンパイラは、Java コンテンツクラスを現在のディレクトリに生成します。このオプションを使用すると、代替出力ディレクトリを指定できます。出力ディレクトリはあらかじめ存在している必要があります。 XJC バインディングコンパイラは、このディレクトリを自動的に作成しません。 +ǥեȤǤϡXJC Хǥ󥰥ѥϡJava ƥĥ饹򸽺ߤΥǥ쥯ȥޤΥץѤȡؽϥǥ쥯ȥǤޤϥǥ쥯ȥϤ餫¸ߤƤɬפޤXJC Хǥ󥰥ѥϡΥǥ쥯ȥưŪ˺ޤ .TP 3 \-p <pkg> -このコマンド行オプション経由でターゲットパッケージを指定した場合、その指定内容は、パッケージ名に対するすべてのバインディングカスタマイズや、仕様で規定されているデフォルトのパッケージ名アルゴリズムよりも優先されます。 +Υޥɹԥץͳǥåȥѥåꤷ硢λƤϡѥå̾Ф뤹٤ƤΥХǥ󥰥ޥ䡢ͤǵꤵƤǥեȤΥѥå̾르ꥺͥ褵ޤ .TP 3 \-httpproxy <proxy> -HTTP/HTTPS プロキシを指定します。形式は [user[:password]@]proxyHost[:proxyPort] です。従来の \f2\-host\fP および \f2\-port\fP は、下位互換性のためにリファレンス実装でもサポートされていますが、推奨されなくなりました。このオプションで指定されたパスワードは、\f2top\fP コマンドを使用するユーザーなど、ほかのユーザーが表示できる引数であることに注意してください。セキュリティーを高めるには、次の \f2\-httpproxyfile\fP を使用してください。 +HTTP/HTTPS ץꤷޤ [user[:password]@]proxyHost[:proxyPort] Ǥ \f2\-host\fP \f2\-port\fP ϡ̸ߴΤ˥ե󥹼Ǥ⥵ݡȤƤޤ侩ʤʤޤΥץǻꤵ줿ѥɤϡ \f2top\fP ޥɤѤ桼ʤɡۤΥ桼ɽǤǤ뤳ȤդƤƥˤϡ \f2\-httpproxyfile\fP ѤƤ .TP 3 \-httpproxyfile <file> -HTTP/HTTPS プロキシをファイル経由で指定します。形式は上記と同じですが、このファイル内に指定されたパスワードをほかのユーザーが表示することはできません。 +HTTP/HTTPS ץեͳǻꤷޤϾ嵭ƱǤΥե˻ꤵ줿ѥɤۤΥ桼ɽ뤳ȤϤǤޤ .TP 3 \-classpath <arg> -\f2<jxb:javaType>\fP および \f2<xjc:superClass>\fP カスタマイズが使用するクライアントアプリケーションのクラスファイルの検索場所を指定します。 +<jxb:javaType> <xjc:superClass> \f2ޥѤ\fP 饤ȥץꥱ \f2饹եθ\fP ꤷޤ .TP 3 \-catalog <file> -外部エンティティー参照を解決するカタログファイルを指定します。TR9401、XCatalog、および OASIS XML Catalog 形式がサポートされます。詳細は、『XML Entity and URI Resolvers』ドキュメントを参照するか、\f2カタログリゾルバ\fPのサンプルアプリケーションを調べてください。 +ƥƥȤ褹륫եꤷޤTR9401XCatalog OASIS XML Catalog ݡȤޤܺ٤ϡXML Entity and URI Resolvers٥ɥȤ򻲾Ȥ뤫 \f2꥾Ф\fP ץ륢ץꥱĴ٤Ƥ .TP 3 \-readOnly -デフォルトでは、XJC バインディングコンパイラは、生成する Java ソースファイルを書き込みから保護しません。このオプションを使用すると、XJC バインディングコンパイラは生成される Java ソースを強制的に読み取り専用にします。 +ǥեȤǤϡXJC Хǥ󥰥ѥϡ Java ե񤭹ߤݸޤ󡣤ΥץѤȡXJC Хǥ󥰥ѥ Java Ūɤ߼Ѥˤޤ .TP 3 \-npa -パッケージレベルの注釈を **/package\-info.java に生成することを抑制します。このスイッチを使用して生成するコードでは、これらの注釈がほかの生成済みクラスに内部化されます。 +ѥå٥ **/package\-info.java 뤳ȤޤΥåѤ륳ɤǤϡ᤬ۤѤߥ饹ޤ .TP 3 \-no\-header -多少のメモとタイムスタンプを含むファイルヘッダーコメントの生成を抑制します。このオプションを使用すると、生成されたコードがわかりにくくなります。 +¿ΥȥॹפޤեإåȤޤΥץѤȡ줿ɤ狼ˤʤޤ .TP 3 \-target 2.0 -なんらかの JAXB 2.1 機能に依存するコードを生成しないようにします。これにより、生成されたコードを JAXB 2.0 ランタイム (JavaSE 6 など) で実行できます。 +ʤ餫 JAXB 2.1 ǽ˰¸륳ɤʤ褦ˤޤˤꡢ줿ɤ JAXB 2.0 󥿥 (JavaSE 6 ʤ) Ǽ¹ԤǤޤ .TP 3 \-xmlschema -入力スキーマを W3C XML スキーマ (デフォルト) と見なします。このスイッチを指定しなくても、入力スキーマは W3C XML スキーマと見なされます。 +ϥޤ W3C XML (ǥե) ȸʤޤΥåꤷʤƤ⡢ϥޤ W3C XML ޤȸʤޤ .TP 3 \-relaxng -入力スキーマを RELAX NG として扱います (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 +ϥޤ RELAX NG Ȥưޤ (Ṳ̄ݡ)RELAX NG ޤΥݡȤ JAXB Vendor Extension Ȥ󶡤Ƥޤ .TP 3 \-relaxng\-compact -入力スキーマを RELAX NG 圧縮構文として処理します (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 +ϥޤ RELAX NG ̹ʸȤƽޤ (Ṳ̄ݡ)RELAX NG ޤΥݡȤ JAXB Vendor Extension Ȥ󶡤Ƥޤ .TP 3 \-dtd -入力スキーマを XML DTD として扱います (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 +ϥޤ XML DTD Ȥưޤ (Ṳ̄ݡ)RELAX NG ޤΥݡȤ JAXB Vendor Extension Ȥ󶡤Ƥޤ .TP 3 \-wsdl -入力を WSDL として扱い、その内部のスキーマをコンパイルします (試験的、未サポート)。 +Ϥ WSDL ȤưΥޤ򥳥ѥ뤷ޤ (Ṳ̄ݡ) .TP 3 \-quiet -進捗情報や警告など、コンパイラの出力を抑制します。 +ĽٹʤɡѥνϤޤ .TP 3 \-verbose -情報メッセージを出力したり特定のエラー発生時にスタックトレースを表示したりするなど、極めて冗長になります。 +åϤΥ顼ȯ˥åȥ졼ɽꤹʤɡˤƾĹˤʤޤ .TP 3 \-help -コンパイラスイッチの概要を表示します。 +ѥ饹åγפɽޤ .TP 3 \-version -コンパイラのバージョン情報を表示します。 +ѥΥСɽޤ .TP 3 <schema file/URL/dir> -コンパイル対象となる 1 つまたは複数のスキーマファイルを指定します。ユーザーがディレクトリを指定した場合、xjc はそのディレクトリを走査し、そこで見つかったすべてのスキーマファイルをコンパイルします。 +ѥоݤȤʤ 1 ĤޤʣΥޥեꤷޤ桼ǥ쥯ȥꤷ硢xjc ϤΥǥ쥯ȥǸĤä٤ƤΥޥե򥳥ѥ뤷ޤ .RE + +.LP .SS -非推奨コマンド行オプションおよび削除されたコマンド行オプションの概要 +ɸΥޥɹԥץ .LP .RS 3 +.TP 3 +\-Xlocator +줿ɤǤϡ󲽤ΤȤ Java Bean 󥹥󥹤˴ޤޤ륽 XML ˴ؤ SAX Locator 󤬸ޤ +.TP 3 +\-Xsync\-methods +줿٤ƤΥ᥽åɥ˥㡼 \f2Ʊ줿\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 オプションで置き換えられました。これらのオプションは、下位互換性を確保する目的で引き続きサポートされますが、ドキュメントには記載されず、将来のリリースで削除される可能性もあります。 +Υץ侩Ȥʤꡢ\f3\-httpproxy\fP ץ֤ޤΥץϡ̸ߴݤŪǰ³ݡȤޤɥȤˤϵܤ줺Υ꡼Ǻǽ⤢ޤ .TP 3 \-use\-runtime -JAXB 2.0 仕様で移植性のあるランタイムが規定されたため、JAXB RI が **/impl/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 コードベースのインストールを使用してください。 -.TP 3 -\-Xlocator & \-Xsync\-methods -これらのスイッチは現時点では無効化されています。この機能は将来、個別のダウンロードとして提供される予定です。 +\-source ߴåϡJAXB 2.0 κǽ Early Access ǤƳޤΥåϡJAXB 2.0 κΥ꡼뤳Ȥˤʤޤ1.0.x ɤɬפϡ1.0.x ɥ١Υ󥹥ȡѤƤ .RE .LP -.RE .SS -コンパイラの制限 +ѥ .LP .LP -通常は、関連するすべてのスキーマを、同じバインディングコンパイラスイッチを指定して 1 つの単位としてコンパイルするのがもっとも安全です。 +̾ϡϢ뤹٤ƤΥޤƱХǥ󥰥ѥ饹åꤷ 1 Ĥñ̤Ȥƥѥ뤹ΤäȤǤ .LP .LP -xjc を実行するときは、次に示す制限に注意してください。これらの制限のほとんどは、xjc を何度か呼び出して複数のスキーマをコンパイルする場合にのみ適用されます。 +xjc ¹ԤȤϡ˼¤դƤ¤ΤۤȤɤϡxjc ٤ƤӽФʣΥޤ򥳥ѥ뤹ˤΤŬѤޤ .LP .RS 3 .TP 2 o -複数のスキーマを同時にコンパイルする場合は、ターゲットの Java パッケージ名に次の優先順位の規則が適用されることに注意してください。 +ʣΥޤƱ˥ѥ뤹ϡåȤ Java ѥå̾˼̤ͥε§ŬѤ뤳ȤդƤ .RS 3 .TP 3 1. -「\f2\-p\fP」コマンド行オプションがもっとも優先されます。 +\f2\-p\fPץޥɹԥץ󤬤äȤͥ褵ޤ .TP 3 2. -<\f2jaxb:package\fP> のカスタマイズ +<\f2jaxb:package\fP> Υޥ .TP 3 3. -\f2targetNamespace\fP が宣言されている場合は、仕様に定義されている \f2targetNamespace\fP \-> Java パッケージ名のアルゴリズムを適用します。 +\f2targetNamespace\fP Ƥϡ \f2ͤƤ targetNamespace\fP \-> Java ѥå̾Υ르ꥺŬѤޤ .TP 3 4. -\f2targetNamespace\fP が宣言されていない場合は、"generated" という名前のハードコードされたパッケージを使用します。 +\f2targetNamespace\fP ƤʤϡgeneratedפȤ̾Υϡɥɤ줿ѥåѤޤ .RE .TP 2 o -名前空間ごとに複数の <\f2jaxb:schemaBindings\fP> を持つことは不正です。 このため、1 つのターゲット名前空間内の 2 つのスキーマを、異なる Java パッケージにコンパイルすることはできません。 +֤̾Ȥʣ <\f2jaxb:schemaBindings\fP> ĤȤǤΤᡢ1 ĤΥå̾ 2 ĤΥޤۤʤ Java ѥå˥ѥ뤹뤳ȤϤǤޤ .TP 2 o -1 つの Java パッケージにコンパイルされるすべてのスキーマは、XJC バインディングコンパイラに同時に送信する必要があります。 個別にコンパイルすることはできず、予期したとおりに動作しません。 +1 Ĥ Java ѥå˥ѥ뤵뤹٤ƤΥޤϡXJC Хǥ󥰥ѥƱɬפޤ̤˥ѥ뤹뤳ȤϤǤͽȤưޤ .TP 2 o -複数のスキーマファイルにまたがる要素置換グループは、同時にコンパイルする必要があります。 +ʣΥޥեˤޤִ롼פϡƱ˥ѥ뤹ɬפޤ .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o -コマンド行でのコンバータの実行 (XJC):[ +ޥɹԤǤΥСμ¹ (XJC): [ .na -\f2コマンド行の命令\fP @ +\f2ޥɹԤ̿\fP @ .fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/xjc.html、 +https://jaxb.dev.java.net/nonav/2.1.3/docs/xjc.html .na -\f2xjc を Ant とともに使用する\fP @ +\f2xjc Ant ȤȤ˻Ѥ\fP @ .fi https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.html] .TP 2 o .na -\f2XML バインドのための JavaTM アーキテクチャー (JAXB)\fP @ +\f2XML ХɤΤ Java ƥ㡼 (JAXB)\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/xml/jaxb/index.html .RE diff --git a/src/share/bin/jli_util.h b/src/share/bin/jli_util.h index 40afaa2106910c9b48d121e437643b7753aaba1b..7601e93be316fd0d2fcf05bded9006a51352cfaa 100644 --- a/src/share/bin/jli_util.h +++ b/src/share/bin/jli_util.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,7 +35,6 @@ char *JLI_StringDup(const char *s1); void JLI_MemFree(void *ptr); int JLI_StrCCmp(const char *s1, const char* s2); - #define JLI_StrLen(p1) strlen((p1)) #define JLI_StrChr(p1, p2) strchr((p1), (p2)) #define JLI_StrRChr(p1, p2) strrchr((p1), (p2)) @@ -48,6 +47,7 @@ int JLI_StrCCmp(const char *s1, const char* s2); #define JLI_StrSpn(p1, p2) strspn((p1), (p2)) #define JLI_StrCSpn(p1, p2) strcspn((p1), (p2)) #define JLI_StrPBrk(p1, p2) strpbrk((p1), (p2)) +#define JLI_StrTok(p1, p2) strtok((p1), (p2)) /* On Windows lseek() is in io.h rather than the location dictated by POSIX. */ #ifdef _WIN32 diff --git a/src/share/classes/com/sun/beans/TypeResolver.java b/src/share/classes/com/sun/beans/TypeResolver.java index 6196b22f2a14a2881c6b16e45d884bad89162ebf..8660213a050ee1630b9909c862e1ea208f47d979 100644 --- a/src/share/classes/com/sun/beans/TypeResolver.java +++ b/src/share/classes/com/sun/beans/TypeResolver.java @@ -175,8 +175,8 @@ public final class TypeResolver { /** * Converts the given {@code type} to the corresponding class. * This method implements the concept of type erasure, - * that is described in <a href="http://jscstage.sfbay.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.6">section 4.6</a> - * of Java Language Specification. + * that is described in section 4.6 of + * <cite>The Java™ Language Specification</cite>. * * @param type the array of types to convert * @return a corresponding class diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties index 3696c0e6b1090d7d98bf19ab682a0a54d5d1b11d..904a49352eb562d891cc7d6a8d0a465f9e610839 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties @@ -79,5 +79,9 @@ FileChooser.renameFileDialogText=Rename file "{0}" to FileChooser.renameFileErrorTitle=Error FileChooser.renameFileErrorText=Error renaming file "{0}" to "{1}" +# dummy resource added for translation automation +OptionPane.okButtonText=OK OptionPane.okButtonMnemonic=79 +# dummy resource added for translation automation +OptionPane.cancelButtonText=Cancel OptionPane.cancelButtonMnemonic=67 diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties index 3abf19588f3260aec66b2d383949a9a098ef1c43..571bc0afae3287e56b6903a1721a506d550ddab4 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties @@ -79,6 +79,10 @@ FileChooser.renameFileDialogText=Datei "{0}" umbenennen in FileChooser.renameFileErrorTitle=Fehler FileChooser.renameFileErrorText=Fehler beim Umbenennen der Datei "{0}" in "{1}" +# dummy resource added for translation automation +OptionPane.okButtonText=OK OptionPane.okButtonMnemonic=79 +# dummy resource added for translation automation +OptionPane.cancelButtonText=Abbrechen OptionPane.cancelButtonMnemonic=65 diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties index c9340d0bf5ec9f128bb0dac4f3fc5e82f97f451e..6daa4d9b441811eac1093152b215d5755fedd97e 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties @@ -79,6 +79,10 @@ FileChooser.renameFileDialogText=Cambiar el nombre del archivo "{0}" por FileChooser.renameFileErrorTitle=Error FileChooser.renameFileErrorText=Error al cambiar el nombre del archivo "{0}" a "{1}" +# dummy resource added for translation automation +OptionPane.okButtonText=Aceptar OptionPane.okButtonMnemonic=65 +# dummy resource added for translation automation +OptionPane.cancelButtonText=Cancelar OptionPane.cancelButtonMnemonic=67 diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties index a6a17749c3e69b524ff660c3b6b8afc69ab71bab..9f4e0e559f7051d45843407f2c0655ad1cbf3915 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties @@ -79,6 +79,10 @@ FileChooser.renameFileDialogText=Renomme le fichier "{0}" en FileChooser.renameFileErrorTitle=Erreur FileChooser.renameFileErrorText=Erreur lors du changement de nom du fichier "{0}" en "{1}" +# dummy resource added for translation automation +OptionPane.okButtonText=OK OptionPane.okButtonMnemonic=79 +# dummy resource added for translation automation +OptionPane.cancelButtonText=Annuler OptionPane.cancelButtonMnemonic=65 diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties index 0bdb3413c3c85b5526daaa79d0bae274ea17ae55..21cd8f7782657aa4059e7cc7d603b5ea222ed48f 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties @@ -79,6 +79,10 @@ FileChooser.renameFileDialogText=Rinomina file "{0}" in FileChooser.renameFileErrorTitle=Errore FileChooser.renameFileErrorText=Errore durante la ridenominazione del file "{0}" in "{1}" +# dummy resource added for translation automation +OptionPane.okButtonText=OK OptionPane.okButtonMnemonic=79 +# dummy resource added for translation automation +OptionPane.cancelButtonText=Annulla OptionPane.cancelButtonMnemonic=65 diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties index 30f7bf8d3447cb48e948dc5d93fe8b8a593a14c0..c7ff0bb97a21c52606eed8d25b0863ad9f1912db 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties @@ -79,6 +79,10 @@ FileChooser.renameFileDialogText=\u30D5\u30A1\u30A4\u30EB"{0}"\u3092\u6B21\u306E FileChooser.renameFileErrorTitle=\u30A8\u30E9\u30FC FileChooser.renameFileErrorText=\u30D5\u30A1\u30A4\u30EB"{0}"\u306E"{1}"\u3078\u306E\u5909\u66F4\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F +# dummy resource added for translation automation +OptionPane.okButtonText=OK(O) OptionPane.okButtonMnemonic=79 +# dummy resource added for translation automation +OptionPane.cancelButtonText=\u53D6\u6D88(C) OptionPane.cancelButtonMnemonic=67 diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties index eeb35411d9df6ec69351f20c44f4bfa279498d3c..cb029e7b0253b1efa2ed83e8df385c6298c9d3ce 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties @@ -79,6 +79,10 @@ FileChooser.renameFileDialogText="{0}" \uD30C\uC77C\uC758 \uC774\uB984 \uBC14\uA FileChooser.renameFileErrorTitle=\uC624\uB958 FileChooser.renameFileErrorText="{0}" \uD30C\uC77C\uC758 \uC774\uB984\uC744 "{1}"(\uC73C)\uB85C \uBC14\uAFB8\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +# dummy resource added for translation automation +OptionPane.okButtonText=\uD655\uC778(O) OptionPane.okButtonMnemonic=79 +# dummy resource added for translation automation +OptionPane.cancelButtonText=\uCDE8\uC18C(C) OptionPane.cancelButtonMnemonic=67 diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties index 89d49e039c50d83ae306b9196c6b55ca0c4d5f73..6fb63b6764f54f96fe673ece936926d4f3e84a3b 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties @@ -79,6 +79,10 @@ FileChooser.renameFileDialogText=Renomear arquivo "{0}" por FileChooser.renameFileErrorTitle=Erro FileChooser.renameFileErrorText=Erro ao renomear o arquivo "{0}" por "{1}" +# dummy resource added for translation automation +OptionPane.okButtonText=OK OptionPane.okButtonMnemonic=79 +# dummy resource added for translation automation +OptionPane.cancelButtonText=Cancelar OptionPane.cancelButtonMnemonic=67 diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties index 852f05330d03e69613eb6d01383263919ba47c5f..cfde4686b9b599be40d4c7594c2c39de6802bafd 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties @@ -79,6 +79,10 @@ FileChooser.renameFileDialogText=Namn\u00E4ndra fil "{0}" till FileChooser.renameFileErrorTitle=Fel FileChooser.renameFileErrorText=Fel vid namn\u00E4ndring av fil "{0}" till "{1}" +# dummy resource added for translation automation +OptionPane.okButtonText=OK OptionPane.okButtonMnemonic=79 +# dummy resource added for translation automation +OptionPane.cancelButtonText=Avbryt OptionPane.cancelButtonMnemonic=65 diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties index 8024e043b4f99ee63f2eb2cb13267f78de9c3d06..58506b0107da6c33e669e866295eb75aa72b72fb 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties @@ -79,6 +79,10 @@ FileChooser.renameFileDialogText=\u5C06\u6587\u4EF6 "{0}" \u91CD\u547D\u540D\u4E FileChooser.renameFileErrorTitle=\u9519\u8BEF FileChooser.renameFileErrorText=\u5C06\u6587\u4EF6 "{0}" \u91CD\u547D\u540D\u4E3A "{1}" \u65F6\u51FA\u9519 +# dummy resource added for translation automation +OptionPane.okButtonText=\u786E\u5B9A(O) OptionPane.okButtonMnemonic=79 +# dummy resource added for translation automation +OptionPane.cancelButtonText=\u53D6\u6D88(C) OptionPane.cancelButtonMnemonic=67 diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties index d8952c40d334930014ffcbd099b3c4c5798a6378..ac8c732dc6d8b99e2ef68f77c62d85b12e18729e 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties @@ -79,6 +79,10 @@ FileChooser.renameFileDialogText=\u5C07\u6A94\u6848 "{0}" \u91CD\u65B0\u547D\u54 FileChooser.renameFileErrorTitle=\u932F\u8AA4 FileChooser.renameFileErrorText=\u5C07\u6A94\u6848 "{0}" \u91CD\u65B0\u547D\u540D\u70BA "{1}" \u6642\u51FA\u73FE\u932F\u8AA4 +# dummy resource added for translation automation +OptionPane.okButtonText=\u78BA\u5B9A(O) OptionPane.okButtonMnemonic=79 +# dummy resource added for translation automation +OptionPane.cancelButtonText=\u53D6\u6D88(C) OptionPane.cancelButtonMnemonic=67 diff --git a/src/share/classes/com/sun/java/util/jar/pack/package.html b/src/share/classes/com/sun/java/util/jar/pack/package.html index 084e0df7e10cf59c01148470d622300a57e269e3..bf3fa743028d5d2d7bfe86645d7fb898b548afec 100644 --- a/src/share/classes/com/sun/java/util/jar/pack/package.html +++ b/src/share/classes/com/sun/java/util/jar/pack/package.html @@ -88,8 +88,8 @@ Jar File Specification :<a href="http://java.sun.com/j2se/1.3/docs/guide/jar/jar http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html</a></li> <li> -Java Virtual Machine Specification : <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html"> -http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html</a></li> +Class File Specification: Chapter 4 of +<em>The Java™ Virtual Machine Specification</em> <li> Hypertext Transfer Protocol -- HTTP/1.1 : <a href="http://www.ietf.org/rfc/rfc2616.txt"> diff --git a/src/share/classes/com/sun/jdi/Accessible.java b/src/share/classes/com/sun/jdi/Accessible.java index 85d2b89397c18ca602459c18be2bd6fb3bf955b1..55b3b45a398664ffad49a759e4da939436deae41 100644 --- a/src/share/classes/com/sun/jdi/Accessible.java +++ b/src/share/classes/com/sun/jdi/Accessible.java @@ -42,12 +42,9 @@ public interface Accessible { * Returns the Java<sup><font size=-2>TM</font></sup> * programming language modifiers, encoded in an integer. * <p> - * The modifier encodings are defined in the - * <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual Machine - * Specification</a>, in the <code>access_flag</code> tables for - * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#75734">classes</a>, - * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#88358">fields</a>, and - * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#75568">methods</a>. + * The modifier encodings are defined in + * <cite>The Java™ Virtual Machine Specification</cite> + * in the <code>access_flag</code> tables for classes(section 4.1), fields(section 4.5), and methods(section 4.6). */ public int modifiers(); diff --git a/src/share/classes/com/sun/jdi/ArrayType.java b/src/share/classes/com/sun/jdi/ArrayType.java index 8cf86f46a8ea84d78fbd18a69dfe30da7ea300fb..6e3c3f6f95f2de62d2d0e235f164b004a5713f78 100644 --- a/src/share/classes/com/sun/jdi/ArrayType.java +++ b/src/share/classes/com/sun/jdi/ArrayType.java @@ -77,11 +77,9 @@ public interface ArrayType extends ReferenceType { * as specified in the array declaration. * <P> * Note: The component type of a array will always be - * created or loaded before the array - see the - * <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual - * Machine Specification</a>, section - * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ConstantPool.doc.html#79473">5.3.3 - * Creating Array Classes</a>. + * created or loaded before the array - see + * <cite>The Java™ Virtual Machine Specification</cite>, + * section 5.3.3 - Creating Array Classes. * However, although the component type will be loaded it may * not yet be prepared, in which case the type will be returned * but attempts to perform some operations on the returned type diff --git a/src/share/classes/com/sun/jdi/ClassLoaderReference.java b/src/share/classes/com/sun/jdi/ClassLoaderReference.java index e0cdedd3e63c8676c2b0a5059090dab74d9cf982..cccf7c315f5c8dae088e9e3931b11c8ac7a7423e 100644 --- a/src/share/classes/com/sun/jdi/ClassLoaderReference.java +++ b/src/share/classes/com/sun/jdi/ClassLoaderReference.java @@ -71,11 +71,9 @@ public interface ClassLoaderReference extends ObjectReference { * <p> * No ordering of the returned list is guaranteed. * <p> - * See the revised - * <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a> section - * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ConstantPool.doc.html#72007">5.3 - * Creation and Loading</a> + * See + * <cite>The Java™ Virtual Machine Specification</cite>, + * section 5.3 - Creation and Loading * for more information on the initiating classloader. * <p> * Note that unlike {@link #definedClasses()} diff --git a/src/share/classes/com/sun/jdi/ClassNotLoadedException.java b/src/share/classes/com/sun/jdi/ClassNotLoadedException.java index f669a15f1de3a64f7f3a8102e9b1ef429433db26..b139b3f065b799a0085262b072ee8dd79a26ea44 100644 --- a/src/share/classes/com/sun/jdi/ClassNotLoadedException.java +++ b/src/share/classes/com/sun/jdi/ClassNotLoadedException.java @@ -60,9 +60,9 @@ package com.sun.jdi; * is visible to the class loader of enclosing class. (That is, the * class loader of the enclosing class must be an <i>initiating</i> class * loader for the class in question.) - * See the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a> for - * more details. + * See + * <cite>The Java™ Virtual Machine Specification</cite> + * for more details. * * @author Gordon Hirsch * @since 1.3 diff --git a/src/share/classes/com/sun/jdi/ClassType.java b/src/share/classes/com/sun/jdi/ClassType.java index b5bc6532081d45d60b940f0a40b733cdb7c4381d..430832776b9df5e310884d108c732667f2c05f57 100644 --- a/src/share/classes/com/sun/jdi/ClassType.java +++ b/src/share/classes/com/sun/jdi/ClassType.java @@ -164,10 +164,8 @@ public interface ClassType extends ReferenceType { * component type is passed. The component type can be a primitive type. * Autoboxing is not supported. * - * See the <a href="http://java.sun.com/docs/books/jls/"> - * Java Language Specification</a>. - * section - * <a href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#184206">5.2</a> + * See Section 5.2 of + * <cite>The Java™ Language Specification</cite> * for more information on assignment compatibility. * <p> * By default, all threads in the target VM are resumed while @@ -280,10 +278,8 @@ public interface ClassType extends ReferenceType { * component type is passed. The component type can be a primitive type. * Autoboxing is not supported. * - * See the <a href="http://java.sun.com/docs/books/jls/"> - * Java Language Specification</a>. - * section - * <a href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#184206">5.2</a> + * See section 5.2 of + * <cite>The Java™ Language Specification</cite> * for more information on assignment compatibility. * <p> * By default, all threads in the target VM are resumed while diff --git a/src/share/classes/com/sun/jdi/LocalVariable.java b/src/share/classes/com/sun/jdi/LocalVariable.java index 23f0adbc0809e2728914bbdbab0c375bacc5e85a..fd0b9e4537b55c7c61e637f762be36e10b17e1cb 100644 --- a/src/share/classes/com/sun/jdi/LocalVariable.java +++ b/src/share/classes/com/sun/jdi/LocalVariable.java @@ -102,9 +102,7 @@ public interface LocalVariable extends Mirror, Comparable<LocalVariable> { /** * Gets the generic signature for this variable if there is one. * Generic signatures are described in the - * <a href="http://java.sun.com/docs/books/vmspec"> - * "Java<sup><font size=-2>TM</font></sup> - * Virtual Machine Specification, 3rd Edition.</a> + * <cite>The Java™ Virtual Machine Specification</cite>. * * @return a string containing the generic signature, or <code>null</code> * if there is no generic signature. diff --git a/src/share/classes/com/sun/jdi/Method.java b/src/share/classes/com/sun/jdi/Method.java index a34ad479b445d2d4bdedc399075658342182e150..ea1044f61971916baf1d567fd4e43e752029f0d3 100644 --- a/src/share/classes/com/sun/jdi/Method.java +++ b/src/share/classes/com/sun/jdi/Method.java @@ -164,10 +164,8 @@ public interface Method extends TypeComponent, Locatable, Comparable<Method> { /** * Determine if this method is a bridge method. Bridge - * methods are defined in the - * <a href="http://java.sun.com/docs/books/jls"> - * "Java<sup><font size=-2>TM</font></sup> - * Language Specification, 3rd Edition.</a> + * methods are defined in + * <cite>The Java™ Language Specification</cite>. * * @return <code>true</code> if the method is a bridge method, * false otherwise. diff --git a/src/share/classes/com/sun/jdi/ObjectReference.java b/src/share/classes/com/sun/jdi/ObjectReference.java index 557fc92e1bca044037107e2ce720c72a17a4bfd9..a184f25a13233ae3dd7b29e38ebd371294c9a8dd 100644 --- a/src/share/classes/com/sun/jdi/ObjectReference.java +++ b/src/share/classes/com/sun/jdi/ObjectReference.java @@ -118,10 +118,8 @@ public interface ObjectReference extends Value * enclosing class's class loader). Primitive values must be * either assignment compatible with the field type or must be * convertible to the field type without loss of information. - * See the <a href="http://java.sun.com/docs/books/jls/"> - * Java<sup><font size=-2>TM</font></sup> Language Specification</a>. - * section - * <a href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#184206">5.2</a> + * See section 5.2 of + * <cite>The Java™ Language Specification</cite> * for more information on assignment * compatibility. * @@ -182,18 +180,13 @@ public interface ObjectReference extends Value * component type is passed. The component type can be a primitive type. * Autoboxing is not supported. * - * See the <a href="http://java.sun.com/docs/books/jls/"> - * Java Language Specification</a>. - * section - * <a href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#184206">5.2</a> + * See section 5.2 of + * <cite>The Java™ Language Specification</cite> * for more information on assignment compatibility. * <p> * By default, the method is invoked using dynamic lookup as - * documented in the - * <a href="http://java.sun.com/docs/books/jls/"> - * Java Language Specification</a> - * second edition, section - * <a href="http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#45606">15.12.4.4</a>; + * documented in section 15.12.4.4 of + * <cite>The Java™ Language Specification</cite> * in particular, overriding based on the runtime type of the object * mirrored by this {@link ObjectReference} will occur. This * behavior can be changed by specifying the diff --git a/src/share/classes/com/sun/jdi/ReferenceType.java b/src/share/classes/com/sun/jdi/ReferenceType.java index 4baae6bb72e64f48630dd2915bb8b829d70a1a30..65accef7861597b3392f0628a23c43626e86db66 100644 --- a/src/share/classes/com/sun/jdi/ReferenceType.java +++ b/src/share/classes/com/sun/jdi/ReferenceType.java @@ -30,9 +30,8 @@ import java.util.Map; /** * The type of an object in a target VM. ReferenceType encompasses - * classes, interfaces, and array types as defined in the - * <a href="http://java.sun.com/docs/books/jls/"> - * Java<sup><font size=-2>TM</font></sup> Language Specification</a>. + * classes, interfaces, and array types as defined in + * <cite>The Java™ Language Specification</cite>. * All ReferenceType objects belong to one of the following * subinterfaces: * {@link ClassType} for classes, @@ -98,9 +97,7 @@ public interface ReferenceType /** * Gets the generic signature for this type if there is one. * Generic signatures are described in the - * <a href="http://java.sun.com/docs/books/vmspec"> - * "Java<sup><font size=-2>TM</font></sup> - * Virtual Machine Specification, 3rd Edition.</a> + * <cite>The Java™ Virtual Machine Specification</cite>. * * @return a string containing the generic signature, or <code>null</code> * if there is no generic signature. diff --git a/src/share/classes/com/sun/jdi/TypeComponent.java b/src/share/classes/com/sun/jdi/TypeComponent.java index b1e02f5df8d28f05c731ef5467bceec90322bc77..6c6e28307356783ff5cf0eba3919413f19f0fd0a 100644 --- a/src/share/classes/com/sun/jdi/TypeComponent.java +++ b/src/share/classes/com/sun/jdi/TypeComponent.java @@ -74,9 +74,7 @@ public interface TypeComponent extends Mirror, Accessible { /** * Gets the generic signature for this TypeComponent if there is one. * Generic signatures are described in the - * <a href="http://java.sun.com/docs/books/vmspec"> - * "Java<sup><font size=-2>TM</font></sup> - * Virtual Machine Specification, 3rd Edition.</a> + * <cite>The Java™ Virtual Machine Specification</cite>. * * @return a string containing the generic signature, or <code>null</code> * if there is no generic signature. diff --git a/src/share/classes/com/sun/media/sound/DLSInstrument.java b/src/share/classes/com/sun/media/sound/DLSInstrument.java index a73a4c68f39e9b6ee29af379506562150166c259..fe9fde7fefe4ced6b7dafeba06e71f3e007ef3b6 100644 --- a/src/share/classes/com/sun/media/sound/DLSInstrument.java +++ b/src/share/classes/com/sun/media/sound/DLSInstrument.java @@ -25,6 +25,7 @@ package com.sun.media.sound; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -439,10 +440,10 @@ public class DLSInstrument extends ModelInstrument { } public byte[] getGuid() { - return guid; + return guid == null ? null : Arrays.copyOf(guid, guid.length); } public void setGuid(byte[] guid) { - this.guid = guid; + this.guid = guid == null ? null : Arrays.copyOf(guid, guid.length); } } diff --git a/src/share/classes/com/sun/media/sound/DLSSample.java b/src/share/classes/com/sun/media/sound/DLSSample.java index afddfd0fa559545685d4bd008add722d2e1914c9..28327e68f6cb3c9c02d9e32328fed26e1fa89480 100644 --- a/src/share/classes/com/sun/media/sound/DLSSample.java +++ b/src/share/classes/com/sun/media/sound/DLSSample.java @@ -25,6 +25,7 @@ package com.sun.media.sound; import java.io.InputStream; +import java.util.Arrays; import javax.sound.midi.Soundbank; import javax.sound.midi.SoundbankResource; import javax.sound.sampled.AudioFormat; @@ -113,10 +114,10 @@ public class DLSSample extends SoundbankResource { } public byte[] getGuid() { - return guid; + return guid == null ? null : Arrays.copyOf(guid, guid.length); } public void setGuid(byte[] guid) { - this.guid = guid; + this.guid = guid == null ? null : Arrays.copyOf(guid, guid.length); } } diff --git a/src/share/classes/com/sun/media/sound/ModelConnectionBlock.java b/src/share/classes/com/sun/media/sound/ModelConnectionBlock.java index 2f8702c2026e807fbecc630db6b7e28839ba5f41..3f21aa0b9d608d33445e229e3de43fb2205ffde1 100644 --- a/src/share/classes/com/sun/media/sound/ModelConnectionBlock.java +++ b/src/share/classes/com/sun/media/sound/ModelConnectionBlock.java @@ -24,6 +24,8 @@ */ package com.sun.media.sound; +import java.util.Arrays; + /** * Connection blocks are used to connect source variable * to a destination variable. @@ -117,19 +119,17 @@ public class ModelConnectionBlock { } public ModelSource[] getSources() { - return sources; + return Arrays.copyOf(sources, sources.length); } public void setSources(ModelSource[] source) { - this.sources = source; + this.sources = source == null ? no_sources : Arrays.copyOf(source, source.length); } public void addSource(ModelSource source) { ModelSource[] oldsources = sources; sources = new ModelSource[oldsources.length + 1]; - for (int i = 0; i < oldsources.length; i++) { - sources[i] = oldsources[i]; - } + System.arraycopy(oldsources, 0, sources, 0, oldsources.length); sources[sources.length - 1] = source; } } diff --git a/src/share/classes/com/sun/media/sound/SoftChannel.java b/src/share/classes/com/sun/media/sound/SoftChannel.java index 1fc20b75b83897342a70c2b607862b8edc02dbeb..70208f78e7d84c3d753e50b91bbddde1e37ea794 100644 --- a/src/share/classes/com/sun/media/sound/SoftChannel.java +++ b/src/share/classes/com/sun/media/sound/SoftChannel.java @@ -503,7 +503,7 @@ public class SoftChannel implements MidiChannel, ModelDirectedPlayer { firstVoice = true; voiceNo = 0; - int tunedKey = (int)(Math.round(tuning.getTuning()[noteNumber]/100.0)); + int tunedKey = (int)(Math.round(tuning.getTuning(noteNumber)/100.0)); play_noteNumber = noteNumber; play_velocity = velocity; play_delay = delay; @@ -607,7 +607,7 @@ public class SoftChannel implements MidiChannel, ModelDirectedPlayer { firstVoice = true; voiceNo = 0; - int tunedKey = (int)(Math.round(tuning.getTuning()[noteNumber]/100.0)); + int tunedKey = (int)(Math.round(tuning.getTuning(noteNumber)/100.0)); play_noteNumber = noteNumber; play_velocity = lastVelocity[noteNumber]; play_releasetriggered = true; @@ -632,7 +632,7 @@ public class SoftChannel implements MidiChannel, ModelDirectedPlayer { int delay = play_delay; boolean releasetriggered = play_releasetriggered; - SoftPerformer p = current_instrument.getPerformers()[performerIndex]; + SoftPerformer p = current_instrument.getPerformer(performerIndex); if (firstVoice) { firstVoice = false; diff --git a/src/share/classes/com/sun/media/sound/SoftInstrument.java b/src/share/classes/com/sun/media/sound/SoftInstrument.java index 3f26a2be51869fa72be4b4b9f2672de6fe137b78..78f8926b5c242beccee95774fa8d4328f1676f83 100644 --- a/src/share/classes/com/sun/media/sound/SoftInstrument.java +++ b/src/share/classes/com/sun/media/sound/SoftInstrument.java @@ -76,7 +76,12 @@ public class SoftInstrument extends Instrument { return data; } + /* am: currently getPerformers() is not used (replaced with getPerformer(int)) public SoftPerformer[] getPerformers() { return performers; } + */ + public SoftPerformer getPerformer(int index) { + return performers[index]; + } } diff --git a/src/share/classes/com/sun/media/sound/SoftMixingDataLine.java b/src/share/classes/com/sun/media/sound/SoftMixingDataLine.java index 738c5289bb7c112ac4b3550d76f1ab1a83cb2736..baaf9e844d924e6fbdafd4ea299005e97623bea6 100644 --- a/src/share/classes/com/sun/media/sound/SoftMixingDataLine.java +++ b/src/share/classes/com/sun/media/sound/SoftMixingDataLine.java @@ -505,7 +505,7 @@ public abstract class SoftMixingDataLine implements DataLine { } public Control[] getControls() { - return controls; + return Arrays.copyOf(controls, controls.length); } public boolean isControlSupported(Type control) { diff --git a/src/share/classes/com/sun/media/sound/SoftProvider.java b/src/share/classes/com/sun/media/sound/SoftProvider.java index dfa0fb2bfb42e4240490ec513220c820f20e74bb..bf3c45eb7fb08a44054e9ee16fa0568e08512da6 100644 --- a/src/share/classes/com/sun/media/sound/SoftProvider.java +++ b/src/share/classes/com/sun/media/sound/SoftProvider.java @@ -24,6 +24,7 @@ */ package com.sun.media.sound; +import java.util.Arrays; import javax.sound.midi.MidiDevice; import javax.sound.midi.MidiDevice.Info; import javax.sound.midi.spi.MidiDeviceProvider; @@ -39,7 +40,7 @@ public class SoftProvider extends MidiDeviceProvider { private static Info[] softinfos = {softinfo}; public MidiDevice.Info[] getDeviceInfo() { - return softinfos; + return Arrays.copyOf(softinfos, softinfos.length); } public MidiDevice getDevice(MidiDevice.Info info) { diff --git a/src/share/classes/com/sun/media/sound/SoftTuning.java b/src/share/classes/com/sun/media/sound/SoftTuning.java index 8fbdfa96dc817c7c4aa6bf47292b22c0f3840756..611db14e5270a01d8cc403829c08c410ce5f18d4 100644 --- a/src/share/classes/com/sun/media/sound/SoftTuning.java +++ b/src/share/classes/com/sun/media/sound/SoftTuning.java @@ -25,6 +25,7 @@ package com.sun.media.sound; import java.io.UnsupportedEncodingException; +import java.util.Arrays; import javax.sound.midi.Patch; @@ -234,8 +235,10 @@ public class SoftTuning { } } + // am: getTuning(int) is more effective. + // currently getTuning() is used only by tests public double[] getTuning() { - return tuning; + return Arrays.copyOf(tuning, tuning.length); } public double getTuning(int noteNumber) { diff --git a/src/share/classes/com/sun/rowset/CachedRowSetImpl.java b/src/share/classes/com/sun/rowset/CachedRowSetImpl.java index cce2997202b31a9357f46d9a319329cee5b56d23..74ac1b2bf238f17cee11352897da34fca1c6bb15 100644 --- a/src/share/classes/com/sun/rowset/CachedRowSetImpl.java +++ b/src/share/classes/com/sun/rowset/CachedRowSetImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -111,13 +111,13 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern */ private String tableName; - /** * A <code>Vector</code> object containing the <code>Row</code> * objects that comprise this <code>CachedRowSetImpl</code> object. * @serial */ - private Vector rvh; + private Vector<Object> rvh; + /** * The current postion of the cursor in this <code>CachedRowSetImpl</code> * object. @@ -293,12 +293,12 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern /** * The Vector holding the Match Columns */ - private Vector iMatchColumns; + private Vector<Integer> iMatchColumns; /** * The Vector that will hold the Match Column names. */ - private Vector strMatchColumns; + private Vector<String> strMatchColumns; /** * Trigger that indicates whether the active SyncProvider is exposes the @@ -484,7 +484,7 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern */ private void initContainer() { - rvh = new Vector(100); + rvh = new Vector<Object>(100); cursorPos = 0; absolutePos = 0; numRows = 0; @@ -523,12 +523,12 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern //Instantiating the vector for MatchColumns - iMatchColumns = new Vector(10); + iMatchColumns = new Vector<Integer>(10); for(int i = 0; i < 10 ; i++) { iMatchColumns.add(i,Integer.valueOf(-1)); } - strMatchColumns = new Vector(10); + strMatchColumns = new Vector<String>(10); for(int j = 0; j < 10; j++) { strMatchColumns.add(j,null); } @@ -622,7 +622,7 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern Row currentRow; int numCols; int i; - Map map = getTypeMap(); + Map<String, Class<?>> map = getTypeMap(); Object obj; int mRows; @@ -939,14 +939,9 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern */ public void acceptChanges(Connection con) throws SyncProviderException{ - try{ - setConnection(con); - acceptChanges(); - } catch (SyncProviderException spe) { - throw spe; - } catch(SQLException sqle){ - throw new SyncProviderException(sqle.getMessage()); - } + setConnection(con); + acceptChanges(); + } /** @@ -1289,14 +1284,7 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern */ public Collection<?> toCollection() throws SQLException { - TreeMap tMap; - int count = 0; - Row origRow; - Vector newRow; - - int colCount = ((RowSetMetaDataImpl)this.getMetaData()).getColumnCount(); - - tMap = new TreeMap(); + TreeMap<Integer, Object> tMap = new TreeMap<>(); for (int i = 0; i<numRows; i++) { tMap.put(Integer.valueOf(i), rvh.get(i)); @@ -1325,10 +1313,8 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern */ public Collection<?> toCollection(int column) throws SQLException { - Vector vec; - Row origRow; int nRows = numRows; - vec = new Vector(nRows); + Vector<Object> vec = new Vector<>(nRows); // create a copy CachedRowSetImpl crsTemp; @@ -2953,7 +2939,7 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern */ public Object getObject(int columnIndex) throws SQLException { Object value; - java.util.Map map; + Map<String, Class<?>> map; // sanity check. checkIndex(columnIndex); @@ -7257,7 +7243,7 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern Row currentRow; int numCols; int i; - Map map = getTypeMap(); + Map<String, Class<?>> map = getTypeMap(); Object obj; int mRows; @@ -7304,11 +7290,11 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern resultSet.absolute(start -1); } if( pageSize == 0) { - rvh = new Vector(getMaxRows()); + rvh = new Vector<Object>(getMaxRows()); } else{ - rvh = new Vector(getPageSize()); + rvh = new Vector<Object>(getPageSize()); } if (data == null) { diff --git a/src/share/classes/com/sun/rowset/JdbcRowSetImpl.java b/src/share/classes/com/sun/rowset/JdbcRowSetImpl.java index fa46e55d8585ebe59d3646b2ecbeb3e2e6d65da9..f29d7d9ef2a3b710fc24393d158e2841c0e893cb 100644 --- a/src/share/classes/com/sun/rowset/JdbcRowSetImpl.java +++ b/src/share/classes/com/sun/rowset/JdbcRowSetImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -93,12 +93,12 @@ public class JdbcRowSetImpl extends BaseRowSet implements JdbcRowSet, Joinable { /** * The Vector holding the Match Columns */ - private Vector iMatchColumns; + private Vector<Integer> iMatchColumns; /** * The Vector that will hold the Match Column names. */ - private Vector strMatchColumns; + private Vector<String> strMatchColumns; protected transient JdbcRowSetResourceBundle resBundle; @@ -213,12 +213,12 @@ public class JdbcRowSetImpl extends BaseRowSet implements JdbcRowSet, Joinable { //Instantiating the vector for MatchColumns - iMatchColumns = new Vector(10); + iMatchColumns = new Vector<Integer>(10); for(int i = 0; i < 10 ; i++) { iMatchColumns.add(i,Integer.valueOf(-1)); } - strMatchColumns = new Vector(10); + strMatchColumns = new Vector<String>(10); for(int j = 0; j < 10; j++) { strMatchColumns.add(j,null); } @@ -286,12 +286,12 @@ public class JdbcRowSetImpl extends BaseRowSet implements JdbcRowSet, Joinable { //Instantiating the vector for MatchColumns - iMatchColumns = new Vector(10); + iMatchColumns = new Vector<Integer>(10); for(int i = 0; i < 10 ; i++) { iMatchColumns.add(i,Integer.valueOf(-1)); } - strMatchColumns = new Vector(10); + strMatchColumns = new Vector<String>(10); for(int j = 0; j < 10; j++) { strMatchColumns.add(j,null); } @@ -373,12 +373,12 @@ public class JdbcRowSetImpl extends BaseRowSet implements JdbcRowSet, Joinable { //Instantiating the vector for MatchColumns - iMatchColumns = new Vector(10); + iMatchColumns = new Vector<Integer>(10); for(int i = 0; i < 10 ; i++) { iMatchColumns.add(i,Integer.valueOf(-1)); } - strMatchColumns = new Vector(10); + strMatchColumns = new Vector<String>(10); for(int j = 0; j < 10; j++) { strMatchColumns.add(j,null); } @@ -463,12 +463,12 @@ public class JdbcRowSetImpl extends BaseRowSet implements JdbcRowSet, Joinable { //Instantiating the vector for MatchColumns - iMatchColumns = new Vector(10); + iMatchColumns = new Vector<Integer>(10); for(int i = 0; i < 10 ; i++) { iMatchColumns.add(i,Integer.valueOf(-1)); } - strMatchColumns = new Vector(10); + strMatchColumns = new Vector<String>(10); for(int j = 0; j < 10; j++) { strMatchColumns.add(j,null); } @@ -675,7 +675,7 @@ public class JdbcRowSetImpl extends BaseRowSet implements JdbcRowSet, Joinable { try { - Map aMap = getTypeMap(); + Map<String, Class<?>> aMap = getTypeMap(); if( aMap != null) { conn.setTypeMap(aMap); } diff --git a/src/share/classes/com/sun/rowset/JoinRowSetImpl.java b/src/share/classes/com/sun/rowset/JoinRowSetImpl.java index 060c82375b66f5b6e0a9e4bb838f6fb913c52312..05feebc28243ca9521393ac15c2da95091d49fb4 100644 --- a/src/share/classes/com/sun/rowset/JoinRowSetImpl.java +++ b/src/share/classes/com/sun/rowset/JoinRowSetImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -59,8 +59,8 @@ public class JoinRowSetImpl extends WebRowSetImpl implements JoinRowSet { /** * A <code>Vector</code> object that contains the <code>RowSet</code> objects * that have been added to this <code>JoinRowSet</code> object. - */ - private Vector vecRowSetsInJOIN; + */ + private Vector<CachedRowSetImpl> vecRowSetsInJOIN; /** * The <code>CachedRowSet</code> object that encapsulates this @@ -78,13 +78,13 @@ public class JoinRowSetImpl extends WebRowSetImpl implements JoinRowSet { * for this <code>JoinRowSet</code> object. * The last join type set forms the basis of succeeding joins. */ - private Vector vecJoinType; + private Vector<Integer> vecJoinType; /** * A <code>Vector</code> object containing the names of all the tables entering * the join. */ - private Vector vecTableNames; + private Vector<String> vecTableNames; /** * An <code>int</code> that indicates the column index of the match column. @@ -121,10 +121,10 @@ public class JoinRowSetImpl extends WebRowSetImpl implements JoinRowSet { */ public JoinRowSetImpl() throws SQLException { - vecRowSetsInJOIN = new Vector(); + vecRowSetsInJOIN = new Vector<CachedRowSetImpl>(); crsInternal = new CachedRowSetImpl(); - vecJoinType = new Vector(); - vecTableNames = new Vector(); + vecJoinType = new Vector<Integer>(); + vecTableNames = new Vector<String>(); iMatchKey = -1; strMatchKey = null; supportedJOINs = @@ -222,7 +222,7 @@ public class JoinRowSetImpl extends WebRowSetImpl implements JoinRowSet { // either of the setter methods have been set. if(boolColId){ // - ArrayList indices = new ArrayList(); + ArrayList<Integer> indices = new ArrayList<>(); for(int i=0;i<cRowset.getMatchColumnNames().length;i++) { if( (strMatchKey = (cRowset.getMatchColumnNames())[i]) != null) { iMatchKey = cRowset.findColumn(strMatchKey); diff --git a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties index 4dac249bfa02d51e370a6693bd856ab04fd70f2a..87e3bde708e0cdbbec463916fcca7270e7cd5686 100644 --- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties @@ -59,9 +59,9 @@ FileChooser.acceptAllFileFilterText=All Files FileChooser.cancelButtonText=Cancel FileChooser.cancelButtonMnemonic=67 FileChooser.saveButtonText=Save -FileChooser.saveButtonMnemonic=83 +FileChooser.saveButtonMnemonic=83 // not needed? FileChooser.openButtonText=Open -FileChooser.openButtonMnemonic=79 +FileChooser.openButtonMnemonic=79 //not needed? FileChooser.saveDialogTitleText=Save FileChooser.openDialogTitleText=Open FileChooser.updateButtonText=Update @@ -121,11 +121,11 @@ ColorChooser.hslTransparencyText=Transparency ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=Red -ColorChooser.rgbRedMnemonic=68 +ColorChooser.rgbRedMnemonic=68 // not needed? ColorChooser.rgbGreenText=Green -ColorChooser.rgbGreenMnemonic=78 +ColorChooser.rgbGreenMnemonic=78 // not needed? ColorChooser.rgbBlueText=Blue -ColorChooser.rgbBlueMnemonic=66 +ColorChooser.rgbBlueMnemonic=66 // not needed? ColorChooser.rgbAlphaText=Alpha ColorChooser.rgbHexCodeText=Color Code ColorChooser.rgbHexCodeMnemonic=67 diff --git a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties index 54783a8a8723a246e2a846350127c523ede130e9..2306682b067eab89cbed71a8dca249e8504d1b72 100644 --- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties @@ -144,10 +144,10 @@ OptionPane.yesButtonText=Ja OptionPane.yesButtonMnemonic=74 OptionPane.noButtonText=Nein OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=OK(0) -OptionPane.okButtonMnemonic=0 -OptionPane.cancelButtonText=Abbrechen(0) -OptionPane.cancelButtonMnemonic=0 +OptionPane.okButtonText=OK +OptionPane.okButtonMnemonic=O +OptionPane.cancelButtonText=Abbrechen +OptionPane.cancelButtonMnemonic=A OptionPane.titleText=Option ausw\u00E4hlen # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. diff --git a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties index 0d4f49e69c5bfe28d7e108ecdc57c69a10333681..87ce61c7f7705c8447488387bc49b1299b1e295e 100644 --- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties @@ -144,10 +144,10 @@ OptionPane.yesButtonText=S\u00ED OptionPane.yesButtonMnemonic=83 OptionPane.noButtonText=No OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=OK(0) -OptionPane.okButtonMnemonic=0 -OptionPane.cancelButtonText=Cancelar (0) -OptionPane.cancelButtonMnemonic=0 +OptionPane.okButtonText=OK +OptionPane.okButtonMnemonic=O +OptionPane.cancelButtonText=Cancelar +OptionPane.cancelButtonMnemonic=C OptionPane.titleText=Seleccionar una Opci\u00F3n # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. diff --git a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties index 3c88b67b475348db6aafbfa2b37d0ac9dee5d0fc..8b3ba8f2d58c6646377d7bf766810321435523e8 100644 --- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties @@ -144,10 +144,10 @@ OptionPane.yesButtonText=Oui OptionPane.yesButtonMnemonic=79 OptionPane.noButtonText=Non OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=OK(0) -OptionPane.okButtonMnemonic=0 -OptionPane.cancelButtonText=Annuler (0) -OptionPane.cancelButtonMnemonic=0 +OptionPane.okButtonText=OK +OptionPane.okButtonMnemonic=O +OptionPane.cancelButtonText=Annuler +OptionPane.cancelButtonMnemonic=A OptionPane.titleText=S\u00E9lectionner une option # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. diff --git a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties index 6ea5b12e9b917ad45fac562941e584b698429c99..9382e0abc041ec8b4e45a6d57d47097ff1fbdf1a 100644 --- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties @@ -57,9 +57,9 @@ FileChooser.renameErrorFileExistsText={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3 FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB FileChooser.cancelButtonText=\u53D6\u6D88(C) FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\u4FDD\u5B58(S) +FileChooser.saveButtonText=\u4FDD\u5B58 FileChooser.saveButtonMnemonic=83 -FileChooser.openButtonText=\u958B\u304F(O) +FileChooser.openButtonText=\u958B\u304F FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=\u4FDD\u5B58 FileChooser.openDialogTitleText=\u958B\u304F @@ -105,25 +105,25 @@ ColorChooser.swatchesRecentText=\u6700\u65B0: # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. -ColorChooser.hsvNameText=HSV(H) +ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 ColorChooser.hsvHueText=\u8272\u76F8 ColorChooser.hsvSaturationText=\u5F69\u5EA6 ColorChooser.hsvValueText=\u5024 ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6 -ColorChooser.hslNameText=HSL(L) +ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 ColorChooser.hslHueText=\u8272\u76F8 ColorChooser.hslSaturationText=\u5F69\u5EA6 ColorChooser.hslLightnessText=\u660E\u5EA6 ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6 -ColorChooser.rgbNameText=RGB(G) +ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 -ColorChooser.rgbRedText=\u8D64(D) +ColorChooser.rgbRedText=\u8D64 ColorChooser.rgbRedMnemonic=68 -ColorChooser.rgbGreenText=\u7DD1(N) +ColorChooser.rgbGreenText=\u7DD1 ColorChooser.rgbGreenMnemonic=78 -ColorChooser.rgbBlueText=\u9752(B) +ColorChooser.rgbBlueText=\u9752 ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=\u30A2\u30EB\u30D5\u30A1 ColorChooser.rgbHexCodeText=\u8272\u30B3\u30FC\u30C9(C) @@ -144,8 +144,8 @@ OptionPane.yesButtonText=\u306F\u3044(Y) OptionPane.yesButtonMnemonic=89 OptionPane.noButtonText=\u3044\u3044\u3048(N) OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=OK(0) -OptionPane.okButtonMnemonic=0 +OptionPane.okButtonText=OK +OptionPane.okButtonMnemonic=O OptionPane.cancelButtonText=\u53D6\u6D88(0) OptionPane.cancelButtonMnemonic=0 OptionPane.titleText=\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u9078\u629E diff --git a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties index 432a0c13429506cc45330d563d9b71782df5ca3d..b8f70de37ff19226b8b391bd075e9e1793b5d3fa 100644 --- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties @@ -57,9 +57,9 @@ FileChooser.renameErrorFileExistsText={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 FileChooser.acceptAllFileFilterText=\uBAA8\uB4E0 \uD30C\uC77C FileChooser.cancelButtonText=\uCDE8\uC18C(C) FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\uC800\uC7A5(S) +FileChooser.saveButtonText=\uC800\uC7A5 FileChooser.saveButtonMnemonic=83 -FileChooser.openButtonText=\uC5F4\uAE30(O) +FileChooser.openButtonText=\uC5F4\uAE30 FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=\uC800\uC7A5 FileChooser.openDialogTitleText=\uC5F4\uAE30 @@ -105,25 +105,25 @@ ColorChooser.swatchesRecentText=\uCD5C\uADFC \uBAA9\uB85D: # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. -ColorChooser.hsvNameText=HSV(H) +ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 ColorChooser.hsvHueText=\uC0C9\uC870 ColorChooser.hsvSaturationText=\uCC44\uB3C4 ColorChooser.hsvValueText=\uAC12 ColorChooser.hsvTransparencyText=\uD22C\uBA85 -ColorChooser.hslNameText=HSL(L) +ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 ColorChooser.hslHueText=\uC0C9\uC870 ColorChooser.hslSaturationText=\uCC44\uB3C4 ColorChooser.hslLightnessText=\uBC1D\uAE30 ColorChooser.hslTransparencyText=\uD22C\uBA85 -ColorChooser.rgbNameText=RGB(G) +ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 -ColorChooser.rgbRedText=\uBE68\uAC04\uC0C9(D) +ColorChooser.rgbRedText=\uBE68\uAC04\uC0C9 ColorChooser.rgbRedMnemonic=68 -ColorChooser.rgbGreenText=\uB179\uC0C9(N) +ColorChooser.rgbGreenText=\uB179\uC0C9 ColorChooser.rgbGreenMnemonic=78 -ColorChooser.rgbBlueText=\uD30C\uB780\uC0C9(B) +ColorChooser.rgbBlueText=\uD30C\uB780\uC0C9 ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=\uC54C\uD30C ColorChooser.rgbHexCodeText=\uC0C9\uC0C1 \uCF54\uB4DC(C) @@ -144,8 +144,8 @@ OptionPane.yesButtonText=\uC608(Y) OptionPane.yesButtonMnemonic=89 OptionPane.noButtonText=\uC544\uB2C8\uC624(N) OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=OK(0) -OptionPane.okButtonMnemonic=0 +OptionPane.okButtonText=OK +OptionPane.okButtonMnemonic=O OptionPane.cancelButtonText=\uCDE8\uC18C(0) OptionPane.cancelButtonMnemonic=0 OptionPane.titleText=\uC635\uC158 \uC120\uD0DD diff --git a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties index 426dcfe895314614ed0f422b5ab160cc4532f61b..cbc3c99d66943c2b232794b9cba4922a3d92e7e2 100644 --- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties @@ -144,10 +144,10 @@ OptionPane.yesButtonText=Sim OptionPane.yesButtonMnemonic=83 OptionPane.noButtonText=N\u00E3o OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=OK(0) -OptionPane.okButtonMnemonic=0 -OptionPane.cancelButtonText=Cancelar(0) -OptionPane.cancelButtonMnemonic=0 +OptionPane.okButtonText=OK +OptionPane.okButtonMnemonic=O +OptionPane.cancelButtonText=Cancelar +OptionPane.cancelButtonMnemonic=C OptionPane.titleText=Selecionar uma Op\u00E7\u00E3o # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. diff --git a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties index bf537e0d8dd23088439025b55a4e61aeb58e8f1a..212b1753539a2af6abee714f68dfb2ac0e51aa5c 100644 --- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties @@ -57,9 +57,9 @@ FileChooser.renameErrorFileExistsText=\u65E0\u6CD5\u91CD\u547D\u540D{0}: \u5DF2\ FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4EF6 FileChooser.cancelButtonText=\u53D6\u6D88(C) FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\u4FDD\u5B58(S) +FileChooser.saveButtonText=\u4FDD\u5B58 FileChooser.saveButtonMnemonic=83 -FileChooser.openButtonText=\u6253\u5F00(O) +FileChooser.openButtonText=\u6253\u5F00 FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=\u4FDD\u5B58 FileChooser.openDialogTitleText=\u6253\u5F00 @@ -105,25 +105,25 @@ ColorChooser.swatchesRecentText=\u6700\u8FD1: # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. -ColorChooser.hsvNameText=HSV(H) +ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 ColorChooser.hsvHueText=\u8272\u8C03 ColorChooser.hsvSaturationText=\u9971\u548C\u5EA6 ColorChooser.hsvValueText=\u503C ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6 -ColorChooser.hslNameText=HSL(L) +ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 ColorChooser.hslHueText=\u8272\u8C03 ColorChooser.hslSaturationText=\u9971\u548C\u5EA6 ColorChooser.hslLightnessText=\u4EAE\u5EA6 ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6 -ColorChooser.rgbNameText=RGB(G) +ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 -ColorChooser.rgbRedText=\u7EA2\u8272(D) +ColorChooser.rgbRedText=\u7EA2\u8272 ColorChooser.rgbRedMnemonic=68 -ColorChooser.rgbGreenText=\u7EFF\u8272(N) +ColorChooser.rgbGreenText=\u7EFF\u8272 ColorChooser.rgbGreenMnemonic=78 -ColorChooser.rgbBlueText=\u84DD\u8272(B) +ColorChooser.rgbBlueText=\u84DD\u8272 ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=Alpha ColorChooser.rgbHexCodeText=\u989C\u8272\u4EE3\u7801(C) @@ -144,8 +144,8 @@ OptionPane.yesButtonText=\u662F(Y) OptionPane.yesButtonMnemonic=89 OptionPane.noButtonText=\u5426(N) OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=OK(0) -OptionPane.okButtonMnemonic=0 +OptionPane.okButtonText=OK +OptionPane.okButtonMnemonic=O OptionPane.cancelButtonText=\u53D6\u6D88(0) OptionPane.cancelButtonMnemonic=0 OptionPane.titleText=\u9009\u62E9\u4E00\u4E2A\u9009\u9879 diff --git a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties index 14489713a11721ad01d6948f9c6c92bcb55951ee..ef267aaf8c5e9a027a5def2de5ca623bf2ed897d 100644 --- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties @@ -57,9 +57,9 @@ FileChooser.renameErrorFileExistsText=\u7121\u6CD5\u91CD\u65B0\u547D\u540D {0}: FileChooser.acceptAllFileFilterText=\u6240\u6709\u6A94\u6848 FileChooser.cancelButtonText=\u53D6\u6D88(C) FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\u5132\u5B58(S) +FileChooser.saveButtonText=\u5132\u5B58 FileChooser.saveButtonMnemonic=83 -FileChooser.openButtonText=\u958B\u555F(O) +FileChooser.openButtonText=\u958B\u555F FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=\u5132\u5B58 FileChooser.openDialogTitleText=\u958B\u555F @@ -105,25 +105,25 @@ ColorChooser.swatchesRecentText=\u6700\u65B0\u9078\u64C7: # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. -ColorChooser.hsvNameText=HSV(H) +ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 ColorChooser.hsvHueText=\u8272\u8ABF ColorChooser.hsvSaturationText=\u5F69\u5EA6 ColorChooser.hsvValueText=\u6578\u503C ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6 -ColorChooser.hslNameText=HSL(L) +ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 ColorChooser.hslHueText=\u8272\u8ABF ColorChooser.hslSaturationText=\u5F69\u5EA6 ColorChooser.hslLightnessText=\u4EAE\u5EA6 ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6 -ColorChooser.rgbNameText=RGB(G) +ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 -ColorChooser.rgbRedText=\u7D05(D) +ColorChooser.rgbRedText=\u7D05 ColorChooser.rgbRedMnemonic=68 -ColorChooser.rgbGreenText=\u7DA0(N) +ColorChooser.rgbGreenText=\u7DA0 ColorChooser.rgbGreenMnemonic=78 -ColorChooser.rgbBlueText=\u85CD(B) +ColorChooser.rgbBlueText=\u85CD ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=Alpha ColorChooser.rgbHexCodeText=\u984F\u8272\u4EE3\u78BC(C) @@ -144,8 +144,8 @@ OptionPane.yesButtonText=\u662F(Y) OptionPane.yesButtonMnemonic=89 OptionPane.noButtonText=\u5426(N) OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=OK(0) -OptionPane.okButtonMnemonic=0 +OptionPane.okButtonText=OK +OptionPane.okButtonMnemonic=O OptionPane.cancelButtonText=\u53D6\u6D88(0) OptionPane.cancelButtonMnemonic=0 OptionPane.titleText=\u9078\u53D6\u4E00\u500B\u9078\u9805 diff --git a/src/share/classes/java/awt/doc-files/AWTThreadIssues.html b/src/share/classes/java/awt/doc-files/AWTThreadIssues.html index 54a0a3ca5c783ab0e3b3badcf83e567137d82552..735cfdd97d6325c22ce272863d96326d71d50bef 100644 --- a/src/share/classes/java/awt/doc-files/AWTThreadIssues.html +++ b/src/share/classes/java/awt/doc-files/AWTThreadIssues.html @@ -40,10 +40,9 @@ newly added listener is only notified on subsequent key events. <a name="Autoshutdown"></a> <h2>Auto-shutdown</h2> -According to <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html"><i>The -Java</i><sup><small>TM</small></sup> <i>Virtual Machine Specification, -Second edition</i></a> (see <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/Concepts.doc.html#19152">2.17.9</a> -and <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/Concepts.doc.html#33308">2.19</a>), +According to +<cite>The Java™ Virtual Machine Specification</cite>, +sections 2.17.9 and 2.19, the Java virtual machine (JVM) initially starts up with a single non-daemon thread, which typically calls the <code>main</code> method of some class. The virtual machine terminates all its activity and exits when @@ -183,7 +182,8 @@ non-daemon thread that blocks forever. <...> </pre> -The Java Virtual Machine Specification guarantees +<cite>The Java™ Virtual Machine Specification</cite> + guarantees that the JVM doesn't exit until this thread terminates. </body> </html> diff --git a/src/share/classes/java/io/Console.java b/src/share/classes/java/io/Console.java index 5468cdf78f0f70895a75777aa83c08ff81dcec76..c4987dc09347da9a576ac9aca0b092efc01f526f 100644 --- a/src/share/classes/java/io/Console.java +++ b/src/share/classes/java/io/Console.java @@ -148,8 +148,8 @@ public final class Console implements Flushable * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * @@ -187,8 +187,8 @@ public final class Console implements Flushable * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * @@ -220,8 +220,7 @@ public final class Console implements Flushable * string. If there are more arguments than format specifiers, the * extra arguments are ignored. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. + * <cite>The Java™ Virtual Machine Specification</cite>. * * @throws IllegalFormatException * If a format string contains an illegal syntax, a format @@ -285,8 +284,7 @@ public final class Console implements Flushable * string. If there are more arguments than format specifiers, the * extra arguments are ignored. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. + * <cite>The Java™ Virtual Machine Specification</cite>. * * @throws IllegalFormatException * If a format string contains an illegal syntax, a format diff --git a/src/share/classes/java/io/PrintStream.java b/src/share/classes/java/io/PrintStream.java index f29b5407abf18a2773a48fe345165bd43d8b94da..c4cd01f470f97e8baca462f1ac2df577e51e4c45 100644 --- a/src/share/classes/java/io/PrintStream.java +++ b/src/share/classes/java/io/PrintStream.java @@ -846,8 +846,8 @@ public class PrintStream extends FilterOutputStream * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * @@ -896,8 +896,8 @@ public class PrintStream extends FilterOutputStream * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * @@ -939,8 +939,8 @@ public class PrintStream extends FilterOutputStream * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * @@ -996,8 +996,8 @@ public class PrintStream extends FilterOutputStream * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * diff --git a/src/share/classes/java/io/PrintWriter.java b/src/share/classes/java/io/PrintWriter.java index 0e9ea8f5688bd1febcd636eb4e1323dfa43f5e85..102c3a29abc912a3d6eff520960f21e422c59903 100644 --- a/src/share/classes/java/io/PrintWriter.java +++ b/src/share/classes/java/io/PrintWriter.java @@ -779,8 +779,8 @@ public class PrintWriter extends Writer { * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * @@ -830,8 +830,8 @@ public class PrintWriter extends Writer { * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * @@ -874,8 +874,8 @@ public class PrintWriter extends Writer { * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * @@ -934,8 +934,8 @@ public class PrintWriter extends Writer { * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * diff --git a/src/share/classes/java/lang/AssertionError.java b/src/share/classes/java/lang/AssertionError.java index b3784f125a7bd5fde288e5704da15e55213a9f21..984c3e4f00bdf39faf5c6df99571851e2b30757f 100644 --- a/src/share/classes/java/lang/AssertionError.java +++ b/src/share/classes/java/lang/AssertionError.java @@ -34,11 +34,9 @@ package java.lang; * new AssertionError(<i>expression</i>) * </pre> * has as its detail message the <i>string conversion</i> of - * <i>expression</i> (as defined in <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html"> - * <i>The Java Language Specification, Second Edition</i></a>, - * <a href="http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#40220"> - * Section 15.18.1.1</a>), regardless of the type of <i>expression</i>. + * <i>expression</i> (as defined in section 15.18.1.1 of + * <cite>The Java™ Language Specification</cite>), + * regardless of the type of <i>expression</i>. * * @since 1.4 */ @@ -63,8 +61,8 @@ public class AssertionError extends Error { /** * Constructs an AssertionError with its detail message derived * from the specified object, which is converted to a string as - * defined in <i>The Java Language Specification, Second - * Edition</i>, Section 15.18.1.1. + * defined in section 15.18.1.1 of + * <cite>The Java™ Language Specification</cite>. *<p> * If the specified object is an instance of {@code Throwable}, it * becomes the <i>cause</i> of the newly constructed assertion error. @@ -81,8 +79,8 @@ public class AssertionError extends Error { /** * Constructs an AssertionError with its detail message derived * from the specified <code>boolean</code>, which is converted to - * a string as defined in <i>The Java Language Specification, - * Second Edition</i>, Section 15.18.1.1. + * a string as defined in section 15.18.1.1 of + * <cite>The Java™ Language Specification</cite>. * * @param detailMessage value to be used in constructing detail message */ @@ -93,8 +91,8 @@ public class AssertionError extends Error { /** * Constructs an AssertionError with its detail message derived * from the specified <code>char</code>, which is converted to a - * string as defined in <i>The Java Language Specification, Second - * Edition</i>, Section 15.18.1.1. + * string as defined in section 15.18.1.1 of + * <cite>The Java™ Language Specification</cite>. * * @param detailMessage value to be used in constructing detail message */ @@ -105,8 +103,8 @@ public class AssertionError extends Error { /** * Constructs an AssertionError with its detail message derived * from the specified <code>int</code>, which is converted to a - * string as defined in <i>The Java Language Specification, Second - * Edition</i>, Section 15.18.1.1. + * string as defined in section 15.18.1.1 of + * <cite>The Java™ Language Specification</cite>. * * @param detailMessage value to be used in constructing detail message */ @@ -117,8 +115,8 @@ public class AssertionError extends Error { /** * Constructs an AssertionError with its detail message derived * from the specified <code>long</code>, which is converted to a - * string as defined in <i>The Java Language Specification, Second - * Edition</i>, Section 15.18.1.1. + * string as defined in section 15.18.1.1 of + * <cite>The Java™ Language Specification</cite>. * * @param detailMessage value to be used in constructing detail message */ @@ -129,8 +127,8 @@ public class AssertionError extends Error { /** * Constructs an AssertionError with its detail message derived * from the specified <code>float</code>, which is converted to a - * string as defined in <i>The Java Language Specification, Second - * Edition</i>, Section 15.18.1.1. + * string as defined in section 15.18.1.1 of + * <cite>The Java™ Language Specification</cite>. * * @param detailMessage value to be used in constructing detail message */ @@ -141,8 +139,8 @@ public class AssertionError extends Error { /** * Constructs an AssertionError with its detail message derived * from the specified <code>double</code>, which is converted to a - * string as defined in <i>The Java Language Specification, Second - * Edition</i>, Section 15.18.1.1. + * string as defined in section 15.18.1.1 of + * <cite>The Java™ Language Specification</cite>. * * @param detailMessage value to be used in constructing detail message */ diff --git a/src/share/classes/java/lang/Byte.java b/src/share/classes/java/lang/Byte.java index e6d2543586e580b0dcc4755747e140c58a52d14e..2ab00f8f97deafccf9070685e78807744f58c866 100644 --- a/src/share/classes/java/lang/Byte.java +++ b/src/share/classes/java/lang/Byte.java @@ -251,9 +251,9 @@ public final class Byte extends Number implements Comparable<Byte> { * </blockquote> * * <i>DecimalNumeral</i>, <i>HexDigits</i>, and <i>OctalDigits</i> - * are defined in <a href="http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#48282">§3.10.1</a> - * of the <a href="http://java.sun.com/docs/books/jls/html/">Java - * Language Specification</a>. + * are as defined in section 3.10.1 of + * <cite>The Java™ Language Specification</cite>, + * except that underscores are not accepted between digits. * * <p>The sequence of characters following an optional * sign and/or radix specifier ("{@code 0x}", "{@code 0X}", diff --git a/src/share/classes/java/lang/Character.java b/src/share/classes/java/lang/Character.java index cc1dae863df8ea6a7a2d267bbac475b4a214dd0f..e52a83a84b18cc1fa7aff54138d737bd19c09377 100644 --- a/src/share/classes/java/lang/Character.java +++ b/src/share/classes/java/lang/Character.java @@ -4182,9 +4182,11 @@ class Character implements java.io.Serializable, Comparable<Character> { aliases.put("AVST", AVESTAN); aliases.put("BALI", BALINESE); aliases.put("BAMU", BAMUM); + aliases.put("BATK", BATAK); aliases.put("BENG", BENGALI); aliases.put("BOPO", BOPOMOFO); aliases.put("BRAI", BRAILLE); + aliases.put("BRAH", BRAHMI); aliases.put("BUGI", BUGINESE); aliases.put("BUHD", BUHID); aliases.put("CANS", CANADIAN_ABORIGINAL); @@ -4228,6 +4230,7 @@ class Character implements java.io.Serializable, Comparable<Character> { aliases.put("LISU", LISU); aliases.put("LYCI", LYCIAN); aliases.put("LYDI", LYDIAN); + aliases.put("MAND", MANDAIC); aliases.put("MLYM", MALAYALAM); aliases.put("MONG", MONGOLIAN); aliases.put("MTEI", MEETEI_MAYEK); diff --git a/src/share/classes/java/lang/Class.java b/src/share/classes/java/lang/Class.java index e8c01aceb8db5f5f0a92ae8e8361752caf5c98a8..cf6c890b3fb00ac27cfc635739d189af2730d150 100644 --- a/src/share/classes/java/lang/Class.java +++ b/src/share/classes/java/lang/Class.java @@ -95,8 +95,8 @@ import sun.reflect.annotation.*; * </pre></blockquote> * * <p> It is also possible to get the {@code Class} object for a named - * type (or for void) using a class literal - * (JLS Section <A HREF="http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#251530">15.8.2</A>). + * type (or for void) using a class literal. See Section 15.8.2 of + * <cite>The Java™ Language Specification</cite>. * For example: * * <p> <blockquote> @@ -521,7 +521,8 @@ public final * * <p> If this class object represents a reference type that is not an * array type then the binary name of the class is returned, as specified - * by the Java Language Specification, Second Edition. + * by + * <cite>The Java™ Language Specification</cite>. * * <p> If this class object represents a primitive type or void, then the * name returned is a {@code String} equal to the Java language @@ -630,8 +631,8 @@ public final * the type variables declared by this generic declaration * @throws java.lang.reflect.GenericSignatureFormatError if the generic * signature of this generic declaration does not conform to - * the format specified in the Java Virtual Machine Specification, - * 3rd edition + * the format specified in + * <cite>The Java™ Virtual Machine Specification</cite> * @since 1.5 */ public TypeVariable<Class<T>>[] getTypeParameters() { @@ -675,8 +676,8 @@ public final * returned. * * @throws java.lang.reflect.GenericSignatureFormatError if the generic - * class signature does not conform to the format specified in the - * Java Virtual Machine Specification, 3rd edition + * class signature does not conform to the format specified in + * <cite>The Java™ Virtual Machine Specification</cite> * @throws TypeNotPresentException if the generic superclass * refers to a non-existent type declaration * @throws java.lang.reflect.MalformedParameterizedTypeException if the @@ -798,7 +799,8 @@ public final * * @throws java.lang.reflect.GenericSignatureFormatError * if the generic class signature does not conform to the format - * specified in the Java Virtual Machine Specification, 3rd edition + * specified in + * <cite>The Java™ Virtual Machine Specification</cite> * @throws TypeNotPresentException if any of the generic * superinterfaces refers to a non-existent type declaration * @throws java.lang.reflect.MalformedParameterizedTypeException diff --git a/src/share/classes/java/lang/ClassLoader.java b/src/share/classes/java/lang/ClassLoader.java index 2c0c7908566bec71cf7af9c63bf3ca1adbeaeaf8..f8588f527a2c23e9066a6a4d0c615d0614555e20 100644 --- a/src/share/classes/java/lang/ClassLoader.java +++ b/src/share/classes/java/lang/ClassLoader.java @@ -160,8 +160,8 @@ import sun.security.util.SecurityConstants; * <h4> <a name="name">Binary names</a> </h4> * * <p> Any class name provided as a {@link String} parameter to methods in - * <tt>ClassLoader</tt> must be a binary name as defined by the <a - * href="http://java.sun.com/docs/books/jls/">Java Language Specification</a>. + * <tt>ClassLoader</tt> must be a binary name as defined by + * <cite>The Java™ Language Specification</cite>. * * <p> Examples of valid class names include: * <blockquote><pre> @@ -531,9 +531,8 @@ public abstract class ClassLoader { * @param b * The bytes that make up the class data. The bytes in positions * <tt>off</tt> through <tt>off+len-1</tt> should have the format - * of a valid class file as defined by the <a - * href="http://java.sun.com/docs/books/vmspec/">Java Virtual - * Machine Specification</a>. + * of a valid class file as defined by + * <cite>The Java™ Virtual Machine Specification</cite>. * * @param off * The start offset in <tt>b</tt> of the class data @@ -597,9 +596,8 @@ public abstract class ClassLoader { * @param b * The bytes that make up the class data. The bytes in positions * <tt>off</tt> through <tt>off+len-1</tt> should have the format - * of a valid class file as defined by the <a - * href="http://java.sun.com/docs/books/vmspec/">Java Virtual - * Machine Specification</a>. + * of a valid class file as defined by + * <cite>The Java™ Virtual Machine Specification</cite>. * * @param off * The start offset in <tt>b</tt> of the class data @@ -748,9 +746,8 @@ public abstract class ClassLoader { * @param b * The bytes that make up the class data. The bytes in positions * <tt>off</tt> through <tt>off+len-1</tt> should have the format - * of a valid class file as defined by the <a - * href="http://java.sun.com/docs/books/vmspec/">Java Virtual - * Machine Specification</a>. + * of a valid class file as defined by + * <cite>The Java™ Virtual Machine Specification</cite>. * * @param off * The start offset in <tt>b</tt> of the class data @@ -838,8 +835,7 @@ public abstract class ClassLoader { * The bytes that make up the class data. The bytes from positions * <tt>b.position()</tt> through <tt>b.position() + b.limit() -1 * </tt> should have the format of a valid class file as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual - * Machine Specification</a>. + * <cite>The Java™ Virtual Machine Specification</cite>. * * @param protectionDomain * The ProtectionDomain of the class, or <tt>null</tt>. @@ -998,9 +994,8 @@ public abstract class ClassLoader { * Links the specified class. This (misleadingly named) method may be * used by a class loader to link a class. If the class <tt>c</tt> has * already been linked, then this method simply returns. Otherwise, the - * class is linked as described in the "Execution" chapter of the <a - * href="http://java.sun.com/docs/books/jls/">Java Language - * Specification</a>. + * class is linked as described in the "Execution" chapter of + * <cite>The Java™ Language Specification</cite>. * </p> * * @param c @@ -2034,8 +2029,8 @@ public abstract class ClassLoader { * The name of the package whose package default assertion status * is to be set. A <tt>null</tt> value indicates the unnamed * package that is "current" - * (<a href="http://java.sun.com/docs/books/jls/">Java Language - * Specification</a>, section 7.4.2). + * (see section 7.4.2 of + * <cite>The Java™ Language Specification</cite>.) * * @param enabled * <tt>true</tt> if classes loaded by this classloader and diff --git a/src/share/classes/java/lang/Double.java b/src/share/classes/java/lang/Double.java index 2957f0b541db044ad3a7852548667fbc8dde3595..1f6c9d4ca3b3479f7b4473e75e1af1eb36089cc3 100644 --- a/src/share/classes/java/lang/Double.java +++ b/src/share/classes/java/lang/Double.java @@ -392,9 +392,10 @@ public final class Double extends Number implements Comparable<Double> { * where <i>Sign</i>, <i>FloatingPointLiteral</i>, * <i>HexNumeral</i>, <i>HexDigits</i>, <i>SignedInteger</i> and * <i>FloatTypeSuffix</i> are as defined in the lexical structure - * sections of the <a - * href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a>. If {@code s} does not have the form of + * sections of + * <cite>The Java™ Language Specification</cite>, + * except that underscores are not accepted between digits. + * If {@code s} does not have the form of * a <i>FloatValue</i>, then a {@code NumberFormatException} * is thrown. Otherwise, {@code s} is regarded as * representing an exact decimal value in the usual @@ -464,8 +465,8 @@ public final class Double extends Number implements Comparable<Double> { * // Since this method allows integer-only strings as input * // in addition to strings of floating-point literals, the * // two sub-patterns below are simplifications of the grammar - * // productions from the Java Language Specification, 2nd - * // edition, section 3.10.2. + * // productions from section 3.10.2 of + * // <cite>The Java™ Language Specification</cite>. * * // Digits ._opt Digits_opt ExponentPart_opt FloatTypeSuffix_opt * "((("+Digits+"(\\.)?("+Digits+"?)("+Exp+")?)|"+ diff --git a/src/share/classes/java/lang/Enum.java b/src/share/classes/java/lang/Enum.java index caf82dbd32b43a671e8d56eb997fb26e32bec0fd..798ae3fa6f640f43c03db3dce01712626865500e 100644 --- a/src/share/classes/java/lang/Enum.java +++ b/src/share/classes/java/lang/Enum.java @@ -36,9 +36,8 @@ import java.io.ObjectStreamException; * * More information about enums, including descriptions of the * implicitly declared methods synthesized by the compiler, can be - * found in <i>The Java™ Language Specification, Third - * Edition</i>, <a - * href="http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.9">§8.9</a>. + * found in section 8.9 of + * <cite>The Java™ Language Specification</cite>. * * <p> Note that when using an enumeration type as the type of a set * or as the type of the keys in a map, specialized and efficient diff --git a/src/share/classes/java/lang/Error.java b/src/share/classes/java/lang/Error.java index e9dd5463e8dbe7eebbcf354dd1c085e4b4b9a4ac..1c5c50797f497d0e0dd2fc48833bdbeb78be56bb 100644 --- a/src/share/classes/java/lang/Error.java +++ b/src/share/classes/java/lang/Error.java @@ -43,7 +43,7 @@ package java.lang; * * @author Frank Yellin * @see java.lang.ThreadDeath - * @jls3 11.2 Compile-Time Checking of Exceptions + * @jls 11.2 Compile-Time Checking of Exceptions * @since JDK1.0 */ public class Error extends Throwable { diff --git a/src/share/classes/java/lang/Exception.java b/src/share/classes/java/lang/Exception.java index 77a563d642ebec6386bad03a1701f15c4743ca36..944aa052369c03c3244a1a8b1446df3a11407939 100644 --- a/src/share/classes/java/lang/Exception.java +++ b/src/share/classes/java/lang/Exception.java @@ -39,7 +39,7 @@ package java.lang; * * @author Frank Yellin * @see java.lang.Error - * @jls3 11.2 Compile-Time Checking of Exceptions + * @jls 11.2 Compile-Time Checking of Exceptions * @since JDK1.0 */ public class Exception extends Throwable { diff --git a/src/share/classes/java/lang/Float.java b/src/share/classes/java/lang/Float.java index f725def1d0affcb8ac31fa0f5da224648d4814e6..612888f32098733b9343253b0325cc3794e55e97 100644 --- a/src/share/classes/java/lang/Float.java +++ b/src/share/classes/java/lang/Float.java @@ -353,9 +353,10 @@ public final class Float extends Number implements Comparable<Float> { * where <i>Sign</i>, <i>FloatingPointLiteral</i>, * <i>HexNumeral</i>, <i>HexDigits</i>, <i>SignedInteger</i> and * <i>FloatTypeSuffix</i> are as defined in the lexical structure - * sections of the <a - * href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a>. If {@code s} does not have the form of + * sections of + * <cite>The Java™ Language Specification</cite>, + * except that underscores are not accepted between digits. + * If {@code s} does not have the form of * a <i>FloatValue</i>, then a {@code NumberFormatException} * is thrown. Otherwise, {@code s} is regarded as * representing an exact decimal value in the usual diff --git a/src/share/classes/java/lang/Integer.java b/src/share/classes/java/lang/Integer.java index af7f1da45537e9d02c2e4e87b28c433e312fb477..a87e4b1ab5d68f57aaf6f66bbf36b6275ea93f09 100644 --- a/src/share/classes/java/lang/Integer.java +++ b/src/share/classes/java/lang/Integer.java @@ -918,9 +918,9 @@ public final class Integer extends Number implements Comparable<Integer> { * </blockquote> * * <i>DecimalNumeral</i>, <i>HexDigits</i>, and <i>OctalDigits</i> - * are defined in <a href="http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#48282">§3.10.1</a> - * of the <a href="http://java.sun.com/docs/books/jls/html/">Java - * Language Specification</a>. + * are as defined in section 3.10.1 of + * <cite>The Java™ Language Specification</cite>, + * except that underscores are not accepted between digits. * * <p>The sequence of characters following an optional * sign and/or radix specifier ("{@code 0x}", "{@code 0X}", diff --git a/src/share/classes/java/lang/Long.java b/src/share/classes/java/lang/Long.java index d5b80e61881e1e0f96dee09c22c0a101ea78142c..bee7da3611ead3a93b92c1d04e84992c3bfcdc79 100644 --- a/src/share/classes/java/lang/Long.java +++ b/src/share/classes/java/lang/Long.java @@ -598,9 +598,9 @@ public final class Long extends Number implements Comparable<Long> { * </blockquote> * * <i>DecimalNumeral</i>, <i>HexDigits</i>, and <i>OctalDigits</i> - * are defined in <a href="http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#48282">§3.10.1</a> - * of the <a href="http://java.sun.com/docs/books/jls/html/">Java - * Language Specification</a>. + * are as defined in section 3.10.1 of + * <cite>The Java™ Language Specification</cite>, + * except that underscores are not accepted between digits. * * <p>The sequence of characters following an optional * sign and/or radix specifier ("{@code 0x}", "{@code 0X}", diff --git a/src/share/classes/java/lang/Math.java b/src/share/classes/java/lang/Math.java index 79efeb7e9bed27a5b9c4292a77f6ddd20c9fa5c5..5d1be0c215bd1710e2902efaadc3694e09cf0907 100644 --- a/src/share/classes/java/lang/Math.java +++ b/src/share/classes/java/lang/Math.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 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 @@ -627,11 +627,9 @@ public final class Math { } /** - * Returns the closest {@code int} to the argument. The - * result is rounded to an integer by adding 1/2, taking the - * floor of the result, and casting the result to type {@code int}. - * In other words, the result is equal to the value of the expression: - * <p>{@code (int)Math.floor(a + 0.5f)} + * Returns the closest {@code int} to the argument, with ties + * rounding up. + * * <p> * Special cases: * <ul><li>If the argument is NaN, the result is 0. @@ -649,17 +647,17 @@ public final class Math { * @see java.lang.Integer#MIN_VALUE */ public static int round(float a) { - return (int)floor(a + 0.5f); + if (a != 0x1.fffffep-2f) // greatest float value less than 0.5 + return (int)floor(a + 0.5f); + else + return 0; } /** - * Returns the closest {@code long} to the argument. The result - * is rounded to an integer by adding 1/2, taking the floor of the - * result, and casting the result to type {@code long}. In other - * words, the result is equal to the value of the expression: - * <p>{@code (long)Math.floor(a + 0.5d)} - * <p> - * Special cases: + * Returns the closest {@code long} to the argument, with ties + * rounding up. + * + * <p>Special cases: * <ul><li>If the argument is NaN, the result is 0. * <li>If the argument is negative infinity or any value less than or * equal to the value of {@code Long.MIN_VALUE}, the result is @@ -676,7 +674,10 @@ public final class Math { * @see java.lang.Long#MIN_VALUE */ public static long round(double a) { - return (long)floor(a + 0.5d); + if (a != 0x1.fffffffffffffp-2) // greatest double value less than 0.5 + return (long)floor(a + 0.5d); + else + return 0; } private static Random randomNumberGenerator; diff --git a/src/share/classes/java/lang/Object.java b/src/share/classes/java/lang/Object.java index ada472a1a4371370e86f861cddf8637cad4047c0..d47b0a02311fb4a882892db46520e4d89ce9be82 100644 --- a/src/share/classes/java/lang/Object.java +++ b/src/share/classes/java/lang/Object.java @@ -58,9 +58,8 @@ public class Object { * * @return The {@code Class} object that represents the runtime * class of this object. - * @see <a href="http://java.sun.com/docs/books/jls/">The Java - * Language Specification, Third Edition (15.8.2 Class - * Literals)</a> + * @see Class Literals, section 15.8.2 of + * <cite>The Java™ Language Specification</cite>. */ public final native Class<?> getClass(); diff --git a/src/share/classes/java/lang/Override.java b/src/share/classes/java/lang/Override.java index 2ef2850ff2ffec0a0dc65d6032cc224a750981f4..f708105dc36484e5694d59ff4f3ec4f02b661270 100644 --- a/src/share/classes/java/lang/Override.java +++ b/src/share/classes/java/lang/Override.java @@ -43,7 +43,7 @@ import java.lang.annotation.*; * * @author Peter von der Ahé * @author Joshua Bloch - * @jls3 9.6.1.4 Override + * @jls 9.6.1.4 Override * @since 1.5 */ @Target(ElementType.METHOD) diff --git a/src/share/classes/java/lang/Package.java b/src/share/classes/java/lang/Package.java index 9b14e9443dcd7fc8610d4d96d9926835a60e6ecd..3ea8013238df12ab8462973fbdac2d888bc38a35 100644 --- a/src/share/classes/java/lang/Package.java +++ b/src/share/classes/java/lang/Package.java @@ -109,10 +109,9 @@ public class Package implements java.lang.reflect.AnnotatedElement { /** * Return the name of this package. * - * @return The fully-qualified name of this package as defined in the - * <em>Java Language Specification, Third Edition</em> - * <a href="http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.5.3"> - * §6.5.3</a>, for example, {@code java.lang} + * @return The fully-qualified name of this package as defined in section 6.5.3 of + * <cite>The Java™ Language Specification</cite>, + * for example, {@code java.lang} */ public String getName() { return pkgName; diff --git a/src/share/classes/java/lang/RuntimeException.java b/src/share/classes/java/lang/RuntimeException.java index add5900d49346457a89373a7bdb195f68026017e..85c0729dc9f902f6cb1627bcdd7fdc60b5abdb9a 100644 --- a/src/share/classes/java/lang/RuntimeException.java +++ b/src/share/classes/java/lang/RuntimeException.java @@ -37,7 +37,7 @@ package java.lang; * propagate outside the method or constructor boundary. * * @author Frank Yellin - * @jls3 11.2 Compile-Time Checking of Exceptions + * @jls 11.2 Compile-Time Checking of Exceptions * @since JDK1.0 */ public class RuntimeException extends Exception { diff --git a/src/share/classes/java/lang/SafeVarargs.java b/src/share/classes/java/lang/SafeVarargs.java index 1477b50c985c8adceeed2e51efb80ec128a9a0ec..b0c03a9162b18510adfb2d537f584dafc2c2f768 100644 --- a/src/share/classes/java/lang/SafeVarargs.java +++ b/src/share/classes/java/lang/SafeVarargs.java @@ -70,8 +70,8 @@ import java.lang.annotation.*; * * </ul> * - * @jls3 4.7 Reifiable Types - * @jls3 8.4.1 Formal Parameters + * @jls 4.7 Reifiable Types + * @jls 8.4.1 Formal Parameters */ @Documented @Retention(RetentionPolicy.RUNTIME) diff --git a/src/share/classes/java/lang/Short.java b/src/share/classes/java/lang/Short.java index 080a5f95ee33ce785d0304e6f6fa20956f675ef3..5ff010da00e4eea17cc0c40498636cbd52f73154 100644 --- a/src/share/classes/java/lang/Short.java +++ b/src/share/classes/java/lang/Short.java @@ -256,9 +256,9 @@ public final class Short extends Number implements Comparable<Short> { * </blockquote> * * <i>DecimalNumeral</i>, <i>HexDigits</i>, and <i>OctalDigits</i> - * are defined in <a href="http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#48282">§3.10.1</a> - * of the <a href="http://java.sun.com/docs/books/jls/html/">Java - * Language Specification</a>. + * are as defined in section 3.10.1 of + * <cite>The Java™ Language Specification</cite>, + * except that underscores are not accepted between digits. * * <p>The sequence of characters following an optional * sign and/or radix specifier ("{@code 0x}", "{@code 0X}", diff --git a/src/share/classes/java/lang/StrictMath.java b/src/share/classes/java/lang/StrictMath.java index 56be3c5f17abeb912339cc4361a6abb7fecfc3f2..b829a817b8d5879fcad0ce9780452130edb03fd0 100644 --- a/src/share/classes/java/lang/StrictMath.java +++ b/src/share/classes/java/lang/StrictMath.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -613,11 +613,8 @@ public final class StrictMath { public static native double pow(double a, double b); /** - * Returns the closest {@code int} to the argument. The - * result is rounded to an integer by adding 1/2, taking the - * floor of the result, and casting the result to type {@code int}. - * In other words, the result is equal to the value of the expression: - * <p>{@code (int)Math.floor(a + 0.5f)} + * Returns the closest {@code int} to the argument, with ties + * rounding up. * * <p>Special cases: * <ul><li>If the argument is NaN, the result is 0. @@ -635,15 +632,12 @@ public final class StrictMath { * @see java.lang.Integer#MIN_VALUE */ public static int round(float a) { - return (int)floor(a + 0.5f); + return Math.round(a); } /** - * Returns the closest {@code long} to the argument. The result - * is rounded to an integer by adding 1/2, taking the floor of the - * result, and casting the result to type {@code long}. In other - * words, the result is equal to the value of the expression: - * <p>{@code (long)Math.floor(a + 0.5d)} + * Returns the closest {@code long} to the argument, with ties + * rounding up. * * <p>Special cases: * <ul><li>If the argument is NaN, the result is 0. @@ -662,7 +656,7 @@ public final class StrictMath { * @see java.lang.Long#MIN_VALUE */ public static long round(double a) { - return (long)floor(a + 0.5d); + return Math.round(a); } private static Random randomNumberGenerator; diff --git a/src/share/classes/java/lang/String.java b/src/share/classes/java/lang/String.java index 7cadf9e3137b8349b8ccd8ddc03f6e46265eb6ad..1a40916a20a81d9c6b9d0443c78b04b327d8a678 100644 --- a/src/share/classes/java/lang/String.java +++ b/src/share/classes/java/lang/String.java @@ -2819,8 +2819,8 @@ public final class String * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * @@ -2863,8 +2863,8 @@ public final class String * extra arguments are ignored. The number of arguments is * variable and may be zero. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. The behaviour on a + * <cite>The Java™ Virtual Machine Specification</cite>. + * The behaviour on a * <tt>null</tt> argument depends on the <a * href="../util/Formatter.html#syntax">conversion</a>. * @@ -3066,9 +3066,8 @@ public final class String * if and only if <code>s.equals(t)</code> is <code>true</code>. * <p> * All literal strings and string-valued constant expressions are - * interned. String literals are defined in §3.10.5 of the - * <a href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a> + * interned. String literals are defined in section 3.10.5 of the + * <cite>The Java™ Language Specification</cite>. * * @return a string that has the same contents as this string, but is * guaranteed to be from a pool of unique strings. diff --git a/src/share/classes/java/lang/Throwable.java b/src/share/classes/java/lang/Throwable.java index 2784238efa48f874c482f2b19f3704db0be69454..8468ecf0d300d3e27d9f7b8b3152ed4a8e4ad3d4 100644 --- a/src/share/classes/java/lang/Throwable.java +++ b/src/share/classes/java/lang/Throwable.java @@ -108,7 +108,7 @@ import java.util.*; * @author unascribed * @author Josh Bloch (Added exception chaining and programmatic access to * stack trace in 1.4.) - * @jls3 11.2 Compile-Time Checking of Exceptions + * @jls 11.2 Compile-Time Checking of Exceptions * @since JDK1.0 */ public class Throwable implements Serializable { diff --git a/src/share/classes/java/lang/annotation/Annotation.java b/src/share/classes/java/lang/annotation/Annotation.java index 0cfd78dd69dcb993cc7a7035049348f31f3a680b..d7b8ddd76f7cd46085d25ff8460a39f838e9b7f1 100644 --- a/src/share/classes/java/lang/annotation/Annotation.java +++ b/src/share/classes/java/lang/annotation/Annotation.java @@ -31,9 +31,8 @@ package java.lang.annotation; * an annotation type. Also note that this interface does not itself * define an annotation type. * - * More information about annotation types can be found in <i>The - * Java™ Language Specification, Third Edition</i>, <a - * href="http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html#9.6">§9.6</a>. + * More information about annotation types can be found in section 9.6 of + * <cite>The Java™ Language Specification</cite>. * * @author Josh Bloch * @since 1.5 diff --git a/src/share/classes/java/lang/instrument/ClassFileTransformer.java b/src/share/classes/java/lang/instrument/ClassFileTransformer.java index ca0ab77e0dbd2f4d1fcb66c50125cf721624e418..6bc16ecf91377dc6ffcf80ffe67fb518e17f0ae9 100644 --- a/src/share/classes/java/lang/instrument/ClassFileTransformer.java +++ b/src/share/classes/java/lang/instrument/ClassFileTransformer.java @@ -36,9 +36,9 @@ import java.security.ProtectionDomain; * to transform class files. * The transformation occurs before the class is defined by the JVM. * <P> - * Note the term <i>class file</i> is used as defined in the chapter - * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#80959">The class File Format</a> - * of <i>The Java Virtual Machine Specification</i>, to mean a sequence + * Note the term <i>class file</i> is used as defined in section 3.1 of + * <cite>The Java™ Virtual Machine Specification</cite>, + * to mean a sequence * of bytes in class file format, whether or not they reside in a file. * * @see java.lang.instrument.Instrumentation diff --git a/src/share/classes/java/lang/instrument/Instrumentation.java b/src/share/classes/java/lang/instrument/Instrumentation.java index e8ef27a9658dbc97494e6d980fd8ef6c58b27417..510b4bde63c8b35c18c3840a32dffaa658c7ebd7 100644 --- a/src/share/classes/java/lang/instrument/Instrumentation.java +++ b/src/share/classes/java/lang/instrument/Instrumentation.java @@ -434,8 +434,9 @@ public interface Instrumentation { * avoiding these types of issues, is to use a unique package name for the * instrumentation classes. * - * <p> The <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual Machine - * Specification</a> specifies that a subsequent attempt to resolve a symbolic + * <p> + * <cite>The Java™ Virtual Machine Specification</cite> + * specifies that a subsequent attempt to resolve a symbolic * reference that the Java virtual machine has previously unsuccessfully attempted * to resolve always fails with the same error that was thrown as a result of the * initial resolution attempt. Consequently, if the JAR file contains an entry @@ -487,8 +488,9 @@ public interface Instrumentation { * getName()} method on the <code>jarfile</code> and this is provided as the * parameter to the <code>appendToClassPathForInstrumentation</code> method. * - * <p> The <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual Machine - * Specification</a> specifies that a subsequent attempt to resolve a symbolic + * <p> + * <cite>The Java™ Virtual Machine Specification</cite> + * specifies that a subsequent attempt to resolve a symbolic * reference that the Java virtual machine has previously unsuccessfully attempted * to resolve always fails with the same error that was thrown as a result of the * initial resolution attempt. Consequently, if the JAR file contains an entry diff --git a/src/share/classes/java/lang/invoke/package-info.java b/src/share/classes/java/lang/invoke/package-info.java index 0eac856d218fe797e77a29b105544deb8a760ac6..b6a1992dca874c6f6ad1bb25eb4ddc25a43e253d 100644 --- a/src/share/classes/java/lang/invoke/package-info.java +++ b/src/share/classes/java/lang/invoke/package-info.java @@ -194,8 +194,8 @@ * Method handle constants for subtags {@code REF_getStatic}, {@code REF_putStatic}, and {@code REF_invokeStatic} * may force class initialization on their first invocation, just like the corresponding bytecodes. * <p> - * The rules of section 5.4.3 of the - * <a href="http://java.sun.com/docs/books/jvms/second_edition/html/ConstantPool.doc.html#73492">JVM Specification</a> + * The rules of section 5.4.3 of + * <cite>The Java™ Virtual Machine Specification</cite> * apply to the resolution of {@code CONSTANT_MethodType}, {@code CONSTANT_MethodHandle}, * and {@code CONSTANT_InvokeDynamic} constants, * by the execution of {@code invokedynamic} and {@code ldc} instructions. diff --git a/src/share/classes/java/lang/reflect/Constructor.java b/src/share/classes/java/lang/reflect/Constructor.java index 2451c54e82d65c63fdbb9896ace7dece24934e5e..8ff6d410b9918b916039222d7852db29ea637c3f 100644 --- a/src/share/classes/java/lang/reflect/Constructor.java +++ b/src/share/classes/java/lang/reflect/Constructor.java @@ -186,8 +186,8 @@ public final * the type variables declared by this generic declaration * @throws GenericSignatureFormatError if the generic * signature of this generic declaration does not conform to - * the format specified in the Java Virtual Machine Specification, - * 3rd edition + * the format specified in + * <cite>The Java™ Virtual Machine Specification</cite> * @since 1.5 */ public TypeVariable<Constructor<T>>[] getTypeParameters() { @@ -229,7 +229,8 @@ public final * parameter types of the underlying method, in declaration order * @throws GenericSignatureFormatError * if the generic method signature does not conform to the format - * specified in the Java Virtual Machine Specification, 3rd edition + * specified in + * <cite>The Java™ Virtual Machine Specification</cite> * @throws TypeNotPresentException if any of the parameter * types of the underlying method refers to a non-existent type * declaration @@ -273,7 +274,8 @@ public final * thrown by the underlying method * @throws GenericSignatureFormatError * if the generic method signature does not conform to the format - * specified in the Java Virtual Machine Specification, 3rd edition + * specified in + * <cite>The Java™ Virtual Machine Specification</cite> * @throws TypeNotPresentException if the underlying method's * {@code throws} clause refers to a non-existent type declaration * @throws MalformedParameterizedTypeException if @@ -468,8 +470,8 @@ public final * * <p>If the constructor's declaring class is an inner class in a * non-static context, the first argument to the constructor needs - * to be the enclosing instance; see <i>The Java Language - * Specification</i>, section 15.9.3. + * to be the enclosing instance; see section 15.9.3 of + * <cite>The Java™ Language Specification</cite>. * * <p>If the required access and argument checks succeed and the * instantiation will proceed, the constructor's declaring class @@ -541,7 +543,8 @@ public final * constructor; returns {@code false} otherwise. * * @return true if and only if this constructor is a synthetic - * constructor as defined by the Java Language Specification. + * constructor as defined by + * <cite>The Java™ Language Specification</cite>. * @since 1.5 */ public boolean isSynthetic() { diff --git a/src/share/classes/java/lang/reflect/Field.java b/src/share/classes/java/lang/reflect/Field.java index f7647d6dc8faa999cc8eae1b42f7e53eb0b3bbf9..1e6441aa94e9e68185d8d0369e10a499f2d1fd8a 100644 --- a/src/share/classes/java/lang/reflect/Field.java +++ b/src/share/classes/java/lang/reflect/Field.java @@ -221,8 +221,8 @@ class Field extends AccessibleObject implements Member { * @return a {@code Type} object that represents the declared type for * the field represented by this {@code Field} object * @throws GenericSignatureFormatError if the generic field - * signature does not conform to the format specified in the Java - * Virtual Machine Specification, 3rd edition + * signature does not conform to the format specified in + * <cite>The Java™ Virtual Machine Specification</cite> * @throws TypeNotPresentException if the generic type * signature of the underlying field refers to a non-existent * type declaration diff --git a/src/share/classes/java/lang/reflect/GenericDeclaration.java b/src/share/classes/java/lang/reflect/GenericDeclaration.java index b4ba32906643c6e3049e185a1cfe1dda6092f83d..fb319bfbea6edfef53c26064e6bdd18b3ade4c62 100644 --- a/src/share/classes/java/lang/reflect/GenericDeclaration.java +++ b/src/share/classes/java/lang/reflect/GenericDeclaration.java @@ -42,8 +42,8 @@ public interface GenericDeclaration { * the type variables declared by this generic declaration * @throws GenericSignatureFormatError if the generic * signature of this generic declaration does not conform to - * the format specified in the Java Virtual Machine Specification, - * 3rd edition + * the format specified in + * <cite>The Java™ Virtual Machine Specification</cite> */ public TypeVariable<?>[] getTypeParameters(); } diff --git a/src/share/classes/java/lang/reflect/Method.java b/src/share/classes/java/lang/reflect/Method.java index 1de1557051159d2ddcc795af0933c41975a9f9fe..0a1f7a30b4b88221423c5475212ededc3defd78b 100644 --- a/src/share/classes/java/lang/reflect/Method.java +++ b/src/share/classes/java/lang/reflect/Method.java @@ -194,8 +194,8 @@ public final * the type variables declared by this generic declaration * @throws GenericSignatureFormatError if the generic * signature of this generic declaration does not conform to - * the format specified in the Java Virtual Machine Specification, - * 3rd edition + * the format specified in + * <cite>The Java™ Virtual Machine Specification</cite> * @since 1.5 */ public TypeVariable<Method>[] getTypeParameters() { @@ -230,7 +230,8 @@ public final * type of the underlying method * @throws GenericSignatureFormatError * if the generic method signature does not conform to the format - * specified in the Java Virtual Machine Specification, 3rd edition + * specified in + * <cite>The Java™ Virtual Machine Specification</cite> * @throws TypeNotPresentException if the underlying method's * return type refers to a non-existent type declaration * @throws MalformedParameterizedTypeException if the @@ -275,7 +276,8 @@ public final * parameter types of the underlying method, in declaration order * @throws GenericSignatureFormatError * if the generic method signature does not conform to the format - * specified in the Java Virtual Machine Specification, 3rd edition + * specified in + * <cite>The Java™ Virtual Machine Specification</cite> * @throws TypeNotPresentException if any of the parameter * types of the underlying method refers to a non-existent type * declaration @@ -319,7 +321,8 @@ public final * thrown by the underlying method * @throws GenericSignatureFormatError * if the generic method signature does not conform to the format - * specified in the Java Virtual Machine Specification, 3rd edition + * specified in + * <cite>The Java™ Virtual Machine Specification</cite> * @throws TypeNotPresentException if the underlying method's * {@code throws} clause refers to a non-existent type declaration * @throws MalformedParameterizedTypeException if diff --git a/src/share/classes/java/lang/reflect/Modifier.java b/src/share/classes/java/lang/reflect/Modifier.java index 6b9988984df3541cb4cca56b92dba9dfd2d5c305..de8676ec975d25c4a5803b83b29984458f81e00b 100644 --- a/src/share/classes/java/lang/reflect/Modifier.java +++ b/src/share/classes/java/lang/reflect/Modifier.java @@ -34,14 +34,8 @@ import sun.reflect.ReflectionFactory; * constants to decode class and member access modifiers. The sets of * modifiers are represented as integers with distinct bit positions * representing different modifiers. The values for the constants - * representing the modifiers are taken from <a - * href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html"><i>The - * Java</i><sup><small>TM</small></sup> <i>Virtual Machine Specification, Second - * edition</i></a> tables - * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#75734">4.1</a>, - * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#88358">4.4</a>, - * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#75568">4.5</a>, and - * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#88478">4.7</a>. + * representing the modifiers are taken from the tables in sections 4.1, 4.4, 4.5, and 4.7 of + * <cite>The Java™ Virtual Machine Specification</cite>. * * @see Class#getModifiers() * @see Member#getModifiers() @@ -214,14 +208,8 @@ class Modifier { * public final synchronized strictfp * </pre></blockquote> * The modifier names are returned in an order consistent with the - * suggested modifier orderings given in <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html"><em>The - * Java Language Specification, Second Edition</em></a> sections - * <a href="http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#21613">§8.1.1</a>, - * <a href="http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#78091">§8.3.1</a>, - * <a href="http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#78188">§8.4.3</a>, - * <a href="http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#42018">§8.8.3</a>, and - * <a href="http://java.sun.com/docs/books/jls/second_edition/html/interfaces.doc.html#235947">§9.1.1</a>. + * suggested modifier orderings given in sections 8.1.1, 8.3.1, 8.4.3, 8.8.3, and 9.1.1 of + * <cite>The Java™ Language Specification</cite>. * The full modifier ordering used by this method is: * <blockquote> {@code * public protected private abstract static final transient @@ -269,9 +257,8 @@ class Modifier { } /* - * Access modifier flag constants from <em>The Java Virtual - * Machine Specification, Second Edition</em>, tables 4.1, 4.4, - * 4.5, and 4.7. + * Access modifier flag constants from tables 4.1, 4.4, 4.5, and 4.7 of + * <cite>The Java™ Virtual Machine Specification</cite> */ /** @@ -403,7 +390,7 @@ class Modifier { * @return an {@code int} value OR-ing together the source language * modifiers that can be applied to a class. * - * @jls3 8.1.1 Class Modifiers + * @jls 8.1.1 Class Modifiers * @since 1.7 */ public static int classModifiers() { @@ -416,7 +403,7 @@ class Modifier { * @return an {@code int} value OR-ing together the source language * modifiers that can be applied to an inteface. * - * @jls3 9.1.1 Interface Modifiers + * @jls 9.1.1 Interface Modifiers * @since 1.7 */ public static int interfaceModifiers() { @@ -429,7 +416,7 @@ class Modifier { * @return an {@code int} value OR-ing together the source language * modifiers that can be applied to a constructor. * - * @jls3 8.8.3 Constructor Modifiers + * @jls 8.8.3 Constructor Modifiers * @since 1.7 */ public static int constructorModifiers() { @@ -442,7 +429,7 @@ class Modifier { * @return an {@code int} value OR-ing together the source language * modifiers that can be applied to a method. * - * @jls3 8.4.3 Method Modifiers + * @jls 8.4.3 Method Modifiers * @since 1.7 */ public static int methodModifiers() { @@ -456,7 +443,7 @@ class Modifier { * @return an {@code int} value OR-ing together the source language * modifiers that can be applied to a field. * - * @jls3 8.3.1 Field Modifiers + * @jls 8.3.1 Field Modifiers * @since 1.7 */ public static int fieldModifiers() { diff --git a/src/share/classes/java/math/BigDecimal.java b/src/share/classes/java/math/BigDecimal.java index 0d695f3bda508b79bb15883e9df812ae10130766..0549890f1251344c880bcd56d57a13ea07cad644 100644 --- a/src/share/classes/java/math/BigDecimal.java +++ b/src/share/classes/java/math/BigDecimal.java @@ -2905,12 +2905,11 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> { /** * Converts this {@code BigDecimal} to a {@code BigInteger}. - * This conversion is analogous to a <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing - * primitive conversion</i></a> from {@code double} to - * {@code long} as defined in the <a - * href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a>: any fractional part of this + * This conversion is analogous to the + * <i>narrowing primitive conversion</i> from {@code double} to + * {@code long} as defined in section 5.1.3 of + * <cite>The Java™ Language Specification</cite>: + * any fractional part of this * {@code BigDecimal} will be discarded. Note that this * conversion can lose information about the precision of the * {@code BigDecimal} value. @@ -2942,13 +2941,12 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> { } /** - * Converts this {@code BigDecimal} to a {@code long}. This - * conversion is analogous to a <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing - * primitive conversion</i></a> from {@code double} to - * {@code short} as defined in the <a - * href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a>: any fractional part of this + * Converts this {@code BigDecimal} to a {@code long}. + * This conversion is analogous to the + * <i>narrowing primitive conversion</i> from {@code double} to + * {@code short} as defined in section 5.1.3 of + * <cite>The Java™ Language Specification</cite>: + * any fractional part of this * {@code BigDecimal} will be discarded, and if the resulting * "{@code BigInteger}" is too big to fit in a * {@code long}, only the low-order 64 bits are returned. @@ -3011,13 +3009,12 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> { } /** - * Converts this {@code BigDecimal} to an {@code int}. This - * conversion is analogous to a <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing - * primitive conversion</i></a> from {@code double} to - * {@code short} as defined in the <a - * href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a>: any fractional part of this + * Converts this {@code BigDecimal} to an {@code int}. + * This conversion is analogous to the + * <i>narrowing primitive conversion</i> from {@code double} to + * {@code short} as defined in section 5.1.3 of + * <cite>The Java™ Language Specification</cite>: + * any fractional part of this * {@code BigDecimal} will be discarded, and if the resulting * "{@code BigInteger}" is too big to fit in an * {@code int}, only the low-order 32 bits are returned. @@ -3095,12 +3092,11 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> { /** * Converts this {@code BigDecimal} to a {@code float}. - * This conversion is similar to the <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing - * primitive conversion</i></a> from {@code double} to - * {@code float} defined in the <a - * href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a>: if this {@code BigDecimal} has too great a + * This conversion is similar to the + * <i>narrowing primitive conversion</i> from {@code double} to + * {@code float} as defined in section 5.1.3 of + * <cite>The Java™ Language Specification</cite>: + * if this {@code BigDecimal} has too great a * magnitude to represent as a {@code float}, it will be * converted to {@link Float#NEGATIVE_INFINITY} or {@link * Float#POSITIVE_INFINITY} as appropriate. Note that even when @@ -3119,12 +3115,11 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> { /** * Converts this {@code BigDecimal} to a {@code double}. - * This conversion is similar to the <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing - * primitive conversion</i></a> from {@code double} to - * {@code float} as defined in the <a - * href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a>: if this {@code BigDecimal} has too great a + * This conversion is similar to the + * <i>narrowing primitive conversion</i> from {@code double} to + * {@code float} as defined in section 5.1.3 of + * <cite>The Java™ Language Specification</cite>: + * if this {@code BigDecimal} has too great a * magnitude represent as a {@code double}, it will be * converted to {@link Double#NEGATIVE_INFINITY} or {@link * Double#POSITIVE_INFINITY} as appropriate. Note that even when diff --git a/src/share/classes/java/math/BigInteger.java b/src/share/classes/java/math/BigInteger.java index 589b1b2ebc9c285ab093f4fa8d633db39efa4351..4fcce199de55c92793249b6c0e751a0958e8cc0c 100644 --- a/src/share/classes/java/math/BigInteger.java +++ b/src/share/classes/java/math/BigInteger.java @@ -2719,12 +2719,11 @@ public class BigInteger extends Number implements Comparable<BigInteger> { /** * Converts this BigInteger to an {@code int}. This - * conversion is analogous to a <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing - * primitive conversion</i></a> from {@code long} to - * {@code int} as defined in the <a - * href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a>: if this BigInteger is too big to fit in an + * conversion is analogous to a + * <i>narrowing primitive conversion</i> from {@code long} to + * {@code int} as defined in section 5.1.3 of + * <cite>The Java™ Language Specification</cite>: + * if this BigInteger is too big to fit in an * {@code int}, only the low-order 32 bits are returned. * Note that this conversion can lose information about the * overall magnitude of the BigInteger value as well as return a @@ -2740,12 +2739,11 @@ public class BigInteger extends Number implements Comparable<BigInteger> { /** * Converts this BigInteger to a {@code long}. This - * conversion is analogous to a <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing - * primitive conversion</i></a> from {@code long} to - * {@code int} as defined in the <a - * href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a>: if this BigInteger is too big to fit in a + * conversion is analogous to a + * <i>narrowing primitive conversion</i> from {@code long} to + * {@code int} as defined in section 5.1.3 of + * <cite>The Java™ Language Specification</cite>: + * if this BigInteger is too big to fit in a * {@code long}, only the low-order 64 bits are returned. * Note that this conversion can lose information about the * overall magnitude of the BigInteger value as well as return a @@ -2763,12 +2761,11 @@ public class BigInteger extends Number implements Comparable<BigInteger> { /** * Converts this BigInteger to a {@code float}. This - * conversion is similar to the <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing - * primitive conversion</i></a> from {@code double} to - * {@code float} defined in the <a - * href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a>: if this BigInteger has too great a magnitude + * conversion is similar to the + * <i>narrowing primitive conversion</i> from {@code double} to + * {@code float} as defined in section 5.1.3 of + * <cite>The Java™ Language Specification</cite>: + * if this BigInteger has too great a magnitude * to represent as a {@code float}, it will be converted to * {@link Float#NEGATIVE_INFINITY} or {@link * Float#POSITIVE_INFINITY} as appropriate. Note that even when @@ -2784,12 +2781,11 @@ public class BigInteger extends Number implements Comparable<BigInteger> { /** * Converts this BigInteger to a {@code double}. This - * conversion is similar to the <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing - * primitive conversion</i></a> from {@code double} to - * {@code float} defined in the <a - * href="http://java.sun.com/docs/books/jls/html/">Java Language - * Specification</a>: if this BigInteger has too great a magnitude + * conversion is similar to the + * <i>narrowing primitive conversion</i> from {@code double} to + * {@code float} as defined in section 5.1.3 of + * <cite>The Java™ Language Specification</cite>: + * if this BigInteger has too great a magnitude * to represent as a {@code double}, it will be converted to * {@link Double#NEGATIVE_INFINITY} or {@link * Double#POSITIVE_INFINITY} as appropriate. Note that even when diff --git a/src/share/classes/java/security/SecureClassLoader.java b/src/share/classes/java/security/SecureClassLoader.java index 8230a294f28c88e04e637265e514c4d39709f784..ffcd1a7160f195ae78ad897278564b33de737305 100644 --- a/src/share/classes/java/security/SecureClassLoader.java +++ b/src/share/classes/java/security/SecureClassLoader.java @@ -118,10 +118,8 @@ public class SecureClassLoader extends ClassLoader { * and without a trailing ".class" suffix. * @param b the bytes that make up the class data. The bytes in * positions <code>off</code> through <code>off+len-1</code> - * should have the format of a valid class file as defined - * by the - * <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. + * should have the format of a valid class file as defined by + * <cite>The Java™ Virtual Machine Specification</cite>. * @param off the start offset in <code>b</code> of the class data * @param len the length of the class data * @param cs the associated CodeSource, or <code>null</code> if none @@ -157,9 +155,8 @@ public class SecureClassLoader extends ClassLoader { * and without a trailing ".class" suffix. * @param b the bytes that make up the class data. The bytes from positions * <tt>b.position()</tt> through <tt>b.position() + b.limit() -1</tt> - * should have the format of a valid class file as defined by the - * <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual - * Machine Specification</a>. + * should have the format of a valid class file as defined by + * <cite>The Java™ Virtual Machine Specification</cite>. * @param cs the associated CodeSource, or <code>null</code> if none * @return the <code>Class</code> object created from the data, * and optional CodeSource. diff --git a/src/share/classes/java/sql/DriverManager.java b/src/share/classes/java/sql/DriverManager.java index ce6c6bf4823a7e53195186290453e0de04da0eb5..4864eb2cc93217826067f5351ae459bf9760b400 100644 --- a/src/share/classes/java/sql/DriverManager.java +++ b/src/share/classes/java/sql/DriverManager.java @@ -80,7 +80,7 @@ public class DriverManager { // List of registered JDBC drivers - private final static CopyOnWriteArrayList<Driver> registeredDrivers = new CopyOnWriteArrayList<Driver>(); + private final static CopyOnWriteArrayList<DriverInfo> registeredDrivers = new CopyOnWriteArrayList<DriverInfo>(); private static volatile int loginTimeout = 0; private static volatile java.io.PrintWriter logWriter = null; private static volatile java.io.PrintStream logStream = null; @@ -265,22 +265,22 @@ public class DriverManager { // Walk through the loaded registeredDrivers attempting to locate someone // who understands the given URL. - for (Driver aDriver : registeredDrivers) { + for (DriverInfo aDriver : registeredDrivers) { // If the caller does not have permission to load the driver then // skip it. - if(isDriverAllowed(aDriver, callerCL)) { + if(isDriverAllowed(aDriver.driver, callerCL)) { try { - if(aDriver.acceptsURL(url)) { + if(aDriver.driver.acceptsURL(url)) { // Success! - println("getDriver returning " + aDriver.getClass().getName()); - return (aDriver); + println("getDriver returning " + aDriver.driver.getClass().getName()); + return (aDriver.driver); } } catch(SQLException sqe) { // Drop through and try the next driver. } } else { - println(" skipping: " + aDriver.getClass().getName()); + println(" skipping: " + aDriver.driver.getClass().getName()); } } @@ -305,7 +305,7 @@ public class DriverManager { /* Register the driver if it has not already been added to our list */ if(driver != null) { - registeredDrivers.addIfAbsent(driver); + registeredDrivers.addIfAbsent(new DriverInfo(driver)); } else { // This is for compatibility with the original DriverManager throw new NullPointerException(); @@ -333,9 +333,10 @@ public class DriverManager { ClassLoader callerCL = DriverManager.getCallerClassLoader(); println("DriverManager.deregisterDriver: " + driver); - if(registeredDrivers.contains(driver)) { + DriverInfo aDriver = new DriverInfo(driver); + if(registeredDrivers.contains(aDriver)) { if (isDriverAllowed(driver, callerCL)) { - registeredDrivers.remove(driver); + registeredDrivers.remove(aDriver); } else { // If the caller does not have permission to load the driver then // throw a SecurityException. @@ -363,11 +364,11 @@ public class DriverManager { ClassLoader callerCL = DriverManager.getCallerClassLoader(); // Walk through the loaded registeredDrivers. - for(Driver aDriver : registeredDrivers) { + for(DriverInfo aDriver : registeredDrivers) { // If the caller does not have permission to load the driver then // skip it. - if(isDriverAllowed(aDriver, callerCL)) { - result.addElement(aDriver); + if(isDriverAllowed(aDriver.driver, callerCL)) { + result.addElement(aDriver.driver); } else { println(" skipping: " + aDriver.getClass().getName()); } @@ -482,8 +483,8 @@ public class DriverManager { private static void loadInitialDrivers() { String drivers; try { - drivers = (String) AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { + drivers = AccessController.doPrivileged(new PrivilegedAction<String>() { + public String run() { return System.getProperty("jdbc.drivers"); } }); @@ -495,8 +496,8 @@ public class DriverManager { // exposed as a java.sql.Driver.class service. // ServiceLoader.load() replaces the sun.misc.Providers() - AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { + AccessController.doPrivileged(new PrivilegedAction<Void>() { + public Void run() { ServiceLoader<Driver> loadedDrivers = ServiceLoader.load(Driver.class); Iterator driversIterator = loadedDrivers.iterator(); @@ -569,16 +570,16 @@ public class DriverManager { // Remember the first exception that gets raised so we can reraise it. SQLException reason = null; - for(Driver aDriver : registeredDrivers) { + for(DriverInfo aDriver : registeredDrivers) { // If the caller does not have permission to load the driver then // skip it. - if(isDriverAllowed(aDriver, callerCL)) { + if(isDriverAllowed(aDriver.driver, callerCL)) { try { - println(" trying " + aDriver.getClass().getName()); - Connection con = aDriver.connect(url, info); + println(" trying " + aDriver.driver.getClass().getName()); + Connection con = aDriver.driver.connect(url, info); if (con != null) { // Success! - println("getConnection returning " + aDriver.getClass().getName()); + println("getConnection returning " + aDriver.driver.getClass().getName()); return (con); } } catch (SQLException ex) { @@ -607,3 +608,29 @@ public class DriverManager { private static native ClassLoader getCallerClassLoader(); } + +/* + * Wrapper class for registered Drivers in order to not expose Driver.equals() + * to avoid the capture of the Driver it being compared to as it might not + * normally have access. + */ +class DriverInfo { + + final Driver driver; + DriverInfo(Driver driver) { + this.driver = driver; + } + + public boolean equals(Object other) { + return (other instanceof DriverInfo) + && this.driver == ((DriverInfo) other).driver; + } + + public int hashCode() { + return driver.hashCode(); + } + + public String toString() { + return ("driver[className=" + driver + "]"); + } +} diff --git a/src/share/classes/java/sql/ResultSet.java b/src/share/classes/java/sql/ResultSet.java index a8aac4ffeea626dde677dd31682cec609210aa96..fc4dbf6b476d52cbd1a47e9f000c854cd540714e 100644 --- a/src/share/classes/java/sql/ResultSet.java +++ b/src/share/classes/java/sql/ResultSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -137,7 +137,7 @@ import java.io.InputStream; * to retrieve the next result from a sequence of multiple results. * * <P>The number, types and properties of a <code>ResultSet</code> - * object's columns are provided by the <code>ResulSetMetaData</code> + * object's columns are provided by the <code>ResultSetMetaData</code> * object returned by the <code>ResultSet.getMetaData</code> method. * * @see Statement#executeQuery @@ -422,7 +422,7 @@ public interface ResultSet extends Wrapper, AutoCloseable { * of this <code>ResultSet</code> object as * a stream of ASCII characters. The value can then be read in chunks from the * stream. This method is particularly - * suitable for retrieving large <char>LONGVARCHAR</char> values. + * suitable for retrieving large <code>LONGVARCHAR</code> values. * The JDBC driver will * do any necessary conversion from the database format into ASCII. * diff --git a/src/share/classes/java/sql/SQLPermission.java b/src/share/classes/java/sql/SQLPermission.java index 9f45718853d020c53690e4b3fe7a4552c680671f..3511b6da42b25494b1e7a0c09d34bf1e6f8dc85b 100644 --- a/src/share/classes/java/sql/SQLPermission.java +++ b/src/share/classes/java/sql/SQLPermission.java @@ -116,11 +116,11 @@ public final class SQLPermission extends BasicPermission { /** * Creates a new <code>SQLPermission</code> object with the specified name. - * The name is the symbolic name of the <code>SQLPermission</code>; currently, - * the only name allowed is "setLog". + * The name is the symbolic name of the <code>SQLPermission</code>. * * @param name the name of this <code>SQLPermission</code> object, which must - * be <code>setLog</code> + * be either {@code setLog}, {@code callAbort}, {@code setSyncFactory}, + * or {@code setNetworkTimeout} * @throws NullPointerException if <code>name</code> is <code>null</code>. * @throws IllegalArgumentException if <code>name</code> is empty. @@ -134,10 +134,11 @@ public final class SQLPermission extends BasicPermission { * Creates a new <code>SQLPermission</code> object with the specified name. * The name is the symbolic name of the <code>SQLPermission</code>; the * actions <code>String</code> is currently unused and should be - * <code>null</code>. + * <code>null</code>. * * @param name the name of this <code>SQLPermission</code> object, which must - * be <code>setLog</code> + * be either {@code setLog}, {@code callAbort}, {@code setSyncFactory}, + * or {@code setNetworkTimeout} * @param actions should be <code>null</code> * @throws NullPointerException if <code>name</code> is <code>null</code>. * @throws IllegalArgumentException if <code>name</code> is empty. diff --git a/src/share/classes/java/sql/Timestamp.java b/src/share/classes/java/sql/Timestamp.java index 848606bcfbc83fa003e1bcb5dba690b72cc713b4..14f648b267888caea2c9e77aa60bfb4285ace2aa 100644 --- a/src/share/classes/java/sql/Timestamp.java +++ b/src/share/classes/java/sql/Timestamp.java @@ -54,7 +54,7 @@ import java.util.StringTokenizer; * As a result, the <code>Timestamp.equals(Object)</code> * method is not symmetric with respect to the * <code>java.util.Date.equals(Object)</code> - * method. Also, the <code>hashcode</code> method uses the underlying + * method. Also, the <code>hashCode</code> method uses the underlying * <code>java.util.Date</code> * implementation and therefore does not include nanos in its computation. * <P> @@ -515,6 +515,18 @@ public class Timestamp extends java.util.Date { } } + /** + * {@inheritDoc} + * + * The {@code hashCode} method uses the underlying {@code java.util.Date} + * implementation and therefore does not include nanos in its computation. + * + */ + @Override + public int hashCode() { + return super.hashCode(); + } + static final long serialVersionUID = 2745179027874758501L; } diff --git a/src/share/classes/java/text/ChoiceFormat.java b/src/share/classes/java/text/ChoiceFormat.java index 31b138539cfd19df9ecf2714457df0371375240c..f513cd9de80a53aa1bbdde09f56000e0049492c8 100644 --- a/src/share/classes/java/text/ChoiceFormat.java +++ b/src/share/classes/java/text/ChoiceFormat.java @@ -136,8 +136,8 @@ import java.util.Arrays; * </pre> * </blockquote> * And the output result would be like the following: - * <pre> * <blockquote> + * <pre> * Format with -INF : is negative * Format with -1.0 : is negative * Format with 0 : is zero or fraction diff --git a/src/share/classes/java/util/AbstractQueue.java b/src/share/classes/java/util/AbstractQueue.java index c2c3899bb9600f0579e66fb40b16f840e6be69cb..182698dc5a287d6f8b7f691f2236d0396c81ec37 100644 --- a/src/share/classes/java/util/AbstractQueue.java +++ b/src/share/classes/java/util/AbstractQueue.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util; diff --git a/src/share/classes/java/util/ArrayDeque.java b/src/share/classes/java/util/ArrayDeque.java index 8592fcb1c77c2dc41e0faf3f95f2a37265f1917f..eb70aaa59ccbb04371d8546c4016fc76bb64dee8 100644 --- a/src/share/classes/java/util/ArrayDeque.java +++ b/src/share/classes/java/util/ArrayDeque.java @@ -29,7 +29,7 @@ * file: * * Written by Josh Bloch of Google Inc. and released to the public domain, - * as explained at http://creativecommons.org/licenses/publicdomain. + * as explained at http://creativecommons.org/publicdomain/zero/1.0/. */ package java.util; diff --git a/src/share/classes/java/util/Deque.java b/src/share/classes/java/util/Deque.java index 4c69609cbd051d469887adc146e2eb543d5ccb8f..b5516211be635b87c03d005c2d322643d7fdc9ba 100644 --- a/src/share/classes/java/util/Deque.java +++ b/src/share/classes/java/util/Deque.java @@ -30,7 +30,7 @@ * * Written by Doug Lea and Josh Bloch with assistance from members of * JCP JSR-166 Expert Group and released to the public domain, as explained - * at http://creativecommons.org/licenses/publicdomain + * at http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util; diff --git a/src/share/classes/java/util/EnumMap.java b/src/share/classes/java/util/EnumMap.java index f829b05d4aa341808eb5a824d1537766b4d9face..6d1202c70dfa205bad092fc114c1289c99803de3 100644 --- a/src/share/classes/java/util/EnumMap.java +++ b/src/share/classes/java/util/EnumMap.java @@ -106,7 +106,7 @@ public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V> /** * Distinguished non-null value for representing null values. */ - private static final Object NULL = new Object(); + private static final Object NULL = new Integer(0); private Object maskNull(Object value) { return (value == null ? NULL : value); @@ -116,7 +116,7 @@ public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V> return (V) (value == NULL ? null : value); } - private static Enum[] ZERO_LENGTH_ENUM_ARRAY = new Enum[0]; + private static final Enum[] ZERO_LENGTH_ENUM_ARRAY = new Enum[0]; /** * Creates an empty enum map with the specified key type. @@ -464,6 +464,7 @@ public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V> public Iterator<Map.Entry<K,V>> iterator() { return new EntryIterator(); } + public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; @@ -552,70 +553,82 @@ public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V> } } - /** - * Since we don't use Entry objects, we use the Iterator itself as entry. - */ - private class EntryIterator extends EnumMapIterator<Map.Entry<K,V>> - implements Map.Entry<K,V> - { + private class EntryIterator extends EnumMapIterator<Map.Entry<K,V>> { + private Entry lastReturnedEntry = null; + public Map.Entry<K,V> next() { if (!hasNext()) throw new NoSuchElementException(); - lastReturnedIndex = index++; - return this; + lastReturnedEntry = new Entry(index++); + return lastReturnedEntry; } - public K getKey() { - checkLastReturnedIndexForEntryUse(); - return keyUniverse[lastReturnedIndex]; + public void remove() { + lastReturnedIndex = + ((null == lastReturnedEntry) ? -1 : lastReturnedEntry.index); + super.remove(); + lastReturnedEntry.index = lastReturnedIndex; + lastReturnedEntry = null; } - public V getValue() { - checkLastReturnedIndexForEntryUse(); - return unmaskNull(vals[lastReturnedIndex]); - } + private class Entry implements Map.Entry<K,V> { + private int index; - public V setValue(V value) { - checkLastReturnedIndexForEntryUse(); - V oldValue = unmaskNull(vals[lastReturnedIndex]); - vals[lastReturnedIndex] = maskNull(value); - return oldValue; - } + private Entry(int index) { + this.index = index; + } - public boolean equals(Object o) { - if (lastReturnedIndex < 0) - return o == this; + public K getKey() { + checkIndexForEntryUse(); + return keyUniverse[index]; + } - if (!(o instanceof Map.Entry)) - return false; - Map.Entry e = (Map.Entry)o; - V ourValue = unmaskNull(vals[lastReturnedIndex]); - Object hisValue = e.getValue(); - return e.getKey() == keyUniverse[lastReturnedIndex] && - (ourValue == hisValue || - (ourValue != null && ourValue.equals(hisValue))); - } + public V getValue() { + checkIndexForEntryUse(); + return unmaskNull(vals[index]); + } - public int hashCode() { - if (lastReturnedIndex < 0) - return super.hashCode(); + public V setValue(V value) { + checkIndexForEntryUse(); + V oldValue = unmaskNull(vals[index]); + vals[index] = maskNull(value); + return oldValue; + } - Object value = vals[lastReturnedIndex]; - return keyUniverse[lastReturnedIndex].hashCode() - ^ (value == NULL ? 0 : value.hashCode()); - } + public boolean equals(Object o) { + if (index < 0) + return o == this; - public String toString() { - if (lastReturnedIndex < 0) - return super.toString(); + if (!(o instanceof Map.Entry)) + return false; - return keyUniverse[lastReturnedIndex] + "=" - + unmaskNull(vals[lastReturnedIndex]); - } + Map.Entry e = (Map.Entry)o; + V ourValue = unmaskNull(vals[index]); + Object hisValue = e.getValue(); + return (e.getKey() == keyUniverse[index] && + (ourValue == hisValue || + (ourValue != null && ourValue.equals(hisValue)))); + } - private void checkLastReturnedIndexForEntryUse() { - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); + public int hashCode() { + if (index < 0) + return super.hashCode(); + + return entryHashCode(index); + } + + public String toString() { + if (index < 0) + return super.toString(); + + return keyUniverse[index] + "=" + + unmaskNull(vals[index]); + } + + private void checkIndexForEntryUse() { + if (index < 0) + throw new IllegalStateException("Entry was removed"); + } } } @@ -631,10 +644,35 @@ public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V> * @return <tt>true</tt> if the specified object is equal to this map */ public boolean equals(Object o) { - if (!(o instanceof EnumMap)) - return super.equals(o); + if (this == o) + return true; + if (o instanceof EnumMap) + return equals((EnumMap)o); + if (!(o instanceof Map)) + return false; + + Map<K,V> m = (Map<K,V>)o; + if (size != m.size()) + return false; + + for (int i = 0; i < keyUniverse.length; i++) { + if (null != vals[i]) { + K key = keyUniverse[i]; + V value = unmaskNull(vals[i]); + if (null == value) { + if (!((null == m.get(key)) && m.containsKey(key))) + return false; + } else { + if (!value.equals(m.get(key))) + return false; + } + } + } + + return true; + } - EnumMap em = (EnumMap)o; + private boolean equals(EnumMap em) { if (em.keyType != keyType) return size == 0 && em.size == 0; @@ -649,6 +687,26 @@ public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V> return true; } + /** + * Returns the hash code value for this map. The hash code of a map is + * defined to be the sum of the hash codes of each entry in the map. + */ + public int hashCode() { + int h = 0; + + for (int i = 0; i < keyUniverse.length; i++) { + if (null != vals[i]) { + h += entryHashCode(i); + } + } + + return h; + } + + private int entryHashCode(int index) { + return (keyUniverse[index].hashCode() ^ vals[index].hashCode()); + } + /** * Returns a shallow copy of this enum map. (The values themselves * are not cloned. @@ -705,9 +763,13 @@ public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V> s.writeInt(size); // Write out keys and values (alternating) - for (Map.Entry<K,V> e : entrySet()) { - s.writeObject(e.getKey()); - s.writeObject(e.getValue()); + int entriesToBeWritten = size; + for (int i = 0; entriesToBeWritten > 0; i++) { + if (null != vals[i]) { + s.writeObject(keyUniverse[i]); + s.writeObject(unmaskNull(vals[i])); + entriesToBeWritten--; + } } } diff --git a/src/share/classes/java/util/Formatter.java b/src/share/classes/java/util/Formatter.java index 6dcf8788052bc7fe133a3327904ef0027bff7e16..5ca126ab31d61f153831aa796834281b5389a946 100644 --- a/src/share/classes/java/util/Formatter.java +++ b/src/share/classes/java/util/Formatter.java @@ -1818,9 +1818,9 @@ import sun.misc.FormattedFloatingDecimal; * </pre></blockquote> * * <p> The maximum number of arguments is limited by the maximum dimension of a - * Java array as defined by the <a - * href="http://java.sun.com/docs/books/vmspec/">Java Virtual Machine - * Specification</a>. If the argument index is does not correspond to an + * Java array as defined by + * <cite>The Java™ Virtual Machine Specification</cite>. + * If the argument index is does not correspond to an * available argument, then a {@link MissingFormatArgumentException} is thrown. * * <p> If there are more arguments than format specifiers, the extra arguments @@ -2403,8 +2403,7 @@ public final class Formatter implements Closeable, Flushable { * string. If there are more arguments than format specifiers, the * extra arguments are ignored. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a>. + * <cite>The Java™ Virtual Machine Specification</cite>. * * @throws IllegalFormatException * If a format string contains an illegal syntax, a format @@ -2443,8 +2442,7 @@ public final class Formatter implements Closeable, Flushable { * string. If there are more arguments than format specifiers, the * extra arguments are ignored. The maximum number of arguments is * limited by the maximum dimension of a Java array as defined by - * the <a href="http://java.sun.com/docs/books/vmspec/">Java - * Virtual Machine Specification</a> + * <cite>The Java™ Virtual Machine Specification</cite>. * * @throws IllegalFormatException * If a format string contains an illegal syntax, a format diff --git a/src/share/classes/java/util/IdentityHashMap.java b/src/share/classes/java/util/IdentityHashMap.java index 303aaff1ac15dc75e2d27ab7fd0ad09be2ca8bf5..95ff9f0a7c8b785e9f6b4b876f875ba04aaaa69b 100644 --- a/src/share/classes/java/util/IdentityHashMap.java +++ b/src/share/classes/java/util/IdentityHashMap.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -829,71 +829,82 @@ public class IdentityHashMap<K,V> } } - /** - * Since we don't use Entry objects, we use the Iterator - * itself as an entry. - */ private class EntryIterator extends IdentityHashMapIterator<Map.Entry<K,V>> - implements Map.Entry<K,V> { + private Entry lastReturnedEntry = null; + public Map.Entry<K,V> next() { - nextIndex(); - return this; + lastReturnedEntry = new Entry(nextIndex()); + return lastReturnedEntry; } - public K getKey() { - // Provide a better exception than out of bounds index - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); - - return (K) unmaskNull(traversalTable[lastReturnedIndex]); + public void remove() { + lastReturnedIndex = + ((null == lastReturnedEntry) ? -1 : lastReturnedEntry.index); + super.remove(); + lastReturnedEntry.index = lastReturnedIndex; + lastReturnedEntry = null; } - public V getValue() { - // Provide a better exception than out of bounds index - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); + private class Entry implements Map.Entry<K,V> { + private int index; - return (V) traversalTable[lastReturnedIndex+1]; - } + private Entry(int index) { + this.index = index; + } - public V setValue(V value) { - // It would be mean-spirited to proceed here if remove() called - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); - V oldValue = (V) traversalTable[lastReturnedIndex+1]; - traversalTable[lastReturnedIndex+1] = value; - // if shadowing, force into main table - if (traversalTable != IdentityHashMap.this.table) - put((K) traversalTable[lastReturnedIndex], value); - return oldValue; - } + public K getKey() { + checkIndexForEntryUse(); + return (K) unmaskNull(traversalTable[index]); + } - public boolean equals(Object o) { - if (lastReturnedIndex < 0) - return super.equals(o); + public V getValue() { + checkIndexForEntryUse(); + return (V) traversalTable[index+1]; + } - if (!(o instanceof Map.Entry)) - return false; - Map.Entry e = (Map.Entry)o; - return e.getKey() == getKey() && - e.getValue() == getValue(); - } + public V setValue(V value) { + checkIndexForEntryUse(); + V oldValue = (V) traversalTable[index+1]; + traversalTable[index+1] = value; + // if shadowing, force into main table + if (traversalTable != IdentityHashMap.this.table) + put((K) traversalTable[index], value); + return oldValue; + } - public int hashCode() { - if (lastReturnedIndex < 0) - return super.hashCode(); + public boolean equals(Object o) { + if (index < 0) + return super.equals(o); - return System.identityHashCode(getKey()) ^ - System.identityHashCode(getValue()); - } + if (!(o instanceof Map.Entry)) + return false; + Map.Entry e = (Map.Entry)o; + return (e.getKey() == unmaskNull(traversalTable[index]) && + e.getValue() == traversalTable[index+1]); + } - public String toString() { - if (lastReturnedIndex < 0) - return super.toString(); + public int hashCode() { + if (lastReturnedIndex < 0) + return super.hashCode(); - return getKey() + "=" + getValue(); + return (System.identityHashCode(unmaskNull(traversalTable[index])) ^ + System.identityHashCode(traversalTable[index+1])); + } + + public String toString() { + if (index < 0) + return super.toString(); + + return (unmaskNull(traversalTable[index]) + "=" + + traversalTable[index+1]); + } + + private void checkIndexForEntryUse() { + if (index < 0) + throw new IllegalStateException("Entry was removed"); + } } } diff --git a/src/share/classes/java/util/Locale.java b/src/share/classes/java/util/Locale.java index 05f5fb6fe0b542e4cc9955b5e94cb42a0e8f4fee..363d28585d563f38f8a4adcb62ffbbb13ca59821 100644 --- a/src/share/classes/java/util/Locale.java +++ b/src/share/classes/java/util/Locale.java @@ -51,13 +51,13 @@ import java.util.spi.LocaleNameProvider; import sun.security.action.GetPropertyAction; import sun.util.LocaleServiceProviderPool; -import sun.util.locale.AsciiUtil; import sun.util.locale.BaseLocale; import sun.util.locale.InternalLocaleBuilder; import sun.util.locale.LanguageTag; import sun.util.locale.LocaleExtensions; import sun.util.locale.LocaleObjectCache; import sun.util.locale.LocaleSyntaxException; +import sun.util.locale.LocaleUtils; import sun.util.locale.ParseStatus; import sun.util.locale.UnicodeLocaleExtension; import sun.util.resources.LocaleData; @@ -412,59 +412,59 @@ public final class Locale implements Cloneable, Serializable { /** Useful constant for language. */ - static public final Locale ENGLISH = getInstance("en", "", ""); + static public final Locale ENGLISH = createConstant("en", ""); /** Useful constant for language. */ - static public final Locale FRENCH = getInstance("fr", "", ""); + static public final Locale FRENCH = createConstant("fr", ""); /** Useful constant for language. */ - static public final Locale GERMAN = getInstance("de", "", ""); + static public final Locale GERMAN = createConstant("de", ""); /** Useful constant for language. */ - static public final Locale ITALIAN = getInstance("it", "", ""); + static public final Locale ITALIAN = createConstant("it", ""); /** Useful constant for language. */ - static public final Locale JAPANESE = getInstance("ja", "", ""); + static public final Locale JAPANESE = createConstant("ja", ""); /** Useful constant for language. */ - static public final Locale KOREAN = getInstance("ko", "", ""); + static public final Locale KOREAN = createConstant("ko", ""); /** Useful constant for language. */ - static public final Locale CHINESE = getInstance("zh", "", ""); + static public final Locale CHINESE = createConstant("zh", ""); /** Useful constant for language. */ - static public final Locale SIMPLIFIED_CHINESE = getInstance("zh", "CN", ""); + static public final Locale SIMPLIFIED_CHINESE = createConstant("zh", "CN"); /** Useful constant for language. */ - static public final Locale TRADITIONAL_CHINESE = getInstance("zh", "TW", ""); + static public final Locale TRADITIONAL_CHINESE = createConstant("zh", "TW"); /** Useful constant for country. */ - static public final Locale FRANCE = getInstance("fr", "FR", ""); + static public final Locale FRANCE = createConstant("fr", "FR"); /** Useful constant for country. */ - static public final Locale GERMANY = getInstance("de", "DE", ""); + static public final Locale GERMANY = createConstant("de", "DE"); /** Useful constant for country. */ - static public final Locale ITALY = getInstance("it", "IT", ""); + static public final Locale ITALY = createConstant("it", "IT"); /** Useful constant for country. */ - static public final Locale JAPAN = getInstance("ja", "JP", ""); + static public final Locale JAPAN = createConstant("ja", "JP"); /** Useful constant for country. */ - static public final Locale KOREA = getInstance("ko", "KR", ""); + static public final Locale KOREA = createConstant("ko", "KR"); /** Useful constant for country. */ @@ -480,19 +480,19 @@ public final class Locale implements Cloneable, Serializable { /** Useful constant for country. */ - static public final Locale UK = getInstance("en", "GB", ""); + static public final Locale UK = createConstant("en", "GB"); /** Useful constant for country. */ - static public final Locale US = getInstance("en", "US", ""); + static public final Locale US = createConstant("en", "US"); /** Useful constant for country. */ - static public final Locale CANADA = getInstance("en", "CA", ""); + static public final Locale CANADA = createConstant("en", "CA"); /** Useful constant for country. */ - static public final Locale CANADA_FRENCH = getInstance("fr", "CA", ""); + static public final Locale CANADA_FRENCH = createConstant("fr", "CA"); /** * Useful constant for the root locale. The root locale is the locale whose @@ -502,7 +502,7 @@ public final class Locale implements Cloneable, Serializable { * * @since 1.6 */ - static public final Locale ROOT = getInstance("", "", ""); + static public final Locale ROOT = createConstant("", ""); /** * The key for the private use extension ('x'). @@ -532,14 +532,14 @@ public final class Locale implements Cloneable, Serializable { private static final int DISPLAY_LANGUAGE = 0; private static final int DISPLAY_COUNTRY = 1; private static final int DISPLAY_VARIANT = 2; - private static final int DISPLAY_SCRIPT = 3; + private static final int DISPLAY_SCRIPT = 3; /** * Private constructor used by getInstance method */ private Locale(BaseLocale baseLocale, LocaleExtensions extensions) { - _baseLocale = baseLocale; - _extensions = extensions; + this.baseLocale = baseLocale; + this.localeExtensions = extensions; } /** @@ -572,8 +572,8 @@ public final class Locale implements Cloneable, Serializable { if (language== null || country == null || variant == null) { throw new NullPointerException(); } - _baseLocale = BaseLocale.getInstance(convertOldISOCodes(language), "", country, variant); - _extensions = getCompatibilityExtensions(language, "", country, variant); + baseLocale = BaseLocale.getInstance(convertOldISOCodes(language), "", country, variant); + localeExtensions = getCompatibilityExtensions(language, "", country, variant); } /** @@ -626,6 +626,15 @@ public final class Locale implements Cloneable, Serializable { this(language, "", ""); } + /** + * This method must be called only for creating the Locale.* + * constants due to making shortcuts. + */ + private static Locale createConstant(String lang, String country) { + BaseLocale base = BaseLocale.createInstance(lang, country); + return getInstance(base, null); + } + /** * Returns a <code>Locale</code> constructed from the given * <code>language</code>, <code>country</code> and @@ -641,7 +650,7 @@ public final class Locale implements Cloneable, Serializable { * @exception NullPointerException if any argument is null. */ static Locale getInstance(String language, String country, String variant) { - return getInstance(language, "", country, variant, LocaleExtensions.EMPTY_EXTENSIONS); + return getInstance(language, "", country, variant, null); } static Locale getInstance(String language, String script, String country, @@ -651,10 +660,6 @@ public final class Locale implements Cloneable, Serializable { } if (extensions == null) { - extensions = LocaleExtensions.EMPTY_EXTENSIONS; - } - - if (extensions.equals(LocaleExtensions.EMPTY_EXTENSIONS)) { extensions = getCompatibilityExtensions(language, script, country, variant); } @@ -668,22 +673,33 @@ public final class Locale implements Cloneable, Serializable { } private static class Cache extends LocaleObjectCache<LocaleKey, Locale> { - public Cache() { + private Cache() { } + + @Override protected Locale createObject(LocaleKey key) { - return new Locale(key._base, key._exts); + return new Locale(key.base, key.exts); } } - private static class LocaleKey { - private BaseLocale _base; - private LocaleExtensions _exts; + private static final class LocaleKey { + private final BaseLocale base; + private final LocaleExtensions exts; + private final int hash; private LocaleKey(BaseLocale baseLocale, LocaleExtensions extensions) { - _base = baseLocale; - _exts = extensions; + base = baseLocale; + exts = extensions; + + // Calculate the hash value here because it's always used. + int h = base.hashCode(); + if (exts != null) { + h ^= exts.hashCode(); + } + hash = h; } + @Override public boolean equals(Object obj) { if (this == obj) { return true; @@ -692,11 +708,18 @@ public final class Locale implements Cloneable, Serializable { return false; } LocaleKey other = (LocaleKey)obj; - return _base.equals(other._base) && _exts.equals(other._exts); + if (hash != other.hash || !base.equals(other.base)) { + return false; + } + if (exts == null) { + return other.exts == null; + } + return exts.equals(other.exts); } + @Override public int hashCode() { - return _base.hashCode() ^ _exts.hashCode(); + return hash; } } @@ -981,7 +1004,7 @@ public final class Locale implements Cloneable, Serializable { * @see #getDisplayLanguage */ public String getLanguage() { - return _baseLocale.getLanguage(); + return baseLocale.getLanguage(); } /** @@ -995,7 +1018,7 @@ public final class Locale implements Cloneable, Serializable { * @since 1.7 */ public String getScript() { - return _baseLocale.getScript(); + return baseLocale.getScript(); } /** @@ -1007,7 +1030,7 @@ public final class Locale implements Cloneable, Serializable { * @see #getDisplayCountry */ public String getCountry() { - return _baseLocale.getRegion(); + return baseLocale.getRegion(); } /** @@ -1017,7 +1040,7 @@ public final class Locale implements Cloneable, Serializable { * @see #getDisplayVariant */ public String getVariant() { - return _baseLocale.getVariant(); + return baseLocale.getVariant(); } /** @@ -1039,7 +1062,7 @@ public final class Locale implements Cloneable, Serializable { if (!LocaleExtensions.isValidKey(key)) { throw new IllegalArgumentException("Ill-formed extension key: " + key); } - return _extensions.getExtensionValue(key); + return (localeExtensions == null) ? null : localeExtensions.getExtensionValue(key); } /** @@ -1052,7 +1075,10 @@ public final class Locale implements Cloneable, Serializable { * @since 1.7 */ public Set<Character> getExtensionKeys() { - return _extensions.getKeys(); + if (localeExtensions == null) { + return Collections.emptySet(); + } + return localeExtensions.getKeys(); } /** @@ -1064,7 +1090,10 @@ public final class Locale implements Cloneable, Serializable { * @since 1.7 */ public Set<String> getUnicodeLocaleAttributes() { - return _extensions.getUnicodeLocaleAttributes(); + if (localeExtensions == null) { + return Collections.emptySet(); + } + return localeExtensions.getUnicodeLocaleAttributes(); } /** @@ -1085,7 +1114,7 @@ public final class Locale implements Cloneable, Serializable { if (!UnicodeLocaleExtension.isKey(key)) { throw new IllegalArgumentException("Ill-formed Unicode locale key: " + key); } - return _extensions.getUnicodeLocaleType(key); + return (localeExtensions == null) ? null : localeExtensions.getUnicodeLocaleType(key); } /** @@ -1097,7 +1126,10 @@ public final class Locale implements Cloneable, Serializable { * @since 1.7 */ public Set<String> getUnicodeLocaleKeys() { - return _extensions.getUnicodeLocaleKeys(); + if (localeExtensions == null) { + return Collections.emptySet(); + } + return localeExtensions.getUnicodeLocaleKeys(); } /** @@ -1106,16 +1138,17 @@ public final class Locale implements Cloneable, Serializable { * @return base locale of this Locale */ BaseLocale getBaseLocale() { - return _baseLocale; + return baseLocale; } /** - * Package local method returning the Locale's LocaleExtensions, - * used by ResourceBundle - * @return locale exnteions of this Locale + * Package private method returning the Locale's LocaleExtensions, + * used by ResourceBundle. + * @return locale exnteions of this Locale, + * or {@code null} if no extensions are defined */ LocaleExtensions getLocaleExtensions() { - return _extensions; + return localeExtensions; } /** @@ -1160,26 +1193,27 @@ public final class Locale implements Cloneable, Serializable { * @see #getDisplayName * @see #toLanguageTag */ + @Override public final String toString() { - boolean l = (_baseLocale.getLanguage().length() != 0); - boolean s = (_baseLocale.getScript().length() != 0); - boolean r = (_baseLocale.getRegion().length() != 0); - boolean v = (_baseLocale.getVariant().length() != 0); - boolean e = (_extensions.getID().length() != 0); + boolean l = (baseLocale.getLanguage().length() != 0); + boolean s = (baseLocale.getScript().length() != 0); + boolean r = (baseLocale.getRegion().length() != 0); + boolean v = (baseLocale.getVariant().length() != 0); + boolean e = (localeExtensions != null && localeExtensions.getID().length() != 0); - StringBuilder result = new StringBuilder(_baseLocale.getLanguage()); + StringBuilder result = new StringBuilder(baseLocale.getLanguage()); if (r || (l && (v || s || e))) { result.append('_') - .append(_baseLocale.getRegion()); // This may just append '_' + .append(baseLocale.getRegion()); // This may just append '_' } if (v && (l || r)) { result.append('_') - .append(_baseLocale.getVariant()); + .append(baseLocale.getVariant()); } if (s && (l || r)) { result.append("_#") - .append(_baseLocale.getScript()); + .append(baseLocale.getScript()); } if (e && (l || r)) { @@ -1187,7 +1221,7 @@ public final class Locale implements Cloneable, Serializable { if (!s) { result.append('#'); } - result.append(_extensions.getID()); + result.append(localeExtensions.getID()); } return result.toString(); @@ -1261,7 +1295,7 @@ public final class Locale implements Cloneable, Serializable { * @since 1.7 */ public String toLanguageTag() { - LanguageTag tag = LanguageTag.parseLocale(_baseLocale, _extensions); + LanguageTag tag = LanguageTag.parseLocale(baseLocale, localeExtensions); StringBuilder buf = new StringBuilder(); String subtag = tag.getLanguage(); @@ -1433,8 +1467,9 @@ public final class Locale implements Cloneable, Serializable { bldr.setLanguageTag(tag); BaseLocale base = bldr.getBaseLocale(); LocaleExtensions exts = bldr.getLocaleExtensions(); - if (exts.isEmpty() && base.getVariant().length() > 0) { - exts = getCompatibilityExtensions(base.getLanguage(), base.getScript(), base.getRegion(), base.getVariant()); + if (exts == null && base.getVariant().length() > 0) { + exts = getCompatibilityExtensions(base.getLanguage(), base.getScript(), + base.getRegion(), base.getVariant()); } return getInstance(base, exts); } @@ -1454,7 +1489,7 @@ public final class Locale implements Cloneable, Serializable { * three-letter language abbreviation is not available for this locale. */ public String getISO3Language() throws MissingResourceException { - String lang = _baseLocale.getLanguage(); + String lang = baseLocale.getLanguage(); if (lang.length() == 3) { return lang; } @@ -1481,10 +1516,10 @@ public final class Locale implements Cloneable, Serializable { * three-letter country abbreviation is not available for this locale. */ public String getISO3Country() throws MissingResourceException { - String country3 = getISO3Code(_baseLocale.getRegion(), LocaleISOData.isoCountryTable); + String country3 = getISO3Code(baseLocale.getRegion(), LocaleISOData.isoCountryTable); if (country3 == null) { throw new MissingResourceException("Couldn't find 3-letter country code for " - + _baseLocale.getRegion(), "FormatData_" + toString(), "ShortCountry"); + + baseLocale.getRegion(), "FormatData_" + toString(), "ShortCountry"); } return country3; } @@ -1542,7 +1577,7 @@ public final class Locale implements Cloneable, Serializable { * @exception NullPointerException if <code>inLocale</code> is <code>null</code> */ public String getDisplayLanguage(Locale inLocale) { - return getDisplayString(_baseLocale.getLanguage(), inLocale, DISPLAY_LANGUAGE); + return getDisplayString(baseLocale.getLanguage(), inLocale, DISPLAY_LANGUAGE); } /** @@ -1568,7 +1603,7 @@ public final class Locale implements Cloneable, Serializable { * @since 1.7 */ public String getDisplayScript(Locale inLocale) { - return getDisplayString(_baseLocale.getScript(), inLocale, DISPLAY_SCRIPT); + return getDisplayString(baseLocale.getScript(), inLocale, DISPLAY_SCRIPT); } /** @@ -1603,7 +1638,7 @@ public final class Locale implements Cloneable, Serializable { * @exception NullPointerException if <code>inLocale</code> is <code>null</code> */ public String getDisplayCountry(Locale inLocale) { - return getDisplayString(_baseLocale.getRegion(), inLocale, DISPLAY_COUNTRY); + return getDisplayString(baseLocale.getRegion(), inLocale, DISPLAY_COUNTRY); } private String getDisplayString(String code, Locale inLocale, int type) { @@ -1662,7 +1697,7 @@ public final class Locale implements Cloneable, Serializable { * @exception NullPointerException if <code>inLocale</code> is <code>null</code> */ public String getDisplayVariant(Locale inLocale) { - if (_baseLocale.getVariant().length() == 0) + if (baseLocale.getVariant().length() == 0) return ""; OpenListResourceBundle bundle = LocaleData.getLocaleNames(inLocale); @@ -1758,7 +1793,7 @@ public final class Locale implements Cloneable, Serializable { return formatList(variantNames, listPattern, listCompositionPattern); } } - ArrayList<String> names = new ArrayList<String>(4); + ArrayList<String> names = new ArrayList<>(4); if (languageName.length() != 0) { names.add(languageName); } @@ -1833,10 +1868,14 @@ public final class Locale implements Cloneable, Serializable { * Since Locales are often used in hashtables, caches the value * for speed. */ + @Override public int hashCode() { int hc = hashCodeValue; if (hc == 0) { - hc = _baseLocale.hashCode() ^ _extensions.hashCode(); + hc = baseLocale.hashCode(); + if (localeExtensions != null) { + hc ^= localeExtensions.hashCode(); + } hashCodeValue = hc; } return hc; @@ -1851,21 +1890,26 @@ public final class Locale implements Cloneable, Serializable { * * @return true if this Locale is equal to the specified object. */ - + @Override public boolean equals(Object obj) { if (this == obj) // quick check return true; if (!(obj instanceof Locale)) return false; - BaseLocale otherBase = ((Locale)obj)._baseLocale; - LocaleExtensions otherExt = ((Locale)obj)._extensions; - return _baseLocale.equals(otherBase) && _extensions.equals(otherExt); + BaseLocale otherBase = ((Locale)obj).baseLocale; + if (!baseLocale.equals(otherBase)) { + return false; + } + if (localeExtensions == null) { + return ((Locale)obj).localeExtensions == null; + } + return localeExtensions.equals(((Locale)obj).localeExtensions); } // ================= privates ===================================== - private transient BaseLocale _baseLocale; - private transient LocaleExtensions _extensions; + private transient BaseLocale baseLocale; + private transient LocaleExtensions localeExtensions; /** * Calculated hashcode @@ -1883,7 +1927,7 @@ public final class Locale implements Cloneable, Serializable { */ private String[] getDisplayVariantArray(OpenListResourceBundle bundle, Locale inLocale) { // Split the variant name into tokens separated by '_'. - StringTokenizer tokenizer = new StringTokenizer(_baseLocale.getVariant(), "_"); + StringTokenizer tokenizer = new StringTokenizer(baseLocale.getVariant(), "_"); String[] names = new String[tokenizer.countTokens()]; // For each variant token, lookup the display name. If @@ -1996,11 +2040,11 @@ public final class Locale implements Cloneable, Serializable { */ private void writeObject(ObjectOutputStream out) throws IOException { ObjectOutputStream.PutField fields = out.putFields(); - fields.put("language", _baseLocale.getLanguage()); - fields.put("script", _baseLocale.getScript()); - fields.put("country", _baseLocale.getRegion()); - fields.put("variant", _baseLocale.getVariant()); - fields.put("extensions", _extensions.getID()); + fields.put("language", baseLocale.getLanguage()); + fields.put("script", baseLocale.getScript()); + fields.put("country", baseLocale.getRegion()); + fields.put("variant", baseLocale.getVariant()); + fields.put("extensions", localeExtensions == null ? "" : localeExtensions.getID()); fields.put("hashcode", -1); // place holder just for backward support out.writeFields(); } @@ -2020,13 +2064,17 @@ public final class Locale implements Cloneable, Serializable { String country = (String)fields.get("country", ""); String variant = (String)fields.get("variant", ""); String extStr = (String)fields.get("extensions", ""); - _baseLocale = BaseLocale.getInstance(convertOldISOCodes(language), script, country, variant); - try { - InternalLocaleBuilder bldr = new InternalLocaleBuilder(); - bldr.setExtensions(extStr); - _extensions = bldr.getLocaleExtensions(); - } catch (LocaleSyntaxException e) { - throw new IllformedLocaleException(e.getMessage()); + baseLocale = BaseLocale.getInstance(convertOldISOCodes(language), script, country, variant); + if (extStr.length() > 0) { + try { + InternalLocaleBuilder bldr = new InternalLocaleBuilder(); + bldr.setExtensions(extStr); + localeExtensions = bldr.getLocaleExtensions(); + } catch (LocaleSyntaxException e) { + throw new IllformedLocaleException(e.getMessage()); + } + } else { + localeExtensions = null; } } @@ -2045,8 +2093,8 @@ public final class Locale implements Cloneable, Serializable { * @throws java.io.ObjectStreamException */ private Object readResolve() throws java.io.ObjectStreamException { - return getInstance(_baseLocale.getLanguage(), _baseLocale.getScript(), - _baseLocale.getRegion(), _baseLocale.getVariant(), _extensions); + return getInstance(baseLocale.getLanguage(), baseLocale.getScript(), + baseLocale.getRegion(), baseLocale.getVariant(), localeExtensions); } private static volatile String[] isoLanguages = null; @@ -2056,7 +2104,7 @@ public final class Locale implements Cloneable, Serializable { private static String convertOldISOCodes(String language) { // we accept both the old and the new ISO codes for the languages whose ISO // codes have changed, but we always store the OLD code, for backward compatibility - language = AsciiUtil.toLowerString(language).intern(); + language = LocaleUtils.toLowerString(language).intern(); if (language == "he") { return "iw"; } else if (language == "yi") { @@ -2068,19 +2116,22 @@ public final class Locale implements Cloneable, Serializable { } } - private static LocaleExtensions getCompatibilityExtensions(String language, String script, String country, String variant) { - LocaleExtensions extensions = LocaleExtensions.EMPTY_EXTENSIONS; + private static LocaleExtensions getCompatibilityExtensions(String language, + String script, + String country, + String variant) { + LocaleExtensions extensions = null; // Special cases for backward compatibility support - if (AsciiUtil.caseIgnoreMatch(language, "ja") + if (LocaleUtils.caseIgnoreMatch(language, "ja") && script.length() == 0 - && AsciiUtil.caseIgnoreMatch(country, "JP") - && AsciiUtil.caseIgnoreMatch(variant, "JP")) { + && LocaleUtils.caseIgnoreMatch(country, "jp") + && "JP".equals(variant)) { // ja_JP_JP -> u-ca-japanese (calendar = japanese) extensions = LocaleExtensions.CALENDAR_JAPANESE; - } else if (AsciiUtil.caseIgnoreMatch(language, "th") + } else if (LocaleUtils.caseIgnoreMatch(language, "th") && script.length() == 0 - && AsciiUtil.caseIgnoreMatch(country, "TH") - && AsciiUtil.caseIgnoreMatch(variant, "TH")) { + && LocaleUtils.caseIgnoreMatch(country, "th") + && "TH".equals(variant)) { // th_TH_TH -> u-nu-thai (numbersystem = thai) extensions = LocaleExtensions.NUMBER_THAI; } @@ -2196,7 +2247,7 @@ public final class Locale implements Cloneable, Serializable { * @since 1.7 */ public static final class Builder { - private InternalLocaleBuilder _locbld; + private final InternalLocaleBuilder localeBuilder; /** * Constructs an empty Builder. The default value of all @@ -2204,7 +2255,7 @@ public final class Locale implements Cloneable, Serializable { * empty string. */ public Builder() { - _locbld = new InternalLocaleBuilder(); + localeBuilder = new InternalLocaleBuilder(); } /** @@ -2229,7 +2280,7 @@ public final class Locale implements Cloneable, Serializable { */ public Builder setLocale(Locale locale) { try { - _locbld.setLocale(locale._baseLocale, locale._extensions); + localeBuilder.setLocale(locale.baseLocale, locale.localeExtensions); } catch (LocaleSyntaxException e) { throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex()); } @@ -2259,8 +2310,7 @@ public final class Locale implements Cloneable, Serializable { if (sts.isError()) { throw new IllformedLocaleException(sts.getErrorMessage(), sts.getErrorIndex()); } - _locbld.setLanguageTag(tag); - + localeBuilder.setLanguageTag(tag); return this; } @@ -2279,7 +2329,7 @@ public final class Locale implements Cloneable, Serializable { */ public Builder setLanguage(String language) { try { - _locbld.setLanguage(language); + localeBuilder.setLanguage(language); } catch (LocaleSyntaxException e) { throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex()); } @@ -2300,7 +2350,7 @@ public final class Locale implements Cloneable, Serializable { */ public Builder setScript(String script) { try { - _locbld.setScript(script); + localeBuilder.setScript(script); } catch (LocaleSyntaxException e) { throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex()); } @@ -2325,7 +2375,7 @@ public final class Locale implements Cloneable, Serializable { */ public Builder setRegion(String region) { try { - _locbld.setRegion(region); + localeBuilder.setRegion(region); } catch (LocaleSyntaxException e) { throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex()); } @@ -2352,7 +2402,7 @@ public final class Locale implements Cloneable, Serializable { */ public Builder setVariant(String variant) { try { - _locbld.setVariant(variant); + localeBuilder.setVariant(variant); } catch (LocaleSyntaxException e) { throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex()); } @@ -2384,7 +2434,7 @@ public final class Locale implements Cloneable, Serializable { */ public Builder setExtension(char key, String value) { try { - _locbld.setExtension(key, value); + localeBuilder.setExtension(key, value); } catch (LocaleSyntaxException e) { throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex()); } @@ -2414,7 +2464,7 @@ public final class Locale implements Cloneable, Serializable { */ public Builder setUnicodeLocaleKeyword(String key, String type) { try { - _locbld.setUnicodeLocaleKeyword(key, type); + localeBuilder.setUnicodeLocaleKeyword(key, type); } catch (LocaleSyntaxException e) { throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex()); } @@ -2435,7 +2485,7 @@ public final class Locale implements Cloneable, Serializable { */ public Builder addUnicodeLocaleAttribute(String attribute) { try { - _locbld.addUnicodeLocaleAttribute(attribute); + localeBuilder.addUnicodeLocaleAttribute(attribute); } catch (LocaleSyntaxException e) { throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex()); } @@ -2458,7 +2508,7 @@ public final class Locale implements Cloneable, Serializable { */ public Builder removeUnicodeLocaleAttribute(String attribute) { try { - _locbld.removeUnicodeLocaleAttribute(attribute); + localeBuilder.removeUnicodeLocaleAttribute(attribute); } catch (LocaleSyntaxException e) { throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex()); } @@ -2471,7 +2521,7 @@ public final class Locale implements Cloneable, Serializable { * @return This builder. */ public Builder clear() { - _locbld.clear(); + localeBuilder.clear(); return this; } @@ -2483,7 +2533,7 @@ public final class Locale implements Cloneable, Serializable { * @see #setExtension(char, String) */ public Builder clearExtensions() { - _locbld.clearExtensions(); + localeBuilder.clearExtensions(); return this; } @@ -2498,9 +2548,9 @@ public final class Locale implements Cloneable, Serializable { * @return A Locale. */ public Locale build() { - BaseLocale baseloc = _locbld.getBaseLocale(); - LocaleExtensions extensions = _locbld.getLocaleExtensions(); - if (extensions.isEmpty() && baseloc.getVariant().length() > 0) { + BaseLocale baseloc = localeBuilder.getBaseLocale(); + LocaleExtensions extensions = localeBuilder.getLocaleExtensions(); + if (extensions == null && baseloc.getVariant().length() > 0) { extensions = getCompatibilityExtensions(baseloc.getLanguage(), baseloc.getScript(), baseloc.getRegion(), baseloc.getVariant()); } diff --git a/src/share/classes/java/util/NavigableMap.java b/src/share/classes/java/util/NavigableMap.java index b9275bd9d1f6ecf41a702e88ae370d55fb1ca613..2d18d4a72156fe7ba6032967a819e1e0ac6b4040 100644 --- a/src/share/classes/java/util/NavigableMap.java +++ b/src/share/classes/java/util/NavigableMap.java @@ -30,7 +30,7 @@ * * Written by Doug Lea and Josh Bloch with assistance from members of JCP * JSR-166 Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util; diff --git a/src/share/classes/java/util/NavigableSet.java b/src/share/classes/java/util/NavigableSet.java index 03e9614f0a30a08a379d58ef277905dd410cd2e0..26fcd3a7c35fb79166ba186b971553b1a079ea61 100644 --- a/src/share/classes/java/util/NavigableSet.java +++ b/src/share/classes/java/util/NavigableSet.java @@ -30,7 +30,7 @@ * * Written by Doug Lea and Josh Bloch with assistance from members of JCP * JSR-166 Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util; diff --git a/src/share/classes/java/util/Properties.java b/src/share/classes/java/util/Properties.java index 47c9526f61a1beb2b66853fa866a32217f35e863..d27e60871f3784e79f018eb26f618ae230373951 100644 --- a/src/share/classes/java/util/Properties.java +++ b/src/share/classes/java/util/Properties.java @@ -68,8 +68,9 @@ import java.io.BufferedWriter; * methods work the same way as the load(Reader)/store(Writer, String) pair, except * the input/output stream is encoded in ISO 8859-1 character encoding. * Characters that cannot be directly represented in this encoding can be written using - * <a href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.3">Unicode escapes</a> - * ; only a single 'u' character is allowed in an escape + * Unicode escapes as defined in section 3.3 of + * <cite>The Java™ Language Specification</cite>; + * only a single 'u' character is allowed in an escape * sequence. The native2ascii tool can be used to convert property files to and * from other character encodings. * @@ -272,11 +273,8 @@ class Properties extends Hashtable<Object,Object> { * <a name="unicodeescapes"></a> * Characters in keys and elements can be represented in escape * sequences similar to those used for character and string literals - * (see <a - * href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.3">§3.3</a> - * and <a - * href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.6">§3.10.6</a> - * of the <i>Java Language Specification</i>). + * (see sections 3.3 and 3.10.6 of + * <cite>The Java™ Language Specification</cite>). * * The differences from the character escape sequences and Unicode * escapes used for characters and strings are: @@ -326,8 +324,9 @@ class Properties extends Hashtable<Object,Object> { * {@link #load(java.io.Reader) load(Reader)} and is assumed to use * the ISO 8859-1 character encoding; that is each byte is one Latin1 * character. Characters not in Latin1, and certain special characters, - * are represented in keys and elements using - * <a href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.3">Unicode escapes</a>. + * are represented in keys and elements using Unicode escapes as defined in + * section 3.3 of + * <cite>The Java™ Language Specification</cite>. * <p> * The specified stream remains open after this method returns. * diff --git a/src/share/classes/java/util/PropertyResourceBundle.java b/src/share/classes/java/util/PropertyResourceBundle.java index 238546bacf207cf7497b1c04ca21e3d1ca744ce5..c7fe3b460a19be0b0c27841fe23c71282cf73d69 100644 --- a/src/share/classes/java/util/PropertyResourceBundle.java +++ b/src/share/classes/java/util/PropertyResourceBundle.java @@ -104,8 +104,9 @@ import sun.util.ResourceBundleEnumeration; * from an InputStream or a Reader, which represents a property file. * Constructing a PropertyResourceBundle instance from an InputStream requires * that the input stream be encoded in ISO-8859-1. In that case, characters - * that cannot be represented in ISO-8859-1 encoding must be represented by - * <a href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.3">Unicode Escapes</a>, + * that cannot be represented in ISO-8859-1 encoding must be represented by Unicode Escapes + * as defined in section 3.3 of + * <cite>The Java™ Language Specification</cite> * whereas the other constructor which takes a Reader does not have that limitation. * * @see ResourceBundle diff --git a/src/share/classes/java/util/Queue.java b/src/share/classes/java/util/Queue.java index 64d384f9bcbf668f474c52998ac924c08f016c53..124cc449426ec3ea291c9755c051649adcbf79fa 100644 --- a/src/share/classes/java/util/Queue.java +++ b/src/share/classes/java/util/Queue.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util; diff --git a/src/share/classes/java/util/ResourceBundle.java b/src/share/classes/java/util/ResourceBundle.java index 9fbdbe1626d2d7df3763ef266c1b748716c8ccfe..51b84877dc75d4b95b97199ea5769e3a3a354081 100644 --- a/src/share/classes/java/util/ResourceBundle.java +++ b/src/share/classes/java/util/ResourceBundle.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -57,7 +57,6 @@ import java.util.concurrent.ConcurrentMap; import java.util.jar.JarEntry; import sun.util.locale.BaseLocale; -import sun.util.locale.LocaleExtensions; import sun.util.locale.LocaleObjectCache; @@ -290,7 +289,7 @@ public abstract class ResourceBundle { * name for compatibility with some workarounds for bug 4212439. */ private static final ConcurrentMap<CacheKey, BundleReference> cacheList - = new ConcurrentHashMap<CacheKey, BundleReference>(INITIAL_CACHE_SIZE); + = new ConcurrentHashMap<>(INITIAL_CACHE_SIZE); /** * Queue for reference objects referring to class loaders or bundles. @@ -1755,7 +1754,7 @@ public abstract class ResourceBundle { * @since 1.6 */ public Set<String> keySet() { - Set<String> keys = new HashSet<String>(); + Set<String> keys = new HashSet<>(); for (ResourceBundle rb = this; rb != null; rb = rb.parent) { keys.addAll(rb.handleKeySet()); } @@ -1783,7 +1782,7 @@ public abstract class ResourceBundle { if (keySet == null) { synchronized (this) { if (keySet == null) { - Set<String> keys = new HashSet<String>(); + Set<String> keys = new HashSet<>(); Enumeration<String> enumKeys = getKeys(); while (enumKeys.hasMoreElements()) { String key = enumKeys.nextElement(); @@ -2301,7 +2300,7 @@ public abstract class ResourceBundle { if (baseName == null) { throw new NullPointerException(); } - return new ArrayList<Locale>(CANDIDATES_CACHE.get(locale.getBaseLocale())); + return new ArrayList<>(CANDIDATES_CACHE.get(locale.getBaseLocale())); } private static final CandidateListCache CANDIDATES_CACHE = new CandidateListCache(); @@ -2327,14 +2326,14 @@ public abstract class ResourceBundle { if (language.equals("nb") || isNorwegianBokmal) { List<Locale> tmpList = getDefaultList("nb", script, region, variant); // Insert a locale replacing "nb" with "no" for every list entry - List<Locale> bokmalList = new LinkedList<Locale>(); + List<Locale> bokmalList = new LinkedList<>(); for (Locale l : tmpList) { bokmalList.add(l); if (l.getLanguage().length() == 0) { break; } bokmalList.add(Locale.getInstance("no", l.getScript(), l.getCountry(), - l.getVariant(), LocaleExtensions.EMPTY_EXTENSIONS)); + l.getVariant(), null)); } return bokmalList; } else if (language.equals("nn") || isNorwegianNynorsk) { @@ -2374,7 +2373,7 @@ public abstract class ResourceBundle { List<String> variants = null; if (variant.length() > 0) { - variants = new LinkedList<String>(); + variants = new LinkedList<>(); int idx = variant.length(); while (idx != -1) { variants.add(variant.substring(0, idx)); @@ -2382,32 +2381,32 @@ public abstract class ResourceBundle { } } - LinkedList<Locale> list = new LinkedList<Locale>(); + List<Locale> list = new LinkedList<>(); if (variants != null) { for (String v : variants) { - list.add(Locale.getInstance(language, script, region, v, LocaleExtensions.EMPTY_EXTENSIONS)); + list.add(Locale.getInstance(language, script, region, v, null)); } } if (region.length() > 0) { - list.add(Locale.getInstance(language, script, region, "", LocaleExtensions.EMPTY_EXTENSIONS)); + list.add(Locale.getInstance(language, script, region, "", null)); } if (script.length() > 0) { - list.add(Locale.getInstance(language, script, "", "", LocaleExtensions.EMPTY_EXTENSIONS)); + list.add(Locale.getInstance(language, script, "", "", null)); // With script, after truncating variant, region and script, // start over without script. if (variants != null) { for (String v : variants) { - list.add(Locale.getInstance(language, "", region, v, LocaleExtensions.EMPTY_EXTENSIONS)); + list.add(Locale.getInstance(language, "", region, v, null)); } } if (region.length() > 0) { - list.add(Locale.getInstance(language, "", region, "", LocaleExtensions.EMPTY_EXTENSIONS)); + list.add(Locale.getInstance(language, "", region, "", null)); } } if (language.length() > 0) { - list.add(Locale.getInstance(language, "", "", "", LocaleExtensions.EMPTY_EXTENSIONS)); + list.add(Locale.getInstance(language, "", "", "", null)); } // Add root locale at the end list.add(Locale.ROOT); diff --git a/src/share/classes/java/util/concurrent/AbstractExecutorService.java b/src/share/classes/java/util/concurrent/AbstractExecutorService.java index 0322289e52e6f069e42c12bc57fe0331215c2173..bac93ab3b903b37d4347d55711591040cecdd89f 100644 --- a/src/share/classes/java/util/concurrent/AbstractExecutorService.java +++ b/src/share/classes/java/util/concurrent/AbstractExecutorService.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ArrayBlockingQueue.java b/src/share/classes/java/util/concurrent/ArrayBlockingQueue.java index 4f4b9d96af60a4b463f1b09fc0194af8b8dd4aac..32fd50470d6a40abfb168dad0a6ae7049121cbbf 100644 --- a/src/share/classes/java/util/concurrent/ArrayBlockingQueue.java +++ b/src/share/classes/java/util/concurrent/ArrayBlockingQueue.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/BlockingDeque.java b/src/share/classes/java/util/concurrent/BlockingDeque.java index bfc43144ba6823b5864b9eccbbf514b85e21209d..3134eae8ec5d5c64abc84aebd6968149d49e193e 100644 --- a/src/share/classes/java/util/concurrent/BlockingDeque.java +++ b/src/share/classes/java/util/concurrent/BlockingDeque.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/BlockingQueue.java b/src/share/classes/java/util/concurrent/BlockingQueue.java index 51e5ee3278a549783d9e3965b2d244679104aa53..9886e6da3c103ed20b321c7ce159a415cf8890ab 100644 --- a/src/share/classes/java/util/concurrent/BlockingQueue.java +++ b/src/share/classes/java/util/concurrent/BlockingQueue.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/BrokenBarrierException.java b/src/share/classes/java/util/concurrent/BrokenBarrierException.java index c01fd7249dc7fa9ca2397c534fbd2ab83b726d9c..9d2a9f4b4f681db540f531f0924027f6a9ebc321 100644 --- a/src/share/classes/java/util/concurrent/BrokenBarrierException.java +++ b/src/share/classes/java/util/concurrent/BrokenBarrierException.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/Callable.java b/src/share/classes/java/util/concurrent/Callable.java index 75569a4a9f55c21ba2882c0d6d225aa7b8756b51..7ef4948a1fd16107388e3234fb1357367cbd102f 100644 --- a/src/share/classes/java/util/concurrent/Callable.java +++ b/src/share/classes/java/util/concurrent/Callable.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/CancellationException.java b/src/share/classes/java/util/concurrent/CancellationException.java index e03cc789175842838ccee42c62458dad14f515cf..ae6b586ba008c69b4ddf40bd070f54663f9bc025 100644 --- a/src/share/classes/java/util/concurrent/CancellationException.java +++ b/src/share/classes/java/util/concurrent/CancellationException.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/CompletionService.java b/src/share/classes/java/util/concurrent/CompletionService.java index 4917f6559d4bc1ee70d76bc097da780aed30afe0..5a807c5effebae5b927b58d726a9f4200bbf7a0a 100644 --- a/src/share/classes/java/util/concurrent/CompletionService.java +++ b/src/share/classes/java/util/concurrent/CompletionService.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ConcurrentHashMap.java b/src/share/classes/java/util/concurrent/ConcurrentHashMap.java index 8074669654c5a0b9de2cbcce2524374a8bac6382..c66a82e63054255bd76324bb5ad6fd35d5373041 100644 --- a/src/share/classes/java/util/concurrent/ConcurrentHashMap.java +++ b/src/share/classes/java/util/concurrent/ConcurrentHashMap.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; @@ -105,7 +105,25 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> /* * The basic strategy is to subdivide the table among Segments, - * each of which itself is a concurrently readable hash table. + * each of which itself is a concurrently readable hash table. To + * reduce footprint, all but one segments are constructed only + * when first needed (see ensureSegment). To maintain visibility + * in the presence of lazy construction, accesses to segments as + * well as elements of segment's table must use volatile access, + * which is done via Unsafe within methods segmentAt etc + * below. These provide the functionality of AtomicReferenceArrays + * but reduce the levels of indirection. Additionally, + * volatile-writes of table elements and entry "next" fields + * within locked operations use the cheaper "lazySet" forms of + * writes (via putOrderedObject) because these writes are always + * followed by lock releases that maintain sequential consistency + * of table updates. + * + * Historical note: The previous version of this class relied + * heavily on "final" fields, which avoided some volatile reads at + * the expense of a large initial footprint. Some remnants of + * that design (including forced construction of segment 0) exist + * to ensure serialization compatibility. */ /* ---------------- Constants -------------- */ @@ -136,9 +154,16 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> */ static final int MAXIMUM_CAPACITY = 1 << 30; + /** + * The minimum capacity for per-segment tables. Must be a power + * of two, at least two to avoid immediate resizing on next use + * after lazy construction. + */ + static final int MIN_SEGMENT_TABLE_CAPACITY = 2; + /** * The maximum number of segments to allow; used to bound - * constructor arguments. + * constructor arguments. Must be power of two less than 1 << 24. */ static final int MAX_SEGMENTS = 1 << 16; // slightly conservative @@ -164,7 +189,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> final int segmentShift; /** - * The segments, each of which is a specialized hash table + * The segments, each of which is a specialized hash table. */ final Segment<K,V>[] segments; @@ -172,7 +197,65 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> transient Set<Map.Entry<K,V>> entrySet; transient Collection<V> values; - /* ---------------- Small Utilities -------------- */ + /** + * ConcurrentHashMap list entry. Note that this is never exported + * out as a user-visible Map.Entry. + */ + static final class HashEntry<K,V> { + final int hash; + final K key; + volatile V value; + volatile HashEntry<K,V> next; + + HashEntry(int hash, K key, V value, HashEntry<K,V> next) { + this.hash = hash; + this.key = key; + this.value = value; + this.next = next; + } + + /** + * Sets next field with volatile write semantics. (See above + * about use of putOrderedObject.) + */ + final void setNext(HashEntry<K,V> n) { + UNSAFE.putOrderedObject(this, nextOffset, n); + } + + // Unsafe mechanics + static final sun.misc.Unsafe UNSAFE; + static final long nextOffset; + static { + try { + UNSAFE = sun.misc.Unsafe.getUnsafe(); + Class k = HashEntry.class; + nextOffset = UNSAFE.objectFieldOffset + (k.getDeclaredField("next")); + } catch (Exception e) { + throw new Error(e); + } + } + } + + /** + * Gets the ith element of given table (if nonnull) with volatile + * read semantics. + */ + @SuppressWarnings("unchecked") + static final <K,V> HashEntry<K,V> entryAt(HashEntry<K,V>[] tab, int i) { + return (tab == null) ? null : + (HashEntry<K,V>) UNSAFE.getObjectVolatile + (tab, ((long)i << TSHIFT) + TBASE); + } + + /** + * Sets the ith element of given table, with volatile write + * semantics. (See above about use of putOrderedObject.) + */ + static final <K,V> void setEntryAt(HashEntry<K,V>[] tab, int i, + HashEntry<K,V> e) { + UNSAFE.putOrderedObject(tab, ((long)i << TSHIFT) + TBASE, e); + } /** * Applies a supplemental hash function to a given hashCode, which @@ -192,48 +275,6 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> return h ^ (h >>> 16); } - /** - * Returns the segment that should be used for key with given hash - * @param hash the hash code for the key - * @return the segment - */ - final Segment<K,V> segmentFor(int hash) { - return segments[(hash >>> segmentShift) & segmentMask]; - } - - /* ---------------- Inner Classes -------------- */ - - /** - * ConcurrentHashMap list entry. Note that this is never exported - * out as a user-visible Map.Entry. - * - * Because the value field is volatile, not final, it is legal wrt - * the Java Memory Model for an unsynchronized reader to see null - * instead of initial value when read via a data race. Although a - * reordering leading to this is not likely to ever actually - * occur, the Segment.readValueUnderLock method is used as a - * backup in case a null (pre-initialized) value is ever seen in - * an unsynchronized access method. - */ - static final class HashEntry<K,V> { - final K key; - final int hash; - volatile V value; - final HashEntry<K,V> next; - - HashEntry(K key, int hash, HashEntry<K,V> next, V value) { - this.key = key; - this.hash = hash; - this.next = next; - this.value = value; - } - - @SuppressWarnings("unchecked") - static final <K,V> HashEntry<K,V>[] newArray(int i) { - return new HashEntry[i]; - } - } - /** * Segments are specialized versions of hash tables. This * subclasses from ReentrantLock opportunistically, just to @@ -241,56 +282,61 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> */ static final class Segment<K,V> extends ReentrantLock implements Serializable { /* - * Segments maintain a table of entry lists that are ALWAYS - * kept in a consistent state, so can be read without locking. - * Next fields of nodes are immutable (final). All list - * additions are performed at the front of each bin. This - * makes it easy to check changes, and also fast to traverse. - * When nodes would otherwise be changed, new nodes are - * created to replace them. This works well for hash tables - * since the bin lists tend to be short. (The average length - * is less than two for the default load factor threshold.) - * - * Read operations can thus proceed without locking, but rely - * on selected uses of volatiles to ensure that completed - * write operations performed by other threads are - * noticed. For most purposes, the "count" field, tracking the - * number of elements, serves as that volatile variable - * ensuring visibility. This is convenient because this field - * needs to be read in many read operations anyway: - * - * - All (unsynchronized) read operations must first read the - * "count" field, and should not look at table entries if - * it is 0. + * Segments maintain a table of entry lists that are always + * kept in a consistent state, so can be read (via volatile + * reads of segments and tables) without locking. This + * requires replicating nodes when necessary during table + * resizing, so the old lists can be traversed by readers + * still using old version of table. * - * - All (synchronized) write operations should write to - * the "count" field after structurally changing any bin. - * The operations must not take any action that could even - * momentarily cause a concurrent read operation to see - * inconsistent data. This is made easier by the nature of - * the read operations in Map. For example, no operation - * can reveal that the table has grown but the threshold - * has not yet been updated, so there are no atomicity - * requirements for this with respect to reads. - * - * As a guide, all critical volatile reads and writes to the - * count field are marked in code comments. + * This class defines only mutative methods requiring locking. + * Except as noted, the methods of this class perform the + * per-segment versions of ConcurrentHashMap methods. (Other + * methods are integrated directly into ConcurrentHashMap + * methods.) These mutative methods use a form of controlled + * spinning on contention via methods scanAndLock and + * scanAndLockForPut. These intersperse tryLocks with + * traversals to locate nodes. The main benefit is to absorb + * cache misses (which are very common for hash tables) while + * obtaining locks so that traversal is faster once + * acquired. We do not actually use the found nodes since they + * must be re-acquired under lock anyway to ensure sequential + * consistency of updates (and in any case may be undetectably + * stale), but they will normally be much faster to re-locate. + * Also, scanAndLockForPut speculatively creates a fresh node + * to use in put if no node is found. */ private static final long serialVersionUID = 2249069246763182397L; /** - * The number of elements in this segment's region. + * The maximum number of times to tryLock in a prescan before + * possibly blocking on acquire in preparation for a locked + * segment operation. On multiprocessors, using a bounded + * number of retries maintains cache acquired while locating + * nodes. */ - transient volatile int count; + static final int MAX_SCAN_RETRIES = + Runtime.getRuntime().availableProcessors() > 1 ? 64 : 1; + + /** + * The per-segment table. Elements are accessed via + * entryAt/setEntryAt providing volatile semantics. + */ + transient volatile HashEntry<K,V>[] table; /** - * Number of updates that alter the size of the table. This is - * used during bulk-read methods to make sure they see a - * consistent snapshot: If modCounts change during a traversal - * of segments computing size or checking containsValue, then - * we might have an inconsistent view of state so (usually) - * must retry. + * The number of elements. Accessed only either within locks + * or among other volatile reads that maintain visibility. + */ + transient int count; + + /** + * The total number of mutative operations in this segment. + * Even though this may overflows 32 bits, it provides + * sufficient accuracy for stability checks in CHM isEmpty() + * and size() methods. Accessed only either within locks or + * among other volatile reads that maintain visibility. */ transient int modCount; @@ -301,11 +347,6 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> */ transient int threshold; - /** - * The per-segment table. - */ - transient volatile HashEntry<K,V>[] table; - /** * The load factor for the hash table. Even though this value * is same for all segments, it is replicated to avoid needing @@ -314,202 +355,94 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> */ final float loadFactor; - Segment(int initialCapacity, float lf) { - loadFactor = lf; - setTable(HashEntry.<K,V>newArray(initialCapacity)); - } - - @SuppressWarnings("unchecked") - static final <K,V> Segment<K,V>[] newArray(int i) { - return new Segment[i]; - } - - /** - * Sets table to new HashEntry array. - * Call only while holding lock or in constructor. - */ - void setTable(HashEntry<K,V>[] newTable) { - threshold = (int)(newTable.length * loadFactor); - table = newTable; - } - - /** - * Returns properly casted first entry of bin for given hash. - */ - HashEntry<K,V> getFirst(int hash) { - HashEntry<K,V>[] tab = table; - return tab[hash & (tab.length - 1)]; + Segment(float lf, int threshold, HashEntry<K,V>[] tab) { + this.loadFactor = lf; + this.threshold = threshold; + this.table = tab; } - /** - * Reads value field of an entry under lock. Called if value - * field ever appears to be null. This is possible only if a - * compiler happens to reorder a HashEntry initialization with - * its table assignment, which is legal under memory model - * but is not known to ever occur. - */ - V readValueUnderLock(HashEntry<K,V> e) { - lock(); + final V put(K key, int hash, V value, boolean onlyIfAbsent) { + HashEntry<K,V> node = tryLock() ? null : + scanAndLockForPut(key, hash, value); + V oldValue; try { - return e.value; - } finally { - unlock(); - } - } - - /* Specialized implementations of map methods */ - - V get(Object key, int hash) { - if (count != 0) { // read-volatile - HashEntry<K,V> e = getFirst(hash); - while (e != null) { - if (e.hash == hash && key.equals(e.key)) { - V v = e.value; - if (v != null) - return v; - return readValueUnderLock(e); // recheck - } - e = e.next; - } - } - return null; - } - - boolean containsKey(Object key, int hash) { - if (count != 0) { // read-volatile - HashEntry<K,V> e = getFirst(hash); - while (e != null) { - if (e.hash == hash && key.equals(e.key)) - return true; - e = e.next; - } - } - return false; - } - - boolean containsValue(Object value) { - if (count != 0) { // read-volatile HashEntry<K,V>[] tab = table; - int len = tab.length; - for (int i = 0 ; i < len; i++) { - for (HashEntry<K,V> e = tab[i]; e != null; e = e.next) { - V v = e.value; - if (v == null) // recheck - v = readValueUnderLock(e); - if (value.equals(v)) - return true; + int index = (tab.length - 1) & hash; + HashEntry<K,V> first = entryAt(tab, index); + for (HashEntry<K,V> e = first;;) { + if (e != null) { + K k; + if ((k = e.key) == key || + (e.hash == hash && key.equals(k))) { + oldValue = e.value; + if (!onlyIfAbsent) { + e.value = value; + ++modCount; + } + break; + } + e = e.next; + } + else { + if (node != null) + node.setNext(first); + else + node = new HashEntry<K,V>(hash, key, value, first); + int c = count + 1; + if (c > threshold && first != null && + tab.length < MAXIMUM_CAPACITY) + rehash(node); + else + setEntryAt(tab, index, node); + ++modCount; + count = c; + oldValue = null; + break; } } - } - return false; - } - - boolean replace(K key, int hash, V oldValue, V newValue) { - lock(); - try { - HashEntry<K,V> e = getFirst(hash); - while (e != null && (e.hash != hash || !key.equals(e.key))) - e = e.next; - - boolean replaced = false; - if (e != null && oldValue.equals(e.value)) { - replaced = true; - e.value = newValue; - } - return replaced; - } finally { - unlock(); - } - } - - V replace(K key, int hash, V newValue) { - lock(); - try { - HashEntry<K,V> e = getFirst(hash); - while (e != null && (e.hash != hash || !key.equals(e.key))) - e = e.next; - - V oldValue = null; - if (e != null) { - oldValue = e.value; - e.value = newValue; - } - return oldValue; - } finally { - unlock(); - } - } - - - V put(K key, int hash, V value, boolean onlyIfAbsent) { - lock(); - try { - int c = count; - if (c++ > threshold) // ensure capacity - rehash(); - HashEntry<K,V>[] tab = table; - int index = hash & (tab.length - 1); - HashEntry<K,V> first = tab[index]; - HashEntry<K,V> e = first; - while (e != null && (e.hash != hash || !key.equals(e.key))) - e = e.next; - - V oldValue; - if (e != null) { - oldValue = e.value; - if (!onlyIfAbsent) - e.value = value; - } - else { - oldValue = null; - ++modCount; - tab[index] = new HashEntry<K,V>(key, hash, first, value); - count = c; // write-volatile - } - return oldValue; } finally { unlock(); } + return oldValue; } - void rehash() { - HashEntry<K,V>[] oldTable = table; - int oldCapacity = oldTable.length; - if (oldCapacity >= MAXIMUM_CAPACITY) - return; - + /** + * Doubles size of table and repacks entries, also adding the + * given node to new table + */ + @SuppressWarnings("unchecked") + private void rehash(HashEntry<K,V> node) { /* - * Reclassify nodes in each list to new Map. Because we are - * using power-of-two expansion, the elements from each bin - * must either stay at same index, or move with a power of two - * offset. We eliminate unnecessary node creation by catching - * cases where old nodes can be reused because their next - * fields won't change. Statistically, at the default - * threshold, only about one-sixth of them need cloning when - * a table doubles. The nodes they replace will be garbage - * collectable as soon as they are no longer referenced by any - * reader thread that may be in the midst of traversing table - * right now. + * Reclassify nodes in each list to new table. Because we + * are using power-of-two expansion, the elements from + * each bin must either stay at same index, or move with a + * power of two offset. We eliminate unnecessary node + * creation by catching cases where old nodes can be + * reused because their next fields won't change. + * Statistically, at the default threshold, only about + * one-sixth of them need cloning when a table + * doubles. The nodes they replace will be garbage + * collectable as soon as they are no longer referenced by + * any reader thread that may be in the midst of + * concurrently traversing table. Entry accesses use plain + * array indexing because they are followed by volatile + * table write. */ - - HashEntry<K,V>[] newTable = HashEntry.newArray(oldCapacity<<1); - threshold = (int)(newTable.length * loadFactor); - int sizeMask = newTable.length - 1; + HashEntry<K,V>[] oldTable = table; + int oldCapacity = oldTable.length; + int newCapacity = oldCapacity << 1; + threshold = (int)(newCapacity * loadFactor); + HashEntry<K,V>[] newTable = + (HashEntry<K,V>[]) new HashEntry[newCapacity]; + int sizeMask = newCapacity - 1; for (int i = 0; i < oldCapacity ; i++) { - // We need to guarantee that any existing reads of old Map can - // proceed. So we cannot yet null out each bin. HashEntry<K,V> e = oldTable[i]; - if (e != null) { HashEntry<K,V> next = e.next; int idx = e.hash & sizeMask; - - // Single node on list - if (next == null) + if (next == null) // Single node on list newTable[idx] = e; - - else { - // Reuse trailing consecutive sequence at same slot + else { // Reuse consecutive sequence at same slot HashEntry<K,V> lastRun = e; int lastIdx = idx; for (HashEntry<K,V> last = next; @@ -522,74 +455,259 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> } } newTable[lastIdx] = lastRun; - - // Clone all remaining nodes + // Clone remaining nodes for (HashEntry<K,V> p = e; p != lastRun; p = p.next) { - int k = p.hash & sizeMask; + V v = p.value; + int h = p.hash; + int k = h & sizeMask; HashEntry<K,V> n = newTable[k]; - newTable[k] = new HashEntry<K,V>(p.key, p.hash, - n, p.value); + newTable[k] = new HashEntry<K,V>(h, p.key, v, n); } } } } + int nodeIndex = node.hash & sizeMask; // add the new node + node.setNext(newTable[nodeIndex]); + newTable[nodeIndex] = node; table = newTable; } + /** + * Scans for a node containing given key while trying to + * acquire lock, creating and returning one if not found. Upon + * return, guarantees that lock is held. UNlike in most + * methods, calls to method equals are not screened: Since + * traversal speed doesn't matter, we might as well help warm + * up the associated code and accesses as well. + * + * @return a new node if key not found, else null + */ + private HashEntry<K,V> scanAndLockForPut(K key, int hash, V value) { + HashEntry<K,V> first = entryForHash(this, hash); + HashEntry<K,V> e = first; + HashEntry<K,V> node = null; + int retries = -1; // negative while locating node + while (!tryLock()) { + HashEntry<K,V> f; // to recheck first below + if (retries < 0) { + if (e == null) { + if (node == null) // speculatively create node + node = new HashEntry<K,V>(hash, key, value, null); + retries = 0; + } + else if (key.equals(e.key)) + retries = 0; + else + e = e.next; + } + else if (++retries > MAX_SCAN_RETRIES) { + lock(); + break; + } + else if ((retries & 1) == 0 && + (f = entryForHash(this, hash)) != first) { + e = first = f; // re-traverse if entry changed + retries = -1; + } + } + return node; + } + + /** + * Scans for a node containing the given key while trying to + * acquire lock for a remove or replace operation. Upon + * return, guarantees that lock is held. Note that we must + * lock even if the key is not found, to ensure sequential + * consistency of updates. + */ + private void scanAndLock(Object key, int hash) { + // similar to but simpler than scanAndLockForPut + HashEntry<K,V> first = entryForHash(this, hash); + HashEntry<K,V> e = first; + int retries = -1; + while (!tryLock()) { + HashEntry<K,V> f; + if (retries < 0) { + if (e == null || key.equals(e.key)) + retries = 0; + else + e = e.next; + } + else if (++retries > MAX_SCAN_RETRIES) { + lock(); + break; + } + else if ((retries & 1) == 0 && + (f = entryForHash(this, hash)) != first) { + e = first = f; + retries = -1; + } + } + } + /** * Remove; match on key only if value null, else match both. */ - V remove(Object key, int hash, Object value) { - lock(); + final V remove(Object key, int hash, Object value) { + if (!tryLock()) + scanAndLock(key, hash); + V oldValue = null; try { - int c = count - 1; HashEntry<K,V>[] tab = table; - int index = hash & (tab.length - 1); - HashEntry<K,V> first = tab[index]; - HashEntry<K,V> e = first; - while (e != null && (e.hash != hash || !key.equals(e.key))) - e = e.next; + int index = (tab.length - 1) & hash; + HashEntry<K,V> e = entryAt(tab, index); + HashEntry<K,V> pred = null; + while (e != null) { + K k; + HashEntry<K,V> next = e.next; + if ((k = e.key) == key || + (e.hash == hash && key.equals(k))) { + V v = e.value; + if (value == null || value == v || value.equals(v)) { + if (pred == null) + setEntryAt(tab, index, next); + else + pred.setNext(next); + ++modCount; + --count; + oldValue = v; + } + break; + } + pred = e; + e = next; + } + } finally { + unlock(); + } + return oldValue; + } - V oldValue = null; - if (e != null) { - V v = e.value; - if (value == null || value.equals(v)) { - oldValue = v; - // All entries following removed node can stay - // in list, but all preceding ones need to be - // cloned. + final boolean replace(K key, int hash, V oldValue, V newValue) { + if (!tryLock()) + scanAndLock(key, hash); + boolean replaced = false; + try { + HashEntry<K,V> e; + for (e = entryForHash(this, hash); e != null; e = e.next) { + K k; + if ((k = e.key) == key || + (e.hash == hash && key.equals(k))) { + if (oldValue.equals(e.value)) { + e.value = newValue; + ++modCount; + replaced = true; + } + break; + } + } + } finally { + unlock(); + } + return replaced; + } + + final V replace(K key, int hash, V value) { + if (!tryLock()) + scanAndLock(key, hash); + V oldValue = null; + try { + HashEntry<K,V> e; + for (e = entryForHash(this, hash); e != null; e = e.next) { + K k; + if ((k = e.key) == key || + (e.hash == hash && key.equals(k))) { + oldValue = e.value; + e.value = value; ++modCount; - HashEntry<K,V> newFirst = e.next; - for (HashEntry<K,V> p = first; p != e; p = p.next) - newFirst = new HashEntry<K,V>(p.key, p.hash, - newFirst, p.value); - tab[index] = newFirst; - count = c; // write-volatile + break; } } - return oldValue; + } finally { + unlock(); + } + return oldValue; + } + + final void clear() { + lock(); + try { + HashEntry<K,V>[] tab = table; + for (int i = 0; i < tab.length ; i++) + setEntryAt(tab, i, null); + ++modCount; + count = 0; } finally { unlock(); } } + } + + // Accessing segments + + /** + * Gets the jth element of given segment array (if nonnull) with + * volatile element access semantics via Unsafe. + */ + @SuppressWarnings("unchecked") + static final <K,V> Segment<K,V> segmentAt(Segment<K,V>[] ss, int j) { + long u = (j << SSHIFT) + SBASE; + return ss == null ? null : + (Segment<K,V>) UNSAFE.getObjectVolatile(ss, u); + } - void clear() { - if (count != 0) { - lock(); - try { - HashEntry<K,V>[] tab = table; - for (int i = 0; i < tab.length ; i++) - tab[i] = null; - ++modCount; - count = 0; // write-volatile - } finally { - unlock(); + /** + * Returns the segment for the given index, creating it and + * recording in segment table (via CAS) if not already present. + * + * @param k the index + * @return the segment + */ + @SuppressWarnings("unchecked") + private Segment<K,V> ensureSegment(int k) { + final Segment<K,V>[] ss = this.segments; + long u = (k << SSHIFT) + SBASE; // raw offset + Segment<K,V> seg; + if ((seg = (Segment<K,V>)UNSAFE.getObjectVolatile(ss, u)) == null) { + Segment<K,V> proto = ss[0]; // use segment 0 as prototype + int cap = proto.table.length; + float lf = proto.loadFactor; + int threshold = (int)(cap * lf); + HashEntry<K,V>[] tab = (HashEntry<K,V>[])new HashEntry[cap]; + if ((seg = (Segment<K,V>)UNSAFE.getObjectVolatile(ss, u)) + == null) { // recheck + Segment<K,V> s = new Segment<K,V>(lf, threshold, tab); + while ((seg = (Segment<K,V>)UNSAFE.getObjectVolatile(ss, u)) + == null) { + if (UNSAFE.compareAndSwapObject(ss, u, null, seg = s)) + break; } } } + return seg; } + // Hash-based segment and entry accesses + /** + * Get the segment for the given hash + */ + @SuppressWarnings("unchecked") + private Segment<K,V> segmentForHash(int h) { + long u = (((h >>> segmentShift) & segmentMask) << SSHIFT) + SBASE; + return (Segment<K,V>) UNSAFE.getObjectVolatile(segments, u); + } + + /** + * Gets the table entry for the given segment and hash + */ + @SuppressWarnings("unchecked") + static final <K,V> HashEntry<K,V> entryForHash(Segment<K,V> seg, int h) { + HashEntry<K,V>[] tab; + return (seg == null || (tab = seg.table) == null) ? null : + (HashEntry<K,V>) UNSAFE.getObjectVolatile + (tab, ((long)(((tab.length - 1) & h)) << TSHIFT) + TBASE); + } /* ---------------- Public operations -------------- */ @@ -609,14 +727,13 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> * negative or the load factor or concurrencyLevel are * nonpositive. */ + @SuppressWarnings("unchecked") public ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel) { if (!(loadFactor > 0) || initialCapacity < 0 || concurrencyLevel <= 0) throw new IllegalArgumentException(); - if (concurrencyLevel > MAX_SEGMENTS) concurrencyLevel = MAX_SEGMENTS; - // Find power-of-two sizes best matching arguments int sshift = 0; int ssize = 1; @@ -624,21 +741,23 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> ++sshift; ssize <<= 1; } - segmentShift = 32 - sshift; - segmentMask = ssize - 1; - this.segments = Segment.newArray(ssize); - + this.segmentShift = 32 - sshift; + this.segmentMask = ssize - 1; if (initialCapacity > MAXIMUM_CAPACITY) initialCapacity = MAXIMUM_CAPACITY; int c = initialCapacity / ssize; if (c * ssize < initialCapacity) ++c; - int cap = 1; + int cap = MIN_SEGMENT_TABLE_CAPACITY; while (cap < c) cap <<= 1; - - for (int i = 0; i < this.segments.length; ++i) - this.segments[i] = new Segment<K,V>(cap, loadFactor); + // create segments and segments[0] + Segment<K,V> s0 = + new Segment<K,V>(loadFactor, (int)(cap * loadFactor), + (HashEntry<K,V>[])new HashEntry[cap]); + Segment<K,V>[] ss = (Segment<K,V>[])new Segment[ssize]; + UNSAFE.putOrderedObject(ss, SBASE, s0); // ordered write of segments[0] + this.segments = ss; } /** @@ -701,34 +820,37 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> * @return <tt>true</tt> if this map contains no key-value mappings */ public boolean isEmpty() { - final Segment<K,V>[] segments = this.segments; /* - * We keep track of per-segment modCounts to avoid ABA - * problems in which an element in one segment was added and - * in another removed during traversal, in which case the - * table was never actually empty at any point. Note the - * similar use of modCounts in the size() and containsValue() - * methods, which are the only other methods also susceptible - * to ABA problems. + * Sum per-segment modCounts to avoid mis-reporting when + * elements are concurrently added and removed in one segment + * while checking another, in which case the table was never + * actually empty at any point. (The sum ensures accuracy up + * through at least 1<<31 per-segment modifications before + * recheck.) Methods size() and containsValue() use similar + * constructions for stability checks. */ - int[] mc = new int[segments.length]; - int mcsum = 0; - for (int i = 0; i < segments.length; ++i) { - if (segments[i].count != 0) - return false; - else - mcsum += mc[i] = segments[i].modCount; - } - // If mcsum happens to be zero, then we know we got a snapshot - // before any modifications at all were made. This is - // probably common enough to bother tracking. - if (mcsum != 0) { - for (int i = 0; i < segments.length; ++i) { - if (segments[i].count != 0 || - mc[i] != segments[i].modCount) + long sum = 0L; + final Segment<K,V>[] segments = this.segments; + for (int j = 0; j < segments.length; ++j) { + Segment<K,V> seg = segmentAt(segments, j); + if (seg != null) { + if (seg.count != 0) return false; + sum += seg.modCount; } } + if (sum != 0L) { // recheck unless no modifications + for (int j = 0; j < segments.length; ++j) { + Segment<K,V> seg = segmentAt(segments, j); + if (seg != null) { + if (seg.count != 0) + return false; + sum -= seg.modCount; + } + } + if (sum != 0L) + return false; + } return true; } @@ -740,45 +862,43 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> * @return the number of key-value mappings in this map */ public int size() { - final Segment<K,V>[] segments = this.segments; - long sum = 0; - long check = 0; - int[] mc = new int[segments.length]; // Try a few times to get accurate count. On failure due to // continuous async changes in table, resort to locking. - for (int k = 0; k < RETRIES_BEFORE_LOCK; ++k) { - check = 0; - sum = 0; - int mcsum = 0; - for (int i = 0; i < segments.length; ++i) { - sum += segments[i].count; - mcsum += mc[i] = segments[i].modCount; - } - if (mcsum != 0) { - for (int i = 0; i < segments.length; ++i) { - check += segments[i].count; - if (mc[i] != segments[i].modCount) { - check = -1; // force retry - break; + final Segment<K,V>[] segments = this.segments; + int size; + boolean overflow; // true if size overflows 32 bits + long sum; // sum of modCounts + long last = 0L; // previous sum + int retries = -1; // first iteration isn't retry + try { + for (;;) { + if (retries++ == RETRIES_BEFORE_LOCK) { + for (int j = 0; j < segments.length; ++j) + ensureSegment(j).lock(); // force creation + } + sum = 0L; + size = 0; + overflow = false; + for (int j = 0; j < segments.length; ++j) { + Segment<K,V> seg = segmentAt(segments, j); + if (seg != null) { + sum += seg.modCount; + int c = seg.count; + if (c < 0 || (size += c) < 0) + overflow = true; } } + if (sum == last) + break; + last = sum; + } + } finally { + if (retries > RETRIES_BEFORE_LOCK) { + for (int j = 0; j < segments.length; ++j) + segmentAt(segments, j).unlock(); } - if (check == sum) - break; - } - if (check != sum) { // Resort to locking all segments - sum = 0; - for (int i = 0; i < segments.length; ++i) - segments[i].lock(); - for (int i = 0; i < segments.length; ++i) - sum += segments[i].count; - for (int i = 0; i < segments.length; ++i) - segments[i].unlock(); } - if (sum > Integer.MAX_VALUE) - return Integer.MAX_VALUE; - else - return (int)sum; + return overflow ? Integer.MAX_VALUE : size; } /** @@ -794,7 +914,13 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> */ public V get(Object key) { int hash = hash(key.hashCode()); - return segmentFor(hash).get(key, hash); + for (HashEntry<K,V> e = entryForHash(segmentForHash(hash), hash); + e != null; e = e.next) { + K k; + if ((k = e.key) == key || (e.hash == hash && key.equals(k))) + return e.value; + } + return null; } /** @@ -808,7 +934,13 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> */ public boolean containsKey(Object key) { int hash = hash(key.hashCode()); - return segmentFor(hash).containsKey(key, hash); + for (HashEntry<K,V> e = entryForHash(segmentForHash(hash), hash); + e != null; e = e.next) { + K k; + if ((k = e.key) == key || (e.hash == hash && key.equals(k))) + return true; + } + return false; } /** @@ -823,51 +955,47 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> * @throws NullPointerException if the specified value is null */ public boolean containsValue(Object value) { + // Same idea as size() if (value == null) throw new NullPointerException(); - - // See explanation of modCount use above - final Segment<K,V>[] segments = this.segments; - int[] mc = new int[segments.length]; - - // Try a few times without locking - for (int k = 0; k < RETRIES_BEFORE_LOCK; ++k) { - int sum = 0; - int mcsum = 0; - for (int i = 0; i < segments.length; ++i) { - int c = segments[i].count; - mcsum += mc[i] = segments[i].modCount; - if (segments[i].containsValue(value)) - return true; - } - boolean cleanSweep = true; - if (mcsum != 0) { - for (int i = 0; i < segments.length; ++i) { - int c = segments[i].count; - if (mc[i] != segments[i].modCount) { - cleanSweep = false; - break; - } - } - } - if (cleanSweep) - return false; - } - // Resort to locking all segments - for (int i = 0; i < segments.length; ++i) - segments[i].lock(); boolean found = false; + long last = 0; + int retries = -1; try { - for (int i = 0; i < segments.length; ++i) { - if (segments[i].containsValue(value)) { - found = true; - break; + outer: for (;;) { + if (retries++ == RETRIES_BEFORE_LOCK) { + for (int j = 0; j < segments.length; ++j) + ensureSegment(j).lock(); // force creation + } + long hashSum = 0L; + int sum = 0; + for (int j = 0; j < segments.length; ++j) { + HashEntry<K,V>[] tab; + Segment<K,V> seg = segmentAt(segments, j); + if (seg != null && (tab = seg.table) != null) { + for (int i = 0 ; i < tab.length; i++) { + HashEntry<K,V> e; + for (e = entryAt(tab, i); e != null; e = e.next) { + V v = e.value; + if (v != null && value.equals(v)) { + found = true; + break outer; + } + } + } + sum += seg.modCount; + } } + if (retries > 0 && sum == last) + break; + last = sum; } } finally { - for (int i = 0; i < segments.length; ++i) - segments[i].unlock(); + if (retries > RETRIES_BEFORE_LOCK) { + for (int j = 0; j < segments.length; ++j) + segmentAt(segments, j).unlock(); + } } return found; } @@ -908,7 +1036,11 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> if (value == null) throw new NullPointerException(); int hash = hash(key.hashCode()); - return segmentFor(hash).put(key, hash, value, false); + int j = (hash >>> segmentShift) & segmentMask; + Segment<K,V> s = segmentAt(segments, j); + if (s == null) + s = ensureSegment(j); + return s.put(key, hash, value, false); } /** @@ -922,7 +1054,11 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> if (value == null) throw new NullPointerException(); int hash = hash(key.hashCode()); - return segmentFor(hash).put(key, hash, value, true); + int j = (hash >>> segmentShift) & segmentMask; + Segment<K,V> s = segmentAt(segments, j); + if (s == null) + s = ensureSegment(j); + return s.put(key, hash, value, true); } /** @@ -948,7 +1084,8 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> */ public V remove(Object key) { int hash = hash(key.hashCode()); - return segmentFor(hash).remove(key, hash, null); + Segment<K,V> s = segmentForHash(hash); + return s == null ? null : s.remove(key, hash, null); } /** @@ -958,9 +1095,9 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> */ public boolean remove(Object key, Object value) { int hash = hash(key.hashCode()); - if (value == null) - return false; - return segmentFor(hash).remove(key, hash, value) != null; + Segment<K,V> s; + return value != null && (s = segmentForHash(hash)) != null && + s.remove(key, hash, value) != null; } /** @@ -969,10 +1106,11 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> * @throws NullPointerException if any of the arguments are null */ public boolean replace(K key, V oldValue, V newValue) { + int hash = hash(key.hashCode()); if (oldValue == null || newValue == null) throw new NullPointerException(); - int hash = hash(key.hashCode()); - return segmentFor(hash).replace(key, hash, oldValue, newValue); + Segment<K,V> s = segmentForHash(hash); + return s != null && s.replace(key, hash, oldValue, newValue); } /** @@ -983,18 +1121,23 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> * @throws NullPointerException if the specified key or value is null */ public V replace(K key, V value) { + int hash = hash(key.hashCode()); if (value == null) throw new NullPointerException(); - int hash = hash(key.hashCode()); - return segmentFor(hash).replace(key, hash, value); + Segment<K,V> s = segmentForHash(hash); + return s == null ? null : s.replace(key, hash, value); } /** * Removes all of the mappings from this map. */ public void clear() { - for (int i = 0; i < segments.length; ++i) - segments[i].clear(); + final Segment<K,V>[] segments = this.segments; + for (int j = 0; j < segments.length; ++j) { + Segment<K,V> s = segmentAt(segments, j); + if (s != null) + s.clear(); + } } /** @@ -1095,42 +1238,41 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> advance(); } - public boolean hasMoreElements() { return hasNext(); } - + /** + * Set nextEntry to first node of next non-empty table + * (in backwards order, to simplify checks). + */ final void advance() { - if (nextEntry != null && (nextEntry = nextEntry.next) != null) - return; - - while (nextTableIndex >= 0) { - if ( (nextEntry = currentTable[nextTableIndex--]) != null) - return; - } - - while (nextSegmentIndex >= 0) { - Segment<K,V> seg = segments[nextSegmentIndex--]; - if (seg.count != 0) { - currentTable = seg.table; - for (int j = currentTable.length - 1; j >= 0; --j) { - if ( (nextEntry = currentTable[j]) != null) { - nextTableIndex = j - 1; - return; - } - } + for (;;) { + if (nextTableIndex >= 0) { + if ((nextEntry = entryAt(currentTable, + nextTableIndex--)) != null) + break; + } + else if (nextSegmentIndex >= 0) { + Segment<K,V> seg = segmentAt(segments, nextSegmentIndex--); + if (seg != null && (currentTable = seg.table) != null) + nextTableIndex = currentTable.length - 1; } + else + break; } } - public boolean hasNext() { return nextEntry != null; } - - HashEntry<K,V> nextEntry() { - if (nextEntry == null) + final HashEntry<K,V> nextEntry() { + HashEntry<K,V> e = nextEntry; + if (e == null) throw new NoSuchElementException(); - lastReturned = nextEntry; - advance(); - return lastReturned; + lastReturned = e; // cannot assign until after null check + if ((nextEntry = e.next) == null) + advance(); + return e; } - public void remove() { + public final boolean hasNext() { return nextEntry != null; } + public final boolean hasMoreElements() { return nextEntry != null; } + + public final void remove() { if (lastReturned == null) throw new IllegalStateException(); ConcurrentHashMap.this.remove(lastReturned.key); @@ -1142,16 +1284,16 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> extends HashIterator implements Iterator<K>, Enumeration<K> { - public K next() { return super.nextEntry().key; } - public K nextElement() { return super.nextEntry().key; } + public final K next() { return super.nextEntry().key; } + public final K nextElement() { return super.nextEntry().key; } } final class ValueIterator extends HashIterator implements Iterator<V>, Enumeration<V> { - public V next() { return super.nextEntry().value; } - public V nextElement() { return super.nextEntry().value; } + public final V next() { return super.nextEntry().value; } + public final V nextElement() { return super.nextEntry().value; } } /** @@ -1271,15 +1413,20 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> * The key-value mappings are emitted in no particular order. */ private void writeObject(java.io.ObjectOutputStream s) throws IOException { + // force all segments for serialization compatibility + for (int k = 0; k < segments.length; ++k) + ensureSegment(k); s.defaultWriteObject(); + final Segment<K,V>[] segments = this.segments; for (int k = 0; k < segments.length; ++k) { - Segment<K,V> seg = segments[k]; + Segment<K,V> seg = segmentAt(segments, k); seg.lock(); try { HashEntry<K,V>[] tab = seg.table; for (int i = 0; i < tab.length; ++i) { - for (HashEntry<K,V> e = tab[i]; e != null; e = e.next) { + HashEntry<K,V> e; + for (e = entryAt(tab, i); e != null; e = e.next) { s.writeObject(e.key); s.writeObject(e.value); } @@ -1297,13 +1444,20 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> * stream (i.e., deserialize it). * @param s the stream */ + @SuppressWarnings("unchecked") private void readObject(java.io.ObjectInputStream s) throws IOException, ClassNotFoundException { s.defaultReadObject(); - // Initialize each segment to be minimally sized, and let grow. - for (int i = 0; i < segments.length; ++i) { - segments[i].setTable(new HashEntry[1]); + // Re-initialize segments to be minimally sized, and let grow. + int cap = MIN_SEGMENT_TABLE_CAPACITY; + final Segment<K,V>[] segments = this.segments; + for (int k = 0; k < segments.length; ++k) { + Segment<K,V> seg = segments[k]; + if (seg != null) { + seg.threshold = (int)(cap * seg.loadFactor); + seg.table = (HashEntry<K,V>[]) new HashEntry[cap]; + } } // Read the keys and values, and put the mappings in the table @@ -1315,4 +1469,31 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> put(key, value); } } + + // Unsafe mechanics + private static final sun.misc.Unsafe UNSAFE; + private static final long SBASE; + private static final int SSHIFT; + private static final long TBASE; + private static final int TSHIFT; + + static { + int ss, ts; + try { + UNSAFE = sun.misc.Unsafe.getUnsafe(); + Class tc = HashEntry[].class; + Class sc = Segment[].class; + TBASE = UNSAFE.arrayBaseOffset(tc); + SBASE = UNSAFE.arrayBaseOffset(sc); + ts = UNSAFE.arrayIndexScale(tc); + ss = UNSAFE.arrayIndexScale(sc); + } catch (Exception e) { + throw new Error(e); + } + if ((ss & (ss-1)) != 0 || (ts & (ts-1)) != 0) + throw new Error("data type scale not a power of two"); + SSHIFT = 31 - Integer.numberOfLeadingZeros(ss); + TSHIFT = 31 - Integer.numberOfLeadingZeros(ts); + } + } diff --git a/src/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java b/src/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java index 1030fac04235359f3f82bfc8c9ee4562b757f284..4c1c4616263d46278757b847891837e435f673df 100644 --- a/src/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java +++ b/src/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java @@ -30,7 +30,7 @@ * * Written by Doug Lea and Martin Buchholz with assistance from members of * JCP JSR-166 Expert Group and released to the public domain, as explained - * at http://creativecommons.org/licenses/publicdomain + * at http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java b/src/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java index 54bd8cbfff5f0c803edbb4d18b557a28e3dc2cb6..09f21ef150434fb14669f4e478a79af6a1e3797e 100644 --- a/src/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java +++ b/src/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java @@ -30,7 +30,7 @@ * * Written by Doug Lea and Martin Buchholz with assistance from members of * JCP JSR-166 Expert Group and released to the public domain, as explained - * at http://creativecommons.org/licenses/publicdomain + * at http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ConcurrentMap.java b/src/share/classes/java/util/concurrent/ConcurrentMap.java index 1ded04c0891a6aacd3041150d71349b65def8e33..25cf98ff0f1e5c6e8020ef8bd09969d27239a11f 100644 --- a/src/share/classes/java/util/concurrent/ConcurrentMap.java +++ b/src/share/classes/java/util/concurrent/ConcurrentMap.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ConcurrentNavigableMap.java b/src/share/classes/java/util/concurrent/ConcurrentNavigableMap.java index 460b04d3a834ce1ffd5945f252a3d29a4f8e8ff8..df5bb31d1b1201f72270a3f7bc346b0310b7a43d 100644 --- a/src/share/classes/java/util/concurrent/ConcurrentNavigableMap.java +++ b/src/share/classes/java/util/concurrent/ConcurrentNavigableMap.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ConcurrentSkipListMap.java b/src/share/classes/java/util/concurrent/ConcurrentSkipListMap.java index 37d218f6775ae75bf7b12ac92d9fb2230bd56f5b..8e3e4d0a7ccecc97289fa21c29db2de3560833f5 100644 --- a/src/share/classes/java/util/concurrent/ConcurrentSkipListMap.java +++ b/src/share/classes/java/util/concurrent/ConcurrentSkipListMap.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ConcurrentSkipListSet.java b/src/share/classes/java/util/concurrent/ConcurrentSkipListSet.java index 04b845c3f8736c339d9df4ea989c5c9f5104fa4d..eb90bb0bf9ff58be30510c01a62e933360e60654 100644 --- a/src/share/classes/java/util/concurrent/ConcurrentSkipListSet.java +++ b/src/share/classes/java/util/concurrent/ConcurrentSkipListSet.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/CopyOnWriteArraySet.java b/src/share/classes/java/util/concurrent/CopyOnWriteArraySet.java index 1d2de1d85c9073d564470fd896cb62b24711a332..d518048227d33a2d03567cb653f1651e07161ad6 100644 --- a/src/share/classes/java/util/concurrent/CopyOnWriteArraySet.java +++ b/src/share/classes/java/util/concurrent/CopyOnWriteArraySet.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/CountDownLatch.java b/src/share/classes/java/util/concurrent/CountDownLatch.java index 1c8a0253c149a137a913aa74dfe060bb11b9424b..187b1f2355f21280040f9c04abc6f291de64009a 100644 --- a/src/share/classes/java/util/concurrent/CountDownLatch.java +++ b/src/share/classes/java/util/concurrent/CountDownLatch.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/CyclicBarrier.java b/src/share/classes/java/util/concurrent/CyclicBarrier.java index 68edabe719a0cd9cf028a7ae85bb9b63332661a5..01d64b116b7b6a558b70c144a8dcbe0616eb7da6 100644 --- a/src/share/classes/java/util/concurrent/CyclicBarrier.java +++ b/src/share/classes/java/util/concurrent/CyclicBarrier.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/DelayQueue.java b/src/share/classes/java/util/concurrent/DelayQueue.java index ecb9eefc6e26be12cf3b65e0d19cb061a311df7c..dd36cc79ac279de1d946e3a7d3c45826dcce8461 100644 --- a/src/share/classes/java/util/concurrent/DelayQueue.java +++ b/src/share/classes/java/util/concurrent/DelayQueue.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ diff --git a/src/share/classes/java/util/concurrent/Delayed.java b/src/share/classes/java/util/concurrent/Delayed.java index 8d59898eeabcd8cb4cad8716b285c9af4254ff9b..d77564121305b21ac1854a23719f6c09e9aa01e0 100644 --- a/src/share/classes/java/util/concurrent/Delayed.java +++ b/src/share/classes/java/util/concurrent/Delayed.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/Exchanger.java b/src/share/classes/java/util/concurrent/Exchanger.java index e23f797c289bdbda12917591bba233769d91e06d..99e3a35967bd7d174615be1b0a7d79d5f9dd7092 100644 --- a/src/share/classes/java/util/concurrent/Exchanger.java +++ b/src/share/classes/java/util/concurrent/Exchanger.java @@ -31,7 +31,7 @@ * Written by Doug Lea, Bill Scherer, and Michael Scott with * assistance from members of JCP JSR-166 Expert Group and released to * the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ExecutionException.java b/src/share/classes/java/util/concurrent/ExecutionException.java index 53d38fa129eaac0483222cfd4c26430c51ba3bb2..fc2b1e899ecacb60ac62f354224d9713ecfc8596 100644 --- a/src/share/classes/java/util/concurrent/ExecutionException.java +++ b/src/share/classes/java/util/concurrent/ExecutionException.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/Executor.java b/src/share/classes/java/util/concurrent/Executor.java index 5e67fbcdd08fe60aa75f4281d7fc8b2f4b42796d..6b4574a63c73295b163ae0d3593c71726d08f740 100644 --- a/src/share/classes/java/util/concurrent/Executor.java +++ b/src/share/classes/java/util/concurrent/Executor.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ExecutorCompletionService.java b/src/share/classes/java/util/concurrent/ExecutorCompletionService.java index 9908a8cfcdd2e45098a7692ebfe92247406d54a0..34d1d1a4fda1272523394cf2dfd6e94b53ea6b78 100644 --- a/src/share/classes/java/util/concurrent/ExecutorCompletionService.java +++ b/src/share/classes/java/util/concurrent/ExecutorCompletionService.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ExecutorService.java b/src/share/classes/java/util/concurrent/ExecutorService.java index 9ef2701fcc3e49360949e1fa7024d63b0b8d0dd1..f1ab3275ef50e8ddce68467ba8f0750ce84d2b8a 100644 --- a/src/share/classes/java/util/concurrent/ExecutorService.java +++ b/src/share/classes/java/util/concurrent/ExecutorService.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/Executors.java b/src/share/classes/java/util/concurrent/Executors.java index 75a490086ae6c828c3dc83dbc7ab475c33f66803..4ff71418422d7b306de48720cf7fba176de0c414 100644 --- a/src/share/classes/java/util/concurrent/Executors.java +++ b/src/share/classes/java/util/concurrent/Executors.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ForkJoinPool.java b/src/share/classes/java/util/concurrent/ForkJoinPool.java index e298d151c1bc4f32b676b0e89bf0a0ef0908db6b..9c90f36adb40a36b4a8905a77aed0015b7a4a198 100644 --- a/src/share/classes/java/util/concurrent/ForkJoinPool.java +++ b/src/share/classes/java/util/concurrent/ForkJoinPool.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; @@ -791,18 +791,19 @@ public class ForkJoinPool extends AbstractExecutorService { /** * Tries to enqueue worker w in wait queue and await change in - * worker's eventCount. If the pool is quiescent, possibly - * terminates worker upon exit. Otherwise, before blocking, - * rescans queues to avoid missed signals. Upon finding work, - * releases at least one worker (which may be the current - * worker). Rescans restart upon detected staleness or failure to - * release due to contention. Note the unusual conventions about - * Thread.interrupt here and elsewhere: Because interrupts are - * used solely to alert threads to check termination, which is - * checked here anyway, we clear status (using Thread.interrupted) - * before any call to park, so that park does not immediately - * return due to status being set via some other unrelated call to - * interrupt in user code. + * worker's eventCount. If the pool is quiescent and there is + * more than one worker, possibly terminates worker upon exit. + * Otherwise, before blocking, rescans queues to avoid missed + * signals. Upon finding work, releases at least one worker + * (which may be the current worker). Rescans restart upon + * detected staleness or failure to release due to + * contention. Note the unusual conventions about Thread.interrupt + * here and elsewhere: Because interrupts are used solely to alert + * threads to check termination, which is checked here anyway, we + * clear status (using Thread.interrupted) before any call to + * park, so that park does not immediately return due to status + * being set via some other unrelated call to interrupt in user + * code. * * @param w the calling worker * @param c the ctl value on entry @@ -823,7 +824,8 @@ public class ForkJoinPool extends AbstractExecutorService { else if (w.eventCount != v) return true; // update next time } - if (parallelism + (int)(nc >> AC_SHIFT) == 0 && + if ((!shutdown || !tryTerminate(false)) && + (int)c != 0 && parallelism + (int)(nc >> AC_SHIFT) == 0 && blockedCount == 0 && quiescerCount == 0) idleAwaitWork(w, nc, c, v); // quiescent for (boolean rescanned = false;;) { @@ -893,7 +895,8 @@ public class ForkJoinPool extends AbstractExecutorService { w.parked = false; if (w.eventCount != v) break; - else if (System.nanoTime() - startTime < SHRINK_RATE) + else if (System.nanoTime() - startTime < + SHRINK_RATE - (SHRINK_RATE / 10)) // timing slop Thread.interrupted(); // spurious wakeup else if (UNSAFE.compareAndSwapLong(this, ctlOffset, currentCtl, prevCtl)) { @@ -1022,8 +1025,8 @@ public class ForkJoinPool extends AbstractExecutorService { do {} while (!UNSAFE.compareAndSwapLong(this, ctlOffset, // no mask c = ctl, c + AC_UNIT)); int b; - do {} while(!UNSAFE.compareAndSwapInt(this, blockedCountOffset, - b = blockedCount, b - 1)); + do {} while (!UNSAFE.compareAndSwapInt(this, blockedCountOffset, + b = blockedCount, b - 1)); } /** @@ -1175,7 +1178,7 @@ public class ForkJoinPool extends AbstractExecutorService { ws[k] = w; nextWorkerIndex = k + 1; int m = g & SMASK; - g = k >= m? ((m << 1) + 1) & SMASK : g + (SG_UNIT<<1); + g = (k > m) ? ((m << 1) + 1) & SMASK : g + (SG_UNIT<<1); } } finally { scanGuard = g; @@ -1358,8 +1361,8 @@ public class ForkJoinPool extends AbstractExecutorService { */ final void addQuiescerCount(int delta) { int c; - do {} while(!UNSAFE.compareAndSwapInt(this, quiescerCountOffset, - c = quiescerCount, c + delta)); + do {} while (!UNSAFE.compareAndSwapInt(this, quiescerCountOffset, + c = quiescerCount, c + delta)); } /** @@ -1712,7 +1715,7 @@ public class ForkJoinPool extends AbstractExecutorService { */ public int getRunningThreadCount() { int r = parallelism + (int)(ctl >> AC_SHIFT); - return r <= 0? 0 : r; // suppress momentarily negative values + return (r <= 0) ? 0 : r; // suppress momentarily negative values } /** @@ -1724,7 +1727,7 @@ public class ForkJoinPool extends AbstractExecutorService { */ public int getActiveThreadCount() { int r = parallelism + (int)(ctl >> AC_SHIFT) + blockedCount; - return r <= 0? 0 : r; // suppress momentarily negative values + return (r <= 0) ? 0 : r; // suppress momentarily negative values } /** @@ -1879,9 +1882,9 @@ public class ForkJoinPool extends AbstractExecutorService { int ac = rc + blockedCount; String level; if ((c & STOP_BIT) != 0) - level = (tc == 0)? "Terminated" : "Terminating"; + level = (tc == 0) ? "Terminated" : "Terminating"; else - level = shutdown? "Shutting down" : "Running"; + level = shutdown ? "Shutting down" : "Running"; return super.toString() + "[" + level + ", parallelism = " + pc + diff --git a/src/share/classes/java/util/concurrent/ForkJoinTask.java b/src/share/classes/java/util/concurrent/ForkJoinTask.java index ee8ba8fcfaba776d5fe350a08266352c89579929..fbab843f78b73fb3fcdf9518b37638a33fdc8d58 100644 --- a/src/share/classes/java/util/concurrent/ForkJoinTask.java +++ b/src/share/classes/java/util/concurrent/ForkJoinTask.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java b/src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java index 2f48080a664190668cd4d15e6b4e0a024b8f2b39..3504abb73c7d82f4ddef96a95518cb55c86f6b58 100644 --- a/src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java +++ b/src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; @@ -361,7 +361,7 @@ public class ForkJoinWorkerThread extends Thread { protected void onStart() { queue = new ForkJoinTask<?>[INITIAL_QUEUE_CAPACITY]; int r = pool.workerSeedGenerator.nextInt(); - seed = (r == 0)? 1 : r; // must be nonzero + seed = (r == 0) ? 1 : r; // must be nonzero } /** @@ -724,7 +724,7 @@ public class ForkJoinWorkerThread extends Thread { Thread.yield(); // for politeness } else - retries = helpJoinTask(joinMe)? MAX_HELP : retries - 1; + retries = helpJoinTask(joinMe) ? MAX_HELP : retries - 1; } else { retries = MAX_HELP; // restart if not done @@ -955,7 +955,7 @@ public class ForkJoinWorkerThread extends Thread { p.addActiveCount(1); } if ((t = (v != this) ? v.deqTask() : - locallyFifo? locallyDeqTask() : popTask()) != null) { + locallyFifo ? locallyDeqTask() : popTask()) != null) { currentSteal = t; t.doExec(); currentSteal = ps; diff --git a/src/share/classes/java/util/concurrent/Future.java b/src/share/classes/java/util/concurrent/Future.java index 4abd3f4e1741ad577f05f56f0c6f3f64cacf5d31..2aab18ed346e36a8d8855559ab079111ad6e965d 100644 --- a/src/share/classes/java/util/concurrent/Future.java +++ b/src/share/classes/java/util/concurrent/Future.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/FutureTask.java b/src/share/classes/java/util/concurrent/FutureTask.java index dd7a51edf712686fa929d2a249893bed12f9ec38..45c91d062ea5d0a307705b1b4443cc20d6fdd843 100644 --- a/src/share/classes/java/util/concurrent/FutureTask.java +++ b/src/share/classes/java/util/concurrent/FutureTask.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/LinkedBlockingDeque.java b/src/share/classes/java/util/concurrent/LinkedBlockingDeque.java index f5d9da1cb178f52cfe7a505f3c69cdd9a10cf4d8..c1978c8e3313999284636ef17bcb323a133e5c3e 100644 --- a/src/share/classes/java/util/concurrent/LinkedBlockingDeque.java +++ b/src/share/classes/java/util/concurrent/LinkedBlockingDeque.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/LinkedBlockingQueue.java b/src/share/classes/java/util/concurrent/LinkedBlockingQueue.java index 5f62e79ce56bdf90da60e21d7b3076f1a5123973..ae4d43594dd5b590f5263a458be3f8c427c76d82 100644 --- a/src/share/classes/java/util/concurrent/LinkedBlockingQueue.java +++ b/src/share/classes/java/util/concurrent/LinkedBlockingQueue.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/LinkedTransferQueue.java b/src/share/classes/java/util/concurrent/LinkedTransferQueue.java index 7571978169be81d7eb74c4cfd2a10f0587e89165..3fe72477bf91bec6b1783d32a61365a7c2dbe795 100644 --- a/src/share/classes/java/util/concurrent/LinkedTransferQueue.java +++ b/src/share/classes/java/util/concurrent/LinkedTransferQueue.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/Phaser.java b/src/share/classes/java/util/concurrent/Phaser.java index 7e3622191797e4b7937151f04e65be11b0b6334a..c4ebe2378cbda7d11a0146578b0d5e8ff69891ef 100644 --- a/src/share/classes/java/util/concurrent/Phaser.java +++ b/src/share/classes/java/util/concurrent/Phaser.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/PriorityBlockingQueue.java b/src/share/classes/java/util/concurrent/PriorityBlockingQueue.java index 5ad7fa71d71b9aecd61fd04566ccccf2908e3fa3..83dbb4dd7785616a025579c5039c9d1ca35083db 100644 --- a/src/share/classes/java/util/concurrent/PriorityBlockingQueue.java +++ b/src/share/classes/java/util/concurrent/PriorityBlockingQueue.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/RecursiveAction.java b/src/share/classes/java/util/concurrent/RecursiveAction.java index e13bc4b55781dd332a23163e8d4c4ae7d306af0a..add4a54a44f98163a474d1f6cf0eb313b3e494c5 100644 --- a/src/share/classes/java/util/concurrent/RecursiveAction.java +++ b/src/share/classes/java/util/concurrent/RecursiveAction.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/RecursiveTask.java b/src/share/classes/java/util/concurrent/RecursiveTask.java index cc329d0306db89d66a4fab09fdbf1f057c690798..11c7768ef92650f2082ee5a2954278dace43a8ed 100644 --- a/src/share/classes/java/util/concurrent/RecursiveTask.java +++ b/src/share/classes/java/util/concurrent/RecursiveTask.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/RejectedExecutionException.java b/src/share/classes/java/util/concurrent/RejectedExecutionException.java index c64edbbb6c1399544009d2ec01155ce3fe519fa0..9e59945399634809ed9db1efc99011db27ef38d8 100644 --- a/src/share/classes/java/util/concurrent/RejectedExecutionException.java +++ b/src/share/classes/java/util/concurrent/RejectedExecutionException.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/RejectedExecutionHandler.java b/src/share/classes/java/util/concurrent/RejectedExecutionHandler.java index cbcc01c18676f65903c6798108fbc1450d5ef97d..c1e314c7c08178924b76459b62d51e6d39ae1d6e 100644 --- a/src/share/classes/java/util/concurrent/RejectedExecutionHandler.java +++ b/src/share/classes/java/util/concurrent/RejectedExecutionHandler.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/RunnableFuture.java b/src/share/classes/java/util/concurrent/RunnableFuture.java index 241695c25be63d853566232217fc47710ab5ffe6..0af4ea96e21fb31f39f92fe68a8d610a64b727e2 100644 --- a/src/share/classes/java/util/concurrent/RunnableFuture.java +++ b/src/share/classes/java/util/concurrent/RunnableFuture.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/RunnableScheduledFuture.java b/src/share/classes/java/util/concurrent/RunnableScheduledFuture.java index 90758ae404b39349152ec58f2ca9d7c23d52c62b..1049ab9a3a1c022794adb86105cb5054da9edbc1 100644 --- a/src/share/classes/java/util/concurrent/RunnableScheduledFuture.java +++ b/src/share/classes/java/util/concurrent/RunnableScheduledFuture.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ScheduledExecutorService.java b/src/share/classes/java/util/concurrent/ScheduledExecutorService.java index e9d5d150afc99067c534d7405449507e6f8aa9f1..187d6a193d11cfb2ddb6bf5ddebfdc12ccfc2997 100644 --- a/src/share/classes/java/util/concurrent/ScheduledExecutorService.java +++ b/src/share/classes/java/util/concurrent/ScheduledExecutorService.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ScheduledFuture.java b/src/share/classes/java/util/concurrent/ScheduledFuture.java index e21eff6b8cfad6b9930fc3ee82ba6a34502a7bd1..1c1efa440cf06930bd6f2bacf1b9ed6d3317d5de 100644 --- a/src/share/classes/java/util/concurrent/ScheduledFuture.java +++ b/src/share/classes/java/util/concurrent/ScheduledFuture.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java b/src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java index f1731420897b2ed7788ca340c28cc948799f6f7a..6be307406c824fa421bd4f20232e598885f40b89 100644 --- a/src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java +++ b/src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/Semaphore.java b/src/share/classes/java/util/concurrent/Semaphore.java index 56c233fb3a7ba7ede0fe838fa78f8a5c7d495185..c144b492dbfce2e9efbca8aaccb67b9b8652a3a8 100644 --- a/src/share/classes/java/util/concurrent/Semaphore.java +++ b/src/share/classes/java/util/concurrent/Semaphore.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/SynchronousQueue.java b/src/share/classes/java/util/concurrent/SynchronousQueue.java index d02f56d9b72d8e7985a63cbc31831fdeb0310082..a1fa8e21af63d21a4382f1dacbe28906e33d0768 100644 --- a/src/share/classes/java/util/concurrent/SynchronousQueue.java +++ b/src/share/classes/java/util/concurrent/SynchronousQueue.java @@ -31,7 +31,7 @@ * Written by Doug Lea, Bill Scherer, and Michael Scott with * assistance from members of JCP JSR-166 Expert Group and released to * the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ThreadFactory.java b/src/share/classes/java/util/concurrent/ThreadFactory.java index b53f6e693d05488a89742711fc3b1996d90f1f9e..9274abc5f8dea852043d097beb3ba7ed662c3ca4 100644 --- a/src/share/classes/java/util/concurrent/ThreadFactory.java +++ b/src/share/classes/java/util/concurrent/ThreadFactory.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ThreadLocalRandom.java b/src/share/classes/java/util/concurrent/ThreadLocalRandom.java index 69f5fbcb40481b1350ba7921f8c7a9f7e260096e..aa8210bce4acf36b360761bc6dea92f78085be5e 100644 --- a/src/share/classes/java/util/concurrent/ThreadLocalRandom.java +++ b/src/share/classes/java/util/concurrent/ThreadLocalRandom.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java b/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java index 841a5804430080b6a16feb4643af297d08d34780..c9891211318ee1ab80621142800ecb621d3e11e6 100644 --- a/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java +++ b/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/TimeUnit.java b/src/share/classes/java/util/concurrent/TimeUnit.java index 236e553bc6c6b773971bcee742822c0645200476..f756759e8fd7c329914ff68798c591ab74a65881 100644 --- a/src/share/classes/java/util/concurrent/TimeUnit.java +++ b/src/share/classes/java/util/concurrent/TimeUnit.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/TimeoutException.java b/src/share/classes/java/util/concurrent/TimeoutException.java index 1df0deed3f038cd014c73d8e992c6731a6e4441c..ed08990c7d6316d621db4ef36c1cea2684ba086c 100644 --- a/src/share/classes/java/util/concurrent/TimeoutException.java +++ b/src/share/classes/java/util/concurrent/TimeoutException.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/TransferQueue.java b/src/share/classes/java/util/concurrent/TransferQueue.java index 0eaf1d20fee15fb7eb2fa234d301c91081c9263c..f8549dcd2f31c08a2ae5807edb78ae2d0ed1ec2c 100644 --- a/src/share/classes/java/util/concurrent/TransferQueue.java +++ b/src/share/classes/java/util/concurrent/TransferQueue.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicBoolean.java b/src/share/classes/java/util/concurrent/atomic/AtomicBoolean.java index cc00e784501c9b91cd865e512f9fb34a9e8245fb..c21df7bab8cd34276e6888374f40e4b4cdb94f38 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicBoolean.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicBoolean.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicInteger.java b/src/share/classes/java/util/concurrent/atomic/AtomicInteger.java index f607aac3fa4a39e6415872ac7629365c8608fbfc..0d8a7a1ae79599dd89d4598cafe3bca1af9af436 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicInteger.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicInteger.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java b/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java index 54b9488ab51210cdb920808e2641e3be5d34e01c..462270198563ebf96583c1720db92ddcbb997ca6 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java b/src/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java index 7ea3a8012d5f40712be2a7804adecdebd6ac01b5..aed5d1fc170e0a2e0bc9abe11531f82d6a4be2bc 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicLong.java b/src/share/classes/java/util/concurrent/atomic/AtomicLong.java index 97b8902726d23ae015f71a6660b94a8908338a97..4fc4c904bf5054c7a3c07acbcf75a88a46afac56 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicLong.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicLong.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java b/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java index f1873c54d7a4d27ee91c42db91d1e1ca0a34c5af..ece5b6ad9b0d0c0c2afbf3a15d8d6ef257d2d465 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java b/src/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java index 22a1d5eecbea767bc38f5891d91a6e8b23c9bef4..fa0a857152de3bbd41b3c17c3b9f7a873cb045df 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicMarkableReference.java b/src/share/classes/java/util/concurrent/atomic/AtomicMarkableReference.java index e898758f52285a7a775b08d16905e1737db35e36..b1dc71dfdce8aa5936d856f00427d65b5ce09ed6 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicMarkableReference.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicMarkableReference.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicReference.java b/src/share/classes/java/util/concurrent/atomic/AtomicReference.java index e719a37b3b285dc7914bde1d61a81ac51554e12b..3178ca1579f1d5f738c4a65f8f2e1ad26181f4d3 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicReference.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicReference.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java b/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java index b5fd65ab48fd1c7e0352915eb16029ea55a081cc..b173f26808bdb2a92bf151ef267c5d39baf1d876 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java b/src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java index c58fd30139f487bb7392a11d8ad04a913e6cc37a..7b72f0ff4945a1ae7fcef36efc62c56850f26231 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicStampedReference.java b/src/share/classes/java/util/concurrent/atomic/AtomicStampedReference.java index 412eca36eb3e5993c6442314cd54a84aa01d4d75..90aa3a0c53851cc8d7b33f52f7569e9079599aa4 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicStampedReference.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicStampedReference.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.atomic; diff --git a/src/share/classes/java/util/concurrent/atomic/package-info.java b/src/share/classes/java/util/concurrent/atomic/package-info.java index fe866e0864872ca4148ec52182d1048247836f08..7c0ba5e86182d166adf33fcb4db8307baf74f1af 100644 --- a/src/share/classes/java/util/concurrent/atomic/package-info.java +++ b/src/share/classes/java/util/concurrent/atomic/package-info.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /** @@ -80,9 +80,8 @@ * </pre> * * <p>The memory effects for accesses and updates of atomics generally - * follow the rules for volatiles, as stated in - * <a href="http://java.sun.com/docs/books/jls/"> The Java Language - * Specification, Third Edition (17.4 Memory Model)</a>: + * follow the rules for volatiles, as stated in section 17.4 of + * <cite>The Java™ Language Specification</cite>. * * <ul> * diff --git a/src/share/classes/java/util/concurrent/locks/AbstractOwnableSynchronizer.java b/src/share/classes/java/util/concurrent/locks/AbstractOwnableSynchronizer.java index 811cb814a98247c11fbfb052ca1debe6ef53c209..39a51e5a90c6a9b9f4d55bd3a25a6e7e597b4a86 100644 --- a/src/share/classes/java/util/concurrent/locks/AbstractOwnableSynchronizer.java +++ b/src/share/classes/java/util/concurrent/locks/AbstractOwnableSynchronizer.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.locks; diff --git a/src/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java b/src/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java index 605276e27b517b60c40b4dd3b0e0fed03653d14c..15490bd36af99887ea6ef0a333bde999befe8c1c 100644 --- a/src/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java +++ b/src/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.locks; diff --git a/src/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java b/src/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java index 8075aea7dea47df3fa62fd0b2e2d95ea76dc6a6c..0da0eaeca707771419737723f6cc6aa4f6b4adc7 100644 --- a/src/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java +++ b/src/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.locks; diff --git a/src/share/classes/java/util/concurrent/locks/Condition.java b/src/share/classes/java/util/concurrent/locks/Condition.java index f3fb607a47e566245a6db4e28203826d92aaa99f..8bdbedea39856a2fe8c0ff21b88840205b4732c4 100644 --- a/src/share/classes/java/util/concurrent/locks/Condition.java +++ b/src/share/classes/java/util/concurrent/locks/Condition.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.locks; diff --git a/src/share/classes/java/util/concurrent/locks/Lock.java b/src/share/classes/java/util/concurrent/locks/Lock.java index a6b0caf129511770ecb2ef4d49f43404b6c15f98..8ed346c2914d7a59167bca67d3cc349ee4e8d083 100644 --- a/src/share/classes/java/util/concurrent/locks/Lock.java +++ b/src/share/classes/java/util/concurrent/locks/Lock.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.locks; @@ -120,8 +120,8 @@ import java.util.concurrent.TimeUnit; * * <p>All {@code Lock} implementations <em>must</em> enforce the same * memory synchronization semantics as provided by the built-in monitor - * lock, as described in <a href="http://java.sun.com/docs/books/jls/"> - * The Java Language Specification, Third Edition (17.4 Memory Model)</a>: + * lock, as described in section 17.4 of + * <cite>The Java™ Language Specification</cite>: * <ul> * <li>A successful {@code lock} operation has the same memory * synchronization effects as a successful <em>Lock</em> action. diff --git a/src/share/classes/java/util/concurrent/locks/LockSupport.java b/src/share/classes/java/util/concurrent/locks/LockSupport.java index 9c966406b313d0ab39c0c60cc83a127bceb34a9f..f0cd3bc04568549e41aa99d43e61954b922c1d11 100644 --- a/src/share/classes/java/util/concurrent/locks/LockSupport.java +++ b/src/share/classes/java/util/concurrent/locks/LockSupport.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.locks; diff --git a/src/share/classes/java/util/concurrent/locks/ReadWriteLock.java b/src/share/classes/java/util/concurrent/locks/ReadWriteLock.java index 8640a31ff162355740bc61fb8cd1d94c4d0d9f25..fd6632b0b5733e9cfcfce6ab0569d3f98d96c2d9 100644 --- a/src/share/classes/java/util/concurrent/locks/ReadWriteLock.java +++ b/src/share/classes/java/util/concurrent/locks/ReadWriteLock.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.locks; diff --git a/src/share/classes/java/util/concurrent/locks/ReentrantLock.java b/src/share/classes/java/util/concurrent/locks/ReentrantLock.java index 4cbc562b82015113a30083570f71c442ea966e44..9952c8c93b810793f46ae58585bdd8e213657936 100644 --- a/src/share/classes/java/util/concurrent/locks/ReentrantLock.java +++ b/src/share/classes/java/util/concurrent/locks/ReentrantLock.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.locks; diff --git a/src/share/classes/java/util/concurrent/locks/ReentrantReadWriteLock.java b/src/share/classes/java/util/concurrent/locks/ReentrantReadWriteLock.java index 39b9c0e894dfaf8080e20ba2d9a2cb8b2da14035..fbafd3c5fdf39f9e5862e5d1051dc7a4ddbae09c 100644 --- a/src/share/classes/java/util/concurrent/locks/ReentrantReadWriteLock.java +++ b/src/share/classes/java/util/concurrent/locks/ReentrantReadWriteLock.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent.locks; diff --git a/src/share/classes/java/util/concurrent/locks/package-info.java b/src/share/classes/java/util/concurrent/locks/package-info.java index 5cbb4a9f836bdc1614a19d25d61ff0bd355b7244..97dfcc9075b826e5be42adc41537088690b0091e 100644 --- a/src/share/classes/java/util/concurrent/locks/package-info.java +++ b/src/share/classes/java/util/concurrent/locks/package-info.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /** diff --git a/src/share/classes/java/util/concurrent/package-info.java b/src/share/classes/java/util/concurrent/package-info.java index 849ef4695db31ea897181d8aae78527576bbd741..8116e82cffa3d12b4bb4d8e7c85b9e0cb9365d44 100644 --- a/src/share/classes/java/util/concurrent/package-info.java +++ b/src/share/classes/java/util/concurrent/package-info.java @@ -30,7 +30,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /** @@ -218,8 +218,9 @@ * * <h2><a name="MemoryVisibility">Memory Consistency Properties</a></h2> * - * <a href="http://java.sun.com/docs/books/jls/third_edition/html/memory.html"> - * Chapter 17 of the Java Language Specification</a> defines the + * Chapter 17 of + * <cite>The Java™ Language Specification</cite> + * defines the * <i>happens-before</i> relation on memory operations such as reads and * writes of shared variables. The results of a write by one thread are * guaranteed to be visible to a read by another thread only if the write diff --git a/src/share/classes/java/util/jar/JarFile.java b/src/share/classes/java/util/jar/JarFile.java index 79d0f84b7e17cbb9f861576d13f77b23ac12125d..20d0363f57acc726605d6163e04b932d2a1bbad8 100644 --- a/src/share/classes/java/util/jar/JarFile.java +++ b/src/share/classes/java/util/jar/JarFile.java @@ -37,6 +37,7 @@ import java.security.CodeSource; import sun.security.action.GetPropertyAction; import sun.security.util.ManifestEntryVerifier; import sun.misc.SharedSecrets; +import sun.security.util.SignatureFileVerifier; /** * The <code>JarFile</code> class is used to read the contents of a jar file @@ -178,7 +179,7 @@ class JarFile extends ZipFile { byte[] b = getBytes(manEntry); man = new Manifest(new ByteArrayInputStream(b)); if (!jvInitialized) { - jv = new JarVerifier(b); + jv = new JarVerifier(b, man); } } else { man = new Manifest(super.getInputStream(manEntry)); @@ -297,10 +298,7 @@ class JarFile extends ZipFile { if (names != null) { for (int i = 0; i < names.length; i++) { String name = names[i].toUpperCase(Locale.ENGLISH); - if (name.endsWith(".DSA") || - name.endsWith(".RSA") || - name.endsWith(".EC") || - name.endsWith(".SF")) { + if (SignatureFileVerifier.isBlockOrSF(name)) { // Assume since we found a signature-related file // that the jar is signed and that we therefore // need a JarVerifier and Manifest @@ -329,17 +327,17 @@ class JarFile extends ZipFile { if (names != null) { for (int i = 0; i < names.length; i++) { JarEntry e = getJarEntry(names[i]); - if (!e.isDirectory()) { + if (!e.isDirectory() && + SignatureFileVerifier.isBlock(names[i])) { if (mev == null) { mev = new ManifestEntryVerifier (getManifestFromReference()); } - byte[] b = getBytes(e); - if (b != null && b.length > 0) { - jv.beginEntry(e, mev); - jv.update(b.length, b, 0, b.length, mev); - jv.update(-1, null, 0, 0, mev); - } + String key = names[i].substring( + 0, names[i].lastIndexOf(".")); + jv.verifyBlock(names[i], + getBytes(e), + super.getInputStream(getJarEntry(key + ".SF"))); } } } diff --git a/src/share/classes/java/util/jar/JarInputStream.java b/src/share/classes/java/util/jar/JarInputStream.java index 3c4553304b237c202713fd1a7cc57f18c2813eb8..b84219ea87a347d372635e8003fe0f51aa748067 100644 --- a/src/share/classes/java/util/jar/JarInputStream.java +++ b/src/share/classes/java/util/jar/JarInputStream.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -95,7 +95,7 @@ class JarInputStream extends ZipInputStream { man.read(new ByteArrayInputStream(bytes)); closeEntry(); if (doVerify) { - jv = new JarVerifier(bytes); + jv = new JarVerifier(bytes, man); mev = new ManifestEntryVerifier(man); } return (JarEntry)super.getNextEntry(); diff --git a/src/share/classes/java/util/jar/JarVerifier.java b/src/share/classes/java/util/jar/JarVerifier.java index 4f84ac28effd82e57f9cbcacf4dc917bb3261ea1..8c69ff5c583ee29a08ece117cace47b7d8b840b2 100644 --- a/src/share/classes/java/util/jar/JarVerifier.java +++ b/src/share/classes/java/util/jar/JarVerifier.java @@ -48,35 +48,18 @@ class JarVerifier { /* a table mapping names to code signers, for jar entries that have had their actual hashes verified */ - private Hashtable verifiedSigners; + private Map verifiedSigners; /* a table mapping names to code signers, for jar entries that have passed the .SF/.DSA/.EC -> MANIFEST check */ - private Hashtable sigFileSigners; - - /* a hash table to hold .SF bytes */ - private Hashtable sigFileData; - - /** "queue" of pending PKCS7 blocks that we couldn't parse - * until we parsed the .SF file */ - private ArrayList pendingBlocks; + private Map sigFileSigners; /* cache of CodeSigner objects */ private ArrayList signerCache; - /* Are we parsing a block? */ - private boolean parsingBlockOrSF = false; - - /* Are we done parsing META-INF entries? */ - private boolean parsingMeta = true; - /* Are there are files to verify? */ private boolean anyToVerify = true; - /* The output stream to use when keeping track of files we are interested - in */ - private ByteArrayOutputStream baos; - /** The ManifestDigester object */ private volatile ManifestDigester manDig; @@ -92,20 +75,20 @@ class JarVerifier { /** collect -DIGEST-MANIFEST values for blacklist */ private List manifestDigests; - public JarVerifier(byte rawBytes[]) { + /** The manifest object */ + Manifest man = null; + + public JarVerifier(byte rawBytes[], Manifest man) { + this.man = man; manifestRawBytes = rawBytes; - sigFileSigners = new Hashtable(); - verifiedSigners = new Hashtable(); - sigFileData = new Hashtable(11); - pendingBlocks = new ArrayList(); - baos = new ByteArrayOutputStream(); + sigFileSigners = new HashMap(); + verifiedSigners = new HashMap(); manifestDigests = new ArrayList(); } /** - * This method scans to see which entry we're parsing and - * keeps various state information depending on what type of - * file is being parsed. + * This method scans to see which entry we're parsing and keeps + * various state information depending on the file being parsed. */ public void beginEntry(JarEntry je, ManifestEntryVerifier mev) throws IOException @@ -129,30 +112,6 @@ class JarVerifier { * b. digest mismatch between the actual jar entry and the manifest */ - if (parsingMeta) { - String uname = name.toUpperCase(Locale.ENGLISH); - if ((uname.startsWith("META-INF/") || - uname.startsWith("/META-INF/"))) { - - if (je.isDirectory()) { - mev.setEntry(null, je); - return; - } - - if (SignatureFileVerifier.isBlockOrSF(uname)) { - /* We parse only DSA, RSA or EC PKCS7 blocks. */ - parsingBlockOrSF = true; - baos.reset(); - mev.setEntry(null, je); - } - return; - } - } - - if (parsingMeta) { - doneWithMeta(); - } - if (je.isDirectory()) { mev.setEntry(null, je); return; @@ -188,11 +147,7 @@ class JarVerifier { throws IOException { if (b != -1) { - if (parsingBlockOrSF) { - baos.write(b); - } else { - mev.update((byte)b); - } + mev.update((byte)b); } else { processEntry(mev); } @@ -207,11 +162,7 @@ class JarVerifier { throws IOException { if (n != -1) { - if (parsingBlockOrSF) { - baos.write(b, off, n); - } else { - mev.update(b, off, n); - } + mev.update(b, off, n); } else { processEntry(mev); } @@ -223,101 +174,10 @@ class JarVerifier { private void processEntry(ManifestEntryVerifier mev) throws IOException { - if (!parsingBlockOrSF) { - JarEntry je = mev.getEntry(); - if ((je != null) && (je.signers == null)) { - je.signers = mev.verify(verifiedSigners, sigFileSigners); - je.certs = mapSignersToCertArray(je.signers); - } - } else { - - try { - parsingBlockOrSF = false; - - if (debug != null) { - debug.println("processEntry: processing block"); - } - - String uname = mev.getEntry().getName() - .toUpperCase(Locale.ENGLISH); - - if (uname.endsWith(".SF")) { - String key = uname.substring(0, uname.length()-3); - byte bytes[] = baos.toByteArray(); - // add to sigFileData in case future blocks need it - sigFileData.put(key, bytes); - // check pending blocks, we can now process - // anyone waiting for this .SF file - Iterator it = pendingBlocks.iterator(); - while (it.hasNext()) { - SignatureFileVerifier sfv = - (SignatureFileVerifier) it.next(); - if (sfv.needSignatureFile(key)) { - if (debug != null) { - debug.println( - "processEntry: processing pending block"); - } - - sfv.setSignatureFile(bytes); - sfv.process(sigFileSigners, manifestDigests); - } - } - return; - } - - // now we are parsing a signature block file - - String key = uname.substring(0, uname.lastIndexOf(".")); - - if (signerCache == null) - signerCache = new ArrayList(); - - if (manDig == null) { - synchronized(manifestRawBytes) { - if (manDig == null) { - manDig = new ManifestDigester(manifestRawBytes); - manifestRawBytes = null; - } - } - } - - SignatureFileVerifier sfv = - new SignatureFileVerifier(signerCache, - manDig, uname, baos.toByteArray()); - - if (sfv.needSignatureFileBytes()) { - // see if we have already parsed an external .SF file - byte[] bytes = (byte[]) sigFileData.get(key); - - if (bytes == null) { - // put this block on queue for later processing - // since we don't have the .SF bytes yet - // (uname, block); - if (debug != null) { - debug.println("adding pending block"); - } - pendingBlocks.add(sfv); - return; - } else { - sfv.setSignatureFile(bytes); - } - } - sfv.process(sigFileSigners, manifestDigests); - - } catch (IOException ioe) { - // e.g. sun.security.pkcs.ParsingException - if (debug != null) debug.println("processEntry caught: "+ioe); - // ignore and treat as unsigned - } catch (SignatureException se) { - if (debug != null) debug.println("processEntry caught: "+se); - // ignore and treat as unsigned - } catch (NoSuchAlgorithmException nsae) { - if (debug != null) debug.println("processEntry caught: "+nsae); - // ignore and treat as unsigned - } catch (CertificateException ce) { - if (debug != null) debug.println("processEntry caught: "+ce); - // ignore and treat as unsigned - } + JarEntry je = mev.getEntry(); + if ((je != null) && (je.signers == null)) { + je.signers = mev.verify(verifiedSigners, sigFileSigners); + je.certs = mapSignersToCertArray(je.signers); } } @@ -354,15 +214,15 @@ class JarVerifier { * Force a read of the entry data to generate the * verification hash. */ - try { - InputStream s = jar.getInputStream(entry); + try (InputStream s = jar.getInputStream(entry)) { byte[] buffer = new byte[1024]; int n = buffer.length; while (n != -1) { n = s.read(buffer, 0, buffer.length); } - s.close(); } catch (IOException e) { + // Ignore. When an exception is thrown, code signer + // will not be assigned. } } return getCodeSigners(name); @@ -408,11 +268,7 @@ class JarVerifier { */ void doneWithMeta() { - parsingMeta = false; anyToVerify = !sigFileSigners.isEmpty(); - baos = null; - sigFileData = null; - pendingBlocks = null; signerCache = null; manDig = null; // MANIFEST.MF is always treated as signed and verified, @@ -423,6 +279,41 @@ class JarVerifier { } } + /** + * Verifies a PKCS7 SignedData block + * @param key name of block + * @param block the pkcs7 file + * @param ins the clear data + */ + void verifyBlock(String key, byte[] block, InputStream ins) { + try { + if (signerCache == null) + signerCache = new ArrayList(); + + if (manDig == null) { + synchronized(manifestRawBytes) { + if (manDig == null) { + manDig = new ManifestDigester(manifestRawBytes); + manifestRawBytes = null; + } + } + } + SignatureFileVerifier sfv = + new SignatureFileVerifier(signerCache, man, + manDig, key, block); + + if (sfv.needSignatureFile()) { + // see if we have already parsed an external .SF file + sfv.setSignatureFile(ins); + } + sfv.process(sigFileSigners, manifestDigests); + } catch (Exception e) { + if (debug != null) { + e.printStackTrace(); + } + } + } + static class VerifierStream extends java.io.InputStream { private InputStream is; @@ -553,10 +444,7 @@ class JarVerifier { * but this handles a CodeSource of any type, just in case. */ CodeSource[] sources = mapSignersToCodeSources(cs.getLocation(), getJarCodeSigners(), true); - List sourceList = new ArrayList(); - for (int i = 0; i < sources.length; i++) { - sourceList.add(sources[i]); - } + List sourceList = Arrays.asList(sources); int j = sourceList.indexOf(cs); if (j != -1) { CodeSigner[] match; diff --git a/src/share/classes/java/util/jar/Pack200.java b/src/share/classes/java/util/jar/Pack200.java index feefc2ba2fa230529acf30970ddc338a6e451011..bb7cc2b47fef6551ad7f9121bfe600fe2063c863 100644 --- a/src/share/classes/java/util/jar/Pack200.java +++ b/src/share/classes/java/util/jar/Pack200.java @@ -181,8 +181,8 @@ public abstract class Pack200 { * The class files will not contain identical bytes, since the unpacker * is free to change minor class file features such as constant pool order. * However, the class files will be semantically identical, - * as specified in the Java Virtual Machine Specification - * <a href="http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html">http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html</a>. + * as specified in + * <cite>The Java™ Virtual Machine Specification</cite>. * <p> * By default, the packer does not change the order of JAR elements. * Also, the modification time and deflation hint of each diff --git a/src/share/classes/java/util/logging/FileHandler.java b/src/share/classes/java/util/logging/FileHandler.java index 4b2989a830a9c22b39aa3121171cf8667cd082c9..fb3b67c4d923e53ad661b1b905881810a903e799 100644 --- a/src/share/classes/java/util/logging/FileHandler.java +++ b/src/share/classes/java/util/logging/FileHandler.java @@ -409,22 +409,25 @@ public class FileHandler extends StreamHandler { // Try the next file. continue; } + boolean available; try { - FileLock fl = fc.tryLock(); - if (fl == null) { - // We failed to get the lock. Try next file. - continue; - } + available = fc.tryLock() != null; // We got the lock OK. } catch (IOException ix) { // We got an IOException while trying to get the lock. // This normally indicates that locking is not supported // on the target directory. We have to proceed without // getting a lock. Drop through. + available = true; + } + if (available) { + // We got the lock. Remember it. + locks.put(lockFileName, lockFileName); + break; } - // We got the lock. Remember it. - locks.put(lockFileName, lockFileName); - break; + + // We failed to get the lock. Try next file. + fc.close(); } } diff --git a/src/share/classes/java/util/regex/Pattern.java b/src/share/classes/java/util/regex/Pattern.java index 2648752da21cc17c5d821ac26f7e19401d6d9e4c..332590a00e41fffb5038ae073b555c56a1482eb8 100644 --- a/src/share/classes/java/util/regex/Pattern.java +++ b/src/share/classes/java/util/regex/Pattern.java @@ -369,13 +369,10 @@ import java.util.Arrays; * part of an unescaped construct. * * <p> Backslashes within string literals in Java source code are interpreted - * as required by the <a - * href="http://java.sun.com/docs/books/jls">Java Language - * Specification</a> as either <a - * href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#100850">Unicode - * escapes</a> or other <a - * href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#101089">character - * escapes</a>. It is therefore necessary to double backslashes in string + * as required by + * <cite>The Java™ Language Specification</cite> + * as either Unicode escapes (section 3.3) or other character escapes (section 3.10.6) + * It is therefore necessary to double backslashes in string * literals that represent regular expressions to protect them from * interpretation by the Java bytecode compiler. The string literal * <tt>"\b"</tt>, for example, matches a single backspace character when @@ -525,9 +522,9 @@ import java.util.Arrays; * Canonical Equivalents. * * <p> Unicode escape sequences such as <tt>\u2014</tt> in Java source code - * are processed as described in <a - * href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#100850">\u00A73.3</a> - * of the Java Language Specification. Such escape sequences are also + * are processed as described in section 3.3 of + * <cite>The Java™ Language Specification</cite>. + * Such escape sequences are also * implemented directly by the regular-expression parser so that Unicode * escapes can be used in expressions that are read from files or from the * keyboard. Thus the strings <tt>"\u2014"</tt> and <tt>"\\u2014"</tt>, diff --git a/src/share/classes/java/util/zip/ZipFile.java b/src/share/classes/java/util/zip/ZipFile.java index 914a7ce73aae0a48752f4c06d388c894dbdc4488..9cfbe826629542722cd31d383699dd9f1d0c0e11 100644 --- a/src/share/classes/java/util/zip/ZipFile.java +++ b/src/share/classes/java/util/zip/ZipFile.java @@ -31,11 +31,13 @@ import java.io.IOException; import java.io.EOFException; import java.io.File; import java.nio.charset.Charset; -import java.util.Vector; +import java.util.ArrayDeque; +import java.util.Deque; import java.util.Enumeration; -import java.util.Set; -import java.util.HashSet; +import java.util.HashMap; +import java.util.Map; import java.util.NoSuchElementException; +import java.util.WeakHashMap; import java.security.AccessController; import sun.security.action.GetPropertyAction; import static java.util.zip.ZipConstants64.*; @@ -54,7 +56,7 @@ class ZipFile implements ZipConstants, Closeable { private long jzfile; // address of jzfile data private String name; // zip file name private int total; // total number of entries - private boolean closeRequested; + private volatile boolean closeRequested = false; private static final int STORED = ZipEntry.STORED; private static final int DEFLATED = ZipEntry.DEFLATED; @@ -314,8 +316,9 @@ class ZipFile implements ZipConstants, Closeable { // freeEntry releases the C jzentry struct. private static native void freeEntry(long jzfile, long jzentry); - // the outstanding inputstreams that need to be closed. - private Set<InputStream> streams = new HashSet<>(); + // the outstanding inputstreams that need to be closed, + // mapped to the inflater objects they use. + private final Map<InputStream, Inflater> streams = new WeakHashMap<>(); /** * Returns an input stream for reading the contents of the specified @@ -351,51 +354,21 @@ class ZipFile implements ZipConstants, Closeable { switch (getEntryMethod(jzentry)) { case STORED: - streams.add(in); + synchronized (streams) { + streams.put(in, null); + } return in; case DEFLATED: - final ZipFileInputStream zfin = in; // MORE: Compute good size for inflater stream: long size = getEntrySize(jzentry) + 2; // Inflater likes a bit of slack if (size > 65536) size = 8192; if (size <= 0) size = 4096; - InputStream is = new InflaterInputStream(zfin, getInflater(), (int)size) { - private boolean isClosed = false; - - public void close() throws IOException { - if (!isClosed) { - super.close(); - releaseInflater(inf); - isClosed = true; - } - } - // Override fill() method to provide an extra "dummy" byte - // at the end of the input stream. This is required when - // using the "nowrap" Inflater option. - protected void fill() throws IOException { - if (eof) { - throw new EOFException( - "Unexpected end of ZLIB input stream"); - } - len = this.in.read(buf, 0, buf.length); - if (len == -1) { - buf[0] = 0; - len = 1; - eof = true; - } - inf.setInput(buf, 0, len); - } - private boolean eof; - - public int available() throws IOException { - if (isClosed) - return 0; - long avail = zfin.size() - inf.getBytesWritten(); - return avail > (long) Integer.MAX_VALUE ? - Integer.MAX_VALUE : (int) avail; - } - }; - streams.add(is); + Inflater inf = getInflater(); + InputStream is = + new ZipFileInflaterInputStream(in, inf, (int)size); + synchronized (streams) { + streams.put(is, inf); + } return is; default: throw new ZipException("invalid compression method"); @@ -403,36 +376,91 @@ class ZipFile implements ZipConstants, Closeable { } } + private class ZipFileInflaterInputStream extends InflaterInputStream { + private volatile boolean closeRequested = false; + private boolean eof = false; + private final ZipFileInputStream zfin; + + ZipFileInflaterInputStream(ZipFileInputStream zfin, Inflater inf, + int size) { + super(zfin, inf, size); + this.zfin = zfin; + } + + public void close() throws IOException { + if (closeRequested) + return; + closeRequested = true; + + super.close(); + Inflater inf; + synchronized (streams) { + inf = streams.remove(this); + } + if (inf != null) { + releaseInflater(inf); + } + } + + // Override fill() method to provide an extra "dummy" byte + // at the end of the input stream. This is required when + // using the "nowrap" Inflater option. + protected void fill() throws IOException { + if (eof) { + throw new EOFException("Unexpected end of ZLIB input stream"); + } + len = in.read(buf, 0, buf.length); + if (len == -1) { + buf[0] = 0; + len = 1; + eof = true; + } + inf.setInput(buf, 0, len); + } + + public int available() throws IOException { + if (closeRequested) + return 0; + long avail = zfin.size() - inf.getBytesWritten(); + return (avail > (long) Integer.MAX_VALUE ? + Integer.MAX_VALUE : (int) avail); + } + + protected void finalize() throws Throwable { + close(); + } + } + /* * Gets an inflater from the list of available inflaters or allocates * a new one. */ private Inflater getInflater() { - synchronized (inflaters) { - int size = inflaters.size(); - if (size > 0) { - Inflater inf = (Inflater)inflaters.remove(size - 1); - return inf; - } else { - return new Inflater(true); + Inflater inf; + synchronized (inflaterCache) { + while (null != (inf = inflaterCache.poll())) { + if (false == inf.ended()) { + return inf; + } } } + return new Inflater(true); } /* * Releases the specified inflater to the list of available inflaters. */ private void releaseInflater(Inflater inf) { - synchronized (inflaters) { - if (inf.ended()) - return; + if (false == inf.ended()) { inf.reset(); - inflaters.add(inf); + synchronized (inflaterCache) { + inflaterCache.add(inf); + } } } // List of available Inflater objects for decompression - private Vector inflaters = new Vector(); + private Deque<Inflater> inflaterCache = new ArrayDeque<>(); /** * Returns the path name of the ZIP file. @@ -540,14 +568,32 @@ class ZipFile implements ZipConstants, Closeable { * @throws IOException if an I/O error has occurred */ public void close() throws IOException { + if (closeRequested) + return; + closeRequested = true; + synchronized (this) { - closeRequested = true; + // Close streams, release their inflaters + synchronized (streams) { + if (false == streams.isEmpty()) { + Map<InputStream, Inflater> copy = new HashMap<>(streams); + streams.clear(); + for (Map.Entry<InputStream, Inflater> e : copy.entrySet()) { + e.getKey().close(); + Inflater inf = e.getValue(); + if (inf != null) { + inf.end(); + } + } + } + } - if (streams.size() !=0) { - Set<InputStream> copy = streams; - streams = new HashSet<>(); - for (InputStream is: copy) - is.close(); + // Release cached inflaters + Inflater inf; + synchronized (inflaterCache) { + while (null != (inf = inflaterCache.poll())) { + inf.end(); + } } if (jzfile != 0) { @@ -556,23 +602,13 @@ class ZipFile implements ZipConstants, Closeable { jzfile = 0; close(zf); - - // Release inflaters - synchronized (inflaters) { - int size = inflaters.size(); - for (int i = 0; i < size; i++) { - Inflater inf = (Inflater)inflaters.get(i); - inf.end(); - } - } } } } - /** - * Ensures that the <code>close</code> method of this ZIP file is - * called when there are no more references to it. + * Ensures that the system resources held by this ZipFile object are + * released when there are no more references to it. * * <p> * Since the time when GC would invoke this method is undetermined, @@ -611,6 +647,7 @@ class ZipFile implements ZipConstants, Closeable { * (possibly compressed) zip file entry. */ private class ZipFileInputStream extends InputStream { + private volatile boolean closeRequested = false; protected long jzentry; // address of jzentry data private long pos; // current position within entry data protected long rem; // number of remaining bytes within entry @@ -678,15 +715,25 @@ class ZipFile implements ZipConstants, Closeable { } public void close() { + if (closeRequested) + return; + closeRequested = true; + rem = 0; synchronized (ZipFile.this) { if (jzentry != 0 && ZipFile.this.jzfile != 0) { freeEntry(ZipFile.this.jzfile, jzentry); jzentry = 0; } + } + synchronized (streams) { streams.remove(this); } } + + protected void finalize() { + close(); + } } diff --git a/src/share/native/sun/font/layout/Features.h b/src/share/classes/javax/crypto/AEADBadTagException.java similarity index 60% rename from src/share/native/sun/font/layout/Features.h rename to src/share/classes/javax/crypto/AEADBadTagException.java index 13ab88aac34dd5e8d22eee81fa7080455f051f59..8587fcf3ce66b4212123ffef6c66eab27e04efaa 100644 --- a/src/share/native/sun/font/layout/Features.h +++ b/src/share/classes/javax/crypto/AEADBadTagException.java @@ -1,4 +1,5 @@ /* + * 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 @@ -20,50 +21,35 @@ * 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. 1998-2004 - All Rights Reserved - * */ -#ifndef __FEATURES_H -#define __FEATURES_H +package javax.crypto; /** - * \file - * \internal + * This exception is thrown when a {@link Cipher} operating in + * an AEAD mode (such as GCM/CCM) is unable to verify the supplied + * authentication tag. + * + * @since 1.7 */ - -#include "LETypes.h" -#include "OpenTypeTables.h" - -U_NAMESPACE_BEGIN - -struct FeatureRecord -{ - ATag featureTag; - Offset featureTableOffset; -}; - -struct FeatureTable -{ - Offset featureParamsOffset; - le_uint16 lookupCount; - le_uint16 lookupListIndexArray[ANY_NUMBER]; -}; - -struct FeatureListTable -{ - le_uint16 featureCount; - FeatureRecord featureRecordArray[ANY_NUMBER]; - - const FeatureTable *getFeatureTable(le_uint16 featureIndex, LETag *featureTag) const; - - const FeatureTable *getFeatureTable(LETag featureTag) const; -}; - -U_NAMESPACE_END -#endif +public class AEADBadTagException extends BadPaddingException { + + private static final long serialVersionUID = -488059093241685509L; + + /** + * Constructs a AEADBadTagException with no detail message. + */ + public AEADBadTagException() { + super(); + } + + /** + * Constructs a AEADBadTagException with the specified + * detail message. + * + * @param msg the detail message. + */ + public AEADBadTagException(String msg) { + super(msg); + } +} diff --git a/src/share/classes/javax/crypto/Cipher.java b/src/share/classes/javax/crypto/Cipher.java index eecab565fd30052d74a3acd31fd0686b8ece89e5..bd17f023639ee69476da6e52bcf271bd8bdc31e8 100644 --- a/src/share/classes/javax/crypto/Cipher.java +++ b/src/share/classes/javax/crypto/Cipher.java @@ -88,8 +88,35 @@ import sun.security.jca.GetInstance.Instance; * example, the SunJCE provider uses a default of 64 bits for DES.) * Thus, block ciphers can be turned into byte-oriented stream ciphers by * using an 8 bit mode such as CFB8 or OFB8. + * <p> + * Modes such as Authenticated Encryption with Associated Data (AEAD) + * provide authenticity assurances for both confidential data and + * Additional Associated Data (AAD) that is not encrypted. (Please see + * <a href="http://www.ietf.org/rfc/rfc5116.txt"> RFC 5116 </a> for more + * information on AEAD and AEAD algorithms such as GCM/CCM.) Both + * confidential and AAD data can be used when calculating the + * authentication tag (similar to a {@link Mac}). This tag is appended + * to the ciphertext during encryption, and is verified on decryption. + * <p> + * AEAD modes such as GCM/CCM perform all AAD authenticity calculations + * before starting the ciphertext authenticity calculations. To avoid + * implementations having to internally buffer ciphertext, all AAD data + * must be supplied to GCM/CCM implementations (via the {@code + * updateAAD} methods) <b>before</b> the ciphertext is processed (via + * the {@code update} and {@code doFinal} methods). + * + * <pre> + * GCMParameterSpec s = new GCMParameterSpec(...); + * cipher.init(..., s); * - * <p> Every implementation of the Java platform is required to support + * // If the GCMParameterSpec is needed again + * cipher.getParameters().getParameterSpec(GCMParameterSpec.class)); + * + * cipher.updateAAD(...); // AAD + * cipher.update(...); // Multi-part update + * cipher.doFinal(...); // conclusion of operation + * </pre> + * Every implementation of the Java platform is required to support * the following standard <code>Cipher</code> transformations with the keysizes * in parentheses: * <ul> @@ -894,7 +921,7 @@ public class Cipher { * <code>inputLen</code> (in bytes). * * <p>This call takes into account any unprocessed (buffered) data from a - * previous <code>update</code> call, and padding. + * previous <code>update</code> call, padding, and AEAD tagging. * * <p>The actual output length of the next <code>update</code> or * <code>doFinal</code> call may be smaller than the length returned by @@ -1090,6 +1117,11 @@ public class Cipher { * {@link #getParameters() getParameters} or * {@link #getIV() getIV} (if the parameter is an IV). * + * <p>If this cipher requires algorithm parameters that cannot be + * derived from the input parameters, and there are no reasonable + * provider-specific default values, initialization will + * necessarily fail. + * * <p>If this cipher (including its underlying feedback or padding scheme) * requires any random bytes (e.g., for parameter generation), it will get * them using the {@link SecureRandom <code>SecureRandom</code>} @@ -1110,8 +1142,8 @@ public class Cipher { * @param key the key * * @exception InvalidKeyException if the given key is inappropriate for - * initializing this cipher, or if this cipher is being initialized for - * decryption and requires algorithm parameters that cannot be + * initializing this cipher, or requires + * algorithm parameters that cannot be * determined from the given key, or if the given key has a keysize that * exceeds the maximum allowable keysize (as determined from the * configured jurisdiction policy files). @@ -1138,6 +1170,11 @@ public class Cipher { * {@link #getParameters() getParameters} or * {@link #getIV() getIV} (if the parameter is an IV). * + * <p>If this cipher requires algorithm parameters that cannot be + * derived from the input parameters, and there are no reasonable + * provider-specific default values, initialization will + * necessarily fail. + * * <p>If this cipher (including its underlying feedback or padding scheme) * requires any random bytes (e.g., for parameter generation), it will get * them from <code>random</code>. @@ -1155,8 +1192,8 @@ public class Cipher { * @param random the source of randomness * * @exception InvalidKeyException if the given key is inappropriate for - * initializing this cipher, or if this cipher is being initialized for - * decryption and requires algorithm parameters that cannot be + * initializing this cipher, or requires + * algorithm parameters that cannot be * determined from the given key, or if the given key has a keysize that * exceeds the maximum allowable keysize (as determined from the * configured jurisdiction policy files). @@ -1202,6 +1239,11 @@ public class Cipher { * {@link #getParameters() getParameters} or * {@link #getIV() getIV} (if the parameter is an IV). * + * <p>If this cipher requires algorithm parameters that cannot be + * derived from the input parameters, and there are no reasonable + * provider-specific default values, initialization will + * necessarily fail. + * * <p>If this cipher (including its underlying feedback or padding scheme) * requires any random bytes (e.g., for parameter generation), it will get * them using the {@link SecureRandom <code>SecureRandom</code>} @@ -1227,7 +1269,7 @@ public class Cipher { * keysize (as determined from the configured jurisdiction policy files). * @exception InvalidAlgorithmParameterException if the given algorithm * parameters are inappropriate for this cipher, - * or this cipher is being initialized for decryption and requires + * or this cipher requires * algorithm parameters and <code>params</code> is null, or the given * algorithm parameters imply a cryptographic strength that would exceed * the legal limits (as determined from the configured jurisdiction @@ -1258,6 +1300,11 @@ public class Cipher { * {@link #getParameters() getParameters} or * {@link #getIV() getIV} (if the parameter is an IV). * + * <p>If this cipher requires algorithm parameters that cannot be + * derived from the input parameters, and there are no reasonable + * provider-specific default values, initialization will + * necessarily fail. + * * <p>If this cipher (including its underlying feedback or padding scheme) * requires any random bytes (e.g., for parameter generation), it will get * them from <code>random</code>. @@ -1280,7 +1327,7 @@ public class Cipher { * keysize (as determined from the configured jurisdiction policy files). * @exception InvalidAlgorithmParameterException if the given algorithm * parameters are inappropriate for this cipher, - * or this cipher is being initialized for decryption and requires + * or this cipher requires * algorithm parameters and <code>params</code> is null, or the given * algorithm parameters imply a cryptographic strength that would exceed * the legal limits (as determined from the configured jurisdiction @@ -1323,6 +1370,11 @@ public class Cipher { * {@link #getParameters() getParameters} or * {@link #getIV() getIV} (if the parameter is an IV). * + * <p>If this cipher requires algorithm parameters that cannot be + * derived from the input parameters, and there are no reasonable + * provider-specific default values, initialization will + * necessarily fail. + * * <p>If this cipher (including its underlying feedback or padding scheme) * requires any random bytes (e.g., for parameter generation), it will get * them using the {@link SecureRandom <code>SecureRandom</code>} @@ -1348,7 +1400,7 @@ public class Cipher { * keysize (as determined from the configured jurisdiction policy files). * @exception InvalidAlgorithmParameterException if the given algorithm * parameters are inappropriate for this cipher, - * or this cipher is being initialized for decryption and requires + * or this cipher requires * algorithm parameters and <code>params</code> is null, or the given * algorithm parameters imply a cryptographic strength that would exceed * the legal limits (as determined from the configured jurisdiction @@ -1379,6 +1431,11 @@ public class Cipher { * {@link #getParameters() getParameters} or * {@link #getIV() getIV} (if the parameter is an IV). * + * <p>If this cipher requires algorithm parameters that cannot be + * derived from the input parameters, and there are no reasonable + * provider-specific default values, initialization will + * necessarily fail. + * * <p>If this cipher (including its underlying feedback or padding scheme) * requires any random bytes (e.g., for parameter generation), it will get * them from <code>random</code>. @@ -1401,7 +1458,7 @@ public class Cipher { * keysize (as determined from the configured jurisdiction policy files). * @exception InvalidAlgorithmParameterException if the given algorithm * parameters are inappropriate for this cipher, - * or this cipher is being initialized for decryption and requires + * or this cipher requires * algorithm parameters and <code>params</code> is null, or the given * algorithm parameters imply a cryptographic strength that would exceed * the legal limits (as determined from the configured jurisdiction @@ -1444,7 +1501,7 @@ public class Cipher { * derived from the public key in the given certificate, the underlying * cipher * implementation is supposed to generate the required parameters itself - * (using provider-specific default or ramdom values) if it is being + * (using provider-specific default or random values) if it is being * initialized for encryption or key wrapping, and raise an <code> * InvalidKeyException</code> if it is being initialized for decryption or * key unwrapping. @@ -1452,6 +1509,11 @@ public class Cipher { * {@link #getParameters() getParameters} or * {@link #getIV() getIV} (if the parameter is an IV). * + * <p>If this cipher requires algorithm parameters that cannot be + * derived from the input parameters, and there are no reasonable + * provider-specific default values, initialization will + * necessarily fail. + * * <p>If this cipher (including its underlying feedback or padding scheme) * requires any random bytes (e.g., for parameter generation), it will get * them using the @@ -1474,8 +1536,7 @@ public class Cipher { * * @exception InvalidKeyException if the public key in the given * certificate is inappropriate for initializing this cipher, or this - * cipher is being initialized for decryption or unwrapping keys and - * requires algorithm parameters that cannot be determined from the + * cipher requires algorithm parameters that cannot be determined from the * public key in the given certificate, or the keysize of the public key * in the given certificate has a keysize that exceeds the maximum * allowable keysize (as determined by the configured jurisdiction policy @@ -1518,6 +1579,11 @@ public class Cipher { * {@link #getParameters() getParameters} or * {@link #getIV() getIV} (if the parameter is an IV). * + * <p>If this cipher requires algorithm parameters that cannot be + * derived from the input parameters, and there are no reasonable + * provider-specific default values, initialization will + * necessarily fail. + * * <p>If this cipher (including its underlying feedback or padding scheme) * requires any random bytes (e.g., for parameter generation), it will get * them from <code>random</code>. @@ -1536,7 +1602,7 @@ public class Cipher { * * @exception InvalidKeyException if the public key in the given * certificate is inappropriate for initializing this cipher, or this - * cipher is being initialized for decryption or unwrapping keys and + * cipher * requires algorithm parameters that cannot be determined from the * public key in the given certificate, or the keysize of the public key * in the given certificate has a keysize that exceeds the maximum @@ -1865,6 +1931,9 @@ public class Cipher { * <p>Input data that may have been buffered during a previous * <code>update</code> operation is processed, with padding (if requested) * being applied. + * If an AEAD mode such as GCM/CCM is being used, the authentication + * tag is appended in the case of encryption, or verified in the + * case of decryption. * The result is stored in a new buffer. * * <p>Upon finishing, this method resets this cipher object to the state @@ -1888,6 +1957,9 @@ public class Cipher { * @exception BadPaddingException if this cipher is in decryption mode, * and (un)padding has been requested, but the decrypted data is not * bounded by the appropriate padding bytes + * @exception AEADBadTagException if this cipher is decrypting in an + * AEAD mode (such as GCM/CCM), and the received authentication tag + * does not match the calculated value */ public final byte[] doFinal() throws IllegalBlockSizeException, BadPaddingException { @@ -1904,6 +1976,9 @@ public class Cipher { * <p>Input data that may have been buffered during a previous * <code>update</code> operation is processed, with padding (if requested) * being applied. + * If an AEAD mode such as GCM/CCM is being used, the authentication + * tag is appended in the case of encryption, or verified in the + * case of decryption. * The result is stored in the <code>output</code> buffer, starting at * <code>outputOffset</code> inclusive. * @@ -1940,6 +2015,9 @@ public class Cipher { * @exception BadPaddingException if this cipher is in decryption mode, * and (un)padding has been requested, but the decrypted data is not * bounded by the appropriate padding bytes + * @exception AEADBadTagException if this cipher is decrypting in an + * AEAD mode (such as GCM/CCM), and the received authentication tag + * does not match the calculated value */ public final int doFinal(byte[] output, int outputOffset) throws IllegalBlockSizeException, ShortBufferException, @@ -1963,6 +2041,9 @@ public class Cipher { * <p>The bytes in the <code>input</code> buffer, and any input bytes that * may have been buffered during a previous <code>update</code> operation, * are processed, with padding (if requested) being applied. + * If an AEAD mode such as GCM/CCM is being used, the authentication + * tag is appended in the case of encryption, or verified in the + * case of decryption. * The result is stored in a new buffer. * * <p>Upon finishing, this method resets this cipher object to the state @@ -1988,6 +2069,9 @@ public class Cipher { * @exception BadPaddingException if this cipher is in decryption mode, * and (un)padding has been requested, but the decrypted data is not * bounded by the appropriate padding bytes + * @exception AEADBadTagException if this cipher is decrypting in an + * AEAD mode (such as GCM/CCM), and the received authentication tag + * does not match the calculated value */ public final byte[] doFinal(byte[] input) throws IllegalBlockSizeException, BadPaddingException { @@ -2011,6 +2095,9 @@ public class Cipher { * buffer, starting at <code>inputOffset</code> inclusive, and any input * bytes that may have been buffered during a previous <code>update</code> * operation, are processed, with padding (if requested) being applied. + * If an AEAD mode such as GCM/CCM is being used, the authentication + * tag is appended in the case of encryption, or verified in the + * case of decryption. * The result is stored in a new buffer. * * <p>Upon finishing, this method resets this cipher object to the state @@ -2039,6 +2126,9 @@ public class Cipher { * @exception BadPaddingException if this cipher is in decryption mode, * and (un)padding has been requested, but the decrypted data is not * bounded by the appropriate padding bytes + * @exception AEADBadTagException if this cipher is decrypting in an + * AEAD mode (such as GCM/CCM), and the received authentication tag + * does not match the calculated value */ public final byte[] doFinal(byte[] input, int inputOffset, int inputLen) throws IllegalBlockSizeException, BadPaddingException { @@ -2063,6 +2153,9 @@ public class Cipher { * buffer, starting at <code>inputOffset</code> inclusive, and any input * bytes that may have been buffered during a previous <code>update</code> * operation, are processed, with padding (if requested) being applied. + * If an AEAD mode such as GCM/CCM is being used, the authentication + * tag is appended in the case of encryption, or verified in the + * case of decryption. * The result is stored in the <code>output</code> buffer. * * <p>If the <code>output</code> buffer is too small to hold the result, @@ -2105,6 +2198,9 @@ public class Cipher { * @exception BadPaddingException if this cipher is in decryption mode, * and (un)padding has been requested, but the decrypted data is not * bounded by the appropriate padding bytes + * @exception AEADBadTagException if this cipher is decrypting in an + * AEAD mode (such as GCM/CCM), and the received authentication tag + * does not match the calculated value */ public final int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output) @@ -2133,6 +2229,9 @@ public class Cipher { * bytes that may have been buffered during a previous * <code>update</code> operation, are processed, with padding * (if requested) being applied. + * If an AEAD mode such as GCM/CCM is being used, the authentication + * tag is appended in the case of encryption, or verified in the + * case of decryption. * The result is stored in the <code>output</code> buffer, starting at * <code>outputOffset</code> inclusive. * @@ -2178,6 +2277,9 @@ public class Cipher { * @exception BadPaddingException if this cipher is in decryption mode, * and (un)padding has been requested, but the decrypted data is not * bounded by the appropriate padding bytes + * @exception AEADBadTagException if this cipher is decrypting in an + * AEAD mode (such as GCM/CCM), and the received authentication tag + * does not match the calculated value */ public final int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) @@ -2203,8 +2305,11 @@ public class Cipher { * depending on how this cipher was initialized. * * <p>All <code>input.remaining()</code> bytes starting at - * <code>input.position()</code> are processed. The result is stored - * in the output buffer. + * <code>input.position()</code> are processed. + * If an AEAD mode such as GCM/CCM is being used, the authentication + * tag is appended in the case of encryption, or verified in the + * case of decryption. + * The result is stored in the output buffer. * Upon return, the input buffer's position will be equal * to its limit; its limit will not have changed. The output buffer's * position will have advanced by n, where n is the value returned @@ -2250,6 +2355,10 @@ public class Cipher { * @exception BadPaddingException if this cipher is in decryption mode, * and (un)padding has been requested, but the decrypted data is not * bounded by the appropriate padding bytes + * @exception AEADBadTagException if this cipher is decrypting in an + * AEAD mode (such as GCM/CCM), and the received authentication tag + * does not match the calculated value + * * @since 1.5 */ public final int doFinal(ByteBuffer input, ByteBuffer output) @@ -2441,4 +2550,128 @@ public class Cipher { CryptoPermission cp = getConfiguredPermission(transformation); return cp.getAlgorithmParameterSpec(); } + + /** + * Continues a multi-part update of the Additional Authentication + * Data (AAD). + * <p> + * Calls to this method provide AAD to the cipher when operating in + * modes such as AEAD (GCM/CCM). If this cipher is operating in + * either GCM or CCM mode, all AAD must be supplied before beginning + * operations on the ciphertext (via the {@code update} and {@code + * doFinal} methods). + * + * @param src the buffer containing the Additional Authentication Data + * + * @throws IllegalArgumentException if the {@code src} + * byte array is null + * @throws IllegalStateException if this cipher is in a wrong state + * (e.g., has not been initialized), does not accept AAD, or if + * operating in either GCM or CCM mode and one of the {@code update} + * methods has already been called for the active + * encryption/decryption operation + * @throws UnsupportedOperationException if the corresponding method + * in the {@code CipherSpi} has not been overridden by an + * implementation + * + * @since 1.7 + */ + public final void updateAAD(byte[] src) { + if (src == null) { + throw new IllegalArgumentException("src buffer is null"); + } + + updateAAD(src, 0, src.length); + } + + /** + * Continues a multi-part update of the Additional Authentication + * Data (AAD), using a subset of the provided buffer. + * <p> + * Calls to this method provide AAD to the cipher when operating in + * modes such as AEAD (GCM/CCM). If this cipher is operating in + * either GCM or CCM mode, all AAD must be supplied before beginning + * operations on the ciphertext (via the {@code update} and {@code + * doFinal} methods). + * + * @param src the buffer containing the AAD + * @param offset the offset in {@code src} where the AAD input starts + * @param len the number of AAD bytes + * + * @throws IllegalArgumentException if the {@code src} + * byte array is null, or the {@code offset} or {@code length} + * is less than 0, or the sum of the {@code offset} and + * {@code len} is greater than the length of the + * {@code src} byte array + * @throws IllegalStateException if this cipher is in a wrong state + * (e.g., has not been initialized), does not accept AAD, or if + * operating in either GCM or CCM mode and one of the {@code update} + * methods has already been called for the active + * encryption/decryption operation + * @throws UnsupportedOperationException if the corresponding method + * in the {@code CipherSpi} has not been overridden by an + * implementation + * + * @since 1.7 + */ + public final void updateAAD(byte[] src, int offset, int len) { + checkCipherState(); + + // Input sanity check + if ((src == null) || (offset < 0) || (len < 0) + || ((len + offset) > src.length)) { + throw new IllegalArgumentException("Bad arguments"); + } + + chooseFirstProvider(); + if (len == 0) { + return; + } + spi.engineUpdateAAD(src, offset, len); + } + + /** + * Continues a multi-part update of the Additional Authentication + * Data (AAD). + * <p> + * Calls to this method provide AAD to the cipher when operating in + * modes such as AEAD (GCM/CCM). If this cipher is operating in + * either GCM or CCM mode, all AAD must be supplied before beginning + * operations on the ciphertext (via the {@code update} and {@code + * doFinal} methods). + * <p> + * All {@code src.remaining()} bytes starting at + * {@code src.position()} are processed. + * Upon return, the input buffer's position will be equal + * to its limit; its limit will not have changed. + * + * @param src the buffer containing the AAD + * + * @throws IllegalArgumentException if the {@code src ByteBuffer} + * is null + * @throws IllegalStateException if this cipher is in a wrong state + * (e.g., has not been initialized), does not accept AAD, or if + * operating in either GCM or CCM mode and one of the {@code update} + * methods has already been called for the active + * encryption/decryption operation + * @throws UnsupportedOperationException if the corresponding method + * in the {@code CipherSpi} has not been overridden by an + * implementation + * + * @since 1.7 + */ + public final void updateAAD(ByteBuffer src) { + checkCipherState(); + + // Input sanity check + if (src == null) { + throw new IllegalArgumentException("src ByteBuffer is null"); + } + + chooseFirstProvider(); + if (src.remaining() == 0) { + return; + } + spi.engineUpdateAAD(src); + } } diff --git a/src/share/classes/javax/crypto/CipherSpi.java b/src/share/classes/javax/crypto/CipherSpi.java index f46cafa955d4b711a3d8fe1d4fa2468994c0612a..c3442ea2d81f070273cdf6bc221d5bcf84e8b318 100644 --- a/src/share/classes/javax/crypto/CipherSpi.java +++ b/src/share/classes/javax/crypto/CipherSpi.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -266,7 +266,7 @@ public abstract class CipherSpi { * <code>inputLen</code> (in bytes). * * <p>This call takes into account any unprocessed (buffered) data from a - * previous <code>update</code> call, and padding. + * previous <code>update</code> call, padding, and AEAD tagging. * * <p>The actual output length of the next <code>update</code> or * <code>doFinal</code> call may be smaller than the length returned by @@ -322,6 +322,11 @@ public abstract class CipherSpi { * {@link #engineGetParameters() engineGetParameters} or * {@link #engineGetIV() engineGetIV} (if the parameter is an IV). * + * <p>If this cipher requires algorithm parameters that cannot be + * derived from the input parameters, and there are no reasonable + * provider-specific default values, initialization will + * necessarily fail. + * * <p>If this cipher (including its underlying feedback or padding scheme) * requires any random bytes (e.g., for parameter generation), it will get * them from <code>random</code>. @@ -339,8 +344,8 @@ public abstract class CipherSpi { * @param random the source of randomness * * @exception InvalidKeyException if the given key is inappropriate for - * initializing this cipher, or if this cipher is being initialized for - * decryption and requires algorithm parameters that cannot be + * initializing this cipher, or requires + * algorithm parameters that cannot be * determined from the given key. */ protected abstract void engineInit(int opmode, Key key, @@ -366,6 +371,11 @@ public abstract class CipherSpi { * {@link #engineGetParameters() engineGetParameters} or * {@link #engineGetIV() engineGetIV} (if the parameter is an IV). * + * <p>If this cipher requires algorithm parameters that cannot be + * derived from the input parameters, and there are no reasonable + * provider-specific default values, initialization will + * necessarily fail. + * * <p>If this cipher (including its underlying feedback or padding scheme) * requires any random bytes (e.g., for parameter generation), it will get * them from <code>random</code>. @@ -387,7 +397,7 @@ public abstract class CipherSpi { * initializing this cipher * @exception InvalidAlgorithmParameterException if the given algorithm * parameters are inappropriate for this cipher, - * or if this cipher is being initialized for decryption and requires + * or if this cipher requires * algorithm parameters and <code>params</code> is null. */ protected abstract void engineInit(int opmode, Key key, @@ -414,6 +424,11 @@ public abstract class CipherSpi { * {@link #engineGetParameters() engineGetParameters} or * {@link #engineGetIV() engineGetIV} (if the parameter is an IV). * + * <p>If this cipher requires algorithm parameters that cannot be + * derived from the input parameters, and there are no reasonable + * provider-specific default values, initialization will + * necessarily fail. + * * <p>If this cipher (including its underlying feedback or padding scheme) * requires any random bytes (e.g., for parameter generation), it will get * them from <code>random</code>. @@ -435,7 +450,7 @@ public abstract class CipherSpi { * initializing this cipher * @exception InvalidAlgorithmParameterException if the given algorithm * parameters are inappropriate for this cipher, - * or if this cipher is being initialized for decryption and requires + * or if this cipher requires * algorithm parameters and <code>params</code> is null. */ protected abstract void engineInit(int opmode, Key key, @@ -548,6 +563,9 @@ public abstract class CipherSpi { * buffer, starting at <code>inputOffset</code> inclusive, and any input * bytes that may have been buffered during a previous <code>update</code> * operation, are processed, with padding (if requested) being applied. + * If an AEAD mode such as GCM/CCM is being used, the authentication + * tag is appended in the case of encryption, or verified in the + * case of decryption. * The result is stored in a new buffer. * * <p>Upon finishing, this method resets this cipher object to the state @@ -575,6 +593,9 @@ public abstract class CipherSpi { * @exception BadPaddingException if this cipher is in decryption mode, * and (un)padding has been requested, but the decrypted data is not * bounded by the appropriate padding bytes + * @exception AEADBadTagException if this cipher is decrypting in an + * AEAD mode (such as GCM/CCM), and the received authentication tag + * does not match the calculated value */ protected abstract byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen) @@ -590,6 +611,9 @@ public abstract class CipherSpi { * buffer, starting at <code>inputOffset</code> inclusive, and any input * bytes that may have been buffered during a previous <code>update</code> * operation, are processed, with padding (if requested) being applied. + * If an AEAD mode such as GCM/CCM is being used, the authentication + * tag is appended in the case of encryption, or verified in the + * case of decryption. * The result is stored in the <code>output</code> buffer, starting at * <code>outputOffset</code> inclusive. * @@ -626,6 +650,9 @@ public abstract class CipherSpi { * @exception BadPaddingException if this cipher is in decryption mode, * and (un)padding has been requested, but the decrypted data is not * bounded by the appropriate padding bytes + * @exception AEADBadTagException if this cipher is decrypting in an + * AEAD mode (such as GCM/CCM), and the received authentication tag + * does not match the calculated value */ protected abstract int engineDoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, @@ -640,8 +667,11 @@ public abstract class CipherSpi { * initialized. * * <p>All <code>input.remaining()</code> bytes starting at - * <code>input.position()</code> are processed. The result is stored - * in the output buffer. + * <code>input.position()</code> are processed. + * If an AEAD mode such as GCM/CCM is being used, the authentication + * tag is appended in the case of encryption, or verified in the + * case of decryption. + * The result is stored in the output buffer. * Upon return, the input buffer's position will be equal * to its limit; its limit will not have changed. The output buffer's * position will have advanced by n, where n is the value returned @@ -678,6 +708,9 @@ public abstract class CipherSpi { * @exception BadPaddingException if this cipher is in decryption mode, * and (un)padding has been requested, but the decrypted data is not * bounded by the appropriate padding bytes + * @exception AEADBadTagException if this cipher is decrypting in an + * AEAD mode (such as GCM/CCM), and the received authentication tag + * does not match the calculated value * * @throws NullPointerException if either parameter is <CODE>null</CODE> * @since 1.5 @@ -892,4 +925,67 @@ public abstract class CipherSpi { { throw new UnsupportedOperationException(); } + + /** + * Continues a multi-part update of the Additional Authentication + * Data (AAD), using a subset of the provided buffer. + * <p> + * Calls to this method provide AAD to the cipher when operating in + * modes such as AEAD (GCM/CCM). If this cipher is operating in + * either GCM or CCM mode, all AAD must be supplied before beginning + * operations on the ciphertext (via the {@code update} and {@code + * doFinal} methods). + * + * @param src the buffer containing the AAD + * @param offset the offset in {@code src} where the AAD input starts + * @param len the number of AAD bytes + * + * @throws IllegalStateException if this cipher is in a wrong state + * (e.g., has not been initialized), does not accept AAD, or if + * operating in either GCM or CCM mode and one of the {@code update} + * methods has already been called for the active + * encryption/decryption operation + * @throws UnsupportedOperationException if this method + * has not been overridden by an implementation + * + * @since 1.7 + */ + protected void engineUpdateAAD(byte[] src, int offset, int len) { + throw new UnsupportedOperationException( + "The underlying Cipher implementation " + + "does not support this method"); + } + + /** + * Continues a multi-part update of the Additional Authentication + * Data (AAD). + * <p> + * Calls to this method provide AAD to the cipher when operating in + * modes such as AEAD (GCM/CCM). If this cipher is operating in + * either GCM or CCM mode, all AAD must be supplied before beginning + * operations on the ciphertext (via the {@code update} and {@code + * doFinal} methods). + * <p> + * All {@code src.remaining()} bytes starting at + * {@code src.position()} are processed. + * Upon return, the input buffer's position will be equal + * to its limit; its limit will not have changed. + * + * @param src the buffer containing the AAD + * + * @throws IllegalStateException if this cipher is in a wrong state + * (e.g., has not been initialized), does not accept AAD, or if + * operating in either GCM or CCM mode and one of the {@code update} + * methods has already been called for the active + * encryption/decryption operation + * @throws UnsupportedOperationException if this method + * has not been overridden by an implementation + * + * @since 1.7 + */ + protected void engineUpdateAAD(ByteBuffer src) { + throw new UnsupportedOperationException( + "The underlying Cipher implementation " + + "does not support this method"); + } } diff --git a/src/share/classes/javax/crypto/spec/GCMParameterSpec.java b/src/share/classes/javax/crypto/spec/GCMParameterSpec.java new file mode 100644 index 0000000000000000000000000000000000000000..01cb1cc70284ca68e97dc445d89d257e85e37259 --- /dev/null +++ b/src/share/classes/javax/crypto/spec/GCMParameterSpec.java @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.crypto.spec; + +import java.security.spec.AlgorithmParameterSpec; + +/** + * Specifies the set of parameters required by a {@link + * javax.crypto.Cipher} using the Galois/Counter Mode (GCM) mode. + * <p> + * Simple block cipher modes (such as CBC) generally require only an + * initialization vector (such as {@code IvParameterSpec}), + * but GCM needs these parameters: + * <ul> + * <li>{@code IV}: Initialization Vector (IV) </li> + * <li>{@code tLen}: length (in bits) of authentication tag T</li> + * </ul> + * <p> + * In addition to the parameters described here, other GCM inputs/output + * (Additional Authenticated Data (AAD), Keys, block ciphers, + * plain/ciphertext and authentication tags) are handled in the {@code + * Cipher} class. + <p> + * Please see <a href="http://www.ietf.org/rfc/rfc5116.txt"> RFC 5116 + * </a> for more information on the Authenticated Encryption with + * Associated Data (AEAD) algorithm, and <a href= + * "http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf"> + * NIST Special Publication 800-38D</a>, "NIST Recommendation for Block + * Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC." + * <p> + * The GCM specification states that {@code tLen} may only have the + * values {128, 120, 112, 104, 96}, or {64, 32} for certain + * applications. Other values can be specified for this class, but not + * all CSP implementations will support them. + * + * @see javax.crypto.Cipher + * + * @since 1.7 + */ +public class GCMParameterSpec implements AlgorithmParameterSpec { + + // Initialization Vector. Could use IvParameterSpec, but that + // would add extra copies. + private byte[] iv; + + // Required Tag length (in bits). + private int tLen; + + /** + * Constructs a GCMParameterSpec using the specified authentication + * tag bit-length and IV buffer. + * + * @param tLen the authentication tag length (in bits) + * @param src the IV source buffer. The contents of the buffer are + * copied to protect against subsequent modification. + * + * @throws IllegalArgumentException if {@code tLen} is negative, + * or {@code src} is null. + */ + public GCMParameterSpec(int tLen, byte[] src) { + if (src == null) { + throw new IllegalArgumentException("src array is null"); + } + + init(tLen, src, 0, src.length); + } + + /** + * Constructs a GCMParameterSpec object using the specified + * authentication tag bit-length and a subset of the specified + * buffer as the IV. + * + * @param tLen the authentication tag length (in bits) + * @param src the IV source buffer. The contents of the + * buffer are copied to protect against subsequent modification. + * @param offset the offset in {@code src} where the IV starts + * @param len the number of IV bytes + * + * @throws IllegalArgumentException if {@code tLen} is negative, + * {@code src} is null, {@code len} or {@code offset} is negative, + * or the sum of {@code offset} and {@code len} is greater than the + * length of the {@code src} byte array. + */ + public GCMParameterSpec(int tLen, byte[] src, int offset, int len) { + init(tLen, src, offset, len); + } + + /* + * Check input parameters. + */ + private void init(int tLen, byte[] src, int offset, int len) { + if (tLen < 0) { + throw new IllegalArgumentException( + "Length argument is negative"); + } + this.tLen = tLen; + + // Input sanity check + if ((src == null) ||(len < 0) || (offset < 0) + || ((len + offset) > src.length)) { + throw new IllegalArgumentException("Invalid buffer arguments"); + } + + iv = new byte[len]; + System.arraycopy(src, offset, iv, 0, len); + } + + /** + * Returns the authentication tag length. + * + * @return the authentication tag length (in bits) + */ + public int getTLen() { + return tLen; + } + + /** + * Returns the Initialization Vector (IV). + * + * @return the IV. Creates a new array each time this method + * is called. + */ + public byte[] getIV() { + return iv.clone(); + } +} diff --git a/src/share/classes/javax/imageio/stream/FileCacheImageOutputStream.java b/src/share/classes/javax/imageio/stream/FileCacheImageOutputStream.java index 3f20afcf5bfc6e97faa0023678a838b934072383..79ce155f23b08789b7737af994cb19c3d4c017fc 100644 --- a/src/share/classes/javax/imageio/stream/FileCacheImageOutputStream.java +++ b/src/share/classes/javax/imageio/stream/FileCacheImageOutputStream.java @@ -214,7 +214,7 @@ public class FileCacheImageOutputStream extends ImageOutputStreamImpl { } /** - * Closes this <code>FileCacheImageOututStream</code>. All + * Closes this <code>FileCacheImageOutputStream</code>. All * pending data is flushed to the output, and the cache file * is closed and removed. The destination <code>OutputStream</code> * is not closed. diff --git a/src/share/classes/javax/management/remote/package.html b/src/share/classes/javax/management/remote/package.html index e21a222892e6721ef4e01c723a50448bd36699b7..547fecac6620dfa563d24898c887b3bf9c8ef500 100644 --- a/src/share/classes/javax/management/remote/package.html +++ b/src/share/classes/javax/management/remote/package.html @@ -154,11 +154,8 @@ rmi://192.18.1.9 username 1 </pre> <p>The formal grammar for connection ids that follow this - convention is as follows (using the <a - href="http://java.sun.com/docs/books/jls/second_edition/html/grammars.doc.html#90767">grammar - notation</a> from <em>The Java Language Specification, Second - Edition</em>):</p> - + convention is as follows (using the grammar notation from section 2.4 of + <em>The Java™ Language Specification</em>):</p> <pre> <em>ConnectionId:</em> <em>Protocol</em> : <em>ClientAddress<sub>opt</sub></em> Space <em>ClientId<sub>opt</sub></em> Space <em>ArbitraryText</em> diff --git a/src/share/classes/javax/sound/midi/MidiSystem.java b/src/share/classes/javax/sound/midi/MidiSystem.java index 864129770e1ee71c40abac34f0af486e152bc32a..7a3b186d92eaeba075e399bda8becf0be8b789da 100644 --- a/src/share/classes/javax/sound/midi/MidiSystem.java +++ b/src/share/classes/javax/sound/midi/MidiSystem.java @@ -239,6 +239,12 @@ public class MidiSystem { * If a suitable MIDI port is not available, the Receiver is * retrieved from an installed synthesizer. * + * <p>If a native receiver provided by the default device does not implement + * the {@code MidiDeviceReceiver} interface, it will be wrapped in a + * wrapper class that implements the {@code MidiDeviceReceiver} interface. + * The corresponding {@code Receiver} method calls will be forwarded + * to the native receiver. + * * <p>If this method returns successfully, the {@link * javax.sound.midi.MidiDevice MidiDevice} the * <code>Receiver</code> belongs to is opened implicitly, if it is @@ -284,7 +290,13 @@ public class MidiSystem { * it is used to identify the device that provides the default transmitter. * For details, refer to the {@link MidiSystem class description}. * - * If this method returns successfully, the {@link + * <p>If a native transmitter provided by the default device does not implement + * the {@code MidiDeviceTransmitter} interface, it will be wrapped in a + * wrapper class that implements the {@code MidiDeviceTransmitter} interface. + * The corresponding {@code Transmitter} method calls will be forwarded + * to the native transmitter. + * + * <p>If this method returns successfully, the {@link * javax.sound.midi.MidiDevice MidiDevice} the * <code>Transmitter</code> belongs to is opened implicitly, if it * is not already open. It is possible to close an implicitly diff --git a/src/share/classes/javax/sql/rowset/BaseRowSet.java b/src/share/classes/javax/sql/rowset/BaseRowSet.java index 92f103254a68a733430f926618b047f47a47dbb4..cf0bbecf3867cb41b1560b425629eabb973cabe1 100644 --- a/src/share/classes/javax/sql/rowset/BaseRowSet.java +++ b/src/share/classes/javax/sql/rowset/BaseRowSet.java @@ -296,32 +296,32 @@ import javax.sql.rowset.serial.*; public abstract class BaseRowSet implements Serializable, Cloneable { -/** - * A constant indicating to a <code>RowSetReaderImpl</code> object - * that a given parameter is a Unicode stream. This - * <code>RowSetReaderImpl</code> object is provided as an extension of the - * <code>SyncProvider</code> abstract class defined in the - * <code>SyncFactory</code> static factory SPI mechanism. - */ -public static final int UNICODE_STREAM_PARAM = 0; + /** + * A constant indicating to a <code>RowSetReaderImpl</code> object + * that a given parameter is a Unicode stream. This + * <code>RowSetReaderImpl</code> object is provided as an extension of the + * <code>SyncProvider</code> abstract class defined in the + * <code>SyncFactory</code> static factory SPI mechanism. + */ + public static final int UNICODE_STREAM_PARAM = 0; -/** - * A constant indicating to a <code>RowSetReaderImpl</code> object - * that a given parameter is a binary stream. A - * <code>RowSetReaderImpl</code> object is provided as an extension of the - * <code>SyncProvider</code> abstract class defined in the - * <code>SyncFactory</code> static factory SPI mechanism. - */ -public static final int BINARY_STREAM_PARAM = 1; + /** + * A constant indicating to a <code>RowSetReaderImpl</code> object + * that a given parameter is a binary stream. A + * <code>RowSetReaderImpl</code> object is provided as an extension of the + * <code>SyncProvider</code> abstract class defined in the + * <code>SyncFactory</code> static factory SPI mechanism. + */ + public static final int BINARY_STREAM_PARAM = 1; -/** - * A constant indicating to a <code>RowSetReaderImpl</code> object - * that a given parameter is an ASCII stream. A - * <code>RowSetReaderImpl</code> object is provided as an extension of the - * <code>SyncProvider</code> abstract class defined in the - * <code>SyncFactory</code> static factory SPI mechanism. - */ -public static final int ASCII_STREAM_PARAM = 2; + /** + * A constant indicating to a <code>RowSetReaderImpl</code> object + * that a given parameter is an ASCII stream. A + * <code>RowSetReaderImpl</code> object is provided as an extension of the + * <code>SyncProvider</code> abstract class defined in the + * <code>SyncFactory</code> static factory SPI mechanism. + */ + public static final int ASCII_STREAM_PARAM = 2; /** * The <code>InputStream</code> object that will be @@ -505,21 +505,21 @@ public static final int ASCII_STREAM_PARAM = 2; * custom mapping of user-defined types. * @serial */ - private Map map; + private Map<String, Class<?>> map; /** * A <code>Vector</code> object that holds the list of listeners * that have registered with this <code>RowSet</code> object. * @serial */ - private Vector listeners; + private Vector<RowSetListener> listeners; /** * A <code>Vector</code> object that holds the parameters set * for this <code>RowSet</code> object's current command. * @serial */ - private Hashtable params; // could be transient? + private Hashtable<Integer, Object> params; // could be transient? /** * Constructs a new <code>BaseRowSet</code> object initialized with @@ -529,7 +529,7 @@ public static final int ASCII_STREAM_PARAM = 2; */ public BaseRowSet() { // allocate the listeners collection - listeners = new Vector(); + listeners = new Vector<RowSetListener>(); } /** @@ -542,7 +542,7 @@ public static final int ASCII_STREAM_PARAM = 2; * a <code>RowSet</code> implementation extending this class. */ protected void initParams() { - params = new Hashtable(); + params = new Hashtable<Integer, Object>(); } //-------------------------------------------------------------------- diff --git a/src/share/classes/javax/sql/rowset/RowSetMetaDataImpl.java b/src/share/classes/javax/sql/rowset/RowSetMetaDataImpl.java index cd18b2afd919cebce461a92cbe9e28feea9882a8..f4591c09cb5f08e684fd7d6587aa2f6dad653412 100644 --- a/src/share/classes/javax/sql/rowset/RowSetMetaDataImpl.java +++ b/src/share/classes/javax/sql/rowset/RowSetMetaDataImpl.java @@ -912,7 +912,12 @@ public class RowSetMetaDataImpl implements RowSetMetaData, Serializable { * @since 1.6 */ public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException { - return (T)this; + + if(isWrapperFor(iface)) { + return iface.cast(this); + } else { + throw new SQLException("unwrap failed for:"+ iface); + } } /** @@ -929,8 +934,9 @@ public class RowSetMetaDataImpl implements RowSetMetaData, Serializable { * @throws java.sql.SQLException if an error occurs while determining whether this is a wrapper * for an object with the given interface. * @since 1.6 - */ public boolean isWrapperFor(Class<?> interfaces) throws SQLException { - return false; + */ + public boolean isWrapperFor(Class<?> interfaces) throws SQLException { + return interfaces.isInstance(this); } static final long serialVersionUID = 6893806403181801867L; diff --git a/src/share/classes/javax/sql/rowset/RowSetProvider.java b/src/share/classes/javax/sql/rowset/RowSetProvider.java index 4b81baa575628b756ff63238fa42811f4012d803..c161eded789fe0747de1577bb0865e373f612bc9 100644 --- a/src/share/classes/javax/sql/rowset/RowSetProvider.java +++ b/src/share/classes/javax/sql/rowset/RowSetProvider.java @@ -204,9 +204,9 @@ public class RowSetProvider { * */ static private ClassLoader getContextClassLoader() throws SecurityException { - return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { + return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() { - public Object run() { + public ClassLoader run() { ClassLoader cl = null; cl = Thread.currentThread().getContextClassLoader(); @@ -284,9 +284,9 @@ public class RowSetProvider { static private String getSystemProperty(final String propName) { String property = null; try { - property = (String) AccessController.doPrivileged(new PrivilegedAction() { + property = AccessController.doPrivileged(new PrivilegedAction<String>() { - public Object run() { + public String run() { return System.getProperty(propName); } }); diff --git a/src/share/classes/javax/swing/Painter.java b/src/share/classes/javax/swing/Painter.java index ca9c214f3e6b8068885cc032505fd0a2c5b30f5d..7b2e3ef11effb9f841bd2f9b5edc6f4d3540b688 100644 --- a/src/share/classes/javax/swing/Painter.java +++ b/src/share/classes/javax/swing/Painter.java @@ -45,14 +45,16 @@ import java.awt.Graphics2D; * <code>Painter</code> that only works with subclasses of {@link java.awt.Component}. * In that case, when the <code>Painter</code> is declared, you may declare that * it requires a <code>Component</code>, allowing the paint method to be type safe. Ex: - * <pre><code> - * Painter<Component> p = new Painter<Component>() { - * public void paint(Graphics2D g, Component c, int width, int height) { - * g.setColor(c.getBackground()); - * //and so forth - * } + * <pre> + * {@code + * Painter<Component> p = new Painter<Component>() { + * public void paint(Graphics2D g, Component c, int width, int height) { + * g.setColor(c.getBackground()); + * //and so forth * } - * </code></pre></p> + * } + * } + * </pre></p> * * <p>This interface makes no guarantees of threadsafety.</p> * diff --git a/src/share/classes/javax/swing/border/TitledBorder.java b/src/share/classes/javax/swing/border/TitledBorder.java index 929fbd07f5be821a27f6cc2089946aa22111fcab..e20c40384ec1cb2d2e60aa98b57cb6b68bdb81c0 100644 --- a/src/share/classes/javax/swing/border/TitledBorder.java +++ b/src/share/classes/javax/swing/border/TitledBorder.java @@ -240,9 +240,7 @@ public class TitledBorder extends AbstractBorder int edge = (border instanceof TitledBorder) ? 0 : EDGE_SPACING; JLabel label = getLabel(c); Dimension size = label.getPreferredSize(); - Insets insets = (border != null) - ? border.getBorderInsets(c) - : new Insets(0, 0, 0, 0); + Insets insets = getBorderInsets(border, c, new Insets(0, 0, 0, 0)); int borderX = x + edge; int borderY = y + edge; @@ -348,17 +346,8 @@ public class TitledBorder extends AbstractBorder */ public Insets getBorderInsets(Component c, Insets insets) { Border border = getBorder(); - if (border == null) { - insets.set(0, 0, 0, 0); - } - else if (border instanceof AbstractBorder) { - AbstractBorder ab = (AbstractBorder) border; - insets = ab.getBorderInsets(c, insets); - } - else { - Insets i = border.getBorderInsets(c); - insets.set(i.top, i.left, i.bottom, i.right); - } + insets = getBorderInsets(border, c, insets); + String title = getTitle(); if ((title != null) && !title.isEmpty()) { int edge = (border instanceof TitledBorder) ? 0 : EDGE_SPACING; @@ -588,9 +577,7 @@ public class TitledBorder extends AbstractBorder int edge = (border instanceof TitledBorder) ? 0 : EDGE_SPACING; JLabel label = getLabel(c); Dimension size = label.getPreferredSize(); - Insets insets = (border != null) - ? border.getBorderInsets(c) - : new Insets(0, 0, 0, 0); + Insets insets = getBorderInsets(border, c, new Insets(0, 0, 0, 0)); int baseline = label.getBaseline(size.width, size.height); switch (getPosition()) { @@ -728,4 +715,19 @@ public class TitledBorder extends AbstractBorder this.label.setEnabled(c.isEnabled()); return this.label; } + + private static Insets getBorderInsets(Border border, Component c, Insets insets) { + if (border == null) { + insets.set(0, 0, 0, 0); + } + else if (border instanceof AbstractBorder) { + AbstractBorder ab = (AbstractBorder) border; + insets = ab.getBorderInsets(c, insets); + } + else { + Insets i = border.getBorderInsets(c); + insets.set(i.top, i.left, i.bottom, i.right); + } + return insets; + } } diff --git a/src/share/classes/javax/swing/plaf/LayerUI.java b/src/share/classes/javax/swing/plaf/LayerUI.java index 0bbac406526072e10af62d8dc08f52e620df4f9b..f9a93d32e8429a71dc39e5272459b143d3a2b2a0 100644 --- a/src/share/classes/javax/swing/plaf/LayerUI.java +++ b/src/share/classes/javax/swing/plaf/LayerUI.java @@ -708,8 +708,8 @@ public class LayerUI<V extends Component> * * @param x the x value of the region to be painted * @param y the y value of the region to be painted - * @param w the width of the region to be painted - * @param h the height of the region to be painted + * @param width the width of the region to be painted + * @param height the height of the region to be painted * * @see JComponent#paintImmediately(int, int, int, int) */ diff --git a/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java b/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java index 15d78f96267c469b98dc0108f914f49133db43ff..8d01287e2957b89bfe0ebdf412391dbac05d94ca 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java @@ -335,9 +335,8 @@ public class BasicColorChooserUI extends ColorChooserUI } /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of <Foo>. + * Instantiate it only within subclasses of {@code BasicColorChooserUI}. */ public class PropertyHandler implements PropertyChangeListener { public void propertyChange(PropertyChangeEvent e) { diff --git a/src/share/classes/javax/swing/plaf/basic/BasicDesktopIconUI.java b/src/share/classes/javax/swing/plaf/basic/BasicDesktopIconUI.java index e99b7525c46d8d0fc39956cc05af40ce627a00a8..e1435a5618e03f01e50ae07f5050b086acf3eb1c 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicDesktopIconUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicDesktopIconUI.java @@ -186,9 +186,8 @@ public class BasicDesktopIconUI extends DesktopIconUI { /** * Listens for mouse movements and acts on them. * - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of <Foo>. + * Instantiate it only within subclasses of {@code BasicDesktopIconUI}. */ public class MouseInputHandler extends MouseInputAdapter { diff --git a/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java b/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java index c1370303d7db7a36fbe081b3cbddf4b805343f55..c735fe812f9e94f4dcc35a8c88969b3e0c5bc4ff 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java @@ -455,6 +455,8 @@ public class BasicLabelUI extends LabelUI implements PropertyChangeListener } int dka = label.getDisplayedMnemonic(); inputMap.put(KeyStroke.getKeyStroke(dka, ActionEvent.ALT_MASK, true), RELEASE); + // Need this when the sticky keys are enabled + inputMap.put(KeyStroke.getKeyStroke(dka, 0, true), RELEASE); // Need this if ALT is released before the accelerator inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ALT, 0, true), RELEASE); label.requestFocus(); @@ -467,7 +469,9 @@ public class BasicLabelUI extends LabelUI implements PropertyChangeListener InputMap inputMap = SwingUtilities.getUIInputMap(label, JComponent.WHEN_FOCUSED); if (inputMap != null) { // inputMap should never be null. - inputMap.remove(KeyStroke.getKeyStroke(label.getDisplayedMnemonic(), ActionEvent.ALT_MASK, true)); + int dka = label.getDisplayedMnemonic(); + inputMap.remove(KeyStroke.getKeyStroke(dka, ActionEvent.ALT_MASK, true)); + inputMap.remove(KeyStroke.getKeyStroke(dka, 0, true)); inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ALT, 0, true)); } if (labelFor instanceof Container && diff --git a/src/share/classes/javax/swing/plaf/basic/BasicListUI.java b/src/share/classes/javax/swing/plaf/basic/BasicListUI.java index 054c1e3dfc8cda68a15c016bd45449932c47aa78..a4160f962ac5eff2ed4e3a52523471ba2d8a3924 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicListUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicListUI.java @@ -1555,9 +1555,8 @@ public class BasicListUI extends ListUI } /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of BasicTableUI. + * Instantiate it only within subclasses of {@code BasicListUI}. */ public class FocusHandler implements FocusListener { diff --git a/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java b/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java index e7f6a5a3ad4e971027ee6fbe4103504e0552c0bd..6a0b024ceebdd40aa80fe31e6eb11ae4bce80e37 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java @@ -911,9 +911,8 @@ public class BasicOptionPaneUI extends OptionPaneUI { * right. If <code>syncAllWidths</code> is true, the widths of each * component will be set to the largest preferred size width. * - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of BasicOptionPaneUI. + * Instantiate it only within subclasses of {@code BasicOptionPaneUI}. */ public static class ButtonAreaLayout implements LayoutManager { protected boolean syncAllWidths; @@ -1115,9 +1114,8 @@ public class BasicOptionPaneUI extends OptionPaneUI { /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of BasicOptionPaneUI. + * Instantiate it only within subclasses of {@code BasicOptionPaneUI}. */ public class PropertyChangeHandler implements PropertyChangeListener { /** @@ -1161,9 +1159,8 @@ public class BasicOptionPaneUI extends OptionPaneUI { } /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of BasicOptionPaneUI. + * Instantiate it only within subclasses of {@code BasicOptionPaneUI}. */ public class ButtonActionListener implements ActionListener { protected int buttonIndex; diff --git a/src/share/classes/javax/swing/plaf/basic/BasicProgressBarUI.java b/src/share/classes/javax/swing/plaf/basic/BasicProgressBarUI.java index 150f874e89b671ae3dcdfc0983956c93be0dd80c..09a45f876e4543e4fb35a04d98e8c02104742979 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicProgressBarUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicProgressBarUI.java @@ -1211,9 +1211,8 @@ public class BasicProgressBarUI extends ProgressBarUI { /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of BasicProgressBarUI. + * Instantiate it only within subclasses of {@code BasicProgressBarUI}. */ public class ChangeHandler implements ChangeListener { // NOTE: This class exists only for backward compatability. All diff --git a/src/share/classes/javax/swing/plaf/basic/BasicTableHeaderUI.java b/src/share/classes/javax/swing/plaf/basic/BasicTableHeaderUI.java index 9d2b26d483df97468a168b15ead6da32add50f44..23fa230d40612dc21357c73edf67656a8c7c7be0 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicTableHeaderUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicTableHeaderUI.java @@ -88,9 +88,8 @@ public class BasicTableHeaderUI extends TableHeaderUI { }; /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of BasicTableUI. + * Instantiate it only within subclasses of {@code BasicTableHeaderUI}. */ public class MouseInputHandler implements MouseInputListener { diff --git a/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java b/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java index 29932c7aa3d29b6e9dfa4cc94a7ee73f354780bd..ad8a34d1e1715fff0ae50cca2cadd573c361b07b 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java @@ -730,9 +730,8 @@ public class BasicTableUI extends TableUI // /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of BasicTableUI. + * Instantiate it only within subclasses of {@code BasicTableUI}. * <p>As of Java 2 platform v1.3 this class is no longer used. * Instead <code>JTable</code> * overrides <code>processKeyBinding</code> to dispatch the event to @@ -761,9 +760,8 @@ public class BasicTableUI extends TableUI // /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of BasicTableUI. + * Instantiate it only within subclasses of {@code BasicTableUI}. */ public class FocusHandler implements FocusListener { // NOTE: This class exists only for backward compatability. All @@ -784,7 +782,6 @@ public class BasicTableUI extends TableUI // /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. * Instantiate it only within subclasses of BasicTableUI. */ diff --git a/src/share/classes/javax/swing/plaf/metal/MetalComboBoxUI.java b/src/share/classes/javax/swing/plaf/metal/MetalComboBoxUI.java index 3a7ef7f0d103c51e6ab5121debc3e0c788914cd3..e97416eca1e1d9dfbcdd4e843b9d283a44e8d25c 100644 --- a/src/share/classes/javax/swing/plaf/metal/MetalComboBoxUI.java +++ b/src/share/classes/javax/swing/plaf/metal/MetalComboBoxUI.java @@ -199,9 +199,8 @@ public class MetalComboBoxUI extends BasicComboBoxUI { } /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of <FooUI>. + * Instantiate it only within subclasses of {@code MetalComboBoxUI}. */ public class MetalPropertyChangeListener extends BasicComboBoxUI.PropertyChangeHandler { public void propertyChange(PropertyChangeEvent e) { @@ -244,9 +243,8 @@ public class MetalComboBoxUI extends BasicComboBoxUI { } /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of <FooUI>. + * Instantiate it only within subclasses of {@code MetalComboBoxUI}. */ public class MetalComboBoxLayoutManager extends BasicComboBoxUI.ComboBoxLayoutManager { public void layoutContainer( Container parent ) { @@ -356,9 +354,8 @@ public class MetalComboBoxUI extends BasicComboBoxUI { } /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of <FooUI>. + * Instantiate it only within subclasses of {@code MetalComboBoxUI}. * * This class is now obsolete and doesn't do anything and * is only included for backwards API compatibility. Do not call or diff --git a/src/share/classes/javax/swing/plaf/metal/MetalTabbedPaneUI.java b/src/share/classes/javax/swing/plaf/metal/MetalTabbedPaneUI.java index 2cf52393b4c410fede66b2f6b9b57d265bb6502a..1602ad6fe5b91b1994dde359881b73b64f1e5d5d 100644 --- a/src/share/classes/javax/swing/plaf/metal/MetalTabbedPaneUI.java +++ b/src/share/classes/javax/swing/plaf/metal/MetalTabbedPaneUI.java @@ -1196,9 +1196,8 @@ public class MetalTabbedPaneUI extends BasicTabbedPaneUI { } /** - * This inner class is marked "public" due to a compiler bug. * This class should be treated as a "protected" inner class. - * Instantiate it only within subclasses of MetalTabbedPaneUI. + * Instantiate it only within subclasses of {@code MetalTabbedPaneUI}. */ public class TabbedPaneLayout extends BasicTabbedPaneUI.TabbedPaneLayout { diff --git a/src/share/classes/javax/swing/text/GlyphPainter2.java b/src/share/classes/javax/swing/text/GlyphPainter2.java index 1e5403defe82ed3bc35f645f03061115a473b512..8b27ec93e4d693adf5c76939084ce768ccf928f3 100644 --- a/src/share/classes/javax/swing/text/GlyphPainter2.java +++ b/src/share/classes/javax/swing/text/GlyphPainter2.java @@ -172,6 +172,11 @@ class GlyphPainter2 extends GlyphView.GlyphPainter { //italic carets and we do not. TextHitInfo hit = layout.hitTestChar(x - (float)alloc.getX(), 0); int pos = hit.getInsertionIndex(); + + if (pos == v.getEndOffset()) { + pos--; + } + biasReturn[0] = hit.isLeadingEdge() ? Position.Bias.Forward : Position.Bias.Backward; return pos + v.getStartOffset(); } diff --git a/src/share/classes/javax/swing/text/GlyphView.java b/src/share/classes/javax/swing/text/GlyphView.java index d73ab6f618b49a0aae7b90235c8b5f7158dd6032..624f737b3768b3968a36e152cc69509ecc094f1d 100644 --- a/src/share/classes/javax/swing/text/GlyphView.java +++ b/src/share/classes/javax/swing/text/GlyphView.java @@ -541,7 +541,30 @@ public class GlyphView extends View implements TabableView, Cloneable { */ @Override public float getMinimumSpan(int axis) { - return super.getMinimumSpan(axis); + switch (axis) { + case View.X_AXIS: + if (minimumSpan < 0) { + minimumSpan = 0; + int p0 = getStartOffset(); + int p1 = getEndOffset(); + while (p1 > p0) { + int breakSpot = getBreakSpot(p0, p1); + if (breakSpot == BreakIterator.DONE) { + // the rest of the view is non-breakable + breakSpot = p0; + } + minimumSpan = Math.max(minimumSpan, + getPartialSpan(breakSpot, p1)); + // Note: getBreakSpot returns the *last* breakspot + p1 = breakSpot - 1; + } + } + return minimumSpan; + case View.Y_AXIS: + return super.getMinimumSpan(axis); + default: + throw new IllegalArgumentException("Invalid axis: " + axis); + } } /** diff --git a/src/share/classes/javax/swing/text/ParagraphView.java b/src/share/classes/javax/swing/text/ParagraphView.java index d06b3bc2bed3b6bd3dc0af9206ec973692b134b0..b88dd8731bb887090439bb59629b7d74ab50c55b 100644 --- a/src/share/classes/javax/swing/text/ParagraphView.java +++ b/src/share/classes/javax/swing/text/ParagraphView.java @@ -721,7 +721,34 @@ public class ParagraphView extends FlowView implements TabExpander { @Override protected SizeRequirements calculateMinorAxisRequirements(int axis, SizeRequirements r) { - return super.calculateMinorAxisRequirements(axis, r); + r = super.calculateMinorAxisRequirements(axis, r); + + float min = 0; + float glue = 0; + int n = getLayoutViewCount(); + for (int i = 0; i < n; i++) { + View v = getLayoutView(i); + float span = v.getMinimumSpan(axis); + if (v.getBreakWeight(axis, 0, v.getMaximumSpan(axis)) > View.BadBreakWeight) { + // find the longest non-breakable fragments at the view edges + int p0 = v.getStartOffset(); + int p1 = v.getEndOffset(); + float start = findEdgeSpan(v, axis, p0, p0, p1); + float end = findEdgeSpan(v, axis, p1, p0, p1); + glue += start; + min = Math.max(min, Math.max(span, glue)); + glue = end; + } else { + // non-breakable view + glue += span; + min = Math.max(min, glue); + } + } + r.minimum = Math.max(r.minimum, (int) min); + r.preferred = Math.max(r.minimum, r.preferred); + r.maximum = Math.max(r.preferred, r.maximum); + + return r; } /** diff --git a/src/share/classes/javax/swing/text/Utilities.java b/src/share/classes/javax/swing/text/Utilities.java index da77d834b431201657fbedea14416ccb97889f8d..aaea4812313073fac8ef7723e47644d6af5cfe39 100644 --- a/src/share/classes/javax/swing/text/Utilities.java +++ b/src/share/classes/javax/swing/text/Utilities.java @@ -395,10 +395,10 @@ public class Utilities { // the length of the string measured as a whole may differ from // the sum of individual character lengths, for example if // fractional metrics are enabled; and we must guard from this. - while (metrics.charsWidth(txt, txtOffset, offset + 1) > (x - x0)) { + while (offset > 0 && metrics.charsWidth(txt, txtOffset, offset) > (x - x0)) { offset--; } - return (offset < 0 ? 0 : offset); + return offset; } currX = nextX; } diff --git a/src/share/classes/javax/swing/text/html/CSS.java b/src/share/classes/javax/swing/text/html/CSS.java index 5d62dcdfa4738284e4c26ba421c544efeb802708..60efa6cc0131c378321fc7a36dfe004220795aca 100644 --- a/src/share/classes/javax/swing/text/html/CSS.java +++ b/src/share/classes/javax/swing/text/html/CSS.java @@ -62,7 +62,6 @@ import javax.swing.text.*; * <li>background-repeat * <li>background-position * <li>background - * <li>background-repeat * <li>text-decoration (with the exception of blink and overline) * <li>vertical-align (only sup and super) * <li>text-align (justify is treated as center) @@ -75,7 +74,18 @@ import javax.swing.text.*; * <li>padding-right * <li>padding-bottom * <li>padding-left + * <li>padding + * <li>border-top-style + * <li>border-right-style + * <li>border-bottom-style + * <li>border-left-style * <li>border-style (only supports inset, outset and none) + * <li>border-top-color + * <li>border-right-color + * <li>border-bottom-color + * <li>border-left-color + * <li>border-color + * <li>list-style-image * <li>list-style-type * <li>list-style-position * </ul> diff --git a/src/share/classes/javax/swing/text/html/parser/Parser.java b/src/share/classes/javax/swing/text/html/parser/Parser.java index 48205eb35c53763b733204238db28035d567140f..2638f05bf17bfca899e9510ca3d395ea3af0d9fc 100644 --- a/src/share/classes/javax/swing/text/html/parser/Parser.java +++ b/src/share/classes/javax/swing/text/html/parser/Parser.java @@ -966,6 +966,9 @@ class Parser implements DTDConstants { char data[] = {'&'}; return data; } + + boolean semicolon = false; + switch (ch) { case '\n': ln++; @@ -985,6 +988,8 @@ class Parser implements DTDConstants { break; case ';': + semicolon = true; + ch = readCh(); break; } @@ -1006,7 +1011,7 @@ class Parser implements DTDConstants { return new char[0]; } /* given that there is not a match restore the entity reference */ - String str = "&" + nm + ";"; + String str = "&" + nm + (semicolon ? ";" : ""); char b[] = new char[str.length()]; str.getChars(0, b.length, b, 0); diff --git a/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java b/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java index bc7991c668fec1518cb49ff6afbcd5491180078a..0426389e94d52d6beeca831de7ff8394154f794d 100644 --- a/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java +++ b/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java @@ -73,7 +73,7 @@ public class MsgAppletViewer_sv extends ListResourceBundle { {"appletviewer.parse.warning.embed.requiresheight", "Varning: <embed>-taggen kr\u00E4ver ett h\u00F6jdattribut."}, {"appletviewer.parse.warning.embed.requireswidth", "Varning: <embed>-taggen kr\u00E4ver ett breddattribut."}, {"appletviewer.parse.warning.appnotLongersupported", "Varning: <app>-taggen st\u00F6ds inte l\u00E4ngre, anv\u00E4nd <applet> ist\u00E4llet:"}, - {"appletviewer.usage", "Syntax: appletviewer <alternativ> url:er \n\nd\u00E4r <alternativ> inkluderar:\n -debug Startar appletvisning i Java-fels\u00F6kningen\n -encoding <kodning> Anger teckenkodning som anv\u00E4nds i HTML-filer\n -J<k\u00F6rningsflagga> \u00D6verf\u00F6r argument till Java-tolkningen\n\nAlternativet -J \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande."}, + {"appletviewer.usage", "Syntax: appletviewer-<alternativ> url:er \n\nd\u00E4r <alternativ> inkluderar:\n -debug Startar appletvisning i Java-fels\u00F6kningen\n -encoding <kodning> Anger teckenkodning som anv\u00E4nds i HTML-filer\n -J<k\u00F6rningsflagga> \u00D6verf\u00F6r argument till Java-tolkningen\n\nAlternativet -J \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande."}, {"appletviewer.main.err.unsupportedopt", "Alternativ som inte st\u00F6ds: {0}"}, {"appletviewer.main.err.unrecognizedarg", "Ok\u00E4nt argument: {0}"}, {"appletviewer.main.err.dupoption", "Duplicerat alternativ: {0}"}, @@ -152,7 +152,7 @@ public class MsgAppletViewer_sv extends ListResourceBundle { {"appletprops.label.unsignedapplet", "Till\u00E5t osignerade appletar:"}, {"appletprops.choice.unsignedapplet.no", "Nej"}, {"appletprops.choice.unsignedapplet.yes", "Ja"}, - {"appletprops.button.apply", "Till\u00E4mpa"}, + {"appletprops.button.apply", "Anv\u00E4nd"}, {"appletprops.button.cancel", "Avbryt"}, {"appletprops.button.reset", "\u00C5terst\u00E4ll"}, {"appletprops.apply.exception", "Kunde inte spara egenskaper: {0}"}, diff --git a/src/share/classes/sun/misc/FloatingDecimal.java b/src/share/classes/sun/misc/FloatingDecimal.java index f6a41301f5497faa40b88495bd79685c25e8e145..7c621f91a97ae1566934996e82bf6f7278db31f2 100644 --- a/src/share/classes/sun/misc/FloatingDecimal.java +++ b/src/share/classes/sun/misc/FloatingDecimal.java @@ -30,7 +30,7 @@ import sun.misc.DoubleConsts; import sun.misc.FloatConsts; import java.util.regex.*; -public class FloatingDecimal{ +public strictfp class FloatingDecimal{ boolean isExceptional; boolean isNegative; int decExponent; diff --git a/src/share/classes/sun/misc/FormattedFloatingDecimal.java b/src/share/classes/sun/misc/FormattedFloatingDecimal.java index e9aac45f08e20380d97e7aedf89a7ff2324d4364..9d54b0982523ba09ffdc9d9447e02b5a27ee9c71 100644 --- a/src/share/classes/sun/misc/FormattedFloatingDecimal.java +++ b/src/share/classes/sun/misc/FormattedFloatingDecimal.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,7 +30,7 @@ import sun.misc.DoubleConsts; import sun.misc.FloatConsts; import java.util.regex.*; -public class FormattedFloatingDecimal{ +public strictfp class FormattedFloatingDecimal{ boolean isExceptional; boolean isNegative; int decExponent; // value set at construction, then immutable diff --git a/src/share/classes/sun/misc/FpUtils.java b/src/share/classes/sun/misc/FpUtils.java index 21ea7c29a4431a7afb964fd03c57d2e345f6d5fa..af84f24cb86bdb6f2d32631efa4e674f9ebb51df 100644 --- a/src/share/classes/sun/misc/FpUtils.java +++ b/src/share/classes/sun/misc/FpUtils.java @@ -531,10 +531,9 @@ public class FpUtils { * Return {@code d} × * 2<sup>{@code scale_factor}</sup> rounded as if performed * by a single correctly rounded floating-point multiply to a - * member of the double value set. See <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#9208">§4.2.3</a> - * of the <a href="http://java.sun.com/docs/books/jls/html/">Java - * Language Specification</a> for a discussion of floating-point + * member of the double value set. See section 4.2.3 of + * <cite>The Java™ Language Specification</cite> + * for a discussion of floating-point * value sets. If the exponent of the result is between the * {@code double}'s minimum exponent and maximum exponent, * the answer is calculated exactly. If the exponent of the @@ -641,11 +640,10 @@ public class FpUtils { * Return {@code f} × * 2<sup>{@code scale_factor}</sup> rounded as if performed * by a single correctly rounded floating-point multiply to a - * member of the float value set. See <a - * href="http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#9208">§4.2.3</a> - * of the <a href="http://java.sun.com/docs/books/jls/html/">Java - * Language Specification</a> for a discussion of floating-point - * value set. If the exponent of the result is between the + * member of the float value set. See section 4.2.3 of + * <cite>The Java™ Language Specification</cite> + * for a discussion of floating-point + * value sets. If the exponent of the result is between the * {@code float}'s minimum exponent and maximum exponent, the * answer is calculated exactly. If the exponent of the result * would be larger than {@code float}'s maximum exponent, an diff --git a/src/share/classes/sun/net/www/protocol/jar/Handler.java b/src/share/classes/sun/net/www/protocol/jar/Handler.java index 343db5081e6f070a320f398b86436b1c04f04c54..62686c6b99ebc42875c71ce501f098873e16047a 100644 --- a/src/share/classes/sun/net/www/protocol/jar/Handler.java +++ b/src/share/classes/sun/net/www/protocol/jar/Handler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,9 +25,8 @@ package sun.net.www.protocol.jar; -import java.io.*; +import java.io.IOException; import java.net.*; -import java.util.*; import sun.net.www.ParseUtil; /* @@ -42,7 +41,7 @@ public class Handler extends java.net.URLStreamHandler { return new JarURLConnection(u, this); } - private int indexOfBangSlash(String spec) { + private static int indexOfBangSlash(String spec) { int indexOfBang = spec.length(); while((indexOfBang = spec.lastIndexOf('!', indexOfBang)) != -1) { if ((indexOfBang != (spec.length() - 1)) && @@ -55,6 +54,75 @@ public class Handler extends java.net.URLStreamHandler { return -1; } + /** + * Compare two jar URLs + */ + @Override + protected boolean sameFile(URL u1, URL u2) { + if (!u1.getProtocol().equals("jar") || !u2.getProtocol().equals("jar")) + return false; + + String file1 = u1.getFile(); + String file2 = u2.getFile(); + int sep1 = file1.indexOf(separator); + int sep2 = file2.indexOf(separator); + + if (sep1 == -1 || sep2 == -1) { + return super.sameFile(u1, u2); + } + + String entry1 = file1.substring(sep1 + 2); + String entry2 = file2.substring(sep2 + 2); + + if (!entry1.equals(entry2)) + return false; + + URL enclosedURL1 = null, enclosedURL2 = null; + try { + enclosedURL1 = new URL(file1.substring(0, sep1)); + enclosedURL2 = new URL(file2.substring(0, sep2)); + } catch (MalformedURLException unused) { + return super.sameFile(u1, u2); + } + + if (!super.sameFile(enclosedURL1, enclosedURL2)) { + return false; + } + + return true; + } + + @Override + protected int hashCode(URL u) { + int h = 0; + + String protocol = u.getProtocol(); + if (protocol != null) + h += protocol.hashCode(); + + String file = u.getFile(); + int sep = file.indexOf(separator); + + if (sep == -1) + return h + file.hashCode(); + + URL enclosedURL = null; + String fileWithoutEntry = file.substring(0, sep); + try { + enclosedURL = new URL(fileWithoutEntry); + h += enclosedURL.hashCode(); + } catch (MalformedURLException unused) { + h += fileWithoutEntry.hashCode(); + } + + String entry = file.substring(sep + 2); + h += entry.hashCode(); + + return h; + } + + + @Override protected void parseURL(URL url, String spec, int start, int limit) { String file = null; diff --git a/src/share/classes/sun/nio/ch/DatagramChannelImpl.java b/src/share/classes/sun/nio/ch/DatagramChannelImpl.java index 053f23977c760c9a977ed3979e2650f0444b2294..2a0c0eb52574fe287dfa292380facffd151c8bf7 100644 --- a/src/share/classes/sun/nio/ch/DatagramChannelImpl.java +++ b/src/share/classes/sun/nio/ch/DatagramChannelImpl.java @@ -388,9 +388,8 @@ class DatagramChannelImpl // we must instead use a nonempty buffer, otherwise the call // will not block waiting for a datagram on some platforms. int newSize = Math.max(rem, 1); - ByteBuffer bb = null; + ByteBuffer bb = Util.getTemporaryDirectBuffer(newSize); try { - bb = Util.getTemporaryDirectBuffer(newSize); int n = receiveIntoNativeBuffer(fd, bb, newSize, 0); bb.flip(); if (n > 0 && rem > 0) @@ -482,9 +481,8 @@ class DatagramChannelImpl assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - ByteBuffer bb = null; + ByteBuffer bb = Util.getTemporaryDirectBuffer(rem); try { - bb = Util.getTemporaryDirectBuffer(rem); bb.put(src); bb.flip(); // Do not update src until we see how many bytes were written @@ -766,10 +764,10 @@ class DatagramChannelImpl // check multicast address is compatible with this socket if (group instanceof Inet4Address) { if (family == StandardProtocolFamily.INET6 && !Net.canIPv6SocketJoinIPv4Group()) - throw new IllegalArgumentException("Group is not IPv4 multicast address"); + throw new IllegalArgumentException("IPv6 socket cannot join IPv4 multicast group"); } else if (group instanceof Inet6Address) { if (family != StandardProtocolFamily.INET6) - throw new IllegalArgumentException("Group is not IPv6 multicast address"); + throw new IllegalArgumentException("Only IPv6 sockets can join IPv6 multicast group"); } else { throw new IllegalArgumentException("Address type not supported"); } diff --git a/src/share/classes/sun/nio/ch/IOUtil.java b/src/share/classes/sun/nio/ch/IOUtil.java index 7ea8eca6c73a462dd80625430bb44fafc5da3544..559d647c8fff70cd4404bf6bdf8e398b1271b327 100644 --- a/src/share/classes/sun/nio/ch/IOUtil.java +++ b/src/share/classes/sun/nio/ch/IOUtil.java @@ -50,9 +50,8 @@ class IOUtil { int lim = src.limit(); assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - ByteBuffer bb = null; + ByteBuffer bb = Util.getTemporaryDirectBuffer(rem); try { - bb = Util.getTemporaryDirectBuffer(rem); bb.put(src); bb.flip(); // Do not update src until we see how many bytes were written @@ -187,9 +186,8 @@ class IOUtil { return readIntoNativeBuffer(fd, dst, position, nd, lock); // Substitute a native buffer - ByteBuffer bb = null; + ByteBuffer bb = Util.getTemporaryDirectBuffer(dst.remaining()); try { - bb = Util.getTemporaryDirectBuffer(dst.remaining()); int n = readIntoNativeBuffer(fd, bb, position, nd, lock); bb.flip(); if (n > 0) diff --git a/src/share/classes/sun/rmi/transport/ObjectTable.java b/src/share/classes/sun/rmi/transport/ObjectTable.java index acfa3a93c34295c4814fb03ddbe2492407e8cfd2..8c3e5cf2900954c206b98dd580cf77c85325d4b7 100644 --- a/src/share/classes/sun/rmi/transport/ObjectTable.java +++ b/src/share/classes/sun/rmi/transport/ObjectTable.java @@ -175,25 +175,26 @@ public final class ObjectTable { DGCImpl.dgcLog.log(Log.VERBOSE, "add object " + oe); } - Remote impl = target.getImpl(); - if (impl == null) { - throw new ExportException( - "internal error: attempt to export collected object"); - } - synchronized (tableLock) { - if (objTable.containsKey(oe)) { - throw new ExportException( - "internal error: ObjID already in use"); - } else if (implTable.containsKey(weakImpl)) { - throw new ExportException("object already exported"); - } + /** + * Do nothing if impl has already been collected (see 6597112). Check while + * holding tableLock to ensure that Reaper cannot process weakImpl in between + * null check and put/increment effects. + */ + if (target.getImpl() != null) { + if (objTable.containsKey(oe)) { + throw new ExportException( + "internal error: ObjID already in use"); + } else if (implTable.containsKey(weakImpl)) { + throw new ExportException("object already exported"); + } - objTable.put(oe, target); - implTable.put(weakImpl, target); + objTable.put(oe, target); + implTable.put(weakImpl, target); - if (!target.isPermanent()) { - incrementKeepAliveCount(); + if (!target.isPermanent()) { + incrementKeepAliveCount(); + } } } } diff --git a/src/share/classes/sun/security/jgss/krb5/InitSecContextToken.java b/src/share/classes/sun/security/jgss/krb5/InitSecContextToken.java index 4ad41ba1169dee8c6945dbf0ab81c8a1e958e916..8e35ef8db296b2a3708d53077dc1a3131306cbcf 100644 --- a/src/share/classes/sun/security/jgss/krb5/InitSecContextToken.java +++ b/src/share/classes/sun/security/jgss/krb5/InitSecContextToken.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -127,8 +127,8 @@ class InitSecContextToken extends InitialToken { //System.out.println("Sub-Session Key Missing in Authenticator.\n"); } - OverloadedChecksum gssChecksum = - new OverloadedChecksum(context, apReq.getChecksum(), sessionKey); + OverloadedChecksum gssChecksum = new OverloadedChecksum( + context, apReq.getChecksum(), sessionKey, subKey); gssChecksum.setContextFlags(context); Credentials delegCred = gssChecksum.getDelegatedCreds(); if (delegCred != null) { diff --git a/src/share/classes/sun/security/jgss/krb5/InitialToken.java b/src/share/classes/sun/security/jgss/krb5/InitialToken.java index 309e611a89ec5ee5834af58148017827a470b90a..8e462fdc4866f2697614c6ca093583d131268500 100644 --- a/src/share/classes/sun/security/jgss/krb5/InitialToken.java +++ b/src/share/classes/sun/security/jgss/krb5/InitialToken.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -210,8 +210,8 @@ abstract class InitialToken extends Krb5Token { // be passed in if this checksum type denotes a // raw_checksum. In that case, make Checksum class krb5 // internal. - public OverloadedChecksum(Krb5Context context, - Checksum checksum, EncryptionKey key) + public OverloadedChecksum(Krb5Context context, Checksum checksum, + EncryptionKey key, EncryptionKey subKey) throws GSSException, KrbException, IOException { int pos = 0; @@ -283,9 +283,17 @@ abstract class InitialToken extends Krb5Token { new KrbCred(credBytes, EncryptionKey.NULL_KEY). getDelegatedCreds()[0]; } else { - delegCreds = - new KrbCred(credBytes, key). - getDelegatedCreds()[0]; + KrbCred cred; + try { + cred = new KrbCred(credBytes, key); + } catch (KrbException e) { + if (subKey != null) { + cred = new KrbCred(credBytes, subKey); + } else { + throw e; + } + } + delegCreds = cred.getDelegatedCreds()[0]; } } } diff --git a/src/share/classes/sun/security/krb5/KrbApReq.java b/src/share/classes/sun/security/krb5/KrbApReq.java index 409ca4e8205d3951a2c4bc5f745f6e552d9c7c58..4854cd3d8256a5d631270351943947ea68749f08 100644 --- a/src/share/classes/sun/security/krb5/KrbApReq.java +++ b/src/share/classes/sun/security/krb5/KrbApReq.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,6 +37,7 @@ import sun.security.krb5.internal.rcache.*; import java.net.InetAddress; import sun.security.util.*; import java.io.IOException; +import java.util.Arrays; /** * This class encapsulates a KRB-AP-REQ that a client sends to a @@ -54,9 +55,6 @@ public class KrbApReq { private static CacheTable table = new CacheTable(); private static boolean DEBUG = Krb5.DEBUG; - // default is address-less tickets - private boolean KDC_EMPTY_ADDRESSES_ALLOWED = true; - /** * Contructs a AP-REQ message to send to the peer. * @param tgsCred the <code>Credentials</code> to be used to construct the @@ -312,23 +310,19 @@ public class KrbApReq { table.put(client, time, currTime.getTime()); } - // check to use addresses in tickets - if (Config.getInstance().useAddresses()) { - KDC_EMPTY_ADDRESSES_ALLOWED = false; - } - - // sender host address - HostAddress sender = null; if (initiator != null) { - sender = new HostAddress(initiator); - } - - if (sender != null || !KDC_EMPTY_ADDRESSES_ALLOWED) { - if (enc_ticketPart.caddr != null) { - if (sender == null) - throw new KrbApErrException(Krb5.KRB_AP_ERR_BADADDR); - if (!enc_ticketPart.caddr.inList(sender)) - throw new KrbApErrException(Krb5.KRB_AP_ERR_BADADDR); + // sender host address + HostAddress sender = new HostAddress(initiator); + if (enc_ticketPart.caddr != null + && !enc_ticketPart.caddr.inList(sender)) { + if (DEBUG) { + System.out.println(">>> KrbApReq: initiator is " + + sender.getInetAddress() + + ", but caddr is " + + Arrays.toString( + enc_ticketPart.caddr.getInetAddresses())); + } + throw new KrbApErrException(Krb5.KRB_AP_ERR_BADADDR); } } diff --git a/src/share/classes/sun/security/krb5/internal/NetClient.java b/src/share/classes/sun/security/krb5/internal/NetClient.java index 36e9a5c59c1b2767f60d724b068b78265d35b88e..2e9da75fb21771feaee5e5fec5a45727727e6cdb 100644 --- a/src/share/classes/sun/security/krb5/internal/NetClient.java +++ b/src/share/classes/sun/security/krb5/internal/NetClient.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -59,7 +59,8 @@ class TCPClient extends NetClient { TCPClient(String hostname, int port, int timeout) throws IOException { - tcpSocket = new Socket(hostname, port); + tcpSocket = new Socket(); + tcpSocket.connect(new InetSocketAddress(hostname, port), timeout); out = new BufferedOutputStream(tcpSocket.getOutputStream()); in = new BufferedInputStream(tcpSocket.getInputStream()); tcpSocket.setSoTimeout(timeout); diff --git a/src/share/classes/sun/security/pkcs/PKCS7.java b/src/share/classes/sun/security/pkcs/PKCS7.java index e80beb7372cf65c105dd8f4b581120ddc006696d..72a2e5f9f3ef08c65240b1e08700e22f32c7060a 100644 --- a/src/share/classes/sun/security/pkcs/PKCS7.java +++ b/src/share/classes/sun/security/pkcs/PKCS7.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,6 +38,7 @@ import java.security.*; import sun.security.util.*; import sun.security.x509.AlgorithmId; import sun.security.x509.CertificateIssuerName; +import sun.security.x509.KeyUsageExtension; import sun.security.x509.X509CertImpl; import sun.security.x509.X509CertInfo; import sun.security.x509.X509CRLImpl; @@ -492,7 +493,7 @@ public class PKCS7 { // CRLs (optional) if (crls != null && crls.length != 0) { // cast to X509CRLImpl[] since X509CRLImpl implements DerEncoder - Set<X509CRLImpl> implCRLs = new HashSet<X509CRLImpl>(crls.length); + Set<X509CRLImpl> implCRLs = new HashSet<>(crls.length); for (X509CRL crl: crls) { if (crl instanceof X509CRLImpl) implCRLs.add((X509CRLImpl) crl); @@ -529,6 +530,168 @@ public class PKCS7 { block.encode(out); } + /** + * Verifying signed data using an external chunked data source. + */ + public static class PKCS7Verifier { + + private final SignerInfo si; // Signer to verify + private final MessageDigest md; // MessageDigest object for chunks + private final Signature sig; // Signature object for chunks + + private PKCS7Verifier(SignerInfo si, MessageDigest md, Signature sig) { + this.si = si; + this.md = md; + this.sig = sig; + } + + public static PKCS7Verifier from(PKCS7 block, SignerInfo si) throws + SignatureException, NoSuchAlgorithmException { + + try { + MessageDigest md = null; + Signature sig; + + ContentInfo content = block.getContentInfo(); + String digestAlgname = si.getDigestAlgorithmId().getName(); + + // if there are authenticate attributes, feed data chunks to + // the message digest. In this case, pv.md is not null + if (si.authenticatedAttributes != null) { + // first, check content type + ObjectIdentifier contentType = (ObjectIdentifier) + si.authenticatedAttributes.getAttributeValue( + PKCS9Attribute.CONTENT_TYPE_OID); + if (contentType == null || + !contentType.equals(content.contentType)) + return null; // contentType does not match, bad SignerInfo + + // now, check message digest + byte[] messageDigest = (byte[]) + si.authenticatedAttributes.getAttributeValue( + PKCS9Attribute.MESSAGE_DIGEST_OID); + + if (messageDigest == null) // fail if there is no message digest + return null; + + md = MessageDigest.getInstance(digestAlgname); + } + + // put together digest algorithm and encryption algorithm + // to form signing algorithm + String encryptionAlgname = + si.getDigestEncryptionAlgorithmId().getName(); + + // Workaround: sometimes the encryptionAlgname is actually + // a signature name + String tmp = AlgorithmId.getEncAlgFromSigAlg(encryptionAlgname); + if (tmp != null) encryptionAlgname = tmp; + String algname = AlgorithmId.makeSigAlg( + digestAlgname, encryptionAlgname); + + sig = Signature.getInstance(algname); + X509Certificate cert = si.getCertificate(block); + + if (cert == null) { + return null; + } + if (cert.hasUnsupportedCriticalExtension()) { + throw new SignatureException("Certificate has unsupported " + + "critical extension(s)"); + } + + // Make sure that if the usage of the key in the certificate is + // restricted, it can be used for digital signatures. + // XXX We may want to check for additional extensions in the + // future. + boolean[] keyUsageBits = cert.getKeyUsage(); + if (keyUsageBits != null) { + KeyUsageExtension keyUsage; + try { + // We don't care whether or not this extension was marked + // critical in the certificate. + // We're interested only in its value (i.e., the bits set) + // and treat the extension as critical. + keyUsage = new KeyUsageExtension(keyUsageBits); + } catch (IOException ioe) { + throw new SignatureException("Failed to parse keyUsage " + + "extension"); + } + + boolean digSigAllowed = ((Boolean)keyUsage.get( + KeyUsageExtension.DIGITAL_SIGNATURE)).booleanValue(); + + boolean nonRepuAllowed = ((Boolean)keyUsage.get( + KeyUsageExtension.NON_REPUDIATION)).booleanValue(); + + if (!digSigAllowed && !nonRepuAllowed) { + throw new SignatureException("Key usage restricted: " + + "cannot be used for " + + "digital signatures"); + } + } + + PublicKey key = cert.getPublicKey(); + sig.initVerify(key); + return new PKCS7Verifier(si, md, sig); + } catch (IOException e) { + throw new SignatureException("IO error verifying signature:\n" + + e.getMessage()); + + } catch (InvalidKeyException e) { + throw new SignatureException("InvalidKey: " + e.getMessage()); + + } + } + + public void update(byte[] data, int off, int end) + throws SignatureException { + if (md != null) { + md.update(data, off, end-off); + } else { + sig.update(data, off, end-off); + } + } + + public SignerInfo verify() throws SignatureException { + try { + // if there are authenticate attributes, get the message + // digest and compare it with the digest of data + if (md != null) { + // now, check message digest + byte[] messageDigest = (byte[]) + si.authenticatedAttributes.getAttributeValue( + PKCS9Attribute.MESSAGE_DIGEST_OID); + + byte[] computedMessageDigest = md.digest(); + + if (!MessageDigest.isEqual( + messageDigest, computedMessageDigest)) { + return null; + } + + // message digest attribute matched + // digest of original data + + // the data actually signed is the DER encoding of + // the authenticated attributes (tagged with + // the "SET OF" tag, not 0xA0). + byte[] dataSigned = si.authenticatedAttributes.getDerEncoding(); + sig.update(dataSigned); + } + + if (sig.verify(si.getEncryptedDigest())) { + return si; + } + + } catch (IOException e) { + throw new SignatureException("IO error verifying signature:\n" + + e.getMessage()); + } + return null; + } + } + /** * This verifies a given SignerInfo. * @@ -554,19 +717,16 @@ public class PKCS7 { public SignerInfo[] verify(byte[] bytes) throws NoSuchAlgorithmException, SignatureException { - Vector<SignerInfo> intResult = new Vector<SignerInfo>(); + List<SignerInfo> intResult = new ArrayList<>(); for (int i = 0; i < signerInfos.length; i++) { SignerInfo signerInfo = verify(signerInfos[i], bytes); if (signerInfo != null) { - intResult.addElement(signerInfo); + intResult.add(signerInfo); } } - if (intResult.size() != 0) { - - SignerInfo[] result = new SignerInfo[intResult.size()]; - intResult.copyInto(result); - return result; + if (!intResult.isEmpty()) { + return intResult.toArray(new SignerInfo[intResult.size()]); } return null; } diff --git a/src/share/classes/sun/security/pkcs/SignerInfo.java b/src/share/classes/sun/security/pkcs/SignerInfo.java index af57496267802f5f0e1e633ab87a2f3afdac65dc..6addf69e4165639ed91aa69ca37692f965583bc6 100644 --- a/src/share/classes/sun/security/pkcs/SignerInfo.java +++ b/src/share/classes/sun/security/pkcs/SignerInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -230,7 +230,7 @@ public class SignerInfo implements DerEncoder { if (userCert == null) return null; - ArrayList<X509Certificate> certList = new ArrayList<X509Certificate>(); + ArrayList<X509Certificate> certList = new ArrayList<>(); certList.add(userCert); X509Certificate[] pkcsCerts = block.getCertificates(); @@ -276,132 +276,20 @@ public class SignerInfo implements DerEncoder { /* Returns null if verify fails, this signerInfo if verify succeeds. */ SignerInfo verify(PKCS7 block, byte[] data) - throws NoSuchAlgorithmException, SignatureException { - - try { - - ContentInfo content = block.getContentInfo(); - if (data == null) { - data = content.getContentBytes(); - } - - String digestAlgname = getDigestAlgorithmId().getName(); - - byte[] dataSigned; - - // if there are authenticate attributes, get the message - // digest and compare it with the digest of data - if (authenticatedAttributes == null) { - dataSigned = data; - } else { - - // first, check content type - ObjectIdentifier contentType = (ObjectIdentifier) - authenticatedAttributes.getAttributeValue( - PKCS9Attribute.CONTENT_TYPE_OID); - if (contentType == null || - !contentType.equals(content.contentType)) - return null; // contentType does not match, bad SignerInfo - - // now, check message digest - byte[] messageDigest = (byte[]) - authenticatedAttributes.getAttributeValue( - PKCS9Attribute.MESSAGE_DIGEST_OID); - - if (messageDigest == null) // fail if there is no message digest - return null; - - MessageDigest md = MessageDigest.getInstance(digestAlgname); - byte[] computedMessageDigest = md.digest(data); - - if (messageDigest.length != computedMessageDigest.length) - return null; - for (int i = 0; i < messageDigest.length; i++) { - if (messageDigest[i] != computedMessageDigest[i]) - return null; - } - - // message digest attribute matched - // digest of original data - - // the data actually signed is the DER encoding of - // the authenticated attributes (tagged with - // the "SET OF" tag, not 0xA0). - dataSigned = authenticatedAttributes.getDerEncoding(); + throws NoSuchAlgorithmException, SignatureException { + + PKCS7.PKCS7Verifier p7v = PKCS7.PKCS7Verifier.from(block, this); + if (p7v == null) return null; + if (data == null) { + try { + data = block.getContentInfo().getContentBytes(); + } catch (IOException e) { + throw new SignatureException("IO error verifying signature:\n" + + e.getMessage()); } - - // put together digest algorithm and encryption algorithm - // to form signing algorithm - String encryptionAlgname = - getDigestEncryptionAlgorithmId().getName(); - - // Workaround: sometimes the encryptionAlgname is actually - // a signature name - String tmp = AlgorithmId.getEncAlgFromSigAlg(encryptionAlgname); - if (tmp != null) encryptionAlgname = tmp; - String algname = AlgorithmId.makeSigAlg( - digestAlgname, encryptionAlgname); - - Signature sig = Signature.getInstance(algname); - X509Certificate cert = getCertificate(block); - - if (cert == null) { - return null; - } - if (cert.hasUnsupportedCriticalExtension()) { - throw new SignatureException("Certificate has unsupported " - + "critical extension(s)"); - } - - // Make sure that if the usage of the key in the certificate is - // restricted, it can be used for digital signatures. - // XXX We may want to check for additional extensions in the - // future. - boolean[] keyUsageBits = cert.getKeyUsage(); - if (keyUsageBits != null) { - KeyUsageExtension keyUsage; - try { - // We don't care whether or not this extension was marked - // critical in the certificate. - // We're interested only in its value (i.e., the bits set) - // and treat the extension as critical. - keyUsage = new KeyUsageExtension(keyUsageBits); - } catch (IOException ioe) { - throw new SignatureException("Failed to parse keyUsage " - + "extension"); - } - - boolean digSigAllowed = ((Boolean)keyUsage.get( - KeyUsageExtension.DIGITAL_SIGNATURE)).booleanValue(); - - boolean nonRepuAllowed = ((Boolean)keyUsage.get( - KeyUsageExtension.NON_REPUDIATION)).booleanValue(); - - if (!digSigAllowed && !nonRepuAllowed) { - throw new SignatureException("Key usage restricted: " - + "cannot be used for " - + "digital signatures"); - } - } - - PublicKey key = cert.getPublicKey(); - sig.initVerify(key); - - sig.update(dataSigned); - - if (sig.verify(encryptedDigest)) { - return this; - } - - } catch (IOException e) { - throw new SignatureException("IO error verifying signature:\n" + - e.getMessage()); - - } catch (InvalidKeyException e) { - throw new SignatureException("InvalidKey: " + e.getMessage()); - } - return null; + p7v.update(data, 0, data.length); + return p7v.verify(); } /* Verify the content of the pkcs7 block. */ diff --git a/src/share/classes/sun/security/pkcs11/Config.java b/src/share/classes/sun/security/pkcs11/Config.java index ecaadccfdc42bfcf4567012fe65c708c5812afc8..6506e40e9663d5cdf6a0daaf4f9e2fef8e593797 100644 --- a/src/share/classes/sun/security/pkcs11/Config.java +++ b/src/share/classes/sun/security/pkcs11/Config.java @@ -343,6 +343,7 @@ final class Config { st.wordChars('{', '{'); // need {} for property subst st.wordChars('}', '}'); st.wordChars('*', '*'); + st.wordChars('+', '+'); st.wordChars('~', '~'); // XXX check ASCII table and add all other characters except special diff --git a/src/share/classes/sun/security/pkcs11/SessionManager.java b/src/share/classes/sun/security/pkcs11/SessionManager.java index 8831e4e960015da8b0b12600946f11874309819f..348de3a1dced1b60cea1d77d5c3cd3ea7ad2ab8d 100644 --- a/src/share/classes/sun/security/pkcs11/SessionManager.java +++ b/src/share/classes/sun/security/pkcs11/SessionManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -76,6 +76,9 @@ final class SessionManager { // maximum number of sessions to open with this token private final int maxSessions; + // total number of active sessions + private int activeSessions; + // pool of available object sessions private final Pool objSessions; @@ -115,11 +118,6 @@ final class SessionManager { return (maxSessions <= DEFAULT_MAX_SESSIONS); } - // returns the total number of active sessions - int totalSessionCount() { - return SessionRef.totalCount(); - } - synchronized Session getObjSession() throws PKCS11Exception { Session session = objSessions.poll(); if (session != null) { @@ -141,7 +139,7 @@ final class SessionManager { // create a new session rather than re-using an obj session // that avoids potential expensive cancels() for Signatures & RSACipher if (maxSessions == Integer.MAX_VALUE || - totalSessionCount() < maxSessions) { + activeSessions < maxSessions) { session = openSession(); return ensureValid(session); } @@ -164,7 +162,7 @@ final class SessionManager { if (debug != null) { String location = new Exception().getStackTrace()[2].toString(); System.out.println("Killing session (" + location + ") active: " - + totalSessionCount()); + + activeSessions); } closeSession(session); return null; @@ -189,7 +187,7 @@ final class SessionManager { } if (debug != null) { System.out.println("Demoting session, active: " + - totalSessionCount()); + activeSessions); } boolean present = objSessions.remove(session); if (present == false) { @@ -202,16 +200,16 @@ final class SessionManager { private Session openSession() throws PKCS11Exception { if ((maxSessions != Integer.MAX_VALUE) && - (totalSessionCount() >= maxSessions)) { + (activeSessions >= maxSessions)) { throw new ProviderException("No more sessions available"); } long id = token.p11.C_OpenSession (token.provider.slotID, openSessionFlags, null, null); Session session = new Session(token, id); + activeSessions++; if (debug != null) { - int currTotal = totalSessionCount(); - if (currTotal > maxActiveSessions) { - maxActiveSessions = currTotal; + if (activeSessions > maxActiveSessions) { + maxActiveSessions = activeSessions; if (maxActiveSessions % 10 == 0) { System.out.println("Open sessions: " + maxActiveSessions); } @@ -222,6 +220,7 @@ final class SessionManager { private void closeSession(Session session) { session.close(); + activeSessions--; } private static final class Pool { @@ -275,7 +274,7 @@ final class SessionManager { } if (debug != null) { System.out.println("Closing " + i + " idle sessions, active: " - + mgr.totalSessionCount()); + + mgr.activeSessions); } List<Session> subList = pool.subList(0, i); subList.clear(); diff --git a/src/share/classes/sun/security/provider/certpath/CrlRevocationChecker.java b/src/share/classes/sun/security/provider/certpath/CrlRevocationChecker.java index 6738c39260f2f8636ecd48255df65bed67bfe53c..1f692f235b6e8b5bb2d3e658d934c7c66958ca12 100644 --- a/src/share/classes/sun/security/provider/certpath/CrlRevocationChecker.java +++ b/src/share/classes/sun/security/provider/certpath/CrlRevocationChecker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -249,7 +249,7 @@ class CrlRevocationChecker extends PKIXCertPathChecker { throws CertPathValidatorException { verifyRevocationStatus(currCert, prevKey, signFlag, - allowSeparateKey, null); + allowSeparateKey, null, mParams.getTrustAnchors()); } /** @@ -260,11 +260,12 @@ class CrlRevocationChecker extends PKIXCertPathChecker { * circular dependencies, we assume they're * revoked while checking the revocation * status of this cert. + * @param trustAnchors a <code>Set</code> of <code>TrustAnchor</code>s */ private void verifyRevocationStatus(X509Certificate currCert, PublicKey prevKey, boolean signFlag, boolean allowSeparateKey, - Set<X509Certificate> stackedCerts) throws CertPathValidatorException - { + Set<X509Certificate> stackedCerts, + Set<TrustAnchor> trustAnchors) throws CertPathValidatorException { String msg = "revocation status"; if (debug != null) { @@ -311,7 +312,7 @@ class CrlRevocationChecker extends PKIXCertPathChecker { DistributionPointFetcher.getInstance(); // all CRLs returned by the DP Fetcher have also been verified mApprovedCRLs.addAll(store.getCRLs(sel, signFlag, prevKey, - mSigProvider, mStores, reasonsMask, mAnchor)); + mSigProvider, mStores, reasonsMask, trustAnchors)); } catch (Exception e) { if (debug != null) { debug.println("CrlRevocationChecker.verifyRevocationStatus() " @@ -328,7 +329,7 @@ class CrlRevocationChecker extends PKIXCertPathChecker { // Now that we have a list of possible CRLs, see which ones can // be approved mApprovedCRLs.addAll(verifyPossibleCRLs(mPossibleCRLs, currCert, - signFlag, prevKey, reasonsMask)); + signFlag, prevKey, reasonsMask, trustAnchors)); } if (debug != null) { debug.println("CrlRevocationChecker.verifyRevocationStatus() " + @@ -353,9 +354,10 @@ class CrlRevocationChecker extends PKIXCertPathChecker { // See if the cert is in the set of approved crls. if (debug != null) { BigInteger sn = currCert.getSerialNumber(); - debug.println("starting the final sweep..."); + debug.println("CrlRevocationChecker.verifyRevocationStatus() " + + "starting the final sweep..."); debug.println("CrlRevocationChecker.verifyRevocationStatus" + - " cert SN: " + sn.toString()); + " cert SN: " + sn.toString()); } CRLReason reasonCode = CRLReason.UNSPECIFIED; @@ -497,9 +499,9 @@ class CrlRevocationChecker extends PKIXCertPathChecker { certSel.setSubject(currCert.getIssuerX500Principal()); certSel.setKeyUsage(mCrlSignUsage); - Set<TrustAnchor> newAnchors = mAnchor == null - ? mParams.getTrustAnchors() - : Collections.singleton(mAnchor); + Set<TrustAnchor> newAnchors = + (mAnchor == null ? mParams.getTrustAnchors() : + Collections.singleton(mAnchor)); PKIXBuilderParameters builderParams; if (mParams instanceof PKIXBuilderParameters) { @@ -617,8 +619,8 @@ class CrlRevocationChecker extends PKIXCertPathChecker { debug.println("CrlRevocationChecker.buildToNewKey()" + " index " + i + " checking " + cert); } - verifyRevocationStatus(cert, prevKey2, signFlag, - true, stackedCerts); + verifyRevocationStatus(cert, prevKey2, signFlag, true, + stackedCerts, newAnchors); signFlag = certCanSignCrl(cert); prevKey2 = cert.getPublicKey(); } @@ -727,12 +729,14 @@ class CrlRevocationChecker extends PKIXCertPathChecker { * @param signFlag <code>true</code> if prevKey was trusted to sign CRLs * @param prevKey the public key of the issuer of cert * @param reasonsMask the reason code mask + * @param trustAnchors a <code>Set</code> of <code>TrustAnchor</code>s> * @return a collection of approved crls (or an empty collection) */ private Collection<X509CRL> verifyPossibleCRLs(Set<X509CRL> crls, X509Certificate cert, boolean signFlag, PublicKey prevKey, - boolean[] reasonsMask) throws CertPathValidatorException - { + boolean[] reasonsMask, + Set<TrustAnchor> trustAnchors) throws CertPathValidatorException { + try { X509CertImpl certImpl = X509CertImpl.toImpl(cert); if (debug != null) { @@ -764,7 +768,8 @@ class CrlRevocationChecker extends PKIXCertPathChecker { DistributionPoint point = t.next(); for (X509CRL crl : crls) { if (dpf.verifyCRL(certImpl, point, crl, reasonsMask, - signFlag, prevKey, mSigProvider, mAnchor, mStores)) { + signFlag, prevKey, mSigProvider, + trustAnchors, mStores)) { results.add(crl); } } diff --git a/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java b/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java index e367a1faef4e20c52efd1a6b57db70a1aebee7db..56c5ab91c43cbb89c6689039adc45f61c3acefc6 100644 --- a/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java +++ b/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java @@ -90,8 +90,9 @@ class DistributionPointFetcher { */ Collection<X509CRL> getCRLs(X509CRLSelector selector, boolean signFlag, PublicKey prevKey, String provider, List<CertStore> certStores, - boolean[] reasonsMask, TrustAnchor anchor) throws CertStoreException - { + boolean[] reasonsMask, + Set<TrustAnchor> trustAnchors) throws CertStoreException { + if (USE_CRLDP == false) { return Collections.emptySet(); } @@ -121,7 +122,7 @@ class DistributionPointFetcher { DistributionPoint point = t.next(); Collection<X509CRL> crls = getCRLs(selector, certImpl, point, reasonsMask, signFlag, prevKey, provider, - certStores, anchor); + certStores, trustAnchors); results.addAll(crls); } if (debug != null) { @@ -142,8 +143,8 @@ class DistributionPointFetcher { private Collection<X509CRL> getCRLs(X509CRLSelector selector, X509CertImpl certImpl, DistributionPoint point, boolean[] reasonsMask, boolean signFlag, PublicKey prevKey, String provider, - List<CertStore> certStores, TrustAnchor anchor) - { + List<CertStore> certStores, Set<TrustAnchor> trustAnchors) { + // check for full name GeneralNames fullName = point.getFullName(); if (fullName == null) { @@ -194,7 +195,7 @@ class DistributionPointFetcher { // we check the issuer in verifyCRLs method selector.setIssuerNames(null); if (selector.match(crl) && verifyCRL(certImpl, point, crl, - reasonsMask, signFlag, prevKey, provider, anchor, + reasonsMask, signFlag, prevKey, provider, trustAnchors, certStores)) { crls.add(crl); } @@ -276,12 +277,17 @@ class DistributionPointFetcher { * @param signFlag true if prevKey can be used to verify the CRL * @param prevKey the public key that verifies the certificate's signature * @param provider the Signature provider to use + * @param trustAnchors a {@code Set} of {@code TrustAnchor}s + * @param certStores a {@code List} of {@code CertStore}s to be used in + * finding certificates and CRLs * @return true if ok, false if not */ boolean verifyCRL(X509CertImpl certImpl, DistributionPoint point, X509CRL crl, boolean[] reasonsMask, boolean signFlag, - PublicKey prevKey, String provider, TrustAnchor anchor, + PublicKey prevKey, String provider, + Set<TrustAnchor> trustAnchors, List<CertStore> certStores) throws CRLException, IOException { + boolean indirectCRL = false; X509CRLImpl crlImpl = X509CRLImpl.toImpl(crl); IssuingDistributionPointExtension idpExt = @@ -335,7 +341,16 @@ class DistributionPointFetcher { byte[] crlAKID = crlImpl.getExtensionValue( PKIXExtensions.AuthorityKey_Id.toString()); - if (!Arrays.equals(certAKID, crlAKID)) { + if (certAKID == null || crlAKID == null) { + // cannot recognize indirect CRL without AKID + + // we accept the case that a CRL issuer provide status + // information for itself. + if (issues(certImpl, crlImpl, provider)) { + // reset the public key used to verify the CRL's signature + prevKey = certImpl.getPublicKey(); + } + } else if (!Arrays.equals(certAKID, crlAKID)) { // we accept the case that a CRL issuer provide status // information for itself. if (issues(certImpl, crlImpl, provider)) { @@ -572,46 +587,19 @@ class DistributionPointFetcher { // Except the performance improvement, another benefit is to break // the dead loop while looking for the issuer back and forth // between the delegated self-issued certificate and its issuer. - Set<TrustAnchor> trustAnchors = new HashSet<TrustAnchor>(); - if (anchor != null) { - trustAnchors.add(anchor); - } + Set<TrustAnchor> newTrustAnchors = new HashSet<>(trustAnchors); if (prevKey != null) { - // if the previous key is of the anchor, don't bother to - // duplicate the trust. - boolean duplicated = false; - PublicKey publicKey = prevKey; + // Add the previous certificate as a trust anchor. X500Principal principal = certImpl.getIssuerX500Principal(); - - if (anchor != null) { - X509Certificate trustedCert = anchor.getTrustedCert(); - X500Principal trustedPrincipal; - PublicKey trustedPublicKey; - if (trustedCert != null) { - trustedPrincipal = trustedCert.getSubjectX500Principal(); - trustedPublicKey = trustedCert.getPublicKey(); - } else { - trustedPrincipal = anchor.getCA(); - trustedPublicKey = anchor.getCAPublicKey(); - } - - if (principal.equals(trustedPrincipal) && - publicKey.equals(trustedPublicKey)) { - duplicated = true; - } - } - - if (!duplicated) { - TrustAnchor temporary = - new TrustAnchor(principal, publicKey, null); - trustAnchors.add(temporary); - } + TrustAnchor temporary = + new TrustAnchor(principal, prevKey, null); + newTrustAnchors.add(temporary); } PKIXBuilderParameters params = null; try { - params = new PKIXBuilderParameters(trustAnchors, certSel); + params = new PKIXBuilderParameters(newTrustAnchors, certSel); } catch (InvalidAlgorithmParameterException iape) { throw new CRLException(iape); } @@ -697,6 +685,8 @@ class DistributionPointFetcher { private static boolean issues(X509CertImpl cert, X509CRLImpl crl, String provider) throws IOException { + boolean matched = false; + AdaptableX509CertSelector issuerSelector = new AdaptableX509CertSelector(); @@ -719,9 +709,24 @@ class DistributionPointFetcher { * and MUST include authority key identifier extension in all CRLs * issued. [section 5.2.1, RFC 2459] */ - issuerSelector.parseAuthorityKeyIdentifierExtension( - crl.getAuthKeyIdExtension()); + AuthorityKeyIdentifierExtension crlAKID = crl.getAuthKeyIdExtension(); + if (crlAKID != null) { + issuerSelector.parseAuthorityKeyIdentifierExtension(crlAKID); + } + + matched = issuerSelector.match(cert); + + // if AKID is unreliable, verify the CRL signature with the cert + if (matched && (crlAKID == null || + cert.getAuthorityKeyIdentifierExtension() == null)) { + try { + crl.verify(cert.getPublicKey(), provider); + matched = true; + } catch (Exception e) { + matched = false; + } + } - return issuerSelector.match(cert); + return matched; } } diff --git a/src/share/classes/sun/security/ssl/CipherSuiteList.java b/src/share/classes/sun/security/ssl/CipherSuiteList.java index b6cda76e269d74163397e9403e8f2341598e585a..bf69b35aacac4e4b025e0963a79063c270fbbf79 100644 --- a/src/share/classes/sun/security/ssl/CipherSuiteList.java +++ b/src/share/classes/sun/security/ssl/CipherSuiteList.java @@ -40,10 +40,6 @@ import javax.net.ssl.SSLException; */ final class CipherSuiteList { - // lists of supported and default enabled ciphersuites - // created on demand - private static CipherSuiteList supportedSuites, defaultSuites; - private final Collection<CipherSuite> cipherSuites; private String[] suiteNames; @@ -206,57 +202,8 @@ final class CipherSuiteList { */ static synchronized void clearAvailableCache() { if (CipherSuite.DYNAMIC_AVAILABILITY) { - supportedSuites = null; - defaultSuites = null; CipherSuite.BulkCipher.clearAvailableCache(); JsseJce.clearEcAvailable(); } } - - /** - * Return the list of all available CipherSuites with a priority of - * minPriority or above. - * Should be called with the Class lock held. - */ - private static CipherSuiteList buildAvailableCache(int minPriority) { - // SortedSet automatically arranges ciphersuites in default - // preference order - Set<CipherSuite> cipherSuites = new TreeSet<>(); - Collection<CipherSuite> allowedCipherSuites = - CipherSuite.allowedCipherSuites(); - for (CipherSuite c : allowedCipherSuites) { - if ((c.allowed == false) || (c.priority < minPriority)) { - continue; - } - - if (c.isAvailable()) { - cipherSuites.add(c); - } - } - - return new CipherSuiteList(cipherSuites); - } - - /** - * Return supported CipherSuites in preference order. - */ - static synchronized CipherSuiteList getSupported() { - if (supportedSuites == null) { - supportedSuites = - buildAvailableCache(CipherSuite.SUPPORTED_SUITES_PRIORITY); - } - return supportedSuites; - } - - /** - * Return default enabled CipherSuites in preference order. - */ - static synchronized CipherSuiteList getDefault() { - if (defaultSuites == null) { - defaultSuites = - buildAvailableCache(CipherSuite.DEFAULT_SUITES_PRIORITY); - } - return defaultSuites; - } - } diff --git a/src/share/classes/sun/security/ssl/DefaultSSLContextImpl.java b/src/share/classes/sun/security/ssl/DefaultSSLContextImpl.java deleted file mode 100644 index d848d11da583404cbaea65a628aa2dd818ef636c..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/security/ssl/DefaultSSLContextImpl.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package sun.security.ssl; - -import java.io.*; -import java.util.*; - -import java.security.*; - -import javax.net.ssl.*; - -/** - * "Default" SSLContext as returned by SSLContext.getDefault(). It comes - * initialized with default KeyManagers and TrustManagers created using - * various system properties. - * - * @since 1.6 - */ -public final class DefaultSSLContextImpl extends SSLContextImpl { - - private static final String NONE = "NONE"; - private static final String P11KEYSTORE = "PKCS11"; - private static final Debug debug = Debug.getInstance("ssl"); - - private static volatile SSLContextImpl defaultImpl; - - private static TrustManager[] defaultTrustManagers; - - private static KeyManager[] defaultKeyManagers; - - public DefaultSSLContextImpl() throws Exception { - super(defaultImpl); - try { - super.engineInit(getDefaultKeyManager(), getDefaultTrustManager(), null); - } catch (Exception e) { - if (debug != null && Debug.isOn("defaultctx")) { - System.out.println("default context init failed: " + e); - } - throw e; - } - if (defaultImpl == null) { - defaultImpl = this; - } - } - - protected void engineInit(KeyManager[] km, TrustManager[] tm, - SecureRandom sr) throws KeyManagementException { - throw new KeyManagementException - ("Default SSLContext is initialized automatically"); - } - - static synchronized SSLContextImpl getDefaultImpl() throws Exception { - if (defaultImpl == null) { - new DefaultSSLContextImpl(); - } - return defaultImpl; - } - - private static synchronized TrustManager[] getDefaultTrustManager() throws Exception { - if (defaultTrustManagers != null) { - return defaultTrustManagers; - } - - KeyStore ks = TrustManagerFactoryImpl.getCacertsKeyStore("defaultctx"); - - TrustManagerFactory tmf = TrustManagerFactory.getInstance( - TrustManagerFactory.getDefaultAlgorithm()); - tmf.init(ks); - defaultTrustManagers = tmf.getTrustManagers(); - return defaultTrustManagers; - } - - private static synchronized KeyManager[] getDefaultKeyManager() throws Exception { - if (defaultKeyManagers != null) { - return defaultKeyManagers; - } - - final Map<String,String> props = new HashMap<>(); - AccessController.doPrivileged( - new PrivilegedExceptionAction<Object>() { - public Object run() throws Exception { - props.put("keyStore", System.getProperty( - "javax.net.ssl.keyStore", "")); - props.put("keyStoreType", System.getProperty( - "javax.net.ssl.keyStoreType", - KeyStore.getDefaultType())); - props.put("keyStoreProvider", System.getProperty( - "javax.net.ssl.keyStoreProvider", "")); - props.put("keyStorePasswd", System.getProperty( - "javax.net.ssl.keyStorePassword", "")); - return null; - } - }); - - final String defaultKeyStore = props.get("keyStore"); - String defaultKeyStoreType = props.get("keyStoreType"); - String defaultKeyStoreProvider = props.get("keyStoreProvider"); - if (debug != null && Debug.isOn("defaultctx")) { - System.out.println("keyStore is : " + defaultKeyStore); - System.out.println("keyStore type is : " + - defaultKeyStoreType); - System.out.println("keyStore provider is : " + - defaultKeyStoreProvider); - } - - if (P11KEYSTORE.equals(defaultKeyStoreType) && - !NONE.equals(defaultKeyStore)) { - throw new IllegalArgumentException("if keyStoreType is " - + P11KEYSTORE + ", then keyStore must be " + NONE); - } - - FileInputStream fs = null; - if (defaultKeyStore.length() != 0 && !NONE.equals(defaultKeyStore)) { - fs = AccessController.doPrivileged( - new PrivilegedExceptionAction<FileInputStream>() { - public FileInputStream run() throws Exception { - return new FileInputStream(defaultKeyStore); - } - }); - } - - String defaultKeyStorePassword = props.get("keyStorePasswd"); - char[] passwd = null; - if (defaultKeyStorePassword.length() != 0) { - passwd = defaultKeyStorePassword.toCharArray(); - } - - /** - * Try to initialize key store. - */ - KeyStore ks = null; - if ((defaultKeyStoreType.length()) != 0) { - if (debug != null && Debug.isOn("defaultctx")) { - System.out.println("init keystore"); - } - if (defaultKeyStoreProvider.length() == 0) { - ks = KeyStore.getInstance(defaultKeyStoreType); - } else { - ks = KeyStore.getInstance(defaultKeyStoreType, - defaultKeyStoreProvider); - } - - // if defaultKeyStore is NONE, fs will be null - ks.load(fs, passwd); - } - if (fs != null) { - fs.close(); - fs = null; - } - - /* - * Try to initialize key manager. - */ - if (debug != null && Debug.isOn("defaultctx")) { - System.out.println("init keymanager of type " + - KeyManagerFactory.getDefaultAlgorithm()); - } - KeyManagerFactory kmf = KeyManagerFactory.getInstance( - KeyManagerFactory.getDefaultAlgorithm()); - - if (P11KEYSTORE.equals(defaultKeyStoreType)) { - kmf.init(ks, null); // do not pass key passwd if using token - } else { - kmf.init(ks, passwd); - } - - defaultKeyManagers = kmf.getKeyManagers(); - return defaultKeyManagers; - } -} diff --git a/src/share/classes/sun/security/ssl/JsseJce.java b/src/share/classes/sun/security/ssl/JsseJce.java index 375f3bde3d7c747cb2991df55cf769f351244888..fbbbf5d2b3800097c98b0d794bdf0f61f191f444 100644 --- a/src/share/classes/sun/security/ssl/JsseJce.java +++ b/src/share/classes/sun/security/ssl/JsseJce.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -247,9 +247,9 @@ final class JsseJce { // the SunJSSE implementation does the actual crypto using // a NONEwithRSA signature obtained from the cryptoProvider. if (cryptoProvider.getService("Signature", algorithm) == null) { - // Calling Signature.getInstance() and catching the exception - // would be cleaner, but exceptions are a little expensive. - // So we check directly via getService(). + // Calling Signature.getInstance() and catching the + // exception would be cleaner, but exceptions are a little + // expensive. So we check directly via getService(). try { return Signature.getInstance(algorithm, "SunJSSE"); } catch (NoSuchProviderException e) { diff --git a/src/share/classes/sun/security/ssl/ProtocolList.java b/src/share/classes/sun/security/ssl/ProtocolList.java index 09f051822fdf7a8f53e083b612e6952b3c43a70b..a57a9bdfdffa556bfb86ceeb557eddfc7704f965 100644 --- a/src/share/classes/sun/security/ssl/ProtocolList.java +++ b/src/share/classes/sun/security/ssl/ProtocolList.java @@ -37,10 +37,6 @@ import java.util.*; */ final class ProtocolList { - private static final ProtocolList SUPPORTED; - private static final ProtocolList CLIENT_DEFAULT; - private static final ProtocolList SERVER_DEFAULT; - // the sorted protocol version list private final ArrayList<ProtocolVersion> protocols; @@ -154,66 +150,4 @@ final class ProtocolList { public String toString() { return protocols.toString(); } - - /** - * Return the list of default enabled protocols. - */ - static ProtocolList getDefault(boolean isServer) { - return isServer ? SERVER_DEFAULT : CLIENT_DEFAULT; - } - - /** - * Return whether a protocol list is the original default enabled - * protocols. See: SSLSocket/SSLEngine.setEnabledProtocols() - */ - static boolean isDefaultProtocolList(ProtocolList protocols) { - return protocols == CLIENT_DEFAULT || protocols == SERVER_DEFAULT; - } - - /** - * Return the list of supported protocols. - */ - static ProtocolList getSupported() { - return SUPPORTED; - } - - static { - if (SunJSSE.isFIPS()) { - SUPPORTED = new ProtocolList(new String[] { - ProtocolVersion.TLS10.name, - ProtocolVersion.TLS11.name, - ProtocolVersion.TLS12.name - }); - - SERVER_DEFAULT = SUPPORTED; - CLIENT_DEFAULT = new ProtocolList(new String[] { - ProtocolVersion.TLS10.name - }); - } else { - SUPPORTED = new ProtocolList(new String[] { - ProtocolVersion.SSL20Hello.name, - ProtocolVersion.SSL30.name, - ProtocolVersion.TLS10.name, - ProtocolVersion.TLS11.name, - ProtocolVersion.TLS12.name - }); - - SERVER_DEFAULT = SUPPORTED; - - /* - * RFC 5246 says that sending SSLv2 backward-compatible - * hello SHOULD NOT be done any longer. - * - * We are not enabling TLS 1.1/1.2 by default yet on clients - * out of concern for interop with existing - * SSLv3/TLS1.0-only servers. When these versions of TLS - * gain more traction, we'll enable them. - */ - CLIENT_DEFAULT = new ProtocolList(new String[] { - ProtocolVersion.SSL30.name, - ProtocolVersion.TLS10.name - }); - } - } - } diff --git a/src/share/classes/sun/security/ssl/SSLContextImpl.java b/src/share/classes/sun/security/ssl/SSLContextImpl.java index cfbab4cb4e47b5341adff2b748d7cb0a3d23b3a4..205c80e484bd71324f80db6987dcc63c3dda0fd8 100644 --- a/src/share/classes/sun/security/ssl/SSLContextImpl.java +++ b/src/share/classes/sun/security/ssl/SSLContextImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ package sun.security.ssl; import java.net.Socket; +import java.io.*; import java.util.*; import java.security.*; import java.security.cert.*; @@ -36,7 +37,7 @@ import javax.net.ssl.*; import sun.security.provider.certpath.AlgorithmChecker; -public class SSLContextImpl extends SSLContextSpi { +public abstract class SSLContextImpl extends SSLContextSpi { private static final Debug debug = Debug.getInstance("ssl"); @@ -50,20 +51,24 @@ public class SSLContextImpl extends SSLContextSpi { private X509TrustManager trustManager; private SecureRandom secureRandom; - public SSLContextImpl() { - this(null); - } + // The default algrithm constraints + private AlgorithmConstraints defaultAlgorithmConstraints = + new SSLAlgorithmConstraints(null); - SSLContextImpl(SSLContextImpl other) { - if (other == null) { - ephemeralKeyManager = new EphemeralKeyManager(); - clientCache = new SSLSessionContextImpl(); - serverCache = new SSLSessionContextImpl(); - } else { - ephemeralKeyManager = other.ephemeralKeyManager; - clientCache = other.clientCache; - serverCache = other.serverCache; - } + // supported and default protocols + private ProtocolList defaultServerProtocolList; + private ProtocolList defaultClientProtocolList; + private ProtocolList supportedProtocolList; + + // supported and default cipher suites + private CipherSuiteList defaultServerCipherSuiteList; + private CipherSuiteList defaultClientCipherSuiteList; + private CipherSuiteList supportedCipherSuiteList; + + SSLContextImpl() { + ephemeralKeyManager = new EphemeralKeyManager(); + clientCache = new SSLSessionContextImpl(); + serverCache = new SSLSessionContextImpl(); } protected void engineInit(KeyManager[] km, TrustManager[] tm, @@ -177,7 +182,7 @@ public class SSLContextImpl extends SSLContextSpi { throw new IllegalStateException( "SSLContextImpl is not initialized"); } - return new SSLSocketFactoryImpl(this); + return new SSLSocketFactoryImpl(this); } protected SSLServerSocketFactory engineGetServerSocketFactory() { @@ -227,6 +232,535 @@ public class SSLContextImpl extends SSLContextSpi { return ephemeralKeyManager; } + abstract SSLParameters getDefaultServerSSLParams(); + abstract SSLParameters getDefaultClientSSLParams(); + abstract SSLParameters getSupportedSSLParams(); + + // Get suported ProtoclList. + ProtocolList getSuportedProtocolList() { + if (supportedProtocolList == null) { + supportedProtocolList = + new ProtocolList(getSupportedSSLParams().getProtocols()); + } + + return supportedProtocolList; + } + + // Get default ProtoclList. + ProtocolList getDefaultProtocolList(boolean roleIsServer) { + if (roleIsServer) { + if (defaultServerProtocolList == null) { + defaultServerProtocolList = new ProtocolList( + getDefaultServerSSLParams().getProtocols()); + } + + return defaultServerProtocolList; + } else { + if (defaultClientProtocolList == null) { + defaultClientProtocolList = new ProtocolList( + getDefaultClientSSLParams().getProtocols()); + } + + return defaultClientProtocolList; + } + } + + // Get suported CipherSuiteList. + CipherSuiteList getSuportedCipherSuiteList() { + // Clear cache of available ciphersuites. + clearAvailableCache(); + + if (supportedCipherSuiteList == null) { + supportedCipherSuiteList = + getApplicableCipherSuiteList(getSuportedProtocolList(), false); + } + + return supportedCipherSuiteList; + } + + // Get default CipherSuiteList. + CipherSuiteList getDefaultCipherSuiteList(boolean roleIsServer) { + // Clear cache of available ciphersuites. + clearAvailableCache(); + + if (roleIsServer) { + if (defaultServerCipherSuiteList == null) { + defaultServerCipherSuiteList = getApplicableCipherSuiteList( + getDefaultProtocolList(true), true); + } + + return defaultServerCipherSuiteList; + } else { + if (defaultClientCipherSuiteList == null) { + defaultClientCipherSuiteList = getApplicableCipherSuiteList( + getDefaultProtocolList(false), true); + } + + return defaultClientCipherSuiteList; + } + } + + /** + * Return whether a protocol list is the original default enabled + * protocols. See: SSLSocket/SSLEngine.setEnabledProtocols() + */ + boolean isDefaultProtocolList(ProtocolList protocols) { + return (protocols == defaultServerProtocolList) || + (protocols == defaultClientProtocolList); + } + + + /* + * Return the list of all available CipherSuites with a priority of + * minPriority or above. + */ + private CipherSuiteList getApplicableCipherSuiteList( + ProtocolList protocols, boolean onlyEnabled) { + + int minPriority = CipherSuite.SUPPORTED_SUITES_PRIORITY; + if (onlyEnabled) { + minPriority = CipherSuite.DEFAULT_SUITES_PRIORITY; + } + + Collection<CipherSuite> allowedCipherSuites = + CipherSuite.allowedCipherSuites(); + + ArrayList<CipherSuite> suites = new ArrayList<>(); + if (!(protocols.collection().isEmpty()) && + protocols.min.v != ProtocolVersion.NONE.v) { + for (CipherSuite suite : allowedCipherSuites) { + if (suite.allowed == false || suite.priority < minPriority) { + continue; + } + + if (suite.isAvailable() && + suite.obsoleted > protocols.min.v && + suite.supported <= protocols.max.v) { + if (defaultAlgorithmConstraints.permits( + EnumSet.of(CryptoPrimitive.KEY_AGREEMENT), + suite.name, null)) { + suites.add(suite); + } + } else if (debug != null && + Debug.isOn("sslctx") && Debug.isOn("verbose")) { + if (suite.obsoleted <= protocols.min.v) { + System.out.println( + "Ignoring obsoleted cipher suite: " + suite); + } else if (suite.supported > protocols.max.v) { + System.out.println( + "Ignoring unsupported cipher suite: " + suite); + } else { + System.out.println( + "Ignoring unavailable cipher suite: " + suite); + } + } + } + } + + return new CipherSuiteList(suites); + } + + /** + * Clear cache of available ciphersuites. If we support all ciphers + * internally, there is no need to clear the cache and calling this + * method has no effect. + */ + synchronized void clearAvailableCache() { + if (CipherSuite.DYNAMIC_AVAILABILITY) { + supportedCipherSuiteList = null; + defaultServerCipherSuiteList = null; + defaultClientCipherSuiteList = null; + CipherSuite.BulkCipher.clearAvailableCache(); + JsseJce.clearEcAvailable(); + } + } + + /* + * The SSLContext implementation for TLS/SSL algorithm + * + * SSL/TLS protocols specify the forward compatibility and version + * roll-back attack protections, however, a number of SSL/TLS server + * vendors did not implement these aspects properly, and some current + * SSL/TLS servers may refuse to talk to a TLS 1.1 or later client. + * + * Considering above interoperability issues, SunJSSE will not set + * TLS 1.1 and TLS 1.2 as the enabled protocols for client by default. + * + * For SSL/TLS servers, there is no such interoperability issues as + * SSL/TLS clients. In SunJSSE, TLS 1.1 or later version will be the + * enabled protocols for server by default. + * + * We may change the behavior when popular TLS/SSL vendors support TLS + * forward compatibility properly. + * + * SSLv2Hello is no longer necessary. This interoperability option was + * put in place in the late 90's when SSLv3/TLS1.0 were relatively new + * and there were a fair number of SSLv2-only servers deployed. Because + * of the security issues in SSLv2, it is rarely (if ever) used, as + * deployments should now be using SSLv3 and TLSv1. + * + * Considering the issues of SSLv2Hello, we should not enable SSLv2Hello + * by default. Applications still can use it by enabling SSLv2Hello with + * the series of setEnabledProtocols APIs. + */ + + /* + * The conservative SSLContext implementation for TLS, SSL, SSLv3 and + * TLS10 algorithm. + * + * This is a super class of DefaultSSLContext and TLS10Context. + * + * @see SSLContext + */ + private static class ConservativeSSLContext extends SSLContextImpl { + // parameters + private static SSLParameters defaultServerSSLParams; + private static SSLParameters defaultClientSSLParams; + private static SSLParameters supportedSSLParams; + + static { + if (SunJSSE.isFIPS()) { + supportedSSLParams = new SSLParameters(); + supportedSSLParams.setProtocols(new String[] { + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + + defaultServerSSLParams = supportedSSLParams; + + defaultClientSSLParams = new SSLParameters(); + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.TLS10.name + }); + + } else { + supportedSSLParams = new SSLParameters(); + supportedSSLParams.setProtocols(new String[] { + ProtocolVersion.SSL20Hello.name, + ProtocolVersion.SSL30.name, + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + + defaultServerSSLParams = supportedSSLParams; + + defaultClientSSLParams = new SSLParameters(); + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.SSL30.name, + ProtocolVersion.TLS10.name + }); + } + } + + SSLParameters getDefaultServerSSLParams() { + return defaultServerSSLParams; + } + + SSLParameters getDefaultClientSSLParams() { + return defaultClientSSLParams; + } + + SSLParameters getSupportedSSLParams() { + return supportedSSLParams; + } + } + + /* + * The SSLContext implementation for default algorithm + * + * @see SSLContext + */ + public static final class DefaultSSLContext extends ConservativeSSLContext { + private static final String NONE = "NONE"; + private static final String P11KEYSTORE = "PKCS11"; + + private static volatile SSLContextImpl defaultImpl; + + private static TrustManager[] defaultTrustManagers; + private static KeyManager[] defaultKeyManagers; + + public DefaultSSLContext() throws Exception { + try { + super.engineInit(getDefaultKeyManager(), + getDefaultTrustManager(), null); + } catch (Exception e) { + if (debug != null && Debug.isOn("defaultctx")) { + System.out.println("default context init failed: " + e); + } + throw e; + } + + if (defaultImpl == null) { + defaultImpl = this; + } + } + + protected void engineInit(KeyManager[] km, TrustManager[] tm, + SecureRandom sr) throws KeyManagementException { + throw new KeyManagementException + ("Default SSLContext is initialized automatically"); + } + + static synchronized SSLContextImpl getDefaultImpl() throws Exception { + if (defaultImpl == null) { + new DefaultSSLContext(); + } + return defaultImpl; + } + + private static synchronized TrustManager[] getDefaultTrustManager() + throws Exception { + if (defaultTrustManagers != null) { + return defaultTrustManagers; + } + + KeyStore ks = + TrustManagerFactoryImpl.getCacertsKeyStore("defaultctx"); + + TrustManagerFactory tmf = TrustManagerFactory.getInstance( + TrustManagerFactory.getDefaultAlgorithm()); + tmf.init(ks); + defaultTrustManagers = tmf.getTrustManagers(); + return defaultTrustManagers; + } + + private static synchronized KeyManager[] getDefaultKeyManager() + throws Exception { + if (defaultKeyManagers != null) { + return defaultKeyManagers; + } + + final Map<String,String> props = new HashMap<>(); + AccessController.doPrivileged( + new PrivilegedExceptionAction<Object>() { + public Object run() throws Exception { + props.put("keyStore", System.getProperty( + "javax.net.ssl.keyStore", "")); + props.put("keyStoreType", System.getProperty( + "javax.net.ssl.keyStoreType", + KeyStore.getDefaultType())); + props.put("keyStoreProvider", System.getProperty( + "javax.net.ssl.keyStoreProvider", "")); + props.put("keyStorePasswd", System.getProperty( + "javax.net.ssl.keyStorePassword", "")); + return null; + } + }); + + final String defaultKeyStore = props.get("keyStore"); + String defaultKeyStoreType = props.get("keyStoreType"); + String defaultKeyStoreProvider = props.get("keyStoreProvider"); + if (debug != null && Debug.isOn("defaultctx")) { + System.out.println("keyStore is : " + defaultKeyStore); + System.out.println("keyStore type is : " + + defaultKeyStoreType); + System.out.println("keyStore provider is : " + + defaultKeyStoreProvider); + } + + if (P11KEYSTORE.equals(defaultKeyStoreType) && + !NONE.equals(defaultKeyStore)) { + throw new IllegalArgumentException("if keyStoreType is " + + P11KEYSTORE + ", then keyStore must be " + NONE); + } + + FileInputStream fs = null; + if (defaultKeyStore.length() != 0 && !NONE.equals(defaultKeyStore)) { + fs = AccessController.doPrivileged( + new PrivilegedExceptionAction<FileInputStream>() { + public FileInputStream run() throws Exception { + return new FileInputStream(defaultKeyStore); + } + }); + } + + String defaultKeyStorePassword = props.get("keyStorePasswd"); + char[] passwd = null; + if (defaultKeyStorePassword.length() != 0) { + passwd = defaultKeyStorePassword.toCharArray(); + } + + /** + * Try to initialize key store. + */ + KeyStore ks = null; + if ((defaultKeyStoreType.length()) != 0) { + if (debug != null && Debug.isOn("defaultctx")) { + System.out.println("init keystore"); + } + if (defaultKeyStoreProvider.length() == 0) { + ks = KeyStore.getInstance(defaultKeyStoreType); + } else { + ks = KeyStore.getInstance(defaultKeyStoreType, + defaultKeyStoreProvider); + } + + // if defaultKeyStore is NONE, fs will be null + ks.load(fs, passwd); + } + if (fs != null) { + fs.close(); + fs = null; + } + + /* + * Try to initialize key manager. + */ + if (debug != null && Debug.isOn("defaultctx")) { + System.out.println("init keymanager of type " + + KeyManagerFactory.getDefaultAlgorithm()); + } + KeyManagerFactory kmf = KeyManagerFactory.getInstance( + KeyManagerFactory.getDefaultAlgorithm()); + + if (P11KEYSTORE.equals(defaultKeyStoreType)) { + kmf.init(ks, null); // do not pass key passwd if using token + } else { + kmf.init(ks, passwd); + } + + defaultKeyManagers = kmf.getKeyManagers(); + return defaultKeyManagers; + } + } + + /* + * The SSLContext implementation for TLS, SSL, SSLv3 and TLS10 algorithm + * + * @see SSLContext + */ + public static final class TLS10Context extends ConservativeSSLContext { + // use the default constructor and methods + } + + /* + * The SSLContext implementation for TLS11 algorithm + * + * @see SSLContext + */ + public static final class TLS11Context extends SSLContextImpl { + // parameters + private static SSLParameters defaultServerSSLParams; + private static SSLParameters defaultClientSSLParams; + private static SSLParameters supportedSSLParams; + + static { + if (SunJSSE.isFIPS()) { + supportedSSLParams = new SSLParameters(); + supportedSSLParams.setProtocols(new String[] { + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + + defaultServerSSLParams = supportedSSLParams; + + defaultClientSSLParams = new SSLParameters(); + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name + }); + + } else { + supportedSSLParams = new SSLParameters(); + supportedSSLParams.setProtocols(new String[] { + ProtocolVersion.SSL20Hello.name, + ProtocolVersion.SSL30.name, + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + + defaultServerSSLParams = supportedSSLParams; + + defaultClientSSLParams = new SSLParameters(); + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.SSL30.name, + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name + }); + } + } + + SSLParameters getDefaultServerSSLParams() { + return defaultServerSSLParams; + } + + SSLParameters getDefaultClientSSLParams() { + return defaultClientSSLParams; + } + + SSLParameters getSupportedSSLParams() { + return supportedSSLParams; + } + } + + /* + * The SSLContext implementation for TLS12 algorithm + * + * @see SSLContext + */ + public static final class TLS12Context extends SSLContextImpl { + // parameters + private static SSLParameters defaultServerSSLParams; + private static SSLParameters defaultClientSSLParams; + private static SSLParameters supportedSSLParams; + + static { + if (SunJSSE.isFIPS()) { + supportedSSLParams = new SSLParameters(); + supportedSSLParams.setProtocols(new String[] { + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + + defaultServerSSLParams = supportedSSLParams; + + defaultClientSSLParams = new SSLParameters(); + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + + } else { + supportedSSLParams = new SSLParameters(); + supportedSSLParams.setProtocols(new String[] { + ProtocolVersion.SSL20Hello.name, + ProtocolVersion.SSL30.name, + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + + defaultServerSSLParams = supportedSSLParams; + + defaultClientSSLParams = new SSLParameters(); + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.SSL30.name, + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + } + } + + SSLParameters getDefaultServerSSLParams() { + return defaultServerSSLParams; + } + + SSLParameters getDefaultClientSSLParams() { + return defaultClientSSLParams; + } + + SSLParameters getSupportedSSLParams() { + return supportedSSLParams; + } + } + } diff --git a/src/share/classes/sun/security/ssl/SSLEngineImpl.java b/src/share/classes/sun/security/ssl/SSLEngineImpl.java index 76b781806fd5e15e4d2226e7afd5a752744b78ff..ce78c10cc3c44b3ef9f71c867fbedab7e6a26b80 100644 --- a/src/share/classes/sun/security/ssl/SSLEngineImpl.java +++ b/src/share/classes/sun/security/ssl/SSLEngineImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -374,8 +374,10 @@ final public class SSLEngineImpl extends SSLEngine { clientVerifyData = new byte[0]; serverVerifyData = new byte[0]; - enabledCipherSuites = CipherSuiteList.getDefault(); - enabledProtocols = ProtocolList.getDefault(roleIsServer); + enabledCipherSuites = + sslContext.getDefaultCipherSuiteList(roleIsServer); + enabledProtocols = + sslContext.getDefaultProtocolList(roleIsServer); wrapLock = new Object(); unwrapLock = new Object(); @@ -1883,8 +1885,8 @@ final public class SSLEngineImpl extends SSLEngine { * change them to the corresponding default ones. */ if (roleIsServer != (!flag) && - ProtocolList.isDefaultProtocolList(enabledProtocols)) { - enabledProtocols = ProtocolList.getDefault(!flag); + sslContext.isDefaultProtocolList(enabledProtocols)) { + enabledProtocols = sslContext.getDefaultProtocolList(!flag); } roleIsServer = !flag; @@ -1907,8 +1909,8 @@ final public class SSLEngineImpl extends SSLEngine { * change them to the corresponding default ones. */ if (roleIsServer != (!flag) && - ProtocolList.isDefaultProtocolList(enabledProtocols)) { - enabledProtocols = ProtocolList.getDefault(!flag); + sslContext.isDefaultProtocolList(enabledProtocols)) { + enabledProtocols = sslContext.getDefaultProtocolList(!flag); } roleIsServer = !flag; @@ -1951,8 +1953,7 @@ final public class SSLEngineImpl extends SSLEngine { * @return an array of cipher suite names */ public String[] getSupportedCipherSuites() { - CipherSuiteList.clearAvailableCache(); - return CipherSuiteList.getSupported().toStringArray(); + return sslContext.getSuportedCipherSuiteList().toStringArray(); } /** @@ -1992,7 +1993,7 @@ final public class SSLEngineImpl extends SSLEngine { * @return an array of protocol names. */ public String[] getSupportedProtocols() { - return ProtocolList.getSupported().toStringArray(); + return sslContext.getSuportedProtocolList().toStringArray(); } /** diff --git a/src/share/classes/sun/security/ssl/SSLServerSocketFactoryImpl.java b/src/share/classes/sun/security/ssl/SSLServerSocketFactoryImpl.java index f53d48a795b00fbacbe61663cd983aaee2c8a3cd..c73271c316a2684877a8d933ee0e9a674c0bbe80 100644 --- a/src/share/classes/sun/security/ssl/SSLServerSocketFactoryImpl.java +++ b/src/share/classes/sun/security/ssl/SSLServerSocketFactoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -49,7 +49,7 @@ public class SSLServerSocketFactoryImpl extends SSLServerSocketFactory * java.security file is set. */ public SSLServerSocketFactoryImpl() throws Exception { - this.context = DefaultSSLContextImpl.getDefaultImpl(); + this.context = SSLContextImpl.DefaultSSLContext.getDefaultImpl(); } /** @@ -99,8 +99,7 @@ public class SSLServerSocketFactoryImpl extends SSLServerSocketFactory * is encrypted to provide confidentiality. */ public String[] getDefaultCipherSuites() { - CipherSuiteList.clearAvailableCache(); - return CipherSuiteList.getDefault().toStringArray(); + return context.getDefaultCipherSuiteList(true).toStringArray(); } /** @@ -114,8 +113,7 @@ public class SSLServerSocketFactoryImpl extends SSLServerSocketFactory * @return an array of cipher suite names */ public String[] getSupportedCipherSuites() { - CipherSuiteList.clearAvailableCache(); - return CipherSuiteList.getSupported().toStringArray(); + return context.getSuportedCipherSuiteList().toStringArray(); } } diff --git a/src/share/classes/sun/security/ssl/SSLServerSocketImpl.java b/src/share/classes/sun/security/ssl/SSLServerSocketImpl.java index 0ea3cfa9fbad805ca31047132bbc12405ddc32bb..1423714659b3495f4014992f7d240ca7a74bc32e 100644 --- a/src/share/classes/sun/security/ssl/SSLServerSocketImpl.java +++ b/src/share/classes/sun/security/ssl/SSLServerSocketImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -153,8 +153,8 @@ class SSLServerSocketImpl extends SSLServerSocket throw new SSLException("No Authentication context given"); } sslContext = context; - enabledCipherSuites = CipherSuiteList.getDefault(); - enabledProtocols = ProtocolList.getDefault(true); + enabledCipherSuites = sslContext.getDefaultCipherSuiteList(true); + enabledProtocols = sslContext.getDefaultProtocolList(true); } /** @@ -168,8 +168,7 @@ class SSLServerSocketImpl extends SSLServerSocket * @return an array of cipher suite names */ public String[] getSupportedCipherSuites() { - CipherSuiteList.clearAvailableCache(); - return CipherSuiteList.getSupported().toStringArray(); + return sslContext.getSuportedCipherSuiteList().toStringArray(); } /** @@ -194,7 +193,7 @@ class SSLServerSocketImpl extends SSLServerSocket } public String[] getSupportedProtocols() { - return ProtocolList.getSupported().toStringArray(); + return sslContext.getSuportedProtocolList().toStringArray(); } /** @@ -253,8 +252,8 @@ class SSLServerSocketImpl extends SSLServerSocket * change them to the corresponding default ones. */ if (useServerMode != (!flag) && - ProtocolList.isDefaultProtocolList(enabledProtocols)) { - enabledProtocols = ProtocolList.getDefault(!flag); + sslContext.isDefaultProtocolList(enabledProtocols)) { + enabledProtocols = sslContext.getDefaultProtocolList(!flag); } useServerMode = !flag; diff --git a/src/share/classes/sun/security/ssl/SSLSocketFactoryImpl.java b/src/share/classes/sun/security/ssl/SSLSocketFactoryImpl.java index 8f2c68e5d1caa45eaeb899306aa1823ff4c8ded4..a4759545b24ded15618bbef43a229dc4f31ef6d0 100644 --- a/src/share/classes/sun/security/ssl/SSLSocketFactoryImpl.java +++ b/src/share/classes/sun/security/ssl/SSLSocketFactoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,20 +42,18 @@ import javax.net.ssl.SSLSocket; * * @author David Brownell */ -final -public class SSLSocketFactoryImpl extends SSLSocketFactory -{ +final public class SSLSocketFactoryImpl extends SSLSocketFactory { + private static SSLContextImpl defaultContext; private SSLContextImpl context; - /** * Constructor used to instantiate the default factory. This method is * only called if the old "ssl.SocketFactory.provider" property in the * java.security file is set. */ public SSLSocketFactoryImpl() throws Exception { - this.context = DefaultSSLContextImpl.getDefaultImpl(); + this.context = SSLContextImpl.DefaultSSLContext.getDefaultImpl(); } /** @@ -167,11 +165,9 @@ public class SSLSocketFactoryImpl extends SSLSocketFactory * is encrypted to provide confidentiality. */ public String[] getDefaultCipherSuites() { - CipherSuiteList.clearAvailableCache(); - return CipherSuiteList.getDefault().toStringArray(); + return context.getDefaultCipherSuiteList(false).toStringArray(); } - /** * Returns the names of the cipher suites which could be enabled for use * on an SSL connection. Normally, only a subset of these will actually @@ -181,7 +177,6 @@ public class SSLSocketFactoryImpl extends SSLSocketFactory * certain kinds of certificates to use certain cipher suites. */ public String[] getSupportedCipherSuites() { - CipherSuiteList.clearAvailableCache(); - return CipherSuiteList.getSupported().toStringArray(); + return context.getSuportedCipherSuiteList().toStringArray(); } } diff --git a/src/share/classes/sun/security/ssl/SSLSocketImpl.java b/src/share/classes/sun/security/ssl/SSLSocketImpl.java index 010f4cbce9ab6afa34c6e423f82f17afe9f8b0e5..8bc8c22a9fdf078faccdbdca022c0d56bb723295 100644 --- a/src/share/classes/sun/security/ssl/SSLSocketImpl.java +++ b/src/share/classes/sun/security/ssl/SSLSocketImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -562,8 +562,11 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { clientVerifyData = new byte[0]; serverVerifyData = new byte[0]; - enabledCipherSuites = CipherSuiteList.getDefault(); - enabledProtocols = ProtocolList.getDefault(roleIsServer); + enabledCipherSuites = + sslContext.getDefaultCipherSuiteList(roleIsServer); + enabledProtocols = + sslContext.getDefaultProtocolList(roleIsServer); + inrec = null; // save the acc @@ -2170,8 +2173,8 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { * change them to the corresponding default ones. */ if (roleIsServer != (!flag) && - ProtocolList.isDefaultProtocolList(enabledProtocols)) { - enabledProtocols = ProtocolList.getDefault(!flag); + sslContext.isDefaultProtocolList(enabledProtocols)) { + enabledProtocols = sslContext.getDefaultProtocolList(!flag); } roleIsServer = !flag; break; @@ -2192,8 +2195,8 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { * change them to the corresponding default ones. */ if (roleIsServer != (!flag) && - ProtocolList.isDefaultProtocolList(enabledProtocols)) { - enabledProtocols = ProtocolList.getDefault(!flag); + sslContext.isDefaultProtocolList(enabledProtocols)) { + enabledProtocols = sslContext.getDefaultProtocolList(!flag); } roleIsServer = !flag; connectionState = cs_START; @@ -2230,8 +2233,7 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { * @return an array of cipher suite names */ public String[] getSupportedCipherSuites() { - CipherSuiteList.clearAvailableCache(); - return CipherSuiteList.getSupported().toStringArray(); + return sslContext.getSuportedCipherSuiteList().toStringArray(); } /** @@ -2271,7 +2273,7 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { * @return an array of protocol names. */ public String[] getSupportedProtocols() { - return ProtocolList.getSupported().toStringArray(); + return sslContext.getSuportedProtocolList().toStringArray(); } /** diff --git a/src/share/classes/sun/security/ssl/SunJSSE.java b/src/share/classes/sun/security/ssl/SunJSSE.java index bba258670d85bc46c88b5b09b0efd11295376ce7..16cb35cd42e0287ebe51ca5b08a447b7b94582ce 100644 --- a/src/share/classes/sun/security/ssl/SunJSSE.java +++ b/src/share/classes/sun/security/ssl/SunJSSE.java @@ -204,22 +204,21 @@ public abstract class SunJSSE extends java.security.Provider { put("Alg.Alias.TrustManagerFactory.SunPKIX", "PKIX"); put("Alg.Alias.TrustManagerFactory.X509", "PKIX"); put("Alg.Alias.TrustManagerFactory.X.509", "PKIX"); + + put("SSLContext.TLSv1", + "sun.security.ssl.SSLContextImpl$TLS10Context"); + put("Alg.Alias.SSLContext.TLS", "TLSv1"); if (isfips == false) { - put("SSLContext.SSL", - "sun.security.ssl.SSLContextImpl"); - put("SSLContext.SSLv3", - "sun.security.ssl.SSLContextImpl"); + put("Alg.Alias.SSLContext.SSL", "TLSv1"); + put("Alg.Alias.SSLContext.SSLv3", "TLSv1"); } - put("SSLContext.TLS", - "sun.security.ssl.SSLContextImpl"); - put("SSLContext.TLSv1", - "sun.security.ssl.SSLContextImpl"); + put("SSLContext.TLSv1.1", - "sun.security.ssl.SSLContextImpl"); + "sun.security.ssl.SSLContextImpl$TLS11Context"); put("SSLContext.TLSv1.2", - "sun.security.ssl.SSLContextImpl"); + "sun.security.ssl.SSLContextImpl$TLS12Context"); put("SSLContext.Default", - "sun.security.ssl.DefaultSSLContextImpl"); + "sun.security.ssl.SSLContextImpl$DefaultSSLContext"); /* * KeyStore diff --git a/src/share/classes/sun/security/util/ManifestEntryVerifier.java b/src/share/classes/sun/security/util/ManifestEntryVerifier.java index 9eee5421da549ced050806101e1af6faad3e1e00..4fa1826cb376dd4df6131aa601aa68b6ead7cbd7 100644 --- a/src/share/classes/sun/security/util/ManifestEntryVerifier.java +++ b/src/share/classes/sun/security/util/ManifestEntryVerifier.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -191,8 +191,8 @@ public class ManifestEntryVerifier { * * */ - public CodeSigner[] verify(Hashtable<String, CodeSigner[]> verifiedSigners, - Hashtable<String, CodeSigner[]> sigFileSigners) + public CodeSigner[] verify(Map<String, CodeSigner[]> verifiedSigners, + Map<String, CodeSigner[]> sigFileSigners) throws JarException { if (skip) { diff --git a/src/share/classes/sun/security/util/SignatureFileManifest.java b/src/share/classes/sun/security/util/SignatureFileManifest.java new file mode 100644 index 0000000000000000000000000000000000000000..fd00c1299a3c1f8d1380e3271eee3236d72d2d95 --- /dev/null +++ b/src/share/classes/sun/security/util/SignatureFileManifest.java @@ -0,0 +1,251 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.security.util; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; +import java.util.jar.Attributes; +import java.util.jar.Manifest; + +/** + * This class provides streaming mode reading of manifest files. + * Used by {@link SignatureFileVerifier}. + */ +class SignatureFileManifest extends Manifest { + + /* + * Reading a manifest into this object by calling update(byte[]) on chunks. + * During the reading, the bytes are saved in (@code current} until a line + * is complete and the key-value pair is saved in {@code currentAttr}. When + * a section is complete, {@code consumeAttr} is called to merge + * {@code currentAttr} into main attributes or a named entry. + */ + + // Internal state during update() style reading + // 0. not in update mode + // 1, in update mode but main attributes not completed yet + // 2. main attributes completed, still reading the entries + private int state = 0; + + // The partial line read + private byte[] current; + + // Number of bytes in current + private int currentPos = 0; + + // The current Attribute + private Attributes currentAttr; + + /** + * Reads a manifest in chunks. + * <p> + * This method must be called in a row, reading chunks from a single + * manifest file by order. After all chunks are read, caller must call + * {@code update(null)} to fully consume the manifest. + * <p> + * The entry names and attributes read will be merged in with the current + * manifest entries. The {@link #read} method cannot be called inside a + * row of update calls. + * <p> + * Along with the calls, caller can call {@link #getMainAttributes()}, + * {@link #getAttributes(java.lang.String)} or {@link #getEntries()} + * to get already available contents. However, in order not to return + * partial result, when the main attributes in the new manifest is not + * consumed completely, {@link #getMainAttributes()} throws an + * {@code IllegalStateException}. When a certain named entry is not + * consumed completely, {@link #getAttributes(java.lang.String)} + * returns the old {@code Attributes} for the name (if it exists). + * + * @param data null for last call, otherwise, feeding chunks + * @param offset offset into data to begin read + * @param length length of data after offset to read + * @exception IOException if an I/O error has occurred + * @exception IllegalStateException if {@code update(null)} is called + * without any previous {@code update(non-null)} call + */ + public void update(byte[] data, int offset, int length) throws IOException { + + // The last call + if (data == null) { + if (state == 0) { + throw new IllegalStateException("No data to update"); + } + // We accept manifest not ended with \n or \n\n + if (hasLastByte()) { + consumeCurrent(); + } + // We accept empty lines at the end + if (!currentAttr.isEmpty()) { + consumeAttr(); + } + state = 0; // back to non-update state + current = null; + currentAttr = null; + return; + } + + // The first call + if (state == 0) { + current = new byte[1024]; + currentAttr = super.getMainAttributes(); // the main attribute + state = 1; + } + + int end = offset + length; + + while (offset < end) { + switch (data[offset]) { + case '\r': + break; // always skip + case '\n': + if (hasLastByte() && lastByte() == '\n') { // new section + consumeCurrent(); + consumeAttr(); + if (state == 1) { + state = 2; + } + currentAttr = new Attributes(2); + } else { + if (hasLastByte()) { + // save \n into current but do not parse, + // there might be a continuation later + ensureCapacity(); + current[currentPos++] = data[offset]; + } else if (state == 1) { + // there can be multiple empty lines between + // sections, but cannot be at the beginning + throw new IOException("invalid manifest format"); + } + } + break; + case ' ': + if (!hasLastByte()) { + throw new IOException("invalid manifest format"); + } else if (lastByte() == '\n') { + currentPos--; // continuation, remove last \n + } else { // a very normal ' ' + ensureCapacity(); + current[currentPos++] = data[offset]; + } + break; + default: + if (hasLastByte() && lastByte() == '\n') { + // The start of a new pair, not continuation + consumeCurrent(); // the last line read + } + ensureCapacity(); + current[currentPos++] = data[offset]; + break; + } + offset++; + } + } + + /** + * Returns the main Attributes for the Manifest. + * @exception IllegalStateException the main attributes is being read + * @return the main Attributes for the Manifest + */ + public Attributes getMainAttributes() { + if (state == 1) { + throw new IllegalStateException(); + } + return super.getMainAttributes(); + } + + /** + * Reads the Manifest from the specified InputStream. The entry + * names and attributes read will be merged in with the current + * manifest entries. + * + * @param is the input stream + * @exception IOException if an I/O error has occurred + * @exception IllegalStateException if called between two {@link #update} + * calls + */ + public void read(InputStream is) throws IOException { + if (state != 0) { + throw new IllegalStateException("Cannot call read between updates"); + } + super.read(is); + } + + /* + * ---------- Helper methods ----------------- + */ + + private void ensureCapacity() { + if (currentPos >= current.length-1) { + current = Arrays.copyOf(current, current.length*2); + } + } + + private boolean hasLastByte() { + return currentPos > 0; + } + + private byte lastByte() { + return current[currentPos-1]; + } + + // Parse current as key:value and save into currentAttr. + // There MUST be something inside current. + private void consumeCurrent() throws IOException { + // current normally has a \n end, except for the last line + if (current[currentPos-1] == '\n') currentPos--; + for (int i=0; i<currentPos; i++) { + if (current[i] == ':') { + String key = new String(current, 0, 0, i); + i++; + while (i < currentPos && current[i] == ' ') { i++; } + String value = new String(current, i, currentPos-i, "UTF-8"); + currentAttr.putValue(key, value); + currentPos = 0; + return; + } + } + throw new IOException("invalid header field"); + } + + // Merge currentAttr into Manifest + private void consumeAttr() throws IOException { + // Only needed for named entries. For the main attribute, key/value + // is added into attr directly, but since getMainAttributes() throws + // an exception, the partial data is not leaked. + if (state != 1) { + String name = currentAttr.getValue("Name"); + if (name != null) { + currentAttr.remove(new Attributes.Name("Name")); + Attributes old = getAttributes(name); + if (old != null) old.putAll(currentAttr); + else getEntries().put(name, currentAttr); + } else { + throw new IOException("invalid manifest format"); + } + } + } +} diff --git a/src/share/classes/sun/security/util/SignatureFileVerifier.java b/src/share/classes/sun/security/util/SignatureFileVerifier.java index 96f425a46b5d5f4c81be2999dda93c90c4bcbf83..6c4439d4c1a67c8a3b4d5188af0b834e6c403614 100644 --- a/src/share/classes/sun/security/util/SignatureFileVerifier.java +++ b/src/share/classes/sun/security/util/SignatureFileVerifier.java @@ -55,8 +55,8 @@ public class SignatureFileVerifier { /** the PKCS7 block for this .DSA/.RSA/.EC file */ private PKCS7 block; - /** the raw bytes of the .SF file */ - private byte sfBytes[]; + // the content of the raw .SF file as an InputStream + private InputStream sfStream; /** the name of the signature block file, uppercased and without * the extension (.DSA/.RSA/.EC) @@ -66,6 +66,9 @@ public class SignatureFileVerifier { /** the ManifestDigester */ private ManifestDigester md; + /** The MANIFEST.MF */ + private Manifest man; + /** cache of created MessageDigest objects */ private HashMap<String, MessageDigest> createdDigests; @@ -83,6 +86,7 @@ public class SignatureFileVerifier { * @param rawBytes the raw bytes of the signature block file */ public SignatureFileVerifier(ArrayList<CodeSigner[]> signerCache, + Manifest man, ManifestDigester md, String name, byte rawBytes[]) @@ -94,13 +98,18 @@ public class SignatureFileVerifier { try { obj = Providers.startJarVerification(); block = new PKCS7(rawBytes); - sfBytes = block.getContentInfo().getData(); + byte[] contentData = block.getContentInfo().getData(); + if (contentData != null) { + sfStream = new ByteArrayInputStream(contentData); + } certificateFactory = CertificateFactory.getInstance("X509"); } finally { Providers.stopJarVerification(obj); } this.name = name.substring(0, name.lastIndexOf(".")) .toUpperCase(Locale.ENGLISH); + + this.man = man; this.md = md; this.signerCache = signerCache; } @@ -108,31 +117,13 @@ public class SignatureFileVerifier { /** * returns true if we need the .SF file */ - public boolean needSignatureFileBytes() + public boolean needSignatureFile() { - - return sfBytes == null; + return sfStream == null; } - - /** - * returns true if we need this .SF file. - * - * @param name the name of the .SF file without the extension - * - */ - public boolean needSignatureFile(String name) - { - return this.name.equalsIgnoreCase(name); - } - - /** - * used to set the raw bytes of the .SF file when it - * is external to the signature block file. - */ - public void setSignatureFile(byte sfBytes[]) - { - this.sfBytes = sfBytes; + public void setSignatureFile(InputStream ins) { + this.sfStream = ins; } /** @@ -145,12 +136,18 @@ public class SignatureFileVerifier { * Signature File or PKCS7 block file name */ public static boolean isBlockOrSF(String s) { - // we currently only support DSA and RSA PKCS7 blocks - if (s.endsWith(".SF") || s.endsWith(".DSA") || - s.endsWith(".RSA") || s.endsWith(".EC")) { - return true; - } - return false; + return s.endsWith(".SF") || isBlock(s); + } + + /** + * Utility method used by JarVerifier to determine PKCS7 block + * files names that are supported + * + * @param s file name + * @return true if the input file name is a PKCS7 block file name + */ + public static boolean isBlock(String s) { + return s.endsWith(".DSA") || s.endsWith(".RSA") || s.endsWith(".EC"); } /** get digest from cache */ @@ -180,7 +177,7 @@ public class SignatureFileVerifier { * * */ - public void process(Hashtable<String, CodeSigner[]> signers, + public void process(Map<String, CodeSigner[]> signers, List manifestDigests) throws IOException, SignatureException, NoSuchAlgorithmException, JarException, CertificateException @@ -197,31 +194,86 @@ public class SignatureFileVerifier { } - private void processImpl(Hashtable<String, CodeSigner[]> signers, + private void processImpl(Map<String, CodeSigner[]> signers, List manifestDigests) throws IOException, SignatureException, NoSuchAlgorithmException, JarException, CertificateException { - Manifest sf = new Manifest(); - sf.read(new ByteArrayInputStream(sfBytes)); + SignatureFileManifest sf = new SignatureFileManifest(); + InputStream ins = sfStream; - String version = - sf.getMainAttributes().getValue(Attributes.Name.SIGNATURE_VERSION); + byte[] buffer = new byte[4096]; + int sLen = block.getSignerInfos().length; + boolean mainOK = false; // main attributes of SF is available... + boolean manifestSigned = false; // and it matches MANIFEST.MF + BASE64Decoder decoder = new BASE64Decoder(); - if ((version == null) || !(version.equalsIgnoreCase("1.0"))) { - // XXX: should this be an exception? - // for now we just ignore this signature file - return; + PKCS7.PKCS7Verifier[] pvs = new PKCS7.PKCS7Verifier[sLen]; + for (int i=0; i<sLen; i++) { + pvs[i] = PKCS7.PKCS7Verifier.from(block, block.getSignerInfos()[i]); } - SignerInfo[] infos = block.verify(sfBytes); + /* + * Verify SF in streaming mode. The chunks of the file are fed into + * the Manifest object sf and all PKCS7Verifiers. As soon as the main + * attributes is available, we'll check if manifestSigned is true. If + * yes, there is no need to fill in sf's entries field, since it should + * be identical to entries in man. + */ + while (true) { + int len = ins.read(buffer); + if (len < 0) { + if (!manifestSigned) { + sf.update(null, 0, 0); + } + break; + } else { + for (int i=0; i<sLen; i++) { + if (pvs[i] != null) pvs[i].update(buffer, 0, len); + } + // Continue reading if verifyManifestHash fails (or, the + // main attributes is not available yet) + if (!manifestSigned) { + sf.update(buffer, 0, len); + if (!mainOK) { + try { + Attributes attr = sf.getMainAttributes(); + String version = attr.getValue( + Attributes.Name.SIGNATURE_VERSION); + + if ((version == null) || + !(version.equalsIgnoreCase("1.0"))) { + // XXX: should this be an exception? + // for now we just ignore this signature file + return; + } - if (infos == null) { + mainOK = true; + manifestSigned = verifyManifestHash( + sf, md, decoder, manifestDigests); + } catch (IllegalStateException ise) { + // main attributes not available yet + } + } + } + } + } + List<SignerInfo> intResult = new ArrayList<>(sLen); + for (int i = 0; i < sLen; i++) { + if (pvs[i] != null) { + SignerInfo signerInfo = pvs[i].verify(); + if (signerInfo != null) { + intResult.add(signerInfo); + } + } + } + if (intResult.isEmpty()) { throw new SecurityException("cannot verify signature block file " + name); } - BASE64Decoder decoder = new BASE64Decoder(); + SignerInfo[] infos = + intResult.toArray(new SignerInfo[intResult.size()]); CodeSigner[] newSigners = getSigners(infos, block); @@ -229,26 +281,37 @@ public class SignatureFileVerifier { if (newSigners == null) return; - Iterator<Map.Entry<String,Attributes>> entries = - sf.getEntries().entrySet().iterator(); - - // see if we can verify the whole manifest first - boolean manifestSigned = verifyManifestHash(sf, md, decoder, manifestDigests); - // verify manifest main attributes if (!manifestSigned && !verifyManifestMainAttrs(sf, md, decoder)) { throw new SecurityException ("Invalid signature file digest for Manifest main attributes"); } - // go through each section in the signature file + Iterator<Map.Entry<String,Attributes>> entries; + + if (manifestSigned) { + if (debug != null) { + debug.println("full manifest signature match, " + + "update signer info from MANIFEST.MF"); + } + entries = man.getEntries().entrySet().iterator(); + } else { + if (debug != null) { + debug.println("full manifest signature unmatch, " + + "update signer info from SF file"); + } + entries = sf.getEntries().entrySet().iterator(); + } + + // go through each section + while(entries.hasNext()) { Map.Entry<String,Attributes> e = entries.next(); String name = e.getKey(); if (manifestSigned || - (verifySection(e.getValue(), name, md, decoder))) { + (verifySection(e.getValue(), name, md, decoder))) { if (name.startsWith("./")) name = name.substring(2); @@ -593,7 +656,6 @@ public class SignatureFileVerifier { if (set == subset) return true; - boolean match; for (int i = 0; i < subset.length; i++) { if (!contains(set, subset[i])) return false; @@ -613,8 +675,6 @@ public class SignatureFileVerifier { if ((oldSigners == null) && (signers == newSigners)) return true; - boolean match; - // make sure all oldSigners are in signers if ((oldSigners != null) && !isSubSet(oldSigners, signers)) return false; @@ -638,7 +698,7 @@ public class SignatureFileVerifier { } void updateSigners(CodeSigner[] newSigners, - Hashtable<String, CodeSigner[]> signers, String name) { + Map<String, CodeSigner[]> signers, String name) { CodeSigner[] oldSigners = signers.get(name); diff --git a/src/share/classes/sun/swing/SwingUtilities2.java b/src/share/classes/sun/swing/SwingUtilities2.java index e786da7fbf6061c31806b43c4a1efd04ee75802f..fc7fbf43f132ff8e4dc209db213c6282d88be058 100644 --- a/src/share/classes/sun/swing/SwingUtilities2.java +++ b/src/share/classes/sun/swing/SwingUtilities2.java @@ -270,11 +270,10 @@ public class SwingUtilities2 { */ public static int getLeftSideBearing(JComponent c, FontMetrics fm, String string) { - int res = 0; - if (!string.isEmpty()) { - res = getLeftSideBearing(c, fm, string.charAt(0)); + if ((string == null) || (string.length() == 0)) { + return 0; } - return res; + return getLeftSideBearing(c, fm, string.charAt(0)); } /** diff --git a/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java b/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java index 8d9e61d27ba97c28088d673d84c9ff8aed43978c..b0709d06e15141fcc156f1d6188d7259ea4675c9 100644 --- a/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java +++ b/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java @@ -103,9 +103,9 @@ public class JConsoleResources_ja extends JConsoleResources { {"CPUUsageFormat","CPU\u4F7F\u7528\u7387: {0}%"}, {"Cancel","\u53D6\u6D88"}, {"Cascade", "\u91CD\u306D\u3066\u8868\u793A(C)"}, - {"Cascade.mnemonic", "C"}, + {"Cascade.mnemonic", 'C'}, {"Chart:", "\u30C1\u30E3\u30FC\u30C8(C):"}, - {"Chart:.mnemonic", "C"}, + {"Chart:.mnemonic", 'C'}, {"Class path","\u30AF\u30E9\u30B9\u30D1\u30B9"}, {"Class","\u30AF\u30E9\u30B9"}, {"ClassName","ClassName"}, @@ -122,7 +122,7 @@ public class JConsoleResources_ja extends JConsoleResources { {"CompositeData","CompositeData"}, {"Config","\u69CB\u6210"}, {"Connect", "\u63A5\u7D9A(C)"}, - {"Connect.mnemonic", "C"}, + {"Connect.mnemonic", 'C'}, {"Connect...","\u63A5\u7D9A..."}, {"ConnectDialog.connectButton.toolTip", "Java\u4EEE\u60F3\u30DE\u30B7\u30F3\u306B\u63A5\u7D9A"}, {"ConnectDialog.accessibleDescription", "\u30ED\u30FC\u30AB\u30EB\u307E\u305F\u306F\u30EA\u30E2\u30FC\u30C8\u306EJava\u4EEE\u60F3\u30DE\u30B7\u30F3\u3078\u306E\u65B0\u898F\u63A5\u7D9A\u3092\u884C\u3046\u30C0\u30A4\u30A2\u30ED\u30B0"}, @@ -133,7 +133,7 @@ public class JConsoleResources_ja extends JConsoleResources { {"Connected. Click to disconnect.","\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u5207\u65AD\u3057\u307E\u3059\u3002"}, {"Connection failed","\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F"}, {"Connection", "\u63A5\u7D9A(C)"}, - {"Connection.mnemonic", "C"}, + {"Connection.mnemonic", 'C'}, {"Connection name", "\u63A5\u7D9A\u540D"}, {"ConnectionName (disconnected)","{0} (\u5207\u65AD\u6E08)"}, {"Constructor","\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF"}, @@ -150,7 +150,7 @@ public class JConsoleResources_ja extends JConsoleResources { {"Descriptor", "\u8A18\u8FF0\u5B50"}, {"Details", "\u8A73\u7D30"}, {"Detect Deadlock", "\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u306E\u691C\u51FA(D)"}, - {"Detect Deadlock.mnemonic", "D"}, + {"Detect Deadlock.mnemonic", 'D'}, {"Detect Deadlock.toolTip", "\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u6E08\u30B9\u30EC\u30C3\u30C9\u306E\u691C\u51FA"}, {"Dimension is not supported:","\u6B21\u5143\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093:"}, {"Discard chart", "\u30C1\u30E3\u30FC\u30C8\u306E\u7834\u68C4"}, @@ -168,7 +168,7 @@ public class JConsoleResources_ja extends JConsoleResources { {"Error:","\u30A8\u30E9\u30FC:"}, {"Event","\u30A4\u30D9\u30F3\u30C8"}, {"Exit", "\u7D42\u4E86(X)"}, - {"Exit.mnemonic", "X"}, + {"Exit.mnemonic", 'X'}, {"Fail to load plugin", "\u8B66\u544A: \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {0}"}, {"FileChooser.fileExists.cancelOption", "\u53D6\u6D88"}, {"FileChooser.fileExists.message", "<html><center>\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059:<br>{0}<br>\u7F6E\u63DB\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\u3002"}, @@ -193,16 +193,16 @@ public class JConsoleResources_ja extends JConsoleResources { {"Help.AboutDialog.masthead.title", "JConsole\u306B\u3064\u3044\u3066"}, {"Help.AboutDialog.title", "JConsole: \u8A73\u7D30"}, {"Help.AboutDialog.userGuideLink", "JConsole\u30E6\u30FC\u30B6\u30FC\u30FB\u30AC\u30A4\u30C9(U):<br>{0}"}, - {"Help.AboutDialog.userGuideLink.mnemonic", "U"}, + {"Help.AboutDialog.userGuideLink.mnemonic", 'U'}, {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html"}, {"HelpMenu.About.title", "JConsole\u306B\u3064\u3044\u3066(A)"}, - {"HelpMenu.About.title.mnemonic", "A"}, + {"HelpMenu.About.title.mnemonic", 'A'}, {"HelpMenu.UserGuide.title", "\u30AA\u30F3\u30E9\u30A4\u30F3\u30FB\u30E6\u30FC\u30B6\u30FC\u30FB\u30AC\u30A4\u30C9(U)"}, - {"HelpMenu.UserGuide.title.mnemonic", "U"}, + {"HelpMenu.UserGuide.title.mnemonic", 'U'}, {"HelpMenu.title", "\u30D8\u30EB\u30D7(H)"}, - {"HelpMenu.title.mnemonic", "H"}, + {"HelpMenu.title.mnemonic", 'H'}, {"Hotspot MBeans...", "Hotspot MBeans(H)..."}, - {"Hotspot MBeans....mnemonic", "H"}, + {"Hotspot MBeans....mnemonic", 'H'}, {"Hotspot MBeans.dialog.accessibleDescription", "Hotspot MBeans\u306E\u7BA1\u7406\u7528\u30C0\u30A4\u30A2\u30ED\u30B0"}, {"Impact","\u5F71\u97FF"}, {"Info","\u60C5\u5831"}, @@ -222,7 +222,7 @@ public class JConsoleResources_ja extends JConsoleResources { {"Live Threads","\u5B9F\u884C\u4E2D\u306E\u30B9\u30EC\u30C3\u30C9"}, {"Loaded", "\u30ED\u30FC\u30C9\u6E08"}, {"Local Process:", "\u30ED\u30FC\u30AB\u30EB\u30FB\u30D7\u30ED\u30BB\u30B9(L):"}, - {"Local Process:.mnemonic", "L"}, + {"Local Process:.mnemonic", 'L'}, {"Look and Feel","Look&Feel"}, {"Masthead.font", "Dialog-PLAIN-25"}, {"Management Not Enabled","<b>\u6CE8\u610F</b>: \u7BA1\u7406\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306F\u3053\u306E\u30D7\u30ED\u30BB\u30B9\u3067\u306F\u6709\u52B9\u5316\u3055\u308C\u307E\u305B\u3093\u3002"}, @@ -233,20 +233,20 @@ public class JConsoleResources_ja extends JConsoleResources { {"MBeanOperationInfo","MBeanOperationInfo"}, {"MBeans","MBeans"}, {"MBeansTab.clearNotificationsButton", "\u30AF\u30EA\u30A2(C)"}, - {"MBeansTab.clearNotificationsButton.mnemonic", "C"}, + {"MBeansTab.clearNotificationsButton.mnemonic", 'C'}, {"MBeansTab.clearNotificationsButton.toolTip", "\u901A\u77E5\u306E\u30AF\u30EA\u30A2"}, {"MBeansTab.compositeNavigationMultiple", "\u30B3\u30F3\u30DD\u30B8\u30C3\u30C8\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3{0}/{1}"}, {"MBeansTab.compositeNavigationSingle", "\u30B3\u30F3\u30DD\u30B8\u30C3\u30C8\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3"}, {"MBeansTab.refreshAttributesButton", "\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5(R)"}, - {"MBeansTab.refreshAttributesButton.mnemonic", "R"}, + {"MBeansTab.refreshAttributesButton.mnemonic", 'R'}, {"MBeansTab.refreshAttributesButton.toolTip", "\u5C5E\u6027\u306E\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5"}, {"MBeansTab.subscribeNotificationsButton", "\u30B5\u30D6\u30B9\u30AF\u30E9\u30A4\u30D6(S)"}, - {"MBeansTab.subscribeNotificationsButton.mnemonic", "S"}, + {"MBeansTab.subscribeNotificationsButton.mnemonic", 'S'}, {"MBeansTab.subscribeNotificationsButton.toolTip", "\u901A\u77E5\u30EA\u30B9\u30CB\u30F3\u30B0\u306E\u958B\u59CB"}, {"MBeansTab.tabularNavigationMultiple", "\u30BF\u30D6\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3{0}/{1}"}, {"MBeansTab.tabularNavigationSingle", "\u30BF\u30D6\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3"}, {"MBeansTab.unsubscribeNotificationsButton", "\u30B5\u30D6\u30B9\u30AF\u30E9\u30A4\u30D6\u89E3\u9664(U)"}, - {"MBeansTab.unsubscribeNotificationsButton.mnemonic", "U"}, + {"MBeansTab.unsubscribeNotificationsButton.mnemonic", 'U'}, {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u901A\u77E5\u30EA\u30B9\u30CB\u30F3\u30B0\u306E\u505C\u6B62"}, {"Manage Hotspot MBeans in: ", "Hotspot MBeans\u306E\u7BA1\u7406: "}, {"Max","\u6700\u5927"}, @@ -263,7 +263,7 @@ public class JConsoleResources_ja extends JConsoleResources { {"Message","\u30E1\u30C3\u30BB\u30FC\u30B8"}, {"Method successfully invoked", "\u30E1\u30BD\u30C3\u30C9\u304C\u6B63\u5E38\u306B\u8D77\u52D5\u3055\u308C\u307E\u3057\u305F"}, {"Minimize All", "\u3059\u3079\u3066\u6700\u5C0F\u5316(M)"}, - {"Minimize All.mnemonic", "M"}, + {"Minimize All.mnemonic", 'M'}, {"Minus Version", "\u3053\u308C\u306F{0}\u306E\u30D0\u30FC\u30B8\u30E7\u30F3{1}\u3067\u3059"}, {"Monitor locked", " - \u30ED\u30C3\u30AF\u6E08{0}\n"}, @@ -279,7 +279,7 @@ public class JConsoleResources_ja extends JConsoleResources { {"Name State LockName LockOwner", "\u540D\u524D: {0}\n\u72B6\u614B: {2}\u306E{1}\u3001\u6240\u6709\u8005: {3}\n"}, {"New Connection...", "\u65B0\u898F\u63A5\u7D9A(N)..."}, - {"New Connection....mnemonic", "N"}, + {"New Connection....mnemonic", 'N'}, {"New value applied","\u9069\u7528\u3055\u308C\u305F\u65B0\u898F\u5024"}, {"No attribute selected","\u5C5E\u6027\u304C\u9078\u629E\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"}, {"No deadlock detected","\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u304C\u691C\u51FA\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"}, @@ -305,19 +305,19 @@ public class JConsoleResources_ja extends JConsoleResources { {"OverviewPanel.plotter.accessibleName", "{0}\u306E\u30C1\u30E3\u30FC\u30C8\u3002"}, {"Parameter", "\u30D1\u30E9\u30E1\u30FC\u30BF"}, {"Password: ", "\u30D1\u30B9\u30EF\u30FC\u30C9(P): "}, - {"Password: .mnemonic", "P"}, + {"Password: .mnemonic", 'P'}, {"Password.accessibleName", "\u30D1\u30B9\u30EF\u30FC\u30C9"}, {"Peak","\u30D4\u30FC\u30AF"}, {"Perform GC", "GC\u306E\u5B9F\u884C(G)"}, - {"Perform GC.mnemonic", "G"}, + {"Perform GC.mnemonic", 'G'}, {"Perform GC.toolTip", "\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u306E\u30EA\u30AF\u30A8\u30B9\u30C8"}, {"Plotter.accessibleName", "\u30C1\u30E3\u30FC\u30C8"}, {"Plotter.accessibleName.keyAndValue", "{0}={1}\n"}, {"Plotter.accessibleName.noData", "\u30C7\u30FC\u30BF\u304C\u30D7\u30ED\u30C3\u30C8\u3055\u308C\u307E\u305B\u3093\u3002"}, {"Plotter.saveAsMenuItem", "\u540D\u524D\u3092\u4ED8\u3051\u3066\u30C7\u30FC\u30BF\u3092\u4FDD\u5B58(A)..."}, - {"Plotter.saveAsMenuItem.mnemonic", "A"}, + {"Plotter.saveAsMenuItem.mnemonic", 'A'}, {"Plotter.timeRangeMenu", "\u6642\u9593\u7BC4\u56F2(T)"}, - {"Plotter.timeRangeMenu.mnemonic", "T"}, + {"Plotter.timeRangeMenu.mnemonic", 'T'}, {"Problem adding listener","\u30EA\u30B9\u30CA\u30FC\u8FFD\u52A0\u4E2D\u306E\u554F\u984C"}, {"Problem displaying MBean", "MBean\u8868\u793A\u4E2D\u306E\u554F\u984C"}, {"Problem invoking", "\u547C\u51FA\u3057\u4E2D\u306E\u554F\u984C"}, @@ -329,11 +329,11 @@ public class JConsoleResources_ja extends JConsoleResources { {"Received","\u53D7\u4FE1\u6E08"}, {"Reconnect","\u518D\u63A5\u7D9A"}, {"Remote Process:", "\u30EA\u30E2\u30FC\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9(R):"}, - {"Remote Process:.mnemonic", "R"}, + {"Remote Process:.mnemonic", 'R'}, {"Remote Process.textField.accessibleName", "\u30EA\u30E2\u30FC\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9"}, {"Remove","\u524A\u9664"}, {"Restore All", "\u3059\u3079\u3066\u5FA9\u5143(R)"}, - {"Restore All.mnemonic", "R"}, + {"Restore All.mnemonic", 'R'}, {"Return value", "\u623B\u308A\u5024"}, {"ReturnType", "ReturnType"}, {"SeqNum","SeqNum"}, @@ -364,9 +364,9 @@ public class JConsoleResources_ja extends JConsoleResources { {"ThreadTab.threadPlotter.accessibleName", "\u30B9\u30EC\u30C3\u30C9\u6570\u306E\u30C1\u30E3\u30FC\u30C8\u3002"}, {"Threshold","\u3057\u304D\u3044\u5024"}, {"Tile", "\u4E26\u3079\u3066\u8868\u793A(T)"}, - {"Tile.mnemonic", "T"}, + {"Tile.mnemonic", 'T'}, {"Time Range:", "\u6642\u9593\u7BC4\u56F2(T):"}, - {"Time Range:.mnemonic", "T"}, + {"Time Range:.mnemonic", 'T'}, {"Time", "\u6642\u9593"}, {"TimeStamp","TimeStamp"}, {"Total Loaded", "\u30ED\u30FC\u30C9\u6E08\u5408\u8A08"}, @@ -387,7 +387,7 @@ public class JConsoleResources_ja extends JConsoleResources { {"remoteTF.usage","<b>\u4F7F\u7528\u65B9\u6CD5</b>: <hostname>:<port>\u307E\u305F\u306Fservice:jmx:<protocol>:<sap>"}, {"Used","\u4F7F\u7528\u6E08"}, {"Username: ", "\u30E6\u30FC\u30B6\u30FC\u540D(U): "}, - {"Username: .mnemonic", "U"}, + {"Username: .mnemonic", 'U'}, {"Username.accessibleName", "\u30E6\u30FC\u30B6\u30FC\u540D"}, {"UserData","UserData"}, {"Virtual Machine","\u4EEE\u60F3\u30DE\u30B7\u30F3"}, @@ -400,8 +400,8 @@ public class JConsoleResources_ja extends JConsoleResources { {"Verbose Output.toolTip", "\u30AF\u30E9\u30B9\u8AAD\u8FBC\u307F\u30B7\u30B9\u30C6\u30E0\u3067\u8A73\u7D30\u51FA\u529B\u3092\u6709\u52B9\u306B\u3059\u308B"}, {"View value", "\u5024\u306E\u8868\u793A"}, {"View","\u8868\u793A"}, - {"Window", "\u30A6\u30A3\u30F3\u30C9\u30A6"}, - {"Window.mnemonic", "W"}, + {"Window", "\u30A6\u30A3\u30F3\u30C9\u30A6(W)"}, + {"Window.mnemonic", 'W'}, {"Windows","\u30A6\u30A3\u30F3\u30C9\u30A6"}, {"Writable","\u66F8\u8FBC\u307F\u53EF\u80FD"}, {"You cannot drop a class here", "\u30AF\u30E9\u30B9\u3092\u3053\u3053\u306B\u30C9\u30ED\u30C3\u30D7\u3067\u304D\u307E\u305B\u3093"}, diff --git a/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java b/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java index 54d7793f9d79fe2a91d35c5c31e737da49e0f623..07f132b475259ac8371e4a41f956c287d13619fe 100644 --- a/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java +++ b/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java @@ -102,10 +102,10 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"CPU Usage","CPU \u5360\u7528\u7387"}, {"CPUUsageFormat","CPU \u5360\u7528\u7387: {0}%"}, {"Cancel","\u53D6\u6D88"}, - {"Cascade", "\u7EA7\u8054(C)"}, - {"Cascade.mnemonic", "C"}, + {"Cascade", "\u5C42\u53E0(C)"}, + {"Cascade.mnemonic", 'C'}, {"Chart:", "\u56FE\u8868(C):"}, - {"Chart:.mnemonic", "C"}, + {"Chart:.mnemonic", 'C'}, {"Class path","\u7C7B\u8DEF\u5F84"}, {"Class","\u7C7B"}, {"ClassName","ClassName"}, @@ -122,7 +122,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"CompositeData","CompositeData"}, {"Config","\u914D\u7F6E"}, {"Connect", "\u8FDE\u63A5(C)"}, - {"Connect.mnemonic", "C"}, + {"Connect.mnemonic", 'C'}, {"Connect...","\u8FDE\u63A5..."}, {"ConnectDialog.connectButton.toolTip", "\u8FDE\u63A5\u5230 Java \u865A\u62DF\u673A"}, {"ConnectDialog.accessibleDescription", "\u7528\u4E8E\u4E0E\u672C\u5730\u6216\u8FDC\u7A0B Java \u865A\u62DF\u673A\u5EFA\u7ACB\u65B0\u8FDE\u63A5\u7684\u5BF9\u8BDD\u6846"}, @@ -133,7 +133,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Connected. Click to disconnect.","\u5DF2\u8FDE\u63A5\u3002\u5355\u51FB\u53EF\u65AD\u5F00\u8FDE\u63A5\u3002"}, {"Connection failed","\u8FDE\u63A5\u5931\u8D25"}, {"Connection", "\u8FDE\u63A5(C)"}, - {"Connection.mnemonic", "C"}, + {"Connection.mnemonic", 'C'}, {"Connection name", "\u8FDE\u63A5\u540D\u79F0"}, {"ConnectionName (disconnected)","{0} (\u5DF2\u65AD\u5F00\u8FDE\u63A5)"}, {"Constructor","\u6784\u9020\u5668"}, @@ -150,7 +150,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Descriptor", "\u63CF\u8FF0\u7B26"}, {"Details", "\u8BE6\u7EC6\u8D44\u6599"}, {"Detect Deadlock", "\u68C0\u6D4B\u6B7B\u9501(D)"}, - {"Detect Deadlock.mnemonic", "D"}, + {"Detect Deadlock.mnemonic", 'D'}, {"Detect Deadlock.toolTip", "\u68C0\u6D4B\u5904\u4E8E\u6B7B\u9501\u72B6\u6001\u7684\u7EBF\u7A0B"}, {"Dimension is not supported:","\u4E0D\u652F\u6301\u7EF4:"}, {"Discard chart", "\u653E\u5F03\u56FE\u8868"}, @@ -168,7 +168,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Error:","\u9519\u8BEF:"}, {"Event","\u4E8B\u4EF6"}, {"Exit", "\u9000\u51FA(X)"}, - {"Exit.mnemonic", "X"}, + {"Exit.mnemonic", 'X'}, {"Fail to load plugin", "\u8B66\u544A: \u65E0\u6CD5\u52A0\u8F7D\u63D2\u4EF6: {0}"}, {"FileChooser.fileExists.cancelOption", "\u53D6\u6D88"}, {"FileChooser.fileExists.message", "<html><center>\u6587\u4EF6\u5DF2\u5B58\u5728:<br>{0}<br>\u662F\u5426\u8981\u66FF\u6362?"}, @@ -193,17 +193,17 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Help.AboutDialog.masthead.title", "\u5173\u4E8E JConsole"}, {"Help.AboutDialog.title", "JConsole: \u5173\u4E8E"}, {"Help.AboutDialog.userGuideLink", "JConsole \u7528\u6237\u6307\u5357(U):<br>{0}"}, - {"Help.AboutDialog.userGuideLink.mnemonic", "U"}, + {"Help.AboutDialog.userGuideLink.mnemonic", 'U'}, {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html"}, {"HelpMenu.About.title", "\u5173\u4E8E JConsole(A)"}, - {"HelpMenu.About.title.mnemonic", "A"}, + {"HelpMenu.About.title.mnemonic", 'A'}, {"HelpMenu.UserGuide.title", "\u8054\u673A\u7528\u6237\u6307\u5357(U)"}, - {"HelpMenu.UserGuide.title.mnemonic", "U"}, + {"HelpMenu.UserGuide.title.mnemonic", 'U'}, {"HelpMenu.title", "\u5E2E\u52A9(H)"}, - {"HelpMenu.title.mnemonic", "H"}, - {"Hotspot MBeans...", "\u70ED\u70B9 MBean(H)..."}, - {"Hotspot MBeans....mnemonic", "H"}, - {"Hotspot MBeans.dialog.accessibleDescription", "\u7528\u4E8E\u7BA1\u7406\u70ED\u70B9 MBean \u7684\u5BF9\u8BDD\u6846"}, + {"HelpMenu.title.mnemonic", 'H'}, + {"Hotspot MBeans...", "HotSpot MBean(H)..."}, + {"Hotspot MBeans....mnemonic", 'H'}, + {"Hotspot MBeans.dialog.accessibleDescription", "\u7528\u4E8E\u7BA1\u7406 HotSpot MBean \u7684\u5BF9\u8BDD\u6846"}, {"Impact","\u5F71\u54CD"}, {"Info","\u4FE1\u606F"}, {"INFO","INFO"}, @@ -222,7 +222,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Live Threads","\u6D3B\u52A8\u7EBF\u7A0B"}, {"Loaded", "\u5DF2\u52A0\u8F7D"}, {"Local Process:", "\u672C\u5730\u8FDB\u7A0B(L):"}, - {"Local Process:.mnemonic", "L"}, + {"Local Process:.mnemonic", 'L'}, {"Look and Feel","\u5916\u89C2"}, {"Masthead.font", "Dialog-PLAIN-25"}, {"Management Not Enabled","<b>\u6CE8</b>: \u672A\u5BF9\u6B64\u8FDB\u7A0B\u542F\u7528\u7BA1\u7406\u4EE3\u7406\u3002"}, @@ -233,22 +233,22 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"MBeanOperationInfo","MBeanOperationInfo"}, {"MBeans","MBean"}, {"MBeansTab.clearNotificationsButton", "\u6E05\u9664(C)"}, - {"MBeansTab.clearNotificationsButton.mnemonic", "C"}, + {"MBeansTab.clearNotificationsButton.mnemonic", 'C'}, {"MBeansTab.clearNotificationsButton.toolTip", "\u6E05\u9664\u901A\u77E5"}, {"MBeansTab.compositeNavigationMultiple", "\u7EC4\u5408\u5BFC\u822A{0}/{1}"}, {"MBeansTab.compositeNavigationSingle", "\u7EC4\u5408\u5BFC\u822A"}, {"MBeansTab.refreshAttributesButton", "\u5237\u65B0(R)"}, - {"MBeansTab.refreshAttributesButton.mnemonic", "R"}, + {"MBeansTab.refreshAttributesButton.mnemonic", 'R'}, {"MBeansTab.refreshAttributesButton.toolTip", "\u5237\u65B0\u5C5E\u6027"}, {"MBeansTab.subscribeNotificationsButton", "\u8BA2\u9605(S)"}, - {"MBeansTab.subscribeNotificationsButton.mnemonic", "S"}, + {"MBeansTab.subscribeNotificationsButton.mnemonic", 'S'}, {"MBeansTab.subscribeNotificationsButton.toolTip", "\u5F00\u59CB\u76D1\u542C\u901A\u77E5"}, {"MBeansTab.tabularNavigationMultiple", "\u8868\u683C\u5F0F\u5BFC\u822A{0}/{1}"}, {"MBeansTab.tabularNavigationSingle", "\u8868\u683C\u5F0F\u5BFC\u822A"}, {"MBeansTab.unsubscribeNotificationsButton", "\u53D6\u6D88\u8BA2\u9605(U)"}, - {"MBeansTab.unsubscribeNotificationsButton.mnemonic", "U"}, + {"MBeansTab.unsubscribeNotificationsButton.mnemonic", 'U'}, {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u505C\u6B62\u76D1\u542C\u901A\u77E5"}, - {"Manage Hotspot MBeans in: ", "\u7BA1\u7406\u4EE5\u4E0B\u4F4D\u7F6E\u7684\u70ED\u70B9 MBean: "}, + {"Manage Hotspot MBeans in: ", "\u7BA1\u7406\u4EE5\u4E0B\u4F4D\u7F6E\u7684 HotSpot MBean: "}, {"Max","\u6700\u5927\u503C"}, {"Maximum heap size","\u6700\u5927\u5806\u5927\u5C0F"}, {"Memory","\u5185\u5B58"}, @@ -263,7 +263,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Message","\u6D88\u606F"}, {"Method successfully invoked", "\u5DF2\u6210\u529F\u8C03\u7528\u65B9\u6CD5"}, {"Minimize All", "\u5168\u90E8\u6700\u5C0F\u5316(M)"}, - {"Minimize All.mnemonic", "M"}, + {"Minimize All.mnemonic", 'M'}, {"Minus Version", "\u8FD9\u662F{0}\u7248\u672C {1}"}, {"Monitor locked", " - \u5DF2\u9501\u5B9A{0}\n"}, @@ -279,7 +279,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Name State LockName LockOwner", "\u540D\u79F0: {0}\n\u72B6\u6001: {2}\u4E0A\u7684{1}, \u62E5\u6709\u8005: {3}\n"}, {"New Connection...", "\u65B0\u5EFA\u8FDE\u63A5(N)..."}, - {"New Connection....mnemonic", "N"}, + {"New Connection....mnemonic", 'N'}, {"New value applied","\u5DF2\u5E94\u7528\u65B0\u503C"}, {"No attribute selected","\u672A\u9009\u62E9\u5C5E\u6027"}, {"No deadlock detected","\u672A\u68C0\u6D4B\u5230\u6B7B\u9501"}, @@ -305,19 +305,19 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"OverviewPanel.plotter.accessibleName", "{0}\u7684\u56FE\u8868\u3002"}, {"Parameter", "\u53C2\u6570"}, {"Password: ", "\u53E3\u4EE4(P): "}, - {"Password: .mnemonic", "P"}, + {"Password: .mnemonic", 'P'}, {"Password.accessibleName", "\u53E3\u4EE4"}, {"Peak","\u5CF0\u503C"}, {"Perform GC", "\u6267\u884C GC(G)"}, - {"Perform GC.mnemonic", "G"}, + {"Perform GC.mnemonic", 'G'}, {"Perform GC.toolTip", "\u8BF7\u6C42\u5783\u573E\u6536\u96C6"}, {"Plotter.accessibleName", "\u56FE\u8868"}, {"Plotter.accessibleName.keyAndValue", "{0}={1}\n"}, {"Plotter.accessibleName.noData", "\u672A\u7ED8\u5236\u6570\u636E\u3002"}, {"Plotter.saveAsMenuItem", "\u5C06\u6570\u636E\u53E6\u5B58\u4E3A(A)..."}, - {"Plotter.saveAsMenuItem.mnemonic", "A"}, + {"Plotter.saveAsMenuItem.mnemonic", 'A'}, {"Plotter.timeRangeMenu", "\u65F6\u95F4\u8303\u56F4(T)"}, - {"Plotter.timeRangeMenu.mnemonic", "T"}, + {"Plotter.timeRangeMenu.mnemonic", 'T'}, {"Problem adding listener","\u6DFB\u52A0\u76D1\u542C\u7A0B\u5E8F\u65F6\u51FA\u73B0\u95EE\u9898"}, {"Problem displaying MBean", "\u663E\u793A MBean \u65F6\u51FA\u73B0\u95EE\u9898"}, {"Problem invoking", "\u8C03\u7528\u65F6\u51FA\u73B0\u95EE\u9898"}, @@ -329,11 +329,11 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Received","\u6536\u5230"}, {"Reconnect","\u91CD\u65B0\u8FDE\u63A5"}, {"Remote Process:", "\u8FDC\u7A0B\u8FDB\u7A0B(R):"}, - {"Remote Process:.mnemonic", "R"}, + {"Remote Process:.mnemonic", 'R'}, {"Remote Process.textField.accessibleName", "\u8FDC\u7A0B\u8FDB\u7A0B"}, {"Remove","\u5220\u9664"}, {"Restore All", "\u5168\u90E8\u8FD8\u539F(R)"}, - {"Restore All.mnemonic", "R"}, + {"Restore All.mnemonic", 'R'}, {"Return value", "\u8FD4\u56DE\u503C"}, {"ReturnType", "ReturnType"}, {"SeqNum","SeqNum"}, @@ -364,9 +364,9 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"ThreadTab.threadPlotter.accessibleName", "\u8868\u793A\u7EBF\u7A0B\u6570\u7684\u56FE\u8868\u3002"}, {"Threshold","\u9608\u503C"}, {"Tile", "\u5E73\u94FA(T)"}, - {"Tile.mnemonic", "T"}, + {"Tile.mnemonic", 'T'}, {"Time Range:", "\u65F6\u95F4\u8303\u56F4(T):"}, - {"Time Range:.mnemonic", "T"}, + {"Time Range:.mnemonic", 'T'}, {"Time", "\u65F6\u95F4"}, {"TimeStamp","TimeStamp"}, {"Total Loaded", "\u52A0\u8F7D\u603B\u6570"}, @@ -387,7 +387,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"remoteTF.usage","<b>\u7528\u6CD5</b>: <hostname>:<port> \u6216 service:jmx:<protocol>:<sap>"}, {"Used","\u5DF2\u7528"}, {"Username: ", "\u7528\u6237\u540D(U): "}, - {"Username: .mnemonic", "U"}, + {"Username: .mnemonic", 'U'}, {"Username.accessibleName", "\u7528\u6237\u540D"}, {"UserData","UserData"}, {"Virtual Machine","\u865A\u62DF\u673A"}, @@ -401,7 +401,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"View value", "\u89C6\u56FE\u503C"}, {"View","\u89C6\u56FE"}, {"Window", "\u7A97\u53E3(W)"}, - {"Window.mnemonic", "W"}, + {"Window.mnemonic", 'W'}, {"Windows","Windows"}, {"Writable","\u53EF\u5199"}, {"You cannot drop a class here", "\u65E0\u6CD5\u5220\u9664\u6B64\u5904\u7684\u7C7B"}, diff --git a/src/share/classes/sun/util/locale/BaseLocale.java b/src/share/classes/sun/util/locale/BaseLocale.java index 2137dbd86918d6e9430460653cdffdc6370862c0..6eee582909572d513f765b8e6e38f8a63bca6312 100644 --- a/src/share/classes/sun/util/locale/BaseLocale.java +++ b/src/share/classes/sun/util/locale/BaseLocale.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,38 +38,46 @@ public final class BaseLocale { public static final String SEP = "_"; private static final Cache CACHE = new Cache(); - public static final BaseLocale ROOT = BaseLocale.getInstance("", "", "", ""); - private String _language = ""; - private String _script = ""; - private String _region = ""; - private String _variant = ""; + private final String language; + private final String script; + private final String region; + private final String variant; - private transient volatile int _hash = 0; + private volatile int hash = 0; + + // This method must be called only when creating the Locale.* constants. + private BaseLocale(String language, String region) { + this.language = language; + this.script = ""; + this.region = region; + this.variant = ""; + } private BaseLocale(String language, String script, String region, String variant) { - if (language != null) { - _language = AsciiUtil.toLowerString(language).intern(); - } - if (script != null) { - _script = AsciiUtil.toTitleString(script).intern(); - } - if (region != null) { - _region = AsciiUtil.toUpperString(region).intern(); - } - if (variant != null) { - _variant = variant.intern(); - } + this.language = (language != null) ? LocaleUtils.toLowerString(language).intern() : ""; + this.script = (script != null) ? LocaleUtils.toTitleString(script).intern() : ""; + this.region = (region != null) ? LocaleUtils.toUpperString(region).intern() : ""; + this.variant = (variant != null) ? variant.intern() : ""; + } + + // Called for creating the Locale.* constants. No argument + // validation is performed. + public static BaseLocale createInstance(String language, String region) { + BaseLocale base = new BaseLocale(language, region); + CACHE.put(new Key(language, region), base); + return base; } - public static BaseLocale getInstance(String language, String script, String region, String variant) { + public static BaseLocale getInstance(String language, String script, + String region, String variant) { // JDK uses deprecated ISO639.1 language codes for he, yi and id if (language != null) { - if (AsciiUtil.caseIgnoreMatch(language, "he")) { + if (LocaleUtils.caseIgnoreMatch(language, "he")) { language = "iw"; - } else if (AsciiUtil.caseIgnoreMatch(language, "yi")) { + } else if (LocaleUtils.caseIgnoreMatch(language, "yi")) { language = "ji"; - } else if (AsciiUtil.caseIgnoreMatch(language, "id")) { + } else if (LocaleUtils.caseIgnoreMatch(language, "id")) { language = "in"; } } @@ -80,21 +88,22 @@ public final class BaseLocale { } public String getLanguage() { - return _language; + return language; } public String getScript() { - return _script; + return script; } public String getRegion() { - return _region; + return region; } public String getVariant() { - return _variant; + return variant; } + @Override public boolean equals(Object obj) { if (this == obj) { return true; @@ -103,138 +112,178 @@ public final class BaseLocale { return false; } BaseLocale other = (BaseLocale)obj; - return hashCode() == other.hashCode() - && _language.equals(other._language) - && _script.equals(other._script) - && _region.equals(other._region) - && _variant.equals(other._variant); + return language == other.language + && script == other.script + && region == other.region + && variant == other.variant; } + @Override public String toString() { StringBuilder buf = new StringBuilder(); - if (_language.length() > 0) { + if (language.length() > 0) { buf.append("language="); - buf.append(_language); + buf.append(language); } - if (_script.length() > 0) { + if (script.length() > 0) { if (buf.length() > 0) { buf.append(", "); } buf.append("script="); - buf.append(_script); + buf.append(script); } - if (_region.length() > 0) { + if (region.length() > 0) { if (buf.length() > 0) { buf.append(", "); } buf.append("region="); - buf.append(_region); + buf.append(region); } - if (_variant.length() > 0) { + if (variant.length() > 0) { if (buf.length() > 0) { buf.append(", "); } buf.append("variant="); - buf.append(_variant); + buf.append(variant); } return buf.toString(); } + @Override public int hashCode() { - int h = _hash; + int h = hash; if (h == 0) { // Generating a hash value from language, script, region and variant - for (int i = 0; i < _language.length(); i++) { - h = 31*h + _language.charAt(i); - } - for (int i = 0; i < _script.length(); i++) { - h = 31*h + _script.charAt(i); - } - for (int i = 0; i < _region.length(); i++) { - h = 31*h + _region.charAt(i); - } - for (int i = 0; i < _variant.length(); i++) { - h = 31*h + _variant.charAt(i); - } - _hash = h; + h = language.hashCode(); + h = 31 * h + script.hashCode(); + h = 31 * h + region.hashCode(); + h = 31 * h + variant.hashCode(); + hash = h; } return h; } - private static class Key implements Comparable<Key> { - private String _lang = ""; - private String _scrt = ""; - private String _regn = ""; - private String _vart = ""; + private static final class Key implements Comparable<Key> { + private final String lang; + private final String scrt; + private final String regn; + private final String vart; + private final boolean normalized; + private final int hash; + + /** + * Creates a Key. language and region must be normalized + * (intern'ed in the proper case). + */ + private Key(String language, String region) { + assert language.intern() == language + && region.intern() == region; - private volatile int _hash; // Default to 0 + lang = language; + scrt = ""; + regn = region; + vart = ""; + this.normalized = true; + + int h = language.hashCode(); + if (region != "") { + int len = region.length(); + for (int i = 0; i < len; i++) { + h = 31 * h + LocaleUtils.toLower(region.charAt(i)); + } + } + hash = h; + } public Key(String language, String script, String region, String variant) { + this(language, script, region, variant, false); + } + + private Key(String language, String script, String region, + String variant, boolean normalized) { + int h = 0; if (language != null) { - _lang = language; + lang = language; + int len = language.length(); + for (int i = 0; i < len; i++) { + h = 31*h + LocaleUtils.toLower(language.charAt(i)); + } + } else { + lang = ""; } if (script != null) { - _scrt = script; + scrt = script; + int len = script.length(); + for (int i = 0; i < len; i++) { + h = 31*h + LocaleUtils.toLower(script.charAt(i)); + } + } else { + scrt = ""; } if (region != null) { - _regn = region; + regn = region; + int len = region.length(); + for (int i = 0; i < len; i++) { + h = 31*h + LocaleUtils.toLower(region.charAt(i)); + } + } else { + regn = ""; } if (variant != null) { - _vart = variant; + vart = variant; + int len = variant.length(); + for (int i = 0; i < len; i++) { + h = 31*h + variant.charAt(i); + } + } else { + vart = ""; } + hash = h; + this.normalized = normalized; } + @Override public boolean equals(Object obj) { return (this == obj) || (obj instanceof Key) - && AsciiUtil.caseIgnoreMatch(((Key)obj)._lang, this._lang) - && AsciiUtil.caseIgnoreMatch(((Key)obj)._scrt, this._scrt) - && AsciiUtil.caseIgnoreMatch(((Key)obj)._regn, this._regn) - && ((Key)obj)._vart.equals(_vart); // variant is case sensitive in JDK! + && this.hash == ((Key)obj).hash + && LocaleUtils.caseIgnoreMatch(((Key)obj).lang, this.lang) + && LocaleUtils.caseIgnoreMatch(((Key)obj).scrt, this.scrt) + && LocaleUtils.caseIgnoreMatch(((Key)obj).regn, this.regn) + && ((Key)obj).vart.equals(vart); // variant is case sensitive in JDK! } + @Override public int compareTo(Key other) { - int res = AsciiUtil.caseIgnoreCompare(this._lang, other._lang); + int res = LocaleUtils.caseIgnoreCompare(this.lang, other.lang); if (res == 0) { - res = AsciiUtil.caseIgnoreCompare(this._scrt, other._scrt); + res = LocaleUtils.caseIgnoreCompare(this.scrt, other.scrt); if (res == 0) { - res = AsciiUtil.caseIgnoreCompare(this._regn, other._regn); + res = LocaleUtils.caseIgnoreCompare(this.regn, other.regn); if (res == 0) { - res = this._vart.compareTo(other._vart); + res = this.vart.compareTo(other.vart); } } } return res; } + @Override public int hashCode() { - int h = _hash; - if (h == 0) { - // Generating a hash value from language, script, region and variant - for (int i = 0; i < _lang.length(); i++) { - h = 31*h + AsciiUtil.toLower(_lang.charAt(i)); - } - for (int i = 0; i < _scrt.length(); i++) { - h = 31*h + AsciiUtil.toLower(_scrt.charAt(i)); - } - for (int i = 0; i < _regn.length(); i++) { - h = 31*h + AsciiUtil.toLower(_regn.charAt(i)); - } - for (int i = 0; i < _vart.length(); i++) { - h = 31*h + _vart.charAt(i); - } - _hash = h; - } - return h; + return hash; } public static Key normalize(Key key) { - String lang = AsciiUtil.toLowerString(key._lang).intern(); - String scrt = AsciiUtil.toTitleString(key._scrt).intern(); - String regn = AsciiUtil.toUpperString(key._regn).intern(); - String vart = key._vart.intern(); // preserve upper/lower cases + if (key.normalized) { + return key; + } - return new Key(lang, scrt, regn, vart); + String lang = LocaleUtils.toLowerString(key.lang).intern(); + String scrt = LocaleUtils.toTitleString(key.scrt).intern(); + String regn = LocaleUtils.toUpperString(key.regn).intern(); + String vart = key.vart.intern(); // preserve upper/lower cases + + return new Key(lang, scrt, regn, vart, true); } } @@ -243,13 +292,14 @@ public final class BaseLocale { public Cache() { } + @Override protected Key normalizeKey(Key key) { return Key.normalize(key); } + @Override protected BaseLocale createObject(Key key) { - return new BaseLocale(key._lang, key._scrt, key._regn, key._vart); + return new BaseLocale(key.lang, key.scrt, key.regn, key.vart); } - } } diff --git a/src/share/classes/sun/util/locale/Extension.java b/src/share/classes/sun/util/locale/Extension.java index 8d98faf2de5b0ea50245fdced87b9d7c2f7285df..7c984300fa018be2c6c97f674f3fabb48d8c21c5 100644 --- a/src/share/classes/sun/util/locale/Extension.java +++ b/src/share/classes/sun/util/locale/Extension.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,29 +32,34 @@ package sun.util.locale; -public class Extension { - private char _key; - protected String _value; +class Extension { + private final char key; + private String value, id; protected Extension(char key) { - _key = key; + this.key = key; } Extension(char key, String value) { - _key = key; - _value = value; + this.key = key; + setValue(value); + } + + protected void setValue(String value) { + this.value = value; + this.id = key + LanguageTag.SEP + value; } public char getKey() { - return _key; + return key; } public String getValue() { - return _value; + return value; } public String getID() { - return _key + LanguageTag.SEP + _value; + return id; } public String toString() { diff --git a/src/share/classes/sun/util/locale/InternalLocaleBuilder.java b/src/share/classes/sun/util/locale/InternalLocaleBuilder.java index 6c33036b98bd9eca96e4a85c80670452dc1dcbe8..b5e0fb47865364ddf568688696f488d4bbd883fa 100644 --- a/src/share/classes/sun/util/locale/InternalLocaleBuilder.java +++ b/src/share/classes/sun/util/locale/InternalLocaleBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,64 +35,66 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; public final class InternalLocaleBuilder { - private String _language = ""; - private String _script = ""; - private String _region = ""; - private String _variant = ""; + private static final CaseInsensitiveChar PRIVATEUSE_KEY + = new CaseInsensitiveChar(LanguageTag.PRIVATEUSE); - private static final CaseInsensitiveChar PRIVUSE_KEY = new CaseInsensitiveChar(LanguageTag.PRIVATEUSE.charAt(0)); + private String language = ""; + private String script = ""; + private String region = ""; + private String variant = ""; - private HashMap<CaseInsensitiveChar, String> _extensions; - private HashSet<CaseInsensitiveString> _uattributes; - private HashMap<CaseInsensitiveString, String> _ukeywords; + private Map<CaseInsensitiveChar, String> extensions; + private Set<CaseInsensitiveString> uattributes; + private Map<CaseInsensitiveString, String> ukeywords; public InternalLocaleBuilder() { } public InternalLocaleBuilder setLanguage(String language) throws LocaleSyntaxException { - if (language == null || language.length() == 0) { - _language = ""; + if (LocaleUtils.isEmpty(language)) { + this.language = ""; } else { if (!LanguageTag.isLanguage(language)) { throw new LocaleSyntaxException("Ill-formed language: " + language, 0); } - _language = language; + this.language = language; } return this; } public InternalLocaleBuilder setScript(String script) throws LocaleSyntaxException { - if (script == null || script.length() == 0) { - _script = ""; + if (LocaleUtils.isEmpty(script)) { + this.script = ""; } else { if (!LanguageTag.isScript(script)) { throw new LocaleSyntaxException("Ill-formed script: " + script, 0); } - _script = script; + this.script = script; } return this; } public InternalLocaleBuilder setRegion(String region) throws LocaleSyntaxException { - if (region == null || region.length() == 0) { - _region = ""; + if (LocaleUtils.isEmpty(region)) { + this.region = ""; } else { if (!LanguageTag.isRegion(region)) { throw new LocaleSyntaxException("Ill-formed region: " + region, 0); } - _region = region; + this.region = region; } return this; } public InternalLocaleBuilder setVariant(String variant) throws LocaleSyntaxException { - if (variant == null || variant.length() == 0) { - _variant = ""; + if (LocaleUtils.isEmpty(variant)) { + this.variant = ""; } else { // normalize separators to "_" String var = variant.replaceAll(LanguageTag.SEP, BaseLocale.SEP); @@ -100,7 +102,7 @@ public final class InternalLocaleBuilder { if (errIdx != -1) { throw new LocaleSyntaxException("Ill-formed variant: " + variant, errIdx); } - _variant = var; + this.variant = var; } return this; } @@ -110,10 +112,10 @@ public final class InternalLocaleBuilder { throw new LocaleSyntaxException("Ill-formed Unicode locale attribute: " + attribute); } // Use case insensitive string to prevent duplication - if (_uattributes == null) { - _uattributes = new HashSet<CaseInsensitiveString>(4); + if (uattributes == null) { + uattributes = new HashSet<>(4); } - _uattributes.add(new CaseInsensitiveString(attribute)); + uattributes.add(new CaseInsensitiveString(attribute)); return this; } @@ -121,8 +123,8 @@ public final class InternalLocaleBuilder { if (attribute == null || !UnicodeLocaleExtension.isAttribute(attribute)) { throw new LocaleSyntaxException("Ill-formed Unicode locale attribute: " + attribute); } - if (_uattributes != null) { - _uattributes.remove(new CaseInsensitiveString(attribute)); + if (uattributes != null) { + uattributes.remove(new CaseInsensitiveString(attribute)); } return this; } @@ -134,9 +136,9 @@ public final class InternalLocaleBuilder { CaseInsensitiveString cikey = new CaseInsensitiveString(key); if (type == null) { - if (_ukeywords != null) { + if (ukeywords != null) { // null type is used for remove the key - _ukeywords.remove(cikey); + ukeywords.remove(cikey); } } else { if (type.length() != 0) { @@ -147,15 +149,17 @@ public final class InternalLocaleBuilder { while (!itr.isDone()) { String s = itr.current(); if (!UnicodeLocaleExtension.isTypeSubtag(s)) { - throw new LocaleSyntaxException("Ill-formed Unicode locale keyword type: " + type, itr.currentStart()); + throw new LocaleSyntaxException("Ill-formed Unicode locale keyword type: " + + type, + itr.currentStart()); } itr.next(); } } - if (_ukeywords == null) { - _ukeywords = new HashMap<CaseInsensitiveString, String>(4); + if (ukeywords == null) { + ukeywords = new HashMap<>(4); } - _ukeywords.put(cikey, type); + ukeywords.put(cikey, type); } return this; } @@ -167,21 +171,21 @@ public final class InternalLocaleBuilder { throw new LocaleSyntaxException("Ill-formed extension key: " + singleton); } - boolean remove = (value == null || value.length() == 0); + boolean remove = LocaleUtils.isEmpty(value); CaseInsensitiveChar key = new CaseInsensitiveChar(singleton); if (remove) { if (UnicodeLocaleExtension.isSingletonChar(key.value())) { // clear entire Unicode locale extension - if (_uattributes != null) { - _uattributes.clear(); + if (uattributes != null) { + uattributes.clear(); } - if (_ukeywords != null) { - _ukeywords.clear(); + if (ukeywords != null) { + ukeywords.clear(); } } else { - if (_extensions != null && _extensions.containsKey(key)) { - _extensions.remove(key); + if (extensions != null && extensions.containsKey(key)) { + extensions.remove(key); } } } else { @@ -197,7 +201,8 @@ public final class InternalLocaleBuilder { validSubtag = LanguageTag.isExtensionSubtag(s); } if (!validSubtag) { - throw new LocaleSyntaxException("Ill-formed extension value: " + s, itr.currentStart()); + throw new LocaleSyntaxException("Ill-formed extension value: " + s, + itr.currentStart()); } itr.next(); } @@ -205,10 +210,10 @@ public final class InternalLocaleBuilder { if (UnicodeLocaleExtension.isSingletonChar(key.value())) { setUnicodeLocaleExtension(val); } else { - if (_extensions == null) { - _extensions = new HashMap<CaseInsensitiveChar, String>(4); + if (extensions == null) { + extensions = new HashMap<>(4); } - _extensions.put(key, val); + extensions.put(key, val); } } return this; @@ -218,7 +223,7 @@ public final class InternalLocaleBuilder { * Set extension/private subtags in a single string representation */ public InternalLocaleBuilder setExtensions(String subtags) throws LocaleSyntaxException { - if (subtags == null || subtags.length() == 0) { + if (LocaleUtils.isEmpty(subtags)) { clearExtensions(); return this; } @@ -252,11 +257,12 @@ public final class InternalLocaleBuilder { } if (parsed < start) { - throw new LocaleSyntaxException("Incomplete extension '" + singleton + "'", start); + throw new LocaleSyntaxException("Incomplete extension '" + singleton + "'", + start); } if (extensions == null) { - extensions = new ArrayList<String>(4); + extensions = new ArrayList<>(4); } extensions.add(sb.toString()); } else { @@ -281,7 +287,9 @@ public final class InternalLocaleBuilder { itr.next(); } if (parsed <= start) { - throw new LocaleSyntaxException("Incomplete privateuse:" + subtags.substring(start), start); + throw new LocaleSyntaxException("Incomplete privateuse:" + + subtags.substring(start), + start); } else { privateuse = sb.toString(); } @@ -289,7 +297,9 @@ public final class InternalLocaleBuilder { } if (!itr.isDone()) { - throw new LocaleSyntaxException("Ill-formed extension subtags:" + subtags.substring(itr.currentStart()), itr.currentStart()); + throw new LocaleSyntaxException("Ill-formed extension subtags:" + + subtags.substring(itr.currentStart()), + itr.currentStart()); } return setExtensions(extensions, privateuse); @@ -302,30 +312,31 @@ public final class InternalLocaleBuilder { private InternalLocaleBuilder setExtensions(List<String> bcpExtensions, String privateuse) { clearExtensions(); - if (bcpExtensions != null && bcpExtensions.size() > 0) { - HashSet<CaseInsensitiveChar> processedExntensions = new HashSet<CaseInsensitiveChar>(bcpExtensions.size()); + if (!LocaleUtils.isEmpty(bcpExtensions)) { + Set<CaseInsensitiveChar> done = new HashSet<>(bcpExtensions.size()); for (String bcpExt : bcpExtensions) { - CaseInsensitiveChar key = new CaseInsensitiveChar(bcpExt.charAt(0)); + CaseInsensitiveChar key = new CaseInsensitiveChar(bcpExt); // ignore duplicates - if (!processedExntensions.contains(key)) { + if (!done.contains(key)) { // each extension string contains singleton, e.g. "a-abc-def" if (UnicodeLocaleExtension.isSingletonChar(key.value())) { setUnicodeLocaleExtension(bcpExt.substring(2)); } else { - if (_extensions == null) { - _extensions = new HashMap<CaseInsensitiveChar, String>(4); + if (extensions == null) { + extensions = new HashMap<>(4); } - _extensions.put(key, bcpExt.substring(2)); + extensions.put(key, bcpExt.substring(2)); } } + done.add(key); } } if (privateuse != null && privateuse.length() > 0) { // privateuse string contains prefix, e.g. "x-abc-def" - if (_extensions == null) { - _extensions = new HashMap<CaseInsensitiveChar, String>(1); + if (extensions == null) { + extensions = new HashMap<>(1); } - _extensions.put(new CaseInsensitiveChar(privateuse.charAt(0)), privateuse.substring(2)); + extensions.put(new CaseInsensitiveChar(privateuse), privateuse.substring(2)); } return this; @@ -336,24 +347,25 @@ public final class InternalLocaleBuilder { */ public InternalLocaleBuilder setLanguageTag(LanguageTag langtag) { clear(); - if (langtag.getExtlangs().size() > 0) { - _language = langtag.getExtlangs().get(0); + if (!langtag.getExtlangs().isEmpty()) { + language = langtag.getExtlangs().get(0); } else { - String language = langtag.getLanguage(); - if (!language.equals(LanguageTag.UNDETERMINED)) { - _language = language; + String lang = langtag.getLanguage(); + if (!lang.equals(LanguageTag.UNDETERMINED)) { + language = lang; } } - _script = langtag.getScript(); - _region = langtag.getRegion(); + script = langtag.getScript(); + region = langtag.getRegion(); List<String> bcpVariants = langtag.getVariants(); - if (bcpVariants.size() > 0) { + if (!bcpVariants.isEmpty()) { StringBuilder var = new StringBuilder(bcpVariants.get(0)); - for (int i = 1; i < bcpVariants.size(); i++) { + int size = bcpVariants.size(); + for (int i = 1; i < size; i++) { var.append(BaseLocale.SEP).append(bcpVariants.get(i)); } - _variant = var.toString(); + variant = var.toString(); } setExtensions(langtag.getExtensions(), langtag.getPrivateuse()); @@ -361,7 +373,7 @@ public final class InternalLocaleBuilder { return this; } - public InternalLocaleBuilder setLocale(BaseLocale base, LocaleExtensions extensions) throws LocaleSyntaxException { + public InternalLocaleBuilder setLocale(BaseLocale base, LocaleExtensions localeExtensions) throws LocaleSyntaxException { String language = base.getLanguage(); String script = base.getScript(); String region = base.getRegion(); @@ -373,14 +385,14 @@ public final class InternalLocaleBuilder { if (language.equals("ja") && region.equals("JP") && variant.equals("JP")) { // When locale ja_JP_JP is created, ca-japanese is always there. // The builder ignores the variant "JP" - assert("japanese".equals(extensions.getUnicodeLocaleType("ca"))); + assert("japanese".equals(localeExtensions.getUnicodeLocaleType("ca"))); variant = ""; } // Exception 2 - th_TH_TH else if (language.equals("th") && region.equals("TH") && variant.equals("TH")) { // When locale th_TH_TH is created, nu-thai is always there. // The builder ignores the variant "TH" - assert("thai".equals(extensions.getUnicodeLocaleType("nu"))); + assert("thai".equals(localeExtensions.getUnicodeLocaleType("nu"))); variant = ""; } // Exception 3 - no_NO_NY @@ -415,36 +427,36 @@ public final class InternalLocaleBuilder { // The input locale is validated at this point. // Now, updating builder's internal fields. - _language = language; - _script = script; - _region = region; - _variant = variant; + this.language = language; + this.script = script; + this.region = region; + this.variant = variant; clearExtensions(); - Set<Character> extKeys = (extensions == null) ? null : extensions.getKeys(); + Set<Character> extKeys = (localeExtensions == null) ? null : localeExtensions.getKeys(); if (extKeys != null) { - // map extensions back to builder's internal format + // map localeExtensions back to builder's internal format for (Character key : extKeys) { - Extension e = extensions.getExtension(key); + Extension e = localeExtensions.getExtension(key); if (e instanceof UnicodeLocaleExtension) { UnicodeLocaleExtension ue = (UnicodeLocaleExtension)e; for (String uatr : ue.getUnicodeLocaleAttributes()) { - if (_uattributes == null) { - _uattributes = new HashSet<CaseInsensitiveString>(4); + if (uattributes == null) { + uattributes = new HashSet<>(4); } - _uattributes.add(new CaseInsensitiveString(uatr)); + uattributes.add(new CaseInsensitiveString(uatr)); } for (String ukey : ue.getUnicodeLocaleKeys()) { - if (_ukeywords == null) { - _ukeywords = new HashMap<CaseInsensitiveString, String>(4); + if (ukeywords == null) { + ukeywords = new HashMap<>(4); } - _ukeywords.put(new CaseInsensitiveString(ukey), ue.getUnicodeLocaleType(ukey)); + ukeywords.put(new CaseInsensitiveString(ukey), ue.getUnicodeLocaleType(ukey)); } } else { - if (_extensions == null) { - _extensions = new HashMap<CaseInsensitiveChar, String>(4); + if (extensions == null) { + extensions = new HashMap<>(4); } - _extensions.put(new CaseInsensitiveChar(key.charValue()), e.getValue()); + extensions.put(new CaseInsensitiveChar(key), e.getValue()); } } } @@ -452,37 +464,37 @@ public final class InternalLocaleBuilder { } public InternalLocaleBuilder clear() { - _language = ""; - _script = ""; - _region = ""; - _variant = ""; + language = ""; + script = ""; + region = ""; + variant = ""; clearExtensions(); return this; } public InternalLocaleBuilder clearExtensions() { - if (_extensions != null) { - _extensions.clear(); + if (extensions != null) { + extensions.clear(); } - if (_uattributes != null) { - _uattributes.clear(); + if (uattributes != null) { + uattributes.clear(); } - if (_ukeywords != null) { - _ukeywords.clear(); + if (ukeywords != null) { + ukeywords.clear(); } return this; } public BaseLocale getBaseLocale() { - String language = _language; - String script = _script; - String region = _region; - String variant = _variant; + String language = this.language; + String script = this.script; + String region = this.region; + String variant = this.variant; // Special private use subtag sequence identified by "lvariant" will be // interpreted as Java variant. - if (_extensions != null) { - String privuse = _extensions.get(PRIVUSE_KEY); + if (extensions != null) { + String privuse = extensions.get(PRIVATEUSE_KEY); if (privuse != null) { StringTokenIterator itr = new StringTokenIterator(privuse, LanguageTag.SEP); boolean sawPrefix = false; @@ -492,7 +504,7 @@ public final class InternalLocaleBuilder { privVarStart = itr.currentStart(); break; } - if (AsciiUtil.caseIgnoreMatch(itr.current(), LanguageTag.PRIVUSE_VARIANT_PREFIX)) { + if (LocaleUtils.caseIgnoreMatch(itr.current(), LanguageTag.PRIVUSE_VARIANT_PREFIX)) { sawPrefix = true; } itr.next(); @@ -502,7 +514,8 @@ public final class InternalLocaleBuilder { if (sb.length() != 0) { sb.append(BaseLocale.SEP); } - sb.append(privuse.substring(privVarStart).replaceAll(LanguageTag.SEP, BaseLocale.SEP)); + sb.append(privuse.substring(privVarStart).replaceAll(LanguageTag.SEP, + BaseLocale.SEP)); variant = sb.toString(); } } @@ -512,13 +525,13 @@ public final class InternalLocaleBuilder { } public LocaleExtensions getLocaleExtensions() { - if ((_extensions == null || _extensions.size() == 0) - && (_uattributes == null || _uattributes.size() == 0) - && (_ukeywords == null || _ukeywords.size() == 0)) { - return LocaleExtensions.EMPTY_EXTENSIONS; + if (LocaleUtils.isEmpty(extensions) && LocaleUtils.isEmpty(uattributes) + && LocaleUtils.isEmpty(ukeywords)) { + return null; } - return new LocaleExtensions(_extensions, _uattributes, _ukeywords); + LocaleExtensions lext = new LocaleExtensions(extensions, uattributes, ukeywords); + return lext.isEmpty() ? null : lext; } /* @@ -540,7 +553,7 @@ public final class InternalLocaleBuilder { sawPrivuseVar = true; break; } - if (AsciiUtil.caseIgnoreMatch(itr.current(), LanguageTag.PRIVUSE_VARIANT_PREFIX)) { + if (LocaleUtils.caseIgnoreMatch(itr.current(), LanguageTag.PRIVUSE_VARIANT_PREFIX)) { prefixStart = itr.currentStart(); } itr.next(); @@ -576,11 +589,11 @@ public final class InternalLocaleBuilder { */ private void setUnicodeLocaleExtension(String subtags) { // wipe out existing attributes/keywords - if (_uattributes != null) { - _uattributes.clear(); + if (uattributes != null) { + uattributes.clear(); } - if (_ukeywords != null) { - _ukeywords.clear(); + if (ukeywords != null) { + ukeywords.clear(); } StringTokenIterator itr = new StringTokenIterator(subtags, LanguageTag.SEP); @@ -590,10 +603,10 @@ public final class InternalLocaleBuilder { if (!UnicodeLocaleExtension.isAttribute(itr.current())) { break; } - if (_uattributes == null) { - _uattributes = new HashSet<CaseInsensitiveString>(4); + if (uattributes == null) { + uattributes = new HashSet<>(4); } - _uattributes.add(new CaseInsensitiveString(itr.current())); + uattributes.add(new CaseInsensitiveString(itr.current())); itr.next(); } @@ -608,14 +621,14 @@ public final class InternalLocaleBuilder { // next keyword - emit previous one assert(typeStart == -1 || typeEnd != -1); type = (typeStart == -1) ? "" : subtags.substring(typeStart, typeEnd); - if (_ukeywords == null) { - _ukeywords = new HashMap<CaseInsensitiveString, String>(4); + if (ukeywords == null) { + ukeywords = new HashMap<>(4); } - _ukeywords.put(key, type); + ukeywords.put(key, type); // reset keyword info CaseInsensitiveString tmpKey = new CaseInsensitiveString(itr.current()); - key = _ukeywords.containsKey(tmpKey) ? null : tmpKey; + key = ukeywords.containsKey(tmpKey) ? null : tmpKey; typeStart = typeEnd = -1; } else { if (typeStart == -1) { @@ -627,7 +640,7 @@ public final class InternalLocaleBuilder { // 1. first keyword or // 2. next keyword, but previous one was duplicate key = new CaseInsensitiveString(itr.current()); - if (_ukeywords != null && _ukeywords.containsKey(key)) { + if (ukeywords != null && ukeywords.containsKey(key)) { // duplicate key = null; } @@ -638,10 +651,10 @@ public final class InternalLocaleBuilder { // last keyword assert(typeStart == -1 || typeEnd != -1); type = (typeStart == -1) ? "" : subtags.substring(typeStart, typeEnd); - if (_ukeywords == null) { - _ukeywords = new HashMap<CaseInsensitiveString, String>(4); + if (ukeywords == null) { + ukeywords = new HashMap<>(4); } - _ukeywords.put(key, type); + ukeywords.put(key, type); } break; } @@ -650,21 +663,24 @@ public final class InternalLocaleBuilder { } } - static class CaseInsensitiveString { - private String _s; + static final class CaseInsensitiveString { + private final String str, lowerStr; CaseInsensitiveString(String s) { - _s = s; + str = s; + lowerStr = LocaleUtils.toLowerString(s); } public String value() { - return _s; + return str; } + @Override public int hashCode() { - return AsciiUtil.toLowerString(_s).hashCode(); + return lowerStr.hashCode(); } + @Override public boolean equals(Object obj) { if (this == obj) { return true; @@ -672,25 +688,36 @@ public final class InternalLocaleBuilder { if (!(obj instanceof CaseInsensitiveString)) { return false; } - return AsciiUtil.caseIgnoreMatch(_s, ((CaseInsensitiveString)obj).value()); + return lowerStr.equals(((CaseInsensitiveString)obj).lowerStr); } } - static class CaseInsensitiveChar { - private char _c; + static final class CaseInsensitiveChar { + private final char ch, lowerCh; + + /** + * Constructs a CaseInsensitiveChar with the first char of the + * given s. + */ + private CaseInsensitiveChar(String s) { + this(s.charAt(0)); + } CaseInsensitiveChar(char c) { - _c = c; + ch = c; + lowerCh = LocaleUtils.toLower(ch); } public char value() { - return _c; + return ch; } + @Override public int hashCode() { - return AsciiUtil.toLower(_c); + return lowerCh; } + @Override public boolean equals(Object obj) { if (this == obj) { return true; @@ -698,8 +725,7 @@ public final class InternalLocaleBuilder { if (!(obj instanceof CaseInsensitiveChar)) { return false; } - return _c == AsciiUtil.toLower(((CaseInsensitiveChar)obj).value()); + return lowerCh == ((CaseInsensitiveChar)obj).lowerCh; } - } } diff --git a/src/share/classes/sun/util/locale/LanguageTag.java b/src/share/classes/sun/util/locale/LanguageTag.java index a3d9fd77b9021c111ce92a92b06779ac5982f24f..fc7b07b1b21bd6bea94a2b957bbe653ccab7de7a 100644 --- a/src/share/classes/sun/util/locale/LanguageTag.java +++ b/src/share/classes/sun/util/locale/LanguageTag.java @@ -44,25 +44,25 @@ public class LanguageTag { // public static final String SEP = "-"; public static final String PRIVATEUSE = "x"; - public static String UNDETERMINED = "und"; + public static final String UNDETERMINED = "und"; public static final String PRIVUSE_VARIANT_PREFIX = "lvariant"; // // Language subtag fields // - private String _language = ""; // language subtag - private String _script = ""; // script subtag - private String _region = ""; // region subtag - private String _privateuse = ""; // privateuse + private String language = ""; // language subtag + private String script = ""; // script subtag + private String region = ""; // region subtag + private String privateuse = ""; // privateuse - private List<String> _extlangs = Collections.emptyList(); // extlang subtags - private List<String> _variants = Collections.emptyList(); // variant subtags - private List<String> _extensions = Collections.emptyList(); // extensions + private List<String> extlangs = Collections.emptyList(); // extlang subtags + private List<String> variants = Collections.emptyList(); // variant subtags + private List<String> extensions = Collections.emptyList(); // extensions // Map contains grandfathered tags and its preferred mappings from // http://www.ietf.org/rfc/rfc5646.txt - private static final Map<AsciiUtil.CaseInsensitiveKey, String[]> GRANDFATHERED = - new HashMap<AsciiUtil.CaseInsensitiveKey, String[]>(); + // Keys are lower-case strings. + private static final Map<String, String[]> GRANDFATHERED = new HashMap<>(); static { // grandfathered = irregular ; non-redundant tags registered @@ -126,7 +126,7 @@ public class LanguageTag { {"zh-xiang", "hsn"}, }; for (String[] e : entries) { - GRANDFATHERED.put(new AsciiUtil.CaseInsensitiveKey(e[0]), e); + GRANDFATHERED.put(LocaleUtils.toLowerString(e[0]), e); } } @@ -188,7 +188,7 @@ public class LanguageTag { StringTokenIterator itr; // Check if the tag is grandfathered - String[] gfmap = GRANDFATHERED.get(new AsciiUtil.CaseInsensitiveKey(languageTag)); + String[] gfmap = GRANDFATHERED.get(LocaleUtils.toLowerString(languageTag)); if (gfmap != null) { // use preferred mapping itr = new StringTokenIterator(gfmap[1], SEP); @@ -210,11 +210,11 @@ public class LanguageTag { if (!itr.isDone() && !sts.isError()) { String s = itr.current(); - sts._errorIndex = itr.currentStart(); + sts.errorIndex = itr.currentStart(); if (s.length() == 0) { - sts._errorMsg = "Empty subtag"; + sts.errorMsg = "Empty subtag"; } else { - sts._errorMsg = "Invalid subtag: " + s; + sts.errorMsg = "Invalid subtag: " + s; } } @@ -235,8 +235,8 @@ public class LanguageTag { String s = itr.current(); if (isLanguage(s)) { found = true; - _language = s; - sts._parseLength = itr.currentEnd(); + language = s; + sts.parseLength = itr.currentEnd(); itr.next(); } @@ -256,14 +256,14 @@ public class LanguageTag { break; } found = true; - if (_extlangs.isEmpty()) { - _extlangs = new ArrayList<String>(3); + if (extlangs.isEmpty()) { + extlangs = new ArrayList<>(3); } - _extlangs.add(s); - sts._parseLength = itr.currentEnd(); + extlangs.add(s); + sts.parseLength = itr.currentEnd(); itr.next(); - if (_extlangs.size() == 3) { + if (extlangs.size() == 3) { // Maximum 3 extlangs break; } @@ -282,8 +282,8 @@ public class LanguageTag { String s = itr.current(); if (isScript(s)) { found = true; - _script = s; - sts._parseLength = itr.currentEnd(); + script = s; + sts.parseLength = itr.currentEnd(); itr.next(); } @@ -300,8 +300,8 @@ public class LanguageTag { String s = itr.current(); if (isRegion(s)) { found = true; - _region = s; - sts._parseLength = itr.currentEnd(); + region = s; + sts.parseLength = itr.currentEnd(); itr.next(); } @@ -321,11 +321,11 @@ public class LanguageTag { break; } found = true; - if (_variants.isEmpty()) { - _variants = new ArrayList<String>(3); + if (variants.isEmpty()) { + variants = new ArrayList<>(3); } - _variants.add(s); - sts._parseLength = itr.currentEnd(); + variants.add(s); + sts.parseLength = itr.currentEnd(); itr.next(); } @@ -351,23 +351,23 @@ public class LanguageTag { s = itr.current(); if (isExtensionSubtag(s)) { sb.append(SEP).append(s); - sts._parseLength = itr.currentEnd(); + sts.parseLength = itr.currentEnd(); } else { break; } itr.next(); } - if (sts._parseLength <= start) { - sts._errorIndex = start; - sts._errorMsg = "Incomplete extension '" + singleton + "'"; + if (sts.parseLength <= start) { + sts.errorIndex = start; + sts.errorMsg = "Incomplete extension '" + singleton + "'"; break; } - if (_extensions.size() == 0) { - _extensions = new ArrayList<String>(4); + if (extensions.isEmpty()) { + extensions = new ArrayList<>(4); } - _extensions.add(sb.toString()); + extensions.add(sb.toString()); found = true; } else { break; @@ -395,17 +395,17 @@ public class LanguageTag { break; } sb.append(SEP).append(s); - sts._parseLength = itr.currentEnd(); + sts.parseLength = itr.currentEnd(); itr.next(); } - if (sts._parseLength <= start) { + if (sts.parseLength <= start) { // need at least 1 private subtag - sts._errorIndex = start; - sts._errorMsg = "Incomplete privateuse"; + sts.errorIndex = start; + sts.errorMsg = "Incomplete privateuse"; } else { - _privateuse = sb.toString(); + privateuse = sb.toString(); found = true; } } @@ -425,9 +425,8 @@ public class LanguageTag { String privuseVar = null; // store ill-formed variant subtags - if (language.length() > 0 && isLanguage(language)) { - // Convert a deprecated language code used by Java to - // a new code + if (isLanguage(language)) { + // Convert a deprecated language code to its new code if (language.equals("iw")) { language = "he"; } else if (language.equals("ji")) { @@ -435,22 +434,22 @@ public class LanguageTag { } else if (language.equals("in")) { language = "id"; } - tag._language = language; + tag.language = language; } - if (script.length() > 0 && isScript(script)) { - tag._script = canonicalizeScript(script); + if (isScript(script)) { + tag.script = canonicalizeScript(script); hasSubtag = true; } - if (region.length() > 0 && isRegion(region)) { - tag._region = canonicalizeRegion(region); + if (isRegion(region)) { + tag.region = canonicalizeRegion(region); hasSubtag = true; } // Special handling for no_NO_NY - use nn_NO for language tag - if (tag._language.equals("no") && tag._region.equals("NO") && variant.equals("NY")) { - tag._language = "nn"; + if (tag.language.equals("no") && tag.region.equals("NO") && variant.equals("NY")) { + tag.language = "nn"; variant = ""; } @@ -463,13 +462,13 @@ public class LanguageTag { break; } if (variants == null) { - variants = new ArrayList<String>(); + variants = new ArrayList<>(); } variants.add(var); // Do not canonicalize! varitr.next(); } if (variants != null) { - tag._variants = variants; + tag.variants = variants; hasSubtag = true; } if (!varitr.isDone()) { @@ -496,21 +495,23 @@ public class LanguageTag { List<String> extensions = null; String privateuse = null; - Set<Character> locextKeys = localeExtensions.getKeys(); - for (Character locextKey : locextKeys) { - Extension ext = localeExtensions.getExtension(locextKey); - if (isPrivateusePrefixChar(locextKey.charValue())) { - privateuse = ext.getValue(); - } else { - if (extensions == null) { - extensions = new ArrayList<String>(); + if (localeExtensions != null) { + Set<Character> locextKeys = localeExtensions.getKeys(); + for (Character locextKey : locextKeys) { + Extension ext = localeExtensions.getExtension(locextKey); + if (isPrivateusePrefixChar(locextKey)) { + privateuse = ext.getValue(); + } else { + if (extensions == null) { + extensions = new ArrayList<>(); + } + extensions.add(locextKey.toString() + SEP + ext.getValue()); } - extensions.add(locextKey.toString() + SEP + ext.getValue()); } } if (extensions != null) { - tag._extensions = extensions; + tag.extensions = extensions; hasSubtag = true; } @@ -519,19 +520,20 @@ public class LanguageTag { if (privateuse == null) { privateuse = PRIVUSE_VARIANT_PREFIX + SEP + privuseVar; } else { - privateuse = privateuse + SEP + PRIVUSE_VARIANT_PREFIX + SEP + privuseVar.replace(BaseLocale.SEP, SEP); + privateuse = privateuse + SEP + PRIVUSE_VARIANT_PREFIX + + SEP + privuseVar.replace(BaseLocale.SEP, SEP); } } if (privateuse != null) { - tag._privateuse = privateuse; + tag.privateuse = privateuse; } - if (tag._language.length() == 0 && (hasSubtag || privateuse == null)) { + if (tag.language.length() == 0 && (hasSubtag || privateuse == null)) { // use lang "und" when 1) no language is available AND // 2) any of other subtags other than private use are available or // no private use tag is available - tag._language = UNDETERMINED; + tag.language = UNDETERMINED; } return tag; @@ -542,31 +544,40 @@ public class LanguageTag { // public String getLanguage() { - return _language; + return language; } public List<String> getExtlangs() { - return Collections.unmodifiableList(_extlangs); + if (extlangs.isEmpty()) { + return Collections.emptyList(); + } + return Collections.unmodifiableList(extlangs); } public String getScript() { - return _script; + return script; } public String getRegion() { - return _region; + return region; } public List<String> getVariants() { - return Collections.unmodifiableList(_variants); + if (variants.isEmpty()) { + return Collections.emptyList(); + } + return Collections.unmodifiableList(variants); } public List<String> getExtensions() { - return Collections.unmodifiableList(_extensions); + if (extensions.isEmpty()) { + return Collections.emptyList(); + } + return Collections.unmodifiableList(extensions); } public String getPrivateuse() { - return _privateuse; + return privateuse; } // @@ -579,25 +590,26 @@ public class LanguageTag { // ; extended language subtags // / 4ALPHA ; or reserved for future use // / 5*8ALPHA ; or registered language subtag - return (s.length() >= 2) && (s.length() <= 8) && AsciiUtil.isAlphaString(s); + int len = s.length(); + return (len >= 2) && (len <= 8) && LocaleUtils.isAlphaString(s); } public static boolean isExtlang(String s) { // extlang = 3ALPHA ; selected ISO 639 codes // *2("-" 3ALPHA) ; permanently reserved - return (s.length() == 3) && AsciiUtil.isAlphaString(s); + return (s.length() == 3) && LocaleUtils.isAlphaString(s); } public static boolean isScript(String s) { // script = 4ALPHA ; ISO 15924 code - return (s.length() == 4) && AsciiUtil.isAlphaString(s); + return (s.length() == 4) && LocaleUtils.isAlphaString(s); } public static boolean isRegion(String s) { // region = 2ALPHA ; ISO 3166-1 code // / 3DIGIT ; UN M.49 code - return ((s.length() == 2) && AsciiUtil.isAlphaString(s)) - || ((s.length() == 3) && AsciiUtil.isNumericString(s)); + return ((s.length() == 2) && LocaleUtils.isAlphaString(s)) + || ((s.length() == 3) && LocaleUtils.isNumericString(s)); } public static boolean isVariant(String s) { @@ -605,13 +617,13 @@ public class LanguageTag { // / (DIGIT 3alphanum) int len = s.length(); if (len >= 5 && len <= 8) { - return AsciiUtil.isAlphaNumericString(s); + return LocaleUtils.isAlphaNumericString(s); } if (len == 4) { - return AsciiUtil.isNumeric(s.charAt(0)) - && AsciiUtil.isAlphaNumeric(s.charAt(1)) - && AsciiUtil.isAlphaNumeric(s.charAt(2)) - && AsciiUtil.isAlphaNumeric(s.charAt(3)); + return LocaleUtils.isNumeric(s.charAt(0)) + && LocaleUtils.isAlphaNumeric(s.charAt(1)) + && LocaleUtils.isAlphaNumeric(s.charAt(2)) + && LocaleUtils.isAlphaNumeric(s.charAt(3)); } return false; } @@ -624,8 +636,8 @@ public class LanguageTag { // / %x79-7A ; y - z return (s.length() == 1) - && AsciiUtil.isAlphaString(s) - && !AsciiUtil.caseIgnoreMatch(PRIVATEUSE, s); + && LocaleUtils.isAlphaString(s) + && !LocaleUtils.caseIgnoreMatch(PRIVATEUSE, s); } public static boolean isExtensionSingletonChar(char c) { @@ -634,22 +646,24 @@ public class LanguageTag { public static boolean isExtensionSubtag(String s) { // extension = singleton 1*("-" (2*8alphanum)) - return (s.length() >= 2) && (s.length() <= 8) && AsciiUtil.isAlphaNumericString(s); + int len = s.length(); + return (len >= 2) && (len <= 8) && LocaleUtils.isAlphaNumericString(s); } public static boolean isPrivateusePrefix(String s) { // privateuse = "x" 1*("-" (1*8alphanum)) return (s.length() == 1) - && AsciiUtil.caseIgnoreMatch(PRIVATEUSE, s); + && LocaleUtils.caseIgnoreMatch(PRIVATEUSE, s); } public static boolean isPrivateusePrefixChar(char c) { - return (AsciiUtil.caseIgnoreMatch(PRIVATEUSE, String.valueOf(c))); + return (LocaleUtils.caseIgnoreMatch(PRIVATEUSE, String.valueOf(c))); } public static boolean isPrivateuseSubtag(String s) { // privateuse = "x" 1*("-" (1*8alphanum)) - return (s.length() >= 1) && (s.length() <= 8) && AsciiUtil.isAlphaNumericString(s); + int len = s.length(); + return (len >= 1) && (len <= 8) && LocaleUtils.isAlphaNumericString(s); } // @@ -657,76 +671,77 @@ public class LanguageTag { // public static String canonicalizeLanguage(String s) { - return AsciiUtil.toLowerString(s); + return LocaleUtils.toLowerString(s); } public static String canonicalizeExtlang(String s) { - return AsciiUtil.toLowerString(s); + return LocaleUtils.toLowerString(s); } public static String canonicalizeScript(String s) { - return AsciiUtil.toTitleString(s); + return LocaleUtils.toTitleString(s); } public static String canonicalizeRegion(String s) { - return AsciiUtil.toUpperString(s); + return LocaleUtils.toUpperString(s); } public static String canonicalizeVariant(String s) { - return AsciiUtil.toLowerString(s); + return LocaleUtils.toLowerString(s); } public static String canonicalizeExtension(String s) { - return AsciiUtil.toLowerString(s); + return LocaleUtils.toLowerString(s); } public static String canonicalizeExtensionSingleton(String s) { - return AsciiUtil.toLowerString(s); + return LocaleUtils.toLowerString(s); } public static String canonicalizeExtensionSubtag(String s) { - return AsciiUtil.toLowerString(s); + return LocaleUtils.toLowerString(s); } public static String canonicalizePrivateuse(String s) { - return AsciiUtil.toLowerString(s); + return LocaleUtils.toLowerString(s); } public static String canonicalizePrivateuseSubtag(String s) { - return AsciiUtil.toLowerString(s); + return LocaleUtils.toLowerString(s); } + @Override public String toString() { StringBuilder sb = new StringBuilder(); - if (_language.length() > 0) { - sb.append(_language); + if (language.length() > 0) { + sb.append(language); - for (String extlang : _extlangs) { + for (String extlang : extlangs) { sb.append(SEP).append(extlang); } - if (_script.length() > 0) { - sb.append(SEP).append(_script); + if (script.length() > 0) { + sb.append(SEP).append(script); } - if (_region.length() > 0) { - sb.append(SEP).append(_region); + if (region.length() > 0) { + sb.append(SEP).append(region); } - for (String variant : _extlangs) { + for (String variant : variants) { sb.append(SEP).append(variant); } - for (String extension : _extensions) { + for (String extension : extensions) { sb.append(SEP).append(extension); } } - if (_privateuse.length() > 0) { + if (privateuse.length() > 0) { if (sb.length() > 0) { sb.append(SEP); } - sb.append(_privateuse); + sb.append(privateuse); } return sb.toString(); diff --git a/src/share/classes/sun/util/locale/LocaleExtensions.java b/src/share/classes/sun/util/locale/LocaleExtensions.java index 44016382b2412d647b0be0151919aa9311916868..d7afec3f090cc5bd5eed1d532a5321411bf9c706 100644 --- a/src/share/classes/sun/util/locale/LocaleExtensions.java +++ b/src/share/classes/sun/util/locale/LocaleExtensions.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,6 +36,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.SortedMap; +import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; @@ -45,55 +46,45 @@ import sun.util.locale.InternalLocaleBuilder.CaseInsensitiveString; public class LocaleExtensions { - private SortedMap<Character, Extension> _map; - private String _id; + private final Map<Character, Extension> extensionMap; + private final String id; - private static final SortedMap<Character, Extension> EMPTY_MAP = - Collections.unmodifiableSortedMap(new TreeMap<Character, Extension>()); + public static final LocaleExtensions CALENDAR_JAPANESE + = new LocaleExtensions("u-ca-japanese", + UnicodeLocaleExtension.SINGLETON, + UnicodeLocaleExtension.CA_JAPANESE); - public static final LocaleExtensions EMPTY_EXTENSIONS; - public static final LocaleExtensions CALENDAR_JAPANESE; - public static final LocaleExtensions NUMBER_THAI; + public static final LocaleExtensions NUMBER_THAI + = new LocaleExtensions("u-nu-thai", + UnicodeLocaleExtension.SINGLETON, + UnicodeLocaleExtension.NU_THAI); - static { - EMPTY_EXTENSIONS = new LocaleExtensions(); - EMPTY_EXTENSIONS._id = ""; - EMPTY_EXTENSIONS._map = EMPTY_MAP; - - CALENDAR_JAPANESE = new LocaleExtensions(); - CALENDAR_JAPANESE._id = "u-ca-japanese"; - CALENDAR_JAPANESE._map = new TreeMap<Character, Extension>(); - CALENDAR_JAPANESE._map.put(Character.valueOf(UnicodeLocaleExtension.SINGLETON), UnicodeLocaleExtension.CA_JAPANESE); - - NUMBER_THAI = new LocaleExtensions(); - NUMBER_THAI._id = "u-nu-thai"; - NUMBER_THAI._map = new TreeMap<Character, Extension>(); - NUMBER_THAI._map.put(Character.valueOf(UnicodeLocaleExtension.SINGLETON), UnicodeLocaleExtension.NU_THAI); - } - - private LocaleExtensions() { + private LocaleExtensions(String id, Character key, Extension value) { + this.id = id; + this.extensionMap = Collections.singletonMap(key, value); } /* - * Package local constructor, only used by InternalLocaleBuilder. + * Package private constructor, only used by InternalLocaleBuilder. */ LocaleExtensions(Map<CaseInsensitiveChar, String> extensions, - Set<CaseInsensitiveString> uattributes, Map<CaseInsensitiveString, String> ukeywords) { - boolean hasExtension = (extensions != null && extensions.size() > 0); - boolean hasUAttributes = (uattributes != null && uattributes.size() > 0); - boolean hasUKeywords = (ukeywords != null && ukeywords.size() > 0); + Set<CaseInsensitiveString> uattributes, + Map<CaseInsensitiveString, String> ukeywords) { + boolean hasExtension = !LocaleUtils.isEmpty(extensions); + boolean hasUAttributes = !LocaleUtils.isEmpty(uattributes); + boolean hasUKeywords = !LocaleUtils.isEmpty(ukeywords); if (!hasExtension && !hasUAttributes && !hasUKeywords) { - _map = EMPTY_MAP; - _id = ""; + id = ""; + extensionMap = Collections.emptyMap(); return; } // Build extension map - _map = new TreeMap<Character, Extension>(); + SortedMap<Character, Extension> map = new TreeMap<>(); if (hasExtension) { for (Entry<CaseInsensitiveChar, String> ext : extensions.entrySet()) { - char key = AsciiUtil.toLower(ext.getKey().value()); + char key = LocaleUtils.toLower(ext.getKey().value()); String value = ext.getValue(); if (LanguageTag.isPrivateusePrefixChar(key)) { @@ -104,54 +95,57 @@ public class LocaleExtensions { } } - Extension e = new Extension(key, AsciiUtil.toLowerString(value)); - _map.put(Character.valueOf(key), e); + map.put(key, new Extension(key, LocaleUtils.toLowerString(value))); } } if (hasUAttributes || hasUKeywords) { - TreeSet<String> uaset = null; - TreeMap<String, String> ukmap = null; + SortedSet<String> uaset = null; + SortedMap<String, String> ukmap = null; if (hasUAttributes) { - uaset = new TreeSet<String>(); + uaset = new TreeSet<>(); for (CaseInsensitiveString cis : uattributes) { - uaset.add(AsciiUtil.toLowerString(cis.value())); + uaset.add(LocaleUtils.toLowerString(cis.value())); } } if (hasUKeywords) { - ukmap = new TreeMap<String, String>(); + ukmap = new TreeMap<>(); for (Entry<CaseInsensitiveString, String> kwd : ukeywords.entrySet()) { - String key = AsciiUtil.toLowerString(kwd.getKey().value()); - String type = AsciiUtil.toLowerString(kwd.getValue()); + String key = LocaleUtils.toLowerString(kwd.getKey().value()); + String type = LocaleUtils.toLowerString(kwd.getValue()); ukmap.put(key, type); } } UnicodeLocaleExtension ule = new UnicodeLocaleExtension(uaset, ukmap); - _map.put(Character.valueOf(UnicodeLocaleExtension.SINGLETON), ule); + map.put(UnicodeLocaleExtension.SINGLETON, ule); } - if (_map.size() == 0) { + if (map.isEmpty()) { // this could happen when only privuateuse with special variant - _map = EMPTY_MAP; - _id = ""; + id = ""; + extensionMap = Collections.emptyMap(); } else { - _id = toID(_map); + id = toID(map); + extensionMap = map; } } public Set<Character> getKeys() { - return Collections.unmodifiableSet(_map.keySet()); + if (extensionMap.isEmpty()) { + return Collections.emptySet(); + } + return Collections.unmodifiableSet(extensionMap.keySet()); } public Extension getExtension(Character key) { - return _map.get(Character.valueOf(AsciiUtil.toLower(key.charValue()))); + return extensionMap.get(LocaleUtils.toLower(key)); } public String getExtensionValue(Character key) { - Extension ext = _map.get(Character.valueOf(AsciiUtil.toLower(key.charValue()))); + Extension ext = extensionMap.get(LocaleUtils.toLower(key)); if (ext == null) { return null; } @@ -159,7 +153,7 @@ public class LocaleExtensions { } public Set<String> getUnicodeLocaleAttributes() { - Extension ext = _map.get(Character.valueOf(UnicodeLocaleExtension.SINGLETON)); + Extension ext = extensionMap.get(UnicodeLocaleExtension.SINGLETON); if (ext == null) { return Collections.emptySet(); } @@ -168,7 +162,7 @@ public class LocaleExtensions { } public Set<String> getUnicodeLocaleKeys() { - Extension ext = _map.get(Character.valueOf(UnicodeLocaleExtension.SINGLETON)); + Extension ext = extensionMap.get(UnicodeLocaleExtension.SINGLETON); if (ext == null) { return Collections.emptySet(); } @@ -177,16 +171,16 @@ public class LocaleExtensions { } public String getUnicodeLocaleType(String unicodeLocaleKey) { - Extension ext = _map.get(Character.valueOf(UnicodeLocaleExtension.SINGLETON)); + Extension ext = extensionMap.get(UnicodeLocaleExtension.SINGLETON); if (ext == null) { return null; } assert (ext instanceof UnicodeLocaleExtension); - return ((UnicodeLocaleExtension)ext).getUnicodeLocaleType(AsciiUtil.toLowerString(unicodeLocaleKey)); + return ((UnicodeLocaleExtension)ext).getUnicodeLocaleType(LocaleUtils.toLowerString(unicodeLocaleKey)); } public boolean isEmpty() { - return _map.isEmpty(); + return extensionMap.isEmpty(); } public static boolean isValidKey(char c) { @@ -201,7 +195,7 @@ public class LocaleExtensions { StringBuilder buf = new StringBuilder(); Extension privuse = null; for (Entry<Character, Extension> entry : map.entrySet()) { - char singleton = entry.getKey().charValue(); + char singleton = entry.getKey(); Extension extension = entry.getValue(); if (LanguageTag.isPrivateusePrefixChar(singleton)) { privuse = extension; @@ -221,19 +215,21 @@ public class LocaleExtensions { return buf.toString(); } - + @Override public String toString() { - return _id; + return id; } public String getID() { - return _id; + return id; } + @Override public int hashCode() { - return _id.hashCode(); + return id.hashCode(); } + @Override public boolean equals(Object other) { if (this == other) { return true; @@ -241,6 +237,6 @@ public class LocaleExtensions { if (!(other instanceof LocaleExtensions)) { return false; } - return this._id.equals(((LocaleExtensions)other)._id); + return id.equals(((LocaleExtensions)other).id); } } diff --git a/src/share/classes/sun/util/locale/LocaleObjectCache.java b/src/share/classes/sun/util/locale/LocaleObjectCache.java index e5e6810c0eb1242c77cc26b669ba999a68e8575f..35504bcadf04d231f2279ac069b61c6d7875139f 100644 --- a/src/share/classes/sun/util/locale/LocaleObjectCache.java +++ b/src/share/classes/sun/util/locale/LocaleObjectCache.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,24 +34,25 @@ package sun.util.locale; import java.lang.ref.ReferenceQueue; import java.lang.ref.SoftReference; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; public abstract class LocaleObjectCache<K, V> { - private ConcurrentHashMap<K, CacheEntry<K, V>> _map; - private ReferenceQueue<V> _queue = new ReferenceQueue<V>(); + private ConcurrentMap<K, CacheEntry<K, V>> map; + private ReferenceQueue<V> queue = new ReferenceQueue<>(); public LocaleObjectCache() { this(16, 0.75f, 16); } public LocaleObjectCache(int initialCapacity, float loadFactor, int concurrencyLevel) { - _map = new ConcurrentHashMap<K, CacheEntry<K, V>>(initialCapacity, loadFactor, concurrencyLevel); + map = new ConcurrentHashMap<>(initialCapacity, loadFactor, concurrencyLevel); } public V get(K key) { V value = null; cleanStaleEntries(); - CacheEntry<K, V> entry = _map.get(key); + CacheEntry<K, V> entry = map.get(key); if (entry != null) { value = entry.get(); } @@ -63,11 +64,11 @@ public abstract class LocaleObjectCache<K, V> { return null; } - CacheEntry<K, V> newEntry = new CacheEntry<K, V>(key, newVal, _queue); + CacheEntry<K, V> newEntry = new CacheEntry<>(key, newVal, queue); while (value == null) { cleanStaleEntries(); - entry = _map.putIfAbsent(key, newEntry); + entry = map.putIfAbsent(key, newEntry); if (entry == null) { value = newVal; break; @@ -79,11 +80,17 @@ public abstract class LocaleObjectCache<K, V> { return value; } + protected V put(K key, V value) { + CacheEntry<K, V> entry = new CacheEntry<>(key, value, queue); + CacheEntry<K, V> oldEntry = map.put(key, entry); + return (oldEntry == null) ? null : oldEntry.get(); + } + @SuppressWarnings("unchecked") private void cleanStaleEntries() { CacheEntry<K, V> entry; - while ((entry = (CacheEntry<K, V>)_queue.poll()) != null) { - _map.remove(entry.getKey()); + while ((entry = (CacheEntry<K, V>)queue.poll()) != null) { + map.remove(entry.getKey()); } } @@ -94,15 +101,15 @@ public abstract class LocaleObjectCache<K, V> { } private static class CacheEntry<K, V> extends SoftReference<V> { - private K _key; + private K key; CacheEntry(K key, V value, ReferenceQueue<V> queue) { super(value, queue); - _key = key; + this.key = key; } K getKey() { - return _key; + return key; } } } diff --git a/src/share/classes/sun/util/locale/LocaleSyntaxException.java b/src/share/classes/sun/util/locale/LocaleSyntaxException.java index 3c0004e8b57c29738633b8abd8c24c7d7a15befc..07c0ed3fcabe6fee78e198184850db28b775d9b1 100644 --- a/src/share/classes/sun/util/locale/LocaleSyntaxException.java +++ b/src/share/classes/sun/util/locale/LocaleSyntaxException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,7 +35,7 @@ public class LocaleSyntaxException extends Exception { private static final long serialVersionUID = 1L; - private int _index = -1; + private int index = -1; public LocaleSyntaxException(String msg) { this(msg, 0); @@ -43,10 +43,10 @@ public class LocaleSyntaxException extends Exception { public LocaleSyntaxException(String msg, int errorIndex) { super(msg); - _index = errorIndex; + index = errorIndex; } public int getErrorIndex() { - return _index; + return index; } } diff --git a/src/share/classes/sun/util/locale/LocaleUtils.java b/src/share/classes/sun/util/locale/LocaleUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..0258e5a19352b2f19c4ae9bac3a4a3c8b175c586 --- /dev/null +++ b/src/share/classes/sun/util/locale/LocaleUtils.java @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * 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. + */ + +/* + ******************************************************************************* + * Copyright (C) 2009, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package sun.util.locale; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * Collection of static utility methods for Locale support. The + * methods which manipulate characters or strings support ASCII only. + */ +public final class LocaleUtils { + + private LocaleUtils() { + } + + /** + * Compares two ASCII Strings s1 and s2, ignoring case. + */ + public static boolean caseIgnoreMatch(String s1, String s2) { + if (s1 == s2) { + return true; + } + + int len = s1.length(); + if (len != s2.length()) { + return false; + } + + for (int i = 0; i < len; i++) { + char c1 = s1.charAt(i); + char c2 = s2.charAt(i); + if (c1 != c2 && toLower(c1) != toLower(c2)) { + return false; + } + } + return true; + } + + static int caseIgnoreCompare(String s1, String s2) { + if (s1 == s2) { + return 0; + } + return toLowerString(s1).compareTo(toLowerString(s2)); + } + + static char toUpper(char c) { + return isLower(c) ? (char)(c - 0x20) : c; + } + + static char toLower(char c) { + return isUpper(c) ? (char)(c + 0x20) : c; + } + + /** + * Converts the given ASCII String to lower-case. + */ + public static String toLowerString(String s) { + int len = s.length(); + int idx = 0; + for (; idx < len; idx++) { + if (isUpper(s.charAt(idx))) { + break; + } + } + if (idx == len) { + return s; + } + + char[] buf = new char[len]; + for (int i = 0; i < len; i++) { + char c = s.charAt(i); + buf[i] = (i < idx) ? c : toLower(c); + } + return new String(buf); + } + + static String toUpperString(String s) { + int len = s.length(); + int idx = 0; + for (; idx < len; idx++) { + if (isLower(s.charAt(idx))) { + break; + } + } + if (idx == len) { + return s; + } + + char[] buf = new char[len]; + for (int i = 0; i < len; i++) { + char c = s.charAt(i); + buf[i] = (i < idx) ? c : toUpper(c); + } + return new String(buf); + } + + static String toTitleString(String s) { + int len; + if ((len = s.length()) == 0) { + return s; + } + int idx = 0; + if (!isLower(s.charAt(idx))) { + for (idx = 1; idx < len; idx++) { + if (isUpper(s.charAt(idx))) { + break; + } + } + } + if (idx == len) { + return s; + } + + char[] buf = new char[len]; + for (int i = 0; i < len; i++) { + char c = s.charAt(i); + if (i == 0 && idx == 0) { + buf[i] = toUpper(c); + } else if (i < idx) { + buf[i] = c; + } else { + buf[i] = toLower(c); + } + } + return new String(buf); + } + + private static boolean isUpper(char c) { + return c >= 'A' && c <= 'Z'; + } + + private static boolean isLower(char c) { + return c >= 'a' && c <= 'z'; + } + + static boolean isAlpha(char c) { + return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'); + } + + static boolean isAlphaString(String s) { + int len = s.length(); + for (int i = 0; i < len; i++) { + if (!isAlpha(s.charAt(i))) { + return false; + } + } + return true; + } + + static boolean isNumeric(char c) { + return (c >= '0' && c <= '9'); + } + + static boolean isNumericString(String s) { + int len = s.length(); + for (int i = 0; i < len; i++) { + if (!isNumeric(s.charAt(i))) { + return false; + } + } + return true; + } + + static boolean isAlphaNumeric(char c) { + return isAlpha(c) || isNumeric(c); + } + + static boolean isAlphaNumericString(String s) { + int len = s.length(); + for (int i = 0; i < len; i++) { + if (!isAlphaNumeric(s.charAt(i))) { + return false; + } + } + return true; + } + + static boolean isEmpty(String str) { + return str == null || str.length() == 0; + } + + static boolean isEmpty(Set<?> set) { + return set == null || set.isEmpty(); + } + + static boolean isEmpty(Map<?, ?> map) { + return map == null || map.isEmpty(); + } + + static boolean isEmpty(List<?> list) { + return list == null || list.isEmpty(); + } +} diff --git a/src/share/classes/sun/util/locale/ParseStatus.java b/src/share/classes/sun/util/locale/ParseStatus.java index a717930960f32b55d9f6112121d2e8a480b7c00b..91da6bf0f18b3e9062b9b147411226dd1493bcec 100644 --- a/src/share/classes/sun/util/locale/ParseStatus.java +++ b/src/share/classes/sun/util/locale/ParseStatus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,29 +32,33 @@ package sun.util.locale; public class ParseStatus { - int _parseLength = 0; - int _errorIndex = -1; - String _errorMsg = null; + int parseLength; + int errorIndex; + String errorMsg; + + public ParseStatus() { + reset(); + } public void reset() { - _parseLength = 0; - _errorIndex = -1; - _errorMsg = null; + parseLength = 0; + errorIndex = -1; + errorMsg = null; } public boolean isError() { - return (_errorIndex >= 0); + return (errorIndex >= 0); } public int getErrorIndex() { - return _errorIndex; + return errorIndex; } public int getParseLength() { - return _parseLength; + return parseLength; } public String getErrorMessage() { - return _errorMsg; + return errorMsg; } } diff --git a/src/share/classes/sun/util/locale/StringTokenIterator.java b/src/share/classes/sun/util/locale/StringTokenIterator.java index 6fc674383fa75b54404d26683a16de0b29092f67..f66bfd537528fd81c4ba4b9eedd7172e8668a9c7 100644 --- a/src/share/classes/sun/util/locale/StringTokenIterator.java +++ b/src/share/classes/sun/util/locale/StringTokenIterator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,87 +31,99 @@ package sun.util.locale; public class StringTokenIterator { - private String _text; - private String _dlms; + private String text; + private String dlms; // null if a single char delimiter + private char delimiterChar; // delimiter if a single char delimiter - private String _token; - private int _start; - private int _end; - private boolean _done; + private String token; + private int start; + private int end; + private boolean done; public StringTokenIterator(String text, String dlms) { - _text = text; - _dlms = dlms; + this.text = text; + if (dlms.length() == 1) { + delimiterChar = dlms.charAt(0); + } else { + this.dlms = dlms; + } setStart(0); } public String first() { setStart(0); - return _token; + return token; } public String current() { - return _token; + return token; } public int currentStart() { - return _start; + return start; } public int currentEnd() { - return _end; + return end; } public boolean isDone() { - return _done; + return done; } public String next() { if (hasNext()) { - _start = _end + 1; - _end = nextDelimiter(_start); - _token = _text.substring(_start, _end); + start = end + 1; + end = nextDelimiter(start); + token = text.substring(start, end); } else { - _start = _end; - _token = null; - _done = true; + start = end; + token = null; + done = true; } - return _token; + return token; } public boolean hasNext() { - return (_end < _text.length()); + return (end < text.length()); } public StringTokenIterator setStart(int offset) { - if (offset > _text.length()) { + if (offset > text.length()) { throw new IndexOutOfBoundsException(); } - _start = offset; - _end = nextDelimiter(_start); - _token = _text.substring(_start, _end); - _done = false; + start = offset; + end = nextDelimiter(start); + token = text.substring(start, end); + done = false; return this; } public StringTokenIterator setText(String text) { - _text = text; + this.text = text; setStart(0); return this; } private int nextDelimiter(int start) { - int idx = start; - outer: while (idx < _text.length()) { - char c = _text.charAt(idx); - for (int i = 0; i < _dlms.length(); i++) { - if (c == _dlms.charAt(i)) { - break outer; + int textlen = this.text.length(); + if (dlms == null) { + for (int idx = start; idx < textlen; idx++) { + if (text.charAt(idx) == delimiterChar) { + return idx; + } + } + } else { + int dlmslen = dlms.length(); + for (int idx = start; idx < textlen; idx++) { + char c = text.charAt(idx); + for (int i = 0; i < dlmslen; i++) { + if (c == dlms.charAt(i)) { + return idx; + } } } - idx++; } - return idx; + return textlen; } } - diff --git a/src/share/classes/sun/util/locale/UnicodeLocaleExtension.java b/src/share/classes/sun/util/locale/UnicodeLocaleExtension.java index 4db667967333fdccdd16d234f8a3365386618c36..cc5a5685cd0567b8123561679c40e8e68b4bbbd4 100644 --- a/src/share/classes/sun/util/locale/UnicodeLocaleExtension.java +++ b/src/share/classes/sun/util/locale/UnicodeLocaleExtension.java @@ -1,5 +1,6 @@ + /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,56 +33,48 @@ package sun.util.locale; import java.util.Collections; +import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; -import java.util.TreeMap; -import java.util.TreeSet; public class UnicodeLocaleExtension extends Extension { public static final char SINGLETON = 'u'; - private static final SortedSet<String> EMPTY_SORTED_SET = new TreeSet<String>(); - private static final SortedMap<String, String> EMPTY_SORTED_MAP = new TreeMap<String, String>(); - - private SortedSet<String> _attributes = EMPTY_SORTED_SET; - private SortedMap<String, String> _keywords = EMPTY_SORTED_MAP; - - public static final UnicodeLocaleExtension CA_JAPANESE; - public static final UnicodeLocaleExtension NU_THAI; + private final Set<String> attributes; + private final Map<String, String> keywords; - static { - CA_JAPANESE = new UnicodeLocaleExtension(); - CA_JAPANESE._keywords = new TreeMap<String, String>(); - CA_JAPANESE._keywords.put("ca", "japanese"); - CA_JAPANESE._value = "ca-japanese"; + public static final UnicodeLocaleExtension CA_JAPANESE + = new UnicodeLocaleExtension("ca", "japanese"); + public static final UnicodeLocaleExtension NU_THAI + = new UnicodeLocaleExtension("nu", "thai"); - NU_THAI = new UnicodeLocaleExtension(); - NU_THAI._keywords = new TreeMap<String, String>(); - NU_THAI._keywords.put("nu", "thai"); - NU_THAI._value = "nu-thai"; - } - - private UnicodeLocaleExtension() { - super(SINGLETON); + private UnicodeLocaleExtension(String key, String value) { + super(SINGLETON, key + "-" + value); + attributes = Collections.emptySet(); + keywords = Collections.singletonMap(key, value); } UnicodeLocaleExtension(SortedSet<String> attributes, SortedMap<String, String> keywords) { - this(); - if (attributes != null && attributes.size() > 0) { - _attributes = attributes; + super(SINGLETON); + if (attributes != null) { + this.attributes = attributes; + } else { + this.attributes = Collections.emptySet(); } - if (keywords != null && keywords.size() > 0) { - _keywords = keywords; + if (keywords != null) { + this.keywords = keywords; + } else { + this.keywords = Collections.emptyMap(); } - if (_attributes.size() > 0 || _keywords.size() > 0) { + if (!this.attributes.isEmpty() || !this.keywords.isEmpty()) { StringBuilder sb = new StringBuilder(); - for (String attribute : _attributes) { + for (String attribute : this.attributes) { sb.append(LanguageTag.SEP).append(attribute); } - for (Entry<String, String> keyword : _keywords.entrySet()) { + for (Entry<String, String> keyword : this.keywords.entrySet()) { String key = keyword.getKey(); String value = keyword.getValue(); @@ -90,38 +83,46 @@ public class UnicodeLocaleExtension extends Extension { sb.append(LanguageTag.SEP).append(value); } } - _value = sb.substring(1); // skip leading '-' + setValue(sb.substring(1)); // skip leading '-' } } public Set<String> getUnicodeLocaleAttributes() { - return Collections.unmodifiableSet(_attributes); + if (attributes == Collections.EMPTY_SET) { + return attributes; + } + return Collections.unmodifiableSet(attributes); } public Set<String> getUnicodeLocaleKeys() { - return Collections.unmodifiableSet(_keywords.keySet()); + if (keywords == Collections.EMPTY_MAP) { + return Collections.emptySet(); + } + return Collections.unmodifiableSet(keywords.keySet()); } public String getUnicodeLocaleType(String unicodeLocaleKey) { - return _keywords.get(unicodeLocaleKey); + return keywords.get(unicodeLocaleKey); } public static boolean isSingletonChar(char c) { - return (SINGLETON == AsciiUtil.toLower(c)); + return (SINGLETON == LocaleUtils.toLower(c)); } public static boolean isAttribute(String s) { // 3*8alphanum - return (s.length() >= 3) && (s.length() <= 8) && AsciiUtil.isAlphaNumericString(s); + int len = s.length(); + return (len >= 3) && (len <= 8) && LocaleUtils.isAlphaNumericString(s); } public static boolean isKey(String s) { // 2alphanum - return (s.length() == 2) && AsciiUtil.isAlphaNumericString(s); + return (s.length() == 2) && LocaleUtils.isAlphaNumericString(s); } public static boolean isTypeSubtag(String s) { // 3*8alphanum - return (s.length() >= 3) && (s.length() <= 8) && AsciiUtil.isAlphaNumericString(s); + int len = s.length(); + return (len >= 3) && (len <= 8) && LocaleUtils.isAlphaNumericString(s); } } diff --git a/src/share/classes/sun/util/resources/CurrencyNames_de.properties b/src/share/classes/sun/util/resources/CurrencyNames_de.properties index b77e202a121bee319901f42a3fcd05ccf30986cd..5e8f14b8de1e0087d1b22914cddb3ae7019eda2c 100644 --- a/src/share/classes/sun/util/resources/CurrencyNames_de.properties +++ b/src/share/classes/sun/util/resources/CurrencyNames_de.properties @@ -65,6 +65,8 @@ # adp=Andorranische Pesete aed=UAE Dirham +afa=Afghani (1927-2002) +afn=Afghani all=Lek amd=Dram ang=Niederl. Antillen Gulden @@ -85,6 +87,7 @@ bhd=Bahrain-Dinar bif=Burundi-Franc bmd=Bermuda-Dollar bnd=Brunei-Dollar +bob=Boliviano bov=Mvdol brl=Real bsd=Bahama-Dollar @@ -106,6 +109,7 @@ cup=Kubanischer Peso cve=Kap Verde Escudo cyp=Zypern-Pfund czk=Tschechische Krone +dem=Deutsche Mark djf=Dschibuti-Franc dkk=D\u00e4nische Krone dop=Dominikanischer Peso @@ -176,7 +180,9 @@ mro=Ouguiya mtl=Maltesische Lira mur=Mauritius-Rupie mvr=Rufiyaa +mwk=Malawi Kwacha mxn=Mexikanischer Peso +mxv=Mexican Unidad de Inversion (UDI) myr=Malaysischer Ringgit mzm=Alter Metical mzn=Metical @@ -217,6 +223,7 @@ sos=Somalia-Schilling srd=Surinamischer Dollar srg=Suriname Gulden std=Dobra +svc=El Salvador Colon syp=Syrisches Pfund szl=Lilangeni thb=Baht diff --git a/src/share/classes/sun/util/resources/CurrencyNames_it.properties b/src/share/classes/sun/util/resources/CurrencyNames_it.properties index b2953430b5a77477bc11df83063a67de3a3fb58a..9e3ad2a2ff2090d529d127c5d27ab70462f6eaca 100644 --- a/src/share/classes/sun/util/resources/CurrencyNames_it.properties +++ b/src/share/classes/sun/util/resources/CurrencyNames_it.properties @@ -86,6 +86,7 @@ bhd=Dinaro del Bahraini bif=Franco del Burundi bmd=Dollaro delle Bermuda bnd=Dollaro del Brunei +bob=Boliviano bov=Mvdol Boliviano brl=Real Brasiliano bsd=Dollaro delle Bahamas diff --git a/src/share/classes/sun/util/resources/TimeZoneNames_pt_BR.java b/src/share/classes/sun/util/resources/TimeZoneNames_pt_BR.java index aa7ce6947131df9249d39b61159a9ab3fc678c7c..d7b485b295180572e2e4b16262c7f86b6db5cd5d 100644 --- a/src/share/classes/sun/util/resources/TimeZoneNames_pt_BR.java +++ b/src/share/classes/sun/util/resources/TimeZoneNames_pt_BR.java @@ -43,822 +43,824 @@ package sun.util.resources; public final class TimeZoneNames_pt_BR extends TimeZoneNamesBundle { protected final Object[][] getContents() { - String ACT[] = new String[] {"Fuso hor\u00e1rio do Acre", "ACT", - "Fuso hor\u00e1rio de ver\u00e3o do Acre", "ACST"}; - String ADELAIDE[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o central (Austr\u00e1lia do Sul)", "CST", - "Fuso hor\u00e1rio de ver\u00e3o central (Austr\u00e1lia do Sul)", "CST"}; - String AGT[] = new String[] {"Fuso hor\u00e1rio da Argentina", "ART", - "Fuso hor\u00e1rio de ver\u00e3o da Argentina", "ARST"}; - String AKST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Alaska", "AKST", - "Hor\u00e1rio de luz natural do Alaska", "AKDT"}; - String AMT[] = new String[] {"Fuso hor\u00e1rio do Amazonas", "AMT", - "Fuso hor\u00e1rio de ver\u00e3o do Amazonas", "AMST"}; - String ARAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Ar\u00e1bia", "AST", - "Hor\u00e1rio de luz natural da Ar\u00e1bia", "ADT"}; - String ARMT[] = new String[] {"Fuso hor\u00e1rio da Arm\u00eania", "AMT", - "Fuso hor\u00e1rio de ver\u00e3o da Arm\u00eania", "AMST"}; - String AST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Atl\u00e2ntico", "AST", - "Hor\u00e1rio de luz natural do Atl\u00e2ntico", "ADT"}; - String BDT[] = new String[] {"Fuso hor\u00e1rio de Bangladesh", "BDT", - "Fuso hor\u00e1rio de ver\u00e3o de Bangladesh", "BDST"}; - String BRISBANE[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental (Queensland)", "EST", - "Fuso hor\u00e1rio de ver\u00e3o oriental (Queensland)", "EST"}; - String BROKEN_HILL[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o central (Austr\u00e1lia do Sul/Nova Gales do Sul)", "CST", - "Fuso hor\u00e1rio de ver\u00e3o central (Austr\u00e1lia do Sul/Nova Gales do Sul)", "CST"}; - String BRT[] = new String[] {"Fuso hor\u00e1rio de Bras\u00edlia", "BRT", - "Fuso hor\u00e1rio de ver\u00e3o de Bras\u00edlia", "BRST"}; - String BTT[] = new String[] {"Fuso hor\u00e1rio de But\u00e3o", "BTT", - "Fuso hor\u00e1rio de ver\u00e3o de But\u00e3o", "BTST"}; - String CAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Central", "CAT", - "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Central", "CAST"}; - String CET[] = new String[] {"Fuso hor\u00e1rio da Europa Central", "CET", - "Fuso hor\u00e1rio de ver\u00e3o da Europa Central", "CEST"}; - String CHAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Chatham", "CHAST", - "Hor\u00e1rio de luz natural de Chatham", "CHADT"}; - String CIT[] = new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Central", "CIT", - "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Central", "CIST"}; - String CLT[] = new String[] {"Fuso hor\u00e1rio do Chile", "CLT", - "Fuso hor\u00e1rio de ver\u00e3o do Chile", "CLST"}; - String CST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o central", "CST", - "Hor\u00e1rio de luz natural central", "CDT"}; - String CTT[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da China", "CST", - "Hor\u00e1rio de luz natural da China", "CDT"}; - String CUBA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Cuba", "CST", - "Hor\u00e1rio de luz natural de Cuba", "CDT"}; - String DARWIN[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o central (Territ\u00f3rio do Norte)", "CST", - "Fuso hor\u00e1rio de ver\u00e3o central (Territ\u00f3rio do Norte)", "CST"}; - String DUBLIN[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT", - "Fuso hor\u00e1rio de ver\u00e3o da Irlanda", "IST"}; - String EAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Oriental", "EAT", - "Fuso hor\u00e1rio padr\u00e3o da \u00c1frica Oriental", "EAST"}; - String EASTER[] = new String[] {"Fuso hor\u00e1rio da Ilha de P\u00e1scoa", "EAST", - "Fuso hor\u00e1rio de ver\u00e3o da Ilha de P\u00e1scoa", "EASST"}; - String EET[] = new String[] {"Fuso hor\u00e1rio da Europa Oriental", "EET", - "Fuso hor\u00e1rio de ver\u00e3o da Europa Oriental", "EEST"}; - String EGT[] = new String[] {"Fuso hor\u00e1rio da Groenl\u00e2ndia Oriental", "EGT", - "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Oriental", "EGST"}; - String EST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental", "EST", - "Hor\u00e1rio de luz natural oriental", "EDT"}; - String EST_NSW[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental (Nova Gales do Sul)", "EST", - "Fuso hor\u00e1rio de ver\u00e3o oriental (Nova Gales do Sul)", "EST"}; - String GHMT[] = new String[] {"Fuso hor\u00e1rio do meridiano de Gana", "GMT", - "Fuso hor\u00e1rio de ver\u00e3o de Gana", "GHST"}; - String GAMBIER[] = new String[] {"Fuso hor\u00e1rio de Gambier", "GAMT", - "Fuso hor\u00e1rio de ver\u00e3o de Gambier", "GAMST"}; - String GMT[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT", - "Fuso hor\u00e1rio do meridiano de Greenwich", "GMT"}; - String GMTBST[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT", - "Fuso hor\u00e1rio de ver\u00e3o da Gr\u00e3-Bretanha", "BST"}; - String GST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do golfo", "GST", - "Hor\u00e1rio de luz natural do golfo", "GDT"}; - String HAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Hava\u00ed-Aleutian", "HAST", - "Hor\u00e1rio de luz natural do Hava\u00ed-Aleutian", "HADT"}; - String HKT[] = new String[] {"Fuso hor\u00e1rio de Hong Kong", "HKT", - "Fuso hor\u00e1rio de ver\u00e3o de Hong Kong", "HKST"}; - String HST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Hava\u00ed", "HST", - "Hor\u00e1rio de luz natural do Hava\u00ed", "HDT"}; - String ICT[] = new String[] {"Fuso hor\u00e1rio da Indochina", "ICT", - "Fuso hor\u00e1rio de ver\u00e3o da Indochina", "ICST"}; - String IRT[] = new String[] {"Fuso hor\u00e1rio do Ir\u00e3", "IRST", - "Hor\u00e1rio de luz natural do Ir\u00e3", "IRDT"}; - String ISRAEL[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Israel", "IST", - "Hor\u00e1rio de luz natural de Israel", "IDT"}; - String IST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da \u00cdndia", "IST", - "Hor\u00e1rio de luz natural da \u00cdndia", "IDT"}; - String JST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Jap\u00e3o", "JST", - "Hor\u00e1rio de luz natural do Jap\u00e3o", "JDT"}; - String KST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Coreia", "KST", - "Hor\u00e1rio de luz natural da Coreia", "KDT"}; - String LORD_HOWE[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Lord Howe", "LHST", - "Fuso hor\u00e1rio de ver\u00e3o de Lord Howe", "LHST"}; - String MHT[] = new String[] {"Fuso hor\u00e1rio das Ilhas Marshall", "MHT", - "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marshall", "MHST"}; - String MSK[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Moscou", "MSK", - "Hor\u00e1rio de luz natural de Moscou", "MSD"}; - String MST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o das montanhas", "MST", - "Hor\u00e1rio de luz natural das montanhas", "MDT"}; - String MYT[] = new String[] {"Fuso hor\u00e1rio da Mal\u00e1sia", "MYT", - "Fuso hor\u00e1rio de ver\u00e3o da Mal\u00e1sia", "MYST"}; - String NORONHA[] = new String[] {"Fuso hor\u00e1rio de Fernando de Noronha", "FNT", - "Fuso hor\u00e1rio de ver\u00e3o de Fernando de Noronha", "FNST"}; - String NOVT[] = new String[] {"Fuso hor\u00e1rio de Novosibirsk", "NOVT", - "Fuso hor\u00e1rio de ver\u00e3o de Novosibirsk", "NOVST"}; + String ACT[] = new String[] {"Fuso hor\u00e1rio do Acre", "ACT", + "Fuso hor\u00e1rio de ver\u00e3o do Acre", "ACST"}; + String ADELAIDE[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o central (Austr\u00e1lia do Sul)", "CST", + "Fuso hor\u00e1rio de ver\u00e3o central (Austr\u00e1lia do Sul)", "CST"}; + String AGT[] = new String[] {"Fuso hor\u00e1rio da Argentina", "ART", + "Fuso hor\u00e1rio de ver\u00e3o da Argentina", "ARST"}; + String AKST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Alaska", "AKST", + "Hor\u00e1rio de luz natural do Alaska", "AKDT"}; + String AMT[] = new String[] {"Fuso hor\u00e1rio do Amazonas", "AMT", + "Fuso hor\u00e1rio de ver\u00e3o do Amazonas", "AMST"}; + String ARAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Ar\u00e1bia", "AST", + "Hor\u00e1rio de luz natural da Ar\u00e1bia", "ADT"}; + String ARMT[] = new String[] {"Fuso hor\u00e1rio da Arm\u00eania", "AMT", + "Fuso hor\u00e1rio de ver\u00e3o da Arm\u00eania", "AMST"}; + String AST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Atl\u00e2ntico", "AST", + "Hor\u00e1rio de luz natural do Atl\u00e2ntico", "ADT"}; + String BDT[] = new String[] {"Fuso hor\u00e1rio de Bangladesh", "BDT", + "Fuso hor\u00e1rio de ver\u00e3o de Bangladesh", "BDST"}; + String BRISBANE[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental (Queensland)", "EST", + "Fuso hor\u00e1rio de ver\u00e3o oriental (Queensland)", "EST"}; + String BROKEN_HILL[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o central (Austr\u00e1lia do Sul/Nova Gales do Sul)", "CST", + "Fuso hor\u00e1rio de ver\u00e3o central (Austr\u00e1lia do Sul/Nova Gales do Sul)", "CST"}; + String BRT[] = new String[] {"Fuso hor\u00e1rio de Bras\u00edlia", "BRT", + "Fuso hor\u00e1rio de ver\u00e3o de Bras\u00edlia", "BRST"}; + String BTT[] = new String[] {"Fuso hor\u00e1rio de But\u00e3o", "BTT", + "Fuso hor\u00e1rio de ver\u00e3o de But\u00e3o", "BTST"}; + String CAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Central", "CAT", + "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Central", "CAST"}; + String CET[] = new String[] {"Fuso hor\u00e1rio da Europa Central", "CET", + "Fuso hor\u00e1rio de ver\u00e3o da Europa Central", "CEST"}; + String CHAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Chatham", "CHAST", + "Hor\u00e1rio de luz natural de Chatham", "CHADT"}; + String CIT[] = new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Central", "CIT", + "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Central", "CIST"}; + String CLT[] = new String[] {"Fuso hor\u00e1rio do Chile", "CLT", + "Fuso hor\u00e1rio de ver\u00e3o do Chile", "CLST"}; + String CST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o central", "CST", + "Hor\u00e1rio de luz natural central", "CDT"}; + String CTT[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da China", "CST", + "Hor\u00e1rio de luz natural da China", "CDT"}; + String CUBA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Cuba", "CST", + "Hor\u00e1rio de luz natural de Cuba", "CDT"}; + String DARWIN[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o central (Territ\u00f3rio do Norte)", "CST", + "Fuso hor\u00e1rio de ver\u00e3o central (Territ\u00f3rio do Norte)", "CST"}; + String DUBLIN[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT", + "Fuso hor\u00e1rio de ver\u00e3o da Irlanda", "IST"}; + String EAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Oriental", "EAT", + "Fuso hor\u00e1rio padr\u00e3o da \u00c1frica Oriental", "EAST"}; + String EASTER[] = new String[] {"Fuso hor\u00e1rio da Ilha de P\u00e1scoa", "EAST", + "Fuso hor\u00e1rio de ver\u00e3o da Ilha de P\u00e1scoa", "EASST"}; + String EET[] = new String[] {"Fuso hor\u00e1rio da Europa Oriental", "EET", + "Fuso hor\u00e1rio de ver\u00e3o da Europa Oriental", "EEST"}; + String EGT[] = new String[] {"Fuso hor\u00e1rio da Groenl\u00e2ndia Oriental", "EGT", + "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Oriental", "EGST"}; + String EST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental", "EST", + "Hor\u00e1rio de luz natural oriental", "EDT"}; + String EST_NSW[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental (Nova Gales do Sul)", "EST", + "Fuso hor\u00e1rio de ver\u00e3o oriental (Nova Gales do Sul)", "EST"}; + String GHMT[] = new String[] {"Fuso hor\u00e1rio do meridiano de Gana", "GMT", + "Fuso hor\u00e1rio de ver\u00e3o de Gana", "GHST"}; + String GAMBIER[] = new String[] {"Fuso hor\u00e1rio de Gambier", "GAMT", + "Fuso hor\u00e1rio de ver\u00e3o de Gambier", "GAMST"}; + String GMT[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT", + "Fuso hor\u00e1rio do meridiano de Greenwich", "GMT"}; + String GMTBST[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT", + "Fuso hor\u00e1rio de ver\u00e3o da Gr\u00e3-Bretanha", "BST"}; + String GST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do golfo", "GST", + "Hor\u00e1rio de luz natural do golfo", "GDT"}; + String HAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Hava\u00ed-Aleutian", "HAST", + "Hor\u00e1rio de luz natural do Hava\u00ed-Aleutian", "HADT"}; + String HKT[] = new String[] {"Fuso hor\u00e1rio de Hong Kong", "HKT", + "Fuso hor\u00e1rio de ver\u00e3o de Hong Kong", "HKST"}; + String HST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Hava\u00ed", "HST", + "Hor\u00e1rio de luz natural do Hava\u00ed", "HDT"}; + String ICT[] = new String[] {"Fuso hor\u00e1rio da Indochina", "ICT", + "Fuso hor\u00e1rio de ver\u00e3o da Indochina", "ICST"}; + String IRT[] = new String[] {"Fuso hor\u00e1rio do Ir\u00e3", "IRST", + "Hor\u00e1rio de luz natural do Ir\u00e3", "IRDT"}; + String ISRAEL[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Israel", "IST", + "Hor\u00e1rio de luz natural de Israel", "IDT"}; + String IST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da \u00cdndia", "IST", + "Hor\u00e1rio de luz natural da \u00cdndia", "IDT"}; + String JST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Jap\u00e3o", "JST", + "Hor\u00e1rio de luz natural do Jap\u00e3o", "JDT"}; + String KST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Coreia", "KST", + "Hor\u00e1rio de luz natural da Coreia", "KDT"}; + String LORD_HOWE[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Lord Howe", "LHST", + "Fuso hor\u00e1rio de ver\u00e3o de Lord Howe", "LHST"}; + String MHT[] = new String[] {"Fuso hor\u00e1rio das Ilhas Marshall", "MHT", + "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marshall", "MHST"}; + String MSK[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Moscou", "MSK", + "Hor\u00e1rio de luz natural de Moscou", "MSD"}; + String MST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o das montanhas", "MST", + "Hor\u00e1rio de luz natural das montanhas", "MDT"}; + String MYT[] = new String[] {"Fuso hor\u00e1rio da Mal\u00e1sia", "MYT", + "Fuso hor\u00e1rio de ver\u00e3o da Mal\u00e1sia", "MYST"}; + String NORONHA[] = new String[] {"Fuso hor\u00e1rio de Fernando de Noronha", "FNT", + "Fuso hor\u00e1rio de ver\u00e3o de Fernando de Noronha", "FNST"}; + String NOVT[] = new String[] {"Fuso hor\u00e1rio de Novosibirsk", "NOVT", + "Fuso hor\u00e1rio de ver\u00e3o de Novosibirsk", "NOVST"}; String NPT[] = new String[] {"Fuso hor\u00e1rio do Nepal", "NPT", "Fuso hor\u00e1rio de ver\u00e3o do Nepal", "NPST"}; - String NST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Terra Nova", "NST", - "Hor\u00e1rio de luz natural de Terra Nova", "NDT"}; - String NZST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Nova Zel\u00e2ndia", "NZST", - "Hor\u00e1rio de luz natural da Nova Zel\u00e2ndia", "NZDT"}; + String NST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Terra Nova", "NST", + "Hor\u00e1rio de luz natural de Terra Nova", "NDT"}; + String NZST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Nova Zel\u00e2ndia", "NZST", + "Hor\u00e1rio de luz natural da Nova Zel\u00e2ndia", "NZDT"}; String PITCAIRN[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Pitcairn", "PST", - "Hor\u00e1rio de luz natural de Pitcairn", "PDT"}; - String PKT[] = new String[] {"Fuso hor\u00e1rio do Paquist\u00e3o", "PKT", - "Fuso hor\u00e1rio de ver\u00e3o do Paquist\u00e3o", "PKST"}; - String PONT[] = new String[] {"Fuso hor\u00e1rio de Pohnpei", "PONT", - "Fuso hor\u00e1rio de ver\u00e3o de Pohnpei", "PONST"}; - String PST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Pac\u00edfico", "PST", - "Hor\u00e1rio de luz natural do Pac\u00edfico", "PDT"}; + "Hor\u00e1rio de luz natural de Pitcairn", "PDT"}; + String PKT[] = new String[] {"Fuso hor\u00e1rio do Paquist\u00e3o", "PKT", + "Fuso hor\u00e1rio de ver\u00e3o do Paquist\u00e3o", "PKST"}; + String PONT[] = new String[] {"Fuso hor\u00e1rio de Pohnpei", "PONT", + "Fuso hor\u00e1rio de ver\u00e3o de Pohnpei", "PONST"}; + String PST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Pac\u00edfico", "PST", + "Hor\u00e1rio de luz natural do Pac\u00edfico", "PDT"}; String RST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental", "EST", "Hor\u00e1rio de luz natural central", "CDT"}; - String SAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da \u00c1frica do Sul", "SAST", - "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica do Sul", "SAST"}; - String SBT[] = new String[] {"Fuso hor\u00e1rio das Ilhas Salom\u00e3o", "SBT", - "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Salom\u00e3o", "SBST"}; - String SGT[] = new String[] {"Fuso hor\u00e1rio de Cingapura", "SGT", - "Fuso hor\u00e1rio de ver\u00e1 de Cingapura", "SGST"}; - String SLST[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT", - "Fuso hor\u00e1rio de ver\u00e3o de Serra Leoa", "SLST"}; - String TASMANIA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental (Tasm\u00e2nia)", "EST", - "Fuso hor\u00e1rio de ver\u00e3o oriental (Tasm\u00e2nia)", "EST"}; - String TMT[] = new String[] {"Fuso hor\u00e1rio do Turcomenist\u00e3o", "TMT", - "Fuso hor\u00e1rio de ver\u00e3o do Turcomenist\u00e3o", "TMST"}; - String TRUT[] = new String[] {"Fuso hor\u00e1rio de Chuuk", "CHUT", - "Fuso hor\u00e1rio de ver\u00e3o de Chuuk", "CHUST"}; - String ULAT[]= new String[] {"Fuso hor\u00e1rio de Ulan Bator", "ULAT", - "Fuso hor\u00e1rio de ver\u00e3o de Ulan Bator", "ULAST"}; - String WAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Ocidental", "WAT", - "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Ocidental", "WAST"}; - String WET[] = new String[] {"Fuso hor\u00e1rio da Europa Ocidental", "WET", - "Fuso hor\u00e1rio de ver\u00e3o da Europa Ocidental", "WEST"}; - String WIT[] = new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Ocidental", "WIT", - "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Ocidental", "WIST"}; - String WST_AUS[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o ocidental (Austr\u00e1lia)", "WST", - "Fuso hor\u00e1rio de ver\u00e3o ocidental (Austr\u00e1lia)", "WST"}; - String SAMOA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Samoa", "SST", - "Hor\u00e1rio de luz natural de Samoa", "SDT"}; - String WST_SAMOA[] = new String[] {"Fuso hor\u00e1rio de Samoa Ocidental", "WST", - "Fuso hor\u00e1rio de ver\u00e3o de Samoa Ocidental", "WSST"}; - String ChST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Chamorro", "ChST", - "Hor\u00e1rio de luz natural de Chamorro", "ChDT"}; - String VICTORIA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental (Victoria)", "EST", - "Fuso hor\u00e1rio de ver\u00e3o oriental (Victoria)", "EST"}; - String UTC[] = new String[] {"Tempo universal coordenado", "UTC", - "Tempo universal coordenado", "UTC"}; - String UZT[] = new String[] {"Fuso hor\u00e1rio do Uzbequist\u00e3o", "UZT", - "Fuso hor\u00e1rio de ver\u00e3o do Uzbequist\u00e3o", "UZST"}; - String WART[] = new String[] {"Fuso hor\u00e1rio da Argentina Ocidental", "WART", - "Fuso hor\u00e1rio de ver\u00e3o da Argentina Ocidental", "WARST"}; - + String SAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da \u00c1frica do Sul", "SAST", + "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica do Sul", "SAST"}; + String SBT[] = new String[] {"Fuso hor\u00e1rio das Ilhas Salom\u00e3o", "SBT", + "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Salom\u00e3o", "SBST"}; + String SGT[] = new String[] {"Fuso hor\u00e1rio de Cingapura", "SGT", + "Fuso hor\u00e1rio de ver\u00e1 de Cingapura", "SGST"}; + String SLST[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT", + "Fuso hor\u00e1rio de ver\u00e3o de Serra Leoa", "SLST"}; + String TASMANIA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental (Tasm\u00e2nia)", "EST", + "Fuso hor\u00e1rio de ver\u00e3o oriental (Tasm\u00e2nia)", "EST"}; + String TMT[] = new String[] {"Fuso hor\u00e1rio do Turcomenist\u00e3o", "TMT", + "Fuso hor\u00e1rio de ver\u00e3o do Turcomenist\u00e3o", "TMST"}; + String TRUT[] = new String[] {"Fuso hor\u00e1rio de Chuuk", "CHUT", + "Fuso hor\u00e1rio de ver\u00e3o de Chuuk", "CHUST"}; + String ULAT[]= new String[] {"Fuso hor\u00e1rio de Ulan Bator", "ULAT", + "Fuso hor\u00e1rio de ver\u00e3o de Ulan Bator", "ULAST"}; + String WAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Ocidental", "WAT", + "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Ocidental", "WAST"}; + String WET[] = new String[] {"Fuso hor\u00e1rio da Europa Ocidental", "WET", + "Fuso hor\u00e1rio de ver\u00e3o da Europa Ocidental", "WEST"}; + String WIT[] = new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Ocidental", "WIT", + "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Ocidental", "WIST"}; + String WST_AUS[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o ocidental (Austr\u00e1lia)", "WST", + "Fuso hor\u00e1rio de ver\u00e3o ocidental (Austr\u00e1lia)", "WST"}; + String SAMOA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Samoa", "SST", + "Hor\u00e1rio de luz natural de Samoa", "SDT"}; + String WST_SAMOA[] = new String[] {"Fuso hor\u00e1rio de Samoa Ocidental", "WST", + "Fuso hor\u00e1rio de ver\u00e3o de Samoa Ocidental", "WSST"}; + String ChST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Chamorro", "ChST", + "Hor\u00e1rio de luz natural de Chamorro", "ChDT"}; + String VICTORIA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental (Victoria)", "EST", + "Fuso hor\u00e1rio de ver\u00e3o oriental (Victoria)", "EST"}; + String UTC[] = new String[] {"Tempo universal coordenado", "UTC", + "Tempo universal coordenado", "UTC"}; + String UZT[] = new String[] {"Fuso hor\u00e1rio do Uzbequist\u00e3o", "UZT", + "Fuso hor\u00e1rio de ver\u00e3o do Uzbequist\u00e3o", "UZST"}; + String WART[] = new String[] {"Fuso hor\u00e1rio da Argentina Ocidental", "WART", + "Fuso hor\u00e1rio de ver\u00e3o da Argentina Ocidental", "WARST"}; - return new Object[][] { - {"America/Los_Angeles", PST}, - {"PST", PST}, - {"America/Denver", MST}, - {"MST", MST}, - {"America/Phoenix", MST}, - {"PNT", MST}, - {"America/Chicago", CST}, - {"CST", CST}, - {"America/New_York", EST}, - {"EST", EST}, - {"America/Indianapolis", EST}, - {"IET", EST}, - {"Pacific/Honolulu", HST}, - {"HST", HST}, - {"America/Anchorage", AKST}, - {"AST", AKST}, - {"America/Halifax", AST}, - {"America/Sitka", AKST}, - {"America/St_Johns", NST}, - {"CNT", NST}, - {"Europe/Paris", CET}, - {"ECT", CET}, - {"GMT", GMT}, - {"Africa/Casablanca", WET}, - {"Asia/Jerusalem", ISRAEL}, - {"Asia/Tokyo", JST}, - {"JST", JST}, - {"Europe/Bucharest", EET}, - {"Asia/Shanghai", CTT}, - {"CTT", CTT}, - /* Don't change the order of the above zones - * to keep compatibility with the previous version. - */ + return new Object[][] { + {"America/Los_Angeles", PST}, + {"PST", PST}, + {"America/Denver", MST}, + {"MST", MST}, + {"America/Phoenix", MST}, + {"PNT", MST}, + {"America/Chicago", CST}, + {"CST", CST}, + {"America/New_York", EST}, + {"EST", EST}, + {"America/Indianapolis", EST}, + {"IET", EST}, + {"Pacific/Honolulu", HST}, + {"HST", HST}, + {"America/Anchorage", AKST}, + {"AST", AKST}, + {"America/Halifax", AST}, + {"America/Sitka", AKST}, + {"America/St_Johns", NST}, + {"CNT", NST}, + {"Europe/Paris", CET}, + {"ECT", CET}, + {"GMT", GMT}, + {"Africa/Casablanca", WET}, + {"Asia/Jerusalem", ISRAEL}, + {"Asia/Tokyo", JST}, + {"JST", JST}, + {"Europe/Bucharest", EET}, + {"Asia/Shanghai", CTT}, + {"CTT", CTT}, + /* Don't change the order of the above zones + * to keep compatibility with the previous version. + */ - {"ACT", DARWIN}, - {"AET", EST_NSW}, - {"AGT", AGT}, - {"ART", EET}, - {"Africa/Abidjan", GMT}, - {"Africa/Accra", GHMT}, - {"Africa/Addis_Ababa", EAT}, - {"Africa/Algiers", CET}, - {"Africa/Asmara", EAT}, - {"Africa/Asmera", EAT}, - {"Africa/Bamako", GMT}, - {"Africa/Bangui", WAT}, - {"Africa/Banjul", GMT}, - {"Africa/Bissau", GMT}, - {"Africa/Blantyre", CAT}, - {"Africa/Brazzaville", WAT}, - {"Africa/Bujumbura", CAT}, - {"Africa/Cairo", EET}, - {"Africa/Ceuta", CET}, - {"Africa/Conakry", GMT}, - {"Africa/Dakar", GMT}, - {"Africa/Dar_es_Salaam", EAT}, - {"Africa/Djibouti", EAT}, - {"Africa/Douala", WAT}, - {"Africa/El_Aaiun", WET}, - {"Africa/Freetown", SLST}, - {"Africa/Gaborone", CAT}, - {"Africa/Harare", CAT}, - {"Africa/Johannesburg", SAST}, - {"Africa/Kampala", EAT}, - {"Africa/Khartoum", EAT}, - {"Africa/Kigali", CAT}, - {"Africa/Kinshasa", WAT}, - {"Africa/Lagos", WAT}, - {"Africa/Libreville", WAT}, - {"Africa/Lome", GMT}, - {"Africa/Luanda", WAT}, - {"Africa/Lubumbashi", CAT}, - {"Africa/Lusaka", CAT}, - {"Africa/Malabo", WAT}, - {"Africa/Maputo", CAT}, - {"Africa/Maseru", SAST}, - {"Africa/Mbabane", SAST}, - {"Africa/Mogadishu", EAT}, - {"Africa/Monrovia", GMT}, - {"Africa/Nairobi", EAT}, - {"Africa/Ndjamena", WAT}, - {"Africa/Niamey", WAT}, - {"Africa/Nouakchott", GMT}, - {"Africa/Ouagadougou", GMT}, - {"Africa/Porto-Novo", WAT}, - {"Africa/Sao_Tome", GMT}, - {"Africa/Timbuktu", GMT}, - {"Africa/Tripoli", EET}, - {"Africa/Tunis", CET}, - {"Africa/Windhoek", WAT}, - {"America/Adak", HAST}, - {"America/Anguilla", AST}, - {"America/Antigua", AST}, - {"America/Araguaina", BRT}, - {"America/Argentina/Buenos_Aires", AGT}, - {"America/Argentina/Catamarca", AGT}, - {"America/Argentina/ComodRivadavia", AGT}, - {"America/Argentina/Cordoba", AGT}, - {"America/Argentina/Jujuy", AGT}, - {"America/Argentina/La_Rioja", AGT}, - {"America/Argentina/Mendoza", AGT}, - {"America/Argentina/Rio_Gallegos", AGT}, - {"America/Argentina/Salta", AGT}, - {"America/Argentina/San_Juan", AGT}, - {"America/Argentina/San_Luis", WART}, - {"America/Argentina/Tucuman", AGT}, - {"America/Argentina/Ushuaia", AGT}, - {"America/Aruba", AST}, - {"America/Asuncion", new String[] {"Fuso hor\u00e1rio do Paraguai", "PYT", - "Fuso hor\u00e1rio de ver\u00e3o do Paraguai", "PYST"}}, + {"ACT", DARWIN}, + {"AET", EST_NSW}, + {"AGT", AGT}, + {"ART", EET}, + {"Africa/Abidjan", GMT}, + {"Africa/Accra", GHMT}, + {"Africa/Addis_Ababa", EAT}, + {"Africa/Algiers", CET}, + {"Africa/Asmara", EAT}, + {"Africa/Asmera", EAT}, + {"Africa/Bamako", GMT}, + {"Africa/Bangui", WAT}, + {"Africa/Banjul", GMT}, + {"Africa/Bissau", GMT}, + {"Africa/Blantyre", CAT}, + {"Africa/Brazzaville", WAT}, + {"Africa/Bujumbura", CAT}, + {"Africa/Cairo", EET}, + {"Africa/Ceuta", CET}, + {"Africa/Conakry", GMT}, + {"Africa/Dakar", GMT}, + {"Africa/Dar_es_Salaam", EAT}, + {"Africa/Djibouti", EAT}, + {"Africa/Douala", WAT}, + {"Africa/El_Aaiun", WET}, + {"Africa/Freetown", SLST}, + {"Africa/Gaborone", CAT}, + {"Africa/Harare", CAT}, + {"Africa/Johannesburg", SAST}, + {"Africa/Kampala", EAT}, + {"Africa/Khartoum", EAT}, + {"Africa/Kigali", CAT}, + {"Africa/Kinshasa", WAT}, + {"Africa/Lagos", WAT}, + {"Africa/Libreville", WAT}, + {"Africa/Lome", GMT}, + {"Africa/Luanda", WAT}, + {"Africa/Lubumbashi", CAT}, + {"Africa/Lusaka", CAT}, + {"Africa/Malabo", WAT}, + {"Africa/Maputo", CAT}, + {"Africa/Maseru", SAST}, + {"Africa/Mbabane", SAST}, + {"Africa/Mogadishu", EAT}, + {"Africa/Monrovia", GMT}, + {"Africa/Nairobi", EAT}, + {"Africa/Ndjamena", WAT}, + {"Africa/Niamey", WAT}, + {"Africa/Nouakchott", GMT}, + {"Africa/Ouagadougou", GMT}, + {"Africa/Porto-Novo", WAT}, + {"Africa/Sao_Tome", GMT}, + {"Africa/Timbuktu", GMT}, + {"Africa/Tripoli", EET}, + {"Africa/Tunis", CET}, + {"Africa/Windhoek", WAT}, + {"America/Adak", HAST}, + {"America/Anguilla", AST}, + {"America/Antigua", AST}, + {"America/Araguaina", BRT}, + {"America/Argentina/Buenos_Aires", AGT}, + {"America/Argentina/Catamarca", AGT}, + {"America/Argentina/ComodRivadavia", AGT}, + {"America/Argentina/Cordoba", AGT}, + {"America/Argentina/Jujuy", AGT}, + {"America/Argentina/La_Rioja", AGT}, + {"America/Argentina/Mendoza", AGT}, + {"America/Argentina/Rio_Gallegos", AGT}, + {"America/Argentina/Salta", AGT}, + {"America/Argentina/San_Juan", AGT}, + {"America/Argentina/San_Luis", WART}, + {"America/Argentina/Tucuman", AGT}, + {"America/Argentina/Ushuaia", AGT}, + {"America/Aruba", AST}, + {"America/Asuncion", new String[] {"Fuso hor\u00e1rio do Paraguai", "PYT", + "Fuso hor\u00e1rio de ver\u00e3o do Paraguai", "PYST"}}, {"America/Atikokan", EST}, - {"America/Atka", HAST}, - {"America/Bahia", BRT}, - {"America/Bahia_Banderas", CST}, - {"America/Barbados", AST}, - {"America/Belem", BRT}, - {"America/Belize", CST}, + {"America/Atka", HAST}, + {"America/Bahia", BRT}, + {"America/Bahia_Banderas", CST}, + {"America/Barbados", AST}, + {"America/Belem", BRT}, + {"America/Belize", CST}, {"America/Blanc-Sablon", AST}, - {"America/Boa_Vista", AMT}, - {"America/Bogota", new String[] {"Fuso hor\u00e1rio da Col\u00f4mbia", "COT", - "Fuso hor\u00e1rio de ver\u00e3o da Col\u00f4mbia", "COST"}}, - {"America/Boise", MST}, - {"America/Buenos_Aires", AGT}, - {"America/Cambridge_Bay", MST}, - {"America/Campo_Grande", AMT}, - {"America/Cancun", CST}, - {"America/Caracas", new String[] {"Fuso hor\u00e1rio da Venezuela", "VET", - "Fuso hor\u00e1rio de ver\u00e3o da Venezuela", "VEST"}}, - {"America/Catamarca", AGT}, - {"America/Cayenne", new String[] {"Fuso hor\u00e1rio da Guiana Francesa", "GFT", - "Fuso hor\u00e1rio de ver\u00e3o da Guiana Francesa", "GFST"}}, - {"America/Cayman", EST}, - {"America/Chihuahua", MST}, - {"America/Coral_Harbour", EST}, - {"America/Cordoba", AGT}, - {"America/Costa_Rica", CST}, - {"America/Cuiaba", AMT}, - {"America/Curacao", AST}, - {"America/Danmarkshavn", GMT}, - {"America/Dawson", PST}, - {"America/Dawson_Creek", MST}, - {"America/Detroit", EST}, - {"America/Dominica", AST}, - {"America/Edmonton", MST}, - {"America/Eirunepe", AMT}, - {"America/El_Salvador", CST}, - {"America/Ensenada", PST}, - {"America/Fort_Wayne", EST}, - {"America/Fortaleza", BRT}, - {"America/Glace_Bay", AST}, - {"America/Godthab", new String[] {"Fuso hor\u00e1rio da Groenl\u00e2ndia Ocidental", "WGT", - "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Ocidental", "WGST"}}, - {"America/Goose_Bay", AST}, - {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, - {"America/Guayaquil", new String[] {"Fuso hor\u00e1rio do Equador", "ECT", - "Fuso hor\u00e1rio de ver\u00e3o do Equador", "ECST"}}, - {"America/Guyana", new String[] {"Fuso hor\u00e1rio da Guiana", "GYT", - "Fuso hor\u00e1rio de ver\u00e3o da Guiana", "GYST"}}, - {"America/Havana", CUBA}, - {"America/Hermosillo", MST}, - {"America/Indiana/Indianapolis", EST}, - {"America/Indiana/Knox", CST}, - {"America/Indiana/Marengo", EST}, - {"America/Indiana/Petersburg", EST}, - {"America/Indiana/Tell_City", CST}, - {"America/Indiana/Vevay", EST}, - {"America/Indiana/Vincennes", EST}, - {"America/Indiana/Winamac", EST}, - {"America/Inuvik", MST}, - {"America/Iqaluit", EST}, - {"America/Jamaica", EST}, - {"America/Jujuy", AGT}, - {"America/Juneau", AKST}, - {"America/Kentucky/Louisville", EST}, - {"America/Kentucky/Monticello", EST}, - {"America/Knox_IN", CST}, - {"America/La_Paz", new String[] {"Fuso hor\u00e1rio da Bol\u00edvia", "BOT", - "Fuso hor\u00e1rio de ver\u00e3o da Bol\u00edvia", "BOST"}}, - {"America/Lima", new String[] {"Fuso hor\u00e1rio do Peru", "PET", - "Fuso hor\u00e1rio de ver\u00e3o do Peru", "PEST"}}, - {"America/Louisville", EST}, - {"America/Maceio", BRT}, - {"America/Managua", CST}, - {"America/Manaus", AMT}, - {"America/Marigot", AST}, - {"America/Martinique", AST}, - {"America/Mazatlan", MST}, - {"America/Mendoza", AGT}, - {"America/Menominee", CST}, - {"America/Merida", CST}, - {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST", - "Metlakatla Daylight Time", "MeDT"}}, - {"America/Mexico_City", CST}, - {"America/Miquelon", new String[] {"Fuso hor\u00e1rio padr\u00e3o de S\u00e3o Pedro e Miquelon", "PMST", - "Hor\u00e1rio de luz natural de S\u00e3o Pedro e Miquelon", "PMDT"}}, - {"America/Moncton", AST}, - {"America/Montevideo", new String[] {"Fuso hor\u00e1rio do Uruguai", "UYT", - "Fuso hor\u00e1rio de ver\u00e3o do Uruguai", "UYST"}}, - {"America/Monterrey", CST}, - {"America/Montreal", EST}, - {"America/Montserrat", AST}, - {"America/Nassau", EST}, - {"America/Nipigon", EST}, - {"America/Nome", AKST}, - {"America/Noronha", NORONHA}, + {"America/Boa_Vista", AMT}, + {"America/Bogota", new String[] {"Fuso hor\u00e1rio da Col\u00f4mbia", "COT", + "Fuso hor\u00e1rio de ver\u00e3o da Col\u00f4mbia", "COST"}}, + {"America/Boise", MST}, + {"America/Buenos_Aires", AGT}, + {"America/Cambridge_Bay", MST}, + {"America/Campo_Grande", AMT}, + {"America/Cancun", CST}, + {"America/Caracas", new String[] {"Fuso hor\u00e1rio da Venezuela", "VET", + "Fuso hor\u00e1rio de ver\u00e3o da Venezuela", "VEST"}}, + {"America/Catamarca", AGT}, + {"America/Cayenne", new String[] {"Fuso hor\u00e1rio da Guiana Francesa", "GFT", + "Fuso hor\u00e1rio de ver\u00e3o da Guiana Francesa", "GFST"}}, + {"America/Cayman", EST}, + {"America/Chihuahua", MST}, + {"America/Coral_Harbour", EST}, + {"America/Cordoba", AGT}, + {"America/Costa_Rica", CST}, + {"America/Cuiaba", AMT}, + {"America/Curacao", AST}, + {"America/Danmarkshavn", GMT}, + {"America/Dawson", PST}, + {"America/Dawson_Creek", MST}, + {"America/Detroit", EST}, + {"America/Dominica", AST}, + {"America/Edmonton", MST}, + {"America/Eirunepe", AMT}, + {"America/El_Salvador", CST}, + {"America/Ensenada", PST}, + {"America/Fort_Wayne", EST}, + {"America/Fortaleza", BRT}, + {"America/Glace_Bay", AST}, + {"America/Godthab", new String[] {"Fuso hor\u00e1rio da Groenl\u00e2ndia Ocidental", "WGT", + "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Ocidental", "WGST"}}, + {"America/Goose_Bay", AST}, + {"America/Grand_Turk", EST}, + {"America/Grenada", AST}, + {"America/Guadeloupe", AST}, + {"America/Guatemala", CST}, + {"America/Guayaquil", new String[] {"Fuso hor\u00e1rio do Equador", "ECT", + "Fuso hor\u00e1rio de ver\u00e3o do Equador", "ECST"}}, + {"America/Guyana", new String[] {"Fuso hor\u00e1rio da Guiana", "GYT", + "Fuso hor\u00e1rio de ver\u00e3o da Guiana", "GYST"}}, + {"America/Havana", CUBA}, + {"America/Hermosillo", MST}, + {"America/Indiana/Indianapolis", EST}, + {"America/Indiana/Knox", CST}, + {"America/Indiana/Marengo", EST}, + {"America/Indiana/Petersburg", EST}, + {"America/Indiana/Tell_City", CST}, + {"America/Indiana/Vevay", EST}, + {"America/Indiana/Vincennes", EST}, + {"America/Indiana/Winamac", EST}, + {"America/Inuvik", MST}, + {"America/Iqaluit", EST}, + {"America/Jamaica", EST}, + {"America/Jujuy", AGT}, + {"America/Juneau", AKST}, + {"America/Kentucky/Louisville", EST}, + {"America/Kentucky/Monticello", EST}, + {"America/Knox_IN", CST}, + {"America/La_Paz", new String[] {"Fuso hor\u00e1rio da Bol\u00edvia", "BOT", + "Fuso hor\u00e1rio de ver\u00e3o da Bol\u00edvia", "BOST"}}, + {"America/Lima", new String[] {"Fuso hor\u00e1rio do Peru", "PET", + "Fuso hor\u00e1rio de ver\u00e3o do Peru", "PEST"}}, + {"America/Louisville", EST}, + {"America/Maceio", BRT}, + {"America/Managua", CST}, + {"America/Manaus", AMT}, + {"America/Marigot", AST}, + {"America/Martinique", AST}, + {"America/Matamoros", CST}, + {"America/Mazatlan", MST}, + {"America/Mendoza", AGT}, + {"America/Menominee", CST}, + {"America/Merida", CST}, + {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST", + "Metlakatla Daylight Time", "MeDT"}}, + {"America/Mexico_City", CST}, + {"America/Miquelon", new String[] {"Fuso hor\u00e1rio padr\u00e3o de S\u00e3o Pedro e Miquelon", "PMST", + "Hor\u00e1rio de luz natural de S\u00e3o Pedro e Miquelon", "PMDT"}}, + {"America/Moncton", AST}, + {"America/Montevideo", new String[] {"Fuso hor\u00e1rio do Uruguai", "UYT", + "Fuso hor\u00e1rio de ver\u00e3o do Uruguai", "UYST"}}, + {"America/Monterrey", CST}, + {"America/Montreal", EST}, + {"America/Montserrat", AST}, + {"America/Nassau", EST}, + {"America/Nipigon", EST}, + {"America/Nome", AKST}, + {"America/Noronha", NORONHA}, {"America/North_Dakota/Beulah", CST}, - {"America/North_Dakota/Center", CST}, + {"America/North_Dakota/Center", CST}, {"America/North_Dakota/New_Salem", CST}, - {"America/Panama", EST}, - {"America/Pangnirtung", EST}, - {"America/Paramaribo", new String[] {"Fuso hor\u00e1rio do Suriname", "SRT", - "Fuso hor\u00e1rio de ver\u00e3o do Suriname", "SRST"}}, - {"America/Port-au-Prince", EST}, - {"America/Port_of_Spain", AST}, - {"America/Porto_Acre", AMT}, - {"America/Porto_Velho", AMT}, - {"America/Puerto_Rico", AST}, - {"America/Rainy_River", CST}, - {"America/Rankin_Inlet", CST}, - {"America/Recife", BRT}, - {"America/Regina", CST}, - {"America/Resolute", RST}, - {"America/Rio_Branco", AMT}, - {"America/Rosario", AGT}, - {"America/Santarem", BRT}, - {"America/Santiago", CLT}, - {"America/Santo_Domingo", AST}, - {"America/Sao_Paulo", BRT}, - {"America/Scoresbysund", EGT}, - {"America/Shiprock", MST}, - {"America/St_Barthelemy", AST}, - {"America/St_Kitts", AST}, - {"America/St_Lucia", AST}, - {"America/St_Thomas", AST}, - {"America/St_Vincent", AST}, - {"America/Swift_Current", CST}, - {"America/Tegucigalpa", CST}, - {"America/Thule", AST}, - {"America/Thunder_Bay", EST}, - {"America/Tijuana", PST}, - {"America/Toronto", EST}, - {"America/Tortola", AST}, - {"America/Vancouver", PST}, - {"America/Virgin", AST}, - {"America/Whitehorse", PST}, - {"America/Winnipeg", CST}, - {"America/Yakutat", AKST}, - {"America/Yellowknife", MST}, - {"Antarctica/Casey", WST_AUS}, - {"Antarctica/Davis", new String[] {"Fuso hor\u00e1rio de Davis", "DAVT", - "Fuso hor\u00e1rio de ver\u00e3o de Davis", "DAVST"}}, - {"Antarctica/DumontDUrville", new String[] {"Fuso hor\u00e1rio de Dumont-d'Urville", "DDUT", - "Fuso hor\u00e1rio de ver\u00e3o de Dumont-d'Urville", "DDUST"}}, - {"Antarctica/Mawson", new String[] {"Fuso hor\u00e1rio de Mawson", "MAWT", - "Fuso hor\u00e1rio de ver\u00e3o de Mawson", "MAWST"}}, - {"Antarctica/McMurdo", NZST}, - {"Antarctica/Palmer", CLT}, - {"Antarctica/Rothera", new String[] {"Fuso hor\u00e1rio de Rothera", "ROTT", - "Fuso hor\u00e1rio de ver\u00e3o de Rothera", "ROTST"}}, - {"Antarctica/South_Pole", NZST}, - {"Antarctica/Syowa", new String[] {"Fuso hor\u00e1rio de Syowa", "SYOT", - "Fuso hor\u00e1rio de ver\u00e3o de Syowa", "SYOST"}}, - {"Antarctica/Vostok", new String[] {"Fuso hor\u00e1rio de Vostok", "VOST", - "Fuso hor\u00e1rio de ver\u00e3o de Vostok", "VOSST"}}, - {"Arctic/Longyearbyen", CET}, - {"Asia/Aden", ARAST}, - {"Asia/Almaty", new String[] {"Fuso hor\u00e1rio de Alma-Ata", "ALMT", - "Fuso hor\u00e1rio de ver\u00e3o de Alma-Ata", "ALMST"}}, - {"Asia/Amman", EET}, - {"Asia/Anadyr", new String[] {"Fuso hor\u00e1rio de Anadyr", "ANAT", - "Fuso hor\u00e1rio de ver\u00e3o de Anadyr", "ANAST"}}, - {"Asia/Aqtau", new String[] {"Fuso hor\u00e1rio de Aqtau", "AQTT", - "Fuso hor\u00e1rio de ver\u00e3o de Aqtau", "AQTST"}}, - {"Asia/Aqtobe", new String[] {"Fuso hor\u00e1rio de Aqtobe", "AQTT", - "Fuso hor\u00e1rio de ver\u00e3o de Aqtobe", "AQTST"}}, - {"Asia/Ashgabat", TMT}, - {"Asia/Ashkhabad", TMT}, - {"Asia/Baghdad", ARAST}, - {"Asia/Bahrain", ARAST}, - {"Asia/Baku", new String[] {"Fuso hor\u00e1rio do Azerbaij\u00e3o", "AZT", - "Fuso hor\u00e1rio de ver\u00e3o do Azerbaij\u00e3o", "AZST"}}, - {"Asia/Bangkok", ICT}, - {"Asia/Beirut", EET}, - {"Asia/Bishkek", new String[] {"Fuso hor\u00e1rio do Quirguist\u00e3o", "KGT", - "Fuso hor\u00e1rio de ver\u00e3o do Quirguist\u00e3o", "KGST"}}, - {"Asia/Brunei", new String[] {"Fuso hor\u00e1rio de Brunei", "BNT", - "Fuso hor\u00e1rio de ver\u00e3o de Brunei", "BNST"}}, - {"Asia/Calcutta", IST}, - {"Asia/Choibalsan", new String[] {"Fuso hor\u00e1rio de Choibalsan", "CHOT", - "Fuso hor\u00e1rio de ver\u00e3o de Choibalsan", "CHOST"}}, - {"Asia/Chongqing", CTT}, - {"Asia/Chungking", CTT}, - {"Asia/Colombo", IST}, - {"Asia/Dacca", BDT}, - {"Asia/Dhaka", BDT}, - {"Asia/Dili", new String[] {"Fuso hor\u00e1rio do Timor-Leste", "TLT", - "Fuso hor\u00e1rio de ver\u00e3o do Timor-Leste", "TLST"}}, - {"Asia/Damascus", EET}, - {"Asia/Dubai", GST}, - {"Asia/Dushanbe", new String[] {"Fuso hor\u00e1rio do Tadjiquist\u00e3o", "TJT", - "Fuso hor\u00e1rio de ver\u00e3o do Tadjiquist\u00e3o", "TJST"}}, - {"Asia/Gaza", EET}, - {"Asia/Harbin", CTT}, - {"Asia/Ho_Chi_Minh", ICT}, - {"Asia/Hong_Kong", HKT}, - {"Asia/Hovd", new String[] {"Fuso hor\u00e1rio de Hovd", "HOVT", - "Fuso hor\u00e1rio de ver\u00e3o de Hovd", "HOVST"}}, - {"Asia/Irkutsk", new String[] {"Fuso hor\u00e1rio de Irkutsk", "IRKT", - "Fuso hor\u00e1rio de ver\u00e3o de Irkutsk", "IRKST"}}, - {"Asia/Istanbul", EET}, - {"Asia/Jakarta", WIT}, - {"Asia/Jayapura", new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Oriental", "EIT", - "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Oriental", "EIST"}}, - {"Asia/Kabul", new String[] {"Fuso hor\u00e1rio do Afeganist\u00e3o", "AFT", - "Fuso hor\u00e1rio de ver\u00e3o do Afeganist\u00e3o", "AFST"}}, - {"Asia/Kamchatka", new String[] {"Fuso hor\u00e1rio de Petropavlovsk-Kamchatski", "PETT", - "Fuso hor\u00e1rio de ver\u00e3o de Petropavlovsk-Kamchatski", "PETST"}}, - {"Asia/Karachi", PKT}, - {"Asia/Kashgar", CTT}, - {"Asia/Kathmandu", NPT}, - {"Asia/Katmandu", NPT}, - {"Asia/Kolkata", IST}, - {"Asia/Krasnoyarsk", new String[] {"Fuso hor\u00e1rio de Krasnoyarsk", "KRAT", - "Fuso hor\u00e1rio de ver\u00e3o de Krasnoyarsk", "KRAST"}}, - {"Asia/Kuala_Lumpur", MYT}, - {"Asia/Kuching", MYT}, - {"Asia/Kuwait", ARAST}, - {"Asia/Macao", CTT}, - {"Asia/Macau", CTT}, - {"Asia/Magadan", new String[] {"Fuso hor\u00e1rio de Magadan", "MAGT", - "Fuso hor\u00e1rio de ver\u00e3o de Magadan", "MAGST"}}, - {"Asia/Makassar", CIT}, - {"Asia/Manila", new String[] {"Fuso hor\u00e1rio das Filipinas", "PHT", - "Fuso hor\u00e1rio de ver\u00e3o das Filipinas", "PHST"}}, - {"Asia/Muscat", GST}, - {"Asia/Nicosia", EET}, - {"Asia/Novokuznetsk", NOVT}, - {"Asia/Novosibirsk", NOVT}, - {"Asia/Oral", new String[] {"Fuso hor\u00e1rio de Uralsk", "ORAT", - "Fuso hor\u00e1rio de ver\u00e3o de Uralsk", "ORAST"}}, - {"Asia/Omsk", new String[] {"Fuso hor\u00e1rio de Omsk", "OMST", - "Fuso hor\u00e1rio de ver\u00e3o de Omsk", "OMSST"}}, - {"Asia/Phnom_Penh", ICT}, - {"Asia/Pontianak", WIT}, - {"Asia/Pyongyang", KST}, - {"Asia/Qatar", ARAST}, - {"Asia/Qyzylorda", new String[] {"Fuso hor\u00e1rio de Kizil-Orda", "QYZT", - "Fuso hor\u00e1rio de ver\u00e3o de Kizil-Orda", "QYZST"}}, - {"Asia/Rangoon", new String[] {"Fuso hor\u00e1rio de Mianmar", "MMT", - "Fuso hor\u00e1rio de ver\u00e3o de Mianmar", "MMST"}}, - {"Asia/Riyadh", ARAST}, - {"Asia/Saigon", ICT}, - {"Asia/Sakhalin", new String[] {"Fuso hor\u00e1rio de Sakhalina", "SAKT", - "Fuso hor\u00e1rio de ver\u00e3o de Sakhalina", "SAKST"}}, - {"Asia/Samarkand", UZT}, - {"Asia/Seoul", KST}, - {"Asia/Singapore", SGT}, - {"Asia/Taipei", CTT}, - {"Asia/Tel_Aviv", ISRAEL}, - {"Asia/Tashkent", UZT}, - {"Asia/Tbilisi", new String[] {"Fuso hor\u00e1rio da Ge\u00f3rgia", "GET", - "Fuso hor\u00e1rio de ver\u00e3o da Ge\u00f3rgia", "GEST"}}, - {"Asia/Tehran", IRT}, - {"Asia/Thimbu", BTT}, - {"Asia/Thimphu", BTT}, - {"Asia/Ujung_Pandang", CIT}, - {"Asia/Ulaanbaatar", ULAT}, - {"Asia/Ulan_Bator", ULAT}, - {"Asia/Urumqi", CTT}, - {"Asia/Vientiane", ICT}, - {"Asia/Vladivostok", new String[] {"Fuso hor\u00e1rio de Vladivostok", "VLAT", - "Fuso hor\u00e1rio de ver\u00e3o de Vladivostok", "VLAST"}}, - {"Asia/Yakutsk", new String[] {"Fuso hor\u00e1rio de Yakutsk", "YAKT", - "Fuso hor\u00e1rio de ver\u00e3o de Yakutsk", "YAKST"}}, - {"Asia/Yekaterinburg", new String[] {"Fuso hor\u00e1rio de Yekaterinburgo", "YEKT", - "Fuso hor\u00e1rio de ver\u00e3o de Yekaterinburgo", "YEKST"}}, - {"Asia/Yerevan", ARMT}, - {"Atlantic/Azores", new String[] {"Fuso hor\u00e1rio das A\u00e7ores", "AZOT", - "Fuso hor\u00e1rio de ver\u00e3o das A\u00e7ores", "AZOST"}}, - {"Atlantic/Bermuda", AST}, - {"Atlantic/Canary", WET}, - {"Atlantic/Cape_Verde", new String[] {"Fuso hor\u00e1rio de Cabo Verde", "CVT", - "Fuso hor\u00e1rio de ver\u00e3o de Cabo Verde", "CVST"}}, - {"Atlantic/Faeroe", WET}, - {"Atlantic/Faroe", WET}, - {"Atlantic/Jan_Mayen", CET}, - {"Atlantic/Madeira", WET}, - {"Atlantic/Reykjavik", GMT}, - {"Atlantic/South_Georgia", new String[] {"Fuso hor\u00e1rio padr\u00e3o da Ge\u00f3rgia do Sul", "GST", - "Hor\u00e1rio de luz natural da Ge\u00f3rgia do Sul", "GDT"}}, - {"Atlantic/St_Helena", GMT}, - {"Atlantic/Stanley", new String[] {"Fuso hor\u00e1rio das Ilhas Falkland", "FKT", - "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Falkland", "FKST"}}, - {"Australia/ACT", EST_NSW}, - {"Australia/Adelaide", ADELAIDE}, - {"Australia/Brisbane", BRISBANE}, - {"Australia/Broken_Hill", BROKEN_HILL}, - {"Australia/Canberra", EST_NSW}, - {"Australia/Currie", EST_NSW}, - {"Australia/Darwin", DARWIN}, - {"Australia/Eucla", new String[] {"Fuso hor\u00e1rio ocidental central (Austr\u00e1lia)", "CWST", - "Fuso hor\u00e1rio de ver\u00e3o ocidental central (Austr\u00e1lia)", "CWST"}}, - {"Australia/Hobart", TASMANIA}, - {"Australia/LHI", LORD_HOWE}, - {"Australia/Lindeman", BRISBANE}, - {"Australia/Lord_Howe", LORD_HOWE}, - {"Australia/Melbourne", VICTORIA}, - {"Australia/North", DARWIN}, - {"Australia/NSW", EST_NSW}, - {"Australia/Perth", WST_AUS}, - {"Australia/Queensland", BRISBANE}, - {"Australia/South", ADELAIDE}, - {"Australia/Sydney", EST_NSW}, - {"Australia/Tasmania", TASMANIA}, - {"Australia/Victoria", VICTORIA}, - {"Australia/West", WST_AUS}, - {"Australia/Yancowinna", BROKEN_HILL}, - {"BET", BRT}, - {"BST", BDT}, - {"Brazil/Acre", AMT}, - {"Brazil/DeNoronha", NORONHA}, - {"Brazil/East", BRT}, - {"Brazil/West", AMT}, - {"Canada/Atlantic", AST}, - {"Canada/Central", CST}, - {"Canada/East-Saskatchewan", CST}, - {"Canada/Eastern", EST}, - {"Canada/Mountain", MST}, - {"Canada/Newfoundland", NST}, - {"Canada/Pacific", PST}, - {"Canada/Yukon", PST}, - {"Canada/Saskatchewan", CST}, - {"CAT", CAT}, - {"CET", CET}, - {"Chile/Continental", CLT}, - {"Chile/EasterIsland", EASTER}, - {"CST6CDT", CST}, - {"Cuba", CUBA}, - {"EAT", EAT}, - {"EET", EET}, - {"Egypt", EET}, - {"Eire", DUBLIN}, - {"EST5EDT", EST}, - {"Etc/Greenwich", GMT}, - {"Etc/UCT", UTC}, - {"Etc/Universal", UTC}, - {"Etc/UTC", UTC}, - {"Etc/Zulu", UTC}, - {"Europe/Amsterdam", CET}, - {"Europe/Andorra", CET}, - {"Europe/Athens", EET}, - {"Europe/Belfast", GMTBST}, - {"Europe/Belgrade", CET}, - {"Europe/Berlin", CET}, - {"Europe/Bratislava", CET}, - {"Europe/Brussels", CET}, - {"Europe/Budapest", CET}, - {"Europe/Chisinau", EET}, - {"Europe/Copenhagen", CET}, - {"Europe/Dublin", DUBLIN}, - {"Europe/Gibraltar", CET}, + {"America/Ojinaga", MST}, + {"America/Panama", EST}, + {"America/Pangnirtung", EST}, + {"America/Paramaribo", new String[] {"Fuso hor\u00e1rio do Suriname", "SRT", + "Fuso hor\u00e1rio de ver\u00e3o do Suriname", "SRST"}}, + {"America/Port-au-Prince", EST}, + {"America/Port_of_Spain", AST}, + {"America/Porto_Acre", AMT}, + {"America/Porto_Velho", AMT}, + {"America/Puerto_Rico", AST}, + {"America/Rainy_River", CST}, + {"America/Rankin_Inlet", CST}, + {"America/Recife", BRT}, + {"America/Regina", CST}, + {"America/Resolute", RST}, + {"America/Rio_Branco", AMT}, + {"America/Rosario", AGT}, + {"America/Santa_Isabel", PST}, + {"America/Santarem", BRT}, + {"America/Santiago", CLT}, + {"America/Santo_Domingo", AST}, + {"America/Sao_Paulo", BRT}, + {"America/Scoresbysund", EGT}, + {"America/Shiprock", MST}, + {"America/St_Barthelemy", AST}, + {"America/St_Kitts", AST}, + {"America/St_Lucia", AST}, + {"America/St_Thomas", AST}, + {"America/St_Vincent", AST}, + {"America/Swift_Current", CST}, + {"America/Tegucigalpa", CST}, + {"America/Thule", AST}, + {"America/Thunder_Bay", EST}, + {"America/Tijuana", PST}, + {"America/Toronto", EST}, + {"America/Tortola", AST}, + {"America/Vancouver", PST}, + {"America/Virgin", AST}, + {"America/Whitehorse", PST}, + {"America/Winnipeg", CST}, + {"America/Yakutat", AKST}, + {"America/Yellowknife", MST}, + {"Antarctica/Casey", WST_AUS}, + {"Antarctica/Davis", new String[] {"Fuso hor\u00e1rio de Davis", "DAVT", + "Fuso hor\u00e1rio de ver\u00e3o de Davis", "DAVST"}}, + {"Antarctica/DumontDUrville", new String[] {"Fuso hor\u00e1rio de Dumont-d'Urville", "DDUT", + "Fuso hor\u00e1rio de ver\u00e3o de Dumont-d'Urville", "DDUST"}}, + {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST", + "Macquarie Island Summer Time", "MIST"}}, + {"Antarctica/Mawson", new String[] {"Fuso hor\u00e1rio de Mawson", "MAWT", + "Fuso hor\u00e1rio de ver\u00e3o de Mawson", "MAWST"}}, + {"Antarctica/McMurdo", NZST}, + {"Antarctica/Palmer", CLT}, + {"Antarctica/Rothera", new String[] {"Fuso hor\u00e1rio de Rothera", "ROTT", + "Fuso hor\u00e1rio de ver\u00e3o de Rothera", "ROTST"}}, + {"Antarctica/South_Pole", NZST}, + {"Antarctica/Syowa", new String[] {"Fuso hor\u00e1rio de Syowa", "SYOT", + "Fuso hor\u00e1rio de ver\u00e3o de Syowa", "SYOST"}}, + {"Antarctica/Vostok", new String[] {"Fuso hor\u00e1rio de Vostok", "VOST", + "Fuso hor\u00e1rio de ver\u00e3o de Vostok", "VOSST"}}, + {"Arctic/Longyearbyen", CET}, + {"Asia/Aden", ARAST}, + {"Asia/Almaty", new String[] {"Fuso hor\u00e1rio de Alma-Ata", "ALMT", + "Fuso hor\u00e1rio de ver\u00e3o de Alma-Ata", "ALMST"}}, + {"Asia/Amman", EET}, + {"Asia/Anadyr", new String[] {"Fuso hor\u00e1rio de Anadyr", "ANAT", + "Fuso hor\u00e1rio de ver\u00e3o de Anadyr", "ANAST"}}, + {"Asia/Aqtau", new String[] {"Fuso hor\u00e1rio de Aqtau", "AQTT", + "Fuso hor\u00e1rio de ver\u00e3o de Aqtau", "AQTST"}}, + {"Asia/Aqtobe", new String[] {"Fuso hor\u00e1rio de Aqtobe", "AQTT", + "Fuso hor\u00e1rio de ver\u00e3o de Aqtobe", "AQTST"}}, + {"Asia/Ashgabat", TMT}, + {"Asia/Ashkhabad", TMT}, + {"Asia/Baghdad", ARAST}, + {"Asia/Bahrain", ARAST}, + {"Asia/Baku", new String[] {"Fuso hor\u00e1rio do Azerbaij\u00e3o", "AZT", + "Fuso hor\u00e1rio de ver\u00e3o do Azerbaij\u00e3o", "AZST"}}, + {"Asia/Bangkok", ICT}, + {"Asia/Beirut", EET}, + {"Asia/Bishkek", new String[] {"Fuso hor\u00e1rio do Quirguist\u00e3o", "KGT", + "Fuso hor\u00e1rio de ver\u00e3o do Quirguist\u00e3o", "KGST"}}, + {"Asia/Brunei", new String[] {"Fuso hor\u00e1rio de Brunei", "BNT", + "Fuso hor\u00e1rio de ver\u00e3o de Brunei", "BNST"}}, + {"Asia/Calcutta", IST}, + {"Asia/Choibalsan", new String[] {"Fuso hor\u00e1rio de Choibalsan", "CHOT", + "Fuso hor\u00e1rio de ver\u00e3o de Choibalsan", "CHOST"}}, + {"Asia/Chongqing", CTT}, + {"Asia/Chungking", CTT}, + {"Asia/Colombo", IST}, + {"Asia/Dacca", BDT}, + {"Asia/Dhaka", BDT}, + {"Asia/Dili", new String[] {"Fuso hor\u00e1rio do Timor-Leste", "TLT", + "Fuso hor\u00e1rio de ver\u00e3o do Timor-Leste", "TLST"}}, + {"Asia/Damascus", EET}, + {"Asia/Dubai", GST}, + {"Asia/Dushanbe", new String[] {"Fuso hor\u00e1rio do Tadjiquist\u00e3o", "TJT", + "Fuso hor\u00e1rio de ver\u00e3o do Tadjiquist\u00e3o", "TJST"}}, + {"Asia/Gaza", EET}, + {"Asia/Harbin", CTT}, + {"Asia/Ho_Chi_Minh", ICT}, + {"Asia/Hong_Kong", HKT}, + {"Asia/Hovd", new String[] {"Fuso hor\u00e1rio de Hovd", "HOVT", + "Fuso hor\u00e1rio de ver\u00e3o de Hovd", "HOVST"}}, + {"Asia/Irkutsk", new String[] {"Fuso hor\u00e1rio de Irkutsk", "IRKT", + "Fuso hor\u00e1rio de ver\u00e3o de Irkutsk", "IRKST"}}, + {"Asia/Istanbul", EET}, + {"Asia/Jakarta", WIT}, + {"Asia/Jayapura", new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Oriental", "EIT", + "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Oriental", "EIST"}}, + {"Asia/Kabul", new String[] {"Fuso hor\u00e1rio do Afeganist\u00e3o", "AFT", + "Fuso hor\u00e1rio de ver\u00e3o do Afeganist\u00e3o", "AFST"}}, + {"Asia/Kamchatka", new String[] {"Fuso hor\u00e1rio de Petropavlovsk-Kamchatski", "PETT", + "Fuso hor\u00e1rio de ver\u00e3o de Petropavlovsk-Kamchatski", "PETST"}}, + {"Asia/Karachi", PKT}, + {"Asia/Kashgar", CTT}, + {"Asia/Kathmandu", NPT}, + {"Asia/Katmandu", NPT}, + {"Asia/Kolkata", IST}, + {"Asia/Krasnoyarsk", new String[] {"Fuso hor\u00e1rio de Krasnoyarsk", "KRAT", + "Fuso hor\u00e1rio de ver\u00e3o de Krasnoyarsk", "KRAST"}}, + {"Asia/Kuala_Lumpur", MYT}, + {"Asia/Kuching", MYT}, + {"Asia/Kuwait", ARAST}, + {"Asia/Macao", CTT}, + {"Asia/Macau", CTT}, + {"Asia/Magadan", new String[] {"Fuso hor\u00e1rio de Magadan", "MAGT", + "Fuso hor\u00e1rio de ver\u00e3o de Magadan", "MAGST"}}, + {"Asia/Makassar", CIT}, + {"Asia/Manila", new String[] {"Fuso hor\u00e1rio das Filipinas", "PHT", + "Fuso hor\u00e1rio de ver\u00e3o das Filipinas", "PHST"}}, + {"Asia/Muscat", GST}, + {"Asia/Nicosia", EET}, + {"Asia/Novokuznetsk", NOVT}, + {"Asia/Novosibirsk", NOVT}, + {"Asia/Oral", new String[] {"Fuso hor\u00e1rio de Uralsk", "ORAT", + "Fuso hor\u00e1rio de ver\u00e3o de Uralsk", "ORAST"}}, + {"Asia/Omsk", new String[] {"Fuso hor\u00e1rio de Omsk", "OMST", + "Fuso hor\u00e1rio de ver\u00e3o de Omsk", "OMSST"}}, + {"Asia/Phnom_Penh", ICT}, + {"Asia/Pontianak", WIT}, + {"Asia/Pyongyang", KST}, + {"Asia/Qatar", ARAST}, + {"Asia/Qyzylorda", new String[] {"Fuso hor\u00e1rio de Kizil-Orda", "QYZT", + "Fuso hor\u00e1rio de ver\u00e3o de Kizil-Orda", "QYZST"}}, + {"Asia/Rangoon", new String[] {"Fuso hor\u00e1rio de Mianmar", "MMT", + "Fuso hor\u00e1rio de ver\u00e3o de Mianmar", "MMST"}}, + {"Asia/Riyadh", ARAST}, + {"Asia/Saigon", ICT}, + {"Asia/Sakhalin", new String[] {"Fuso hor\u00e1rio de Sakhalina", "SAKT", + "Fuso hor\u00e1rio de ver\u00e3o de Sakhalina", "SAKST"}}, + {"Asia/Samarkand", UZT}, + {"Asia/Seoul", KST}, + {"Asia/Singapore", SGT}, + {"Asia/Taipei", CTT}, + {"Asia/Tel_Aviv", ISRAEL}, + {"Asia/Tashkent", UZT}, + {"Asia/Tbilisi", new String[] {"Fuso hor\u00e1rio da Ge\u00f3rgia", "GET", + "Fuso hor\u00e1rio de ver\u00e3o da Ge\u00f3rgia", "GEST"}}, + {"Asia/Tehran", IRT}, + {"Asia/Thimbu", BTT}, + {"Asia/Thimphu", BTT}, + {"Asia/Ujung_Pandang", CIT}, + {"Asia/Ulaanbaatar", ULAT}, + {"Asia/Ulan_Bator", ULAT}, + {"Asia/Urumqi", CTT}, + {"Asia/Vientiane", ICT}, + {"Asia/Vladivostok", new String[] {"Fuso hor\u00e1rio de Vladivostok", "VLAT", + "Fuso hor\u00e1rio de ver\u00e3o de Vladivostok", "VLAST"}}, + {"Asia/Yakutsk", new String[] {"Fuso hor\u00e1rio de Yakutsk", "YAKT", + "Fuso hor\u00e1rio de ver\u00e3o de Yakutsk", "YAKST"}}, + {"Asia/Yekaterinburg", new String[] {"Fuso hor\u00e1rio de Yekaterinburgo", "YEKT", + "Fuso hor\u00e1rio de ver\u00e3o de Yekaterinburgo", "YEKST"}}, + {"Asia/Yerevan", ARMT}, + {"Atlantic/Azores", new String[] {"Fuso hor\u00e1rio das A\u00e7ores", "AZOT", + "Fuso hor\u00e1rio de ver\u00e3o das A\u00e7ores", "AZOST"}}, + {"Atlantic/Bermuda", AST}, + {"Atlantic/Canary", WET}, + {"Atlantic/Cape_Verde", new String[] {"Fuso hor\u00e1rio de Cabo Verde", "CVT", + "Fuso hor\u00e1rio de ver\u00e3o de Cabo Verde", "CVST"}}, + {"Atlantic/Faeroe", WET}, + {"Atlantic/Faroe", WET}, + {"Atlantic/Jan_Mayen", CET}, + {"Atlantic/Madeira", WET}, + {"Atlantic/Reykjavik", GMT}, + {"Atlantic/South_Georgia", new String[] {"Fuso hor\u00e1rio padr\u00e3o da Ge\u00f3rgia do Sul", "GST", + "Hor\u00e1rio de luz natural da Ge\u00f3rgia do Sul", "GDT"}}, + {"Atlantic/St_Helena", GMT}, + {"Atlantic/Stanley", new String[] {"Fuso hor\u00e1rio das Ilhas Falkland", "FKT", + "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Falkland", "FKST"}}, + {"Australia/ACT", EST_NSW}, + {"Australia/Adelaide", ADELAIDE}, + {"Australia/Brisbane", BRISBANE}, + {"Australia/Broken_Hill", BROKEN_HILL}, + {"Australia/Canberra", EST_NSW}, + {"Australia/Currie", EST_NSW}, + {"Australia/Darwin", DARWIN}, + {"Australia/Eucla", new String[] {"Fuso hor\u00e1rio ocidental central (Austr\u00e1lia)", "CWST", + "Fuso hor\u00e1rio de ver\u00e3o ocidental central (Austr\u00e1lia)", "CWST"}}, + {"Australia/Hobart", TASMANIA}, + {"Australia/LHI", LORD_HOWE}, + {"Australia/Lindeman", BRISBANE}, + {"Australia/Lord_Howe", LORD_HOWE}, + {"Australia/Melbourne", VICTORIA}, + {"Australia/North", DARWIN}, + {"Australia/NSW", EST_NSW}, + {"Australia/Perth", WST_AUS}, + {"Australia/Queensland", BRISBANE}, + {"Australia/South", ADELAIDE}, + {"Australia/Sydney", EST_NSW}, + {"Australia/Tasmania", TASMANIA}, + {"Australia/Victoria", VICTORIA}, + {"Australia/West", WST_AUS}, + {"Australia/Yancowinna", BROKEN_HILL}, + {"BET", BRT}, + {"BST", BDT}, + {"Brazil/Acre", AMT}, + {"Brazil/DeNoronha", NORONHA}, + {"Brazil/East", BRT}, + {"Brazil/West", AMT}, + {"Canada/Atlantic", AST}, + {"Canada/Central", CST}, + {"Canada/East-Saskatchewan", CST}, + {"Canada/Eastern", EST}, + {"Canada/Mountain", MST}, + {"Canada/Newfoundland", NST}, + {"Canada/Pacific", PST}, + {"Canada/Yukon", PST}, + {"Canada/Saskatchewan", CST}, + {"CAT", CAT}, + {"CET", CET}, + {"Chile/Continental", CLT}, + {"Chile/EasterIsland", EASTER}, + {"CST6CDT", CST}, + {"Cuba", CUBA}, + {"EAT", EAT}, + {"EET", EET}, + {"Egypt", EET}, + {"Eire", DUBLIN}, + {"EST5EDT", EST}, + {"Etc/Greenwich", GMT}, + {"Etc/UCT", UTC}, + {"Etc/Universal", UTC}, + {"Etc/UTC", UTC}, + {"Etc/Zulu", UTC}, + {"Europe/Amsterdam", CET}, + {"Europe/Andorra", CET}, + {"Europe/Athens", EET}, + {"Europe/Belfast", GMTBST}, + {"Europe/Belgrade", CET}, + {"Europe/Berlin", CET}, + {"Europe/Bratislava", CET}, + {"Europe/Brussels", CET}, + {"Europe/Budapest", CET}, + {"Europe/Chisinau", EET}, + {"Europe/Copenhagen", CET}, + {"Europe/Dublin", DUBLIN}, + {"Europe/Gibraltar", CET}, {"Europe/Guernsey", GMTBST}, - {"Europe/Helsinki", EET}, + {"Europe/Helsinki", EET}, {"Europe/Isle_of_Man", GMTBST}, - {"Europe/Istanbul", EET}, + {"Europe/Istanbul", EET}, {"Europe/Jersey", GMTBST}, - {"Europe/Kaliningrad", EET}, - {"Europe/Kiev", EET}, - {"Europe/Lisbon", WET}, - {"Europe/Ljubljana", CET}, - {"Europe/London", GMTBST}, - {"Europe/Luxembourg", CET}, - {"Europe/Madrid", CET}, - {"Europe/Malta", CET}, - {"Europe/Mariehamn", EET}, - {"Europe/Minsk", EET}, - {"Europe/Monaco", CET}, - {"Europe/Moscow", MSK}, - {"Europe/Nicosia", EET}, - {"Europe/Oslo", CET}, - {"Europe/Podgorica", CET}, - {"Europe/Prague", CET}, - {"Europe/Riga", EET}, - {"Europe/Rome", CET}, - {"Europe/Samara", new String[] {"Fuso hor\u00e1rio de Samara", "SAMT", - "Fuso hor\u00e1rio de ver\u00e3o de Samara", "SAMST"}}, - {"Europe/San_Marino", CET}, - {"Europe/Sarajevo", CET}, - {"Europe/Simferopol", EET}, - {"Europe/Skopje", CET}, - {"Europe/Sofia", EET}, - {"Europe/Stockholm", CET}, - {"Europe/Tallinn", EET}, - {"Europe/Tirane", CET}, - {"Europe/Tiraspol", EET}, - {"Europe/Uzhgorod", EET}, - {"Europe/Vaduz", CET}, - {"Europe/Vatican", CET}, - {"Europe/Vienna", CET}, - {"Europe/Vilnius", EET}, + {"Europe/Kaliningrad", EET}, + {"Europe/Kiev", EET}, + {"Europe/Lisbon", WET}, + {"Europe/Ljubljana", CET}, + {"Europe/London", GMTBST}, + {"Europe/Luxembourg", CET}, + {"Europe/Madrid", CET}, + {"Europe/Malta", CET}, + {"Europe/Mariehamn", EET}, + {"Europe/Minsk", EET}, + {"Europe/Monaco", CET}, + {"Europe/Moscow", MSK}, + {"Europe/Nicosia", EET}, + {"Europe/Oslo", CET}, + {"Europe/Podgorica", CET}, + {"Europe/Prague", CET}, + {"Europe/Riga", EET}, + {"Europe/Rome", CET}, + {"Europe/Samara", new String[] {"Fuso hor\u00e1rio de Samara", "SAMT", + "Fuso hor\u00e1rio de ver\u00e3o de Samara", "SAMST"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, + {"Europe/Simferopol", EET}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, + {"Europe/Tallinn", EET}, + {"Europe/Tirane", CET}, + {"Europe/Tiraspol", EET}, + {"Europe/Uzhgorod", EET}, + {"Europe/Vaduz", CET}, + {"Europe/Vatican", CET}, + {"Europe/Vienna", CET}, + {"Europe/Vilnius", EET}, {"Europe/Volgograd", new String[] {"Fuso hor\u00e1rio de Volgogrado", "VOLT", "Fuso hor\u00e1rio de ver\u00e3o de Volgogrado", "VOLST"}}, - {"Europe/Warsaw", CET}, - {"Europe/Zagreb", CET}, - {"Europe/Zaporozhye", EET}, - {"Europe/Zurich", CET}, - {"GB", GMTBST}, - {"GB-Eire", GMTBST}, - {"Greenwich", GMT}, - {"Hongkong", HKT}, - {"Iceland", GMT}, - {"Iran", IRT}, - {"IST", IST}, - {"Indian/Antananarivo", EAT}, - {"Indian/Chagos", new String[] {"Fuso hor\u00e1rio dos territ\u00f3rios do Oceano \u00cdndico", "IOT", - "Fuso hor\u00e1rio de ver\u00e3o dos territ\u00f3rios do Oceano \u00cdndico", "IOST"}}, - {"Indian/Christmas", new String[] {"Fuso hor\u00e1rio das Ilhas Christmas", "CXT", - "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Christmas", "CXST"}}, - {"Indian/Cocos", new String[] {"Fuso hor\u00e1rio das Ilhas Cocos", "CCT", - "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cocos", "CCST"}}, - {"Indian/Comoro", EAT}, - {"Indian/Kerguelen", new String[] {"Fuso hor\u00e1rio das Terras Austrais e Ant\u00e1rticas Francesas", "TFT", - "Fuso hor\u00e1rio de ver\u00e3o das Terras Austrais e Ant\u00e1rticas Francesas", "TFST"}}, - {"Indian/Mahe", new String[] {"Fuso hor\u00e1rio das Seychelles", "SCT", - "Fuso hor\u00e1rio de ver\u00e3o das Seychelles", "SCST"}}, - {"Indian/Maldives", new String[] {"Fuso hor\u00e1rio das Maldivas", "MVT", - "Fuso hor\u00e1rio de ver\u00e3o das Maldivas", "MVST"}}, - {"Indian/Mauritius", new String[] {"Fuso hor\u00e1rio das Ilhas Maur\u00edcio", "MUT", - "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Maur\u00edcio", "MUST"}}, - {"Indian/Mayotte", EAT}, - {"Indian/Reunion", new String[] {"Fuso hor\u00e1rio de Reuni\u00e3o", "RET", - "Fuso hor\u00e1rio de ver\u00e3o de Reuni\u00e3o", "REST"}}, - {"Israel", ISRAEL}, - {"Jamaica", EST}, - {"Japan", JST}, - {"Kwajalein", MHT}, - {"Libya", EET}, - {"MET", new String[] {"Fuso hor\u00e1rio da Europa M\u00e9dia", "MET", - "Fuso hor\u00e1rio de ver\u00e3o da Europa M\u00e9dia", "MEST"}}, - {"Mexico/BajaNorte", PST}, - {"Mexico/BajaSur", MST}, - {"Mexico/General", CST}, - {"MIT", WST_SAMOA}, - {"MST7MDT", MST}, - {"Navajo", MST}, - {"NET", ARMT}, - {"NST", NZST}, - {"NZ", NZST}, - {"NZ-CHAT", CHAST}, - {"PLT", PKT}, - {"Portugal", WET}, - {"PRT", AST}, - {"Pacific/Apia", WST_SAMOA}, - {"Pacific/Auckland", NZST}, - {"Pacific/Chatham", CHAST}, - {"Pacific/Chuuk", TRUT}, - {"Pacific/Easter", EASTER}, - {"Pacific/Efate", new String[] {"Fuso hor\u00e1rio de Vanuatu", "VUT", - "Fuso hor\u00e1rio de ver\u00e3o de Vanuatu", "VUST"}}, - {"Pacific/Enderbury", new String[] {"Fuso hor\u00e1rio das Ilhas F\u00e9nix", "PHOT", - "Fuso hor\u00e1rio de ver\u00e3o das Ilhas F\u00e9nix", "PHOST"}}, - {"Pacific/Fakaofo", new String[] {"Fuso hor\u00e1rio de Tokelau", "TKT", - "Fuso hor\u00e1rio de ver\u00e3o de Tokelau", "TKST"}}, - {"Pacific/Fiji", new String[] {"Fuso hor\u00e1rio de Fiji", "FJT", - "Fuso hor\u00e1rio de ver\u00e3o de Fiji", "FJST"}}, - {"Pacific/Funafuti", new String[] {"Fuso hor\u00e1rio de Tuvalu", "TVT", - "Fuso hor\u00e1rio de ver\u00e3o de Tuvalu", "TVST"}}, - {"Pacific/Galapagos", new String[] {"Fuso hor\u00e1rio das Ilhas Gal\u00e1pagos", "GALT", - "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gal\u00e1pagos", "GALST"}}, - {"Pacific/Gambier", GAMBIER}, - {"Pacific/Guadalcanal", SBT}, - {"Pacific/Guam", ChST}, - {"Pacific/Johnston", HST}, - {"Pacific/Kiritimati", new String[] {"Fuso hor\u00e1rio das Esp\u00f3rades Equatoriais", "LINT", - "Fuso hor\u00e1rio de ver\u00e3o das Esp\u00f3rades Equatoriais", "LINST"}}, - {"Pacific/Kosrae", new String[] {"Fuso hor\u00e1rio de Kosrae", "KOST", - "Fuso hor\u00e1rio de ver\u00e3o de Kosrae", "KOSST"}}, - {"Pacific/Kwajalein", MHT}, - {"Pacific/Majuro", MHT}, - {"Pacific/Marquesas", new String[] {"Fuso hor\u00e1rio das Ilhas Marquesas", "MART", - "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marquesas", "MARST"}}, - {"Pacific/Midway", SAMOA}, - {"Pacific/Nauru", new String[] {"Fuso hor\u00e1rio de Nauru", "NRT", - "Fuso hor\u00e1rio de ver\u00e3o de Nauru", "NRST"}}, - {"Pacific/Niue", new String[] {"Fuso hor\u00e1rio de Niue", "NUT", - "Fuso hor\u00e1rio de ver\u00e3o de Niue", "NUST"}}, - {"Pacific/Norfolk", new String[] {"Fuso hor\u00e1rio da Ilha de Norfolk", "NFT", - "Fuso hor\u00e1rio de ver\u00e3o da Ilha de Norfolk", "NFST"}}, - {"Pacific/Noumea", new String[] {"Fuso hor\u00e1rio da Nova Caled\u00f4nia", "NCT", - "Fuso hor\u00e1rio de ver\u00e3o da Nova Caled\u00f4nia", "NCST"}}, - {"Pacific/Pago_Pago", SAMOA}, - {"Pacific/Palau", new String[] {"Fuso hor\u00e1rio de Palau", "PWT", - "Fuso hor\u00e1rio de ver\u00e3o de Palau", "PWST"}}, - {"Pacific/Pitcairn", PITCAIRN}, - {"Pacific/Pohnpei", PONT}, - {"Pacific/Ponape", PONT}, - {"Pacific/Port_Moresby", new String[] {"Fuso hor\u00e1rio de Papua-Nova Guin\u00e9", "PGT", - "Fuso hor\u00e1rio de ver\u00e3o de Papua-Nova Guin\u00e9", "PGST"}}, - {"Pacific/Rarotonga", new String[] {"Fuso hor\u00e1rio das Ilhas Cook", "CKT", - "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cook", "CKHST"}}, - {"Pacific/Saipan", ChST}, - {"Pacific/Samoa", SAMOA}, - {"Pacific/Tahiti", new String[] {"Fuso hor\u00e1rio do Taiti", "TAHT", - "Fuso hor\u00e1rio de ver\u00e3o do Taiti", "TAHST"}}, - {"Pacific/Tarawa", new String[] {"Fuso hor\u00e1rio das Ilhas Gilbert", "GILT", - "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gilbert", "GILST"}}, - {"Pacific/Tongatapu", new String[] {"Fuso hor\u00e1rio de Tonga", "TOT", - "Fuso hor\u00e1rio de ver\u00e3o de Tonga", "TOST"}}, - {"Pacific/Truk", TRUT}, - {"Pacific/Wake", new String[] {"Fuso hor\u00e1rio de Wake", "WAKT", - "Fuso hor\u00e1rio de ver\u00e3o de Wake", "WAKST"}}, - {"Pacific/Wallis", new String[] {"Fuso hor\u00e1rio de Wallis e Futuna", "WFT", - "Fuso hor\u00e1rio de ver\u00e3o de Wallis e Futuna", "WFST"}}, - {"Pacific/Yap", TRUT}, - {"Poland", CET}, - {"PRC", CTT}, - {"PST8PDT", PST}, - {"ROK", KST}, - {"Singapore", SGT}, - {"SST", SBT}, - {"SystemV/AST4", AST}, - {"SystemV/AST4ADT", AST}, - {"SystemV/CST6", CST}, - {"SystemV/CST6CDT", CST}, - {"SystemV/EST5", EST}, - {"SystemV/EST5EDT", EST}, - {"SystemV/HST10", HST}, - {"SystemV/MST7", MST}, - {"SystemV/MST7MDT", MST}, - {"SystemV/PST8", PST}, - {"SystemV/PST8PDT", PST}, - {"SystemV/YST9", AKST}, - {"SystemV/YST9YDT", AKST}, - {"Turkey", EET}, - {"UCT", UTC}, - {"Universal", UTC}, - {"US/Alaska", AKST}, - {"US/Aleutian", HAST}, - {"US/Arizona", MST}, - {"US/Central", CST}, - {"US/Eastern", EST}, - {"US/Hawaii", HST}, - {"US/Indiana-Starke", CST}, - {"US/East-Indiana", EST}, - {"US/Michigan", EST}, - {"US/Mountain", MST}, - {"US/Pacific", PST}, - {"US/Pacific-New", PST}, - {"US/Samoa", SAMOA}, - {"UTC", UTC}, - {"VST", ICT}, - {"W-SU", MSK}, - {"WET", WET}, - {"Zulu", UTC}, + {"Europe/Warsaw", CET}, + {"Europe/Zagreb", CET}, + {"Europe/Zaporozhye", EET}, + {"Europe/Zurich", CET}, + {"GB", GMTBST}, + {"GB-Eire", GMTBST}, + {"Greenwich", GMT}, + {"Hongkong", HKT}, + {"Iceland", GMT}, + {"Iran", IRT}, + {"IST", IST}, + {"Indian/Antananarivo", EAT}, + {"Indian/Chagos", new String[] {"Fuso hor\u00e1rio dos territ\u00f3rios do Oceano \u00cdndico", "IOT", + "Fuso hor\u00e1rio de ver\u00e3o dos territ\u00f3rios do Oceano \u00cdndico", "IOST"}}, + {"Indian/Christmas", new String[] {"Fuso hor\u00e1rio das Ilhas Christmas", "CXT", + "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Christmas", "CXST"}}, + {"Indian/Cocos", new String[] {"Fuso hor\u00e1rio das Ilhas Cocos", "CCT", + "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cocos", "CCST"}}, + {"Indian/Comoro", EAT}, + {"Indian/Kerguelen", new String[] {"Fuso hor\u00e1rio das Terras Austrais e Ant\u00e1rticas Francesas", "TFT", + "Fuso hor\u00e1rio de ver\u00e3o das Terras Austrais e Ant\u00e1rticas Francesas", "TFST"}}, + {"Indian/Mahe", new String[] {"Fuso hor\u00e1rio das Seychelles", "SCT", + "Fuso hor\u00e1rio de ver\u00e3o das Seychelles", "SCST"}}, + {"Indian/Maldives", new String[] {"Fuso hor\u00e1rio das Maldivas", "MVT", + "Fuso hor\u00e1rio de ver\u00e3o das Maldivas", "MVST"}}, + {"Indian/Mauritius", new String[] {"Fuso hor\u00e1rio das Ilhas Maur\u00edcio", "MUT", + "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Maur\u00edcio", "MUST"}}, + {"Indian/Mayotte", EAT}, + {"Indian/Reunion", new String[] {"Fuso hor\u00e1rio de Reuni\u00e3o", "RET", + "Fuso hor\u00e1rio de ver\u00e3o de Reuni\u00e3o", "REST"}}, + {"Israel", ISRAEL}, + {"Jamaica", EST}, + {"Japan", JST}, + {"Kwajalein", MHT}, + {"Libya", EET}, + {"MET", new String[] {"Fuso hor\u00e1rio da Europa M\u00e9dia", "MET", + "Fuso hor\u00e1rio de ver\u00e3o da Europa M\u00e9dia", "MEST"}}, + {"Mexico/BajaNorte", PST}, + {"Mexico/BajaSur", MST}, + {"Mexico/General", CST}, + {"MIT", WST_SAMOA}, + {"MST7MDT", MST}, + {"Navajo", MST}, + {"NET", ARMT}, + {"NST", NZST}, + {"NZ", NZST}, + {"NZ-CHAT", CHAST}, + {"PLT", PKT}, + {"Portugal", WET}, + {"PRT", AST}, + {"Pacific/Apia", WST_SAMOA}, + {"Pacific/Auckland", NZST}, + {"Pacific/Chatham", CHAST}, + {"Pacific/Chuuk", TRUT}, + {"Pacific/Easter", EASTER}, + {"Pacific/Efate", new String[] {"Fuso hor\u00e1rio de Vanuatu", "VUT", + "Fuso hor\u00e1rio de ver\u00e3o de Vanuatu", "VUST"}}, + {"Pacific/Enderbury", new String[] {"Fuso hor\u00e1rio das Ilhas F\u00e9nix", "PHOT", + "Fuso hor\u00e1rio de ver\u00e3o das Ilhas F\u00e9nix", "PHOST"}}, + {"Pacific/Fakaofo", new String[] {"Fuso hor\u00e1rio de Tokelau", "TKT", + "Fuso hor\u00e1rio de ver\u00e3o de Tokelau", "TKST"}}, + {"Pacific/Fiji", new String[] {"Fuso hor\u00e1rio de Fiji", "FJT", + "Fuso hor\u00e1rio de ver\u00e3o de Fiji", "FJST"}}, + {"Pacific/Funafuti", new String[] {"Fuso hor\u00e1rio de Tuvalu", "TVT", + "Fuso hor\u00e1rio de ver\u00e3o de Tuvalu", "TVST"}}, + {"Pacific/Galapagos", new String[] {"Fuso hor\u00e1rio das Ilhas Gal\u00e1pagos", "GALT", + "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gal\u00e1pagos", "GALST"}}, + {"Pacific/Gambier", GAMBIER}, + {"Pacific/Guadalcanal", SBT}, + {"Pacific/Guam", ChST}, + {"Pacific/Johnston", HST}, + {"Pacific/Kiritimati", new String[] {"Fuso hor\u00e1rio das Esp\u00f3rades Equatoriais", "LINT", + "Fuso hor\u00e1rio de ver\u00e3o das Esp\u00f3rades Equatoriais", "LINST"}}, + {"Pacific/Kosrae", new String[] {"Fuso hor\u00e1rio de Kosrae", "KOST", + "Fuso hor\u00e1rio de ver\u00e3o de Kosrae", "KOSST"}}, + {"Pacific/Kwajalein", MHT}, + {"Pacific/Majuro", MHT}, + {"Pacific/Marquesas", new String[] {"Fuso hor\u00e1rio das Ilhas Marquesas", "MART", + "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marquesas", "MARST"}}, + {"Pacific/Midway", SAMOA}, + {"Pacific/Nauru", new String[] {"Fuso hor\u00e1rio de Nauru", "NRT", + "Fuso hor\u00e1rio de ver\u00e3o de Nauru", "NRST"}}, + {"Pacific/Niue", new String[] {"Fuso hor\u00e1rio de Niue", "NUT", + "Fuso hor\u00e1rio de ver\u00e3o de Niue", "NUST"}}, + {"Pacific/Norfolk", new String[] {"Fuso hor\u00e1rio da Ilha de Norfolk", "NFT", + "Fuso hor\u00e1rio de ver\u00e3o da Ilha de Norfolk", "NFST"}}, + {"Pacific/Noumea", new String[] {"Fuso hor\u00e1rio da Nova Caled\u00f4nia", "NCT", + "Fuso hor\u00e1rio de ver\u00e3o da Nova Caled\u00f4nia", "NCST"}}, + {"Pacific/Pago_Pago", SAMOA}, + {"Pacific/Palau", new String[] {"Fuso hor\u00e1rio de Palau", "PWT", + "Fuso hor\u00e1rio de ver\u00e3o de Palau", "PWST"}}, + {"Pacific/Pitcairn", PITCAIRN}, + {"Pacific/Pohnpei", PONT}, + {"Pacific/Ponape", PONT}, + {"Pacific/Port_Moresby", new String[] {"Fuso hor\u00e1rio de Papua-Nova Guin\u00e9", "PGT", + "Fuso hor\u00e1rio de ver\u00e3o de Papua-Nova Guin\u00e9", "PGST"}}, + {"Pacific/Rarotonga", new String[] {"Fuso hor\u00e1rio das Ilhas Cook", "CKT", + "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cook", "CKHST"}}, + {"Pacific/Saipan", ChST}, + {"Pacific/Samoa", SAMOA}, + {"Pacific/Tahiti", new String[] {"Fuso hor\u00e1rio do Taiti", "TAHT", + "Fuso hor\u00e1rio de ver\u00e3o do Taiti", "TAHST"}}, + {"Pacific/Tarawa", new String[] {"Fuso hor\u00e1rio das Ilhas Gilbert", "GILT", + "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gilbert", "GILST"}}, + {"Pacific/Tongatapu", new String[] {"Fuso hor\u00e1rio de Tonga", "TOT", + "Fuso hor\u00e1rio de ver\u00e3o de Tonga", "TOST"}}, + {"Pacific/Truk", TRUT}, + {"Pacific/Wake", new String[] {"Fuso hor\u00e1rio de Wake", "WAKT", + "Fuso hor\u00e1rio de ver\u00e3o de Wake", "WAKST"}}, + {"Pacific/Wallis", new String[] {"Fuso hor\u00e1rio de Wallis e Futuna", "WFT", + "Fuso hor\u00e1rio de ver\u00e3o de Wallis e Futuna", "WFST"}}, + {"Pacific/Yap", TRUT}, + {"Poland", CET}, + {"PRC", CTT}, + {"PST8PDT", PST}, + {"ROK", KST}, + {"Singapore", SGT}, + {"SST", SBT}, + {"SystemV/AST4", AST}, + {"SystemV/AST4ADT", AST}, + {"SystemV/CST6", CST}, + {"SystemV/CST6CDT", CST}, + {"SystemV/EST5", EST}, + {"SystemV/EST5EDT", EST}, + {"SystemV/HST10", HST}, + {"SystemV/MST7", MST}, + {"SystemV/MST7MDT", MST}, + {"SystemV/PST8", PST}, + {"SystemV/PST8PDT", PST}, + {"SystemV/YST9", AKST}, + {"SystemV/YST9YDT", AKST}, + {"Turkey", EET}, + {"UCT", UTC}, + {"Universal", UTC}, + {"US/Alaska", AKST}, + {"US/Aleutian", HAST}, + {"US/Arizona", MST}, + {"US/Central", CST}, + {"US/Eastern", EST}, + {"US/Hawaii", HST}, + {"US/Indiana-Starke", CST}, + {"US/East-Indiana", EST}, + {"US/Michigan", EST}, + {"US/Mountain", MST}, + {"US/Pacific", PST}, + {"US/Pacific-New", PST}, + {"US/Samoa", SAMOA}, + {"UTC", UTC}, + {"VST", ICT}, + {"W-SU", MSK}, + {"WET", WET}, + {"Zulu", UTC}, }; } } - - diff --git a/src/share/javavm/export/jvm.h b/src/share/javavm/export/jvm.h index 303f66089ebe0a75b31a22824d83ae6c362a9f67..d1dfefca47f881e6d658185fa1f82b53c691d51f 100644 --- a/src/share/javavm/export/jvm.h +++ b/src/share/javavm/export/jvm.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1423,7 +1423,8 @@ typedef struct { * the new bit is also added in the main/baseline. */ unsigned int thread_park_blocker : 1; - unsigned int : 31; + unsigned int post_vm_init_hook_enabled : 1; + unsigned int : 30; unsigned int : 32; unsigned int : 32; } jdk_version_info; diff --git a/src/share/native/common/jdk_util.c b/src/share/native/common/jdk_util.c index 2fb3366d7400427a2c32478cd4ea0cb060e48548..e737982893ecd7a47de869fa940ff32ddf45807c 100644 --- a/src/share/native/common/jdk_util.c +++ b/src/share/native/common/jdk_util.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -98,4 +98,8 @@ JDK_GetVersionInfo0(jdk_version_info* info, size_t info_size) { info->update_version = jdk_update_version; info->special_update_version = (unsigned int) jdk_special_version; info->thread_park_blocker = 1; + // Advertise presence of sun.misc.PostVMInitHook: + // future optimization: detect if this is enabled. + info->post_vm_init_hook_enabled = 1; + } diff --git a/src/share/sample/forkjoin/mergesort/MergeDemo.java b/src/share/sample/forkjoin/mergesort/MergeDemo.java new file mode 100644 index 0000000000000000000000000000000000000000..f7daf05244faa60ed631ceedd87d45985cdac806 --- /dev/null +++ b/src/share/sample/forkjoin/mergesort/MergeDemo.java @@ -0,0 +1,287 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.util.Arrays; +import java.util.Random; + +import static java.lang.Integer.parseInt; + +/** + * MergeExample is a class that runs a demo benchmark of the {@code ForkJoin} framework + * by benchmarking a {@link MergeSort} algorithm that is implemented using + * {@link java.util.concurrent.RecursiveAction}. + * The {@code ForkJoin} framework is setup with different parallelism levels + * and the sort is executed with arrays of different sizes to see the + * trade offs by using multiple threads for different sizes of the array. + */ +public class MergeDemo { + // Use a fixed seed to always get the same random values back + private final Random random = new Random(759123751834L); + private static final int ITERATIONS = 10; + + /** + * Represents the formula {@code f(n) = start + (step * n)} for n = 0 & n < iterations + */ + private static class Range { + private final int start; + private final int step; + private final int iterations; + + private Range(int start, int step, int iterations) { + this.start = start; + this.step = step; + this.iterations = iterations; + } + + /** + * Parses start, step and iterations from args + * @param args the string array containing the arguments + * @param start which element to start the start argument from + * @return the constructed range + */ + public static Range parse(String[] args, int start) { + if (args.length < start + 3) { + throw new IllegalArgumentException("Too few elements in array"); + } + return new Range(parseInt(args[start]), parseInt(args[start + 1]), parseInt(args[start + 2])); + } + + public int get(int iteration) { + return start + (step * iteration); + } + + public int getIterations() { + return iterations; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(start).append(" ").append(step).append(" ").append(iterations); + return builder.toString(); + } + } + + /** + * Wraps the different parameters that is used when running the MergeExample. + * {@code sizes} represents the different array sizes + * {@code parallelism} represents the different parallelism levels + */ + private static class Configuration { + private final Range sizes; + private final Range parallelism; + + private final static Configuration defaultConfig = new Configuration(new Range(20000, 20000, 10), + new Range(2, 2, 10)); + + private Configuration(Range sizes, Range parallelism) { + this.sizes = sizes; + this.parallelism = parallelism; + } + + /** + * Parses the arguments and attempts to create a configuration containing the + * parameters for creating the array sizes and parallelism sizes + * @param args the input arguments + * @return the configuration + */ + public static Configuration parse(String[] args) { + if (args.length == 0) { + return defaultConfig; + } else { + try { + if (args.length == 6) { + return new Configuration(Range.parse(args, 0), Range.parse(args, 3)); + } + } catch (NumberFormatException e) { + System.err.println("MergeExample: error: Argument was not a number."); + } + System.err.println("MergeExample <size start> <size step> <size steps> <parallel start> <parallel step>" + + " <parallel steps>"); + System.err.println("example: MergeExample 20000 10000 3 1 1 4"); + System.err.println("example: will run with arrays of sizes 20000, 30000, 40000" + + " and parallelism: 1, 2, 3, 4"); + return null; + } + } + + /** + * Creates an array for reporting the test result time in + * @return an array containing {@code sizes.iterations * parallelism.iterations} elements + */ + private long[][] createTimesArray() { + return new long[sizes.getIterations()][parallelism.getIterations()]; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(""); + if (this == defaultConfig) { + builder.append("Default configuration. "); + } + builder.append("Running with parameters: "); + builder.append(sizes); + builder.append(" "); + builder.append(parallelism); + return builder.toString(); + } + } + + /** + * Generates an array of {@code elements} random elements + * @param elements the number of elements requested in the array + * @return an array of {@code elements} random elements + */ + private int[] generateArray(int elements) { + int[] array = new int[elements]; + for (int i = 0; i < elements; ++i) { + array[i] = random.nextInt(); + } + return array; + } + + /** + * Runs the test + * @param config contains the settings for the test + */ + private void run(Configuration config) { + Range sizes = config.sizes; + Range parallelism = config.parallelism; + + // Run a couple of sorts to make the JIT compile / optimize the code + // which should produce somewhat more fair times + warmup(); + + long[][] times = config.createTimesArray(); + + for (int size = 0; size < sizes.getIterations(); size++) { + runForSize(parallelism, sizes.get(size), times, size); + } + + printResults(sizes, parallelism, times); + } + + /** + * Prints the results as a table + * @param sizes the different sizes of the arrays + * @param parallelism the different parallelism levels used + * @param times the median times for the different sizes / parallelism + */ + private void printResults(Range sizes, Range parallelism, long[][] times) { + System.out.println("Time in milliseconds. Y-axis: number of elements. X-axis parallelism used."); + long[] sums = new long[times[0].length]; + System.out.format("%8s ", ""); + for (int i = 0; i < times[0].length; i++) { + System.out.format("%4d ", parallelism.get(i)); + } + System.out.println(""); + for (int size = 0; size < sizes.getIterations(); size++) { + System.out.format("%8d: ", sizes.get(size)); + for (int i = 0; i < times[size].length; i++) { + sums[i] += times[size][i]; + System.out.format("%4d ", times[size][i]); + } + System.out.println(""); + } + System.out.format("%8s: ", "Total"); + for (long sum : sums) { + System.out.format("%4d ", sum); + } + System.out.println(""); + } + + private void runForSize(Range parallelism, int elements, long[][] times, int size) { + for (int step = 0; step < parallelism.getIterations(); step++) { + long time = runForParallelism(ITERATIONS, elements, parallelism.get(step)); + times[size][step] = time; + } + } + + /** + * Runs <i>iterations</i> number of test sorts of a random array of <i>element</i> length + * @param iterations number of iterations + * @param elements number of elements in the random array + * @param parallelism parallelism for the ForkJoin framework + * @return the median time of runs + */ + private long runForParallelism(int iterations, int elements, int parallelism) { + MergeSort mergeSort = new MergeSort(parallelism); + long[] times = new long[iterations]; + + for (int i = 0; i < iterations; i++) { + // Suggest the VM to run a garbage collection to reduce the risk of getting one + // while running the test run + System.gc(); + long start = System.currentTimeMillis(); + mergeSort.sort(generateArray(elements)); + times[i] = System.currentTimeMillis() - start; + } + + return medianValue(times); + } + + /** + * Calculates the median value of the array + * @param times array of times + * @return the median value + */ + private long medianValue(long[] times) { + if (times.length == 0) { + throw new IllegalArgumentException("Empty array"); + } + // Make a copy of times to avoid having side effects on the parameter value + Arrays.sort(times.clone()); + long median = times[times.length / 2]; + if (times.length > 1 && times.length % 2 != 0) { + median = (median + times[times.length / 2 + 1]) / 2; + } + return median; + } + + /** + * Generates 1000 arrays of 1000 elements and sorts them as a warmup + */ + private void warmup() { + MergeSort mergeSort = new MergeSort(Runtime.getRuntime().availableProcessors()); + for (int i = 0; i < 1000; i++) { + mergeSort.sort(generateArray(1000)); + } + } + + public static void main(String[] args) { + Configuration configuration = Configuration.parse(args); + if (configuration == null) { + System.exit(1); + } + System.out.println(configuration); + new MergeDemo().run(configuration); + } +} diff --git a/src/share/sample/forkjoin/mergesort/MergeSort.java b/src/share/sample/forkjoin/mergesort/MergeSort.java new file mode 100644 index 0000000000000000000000000000000000000000..b9cf0f50c163c15759431fbc6b064843b31e7bfd --- /dev/null +++ b/src/share/sample/forkjoin/mergesort/MergeSort.java @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.util.Arrays; +import java.util.concurrent.ForkJoinPool; +import java.util.concurrent.ForkJoinTask; +import java.util.concurrent.RecursiveAction; + +/** + * A class for sorting an array of {@code ints} in parallel. + * A {@code ForkJoinPool} is used for the parallelism, using the merge sort + * algorithm the array is split into halves and a new sub task is created + * for each part. Each sub task is dispatched to the {@code ForkJoinPool} + * which will schedule the task to a {@code Thread}. + * This happens until the size of the array is at most 2 + * elements long. At this point the array is sorted using a simple compare + * and possibly a swap. The tasks then finish by using insert sort to + * merge the two just sorted arrays. + * + * The idea of this class is to demonstrate the usage of RecursiveAction not + * to implement the best possible parallel merge sort. This version creates + * a small array for each merge (creating a lot of objects), this could + * be avoided by keeping a single array. + */ +public class MergeSort { + private final ForkJoinPool pool; + + private static class MergeSortTask extends RecursiveAction { + private final int[] array; + private final int low; + private final int high; + private static final int THRESHOLD = 8; + + /** + * Creates a {@code MergeSortTask} containing the array and the bounds of the array + * + * @param array the array to sort + * @param low the lower element to start sorting at + * @param high the non-inclusive high element to sort to + */ + protected MergeSortTask(int[] array, int low, int high) { + this.array = array; + this.low = low; + this.high = high; + } + + @Override + protected void compute() { + if (high - low <= THRESHOLD) { + Arrays.sort(array, low, high); + } else { + int middle = low + ((high - low) >> 1); + // Execute the sub tasks and wait for them to finish + invokeAll(new MergeSortTask(array, low, middle), new MergeSortTask(array, middle, high)); + // Then merge the results + merge(middle); + } + } + + /** + * Merges the two sorted arrays this.low, middle - 1 and middle, this.high - 1 + * @param middle the index in the array where the second sorted list begins + */ + private void merge(int middle) { + if (array[middle - 1] < array[middle]) { + return; // the arrays are already correctly sorted, so we can skip the merge + } + int[] copy = new int[high - low]; + System.arraycopy(array, low, copy, 0, copy.length); + int copyLow = 0; + int copyHigh = high - low; + int copyMiddle = middle - low; + + for (int i = low, p = copyLow, q = copyMiddle; i < high; i++) { + if (q >= copyHigh || (p < copyMiddle && copy[p] < copy[q]) ) { + array[i] = copy[p++]; + } else { + array[i] = copy[q++]; + } + } + } + } + + /** + * Creates a {@code MergeSort} containing a ForkJoinPool with the indicated parallelism level + * @param parallelism the parallelism level used + */ + public MergeSort(int parallelism) { + pool = new ForkJoinPool(parallelism); + } + + /** + * Sorts all the elements of the given array using the ForkJoin framework + * @param array the array to sort + */ + public void sort(int[] array) { + ForkJoinTask<Void> job = pool.submit(new MergeSortTask(array, 0, array.length)); + job.join(); + } +} diff --git a/src/share/sample/nio/chatserver/ChatServer.java b/src/share/sample/nio/chatserver/ChatServer.java new file mode 100644 index 0000000000000000000000000000000000000000..09d7c26b868609bc0f96dc460be249810f342b8f --- /dev/null +++ b/src/share/sample/nio/chatserver/ChatServer.java @@ -0,0 +1,179 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.SocketAddress; +import java.net.StandardSocketOption; +import java.nio.channels.*; +import java.util.*; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +/** + * Implements a chat server, this class holds the list of {@code clients} connected to the server. + * It sets up a server socket using AsynchronousServerSocketChannel listening to a specified port. + */ +public class ChatServer implements Runnable { + private final List<Client> connections = Collections.synchronizedList(new ArrayList<Client>()); + private int port; + private final AsynchronousServerSocketChannel listener; + private final AsynchronousChannelGroup channelGroup; + + /** + * + * @param port to listen to + * @throws java.io.IOException when failing to start the server + */ + public ChatServer(int port) throws IOException { + channelGroup = AsynchronousChannelGroup.withFixedThreadPool(Runtime.getRuntime().availableProcessors(), + Executors.defaultThreadFactory()); + this.port = port; + listener = createListener(channelGroup); + } + + /** + * + * @return The socket address that the server is bound to + * @throws java.io.IOException if an I/O error occurs + */ + public SocketAddress getSocketAddress() throws IOException { + return listener.getLocalAddress(); + } + + /** + * Start accepting connections + */ + public void run() { + + // call accept to wait for connections, tell it to call our CompletionHandler when there + // is a new incoming connection + listener.accept(null, new CompletionHandler<AsynchronousSocketChannel, Void>() { + @Override + public void completed(AsynchronousSocketChannel result, Void attachment) { + // request a new accept and handle the incoming connection + listener.accept(null, this); + handleNewConnection(result); + } + + @Override + public void failed(Throwable exc, Void attachment) { + } + }); + } + + /** + * Shuts down the server + * @throws InterruptedException if terminated while waiting for shutdown + * @throws IOException if failing to shutdown the channel group + */ + public void shutdown() throws InterruptedException, IOException { + channelGroup.shutdownNow(); + channelGroup.awaitTermination(1, TimeUnit.SECONDS); + } + + /* + * Creates a listener and starts accepting connections + */ + private AsynchronousServerSocketChannel createListener(AsynchronousChannelGroup channelGroup) throws IOException { + final AsynchronousServerSocketChannel listener = openChannel(channelGroup); + listener.setOption(StandardSocketOption.SO_REUSEADDR, true); + listener.bind(new InetSocketAddress(port)); + return listener; + } + + private AsynchronousServerSocketChannel openChannel(AsynchronousChannelGroup channelGroup) throws IOException { + return AsynchronousServerSocketChannel.open(channelGroup); + } + + /** + * Creates a new client and adds it to the list of connections. + * Sets the clients handler to the initial state of NameReader + * + * @param channel the newly accepted channel + */ + private void handleNewConnection(AsynchronousSocketChannel channel) { + Client client = new Client(channel, new ClientReader(this, new NameReader(this))); + try { + channel.setOption(StandardSocketOption.TCP_NODELAY, true); + } catch (IOException e) { + // ignore + } + connections.add(client); + client.run(); + } + + /** + * Sends a message to all clients except the source. + * The method is synchronized as it is desired that messages are sent to + * all clients in the same order as received. + * + * @param client the message source + * @param message the message to be sent + */ + public void writeMessageToClients(Client client, String message) { + synchronized (connections) { + for (Client clientConnection : connections) { + if (clientConnection != client) { + clientConnection.writeMessageFrom(client, message); + } + } + } + } + + public void removeClient(Client client) { + connections.remove(client); + } + + private static void usage() { + System.err.println("ChatServer [-port <port number>]"); + System.exit(1); + } + + public static void main(String[] args) throws IOException { + int port = 5000; + if (args.length != 0 && args.length != 2) { + usage(); + } else if (args.length == 2) { + try { + if (args[0].equals("-port")) { + port = Integer.parseInt(args[1]); + } else { + usage(); + } + } catch (NumberFormatException e) { + usage(); + } + } + System.out.println("Running on port " + port); + new ChatServer(port).run(); + } +} diff --git a/src/share/sample/nio/chatserver/Client.java b/src/share/sample/nio/chatserver/Client.java new file mode 100644 index 0000000000000000000000000000000000000000..d89516a22d95e2c9d5931424017ae7e2c9545778 --- /dev/null +++ b/src/share/sample/nio/chatserver/Client.java @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.channels.AsynchronousSocketChannel; +import java.nio.channels.CompletionHandler; +import java.util.LinkedList; +import java.util.Queue; +import java.util.concurrent.atomic.AtomicReference; + +/** + * Client represents a remote connection to the chat server. + * It contains methods for reading and writing messages from the + * channel. + * Messages are considered to be separated by newline, so incomplete + * messages are buffered in the {@code Client}. + * + * All reads and writes are asynchronous and uses the nio2 asynchronous + * elements. + */ +class Client { + private final AsynchronousSocketChannel channel; + private AtomicReference<ClientReader> reader; + private String userName; + private final StringBuilder messageBuffer = new StringBuilder(); + + private final Queue<ByteBuffer> queue = new LinkedList<ByteBuffer>(); + private boolean writing = false; + + public Client(AsynchronousSocketChannel channel, ClientReader reader) { + this.channel = channel; + this.reader = new AtomicReference<ClientReader>(reader); + } + + /** + * Enqueues a write of the buffer to the channel. + * The call is asynchronous so the buffer is not safe to modify after + * passing the buffer here. + * + * @param buffer the buffer to send to the channel + */ + private void writeMessage(final ByteBuffer buffer) { + boolean threadShouldWrite = false; + + synchronized(queue) { + queue.add(buffer); + // Currently no thread writing, make this thread dispatch a write + if (!writing) { + writing = true; + threadShouldWrite = true; + } + } + + if (threadShouldWrite) { + writeFromQueue(); + } + } + + private void writeFromQueue() { + ByteBuffer buffer; + + synchronized (queue) { + buffer = queue.poll(); + if (buffer == null) { + writing = false; + } + } + + // No new data in buffer to write + if (writing) { + writeBuffer(buffer); + } + } + + private void writeBuffer(ByteBuffer buffer) { + channel.write(buffer, buffer, new CompletionHandler<Integer, ByteBuffer>() { + @Override + public void completed(Integer result, ByteBuffer buffer) { + if (buffer.hasRemaining()) { + channel.write(buffer, buffer, this); + } else { + // Go back and check if there is new data to write + writeFromQueue(); + } + } + + @Override + public void failed(Throwable exc, ByteBuffer attachment) { + } + }); + } + + /** + * Sends a message + * @param string the message + */ + public void writeStringMessage(String string) { + writeMessage(ByteBuffer.wrap(string.getBytes())); + } + + /** + * Send a message from a specific client + * @param client the message is sent from + * @param message to send + */ + public void writeMessageFrom(Client client, String message) { + if (reader.get().acceptsMessages()) { + writeStringMessage(client.getUserName() + ": " + message); + } + } + + /** + * Enqueue a read + * @param completionHandler callback on completed read + */ + public void read(CompletionHandler<Integer, ? super ByteBuffer> completionHandler) { + ByteBuffer input = ByteBuffer.allocate(256); + if (!channel.isOpen()) { + return; + } + channel.read(input, input, completionHandler); + } + + /** + * Closes the channel + */ + public void close() { + try { + channel.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Run the current states actions. + */ + public void run() { + reader.get().run(this); + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public void setReader(ClientReader reader) { + this.reader.set(reader); + } + + public String getUserName() { + return userName; + } + + public void appendMessage(String message) { + synchronized (messageBuffer) { + messageBuffer.append(message); + } + } + + /** + * @return the next newline separated message in the buffer. null is returned if the buffer + * doesn't contain any newline. + */ + public String nextMessage() { + synchronized(messageBuffer) { + int nextNewline = messageBuffer.indexOf("\n"); + if (nextNewline == -1) { + return null; + } + String message = messageBuffer.substring(0, nextNewline + 1); + messageBuffer.delete(0, nextNewline + 1); + return message; + } + } +} diff --git a/src/share/sample/nio/chatserver/ClientReader.java b/src/share/sample/nio/chatserver/ClientReader.java new file mode 100644 index 0000000000000000000000000000000000000000..5308805ea04cb84dac21517ae09f1cbf62e02b14 --- /dev/null +++ b/src/share/sample/nio/chatserver/ClientReader.java @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.nio.ByteBuffer; +import java.nio.channels.CompletionHandler; + +/** + * Handles a cycle of reading / writing on the {@code Client}. + */ +class ClientReader { + private final DataReader callback; + private final ChatServer chatServer; + + ClientReader(ChatServer chatServer, DataReader callback) { + this.chatServer = chatServer; + this.callback = callback; + } + + public boolean acceptsMessages() { + return callback.acceptsMessages(); + } + + /** + * Runs a cycle of doing a beforeRead action and then enqueing a new + * read on the client. Handles closed channels and errors while reading. + * If the client is still connected a new round of actions are called. + */ + public void run(final Client client) { + callback.beforeRead(client); + client.read(new CompletionHandler<Integer, ByteBuffer>() { + @Override + public void completed(Integer result, ByteBuffer buffer) { + // if result is negative or zero the connection has been closed or something gone wrong + if (result < 1) { + client.close(); + System.out.println("Closing connection to " + client); + chatServer.removeClient(client); + } else { + callback.onData(client, buffer, result); + // enqueue next round of actions + client.run(); + } + } + + @Override + public void failed(Throwable exc, ByteBuffer buffer) { + client.close(); + chatServer.removeClient(client); + } + }); + } +} diff --git a/src/share/sample/nio/chatserver/DataReader.java b/src/share/sample/nio/chatserver/DataReader.java new file mode 100644 index 0000000000000000000000000000000000000000..574c69dd1bf89d78554f06c6bd7630c112f5b938 --- /dev/null +++ b/src/share/sample/nio/chatserver/DataReader.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.nio.ByteBuffer; + +public interface DataReader { + void beforeRead(Client client); + void onData(Client client, ByteBuffer buffer, int bytes); + boolean acceptsMessages(); +} diff --git a/src/share/sample/nio/chatserver/MessageReader.java b/src/share/sample/nio/chatserver/MessageReader.java new file mode 100644 index 0000000000000000000000000000000000000000..46fde6f06f5dcb1e457800d74110a0b1dcc9b961 --- /dev/null +++ b/src/share/sample/nio/chatserver/MessageReader.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.nio.ByteBuffer; + +/** + * Writes all messages in our buffer to the other clients + * and appends new data read from the socket to our buffer + */ +class MessageReader implements DataReader { + private final ChatServer chatServer; + + public MessageReader(ChatServer chatServer) { + this.chatServer = chatServer; + } + + public boolean acceptsMessages() { + return true; + } + + /** + * Write all full messages in our buffer to + * the other clients + * + * @param client the client to read messages from + */ + @Override + public void beforeRead(Client client) { + // Check if we have any messages buffered and send them + String message = client.nextMessage(); + while (message != null) { + chatServer.writeMessageToClients(client, message); + message = client.nextMessage(); + } + } + + /** + * Append the read buffer to the clients message buffer + * @param client the client to append messages to + * @param buffer the buffer we received from the socket + * @param bytes the number of bytes read into the buffer + */ + @Override + public void onData(Client client, ByteBuffer buffer, int bytes) { + buffer.flip(); + // Just append the message on the buffer + client.appendMessage(new String(buffer.array(), 0, bytes)); + } +} diff --git a/src/share/sample/nio/chatserver/NameReader.java b/src/share/sample/nio/chatserver/NameReader.java new file mode 100644 index 0000000000000000000000000000000000000000..d0484d0fd044b5e17a84c27630e396d7a0d29af3 --- /dev/null +++ b/src/share/sample/nio/chatserver/NameReader.java @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.nio.ByteBuffer; + +/** + * The first state a newly connected {@code Client} is in, this + * handles writing out the welcoming message and reads the response + * up to a newline. When a newline character have been received + * it changes the handler from NameReader to MessageReader on the + * client. + */ +class NameReader implements DataReader { + private final StringBuilder buffer = new StringBuilder(); + private final ChatServer chatServer; + private boolean once = true; + private static final String NEWLINE = "\n"; + + public NameReader(ChatServer chatServer) { + this.chatServer = chatServer; + } + + /** + * Writes the welcoming message to the client the first time this method + * is called. + * + * @param client the client to receive the message + */ + @Override + public void beforeRead(Client client) { + // if it is a long name that takes more than one read we only want to display Name: once. + if (once) { + client.writeStringMessage("Name: "); + once = false; + } + } + + public boolean acceptsMessages() { + return false; + } + + /** + * Receives incoming data from the socket, searches for a newline + * and tries to set the username if one is found + */ + @Override + public void onData(Client client, ByteBuffer buffer, int bytes) { + buffer.flip(); + String name; + name = this.buffer.append(new String(buffer.array(), 0, bytes)).toString(); + if (name.contains(NEWLINE)) { + onUserNameRead(client, name); + } + } + + /** + * Splits the name on the newlines, takes the first as the username + * and appends everything else to the clients message buffer. + * Sets the clients handler to MessageReader. + * + * @param client the client to set the username for + * @param name the string containing the buffered input + */ + private void onUserNameRead(Client client, String name) { + String[] strings = name.split(NEWLINE, 2); + client.setUserName(strings[0].trim()); + sendRemainingParts(client, strings); + client.setReader(new ClientReader(chatServer, new MessageReader(chatServer))); + client.writeStringMessage("Welcome " + client.getUserName() + "\n"); + } + + /** + * Appends the remaining parts to the clients message buffer + * + * @param client the client + * @param strings the messages to append to the buffer + */ + private void sendRemainingParts(Client client, String[] strings) { + for (int i = 1; i < strings.length; ++i) { + client.appendMessage(strings[i]); + } + } +} diff --git a/src/share/sample/nio/chatserver/README.txt b/src/share/sample/nio/chatserver/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..ec9b4764a1c5429a4e1a9346945cf5beed035cc0 --- /dev/null +++ b/src/share/sample/nio/chatserver/README.txt @@ -0,0 +1,62 @@ +A Simple Chat Server Example + +INTRODUCTION +============ +This directory contains a very simple chat server, the server takes input from a +socket ("user") and sends it to all other connected sockets ("users") along with +the provided name the user was asked for when first connecting. + +The server was written to demonstrate the asynchronous I/O API in JDK 7. +The sample assumes the reader has some familiarity with the subject matter. + +SETUP +===== + +The server must be built with version 7 (or later) of the JDK. +The server is built with: + + % mkdir build + % javac -source 7 -target 7 -d build *.java + +EXECUTION +========= + + % java -classpath build ChatServer [-port <port number>] + + Usage: ChatServer [options] + options: + -port port port number + default: 5000 + +CLIENT EXECUTION +================ + +No client binary is included in the sample. +Connections can be made using for example the telnet command or any program +that supports a raw TCP connection to a port. + +SOURCE CODE OVERVIEW +==================== +ChatServer is the main class, it handles the startup and handles incoming +connections on the listening sockets. It keeps a list of connected client +and provides methods for sending a message to them. + +Client represents a connected user, it provides methods for reading/writing +from/to the underlying socket. It also contains a buffer of input read from +the user. + +DataReader provides the interface of the two states a user can +be in. Waiting for a name (and not receiving any messages while doing so, implemented +by NameReader) and waiting for messages from the user (implemented by MessageReader). + +ClientReader contains the "main loop" for a connected client. + +NameReader is the initial state for a new client, it sends the user a string and +waits for a response before changing the state to MessageReader. + +MessageReader is the main state for a client, it checks for new messages to send to +other clients and reads messages from the client. + +FINALLY +======= +This is a sample: it is not production quality and isn't optimized for performance. diff --git a/src/solaris/bin/java_md.c b/src/solaris/bin/java_md.c index 441d41efe25119e1deb57322a8f0738393dc09b3..361454f3136f8c0885aadaedb374552e73516338 100644 --- a/src/solaris/bin/java_md.c +++ b/src/solaris/bin/java_md.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -46,6 +46,10 @@ #define JVM_DLL "libjvm.so" #define JAVA_DLL "libjava.so" +/* help jettison the LD_LIBRARY_PATH settings in the future */ +#ifndef SETENV_REQUIRED +#define SETENV_REQUIRED +#endif /* * If a processor / os combination has the ability to run binaries of * two data models and cohabitation of jre/jdk bits with both data @@ -106,10 +110,22 @@ static char *execname = NULL; * Previously the launcher modified the LD_LIBRARY_PATH appropriately for the * desired data model path, regardless if data models matched or not. The * launcher subsequently exec'ed the desired executable, in order to make the - * LD_LIBRARY_PATH path available for the runtime linker. This is no longer the - * case, the launcher dlopens the target libjvm.so. All other required - * libraries are loaded by the runtime linker, by virtue of the $ORIGIN paths - * baked into the shared libraries, by the build infrastructure at compile time. + * LD_LIBRARY_PATH path available, for the runtime linker. + * + * Now, in most cases,the launcher will dlopen the target libjvm.so. All + * required libraries are loaded by the runtime linker, using the + * $RPATH/$ORIGIN baked into the shared libraries at compile time. Therefore, + * in most cases, the launcher will only exec, if the data models are + * mismatched, and will not set any environment variables, regardless of the + * data models. + * + * However, if the environment contains a LD_LIBRARY_PATH, this will cause the + * launcher to inspect the LD_LIBRARY_PATH. The launcher will check + * a. if the LD_LIBRARY_PATH's first component is the the path to the desired + * libjvm.so + * b. if any other libjvm.so is found in any of the paths. + * If case b is true, then the launcher will set the LD_LIBRARY_PATH to the + * desired JRE and reexec, in order to propagate the environment. * * Main * (incoming argv) @@ -137,11 +153,11 @@ static char *execname = NULL; * | | * | | * \|/ \|/ - * YES (find the desired executable and exec child) + * YES Find the desired executable/library * | | * | | * \|/ \|/ - * CheckJvmType Main + * CheckJvmType RequiresSetenv * (removes -client, -server, etc.) * | * | @@ -156,7 +172,42 @@ static char *execname = NULL; * processes version options, * creates argument list for vm, * etc.) - * + * | + * | + * \|/ + * RequiresSetenv + * Is LD_LIBRARY_PATH + * and friends set ? --> NO --> Have Desired Model ? NO --> Re-exec --> Main + * YES YES --> Continue + * | + * | + * \|/ + * Path is desired JRE ? YES --> Have Desired Model ? NO --> Re-exec --> Main + * NO YES --> Continue + * | + * | + * \|/ + * Paths have well known + * jvm paths ? --> NO --> Have Desired Model ? NO --> Re-exec --> Main + * YES YES --> Continue + * | + * | + * \|/ + * Does libjvm.so exit + * in any of them ? --> NO --> Have Desired Model ? NO --> Re-exec --> Main + * YES YES --> Continue + * | + * | + * \|/ + * Set the LD_LIBRARY_PATH + * | + * | + * \|/ + * Re-exec + * | + * | + * \|/ + * Main */ static const char * SetExecname(char **argv); @@ -182,6 +233,130 @@ GetArchPath(int nbits) } } +#ifdef SETENV_REQUIRED +static jboolean +JvmExists(const char *path) { + char tmp[PATH_MAX + 1]; + struct stat statbuf; + JLI_Snprintf(tmp, PATH_MAX, "%s/%s", path, JVM_DLL); + if (stat(tmp, &statbuf) == 0) { + return JNI_TRUE; + } + return JNI_FALSE; +} +/* + * contains a lib/$LIBARCH/{server,client}/libjvm.so ? + */ +static jboolean +ContainsLibJVM(int wanted, const char *env) { + char clientPattern[PATH_MAX + 1]; + char serverPattern[PATH_MAX + 1]; + char *envpath; + char *path; + jboolean clientPatternFound; + jboolean serverPatternFound; + + /* fastest path */ + if (env == NULL) { + return JNI_FALSE; + } + + /* the usual suspects */ + JLI_Snprintf(clientPattern, PATH_MAX, "lib/%s/client", GetArchPath(wanted)); + JLI_Snprintf(serverPattern, PATH_MAX, "lib/%s/server", GetArchPath(wanted)); + + /* to optimize for time, test if any of our usual suspects are present. */ + clientPatternFound = JLI_StrStr(env, clientPattern) != NULL; + serverPatternFound = JLI_StrStr(env, serverPattern) != NULL; + if (clientPatternFound == JNI_FALSE && serverPatternFound == JNI_FALSE) { + return JNI_FALSE; + } + + /* + * we have a suspicious path component, check if it contains a libjvm.so + */ + envpath = JLI_StringDup(env); + for (path = JLI_StrTok(envpath, ":"); path != NULL; path = JLI_StrTok(NULL, ":")) { + if (clientPatternFound && JLI_StrStr(path, clientPattern) != NULL) { + if (JvmExists(path)) { + JLI_MemFree(envpath); + return JNI_TRUE; + } + } + if (serverPatternFound && JLI_StrStr(path, serverPattern) != NULL) { + if (JvmExists(path)) { + JLI_MemFree(envpath); + return JNI_TRUE; + } + } + } + JLI_MemFree(envpath); + return JNI_FALSE; +} + +/* + * Test whether the environment variable needs to be set, see flowchart. + */ +static jboolean +RequiresSetenv(int wanted, const char *jvmpath) { + char jpath[PATH_MAX + 1]; + char *llp; + char *dmllp = NULL; + char *p; /* a utility pointer */ + + llp = getenv("LD_LIBRARY_PATH"); +#ifdef __solaris__ + dmllp = (CURRENT_DATA_MODEL == 32) + ? getenv("LD_LIBRARY_PATH_32") + : getenv("LD_LIBRARY_PATH_64"); +#endif /* __solaris__ */ + /* no environment variable is a good environment variable */ + if (llp == NULL && dmllp == NULL) { + return JNI_FALSE; + } +#ifdef __linux + /* + * On linux, if a binary is running as sgid or suid, glibc sets + * LD_LIBRARY_PATH to the empty string for security purposes. (In contrast, + * on Solaris the LD_LIBRARY_PATH variable for a privileged binary does not + * lose its settings; but the dynamic linker does apply more scrutiny to the + * path.) The launcher uses the value of LD_LIBRARY_PATH to prevent an exec + * loop, here and further downstream. Therefore, if we are running sgid or + * suid, this function's setting of LD_LIBRARY_PATH will be ineffective and + * we should case a return from the calling function. Getting the right + * libraries will be handled by the RPATH. In reality, this check is + * redundant, as the previous check for a non-null LD_LIBRARY_PATH will + * return back to the calling function forthwith, it is left here to safe + * guard against any changes, in the glibc's existing security policy. + */ + if ((getgid() != getegid()) || (getuid() != geteuid())) { + return JNI_FALSE; + } +#endif /* __linux */ + + /* + * Prevent recursions. Since LD_LIBRARY_PATH is the one which will be set by + * previous versions of the JRE, thus it is the only path that matters here. + * So we check to see if the desired JRE is set. + */ + JLI_StrNCpy(jpath, jvmpath, PATH_MAX); + p = JLI_StrRChr(jpath, '/'); + *p = '\0'; + if (llp != NULL && JLI_StrNCmp(llp, jpath, JLI_StrLen(jpath)) == 0) { + return JNI_FALSE; + } + + /* scrutinize all the paths further */ + if (llp != NULL && ContainsLibJVM(wanted, llp)) { + return JNI_TRUE; + } + if (dmllp != NULL && ContainsLibJVM(wanted, dmllp)) { + return JNI_TRUE; + } + return JNI_FALSE; +} +#endif /* SETENV_REQUIRED */ + void CreateExecutionEnvironment(int *pargc, char ***pargv, char jrepath[], jint so_jrepath, @@ -195,7 +370,6 @@ CreateExecutionEnvironment(int *pargc, char ***pargv, * informative to issue an error message based on whether or not the * os/processor combination has dual mode capabilities. */ - jboolean jvmpathExists; /* Compute/set the name of the executable */ @@ -207,13 +381,24 @@ CreateExecutionEnvironment(int *pargc, char ***pargv, char * jvmtype = NULL; int argc = *pargc; char **argv = *pargv; - int running = CURRENT_DATA_MODEL; int wanted = running; /* What data mode is being asked for? Current model is fine unless another model is asked for */ +#ifdef SETENV_REQUIRED + jboolean mustsetenv = JNI_FALSE; + char *runpath = NULL; /* existing effective LD_LIBRARY_PATH setting */ + char* new_runpath = NULL; /* desired new LD_LIBRARY_PATH string */ + char* newpath = NULL; /* path on new LD_LIBRARY_PATH */ + char* lastslash = NULL; + char** newenvp = NULL; /* current environment */ +#ifdef __solaris__ + char* dmpath = NULL; /* data model specific LD_LIBRARY_PATH, + Solaris only */ +#endif /* __solaris__ */ +#endif /* SETENV_REQUIRED */ char** newargv = NULL; int newargc = 0; @@ -300,9 +485,18 @@ CreateExecutionEnvironment(int *pargc, char ***pargv, } /* * we seem to have everything we need, so without further ado - * we return back. + * we return back, otherwise proceed to set the environment. */ +#ifdef SETENV_REQUIRED + mustsetenv = RequiresSetenv(wanted, jvmpath); + JLI_TraceLauncher("mustsetenv: %s\n", mustsetenv ? "TRUE" : "FALSE"); + + if (mustsetenv == JNI_FALSE) { + return; + } +#else return; +#endif /* SETENV_REQUIRED */ } else { /* do the same speculatively or exit */ #ifdef DUAL_MODE if (running != wanted) { @@ -331,67 +525,240 @@ CreateExecutionEnvironment(int *pargc, char ***pargv, /* exec child can do error checking on the existence of the path */ jvmpathExists = GetJVMPath(jrepath, jvmtype, jvmpath, so_jvmpath, GetArchPath(wanted)); - +#ifdef SETENV_REQUIRED + mustsetenv = RequiresSetenv(wanted, jvmpath); +#endif /* SETENV_REQUIRED */ } #else JLI_ReportErrorMessage(JRE_ERROR2, wanted); exit(1); #endif - } + } +#ifdef SETENV_REQUIRED + if (mustsetenv) { + /* + * We will set the LD_LIBRARY_PATH as follows: + * + * o $JVMPATH (directory portion only) + * o $JRE/lib/$LIBARCHNAME + * o $JRE/../lib/$LIBARCHNAME + * + * followed by the user's previous effective LD_LIBRARY_PATH, if + * any. + */ + +#ifdef __solaris__ + /* + * Starting in Solaris 7, ld.so.1 supports three LD_LIBRARY_PATH + * variables: + * + * 1. LD_LIBRARY_PATH -- used for 32 and 64 bit searches if + * data-model specific variables are not set. + * + * 2. LD_LIBRARY_PATH_64 -- overrides and replaces LD_LIBRARY_PATH + * for 64-bit binaries. + * + * 3. LD_LIBRARY_PATH_32 -- overrides and replaces LD_LIBRARY_PATH + * for 32-bit binaries. + * + * The vm uses LD_LIBRARY_PATH to set the java.library.path system + * property. To shield the vm from the complication of multiple + * LD_LIBRARY_PATH variables, if the appropriate data model + * specific variable is set, we will act as if LD_LIBRARY_PATH had + * the value of the data model specific variant and the data model + * specific variant will be unset. Note that the variable for the + * *wanted* data model must be used (if it is set), not simply the + * current running data model. + */ + + switch (wanted) { + case 0: + if (running == 32) { + dmpath = getenv("LD_LIBRARY_PATH_32"); + wanted = 32; + } else { + dmpath = getenv("LD_LIBRARY_PATH_64"); + wanted = 64; + } + break; + + case 32: + dmpath = getenv("LD_LIBRARY_PATH_32"); + break; - { - char *newexec = execname; + case 64: + dmpath = getenv("LD_LIBRARY_PATH_64"); + break; + + default: + JLI_ReportErrorMessage(JRE_ERROR3, __LINE__); + exit(1); /* unknown value in wanted */ + break; + } + + /* + * If dmpath is NULL, the relevant data model specific variable is + * not set and normal LD_LIBRARY_PATH should be used. + */ + if (dmpath == NULL) { + runpath = getenv("LD_LIBRARY_PATH"); + } else { + runpath = dmpath; + } +#else + /* + * If not on Solaris, assume only a single LD_LIBRARY_PATH + * variable. + */ + runpath = getenv("LD_LIBRARY_PATH"); +#endif /* __solaris__ */ + + /* runpath contains current effective LD_LIBRARY_PATH setting */ + + jvmpath = JLI_StringDup(jvmpath); + new_runpath = JLI_MemAlloc(((runpath != NULL) ? JLI_StrLen(runpath) : 0) + + 2 * JLI_StrLen(jrepath) + 2 * JLI_StrLen(arch) + + JLI_StrLen(jvmpath) + 52); + newpath = new_runpath + JLI_StrLen("LD_LIBRARY_PATH="); + + + /* + * Create desired LD_LIBRARY_PATH value for target data model. + */ + { + /* remove the name of the .so from the JVM path */ + lastslash = JLI_StrRChr(jvmpath, '/'); + if (lastslash) + *lastslash = '\0'; + + sprintf(new_runpath, "LD_LIBRARY_PATH=" + "%s:" + "%s/lib/%s:" + "%s/../lib/%s", + jvmpath, #ifdef DUAL_MODE - /* - * If the data model is being changed, the path to the - * executable must be updated accordingly; the executable name - * and directory the executable resides in are separate. In the - * case of 32 => 64, the new bits are assumed to reside in, e.g. - * "olddir/LIBARCH64NAME/execname"; in the case of 64 => 32, - * the bits are assumed to be in "olddir/../execname". For example, - * - * olddir/sparcv9/execname - * olddir/amd64/execname - * - * for Solaris SPARC and Linux amd64, respectively. - */ + jrepath, GetArchPath(wanted), + jrepath, GetArchPath(wanted) +#else + jrepath, arch, + jrepath, arch +#endif + ); + + + /* + * Check to make sure that the prefix of the current path is the + * desired environment variable setting, though the RequiresSetenv + * checks if the desired runpath exists, this logic does a more + * comprehensive check. + */ + if (runpath != NULL && + JLI_StrNCmp(newpath, runpath, JLI_StrLen(newpath)) == 0 && + (runpath[JLI_StrLen(newpath)] == 0 || runpath[JLI_StrLen(newpath)] == ':') && + (running == wanted) /* data model does not have to be changed */ +#ifdef __solaris__ + && (dmpath == NULL) /* data model specific variables not set */ +#endif + ) { - if (running != wanted) { - char *oldexec = JLI_StrCpy(JLI_MemAlloc(JLI_StrLen(execname) + 1), execname); - char *olddir = oldexec; - char *oldbase = JLI_StrRChr(oldexec, '/'); + return; + + } + } + /* + * Place the desired environment setting onto the prefix of + * LD_LIBRARY_PATH. Note that this prevents any possible infinite + * loop of execv() because we test for the prefix, above. + */ + if (runpath != 0) { + JLI_StrCat(new_runpath, ":"); + JLI_StrCat(new_runpath, runpath); + } - newexec = JLI_MemAlloc(JLI_StrLen(execname) + 20); - *oldbase++ = 0; - sprintf(newexec, "%s/%s/%s", olddir, - ((wanted==64) ? LIBARCH64NAME : ".."), oldbase); - argv[0] = newexec; - } + if (putenv(new_runpath) != 0) { + exit(1); /* problem allocating memory; LD_LIBRARY_PATH not set + properly */ + } + + /* + * Unix systems document that they look at LD_LIBRARY_PATH only + * once at startup, so we have to re-exec the current executable + * to get the changed environment variable to have an effect. + */ + +#ifdef __solaris__ + /* + * If dmpath is not NULL, remove the data model specific string + * in the environment for the exec'ed child. + */ + if (dmpath != NULL) + (void)UnsetEnv((wanted == 32) ? "LD_LIBRARY_PATH_32" : "LD_LIBRARY_PATH_64"); #endif - JLI_TraceLauncher("TRACER_MARKER:About to EXEC\n"); - (void)fflush(stdout); - (void)fflush(stderr); - execv(newexec, argv); - JLI_ReportErrorMessageSys(JRE_ERROR4, newexec); -#ifdef DUAL_MODE - if (running != wanted) { - JLI_ReportErrorMessage(JRE_ERROR5, wanted, running); -# ifdef __solaris__ -# ifdef __sparc - JLI_ReportErrorMessage(JRE_ERROR6); -# else - JLI_ReportErrorMessage(JRE_ERROR7); -# endif + newenvp = environ; } -# endif -#endif +#endif /* SETENV_REQUIRED */ + { + char *newexec = execname; +#ifdef DUAL_MODE + /* + * If the data model is being changed, the path to the + * executable must be updated accordingly; the executable name + * and directory the executable resides in are separate. In the + * case of 32 => 64, the new bits are assumed to reside in, e.g. + * "olddir/LIBARCH64NAME/execname"; in the case of 64 => 32, + * the bits are assumed to be in "olddir/../execname". For example, + * + * olddir/sparcv9/execname + * olddir/amd64/execname + * + * for Solaris SPARC and Linux amd64, respectively. + */ + + if (running != wanted) { + char *oldexec = JLI_StrCpy(JLI_MemAlloc(JLI_StrLen(execname) + 1), execname); + char *olddir = oldexec; + char *oldbase = JLI_StrRChr(oldexec, '/'); + + + newexec = JLI_MemAlloc(JLI_StrLen(execname) + 20); + *oldbase++ = 0; + sprintf(newexec, "%s/%s/%s", olddir, + ((wanted == 64) ? LIBARCH64NAME : ".."), oldbase); + argv[0] = newexec; + } +#endif /* DUAL_MODE */ + JLI_TraceLauncher("TRACER_MARKER:About to EXEC\n"); + (void) fflush(stdout); + (void) fflush(stderr); +#ifdef SETENV_REQUIRED + if (mustsetenv) { + execve(newexec, argv, newenvp); + } else { + execv(newexec, argv); + } +#else + execv(newexec, argv); +#endif /* SETENV_REQUIRED */ + JLI_ReportErrorMessageSys(JRE_ERROR4, newexec); - } - exit(1); - } +#ifdef DUAL_MODE + if (running != wanted) { + JLI_ReportErrorMessage(JRE_ERROR5, wanted, running); +#ifdef __solaris__ +#ifdef __sparc + JLI_ReportErrorMessage(JRE_ERROR6); +#else + JLI_ReportErrorMessage(JRE_ERROR7); +#endif /* __sparc */ + } +#endif /* __solaris__ */ +#endif /* DUAL_MODE */ + } + exit(1); + } } /* diff --git a/src/solaris/doc/sun/man/man1/ja/appletviewer.1 b/src/solaris/doc/sun/man/man1/ja/appletviewer.1 index e7b128d68691e4d41bf2a120cfa5ca370e0e40c1..fcbcc19a43bca8d71af4bf1fac9883f202224a9b 100644 --- a/src/solaris/doc/sun/man/man1/ja/appletviewer.1 +++ b/src/solaris/doc/sun/man/man1/ja/appletviewer.1 @@ -19,54 +19,44 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH appletviewer 1 "02 Jun 2010" +.TH appletviewer 1 "14 Apr 2011" .LP -.SH "名前" -appletviewer \- Java アプレットビューア -.LP -.RS 3 - +.SH "̾" +appletviewer \- Java ץåȥӥ塼 .LP .LP -\f3appletviewer\fP コマンドは Web ブラウザの外でアプレットを実行させます。 -.LP -.RE -.SH "形式" +\f3appletviewer\fP ޥɤ Web ֥饦γǥץåȤ¹Ԥޤ .LP - +.SH "" .LP .LP \f4appletviewer\fP \f2[\fP \f2options\fP \f2] \fP\f2urls\fP ... .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3appletviewer\fP コマンドは \f2urls\fP に指定されたドキュメントあるいはリソースと接続して、そのドキュメントが参照するそれぞれのアプレットを独自のウィンドウで表示します。注: \f2urls\fP によって参照されたドキュメントが、\f2OBJECT\fP、\f2EMBED\fP、または \f2APPLET\fP タグでどのアプレットも参照していない場合、\f3appletviewer\fP は何も行いません。\f3appletviewer\fP でサポートされる HTML タグの詳細については、 +\f3appletviewer\fP ޥɤ \f2urls\fP ˻ꤵ줿ɥȤ뤤ϥ꥽³ơΥɥȤȤ뤽줾ΥץåȤȼΥɥɽޤ: \f2urls\fP ˤäƻȤ줿ɥȤ\f2OBJECT\fP\f2EMBED\fPޤ \f2APPLET\fP ǤɤΥץåȤ⻲ȤƤʤ硢\f3appletviewer\fP ϲԤޤ\f3appletviewer\fP ǥݡȤ HTML ξܺ٤ˤĤƤϡ .na -\f2「アプレットビューアのタグ」\fP @ +\f2֥ץåȥӥ塼Υ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/appletviewertags.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/tools/appletviewertags.html򻲾ȤƤ .LP .LP -\f3注:\fP \f3appletviewer\fP は、RFC2396 で規定されたエスケープ機構に従って符号化された URL を必要とします。サポートされるのは、符号化された URL だけです。ただし、ファイル名については、RFC2396 に指定された方法で符号化を解除しておく必要があります。 +\f3:\fP \f3appletviewer\fP ϡRFC2396 ǵꤵ줿׵˽ä沽줿 URL ɬפȤޤݡȤΤϡ沽줿 URL Ǥե̾ˤĤƤϡRFC2396 ˻ꤵ줿ˡ沽Ƥɬפޤ .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-debug -Java デバッガ jdb(1) でアプレットビューアを開始します。 これにより、ドキュメント中のアプレットをデバッグすることができます。 +Java ǥХå jdb(1) ǥץåȥӥ塼򳫻ϤޤˤꡢɥΥץåȤǥХå뤳ȤǤޤ .TP 3 \-encoding \ \ encoding name -入力 HTML ファイルのエンコーディング名を指定します。 + HTML եΥ󥳡ǥ̾ꤷޤ .TP 3 \-Jjavaoption -文字列 \f2javaoption\fP は、appletviewer を実行する Java インタプリタに 1 つの引数として渡されます。引数にスペースを含めてはいけません。複数の引数は、各引数のすべてを接頭辞 \f3\-J\fP で始めることにより区分する必要があります。これは、コンパイラの実行環境、またはメモリーの利用に有効です。 +ʸ \f2javaoption\fP ϡappletviewer ¹Ԥ Java 󥿥ץ꥿ 1 ĤΰȤϤޤ˥ڡޤƤϤޤʣΰϡưΤ٤ƤƬ \f3\-J\fP ǻϤ뤳Ȥˤʬɬפޤϡѥμ¹ԴĶޤϥ꡼ѤͭǤ .RE .LP diff --git a/src/solaris/doc/sun/man/man1/ja/apt.1 b/src/solaris/doc/sun/man/man1/ja/apt.1 index 45f9ebb16ff1df991a4ee87eeb409c13bfa553cd..6255300f0aa81ffbaa1b094aff79c5c0b185ce81 100644 --- a/src/solaris/doc/sun/man/man1/ja/apt.1 +++ b/src/solaris/doc/sun/man/man1/ja/apt.1 @@ -19,102 +19,133 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH apt 1 "02 Jun 2010" +.TH apt 1 "14 Apr 2011" .LP .SH "NAME" .LP .LP -\f2apt\fP \- 注釈処理ツール +\f2apt\fP \- ġ .LP -.SH "形式" +.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] +\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 "パラメータ" +.SH "ѥ᡼" .LP .LP -オプションは順不同です。特定のオプションに適用されるパラメータについては、下記の「オプション」を参照してください。 +ץλ˷ޤϤޤΥץŬѤѥ᡼ˤĤƤϡΡ֥ץפ򻲾ȤƤ .LP .RS 3 .TP 3 sourcefiles -ゼロ、1 つ、または複数の処理対象のソースファイル +1 ġޤʣνоݤΥե .TP 3 @files -ソースファイルまたは他のオプションを一覧表示する 1 つまたは複数のファイル +եޤ¾Υץɽ 1 ĤޤʣΥե .RE .LP -.SH "説明" +.SH "" .LP .LP -注釈処理ツール \f2apt\fP は、新しいリフレクト API とサポートインフラストラクチャーから構成され、プログラム注釈を処理します。\f2apt\fP リフレクト API は、 構築時のソースベースで、プログラム構造に関する読み取り専用ビューを提供します。これらのリフレクト API は、総称を追加した後に、Java(TM) プログラミング言語の型システムを正しくモデル化するように設計されています。最初に、\f2apt\fP は、新しいソースコードと他のファイルを作成する注釈プロセッサを実行します。次に、\f2apt\fP は、元のソースファイルと生成したソースファイルの両方をコンパイルするため、開発が楽になります。ツールとのインタフェースに使用されるリフレクト API などの API は、\f2com.sun.mirror\fP のサブパッケージです。 +ġ \f2apt\fP ϡե쥯 API ȥݡȥե饹ȥ饯㡼鹽졢ץޤ\f2apt\fP ե쥯 API ϡ ۻΥ١ǡץ๽¤˴ؤɤ߼ѥӥ塼󶡤ޤΥե쥯 API ϡΤɲäˡJava(TM) ץߥ󥰸ηƥǥ벽褦߷פƤޤǽˡ\f2apt\fP ϡɤ¾Υեץå¹Ԥޤˡ\f2apt\fP ϡΥեեξ򥳥ѥ뤹뤿ᡢȯڤˤʤޤġȤΥ󥿥ե˻Ѥե쥯 API ʤɤ API ϡ\f2com.sun.mirror\fP Υ֥ѥåǤ .LP .LP -ツールの機能に関する詳細と、\f2apt\fP を使用した開発方法については、 +ġεǽ˴ؤܺ٤ȡ\f2apt\fP ѤȯˡˤĤƤϡ .na -\f4「\fP\f4apt\fP\f3 入門」\fP @ +\f4apt \fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/apt/GettingStarted.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/apt/GettingStarted.html򻲾ȤƤ .LP .RS 3 .TP 3 -注: -\f2apt\fP の機能は、\f2javac(1)\fP ツールの一部となった注釈処理インフラストラクチャーに組み込まれ、すべての Java コンパイラで使用できるように標準化されました。この新しいインフラストラクチャーは、言語モデルおよび Java プラットフォームの一部となった注釈処理 API に依存します。注釈プロセッサの開発は、新しい API および \f2javac\fP ツールに基づいて行うようお勧めします。 +: +\f2apt\fP εǽϡ\f2javac(1)\fP ġΰȤʤäե饹ȥ饯㡼Ȥ߹ޤ졢٤Ƥ Java ѥǻѤǤ褦ɸಽޤοե饹ȥ饯㡼ϡǥ뤪 Java ץåȥեΰȤʤä API ˰¸ޤץåγȯϡ API \f2javac\fP ġ˴ŤƹԤ褦ᤷޤ .RE .LP -.SH "オプション" +.SH "ץ" .LP .SS -apt 固有のオプション +apt ͭΥץ .LP .RS 3 .TP 3 \-s dir -プロセッサの生成するソースファイルを置くディレクトリルートを指定します。 ファイルは、パッケージの名前空間に基づいてサブディレクトリに置かれます。 +ץå륽ե֤ǥ쥯ȥ롼Ȥꤷޤ եϡѥå֤̾˴Ťƥ֥ǥ쥯ȥ֤ޤ .TP 3 \-nocompile -ソースファイルをクラスファイルにコンパイルしません。 +ե򥯥饹ե˥ѥ뤷ޤ .TP 3 \-print -指定したタイプのテキスト表現を出力します。 注釈処理またはコンパイルは行いません。 +ꤷפΥƥɽϤޤ ޤϥѥϹԤޤ .TP 3 \-A[key[=val]] -注釈プロセッサへ渡すオプションです。 このオプションは、\f2apt\fP が直接解釈するのではなく、それぞれのプロセッサによって使用できるように変えられます。 +ץåϤץǤ Υץϡ\f2apt\fP ľ᤹ܲΤǤϤʤ줾ΥץåˤäƻѤǤ褦Ѥޤ .TP 3 \-factorypath path -注釈プロセッサファクトリを検索する場所を指定します。 このオプションを使用する場合、クラスパスのファクトリは検索されません。 +ץåեȥ򸡺ꤷޤ ΥץѤ硢饹ѥΥեȥϸޤ .TP 3 \-factory classname -使用する注釈プロセッサファクトリの名前です。 デフォルトの検出プロセスを省略します。 +Ѥץåեȥ̾Ǥ ǥեȤθХץάޤ +.TP 3 +\-version +СϤޤ +.TP 3 +\-X +ɸ४ץ˴ؤɽޤ .RE .LP .SS -javac と共用するオプション +javac ȶѤ륪ץ .LP .RS 3 .TP 3 \-d dir -プロセッサと javac 生成のクラスファイルを置く場所を指定します。 +ץå javac Υ饹ե֤ꤷޤ +.TP 3 +\-cp path ޤ \-classpath path +桼饹եץåեȥ򸡺ꤷޤ\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 -\-cp path or \-classpath path -ユーザークラスファイルと注釈プロセッサファクトリを検索する場所を指定します。\f2\-factorypath\fP が指定されている場合、クラスパスのファクトリは検索されません。 +\-XclassesAsDecls +饹եȥեξ򡢽оݤȤƽޤ .RE .LP .LP -\f2javac\fP オプションの詳細については、javac(1) のマニュアルページを参照してください。 +\f3\fP: ɸ४ץʤΤǡͽʤѹǽޤ .LP -.SH "注" +.SH "" .LP .LP -\f2apt\fP の機能は、\f2javac\fP により提供される標準注釈処理インフラストラクチャーに組み込まれました。今後の JDK リリースでは、\f2apt\fP および関連する API のサポートが中止する可能性があります。 +\f2apt\fP εǽϡ\f2javac\fP ˤ󶡤ɸե饹ȥ饯㡼Ȥ߹ޤޤ JDK ꡼Ǥϡ\f2apt\fP ӴϢ API ΥݡȤߤǽޤ .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 diff --git a/src/solaris/doc/sun/man/man1/ja/extcheck.1 b/src/solaris/doc/sun/man/man1/ja/extcheck.1 index ea241914df3969b54e273b530e796bb7cdc0dd65..9cc66788eb7af0c318809a8b5cbd6566c8e95861 100644 --- a/src/solaris/doc/sun/man/man1/ja/extcheck.1 +++ b/src/solaris/doc/sun/man/man1/ja/extcheck.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH extcheck 1 "02 Jun 2010" +.TH extcheck 1 "14 Apr 2011" .LP -.SH "名前" -extcheck \- jar の競合検出ユーティリティー -.LP -.RS 3 - +.SH "̾" +extcheck \- jar ζ縡Х桼ƥƥ .LP .LP -\f3extcheck\fP は、ターゲットの jar ファイルと現在インストールされている拡張機能の jar ファイル間のバージョンの競合を検出します。 +\f3extcheck\fP ϡåȤ jar եȸߥ󥹥ȡ뤵Ƥĥǽ jar ե֤ΥСζ򸡽Фޤ .LP -.RE -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -45,39 +39,33 @@ extcheck [ \-verbose ] targetfile.jar .fi .LP -.SH "説明" +.SH "" .LP - -.LP -.LP -\f3extcheck\fP ユーティリティーは、指定された Jar ファイルのタイトルおよびバージョンが Java(TM) 2 SDK にインストールされている拡張機能と競合していないかをチェックします。拡張機能をインストールする前に、このユーティリティーを使って、バージョンが同じか、より新しい拡張機能がすでにインストールされていないかどうかを調べることができます。 .LP +\f3extcheck\fP 桼ƥƥϡꤵ줿 Jar եΥȥ뤪ӥС Java(TM) 2 SDK ˥󥹥ȡ뤵Ƥĥǽȶ礷Ƥʤåޤĥǽ򥤥󥹥ȡ뤹ˡΥ桼ƥƥȤäơСƱ꿷ĥǽǤ˥󥹥ȡ뤵ƤʤɤĴ٤뤳ȤǤޤ .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 +\f3extcheck\fP 桼ƥƥϡtargetfile.jar եΥޥ˥եΥإå \f2Specification\-title\fP \f2Specification\-version\fP 򡢳ĥǽǥ쥯ȥ˸ߥ󥹥ȡ뤵Ƥ \f2٤Ƥ Jar ե\fP бإåӤޤǥեȤǤϡĥǽǥ쥯ȥϡ\f2jre/lib/ext\fP Ǥ\f3extcheck\fP 桼ƥƥϡ\f2java.lang.Package.isCompatibleWith\fP ᥽åɤƱͤˡǥСֹӤޤ .LP -競合が検出されない場合のリターンコードは \f20\fP です。 .LP +礬ФʤΥ꥿󥳡ɤ \f20\fP Ǥ .LP -拡張機能ディレクトリ内のいずれかの jar ファイルのマニフェストに、同一の \f2Specification\-title\fP、および同一またはより新しい \f2Specification\-version\fP 番号がある場合は、ゼロでないエラーコードが返されます。\f2targetfile.jar\fP のマニフェストに \f2Specification\-title\fP または \f2Specification\-version\fP 属性がない場合も、ゼロでないエラーコードが返されます。 .LP -.SH "オプション" +ĥǽǥ쥯ȥΤ줫 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 ファイルについても報告します。 +ĥǽǥ쥯ȥ Jar ե򡢥å˰ɽޤޤå jar եΥޥ˥եȤ°Ӷ礹 jar եˤĤƤ𤷤ޤ .TP 3 \-Joption -Java 仮想マシンに \f2option\fP を渡します。 \f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ .RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP jar(1) diff --git a/src/solaris/doc/sun/man/man1/ja/idlj.1 b/src/solaris/doc/sun/man/man1/ja/idlj.1 index adb0061abecbb378dc7af83cb282deb153cff6eb..0a05be7383afce7bcb2eecac5f28fec320d59976 100644 --- a/src/solaris/doc/sun/man/man1/ja/idlj.1 +++ b/src/solaris/doc/sun/man/man1/ja/idlj.1 @@ -19,20 +19,14 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH idlj 1 "02 Jun 2010" +.TH idlj 1 "14 Apr 2011" .LP -.SH "名前" -idlj \- IDL\-to\-Java コンパイラ +.SH "̾" +idlj \- IDL\-to\-Java ѥ .LP -.RS 3 - -.LP -\f3idlj\fP は、指定された IDL ファイルから Java バインディングを生成します。 -.RE -.SH "形式" -.LP - +\f3idlj\fP ϡꤵ줿 IDL ե뤫 Java Хǥ󥰤ޤ +.SH "" .LP .nf \f3 @@ -44,68 +38,118 @@ idlj [ \fP\f3options\fP\f3 ] \fP\f4idl\-file\fP\f3 .LP .LP -\f2idl\-file\fP は、インタフェース定義言語 (IDL) による定義が入ったファイルの名前です。\f2options\fP の順番は任意ですが、\f2idl\-file\fP よりも前に指定しなければなりません。 +\f2idl\-file\fP ϡ󥿥ե (IDL) ˤäե̾Ǥ\f2options\fP ν֤ǤդǤ\f2idl\-file\fP ˻ꤷʤФʤޤ .LP -.SH "説明" +.SH "" .LP - .LP -IDL\-to\-Java コンパイラは、指定された IDL ファイルについて Java バインディングを生成します。 バインディングの詳細は、 +IDL\-to\-Java ѥϡꤵ줿 IDL եˤĤ Java Хǥ󥰤ޤХǥ󥰤ξܺ٤ϡ .na \f2OMG IDL to Java Language Mapping Specification\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/mapping/jidlMapping.html を参照してください。IDL\-to\-Java コンパイラの以前のリリースの中には、\f2idltojava\fP という名前だったものがあります。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/mapping/jidlMapping.html 򻲾ȤƤIDL\-to\-Java ѥΰΥ꡼ˤϡ\f2idltojava\fP Ȥ̾äΤޤ +.LP .SS -クライアントバインディングおよびサーバーバインディングの発行 +饤ȥХǥ󥰤ӥСХǥ󥰤ȯ .LP -.RS 3 +.LP +My.idl Ȥ̾ IDL եФ Java Хǥ󥰤ˤϡΥޥɤ¹Ԥޤ +.LP +.nf +\f3 +.fl +idlj My.idl +.fl +\fP +.fi .LP -My.idl という名前の IDL ファイルに対して Java バインディングを生成するには、次のコマンドを実行します。 \f2idlj My.idl\fP .LP -これにより、クライアント側のバインディングが生成されます。 このコマンドは、次のコマンドと等価です。 \f2idlj \fP\f4\-fclient\fP\f2 My.idl\fP +ˤꡢ饤¦ΥХǥ󥰤ޤΥޥɤϡΥޥɤǤ .LP -クライアント側のバインディングには、サーバー側のスケルトンは組み込まれていません。インタフェースに対してサーバー側のバインディングを生成するには、次のコマンドを実行します。 \f2idlj \fP\f4\-fserver\fP\f2 My.idl\fP +.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 -サーバー側のバインディングには、クライアント側のバインディングに加えて、スケルトンが組み込まれてています。 これらは、すべて \f2POA\fP (継承モデル) クラスです。クライアント側とサーバー側の両方のバインディングを生成する場合は、次のコマンド (どれも等価) のうちの 1 つを使用します。 \f2idlj \fP\f4\-fclient \-fserver\fP\f2 My.idl\fP -.br -\f2idlj \fP\f4\-fall\fP\f2 My.idl\fP +.nf +\f3 +.fl +idlj \fP\f3\-fclient \-fserver\fP My.idl +.fl +idlj \f3\-fall\fP My.idl +.fl +.fi + .LP .LP -サーバー側のモデルとしては、2 つのモデルが可能です。それは、継承モデルと、Tie 委譲モデルです。 +С¦Dzǽʥǥ 2 ĤޤѾǥ Tie ѾǥǤ .LP .LP -デフォルトのサーバー側のモデルは、「移殖可能サーバント継承モデル」です。\f2My.idl\fP 内で \f2My\fP インタフェースが定義されている場合は、\f2MyPOA.java\fP というファイルが生成されます。\f2My\fP に対してその実装を提供し、この実装は \f2_MyPOA\fP から継承する必要があります。 +ǥեȤΥС¦ΥǥϡְܿǽХȷѾǥפǤ\f2My.idl\fP \f2My\fP 󥿥եƤϡ\f2MyPOA.java\fP Ȥե뤬ޤμ \f2My\fP 󶡤\f2MyPOA\fP Ѿɬפޤ .LP .LP -\f2MyPOA.java\fP は +\f2MyPOA.java\fP .na \f2org.omg.PortableServer.Servant\fP @ .fi -http://java.sun.com/javase/6/docs/api/org/omg/PortableServer/Servant.html を拡張するストリームベースのスケルトンで、スケルトンが実装する IDL インタフェースに関連付けられている \f2InvokeHandler\fP インタフェースとオペレーションインタフェースを実装します。 +http://java.sun.com/javase/6/docs/api/org/omg/PortableServer/Servant.html ĥ륹ȥ꡼١Υȥǡȥ󤬼 IDL 󥿥ե˴ϢդƤ \f2InvokeHandler\fP 󥿥եȥڥ졼󥤥󥿥եޤ .LP .LP .na \f2Portable Object Adapter (POA)\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/POA.html の \f2PortableServer\fP モジュールは、ネイティブの \f2Servant\fP 型を定義します。Java プログラミング言語では、\f2Servant\fP 型は、Java の \f2org.omg.PortableServer.Servant\fP クラスにマッピングされています。これはあらゆる POA サーバント実装の基底クラスとなり多数のメソッドを提供します。 これらのメソッドはアプリケーションプログラマが呼び出すだけではなく、POA 自身からも呼び出され、場合によってはサーバントの動作を制御するためにユーザーがオーバーライドすることもあります。 +http://java.sun.com/javase/6/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 ベースのサーバー側マッピングが生成されます。下位互換性のあるサーバー側バインディングを生成するには、次のコマンドを使用します。 +ѾǥΤ⤦ 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 -\f2idlj \fP\f4\-fclient \-fserver\fP\f2 \fP\f4\-oldImplBase\fP\f2 My.idl\fP -.br -\f2idlj \fP\f4\-fall\fP\f2 \fP\f4\-oldImplBase\fP\f2 My.idl\fP .LP -\f2My.idl\fP 内で \f2My\fP インタフェースが定義されている場合は、\f2_MyImplBase.java\fP というファイルが生成されます。\f2My\fP に対してその実装を提供し、この実装は \f2_MyImplBase\fP から継承しなければなりません。 +\f2My.idl\fP \f2My\fP 󥿥եƤϡ\f2_MyImplBase.java\fP Ȥե뤬ޤ\f2My\fP ФƤμ󶡤μ \f2_MyImplBase\fP ѾʤФʤޤ .LP -もう 1 つのサーバー側モデルは、Tie モデルと呼ばれるものです。このサーバー側モデルは、委譲モデルです。Tie とスケルトンを同時に生成することはできないため、それらは別々に生成しなければなりません。次のコマンドによって、Tie モデル用のバインディングが生成されます。 .LP -\f2idlj \fP\f4\-fall\fP\f2 My.idl\fP -.br -\f2idlj \fP\f4\-fallTIE\fP\f2 My.idl\fP +⤦ 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 -\f2My\fP というインタフェースの場合、上記の 2 番目のコマンドにより、\f2MyPOATie.java\fP が生成されます。\f2MyPOATie\fP のコンストラクタは、\f2delegate\fP を取ります。この例では、デフォルトの POA モデルを使用しているため、コンストラクタにも \f2poa\fP が必要です。\f2delegate\fP に対して実装を提供しなければなりませんが、この実装は \f2MyOperations\fP インタフェースから継承する必要があるだけで、その他のクラスから継承する必要はありません。しかし、この実装を ORB と一緒に使用するには、\f2MyPOATie\fP 内で実装をラップしなければなりません。たとえば、次のようにします。 .nf \f3 .fl @@ -143,16 +187,24 @@ http://java.sun.com/javase/6/docs/technotes/guides/idl/POA.html の \f2PortableS .fi .LP -他の実装から継承しなければならない場合、標準の継承モデルではなく Tie モデルを使用することがあります。Java の場合は、インタフェースの継承の個数に制限はありませんが、クラスの継承に使用できるスロットは 1 つだけです。継承モデルを使用した場合は、そのスロットが占有されます。Tie モデルを使用した場合は、そのスロットが使用されず、ユーザーが独自の目的で使用することができます。ただし、間接参照のレベルが 1 つ導入されるという欠点があります。つまり、メソッドを呼び出すときに余分なメソッド呼び出しが発生します。 .LP -IDL のバージョンから J2SE 1.4 より前のバージョンの Java 言語へのマッピングと互換性のある、サーバー側の Tie モデルのバインディングを生成するには、次のコマンドを使用します。 +¾μѾʤФʤʤ硢ɸηѾǥǤϤʤ Tie ǥѤ뤳ȤޤJava ξϡ󥿥եηѾθĿ¤Ϥޤ󤬡饹ηѾ˻ѤǤ륹åȤ 1 ĤǤѾǥѤϡΥåȤͭޤTie ǥѤϡΥåȤѤ줺桼ȼŪǻѤ뤳ȤǤޤˡˤϡΥ٥뤬 1 ƳȤޤ᥽åɤƤӽФȤˡ;ʬʥ᥽åɸƤӽФ 1 ȯޤ .LP -\f2idlj \fP\f4\-oldImplBase\fP\f2 \fP\f4\-fall\fP\f2 My.idl\fP -.br -\f2idlj \fP\f4\-oldImplBase\fP\f2 \fP\f4\-fallTIE\fP\f2 My.idl\fP .LP +IDL ΥС󤫤 J2SE 1.4 ΥС Java ؤΥޥåԥ󥰤ȸߴΤ롢С¦ 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 -\f2My\fP というインタフェースの場合、これにより \f2My_Tie.java\fP が生成されます。\f2My_Tie\fP のコンストラクタは、\f2impl\fP を取ります。\f2impl\fP に対して実装を提供しなければなりませんが、その実装は \f2HelloOperations\fP インタフェースから継承する必要があるだけで、その他のクラスから継承する必要はありません。しかし、この実装を ORB と一緒に使用するには、\f2My_Tie\fP 内で実装をラップしなければなりません。たとえば、次のようにします。 +.LP +\f2My\fP Ȥ󥿥եξ硢ˤ \f2My_Tie.java\fP ޤ\f2My_Tie\fP Υ󥹥ȥ饯ϡ\f2impl\fP ޤ\f2impl\fP ФƼ󶡤ʤФʤޤ󤬡μ \f2HelloOperations\fP 󥿥եѾɬפǡ¾Υ饹ѾɬפϤޤ󡣤μ ORB Ȱ˻Ѥˤϡ\f2My_Tie\fP ǼåפʤФʤޤ󡣤ȤСΤ褦ˤޤ .LP .nf \f3 @@ -183,201 +235,383 @@ IDL のバージョンから J2SE 1.4 より前のバージョンの Java 言語 .fi .LP -.RE .SS -発行されたファイルの代替位置の指定 +ȯԤ줿եذ֤λ .LP -.RS 3 - .LP -発行されたファイルをカレントディレクトリ以外のディレクトリに置くには、次のようなコマンドでコンパイラを呼び出します。 -.RS 3 +ȯԤ줿ե򥫥ȥǥ쥯ȥʳΥǥ쥯ȥ֤ˤϡΤ褦ʥޥɤǥѥƤӽФޤ +.LP +.nf +\f3 +.fl +idlj \fP\f3\-td /altdir\fP My.idl +.fl +.fi .LP -\f2idlj \fP\f4\-td /altdir\fP\f2 My.idl\fP -.RE -\f2My\fP インタフェースの場合、バインディングは、\f2./My.java\fP ではなく、\f2/altdir/My.java\fP などに発行されます。 -.RE +.LP +\f2My\fP 󥿥եξ硢Хǥ󥰤ϡ\f2./My.java\fP ǤϤʤ\f2/altdir/My.java\fP ʤɤȯԤޤ +.LP .SS -インクルードファイルの代替位置の指定 +󥯥롼ɥեذ֤λ .LP -.RS 3 +.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 -\f2My.idl\fP にもう 1 つの IDL ファイル \f2MyOther.idl\fP がインクルードされている場合、コンパイラは、ローカルディレクトリに \f2MyOther.idl\fP があるものと想定します。もしそのファイルが、たとえば \f2/includes\fP にある場合は、次のようなコマンドでコンパイラを呼び出します。 \f2idlj \fP\f4\-i /includes\fP\f2 My.idl\fP .LP -また、もし \f2My.idl\fP に、たとえば \f2/moreIncludes\fP にある \f2Another.idl\fP もインクルードされているのであれば、次のようなコマンドでコンパイラを呼び出します。 \f2idlj \fP\f4\-i /includes \-i /moreIncludes\fP\f2 My.idl\fP +ޤ⤷ \f2My.idl\fP ˡȤ \f2/moreIncludes\fP ˤ \f2Another.idl\fP ⥤󥯥롼ɤƤΤǤСΤ褦ʥޥɤǥѥƤӽФޤ .LP -このような形式でインクルードを指定すると、コマンドが長くて複雑になります。 そこで、インクルードファイルを検索する場所をコンパイラに指示するための別の方法が用意されています。この方法は、環境変数の考え方と似ています。CLASSPATH にリストされているディレクトリ内に \f2idl.config\fP という名前のファイルを作成します。その \f2idl.config\fP の中に、次のような形式の行を入れます。 \f2includes=/includes;/moreIncludes\fP +.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 -コンパイラは、このファイルを検索し、インクルードリストを読み込みます。この例では、ディレクトリの間の区切り文字はセミコロン (;) になっています。この区切り文字は、プラットフォームによって異なります。たとえば、Windows プラットフォームではセミコロンですが、Unix プラットフォームではコロンです。 \f2インクルード\fPの詳細については、 +.nf +\f3 +.fl +includes=/includes;/moreIncludes +.fl +\fP +.fi + +.LP +.LP +ѥϡΥե򸡺󥯥롼ɥꥹȤɤ߹ߤޤǤϡǥ쥯ȥδ֤ζڤʸϥߥ (;) ˤʤäƤޤζڤʸϡץåȥեˤäưۤʤޤȤСWindows ץåȥեǤϥߥǤUnix ץåȥեǤϥǤ \f2󥯥롼\fPξܺ٤ˤĤƤϡ .na -\f2CLASSPATH の設定\fP @ +\f2CLASSPATH \fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#general を参照してください。 -.RE +http://java.sun.com/javase/6/docs/technotes/tools/index.html#general 򻲾ȤƤ +.LP .SS -インクルードファイルに対するバインディングの発行 +󥯥롼ɥեФХǥ󥰤ȯ +.LP +.LP +ǥեȤǤϡޥɹԤ˻ꤷ IDL եƤ륤󥿥ե乽¤ΤʤɤˤĤƤΤߡJava Хǥ󥰤ޤ󥯥롼ɤ줿եƤ뷿ˤĤƤϡJava Хǥ󥰤ޤ󡣤ȤС 2 Ĥ IDL եˤĤƹͤƤߤޤ礦 .LP -.RS 3 .LP -デフォルトでは、コマンド行に指定した IDL ファイルで定義されているインタフェースや構造体などについてのみ、Java バインディングが生成されます。インクルードされたファイルで定義されている型については、Java バインディングは生成されません。たとえば、次の 2 つの IDL ファイルについて考えてみましょう。 \f4My.idl\fP -.LP -\f2#include <MyOther.idl>\fP -.br -\f2interface My\fP -.br -\f2{\fP -.br -\f2};\fP -.br -\f4MyOther.idl\fP -.LP -\f2interface MyOther\fP -.br -\f2{\fP -.br -\f2};\fP\ -.LP -次のコマンドでは、\f2My\fP に対する Java バインディングだけが生成されます。 \f2idlj My.idl\fP -.LP -\f2My.idl\fP で定義されている型と、\f2My.idl\fP にインクルードされたファイル (この例では \f2MyOther.idl\fP) で定義されている型すべてについて Java バインディングを生成するには、次のコマンドを使用します。 \f2idlj \fP\f4\-emitAll\fP\f2 My.idl\fP -.LP -このデフォルトの規則に関して注意しなければならないことがあります。グローバルスコープに指定した \f2#include\fP 文は、前述のとおりに処理されます。これらの \f2#include\fP 文は、インポート文と見なすことができます。それに対して、他の定義に囲まれたスコープ内に指定した \f2#include\fP 文は、本当の意味での \f2#include\fP 文として処理されます。 つまり、インクルードされたファイルにあるコードが、元のファイルにそのまま指定されているかのように処理され、それに対して Java バインディングが発行されます。次に例を示します。 \f4My.idl\fP -.LP -\f2#include <MyOther.idl>\fP -.br -\f2interface My\fP -.br -\f2{\fP -.br -\f2\ #include <Embedded.idl>\fP -.br -\f2};\ \fP \f4MyOther.idl\fP -.LP -\f2interface MyOther\fP -.br -\f2{\fP -.br -\f2};\ \fP \f4Embedded.idl\fP -.LP -\f2enum E {one, two, three};\fP\ -.LP -このとき、次のコマンドを実行すると、 \f2idlj My.idl\fP -.LP -次のような一連の Java ファイルが生成されます。 \f2./MyHolder.java\fP -.br -\f2./MyHelper.java\fP -.br -\f2./_MyStub.java\fP -.br -\f2./MyPackage\fP -.br -\f2./MyPackage/EHolder.java\fP -.br -\f2./MyPackage/EHelper.java\fP -.br -\f2./MyPackage/E.java\fP -.br -\f2./My.java\fP -.LP -インポート文と見なされる \f2#include\fP に定義されているため、\f2MyOther.java\fP は生成されません。ただし、本当の意味での \f2#include\fP で定義されているため、\f2E.java\fP は生成されます。さらに、\f2Embedded.idl\fP が \f2My\fP インタフェースのスコープ内にインクルードされていたため、\f2My\fP のスコープ内 (つまり、\f2MyPackage\fP 内) に生成されています。 -.LP -上記の例で \f2\-emitAll\fP フラグを使用すれば、インクルードされたすべてのファイルにあるすべての型が発行されます。 .LP -.RE -.SS -パッケージの接頭辞の挿入 +\f4My.idl\fP .LP -.RS 3 +.nf +\f3 +.fl +#include <MyOther.idl> +.fl +interface My +.fl +{ +.fl +}; +.fl +\fP +.fi .LP -ABC という名前の会社のために作業していて、次のような IDL ファイルを構築したとしましょう。 -.br -\f4Widgets.idl\fP + .LP -\f2module Widgets\fP -.br -\f2{\fP -.br -\f2\ interface W1 {...};\fP -.br -\f2\ interface W2 {...};\fP -.br -\f2};\fP\ .LP -このファイルに対して IDL\-to\-Java コンパイラを実行すると、\f2W1\fP および \f2W2\fP に対する Java バインディングが \f2Widgets\fP パッケージ内に生成されます。しかし、業界の慣例によると、会社のパッケージは、\f2com.<会社名>\fP という名前のパッケージ内に置くことになっています。そのため、\f2Widgets\fP パッケージでは不十分です。慣例に従うには、パッケージを \f2com.abc.Widgets\fP にする必要があります。このパッケージ接頭辞を \f2Widgets\fP モジュールに付加するには、次のコマンドを実行します。 \f2idlj \fP\f4\-pkgPrefix Widgets com.abc\fP\f2 Widgets.idl\fP +\f4MyOther.idl\fP .LP -\f2Widgets.idl\fP をインクルードしている IDL ファイルがある場合は、そのコマンドにも \f2\-pkgPrefix\fP フラグが必要です。このフラグを指定しないと、その IDL ファイルは、\f2com.abc.Widgets\fP パッケージではなく、\f2Widgets\fP パッケージを検索することになります。 +.nf +\f3 +.fl +interface MyOther +.fl +{ +.fl +}; +.fl +\fP +.fi + .LP -接頭辞が必要なパッケージがいくつもある場合は、前述の \f2idl.config\fP ファイルで接頭辞を指定するのが簡単です。パッケージの接頭辞を指定する行は、それぞれ次の形式で記述します。 + .LP -\f2PkgPrefix.<type>=<prefix>\fP .LP -したがって、上記の例の場合は、次のように記述します。 \f2PkgPrefix.Widgets=com.abc\fP +ΥޥɤǤϡ\f2My\fP Ф Java Хǥ󥰤ޤ .LP +.nf +\f3 +.fl +idlj My.idl +.fl +\fP +.fi + .LP -このオプションを使用しても、リポジトリ ID は影響を受けません。 .LP -.RE -.SS -コンパイル前のシンボルの定義 +\f2My.idl\fP Ƥ뷿ȡ\f2My.idl\fP ˥󥯥롼ɤ줿ե (Ǥ \f2MyOther.idl\fP) Ƥ뷿٤ƤˤĤ Java Хǥ󥰤ˤϡΥޥɤѤޤ .LP -.RS 3 +.nf +\f3 +.fl +idlj \fP\f3\-emitAll\fP My.idl +.fl +.fi .LP -コンパイル用のシンボルが IDL ファイル内で定義されていない場合は、そのシンボルを定義する必要があります。 これは、たとえば、バインディング内にデバッグコードを組み入れるときに使用します。次のコマンドは、 \f2idlj \fP\f4\-d\fP\f2 MYDEF My.idl\fP .LP -\f2My.idl\fP 内に \f2#define MYDEF\fP という行を指定した場合と等価です。 -.RE +ΥǥեȤε§˴ؤդʤФʤʤȤޤХ륹פ˻ꤷ \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 ޤˡ\f2Embedded.idl\fP \f2My\fP 󥿥եΥ˥󥯥롼ɤƤᡢ\f2My\fP Υ (Ĥޤꡢ\f2MyPackage\fP ) Ƥޤ +.LP +.LP +嵭 \f2\-emitAll\fP ե饰ѤС󥯥롼ɤ줿٤ƤΥեˤ뤹٤ƤηȯԤޤ +.LP .SS -既存のバインディングの保持 +ѥåƬ +.LP +.LP +ABC Ȥ̾βҤΤ˺ȤƤơΤ褦 IDL եۤȤޤ礦 .LP -.RS 3 .LP -Java バインディングファイルがすでに存在する場合は、\f2\-keep\fP フラグを指定すると、コンパイラによる上書きを回避できます。デフォルトでは、すでに存在するかどうかにかかわらず、すべてのファイルが生成されます。これらのファイルをカスタマイズした場合 (ただし、それらの内容が正確であるとき以外はカスタマイズは避ける)、\f2\-keep\fP オプションは有用です。次のコマンドは、 \f2idlj \fP\f4\-keep\fP\f2 My.idl\fP .LP -クライアント側のバインディングで、まだ存在しないものをすべて発行します。 -.RE +\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.<̾>\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 -.RS 3 +.LP +ѥѤΥܥ뤬 IDL եƤʤϡΥܥɬפޤϡȤСХǥ˥ǥХåɤȤȤ˻ѤޤΥޥɤϡ +.LP +.nf +\f3 +.fl +idlj \fP\f3\-d\fP MYDEF My.idl +.fl +.fi .LP -IDL\-to\-Java コンパイラは、実行の各段階で状態メッセージを生成します。「冗長」モード (メッセージが多いモード) にするには、\f2\-v\fP オプションを使用します。 \f2idlj \fP\f4\-v\fP\f2 My.idl\fP .LP -デフォルトでは、コンパイラは冗長モードでは実行されません。 -.RE +\f2My.idl\fP \f2#define MYDEF\fP ȤԤꤷǤ +.LP .SS -バージョン情報の表示 +¸ΥХǥ󥰤ݻ .LP -.RS 3 +.LP +Java Хǥ󥰥ե뤬Ǥ¸ߤϡ\f2\-keep\fP ե饰ꤹȡѥˤ񤭤ǤޤǥեȤǤϡǤ¸ߤ뤫ɤˤ餺٤ƤΥե뤬ޤΥե򥫥ޥ (ƤΤǤȤʳϥޥ򤱤)\-keep ץͭѤǤΥޥɤϡ +.LP +.nf +\f3 +.fl +idlj \fP\f3\-keep\fP My.idl +.fl +.fi .LP .LP -IDL\-to\-Java コンパイラのビルドバージョンを表示するには、コマンド行で \f2\-version\fP オプションを指定します。 +饤¦ΥХǥ󥰤ǡޤ¸ߤʤΤ򤹤٤ȯԤޤ .LP +.SS +ѥοĽɽ +.LP +.LP +IDL\-to\-Java ѥϡ¹ԤγʳǾ֥åޤ־Ĺץ⡼ (å¿⡼) ˤˤϡ\f2\-v\fP ץѤޤ .LP -\f2idlj \-version\fP +.nf +\f3 +.fl +idlj \fP\f3\-v\fP My.idl +.fl +.fi + .LP .LP -バージョン情報は、コンパイラによって生成されたバインディング内にも書き込まれています。このオプションをコマンド行に指定すると、それ以外のオプションを指定しても、すべて無視されます。 +ǥեȤǤϡѥϾĹ⡼ɤǤϼ¹Ԥޤ .LP -.RE -.SH "オプション" +.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 ファイルに次のような行を追加した場合と等価です。 -.RS 3 - -.LP +ΥץϡIDL ե˼Τ褦ʹԤɲäǤ .nf \f3 .fl @@ -385,33 +619,32 @@ IDL\-to\-Java コンパイラのビルドバージョンを表示するには、 .fl \fP .fi -.RE .TP 3 \-emitAll -\f2#include\fP ファイル内で定義されているものも含めて、すべての型を発行します。 +#include ե ƤΤޤơ \f2٤Ƥη\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 が指定されたものと見なされます。 +ȯԤХǥ󥰤ޤ\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 -v1.4 より前の JDK ORB と互換性のあるスケルトンを生成します。デフォルトでは、POA 継承モデルのサーバー側バインディングが生成されます。このオプションを指定すると、\f2ImplBase\fP 継承モデルのクラスであるサーバー側バインディングが生成されるので、古いバージョンの Java プログラミング言語との下位互換性が得られます。 +v1.4 JDK ORB ȸߴΤ륹ȥޤǥեȤǤϡPOA ѾǥΥС¦Хǥ󥰤ޤΥץꤹȡ\f2ImplBase\fP ѾǥΥ饹Ǥ륵С¦Хǥ󥰤ΤǡŤС Java ץߥ󥰸Ȥβ̸ߴޤ .TP 3 \-pkgPrefix type prefix -\f2type\fP がファイルスコープで検出された場合は、その型に対して生成されるすべてのファイルについて、生成される Java パッケージ名に \f2prefix\fP という接頭辞が付加されます。\f2type\fP は、トップレベルモジュールの単純名か、どのモジュールよりも外側で定義された IDL 型の単純名のどちらかです。 +\f2type\fP ե륹פǸФ줿ϡηФ뤹٤ƤΥեˤĤơ Java ѥå̾ \f2prefix\fP ȤƬղäޤ\f2type\fP ϡȥåץ٥⥸塼ñ̾ɤΥ⥸塼⳰¦줿 IDL ñ̾Τɤ餫Ǥ .TP 3 \-pkgTranslate type package -識別子の中にモジュール名 \f2type\fP が検出されると、生成される Java パッケージ内のすべてのファイルについて、識別子の中のその名前が \f2package\fP で置き換えられます。最初に \f2pkgPrefix\fP を変更します。\f2type\fP は、トップレベルのモジュール、またはすべてのモジュールの外部で定義された IDL 型の単純名です。 そして、完全なパッケージ名に正確に一致しなければなりません。 +̻Ҥ˥⥸塼̾ type Фȡ Java ѥåΤ٤ƤΥեˤĤơ̻ҤΤ̾ package ֤ޤǽ \f2pkgPrefix\fP ѹޤ\f2type\fP ϡȥåץ٥Υ⥸塼롢ޤϤ٤ƤΥ⥸塼γ줿 IDL ñ̾Ǥơʥѥå̾Τ˰פʤФʤޤ .LP -1 つの識別子の中で複数の変換がマッチする場合は、もっとも長いマッチが選ばれます。たとえば、次のような引数が指定されている場合は、 +1 Ĥμ̻ҤʣѴޥåϡäȤĹޥåФޤȤСΤ褦ʰꤵƤϡ .nf \f3 .fl @@ -420,89 +653,85 @@ v1.4 より前の JDK ORB と互換性のあるスケルトンを生成します \fP .fi .LP -次のような変換が実施されます。 +Τ褦Ѵ»ܤޤ .nf \f3 .fl -foo => bar +foo => bar .fl -foo.boo => bar.boo +foo.boo => bar.boo .fl -foo.baz => buzz.fizz +foo.baz => buzz.fizz .fl -foo.baz.bar => buzz.fizz.bar +foo.baz.bar => buzz.fizz.bar .fl \fP .fi .LP -次のパッケージ名を変換することはできません。 +Υѥå̾Ѵ뤳ȤϤǤޤ .RS 3 .TP 2 o \f2org\fP .TP 2 o -\f2org.omg\fP、または \f2org.omg\fP のサブパッケージ +\f2org.omg\fPޤ \f2org.omg\fP Υ֥ѥå .RE .LP -これらのパッケージ名を変換しようとすると、互換性のないコードが生成されます。 そして、\f2\-pkgTranslate\fP のあとの最初の引数としてそれらのパッケージを使用すると、エラーとして扱われます。 +Υѥå̾Ѵ褦ȤȡߴΤʤɤޤơ\f2\-pkgTranslate\fP ΤȤκǽΰȤƤΥѥåѤȡ顼Ȥưޤ .TP 3 \-skeletonName xxx%yyy -\f2xxx%yyy\fP が、スケルトンに名前を付けるパターンとして使用されます。デフォルトは、次のとおりです。 +\f2xxx%yyy\fP ȥ̾դѥȤƻѤޤǥեȤϼΤȤǤ .RS 3 .TP 2 o -\f2POA\fP 基底クラスの場合は「%POA」(\f2\-fserver\fP または \f2\-fall\fP) +\f2POA\fP 쥯饹ξϡ%POA(\f2\-fserver\fP ޤ \f2\-fall\fP) .TP 2 o -\f2oldImplBase\fP クラスの場合は「_%ImplBase」(\f2\-oldImplBase\fP かつ (\f2\-fserver\fP または \f2\-fall\fP)) +\f2oldImplBase\fP 饹ξϡ_%ImplBase(\f2\-oldImplBase\fP (\f2\-fserver\fP ޤ \f2\-fall\fP)) .RE .TP 3 \-td dir -出力ディレクトリとして、カレントディレクトリではなく、\f2dir\fP が使用されます。 +ϥǥ쥯ȥȤơȥǥ쥯ȥǤϤʤ\f2dir\fP Ѥޤ .TP 3 \-tieName xxx%yyy -このパターンに従って Tie に名前が付けられます。デフォルトは、次のとおりです。 +Υѥ˽ä Tie ̾դޤǥեȤϼΤȤǤ .RS 3 .TP 2 o -\f2POA\fP Tie 基底クラスの場合は「%POATie」(\f2\-fserverTie\fP または \f2\-fallTie\fP) +\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)) +\f2oldImplBase\fP Tie 饹ξϡ%_Tie(\f2\-oldImplBase\fP (\f2\-fserverTie\fP ޤ \f2\-fallTie\fP)) .RE .TP 3 -\-verbose -冗長モードになります。 +\-nowarn, \-verbose +Ĺ⡼ɤˤʤޤ .TP 3 \-version -バージョン情報を表示して終了します。 +Сɽƽλޤ .RE .LP -各オプションの詳細については、「説明」のセクションを参照してください。 -.SH "制約" -.LP - +ƥץξܺ٤ˤĤƤϡפΥ򻲾ȤƤ +.SH "" .LP .RS 3 .TP 2 o -グローバルスコープ内のエスケープされた識別子は、IDL プリミティブ型の \f2Object\fP または \f2ValueBase\fP と同じ綴りであってはなりません。これらの識別子については、シンボルテーブルが事前にロードされており、これらの識別子の再定義を許可すると元の定義が上書きされてしまいます。これは、おそらく恒久的な制約です。 +Х륹Υפ줿̻ҤϡIDL ץߥƥַ \f2Object\fP ޤ \f2ValueBase\fP Ʊ֤ǤäƤϤʤޤ󡣤μ̻ҤˤĤƤϡܥơ֥뤬˥ɤƤꡢμ̻ҤκĤȸ񤭤Ƥޤޤϡ餯ŪǤ .TP 2 o -\f2fixed\fP という IDL 型はサポートされていません。 +\f2fixed\fP Ȥ IDL ϥݡȤƤޤ .RE .LP -.SH "既知の問題点" -.LP - +.SH "Τ" .LP .RS 3 .TP 2 o -グローバル識別子についてインポートが生成されません。予期されないローカル impl を呼び出すと、例外を受け取ります。 しかし、その原因は、\f2ServerDelegate\fP DSI コード内の \f2NullPointerException\fP にあるようです。 +Х뼱̻ҤˤĤƥݡȤޤͽʤ impl ƤӽФȡ㳰ޤ θϡ\f2ServerDelegate\fP DSI \f2NullPointerException\fP ˤ褦Ǥ .RE .LP diff --git a/src/solaris/doc/sun/man/man1/ja/jar.1 b/src/solaris/doc/sun/man/man1/ja/jar.1 index cea01c9efc899ac1dbc77ece22370a1e622720f6..acdc31b6a07bb82eb11ee5c969de79525d9520cc 100644 --- a/src/solaris/doc/sun/man/man1/ja/jar.1 +++ b/src/solaris/doc/sun/man/man1/ja/jar.1 @@ -19,104 +19,93 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jar 1 "02 Jun 2010" +.TH jar 1 "14 Apr 2011" .LP -.SH "名前" -jar \- Java ARchive ツール +.SH "̾" +jar \- Java ARchive ġ .LP -\f3jar\fP は複数のファイルを 1 つの JAR アーカイブファイルに結合します。 +\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 - +.SH "" .LP .RS 3 .TP 3 -JAR ファイルの作成 +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 ファイルの更新 +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 ファイルの抽出 +JAR ե \f4jar x\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP .TP 3 -JAR ファイルの内容の表形式による一覧表示 +JAR եƤɽˤɽ \f4jar t\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP .TP 3 -JAR ファイルへのインデックスの追加 +JAR եؤΥǥåɲ \f4jar i\fP \f2jarfile\fP \f2[\-J\fP\f2option\fP\f2]\fP .RE .LP .LP -説明 -.LP -.RS 3 - + .LP .RS 3 .TP 3 cuxtiv0Mmfe -\f2jar\fP コマンドを制御するオプション +\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 の場合)。 + (\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 の場合) される、空白で区切られたファイルまたはディレクトリ。すべてのディレクトリは再帰的に処理されます。このファイルは、オプション \f2O\fP (ゼロ) を使用しないかぎり圧縮されます。 +\f2jarfile\fP ˷礵뤫 (c u ξ)\f2jarfile\fP (x ξ) ޤϰɽ (t ξ) 롢Ƕڤ줿եޤϥǥ쥯ȥꡣ٤ƤΥǥ쥯ȥϺƵŪ˽ޤΥեϡץ \f20\fP () Ѥʤ갵̤ޤ .TP 3 manifest -\f2name\fP\f2:\fP\f2value\fP のペアが、JAR ファイルの MANIFEST.MF に含まれている既存のマニフェストファイル。\f2\-m\fP オプションとファイル名 \f2manifest\fP とがペアになります。 つまり、片方を記述すれば、もう一方も記述する必要があります。\f3m\fP、\f3f\fP、および \f3e\fP の出現順序は、\f2manifest\fP、\f2jarfile\fP、\f2entrypoint\fP の出現順序と一致する必要があります。 +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 ファイル内にバンドルされたスタンドアロンアプリケーションのアプリケーションエントリポイントとして設定するクラスの名前。\f2\-e\fP オプションと entrypoint は対になっています。 どちらかを指定する場合は両方とも指定する必要があります。\f3m\fP、\f3f\fP、および \f3e\fP の出現順序は、\f2manifest\fP、\f2jarfile\fP、\f2entrypoint\fP の出現順序と一致する必要があります。 +¹Բǽ JAR ե˥Хɥ뤵줿ɥ󥢥ץꥱΥץꥱ󥨥ȥݥȤȤꤹ륯饹̾\f2\-e\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 のセットは複数使用できます。 +³ \f2inputfiles\fP ֡ǥ쥯ȥ \f2dir\fP ذŪѹޤ \f2\-C\ \fP\f2\-\ dir\fP \f2inputfiles\fP ΥåȤʣѤǤޤ .TP 3 \-Joption -Java 実行環境へ渡されるオプション。\f2\-J\fP と \f2option\fP の間には空白を入れないでください。 +Java ¹ԴĶϤ륪ץ\f2\-J\fP \f2option\fP δ֤ˤ϶ʤǤ .RE .LP -.RE -.SH "説明" -.LP - +.SH "" .LP -\f3jar\fP ツールは、複数のファイルを 1 つの JAR アーカイブファイルに結合します。 \f3jar\fP は、ZIP および +\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 アーカイブは、圧縮されているかどうかにかかわらず、クラスパスのエントリとして使用できます。 +http://www.gzip.org/zlib/ ̷˴ŤѤΥ֤Ӱ̥ġǤ \f3jar\fP ġμŪϡĤ Java ץåȤ䥢ץꥱ 1 ĤΥ֤礹뤳ȤǤץåȤ䥢ץꥱΥݡͥ (ե롢᡼ӥ) 1 ĤΥ֤˷礵ƤȡJava (֥饦ʤ) ϡΥݡͥȤ 1 HTTP ȥ󥶥ǥɤ뤳ȤǤݡͥȤȤ˿³ɬפȤ뤳Ȥޤ󡣤ˤꡢɻ֤ṳ̂ޤޤ\f3jar\fP ϥեΰ̤ԤΤǡɻ֤ṳ̂ޤޤեθġΥȥ˥ץåȺԤˤ̾񤭹Τǡ۸ǧڤǽˤʤޤjar ġιʸϡ\f2tar\fP ޥɤιʸȤۤƱǤ\f3JAR\fP ֤ϡ̤Ƥ뤫ɤˤ餺饹ѥΥȥȤƻѤǤޤ .LP -複数のファイルを JAR ファイルへ結合する一般的な使用法は次のとおりです。 -.LP -.RS 3 - +ʣΥե JAR եط礹ŪʻˡϼΤȤǤ .LP .nf \f3 @@ -125,19 +114,15 @@ http://www.gzip.org/zlib/ 圧縮形式をベースにした、汎用のアーカ .fl \fP .fi -.RE .LP -この例では、現在のディレクトリにあるクラス (.class) ファイルがすべて、\f2myFile.jar\fP という名前のファイルに格納されます。jar ツールは自動的に、\f2META\-INF/MANIFEST.MF\fP という名前のマニフェストファイルエントリを生成します。これは常に、JAR ファイルの最初のエントリになります。マニフェストファイルは、アーカイブに関するメタ情報を宣言し、そのデータを \f2name\ :\ value\fP ペアとして格納します。jar ツールがマニフェストファイル内にメタ情報を格納する方法の詳細については、「 +ǤϡߤΥǥ쥯ȥˤ륯饹 (.class) ե뤬٤ơ\f2myFile.jar\fP Ȥ̾Υե˳Ǽޤjar ġϼưŪˡ \f2META\-INF/MANIFEST.MF\fP Ȥ̾Υޥ˥եȥե륨ȥޤϾˡJAR եκǽΥȥˤʤޤޥ˥եȥեϡ֤˴ؤ᥿Υǡ \f2name\ :\ value\fP ڥȤƳǼޤjar ġ뤬ޥ˥եȥե˥᥿Ǽˡξܺ٤ˤĤƤϡ .na \f2JAR file specification\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest」を参照してください。 -.LP -既存のマニフェストファイル内に格納された \f2name\ :\ value\fP ペアを JAR ファイルに含める必要がある場合には、そのファイルを次のように \f2\-m\fP オプションを使って指定します。 +http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifestפ򻲾ȤƤ .LP -.RS 3 - +¸Υޥ˥եȥե˳Ǽ줿 \f2name\ :\ value\fP ڥ JAR ե˴ޤɬפˤϡΥե򼡤Τ褦 \f2\-m\fP ץȤäƻꤷޤ .LP .nf \f3 @@ -146,20 +131,16 @@ http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest .fl \fP .fi -.RE .LP -既存のマニフェストファイルは改行文字で終わっている必要があります。 マニフェストファイルが改行文字で終わっていない場合、\f3jar\fP はその最後の行を解析しません。 +¸Υޥ˥եȥեϲʸǽäƤɬפޤޥ˥եȥե뤬ʸǽäƤʤȡ\f3jar\fP ϤκǽԤϤޤ .br .LP .br .LP -\f3注:\ \fPコマンド行に \f2cmf\fP ではなく \f2cfm\fP が指定された jar コマンド (m と \-f オプションの順番を逆にする) の場合、\f3jar\fP コマンド行にまず JAR アーカイブの名前を指定し、続いてマニフェストファイルの名前を指定する必要があります。 次に例を示します。 -.RS 3 - -.LP +\f3:\ \fPޥɹԤ \f2cmf\fP ǤϤʤ \f2cfm\fP ꤵ줿 jar ޥ (m \-f ץν֤դˤ) ξ硢\f3jar\fP ޥɹԤˤޤ JAR ֤̾ꤷ³ƥޥ˥եȥե̾ꤹɬפޤ 򼨤ޤ .nf \f3 .fl @@ -167,15 +148,11 @@ http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest .fl \fP .fi -.RE .LP -マニフェストは、RFC822 ASCII 形式で規定されたテキスト形式であるため、マニフェストファイルの内容を簡単に表示および編集できます。 -.LP -JAR ファイルからファイルを抽出する場合は、\f2x\fP を使用します。 +ޥ˥եȤϡRFC822 ASCII ǵꤵ줿ƥȷǤ뤿ᡢޥ˥եȥեƤñɽԽǤޤ .LP -.RS 3 - +JAR ե뤫եФϡ \f2x\fP Ѥޤ .LP .nf \f3 @@ -184,14 +161,10 @@ JAR ファイルからファイルを抽出する場合は、\f2x\fP を使用 .fl \fP .fi -.RE .LP .LP -jar ファイルから個別のファイルを抽出する場合は、そのファイル名を指定します。 -.LP -.RS 3 - +jar ե뤫̤ΥեФϡΥե̾ꤷޤ .LP .nf \f3 @@ -200,18 +173,14 @@ jar ファイルから個別のファイルを抽出する場合は、そのフ .fl \fP .fi -.RE .LP .LP -JDK のバージョン 1.3 以降から、\f2jar\fP ユーティリティーで +JDK ΥС 1.3 ʹߤ顢\f2jar\fP 桼ƥƥ .na \f2JarIndex\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JARIndex がサポートされています。 JarIndex を使用すると、アプリケーションのクラスローダーで JAR ファイルからクラスがロードされるときの効率が向上します。アプリケーションまたはアプレットが複数の JAR ファイルにバンドルされている場合は、クラスがロードされるときに、必要な JAR ファイル以外のダウンロードおよびオープンは行われません。このパフォーマンスの最適化は、新しい \f2\-i\fP オプションを指定して \f2jar\fP を実行すると有効になります。このオプションを使うと、指定した JAR メインファイルとそのメインファイルが依存しているすべての JAR ファイルについて、パッケージ位置情報が生成されます。 メインファイルが依存している JAR ファイルは、JAR メインファイルのマニフェストの \f2Class\-Path\fP 属性に指定しておく必要があります。 -.LP -.RS 3 - +http://java.sun.com/javase/6/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 @@ -220,52 +189,42 @@ http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JARIndex がサ .fl \fP .fi -.RE .LP .LP -この例では、\f2INDEX.LIST\fP ファイルが \f2main.jar\fP の \f2META\-INF\fP ディレクトリに挿入されます。 +Ǥϡ \f2INDEX.LIST\fP ե뤬 \f2main.jar\fP \f2META\-INF\fP ǥ쥯ȥޤ .br .br -このファイルに格納されている情報を使用して、アプリケーションのクラスローダーは、効率的にクラスをロードします。 インデックスファイルに位置情報を格納する方法の詳細は、 「\f2JarIndex\fP 仕様」を参照してください。 +Υե˳ǼƤѤơץꥱΥ饹ϡΨŪ˥饹ɤޤǥåե˰־Ǽˡξܺ٤ϡJarIndex ͡פ򻲾ȤƤ .br .br -ディレクトリをコピーするには、まず \f2dir1\fP 内のファイルを圧縮して標準出力に出力し、続いて標準入力から \f2dir2\fP に抽出します (両方の \f2jar\fP コマンドから \f2\-f\fP オプションを省く)。 次に例を示します。 -.LP -.RS 3 - +ǥ쥯ȥ򥳥ԡˤϡޤ \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) +% (cd dir1; jar c .)| (cd dir2; jar x) .fl \fP .fi -.RE .LP .LP -\f2jar\fP を使って JAR ファイルや JAR ファイルマニフェストを操作するコマンドサンプルを確認するには、「例」を参照してください。また、「 +\f2jar\fP Ѥ JAR ե JAR ޥ˥եȥե륵ץ륳ޥɤǧϡҤΡפ򻲾ȤƤޤ .na \f2Java Tutorial\fP @ .fi -http://java.sun.com/docs/books/tutorial/jar」の JAR コースも参照してください。 -.LP -.SH "オプション" +http://download.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 で指定されたファイルとディレクトリを、このアーカイブに追加します。 +f ꤵ줿 \f2jarfile\fP Ȥ̾ \f2\fP ֥ե \f2\fP f \f2jarfile\fP ά줿ɸϤ˾Ϥޤ\f2inputfiles\fP ǻꤵ줿եȥǥ쥯ȥ򡢤Υ֤ɲäޤ .TP 3 u -\f2inputfiles\fP で指定されたファイルとディレクトリを追加することにより、既存のファイル \f2jarfile\fP を更新します (\f2f\fP が指定されている場合)。 例を示します。 -.RS 3 - -.LP +f ꤵƤˡ¸ե \f2jarfile\fP \f2Ūǡ\fP \f2inputfiles\fP ˻ꤵ줿եǥ쥯ȥɲäޤ򼨤ޤ .nf \f3 .fl @@ -273,11 +232,7 @@ jar uf foo.jar foo.class .fl \fP .fi -.RE -上のコマンドは、ファイル \f2foo.class\fP を既存の JAR ファイル \f2foo.jar\fP に追加します。次の例に示すように、\f2\-u\fP オプションは、マニフェストエントリも更新できます。 -.RS 3 - -.LP +Υޥɤϡե \f2foo.class\fP ¸ JAR ե \f2foo.jar\fP ɲäޤ˼褦ˡ\f2\-u\fP ץϡޥ˥եȥȥ⹹Ǥޤ .nf \f3 .fl @@ -285,20 +240,16 @@ jar umf manifest foo.jar .fl \fP .fi -.RE -\f2foo.jar\fP マニフェストをマニフェスト内の \f2name:value\fP ペアで更新します。 +\f2foo.jar\fP ޥ˥եȤޥ˥ե \f2name:value\fP ڥǹޤ .TP 3 x -\f2jarfile\fP から (\f2f\fP が指定されている場合)、または標準入力から (\f2f\fP と \f2jarfile\fP が省略されている場合)、ファイルとディレクトリを抽出します。\f2inputfiles\fP が指定されている場合は、その指定したファイルとディレクトリだけが抽出されます。指定されていなければ、すべてのファイルとディレクトリが抽出されます。抽出されたファイルの日時は、アーカイブ内で設定されたものです。 +f ꤵ줿 \f2jarfile\fP \f2\fP \f2f\fP \f2jarfile\fP ά줿ɸϤ顢եǥ쥯ȥФޤ\f2inputfiles\fP ꤵƤϡλꤷեȥǥ쥯ȥФޤꤵƤʤС٤ƤΥեȥǥ쥯ȥ꤬ФޤФ줿եϡꤵ줿ΤǤ .TP 3 t -\f2jarfile\fP から (\f2f\fP が指定されている場合)、または標準入力から (\f2f\fP と \f2jarfile\fP が省略されている場合)、内容を表形式で一覧表示します。\f2inputfiles\fP が指定されている場合は、その指定したファイルとディレクトリだけが一覧表示されます。指定されていなければ、すべてのファイルとディレクトリが一覧表示されます。 +f ꤵ줿 \f2jarfile\fP \f2\fP \f2f\fP \f2jarfile\fP ά줿ɸϤ顢ܼɽޤ\f2inputfiles\fP ꤵƤϡλꤷեȥǥ쥯ȥɽޤꤵƤʤС٤ƤΥեȥǥ쥯ȥ꤬ɽޤ .TP 3 i -指定された \f2jarfile\fP と、それに依存する JAR ファイルについて、インデックス情報を生成します。例を示します。 -.RS 3 - -.LP +ꤵ줿 \f2jarfile\fP ȡ˰¸ JAR եˤĤơǥåޤȤС .nf \f3 .fl @@ -306,29 +257,25 @@ jar i foo.jar .fl \fP .fi -.RE .LP -上のコマンドは、\f2foo.jar\fP 内に \f2INDEX.LIST\fP ファイルを生成します。 このファイルには、\f2foo.jar\fP と、\f2foo.jar\fP の \f2Class\-Path\fP 属性に指定されたすべての JAR ファイルに入っている各パッケージの位置情報が書き込まれています。 インデックスの例を参照してください。 +Υޥɤϡ\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 を省略すると、標準入力から JAR ファイル名が使用されたり (x および t の場合)、標準出力に jar ファイルが 送信されたりします (c および u の場合)。 +γƽоݤȤʤե \f2jarfile\fP ꤷޤ (\f2c\fP) (\f2u\fP) (\f2x\fP)ǥåɲ (\f2i\fP)ޤɽ (\f2t\fP)\f2f\fP ץȥե̾ \f2jarfile\fP Ȥڥˤʤޤ Ĥޤꡢ򵭽ҤС⤦⵭ҤɬפޤOmitting \f2f\fP \f2jarfile\fP άȡx t ξ \f2ɸ\fP JAR ե̾졢c u ξ \f2ɸ\fP JAR ե뤬ޤ .TP 3 v -詳細な出力を標準出力に生成します。あとで例を示します。 +ܺ٤ʽϤɸϤޤȤ򼨤ޤ .TP 3 0 -(ゼロ) ZIP による圧縮を使用せずに、保存します。 +() ZIP ˤ밵̤Ѥˡ¸ޤ .TP 3 M -マニフェストファイルエントリを作成しません (c および u の場合)。 または、マニフェストファイルエントリが存在する場合にそれを削除します (u の場合)。 +ޥ˥եȥե륨ȥޤ (c u ξ)ޤϡޥ˥եȥե륨ȥ꤬¸ߤˤޤ (u ξ) .TP 3 m -\f2META\-INF/MANIFEST.MF\fP のファイルで指定したマニフェストファイル \f2manifest\fP の \f2name :value\fP の属性ペアを組み込みます。すでに同じ名前で存在しない限り、 \f2jar\fP はその \f2name\ :\ value\fP ペアを追加します。同じ名前で存在する場合は、\f2jar\fP はその値を更新します。 -.LP -コマンド行で、\f3m\fP と \f3f\fP の文字は、\f2manifest\fP と \f2jarfile\fP の入力順序と同じ順序で記述する必要があります。たとえば、次のようにして使います。 -.RS 3 - +\f2META\-INF/MANIFEST.MF\fP Υեǻꤷޥ˥եȥե \f2manifest\fP \f2name : value\fP °ڥȤ߹ߤޤ \f2jar\fP ϡǤƱ̾¸ߤʤꡢ \f2name:value\fP ڥɲäޤƱ̾¸ߤ硢 \f2jar\fP Ϥͤ򹹿ޤ .LP +ޥɹԤǡ\f3m\fP \f3f\fP ʸϡ\f2manifest\fP \f2jarfile\fP ϽƱǵҤɬפޤȤСΤ褦ˤƻȤޤ .nf \f3 .fl @@ -336,22 +283,17 @@ jar cmf myManifestFile myFile.jar *.class .fl \fP .fi -.RE -デフォルトのマニフェストには含まれないマニフェストに、特別な目的の \f2name\ :\ value\fP の属性ペアを追加できます。たとえば、ベンダー情報、バージョン情報、パッケージシーリング、または JAR にバンドルされたアプリケーションを実行するための属性を追加できます。\f4\-m\fP オプションの使用例については、「Java Tutorial」 にある「 +ǥեȤΥޥ˥եȤˤϴޤޤʤޥ˥եȤˡ̤Ū \f2name\ :\ value\fP °ڥɲäǤޤȤС٥󡢥С󡢥ѥå󥰡ޤ JAR ˥Хɥ뤵줿ץꥱ¹Ԥ뤿°ɲäǤޤJava TutorialפΡ .na \f2JAR Files\fP @ .fi -http://java.sun.com/docs/books/tutorial/jar/」コースを参照してください。 -.LP +http://download.oracle.com/javase/tutorial/deployment/jar/ץ򻲾Ȥ \f4\-m\fP ץλǧƤ .TP 3 e -実行可能 JAR ファイル内にバンドルされたスタンドアロンアプリケーションのアプリケーションエントリポイントとして、\f2entrypoint\fP を設定します。このオプションを使用すると、マニフェストファイル内の \f2Main\-Class\fP 属性値が作成または上書きされます。 このオプションは、JAR ファイルの作成中または更新中に使用できます。 このオプションを使えば、マニフェストファイルを編集または作成することなしに、アプリケーションのエントリポイントを指定できます。 +¹Բǽ JAR ե˥Хɥ뤵줿ɥ󥢥ץꥱΥץꥱ󥨥ȥݥȤȤơ\f2entrypoint\fP ꤷޤΥץѤȡޥ˥եȥե \f2Main\-Class\fP °ͤޤϾ񤭤ޤΥץϡJAR եκޤϹ˻ѤǤޤΥץȤСޥ˥եȥեԽޤϺ뤳ȤʤˡץꥱΥȥݥȤǤޤ .br .br -たとえば、次のコマンドは \f2Main.jar\fP を作成しますが、その際、マニフェストファイル内の \f2Main\-Class\fP 属性値は \f2Main\fP に設定されます。 -.RS 3 - -.LP +ȤСΥޥɤǤ \f2Main.jar\fP ޤκݡޥ˥ե \f2Main\-Class\fP °ͤ \f2Main\fP ꤵޤ .nf \f3 .fl @@ -359,12 +301,8 @@ jar cfe Main.jar Main Main.class .fl \fP .fi -.RE -.LP -次のコマンドを実行すると java ランタイムから直接このアプリケーションを起動できます。 -.RS 3 - .LP +Υޥɤ¹Ԥ java 󥿥फľܤΥץꥱưǤޤ .nf \f3 .fl @@ -372,11 +310,7 @@ java \-jar Main.jar .fl \fP .fi -.RE -エントリポイントのクラス名が特定のパッケージ内に存在している場合、エントリポイントの区切り文字としてドット (「.」) またはスラッシュ (「/」) を使用できます。たとえば、\f2Main.class\fP が \f2foo\fP という名前のパッケージ内に存在している場合、次のようにしてエントリポイントを指定できます。 -.RS 3 - -.LP +ѥå˥ȥݥȤΥ饹̾ޤޤƤ硢ɥå (.) å (/) Τ줫ʸ򤽤ζڤʸȤƻѤǤޤȤС \f2Main.class\fP \f2foo\fP Ȥ̾Υѥå˴ޤޤƤ硢ȥݥȤϼΤ褦ˤƻǤޤ .nf \f3 .fl @@ -384,11 +318,7 @@ jar \-cfe Main.jar foo/Main foo/Main.class .fl \fP .fi -.RE -または -.RS 3 - -.LP +ޤ .nf \f3 .fl @@ -396,18 +326,14 @@ jar \-cfe Main.jar foo.Main foo/Main.class .fl \fP .fi -.RE -\f3注:\ \fP \f2\-m\fP オプションと \f2\-e\fP オプションの両方を同時に指定する場合、指定されたマニフェストにも \f2Main\-Class\fP 属性が含まれていると、\f2Main.class\fP の指定があいまいになってエラーが発生し、JAR の作成または更新処理が異常終了します。 +\f3:\ \fP \f2\-m\fP ץ \f2\-e\fP ץξƱ˻ꤷ硢ꤷޥ˥եȤˤ \f2Main\-Class\fP °ޤޤƤС \f2Main.class\fP λ꤬ޤˤʤäƥ顼ȯJAR κ乹۾ェλޤ .LP .TP 3 \-C \ dir -\f2jar\fP コマンドの実行中に後続の \f2inputfiles\fP 引数を処理するときに、一時的にディレクトリを変更します (\f2cd\fP\ \f2dir\fP)。この処理は、UNIX の \f2tar\fP ユーティリティーの \f2\-C\fP オプションの機能に類似しています。 +\f2jar\fP ޥɤμ¹˸³ \f2inputfiles\fP ȤˡŪ˥ǥ쥯ȥѹޤ (cd \f2dir\fP)νϡUNIX \f2tar\fP 桼ƥƥ \f2\-C\fP ץεǽƤޤ .br .br -たとえば、次のコマンドは、\f2classes\fP ディレクトリに移動し、そのディレクトリから \f2bar.class\fP を \f2foo.jar\fP に追加します。 -.RS 3 - -.LP +ȤСΥޥɤϡ\f2classes\fP ǥ쥯ȥ˰ưΥǥ쥯ȥ꤫ \f2bar.class\fP \f2foo.jar\fP ɲäޤ .nf \f3 .fl @@ -415,23 +341,15 @@ jar uf foo.jar \-C classes bar.class .fl \fP .fi -.RE -次のコマンドでは、\f2classes\fP ディレクトリに移動し、\f2classes\fP ディレクトリ内のすべてのファイルを \f2foo.jar\fP に追加します (jar ファイルには classes ディレクトリを作成しません)。 次に元のディレクトリに戻ってから、\f2bin\fP ディレクトリに移動し、\f2xyz.class\fP を \f2foo.jar\fP に追加します。 -.RS 3 - -.LP +ΥޥɤǤϡ\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 +jar uf foo.jar \-C classes .\-C bin xyz.class .fl \fP .fi -.RE -\f2classes\fP に \f2bar1\fP と \f2bar2\fP が保持されている場合、\f2jar tf foo.jar\fP を使用すると、JAR ファイルには次の要素が含められます。 -.RS 3 - -.LP +\f2classes\fP ˥ե \f2bar1\fP \f2bar2\fP ǼƤˡ \f2jar tf foo.jar\fP ѤȤ JAR եȤ򡢼˼ޤ .nf \f3 .fl @@ -447,30 +365,24 @@ xyz.class .fl \fP .fi -.RE .LP .TP 3 \-Joption -Java 実行環境に \f2option\fP を渡します。 \f2option\fP には、「Java アプリケーション起動ツール」のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f4\-J\-Xmx48M\fP と指定すると、最大メモリーは 48M バイトに設定されます。\f2\-J\fP を使って背後の実行環境にオプションを渡すことはよく行われています。 +Java ¹ԴĶ \f2option\fP Ϥޤ \f2option\fP ˤϡJava ץꥱưġפΥե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС \f4\-J\-Xmx48M\fP Ȼꤹȡ꡼ 48M ХȤꤵޤ\f2\-J\fP Ȥäظμ¹ԴĶ˥ץϤȤϤ褯ԤƤޤ .RE .LP -.SH "コマンド行引数ファイル" -.LP - +.SH "ޥɹ԰ե" .LP -jar のコマンド行を短くしたり簡潔にしたりするために、\f2jar\fP コマンドに対する引数 (\f2\-J\fP オプションを除く) を含む 1 つ以上のファイルを指定することができます。これにより、任意の長さの jar コマンドを作成でき、オペレーティングシステムによるコマンド行の制限から解放されます。 +jar ΥޥɹԤûʷˤꤹ뤿ˡjar ޥɤФ (\-J ץ) ޤ 1 İʾ \f2ե\fP ꤹ뤳Ȥ \f2Ǥޤ\fP ˤꡢǤդĹ jar ޥɤǤڥ졼ƥ󥰥ƥˤ륳ޥɹԤ¤ޤ .LP -引数ファイルにはオプションとファイル名を含めることができます。ファイル内の各引数は、スペースまたは改行で区切ります。引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。 引数ファイルの位置から見た相対パスではありません。ワイルドカード (*) は、通常ならばオペレーティングシステムシェルによってあらゆる文字に解釈されますが、この場合はそのようには解釈されません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、\f2\-J\fP オプションもサポートされていません。 このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 +եˤϥץȥե̾ޤ뤳ȤǤޤեγưϡڡޤϲԤǶڤޤեΥե̾ϡߤΥǥ쥯ȥ꤫鸫Хѥˤʤޤեΰ֤鸫ХѥǤϤޤ󡣥磻ɥ (*) ϡ̾ʤХڥ졼ƥ󥰥ƥॷˤäƤʸ˲ᤵޤξϤΤ褦ˤϲᤵޤ󡣰եΰ \f2@\fP ʸѤơʣΥեƵŪ˲᤹뤳ȤϥݡȤƤޤ󡣤ޤ\f2\-J\fP ץ⥵ݡȤƤޤ󡣤ΥץϵưġϤޤưġǤϰե򥵥ݡȤƤʤǤ .LP .LP -\f2jar\fP を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。\f2jar\fP は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +\f2jar\fP ¹ԤȤˡưեΥѥȥե̾Ƭ \f2@\fP ʸդϤޤ \f2jar\fP ϡ\f2@\fP ʸǻϤޤ򸫤ĤȡΥեƤŸưꥹȤޤ .br .br -次の例では、\f2find\fP コマンドから出力されたファイル名を \f2classes.list\fP 内に格納しています。 -.LP -.RS 3 - +ǡ \f2classes.list\fP ˤϡ \f2find\fP ޥɤˤäƽϤ줿ե̾Ǽޤ .LP .nf \f3 @@ -478,14 +390,10 @@ jar のコマンド行を短くしたり簡潔にしたりするために、\f2j % find \fP\f3.\fP \-name '*.class' \-print > classes.list .fl .fi -.RE .LP .LP -その後、引数ファイル構文を使って \f2jar\fP にリストを渡すと、\f2Classes.list\fP で \f2jar\fP コマンドを実行できます。 -.LP -.RS 3 - +ˡե빽ʸѤ \f2classes.list\fP jar ϤȤǡ \f2Υꥹ\fP Ф \f2jar\fP ޥɤ¹ԤǤޤ .LP .nf \f3 @@ -494,13 +402,9 @@ jar のコマンド行を短くしたり簡潔にしたりするために、\f2j .fl \fP .fi -.RE - -.LP -引数ファイルはパスを指定できますが、相対パスが記述された引数ファイル内のすべてのファイル名は、渡されたパスに対して相対的ではなく、現在の作業ディレクトリに相対的となります。 次に例を示します。 -.RS 3 .LP +եϥѥǤޤХѥҤ줿եΤ٤ƤΥե̾ϡϤ줿ѥФŪǤϤʤߤκȥǥ쥯ȥŪȤʤޤϤǤ .nf \f3 .fl @@ -508,20 +412,14 @@ jar のコマンド行を短くしたり簡潔にしたりするために、\f2j .fl \fP .fi -.RE .LP .LP .LP -.SH "例" -.LP - -.LP -特定のディレクトリ内のすべてのファイルをアーカイブに追加する (そのアーカイブがすでに存在する場合は、その内容を上書きする) には、次のようにします。\f2\-v\fP オプションを使用して情報を詳細に列挙するように指定すると、サイズや最新の更新日など、アーカイブ内のファイルについての詳細情報が表示されます。 -.RS 3 - +.SH "" .LP +Υǥ쥯ȥΤ٤ƤΥե򥢡֤ɲä (Υ֤Ǥ¸ߤϡƤ񤭤) ˤϡΤ褦ˤޤ\f2\-v\fP ץѤƾܺ٤󤹤褦˻ꤹȡǿιʤɡΥեˤĤƤξܺپɽޤ .nf \f3 .fl @@ -557,13 +455,9 @@ adding: spacemusic.au(in = 3079) (out= 73)(deflated 97%) .fl \fP .fi -.RE - -.LP -すでに画像、オーディオファイル、およびクラス用のサブディレクトリに分けている場合は、これらを単一の JAR ファイルに結合できます。 -.RS 3 .LP +Ǥ˲ǥե롢ӥ饹ѤΥ֥ǥ쥯ȥʬƤϡñ JAR ե˷Ǥޤ .nf \f3 .fl @@ -607,13 +501,9 @@ audio/ bundle.jar classes/ images/ .fl \fP .fi -.RE - -.LP -JAR ファイルのエントリ名を表示するには、「\f2t\fP」オプションを使用します。 -.RS 3 .LP +JAR եΥȥ̾ɽˤϡ\f2t\fPץץѤޤ .nf \f3 .fl @@ -641,28 +531,24 @@ images/at_work.gif .fl \fP .fi -.RE .LP .LP -クラスロードを高速にするためにインデックスファイルを JAR ファイルに追加するには、「\f2i\fP」オプションを使用します。 +饹ɤ®ˤ뤿˥ǥåե JAR եɲäˤϡ\f2i\fPץץѤޤ .br .br -例: +: .br .LP -.RS 3 - -.LP -たとえば、株取引アプリケーション用の相互依存したクラスを、\f2main.jar\fP、\f2buy.jar\fP、および \f2sell.jar\fP という 3 つの JAR ファイルに分割したとします。 +ȤСץꥱ¸Ƥ륯饹\f2main.jar\fP\f2buy.jar\fP \f2sell.jar\fP Ȥ 3 Ĥ JAR եʬ䤷Ȥޤ .br .LP .br .LP -\f2main.jar\fP のマニフェストの \f2Class\-path\fP 属性に次のように指定した場合、 +\f2main.jar\fP Υޥ˥եȤ \f2Class\-path\fP °˼Τ褦˻ꤷ硢 .nf \f3 .fl @@ -672,7 +558,7 @@ Class\-Path: buy.jar sell.jar .fi .LP -\f2\-i\fP オプションを使用すれば、アプリケーションのクラスの 読み込みを高速化できます。 +\f2\-i\fP ץѤСץꥱΥ饹 ɤ߹ߤ®Ǥޤ .nf \f3 .fl @@ -682,38 +568,34 @@ Class\-Path: buy.jar sell.jar .fi .LP -\f2INDEX.LIST\fP ファイルが \f2META\-INF\fP ディレクトリに挿入されます。この結果、アプリケーションのクラスローダーによってクラスまたは リソースの検索が行われるときに、適切な jar ファイルがダウンロードされます。 -.RE -.SH "関連項目" +\f2INDEX.LIST\fP ե뤬 \f2META\-INF\fP ǥ쥯ȥޤη̡ץꥱΥ饹ˤäƥ饹ޤϥ꥽θԤȤˡŬڤ jar ե뤬ɤޤ +.SH "Ϣ" .LP - .LP .na -\f2「JAR ファイルの概要」\fP @ +\f2JAR եγ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/jar/jarGuide.html -.br - +.LP .LP .na -\f2「JAR ファイルの仕様」\fP @ +\f2JAR եλ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html -.br - +.LP .LP .na -\f2「Jar インデックス」\fP @ +\f2JarIndex λ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JARIndex -.br - +http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR_Index +.LP .LP .na -\f2「Jar チュートリアル」\fP @ +\f2JAR 塼ȥꥢ\fP @ .fi -http://java.sun.com/docs/books/tutorial/jar (Java Software の Web サイト内) -.br - +http://download.oracle.com/javase/tutorial/deployment/jar/index.html +.LP +.LP +pack200(1) .LP -pack200(1) + diff --git a/src/solaris/doc/sun/man/man1/ja/jarsigner.1 b/src/solaris/doc/sun/man/man1/ja/jarsigner.1 index 3f224f76e0bc24eaf57bf2573d2b9cdfc7b9f581..c349b53e8d6e3bbfb59b006e372bd625371a4c32 100644 --- a/src/solaris/doc/sun/man/man1/ja/jarsigner.1 +++ b/src/solaris/doc/sun/man/man1/ja/jarsigner.1 @@ -1,4 +1,4 @@ -." Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ." ." This code is free software; you can redistribute it and/or modify it @@ -19,1599 +19,1641 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jarsigner 1 "02 Jun 2010" +.TH jarsigner 1 "14 Apr 2011" .LP -.SH "名前" -jarsigner \- JAR 署名および検証ツール +.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 -Java ARchive (JAR) ファイルの署名を生成し、署名付き JAR ファイルの署名を検証します。 +JAR ǽȤȡ饹ե롢᡼ɡӤ¾ΥǥǡñΥե˥ѥåǤΤǡե®ưפۤǤޤȯԤϡjar(1) Ȥ̾ΥġȤä JAR եǤޤŪʴС٤Ƥ ZIP ե JAR եȤߤʤȤǤޤ \f3jar\fP ˤäƺ줿 JAR ե롢ޤ \f3jarsigner\fP ˤäƽ줿 JAR եˤϡMETA\-INF/MANIFEST.MF ե뤬ޤޤƤޤ +.LP +.LP +֥ǥ̾פϡʤ餫Υǡ (ֽ̾פоݤȤʤǡ) ȡƥƥ (͡Ҥʤ) Ȥ˴ŤƷ׻ӥåǤ񤭤ν̾Ʊ͡ǥ̾ˤ¿ޤ .LP +.RS 3 +.TP 2 +o +̾˻Ȥ줿ФˤʤȤäƷ׻ԤȤǡǥ̾ʪɤ򸡾ڤǤ +.TP 2 +o +¾ͤΤʤ¤ꡢǥ̾ε¤ԲǽǤ +.TP 2 +o +ǥ̾ϡν̾դǡоݤȤΤǤꡢۤΥǡν̾ȤƵǽ뤳ȤϤʤ +.TP 2 +o +̾դΥǡѹǤʤ ǡѹ줿ϡν̾ˤäƥǡʪǤϤʤȤڤ .RE -.SH "形式" + +.LP +.LP +եФƥƥƥν̾ˤϡޤƥƥϡΥƥƥ˴ϢΥڥɬפޤޤǧڤ 1 ĤޤʣξɬפǤ־פȤϡ륨ƥƥȯԤǥ̾դʸǡ̤ʥƥƥθͤǤ뤳ȤƤޤ +.LP +.LP +\f3jarsigner\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 ǽ̾ǤΤϡJDK jar(1) ġǺ줿 JAR ե롢ޤ ZIP եǤJAR ե ZIP եƱǤJAR եˤ META\-INF/MANIFEST.MF ե뤬ޤޤƤۤʤޤMETA\-INF/MANIFEST.MF եϡ\f3jarsigner\fP ZIP ե˽̾դȤ˼ưŪ˺ޤ +.LP +.LP +ǥեȤǤϡ\f3jarsigner\fP JAR (ޤ ZIP) եˡֽ̾פդޤ̾դ JAR եָڡפϡ \f2\-verify\fP ץꤷޤ +.LP +.SS +ȥ̾ .LP +.LP +ȥΤ٤ƤΥȥϡդΡ̾פ𤷤ƥޤ +.LP +.LP +\f3jarsigner\fP Ȥä JAR ե˽̾դȤϡ̾ɬפޤ७ȥȥ̾ꤹɬפޤȤСϡworking ǥ쥯ȥ mystore Ȥ̾Υȥ˴ޤޤ̾ duke ˴Ϣդ줿ȤäơMyJARFile.jar Ȥ̾ JAR ե˽̾դޤϥեϻꤵƤʤΤǡMyJARFile.jar Ͻ̾դ JAR եˤäƾ񤭤ޤ +.LP +.nf +\f3 +.fl + jarsigner \-keystore /working/mystore \-storepass myspass +.fl + \-keypass dukekeypasswd MyJARFile.jar duke +.fl +\fP +.fi +.LP +.LP +ȥϥѥɤݸƤΤǡȥΥѥ (Ǥ mypass) ꤹɬפޤޥɹԤǥȥΥѥɤꤷʤȡѥɤϤޤƱͤˡ⥭ȥǥѥɤˤäݸƤ뤿ᡢΥѥ (Ǥ dukekeypasswd) ꤹɬפޤ ޥɹԤΥѥɤꤷƤʤޤꤷѥȤ¸ƤѥɤȰäƤˤϡΥѥɤϤޤ +.LP +.SS +ȥξ +.LP +.LP +\f3jarsigner\fP ˤϡ \f2Ѥ륭ȥ URL ꤹ \-keystore\fP ޤȥ \f2\fP ǥեȤǡ \f2user.home\fP ƥץѥƥǷޤ桼Υۡǥ쥯ȥ .keystore Ȥ̾Υե˳ǼޤSolaris ƥξ硢 \f2user.home\fP ΥǥեȤϥ桼 home ǥ쥯ȥˤʤޤ +.LP +.LP +\-keystore ץ \f2˻ꤷ\fP ϥȥ꡼ब \f2KeyStore.load\fP ᥽åɤϤդƤURL Ȥ \f2NONE\fP ꤵƤϡnull Υȥ꡼ब \f2KeyStore.load\fP ᥽åɤϤޤ \f2NONE\fP ϡ \f2KeyStore\fP ե١ǤϤʤ硢ȤФ줬ϡɥȡǥХ¸ߤƤʤɤ˻ꤹ٤Ǥ +.LP +.SS +ȥμ +.LP +.LP +java.security ѥå \f2󶡤Ƥ\fP KeyStore 饹 \f2ϡ\fP ȥξؤΥӾѹԤΡΤ줿󥿥ե󶡤ޤȥθȤƤϡ줾줬Ρ֥ספΥȥоݤȤʣΰۤʤ¸߲ǽǤ +.LP +.LP +ߡȥμѤΤȤơ\f3keytool\fP \f3jarsigner\fP 2 ĤΥޥɹԥġȡ\f3Policy Tool\fP Ȥ̾ 1 Ĥ GUI ١Υġ뤬ޤKeyStore \f2\fP public ȤƻѲǽʤΤǡJava 2 SDK 桼 KeyStore ȤäۤΥƥץꥱǤޤ +.LP +.LP +ȥˤϡSun 󶡤Ȥ߹ߤΥǥեȤμޤϡJKS Ȥ̾ȼΥȥ () ѤΤǡȥեȤƼƤޤμǤϡġϸ̤Υѥɤˤäݸ졢ȥΤ (Ȥ̤) ѥɤˤäݸޤ +.LP +.LP +ȥμϡץХ١ǤŪˤϡ \f2KeyStore\fP ˤä󶡤륢ץꥱ󥤥󥿥ե֥ӥץХ󥿥ե (SPI) ˴ŤƼޤĤޤꡢбݥ饹 \f2KeystoreSpi\fP Ʊ \f2java.security\fP ѥå¸ߤƤꡢΥ饹ˤäơ֥ץХפɬפΤ륵ӥץХ󥿥ե᥽åɤƤޤǡ֥ץХפȤϡJava Security API ˤäƥǽʥӥΥ֥åȤФθ󶡤ѥåޤϥѥåνΤȤǤäơȥμ󶡤ˤϡ +.na +\f2Java Ź沽ƥ㡼ѥץХμˡ\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.htmlƤ褦ˡ饤Ȥ֥ץХפKeystoreSpi ֥饹μ󶡤ɬפޤ +.LP +.LP +ץꥱǤϡKeyStore 饹󶡤 getInstance եȥ᥽åɤȤȤǡޤޤʥץХۤʤ֥ספΥȥ \f2\fP ǤޤȥΥפϡȥγǼȥǡȤȤˡȥȥȥΤݸ뤿˻Ȥ륢르ꥺޤۤʤ륿פΥȥμˤϡߴϤޤ +.LP +.LP +\f3keytool\fP ϡǤդΥե١Υȥưޤkeytool ϡޥɹԤϤ줿ȥξե̾Ȥư 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 ץѥƥͤǤޤΥɤϡǥեȤΥȥ \f2(keystore.type ץѥƥǻꤵ줿)\fP Υ󥹥󥹤ޤ .LP .nf \f3 .fl -\fP\f3jarsigner\fP [ options ] jar\-file alias + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); +.fl +\fP +.fi + +.LP +.LP +ǥեȤΥȥפ JKS (Sun 󶡤ȼΥפΥȥμ) ǤϡƥץѥƥեμιԤˤäƻꤵƤޤ +.LP +.nf +\f3 .fl -\f3jarsigner\fP \-verify [ options ] jar\-file + keystore.type=jks .fl +\fP .fi .LP -.SH "説明" .LP +: ȥΥפλǤϡʸȾʸ϶̤ޤ󡣤ȤСJKS jks ƱΤȤưޤ +.LP +.LP +ƥġǥǥեȰʳΥȥμѤˤϡιԤѹ̤ΥȥΥפꤷޤȤСpkcs12 ȸƤФ륿פΥȥμ󶡤ƤץХѥåѤˤϡιԤ򼡤Τ褦ѹޤ +.LP +.nf +\f3 +.fl + keystore.type=pkcs12 +.fl +\fP +.fi .LP .LP -\f3jarsigner\fP ツールは、次の 2 つの目的で使用します。 +PKCS#11 ץХѥåѤ硢ξܺ٤ˤĤƤϡJava PKCS#11 Reference Guideפˤ +.na +\f2KeyTool and JarSigner\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#KeyToolJarSigner򻲾ȤƤ +.LP +.SS +ݡȤ륢르ꥺ +.LP +.LP +\f3jarsigner\fP ϥǥեȤǡΤ줫Ѥ JAR ե˽̾ޤ .LP .RS 3 -.TP 3 -1. -Java ARchive (JAR) ファイルに署名を付ける -.TP 3 -2. -署名付き JAR ファイルの署名と整合性を検証する +.TP 2 +o +SHA1 ȥ르ꥺȤä DSA (ǥ̾르ꥺ) +.TP 2 +o +SHA256 ȥ르ꥺѤ RSA 르ꥺ +.TP 2 +o +SHA256 ECDSA (ʱ߶ǥ̾르ꥺ) Ѥ EC (ʱ߶) Ź르ꥺ .RE .LP .LP -JAR 機能を使うと、クラスファイル、イメージ、サウンド、およびその他のデジタルデータを単一のファイルにパッケージ化できるので、ファイルを迅速かつ容易に配布できます。開発者は、jar(1) という名前のツールを使って JAR ファイルを作成できます。技術的な観点から言えば、すべての ZIP ファイルも JAR ファイルとみなすことができます。 ただし、\f3jar\fP によって作成された JAR ファイル、または \f3jarsigner\fP によって処理された JAR ファイルには、META\-INF/MANIFEST.MF ファイルが含まれています。 +Ūˤϡ̾Ԥθ 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 -ファイルに対してエンティティーの署名を生成するには、まず、エンティティーは、そのエンティティーに関連する公開鍵と非公開鍵のペアを持つ必要があります。 また、公開鍵を認証する 1 つまたは複数の証明書も必要です。「証明書」とは、あるエンティティーが発行したデジタル署名付きの文書で、別なエンティティーの公開鍵が特定の値であることを証明しています。 +ޥ˥եȥեǤϡSHA ȤͤϡեΥХʥǡΥ (ϥå) Ǥ.SF եǤϡեΥȤͤϡޥ˥եȥեγ륽եб 3 ԤΥϥåǤ .LP .LP -\f3jarsigner\fP は、「キーストア」に含まれる鍵と証明書情報を使って、JAR ファイルのデジタル署名を生成します。キーストアは、非公開鍵と、非公開鍵に関連付けられた X.509 証明書チェーンが収められたデータベースです。キーストアの作成と管理には、keytool(1) ユーティリティーを使います。 +̾եˤϡǥեȤǥޥ˥եȥեΤΥϥåޤޤƤޤҤΡJAR եθڡפ褦ˡΥإå¸ߤˤäƸڤκŬǽˤʤäƤޤ .LP +\f3֥̾åե\fP .LP -\f3jarsigner\fP は、エンティティーの非公開鍵を使って署名を生成します。署名付き JAR ファイルには、ファイルの署名に使用する非公開鍵に対応する公開鍵を保存するキーストアからとった証明書のコピーも含まれています。 \f3jarsigner\fP は、署名付き JAR ファイルのデジタル署名を、ファイル内 (の署名ブロックファイル) に含まれている証明書を使って検証することができます。 -.LP +.SF եˤϽ̾դ졢̾Ͻ֥̾åե֤ޤΥեˤϡȥξޤϾ沽줿ǴޤޤƤޤ ޤϾϡ̾˻Ȥ줿бǧڤޤեγĥҤϡѤȥ르ꥺ˱ .DSA.RSA.EC Τ줫ˤʤޤ +.SS +̾ॹ .LP -5.0 以降では、\f3jarsigner\fP はタイムスタンプを含む署名を生成するので、システムやデプロイヤ (Java Plug\-in を含む) はJAR ファイルが署名証明書の有効期間中に署名されたかどうかをチェックできます。さらに、5.0 で追加された API を使用して、アプリケーションはタイムスタンプ情報を取得できます。 .LP +\f2jarsigner\fP ġϡJAR եν̾˽̾ॹפ¸Ǥޤˡ \f2jarsigner\fP ؽ̾򥵥ݡȤޤưϾάǽǡ̾˼γƥץˤä椵ޤ .LP -現時点では、\f3jarsigner\fP で署名できるのは、JDK の jar(1) ツールで作成された JAR ファイル、または ZIP ファイルだけです。JAR ファイルは ZIP ファイルと同じですが、JAR ファイルには META\-INF/MANIFEST.MF ファイルが含まれている点が異なります。META\-INF/MANIFEST.MF ファイルは、\f3jarsigner\fP が ZIP ファイルに署名を付けるときに自動的に作成されます。 +.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 -デフォルトでは、\f3jarsigner\fP は JAR (または ZIP) ファイルに「署名」を付けます。署名付き JAR ファイルを「検証」する場合は、\f2\-verify\fP オプションを指定します。 +γƥץξܺ٤ˤĤƤϡҤΡ֥ץ򻲾ȤƤ .LP .SS -JDK 1.1 との互換性 +JAR եθ +.LP +.LP +JAR եθڤΤϡ̾ͭǤꡢĽ̾ʸ JAR եΤɤΥեѹƤʤǤJAR եθڤϡμǹԤޤ .LP .RS 3 +.TP 3 +1. +.SF ե뤽켫Τν̾򸡾ڤޤ +.LP +μǤϡƽ֥̾å (.DSA) ե˳ǼƤ̾ºݤˡбȤä줿ΤǤ뤳Ȥǧޤ .DSA եˤϡξ (ޤϾ) ޤޤƤޤޤμǤϡŪν̾б̾ (.SF) եͭʽ̾Ǥ뤫ɤĴ١.SF ե뤬ѤƤʤȤǧޤ +.TP 3 +2. +.SF եγƥȥΥȤޥ˥եбƥͤ碌Ƹڤޤ +.LP +.SF եˤϡޥ˥եȥեΤΥϥå夬Ǽ줿إåǥեȤǴޤޤƤޤΥإå¸ߤϡإåΥϥå夬ºݤ˥ޥ˥եȥեΥϥåȰפ뤫ɤ򸡾ڤ뤳ȤǤޤϥå夬פϡμ˿ʤߤޤ +.LP +ϥå夬פʤϡΨŪˤˡȤäƸڤԤޤŪˤϡ.SF եγƥե󥻥Υϥå夬ޥ˥եȥեб륻ΥϥåȰפ뤫ɤǧޤ (ֽ̾ (.SF) եפ򻲾) +.LP +.SF եΥإå˳Ǽ줿ޥ˥եȥեΥϥåȡºݤΥޥ˥եȥեΥϥåȤפʤϡ̾ ( .SF ե) ˡJAR ե 1 İʾΥե뤬ɲ \f2(jar ġ)\fP 줿ǽޤjar \f2ġ\fP Ȥäƥեɲä硢ޥ˥եȥեѹޤ (եѤΥɲä).SF եѹޤ󡣤ξ硢.SF եΥإåʳΥ˳Ǽ줿ϥå夬ޥ˥եȥեб륻ΥϥåȰפȤϡ̾ JAR ե¸ߤƤեΤɤΥեѹƤʤȤˤʤꡢڤΤȤưޤ +.TP 3 +3. +JAR եΥեΤ.SF ե˥ȥijƥեɤ߹ߤޤɤ߹˥եΥȤ׻̤ޥ˥եȥγեΥȤӤޤ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 -\f3keytool\fP ツールと \f3jarsigner\fP ツールは、JDK 1.1 で提供されていた \f3javakey\fP ツールを完全に置き換えるものです。これらの新しいツールは \f3javakey\fP よりも多くの機能を備えており、キーストアと非公開鍵をパスワードで保護する機能や、署名の生成に加えて署名を検証する機能を持っています。 +: JAR եǤϡJDK 1.1 \f3javakey\fP ġ줿̾ \f3jarsigner\fP 줿̾ߤǤޤĤޤꡢǤ \f3javakey\fP Ȥäƽ̾դƤ JAR եˡ\f3jarsigner\fP Ȥäƽ̾դ뤳ȤǤޤ .LP +.SH "ץ" .LP -新しいキーストアアーキテクチャーは、\f3javakey\fP が作成して管理していたアイデンティティーデータベースに代わるものです。キーストア形式と、JDK 1.1 の \f3javakey\fP が使っていたデータベース形式との間には下位互換性はありません。ただし、次のようなことは可能です。 +.LP +ʲǤϡ\f3jarsigner\fP ΥץˤĤޤ: .LP .RS 3 .TP 2 o -\f3keytool\fP の \f2\-identitydb\fP コマンドを使うと、アイデンティティーデータベースの情報をキーストアにインポートできます。 +ɤΥץ̾ˤƬ˥ޥʥ (\-) դ +.TP 2 +o +ץǤդνǻǤ .TP 2 o -\f3jarsigner\fP は、以前に \f3javakey\fP を使って署名された JAR ファイルに署名を付けることができます。 +åΤιܤμºݤ (ץ) ϡ桼ꤹɬפ .TP 2 o -\f3jarsigner\fP は、\f3javakey\fPを使って署名された JAR ファイルを検証できます。したがって、jarsigner は、Java 2 SDK のキーストアではなく JDK 1.1 のアイデンティティーデータベースからの署名者別名を認識し、これらを対象に処理を行うことができます。 +\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 ƥץѥƥˤäƷޤޤ .LP -次の表は、JDK 1.1.x で署名された JAR ファイルが、Java 2 プラットフォームでどのように扱われるかを示しています。 +̾ȤϥȥɬפǤ ΤᡢǥեȤΥȥ¸ߤʤ硢뤤ϥǥեȰʳΤۤΥȥѤϡȥŪ˻ꤹɬפޤ .LP +ڤȤϥȥɬפޤ󡣤ȥꤵƤ뤫뤤ϥǥեȤΥȥ¸ߤƤơ \f2\-verbose\fP ץꤵƤ硢JAR եθڤ˻Ѥ񤬤Υȥ 1 ĤǤޤޤƤ뤫ɤ˴ؤɲþ󤬽Ϥޤ .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 -.. +: \f2\-keystore\fP ΰˤϡURL ˥ե̾ (ȥѥ) Ǥޤ ե̾ (ȥѥ) ꤷϡfile:URL ȤưޤȤСΤ褦˻Ǥޤ .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 185 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 -.SS -キーストアの別名 -.LP -.RS 3 - -.LP -.LP -キーストアのすべてのエントリは、一意の「別名」を介してアクセスされます。 -.LP -.LP -\f3jarsigner\fP を使って JAR ファイルに署名を付けるときは、署名の生成に必要な非公開鍵を含むキーストアエントリの別名を指定する必要があります。たとえば、次の例は、working ディレクトリの mystore という名前のキーストアに含まれる別名 duke に関連付けられた非公開鍵を使って、MyJARFile.jar という名前の JAR ファイルに署名を付けます。出力ファイルは指定されていないので、MyJARFile.jar は署名付きの JAR ファイルによって上書きされます。 +\f3 +.fl + \-keystore \fP\f4filePathAndName\fP\f3 +.fl +\fP +.fi .LP +ϡλƱΤȤưޤ .nf \f3 .fl - jarsigner \-keystore /working/mystore \-storepass myspass -.fl - \-keypass dukekeypasswd MyJARFile.jar duke + \-keystore file:\fP\f4filePathAndName\fP\f3 .fl \fP .fi - -.LP -.LP -キーストアはパスワードで保護されているので、ストアのパスワード (上の例では mypass) を指定する必要があります。コマンド行でストアのパスワードを指定しないと、パスワードの入力を求められます。同様に、非公開鍵もキーストア内でパスワードによって保護されているため、非公開鍵のパスワード (上の例では dukekeypasswd) を指定する必要があります。 コマンド行で非公開鍵のパスワードを指定していない、また、指定したパスワートが保存されているパスワードと違っている場合には、非公開鍵のパスワードの入力を求められます。 .LP +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 -.SS -キーストアの場所 .LP -.RS 3 +ȤСΥޥɤϡꤵ줿 PKCS#11 ȡƤɽޤ +.nf +\f3 +.fl + jarsigner \-keystore NONE \-storetype PKCS11 \-list +.fl +.fl +\fP +.fi +.TP 3 +\-storetype storetype +󥹥󥹤륭ȥΥפꤷޤǥեȤΥȥפϡƥץѥƥե keystore.type ץѥƥͤǻꤵ줿פǤͤϡ \f2java.security.KeyStore\fP static getDefaultType ᥽å \f2ǼǤޤ\fP. .LP +\-storepass ץȤä PCKS#11 ȡ PIN \f2ꤹ뤳Ȥ\fP Ǥޤꤷʤä硢keytool jarsigner ϥ桼˥ȡ PIN Ϥޤȡݸ줿ǧڥѥ (Ѥ PIN ѥåɤɤ߼굡ʤ) 硢\f2\-protected\fP ץꤹɬפޤѥɥץꤹɬפϤޤ +.TP 3 +\-storepass[:env | :file] argument .LP -\f3jarsigner\fP には、使用するキーストアの URL を指定する \f2\-keystore\fP オプションがあります。キーストアは、デフォルトではユーザーのホームディレクトリの \f2.keystore\fP という名前のファイルに格納されます。 ユーザーのホームディレクトリは、\f2user.home\fP システムプロパティーによって決まります。Solaris システムの場合、\f2user.home\fP がデフォルトでユーザーのホームディレクトリになっています。 -.LP -.LP -\f2\-keystore\fP オプションからの入力ストリームは、\f2KeyStore.load\fP メソッドに渡されます。URL として \f2NONE\fP が指定されている場合は、null のストリームが \f2KeyStore.load\fP メソッドに渡されます。\f2NONE\fP は、\f2KeyStore\fP がファイルベースではなく、たとえば、ハードウェアトークンデバイスに置かれている場合に指定します。 -.LP -.RE -.SS -キーストアの実装 +ȥ˥ΤɬפʥѥɤꤷޤΥץɬפʤΤϡJAR ե˽̾դȤǤ (JAR ե򸡾ڤȤ)ξ硢 \f2\-storepass\fP ץ򥳥ޥɹԤǻꤷʤäϡѥɤϤޤ .LP + \f2env\fP ޤ \f2file\fP ꤵƤʤ硢ѥɤͤ \f2argument\fP ˤʤޤʳξ硢ѥɤϼΤ褦ˤƼޤ .RS 3 - -.LP +.TP 2 +o +\f2env\fP: \f2argument\fP Ȥ̾δĶѿѥɤ +.TP 2 +o +\f2file\fP: \f2argument\fP Ȥ̾Υե뤫ѥɤ +.RE .LP -\f2java.security\fP パッケージで提供される \f2KeyStore\fP クラスには、キーストア内の情報に対するアクセスと変更を行うための明確に定義されたインタフェースが用意されています。キーストアの固定実装としては、それぞれが特定の「タイプ」のキーストアを対象とする複数の異なる実装が存在可能です。 +: ƥȤŪȤ硢ޤϥƥݸ줿ƥѤƤʳϡޥɹԤ䥹ץȤǥѥɤꤷʤǤ +.TP 3 +\-keypass[:env | :file] argument .LP +ޥɹԤǻꤵ줿̾б륭ȥȥݸΤ˻Ȥѥɤꤷޤ\f3jarsigner\fP Ȥä JAR ե˽̾դȤϡѥɤɬפǤޥɹԤǥѥɤꤵƤ餺ɬפʥѥɤȥΥѥɤȰۤʤϡѥɤϤޤ .LP -現在、キーストアの実装を使用するものとして、\f3keytool\fP と \f3jarsigner\fP の 2 つのコマンド行ツールと、\f3Policy Tool\fP という名前の 1 つの GUI ベースのツールがあります。\f2KeyStore\fP は public として使用可能なので、Java 2 SDK ユーザーは KeyStore を使ったほかのセキュリティーアプリケーションも作成できます。 + \f2env\fP ޤ \f2file\fP ꤵƤʤ硢ѥɤͤ \f2argument\fP ˤʤޤʳξ硢ѥɤϼΤ褦ˤƼޤ +.RS 3 +.TP 2 +o +\f2env\fP: \f2argument\fP Ȥ̾δĶѿѥɤ +.TP 2 +o +\f2file\fP: \f2argument\fP Ȥ̾Υե뤫ѥɤ +.RE .LP +: ƥȤŪȤ硢ޤϥƥݸ줿ƥѤƤʳϡޥɹԤ䥹ץȤǥѥɤꤷʤǤ +.TP 3 +\-sigfile file +.SF ե .DSA ե˻Ȥ١ե̾ꤷޤȤС\f2file\fP DUKESIGN ꤹȡ .SF ե .DSA ե̾ϡ줾 DUKESIGN.SF DUKESIGN.DSA ˤʤޤ Υեϡ̾դ JAR ե META\-INF ǥ쥯ȥ֤ޤ .LP -キーストアには、Sun が提供する組み込みのデフォルトの実装があります。これは、JKS という名前の独自のキーストアタイプ (形式) を利用するもので、キーストアをファイルとして実装しています。この実装では、個々の非公開鍵は個別のパスワードによって保護され、キーストア全体の整合性も (非公開鍵とは別の) パスワードによって保護されます。 +\f2file\fP ˻ѤǤʸϡa\-zA\-Z0\-9_\-פǤĤޤꡢʸӥϥեѤǤޤ: .SF .DSA Υե̾ǤϡʸϤ٤ʸѴޤ .LP +\-sigfile \f2ץ\fP ꤷʤä硢.SF ե .DSA եΥ١ե̾ϡޥɹԤǻꤵ줿̾Ƭ 8 ʸ򤹤٤ʸѴΤˤʤޤ̾ 8 ʸ̤ξϡ̾Τޤ޻Ȥޤ̾ˡ̾ե̾˻ѤǤʤʸޤޤƤϡʸ (_) ֤ƥե̾ޤ +.TP 3 +\-sigalg algorithm +JAR եν̾˻Ѥ̾르ꥺ̾ꤷޤ .LP -キーストアの実装は、プロバイダベースです。具体的には、\f2KeyStore\fP が提供するアプリケーションインタフェースは、Service Provider Interface (SPI) という形で実装されています。つまり、対応する \f2KeystoreSpi\fP 抽象クラス (これも \f2java.security\fP パッケージに含まれている) があり、このクラスが Service Provider Interface のメソッドを定義しています。 これらのメソッドは、「プロバイダ」が実装しなければなりません。ここで、「プロバイダ」とは、Java Security API によってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。したがって、キーストアの実装を提供するには、 +ɸ̾르ꥺ̾ΰˤĤƤϡJava Cryptography Architectureפˤ .na -\f2「Java 暗号化アーキテクチャー用プロバイダの実装方法」\fP @ +\f2Appendix A \fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.htmlで説明しているように、クライアントが「プロバイダ」を実装し、KeystoreSpi サブクラスの実装を提供する必要があります。 -.LP -.LP -アプリケーションでは、\f2KeyStore\fP クラスが提供する getInstance ファクトリメソッドを使うことで、さまざまなプロバイダから異なる「タイプ」のキーストアの実装を選択できます。キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の非公開鍵とキーストア自体の整合性を保護するために使われるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。 -.LP -.LP -\f3keytool\fP は、任意のファイルベースのキーストア実装で動作します。keytool は、コマンド行から渡されたキーストアの場所をファイル名として扱い、これを FileInputStream に変換して、FileInputStream からキーストアの情報をロードします。一方、\f3jarsigner\fP ツールと \f3policytool\fP ツールは、URL で指定可能な任意の場所からキーストアを読み込むことができます。 +http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA򻲾ȤƤΥ르ꥺϡJAR եν̾˻Ѥ̩ȸߴΤΤǤʤФʤޤ󡣤Υץꤷʤä硢̩Υפ˱ SHA1withDSASHA256withRSASHA256withECDSA Τ줫Ѥޤꤵ줿르ꥺμ󶡤ץХŪ˥󥹥ȡ뤵Ƥ뤫뤤ϥ桼Τ褦ʥץХ \f2\-providerClass\fP ץȤäƻꤹɬפޤǤʤ硢ޥɤμ¹ԤԤޤ +.TP 3 +\-digestalg algorithm +JAR եΥȥȤݤ˻Ѥåȥ르ꥺ̾ꤷޤ .LP +ɸåȥ르ꥺ̾ΰˤĤƤϡJava Cryptography Architectureפˤ +.na +\f2Appendix A \fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA򻲾ȤƤΥץꤷʤä硢SHA256 Ѥޤꤵ줿르ꥺμ󶡤ץХŪ˥󥹥ȡ뤵Ƥ뤫뤤ϥ桼Τ褦ʥץХ \f2\-providerClass\fP ץȤäƻꤹɬפޤǤʤ硢ޥɤμ¹ԤԤޤ +.TP 3 +\-signedjar file +̾դ JAR ե̾ꤷޤ .LP -\f3jarsigner\fP と \f3keytool\fP の場合、\f2\-storetype\fP オプションを使ってコマンド行でキーストアのタイプを指定できます。\f3Policy Tool\fP の場合は、[Edit] メニューの [Change Keystore] コマンドを使ってキーストアのタイプを指定できます。 +ޥɹԤ̾ꤷʤäϡ JAR ե (̾оݤȤʤ JAR ե) ̾Ʊ̾Ȥޤ ξ硢 JAR եϽ̾դ JAR եˤäƾ񤭤ޤ +.TP 3 +\-verify +ޥɹԤǤΥץ󤬻ꤵƤϡꤵ줿 JAR ե뤬ڤޤ JAR եؤν̾ϹԤޤ󡣸ڤȡjar verified Ȥåɽޤ̾Ƥʤ JAR ե롢ޤϥݡȤƤʤ르ꥺ (RSA ץХΥ󥹥ȡλƤʤ RSA ʤ) Ȥäƽ̾줿 JAR ե򸡾ڤ褦Ȥȡjar is unsigned. (signatures missing or not parsable)פȤåɽޤ .LP +̾դ JAR եϡ\f3jarsigner\fP ޤ JDK 1.1 \f3javakey\fP ġ롢뤤ϤξȤäƸڤǤޤ .LP -キーストアのタイプを明示的に指定しない場合、keytool、jarsigner、および policytool の各ツールは、セキュリティープロパティーファイル内で指定された \f2keystore.type\fP プロパティーの値に基づいてキーストアの実装を選択します。セキュリティープロパティーファイルは、\f2java.security\fP という名前で SDK セキュリティープロパティーディレクトリ \f2java.home\fP/lib/security に置かれています。 \f2java.home\fP は、実行環境のディレクトリ (SDK の \f2jre\fP ディレクトリまたは Java 2 Runtime Environment の最上位のディレクトリ) です。 +ڤˤĤƤξܺ٤ϡJAR եθڡפ򻲾ȤƤ +.TP 3 +\-certs +ޥɹԤǡ \f2\-verify\fP \f2\-verbose\fP ץȤȤˤΥץꤷ硢JAR եγƽ̾Ԥξ󤬽Ϥ˴ޤޤޤˤϼΤΤޤޤޤ +.RS 3 +.TP 2 +o +̾Ԥθ (.DSA ե˳Ǽ줿) μ̾ +.TP 2 +o + X. (Ĥޤꡢ \f2java.security.cert.X509Certificate\fP Υ󥹥) Ǥϡ̾Ԥμ̾ +.RE .LP +ȥγǧԤޤޥɹԤǥȥͤꤵƤʤ硢ǥեȤΥȥե뤬Сޤ̾Ԥθξ񤬥ȥΥȥȰפϡξɽޤ +.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 ե (̾ե) ˤϡޥ˥եȥեΤΥϥåޤإåɲäޤ󡣤ξ硢.SF ե˴ޤޤΤϡJAR եγƥե˴ؤ󤪤ӥϥåǤܺ٤ϡֽ̾ (.SF) եפ򻲾ȤƤ .LP -各ツールは、\f2keystore.type\fP の値を取得し、この値で指定されたタイプのキーストアを実装しているプロバイダが見つかるまで、現在インストールされているすべてのプロバイダを調べます。目的のプロバイダが見つかると、そのプロバイダからのキーストアの実装を使います。 +ǥեȤǤϡŬԤˡޥ˥եȥեΤΥϥåޤإåɲäޤإå¸ߤϡJAR եθڻˡޤإåΥϥå夬ޥ˥եȥեΤΥϥåȼºݤ˰פ뤫ɤǧޤϥå夬פ硢ڤϼμ˿ʤߤޤϥå夬פʤϡΨŪˤˡȤäƸڤԤޤ Ūˤϡ.SF եγƥե󥻥Υϥå夬ޥ˥եȥեб륻ΥϥåȰפ뤫ɤǧޤ .LP +ܺ٤ϡJAR եθڡפ򻲾ȤƤ .LP -\f2KeyStore\fP クラスでは \f2getDefaultType\fP という名前の static メソッドが定義されており、アプリケーションとアプレットはこのメソッドを使うことで \f2keystore.type\fP プロパティーの値を取得できます。次のコードは、デフォルトのキーストアタイプ (\f2keystore.type\fP プロパティーで指定されたタイプ) のインスタンスを生成します。 +\f3ΥץϡƥȤԤˤǤʳˤϻѤʤǤ ΥץѤȡͭפʺŬԤʤʤޤ\fP +.TP 3 +\-protected +\f2true\fP ޤ \f2false\fP PIN ꡼ʤɤݸ줿ǧڥѥ𤷤ƥѥɤꤹɬפˤϡͤ \f2true\fP ˻ꤷƤ +.TP 3 +\-providerClass provider\-class\-name +ӥץХƥץѥƥե (\f2java.security\fP) ΥꥹȤäƤʤȤˡŹ沽ӥץХΥޥ饹ե̾ꤷޤ .LP +\f2\-providerArg\fP \f2ConfigFilePath\fP ץȤ߹碌ƻѤޤkeytool jarsigner ϥץХưŪ˥󥹥ȡ뤷ޤ (ǡ\f2ConfigFilePath\fP ϥȡեؤΥѥǤ)ƥץѥƥե Sun PKCS#11 ץХꤵƤʤ PKCS#11 ȥɽ륳ޥɤ򼡤˼ޤ .nf \f3 .fl - KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); +jarsigner \-keystore NONE \-storetype PKCS11 \\ .fl -\fP -.fi - -.LP -.LP -デフォルトのキーストアタイプは JKS (Sun が提供する独自のタイプのキーストアの実装) です。これは、セキュリティープロパティーファイル内の次の行によって指定されています。 -.LP -.nf -\f3 + \-providerClass sun.security.pkcs11.SunPKCS11 \\ .fl - keystore.type=jks + \-providerArg /foo/bar/token.config \\ +.fl + \-list .fl \fP .fi - -.LP -.LP -注:キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、JKS と jks は同じものとして扱われます。 -.LP -.LP -各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。たとえば、pkcs12 と呼ばれるタイプのキーストアの実装を提供しているプロバイダパッケージを使用するには、上の行を次のように変更します。 +.TP 3 +\-providerName providerName +\f2java.security\fP ƥץѥƥե 2 İʾΥץХꤵƤ硢\f2\-providerName\fP ץȤäΥץХ󥹥󥹤ǤޤΥץΰϡץХ̾Ǥ .LP +Sun PKCS#11 ץХξ硢\f2providerName\fP \f2SunPKCS11\-\fP\f2TokenName\fP Ȥˤʤޤ ǡ\f2TokenName\fPפϡץХ󥹥󥹤줿̾Ǥ ܺ٤ +.na +\f2°ɽ\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#ATTRS򻲾ȤƤȤСʲΥޥɤǤϡ̾ \f2SmartCard\fP PKCS#11 ȥץХ󥹥󥹤ƤꥹȤޤ .nf \f3 .fl - keystore.type=pkcs12 +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 ȥޥɹԤϤޤ .LP +.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 θ򥭡ȥ֤ɬפϤޤ .LP -PKCS#11 プロバイダパッケージを使用する場合、その詳細については、「Java PKCS#11 Reference Guide」にある +ॹפ뤿ˡ \f2jarsigner\fP ϡ .na -\f2「KeyTool and JarSigner」\fP @ +\f2RFC 3161\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#KeyToolJarSignerの節を参照してください。 +http://www.ietf.org/rfc/rfc3161.txt Ƥ ॹץץȥ (TSP) Ѥ TSA ̿ޤȡTSA ֤줿ॹץȡϽ֥̾åեν̾ȤȤ¸ޤ .LP -.RE -.RE -.SS -サポートされるアルゴリズム +.TP 3 +\-tsacert alias +\f2\-tsacert alias\fP JAR եν̾˥ޥɹԤɽ硢̾Υॹפޤ \f2alias\fP ϡȥθͭ TSA θꤷޤȥξǡTSA ξꤹ URL ޤ Subject Information Access ĥǽǧޤ .LP -.RS 3 - +TSA θϡ \f2\-tsacert Ȥä硢ȥ֤Ƥɬפޤ\fP. .LP +.TP 3 +\-altsigner class +ؽ̾Ѥ뤳Ȥꤷޤ饹̾ϡcom.sun.jarsigner.ContentSigner ݥ饹ĥ륯饹ե \f2ꤷޤ\fP. Υ饹եؤΥѥϡ \f2\-altsignerpath\fP ץˤäޤ \f2\-altsigner\fP ץ󤬻Ѥȡ \f2jarsigner\fP ϡꤵ줿饹󶡤̾ѤޤǤʤ硢 \f2jarsigner\fP ϥǥեȤν̾Ѥޤ .LP -デフォルトでは、\f3jarsigner\fP は次のどちらかのアルゴリズムを使って JAR ファイルに署名します。 +ȤС \f2com.sun.sun.jarsigner.AuthSigner\fP Ȥ̾Υ饹󶡤̾Ѥˤϡ \f2jarsigner\fP ץ \f2\-altsigner com.sun.jarsigner.AuthSignerפѤޤ\fP .LP -.RS 3 -.TP 2 -o -SHA\-1 ダイジェストアルゴリズムを使った DSA (デジタル署名アルゴリズム) -.TP 2 -o -MD5 ダイジェストアルゴリズムを使った RSA アルゴリズム -.RE - +.TP 3 +\-altsignerpath classpathlist +饹ե (Υ饹ե̾Ҥ \f2\-altsigner\fP ץǻꤵ) ӤΥ饹¸뤹٤Ƥ JAR եؤΥѥꤷޤ饹ե뤬 JAR եˤ硢ʲΤ褦 JAR եؤΥѥꤵޤ .LP +ХѥޤϸߤΥǥ쥯ȥ꤫ХѥǤޤ \f2classpathlist\fP ʣΥѥ JAR ե뤬ޤޤˤϡ Solaris ξϥ (\f2:\fP) ǡWindows ξϥߥ (\f2;\fP) Ǥ줾ڤޤŪΥ饹Ǥ˸ѥˤϡΥץפǤ .LP -具体的には、署名者の公開鍵と非公開鍵が DSA 鍵である場合、\f3jarsigner\fP は SHA1withDSA アルゴリズムを使って JAR ファイルに署名を付けます。署名者の鍵が RSA 鍵である場合、\f3jarsigner\fP は MD5withRSA アルゴリズムを使って JAR ファイルに署名を付けます。 +饹եޤࡢJAR եؤΥѥꤹ򼨤ޤ +.nf +\f3 +.fl +\-altsignerpath /home/user/lib/authsigner.jar +.fl +\fP +.fi .LP +JAR ե̾ޤޤƤ뤳ȤդƤ .LP -これらのデフォルトの署名アルゴリズムは、\f2\-sigalg\fP オプションを使ってオーバーライドできます。 +饹եޤ JAR եؤΥѥꤹ򼨤ޤ +.nf +\f3 +.fl +\-altsignerpath /home/user/classes/com/sun/tools/jarsigner/ +.fl +\fP +.fi .LP +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 -.SS -署名付き JAR ファイル -.LP -.RS 3 .LP +.SH "" .LP -\f3jarsigner\fP を使って JAR ファイルに署名を付けた場合、出力される署名付き JAR ファイルは入力 JAR ファイルと同じですが、次の 2 つの追加ファイルが META\-INF ディレクトリに置かれる点が異なります。 -.LP -.RS 3 -.TP 2 -o -.SF 拡張子の付いた署名ファイル -.TP 2 -o -.DSA 拡張子の付いた署名ブロックファイル -.RE - +.SS +JAR եν̾ .LP .LP -これら 2 つのファイルのベースファイル名は、\f2\-sigFile\fP オプションの値から作成されます。たとえば、次のようにオプションを指定したとします。 +bundle.jar Ȥ̾ JAR ե뤬ȤޤΥեˡȥ̾ jane Ǥ桼Ȥäơ̾դȤޤȥϡmystore Ȥ̾ǡC ɥ饤֤ working ǥ쥯ȥˤꡢȥΥѥɤ mypass\f2jane\fP Υѥɤ j638klm Ȥޤξ硢Υޥɤ¹ԤȡJAR ե˽̾դ sbundle.jar Ȥ̾դ JAR եǤޤ .LP .nf \f3 .fl - \-sigFile MKSIGN + jarsigner \-keystore /working/mystore \-storepass myspass +.fl + \-keypass j638klm \-signedjar sbundle.jar bundle.jar jane .fl \fP .fi .LP .LP -この場合、ファイル名はそれぞれ MKSIGN.SF と MKSIGN.DSA になります。 +ΥޥɤǤ \f2\-sigfile\fP ꤵƤʤᡢ̾դ JAR ե˳Ǽ .SF ե .DSA ե̾ϡ̾ǥե̾ĤޤĤޤꡢ̾ \f2JANE.SF\fP \f2JANE.DSA\fP ˤʤޤ .LP .LP -コマンド行で \f2\-sigfile\fP オプションを指定しなかった場合、.SF ファイルと .DSA ファイルのベースファイル名は、コマンド行で指定された別名の先頭の 8 文字をすべて大文字に変換したものになります。別名が 8 文字未満の場合は、別名がそのまま使われます。別名の中に、署名ファイル名に使用できない文字が含まれている場合は、該当する文字を下線 (_) に置き換えてファイル名が作成されます。使用できる文字は、アルファベット、数字、下線 (_)、ハイフンです。 +ȥΥѥɤΥѥɤ򤢤ȤϤϡΥޥɤṳ̂ƼΤ褦ϤǤޤ .LP -\f3署名 (.SF) ファイル\fP -.LP -.RS 3 +.nf +\f3 +.fl + jarsigner \-keystore /working/mystore +.fl + \-signedjar sbundle.jar bundle.jar jane +.fl +\fP +.fi .LP .LP -署名ファイル (.SF ファイル) は、\f3jarsigner\fP で署名を付けた JAR ファイルに常に含まれるマニフェストファイルと似ています。つまり、マニフェストファイル同様、.SF ファイルには、JAR ファイルに含まれているソースファイルごとに、次の 3 つの行があります。 +ǥեȤΥȥ (ۡǥ쥯ȥ .keystore Ȥ̾Υȥ) Ѥϡ˼褦ˡȥλάǤޤ .LP -.RS 3 -.TP 2 -o -ファイル名 -.TP 2 -o -使われているダイジェストアルゴリズム (SHA) の名前 -.TP 2 -o -SHA ダイジェストの値 -.RE +.nf +\f3 +.fl + jarsigner \-signedjar sbundle.jar bundle.jar jane +.fl +\fP +.fi .LP .LP -マニフェストファイルでは、SHA ダイジェストの値は、ソースファイルのバイナリデータのダイジェスト (ハッシュ) です。一方、.SF ファイルでは、ソースファイルのダイジェストの値は、マニフェストファイル中の該当するソースファイルに対応する 3 行のハッシュです。 +Ǹˡ JAR ե (\f2bundle.jar\fP) ̾դ JAR եñ˾񤭤ϡΤ褦 \f2\-signedjar\fP ץꤹɬפϤޤ .LP -.LP -署名ファイルには、デフォルトでマニフェストファイル全体のハッシュも含まれています。後述の「JAR ファイルの検証」で説明するように、このヘッダーの存在によって検証の最適化が可能になっています。 -.LP -.RE -\f3署名ブロック (.DSA) ファイル\fP -.LP -.RS 3 +.nf +\f3 +.fl + jarsigner bundle.jar jane +.fl +\fP +.fi .LP -.LP -.SF ファイルには署名が付けられ、署名は .DSA ファイルに置かれます。.DSA ファイルには、キーストアからの証明書または証明書チェーンも符号化された形で含まれています。 証明書または証明書チェーンは、署名に使われた非公開鍵に対応する公開鍵を認証します。 -.LP -.RE -.RE .SS -署名タイムスタンプ -.LP -.RS 3 - -.LP -.LP -J2SE 5.0 リリースの \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 - +̾դ JAR եθ .LP .LP -これらの各オプションの詳細については、後述の「オプション」節を参照してください。 +˼Τϡ̾դ JAR ե򸡾ڤ̾ͭ JAR ե뤬ѤƤʤȤǧ뤿ΥޥǤ .LP -.RE -.SS -JAR ファイルの検証 -.LP -.RS 3 +.nf +\f3 +.fl + jarsigner \-verify sbundle.jar +.fl +\fP +.fi .LP .LP -JAR ファイルの検証が成功するのは、署名が有効であり、かつ署名の生成以後に JAR ファイル内のどのファイルも変更されていない場合です。JAR ファイルの検証は、次の手順で行われます。 -.LP -.RS 3 -.TP 3 -1. -.SF ファイルそれ自体の署名を検証します。 -.LP -この手順では、各署名ブロック (.DSA) ファイルに格納されている署名が、実際に、公開鍵に対応する非公開鍵を使って生成されたものであることを確認します。 .DSA ファイルには、公開鍵の証明書 (または証明書チェーン) も含まれています。また、この手順では、目的の署名が、対応する署名 (.SF) ファイル内の有効な署名であるかどうかを調べ、.SF ファイルが改変されていないことも確認します。 -.TP 3 -2. -.SF ファイル内の各エントリのダイジェストをマニフェスト内の対応する各セクションと突き合わせて検証します。 -.LP -.SF ファイルには、マニフェストファイル全体のハッシュが格納されたヘッダーがデフォルトで含まれています。このヘッダーが存在する場合は、ヘッダー内のハッシュが実際にマニフェストファイルのハッシュと一致するかどうかを検証することができます。ハッシュが一致する場合は、次の手順に進みます。 +ڤȡΤ褦ʥåɽޤ .LP -ハッシュが一致しない場合は、効率的には劣る方法を使って検証を行います。 具体的には、.SF ファイル内の各ソースファイル情報セクションのハッシュが、マニフェストファイル内の対応するセクションのハッシュと一致するかどうかを確認します (「署名 (.SF) ファイル」を参照)。 -.LP -.SF ファイルのヘッダーに格納されたマニフェストファイルのハッシュと、実際のマニフェストファイルのハッシュとが一致しない場合は、署名 (および .SF ファイル) の生成後に、JAR ファイルに 1 つ以上のファイルが追加 (\f2jar\fP ツールを使用) された可能性があります。\f2jar\fP ツールを使ってファイルを追加した場合、マニフェストファイルは変更されますが (新しいファイル用のセクションが追加される)、.SF ファイルは変更されません。この場合、.SF ファイルのヘッダー以外のセクションに格納されたハッシュが、マニフェストファイル内の対応するセクションのハッシュと一致するときは、署名の生成時に JAR ファイル内に存在していたファイルのうち、どのファイルも変更されていないことになり、検証は成功したものとして扱われます。 -.TP 3 -3. -JAR ファイル内のファイルのうち、.SF ファイル内にエントリを持つ各ファイルを読み込みます。読み込み中にファイルのダイジェストを計算し、結果をマニフェストセクション内の該当するファイルのダイジェストと比較します。2 つのダイジェストは同じでなければならず、そうでない場合は検証が失敗します。 -.RE +.nf +\f3 +.fl + jar verified. +.fl +\fP +.fi .LP .LP -検証プロセスの途中でなんらかの重大な検証エラーが発生した場合、検証プロセスは中止され、セキュリティー例外がスローされます。スローされたセキュリティー例外は、\f3jarsigner\fP がキャッチして表示します。 -.LP -.RE -.SS -1 つの JAR ファイルを対象とする複数の署名 -.LP -.RS 3 - +ȤץץȤɽޤڤʤäϡ顼åɽޤ .LP .LP -1 つの JAR ファイルに対して \f3jarsigner\fP ツールを複数回実行し、実行のたびに、異なるユーザーの別名を指定すれば、JAR ファイルに複数のユーザーの署名を付けることができます。 +\-verbose ץȤȡ \f2¿ξ\fP ɽޤ\-verbose ץդ \f3jarsigner\fP \f2ѤȤν\fP ˼ޤ .LP .nf \f3 .fl - jarsigner myBundle.jar susan + jarsigner \-verify \-verbose sbundle.jar .fl - jarsigner myBundle.jar kevin + +.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 = ̾ڤޤ +.fl + m = ޥ˥եȤ˥ȥ꤬ܤƤޤ +.fl + k = ȥ 1 İʾξ񤬸Ĥޤ +.fl + +.fl + JAR ڤޤ .fl \fP .fi +.LP +.SS +Ȥä .LP .LP -JAR ファイルが複数回署名されている場合、その JAR ファイルには .SF ファイルと .DSA ファイルの対が複数含まれることになります。 .SF ファイルと .DSA ファイルの対は、1 回の署名に対して 1 つ作成されます。したがって、上の例で出力される JAR ファイルには、次の名前を持つファイルが含まれます。 +ڻ \-verify \-verbose ץ˲ä \f2\-certs\fP ץꤷϡ JAR եγƽ̾ԤξϤޤˤϡ񥿥ס̾Լ̾ (X.509 ξΤ) JAR եθξ񤬥ȥȥξ˰פˤϡ̤ǰϤޤ줿̾ԤΥȥ̾ޤޤޤ򼨤ޤ .LP .nf \f3 .fl - SUSAN.SF + jarsigner \-keystore /working/mystore \-verify \-verbose \-certs myTest.jar .fl - SUSAN.DSA + .fl - KEVIN.SF + 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST.MF .fl - KEVIN.DSA + 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 = ̾ڤޤ +.fl + m = ޥ˥եȤ˥ȥ꤬ܤƤޤ +.fl + k = ȥ 1 İʾξ񤬸Ĥޤ +.fl + +.fl + JAR ڤޤ .fl \fP .fi .LP .LP -注:JAR ファイルでは、JDK 1.1 の \f3javakey\fP ツールで生成された署名と \f3jarsigner\fP で生成された署名が混在できます。つまり、すでに \f3javakey\fP を使って署名が付けられている JAR ファイルに、\f3jarsigner\fP を使って署名を付けることができます。 -.LP -.RE -.SH "オプション" +̾Ԥξ X.509 Ǥʤϡ̾ɽޤ󡣤ξˤϡΥפ̾ɽޤȤС PGP ǡ̾ bob ξϡΤ褦ɽޤ .LP +.nf +\f3 +.fl + PGP, (bob) +.fl +\fP +.fi .LP +.SS +ǥƥƥǡ١ν̾Ԥޤ JAR եθ .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 システムプロパティーによって決まります。 +JAR ե뤬JDK 1.1 \f3javakey\fP ġȤäƽ̾Ƥ硢̾Ԥϥǥƥƥǡ١̾Ǥξ硢ڤνϤˤ i Ȥ椬ޤޤޤJAR ե뤬ǥƥƥǡ١̾ȥȥ̾ξˤäƽ̾Ƥϡk i ξɽޤ .LP -署名するときはキーストアが必要です。 このため、デフォルトのキーストアが存在しない場合、あるいはデフォルト以外のほかのキーストアを使用する場合は、キーストアを明示的に指定する必要があります。 .LP -検証するときはキーストアは必要ありません。 ただし、キーストアが指定されているか、あるいはデフォルトのキーストアが存在していて、さらに \f2\-verbose\fP オプションも指定されている場合は、JAR ファイルの検証に使われる証明書がキーストアに存在するかどうかについての追加情報が出力されます。 +\f2\-certs\fP ץꤷ硢ȥ̾ϳ̤ǰϤޤΤФǥƥƥǡ١̾ϳѳ̤ǰϤޤɽޤȤС .LP -注:\f2\-keystore\fP の引数には、URL の代わりにファイル名 (とパス) を指定できます。 ファイル名 (とパス) を指定した場合は、「file:」URL として扱われます。たとえば、次のように指定できます。 .nf \f3 .fl - \-keystore \fP\f4filePathAndName\fP\f3 + jarsigner \-keystore /working/mystore \-verify \-verbose \-certs writeFile.jar .fl -\fP -.fi -これは、次の指定と同じものとして扱われます。 -.nf -\f3 + .fl - \-keystore file:\fP\f4filePathAndName\fP\f3 + 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 = ̾ڤޤ +.fl + m = ޥ˥եȤ˥ȥ꤬ܤƤޤ +.fl + k = ȥ 1 İʾξ񤬸Ĥޤ +.fl + i = ǥƥƥפ 1 İʾξ񤬸Ĥޤ +.fl + +.fl + JAR ڤޤ .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 トークンの内容を一覧表示します。 -.RS 3 .LP +.LP +̾ duke ϳѳ̤ǰϤޤƤΤǡ̾ϥȥ̾ǤϤʤǥƥƥǡ١̾Ǥ +.LP +.SH "ٹ" +.LP +̾/ڽˤϡjarsigner 餵ޤޤʷٹɽǽޤηٹ𥳡ɤϼΤ褦Ƥޤ .nf \f3 .fl - jarsigner \-keystore NONE \-storetype PKCS11 \-list + hasExpiringCert 2 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ 6 ˴ڤˤʤޤ +.fl + +.fl + hasExpiredCert 4 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ񤬴ڤˤʤäƤޤ +.fl + +.fl + notYetValidCert 4 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ񤬤ޤͭˤʤäƤޤ +.fl + +.fl + chainNotValidated 4 +.fl + JAR ˴ޤޤ륨ȥξθڤԤޤ +.fl + +.fl + badKeyUsa ge 8 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ KeyUsage ĥɤν̾ĤƤޤ +.fl + +.fl + badExtendedKeyUsage 8 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ ExtendedKeyUsage ĥ +.fl + ɤν̾ĤƤޤ +.fl + +.fl + badNetscapeCertType 8 +.fl + JAR ˴ޤޤ륨ȥν̾Ԥξ NetscapeCertType ĥ +.fl + ɤν̾ĤƤޤ +.fl + +.fl + hasUnsignedEntry 16 +.fl + JAR ˤϡåԤƤʤ̾ʤȥ꤬ޤޤƤޤ +.fl + +.fl + notSignedByAlias 32 +.fl + JAR ˤϡꤵ줿̾ˤäƽ̾Ƥʤ̾դȥ꤬ޤޤƤޤ +.fl + +.fl + aliasNotInStore 32 .fl - + JAR ˤϡΥȥ̾ˤäƽ̾Ƥʤ̾դȥ꤬ޤޤƤޤ +.fl + .fl \fP .fi -.RE -.TP 3 -\-storetype storetype -インスタンスを生成するキーストアのタイプを指定します。デフォルトのキーストアタイプは、セキュリティープロパティーファイル内の keystore.type プロパティーの値で指定されたタイプです。 この値は、\f2java.security.KeyStore\fP の static \f2getDefaultType\fP メソッドで取得できます。 -.LP -\f2\-storepass\fP オプションを使って PCKS#11 トークンの PIN を指定することもできます。何も指定しなかった場合、keytool と jarsigner はユーザーにトークン PIN の 入力を求めます。トークンに保護された認証パス (専用の PIN パッドや生体読み取り機など) がある場合、\f2\-protected\fP オプションを指定する必要がありますが、パスワードオプションを指定する必要はありません。 -.TP 3 -\-storepass password -キーストアにアクセスするのに必要なパスワードを指定します。このオプションが必要なのは、JAR ファイルに署名を付けるときだけです (JAR ファイルを検証するときは不要)。署名を付けるときに、コマンド行で \f2\-storepass\fP オプションを指定しなかった場合は、パスワードの入力を求められます。 -.LP -注:テストを目的とする場合、またはセキュリティー保護されたシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。また、password プロンプトでパスワードを入力すると、入力したパスワードがエコーされ、そのまま画面に表示されます。 このため、周囲にほかのユーザーがいる場合は、パスワードを見られないように注意してください。 -.TP 3 -\-keypass password -コマンド行で指定された別名に対応するキーストアエントリの非公開鍵を保護するのに使うパスワードを指定します。\f3jarsigner\fP を使って JAR ファイルに署名を付けるときは、パスワードが必要です。コマンド行でパスワードが指定されておらず、必要なパスワードがストアのパスワードと異なる場合は、パスワードの入力を求められます。 + .LP -注:テストを目的とする場合、またはセキュリティー保護されたシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。また、password プロンプトでパスワードを入力すると、入力したパスワードがエコーされ、そのまま画面に表示されます。 このため、周囲にほかのユーザーがいる場合は、パスワードを見られないように注意してください。 -.TP 3 -\-sigfile file -.SF ファイルと .DSA ファイルの生成に使うベースファイル名を指定します。たとえば、\f2file\fP に DUKESIGN を指定すると、生成される .SF ファイルと .DSA ファイルの名前は、それぞれ DUKESIGN.SF と DUKESIGN.DSA になります。 これらのファイルは、署名付き JAR ファイルの META\-INF ディレクトリに置かれます。 .LP -\f2file\fP に使用できる文字は「a\-zA\-Z0\-9_\-」です。つまり、文字、数字、下線、およびハイフンだけを使用できます。注:.SF および .DSA のファイル名では、小文字はすべて大文字に変換されます。 +\f2\-strict\fP ץꤷ硢Ф줿ٹ OR äͤġνλɤȤ֤ޤȤСȥν̾˻Ѥ񤬴ڤˤʤäƤơĤξ keyUsage ĥǥեν̾ĤƤʤ硢λ 12 (=4+8) ֤ޤ .LP -コマンド行で \f2\-sigfile\fP オプションを指定しなかった場合、.SF ファイルと .DSA ファイルのベースファイル名は、コマンド行で指定された別名の先頭の 8 文字をすべて大文字に変換したものになります。別名が 8 文字未満の場合は、別名がそのまま使われます。別名の中に、署名ファイル名に使用できない文字が含まれている場合は、該当する文字を下線 (_) に置き換えてファイル名が作成されます。 -.TP 3 -\-sigalg algorithm -.RS 3 - .LP -JAR ファイルの署名に使用する署名アルゴリズムの名前を指定します。 +\f3\fP: UNIX ǻѲǽͤ 0 255 Ǥ뤿ᡢλɤϺѤޤˤƤ⡢̾/ڽԤȡνλɤ֤ޤ .LP -標準署名アルゴリズム名の一覧については、「Java Cryptography Architecture」にある -.na -\f2「Appendix A 」\fP @ +.nf +\f3 +.fl +failure 1 +.fl +\fP .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。このアルゴリズムは、JAR ファイルの署名に使用する秘密鍵と互換性のあるものでなければなりません。このオプションを指定しなかった場合、秘密鍵のタイプに応じて SHA1withDSA、MD5withRSA のいずれかが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、あるいはユーザーがそのようなプロバイダを \f2\-providerClass\fP オプションを使って指定する必要があります。 そうでない場合、コマンドの実行が失敗します。 + .LP -.RE -.TP 3 -\-digestalg algorithm -.RS 3 -JAR ファイルのエントリをダイジェストする際に使用するメッセージダイジェストアルゴリズムの名前を指定します。 +.SS +JDK 1.1 Ȥθߴ .LP -標準メッセージダイジェストアルゴリズム名の一覧については、「Java Cryptography Architecture」にある -.na -\f2「Appendix A 」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。このオプションを指定しなかった場合、SHA\-1 が使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、あるいはユーザーがそのようなプロバイダを \f2\-providerClass\fP オプションを使って指定する必要があります。 そうでない場合、コマンドの実行が失敗します。 .LP -.RE -.TP 3 -\-signedjar file -署名付き JAR ファイルの名前を指定します。 +\f3keytool\fP ġ \f3jarsigner\fP ġϡJDK 1.1 󶡤Ƥ \f3javakey\fP ġ֤ΤǤοġϡȥѥɤݸ뵡ǽ䡢̾˲äƽ̾򸡾ڤ뵡ǽʤɡ\f3javakey\fP ¿ΤǽƤޤ .LP -コマンド行で名前を指定しなかった場合は、入力 JAR ファイル (署名の対象となる JAR ファイル) の名前と同じ名前が使われます。 この場合、入力 JAR ファイルは署名付き JAR ファイルによって上書きされます。 -.TP 3 -\-verify -コマンド行でこのオプションが指定されている場合は、指定された JAR ファイルが検証されます。JAR ファイルへの署名は行われません。 検証が成功すると、「jar が検証されました。」 というメッセージが表示されます。署名されていない JAR ファイル、またはサポートされていないアルゴリズム (RSA プロバイダのインストールを終了していない場合の RSA など) を使って署名された JAR ファイルを検証しようとすると、「jar は署名されていません。(署名が見つからないか、構文解析できません)」というメッセージが表示されます。 .LP -署名付き JAR ファイルは、\f3jarsigner\fP または JDK 1.1 の \f3javakey\fP ツール、あるいはその両方を使って検証できます。 +ȥƥ㡼ϡ\f3javakey\fP ƴƤǥƥƥǡ١ΤǤȥȡJDK 1.1 \f3javakey\fP ȤäƤǡ١Ȥδ֤ˤϲ̸ߴϤޤ󡣤ΤȤϲǽǤ .LP -検証についての詳細は、「JAR ファイルの検証」を参照してください。 -.TP 3 -\-certs -コマンド行で、\f2\-verify\fP および \f2\-verbose\fP オプションとともにこのオプションが指定されている場合は、JAR ファイルの各署名者の証明書情報も出力されます。証明書情報には次のものが含まれます。 .RS 3 .TP 2 o -署名者の公開鍵を証明する (.DSA ファイルに格納された) 証明書の種類の名前 +\f3keytool\fP \f2\-identitydb\fP ޥɤȤȡǥƥƥǡ١ξ򥭡ȥ˥ݡȤǤޤ .TP 2 o -証明書が X.509 証明書 (つまり、\f2java.security.cert.X509Certificate\fP のインスタンス) である場合は、署名者の識別名 -.RE -.LP -キーストアの確認も行われます。コマンド行でキーストアの値が指定されていない場合、デフォルトのキーストアファイルがあれば、検査されます。署名者の公開鍵の証明書がキーストア内のエントリと一致した場合は、次の情報も表示されます。 -.RS 3 +\f3jarsigner\fP ϡ \f3javakey\fP Ȥäƽ̾줿 JAR ե˽̾դ뤳ȤǤޤ .TP 2 o -署名者に該当するキーストアエントリの別名。 この別名は括弧で囲まれます。ただし、キーストアではなく JDK 1.1 のアイデンティティーデータベースに由来する署名者の場合は、括弧ではなく大括弧で囲まれます。 +\f3jarsigner\fP ϡ\f3javakey\fPȤäƽ̾줿 JAR ե򸡾ڤǤޤäơjarsigner ϡJava 2 SDK ΥȥǤϤʤ JDK 1.1 Υǥƥƥǡ١ν̾̾ǧоݤ˽ԤȤǤޤ .RE -.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 ファイル (署名ファイル) には、マニフェストファイル全体のハッシュを含むヘッダーは追加されません。この場合、.SF ファイルに含まれるのは、JAR ファイル内の各ソースファイルに関する情報およびハッシュだけです。 詳細は、「署名 (.SF) ファイル」を参照してください。 -.LP -デフォルトでは、最適化を行うために、マニフェストファイル全体のハッシュを含むヘッダーが追加されます。ヘッダーが存在する場合は、JAR ファイルの検証時に、まずヘッダー内のハッシュが、マニフェストファイル全体のハッシュと実際に一致するかどうかが確認されます。ハッシュが一致する場合、検証は次の手順に進みます。ハッシュが一致しない場合は、効率的には劣る方法を使って検証を行います。 具体的には、.SF ファイル内の各ソースファイル情報セクションのハッシュが、マニフェストファイル内の対応するセクションのハッシュと一致するかどうかを確認します。 + .LP -詳細は、「JAR ファイルの検証」を参照してください。 .LP -\f3このオプションは、テストを行う場合には便利ですが、それ以外には使用しないでください。 このオプションを使用すると、有益な最適化が行われなくなります。\fP -.TP 3 -\-protected -\f2true\fP または \f2false\fP のいずれか。専用 PIN リーダーなどの保護された認証パスを介してパスワードを指定する必要がある場合には、この値に \f2true\fP を指定してください。 -.RE -.RS 3 -.TP 3 -\-provider provider\-class\-name -サービスプロバイダがセキュリティープロパティーファイル (\f2java.security\fP) のリストに入っていないときに、暗号化サービスプロバイダのマスタークラスファイルの名前を指定します。 +ɽϡJDK 1.1.x ǽ̾줿 JAR ե뤬Java 2 ץåȥեǤɤΤ褦˰뤫򼨤Ƥޤ .LP -\f2\-providerArg\fP \f2ConfigFilePath\fP オプションと組み合わせて使用します。 keytool と jarsigner はプロバイダを動的にインストールします (ここで、\f2ConfigFilePath\fP はトークン設定ファイルへのパスです)。セキュリティープロパティーファイル内で Sun PKCS#11 プロバイダが設定されていない場合に PKCS#11 キーストアを一覧表示するコマンドの例を次に示します。 -.RS 3 - .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 -\f3 -.fl -jarsigner \-keystore NONE \-storetype PKCS11 \\ -.fl - \-providerClass sun.security.pkcs11.SunPKCS11 \\ -.fl - \-providerArg /foo/bar/token.config \\ -.fl - \-list -.fl -\fP -.fi -.RE -.TP 3 -\-providerName providerName -\f2java.security\fP セキュリティープロパティーファイル内で 2 つ以上のプロバイダが設定されている場合、\f2\-providerName\fP オプションを使って特定のプロバイダインスタンスを選択できます。このオプションの引数は、プロバイダの名前です。 -.LP -Sun PKCS#11 プロバイダの場合、\f2providerName\fP は \f2SunPKCS11\-\fP\f2TokenName\fP という形式になります。 ここで「\f2TokenName\fP」は、プロバイダインスタンスが構成された名前の接尾辞です。 詳細は -.na -\f2構成属性の表\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#ATTRSを参照してください。たとえば、以下のコマンドでは、名前接尾辞 \f2SmartCard\fP の PKCS#11 キーストアプロバイダインスタンスの内容をリストします。 -.RS 3 - -.LP +.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 -\f3 -.fl -jarsigner \-keystore NONE \-storetype PKCS11 \\ -.fl - \-providerName SunPKCS11\-SmartCard \\ -.fl - \-list -.fl -\fP -.fi -.RE -.TP 3 -\-Jjavaoption -指定された \f2javaoption\fP 文字列を Java インタプリタに直接渡します。(\f3jarsigner\fP は、実際には Java インタプリタに対する「ラッパー」です。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタオプションを一覧表示するには、コマンド行で \f2java \-h\fP または \f2java \-X\fP と入力してください。 +.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 1078 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 -.TP 3 -\-tsa url -JAR ファイルの署名時にコマンド行に「\f2\-tsa http://example.tsa.url\fP」が表示される場合、署名のタイムスタンプが生成されます。URL \f2http://example.tsa.url\fP は、TSA (Time Stamping Authority) の場所を特定します。これは、\f2\-tsacert\fP オプションで検出された URL をオーバーライドします。\f2\-tsa\fP オプションでは、TSA の公開鍵証明書をキーストアに配置する必要はありません。 .LP -タイムスタンプを生成するため、\f2jarsigner\fP は -.na -\f2RFC 3161\fP @ -.fi -http://www.ietf.org/rfc/rfc3161.txt で定義されている TSP (Time\-Stamp Protocol) を使用して TSA と通信します。成功すると、TSA から返されたタイムスタンプトークンは署名ブロックファイルの署名とともに保存されます。 + \- .LP +.RS 3 .TP 3 -\-tsacert alias -JAR ファイルの署名時にコマンド行に「\f2\-tsacert alias\fP」が表示される場合、署名のタイムスタンプが生成されます。\f2alias\fP は、キーストア内の現在有効な TSA の公開鍵証明書を特定します。エントリの証明書で、TSA の場所を特定する URL を含む Subject Information Access 拡張機能が確認されます。 -.LP -TSA の公開鍵証明書は、\f2\-tsacert\fP を使った場合、キーストアに配置されている必要があります。 -.LP +1. +ݥꥷե˥ǥƥƥ/̾ˤĤƤθڤ硢򥭡ȥ˥ݡȤơݥꥷե꤬Ϳ줿øȿǤ褦ˤɬפޤ .TP 3 -\-altsigner class -代替署名機構を使用することを指定します。完全修飾クラス名は、\f2com.sun.jarsigner.ContentSigner\fP の abstract クラスを拡張するクラスファイルを特定します。このクラスファイルへのパスは、\f2\-altsignerpath\fP オプションによって定義されます。\f2\-altsigner\fP オプションを使用した場合、\f2jarsigner\fP は指定されたクラスが提供する署名機構を使用します。または、\f2jarsigner\fP はデフォルトの署名機構を使用します。 -.LP -たとえば、\f2com.sun.sun.jarsigner.AuthSigner\fP というクラスが提供する署名機構を使用するには、\f2jarsigner\fP オプション「\f2\-altsigner com.sun.jarsigner.AuthSigner\fP」を使用します。 -.LP +2. +ݥꥷե/ȥȤ߹碌ϡǥƥƥǡ١οǤ륢ǥƥƥͥ褵ޤ .TP 3 -\-altsignerpath classpathlist -クラスファイル (クラスファイル名は上記のように \f2\-altsigner\fP オプションで指定される) およびそれが依存する JAR ファイルへのパスを指定します。クラスファイルが JAR ファイル内にある場合、以下の例のように JAR ファイルへのパスが指定されます。 -.LP -絶対パスまたは現在のディレクトリからの相対パスを指定できます。\f2classpathlist\fP には、複数のパスまたは JAR ファイルを含めることができます。 その場合、各パスまたは JAR ファイルを、Solaris の場合にはコロン (\f2:\fP)、Windows の場合にはセミコロン (\f2;\fP) で区切ります。目的のクラスがすでに検索パス内にある場合は、このオプションは不要です。 -.LP -クラスファイルを含む、JAR ファイルへのパスを指定する例を示します。 -.RS 3 - -.LP -.LP -\f2\-altsignerpath /home/user/lib/authsigner.jar\fP -.LP -.RE -.LP -JAR ファイル名が含まれていることに注意してください。 -.LP -クラスファイルを含む JAR ファイルへのパスを指定する例を示します。 -.RS 3 -.LP -\f2\-altsignerpath /home/user/classes/com/sun/tools/jarsigner/\fP -.LP -.RE -.LP -JAR ファイル名は含まれていないことに留意してください。 -.RE -.SH "例" -.LP - -.LP -.SS -JAR ファイルの署名 -.LP -.RS 3 - -.LP -.LP -bundle.jar という名前の JAR ファイルがあるとします。 このファイルに、キーストアの別名が jane であるユーザーの非公開鍵を使って、署名を付けるとします。キーストアは、mystore という名前で、C ドライブの working ディレクトリにあり、キーストアのパスワードは mypass、\f2jane\fP の非公開鍵のパスワードは j638klm とします。この場合、次のコマンドを実行すると、JAR ファイルに署名を付けて sbundle.jar という署名付き JAR ファイルを作成できます。 -.LP -.nf -\f3 -.fl - jarsigner \-keystore /working/mystore \-storepass myspass -.fl - \-keypass j638klm \-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 ファイルで入力 JAR ファイル (\f2bundle.jar\fP) を上書きする場合は、\f2\-signedjar\fP オプションの指定も省略できます。 -.LP -.nf -\f3 -.fl - jarsigner bundle.jar jane -.fl -\fP -.fi +3. +Java 2 ץåȥեǤϡǤʤǥƥƥ̵뤵ޤ +.TP 3 +4. +Java 2 SDK ȥ˥ݡȤǤΤϡǤ륢ǥƥƥǤ .RE .LP -.SS -署名付き JAR ファイルの検証 -.LP -.RS 3 - -.LP -.LP -次に示すのは、署名付き JAR ファイルを検証し、署名が有効で JAR ファイルが改変されていないことを確認するためのコマンド例です。 -.LP -.nf -\f3 -.fl - jarsigner \-verify sbundle.jar -.fl -\fP -.fi - -.LP -.LP -検証が成功すると、次のようなメッセージが表示されます。 -.LP -.nf -\f3 -.fl - jar が検証されました。 -.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 = 署名が検証されました。 -.fl - m = エントリがマニフェスト内にリストされます。 -.fl - k = 1 つ以上の証明書がキーストアで検出されました。 -.fl - -.fl - jar が検証されました。 -.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 = 署名が検証されました。 -.fl - m = エントリがマニフェスト内にリストされます。 -.fl - k = 1 つ以上の証明書がキーストアで検出されました。 -.fl - -.fl - jar が検証されました。 -.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 = 署名が検証されました。 -.fl - m = エントリがマニフェスト内にリストされます。 -.fl - k = 1 つ以上の証明書がキーストアで検出されました。 -.fl - i = 1 つ以上の証明書がアイデンティティースコープで検出されました。 -.fl - -.fl - jar が検証されました。 -.fl -\fP -.fi - -.LP -.LP -別名 duke は角括弧で囲まれているので、この別名はキーストアの別名ではなく、アイデンティティーデータベースの別名です。 -.LP -.RE -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .RS 3 .TP 2 o -jar(1) ツールのドキュメント +jar(1) ġΥɥ .TP 2 o -keytool(1) ツールのドキュメント +keytool(1) ġΥɥ .TP 2 o -\f3jarsigner\fP ツールの使用例については、 .na -\f4「Java Tutorial」\fP @ +\f4jarsigner\fP\f2 ġλˤĤƤϡ\fP @ .fi -http://java.sun.com/docs/books/tutorial/index.htmlの +http://download.oracle.com/javase/tutorial/index.html .na -\f4「Security」\fP @ +\f2Java 塼ȥꥢ\fP\f4\fP @ .fi -http://java.sun.com/docs/books/tutorial/security/index.htmlを参照 +http://download.oracle.com/javase/tutorial/index.htmlSecurity\f3򻲾\fP .RE .LP diff --git a/src/solaris/doc/sun/man/man1/ja/java.1 b/src/solaris/doc/sun/man/man1/ja/java.1 index b939d72adcfc0ba9c94234c54fe40f890085b7f0..5385d6ef039027e078697a9151325e2489f7cdf7 100644 --- a/src/solaris/doc/sun/man/man1/ja/java.1 +++ b/src/solaris/doc/sun/man/man1/ja/java.1 @@ -1,4 +1,4 @@ -." Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1994, 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 @@ -19,29 +19,29 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH java 1 "02 Jun 2010" +.TH java 1 "14 Apr 2011" .LP -.SH "名前" -java \- Java アプリケーション起動ツール +.SH "̾" +java \- Java ץꥱưġ .LP .RS 3 .TP 2 o -形式 + .TP 2 o -説明 + .TP 2 o -オプション +ץ .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" +.SH "" .LP .nf \f3 @@ -52,90 +52,80 @@ o .fl .fi -.LP -.RS 3 - .LP .RS 3 .TP 3 options -コマンド行オプション。 +ޥɹԥץ .TP 3 class -呼び出されるクラスの名前 +ƤӽФ륯饹̾ .TP 3 file.jar -呼び出される JAR ファイルの名前。必ず \f2\-jar\fP とともに使用する +ƤӽФ JAR ե̾ɬ \f2\-jar\fP ȤȤ˻Ѥ .TP 3 argument -\f3main\fP 関数に渡される引数 +\f3main\fP ؿϤ .RE .LP -.RE -.SH " 説明" -.LP - +.SH "" .LP .LP -\f3java\fP ツールは、Java アプリケーションを起動します。java ツールは、Java Runtime Environment を起動したあと、指定されたクラスをロードし、そのクラスの \f3main\fP メソッドを呼び出すことにより、Java アプリケーションを起動します。 +\f3java\fP ġϡJava ץꥱưޤjava ġϡJava Runtime Environment ưȡꤵ줿饹ɤΥ饹 \f3main\fP ᥽åɤƤӽФȤˤꡢJava ץꥱưޤ .LP .LP -このメソッドは、public および static として宣言する必要があります。 また、値を返してはいけません。 さらに、\f2String\fP 配列をパラメータとして指定できなければなりません。メソッドの宣言は、次のようになっていなければなりません。 +Υ᥽åɤϡpublic static Ȥɬפޤ ޤ֤ͤƤϤޤ ˡ \f2String\fP ѥ᡼ȤƻǤʤФʤޤ󡣥᥽åɤϡΤ褦ˤʤäƤʤФʤޤ .LP .nf \f3 .fl - public static void main(String args[]) +public static void main(String args[]) .fl \fP .fi .LP .LP -デフォルトでは、コマンド行オプション以外の最初の引数が、呼び出されるクラスの名前になります。この名前には、完全指定のクラス名を使用する必要があります。\f3\-jar\fP オプションを指定した場合、コマンド行オプション以外の最初の引数が、アプリケーションのクラスファイルとリソースファイルを含む \f3JAR\fP アーカイブの名前になります。 この場合、マニフェストの \f3Main\-Class\fP ヘッダーで指定されたクラスが起動クラスになります。 +ǥեȤǤϡޥɹԥץʳκǽΰƤӽФ륯饹̾ˤʤޤ̾ˤϡΥ饹̾Ѥɬפޤ\f3\-jar\fP ץꤷ硢ޥɹԥץʳκǽΰץꥱΥ饹եȥ꥽եޤ \f3JAR\fP ֤̾ˤʤޤξ硢ޥ˥եȤ \f3Main\-Class\fP إåǻꤵ줿饹ư饹ˤʤޤ .LP .LP -Java Runtime は、ブートストラップクラスパス、インストール型拡張機能、およびユーザークラスパスの 3 箇所から起動クラスと他の使用されているクラスを検索します。 +Java Runtime ϡ֡ȥȥåץ饹ѥ󥹥ȡ뷿ĥǽӥ桼饹ѥ 3 ս꤫鵯ư饹¾λѤƤ륯饹򸡺ޤ .LP .LP -クラス名または JAR ファイル名のあとにある、コマンド行オプション以外の引数は、\f3main\fP 関数に渡されます。 +饹̾ޤ JAR ե̾ΤȤˤ롢ޥɹԥץʳΰϡ\f3main\fP ؿϤޤ .LP -.SH "オプション" +.SH "ץ" .LP - -.LP -.LP -起動ツールには、現在の実行環境および将来のリリースでサポートされる標準オプションがあります。また、仮想マシンの現在の実装では、非標準オプションのセットもサポートされます。 これは、将来のリリースで変更される可能性があります。 .LP -.SH "標準オプション" +ưġˤϡߤμ¹ԴĶӾΥ꡼ǥݡȤɸ४ץ󤬤ޤޤۥޥθߤμǤϡɸ४ץΥåȤ⥵ݡȤޤϡΥ꡼ѹǽޤ .LP - +.SH "ɸ४ץ" .LP .RS 3 .TP 3 \-client .LP -Java HotSpot Client VM を選択します。64 ビット対応 JDK は現時点では、このオプションを無視し、代わりに Java Hotspot Server VM を使用します。 +Java HotSpot Client VM 򤷤ޤ64 ӥåб JDK ϸǤϡΥץ̵뤷 Java Hotspot Server VM Ѥޤ .LP -デフォルトの VM の選択については、 +ǥեȤ VM ˤĤƤϡ .na -\f2「サーバー \- クラスマシンの検出」\fP @ +\f2֥С \- 饹ޥθС\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.html򻲾ȤƤ .TP 3 \-server .LP -Java HotSpot Server VM を選択します。64 ビット対応 JDK 上では、サポートされるのは Java Hotspot Server VM だけであるため、\-server オプションが暗黙的に選択されます。 +Java HotSpot Server VM 򤷤ޤ64 ӥåб JDK ǤϡݡȤΤ Java Hotspot Server VM Ǥ뤿ᡢ\-server ץ󤬰Ū򤵤ޤ .LP -デフォルトの VM の選択については、 +ǥեȤ VM ˤĤƤϡ .na -\f2「サーバー \- クラスマシンの検出」\fP @ +\f2֥С \- 饹ޥθС\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.html򻲾ȤƤ .TP 3 \-agentlib:libname[=options] -ネイティブエージェントライブラリ \f2libname\fP をロードします。 たとえば次のように指定します。 +ͥƥ֥ȥ饤֥ \f2libname\fP ɤޤȤмΤ褦˻ꤷޤ .LP \-agentlib:hprof .LP @@ -143,57 +133,57 @@ http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.htmlを参 .LP \-agentlib:hprof=help .LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2「JVMTI エージェントのコマンド行オプション」\fP @ +\f2JVMTI ȤΥޥɹԥץ\fP @ .fi -http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#startingを参照してください。 +http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#starting򻲾ȤƤ .TP 3 \-agentpath:pathname[=options] -フルパス名を使用して、ネーティブエージェントライブラリをロードします。詳細については、 +եѥ̾Ѥơ͡ƥ֥ȥ饤֥ɤޤܺ٤ˤĤƤϡ .na -\f2「JVMTI エージェントのコマンド行オプション」\fP @ +\f2JVMTI ȤΥޥɹԥץ\fP @ .fi -http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#startingを参照してください。 +http://java.sun.com/javase/6/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 環境変数の設定がオーバーライドされます。 +饹ե򸡺ǥ쥯ȥꡢJAR ֡ ZIP ֤ΥꥹȤꤷޤ饹ѥγƥȥϥ (\f3:\fP) Ƕڤޤ\f3\-classpath\fP ޤ \f3\-cp\fP ꤹȡΥץͤˤä \f3CLASSPATH\fP Ķѿ꤬С饤ɤޤ .LP -\f3\-classpath\fP も \f3\-cp\fP も使用されず、\f3CLASSPATH\fP も設定されていない場合、ユーザークラスパスは現在のディレクトリ (\f4.\fP) になります。 +\f3\-classpath\fP \f3\-cp\fP Ѥ줺\f3CLASSPATH\fP ꤵƤʤ硢桼饹ѥϸߤΥǥ쥯ȥ (\f4.\fP) ˤʤޤ .LP -便宜上、\f2*\fP のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 \f2.jar\fP または \f2.JAR\fP を持つすべてのファイルのリストを指定するのと同じとみなされます (Java プログラムはこの 2 つの呼び出しを区別できない)。 +ص塢 \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 仮想マシンの起動前に実行されます。したがって、\f2System.getenv("CLASSPATH")\fP 呼び出しのように環境に問い合わせを行わない限り、Java プログラムが展開されていないワイルドカードを認識することはありません。 +ȤСǥ쥯ȥ \f2foo\fP \f2a.jar\fP \f2b.JAR\fP ޤޤƤ硢饹ѥ \f2foo/*\fP \f2A.jar:b.JAR\fP ŸޤJAR եν֤̤ȤʤޤΥꥹȤˤϡեޤᡢꤵ줿ǥ쥯ȥΤ٤Ƥ JAR ե뤬ޤޤޤ* \f2饹ѥȥϡ\fP ȥǥ쥯ȥΤ٤Ƥ JAR եΥꥹȤŸޤ \f2CLASSPATH\fP Ķѿ⡢ˤƱͤŸޤ饹ѥΥ磻ɥŸɬJava ۥޥεư˼¹Ԥޤäơ\f2System.getenv("CLASSPATH")\fP ƤӽФΤ褦˴Ķ䤤碌Ԥʤ¤ꡢJava ץबŸƤʤ磻ɥɤǧ뤳ȤϤޤ .LP -クラスパスの詳細は、 +饹ѥξܺ٤ϡ .na -\f2「クラスパスの設定」\fP @ +\f2֥饹ѥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照してください。 +http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath򻲾ȤƤ .TP 3 \-Dproperty=value -システムプロパティーの値を設定します。 +ƥץѥƥͤꤷޤ .TP 3 \-d32 .TP 3 \-d64 -それぞれ 32 ビット環境、64 ビット環境でプログラムを実行することを要求します。要求された環境がインストールされていないかサポートされていない場合は、エラーが報告されます。 +줾 32 ӥåȴĶ64 ӥåȴĶǥץ¹Ԥ뤳Ȥ׵ᤷޤ׵ᤵ줿Ķ󥹥ȡ뤵ƤʤݡȤƤʤϡ顼𤵤ޤ .LP -現在のところ、Java HotSpot Server VM だけが 64 ビットの操作をサポートしており、\-d64 を使用すると \-server オプションが暗黙的に有効になります。したがって、\-d64 使用時には「\-client」オプションは無視されます。この仕様は、将来のリリースでは変更になる可能性があります。 +ߤΤȤJava HotSpot Server VM 64 ӥåȤ򥵥ݡȤƤꡢ\-server ץѤϡ\-d64 ˻Ѥɬפޤäơ\-d64 ѻˤϡ\-clientץץ̵뤵ޤλͤϡΥ꡼Ǥѹˤʤǽޤ .LP -\f3\-d32\fP と \f3\-d64\fP がどちらも指定されていない場合は、デフォルトとして、32 ビット環境で実行されます。この仕様は、将来のリリースでは変更になる可能性があります。 +\f3\-d32\fP \f3\-d64\fP ɤꤵƤʤϡǥեȤȤơ32 ӥåȴĶǼ¹ԤޤλͤϡΥ꡼Ǥѹˤʤǽޤ .TP 3 -\-enableassertions[:<package name>"..."| :<class name> ] +\-enableassertions[:<package name>"..." | :<class name> ] .TP 3 -\-ea[:<package name>"..."| :<class name> ] -アサーションを有効にします。アサーションは、デフォルトでは無効になっています。 +\-ea[:<package name>"..." | :<class name> ] +ͭˤޤϡǥեȤǤ̵ˤʤäƤޤ .LP -引数なしの \f3enableassertions\fP または \f3\-ea\fP を指定すると、アサーションが有効になります。「\f2...\fP」で終わる引数を 1 つ指定すると、指定したパッケージとそのサブパッケージ内でアサーションが有効になります。引数として「\f2...\fP」だけを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが有効になります。「\f2...\fP」で終わらない引数を 1 つ指定すると、指定したクラス内でアサーションが有効になります。 +ʤ \f3enableassertions\fP ޤ \f3\-ea\fP ꤹȡͭˤʤޤ\f2...\fPפǽ 1 ĻꤹȡꤷѥåȤΥ֥ѥåǥͭˤʤޤȤơ\f2...\fPפꤹȡߤκȥǥ쥯ȥˤ̾Τʤѥåǥͭˤʤޤ\f2...\fPפǽʤ 1 Ļꤹȡꤷ饹ǥͭˤʤޤ .LP -単一コマンド行にこれらのスイッチのインスタンスを複数指定した場合は、指定したスイッチが順番に処理されてからクラスがロードされます。したがって、たとえば、パッケージ \f2com.wombat.fruitbat\fP (サブパッケージを含む) 内でのみアサーションを有効にしてプログラムを実行するには、次のようなコマンドを使用します。 +ñ쥳ޥɹԤˤΥåΥ󥹥󥹤ʣꤷϡꤷå֤˽Ƥ饯饹ɤޤäơȤСѥå \f2com.wombat.fruitbat\fP (֥ѥåޤ) ǤΤߥͭˤƥץ¹ԤˤϡΤ褦ʥޥɤѤޤ .nf \f3 .fl @@ -202,151 +192,156 @@ java \-ea:com.wombat.fruitbat... <Main Class> \fP .fi .LP -\f3\-enableassertions\fP および \f3\-ea\fP スイッチは、すべてのクラスローダおよびシステムクラスに適用されます。 システムクラスにはクラスローダはありません。ただし、この規則には例外が 1 つあります。それは、引数なしでこのスイッチを指定すると、その指定はシステムクラスには適用されない、ということです。この例外を利用すれば、システムクラスを除くすべてのクラスでアサーションを簡単に有効にすることができます。すべてのシステムクラスでアサーションを有効にするために、別のスイッチが用意されています。 このあとの \f3\-enablesystemassertions\fP を参照してください。 +\f3\-enableassertions\fP \f3\-ea\fP åϡ٤ƤΥ饹ӥƥ९饹ŬѤޤƥ९饹ˤϥ饹Ϥޤ󡣤ε§ˤ 1 㳰ޤϡʤηǤΥåꤹȡλ꤬ƥŬѤʤȤȤǤ㳰ѤСƥ९饹٤ƤΥ饹ǥñͭˤ뤳ȤǤޤ٤ƤΥƥ९饹ǥͭˤ뤿ˡ̤ΥåѰդƤޤΤȤ \f3\-enablesystemassertions\fP 򻲾ȤƤ .TP 3 -\-disableassertions[:<package name>"..."| :<class name> ] +\-disableassertions[:<package name>"..." | :<class name> ] .TP 3 -\-da[:<package name>"..."| :<class name> ] -アサーションを無効にします。これはデフォルトの設定です。 +\-da[:<package name>"..." | :<class name> ] +̵ˤޤ줬ǥեȤǤ .LP -引数なしの \f3disableassertions\fP または \f3\-da\fP を指定すると、アサーションが無効になります。「\f2...\fP」で終わる引数を 1 つ指定すると、指定したパッケージとそのサブパッケージ内でアサーションが無効になります。引数として「\f2...\fP」だけを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが無効になります。「\f2...\fP」で終わらない引数を 1 つ指定すると、指定したクラス内でアサーションが無効になります。 +ʤ \f3disableassertions\fP ޤ \f3\-da\fP ꤹȡ̵ˤʤޤ\f2...\fPפǽ 1 ĻꤹȡꤷѥåȤΥ֥ѥåǥ̵ˤʤޤȤơ\f2...\fPפꤹȡߤκȥǥ쥯ȥˤ̾Τʤѥåǥ̵ˤʤޤ\f2...\fPפǽʤ 1 Ļꤹȡꤷ饹ǥ̵ˤʤޤ .LP -パッケージ \f2com.wombat.fruitbat\fP 内ではアサーションを有効にし、クラス \f2com.wombat.fruitbat.Brickbat\fP 内ではアサーションを無効にしたうえで、プログラムを実行するには、次のようなコマンドを使用します。 +ѥå \f2com.wombat.fruitbat\fP Ǥϥͭˤ饹 \f2com.wombat.fruitbat.Brickbat\fP Ǥϥ̵ˤǡץ¹ԤˤϡΤ褦ʥޥɤѤޤ .nf \f3 .fl -java \-ea:com.wombat.fruitbat... \-da:com.wombat.fruitbat.Brickbat <Main Class> +java \-ea:com.wombat.fruitbat... \-da:com.wombat.fruitbat.Brickbat \fP\f4<Main Class>\fP\f3 .fl \fP .fi .LP -\f3\-disableassertions\fP および \f3\-da\fP スイッチは、すべてのクラスローダおよびシステムクラスに適用されます。 システムクラスにはクラスローダはありません。ただし、この規則には例外が 1 つあります。それは、引数なしでこのスイッチを指定すると、その指定はシステムクラスには適用されない、ということです。この例外を利用すれば、システムクラスを除くすべてのクラスでアサーションを簡単に有効にすることができます。すべてのシステムクラスでアサーションを無効にするために、別のスイッチが用意されています。 このあとの \f3\-disablesystemassertions\fP を参照してください。 +\f3\-disableassertions\fP \f3\-da\fP åϡ٤ƤΥ饹ӥƥ९饹ŬѤޤƥ९饹ˤϥ饹Ϥޤ󡣤ε§ˤ 1 㳰ޤϡʤηǤΥåꤹȡλ꤬ƥŬѤʤȤȤǤ㳰ѤСƥ९饹٤ƤΥ饹ǥñͭˤ뤳ȤǤޤ٤ƤΥƥ९饹ǥ̵ˤ뤿ˡ̤ΥåѰդƤޤΤȤ \f3\-disablesystemassertions\fP 򻲾ȤƤ .TP 3 \-enablesystemassertions .TP 3 \-esa -すべてのシステムクラス内でアサーションを有効にします。 つまり、システムクラスについてアサーションのデフォルトステータスを \f2true\fP に設定します。 +٤ƤΥƥ९饹ǥͭˤޤĤޤꡢƥ९饹ˤĤƥΥǥեȥơ \f2true\fP ꤷޤ .TP 3 \-disablesystemassertions .TP 3 \-dsa -すべてのシステムクラス内でアサーションを無効にします。 -.LP +٤ƤΥƥ९饹ǥ̵ˤޤ .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)と、 +JAR ե˥ץ벽줿ץ¹Ԥޤǽΰϡư饹̾ǤϤʤJAR ե̾ˤޤΥץ󤬵ǽˤϡJAR եΥޥ˥եȤ\f3Main\-Class:\fP\f4classname\fP\f3\fPȤιԤꤹɬפޤ\f2classname\fP ˤϡץꥱγϰ֤ȤƵǽ \f2public\ static\ void\ main(String[]\ args)\fP ᥽åɤޤ९饹ꤷޤJAR եȤΥޥ˥եȤˤĤƤϡjar(1)ȡ .na -\f2Java チュートリアル\fP @ +\f2Java 塼ȥꥢ\fP @ .fi -http://java.sun.com/docs/books/tutorial/jarの「Trail: Jar Files」を参照してください。 +http://download.oracle.com/javase/tutorial/deployment/jarΡTrail: Jar Filesפ򻲾ȤƤ .LP -このオプションを使用すると、指定した JAR ファイルがすべてのユーザークラスのソースになり、ユーザークラスパスのほかの設定は無視されます。 +ΥץѤȡꤷ JAR ե뤬٤ƤΥ桼饹Υˤʤꡢ桼饹ѥΤ̵ۤ뤵ޤ .LP -Solaris 8 では、「java \-jar」オプションで実行できる JAR ファイルは、実行権限のセットを保持しています。 このため、「java \-jar」を使用しないで実行することも可能です。 +Solaris 8 Ǥϡjava \-jarץץǼ¹ԤǤ JAR եϡ¹Ը¤ΥåȤݻƤޤΤᡢjava \-jarפѤʤǼ¹Ԥ뤳ȤǽǤJava Archive (JAR) ե .na -\f2Java Archive (JAR) ファイル\fP @ + @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/index.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/jar/index.html .TP 3 \-javaagent:jarpath[=options] -Java プログラミング言語エージェントをロードします。 +Java ץߥ󥰸쥨Ȥɤޤ java.lang.instrument 򻲾ȤƤ .na -\f2java.lang.instrument\fP @ + @ .fi -http://java.sun.com/javase/6/docs/api/java/lang/instrument/package\-summary.html を参照してください。 +http://java.sun.com/javase/6/docs/api/java/lang/instrument/package\-summary.html +.TP 3 +\-jre\-restrict\-search +桼ץ饤١Ȥ JRE С󸡺˴ޤޤ +.TP 3 +\-no\-jre\-restrict\-search +桼ץ饤١Ȥ JRE С󸡺ޤ .TP 3 \-verbose .TP 3 \-verbose:class -クラスがロードされるたびにクラスに関する情報を表示します。 +饹ɤ뤿Ӥ˥饹˴ؤɽޤ .TP 3 \-verbose:gc -ガベージコレクションイベントが発生するたびに報告します。 +١쥯󥤥٥Ȥȯ뤿Ӥ𤷤ޤ .TP 3 \-verbose:jni -ネイティブメソッドの使用およびその他の Java Native Interface (JNI) アクティビティーに関する情報を報告します。 +ͥƥ֥᥽åɤλѤӤ¾ Java Native Interface (JNI) ƥӥƥ˴ؤ𤷤ޤ .TP 3 \-version -バージョン情報を表示して終了します。 +Сɽƽλޤ .TP 3 \-version:release -コマンド行に指定されたクラスまたは JAR ファイルが、\f2release\fP で指定されたバージョンを必要としていることを示します。起動された java コマンドのバージョンがこの指定内容を満たさず、かつ適切な実装がシステム上で見つかった場合には、その適切な実装が使用されます。 +ޥɹԤ˻ꤵ줿饹ޤ JAR ե뤬\f2release\fP ǻꤵ줿СɬפȤƤ뤳Ȥ򼨤ޤư줿 java ޥɤΥС󤬤λƤŬڤʼƥǸĤäˤϡŬڤʼѤޤ .LP -\f2release\fP では、特定のバージョンを指定できるだけでなく、バージョン文字列と呼ばれるバージョンのリストを指定することもできます。バージョン文字列は、いくつかのバージョン範囲を空白で区切った形式の順序付きリストです。バージョン範囲は、バージョン ID、バージョン ID の後にアスタリスク (*) を付加したもの、バージョン ID の後にプラス記号 (+) を付加したもの、2 つのバージョン範囲をアンパサンド (&) で結合したもの、のいずれかになります。アスタリスクはプレフィックス一致を、プラス記号は指定されたバージョン以上を、アンパサンドは 2 つのバージョン範囲の論理積を、それぞれ意味します。例を示します。 +\f2release\fP ǤϡΥСǤǤʤСʸȸƤФСΥꥹȤꤹ뤳ȤǤޤСʸϡĤΥСϰϤǶڤäνդꥹȤǤСϰϤϡС IDС ID θ˥ꥹ (*) ղäΡС ID θ˥ץ饹 (+) ղäΡ2 ĤΥСϰϤ򥢥ѥ (&) Ƿ礷ΡΤ줫ˤʤޤꥹϥץեåפ򡢥ץ饹ϻꤵ줿Сʾ򡢥ѥɤ 2 ĤΥСϰϤѤ򡢤줾̣ޤ򼨤ޤ .nf \f3 .fl -\-version:"1.5.0_04 1.5*&1.5.1_02+" +\-version:"1.6.0_13 1.6*&1.6.0_10+" .fl \fP .fi -上記の意味は、バージョン 1.5.0_04、または 1.5.1_02 以上で 1.5 をバージョン ID プレフィックスとして持つバージョン、のいずれかをクラスまたは JAR ファイルが必要とする、ということです。 バージョン文字列の厳密な構文や定義については、「Java Network Launching Protocol & API Specification (JSR\-56)」の「Appendix A」を参照してください。 +嵭ΰ̣ϡС 1.6.0_131.6 С ID ץեå˻ 1.6.0_10 ʾΥС󡢤Τ줫򥯥饹ޤ JAR ե뤬ɬפȤƤ롢ȤȤǤСʸθ̩ʹʸˤĤƤϡJava Network Launching Protocol & API Specification (JSR\-56)פΡAppendix Aפ򻲾ȤƤ .LP -JAR ファイルの場合は通常、バージョン要件をコマンド行に指定するよりも、JAR ファイルのマニフェスト内に指定することが推奨されています。 +JAR եξ̾С׷򥳥ޥɹԤ˻ꤹ⡢JAR եΥޥ˥ե˻ꤹ뤳Ȥ侩Ƥޤ .LP -このオプションの使用に関する重要なポリシー情報については、後述の「注」節を参照してください。 +ΥץλѤ˴ؤפʥݥꥷˤĤƤϡҤΡ򻲾ȤƤ .TP 3 \-showversion -バージョン情報を表示して続行します。 +Сɽ³Ԥޤ .TP 3 \-? .TP 3 \-help -使用法を表示して終了します。 +ˡɽƽλޤ +.TP 3 +\-splash:imagepath +\f2imagepath\fP ˻ꤵ줿ޤॹץå̤ɽޤ .TP 3 \-X -非標準オプションに関する情報を表示して終了します。 +ɸ४ץ˴ؤɽƽλޤ .RE .LP .SS -非標準オプション -.LP -.RS 3 - +ɸ४ץ .LP .RS 3 .TP 3 \-Xint -インタプリタ専用モードで動作します。ネイティブコードへのコンパイルは無効になり、すべてのバイトコードがインタプリタによって実行されます。Java HotSpot VM に対応するコンパイラが提供するパフォーマンス上の利点は、このモードでは実現されません。 +󥿥ץ꥿ѥ⡼ɤưޤͥƥ֥ɤؤΥѥ̵ˤʤꡢ٤ƤΥХȥɤ󥿥ץ꥿ˤäƼ¹ԤޤJava HotSpot VM б륳ѥ餬󶡤ѥեޥ󥹾ϡΥ⡼ɤǤϼ¸ޤ .TP 3 \-Xbatch -バックグラウンドコンパイルを無効にします。通常、VM では、バックグラウンドコンパイルが終了するまで、メソッドをバックグラウンドタスクとしてコンパイルし、インタプリタモードでメソッドを実行します。\f2\-Xbatch\fP フラグを指定すると、バックグラウンドコンパイルが無効になり、すべてのメソッドのコンパイルが完了するまでフォアグラウンドタスクとして処理されます。 +Хå饦ɥѥ̵ˤޤ̾VM ǤϡХå饦ɥѥ뤬λޤǡ᥽åɤХå饦ɥȤƥѥ뤷󥿥ץ꥿⡼ɤǥ᥽åɤ¹Ԥޤ\f2\-Xbatch\fP ե饰ꤹȡХå饦ɥѥ뤬̵ˤʤꡢ٤ƤΥ᥽åɤΥѥ뤬λޤǥե饦ɥȤƽޤ .TP 3 \-Xbootclasspath:bootclasspath -ブートクラスファイルを探すディレクトリ、JAR アーカイブ、および ZIP アーカイブをコロンで区切ったリストで指定します。指定したパスに存在するブートクラスファイルが、JDK に含まれるブートクラスファイルの代わりに使用されます。\f2注: rt.jar 内のクラスをオーバーライドする目的でこのオプションを使用するアプリケーションは、システムに配置しないでください。Java Runtime Environment バイナリコードライセンス違反になります。\fP +֡ȥ饹եõǥ쥯ȥꡢJAR ֡ ZIP ֤򥳥ǶڤäꥹȤǻꤷޤꤷѥ¸ߤ֡ȥ饹ե뤬Java ץåȥե JDK ˴ޤޤ֡ȥ饹ե˻Ѥޤ\f2: rt.jar Υ饹򥪡С饤ɤŪǤΥץѤ륢ץꥱϡƥ֤ʤǤJava Runtime Environment Хʥꥳɥ饤󥹰ȿˤʤޤ\fP .TP 3 \-Xbootclasspath/a:path -ディレクトリ、JAR アーカイブ、および ZIP アーカイブのパスをコロンで区切って指定します。 パスはデフォルトのブートストラップクラスパスのあとに追加されます。 +ǥ쥯ȥꡢJAR ֡ ZIP ֤Υѥ򥳥ǶڤäƻꤷޤѥϥǥեȤΥ֡ȥȥåץ饹ѥΤȤɲäޤ .TP 3 \-Xbootclasspath/p:path -ディレクトリ、JAR アーカイブ、および ZIP アーカイブのパスをコロンで区切って指定します。 パスはデフォルトのブートストラップクラスパスの前に追加されます。\f2注 rt.jar 内のクラスをオーバーライドする目的でこのオプションを使用するアプリケーションは、システムに配置しないでください。Java Runtime Environment バイナリコードライセンス違反になります。\fP +ǥ쥯ȥꡢJAR ֡ ZIP ֤Υѥ򥳥ǶڤäƻꤷޤѥϥǥեȤΥ֡ȥȥåץ饹ѥɲäޤ\f2: rt.jar Υ饹򥪡С饤ɤŪǤΥץѤ륢ץꥱϡƥ֤ʤǤJava Runtime Environment Хʥꥳɥ饤󥹰ȿˤʤޤ\fP .TP 3 \-Xcheck:jni -Java Native Interface (JNI) 機能に対して追加チェックを行います。具体的には、Java 仮想マシンは JNI 要求を処理する前に、JNI 関数に渡されるパラメータと、実行環境のデータを検証します。無効なデータが見つかった場合は、ネイティブコードに問題があることを示しているため、Java 仮想マシンは致命的エラーを発生して終了します。このオプションを使用すると、パフォーマンス低下が予想されます。 +Java Native Interface (JNI) ǽФɲååԤޤŪˤϡJava ۥޥ JNI ׵ˡJNI ؿϤѥ᡼ȡ¹ԴĶΥǡ򸡾ڤޤ̵ʥǡĤäϡͥƥ֥ɤ꤬뤳Ȥ򼨤Ƥ뤿ᡢJava ۥޥ̿Ū顼ȯƽλޤΥץѤȡѥեޥ㲼ͽۤޤ .TP 3 \-Xfuture -クラスとファイルの形式を厳密にチェックします。下位互換性を保つため、JDK の仮想マシンが実行するデフォルトの形式チェックは、JDK ソフトウェアのバージョン 1.1.x が実行するチェックと同程度の厳密さになっています。\f3\-Xfuture\fP フラグを指定すると、クラスファイル形式の仕様への準拠を強化するためのより厳密なチェックが有効になります。Java アプリケーション起動ツールの将来のリリースでは、より厳密なチェックがデフォルトになるため、新しいコードを開発するときにはこのフラグを使用することをお勧めします。 +饹ȥեη̩˥åޤ̸ߴݤĤᡢJDK βۥޥ󤬼¹ԤǥեȤηåϡJDK եȥΥС 1.1.x ¹ԤåƱ٤θ̩ˤʤäƤޤ\f3\-Xfuture\fP ե饰ꤹȡ饹եλͤؤν򶯲뤿Τ긷̩ʥåͭˤʤޤJava ץꥱưġξΥ꡼Ǥϡ긷̩ʥåǥեȤˤʤ뤿ᡢɤȯȤˤϤΥե饰Ѥ뤳Ȥ򤪴ᤷޤ .TP 3 \-Xnoclassgc -クラスのガベージコレクションを無効にします。このオプションを使用すると、ロード済みクラスからメモリーが回復されることがなくなるため、全体的なメモリー使用量が増大します。この場合、アプリケーションによっては OutOfMemoryError がスローされる可能性があります。 +饹Υ١쥯̵ˤޤΥץѤȡɺѤߥ饹꡼뤳Ȥʤʤ뤿ᡢŪʥ꡼̤礷ޤξ硢ץꥱˤäƤ OutOfMemoryError ǽޤ .TP 3 \-Xincgc -インクリメンタルガーベジコレクタを有効にします。インクリメンタルガベージコレクタは、デフォルトでは無効になっています。 有効にすると、プログラムの実行中にガベージコレクションによる一時停止が発生しなくなります。インクリメンタルガベージコレクタは、プログラムと同時に実行することがあり、この場合、プログラムの利用できるプロセッサ能力が低下します。 +󥯥󥿥륬٥쥯ͭˤޤ󥯥󥿥륬١쥯ϡǥեȤǤ̵ˤʤäƤޤ ͭˤȡץμ¹˥١쥯ˤߤȯʤʤޤ󥯥󥿥륬١쥯ϡץƱ˼¹Ԥ뤳Ȥꡢξ硢ץѤǤץåǽϤ㲼ޤ .TP 3 \-Xloggc:file -\-verbose:gc と同様にガベージコレクションイベントが発生するたびに報告しますが、そのデータを \f2file\fP に記録します。\f2\-verbose:gc\fP を指定したときに報告される情報のほかに、報告される各イベントの先頭に、最初のガベージコレクションイベントからの経過時間 (秒単位) が付け加えられます。 -.LP -ネットワークの応答時間によって JVM の実行速度が低下するのを避けるため、このファイルの格納先は、常にローカルファイルシステムにしてください。ファイルシステムが満杯になると、ファイルは切り詰められ、そのファイルにデータが引き続き記録されます。このオプションと \f2\-verbose:gc\fP の両方がコマンド行に指定されている場合は、このオプションが優先されます。 +\-verbose:gc Ʊͤ˥١쥯󥤥٥Ȥȯ뤿Ӥ𤷤ޤΥǡ \f2file\fP ˵Ͽޤ\f2\-verbose:gc\fP ꤷȤ𤵤Τۤˡ𤵤ƥ٥ȤƬˡǽΥ١쥯󥤥٥Ȥηв (ñ) դäޤ .LP +ͥåȥα֤ˤä JVM μ¹®٤㲼Τ򤱤뤿ᡢΥեγǼϡ˥ե륷ƥˤƤե륷ƥबդˤʤȡեڤͤ졢Υե˥ǡ³ϿޤΥץ \f2\-verbose:gc\fP ξޥɹԤ˻ꤵƤϡΥץͥ褵ޤ .TP 3 \-Xmsn -メモリー割り当てプールの初期サイズをバイト数で指定します。指定する値は、1M バイトより大きい 1024 の倍数にしなければなりません。キロバイトを指定するには、文字 \f2k\fP または \f2K\fP を付けます。 メガバイトを指定するには、文字 \f2m\fP または \f2M\fP を付けます。デフォルト値は、実行時にシステムの設定に基づいて選択されます。詳細については、「HotSpot Ergonomics」を参照してください。 -.br -例: -.RS 3 - +꡼ƥסνХȿǻꤷޤꤹͤϡ1M ХȤ礭 1024 ܿˤʤФʤޤ󡣥ХȤꤹˤϡʸ \f2k\fP ޤ \f2K\fP դޤᥬХȤꤹˤϡʸ \f2m\fP ޤ \f2M\fP դޤǥեͤϡ¹Ի˥ƥ˴Ť򤵤ޤܺ٤ˤĤƤϡ +.na +\f2HotSpot Ergonomics\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/vm/gc\-ergonomics.htmlפ򻲾ȤƤ .LP +: .nf \f3 .fl @@ -356,19 +351,19 @@ Java Native Interface (JNI) 機能に対して追加チェックを行います .fl \-Xms6m .fl - + .fl \fP .fi -.RE .TP 3 \-Xmxn -メモリー割り当てプールの最大サイズをバイト数で指定します。指定する値は、2M バイトより大きい 1024 の倍数にしなければなりません。キロバイトを指定するには、文字 \f2k\fP または \f2K\fP を付けます。 メガバイトを指定するには、文字 \f2m\fP または \f2M\fP を付けます。デフォルト値は、実行時にシステムの設定に基づいて選択されます。詳細については、「HotSpot Ergonomics」を参照してください。 +꡼ƥסκ祵Хȿǻꤷޤꤹͤϡ2M ХȤ礭 1024 ܿˤʤФʤޤ󡣥ХȤꤹˤϡʸ \f2k\fP ޤ \f2K\fP դޤᥬХȤꤹˤϡʸ \f2m\fP ޤ \f2M\fP դޤǥեͤϡ¹Ի˥ƥ˴Ť򤵤ޤܺ٤ˤĤƤϡ +.na +\f2HotSpot Ergonomics\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/vm/gc\-ergonomics.htmlפ򻲾ȤƤ .br -例: -.RS 3 - -.LP +: .nf \f3 .fl @@ -378,95 +373,104 @@ Java Native Interface (JNI) 機能に対して追加チェックを行います .fl \-Xmx80m .fl - + .fl \fP .fi -.RE -Solaris 7 および Solaris 8 SPARC プラットフォームの場合、この値の上限はおよそ 4000m からオーバーヘッドの量を引いたものであり、Solaris 2.6 および x86 プラットフォームの場合は 2000m からオーバーヘッドの量を引いたものです。Linux プラットフォームの場合の上限は、およそ 2000m からオーバーヘッドの量を引いたものです。 +Solaris 7 Solaris 8 SPARC ץåȥեξΤͤξ¤ϡ褽 4000m 饪Сإåɤ̤ΤǤSolaris 2.6 x86 ץåȥեξξ¤ϡ褽 2000m 饪Сإåɤ̤ΤǤLinux ץåȥեξξ¤ϡ褽 2000m 饪Сإåɤ̤ΤǤ .TP 3 \-Xprof -実行中のプログラムのプロファイルを生成し、プロファイリングデータを標準出力に出力します。このオプションは、プログラム開発用のユーティリティーとして提供されています。 本番稼動システムでの使用を目的としたものではありません。 -.LP +¹ΥץΥץեץեǡɸϤ˽ϤޤΥץϡץ೫ȯѤΥ桼ƥƥȤ󶡤Ƥޤ ֲưƥǤλѤŪȤΤǤϤޤ .TP 3 \-Xrs -Java 仮想マシン (JVM) によるオペレーティングシステムシグナルの使用を減らします。 +Java ۥޥ (JVM) ˤ륪ڥ졼ƥ󥰥ƥॷʥλѤ򸺤餷ޤ .LP -以前のリリースでは、Java アプリケーションを秩序正しくシャットダウンするためのシャットダウンフック機能が追加されました。この機能により、JVM が突然終了した場合でも、シャットダウン時にユーザークリーンアップコード (データベース接続のクローズなど) を実行できるようになりました。 +Υ꡼ǤϡJava ץꥱåȥ󤹤뤿ΥåȥեåǽɲäޤεǽˤꡢJVM λǤ⡢åȥ˥桼꡼󥢥åץ (ǡ١³Υʤ) ¹ԤǤ褦ˤʤޤ .LP -Sun の JVM は、シグナルをキャッチすることによって、JVM の異常終了のためのシャットダウンフックを実装します。JVM は、SIGHUP、SIGINT、および SIGTERM を使用して、シャットダウンフックの実行を開始します。 +Sun JVM ϡʥ򥭥å뤳ȤˤäơJVM ΰ۾ェλΤΥåȥեåޤJVM ϡSIGHUPSIGINT SIGTERM Ѥơåȥեåμ¹Ԥ򳫻Ϥޤ .LP -JVM は、デバッグの目的でスレッドスタックをダンプするという、1.2 より前からある機能を実現するためにも、同様の機構を使用します。Sun の JVM は、スレッドダンプを実行するために SIGQUIT を使用します。 +JVM ϡǥХåŪǥåɥåפȤ1.2 餢뵡ǽ¸뤿ˤ⡢ƱͤεѤޤSun JVM ϡåɥפ¹Ԥ뤿 SIGQUIT Ѥޤ .LP -JVM を埋め込んでいるアプリケーションが SIGINT や SIGTERM などのシグナルを頻繁にトラップする必要があると、JVM そのもののシグナルハンドラの処理に支障が出る可能性があります。\f3\-Xrs\fP コマンド行オプションを使用すると、この問題に対処できます。Sun の JVM に対して \f3\-Xrs\fP を使用すると、SIGINT、SIGTERM、SIGHUP、および SIGQUIT に対するシグナルマスクは JVM によって変更されず、これらのシグナルに対するシグナルハンドラはインストールされません。 +JVM Ǥ륢ץꥱ SIGINT SIGTERM ʤɤΥʥˤ˥ȥåפɬפȡJVM ΤΤΥʥϥɥν˻پ㤬Фǽޤ\f3\-Xrs\fP ޥɹԥץѤȡнǤޤSun JVM Ф \f3\-Xrs\fP ѤȡSIGINTSIGTERMSIGHUP SIGQUIT Ф륷ʥޥ JVM ˤäѹ줺ΥʥФ륷ʥϥɥϥ󥹥ȡ뤵ޤ .LP -\f3\-Xrs\fP を指定した場合、次の 2 つの影響があります。 +\f3\-Xrs\fP ꤷ硢 2 Ĥαƶޤ .RS 3 .TP 2 o -SIGQUIT によるスレッドダンプを利用できない +SIGQUIT ˤ륹åɥפѤǤʤ .TP 2 o -シャットダウンフック処理の実行は、JVM が終了しようとしている時点で System.exit() を呼び出すなどして、ユーザーコード側で行う必要がある +åȥեåμ¹ԤϡJVM λ褦ȤƤ System.exit() ƤӽФʤɤơ桼¦ǹԤɬפ .RE .TP 3 \-Xssn -スレッドのスタックサイズを設定します。 +åɤΥåꤷޤ .TP 3 \-XX:+UseAltSigs -VM ではデフォルトで \f2SIGUSR1\fP および \f2SIGUSR2\fP を使用しますが、\f2SIGUSR1\fP および \f2SIGUSR2\fP をシグナル連鎖するアプリケーションと 競合する場合があります。\f2\-XX:+UseAltSigs\fP オプションは、VM にデフォルトとして \f2SIGUSR1\fP と \f2SIGUSR2\fP 以外のシグナルを使用させます。 +VM ǤϥǥեȤ \f2SIGUSR1\fP \f2SIGUSR2\fP Ѥޤ\f2SIGUSR1\fP \f2SIGUSR2\fP 򥷥ʥϢ륢ץꥱ 礹礬ޤ\f2\-XX:+UseAltSigs\fP ץϡVM ˥ǥեȤȤ \f2SIGUSR1\fP \f2SIGUSR2\fP ʳΥʥѤޤ .RE .LP -.RE -.SH "注" +.SH "" .LP - .LP -\f3\-version:\fP\f2release\fP コマンド行オプションでは、どんなに複雑にリリースを指定してもかまいません。ただし、現実的なリリース指定の限られたサブセットを使用するだけでも適切なポリシーを表現できるため、それらのサブセットのみが完全にサポートされます。それらのポリシーを次に示します。 +\f3\-version:\fP\f2release\fP ޥɹԥץǤϡɤʤʣ˥꡼ꤷƤ⤫ޤޤ󡣤Ūʥ꡼θ¤줿֥åȤѤǤŬڤʥݥꥷɽǤ뤿ᡢΥ֥åȤΤߤ˥ݡȤޤΥݥꥷ򼡤˼ޤ +.LP .RS 3 .TP 3 1. -任意のバージョン。 これは、このオプションを使用しないことで表現できます。 +ǤդΥС󡣤ϡΥץѤʤȤɽǤޤ .TP 3 2. -ある特定のバージョン ID よりも大きい任意のバージョン。 次に例を示します。 +ΥС ID 礭ǤդΥС󡣼򼨤ޤ .nf \f3 .fl -"1.5.0_03+" +"1.6.0_10+" .fl \fP .fi -.LP -この場合、1.5.0_03 よりも大きい任意のバージョンが使用されます。 これは、指定されたバージョンで特定のインタフェースが導入された (あるいはそのバグが修正された) 場合に便利です。 +ξ硢 \f21.6.0_10\fP 礭ǤդΥС󤬻Ѥޤϡꤵ줿СΥ󥿥եƳ줿 (뤤ϤΥХ줿) Ǥ .TP 3 3. -ある特定のバージョン ID よりも大きいバージョン。 ただし、そのリリースファミリの上限によって制限するもの。例を示します。 +ΥС ID 礭С󡣤Υ꡼եߥξ¤ˤä¤Ρ򼨤ޤ .nf \f3 .fl -"1.5.0_03+&1.5*" +"1.6.0_10+&1.6*" .fl \fP .fi .TP 3 4. -上の項目 2 または 3 の「OR」表現。例を示します。 +ι 2 ȹ 3 ΡOR׼򼨤ޤ .nf \f3 .fl -"1.4.2_05+&1.4* 1.5+" +"1.6.0_10+&1.6* 1.7+" .fl \fP .fi -これは項目 2 に似ていますが、ある変更が特定のリリース (1.5) で導入されたが、その同じ変更が以前のリリースのアップデートでも利用可能になった、という場合に便利です。 +Ϲ 2 ˻ƤޤѹΥ꡼ (1.7) Ƴ줿ƱѹΥ꡼ΥåץǡȤǤѲǽˤʤäȤǤ .RE .LP -.SH "関連項目" +.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 @@ -484,19 +488,19 @@ jar(1) .TP 2 o .na -\f2「Java 拡張機能フレームワーク」\fP @ +\f2Java ĥǽե졼\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html .TP 2 o .na -\f2「セキュリティー」\fP @ +\f2֥ƥ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/security/index.html .TP 2 o .na -\f2「HotSpot VM Specific Options」\fP @ +\f2HotSpot VM Specific Options\fP @ .fi http://java.sun.com/docs/hotspot/VMOptions.html .RE diff --git a/src/solaris/doc/sun/man/man1/ja/javac.1 b/src/solaris/doc/sun/man/man1/ja/javac.1 index 905022aaa850b81271f6a910a7d55e4bc55dac80..6987ff94b684ffed2bbeb5a735a13d9693e1d19e 100644 --- a/src/solaris/doc/sun/man/man1/ja/javac.1 +++ b/src/solaris/doc/sun/man/man1/ja/javac.1 @@ -1,4 +1,4 @@ -." Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1994, 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 @@ -19,325 +19,423 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH javac 1 "02 Jun 2010" +.TH javac 1 "14 Apr 2011" .LP -.SH "名前" -javac \- Java プログラミング言語コンパイラ +.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 - +.SH "" .LP .nf \f3 .fl \fP\f3javac\fP [ options ] [ sourcefiles ] [ classes ] [ @argfiles ] .fl - + .fl .fi .LP .LP -引数は順不同です。 -.LP -.RS 3 - +ϽƱǤ .LP .RS 3 .TP 3 options -コマンド行オプション。 +ޥɹԥץ .TP 3 sourcefiles -コンパイルされる 1 つ以上のソースファイル (MyClass.java など) +ѥ뤵 1 İʾΥե (MyClass.java ʤ) .TP 3 classes -注釈の処理対象となる 1 つ以上のクラス (MyPackage.MyClass など) +νоݤȤʤ 1 İʾΥ饹 (MyPackage.MyClass ʤ) .TP 3 @argfiles -オプションとソースファイルを列挙した 1 つ以上のファイル。このファイルの中では、\f2\-J\fP オプションは指定できません。 +ץȥե󤷤 1 İʾΥե롣ΥեǤ \f2\-J\fP ץϻǤޤ .RE .LP -.RE -.SH "説明" -.LP - +.SH "" .LP .LP -\f3javac\fP ツールは、Java プログラミング言語で記述されたクラスとインタフェースの定義を読み取り、バイトコードのクラスファイルにコンパイルします。また、Java ソースファイルおよびクラス内の注釈の処理も行います。 +\f3javac\fP ġϡJava ץߥ󥰸ǵҤ줿饹ȥ󥿥եɤ߼ꡢХȥɤΥ饹ե˥ѥ뤷ޤޤJava ե뤪ӥ饹νԤޤ .LP .LP -ソースコードのファイル名を \f3javac\fP に渡すには、次の 2 つの方法があります。 +ɤΥե̾ \f3javac\fP Ϥˤϡ 2 Ĥˡޤ .LP .RS 3 .TP 2 o -ソースファイルの数が少ない場合は、ファイル名をコマンド行で直接指定します。 +եοʤϡե̾򥳥ޥɹԤľܻꤷޤ .TP 2 o -ソースファイルの数が多い場合は、ファイル名を空白または改行で区切って、1 つのファイルに列挙します。次に、このリストファイル名の先頭に \f3@\fP を付けて、\f3javac\fP のコマンド行で指定します。 +եο¿ϡե̾ޤϲԤǶڤäơ1 ĤΥե󤷤ޤˡΥꥹȥե̾Ƭ \f3@\fP դơ\f3javac\fP ΥޥɹԤǻꤷޤ .RE .LP .LP -ソースコードのファイル名は \f2.java\fP 拡張子を、クラスのファイル名は \f2.class\fP 拡張子を持っていなければなりません。 また、ソースファイルとクラスファイルのどちらも、該当するクラスに対応するルート名を持っていなければなりません。たとえば、\f2MyClass\fP という名前のクラスは、\f2MyClass.java\fP という名前のソースファイルに記述します。 このソースファイルは、\f2MyClass.class\fP という名前のバイトコードクラスファイルにコンパイルされます。 +ɤΥե̾ \f2.java\fP ĥҤ򡢥饹Υե̾ \f2.class\fP ĥҤäƤʤФʤޤ󡣤ޤեȥ饹եΤɤ⡢륯饹б롼̾äƤʤФʤޤ󡣤ȤС \f2MyClass\fP Ȥ̾Υ饹ϡ \f2MyClass.java\fP Ȥ̾Υե˵ҤޤΥեϡ \f2MyClass.class\fP Ȥ̾ΥХȥɥ饹ե˥ѥ뤵ޤ .LP .LP -内部クラスが定義されていると、追加のクラスファイルが生成されます。これらのクラスファイルの名前は、\f2MyClass$MyInnerClass.class\fP のように、外部クラス名と内部クラス名を組み合わせたものになります。 +饹ƤȡɲäΥ饹ե뤬ޤΥ饹ե̾ϡ \f2MyClass$MyInnerClass.class\fP Τ褦ˡ饹̾饹̾Ȥ߹碌Τˤʤޤ .LP .LP -ソースファイルは、パッケージツリーを反映したディレクトリツリーに配置する必要があります。たとえば、すべてのソースファイルを \f3/workspace\fP に置いている場合、\f2com.mysoft.mypack.MyClass\fP のソースコードは \f3/workspace/com/mysoft/mypack/MyClass.java\fP にある必要があります。 +եϡѥåĥ꡼ȿǤǥ쥯ȥĥ꡼֤ɬפޤȤС٤ƤΥե \f3/workspace\fP ֤Ƥ硢 \f2com.mysoft.mypack.MyClass\fP Υɤ \f3/workspace/com/mysoft/mypack/MyClass.java\fP ˤɬפޤ .LP .LP -デフォルトでは、コンパイラは、各クラスファイルを対応するソースファイルと同じディレクトリに置きます。別の出力先ディレクトリを指定するには、\f3\-d\fP を使用します (このあとのオプションを参照)。 +ǥեȤǤϡѥϡƥ饹եб륽եƱǥ쥯ȥ֤ޤ̤νǥ쥯ȥꤹˤϡ\f3\-d\fP Ѥޤ (ΤȤΥץ򻲾) .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .LP -コンパイラには、現在の開発環境でサポートされており、将来のリリースでもサポートされる標準オプションのセットがあります。これ以外の非標準オプションは、現在の仮想マシンおよびコンパイラの実装に固有のオプションで、将来に変更される可能性があります。非標準オプションは、\f3\-X\fP で始まります。 +ѥˤϡߤγȯĶǥݡȤƤꡢΥ꡼Ǥ⥵ݡȤɸ४ץΥåȤޤʳɸ४ץϡߤβۥޥ󤪤ӥѥμ˸ͭΥץǡѹǽޤɸ४ץϡ\f3\-X\fP ǻϤޤޤ .LP .SS -標準オプション -.LP -.RS 3 - +ɸ४ץ .LP .RS 3 .TP 3 \-Akey[=value] -注釈プロセッサに渡されるオプション。これらは、javac によって直接解釈されず、個々のプロセッサによって使用されます。 \f2key\fP には、1 つまたは複数の識別子を「.」で区切ったものを指定してください。 +ץåϤ륪ץ󡣤ϡjavac ˤäľܲᤵ줺ġΥץåˤäƻѤޤ\f2key\fP ˤϡ1 Ĥޤʣμ̻Ҥ.פǶڤäΤꤷƤ .TP 3 -\-cp path または \-classpath path -ユーザーのクラスファイルおよび (場合によっては) 注釈プロセッサやソースファイルの検索場所を指定します。このクラスパスは \f3CLASSPATH\fP 環境変数のユーザークラスパスをオーバーライドします。\f3CLASSPATH\fP、\f3\-cp\fP、\f3\-classpath\fP のいずれも指定されていない場合、ユーザークラスパスは、現在のディレクトリになります。詳細は、 -.na -\f2「クラスパスの設定」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照してください。 +\-cp path ޤ \-classpath path +桼Υ饹ե뤪 (ˤäƤ) ץå䥽եθꤷޤΥ饹ѥ \f3CLASSPATH\fP ĶѿΥ桼饹ѥ򥪡С饤ɤޤ\f3CLASSPATH\fP\f3\-cp\fP\f3\-classpath\fP ΤꤵƤʤ硢桼饹ѥϡߤΥǥ쥯ȥˤʤޤܺ٤ϡ֥饹ѥפ򻲾ȤƤ .LP -\f3\-sourcepath\fP オプションが指定されていない場合は、ソースファイルもユーザークラスパスから検索されます。 +\f3\-sourcepath\fP ץ󤬻ꤵƤʤϡե桼饹ѥ鸡ޤ .LP -\f3\-processorpath\fP オプションが指定されていない場合は、注釈プロセッサもユーザークラスパスから検索されます。 +\f3\-processorpath\fP ץ󤬻ꤵƤʤϡץå桼饹ѥ鸡ޤ .LP -便宜上、\f2*\fP のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 \f2.jar\fP または \f2.JAR\fP を持つすべてのファイルのリストを指定するのと同じとみなされます。 -.br -.br -たとえば、ディレクトリ \f2foo\fP に \f2a.jar\fP と \f2b.JAR\fP が含まれている場合、クラスパス要素 \f2foo/*\fP は \f2A.jar:b.JAR\fP に展開されます。 ただし、JAR ファイルの順番は指定されません。このリストには、隠しファイルも含め、指定されたディレクトリ内のすべての JAR ファイルが含まれます。\f2*\fP だけから成るクラスパスエントリは、カレントディレクトリ内のすべての JAR ファイルのリストに展開されます。\f2CLASSPATH\fP 環境変数も、定義時には同様に展開されます。\f3注:\fPコマンド行環境の構成によっては、\f2javac \-cp "*.jar" MyClass.java\fP などのように、ワイルドカード文字を引用符で囲まなければならない場合があります。 +ص塢 \f2*\fP Υ١̾ޤ९饹ѥǤϡǥ쥯ȥγĥ \f2.jar\fP ޤ \f2.JAR\fP Ĥ٤ƤΥեΥꥹȤꤹΤƱȤߤʤޤ +.LP +ȤСǥ쥯ȥ \f2foo\fP \f2a.jar\fP \f2b.JAR\fP ޤޤƤ硢饹ѥ \f2foo/*\fP \f2A.jar:b.JAR\fP ŸޤJAR եν֤ϻꤵޤ󡣤ΥꥹȤˤϡեޤᡢꤵ줿ǥ쥯ȥΤ٤Ƥ JAR ե뤬ޤޤޤ \f2*\fP 륯饹ѥȥϡߤΥǥ쥯ȥΤ٤Ƥ JAR եΥꥹȤŸޤ \f2CLASSPATH\fP Ķѿ⡢ˤƱͤŸޤ\f3:\fP ޥɹԴĶιˤäƤϡ \f2javac \-cp "*.jar" MyClass.java\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 になります。 +饹եνǥ쥯ȥꤷޤΥǥ쥯ȥϤǤ¸ߤƤɬפޤ\f3javac\fP Ϻޤ󡣥饹ѥåΰǤ硢\f3javac\fP ϡɬפ˱ƥǥ쥯ȥѥå̾ȿǤ֥ǥ쥯ȥ˥饹ե֤ޤȤС\f3\-d /home/myclasses\fP Ȼꤷ饹̾ \f2com.mypackage.MyClass\fP Ǥ硢饹ե \f2/home/myclasses/com/mypackage/MyClass.class\fP ˤʤޤ .LP -\f3\-d\fP が指定されなかった場合、\f3javac\fP は各クラスファイルを、その生成元となるソースファイルと同じディレクトリ内に格納します。 +\f3\-d\fP ꤵʤä硢\f3javac\fP ϳƥ饹ե򡢤Ȥʤ륽եƱǥ쥯ȥ˳Ǽޤ .LP -\f3注:\fP\f3\-d\fP で指定したディレクトリはユーザークラスパスに自動的には追加されません。 +\f3:\fP \f3\-d\fP ǻꤷǥ쥯ȥϥ桼饹ѥ˼ưŪˤɲäޤ .TP 3 \-deprecation -推奨されないメンバーやクラスが、使用またはオーバーライドされるたびに説明を表示します。\f3\-deprecation\fP が指定されていない場合、\f3javac\fP は、推奨されないメンバーやクラスを使用またはオーバーライドしているソースファイルの要約を表示します。\f3\-deprecation\fP は \f3\-Xlint:deprecation\fP の省略表記です。 +侩ʤС䥯饹ѤޤϥС饤ɤ뤿Ӥɽޤ\f3\-deprecation\fP ꤵƤʤ硢\f3javac\fP ϡ侩ʤС䥯饹ѤޤϥС饤ɤƤ륽եɽޤ\f3\-deprecation\fP \f3\-Xlint:deprecation\fP ξάɽǤ .TP 3 \-encoding encoding -ソースファイルのエンコーディング名 (\f2EUC\-JP\fP や \f2UTF\-8\fP など) を指定します。\f3\-encoding\fP が指定されていない場合は、プラットフォームのデフォルトコンバータが使われます。 +եΥ󥳡ǥ̾ ( \f2EUC\-JP UTF\-8\fP ʤ) ꤷޤ\f3\-encoding\fP ꤵƤʤϡץåȥեΥǥեȥСȤޤ +.TP 3 +\-endorseddirs directories +ǧ줿ɸѥΰ֤򥪡С饤ɤޤ +.TP 3 +\-extdirs directories +\f2ext\fP ǥ쥯ȥΰ֤򥪡С饤ɤޤ\f2directories\fP ѿˤϡǶڤäǥ쥯ȥΥꥹȤꤷޤꤷǥ쥯ȥγ JAR ֤顢饹ե뤬ޤĤä٤Ƥ JAR ֤ϼưŪ˥饹ѥΰˤʤޤ +.LP +ѥ (ۤʤ 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 を使用します。 このオプションが指定されなかった場合のデフォルト動作は、クラスファイルの自動生成になります。その場合、そのようなクラスファイルが生成された時に注釈処理も実行されると、コンパイラから警告が発行されます。 このオプションが明示的に設定された場合には、警告は発行されません。 「型の検索」を参照してください。 +Ū˥ɤ줿եФ륯饹ե椷ޤ饹եưˤϡ\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 ˥ץϤȤϡ褯ԤƤޤ +.LP +\f3:\fP \f3CLASSPATH\fP\f3\-classpath\fP\f3\-bootclasspath\fP \f3\-extdirs\fP ϡ\f3javac\fP ¹Ԥ뤿˻Ȥ饹ꤹΤǤϤޤ󡣤Τ褦ˡǥѥμ뤳Ȥϡ̵̣̾Ǥꡢ˴ȼޤΤ褦ˡȤɬפϡ\f3\-J\fP ץȤäơɬפʥץظ \f3java\fP ưġϤƤ .TP 3 \-nowarn -警告メッセージを無効にします。これは \f3\-Xlint:none\fP と同じ意味です。 +ٹå̵ˤޤ \f3\-Xlint:none\fP Ʊ̣Ǥ .TP 3 \-proc: {none,only} -注釈処理、コンパイル、その両方、のいずれを実行するかを制御します。\f3\-proc:none\fP は、注釈処理なしでコンパイルが実行されることを意味します。\f3\-proc:only\fP は、注釈処理だけが実行され、後続のコンパイルはまったく実行されないことを意味します。 +ѥ롢ξΤ¹Ԥ뤫椷ޤ\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 内に格納されます。 +줿եγǼȤʤǥ쥯ȥꤷޤΥǥ쥯ȥϤǤ¸ߤƤɬפޤ\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 には次の値を指定できます。 +դ륽ɤΥСꤷޤ\f2release\fP ˤϼͤǤޤ .RS 3 .TP 3 1.3 -このコンパイラでは、JDK 1.3 以降に導入されたアサーション、総称、または他の言語機能をサポートしません。 +ΥѥǤϡJDK 1.3 ʹߤƳ줿Ρޤ¾θ쵡ǽ򥵥ݡȤޤ .TP 3 1.4 -JDK 1.4 で導入された、アサーションを含むコードを受け付けます。 +JDK 1.4 Ƴ줿ޤॳɤդޤ .TP 3 1.5 -JDK 5 で導入された総称および他の言語機能を含んだコードを受け付けます。 +JDK 5 Ƴ줿Τ¾θ쵡ǽޤɤդޤ .TP 3 5 -1.5 と同義です。 +1.5 ƱǤ .TP 3 1.6 -これがデフォルト値です。Java SE 6 では言語に対する変更は導入されませんでしたが、ソースファイル内のエンコーディングエラーが、以前のような「警告」ではなく、「エラー」として報告されるようになりました。 +줬ǥեͤǤJava SE 6 ǤϸФѹƳޤǤեΥ󥳡ǥ󥰥顼Τ褦ʡַٹפǤϤʤ֥顼פȤ𤵤褦ˤʤޤ .TP 3 6 -1.6 と同義です。 +1.6 ƱǤ +.TP 3 +1.7 +JDK 7 Ƴ줿ǽޤॳɤդޤ +.TP 3 +7 +1.7 ƱǤ .RE .TP 3 \-sourcepath sourcepath -クラスまたはインタフェースの定義を検索するソースコードパスを指定します。ユーザークラスパスと同様に、ソースパスの複数のエントリはコロン (\f3:\fP) で区切ります。 ソースパスのエントリには、ディレクトリ、JAR アーカイブ、または ZIP アーカイブを指定できます。パッケージを使っている場合は、ディレクトリまたはアーカイブ内のローカルパス名がパッケージ名を反映していなければなりません。 +饹ޤϥ󥿥ե򸡺륽ɥѥꤷޤ桼饹ѥƱͤˡѥʣΥȥϥ (\f3:\fP) ǶڤޤѥΥȥˤϡǥ쥯ȥꡢJAR ֡ޤ ZIP ֤ǤޤѥåȤäƤϡǥ쥯ȥޤϥΥѥ̾ѥå̾ȿǤƤʤФʤޤ .LP -\f3注:\fP\ クラスパスからクラスだけでなくそのソースも見つかった場合、そのクラスは自動再コンパイルの対象になることがあります。「型の検索」を参照してください。 +\f3:\fP\ 饹ѥ饯饹ǤʤΥ⸫Ĥä硢Υ饹ϼưƥѥоݤˤʤ뤳Ȥޤַθפ򻲾ȤƤ .TP 3 \-verbose -詳細な出力を表示します。ロードされるクラスおよびコンパイルされるソースファイルごとの情報が出力されます。 +ܺ٤ʽϤɽޤɤ륯饹ӥѥ뤵륽ե뤴Ȥξ󤬽Ϥޤ +.TP 3 +\-version +СϤޤ +.TP 3 +\-Werror +ٹȯ˥ѥλޤ .TP 3 \-X -非標準オプションに関する情報を表示して終了します。 +ɸ४ץ˴ؤɽƽλޤ .RE .LP -.RE .SS -クロスコンパイルオプション -.LP -.RS 3 - +ѥ륪ץ .LP .LP -デフォルトでは、クラスのコンパイルは、\f3javac\fP が添付されているプラットフォームのブートストラップクラスおよび拡張機能クラスに対して行われます。ただし、\f3javac\fP は、異なる Java プラットフォームに実装されたブートストラップクラスおよび拡張機能クラスに対してコンパイルを行う「クロスコンパイル」もサポートしています。クロスコンパイルを行う場合は、\f3\-bootclasspath\fP および \f3\-extdirs\fP を使うことが重要です。 このあとの「クロスコンパイルの例」を参照してください。 +ǥեȤǤϡ饹Υѥϡ\f3javac\fP źդƤץåȥեΥ֡ȥȥåץ饹ӳĥǽ饹ФƹԤޤ\f3javac\fP ϡۤʤ Java ץåȥե˼줿֡ȥȥåץ饹ӳĥǽ饹ФƥѥԤ֥ѥפ⥵ݡȤƤޤѥԤϡ\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 も可) です。 +ꤵ줿С 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 の値によって決まります。 +\f3\-target\fP ΥǥեȤϡΤ褦 \f3\-source\fP ͤˤäƷޤޤ .RS 3 .TP 2 o -\-source が\f3指定されなかった\fP場合、\-target の値は \f31.6\fP になります。 +\-source \f3ꤵʤä\fP硢\-target ͤ \f31.7\fP ˤʤޤ .TP 2 o -\-source が\f31.2\fP の場合、\-target の値は \f31.4\fP になります。 +\-source \f31.2\fP ξ硢\-target ͤ \f31.4\fP ˤʤޤ .TP 2 o -\-source が\f31.3\fP の場合、\-target の値は \f31.4\fP になります。 +\-source \f31.3\fP ξ硢\-target ͤ \f31.4\fP ˤʤޤ .TP 2 o -\-source が\f3それ以外の値の場合はすべて\fP、\\\-target の値は \f3\-source\fP の値になります。 +\-source \f3ʳͤξϤ٤\fP\f3\\\-target\fP ͤ \f3\-source\fP ͤˤʤޤ .RE .TP 3 \-bootclasspath bootclasspath -指定された一連のブートクラスに対してクロスコンパイルを行います。ユーザークラスパスと同様に、ブートクラスパスの複数のエントリはコロン (\f3:\fP) で区切ります。 ブートクラスパスのエントリには、ディレクトリ、JAR アーカイブ、または ZIP アーカイブを指定できます。 -.TP 3 -\-extdirs directories -指定された拡張機能ディレクトリに対してクロスコンパイルを行います。\f2directories\fP には、コロンで区切ったディレクトリのリストを指定します。指定したディレクトリ内の各 JAR アーカイブから、クラスファイルが検索されます。 +ꤵ줿ϢΥ֡ȥ饹ФƥѥԤޤ桼饹ѥƱͤˡ֡ȥ饹ѥʣΥȥϥ (\f3:\fP) Ƕڤޤ֡ȥ饹ѥΥȥˤϡǥ쥯ȥꡢJAR ֡ޤ ZIP ֤Ǥޤ .RE .LP -.RE .SS -非標準オプション -.LP -.RS 3 - +ɸ४ץ .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 -Java 言語仕様では指定されていないすべての警告を無効にします。 +Java ͤǤϻꤵƤʤ٤Ƥηٹ̵ˤޤ +.TP 3 +\-Xlint:name +ٹ \f2name\fP ͭˤޤΥץͭˤǤٹΥꥹȤˤĤƤϡ\-Xlint ץȤäͭޤ̵ˤǤٹפ򻲾ȤƤ .TP 3 \-Xlint:\-name -警告 \f2name\fP を無効にします。 ただし、\f2name\fP は、\f3\-Xlint:\fP\f2name\fP に使用できる警告名のいずれかになります。 この警告名は次のとおりです。 +ٹ \f2name\fP ̵ˤޤΥץ̵ˤǤٹΥꥹȤˤĤƤϡ\-Xlint ץȤäͭޤ̵ˤǤٹפ򻲾ȤƤ .TP 3 -\-Xlint:unchecked -Java 言語仕様で指定されている未検査変換警告の詳細を示します。 +\-Xmaxerrs number +륨顼κꤷޤ .TP 3 -\-Xlint:path -存在しないパス (classpath、sourcepath など) ディレクトリについて警告します。 +\-Xmaxwarns number +ٹκꤷޤ .TP 3 -\-Xlint:serial -\f2serialVersionUID\fP 定義が直列化可能クラスにないことを警告します。 +\-Xstdout filename +ѥΥå򡢻ꤵ줿եޤǥեȤǤϡѥΥå \f2System.err\fP ޤ +.TP 3 +\-Xprefer:{newer,source} +뷿Фƥեȥ饹եξĤä硢ΤɤΥեɤ߼٤ꤷޤ (ַθפ򻲾)\f2\-Xprefer:newer\fP Ѥ硢뷿Ф륽եȥ饹եοɤ߼ޤ (ǥե)\f2\-Xprefer:source\fP ץѤ硢ե뤬ɤ߼ޤSOURCE ¸ݥꥷȤä줿ǤդץåǤ褦ˤϡ\f2\-Xprefer:source\fP \f2ѤƤ\fP .TP 3 -\-Xlint:finally -正常に完了できない \f2finally\fP 節について警告します。 +\-Xpkginfo:{always,legacy,nonempty} +ѥåեνꤷޤ .TP 3 -\-Xlint:fallthrough -fall\-through ケースの \f2switch\fP ブロックをチェックし、検出されたものに対して警告メッセージを表示します。Fall\-through ケースは、\f2switch\fP ブロック内の最後のケースを除くケースです。 このコードには \f2break\fP 文は含まれません。 コードの実行をそのケースから次のケースへ移動します。たとえば、この \f2switch\fP ブロック内の \f2case 1\fP ラベルに続くコードは、\f2break\fP 文で終わっていません。 -.RS 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 +.LP +᥽å \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 @@ -347,104 +445,383 @@ case 1: .fl System.out.println("1"); .fl - // No break; statement here. + // No break statement here. .fl case 2: .fl System.out.println("2"); .fl } -.fl - .fl \fP .fi -.RE -このコードのコンパイル時に \f2\-Xlint:fallthrough\fP フラグが使用されていた場合、コンパイラは 当該ケースの行番号とともに、fall\-through ケースの可能性があることを示す警告を発行します。 +.LP +ΥɤΥѥ \f2\-Xlint:fallthrough\fP ե饰ѤƤ硢ѥ ιֹȤȤˡfall\-through βǽ뤳Ȥ򼨤ٹȯԤޤ .TP 3 -\-Xmaxerrs number -印刷するエラーの最大数を設定します。 +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 +.LP +Ǥϡѥ \f2finally\fP ֥å˴ؤٹޤΥ᥽åɤƤӽФȡ 1 ǤϤʤ \f20\fP \f2֤ޤ\fP \f2finally\fP ֥åϡ \f2try\fP ֥åλɬ¹ԤޤǤϡ椬 \f2catch\fP ˰ܤ줿硢᥽åɤϽλޤ \f2finally\fP ֥åϼ¹Ԥɬפ뤿ᡢ椬ǤˤΥ᥽åɤγ˰ܤƤƤ⡢Υ֥åϼ¹Ԥޤ .TP 3 -\-Xmaxwarns number -印刷する警告の最大数を設定します。 +options +ޥɹԥץλѤ˴ؤˤĤƷٹ𤷤ޤμηٹˤĤƤϡ֥ѥפ򻲾ȤƤ .TP 3 -\-Xstdout filename -コンパイラのメッセージを、指定されたファイルに送ります。デフォルトでは、コンパイラのメッセージは \f2System.err\fP に送られます。 +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 +.LP +ѥϼΤ褦ʷٹޤ +.nf +\f3 +.fl +warning: [override] varargsMethod(String[]) in ClassWithOverridingMethod overrides varargsMethod(String...) in ClassWithVarargsMethod; overriding method is missing '...' +.fl +\fP +.fi +.LP +ѥϡvarargs ᥽åɤ򸡽Фȡvarargs βѥ᡼Ѵޤ᥽å \f2ClassWithVarargsMethod.varargsMethod\fP Ǥϡѥ varargs βѥ᡼ \f2String... s\fP 򲾥ѥ᡼ \f2String[] s\fP ѴޤString[] s ϡ᥽å \f2ClassWithOverridingMethod.varargsMethod\fP βѥ᡼бǤη̡Ǥϥѥ뤬Ԥޤ .TP 3 -\-Xprefer:{newer,source} -ある型に対してソースファイルとクラスファイルの両方が見つかった場合、そのどちらのファイルを読み取るべきかを指定します (「型の検索」を参照)。\f2\-Xprefer:newer\fP を使用した場合、ある型に対するソースファイルとクラスファイルの新しい方が読み取られます (デフォルト)。\f2\-Xprefer:source\fPオプションを使用した場合、ソースファイルが読み取られます。\f2SOURCE\fP の保存ポリシーを使って宣言された注釈に任意の注釈プロセッサがアクセスできるようにしたい場合は、\f2\-Xprefer:source\fPを使用してください。 +path +ޥɹԤǤ̵ʥѥǤ¸ߤʤѥǥ쥯ȥˤĤƷٹ𤷤ޤ (饹ѥѥʤɤΥѥϢ)Τ褦ʷٹ \f2@SuppressWarnings\fP 뤳ȤϤǤޤ󡣼򼨤ޤ +.nf +\f3 +.fl +javac \-Xlint:path \-classpath /nonexistentpath Example.java +.fl +\fP +.fi .TP 3 -\-Xprint -指定された型のテキスト表現をデバッグ目的で出力します。 注釈処理、コンパイルのどちらも実行しません。出力形式は変更される可能性があります。 +processing +˴ؤˤĤƷٹ𤷤ޤѥ餬ηٹΤϡޤ९饹ȤˡѤƤץåǤη㳰ǤʤǤñץå򼡤˼ޤ +.LP +\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 +.LP +\f3ե \fP\f4AnnosWithoutProcessors.java\fP\f3:\fP +.nf +\f3 +.fl +@interface Anno { } +.fl + +.fl +@Anno +.fl +class AnnosWithoutProcessors { } +.fl +\fP +.fi +.LP +Υޥɤϡץå \f2AnnoProc\fP 򥳥ѥ뤷ץå򥽡ե \f2AnnosWithoutProcessors.java\fP ФƼ¹Ԥޤ +.nf +\f3 +.fl +% javac AnnoProc.java +.fl +% javac \-cp . \-Xlint:processing \-processor AnnoProc \-proc:only AnnosWithoutProcessors.java +.fl +\fP +.fi +.LP +ѥ餬ե \f2AnnosWithoutProcessors.java\fP Фץå¹Ԥȡηٹޤ +.nf +\f3 +.fl +warning: [processing] No processor claimed any of these annotations: Anno +.fl +\fP +.fi +.LP +褹ˤϡ饹 \f2AnnosWithoutProcessors\fP ӻѤ̾ \f2Anno\fP \f2NotAnno\fP ѹޤ .TP 3 -\-XprintProcessorInfo -ある特定のプロセッサが処理を依頼されている注釈に関する情報を出力します。 +rawtypes +raw Ф̤ˤĤƷٹ𤷤ޤäˤΥץϡʤѥ᡼줿Ѥ桼ФƷٹ𤷤ޤʸǤϡ \f2rawtypes\fP ٹޤ +.nf +\f3 +.fl +void countElements(List l) { ... } +.fl +\fP +.fi +.LP +ʸǤϡ \f2rawtypes\fP ٹޤ +.nf +\f3 +.fl +void countElements(List<?> l) { ... } +.fl +\fP +.fi +.LP +\f2List\fP raw Ǥ \f2List<?>\fP ϥХɷΥ磻ɥɤΥѥ᡼줿Ǥ \f2List\fP ϥѥ᡼줿󥿥եʤΤǡɬηꤹɬפޤǤϡ \f2List\fP βϥХɷΥ磻ɥ (\f2?\fP) ȤäƤβѥ᡼ȤƻꤵޤĤޤꡢ \f2countElements\fP ᥽åɤ \f2List\fP 󥿥եΤɤΥ󥹥󥹲դ뤳ȤǤޤ .TP 3 -\-XprintRounds -初回および後続の注釈処理ラウンドに関する情報を出力します。 -.RE +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 .LP -.RE -.SS -\-J オプション +ѥϼηٹޤ +.nf +\f3 +.fl +warning: [serial] serializable class PersistentTime has no definition of serialVersionUID +.fl +\fP +.fi .LP -.RS 3 - +ľ󲽲ǽ饹 \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 .LP -.RS 3 +ѥϼηٹޤ +.nf +\f3 +.fl +warning: [static] static method should be qualified by type name, XLintStatic, instead of by an expression +.fl +\fP +.fi +.LP +褹뤿ˡΤ褦 static ᥽å \f2m1\fP ƤӽФȤǤޤ +.nf +\f3 +.fl +XLintStatic.m1(); +.fl +\fP +.fi +.LP +뤤ϡ \f2static\fP ɤ᥽å \f2m1\fP 뤳ȤǤޤ .TP 3 -\-Joption -\f3javac\fP が呼び出す \f3java\fP 起動ツールに、\f2option\fP を渡します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。このオプションは \f3\-X\fP で始まっていませんが、\f3javac\fP の「標準オプション」ではありません。\f3\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 +try +try\-with\-resources ʸޤࡢ \f2try\fP ֥åλѤ˴ؤˤĤƷٹ𤷤ޤȤСtry ʸ줿꥽ \f2ac\fP Ѥʤˡ \f2ʸФƷٹ\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 .LP -\f3注:\fP \ \f3CLASSPATH\fP、\f3\-classpath\fP、\f3\-bootclasspath\fP、および \f3\-extdirs\fP は、\f3javac\fP を実行するために使うクラスを指定するものではありません。このような方法でコンパイラの実装を操作することは、通常は無意味であり、常に危険を伴います。このような方法を使う必要がある場合は、\f3\-J\fP オプションを使って、必要なオプションを背後の \f3java\fP 起動ツールに渡してください。 -.RE - +ξõˡ \f2ArrayList<Number>\fP \f2List<String>\fP Ϥ줾 \f2ArrayList\fP \f2List\fP ˤʤޤ .LP -.RE -.SH "コマンド行引数ファイル" +ѿ \f2ls\fP ˤϥѥ᡼줿 \f2List<String>\fP ꤵƤޤl ˤäƻȤ \f2List\fP \f2\fP \f2ls\fP ȡѥ̤ٹޤѥ \f2l\fP \f2List<String>\fP 򻲾Ȥ뤫ɤ򥳥ѥȽǤǤޤ󡣤ޤJVM ¹ԻˤȽǤǤʤȤǧƤޤl List<String> 򻲾Ȥޤ󡣤η̡ҡױȯޤ +.LP +ܤȡҡױ֤ȯΤϡ \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 +.LP +ѥϡ᥽å \f2ArrayBuilder.addToList\fP ˴ؤ뼡ηٹޤ +.nf +\f3 +.fl +warning: [varargs] Possible heap pollution from parameterized vararg type T +.fl +\fP +.fi .LP +ѥϡvarargs ᥽åɤ򸡽Фȡvarargs βѥ᡼ѴޤJava ץߥ󥰸Ǥϡѥ᡼줿κĤƤޤ󡣥᥽å \f2ArrayBuilder.addToList\fP Ǥϡѥ varargs βѥ᡼ \f2T... elements\fP 򲾥ѥ᡼ \f2T[] elements\fP() ѴޤõΤˡѥ varargs βѥ᡼ \f2Object[] elements\fP Ѵޤη̡ҡױȯǽޤ +.RE .LP +.SH "ޥɹ԰ե" .LP -\f2javac\fP のコマンド行を短くしたり簡潔にしたりするために、\f2javac\fP コマンドに対する引数 (\f2\-J\fP オプションを除く) を含む 1 つ以上のファイルを指定することができます。この方法を使うと、どのオペレーティングシステム上でも、任意の長さの javac コマンドを作成できます。 .LP +javac ΥޥɹԤûʷˤꤹ뤿ˡ \f2javac\fP ޥɤФ ( \f2\-J\fP ץ) ޤ 1 İʾΥեꤹ뤳ȤǤޤˡȤȡɤΥڥ졼ƥ󥰥ƥǤ⡢ǤդĹ javac ޥɤǤޤ .LP -引数ファイルには、javac のオプションとソースファイル名を自由に組み合わせて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に空白が含まれている場合は、そのファイル名全体を二重引用符で囲みます。 .LP +եˤϡjavac Υץȥե̾ͳȤ߹碌ƵҤǤޤեγưϡڡޤϲԤǶڤޤե̾˶򤬴ޤޤƤϡΥե̾ΤŰǰϤߤޤ .LP -引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。引数ファイル内のファイル名リストでは、ワイルドカード (*) は使用できません。たとえば、\f2*.java\fP とは指定できません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、\f2\-J\fP オプションもサポートされていません。 このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 .LP +եΥե̾ϡߤΥǥ쥯ȥ꤫鸫Хѥˤʤޤեΰ֤鸫ХѥǤϤޤ󡣰եΥե̾ꥹȤǤϡ磻ɥ (*) ϻѤǤޤ󡣤ȤС \f2*.java\fP ȤϻǤޤ󡣰եΰ \f2@\fP ʸѤơʣΥեƵŪ˲᤹뤳ȤϥݡȤƤޤ󡣤ޤ \f2\-J\fP ץ⥵ݡȤƤޤ󡣤ΥץϵưġϤޤưġǤϰե򥵥ݡȤƤʤǤ .LP -javac を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。javac は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +.LP +javac ¹ԤȤˡưեΥѥȥե̾Ƭ \f2@\fP ʸդϤޤjavac ϡ\f2@\fP ʸǻϤޤ򸫤ĤȡΥեƤŸưꥹȤޤ .LP .SS -引数ファイルを 1 つ指定する例 +ե 1 Ļꤹ .LP .LP -\f2argfile\fP という名前の引数ファイルにすべての javac 引数を格納する場合は、次のように指定します。 +\f2argfileפȤ̾ΰե\fP٤Ƥ javac ǼϡΤ褦˻ꤷޤ .LP .nf \f3 .fl - % \fP\f3javac @argfile\fP -.fl - +% \fP\f3javac @argfile\fP .fl .fi .LP .LP -この引数ファイルには、次の例で示されている 2 つのファイルの内容を両方とも入れることができます。 +ΰեˤϡǼƤ 2 ĤΥեƤξȤ뤳ȤǤޤ .LP .SS -引数ファイルを 2 つ指定する例 +ե 2 Ļꤹ .LP .LP -たとえば、javac オプション用に 1 ファイル、ソースファイル名用に 1 ファイルというように、2 つの引数ファイルを作成することもできます。なお、このあとのリストでは、行の継続文字を使用していません。 +ȤСjavac ץѤ 1 ե롢ե̾Ѥ 1 եȤ褦ˡ2 Ĥΰե뤳ȤǤޤʤΤȤΥꥹȤǤϡԤη³ʸѤƤޤ .LP .LP -以下の内容を含む \f2options\fP という名前のファイルを作成します。 +ʲƤޤ \f2options\fP Ȥեޤ .LP .nf \f3 @@ -455,14 +832,14 @@ javac を実行するときに、各引数ファイルのパスとファイル .fl \-sourcepath /java/pubs/ws/1.3/src/share/classes .fl - + .fl \fP .fi .LP .LP -以下の内容を含む \f2classes\fP という名前のファイルを作成します。 +ʲƤޤ \f2classes\fP Ȥեޤ .LP .nf \f3 @@ -473,120 +850,104 @@ javac を実行するときに、各引数ファイルのパスとファイル .fl MyClass3.java .fl - + .fl \fP .fi .LP .LP -次のコマンドを使用して \f3javac\fP を実行します。 +ΥޥɤѤ \f3javac\fP ¹Ԥޤ .LP .nf \f3 .fl % \fP\f3javac @options @classes\fP .fl - + .fl .fi .LP .SS -パス付きの引数ファイルの例 +ѥդΰե .LP .LP -引数ファイルには、パスを指定できます。 ただし、そのファイル内に指定されたファイル名は、現在の作業ディレクトリから見た相対パスになります。 つまり、下の例の場合は、\f2path1\fP や \f2path2\fP から見た相対パスではありません。 +եˤϡѥǤޤΥե˻ꤵ줿ե̾ϡߤκȥǥ쥯ȥ꤫鸫ХѥˤʤޤĤޤꡢξϡ \f2path1\fP \f2path2\fP 鸫ХѥǤϤޤ .LP .nf \f3 .fl - % \fP\f3javac @path1/options @path2/classes\fP -.fl - +% \fP\f3javac @path1/options @path2/classes\fP .fl .fi .LP -.SH "注釈処理" +.SH "" .LP - .LP +\f3javac\fP ľܥݡȤƤ뤿ᡢΩġǤ \f3apt\fP Ѥɬפʤʤޤ .LP -\f3javac\fP が注釈処理を直接サポートしているため、独立した注釈処理ツールである \f3apt\fP を使用する必要がなくなりました。 .LP -.LP -注釈処理の API は、\f2javax.annotation.processing\fP および \f2javax.lang.model\fP パッケージとそのサブパッケージ内に定義されています。 + API ϡ \f2javax.annotation.processing\fP \f2javax.lang.model\fP ѥåȤΥ֥ѥåƤޤ .LP .SS -注釈処理の概要 +γ .LP .LP -\f3\-proc:none\fP オプションによって注釈処理が無効化されないかぎり、コンパイラは使用可能なすべての注釈プロセッサを検索します。検索パスは \f3\-processorpath\fP オプションを使って指定できます。 検索パスを指定しなかった場合は、ユーザークラスパスが使用されます。プロセッサの検索は、検索パス上の -.br -\f2\ META\-INF/services/javax.annotation.processing.Processor\fP -.br -という名前のサービスプロバイダ構成ファイルに基づいて行われます。このようなファイルには、使用するすべての注釈プロセッサの名前を、1 行に 1 つずつ含めてください。また、別の方法として、\f3\-processor\fP オプションを使ってプロセッサを明示的に指定することもできます。 +\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 回目のラウンドが開始されます。新しく生成されたすべてのソースファイルが走査され、前回と同様に注釈が処理されます。以前のラウンドで呼び出されたプロセッサはすべて、後続のどのラウンドでも呼び出されます。これが、新しいソースファイルが生成されなくなるまで続きます。 +줫Υץåˤäƿե뤬ȡ 2 ܤΥ饦ɤϤޤ줿٤ƤΥե뤬졢Ʊͤ᤬ޤΥ饦ɤǸƤӽФ줿ץåϤ٤ơ³ΤɤΥ饦ɤǤƤӽФޤ줬ե뤬ʤʤޤ³ޤ .LP .LP -あるラウンドで新しいソースファイルが生成されなかった場合、注釈プロセッサがあと 1 回だけ呼び出され、必要な処理を実行する機会が与えられます。 最後に、\f3\-proc:only\fP オプションが使用されないかぎり、コンパイラは、元のソースファイルと生成されたすべてのソースファイルをコンパイルします。 +饦ɤǿե뤬ʤä硢ץå 1 ƤӽФ졢ɬפʽ¹Ԥ뵡ͿޤǸˡ\f3\-proc:only\fP ץ󤬻ѤʤꡢѥϡΥե줿٤ƤΥե򥳥ѥ뤷ޤ .LP .SS -暗黙的にロードされたソースファイル -.LP -.LP -コンパイラは、一連のソースファイルをコンパイルする際に、別のソースファイルを暗黙的にロードしなければならない場合があります (「型の検索」を参照)。そのようなファイルは、現時点では注釈処理の対象になりません。デフォルトでは、注釈処理が実行され、かつ暗黙的にロードされたソースファイルが 1 つでもコンパイルされた場合にコンパイラは警告を発行します。この警告を抑制する方法については、\-implicit オプションを参照してください。 +Ū˥ɤ줿ե .LP -.SH "型の検索" .LP - +ѥϡϢΥե򥳥ѥ뤹ݤˡ̤ΥեŪ˥ɤ뤳Ȥɬפʾ礬ޤ (ַθפ򻲾)Τ褦ʥեϡǤоݤˤʤޤ󡣥ǥեȤǤϡ¹Ԥ졢İŪ˥ɤ줿ե뤬 1 ĤǤ⥳ѥ뤵줿˥ѥϷٹȯԤޤηٹˡˤĤƤϡ\-implicit ץ򻲾ȤƤ .LP +.SH "θ" .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 +ȤС\f3java.applet.Applet\fP 򥵥֥饹ˤ硢\f3ץåȤ\fPΥ饹\f3java.awt.Panel\fP\f3java.awt.Container\fP\f3java.awt.Component\fP\f3java.lang.Object\fPˤѤƤ뤳Ȥˤʤޤ .LP -コンパイラは、型の情報が必要になると、その型を定義しているソースファイルまたはクラスファイルを探します。まず、ブートストラップクラスと拡張機能クラスを検索し、続いてユーザークラスパス (デフォルトではカレントディレクトリ) を検索します。ユーザークラスパスは、\f3CLASSPATH\fP 環境変数を設定して定義するか、または \f3\-classpath\fP コマンド行オプションを使って設定します。詳細は、 -.na -\f2「クラスパスの設定」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照してください。 .LP +ѥϡξɬפˤʤȡηƤ륽եޤϥ饹եõޤޤ֡ȥȥåץ饹ȳĥǽ饹򸡺³ƥ桼饹ѥ (ǥեȤǤϥȥǥ쥯ȥ) 򸡺ޤ桼饹ѥϡ\f3CLASSPATH\fP Ķѿꤷ뤫ޤ \f3\-classpath\fP ޥɹԥץȤäꤷޤܺ٤ϡ֥饹ѥפ򻲾ȤƤ .LP -\-sourcepath オプションが指定されている場合、コンパイラは、指定されたパスからソースファイルを検索します。 それ以外の場合は、ユーザークラスパスからクラスファイルとソースファイルの両方を検索します。 .LP +\-sourcepath ץ󤬻ꤵƤ硢ѥϡꤵ줿ѥ饽ե򸡺ޤʳξϡ桼饹ѥ饯饹եȥեξ򸡺ޤ .LP -\f3\-bootclasspath\fP オプションと \f3\-extdirs\fP オプションを使うと、別のブートストラップクラスや拡張機能クラスを指定できます。 このあとの「クロスコンパイルオプション」を参照してください。 .LP +\f3\-bootclasspath\fP ץ \f3\-extdirs\fP ץȤȡ̤Υ֡ȥȥåץ饹ĥǽ饹ǤޤΤȤΡ֥ѥ륪ץפ򻲾ȤƤ .LP -型の検索に成功したときに得られる結果は、クラスファイル、ソースファイル、またはその両方である場合があります。両方が見つかった場合、そのどちらを使用すべきかを \-Xprefer オプションでコンパイラに指示できます。\f3newer\fP が指定された場合、コンパイラは 2 つのファイルの新しい方を使用します。\f3source\fP が指定された場合、コンパイラはソースファイルを使用します。デフォルトは \f3newer\fP です。 .LP +θȤ̤ϡ饹ե롢ե롢ޤϤξǤ礬ޤξĤä硢ΤɤѤ٤ \-Xprefer ץǥѥ˻ؼǤޤ\f3newer\fP ꤵ줿硢ѥ 2 ĤΥեοѤޤ\f3source\fP ꤵ줿硢ѥϥեѤޤǥեȤ \f3newer\fP Ǥ .LP -型の検索自体によって、または \f3\-Xprefer\fP が設定された結果として必要な型のソースファイルが見つかった場合、コンパイラはそのソースファイルを読み取り、必要な情報を取得します。さらに、コンパイラはデフォルトで、そのソースファイルのコンパイルも行います。\-implicit オプションを使えばその動作を指定できます。\f3none\fP を指定した場合、そのソースファイルのクラスファイルは生成されません。\f3class\fP を指定した場合、そのソースファイルのクラスファイルが生成されます。 .LP +θΤˤäơޤ \f3\-Xprefer\fP ꤵ줿̤ȤɬפʷΥե뤬Ĥä硢ѥϤΥեɤ߼ꡢɬפʾޤˡѥϥǥեȤǡΥեΥѥԤޤ\-implicit ץȤФưǤޤ\f3none\fP ꤷ硢ΥեΥ饹եޤ\f3class\fP ꤷ硢ΥեΥ饹ե뤬ޤ .LP -コンパイラは、注釈処理の完了後に、ある型情報の必要性を認識しない場合があります。その型情報があるソースファイル内に見つかり、かつ \f3\-implicit\fP オプションが指定されていない場合は、そのファイルが注釈処理の対象とならずにコンパイルされることを、コンパイラがユーザーに警告します。この警告を無効にするには、(そのファイルが注釈処理の対象となるように) そのファイルをコマンド行に指定するか、あるいはそのようなソースファイルに対してクラスファイルを生成すべきかどうかを \f3\-implicit\fP オプションを使って指定します。 .LP -.SH "プログラマティックインタフェース" +ѥϡδλˡ뷿ɬǧʤ礬ޤη󤬤륽ե˸Ĥꡢ \f3\-implicit\fP ץ󤬻ꤵƤʤϡΥե뤬оݤȤʤ餺˥ѥ뤵뤳Ȥ򡢥ѥ餬桼˷ٹ𤷤ޤηٹ̵ˤˤϡ(Υե뤬оݤȤʤ褦) Υե򥳥ޥɹԤ˻ꤹ뤫뤤ϤΤ褦ʥեФƥ饹ե٤ɤ \f3\-implicit\fP ץȤäƻꤷޤ .LP - +.SH "ץޥƥå󥿥ե" .LP .LP -\f3javac\fP は、\f2javax.tools\fP パッケージ内のクラスとインタフェースによって定義される新しい Java Compiler API をサポートします。 +\f3javac\fP ϡ \f2javax.tools\fP ѥåΥ饹ȥ󥿥եˤä뿷 Java Compiler API 򥵥ݡȤޤ .LP .SS -例 + .LP .LP -コマンド行から指定された引数を使ってコンパイルを実行するには、次のようなコードを使用します。 +ޥɹԤꤵ줿Ȥäƥѥ¹ԤˤϡΤ褦ʥɤѤޤ .LP .nf \f3 @@ -594,30 +955,25 @@ http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照 JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); .fl int rc = javac.run(null, null, null, args); -.fl - .fl \fP .fi .LP .LP -この場合、標準出力ストリームにすべての診断メッセージが書き出され、コマンド行から呼び出された \f3javac\fP が返すのと同じ終了コードが返されます。 +ξ硢ɸϥȥ꡼ˤ٤Ƥοǥå񤭽Ф졢ޥɹԤƤӽФ줿 \f3javac\fP ֤ΤƱλɤ֤ޤ .LP .LP -\f2javax.tools.JavaCompiler\fP インタフェース上のほかのメソッドを使えば、診断メッセージの処理やファイルの読み取り元/書き込み先の制御などを行えます。 +\f2javax.tools.JavaCompiler\fP 󥿥եΤۤΥ᥽åɤȤСǥåνեɤ߼긵/񤭹ʤɤԤޤ .LP .SS -旧式のインタフェース +켰Υ󥿥ե .LP -.RS 3 - .LP +\f3:\fP API ϡ̸ߴݤ뤿˻ĤƤޤɤǤϡɬҤ Java Compiler API ѤƤ .LP -\f3注:\fP \ この API は、下位互換性を確保するためだけに残されています。 新しいコードでは、必ず前述の Java Compiler API を使用してください。 .LP -.LP -\f2com.sun.tools.javac.Main\fP クラスには、プログラム内からコンパイラを呼び出すための static メソッドが 2 つ用意されています。 それらを次に示します。 +\f2com.sun.tools.javac.Main\fP 饹ˤϡץ⤫饳ѥƤӽФ static ᥽åɤ 2 ѰդƤޤ򼡤˼ޤ .LP .nf \f3 @@ -625,39 +981,30 @@ int rc = javac.run(null, null, null, args); public static int compile(String[] args); .fl public static int compile(String[] args, PrintWriter out); -.fl - .fl \fP .fi .LP .LP -\f2args\fP パラメータは、javac プログラムに通常渡される任意のコマンド行引数を表しています。 その概要については、前出の「形式」節を参照してください。 +\f2args\fP ѥ᡼ϡjavac ץ̾ϤǤդΥޥɹ԰ɽƤޤγפˤĤƤϡФΡַ򻲾ȤƤ .LP .LP -\f2out\fP パラメータは、コンパイラの診断メッセージの出力先を示します。 +\f2out\fP ѥ᡼ϡѥοǥåν򼨤ޤ .LP .LP -戻り値は、\f3javac\fP の終了値と同じです。 +ͤϡ\f3javac\fP νλͤƱǤ .LP .LP -名前が \f2com.sun.tools.javac\fP で始まるパッケージ (非公式には \f2com.sun.tools.javac\fP のサブパッケージとして知られる) に含まれる\f3その他の\fPクラスやメソッドは、どれも完全に内部用であり、いつでも変更される可能性があります。 +̾ \f2com.sun.tools.javac\fP ǻϤޤѥå (ˤ \f2com.sun.tools.javac\fP Υ֥ѥåȤΤ) ˴ޤޤ뤽¾Υ饹᥽åɤϡɤⴰѤǤꡢĤǤѹǽޤ .LP -.RE -.SH "例" +.SH "" .LP .SS -簡単なプログラムのコンパイル +ñʥץΥѥ .LP -.RS 3 - .LP -.LP -\f2Hello.java\fP というソースファイルで、\f3greetings.Hello\fP という名前のクラスを定義しているとします。\f2greetings\fP ディレクトリは、ソースファイルとクラスファイルの両方があるパッケージディレクトリで、現在のディレクトリのすぐ下にあります。このため、この例では、デフォルトのユーザークラスパスを使用できます。また、\f3\-d\fP を使って別の出力先ディレクトリを指定する必要もありません。 -.LP -.RS 3 - +\f2Hello.java\fP Ȥեǡ\f3greetings.Hello\fP Ȥ̾Υ饹ƤȤޤ \f2greetings\fP ǥ쥯ȥϡեȥ饹եξѥåǥ쥯ȥǡߤΥǥ쥯ȥΤˤޤΤᡢǤϡǥեȤΥ桼饹ѥѤǤޤޤ\f3\-d\fP Ȥä̤νǥ쥯ȥꤹɬפ⤢ޤ .LP .nf \f3 @@ -703,25 +1050,15 @@ Hello World Hello Universe .fl Hello Everyone -.fl - .fl .fi -.RE .LP -.RE .SS -複数のソースファイルのコンパイル +ʣΥեΥѥ .LP -.RS 3 - .LP -.LP -次の例では、パッケージ \f2greetings\fP 内のすべてのソースファイルをコンパイルします。 -.LP -.RS 3 - +Ǥϡѥå \f2greetings\fP Τ٤ƤΥե򥳥ѥ뤷ޤ .LP .nf \f3 @@ -741,27 +1078,15 @@ Aloha.java GutenTag.java Hello.java Hi.java Aloha.class GutenTag.class Hello.class Hi.class .fl Aloha.java GutenTag.java Hello.java Hi.java -.fl - -.fl - .fl .fi -.RE .LP -.RE .SS -ユーザークラスパスの指定 +桼饹ѥλ .LP -.RS 3 - .LP -.LP -上の例のソースファイルのうち 1 つを変更し、変更後のファイルを再コンパイルするとします。 -.LP -.RS 3 - +ΥեΤ 1 ĤѹѹΥեƥѥ뤹Ȥޤ .LP .nf \f3 @@ -771,35 +1096,23 @@ Aloha.java GutenTag.java Hello.java Hi.java /examples .fl % \f3javac greetings/Hi.java\fP -.fl - .fl .fi -.RE .LP .LP -\f2greetings.Hi\fP は、\f2greetings\fP パッケージ内のほかのクラスを参照しているため、コンパイラはこれらのクラスを探す必要があります。上の例では、デフォルトのユーザークラスパスが、パッケージディレクトリを含むディレクトリと同じであるため、コンパイルは正常に実行されます。ただし、現在どのディレクトリにいるかに関係なく、このファイルを再コンパイルする場合は、ユーザークラスパスに \f2/examples\fP を追加する必要があります。ユーザークラスパスにエントリを追加するには、\f3CLASSPATH\fP を設定する方法もありますが、ここでは \f3\-classpath\fP オプションを使うことにします。 -.LP -.RS 3 - +\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 - .fl .fi -.RE .LP .LP -再度 \f2greetings.Hi\fP を変更してバナーユーティリティーを使うようにした場合は、このバナーユーティリティーもユーザークラスパスを通じてアクセスできるようになっている必要があります。 -.LP -.RS 3 - + \f2greetings.Hi\fP ѹƥХʡ桼ƥƥȤ褦ˤϡΥХʡ桼ƥƥ桼饹ѥ̤ƥǤ褦ˤʤäƤɬפޤ .LP .nf \f3 @@ -808,41 +1121,25 @@ Aloha.java GutenTag.java Hello.java Hi.java .fl /examples/greetings/Hi.java\fP .fl - -.fl .fi -.RE .LP .LP -\f2greetings\fP 内のクラスを実行するには、\f2greetings\fP と、\f2greetings\fP が使うクラスの両方にアクセスできる必要があります。 -.LP -.RS 3 - +\f2greetings\fP Υ饹¹Ԥˤϡ \f2greetings\fP ȡ줬Ȥ饹ξ˥Ǥɬפޤ .LP .nf \f3 .fl % \fP\f3java \-classpath /examples:/lib/Banners.jar greetings.Hi\fP -.fl - .fl .fi -.RE .LP -.RE .SS -ソースファイルとクラスファイルの分離 -.LP -.RS 3 - +եȥ饹եʬΥ .LP .LP -特に大規模プロジェクトの場合は、ソースファイルとクラスファイルを別々のディレクトリに置くと便利なことがあります。クラスファイルの出力先を別に指定するには、\f3\-d\fP を使います。ソースファイルはユーザークラスパスにはないので、\f3\-sourcepath\fP を使って、コンパイラがソースファイルを見つけることができるようにします。 -.LP -.RS 3 - +ä絬ϥץȤξϡեȥ饹ե̡Υǥ쥯ȥ֤ʤȤޤ饹եν̤˻ꤹˤϡ\f3\-d\fP Ȥޤեϥ桼饹ѥˤϤʤΤǡ\f3\-sourcepath\fP Ȥäơѥ餬ե򸫤Ĥ뤳ȤǤ褦ˤޤ .LP .nf \f3 @@ -876,84 +1173,79 @@ farewells/ % \f3ls classes/farewells\fP .fl Base.class GoodBye.class -.fl - -.fl - .fl .fi -.RE .LP .LP -\f3注:\fP \ コマンド行では \f2src/farewells/Base.java\fP を指定していませんが、このファイルもコンパイラによってコンパイルされています。自動コンパイルを監視するには、\f3\-verbose\fP オプションを使います。 +\f3:\fP ޥɹԤǤ \f2src/farewells/Base.java\fP ꤷƤޤ󤬡Υե⥳ѥˤäƥѥ뤵Ƥޤưѥƻ뤹ˤϡ\f3\-verbose\fP ץȤޤ .LP -.RE .SS -クロスコンパイルの例 -.LP -.RS 3 - +ѥ .LP .LP -ここでは、\f3javac\fP を使って、1.5 VM 上で実行するコードをコンパイルします。 -.LP -.RS 3 - +Ǥϡ\f3javac\fP Ȥäơ1.6 VM Ǽ¹Ԥ륳ɤ򥳥ѥ뤷ޤ .LP .nf \f3 .fl -% \fP\f3javac \-target 1.5 \-bootclasspath jdk1.5.0/lib/rt.jar \\ +% \fP\f3javac \-source 1.6 \-target 1.6 \-bootclasspath jdk1.6.0/lib/rt.jar \\ .fl \-extdirs "" OldCode.java\fP .fl - -.fl .fi -.RE .LP .LP -\f3\-target 1.5\fP オプションにより、1.5 VM と互換性のあるクラスファイルが生成されます。デフォルトでは、\f3javac\fP は JDK 6 用にコンパイルします。 +\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 -Java プラットフォーム JDK の \f3javac\fP は、デフォルトでは、Java 2 SDK のブートストラップクラスに対してコンパイルを行うので、Java 2 SDK ではなく JDK 1.5 のブートストラップクラスに対してコンパイルを行うように指定する必要があります。これは、\f3\-bootclasspath\fP および \f3\-extdirs\fP を使って指定します。この指定を行わないと、1.5 VM には存在しない Java 2 プラットフォーム API に対応したコンパイルが行われるため、プログラムの実行時に障害が発生することがあります。 -.LP -.RE -.SH "関連項目" +\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 -\f2「The javac Guide」\fP @ +\f2The javac Guide\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/javac/index.html .TP 2 o -「java(1) \- Java アプリケーション起動ツール」 +java(1) \- Java ץꥱưġ .TP 2 o -「jdb(1) \- Java デバッガ」 +jdb(1) \- Java ǥХå .TP 2 o -「javah(1) \- C ヘッダーとスタブファイルジェネレータ」 +javah(1) \- C إåȥ֥ե른ͥ졼 .TP 2 o -「javap(1) \- クラスファイル逆アセンブラ」 +javap(1) \- 饹եե֥ .TP 2 o -「javadoc(1) \- Java API ドキュメントジェネレータ」 +javadoc(1) \- Java API ɥȥͥ졼 .TP 2 o -「jar(1) \- JAR アーカイブツール」 +jar(1) \- JAR ֥ġ .TP 2 o .na -\f2「Java 拡張機能フレームワーク」\fP @ +\f2Java ĥǽե졼\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html .RE diff --git a/src/solaris/doc/sun/man/man1/ja/javadoc.1 b/src/solaris/doc/sun/man/man1/ja/javadoc.1 index 283c6a81c1be46c57f0e5295c8cb7a5a25fedbf0..57c6cd75a354b410bcbd6358e69350a5b9ec17e3 100644 --- a/src/solaris/doc/sun/man/man1/ja/javadoc.1 +++ b/src/solaris/doc/sun/man/man1/ja/javadoc.1 @@ -1,4 +1,4 @@ -." Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1994, 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 @@ -19,328 +19,244 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH javadoc 1 "02 Jun 2010" -.SH "名前" -javadoc \- Java API ドキュメントジェネレータ -.RS 3 - -.LP -.LP -Java ソースファイルから、API ドキュメントの HTML ページを生成します。このドキュメントで紹介されている Javadoc の例は、Sun Solaris を使用した場合のものです。 -.LP -.RE -.SH "形式" +.TH javadoc 1 "14 Apr 2011" +.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 -.LP -引数を指定する順序は任意です。Javadoc ツールでの、処理対象の \f2.java\fP ファイルを決定する方法の詳細については、「ソースファイルの処理」を参照してください。 -.LP -.RS 3 - -.LP +ꤹǤդǤJavadoc ġǤΡоݤ .java եꤹˡξܺ٤ˤĤƤϡ֥եν\f2򻲾\fPƤ .RS 3 .TP 3 options -このドキュメントで説明されているコマンド行オプションです。Javadoc オプションの標準的な使用法については、「使用例」を参照してください。 +ΥɥȤƤ륳ޥɹԥץǤJavadoc ץɸŪʻˡˤĤƤϡֻפ򻲾ȤƤ .TP 3 packagenames -スペースで区切られた一連のパッケージ名です。 たとえば、\f2java.lang\ java.lang.reflect\ java.awt\fP のように指定します。ドキュメント化するパッケージを個別に指定する必要があります。ワイルドカードは使用不可です。 再帰的処理のためには、\-subpackages を使用します。Javadoc ツールは、\f2\-sourcepath\fP を使ってこれらのパッケージ名を検索します。「1 つ以上のパッケージのドキュメント化」の例を参照してください。 +ڡǶڤ줿ϢΥѥå̾ǤȤС \f2java.lang\ java.lang.reflect\ java.awt Τ褦˻ꤷޤ\fPɥȲѥå̤˻ꤹɬפޤ磻ɥɤϻԲĤǤƵŪΤˤϡ\-subpackages ѤޤJavadoc ġϡ\f2\-sourcepath\fP ѤƤΥѥå̾򸡺ޤ1 İʾΥѥåΥɥȲפ򻲾ȤƤ .TP 3 sourcefilenames -スペースで区切られた一連のソースファイル名です。各ファイルは、パスで始まります。アスタリスク (*) などのワイルドカードを含めることができます。 Javadoc ツールが処理するのは、ファイル名が「.java」という拡張子で終わり、その拡張子を除いた名前が実際に有効なクラス名であるすべてのファイルです ( +ڡǶڤ줿ϢΥե̾Ǥ ƥեϡѥǻϤޤޤꥹ (*) ʤɤΥ磻ɥɤޤ뤳ȤǤޤJavadoc ġ뤬Τϡե̾.javaפȤĥҤǽꡢγĥҤ̾ºݤͭʥ饹̾Ǥ뤹٤ƤΥեǤ ( .na -\f2「Identifiers」\fP @ +\f2Identifiers\fP @ .fi -http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625を参照)。したがって、ハイフンを含む名前 (\f2X\-Buffer\fP など) や、その他の無効な文字を含む名前を付けることによって、それらのファイルをドキュメント化の対象から除外できます。これは、テスト用のファイルや、テンプレートから生成されたファイルの場合に便利です。 ソースファイル名の前に指定したパスによって、javadoc がそのファイルを検索する場所が決まります。Javadoc ツールは、これらのソースファイル名を検索するときに \f2\-sourcepath\fP は使いません。相対パスは、現在のディレクトリからの相対パスです。 \f2Button.java\fP を渡すことは、\f2./Button.java\fP を渡すことと同じです。ソースファイル名をフルパスで指定すると、\f2/home/src/java/awt/Graphics*.java\fP のようになります。「1 つ以上のクラスのドキュメント化」の例を参照してください。また、「パッケージとクラスのドキュメント化」の例のように、パッケージ名とソースファイル名を混在させることもできます。 +http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625򻲾)äơϥեޤ̾ ( \f2X\-Buffer\fP ʤ) 䡢¾̵ʸޤ̾դ뤳ȤˤäơΥեɥȲоݤǤޤϡƥѤΥե䡢ƥץ졼Ȥ줿եξǤե̾˻ꤷѥˤäơjavadoc Υե򸡺꤬ޤޤJavadoc ġϡΥե̾򸡺Ȥˤ \f2\-sourcepath\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 - -.LP +Javadoc ץ󡢥ѥå̾ӥե̾Ǥդν¤٤ꥹȤޤޤ 1 İʾΥեǤ磻ɥ (*) \f2\-J\fP ץϡΥեǤϻǤޤ .RE -.SH " 説明" -.LP -.LP -\f3Javadoc\fP ツールは、一連の Java ソースファイルにある宣言およびドキュメンテーションコメントを解析し、デフォルトでは public クラス、protected クラス、入れ子にされたクラス (匿名の内部クラスは除く)、インタフェース、コンストラクタ、メソッド、およびフィールドについて説明した一連の HTML ページを生成します。また、API (アプリケーションプログラミングインタフェース) ドキュメントの生成や、一連のソースファイルの実装ドキュメントの生成に使用できます。 +.SH " " .LP +\f3Javadoc\fP ġϡϢ Java եˤӥɥơ󥳥ȤϤǥեȤǤ public 饹protected 饹Ҥˤ줿饹 (ƿ̾饹Ͻ)󥿥ե󥹥ȥ饯᥽åɡӥեɤˤĤϢ HTML ڡޤޤAPI (ץꥱץߥ󥰥󥿥ե) ɥȤ䡢ϢΥեμɥȤ˻ѤǤޤ .LP -Javadoc ツールは、パッケージ全体、個々のソースファイル、またはその両方に対して実行できます。javadoc ツールをパッケージ全体に対して実行する場合は、最上位ディレクトリから再帰的にたどるために \f2\-subpackages\fP を使用するか、パッケージ名の明示的なリストを渡します。個々ソースファイルに対して javadoc を実行する場合は、一連のソース (\f2.java\fP) ファイル名を渡します。具体的な例は、このドキュメントの最後に紹介します。次に、Javadoc によるソースファイルの処理について説明します。 -.LP +Javadoc ġϡѥåΡġΥե롢ޤϤξФƼ¹ԤǤޤѥåΤΥɥȲԤˤϡ\f2\-subpackages\fP ѤƺǾ̥ǥ쥯ȥ꤫鲼˺ƵŪˤɤ뤫ѥå̾ŪʥꥹȤϤޤġեФ javadoc ¹ԤϡϢΥ (.\f2.java\fP) ե̾ϤޤŪϡΥɥȤκǸ˾Ҳ𤷤ޤˡJavadoc ˤ륽եνˤĤޤ .SS -ソースファイルの処理 -.LP -.LP -Javadoc ツールは、末尾に \f2.java\fP の付いたファイル以外に、ソースファイルで説明する他のファイルも処理します。個々のソースファイル名を明示的に渡すことによって Javadoc ツールを実行する場合、どの \f2.java\fP ファイルを処理するかを正確に指定できます。ただし、多くの開発者はこの方法では作業しません。 パッケージ名を渡すほうが簡単だからです。ソースファイル名を明示的に指定しなくても、Javadoc ツールは 3 つの方法で実行できます。この方法は、(1) パッケージ名を渡す、(2) \f2\-subpackages\fP を使用する、(3) ソースファイル名にワイルドカードを使用する (\f2*.java\fP) という方法です。これらの方法を使用する場合、Javadoc ツールは、\f2.java\fP ファイルが次のすべての要件を満たしている場合にかぎり、このファイルを処理します。 +եν .LP +Javadoc ġϡ\f2.java\fPפΥեǤʤ֥եפ뤽¾ΥեޤġΥե̾ŪϤȤˤä Javadoc ġ¹Ԥ硢ɤ \f2.java\fP ե뤫Τ˻Ǥޤ¿γȯԤϤˡǤϺȤޤ󡣥ѥå̾ϤۤñǤե̾Ū˻ꤷʤƤ⡢Javadoc ġ 3 ĤˡǼ¹ԤǤޤˡȤϡ(1) ѥå̾Ϥ(2) \f2\-subpackages\fP Ѥ롢(3) ե̾ǥ磻ɥɤѤ (\f2*.java\fP) 3 ĤǤξ硢Javadoc ġ뤬\f2.java\fPץեνԤΤϡΥե뤬Τ٤Ƥ׷Ǥ .RS 3 .TP 2 o -名前から \f2.java\fP の接尾辞を取り除くと、実際に有効なクラス名になっている (有効な文字については、 +̾\f2.java\fPפȼºݤͭʥ饹̾ˤʤäƤ (ͭʸˤĤƤ .na -\f2「Identifiers」\fP @ +\f2Identifiers\fP @ .fi -http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625を参照) +http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625򻲾) .TP 2 o -ソースツリーのルートから相対的なディレクトリパスが、区切り文字をドットに変換すると、実際に有効なパッケージ名になっている +ĥ꡼Υ롼ȤŪʥǥ쥯ȥѥڤʸɥåȤѴȡºݤͭʥѥå̾ˤʤäƤ .TP 2 o -パッケージ文には有効なパッケージ名が含まれる (前項目で指定) +ѥåʸˤͭʥѥå̾ޤޤ (ܤǻ) .RE - -.LP -.LP -\f3リンクの処理\fP \- Javadoc ツールは、処理の実行中に、その実行でドキュメント化されるパッケージ、クラス、およびメンバーの名前に対して、自動的に相互参照リンクを追加します。このようなリンクは、次のような場所に追加されます。 .LP +\f3󥯤ν\fP \- Javadoc ġϡμ¹ˡμ¹ԤǥɥȲѥå饹ӥС̾ФơưŪ߻ȥ󥯤ɲäޤΤ褦ʥ󥯤ϡΤ褦ʾɲäޤ .RS 3 .TP 2 o -宣言 (戻り値の型、引数の型、フィールドの型) + (ͤηηեɤη) .TP 2 o -\f2@see\fP タグから生成された [関連項目] セクション +\f2@see\fP 줿 [Ϣ] .TP 2 o -\f2{@link}\fP タグから生成されたインラインテキスト +\f2{@link}\fP 줿饤ƥ .TP 2 o -\f2@throws\fP タグから生成された例外の名前 +\f2@throws\fP 줿㳰̾ .TP 2 o -"インタフェースのメンバーに対する [定義] リンクと、クラスのメンバーに対する [オーバーライド] リンク +󥿥եΥСФץ󥯤ȡ饹ΥСФ֥С饤ɡץ .TP 2 o -パッケージ、クラス、およびメンバーを列挙している概要テーブル +ѥå饹ӥС󤷤Ƥ복ץơ֥ .TP 2 o -パッケージおよびクラスの継承ツリー +ѥåӥ饹ηѾĥ꡼ .TP 2 o -索引 + .RE - -.LP .LP -コマンド行で指定しなかったクラスについての既存のテキスト (別に生成したテキスト) に対してハイパーリンクを追加するには、\f2\-link\fP および \f2\-linkoffline\fP オプションを利用できます。 +ޥɹԤǻꤷʤä饹ˤĤƤδ¸Υƥ (̤ƥ) Фƥϥѡ󥯤ɲäˤϡ\f2\-link\fP \f2\-linkoffline\fP ץѤǤޤ .LP +\f3¾νˤĤƤξܺ\fP \- Javadoc ġϡ¹Ԥ뤿Ӥ 1 ĤδʥɥȤޤɥȤɲ뤳ȤϤǤޤ󡣤ĤޤꡢJavadoc ġΰμ¹Է̤ꡢƤľȤ줿ꤹ뤳ȤϤǤޤ󡣤ҤΤ褦ˡμ¹Է̤Фƥ󥯤ɲä뤳ȤϤǤޤ .LP -\f3その他の処理についての詳細\fP \- Javadoc ツールは、実行するたびに 1 つの完全なドキュメントを作成します。 ドキュメントを追加生成することはできません。 つまり、Javadoc ツールの以前の実行結果を修正したり、その内容を直接組み入れたりすることはできません。ただし、前述のように、以前の実行結果に対してリンクを追加することはできます。 +ͳ顢Javadoc ġϡ¹Ԥ뤿 java ѥɬפȤjava ѥ˰¸ƤޤJavadoc ġϡ \f2javac\fP ΰƤӽФ򥳥ѥ뤷ޤСμ̵뤷ޤJavadoc ġϡ饹ؤޤ९饹˭٤ɽȥ饹Ρֻѡ״طۤξ󤫤 HTML ޤˡJavadoc ġϡɤΥɥơ󥳥Ȥ顢桼󶡤ɥȤޤ .LP +ºݤˤϡJavadoc ġϡ᥽åΤʤʥ֥եǤ褦 \f2.java\fP եǤưޤäơAPI κˤϡ򵭽Ҥ߷פᤤʳǡɥơ󥳥Ȥ򵭽Ҥ javadoc ġ¹ԤǤޤ .LP -実装上の理由から、Javadoc ツールは、処理を実行するために java コンパイラを必要とし、java コンパイラに依存しています。Javadoc ツールは \f2javac\fP の一部を呼び出すことにより、宣言をコンパイルし、メンバーの実装は無視します。Javadoc ツールは、クラス階層を含むクラスの豊富な内部表現とクラスの「使用」関係を構築し、その情報から HTML を生成します。さらに、Javadoc ツールは、ソースコードのドキュメンテーションコメントから、ユーザーの提供したドキュメントも取得します。 -.LP -.LP -Javadoc ツールは、メソッド本体のない純粋なスタブファイルである \f2.java\fP ソースファイルに対しても、実行することができます。したがって、API の作成時には、実装を記述する前の設計の早い段階で、ドキュメンテーションコメントを記述して javadoc ツールを実行できます。 -.LP -.LP -コンパイラに依存することによって、HTML 出力は、実際の実装に正確に対応します。 実際の実装は、明示的なソースコードにではなく、暗黙のソースコードに依存する場合があります。たとえば、Javadoc ツールは、\f2.class\fP ファイル内に存在するが、ソースコード内には存在しない +ѥ˰¸뤳ȤˤäơHTML ϤϡºݤμΤбޤºݤμϡŪʥɤˤǤϤʤۤΥɤ˰¸礬ޤȤСJavadoc ġϡ.class եˤ¸ߤ뤬ɤˤ¸ߤʤ .na -\f2デフォルトコンストラクタ\fP @ +\f2ǥեȥ󥹥ȥ饯\fP @ .fi -http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#36154 (Java 言語仕様のセクション 8.6.7) をドキュメント化します。 +http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#36154 (Java ͤΥ 8.6.7) \f2ɥȲ\fP ޤ .LP +̾Javadoc ġǤϡեΥɤԴޤϥ顼ޤǤǤɥȤǤޤΤᡢǥХåȥ֥륷塼ƥ󥰤λ˥ɥȤǤޤȤСJava ͤˤȡݥ᥽åɤޤ९饹ϡ켫ݤȤʤФʤޤ󡣤Υ顼򸡽Фȡjavac ѥߤޤJavadoc ġϷٹФ˽³ԤޤJavadoc ġϥɥơ󥳥ȤδŪʥåԤޤɥơ󥳥ȤܤåɬפϡDocCheck ɥååȤѤƤ .LP -通常、Javadoc ツールでは、ソースファイルのコードが不完全またはエラーを含んでいる場合でもドキュメントを生成できます。このため、デバッグやトラブルシューティングを完了する前にドキュメントを生成できます。たとえば、Java 言語仕様によると、抽象メソッドを含むクラスは、それ自体抽象として宣言されなければなりません。このエラーを検出すると、javac コンパイラは停止しますが、Javadoc ツールは警告を出さずに処理を続行します。Javadoc ツールはドキュメンテーションコメントの基本的なチェックを行います。ドキュメンテーションコメントをより詳しくチェックする必要がある場合は、DocCheck ドックレットを使用してください。 -.LP -.LP -Javadoc ツールは、ドキュメントの内部構造を構築する際、参照クラスをすべてロードします。このため、Javadoc ツールは、ブートストラップクラス、拡張機能、またはユーザークラスにかかわらず、すべての参照クラスを検索できなければなりません。詳細は、 +Javadoc ġϡɥȤ¤ۤݡȥ饹򤹤٤ƥɤޤΤᡢJavadoc ġϡ֡ȥȥåץ饹ĥǽޤϥ桼饹ˤ餺٤Ƥλȥ饹򸡺ǤʤФʤޤ󡣾ܺ٤ϡ .na -\f2「クラスの検索方法」\fP @ +\f2֥饹θˡ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.htmlを参照してください。通常、作成するクラスは、拡張機能としてロードするか、Javadoc ツールのクラスパス内に置く必要があります。 -.LP +http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html򻲾ȤƤ̾륯饹ϡĥǽȤƥɤ뤫Javadoc ġΥ饹ѥ֤ɬפޤ .SS -Javadoc のドックレット -.LP -.LP -Javadoc ツールの出力の内容と形式は、ドックレットを使ってカスタマイズできます。Javadoc ツールには、標準ドックレットと呼ばれるデフォルトの「組み込み」ドックレットがあります。 標準ドックレットは、HTML 形式の API ドキュメントを生成します。標準ドックレットを修正またはサブクラス化することや、HTML、XML、MIF、RTF などの好みの出力形式を生成する独自のドックレットを記述することも可能です。ドックレットとその使用法については、次の項目を参照してください。 +Javadoc Υɥåå .LP +Javadoc ġνϤƤȷϡɥååȤȤäƥޥǤޤJavadoc ġˤϡɸɥååȤȸƤФǥեȤΡȤ߹ߡץɥååȤޤɸɥååȤϡHTML API ɥȤޤɸɥååȤޤϥ֥饹뤳Ȥ䡢HTMLXMLMIFRTF ʤɤιߤνϷȼΥɥååȤ򵭽Ҥ뤳ȤǽǤɥååȤȤλˡˤĤƤϡιܤ򻲾ȤƤ .RS 3 .TP 2 o .na -\f2Javadoc のドックレット\fP @ +\f2Javadoc Υɥåå\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/javadoc/index.html .TP 2 o -\f2\-doclet\fP コマンド行オプション +\f2\-doclet\fP ޥɹԥץ .RE - -.LP -.LP -\f2\-doclet\fP コマンド行オプションでカスタムドックレットが指定されていない場合、Javadoc ツールは、デフォルトの標準ドックレットを使用します。javadoc ツールには、使用されているドックレットに関係なく使用できるコマンド行オプションがあります。標準ドックレットでは、これらのほかに、いくつかのコマンド行オプションが追加されます。どちらのオプションについても、このあとの「オプション」で説明します。 .LP +\f2\-doclet\fP ޥɹԥץǥɥååȤꤵƤʤ硢Javadoc ġϡǥեȤɸɥååȤѤޤjavadoc ġˤϡѤƤɥååȤ˴طʤѤǤ륳ޥɹԥץ󤬤ޤɸɥååȤǤϡΤۤˡĤΥޥɹԥץɲäޤɤΥץˤĤƤ⡢ΤȤΡ֥ץפޤ .SS -関連ドキュメントおよびドックレット -.LP +ϢɥȤӥɥåå .RS 3 .TP 2 o .na -\f2Javadoc に施された機能強化\fP @ +\f2Javadoc ˻ܤ줿ĥǽ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/index.html \- Javadoc で追加された改良点の詳細 +http://java.sun.com/javase/6/docs/technotes/guides/javadoc/index.html \- Javadoc 1.4 ɲä줿ξܺ .TP 2 o .na \f2Javadoc FAQ\fP @ .fi -http://java.sun.com/j2se/javadoc/faq/index.html \- 頻繁に寄せられる質問に対する回答、Javadoc 関連のツールについての情報、およびバグの回避方法 +http://java.sun.com/j2se/javadoc/faq/index.html \- ˤ˴󤻤ФJavadoc ϢΥġˤĤƤξ󡢤ӥХβˡ .TP 2 o .na \f2How to Write Doc Comments for Javadoc\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html \- ドキュメンテーションコメントの記述方法に関する Sun の規約 +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html \- ɥơ󥳥Ȥεˡ˴ؤ Sun ε .TP 2 o .na \f2Requirements for Writing API Specifications\fP @ .fi -http://java.sun.com/j2se/javadoc/writingapispecs/index.html \- Java 2 プラットフォーム仕様を記述する際に使用された標準要件。この情報は、ソースファイルのドキュメンテーションコメント形式で API 仕様を記述する場合にも、その他の形式で記述する場合にも役立ちます。検証可能なアサーションを満たすパッケージ、クラス、インタフェース、フィールド、およびメソッドについての要件を定めています。 +http://java.sun.com/j2se/javadoc/writingapispecs/index.html \- Java SE ץåȥեͤ򵭽Ҥݤ˻Ѥ줿ɸ׷盧ξϡեΥɥơ󥳥ȷ API ͤ򵭽Ҥˤ⡢¾ηǵҤˤΩޤڲǽʥѥå饹󥿥եեɡӥ᥽åɤˤĤƤ׷Ƥޤ .TP 2 o .na -\f2ドキュメンテーションコメントの仕様\fP @ +\f2ɥơ󥳥Ȥλ\fP @ .fi -http://java.sun.com/docs/books/jls/first_edition/html/18.doc.html \- ドキュメンテーションコメントのオリジナル仕様については、『Java Language Specification』 (James Gosling、Bill Joy、Guy Steele 共著) の初版の第 18 章「Documentation Comments」を参照してください。この章は、第 2 版では削除されました。 +http://java.sun.com/docs/books/jls/first_edition/html/18.doc.html \- ɥơ󥳥ȤΥꥸʥͤˤĤƤϡJava Language Specification (James GoslingBill JoyGuy Steele ) νǤ 18 ϡDocumentation Commentsפ򻲾ȤƤξϤϡ 2 ǤǤϺޤ .TP 2 o .na -\f2DocCheck ドックレット\fP @ +\f2DocCheck ɥåå\fP @ .fi -http://java.sun.com/javadoc/doccheck \- ソースファイル内のドキュメンテーションコメントをチェックし、検出されたエラーや不正のレポートを生成します。Sun Doc Check ユーティリティーの一部です。Sun Doc Check ユーティリティーの一部です。 +http://java.sun.com/javadoc/doccheck \- եΥɥơ󥳥ȤåФ줿顼ΥݡȤޤDoc Check 桼ƥƥΰǤ .TP 2 o .na -\f2MIF ドックレット\fP @ +\f2MIF ɥåå\fP @ .fi -http://java.sun.com/javadoc/mifdoclet \- MIF、FrameMaker、PDF の書式で API ドキュメントを自動生成します。MIF は Adobe FrameMaker の交換書式です。 +http://java.sun.com/javadoc/mifdoclet \- MIFFrameMakerPDF ν񼰤 API ɥȤưޤMIF Adobe FrameMaker θ򴹽񼰤Ǥ .RE - -.LP .SS -用語 -.LP -.LP -\f2「ドキュメンテーションコメント」\fP、\f2「doc コメント」\fP、\f2「主説明」\fP、\f2「タグ」\fP、\f2「ブロックタグ」\fP、および\f2「インラインタグ」\fPの用語については、「ドキュメンテーションコメント」で説明します。次のその他の用語は、Javadoc ツールのコンテキストで特定の意味を持ちます。 +Ѹ .LP +\f2֥ɥơ󥳥ȡ\fP\f2doc ȡ\fP\f2ּ\fP\f2֥\fP\f2֥֥å\fP\f2֥饤󥿥\fPѸˤĤƤϡ֥ɥơ󥳥ȡפޤʲΤ¾ѸϡJavadoc ġΥƥȤΰ̣ޤ .RS 3 .TP 3 -生成ドキュメント (generated document) -javadoc ツールが Java ソースコード内のドキュメンテーションコメントから生成したドキュメントのことです。デフォルトの生成ドキュメントは HTML 形式で、標準ドックレットによって作成されます。 +ɥ (generated document) +javadoc ġ뤬 Java Υɥơ󥳥ȤɥȤΤȤǤǥեȤɥȤ HTML ǡɸɥååȤˤäƺޤ .LP .TP 3 -名前 (name) -Java 言語で書かれたプログラム要素の名前、つまりパッケージ、クラス、インタフェース、フィールド、コンストラクタ、またはメソッドの名前のことです。名前は、\f2java.lang.String.equals(java.lang.Object)\fP のように完全修飾することも、\f2equals(Object)\fP のように部分修飾することもできます。 +̾ (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 ツールの出力に組み込まれるクラス、つまり「包含クラス」とも呼ばれます。 +ɥȲ륯饹 (documented classes) +javadoc ġμ¹Ԥˤäƾܺ٤ʥɥȤ륯饹ӥ󥿥եΤȤǤɥȲˤϡե뤬ѲǽǤʤФʤ餺ե̾ޤϥѥå̾ javadoc ޥɤϤ졢 (publicprotectedpackage\-private ޤ private) ˤäƥե륿ʤ褦ˤʤФʤޤ󡣥ɥȲ륯饹ϡjavadoc ġνϤȤ߹ޤ륯饹Ĥޤޥ饹פȤƤФޤ .LP .TP 3 -包含クラス (included classes) -ツールの実行によって詳細なドキュメントが生成されるクラスおよびインタフェースのことです。「ドキュメント化されるクラス」 と同じ。 +ޥ饹 (included classes) +ġμ¹Ԥˤäƾܺ٤ʥɥȤ륯饹ӥ󥿥եΤȤǤ֥ɥȲ륯饹פƱ .LP .TP 3 -除外クラス (excluded classes) -ツールの実行によって詳細なドキュメントが生成されないクラスおよびインタフェースのことです。 +饹 (excluded classes) +ġμ¹Ԥˤäƾܺ٤ʥɥȤʤ饹ӥ󥿥եΤȤǤ .LP .TP 3 -参照クラス (referenced classes) -ドキュメント化されるクラスおよびインタフェースの定義 (実装) またはドキュメンテーションコメントの中で明示的に参照されているクラスおよびインタフェースのことです。参照の例としては、戻り値の型、パラメータの型、キャストの型、拡張されたクラス、実装されたインタフェース、インポートされたクラス、メソッド本体で使用されるクラス、@see、{@link}、{@linkplain}、{@inheritDoc} タグなどがあります。この定義は +ȥ饹 (referenced classes) +ɥȲ륯饹ӥ󥿥ե () ޤϥɥơ󥳥ȤŪ˻ȤƤ륯饹ӥ󥿥եΤȤǤȤȤƤϡͤηѥ᡼η㥹Ȥηĥ줿饹줿󥿥եݡȤ줿饹᥽åΤǻѤ륯饹@see{@link}{@linkplain}{@inheritDoc} ʤɤޤ .na \f21.3\fP @ .fi -http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/javadoc.html#referencedclasses から変更されています。javadoc ツールを実行するときは、Javadoc のブートクラスパスおよびクラスパス内にあるすべての参照クラスをメモリーにロードする必要があります。参照クラスが見つからない場合は、「クラスが見つかりません」という警告が表示されます。Javadoc ツールは、クラスの存在とそのメンバーの完全指定の名前を判別するのに必要なすべての情報を、.class ファイルから引き出すことができます。 +http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/javadoc.html#referencedclasses ѹƤޤjavadoc ġ¹ԤȤϡJavadoc Υ֡ȥ饹ѥӥ饹ѥˤ뤹٤Ƥλȥ饹꡼˥ɤɬפޤȥ饹Ĥʤϡ֥饹ĤޤפȤٹɽޤJavadoc ġϡ饹¸ߤȤΥСδ̾Ƚ̤Τɬפʤ٤Ƥξ.class ե뤫ФȤǤޤ .LP .TP 3 -外部参照クラス (external referenced classes) -参照クラスのうち、javadoc ツールの実行中にドキュメントが生成されないクラスのことです。つまり、これらのクラスは、コマンド行で Javadoc ツールに渡されていません。生成ドキュメント内でこれらのクラスにリンクしている箇所は、「外部参照」または「外部リンク」と呼ばれます。たとえば、\f2java.awt\fP パッケージに対してだけ Javadoc ツールを実行した場合、\f2Object\fP などの \f2java.lang\fP 内のすべてのクラスが外部参照クラスになります。外部参照クラスにリンクするには、\f2\-link\fP および \f2\-linkoffline\fP オプションを使用します。外部参照クラスには、通常そのソースコメントを javadoc ツールの実行で利用できないという重要な特徴があります。この場合、それらのコメントを継承することはできません。 +ȥ饹 (external referenced classes) +ȥ饹Τjavadoc ġμ¹˥ɥȤʤ饹ΤȤǤĤޤꡢΥ饹ϡޥɹԤ Javadoc ġϤƤޤɥǤΥ饹˥󥯤Ƥսϡֳȡפޤϡֳ󥯡פȸƤФޤȤСJavadoc ġμ¹оݤ \f2java.awt\fP ѥåΤߤǤ硢 \f2java.lang\fP Τ٤ƤΥ饹 ( \f2Object\fPʤ) ȥ饹ˤʤޤȥ饹˥󥯤ˤϡ \f2\-link\fP \f2\-linkoffline\fP ץѤޤȥ饹ˤϡ̾綠ΥȤ javadoc ġμ¹ԤѤǤʤȤפħޤξ硢ΥȤѾ뤳ȤϤǤޤ .RE - -.LP -.SH "ソースファイル" -.LP -.LP -Javadoc ツールは、4 種類の異なるソースファイルから出力結果を生成します。そのファイルは、クラスの Java 言語ソースファイル (\f2.java\fP)、パッケージコメントファイル、概要コメントファイル、およびその他の処理されないファイルです。また、ドキュメント化しないがソースツリーに存在する場合があるテストファイルやテンプレートファイルについても説明します。 +.SH "ե" .LP +Javadoc ġ 4 ΰۤʤ֥ץե뤫Ϥޤ 4 Ȥϡ饹 Java 쥽ե (\f2.java\fP)ѥåȥե롢ץȥե롢Ӥ¾νʤեǤޤɥȲʤĥ꡼¸ߤ礬ƥȥեƥץ졼ȥեˤĤƤޤ .SS -クラスソースコードファイル -.LP -.LP -それぞれのクラスまたはインタフェース、およびそのメンバーは、独自のドキュメンテーションコメントを持つことができ、それを \f2.java\fP ファイル内に保持します。ドキュメンテーションコメントの詳細は、「ドキュメンテーションコメント」を参照してください。 +饹ɥե .LP +줾Υ饹ޤϥ󥿥եӤΥСϡȼΥɥơ󥳥ȤĤȤǤ \f2.java\fP եݻޤɥơ󥳥Ȥξܺ٤ϡ֥ɥơ󥳥ȡפ򻲾ȤƤ .SS -パッケージコメントファイル -.LP +ѥåȥե .LP -それぞれのパッケージは、独自のドキュメンテーションコメントを持つことができ、それを専用の「ソース」ファイルに保持します。 その内容は、Javadoc ツールによって生成される概要ページに組み込まれます。このコメントには、通常、そのパッケージ全体に当てはまるドキュメントを記述します。 -.LP -.LP -パッケージコメントファイルを作成する場合、コメントの格納先として、次の 2 つのファイルのいずれかを選択できます。 +줾ΥѥåϡȼΥɥơ󥳥ȤĤȤǤѤΡ֥ץեݻޤƤϡJavadoc ġˤä복ץڡȤ߹ޤޤΥȤˤϡ̾ΥѥåΤƤϤޤɥȤ򵭽Ҥޤ .LP +ѥåȥե硢ȤγǼȤơ 2 ĤΥեΤ줫Ǥޤ .RS 3 .TP 2 o -\f2package\-info.java\fP \- パッケージ宣言、パッケージ注釈、パッケージコメント、および Javadoc タグを格納できます。このファイルは JDK 5.0 で導入されたものであり、package.html よりも推奨されています。 +\f2package\-info.java\fP \- ѥåѥåᡢѥåȡ Javadoc ǼǤޤΥեϰ̤ˡpackage.html 侩ޤ .TP 2 o -\f2package.html\fP \- 格納できるのはパッケージコメントと Javadoc タグだけです。 パッケージ注釈は格納できません。 +\f2package.html\fP \- ǼǤΤϥѥåȤ Javadoc ǤѥåϳǼǤޤ .RE - -.LP -.LP -各パッケージは、単一の \f2package.html\fP ファイル、単一の \f2package\-info.java\fP ファイルのいずれかを持つことができますが、両方を持つことはできません。このどちらかのファイルを \f2.java\fP ファイルとともに、ソースツリー内のそのパッケージのディレクトリ内に配置してください。 -.LP -.LP -\f4package\-info.java\fP \- このファイルには、次の構造のパッケージコメントを格納できます。 コメントはパッケージ宣言の前に配置します。 -.LP .LP -File:\f2java/applet/package\-info.java\fP +ƥѥåǤϡñ \f2package.html\fP ե롢ñ \f2package\-info.java\fP եΤ줫Ǥޤξ򤹤뤳ȤϤǤޤ󡣤Τɤ餫Υե \f2.java\fP եȤȤˡĥ꡼ΤΥѥåΥǥ쥯ȥ֤Ƥ .LP +\f4package\-info.java\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 -.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 +File: \f2java/applet/package\-info.java\fP .nf \f3 .fl /** .fl - * Provides the classes necessary to create an + * Provides the classes necessary to create an .fl * applet and the classes an applet uses .fl @@ -372,285 +288,91 @@ package java.lang.applet; .fl \fP .fi -.br -.di -.nr a| \n(dn -.nr a- \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 -.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 352 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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-42 - -.LP -.LP -コメント区切り文字の \f2/**\fP と \f2/*\fP は記述する必要がありますが、中間行の行頭のアスタリスクは省略してもかまいません。 .LP +ȶڤʸ \f2/**\fP \f2/*\fP ¸ߤƤɬפޤֹԤιƬΥꥹϾάƤ⤫ޤޤ .LP -\f4package.html\fP \- このファイルには、次の構造のパッケージコメントを格納できます。 コメントは \f2<body>\fP 要素内に配置します。 +\f4package.html\fP \- Υեˤϡι¤ΥѥåȤǼǤޤȤ \f2<body>\fP ֤ޤ .LP -.LP -File:\f2java/applet/package.html\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 +File: \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> +<HTML> <BODY> Provides the classes necessary to create an applet and the classes an applet uses to communicate with its applet context.<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> +and the applet context. An applet is an embeddable window (see the {@link java.awt.Panel} class) with a few extra methods that the applet context can use to initialize, start, and stop the applet.@since 1.0 @see java.awt </BODY> </HTML> .fl \fP .fi -.br -.di -.nr a| \n(dn -.nr a- \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 -.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 405 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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-40 - .LP -.LP -これは単なる通常の HTML ファイルであり、パッケージ宣言を含んでいない点に注意してください。パッケージコメントファイルの内容は、ほかのすべてのコメントと同様に HTML で記述されています。それは、このドキュメンテーションコメントには、コメント区切り文字である \f2/**\fP と \f2*/\fP、および行頭のアスタリスクを含めてはならない、ということです。コメントを書く場合は、最初の文をパッケージの概要とし、\f2<body>\fP と最初の文の間にタイトルやその他のテキストを含めないようにします。パッケージタグを含めることはできますが、ほかのドキュメンテーションコメントと同様、すべてのブロックタグは、主説明のあとに置かなければなりません。パッケージコメントファイルに \f2@see\fP タグを追加する場合は、完全指定の名前を使用する必要があります。詳細は、 +ñʤ̾ HTML եǤꡢѥåޤǤʤդƤѥåȥեƤϡۤΤ٤ƤΥȤƱͤ HTML ǵҤޤ1 Ĥ㳰ޤϡΥɥơ󥳥Ȥˤϡȶڤʸ Ǥ \f2/**\fP \f2*/\fP ӹƬΥꥹޤƤϤʤʤȤǤȤ񤯾ϡǽʸѥåγפȤ \f2<body>\fP Ⱥǽʸδ֤˥ȥ䤽¾ΥƥȤޤʤ褦ˤޤѥåޤ뤳ȤϤǤޤۤΥɥơ󥳥ȤƱ͡٤ƤΥ֥åϡΤȤ֤ʤФʤޤ \f2@see\fP ѥåȥեɲäˤϡ̾Ѥɬפޤܺ٤ϡ .na -\f2package.html\fP の例 @ +\f2package.html\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#packagecommentsを参照してください。 -.LP -.LP -\f3パッケージコメントファイルの処理\fP \- Javadoc ツールは、実行時にパッケージコメントファイルを自動的に検索し、このファイルを見つけると次の処理を行います。 +http://java.sun.com/j2se/javadoc/writingdoccomments/index.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 やソースファイルの著作権記述などの情報を配置することもできるが、生成後のドキュメンテーションにはそれらは一切表示されない) +Ǥ褦˥Ȥ򥳥ԡ( \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 @ +\f2ѥåγ\fP @ .fi http://java.sun.com/javase/6/docs/api/java/applet/package\-summary.html) .TP 2 o -パッケージの概要ページの先頭に、パッケージコメントの最初の文をコピーする。さらに、概要ページのパッケージリストに、パッケージ名とパッケージコメントの最初の文を追加する (例: +ѥåγץڡƬˡѥåȤκǽʸ򥳥ԡ롣ˡץڡΥѥåꥹȤˡѥå̾ȥѥåȤκǽʸɲä (: .na -\f2概要の要約\fP @ +\f2פ\fP @ .fi -http://java.sun.com/javase/6/docs/api/overview\-summary.html)。文の末尾は、クラスやメンバーの主説明の最初の文の末尾と同じ規則によって判断される +http://java.sun.com/javase/6/docs/api/overview\-summary.html)ʸϡ饹СμκǽʸƱ§ˤäȽǤ .RE - -.LP .SS -概要コメントファイル -.LP -.LP -ドキュメント化する各アプリケーションまたはパッケージセットは、独自の概要ドキュメンテーションコメントを持つことができ、それは専用の「ソース」ファイルに保持されます。 その内容は、Javadoc ツールによって生成される概要ページに組み込まれます。このコメントには、通常、アプリケーションまたはパッケージセット全体に当てはまるドキュメントを記述します。 -.LP -.LP -概要コメントファイルを作成する場合は、ファイルに任意の名前を付け、任意の場所に置くことができます。ただし、通常は、ファイル名を \f4overview.html\fP にして、ソースツリーの最上位レベルに置きます。たとえば、\f2java.applet\fP パッケージのソースファイルが \f2/home/user/src/java/applet\fP ディレクトリに含まれている場合は、\f2/home/user/src/overview.html\fP に概要コメントファイルを作成できます。 -.LP +ץȥե .LP -異なるパッケージのセットに対して javadoc を複数回実行する場合は、同じ 1 つのソースファイルのセットに対して複数の概要コメントファイルを作成できます。たとえば、内部ドキュメンテーション用に \-private を指定して javadoc を 1 回実行したあと、公開ドキュメンテーション用にそのオプションを指定しないで再度実行することができます。この場合、各概要コメントファイルの 1 文目で、そのドキュメンテーションを公開用または内部用として記述できます。 +ɥȲƥץꥱޤϥѥååȤϡȼγץɥơ󥳥ȤĤȤǤѤΡ֥ץեݻޤƤϡJavadoc ġˤä복ץڡȤ߹ޤޤΥȤˤϡ̾ץꥱޤϥѥååΤƤϤޤɥȤ򵭽Ҥޤ .LP +ץȥեˤϡեǤդ̾ (̾ \f4overview.html\fP) դǤդξ (̾ϥĥ꡼κǾ) ֤ǤޤȤС \f2java.applet\fP ѥåΥե뤬 \f2/home/user/src/java/applet\fP ǥ쥯ȥ˳ǼƤСץȥե \f2/home/user/src/overview.html ˺Ǥޤ\fP .LP -概要コメントファイルの内容は、前述のパッケージコメントファイルと同様、HTML で記述された 1 つの大きなドキュメンテーションコメントです。詳細は、前述の説明を参照してください。要点を繰り返すと、このコメントを記述する場合は、最初の文をアプリケーションまたはパッケージセットの要約とし、\f2<body>\fP と最初の文の間にタイトルその他のテキストを含めないようにします。概要タグを含めることができます。 どのドキュメンテーションコメントについても、インラインタグ (\f2{@link}\fP など) 以外のすべてのタグは、主説明のあとに置く必要があります。\f2@see\fP タグを追加する場合は、完全指定の名前を使用しなければなりません。 +ۤʤѥåΥåȤФ javadoc ʣ¹ԤϡƱ 1 ĤΥեΥåȤФʣγץȥեǤޤȤСɥơѤ \-private ꤷ javadoc 1 ¹ԤȡɥơѤˤΥץꤷʤǺټ¹Ԥ뤳ȤǤޤξ硢Ƴץȥե 1 ʸܤǡΥɥơѤޤѤȤƵҤǤޤ .LP +ץȥեƤϡҤΥѥåȥեƱ͡HTML ǵҤ줿 1 Ĥ礭ʥɥơ󥳥ȤǤܺ٤ϡҤ򻲾ȤƤ򷫤֤ȡΥȤ򵭽Ҥϡǽʸ򥢥ץꥱޤϥѥååȤȤ \f2<body>\fP Ⱥǽʸδ֤˥ȥ뤽¾ΥƥȤޤʤ褦ˤޤץޤ뤳ȤǤޤۤΥɥơ󥳥ȤƱ \f2{@link}\fP ʤɤΥ饤󥿥٤ƤΥϡΤȤ֤ɬפޤ \f2@see\fP ɲäˤϡ̾Ѥɬפޤ .LP -Javadoc ツールの実行時に、\-overview オプションを使って概要コメントファイル名を指定します。このファイルは、パッケージコメントファイルと同じように処理されます。 -.LP +Javadoc ġμ¹Իˡ\-overview ץȤäƳץȥե̾ꤷޤΥեϡѥåȥեƱ褦˽ޤ .RS 3 .TP 2 o -\f2<body>\fP タグと \f2</body>\fP タグの間にあるすべての内容を処理のためにコピーする +\f2<body>\fP \f2</body>\fP δ֤ˤ뤹٤ƤƤоݤȤƥԡ .TP 2 o -概要タグがあればすべて処理する +ץС٤ƽ .TP 2 o -生成した概要ページの最後に、処理したテキストを挿入する (例: +ץڡκǸˡƥȤ (: .na -\f2概要の要約\fP @ +\f2פ\fP @ .fi http://java.sun.com/javase/6/docs/api/overview\-summary.html) .TP 2 o -概要ページの先頭に、概要コメントの最初の文をコピーする +ץڡƬˡץȤκǽʸ򥳥ԡ .RE - -.LP .SS -その他の未処理のファイル -.LP +¾̤Υե .LP -ソースには、Javadoc ツールによって生成先のディレクトリにコピーされる、その他の任意のファイルを含めることができます。一般に、このようなファイルには、グラフィックファイル、サンプルの Java ソース (.java) およびクラス (.class) ファイル、内容が通常の Java ソースファイルのドキュメンテーションコメントの影響を受けない独立した HTML ファイルなどがあります。 +ˤϡ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 -未処理のファイルをソースに含めるには、それらのファイルを \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 はパッケージではなく、そのディレクトリそのものにソースファイルが入っていないからです。 -.LP -.LP -これらの未処理のファイルへのリンクは、すべて明示的に記述する必要があります。 これは、Javadoc ツールがそれらのファイルを見ずに、単にディレクトリとその内容を生成先にコピーするだけだからです。たとえば、\f2Button.java\fP のドキュメンテーションコメント内のリンクは、次のようになります。 -.LP +̤ΥեؤΥ󥯤ϡ٤Ū˵ҤɬפޤϡJavadoc ġ뤬Υե򸫤ˡñ˥ǥ쥯ȥȤƤ˥ԡǤȤС \f2Button.java\fP Υɥơ󥳥Υ󥯤ϡΤ褦ˤʤޤ .nf \f3 .fl @@ -664,23 +386,16 @@ o .fl \fP .fi - -.LP .SS -テストファイルおよびテンプレートファイル -.LP -.LP -一部の開発者から、テストファイルおよびテンプレートファイルを対応するソースファイルの近くのソースツリーに保存したいという要望がありました。つまり、これらのソースファイルと同じディレクトリまたはサブディレクトリに保存したいということです。 -.LP +ƥȥե뤪ӥƥץ졼ȥե .LP -個別のソースファイル名で明示的に渡して Javadoc ツールを実行する場合は、テストファイルおよびテンプレートファイルを意図的に除外して、処理されないようにすることができます。ただし、パッケージ名またはワイルドカードで渡す場合は、以下のルールに従って、これらのテストファイルおよびテンプレートファイルが処理されないようにする必要があります。 +γȯԤ顢ƥȥե뤪ӥƥץ졼ȥեб륽եζ᤯Υĥ꡼¸Ȥ˾ޤĤޤꡢΥեƱǥ쥯ȥޤϥ֥ǥ쥯ȥ¸ȤȤǤ .LP +̤Υե̾ŪϤ Javadoc ġ¹Ԥϡƥȥե뤪ӥƥץ졼ȥետŪ˽ơʤ褦ˤ뤳ȤǤޤѥå̾ޤϥ磻ɥɤϤϡʲΥ롼˽äơΥƥȥե뤪ӥƥץ졼ȥե뤬ʤ褦ˤɬפޤ .LP -テストファイルとテンプレートファイルの違いは、テストファイルは、正当でコンパイル可能なソースファイルであるのに対して、テンプレートファイルは、そうではないという点です。 ただし、テンプレートファイルも「.java」で終わることができます。 -.LP -.LP -\f3テストファイル\fP \- 開発者の多くは、あるパッケージのコンパイル可能で実行可能なテストファイルをそのパッケージのソースファイルと同じディレクトリに配置したいと考えています。しかしテストファイルは、名前なしパッケージなど、ソースファイルパッケージとは別のパッケージに属させたいとも考えています (そのため、テストファイルには package ステートメントがないか、またはソースとは別の package ステートメントがある)。このような状況では、コマンド行で指定されているソースのパッケージ名を指定してそのソースがドキュメント化されているときに、テストファイルは警告またはエラーを引き起こします。そのようなテストファイルはサブディレクトリに配置する必要があります。\f2com.package1\fP に追加する場合は、それらのテストファイルを、ハイフンが含まれるためパッケージ名としては無効になるサブディレクトリに配置します。 +ƥȥեȥƥץ졼ȥեΰ㤤ϡƥȥեϡǥѥǽʥեǤΤФơƥץ졼ȥեϡǤϤʤȤǤƥץ졼ȥե.javaפǽ뤳ȤǤޤ .LP +\f3ƥȥե\fP \- ȯԤ¿ϡѥåΥѥǽǼ¹Բǽʥƥȥե򤽤ΥѥåΥեƱǥ쥯ȥ֤ȹͤƤޤƥȥեϡ̾ʤѥåʤɡեѥåȤ̤Υѥå°ȤͤƤޤ (Τᡢƥȥեˤ package ơȥȤʤޤϥȤ̤ package ơȥȤ)Τ褦ʾǤϡޥɹԤǻꤵƤ륽Υѥå̾ꤷƤΥɥȲƤȤˡƥȥեϷٹޤϥ顼ޤΤ褦ʥƥȥեϥ֥ǥ쥯ȥ֤ɬפޤȤС \f2com.package1\fP ΥեФƥȥեɲäϼΤ褦ˡϥեޤǤ뤿˥ѥå̾ȤƤ̵Ǥ褦ʥ֥ǥ쥯ȥˡΥե֤ޤ .nf \f3 .fl @@ -688,248 +403,189 @@ o .fl \fP .fi - -.LP .LP -こうすると、Javadoc ツールでは警告なしで test ディレクトリをスキップします。 +ȡJavadoc ġǤϷٹʤ test ǥ쥯ȥ򥹥åפޤ .LP +ƥȥե doc Ȥޤޤ硢Τ褦˥磻ɥɤޤƥȥե̾ϤƥƥȥեΥɥȤ褦ˡJavadoc ġ̸Ĥ˼¹ԤǤ褦ǤޤȤС \f2com/package1/test\-files/*.java ʤɤǤ\fP .LP -テストファイルに doc コメントが含まれる場合、次のようにワイルドカードを含んだテストソースファイル名で渡してテストファイルのドキュメントを生成するように、Javadoc ツールを別個に実行できるように設定できます。 たとえば、\f2com/package1/test\-files/*.java\fP などです。 -.LP -.LP -\f3ソースファイルのテンプレート\fP \- テンプレートファイルの名前は「.java」で終わることもありますが、テンプレートファイルはコンパイルできません。ソースディレクトリに保持したいソースファイルのテンプレートがある場合は、このファイル名にハイフン (\f2Buffer\-Template.java\fP など) やその他の不正な Java 文字を使用します。 こうすることで、処理されないようになります。これは、Javadoc ツールが処理するのは、「.java」接尾辞を除いた名前が 正規のクラス名であるソースファイルだけであるためです ( +\f3եΥƥץ졼\fP \- ƥץ졼ȥե̾ϡ.javaפǽ뤳Ȥ⤢ޤƥץ졼ȥեϥѥǤޤ󡣥ǥ쥯ȥݻեΥƥץ졼Ȥϡ \f2Buffer\-Template.java\fP Τ褦˥ϥե䤽¾̵ Java ʸ̾˴ޤ뤳Ȥǡƥץ졼Ȥʤ褦ˤޤϡJavadoc ġ뤬Τϡ.java̾ Υ饹̾Ǥ륽եǤ뤿Ǥ ( .na -\f2「識別子」\fP @ +\f2Identifiers\fP @ .fi -http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625参照)。 -.LP -.SH "生成されるファイル" -.LP +http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625) +.SH "ե" .LP -デフォルトでは、javadoc ツールは、HTML 形式のドキュメントを生成する標準ドックレットを使います。このドックレットは、以下の種類のファイルを生成します。 それぞれの HTML ページは、個々のファイルに相当します。javadoc が生成するファイルの名前には、クラスやインタフェースの名前にちなんだものと、そうでないもの (\f2package\-summary.html\fP など) の 2 種類があります。後者のグループのファイル名には、前者のグループとファイル名が競合しないように、ハイフンが含まれています。 -.LP -.LP -\f3基本内容ページ\fP +ǥեȤǤϡ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) +ɥȲ륯饹ޤϥ󥿥եȤ 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 テキストをこのページに組み入れます。 +ɥȲѥåȤ 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 フレーム」を参照してください。 +ѥåΥåΤФ 1 Ĥ\f3ץڡ\fP (\f2overview\-summary.html\fP)ϡɥȤƬڡˤʤޤJavadoc ġϡ\f2\-overview\fP ץǻꤵ줿ե HTML ƥȤ򤹤٤ȤޤΥڡΥեϡjavadoc ʣΥѥå̾Ϥˤޤܺ٤ϡHTML ե졼פ򻲾ȤƤ .RE - -.LP -.LP -\f3相互参照ページ\fP .LP +\f3߻ȥڡ\fP .RS 3 .TP 2 o -\f3パッケージのセット全体に対して 1 つのクラス階層ページ\fP (\f2overview\-tree.html\fP)。このページを表示するには、ナビゲーションバーの [概要] をクリックしてから、[階層ツリー] をクリックします。 +\f3ѥåΥåΤФ 1 ĤΥ饹إڡ\fP (\f2overview\-tree.html\fP)ΥڡɽˤϡʥӥС [] 򥯥åƤ顢[إĥ꡼] 򥯥åޤ .TP 2 o -\f3パッケージごとに 1 つのクラス階層ページ\fP (\f2package\-tree.html\fP)。 特定のパッケージ、クラス、またはインタフェースのページを表示してから、[階層ツリー] をクリックすると、そのパッケージのクラス階層が表示されます。 +\f3ѥåȤ 1 ĤΥ饹إڡ\fP (\f2package\-tree.html\fP)ɽˤϡΥѥå饹ޤϥ󥿥եΥڡ˰ư[إĥ꡼] 򥯥åƤΥѥåγؤɽޤ .TP 2 o -\f3パッケージごとに 1 つの [使用] ページ\fP (\f2package\-use.html\fP)と、\f3クラスおよびインタフェースごとに 1 つずつの [使用] ページ\fP (\f2class\-use/\fP\f2クラス名\fP\f2.html\fP)。このページには、特定のクラス、インタフェース、またはパッケージの一部を使っているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドについて記述されます。クラスまたはインタフェース A を例にして考えると、その [使用] ページには、A のサブクラス、A として宣言されたフィールド、A を返すメソッド、A 型のパラメータを持つメソッドおよびコンストラクタが表示されます。 このページを表示するには、まず、パッケージ、クラス、またはインタフェースのページに移動してから、ナビゲーションバーの [使用] リンクをクリックします。 +\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 の名前であり、通常、それに置き換わる名前が提示されています。非推奨 API は、将来の実装では削除される可能性があります。 +\f3侩 API ڡ\fP (\f2deprecated\-list.html\fP)侩ʤ̾٤ưɽޤ侩̾ϡ̤˲ɤ줿 API ¸ߤ뤿˻Ѥ侩Ƥʤ API ̾Ǥꡢ̾֤̾󼨤Ƥޤ侩 API ϡμǤϺǽޤ .TP 2 o -\f3定数フィールド値ページ\fP (\f2constant\-values.html\fP)。 static フィールドの値用です。 +\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 オプションの指定なしで javadoc ツールを実行することにより、public クラスおよび private クラスの完全に直列化されたクラスを生成できます。 +\f3ľ󲽤줿ڡ\fP (\f2serialized\-form.html\fP)ľ󲽲ǽijǽʥ饹˴ؤѤǤγƥ饹ˤϡľ󲽥եɤӥ᥽åɤ˴ؤޤξϡ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 ץλʤ javadoc ġ¹Ԥ뤳Ȥˤꡢpublic 饹 private 饹δľ󲽤줿饹Ǥޤ .TP 2 o -\f3索引\fP (\f2index\-*.html\fP)。 すべてのクラス名、インタフェース名、コンストラクタ名、フィールド名、およびメソッド名が、アルファベット順に並んでいます。索引は、Unicode を扱えるように国際化されています。 1 つのファイルとして生成することも、先頭文字 (英語の場合 A 〜 Z) ごとに別々のファイルとして生成することもできます。 +\f3\fP (\f2index\-*.html\fP)٤ƤΥ饹󥿥ե󥹥ȥ饯եɡӥ᥽åɤ̾ե٥åȽ¤ǤޤϡUnicode 򰷤褦˹ݲƤޤ1 ĤΥեȤ뤳Ȥ⡢Ƭʸ (Ѹξ A Z) Ȥ̡ΥեȤ뤳ȤǤޤ .RE - -.LP -.LP -\f3サポートファイル\fP .LP +\f3ݡȥե\fP .RS 3 .TP 2 o -\f3ヘルプページ\fP (\f2help\-doc.html\fP)。 ナビゲーションバーや前述の各ページに関する説明が記載されています。\f2\-helpfile\fP を使うと、デフォルトのヘルプファイルに代わる独自のカスタムヘルプファイルを提供することもできます。 +\f3إץڡ\fP (\f2help\-doc.html\fP)ʥӥСҤγƥڡ˴ؤܤƤޤǥեȤΥإץեȼΥإץե󶡤ˤϡ\f2\-helpfile\fP Ѥޤ .TP 2 o -表示用の HTML フレームを作成する 1 つの \f3index.html ファイル\fP。このファイルは、フレーム付きの先頭ページを表示する場合にロードします。このファイル自体には、テキスト内容は含まれていません。 +ɽѤ HTML ե졼 1 Ĥ \f3index.html ե\fPΥեϡե졼դƬڡɽ˥ɤޤΥե뼫ΤˤϡƥƤϴޤޤƤޤ .TP 2 o -複数の\f3フレームファイル\fP (\f2*\-frame.html\fP)。 パッケージ、クラス、およびインタフェースのリストが含まれています。 HTML フレームを表示するときに使用されます。 +ʣ\f3ե졼ե\fP (\f2*\-frame.html\fP)ѥå饹ӥ󥿥եΥꥹȤޤޤƤޤHTML ե졼ɽȤ˻Ѥޤ .TP 2 o -\f3パッケージリスト\fPファイル (\f2package\-list\fP)。 \f2\-link\fP オプションおよび \f2\-linkoffline\fP オプションで使用されます。これは、HTML ファイルではなくテキストファイルであり、どのリンクからもアクセスできません。 +\f3ѥåꥹ\fPե (\f2package\-list\fP) \f2\-link\fP \f2\-linkoffline\fP ץǻѤޤϡHTML եǤϤʤƥȥեǤꡢɤΥ󥯤⥢Ǥޤ .TP 2 o -\f3スタイルシート\fPファイル (\f2stylesheet.css\fP)。 生成されるページ上のいくつかの要素について、色、フォントファミリ、フォントサイズ、フォントのスタイル、および配置を制御します。 +\f3륷\fPե (\f2stylesheet.css\fP)ڡΤĤǤˤĤơեȥեߥꡢեȥեȤΥ롢֤椷ޤ .TP 2 o -\f3doc\-files\fP ディレクトリ。 生成先ディレクトリにコピーするイメージ、サンプルコード、ソースコードなどのファイルがすべて格納されます。これらのファイルは、Javadoc ツールによって処理されないため、ファイル内に javadoc タグがあっても無視されます。このディレクトリは、ソースツリーの中にある場合にのみ生成されます。 +\f3doc\-files\fP ǥ쥯ȥꡣǥ쥯ȥ˥ԡ륤᡼ץ륳ɡɤʤɤΥե뤬٤ƳǼޤΥեϡJavadoc ġˤäƽʤᡢե avadoc äƤ̵뤵ޤΥǥ쥯ȥϡĥ꡼ˤˤΤޤ .RE - -.LP -.LP -\f3HTML フレーム\fP -.LP .LP -Javadoc ツールは、下の図に示すように、2 〜 3 つの HTML フレームを生成します。1 つのパッケージしかない場合 (またはパッケージがない場合) は、パッケージの一覧を省略することによって最低限必要な数のフレームを作成します。単一のパッケージに属するソースファイル (*.java) または単一のパッケージ名を引数として javadoc コマンドに渡す場合は、左側の列にクラスの一覧を表示するフレーム (C) 1 つだけが作成されます。Javadoc に複数のパッケージ名を渡した場合は、概要ページ (Detail) に加えて、すべてのパッケージを一覧表示する第 3 のフレーム (P) が作成されます。この概要ページのファイル名は、\f2overview\-summary.html\fP です。したがって、このファイルは、2 つ以上のパッケージ名を渡した場合にだけ作成されます。[フレームなし] リンクをクリックするか、overview\-summary.html を最初に表示すると、フレームを省略できます。 +\f3HTML ե졼\fP .LP +Javadoc ġϡοޤ˼褦ˡ2 3 Ĥ HTML ե졼ޤ1 ĤΥѥåʤ (ޤϥѥåʤ) ϡѥåΰά뤳ȤˤäƺɬפʿΥե졼ޤñΥѥå°륽ե (*.java) ޤñΥѥå̾Ȥ javadoc ޥɤϤϡ¦˥饹ΰɽե졼 (C) 1 ĤޤJavadoc ʣΥѥå̾Ϥϡץڡ (Detail) ˲äơ٤ƤΥѥåɽ 3 Υե졼 (P) ޤγץڡΥե̾ϡ \f2overview\-summary.html Ǥ\fPäơΥեϡ2 İʾΥѥå̾Ϥˤޤ֥ե졼ʤץ󥯤򥯥å뤫overview\-summary.html ǽɽȡե졼άǤޤ .LP -HTML フレームに慣れていない場合は、特定のフレームを印刷およびスクロールするには、そのフレームに「フォーカス」がなければならないことに注意してください。フレームにフォーカスを与えるには、そのフレームをクリックします。このようにすると、多くのブラウザでは、矢印キーやページキーを使ってそのフレームをスクロールしたり、[印刷] メニューコマンドを使ってそのフレームを印刷したりできます。 -.LP -.nf -\f3 -.fl - \-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\- -.fl - |C| Detail | |P| Detail | -.fl - | | | | | | -.fl - | | | |\-| | -.fl - | | | |C| | -.fl - | | | | | | -.fl - | | | | | | -.fl - \-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\- -.fl - javadoc *.java javadoc java.lang java.awt -.fl -\fP -.fi - -.LP -.LP -HTML フレームが必要かどうかによって、次のどちらかのファイルを開始ページとしてロードします。 +HTML ե졼˴ƤʤϡΥե졼ӥ뤹ˤϡΥե졼ˡ֥եפʤФʤʤȤդƤե졼˥եͿˤϡΥե졼򥯥åޤΤ褦ˤȡ¿Υ֥饦ǤϡڡȤäƤΥե졼򥹥뤷ꡢְץ˥塼ޥɤȤäƤΥե졼Ǥޤ .LP +HTML ե졼बɬפɤˤäơΤɤ餫Υե򳫻ϥڡȤƥɤޤ .RS 3 .TP 2 o -\f2index.html\fP (フレームあり) +\f2index.html\fP (ե졼ढ) .TP 2 o -\f2overview\-summary.html\fP (フレームなし) +\f2overview\-summary.html\fP (ե졼ʤ) .RE - -.LP -.LP -\f3生成されるファイルの構造\fP -.LP -.LP -生成されるクラスファイルおよびインタフェースファイルは、Java ソースファイルおよびクラスファイルと同じディレクトリ階層に編成されます。1 つのサブパッケージにつき 1 つのディレクトリ、という構造になります。 -.LP .LP -たとえば、\f2java.applet.Applet\fP クラスに対して生成されるドキュメントは、\f2java/applet/Applet.html\fP に格納されます。生成先のディレクトリの名前が \f2apidocs\fP だとすると、java.applet パッケージのファイル構造は、その下に構築されます。前述のように、「frame」という語を名前に含むファイルは、すべて左上または左下のフレームに表示されます。それ以外の HTML ファイルは、すべて右側のフレームに表示されます。 +\f3եι¤\fP .LP -.RS 3 - +륯饹ե뤪ӥ󥿥եեϡJava ե뤪ӥ饹եƱǥ쥯ȥ곬ؤޤ1 ĤΥ֥ѥåˤĤ 1 ĤΥǥ쥯ȥꡢȤ¤ˤʤޤ .LP +ȤС \f2java.applet.Applet\fP 饹Ѥ줿ɥȤϡ \f2java/applet/Applet.html\fP ˳ǼޤΥǥ쥯ȥ̾ \f2apidocs\fP Ȥȡjava.applet ѥåΥե빽¤ϡβ˹ۤޤҤΤ褦ˡframeפȤ̾˴ޤեϡ٤ƺޤϺΥե졼ɽޤʳ HTML եϡ٤Ʊ¦Υե졼ɽޤ .LP -注 \- 下の階層図で、ディレクトリは\f3太字\fP (\f3bold\fP) で示してあります。アスタリスク (\f2*\fP) は、javadoc への引数がパッケージ名ではなくソースファイル名 (*.java) である場合に省略されるファイルおよびディレクトリを示しています。また、引数がソースファイル名の場合は、\f2package\-list\fP は作成されますが、内容は空です。doc\-files ディレクトリは、ソースツリー内に存在する場合にのみ、生成先に作成されます。 -.LP -.RE + \- γؿޤǡǥ쥯ȥ\f3\fP (bold) ǼƤޤꥹ (\f2*\fP) ϡjavadoc ؤΰѥå̾ǤϤʤե̾ (*.java) Ǥ˾άե뤪ӥǥ쥯ȥ򼨤Ƥޤޤե̾ξ硢 \f2package\-list\fP ϺޤȤ϶Ǥdoc\-files ǥ쥯ȥϡĥ꡼¸ߤˤΤߡ˺ޤ .nf \f3 .fl .fl -\fP\f3apidocs\fP 最上位ディレクトリ +\fP\f3apidocs\fP Ǿ̥ǥ쥯ȥ .fl - index.html HTML フレームを設定する初期ページ + index.html HTML ե졼ꤹڡ .fl - * overview\-summary.html 全パッケージのリスト。 先頭に要約文がある + * overview\-summary.html ѥåΥꥹȡƬʸˤդ .fl - overview\-tree.html 全パッケージのクラス階層のリスト + overview\-tree.html ѥåΥ饹ؤΥꥹ .fl - deprecated\-list.html 全パッケージの推奨されない API のリスト + deprecated\-list.html ѥå侩 API Υꥹ .fl - constant\-values.html 全パッケージの static フィールドの値のリスト + constant\-values.html ѥå static եɤͤΥꥹ .fl - serialized\-form.html 全パッケージの直列化された形式のリスト + serialized\-form.html ѥåľ󲽤줿Υꥹ .fl - * overview\-frame.html 全パッケージのリスト。 左上のフレームに表示される + * overview\-frame.html ѥåΥꥹȡΥե졼ǻѤ .fl - allclasses\-frame.html 全パッケージの全クラスのリスト。 左下のフレームに表示される + allclasses\-frame.html ѥå饹ΥꥹȡΥե졼ǻѤ .fl - help\-doc.html これらのページの構成を示すユーザーヘルプを表示する + help\-doc.html Υڡι򼨤桼إפΥꥹ .fl - index\-all.html \-splitindex オプションなしで作成されたデフォルト索引 + index\-all.html \-splitindex ץꤷʤä˺ǥեȤκ .fl - \f3index\-files\fP \-splitindex オプションを指定して作成されたディレクトリ + \f3index\-files\fP \-splitindex ץꤷ˺ǥ쥯ȥ .fl - index\-<number>.html \-splitindex オプションを指定して作成された索引ファイル + index\-<number>.html \-splitindex ץꤷ˺ե .fl - package\-list パッケージ名のリスト。 外部参照を解決するためだけに使用される + package\-list ѥå̾ΥꥹȡȤ褹뤿˻Ѥ .fl - stylesheet.css フォント、色、配置を定義する HTML スタイルシート + stylesheet.css եȡ֤ HTML 륷 .fl - \f3java\fP パッケージディレクトリ + \f3java\fP ѥåǥ쥯ȥ .fl - \f3applet\fP サブパッケージディレクトリ + \f3applet\fP ֥ѥåǥ쥯ȥ .fl - Applet.html Applet クラスのページ + Applet.html Applet 饹Υڡ .fl - AppletContext.html AppletContext インタフェースのページ + AppletContext.html AppletContext 󥿥եΥڡ .fl - AppletStub.html AppletStub インタフェースのページ + AppletStub.html AppletStub 󥿥եΥڡ .fl - AudioClip.html AudioClip インタフェースのページ + AudioClip.html AudioClip 󥿥եΥڡ .fl - * package\-summary.html このパッケージのクラスのリスト。 先頭に要約文がある + * package\-summary.html ΥѥåΥ饹ΥꥹȡƬʸˤդ .fl - * package\-frame.html このパッケージのクラスのリスト。 左下のフレームに表示される + * package\-frame.html ΥѥåΥ饹ΥꥹȡΥե졼ǻѤ .fl - * package\-tree.html このパッケージのクラス階層のリスト + * package\-tree.html ΥѥåΥ饹ؤΥꥹ .fl - package\-use このパッケージが使用されている場所のリスト + package\-use ΥѥåѤƤΥꥹ .fl - \f3doc\-files\fP イメージやサンプルのファイルが格納されるディレクトリ + \f3doc\-files\fP 䥵ץեݻǥ쥯ȥ .fl - \f3class\-use\fP API が使用されている場所のページを格納するディレクトリ + \f3class\-use\fP API ѤƤΥڡݻǥ쥯ȥ .fl - Applet.html Applet クラスを使用するページ + Applet.html Applet 饹λѤ˴ؤڡ .fl - AppletContext.html AppletContext インタフェースを使用するページ + AppletContext.html AppletContext 󥿥եλѤ˴ؤڡ .fl - AppletStub.html AppletStub インタフェースを使用するページ + AppletStub.html AppletStub 󥿥եλѤ˴ؤڡ .fl - AudioClip.html AudioClip インタフェースを使用するページ + AudioClip.html AudioClip 󥿥եλѤ˴ؤڡ .fl - \f3src\-html\fP ソースコードディレクトリ + \f3src\-html\fP ɥǥ쥯ȥ .fl - \f3java\fP パッケージディレクトリ + \f3java\fP ѥåǥ쥯ȥ .fl - \f3applet\fP サブパッケージディレクトリ + \f3applet\fP ֥ѥåǥ쥯ȥ .fl - Applet.html Applet ソースコードのページ + Applet.html Applet ɤΥڡ .fl - AppletContext.html AppletContext ソースコードのページ + AppletContext.html AppletContext ɤΥڡ .fl - AppletStub.html AppletStub ソースコードのページ + AppletStub.html AppletStub ɤΥڡ .fl - AudioClip.html AudioClip ソースコードのページ + AudioClip.html AudioClip ɤΥڡ .fl .fi - -.LP .SS -生成される API 宣言 -.LP -.LP -Javadoc ツールは、それぞれのクラス、インタフェース、フィールド、コンストラクタ、およびメソッドの説明の最初に、その API 用の宣言を生成します。 この宣言は、その API 項目の宣言です。たとえば、\f2Boolean\fP クラスの宣言は、次のようになります。 + API .LP +Javadoc ġϡ줾Υ饹󥿥եեɡ󥹥ȥ饯ӥ᥽åɤκǽˡ API ѤޤȤС \f2Boolean\fP 饹ϡΤ褦ˤʤޤ .LP \f2public final class Boolean\fP .br @@ -937,29 +593,20 @@ Javadoc ツールは、それぞれのクラス、インタフェース、フィ .br \f2implements Serializable\fP .LP -.LP -また、\f2Boolean.valueOf\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 -Javadoc ツールは、修飾子 \f2public\fP、\f2protected\fP、\f2private\fP、\f2abstract\fP、\f2final\fP、\f2static\fP、\f2transient\fP、および \f2volatile\fP を組み込むことができますが、\f2synchronized\fP と \f2native\fP を組み込むことができません。これら後者の 2 つの修飾子は、実装の詳細と見なされているため、API 仕様には含まれません。 -.LP -.LP -API では、並行性のセマンティクスについて、キーワード \f2synchronized\fP に依存するのではなく、コメントによる主説明としてドキュメント化する必要があります。 たとえば、「1 つの \f2Enumeration\fP を複数のスレッドから並行して使用することはできない」などのコメントを記述します。ドキュメントには、これらのセマンティクスを実現する方法を記述するべきではありません。たとえば、\f2Hashtable\fP はスレッドに対して安全である必要がありますが、「エクスポートされるすべてのメソッドを同期化すればそれを実現できる」のようには指定する根拠はありません。バケットレベルで内部的に同期化する権利を残しておく必要があります。 そうすれば、より高度な並行性が提供されます。 -.LP -.SH "ドキュメンテーションコメント" -.LP -.LP -オリジナルの「ドキュメンテーションコメントの仕様」は、「関連項目」を参照してください。 +API Ǥϡ¹ޥƥˤĤơ \f2synchronized\fP ˰¸ΤǤϤʤȤμȤƥɥȲ٤Ǥ \f2ȤС1 Ĥ Enumeration \fP ʣΥåɤ¹ԤƻѤ뤳ȤϤǤʤפʤɤȵҤޤɥȤˤϡΥޥƥ¸ˡ򵭽Ҥ٤ǤϤޤ󡣤ȤС \f2Hashtable\fP ϥåɤФưǤɬפޤ֥ݡȤ뤹٤ƤΥ᥽åɤƱФ¸ǤפΤ褦ˤϻꤹ뺬Ϥޤ󡣥Хåȥ٥ŪƱ븢ĤƤɬפޤС٤¹󶡤ޤ +.SH "ɥơ󥳥" .LP +ꥸʥΡ֥ɥơ󥳥Ȥλ͡פϡִϢܡפ򻲾ȤƤ .SS -ソースコードへのコメントの挿入 -.LP -.LP -ソースコードの任意のクラス、インタフェース、メソッド、コンストラクタ、またはフィールドの宣言の前に、ドキュメンテーションコメント ("doc comments") を記述することができます。各パッケージにドキュメンテーションコメントを作成できます。 構文は若干異なりますが、概要にもドキュメンテーションコメントを作成できます。ドキュメンテーションコメントは、非公式に「Javadoc コメント」と呼ばれています (この用語は商標関連の使用法に違反)。ドキュメンテーションコメントは、コメントの始まりを示す文字列 \f2/**\fP と、コメントの終わりを示す文字列 \f2*/\fP の間にある文字で構成されます。行の先頭のアスタリスクは、各行に記述できます。 詳細は、以下で説明します。コメントのテキストは、複数行にわたって記述できます。 +ɤؤΥȤ .LP +ɤǤդΥ饹󥿥ե᥽åɡ󥹥ȥ饯ޤϥեɤˡɥơ󥳥 ("doc comments") 򵭽Ҥ뤳ȤǤޤƥѥå˥ɥơ󥳥ȤǤޤʸϼ㴳ۤʤޤפˤɥơ󥳥ȤǤޤɥơ󥳥ȤϡˡJavadoc ȡפȸƤФƤޤ (ѸϾɸϢλˡ˰ȿ)ɥơ󥳥ȤϡȤϤޤ򼨤ʸ \f2/**\fP ȡȤ򽪤򼨤ʸ \f2*/\fP δ֤ˤʸ鹽ޤԤƬΥꥹϡƹԤ˵ҤǤޤܺ٤ϡʲޤȤΥƥȤϡʣԤˤ錄äƵҤǤޤ .nf \f3 .fl @@ -973,26 +620,19 @@ API では、並行性のセマンティクスについて、キーワード \f2 .fl \fP .fi - -.LP -.LP -次のようにして 1 行に記述すると、スペースを節約できます。 .LP +Τ褦ˤ 1 Ԥ˵ҤȡڡǤޤ .nf \f3 .fl -/** This comment takes up only one line. */ +/** This comment takes up only one line.*/ .fl \fP .fi - -.LP -.LP -\f3コメントの配置\fP \- ドキュメンテーションコメントは、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドの宣言の直前に置かれているときにだけ認識されます。 クラスの例、メソッドの例、およびフィールドの例を参照してください。メソッドの本体に置かれているドキュメンテーションコメントは無視されます。javadoc ツールでは、1 つの宣言文につき 1 つのドキュメンテーションコメントだけが認識されます。 -.LP .LP -よくある間違いは、クラスのコメントとクラスの宣言の間に \f2import\fP 文を置いてしまうことです。このような記述はしないでください。 このようなクラスコメントは無視されます。 +\f3Ȥ\fP \- ɥơ󥳥Ȥϡ饹󥿥ե󥹥ȥ饯᥽åɡޤϥեɤľ֤ƤȤˤǧޤ饹㡢᥽åɤ㡢ӥեɤ򻲾ȤƤ᥽åɤΤ֤Ƥɥơ󥳥Ȥ̵뤵ޤjavadoc ġǤϡ1 ĤʸˤĤ 1 ĤΥɥơ󥳥Ȥǧޤ .LP +褯ְ㤤ϡ饹Ȥȥ饹δ֤ \f2import\fP ʸ֤ƤޤȤǤΤ褦ʵҤϤʤǤΤ褦ʥ饹Ȥ̵뤵ޤ .nf \f3 .fl @@ -1014,11 +654,8 @@ API では、並行性のセマンティクスについて、キーワード \f2 .fl \fP .fi - -.LP -.LP -\f3ドキュメンテーションコメントは主説明のあとにタグセクションが続く\fP \- コメントの開始区切り文字である \f2/**\fP のあとからタグセクションまでが主説明になります。タグセクションは、先頭文字が \f2@\fP である行で定義される最初のブロックタグから始まります (行の先頭のアスタリスク、空白、および行の先頭の区切り文字 \f2/**\fP は除く)。主説明を記述せず、タグセクションだけのコメントを記述することもできます。主説明は、タグセクション以降に続けることはできません。タグの引数は、複数行にわたって記述できます。タグの数に制限はありません。 何回も記述できるタグと、1 回しか記述できないタグがあります。例えば、次の \f2@see\fP からタグセクションが始まります。 .LP +\f3ɥơ󥳥ȤϼΤȤ˥³ \- Ȥγ϶ڤʸǤ\fP \f2/**\fP ΤȤ饿ޤǤˤʤޤϡԤƬˤǽ \f2@\fP ǽΥ֥åϤޤޤ (ƬΥꥹƬζڤʸ \f2/**\fP Ͻ)򵭽ҤΥȤ򵭽Ҥ뤳ȤǤޤϡʹߤ³뤳ȤϤǤޤ󡣥ΰϡʣԤˤ錄äƵҤǤޤο¤Ϥޤ󡣲⵭ҤǤ륿ȡ1 󤷤ҤǤʤޤȤС \f2@see\fP ϡ򳫻ϤƤޤ .nf \f3 .fl @@ -1032,11 +669,8 @@ API では、並行性のセマンティクスについて、キーワード \f2 .fl \fP .fi - -.LP -.LP -\f3ブロックタグとインラインタグ\fP \- 「タグ」は、Javadoc が処理できる、ドキュメンテーションコメント内の特別なキーワードです。\f2@tag\fP のように記述するブロックタグ (「スタンドアロンタグ」とも呼ばれる) と、インラインタグ (\f2{@tag}\fP のように中括弧で囲んで記述) の 2 種類のタグがあります。ブロックタグが正しく解釈されるためには、行の先頭のアスタリスク、空白、区切り文字 (\f2/**\fP) を除いて、行の先頭に置かなければなりません。これは、テキスト内のそれ以外の位置で \f2@\fP 文字を使用しても、タグの開始としては解釈されないことを意味しています。行の最初に \f2@\fP 文字を使用してもタグとして解釈されないようにするには、HTML エンティティーの「\f2@\fP」を使用してください。それぞれのブロックタグには、対応付けられたテキストがあります。 このテキストは、タグのあとから、次のタグの前、またはドキュメンテーションコメントの最後までの間に記述されたテキスト (タグやコメント区切り文字を除く) です。この関連テキストは複数行にわたって記述できます。インラインタグは、テキストを記述できる場所であればどこにでも置くことができ、正しく解釈されます。次のコード例には、ブロックタグ \f2@deprecated\fP と、インラインタグ \f2{@link}\fP が含まれています。 .LP +\f3֥åȥ饤󥿥\fP \- \f2֥\fPϡJavadoc Ǥ롢ɥơ󥳥̤ʥɤǤˤ 2 ढޤ1 Ĥ @tag Τ褦ɽ֥å \f2(ɸॿפȤƤФ)\fP ⤦ 1 Ĥ {@tag} Τ褦̤ǰϤޤ륤饤󥿥 \f2Ǥ\fP֥åᤵ뤿ˤϡԤƬΥꥹ򡢶ڤʸ (\f2/**\fP) ơԤƬ֤ʤФʤޤ󡣤ϡ \f2@\fP ʸƥ̤ξǻѤˤϥγϤȤƲᤵʤȤ̣ƤޤԤƬ \f2@\fP ʸѤƤ⤽줬ᤵʤ褦ˤˤϡHTML ƥƥ \f2@\fP Ѥޤ줾Υ֥åˤϡбդ줿ƥȤޤΥƥȤϡΤȤ顢Υޤϥɥơ󥳥ȤκǸޤǤδ֤˵Ҥ줿ƥ (䥳ȶڤʸ) ǤδϢƥȤʣԤˤ錄äƵҤǤޤ饤󥿥ϡƥȤ򵭽ҤǤǤФɤˤǤ֤ȤǤᤵޤˤϥ֥å \f2@deprecated\fP ȥ饤󥿥 \f2{@link}\fP ޤޤƤޤ .nf \f3 .fl @@ -1048,17 +682,12 @@ API では、並行性のセマンティクスについて、キーワード \f2 .fl \fP .fi - -.LP .LP -\f3コメントは HTML で記述する\fP \- テキストは HTML 形式で記述しなければなりません。 これは、HTML のエンティティーを使う必要があること、および HTML タグを使用できることを意味します。記述する HTML のバージョンとしては、使用するブラウザがサポートする任意のバージョンを使用できます。 標準ドックレットは、カスケーディングスタイルシート (CSS) とフレームを含め、すべての部分 (ドキュメンテーションコメント以外の部分) で HTML 3.2 に準拠したコードを生成するように作成されています。ただし、フレームセット対応のため、生成される各ファイルには「HTML 4.0」と記述されます。 +\f3Ȥ HTML ǵҤ\fP \- ƥȤ HTML ǵҤʤФʤޤ󡣤ϡHTML ΥƥƥȤɬפ뤳ȡ HTML ѤǤ뤳Ȥ̣ޤҤ HTML ΥСȤƤϡѤ֥饦ݡȤǤդΥСѤǤޤɸɥååȤϡǥ󥰥륷 (CSS) ȥե졼ޤᡢ٤Ƥʬ (ɥơ󥳥Ȱʳʬ) HTML 3.2 ˽򤷤ɤ褦˺Ƥޤե졼ॻåбΤᡢƥեˤϡHTML 4.0פȵҤޤ .LP +ȤС꾮 (\f2<\fP) 椪Ӥ礭 (\f2>\fP) Υƥƥϡ \f2<\fP \f2>\fP ȵҤ٤ǤƱͤˡѥ (\f2&\fP) \f2&\fP ȵҤ٤ǤǤϥܡɤ HTML \f2<b>\fP Ƥޤ .LP -たとえば、より小さい (\f2<\fP) およびより大きい (\f2>\fP) という記号は\f2<\fP および \f2>\fP として記述する必要があります。同様に、アンパサンド (\f2&\fP) は、\f2&\fP と記述する必要があります。次の例では、ボールドの HTML タグ \f2<b>\fP を使っています。 -.LP -.LP -次に、ドキュメンテーションコメントを示します。 -.LP +ˡɥơ󥳥Ȥ򼨤ޤ .nf \f3 .fl @@ -1072,20 +701,12 @@ API では、並行性のセマンティクスについて、キーワード \f2 .fl \fP .fi - -.LP -.LP -\f3行頭のアスタリスク\fP \- Javadoc は、ドキュメンテーションコメントを解析するときに、各行の先頭にあるアスタリスク (\f2*\fP) をすべて破棄します。 また、最初のアスタリスク (\f2*\fP) より前の空白とタブも破棄します。バージョン 1.4 からは、行の先頭のアスタリスクを省略しても、先頭の空白文字は削除されなくなりました。このため、コード例を直接ドキュメンテーションコメントの \f2<PRE>\fP タグ内にペーストしても、インデントが保持されます。通常、ブラウザは、空白文字をタブよりも一律に解釈します。インデントは区切り文字 \f2/**\fP または \f2<PRE>\fP タグよりも左寄りになります。 -.LP -.LP -\f3最初の文\fP \- 各ドキュメンテーションコメントの最初の文は、宣言されているエンティティーに関する簡潔かつ完全な要約文である必要があります。この「最初の文」は、直後にスペース、タブ、または改行が続く最初のピリオド (ロケールが英語に設定されている場合)、または最初のタグがある位置で終わります。最初の文は、Javadoc ツールによって HTML ページの最初にあるメンバーの概要の部分にコピーされます。 .LP +\f3ƬΥꥹ\fP \- javadoc ˤɥơ󥳥ȤβϻˡƹԤƬˤ륢ꥹ (\f2*\fP) ʸ˴ޤǽΥꥹ (\f2*\fP) ʸˤ䥿֤˴ޤС 1.4 ϡԤƬΥꥹάƤ⡢ƬζʸϺʤʤޤΤᡢľܥɥơ󥳥Ȥ \f2<PRE>\fP ˥ڡȤƤ⡢ǥȤݻޤ̾֥饦ϡʸ򥿥֤Χ˲ᤷޤǥȤεϺޡˤʤޤ (ڤʸ \f2/**\fP ޤ \f2<PRE>\fP ǤϤʤ) .LP -\f3複数フィールドの宣言\fP \- Java では、1 つの文で複数のフィールドを宣言できます。 ただし、この文には、1 つのドキュメンテーションコメントしか記述できません。 そのコメントが、すべてのフィールドに対してコピーされます。したがって、フィールドごとにドキュメンテーションコメントを記述する必要がある場合は、各フィールドを別々の文で宣言しなければなりません。たとえば、次のドキュメンテーションコメントは、1 つの宣言として記述すると不適切です。 この場合は、宣言を 2 つに分けることをお勧めします。 -.LP -.RS 3 - +\f3ǽʸ\fP \- ƥɥơ󥳥ȤκǽʸϡƤ륨ƥƥ˴ؤʷ餫ĴʸǤɬפޤΡֺǽʸפϡľ˥ڡ֡ޤϲԤ³ǽΥԥꥪ (뤬ѸꤵƤ)ޤϺǽΥ֤ǽޤǽʸϡJavadoc ġˤä HTML ڡκǽˤСγפʬ˥ԡޤ .LP +\f3ʣեɤ\fP \- Java Ǥϡ1 ĤʸʣΥեɤǤޤʸˤϡ1 ĤΥɥơ󥳥ȤҤǤޤ󡣤ΥȤ٤ƤΥեɤФƥԡޤäơեɤȤ˥ɥơ󥳥Ȥ򵭽Ҥɬפϡƥեɤ̡ʸʤФʤޤ󡣤ȤСΥɥơ󥳥Ȥϡ1 ĤȤƵҤŬڤǤξϡ 2 Ĥʬ뤳Ȥ򤪴ᤷޤ .nf \f3 .fl @@ -1099,145 +720,105 @@ public int x, y; // Avoid this .fl \fP .fi -.RE - -.LP -.LP -上記のコードからは、次のようなドキュメントが生成されます。 -.LP -.RS 3 - .LP +嵭ΥɤϡΤ褦ʥɥȤޤ .nf \f3 .fl public int \fP\f3x\fP .fl .fi - -.LP .RS 3 The horizontal and vertical distances of point (x,y) .RE - -.LP .nf \f3 .fl public int \fP\f3y\fP .fl .fi - -.LP .RS 3 The horizontal and vertical distances of point (x,y) .RE - -.LP -.RE -.LP -\f3見出しタグはなるべく使用しない\fP \- メンバーに対してドキュメンテーションコメントを記述するときには、<H1> や <H2> などの HTML 見出しタグは、なるべく使わないでください。 Javadoc ツールは、完全に構造化されたドキュメントを作成するので、このような構造化タグが使われていると、生成ドキュメントの形式が悪影響を受けることがあります。ただし、クラスやパッケージのコメントでは、これらの見出しタグを使って独自の構造を組み立ててかまいません。 .LP +\f3ФϤʤ٤Ѥʤ\fP \- СФƥɥơ󥳥Ȥ򵭽ҤȤˤϡ<H1> <H2> ʤɤ HTML Фϡʤ٤ȤʤǤ Javadoc ġϡ˹¤줿ɥȤΤǡΤ褦ʹ¤ȤƤȡɥȤηƶ뤳Ȥޤ饹ѥåΥȤǤϡθФȤäȼι¤ȤΩƤƤޤޤ .SS -メソッドコメントの自動コピー -.LP -.LP -Javadoc ツールには、次の 2 つの場合に、クラスおよびインタフェースのメソッドコメントをコピーまたは「継承」する機能があります。コンストラクタ、フィールド、および入れ子のクラスは、ドキュメンテーションコメントを継承しません。 +᥽åɥȤμưԡ .LP +Javadoc ġˤϡ 2 Ĥξˡ饹ӥ󥿥եΥ᥽åɥȤ򥳥ԡޤϡַѾפ뵡ǽޤ󥹥ȥ饯եɡҤΥ饹ϡɥơ󥳥ȤѾޤ .RS 3 .TP 2 o -\f3自動的にコメントを継承して、見つからないテキストを埋める\fP \- 主説明、または \f2@return\fP タグ、\f2@param\fP タグ、\f2@throws\fP タグが、メソッドコメントで見つからない場合、Javadoc ツールは、オーバーライドしたメソッドまたは実装している場合はそのメソッドから、対応する主説明またはタグコメントを、次のアルゴリズムに従ってコピーします。 +\f3ưŪ˥ȤѾƸĤʤƥȤ\fP \- \f2@return\fP \f2@param\fP ޤ \f2@throws\fP ᥽åɥȤ˸Ĥʤ硢Javadoc ġϡС饤ɤޤϼƤϤоݤȤʤ᥽åɤ顢бޤϥȤ򡢼Υ르ꥺ˽äƥԡޤ .LP -厳密には、特定のパラメータの \f2@param\fP タグが見つからない場合、そのパラメータのコメントが、上位の継承階層のメソッドからコピーされます。特定の例外の \f2@throws\fP タグが見つからない場合、その例外が宣言されている場合にかぎり、その \f2@throws\fP タグがコピーされます。 +̩ˤϡΥѥ᡼ \f2@param\fP Ĥʤ硢Υѥ᡼ΥȤ̤ηѾؤΥ᥽åɤ饳ԡޤ㳰 \f2@throws\fP Ĥʤ硢㳰Ƥˤꡢ \f2@throws\fP ԡޤ .LP -この動作はバージョン 1.3 以前の動作とは対照的です。 これまでのバージョンでは、主説明またはタグが存在すれば、コメントは一切継承されませんでした。 +ưϥС 1.3 ưȤоŪǤޤǤΥСǤϡޤϥ¸ߤСȤϰڷѾޤǤ .TP 2 o -\f3{@inheritDoc} タグを持つコメントを明示的に継承する\fP \- インラインタグ \f2{@inheritDoc}\fP を、メソッドの主説明、または \f2@return\fP、\f2@param\fP、\f2@throws\fP タグコメントに挿入します。 継承した対応する主説明またはタグコメントは、その箇所にコピーされます。 +\f3{@inheritDoc} ޤॳȤŪ˷Ѿ\fP \- 饤󥿥 \f2{@inheritDoc}\fP 򡢥᥽åɤμޤ \f2@return\fP \f2@param\fP \f2@throws\fP Τ줫ΥޤбѾ줿ޤϥȤΰ֤˥ԡޤ .RE - -.LP .LP -ドキュメンテーションコメントを実際にコピーに利用するには、継承したメソッドのソースファイルが \-sourcepath で指定したパスだけに置かれていることが必要になります。コマンド行で、クラスもパッケージも渡す必要はありません。この点は、クラスがドキュメント化されるクラスでなければならなかった 1.3.x 以前のリリースと異なります。 -.LP -.LP -\f3クラスおよびインタフェースからの継承\fP \- クラスおよびインタフェースから継承する次の 3 つの場合に、コメントの継承が行われます。 +ɥơ󥳥Ȥºݤ˥ԡѤˤϡѾ᥽åɤΥե뤬 \-sourcepath ǻꤷѥ֤Ƥ뤳ȤɬפˤʤޤޥɹԤǡ饹ѥåϤɬפϤޤ󡣤ϡ饹ɥȲ륯饹ǤʤФʤʤä 1.3.x Υ꡼Ȱۤʤޤ .LP +\f3饹ӥ󥿥եηѾ\fP \- 饹ӥ󥿥եѾ뼡 3 ĤξˡȤηѾԤޤ .RS 3 .TP 2 o -クラスのメソッドがスーパークラスのメソッドをオーバーライドしている +饹Υ᥽åɤѡ饹Υ᥽åɤ򥪡С饤ɤƤ .TP 2 o -インタフェースのメソッドがスーパーインタフェースのメソッドをオーバーライドしている +󥿥եΥ᥽åɤѡ󥿥եΥ᥽åɤ򥪡С饤ɤƤ .TP 2 o -クラスのメソッドがインタフェースのメソッドを実装している +饹Υ᥽åɤ󥿥եΥ᥽åɤƤ .RE - -.LP .LP -最初の 2 つのケース (メソッドがオーバーライドしている場合) では、Javadoc ツールは、そのコメントが継承されているかどうかにかかわらず、オーバーライドしているメソッドのドキュメント内に「オーバーライド」という小見出しを生成し、オーバーライドされているメソッドへのリンクを書き込みます。 +ǽ 2 ĤΥ (᥽åɤС饤ɤƤ) ǤϡJavadoc ġϡΥȤѾƤ뤫ɤˤ餺С饤ɤƤ᥽åɤΥɥˡ֥С饤ɡפȤФС饤ɤƤ᥽åɤؤΥ󥯤񤭹ߤޤ .LP +3 ܤΥ (Υ饹Υ᥽åɤ󥿥եΥ᥽åɤƤ) Ǥϡjavadoc ġϡС饤ɤƤ᥽åɤΥɥˡפȤФƤ᥽åɤؤΥ󥯤񤭹ߤޤϡȤѾƤ뤫ɤˤޤ .LP -3 つ目のケース (特定のクラスのメソッドがインタフェースのメソッドを実装している場合) では、javadoc ツールは、オーバーライドしているメソッドのドキュメント内に「定義」という小見出しを生成し、実装されているメソッドへのリンクを書き込みます。これは、コメントが継承されているかどうかにかかわりません。 -.LP -.LP -\f3メソッドの説明が継承されるアルゴリズム\fP \- あるメソッドにドキュメンテーションコメントが記述されていない場合、または {@inheritDoc} タグがある場合、Javadoc ツールは、次のようなアルゴリズムを使用して適切なコメントを検索します。 このアルゴリズムは、もっとも適切なドキュメンテーションコメントを検索できるように設計されており、スーパークラスよりもインタフェースが優先されるようになっています。 -.LP +\f3᥽åɤѾ륢르ꥺ\fP \- ᥽åɤ˥ɥơ󥳥ȤҤƤʤ硢ޤ {@inheritDoc} 硢Javadoc ġϡΤ褦ʥ르ꥺѤŬڤʥȤ򸡺ޤ Υ르ꥺϡäȤŬڤʥɥơ󥳥Ȥ򸡺Ǥ褦߷פƤꡢѡ饹⥤󥿥եͥ褵褦ˤʤäƤޤ .RS 3 .TP 3 1. -直接に実装されている (または、拡張されている) インタフェースを、メソッドの宣言で implements (または extends) キーワードのあとに登場する順序で、1 つずつ調べる。このメソッドについて最初に見つかったドキュメンテーションコメントを採用する +ľܤ˼Ƥ (ޤϡĥƤ) 󥿥ե򡢥᥽åɤ implements (ޤ extends) ɤΤȤо줹ǡ1 ĤĴ٤롣Υ᥽åɤˤĤƺǽ˸Ĥäɥơ󥳥ȤѤ .TP 3 2. -手順 1 でドキュメンテーションコメントが見つからなかった場合は、直接実装されている (または、拡張されている) インタフェースのそれぞれに対して、このアルゴリズム全体を再帰的に適用する (その際の順序は、手順 1 でインタフェースを調べたときの順序と同じ) + 1 ǥɥơ󥳥ȤĤʤäϡľܼƤ (ޤϡĥƤ) 󥿥եΤ줾ФơΥ르ꥺΤƵŪŬѤ (κݤνϡ 1 ǥ󥿥եĴ٤ȤνƱ) .TP 3 3. -手順 2 でドキュメンテーションコメントが見つからなかった場合で、このクラスが Object 以外のクラスである (インタフェースではない) 場合は、次のように処理する + 2 ǥɥơ󥳥ȤĤʤäǡΥ饹 Object ʳΥ饹Ǥ (󥿥եǤϤʤ) ϡΤ褦˽ .RS 3 .TP 3 a. -スーパークラスにこのメソッドについてのドキュメンテーションコメントが記述されていれば、そのコメントを採用する +ѡ饹ˤΥ᥽åɤˤĤƤΥɥơ󥳥ȤҤƤСΥȤѤ .TP 3 b. -手順 3a でドキュメンテーションコメントが見つからなかった場合は、スーパークラスに対して、このアルゴリズム全体を適用する + 3a ǥɥơ󥳥ȤĤʤäϡѡ饹ФơΥ르ꥺΤŬѤ .RE .RE - +.SH "javadoc " .LP -.SH "javadoc タグ" -.LP -.LP -Javadoc ツールは、Java のドキュメンテーションコメント内に埋め込まれた特別なタグを解析します。これらのドキュメンテーションタグを使うと、書式の整った完全な API ドキュメントをソースコードから自動的に生成できます。タグは、単価記号 (\f2@\fP) で始まり、大文字と小文字が区別されます。 これらのタグは、定められたとおりの大文字と小文字を使用して記述する必要があります。タグは、行の先頭 (先行する空白と省略可能なアスタリスクは除く) に置かなければなりません。慣例として、同じ名前のタグは 1 か所にまとめて記述するようにします。たとえば、\f2@see\fP タグが複数ある場合は、すべてを 1 か所にまとめて記述します。 -.LP -.LP -タグには 2 つのタイプがあります。 +Javadoc ġϡJava Υɥơ󥳥ޤ줿̤ʥϤޤΥɥơ󥿥Ȥȡ񼰤ä API ɥȤ򥽡ɤ鼫ưŪǤޤϡ֥åȥޡ׵ (\f2@\fP) ǻϤޤꡢʸȾʸζ̤ޤϡʸȾʸѤơɽƤȤϤɬפޤϡԤƬ (ԤȾάǽʥꥹϽ) ֤ʤФʤޤ󡣴ȤơƱ̾Υ 1 ˤޤȤƵҤ褦ˤޤȤС \f2@see\fP Ϥ٤Ʊ֤ޤ .LP +ˤ 2 ĤΥפޤ .RS 3 .TP 2 o -\f3ブロックタグ\fP \- 主説明に続くタグセクション内にのみ記述可能。ブロックタグは、\f2@tag\fP の形式をとります。 +\f3֥å\fP \- ³ˤΤߵҲǽ֥åϡ \f2@tag\fP ηȤޤ .TP 2 o -\f3インラインタグ\fP \- コメントの主説明内またはブロックタグのコメント内に記述可能。インラインタグは、\f2{@tag}\fP のように中括弧で囲みます。 +\f3饤󥿥\fP \- ⡢ޤϥ֥åΥ˵Ҳǽ饤󥿥ϡ \f2{@tag}\fP.Τ褦̤ǰϤߤޤ .RE - -.LP .LP -今後のリリースで導入されるタグについては、 +Υ꡼Ƴ륿ˤĤƤϡ .na -\f2「Proposed Javadoc Tags」\fP @ +\f2Proposed Javadoc Tags\fP @ .fi -http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください。 -.LP -.LP -現時点で有効なタグは、次のとおりです。 -.LP -.RS 3 - +http://java.sun.com/j2se/javadoc/proposed\-tags.html򻲾ȤƤ .LP +ͭʥϡΤȤǤ .LP .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 @@ -1267,7 +848,7 @@ http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -\f3導入された JDK/SDK のバージョン\fP +\f3Ƴ줿 JDK/SDK ΥС\fP .br .di .nr a| \n(dn @@ -1278,7 +859,7 @@ http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください .nf .ll \n(34u .nr 80 0 -.nr 38 \w\f3タグ\fP +.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 @@ -1373,7 +954,7 @@ http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください .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 1124 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 867 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -1392,7 +973,7 @@ http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'\f3タグ\fP\h'|\n(41u' +\&\h'|\n(40u'\f3\fP\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -1486,74 +1067,38 @@ http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください .rm a+ .TE .if \n-(b.=0 .nr c. \n(.c-\n(d.-44 - -.LP -.RE -.LP -カスタムタグについては、\-tag オプションを参照してください。 .LP +ॿˤĤƤϡ\-tag ץ򻲾ȤƤ .RS 3 .TP 3 @author\ name\-text -\-author オプションが使われている場合、生成ドキュメントに「著者」の項目を追加し、指定された \f2name\-text\fP を書き込みます。1 つのドキュメンテーションコメントに複数の \f2@author\fP タグを含めることができます。1 つの \f2@author\fP タグに 1 つの名前を指定することも、1 つのタグに複数の名前を指定することもできます。前者の場合は、Javadoc ツールによって、名前と名前の間にコンマ (\f2,\fP) とスペースが挿入されます。後者の場合は、テキスト全体が、解析されることなく、生成ドキュメントにそのままコピーされます。したがって、コンマではなく、各言語に対応した名前区切り文字を使う必要があるときは、1 つのタグに複数の名前を指定してください。 +\-author ץ󤬻ѤƤ硢ꤵ줿 \f2name\-text\fP ޤ [] ȥɥȤɲäޤ1 ĤΥɥơ󥳥Ȥʣ \f2@author\fP ޤ뤳ȤǤޤ1 Ĥ \f2@author\fP 1 Ĥ̾ꤹ뤳Ȥ⡢ʣ̾ꤹ뤳ȤǤޤԤξϡJavadoc ġˤä̾̾δ֤˥ (\f2,\fP) ȶޤԤξϡƥΤϤ뤳ȤʤɥȤˤΤޤޥԡޤäơޤǤϤʤƸб̾ڤʸȤɬפȤϡ1 ĤΥʣ̾ꤷƤ .RE - .LP -.RS 3 - -.LP -.LP -詳細については、「タグを使用できる場所」および +ܺ٤ˤĤƤϡ֥ѤǤפ .na -\f2@author タグのドキュメント\fP @ +\f2@author Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@authorを参照してください。 +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@author򻲾ȤƤ .LP -.LP - -.LP -.RE .RS 3 .TP 3 -@deprecated\ deprecated\-text -.RS 3 - -.LP -.LP -注: JDK 5.0 から、 -.na -\f2@Deprecated 注釈\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/deprecation.htmlを使って特定のプログラム要素を非推奨にできるようになりました。 -.LP -.RE +@deprecated\ deprecated\-text : @Deprecated ȤäΥץǤ侩ˤǤޤ .RE -.RS 3 - -.LP -.LP -この API は動作し続けますが、この API を使用するべきではないことを示すコメントを追加します。Javadoc ツールは、\f2deprecated\-text\fP を主説明の前に移動してイタリックにし、その前にボールドの警告「推奨されません。」を追加します。このタグは、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 .LP + API ư³ޤ API Ѥ٤ǤϤʤȤ򼨤ȤɲäޤJavadoc ġϡ \f2deprecated\-text\fP ˰ưƥåˤ˥ܡɤηٹֿ侩ޤ󡣡פɲäޤΥϡ٤ƤΥɥơ󥳥ȡĤޤ공סѥå饹󥿥ե󥹥ȥ饯᥽åɡӥեɤͭǤ .LP -\f2deprecated\-text\fP の最初の文では、少なくとも、その API が推奨されなくなった時期と、代替使用するべき API を読者に提示する必要があります。Javadoc ツールは、この最初の文だけを、概要セクションと索引にコピーします。そのあとの文では、その API が推奨されない理由を説明することもできます。また、代わりの API を指し示す \f2{@link}\fP タグ (Javadoc 1.2 以降の場合) を含める必要があります。 次のように記述します。 +\f2deprecated\-text\fP κǽʸǤϡʤȤ⡢ API 侩ʤʤäȡػѤ٤ API ɼԤ󼨤ɬפޤJavadoc ġϡκǽʸ򡢳ץȺ˥ԡޤΤȤʸǤϡ API 侩ʤͳ뤳ȤǤޤAPI ؤ \f2{@link}\fP ( Javadoc 1.2 ʹߤξ) ޤ٤Ǥ .LP -.LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@deprecated タグのドキュメント\fP @ +\f2@deprecated Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@deprecatedを参照してください。 -.LP +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@deprecated򻲾ȤƤ .RS 3 .TP 2 o -Javadoc 1.2 以降では、\f2{@link}\fP タグを使用します。これにより、必要な場所にインラインでリンクを作成できます。例を示します。 -.RE - -.LP -.RS 3 - -.LP +Javadoc 1.2 ʹߤǤ \f2{@link}\fP Ѥޤˤꡢɬפʾ˥饤ǥ󥯤ǤޤȤС .nf \f3 .fl @@ -1567,106 +1112,71 @@ Javadoc 1.2 以降では、\f2{@link}\fP タグを使用します。これによ .fl \fP .fi -.RE - -.LP -.RS 3 .TP 2 o -Javadoc 1.1 では、各 \f2@deprecated\fP タグに対して \f2@see\fP タグ (インラインにはできない) を記述するのが標準の形式です。 +Javadoc 1.1 ξɸϡ \f2@see\fP (饤Բ) \f2@deprecated\fP Ȥ˺뤳ȤǤ .RE - -.LP .LP -推奨されないタグについての詳細は、 +侩ʤˤĤƤξܺ٤ϡ .na -\f2@deprecated タグ\fP @ +\f2@deprecated \fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/index.htmlのドキュメントを参照してください。 -.LP -.LP - +http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/index.htmlΥɥȤ򻲾ȤƤ .LP -.RE .RS 3 .TP 3 {@code\ text} -\f2<code>{@literal}</code>\fP と同等です。 -.RE - -.LP -.RS 3 - -.LP -.LP -テキストを HTML マークアップまたは入れ子になった javadoc タグとして解釈せずに、\f2text\fP を \f2code\fP フォントで表示します。これにより doc コメントでは、パラメータの種類 (\f2<Object>\fP)、不等号 (\f23 < 4\fP)、または矢印 (\f2<\-\fP) などで、HTML エンティティー (\f2<\fP および \f2>\fP) ではなく、通常の山括弧 (\f2<\fP および \f2>\fP) を使用できます。たとえば doc コメントのテキスト +\f2<code>{@literal}</code>\fP ƱǤ .LP +ƥȤ \f2HTML ޡå\fP ޤ \f2Ҥˤʤä javadoc \fP ȤƲ᤻ˡtext 򥳡ɥեȤɽޤΤᡢɥơ󥳥̾λ (\f2<\fP \f2>\fP) HTML ƥƥ (\f2<\fP \f2>\fP) ˻ѤǤޤȤСѥ᡼η (\f2<Object>\fP) (\f23 < 4\fP) (\f2<\-\fP) ʤɤǤȤСΥɥơ󥳥 .nf \f3 .fl \fP\f4{@code A<B>C}\fP\f3 .fl - + .fl \fP .fi - -.LP -.LP -は、生成された HTML ページで、次のようにそのまま表示されます。 .LP +ϡ줿 HTML ڡǡΤ褦ˤΤޤɽޤ .nf \f3 .fl \fP\f4A<B>C\fP\f3 .fl - + .fl \fP .fi - -.LP -.LP -注目すべき点として、\f2<B>\fP は太字であると解釈されませんが、コードフォントになります。 -.LP .LP -コードフォントなしで同じ機能を実現するには、\f2{@literal}\fP を使用します。 +ܤ٤ϡ \f2<B>\fP ȤƲᤵ줺ΥեȤϥɥեȤˤʤ롢ȤǤ .LP +ɥեȤʤƱǽ¸ˤϡ\f2{@literal}\fP Ѥޤ .LP - -.LP -.RE -.RS 3 .TP 3 {@docRoot} -生成されるページから見た、生成ドキュメントの (生成先の) ルートディレクトリへの相対パスを表します。このタグは、著作権のページや会社のロゴなど、生成されるすべてのページから参照するファイルを組み込むときに便利です。通常は、各ページの下部から著作権のページにリンクします。 -.RE - -.LP -.RS 3 - -.LP -.LP -この \f2{@docRoot}\fP タグは、コマンド行からも、ドキュメンテーションコメントの中でも使用できます。このタグは、@return、@param、@deprecated などの任意のタグのテキスト部分を含む、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 +ڡ鸫ɥȤ () 롼ȥǥ쥯ȥؤХѥɽޤΥϡΥڡҤΥʤɡ뤹٤ƤΥڡ黲ȤեȤ߹ȤǤ̾ϡƥڡβΥڡ˥󥯤ޤ .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 プログラムでは、中括弧 { } 文字をエスケープする必要があります。たとえば、Inprise MAKE バージョン 5.2 を Windows 上で実行する場合は、「\f2{{@docRoot}}\fP」のように、中括弧を二重にする必要があります。さらに、\f2\-bottom\fP などのオプションに対する引数を、単一引用符ではなく、二重引用符で囲む必要があります。 \f2href\fP 引数の値を囲む引用符は省略します。 + \- \f2{@docRoot}\fP Makefile ǤΤ褦Ѥ硢 Makefile ץǤϡ { } ʸ򥨥פɬפޤȤСInprise MAKE С 5.2 Windows Ǽ¹Ԥϡ \f2{{@docRoot}} Τ褦ˡ̤Ťˤɬפޤ\fPˡ \f2\-bottom\fP ʤɤΥץФñǤϤʤŰǰϤɬפ⤢ޤ ( \f2href\fP ΰϤϾά) .TP 3 2. -ドキュメンテーションコメントの中では、次のように使用します。 +ɥơ󥳥ȤǤϡΤ褦˻Ѥޤ .nf \f3 .fl @@ -1676,16 +1186,13 @@ http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/index.htm .fl */ .fl - + .fl \fP .fi .RE - -.LP -.LP -このタグが必要な理由は、生成ドキュメントが、サブパッケージと同じ深さを持つ階層構造のディレクトリに格納されるからです。次に例を示します。 .LP +ΥɬפͳϡɥȤ֥ѥåƱijع¤Υǥ쥯ȥ˳Ǽ뤫Ǥ򼨤ޤ .nf \f3 .fl @@ -1695,201 +1202,118 @@ http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/index.htm .fl \fP .fi - -.LP -.LP -次のように解決されます。 .LP +Τ褦˲褵ޤ .nf \f3 .fl - <a href="../../copyright.html"> java/lang/Object.java の場合 + <a href="../../copyright.html"> java/lang/Object.java ξ .fl .fl \fP .fi - -.LP -.LP -および .LP + .nf \f3 .fl - <a href="../../../copyright.html"> java/lang/ref/Reference.java の場合 + <a href="../../../copyright.html"> java/lang/ref/Reference.java ξ .fl .fl \fP .fi - -.LP .LP - -.LP -.RE -.RS 3 .TP 3 @exception\ class\-name\ description -\f2@exception\fP タグは、\f2@throws\fP タグと同義です。 -.RE - -.LP -.RS 3 - -.LP -.LP - +\f2@exception\fP \f2@throws\fP ƱǤ .LP -.RE -.RS 3 .TP 3 {@inheritDoc}\ -もっとも近い継承可能なクラスまたは実装可能なインタフェースから、このタグの現在のドキュメンテーションコメントに、ドキュメントを継承 (コピー) します。この機能により、より汎用的なコメントを継承ツリーの上位に記述し、コピーしたテキストを使って記述することができます。 -.RE - -.LP -.RS 3 - -.LP -.LP -このタグは、ドキュメンテーションコメントの次の位置でのみ有効です。 +äȤᤤѾǽʥ饹ޤϼǽʥ󥿥ե顢ΥθߤΥɥơ󥳥ȤˡɥȤѾ (ԡ) ޤεǽˤꡢŪʥȤѾĥ꡼ξ̤˵ҤԡƥȤȤäƵҤ뤳ȤǤޤ .LP +Υϡɥơ󥳥Ȥμΰ֤ǤΤͭǤ .RS 3 .TP 2 o -メソッドの主説明ブロック内。この場合、主説明は、上位階層のクラスまたはインタフェースからコピーされる +᥽åɤμ֥å⡣ξ硢ϡ̳ؤΥ饹ޤϥ󥿥ե饳ԡ .TP 2 o -メソッドの @return、@param、@throws タグのテキスト引数内。この場合、タグテキストは、上位階層の対応するタグからコピーされる +᥽åɤ @return@param@throws ΥƥȰ⡣ξ硢ƥȤϡ̳ؤб륿饳ԡ .RE - -.LP -.LP -継承階層でコメントを見つける方法に関する正確な説明について、「メソッドコメントの自動コピー」を参照してください。このタグが見つからない場合、コメントは、この節で説明するルールに応じて、自動的に継承されるかどうかが決まります。 .LP +ѾؤǥȤ򸫤Ĥˡ˴ؤΤˤĤơ֥᥽åɥȤμưԡפ򻲾ȤƤΥĤʤ硢Ȥϡ롼˱ơưŪ˷Ѿ뤫ɤޤޤ .LP - -.LP -.RE -.RS 3 .TP 3 -{@link\ \ package.class#member\ \ label}\ -表示テキスト \f2label\fP とのインラインリンクを挿入します。 \f2label\fP は、参照クラスの指定されたパッケージ、クラス、またはメンバーの名前のドキュメンテーションを指し示します。このタグは、@return、@param、@deprecated などの任意のタグのテキスト部分を含む、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 -.RE - +{@link\ package.class#member\ label} +ɽƥ \f2label\fP ȤΥ饤󥯤ޤlabel ϡȥ饹λꤵ줿ѥå饹ޤϥС̾ΥɥơؤޤΥϡ@return@param@deprecated ʤɤǤդΥΥƥʬޤࡢ٤ƤΥɥơ󥳥ȡĤޤ공סѥå饹󥿥ե󥹥ȥ饯᥽åɡӥեɤͭǤ .LP -.RS 3 - +Υ \f2@see\fP ˤ褯Ƥޤɤ⡢\f2package.class\fP\f2#\fP\f2member\fP \f2label\fP λȤλƱǡͭʹʸޤäƱǤ礭ʰ㤤ϡ \f2{@link}\fP Ǥϡ[Ϣ] ˥󥯤֤ˡ饤Υ󥯤ȤǤޤ饤ƥȤΤۤʬȶ̤뤿ˡ \f2{@link}\fP κǽȺǸ̤򵭽Ҥޤ٥ǡ}פȤɬפϡHTML ƥƥΡ}פȤޤ .LP +1 ʸǻѲǽ \f2{@link}\fP ο¤Ϥޤ󡣤Υϡɥơ󥳥Ȥμʬޤ @deprecated@return@param ʤɤǤդΥΥƥʬǻȤȤǤޤ .LP -このタグは、\f2@see\fP タグとよく似ています。 どちらのタグも、\f2package.class\fP\f2#\fP\f2member\fP および \f2label\fP の参照の仕方が同じで、有効な構文もまったく同じです。大きな違いは、\f2{@link}\fP は、リンクを [関連項目] セクションに置くのではなく、インラインリンクを生成するということです。また、インラインテキストのほかの部分と区別するために、\f2{@link}\fP タグの最初と最後に中括弧を記述します。ラベルの中で「}」を使う必要がある場合は、HTML エンティティーの「}」を使います。 -.LP -.LP -1 つの文の中で使用できる \f2{@link}\fP タグの数に制限はありません。このタグは、ドキュメンテーションコメントの主説明部分、または @deprecated、@return、@param などの任意のタグのテキスト部分で使うことができます。 -.LP -.LP -たとえば、次のコメントでは \f2getComponentAt(int, int)\fP メソッドを参照しています。 -.LP +ȤСΥȤǤ \f2getComponentAt(int, int)\fP ᥽åɤ򻲾ȤƤޤ .nf \f3 .fl -{@link #getComponentAt(int, int) getComponentAt} メソッドを使用します。 +{@link #getComponentAt(int, int) getComponentAt} ᥽åɤѤޤ .fl .fl \fP .fi - -.LP -.LP -標準ドックレットでは、上記のコメントから次の HTML が生成されます (このコメントが同じパッケージの別のクラスを参照している場合)。 .LP +ɸɥååȤǤϡ嵭ΥȤ鼡 HTML ޤ (ΥȤƱѥå̤Υ饹򻲾ȤƤ) .nf \f3 .fl -<a href="Component.html#getComponentAt(int, int)">getComponentAt</a> メソッドを使用します。 +<a href="Component.html#getComponentAt(int, int)">getComponentAt</a> ᥽åɤѤޤ .fl .fl \fP .fi - -.LP -.LP -この HTML は、Web ページ上では次のように表示されます。 .LP + HTML ϡWeb ڡǤϼΤ褦ɽޤ .nf \f3 .fl -getComponentAt メソッドを使用します。 +getComponentAt ᥽åɤѤޤ .fl .fl \fP .fi - .LP +\f2{@link}\fP ĥƥɥȲʤ饹ؤΥ󥯤ǽˤˤϡ\f2\-link\fP ץѤޤ .LP -\f2{@link}\fP を、ドキュメント化の対象にしていないクラスにまで拡張するには、\f2\-link\fP オプションを使用します。 -.LP -.LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2{@link} タグのドキュメント\fP @ +\f2{@link} Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#{@link}を参照してください。 -.LP -.LP - +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#{@link}򻲾ȤƤ .LP -.RE -.RS 3 .TP 3 {@linkplain\ package.class#member\ label} -リンクのラベルがコードフォントではなくプレーンテキストで表示される点以外は \f2{@link}\fP と同じです。ラベルがプレーンテキストで記述されていると便利です。例: -.RE - -.LP -.RS 3 - -.LP +󥯤Υ٥뤬ɥեȤǤϤʤץ졼ƥȤɽʳ \f2{@link}\fP ƱǤ٥뤬ץ졼ƥȤǵҤƤǤ򻲾ȤƤ: .nf \f3 .fl - {@linkplain add() the overridden method} を参照してください。 + {@linkplain add() the overridden method} 򻲾ȤƤ .fl .fl \fP .fi - -.LP -.LP -これは以下のように表示されます。 -.LP -.RS 3 - -.LP .LP -the overridden method を参照してください。 +ϰʲΤ褦ɽޤ .LP -.RE -.LP - +the overridden method 򻲾ȤƤ .LP -.RE -.RS 3 .TP 3 {@literal\ text} -テキストを HTML マークアップまたは入れ子になった javadoc タグとして解釈せずに、\f2text\fP を表示します。これにより doc コメントでは、パラメータの種類 (\f2<Object>\fP)、不等号 (\f23 < 4\fP)、または矢印 (\f2<\-\fP) などで、HTML エンティティー (\f2<\fP および \f2>\fP) ではなく、通常の山括弧 (\f2<\fP および \f2>\fP) を使用できます。たとえば doc コメントのテキスト -.RE - -.LP -.RS 3 - -.LP +ƥȤ HTML ޡåפޤҤˤʤä javadoc ȤƲ᤻ˡ \f2text\fP ɽޤΤᡢɥơ󥳥̾λ (\f2<\fP \f2>\fP) HTML ƥƥ (\f2<\fP \f2>\fP) ˻ѤǤޤȤСѥ᡼η (\f2<Object>\fP) (\f23 < 4\fP) (\f2<\-\fP) ʤɤǤȤСΥɥơ󥳥 .nf \f3 .fl @@ -1899,40 +1323,22 @@ the overridden method を参照してください。 .fl \fP .fi - -.LP -.LP -は、生成された HTML ページはブラウザで次のようにそのまま表示されます。 -.LP -.LP -\f2\ \ \ \ \ \fPA<B>C .LP +ϡ줿 HTML ڡϥ֥饦ǼΤ褦ˤΤޤɽޤ .LP -注目すべき点として、\f2<B>\fP は太字であると解釈されません (コードフォントにならない)。 +\f2\ \ \ \ \ \fPA<B>C .LP +ܤ٤ϡ \f2<B>\fP ȤƲᤵ줺ΥեȤϥɥեȤˤʤ롢ȤǤ .LP -コードフォントで同じ機能を実現するには、\f2{@code}\fP を使用します。 +ɥեȤƱǽ¸ˤϡ\f2{@code}\fP Ѥޤ .LP -.LP - -.LP -.RE -.RS 3 .TP 3 @param\ parameter\-name description -指定した \f2parameter\-name\fP と指定した \f2description\fP を使用してパラメータを「Parameters」セクションに追加します。doc コメントを記述するときは、\f2description\fP を複数行に続けることができます。このタグは、メソッド、コンストラクタ、またはクラスの doc コメント内でのみ有効です。 -.RE - -.LP -.RS 3 - -.LP -.LP -\f2parameter\-name\fP は、メソッドまたはコンストラクタでのパラメータの名前か、クラス、メソッドまたはコンストラクタのタイプパラメータの名前になります。山括弧でパラメータ名を囲むと、型パラメータを使用することを指定します。 +ꤵ줿 \f2parameter\-name\fP ΤȤ˻ꤵ줿 \f2description\fP ³ѥ᡼[ѥ᡼] ɲäޤɥơ󥳥Ȥ򵭽ҤȤˤϡ \f2description\fP ʣԤˤ錄äƵҤ뤳ȤǤޤΥϡ᥽åɡ󥹥ȥ饯ޤϥ饹 doc ǤΤͭǤ .LP +\f2parameter\-name\fP ϡ᥽åɤޤϥ󥹥ȥ饯ǤΥѥ᡼̾饹᥽åɤޤϥ󥹥ȥ饯Υץѥ᡼̾ˤʤޤ̤ǥѥ᡼̾Ϥȡѥ᡼Ѥ뤳Ȥ ꤷޤ .LP -クラスの型パラメータの例: -.LP +饹ηѥ᡼: .nf \f3 .fl @@ -1950,11 +1356,8 @@ the overridden method を参照してください。 .fl \fP .fi - -.LP -.LP -メソッドの型パラメータの例: .LP +᥽åɤηѥ᡼: .nf \f3 .fl @@ -1978,125 +1381,87 @@ the overridden method を参照してください。 .fl \fP .fi - -.LP .LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@param タグのドキュメント\fP @ +\f2@param Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@paramを参照してください。 -.LP -.LP - +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@param򻲾ȤƤ .LP -.RE -.RS 3 .TP 3 @return\ description -[戻り値] セクションを追加して、\f2description\fP のテキストを書き込みます。このテキストでは、戻り値の型と、取り得る値の範囲について記述する必要があります。このタグは、メソッドのドキュメンテーションコメントでのみ有効です。 -.RE - -.LP -.RS 3 - +[] ɲäơ \f2description\fP ΥƥȤ񤭹ߤޤΥƥȤǤϡͤηȡͤϰϤˤĤƵҤɬפޤΥϡ᥽åɤΥɥơ󥳥ȤǤΤͭǤ .LP -.LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@return タグのドキュメント\fP @ +\f2@return Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@returnを参照してください。 -.LP -.LP - +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@return򻲾ȤƤ .LP -.RE -.RS 3 .TP 3 -@see\ \ reference -[関連項目] 見出しを追加し、\f2reference\fP を指すリンクか、またはテキストエントリを書き込みます。1 つのドキュメンテーションコメントには、任意の数の \f2@see\fP タグを指定できます。 すべての \f2@see\fP タグの内容は、同じの見出しの下にグループ化されます。\f2@see\fP タグには、次の 3 種類の形式があります。 もっともよく使われるのは、3 番目の形式です。このタグは、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。パッケージ、クラス、またはメンバーに対するインラインリンクを文中に挿入する方法は、\f2{@link}\fP を参照してください。 +@see\ reference +ִϢܡ׸Фɲä \f2reference ؤ󥯤ޤϥƥȥȥ񤭹ߤޤ\fPɥơ󥳥ȤˤǤդο \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) かどうかを調べて、この形式をほかの 2 つの形式と区別します。例を示します。 +\f2string Υƥȥȥɲäޤ\fP󥯤ޤ \f2string\fP ϡҤޤ URL ǤϥǤʤλǤJavadoc ġϡǽʸŰ (\f2"\fP) ɤĴ٤ơηۤ 2 Ĥηȶ̤ޤȤС .nf \f3 .fl @see "The Java Programming Language" .fl - + .fl \fP .fi .LP -これは次のようなテキストを生成します。 +ϼΤ褦ʥƥȤޤ +.RE .RE .RS 3 .RS 3 - -.LP +.RS 3 .RS 3 .TP 3 -関連項目: +Ϣ: The Java Programming Language .RE - -.LP -.RE .RE .TP 3 @see <a href="URL#value">label</a> -\f2URL\fP#\f2value\fP で定義されたとおりにリンクを追加します。\f2URL\fP#\f2value\fP は、相対 URL または絶対 URL です。Javadoc ツールは、最初の文字が「より小さい」記号 (\f2<\fP) かどうかを調べて、この形式をほかの 2 つの形式と区別します。例を示します。 +\f2URL\fP#\f2value\fP 줿Ȥ˥󥯤ɲäޤ \f2URL\fP#\f2value\fP URL ޤ URL ǤJavadoc ġϡǽʸ֤꾮׵ (\f2<\fP) ɤĴ٤ơηۤ 2 Ĥηȶ̤ޤȤС .nf \f3 .fl @see <a href="spec.html#section">Java Spec</a> .fl - -.fl \fP .fi -.LP -これは次のようなリンクを生成します。 -.RS 3 +ϼΤ褦ʥ󥯤ޤ .RS 3 .TP 3 -関連項目: +Ϣ: Java Spec .RE -.RE -.RE -.RS 3 - -.LP -.LP - -.LP -.RE -.RS 3 .TP 3 @see\ package.class#member\ label -指定された名前を持つ、参照されている Java 言語のメンバーについてのドキュメントを指すリンクを、表示テキスト \f2label\fP とともに追加します。\f2label\fP は省略可能です。 \f2label\fP を省略すると、リンク先のメンバーの名前が適切に短縮されて表示されます。 「名前が表示される方法」を参照してください。\-noqualifier を使用すると、表示テキストからパッケージ名が全体的に削除されます。ラベルは、自動生成される表示テキストとは異なる表示テキストを指定する場合に使います。 +ĻΥƥ \f2label\fP ĥ󥯤ɲäޤΥ󥯤ϡȤʤ롢ꤵ줿 Java ̾Υɥơؤޤ \f2label\fP ϾάǽǤlabel άȡΥС̾Ŭڤṳ̂ɽޤ ̾ɽˡפ򻲾ȤƤ\-noqualifier ѤȡɽƥȤѥå̾Ū˺ޤ٥ϡưɽƥȤȤϰۤʤɽƥȤꤹ˻Ȥޤ .LP -バージョン 1.2 だけは、ラベルではなく、名前が <code> HTML タグ内に自動的に表示されます。 1.2.2 からは、ラベルを使用するか、しないかにかかわらず、<code> は常に表示テキストを囲むかたちで、含まれます。 +С 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 タグを使います。この引数については、このあとの「名前の指定」で詳しく説明します。 +\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 が、現在のクラスおよびパッケージに応じて適切に短縮されて表示されます。 「名前が表示される方法」を参照してください。 +\f4label\fP ϡάǽʥƥȤǡ󥯤Υ٥Ȥɽޤ \f2label\fP ˤ϶ޤ뤳ȤǤޤ \f2label\fP άȡ\f2package.class.member\fP ߤΥ饹ӥѥå˱Ŭڤṳ̂ɽޤ̾ɽˡפ򻲾ȤƤ .TP 2 o -空白文字は、\f2package.class\fP\f2#\fP\f2member\fP と \f2label\fP の間の区切り文字です。括弧の内側の空白文字はラベルの先頭とは解釈されないため、メソッドのパラメータ間に空白文字を入れてもかまいません。 +򤬡 \f2package.class\fP\f2#\fP\f2member\fP \f2label\fP δ֤ζڤʸˤʤޤ̤¦ζʸϥ٥ƬȤϲᤵʤᡢ᥽åɤΥѥ᡼֤˶ʸƤ⤫ޤޤ .RE .LP -\f3例\fP \- この例では、\f2Character\fP クラスにある \f2@see\fP タグが、\f2String\fP クラスの \f2equals\fP メソッドを参照しています。タグには、名前 \f2String#equals(Object)\fP とラベル \f2equals\fP の両方の引数が含まれています。 -.RS 3 - -.LP +\f3\fP \- Ǥϡ \f2@see\fP ( \f2Character\fP 饹) String 饹 \f2equals\fP ᥽å \f2򻲾\fP ƤޤΥˤ̾\f2String#equals(Object)\fPפȥ٥\f2equals\fPפξΰޤޤƤޤ .nf \f3 .fl @@ -2106,63 +1471,34 @@ o .fl */ .fl - -.fl \fP .fi -.RE -.LP -標準ドックレットは、次のような HTML を生成します。 -.RS 3 - -.LP +ɸɥååȤϡΤ褦 HTML ޤ .nf \f3 .fl <dl> .fl -<dt><b>See also:</b> +<dt><b>See Also:</b> .fl <dd><a href="../../java/lang/String#equals(java.lang.Object)"><code>equals<code></a> .fl </dl> -.fl - .fl \fP .fi -.RE -.LP -これは、ブラウザでは次のように表示され、ラベルがリンクテキストになります。 -.RS 3 +ϡ֥饦ǤϼΤ褦ɽ졢٥뤬󥯥ƥȤˤʤޤ .RS 3 .TP 3 -関連項目: +Ϣ: equals .RE -.RE -.RE - -.LP -.RS 3 - -.LP -.LP - .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 -\f3名前の指定\fP \- このタグに指定する \f2package.class\fP\f2#\fP\f2member\fP という名前は、\f2java.lang.String#toUpperCase()\fP のように完全指定することも、\f2String#toUpperCase()\fP や \f2#toUpperCase()\fP のように部分的に指定することもできます。名前が完全指定されていない場合、Javadoc ツールは、Java コンパイラの通常の検索順序でその名前を検索します。詳細は、このあとの「@see の検索順序」を参照してください。名前には、メソッドの複数の引数の間など、括弧の内側であれば空白を含めることができます。 +ʬŪ˻פû̾ꤹ뤳ȤϡϤʸ뤳Ȥ䡢ɤɤߤ䤹ʤ뤳ȤǤɽˡޤޤʷ̾򼨤ޤǡ \f2Class\fP ˤϥ饹ޤϥ󥿥ե \f2Type\fP ˤϥ饹󥿥ե󡢤ޤϴܥǡ \f2method\fP ˤϥ᥽åɤޤϥ󥹥ȥ饯򡢤줾Ǥޤ .LP .LP -「部分的に指定」した短い名前を指定することの利点は、入力する文字数が減ることや、ソースコードが読みやすくなることです。次の表に、さまざまな形式の名前を示します。 この表の中で、\f2Class\fP にはクラスまたはインタフェースを、\f2Type\fP にはクラス、インタフェース、配列、または基本データ型を、そして \f2method\fP にはメソッドまたはコンストラクタを指定できます。 -.LP -.LP - -.LP -.RE -.RS 3 -.RS 3 -.LP .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 .de 35 @@ -2191,7 +1527,7 @@ equals .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 +\f4@see\fP\f3\ \fP\f4package.class#member\fP\f3 ΰŪʷ\fP .br .di .nr a| \n(dn @@ -2207,9 +1543,9 @@ equals .ll \n(34u*1u/2u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f3現在のクラスのメンバーを参照する\fP +\f3ߤΥ饹ΥС򻲾Ȥ\fP .br -\f2@see\fP\ \f2#\fP\f2field\fP +\f2@see\fP\ \f2#\fP\f2ե\fP .br \f2@see\fP\ \f2#\fP\f2method(Type,\ Type,...)\fP .br @@ -2233,21 +1569,21 @@ equals .ll \n(34u*1u/2u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f3現在の、またはインポートされたパッケージの別のクラスを参照する\fP +\f3ߤΡޤϥݡȤ줿ѥå̤Υ饹򻲾Ȥ\fP .br -\f2@see\fP\ \f2Class\fP\f2#\fP\f2field\fP +\f2@see\fP\ \f2饹\fP\f2#\fP\f2ե\fP .br -\f2@see\fP\ \f2Class\fP\f2#\fP\f2method(Type,\ Type,...)\fP +\f2@see\fP\ \f2饹\fP\f2#\fP\f2method(Type,\ Type,...)\fP .br -\f2@see\fP\ \f2Class\fP\f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP +\f2@see\fP\ \f2饹\fP\f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP .br -\f2@see\fP\ \f2Class\fP\f2#\fP\f2constructor(Type,\ Type,...)\fP +\f2@see\fP\ \f2饹\fP\f2#\fP\f2constructor(Type,\ Type,...)\fP .br -\f2@see\fP\ \f2Class\fP\f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP +\f2@see\fP\ \f2饹\fP\f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP .br \f2@see\fP\ \f2Class.NestedClass\fP .br -\f2@see\fP\ \f2Class\fP +\f2@see\fP\ \f2饹\fP .br .di .nr c| \n(dn @@ -2263,9 +1599,9 @@ equals .ll \n(34u*1u/2u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f3別のパッケージの要素を参照する\fP\ (完全修飾) +\f3̤ΥѥåǤ򻲾Ȥ\fP\ () .br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2field\fP +\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2ե\fP .br \f2@see\fP\ \f2package.Class\fP\f2#\fP\f2method(Type,\ Type,...)\fP .br @@ -2279,7 +1615,7 @@ equals .br \f2@see\fP\ \f2package.Class\fP .br -\f2@see\fP\ \f2package\fP +\f2@see\fP\ \f2ѥå\fP .br .di .nr d| \n(dn @@ -2308,7 +1644,7 @@ equals .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 1860 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 1358 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -2396,74 +1732,52 @@ equals .rm d+ .TE .if \n-(b.=0 .nr c. \n(.c-\n(d.-58 -.RE -.RE - -.LP -.RS 3 - -.LP -.LP -上の表に対する補足事項を次に示します。 .LP +ɽФ­򼡤˼ޤ .RS 3 .TP 2 o -最初の種類の形式 (パッケージとクラスを省略) の場合、Javadoc ツールは、現在のクラスの階層だけを検索します。つまり、現在のクラスかインタフェース、そのスーパークラスかスーパーインタフェース、または現在のクラスかインタフェースを囲んでいるクラスかインタフェースからメンバーを検索します (このあとの検索手順 1 〜 3)。現在のパッケージのほかの部分や、ほかのパッケージは検索しません (検索手順 4 〜 5)。 +ǽμη (ѥåȥ饹ά) ξ硢Javadoc ġϡߤΥ饹γؤ򸡺ޤĤޤꡢߤΥ饹󥿥եΥѡ饹ѡ󥿥եޤϸߤΥ饹󥿥եϤǤ륯饹󥿥եС򸡺ޤ (ΤȤθ 1 3)ߤΥѥåΤۤʬ䡢ۤΥѥåϸޤ ( 4 5) .TP 2 o -メソッドまたはコンストラクタを指定するときに括弧を付けずに名前だけ (\f2getValue\fP など) を使用した場合、同じ名前のフィールドが存在しなければ、Javadoc ツールはそのメソッドに対して正しくリンクを作成します。 ただし、括弧と引数を追加するように促す警告メッセージを出力します。このメソッドがオーバーロードされている場合、Javadoc ツールは、検索で最初に見つかったメソッドにリンクします。 結果は前もって特定できません。 +᥽åɤޤϥ󥹥ȥ饯λˡ \f2getValue\fP Τ褦˳̤ʤ̾Ѥ硢Ʊ̾Υեɤ¸ߤƤʤСJavadoc ġˤäƤ̾ؤΥ󥯤ޤ̤ɲä桼¥ηٹåɽޤΥ᥽åɤСɤƤ硢Javadoc ġϡǺǽ˸Ĥä᥽åɤ˥󥯤ޤ̤äǤޤ .TP 2 o -入れ子にされたクラスは、上記のどの形式の場合も、単に「\f2inner\fP」ではなく、「\f2outer\fP\f2.\fP\f2inner\fP」として指定しなければなりません。 +Ҥˤʤä饹ϡ٤ƤηˤĤơ \f2outer\fP\f2.\fP\f2inner\fP Ȥƻꤹɬפޤñ \f2inner\fP ȤϤʤǤ .TP 2 o -すでに述べたとおり、クラスとメンバーを区切るために、ドット (\f2.\fP) ではなくシャープ記号 (\f2#\fP) を使用することに注意してください。このように指定すると、Javadoc ツールは、あいまいさを解決できます。 ドットは、クラス、入れ子にされたクラス、パッケージ、およびサブパッケージを区切るためにも使用されます。ただし、Javadoc ツールでは一般に許容範囲が広く、あいまいさがなければ、ドットでも正しく解析されます。 その場合でも警告は表示されます。 +Ǥ˽Ҥ٤褦ˡ\f2饹ȥСȤδ֤ζڤʸȤƤϡ\fPɥå (\f2.\fP) ǤϤʤ㡼ʸ (#) ѤޤΤ褦˻ꤹȡJavadoc ġϡޤǤޤɥåȤϡ饹Ҥˤ줿饹ѥåӥ֥ѥåڤ뤿ˤѤޤJavadoc ġǤϰ̤˵ϰϤޤʤСɥåȤǤϤޤξǤٹɽޤ .RE - -.LP -.LP -\f3@see の検索順序\fP \- Javadoc ツールは、ソースファイル (.java)、パッケージファイル (package.html または package\-info.java)、または概要ファイル (overview.html) の中に登場する \f2@see\fP タグを処理します。後者の 2 つのファイルでは、完全指定の名前を \f2@see\fP タグに指定しなければなりません。ソースファイルでは、完全指定の名前、または部分指定の名前を指定できます。 -.LP .LP -Javadoc ツールは、\f2.java\fP ファイル内で完全指定でない名前が記述された \f2@see\fP タグを見つけると、Java コンパイラと同じ順序で指定された名前を検索します。 ただし、Javadoc ツールは、特定の名前空間のあいまいさを検出しません。 これは、ソースコードにこれらのエラーが存在していないことを前提としているためです。この検索順序は、Java 言語仕様第 2 版の第 6 章「Names」で正式に定義されています。Javadoc ツールは、関連するクラスとパッケージ、およびインポートされたクラスとパッケージのすべてから名前を検索します。具体的には、次の順序で検索します。 +\f3@see θ\fP \- Javadoc ġϡե (.java)ѥåե (package.html ޤ package\-info.java) ޤϳץե (overview.html) ˴ޤޤ \f2@see\fP ޤԤ 2 ĤΥեǤϡ̾ \f2@see\fP ˻ꤷʤФʤޤ󡣥եǤϡ̾ޤʬ̾Ǥޤ .LP +Javadoc ġϡǤʤ̾Ҥ줿 \f2@see\fP \f2.java եǸĤȡ\fP Java ѥƱǻꤵ줿̾򸡺ޤ Javadoc ġϡ֤̾Τޤ򸡽Фޤ ϡɤˤΥ顼¸ߤƤʤȤȤƤ뤿ǤθϡJava 2 Ǥ 6 ϡNamesפƤޤJavadoc ġϡϢ륯饹ȥѥåӥݡȤ줿饹ȥѥåΤ٤Ƥ̾򸡺ޤŪˤϡνǸޤ .RS 3 .TP 3 1. -現在のクラスまたはインタフェース +ߤΥ饹ޤϥ󥿥ե .TP 3 2. -外側を囲んでいるクラスとインタフェース (もっとも近いものから検索) +¦ϤǤ륯饹ȥ󥿥ե (äȤᤤΤ鸡) .TP 3 3. -スーパークラスとスーパーインタフェース (もっとも近いものから検索) +ѡ饹ȥѡ󥿥ե (äȤᤤΤ鸡) .TP 3 4. -現在のパッケージ +ߤΥѥå .TP 3 5. -インポートされているパッケージ、クラス、およびインタフェース (import 文の順序に従って検索) +ݡȤƤѥå饹ӥ󥿥ե (import ʸν˽äƸ) .RE - -.LP -.LP -Javadoc ツールは、各クラスについて手順 1 〜 3 を再帰的に適用しながら、一致する名前が見つかるまで検索を続けます。つまり、まず現在のクラスを検索し、次にそのクラスを囲んでいるクラス E を検索し、その次に E のスーパークラスを検索し、さらにその次に E を囲んでいるクラスを検索します。 手順 4 と 5 では、1 つのパッケージ内のクラスまたはインタフェースを検索する順序は決まっていません。 その順序は、個々のコンパイラによって異なります。手順 5 では、Javadoc ツールは、java.lang を検索します。 このパッケージは、すべてのプログラムに自動的にインポートされるからです。 -.LP .LP -Javadoc ツールは、必ずしもサブクラスを検索するとは限りません。 また、javadoc の実行中にほかのパッケージのドキュメントが生成される場合でも、ほかのパッケージを検索しません。たとえば、\f2@see\fP タグが \f2java.awt.event.KeyEvent\fP クラス内にあって、\f2java.awt\fP パッケージにある名前を参照している場合、Javadoc は、そのクラスがインポートしないかぎりそのパッケージを検索しません。 +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 が表示されます。一般に、package.class.member は、現在のクラスおよびパッケージに応じて適切に短縮されます。「短縮される」とは、必要最小限の名前だけが表示されるということです。たとえば、\f2String.toUpperCase()\fP メソッドに、同じクラスのメンバーへの参照とほかのクラスのメンバーへの参照が含まれている場合、クラス名が表示されるのは後者のケースだけです (次の表を参照)。 +\f3̾ɽˡ\fP \- \f2label\fP άϡ\f2package.class.member\fP ɽޤ̤ˡpackage.class.member ϡߤΥ饹ӥѥå˱Ŭڤṳ̂ޤṳ̂פȤϡɬ׺Ǿ¤̾ɽȤȤǤȤС \f2String.toUpperCase()\fP ᥽åɤˡƱ饹ΥСؤλȤȤۤΥ饹ΥСؤλȤޤޤƤ硢饹̾ɽΤϸԤΥǤ (ɽ򻲾) .LP -.LP -パッケージ名を広域的に削除するには、\-noqualifier を使用します。 +ѥå̾򹭰Ū˺ˤϡ\-noqualifier Ѥޤ .br - -.LP -.RE -.RS 3 -.RS 3 .LP .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 @@ -2493,7 +1807,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(81 .ll \n(81u .in 0 -\f4String.toUpperCase()\fP\f3 での例\fP +\f4String.toUpperCase() Ǥ\fP .br .di .nr a| \n(dn @@ -2509,7 +1823,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f2@see\fP タグが同じクラスのメンバーを参照している +\f2@see\fP Ʊ饹ƱѥåΥС򻲾ȤƤ .br .di .nr b| \n(dn @@ -2525,7 +1839,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(82 .ll \n(82u .in 0 -\f2toLowerCase()\fP (クラス名は省略) +\f2toLowerCase()\fP (饹̾Ͼά) .br .di .nr c| \n(dn @@ -2541,7 +1855,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f2@see\fP タグが別のクラスのメンバーを参照している +\f2@see\fP ۤʤ륯饹ƱѥåΥС򻲾ȤƤ .br .di .nr d| \n(dn @@ -2573,7 +1887,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(82 .ll \n(82u .in 0 -\f2Character.toLowerCase(char)\fP (パッケージ名は省略し、クラス名を含む) +\f2Character.toLowerCase(char)\fP (ѥå̾Ͼά饹̾ޤ) .br .di .nr f| \n(dn @@ -2589,7 +1903,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(80 .ll \n(80u .in 0 -\f2@see\fP タグが別のクラスのメンバーを参照している +\f2@see\fP ۤʤ륯饹ۤʤѥåΥС򻲾ȤƤ .br .di .nr g| \n(dn @@ -2621,7 +1935,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .ll \n(34u*1u/4u .if \n(.l<\n(82 .ll \n(82u .in 0 -\f2java.io.File.exists()\fP (パッケージ名とクラス名を含む) +\f2java.io.File.exists()\fP (ѥå̾ȥ饹̾ޤ) .br .di .nr i| \n(dn @@ -2632,7 +1946,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .nf .ll \n(34u .nr 80 0 -.nr 38 \w\f3参照の種類\fP +.nr 38 \w\f3Ȥμ\fP .if \n(80<\n(38 .nr 80 \n(38 .80 .rm 80 @@ -2654,7 +1968,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .nr 38 \n(h- .if \n(81<\n(38 .nr 81 \n(38 .nr 82 0 -.nr 38 \w\f3表示される名前\fP +.nr 38 \w\f3ɽ̾\fP .if \n(82<\n(38 .nr 82 \n(38 .82 .rm 82 @@ -2676,7 +1990,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .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 1958 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 1434 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -2695,7 +2009,7 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .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 +\&\h'|\n(40u'\f3Ȥμ\fP\h'|\n(41u'\h'|\n(42u'\f3ɽ̾\fP .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -2814,22 +2128,14 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま .rm i+ .TE .if \n-(b.=0 .nr c. \n(.c-\n(d.-28 -.RE -.RE - -.LP -.RS 3 - .LP -.LP -\f3@see の例\fP +\f3@see \fP .br -右側のコメントは、\f2@see\fP タグが別のパッケージ (\f2java.applet.Applet\fP など) のクラス内にある場合に、名前がどのように表示されるかを示しています。 -.LP +¦ΥȤϡ \f2@see\fP \f2java.applet.Applet\fP Τ褦̤ΥѥåΥ饹ˤˡ̾ɤΤ褦ɽ뤫򼨤Ƥޤ .nf \f3 .fl - 関連項目: + Ϣ: .fl @see java.lang.String // String \fP\f3 .fl @@ -2848,122 +2154,69 @@ Javadoc ツールは、必ずしもサブクラスを検索するとは限りま @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 - .fl \fP .fi - -.LP -.LP -\f2@see\fP を、ドキュメント化の対象にしていないクラスにまで拡張するには、\f2\-link\fP オプションを使用します。 -.LP +\f2@see\fP ĥƥɥȲʤ饹ؤΥ󥯤ǽˤˤϡ\f2\-link\fP ץѤޤ .LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@see タグのドキュメント\fP @ +\f2@see Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@seeを参照してください。 -.LP +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@see򻲾ȤƤ +.RE .RE -.LP - .LP .RS 3 .TP 3 @serial\ field\-description | include | exclude -デフォルトの直列化可能フィールドのドキュメンテーションコメントで使用します。 -.RE - -.LP -.RS 3 - -.LP -.LP -\f2field\-description\fP (省略可能) では、フィールドの意味を説明し、取り得る値のリストを示す必要があります。必要に応じて、複数の行に渡って説明を記述できます。標準ドックレットは、この情報を、直列化された形式のページに追加します。 -.LP +ǥեȤľ󲽲ǽեɤΥɥơ󥳥ȤǻѤޤ .LP -クラスを直列化したあとしばらくしてから直列化可能フィールドをクラスに追加した場合、主説明に、追加したバージョンを識別する文を追加する必要があります。 +\f2field\-description\fP (άǽ) Ǥϡեɤΰ̣ͤΥꥹȤ򼨤ɬפޤɬפ˱ơʣιԤϤä򵭽ҤǤޤɸɥååȤϡξľ󲽤줿Υڡɲäޤ .LP +饹ľ󲽤ȤФ餯Ƥľ󲽲ǽեɤ򥯥饹ɲä硢ˡɲäС̤ʸɲäɬפޤ .LP -\f2include\fP および \f2exclude\fP 引数は、直列化された形式のページにクラスまたはパッケージを含めるか除外するかを示します。これらの引数には、次のような効果があります。 -.LP +\f2include\fP \f2exclude\fP ϡľ󲽤줿Υڡ˥饹ޤϥѥåޤ뤫뤫򼨤ޤΰˤϡΤ褦ʸ̤ޤ .RS 3 .TP 2 o -\f2Serializable\fP を実装している public または protected クラスは、通常はそのページに含められます。 ただし、そのクラスまたはそのクラスが属するパッケージが \f2@serial exclude\fP で指定されていると、そのページから除外されます。 +\f2Serializable\fP Ƥ public ޤ protected 饹ϡΥ饹 (ޤϤΥѥå) \f2@serial exclude\fP ȤƥޡƤʤꡢޤޤ .TP 2 o -\f2Serializable\fP を実装している private または package private クラスは、通常はそのページから除外されます。 ただし、そのクラスまたはそのクラスが属するパッケージが \f2@serial include\fP で指定されていると、そのページに含められます。 +\f2Serializable\fP Ƥ private ޤ package\-private 饹ϡΥ饹 (ޤϤΥѥå) \f2@serial include\fP Ȥ ޡƤʤꡢޤ .RE - -.LP -.LP -例: \f2javax.swing\fP パッケージは、\f2@serial exclude\fP で指定されています (\f2package.html\fP または \f2package\-info.java\fP 内)。public クラス \f2java.security.BasicPermission\fP は、\f2@serial exclude\fP で指定されています。package private クラス \f2java.util.PropertyPermissionCollection\fP は、\f2@serial include\fP で指定されています。 .LP +: \f2javax.swing\fP ѥå \f2@serial exclude\fP ( \f2package.html\fP ޤ \f2package\-info.java\fP) ȤƥޡƤޤpublic 饹 \f2java.security.BasicPermission\fP \f2@serial exclude\fP ȤƥޡƤޤpackage\-private 饹 \f2java.util.PropertyPermissionCollection\fP \f2@serial include\fP ȤƥޡƤޤ .LP -クラスレベルで指定された @serial タグは、パッケージレベルで指定された @serial タグをオーバーライドします。 +饹٥ǻꤵ줿 @serial ϡѥå٥ǻꤵ줿 @serial 򥪡С饤ɤޤ .LP -.LP -これらのタグの使用法についての詳細と使用例は、「Java オブジェクト直列化仕様」の第 1.6 節 +ΥλˡˤĤƤξܺ٤ȻϡJava ֥ľ󲽻͡פ 1.6 .na -\f2「クラスの直列化可能なフィールドおよびデータの文書化」\fP @ +\f2֥饹ľ󲽲ǽʥեɤӥǡʸ񲽡\fP @ .fi -http://java.sun.com/javase/6/docs/platform/serialization/spec/serial\-arch.htmlを参照してください。また、 +http://java.sun.com/javase/6/docs/platform/serialization/spec/serial\-arch.html򻲾ȤƤޤ .na -\f2「直列化の FAQ」\fP @ +\f2ľ󲽤 FAQ\fP @ .fi -http://java.sun.com/products/jdk/serialization/faq/#javadoc_warn_missingも参照してください。 この FAQ には、「\-private スイッチを指定しないで javadoc を実行しているのに private フィールドの @serial タグが見つからないという javadoc の警告が表示される」などの一般的な質問への回答が記載されています。直列化形式仕様にクラスを含める場合には、 +http://java.sun.com/products/jdk/serialization/faq/#javadoc_warn_missing⻲ȤƤ FAQ ˤϡ\-private åꤷʤ javadoc ¹ԤƤΤ private եɤ @serial ĤʤȤ javadoc ηٹɽפʤɤΰŪʼؤβܤƤޤľ󲽷ͤ˥饹ޤˤϡ .na -\f2「Sun の仕様」\fP @ +\f2Sun λ͡\fP @ .fi -http://java.sun.com/j2se/javadoc/writingapispecs/serialized\-criteria.htmlも参照してください。 -.LP -.LP - +http://java.sun.com/j2se/javadoc/writingapispecs/serialized\-criteria.html⻲ȤƤ .LP -.RE -.RS 3 .TP 3 @serialField\ field\-name\ field\-type\ field\-description -\f2Serializable\fP クラスの \f2serialPersistentFields\fP メンバーの \f2ObjectStreamField\fP コンポーネントをドキュメント化します。各 \f2ObjectStreamField\fP コンポーネントに対して \f2@serialField\fP タグを 1 つ使う必要があります。 -.RE - -.LP -.RS 3 - -.LP +Serializable \f2饹\fP serialPersistentFields \f2С\fP ObjectStreamField ݡͥ \f2ɥȲ\fP ޤ1 Ĥ \f2@serialField\fP \f2ObjectStreamField\fP ݡͥȤǻѤ٤Ǥ .LP - -.LP -.RE -.RS 3 .TP 3 @serialData\ data\-description -\f2data\-description\fP は、直列化された形式でのデータの型と順序を説明するテキストです。このデータには、特に、\f2writeObject\fP メソッドによって書き込まれる省略可能なデータ、および \f2Externalizable.writeExternal\fP メソッドによって書き込まれるすべてのデータ (基底クラスを含む) が含まれます。 -.RE - -.LP -.RS 3 - -.LP -.LP -\f2@serialData\fP タグは、\f2writeObject\fP、\f2readObject\fP、\f2writeExternal\fP、\f2readExternal\fP、\f2writeReplace\fP、および \f2readResolve\fP メソッドのドキュメンテーションコメントで使用できます。 -.LP +\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 -.RE -.RS 3 .TP 3 @since\ since\-text -生成ドキュメントに [導入されたバージョン] 見出しを追加し、指定された \f2since\-text\fP を書き込みます。このテキストには、特別な内部構造はありません。このタグは、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。このタグは、特定の変更または機能が、\f2since\-text\fP に示されたソフトウェアリリース以降、存在していることを意味します。例を示します。 -.RE - -.LP -.RS 3 - -.LP +ɥȤ [Ƴ줿С] Фɲäꤵ줿 \f2since\-text\fP 񤭹ߤޤΥƥȤˤϡ̤¤Ϥޤ󡣤Υϡ٤ƤΥɥơ󥳥ȡĤޤ공סѥå饹󥿥ե󥹥ȥ饯᥽åɡӥեɤͭǤΥϡѹޤϵǽ \f2since\-text ˼줿եȥ꡼ʹߡ¸ߤƤ뤳Ȥ̣ޤ\fPȤС .nf \f3 .fl @@ -2973,52 +2226,26 @@ http://java.sun.com/j2se/javadoc/writingapispecs/serialized\-criteria.htmlも参 .fl \fP .fi - -.LP -.LP -Java プラットフォームのソースコードの場合、このタグは、Java プラットフォーム API 仕様のバージョンを示します。 その変更や機能がリファレンス実装に追加された時期を示すとは限りません。複数の @since タグを使用でき、複数の @author タグのように扱われます。プログラム要素が複数の API で使用される場合、複数のタグを使用できます。 .LP +Java ץåȥեΥɤξ硢ΥϡJava ץåȥե API ͤΥС򼨤ޤѹ䵡ǽե󥹼ɲä줿򼨤Ȥϸ¤ޤʣ @since ѤǤʣ @author Τ褦˰ޤץǤʣ API ǻѤ硢ʣΥѤǤޤ .LP - -.LP -.RE -.RS 3 .TP 3 -@throws\ class\-name\ description\ -\f2@throws\fP タグと \f2@exception\fP タグは同義です。生成ドキュメントに [例外] 小見出しを追加して、\f2class\-name\fP と \f2description\fP テキストを書き込みます。\f2class\-name\fP は、そのメソッドからスローされる可能性のある例外の名前です。このタグは、メソッド、コンストラクタの doc コメント内でのみ有効です。このクラスが完全指定の名前で記述されていない場合、Javadoc ツールは、検索順序に従ってクラスを探します。同じまたは異なる例外の doc コメントで、複数の \f2@throws\fP タグを使用できます。 -.RE - -.LP -.RS 3 - -.LP -.LP -すべてのチェック済み例外がドキュメント化されるようにするために、\f2@throws\fP タグが throws 節内の例外用に存在しない場合は、@throws タグのあるドキュメントであるかのように、Javadoc ツールによって例外が HTML 出力に説明なしで自動的に追加されます。 -.LP +@throws\ class\-name\ description +\f2@throws\fP \f2@exception\fP ƱǤɥȤˡ㳰׾Фɲäơ \f2class\-name\fP \f2description\fP ΥƥȤ񤭹ߤޤ \f2class\-name\fP ϡΥ᥽åɤ饹ǽΤ㳰̾ǤΥϡ᥽åɡ󥹥ȥ饯 doc ǤΤͭǤΥ饹̾ǵҤƤʤ硢Javadoc ġϡ˽äƥ饹õޤƱޤϰۤʤ㳰 doc Ȥǡʣ \f2@throws\fP ѤǤޤ .LP -オーバーライドされるメソッド内で例外が明示的に宣言されている場合のみ、\f2@throws\fP ドキュメンテーションをそのメソッドからサブクラスにコピーされます。インタフェースメソッドから実装メソッドにコピーされる場合も同様です。@throws にドキュメンテーションを継承させるには、{@inheritDoc} を使用できます。 +٤ƤΥåѤ㳰ɥȲ褦ˤ뤿ˡ \f2@throws\fP throws 㳰Ѥ¸ߤʤϡ@throws ΤɥȤǤ뤫Τ褦ˡJavadoc ġˤä㳰 HTML ϤʤǼưŪɲäޤ .LP +С饤ɤ᥽å㳰ŪƤΤߡ \f2@throws\fP ɥơ󤬤Υ᥽åɤ饵֥饹˥ԡޤ󥿥ե᥽åɤ᥽åɤ˥ԡƱͤǤ@throws ˥ɥơѾˤϡ{@inheritDoc} ѤǤޤ .LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@throws タグのドキュメント\fP @ +\f2@throws Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@exceptionを参照してください。 +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@exception򻲾ȤƤ .LP -.LP - -.LP -.RE -.RS 3 .TP 3 {@value\ package.class#field} -\f2{@value}\fP が静的フィールドの doc コメントで 引数なしで使用されている場合、その定数の値が表示されます。 -.RE - -.LP -.RS 3 - -.LP +\f2{@value}\fP Ūեɤ doc Ȥ ʤǻѤƤ硢ͤɽޤ .nf \f3 .fl @@ -3034,11 +2261,8 @@ http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@exceptionを参 .fl \fP .fi - -.LP -.LP -任意の doc コメント内で引数 \f2package.class#field\fP ありで使用されている場合は、指定した定数の値が表示されます。 .LP +ǤդΥɥơ󥳥ǰ \f2package.class#field\fP ǻѤ줿ϡλꤵ줿ͤɽޤ .nf \f3 .fl @@ -3056,448 +2280,130 @@ http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@exceptionを参 .fl \fP .fi - -.LP .LP -引数 \f2package.class#field\fP は、@see 引数と同一の形式になります。ただし、メンバーが静的フィールドになければならない点が異なります。 + \f2package.class#field\fP ϡ@see ƱηˤʤޤСŪեɤˤʤФʤʤۤʤޤ .LP -.LP -これらの定数での値は、 +Ǥͤϡ .na -\f2定数フィールド値\fP @ +\f2ե\fP @ .fi -http://java.sun.com/javase/6/docs/api/constant\-values.htmlページにも表示されます。 +http://java.sun.com/javase/6/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 -.RE -.RS 3 -.TP 3 -@version\ version\-text -\-version オプションが使われている場合、生成ドキュメントに [バージョン] 小見出しを追加して、指定された \f2version\-text\fP を書き込みます。このタグは、このコードが含まれるソフトウェアの現在のバージョン番号を保持するように意図されています。 これに対し、@since は、このコードが導入されたバージョン番号を保持します。\f2version\-text\fP には、特別な内部構造はありません。バージョンタグを使用できる場所を調べるには、「タグを使用できる場所」を参照してください。 -.RE - -.LP -.RS 3 - -.LP -.LP -1 つのドキュメンテーションコメントに複数の \f2@version\fP タグを含めることができます。必要に応じて、\f2@version\fP タグごとに 1 つのバージョン番号を指定することも、タグごとに複数のバージョン番号を指定することもできます。前者の場合は、Javadoc ツールによって、名前と名前の間にコンマ (\f2,\fP) とスペースが挿入されます。後者の場合は、テキスト全体が、解析されることなく、生成ドキュメントにそのままコピーされます。したがって、コンマではなく、各言語に対応した名前区切り文字を使う必要があるときは、1 つのタグに複数の名前を指定してください。 -.LP -.LP -詳細については、 +ܺ٤ˤĤƤϡ .na -\f2@version タグのドキュメント\fP @ +\f2@version Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@versionを参照してください。 -.LP +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@version򻲾ȤƤ .RE -.LP .SS -タグを使用できる場所 -.LP -ここでは、タグを使用できる場所について説明します。\f2@see\fP、\f2@since\fP、\f2@deprecated\fP、\f2{@link}\fP、\f2{@linkplain}\fP および \f2{@docroot}\fP のタグは、すべての doc コメントで使用できます。 -.RS 3 - +ѤǤ .LP +ǤϡѤǤˤĤޤ٤ƤΥɥơ󥳥ȤǻѲǽʥϼΤȤǤ \f2@see\fP \f2@since\fP \f2@deprecated\fP \f2{@link}\fP \f2{@linkplain}\fP \f2{@docroot}\fP .SS -概要のドキュメンテーションタグ -.LP -.LP -概要タグは、概要ページのドキュメンテーションコメントで使用できるタグです。 このドキュメンテーションコメントは、通常 \f2overview.html\fP という名前ソースファイル内にあります。ほかのドキュメンテーションコメントの場合と同様に、これらのタグは、主説明のあとで使う必要があります。 +פΥɥơ󥿥 .LP +ץϡץڡΥɥơ󥳥ȤǻѤǤ륿ǤΥɥơ󥳥Ȥϡ̾ \f2overview.html\fP Ȥ̾Υեˤޤ ۤΥɥơ󥳥ȤξƱͤˡΥϡΤȤǻȤɬפޤ .LP -\f3注\fP \- バージョン 1.2 では、概要ドキュメント内の \f2{@link}\fP タグにバグがあります。テキストは正しく表示されますが、リンクが設定されません。現在のところ、\f2{@docRoot}\fP タグは、概要ドキュメント内では動作しません。 +\f3\fP \- С 1.2 Ǥϡץɥ \f2{@link}\fP ˥ХޤƥȤɽޤ󥯤ꤵޤ󡣸ߤΤȤ \f2{@docRoot}\fP ϡץɥǤưޤ .LP +\f3ץ\fP .RS 3 - -.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 -\f2@see\fP -.br -\f2@since\fP -.br -\f2@author\fP -.br -\f2@version\fP -.br -\f2{@link}\fP -.br -\f2{@linkplain}\fP -.br -\f2{@docRoot}\fP -.br -.di -.nr a| \n(dn -.nr a- \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(a- -.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 2279 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 -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3概要タグ\fP -.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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-20 - -.LP +.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 -パッケージタグは、パッケージのドキュメンテーションコメントで使用できるタグです。 このドキュメンテーションコメントは、\f2package.html\fP または \f2package\-info.java\fP という名前のソースファイル内にあります。ここで使用できる \f2@serial\fP タグは、\f2include\fP または \f2exclude\fP 引数を指定したものだけです。 -.LP +\f3ѥå\fP .RS 3 - -.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 -\f2@see\fP -.br -\f2@since\fP -.br -\f2@serial\fP -.br -\f2@author\fP -.br -\f2@version\fP -.br -\f2{@link}\fP -.br -\f2{@linkplain}\fP -.br -\f2{@docRoot}\fP -.br -.di -.nr a| \n(dn -.nr a- \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(a- -.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 2315 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 -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3パッケージタグ\fP -.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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-22 - -.LP +.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 -次に、クラスまたはインタフェースのドキュメンテーションコメントで使用できるタグを示します。ここで使用できる \f2@serial\fP タグは、\f2include\fP または \f2exclude\fP 引数を指定したものだけです。 -.LP +\f3饹ӥ󥿥ե\fP .RS 3 - -.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 -\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 -\f2@see\fP -.br -\f2@since\fP -.br -\f2@deprecated\fP -.br -\f2@serial\fP -.br -\f2@author\fP -.br -\f2@version\fP -.br -\f2{@link}\fP -.br -\f2{@linkplain}\fP -.br -\f2{@docRoot}\fP -.br -.di -.nr b| \n(dn -.nr b- \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 -.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 2355 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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-26 - -.LP +.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 -.LP +\f3˥饹Ȥ򼨤ޤ\fP .nf \f3 .fl @@ -3532,317 +2438,104 @@ class Window extends BaseWindow { ... .fl } -.fl - .fl \fP .fi - -.LP .SS -フィールドドキュメンテーションタグ -.LP +եɥɥơ󥿥 .LP -次に、フィールドのドキュメンテーションコメントで使用できるタグを示します。 +ˡեɤΥɥơ󥳥ȤǻѤǤ륿򼨤ޤ .LP +\f3եɥ\fP .RS 3 - -.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 -\f2@see\fP -.br -\f2@since\fP -.br -\f2@deprecated\fP -.br -\f2@serial\fP -.br -\f2@serialField\fP -.br -\f2{@link}\fP -.br -\f2{@linkplain}\fP -.br -\f2{@docRoot}\fP -.br -\f2{@value}\fP -.br -.di -.nr a| \n(dn -.nr a- \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(a- -.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 2436 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 -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3フィールドタグ\fP -.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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-24 - -.LP -.RE -\f3次にフィールドコメントの例を示します。\fP -.LP -.nf -\f3 -.fl - /** -.fl - * The X\-coordinate of the component. -.fl - * -.fl - * @see #getLocation() -.fl - */ -.fl - int x = 1263732; -.fl - -.fl -\fP -.fi - -.LP -.SS -コンストラクタおよびメソッドドキュメンテーションタグ -.LP -.LP -次に、コンストラクタまたはメソッドのドキュメンテーションコメント内で表示できるタグを示します。 ただし、\f2@return\fP はコンストラクタでは表示できず、\f2{@inheritDoc}\fP は表示に制限があります。\f2@serialData\fP タグは特定の直列化メソッドの doc コメントでのみ使用できます。 -.LP -.RS 3 - -.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 -\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 -\f2@see\fP -.br -\f2@since\fP -.br -\f2@deprecated\fP -.br -\f2@param\fP -.br -\f2@return\fP -.br -\f2@throws\fP と \f2@exception\fP -.br -\f2@serialData\fP -.br -\f2{@link}\fP -.br -\f2{@linkplain}\fP -.br -\f2{@inheritDoc}\fP -.br -\f2{@docRoot}\fP -.br -.di -.nr b| \n(dn -.nr b- \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 -.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 2503 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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-30 - -.LP +.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 +\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 ľ󲽥᥽åɤ doc ȤǤΤ߻ѤǤޤ +.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 @@ -3874,22 +2567,13 @@ class Window extends BaseWindow { .fl } .fl - -.fl \fP .fi -.RE -.SH "オプション" -.LP +.SH "ץ" .LP -javadoc ツールは、ドックレットを使って出力を決定します。Javadoc ツールは、\-doclet オプションでカスタムドックレットが指定されている場合以外は、デフォルトの標準ドックレットを使います。Javadoc ツールには、任意のドックレットとともに使用できるコマンド行オプションがあります。 これらのオプションについては、このあとの「Javadoc オプション」で説明します。標準ドックレットでは、このほかに、いくつかの追加のコマンド行オプションが提供されます。 これらのオプションについては、そのあとの「標準ドックレットが提供するオプション」で説明します。どのオプション名も、大文字と小文字が区別されません。 ただし、オプションの引数では、大文字と小文字が区別されます。 -.LP -.LP -オプションを次に示します。 -.LP -.RS 3 - +javadoc ġϡɥååȤȤäƽϤꤷޤJavadoc ġϡ\-doclet ץǥɥååȤꤵƤʳϡǥեȤɸɥååȤȤޤJavadoc ġˤϡǤդΥɥååȤȤȤ˻ѤǤ륳ޥɹԥץ󤬤ޤΥץˤĤƤϡΤȤΡJavadoc ץפޤɸɥååȤǤϡΤۤˡĤɲäΥޥɹԥץ󶡤ޤΥץˤĤƤϡΤȤΡɸɥååȤ󶡤륪ץפޤɤΥץ̾⡢ʸȾʸ̤ޤ󡣤ץΰǤϡʸȾʸ̤ޤ .LP +ץϼΤȤǤ .LP .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 @@ -4043,6 +2727,8 @@ javadoc ツールは、ドックレットを使って出力を決定します。 .br \-\f2sourcepath\fP .br +\-sourcetab +.br \-splitindex .br \-stylesheetfile @@ -4053,267 +2739,20 @@ javadoc ツールは、ドックレットを使って出力を決定します。 .br \-taglet .br -\-tagletpath -.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 2680 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.-123 - -.LP -.RE -.LP -\f2イタリック\fPで示されたオプションは、Javadoc の基本オプションであり、Javadoc ツールのフロントエンドによって提供され、すべてのドックレットで使用できます。標準ドックレット自体は、イタリックでないオプションを提供します。 -.LP -.SS -Javadoc オプション -.LP -.RS 3 -.TP 3 -\-overview \ path/filename -Javadoc に対して、\f2path/filename\fP で指定された「ソース」ファイルから概要ドキュメント用のテキストを取得し、そのテキストを概要ページ (\f2overview\-summary.html\fP) に配置するように指定します。\f2path/filename\fP は、\f2\-sourcepath\fP への相対パスです。 -.LP -\f2filename\fP と \f2path\fP には、それぞれ任意の名前と場所を指定できますが、通常は、\f2overview.html\fP という名前を付けて、ソースツリー内の最上位のパッケージディレクトリがあるディレクトリに配置します。この場所に配置すると、\f2\-sourcepath\fP によってこのファイルが指し示されるので、パッケージをドキュメント化する際に \f2path\fP が不要になります。たとえば、\f2java.lang\fP パッケージのソースツリーが \f2/src/classes/java/lang/\fP の場合、概要ファイルを \f2/src/classes/overview.html\fP に配置できます。「使用例」を参照してください。 -.LP -\f2path/filename\fP で指定するファイルについては、「概要コメントファイル」を参照してください。 -.LP -概要ページが作成されるのは、Javadoc に複数のパッケージ名を渡した場合だけです。詳細は、「HTML フレーム」を参照してください。 -.LP -概要ページのタイトルは、\f2\-doctitle\fP によって設定されます。 -.LP -.TP 3 -\-public -public クラスおよびメンバーだけを表示します。 -.LP -.TP 3 -\-protected -protected および public のクラスとメンバーだけを表示します。これはデフォルトの設定です。 -.LP -.TP 3 -\-package -package、protected、および public のクラスとメンバーだけを表示します。 -.LP -.TP 3 -\-private -すべてのクラスとメンバーを表示します。 -.LP -.TP 3 -\-help -オンラインヘルプを表示します。 Javadoc とドックレットのコマンド行オプションが一覧表示されます。 -.LP -.TP 3 -\-doclet\ class -ドキュメントの生成に使うドックレットを起動するためのクラスファイルを指定します。完全指定の名前を指定してください。このドックレットにより、出力の内容と形式が定義されます。\f4\-doclet\fP オプションが使われていない場合、Javadoc は、標準ドックレットを使ってデフォルトの HTML 形式を生成します。このクラスには、\f2start(Root)\fP メソッドが含まれていなければなりません。この起動クラスへのパスは、\f2\-docletpath\fP オプションによって定義されます。 -.LP -たとえば、MIF ドックレットを呼び出すには、次のように指定します。 -.nf -\f3 -.fl - \-doclet com.sun.tools.doclets.mif.MIFDoclet -.fl -\fP -.fi -.LP -特定のドックレットを実行した完全な例については、 -.na -\f2MIF Doclet のドキュメント\fP @ -.fi -http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.htmlを参照してください。 -.LP -.TP 3 -\-docletpath\ classpathlist -\f2\-doclet\fP オプションで指定されているドックレット開始クラスファイル、およびそれが依存するすべての jar ファイルへのパスを指定します。開始クラスファイルが jar ファイル内にある場合、以下の例のように jar ファイルのパスが指定されます。絶対パスまたは現在のディレクトリからの相対パスを指定できます。\f2classpathlist\fP には、複数のパスまたは JAR ファイルを含めることができます。 その場合、各パスまたは JAR ファイルを、Solaris の場合にはコロン (:)、Windows の場合にはセミコロン (;) で区切ります。目的のドックレット開始クラスがすでに検索パス内にある場合は、このオプションは不要です。 -.LP -jar ファイルへのパスの例には、ドックレット開始クラスファイルが含まれています。jar ファイル名が含まれている点に注目してください。 -.nf -\f3 -.fl - \-docletpath /home/user/mifdoclet/lib/mifdoclet.jar -.fl -\fP -.fi -ドックレット開始クラスファイルのパスの例。クラスファイル名が省略されている点に注目してください。 -.nf -\f3 -.fl - \-docletpath /home/user/mifdoclet/classes/com/sun/tools/doclets/mif/ -.fl -\fP -.fi -特定のドックレットを実行した完全な例については、 -.na -\f2MIF Doclet のドキュメント\fP @ -.fi -http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.htmlを参照してください。 -.LP -.TP 3 -\-1.1 -\f2この機能は、Javadoc 1.4 では削除されました。代替機能はありません。このオプションは、Javadoc 1.1 によって生成されるのと同じ外見と機能を持つドキュメントを作成するためのものでした。 入れ子のクラスはサポートされていません。このオプションが必要な場合は、Javadoc 1.2 または 1.3 を使用してください。\fP -.LP -.TP 3 -\-source release -受け付けるソースコードのバージョンを指定します。\f2release\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 +\-tagletpath .br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Javadoc は、JDK 1.5 で導入された総称および他の言語機能を含んだコードを受け付けます。\f3\-source\fP フラグを指定しないと、コンパイラはデフォルトとして 1.5 の動作をします。 +\-top .br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 +\-title .br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Javadoc は、JDK 1.4 で導入された、アサーションを含むコードを受け付けます。 +\-use .br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 +\-\f2verbose\fP +.br +\-version +.br +\-windowtitle .br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、または他の言語機能をサポートしません。 .br .di .nr c| \n(dn @@ -4324,35 +2763,20 @@ Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、ま .nf .ll \n(34u .nr 80 0 -.nr 31 0 -.nr 32 0 -.nr 38 \w\f31 -.if \n(31<\n(38 .nr 31 \n(38 -.nr 38 \w.5\fP -.if \n(32<\n(38 .nr 32 \n(38 -.nr 38 \w\f31 -.if \n(31<\n(38 .nr 31 \n(38 -.nr 38 \w.4\fP -.if \n(32<\n(38 .nr 32 \n(38 -.nr 38 \w\f31 -.if \n(31<\n(38 .nr 31 \n(38 -.nr 38 \w.3\fP -.if \n(32<\n(38 .nr 32 \n(38 .80 .rm 80 -.nr 60 \n(31 -.nr 38 \n(60+\n(32 -.if \n(38>\n(80 .nr 80 \n(38 -.if \n(38<\n(80 .nr 60 +(\n(80-\n(38)/2 +.nr 38 \n(a- +.if \n(80<\n(38 .nr 80 \n(38 .nr 81 0 .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 82 0 +.82 +.rm 82 .nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 +.if \n(82<\n(38 .nr 82 \n(38 .35 .nf .ll \n(34u @@ -4360,11 +2784,12 @@ Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、ま .nr 79 0 .nr 40 \n(79+(0*\n(38) .nr 80 +\n(40 -.nr 60 +\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 2790 file Input is too wide - \n(TW units +.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 2009 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -4379,29 +2804,24 @@ Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、ま .. .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) -.ta \n(60u \n(80u \n(81u +.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'\f31.5\fP\h'|\n(41u' +\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u' .mk ## .nr 31 \n(## .sp |\n(##u-1v -.nr 37 \n(41u +.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(60u \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f31.4\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## .sp |\n(##u-1v .nr 37 \n(41u .in +\n(37u @@ -4409,17 +2829,8 @@ Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、ま .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(60u \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f31.3\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## .sp |\n(##u-1v -.nr 37 \n(41u +.nr 37 \n(42u .in +\n(37u .c+ .in -\n(37u @@ -4434,17 +2845,117 @@ Javadoc は、JDK 1.3 以降に導入されたアサーション、総称、ま .rm b+ .rm c+ .TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-14 +.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 ϡȥǥ쥯ȥ꤫ХѥǤ +.LP +\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 ֤Ǥޤֻפ򻲾ȤƤ +.LP +\f2path/filename\fP ǻꤹեˤĤƤϡֳץȥեפ򻲾ȤƤ +.LP +ץڡΤϡJavadoc ʣΥѥå̾ϤǤܺ٤ϡHTML ե졼פ򻲾ȤƤ +.LP +ץڡΥȥϡ\f2\-doctitle\fP ˤäꤵޤ +.LP +.TP 3 +\-public +public 饹ӥСɽޤ +.LP +.TP 3 +\-protected +protected public Υ饹ȥСɽޤ줬ǥեȤǤ +.LP +.TP 3 +\-package +packageprotected public Υ饹ȥСɽޤ +.LP +.TP 3 +\-private +٤ƤΥ饹ȥСɽޤ +.LP +.TP 3 +\-help +饤إפɽޤJavadoc ȥɥååȤΥޥɹԥץ󤬰ɽޤ +.LP +.TP 3 +\-doclet\ class +ɥȤ˻ȤɥååȤư뤿Υ饹եꤷޤ̾ꤷƤΥɥååȤˤꡢϤƤȷޤ\f4\-doclet\fP ץ󤬻ȤƤʤ硢Javadoc ϡɸɥååȤȤäƥǥեȤ HTML ޤΥ饹ˤ \f2start(Root)\fP ޤޤƤɬפޤεư饹ؤΥѥ \f2\-docletpath\fP ץˤäޤ +.LP +ȤСMIF ɥååȤƤӽФˤϡΤ褦˻ꤷޤ +.nf +\f3 +.fl + \-doclet com.sun.tools.doclets.mif.MIFDoclet +.fl +\fP +.fi +.LP +ΥɥååȤ¹ԤˤĤƤϡ +.na +\f2MIF Doclet Υɥ\fP @ +.fi +http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.html򻲾ȤƤ +.LP +.TP 3 +\-docletpath\ classpathlist +\f2\-doclet\fP ץǻꤵ줿ɥååȳϥ饹ե롢 ӤΥ饹¸뤹٤Ƥ JAR եؤΥѥꤷޤϥ饹ե뤬 jar եˤ硢ʲΤ褦 jar եΥѥꤵޤХѥޤϸߤΥǥ쥯ȥ꤫ХѥǤޤ \f2classpathlist\fP ˤϡʣΥѥޤ JAR եޤ뤳ȤǤޤ ξ硢ƥѥޤ JAR եSolaris ξˤϥ (:)Windows ξˤϥߥ (;) ǶڤޤŪΥɥååȳϥ饹Ǥ˸ѥˤϡΥץפǤ +.LP +jar եؤΥѥˤϡɥååȳϥ饹ե뤬ޤޤƤޤjar ե̾ޤޤƤܤƤ +.nf +\f3 +.fl + \-docletpath /home/user/mifdoclet/lib/mifdoclet.jar +.fl +\fP +.fi +ɥååȳϥ饹եΥѥ㡣饹ե̾άƤܤƤ +.nf +\f3 +.fl + \-docletpath /home/user/mifdoclet/classes/com/sun/tools/doclets/mif/ +.fl +\fP +.fi +ΥɥååȤ¹ԤˤĤƤϡ +.na +\f2MIF Doclet Υɥ\fP @ +.fi +http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.html򻲾ȤƤ +.LP +.TP 3 +\-1.1 +\f2εǽ Javadoc 1.4 ޤصǽϤޤ󡣤ΥץϡJavadoc 1.1 ˤäΤƱȵǽĥɥȤ뤿ΤΤǤҤΥ饹ϥݡȤƤޤ󡣤ΥץɬפʾϡJavadoc 1.2 ޤ 1.3 ѤƤ\fP +.LP +.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 .LP -javac でコードをコンパイルするときに使用した値に対応する \f2release\fP の値を使用します。 +javac ǥɤ򥳥ѥ뤹Ȥ˻Ѥͤб \f2release\fP ͤѤޤ .LP .TP 3 \-sourcepath\ sourcepathlist -\f2javadoc\fP コマンドにパッケージ名または \f2\-subpackages\fP を渡すときに、ソースファイル (\f2.java\fP) を検索するためのパスを指定します。\f2sourcepathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパス以下のすべてのサブディレクトリを検索します。このオプションを使って、ドキュメント化されるソースファイルの位置だけでなく、それ自体はドキュメント化されないがドキュメント化されるソースファイルから継承されたコメントを持つソースファイルの位置も確認できます。 +ѥå̾ޤ \-subpackages javadoc ޥɤϤȤϡե (.\f2.java\fP) 򸫤Ĥ뤿 \f2ѥ\fP \f2ޤ\fP \f2sourcepathlist\fP ˤϡ (\f2:\fP) ǶڤäʣΥѥޤ뤳ȤǤޤJavadoc ġϡꤵ줿ѥʲΤ٤ƤΥ֥ǥ쥯ȥ򸡺ޤΥץȤäơɥȲ륽եΰ֤Ǥʤ켫ΤϥɥȲʤɥȲ륽ե뤫Ѿ줿Ȥĥեΰ֤ǧǤޤ .LP -\f2\-sourcepath\fP オプションは、javadoc コマンドにパッケージ名を渡すときにだけ使用できます。 \f2javadoc\fP コマンドに渡される \f2.java\fP ファイルは、このパスからは検索されません。\f2.java\fP ファイルを検索するには、そのファイルのあるディレクトリに cd によって移動するか、または各ファイルの先頭にパスを含めます (「1 つ以上のクラスのドキュメント化」を参照)。\f2\-sourcepath\fP が省略された場合、Javadoc は、クラスパスを使ってソースファイルを検索します (\-classpath を参照)。したがって、デフォルトの \-sourcepath は、クラスパスの値です。\-classpath も省略してパッケージ名を Javadoc に渡すと、Javadoc は現在のディレクトリおよびそのサブディレクトリからソースファイルを検索します。 +\f2\-sourcepath\fP ץѤǤΤϡjavadoc ޥɤ˥ѥå̾ϤǤΥѥϡjavadoc ޥɤϤ줿 \f2.java\fP ե \f2\fP ޤ \f2.java\fP ե򸡺ˤϡΥեΤǥ쥯ȥ cd ˤäưư뤫ޤϳƥեƬ˥ѥޤޤ (1 İʾΥ饹ΥɥȲפ򻲾) \f2\-sourcepath\fP ά줿硢Javadoc ϡ饹ѥȤäƥե򸡺ޤ (\-classpath 򻲾)äơǥեȤ \-sourcepath ϡ饹ѥͤǤ\-classpath άƥѥå̾ Javadoc ϤȡJavadoc ϸߤΥǥ쥯ȥꤪӤΥ֥ǥ쥯ȥ꤫饽ե򸡺ޤ .LP -\f2sourcepathlist\fP には、ドキュメント化するパッケージ名のソースツリーのルートディレクトリを設定します。たとえば、\f2com.mypackage\fP というパッケージをドキュメント化する場合に、そのソースファイルが次の場所にあるとします。 +\f2sourcepathlist\fP ˤϡɥȲѥå̾Υĥ꡼Υ롼ȥǥ쥯ȥꤷޤȤС \f2com.mypackage\fP Ȥ̾ΥѥåɥȲˡΥե뤬ξˤȤޤ .nf \f3 .fl @@ -4452,16 +2963,16 @@ javac でコードをコンパイルするときに使用した値に対応す .fl \fP .fi -この場合、次のようにして \f2sourcepath\fP を \f2/home/user/src\fP、つまり \f2com/mypackage\fP を含むディレクトリに指定し、それからパッケージ名 \f2com.mypackage\fP を指定します。 +ΤȤΤ褦ˡ \f2sourcepath\fP com/mypackage ޤǥ쥯ȥǤ \f2/home/user/src\fP ˻ꤷȡ ѥå̾ \f2com.mypackage\fP ꤷޤ .nf \f3 .fl % \fP\f3javadoc \-sourcepath /home/user/src/ com.mypackage\fP .fl .fi -この方法は、ソースパスの値とパッケージ名を連結して、ドットを (円記号) 「\\」に変えると、パッケージのフルパス (C:\\user\\src\\com\\mypackage) になることを理解すると簡単です。\f2/home/user/src/com/mypackage\fP. +ˡϡѥͤȥѥå̾Ϣ뤷ơɥåȤ (ߵ) \\פѤȡѥåΥեѥ \f2/home/user/src/com/mypackage ˤʤ뤳Ȥ򤹤ȴñǤ\fP .LP -2 つのソースパスを設定するには、次のようにします。 +2 ĤΥѥꤹˤϡΤ褦ˤޤ .nf \f3 .fl @@ -4471,132 +2982,124 @@ javac でコードをコンパイルするときに使用した値に対応す .LP .TP 3 \-classpath\ classpathlist -Javadoc が参照クラス (\f2.class\fP ファイル) を検索するパスを指定します。 参照クラスとは、ドキュメント化されるクラスとそれらのクラスによって参照されるすべてのクラスのことです。\f2classpathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパスの以下すべてのサブディレクトリを検索します。\f2classpathlist\fP を指定するときは、 +javadoc ȥ饹 (\f2.class\fP ե) θԤȤ˻Ѥѥꤷޤȥ饹ȤϡɥȲ륯饹ȡΥ饹黲Ȥ뤹٤ƤΥ饹ؤޤ\f2classpathlist\fP ˤϡ (\f2:\fP) ǶڤäʣΥѥޤ뤳ȤǤޤ Javadoc ġϡꤵ줿ѥʲΤ٤ƤΥ֥ǥ쥯ȥ򸡺ޤclasspathlist ꤹȤϡ .na -\f2クラスパス\fP @ +\f2饹ѥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#generalのドキュメントにある指示に従ってください。 +http://java.sun.com/javase/6/docs/technotes/tools/index.html#generalΥɥȤˤؼ \f2˽äƤ\fP .LP -\f2\-sourcepath\fP が省略されている場合、Javadoc ツールは、\f2\-classpath\fP を使って、クラスファイルだけでなくソースファイルも検索します (下位互換性のため)。したがって、ソースファイルとクラスファイルを別々のパスから検索する必要がある場合は、\f2\-sourcepath\fP と \f2\-classpath\fP の両方を使います。 +\f2\-sourcepath\fP άȡJavadoc ġϥ饹ե򸡺ȤǤʤե򸡺Ȥˤ \f2\-classpath\fP Ѥޤ (̸ߴΤ)äơեȥ饹ե̡Υѥ鸡ɬפϡ \f2\-sourcepath\fP \f2\-classpath ξȤޤ\fP. .LP -たとえば、\f2com.mypackage\fP をドキュメント化する場合に、ソースファイルがディレクトリ \f2/home/user/src/com/mypackage\fP にあり、このパッケージが \f2/home/user/lib\fP 内のライブラリを使うのであれば、次のように指定します。 +ȤС \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 ツールは現在のディレクトリからクラスを検索します。 +\f2\-classpath\fP ꤵʤä硢Javadoc ġϤۤΥġƱCLASSPATH ĶѿꤵƤФͤѤޤɤꤵƤʤ硢Javadoc ġϸߤΥǥ쥯ȥ꤫饯饹򸡺ޤ .LP -Javadoc ツールは拡張機能クラスおよびブートストラップクラスに関連しているため、Javadoc ツールが \f2\-classpath\fP を使用してユーザークラスを検索する方法についての詳細は、 +Javadoc ġ뤬 \f2\-classpath\fP Ѥƥ桼饹򸡺ˡˤĤơĥ饹֡ȥȥåץ饹ȴϢդƤꤹˤϡ .na -\f2「クラスの検索方法」\fP @ +\f2֥饹θˡ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.htmlをご覧ください。 +http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html򻲾ȤƤ .LP -便宜上、\f2*\fP のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 \f2.jar\fP または \f2.JAR\fP を持つすべてのファイルのリストを指定するのと同じとみなされます (Java プログラムはこの 2 つの呼び出しを区別できない)。 +ص塢 \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 仮想マシンの起動前に実行されます。したがって、\f2System.getenv("CLASSPATH")\fP 呼び出しのように環境に問い合わせを行わない限り、Java プログラムが展開されていないワイルドカードを認識することはありません。 +ȤСǥ쥯ȥ \f2foo\fP \f2a.jar\fP \f2b.JAR\fP ޤޤƤ硢饹ѥ \f2foo/*\fP \f2A.jar:b.JAR\fP ŸޤJAR եν֤̤ȤʤޤΥꥹȤˤϡեޤᡢꤵ줿ǥ쥯ȥΤ٤Ƥ JAR ե뤬ޤޤޤ* \f2饹ѥȥϡ\fP ȥǥ쥯ȥΤ٤Ƥ JAR եΥꥹȤŸޤ \f2CLASSPATH\fP Ķѿ⡢ˤƱͤŸޤ饹ѥΥ磻ɥŸɬJava ۥޥεư˼¹Ԥޤäơ\f2System.getenv("CLASSPATH")\fP ƤӽФΤ褦˴Ķ䤤碌Ԥʤ¤ꡢJava ץबŸƤʤ磻ɥɤǧ뤳ȤϤޤ .LP .TP 3 \-subpackages\ \ package1:package2:... -ソースファイルから指定されたパッケージおよびそのサブパッケージ内に再帰的にドキュメントを生成します。このオプションは、ソースコードに新しいサブパッケージを追加する際に便利です。新しいサブパッケージは自動的に組み込まれます。各 \f2package\fP 引数は、任意の最上位サブパッケージ (\f2java\fP など) または完全指定のパッケージ (\f2javax.swing\fP など) になります。ソースファイルを含める必要はありません。引数は、コロンで区切られます (すべてのオペレーティングシステム)。ワイルドカードは不要です (使用不可)。パッケージの検索場所を指定するには、\f2\-sourcepath\fP を使用します。このオプションは、「ソースファイルの処理」で説明したとおり、ソースツリーにあるがパッケージには属していないソースファイルを処理しないので役立ちます。 +ե뤫ꤵ줿ѥåӤΥ֥ѥå˺ƵŪ˥ɥȤޤΥץϡɤ˿֥ѥåɲäݤǤ֥ѥåϼưŪȤ߹ޤޤ \f2package\fP ϡǤդκǾ̥֥ѥå ( \f2java\fP ʤ) ޤϴѥå ( \f2javax.swing\fP ʤ) ˤʤޤեޤɬפϤޤ󡣰ϡǶڤޤ (٤ƤΥڥ졼ƥ󥰥ƥ)磻ɥɤפǤ (Բ)ѥåθꤹˤϡ\f2\-sourcepath\fP ѤޤΥץϡ֥եνפȤꡢĥ꡼ˤ뤬ѥåˤ°ƤʤեʤΤΩޤ .LP -例を示します。 +ȤС .nf \f3 .fl % \fP\f3javadoc \-d docs \-sourcepath /home/user/src \-subpackages java:javax.swing\fP .fl .fi -このコマンドは、「java」および「javax.swing」という名前のパッケージとこれらのサブパッケージ全部のドキュメントを生成します。 +Υޥɤϡjavaפӡjavax.swingפȤ̾ΥѥåȤΥ֥ѥåΥɥȤޤ .LP -\f2\-exclude\fP とともに \f2\-subpackages\fP を使用すると、特定のパッケージを除外できます。 +\f2\-subpackages\fP \f2\-exclude\fP Ȥ߹碌ƻѤȡΥѥåǤޤ .LP .TP 3 \-exclude\ \ packagename1:packagename2:... -指定されたパッケージとそのサブパッケージを \f2\-subpackages\fP によって作成されたリストから無条件に除外します。過去の \f2\-subpackages\fP オプションの指定によって組み込まれたパッケージ、または将来組み込まれるパッケージも除外の対象となります。例を示します。 +ꤵ줿ѥåȤΥ֥ѥå \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 は除外されます。 +ξ硢 \f2java.io\fP \f2java.util\fP \f2java.math\fP ʤɤޤ졢 \f2java.net\fP \f2java.lang\fP 롼Ȥ˻ĥѥåޤξ硢 \f2java.lang\fP Υ֥ѥåǤ \f2java.lang.ref\fP դƤ .LP .TP 3 \-bootclasspath\ classpathlist -ブートクラスが存在するパスを指定します。ブートクラスとは、通常、Java プラットフォームのコアクラスのことです。ブートクラスパスは、Javadoc ツールがソースファイルとクラスファイルを探すときに使う検索パスの一部です。詳細は、 +֡ȥ饹¸ߤѥꤷޤ֡ȥ饹Ȥϡ̾Java ץåȥեΥ饹ΤȤǤ֡ȥ饹ѥϡJavadoc ġ뤬եȥ饹եõȤ˻ȤѥΰǤܺ٤ϡ .na -\f2「javac と javadoc がクラスを検索する方法」\fP @ +\f2֥饹θˡ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html#srcfilesを参照してください。\f2classpathlist\fP 内の複数のディレクトリは、コロン (:) で区切ります。 +http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html#srcfiles򻲾ȤƤ (:) \f2classpathlist\fP Υǥ쥯ȥ֤ζڤʸȤƻѤޤ .LP .TP 3 \-extdirs\ dirlist -拡張機能クラスが存在するディレクトリを指定します。拡張機能クラスとは、Java 拡張機能機構を使うすべてのクラスです。extdirs は、Javadoc ツールがソースファイルとクラスファイルを探すときに使う検索パスの一部です。詳細は、前述の \f2\-classpath\fP を参照してください。\f2dirlist\fP 内の複数のディレクトリは、コロン (:) で区切ります。 +ĥǽ饹¸ߤǥ쥯ȥꤷޤĥǽ饹ȤϡJava ĥǽȤ٤ƤΥ饹Ǥextdirs ϡJavadoc ġ뤬եȥ饹եõȤ˻ȤѥΰǤܺ٤ϡҤ \f2\-classpath\fP 򻲾ȤƤ (:) \f2dirlist\fP Υǥ쥯ȥ֤ζڤʸȤƻѤޤ .LP .TP 3 \-verbose -javadoc の実行中に詳細なメッセージを表示します。verbose オプションを指定しないと、ソースファイルのロード時、ドキュメントの生成時 (ソースファイルごとに 1 つのメッセージ)、およびソート時にメッセージが表示されます。verbose オプションを指定すると、各 Java ソースファイルの解析に要した時間 (ミリ秒単位) など、追加のメッセージが表示されます。 +javadoc μ¹˾ܺ٤ʥåɽޤverbose ץꤷʤȡեΥɻɥȤ (ե뤴Ȥ 1 ĤΥå)ӥȻ˥åɽޤverbose ץꤹȡ Java եβϤפ (ߥñ) ʤɡɲäΥåɽޤ .LP .TP 3 \-quiet -エラーメッセージまたは警告メッセージ以外のメッセージを抑制し、警告とエラーだけが表示されるようにして、これらを特定しやすくします。バージョン文字列も抑制します。 +顼åޤϷٹåʳΥåٹȥ顼ɽ褦ˤơꤷ䤹ޤСʸޤ .LP .TP 3 \-breakiterator\ -英語言語というロケール固有のアルゴリズムではなく、 +ѸκǽʸꤹݤˡѸѤΥͭΥ르ꥺǤϤʤ .na \f2java.text.BreakIterator\fP @ .fi -http://java.sun.com/javase/6/docs/api/java/text/BreakIterator.html の国際化された文境界を使用して、英文の最初の文の終わりを判断します (他のすべてのロケールはすでに \f2BreakIterator\fP を使用)。\f2「最初の文」\fPとは、パッケージ、クラス、またはメンバーの主説明での最初の文のことです。この文は、パッケージ、クラス、またはメンバーの要約にコピーされ、アルファベット順のインデックスにコピーされます。 +http://java.sun.com/javase/6/docs/api/java/text/BreakIterator.html ιݲ줿ʸѤޤ (ۤΤ٤ƤΥǤϤǤ \f2BreakIterator\fP ѤƤ)\f2ֺǽʸ\fPȤϡѥå饹ޤϥСμǤκǽʸΤȤǤʸϡѥå饹ޤϥС˥ԡ졢ե٥åȽΥǥå˥ԡޤ .LP -JDK 1.2 以降、BreakIterator クラスは、英語を除くすべての言語の文の終わりを判断するために、すでに使用されています。したがって、1.2 以降では、\f2\-breakiterator\fP オプションは英文以外には効果がありません。英文には、次のような独自のデフォルトのアルゴリズムがあります。 +JDK 1.2 ʹߡBreakIterator 饹ϡѸ٤ƤθʸνȽǤ뤿ˡǤ˻ѤƤޤäơ \f2\-breakiterator\fP ץϡ1.2 ʹߤǤϱʸʳˤϸ̤ޤ󡣱ʸˤϡΤ褦ȼΥǥեȤΥ르ꥺबޤ .RS 3 .TP 2 o -英文のデフォルトの文区切りアルゴリズム \- 空白または HTML ブロックタグ (\f2<P>\fP など) が続くピリオドで停止する +ʸΥǥեȤʸڤꥢ르ꥺ \- ޤ HTML ֥å ( \f2<P>\fP ʤ) ³ԥꥪɤߤ .TP 2 o -breakiterator 文区切りアルゴリズム \- 一般に、次の語が大文字で始まる場合、空白文字が続くピリオド、疑問符、または感嘆符で停止する。このアルゴリズムでは、ほとんどの省略表記が処理される (「The serial no. is valid」は処理されるが「Mr. Smith」は処理されない)。HTML タグや、数字または記号で始まる文では停止しない。HTML タグに埋め込まれている場合でも、「../filename」の最後のピリオドで停止する +breakiterator ʸڤꥢ르ꥺ \- ̤ˡθ줬ʸǻϤޤ硢ʸ³ԥꥪɡ䡢ޤϴòߤ롣Υ르ꥺǤϡThe serial no. is validפʤɡۤȤɤξάɽޤMr. SmithפʤɤϽޤHTML 䡢ޤϵǻϤޤʸǤߤʤHTML ޤƤǤ⡢../filenameפκǸΥԥꥪɤߤ .RE -.RS 3 - -.LP .LP -注: 1.5.0 からは、1.4.x に設けられていた breakiterator 警告メッセージを削除し、デフォルトの文区切りアルゴリズムを変更していません。つまり、\\\-breakiterator オプションは、1.5.0 ではデフォルトではなくなり、またデフォルトにするつもりもありません。これは、「次のメジャーリリース」(1.5.0) でデフォルトを変更するという、以前の目的とは逆になっています。つまり、ソースコードを変更せず、1.4.x での breakiterator 警告を除去していない場合でも、1.5.0 からは何もする必要がなく、警告は消滅しています。 この逆戻りの理由は、breakiterator をデフォルトにするメリットよりも、デフォルトにするために必要となる、互換性のないソースの変更の方が負担が大きかったためです。この件で皆様に余分の手間をおかけし、混乱を招いたことをお詫びいたします。 -.LP -.RE +: 1.5.0 ϡ1.4.x ߤƤ breakiterator ٹåǥեȤʸڤꥢ르ꥺѹƤޤ󡣤Ĥޤꡢ\\\-breakiterator ץϡ1.5.0 ǤϥǥեȤǤϤʤʤꡢޤǥեȤˤĤ⤢ޤ󡣤ϡּΥ᥸㡼꡼(1.5.0) ǥǥեȤѹȤŪȤϵդˤʤäƤޤĤޤꡢɤѹ1.4.x Ǥ breakiterator ٹƤʤǤ⡢1.5.0 ϲ⤹ɬפʤٹϾǤƤޤεͳϡbreakiterator ǥեȤˤåȤ⡢ǥեȤˤ뤿ɬפȤʤ롢ߴΤʤѹô礭äǤηdzͤ;ʬμ֤򤪤򾷤ȤͤӤޤ .TP 3 \-locale\ language_country_variant -.RS 3 -.LP -\f3重要\fP \- \f2\-locale\fP オプションは、標準ドックレットが提供するすべてのオプション、またはその他の任意のドックレットの提供するすべてのオプションより前 (左側) に指定する必要があります。そうしないと、ナビゲーションバーが英語で表示されます。このコマンド行オプションだけは、指定する順序に依存します。 .LP -.RE +\f3\fP \- \f2\-locale\fP ץϡ\f2ɸɥååȤ󶡤뤹٤ƤΥץ\fPޤϤ¾ǤդΥɥååȤ󶡤뤹٤ƤΥץ (¦) ˻ꤹɬפޤʤȡʥӥСѸɽޤΥޥɹԥץϡꤹ˰¸ޤ .LP -Javadoc がドキュメントを生成するときに使うロケールを指定します。引数には、java.util.Locale のドキュメントで説明されているロケールの名前を指定します。たとえば、\f2en_US\fP (英語、米国)、\f2en_US_WIN\fP (Windows で使われる英語) などを指定します。 +Javadoc ɥȤȤ˻ȤꤷޤΰϼΤ褦ʡjava.util.Locale ΥɥơƤ̾Ǥ \f2en_US\fP (Ѹ졢ƹ) ޤ \f2en_US_WIN\fP (Windows ǻѤѸ) .LP -ロケールを指定すると、指定したロケールのリソースファイルが Javadoc によって選択されて、メッセージ (ナビゲーションバー、リストと表の見出し、ヘルプファイルの目次、stylesheet.css のコメントなどの文字列) のために使われます。また、アルファベット順にソートされるリストのソート順、および最初の文の末尾を判別するための文の区切り文字も、指定したロケールによって決まります。ただし、このオプションは、ドキュメント化されるクラスのソースファイル内で指定されているドキュメンテーションコメントのテキストのロケールを決定するものではありません。 +ꤹȡꤷΥ꥽ե뤬 Javadoc ˤä򤵤ơå (ʥӥСꥹȤɽθФإץեܼstylesheet.css ΥȤʤɤʸ) Τ˻Ȥޤޤե٥åȽ˥ȤꥹȤΥȽ硢ӺǽʸȽ̤뤿ʸζڤʸ⡢ꤷˤäƷޤޤΥץϡɥȲ륯饹ΥեǻꤵƤɥơ󥳥ȤΥƥȤΥꤹΤǤϤޤ .LP .TP 3 \-encoding\ name -ソースファイルのエンコーディングの名前 (\f2EUCJIS/SJIS\fP など) を指定します。このオプションが指定されていない場合は、プラットフォームのデフォルトコンバータが使われます。 +եΥ󥳡ǥ󥰤̾ ( \f2EUCJIS/SJIS\fP ʤ) ꤷޤ Υץ󤬻ꤵƤʤϡץåȥեΥǥեȥСȤޤ .LP -\-docencoding および \-charset も参照してください。 +\-docencoding \-charset ⻲ȤƤ .LP .TP 3 \-Jflag -javadoc を実行する実行時システム java に、\f2flag\fP を直接渡します。\f2J\fP と \f2flag\fP の間に空白を入れてはなりません。たとえば、生成ドキュメントを処理するためにシステムで 32M バイトのメモリーを確保しておく必要がある場合は、Java の \f2\-Xmx\fP オプションを次のように呼び出します。 \f2\-Xms\fP は、省略可能です。 これは、初期メモリーのサイズを設定するだけのオプションで、必要なメモリーの最小サイズがわかっている場合に便利です。 +javadoc ¹Ԥ¹Իƥ java ˡ\f2flag\fP ľϤޤ \f2J\fP \f2flag\fP δ֤˶ʤ褦դƤȤСɥȤνѤȤ32M ХȤΥ꡼򥷥ƥdzݤƤɬפˤϡ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」オプションを呼び出します。 +ѤƤ javadoc ΥСǧˤϡΤ褦 Java \f2\-version\fPץƤӽФޤ .nf \f3 .fl @@ -4607,17 +3110,16 @@ javadoc を実行する実行時システム java に、\f2flag\fP を直接渡 Classic VM (build JDK\-1.2\-V, green threads, sunwjit) .fl .fi -出力ストリームには標準ドックレットのバージョン番号が含まれます。 +ϥȥ꡼ˤɸɥååȤΥСֹ椬ޤޤޤ .RE .SS -標準ドックレットが提供するオプション -.LP +ɸɥååȤ󶡤륪ץ .RS 3 .TP 3 \-d\ directory -生成された HTML ファイルを保存する生成先ディレクトリを指定します(「d」は「生成先 (destination)」の意味)。このオプションを省略すると、生成されたファイルは現在のディレクトリに保存されます。値 \f2directory\fP には、絶対ディレクトリ、または現在の作業ディレクトリからの相対ディレクトリを指定できます。バージョン 1.4 では、javadoc を実行すると生成先ディレクトリが自動的に作成されます。 +줿 HTML ե¸ǥ쥯ȥꤷޤ(dפϡ (destination)פΰ̣)Υץάȡ줿եϸߤΥǥ쥯ȥ¸ޤ \f2directory\fP ˤϡХǥ쥯ȥꡢޤϸߤκȥǥ쥯ȥ꤫Хǥ쥯ȥǤޤС 1.4 Ǥϡjavadoc ¹Ԥǥ쥯ȥ꤬ưŪ˺ޤ .LP -たとえば、次の例では、\f2com.mypackage\fP パッケージのドキュメントを生成し、結果を \f2/home/user/doc/\fP ディレクトリに保存します。 +Ȥмξ硢ѥå \f2com.mypackage\fP ΥɥȤ졢η̤ \f2/home/user/doc/\fP ǥ쥯ȥ¸ޤ .nf \f3 .fl @@ -4627,50 +3129,50 @@ javadoc を実行する実行時システム java に、\f2flag\fP を直接渡 .LP .TP 3 \-use -ドキュメント化されるクラスおよびパッケージごとに 1 つの [使用] ページを組み込みます。このページには、その特定のクラスまたはパッケージの API を使っているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドが記述されます。たとえば、クラス C を例にとると、クラス C を使っているものとしては、C のサブクラス、C として宣言されているフィールド、C を返すメソッド、および、型 C のパラメータを持つメソッドとコンストラクタがあります。 +ɥȲ륯饹ӥѥåȤ 1 ĤΡֻѡץڡȤ߹ߤޤΥڡˤϡΥ饹ޤϥѥå API ȤäƤѥå饹᥽åɡ󥹥ȥ饯ӥեɤҤޤȤС饹 C ˤȤȡ饹 C ȤäƤΤȤƤϡC Υ֥饹C ȤƤեɡC ֤᥽åɡӡ C Υѥ᡼ĥ᥽åɤȥ󥹥ȥ饯ޤ .LP -たとえば、String の [使用] ページに何が表示されるかを見てみましょう。\f2java.awt.Font\fP クラスの \f2getName()\fP メソッドは、\f2String\fP 型を返します。したがって、\f2getName()\fP は \f2String\fP を使っているので、\f2String\fP の [使用] ページにはこのメソッドがあります。 +ȤСString [] ڡ˲ɽ뤫򸫤Ƥߤޤ礦java.awt.Font 饹 \f2getName()\fP ᥽åɤϡ \f2String\fP ͤ \f2֤ޤ\fPäơ \f2getName()\fP \f2String\fP ѤƤΤǡString [] ڡ \f2Υ᥽åɤɽޤ\fP .LP -ただし、ドキュメント化されるのは API の使用だけであって、実装はドキュメント化されません。あるメソッドが、その実装の中で \f2String\fP を使っていても、引数として文字列をとったり、文字列を返したりしない場合は、\f2String\fP の「使用」とはみなされません。 +ɥȲΤ API λѤǤäơϥɥȲޤ󡣤᥽åɤμ \f2String\fP ȤäƤƤ⡢ȤʸȤäꡢʸ֤ꤷʤϡ \f2String\fP ΡֻѡפȤϤߤʤޤ .LP -生成された [使用] ページにアクセスするには、目的のクラスまたはパッケージに移動し、ナビゲーションバーの [使用] リンクをクリックします。 +줿 [] ڡ˥ˤϡŪΥ饹ޤϥѥå˰ưʥӥС [] 󥯤򥯥åޤ .TP 3 \-version -生成ドキュメントに、@version のテキストを組み込みます。このテキストは、デフォルトでは省略されます。使用している Javadoc ツールのバージョンを確認するには、\f2\-J\-version\fP オプションを使用します。 +ɥȤˡ@version ΥƥȤȤ߹ߤޤΥƥȤϡǥեȤǤϾάޤѤƤ Javadoc ġΥСǧˤ \f2\-J\-version\fP ץѤޤ .LP .TP 3 \-author -生成ドキュメントに、@author のテキストを組み込みます。 +ɥȤˡ@author ΥƥȤȤ߹ߤޤ .LP .TP 3 \-splitindex -索引ファイルをアルファベットごとに複数のファイルに分割し、文字ごとに 1 つのファイルと、アルファベット以外の文字で始まる索引エントリ用に 1 つのファイルを作成します。 +ե򥢥ե٥åȤȤʣΥեʬ䤷ʸȤ 1 ĤΥեȡե٥åȰʳʸǻϤޤȥѤ 1 ĤΥեޤ .LP .TP 3 \-windowtitle\ title -HTML の <title> タグに配置するタイトルを指定します。指定したタイトルは、ウィンドウのタイトルや、このページに対して作成されたブラウザのブックマーク (お気に入り) に表示されます。このタイトルには HTML タグを含めないでください。 タイトルに HTML タグが含まれていると、ブラウザがタグを正しく解釈できません。\f2title\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。\-windowtitle が省略されている場合、Javadoc ツールは、このオプションの代わりに \-doctitle の値を使います。 +HTML <title> ֤륿ȥꤷޤꤷȥϡɥΥȥ䡢ΥڡФƺ줿֥饦Υ֥åޡ () ɽޤΥȥˤ HTML ޤʤǤȥ HTML ޤޤƤȡ֥饦Ǥޤ\f2title\fP ǰȤϡ򥨥פɬפޤ\-windowtitle άƤ硢Javadoc ġϡΥץ \-doctitle ͤȤޤ .nf \f3 .fl - % \fP\f3javadoc \-windowtitle "Java 2 Platform" com.mypackage\fP + % \fP\f3javadoc \-windowtitle "Java SE Platform" com.mypackage\fP .fl .fi .TP 3 \-doctitle\ title -概要ファイルの最上部の近くに配置するタイトルを指定します。タイトルは中央揃えになり、レベル 1 の見出しとして、上部ナビゲーションバーのすぐ下に置かれます。\f2title\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2title\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 +ץեκǾζ᤯֤륿ȥꤷޤȥ·ˤʤꡢ٥ 1 θФȤơʥӥСΤ֤ޤ\f2title\fP ˤϡHTML ȶޤ뤳ȤǤޤޤϡΤǰϤޤʤФʤޤ\f2title\fP ǰȤϡ򥨥פɬפޤ .nf \f3 .fl - % \fP\f3javadoc \-doctitle "Java (TM)" com.mypackage\fP + % \fP\f3javadoc \-doctitle "Java(TM)" com.mypackage\fP .fl .fi .TP 3 \-title\ title -\f3このオプションは、現在は存在しません。\fPJavadoc 1.2 のベータ版にだけ存在しました。このオプションは、\f2\-doctitle\fP という名前に変更されました。名前を変更した理由は、このオプションが、ウィンドウのタイトルではなくドキュメントのタイトルを定義することを明確にするためです。 +\f3ΥץϤ⤦¸ߤƤޤ\fPΥץ Javadoc 1.2 Υ١Ǥˤ¸ߤƤޤǤΥץ̾ \f2\-doctitle\fP ѹޤ̾ѹͳϡΥץ󤬡ɥΥȥǤϤʤɥȤΥȥ뤳ȤΤˤ뤿Ǥ .LP .TP 3 \-header\ header -各出力ファイルの上端に配置するヘッダーテキストを指定します。ヘッダーは、上部ナビゲーションバーの右側に配置されます。\f2header\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2header\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 +ƽϥեξü֤إåƥȤꤷޤإåϡʥӥСα¦֤ޤ\f2header\fP ˤϡHTML ȶޤ뤳ȤǤޤޤϡΤǰϤޤʤФʤޤ\f2header\fP ǰȤϡ򥨥פɬפޤ .nf \f3 .fl @@ -4680,73 +3182,77 @@ HTML の <title> タグに配置するタイトルを指定します。指定し .LP .TP 3 \-footer\ footer -各出力ファイルの下端に配置するフッターテキストを指定します。フッターは、下部ナビゲーションバーの右側に配置されます。 \f2footer\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2footer\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 +ƽϥեβü֤եåƥȤꤷޤեåϡʥӥСα¦֤ޤ\f2footer\fP ˤϡHTML ȶޤ뤳ȤǤޤޤϡΤǰϤޤʤФʤޤ\f2footer\fP ǰȤϡ򥨥פɬפޤ +.LP +.TP 3 +\-top +ƽϥեξü֤ƥȤꤷޤ .LP .TP 3 \-bottom\ text -各出力ファイルの最下部に配置するテキストを指定します。このテキストは、下部ナビゲーションバーより下の、ページの最下部に配置されます。\f2text\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2text\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 +ƽϥեκDz֤ƥȤꤷޤΥƥȤϡʥӥС겼ΡڡκDz֤ޤ \f2text\fP ˤϡHTML ȶޤ뤳ȤǤޤޤϡΤǰϤޤʤФʤޤ󡣰 \f2text\fP ǻѤ硢򥨥פʤФʤʤǽޤ .LP .TP 3 \-link\ extdocURL -javadoc により生成された既存の外部参照クラスのドキュメンテーションへのリンクを作成します。引数を 1 つとります。 +javadoc ˤ줿¸γȥ饹ΥɥơؤΥ󥯤ޤ 1 ĤȤޤ .LP .RS 3 .TP 2 o -\f4extdocURL\fP は、リンク先として指定する、javadoc によって生成された外部ドキュメントを含むディレクトリの絶対 URL または相対 URL です。あとで例を示します。このディレクトリ内にパッケージリストファイルが存在していなければなりません。 存在しない場合は、\f2\-linkoffline\fP を使用します。Javadoc ツールは、\f2パッケージリスト\fPファイルからパッケージ名を読み取り、これらのパッケージをその URL にリンクします。Javadoc ツールを実行すると、作成される \f2<A HREF>\fP リンク内に \f2extdocURL\fP の値がそのままコピーされます。したがって、\f2extdocURL\fP はファイルへの URL ではなく「ディレクトリへの URL」でなければなりません。 +\f4extdocURL\fP ϡȤƻꤹ롢javadoc ˤä줿ɥȤޤǥ쥯ȥ URL ޤ URL ǤȤ򼨤ޤΥǥ쥯ȥ˥ѥåꥹȥե뤬¸ߤƤʤФʤޤ ¸ߤʤϡ\f2\-linkoffline\fP ѤޤJavadoc ġϡ \f2package\-list\fP ե뤫ѥå̾ɤ߼äȡ URL ǤΥѥå˥󥯤ޤJavadoc ġμ¹Իˡ\f2extdocURL\fP ͤΤޤޡ줿 \f2<A HREF>\fP ˥ԡޤäơ\f2extdocURL\fP ϥեؤ URL ǤϤʤ֥ǥ쥯ȥؤ URLפǤʤФʤޤ .LP -\f2extdocURL\fP への絶対リンクを使用すると、ユーザーのドキュメントを任意の Web サイト上のドキュメントにリンクできます。 相対位置へリンクするだけでよい場合は相対リンクを使用できます。相対リンクを使用する場合、\f2\-d\fP を使って、生成先ディレクトリからリンクされるパッケージのあるディレクトリの相対パスを指定する必要があります。 +\f2extdocURL\fP ؤХ󥯤Ѥȡ桼ΥɥȤǤդ Web ȾΥɥȤ˥󥯤Ǥޤа֤إ󥯤Ǥ褤Х󥯤ѤǤޤХ󥯤ξ硢桼Ϥͤϡ( \f2\-d\fP ǻꤵ줿) ǥ쥯ȥ꤫顢Ȥʤѥåޤǥ쥯ȥؤХѥˤ٤Ǥ .LP -通常、絶対リンクを指定する場合は、\f2http:\fPリンクを使用します。Web サーバーを持たないファイルシステムにリンクする場合は、\f2file:\fP リンクを使用できます。ただし、この方法は、すべてのユーザーが生成された同じファイルシステムを共有するドキュメントにアクセスする必要がある場合以外は使用しないでください。 +̾Х󥯤ꤹϡ \f2http:\fP 󥯤ѤޤWeb Сʤե륷ƥ˥󥯤ϡ \f2file: 󥯤ѤǤޤ\fP ˡϡ٤ƤΥ桼줿Ʊե륷ƥͭɥȤ˥ɬפʳϻѤʤǤ .LP -いかなる場合にも、いかなるオペレーティングシステムでも、絶対 URL か相対 URL か、「http:」ベースか「file:」ベースかにかかわらず、スラッシュを区切り文字として使用します ( +٤Ƥξ硢٤ƤΥڥ졼ƥ󥰥ƥǡ URL URLhttp:ץ١ȡfile:ץ١ˤ餺åڤʸȤƻѤޤ ( .na \f2URL Memo\fP @ .fi -http://www.ietf.org/rfc/rfc1738.txt で指定)。 +http://www.ietf.org/rfc/rfc1738.txt ǻ) .RS 3 .TP 3 -http:ベースの絶対リンク: +http: ١Х: \f2\-link http://<host>/<directory>/<directory>/.../<name>\fP .TP 3 -file:ベースの絶対リンク: +file: ١Х: \f2\-link file://<host>/<directory>/<directory>/.../<name>\fP .TP 3 -相対リンク: +Х: \f2\-link <directory>/<directory>/.../<name>\fP .RE .RE .LP -javadoc の実行時に複数の \f2\-link\fP オプションを指定して、複数のドキュメントへのリンクを作成することもできます。 \f3\-linkoffline または \-link の選択\fP +javadoc 1 μ¹Ԥʣ \f2\-link\fP ץꤹСʣΥɥȤؤΥ󥯤Ǥޤ \f3\-linkoffline ޤ \-link \fP .br -\f2\-link\fP を使用する場合: +\f2\-link\fPѤ: .RS 3 .TP 2 o -外部 API ドキュメントへの相対パスを使用する場合 + API ɥȤؤХѥѤ .TP 2 o -外部 API ドキュメントへの絶対 URL を使用する場合 (プログラムがその URL に接続し、読み取りを行うことがシェルによって許可されている場合) + API ɥȤؤ URL Ѥ (ץब URL ³ɤ߼ԤȤˤäƵĤƤ) .RE -次のような場合は、\f2\-linkoffline\fP オプションを使用します。 +\f2\-linkoffline\fP Ѥ: .RS 3 .TP 2 o -プログラムがその URL に接続し、読み取りを行うことがシェルによって許可されていない場合に外部 API ドキュメントへの絶対 URL を使用する場合。このような状況は、リンク先のドキュメントがファイアウォールの向こう側にある場合に発生します。 + API ɥȤؤ URL Ѥ (ץब URL ³ɤ߼ԤȤˤäƵĤƤʤ)Τ褦ʾϡΥɥȤեθ¦ˤȯޤ .RE .LP -\f3外部ドキュメントへの絶対リンクの使用例\fP \- +\f3ɥȤؤХ󥯤λ\fP \- \f2java.lang\fP \f2java.io\fP ¾ Java ץåȥեѥå ( .na -\f2http://java.sun.com/j2se/1.5.0/docs/api\fP @ +\f2http://java.sun.com/javase/6/docs/api/\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/api 内の \f2java.lang\fP、\f2java.io\fP、その他の Java 2 プラットフォームパッケージにリンクしたい場合があります。 次のコマンドは、\f2com.mypackage\fP パッケージのドキュメントと Java 2 プラットフォームパッケージへのリンクを生成します。生成されたドキュメントには、たとえばクラスツリー内の \f2Object\fP クラスへのリンクが含まれています。\f2\-sourcepath\fP や \f2\-d\fP などの他のオプションは表示されません。 +http://java.sun.com/javase/6/docs/api ) ˥󥯤ͤޤΥޥɤϡJava SE ץåȥեѥåؤΥ󥯤ޤѥå \f2com.mypackage\fP ΥɥȤޤ줿ɥȤˤϡȤХ饹ĥ꡼ \f2Object\fP 饹ؤΥ󥯤ޤޤƤޤʤ \f2\-sourcepath\fP \f2\-d\fP ʤɡ¾ΥץϼƤޤ .nf \f3 .fl - % \fP\f3javadoc \-link http://java.sun.com/j2se/1.5.0/docs/api com.mypackage\fP + % \fP\f3javadoc \-link http://java.sun.com/javase/6/docs/api com.mypackage\fP .fl .fi -\f3外部ドキュメントへの相対リンクの使用例\fP \- 2 つのパッケージがあり、そのドキュメントが Javadoc ツールを複数回実行した結果生成されたものであるとします。 さらに、これらのドキュメントが相対パスで分割されているとします。この例の場合、2 つのパッケージは、API である \f2com.apipackage\fP とSPI (サービスプロバイダインタフェース) である \f2com.spipackage\fP です。ドキュメントの格納先は \f2docs/api/com/apipackage\fP パッケージと \f2docs/spi/com/spipackage\fP パッケージです。API パッケージのドキュメントがすでに生成されていて、現在のディレクトリが \f2docs\fP である場合、次のコマンドを実行することによって、この API ドキュメントへのリンクを持つ SPI パッケージをドキュメント化します。 +\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 @@ -4754,43 +3260,43 @@ http://java.sun.com/j2se/1.5.0/docs/api 内の \f2java.lang\fP、\f2java.io\fP .fl .fi .LP -\f2\-link\fP 引数は、生成先ディレクトリ (\f2docs/spi\fP) の相対パスです。 +\f2\-link\fP ΰϡǥ쥯ȥ (\f2docs/spi\fP) ХѥǤ .LP -\f3詳細\fP \- \f2\-link\fP オプションを使うと、「コードからは参照されていても、Javadoc の今回の実行ではドキュメント化されない」というクラスにリンクできるようになります。リンクから有効なページに移動できるようにするには、それらの HTML ページがある場所を調べ、その場所を \f2extdocURL\fP に指定する必要があります。このオプションを使うと、たとえば、サードパーティーのドキュメントから、\f2http://java.sun.com\fP にある \f2java.*\fP のドキュメントにリンクすることができます。 +\f3ܺ\fP \- \f2\-link\fP ץȤȡ֥ɤϻȤƤƤ⡢Javadoc κμ¹ԤǤϥɥȲʤפȤ饹˥󥯤Ǥ褦ˤʤޤ󥯤ͭʥڡ˰ưǤ褦ˤˤϡ HTML ڡĴ١ξ \f2extdocURL\fP ˻ꤹɬפޤˤꡢȤСɥѡƥΥɥȤ \f2http://java.sun.com java.*\fP ΥɥȤؤΥ󥯤 \f2ǽȤʤޤ\fP .LP -今回の実行で Javadoc によって生成されるドキュメント内の API だけを対象にリンクを作成する場合は、\f2\-link\fP オプションを省略します。\f2\-link\fP オプションが指定されていない場合、Javadoc ツールは、外部参照されたドキュメントへのリンクを作成しません。これは、そのドキュメントが存在するかどうか、および存在する場合はその場所を判別できないからです。 +μ¹Ԥ Javadoc ˤäɥ API оݤ \f2󥯤ϡ\fP \-link ץάޤ \f2\-link\fP ץ󤬻ꤵƤʤ硢Javadoc ġϡȤ줿ɥȤؤΥ󥯤ޤ󡣤ϡΥɥȤ¸ߤ뤫ɤ¸ߤϤξȽ̤ǤʤǤ .LP -このオプションでは、生成ドキュメント内の複数の場所にリンクを作成できます。 +ΥץǤϡɥʣξ˥󥯤Ǥޤ .LP -また、このオプションを使うと、複数のパッケージ群の間にクロスリンクを作成することもできます。つまり、ある一式のパッケージに対して javadoc を実行したあと、別の一式のパッケージに対して javadoc を実行し、これら 2 つのパッケージ群の間にクロスリンクを作成できます。 +⤦ 1 ĤӤϡѥååȴ֤ǤΥ󥯤ǤΥѥååȤФ javadoc ¹Ԥȡ¾ΥѥååȤФ javadoc ټ¹Ԥ뤳Ȥˤꡢξåȴ֤Υ󥯤Ǥޤ .LP -\f3クラスの参照方法\fP \- 外部参照クラスへのリンクを、テキストラベルだけではなく実際に表示するには、次の方法でクラスを参照する必要があります。メソッドの本体でクラスを参照するだけでは十分ではありません。\f2import\fP 文または宣言で参照する必要があります。次に、クラス \f2java.io.File\fP を参照する方法の例を示します。 +\f3饹λˡ\fP \- ȥ饹ؤΥ󥯤򡢥ƥȥ٥ǤϤʤºݤɽˤϡˡǥ饹򻲾Ȥɬפޤ᥽åɤΤǥ饹򻲾ȤǤϽʬǤϤޤ󡣤Υ饹ϡ \f2import\fP ʸΤξǻȤƤɬפޤHere are examples of how the class \f2java.io.File\fP can be referenced: .RS 3 .TP 2 o -すべての種類の \f2import\fP 文の場合: ワイルドカードによるインポート、名前による明示的なインポート、または \f2java.lang.*\fP に対する自動的なインポート。たとえば、次のようにすれば十分です。 +٤Ƥμ \f2import\fP ʸξ: 磻ɥɤˤ륤ݡȡ̾ˤŪʥݡȡޤ \f2java.lang.* Ф뼫ưŪʥݡ\fPȤСΤ褦ˤнʬǤ .br \f2import java.io.*;\fP .br -1.3.x および 1.2.x では、名前による明示的なインポートだけです。ワイルドカードによるインポート文も、自動インポート \f2java.lang.*\fP も使用できません。 +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 文に置きます。 +λȤѤ᥽åɡ󥹥ȥ饯եɡ饹ޤϥ󥿥եͤηޤϥѥ᡼η֤ \f2implements\fP \f2extends\fP ޤ \f2throws\fP ʸ֤ޤ .RE .LP -この結果、\f2\-link\fP オプションを使用しても、この制限のために誤って表示されない多くのリンクが多数発生する可能性があります。テキストはハイパーテキストリンクが付けられずに表示されます。これらのリンクが表示する警告から、このリンクを認識できます。クラスを正しく参照し、それによってリンクを追加するためのもっとも安全な方法は上で説明したとおり、当該のクラスをインポートすることです。 +פʷ̤Ȥơ \f2\-link\fP ץλѻˡ¤Τ˸äɽʤ󥯤¿ȯǽޤƥȤϥϥѡƥȥ󥯤դ줺ɽޤΥ󥯤ɽٹ𤫤顢Υ󥯤ǧǤޤ饹Ȥˤäƥ󥯤ɲä뤿ΤäȤˡϾȤꡢΥ饹򥤥ݡȤ뤳ȤǤ .LP -\f3パッケージリスト\fP \- \f2\-link\fP オプションは、\f2package\-list\fP という名前のファイルを要求します。 このファイルは、Javadoc ツールによって生成され、\f2\-link\fP によって指定した URL に存在します。\f2package\-list\fP ファイルは、その場所にあるドキュメント化されたパッケージの名前のリストが入った単純なテキストファイルです。前の例では、Javadoc ツールは指定された URL にある \f2package\-list\fP という名前のファイルを探し、パッケージ名を読み込んで、その URL にあるそれらのパッケージへのリンクを作成しました。 +\f3ѥåꥹ\fP \- \f2\-link\fP ץǽˤϡJavadoc ġˤä \f2package\-list\fP Ȥ̾Υե뤬桼 \f2\-link\fP ˻ꤷ URL ¸ߤƤɬפޤ \f2package\-list\fP եϡξˤɥȲ줿ѥå̾ΥꥹȤäñʥƥȥեǤǤϡJavadoc ġϡꤵ줿 URL \f2package\-list\fP Ȥ̾Υե򸡺ѥå̾ɤ߹ȡ URL ˤ뤽ΥѥåؤΥ󥯤ޤ .LP -たとえば、Java プラットフォーム v5.0 API のパッケージリストは +ȤСJava SE 6 API ΥѥåꥹȤ .na -\f2http://java.sun.com/j2se/1.5.0/docs/api/package\-list\fP @ +\f2http://java.sun.com/javase/6/docs/api/package\-list\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/api/package\-list にあり、次のような内容で始まっています。 +http://java.sun.com/javase/6/docs/api/package\-list ˤꡢΤ褦ƤǻϤޤäƤޤ .nf \f3 .fl @@ -4808,64 +3314,64 @@ http://java.sun.com/j2se/1.5.0/docs/api/package\-list にあり、次のよう .fl java.awt.font .fl - その他 ... + ¾ .fl \fP .fi .LP -\f2\-link\fP オプションを指定せずに javadoc を実行した場合、外部参照クラスに属する名前を見つけると、javadoc はその名前をリンクを持たない形で出力します。一方、\f2\-link\fP オプションを指定した場合は、指定した \f2extdocURL\fP にある \f2package\-list\fP ファイルから該当するパッケージ名が検索されます。パッケージ名が見つかると、\f2extdocURL\fP が名前の前に付加されます。 +\f2\-link\fP ץꤻ javadoc ¹Ԥ硢ȥ饹°̾򸫤Ĥȡjavadoc Ϥ̾󥯤ʤǽϤޤ \f2\-link\fP ץ󤬻ꤵ줿硢Javadoc ġϡ \f2ꤵ줿\fP \f2extdocURL\fP ξˤ package\-list եǡΥѥå̾򸡺ޤѥå̾Ĥȡ\f2extdocURL\fP ̾ղäޤ .LP -すべてのリンクが正しく機能するためには、外部参照のすべてのドキュメントが、指定した URL に存在していなければなりません。Javadoc ツールは、指定された package\-list が存在するかどうかを調べるだけで、指定された URL に目的のページが存在するかどうかはチェックしません。 +٤ƤΥ󥯤ǽ뤿ˤϡȤΤ٤ƤΥɥȤꤷ URL ¸ߤƤʤФʤޤJavadoc ġϡꤵ줿 package\-list ¸ߤ뤫ɤĴ٤ǡꤵ줿 URL ŪΥڡ¸ߤ뤫ɤϥåޤ .LP -\f3複数のリンク\fP \- 複数の \f2\-link\fP オプションを指定すると、生成された任意の数の外部ドキュメントに対してリンクを設定できます。Javadoc 1.2 には、複数の \f2\-link\fP オプションを指定できないというバグがあります。これは 1.2.2 で修正されました。 +\f3ʣΥ\fP \- ʣ \f2\-link\fP ץꤹȡǤդογɥȤؤΥ󥯤ǤޤJavadoc 1.2 ˤϡʣ \f2\-link\fP ޥɤǤʤȤХޤ 1.2.2 ǽޤ .LP -リンクする外部ドキュメントごとに、次のように別々のリンクオプションを指定します。 +󥯤볰ɥȤȤˡΤ褦̡Υ󥯥ץꤷޤ .LP -\ \ \f2% \fP\f4javadoc \-link\fP \f2extdocURL1\fP \f4\-link\fP \f2extdocURL2\fP \f2...\fP\f4\-link\fP \f2extdocURLn\fP \f4com.mypackage\fP +\ \ \f2% \fP\f4javadoc \-link\fP \f2extdocURL1\fP \f4\-link\fP \f2extdocURL2\fP \f2... \fP\f4\-link\fP \f2extdocURLn\fP \f4com.mypackage\fP .LP -\f2extdocURL1\fP、\f2extdocURL2\fP、... \f2extdocURLn\fP は、それぞれ外部ドキュメントのルートを指し、各ルートには \f2package\-list\fP という名前のファイルが入っています。 +\f2extdocURL1\fP\f2extdocURL2\fP... \f2extdocURLn\fP ϡ줾쳰ɥȤΥ롼Ȥؤƥ롼Ȥˤϡ \f2package\-list\fP Ȥ̾Υե뤬äƤޤ .LP -\f3クロスリンク\fP \- まだ生成されていない 2 つ以上のドキュメントをクロスリンクする場合は、「ブートストラップ」が必要になります。つまり、どのドキュメントについても \f2package\-list\fP が存在していない場合は、最初のドキュメントに対して javadoc ツールを実行する時点で、2 番目のドキュメントの \f2package\-list\fP がまだ存在していません。したがって、外部リンクを作成するには、2 番目のドキュメントを生成したあとで、最初のドキュメントを生成し直す必要があります。 +\f3\fP \- ޤƤʤ 2 İʾΥɥȤ򥯥󥯤ϡ֥֡ȥȥåספɬפˤʤޤĤޤꡢɤΥɥȤˤĤƤ \f2package\-list\fP ¸ߤƤʤϡǽΥɥȤФ Javadoc ġ¹Ԥǡ2 ܤΥɥȤ \f2package\-list\fP Ϥޤ¸ߤƤޤ󡣤äơ󥯤ˤϡ2 ܤΥɥȤȤǡǽΥɥȤľɬפޤ .LP -この場合、最初のドキュメント生成の目的は、そのドキュメントの \f2package\-list\fP を作成することです。 パッケージ名をすべて把握している場合は、package\-list を手動で作成することもできます。次に、2 番目のドキュメントとその外部リンクを生成します。必要な外部の \f2package\-list\fP ファイルが存在しない場合、Javadoc ツールは警告を表示します。 +ξ硢ǽΥɥŪϡ \f2package\-list\fP 뤳ȤǤѥå̾򤹤٤İƤϡpackage\-list ưǺƤ⤫ޤޤ󡣼ˡ2 ܤΥɥȤȤγ󥯤ޤɬפʳ \f2package\-list\fP ե뤬¸ߤʤϡJavadoc ġ뤫ٹ𤬽Ϥޤ .LP .TP 3 \-linkoffline\ extdocURL\ packagelistLoc -このオプションは、\f2\-link\fP オプションを変えたものです。 どちらも、javadoc によって生成された外部参照クラスのドキュメントへのリンクを作成します。Javadoc ツール自体がオフラインになっているとき (Web 接続を使ってドキュメントにアクセスできないとき)、Web 上のドキュメントにリンクするには、\f2\-linkoffline\fP オプションを使用します。 +Υץ \f2\-link\fP ΥХꥨ 1 ĤǤɤ⡢ȥ饹 javadoc ɥȤؤΥ󥯤ޤJavadoc \f2ġ뼫Τ\fP ե饤ˤʤäƤȤ (Web ³ȤäƥɥȤ˥ǤʤȤ)Web ΥɥȤ˥󥯤ˤϡ\-linkoffline ץѤޤ .LP -厳密には、外部ドキュメントの \f2package\-list\fP ファイルにアクセスできないとき、またはこのファイルが \f2extdocURL\fP で指定された場所とは異なる場所 (通常、\f2packageListLoc\fP で指定可能なローカルな場所) に存在するとき、\f2\-linkoffline\fP を使用します。したがって、\f2extdocURL\fP に WWW 上でしかアクセスできない場合は、\f2\-linkoffline\fP を指定することにより、ドキュメントの生成時に javadoc ツールが Web に接続できなければならないという制約がなくなります。 +̩ˤϡ \f2\fP ɥȤ \f2package\-list\fP ե˥ǤʤȤޤϤΥե뤬 \f2extdocURL\fP ǻꤵ줿Ȥϰۤʤ (̾\f2packageListLoc\fP ǻǽʥʾ) ¸ߤȤ\-linkoffline ѤޤäơWWW ͳǤ \f2extdocURL\fP ˥Ǥʤ硢 \f2\-linkoffline\fP ꤹ뤳ȤˤꡢɥȤ Javadoc ġ뤬 Web ³ǤʤФʤʤȤ󤬤ʤʤޤ .LP -さらに、ドキュメントを更新するための「ハッキング」としての使用も可能です。パッケージのセット全体に対して javadoc を実行したあと、変更した一部のパッケージだけに対して javadoc を実行します。 こうして、更新されたファイルを、オリジナルのファイルセットに挿入できるようにします。例をあとで示します。 +ˡɥȤ򹹿뤿Ρ֥ϥå󥰡פȤƤλѤǽǤѥåΥåΤФ javadoc ¹ԤȡѹΥѥåФ javadoc ¹Ԥޤơ줿ե򡢥ꥸʥΥե륻åȤǤ褦ˤޤ򤢤ȤǼޤ .LP -\f2\-linkoffline\fP オプションは引数を 2 つ取ります。 最初の引数は \f2<a href>\fP リンクに組み込まれる文字列を指定する引数、2 番目の引数は \f2package\-list\fP の検索場所を指定する引数です。 +\f2\-linkoffline\fP ץϰ 2 ļޤ1 Ĥϡ \f2<a href>\fP 󥯤Ȥ߹ޤʸɽ⤦ 1 Ĥ \f2package\-list\fP θ򼨤Ǥ .RS 3 .TP 2 o -\f4extdocURL\fP は、リンク先として指定する、javadoc によって生成された外部ドキュメントを含むディレクトリの絶対 URL または相対 URL です。相対リンクを使用する場合、\f2\-d\fP を使って、生成先ディレクトリからリンクされるパッケージのルートの相対パスを指定する必要があります。詳細は、\f2\-link\fP オプションの \f2extdocURL\fP を参照してください。 +\f4extdocURL\fP ϡȤƻꤹ롢javadoc ˤä줿ɥȤޤǥ쥯ȥ URL ޤ URL ǤХ󥯤ξ硢ͤϡ( \f2\-d\fP ǻꤵ줿) ǥ쥯ȥ꤫ѥåΥ롼ȤؤХѥˤ٤Ǥܺ٤ϡ\-link ץ \f2extdocURL\fP \f2򻲾\fP Ƥ .TP 2 o -\f4packagelistLoc\fP には、外部ドキュメントの \f2package\-list\fP ファイルが入っているディレクトリのパスまたは URL を指定します。これは、URL (http: または file:)or file:)とファイルパスのどちらでもかまいません。また、絶対パスと相対パスのどちらでも指定できます。相対パスの場合は、javadoc が実行されるカレントディレクトリからの相対パスとして指定します。\f2package\-list\fP というファイル名は含めないでください。 +\f4packagelistLoc\fP ϡɥȤ \f2package\-list\fP եޤǥ쥯ȥؤΥѥޤ URL ǤϡURL (http: ޤ file:) ǤեѥǤ⤫ޤޤ󤷡ХѥǤХѥǤ⤫ޤޤХѥξϡjavadoc ¹Ԥ륫ȥǥ쥯ȥ꤫ХѥȤƻꤷޤե̾ \f2package\-list\fP ϴޤʤǤ .RE .LP -javadoc の 1 回の実行で、複数の \f2\-linkoffline\fP オプションを指定できます。1.2.2 より前は、複数のオプションを指定することはできませんでした。 +1 javadoc ¹Ԥʣ \f2\-linkoffline\fP ץǤޤ1.2.2 ϡʣΥץꤹ뤳ȤϤǤޤǤ .LP -\f3外部ドキュメントへの絶対リンクを使った例\fP \- \f2http://java.sun.com/j2se/1.5.0/docs/api\fP 内の \f2java.lang\fP、\f2java.io\fP、、およびその他の Java 2 プラットフォームパッケージにリンクしたくても、Web にアクセスできない 場合について考えてみます。この場合は、ブラウザで +\f3ɥȤؤХ󥯤λ\fP \- http://java.sun.com/javase/6/docs/api \f2java.lang\fP \f2java.io\fP Ӥ¾ Java SE ץåȥեѥå \f2˥󥯤Ƥ\fP Web ˥Ǥʤͤޤ֥饦 \f2\fP .na -\f2http://java.sun.com/j2se/1.5.0/docs/api/package\-list\fP @ +\f2http://java.sun.com/javase/6/docs/api/package\-list\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/api/package\-list にある \f2package\-list\fP ファイルを開き、ローカルディレクトリに保存します。 さらに、2 番目の引数 \f2packagelistLoc\fP にこのローカルコピーの場所を指定します。この例では、パッケージリストファイルはカレントディレクトリ "\f2.\fP" に保存されています。次のコマンドは、Java 2 プラットフォーム API へのリンクを含む、\f2com.mypackage\fP パッケージのドキュメントを生成します。生成されたドキュメントには、たとえばクラスツリー内の \f2Object\fP クラスへのリンクが含まれています。\f2\-sourcepath\fP などの他の必要なオプションは表示されません。 +http://java.sun.com/javase/6/docs/api/package\-list ˤ package\-list ե򳫤ǥ쥯ȥ¸ 2 \f2packagelistLoc\fP ǤΥ륳ԡؤΥѥꤷޤǤϡѥåꥹȥեϥȥǥ쥯ȥ "\f2.\fP" ¸ƤޤΥޥɤϡJava SE ץåȥեѥåؤΥ󥯤ޤѥå \f2com.mypackage\fP ΥɥȤޤ줿ɥȤˤϡȤХ饹ĥ꡼ \f2Object\fP 饹ؤΥ󥯤ޤޤƤޤʤ \f2\-sourcepath\fP ʤɡ¾ɬץץϼƤޤ .nf \f3 .fl -% \fP\f3javadoc \-linkoffline http://java.sun.com/j2se/1.5.0/docs/api . com.mypackage\fP +% \fP\f3javadoc \-linkoffline http://java.sun.com/javase/6/docs/api . com.mypackage\fP .fl .fi .LP -\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 の相対リンクの例を参照してください。 +\f3ɥȤؤХ󥯤λ\fP \- \f2\-linkoffline\fP ХѥѤ뤳Ȥϡޤꤢޤͳñǡ̾ \f2\-link\fP ǽʬǤ \f2\-linkoffline\fP Ѥݡ \f2package\-list\fP ˤ̾Υեꤷޤ Х󥯤Ѥݤ⡢Υեˤ̾Υեꤷޤäơ \f2\-linkoffline 2 Ĥΰ̡ΥѥꤹɬפϤޤ\fP2 ĤΰƱǤϡ \f2\-link\fP ѤǤޤ \f2\-link\fP Х󥯤򻲾ȤƤ .LP -\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 ファイルを共有することもできるため、クロスリンクを設定したドキュメントを同時にリリースすることも可能です。 +\f4package\-list\fP\f3 եưǺ\fP \- \f2package\-list\fP ե뤬ޤ¸ߤʤƤ⡢ɥȤΥΥѥå̾狼äƤϡΥեʬǺpackagelistLoc \f2ǤΥѥꤹ뤳ȤǤޤ\fPcom.apipackage ǽ \f2com.spipackage\fP ΥѥåꥹȤ¸ߤƤʤäȤ \f2ФΥ\fP ȤƵ󤲤ޤˡϡѥå̾Ϥ狼äƤΤΡޤƤʤɥȤ˥󥯤ɥȤɬפǤޤJavadoc 1.0 ޤ 1.1 줿ѥå \f2package\-list\fP եɬפˤ⡢ˡȤޤΥСǤϡ \f2package\-list\fP եƤޤǤƱͤˡ2 ĤδȤ̤ \f2package\-list\fP եͭС󥯤ޤɥȤƱ˥꡼뤳ȤǽȤʤޤ .LP -\f3複数のドキュメントへのリンク\fP \- \f2\-linkoffline\fP は、参照先の生成ドキュメントごとに 1 つずつ指定します。 次の例では、わかりやすくするためにオプションごとに行を分けています。 +\f3ʣΥɥȤؤΥ\fP \- ȤʤɥȤȤ \f2\-linkoffline\fP 1 󤺤Ĵޤ뤳ȤǤޤ狼䤹뤿ˡץ󤴤Ȥ˲ԤƼƤޤ .LP \f2% \fP\f4javadoc \-linkoffline\fP \f2extdocURL1\fP \f2packagelistLoc1\fP \f2\\\fP .br @@ -4873,24 +3379,24 @@ http://java.sun.com/j2se/1.5.0/docs/api/package\-list にある \f2package\-list .br \f2\ \ \ \ \ \ \ \ \ \ ...\fP .LP -\f3ドキュメントの更新\fP \- 前述の \f2\-linkoffline\fP オプションのもうひとつの用途は、プロジェクトに大量のパッケージが含まれていて、すでにツリー全体に対して javadoc の実行が完了している場合に、次の実行では、少量の変更を手早く加えたあと、ソースツリーのごく一部に対してだけ javadoc を再実行する場合に便利です。これは、ドキュメンテーションコメントに対してだけ変更を加え、宣言は変更しない場合にのみ正しく処理されるので、ハッキングのようなものです。ソースコードの宣言を追加、削除、または変更した場合は、索引、パッケージツリー、継承されるメンバーのリスト、[使用] ページなどの場所で、リンクが壊れることがあります。 +\f3ɥȤι\fP \- Ҥ \f2\-linkoffline\fP ץΤ⤦ҤȤĤӤϡץȤ̤ΥѥåޤޤƤơǤ˥ĥ꡼ΤФ javadoc μ¹ԤλƤˡμ¹ԤǤϡ̤ѹ᤯äȡĥ꡼ΤФƤ javadoc Ƽ¹ԤǤϡɥơ󥳥ȤФƤѹäѹʤˤΤΤǡϥå󥰤Τ褦ʤΤǤɤɲáޤѹϡѥåĥ꡼ѾСΥꥹȡֻѡץڡʤɤξǡ󥯤뤳Ȥޤ .LP -まず、今回の実行で使用する新しい生成先ディレクトリ (\f2update\fP) を作成します。元の生成先ディレクトリの名前が \f2html\fP だとします。もっとも単純な例では、\f2html\fP ディレクトリの親ディレクトリに移動 (cd) します。\f2\-linkoffline\fP の最初の引数にカレントディレクトリ "." を指定し、2 番目の引数に \f2html\fP への相対パスを指定します。 ここで、\f2package\-list\fP が検索されます。 更新対照のパッケージのパッケージ名だけを指定してください。 +ޤοʼ¹ѤȤơǥ쥯ȥ ( \f2update\fP ̿̾) ޤǥ쥯ȥ̾ \f2html\fP äȤޤäȤñǤϡ \f2html ǥ쥯ȥοƥǥ쥯ȥ˰ư (cd) ޤ\fP \f2\-linkoffline\fP 1 򥫥ȥǥ쥯ȥ.פꤷ 2 package\-list ޤޤƤ \f2html\fP ؤХѥꤷ \f2ѥåΥѥå̾Τߤ\fPϤޤ .nf \f3 .fl % \fP\f3javadoc \-d update \-linkoffline . html com.mypackage\fP .fl .fi -Javadoc ツールの終了後、\f2update/com/package\fP 内の生成されたクラスのページをコピーし (概要や索引を除く)、\f2html/com/package\fP 内の元のファイルに上書きします。 +Javadoc ĥ꡼νλ塢 \f2update/com/package\fP 줿饹Υڡ򥳥ԡ (פϽ) \f2html/com/package θΥե˾񤭤ޤ\fP .LP .TP 3 \-linksource\ -各ソースファイル (行番号付き) の HTML バージョンを作成し、標準 HTML ドキュメントからソースファイルへのリンクを追加します。リンクは、ソースファイル内に宣言されているクラス、インタフェース、コンストラクタ、メソッド、フィールドに対して作成されます。デフォルトコンストラクタ、生成されたクラスに対しては作成されません。 +ƥե (ֹդ) HTML Сɸ HTML ɥȤ饽եؤΥ󥯤ɲäޤ󥯤ϡեƤ륯饹󥿥ե󥹥ȥ饯᥽åɡեɤФƺޤǥեȥ󥹥ȥ饯줿饹ФƤϺޤ .LP -\f3このオプションは、\fP\f4\-public\fP\f3、\fP\f4\-package\fP\f3、\fP\f4\-protected\fP\f3、\fP\f4\-private\fP\f3 の各オプションとは関係なく、非公開のクラス、フィールド、非公開のメソッドの本体をはじめとする組み込まれたソースファイル内のすべての非公開実装の詳細を公開します。\fP\f2\-private\fP オプションを指定しないかぎり、非公開のクラスやインタフェースの一部には、リンクを介してアクセスできないことがあります。 +\f3Υץϡ\fP\f4\-public\fP\f3 \fP\f4\-package\fP\f3 \fP\f4\-protected\fP\f3 \fP\f4\-private\fP\f3 γƥץȤϴطʤΥ饹եɡΥ᥽åɤΤϤȤȤ߹ޤ줿եΤ٤Ƥξܺ٤ޤ\fP\f2\-private\fP ץʻƻꤷʤꡢΤ٤ƤΥ饹䥤󥿥ե˥󥯷ͳǥǤȤϤޤ .LP -各リンクは、その宣言内の識別子名の上に作成されます。たとえば、\f2Button\fP クラスのソースコードヘのリンクは、「Button」という語の上に作成されます。 +ƥ󥯤ϡμ̻̾ξ˺ޤȤС \f2Button\fP 饹ΥɤؤΥ󥯤ϡButtonפȤξ˺ޤ .nf \f3 .fl @@ -4902,7 +3408,7 @@ Javadoc ツールの終了後、\f2update/com/package\fP 内の生成された .fl \fP .fi -Button クラスの \f2getLabel()\fP メソッドのソースコードへのリンクは、「getLabel」という語の上に作成されます。 +ޤButton 饹 \f2getLabel()\fP ᥽åɤΥɤؤΥ󥯤ϡgetLabelפȤξ˺ޤ .nf \f3 .fl @@ -4913,26 +3419,21 @@ Button クラスの \f2getLabel()\fP メソッドのソースコードへのリ .LP .TP 3 \-group\ groupheading\ packagepattern:packagepattern:... -概要ページの複数のパッケージを、指定したグループに分けて、グループごとに表を作成します。各グループは、それぞれ別の \f2\-group\fP オプションで指定します。これらのグループは、コマンド行で指定した順序でページに表示されます。 各グループ内では、パッケージがアルファベット順に並べられます。指定した \f2\-group\fP オプションごとに、\f2packagepattern\fP 式のリストと一致するパッケージが、見出し \f2groupheading\fP を持つ 1 つの表にまとめて表示されます。 +ץڡʣΥѥå򡢻ꤷ롼פʬơ롼פȤɽޤƥ롼פϡ줾̤ \f2\-group\fP ץǻꤷޤΥ롼פϡޥɹԤǻꤷǥڡɽޤƥ롼Ǥϡѥåե٥åȽ¤٤ޤ \f2\-group\fP ץǤϡ \f2packagepattern\fP ΥꥹȤ˰פѥå \f2groupheading\fP ȤФɽɽޤ .RS 3 .TP 2 o -\f4groupheading\fP には、任意のテキストを指定でき、空白を含めることができます。指定したテキストは、グループの表見出しになります。 +\f4groupheading\fP ˤϡǤդΥƥȤǤޤ뤳ȤǤޤꤷƥȤϡ롼פɽФˤʤޤ .TP 2 o -\f4packagepattern\fP には、任意のパッケージ名、または任意のパッケージ名の先頭部分とそれに続く 1 つのアスタリスク (\f2*\fP) を指定できます。アスタリスクは、「任意の文字に一致する」という意味のワイルドカードです。ワイルドカードとして指定できるのは、アスタリスクだけです。1 つのグループには、コロン (\f2:\fP) で区切って複数のパターンを含めることができます。 +\f4packagepattern\fP ˤϡǤդΥѥå̾ޤǤդΥѥå̾ƬʬȤ³ 1 ĤΥꥹ (\f2*\fP) Ǥޤ ꥹϡǤդʸ˰פפȤ̣Υ磻ɥɤǤ磻ɥɤȤƻǤΤϡꥹǤ1 ĤΥ롼פˤϡ (\f2:\fP) ǶڤäʣΥѥޤ뤳ȤǤޤ .RE -.RS 3 - -.LP -.LP -\f3注: パターンやパターンリスト内でアスタリスクを使う場合は、\fP\f4"java.lang*:java.util"\fP\f3 のように、パターンリストを引用符で囲む必要があります。\fP .LP -.RE +\f3: ѥѥꥹǥꥹȤϡ \fP\f4"java.lang*:java.util" Τ褦ˡѥꥹȤǰϤɬפޤ\fP .LP -\f2\-group\fP オプションが指定されていない場合は、すべてのパッケージが、「パッケージ」という見出しの 1 つのグループに入れられます。ドキュメント化されるパッケージの中に、指定したグループのどのグループにも入らないパッケージがある場合、このようなパッケージは「その他のパッケージ」という見出しを持つ独立したグループに入れられます。 +桼 \f2\-group\fP ץ 1 Ĥꤷʤä硢֥ѥåפȤФ 1 ĤΥ롼ˡ٤ƤΥѥå֤ޤɥȲѥåˡꤷ롼פΤɤΥ롼פˤʤѥå硢Τ褦ʥѥåϡ֤¾ΥѥåפȤФΩ롼פޤ .LP -たとえば、次のようにオプションを指定すると、ドキュメント化される 5 つのパッケージは、コアパッケージ、拡張機能パッケージ、およびその他のパッケージに分けられます。「java.lang*」では、最後のドットを指定していないことに注目してください。 「java.lang.*」のようにドットを入れると、java.lang パッケージは除外されることになります。 +ȤСΤ褦˥ץꤹȡɥȲ 5 ĤΥѥåϡѥåĥǽѥåӤ¾Υѥåʬޤjava.lang*פǤϡǸΥɥåȤꤷƤʤȤܤƤjava.lang.*פΤ褦˥ɥåȤȡjava.lang ѥåϽ뤳Ȥˤʤޤ .nf \f3 .fl @@ -4943,56 +3444,52 @@ o java.lang java.lang.reflect java.util javax.servlet java.new\fP .fl .fi -この結果、次のようなグループ化が行われます。 -.RS 3 +η̡Τ褦ʥ롼ײԤޤ .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 - -.LP -.RE .LP .TP 3 \-nodeprecated -推奨されない API をドキュメントに生成しないようにします。このオプションを指定すると、\-nodeprecatedlist オプションを指定した場合と同じ効果があることに加えて、ドキュメントのほかの部分全体でも、推奨されない API が生成されません。このオプションは、コードを記述しているとき、推奨されないコードによって気を散らされたくない場合に便利です。 +侩ʤ API ɥȤʤ褦ˤޤΥץꤹȡ\-nodeprecatedlist ץꤷƱ̤뤳Ȥ˲äơɥȤΤۤʬΤǤ⡢侩ʤ API ޤ󡣤Υץϡɤ򵭽ҤƤȤ侩ʤɤˤäƵ򻶤餵줿ʤǤ .LP .TP 3 \-nodeprecatedlist -推奨されない API のリストを含むファイル (deprecated\-list.html)、およびナビゲーションバーのそのページへのリンクが生成されないようにします。ただし、ドキュメントのほかの部分では、推奨されない API が生成されます。このオプションは、推奨されない API がソースコードに含まれておらず、ナビゲーションバーをすっきりと見せたい場合に便利です。 +侩ʤ API ΥꥹȤޤե (deprecated\-list.html)ӥʥӥСΤΥڡؤΥ󥯤ʤ褦ˤޤɥȤΤۤʬǤϡ侩ʤ API ޤΥץϡ侩ʤ API ɤ˴ޤޤƤ餺ʥӥС򤹤äȸǤ .LP .TP 3 \-nosince -生成ドキュメントから、@since タグに対応する「導入されたバージョン」 セクションを省略します。 +ɥȤ顢@since бƳ줿С άޤ .LP .TP 3 \-notree -生成されるドキュメントからクラスおよびインタフェースの階層ページを省略します。これらのページには、ナビゲーションバーの「ツリー」ボタンからアクセスできます。デフォルトでは、階層が生成されます。 +ɥȤ饯饹ӥ󥿥եγإڡάޤΥڡˤϡʥӥСΡ֥ĥ꡼ץܥ󤫤饢ǤޤǥեȤǤϡؤޤ .LP .TP 3 \-noindex -生成ドキュメントから、索引を省略します。デフォルトでは、索引が生成されます。 +ɥȤ顢άޤǥեȤǤϡޤ .LP .TP 3 \-nohelp -出力の各ページの最上部と最下部にあるナビゲーションバーから [ヘルプ] リンクを省略します。 +ϤγƥڡκǾȺDzˤʥӥС֥إסץ󥯤άޤ .LP .TP 3 \-nonavbar -生成されるページの最上部と最下部に表示されるナビゲーションバー、ヘッダー、およびフッターを生成しないようにします。このオプションは、bottom オプションには影響を与えません。\f2\-nonavbar\fP オプションは、印刷するためだけにファイルを PostScript または PDF に変換する場合など、内容だけが重要で、ナビゲーションの必要がない場合に便利です。 +ڡκǾȺDzɽʥӥСإåӥեåʤ褦ˤޤΥץϡbottom ץˤϱƶͿޤ \f2\-nonavbar\fP ץϡ뤿˥ե PostScript ޤ PDF ѴʤɡƤפǡʥӥɬפʤǤ .LP .TP 3 \-helpfile\ path/filename -上部と下部のナビゲーションバーの [ヘルプ] リンクのリンク先となる代替ヘルプファイル \f2path/filename\fP のパスを指定します。このオプションが指定されていない場合、Javadoc ツールは、ハードコードされているヘルプファイル \f2help\-doc.html\fP を自動的に作成します。このオプションを使うと、そのデフォルトの動作をオーバーライドできます。\f2filename\fP にはどんなファイル名でも指定でき、\f2help\-doc.html\fP には限定されません。例を示します。 +ȲΥʥӥСΡ֥إסץ󥯤ΥȤʤإإץե \f2path/filename\fP ΥѥꤷޤΥץ󤬻ꤵʤȡJavadoc ġϡġǥϡɥɤƤإץե \f2help\-doc.html\fP ưޤΥץȤȡΥǥեȤư򥪡С饤ɤǤޤ\f2filename\fP ˤϤɤʥե̾ǤǤ \f2help\-doc.html ˤϸꤵޤ\fP Javadoc ġϡʥӥСΥ󥯤ɬפ˱Ĵޤ򼨤ޤ .nf \f3 .fl @@ -5001,7 +3498,7 @@ o .fi .TP 3 \-stylesheetfile\ path/filename -代替 HTML スタイルシートファイルのパスを指定します。このオプションが指定されていない場合、Javadoc ツールは、ハードコードされているスタイルシートファイル \f2stylesheet.css\fP を自動的に作成します。このオプションを使うと、そのデフォルトの動作をオーバーライドできます。\f2filename\fP にはどんなファイル名でも指定でき、\f2stylesheet.css\fP には限定されません。例を示します。 + HTML 륷ȥեΥѥꤷޤΥץ󤬻ꤵʤȡJavadoc ġϡġǥϡɥɤƤ륹륷ȥե \f2stylesheet.css\fP ưޤΥץȤȡΥǥեȤư򥪡С饤ɤǤޤ\f2filename\fP ˤϤɤʥե̾ǤǤ \f2stylesheet.css ˤϸꤵޤ\fPȤС .nf \f3 .fl @@ -5010,22 +3507,22 @@ o .fi .TP 3 \-serialwarn -@serial タグがない場合は、コンパイル時に警告を生成します。デフォルトでは、Javadoc 1.2.2 以降のバージョンでは、直列化の警告は生成されません。1.2.2 より前の初期バージョンでは、警告が生成されます。このオプションを使用すると、直列化の警告が表示されるので、デフォルトの直列化可能フィールドと \f2writeExternal\fP メソッドを適切にドキュメント化するのに役立ちます。 +@serial ʤϡѥ˷ٹޤǥեȤǤϡJavadoc 1.2.2 ʹߤΥСǤϡľ󲽤ηٹޤ1.2.2 νСǤϡٹޤΥץѤȡľ󲽤ηٹɽΤǡǥեȤľ󲽲ǽեɤ \f2writeExternal\fP ᥽åɤŬڤ˥ɥȲΤΩޤ .LP .TP 3 \-charset\ name -このドキュメント用の HTML 文字セットを指定します。この名前は、 +ΥɥѤ HTML ʸåȤꤷޤ̾ϡ .na \f2IANA Registry\fP @ .fi -http://www.iana.org/assignments/character\-sets で与えられた、推奨される MIME 名でなければなりません。例を示します。 +http://www.iana.org/assignments/character\-sets Ϳ줿侩 MIME ̾ǤʤФʤޤ󡣤ȤС .nf \f3 .fl % \fP\f3javadoc \-charset "iso\-8859\-1" mypackage\fP .fl .fi -生成されるすべてのページの先頭に、次の行が挿入されます。 +뤹٤ƤΥڡƬˡιԤޤ .nf \f3 .fl @@ -5033,34 +3530,34 @@ http://www.iana.org/assignments/character\-sets で与えられた、推奨さ .fl \fP .fi -この META タグについては、 + META ˤĤƤϡ .na -\f2HTML の標準\fP @ +\f2HTML ɸ\fP @ .fi -http://www.w3.org/TR/REC\-html40/charset.html#h\-5.2.2 (4197265 および 4137321) を参照してください。 +http://www.w3.org/TR/REC\-html40/charset.html#h\-5.2.2 (4197265 4137321) 򻲾ȤƤ .LP -\-encoding および \-docencoding も参照してください。 +\-encoding \-docencoding ⻲ȤƤ .LP .TP 3 \-docencoding\ name -生成される HTML ファイルのエンコーディングを指定します。この名前は、 + HTML եΥ󥳡ǥ󥰤ꤷޤ̾ϡ .na \f2IANA Registry\fP @ .fi -http://www.iana.org/assignments/character\-sets で与えられた、推奨される MIME 名でなければなりません。このオプションを省略しながら \-encoding を使用した場合、生成される HTML ファイルのエンコードは、\-encoding によって決められます。例: +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 も参照してください。 +\-encoding \-charset ⻲ȤƤ .LP .TP 3 \-keywords -HTML メタキーワードタグを、クラスごとに生成されるファイルに追加します。これらのタグは、メタタグを検索するサーチエンジンがページを見つける場合に役立ちます。インターネット全体を検索する多くのサーチエンジンは、ページがメタタグを誤用しているため、メタタグを調べません。 一方、検索を自身の Web サイトに限定している企業では、サーチエンジンがメタタグを調べることによってメリットを得られます。 +HTML ᥿ɥ򡢥饹ȤեɲäޤΥϡ᥿򸡺륵󥸥󤬥ڡ򸫤ĤΩޤ󥿡ͥåΤ򸡺¿Υ󥸥ϡڡ᥿ѤƤ뤿ᡢ᥿Ĵ٤ޤ󡣰򼫿Ȥ Web Ȥ˸ꤷƤȤǤϡ󥸥󤬥᥿Ĵ٤뤳ȤˤäƥåȤޤ .LP -メタタグには、クラスの完全修飾名と、フィールドおよびメソッドの修飾されていない名前が含まれます。コンストラクタは、クラス名と同じであるため含まれません。たとえば、クラス String は次のキーワードで開始します。 +᥿ˤϡ饹δ̾ȡեɤӥ᥽åɤνƤʤ̾ޤޤޤ󥹥ȥ饯ϡ饹̾ƱǤ뤿ޤޤޤ󡣤ȤС饹 String ϼΥɤdzϤޤ .nf \f3 .fl @@ -5077,29 +3574,29 @@ HTML メタキーワードタグを、クラスごとに生成されるファイ .LP .TP 3 \-tag\ \ tagname:Xaoptcmf:"taghead" -Javadoc ツールがドキュメンテーションコメント内の引数を 1 つ取る単純なカスタムブロックタグ \f2@\fP\f2tagname\fP を解釈できるようにします。これにより、Javadoc ツールはタグ名の「スペルチェック」を行うことができるので、ソースコード内のすべてのカスタムタグに \f2\-tag\fP オプションを組み込むことをお勧めします。今回の実行で出力されないタグは、\f2X\fP を付けて無効にします。 +Javadoc ġ뤬ɥơ󥳥ΰ 1 ļñʥ֥å \f2@\fP\f2tagname\fP Ǥ褦ˤޤJavadoc ġϥ̾Ρ֥ڥåפԤȤǤΤǡ¸ߤ뤹٤ƤΥॿˤĤơ \f2\-tag\fP ץޤ뤳ȤפǤμ¹ԤǤϽϤʤϡX դ̵ \f2ˤޤ\fP .LP -コロン (\f4:\fP) は常に区切り文字になります。\f2tagname\fP でコロンを使用するには、「タグ名でのコロンの使用」を参照してください。 + (\f4:\fP) ˶ڤʸˤʤޤtagname \f2ǥѤˡˤĤƤϡ\fP ֥̾ǤΥλѡפ򻲾ȤƤ .LP -\f2\-tag\fP オプションは、タグの見出し「taghead」を太字で出力します。 その次の行には、このオプションの引数で指定したテキストが続きます。 以下の例を参照してください。ブロックタグと同様、この引数のテキストにはインラインタグを含めることができます。 このインラインタグも解釈されます。出力は、引数を 1 つ取る標準のタグ (\f2@return\fP、\f2@author\fP など) の出力とよく似ています。\f2taghead\fP を省略すると、\f2tagname\fP が見出しとして表示されます。 +\f2\-tag\fP ץϡθФtagheadפǽϤޤ μιԤˤϡΥץΰǻꤷƥȤ³ޤ ʲ򻲾ȤƤ֥åƱ͡ΰΥƥȤˤϥ饤󥿥ޤ뤳ȤǤޤΥ饤󥿥ᤵޤϤϡ 1 ļɸΥ ( \f2@return\fP \f2@author\fP ʤ) νϤȤ褯Ƥޤ\f2taghead\fP άȡ\f2tagname\fP ФȤɽޤ .LP -\f3タグの配置\fP \- 引数の \f4Xaoptcmf\fP 部分は、ソースコード内のタグを配置できる位置と、\f2X\fP を使ってこのタグを無効にできるかどうかを特定します。タグの配置位置を制限しない場合は \f4a\fP を指定します。 それ以外の文字の組み合わせも可能です。 \f4X\fP (タグの無効化) +\f3\fP \- \f4Xaoptcmf\fP ʬϡΥ֤Ǥ֤ȡ ȤäƤΥ̵ˤǤ뤫ɤꤷޤ \f2X\fP). ְ֤¤ʤ \f4a\fP ꤷޤʳʸȤ߹碌ǽǤ \f4X\fP (̵) .br -\f4a\fP (すべての位置) +\f4a\fP (٤) .br -\f4o\fP (概要) +\f4o\fP () .br -\f4p\fP (パッケージ) +\f4p\fP (ѥå) .br -\f4t\fP (型すなわちクラスおよびインタフェース) +\f4t\fP (Ĥޤꥯ饹ȥ󥿥ե) .br -\f4c\fP (コンストラクタ) +\f4c\fP (󥹥ȥ饯) .br -\f4m\fP (メソッド) +\f4m\fP (᥽å) .br -\f4f\fP (フィールド) +\f4f\fP (ե) .LP -\f3シングルタグの例\fP \- ソースコード内の任意の位置で使用で気るタグのタグオプションの例を示します。 +\f3󥰥륿\fP \- Ǥդΰ֤ǻѤǤ륿Υץ򼨤ޤ .nf \f3 .fl @@ -5107,7 +3604,7 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -@todo をコンストラクタ、メソッド、フィールドのみで使用する場合は、以下のオプションを使用します。 +@todo 򥳥󥹥ȥ饯᥽åɡեɤΤߤǻѤϡʲΥץѤޤ .nf \f3 .fl @@ -5115,7 +3612,7 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -上の例の最後のコロン (\f2:\fP) は、パラメータ区切り子ですが、見出しテキストの一部になっています (以下の例を参照)。次の例のように、\f2@todo\fP タグを含むソースコードでは、いずれかのタグオプションを使用します。 +κǸΥ (\f2:\fP) ϡѥ᡼ڤҤǤФƥȤΰˤʤäƤޤ (ʲ򻲾)Τ褦ˡ \f2@todo\fP ޤॽɤǤϡ줫ΥץѤޤ .nf \f3 .fl @@ -5123,7 +3620,7 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -\f3タグ名にコロンを使用する\fP \- コロン (:) をバックスラッシュでエスケープすると、コロンをタグ名に使用することができます。このドキュメンテーションコメントの中では、次のように使用します。 +\f3̾˥Ѥ\fP \- (:) Хååǥפȡ򥿥̾˻Ѥ뤳ȤǤޤΥɥơ󥳥ȤǤϡΤ褦˻Ѥޤ .nf \f3 .fl @@ -5135,7 +3632,7 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -でこのタグオプションを使用すると、 +ǤΥץѤȡ .nf \f3 .fl @@ -5143,9 +3640,9 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -\f3タグ名のスペルチェック (タグの無効化)\fP \- ソースコード内に配置した一部のカスタムタグの出力を抑制したい場合があります。この場合も、ソースコード内にすべてのタグを配置し、出力を抑制しないタグを有効にし、出力を抑制するタグを無効にします。タグを無効にするには、\f2X\fP を指定します。指定しないと、そのタグは有効になります。 これにより、Javadoc ツールは、検出したタグが入力ミスなどによる未知のタグであるかどうかを特定できます。未知のタグを検出した場合、Javadoc ツールは警告を出力します。 +\f3̾Υڥå (̵)\fP \- ֤ΥॿνϤ礬ޤξ⡢ˤ٤ƤΥ֤ϤʤͭˤϤ륿̵ˤޤ \f2X\fP ¸ߤϥ̵ˤʤꡢ¸ߤʤϥͭˤʤޤˤꡢJavadoc ġϡФϥߥʤɤˤ̤ΤΥǤ뤫ɤǤޤ̤ΤΥ򸡽Ф硢Javadoc ġϷٹϤޤ .LP -すでに配置されている値に \f2X\fP を追加できます。 こうしておけば、\f2X\fP を削除するだけでタグを有効にすることができます。たとえば、@todo タグの出力を抑制したい場合、次のように指定します。 +Ǥ֤Ƥͤ \f2X\fP ɲäǤޤƤС \f2X ǥͭˤ뤳ȤǤޤ\fPȤС@todo νϤ硢Τ褦˻ꤷޤ .nf \f3 .fl @@ -5153,7 +3650,7 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 .fl \fP .fi -さらに単純な指定方法もあります。 +ñʻˡ⤢ޤ .nf \f3 .fl @@ -5162,13 +3659,13 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 \fP .fi .LP -構文 \f2\-tag todo:X\fP は、\f2@todo\fP が taglet で定義されている場合も有効です。 +ʸ \f2\-tag todo:X\fP ϡ \f2@todo\fP åȤƤƤͭǤ .LP -\f3タグの順序\fP \- \f2\-tag\fP (および \f2\-taglet\fP) オプションの順序によって、その出力順序が決定します。カスタムタグと標準タグを組み合わせて使用することもできます。標準タグのタグオプションは、順序を決定するためだけのプレースホルダです。これらは標準タグ名のみを使用します。(標準タグの小見出しは変更できません。)これについては、以下の例で説明します。 +\f3ν\fP \- \f2\-tag\fP ( \f2\-taglet\fP) ץνˤäơνϽ礬ޤޤॿɸॿȤ߹碌ƻѤ뤳ȤǤޤɸॿΥץϡꤹ뤿Υץ졼ۥǤɸॿ̾ΤߤѤޤ(ɸॿξФѹǤޤ)ˤĤƤϡʲޤ .LP -\f2\-tag\fP がない場合、\f2\-taglet\fP の位置によってその順序が決定します。タグが両方とも存在する場合、コマンド行の最後にあるほうがその順序を決定します。これは、タグやタグレットがコマンド行に指定された順番に処理されるためです。たとえば、\f2\-taglet\fP と \f2\-tag\fP の両方が todo という名前を持っている場合、コマンド行の最後にあるほうが順序を決定します。 +\f2\-tag\fP ¸ߤʤϡ \f2\-taglet\fP ΰ֤ˤäƤνޤޤξȤ¸ߤ硢ޥɹԤκǸˤۤνꤷޤϡ䥿åȤޥɹԤ˻ꤵ줿֤˽뤿ǤȤС \f2\-taglet\fP \f2\-tag\fP ξ todo Ȥ̾äƤ硢ޥɹԤκǸˤۤꤷޤ .LP -\f3タグの完全セットの例\fP \- この例では、出力の「Parameters」と「Throws」の間に「To Do」を挿入します。X を使用して、@example が、ソースコード内の今回の実行では出力されないタグであることを指定します。@argfile を使用する場合は、次のように、引数ファイル内の別々の行にタグを配置できます。 行の継続を示す文字は不要です。 +\f3δåȤ\fP \- ǤϡϤΡParametersפȡThrowsפδ֤ˡTo DoפޤX Ѥơ@example κμ¹ԤǤϽϤʤǤ뤳Ȥꤷޤ@argfile ѤϡΤ褦ˡե̡ιԤ˥֤ǤޤԤη³򼨤ʸפǤ .nf \f3 .fl @@ -5187,37 +3684,37 @@ Javadoc ツールがドキュメンテーションコメント内の引数を 1 \fP .fi .LP -javadoc がドキュメンテーションコメントを解析する際に検出されたタグのうち、標準タグでも \f2\-tag\fP や \f2\-taglet\fP で渡されるタグでもないものは、未知のタグの見なされます。 この場合、警告がスローされます。 +javadoc ɥơ󥳥ȤϤݤ˸줿ΤɸॿǤ⡢ \f2\-tag\fP \f2\-taglet\fP Ϥ줿ǤʤΤϤ٤̤ΤΥȤߤʤ졢ٹ𤬥ޤ .LP -標準タグは、最初、デフォルトの順序でリスト内に内部的に格納されます。\f2\-tag\fP オプションを使用すると、このリストに追加されるタグ、すなわち標準タグの位置がデフォルトの位置から移動します。つまり、標準タグに \f2\-tag\fP オプションを付けなければ、これらはデフォルトの位置に配置されたままになります。 +ɸॿϡǽ顢ǥեȤνǥꥹŪ˳Ǽޤ \f2\-tag\fP ץѤȡΥꥹȤɲä륿ʤɸॿΰ֤ǥեȤΰ֤ưޤĤޤꡢɸॿ \f2\-tag\fP ץդʤСϥǥեȤΰ֤֤줿ޤޤˤʤޤ .LP -\f3競合の回避\fP \- 固有の名前空間を分割するには、パッケージに使用されている \f2com.mycompany.todo\fP のように、ドット (.) 区切りの命名規則を使用します。Sun は、今後も名前にドットを含まない標準タグを作成します。ユーザーが作成したタグは、Sun が提供する同じ名前のタグの動作をオーバーライドします。つまり、ユーザーが \f2@todo\fP という名前のタグまたはタグレットを作成している場合、Sun があとから同じ名前の標準タグを作成しても、そのタグまたはタグレットは元の動作を保持します。 +\f3β\fP \- ֤ͭ̾٤ʬˤϡѥå˻ѤƤ \f2com.mycompany.todo Ȥ̾Τ褦ˡɥå (.) ڤ국Ȥ̾Ȥޤ\fPOracle ϡ̾˥ɥåȤޤޤʤɸॿޤ桼ϡOracle 󶡤Ʊ̾Υư򥪡С饤ɤޤĤޤꡢ \f2@todo\fP Ȥ̾ΥޤϥåȤ桼硢Oracle θƱ̾ɸॿȤƤ⡢ưϾ˥桼ưƱˤʤޤ .LP -\f3注釈 vs. Javadoc タグ\fP \- 一般に、追加する必要のあるマークアップが、ドキュメンテーションに影響を与えたりドキュメンテーションを生成したりするためのものである場合、そのマークアップは javadoc タグにすべきです。 それ以外の場合は注釈にすべきです。 +\f3 vs. Javadoc \fP \- ̤ˡɲäɬפΤޡåפɥơ˱ƶͿɥơꤹ뤿ΤΤǤ硢Υޡåפ javadoc ˤ٤Ǥʳξˤ٤Ǥ .na -\f2「Comparing Annotations and Javadoc Tags」\fP @ +\f2Comparing Annotations and Javadoc Tags\fP @ .fi -http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#annotationsを参照してください。 +http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#annotations򻲾ȤƤ .LP -\-taglet オプションを使用して、より複雑なブロックタグやカスタムインラインタグを 作成することができます。 +\-taglet ץѤơʣʥ֥å䥫।饤󥿥 뤳ȤǤޤ .LP .TP 3 \-taglet\ \ class -そのタグのドキュメントの生成に使うドックレットを起動するためのクラスファイルを指定します。クラスの完全指定名を指定してください。このタグレットは、カスタムタグのテキスト引数の数も定義します。タグレットは、これらの引数を受け付け、処理し、出力を生成します。外部ドキュメントとサンプルタグレットについては、以下を参照してください。 +ΥΥɥȤ˻ȤɥååȤư뤿Υ饹եꤷޤ饹δ̾ꤷƤΥåȤϡॿΥƥȰοޤåȤϡΰդϤޤɥȤȥץ륿åȤˤĤƤϡʲ򻲾ȤƤ .RS 3 .TP 2 o .na -\f2「タグレットの概要」\fP @ +\f2֥åȤγס\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/javadoc/taglet/overview.html .RE .LP -タグレットは、標準タグまたはインラインタグで便利です。タグレットは任意の数の引数をとることができます。 また、テキストを太字にする、箇条書きを作成する、テキストをファイルに書き出す、その他のプロセスを開始するなどのカスタム動作を実装できます。 +åȤϡ֥åޤϥ饤󥿥ǤåȤǤդοΰȤ뤳ȤǤޤޤƥȤˤ롢վ񤭤롢ƥȤե˽񤭽Ф¾Υץ򳫻ϤʤɤΥưǤޤ .LP -タグレットで指定できるのは、タグの配置場所と配置形式のみです。その他のすべての決定は、ドックレットによって行われます。タグレットを使用しても、包含クラスのリストからクラス名を削除するなどの処理は実行できません。ただし、タグのテキストをファイルに出力したり、別のプロセスをトリガーするなどの副作用は得られます。 +åȤǻǤΤϡ־ַΤߤǤ¾Τ٤ƤηϡɥååȤˤäƹԤޤåȤѤƤ⡢ޥ饹ΥꥹȤ饯饹̾ʤɤνϼ¹ԤǤޤ󡣤ΥƥȤե˽Ϥꡢ̤ΥץȥꥬʤɤѤޤ .LP -タグレットのパスを指定するには、\f2\-tagletpath\fP オプションを使用します。以下は、生成されるページの「Parameter」と「Throws」の間に「To Do」タグレットを挿入する例です。 +åȤΥѥꤹˤϡ\f2\-tagletpath\fP ץѤޤʲϡڡΡParameterפȡThrowsפδ֤ˡTo DoץåȤǤ .nf \f3 .fl @@ -5238,25 +3735,25 @@ http://java.sun.com/javase/6/docs/technotes/guides/javadoc/taglet/overview.html \fP .fi .LP -\f2\-tag\fP オプションの代わりに \f2\-taglet\fP オプションを使用することもできますが、読みやすさを考慮するなら、\f2\-tag\fP オプションを使用したほうがよいでしょう。 +ޤ \f2\-taglet\fP ץ \f2\-tag\fP ץ˻Ѥ뤳ȤǤޤȲ㲼ǽޤ .LP .TP 3 \-tagletpath\ \ tagletpathlist -taglet クラスファイル (.class) の検索パスを指定します。\f2tagletpathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパスの以下すべてのサブディレクトリを検索します。 +taglet 饹ե (.class) θѥꤷޤ\f2tagletpathlist\fP ˤϡ (\f2:\fP) ǶڤäʣΥѥޤ뤳ȤǤޤJavadoc ġϡꤵ줿ѥʲΤ٤ƤΥ֥ǥ쥯ȥ򸡺ޤ .LP .TP 3 \-docfilessubdirs\ -\f2doc\-files\fP ディレクトリの深いコピーを有効にします。つまり、コピー先には、サブディレクトリとすべてのコンテンツがコピーされます。たとえば、\f2doc\-files/example/images\fP ディレクトリとその中のファイルがコピーされます。ここでも、サブディレクトリを除外する指定が可能です。 +\f2doc\-files\fPץǥ쥯ȥοԡͭˤޤĤޤꡢԡˤϡ֥ǥ쥯ȥȤ٤ƤΥƥĤԡޤȤСǥ쥯ȥ \f2doc\-files/example/images\fP ȤΤ٤ƤƤԡޤǤ⡢֥ǥ쥯ȥ꤬ǽǤ .LP .TP 3 \-excludedocfilessubdir\ \ name1:name2... -所定の名前の \f2doc\-files\fP サブディレクトリを除外します。これにより、SCCS とその他のソースコード制御サブディレクトリのコピーを防ぎます。 +\f2doc\-files\fPפΡꤵ줿̾Υ֥ǥ쥯ȥ򤹤٤ƽޤˤꡢSCCS Ȥ¾Υ極֥ǥ쥯ȥΥԡɤޤ .LP .TP 3 \-noqualifier\ \ all\ | \ packagename1:packagename2:... -出力されるクラス名の先頭のパッケージ名 (パッケージ修飾子) を省略します。\f2\-noqualifier\fP の引数として \f2all\fP を指定した場合、すべてのパッケージ修飾子がすべて省略されます。 削除する複数のパッケージ名をコロンで区切って、ワイルドカードとともに指定することもできます。クラスまたはインタフェース名が表示される位置からパッケージ名が削除されます。 +Ϥ륯饹̾ƬΥѥå̾ (ѥå) άޤ \f2\-noqualifier\fP ΰϡ\f2all\fP(٤ƤΥѥåҤά)ҤȤƺ٤ѥåΥڤꥹ (磻ɥɤ)Τ줫Ȥʤޤ饹ޤϥ󥿥ե̾ɽ֤ѥå̾ޤ .LP -次の例では、すべてのパッケージ修飾子を省略します。 +Ǥϡ٤ƤΥѥåҤάޤ .nf \f3 .fl @@ -5264,7 +3761,7 @@ taglet クラスファイル (.class) の検索パスを指定します。\f2tag .fl \fP .fi -次の例では、パッケージ修飾子 java.lang および java.io を省略します。 +Ǥϡѥå java.lang java.io άޤ .nf \f3 .fl @@ -5272,7 +3769,7 @@ taglet クラスファイル (.class) の検索パスを指定します。\f2tag .fl \fP .fi -次の例では、java で始まるパッケージ修飾子と com.sun というサブパッケージ (javax ではない) を省略します。 +Ǥϡjava ǻϤޤѥåҤ com.sun Ȥ֥ѥå (javax ǤϤʤ) άޤ .nf \f3 .fl @@ -5280,63 +3777,54 @@ taglet クラスファイル (.class) の検索パスを指定します。\f2tag .fl \fP .fi -パッケージ修飾子が上記の動作に従って表示される場合、名前は適切に短くされます。 詳細は「名前の表示方法」を参照してください。この規則は、\f2\-noqualifier\fP を使用したかどうかにかかわらず有効です。 +ѥåҤ嵭ư˽äɽ硢̾Ŭڤûޤܺ٤ϡ̾ɽˡפ򻲾ȤƤε§ϡ \f2\-noqualifier\fP Ѥ뤫ɤˤ餺ͭǤ .LP .TP 3 \-notimestamp\ -タイムスタンプが抑制されます。 各ページ先頭近くにある、生成された HTML 内の HTML コメントでタイムスタンプが隠されます。Javadoc を 2 つのソースベースで実行し、それらに対して diff を実行するときにこのオプションを使用すると、タイムスタンプによって diff が発生しなくなるので便利です (このオプションを使用しないと、各ページで diff になります)。タイムスタンプには Javadoc のバージョン番号が含まれており、次のようになります。 +ॹפޤƥڡƬ᤯ˤ롢줿 HTML HTML ȤǥॹפޤJavadoc 2 ĤΥ١Ǽ¹ԤФ diff ¹ԤȤˤΥץѤȡॹפˤä diff ȯʤʤΤǤ (ΥץѤʤȡƥڡ diff ˤʤޤ)ॹפˤ Javadoc ΥСֹ椬ޤޤƤꡢΤ褦ˤʤޤ .nf \f3 .fl - <!\-\- Generated by javadoc (build 1.5.0\-internal) on Tue Jun 22 09:57:24 PDT 2004 \-\-> + <!\-\- Generated by javadoc (build 1.5.0_01) on Thu Apr 02 14:04:52 IST 2009 \-\-> .fl \fP .fi .LP .TP 3 \-nocomment\ -主説明およびすべてのタグを含むコメント本文全体を抑制し、宣言だけを生成します。このオプションにより、元は異なる目的のためだったソースファイルを再利用し、新しいプロジェクトの早い段階でスケルトン HTML ドキュメントを作成できるようになりました。 -.RE -.SH "コマンド行引数ファイル" -.LP -.LP -\f2javadoc\fP のコマンド行を短くしたり簡潔にしたりするために、\f2javadoc\fP コマンドに対する引数 (\f2\-J\fP オプションを除く) が入った 1 つ以上のファイルを指定することができます。このことを利用すれば、どのオペレーティングシステム上でも、任意の長さの javadoc コマンドを作成できます。 -.LP -.LP -引数ファイルには、javac のオプションとソースファイル名を自由に組み合わせて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に空白が含まれている場合は、そのファイル名全体を二重引用符で囲みます。 +Ӥ٤ƤΥޤॳʸΤޤΥץˤꡢϰۤʤŪΤäեѤץȤᤤʳǥȥ HTML ɥȤǤ褦ˤʤޤ .LP +.TP 3 +\-sourcetab tabLength +dzƥ֤οꤷޤ +.RE +.SH "ޥɹ԰ե" .LP -引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。引数ファイル内のファイル名リストでは、ワイルドカード (*) は使用できません。たとえば、\f2*.java\fP とは指定できません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、\f2\-J\fP オプションもサポートされていません。 このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 +javadoc ΥޥɹԤûʷˤꤹ뤿ˡ \f2javadoc\fP ޥɤФ ( \f2\-J\fP ץ) ä 1 İʾΥեꤹ뤳ȤǤޤΤȤѤСɤΥڥ졼ƥ󥰥ƥǤ⡢ǤդĹ javadoc ޥɤǤޤ .LP +եˤϡjavac Υץȥե̾ͳȤ߹碌ƵҤǤޤեγưϡڡޤϲԤǶڤޤե̾˶򤬴ޤޤƤϡΥե̾ΤŰǰϤߤޤ .LP -javadoc を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。javadoc は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +եΥե̾ϡߤΥǥ쥯ȥ꤫鸫Хѥˤʤޤեΰ֤鸫ХѥǤϤޤ󡣰եΥե̾ꥹȤǤϡ磻ɥ (*) ϻѤǤޤ󡣤ȤС \f2*.java\fP ȤϻǤޤ󡣰եΰ \f2@\fP ʸѤơʣΥեƵŪ˲᤹뤳ȤϥݡȤƤޤ󡣤ޤ \f2\-J\fP ץ⥵ݡȤƤޤ ΥץϵưġϤޤưġǤϰե򥵥ݡȤƤʤǤ .LP +javadoc ¹ԤȤˡưեΥѥȥե̾Ƭ \f2@\fP ʸդϤޤjavadoc ϡ\f2@\fP ʸǻϤޤ򸫤ĤȡΥեƤŸưꥹȤޤ .SS -引数ファイルを 1 つ指定する例 -.LP -.LP -\f2argfile\fP という名前の引数ファイルにすべての Javadoc 引数を格納し、次のように使用することができます。 +ե 1 Ļꤹ .LP +Τ褦ˡ\f2argfile\fPפȤ̾ñΰեˡJavadoc Τ٤ƤΰǼޤ .nf \f3 .fl % \fP\f3javadoc @argfile\fP .fl .fi - -.LP -.LP -この引数ファイルには、次の例で示されている 2 つのファイルの内容を両方とも入れることができます。 .LP +ΰեˤϡǼƤ 2 ĤΥեƤξȤ뤳ȤǤޤ .SS -引数ファイルを 2 つ指定する例 -.LP -.LP -Javadoc オプション用に 1 つ、ソースファイル名用に 1 つというように、2 つの引数ファイルを作成し、次のようにして使用することができます。なお、このあとのリストでは、行の継続文字を使用していません。 -.LP +ե 2 Ļꤹ .LP -以下の内容を含む \f2options\fP という名前のファイルを作成します。 +2 ĤΰեǤޤ1 Ĥ Javadoc ץѡ⤦ 1 Ĥϥѥå̾ޤϥե̾ѤǤʤΥꥹȤǤϹԷ³ʸѤƤޤ .LP +Ƥޤࡢ\f2options\fPפȤ̾Υեޤ .nf \f3 .fl @@ -5346,27 +3834,24 @@ Javadoc オプション用に 1 つ、ソースファイル名用に 1 つとい .fl \-splitindex .fl - \-windowtitle 'Java 2 Platform v1.3 API Specification' + \-windowtitle 'Java SE 7 API Specification' .fl - \-doctitle 'Java(TM) 2 Platform 5.0 API Specification' + \-doctitle 'Java SE 7 API Specification' .fl - \-header '<b>Java 2 Platform </b><br><font size="\-1">5.0</font>' + \-header '<b>Java(TM) SE 7</b>' .fl - \-bottom 'Copyright 1993\-2000 Sun Microsystems, Inc. All Rights Reserved.' + \-bottom 'Copyright © 1993\-2011 Oracle and/or its affiliates. All rights reserved.' .fl \-group "Core Packages" "java.*" .fl - \-overview /java/pubs/ws/1.5/src/share/classes/overview\-core.html + \-overview /java/pubs/ws/1.7.0/src/share/classes/overview\-core.html .fl - \-sourcepath /java/pubs/ws/1.5/src/share/classes + \-sourcepath /java/pubs/ws/1.7.0/src/share/classes .fl \fP .fi - -.LP -.LP -以下の内容を含む \f2packages\fP という名前のファイルを作成します。 .LP +Ƥޤࡢ\f2packages\fPפȤ̾Υեޤ .nf \f3 .fl @@ -5378,115 +3863,89 @@ Javadoc オプション用に 1 つ、ソースファイル名用に 1 つとい .fl \fP .fi - -.LP -.LP -そのあと、次のコマンドを使用して javadoc を実行します。 .LP +ΤȡΥޥɤѤ javadoc ¹Ԥޤ .nf \f3 .fl % \fP\f3javadoc @options @packages\fP .fl .fi - -.LP .SS -パス付きの引数ファイルの例 -.LP -.LP -引数ファイルには、パスを指定できます。 ただし、そのファイル内に指定されたファイル名は、現在の作業ディレクトリから見た相対パスになります。 つまり、下の例の場合は、\f2path1\fP や \f2path2\fP から見た相対パスではありません。 +ѥդΰե .LP +եˤϡѥǤޤΥե˻ꤵ줿ե̾ϡߤκȥǥ쥯ȥ꤫鸫ХѥˤʤޤĤޤꡢξϡ \f2path1\fP \f2path2\fP 鸫ХѥǤϤޤ .nf \f3 .fl % \fP\f3javadoc @path1/options @path2/packages\fP .fl .fi - -.LP .SS -オプションの引数の例 -.LP -.LP -次に、Javadoc オプションに対する引数だけを引数ファイルに格納する例を示します。ここでは、\f2\-bottom\fP を例に取り上げます。 そのオプションには、かなり長い引数を指定することがあるからです。まず、このオプションのテキスト引数になる次のような内容を含む、\f2bottom\fP という名前のファイルを作成します。 +ץΰ .LP +ˡJavadoc ץФե˳Ǽ򼨤ޤǤ \f2\-bottom\fP ץѤޤȤΤ⡢Ĺʤǽ뤫ǤΤ褦ʥƥȰޤࡢ\f2bottom\fPפȤ̾ΥեǤޤ .nf \f3 .fl -'<font size="\-1"><a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit a +<font size="\-1"> .fl -bug or feature</a><br><br>Java is a trademark or registered trademark of + <a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit a bug or feature</a><br/> .fl -Sun Microsystems, Inc. in the US and other countries.<br>Copyright 1993\-2000 Sun + Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> .fl -Microsystems, Inc. 901 San Antonio Road,<br>Palo Alto, California, 94303, U.S.A. + Oracle is a registered trademark of Oracle Corporation and/or its affiliates. .fl -All Rights Reserved.</font>' + Other names may be trademarks of their respective owners.</font> .fl \fP .fi - -.LP -.LP -そのあと、次のようにして Javadoc ツールを実行します。 .LP +ΤȡΤ褦ˤ Javadoc ġ¹Ԥޤ .nf \f3 .fl % \fP\f3javadoc \-bottom @bottom @packages\fP .fl .fi - -.LP -.LP -また、引数ファイルの先頭に \f2\-bottom\fP オプションを組み込んでおけば、次のようにして実行できます。 .LP +뤤ϡեƬ \f2\-bottom\fP ץȤ߹ȡΤ褦˼¹ԤƤ⤫ޤޤ .nf \f3 .fl % \fP\f3javadoc @bottom @packages\fP .fl .fi -.SH "名前" -実行 -.SH "Javadoc の実行" +.SH "̾" +¹ +.SH "Javadoc μ¹" .LP +\f3Сֹ\fP \- javadoc ΥСֹȽ̤ˤϡ\f3javadoc \-J\-version\fP Ѥޤϥȥ꡼ˤɸɥååȤΥСֹ椬ޤޤޤνϤ̵ˤˤϡ \f2\-quiet\fP Ѥޤ .LP -\f3バージョン番号\fP \- javadoc のバージョン番号を判別するには、\f3javadoc \-J\-version\fP を使用します。出力ストリームには標準ドックレットのバージョン番号が含まれます。\f2\-quiet\fP で無効にできます。 -.LP -.LP -\f3公開プログラムインタフェース\fP \- Java 言語で記述されたプログラムから Javadoc ツールを起動するとき使用します。このインタフェースは \f2com.sun.tools.javadoc.Main\fP にあります (javadoc は再入可能)。詳細は、 +\f3ץ।󥿥ե\fP \- Java ǵҤ줿ץफ Javadoc ġưȤѤޤΥ󥿥ե \f2com.sun.tools.javadoc.Main ˤޤ\fP (javadoc Ϻǽ)ܺ٤ϡ .na -\f2「標準ドックレット」\fP @ +\f2ɸɥååȡ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/standard\-doclet.html#runningprogrammaticallyを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/javadoc/standard\-doclet.html#runningprogrammatically򻲾ȤƤ .LP -.LP -\f3ドックレットの実行\fP \- 下記の説明は、標準 HTML ドックレットを呼び出すためのものです。カスタムドックレットを呼び出すには、\-doclet および \-docletpath オプションを使用します。特定のドックレットを実行した完全な例については、 +\f3ɥååȤμ¹\fP \- ϡɸ HTML ɥååȤƤӽФΤΤǤɥååȤƤӽФˤϡ\-doclet \-docletpath ץѤޤΥɥååȤ¹ԤˤĤƤϡ .na -\f2MIF Doclet のドキュメント\fP @ +\f2MIF Doclet Υɥ\fP @ .fi -http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.htmlを参照してください。 -.LP -.SH "簡単な例" -.LP -.LP -javadoc は、パッケージ全体に対して実行することも、個々のソースファイルに対して実行することもできます。各パッケージ名は、それぞれのパッケージ名に対応するディレクトリ名を持ちます。次の例では、ソースファイルは \f2/home/src/java/awt/*.java\fP にあります。生成先ディレクトリは \f2/home/html\fP です。 +http://java.sun.com/j2se/javadoc/mifdoclet/docs/mifdoclet.html򻲾ȤƤ +.SH "ñ" .LP +javadoc ϡѥåΤФƼ¹Ԥ뤳Ȥ⡢ġΥեФƼ¹Ԥ뤳ȤǤޤƥѥå̾ϡ줾Υѥå̾бǥ쥯ȥ̾ޤǤϡե \f2/home/src/java/awt/*.java ˤޤ\fPǥ쥯ȥ \f2/home/html Ǥ\fP .SS -1 つ以上のパッケージのドキュメント化 -.LP -.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 によって、その両方の場所を指定しなければなりません。 +1 İʾΥѥåΥɥȲ .LP +ѥåɥȲˤϡΥѥåΥե (\f2*.java\fP) 򡢤ΥѥåƱ̾Υǥ쥯ȥ˳Ǽɬפޤѥå̾ ( \f2java.awt.color\fP Τ褦˥ɥåȤǶڤ줿) Ĥμ̻Ҥ鹽Ƥ硢¦μ̻Ҥ˿ʤिӤˡμ̻Ҥ꿼֥ǥ쥯ȥбƤɬפޤ ( \f2java/awt/color\fP ʤ) ñѥåΥե 2 롼פʬۤʤˤ뤽Τ褦 2 ĤΥǥ쥯ȥĥ꡼ˤ줾ǼƤ⤫ޤޤ󡣤ξΥǥ쥯ȥؤΥѥ \f2\-sourcepath\fP ꤹɬפޤ: \f2src1/java/awt/color\fP \f2src2/java/awt/color\fP .LP -javadoc を実行するには、\f2cd\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 は除外されます。 +\f3 1 \- 1 İʾΥѥåεưƵŪ˼¹\fP \- Ǥ javadoc ǤդΥǥ쥯ȥ꤫¹ԤǤ褦ˡ\-sourcepath ѤƵŪΤ \-subpackages (1.4 οץ) Ѥޤϡ \f2java\fP ǥ쥯ȥΥ֥ѥå򤿤ɤޤκݤˡ \f2java.net\fP \f2java.lang\fP 롼Ȥ˻ĥѥåϽޤΤȤ \f2java.lang Υ֥ѥå\fPǤ java.lang.ref \f2ޤ\fP .nf \f3 .fl @@ -5494,10 +3953,10 @@ o .fl .fi .LP -その他のパッケージツリーを巡回するには、\f2java:javax:org.xml.sax\fP のように、\f2\-subpackages\fP 引数にその名前を追加します。 +ۤΥѥåĥ꡼Ⲽˤɤˤϡ \f2java:javax:org.xml.sax Τ褦ˡ\fP Υѥå̾ \-subpackages \f2ΰɲäޤ\fP .TP 2 o -\f3ケース 2 \- ルートソースディレクトリに移ってから明示的なパッケージに対して実行\fP \- 完全指定のパッケージ名の親ディレクトリに移ります。次に、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。 +\f3 2 \- 롼ȥǥ쥯ȥ˰ܤäƤŪʥѥåФƼ¹\fP \- Υѥå̾οƥǥ쥯ȥ˰ܤޤˡɥȲ 1 İʾΥѥå̾ꤷ javadoc ¹Ԥޤ .nf \f3 .fl @@ -5508,7 +3967,7 @@ o .fi .TP 2 o -\f3ケース 3 \- 任意のディレクトリから実行。 ソースファイルは 1 つのディレクトリツリー内にある\fP \- このケースでは、現在のディレクトリがどこであってもかまいません。最上位パッケージの親ディレクトリを \f2\-sourcepath\fP に指定し、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。 +\f3 3 \- ǤդΥǥ쥯ȥ꤫¹ԡե 1 ĤΥǥ쥯ȥĥ꡼ˤ\fP \- ΥǤϡߤΥǥ쥯ȥ꤬ɤǤäƤ⤫ޤޤ󡣺Ǿ̥ѥåοƥǥ쥯ȥ \f2\-sourcepath\fP ˻ꤷɥȲ 1 İʾΥѥå̾ꤷ javadoc ¹Ԥޤ .nf \f3 .fl @@ -5517,7 +3976,7 @@ o .fi .TP 2 o -\f3ケース 4 \- 任意のディレクトリから実行。 ソースファイルは複数のディレクトリツリー内にある\fP \- これはケース 3 と似ていますが、パッケージが複数のディレクトリツリーに存在します。それぞれのツリーのルートへのパスを \f2\-sourcepath\fP に指定し (コロンで区切る)、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。1 つのパッケージのすべてのソースファイルが、1 つのルートディレクトリの下に存在しなければならない、ということはありません。 ソースパスとして指定された場所のどこかで見つかれば十分です。 +\f3 4 \- ǤդΥǥ쥯ȥ꤫¹ԡեʣΥǥ쥯ȥĥ꡼ˤ\fP \- ϥ 3 ȻƤޤѥåʣΥǥ쥯ȥĥ꡼¸ߤޤ줾Υĥ꡼Υ롼ȤؤΥѥ \f2\-sourcepath\fP ˻ꤷ (Ƕڤ)ɥȲ 1 İʾΥѥå̾ꤷ javadoc ¹Ԥޤ1 ĤΥѥåΤ٤ƤΥե뤬1 ĤΥ롼ȥǥ쥯ȥβ¸ߤʤФʤʤȤȤϤޤ󡣥ѥȤƻꤵ줿ΤɤǸĤнʬǤ .nf \f3 .fl @@ -5525,21 +3984,16 @@ o .fl .fi .RE - -.LP -.LP -結果: 上記のどのケースでも、\f2java.awt\fP と \f2java.awt.event\fP パッケージ内の public および protected クラスとインタフェースについて、HTML 形式のドキュメントが生成され、指定された生成先ディレクトリ (\f2/home/html\fP) に HTML ファイルが保存されます。2 つ以上のパッケージが生成されているので、ドキュメントは、パッケージのリスト、クラスのリスト、およびメインのクラスページという 3 つのフレームを持つことになります。 .LP +: ٤ƤΥǥѥå \f2java.awt\fP \f2java.awt.event\fP public protected 饹ȥ󥿥եˤĤơHTML ΥɥȤ졢ꤵ줿ǥ쥯ȥ (\f2/home/html\fP) HTML ե뤬¸ޤ2 İʾΥѥåƤΤǡɥȤϡѥåΥꥹȡ饹ΥꥹȡӥᥤΥ饹ڡȤ 3 ĤΥե졼ĤȤˤʤޤ .SS -1 つ以上のクラスのドキュメント化 -.LP -.LP -また、1 つ以上のソースファイル (\f2.java\fP) を渡して、Javadoc ツールを実行することもできます。javadoc は、次の 2 つのどちらかの方法で実行できます。 1 つは、\f2cd\fP コマンドでディレクトリを変更する方法、もう 1 つは \f2.java\fP ファイルへのパスを完全指定する方法です。相対パスは、現在のディレクトリを起点とします。ソースファイル名を渡すときは、\f2\-sourcepath\fP オプションは無視されます。アスタリスク (*) のようなコマンド行ワイルドカードを使用すると、クラスのグループを指定できます。 +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 を実行します。 +\f3 1 \- ǥ쥯ȥ˰ܤ\fP \- \f2.java\fP եΤǥ쥯ȥ˰ܤޤˡɥȲ 1 İʾΥե̾ꤷ javadoc ¹Ԥޤ .nf \f3 .fl @@ -5548,10 +4002,10 @@ o % \f3javadoc \-d /home/html Button.java Canvas.java Graphics*.java\fP .fl .fi -この例では、クラス \f2Button\fP と \f2Canvas\fP、および名前が \f2Graphics\fP で始まるクラスについて、HTML 形式のドキュメントが生成されます。パッケージ名ではなくソースファイルが javadoc に引数として渡されているので、ドキュメントは、クラスのリストとメインページという 2 つのフレームを持つことになります。 +Ǥϡ饹 \f2Button\fP \f2Canvas\fP ̾ \f2Graphics ǻϤޤ륯饹ˤĤơHTML ΥɥȤޤ\fPѥå̾ǤϤʤե뤬 javadoc ˰ȤϤƤΤǡɥȤϡ饹ΥꥹȤȥᥤڡȤ 2 ĤΥե졼ĤȤˤʤޤ .TP 2 o -\f3ケース 2 \- パッケージのルートディレクトリに移る\fP \- これは、同じルート内にある複数のサブパッケージの個々のソースファイルをドキュメント化する場合に便利です。パッケージのルートディレクトリに移り、各ソースファイルを、ルートからのパスとともに指定します。 +\f3 2 \- ѥåΥ롼ȥǥ쥯ȥ˰ܤ\fP \- ϡƱ롼ˤʣΥ֥ѥåθġΥեɥȲǤѥåΥ롼ȥǥ쥯ȥ˰ܤꡢƥե򡢥롼ȤΥѥȤȤ˻ꤷޤ .nf \f3 .fl @@ -5560,103 +4014,88 @@ o % \f3javadoc \-d /home/html java/awt/Button.java java/applet/Applet.java\fP .fl .fi -この例では、\f2Button\fP クラスおよび \f2Applet\fP クラスについて、HTML 形式のドキュメントが生成されます。 +Ǥϡ饹 \f2Button\fP \f2Applet ˤĤơHTML ΥɥȤޤ\fP .TP 2 o -\f3ケース 3 \- 任意のディレクトリから\fP \- このケースでは、現在のディレクトリがどこであってもかまいません。ドキュメント化する \f2.java\fP ファイルへの絶対パス (または、現在のディレクトリからの相対パス) を指定して javadoc を実行します。 +\f3 3 \- ǤդΥǥ쥯ȥ꤫\fP \- ΥǤϡߤΥǥ쥯ȥ꤬ɤǤäƤ⤫ޤޤ󡣥ɥȲ .java եؤХѥ (ޤϥȥǥ쥯ȥ꤫Хѥ) ꤷ \f2javadoc\fP ¹Ԥޤ .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 形式のドキュメントが生成されます。 +Ǥϡ饹 \f2Button\fP ȡ̾ \f2Graphics ǻϤޤ륯饹ˤĤơHTML ΥɥȤޤ\fP .RE - -.LP .SS -パッケージとクラスのドキュメント化 -.LP -.LP -パッケージ全体と個々のクラスを同時に指定してドキュメント化することもできます。次に前述の 2 つの例を組み合わせた例を示します。\f2\-sourcepath\fP は、パッケージへのパスに対しては使用できますが、個々のクラスのパスに対しては使用できません。 +ѥåȥ饹ΥɥȲ .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 .LP -この例では、パッケージ \f2java.awt\fP と、クラス \f2Applet\fP について、HTML 形式のドキュメントが生成されます。Javadoc ツールは、\f2Applet\fP のパッケージ名を、\f2Applet.java\fP ソースファイル内のパッケージ宣言 (その宣言がある場合) から判別します。 +Ǥϡѥå \f2java.awt\fP ȥ饹 \f2Applet ˤĤơHTML ΥɥȤޤ\fPJavadoc ġϡ \f2Applet.java ե˥ѥåС\fP ˴Ť \f2Applet Υѥå̾\fP Ƚꤷޤ +.SH "" .LP -.SH "使用例" -.LP -.LP -Javadoc ツールには多くの便利なオプションがあり、その中にはほかのオプションよりも頻繁に使われるものがあります。ここで紹介するのは、Java プラットフォーム API に対して Javadoc ツールを実行するときに使用する実際のコマンドです。Java 2 Platform, Standard Edition, v1.2 に存在する、約 1500 個の public および protected クラスについてドキュメントを生成するために、180M バイトのメモリーを使用しました。 -.LP -.LP -同じ例を 2 回掲載します。 最初の例はコマンド行から実行するもので、2 番目の例は Makefile から実行するものです。オプションの引数に絶対パスを使用しているため、任意のディレクトリからこの \f2javadoc\fP コマンドを実行できます。 +Javadoc ġˤ¿ʥץ󤬤ꡢˤϤۤΥץˤ˻ȤΤޤǾҲ𤹤ΤϡJava ץåȥե API Ф Javadoc ġ¹ԤȤ˻ѤºݤΥޥɤǤǤϡJava SE Platform, Standard Edition, v1.2 () 1500 Ĥ public protected 饹ΥɥȤ뤿ˡ180M ХȤΥ꡼Ѥޤ .LP +Ʊ 2 ǺܤޤǽϥޥɹԤ¹ԤΤǡ2 ܤ Makefile ¹ԤΤǤץΰХѥѤƤ뤿ᡢƱ \f2javadoc\fP ޥɤɤΥǥ쥯ȥ꤫Ǥ¹ԤǤޤ .SS -コマンド行の例 -.LP -.LP -次のコマンド行の例は 900 文字を超えているため、DOS などのシェルには大きすぎます。この制限を回避するには、コマンド行引数ファイルを使用します。 または、シェルスクリプトを記述します。 +ޥɹԤ .LP +ϡDOS ʤɤΰΥǤĹǽޤ¤򤹤ˤϡޥɹ԰եѤޤޤϡ륹ץȤ򵭽Ҥޤ .nf \f3 .fl -% javadoc \-sourcepath /java/jdk/src/share/classes \\ +% javadoc \-sourcepath /java/jdk/src/share/classes \\ .fl - \-overview /java/jdk/src/share/classes/overview.html \\ + \-overview /java/jdk/src/share/classes/overview.html \\ .fl - \-d /java/jdk/build/api \\ + \-d /java/jdk/build/api \\ .fl - \-use \\ + \-use \\ .fl - \-splitIndex \\ + \-splitIndex \\ .fl - \-windowtitle 'Java 2 Platform 5.0 API Specification' \\ + \-windowtitle 'Java Platform, Standard Edition 7 API Specification' \\ .fl - \-doctitle 'Java(TM) 2 Platform 5.0 API Specification' \\ + \-doctitle 'Java Platform, Standard Edition 7 API Specification' \\ .fl - \-header '<b>Java 2 Platform </b><br><font size="\-1">5.0</font>' \\ + \-header '<b>Java(TM) SE 7</b>' \\ .fl - \-bottom '<font size="\-1"><a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit + \-bottom '<font size="\-1"> .fl -a bug or feature</a><br><br>Java is a trademark or registered trademark of Sun Microsystems, + <a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit a bug or feature</a><br/> .fl -Inc. in the US and other countries.<br>Copyright 1993\-1999 Sun Microsystems, Inc. + Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> .fl -901 San Antonio Road,<br>Palo Alto, California, 94303, U.S.A. All Rights Reserved.</font>' \\ + 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.*" \\ + \-group "Extension Packages" "javax.*" \\ .fl - \-J\-Xmx180m \\ + \-J\-Xmx180m \\ .fl @packages .fl \fP .fi - -.LP -.LP -上記のコマンドで、\f2packages\fP は、処理対象のパッケージ名 (\f2java.applet java.lang\fP など) が入っているファイルの名前です。各オプションの、単一引用符で囲まれた引数の内側には、改行文字を挿入できません。たとえば、この例をコピー&ペーストする場合は、\f2\-bottom\fP オプションから改行文字を削除してください。さらに、このあとの「注」も参照してください。 .LP +嵭Υޥɤǡ \f2packages\fP ϡоݤΥѥå̾ ( \f2java.applet java.lang\fP ʤ) äƤե̾ǤƥץΡñǰϤޤ줿¦ˤϡʸǤޤ󡣤ȤС򥳥ԡڡȤϡ \f2\-bottom\fP ץ󤫤ʸƤˡΤȤΡפ⻲ȤƤ .SS -Makefile の例 +Makefile .LP -.LP -ここでは、GNU Makefile の例を示します。Windows の Makefile の例については、 +ǤϡGNU Makefile 򼨤ޤWindows Makefile ˤĤƤϡ .na -\f2Windows の Makefile の作成方法\fP @ +\f2Windows Makefile κˡ\fP @ .fi -http://java.sun.com/j2se/javadoc/faq/index.html#makefilesを参照してください。 -.LP +http://java.sun.com/j2se/javadoc/faq/index.html#makefiles򻲾ȤƤ .nf \f3 .fl @@ -5692,101 +4131,83 @@ javadoc \-\fP\f3sourcepath\fP\f3 $(SRCDIR) \\ /* Sets path for so .fl .fl -WINDOWTITLE = 'Java 2 Platform v1.2 API Specification' +WINDOWTITLE = 'Java(TM) SE 7 API Specification' .fl -DOCTITLE = 'Java(TM) 2 Platform v1.2 API Specification' +DOCTITLE = 'Java(TM) Platform Standard Edition 7 API Specification' .fl -HEADER = '<b>Java 2 Platform </b><br><font size="\-1">v1.2</font>' +HEADER = '<b>Java(TM) SE 7</font>' .fl -BOTTOM = '<font size="\-1"><a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit +BOTTOM = '<font size="\-1"> .fl - a bug or feature</a><br><br>Java is a trademark or registered trademark + <a href="http://java.sun.com/cgi\-bin/bugreport.cgi">Submit a bug or feature</a><br/> .fl - of Sun Microsystems, Inc. in the US and other countries.<br>Copyright 1993\-1999 + Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> .fl - Sun Microsystems, Inc. 901 San Antonio Road,<br>Palo Alto, California, 94303, U.S.A. + Oracle is a registered trademark of Oracle Corporation and/or its affiliates. .fl - All Rights Reserved.</font>' + 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.2/src/share/classes' +SRCDIR = '/java/jdk/1.7.0/src/share/classes' .fl \fP .fi - -.LP -.LP -Makefile の引数は、単一引用符で囲みます。 -.LP .LP -\f3注\fP +Makefile ΰϡñǰϤߤޤ .LP +\f3\fP .RS 3 .TP 2 o -\f2\-windowtitle\fP オプションを省略すると、Javadoc ツールによって、ドキュメントタイトルがウィンドウタイトルにコピーされます。\f2\-windowtitle\fP のテキストは、基本的に \f2\-doctitle\fP と同じです。 ただし、HTML タグは使用しません。 HTML タグは、ウィンドウタイトルにそのままのテキストとして表示されてしまいます。 +\-windowtitle \f2ץάȡ\fP Javadoc ġˤäƥɥȥȥ뤬ɥȥ˥ԡޤ \f2\-windowtitle\fP ΥƥȤϴŪ \f2\-doctitle\fP ΤΤƱǤHTML ޤޤʤۤʤޤϡHTML raw ƥȤȤƥɥȥɽΤɤǤ .TP 2 o -この例のように \f2\-footer\fP オプションを省略すると、Javadoc ツールによって、ヘッダーテキストがフッターにコピーされます。 +ǹԤäƤ褦 \f2\-footer\fP ץάȡJavadoc ġˤäƥإåΥƥȤեå˥ԡޤ .TP 2 o -この例では必要ありませんが、\-\f2classpath\fP および \-\f2link\fP も重要なオプションです。 +Ǥɬפޤ󤬡\-\f2classpath\fP \-\f2link\fP פʥץǤ .RE - -.LP -.SH "トラブルシューティング" -.LP +.SH "ȥ֥륷塼ƥ" .SS -一般的なトラブルシューティング -.LP +Ūʥȥ֥륷塼ƥ .RS 3 .TP 2 o -\f3Javadoc FAQ\fP \- 一般的なバグおよびトラブルシューティングのヒントは、 +\f3Javadoc FAQ\fP \- ŪʥХӥȥ֥륷塼ƥ󥰤ΥҥȤϡ .na -\f2「Javadoc FAQ」\fP @ +\f2Javadoc FAQ\fP @ .fi -http://java.sun.com/j2se/javadoc/faq/index.html#B で参照できます。 +http://java.sun.com/j2se/javadoc/faq/index.html#B ǻȤǤޤ .TP 2 o -\f3バグおよび制限事項\fP \- バグの一部は、「Important Bug Fixes and Changes」 でも参照できます。 +\f3Х»\fP \- ХΰϡImportant Bug Fixes and Changes Ǥ⻲ȤǤޤ .TP 2 o -\f3バージョン番号\fP \- 「バージョン番号」を参照してください。 +\f3Сֹ\fP \- ֥Сֹפ򻲾ȤƤ .TP 2 o -\f3有効なクラスだけをドキュメント化\fP \- パッケージをドキュメント化するとき、Javadoc は、有効なクラス名で構成されているファイルのみを読み込みます。たとえば、ファイル名にハイフン「\-」を含めることで、javadoc によるファイルの解析を防ぐことができます。 +\f3ͭʥ饹ɥȲ\fP \- ѥåɥȲȤJavadoc ϡͭʥ饹̾ǹƤեΤߤɤ߹ߤޤȤСե̾˥ϥե\-פޤ뤳Ȥǡjavadoc ˤեβϤɤȤǤޤ .RE - -.LP .SS -エラーと警告 -.LP -.LP -エラーおよび警告メッセージには、ファイル名と宣言行 (ドキュメンテーションコメント内の特定の行ではない) の行番号が含まれます。 +顼ȷٹ .LP +顼ӷٹåˤϡե̾ (ɥơ󥳥ιԤǤϤʤ) ιֹ椬ޤޤޤ .RS 3 .TP 2 o -\f2"error:cannot read:Class1.java"\fP Javadoc ツールはカレントディレクトリに Class1.java クラスをロードしようとしています。絶対パスまたは相対パスとともに表示されるクラス名は、この例の場合 \f2./Class1.java\fP と同じです。 +\f2"error: cannot read: Class1.java"\fP Javadoc ġϥȥǥ쥯ȥ Class1.java 饹ɤ褦ȤƤޤХѥޤХѥȤȤɽ륯饹̾ϡξ \f2./Class1.java ƱǤ\fP .RE - -.LP -.SH "環境" -.LP +.SH "Ķ" .RS 3 .TP 3 CLASSPATH -Javadoc がユーザークラスのファイルを探すときに使うパスを指定する環境変数です。この環境変数は、\f2\-classpath\fP オプションによってオーバーライドされます。ディレクトリは、次のようにコロンで区切ります。 +Javadoc 桼饹ΥեõȤ˻ȤѥꤹĶѿǤδĶѿϡ \f2\-classpath\fP ץˤäƥС饤ɤޤǥ쥯ȥϡΤ褦˥Ƕڤޤ .:/home/classes:/usr/local/java/classes .RE - -.LP -.SH "関連項目" -.LP +.SH "Ϣ" .RS 3 .TP 2 o @@ -5806,7 +4227,7 @@ javap(1) .TP 2 o .na -\f2Javadoc のホームページ\fP @ +\f2Javadoc Υۡڡ\fP @ .fi http://java.sun.com/j2se/javadoc/index.jsp .TP 2 @@ -5818,16 +4239,14 @@ http://java.sun.com/j2se/javadoc/writingdoccomments/index.html .TP 2 o .na -\f2クラスパスの設定\fP @ +\f2饹ѥ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/tools/index.html#general .TP 2 o .na -\f2javac と javadoc がクラスを検索する方法\fP @ +\f2javac javadoc 饹򸡺ˡ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html#srcfiles (tools.jar) .RE - -.LP diff --git a/src/solaris/doc/sun/man/man1/ja/javah.1 b/src/solaris/doc/sun/man/man1/ja/javah.1 index 386c5d01752a2fec32931b750c0e91587e1a0da4..114b2138719ee8b1dfadce7fb83ede61e7814039 100644 --- a/src/solaris/doc/sun/man/man1/ja/javah.1 +++ b/src/solaris/doc/sun/man/man1/ja/javah.1 @@ -19,82 +19,67 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH javah 1 "02 Jun 2010" +.TH javah 1 "14 Apr 2011" .LP -.SH "名前" -javah \- C ヘッダーとスタブファイルジェネレータ +.SH "̾" +javah \- C إåȥ֥ե른ͥ졼 .LP -.RS 3 - .LP +\f3javah\fP ϡJava 饹 C إåե C եޤΥեϡJava ץߥ󥰸ǽ񤫤줿ɤȡC ʤɤΤ¾θǽ񤫤줿ɤ³ɤߤ˺Ѥ褦ˤޤ .LP -\f3javah\fP は、Java クラスから C ヘッダーファイルと C ソースファイルを作成します。これらのファイルは、Java プログラミング言語で書かれたコードと、C などのその他の言語で書かれたコードを接続し、コードが相互に作用するようにします。 -.LP -.RE -.SH "形式" -.LP - +.SH "" .LP .nf \f3 .fl javah [ \fP\f3options\fP\f3 ] fully\-qualified\-classname. . . .fl -javah_g [ \fP\f3options\fP\f3 ] fully\-qualified\-classname. . . -.fl \fP .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3javah\fP は、ネイティブメソッドを実装するために必要な C ヘッダーとソースファイルを生成します。作成されたヘッダーとソースファイルは、ネイティブソースコードからオブジェクトのインスタンス変数を参照するために C プログラムによって使用されます。.h ファイルは、対応するクラスと一致する配置を持つ構造体定義を含みます。構造体のフィールドは、クラスのインスタンス変数に対応します。 +\f3javah\fP ϡͥƥ֥᥽åɤ뤿ɬפ C إåȥեޤ줿إåȥեϡͥƥ֥ɤ饪֥ȤΥ󥹥ѿ򻲾Ȥ뤿 C ץˤäƻѤޤ.h եϡб륯饹Ȱפ֤Ťޤߤޤ¤ΤΥեɤϡ饹Υ󥹥ѿбޤ .LP .LP -ヘッダーファイルとその中で宣言される構造体の名前はクラスの名前から派生します。\f3javah\fP に渡されるクラスがパッケージの中にある場合、パッケージ名はヘッダーファイル名と構造体名の両方に付加されます。下線 (_) が名前の区切り文字として使用されます。 +إåեȤ빽¤Τ̾ϥ饹̾ޤ\f3javah\fP Ϥ륯饹ѥåˤ硢ѥå̾ϥإåե̾ȹ¤̾ξղäޤ (_) ̾ζڤʸȤƻѤޤ .LP .LP -デフォルトでは \f3javah\fP は、コマンド行にリストされる各クラスのヘッダーファイルを作成し、現在のディレクトリにファイルを置きます。ソースファイルを作成するには、\f2\-stubs\fP オプションを使用してください。1 つのファイルの中に、リストされたすべてのクラスの結果を連結するには、\f2\-o\fP オプションを使用してください。 +ǥեȤǤ \f3javah\fP ϡޥɹԤ˥ꥹȤƥ饹ΥإåեߤΥǥ쥯ȥ˥ե֤ޤեˤϡ\f2\-stubs\fP ץѤƤ1 ĤΥեˡꥹȤ줿٤ƤΥ饹η̤Ϣ뤹ˤϡ\f2\-o\fP ץѤƤ .LP .LP -新しいネイティブメソッドインタフェースである Java Native Interface (JNI) は、ヘッダー情報またはスタブファイルを必要としません。 現在では、\f3javah\fP は、JNI 形式のネイティブメソッドに必要なネイティブメソッド機能プロトタイプを生成します。 デフォルトでは、\f3javah\fP は JNI 形式で出力され、その結果は .h ファイルに格納されます。 +ͥƥ֥᥽åɥ󥿥եǤ Java Native Interface (JNI) ϡإåޤϥ֥եɬפȤޤ󡣸ߤǤϡ\f3javah\fP ϡJNI Υͥƥ֥᥽åɤɬפʥͥƥ֥᥽åɵǽץȥפޤǥեȤǤϡ\f3javah\fP JNI ǽϤ졢η̤ .h ե˳Ǽޤ .LP -.LP -\f3javah_g\fP は、jdb(1) のようなデバッガに適した、\f3javah\fP の最適化されていないバージョンです。 -.LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-o outputfile -コマンド行にリストされたすべてのクラスに対して、結果のヘッダーまたはソースファイルを連結して \f2outputfile\fP に格納します。\f3\-o\fP または \f3\-d\fP のどちらか一方だけが使われます。 +ޥɹԤ˥ꥹȤ줿٤ƤΥ饹Фơ̤ΥإåޤϥեϢ뤷 \f2outputfile\fP ˳Ǽޤ\f3\-o\fP ޤ \f3\-d\fP Τɤ餫Ȥޤ .TP 3 \-d directory -\f3javah\fP がヘッダーファイルまたはスタブファイルを保存する、ディレクトリを設定します。\f3\-d\fP または \f3\-o\fP のどちらか一方だけが使われます。 +\f3javah\fP إåեޤϥ֥ե¸롢ǥ쥯ȥꤷޤ\f3\-d\fP ޤ \f3\-o\fP Τɤ餫Ȥޤ .TP 3 \-stubs -\f3javah\fP が、Java オブジェクトファイルから C 宣言を生成します。 +\f3javah\fP Java ֥ȥե뤫 C ޤ .TP 3 \-verbose -詳細出力を指定し、作成ファイルの状態に関するメッセージを、\f3javah\fP が標準出力に出力します。 +ܺٽϤꤷեξ֤˴ؤå\f3javah\fP ɸϤ˽Ϥޤ .TP 3 \-help -\f3javah\fP の使用法についてのヘルプメッセージを出力します。 +\f3javah\fP λˡˤĤƤΥإץåϤޤ .TP 3 \-version -\f3javah\fP のバージョン情報を出力します。 +\f3javah\fP ΥСϤޤ .TP 3 \-jni -JNI 形式のネイティブファイル機能プロトタイプを含む出力ファイルを、\f3javah\fP が作成します。これは標準出力であるため、\f3\-jni\fP の使用はオプションです。 +JNI Υͥƥ֥ե뵡ǽץȥפޤϥե\f3javah\fP ޤɸϤǤ뤿ᡢ\f3\-jni\fP λѤϥץǤ .TP 3 \-classpath path -クラスを探すために \f3javah\fP が使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 +饹õ \f3javah\fP ѤѥꤷޤǥեȤޤ CLASSPATH Ķѿ񤭤ޤǥ쥯ȥϥʬ䤷ޤäơ\f2path\fP ΰ̷ϼΤ褦ˤʤޤ .nf \f3 .fl @@ -102,7 +87,7 @@ JNI 形式のネイティブファイル機能プロトタイプを含む出力 .fl \fP .fi -例を示します。 +򼨤ޤ .nf \f3 .fl @@ -111,33 +96,31 @@ JNI 形式のネイティブファイル機能プロトタイプを含む出力 \fP .fi .LP -便宜上、\f2*\fP のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 \f2.jar\fP または \f2.JAR\fP を持つすべてのファイルのリストを指定するのと同じとみなされます (Java プログラムはこの 2 つの呼び出しを区別できない)。 +ص塢 \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 仮想マシンの起動前に実行されます。したがって、\f2System.getenv("CLASSPATH")\fP 呼び出しのように環境に問い合わせを行わない限り、Java プログラムが展開されていないワイルドカードを認識することはありません。 +ȤСǥ쥯ȥ \f2foo\fP \f2a.jar\fP \f2b.JAR\fP ޤޤƤ硢饹ѥ \f2foo/*\fP \f2A.jar:b.JAR\fP ŸޤJAR եν֤ϻꤵޤ󡣤ΥꥹȤˤϡեޤᡢꤵ줿ǥ쥯ȥΤ٤Ƥ JAR ե뤬ޤޤޤ \f2*\fP 륯饹ѥȥϡߤΥǥ쥯ȥΤ٤Ƥ JAR եΥꥹȤŸޤ \f2CLASSPATH\fP Ķѿ⡢ˤƱͤŸޤ饹ѥΥ磻ɥŸɬJava ۥޥεư˼¹Ԥޤäơ\f2System.getenv("CLASSPATH")\fP ƤӽФΤ褦˴Ķ䤤碌Ԥʤ¤ꡢJava ץबŸƤʤ磻ɥɤǧ뤳ȤϤޤ .TP 3 \-bootclasspath path -ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは \f2jre/lib/rt.jar\fP および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。 +֡ȥȥåץ饹ɤѥꤷޤ֡ȥȥåץ饹ϡǥեȤǤ \f2jre/lib/rt.jar\fP ¾ΤĤ JAR ե ˤ롢 Java 2 ץåȥե륯饹Ǥ .TP 3 \-old -古い JDK1.0 形式のヘッダーファイルを生成するように指定します。 +Ť JDK1.0 Υإåե褦˻ꤷޤ .TP 3 \-force -出力ファイルが常に書き込まれるように指定します。 +ϥե뤬˽񤭹ޤ褦˻ꤷޤ .TP 3 \-Joption -Java 仮想マシンに \f2option\fP を渡します。 \f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ .RE .LP -.SH "環境変数" -.LP - +.SH "Ķѿ" .LP .RS 3 .TP 3 CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割されています。 +桼饹ؤΥѥ򥷥ƥ˻ꤷޤǥ쥯ȥϥʬ䤵Ƥޤ .nf \f3 .fl @@ -148,11 +131,9 @@ CLASSPATH .RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP -javac(1)、java(1)、jdb(1)、javap(1)、javadoc(1) +javac(1)java(1)jdb(1)javap(1)javadoc(1) .LP diff --git a/src/solaris/doc/sun/man/man1/ja/javap.1 b/src/solaris/doc/sun/man/man1/ja/javap.1 index f8589435ec72de63c5d9fd01b938147702632b4b..99e6edfcb2843e18fbc3d8d01093d501e43c3a96 100644 --- a/src/solaris/doc/sun/man/man1/ja/javap.1 +++ b/src/solaris/doc/sun/man/man1/ja/javap.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH javap 1 "02 Jun 2010" +.TH javap 1 "14 Apr 2011" .LP -.SH "名前" -javap \- Java クラスファイル逆アセンブラ -.LP -.RS 3 - +.SH "̾" +javap \- Java 饹եե֥ .LP .LP -クラスファイルを逆アセンブルします。 -.LP -.RE -.SH "形式" +饹եե֥뤷ޤ .LP - +.SH "" .LP .nf \f3 @@ -45,15 +39,10 @@ javap [ \fP\f3options\fP\f3 ] class. . . .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3javap\fP コマンドは、クラスファイルを逆アセンブルします。その出力は指定するオプションにより異なります。オプションを指定しない場合、\f3javap\fP は、そのパッケージ、渡されたクラスの protected および public のフィールドとメソッドを出力します。 \f3javap\fP はその出力を標準出力に表示します。たとえば、次のクラス宣言をコンパイルするとします。 -.LP -.RS 3 - +\f3javap\fP ޥɤϡ饹եե֥뤷ޤνϤϻꤹ륪ץˤۤʤޤץꤷʤ硢\f3javap\fP ϡΥѥåϤ줿饹 protected public Υեɤȥ᥽åɤϤޤ\f3javap\fP ϤνϤɸϤɽޤȤСΥ饹򥳥ѥ뤹Ȥޤ .LP .nf \f3 @@ -96,14 +85,10 @@ public class DocFooter extends Applet { .fl \fP .fi -.RE .LP .LP -\f3javap DocFooter\fP がもたらす出力は次のようになります。 -.LP -.RS 3 - +\f3javap DocFooter\fP ⤿餹ϤϼΤ褦ˤʤޤ .LP .nf \f3 @@ -126,14 +111,10 @@ public class DocFooter extends java.applet.Applet { .fl \fP .fi -.RE .LP .LP -\f3javap \-c DocFooter\fP がもたらす出力は次のようになります。 -.LP -.RS 3 - +\f3javap \-c DocFooter\fP ⤿餹ϤϼΤ褦ˤʤޤ .LP .nf \f3 @@ -244,41 +225,35 @@ Method void paint(java.awt.Graphics) .fl \fP .fi -.RE .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 -\-help -\f3javap\fP のヘルプメッセージを出力します。 +\-help \-\-help \-? +\f3javap\fP ΥإץåϤޤ .TP 3 -\-l -行番号と局所変数テーブルを表示します。 +\-version +Сɽޤ .TP 3 -\-b -JDK 1.1 の \f3javap\fP との下位互換性を保証します。 +\-l +ֹȶɽѿơ֥ɽޤ .TP 3 \-public -public クラスおよびメンバーだけを表示します。 +public 饹ӥСɽޤ .TP 3 \-protected -protected および public のクラスとメンバーだけを表示します。 +protected public Υ饹ȥСɽޤ .TP 3 \-package -package、protected、および public のクラスとメンバーだけを表示します。これはデフォルトの設定です。 +packageprotected public Υ饹ȥСɽޤϥǥեȤǤ .TP 3 -\-private -すべてのクラスとメンバーを表示します。 +\-private \-p +٤ƤΥ饹ȥСɽޤ .TP 3 \-Jflag -ランタイムシステムに直接 \f2flag\fP を渡します。使用例を次に示します。 -.RS 3 - -.LP +󥿥ॷƥľ \f2flag\fP Ϥޤ򼡤˼ޤ .nf \f3 .fl @@ -288,23 +263,28 @@ javap \-J\-Djava.security.manager \-J\-Djava.security.policy=MyPolicy MyClassNam .fl \fP .fi -.RE .TP 3 \-s -内部の型シグニチャーを出力します。 +η˥㡼Ϥޤ +.TP 3 +\-sysinfo +Υ饹Υƥ (ѥաMD5 ϥå) ɽޤ +.TP 3 +\-constants +static final ɽޤ .TP 3 \-c -クラスの各メソッドのために逆アセンブルされるコード、すなわち Java バイトコードから成る命令を表示します。これらは +饹γƥ᥽åɤΤ˵ե֥뤵륳ɡʤ Java Хȥɤ̿ɽޤ .na -\f2「Java Virtual Machine Specification」\fP @ +\f2Java Virtual Machine Specification\fP @ .fi -http://java.sun.com/docs/books/vmspec/にドキュメント化されています。 +http://java.sun.com/docs/books/vmspec/˥ɥȲƤޤ .TP 3 \-verbose -メソッドのスタックサイズ、および \f2locals\fP と \f2args\fP の数を出力します。 +᥽åɤΥå \f2locals\fP \f2args\fP οϤޤ .TP 3 \-classpath path -\f3javap\fP がクラスを探すために使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 +\f3javap\fP 饹õ˻ѤѥꤷޤǥեȤޤ CLASSPATH Ķѿ񤭤ޤǥ쥯ȥϥʬ䤷ޤäơ\f2path\fP ΰ̷ϼΤ褦ˤʤޤ .nf \f3 .fl @@ -312,7 +292,7 @@ http://java.sun.com/docs/books/vmspec/にドキュメント化されています .fl \fP .fi -例を示します。 +򼨤ޤ .nf \f3 .fl @@ -322,24 +302,19 @@ http://java.sun.com/docs/books/vmspec/にドキュメント化されています .fi .TP 3 \-bootclasspath path -ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは \f2jre/lib/rt.jar\fP および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。 +֡ȥȥåץ饹ɤѥꤷޤ֡ȥȥåץ饹ϡǥեȤǤ \f2jre/lib/rt.jar\fP ¾ΤĤ JAR ե ˤ롢 Java 2 ץåȥե륯饹Ǥ .TP 3 \-extdirs dirs -インストールされた拡張機能を検索する場所をオーバーライドします。The default location for extensions is the value of \f2java.ext.dirs\fP. +󥹥ȡ뤵줿ĥǽ򸡺򥪡С饤ɤޤĥǽϡǥեȤǤ \f2java.ext.dirs\fP ˤޤ .RE .LP -.SH "環境変数" -.LP - +.SH "Ķѿ" .LP .RS 3 .TP 3 CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。 次に例を示します。 -.RS 3 - -.LP +桼饹ؤΥѥ򥷥ƥ˻ꤷޤǥ쥯ȥϥʬ䤷ޤ򼨤ޤ .nf \f3 .fl @@ -348,14 +323,11 @@ CLASSPATH \fP .fi .RE -.RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP -javac(1)、 java(1)、jdb(1)、javah(1)、javadoc(1) +javac(1)java(1)jdb(1)javah(1)javadoc(1) .LP diff --git a/src/solaris/doc/sun/man/man1/ja/javaws.1 b/src/solaris/doc/sun/man/man1/ja/javaws.1 index 72e426f4461b46451b9b75ae0566880cc42871fe..03d3349c7a0052ae798dbfd62ba2cce2eca8fa0c 100644 --- a/src/solaris/doc/sun/man/man1/ja/javaws.1 +++ b/src/solaris/doc/sun/man/man1/ja/javaws.1 @@ -19,30 +19,18 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH javaws 1 "02 Jun 2010" +.TH javaws 1 "14 Apr 2011" .LP -.SH "名前" -\f2javaws\fP コマンド行 +.SH "̾" +\f2javaws\fP ޥɹ .LP +.SH "̾" .LP -\ .LP -.SS -NAME +\f2javaws\fP \- Java Web Start ưޥ .LP -.RS 3 - -.LP -.LP -\f2javaws\fP \- Java Web Start 起動コマンド -.LP -.RE -.SS -形式 -.LP -.RS 3 - +.SH "" .LP .LP \f2javaws [run\-options] <jnlp>\fP @@ -50,309 +38,185 @@ NAME .LP \f2javaws [control\-options]\fP .LP -.RE -.SS -パラメータ -.LP -.RS 3 - +.SH "ѥ᡼" .LP .LP \f2[run\-options]\fP .LP -.RS 3 - .LP +ޥɹԼ¹ԥץ󡣼¹ԥץǤդνǻǤޤƼ索ץˤĤƤϡ ּ¹ԥץפ򻲾ȤƤ .LP -コマンド行実行オプション。 実行オプションは任意の順序で指定できます。各種オプションについては、下の 「実行オプション」を参照してください。 -.LP -.RE .LP \f2<jnlp>\fP -.LP -.RS 3 - .LP .LP -JNLP (Java Network Launching Protocol) ファイルのパスまたは URL (Uniform Resource Locator) のどちらかです。 +JNLP (Java Network Launching Protocol) եΥѥޤ URL (Uniform Resource Locator) Τɤ餫Ǥ .LP -.RE .LP \f2[control\-options]\fP .LP -.RS 3 - -.LP -.LP -コマンド行制御オプション。 制御オプションは任意の順序で指定できます。各種オプションについては、下の 「制御オプション」を参照してください。 .LP -.RE -.RE -.SS -説明 -.LP -.RS 3 - +ޥɹ楪ץ楪ץǤդνǻǤޤƼ索ץˤĤƤϡ 楪ץפ򻲾ȤƤ .LP +.SH "" .LP -\f2javaws\fP コマンドは、JNLP (Java Network Launching Protocol) のリファレンス実装である Java Web Start を起動します。Java Web Start は、ネットワーク上で動作する Java アプリケーションまたはアプレットを起動します。 .LP +\f2javaws\fP ޥɤϡJNLP (Java Network Launching Protocol) Υե󥹼Ǥ Java Web Start ưޤJava Web Start ϡͥåȥư Java ץꥱޤϥץåȤưޤ .LP -JNLP ファイルを指定すると、\f2javaws\fP は JNLP ファイルに指定された Java アプリケーションまたはアプレットを起動します。 .LP +JNLP ե뤬ꤵ줿硢 \f2javaws\fP ϡ JNLP եǻꤵ줿 Java ץꥱ/ץåȤưޤ .LP -\f2javaws\fP 起動ツールには、現在のリリースでサポートされている 1 組のオプションがあります。ただし、これらのオプションは将来のリリースでは削除される可能性があります。 .LP -.RE -.SS -実行オプション +\f2javaws\fP ưġˤϡߤΥ꡼ǥݡȤƤ 1 ȤΥץ󤬤ޤΥץϾΥ꡼ǤϺǽޤ .LP -.RS 3 - +.SH "¹ԥץ" .LP .LP \f2\-offline\fP -.LP -.RS 3 - .LP .LP -Java Web Start をオフラインモードで実行します。 +Java Web Start 򥪥ե饤⡼ɤǼ¹Ԥޤ .LP -.RE .LP \f2\-Xnosplash\fP -.LP -.RS 3 - .LP .LP -最初のスプラッシュ画面の表示を無効にします。 +ǽΥץå̤ɽ̵ˤޤ .LP -.RE .LP \f2\-open <arguments>\fP -.LP -.RS 3 - .LP .LP -このオプションを指定すると、JNLP ファイル内の引数が \f2\-open <arguments>\fP に置き換わります。 +ΥץꤹȡJNLP եΰ \f2\-open <arguments>\fP ֤ޤ .LP -.RE .LP \f2\-print <arguments>\fP -.LP -.RS 3 - .LP .LP -このオプションを指定すると、JNLP ファイル内の引数が \f2\-print <arguments>\fP に置き換わります。 +ΥץꤹȡJNLP եΰ \f2\-print <arguments>\fP ֤ޤ .LP -.RE .LP \f2\-online\fP -.LP -.RS 3 - .LP .LP -オンラインモードで実行します (デフォルトの動作)。 +饤⡼ɤǼ¹Ԥޤ (ǥեȤư) .LP -.RE .LP \f2\-wait\fP -.LP -.RS 3 - .LP .LP -このオプションを指定すると、アプリケーションが終了するまで \f2javaws\fP プロセスは終了しません。 +Υץꤷ硢 \f2javaws\fP ץϡץꥱ󤬽λޤǽλޤWindows ץåȥեǤϡΥץȤ˵ǽޤ .LP -.RE .LP \f2\-verbose\fP -.LP -.RS 3 - .LP .LP -追加の出力を表示します。 +ɲäνϤɽޤ .LP -.RE .LP \f2\-J<option>\fP -.LP -.RS 3 - .LP .LP -vm にオプションを補います。 +vm ˥ץ䤤ޤ .LP -.RE .LP \f2\-system\fP .LP -.RS 3 - .LP +ץꥱ򥷥ƥ७å夫Τ߼¹Ԥޤ .LP -アプリケーションをシステムキャッシュからのみ実行します。 +.SH "楪ץ" .LP -.RE -.RE -.SS -制御オプション .LP -.RS 3 - +\f2\-viewer\fP .LP .LP -\f2\-viewer\fP +Java ȥѥͥǥåӥ塼ɽޤ .LP -.RS 3 - .LP +\f2\-clearcache\fP .LP -Java コントロールパネルでキャッシュビューアを表示します。 .LP -.RE +󥹥ȡ뤵Ƥʤ٤ƤΥץꥱ򥭥å夫ޤ .LP -\f2\-userConfig <property name>\fP .LP -.RS 3 - +\f2\-userConfig <property name>\fP .LP .LP -指定された配備プロパティーをクリアします。 +ꤵ줿ץѥƥ򥯥ꥢޤ .LP -.RE .LP \f2\-userConfig <property name> <property value>\fP .LP -.RS 3 - .LP +ꤵ줿ץѥƥꤵ줿ͤꤷޤ .LP -指定された配備プロパティーを指定された値に設定します。 -.LP -.RE .LP \f2\-uninstall\fP -.LP -.RS 3 - .LP .LP -キャッシュからすべてのアプリケーションを削除します。 +å夫餹٤ƤΥץꥱޤ .LP -.RE .LP \f2\-uninstall <jnlp>\fP -.LP -.RS 3 - .LP .LP -キャッシュからアプリケーションを削除します。 +å夫饢ץꥱޤ .LP -.RE .LP \f2\-import [import\-options] <jnlp>\fP -.LP -.RS 3 - .LP .LP -キャッシュにアプリケーションをインポートします。 +å˥ץꥱ򥤥ݡȤޤ .LP -.RE -\f3インポートオプション\fP +.SH "ݡȥץ" .LP .LP \f2\-silent\fP -.LP -.RS 3 - .LP .LP -サイレントモードでインポートします (UI は表示されません)。 +ȥ⡼ɤǥݡȤޤ (UI ɽޤ) .LP -.RE .LP \f2\-system\fP -.LP -.RS 3 - .LP .LP -システムキャッシュにアプリケーションをインポートします。 +ƥ७å˥ץꥱ򥤥ݡȤޤ .LP -.RE .LP \f2\-codebase <url>\fP -.LP -.RS 3 - .LP .LP -任意の codebase からリソースを取得します。 +Ǥդ codebase ꥽ޤ .LP -.RE .LP \f2\-shortcut\fP -.LP -.RS 3 - .LP .LP -ユーザー許容プロンプトのようにショートカットをインストールします。このオプションは、\f2\-silent\fP オプションと一緒に使用しないと効果がありません。 +桼ƥץץȤΤ褦˥硼ȥåȤ򥤥󥹥ȡ뤷ޤΥץϡ \f2\-silent\fP ץѤʤȸ̤ޤ .LP -.RE .LP \f2\-association\fP .LP -.RS 3 - .LP +桼ƥץץȤΤ褦˴Ϣդ򥤥󥹥ȡ뤷ޤΥץϡ \f2\-silent\fP ץѤʤȸ̤ޤ .LP -ユーザー許容プロンプトのように関連付けをインストールします。このオプションは、\f2\-silent\fP オプションと一緒に使用しないと効果がありません。 +.SH "ե" .LP -.RE -.RE -.SS -ファイル .LP -.RS 3 - -.LP -.LP -ユーザーキャッシュ、システムキャッシュ、および deployment.properties ファイルについては、 +桼å塢ƥ७å塢 deployment.properties եˤĤƤϡ .na -\f2システムレベルおよびユーザーレベルのプロパティー\fP @ +\f2ƥ٥뤪ӥ桼٥Υץѥƥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/properties.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/properties.html򻲾ȤƤ .LP -.RE -.SS -詳細情報 -.LP -.RS 3 - +.SH "ܺپ" .LP .LP -Java Web Start の詳細は、 +Java Web Start ξܺ٤ϡ .na -\f2「Java Web Start」\fP @ +\f2Java Web Start\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/javaws/index.htmlを参照してください。 -.LP -.RS 3 - -.LP -.LP -\ +http://java.sun.com/javase/6/docs/technotes/guides/javaws/index.html򻲾ȤƤ .LP -.RE -.RE diff --git a/src/solaris/doc/sun/man/man1/ja/jconsole.1 b/src/solaris/doc/sun/man/man1/ja/jconsole.1 index 2ce3990317c4e2cbaf8322080e646ba9fd7ab473..309fc14f41dedc39ecb6b36afc9f36a62841bdee 100644 --- a/src/solaris/doc/sun/man/man1/ja/jconsole.1 +++ b/src/solaris/doc/sun/man/man1/ja/jconsole.1 @@ -19,34 +19,32 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jconsole 1 "02 Jun 2010" +.TH jconsole 1 "14 Apr 2011" .LP -.SH "名前" -jconsole \- Java 監視および管理コンソール +.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 - +.SH "" .LP .nf \f3 @@ -58,63 +56,60 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 options -オプションを使用する場合、コマンド名の直後に記述してください。 -.br +ץѤ硢ޥ̾ľ˵ҤƤ .TP 3 connection = pid | host:port | jmxUrl .RS 3 -\f2pid\fP\ \ \ ローカルの Java VM のプロセス ID。Java VM は、jconsole を実行しているユーザー ID と同じユーザー ID を使用して実行する必要があります。詳細については、 +.TP 2 +o +\f2pid\fP Java VM Υץ IDJava VM ϡjconsole ¹ԤƤ桼 ID Ʊ桼 ID ѤƼ¹Ԥɬפޤܺ٤ˤĤƤϡ .na -\f2「JMX 監視および管理」\fP @ +\f2JMX ƻ뤪Ӵ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/management/agent.htmlを参照してください。 -.br -\f2host\fP:\f2port\fP\ \ Java VM が実行しているホストシステムの名前と、JVM を起動したときにシステムプロパティー \f2com.sun.management.jmxremote.port\fP で指定したポート番号。詳細については、 +http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html򻲾ȤƤ +.TP 2 +o +\f2host\fP:\f2port\fP Java VM ¹ԤƤۥȥƥ̾ȡJVM ưȤ˥ƥץѥƥ \f2com.sun.management.jmxremote.port\fP ǻꤷݡֹ档ܺ٤ˤĤƤϡ .na -\f2「JMX 監視および管理」\fP @ +\f2JMX ƻ뤪Ӵ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/management/agent.htmlを参照してください。 -.br -\f2jmxUrl\fP 接続先の JMX エージェントのアドレス。 これについては、 +http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html򻲾ȤƤ +.TP 2 +o +\f2jmxUrl\fP ³ JMX ȤΥɥ쥹ˤĤƤϡ .na \f2JMXServiceURL\fP @ .fi -http://java.sun.com/javase/6/docs/api/javax/management/remote/JMXServiceURL.html を参照してください。 +http://java.sun.com/javase/6/docs/api/javax/management/remote/JMXServiceURL.html 򻲾ȤƤ .RE .RE .LP -.SH " 説明" -.LP - +.SH " " .LP .LP -\f3jconsole\fP コマンドは、ローカルマシンまたはリモートマシン上の Java アプリケーションと仮想マシンの監視と管理を行うグラフィカルコンソールツールを起動します。 +\f3jconsole\fP ޥɤϡޥޤϥ⡼ȥޥ Java ץꥱȲۥޥδƻȴԤե륳󥽡ġưޤ .LP .LP -Windows 上では、\f3jconsole\fP はコンソールウィンドウと関連付けられていません。ただし、なんらかの理由で \f3jconsole\fP コマンドが失敗すると、エラー情報を示すダイアログボックスが表示されます。 +Windows Ǥϡ\f3jconsole\fP ϥ󥽡륦ɥȴϢդƤޤ󡣤ʤ餫ͳ \f3jconsole\fP ޥɤԤȡ顼򼨤ܥåɽޤ .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-interval=n -更新間隔を \f2n\fP 秒に設定します (デフォルトは 4 秒)。 +ֳ֤ \f2n\fP äꤷޤ (ǥեȤ 4 ) .TP 3 -\-notile\ -最初にウィンドウをタイリングしません (複数の接続のため)。 +\-notile +ǽ˥ɥ򥿥󥰤ޤ (ʣ³Τ) .TP 3 -\-pluginpath\ plugins -JConsole プラグインの検索先となるディレクトリまたは JAR ファイルのリストを指定します。\f2plugins\fP パスには、次の名前のプロバイダ構成ファイルを含めてください。 +\-pluginpath plugins +JConsole ץ饰θȤʤǥ쥯ȥޤ JAR եΥꥹȤꤷޤ\f2plugins\fP ѥˤϡ̾ΥץХեޤƤ .br .nf \f3 @@ -124,36 +119,36 @@ JConsole プラグインの検索先となるディレクトリまたは JAR フ \fP .fi .LP -これには、 +ˤϡ .na \f2com.sun.tools.jconsole.JConsolePlugin\fP @ .fi -http://java.sun.com/javase/6/docs/jdk/api/jconsole/spec/com/sun/tools/jconsole/JConsolePlugin.html クラスを実装するクラスの完全修飾クラス名を指定する行が、プラグインごとに 1 行ずつ含まれています。 +http://java.sun.com/javase/6/docs/jdk/api/jconsole/spec/com/sun/tools/jconsole/JConsolePlugin.html 饹륯饹δ饹̾ꤹԤץ饰󤴤Ȥ 1 ԤĴޤޤƤޤ .TP 3 -\-version\ -バージョン情報を出力して終了します。 +\-version +СϤƽλޤ .TP 3 -\-help\ -ヘルプメッセージを出力して終了します。 +\-help +إץåϤƽλޤ .TP 3 -\-J<flag>\ -jconsole が実行されている Java 仮想マシンに <flag> を渡します。 +\-J<flag> +jconsole ¹ԤƤ Java ۥޥ <flag> Ϥޤ .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o .na -\f2jconsole の使用\fP @ +\f2JConsole λ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html .TP 2 o .na -\f2「Java プラットフォームの監視および管理」\fP @ +\f2Java ץåȥեδƻ뤪Ӵ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/management/index.html .RE diff --git a/src/solaris/doc/sun/man/man1/ja/jdb.1 b/src/solaris/doc/sun/man/man1/ja/jdb.1 index af81524bb8a5ab5c409863ed80a7ac28983c8dd0..7c18936974856d3202b67ddc12eb9604f6f96645 100644 --- a/src/solaris/doc/sun/man/man1/ja/jdb.1 +++ b/src/solaris/doc/sun/man/man1/ja/jdb.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jdb 1 "02 Jun 2010" +.TH jdb 1 "14 Apr 2011" .LP -.SH "名前" -jdb \- Java デバッガ -.LP -.RS 3 - +.SH "̾" +jdb \- Java ǥХå .LP .LP -\f3jdb\fP は、Java 言語プログラムのバグを見つけて修正するために使用するツールです。 -.LP -.RE -.SH "形式" +\f3jdb\fP ϡJava ץΥХ򸫤Ĥƽ뤿˻ѤġǤ .LP - +.SH "" .LP .nf \f3 @@ -43,43 +37,34 @@ jdb \- Java デバッガ .fl .fi -.LP -.RS 3 - .LP .RS 3 .TP 3 options -次に示すコマンド行オプション +˼ޥɹԥץ .TP 3 class -デバッグを開始するクラスの名前 +ǥХå򳫻Ϥ륯饹̾ .TP 3 arguments -\f2class\fP の \f2main()\fP メソッドに渡す引数 +class \f2main()\fP ᥽åɤϤ \f2\fP .RE .LP -.RE -.SH " 説明" -.LP - +.SH " " .LP .LP -Java デバッガ \f3jdb\fP は、Java クラス用の簡単なコマンド行デバッガです。 +Java ǥХå \f3jdb\fP ϡJava 饹ѤδñʥޥɹԥǥХåǤ .na \f2Java Platform Debugger Architecture\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jpda/index.html を視覚的に実行し、ローカルまたはリモートの Java Virtual Machine の検査とデバッグを行うことができます。 +http://java.sun.com/javase/6/docs/technotes/guides/jpda/index.html Ū˼¹Ԥޤϥ⡼Ȥ Java Virtual Machine θȥǥХåԤȤǤޤ .LP .SS -jdb セッションの開始 -.LP -.RS 3 - +jdb åγ .LP .LP -jdb セッションを開始するにはさまざまな方法があります。もっとも頻繁に使われるのは、デバッグするアプリケーションのメインクラスを使用して、\f3jdb\fP から新しい Java 仮想マシン (VM) を起動する方法です。コマンド行で、 \f3java\fP の代わりに \f3jdb\fP コマンドを入力します。たとえば、アプリケーションのメインクラスが MyClass の場合は、JDB 環境でデバッグするときに次のコマンドを使用します。 +jdb å򳫻ϤˤϤޤޤˡޤäȤˤ˻ȤΤϡǥХå륢ץꥱΥᥤ󥯥饹Ѥơ\f3jdb\fP 鿷 Java ۥޥ (VM) ưˡǤޥɹԤǡ\f3java\fP \f3jdb\fP ޥɤϤޤȤСץꥱΥᥤ󥯥饹 MyClass ξϡJDB ĶǥǥХåȤ˼ΥޥɤѤޤ .LP .nf \f3 @@ -91,10 +76,10 @@ jdb セッションを開始するにはさまざまな方法があります。 .LP .LP -この方法で起動すると、\f3jdb\fP は、指定されたパラメータを使って 2 つ目の Java VM を呼び出します。 次に、指定されたクラスをロードして、クラスの最初の命令を実行する前に VM を停止させます。 +ˡǵưȡ\f3jdb\fP ϡꤵ줿ѥ᡼Ȥä 2 ܤ Java VM ƤӽФޤˡꤵ줿饹ɤơ饹κǽ̿¹Ԥ VM ߤޤ .LP .LP -\f3jdb\fP のもう 1 つの使用方法は、すでに起動している Java VM に jdb を接続することです。jdb が接続する VM を、その実行中に起動するための構文を次に示します。これは、インプロセスデバッグ用ライブラリをロードし、接続の種類を指定します。 +\f3jdb\fP Τ⤦ 1 ĤλˡϡǤ˵ưƤ Java VM jdb ³뤳ȤǤjdb ³ VM 򡢤μ¹˵ư뤿ιʸ򼡤˼ޤϡץǥХåѥ饤֥ɤ³μꤷޤ .LP .nf \f3 @@ -106,7 +91,7 @@ jdb セッションを開始するにはさまざまな方法があります。 .LP .LP -たとえば、次のコマンドは、MyClass アプリケーションを実行して、\f3jdb\fP があとでそのアプリケーションに接続できるようにします。 +ȤСΥޥɤϡMyClass ץꥱ¹Ԥơ\f3jdb\fP ȤǤΥץꥱ³Ǥ褦ˤޤ .LP .nf \f3 @@ -118,7 +103,7 @@ jdb セッションを開始するにはさまざまな方法があります。 .LP .LP -次のコマンドを使用して、\f3jdb\fP を VM に接続できます。 +ΥޥɤѤơ\f3jdb\fP VM ³Ǥޤ .LP .nf \f3 @@ -130,45 +115,42 @@ jdb セッションを開始するにはさまざまな方法があります。 .LP .LP -この場合、\f3jdb\fP は新しい VM を起動する代わりに既存の VM に接続されるため、\f3jdb\fP コマンド行には「MyClass」は指定しません。 +ξ硢\f3jdb\fP Ͽ VM ư˴¸ VM ³뤿ᡢ\f3jdb\fP ޥɹԤˤϡMyClassפϻꤷޤ .LP .LP -デバッガを VM に接続するにはほかにもさまざまな方法があり、すべて \f3jdb\fP でサポートされています。接続オプションについては、Java Platform Debugger Architecture の +ǥХå VM ³ˤϤۤˤ⤵ޤޤˡꡢ٤ \f3jdb\fP ǥݡȤƤޤ³ץˤĤƤϡJava Platform Debugger Architecture .na -\f2ドキュメント\fP @ +\f2ɥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.htmlを参照してください。\f3jdb\fP で使用するために J2SE 1.4.2 以前の VM を起動する方法については、 +http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.html򻲾ȤƤ\f3jdb\fP ǻѤ뤿 J2SE 1.4.2 VM ưˡˤĤƤϡ .na -\f21.4.2 のドキュメント\fP @ +\f21.4.2 Υɥ\fP @ .fi -http://java.sun.com/j2se/1.4.2/docs/guide/jpda/conninv.htmlを参照してください。 +http://java.sun.com/j2se/1.4.2/docs/guide/jpda/conninv.html򻲾ȤƤ .LP .SS -基本 jdb コマンド + jdb ޥ .LP .LP -基本的な \f3jdb\fP コマンドの一覧を示します。Java デバッガがサポートするコマンドはこれ以外にもあり、それらは \f3jdb\fP の \f2help\fP コマンドを使用して表示できます。 -.LP -.RS 3 - +Ū \f3jdb\fP ޥɤΰ򼨤ޤJava ǥХåݡȤ륳ޥɤϤʳˤ⤢ꡢ \f3jdb\fP \f2help\fP ޥɤѤɽǤޤ .LP .RS 3 .TP 3 -help または ? -もっとも重要な \f3jdb\fP コマンド \f2help\fP は、認識されたコマンドのリストに簡潔な説明を付けて表示します。 +help ޤ ? +äȤפ \f3jdb\fP ޥ \f2help\fP ϡǧ줿ޥɤΥꥹȤ˴ʷդɽޤ .TP 3 run -\f3jdb\fP を起動して必要なブレークポイントを設定したあとに、このコマンドを使用して、デバッグするアプリケーションの実行を開始できます。このコマンドは、既存の VM に接続している場合とは異なり、デバッグするアプリケーションが \f3jdb\fP から起動したときにだけ使用できます。 +\f3jdb\fP ưɬפʥ֥졼ݥȤꤷȤˡΥޥɤѤơǥХå륢ץꥱμ¹Ԥ򳫻ϤǤޤΥޥɤϡ¸ VM ³ƤȤϰۤʤꡢǥХå륢ץꥱ \f3jdb\fP 鵯ưȤˤѤǤޤ .TP 3 cont -ブレークポイント、例外、またはステップ実行のあとで、デバッグするアプリケーションの実行を継続します。 +֥졼ݥȡ㳰ޤϥƥå׼¹ԤΤȤǡǥХå륢ץꥱμ¹Ԥ³ޤ .TP 3 print -Java オブジェクトおよびプリミティブ値を表示します。プリミティブ型の変数またはフィールドの場合には、実際の値が出力されます。オブジェクトの場合には、短い説明が出力されます。オブジェクトについては、以降の \f2dump\fP コマンドの説明を参照してください。 +Java ֥ȤӥץߥƥͤɽޤץߥƥַѿޤϥեɤξˤϡºݤͤϤޤ֥ȤξˤϡûϤޤ֥ȤˤĤƤϡʹߤ \f2dump\fP ޥɤ򻲾ȤƤ .LP -\f2注:局所変数を表示するには、その変数を含むクラスが \fP\f2javac(1)\fP\f2 \fP\f2\-g\fP オプションでコンパイルされていなければなりません。 +\f2: ɽѿɽˤϡѿޤ९饹 \fP\f2javac(1)\fP\f2 \fP\f2\-g\fP ץǥѥ뤵Ƥɬפޤ .LP -\f2print\fP では、メソッドの呼び出しを含む多数の簡単な Java 式がサポートされています。 次に例を示します。 +\f2print\fP Ǥϡ᥽åɤθƤӽФޤ¿δñ Java ݡȤƤޤ򼨤ޤ .RS 3 .TP 2 o @@ -178,25 +160,22 @@ o \f2print myObj.myInstanceField\fP .TP 2 o -\f2print i + j + k\fP (i、j、および k はプリミティブであり、フィールドまたは局所変数のいずれか) +\f2print i + j + k\fP (ij k ϥץߥƥ֤Ǥꡢեɤޤ϶ɽѿΤ줫) .TP 2 o -\f2print myObj.myMethod()\fP (myMethod が null 以外を返す場合) +\f2print myObj.myMethod()\fP (myMethod null ʳ֤) .TP 2 o \f2print new java.lang.String("Hello").length()\fP .RE .TP 3 dump -プリミティブ値の場合には、このコマンドは \f2print\fP と同じです。オブジェクトの場合には、オブジェクト内に定義されている各フィールドの現在の値が出力されます。static フィールドと instance フィールドが出力されます。 +ץߥƥͤξˤϡΥޥɤ \f2print\fP ƱǤ֥Ȥξˤϡ֥ƤƥեɤθߤͤϤޤstatic եɤ instance եɤϤޤ .LP -\f2dump\fP コマンドでは、\f2print\fP コマンドと同じ式がサポートされます。 +\f2dump\fP ޥɤǤϡ\f2print\fP ޥɤƱݡȤޤ .TP 3 threads -現在実行中のスレッドを一覧表示します。スレッドごとに、名前と現在の状態、およびほかのコマンドに使用できるインデックスが出力されます。 次に例を示します。 -.RS 3 - -.LP +߼¹ΥåɤɽޤåɤȤˡ̾ȸߤξ֡ӤۤΥޥɤ˻ѤǤ륤ǥåϤޤ򼨤ޤ .nf \f3 .fl @@ -204,163 +183,144 @@ threads .fl \fP .fi -.RE -この例では、スレッドインデックスは 4 であり、スレッドは java.lang.Thread のインスタンスです。 スレッドの名前は「main」であり、現在実行中です。 +Ǥϡåɥǥå 4 Ǥꡢåɤ java.lang.Thread Υ󥹥󥹤Ǥåɤ̾ϡmainפǤꡢ߼¹Ǥ .TP 3 thread -現在のスレッドにするスレッドを選択します。多くの \f3jdb\fP コマンドは、現在のスレッドの設定に基づいて実行されます。スレッドは、\f2threads\fP コマンドで説明したスレッドインデックスとともに指定します。 +ߤΥåɤˤ륹åɤ򤷤ޤ¿ \f3jdb\fP ޥɤϡߤΥåɤ˴ŤƼ¹Ԥޤåɤϡ\f2threads\fP ޥɤåɥǥåȤȤ˻ꤷޤ .TP 3 where -引数を指定しないで \f2where\fP を実行すると、現在のスレッドのスタックがダンプされます。 \f2where all\fP コマンドは、現在のスレッドグループにあるスレッドのスタックを、すべてダンプします。 \f2where\fP \f2threadindex\fP は、指定されたスレッドのスタックをダンプします。 +\f2ꤷʤ\fP where ¹ԤȡߤΥåɤΥåפޤ \f2where all\fP ޥɤϡߤΥåɥ롼פˤ륹åɤΥå򤹤٤ƥפޤ \f2where\fP \f2threadindex\fP ϡꤵ줿åɤΥåפޤ .LP -現在のスレッドが (ブレークポイントか \f2suspend\fP コマンドによって) 中断している場合は、局所変数とフィールドは \f2print\fP コマンドと \f2dump\fP コマンドで表示できます。\f2up\fP コマンドと \f2down\fP コマンドで、どのスタックフレームをカレントにするかを選ぶことができます。 +ߤΥåɤ (֥졼ݥȤ \f2suspend\fP ޥɤˤä) ǤƤϡɽѿȥեɤ \f2print\fP ޥɤ \f2dump\fP ޥɤɽǤޤ\f2up\fP ޥɤ \f2down\fP ޥɤǡɤΥåե졼򥫥Ȥˤ뤫֤ȤǤޤ .RE .LP -.RE .SS -ブレークポイント -.LP -.RS 3 - +֥졼ݥ .LP .LP -ブレークポイントは、行番号またはメソッドの最初の命令で \f3jdb\fP に設定できます。 次に例を示します。 +֥졼ݥȤϡֹޤϥ᥽åɤκǽ̿ \f3jdb\fP Ǥޤ򼨤ޤ .LP .RS 3 .TP 2 o -\f2stop at MyClass:22\fP (MyClass が含まれるソースファイルの 22 行目の最初の命令にブレークポイントを設定) +\f2stop at MyClass:22\fP (MyClass ޤޤ륽ե 22 ܤκǽ̿˥֥졼ݥȤ) .TP 2 o -\f2stop in java.lang.String.length\fP (\f2java.lang.String.length\fP メソッドの最初にブレークポイントを設定) +\f2stop in java.lang.String.length\fP (\f2java.lang.String.length\fP ᥽åɤκǽ˥֥졼ݥȤ) .TP 2 o -\f2stop in MyClass.<init>\fP (<init> は MyClass コンストラクタを識別) +\f2stop in MyClass.<init>\fP (<init> MyClass 󥹥ȥ饯) .TP 2 o -\f2stop in MyClass.<clinit>\fP (<clinit> は MyClass の静的初期化コードを識別) +\f2stop in MyClass.<clinit>\fP (<clinit> MyClass Ūɤ) .RE .LP .LP -メソッドがオーバーロードされている場合には、メソッドの引数の型も指定して、ブレークポイントに対して適切なメソッドが選択されるようにしなければなりません。たとえば、「\f2MyClass.myMethod(int,java.lang.String)\fP」または「\f2MyClass.myMethod()\fP」と指定します。 +᥽åɤСɤƤˤϡ᥽åɤΰηꤷơ֥졼ݥȤФŬڤʥ᥽åɤ򤵤褦ˤʤФʤޤ󡣤ȤС\f2MyClass.myMethod(int,java.lang.String)\fPפޤϡ\f2MyClass.myMethod()\fPפȻꤷޤ .LP .LP -\f2clear\fP コマンドは、「\f2clear\ MyClass:45\fP」のような構文を使用してブレークポイントを削除します。\f2clear\fP を使用するか、引数を指定しないでコマンドを使用すると、現在設定されているすべてのブレークポイントが表示されます。\f2cont\fP コマンドは実行を継続します。 +\f2clear\fP ޥɤϡ\f2clear\ MyClass:45\fPפΤ褦ʹʸѤƥ֥졼ݥȤޤ\f2clear\fP Ѥ뤫ꤷʤǥޥɤѤȡꤵƤ뤹٤ƤΥ֥졼ݥȤɽޤ\f2cont\fP ޥɤϼ¹Ԥ³ޤ .LP -.RE .SS -ステップ実行 -.LP -.RS 3 - +ƥå׼¹ .LP .LP -\f2step\fP コマンドは、現在のスタックフレームまたは呼び出されたメソッド内で、次の行を実行します。\f2next\fP コマンドは、現在のスタックフレームの次の行を実行します。 +\f2step\fP ޥɤϡߤΥåե졼ޤϸƤӽФ줿᥽åǡιԤ¹Ԥޤ\f2next\fP ޥɤϡߤΥåե졼μιԤ¹Ԥޤ .LP -.RE .SS -例外 -.LP -.RS 3 - -.LP +㳰 .LP -スローしているスレッドの呼び出しスタック上のどこにも catch 文がない場合に例外が発生すると、VM は通常、例外トレースを出力して終了します。ただし、\f3jdb\fP 環境で実行している場合は、例外が発生すると \f3jdb\fP に制御が戻ります。次に、\f3jdb\fP を使用して例外の原因を診断します。 .LP +Ƥ륹åɤθƤӽФåΤɤˤ catch ʸʤ㳰ȯȡVM ̾㳰ȥ졼Ϥƽλޤ\f3jdb\fP ĶǼ¹ԤƤϡ㳰ȯ \f3jdb\fP 椬ޤˡ\f3jdb\fP Ѥ㳰θǤޤ .LP -たとえば、「\f2catch java.io.FileNotFoundException\fP」または「\f2catch mypackage.BigTroubleException\fP」のように \f2catch\fP コマンドを使用すると、デバッグされたアプリケーションは、ほかの例外がスローされたときに停止します。例外が特定のクラス (またはサブクラス) のインスタンスの場合は、アプリケーションは例外がスローされた場所で停止します。 .LP +ȤС\f2catch java.io.FileNotFoundException\fPפޤϡ\f2catch mypackage.BigTroubleException\fPפΤ褦 \f2catch\fP ޥɤѤȡǥХå줿ץꥱϡۤ㳰줿Ȥߤޤ㳰Υ饹 (ޤϥ֥饹) Υ󥹥󥹤ξϡץꥱ㳰줿ߤޤ .LP -\f2ignore\fP コマンドを使うと、以前の \f2catch\fP コマンドの効果が無効になります。 .LP +\f2ignore\fP ޥɤȤȡ \f2catch\fP ޥɤθ̵̤ˤʤޤ .LP -\f2注:\fP\f2ignore\fP コマンドでは、デバッグされる VM は例外を無視せず、デバッガだけが例外を無視します。 .LP -.RE -.RE -.SH "コマンド行オプション" +\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 コマンドと同じ数のオプションを受け入れます。 +ޥɹԤ Java ץꥱưġ \f3jdb\fP Ѥ硢\f3jdb\fP ϡ\f2\-D\fP\f2\-classpath\fP\f2\-X<option>\fP ʤɡjava ޥɤƱΥץޤ .LP .LP -\f3jdb\fP は、そのほかに次のオプションを受け入れます。 +\f3jdb\fP ϡΤۤ˼Υץޤ .LP .RS 3 .TP 3 \-help -ヘルプメッセージを表示します。 +إץåɽޤ .TP 3 \-sourcepath <dir1:dir2:...> -指定されたパスを使用して、ソースファイルを検索します。このオプションが指定されていない場合は、デフォルトパスの「.」が使われます。 +ꤵ줿ѥѤơե򸡺ޤΥץ󤬻ꤵƤʤϡǥեȥѥΡ.פȤޤ .TP 3 \-attach <address> -デフォルトの接続機構を使用して、すでに実行中の VM にデバッガを接続します。 +ǥեȤ³ѤơǤ˼¹ VM ˥ǥХå³ޤ .TP 3 \-listen <address> -実行中の VM が標準のコネクタを使って指定されたアドレスに接続するのを待機します。 +¹ VM ɸΥͥȤäƻꤵ줿ɥ쥹³ΤԵޤ .TP 3 \-listenany -実行中の VM が標準のコネクタを使って利用可能な任意のアドレスに接続するのを待機します。 +¹ VM ɸΥͥȤäѲǽǤդΥɥ쥹³ΤԵޤ .TP 3 \-launch -デバッグするアプリケーションを jdb の起動後ただちに起動します。このオプションによって、\f2run\fP コマンドを使用する必要がなくなります。デバッグするアプリケーションは、起動後、初期アプリケーションクラスがロードされる直前に停止します。その時点で、必要なブレークポイントを設定し、\f2cont\fP を使用して実行を継続できます。 +ǥХå륢ץꥱ jdb εư夿˵ưޤΥץˤäơ\f2run\fP ޥɤѤɬפʤʤޤǥХå륢ץꥱϡư塢ץꥱ󥯥饹ɤľߤޤλǡɬפʥ֥졼ݥȤꤷ\f2cont\fP ѤƼ¹Ԥ³Ǥޤ .TP 3 \-listconnectors -この VM で利用できるコネクタを一覧表示します。 + VM ѤǤ륳ͥɽޤ .TP 3 \-connect <connector\-name>:<name1>=<value1>,... -一覧表示された引数の値と指定のコネクタを使ってターゲット VM に接続します。 +ɽ줿ͤȻΥͥȤäƥå VM ³ޤ .TP 3 \-dbgtrace [flags] -jdb のデバッグ情報を出力します。 +jdb ΥǥХåϤޤ .TP 3 \-tclient -Java HotSpot(tm) VM (クライアント) 内でアプリケーションを実行します。 +Java HotSpot(tm) VM (饤) ǥץꥱ¹Ԥޤ .TP 3 \-tserver -Java HotSpot(tm) VM (サーバー) 内でアプリケーションを実行します。 +Java HotSpot(tm) VM (С) ǥץꥱ¹Ԥޤ .TP 3 \-Joption -jdb の実行に使用される Java 仮想マシンに \f2option\fP を渡します。(アプリケーション Java 仮想マシンに対するオプションは、\f3run\fP コマンドに渡される)。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +jdb μ¹Ԥ˻Ѥ Java ۥޥ \f2option\fP Ϥޤ(ץꥱ Java ۥޥФ륪ץϡ\f3run\fP ޥɤϤ)ȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ .RE .LP .LP -デバッガとデバッグを行う VM を接続するための代替機構に対して、その他のオプションがサポートされています。その他の接続オプションについては、Java Platform Debugger Architecture の +ǥХåȥǥХåԤ VM ³뤿صФơ¾Υץ󤬥ݡȤƤޤ¾³ץˤĤƤϡJava Platform Debugger Architecture .na -\f2ドキュメント\fP @ +\f2ɥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.htmlを参照してください。 +http://java.sun.com/javase/6/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 オプションです。 +ɸॿå VM ץǤ .RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP -javac(1)、java(1)、javah(1)、javap(1)、javadoc(1) +javac(1)java(1)javah(1)javap(1)javadoc(1) .LP diff --git a/src/solaris/doc/sun/man/man1/ja/jhat.1 b/src/solaris/doc/sun/man/man1/ja/jhat.1 index 1871ec8686986a57fec3486d31e7934728d95ccb..57ff839ce47354a57153d52e623baf4a95631d1b 100644 --- a/src/solaris/doc/sun/man/man1/ja/jhat.1 +++ b/src/solaris/doc/sun/man/man1/ja/jhat.1 @@ -19,34 +19,32 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jhat 1 "02 Jun 2010" +.TH jhat 1 "14 Apr 2011" .LP -.SH "名前" -jhat \- Java ヒープ解析ツール +.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 - +.SH "" .LP .nf \f3 @@ -58,88 +56,90 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 options -オプションを使用する場合、コマンド名の直後に記述してください。 -.br +ץѤ硢ޥ̾ľ˵ҤƤ .TP 3 heap\-dump\-file -ブラウズ対象となる Java バイナリヒープダンプファイル。複数のヒープダンプを含むダンプファイルの場合、「foo.hprof#3」のようにファイル名の後に「#<number>」を付加することで、ファイル内の特定のダンプを指定できます。 -.SH "説明" +֥饦оݤȤʤ Java Хʥҡץץե롣ʣΥҡץפޤץեξ硢foo.hprof#3פΤ褦˥ե̾θˡ#<number>פղä뤳ȤǡեΥפǤޤ +.RE + .LP +.SH "" .LP -\f3jhat\fP コマンドは、java ヒープダンプファイルを解析し、Web サーバーを起動します。 jhat を使えば、お好みの Web ブラウザを使ってヒープダンプをブラウズできます。 jhat は、「ある既知のクラス「Foo」のすべてのインスタンスを表示する」といった、事前に設計されたクエリのほか、\f3OQL\fP (\f3O\fPbject \f3Q\fPuery \f3L\fPanguage) もサポートします。OQL のヘルプには、jhat によって表示される OQL ヘルプページからアクセスできます。デフォルトポートを使用する場合、OQL のヘルプは http://localhost:7000/oqlhelp/ で利用可能です。 .LP +\f3jhat\fP ޥɤϡjava ҡץץեϤWeb Сưޤjhat ȤСߤ Web ֥饦Ȥäƥҡץפ֥饦Ǥޤjhat ϡ֤ΤΥ饹FooפΤ٤ƤΥ󥹥󥹤ɽפȤä߷פ줿Τۤ\f3OQL\fP (\f3O\fPbject \f3Q\fPuery \f3L\fPanguage) ⥵ݡȤޤOQL Υإפˤϡjhat ˤäɽ OQL إץڡ饢ǤޤǥեȥݡȤѤ硢OQL Υإפ http://localhost:7000/oqlhelp/ ѲǽǤ .LP -Java のヒープダンプを生成するには、いくつかの方法があります。 +.LP +Java ΥҡץפˤϡĤˡޤ .LP .RS 3 .TP 2 o -jmap(1) の \-dump オプションを使って実行時にヒープダンプを取得する。 +jmap(1) \-dump ץȤäƼ¹Ի˥ҡץפ롣 .TP 2 o -jconsole(1) のオプションを使って +jconsole(1) ΥץȤä .na \f2HotSpotDiagnosticMXBean\fP @ .fi -http://java.sun.com/javase/6/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html 経由で実行時にヒープダンプを取得する。 +http://java.sun.com/javase/6/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html ͳǼ¹Ի˥ҡץפ롣 .TP 2 o -\-XX:+HeapDumpOnOutOfMemoryError VM オプションを指定すると、OutOfMemoryError のスロー時にヒープダンプが生成される。 +\-XX:+HeapDumpOnOutOfMemoryError VM ץꤹȡOutOfMemoryError Υ˥ҡץפ롣 .TP 2 o .na \f2hprof\fP @ .fi -http://java.sun.com/developer/technicalArticles/Programming/HPROF.html を使用する。 +http://java.sun.com/developer/technicalArticles/Programming/HPROF.html Ѥ롣 .RE .LP .LP -\f3注:\fP このツールは\f3試験的なもの\fPであり、将来の JDK のバージョンでは\f3利用できなくなる\fP可能性があります。 +\f3:\fP Υġ\f3Ūʤ\fPǤꡢ JDK ΥСǤ\f3ѤǤʤʤ\fPǽޤ +.LP +.SH "ץ" .LP -.SH "オプション" .RS 3 .TP 3 \-stack false/true -オブジェクト割り当て呼び出しスタックの追跡を無効にします。ヒープダンプ内で割り当てサイト情報が使用できない場合、このフラグを false に設定する必要があります。デフォルトは true です。 +֥ȳƸƤӽФåפ̵ˤޤҡץdzƥȾ󤬻ѤǤʤ硢Υե饰 false ꤹɬפޤǥեȤ true Ǥ .TP 3 \-refs false/true -オブジェクトへの参照の追跡を無効にします。デフォルトは true です。デフォルトでは、ヒープ内のすべてのオブジェクトについて、バックポインタ (指定されたオブジェクトをポイントしているオブジェクト。 参照者または受信参照とも呼ばれる) が計算されます。 +֥ȤؤλȤפ̵ˤޤǥեȤ true ǤǥեȤǤϡҡΤ٤ƤΥ֥ȤˤĤơХåݥ (ꤵ줿֥ȤݥȤƤ륪֥ȡȼԤޤϼȤȤƤФ) ׻ޤ .TP 3 \-port port\-number -jhat の HTTP サーバーのポートを設定します。デフォルトは 7000 です。 +jhat HTTP СΥݡȤꤷޤǥեȤ 7000 Ǥ .TP 3 \-exclude exclude\-file -「到達可能なオブジェクト」のクエリから除外すべきデータメンバーの一覧を含むファイルを指定します。たとえば、このファイルに \f2java.lang.String.value\fP が含まれていた場合、特定のオブジェクト「o」から到達可能なオブジェクトのリストを計算する際に、\f2java.lang.String.value\fP フィールドに関連する参照パスが考慮されなくなります。 +ãǽʥ֥ȡפΥ꤫٤ǡСΰޤեꤷޤȤСΥե \f2java.lang.String.value\fP ޤޤƤ硢Υ֥ȡoפãǽʥ֥ȤΥꥹȤ׻ݤˡ\f2java.lang.String.value\fP եɤ˴Ϣ뻲ȥѥθʤʤޤ .TP 3 \-baseline baseline\-dump\-file -ベースラインとなるヒープダンプを指定します。両方のヒープダンプ内で同じオブジェクト ID を持つオブジェクトは「新規ではない」としてマークされます。その他のオブジェクトは「新規」としてマークされます。これは、異なる 2 つのヒープダンプを比較する際に役立ちます。 +١饤ȤʤҡץפꤷޤξΥҡץƱ֥ ID ĥ֥ȤϡֿǤϤʤפȤƥޡޤ¾Υ֥ȤϡֿפȤƥޡޤϡۤʤ 2 ĤΥҡץפӤݤΩޤ .TP 3 \-debug int -このツールのデバッグレベルを設定します。0 は「デバッグ出力なし」を意味します。より大きな値を設定すると、より冗長なモードになります。 +ΥġΥǥХå٥ꤷޤ0 ϡ֥ǥХåϤʤפ̣ޤ礭ͤꤹȡĹʥ⡼ɤˤʤޤ .TP 3 -\-version\ -バージョン番号を報告したあと、終了します。 +\-version +Сֹ𤷤ȡλޤ .TP 3 -\-h\ -ヘルプメッセージを出力して終了します。 +\-h +إץåϤƽλޤ .TP 3 -\-help\ -ヘルプメッセージを出力して終了します。 +\-help +إץåϤƽλޤ .TP 3 -\-J<flag>\ -jhat が実行されている Java 仮想マシンに <flag> を渡します。たとえば、512M バイトの最大ヒープサイズを使用するには、\-J\-Xmx512m とします。 +\-J<flag> +jhat ¹ԤƤ Java ۥޥ <flag> ϤޤȤС512M ХȤκҡץѤˤϡ\-J\-Xmx512m Ȥޤ .RE .LP -.SH "関連項目" +.SH "Ϣ" +.LP .RS 3 .TP 2 o @@ -150,9 +150,10 @@ jconsole(1) .TP 2 o .na -\f2hprof \- ヒープおよび CPU プロファイリングツール\fP @ +\f2hprof \- ҡפ CPU ץե󥰥ġ\fP @ .fi http://java.sun.com/developer/technicalArticles/Programming/HPROF.html .RE -.RE + +.LP diff --git a/src/solaris/doc/sun/man/man1/ja/jinfo.1 b/src/solaris/doc/sun/man/man1/ja/jinfo.1 index 4a8856260f9665164c9da786991356dd0e567480..14b6814173eaad06045e2a0f82e2963e0e821984 100644 --- a/src/solaris/doc/sun/man/man1/ja/jinfo.1 +++ b/src/solaris/doc/sun/man/man1/ja/jinfo.1 @@ -19,34 +19,32 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jinfo 1 "02 Jun 2010" +.TH jinfo 1 "14 Apr 2011" .LP -.SH "名前" -jinfo \- 構成情報 +.SH "̾" +jinfo \- .LP .RS 3 .TP 2 o -形式 + .TP 2 o -パラメータ +ѥ᡼ .TP 2 o -説明 + .TP 2 o -オプション +ץ .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -60,98 +58,100 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 option -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。 +ƥץϸߤ¾ŪǤץѤ硢ޥ̾ľ˵Ҥޤ +.RE + +.LP .RS 3 .TP 3 pid -出力する構成情報のプロセス ID。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 +Ϥ빽Υץ IDץ Java ץǤɬפޤޥǼ¹ԤƤ Java ץΰˤϡjps(1) Ѥޤ .RE + +.LP .RS 3 .TP 3 executable -コアダンプの作成元の Java 実行可能ファイルです。 +פκ Java ¹ԲǽեǤ .RE + +.LP .RS 3 .TP 3 core -出力する構成情報のコアファイル。 +Ϥ빽Υե롣 .RE + +.LP .RS 3 .TP 3 remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 +⡼ȥǥХåС (jsadebugd(1) 򻲾) Υۥ̾ޤ IP ɥ쥹Ǥ .RE + +.LP .RS 3 .TP 3 server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 -.RE +ʣΥǥХåСƱΥ⡼ȥۥȤǼ¹ԤƤΡץͭ ID Ǥ .RE .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3jinfo\fP は、指定された Java プロセスやコアファイルまたはリモートデバッグサーバーの Java 構成情報を出力します。構成情報は、Java システムプロパティーと Java 仮想マシンのコマンド行フラグから構成されます。指定されたプロセスが 64 ビット VM 上で実行されている場合、\f2\-J\-d64\fP オプションを指定しなければならない場合があります。 次に例を示します。 +\f3jinfo\fP ϡꤵ줿 Java ץ䥳եޤϥ⡼ȥǥХåС Java ϤޤϡJava ƥץѥƥ Java ۥޥΥޥɹԥե饰鹽ޤꤵ줿ץ 64 ӥå VM Ǽ¹ԤƤ硢\f2\-J\-d64\fP ץꤷʤФʤʤ礬ޤ򼨤ޤ .br - +jinfo \-J\-d64 \-sysprops pid .LP -.RS 3 - .LP -jinfo \-J\-d64 \-sysprops pid -.RE +\f3 \- Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤdbgeng.dll ¸ߤƤʤ Windows ƥǤϡDebugging Tools For Windowsפ򥤥󥹥ȡ뤷ʤȤΥġ뤬ưޤ󡣤ޤ \fP\f4PATH\fP\f3 ĶѿˤϡåȥץˤäƻѤ \fP\f4jvm.dll\fP\f3 ξꡢޤϥåץե뤬줿꤬ޤޤ褦ˤƤ\fP .LP -\f3注 \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。Windows 上の jinfo でサポートされているのは、実行中のプロセスの \-flag オプションだけです。\fP .LP -.SH "オプション" +\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 に渡されるコマンド行フラグをペアで出力します。 +JVM Ϥ륳ޥɹԥե饰ڥǽϤޤ .br .TP 3 \-sysprops -Java システムプロパティーを名前と値のペアとして出力します。 +Java ƥץѥƥ̾ͤΥڥȤƽϤޤ .br .TP 3 \-h -ヘルプメッセージを出力します。 +إץåϤޤ .TP 3 \-help -ヘルプメッセージを出力します。 +إץåϤޤ .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 diff --git a/src/solaris/doc/sun/man/man1/ja/jmap.1 b/src/solaris/doc/sun/man/man1/ja/jmap.1 index 87dc7cdf37ee44464020d22cb26e60c31a0214c1..b3679c520fea733a8f42f7a07772d29d2d2d105c 100644 --- a/src/solaris/doc/sun/man/man1/ja/jmap.1 +++ b/src/solaris/doc/sun/man/man1/ja/jmap.1 @@ -19,34 +19,32 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jmap 1 "02 Jun 2010" +.TH jmap 1 "14 Apr 2011" .LP -.SH "名前" -jmap \- メモリーマップ +.SH "̾" +jmap \- ꡼ޥå .LP .RS 3 .TP 2 o -形式 + .TP 2 o -パラメータ +ѥ᡼ .TP 2 o -説明 + .TP 2 o -オプション +ץ .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -60,46 +58,39 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 option -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。 +ƥץϸߤ¾ŪǤץѤ硢ޥ̾ľ˵Ҥޤ .TP 3 pid -印刷するメモリーマップのプロセス ID。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 +꡼ޥåפΥץ IDץ Java ץǤɬפޤޥǼ¹ԤƤ Java ץΰˤϡjps(1) Ѥޤ .br .TP 3 executable -コアダンプの作成元の Java 実行可能ファイルです。 +פκ Java ¹ԲǽեǤ .br .TP 3 core -印刷するメモリーマップのコアファイル。 +꡼ޥåפΥե롣 .br .TP 3 remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 +⡼ȥǥХåС (jsadebugd(1) 򻲾) Υۥ̾ޤ IP ɥ쥹Ǥ .br .TP 3 server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 +ʣΥǥХåСƱΥ⡼ȥۥȤǼ¹ԤƤΡץͭ ID Ǥ .br .RE .LP -.SH " 説明" -.LP - -.LP +.SH "" .LP -\f3jmap\fP は、指定されたプロセスやコアファイルまたはリモートデバッグサーバーの、共用オブジェクトメモリーマップまたはヒープメモリーの詳細を印刷します。指定されたプロセスが 64 ビット VM 上で実行されている場合、\f2\-J\-d64\fP オプションを指定しなければならない場合があります。 次に例を示します。 .LP -.RS 3 - +\f3jmap\fP ϡꤵ줿ץ䥳եޤϥ⡼ȥǥХåСΡѥ֥ȥ꡼ޥåפޤϥҡץ꡼ξܺ٤ޤꤵ줿ץ 64 ӥå VM Ǽ¹ԤƤ硢\f2\-J\-d64\fP ץꤷʤФʤʤ礬ޤ򼨤ޤ .LP .nf \f3 @@ -108,76 +99,66 @@ jmap \-J\-d64 \-heap pid .fl \fP .fi -.RE .LP -\f3注 \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。\fP -.br - .LP -Windows プラットフォーム上で使用可能な唯一の jmap 形式は、次のとおりです。 -.RS 3 - +\f3: Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤdbgeng.dll ¸ߤƤʤ Windows ƥǤϡDebugging Tools For Windowsפ򥤥󥹥ȡ뤷ʤȤΥġ뤬ưޤ󡣤ޤ \fP\f4PATH\fP\f3 ĶѿˤϡåȥץˤäƻѤ \fP\f4jvm.dll\fP\f3 ξꡢޤϥåץե뤬줿꤬ޤޤ褦ˤƤ\fP .LP -jmap \-dump:<\f2dump\-options\fP> pid -.RE -および -.RS 3 - .LP -jmap \-histo[:live] pid -.RE -.SH "オプション" +\f3򼨤ޤ \fP\f4set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP .LP +.br +.LP +.SH "ץ" .LP .RS 3 .TP 3 -<オプションなし> -オプションを使用しない場合、\f3jmap\fP は共用オブジェクトマッピングを印刷します。ターゲット VM にロードされた共用オブジェクトごとに、開始アドレス、マッピングのサイズ、および共用オブジェクトファイルのフルパスが印刷されます。これは、Solaris \f3pmap\fP ユーティリティーと類似しています。 +<ץʤ> +ץѤʤ硢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) を使って読み取ります。 +Java ҡפ hprof Хʥ filename ˥פޤ\f2live\fP ֥ץϾάǽǤ줬ꤵ줿硢ҡ¸Υ֥ȤΤߤפޤҡץפ򻲾Ȥˤϡ줿ե jhat(1) (Java Heap Analysis Tool) Ȥäɤ߼ޤ .br .TP 3 \-finalizerinfo -ファイナライズを待っているオブジェクトに関する情報を出力します。 +եʥ饤ԤäƤ륪֥Ȥ˴ؤϤޤ .br .TP 3 \-heap -ヒープサマリーを印刷します。使用される GC アルゴリズム、ヒープ構成、および世代ごとのヒープ使用率が印刷されます。 +ҡץޥ꡼ޤѤ GC 르ꥺࡢҡ׹头ȤΥҡ׻Ψޤ .br .TP 3 \-histo[:live] -ヒープのヒストグラムを印刷します。Java クラスごとに、オブジェクトの数、バイト単位でのメモリーサイズ、および完全修飾クラス名が印刷されます。VM 内部クラス名は、「*」の接頭辞を付けて印刷されます。\f2live\fP サブオプションが指定された場合、生存中のオブジェクトのみがカウントされます。 +ҡפΥҥȥޤJava 饹Ȥˡ֥ȤοХñ̤ǤΥ꡼Ӵ饹̾ޤVM 饹̾ϡ*פƬդưޤ\f2live\fP ֥ץ󤬻ꤵ줿硢¸Υ֥ȤΤߤȤޤ .br .TP 3 \-permstat -Permanent 世代の Java ヒープの、クラスローダー関連の統計データを印刷します。クラスローダーごとに、その名前、状態、アドレス、親クラスローダー、およびクラスローダーがロードしたクラスの数とサイズが印刷されます。さらに、intern された文字列の数とサイズも出力されます。 +Permanent Java ҡפΡ饹Ϣץǡޤ饹Ȥˡ̾֡ɥ쥹ƥ饹ӥ饹ɤ饹οȥޤˡintern 줿ʸοȥϤޤ .br .TP 3 \-F -強制 (Force)。pid が応答しない場合に、jmap \-dump または jmap \-histo オプションとともに使用します。このモードでは、\f2live\fP サブオプションはサポートされません。 + (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> を渡します。 +jmap ¹ԤƤ Java ۥޥ <flag> Ϥޤ .br .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 diff --git a/src/solaris/doc/sun/man/man1/ja/jps.1 b/src/solaris/doc/sun/man/man1/ja/jps.1 index f4f80ce430e11718aff0410ab4e86072336fbd60..718cbdc8ef04294dd68698d2d678d69ab4edb892 100644 --- a/src/solaris/doc/sun/man/man1/ja/jps.1 +++ b/src/solaris/doc/sun/man/man1/ja/jps.1 @@ -19,43 +19,41 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jps 1 "02 Jun 2010" +.TH jps 1 "14 Apr 2011" .LP -.SH "名前" -jps \- Java 仮想マシンプロセスステータスツール +.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 - +.SH "" .LP .nf \f3 @@ -67,79 +65,70 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 options -コマンド行オプション。 +ޥɹԥץ .TP 3 hostid -プロセスレポートを生成するホストのホスト識別子。\f2hostid\fP には、通信プロトコル、ポート番号、実装に固有な他のデータを指定したオプションコンポーネントを含めることができます。 +ץݡȤۥȤΥۥȼ̻ҡ\f2hostid\fP ˤϡ̿ץȥ롢ݡֹ桢˸ͭ¾Υǡꤷץ󥳥ݡͥȤޤ뤳ȤǤޤ .RE .LP -.SH " 説明" -.LP - +.SH " " .LP .LP -\f3jps\fP ツールは、ターゲットシステム上で計測された HotSpot Java 仮想マシン (JVM) を一覧表示します。このツールで表示できるレポート情報は、アクセス権を持った JVM に関するものに限定されます。 +\f3jps\fP ġϡåȥƥǷ¬줿 HotSpot Java ۥޥ (JVM) ɽޤΥġɽǤݡȾϡä JVM ˴ؤΤ˸ꤵޤ .LP .LP -\f2hostid\fP を指定せずに \f3jps\fP を実行した場合、ローカルホストで計測された JVM が検索されます。\f2hostid\fP を指定して起動した場合、指定されたプロトコルとポートを使用して、指定されたホスト上の JVM を検索します。\f3jstatd\fP プロセスがターゲットホスト上で実行されていると想定されます。 +\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 ファイルパス情報が省略されています。 +\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 を出力します。 +\f3jps\fP ޥɤϡ\f3Java\fP ưġѤ \f2main\fP ᥽åɤϤ륯饹̾Ȱ򸡺ޤȼεưġѤƥå JVM ưϡ \f2main\fP ᥽åɤϤ륯饹̾ (ޤ JAR ե̾) ȰѤǤޤ󡣤ξ硢\f3jps\fP ޥɤϡmain ᥽åɤϤ륯饹̾ (ޤ JAR ե̾) ȰФơʸ \f2Unknown\fP Ϥޤ .LP .LP -\f3jps\fP コマンドで生成される JVM のリストは、このコマンドを実行する主体に与えられたアクセス権に基づき、制限される場合があります。このコマンドは、オペレーティングシステム独自のアクセス制御機構による決定に基づいて、主体にアクセス権が与えられている JVM だけを一覧表示します。 +\f3jps\fP ޥɤ JVM ΥꥹȤϡΥޥɤ¹ԤΤͿ줿˴Ť¤礬ޤΥޥɤϡڥ졼ƥ󥰥ƥȼΥ浡ˤ˴ŤơΤ˥ͿƤ JVM ɽޤ .LP .LP -\f3注:\fP このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 +\f3:\fP Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤߡWindows 98 Windows Me ץåȥեǤϻѤǤޤ .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .LP -\f3jps\fP コマンドでは、コマンドの出力を変更するオプションが多数サポートされています。将来、これらのオプションは、変更または廃止される可能性があります。 +\f3jps\fP ޥɤǤϡޥɤνϤѹ륪ץ¿ݡȤƤޤ衢Υץϡѹޤѻߤǽޤ .LP .RS 3 .TP 3 \-q -ローカル VM 識別子のリストだけを生成するように、\f2main\fP メソッドに渡されるクラス名、JAR ファイル名、および引数の出力を制御します。 +饹̾JAR ե̾ \f2main\fP ᥽åɤϤ줿νϤ VM ̻ҤΰΤߤޤ .TP 3 \-m -main メソッドに渡される引数を出力します。この出力は、組み込まれている JVM に対して null になることもあります。 +main ᥽åɤϤϤޤνϤϡȤ߹ޤƤ JVM Ф null ˤʤ뤳Ȥ⤢ޤ .TP 3 \-l -アプリケーションの主要なクラスのフルパッケージ名、またはアプリケーションの JAR ファイルへのフルパス名を出力します。 +ץꥱμפʥ饹Υեѥå̾ޤϥץꥱ JAR եؤΥեѥ̾Ϥޤ .TP 3 \-v -JVM に渡される引数を出力します。 +JVM ϤϤޤ .TP 3 \-V -フラグファイル (.hotspotrc ファイルまたは \-XX:Flags=<\f2filename\fP> の引数で指定されたファイル) を通じて JVM に渡される引数を出力します。 +ե饰ե (.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 にオプション渡すことは、よく行われています。 +\f3jps\fP ƤӽФ \f3java\fP ưġˡ\f2option\fP ϤޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ\f3\-J\fP ȤäơJava ǵҤ줿ץꥱ¹Ԥظ VM ˥ץϤȤϡ褯ԤƤޤ .RE .LP .SS -ホスト識別子 +ۥȼ̻ .LP -.RS 3 - .LP -.LP -ホスト識別子、つまり \f2hostid\fP は、ターゲットシステムを示す文字列です。\f2hostid\fP 文字列の構文の大部分は、URI の構文に対応しています。 +ۥȼ̻ҡĤޤ \f2hostid\fP ϡåȥƥ򼨤ʸǤ\f2hostid\fP ʸιʸʬϡURI ιʸбƤޤ .LP .nf \f3 @@ -155,26 +144,23 @@ JVM に渡される引数を出力します。 .RS 3 .TP 3 protocol -通信プロトコルです。\f2protocol\fP が省略され、\f2hostname\fP が指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカルプロトコルになります。\f2protocol\fP が省略され、\f2hostname\fP が指定されている場合は、デフォルトプロトコルは \f3rmi\fP になります。 +̿ץȥǤ\f2protocol\fP ά졢\f2hostname\fP ꤵƤʤ硢ǥեȤΥץȥ뤬ץåȥեͭκŬ줿ץȥˤʤޤ\f2protocol\fP ά졢\f2hostname\fP ꤵƤϡǥեȥץȥ \f3rmi\fP ˤʤޤ .TP 3 hostname -ターゲットホストを示すホスト名または IP アドレスです。\f2hostname\fP が省略されている場合は、ターゲットホストはローカルホストになります。 +åȥۥȤ򼨤ۥ̾ޤ 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) が使用されます。 +⡼ȥС̿뤿ΥǥեȥݡȤǤ\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 オプションを参照してください。 +Υѥ᡼ΰϡˤäưۤʤޤŬ줿ץȥξ硢Υեɤ̵뤵ޤ\f3rmi\fP ץȥξ硢Υѥ᡼ϡ⡼ȥۥȾ RMI ⡼ȥ֥Ȥ̾򼨤ʸˤʤޤjstatd(1) ޥɤˤĤƤϡ\f3\-n\fP ץ򻲾ȤƤ .RE .LP -.RE -.SH "出力形式" -.LP - +.SH "Ϸ" .LP .LP -\f3jps\fP コマンドの出力は、次のパターンに従います。 +\f3jps\fP ޥɤνϤϡΥѥ˽ޤ .LP .nf \f3 @@ -188,22 +174,20 @@ servername .LP .LP -すべての出力トークンは空白で区切ります。\f2arg\fP の中で空白を使用すると、実際の定位置パラメータに引数をマッピングしようとするときに、あいまいになります。 +٤Ƥνϥȡ϶Ƕڤޤ\f2arg\fP ǶѤȡºݤ֥ѥ᡼˰ޥåԥ󥰤褦ȤȤˡޤˤʤޤ .br .br -\f3注\fP: 将来のリリースでこの形式は変更される可能性があるため、\f3jps\fP 出力を解析するスクリプトは作成しないことをお勧めします。\f3jps\fP 出力を解析するスクリプトを作成すると、このツールの将来のリリースで、作成したスクリプトを変更する必要が予測されます。 +\f3\fP: Υ꡼Ǥηѹǽ뤿ᡢ\f3jps\fP νϤϤ륹ץȤϺʤȤ򤪴ᤷޤ\f3jps\fP ϤϤ륹ץȤȡΥġξΥ꡼ǡץȤѹɬפͽ¬ޤ .br .LP -.SH "例" -.LP - +.SH "" .LP .LP -この節では、\f3jps\fP コマンドの例を示します。 +Ǥϡ\f3jps\fP ޥɤ򼨤ޤ .LP .LP -ローカルホスト上で計測された JVM を一覧表示する場合: +ۥȾǷ¬줿 JVM ɽ: .LP .nf \f3 @@ -228,10 +212,10 @@ servername .LP .LP -リモートホスト上で計測された JVM を一覧表示する場合: +⡼ȥۥȾǷ¬줿 JVM ɽ: .LP .LP -この例では、\f3jstat\fP サーバーと、その内部 RMI レジストリまたは別の外部 \f3rmiregistry\fP プロセスのいずれかとが、リモートホストのデフォルトポート (ポート 1099) で実行されていると想定しています。また、ローカルホストが、リモートホストへの有効なアクセス権を持っていることも想定しています。この例には、\f2\-l\fP オプションも含まれ、クラス名または JAR ファイル名を詳細な形式で出力します。 +Ǥϡ\f3jstat\fP Сȡ RMI 쥸ȥޤ̤γ \f3rmiregistry\fP ץΤ줫Ȥ⡼ȥۥȤΥǥեȥݡ (ݡ 1099) Ǽ¹ԤƤꤷƤޤޤۥȤ⡼ȥۥȤؤͭʥäƤ뤳ȤꤷƤޤˤϡ\f2\-l\fP ץޤޤ졢饹̾ޤ JAR ե̾ܺ٤ʷǽϤޤ .LP .nf \f3 @@ -240,7 +224,7 @@ servername .br .fl -3002 /opt/jdk1.5.0/demo/jfc/Java2D/Java2Demo.JAR +3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR .br .fl @@ -252,10 +236,10 @@ servername .LP .LP -RMI レジストリにデフォルトではないポートを使用して、リモートホスト上で計測された JVM を一覧表示する場合: +RMI 쥸ȥ˥ǥեȤǤϤʤݡȤѤơ⡼ȥۥȾǷ¬줿 JVM ɽ: .LP .LP -この例では、内部 RMI レジストリがポート 2002 にバインドされた \f3jstatd\fP サーバーが、リモートホスト上で実行していると想定しています。また、\f2\-m\fP オプションを使用して、一覧表示されたそれぞれの Java アプリケーションの \f2main\fP メソッドに渡される引数を組み込んでいます。 +Ǥϡ RMI 쥸ȥ꤬ݡ 2002 ˥Хɤ줿 \f3jstatd\fP С⡼ȥۥȾǼ¹ԤƤꤷƤޤޤ\f2\-m\fP ץѤơɽ줿줾 Java ץꥱ \f2main\fP ᥽åɤϤȤ߹Ǥޤ .LP .nf \f3 @@ -264,7 +248,7 @@ RMI レジストリにデフォルトではないポートを使用して、リ .br .fl -3002 /opt/jdk1.5.0/demo/jfc/Java2D/Java2Demo.JAR +3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR .br .fl @@ -273,21 +257,21 @@ RMI レジストリにデフォルトではないポートを使用して、リ .fi .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o -「java(1) \- Java アプリケーション起動ツール」 +java(1) \- Java ץꥱưġ .TP 2 o -「jstat(1) \- Java 仮想マシン統計データ監視ツール」 +jstat(1) \- Java ۥޥץǡƻġ .TP 2 o -「jstatd(1) \- 仮想マシン jstat デーモン」 +jstatd(1) \- ۥޥ jstat ǡ .TP 2 o -「rmiregistry(1) \- Java リモートオブジェクトレジストリ」 +rmiregistry(1) \- Java ⡼ȥ֥ȥ쥸ȥ .RE .LP diff --git a/src/solaris/doc/sun/man/man1/ja/jrunscript.1 b/src/solaris/doc/sun/man/man1/ja/jrunscript.1 index 0f4b3599cde3e6e3721feeeede0111488ec26e44..70b527f7e45b5f3d55d38ebe7ec247dfaa302934 100644 --- a/src/solaris/doc/sun/man/man1/ja/jrunscript.1 +++ b/src/solaris/doc/sun/man/man1/ja/jrunscript.1 @@ -1,4 +1,4 @@ -." Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 2006, 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 @@ -19,40 +19,38 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jrunscript 1 "02 Jun 2010" +.TH jrunscript 1 "14 Apr 2011" .LP -.SH "名前" -jrunscript \- コマンド行スクリプトシェル +.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 - +.SH "" .LP .nf \f3 @@ -62,85 +60,77 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 options -オプションを使用する場合、コマンド名の直後に記述してください。 +ץѤ硢ޥ̾ľ˵ҤƤ .TP 3 arguments -引数を使用する場合、オプションまたはコマンド名の直後に記述してください。 +Ѥ硢ץޤϥޥ̾ľ˵ҤƤ .RE .LP -.SH " 説明" -.LP - -.LP +.SH " " .LP -\f3jrunscript\fP はコマンド行スクリプトシェルです。 jrunscript は、対話型 (読み取り \- 評価 \- 出力) モードとバッチ (\-f オプション) モードの両方のスクリプト実行をサポートします。これはスクリプト言語に依存しないシェルです。デフォルトの使用言語は JavaScript ですが、\-l オプションを使えばほかの言語も指定できます。jrunscript は、Java とスクリプト言語との通信によって「探求的なプログラミング」スタイルをサポートします。 .LP +\f3jrunscript\fP ϥޥɹԥץȥǤjrunscript ϡ÷ (ɤ߼ \- ɾ \- ) ⡼ɤȥХå (\-f ץ) ⡼ɤξΥץȼ¹Ԥ򥵥ݡȤޤϥץȸ˰¸ʤǤǥեȤλѸ JavaScript Ǥ\-l ץȤФۤθǤޤjrunscript ϡJava ȥץȸȤ̿ˤäơõŪʥץߥ󥰡ץ򥵥ݡȤޤ .LP -\f3注:\fP このツールは\f3試験的なもの\fPであり、将来の JDK のバージョンでは\f3利用できなくなる\fP可能性があります。 .LP -.SH "オプション" +\f3:\fP Υġ\f3Ūʤ\fPǤꡢ JDK ΥСǤ\f3ѤǤʤʤ\fPǽޤ .LP - +.SH "ץ" .LP .RS 3 .TP 3 \-classpath path -スクリプトからのアクセス対象となるユーザーの .class ファイルの検索場所を指定します。 +ץȤΥоݤȤʤ桼 .class եθꤷޤ .TP 3 \-cp path -\-classpath \f2path\fP と同義です。 +\-classpath \f2path\fP ƱǤ .TP 3 \-Dname=value -Java のシステムプロパティーを設定します。 +Java Υƥץѥƥꤷޤ .TP 3 \-J<flag> -jrunscript が実行されている Java 仮想マシンに <flag> を渡します。 +jrunscript ¹ԤƤ Java ۥޥ <flag> Ϥޤ .TP 3 \-l language -指定されたスクリプト言語を使用します。デフォルトでは JavaScript が使用されます。ほかのスクリプト言語を使用するには、対応するスクリプトエンジンの JAR ファイルも指定する必要があります。 それには、\-cp、\-classpath のいずれかのオプションを使用します。 +ꤵ줿ץȸѤޤǥեȤǤ JavaScript ѤޤۤΥץȸѤˤϡб륹ץȥ󥸥 JAR եꤹɬפޤˤϡ\-cp\-classpath Τ줫ΥץѤޤ .TP 3 \-e script -指定されたスクリプトを評価します。このオプションを使えば、コマンド行にすべてが指定された「1 行」スクリプトを実行できます。 +ꤵ줿ץȤɾޤΥץȤСޥɹԤˤ٤Ƥꤵ줿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 +.SH "" .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 "例" +[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 -\f3インラインスクリプトの実行\fP +.SH "" .LP -.RS 3 - +.SS +饤󥹥ץȤμ¹ .LP .nf \f3 @@ -151,13 +141,10 @@ jrunscript \-e "cat('http://java.sun.com')" .fl \fP .fi -.RE .LP -\f3指定された言語を使用し、指定されたスクリプトファイルを評価する\fP -.LP -.RS 3 - +.SS +ꤵ줿Ѥꤵ줿ץȥեɾ .LP .nf \f3 @@ -166,42 +153,42 @@ jrunscript \-l js \-f test.js .fl \fP .fi -.RE .LP -\f3対話型モード\fP -.LP -.RS 3 - +.SS +÷⡼ .LP .nf \f3 .fl jrunscript .fl -js>print('hello world'); +js> print('Hello World\\n'); +.fl +Hello World +.fl +js> 34 + 55 .fl -hello world +89.0 .fl -js>34 + 55 +js> t = new java.lang.Thread(function() { print('Hello World\\n'); }) .fl -89 +Thread[Thread\-0,5,main] .fl -js> thread(function() { print('hello world'); } +js> t.start() .fl -hello world +js> Hello World +.fl + .fl js> .fl \fP .fi -.RE .LP -\f3スクリプト引数を指定してスクリプトファイルを実行する\fP -.LP -.RS 3 - +.SS +ץȰꤷƥץȥե¹Ԥ .LP .nf \f3 @@ -210,13 +197,12 @@ jrunscript test.js arg1 arg2 arg3 .fl \fP .fi -.RE .LP -test.js が実行対象となるスクリプトファイルであり、arg1、arg2、および arg3 はスクリプト引数としてスクリプトに渡されます。スクリプトは「arguments」配列を使ってこれらにアクセスできます。 -.SH "関連項目" +test.js ¹оݤȤʤ륹ץȥեǤꡢarg1arg2 arg3 ϥץȰȤƥץȤϤޤץȤϡargumentsȤäƤ˥Ǥޤ +.SH "Ϣ" .LP .LP -JavaScript が使用される場合、jrunscript は、最初のユーザー定義スクリプトを評価する前に、いくつかの組み込み関数や組み込みオブジェクトを初期化します。これらの JavaScript 組み込み機能については、jsdocs を参照してください。 +JavaScript Ѥ硢jrunscript ϡǽΥ桼ץȤɾˡĤȤ߹ߴؿȤ߹ߥ֥Ȥޤ JavaScript Ȥ߹ߵǽˤĤƤϡjsdocs 򻲾ȤƤ .LP diff --git a/src/solaris/doc/sun/man/man1/ja/jsadebugd.1 b/src/solaris/doc/sun/man/man1/ja/jsadebugd.1 index d61e4ec9b481cd30dbc3eb933fa768cddad9f0b4..928334062e72429b962ae69228e9fa93ba2c4e7f 100644 --- a/src/solaris/doc/sun/man/man1/ja/jsadebugd.1 +++ b/src/solaris/doc/sun/man/man1/ja/jsadebugd.1 @@ -19,31 +19,29 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jsadebugd 1 "02 Jun 2010" +.TH jsadebugd 1 "14 Apr 2011" .LP -.SH "名前" -jsadebugd \- サービスアビリティーエージェントデバッグデーモン +.SH "̾" +jsadebugd \- ӥӥƥȥǥХåǡ .LP .RS 3 .TP 2 o -形式 + .TP 2 o -パラメータ +ѥ᡼ .TP 2 o -説明 + .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -55,14 +53,12 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 pid -デバッグサーバーが接続するプロセスのプロセス ID です。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。単一のプロセスに接続できるデバッグサーバーのインスタンスは、1 つに制限されます。 +ǥХåС³ץΥץ ID Ǥץ Java ץǤɬפޤޥǼ¹ԤƤ Java ץΰˤϡjps(1) ѤޤñΥץ³ǤǥХåСΥ󥹥󥹤ϡ1 Ĥ¤ޤ .RE .LP @@ -74,37 +70,32 @@ executable .LP .RS 3 .TP 3 -コアダンプの作成元になる Java 実行可能ファイルです。 +פκˤʤ Java ¹ԲǽեǤ .RE .LP .RS 3 .TP 3 core -デバッグサーバーを接続するコアファイルです。 +ǥХåС³륳եǤ .RE .LP .RS 3 .TP 3 server\-id -複数のデバッグサーバーが同一のマシン上で実行している場合に必要になる、オプション固有の ID です。この ID は、リモートクライアントが、接続先のデバッグサーバーを特定するために使用する必要があります。この ID は、単一のマシン内で一意でなければなりません。 +ʣΥǥХåСƱΥޥǼ¹ԤƤɬפˤʤ롢ץͭ ID Ǥ ID ϡ⡼ȥ饤Ȥ³ΥǥХåСꤹ뤿˻Ѥɬפޤ ID ϡñΥޥǰդǤʤФʤޤ .RE .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3jsadebugd\fP は、Java プロセスまたはコアファイルに接続し、デバッグサーバーとして機能します。jstack(1)、jmap(1)、および jinfo(1) などのリモートクライアントは、Java Remote Method Invocation (RMI) を使用しているサーバーに接続できます。\f2jsadebugd\fP を起動する前に、次のように指定して +\f3jsadebugd\fP ϡJava ץޤϥե³ǥХåСȤƵǽޤjstack(1)jmap(1) jinfo(1) ʤɤΥ⡼ȥ饤ȤϡJava Remote Method Invocation (RMI) ѤƤ륵С³Ǥޤ \f2jsadebugd\fP ưˡΤ褦ˤ .na \f2rmiregistry\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi を起動する必要があります。 -.LP -.RS 3 - +http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi ưɬפޤ .LP .nf \f3 @@ -113,16 +104,18 @@ http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi を起動する .fl \fP .fi -.RE .LP .LP -ここで、\f2$JAVA_HOME\fP は、JDK のインストールディレクトリです。rmiregistry が起動していない場合、jsadebugd は標準 (1099) ポートの rmiregistry を内部で起動します。デバッグサーバーは、SIGINT を送信する (Ctrl+C を押す) ことにより停止できます。 +ǡ \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 -\f3注 \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。 jsadebugd は、現時点では、Windows プラットフォームでは使用できません。\fP +򼨤ޤ \f2set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 diff --git a/src/solaris/doc/sun/man/man1/ja/jstack.1 b/src/solaris/doc/sun/man/man1/ja/jstack.1 index f8e29461513689b66a6d5fb1c01c5f98121d9495..a8b3c8f59ab7750db54e8c956b187ce44ff0f663 100644 --- a/src/solaris/doc/sun/man/man1/ja/jstack.1 +++ b/src/solaris/doc/sun/man/man1/ja/jstack.1 @@ -19,41 +19,39 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jstack 1 "02 Jun 2010" +.TH jstack 1 "14 Apr 2011" .LP -.SH "名前" -jstack \- スタックトレース +.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 - +.SH "" .LP .nf \f3 @@ -67,50 +65,43 @@ o .fi .LP -.SH "パラメータ" +.SH "ѥ᡼" .LP - .LP -.LP -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。オプションを参照してください。 +ƥץϸߤ¾ŪǤץѤ硢ޥ̾ľ˵Ҥޤץ򻲾ȤƤ .LP .RS 3 .TP 3 pid -印刷するスタックトレースのプロセス ID です。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 +륹åȥ졼Υץ ID Ǥץ Java ץǤɬפޤޥǼ¹ԤƤ Java ץΰˤϡjps(1) Ѥޤ .RE .LP .RS 3 .TP 3 executable -コアダンプの作成元の Java 実行可能ファイルです。 +פκ Java ¹ԲǽեǤ .br .TP 3 core -印刷するスタックトレースのコアファイルです。 +륹åȥ졼ΥեǤ .br .TP 3 remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 +⡼ȥǥХåС (jsadebugd(1) 򻲾) Υۥ̾ޤ IP ɥ쥹Ǥ .br .TP 3 server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 +ʣΥǥХåСƱΥ⡼ȥۥȤǼ¹ԤƤΡץͭ ID Ǥ .RE .LP -.SH "説明" -.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 オプションを指定しなければならない場合があります。 次に例を示します。 +\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 -.RS 3 - .LP .nf \f3 @@ -119,51 +110,43 @@ jstack \-J\-d64 \-m pid .fl \fP .fi -.RE .LP .LP -\f3注 \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。Windows プラットフォーム上で使用可能な唯一の jstack 形式は、次のとおりです。\fP +\f3\fP \- Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤdbgeng.dll ¸ߤƤʤ Windows ƥǤϡDebugging Tools For Windowsפ򥤥󥹥ȡ뤷ʤȤΥġ뤬ưޤ󡣤ޤ \f2PATH\fP ĶѿˤϡåȥץˤäƻѤ \f2jvm.dll\fP ξꡢޤϥåץե뤬줿꤬ޤޤ褦ˤƤ .LP -.nf -\f3 -.fl -\fP\f3 jstack [\-l] pid \fP -.fl -.fi - .LP -.SH "オプション" +򼨤ޤ \f2set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP .LP - +.SH "ץ" .LP .RS 3 .TP 3 \-F -「jstack [\-l] pid」が応答しない場合にスタックダンプを強制します。 +jstack [\-l] pidפʤ˥åפޤ .TP 3 \-l -長形式のリスト。所有 java.util.concurrent の +ĹΥꥹȡͭ java.util.concurrent .na -\f2所有できるシンクロナイザ\fP @ +\f2ͭǤ륷󥯥ʥ\fP @ .fi -http://java.sun.com/javase/6/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.htmlの一覧など、ロックについての追加情報を印刷します。 +http://java.sun.com/javase/6/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.htmlΰʤɡåˤĤƤɲþޤ .TP 3 \-m -混合モード (Java およびネイティブ C/C++ フレームの両方) のスタックトレースを印刷します。 +⡼ (Java ӥͥƥ C/C++ ե졼ξ) Υåȥ졼ޤ .TP 3 \-h -ヘルプメッセージを印刷します。 +إץåޤ .br .br .TP 3 \-help -ヘルプメッセージを印刷します。 +إץåϤޤ .br .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 @@ -181,11 +164,9 @@ jsadebugd(1) .RE .LP -.SH "既知のバグ" -.LP - +.SH "ΤΥХ" .LP .LP -混合モードのスタックトレース (\-m オプション使用) は、リモートデバッグサーバーでは機能しません。 +⡼ɤΥåȥ졼 (\-m ץ) ϡ⡼ȥǥХåСǤϵǽޤ .LP diff --git a/src/solaris/doc/sun/man/man1/ja/jstat.1 b/src/solaris/doc/sun/man/man1/ja/jstat.1 index 3ee68ea035d74a58823d9cb22b7fa381ef7919b6..8b3e670a49dcb4bec4fb2d26bbff1de7b6c47e14 100644 --- a/src/solaris/doc/sun/man/man1/ja/jstat.1 +++ b/src/solaris/doc/sun/man/man1/ja/jstat.1 @@ -19,44 +19,46 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jstat 1 "02 Jun 2010" +.TH jstat 1 "14 Apr 2011" .LP -.SH "名前" -jstat \- Java 仮想マシン統計データ監視ツール +.SH "̾" +jstat \- Java ۥޥץǡƻġ .LP .RS 3 .TP 2 o -形式 + .TP 2 o -パラメータ +ѥ᡼ .TP 2 o -説明 + .TP 2 o -仮想マシン識別子 +ۥޥ̻ .TP 2 o -オプション -.br -\ \ \- 一般的なオプション -.br -\ \ \- 出力オプション +ץ +.RS 3 +.TP 2 +* +Ūʥץ +.TP 2 +* +ϥץ +.RE .TP 2 o -例 + .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -66,56 +68,49 @@ o .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 generalOption -単独で使用する一般的なコマンド行オプションです (\-help、\-options、または \-version)。 +ñȤǻѤŪʥޥɹԥץǤ (\-help\-optionsޤ \-version) .TP 3 outputOptions -単一の \f2statOption\fP と、\-t、\-h、および \-J オプションのいずれかを組み合わせた、1 つまたは複数の出力オプションです。 +ñ \f2statOption\fP ȡ\-t\-h \-J ץΤ줫Ȥ߹碌1 ĤޤʣνϥץǤ .TP 3 vmid -ターゲットの Java 仮想マシン (JVM) を示す文字列である仮想マシン識別子です。一般的な構文は次のようになります。 +åȤ 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 を表す単純な整数から、通信プロトコル、ポート番号、および他の実装固有の値を示す複雑な構造まで、さまざまに異なります。詳細は、「仮想マシン識別子」を参照してください。 +vmid ʸιʸʬϡURI ιʸбƤޤ\f2vmid\fP ϡ JVM ɽñ顢̿ץȥ롢ݡֹ桢¾μͭͤ򼨤ʣʹ¤ޤǡޤޤ˰ۤʤޤܺ٤ϡֲۥޥ̻ҡפ򻲾ȤƤ .TP 3 interval[s|ms] -秒 (s) またはミリ秒 (ms) のうち指定した単位でのサンプリング間隔です。デフォルトの単位はミリ秒です。\ 正の整数でなければなりません。\ これが指定された場合、\f3jstat\fP は interval ごとに出力を生成します。 + (s) ޤϥߥ (ms) Τꤷñ̤ǤΥץ󥰴ֳ֤ǤǥեȤñ̤ϥߥäǤǤʤФʤޤ󡣤줬ꤵ줿硢\f3jstat\fP interval Ȥ˽Ϥޤ .TP 3 count -表示するサンプル数です。デフォルト値は無限です。 つまり、\f3jstat\fP は、ターゲット JVM が終了するまで、または \f3jstat\fP コマンドが終了するまで、統計データを表示します。 正の整数値を使用する必要があります。 +ɽ륵ץǤǥե̵ͤ¤ǤĤޤꡢ\f3jstat\fP ϡå JVM λޤǡޤ \f3jstat\fP ޥɤλޤǡץǡɽޤǤʤФʤޤ .RE .LP -.SH " 説明" -.LP - +.SH " " .LP .LP -\f3jstat\fP ツールは、設置されている HotSpot Java 仮想マシン (JVM) のパフォーマンス統計データを表示します。ターゲット JVM は、仮想マシン識別子、つまり下記の \f2vmid\fP オプションによって識別されます。 +\f3jstat\fP ġϡ֤Ƥ HotSpot Java ۥޥ (JVM) Υѥեޥץǡɽޤå JVM ϡۥޥ̻ҡĤޤ겼 \f2vmid\fP ץˤäƼ̤ޤ .LP .LP -\f3注\fP: このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 +\f3\fP: Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤߡWindows 98 Windows Me ץåȥեǤϻѤǤޤ .br .LP .SS -仮想マシン識別子 -.LP -.RS 3 - +ۥޥ̻ .LP .LP -\f2vmid\fP 文字列の構文の大部分は、URI の構文に対応しています。 +\f2vmid\fP ʸιʸʬϡURI ιʸбƤޤ .LP .nf \f3 @@ -128,79 +123,73 @@ count .RS 3 .TP 3 protocol -通信プロトコルです。\f2protocol\fP が省略され、\f2hostname\fP が指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカルプロトコルになります。\f2protocol\fP が省略され、\f2hostname\fP が指定されている場合は、デフォルトプロトコルは \f3rmi\fP になります。 +̿ץȥǤ\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 を指定できます。 +å 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 が省略されている場合は、ターゲットホストはローカルホストになります。 +åȥۥȤ򼨤ۥ̾ޤ 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) が使用されます。 +⡼ȥС̿뤿ΥǥեȥݡȤǤ\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 リソースオブジェクトの名前を示します。 +Υѥ᡼ΰϡˤäưۤʤޤŬ줿ץȥξ硢Υեɤ̵뤵ޤ\f3rmi\fP ץȥξϡΥѥ᡼ϡ⡼ȥۥȾ RMI ꥽֥Ȥ̾򼨤ޤ .RE .LP -.RE -.SH "オプション" +.SH "ץ" .LP - .LP -.LP -\f3jstat\fP コマンドは、一般的なオプションと出力オプションの 2 つのタイプのオプションをサポートしています。一般的なオプションを使用した場合、\f3jstat\fP は簡単な使用率およびバージョン情報を表示します。出力オプションでは、統計データ出力の内容と形式を指定します。 +\f3jstat\fP ޥɤϡŪʥץȽϥץ 2 ĤΥפΥץ򥵥ݡȤƤޤŪʥץѤ硢\f3jstat\fP ϴñʻΨӥСɽޤϥץǤϡץǡϤƤȷꤷޤ .br .LP .LP -\f3注\fP: すべてのオプションとその機能は、将来のリリースで変更または廃止される可能性があります。 +\f3\fP: ٤ƤΥץȤεǽϡΥ꡼ѹޤѻߤǽޤ .LP .SS -一般的なオプション +Ūʥץ .LP .LP -いずれかの一般的なオプションを指定した場合、他のオプションまたはパラメータは一切指定できません。 +줫ΰŪʥץꤷ硢¾Υץޤϥѥ᡼ϰڻǤޤ .LP .RS 3 .TP 3 \-help -ヘルプメッセージを表示します。 +إץåɽޤ .TP 3 \-version -バージョン情報を表示します。 +Сɽޤ .TP 3 \-options -統計データオプションを一覧表示します。下記の「出力オプション」の節を参照してください。 +ץǡץɽޤΡֽϥץפ򻲾ȤƤ .RE .LP .SS -出力オプション +ϥץ .LP -.RS 3 - .LP +ŪʥץꤷʤˡϥץǤޤϥץϡ\f3jstat\fP νϤƤӷꤷñ \f2statOption\fP ȡ¾Τ줫νϥץ (\-h\-t \-J) Ȥǹޤ\f2statOption\fP Ϻǽ˵Ҥɬפޤ .LP -一般的なオプションを指定しない場合に、出力オプションを指定できます。出力オプションは、\f3jstat\fP の出力の内容および形式を指定し、単一の \f2statOption\fP と、他のいずれかの出力オプション (\-h、\-t、および \-J) とで構成されます。\ \f2statOption\fP は最初に記述する必要があります。 .LP +Ϥϡ󤬶Ƕڤ줿ơ֥ηǹޤȥޤإåԤˤäơΰ̣狼ޤإåɽ٤ꤹˤϡ\f3\-h\fP ץѤޤΥإå̾ϰ̤ˡץ֤ǰݤƤޤ̤ˡ2 ĤΥץƱ̾󤬻ѤƤС2 ĤΥǡƱˤʤޤ .LP -出力は、各列が空白で区切られたテーブルの形式で構成されます。タイトルを記したヘッダー行に、各列の説明が記されます。 \f3\-h\fP オプションを使用して、ヘッダーを表示する頻度を設定します。\ 通常、列のヘッダー名はオプションが異なっている場合でも一貫しています。一般に、2 つのオプションで同じ名前の列が使用されていれば、2 つの列のデータソースは同じになります。 .LP +\f3\-t\fP ץѤȡ \f2Timestamp Ȥ٥դॹפ󤬡\fP ϤκǽȤɽޤ \f2Timestamp\fP ˤϡå JVM εưηв֤ñ̤ɽޤॹפ٤ϡޤޤװˤäưۤʤꡢ̤٤ΤäƥǤΥåɥ塼ٱˤưޤ .LP -\f3\-t\fP オプションを使用すると、\f2Timestamp\fP というラベルの付いたタイムスタンプの列が、出力の最初の列として表示されます。\f2Timestamp\fP 列には、ターゲット JVM の起動からの経過時間が、秒単位で表示されます。タイムスタンプの精度は、さまざまな要因によって異なり、大量の負荷のかかったシステムでのスレッドスケジュールの遅延により変動します。 .LP +\f2interval\fP \f2count\fP ѥ᡼Ѥơ\f3jstat\fP νϤɽ٤Ȳ򤽤줾ꤷޤ .LP -\f2interval\fP および \f2count\fP パラメータを使用して、\f3jstat\fP がその出力を表示する頻度と回数をそれぞれ指定します。 .LP -.LP -\f3注\fP: 将来のリリースでこの形式は変更される可能性があるため、\f3jstat\fP の出力を解析するスクリプトは作成しないことをお勧めします。\f3jstat\fP 出力を解析するスクリプトを作成する場合は、このツールの将来のリリースで、そのスクリプトを変更しなければならないことに留意してください。 +\f3\fP: Υ꡼Ǥηѹǽ뤿ᡢ\f3jstat\fP νϤϤ륹ץȤϺʤȤ򤪴ᤷޤ\f3jstat\fP ϤϤ륹ץȤϡΥġξΥ꡼ǡΥץȤѹʤФʤʤȤαդƤ .LP .RS 3 .TP 3 \-statOption -\f3jstat\fP が表示する統計データ情報を指定します。次の表には、利用可能なオプションが一覧表示されています。 特定のプラットフォームのインストールについて、オプションを一覧表示するには、一般的なオプションの \f3\-options\fP を使用します。 +\f3jstat\fP ɽץǡꤷޤɽˡѲǽʥץΰ򼨤ޤΥץåȥե।󥹥ȡΥץɽˤϡŪʥץ \f3\-options\fP Ѥޤ .br .br .LP @@ -232,7 +221,7 @@ servername .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -クラスローダーの動作に関する統計データ +饹ư˴ؤץǡ .br .di .nr a| \n(dn @@ -248,7 +237,7 @@ servername .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -HotSpot Just\-in\-Time コンパイラの動作に関する統計データ +HotSpot Just\-in\-Time ѥư˴ؤץǡ .br .di .nr b| \n(dn @@ -264,7 +253,7 @@ HotSpot Just\-in\-Time コンパイラの動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクトされたヒープの動作に関する統計データ +١쥯Ȥ줿ҡפư˴ؤץǡ .br .di .nr c| \n(dn @@ -280,7 +269,7 @@ HotSpot Just\-in\-Time コンパイラの動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -世代ごとの容量と対応する領域に関する統計データ +头Ȥ̤бΰ˴ؤץǡ .br .di .nr d| \n(dn @@ -296,7 +285,7 @@ HotSpot Just\-in\-Time コンパイラの動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション統計データの概要 (\f3\-gcutil\fP と同じ) と、直前および現在 (適用可能な場合) のガベージコレクションイベントの原因 +١쥯ץǡγ (\f3\-gcutil\fP Ʊ) ȡľӸ (ŬѲǽʾ) Υ١쥯󥤥٥Ȥθ .br .di .nr e| \n(dn @@ -312,7 +301,7 @@ HotSpot Just\-in\-Time コンパイラの動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の動作に関する統計データ +New ư˴ؤץǡ .br .di .nr f| \n(dn @@ -328,7 +317,7 @@ New 世代の動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代のサイズと対応する領域に関する統計データ +New Υбΰ˴ؤץǡ .br .di .nr g| \n(dn @@ -344,7 +333,7 @@ New 世代のサイズと対応する領域に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代および Permanent 世代の動作に関する統計データ +Old 太 Permanent ư˴ؤץǡ .br .di .nr h| \n(dn @@ -360,7 +349,7 @@ Old 世代および Permanent 世代の動作に関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代のサイズに関する統計データ +Old Υ˴ؤץǡ .br .di .nr i| \n(dn @@ -376,7 +365,7 @@ Old 世代のサイズに関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代のサイズに関する統計データ +Permanent Υ˴ؤץǡ .br .di .nr j| \n(dn @@ -392,7 +381,7 @@ Permanent 世代のサイズに関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション統計データの概要 +١쥯ץǡγ .br .di .nr k| \n(dn @@ -408,7 +397,7 @@ Permanent 世代のサイズに関する統計データ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -HotSpot コンパイル方法の統計データ +HotSpot ѥˡץǡ .br .di .nr l| \n(dn @@ -419,7 +408,7 @@ HotSpot コンパイル方法の統計データ .nf .ll \n(34u .nr 80 0 -.nr 38 \w\f3オプション\fP +.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 @@ -448,7 +437,7 @@ HotSpot コンパイル方法の統計データ .80 .rm 80 .nr 81 0 -.nr 38 \w\f3表示内容\fP +.nr 38 \w\f3ɽ\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -486,7 +475,7 @@ HotSpot コンパイル方法の統計データ .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 259 file Input is too wide - \n(TW units +.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 @@ -503,7 +492,7 @@ HotSpot コンパイル方法の統計データ .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3表示内容\fP +\&\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 @@ -716,30 +705,26 @@ HotSpot コンパイル方法の統計データ .if \n-(b.=0 .nr c. \n(.c-\n(d.-52 .TP 3 \-h n -\f2n\fP サンプル (出力行) ごとに列ヘッダーを表示。 ただし、\f2n\fP は正の整数値。デフォルト値は 0。 このとき、データの最初の行の上に列ヘッダーが表示される +\f2n\fP ץ (Ϲ) Ȥإåɽ \f2n\fP ͡ǥեͤ 0 ΤȤǡκǽιԤξإåɽ .TP 3 \-t n -タイムスタンプ列を出力の最初の列として表示。タイムスタンプは、ターゲット JVM の起動時からの経過時間 +ॹϤκǽȤɽॹפϡå JVM εưηв .TP 3 -\-J javaOption -\f2javaOption\fP を \f3java\fP アプリケーション起動ツールへ渡す。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。オプションの完全なリストについては、「java(1)」のドキュメントを参照してください。 +\-JjavaOption +\f2javaOption\fP \f3java\fP ץꥱưġϤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤץδʥꥹȤˤĤƤϡjava(1)פΥɥȤ򻲾ȤƤ .RE .LP -.RE .SS -statOption と出力 -.LP -.RS 3 - +statOption Ƚ .LP .LP -以降の表では、\f3jstat\fP が \f2statOption\fP ごとに出力する列について概要を示します。 +ʹߤɽǤϡ\f3jstat\fP \f2statOption\fP Ȥ˽ϤˤĤƳפ򼨤ޤ .br .LP .SS -\-class オプション +\-class ץ .LP .LP .TS @@ -770,7 +755,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ロードされたクラスの数 +ɤ줿饹ο .br .di .nr a| \n(dn @@ -786,7 +771,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ロードされた K バイト数 +ɤ줿 K Хȿ .br .di .nr b| \n(dn @@ -802,7 +787,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -アンロードされたクラスの数 +ɤ줿饹ο .br .di .nr c| \n(dn @@ -818,7 +803,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -アンロードされた K バイト数 +ɤ줿 K Хȿ .br .di .nr d| \n(dn @@ -834,7 +819,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -クラスのロードやアンロード処理に要した時間 +饹Υɤ䥢ɽפ .br .di .nr e| \n(dn @@ -845,9 +830,9 @@ statOption と出力 .nf .ll \n(34u .nr 80 0 -.nr 38 \wクラスローダーの統計データ +.nr 38 \w饹ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -862,7 +847,7 @@ statOption と出力 .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -886,7 +871,7 @@ statOption と出力 .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 313 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 298 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -903,11 +888,11 @@ statOption と出力 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'クラスローダーの統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -1002,7 +987,7 @@ statOption と出力 .LP .SS -\-compiler オプション +\-compiler ץ .LP .LP .TS @@ -1033,7 +1018,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -実行されたコンパイルタスクの数 +¹Ԥ줿ѥ륿ο .br .di .nr a| \n(dn @@ -1049,7 +1034,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -失敗したコンパイルタスクの数 +Ԥѥ륿ο .br .di .nr b| \n(dn @@ -1065,7 +1050,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -無効にされたコンパイルタスクの数 +̵ˤ줿ѥ륿ο .br .di .nr c| \n(dn @@ -1081,7 +1066,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -コンパイルタスクの実行に要した時間 +ѥ륿μ¹Ԥפ .br .di .nr d| \n(dn @@ -1097,7 +1082,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -最後に失敗したコンパイルのコンパイルタイプ +Ǹ˼ԤѥΥѥ륿 .br .di .nr e| \n(dn @@ -1113,7 +1098,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -最後に失敗したコンパイルのクラス名とメソッド +Ǹ˼ԤѥΥ饹̾ȥ᥽å .br .di .nr f| \n(dn @@ -1124,9 +1109,9 @@ statOption と出力 .nf .ll \n(34u .nr 80 0 -.nr 38 \wHotSpot Just\-In\-Time コンパイラの統計データ +.nr 38 \wHotSpot Just\-In\-Time ѥץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -1143,7 +1128,7 @@ statOption と出力 .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -1169,7 +1154,7 @@ statOption と出力 .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 349 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 334 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -1186,11 +1171,11 @@ statOption と出力 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'HotSpot Just\-In\-Time コンパイラの統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -1302,7 +1287,7 @@ statOption と出力 .LP .SS -\-gc オプション +\-gc ץ .LP .LP .TS @@ -1333,7 +1318,7 @@ statOption と出力 .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の現在の容量 (KB) +Survivor ΰ 0 θߤ (KB) .br .di .nr a| \n(dn @@ -1349,7 +1334,7 @@ Survivor 領域 0 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の現在の容量 (KB) +Survivor ΰ 1 θߤ (KB) .br .di .nr b| \n(dn @@ -1365,7 +1350,7 @@ Survivor 領域 1 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の使用率 (KB) +Survivor ΰ 0 λΨ (KB) .br .di .nr c| \n(dn @@ -1381,7 +1366,7 @@ Survivor 領域 0 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の使用率 (KB) +Survivor ΰ 1 λΨ (KB) .br .di .nr d| \n(dn @@ -1397,7 +1382,7 @@ Survivor 領域 1 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の現在の容量 (KB) +Eden ΰθߤ (KB) .br .di .nr e| \n(dn @@ -1413,7 +1398,7 @@ Eden 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の使用率 (KB) +Eden ΰλΨ (KB) .br .di .nr f| \n(dn @@ -1429,7 +1414,7 @@ Eden 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の現在の容量 (KB) +Old ΰθߤ (KB) .br .di .nr g| \n(dn @@ -1445,7 +1430,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の使用率 (KB) +Old ΰλΨ (KB) .br .di .nr h| \n(dn @@ -1461,7 +1446,7 @@ Old 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の現在の容量 (KB) +Permanent ΰθߤ (KB) .br .di .nr i| \n(dn @@ -1477,7 +1462,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の使用率 (KB) +Permanent ΰλΨ (KB) .br .di .nr j| \n(dn @@ -1493,7 +1478,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr k| \n(dn @@ -1509,7 +1494,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代のガベージコレクション時間 +㤤Υ١쥯 .br .di .nr l| \n(dn @@ -1525,7 +1510,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -フルガベージコレクション時間 +ե륬١쥯 .br .di .nr m| \n(dn @@ -1541,7 +1526,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション総時間 +١쥯 .br .di .nr n| \n(dn @@ -1552,9 +1537,9 @@ Permanent 領域の使用率 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wガベージコレクトされたヒープの統計データ +.nr 38 \w١쥯Ȥ줿ҡפץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -1589,9 +1574,9 @@ Permanent 領域の使用率 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -1633,7 +1618,7 @@ Permanent 領域の使用率 (KB) .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 419 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 404 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -1650,11 +1635,11 @@ Permanent 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'ガベージコレクトされたヒープの統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -1850,7 +1835,7 @@ Permanent 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\h'|\n(40u'FGC\h'|\n(41u'ե GC ٥ȿ .ne \n(m|u+\n(.Vu .if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) .ta \n(80u \n(81u @@ -1906,7 +1891,7 @@ Permanent 領域の使用率 (KB) .LP .SS -\-gccapacity オプション +\-gccapacity ץ .LP .LP .TS @@ -1937,7 +1922,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の最小容量 (KB) +New κǾ (KB) .br .di .nr a| \n(dn @@ -1953,7 +1938,7 @@ New 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の最大容量 (KB) +New κ (KB) .br .di .nr b| \n(dn @@ -1969,7 +1954,7 @@ New 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の現在の容量 (KB) +New θߤ (KB) .br .di .nr c| \n(dn @@ -1985,7 +1970,7 @@ New 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の現在の容量 (KB) +Survivor ΰ 0 θߤ (KB) .br .di .nr d| \n(dn @@ -2001,7 +1986,7 @@ Survivor 領域 0 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の現在の容量 (KB) +Survivor ΰ 1 θߤ (KB) .br .di .nr e| \n(dn @@ -2017,7 +2002,7 @@ Survivor 領域 1 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の現在の容量 (KB) +Eden ΰθߤ (KB) .br .di .nr f| \n(dn @@ -2033,7 +2018,7 @@ Eden 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の最小容量 (KB) +Old κǾ (KB) .br .di .nr g| \n(dn @@ -2049,7 +2034,7 @@ Old 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の最大容量 (KB) +Old κ (KB) .br .di .nr h| \n(dn @@ -2065,7 +2050,7 @@ Old 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の現在の容量 (KB) +Old θߤ (KB) .br .di .nr i| \n(dn @@ -2081,7 +2066,7 @@ Old 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の現在の容量 (KB) +Old ΰθߤ (KB) .br .di .nr j| \n(dn @@ -2097,7 +2082,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の最小容量 (KB) +Permanent κǾ (KB) .br .di .nr k| \n(dn @@ -2113,7 +2098,7 @@ Permanent 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の最大容量 (KB) +Permanent κ (KB) .br .di .nr l| \n(dn @@ -2129,7 +2114,7 @@ Permanent 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の現在の容量 (KB) +Permanent θߤ (KB) .br .di .nr m| \n(dn @@ -2145,7 +2130,7 @@ Permanent 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の現在の容量 (KB) +Permanent ΰθߤ (KB) .br .di .nr n| \n(dn @@ -2161,7 +2146,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr o| \n(dn @@ -2172,9 +2157,9 @@ Permanent 領域の現在の容量 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wメモリープール世代および領域容量 +.nr 38 \w꡼ס太ΰ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -2211,9 +2196,9 @@ Permanent 領域の現在の容量 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -2257,7 +2242,7 @@ Permanent 領域の現在の容量 (KB) .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 493 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 478 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -2274,11 +2259,11 @@ Permanent 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'メモリープール世代および領域容量\h'|\n(41u' +\&\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 +\&\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 @@ -2522,7 +2507,7 @@ Permanent 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\h'|\n(40u'FGC\h'|\n(41u'ե GC ٥ȿ .fc .nr T. 1 .T# 1 @@ -2547,10 +2532,10 @@ Permanent 領域の現在の容量 (KB) .LP .SS -\-gccause オプション +\-gccause ץ .LP .LP -このオプションは、\f3\-gcutil\fP オプションと同じガベージコレクション統計データの概要を表示しますが、最後のガベージコレクションイベントと (適用可能な場合は) 現在のガベージコレクションイベントの原因が含まれます。\f3\-gcutil\fP で一覧表示される列の他に、このオプションでは次の列が追加されます。 +Υץϡ\f3\-gcutil\fP ץƱ١쥯ץǡγפɽޤǸΥ١쥯󥤥٥Ȥ (ŬѲǽʾ) ߤΥ١쥯󥤥٥Ȥθޤޤޤ\f3\-gcutil\fP ǰɽ¾ˡΥץǤϼɲäޤ .LP .LP .TS @@ -2581,7 +2566,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -最後のガベージコレクションの原因 +ǸΥ١쥯θ .br .di .nr a| \n(dn @@ -2597,7 +2582,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -現在のガベージコレクションの原因 +ߤΥ١쥯θ .br .di .nr b| \n(dn @@ -2608,9 +2593,9 @@ Permanent 領域の現在の容量 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wGC イベントを含むガベージコレクション統計データ +.nr 38 \wGC ٥Ȥޤ६١쥯ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -2619,7 +2604,7 @@ Permanent 領域の現在の容量 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -2637,7 +2622,7 @@ Permanent 領域の現在の容量 (KB) .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 516 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 501 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -2654,11 +2639,11 @@ Permanent 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'GC イベントを含むガベージコレクション統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -2702,7 +2687,7 @@ Permanent 領域の現在の容量 (KB) .LP .SS -\-gcnew オプション +\-gcnew ץ .LP .LP .TS @@ -2733,7 +2718,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の現在の容量 (KB) +Survivor ΰ 0 θߤ (KB) .br .di .nr a| \n(dn @@ -2749,7 +2734,7 @@ Survivor 領域 0 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の現在の容量 (KB) +Survivor ΰ 1 θߤ (KB) .br .di .nr b| \n(dn @@ -2765,7 +2750,7 @@ Survivor 領域 1 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の使用率 (KB) +Survivor ΰ 0 λΨ (KB) .br .di .nr c| \n(dn @@ -2781,7 +2766,7 @@ Survivor 領域 0 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の使用率 (KB) +Survivor ΰ 1 λΨ (KB) .br .di .nr d| \n(dn @@ -2797,7 +2782,7 @@ Survivor 領域 1 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -最大殿堂入りしきい値 +Ʋꤷ .br .di .nr e| \n(dn @@ -2813,7 +2798,7 @@ Survivor 領域 1 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -適切な Survivor サイズ (KB) +Ŭڤ Survivor (KB) .br .di .nr f| \n(dn @@ -2829,7 +2814,7 @@ Survivor 領域 1 の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の現在の容量 (KB) +Eden ΰθߤ (KB) .br .di .nr g| \n(dn @@ -2845,7 +2830,7 @@ Eden 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の使用率 (KB) +Eden ΰλΨ (KB) .br .di .nr h| \n(dn @@ -2861,7 +2846,7 @@ Eden 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr i| \n(dn @@ -2877,7 +2862,7 @@ Eden 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代のガベージコレクション時間 +㤤Υ١쥯 .br .di .nr j| \n(dn @@ -2888,9 +2873,9 @@ Eden 領域の使用率 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wNew 世代の統計データ +.nr 38 \wNew ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -2917,9 +2902,9 @@ Eden 領域の使用率 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w殿堂入りしきい値 +.nr 38 \wƲꤷ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -2953,7 +2938,7 @@ Eden 領域の使用率 (KB) .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 570 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 555 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -2970,11 +2955,11 @@ Eden 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'New 世代の統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -3042,7 +3027,7 @@ Eden 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'TT\h'|\n(41u'殿堂入りしきい値 +\&\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 @@ -3158,7 +3143,7 @@ Eden 領域の使用率 (KB) .LP .SS -\-gcnewcapacity オプション +\-gcnewcapacity ץ .LP .LP .TS @@ -3181,16 +3166,15 @@ Eden 領域の使用率 (KB) .rm 80 81 .nr 34 \n(.lu .eo -.am 80 +.am 81 .br .di a+ .35 .ft \n(.f .ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u +.if \n(.l<\n(81 .ll \n(81u .in 0 -NGCMN\ \ \ \ \ \ \ \ \ T}~T{ -New 世代の最小容量 (KB) +New κǾ (KB) .br .di .nr a| \n(dn @@ -3206,7 +3190,7 @@ New 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の最大容量 (KB) +New κ (KB) .br .di .nr b| \n(dn @@ -3222,7 +3206,7 @@ New 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -New 世代の現在の容量 (KB) +New θߤ (KB) .br .di .nr c| \n(dn @@ -3238,7 +3222,7 @@ New 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の最大容量 (KB) +Survivor ΰ 0 κ (KB) .br .di .nr d| \n(dn @@ -3254,7 +3238,7 @@ Survivor 領域 0 の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の現在の容量 (KB) +Survivor ΰ 0 θߤ (KB) .br .di .nr e| \n(dn @@ -3270,7 +3254,7 @@ Survivor 領域 0 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の最大容量 (KB) +Survivor ΰ 1 κ (KB) .br .di .nr f| \n(dn @@ -3286,7 +3270,7 @@ Survivor 領域 1 の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の現在の容量 (KB) +Survivor ΰ 1 θߤ (KB) .br .di .nr g| \n(dn @@ -3302,7 +3286,7 @@ Survivor 領域 1 の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の最大容量 (KB) +Eden ΰκ (KB) .br .di .nr h| \n(dn @@ -3318,7 +3302,7 @@ Eden 領域の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の現在の容量 (KB) +Eden ΰθߤ (KB) .br .di .nr i| \n(dn @@ -3334,7 +3318,7 @@ Eden 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr j| \n(dn @@ -3345,13 +3329,15 @@ Eden 領域の現在の容量 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wNew 世代領域サイズの統計データ +.nr 38 \wNew ΰ襵ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.nr 38 \w\f3\fP .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGCMX \ \ \ +.nr 38 \wNGCMN .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGC \ \ \ +.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 @@ -3371,15 +3357,15 @@ Eden 領域の現在の容量 (KB) .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\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.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- @@ -3408,7 +3394,7 @@ Eden 領域の現在の容量 (KB) .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 626 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 609 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -3425,21 +3411,21 @@ Eden 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'New 世代領域サイズの統計データ\h'|\n(41u' +\&\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 +\&\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'\h'|\n(41u' +\&\h'|\n(40u'NGCMN\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v -.nr 37 \n(40u +.nr 37 \n(41u .in +\n(37u .a+ .in -\n(37u @@ -3451,7 +3437,7 @@ Eden 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'NGCMX \ \ \\h'|\n(41u' +\&\h'|\n(40u'NGCMX\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -3467,7 +3453,7 @@ Eden 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'NGC \ \ \\h'|\n(41u' +\&\h'|\n(40u'NGC\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -3593,7 +3579,7 @@ Eden 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\h'|\n(40u'FGC\h'|\n(41u'ե GC ٥ȿ .fc .nr T. 1 .T# 1 @@ -3609,11 +3595,11 @@ Eden 領域の現在の容量 (KB) .rm i+ .rm j+ .TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-49 +.if \n-(b.=0 .nr c. \n(.c-\n(d.-47 .LP .SS -\-gcold オプション +\-gcold ץ .LP .LP .TS @@ -3644,7 +3630,7 @@ Eden 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の現在の容量 (KB) +Permanent ΰθߤ (KB) .br .di .nr a| \n(dn @@ -3660,7 +3646,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の使用率 (KB) +Permanent ΰλΨ (KB) .br .di .nr b| \n(dn @@ -3676,7 +3662,7 @@ Permanent 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の現在の容量 (KB) +Old ΰθߤ (KB) .br .di .nr c| \n(dn @@ -3692,7 +3678,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の使用率 (KB) +Old ΰλΨ (KB) .br .di .nr d| \n(dn @@ -3708,7 +3694,7 @@ Old 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr e| \n(dn @@ -3724,7 +3710,7 @@ Old 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -フルガベージコレクション時間 +ե륬١쥯 .br .di .nr f| \n(dn @@ -3740,7 +3726,7 @@ Old 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション総時間 +١쥯 .br .di .nr g| \n(dn @@ -3751,9 +3737,9 @@ Old 領域の使用率 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wOld および Permanent 世代の統計データ +.nr 38 \wOld Permanent ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -3774,9 +3760,9 @@ Old 領域の使用率 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -3804,7 +3790,7 @@ Old 領域の使用率 (KB) .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 668 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 651 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -3821,11 +3807,11 @@ Old 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'Old および Permanent 世代の統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -3909,7 +3895,7 @@ Old 領域の使用率 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\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 @@ -3958,7 +3944,7 @@ Old 領域の使用率 (KB) .LP .SS -\-gcoldcapacity オプション +\-gcoldcapacity ץ .LP .LP .TS @@ -3989,7 +3975,7 @@ Old 領域の使用率 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の最小容量 (KB) +Old κǾ (KB) .br .di .nr a| \n(dn @@ -4005,7 +3991,7 @@ Old 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の最大容量 (KB) +Old κ (KB) .br .di .nr b| \n(dn @@ -4021,7 +4007,7 @@ Old 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 世代の現在の容量 (KB) +Old θߤ (KB) .br .di .nr c| \n(dn @@ -4037,7 +4023,7 @@ Old 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の現在の容量 (KB) +Old ΰθߤ (KB) .br .di .nr d| \n(dn @@ -4053,7 +4039,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr e| \n(dn @@ -4069,7 +4055,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -フルガベージコレクション時間 +ե륬١쥯 .br .di .nr f| \n(dn @@ -4085,7 +4071,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション総時間 +١쥯 .br .di .nr g| \n(dn @@ -4096,9 +4082,9 @@ Old 領域の現在の容量 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wOld 世代の統計データ +.nr 38 \wOld ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -4119,9 +4105,9 @@ Old 領域の現在の容量 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -4149,7 +4135,7 @@ Old 領域の現在の容量 (KB) .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 710 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 693 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -4166,11 +4152,11 @@ Old 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'Old 世代の統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -4254,7 +4240,7 @@ Old 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\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 @@ -4303,7 +4289,7 @@ Old 領域の現在の容量 (KB) .LP .SS -\-gcpermcapacity オプション +\-gcpermcapacity ץ .LP .LP .TS @@ -4334,7 +4320,7 @@ Old 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の最小容量 (KB) +Permanent κǾ (KB) .br .di .nr a| \n(dn @@ -4350,7 +4336,7 @@ Permanent 世代の最小容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の最大容量 (KB) +Permanent κ (KB) .br .di .nr b| \n(dn @@ -4366,7 +4352,7 @@ Permanent 世代の最大容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 世代の現在の容量 (KB) +Permanent θߤ (KB) .br .di .nr c| \n(dn @@ -4382,7 +4368,7 @@ Permanent 世代の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の現在の容量 (KB) +Permanent ΰθߤ (KB) .br .di .nr d| \n(dn @@ -4398,7 +4384,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr e| \n(dn @@ -4414,7 +4400,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -フルガベージコレクション時間 +ե륬١쥯 .br .di .nr f| \n(dn @@ -4430,7 +4416,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション総時間 +١쥯 .br .di .nr g| \n(dn @@ -4441,9 +4427,9 @@ Permanent 領域の現在の容量 (KB) .nf .ll \n(34u .nr 80 0 -.nr 38 \wPermanent 世代の統計データ +.nr 38 \wPermanent ץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -4464,9 +4450,9 @@ Permanent 領域の現在の容量 (KB) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -4494,7 +4480,7 @@ Permanent 領域の現在の容量 (KB) .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 752 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 735 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -4511,11 +4497,11 @@ Permanent 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'Permanent 世代の統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -4599,7 +4585,7 @@ Permanent 領域の現在の容量 (KB) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\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 @@ -4648,7 +4634,7 @@ Permanent 領域の現在の容量 (KB) .LP .SS -\-gcutil オプション +\-gcutil ץ .LP .LP .TS @@ -4679,7 +4665,7 @@ Permanent 領域の現在の容量 (KB) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 0 の使用率 (現在の容量に対するパーセンテージ) +Survivor ΰ 0 λΨ (ߤ̤Фѡơ) .br .di .nr a| \n(dn @@ -4695,7 +4681,7 @@ Survivor 領域 0 の使用率 (現在の容量に対するパーセンテージ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Survivor 領域 1 の使用率 (現在の容量に対するパーセンテージ) +Survivor ΰ 1 λΨ (ߤ̤Фѡơ) .br .di .nr b| \n(dn @@ -4711,7 +4697,7 @@ Survivor 領域 1 の使用率 (現在の容量に対するパーセンテージ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Eden 領域の使用率 (現在の容量に対するパーセンテージ) +Eden ΰλΨ (ߤ̤Фѡơ) .br .di .nr c| \n(dn @@ -4727,7 +4713,7 @@ Eden 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Old 領域の使用率 (現在の容量に対するパーセンテージ) +Old ΰλΨ (ߤ̤Фѡơ) .br .di .nr d| \n(dn @@ -4743,7 +4729,7 @@ Old 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -Permanent 領域の使用率 (現在の容量に対するパーセンテージ) +Permanent ΰλΨ (ߤ̤Фѡơ) .br .di .nr e| \n(dn @@ -4759,7 +4745,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代の GC イベント数 +㤤 GC ٥ȿ .br .di .nr f| \n(dn @@ -4775,7 +4761,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -若い世代のガベージコレクション時間 +㤤Υ١쥯 .br .di .nr g| \n(dn @@ -4791,7 +4777,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -フルガベージコレクション時間 +ե륬١쥯 .br .di .nr h| \n(dn @@ -4807,7 +4793,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ガベージコレクション総時間 +١쥯 .br .di .nr i| \n(dn @@ -4818,9 +4804,9 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .nf .ll \n(34u .nr 80 0 -.nr 38 \wガベージコレクション統計データの概要 +.nr 38 \w١쥯ץǡγ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 @@ -4845,9 +4831,9 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 +.nr 38 \wե GC ٥ȿ .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -4879,7 +4865,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .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 802 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 785 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -4896,11 +4882,11 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'ガベージコレクション統計データの概要\h'|\n(41u' +\&\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 +\&\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 @@ -5016,7 +5002,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 +\&\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 @@ -5067,7 +5053,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .LP .SS -\-printcompilation オプション +\-printcompilation ץ .LP .LP .TS @@ -5098,7 +5084,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -実行されたコンパイルタスクの数 +¹Ԥ줿ѥ륿ο .br .di .nr a| \n(dn @@ -5114,7 +5100,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -メソッドのバイトコードのバイト数 +᥽åɤΥХȥɤΥХȿ .br .di .nr b| \n(dn @@ -5130,7 +5116,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -コンパイル方法を特定するクラス名とメソッド名。クラス名では、名前空間の区切り文字として、「.」ではなく「/」が使用される。メソッド名は、指定されたクラス内のメソッドである。これらの 2 つのフィールドの形式は、HotSpot \- \f3XX:+PrintComplation\fP オプションと対応している +ѥˡꤹ륯饹̾ȥ᥽å̾饹̾Ǥϡ֤̾ζڤʸȤơ.פˡ/פѤ롣᥽å̾ϡꤵ줿饹Υ᥽åɤǤ롣 2 ĤΥեɤηϡHotSpot \- \f3XX:+PrintComplation\fP ץбƤ .br .di .nr c| \n(dn @@ -5141,24 +5127,24 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .nf .ll \n(34u .nr 80 0 -.nr 38 \wHotSpot コンパイル方法の統計データ +.nr 38 \wHotSpot ѥˡץǡ .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP +.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 \wサイズ +.nr 38 \w .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w型 +.nr 38 \w .if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wメソッド +.nr 38 \w᥽å .if \n(80<\n(38 .nr 80 \n(38 .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wコンパイルタイプ +.nr 38 \wѥ륿 .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -5178,7 +5164,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .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 828 file Input is too wide - \n(TW units +.if t .if \n(TW>\n(.li .tm Table at line 811 file Input is too wide - \n(TW units .fc   .nr #T 0-1 .nr #a 0-1 @@ -5195,11 +5181,11 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'HotSpot コンパイル方法の統計データ\h'|\n(41u' +\&\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 +\&\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 @@ -5221,7 +5207,7 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'サイズ\h'|\n(41u' +\&\h'|\n(40u'\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -5235,13 +5221,13 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'型\h'|\n(41u'コンパイルタイプ +\&\h'|\n(40u'\h'|\n(41u'ѥ륿 .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'メソッド\h'|\n(41u' +\&\h'|\n(40u'᥽å\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v @@ -5263,19 +5249,16 @@ Permanent 領域の使用率 (現在の容量に対するパーセンテージ) .if \n-(b.=0 .nr c. \n(.c-\n(d.-19 .LP -.SS - +.SH "" .LP -.SH "" .LP -.LP -この項では、21891 の \f2lvmid\fP を持つローカル JVM を監視する例を示します。 +ιǤϡ21891 \f2lvmid\fP ĥ JVM ƻ뤹򼨤ޤ .LP .SS -gcutil オプションの使用 +gcutil ץλ .LP .LP -この例は、\f2lvmid\fP 21891 に接続して、250 ミリ秒間隔で 7 つのサンプルを取得し、\f3\-gcutil\fP オプションでの指定に従って出力を表示します。 +ϡ\f2lvmid\fP 21891 ³ơ250 ߥôֳ֤ 7 ĤΥץ\f3\-gcutil\fP ץǤλ˽äƽϤɽޤ .LP .nf \f3 @@ -5320,13 +5303,13 @@ gcutil オプションの使用 .LP .LP -この例の出力は、若い世代のコレクションが 3 番目と 4 番目のサンプル間で行われたことを示しています。コレクションには 0.001 秒かかっており、オブジェクトが Eden 領域 (E) から Old 領域 (O) に昇格したため、Old 領域の使用率は 9.49% から 9.51% に増加しています。Survivor 領域は、コレクション前は 12.44% が使用されていましたが、コレクション後は 7.74% しか使用されていません。 +νϤϡ㤤Υ쥯 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 行表示されるごとに列ヘッダーを出力します。 +ϡ\f2lvmid\fP 21891 ³ơ250 ߥôֳ֤ǥץ\f3\-gcutil\fP ץǤλ˽äƽϤɽޤˡ\f3\-h3\fP ץѤơǡ 3 ɽ뤴ȤإåϤޤ .LP .nf \f3 @@ -5379,16 +5362,16 @@ gcutil オプションの使用 .LP .LP -この例では、ヘッダー文字列の繰り返しが見られるほかにも、2 番目と 3 番目のサンプル間で Young GC が行われたことがわかります。この継続時間は 0.001 秒でした。このコレクションでは、Survivor 領域 0 の使用率 (S0U) が適切な Survivor サイズ (DSS) を超過することになるライブデータが検出されました。この結果、オブジェクトは、Old 世代 (この出力には非表示) へ昇格され、殿堂入りしきい値 (TT) が、31 から 2 へ降格されました。 +Ǥϡإåʸη֤ۤˤ⡢2 ܤ 3 ܤΥץ֤ Young GC Ԥ줿Ȥ狼ޤη³֤ 0.001 äǤΥ쥯ǤϡSurvivor ΰ 0 λΨ (S0U) Ŭڤ Survivor (DSS) Ķ᤹뤳Ȥˤʤ饤֥ǡФޤη̡֥ȤϡOld (νϤˤɽ) ؾʤ졢Ʋꤷ (TT) 31 2 ع߳ʤޤ .LP .LP -別のコレクションが、5 番目と 6 番目のサンプル間で行われています。このコレクションでは、Survivor がほとんど見られず、殿堂入りしきい値を 31 に戻しました。 +̤Υ쥯󤬡5 ܤ 6 ܤΥץ֤ǹԤƤޤΥ쥯ǤϡSurvivor ۤȤɸ줺Ʋꤷͤ 31 ᤷޤ .LP .SS -サンプルごとのタイムスタンプの挿入 +ץ뤴ȤΥॹפ .LP .LP -この例は、\f2lvmid\fP 21891 へ接続し、250 ミリ秒間隔で 3 つのサンプルを取得しています。\f3\-t\fP オプションを使用して、最初の列にサンプルごとのタイムスタンプを表示しています。 +ϡ\f2lvmid\fP 21891 ³250 ߥôֳ֤ 3 ĤΥץƤޤ\f3\-t\fP ץѤơǽ˥ץ뤴ȤΥॹפɽƤޤ .LP .nf \f3 @@ -5417,13 +5400,13 @@ Timestamp OGCMN OGCMX OGC OC YGC FGC .LP .LP -\f2Timestamp\fP 列には、ターゲット JVM の起動時からの経過時間が、秒単位でレポートされています。さらに、\f3\-gcoldcapacity\fP 出力では、割り当て要求または昇格要求あるいはその両方を満たすためにヒープが拡張するごとに、Old 世代の容量 (OGC) と Old 領域の容量 (OC) とが増加していることがわかります。Old 世代の容量 (OGC) は、81 番目のフル GC (FGC) 後に、11696 KB から 13820 KB へ増加しています。Old 世代 (および領域) の最大容量は、60544 KB (OGCMX) なので、まだ拡張できる余裕が残されています。 +\f2Timestamp\fP ˤϡå JVM εưηв֤ñ̤ǥݡȤƤޤˡ\f3\-gcoldcapacity\fP ϤǤϡ׵ޤϾ׵ᤢ뤤Ϥξ˥ҡפĥ뤴ȤˡOld (OGC) Old ΰ (OC) ȤäƤ뤳Ȥ狼ޤOld (OGC) ϡ81 ܤΥե GC (FGC) ˡ11696 KB 13820 KB äƤޤOld (ΰ) κ̤ϡ60544 KB (OGCMX) ʤΤǡޤĥǤ;͵ĤƤޤ .LP .SS -リモート JVM のインストゥルメンテーションの監視 +⡼ JVM Υ󥹥ȥơδƻ .LP .LP -この例は、\f3\-gcutil\fP オプションを使用して、\f2remote.domain\fP というシステム上の \f2lvmid\fP 40496 に接続し、サンプルを秒単位で無期限に取得しています。 +ϡ\f3\-gcutil\fP ץѤơ\f2remote.domain\fP Ȥƥ \f2lvmid\fP 40496 ³ץñ̵̤¤˼Ƥޤ .LP .nf \f3 @@ -5440,24 +5423,23 @@ Timestamp OGCMN OGCMX OGC OC YGC FGC .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 に配置されれます。 +\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 -.RE -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o -「java(1) \- Java アプリケーション起動ツール」 +java(1) \- Java ץꥱưġ .TP 2 o -「jps(1) \- Java 仮想マシンプロセスステータスツール」 +jps(1) \- Java ۥޥץơġ .TP 2 o -「jstatd(1) \- 仮想マシン jstat デーモン」 +jstatd(1) \- ۥޥ jstat ǡ .TP 2 o -「rmiregistry(1) \- Java リモートオブジェクトレジストリ」 +rmiregistry(1) \- Java ⡼ȥ֥ȥ쥸ȥ .RE .LP diff --git a/src/solaris/doc/sun/man/man1/ja/jstatd.1 b/src/solaris/doc/sun/man/man1/ja/jstatd.1 index 4aca5a7fe63b030bf3ad37cfaaea9a7830d3616e..af3fc39b9db6e747f9f2dc98de1eff92870d6962 100644 --- a/src/solaris/doc/sun/man/man1/ja/jstatd.1 +++ b/src/solaris/doc/sun/man/man1/ja/jstatd.1 @@ -19,43 +19,41 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH jstatd 1 "02 Jun 2010" +.TH jstatd 1 "14 Apr 2011" .LP -.SH "名前" -jstatd \- 仮想マシン jstat デーモン +.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 - +.SH "" .LP .nf \f3 @@ -68,72 +66,64 @@ jstatd [ \fP\f4options\fP\f3 ]\fP .fi .LP -.SH "パラメータ" -.LP - +.SH "ѥ᡼" .LP .RS 3 .TP 3 options -コマンド行オプション。オプションは任意の順序で指定できます。重複または矛盾するオプションがある場合、最後に指定したオプションが優先されます。 +ޥɹԥץ󡣥ץǤդνǻǤޤʣޤ̷⤹륪ץ󤬤硢Ǹ˻ꤷץͥ褵ޤ .RE .LP -.SH " 説明" -.LP - -.LP +.SH " " .LP -\f3jstatd\fP ツールは、計測された HotSpot Java 仮想マシン (JVM) の作成と終了を監視し、ローカルシステム上で実行している Java 仮想マシンに、リモート監視ツールが接続できるようにするためのインタフェースを提供する RMI サーバーアプリケーションです。 .LP +\f3jstatd\fP ġϡ¬줿 HotSpot Java ۥޥ (JVM) κȽλƻ뤷륷ƥǼ¹ԤƤ Java ۥޥˡ⡼ȴƻġ뤬³Ǥ褦ˤ뤿Υ󥿥ե󶡤 RMI СץꥱǤ .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 +\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 -\f3注:\fP このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 .LP -.SH "オプション" +\f3:\fP Υ桼ƥƥϥݡоݳǤꡢ JDK ΥСǤѤǤʤʤǽޤߡWindows 98 Windows Me ץåȥեǤϻѤǤޤ .LP - +.SH "ץ" .LP .LP -\f3jstatd\fP コマンドは次のオプションをサポートしています。 +\f3jstatd\fP ޥɤϼΥץ򥵥ݡȤƤޤ .LP .RS 3 .TP 3 \-nr -既存の RMI レジストリが見つからない場合、\f2jstatd\fP プロセス内に内部 RMI レジストリを作成しないようにします。 +¸ RMI 쥸ȥ꤬Ĥʤ硢\f2jstatd\fP ץ RMI 쥸ȥʤ褦ˤޤ .TP 3 \-p\ port -RMI レジストリがあると予想されるポート番号です。 見つからない場合は、\f2\-nr\fP が指定されていなければ作成されます。 +RMI 쥸ȥ꤬ͽۤݡֹǤ Ĥʤϡ\f2\-nr\fP ꤵƤʤкޤ .TP 3 \-n\ rminame -RMI レジストリにおいて、リモート RMI オブジェクトがバインドされる名前です。デフォルト名は \f2JStatRemoteHost\fP です。複数の \f3jstatd\fP サーバーが同じホスト上で起動している場合、各サーバーのエクスポートした RMI オブジェクトの名前は、このオプションを指定することによって、一意の名前にすることができます。ただし、このオプションを使用する場合、監視クライアントの \f2hostid\fP および \f2vmid\fP 文字列に、その一意のサーバー名を含める必要があります。 +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 にオプション渡すことは、よく行われています。 +\f3javac\fP ƤӽФ \f3java\fP ưġˡ\f2option\fP ϤޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ\f3\-J\fP ȤäơJava ǵҤ줿ץꥱ¹Ԥظ VM ˥ץϤȤϡ褯ԤƤޤ .RE .LP -.SH "セキュリティー" -.LP - +.SH "ƥ" .LP .LP -\f3jstatd\fP サーバーは、有効なネイティブアクセス権を持つ JVM だけを監視できます。したがって、\f3jstatd\fP プロセスは、ターゲット JVM と同じユーザー資格で実行している必要があります。一部のユーザー資格は、Unix(TM) ベースのシステムにおける \f2root\fP ユーザーのように、システム上の任意の JVM によってエクスポートされたインストゥルメンテーションへのアクセス権を持っています。このような資格で実行している \f3jstatd\fP プロセスは、システム上のすべての JVM を監視できますが、セキュリティー上の別の問題が起こります。 +\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 プロセスを起動する前に、ローカルセキュリティーポリシーを検討する必要があります。 +\f3jstatd\fP Сϡ⡼ȥ饤ȤǧڤͿޤ󡣤Τᡢ\f3jstatd\fP Сץ¹Ԥȡ\f3jstatd\fP ץĤ٤Ƥ JVM ˤ륤󥹥ȥơΥݡȤ򡢥ͥåȥΤ٤ƤΥ桼˸뤳Ȥˤʤޤ̵ʾ֤ϡĶŪ˾ޤʤ礬ޤ ä˼²ƯĶޤϰǤʤͥåȥǤϡ\f3jstatd\fP ץưˡ륻ƥݥꥷƤɬפޤ .LP .LP -\f3jstatd\fP サーバーは、他のセキュリティーマネージャーがインストールされていない場合には、RMISecurityPolicy のインスタンスをインストールします。 そのため、セキュリティーポリシーファイルを指定する必要があります。ポリシーファイルは、デフォルトポリシー実装の +\f3jstatd\fP Сϡ¾Υƥޥ͡㡼󥹥ȡ뤵ƤʤˤϡRMISecurityPolicy Υ󥹥󥹤򥤥󥹥ȡ뤷ޤ Τᡢƥݥꥷեꤹɬפޤݥꥷեϡǥեȥݥꥷ .na -\f2ポリシーファイルの構文\fP @ +\f2ݥꥷեιʸ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyFiles.htmlに準拠する必要があります。 +http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyFiles.html˽򤹤ɬפޤ .LP .LP -次のポリシーファイルの場合、\f3jstatd\fP サーバーは一切のセキュリティー例外を使用せずに実行できます。このポリシーは、すべてのコードベースへのあらゆるアクセス権を認めるポリシーよりも自由度は低いですが、\f3jstatd\fP サーバーを実行するために最低限必要なアクセス権しか認めないポリシーよりも自由度は高くなっています。 +Υݥꥷեξ硢\f3jstatd\fP СϰڤΥƥ㳰Ѥ˼¹ԤǤޤΥݥꥷϡ٤ƤΥɥ١ؤΤ륢ǧݥꥷ⼫ͳ٤㤤Ǥ\f3jstatd\fP С¹Ԥ뤿˺ɬפʥǧʤݥꥷ⼫ͳ٤Ϲ⤯ʤäƤޤ .LP .nf \f3 @@ -155,7 +145,7 @@ grant codebase "file:${java.home}/../lib/tools.jar" {\fP .LP .LP -このポリシーを使用するには、このテキストを \f2jstatd.all.policy\fP というファイルにコピーし、次のように \f3jstatd\fP サーバーを実行します。 +ΥݥꥷѤˤϡΥƥȤ \f2jstatd.all.policy\fP Ȥե˥ԡΤ褦 \f3jstatd\fP С¹Ԥޤ .LP .nf \f3 @@ -169,27 +159,23 @@ jstatd \-J\-Djava.security.policy=jstatd.all.policy\fP .LP .LP -より厳しいセキュリティーを実施するサイトの場合、カスタムポリシーファイルを使用して、特定の信頼できるホストまたはネットワークにアクセスを制限することができます。 ただし、このような方法は、IP アドレスの盗聴攻撃を受けやすくなります。セキュリティーの問題について、カスタマイズしたポリシーファイルでも対処できない場合は、\f3jstatd\fP サーバーを実行せずに、\f3jstat\fP と \f3jps\fP ツールをローカルで使用することがもっとも安全な方法になります。 +긷ƥ»ܤ륵Ȥξ硢ݥꥷեѤơοǤۥȤޤϥͥåȥ˥¤뤳ȤǤޤ Τ褦ˡϡIP ɥ쥹İ䤹ʤޤƥˤĤơޥݥꥷեǤнǤʤϡ\f3jstatd\fP С¹Ԥˡ\f3jstat\fP \f3jps\fP ġǻѤ뤳ȤäȤˡˤʤޤ .LP -.SH "リモートインタフェース" +.SH "⡼ȥ󥿥ե" .LP - .LP +\f3jstatd\fP ץݡȤ륤󥿥եϡȼ˳ȯΤǤѹͽǤ桼ӳȯԤϡΥ󥿥եؤν񤭹ߤԤʤǤ .LP -\f3jstatd\fP プロセスがエクスポートするインタフェースは、独自に開発したものであり変更される予定です。ユーザーおよび開発者は、このインタフェースへの書き込みを行わないでください。 -.LP -.SH "例" -.LP - +.SH "" .LP .LP -次に \f3jstatd\fP を起動する例を紹介します。\f3jstatd\fP スクリプトによって、サーバーはバックグラウンドで自動的に起動します。 + \f3jstatd\fP ưҲ𤷤ޤ\f3jstatd\fP ץȤˤäơСϥХå饦ɤǼưŪ˵ưޤ .LP .SS -内部 RMI レジストリの使用 + RMI 쥸ȥλ .LP .LP -この例は、内部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。この例では、デフォルトの RMI レジストリポート (ポート 1099) には、他のサーバーはバインドされていないと想定しています。 +ϡ RMI 쥸ȥѤ \f3jstatd\fP εưɽƤޤǤϡǥեȤ RMI 쥸ȥݡ (ݡ 1099) ˤϡ¾ΥСϥХɤƤʤꤷƤޤ .LP .nf \f3 @@ -201,10 +187,10 @@ jstatd \-J\-Djava.security.policy=all.policy .LP .SS -外部 RMI レジストリの使用 + RMI 쥸ȥλ .LP .LP -この例は、外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 +ϡ RMI 쥸ȥѤ \f3jstatd\fP εưɽƤޤ .LP .nf \f3 @@ -218,7 +204,7 @@ jstatd \-J\-Djava.security.policy=all.policy .LP .LP -この例は、ポート 2020 の外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 +ϡݡ 2020 γ RMI 쥸ȥѤ \f3jstatd\fP εưɽƤޤ .LP .nf \f3 @@ -232,7 +218,7 @@ jstatd \-J\-Djava.security.policy=all.policy \-p 2020 .LP .LP -この例は、AlternateJstatdServerName の名前にバインドされた、ポート 2020 の外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 +ϡAlternateJstatdServerName ̾˥Хɤ줿ݡ 2020 γ RMI 쥸ȥѤ \f3jstatd\fP εưɽƤޤ .LP .nf \f3 @@ -246,10 +232,10 @@ jstatd \-J\-Djava.security.policy=all.policy \-p 2020 \-n AlternateJstatdServerN .LP .SS -インプロセス RMI レジストリの作成の禁止 +ץ RMI 쥸ȥκζػ .LP .LP -この例は、RMI レジストリが見つからない場合に RMI レジストリを作成しない \f3jstatd\fP の起動を表しています。この例では、RMI レジストリがすでに実行していると想定しています。実行していない場合は、該当するエラーメッセージが表示されます。 +ϡRMI 쥸ȥ꤬Ĥʤ RMI 쥸ȥʤ \f3jstatd\fP εưɽƤޤǤϡRMI 쥸ȥ꤬Ǥ˼¹ԤƤꤷƤޤ¹ԤƤʤϡ륨顼åɽޤ .LP .nf \f3 @@ -261,10 +247,10 @@ jstatd \-J\-Djava.security.policy=all.policy \-nr .LP .SS -RMI ログ機能の有効化 +RMI ǽͭ .LP .LP -この例は、RMI ログ機能を有効にした \f3jstatd\fP の起動を表しています。この方法は、トラブルシューティングまたはサーバー活動の監視に役立ちます。 +ϡRMI ǽͭˤ \f3jstatd\fP εưɽƤޤˡϡȥ֥륷塼ƥ󥰤ޤϥСưδƻΩޤ .LP .nf \f3 @@ -275,25 +261,25 @@ jstatd \-J\-Djava.security.policy=all.policy \-J\-Djava.rmi.server.logCalls=true .fi .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o -「java(1) \- Java アプリケーション起動ツール」 +java(1) \- Java ץꥱưġ .TP 2 o -「jps(1) \- Java 仮想マシンプロセスステータスツール」 +jps(1) \- Java ۥޥץơġ .TP 2 o -「jstat(1) \- Java 仮想マシン統計データ監視ツール」 +jstat(1) \- Java ۥޥץǡƻġ .TP 2 o -「 + .na \f2rmiregistry\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi \- Java リモートオブジェクトレジストリ」 +http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi \- Java ⡼ȥ֥ȥ쥸ȥ .RE .LP diff --git a/src/solaris/doc/sun/man/man1/ja/jvisualvm.1 b/src/solaris/doc/sun/man/man1/ja/jvisualvm.1 new file mode 100644 index 0000000000000000000000000000000000000000..f31c622f479523f2a16834e8b60bdc61b78ea7c3 --- /dev/null +++ b/src/solaris/doc/sun/man/man1/ja/jvisualvm.1 @@ -0,0 +1,126 @@ +." Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. +." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +." +." This code is free software; you can redistribute it and/or modify it +." under the terms of the GNU General Public License version 2 only, as +." published by the Free Software Foundation. +." +." This code is distributed in the hope that it will be useful, but WITHOUT +." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +." version 2 for more details (a copy is included in the LICENSE file that +." accompanied this code). +." +." You should have received a copy of the GNU General Public License version +." 2 along with this work; if not, write to the Free Software Foundation, +." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +." +." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +." or visit www.oracle.com if you need additional information or have any +." questions. +." +.TH jvisualvm 1 "14 Apr 2011" + +.LP +.SH "̾" +\f2jvisualvm\fP \- Java ۥޥδƻ롢ȥ֥륷塼ƥ󥰡ӥץե󥰥ġ +.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 +.nf +\f3 +.fl + \fP\f3jvisualvm\fP [ \f2options\fP ] +.fl +.fi + +.LP +.SH "ѥ᡼" +.LP +.LP +ץѤ硢ޥ̾ľ˵ҤƤץλ˷ޤϤޤΥץŬѤѥ᡼ˤĤƤϡΤȤΡ֥ץפ򻲾ȤƤ +.LP +.SH " " +.LP +.LP +Java VisualVM ϡꤵ줿 Java ۥޥ (JVM(*)) Java ƥΥ١Υץꥱ (Java ץꥱ) ¹ԤƤȤˡ Java ץꥱ˴ؤܺ٤ʾ󶡤ľŪʥե桼󥿥եǤJava VisualVM Ȥ̾ϡJava VisualVM JVM եȥ˴ؤֻŪˡ󶡤Ȥ¤ͳ褷Ƥޤ +.LP +.LP +Java VisualVM ϡĤδƻ롢ȥ֥륷塼ƥ󥰡ӥץե󥰥桼ƥƥ 1 ĤΥġ礷ޤȤСɥġ \f2jmap\fP \f2jinfo\fP \f2jstat\fP \f2jstack\fP 󶡤Ƥ뵡ǽΤۤȤɤJava VisualVM Ȥ߹ޤƤޤJConsole ġˤä󶡤εǽʤɡۤεǽϥץΥץ饰ȤɲäǤޤ +.LP +.SH "ץ" +.LP +.LP +ΥץϡJava VisualVM ưȤ˼¹Բǽˤʤޤ +.LP +.RS 3 +.TP 3 +\-J<jvm_option>\ + \f2<jvm_option>\fP JVM եȥϤޤ +.RE + +.LP +.SH "ˡ" +.LP +.LP +Java VisualVM ϡJava ץꥱγȯԤץꥱΥȥ֥륷塼ƥ󥰤ԤʤäꡢץꥱΥѥեޥ󥹤ƻ뤪ӲꤹΤΩޤJava VisualVM ѤȡȯԤϥҡץפӲϡ꡼꡼ꡢ١쥯μ¹ԤӴƻ롢ӥ꡼ CPU δʰץץե󥰤μ¹ԤǽˤʤޤJava VisualVM εǽĥץ饰⤤ĤޤȤСJConsole ġΤۤȤɤεǽϡMBeans ֤ JConsole Plug\-in Wrapper ץ饰𤷤ƻѤǤޤɸ Java VisualVM ץ饰Υ򤹤ˤϡJava VisualVM ˥塼Ρ֥ġ>֥ץ饰פ򤷤ޤ +.LP +.LP +Java VisualVM ưˤϡΥޥɤ¹Ԥޤ +.LP +.nf +\f3 +.fl +% jvisualvm \fP\f4<options>\fP\f3 +.fl +\fP +.fi + +.LP +.SH "Ϣ" +.LP +.LP +Java VisualVM ξܺ٤ϡΥڡ򻲾ȤƤ +.LP +.RS 3 +.TP 2 +o +.na +\f2Java VisualVM ȯԤΥ\fP @ +.fi +https://visualvm.dev.java.net +.TP 2 +o +.na +\f2Java SE ץåȥեǤ Java VisualVM Υɥ\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/visualvm/index.html +.RE + +.LP +.LP +\f2(* Java ۥޥפȡJVMפȤѸϡJava ץåȥեβۥޥ̣Ƥޤ)\fP +.LP + diff --git a/src/solaris/doc/sun/man/man1/ja/keytool.1 b/src/solaris/doc/sun/man/man1/ja/keytool.1 index 6ee2f26e028fce0759598f6cee7499f4f3a181c2..e9701dd73adc9cdf0d92f04c1ffe51d1c3f5f204 100644 --- a/src/solaris/doc/sun/man/man1/ja/keytool.1 +++ b/src/solaris/doc/sun/man/man1/ja/keytool.1 @@ -1,4 +1,4 @@ -." Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1998-2010 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,20 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH keytool 1 "02 Jun 2010" +.TH keytool 1 "14 Apr 2011" .LP -.SH "名前" -keytool \- 鍵と証明書の管理ツール +.SH "̾" +keytool \- Ⱦδġ .LP -.RS 3 - .LP -暗号化鍵、X.509 証明書チェーン、および信頼できる証明書を含むキーストア (データベース) を管理します。 -.RE -.SH "形式" +Ź沽X.509 󡢤ӿǤޤ७ȥ (ǡ١) ޤ .LP - +.SH "" .LP .nf \f3 @@ -43,48 +39,44 @@ keytool \- 鍵と証明書の管理ツール .LP .LP -Java SE 6 で keytool のコマンドインタフェースが変更されました。 詳細については「変更点」の節を参照してください。以前に定義されたコマンドも引き続きサポートされています。 +Java SE 6 keytool Υޥɥ󥿥եѹޤܺ٤ˤĤƤϡѹפ򻲾ȤƤ줿ޥɤ³ݡȤƤޤ .LP -.SH "説明" +.SH "" .LP - -.LP -\f3keytool\fP は、鍵と証明書を管理するためのユーティリティーです。keytool を使うと、自分の公開鍵と非公開鍵のペア、および関連する証明書を管理し、デジタル署名を使った自己認証 (ほかのユーザーまたはサービスに対して自分自身を認証すること) や、データの整合性と証明書に関するサービスを利用することができます。keytool では、通信相手の公開鍵を (証明書の形で) キャッシュすることもできます。 +\f3keytool\fP ϡȾ뤿Υ桼ƥƥǤkeytool ȤȡʬθΥڥӴϢǥ̾Ȥäǧ (ۤΥ桼ޤϥӥФƼʬȤǧڤ뤳) 䡢ǡȾ˴ؤ륵ӥѤ뤳ȤǤޤkeytool Ǥϡ̿θ (η) å夹뤳ȤǤޤ .LP -「証明書」とは、あるエンティティー (人物、会社など) からのデジタル署名付きの文書のことです。 証明書には、ほかのあるエンティティーの公開鍵 (およびその他の情報) が特別な値を持っていることが書かれています(「証明書」を参照)。データにデジタル署名が付いている場合は、デジタル署名を検証することで、データの整合性およびデータが本物であることをチェックできます。データの「整合性」とは、データが変更されたり、改変されたりしていないことを意味します。 また、データが「本物である」とは、そのデータが、データを作成して署名したと称する人物から実際に渡されたデータであることを意味します。 +־פȤϡ륨ƥƥ (ʪҤʤ) Υǥ̾դʸΤȤǤˤϡۤΤ륨ƥƥθ (Ӥ¾ξ) ̤ͤäƤ뤳Ȥ񤫤Ƥޤ(־פ򻲾)ǡ˥ǥ̾դƤϡǥ̾򸡾ڤ뤳ȤǡǡӥǡʪǤ뤳ȤåǤޤǡΡפȤϡǡѹ줿ꡢѤ줿ꤷƤʤȤ̣ޤ ޤǡʪǤפȤϡΥǡǡƽ̾ȾΤʪºݤϤ줿ǡǤ뤳Ȥ̣ޤ .LP .LP -また、\f3keytool\fP を使えば、DES などの対称暗号化/復号化で使用される秘密鍵を管理することもできます。 +ޤ\f3keytool\fP ȤСDES ʤɤоΰŹ沽/沽ǻѤ̩뤳ȤǤޤ .LP .LP -\f3keytool\fP は、鍵と証明書を\f2「キーストア」\fPに格納します。 +\f3keytool\fP ϡȾ\f2֥ȥ\fP˳Ǽޤ .LP -.SH "コマンドとオプションに関する注" -.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 オプションを囲むのにも使われるが、これらのオプションはコマンド行で指定された場合にのみ意味を持つ (つまり、これらのオプションには、オプション自体を指定しないこと以外に「デフォルト値」は存在しない) +ץϤ̤ϡ̤ˡΥץ򥳥ޥɹԤǻꤷʤäˡǥեͤȤ뤳Ȥ̣롣̤ϡ \f2\-v\fP \f2\-rfc\fP \f2\-J\fP ץϤΤˤȤ뤬ΥץϥޥɹԤǻꤵ줿ˤΤ̣߰ (ĤޤꡢΥץˤϡץΤꤷʤȰʳˡ֥ǥե͡פ¸ߤʤ) .TP 2 o -オプションを囲む角括弧は、そのオプションをコマンド行で指定しなかった場合に、値の入力を求められることを意味する。ただし、\f2\-keypass\fP オプションをコマンド行で指定しなかった場合は、\f3keytool\fP がキーストアのパスワードから非公開/秘密鍵の復元を試みる。 ユーザーは、この試みが失敗した場合に非公開/秘密鍵の入力を求められる +ץϤѳ̤ϡΥץ򥳥ޥɹԤǻꤷʤäˡͤϤ뤳Ȥ̣롣( \f2\-keypass\fP ץξ硢ץ򥳥ޥɹԤǻꤷʤäϡ\f3keytool\fP ޤȥΥѥɤ/̩ߤ롣 桼ϡλߤԤ/̩ΥѥɤϤ .TP 2 o -イタリック体の項目の実際の値 (オプションの値) は、ユーザーが指定する必要がある。たとえば、\f2\-printcert\fP コマンドの形式は次のとおりである +åΤιܤμºݤ (ץ) ϡ桼ꤹɬפ뤿ȤС \f2\-printcert\fP ޥɤηϼΤȤǤ .nf \f3 .fl @@ -93,7 +85,7 @@ o \fP .fi .LP -\f2\-printcert\fP コマンドを指定するときは、\f2cert_file\fP の代わりに実際のファイル名を指定する。次に例を示す +\f2\-printcert\fP ޥɤꤹȤϡ\f2cert_file\fP ˼ºݤΥե̾ꤹ롣򼨤 .nf \f3 .fl @@ -103,10 +95,10 @@ o .fi .TP 2 o -オプションの値に空白 (スペース) が含まれている場合は、値を引用符で囲む必要がある +ץͤ˶ (ڡ) ޤޤƤϡͤǰϤɬפ .TP 2 o -\f2\-help\fP コマンドはデフォルトのコマンドである。たとえば、次のようにコマンド行を指定したとする +\f2\-help\fP ޥɤϥǥեȤΥޥɤǤ롣ȤСΤ褦˥ޥɹԤꤷȤ .nf \f3 .fl @@ -114,7 +106,8 @@ o .fl \fP .fi -これは、次のように指定することと同じである +.LP +ϡΤ褦˻ꤹ뤳ȤƱǤ .nf \f3 .fl @@ -126,12 +119,11 @@ o .LP .SS -オプションのデフォルト値 +ץΥǥե .LP -.RS 3 - .LP -オプションのデフォルト値は、次のとおりです。 +ץΥǥեͤϡΤȤǤ +.LP .nf \f3 .fl @@ -141,19 +133,25 @@ o .fl \-keyalg .fl - "DSA" (\fP\f3\-genkeypair\fP\f3 を使用している場合) + "DSA" (\fP\f3\-genkeypair\fP\f3 ѤƤ) .fl - "DES" (\fP\f3\-genseckey\fP\f3 を使用している場合) + "DES" (\fP\f3\-genseckey\fP\f3 ѤƤ) .fl .fl \-keysize .fl - 1024 (\fP\f3\-genkeypair\fP\f3 を使用している場合) + 2048 (\fP\f3\-genkeypair\fP\f3 ѤƤ \-keyalg "RSA" ξ) .fl - 56 (\fP\f3\-genseckey\fP\f3 を使用していて \-keyalg が "DES" の場合) + 1024 (\fP\f3\-genkeypair\fP\f3 ѤƤ \-keyalg "DSA" ξ) .fl - 168 (\fP\f3\-genseckey\fP\f3 を使用していて \-keyalg が "DESede" の場合) + 256 (\fP\f3\-genkeypair\fP\f3 ѤƤ \-keyalg "EC" ξ) +.fl + 56 (\fP\f3\-genseckey\fP\f3 ѤƤ \-keyalg "DES" ξ) +.fl + 168 (\fP\f3\-genseckey\fP\f3 ѤƤ \-keyalg "DESede" ξ) +.fl + .fl .fl @@ -161,320 +159,933 @@ o .fl .fl -\-keystore \fP\f4ユーザーのホームディレクトリの \fP\f4.keystore\fP\f3 というファイル\fP\f3 +\-keystore 桼Υۡǥ쥯ȥ \fP\f4.keystore\fP\f3 Ȥե .fl .fl -\-storetype \fP\f4セキュリティープロパティーファイルの「keystore.type」プロパティーの値で、 +\-storetype ƥץѥƥեΡkeystore.typeץץѥƥͤǡ .fl - \fP\f4java.security.KeyStore\fP\f3 の静的な \fP\f4getDefaultType\fP\f3 メソッドから返される\fP\f3 + java.security.KeyStore Ū getDefaultType ᥽åɤ֤ \fP\f4 \fP\f3 +.fl + \fP\f4 \fP\f3 .fl .fl -\-file \fP\f4読み込みの場合は標準入力、書き込みの場合は標準出力\fP\f3 +\-file ɤ߹ߤξɸϡ񤭹ߤξɸ .fl .fl \-protected false -.fl - .fl \fP .fi .LP -公開/非公開鍵ペアの生成において、署名アルゴリズム (\f2\-sigalg\fP オプション) は、基になる非公開鍵のアルゴリズムから派生します。基になる非公開鍵が DSA タイプである場合、\f2\-sigalg\fP オプションのデフォルト値は SHA1withDSA になり、基になる非公開鍵が RSA タイプである場合は、\f2\-sigalg\fP オプションのデフォルト値は MD5withRSA になります。選択可能な \f2\-keyalg\fP および \f2\-sigalg\fP の完全な一覧については、 +.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 -\f2「Java Cryptography Architecture API Specification & Reference」\fP @ +\f2Java Cryptography Architecture API Specification & Reference\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。 -.RE +http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA򻲾ȤƤ +.LP .SS -一般オプション +̥ץ .LP -.RS 3 - .LP -\f2\-v\fP オプションは、\f2\-help\fP コマンドを除くすべてのコマンドで使用できます。このオプションを指定した場合、コマンドは「冗長」モードで実行され、詳細な証明書情報が出力されます。 +\f2\-v\fP ץϡ \f2\-help\fP ޥɤ٤ƤΥޥɤǻѤǤޤΥץꤷ硢ޥɤϡ־Ĺץ⡼ɤǼ¹Ԥ졢ܺ٤ʾ󤬽Ϥޤ .LP -また、\f2\-J\fP\f2javaoption\fP オプションも、任意のコマンドで使用できます。このオプションを指定した場合、指定された \f2javaoption\fP 文字列が Java インタプリタに直接渡されます。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタオプションを一覧表示するには、コマンド行で \f2java \-h\fP または \f2java \-X\fP と入力してください。 .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 -特定の \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 がファイルベースではなく、たとえば、ハードウェアトークンデバイスに置かれている場合に指定します。 + \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 storepass -キーストアの整合性を保護するために使うパスワードを指定します。 +\-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 -\f2storepass\fP は、6 文字以上にする必要があります。指定したパスワードは、キーストアの内容にアクセスするすべてのコマンドで使われます。この種のコマンドを実行するときに、コマンド行で \f2\-storepass\fP オプションを指定しなかった場合は、パスワードの入力を求められます。 +ѥɤϡȥƤ˥뤹٤ƤΥޥɤǻȤޤμΥޥɤ¹ԤȤˡޥɹԤ \f2\-storepass\fP ץꤷʤäϡѥɤϤޤ .LP -キーストアから情報を取り出す場合は、パスワードを省略できます。 パスワードを省略すると、取り出す情報の整合性をチェックできないので、警告が表示されます。 +ȥФϡѥɤάǤޤ ѥɤάȡФåǤʤΤǡٹɽޤ .TP 3 \-providerName provider_name -セキュリティープロパティーファイル内に含まれる暗号化サービスプロバイダ名を特定するために使用されます。 +.LP +ƥץѥƥե˴ޤޤŹ沽ӥץХ̾ꤹ뤿˻Ѥޤ .TP 3 \-providerClass provider_class_name -暗号化サービスプロバイダがセキュリティープロパティーファイルに指定されていないときは、そのマスタークラスファイルの名前を指定するときに使われます。 +.LP +Ź沽ӥץХƥץѥƥե˻ꤵƤʤȤϡΥޥ饹ե̾ꤹȤ˻Ȥޤ .TP 3 \-providerArg provider_arg -\f2\-providerClass\fP と組み合わせて使用します。\f2provider_class_name\fP のコンストラクタに対する省略可能な文字列入力引数を表します。 +.LP +\f2\-providerClass\fP Ȥ߹碌ƻѤޤ\f2provider_class_name\fP Υ󥹥ȥ饯Фάǽʸϰɽޤ .TP 3 \-protected -\f2true\fP または \f2false\fP のいずれか。専用 PIN リーダーなどの保護された認証パスを介してパスワードを指定する必要がある場合には、この値に \f2true\fP を指定してください。 +.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 Ǥ뤳Ȥ򼨤ޤ:critical : \f2:c\fP ѤǤޤ . .RE .LP -.RE -.SH "コマンド" .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>פξάɽǤ άȡca:trueפΰ̣ˤʤޤ +.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)keyEnciphermentdataEnciphermentkeyAgreementkeyCertSigncRLSignencipherOnlydecipherOnly Τ줫ǤޤUsage ϡޤʤСǽοʸ (ȤСdigitalSignature dig ) ޤϥ륱 (ȤС digitalSignature dS ˡcRLSign cRLS ) ṳ̂Ǥޤ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 serverAuthclientAuthcodeSigningemailProtection timeStampingOCSPSigningޤǤդ 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 ˤϡEMAILURIDNSIPޤ 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\-9a\-fA\-F) ʳʸ̵뤵ޤäơ \f201:02:03:04\fP \f201020304פξȤ\fP ƱͤȤƼդޤͤʤ硢ƥ󥷥ͥեɤ϶ˤʤޤ +.LP +.LP +\f2\-gencert\fP ǤΤ߻ѤhonoredפȤ̤̾ϡ׵˴ޤޤ륨ƥ󥷥ͥ褹ˡ򼨤ޤ̾ͤϡ \f2all\fP (׵ᤵ뤹٤ƤΥƥ󥷥ͥ褵) \f2name{:[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 -.RS 3 +׵ե ( \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 ƥ󥷥򼨤ޤ\-ext ʸˡˤĤƤϡְ̥ץפ򻲾ȤƤ +.LP +\f2\-gencert\fP ޥɤѤȡǤޤǤϡ \f2e1\fP Ȥޤξξˤϡ3 Ĥξ񤬴ޤޤƤޤ +.LP +Υޥɤϡcaca1ca2 e1 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 signs ca2\fP ˽̾ޤ٤ƼȯԤǤ +.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 +Υޥɤϡ e1 ƥե e1.cert ˳Ǽޤξ ca2 ˤäƽ̾ޤη̡e1 ξˤ caca1 ca2 ޤޤ뤳Ȥˤʤޤ +.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] {\-validity valDays} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} +\-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 -鍵のペア (公開鍵および関連する非公開鍵) を生成します。公開鍵は X.509 v3 自己署名証明書でラップされます。 証明書は、単一の要素を持つ証明書チェーンとして格納されます。この証明書チェーンと非公開鍵は、\f2alias\fP で特定される新しいキーストアエントリに格納されます。 +\f2dname\fP ˤϡ\f2alias\fP ˴Ϣդʽ̾ issuer եɤ subject եɤȤƻȤ X.500 ̾ꤷޤ ޥɹԤǼ̾ꤷʤäϡ̾Ϥޤ .LP -\f2keyalg\fP には、鍵のペアを生成するのに使うアルゴリズムを指定し、\f2keysize\fP には、生成する各鍵のサイズを指定します。 \f2sigalg\fP には、自己署名証明書に署名を付けるときに使うアルゴリズムを指定します。このアルゴリズムは、\f2keyalg\fP と互換性のあるものでなければなりません。 +\f2keypass\fP ˤϡ븰ΥڥΤݸΤ˻ȤѥɤꤷޤѥɤꤷʤäϡѥɤϤޤΤȤReturn 򲡤ȡȥΥѥɤƱѥɤΥѥɤꤵޤ\f2keypass\fP ϡ6 ʸʾˤɬפޤ .LP -\f2dname\fP には、\f2alias\fP に関連付け、自己署名証明書の \f2issuer\fP フィールドと \f2subject\fP フィールドとして使う X.500 識別名を指定します。コマンド行で識別名を指定しなかった場合は、識別名の入力を求められます。 +\f2startdate\fP ˤϡȯԻꤷޤϡX.509 ΡValidityץեɤΡNot BeforeͤȤƤФޤ .LP -\f2keypass\fP には、生成される鍵のペアのうち、非公開鍵を保護するのに使うパスワードを指定します。パスワードを指定しなかった場合、ユーザーはその入力求められます。このとき、Return キーを押すと、キーストアのパスワードと同じパスワードが鍵のパスワードに設定されます。 \f2keypass\fP は、6 文字以上でなければなりません。 +ץͤϡ 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 -\f2valDays\fP には、証明書の有効日数を指定します。 +ץꤷʤȡդϸߤλˤʤޤץϡ 1 Ǥޤ .LP -このコマンドは、以前のリリースでは \f2\-genkey\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-genkeypair\fP を使用することをお勧めします。 +\f2valDays\fP ˤϡͭꤷޤ ( \f2\-startdate\fP ǻꤵ줿աޤ \f2\-startdate\fP ꤵƤʤϸߤդϤޤ) +.LP +ΥޥɤϡΥ꡼Ǥ \f2\-genkey\fP Ȥ̾ǤθŤ̾ϡΥ꡼Ǥ³ݡȤƤꡢΥ꡼Ǥ⥵ݡȤͽǤϤ狼䤹褦ˡ̾ \f2\-genkeypair\fP Ѥ뤳Ȥ򤪴ᤷޤ .TP 3 \-genseckey {\-alias alias} {\-keyalg keyalg} {\-keysize keysize} [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} .LP -秘密鍵を生成し、それを \f2alias\fP で特定される新しい \f2KeyStore.SecretKeyEntry\fP 内に格納します。 +̩򿷤 \f2KeyStore.SecretKeyEntry\fP (\f2alias\fP ꤵ) ˳Ǽޤ .LP -\f2keyalg\fP は秘密鍵の生成に使用するアルゴリズムを、\f2keysize\fP は生成する鍵のサイズを、それぞれ指定します。\f2keypass\fP は秘密鍵の保護に使用するパスワードです。パスワードを指定しなかった場合、ユーザーはその入力求められます。このとき、Return キーを押すと、キーストアのパスワードと同じパスワードが鍵のパスワードに設定されます。 \f2keypass\fP は、6 文字以上でなければなりません。 +\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 形式の応答で提供されるもの) を読み込み、\f2alias\fP によって特定されるキーストアエントリに格納します。ファイルが指定されていない場合は、標準入力から証明書または PKCS#7 応答を読み込みます。 +ե \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」で始まる文字列で終了しなければなりません。 +\f3keytool\fP ǤϡX.509 v1v2v3 ξ񡢤ӡPKCS#7 ξ񤫤鹽Ƥ PKCS#7 ξ򥤥ݡȤǤޤݡȤǡϡХʥ沽ޤϽϲǽ沽 (Base64 沽ȤƤФ) Τɤ餫󶡤ɬפޤ ϲǽ沽ϡ󥿡ͥå RFC 1421 沽ʤƤޤ沽ξ硢ϡ\-\-\-\-\-BEGINפǻϤޤʸdzϤ졢\-\-\-\-\-ENDפǻϤޤʸǽλʤФʤޤ .LP -証明書のインポートには、次の 2 つの目的があります。 +ΥݡȤˤϡ 2 ĤŪޤ .RS 3 .TP 3 1. -信頼できる証明書のリストに証明書を追加する +ǤΥꥹȤ˾ɲä .TP 3 2. -CA に証明書署名要求 (\-certreq コマンドを参照) を送信した結果として、CA から受け取った証明応答をインポートする +CA ˾̾׵ (\-certreq ޥɤ򻲾) ̤ȤơCA ä򥤥ݡȤ .RE .LP -どちらの種類のインポートを行うかは、\f2\-alias\fP オプションの値によって指定します。 +ɤμΥݡȤԤϡ \f2\-alias\fP ץͤˤäƻꤷޤ .RS 3 .TP 3 1. -\f3別名がキーエントリをポイントしない場合\fP、\f3keytool\fP はユーザーが信頼できる証明書エントリを追加しようとしているものと見なします。この場合、別名がキーストア内にすでに存在していてはいけません。別名がすでに存在している場合、その別名の信頼できる証明書がすでに存在することになるので、\f3keytool\fP はエラーを出力し、証明書のインポートを行いません。 +\f3̾ȥݥȤʤ\fP\f3keytool\fP ϥ桼Ǥ񥨥ȥɲä褦ȤƤΤȸʤޤξ硢̾ȥˤǤ¸ߤƤƤϤޤ̾Ǥ¸ߤƤ硢̾οǤ񤬤Ǥ¸ߤ뤳ȤˤʤΤǡ\f3keytool\fP ϥ顼ϤΥݡȤԤޤ .TP 3 2. -\f3別名がキーエントリをポイントしない場合\fP、\f3keytool\fP はユーザーが信頼できる証明書エントリを追加しようとしているものと見なします。 -.RE -\f3新しい信頼できる証明書のインポート\fP -.RS 3 - -.LP -.LP -\f3keytool\fP は、キーストアに証明書を追加する前に、キーストア内にすでに存在する信頼できる証明書を使って、インポートする証明書から (ルート CA の) 自己署名証明書に至るまでの信頼のチェーンの構築を試みます。 -.LP -.LP -\f2\-trustcacerts\fP オプションを指定した場合、追加の証明書は信頼できるすなわち cacerts という名前のファイルに含まれる証明書のチェーンと見なされます。 -.LP -.LP -\f3keytool\fP が、インポートする証明書から自己署名証明書 (キーストアまたは cacerts ファイルに含まれている自己署名証明書) に至るまでの信頼のパスの構築に失敗した場合は、インポートする証明書の情報を表示し、ユーザーに確認を求めます。 この場合は、表示された証明書のフィンガープリントと、ほかのなんらかの (信頼できる) 情報源 (証明書の所有者本人など) から入手したフィンガープリントとを比較します。「信頼できる証明書」として証明書をインポートするときは、証明書が有効であることを慎重に確認する必要があります。詳細は、「信頼できる証明書のインポートに関する注意事項」を参照してください。インポート操作は、証明書を確認する時点で中止できます。ただし、\f2\-noprompt\fP オプションが指定されている場合、ユーザーとの対話は行われません。 .LP +\f3̾ȥݥȤʤ\fP\f3keytool\fP ϥ桼Ǥ񥨥ȥɲä褦ȤƤΤȸʤޤ .RE -\f3証明応答のインポート\fP -.RS 3 +\f3ǤΥݡ\fP +.LP +\f3keytool\fP ϡȥ˾ɲäˡȥˤǤ¸ߤ뿮ǤȤäơݡȤ񤫤 (롼 CA ) ʽ̾˻ޤǤοΥιۤߤޤ .LP -「証明応答」をインポートするときは、キーストア内の信頼できる証明書、および (\f2\-trustcacerts\fP オプションが指定されている場合は) cacerts キーストアファイルで構成された証明書を使って証明応答が検査されます。 +\f2\-trustcacerts\fP ץꤷ硢ɲäξϿǤ뤹ʤ cacerts Ȥ̾Υե˴ޤޤΥȸʤޤ .LP +\f3keytool\fP ݡȤ񤫤鼫ʽ̾ (ȥޤ cacerts ե˴ޤޤƤ뼫ʽ̾) ˻ޤǤοΥѥιۤ˼ԤϡݡȤξɽ桼˳ǧޤ ξϡɽ줿Υե󥬡ץȤȡۤΤʤ餫 (Ǥ) (νͭܿͤʤ) ꤷե󥬡ץȤȤӤޤֿǤפȤƾ򥤥ݡȤȤϡͭǤ뤳Ȥ򿵽Ť˳ǧɬפޤܺ٤ϡֿǤΥݡȤ˴ؤջפ򻲾ȤƤݡϡǧߤǤޤ \f2\-noprompt\fP ץ󤬻ꤵƤ硢桼ȤäϹԤޤ +\f3Υݡ\fP .LP -証明応答が信頼できるかどうかを決定する方法は次のとおりです。 +־פ򥤥ݡȤȤϡȥοǤ񡢤 (\-trustcacerts ץ󤬻ꤵƤ) cacerts ȥեǹ줿Ȥäƾޤ .LP +Ǥ뤫ɤꤹˡϼΤȤǤ .RS 3 .TP 2 o -\f3証明応答が単一の X.509 証明書である場合\fP、\f3keytool\fP は、証明応答から (ルート CA の) 自己署名証明書に至るまでの信頼チェーンの確立を試みます。証明応答と、証明応答の認証に使われる証明書の階層構造は、\f2alias\fP の新しい証明書チェーンを形成します。信頼チェーンが確立されない場合、証明応答はインポートされません。この場合、\f3keytool\fP は証明書を出力せず、ユーザーに検証を求めるプロンプトを表示します。 ユーザーが証明応答の信頼性を判断するのは、不可能ではなくても非常に困難だからです。 +\f3ñ X.509 Ǥ\fP\f3keytool\fP ϡ (롼 CA ) ʽ̾˻ޤǤογΩߤޤȡǧڤ˻Ȥγع¤ϡ\f2alias\fP οޤ󤬳Ωʤ硢ϥݡȤޤ󡣤ξ硢\f3keytool\fP ϾϤ桼˸ڤץץȤɽޤ桼οȽǤΤϡԲǽǤϤʤƤ˺Ǥ .TP 2 o -\f3証明応答が PKCS#7 形式の証明書チェーンである場合\fP、\f3keytool\fP は、まずチェーンを並べ替えて、ユーザーの証明書が最初に、ルート CA の自己署名証明書が最後にくるようにしたあと、証明応答に含まれるルート CA の証明書と、キーストア内または (\f2\-trustcacerts\fP オプションが指定されている場合は) cacerts キーストアファイル内の信頼できる証明書とをすべて比較し、一致するものがあるかどうかを調べます。一致するものが見つからなかった場合は、ルート CA の証明書の情報を表示し、ユーザーに確認を求めます。 この場合は、表示された証明書のフィンガープリントと、ほかのなんらかの (信頼できる) 情報源 (ルート CA 自身など) から入手したフィンガープリントとを比較します。インポート操作は、証明書を確認する時点で中止できます。ただし、\f2\-noprompt\fP オプションが指定されている場合、ユーザーとの対話は行われません。 +\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 .LP -証明書応答内の公開鍵が \f2alias\fP の下にすでに格納されているユーザーの公開鍵に一致した場合、古い証明書チェーンが応答内の新しい証明書チェーンで置き換えられます。以前の証明書チェーンを新しい証明書チェーンで置き換えることができるのは、有効な \f2keypass\fP、つまり該当するエントリの非公開鍵を保護するためのパスワードを指定した場合だけです。パスワードを指定しておらず、非公開鍵のパスワードがキーストアのパスワードと異なる場合は、非公開鍵のパスワードの入力を求められます。 +θ \f2alias\fP βˤǤ˳ǼƤ桼θ˰פ硢Ť󤬱ο֤ޤξ򿷤֤뤳ȤǤΤϡͭ \f2keypass\fPĤޤ곺륨ȥݸ뤿ΥѥɤꤷǤѥɤꤷƤ餺ΥѥɤȥΥѥɤȰۤʤϡΥѥɤϤޤ .LP -.RE -.LP -このコマンドは、以前のリリースでは \f2\-import\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-importcert\fP を使用することをお勧めします。 +ΥޥɤϡΥ꡼Ǥ \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 が指定されなかった場合、ターゲットエントリはソースエントリのパスワードによって保護されます。 +\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 が指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ソースキーストア内のあるエントリタイプがターゲットキーストアでサポートされていない場合や、あるエントリをターゲットキーストアに格納する際にエラーが発生した場合、ユーザーはそのエントリをスキップして処理を続行するか、あるいは処理を中断するかの選択を求められます。ターゲットエントリはソースエントリのパスワードによって保護されます。 +\f2srcalias\fP ץ󤬻ꤵʤä硢ȥΤ٤ƤΥȥ꤬åȥȥ˥ݡȤޤƥåȥȥб륽ȥ̾β˳ǼޤΥȥ꤬ѥɤݸƤ硢\f2srcstorepass\fP ȤäƤΥȥ꤬ޤ\f2srcstorepass\fP ꤵʤäʤä硢桼ϥѥɤϤޤȥΤ륨ȥ꥿פåȥȥǥݡȤƤʤ䡢륨ȥ򥿡åȥȥ˳Ǽݤ˥顼ȯ硢桼ϤΥȥ򥹥åפƽ³Ԥ뤫뤤ϽǤ뤫ޤåȥȥϥȥΥѥɤˤäݸޤ .LP -ターゲット別名がターゲットキーストア内にすでに存在していた場合、ユーザーは、そのエントリを上書きするか、あるいは異なる別名の下で新しいエントリを作成するかの選択を求められます。 +å̾åȥȥˤǤ¸ߤƤ硢桼ϡΥȥ񤭤뤫뤤ϰۤʤ̾βǿȥ뤫ޤ .LP -\f2\-noprompt\fP を指定した場合、ユーザーは新しいターゲット別名の入力を求められません。既存のエントリはそのターゲット別名で自動的に上書きされます。最後に、インポートできないエントリは自動的にスキップされ、警告が出力されます。 -.RE -.RE -.SS -データのエクスポート +\f2\-noprompt\fP ꤷ硢桼Ͽå̾Ϥޤ󡣴¸ΥȥϤΥå̾ǼưŪ˾񤭤ޤǸˡݡȤǤʤȥϼưŪ˥åפ졢ٹ𤬽Ϥޤ +.TP 3 +\-printcertreq {\-file file} .LP -.RS 3 +PKCS #10 ξ׵ƤϤޤ׵ϡkeytool \-certreq ޥɤǤޤΥޥɤϡfile ׵ɤ߹ߤޤfile άƤϡɸϤɤ߹ߤޤ +.RE +.LP +.SS +ǡΥݡ .LP .RS 3 .TP 3 -\-certreq {\-alias alias} {\-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} +\-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) を生成します。 +PKCS#10 Ȥäƾ̾׵ (CSR) ޤ .LP -CSR は、証明書発行局 (CA) に送信することを目的としたものです。CA は、証明書要求者を (通常はオフラインで) 認証し、証明書または証明書チェーンを送り返します。 この証明書または証明書チェーンは、キーストア内の既存の証明書チェーン (最初は 1 つの自己署名証明書から構成される) に置き換えて使います。 +CSR ϡȯԶ (CA) 뤳ȤŪȤΤǤCA ϡ׵Ԥ (̾ϥե饤) ǧڤޤϾ֤ޤ ξޤϾϡȥδ¸ξ (ǽ 1 Ĥμʽ̾񤫤鹽) ֤ƻȤޤ .LP -\f2alias\fP に関連付けられた非公開鍵と X.500 識別名は、PKCS#10 証明書要求を作成するのに使われます。非公開鍵はキーストア内ではパスワードによって保護されているので、非公開鍵にアクセスするには、適切なパスワードを提供する必要があります。コマンド行で \f2keypass\fP を指定しておらず、非公開鍵のパスワードがキーストアのパスワードと異なる場合は、非公開鍵のパスワードの入力を求められます。 +\f2alias\fP ˴Ϣդ줿ϡPKCS#10 ׵Τ˻ȤޤϥȥǤϥѥɤˤäݸƤΤǡ˥ˤϡŬڤʥѥɤ󶡤ɬפޤޥɹԤ \f2keypass\fP ꤷƤ餺ΥѥɤȥΥѥɤȰۤʤϡΥѥɤϤޤdname ꤵƤϡ줬 CSR ǼΤȤƻѤޤʳξϡ̾˴Ϣդ줿 X.500 ̾Ѥޤ .LP -\f2sigalg\fP には、CSR に署名を付けるときに使うアルゴリズムを指定します。 +\f2sigalg\fP ˤϡCSR ˽̾դȤ˻Ȥ르ꥺꤷޤ .LP -CSR は、ファイル \f2certreq_file\fP に格納されます。ファイルが指定されていない場合は、標準出力に CSR が出力されます。 +CSR ϡե \f2certreq_file\fP ˳Ǽޤե뤬ꤵƤʤϡɸϤ CSR Ϥޤ .LP -CA からの応答をインポートするには、\f2importcert\fP コマンドを使います。 +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 に格納します。 +\f2alias\fP ˴Ϣդ줿 (ȥ) ɤ߹ߡե \f2cert_file\fP ˳Ǽޤ .LP -ファイルが指定されていない場合は、標準出力に証明書が出力されます。 +ե뤬ꤵƤʤϡɸϤ˾񤬽Ϥޤ .LP -デフォルトでは、バイナリ符号化方式の証明書が出力されます。 ただし、\f2\-rfc\fP オプションを指定した場合は、出力可能符号化方式の証明書が出力されます。 出力可能符号化方式は、インターネット RFC 1421 証明書符号化規格で定義されています。 +ǥեȤǤϡХʥ沽ξ񤬽Ϥޤ \-rfc ץꤷϡϲǽ沽ξ񤬽Ϥޤ ϲǽ沽ϡ󥿡ͥå RFC 1421 沽ʤƤޤ .LP -\f2alias\fP が、信頼できる証明書を参照している場合は、該当する証明書が出力されます。それ以外の場合、\f2alias\fP は、関連付けられた証明書チェーンを持つ鍵エントリを参照します。この場合は、チェーン内の最初の証明書が返されます。この証明書は、\f2alias\fP によって表されるエンティティーの公開鍵を認証する証明書です。 +\f2alias\fP Ǥ򻲾ȤƤϡ񤬽Ϥޤʳξ硢\f2alias\fP ϡϢդ줿ĸȥ򻲾Ȥޤξϡκǽξ֤ޤξϡ\f2alias\fP ˤäɽ륨ƥƥθǧڤǤ .LP -このコマンドは、以前のリリースでは \f2\-export\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-exportcert\fP を使用することをお勧めします。 +ΥޥɤϡΥ꡼Ǥ \f2\-export\fP Ȥ̾ǤθŤ̾ϡΥ꡼Ǥ³ݡȤƤꡢΥ꡼Ǥ⥵ݡȤͽǤϤ狼䤹褦ˡ̾ \f2\-exportcert\fP Ѥ뤳Ȥ򤪴ᤷޤ .RE .LP -.RE .SS -データの表示 -.LP -.RS 3 - +ǡɽ .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 で特定されるキーストアエントリの内容を (標準出力に) 出力します。別名が指定されていない場合は、キーストア全体の内容が表示されます。 +\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 -このコマンドは、デフォルトでは証明書の MD5 フィンガープリントを表示します。\f2\-v\fP オプションが指定されている場合は、所有者、発行者、シリアル番号、拡張機能などの付加的な情報とともに、人間が読むことのできる形式で証明書が表示されます。\f2\-rfc\fP オプションが指定されている場合は、出力可能符号化方式で証明書の内容が表示されます。 出力可能符号化方式は、インターネット RFC 1421 証明書符号化規格で定義されています。 +SSL Сեظˤϡ \f2\-J\-Dhttps.proxyHost=proxyhost\fP \f2\-J\-Dhttps.proxyPort=proxyport\fP 򥳥ޥɹԤǻꤷơץȥͥ󥰤ѤǤޤܺ٤ϡ +.na +\f2JSSE ե󥹥ɡ\fP @ +.fi +http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html򻲾ȤƤ .LP -\f2\-v\fP オプションと \f2\-rfc\fP オプションとを同時に指定することはできません。 +\f3\fP: ΥץϥȥȤϴطʤѤǤޤ .TP 3 -\-printcert {\-file cert_file} {\-v} {\-Jjavaoption} +\-printcrl \-file crl_ {\-v} .LP -ファイル +ե \f2crl_file\fP μäꥹ (CRL) ɤ߹ߤޤ .LP -インターネット RFC 1421 証明書符号化規格で定義されています。 +μäꥹ (CRL) ϡǥȯԤȯԶ (CA) ˤäƼä줿ǥΥꥹȤǤCA ϡ\f2crl_file\fP ޤ .LP -注:このコマンドはキーストアとは関係なく動作します。 +\f3\fP: ΥץϥȥȤϴطʤѤǤޤ .RE .LP -.RE .SS -キーストアの管理 -.LP -.RS 3 - +ȥδ .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 には、新しいパスワードを指定します。 \f2new_storepass\fP は、6 文字以上でなければなりません。 +ȥƤݸ뤿˻Ȥѥɤѹޤ\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 に変更します。 \f2new_keypass\fP は、6 文字以上でなければなりません。 +\f2alias\fP ˤäꤵ/̩ݸ뤿Υѥɤ\f2old_keypass\fP \f2new_keypass\fP ѹޤnew_keypass ϡ6 ʸʾǤʤФʤޤ .LP -コマンド行で \f2\-keypass\fP オプションを指定しておらず、鍵のパスワードがキーストアのパスワードと異なる場合は、鍵のパスワードの入力を求められます。 +ޥɹԤ \f2\-keypass\fP ץꤷƤ餺ΥѥɤȥΥѥɤȰۤʤϡΥѥɤϤޤ .LP -コマンド行で \f2\-new\fP オプションを指定しなかった場合は、新しいパスワードの入力を求められます。 +ޥɹԤ \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 によって特定されるエントリをキーストアから削除します。コマンド行で別名を指定しなかった場合は、別名の入力を求められます。 +\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 (指定された場合) がまず試みられます。その試みが失敗すると、ユーザーはパスワードの入力を求められます。 +ꤵ줿 \f2alias\fP 鿷̾ \f2destalias\fP ء¸Υȥȥưޤå̾ꤵʤä硢ΥޥɤϤϤޤΥȥ꤬ȥѥɤݸƤ硢\-keypassץץͳǤΥѥɤǤޤѥɤꤵʤä硢\f2storepass\fP (ꤵ줿) ޤߤޤλߤԤȡ桼ϥѥɤϤޤ .RE .LP -.RE .SS -ヘルプの表示 -.LP -.RS 3 - +إפɽ .LP .RS 3 .TP 3 \-help .LP -基本的なコマンドとそのオプションの一覧を表示します。 -.RE - +ŪʥޥɤȤΥץΰɽޤ .LP +Υޥɤξܺ٤ˤĤƤϡΤ褦ϤƤ \f2command_name\fP ϥޥɤ̾Ǥ +.nf +\f3 +.fl + keytool \-\fP\f4command_name\fP\f3 \-help +.fl +\fP +.fi .RE -.SH "例" -.LP .LP +.SH "" .LP -ここでは、自分の鍵のペアおよび信頼できるエンティティーからの証明書を管理するためのキーストアを作成する場合を例として示します。 .LP -.SS -鍵のペアの生成 +ǤϡʬθΥڥӿǤ륨ƥƥξ뤿ΥȥȤƼޤ .LP -.RS 3 - +.SS +Υڥ .LP .LP -まず、キーストアを作成して鍵のペアを生成する必要があります。次に示すのは、実行するコマンドの例です。 +ޤȥƸΥڥɬפޤ˼Τϡ¹Ԥ륳ޥɤǤ .LP .nf \f3 .fl - keytool \-genkeypair \-dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US" + keytool \-genkeypair \-dname "cn=Mark Jones, ou=Java, o=Oracle, c=US" .fl \-alias business \-keypass kpi135 \-keystore /working/mykeystore .fl @@ -485,16 +1096,16 @@ CA からの応答をインポートするには、\f2importcert\fP コマンド .LP .LP -注:このコマンドは 1 行に入力しなければなりません。例で複数行に入力しているのは読みやすくするためです。 +: Υޥɤ 1 ԤϤʤФʤޤʣԤϤƤΤɤߤ䤹뤿Ǥ .LP .LP -この例では、working ディレクトリに mykeystore という名前のキーストアを作成し (キーストアはまだ存在していないと仮定する)、作成したキーストアにパスワード ab987c を割り当てます。生成する公開鍵と非公開鍵のペアに対応するエンティティーの「識別名」は、通称が「Mark Jones」、組織単位が「JavaSoft」、組織が「Sun」、2 文字の国番号が「US」です。公開鍵と非公開鍵のサイズはどちらも 1024 ビットで、鍵の作成にはデフォルトの DSA 鍵生成アルゴリズムを使用します。 +Ǥϡworking ǥ쥯ȥ mykeystore Ȥ̾Υȥ (ȥϤޤ¸ߤƤʤȲꤹ)ȥ˥ѥ ab987c ƤޤΥڥб륨ƥƥΡּ̾פϡ̾ΤMark Jonesסȿñ̤JavaסȿOracleס2 ʸιֹ椬USפǤΥϤɤ 1024 ӥåȤǡκˤϥǥեȤ DSA 르ꥺѤޤ .LP .LP -このコマンドは、公開鍵と識別名情報を含む自己署名証明書 (デフォルトの SHA1withDSA 署名アルゴリズムを使用) を作成します。証明書の有効期間は 180 日です。 証明書は、別名「business」で特定されるキーストアエントリ内の非公開鍵に関連付けられます。非公開鍵にはパスワード「kpi135」が割り当てられます。 +Υޥɤϡȼ̾ޤ༫ʽ̾ (ǥեȤ SHA1withDSA ̾르ꥺ) ޤ֤ͭ 180 Ǥ ϡ̾businessפꤵ륭ȥȥ˴Ϣդޤˤϥѥɡkpi135פƤޤ .LP .LP -オプションのデフォルト値を使う場合は、上に示したコマンドを大幅に短くすることができます。実際には、オプションを 1 つも指定せずにコマンドを実行することも可能です。 デフォルト値を持つオプションでは、オプションを指定しなければデフォルト値が使われ、必要な値については入力を求められます。たとえば、単に次のように入力することもできます。 +ץΥǥեͤȤϡ˼ޥɤû뤳ȤǤޤºݤˤϡץ 1 Ĥꤻ˥ޥɤ¹Ԥ뤳ȤǽǤ ǥեͤĥץǤϡץꤷʤХǥեͤȤ졢ɬפͤˤĤƤϤޤȤСñ˼Τ褦Ϥ뤳ȤǤޤ .LP .nf \f3 @@ -505,19 +1116,17 @@ CA からの応答をインポートするには、\f2importcert\fP コマンド .fi .LP -この場合は、mykey という別名でキーストアエントリが作成され、新しく生成された鍵のペア、および 90 日間有効な証明書がこのエントリに格納されます。このエントリは、ホームディレクトリ内の .keystore という名前のキーストアに置かれます。このキーストアがまだ存在していない場合は、作成されます。識別名情報、キーストアのパスワード、および非公開鍵のパスワードについては、入力を求められます。 .LP -以下では、オプションを指定しないで \f2\-genkeypair\fP コマンドを実行したものとして例を示します。 情報の入力を求められた場合は、最初に示した \f2\-genkeypair\fP コマンドの値を入力したものとします (たとえば、非公開鍵のパスワードには kpi135 と指定)。 +ξϡmykey Ȥ̾ǥȥȥ꤬졢줿Υڥ 90 ͭʾ񤬤Υȥ˳ǼޤΥȥϡۡǥ쥯ȥ .keystore Ȥ̾Υȥ֤ޤΥȥޤ¸ߤƤʤϡޤ̾󡢥ȥΥѥɡΥѥɤˤĤƤϡϤޤ .LP -.RE -.SS -証明書発行局に対する署名付き証明書の要求 .LP -.RS 3 - +ʲǤϡץꤷʤ \f2\-genkeypair\fP ޥɤ¹ԤΤȤ򼨤ޤϤ줿ϡǽ˼ \f2\-genkeypair\fP ޥɤͤϤΤȤޤ (ȤСΥѥɤˤ kpi135 Ȼ) +.LP +.SS +ȯԶɤФ̾դ׵ .LP .LP -現時点で手元にあるのは、1 通の自己署名証明書だけです。証明書に証明書発行局 (CA) の署名が付いていれば、ほかのユーザーから証明書が信頼できる可能性も高くなります。CA の署名を取得するには、まず、証明書署名要求 (CSR) を生成します。 たとえば、次のようにします。 +Ǽ긵ˤΤϡ1 ̤μʽ̾Ǥ˾ȯԶ (CA) ν̾դƤСۤΥ桼񤬿Ǥǽ⤯ʤޤCA ν̾ˤϡޤ̾׵ (CSR) ޤ ȤСΤ褦ˤޤ .LP .nf \f3 @@ -528,41 +1137,39 @@ CA からの応答をインポートするには、\f2importcert\fP コマンド .fi .LP -CSR (デフォルト別名「mykey」によって特定されるエンティティーの CSR) が作成され、MarkJ.csr という名前のファイルに置かれます。このファイルは、VeriSign などの CA に提出します。 CA は要求者を (通常はオフラインで) 認証し、要求者の公開鍵を認証した署名付きの証明書を送り返します。場合によっては、CA が証明書のチェーンを返すこともあります。 証明書のチェーンでは、各証明書がチェーン内のその前の署名者の公開鍵を認証します。 -.RE -.SS -CA からの証明書のインポート .LP -.RS 3 - +CSR (ǥե̾mykeyפˤäꤵ륨ƥƥ CSR) 졢MarkJ.csr Ȥ̾Υե֤ޤΥեϡVeriSign ʤɤ CA Фޤ CA ׵Ԥ (̾ϥե饤) ǧڤ׵Ԥθǧڤ̾դξ֤ޤˤäƤϡCA Υ֤Ȥ⤢ޤΥǤϡƾ񤬥Τν̾Ԥθǧڤޤ +.LP +.SS +CA ξΥݡ .LP .LP -作成した自己署名証明書は、証明書チェーンで置き換える必要があります。 証明書チェーンでは、各証明書が、「ルート」CA を起点とするチェーン内の次の証明書の署名者の公開鍵を認証します。 +ʽ̾ϡ֤ɬפޤǤϡƾ񤬡֥롼ȡCA Ȥμξν̾Ԥθǧڤޤ .LP .LP -CA からの証明応答をインポートするには、キーストアか、(importcert コマンド で説明しているように) \f2cacerts\fP キーストアファイル内に 1 つ以上の「信頼できる証明書」がある必要があります。 +CA ξ򥤥ݡȤˤϡȥ \f2cacerts\fP ȥե (importcert ޥɤ) 1 İʾΡֿǤפɬפޤ .LP .RS 3 .TP 2 o -証明応答が証明書チェーンの場合は、チェーンのトップの証明書 (その CA の公開鍵を認証する「ルート」CA の証明書) だけを必要とする +ξϡΥȥåפξ ( CA θǧڤ֥롼ȡCA ξ) ɬפȤ .TP 2 o -証明応答が単一の証明書の場合は、証明書に署名した CA の発行用の証明書が必要で、その証明書が自己署名されない場合は、さらにその証明書の署名者用の証明書を必要とする。 このようにして自己署名される「ルート」CA の証明書までそれぞれ証明書を必要とする +ñξξϡ˽̾ CA ȯѤξɬפǡξ񤬼ʽ̾ʤϡˤξν̾ѤξɬפȤ롣 Τ褦ˤƼʽ֥̾롼ȡCA ξޤǤ줾ɬפȤ .RE .LP .LP -cacerts キーストアファイルは、5 つの VeriSign ルート CA 証明書を含んだ状態で出荷されているので、VeriSign の証明書を、信頼できる証明書としてキーストア内にインポートする必要はないかもしれません。ただし、ほかの CA に対して署名付き証明書を要求していて、この CA の公開鍵を認証する証明書が、cacerts にまだ追加されていない場合は、該当する CA からの証明書を、「信頼できる証明書」としてインポートする必要があります。 +cacerts ȥեϡĤ VeriSign 롼 CA ޤ֤ǽв٤ƤΤǡVeriSign ξ򡢿ǤȤƥȥ˥ݡȤɬפϤʤ⤷ޤ󡣤ۤ CA Фƽ̾դ׵ᤷƤơ CA θǧڤ񤬡cacerts ˤޤɲäƤʤϡ CA ξ򡢡ֿǤפȤƥݡȤɬפޤ .LP .LP -通常、CA からの証明書は、自己署名証明書、またはほかの CA によって署名された証明書です (後者の場合は、該当するほかの CA の公開鍵を認証する証明書も必要)。たとえば、ABC という企業が CA だとします。 このとき、この CA の公開鍵を認証する自己署名証明書と考えられる ABCCA.cer という名前のファイルを、ABC から入手したとします。 +̾CA ξϡʽ̾񡢤ޤϤۤ CA ˤäƽ̾줿Ǥ (Ԥξϡۤ CA θǧڤɬ)ȤСABC ȤȤ CA ȤޤΤȤ CA θǧڤ뼫ʽ̾ȹͤ ABCCA.cer Ȥ̾ΥեABC ꤷȤޤ .LP .LP -「信頼できる証明書」として証明書をインポートするときは、証明書が有効であることを慎重に確認する必要があります。まず、証明書の内容を表示し (\f3keytool\fP \f2\-printcert\fP コマンドを使用するか、または \f2\-noprompt\fP オプションを指定しないで \f3keytool\fP \f2\-importcert\fP コマンドを使用)、表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致するかどうかを確認します。証明書を送信した人物に連絡し、この人物が提示した (または安全な公開鍵のリポジトリによって提示される) フィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中でほかの何者か (攻撃者など) による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのものを信頼することになります。 +ֿǤפȤƾ򥤥ݡȤȤϡͭǤ뤳Ȥ򿵽Ť˳ǧɬפޤޤƤɽ (\f3keytool\fP \f2\-printcert\fP ޥɤѤ뤫ޤ \-noprompt ץꤷʤ \f3keytool\fP \f2\-importcert\fP ޥɤѤ ɽ줿Υե󥬡ץȤԤե󥬡ץȤȰפ뤫ɤǧޤʪϢοʪ󼨤 (ޤϰʸΥݥȥˤä󼨤) ե󥬡ץȤȡΥޥɤɽ줿ե󥬡ץȤȤӤޤե󥬡ץȤפСǤۤβԤ (Ԥʤ) ˤΤؤԤƤʤȤǧǤޤǤμι⤬ԤƤ硢åԤ鷺˾򥤥ݡȤȡԤˤäƽ̾줿٤ƤΤΤꤹ뤳Ȥˤʤޤ .LP .LP -ABCCA.cer を有効な証明書として信頼する場合は、証明書をキーストアに追加できます。 たとえば、次のようにします。 +ABCCA.cer ͭʾȤƿꤹϡ򥭡ȥɲäǤޤ ȤСΤ褦ˤޤ .LP .nf \f3 @@ -573,19 +1180,17 @@ ABCCA.cer を有効な証明書として信頼する場合は、証明書をキ .fi .LP -ABCCA.cer ファイルのデータを含む「信頼できる証明書」のエントリがキーストア内に作成され、該当するエントリに abc という別名が割り当てられます。 -.RE -.SS -CA からの証明応答のインポート .LP -.RS 3 - +ABCCA.cer եΥǡޤֿǤפΥȥ꤬ȥ˺졢륨ȥ abc Ȥ̾Ƥޤ +.LP +.SS +CA ξΥݡ .LP .LP -証明書署名要求の提出先の CA の公開鍵を認証する証明書をインポートしたあとは (または同種の証明書がすでに cacerts ファイル内に存在している場合は)、証明応答をインポートし、自己署名証明書を証明書チェーンで置き換えることができます。この証明書チェーンは、CA の応答がチェーンの場合、証明書署名要求に対する応答として CA から送り返された証明書チェーンです。 また、CA の応答が単一の証明書の場合は、この証明応答と、インポート先のキーストア内または cacerts キーストアファイル内にすでに存在する信頼できる証明書とを使って構築した証明書チェーンです。 +̾׵ CA θǧڤ򥤥ݡȤȤ (ޤƱξ񤬤Ǥ cacerts ե¸ߤƤ)򥤥ݡȤʽ֤̾뤳ȤǤޤξϡCA αξ硢̾׵ФȤ CA ֤줿Ǥ ޤCA αñξξϡξȡݡΥȥޤ cacerts ȥեˤǤ¸ߤ뿮ǤȤȤäƹۤǤ .LP .LP -たとえば、証明書署名要求を VeriSign に送信したとします。送り返された証明書の名前が VSMarkJ.cer だとすると、次のようにして応答をインポートできます。 +ȤС̾׵ VeriSign Ȥޤ֤줿̾ VSMarkJ.cer ȤȡΤ褦ˤƱ򥤥ݡȤǤޤ .LP .nf \f3 @@ -594,18 +1199,16 @@ CA からの証明応答のインポート .fl \fP .fi -.RE .LP .SS -公開鍵を認証する証明書のエクスポート +ǧڤΥݡ .LP -.RS 3 - .LP -たとえば、jarsigner(1) を使って Java ARchive (JAR) ファイルに署名したとします。この JAR ファイルはクライアントによって使われますが、クライアント側では署名を認証したいと考えています。 +ȤСjarsigner(1) ġȤä Java ARchive (JAR) ե˽̾դȤޤ JAR եϥ饤ȤˤäƻȤޤ饤¦ǤϽ̾ǧڤȹͤƤޤ .LP -クライアントが署名を認証する方法の 1 つに、まず自分の公開鍵の証明書を「信頼できる」エントリとしてクライアントのキーストアにインポートする方法があります。そのためには、証明書をエクスポートして、クライアントに提供します。たとえば、次のようにして、証明書を \f2MJ.cer\fP という名前のファイルにコピーします。 このエントリには「mykey」という別名が使われているとします。 +.LP +饤Ȥ̾ǧڤˡ 1 ĤˡޤʬθξֿǤץȥȤƥ饤ȤΥȥ˥ݡȤˡޤΤˤϡ򥨥ݡȤơ饤Ȥ󶡤ޤȤСΤ褦ˤơ \f2MJ.cer\fP Ȥ̾Υե˥ԡޤΥȥˤϡmykeyפȤ̾ȤƤȤޤ .LP .nf \f3 @@ -616,24 +1219,22 @@ CA からの証明応答のインポート .fi .LP -証明書と署名付き JAR ファイルを入手したクライアントは、\f3jarsigner\fP ツールを使って署名を認証できます。 -.RE -.SS -キーストアのインポート .LP -.RS 3 - +Ƚ̾դ JAR եꤷ饤Ȥϡ\f3jarsigner\fP ġȤäƽ̾ǧڤǤޤ +.LP +.SS +ȥΥݡ .LP .LP -コマンド「importkeystore」を使えば、あるキーストアの全体を別のキーストア内にインポートできます。 これは、鍵や証明書といったソースキーストア内のすべてのエントリが、単一のコマンドを使ってターゲットキーストア内にインポートされることを意味します。このコマンドを使えば、異なるタイプのキーストア内に含まれるエントリをインポートすることができます。インポート時には、ターゲットキーストア内の新しいエントリはすべて、元と同じ別名および (秘密鍵や非公開鍵の場合は) 保護用パスワードを持ちます。ソースキーストア内の非公開鍵や秘密鍵の回復時に問題が発生した場合、\f3keytool\fP はユーザーにパスワードの入力を求めます。このコマンドは、別名の重複を検出すると、ユーザーに新しい別名の入力を求めます。 ユーザーは、新しい別名を指定することも、単純に既存の別名の上書きを \f3keytool\fP に許可することもできます。 +ޥɡimportkeystoreפȤС륭ȥΤ̤Υȥ˥ݡȤǤޤϡȤäȥΤ٤ƤΥȥ꤬ñΥޥɤȤäƥåȥȥ˥ݡȤ뤳Ȥ̣ޤΥޥɤȤСۤʤ륿פΥȥ˴ޤޤ륨ȥ򥤥ݡȤ뤳ȤǤޤݡȻˤϡåȥȥοȥϤ٤ơƱ̾ (̩ξ) ݸѥѥɤޤȥ̩β꤬ȯ硢\f3keytool\fP ϥ桼˥ѥɤϤޤΥޥɤϡ̾νʣ򸡽Фȡ桼˿̾Ϥޤ桼ϡ̾ꤹ뤳Ȥ⡢ñ˴¸̾ξ񤭤 \f3keytool\fP ˵Ĥ뤳ȤǤޤ .LP .LP -たとえば、通常の JKS タイプのキーストア key.jks 内のエントリを PKCS #11 タイプのハードウェアベースのキーストア内にインポートするには、次のコマンドを使用できます。 +ȤС̾ JKS פΥȥ key.jks Υȥ PKCS #11 פΥϡɥ١Υȥ˥ݡȤˤϡΥޥɤѤǤޤ .LP .nf \f3 .fl -keytool \-importkeystore + keytool \-importkeystore .fl \-srckeystore key.jks \-destkeystore NONE .fl @@ -646,12 +1247,12 @@ keytool \-importkeystore .LP .LP -また、importkeystore コマンドを使えば、あるソースキーストア内の単一のエントリをターゲットキーストアにインポートすることもできます。この場合、上記の例で示したオプションに加え、インポート対象となる別名を指定する必要があります。srcalias オプションを指定する場合には、ターゲット別名もコマンド行から指定できるほか、秘密/非公開鍵の保護用パスワードやターゲット保護用パスワードも指定できます。そうすれば、プロンプトのまったく表示されない \f3keytool\fP コマンドを発行できます。これは、\f3keytool\fP コマンドをスクリプトファイルに含める際に非常に便利です。 次に例を示します。 +ޤimportkeystore ޥɤȤС륽ȥñΥȥ򥿡åȥȥ˥ݡȤ뤳ȤǤޤξ硢嵭Ǽץ˲äݡоݤȤʤ̾ꤹɬפޤsrcalias ץꤹˤϡå̾⥳ޥɹԤǤ̩ۤ/ݸѥѥɤ䥿åݸѥѥɤǤޤСץץȤΤޤäɽʤ \f3keytool\fP ޥɤȯԤǤޤϡ\f3keytool\fP ޥɤ򥹥ץȥե˴ޤݤǤ򼨤ޤ .LP .nf \f3 .fl -keytool \-importkeystore + keytool \-importkeystore .fl \-srckeystore key.jks \-destkeystore NONE .fl @@ -667,55 +1268,74 @@ keytool \-importkeystore .fl \fP .fi -.RE .LP -.SH "用語と警告" +.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 -キーストア +KeyStore .LP -.RS 3 - .LP -キーストアは、暗号化の鍵と証明書を格納するための機能です。 -.RE +ȥϡŹ沽θȾǼ뤿εǽǤ +.LP .RS 3 .TP 2 o -.TP 2 -o -\f3キーストアのエントリ\fP -.RS 3 - +\f3ȥΥȥ\fP .LP -キーストアには異なるタイプのエントリを含めることができます。\f3keytool\fP でもっとも適用範囲の広いエントリタイプは、次の 2 つです。 +ȥˤϰۤʤ륿פΥȥޤ뤳ȤǤޤ\f3keytool\fP ǤäȤŬϰϤιȥ꥿פϡ 2 ĤǤ .RS 3 .TP 3 1. -\f3鍵のエントリ\fP \- 各エントリは、非常に重要な暗号化の鍵の情報を保持します。この情報は、許可していないアクセスを防ぐために、保護された形で格納されます。一般に、この種のエントリとして格納される鍵は、秘密鍵か、対応する公開鍵の証明書チェーンを伴う非公開鍵です。\f3keytool\fP がこの両方のタイプのエントリを処理できるのに対し、\f3jarsigner\fP ツールは後者のタイプのエントリ、つまり非公開鍵とそれに関連付けられた証明書チェーンのみを処理します。 +\f3Υȥ\fP \- ƥȥϡ˽פʰŹ沽θξݻޤξϡĤƤʤɤˡݸ줿dzǼޤ ̤ˡμΥȥȤƳǼ븰ϡ̩бξȼǤ\f3keytool\fP ξΥפΥȥǤΤФ\f3jarsigner\fP ġϸԤΥפΥȥꡢĤޤȤ˴Ϣդ줿Τߤޤ .TP 3 2. -\f3信頼できる証明書のエントリ\fP \- 各エントリは、第三者からの公開鍵証明書を 1 つ含んでいます。この証明書は、「信頼できる証明書」と呼ばれます。 それは、証明書内の公開鍵が、証明書の「Subject」(所有者) によって特定されるアイデンティティーに由来するものであることを、キーストアの所有者が信頼するからです。証明書の発行者は、証明書に署名を付けることによって、その内容を保証します。 -.RE - -.LP +\f3ǤΥȥ\fP \- ƥȥϡ軰Ԥθ 1 ĴޤǤޤξϡֿǤפȸƤФޤ ϡθΡSubject(ͭ) ˤäꤵ륢ǥƥƥͳ褹ΤǤ뤳Ȥ򡢥ȥνͭԤꤹ뤫ǤȯԼԤϡ˽̾դ뤳ȤˤäơƤݾڤޤ .RE .TP 2 o -\f3キーストアの別名\fP -.RS 3 -.LP -キーストアのすべてのエントリ (鍵および信頼できる証明書) は、一意の「別名」を介してアクセスされます。 +\f3ȥ̾\fP .LP +ȥΤ٤ƤΥȥ (ӿǤ) ϡդΡ̾פ𤷤ƥޤ .LP -別名を指定するのは、\-genseckey コマンドを使って秘密鍵を生成したり、\-genkeypair コマンドを使って鍵ペア (公開鍵と非公開鍵) を生成したり、\-importcert コマンドを使って証明書または証明書チェーンを信頼できる証明書のリストに追加したりするなど、特定のエンティティーをキーストアに追加する場合です。これ以後、\f3keytool\fP コマンドでエンティティーを参照する場合は、このときに指定した別名を使用する必要があります。 -.LP -.LP -たとえば、\f2duke\fP という別名を使って新しい公開鍵と非公開鍵のペアを生成し、公開鍵を自己署名証明書 (「証明書チェーン」を参照) でラップするとします。 この場合は、次のコマンドを実行します。 +̾ꤹΤϡ\-genseckey ޥɤȤä̩ꡢ\-genkeypair ޥɤȤäƸڥ () ꡢ\-importcert ޥɤȤäƾޤϾǤΥꥹȤɲäꤹʤɡΥƥƥ򥭡ȥɲäǤʸ塢\f3keytool\fP ޥɤǥƥƥ򻲾ȤϡΤȤ˻ꤷ̾Ѥɬפޤ .LP +ȤС\f2duke\fP Ȥ̾ȤäƿΥڥ򼫸ʽ̾ (־פ򻲾) ǥåפȤޤ ξϡΥޥɤ¹Ԥޤ .nf \f3 .fl @@ -723,9 +1343,8 @@ o .fl \fP .fi - .LP -ここでは、初期パスワードとして dukekeypasswd を指定しています。 以後、別名 \f2duke\fP に関連付けられた非公開鍵にアクセスするコマンドを実行するときは、このパスワードが必要になります。duke の非公開鍵のパスワードをあとから変更するには、次のコマンドを実行します。 +ǤϡѥɤȤ dukekeypasswd ꤷƤޤ ʸ塢̾ duke Ϣդ줿˥륳ޥɤ¹ԤȤϡΥѥɤɬפˤʤޤ duke Υѥɤ򤢤ȤѹˤϡΥޥɤ¹Ԥޤ .nf \f3 .fl @@ -733,49 +1352,37 @@ o .fl \fP .fi - .LP -パスワードが、dukekeypasswd から newpass に変更されます。 +ѥɤdukekeypasswd newpass ѹޤ .LP -注 \-テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。必要なパスワードのオプションをコマンド行で指定しなかった場合は、パスワードの入力を求められます。 -.LP -.RE +: ƥȤŪȤ硢ޤϰǤ뤳Ȥ狼äƤ륷ƥǼ¹ԤʳϡޥɹԤ䥹ץȤǥѥɤꤷʤǤɬפʥѥɤΥץ򥳥ޥɹԤǻꤷʤäϡѥɤϤޤ .TP 2 o -\f3キーストアの実装\fP -.RS 3 -\f2java.security\fP パッケージで提供される \f2KeyStore\fP クラスには、キーストア内の情報に対するアクセスと変更を行うための明確に定義されたインタフェースが用意されています。キーストアの固定実装としては、それぞれが特定の「タイプ」のキーストアを対象とする複数の異なる実装が存在可能です。 -.LP -現在、\f3keytool\fP と \f3jarsigner\fP の 2 つのコマンド行ツールと、\f3Policy Tool\fP という名前の 1 つの GUI ベースのツールが、キーストアの実装を使用しています。\f2KeyStore\fP は public として使用可能なので、JDK ユーザーは \f2KeyStore\fP を使ったほかのセキュリティーアプリケーションも作成できます。 +\f3ȥμ\fP .LP +\f2KeyStore\fP 饹 ( \f2java.security\fP ѥå󶡤) ˤϡȥξФ륢ѹԤΤ줿󥿥եѰդƤޤȥθȤƤϡ줾줬Ρ֥ספΥȥоݤȤʣΰۤʤ¸߲ǽǤ .LP -キーストアには、Sun が提供する組み込みのデフォルトの実装があります。これは、JKS という名前の独自のキーストアタイプ (形式) を利用するもので、キーストアをファイルとして実装しています。この実装では、個々の非公開鍵は個別のパスワードによって保護され、キーストア全体の整合性も (非公開鍵とは別の) パスワードによって保護されます。 +ߡ\f3keytool\fP \f3jarsigner\fP 2 ĤΥޥɹԥġȡ\f3Policy Tool\fP Ȥ̾ 1 Ĥ GUI ١Υġ뤬ȥμѤƤޤ \f2KeyStore\fP public ȤƻѲǽʤΤǡJDK 桼 KeyStore ȤäۤΥƥץꥱǤޤ .LP +ȥˤϡOracle 󶡤Ȥ߹ߤΥǥեȤμޤϡJKS Ȥ̾ȼΥȥ () ѤΤǡȥեȤƼƤޤμǤϡġϸ̤Υѥɤˤäݸ졢ȥΤ (Ȥ̤) ѥɤˤäݸޤ .LP -キーストアの実装は、プロバイダベースです。具体的には、\f2KeyStore\fP が提供するアプリケーションインタフェースは、Service Provider Interface (SPI) という形で実装されています。つまり、対応する \f2KeystoreSpi\fP 抽象クラス (これも \f2java.security\fP パッケージに含まれている) があり、このクラスが Service Provider Interface のメソッドを定義しています。 これらのメソッドは、「プロバイダ」が実装しなければなりません。ここで、「プロバイダ」とは、Java Security API によってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。したがって、キーストアの実装を提供するには、 +ȥμϡץХ١ǤŪˤϡ \f2KeyStore\fP 󶡤륢ץꥱ󥤥󥿥եϡService Provider Interface (SPI) ȤǼƤޤĤޤꡢб \f2KeystoreSpi\fP ݥ饹 ( \f2java.security\fP ѥå˴ޤޤƤ) ꡢΥ饹֥ץХפɬפΤ Service Provider Interface Υ᥽åɤƤޤǡ֥ץХפȤϡJava Security API ˤäƥǽʥӥΥ֥åȤФθ󶡤ѥåޤϥѥåνΤȤǤäơȥμ󶡤ˤϡ .na -\f2「Java(TM) 暗号化アーキテクチャー用プロバイダの実装方法」\fP @ +\f2Java(TM) Ź沽ƥ㡼ѥץХμˡ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.htmlで説明しているように、クライアントが「プロバイダ」を実装し、KeystoreSpi サブクラスの実装を提供する必要があります。 -.LP -.LP -アプリケーションでは、\f2KeyStore\fP クラスが提供する getInstance ファクトリメソッドを使うことで、さまざまなプロバイダから異なる「タイプ」のキーストアの実装を選択できます。キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の非公開/秘密鍵とキーストア自体の整合性を保護するために使われるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。 -.LP -.LP -\f3keytool\fP は、任意のファイルベースのキーストア実装で動作します。keytool は、コマンド行から渡されたキーストアの場所をファイル名として扱い、これを FileInputStream に変換して、FileInputStream からキーストアの情報をロードします。一方、\f3jarsigner\fP ツールと \f3policytool\fP ツールは、URL で指定可能な任意の場所からキーストアを読み込むことができます。 +http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.htmlƤ褦ˡ饤Ȥ֥ץХפKeystoreSpi ֥饹μ󶡤ɬפޤ .LP +ץꥱǤϡKeyStore 饹󶡤 getInstance եȥ᥽åɤȤȤǡޤޤʥץХۤʤ֥ספΥȥμǤޤ ȥΥפϡȥγǼȥǡȤȤˡȥ/̩ȥȥΤݸ뤿˻Ȥ륢르ꥺޤۤʤ륿פΥȥμˤϡߴϤޤ .LP -\f3keytool\fP と \f3jarsigner\fP の場合、\f2\-storetype\fP オプションを使ってコマンド行でキーストアのタイプを指定できます。\f3Policy Tool\fPの場合は、「キーストア」メニューによってキーストアのタイプを指定できます。 +\f3keytool\fP ϡǤդΥե١Υȥưޤkeytool ϡޥɹԤϤ줿ȥξե̾Ȥư FileInputStream ѴơFileInputStream 饭ȥξɤޤ\f3jarsigner\fP ġ \f3policytool\fP ġϡURL ǻǽǤդξ꤫饭ȥɤ߹ळȤǤޤ .LP +\f3keytool\fP \f3jarsigner\fP ξ硢\f2\-storetype\fP ץȤäƥޥɹԤǥȥΥפǤޤ\f3Policy Tool\fPξϡ֥ȥץ˥塼ˤäƥȥΥפǤޤ .LP -キーストアのタイプを明示的に指定しない場合、keytool、jarsigner、および policytool の各ツールは、セキュリティープロパティーファイル内で指定された \f2keystore.type\fP プロパティーの値に基づいてキーストアの実装を選択します。セキュリティープロパティーファイルは、\f2java.security\fP という名前でセキュリティープロパティーディレクトリ \f2java.home\fP/lib/security に置かれています。 \f2java.home\fP は、実行環境のディレクトリ (SDK の \f2jre\fP ディレクトリまたは Java 2 Runtime Environment の最上位ディレクトリ) です。 +ȥΥפŪ˻ꤷʤ硢keytooljarsigner policytool γƥġϡƥץѥƥեǻꤵ줿 \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.type\fP の値を取得し、この値で指定されたタイプのキーストアを実装しているプロバイダが見つかるまで、現在インストールされているすべてのプロバイダを調べます。目的のプロバイダが見つかると、そのプロバイダからのキーストアの実装を使います。 -.LP -.LP -\f2KeyStore\fP クラスでは \f2getDefaultType\fP という名前の static メソッドが定義されており、アプリケーションとアプレットはこのメソッドを使うことで \f2keystore.type\fP プロパティーの値を取得できます。次のコードは、デフォルトのキーストアタイプ (\f2keystore.type\fP プロパティーで指定されたタイプ) のインスタンスを生成します。 -.LP +\f2KeyStore\fP 饹Ǥ \f2getDefaultType\fP Ȥ̾ static ᥽åɤƤꡢץꥱȥץåȤϤΥ᥽åɤȤȤ \f2keystore.type\fP ץѥƥͤǤޤΥɤϡǥեȤΥȥ ( \f2keystore.type\fP ץѥƥǻꤵ줿) Υ󥹥󥹤ޤ .nf \f3 .fl @@ -783,11 +1390,8 @@ http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAPro .fl \fP .fi - -.LP -.LP -デフォルトのキーストアタイプは JKS (Sun が提供する独自のタイプのキーストアの実装) です。これは、セキュリティープロパティーファイル内の次の行によって指定されています。 .LP +ǥեȤΥȥפ JKS (Oracle 󶡤ȼΥפΥȥμ) ǤϡƥץѥƥեμιԤˤäƻꤵƤޤ .nf \f3 .fl @@ -795,14 +1399,10 @@ http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAPro .fl \fP .fi - -.LP .LP -各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。 -.LP -.LP -たとえば、pkcs12 と呼ばれるタイプのキーストアの実装を提供しているプロバイダパッケージを使用するには、上の行を次のように変更します。 +ƥġǥǥեȰʳΥȥμѤˤϡιԤѹ̤ΥȥΥפꤷޤ .LP +ȤСpkcs12 ȸƤФ륿פΥȥμ󶡤ƤץХѥåѤˤϡιԤ򼡤Τ褦ѹޤ .nf \f3 .fl @@ -810,561 +1410,163 @@ http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAPro .fl \fP .fi - .LP -注:キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、JKS と jks は同じものとして扱われます。 +: ȥΥפλǤϡʸȾʸ϶̤ޤ󡣤ȤСJKS jks ƱΤȤưޤ .RE -.RE -.SS -証明書 -.LP -.RS 3 .LP -\f3証明書\fP (\f3公開鍵証明書\fPとも呼ぶ) とは、あるエンティティー (「発行者」) からのデジタル署名付きの文書のことです。 証明書には、ほかのあるエンティティー (「署名者」) の公開鍵 (およびその他の情報) が特別な値を持っていることが書かれています。 -.RE +.SS + +.LP +\f3\fP (\f3\fPȤƤ) Ȥϡ륨ƥƥ (ȯԼԡ) Υǥ̾դʸΤȤǤ ˤϡۤΤ륨ƥƥ (ֽ̾ԡ) θ (Ӥ¾ξ) ̤ͤäƤ뤳Ȥ񤫤Ƥޤ .RS 3 .TP 2 o -.TP 2 -o -\f3証明書の用語\fP -.RS 3 - -.LP +\f3Ѹ\fP .RS 3 .TP 3 -公開鍵 -公開鍵は、特定のエンティティーに関連付けられた数です。 公開鍵は、該当するエンティティーとの間に信頼できる関係を持つ必要があるすべての人に対して公開することを意図したものです。公開鍵は、署名を検証するのに使われます。 + +.LP +ϡΥƥƥ˴Ϣդ줿Ǥϡ륨ƥƥȤδ֤˿Ǥطɬפ뤹٤ƤοͤФƸ뤳ȤտޤΤǤϡ̾򸡾ڤΤ˻Ȥޤ .TP 3 -デジタル署名 -データが「\f2デジタル署名\fP」されると、そのデータは、エンティティーの「アイデンティティー」と、そのエンティティーがデータの内容について知っていることを証明する署名とともに格納されます。エンティティーの非公開鍵を使ってデータに署名を付けると、データの偽造は不可能になります。 +ǥ̾ +.LP +ǡ֥ǥ̾פȡΥǡϡƥƥΡ֥ǥƥƥפȡΥƥƥǡƤˤĤΤäƤ뤳Ȥ̾ȤȤ˳ǼޤƥƥȤäƥǡ˽̾դȡǡε¤Բǽˤʤޤ .TP 3 -アイデンティティー -エンティティーを特定するための既知の方法です。システムによっては、公開鍵をアイデンティティーにするものがあります。 公開鍵のほかにも、Unix UID や電子メールアドレス、X.509 識別名など、さまざまなものをアイデンティティーとすることができます。 +ǥƥƥ +.LP +ƥƥꤹ뤿δΤˡǤƥˤäƤϡ򥢥ǥƥƥˤΤޤΤۤˤ⡢Unix UID Żҥ᡼륢ɥ쥹X.509 ̾ʤɡޤޤʤΤ򥢥ǥƥƥȤ뤳ȤǤޤ .TP 3 -署名 -署名は、なんらかのデータを基にエンティティー (署名者。 証明書に関しては発行者とも呼ばれる) の非公開鍵を使って計算されます。 +̾ +.LP +̾ϡʤ餫Υǡ˥ƥƥ (̾ԡ ˴ؤƤȯԼԤȤƤФ) ȤäƷ׻ޤ .TP 3 -非公開鍵 -非公開鍵は特定のエンティティーだけが知っている数のことで、この数のことを、そのエンティティーの非公開鍵といいます。非公開鍵は、ほかに知られないように秘密にしておくことが前提になっています。 非公開鍵と公開鍵は、すべての公開鍵暗号化システムで対になって存在しています。DSA などの典型的な公開鍵暗号化システムの場合、1 つの非公開鍵は正確に 1 つの公開鍵に対応します。非公開鍵は、署名を計算するのに使われます。 + +.LP +ΥƥƥΤäƤΤȤǡοΤȤ򡢤ΥƥƥȤޤϡۤΤʤ褦̩ˤƤȤˤʤäƤޤȸϡ٤ƤθŹ沽ƥФˤʤä¸ߤƤޤDSA ʤɤŵŪʸŹ沽ƥξ硢1 ĤΤ 1 Ĥθбޤϡ̾׻Τ˻Ȥޤ .TP 3 -エンティティー -エンテンティーは、人、組織、プログラム、コンピュータ、企業、銀行など、一定の度合いで信頼の対象となるさまざまなものを指します。 -.RE - +ƥƥ .LP +ƥƥϡ͡ȿץࡢԥ塼ȡԤʤɡٹ礤ǿоݤȤʤ뤵ޤޤʤΤؤޤ +.RE .LP -公開鍵暗号化では、その性質上、ユーザーの公開鍵にアクセスする必要があります。大規模なネットワーク環境では、互いに通信しているエンティティー間で以前の関係が引き続き確立されていると仮定したり、使われているすべての公開鍵を収めた信頼できるリポジトリが存在すると仮定したりすることは不可能です。このような公開鍵の配布に関する問題を解決するために証明書が考案されました。現在では、「証明書発行局 (CA)」が信頼できる第三者として機能します。CA は、ほかのエンティティーの証明書に署名する (発行する) 行為を、信頼して任されているエンティティー (企業など) です。CA は法律上の契約に拘束されるので、有効かつ信頼できる証明書だけを作成するものとして扱われます。 +Ź沽Ǥϡ塢桼θ˥ɬפޤ絬ϤʥͥåȥĶǤϡߤ̿Ƥ륨ƥƥ֤ǰδط³ΩƤȲꤷꡢȤƤ뤹٤Ƥθ᤿Ǥݥȥ꤬¸ߤȲꤷꤹ뤳ȤԲǽǤΤ褦ʸۤ˴ؤ褹뤿˾񤬹ͰƤޤߤǤϡ־ȯԶ (CA)פǤ軰ԤȤƵǽޤCA ϡۤΥƥƥξ˽̾ (ȯԤ) ԰٤򡢿ꤷǤƤ륨ƥƥ (Ȥʤ) ǤCA ˡΧη˹«ΤǡͭĿǤΤȤưޤ .na \f2VeriSign\fP @ .fi -http://www.verisign.com/、 +http://www.verisign.com/ .na \f2Thawte\fP @ .fi -http://www.thawte.com/、 +http://www.thawte.com/ .na \f2Entrust\fP @ .fi -http://www.entrust.com/ をはじめ、多くの CA が存在します。Netscape や Microsoft の認証サーバー、Entrust の CA 製品などを所属組織内で利用すれば、独自の証明書発行局を運営することも可能です。 -.LP -.LP -\f3keytool\fP を使うと、証明書の表示、インポート、およびエクスポートを行うことができます。また、自己署名証明書を生成することもできます。 -.LP +http://www.entrust.com/ Ϥᡢ¿ CA ¸ߤޤMicrosoft ǧڥСEntrust CA ʤʤɤ°ȿѤСȼξȯԶɤ򱿱Ĥ뤳ȤǽǤ .LP -現在、\f3keytool\fP は X.509 証明書を対象にしています。 +\f3keytool\fP ȤȡɽݡȡӥݡȤԤȤǤޤޤʽ̾뤳ȤǤޤ .LP -.RE +ߡ\f3keytool\fP X.509 оݤˤƤޤ .TP 2 o -\f3X.509 証明書\fP -.RS 3 -X.509 規格では、証明書に含める情報が定義されており、この情報を証明書に書き込む方法 (データ形式) についても記述されています。証明書のすべてのデータは、ASN.1/DER と呼ばれる 2 つの関連規格を使って符号化されます。\f2Abstract Syntax Notation 1\fP はデータについて記述しています。\f2Definite Encoding Rules\fP は、データの保存および転送の方法について記述しています。 +\f3X.509 \fP .LP -すべての X.509 証明書は、署名のほかに次のデータを含んでいます。 +X.509 ʤǤϡ˴ޤƤꡢξ˽񤭹ˡ (ǡ) ˤĤƤ⵭ҤƤޤΤ٤ƤΥǡϡASN.1/DER ȸƤФ 2 ĤδϢʤȤä沽ޤ\f2Abstract Syntax Notation 1\fP ϥǡˤĤƵҤƤޤ\f2Definite Encoding Rules\fP ϡǡ¸žˡˤĤƵҤƤޤ .LP +٤Ƥ X.509 ϡ̾Τۤ˼ΥǡޤǤޤ .RS 3 .TP 3 -バージョン -証明書に適用される X.509 規格のバージョンを特定します。 証明書に指定できる情報は、バージョンによって異なります。これまでに、3 つのバージョンが定義されています。\f3keytool\fP では、v1、v2、および v3 の証明書のインポートとエクスポートが可能です。keytool が生成するのは、v3 の証明書です。 +С .LP -「X.509 Version 1」は、1988 年から利用されて広く普及しており、もっとも一般的です。 +ŬѤ X.509 ʤΥСꤷޤ˻ǤϡСˤäưۤʤޤޤǤˡ3 ĤΥСƤޤ\f3keytool\fP Ǥϡv1v2 v3 ξΥݡȤȥݡȤǽǤkeytool Τϡv3 ξǤ .LP -「X.509 Version 2」では、Subject や発行者の名前をあとで再利用できるようにするために、Subject と発行者の一意識別子の概念が導入されました。ほとんどの証明書プロファイル文書では、名前を再使用しないことと、証明書で一意な識別子を使わないことが、強く推奨されています。Version 2 の証明書は、広くは使われていません。 +X.509 Version 1פϡ1988 ǯѤƹڤƤꡢäȤŪǤ .LP -「X.509 Version 3」はもっとも新しい (1996 年) 規格で、エクステンションの概念をサポートしています。エクステンションは誰でも定義することができ、証明書に含めることができます。現在使われている一般的なエクステンションとしては、KeyUsage (「署名専用」など、鍵の使用を特定の目的に制限する)、AlternativeNames (DNS 名、電子メールアドレス、IP アドレスなど、ほかのアイデンティティーを公開鍵に関連付けることができる) などがあります。エクステンションには、critical というマークを付けて、そのエクステンションのチェックと使用を義務づけることができます。たとえば、critical とマークされ、KeyCertSign が設定された KeyUsage エクステンションが証明書に含まれている場合、この証明書を SSL 通信中に提示すると、証明書が拒否されます。 これは、証明書のエクステンションによって、関連する非公開鍵が証明書の署名専用として指定されており、SSL では使用できないためです。 +X.509 Version 2פǤϡSubject ȯԼԤ̾򤢤ȤǺѤǤ褦ˤ뤿ˡSubject ȯԼԤΰռ̻ҤγǰƳޤۤȤɤξץեʸǤϡ̾ƻѤʤȤȡǰդʼ̻ҤȤʤȤ侩ƤޤVersion 2 ξϡϻȤƤޤ +.LP +X.509 Version 3פϤäȤ⿷ (1996 ǯ) ʤǡƥ󥷥γǰ򥵥ݡȤƤޤƥ󥷥ïǤ뤳ȤǤ˴ޤ뤳ȤǤޤ߻ȤƤŪʥƥ󥷥ȤƤϡKeyUsage (ֽ̾ѡפʤɡλѤŪ¤)AlternativeNames (DNS ̾Żҥ᡼륢ɥ쥹IP ɥ쥹ʤɡۤΥǥƥƥ˴Ϣդ뤳ȤǤ) ʤɤޤƥ󥷥ˤϡcritical ȤޡդơΥƥ󥷥ΥåȻѤ̳Ť뤳ȤǤޤȤСcritical ȥޡ졢KeyCertSign ꤵ줿 KeyUsage ƥ󥷥󤬾˴ޤޤƤ硢ξ SSL ̿󼨤ȡ񤬵ݤޤϡΥƥ󥷥ˤäơϢν̾ѤȤƻꤵƤꡢSSL ǤϻѤǤʤǤ .TP 3 -シリアル番号 -証明書を作成したエンティティーは、そのエンティティーが発行するほかの証明書と区別するために、証明書にシリアル番号を割り当てます。この情報は、さまざまな方法で使われます。 たとえば、証明書が取り消されると、シリアル番号が証明書の取り消しリスト (CRL) に格納されます。 +ꥢֹ +.LP +ƥƥϡΥƥƥȯԤۤξȶ̤뤿ˡ˥ꥢֹƤޤξϡޤޤˡǻȤޤȤС񤬼äȡꥢֹ椬μäꥹ (CRL) ˳Ǽޤ .TP 3 -署名アルゴリズム識別子 -証明書に署名を付けるときに CA が使ったアルゴリズムを特定します。 +̾르ꥺ༱̻ +.LP +˽̾դȤ CA Ȥä르ꥺꤷޤ .TP 3 -発行者名 -証明書に署名を付けたエンティティーの X.500 識別名です。エンティティーは、通常は CA です。この証明書を使うことは、証明書に署名を付けたエンティティーを信頼することを意味します。「ルート」つまり「トップレベル」の CA の証明書など、場合によっては発行者が自身の証明書に署名を付けることがある点に注意してください。 +ȯԼ̾ +.LP +˽̾դƥƥ X.500 ̾Ǥƥƥϡ̾ CA ǤξȤȤϡ˽̾դƥƥꤹ뤳Ȥ̣ޤ֥롼ȡפĤޤ֥ȥåץ٥פ CA ξʤɡˤäƤȯԼԤȤξ˽̾դ뤳ȤդƤ .TP 3 -有効期間 -各証明書は、限られた期間だけ有効になります。この期間は開始の日時と終了の日時によって指定され、数秒の短い期間から 100 年という長期にわたることもあります。選択される有効期間は、証明書への署名に使われる非公開鍵の強度や証明書に支払う金額など、さまざまな要因で異なります。有効期間は、使用する非公開鍵が損なわれない場合に、エンティティーが公開鍵を信頼できると期待される期間です。 +ͭ +.LP +ƾϡ¤줿֤ͭˤʤޤδ֤ϳϤȽλˤäƻꤵ졢äû֤ 100 ǯȤĹˤ錄뤳Ȥ⤢ޤ򤵤֤ͭϡؤν̾˻Ȥζ٤˻ʧۤʤɡޤޤװǰۤʤޤ֤ͭϡѤ»ʤʤˡƥƥǤȴԤ֤Ǥ .TP 3 -Subject 名 -証明書で公開鍵が識別されているエンティティーの名前です。この名前は X.500 標準を使うので、インターネット全体で一意なものと想定されます。これは、エンティティーの X.500 識別名 (DN) です。 次に例を示します。 +Subject ̾ +.LP +Ǹ̤Ƥ륨ƥƥ̾Ǥ̾ X.500 ɸȤΤǡ󥿡ͥåΤǰդʤΤꤵޤϡƥƥ X.500 ̾ (DN) Ǥ򼨤ޤ .nf \f3 .fl - CN=Java Duke, OU=Java Software Division, O=Sun Microsystems Inc, C=US + CN=Java Duke, OU=Java Software Division, O=Oracle Corporation, C=US .fl \fP .fi -これらはそれぞれ主体の通称、組織単位、組織、国を表します。 +.LP +Ϥ줾Τ̾Ρȿñ̡ȿɽޤ .TP 3 -Subject の公開鍵情報 -名前を付けられたエンティティーの公開鍵とアルゴリズム識別子です。 アルゴリズム識別子では、公開鍵に対して使われている公開鍵暗号化システムおよび関連する鍵パラメータが指定されています。 -.RE - +Subject θ .LP +̾դ줿ƥƥθȥ르ꥺ༱̻ҤǤ르ꥺ༱̻ҤǤϡФƻȤƤŹ沽ƥपӴϢ븰ѥ᡼ꤵƤޤ .RE .TP 2 o -\f3証明書チェーン\fP -.RS 3 -.LP -\f3keytool\fP では、非公開鍵および関連する証明書「チェーン」を含むキーストアの「鍵」エントリを作成し、管理することができます。このようなエントリでは、非公開鍵に対応する公開鍵は、チェーンの最初の証明書に含まれています。 -.LP -.LP -鍵を初めて作成すると (\-genkeypair コマンドを参照)、「自己署名証明書」という 1 つの要素だけを含むチェーンが開始されます。自己署名証明書は、発行者 (署名者) が主体 (証明書で認証されている公開鍵の持ち主) と同じである証明書のことです。\f2\-genkeypair\fP コマンドを呼び出して新しい公開鍵と非公開鍵のペアを作成すると、公開鍵は常に自己署名証明書でラップされます。 -.LP -.LP -このあと、証明書署名要求 (CSR) が生成されて (\-certreq コマンドを参照)、CSR が証明書発行局 (CA) に送信されると、CA からの応答がインポートされ (\-importcert コマンドを参照)、元の自己署名証明書は証明書チェーンによって置き換えられます。チェーンの最後にあるのは、Subject の公開鍵を認証した CA が発行した証明書 (応答) です。チェーン内のその前の証明書は、「CA」の公開鍵を認証する証明書です。 +\f3\fP .LP +\f3keytool\fP ǤϡӴϢ֥פޤ७ȥΡָץȥ뤳ȤǤޤΤ褦ʥȥǤϡбϡκǽξ˴ޤޤƤޤ .LP -CA の公開鍵を認証する証明書は、多くの場合、自己署名証明書 (つまり CA が自身の公開鍵を認証した証明書) であり、これはチェーンの最初の証明書になります。場合によっては、CA が証明書のチェーンを返すこともあります。この場合、チェーン内の最後の証明書 (CA によって署名され、鍵エントリの公開鍵を認証する証明書) に変わりはありませんが、チェーン内のその前の証明書は、CSR の送信先の CA とは「別の」CA によって署名され、CSR の送信先の CA の公開鍵を認証する証明書になります。さらに、チェーン内のその前の証明書は、次の CA の鍵を認証する証明書になります。 以下同様に、自己署名された「ルート」証明書に達するまでチェーンが続きます。したがって、チェーン内の (最初の証明書以後の) 各証明書では、チェーン内の次の証明書の署名者の公開鍵が認証されていることになります。 +ƺ (\-genkeypair ޥɤ򻲾)ּʽ̾פȤ 1 ĤǤޤ󤬳Ϥޤʽ̾ϡȯԼ (̾) (ǧڤƤλ) ƱǤΤȤǤ \f2\-genkeypair\fP ޥɤƤӽФƿΥڥȡϾ˼ʽ̾ǥåפޤ .LP +Τȡ̾׵ (CSR) (\-certreq ޥɤ򻲾)CSR ȯԶ (CA) ȡCA αݡȤ (\-importcert ޥɤ򻲾)μʽ̾Ͼˤä֤ޤκǸˤΤϡSubject θǧڤ CA ȯԤ () ǤΤξϡCAפθǧڤǤ .LP -多くの CA は、チェーンをサポートせずに発行済みの証明書だけを返します。 特に、中間の CA が存在しないフラットな階層構造の場合は、その傾向が顕著です。このような場合は、キーストアにすでに格納されている信頼できる証明書情報から、証明書チェーンを確立する必要があります。 +CA θǧڤϡ¿ξ硢ʽ̾ (Ĥޤ CA Ȥθǧڤ) ǤꡢϥκǽξˤʤޤˤäƤϡCA Υ֤Ȥ⤢ޤξ硢κǸξ (CA ˤäƽ̾졢ȥθǧڤ) ѤϤޤ󤬡ΤξϡCSR CA Ȥϡ̤ΡCA ˤäƽ̾졢CSR CA θǧڤˤʤޤˡΤξϡ CA θǧڤˤʤޤ ʲƱͤˡʽ̾줿֥롼ȡ׾ãޤǥ³ޤäơ (ǽξʸ) ƾǤϡμξν̾ԤθǧڤƤ뤳Ȥˤʤޤ .LP +¿ CA ϡ򥵥ݡȤȯԺѤߤξ֤ޤäˡ֤ CA ¸ߤʤեåȤʳع¤ξϡηǤΤ褦ʾϡȥˤǤ˳ǼƤ뿮Ǥ󤫤顢Ωɬפޤ .LP -別の応答形式 (PKCS#7 で定義されている形式) でも、発行済み証明書に加え、証明書チェーンのサポートが含まれています。\f3keytool\fP では、どちらの応答形式も扱うことができます。 +̤α (PKCS#7 Ƥ) Ǥ⡢ȯԺѤ߾˲äΥݡȤޤޤƤޤ\f3keytool\fP ǤϡɤαⰷȤǤޤ .LP -.LP -トップレベル (ルート) CA の証明書は、自己署名証明書です。ただし、ルートの公開鍵に対する信頼は、ルートの証明書自体から導き出されるものではなく (たとえば、VeriSign ルート CA のような有名な識別名を使った自己署名証明書を作成すること自体は誰でも可能)、新聞などのほかの情報源に由来するものです。ルート CA の公開鍵は広く知られています。ルート CA の公開鍵を証明書に格納する理由は、証明書という形式にすることで多くのツールから利用できるようになるからにすぎません。 つまり、証明書は、ルート CA の公開鍵を運ぶ「媒体」として利用されるだけです。ルート CA の証明書をキーストアに追加するときは、その前に証明書の内容を表示し (\f2\-printcert\fP オプションを使用)、表示されたフィンガープリントと、新聞やルート CA の Web ページなどから入手した既知のフィンガープリントとを比較する必要があります。 -.LP -.RE +ȥåץ٥ (롼) CA ξϡʽ̾Ǥ롼ȤθФ뿮ϡ롼ȤξΤƳФΤǤϤʤ (ȤСVeriSign 롼 CA Τ褦ͭ̾ʼ̾Ȥäʽ̾뤳ȼΤïǤǽ)ʹʤɤΤۤξ󸻤ͳ褹ΤǤ롼 CA θϹΤƤޤ롼 CA θ˳ǼͳϡȤˤ뤳Ȥ¿Υġ뤫ѤǤ褦ˤʤ뤫ˤޤ Ĥޤꡢϡ롼 CA θ򱿤֡ΡפȤѤǤ롼 CA ξ򥭡ȥɲäȤϡ˾Ƥɽ ( \f2\-printcert\fP ץ)ɽ줿ե󥬡ץȤȡʹ롼 CA Web ڡʤɤꤷΤΥե󥬡ץȤȤӤɬפޤ .TP 2 o -\f3cacerts 証明書ファイル\fP -.RS 3 +\f3cacerts ե\fP .LP -\f3cacerts\fP 証明書ファイルは、セキュリティープロパティーディレクトリ \f2java.home\fP/lib/security に置かれています。 \f2java.home\fP は、実行環境のディレクトリ (SDK の \f2jre\fP ディレクトリまたは Java 2 Runtime Environment の最上位ディレクトリ) です。 +\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 ファイルは、CA の証明書を含む、システム全体のキーストアです。システム管理者は、キーストアタイプに jks を指定することで、\f3keytool\fP を使ってこのファイルの構成と管理を行うことができます。cacerts キーストアファイルは、次の別名および X.500 所有者識別名を持ついくつかのルート CA 証明書を含んだ状態で出荷されています。 -.LP -.RS 3 -.TP 2 -* -\f3Alias\fP:thawtepersonalfreemailca -.br -\f3Owner DN\fP:EmailAddress=personal\-freemail@thawte.com, -.br -CN=Thawte Personal Freemail CA, -.br -OU=Certification Services Division, -.br -O=Thawte Consulting, L=Cape Town, ST=Western Cape, C=ZA -.TP 2 -* -\f3Alias\fP:thawtepersonalbasicca -.br -\f3Owner DN\fP:EmailAddress=personal\-basic@thawte.com, -.br -CN=Thawte Personal Basic CA, -.br -OU=Certification Services Division, -.br -O=Thawte Consulting, L=Cape Town, ST=Western Cape, C=ZA -.TP 2 -* -\f3Alias\fP:thawtepersonalpremiumca -.br -\f3Owner DN\fP:EmailAddress=personal\-premium@thawte.com, -.br -CN=Thawte Personal Premium CA, -.br -OU=Certification Services Division, -.br -O=Thawte Consulting, L=Cape Town, ST=Western Cape, C=ZA -.TP 2 -* -\f3Alias\fP:thawteserverca -.br -\f3Owner DN\fP:EmailAddress=server\-certs@thawte.com, -.br -CN=Thawte Server CA, OU=Certification Services Division, -.br -O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA -.TP 2 -* -\f3Alias\fP:thawtepremiumserverca -.br -\f3Owner DN\fP:EmailAddress=premium\-server@thawte.com, -.br -CN=Thawte Premium Server CA, -.br -OU=Certification Services Division, -.br -O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA -.TP 2 -* -\f3Alias\fP:verisignclass1ca -.br -\f3Owner DN\fP:OU=Class 1 Public Primary Certification Authority, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass2ca -.br -\f3Owner DN\fP:OU=Class 2 Public Primary Certification Authority, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass3ca -.br -\f3Owner DN\fP:OU=Class 3 Public Primary Certification Authority, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignserverca -.br -\f3Owner DN\fP:OU=Secure Server Certification Authority, -.br -O="RSA Data Security, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass1g2ca -.br -\f3Owner DN\fP:OU=VeriSign Trust Network, -.br -OU="(c) 1998 VeriSign, Inc. \- For authorized use only", -.br -OU=Class 1 Public Primary Certification Authority \- G2, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass1g3ca -.br -\f3Owner DN\fP:CN=VeriSign Class 1 Public Primary Certification Authority \- G3, OU="(c) 1999 VeriSign, Inc. \- For authorized use only", -.br -OU=VeriSign Trust Network, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass2g2ca -.br -\f3Owner DN\fP:OU=VeriSign Trust Network, -.br -OU="(c) 1998 VeriSign, Inc. \- For authorized use only", -.br -OU=Class 2 Public Primary Certification Authority \- G2, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass2g3ca -.br -\f3Owner DN\fP:CN=VeriSign Class 2 Public Primary Certification Authority \- G3, -.br -OU="(c) 1999 VeriSign, Inc. \- For authorized use only", -.br -OU=VeriSign Trust Network, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass3g2ca -.br -\f3Owner DN\fP:OU=VeriSign Trust Network, -.br -OU="(c) 1998 VeriSign, Inc. \- For authorized use only", -.br -OU=Class 3 Public Primary Certification Authority \- G2, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:verisignclass3g3ca -.br -\f3Owner DN\fP:CN=VeriSign Class 3 Public Primary Certification Authority \- G3, -.br -OU="(c) 1999 VeriSign, Inc. \- For authorized use only", -.br -OU=VeriSign Trust Network, -.br -O="VeriSign, Inc.", C=US -.TP 2 -* -\f3Alias\fP:baltimorecodesigningca -.br -\f3Owner DN\fP:CN=Baltimore CyberTrust Code Signing Root, -.br -OU=CyberTrust, O=Baltimore, C=IE -.TP 2 -* -\f3Alias\fP:gtecybertrustglobalca -.br -\f3Owner DN\fP:CN=GTE CyberTrust Global Root, -.br -OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US -.TP 2 -* -\f3Alias\fP:baltimorecybertrustca -.br -\f3Owner DN\fP:CN=Baltimore CyberTrust Root, -.br -OU=CyberTrust, O=Baltimore, C=IE -.TP 2 -* -\f3Alias\fP:gtecybertrust5ca -.br -\f3Owner DN\fP:CN=GTE CyberTrust Root 5, -.br -OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US -.TP 2 -* -\f3Alias\fP:entrustclientca -.br -\f3Owner DN\fP:CN=Entrust.net Client Certification Authority, -.br -OU=(c) 1999 Entrust.net Limited, -.br -OU=www.entrust.net/Client_CA_Info/CPS incorp. by ref. limits liab., -.br -O=Entrust.net, C=US -.TP 2 -* -\f3Alias\fP:entrustglobalclientca -.br -\f3Owner DN\fP:CN=Entrust.net Client Certification Authority, -.br -OU=(c) 2000 Entrust.net Limited, -.br -OU=www.entrust.net/GCCA_CPS incorp. by ref. (limits liab.), -.br -O=Entrust.net -.TP 2 -* -\f3Alias\fP:entrust2048ca -.br -\f3Owner DN\fP:CN=Entrust.net Certification Authority (2048), -.br -OU=(c) 1999 Entrust.net Limited, -.br -OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), -.br -O=Entrust.net -.TP 2 -* -\f3Alias\fP:entrustsslca -.br -\f3Owner DN\fP:CN=Entrust.net Secure Server Certification Authority, -.br -OU=(c) 1999 Entrust.net Limited, -.br -OU=www.entrust.net/CPS incorp. by ref. (limits liab.), -.br -O=Entrust.net, C=US -.TP 2 -* -\f3Alias\fP:entrustgsslca -.br -\f3Owner DN\fP:CN=Entrust.net Secure Server Certification Authority, -.br -OU=(c) 2000 Entrust.net Limited, -.br -OU=www.entrust.net/SSL_CPS incorp. by ref. (limits liab.), -.br -O=Entrust.net -.TP 2 -* -\f3Alias\fP:godaddyclass2ca -.br -\f3Owner DN\fP:OU=Go Daddy Class 2 Certification Authority, -.br -O="The Go Daddy Group, Inc.", C=US -.TP 2 -* -\f3Alias\fP:starfieldclass2ca -.br -\f3Owner DN\fP:OU=Starfield Class 2 Certification Authority, -.br -O="Starfield Technologies, Inc.", C=US -.TP 2 -* -\f3Alias\fP:valicertclass2ca -.br -\f3Owner DN\fP:EMAILADDRESS=info@valicert.com, -.br -CN=http://www.valicert.com/, -.br -OU=ValiCert Class 2 Policy Validation Authority, -.br -O="ValiCert, Inc.", L=ValiCert Validation Network -.TP 2 -* -\f3Alias\fP:geotrustglobalca -.br -\f3Owner DN\fP:CN=GeoTrust Global CA, -.br -O=GeoTrust Inc., C=US -.TP 2 -* -\f3Alias\fP:equifaxsecureca -.br -\f3Owner DN\fP:OU=Equifax Secure Certificate Authority, -.br -O=Equifax, C=US -.TP 2 -* -\f3Alias\fP:equifaxsecureebusinessca1 -.br -\f3Owner DN\fP:CN=Equifax Secure eBusiness CA\-1, -.br -O=Equifax Secure Inc., C=US -.TP 2 -* -\f3Alias\fP:equifaxsecureebusinessca2 -.br -\f3Owner DN\fP:OU=Equifax Secure eBusiness CA\-2, -.br -O=Equifax Secure, C=US -.TP 2 -* -\f3Alias\fP:equifaxsecureglobalebusinessca1 -.br -\f3Owner DN\fP:CN=Equifax Secure Global eBusiness CA\-1, -.br -O=Equifax Secure Inc., C=US -.TP 2 -* -\f3Alias\fP:soneraclass1ca -.br -\f3Owner DN\fP:CN=Sonera Class1 CA, O=Sonera, C=FI -.TP 2 -* -\f3Alias\fP:soneraclass2ca -.br -\f3Owner DN\fP:CN=Sonera Class2 CA, O=Sonera, C=FI -.TP 2 -* -\f3Alias\fP:comodoaaaca -.br -\f3Owner DN\fP:CN=AAA Certificate Services, -.br -O=Comodo CA Limited, L=Salford, ST=Greater Manchester, C=GB -.TP 2 -* -\f3Alias\fP:addtrustclass1ca -.br -\f3Owner DN\fP:CN=AddTrust Class 1 CA Root, -.br -OU=AddTrust TTP Network, O=AddTrust AB, C=SE -.TP 2 -* -\f3Alias\fP:addtrustexternalca -.br -\f3Owner DN\fP:CN=AddTrust External CA Root, -.br -OU=AddTrust External TTP Network, O=AddTrust AB, C=SE -.TP 2 -* -\f3Alias\fP:addtrustqualifiedca -.br -\f3Owner DN\fP:CN=AddTrust Qualified CA Root, -.br -OU=AddTrust TTP Network, O=AddTrust AB, C=SE -.TP 2 -* -\f3Alias\fP:utnuserfirsthardwareca -.br -\f3Owner DN\fP:CN=UTN\-USERFirst\-Hardware, -.br -OU=http://www.usertrust.com, O=The USERTRUST Network, -.br -L=Salt Lake City, ST=UT, C=US -.TP 2 -* -\f3Alias\fP:utnuserfirstclientauthemailca -.br -\f3Owner DN\fP:CN=UTN\-USERFirst\-Client Authentication and Email, -.br -OU=http://www.usertrust.com, O=The USERTRUST Network, -.br -L=Salt Lake City, ST=UT, C=US -.TP 2 -* -\f3Alias\fP:utndatacorpsgcca -.br -\f3Owner DN\fP:CN=UTN \- DATACorp SGC, -.br -OU=http://www.usertrust.com, O=The USERTRUST Network, -.br -L=Salt Lake City, ST=UT, C=US -.TP 2 -* -\f3Alias\fP:utnuserfirstobjectca -.br -\f3Owner DN\fP:CN=UTN\-USERFirst\-Object, -.br -OU=http://www.usertrust.com, O=The USERTRUST Network, -.br -L=Salt Lake City, ST=UT, C=US -.RE - -.LP -.LP -cacerts キーストアファイルの初期パスワードは、changeit です。システム管理者は、SDK のインストール後、このファイルのパスワードとデフォルトアクセス権を変更する必要があります。 -.LP -.RS 3 - -.LP - -.LP -\f3重要:\fP\f4cacerts\fP\f3 ファイルを確認してください。\fP -.br - -.LP -\f2cacerts\fP ファイル内の CA は、署名および他のエンティティーへの証明書発行のためのエンティティーとして信頼されるため、\f2cacerts\fP ファイルの管理は慎重に行う必要があります。\f2cacerts\fP ファイルには、信頼する CA の証明書だけが含まれていなければなりません。ユーザーは、自身の責任において、\f2cacerts\fP ファイルにバンドルされている信頼できるルート CA 証明書を検証し、信頼性に関する独自の決定を行います。信頼できない CA 証明書を \f2cacerts\fP ファイルから削除するには、\f2keytool\fP コマンドの削除オプションを使用します。\f2cacerts\fP ファイルは JRE のインストールディレクトリにあります。このファイルを編集するアクセス権がない場合は、システム管理者に連絡してください。 -.br - -.LP -.RE - +cacerts ȥեνѥɤϡchangeit ǤƥԤϡSDK Υ󥹥ȡ塢ΥեΥѥɤȥǥեȥѹɬפޤ .LP -.RE +\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 -.RS 3 -.LP -多くの場合、証明書は、バイナリ符号化ではなく、インターネット RFC 1421 規格で定義されている出力可能符号化方式を使って格納されます。「Base 64 符号化」とも呼ばれるこの証明書形式では、電子メールやその他の機構を通じて、ほかのアプリケーションに証明書を容易にエクスポートできます。 -.LP -.LP -\f2\-importcert\fP コマンドと \f2\-printcert\fP コマンドでは、この形式の証明書とバイナリ符号化の証明書を読み込むことができます。 +\f3󥿡ͥå RFC 1421 沽\fP .LP +¿ξ硢ϡХʥ沽ǤϤʤ󥿡ͥå RFC 1421 ʤƤϲǽ沽ȤäƳǼޤBase 64 沽פȤƤФ뤳ξǤϡŻҥ᡼䤽¾ε̤ơۤΥץꥱ˾ưפ˥ݡȤǤޤ .LP -\f2\-exportcert\fP コマンドでは、デフォルトでバイナリ符号化の証明書が出力されます。 ただし、\f2\-rfc\fP オプションを指定した場合は、出力可能符号化方式の証明書が出力されます。 +\f2\-importcert\fP \f2\-printcert\fP ޥɤǤϡηξȥХʥ沽ξɤ߹ळȤǤޤ .LP +\f2\-exportcert\fP ޥɤǤϡǥեȤǥХʥ沽ξ񤬽Ϥޤ \f2\-rfc\fP ץꤷϡϲǽ沽ξ񤬽Ϥޤ .LP -\f2\-list\fP コマンドでは、デフォルトで証明書の MD5 フィンガープリントが出力されます。\f2\-v\fP オプションを指定すると、人間が読むことのできる形式で証明書が出力されます。 一方、\f2\-rfc\fP オプションを指定すると、出力可能符号化方式で証明書が出力されます。 -.LP -.LP -出力可能符号化方式で符号化された証明書は、次の行で始まります。 +\f2\-list\fP ޥɤǤϡǥեȤǾ SHA1 ե󥬡ץȤϤޤ \f2\-v\fP ץꤹȡʹ֤ɤळȤΤǤǾ񤬽Ϥޤ \f2\-rfc\fP ץꤹȡϲǽ沽Ǿ񤬽Ϥޤ .LP +ϲǽ沽沽줿ϡιԤǻϤޤޤ .nf \f3 .fl @@ -1372,11 +1574,8 @@ o .fl \fP .fi - -.LP -.LP -最後は、次の行で終わります。 .LP +ǸϡιԤǽޤ .nf \f3 .fl @@ -1385,40 +1584,38 @@ o \fP .fi .RE -.RE .LP .SS -X.500 識別名 +X.500 ̾ .LP -.RS 3 - .LP -X.500 識別名は、エンティティーを特定するために使われます。 たとえば、X.509 証明書の \f2subject\fP フィールドと \f2issuer\fP (署名者) フィールドで指定される名前は、X.500 識別名です。 \f3keytool\fP は、次のサブパートをサポートしています。 +X.500 ̾ϡƥƥꤹ뤿˻ȤޤȤСX.509 \f2subject\fP եɤ \f2issuer\fP (̾) եɤǻꤵ̾ϡX.500 ̾Ǥ\f3keytool\fP ϡΥ֥ѡȤ򥵥ݡȤƤޤ +.LP .RS 3 .TP 2 o -\f2commonName\fP \- 人の通称。 「Susan Jones」など +\f2commonName\fP \- ͤ̾Ρ Susan Jonesפʤ .TP 2 o -\f2organizationUnit\fP \- 小さな組織 (部、課など) の名称。 「仕入部」など +\f2organizationUnit\fP \- ȿ (ݤʤ) ̾Ρ ֻפʤ .TP 2 o -\f2organizationName\fP \- 大きな組織の名称。 「ABCSystems, Inc.」など +\f2organizationName\fP \- 礭ȿ̾Ρ ABCSystems, Inc.פʤ .TP 2 o -\f2localityName\fP \- 地域 (都市) 名。 「Palo Alto」など +\f2localityName\fP \- ϰ (Ի) ̾ Palo Altoפʤ .TP 2 o -\f2stateName\fP \- 州名または地方名。 「California」など +\f2stateName\fP \- ̾ޤ̾ Californiaפʤ .TP 2 o -\f2country\fP \- 2 文字の国番号。 「CH」など +\f2country\fP \- 2 ʸιֹ档 CHפʤ .RE .LP .LP -\f2\-genkeypair\fP コマンド の \f2\-dname\fP オプションの値として識別名文字列を指定する場合は、次の形式で指定する必要があります。 +\-genkeypair ޥɤ \f2\-dname\fP ץͤȤƼ̾ʸꤹϡ ηǻꤹɬפޤ .LP .nf \f3 @@ -1430,12 +1627,12 @@ CN=\fP\f4cName\fP\f3, OU=\fP\f4orgUnit\fP\f3, O=\fP\f4org\fP\f3, L=\fP\f4city\fP .LP .LP -イタリック体の項目は、実際に指定する値を表します。 短縮形のキーワードの意味は、次のとおりです。 +åΤιܤϡºݤ˻ꤹͤɽޤ û̷Υɤΰ̣ϡΤȤǤ .LP .nf \f3 .fl - CN=commonName + CN=commonName .fl OU=organizationUnit .fl @@ -1452,22 +1649,24 @@ CN=\fP\f4cName\fP\f3, OU=\fP\f4orgUnit\fP\f3, O=\fP\f4org\fP\f3, L=\fP\f4city\fP .LP .LP -次に示すのは、識別名文字列の例です。 +˼Τϡ̾ʸǤ .LP .nf \f3 .fl -CN=Mark Smith, OU=JavaSoft, O=Sun, L=Cupertino, S=California, C=US +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=JavaSoft, O=Sun, L=Cupertino, +keytool \-genkeypair \-dname "CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, .fl S=California, C=US" \-alias mark .fl @@ -1476,45 +1675,43 @@ S=California, C=US" \-alias mark .LP .LP -キーワードの短縮形では、大文字と小文字は区別されません。たとえば、CN、cn、および Cn は、どれも同じものとして扱われます。 +ɤû̷ǤϡʸȾʸ϶̤ޤ󡣤ȤСCNcn Cn ϡɤƱΤȤưޤ .LP .LP -一方、キーワードの指定順序には意味があり、各サブコンポーネントは上に示した順序で指定する必要があります。ただし、サブコンポーネントをすべて指定する必要はありません。たとえば、次のように一部のサブコンポーネントだけを指定できます。 +ɤλˤϰ̣ꡢƥ֥ݡͥȤϾ˼ǻꤹɬפޤ֥ݡͥȤ򤹤٤ƻꤹɬפϤޤ󡣤ȤСΤ褦˰Υ֥ݡͥȤǤޤ .LP .nf \f3 .fl -CN=Steve Meier, OU=SunSoft, O=Sun, C=US +CN=Steve Meier, OU=Java, O=Oracle, C=US .fl \fP .fi .LP .LP -識別名文字列の値にコンマが含まれる場合に、コマンド行で文字列を指定するときには、次のようにコンマを文字 \\ でエスケープする必要があります。 +̾ʸͤ˥ޤޤޤˡޥɹԤʸꤹȤˤϡΤ褦˥ޤʸ \\ ǥפɬפޤ .LP .nf \f3 .fl - cn=peter schuster, o=Sun Microsystems\\, Inc., o=sun, c=us + cn=Peter Schuster, ou=Java\\, Product Development, o=Oracle, c=US .fl \fP .fi .LP .LP -識別名文字列をコマンド行で指定する必要はありません。識別名を必要とするコマンドを実行するときに、コマンド行で識別名を指定しなかった場合は、各サブコンポーネントの入力を求められます。この場合は、コンマを文字 \\ でエスケープする必要はありません。 +̾ʸ򥳥ޥɹԤǻꤹɬפϤޤ󡣼̾ɬפȤ륳ޥɤ¹ԤȤˡޥɹԤǼ̾ꤷʤäϡƥ֥ݡͥȤϤޤξϡޤʸ \\ ǥפɬפϤޤ .LP -.RE .SS -信頼できる証明書のインポートに関する注意事項 +ǤΥݡȤ˴ؤջ .LP -.RS 3 - .LP -重要:信頼できる証明書として証明書をインポートする前に、証明書の内容を慎重に調べてください。 +: ǤȤƾ򥤥ݡȤˡƤ򿵽ŤĴ٤Ƥ +.LP .LP -まず、証明書の内容を表示し (\f2\-printcert\fP コマンドを使用するか、または \f2\-noprompt\fP オプションを指定しないで \f2\-import\fP コマンドを使用)、表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致するかどうかを確認します。たとえば、あるユーザーから証明書が送られてきて、この証明書を \f2/tmp/cert\fP という名前でファイルに格納しているとします。この場合は、信頼できる証明書のリストにこの証明書を追加する前に、\f2\-printcert\fP コマンドを実行してフィンガープリントを表示できます。 たとえば、次のようにします。 +ޤƤɽ (\-printcert ޥɤѤ뤫ޤ \-noprompt ץꤷʤ \-importcert ޥɤ) ɽ줿Υե󥬡ץȤԤե󥬡ץȤȰפ뤫ɤǧޤȤС桼Ƥơξ /tmp/cert Ȥ̾ǥե˳ǼƤȤޤ ξϡǤΥꥹȤˤξɲäˡ \f2\-printcert\fP ޥɤ¹Ԥƥե󥬡ץȤɽǤޤȤСΤ褦ˤޤ .LP .nf \f3 @@ -1534,91 +1731,94 @@ CN=Steve Meier, OU=SunSoft, O=Sun, C=US 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 -次に、証明書を送信した人物に連絡し、この人物が提示したフィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中でほかの何者か (攻撃者など) による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのもの (攻撃的意図を持つクラスファイルを含んだ JAR ファイルなど) を信頼することになります。 .LP -注:証明書をインポートする前に必ず \f2\-printcert\fP コマンドを実行しなければならないわけではありません。 キーストア内の信頼できる証明書のリストに証明書を追加する前に \f2\-importcert\fP コマンドを実行すると、証明書の情報が表示され、確認を求めるメッセージが表示されます。インポート操作は、この時点で中止できます。ただし、確認メッセージが表示されるのは、\f2\-importcert\fP コマンドを \f2\-noprompt\fP オプションを指定せずに実行した場合だけです。\f2\-noprompt\fP オプションが指定されている場合、ユーザーとの対話は行われません。 +ˡʪϢοʪ󼨤ե󥬡ץȤȡΥޥɤɽ줿ե󥬡ץȤȤӤޤե󥬡ץȤפСǤۤβԤ (Ԥʤ) ˤΤؤԤƤʤȤǧǤޤǤμι⤬ԤƤ硢åԤ鷺˾򥤥ݡȤȡԤˤäƽ̾줿٤ƤΤ (Ūտޤĥ饹եޤ JAR եʤ) ꤹ뤳Ȥˤʤޤ +.LP +.LP +: 򥤥ݡȤɬ \f2\-printcert\fP ޥɤ¹ԤʤФʤʤ櫓ǤϤޤ󡣥ȥοǤΥꥹȤ˾ɲä \f2\-importcert\fP ޥɤ¹Ԥȡξɽ졢ǧåɽޤݡϡλߤǤޤǧåɽΤϡ\-importcert ޥɤ \-noprompt ץꤻ˼¹ԤǤ \f2\-noprompt\fP ץ󤬻ꤵƤ硢桼ȤäϹԤޤ .LP -.RE .SS -パスワードに関する注意事項 +ѥɤ˴ؤջ .LP -.RS 3 - .LP +ȥФԤۤȤɤΥޥɤǤϡȥΥѥɤɬפǤޤΥޥɤǤϡ/̩Υѥɤɬפˤʤ뤳Ȥޤ .LP -キーストアに対する操作を行うほとんどのコマンドでは、ストアのパスワードが必要です。また、一部のコマンドでは、非公開/秘密鍵のパスワードが必要になることがあります。 .LP +ѥɤϥޥɹԤǻǤޤ (ȥΥѥɤˤ \f2\-storepass\fP ץΥѥɤˤ \f2\-keypass\fP ץ)ƥȤŪȤ硢ޤϰǤ뤳Ȥ狼äƤ륷ƥǼ¹ԤʳϡޥɹԤ䥹ץȤǥѥɤꤷʤǤ .LP -パスワードはコマンド行で指定できます (ストアのパスワードには \f2\-storepass\fP オプション、非公開鍵のパスワードには \f2\-keypass\fP オプションを使用)。ただし、テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。 .LP +ɬפʥѥɤΥץ򥳥ޥɹԤǻꤷʤäϡѥɤϤޤ .LP -必要なパスワードのオプションをコマンド行で指定しなかった場合は、パスワードの入力を求められます。 +.SS +ν˴ؤջ .LP -.RE -.SH "関連項目" .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 -.LP -jar(1) ツールのドキュメント +jar(1) ġΥɥ .TP 2 o -.LP -jarsigner(1) ツールのドキュメント +jarsigner(1) ġΥɥ .TP 2 o -.LP -\f3keytool\fP の使用例については、 .na -\f4「Java Tutorial」\fP @ +\f4keytool\fP\f2 λˤĤƤϡ\fP @ .fi -http://java.sun.com/docs/books/tutorialの +http://download.oracle.com/javase/tutorial/security/index.html .na -\f4「Security」\fP @ +\f2Java Tutorial\fP\f4\fP @ .fi -http://java.sun.com/docs/books/tutorial/security/index.htmlを参照 +http://download.oracle.com/javase/tutorial/Security\f3򻲾\fP .RE .LP -.SH "変更点" -.LP - +.SH "ѹ" .LP .LP -Java SE 6 で keytool のコマンドインタフェースが変更されました。 +Java SE 6 keytool Υޥɥ󥿥եѹޤ .LP .LP -\f3keytool\fP は、ユーザーがパスワードを入力する際にその入力内容を表示しなくなりました。ユーザーはパスワード入力時にその入力内容を確認できなくなったため、初期キーストアパスワードを設定したり鍵パスワードを変更したりするなど、パスワードの設定や変更を行うたびにパスワードの再入力を求められます。 +\f3keytool\fP ϡ桼ѥɤϤݤˤƤɽʤʤޤ桼ϥѥϻˤƤǧǤʤʤäᡢȥѥɤꤷ기ѥɤѹꤹʤɡѥɤѹԤӤ˥ѥɤκϤޤ .LP .LP -変更されたコマンドの中には、名前が変更されただけのものもあれば、廃止されてこのドキュメントに記載されなくなったものもあります。以前のすべてのコマンド (名前が変更されたものと廃止されたものの両方) は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。keytool のコマンドインタフェースに加えられたすべての変更点の概要を、次に示します。 +ѹ줿ޥɤˤϡ̾ѹ줿ΤΤ⤢СѻߤƤΥɥȤ˵ܤʤʤäΤ⤢ޤΤ٤ƤΥޥ (̾ѹ줿Τѻߤ줿Τξ) ϡΥ꡼Ǥ³ݡȤƤꡢΥ꡼Ǥ⥵ݡȤͽǤkeytool Υޥɥ󥿥ե˲ä줿٤Ƥѹγפ򡢼˼ޤ .LP .LP -名前が変更されたコマンド: +̾ѹ줿ޥ: .LP .RS 3 .TP 2 o -\f2\-export\fP の名前が \f2\-exportcert\fP に変更 +\f2\-export\fP ̾ \f2\-exportcert ѹ\fP .TP 2 o -\f2\-genkey\fP の名前が \f2\-genkeypair\fP に変更 +\f2\-genkey\fP ̾ \f2\-genkeypair ѹ\fP .TP 2 o -\f2\-import\fP の名前が \f2\-importcert\fP に変更 +\f2\-import\fP ̾ \f2\-importcert ѹ\fP .RE .LP .LP -廃止されてドキュメントに記載されなくなったコマンド: +ѻߤƥɥȤ˵ܤʤʤäޥ: .LP .RS 3 .TP 2 @@ -1626,19 +1826,19 @@ o .na \f2\-keyclone\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html#keycloneCmd +http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/keytool.html#keycloneCmd .TP 2 o .na \f2\-identitydb\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html#identitydbCmd +http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/keytool.html#identitydbCmd .TP 2 o .na \f2\-selfcert\fP @ .fi -http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html#selfcertCmd +http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/keytool.html#selfcertCmd .RE .LP diff --git a/src/solaris/doc/sun/man/man1/ja/native2ascii.1 b/src/solaris/doc/sun/man/man1/ja/native2ascii.1 index d7f1eedd9d4b9b4e1bceaffc5db27b200cc348a2..6e775392b92d96c23eadfd541b0e4238993ea54c 100644 --- a/src/solaris/doc/sun/man/man1/ja/native2ascii.1 +++ b/src/solaris/doc/sun/man/man1/ja/native2ascii.1 @@ -1,4 +1,4 @@ -." Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. +." Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ." ." This code is free software; you can redistribute it and/or modify it @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH native2ascii 1 "02 Jun 2010" +.TH native2ascii 1 "14 Apr 2011" .LP -.SH "名前" -native2ascii \- ネイティブ \- ASCII コンバータ -.LP -.RS 3 - +.SH "̾" +native2ascii \- ͥƥ \- ASCII С .LP .LP -ネイティブコード (Latin 1 および Unicode 以外) のファイルを Unicode コードに変換します。 +ݡȤʸ󥳡ǥ󥰤ʸΥե ASCII ޤ Unicode פ뤤ϤξΥեѴޤεդѴԤޤ .LP -.RE -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -44,36 +38,34 @@ native2ascii \- ネイティブ \- ASCII コンバータ .fi .LP -.SH "説明" +.SH "" .LP - -.LP -.LP -Java コンパイラおよびその他の Java ツールは、Latin\-1 または Unicode コード (\\udddd 表記) 文字を含んだファイルだけを処理することができます。 \f2native2ascii\fP は、これら以外の文字コードのファイルを Latin\-1 または Unicode コードのファイルに変換します。 .LP +\f2native2ascii\fP Java ¹ԴĶǥݡȤʸ󥳡ǥ󥰤˥󥳡ɤ줿եASCII ǥ󥳡ɤ줿եѴޤASCII ʸåȤΰǤʤ٤Ƥʸ Unicode (\\uxxxxפɽ) ѤޤΥץϡISO\-8859\-1 ʸåȤ˴ޤޤʤʸޤޤƤץѥƥեɬפǤΥġϡεդѴ¹Ԥ뤳ȤǤޤ .LP -\f2outputfile\fP を省略した場合、標準出力に出力されます。さらに、\f2inputfile\fP を省略した場合、標準入力から入力されます。 .LP -.SH "オプション" +\f2outputfile\fP ά硢ɸϤ˽Ϥޤˡ \f2inputfile\fP ά硢ɸϤϤޤ .LP - +.SH "ץ" .LP .RS 3 .TP 3 \-reverse -逆の処理を行います。つまり、Latin\-1 または Unicode コードのファイルをネイティブコードに変換します。 +դνԤޤĤޤꡢISO\-8859\-1 Unicode פȤäƥ󥳡ɤ줿եJava ¹ԴĶǥݡȤʸ󥳡ǥ󥰤ΥեѴޤ .br .br .TP 3 \-encoding encoding_name -変換処理で使用するコードの名前を指定します。デフォルトのコードは、システムプロパティーの \f2file.encoding\fP から取得されます。\f2encoding_name\fP 文字列は、 +ѴǻѤʸ󥳡ǥ󥰤̾ꤷޤΥץ¸ߤʤϡǥեȤʸ󥳡ǥ ( \f2java.nio.charset.Charset.defaultCharset\fP ᥽åɤ) Ѥޤ \f2encoding_name\fP ʸϡ .na -\f4「サポートされているエンコーディング」\fP @ +\f4֥ݡȤƤʸ󥨥󥳡ǥ󥰡\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/intl/encoding.doc.htmlドキュメントに示されている、サポートされるエンコーディングの表の最初の列から取得される必要があります。 +http://java.sun.com/javase/6/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 バイトに設定されます。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ .RE .LP diff --git a/src/solaris/doc/sun/man/man1/ja/orbd.1 b/src/solaris/doc/sun/man/man1/ja/orbd.1 index 79406bece968e1264683c098fca058434c0a47f9..b6485a6e714db313403214fa9ffd715709e529c1 100644 --- a/src/solaris/doc/sun/man/man1/ja/orbd.1 +++ b/src/solaris/doc/sun/man/man1/ja/orbd.1 @@ -19,29 +19,23 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH orbd 1 "02 Jun 2010" +.TH orbd 1 "14 Apr 2011" .LP -.SH "名前" +.SH "̾" orbd \- The Object Request Broker Daemon .LP -.RS 3 - .LP +\f3orbd\fP ϡ饤Ȥ CORBA ĶΥСˤ³֥ȤƩŪ˸ƸƤӽФ˻Ѥޤ .LP -\f3orbd\fP は、クライアントから CORBA 環境のサーバーにある持続オブジェクトを透過的に検索して呼び出すために使用します。 .LP -.LP -\f3関連項目:\fP +\f3Ϣ:\fP .na -\f2ネームサービス\fP @ +\f2͡ॵӥ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html .LP -.RE -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -52,42 +46,40 @@ orbd <\fP\f3options\fP\f3> .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3orbd\fP ツールに含まれるサーバーマネージャーを使うと、クライアントは CORBA 環境でサーバー上にある持続オブジェクトを透過的に検索して呼び出すことができます。持続サーバーは、ネームサービスに持続オブジェクト参照を発行する際、サーバーのポート番号の代わりに OBRD のポート番号をオブジェクト参照に含めます。持続オブジェクト参照のオブジェクト参照に ORBD ポート番号を含めることには、次のような利点があります。 +\f3orbd\fP ġ˴ޤޤ륵Сޥ͡㡼Ȥȡ饤Ȥ CORBA ĶǥСˤ³֥ȤƩŪ˸ƸƤӽФȤǤޤ³Сϡ͡ॵӥ˻³֥ȻȤȯԤݡСΥݡֹ OBRD Υݡֹ򥪥֥ȻȤ˴ޤޤ³֥ȻȤΥ֥ȻȤ ORBD ݡֹޤ뤳ȤˤϡΤ褦ޤ .LP .RS 3 .TP 2 o -ネームサービスにあるオブジェクト参照が、サーバーのライフタイムと無関係になる。オブジェクト参照は、始めてインストールされたときはネームサービスのサーバーによりネームサービスに発行されますが、その後は、サーバーの開始またはシャットダウンの回数にかかわらず、ORBD がいつでも呼び出したクライアントに正しいオブジェクト参照を返します。 +͡ॵӥˤ륪֥ȻȤСΥ饤ե̵طˤʤ롣֥ȻȤϡϤƥ󥹥ȡ뤵줿Ȥϥ͡ॵӥΥСˤ͡ॵӥȯԤޤθϡСγϤޤϥåȥβˤ餺ORBD ĤǤƤӽФ饤Ȥ֥ȻȤ֤ޤ .TP 2 o -クライアントは一度だけネーミングサービスのオブジェクト参照をルックアップする必要があるが、その後はサーバーのライフタイムによる変更とは無関係にこの参照を利用することができる +饤Ȥϰ٤͡ߥ󥰥ӥΥ֥ȻȤååפɬפ뤬θϥСΥ饤եˤѹȤ̵طˤλȤѤ뤳ȤǤ .RE .LP .LP -ORBD のサーバーマネージャーにアクセスするには、servertool(1) を使用してサーバーを起動する必要があります。 servertool は、アプリケーションプログラマが、持続サーバーの登録、登録解除、起動、およびシャットダウンを行うためのコマンド行インタフェースです。サーバーマネージャーの詳細については、このドキュメントの\f2「サーバーマネージャー」\fPを参照してください。 +ORBD ΥСޥ͡㡼˥ˤϡservertool(1) ѤƥСưɬפޤservertool ϡץꥱץޤ³СϿϿưӥåȥԤΥޥɹԥ󥿥եǤСޥ͡㡼ξܺ٤ˤĤƤϡΥɥȤΡ֥Сޥ͡㡼פ򻲾ȤƤ .LP .LP -\f2orbd\fP を起動すると、ネームサービスも起動されます。ネームサービスについては、 +\f2orbd\fP ưȡ͡ॵӥⵯưޤ͡ॵӥˤĤƤϡ .na -\f2「ネームサービス」\fP @ +\f2֥͡ॵӥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html򻲾ȤƤ .LP -.SH "オプション" +.SH "ץ" .LP .SS -必須オプション +ɬܥץ .LP .RS 3 .TP 3 \-ORBInitialPort nameserverport -ネームサーバーを起動するポートの番号を指定します。\f2orbd\fP は、起動されると、このポート上で着信要求を待機します。Solaris ソフトウェアの使用時は、1024 より小さいポートでプロセスを開始する場合、root ユーザーになる必要があります。 このため、1024 または 1024 より大きいポートを使用することをお勧めします。 (必須) +͡ॵСưݡȤֹꤷޤ\f2orbd\fP ϡưȡΥݡȾ忮׵ԵޤSolaris եȥѤ硢1024 꾮ݡȾǥץ򳫻Ϥˤϡroot 桼ˤʤɬפޤΤᡢ1024 ʾΥݡֹѤ뤳Ȥ򤪴ᤷޤ(ɬ) .RE .LP @@ -95,75 +87,75 @@ http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlを参照 .LP .SS -その他のオプション +¾Υץ .LP .RS 3 .TP 3 \-port port -ORBD を起動するポートを指定します。 ORBD は、このポートで、持続オブジェクトに対する要求を受け取ります。このポートのデフォルト値は 1049 です。 このポート番号は持続 Interoperable Object References (IOR) のポートフィールドに追加されます。(省略可) +ORBD ưݡȤꤷޤORBD ϡΥݡȤǡ³֥ȤФ׵ޤΥݡȤΥǥեͤ 1049 ǤΥݡֹ椬³ Interoperable Object References (IOR). Υݡȥեɤɲäޤ(ά) .RE .LP .RS 3 .TP 3 \-defaultdb directory -ORBD 持続格納ディレクトリ \f2orb.db\fP が作成されるベースディレクトリを指定します。このオプションが指定されていない場合、デフォルト値は「./orb.db」となります。(省略可) +ORBD ³Ǽǥ쥯ȥ \f2orb.db\fP ١ǥ쥯ȥꤷޤΥץ󤬻ꤵƤʤ硢ǥեͤϡ./orb.dbפȤʤޤ(ά) .RE .LP .RS 3 .TP 3 \-serverPollingTime milliseconds -\f2servertool\fP を使用して登録された持続サーバーが正常に動作していることを ORBD が確認する回数を指定します。デフォルト値は 1,000 ミリ秒です。 「ミリ秒」の指定値は有効な整数値である必要があります。(省略可) +\f2servertool\fP ѤϿ줿³СưƤ뤳Ȥ ORBD ǧꤷޤǥեͤ 1,000 ߥäǤ\f2milliseconds\fP ˻ꤹͤϡͭǤʤФʤޤ(ά) .RE .LP .RS 3 .TP 3 \-serverStartupDelay milliseconds -\f2servertool\fP を使用して登録された持続サーバーを再起動してから、位置転送の例外を送信するまでの ORBD の待機時間を指定します。デフォルト値は 1,000 ミリ秒です。 「ミリ秒」の指定値は有効な整数値である必要があります。(省略可) +\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 を使って背後の実行環境にオプションを渡すことはよく行われています。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ\f3\-J\fP Ȥäظμ¹ԴĶ˥ץϤȤϤ褯ԤƤޤ .TP 3 .RE .LP -.SH "ネームサービスの起動と停止" +.SH "͡ॵӥεư" .LP .LP -ネームサービスは、 +͡ॵӥϡ .na -\f2CORBA オブジェクト\fP @ +\f2CORBA ֥\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#CORBA%20objectにネーミングを可能にする CORBA サービスです。 ネーミングは名前をオブジェクト参照にバインドすることにより可能になります。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#CORBA%20object˥͡ߥ󥰤ǽˤ CORBA ӥǤ͡ߥ󥰤̾򥪥֥ȻȤ˥Хɤ뤳Ȥˤǽˤʤޤ .na -\f2「ネームバインディング」\fP @ +\f2֥͡Хǥ󥰡\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#name%20bindingはネームサービスに格納され、クライアントは名前を与えて目的のオブジェクト参照を取得できます。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#name%20bindingϥ͡ॵӥ˳Ǽ졢饤Ȥ̾ͿŪΥ֥ȻȤǤޤ .LP .LP -ORBD は、クライアントまたはサーバーを実行する前に起動します。ORBD には、持続ネームサービスおよび一時ネームサービスが組み込まれています。 これらはどちらも COS ネームサービスの実装です。 +ORBD ϡ饤ȤޤϥС¹Ԥ˵ưޤORBD ˤϡ³͡ॵӥӰ͡ॵӥȤ߹ޤƤޤϤɤ COS ͡ॵӥμǤ .LP .LP -\f3「持続」ネームサービス\fPは、ネーミングコンテキストに対して持続性を提供します。つまり、この情報は、サービスの停止や起動後にも維持され、サービスに障害が発生した場合でも回復できます。ORBD を再起動すると、持続ネームサービスはネーミングコンテキストのグラフを復元し、すべてのクライアントとサーバーの名前のバインディングが保持されます。 +\f3ֻ³ץ͡ॵӥ\fPϡ͡ߥ󥰥ƥȤФƻ³󶡤ޤĤޤꡢξϡӥߤ䵯ưˤݻ졢ӥ˾㳲ȯǤǤޤORBD Ƶưȡ³͡ॵӥϥ͡ߥ󥰥ƥȤΥդ٤ƤΥ饤ȤȥС̾ΥХǥ󥰤ݻޤ .LP .LP \ .LP .LP -下位互換性のため、旧バージョンの JDK に同梱されていた\f3一時ネームサービス\fPが、今回のリリースの J2SE にも同梱されています。一時ネームサービスでは、ネームサービスの実行中にのみネーミングコンテキストが保持されます。サービスが中断されると、ネーミングコンテキストは失われます。 +̸ߴΤᡢС JDK ƱƤ\f2͡ॵӥ\fPΥ꡼ J2SE ˤƱƤޤ͡ॵӥǤϡ͡ॵӥμ¹ˤΤߥ͡ߥ󥰥ƥȤݻޤӥǤȡ͡ߥ󥰥ƥȤϼޤ .LP .LP -\f2\-ORBInitialPort\fP 引数は、\f2orbd\fP の必須のコマンド行引数で、ネームサービスが実行されるポートの番号を設定するために使われます。以下の説明では、Java\ IDL Object Request Broker Daemon 用にポート 1050 を使用できることを前提としています。Solaris ソフトウェアの使用時は、1024 より小さいポートでプロセスを開始する場合は、root ユーザーになる必要があります。 このため、1024 または 1024 より大きいポートを使用することをお勧めします。 +\f2\-ORBInitialPort\fP ϡ\f2orbd\fP ɬܤΥޥɹ԰ǡ͡ॵӥ¹ԤݡȤֹꤹ뤿˻ȤޤʲǤϡJavaIDL Object Request Broker Daemon Ѥ˥ݡ 1050 ѤǤ뤳ȤȤƤޤSolaris եȥѤ硢1024 꾮ݡȾǥץ򳫻Ϥˤϡroot 桼ˤʤɬפޤΤᡢ1024 ʾΥݡֹѤ뤳Ȥ򤪴ᤷޤɬפǤ̤ΥݡȤѹƤ .LP .LP -UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように入力します。 +UNIX ޥɥ \f2orbd\fP ưˤϡΤ褦Ϥޤ .LP .nf \f3 @@ -175,7 +167,7 @@ UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように .LP .LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 +Windows MS\-DOS ƥץץȤǤϡΤ褦Ϥޤ .LP .nf \f3 @@ -187,7 +179,7 @@ Windows の MS\-DOS システムプロンプトでは、次のように入力し .LP .LP -これで ORBD が実行され、サーバーとクライアントのアプリケーションを実行できるようになります。クライアントとサーバーのアプリケーションは、実行時に、ネームサービスが実行されているポートの番号 (必要な場合はさらにマシン名) を認識している必要があります。これを実現する 1 つの方法は、次のコードをアプリケーションに追加することです。 + ORBD ¹Ԥ졢Сȥ饤ȤΥץꥱ¹ԤǤ褦ˤʤޤ饤ȤȥСΥץꥱϡ¹Իˡ͡ॵӥ¹ԤƤݡȤֹ (ɬפʾϤ˥ޥ̾) ǧƤɬפޤ¸ 1 ĤˡϡΥɤ򥢥ץꥱɲä뤳ȤǤ .LP .nf \f3 @@ -205,7 +197,7 @@ Windows の MS\-DOS システムプロンプトでは、次のように入力し .LP .LP -この例では、ネームサービスは、ホスト MyHost のポート 1050 上で実行されます。別の方法として、コマンド行からサーバーまたはクライアントのアプリケーションを実行するときに、ポート番号またはマシン名あるいはその両方を指定する方法もあります。たとえば、次のコマンド行オプションを使用して、「HelloApplication」を起動できます。 +Ǥϡ͡ॵӥϡۥ MyHost Υݡ 1050 Ǽ¹Ԥޤ̤ˡȤơޥɹԤ饵Сޤϥ饤ȤΥץꥱ¹ԤȤˡݡֹޤϥޥ̾뤤Ϥξꤹˡ⤢ޤȤСΥޥɹԥץѤơHelloApplicationפưǤޤ .LP .nf \f3 @@ -217,35 +209,35 @@ Windows の MS\-DOS システムプロンプトでは、次のように入力し .LP .LP -ネームサービスを停止するには、適切なオペレーティングシステムコマンドを使用します。 たとえば、Solaris では \f2pkill orbd\fP を使用し、\f2orbd\fP が実行されている DOS ウィンドウでは \f2Ctrl+C\fP キーを使用します。一時ネームサービスの場合は、サービスが終了されると、ネームサービスに登録された名前が消去される場合があります。Java IDL ネームサービスは、明示的に停止されるまで実行されます。 +͡ॵӥߤˤϡŬڤʥڥ졼ƥ󥰥ƥॳޥɤѤޤȤСSolaris \f2pkill orbd\fP \f2¹Ԥꡢ\fP \f2orbd\fP ư DOS ɥ Ctrl+C 򲡤ꤷޤ͡ॵӥξϡӥλȡ͡ॵӥϿ줿̾õ礬ޤJava IDL ͡ॵӥϡŪߤޤǼ¹Ԥޤ .LP .LP -ORDB に含まれるネームサービスの詳細については、 +ORDB ˴ޤޤ͡ॵӥξܺ٤ˤĤƤϡ .na -\f2「ネームサービス」\fP @ +\f2֥͡ॵӥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html򻲾ȤƤ .LP -.SH "サーバーマネージャー" +.SH "Сޥ͡㡼" .LP .LP -ORBD のサーバーマネージャーにアクセスして持続サーバーを実行するには、servertool(1) を使用してサーバーを起動する必要があります。 servertool は、アプリケーションプログラマが、持続サーバーの登録、登録解除、起動、およびシャットダウンを行うためのコマンド行インタフェースです。servertool を使用してサーバーを起動する場合は、\f2orbd\fP が実行されている場所と同じポートとホストで起動する必要があります。サーバーを異なるポートで実行すると、ローカルコンテキスト用にデータベースに保存されている情報が無効になり、サービスが正しく動作しません。 +ORBD ΥСޥ͡㡼˥ƻ³С¹Ԥˤϡservertool(1) ѤƥСưɬפޤservertool ϡץꥱץޤ³СϿϿưӥåȥԤΥޥɹԥ󥿥եǤ\f2servertool\fP ѤƥСưϡ\f2orbd\fP ¹ԤƤƱݡȤȥۥȤǵưɬפޤСۤʤݡȤǼ¹Ԥȡ륳ƥѤ˥ǡ١¸Ƥ̵ˤʤꡢӥưޤ .LP .SS -サーバーマネージャー:例 +Сޥ͡㡼: .LP .LP -デモ用の +ǥѤ .na -\f2サンプルチュートリアル\fP @ +\f2ץ塼ȥꥢ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlExample.htmlを使用し、チュートリアルの手順に従って、\f2idlj\fP コンパイラと \f2javac\fP コンパイラを実行します。サーバーマネージャーを実行するには、次の手順に従ってアプリケーションを実行します。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlExample.htmlѤ塼ȥꥢμ˽äơ\f2idlj\fP ѥ \f2javac\fP ѥ¹ԤޤСޥ͡㡼¹Ԥˤϡμ˽äƥץꥱ¹Ԥޤ .LP .LP -\f2orbd\fP を起動します。 +\f2orbd\fP ưޤ .LP .LP -UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように入力します。 +UNIX ޥɥ \f2orbd\fP ưˤϡΤ褦Ϥޤ .LP .LP \ @@ -260,7 +252,7 @@ UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように .LP .LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 +Windows MS\-DOS ƥץץȤǤϡΤ褦Ϥޤ .LP .nf \f3 @@ -272,13 +264,13 @@ Windows の MS\-DOS システムプロンプトでは、次のように入力し .LP .LP -\f21050\fP はネームサーバーを実行するポートです。\f2\-ORBInitialPort\fP は必要なコマンド行の引数です。Solaris ソフトウェアの使用時は、1024 より小さいポートでプロセスを開始する場合は、root ユーザーになる必要があります。 このため、1024 または 1024 より大きいポートを使用することをお勧めします。 +\f21050\fP ϥ͡ॵС¹ԤݡȤǤ\f2\-ORBInitialPort\fP ɬפʥޥɹԤΰǤSolaris եȥѤ硢1024 꾮ݡȾǥץ򳫻Ϥˤϡroot 桼ˤʤɬפޤΤᡢ1024 ʾΥݡֹѤ뤳Ȥ򤪴ᤷޤ .LP .LP -\f2servertool\fP を起動します。 +\f2servertool\fP ưޤ .LP .LP -Hello サーバーを起動するには、次のように入力します。 +Hello СưˤϡΤ褦Ϥޤ .LP .nf \f3 @@ -290,21 +282,21 @@ Hello サーバーを起動するには、次のように入力します。 .LP .LP -前回の手順と同様にネームサーバー (\f2orbd\fP) のポートを指定します。 たとえば \f2\-ORBInitialPort 1050\fP のようになります。\f2servertool\fP は、ネームサーバーと同じポート上で起動する必要があります。 +μƱͤ˥͡ॵС (\f2orbd\fP) ΥݡȤꤷޤȤ \f2\-ORBInitialPort 1050\fP Τ褦ˤʤޤ\f2servertool\fP ϡ͡ॵСƱݡȾǵưɬפޤ .LP .LP -\f2servertool\fP コマンド行インタフェースが表示されます。 +\f2servertool\fP ޥɹԥ󥿥եɽޤ .LP .LP .LP .LP -\f2servertool\fP プロンプトから Hello サーバーを起動します。 +\f2servertool\fP ץץȤ Hello Сưޤ .LP .nf \f3 .fl - servertool > register \-server HelloServer \-classpath . \-applicationName + servertool > register \-server HelloServer \-classpath .\-applicationName .fl HelloServerApName .fl @@ -313,13 +305,13 @@ Hello サーバーを起動するには、次のように入力します。 .LP .LP -\f2servertool\fP によってサーバーが登録されて、「HelloServerApName」という名前がサーバーに割り当てられ、サーバー ID が表示されます。 +\f2servertool\fP ˤäƥСϿơHelloServerApNameפȤ̾С˳Ƥ졢С ID ɽޤ .LP .LP .LP .LP -別の端末ウィンドウまたはプロンプトからクライアントアプリケーションを実行します。 +̤üɥޤϥץץȤ饯饤ȥץꥱ¹Ԥޤ .LP .LP \ @@ -334,10 +326,10 @@ Hello サーバーを起動するには、次のように入力します。 .LP .LP -この例の \f2\-ORBInitialHost localhost\fP は省略することができます。 ネームサーバーが Hello クライアントとして同一ホスト上で動作しているからです。ネームサーバーが別のホストで動作している場合は、IDL ネームサーバーが動作しているホストを \f2\-ORBInitialHost\fP \f2nameserverhost\fP で指定します。 + \f2\-ORBInitialHost localhost\fP Ͼά뤳ȤǤޤ͡ॵС Hello 饤ȤȤƱۥȾưƤ뤫Ǥ͡ॵС̤ΥۥȤưƤϡIDL ͡ॵСưƤۥȤ \f2\-ORBInitialHost\fP \f2nameserverhost\fP ǻꤷޤ .LP .LP -前回の手順と同様にネームサーバー (\f2orbd\fP) のポートを指定します。 たとえば \f2\-ORBInitialPort 1050\fP のようになります。 +μƱͤ˥͡ॵС (\f2orbd\fP) ΥݡȤꤷޤȤ \f2\-ORBInitialPort 1050\fP Τ褦ˤʤޤ .LP .LP \ @@ -346,21 +338,21 @@ Hello サーバーを起動するには、次のように入力します。 \ .LP .LP -サーバーマネージャーの操作が終了したら、ネームサーバー (\f2orbd\fP) と \f2servertool\fP を停止するか終了してください。 +Сޥ͡㡼λ顢͡ॵС (\f2orbd\fP) \f2servertool\fP ߤ뤫λƤ .LP .LP -DOS プロンプトで \f2orbd\fP をシャットダウンするには、サーバーを実行しているウィンドウを選択して \f2Ctrl+C\fP と入力します。UNIX シェルで \f2orbd\fP をシャットダウンするには、プロセスを検出して終了 (kill) します。サーバーを明示的に停止するまでは、呼び出し待機状態が続きます。 +DOS ץץȤ \f2orbd\fP 򥷥åȥ󤹤ˤϡС¹ԤƤ륦ɥ򤷤 \f2Ctrl+C\fP ϤޤUNIX \f2orbd\fP 򥷥åȥ󤹤ˤϡץ򸡽Фƽλ (kill) ޤСŪߤޤǤϡƤӽФԵ֤³ޤ .LP .LP -\f2servertool\fP をシャットダウンするには、\f2quit\fP と入力し、キーボードの \f2Enter\fP キーを押します。 +\f2servertool\fP 򥷥åȥ󤹤ˤϡ \f2quit\fP Ϥƥܡɤ \f2Enter\fP 򲡤ޤ .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o .na -\f2ネームサービス\fP @ +\f2͡ॵӥ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html .br diff --git a/src/solaris/doc/sun/man/man1/ja/pack200.1 b/src/solaris/doc/sun/man/man1/ja/pack200.1 index 51fb78b71012471282682f478c84d33bd4417dcc..74886e8d9506152fa88fceaa4abad4dae723af53 100644 --- a/src/solaris/doc/sun/man/man1/ja/pack200.1 +++ b/src/solaris/doc/sun/man/man1/ja/pack200.1 @@ -19,99 +19,79 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH pack200 1 "02 Jun 2010" +.TH pack200 1 "14 Apr 2011" .LP -.SH "名前" -pack200 \- JAR パックツール +.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 - +.SH "" .LP .LP \f4pack200\fP\f2 [ \fP\f2options\fP ] \f2output\-file\fP \f2JAR\-file\fP .LP .LP -オプションの指定順序に決まりはありません。コマンド行または properties ファイルに指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。 -.LP -.RS 3 - +ץλ˷ޤϤޤ󡣥ޥɹԤޤ properties ե˻ꤵ줿ǸΥץ󤬡˻ꤵ줿٤ƤΥץͥ褵ޤ .LP .RS 3 .TP 3 options -コマンド行オプション。 +ޥɹԥץ .TP 3 output\-file -出力ファイルの名前。 +ϥե̾ .TP 3 JAR\-file -入力ファイルの名前。 +ϥե̾ .RE .LP -.RE -.SH " 説明" +.SH " " .LP - .LP +\f2pack200\fP ġϡJava gzip ̥ץѤ JAR ե \f2pack200\fP ̥եѴ \f2Java ץꥱ\fP Ǥ \f2pack200\fP եϹⰵ̤ΥեǡӰɻ֤ṳ̂ľ뤳ȤǤޤ .LP -\f2pack200\fP ツールは、Java \f2gzip\fP 圧縮プログラムを使用して、JAR ファイルを \f2pack200\fP 圧縮ファイルに変換する Java アプリケーションです。\f2pack200\fP ファイルは高圧縮のファイルで、帯域幅の節約やダウンロード時間の短縮や直接配備することができます。 .LP -.LP -\f2pack200\fP ツールには、圧縮エンジンの設定や微調整を行うオプションが用意されています。 +\f2pack200\fP ġˤϡ̥󥸥ĴԤץѰդƤޤ .LP .SS -一般的な使用方法: -.LP -.RS 3 - +Ūʻˡ: .LP .LP \f2% pack200 myarchive.pack.gz myarchive.jar\fP .LP -.RE -.LP -この例では、デフォルトの \f2pack200\fP 設定で、\f2myarchive.pack.gz\fP が作成されます。 .LP -.SH "オプション" +Ǥϡ \f2ǥեȤ pack200 Ѥ\fP myarchive.pack.gz \f2ޤ\fP .LP - +.SH "ץ" .LP .LP \f4\-r \-\-repack\fP -.LP -.RS 3 - .LP .LP -\f2myarchive.jar\fP ファイルをパックした後にアンパックすることにより、JAR ファイルを生成します。生成されたファイルは、\f2jarsigner(1)\fP ツールの入力ファイルとして使用できます。 -.LP -.RS 3 - +ե \f2myarchive.jar\fP ѥåȥѥå뤳ȤǡJAR եޤ줿ե \f2jarsigner(1)\fP ġϥեȤƻѤǤޤ .LP .LP \f2% pack200 \-\-repack myarchive\-packer.jar myarchive.jar\fP @@ -119,158 +99,122 @@ JAR\-file .LP \f2% pack200 \-\-repack myarchive.jar\fP .LP -.RE -.RE .LP \f4\-g \-\-no\-gzip\fP .LP -.RS 3 - -.LP -.LP -\f2pack200\fP ファイルを生成します。このオプションを指定するときは、適切な圧縮ツールを使用する必要があります。 また、ターゲットシステムでは、対応する圧縮解除ツールを使用する必要があります。 .LP -.RS 3 - +\f2pack200\fP եޤΥץꤹȤϡŬڤʰ̥ġѤɬפޤޤåȥƥǤϡб밵̲ġѤɬפޤ .LP .LP \f2% pack200 \-\-no\-gzip myarchive.pack myarchive.jar\fP .LP -.RE -.RE .LP \f4\-G \-\-strip\-debug\fP .LP -.RS 3 - .LP +ϤǥХåѤ°ޤ°ȤƤϡ \f2SourceFile\fP \f2LineNumberTable\fP \f2LocalVariableTable\fP \f2LocalVariableTypeTable\fP ʤɤ󤲤ޤ°Сɤȥ󥹥ȡΥϾʤޤǥХåεǽ¤ޤ .LP -出力からデバッグ用の属性を削除します。対象となる属性には、\f2SourceFile\fP、\f2LineNumberTable\fP、\f2LocalVariableTable\fP、および \f2LocalVariableTypeTable\fP などがあります。これらの属性を削除すれば、ダウンロードとインストールのサイズは小さくなりますが、デバッガの機能は制限されます。 .LP -.RE +\f4\-\-keep\-file\-order\fP .LP -\f4\-O \-\-no\-keep\-file\-order\fP .LP -.RS 3 - +ϥեΥեνݻޤ줬ǥեȤưǤ .LP .LP -パックツールは、すべての要素を並べ替えて転送します。また、JAR ディレクトリ名を削除します。このため、ダウンロードのサイズは小さくなりますが、インデックスをはじめとする JAR ファイルの最適化機能は正常に動作しなくなることがあります。 +\f4\-O \-\-no\-keep\-file\-order\fP .LP -.RE .LP -\f4\-Svalue \-\-segment\-limit=\fP\f2value\fP +ѥåġϡ٤ƤǤ¤ؤžޤޤJAR ǥ쥯ȥ̾ޤΤᡢɤΥϾʤޤǥåϤȤ JAR եκŬǽưʤʤ뤳Ȥޤ .LP -.RS 3 - +.LP +\f4\-Svalue \-\-segment\-limit=\fP\f2value\fP .LP .LP -この値は、各アーカイブセグメントの予想ターゲットサイズ N (バイト単位) です。N バイト以上を必要とする単一の入力ファイルには、 +ͤϡƥ֥Ȥͽۥåȥ N (Хñ) Ǥñϥեɬץ .br -独立したアーカイブセグメントが割り当てられます。たとえば、これは特殊な例ですが、値が \f2\-1\fP の場合、すべての入力ファイルを含む単一の巨大なセグメントが生成されます。 一方、値が \f20\fP の場合、クラスごとにセグメントが 1 つずつ生成されます。アーカイブセグメントのサイズが大きければ大きいほど断片化は起こりにくく、圧縮率も高くなります。しかし、こうしたセグメントを処理するためには、大量のメモリーが必要になります。 +N ХȤĶȡΥեˤΩ֥ȤƤޤüʥȤơͤ \f2\-1\fP ξϡ٤Ƥϥեޤ礭ñΥȤ졢ͤ \f20\fP ξϡ饹Ȥ˥Ȥ 1 Ĥޤ֥Ȥ礭ʤȡҲʤʤ갵Ψ⤯ʤޤνˤ¿Υ꡼ɬפǤ .LP .LP -各セグメントのサイズは、セグメント内で転送される入力ファイルのサイズと、このファイルの名前のサイズ、およびその他の転送プロパティーによって予測されます。 +ƥȤΥϡȤѴ뤽줾ϥեΥΤۤ̾ȤۤץѥƥΥ׻ƿ¬ޤ .LP .LP -デフォルトのサイズは \f21000000\fP (100 万バイト) です。これは、標準サイズの入力 JAR ファイルを単一セグメント内で転送できるサイズです。パックツールおよびアンパックツールのメモリー要件には制限が課されます。 +ǥեȤ \-1 ǤĤޤꡢѥåġϾñΥȽϥեޤü礭ʽϥե뤬ˤϡϥե򥻥Ȳ (ʬ) Ƥ꾮 JAR ˤ뤳Ȥ򶯤ᤷޤ .LP .LP -この制限が課されていない 10M バイトの JAR パックファイルは通常、元の 10% 程度のサイズにパックされます。 しかし、パックツールでより大きな Java ヒープ (セグメントの制限の約 10 倍) を必要とする場合もあります。 +¤ݤƤʤ 10M ХȤ JAR ѥåե̾ 10% ٤Υ˥ѥåޤѥåġǤ礭 Java ҡ (Ȥ¤ 10 ) ɬפȤ⤢ޤ .LP -.RE .LP \f4\-Evalue \-\-effort=\fP\f2value\fP .LP -.RS 3 - .LP +ñ 10 ʿͤꤷ硢ѥåġϡꤵ줿Ψǥ֤򰵽̤ޤ٥ \f21\fP ξϡŪû̻֤Ǥ礭Υե뤬ޤ٥ \f29\fP ξϡĹ֤ΤΡ갵Ψι⤤ե뤬ޤü \f20\fP ꤷϡ JAR ե򰵽̤ʤľܥԡޤJSR 200 ɸǤϡ٤Ƥβץब̤ʾ򥢡ΤΥѥ롼Ȳ᤹褦˵ꤷƤޤ .LP -単一の 10 進数値を指定した場合、パックツールは、指定された圧縮率でアーカイブを圧縮します。レベル \f21\fP の場合、圧縮速度は速くても圧縮率はそれほど高くありません。 レベル \f29\fP の場合、圧縮速度は遅くても圧縮率は高くなります。特殊な値 \f20\fP を指定した場合は、元の JAR ファイルを圧縮なしで直接コピーします。JSR 200 標準では、すべてのアンパックツールはこの特殊な処理をアーカイブ全体のパススルーとして理解する必要があります。 .LP +ǥեȤ \f25\fPǤξ硢ɸŪʻ֤Ŭڤʰ̤Ԥޤ .LP -デフォルト値は \f25\fP です。 この場合、標準的な時間で、適度な圧縮が行われます。 -.LP -.RE .LP \f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP -.LP -.RS 3 - .LP .LP -デフォルト値を上書きし、入力情報を保持します。 転送されるアーカイブのサイズは大きくなります。可能な値: +ǥեͤ񤭤Ͼ¸ޤž륢֤Υ礭ʤޤ֤ͤϼΤɤ줫ˤʤޤ .LP .RS 3 .TP 3 true .TP 3 false -どちらの場合でも、パックツールはデフレーションヒントを出力アーカイブに設定します。 アーカイブ要素の個々のデフレーションヒントは転送しません。 +ɤξǤ⡢ѥåġϥǥե졼ҥȤϥ֤ꤷޤǤθġΥǥե졼ҥȤžޤ .RE .LP .RS 3 .TP 3 keep -入力 JAR 内のデフレーションヒントを保持します (デフォルト)。 + JAR.ǸĤäǥե졼ҥȤݻޤ(줬ǥեȤǤ) .RE .LP -.RE .LP \f4\-mvalue \-\-modification\-time=\fP\f2value\fP .LP -.RS 3 - .LP -.LP -可能な値: +֤ͤϼΤɤ줫ˤʤޤ .LP .RS 3 .TP 3 latest -パックツールは、元のアーカイブの全エントリの最終更新時刻か、そのセグメントのすべてのエントリの最終更新時刻を特定しようとします。この単一の値はセグメントの一部として転送され、各セグメントの全エントリに適用されます。この場合、すべてのインストールファイルに単一の日付が設定されるという問題はありますが、アーカイブの転送サイズを少し小さくすることができます。 +ѥåġϡΥ֤ȥκǽ狼ΥȤΤ٤ƤΥȥκǽꤷ褦ȤޤñͤϥȤΰȤž졢ƥȤȥŬѤޤξ硢٤ƤΥ󥹥ȡեñդꤵȤϤޤ֤ž򾯤뤳ȤǤޤ .TP 3 keep -入力 JAR 内の更新時刻を保持します (デフォルト)。 + JAR. ǸĤäѹݻޤ(줬ǥեȤǤ) .RE .LP -.RE .LP \f4\-Pfile \-\-pass\-file=\fP\f2file\fP .LP -.RS 3 - .LP +ե򰵽̤Хñ̤ž褦˻ꤷޤΥץ򷫤֤ѤơʣΥեǤޤƥե륻ѥ졼 JAR ե륻ѥ졼\f2/\fPפ֤ѥ̾ѴϹԤޤ ̤Ȥե̾ϡʸȤΤ JAR եǤνиȰפƤɬפޤfile ˥ǥ쥯ȥ̾ꤷ硢Υǥ쥯ȥΤ٤ƤΥե뤬žޤ .LP -ファイルを圧縮せず、バイト単位で転送するように指定します。このオプションを繰り返し使用して、複数のファイルを指定できます。パス名の変換は行われません。 システムファイルの区切り文字が JAR ファイルの区切り文字「\f2/\fP」で置き換えられるだけです。ファイル名は、JAR ファイル内の文字列と完全に一致していなければなりません。file にディレクトリ名を指定した場合、そのディレクトリ内のすべてのファイルが転送されます。 -.LP -.RE .LP \f4\-Uaction \-\-unknown\-attribute=\fP\f2action\fP -.LP -.RS 3 - .LP .LP -デフォルトの動作を無効にします。 たとえば、不明な属性を含むクラスファイルを指定したアクションで転送します。アクションとして指定可能な値: +ǥեȤư̵ˤޤȤС°ޤ९饹եꤷžޤȤƻǽ: .LP .RS 3 .TP 3 error -\f2pack200\fP の操作に失敗し、適切な解説が表示されます。 +\f2pack200\fP ˼ԤŬڤʲ⤬ɽޤ .TP 3 strip -属性はドロップされます。注: VM 必須属性を削除すると、クラスローダーの障害が発生することがあります。 +°ϥɥåפޤ: VM ɬ°ȥ饹ξ㳲ȯ뤳Ȥޤ .TP 3 pass -この属性が検出された場合、クラス全体が 1 つのリソースとして転送されます。 +°Ф줿硢饹Τ 1 ĤΥ꥽Ȥžޤ .RE .LP -.RE .LP \f4\-Cattribute\-name=\fP\f2layout\fP \f3\-\-class\-attribute=\fP\f2attribute\-name=action\fP .br @@ -279,43 +223,33 @@ pass \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 -.RS 3 - .LP .LP -これら 4 つのオプションでは、クラスエンティティーに Class 属性、Field 属性、Method 属性、Code 属性などの属性のレイアウトを指定できます。attribute\-name には、これからレイアウトまたはアクションを定義する属性の名前を指定します。アクションとして指定可能な値: + 4 ĤΥץǤϡ饹ƥƥ Class °Field °Method °Code °ʤɤ°Υ쥤ȤǤޤattribute\-name ˤϡ줫쥤Ȥޤϥ°̾ꤷޤȤƻǽ: .LP .RS 3 .TP 3 -(一部のレイアウト文字列) -レイアウト言語は、JSR 200 仕様に定義されています。 +some\-layout\-string +쥤ȸϡJSR 200 ͤƤޤ .LP -例: \f2\-\-class\-attribute=SourceFile=RUH\fP +: \f2\-\-class\-attribute=SourceFile=RUH\fP .TP 3 error -この属性が検出された場合、pack200 の操作に失敗し、適切な解説が表示されます。 +°Ф줿硢pack200 ˼ԤŬڤʲ⤬ɽޤ .TP 3 strip -この属性が検出された場合、属性は出力から削除されます。注: VM 必須属性を削除すると、クラスローダーの障害が発生することがあります。 +°Ф줿硢°ϽϤޤ: VM ɬ°ȥ饹ξ㳲ȯ뤳Ȥޤ .RE .LP .LP -例: \f2\-\-class\-attribute=CompilationID=pass\fP というこの属性を含むクラスファイルを転送します。 パックツールは、その他のアクションを行いません。 +: \f2\-\-class\-attribute=CompilationID=pass\fP Ȥ°ޤ९饹եžޤѥåġϡ¾ΥԤޤ .LP -.RE .LP \f4\-f\fP\f2 \fP\f2pack.properties\fP \f3\-\-config\-file=\fP\f2pack.properties\fP .LP -.RS 3 - .LP -.LP -コマンド行に、パックツールを初期化するための Java プロパティーが含まれている設定ファイルを指定できます。 -.LP -.RS 3 - +ޥɹԤˡѥåġ뤿 Java ץѥƥޤޤƤեǤޤ .LP .LP \f2% pack200 \-f pack.properties myarchive.pack.gz myarchive.jar\fP @@ -339,71 +273,55 @@ strip \f2# Change the segment limit to be unlimited.\fP .br \f2segment.limit=\-1\fP -.LP -.RE -.RE -.RS 3 - .LP .LP \f4\-v \-\-verbose\fP .LP -.RS 3 - .LP +Ǿ¤ΥåϤޤΥץʣꤹȡĹåϤޤ .LP -最小限のメッセージを出力します。このオプションを複数指定すると、より長いメッセージが出力されます。 -.LP -.RE .LP \f4\-q \-\-quiet\fP .LP -.RS 3 - .LP +åɽưޤ .LP -メッセージを表示せずに動作します。 -.LP -.RE .LP \f4\-lfilename \-\-log\-file=\fP\f2filename\fP .LP -.RS 3 - .LP +ϥåΥեꤷޤ .LP -出力メッセージのログファイルを指定します。 .LP -.RE +\f4\-? \-h \-\-help\fP .LP -\f4\-Joption\fP .LP -.RS 3 - +Υޥɤ˴ؤإ׾Ϥޤ .LP .LP -\f2pack200\fP によって呼び出される Java 起動ツールにオプションを渡します。たとえば、\f2\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。このオプションは \f2\-X\fP で始まっていませんが、\f2pack200\fP の標準オプションではありません。\f2\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 +\f4\-V \-\-version\fP .LP -.RE -.RE -.SH "終了ステータス" .LP - +Υޥɤ˴ؤСϤޤ .LP .LP -次の終了値が返されます。 +\f4\-J\fP\f2option\fP .LP -.RS 3 - .LP +\f2option\fP \f2pack200\fP ƤӽФ줿 Java ưġϤޤȤС \f2\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤΥץ \f2\-X\fP ǻϤޤäƤޤ󤬡 \f2pack200\fP ɸ४ץǤϤޤ \f2\-J\fP ȤäơJava ǵҤ줿ץꥱ¹Ԥظ VM ˥ץϤȤϡ褯ԤƤޤ .LP -\f2\ 0\fP "成功" +.SH "λơ" .LP .LP -\f2>0\fP "エラー" +νλ֤ͤޤ .LP -.RE -.SH "関連項目" +.LP +\f2\ 0\fP ェλ +.LP +.LP +\f2>0\fP 顼ȯ +.LP +.SH "Ϣ" .LP .RS 3 .TP 2 @@ -412,35 +330,33 @@ unpack200(1) .TP 2 o .na -\f2Java SE のドキュメント\fP @ +\f2Java SE Υɥ\fP @ .fi http://java.sun.com/javase/6/docs/index.html .TP 2 o .na -\f2「Java 配備ガイド \- Pack200」\fP @ +\f2Java \- Pack200\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/pack200.html .TP 2 o -jar(1) \- Java Archive ツール」 +jar(1) \- Java Archive ġ .TP 2 o -「jarsigner(1) \- JAR 署名および検証ツール」 +jarsigner(1) \- JAR ̾Ӹڥġ .TP 2 o -\f2attributes(5)\fP のマニュアルページ +\f2attributes(5) \fP ޥ˥奢ڡ .RE .LP -.SH "注意事項" -.LP - +.SH "ջ" .LP .LP -このコマンドと \f2pack(1)\fP を混同しないでください。これらは別製品です。 +Υޥɤ \f2pack(1)\fP ƱʤǤʤǤ .LP .LP -SDK に付属する Java SE API 仕様との相違が見つかった場合には、仕様を優先してください。 +SDK ° Java SE API ͤȤ㤬Ĥäˤϡͤͥ褷Ƥ .LP diff --git a/src/solaris/doc/sun/man/man1/ja/policytool.1 b/src/solaris/doc/sun/man/man1/ja/policytool.1 index c53d78fe09cf3bcb23cf330964e37b43022ffaac..ee5b9c7dbff7a653b829c04675398b1e7d49bb2b 100644 --- a/src/solaris/doc/sun/man/man1/ja/policytool.1 +++ b/src/solaris/doc/sun/man/man1/ja/policytool.1 @@ -19,84 +19,82 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH policytool 1 "02 Jun 2010" +.TH policytool 1 "14 Apr 2011" .LP -.SH "名前" -policytool \- PolicyTool 管理 GUI ユーティリティー +.SH "̾" +policytool \- PolicyTool GUI 桼ƥƥ .LP -\f3policytool\fP は、ユーティリティー GUI 経由で取得したユーザー入力に基づいて、プレーンテキストのポリシーファイルを読み書きします。 +\f3policytool\fP ϡ桼ƥƥ GUI ͳǼ桼Ϥ˴Ťơץ졼ƥȤΥݥꥷեɤ߽񤭤ޤ .RS 3 .TP 2 o -形式 + .TP 2 o -説明 + .TP 2 o -オプション +ץ .TP 2 o -関連項目 +Ϣ .RE .LP -.SH "形式" -.LP - +.SH "" .LP .RS 3 .TP 3 \ .TP 3 -policytool 管理者ユーティリティーを実行します +policytool ԥ桼ƥƥ¹Ԥޤ \f4policytool\fP .TP 3 -policytool を実行し、指定されたポリシーファイルを読み込みます -\f4policytool\fP\f2 [\-file\ \fP\f2filename\fP\f2]\fP +policytool ¹Ԥꤵ줿ݥꥷեɤ߹ߤޤ +\f4policytool\fP\f2[\-file\ \fP\f2filename\fP\f2]\fP .TP 3 \ .TP 3 -各要素は次のとおりです。 +ʲˤ줾ΰ̣򼨤ޤ .RS 3 .TP 3 file -ローカルポリシーファイルを読み込むように \f2policytool\fP に指示します +ݥꥷեɤ߹褦 \f2policytool\fP ˻ؼޤ .TP 3 filename -ファイル名 +ե̾ .RE -.SH "説明" +.SH "" .LP -\f3policytool\fP は、ユーザーがローカルポリシーファイルの内容を管理することを可能にする GUI です。詳細については、 +\f3policytool\fP ϡ桼ݥꥷեƤ뤳Ȥǽˤ GUI Ǥܺ٤ˤĤƤϡ .na -\f2「ポリシーファイル作成および管理ツール」\fP @ +\f2֥ݥꥷեӴġ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyGuide.htmlを参照してください。 -.SH "オプション" +http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyGuide.html򻲾ȤƤ +.SH "ץ" .RS 3 .TP 3 file -\f2filename\fP を読み込みます。 -.SH "関連項目" +\f2filename\fP ɤ߹ߤޤ +.SH "Ϣ" .na -\f2「Default Policy Implementation and Syntax」\fP @ +\f2Default Policy Implementation and Syntax\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyFiles.html .br .na -\f2「Policy Tool Users' Guide」\fP @ +\f2Policy Tool Users' Guide\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyGuide.html .br .na -\f2「Security Permissions」\fP @ +\f2Security Permissions\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/security/permissions.html .br .na -\f2「Security Overview」\fP @ +\f2Security Overview\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/security/overview/jsoverview.html .br diff --git a/src/solaris/doc/sun/man/man1/ja/rmic.1 b/src/solaris/doc/sun/man/man1/ja/rmic.1 index 85e045e6446879657fb242c6d274eb16b2d5e57f..bef409008e59245da22ae96aa089fc410a6c1d25 100644 --- a/src/solaris/doc/sun/man/man1/ja/rmic.1 +++ b/src/solaris/doc/sun/man/man1/ja/rmic.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH rmic 1 "02 Jun 2010" +.TH rmic 1 "14 Apr 2011" .LP -.SH "名前" -rmic \- Java RMI コンパイラ -.LP -.RS 3 - +.SH "̾" +rmic \- Java RMI ѥ .LP .LP -\f3rmic\fP によって、JRMP または IIOP プロトコルを使用するリモートオブジェクトのスタブ、スケルトン、および Tie クラスが生成されます。また、OMG IDL も生成されます。 -.LP -.RE -.SH "形式" +\f3rmic\fP ˤäơJRMP ޤ IIOP ץȥѤ⡼ȥ֥ȤΥ֡ȥ󡢤 Tie 饹ޤޤOMG IDL ޤ .LP - +.SH "" .LP .nf \f3 @@ -45,12 +39,10 @@ rmic [ \fP\f3options\fP\f3 ] \fP\f4package\-qualified\-class\-name(s)\fP\f3 .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3rmic\fP コンパイラによって、リモートオブジェクトの、スタブ、スケルトンクラスファイル (JRMP プロトコル)、およびスタブと Tie クラスファイルの組み合わせ (IIOP プロトコル) が生成されます。リモートオブジェクトの実装クラスであるこれらのクラスファイルは、Java プログラミング言語のクラスをコンパイルしたときに生成されます。リモート実装クラスは、\f2java.rmi.Remote\fP インタフェースを実装するクラスです。\f3rmic\fP コマンドでのクラス名は、そのクラスが \f3javac\fP コマンドでコンパイルが成功していて、かつ完全なパッケージ名が指定されている必要があります。たとえば、クラスファイル名 \f2HelloImpl\fP で \f3rmic\fP を実行するには、次のようにします。 +\f3rmic\fP ѥˤäơ⡼ȥ֥ȤΡ֡ȥ󥯥饹ե (JRMP ץȥ)ӥ֤ Tie 饹եȤ߹碌 (IIOP ץȥ) ޤ⡼ȥ֥Ȥμ饹Ǥ뤳Υ饹եϡJava ץߥ󥰸Υ饹򥳥ѥ뤷Ȥޤ⡼ȼ饹ϡ\f2java.rmi.Remote\fP 󥿥ե륯饹Ǥ\f3rmic\fP ޥɤǤΥ饹̾ϡΥ饹 \f3javac\fP ޥɤǥѥ뤬ƤơĴʥѥå̾ꤵƤɬפޤȤС饹ե̾ \f2HelloImpl\fP \f3rmic\fP ¹ԤˤϡΤ褦ˤޤ .LP .nf \f3 @@ -62,37 +54,32 @@ rmic hello.HelloImpl .LP .LP -\f2HelloImpl_Stub.class\fP ファイルが、クラスのパッケージ名が付いた \f2hello\fP サブディレクトリに作成されます。 +\f2HelloImpl_Stub.class\fP ե뤬饹Υѥå̾դ \f2hello\fP ֥ǥ쥯ȥ˺ޤ .LP .LP -リモートオブジェクトの「スケルトン」は JRMP プロトコルサーバー側のエンティティーで、実際のリモートオブジェクト実装を呼び出すメソッドを含みます。 +⡼ȥ֥ȤΡ֥ȥפ JRMP ץȥ륵С¦ΥƥƥǡºݤΥ⡼ȥ֥ȼƤӽФ᥽åɤޤߤޤ .LP .LP -リモートオブジェクトの「Tie」は、スケルトンと同様にサーバー側のエンティティーですが、IIOP プロトコルを使ってクライアントと通信します。 +⡼ȥ֥ȤΡTieפϡȥƱͤ˥С¦ΥƥƥǤIIOP ץȥȤäƥ饤Ȥ̿ޤ .LP .LP -「スタブ」とは、リモートオブジェクトのクライアント側での代理です。 スタブは、リモートオブジェクトのメソッド呼び出しを、実物のリモートオブジェクトが常駐するサーバーと通信する役割を持ちます。したがって、クライアントのリモートオブジェクトへの参照は、実際はローカルスタブへの参照となります。 +֥֡פȤϡ⡼ȥ֥ȤΥ饤¦ǤǤ֤ϡ⡼ȥ֥ȤΥ᥽åɸƤӽФ򡢼ʪΥ⡼ȥ֥Ȥ󤹤륵С̿ޤäơ饤ȤΥ⡼ȥ֥ȤؤλȤϡºݤϥ륹֤ؤλȤȤʤޤ .LP .LP -デフォルトで \f3rmic\fP では、1.2 JRMP スタブプロトコルバージョンだけを使用するスタブクラスを生成します。 これは、\f2\-v1.2\fP オプションを指定した場合と同じ動作です。(5.0 以前では \f2\-vcompat\fP オプションがデフォルトであったことに注意。) IIOP プロトコル用のスタブおよび Tie クラスを生成するには \f2\-iiop\fP オプションを使用します。 +ǥեȤ \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 メソッドを使わなければなりません。 +֤ϥ⡼ȥ󥿥ե⡼ȥ֥Ȥɽꥤ󥿥եϼƤޤJRMP ֤ϥ⡼ȥ֥ȼΤ⡼ȥ󥿥եƱΤƤΤǡ饤Ȥϡ㥹Ȥ䷿å Java ץߥ󥰸Ȥ߹ޤ줿黻ҤѤ뤳ȤǤޤIIOP ξϡ\f2PortableRemoteObject.narrow\fP ᥽åɤȤʤФʤޤ .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-bootclasspath path -ブートストラップクラスファイルの位置をオーバーライドします。 +֡ȥȥåץ饹եΰ֤򥪡С饤ɤޤ .TP 3 \-classpath path -\f3rmic\fP がクラスを探すためのパスを指定します。このオプションは、デフォルトや CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 -.RS 3 - -.LP +\f3rmic\fP 饹õΥѥꤷޤΥץϡǥեȤ CLASSPATH Ķѿ񤭤ޤǥ쥯ȥϥʬ䤷ޤäơ\f2path\fP ΰ̷ϼΤ褦ˤʤޤ .nf \f3 .fl @@ -100,11 +87,7 @@ rmic hello.HelloImpl .fl \fP .fi -.RE -例を示します。 -.RS 3 - -.LP +򼨤ޤ .nf \f3 .fl @@ -112,13 +95,9 @@ rmic hello.HelloImpl .fl \fP .fi -.RE .TP 3 \-d directory -生成されたクラス階層の出力先ディレクトリのルートを指定します。このオプションを使えば、スタブ、スケルトン、および Tie ファイルを格納するディレクトリを指定できます。たとえば、次のようにして使います。 -.RS 3 - -.LP +줿饹ؤνǥ쥯ȥΥ롼ȤꤷޤΥץȤС֡ȥ󡢤 Tie եǼǥ쥯ȥǤޤȤСΤ褦ˤƻȤޤ .nf \f3 .fl @@ -126,49 +105,43 @@ rmic hello.HelloImpl .fl \fP .fi -.RE -\f2MyClass\fP から取得したスタブとスケルトンクラスを \f2/java/classes/foo\fP ディレクトリに置きます。\f2\-d\fP オプションが指定されていない場合は、\f2「\-d\ .」\fPが指定されていると見なされます。ターゲットクラスのパッケージ階層が現在のディレクトリに作成され、スタブ、Tie、およびスケルトンファイルがそのディレクトリに格納されます。(以前のバージョンの \f3rmic\fP では、\f2\-d\fP が指定されていない場合は、パッケージ階層は作成されず、出力ファイルはすべて現在のディレクトリに直接格納されていた)。 +MyClass \f2֤ȥȥ󥯥饹\fP \f2/java/classes/foo\fP ǥ쥯ȥ֤ޤ\f2\-d\fP ץ󤬻ꤵƤʤϡ\f2\-d\ .\fPꤵƤȸʤޤåȥ饹ΥѥåؤߤΥǥ쥯ȥ˺졢֡Tieӥȥե뤬Υǥ쥯ȥ˳Ǽޤ(ΥС \f3rmic\fP Ǥϡ\f2\-d\fP ꤵƤʤϡѥåؤϺ줺ϥեϤ٤ƸߤΥǥ쥯ȥľܳǼƤ) .br \ .TP 3 \-extdirs path -インストール型拡張機能の位置をオーバーライドします。 +󥹥ȡ뷿ĥǽΰ֤򥪡С饤ɤޤ .TP 3 \-g -局所変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号情報だけが生成されます。 -.LP +ɽѿޤह٤ƤΥǥХåޤǥեȤǤϡֹޤ .TP 3 \-idl -\f2rmic\fP によって、指定したクラスおよび参照されたクラスの OMG IDL が生成されます。IDL では、プログラミング言語に依存せずに、宣言するだけでオブジェクトの API を指定することができます。IDL は、メソッドおよびデータの仕様として使用します。 CORBA バインディングを提供する任意の言語で、メソッドおよびデータの作成および呼び出しを行うことができます。これらの言語には、Java および C++ が含まれています。詳細は、 +\f2rmic\fP ˤäơꤷ饹ӻȤ줿饹 OMG IDL ޤIDL Ǥϡץߥ󥰸˰¸ˡǥ֥Ȥ API ꤹ뤳ȤǤޤIDL ϡ᥽åɤӥǡλͤȤƻѤޤCORBA Хǥ󥰤󶡤Ǥդθǡ᥽åɤӥǡκӸƤӽФԤȤǤޤθˤϡJava C++ ޤޤƤޤܺ٤ϡ .na \f2Java Language to IDL Mapping\fP @ .fi -http://www.omg.org/technology/documents/formal/java_language_mapping_to_omg_idl.htm (OMG) を参照してください。 +http://www.omg.org/technology/documents/formal/java_language_mapping_to_omg_idl.htm (OMG) 򻲾ȤƤ .LP -\f2\-idl\fP オプションを使うときは、ほかのオプションも指定できます。 +\f2\-idl\fP ץȤȤϡۤΥץǤޤ .RS 3 .TP 3 -\-always または \-alwaysgenerate -既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。 +\-always ޤ \-alwaysgenerate +¸Υ֡Tie IDL ϥ饹꿷ȤǤ⡢Ūľޤ .TP 3 \-factory -生成された IDL で factory キーワードを使います。 +줿 IDL factory ɤȤޤ .TP 3 \-idlModule\ fromJavaPackage[.class]\ toIDLModule -IDLEntity パッケージのマップを指定します。例を示します。 \f2\-idlModule foo.bar my::real::idlmod\fP +IDLEntity ѥåΥޥåפꤷޤ򼨤ޤ \f2\-idlModule foo.bar my::real::idlmod\fP .TP 3 \-idlFile\ fromJavaPackage[.class]\ toIDLFile -IDLEntity ファイルのマップを指定します。例を示します。 \f2\-idlFile test.pkg.X TEST16.idl\fP\ +IDLEntity եΥޥåפꤷޤ򼨤ޤ \f2\-idlFile test.pkg.X TEST16.idl\fP\ .RE -.LP .TP 3 \-iiop -\f2rmic\fP によって、JRMP のスタブとスケルトンクラスの代わりに、IIOP のスタブと Tie クラスが生成されます。スタブクラスは、リモートオブジェクトのローカルプロキシで、クライアントからサーバーに呼び出しを送信するときに使われます。各リモートインタフェースにはスタブクラスが必要です。 スタブクラスによってリモートインタフェースが実装されます。クライアントでリモートオブジェクトを参照するときは、実際にはスタブを参照することになります。タイクラスは、サーバー側で着呼を処理し、その呼び出しを適切な実装クラスにディスパッチするときに使われます。各実装クラスには、タイクラスが必要です。 -.LP -\f2\-iiop\fP を使って \f2rmic\fP を呼び出すと、次の命名規約に準拠したスタブと Tie が生成されます。 -.RS 3 - +\f2rmic\fP ˤäơJRMP Υ֤ȥȥ󥯥饹ˡIIOP Υ֤ Tie 饹ޤ֥饹ϡ⡼ȥ֥ȤΥץǡ饤Ȥ饵С˸ƤӽФȤ˻Ȥޤƥ⡼ȥ󥿥եˤϥ֥饹ɬפǤ֥饹ˤäƥ⡼ȥ󥿥եޤ饤Ȥǥ⡼ȥ֥Ȥ򻲾ȤȤϡºݤˤϥ֤򻲾Ȥ뤳Ȥˤʤޤ饹ϡС¦ƤθƤӽФŬڤʼ饹˥ǥѥåȤ˻ȤޤƼ饹ˤϡ饹ɬפǤ .LP +\f2\-iiop\fP Ȥä \f2rmic\fP ƤӽФȡ̿̾˽򤷤֤ Tie ޤ .nf \f3 .fl @@ -182,66 +155,60 @@ _<interfaceName>_tie.class .fl \fP .fi -.RE .LP -\f2\-iiop\fP オプションを使うときは、ほかのオプションも指定できます。 +\f2\-iiop\fP ץȤȤϡۤΥץǤޤ .RS 3 .TP 3 -\-always または \-alwaysgenerate -既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。 +\-always ޤ \-alwaysgenerate +¸Υ֡Tie IDL ϥ饹꿷ȤǤ⡢Ūľޤ .TP 3 \-nolocalstubs -同じプロセスのクライアントとサーバーに対して最適化されたスタブを作成しません。 +ƱץΥ饤ȤȥСФƺŬ줿֤ޤ .TP 3 \-noValueMethods -\f2\-idl\fP オプションとともに使われなければなりません。発行された IDL に、\f2valuetype\fP メソッドおよび初期化子を追加しません。このメソッドおよび初期化子は、\f2valuetype\fP の場合はオプションです。 \f2\-idl\fP オプションを使うときは、 \f2\-noValueMethods\fP オプションを指定しない限り生成されます。 + \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 に変わります。 +Ѿ \f2org.omg.CORBA_2_3.portable.ObjectImpl\fP \f2org.omg.PortableServer.Servant\fP Ѥޤ .LP .na \f2Portable Object Adapter\fP @ .fi -http://java.sun.com/javase/6/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 に準拠しています。 +http://java.sun.com/javase/6/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 SpecificationCORBA V 2.3.1 ptc/00\-01\-08.pdf ˽򤷤Ƥޤ .RE .TP 3 \-J -\f2\-J\fP の後ろに続くオプションを \f2java\fP インタプリタに引き渡します。 \f2java\fP オプションと組み合わせて使います (\f2\-J\fP と \f2java\fP オプションの間にスペースは入れない)。 +\f2\-J\fP θ³ץ \f2java\fP 󥿥ץ꥿˰Ϥޤ \f2java\fP ץȤ߹碌ƻȤޤ (\-J java ץδ֤˥ڡʤ) .TP 3 -\-keep または \-keepgenerated -スタブ、スケルトン、または Tie クラスのための \f2.java\fP ソースファイルを \f2.class\fP ファイルと同じディレクトリに残します。 +\-keep ޤ \-keepgenerated +֡ȥ󡢤ޤ Tie 饹Τ \f2.java\fP ե \f2.class\fP եƱǥ쥯ȥ˻Ĥޤ .TP 3 \-nowarn -警告をオフにします。このオプションを指定すると、コンパイラは警告を表示しません。 -.LP +ٹ򥪥դˤޤΥץꤹȡѥϷٹɽޤ +.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 の両方のスタブプロトコルバージョンをサポートします。生成されたクラスは両方の操作モードをサポートするために、サイズが大きくなります。 +1.1 1.2 ξ JRMP ֥ץȥСȸߴΤ륹֤ӥȥ󥯥饹ޤ(5.0 Υ꡼ǤϤΥץϥǥեȡ)줿֥饹ϡJDK 1.1 ۥޥ˥ɤ 1.1 ֥ץȥСѤJDK 1.2 ʹߤβۥޥ˥ɤ 1.2 ֥ץȥСѤޤ줿ȥ󥯥饹Ǥϡ1.1 1.2 ξΥ֥ץȥС򥵥ݡȤޤ줿饹ξ⡼ɤ򥵥ݡȤ뤿ˡ礭ʤޤ .TP 3 \-verbose -コンパイラやリンカーが、コンパイルされているクラスやロードされているクラスファイルについてのメッセージを表示するようにします。 -.LP +ѥ󥫡ѥ뤵Ƥ륯饹ɤƤ륯饹եˤĤƤΥåɽ褦ˤޤ .TP 3 \-v1.1 -1.1 JRMP スタブプロトコルバージョンのみのスタブおよびスケルトンクラスを生成します。このオプションが使用できるのは、JDK 1.1 から \f3rmic\fP ツールで生成され、アップグレードできない (さらにダイナミッククラスローディングを使用していない) 、既存の静的配備されたスタブクラスに対し、直列化互換性のあるスタブクラスを生成場合だけです。 -.LP +1.1 JRMP ֥ץȥСΤߤΥ֤ӥȥ󥯥饹ޤΥץ󤬻ѤǤΤϡJDK 1.1 \f3rmic\fP ġ졢åץ졼ɤǤʤ (˥ʥߥå饹ǥ󥰤ѤƤʤ) ¸Ū줿֥饹Фľ󲽸ߴΤ륹֥饹Ǥ .TP 3 \-v1.2 -(デフォルト) 1.2 JRMP スタブプロトコルバージョンのみのスタブクラスを生成します。スケルトンクラスは 1.2 スタブプロトコルバージョンで使用できないため、このオプションではスケルトンクラスは生成されません。生成されたスタブクラスは、JDK 1.1 仮想マシンにロードされても動作しません。 +(ǥե) 1.2 JRMP ֥ץȥСΤߤΥ֥饹ޤȥ󥯥饹 1.2 ֥ץȥСǻѤǤʤᡢΥץǤϥȥ󥯥饹ޤ줿֥饹ϡJDK 1.1 ۥޥ˥ɤƤưޤ .RE .LP -.SH "環境変数" -.LP - +.SH "Ķѿ" .LP .RS 3 .TP 3 CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。次に例を示します。 -.RS 3 - -.LP +桼饹ؤΥѥ򥷥ƥ˻ꤷޤǥ쥯ȥϥʬ䤷ޤ򼨤ޤ .nf \f3 .fl @@ -250,15 +217,12 @@ CLASSPATH \fP .fi .RE -.RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP -java(1)、javac(1)、 +java(1)javac(1) .na \f2CLASSPATH\fP @ .fi diff --git a/src/solaris/doc/sun/man/man1/ja/rmid.1 b/src/solaris/doc/sun/man/man1/ja/rmid.1 index 37d7d6a765767646721362d579a3ec0d0c4589ff..232cf1ad050bea6ebc0301fd2c1c082a0cc8e8a3 100644 --- a/src/solaris/doc/sun/man/man1/ja/rmid.1 +++ b/src/solaris/doc/sun/man/man1/ja/rmid.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH rmid 1 "02 Jun 2010" +.TH rmid 1 "14 Apr 2011" .LP -.SH "名前" -rmid \- Java RMI 起動システムデーモン +.SH "̾" +rmid \- Java RMI ưƥǡ .LP -.RS 3 - -.LP -.LP -\f3rmid\fP で起動システムデーモンを開始すると、オブジェクトを仮想マシン (VM) に登録して起動できるようになります。 .LP -.RE -.SH "形式" +\f3rmid\fP ǵưƥǡ򳫻Ϥȡ֥Ȥۥޥ (VM) ϿƵưǤ褦ˤʤޤ .LP - +.SH "" .LP .nf \f3 @@ -45,23 +39,21 @@ rmid [options] .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3rmid\fP ツールは、起動システムデーモンを開始します。起動システムデーモンを開始してからでないと、起動可能オブジェクトを起動システムに登録したり、VM 内で起動したりすることができません。起動可能なリモートオブジェクトを使ったプログラムの作成方法の詳細は、 +\f3rmid\fP ġϡưƥǡ򳫻Ϥޤưƥǡ򳫻ϤƤǤʤȡưǽ֥ȤưƥϿꡢVM ǵưꤹ뤳ȤǤޤ󡣵ưǽʥ⡼ȥ֥ȤȤäץκˡξܺ٤ϡ .na -\f2「Java RMI 仕様」\fP @ +\f2Java RMI ͡\fP @ .fi -http://java.sun.com/javase/6/docs/platform/rmi/spec/rmiTOC.htmlおよび +http://java.sun.com/javase/6/docs/platform/rmi/spec/rmiTOC.html .na -\f2「起動のチュートリアル」\fP @ +\f2ֵưΥ塼ȥꥢ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/rmi/activation/overview.htmlを参照してくだ さい。 +http://java.sun.com/javase/6/docs/technotes/guides/rmi/activation/overview.html򻲾ȤƤ .LP .LP -デーモンを起動するには、次のように、セキュリティーポリシーファイルを指定して \f2rmid\fP コマンドを実行します。 +ǡưˤϡΤ褦ˡƥݥꥷեꤷ \f2rmid\fP ޥɤ¹Ԥޤ .LP .nf \f3 @@ -73,23 +65,23 @@ http://java.sun.com/javase/6/docs/technotes/guides/rmi/activation/overview.html .LP .LP -\f3注:\fP\f2rmid\fP の Sun の 実装を実行する場合、デフォルトでは、セキュリティーポリシーファイルを指定する必要があります。 それは、起動グループ用に VM を起動するために各 \f2ActivationGroupDesc\fP 内の情報を使用できるかどうかを \f2rmid\fP が検証できるようにするためです。特に、\f2ActivationGroupDesc\fP のコンストラクタに渡される \f2CommandEnvironment\fP や任意の \f2Properties\fP によって指定されるコマンドおよびオプションは、\f2rmid\fP のセキュリティーポリシーファイルの中で明示的に許可することが必要になりました。\f2sun.rmi.activation.execPolicy\fP プロパティーの値は、起動グループ用に VM を起動するために \f2ActivationGroupDesc\fP 内の情報を使用できるかどうかを判断するときに \f2rmid\fP が使用するポリシーを決定します。 +\f3:\fP \f2rmid\fP Sun ¹Ԥ硢ǥեȤǤϡƥݥꥷեꤹɬפޤϡ \f2rmid\fP ư롼Ѥ VM ư뤿˳ \f2ActivationGroupDesc\fP ξѤǤ뤫ɤ򸡾ڤǤ褦ˤ뤿ǤäˡActivationGroupDesc Υ󥹥ȥ饯Ϥ \f2CommandEnvironment\fP Ǥդ \f2Properties\fP ˤäƻꤵ \f2ޥɤ\fPץϡ \f2rmid\fP ΥƥݥꥷեŪ˵Ĥ뤳Ȥɬפˤʤޤ\f2sun.rmi.activation.execPolicy\fP ץѥƥͤϡ \f2ư롼Ѥ VM \fP ư뤿 \f2ActivationGroupDesc\fP ξѤǤ뤫ɤȽǤȤ rmid Ѥݥꥷꤷޤ .LP .LP -\f2rmid\fP をデフォルト設定で実行すると、次のような処理が行われます。 +\f2rmid\fP ǥեǼ¹ԤȡΤ褦ʽԤޤ .LP .RS 3 .TP 2 o -アクティベータを起動し、デフォルトポート 1098 で内部レジストリを起動する +ƥ١ưǥեȥݡ 1098 쥸ȥư .TP 2 o -この内部レジストリの中で、\f2ActivationSystem\fP を \f2java.rmi.activation.ActivationSystem\fP という名前にバインドする +쥸ȥǡ \f2ActivationSystem\fP \f2java.rmi.activation.ActivationSystem Ȥ̾\fP Хɤ .RE .LP .LP -レジストリにほかのポートを指定するには、\f2rmid\fP の起動時に \f2\-port\fP オプションを指定しなければなりません。次に例を示します。 +쥸ȥˤۤΥݡȤꤹˤϡrmid εư \f2\-port\fP ץ \f2ꤷʤФʤޤ\fP򼨤ޤ .LP .nf \f3 @@ -101,44 +93,42 @@ o .LP .LP -このコマンドは、起動システムデーモンを開始し、レジストリのデフォルトポート 1099 でレジストリを開始します。 +Υޥɤϡưƥǡ򳫻Ϥ쥸ȥΥǥեȥݡ 1099 ǥ쥸ȥ򳫻Ϥޤ .LP .SS -rmid を inetd/xinetd から開始する +rmid inetd/xinetd 鳫Ϥ .LP .LP -\f2rmid\fP をコマンド行から開始するには、\f2inetd\fP (Solaris の場合)、または \f2xinetd\fP (Linux) を構成して \f2rmid\fP を必要に応じて開始する方法もあります。 +\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 によって起動されたものではないと判断し、前述のように起動します。 +\f2rmid\fP 򳫻ϤȡSystem.inheritedChannel ᥽åɤƤӽФơѾ줿ͥ ( \f2inetd\fP/\f2xinetd\fP Ѿ) 褦Ȥޤ Ѿ줿ͥ뤬 \f2null\fP Ǥ뤫 \f2java.nio.channels.ServerSocketChannel\fP Υ󥹥󥹤Ǥʤä硢 \f2rmid\fP rmid ϤΥͥ \f2inetd\fP/\f2xinetd\fP ˤäƵư줿ΤǤϤʤȽǤҤΤ褦˵ưޤ .LP .LP -継承されたチャンネルが \f2ServerSocketChannel\fP インスタンスである場合は、エクスポートするリモートオブジェクト、つまり \f2java.rmi.activation.ActivationSystem\fP がバインドされているレジストリと \f2java.rmi.activation.Activator\fP リモートオブジェクトに対する要求を受信するサーバーソケットとして、\f2ServerSocketChannel\fP から取得した \f2java.net.ServerSocket\fP を \f2rmid\fP では使用します。このモードでは、\f2rmid\fP の動作は、次のことを除いて、 コマンド行から起動した場合と同じです。 +Ѿ줿ͥ뤬 \f2ServerSocketChannel\fP 󥹥󥹤Ǥϡ \f2rmid\fP ϥݡȤ⡼ȥ֥ȡĤޤ java.rmi.activation.ActivationSystem ХɤƤ쥸ȥ java.rmi.activation.Activator ⡼ȥ֥ȤФ׵륵СåȤȤơServerSocketChannel java.net.ServerSocket Ѥޤ Υ⡼ɤǤϡ \f2rmid\fP ưϡΤȤơ ޥɹԤ鵯ưƱǤ .LP .RS 3 .TP 2 o -\f2System.err\fP に対する出力は、ファイルにリダイレクトされる。このファイルは \f2java.io.tmpdir\fP システムプロパティーで指定されるディレクトリ (通常は \f2/var/tmp\fP または \f2/tmp\fP) にある。 ファイル名の接頭辞は \f2rmid\-err\fP で、接尾辞は \f2"tmp"\fP である +\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 はエラーメッセージを出して終了する +\f2\-port\fP ץϵݤ롣Υץꤹȡ \f2rmid\fP ϥ顼åФƽλ .TP 2 o -\f2\-log\fP オプションは必須。このオプションを指定しないと、\f2rmid\fP はエラーメッセージを出して終了する +\f2\-log\fP ץɬܡΥץꤷʤȡ \f2rmid\fP ϥ顼åФƽλ .RE .LP .LP -必要に応じてサービスを開始するように設定する詳細については、\f2inetd\fP (Solaris) または \f2xinetd\fP (Linux) のマニュアルページを参照してください。 +ɬפ˱ƥӥ򳫻Ϥ褦ꤹܺ٤ˤĤƤϡ \f2inetd\fP (Solaris) ޤ \f2xinetd\fP (Linux) Υޥ˥奢ڡ򻲾ȤƤ .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-C<someCommandLineOption> -\f2rmid\fP の子プロセス (起動グループ) が作成されたときに、それぞれの子プロセスにコマンド行引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システムデーモ ンによって生成される各仮想マシンにプロパティーを渡すことができます。 +\f2rmid\fP λҥץ (ư롼) 줿Ȥˡ줾λҥץ˥ޥɹ԰ȤϤ륪ץꤷޤȤСΤ褦˻ꤹȡưƥǡˤäƲۥޥ˥ץѥƥϤȤǤޤ .nf \f3 .fl @@ -146,7 +136,7 @@ o .fl \fP .fi -コマンド行引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のようなコマンドを実行できます。 +ޥɹ԰ҥץϤǽϡǥХåԤǤȤСΤ褦ʥޥɤ¹ԤǤޤ .nf \f3 .fl @@ -154,11 +144,11 @@ o .fl \fP .fi -このコマンドにより、すべての子 VM でサーバー呼び出しのログが作成されるようになります。 +Υޥɤˤꡢ٤Ƥλ VM ǥСƤӽФΥ褦ˤʤޤ .LP .TP 3 \-J<someCommandLineOption> -\f2rmid\fP を実行している \f2java\fP インタプリタに渡すオプションを指定します。たとえば、\f2rmid\fP が \f2rmid.policy\fP という名前のポリシーファイルを使用するように指定するには、\f2rmid\fP のコマンド行で \f2\-J\fP オプションを使って、\f2java.security.policy\fP プロパティーを定義します。 次に例を示します。 +rmid ¹ԤƤ \f2java\fP 󥿥ץ꥿Ϥץꤷޤ ȤС \f2rmid\fP \f2rmid.policy\fP Ȥ̾ΥݥꥷեѤ褦˻ꤹˤϡrmid ΥޥɹԤ \f2\-J\fP ץȤäơ \f2java.security.policy\fP ץѥƥޤ 򼨤ޤ .nf \f3 .fl @@ -168,16 +158,15 @@ o .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 です。 それぞれの値について、このあと説明します。 -.LP +ư롼פ¹Ԥ뤳Ȥˤʤ 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 +\f3default (ޤϡΥץѥƥֻꤵƤʤ׾)\fP .LP -デフォルトの \f2execPolicy\fP の場合、\f2rmid\fP が実行できるのは、\f2rmid\fP が使用する セキュリティーポリシーファイルの中で、実行する権限が \f2rmid\fP に与えられているコマンドおよびコマンド行オプションだけです。「デフォルト」の実行ポリシーで使用できるのは、デフォルトの起動グループ実装だけです。 +ǥեȤ \f2execPolicy\fP ξ硢 \f2rmid\fP ¹ԤǤΤϡ \f2rmid\fP Ѥ륻ƥݥꥷեǡ¹Ԥ븢¤ \f2rmid\fP ͿƤ륳ޥɤӥޥɹԥץǤ֥ǥեȡפμ¹ԥݥꥷǻѤǤΤϡǥեȤεư롼׼Ǥ .LP -\f2rmid\fP は、起動グループ用の VM を起動するときに、そのグループについて登録された起動グループ記述子である \f2ActivationGroupDesc\fP 内の情報を使用します。グループ記述子は、\f2ActivationGroupDesc.CommandEnvironment\fP を指定します (省略可能)。 これには、起動グループを開始する「コマンド」と、そのコマンド行に追加できるコマンド行「オプション」が含まれています。デフォルトでは、\f2rmid\fP は、\f2java.home\fP にある \f2java\fP コマンドを使用します。グループ記述子には、オプションとしてコマンド行に追加される「プロパティー」オーバーライドも含まれています。 このプロパティーは、次のように定義します。 +\f2rmid ϡ\fP ư롼Ѥ VM ưȤˡΥ롼פˤĤϿ줿ư롼׵һҤǤ \f2ActivationGroupDesc\fP ξѤޤ롼׵һҤϡ \f2ActivationGroupDesc.CommandEnvironment\fP ꤷޤ (άǽ)ˤϡư롼פ򳫻Ϥ֥ޥɡפȡΥޥɹԤɲäǤ륳ޥɹԡ֥ץפޤޤƤޤǥեȤǤϡ \f2rmid \fP java.home ˤ \f2java\fP ޥɤѤޤ 롼׵һҤˤϡץȤƥޥɹԤɲä֥ץѥƥץС饤ɤޤޤƤޤΥץѥƥϡΤ褦ޤ .nf \f3 .fl @@ -186,33 +175,33 @@ o \fP .fi .LP -アクセス権 \f2com.sun.rmi.rmid.ExecPermission\fP を使用すると、グループ記述子の \f2CommandEnvironment\fP で指定されたコマンドを実行して起動グループを開始する権限を、\f2rmid\fP に対して許可することができます。アクセス権 \f2com.sun.rmi.rmid.ExecOptionPermission\fP を使用すると、グループ記述子でプロパティーオーバーライドとして指定されたコマンド行オプション、または \f2CommandEnvironment\fP でオプションとして指定されたコマンド行オプションを、起動グループを開始するときに \f2rmid\fP が使用できるようになります。 + \f2com.sun.rmi.rmid.ExecPermission\fP Ѥȡ \f2rmid\fP Фơ롼׵һҤ \f2CommandEnvironment\fP ǻꤵ줿ޥɤ¹ԤƵư롼פ򳫻Ϥ븢¤Ĥ뤳ȤǤޤ \f2com.sun.rmi.rmid.ExecOptionPermission\fP Ѥȡ롼׵һҤǥץѥƥС饤ɤȤƻꤵ줿ޥɹԥץ󡢤ޤ \f2CommandEnvironment\fP ǥץȤƻꤵ줿ޥɹԥץ򡢵ư롼פ򳫻ϤȤ rmid ѤǤ褦ˤʤޤ .LP -\f2rmid\fP にさまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。 つまり、すべてのコードソースに対して許可します。 +\f2rmid \fP ޤޤʥޥɤӥץ¹Ԥ븢¤Ĥϡ \f2ExecPermission\fP \f2ExecOptionPermission\fP Ū˵ĤɬפޤĤޤꡢ٤ƤΥɥФƵĤޤ .RS 3 .TP 3 ExecPermission -\f2ExecPermission\fP クラスは、起動グループを開始するために \f2rmid\fP が特定の「コマンド」を実行する権限を表します。 +\f2ExecPermission\fP 饹ϡư롼פ򳫻Ϥ뤿 \f2rmid \fP Ρ֥ޥɡפ¹Ԥ븢¤ɽޤ .LP -\f3構文\fP +\f3ʸ\fP .br -\f2ExecPermission\fP の「名前」は、\f2rmid\fP に実行を許可するコマンドのパス名です。「/*」 (「/」はファイル区切り文字 \f2File.separatorChar\fP) で終わるパス名は、そのディレクトリに含まれるすべてのファイルを示します。「/\-」で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を示します。パス名に特別なトークン「<<ALL FILES>>」を指定した場合は、\f3任意の\fPファイルを示します。 +\f2ExecPermission\fP Ρ̾פϡ \f2rmid\fP ˼¹ԤĤ륳ޥɤΥѥ̾Ǥ/* (/פϥեڤʸ File.separatorChar) ǽѥ̾ϡΥǥ쥯ȥ˴ޤޤ뤹٤ƤΥե򼨤ޤ /\-פǽѥ̾ϡΥǥ쥯ȥ˴ޤޤ뤹٤ƤΥեȥ֥ǥ쥯ȥ (ƵŪ) 򼨤ޤѥ̤̾ʥȡ<<ALL FILES>>פꤷϡ\f3Ǥդ\fPե򼨤ޤ .LP -\f3注:\fP「*」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルを表します。 また、「\-」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルと、現在のディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を表します。 +\f3:\fP *פ 1 ĻꤷΥѥ̾ϡߤΥǥ쥯ȥΤ٤ƤΥեɽޤޤ\-פ 1 ĻꤷΥѥ̾ϡߤΥǥ쥯ȥΤ٤ƤΥեȡߤΥǥ쥯ȥ˴ޤޤ뤹٤ƤΥեȥ֥ǥ쥯ȥ (ƵŪ) ɽޤ .TP 3 ExecOptionPermission -\f2ExecOptionPermission\fP クラスは、起動グループを開始するときに \f2rmid\fP が特定のコマンド行「オプション」を使用できる権限を表します。\f2ExecOptionPermission\fP の「名前」は、コマンド行オプションの値です。 +\f2ExecOptionPermission\fP 饹ϡư롼פ򳫻ϤȤ \f2rmid ϡư롼פ򳫻Ϥ륳ޥɤޤäڤޤ\fP Υޥɹԡ֥ץפѤǤ븢¤ɽޤ \f2ExecOptionPermission\fP Ρ̾פϡޥɹԥץͤǤ .LP -\f3構文\fP +\f3ʸ\fP .br -オプションでは、ワイルドカードが限定的にサポートされます。アスタリスクは、ワイルドカードマッチを表します。 アスタリスクは、オプション名そのものとして使用できます。 つまり、任意のオプションを表すことができます。 また、オプション名の末尾に使用することもできます。 ただし、「.」か「=」の直後にアスタリスクを指定する必要があります。 +ץǤϡ磻ɥɤŪ˥ݡȤޤꥹϡ磻ɥɥޥåɽޤ ꥹϡץ̾ΤΤȤƻѤǤޤ ĤޤꡢǤդΥץɽȤǤޤ ޤץ̾˻Ѥ뤳ȤǤޤ .פ=פľ˥ꥹꤹɬפޤ .LP -例を示します。「*」、「\-Dfoo.*」、「\-Da.b.c=*」は有効ですが、「*foo」、「\-Da*b」、「ab*」は無効です。 +򼨤ޤ*ס\-Dfoo.*ס\-Da.b.c=*פͭǤ*fooס\-Da*bסab*פ̵Ǥ .TP 3 -rmid のポリシーファイル -\f2rmid\fP にさまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。 つまり、すべてのコードソースに対して許可します。これらのアクセス権をチェックするのは \f2rmid\fP だけなので、これらのアクセス権を汎用的に許可しても安全です。 +rmid Υݥꥷե +\f2rmid \fP ޤޤʥޥɤӥץ¹Ԥ븢¤Ĥϡ \f2ExecPermission\fP \f2ExecOptionPermission\fP Ū˵ĤɬפޤĤޤꡢ٤ƤΥɥФƵĤޤΥåΤ \f2rmid\fP ʤΤǡΥŪ˵ĤƤǤ .LP -\f2rmid\fP に各種の実行権限を許可するポリシーファイルの例を、次に示します。 +rmid ˳Ƽμ¹Ը¤Ĥݥꥷե򡢼˼ޤ .nf \f3 .fl @@ -220,13 +209,7 @@ grant { .fl permission com.sun.rmi.rmid.ExecPermission .fl - "/files/apps/java/jdk1.2.2/solaris/bin/java"; -.fl - -.fl - permission com.sun.rmi.rmid.ExecPermission -.fl - "/files/apps/java/jdk1.2.2/solaris/bin/java_g"; + "/files/apps/java/jdk1.7.0/solaris/bin/java"; .fl .fl @@ -256,29 +239,21 @@ grant { .fl \fP .fi -最初の 2 つの付与されているアクセス権は、\f2rmid\fP に対し、パス名により明示的に指定される \f2java\fP コマンドおよび \f2java_g\fP コマンドの 1.2.2 バージョンの実行を許可します。デフォルトでは、\f2java.home\fP にあるバージョンの \f2java\fP コマンド (\f2rmid\fP が使用するのと同じバージョン) が使用されるため、そのコマンドは、ポリシーファイルで指定する必要はありません。3 番目のアクセス権は、\f2rmid\fP に対して、ディレクトリ \f2/files/apps/rmidcmds\fP 内の任意のコマンドの実行権限を許可します。 -.LP -4 番目のアクセス権 \f2ExecOptionPermission\fP は、\f2rmid\fP に対して、セキュリティーポリシーファイルを \f2/files/policies/group.policy\fP として定義している起動グループの開始を許可します。5 番目のアクセス権は、起動グループが \f2java.security.debug\fP プロパティーを使用することを許可しています。最後のアクセス権は、起動グループが \f2sun.rmi\fP というプロパティー名の階層内の任意のプロパティーを使用することを許可しています。 +ǽͿƤ륢ϡ \f2rmid\fP Фѥ̾ˤŪ˻ꤵ \f2java\fP ޥɤ 1.7.0 Сμ¹ԤĤޤǥեȤǤϡjava.home ˤС \f2java\fP ޥ ( \f2rmid\fP ѤΤƱС) Ѥ뤿ᡢΥޥɤϡݥꥷեǻꤹɬפϤޤ2 ܤΥϡ \f2rmid\fP Фơǥ쥯ȥ \f2/files/apps/rmidcmds\fP ǤդΥޥɤμ¹Ը¤Ĥޤ .LP -ポリシーファイルを指定して \f2rmid\fP を起動するには、\f2rmid\fP のコマンド行で \f2java.security.policy\fP プロパティーを指定する必要があります。 次に例を示します。 -.RS 3 - +3 ܤͿƤ륢 \f2ExecOptionPermission\fP ϡ \f2rmid\fP Фơƥݥꥷե \f2/files/policies/group.policy\fP ȤƤ뵯ư롼פγϤĤޤΥϡư롼פ \f2java.security.debug\fP ץѥƥѤ뤳ȤĤƤޤǸΥϡư롼פ \f2sun.rmi\fP Ȥץѥƥ̾γǤդΥץѥƥѤ뤳ȤĤƤޤ .LP +ݥꥷեꤷ \f2rmid\fP ưˤϡrmid ΥޥɹԤ \f2java.security.policy\fP ץѥƥꤹɬפޤ 򼨤ޤ .LP -\f2rmid \-J\-Djava.security.policy=rmid.policy\fP -.LP -.RE +\f2rmid \-J\-Djava.security.policy=rmid.policy\fP .RE .TP 2 o -.LP -.TP 2 -o \f4<policyClassName>\fP .LP -デフォルトの動作では十分な柔軟性が得られない場合、管理者は、\f2rmid\fP の起動時に、\f2checkExecCommand\fP メソッドが所属するクラスの名前を指定して、rmid が実行するコマンドをチェックすることができます。 +ǥեȤưǤϽʬʽʤ硢Ԥϡ \f2rmid\fP εưˡ \f2checkExecCommand\fP ᥽åɤ°륯饹̾ꤷơrmid ¹Ԥ륳ޥɤå뤳ȤǤޤ .LP -\f2policyClassName\fP には、引数なしのコンストラクタを持ち、次のような \f2checkExecCommand\fP メソッドを実装している public クラスを指定します。 +\f2policyClassName\fP ˤϡʤΥ󥹥ȥ饯Τ褦 \f2checkExecCommand\fP ᥽åɤƤ public 饹ꤷޤ .nf \f3 .fl @@ -290,22 +265,21 @@ o .fl \fP .fi -起動グループを開始する前に、\f2rmid\fP は、ポリシーの \f2checkExecCommand\fP メソッドを呼び出します。このとき、起動グループの記述子と、起動グループを開始するための完全なコマンドを含む配列をそのメソッドに渡します。\f2checkExecCommand\fP が \f2SecurityException\fP をスローすると、\f2rmid\fP はその起動グループを開始せず、オブジェクトの起動を試行している呼び出し側には \f2ActivationException\fP がスローされます。 -.LP +ư롼פ򳫻Ϥˡ \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 は、起動グループを開始するコマンドをまったく検証しません。 +\f2sun.rmi.activation.execPolicy\fP ץѥƥͤnoneפξ硢 \f2rmid\fP ϡư롼פ򳫻Ϥ륳ޥɤޤäڤޤ .RE .LP .TP 3 \-log dir -起動システムデーモンがデータベースおよび関連情報を書き込むのに使うディレクトリの名前を指定します。デフォルトでは、\f2rmid\fP コマンドを実行したディレクトリに、\f2log\fP というログディレクトリが作成されます。 +ưƥǡ󤬥ǡ١ӴϢ񤭹Τ˻Ȥǥ쥯ȥ̾ꤷޤǥեȤǤϡrmid ޥɤ¹Ԥǥ쥯ȥˡ \f2log\fP Ȥǥ쥯ȥ꤬ޤ .LP .TP 3 \-port port -\f2rmid\fP のレジストリが使うポートを指定します。起動システムデーモンは、このレジストリの中で、\f2java.rmi.activation.ActivationSystem\fP という名前で\f2ActivationSystem\fP をバインドします。したがって、ローカルマシン上の \f2ActivationSystem\fP は、次のように \f2Naming.lookup\fP メソッドを呼び出すことによって取得できます。 +\f2rmid\fP Υ쥸ȥ꤬ȤݡȤꤷޤưƥǡϡΥ쥸ȥǡ \f2java.rmi.activation.ActivationSystem\fP Ȥ̾ActivationSystem Хɤޤäơޥ \f2ActivationSystem\fP ϡΤ褦 \f2Naming.lookup\fP ᥽åɤƤӽФȤˤäƼǤޤ .nf \f3 .fl @@ -322,16 +296,16 @@ o .fi .TP 3 \-stop -\f2\-port\fP オプションによって指定されたポートの、現在の \f2rmid\fP 呼び出しを停止します。ポートが指定されていない場合は、ポート 1098 で実行されている \f2rmid\fP を停止します。 +\-port ץˤäƻꤵ줿ݡȤΡߤ \f2rmid\fP ƤӽФߤޤ ݡȤꤵƤʤϡݡ 1098 Ǽ¹ԤƤ \f2rmid\fP ߤޤ .RE -.SH "環境変数" -.LP +.LP +.SH "Ķѿ" .LP .RS 3 .TP 3 CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。例を示します。 +桼饹ؤΥѥ򥷥ƥ˻ꤷޤǥ쥯ȥϥʬ䤷ޤ򼨤ޤ .nf \f3 .fl @@ -342,15 +316,13 @@ CLASSPATH .RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP -rmic(1)、 +rmic(1) .na \f2CLASSPATH\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath、java(1) +http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathjava(1) .LP diff --git a/src/solaris/doc/sun/man/man1/ja/rmiregistry.1 b/src/solaris/doc/sun/man/man1/ja/rmiregistry.1 index 7a36ac9e5d29ce6f9fc5aa1ad6d7e747fdef6add..864ccc7837523cbf4105eb02057e7367f5b024c6 100644 --- a/src/solaris/doc/sun/man/man1/ja/rmiregistry.1 +++ b/src/solaris/doc/sun/man/man1/ja/rmiregistry.1 @@ -19,22 +19,18 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH rmiregistry 1 "02 Jun 2010" +.TH rmiregistry 1 "14 Apr 2011" .LP -.SH "名前" -rmiregistry \- Java リモートオブジェクトレジストリ +.SH "̾" +rmiregistry \- Java ⡼ȥ֥ȥ쥸ȥ .LP .RS 3 - -.LP -.LP -\f3rmiregistry\fP コマンドは、現在のホストの指定したポート上にリモートオブジェクトレジストリを開始します。 -.LP +\f3rmiregistry\fP ޥɤϡߤΥۥȤλꤷݡȾ˥⡼ȥ֥ȥ쥸ȥ򳫻Ϥޤ .RE -.SH "形式" -.LP +.LP +.SH "" .LP .nf \f3 @@ -45,52 +41,43 @@ rmiregistry [\fP\f4port\fP\f3] .fi .LP -.SH "説明" -.LP - +.SH "" .LP .LP -\f3rmiregistry\fP コマンドは、現在のホストの指定 \f2port\fP 上にリモートオブジェクトレジストリを作成し、開始します。\f2port\fP の指定を省略した場合、レジストリはポート 1099 で開始します。\f3rmiregistry\fP コマンドに、出力機能はありません。通常、これはバックグラウンドで実行されます。例を示します。 +\f3rmiregistry\fP ޥɤϡߤΥۥȤλ \f2port\fP ˥⡼ȥ֥ȥ쥸ȥϤޤ\f2port\fP λά硢쥸ȥϥݡ 1099 dzϤޤ\f3rmiregistry\fP ޥɤˡϵǽϤޤ̾ϥХå饦ɤǼ¹Ԥޤ򼨤ޤ .LP .LP \f2rmiregistry&\fP .LP .LP -リモートオブジェクトレジストリは、ブートストラップのネームサービスです。 同一ホストの RMI サーバーが、リモートオブジェクトを名前にバインドするために使用されます。次に、ローカルおよびリモートホストのクライアントはリモートオブジェクトを検索し、リモートメソッドの呼び出しを行います。 -.LP +⡼ȥ֥ȥ쥸ȥϡ֡ȥȥåפΥ͡ॵӥǤƱۥȤ RMI С⡼ȥ֥Ȥ̾˥Хɤ뤿˻Ѥޤˡ뤪ӥ⡼ȥۥȤΥ饤Ȥϥ⡼ȥ֥Ȥ򸡺⡼ȥ᥽åɤθƤӽФԤޤ .LP -レジストリは、一般的に、最初のリモートオブジェクトの位置を指定します。 そこで、アプリケーションはメソッドを呼び出す必要があります。代わって、そのオブジェクトはアプリケーション指定のサポートを提供し、他のオブジェクトを探します。 .LP +쥸ȥϡŪˡǽΥ⡼ȥ֥Ȥΰ֤ꤷޤ ǡץꥱϥ᥽åɤƤӽФɬפޤäơΥ֥ȤϥץꥱΥݡȤ󶡤¾Υ֥Ȥõޤ .LP -\f2java.rmi.registry.LocateRegistry\fP クラスのメソッドは、ローカルホスト、またはローカルホストとポートで動作するレジストリを取得するために使用されます。 .LP +\f2java.rmi.registry.LocateRegistry\fP 饹Υ᥽åɤϡۥȡޤϥۥȤȥݡȤư쥸ȥ뤿˻Ѥޤ .LP -\f2java.rmi.Naming\fP クラスの URL ベースのメソッドは、レジストリで動作し、任意のホストおよびローカルホスト上のリモートオブジェクトの検索に使用されます。リモートオブジェクトに単純な (文字列) 名前をバインドしたり、新しい名前をリバインド (古いバインドにオーバーライド) します。 またリモートオブジェクトをアンバインドしたり、レジストリにバインドされた URL を出力します。 .LP -.SH "オプション" +\f2java.rmi.Naming\fP 饹 URL ١Υ᥽åɤϡ쥸ȥưǤդΥۥȤӥۥȾΥ⡼ȥ֥Ȥθ˻Ѥޤ⡼ȥ֥Ȥñ (ʸ) ̾Хɤꡢ̾Х (ŤХɤ˥С饤) ޤޤ⡼ȥ֥Ȥ򥢥Хɤꡢ쥸ȥ˥Хɤ줿 URL Ϥޤ .LP - +.SH "ץ" .LP .RS 3 .TP 3 \-J -\f2\-J\fP の後ろに続くオプションを \f2java\fP インタプリタに引き渡します。 \f2java\fP オプションと組み合わせて使います (\f2\-J\fP と \f2java\fP オプションの間にスペースは入れない)。 +\f2\-J\fP θ³ץ \f2java\fP 󥿥ץ꥿˰Ϥޤ \f2java\fP ץȤ߹碌ƻȤޤ (\-J java ץδ֤˥ڡʤ) .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP - -.LP -.LP -java(1)、 +java(1) .na \f2java.rmi.registry.LocateRegistry\fP @ .fi -http://java.sun.com/javase/6/docs/api/java/rmi/registry/LocateRegistry.html、および +http://java.sun.com/javase/6/docs/api/java/rmi/registry/LocateRegistry.html .na \f2java.rmi.Naming\fP @ .fi -http://java.sun.com/javase/6/docs/api/java/rmi/Naming.html -.LP - +http://java.sun.com/javase/6/docs/api/java/rmi/Naming.html diff --git a/src/solaris/doc/sun/man/man1/ja/schemagen.1 b/src/solaris/doc/sun/man/man1/ja/schemagen.1 index 6906d33f850a9edd180c6e80ccf9ce203e9c081f..b9cb1a27c65a5b6d52869726832d81fe945ef85e 100644 --- a/src/solaris/doc/sun/man/man1/ja/schemagen.1 +++ b/src/solaris/doc/sun/man/man1/ja/schemagen.1 @@ -19,110 +19,106 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH schemagen 1 "02 Jun 2010" +.TH schemagen 1 "14 Apr 2011" .LP -.SH "名前" -schemagen \- XML バインドのための Java(TM) アーキテクチャースキーマジェネレータ +.SH "̾" +schemagen \- XML ХɤΤ Java(TM) ƥ㡼ޥͥ졼 .LP .LP -\f3仕様バージョン:\fP 2.1 +\f3ͥС:\fP 2.1 .br -\f3実装バージョン:\fP 2.1.3 +\f3С:\fP 2.1.3 .LP -.SS -schemagen の起動 +.SH "schemagen εư" .LP .LP -スキーマジェネレータは、ユーザーのプラットフォームの \f2bin\fP ディレクトリにある \f2schemagen\fP シェルスクリプトを使って起動できます。 +ޥͥ졼ưˤϡ桼Υץåȥե bin ǥ쥯ȥˤ \f2Ŭڤ schemagen 륹ץ\fP \f2ޤ\fP .LP .LP -現在のスキーマジェネレータは、Java ソースファイルとクラスファイルのいずれも処理できます。 +ߤΥޥͥ졼ϡJava եȥ饹եΤǤޤ .LP .LP -また、スキーマジェネレータを実行するための Ant タスクも用意されています。 +ޤޥͥ졼¹Ԥ뤿 Ant ѰդƤޤ .na -\f2schemagen を Ant とともに使用する\fP @ +\f2schemagen Ant ȤȤ˻Ѥ\fP @ .fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlための手順を参照してください。 -.LP -.RS 3 - +https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlμ򻲾ȤƤ .LP .nf \f3 .fl % schemagen.sh Foo.java Bar.java ... .fl -注: Writing schema1.xsd +Note: Writing schema1.xsd .fl \fP .fi -.RE .LP .LP -ユーザーの Java ソース/クラスがほかのクラスを参照している場合、システムの CLASSPATH 環境変数経由でそれらのクラスにアクセスできるようになっているか、あるいは \f2\-classpath\fP/\f2\-cp\fP オプションを使ってそれらのクラスをツールに指定する必要があります。そうしないと、スキーマの生成時にエラーが発生します。 +桼 Java /饹ۤΥ饹򻲾ȤƤ硢ƥ ĶѿͳǤΥ饹˥Ǥ褦ˤʤäƤ뤫뤤 \f2\-classpath\fP/\f2\-cp\fP ȤäƤΥ饹ġ˻ꤹɬפޤʤȡޤ˥顼ȯޤ .LP -.RS 3 - -.LP -\f3コマンド行オプション\fP -.LP -.RS 3 - +.SS +ޥɹԥץ .LP .nf \f3 .fl -使用方法: schemagen [\-options ...] <java files> +ˡ: schemagen [\-options ...] <java files> .fl .fl -オプション: +ץ: +.fl + \-d <path> : ץå javac ˤä륯饹եγǼꤷޤ +.fl + \-cp <path> : 桼եθꤷޤ +.fl + \-classpath <path> : 桼եθꤷޤ .fl - \-d <path> : プロセッサと javac 生成のクラスファイルを置く場所を指定します。 + \-encoding <encoding> : apt/javac ƤӽФ˻Ѥ륨󥳡ǥ󥰤ꤷޤ .fl - \-cp <path> : ユーザー指定ファイルの検索場所を指定します。 + +.fl + \-episode <file> : ̥ѥѤΥԥɥեޤ .fl - \-classpath <path> : ユーザー指定ファイルの検索場所を指定します。 + \-version : Сɽޤ .fl - \-help : この使用方法に関するメッセージを表示します。 + \-help : λˡ˴ؤåɽޤ .fl \fP .fi -.RE .LP -.RE -.SS -生成されるリソースファイル +.SH "꥽ե" .LP .LP -現在のスキーマジェネレータは単純に、Java クラス内で参照されている名前空間ごとに 1 つのスキーマファイルを作成します。生成されるスキーマファイルの名前を制御する方法は、現時点では存在しません。そうした目的には、 +ߤΥޥͥ졼ñˡJava 饹ǻȤƤ֤̾Ȥ 1 ĤΥޥեޤ륹ޥե̾椹ˡϡǤ¸ߤޤ󡣤Ūˤϡ .na -\f2スキーマジェネレータの Ant タスク\fP @ +\f2ޥͥ졼 ant \fP @ .fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlを使用してください。 +https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlѤƤ .LP -.SH "関連項目" +.SH "̾" +Ϣ .LP .RS 3 .TP 2 o -スキーマジェネレータの実行 (schemagen):[ +ޥͥ졼μ¹ (schemagen): [ .na -\f2コマンド行の命令\fP @ +\f2ޥɹԤ̿\fP @ .fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagen.html、 +https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagen.html .na -\f2SchemaGen を Ant とともに使用する\fP @ +\f2SchemaGen Ant ȤȤ˻Ѥ\fP @ .fi https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.html] .TP 2 o .na -\f2XML バインドのための JavaTM アーキテクチャー (JAXB)\fP @ +\f2XML ХɤΤ JavaTM ƥ㡼 (JAXB)\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/xml/jaxb/index.html .RE diff --git a/src/solaris/doc/sun/man/man1/ja/serialver.1 b/src/solaris/doc/sun/man/man1/ja/serialver.1 index abbaa0e5e2f0f2c580a382351720b2a218277b4c..4929593320c492f143641c5273b7586b29d84f75 100644 --- a/src/solaris/doc/sun/man/man1/ja/serialver.1 +++ b/src/solaris/doc/sun/man/man1/ja/serialver.1 @@ -19,22 +19,16 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH serialver 1 "02 Jun 2010" +.TH serialver 1 "14 Apr 2011" .LP -.SH "名前" -serialver \- シリアルバージョンコマンド +.SH "̾" +serialver \- ꥢС󥳥ޥ .LP -.RS 3 - .LP +\f3serialver\fP ޥɤ \f2serialVersionUID\fP ֤ޤ .LP -\f3serialver\fP コマンドは \f2serialVersionUID\fP を返します。 -.LP -.RE -.SH "形式" -.LP - +.SH "" .LP .nf \f3 @@ -43,76 +37,56 @@ serialver \- シリアルバージョンコマンド .fl .fi -.LP -.RS 3 - .LP .RS 3 .TP 3 options -このドキュメントで説明されているコマンド行オプションです。 +ΥɥȤƤ륳ޥɹԥץǤ .TP 3 classnames -1 つ以上のクラス名です。 -.RE - -.LP +1 İʾΥ饹̾Ǥ .RE -.SH "説明" -.LP .LP +.SH "" .LP -\f3serialver\fP は、1 つ以上のクラスの \f2serialVersionUID\fP を、展開しているクラスへコピーするのに適した形式で返します。引数を指定しないで呼び出すと、使用方法が表示されます。 .LP -.SH "オプション" +\f3serialver\fP ϡ1 İʾΥ饹 \f2serialVersionUID\fP ŸƤ륯饹إԡΤŬ֤ޤꤷʤǸƤӽФȡˡɽޤ .LP - +.SH "ץ" .LP .RS 3 .TP 3 -\-classpath <: で区切られたディレクトリと zip や jar ファイル> -アプリケーションのクラスおよびリソースの検索パスを設定します。 +\-classpath <: Ƕڤ줿ǥ쥯ȥ zip jar ե> +ץꥱΥ饹ӥ꥽θѥꤷޤ .RE .LP .RS 3 .TP 3 \-show -簡単なユーザーインタフェースを表示します。完全指定のクラス名を入力して、Enter キーか [Show] ボタンを押し、シリアルバージョン UID を表示します。 +ñʥ桼󥿥եɽޤΥ饹̾ϤơEnter Showץܥ򲡤ꥢС UID ɽޤ .TP 3 \-Joption -Java 仮想マシンに \f2option\fP を渡します。 \f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ .RE .LP -.SH "注" +.SH "" .LP - .LP -.LP -\f3serialver\fP コマンドは、指定されたクラスをその仮想マシン内に読み込んで初期化しますが、デフォルトではセキュリティーマネージャーの設定は行いません。信頼できないクラスとともに \f3serialver\fP を実行する場合には、次のオプションを使ってセキュリティーマネージャーを設定できます。 -.LP -.RS 3 - +\f3serialver\fP ޥɤϡꤵ줿饹򤽤βۥޥɤ߹ǽޤǥեȤǤϥƥޥ͡㡼ϹԤޤ󡣿Ǥʤ饹ȤȤ \f3serialver\fP ¹ԤˤϡΥץȤäƥƥޥ͡㡼Ǥޤ .LP .LP \f2\-J\-Djava.security.manager\fP .LP -.RE .LP -また、必要であれば、次のオプションを使ってセキュリティーポリシーを指定できます。 -.LP -.RS 3 - +ޤɬפǤСΥץȤäƥƥݥꥷǤޤ .LP .LP \f2\-J\-Djava.security.policy=<policy file>\fP .LP -.RE -.SH "関連項目" -.LP - +.SH "Ϣ" .LP .LP .na diff --git a/src/solaris/doc/sun/man/man1/ja/servertool.1 b/src/solaris/doc/sun/man/man1/ja/servertool.1 index 2bf60b6f9286df3433aa06ab5a44838b1c261098..1cb919bca170bdb8397ad9e2e16b9cf5b561fe28 100644 --- a/src/solaris/doc/sun/man/man1/ja/servertool.1 +++ b/src/solaris/doc/sun/man/man1/ja/servertool.1 @@ -19,20 +19,14 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH servertool 1 "02 Jun 2010" +.TH servertool 1 "14 Apr 2011" .LP -.SH "名前" -servertool \- Java(TM) IDL サーバーツール +.SH "̾" +servertool \- Java(TM) IDL Сġ .LP -.RS 3 - -.LP -\f3servertool\fP はアプリケーションプログラマが、持続サーバーの登録、登録解除、起動、および停止を行うためのコマンド行インタフェースを提供します。 -.RE -.SH "形式" -.LP - +\f3servertool\fP ϥץꥱץޤ³СϿϿưߤԤΥޥɹԥ󥿥ե󶡤ޤ +.SH "" .LP .nf \f3 @@ -44,84 +38,76 @@ servertool \-ORBInitialPort \fP\f4nameserverport\fP\f3 \fP\f3options\fP\f3 [ \fP .LP .LP -コマンドを入力しないで \f2servertool\fP を起動すると、コマンド行ツールとして \f2servertool >\fP プロンプトが表示されます。\f2servertool >\fP プロンプトにコマンドを入力します。 -.LP +ޥɤϤʤ \f2servertool\fP ưȡޥɹԥġȤ \f2servertool >\fP ץץȤɽޤ\f2servertool >\fP ץץȤ˥ޥɤϤޤ .LP -コマンドを入力して \f2servertool\fP を起動すると、Java IDL サーバーツールが起動し、コマンドを実行して終了します。 .LP +ޥɤϤ \f2servertool\fP ưȡJava IDL Сġ뤬ưޥɤ¹Ԥƽλޤ .LP -\f2\-ORBInitialPort\fP \f2nameserverport\fP オプションは\f3必須\fPです。\f2nameserverport\fP の値には、\f2orbd\fP が実行され、着信要求を待機しているポートを指定する必要があります。Solaris ソフトウェアの使用時は、1024 より小さいポートでプロセスを開始する場合は、root ユーザーになる必要があります。 このため、\f2nameserverport\fP として 1024 または 1024 より大きいポートを使用することをお勧めします。 .LP -.SH "説明" -.LP - +\f2\-ORBInitialPort\fP \f2nameserverport\fP ץ\f3ɬ\fPǤ \f2nameserverport\fP ͤˤϡ\f2orbd\fP ¹Ԥ졢忮׵ԵƤݡȤꤹɬפޤSolaris եȥѤ硢1024 꾮ݡȾǥץ򳫻Ϥˤϡroot 桼ˤʤɬפޤΤᡢ\f2nameserverport\fPȤ 1024 ʾΥݡֹѤ뤳Ȥ򤪴ᤷޤ .LP +.SH "" .LP -\f2servertool\fP はアプリケーションプログラマが、持続サーバーの登録、登録解除、起動、および停止を行うためのコマンド行インタフェースを提供します。そのほかに、サーバーに関するさまざまな統計情報を取得するためのコマンドも提供します。 .LP -.SH "オプション" +\f2servertool\fP ϥץꥱץޤ³СϿϿưߤԤΥޥɹԥ󥿥ե󶡤ޤΤۤˡС˴ؤ뤵ޤޤ׾뤿Υޥɤ󶡤ޤ .LP - +.SH "ץ" .LP .RS 3 .TP 3 \-ORBInitialHost nameserverhost -ネームサーバーが、実行され、着信要求を待機しているホストマシンを指定します。このオプションを指定しない場合、\f2nameserverhost\fP はデフォルトで \f2localhost\fP に設定されます。\f2orbd\fP と \f2servertool\fP が異なるマシン上で実行されている場合は、\f2orbd\fP が実行されているホストの名前と IP アドレスを指定する必要があります。 +͡ॵС¹Ԥ졢忮׵ԵƤۥȥޥꤷޤΥץꤷʤ硢\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 を使って背後の実行環境にオプションを渡すことはよく行われています。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ\f3\-J\fP Ȥäظμ¹ԴĶ˥ץϤȤϤ褯ԤƤޤ .RE .LP -.SH "コマンド" -.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 になっている必要があります。インストールメソッドは、オプションであり、データベーススキーマの作成などの独自のサーバーインストール動作を開発者が指定できます。 +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 になっている必要があります。アンインストールメソッドは、オプションであり、インストールメソッドの動作の取り消しなどの独自のサーバーアンインストール動作を開発者が指定できます。 +С ID ޤϥץꥱ̾ѤơORBD ΥСϿޤΥޥɤˤäơ\f2\-server\fP ץǼ̤륵СΥᥤ󥯥饹ǥ󥤥󥹥ȡ᥽åɤƤӽФޤΥ󥤥󥹥ȡ᥽åɤϡ\f2public static void uninstall(org.omg.CORBA.ORB)\fP ˤʤäƤɬפޤ󥤥󥹥ȡ᥽åɤϡץǤꡢ󥹥ȡ᥽åɤưμäʤɤȼΥС󥤥󥹥ȡưȯԤǤޤ .TP 3 getserverid \-applicationName\ <application\ name> -アプリケーションに関連付けられているサーバー ID を返します。 +ץꥱ˴ϢդƤ륵С ID ֤ޤ .TP 3 list -ORBD に登録されているすべての持続サーバーに関する情報を一覧表示します。 +ORBD ϿƤ뤹٤Ƥλ³С˴ؤɽޤ .TP 3 listappnames -現在 ORBD に登録されているすべてのサーバーのアプリケーション名を一覧表示します。 + ORBD ϿƤ뤹٤ƤΥСΥץꥱ̾ɽޤ .TP 3 listactive -ORDB によって起動され、現在実行されているすべての持続サーバーに関する情報を一覧表示します。 +ORDB ˤäƵư졢߼¹ԤƤ뤹٤Ƥλ³С˴ؤɽޤ .TP 3 locate \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> [\-endpointType\ <endpointType>\ ] -登録されたサーバーで作成したすべての ORB の特定の型について端点 (ポート) を検出します。サーバーが実行されていない場合、起動されます。端点の型が指定されていない場合、サーバーの ORB ごとに関連付けられている plain 型 または non\-protected 型の端点が返されます。 +Ͽ줿СǺ٤Ƥ 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 で作成されている場合、登録したポートがすべて返されます。 +Ͽ줿С ORB Ͽ줿ü (ݡ) 򸡽ФޤС¹ԤƤʤ硢ưޤ\f2orbid\fP ꤵƤʤϡǥեͤΡ""פ\f2orbid\fP˳ƤޤORB ʸ \f2orbid\fP ǺƤ硢ϿݡȤ٤֤ޤ .TP 3 orblist \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -サーバー上に定義された ORB の ORBId を一覧表示します。ORBId はサーバーで作成された ORB の文字列名です。サーバーが実行されていない場合、起動されます。 +С줿 ORB ORBId ɽޤORBId ϥСǺ줿 ORB ʸ̾ǤС¹ԤƤʤ硢ưޤ .TP 3 shutdown \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -ORBD に登録されたアクティブなサーバーを停止します。このコマンドの実行中に、\f2\-serverid\fP パラメータまたは \f2\-applicationName\fP パラメータで指定されたクラス内に定義された \f2shutdown()\fP メソッドも呼び出されてサーバープロセスを正しく停止します。 +ORBD Ͽ줿ƥ֤ʥСߤޤΥޥɤμ¹ˡ\f2\-serverid\fP ѥ᡼ޤ \f2\-applicationName\fP ѥ᡼ǻꤵ줿饹줿 \f2shutdown()\fP ᥽åɤƤӽФƥСץߤޤ .TP 3 startup \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -ORBD に登録されたサーバーを起動します。サーバーが実行されていない場合は、このコマンドでサーバーを起動します。サーバーがすでに実行されている場合は、ユーザーにエラーメッセージが返されます。 +ORBD Ͽ줿СưޤС¹ԤƤʤϡΥޥɤǥСưޤСǤ˼¹ԤƤϡ桼˥顼å֤ޤ .TP 3 help -サーバーがサーバーツールで使用できるすべてのコマンドを表示します。 +ССġǻѤǤ뤹٤ƤΥޥɤɽޤ .TP 3 quit -サーバーツールを終了します。 +Сġλޤ .RE .LP -.SH "関連項目" -.LP - +.SH "Ϣ" .LP orbd(1) diff --git a/src/solaris/doc/sun/man/man1/ja/tnameserv.1 b/src/solaris/doc/sun/man/man1/ja/tnameserv.1 index 4b96e1b9998c56fc443363f01a7b2d5212fecf06..216075e37ecec3fdc36755130c4373a8b3682e5c 100644 --- a/src/solaris/doc/sun/man/man1/ja/tnameserv.1 +++ b/src/solaris/doc/sun/man/man1/ja/tnameserv.1 @@ -19,59 +19,59 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH tnameserv 1 "02 Jun 2010" +.TH tnameserv 1 "14 Apr 2011" .LP -.SH "名前" -Java IDL:一時ネームサービス \- \f2tnameserv\fP +.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 ツールの詳細については、\f2orbd\fP の orbd(1)または +ΥɥȤǤϡ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 @ +\f2ORBD ˴ޤޤ Java IDL ͡ॵӥ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlに関するトピックを参照してください。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html˴ؤȥԥå򻲾ȤƤ .LP .LP -ここでは、以下の項目について説明します。 +ǤϡʲιܤˤĤޤ .LP .RS 3 .TP 2 o -Java\ IDL 一時ネームサービス +Java\ IDL ͡ॵӥ .TP 2 o -Java\ IDL 一時ネームサービスの起動 +Java\ IDL ͡ॵӥεư .TP 2 o -Java\ IDL 一時ネームサービスの停止 +Java\ IDL ͡ॵӥ .TP 2 o -サンプルクライアント:名前空間へのオブジェクトの追加 +ץ륯饤: ֤̾ؤΥ֥Ȥɲ .TP 2 o -サンプルクライアント:名前空間のブラウズ +ץ륯饤: ֤̾Υ֥饦 .RE .LP -.SH "Java\ IDL 一時ネームサービス" +.SH "Java IDL ͡ॵӥ" .LP .LP -CORBA の COS (Common Object Services) ネームサービスは、ファイルシステムがファイルに対してディレクトリ構造を提供しているのと同じように、オブジェクト参照に対してツリー構造のディレクトリを提供します。Java IDL の一時ネームサービスである \f2tnameserv\fP は、COS ネームサービスの仕様を単純な形で実装したものです。 +CORBA COS (Common Object Services) ͡ॵӥϡե륷ƥबեФƥǥ쥯ȥ깽¤󶡤ƤΤƱ褦ˡ֥ȻȤФƥĥ꡼¤Υǥ쥯ȥ󶡤ޤJava IDL ΰ͡ॵӥǤ \f2tnameserv\fP ϡCOS ͡ॵӥλͤñʷǼΤǤ .LP .LP -オブジェクト参照は名前空間に名前で格納され、オブジェクト参照と名前のペアは、それぞれ「ネームバインディング」と呼ばれます。ネームバインディングは「ネーミングコンテキスト」に組み込むことができます。ネーミングコンテキストはそれ自体がネームバインディングであり、ファイルシステムのサブディレクトリと同じ編成機能を持ちます。すべてのバインディングは「初期ネーミングコンテキスト」に格納されます。名前空間において、初期ネーミングコンテキストは唯一の持続的バインディングです。 それ以外のネーミングコンテキストは、Java IDL のネーミングサービスプロセスが停止し、再起動されると失われます。 +֥ȻȤ֤̾̾dzǼ졢֥ȻȤ̾Υڥϡ줾֥͡Хǥ󥰡פȸƤФޤ͡Хǥ󥰤ϡ֥͡ߥ󥰥ƥȡפȤ߹ळȤǤޤ͡ߥ󥰥ƥȤϤ켫Τ͡Хǥ󥰤Ǥꡢե륷ƥΥ֥ǥ쥯ȥƱǽޤ٤ƤΥХǥ󥰤ϡֽ͡ߥ󥰥ƥȡפ˳Ǽޤ֤̾ˤơ͡ߥ󥰥ƥȤͣλ³ŪХǥ󥰤ǤʳΥ͡ߥ󥰥ƥȤϡJava IDL Υ͡ߥ󥰥ӥץߤƵưȼޤ .LP .LP -アプレットまたはアプリケーションから COS ネームサービスを使用するためには、その ORB はネームサービスが動作しているホストのポートを知っているか、そのネームサービスの文字列化された初期ネーミングコンテキストにアクセスできなければなりません。ネームサービスは、Java\ IDL のネームサービスでもその他の COS 準拠のネームサービスでもかまいません。 +ץåȤޤϥץꥱ󤫤 COS ͡ॵӥѤ뤿ˤϡ ORB ϥ͡ॵӥưƤۥȤΥݡȤΤäƤ뤫Υ͡ॵӥʸ󲽤줿͡ߥ󥰥ƥȤ˥ǤʤФʤޤ󡣥͡ॵӥϡJava IDL Υ͡ॵӥǤ⤽¾ COS Υ͡ॵӥǤ⤫ޤޤ .LP -.SH "Java\ IDL 一時ネームサービスの起動" +.SH "Java IDL ͡ॵӥεư" .LP .LP -Java\ IDL ネームサービスは、ネームサービスを使用するアプリケーションまたはアプレットより前に起動しておかなければなりません。Java\ IDL 製品をインストールすると、Java IDL ネームサービスを起動するスクリプト (Solaris: \f2tnameserv\fP) か、実行可能ファイル (Windows NT: \f2tnameserv.exe\fP) が作成されます。バックグラウンドで動作するように、ネームサービスを起動してください。 +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 で待機します。 +ä˻ꤷʤ硢Java IDL ͡ॵӥϡORB \f2resolve_initial_references()\fP ᥽åɤ \f2list_initial_references()\fP ᥽åɤμ˻Ѥ֡ȥȥåץץȥФƥݡ 900 Եޤ .LP .nf \f3 @@ -83,7 +83,7 @@ Java\ IDL ネームサービスは、ネームサービスを使用するアプ .LP .LP -ネームサーバーポートを指定しない場合、デフォルトでポート 900 が使用されます。Solaris ソフトウェアの実行時は、1024 より小さいポートでプロセスを開始する場合、root ユーザーになる必要があります。 このため、1024 または 1024 より大きいポートを使用することをお勧めします。 1050 のように別のポートを指定し、ネームサービスをバックグラウンドで実行するには、UNIX コマンドシェルで次のように入力します。 +͡ॵСݡȤꤷʤ硢ǥեȤǥݡ 900 ѤޤSolaris եȥμ¹Իϡ1024 꾮ݡȤǥץ򳫻Ϥ硢root 桼ˤʤɬפޤΤᡢ1024 ޤ 1024 礭ݡֹѤ뤳Ȥ򤪴ᤷޤ1050 Τ褦̤ΥݡȤꤷ͡ॵӥХå饦ɤǼ¹ԤˤϡUNIX ޥɥǼΤ褦Ϥޤ .LP .nf \f3 @@ -95,7 +95,7 @@ Java\ IDL ネームサービスは、ネームサービスを使用するアプ .LP .LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 +Windows MS\-DOS ƥץץȤǤϡΤ褦Ϥޤ .LP .nf \f3 @@ -107,32 +107,32 @@ Windows の MS\-DOS システムプロンプトでは、次のように入力し .LP .LP -ネームサーバーのクライアントには、新しいポート番号を知らせる必要があります。このため、ORB オブジェクトの作成時に \f2org.omg.CORBA.ORBInitialPort\fP プロパティーに新しいポート番号を設定します。 +͡ॵСΥ饤ȤˤϡݡֹΤ餻ɬפޤΤᡢORB ֥Ȥκ \f2org.omg.CORBA.ORBInitialPort\fP ץѥƥ˿ݡֹꤷޤ .LP .SS -異なるマシン上でのクライアントとサーバーの実行 +ۤʤޥǤΥ饤ȤȥСμ¹ .LP .LP -Java IDL と RMI\-IIOP のほとんどのチュートリアルでは、ネームサービス、サーバー、およびクライアントはすべて開発用のマシン上で実行されます。実際に配備する場合には、クライアントとサーバーを、ネームサービスとは異なるホスト上で実行することが多くなります。 +Java IDL RMI\-IIOP ΤۤȤɤΥ塼ȥꥢǤϡ͡ॵӥСӥ饤ȤϤ٤ƳȯѤΥޥǼ¹Ԥޤºݤˤϡ饤ȤȥС򡢥͡ॵӥȤϰۤʤۥȾǼ¹Ԥ뤳Ȥ¿ʤޤ .LP .LP -クライアントとサーバーがネームサービスを見つけるには、クライアントとサーバーが、ネームサービスが実行されているポートの番号とホストを認識している必要があります。そのためには、クライアントとサーバーのファイル内の \f2org.omg.CORBA.ORBInitialPort\fP プロパティーと \f2org.omg.CORBA.ORBInitialHost\fP プロパティーをネームサービスが実行されているポートの番号とマシンの名前に設定します。この例は、 +饤ȤȥС͡ॵӥ򸫤Ĥˤϡ饤ȤȥС͡ॵӥ¹ԤƤݡȤֹȥۥȤǧƤɬפޤΤˤϡ饤ȤȥСΥե \f2org.omg.CORBA.ORBInitialPort\fP ץѥƥ \f2org.omg.CORBA.ORBInitialHost\fP ץѥƥ͡ॵӥ¹ԤƤݡȤֹȥޥ̾ꤷޤϡ .na -\f2「RMI\-IIOP を使った Hello World の例」\fP @ +\f2RMI\-IIOP Ȥä Hello World פ˼Ƥޤ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/rmi\-iiop/rmiiiopexample.htmlに示されています。コマンド行オプション \f2\-ORBInitialPort\fP \f2nameserverport#\fP と \f2\-ORBInitialHost\fP \f2nameserverhostname\fP を使用して、クライアントとサーバーに対してネームサービスを探す場所を指定することもできます。 +http://java.sun.com/javase/6/docs/technotes/guides/rmi\-iiop/rmiiiopexample.htmlޥɹԥץ \f2\-ORBInitialPort\fP \f2nameserverport#\fP \f2\-ORBInitialHost\fP \f2nameserverhostname\fP Ѥơ饤ȤȥСФƥ͡ॵӥõꤹ뤳ȤǤޤ .na -\f2「Java IDL: 2 台のマシン上で実行する Hello World プログラム」\fP @ +\f2Java IDL: 2 ΥޥǼ¹Ԥ Hello World ץ\fP @ .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/tutorial/jidl2machines.html には、コマンド行オプションを使用して指定する方法が示されています。 +http://java.sun.com/javase/6/docs/technotes/guides/idl/tutorial/jidl2machines.html ˤϡޥɹԥץѤƻꤹˡƤޤ .LP .LP -たとえば、一時ネームサービス \f2tnameserv\fP が、ホスト \f2nameserverhost\fP のポート 1050 上で実行されているとします。さらに、クライアントがホスト \f2clienthost\fP 上で実行され、サーバーはホスト \f2serverhost\fP 上で実行されているとします。 +ȤС͡ॵӥ \f2tnameserv\fP ۥ \f2nameserverhost\fP Υݡ 1050 Ǽ¹ԤƤȤޤˡ饤Ȥۥ \f2clienthost\fP Ǽ¹Ԥ졢Сϥۥ \f2serverhost\fP Ǽ¹ԤƤȤޤ .LP .RS 3 .TP 2 o -次のように、ホスト \f2nameserverhost\fP 上で \f2tnameserv\fP を起動します。 +Τ褦ˡۥ \f2nameserverhost\fP \f2tnameserv\fP ưޤ .nf \f3 .fl @@ -144,7 +144,7 @@ o .fi .TP 2 o -\f2serverhost\fP 上でサーバーを起動します。 +\f2serverhost\fP ǥСưޤ .nf \f3 .fl @@ -154,7 +154,7 @@ o .fi .TP 2 o -\f2clienthost\fP 上でクライアントを起動します。 +\f2clienthost\fP ǥ饤Ȥưޤ .nf \f3 .fl @@ -166,38 +166,34 @@ o .LP .SS -\-J オプション -.LP -このコマンド行オプションは、\f2tnameserve\fP とともに使用できます。 -.RS 3 - +\-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 を使って背後の実行環境にオプションを渡すことはよく行われています。 +Java ۥޥ \f2option\fP Ϥޤ\f2option\fP ˤϡjava(1)Υե󥹥ڡ˵ܤƤ륪ץ 1 ĻꤷޤȤС\f3\-J\-Xms48m\fP Ȼꤹȡȥåץ꡼ 48M ХȤꤵޤ\f3\-J\fP Ȥäظμ¹ԴĶ˥ץϤȤϤ褯ԤƤޤ .RE .LP -.RE -.SH "Java\ IDL 一時ネームサービスの停止" +.SH "Java IDL ͡ॵӥ" .LP .LP -Java IDL ネームサービスを停止するには、Unix の場合は、\f2kill\fP などのオペレーティングシステムのコマンドを使い、Windows の場合は、\f2Ctrl\-C\fP を使います。ネームサービスを明示的に停止するまでは、呼び出し待機状態が続きます。なお、サービスを終了させると、Java\ IDL ネームサービスに登録されている名前は失われます。 +Java IDL ͡ॵӥߤˤϡUnix ξϡ\f2kill\fP ʤɤΥڥ졼ƥ󥰥ƥΥޥɤȤWindows ξϡ\f2Ctrl\-C\fP Ȥޤ͡ॵӥŪߤޤǤϡƤӽФԵ֤³ޤʤӥλȡJava IDL ͡ॵӥϿƤ̾ϼޤ .LP -.SH "サンプルクライアント:名前空間へのオブジェクトの追加" +.SH "ץ륯饤: ֤̾ؤΥ֥Ȥɲ" .LP .LP -次に示すサンプルプログラムは、名前を名前空間に追加する方法を示すものです。このサンプルプログラムは、このままの状態で完全に動作する一時ネームサービスクライアントで、次のような単純なツリーを作成するものです。 +˼ץץϡ֤̾̾ɲäˡ򼨤ΤǤΥץץϡΤޤޤξ֤Ǵư͡ॵӥ饤ȤǡΤ褦ñʥĥ꡼ΤǤ .LP .nf \f3 .fl \fP\f3 .fl - \fP\f4初期\fP\f3 + \fP\f4\fP\f3 .fl - \fP\f4ネーミングコンテキスト\fP\f3 + \fP\f4͡ߥ󥰥ƥ\fP\f3 .fl / \\ .fl @@ -215,7 +211,7 @@ Java IDL ネームサービスを停止するには、Unix の場合は、\f2kil .LP .LP -この例で、\f3plans\fP はオブジェクト参照、\f3Personal\fP は \f3calendar\fP と \f3schedule\fP の 2 つのオブジェクト参照を含むネーミングコンテキストです。 +ǡ\f3plans\fP ϥ֥Ȼȡ\f3Personal\fP \f3calendar\fP \f3schedule\fP 2 ĤΥ֥ȻȤޤ͡ߥ󥰥ƥȤǤ .LP .nf \f3 @@ -242,7 +238,7 @@ public class NameClient .fi .LP -前述の「Java IDL 一時ネームサービスの起動」で、ネームサーバーはポート 1050 を使用して起動しました。 次のコードで、このポート番号をクライアントプログラムに知らせます。 +ҤΡJava IDL ͡ॵӥεưפǡ͡ॵСϥݡ 1050 ѤƵưޤΥɤǡΥݡֹ򥯥饤ȥƥΤ餻ޤ .nf \f3 .fl @@ -258,7 +254,7 @@ public class NameClient .fi .LP -次のコードでは、初期ネーミングコンテキストを取得し、それを \f3ctx\fP に代入します。2 行目では、\f3ctx\fP をダミーのオブジェクト参照 \f3objref\fP にコピーします。 この \f3objref\fP には、あとでさまざまな名前を割り当てて名前空間に追加します。 +ΥɤǤϡ͡ߥ󥰥ƥȤ \f3ctx\fP ޤ2 ܤǤϡ\f3ctx\fP ߡΥ֥Ȼ \f3objref\fP ˥ԡޤ objref ˤϡȤǤޤޤ̾Ƥ֤̾ɲäޤ .nf \f3 .fl @@ -274,7 +270,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -次のコードでは、text 型の名前 plans を作成し、それをダミーのオブジェクト参照にバインドします。その後、\f2rebind\fP を使用して初期ネーミングコンテキストの下に "plans" を追加しています。\f2rebind\fP メソッドを使用すれば、\f2bind\fP を使用した場合に発生する例外を発生させずに、このプログラムを何度も繰り返し実行できます。 +ΥɤǤϡtext ̾ plans ߡΥ֥ȻȤ˥Хɤޤθ塢rebind Ѥƽ͡ߥ󥰥ƥȤβ \f2plans ɲäƤޤ\fP \f2rebind\fP ᥽åɤѤСbind Ѥȯ㳰ȯˡ \f2Υץ٤֤ⷫ¹ԤǤޤ\fP .nf \f3 .fl @@ -292,7 +288,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -次のコードでは、directory 型の Personal というネーミングコンテキストを作成します。その結果得られるオブジェクト参照 \f3ctx2\fP をこの名前にバインドし、初期ネーミングコンテキストに追加します。 +ΥɤǤϡdirectory Personal Ȥ͡ߥ󥰥ƥȤޤη륪֥Ȼ \f3ctx2\fP 򤳤̾˥Хɤ͡ߥ󥰥ƥȤɲäޤ .nf \f3 .fl @@ -310,7 +306,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -残りのコードでは、ダミーのオブジェクト参照を schedule と calendar という名前でネーミングコンテキスト "Personal" (\f3ctx2\fP) にバインドします。 +ĤΥɤǤϡߡΥ֥ȻȤ schedule calendar Ȥ̾ǥ͡ߥ󥰥ƥ "Personal" (\f3ctx2\fP) ˥Хɤޤ .nf \f3 .fl @@ -350,10 +346,10 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -.SH "サンプルクライアント:名前空間のブラウズ" +.SH "ץ륯饤: ֤̾Υ֥饦" .LP .LP -次のサンプルプログラムでは、名前空間をブラウズする方法を示します。 +ΥץץǤϡ֤֥̾饦ˡ򼨤ޤ .LP .nf \f3 @@ -380,7 +376,7 @@ public class NameClientList .fi .LP -前述の「Java IDL 一時ネームサービスの起動」で、ネームサーバーはポート 1050 を使用して起動しました。 次のコードで、このポート番号をクライアントプログラムに知らせます。 +ҤΡJava IDL ͡ॵӥεưפǡ͡ॵСϥݡ 1050 ѤƵưޤΥɤǡΥݡֹ򥯥饤ȥƥΤ餻ޤ .nf \f3 .fl @@ -400,7 +396,7 @@ public class NameClientList .fi .LP -次のコードでは、初期ネーミングコンテキストを取得しています。 +ΥɤǤϡ͡ߥ󥰥ƥȤƤޤ .nf \f3 .fl @@ -414,7 +410,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -\f2list\fP メソッドは、ネーミングコンテキストに追加されているバインディングをリストします。この場合、最大 1000 個までのバインディングが初期ネーミングコンテキストから BindingListHolder に返されます。 残りのバインディングは、BindingIteratorHolder に返されます。 +\f2list\fP ᥽åɤϡ͡ߥ󥰥ƥȤɲäƤХǥ󥰤ꥹȤޤξ硢 1000 ĤޤǤΥХǥ󥰤͡ߥ󥰥ƥȤ BindingListHolder ֤ޤĤΥХǥ󥰤ϡBindingIteratorHolder ֤ޤ .nf \f3 .fl @@ -430,7 +426,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -次のコードでは、返された BindingListHolder からバインディングの配列を取得します。バインディングがない場合は、プログラムは終了します。 +ΥɤǤϡ֤줿 BindingListHolder Хǥ󥰤ޤХǥ󥰤ʤϡץϽλޤ .nf \f3 .fl @@ -444,7 +440,7 @@ NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); .fi .LP -残りのコードでは、バインディングに対してループ処理を行い、名前を出力します。 +ĤΥɤǤϡХǥ󥰤Фƥ롼׽Ԥ̾Ϥޤ .nf \f3 .fl diff --git a/src/solaris/doc/sun/man/man1/ja/unpack200.1 b/src/solaris/doc/sun/man/man1/ja/unpack200.1 index 8a34dd3b7183635c397942e5088d36c45f794002..c5f121364305e223507272c32e29a93865620317 100644 --- a/src/solaris/doc/sun/man/man1/ja/unpack200.1 +++ b/src/solaris/doc/sun/man/man1/ja/unpack200.1 @@ -19,159 +19,125 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH unpack200 1 "02 Jun 2010" +.TH unpack200 1 "14 Apr 2011" .LP -.SH "名前" -unpack200 \- JAR アンパックツール +.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 - +.SH "" .LP .LP \f4unpack200\fP\f2 [ \fP\f2options\fP ] \f2input\-file\fP \f2JAR\-file\fP .LP .LP -オプションの指定順序に決まりはありません。コマンド行に指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。 -.LP -.RS 3 - +ץλ˷ޤϤޤ󡣥ޥɹԤ˻ꤵ줿ǸΥץ󤬡˻ꤵ줿٤ƤΥץͥ褵ޤ .LP .RS 3 .TP 3 input\-file -入力ファイルの名前。 入力ファイルは通常、pack200 gzip ファイルか pack200 ファイルです。このほかに、0 を設定すれば pack200(1) から作成された JAR ファイルも入力ファイルとして使用できます。 この場合、入力ファイルの内容が Pack200 マーカーとともに出力 JAR ファイルにコピーされます。 +ϥե̾ϥե̾pack200 gzip ե뤫 pack200 եǤΤۤˡ0 ꤹ pack200(1) 줿 JAR եϥեȤƻѤǤޤξ硢ϥեƤ Pack200 ޡȤȤ˽ JAR ե˥ԡޤ .TP 3 JAR\-file -出力 JAR ファイル名。 + JAR ե̾ .RE .LP -.RE -.SH " 説明" +.SH " " .LP - .LP -.LP -\f2unpack200\fP は、\f2pack200\fP(1) で作成されたパックファイルを JAR ファイルに変換するネイティブ実装です。一般的な使用方法: -.LP -.RS 3 - +\f2unpack200\fP ϡpack200(1) Ǻ줿ѥåե JAR եѴ \f2ͥƥּ\fPǤŪʻˡ: .LP .LP \f2% unpack200 myarchive.pack.gz myarchive.jar\fP .LP -.RE .LP -この例では、デフォルトの \f2unpack200\fP 設定で、\f2myarchive.jar\fP から \f2myarchive.pack.gz\fP が作成されます。 +Ǥϡ \f2ǥեȤ unpack200 ǡmyarchive.pack.gz\fP \f2myarchive.jar\fP \f2ޤ\fP .LP -.SH "オプション" +.SH "ץ" .LP -.SS -標準オプション .LP -.RS 3 - +\f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP .LP .LP -\f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP +JAR եΤ٤ƤΥȥ \f2true\fP \f2false\fP \f2keep\fP Ȥƥǥե졼ꤷޤǥեȥ⡼ɤ \f2keep\fP Ǥ \f2true\fP ޤ \f2false 硢\fPǥեȤư򥪡С饤ɤơ JAR եΤ٤ƤΥȥΥǥե졼⡼ɤꤷޤ .LP -.RS 3 - .LP +\f4\-r \-\-remove\-pack\-file\fP .LP -JAR ファイル内のすべてのエントリに \f2true\fP、\f2false\fP、\f2keep\fP としてデフレーションを設定します。デフォルトモードは \f2keep\fP です。\f2true\fP または \f2false\fP の場合、デフォルトの動作をオーバーライドして、出力 JAR ファイル内のすべてのエントリのデフレーションモードを設定します。 .LP -.RE -.RE -.SS -非標準オプション +ϥѥåեޤ .LP -.RS 3 - .LP +\f4\-v \-\-verbose\fP .LP -\f4\-r \-\-remove\-pack\-file\fP .LP -.RS 3 - +Ǿ¤ΥåϤޤΥץʣꤹȡĹåϤޤ .LP .LP -入力パックファイルを削除します。 +\f4\-q \-\-quiet\fP .LP -.RE .LP -\f4\-v \-\-verbose\fP +åɽưޤ .LP -.RS 3 - .LP +\f4\-lfilename \-\-log\-file=\fP\f2filename\fP .LP -最小限のメッセージを出力します。このオプションを複数指定すると、より長いメッセージが出力されます。 .LP -.RE +ϥåΥեꤷޤ .LP -\f4\-q \-\-quiet\fP .LP -.RS 3 - +\f4\-? \-h \-\-help\fP .LP .LP -メッセージを表示せずに動作します。 +Υޥɤ˴ؤإ׾Ϥޤ .LP -.RE .LP -\f4\-lfilename \-\-log\-file=\fP\f2filename\fP +\f4\-V \-\-version\fP .LP -.RS 3 - .LP +Υޥɤ˴ؤСϤޤ .LP -出力メッセージのログファイルを指定します。 .LP -.RE -.RE -.SH "終了ステータス" +\f4\-J\fP\f2option\fP .LP - .LP +unpack200 ˤäƸƤӽФ Java ưġ \f2ץ\fP \f2Ϥޤ\fP .LP -次の終了値が返されます。 +.SH "λơ" .LP -.RS 3 - .LP +νλ֤ͤޤ .LP -\f2\ 0\fP " 成功" .LP +\f2\ 0\fP " " .LP -\f2>0\fP " エラー" .LP -.RE -.SH "関連項目" +\f2>0\fP " 顼" +.LP +.SH "Ϣ" .LP .RS 3 .TP 2 @@ -180,35 +146,33 @@ pack200(1) .TP 2 o .na -\f2Java SE のドキュメント\fP @ +\f2Java SE Υɥ\fP @ .fi http://java.sun.com/javase/6/docs/index.html .TP 2 o .na -\f2「Java 配備ガイド \- Pack200」\fP @ +\f2Java \- Pack200\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/pack200.html .TP 2 o -jar(1) \- Java Archive ツール」 +jar(1) \- Java Archive ġ .TP 2 o -「jarsigner(1) \- JAR 署名および検証ツール」 +jarsigner(1) \- JAR ̾Ӹڥġ .TP 2 o -\f2attributes(5)\fP のマニュアルページ +\f2attributes(5)\fP Υޥ˥奢ڡ .RE .LP -.SH "注意事項" -.LP - +.SH "ջ" .LP .LP -このコマンドと \f2unpack(1)\fP を混同しないでください。これらは別製品です。 +Υޥɤ \f2unpack(1) \fPƱʤǤʤǤ .LP .LP -SDK に付属する Java SE API 仕様との相違が見つかった場合には、仕様を優先してください。 +SDK ° Java SE API ͤȤ㤬Ĥäˤϡͤͥ褷Ƥ .LP diff --git a/src/solaris/doc/sun/man/man1/ja/wsgen.1 b/src/solaris/doc/sun/man/man1/ja/wsgen.1 index 49f39d6054f6ff05e273564d2eedd95786e7d398..2a3bc5874eb4939ff1724ed4191632b602fe0c1d 100644 --- a/src/solaris/doc/sun/man/man1/ja/wsgen.1 +++ b/src/solaris/doc/sun/man/man1/ja/wsgen.1 @@ -19,30 +19,24 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH wsgen 1 "02 Jun 2010" -.SH "名前" -wsgen \- XML Web Services (JAX\-WS) 2.0 のための Java(TM) API -.RS 3 - -.LP +.TH wsgen 1 "14 Apr 2011" +.SH "̾" +wsgen \- XML Web Services (JAX\-WS) 2.0 Τ Java(TM) API .LP -\f3仕様バージョン:\fP 2.1 +\f3ͥС:\fP 2.1 .br -\f3実装バージョン:\fP 2.1.1 +\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 サービスのエンドポイント実装クラス (SEI) を読み取り、Web サービスの配備と呼び出しに必要なすべてのアーティファクトを生成します。 -.LP -.RE -.SH "概要" -.LP -\f2wsgen\fP ツールは、JAX\-WS Web サービスで使用される JAX\-WS ポータブルアーティファクトを生成します。このツールは、Web サービスのエンドポイントクラスを読み取り、Web サービスの配備と呼び出しに必要なすべてのアーティファクトを生成します。JAXWS 2.1.1 RI には wsgen Ant タスクも用意されています。詳細は、 +\f2wsgen\fP ġϡJAX\-WS Web ӥǻѤ JAX\-WS ݡ֥륢ƥեȤޤΥġϡWeb ӥΥɥݥȥ饹ɤ߼ꡢWeb ӥȸƤӽФɬפʤ٤ƤΥƥեȤޤJAXWS 2.1.1 RI ˤ wsgen Ant ѰդƤޤܺ٤ϡ .na -\f2Wsgen Ant タスク\fP @ +\f2Wsgen Ant \fP @ .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsgenant.htmlを参照してください。 +https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsgenant.html򻲾ȤƤ .LP -.SH "wsgen の起動" +.SH "wsgen εư" .RS 3 .TP 2 o @@ -69,7 +63,7 @@ o .RE .LP -.SH "構文" +.SH "ʸ" .nf \f3 .fl @@ -80,7 +74,7 @@ wsgen [options] <SEI>\fP \fP .fi .LP -次の表に、\f2wsgen\fP のオプションを示します。 +ɽˡ \f2wsgen\fP Υץ򼨤ޤ .br .LP .TS @@ -111,7 +105,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -入力クラスファイルの検索場所を指定します +ϥ饹եθꤷޤ .br .di .nr a| \n(dn @@ -127,7 +121,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -\f2\-classpath <path>\fP と同じ +\-classpath <path> \f2ƱǤ\fP .br .di .nr b| \n(dn @@ -143,7 +137,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成される出力ファイルを格納する場所を指定する +ϥեǼꤷޤ .br .di .nr c| \n(dn @@ -159,7 +153,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ベンダー拡張 (仕様で規定されていない機能) を許可します。拡張を使用すると、アプリケーションの移植性が失われたり、ほかの実装との相互運用が行えなくなる可性があります +٥ĥ (ͤǵꤵƤʤǽ) ĤޤĥѤȡץꥱΰܿ줿ꡢۤμȤ߱ѤԤʤʤޤ .br .di .nr d| \n(dn @@ -175,7 +169,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ヘルプを表示します +إפɽޤ .br .di .nr e| \n(dn @@ -191,7 +185,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成されたファイルを保持します +줿եݻޤ .br .di .nr f| \n(dn @@ -207,7 +201,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -常に \-wsdl オプションと組み合わせて使用します。WSDL などの生成されたリソースファイルの格納場所を指定します + \-wsdl ץȤ߹碌ƻѤޤWSDL ʤɤ줿꥽եγǼꤷޤ .br .di .nr g| \n(dn @@ -223,7 +217,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成されるソースファイルを格納する場所を指定する +륽եǼꤹ .br .di .nr h| \n(dn @@ -239,7 +233,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -コンパイラが実行している処理に関するメッセージを出力します +ѥ餬¹ԤƤ˴ؤåϤޤ .br .di .nr i| \n(dn @@ -255,7 +249,7 @@ wsgen [options] <SEI>\fP .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -バージョン情報を出力します。このオプションを使用した場合、バージョン情報が出力されるだけです。通常の処理は実行されません。 +СϤޤΥץѤ硢С󤬽ϤǤ̾νϼ¹Ԥޤ .br .di .nr j| \n(dn @@ -271,7 +265,7 @@ wsgen [options] <SEI>\fP .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 オプションと組み合わせないと使用できません。 +ǥեȤǤ \f2wsgen\fP WSDL եޤ󡣤Υե饰ϾάǽǤꤷ \f2wsgen\fP WSDL ե褦ˤʤޤΥե饰̾ɥݥȤ˳ȯԤ WSDL 򻲾ȤǤ褦ˤ뤿˻Ѥޤ \f2protocol\fP ϾάǽǤꡢwsdl:binding ǻѤ٤ץȥꤹ뤿 \f2Ѥޤ\fPͭʥץȥϼΤȤǤ \f2soap1.1\fP \f2Xsoap1.2\fPǥեȤ \f2soap1.1\fP Ǥ \f2Xsoap1.2\fP ɸǤϤʤᡢ \f2\-extension\fP ץȤ߹碌ʤȻѤǤޤ .br .di .nr k| \n(dn @@ -287,7 +281,7 @@ wsgen [options] <SEI>\fP .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 + \f2\-wsdl\fP ץȤ߹碌ƻѤޤWSDL ٤ \f2wsdl:service\fP ̾ꤹ뤿˻Ѥޤ: \f2\-servicename "{http://mynamespace/}MyService"\fP .br .di .nr l| \n(dn @@ -303,7 +297,7 @@ wsgen [options] <SEI>\fP .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 + \f2\-wsdl\fP ץȤ߹碌ƻѤޤWSDL ٤ \f2wsdl:port\fP ̾ꤹ뤿˻Ѥޤ: \f2\-portname "{http://mynamespace/}MyPort"\fP .br .br .di @@ -315,7 +309,7 @@ wsgen [options] <SEI>\fP .nf .ll \n(34u .nr 80 0 -.nr 38 \w\f3オプション\fP +.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 @@ -346,7 +340,7 @@ wsgen [options] <SEI>\fP .80 .rm 80 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -386,7 +380,7 @@ wsgen [options] <SEI>\fP .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 143 file Input is too wide - \n(TW units +.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 @@ -403,7 +397,7 @@ wsgen [options] <SEI>\fP .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3説明\fP +\&\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 @@ -633,7 +627,7 @@ wsgen [options] <SEI>\fP .if \n-(b.=0 .nr c. \n(.c-\n(d.-57 .LP -.SH "例" +.SH "" .nf \f3 .fl @@ -641,7 +635,7 @@ wsgen [options] <SEI>\fP .fl .fi .LP -\f3stock\fP ディレクトリ内に @WebService 注釈が付けられた、StockService に必要なラッパークラスが生成されます。 +\f3stock\fP ǥ쥯ȥ @WebService ᤬դ줿StockService ɬפʥåѡ饹ޤ .nf \f3 .fl @@ -649,7 +643,7 @@ wsgen [options] <SEI>\fP .fl .fi .LP -SOAP 1.1 WSDL と、@WebService 注釈が付けられた Java クラス stock.StockService のスキーマが生成されます。 +SOAP 1.1 WSDL ȡ@WebService ᤬դ줿 Java 饹 stock.StockService Υޤޤ .nf \f3 .fl @@ -657,6 +651,6 @@ SOAP 1.1 WSDL と、@WebService 注釈が付けられた Java クラス stock.St .fl .fi .LP -SOAP 1.2 WSDL が生成されます。 +SOAP 1.2 WSDL ޤ .LP -サービスを配備するときに JAXWS ランタイムによって自動的に WSDL が生成されるため、開発時に WSDL を生成する必要はありません。 +ӥȤ JAXWS 󥿥ˤäƼưŪ WSDL 뤿ᡢȯ WSDL ɬפϤޤ diff --git a/src/solaris/doc/sun/man/man1/ja/wsimport.1 b/src/solaris/doc/sun/man/man1/ja/wsimport.1 index bd51f28ca1a60c8033452492558d9e3eba539311..ff5301792d86add28b3320b9d6d556f4b7c40d8f 100644 --- a/src/solaris/doc/sun/man/man1/ja/wsimport.1 +++ b/src/solaris/doc/sun/man/man1/ja/wsimport.1 @@ -19,44 +19,44 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH wsimport 1 "02 Jun 2010" -.SH "名前" -wsimport \- XML Web Services (JAX\-WS) 2.0 のための Java(TM) API +.TH wsimport 1 "14 Apr 2011" +.SH "̾" +wsimport \- XML Web Services (JAX\-WS) 2.0 Τ Java(TM) API .LP -\f3仕様バージョン:\fP 2.1 +\f3ͥС:\fP 2.1 .br -\f3実装バージョン:\fP 2.1.1 +\f3С:\fP 2.1.1 .br -.SH "概要" +.SH "" .LP -\f2wsimport\fP ツールは、次のような JAX\-WS ポータブルアーティファクトを生成します。 +\f2wsimport\fP ġϡΤ褦 JAX\-WS ݡ֥륢ƥեȤޤ .RS 3 .TP 2 o -サービスエンドポイントインタフェース (SEI) +ӥɥݥȥ󥿥ե (SEI) .TP 2 o -サービス +ӥ .TP 2 o -wsdl:fault からマップされる例外クラス (存在する場合) +wsdl:fault ޥåפ㳰饹 (¸ߤ) .TP 2 o -応答 wsdl:message から派生する非同期応答 Bean (存在する場合) + wsdl:message Ʊ Bean (¸ߤ) .TP 2 o -JAX\-B が生成する値タイプ (スキーマの型からマップされた Java クラス) +JAX\-B ͥ (ޤηޥåפ줿 Java 饹) .RE .LP -これらのアーティファクトは、WSDL ドキュメント、スキーマドキュメント、およびエンドポイント実装とともに WAR ファイル内にパッケージ化して配備することができます。また、wsimport Ant タスクも用意されています。 +ΥƥեȤϡWSDL ɥȡޥɥȡӥɥݥȼȤȤ WAR ե˥ѥå뤳ȤǤޤޤwsimport Ant ѰդƤޤ .na -\f2Wsimport Ant タスク\fP @ +\f2wsimport Ant \fP @ .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsimportant.htmlを参照してください。 +https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsimportant.html򻲾ȤƤ .br .LP -.SH "wsimport の起動" +.SH "wsimport εư" .RS 3 .TP 2 o @@ -77,7 +77,7 @@ o .RE .LP -.SH "構文" +.SH "ʸ" .nf \f3 .fl @@ -86,7 +86,7 @@ wsimport [options] <wsdl> \fP .fi .LP -次の表に、\f2wsimport\fP のオプションを示します。 +ɽˡ \f2wsimport\fP Υץ򼨤ޤ .LP .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 @@ -116,7 +116,7 @@ wsimport [options] <wsdl> .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成される出力ファイルを格納する場所を指定します +ϥեǼꤷޤ .br .di .nr a| \n(dn @@ -132,7 +132,7 @@ wsimport [options] <wsdl> .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -外部の JAX\-WS または JAXB バインディングファイルを指定します (\f2<file>\fP ごとに \f2\-b\fP が必要となる) + JAX\-WS ޤ JAXB Хǥ󥰥եꤷޤ ( \f2<file>\fP Ȥ \f2\-b\fP ɬפȤʤ) .br .di .nr b| \n(dn @@ -148,7 +148,7 @@ wsimport [options] <wsdl> .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -このオプションを JAXB スキーマコンパイラに渡します +Υץ JAXB ޥѥϤޤ .br .di .nr c| \n(dn @@ -164,11 +164,11 @@ wsimport [options] <wsdl> .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -外部エンティティー参照を解決するためのカタログファイルを指定します。 TR9401、XCatalog、OASIS XML Catalog の各形式がサポートされています。 +ƥƥȤ褹뤿ΥեꤷޤTR9401XCatalogOASIS XML Catalog γƷݡȤƤޤ .na -\f2カタログ\fP @ +\f2\fP @ .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlのドキュメントをお読みになり、\f3カタログ\fPのサンプルを参照してください。 +https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlΥɥȤɤߤˤʤꡢ\f3\fPΥץ򻲾ȤƤ .br .di .nr d| \n(dn @@ -184,7 +184,7 @@ https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlのドキュ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ベンダー拡張 (仕様で規定されていない機能) を許可します。拡張を使用すると、アプリケーションの移植性が失われたり、ほかの実装との相互運用が行えなくなる可能性があります +٥ĥ (ͤǵꤵƤʤǽ) ĤޤĥѤȡץꥱΰܿ줿ꡢۤμȤ߱ѤԤʤʤǽޤ .br .di .nr e| \n(dn @@ -200,7 +200,7 @@ https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlのドキュ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -ヘルプを表示します +إפɽޤ .br .di .nr f| \n(dn @@ -232,7 +232,7 @@ https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlのドキュ .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -HTTP プロキシサーバーを指定します (デフォルトのポートは 8080) +HTTP ץСꤷޤ (ǥեȤΥݡȤ 8080) .br .di .nr h| \n(dn @@ -248,7 +248,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成されたファイルを保持します +줿եݻޤ .br .di .nr i| \n(dn @@ -264,7 +264,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -このコマンド行オプション経由でターゲットパッケージを指定した場合、その指定内容は、パッケージ名に対するすべての WSDL/スキーマバインディングカスタマイズや、 仕様で規定されているデフォルトのパッケージ名アルゴリズムよりも優先されます +Υޥɹԥץͳǥåȥѥåꤷ硢λƤϡѥå̾Ф뤹٤Ƥ WSDL/ޥХǥ󥰥ޥ䡢 ͤǵꤵƤǥեȤΥѥå̾르ꥺͥ褵ޤ .br .di .nr j| \n(dn @@ -280,7 +280,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -生成されるソースファイルを格納する場所を指定します +륽եǼꤹ .br .di .nr k| \n(dn @@ -296,7 +296,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -コンパイラが実行している処理に関するメッセージを出力します +ѥ餬¹ԤƤ˴ؤåϤޤ .br .di .nr l| \n(dn @@ -312,7 +312,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -バージョン情報を出力します +СϤޤ .br .di .nr m| \n(dn @@ -344,7 +344,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -\f2@WebServiceClient.wsdlLocation\fP 値 +\f2@WebServiceClient.wsdlLocation\fP .br .di .nr o| \n(dn @@ -360,7 +360,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -指定された JAX\-WS 仕様バージョンに従ってコードを生成します。バージョン 2.0 では、JAX\-WS 2.0 仕様に準拠したコードを生成します。 +ꤵ줿 JAX\-WS ͥС˽äƥɤޤС 2.0 ǤϡJAX\-WS 2.0 ͤ˽򤷤ɤޤ .br .di .nr p| \n(dn @@ -376,7 +376,7 @@ HTTP プロキシサーバーを指定します (デフォルトのポートは .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 -wsimport 出力を抑制します +wsimport Ϥޤ .br .di .nr q| \n(dn @@ -387,7 +387,7 @@ wsimport 出力を抑制します .nf .ll \n(34u .nr 80 0 -.nr 38 \w\f3オプション\fP +.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 @@ -422,7 +422,7 @@ wsimport 出力を抑制します .nr 38 \n(n- .if \n(80<\n(38 .nr 80 \n(38 .nr 81 0 -.nr 38 \w\f3説明\fP +.nr 38 \w\f3\fP .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 @@ -483,7 +483,7 @@ wsimport 出力を抑制します .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3説明\fP +\&\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 @@ -766,13 +766,294 @@ wsimport 出力を抑制します .TE .if \n-(b.=0 .nr c. \n(.c-\n(d.-72 .LP -\f2\-b\fP オプションを使って、複数の JAX\-WS および JAXB バインディングファイルを指定できます。 これらのファイルを使って、パッケージ名や Bean 名など、さまざまなカスタマイズが可能です。 JAX\-WS および JAXB バインディングファイルの詳細は、 +\-b ץȤäơʣ JAX\-WS JAXB Хǥ󥰥ե \f2Ǥޤ\fP ΥեȤäơѥå̾ Bean ̾ʤɡޤޤʥޥǽǤJAX\-WS JAXB Хǥ󥰥եξܺ٤ϡ .na -\f2カスタマイズマニュアル\fP @ +\f2ޥޥ˥奢\fP @ .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/customizations.htmlを参照してください。 +https://jax\-ws.dev.java.net/nonav/2.1.1/docs/customizations.html򻲾ȤƤ .LP -.SH "例" +ɽˡ \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://username:password@example.org/stock?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 @@ -780,6 +1061,6 @@ https://jax\-ws.dev.java.net/nonav/2.1.1/docs/customizations.htmlを参照して .fl .fi .LP -Java アーティファクトを生成し、\f2http://stockquote.xyz/quote?wsdl\fP をインポートすることで、それらのアーティファクトをコンパイルします。 +Java ƥեȤ \f2http://stockquote.xyz/quote?wsdl\fP 򥤥ݡȤ뤳ȤǡΥƥեȤ򥳥ѥ뤷ޤ .br diff --git a/src/solaris/doc/sun/man/man1/ja/xjc.1 b/src/solaris/doc/sun/man/man1/ja/xjc.1 index 83d80e9c21b606fed0bf4505c71b49c966b387ff..7aec40218aaa65aa91a8d36458d6d9345e6d60d5 100644 --- a/src/solaris/doc/sun/man/man1/ja/xjc.1 +++ b/src/solaris/doc/sun/man/man1/ja/xjc.1 @@ -19,266 +19,277 @@ ." or visit www.oracle.com if you need additional information or have any ." questions. ." -.TH xjc 1 "02 Jun 2010" +.TH xjc 1 "14 Apr 2011" .LP .ad c -.SH "名前" -xjc \- XML バインドのための Java(TM) アーキテクチャー +.SH "̾" +xjc \- XML ХɤΤ Java(TM) ƥ㡼 .br -バインディングコンパイラ +Хǥ󥰥ѥ .LP -\f3仕様バージョン:\fP 2.1 +\f3ͥС:\fP 2.1 .br -\f3リファレンス実装 (RI) バージョン:\fP 2.1.3 .ad l +\f3ե󥹼 (RI) С:\fP 2.1.3 .ad l .LP -.SH "xjc の起動" +.SH "xjc εư" .LP .LP -バインディングコンパイラを起動するには、使用するプラットフォームに応じた \f2bin\fP ディレクトリ内の \f2xjc\fP シェルスクリプトを使用します。また、バインディングコンパイラを実行するための Ant タスクも用意されています。 +Хǥ󥰥ѥưˤϡѤץåȥե˱ bin ǥ쥯ȥ \f2xjc\fP 륹ץ \f2\fP ѤޤޤХǥ󥰥ѥ¹Ԥ뤿 Ant ѰդƤޤ .na -\f2xjc を Ant とともに使用する\fP @ +\f2xjc Ant ȤȤ˻Ѥ\fP @ .fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.htmlための手順を参照してください。 -.LP -.RS 3 - +https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.htmlμ򻲾ȤƤ .LP .LP \f2% xjc \-help\fP .LP -.RE -\f3出力\fP -.LP -.RS 3 - +.SS + .LP .nf \f3 .fl -Usage: xjc [\-options ...] <schema_file/URL/dir> ... [\-b <bindinfo>] ... +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) + \-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 - \-extension : allow vendor extensions \- do not strictly follow the + \-p <pkg> : specifies the target package .fl - Compatibility Rules and App E.2 from the JAXB Spec + \-httpproxy <proxy> : set HTTP/HTTPS proxy; format is [user[:password]@]proxyHost:proxyPort .fl - \-b <file/dir> : specify external bindings files (each <file> must have its own \-b) + \-httpproxyfile <f> : works like \-httpproxy but takes the argument in a file to protect password .fl - If a directory is given, **/*.xjb is searched + \-classpath <arg> : specify where to find user class files .fl - \-d <dir> : generated files will go into this directory + \-catalog <file> : specify catalog files to resolve external entity references; support TR9401, XCatalog, and OASIS XML Catalog format .fl - \-p <pkg> : specifies the target package + \-readOnly : generated files will be in read\-only mode .fl - \-httpproxy <proxy> : set HTTP/HTTPS proxy. Format is [user[:password]@]proxyHost:proxyPort + \-npa : suppress generation of package level annotations (**/package\-info.java) .fl - \-httpproxyfile <file>: set the proxy string (same format as above). + \-no\-header : suppress generation of a file header with timestamp .fl - \-classpath <arg> : specify where to find user class files + \-target 2.0 : behave like XJC 2.0 and generate code that doesnt use any 2.1 features .fl - \-catalog <file> : specify catalog files to resolve external entity references + \-xmlschema : treat input as W3C XML Schema (default) .fl - support TR9401, XCatalog, and OASIS XML Catalog format. + \-relaxng : treat input as RELAX NG (experimental,unsupported) .fl - \-readOnly : generated files will be in read\-only mode + \-relaxng\-compact : treat input as RELAX NG compact syntax (experimental,unsupported) .fl - \-npa : suppress generation of package level annotations (**/package\-info.java) + \-dtd : treat input as XML DTD (experimental,unsupported) .fl - \-no\-header : suppress generation of a file header with timestamp + \-wsdl : treat input as WSDL and compile schemas inside it (experimental,unsupported) .fl - \-target 2.0 : behave like XJC 2.0 and generate code that doesnt use any 2.1 features. + \-verbose : be extra verbose .fl - \-xmlschema : treat input as W3C XML Schema (default) + \-quiet : suppress compiler output .fl - \-relaxng : treat input as RELAX NG (experimental,unsupported) + \-help : display this help message .fl - \-relaxng\-compact : treat input as RELAX NG compact syntax (experimental,unsupported) + \-version : display version information .fl - \-dtd : treat input as XML DTD (experimental,unsupported) + +.fl + .fl - \-wsdl : treat input as WSDL and compile schemas inside it (experimental,unsupported) +Extensions: .fl - \-verbose : be extra verbose + \-Xlocator : enable source location support for generated code .fl - \-quiet : suppress compiler output + \-Xsync\-methods : generate accessor methods with the 'synchronized' keyword .fl - \-help : display this help message + \-mark\-generated : mark the generated code as @javax.annotation.Generated .fl - \-version : display version information + \-episode <FILE> : generate the episode file for separate compilation .fl \fP .fi -.RE .LP -.SH "オプション" -.LP - +.SH "ץ" .LP .RS 3 .TP 3 \-nv -デフォルトでは、XJC バインディングコンパイラは、ソーススキーマを処理する前に厳密な検証を実行します。このオプションを使用すると、厳密なスキーマ検証を無効にします。これは、バインディングコンパイラが検証を一切実行しないということではありません。 より厳密でない検証を実行するということです。 +ǥեȤǤϡXJC Хǥ󥰥ѥϡޤ˸̩ʸڤ¹ԤޤΥץѤȡ̩ʥ޸ڤ̵ˤޤϡХǥ󥰥ѥ餬ڤڼ¹ԤʤȤȤǤϤޤ󡣤긷̩Ǥʤڤ¹ԤȤȤǤ .TP 3 \-extension -デフォルトでは、XJC バインディングコンパイラは、JAXB 仕様の「Compatibility」の章で説明されている規則を厳密に強制します。付録 E.2 には、JAXB v1.0 で完全にはサポートされていない一連の W3C XML スキーマ機能が定義されています。 場合によっては、このスイッチで有効になる「\-extension」モードでそれらの機能が使用できるかもしれません。また、デフォルトの厳密なモードでは、仕様に定義されているバインディングカスタマイズのみが使用できます。「\-extension」スイッチを指定すれば、JAXB Vendor 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 つのバインディングファイルを使用したり、それらのカスタマイズを複数のバインディングファイルに分割したりできます。 次に例を示します。 -.RS 3 - -.LP -\f2xjc schema1.xsd schema2.xsd schema3.xsd \-b bindings123.xjb\fP +볰Хǥ󥰥ե 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 -.RE -また、コマンド行にスキーマファイルとバインディングファイルを指定する順番は任意です。 +\f2xjc schema1.xsd schema2.xsd schema3.xsd \-b bindings1.xjb \-b bindings2.xjb \-b bindings3.xjb\fP ޤޥɹԤ˥ޥեȥХǥ󥰥եꤹ֤ǤդǤ .TP 3 \-d <dir> -デフォルトでは、XJC バインディングコンパイラは、Java コンテンツクラスを現在のディレクトリに生成します。このオプションを使用すると、代替出力ディレクトリを指定できます。出力ディレクトリはあらかじめ存在している必要があります。 XJC バインディングコンパイラは、このディレクトリを自動的に作成しません。 +ǥեȤǤϡXJC Хǥ󥰥ѥϡJava ƥĥ饹򸽺ߤΥǥ쥯ȥޤΥץѤȡؽϥǥ쥯ȥǤޤϥǥ쥯ȥϤ餫¸ߤƤɬפޤXJC Хǥ󥰥ѥϡΥǥ쥯ȥưŪ˺ޤ .TP 3 \-p <pkg> -このコマンド行オプション経由でターゲットパッケージを指定した場合、その指定内容は、パッケージ名に対するすべてのバインディングカスタマイズや、仕様で規定されているデフォルトのパッケージ名アルゴリズムよりも優先されます。 +Υޥɹԥץͳǥåȥѥåꤷ硢λƤϡѥå̾Ф뤹٤ƤΥХǥ󥰥ޥ䡢ͤǵꤵƤǥեȤΥѥå̾르ꥺͥ褵ޤ .TP 3 \-httpproxy <proxy> -HTTP/HTTPS プロキシを指定します。形式は [user[:password]@]proxyHost[:proxyPort] です。従来の \f2\-host\fP および \f2\-port\fP は、下位互換性のためにリファレンス実装でもサポートされていますが、推奨されなくなりました。このオプションで指定されたパスワードは、\f2top\fP コマンドを使用するユーザーなど、ほかのユーザーが表示できる引数であることに注意してください。セキュリティーを高めるには、次の \f2\-httpproxyfile\fP を使用してください。 +HTTP/HTTPS ץꤷޤ [user[:password]@]proxyHost[:proxyPort] Ǥ \f2\-host\fP \f2\-port\fP ϡ̸ߴΤ˥ե󥹼Ǥ⥵ݡȤƤޤ侩ʤʤޤΥץǻꤵ줿ѥɤϡ \f2top\fP ޥɤѤ桼ʤɡۤΥ桼ɽǤǤ뤳ȤդƤƥˤϡ \f2\-httpproxyfile\fP ѤƤ .TP 3 \-httpproxyfile <file> -HTTP/HTTPS プロキシをファイル経由で指定します。形式は上記と同じですが、このファイル内に指定されたパスワードをほかのユーザーが表示することはできません。 +HTTP/HTTPS ץեͳǻꤷޤϾ嵭ƱǤΥե˻ꤵ줿ѥɤۤΥ桼ɽ뤳ȤϤǤޤ .TP 3 \-classpath <arg> -\f2<jxb:javaType>\fP および \f2<xjc:superClass>\fP カスタマイズが使用するクライアントアプリケーションのクラスファイルの検索場所を指定します。 +<jxb:javaType> <xjc:superClass> \f2ޥѤ\fP 饤ȥץꥱ \f2饹եθ\fP ꤷޤ .TP 3 \-catalog <file> -外部エンティティー参照を解決するカタログファイルを指定します。TR9401、XCatalog、および OASIS XML Catalog 形式がサポートされます。詳細は、『XML Entity and URI Resolvers』ドキュメントを参照するか、\f2カタログリゾルバ\fPのサンプルアプリケーションを調べてください。 +ƥƥȤ褹륫եꤷޤTR9401XCatalog OASIS XML Catalog ݡȤޤܺ٤ϡXML Entity and URI Resolvers٥ɥȤ򻲾Ȥ뤫 \f2꥾Ф\fP ץ륢ץꥱĴ٤Ƥ .TP 3 \-readOnly -デフォルトでは、XJC バインディングコンパイラは、生成する Java ソースファイルを書き込みから保護しません。このオプションを使用すると、XJC バインディングコンパイラは生成される Java ソースを強制的に読み取り専用にします。 +ǥեȤǤϡXJC Хǥ󥰥ѥϡ Java ե񤭹ߤݸޤ󡣤ΥץѤȡXJC Хǥ󥰥ѥ Java Ūɤ߼Ѥˤޤ .TP 3 \-npa -パッケージレベルの注釈を **/package\-info.java に生成することを抑制します。このスイッチを使用して生成するコードでは、これらの注釈がほかの生成済みクラスに内部化されます。 +ѥå٥ **/package\-info.java 뤳ȤޤΥåѤ륳ɤǤϡ᤬ۤѤߥ饹ޤ .TP 3 \-no\-header -多少のメモとタイムスタンプを含むファイルヘッダーコメントの生成を抑制します。このオプションを使用すると、生成されたコードがわかりにくくなります。 +¿ΥȥॹפޤեإåȤޤΥץѤȡ줿ɤ狼ˤʤޤ .TP 3 \-target 2.0 -なんらかの JAXB 2.1 機能に依存するコードを生成しないようにします。これにより、生成されたコードを JAXB 2.0 ランタイム (JavaSE 6 など) で実行できます。 +ʤ餫 JAXB 2.1 ǽ˰¸륳ɤʤ褦ˤޤˤꡢ줿ɤ JAXB 2.0 󥿥 (JavaSE 6 ʤ) Ǽ¹ԤǤޤ .TP 3 \-xmlschema -入力スキーマを W3C XML スキーマ (デフォルト) と見なします。このスイッチを指定しなくても、入力スキーマは W3C XML スキーマと見なされます。 +ϥޤ W3C XML (ǥե) ȸʤޤΥåꤷʤƤ⡢ϥޤ W3C XML ޤȸʤޤ .TP 3 \-relaxng -入力スキーマを RELAX NG として扱います (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 +ϥޤ RELAX NG Ȥưޤ (Ṳ̄ݡ)RELAX NG ޤΥݡȤ JAXB Vendor Extension Ȥ󶡤Ƥޤ .TP 3 \-relaxng\-compact -入力スキーマを RELAX NG 圧縮構文として処理します (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 +ϥޤ RELAX NG ̹ʸȤƽޤ (Ṳ̄ݡ)RELAX NG ޤΥݡȤ JAXB Vendor Extension Ȥ󶡤Ƥޤ .TP 3 \-dtd -入力スキーマを XML DTD として扱います (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 +ϥޤ XML DTD Ȥưޤ (Ṳ̄ݡ)RELAX NG ޤΥݡȤ JAXB Vendor Extension Ȥ󶡤Ƥޤ .TP 3 \-wsdl -入力を WSDL として扱い、その内部のスキーマをコンパイルします (試験的、未サポート)。 +Ϥ WSDL ȤưΥޤ򥳥ѥ뤷ޤ (Ṳ̄ݡ) .TP 3 \-quiet -進捗情報や警告など、コンパイラの出力を抑制します。 +ĽٹʤɡѥνϤޤ .TP 3 \-verbose -情報メッセージを出力したり特定のエラー発生時にスタックトレースを表示したりするなど、極めて冗長になります。 +åϤΥ顼ȯ˥åȥ졼ɽꤹʤɡˤƾĹˤʤޤ .TP 3 \-help -コンパイラスイッチの概要を表示します。 +ѥ饹åγפɽޤ .TP 3 \-version -コンパイラのバージョン情報を表示します。 +ѥΥСɽޤ .TP 3 <schema file/URL/dir> -コンパイル対象となる 1 つまたは複数のスキーマファイルを指定します。ユーザーがディレクトリを指定した場合、xjc はそのディレクトリを走査し、そこで見つかったすべてのスキーマファイルをコンパイルします。 +ѥоݤȤʤ 1 ĤޤʣΥޥեꤷޤ桼ǥ쥯ȥꤷ硢xjc ϤΥǥ쥯ȥǸĤä٤ƤΥޥե򥳥ѥ뤷ޤ .RE + +.LP .SS -非推奨コマンド行オプションおよび削除されたコマンド行オプションの概要 +ɸΥޥɹԥץ .LP .RS 3 +.TP 3 +\-Xlocator +줿ɤǤϡ󲽤ΤȤ Java Bean 󥹥󥹤˴ޤޤ륽 XML ˴ؤ SAX Locator 󤬸ޤ +.TP 3 +\-Xsync\-methods +줿٤ƤΥ᥽åɥ˥㡼 \f2Ʊ줿\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 オプションで置き換えられました。これらのオプションは、下位互換性を確保する目的で引き続きサポートされますが、ドキュメントには記載されず、将来のリリースで削除される可能性もあります。 +Υץ侩Ȥʤꡢ\f3\-httpproxy\fP ץ֤ޤΥץϡ̸ߴݤŪǰ³ݡȤޤɥȤˤϵܤ줺Υ꡼Ǻǽ⤢ޤ .TP 3 \-use\-runtime -JAXB 2.0 仕様で移植性のあるランタイムが規定されたため、JAXB RI が **/impl/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 コードベースのインストールを使用してください。 -.TP 3 -\-Xlocator & \-Xsync\-methods -これらのスイッチは現時点では無効化されています。この機能は将来、個別のダウンロードとして提供される予定です。 +\-source ߴåϡJAXB 2.0 κǽ Early Access ǤƳޤΥåϡJAXB 2.0 κΥ꡼뤳Ȥˤʤޤ1.0.x ɤɬפϡ1.0.x ɥ١Υ󥹥ȡѤƤ .RE .LP -.RE .SS -コンパイラの制限 +ѥ .LP .LP -通常は、関連するすべてのスキーマを、同じバインディングコンパイラスイッチを指定して 1 つの単位としてコンパイルするのがもっとも安全です。 +̾ϡϢ뤹٤ƤΥޤƱХǥ󥰥ѥ饹åꤷ 1 Ĥñ̤Ȥƥѥ뤹ΤäȤǤ .LP .LP -xjc を実行するときは、次に示す制限に注意してください。これらの制限のほとんどは、xjc を何度か呼び出して複数のスキーマをコンパイルする場合にのみ適用されます。 +xjc ¹ԤȤϡ˼¤դƤ¤ΤۤȤɤϡxjc ٤ƤӽФʣΥޤ򥳥ѥ뤹ˤΤŬѤޤ .LP .RS 3 .TP 2 o -複数のスキーマを同時にコンパイルする場合は、ターゲットの Java パッケージ名に次の優先順位の規則が適用されることに注意してください。 +ʣΥޤƱ˥ѥ뤹ϡåȤ Java ѥå̾˼̤ͥε§ŬѤ뤳ȤդƤ .RS 3 .TP 3 1. -「\f2\-p\fP」コマンド行オプションがもっとも優先されます。 +\f2\-p\fPץޥɹԥץ󤬤äȤͥ褵ޤ .TP 3 2. -<\f2jaxb:package\fP> のカスタマイズ +<\f2jaxb:package\fP> Υޥ .TP 3 3. -\f2targetNamespace\fP が宣言されている場合は、仕様に定義されている \f2targetNamespace\fP \-> Java パッケージ名のアルゴリズムを適用します。 +\f2targetNamespace\fP Ƥϡ \f2ͤƤ targetNamespace\fP \-> Java ѥå̾Υ르ꥺŬѤޤ .TP 3 4. -\f2targetNamespace\fP が宣言されていない場合は、"generated" という名前のハードコードされたパッケージを使用します。 +\f2targetNamespace\fP ƤʤϡgeneratedפȤ̾Υϡɥɤ줿ѥåѤޤ .RE .TP 2 o -名前空間ごとに複数の <\f2jaxb:schemaBindings\fP> を持つことは不正です。 このため、1 つのターゲット名前空間内の 2 つのスキーマを、異なる Java パッケージにコンパイルすることはできません。 +֤̾Ȥʣ <\f2jaxb:schemaBindings\fP> ĤȤǤΤᡢ1 ĤΥå̾ 2 ĤΥޤۤʤ Java ѥå˥ѥ뤹뤳ȤϤǤޤ .TP 2 o -1 つの Java パッケージにコンパイルされるすべてのスキーマは、XJC バインディングコンパイラに同時に送信する必要があります。 個別にコンパイルすることはできず、予期したとおりに動作しません。 +1 Ĥ Java ѥå˥ѥ뤵뤹٤ƤΥޤϡXJC Хǥ󥰥ѥƱɬפޤ̤˥ѥ뤹뤳ȤϤǤͽȤưޤ .TP 2 o -複数のスキーマファイルにまたがる要素置換グループは、同時にコンパイルする必要があります。 +ʣΥޥեˤޤִ롼פϡƱ˥ѥ뤹ɬפޤ .RE .LP -.SH "関連項目" +.SH "Ϣ" .LP .RS 3 .TP 2 o -コマンド行でのコンバータの実行 (XJC):[ +ޥɹԤǤΥСμ¹ (XJC): [ .na -\f2コマンド行の命令\fP @ +\f2ޥɹԤ̿\fP @ .fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/xjc.html、 +https://jaxb.dev.java.net/nonav/2.1.3/docs/xjc.html .na -\f2xjc を Ant とともに使用する\fP @ +\f2xjc Ant ȤȤ˻Ѥ\fP @ .fi https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.html] .TP 2 o .na -\f2XML バインドのための JavaTM アーキテクチャー (JAXB)\fP @ +\f2XML ХɤΤ Java ƥ㡼 (JAXB)\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/xml/jaxb/index.html .RE diff --git a/src/windows/classes/sun/awt/Win32FontManager.java b/src/windows/classes/sun/awt/Win32FontManager.java index 61e3b59eaa6e591003a037d0df4ccd8396134c16..5e925f3ce45f735a77e1f300a989a2c989a56957 100644 --- a/src/windows/classes/sun/awt/Win32FontManager.java +++ b/src/windows/classes/sun/awt/Win32FontManager.java @@ -62,8 +62,11 @@ public class Win32FontManager extends SunFontManager { String eudcFile = getEUDCFontFile(); if (eudcFile != null) { try { + /* Must use Java rasteriser since GDI doesn't + * enumerate (allow direct use) of EUDC fonts. + */ eudcFont = new TrueTypeFont(eudcFile, null, 0, - false); + true); } catch (FontFormatException e) { } } @@ -100,6 +103,14 @@ public class Win32FontManager extends SunFontManager { }); } + /** + * Whether registerFontFile expects absolute or relative + * font file names. + */ + protected boolean useAbsoluteFontFileNames() { + return false; + } + /* Unlike the shared code version, this expects a base file name - * not a full path name. * The font configuration file has base file names and the FontConfiguration diff --git a/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java b/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java index 52746c39fb9607b5e27482b92c64d44339a287db..a3a48e2d7b491373b296ba5f7be82b1e2450771f 100644 --- a/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java +++ b/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java @@ -202,14 +202,6 @@ public class Win32GraphicsEnvironment * ----END DISPLAY CHANGE SUPPORT---- */ - /** - * Whether registerFontFile expects absolute or relative - * font file names. - */ - protected boolean useAbsoluteFontFileNames() { - return false; - } - protected GraphicsDevice makeScreenDevice(int screennum) { GraphicsDevice device = null; if (WindowsFlags.isD3DEnabled()) { diff --git a/src/windows/classes/sun/nio/fs/WindowsFileSystem.java b/src/windows/classes/sun/nio/fs/WindowsFileSystem.java index 6dba2bc9394db6acb52a8195b391aeee73765a27..1604d77a24d5bc13c3ced8a22b95c47c2910b47c 100644 --- a/src/windows/classes/sun/nio/fs/WindowsFileSystem.java +++ b/src/windows/classes/sun/nio/fs/WindowsFileSystem.java @@ -56,8 +56,9 @@ class WindowsFileSystem // parse default directory and check it is absolute WindowsPathParser.Result result = WindowsPathParser.parse(dir); - if (result.type() != WindowsPathType.ABSOLUTE) - throw new AssertionError("Default directory must be absolute/non-UNC"); + if ((result.type() != WindowsPathType.ABSOLUTE) && + (result.type() != WindowsPathType.UNC)) + throw new AssertionError("Default directory is not an absolute path"); this.defaultDirectory = result.path(); this.defaultRoot = result.root(); diff --git a/test/ProblemList.txt b/test/ProblemList.txt index 78ca9534f848a9a9d9eff5b596bfa758e1523d6c..07bd29aecbfe6b6e7dc7a2a4f106ff4ce7104434 100644 --- a/test/ProblemList.txt +++ b/test/ProblemList.txt @@ -288,12 +288,6 @@ javax/management/monitor/AttributeArbitraryDataTypeTest.java generic-all # jdk_math -# Problems with rounding add failures on solaris-sparcv9 and -server -java/math/BigDecimal/AddTests.java solaris-sparcv9 - -# Should be samevm? But seems problematic with samevm on windows -java/math/BigInteger/ModPow65537.java generic-all - ############################################################################ # jdk_misc diff --git a/test/com/sun/tools/attach/ApplicationSetup.sh b/test/com/sun/tools/attach/ApplicationSetup.sh index 9e40c5ddc26b7c6bb2ef75d0f4b21126a9a2b493..0537cb6e401aa7d35a24eda4a426c4e67324f89c 100644 --- a/test/com/sun/tools/attach/ApplicationSetup.sh +++ b/test/com/sun/tools/attach/ApplicationSetup.sh @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -40,7 +40,8 @@ rm -f ${OUTPUTFILE} startApplication() { - ${JAVA} $1 $2 $3 -jar "${TESTCLASSES}"/Application.jar > ${OUTPUTFILE} & + # put all output from the app into ${OUTPUTFILE} + ${JAVA} $1 $2 $3 -jar "${TESTCLASSES}"/Application.jar > ${OUTPUTFILE} 2>&1 & pid="$!" # MKS creates an intermediate shell to launch ${JAVA} so diff --git a/test/com/sun/tools/attach/BasicTests.java b/test/com/sun/tools/attach/BasicTests.java index 39c1c2d56bf60024710318b2314233b3b4a1a947..79056e614b3ff158c4cf84771532260414f84a47 100644 --- a/test/com/sun/tools/attach/BasicTests.java +++ b/test/com/sun/tools/attach/BasicTests.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -75,14 +75,23 @@ public class BasicTests { // Test 3 - load an "bad" agent (agentmain throws an exception) System.out.println(" - Test: Load a bad agent"); + System.out.println("INFO: This test will cause error messages " + + "to appear in the application log about SilverBullet.jar " + + "not being found and an agent failing to start."); try { vm.loadAgent(badagent); + throw new RuntimeException( + "AgentInitializationException not thrown as expected!"); } catch (AgentInitializationException x) { - System.out.println(" - AgentInitializationException throws as expected!"); + System.out.println( + " - AgentInitializationException thrown as expected!"); } // Test 4 - detach from the VM and attempt a load (should throw IOE) System.out.println(" - Test: Detach from VM"); + System.out.println("INFO: This test will cause error messages " + + "to appear in the application log about a BadAgent including " + + "a RuntimeException and an InvocationTargetException."); vm.detach(); try { vm.loadAgent(agent); diff --git a/test/com/sun/tools/attach/BasicTests.sh b/test/com/sun/tools/attach/BasicTests.sh index a95060de40ee3e11677a14be3de30c632d2ee901..b63d7528ff904a76ea23a091738d39db9a1d8383 100644 --- a/test/com/sun/tools/attach/BasicTests.sh +++ b/test/com/sun/tools/attach/BasicTests.sh @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -39,11 +39,9 @@ fi # Windows 2000 is a problem here, so we skip it, see 6962615 osrev=`uname -a` -if [ "`echo ${osrev} | grep 'CYGWIN'`" != "" ] ; then - if [ "`echo ${osrev} | grep '5.0'`" != "" ] ; then - echo "Treating as a pass, not testing Windows 2000" - exit 0 - fi +if [ "`echo ${osrev} | grep 'CYGWIN[^ ]*-5\.0'`" != "" ] ; then + echo "Treating as a pass, not testing Windows 2000" + exit 0 fi if [ "`echo ${osrev} | grep 'Windows'`" != "" ] ; then if [ "`echo ${osrev} | grep '5 00'`" != "" ] ; then @@ -58,7 +56,7 @@ fi startApplication -Dattach.test=true # pid = process-id, port = shutdown port - + failures=0 echo "Running tests ..." @@ -69,6 +67,18 @@ if [ $? != 0 ]; then failures=`expr $failures + 1`; fi stopApplication $port +# Add these info messages to $OUTPUTFILE just in case someone +# looks at it and wonders about the failures. We have to do +# this after the application is stopped because it is writing +# to $OUTPUTFILE. +( +echo "" +echo "INFO: Test 2 will cause error messages about SilverBullet.jar" \ + "and an agent failing to start." +echo "INFO: Test 3 will cause error messages about BadAgent" \ + "including a RuntimeException and an InvocationTargetException." +) >> ${OUTPUTFILE} + if [ $failures = 0 ]; then echo "All tests passed."; else echo "$failures test(s) failed:"; cat ${OUTPUTFILE}; diff --git a/test/java/lang/Character/CheckScript.java b/test/java/lang/Character/CheckScript.java index 6d0f650d16983a5f9cc89b2d2edc8ad956dc4d25..3c441d6257bd62bcf664f9c5e65207975a8c7588 100644 --- a/test/java/lang/Character/CheckScript.java +++ b/test/java/lang/Character/CheckScript.java @@ -1,34 +1,58 @@ + +/* + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * 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 6945564 6959267 + * @bug 6945564 6959267 7033561 * @summary Check that the j.l.Character.UnicodeScript */ import java.io.*; -import java.lang.reflect.*; import java.util.*; import java.util.regex.*; import java.lang.Character.UnicodeScript; public class CheckScript { - static BufferedReader open(String[] args) throws FileNotFoundException { + public static void main(String[] args) throws Exception { + File fScripts; + File fAliases; if (args.length == 0) { - return new BufferedReader(new FileReader(new File(System.getProperty("test.src", "."), "Scripts.txt"))); - } else if (args.length == 1) { - return new BufferedReader(new FileReader(args[0])); + fScripts = new File(System.getProperty("test.src", "."), "Scripts.txt"); + fAliases = new File(System.getProperty("test.src", "."), "PropertyValueAliases.txt"); + } else if (args.length == 2) { + fScripts = new File(args[0]); + fAliases = new File(args[1]); } else { - System.out.println("java CharacterScript Scripts.txt"); + System.out.println("java CharacterScript Scripts.txt PropertyValueAliases.txt"); throw new RuntimeException("Datafile name should be specified."); } - } - - public static void main(String[] args) throws Exception { Matcher m = Pattern.compile("(\\p{XDigit}+)(?:\\.{2}(\\p{XDigit}+))?\\s+;\\s+(\\w+)\\s+#.*").matcher(""); String line = null; HashMap<String,ArrayList<Integer>> scripts = new HashMap<>(); - try (BufferedReader sbfr = open(args)) { + try (BufferedReader sbfr = new BufferedReader(new FileReader(fScripts))) { while ((line = sbfr.readLine()) != null) { if (line.length() <= 1 || line.charAt(0) == '#') { continue; @@ -107,5 +131,29 @@ public class CheckScript { } } } + // check all aliases + m = Pattern.compile("sc\\s*;\\s*(\\p{Alpha}{4})\\s*;\\s*([\\p{Alpha}|_]+)\\s*.*").matcher(""); + line = null; + try (BufferedReader sbfr = new BufferedReader(new FileReader(fAliases))) { + while ((line = sbfr.readLine()) != null) { + if (line.length() <= 1 || line.charAt(0) == '#') { + continue; + } + m.reset(line); + if (m.matches()) { + String alias = m.group(1); + String name = m.group(2); + // HRKT -> Katakana_Or_Hiragana not supported + if ("HRKT".equals(alias.toUpperCase(Locale.ENGLISH))) + continue; + if (Character.UnicodeScript.forName(alias) != + Character.UnicodeScript.forName(name)) { + throw new RuntimeException( + "UnicodeScript failed: alias<" + alias + + "> does not map to <" + name + ">"); + } + } + } + } } } diff --git a/test/java/lang/Character/PropertyValueAliases.txt b/test/java/lang/Character/PropertyValueAliases.txt new file mode 100644 index 0000000000000000000000000000000000000000..01f18a0e61f6745437eea213ac212c2785a93861 --- /dev/null +++ b/test/java/lang/Character/PropertyValueAliases.txt @@ -0,0 +1,1178 @@ +# PropertyValueAliases-6.0.0.txt +# Date: 2010-07-17, 22:44:06 GMT [MD] +# +# Unicode Character Database +# Copyright (c) 1991-2010 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# For documentation, see http://www.unicode.org/reports/tr44/ +# +# This file contains aliases for property values used in the UCD. +# These names can be used for XML formats of UCD data, for regular-expression +# property tests, and other programmatic textual descriptions of Unicode data. +# For information on which properties are normative, see UCD.html. +# +# The names may be translated in appropriate environments, and additional +# aliases may be useful. +# +# FORMAT +# +# Each line describes a property value name. +# This consists of three or more fields, separated by semicolons. +# +# First Field: The first field describes the property for which that +# property value name is used. +# +# Second Field: The second field is an abbreviated name. +# If there is no abbreviated name available, the field is marked with "n/a". +# +# Third Field: The third field is a long name. +# +# In the case of ccc, there are 4 fields. The second field is numeric, third +# is abbreviated, and fourth is long. +# +# The above are the preferred aliases. Other aliases may be listed in additional fields. +# +# Loose matching should be applied to all property names and property values, with +# the exception of String Property values. With loose matching of property names and +# values, the case distinctions, whitespace, and '_' are ignored. For Numeric Property +# values, numeric equivalencies are applied: thus "01.00" is equivalent to "1". +# +# NOTE: Property value names are NOT unique across properties. For example: +# +# AL means Arabic Letter for the Bidi_Class property, and +# AL means Above_Left for the Combining_Class property, and +# AL means Alphabetic for the Line_Break property. +# +# In addition, some property names may be the same as some property value names. +# For example: +# +# sc means the Script property, and +# Sc means the General_Category property value Currency_Symbol (Sc) +# +# The combination of property value and property name is, however, unique. +# +# For more information, see UTS #18: Unicode Regular Expressions +# ================================================ + + +# ASCII_Hex_Digit (AHex) + +AHex; N ; No ; F ; False +AHex; Y ; Yes ; T ; True + +# Age (age) + +age; n/a ; 1.1 +age; n/a ; 2.0 +age; n/a ; 2.1 +age; n/a ; 3.0 +age; n/a ; 3.1 +age; n/a ; 3.2 +age; n/a ; 4.0 +age; n/a ; 4.1 +age; n/a ; 5.0 +age; n/a ; 5.1 +age; n/a ; 5.2 +age; n/a ; 6.0 +age; n/a ; unassigned + +# Alphabetic (Alpha) + +Alpha; N ; No ; F ; False +Alpha; Y ; Yes ; T ; True + +# Bidi_Class (bc) + +bc ; AL ; Arabic_Letter +bc ; AN ; Arabic_Number +bc ; B ; Paragraph_Separator +bc ; BN ; Boundary_Neutral +bc ; CS ; Common_Separator +bc ; EN ; European_Number +bc ; ES ; European_Separator +bc ; ET ; European_Terminator +bc ; L ; Left_To_Right +bc ; LRE ; Left_To_Right_Embedding +bc ; LRO ; Left_To_Right_Override +bc ; NSM ; Nonspacing_Mark +bc ; ON ; Other_Neutral +bc ; PDF ; Pop_Directional_Format +bc ; R ; Right_To_Left +bc ; RLE ; Right_To_Left_Embedding +bc ; RLO ; Right_To_Left_Override +bc ; S ; Segment_Separator +bc ; WS ; White_Space + +# Bidi_Control (Bidi_C) + +Bidi_C; N ; No ; F ; False +Bidi_C; Y ; Yes ; T ; True + +# Bidi_Mirrored (Bidi_M) + +Bidi_M; N ; No ; F ; False +Bidi_M; Y ; Yes ; T ; True + +# Bidi_Mirroring_Glyph (bmg) + +# @missing: 0000..10FFFF; Bidi_Mirroring_Glyph; <none> + +# Block (blk) + +blk; n/a ; Aegean_Numbers +blk; n/a ; Alchemical_Symbols +blk; n/a ; Alphabetic_Presentation_Forms +blk; n/a ; Ancient_Greek_Musical_Notation +blk; n/a ; Ancient_Greek_Numbers +blk; n/a ; Ancient_Symbols +blk; n/a ; Arabic +blk; n/a ; Arabic_Presentation_Forms_A ; Arabic_Presentation_Forms-A +blk; n/a ; Arabic_Presentation_Forms_B +blk; n/a ; Arabic_Supplement +blk; n/a ; Armenian +blk; n/a ; Arrows +blk; n/a ; Avestan +blk; n/a ; Balinese +blk; n/a ; Bamum +blk; n/a ; Bamum_Supplement +blk; n/a ; Basic_Latin ; ASCII +blk; n/a ; Batak +blk; n/a ; Bengali +blk; n/a ; Block_Elements +blk; n/a ; Bopomofo +blk; n/a ; Bopomofo_Extended +blk; n/a ; Box_Drawing +blk; n/a ; Brahmi +blk; n/a ; Braille_Patterns +blk; n/a ; Buginese +blk; n/a ; Buhid +blk; n/a ; Byzantine_Musical_Symbols +blk; n/a ; Carian +blk; n/a ; Cham +blk; n/a ; Cherokee +blk; n/a ; CJK_Compatibility +blk; n/a ; CJK_Compatibility_Forms +blk; n/a ; CJK_Compatibility_Ideographs +blk; n/a ; CJK_Compatibility_Ideographs_Supplement +blk; n/a ; CJK_Radicals_Supplement +blk; n/a ; CJK_Strokes +blk; n/a ; CJK_Symbols_And_Punctuation +blk; n/a ; CJK_Unified_Ideographs +blk; n/a ; CJK_Unified_Ideographs_Extension_A +blk; n/a ; CJK_Unified_Ideographs_Extension_B +blk; n/a ; CJK_Unified_Ideographs_Extension_C +blk; n/a ; CJK_Unified_Ideographs_Extension_D +blk; n/a ; Combining_Diacritical_Marks +blk; n/a ; Combining_Diacritical_Marks_For_Symbols; Combining_Marks_For_Symbols +blk; n/a ; Combining_Diacritical_Marks_Supplement +blk; n/a ; Combining_Half_Marks +blk; n/a ; Common_Indic_Number_Forms +blk; n/a ; Control_Pictures +blk; n/a ; Coptic +blk; n/a ; Counting_Rod_Numerals +blk; n/a ; Cuneiform +blk; n/a ; Cuneiform_Numbers_And_Punctuation +blk; n/a ; Currency_Symbols +blk; n/a ; Cypriot_Syllabary +blk; n/a ; Cyrillic +blk; n/a ; Cyrillic_Extended_A +blk; n/a ; Cyrillic_Extended_B +blk; n/a ; Cyrillic_Supplement ; Cyrillic_Supplementary +blk; n/a ; Deseret +blk; n/a ; Devanagari +blk; n/a ; Devanagari_Extended +blk; n/a ; Dingbats +blk; n/a ; Domino_Tiles +blk; n/a ; Egyptian_Hieroglyphs +blk; n/a ; Emoticons +blk; n/a ; Enclosed_Alphanumeric_Supplement +blk; n/a ; Enclosed_Alphanumerics +blk; n/a ; Enclosed_CJK_Letters_And_Months +blk; n/a ; Enclosed_Ideographic_Supplement +blk; n/a ; Ethiopic +blk; n/a ; Ethiopic_Extended +blk; n/a ; Ethiopic_Extended_A +blk; n/a ; Ethiopic_Supplement +blk; n/a ; General_Punctuation +blk; n/a ; Geometric_Shapes +blk; n/a ; Georgian +blk; n/a ; Georgian_Supplement +blk; n/a ; Glagolitic +blk; n/a ; Gothic +blk; n/a ; Greek_And_Coptic ; Greek +blk; n/a ; Greek_Extended +blk; n/a ; Gujarati +blk; n/a ; Gurmukhi +blk; n/a ; Halfwidth_And_Fullwidth_Forms +blk; n/a ; Hangul_Compatibility_Jamo +blk; n/a ; Hangul_Jamo +blk; n/a ; Hangul_Jamo_Extended_A +blk; n/a ; Hangul_Jamo_Extended_B +blk; n/a ; Hangul_Syllables +blk; n/a ; Hanunoo +blk; n/a ; Hebrew +blk; n/a ; High_Private_Use_Surrogates +blk; n/a ; High_Surrogates +blk; n/a ; Hiragana +blk; n/a ; Ideographic_Description_Characters +blk; n/a ; Imperial_Aramaic +blk; n/a ; Inscriptional_Pahlavi +blk; n/a ; Inscriptional_Parthian +blk; n/a ; IPA_Extensions +blk; n/a ; Javanese +blk; n/a ; Kaithi +blk; n/a ; Kana_Supplement +blk; n/a ; Kanbun +blk; n/a ; Kangxi_Radicals +blk; n/a ; Kannada +blk; n/a ; Katakana +blk; n/a ; Katakana_Phonetic_Extensions +blk; n/a ; Kayah_Li +blk; n/a ; Kharoshthi +blk; n/a ; Khmer +blk; n/a ; Khmer_Symbols +blk; n/a ; Lao +blk; n/a ; Latin_1_Supplement ; Latin_1 +blk; n/a ; Latin_Extended_A +blk; n/a ; Latin_Extended_Additional +blk; n/a ; Latin_Extended_B +blk; n/a ; Latin_Extended_C +blk; n/a ; Latin_Extended_D +blk; n/a ; Lepcha +blk; n/a ; Letterlike_Symbols +blk; n/a ; Limbu +blk; n/a ; Linear_B_Ideograms +blk; n/a ; Linear_B_Syllabary +blk; n/a ; Lisu +blk; n/a ; Low_Surrogates +blk; n/a ; Lycian +blk; n/a ; Lydian +blk; n/a ; Mahjong_Tiles +blk; n/a ; Malayalam +blk; n/a ; Mandaic +blk; n/a ; Mathematical_Alphanumeric_Symbols +blk; n/a ; Mathematical_Operators +blk; n/a ; Meetei_Mayek +blk; n/a ; Miscellaneous_Mathematical_Symbols_A +blk; n/a ; Miscellaneous_Mathematical_Symbols_B +blk; n/a ; Miscellaneous_Symbols +blk; n/a ; Miscellaneous_Symbols_And_Arrows +blk; n/a ; Miscellaneous_Symbols_And_Pictographs +blk; n/a ; Miscellaneous_Technical +blk; n/a ; Modifier_Tone_Letters +blk; n/a ; Mongolian +blk; n/a ; Musical_Symbols +blk; n/a ; Myanmar +blk; n/a ; Myanmar_Extended_A +blk; n/a ; New_Tai_Lue +blk; n/a ; NKo +blk; n/a ; No_Block +blk; n/a ; Number_Forms +blk; n/a ; Ogham +blk; n/a ; Ol_Chiki +blk; n/a ; Old_Italic +blk; n/a ; Old_Persian +blk; n/a ; Old_South_Arabian +blk; n/a ; Old_Turkic +blk; n/a ; Optical_Character_Recognition +blk; n/a ; Oriya +blk; n/a ; Osmanya +blk; n/a ; Phags_Pa +blk; n/a ; Phaistos_Disc +blk; n/a ; Phoenician +blk; n/a ; Phonetic_Extensions +blk; n/a ; Phonetic_Extensions_Supplement +blk; n/a ; Playing_Cards +blk; n/a ; Private_Use_Area ; Private_Use +blk; n/a ; Rejang +blk; n/a ; Rumi_Numeral_Symbols +blk; n/a ; Runic +blk; n/a ; Samaritan +blk; n/a ; Saurashtra +blk; n/a ; Shavian +blk; n/a ; Sinhala +blk; n/a ; Small_Form_Variants +blk; n/a ; Spacing_Modifier_Letters +blk; n/a ; Specials +blk; n/a ; Sundanese +blk; n/a ; Superscripts_And_Subscripts +blk; n/a ; Supplemental_Arrows_A +blk; n/a ; Supplemental_Arrows_B +blk; n/a ; Supplemental_Mathematical_Operators +blk; n/a ; Supplemental_Punctuation +blk; n/a ; Supplementary_Private_Use_Area_A +blk; n/a ; Supplementary_Private_Use_Area_B +blk; n/a ; Syloti_Nagri +blk; n/a ; Syriac +blk; n/a ; Tagalog +blk; n/a ; Tagbanwa +blk; n/a ; Tags +blk; n/a ; Tai_Le +blk; n/a ; Tai_Tham +blk; n/a ; Tai_Viet +blk; n/a ; Tai_Xuan_Jing_Symbols +blk; n/a ; Tamil +blk; n/a ; Telugu +blk; n/a ; Thaana +blk; n/a ; Thai +blk; n/a ; Tibetan +blk; n/a ; Tifinagh +blk; n/a ; Transport_And_Map_Symbols +blk; n/a ; Ugaritic +blk; n/a ; Unified_Canadian_Aboriginal_Syllabics; Canadian_Syllabics +blk; n/a ; Unified_Canadian_Aboriginal_Syllabics_Extended +blk; n/a ; Vai +blk; n/a ; Variation_Selectors +blk; n/a ; Variation_Selectors_Supplement +blk; n/a ; Vedic_Extensions +blk; n/a ; Vertical_Forms +blk; n/a ; Yi_Radicals +blk; n/a ; Yi_Syllables +blk; n/a ; Yijing_Hexagram_Symbols + +# Canonical_Combining_Class (ccc) + +ccc; 0; NR ; Not_Reordered +ccc; 1; OV ; Overlay +ccc; 7; NK ; Nukta +ccc; 8; KV ; Kana_Voicing +ccc; 9; VR ; Virama +ccc; 200; ATBL ; Attached_Below_Left +ccc; 202; ATB ; Attached_Below +ccc; 214; ATA ; Attached_Above +ccc; 216; ATAR ; Attached_Above_Right +ccc; 218; BL ; Below_Left +ccc; 220; B ; Below +ccc; 222; BR ; Below_Right +ccc; 224; L ; Left +ccc; 226; R ; Right +ccc; 228; AL ; Above_Left +ccc; 230; A ; Above +ccc; 232; AR ; Above_Right +ccc; 233; DB ; Double_Below +ccc; 234; DA ; Double_Above +ccc; 240; IS ; Iota_Subscript + +# Case_Folding (cf) + +# @missing: 0000..10FFFF; Case_Folding; <code point> + +# Case_Ignorable (CI) + +CI ; N ; No ; F ; False +CI ; Y ; Yes ; T ; True + +# Cased (Cased) + +Cased; N ; No ; F ; False +Cased; Y ; Yes ; T ; True + +# Changes_When_Casefolded (CWCF) + +CWCF; N ; No ; F ; False +CWCF; Y ; Yes ; T ; True + +# Changes_When_Casemapped (CWCM) + +CWCM; N ; No ; F ; False +CWCM; Y ; Yes ; T ; True + +# Changes_When_Lowercased (CWL) + +CWL; N ; No ; F ; False +CWL; Y ; Yes ; T ; True + +# Changes_When_NFKC_Casefolded (CWKCF) + +CWKCF; N ; No ; F ; False +CWKCF; Y ; Yes ; T ; True + +# Changes_When_Titlecased (CWT) + +CWT; N ; No ; F ; False +CWT; Y ; Yes ; T ; True + +# Changes_When_Uppercased (CWU) + +CWU; N ; No ; F ; False +CWU; Y ; Yes ; T ; True + +# Composition_Exclusion (CE) + +CE ; N ; No ; F ; False +CE ; Y ; Yes ; T ; True + +# Dash (Dash) + +Dash; N ; No ; F ; False +Dash; Y ; Yes ; T ; True + +# Decomposition_Mapping (dm) + +# @missing: 0000..10FFFF; Decomposition_Mapping; <code point> + +# Decomposition_Type (dt) + +dt ; Can ; Canonical ; can +dt ; Com ; Compat ; com +dt ; Enc ; Circle ; enc +dt ; Fin ; Final ; fin +dt ; Font ; font +dt ; Fra ; Fraction ; fra +dt ; Init ; Initial ; init +dt ; Iso ; Isolated ; iso +dt ; Med ; Medial ; med +dt ; Nar ; Narrow ; nar +dt ; Nb ; Nobreak ; nb +dt ; None ; none +dt ; Sml ; Small ; sml +dt ; Sqr ; Square ; sqr +dt ; Sub ; sub +dt ; Sup ; Super ; sup +dt ; Vert ; Vertical ; vert +dt ; Wide ; wide + +# Default_Ignorable_Code_Point (DI) + +DI ; N ; No ; F ; False +DI ; Y ; Yes ; T ; True + +# Deprecated (Dep) + +Dep; N ; No ; F ; False +Dep; Y ; Yes ; T ; True + +# Diacritic (Dia) + +Dia; N ; No ; F ; False +Dia; Y ; Yes ; T ; True + +# East_Asian_Width (ea) + +ea ; A ; Ambiguous +ea ; F ; Fullwidth +ea ; H ; Halfwidth +ea ; N ; Neutral +ea ; Na ; Narrow +ea ; W ; Wide + +# Expands_On_NFC (XO_NFC) + +XO_NFC; N ; No ; F ; False +XO_NFC; Y ; Yes ; T ; True + +# Expands_On_NFD (XO_NFD) + +XO_NFD; N ; No ; F ; False +XO_NFD; Y ; Yes ; T ; True + +# Expands_On_NFKC (XO_NFKC) + +XO_NFKC; N ; No ; F ; False +XO_NFKC; Y ; Yes ; T ; True + +# Expands_On_NFKD (XO_NFKD) + +XO_NFKD; N ; No ; F ; False +XO_NFKD; Y ; Yes ; T ; True + +# Extender (Ext) + +Ext; N ; No ; F ; False +Ext; Y ; Yes ; T ; True + +# FC_NFKC_Closure (FC_NFKC) + +# @missing: 0000..10FFFF; FC_NFKC_Closure; <code point> + +# Full_Composition_Exclusion (Comp_Ex) + +Comp_Ex; N ; No ; F ; False +Comp_Ex; Y ; Yes ; T ; True + +# General_Category (gc) + +gc ; C ; Other # Cc | Cf | Cn | Co | Cs +gc ; Cc ; Control ; cntrl +gc ; Cf ; Format +gc ; Cn ; Unassigned +gc ; Co ; Private_Use +gc ; Cs ; Surrogate +gc ; L ; Letter # Ll | Lm | Lo | Lt | Lu +gc ; LC ; Cased_Letter # Ll | Lt | Lu +gc ; Ll ; Lowercase_Letter +gc ; Lm ; Modifier_Letter +gc ; Lo ; Other_Letter +gc ; Lt ; Titlecase_Letter +gc ; Lu ; Uppercase_Letter +gc ; M ; Mark # Mc | Me | Mn +gc ; Mc ; Spacing_Mark +gc ; Me ; Enclosing_Mark +gc ; Mn ; Nonspacing_Mark +gc ; N ; Number # Nd | Nl | No +gc ; Nd ; Decimal_Number ; digit +gc ; Nl ; Letter_Number +gc ; No ; Other_Number +gc ; P ; Punctuation ; punct # Pc | Pd | Pe | Pf | Pi | Po | Ps +gc ; Pc ; Connector_Punctuation +gc ; Pd ; Dash_Punctuation +gc ; Pe ; Close_Punctuation +gc ; Pf ; Final_Punctuation +gc ; Pi ; Initial_Punctuation +gc ; Po ; Other_Punctuation +gc ; Ps ; Open_Punctuation +gc ; S ; Symbol # Sc | Sk | Sm | So +gc ; Sc ; Currency_Symbol +gc ; Sk ; Modifier_Symbol +gc ; Sm ; Math_Symbol +gc ; So ; Other_Symbol +gc ; Z ; Separator # Zl | Zp | Zs +gc ; Zl ; Line_Separator +gc ; Zp ; Paragraph_Separator +gc ; Zs ; Space_Separator + +# Grapheme_Base (Gr_Base) + +Gr_Base; N ; No ; F ; False +Gr_Base; Y ; Yes ; T ; True + +# Grapheme_Cluster_Break (GCB) + +GCB; CN ; Control +GCB; CR ; CR +GCB; EX ; Extend +GCB; L ; L +GCB; LF ; LF +GCB; LV ; LV +GCB; LVT ; LVT +GCB; PP ; Prepend +GCB; SM ; SpacingMark +GCB; T ; T +GCB; V ; V +GCB; XX ; Other + +# Grapheme_Extend (Gr_Ext) + +Gr_Ext; N ; No ; F ; False +Gr_Ext; Y ; Yes ; T ; True + +# Grapheme_Link (Gr_Link) + +Gr_Link; N ; No ; F ; False +Gr_Link; Y ; Yes ; T ; True + +# Hangul_Syllable_Type (hst) + +hst; L ; Leading_Jamo +hst; LV ; LV_Syllable +hst; LVT ; LVT_Syllable +hst; NA ; Not_Applicable +hst; T ; Trailing_Jamo +hst; V ; Vowel_Jamo + +# Hex_Digit (Hex) + +Hex; N ; No ; F ; False +Hex; Y ; Yes ; T ; True + +# Hyphen (Hyphen) + +Hyphen; N ; No ; F ; False +Hyphen; Y ; Yes ; T ; True + +# IDS_Binary_Operator (IDSB) + +IDSB; N ; No ; F ; False +IDSB; Y ; Yes ; T ; True + +# IDS_Trinary_Operator (IDST) + +IDST; N ; No ; F ; False +IDST; Y ; Yes ; T ; True + +# ID_Continue (IDC) + +IDC; N ; No ; F ; False +IDC; Y ; Yes ; T ; True + +# ID_Start (IDS) + +IDS; N ; No ; F ; False +IDS; Y ; Yes ; T ; True + +# ISO_Comment (isc) + +# @missing: 0000..10FFFF; ISO_Comment; <none> + +# Ideographic (Ideo) + +Ideo; N ; No ; F ; False +Ideo; Y ; Yes ; T ; True + +# Jamo_Short_Name (JSN) + +# @missing: 0000..10FFFF; Jamo_Short_Name; <none> +JSN; A ; A +JSN; AE ; AE +JSN; B ; B +JSN; BB ; BB +JSN; BS ; BS +JSN; C ; C +JSN; D ; D +JSN; DD ; DD +JSN; E ; E +JSN; EO ; EO +JSN; EU ; EU +JSN; G ; G +JSN; GG ; GG +JSN; GS ; GS +JSN; H ; H +JSN; I ; I +JSN; J ; J +JSN; JJ ; JJ +JSN; K ; K +JSN; L ; L +JSN; LB ; LB +JSN; LG ; LG +JSN; LH ; LH +JSN; LM ; LM +JSN; LP ; LP +JSN; LS ; LS +JSN; LT ; LT +JSN; M ; M +JSN; N ; N +JSN; NG ; NG +JSN; NH ; NH +JSN; NJ ; NJ +JSN; O ; O +JSN; OE ; OE +JSN; P ; P +JSN; R ; R +JSN; S ; S +JSN; SS ; SS +JSN; T ; T +JSN; U ; U +JSN; WA ; WA +JSN; WAE ; WAE +JSN; WE ; WE +JSN; WEO ; WEO +JSN; WI ; WI +JSN; YA ; YA +JSN; YAE ; YAE +JSN; YE ; YE +JSN; YEO ; YEO +JSN; YI ; YI +JSN; YO ; YO +JSN; YU ; YU + +# Join_Control (Join_C) + +Join_C; N ; No ; F ; False +Join_C; Y ; Yes ; T ; True + +# Joining_Group (jg) + +jg ; n/a ; Ain +jg ; n/a ; Alaph +jg ; n/a ; Alef +jg ; n/a ; Beh +jg ; n/a ; Beth +jg ; n/a ; Burushaski_Yeh_Barree +jg ; n/a ; Dal +jg ; n/a ; Dalath_Rish +jg ; n/a ; E +jg ; n/a ; Farsi_Yeh +jg ; n/a ; Fe +jg ; n/a ; Feh +jg ; n/a ; Final_Semkath +jg ; n/a ; Gaf +jg ; n/a ; Gamal +jg ; n/a ; Hah +jg ; n/a ; He +jg ; n/a ; Heh +jg ; n/a ; Heh_Goal +jg ; n/a ; Heth +jg ; n/a ; Kaf +jg ; n/a ; Kaph +jg ; n/a ; Khaph +jg ; n/a ; Knotted_Heh +jg ; n/a ; Lam +jg ; n/a ; Lamadh +jg ; n/a ; Meem +jg ; n/a ; Mim +jg ; n/a ; No_Joining_Group +jg ; n/a ; Noon +jg ; n/a ; Nun +jg ; n/a ; Nya +jg ; n/a ; Pe +jg ; n/a ; Qaf +jg ; n/a ; Qaph +jg ; n/a ; Reh +jg ; n/a ; Reversed_Pe +jg ; n/a ; Sad +jg ; n/a ; Sadhe +jg ; n/a ; Seen +jg ; n/a ; Semkath +jg ; n/a ; Shin +jg ; n/a ; Swash_Kaf +jg ; n/a ; Syriac_Waw +jg ; n/a ; Tah +jg ; n/a ; Taw +jg ; n/a ; Teh_Marbuta +jg ; n/a ; Teh_Marbuta_Goal ; Hamza_On_Heh_Goal +jg ; n/a ; Teth +jg ; n/a ; Waw +jg ; n/a ; Yeh +jg ; n/a ; Yeh_Barree +jg ; n/a ; Yeh_With_Tail +jg ; n/a ; Yudh +jg ; n/a ; Yudh_He +jg ; n/a ; Zain +jg ; n/a ; Zhain + +# Joining_Type (jt) + +jt ; C ; Join_Causing +jt ; D ; Dual_Joining +jt ; L ; Left_Joining +jt ; R ; Right_Joining +jt ; T ; Transparent +jt ; U ; Non_Joining + +# Line_Break (lb) + +lb ; AI ; Ambiguous +lb ; AL ; Alphabetic +lb ; B2 ; Break_Both +lb ; BA ; Break_After +lb ; BB ; Break_Before +lb ; BK ; Mandatory_Break +lb ; CB ; Contingent_Break +lb ; CL ; Close_Punctuation +lb ; CM ; Combining_Mark +lb ; CP ; Close_Parenthesis +lb ; CR ; Carriage_Return +lb ; EX ; Exclamation +lb ; GL ; Glue +lb ; H2 ; H2 +lb ; H3 ; H3 +lb ; HY ; Hyphen +lb ; ID ; Ideographic +lb ; IN ; Inseparable ; Inseperable +lb ; IS ; Infix_Numeric +lb ; JL ; JL +lb ; JT ; JT +lb ; JV ; JV +lb ; LF ; Line_Feed +lb ; NL ; Next_Line +lb ; NS ; Nonstarter +lb ; NU ; Numeric +lb ; OP ; Open_Punctuation +lb ; PO ; Postfix_Numeric +lb ; PR ; Prefix_Numeric +lb ; QU ; Quotation +lb ; SA ; Complex_Context +lb ; SG ; Surrogate +lb ; SP ; Space +lb ; SY ; Break_Symbols +lb ; WJ ; Word_Joiner +lb ; XX ; Unknown +lb ; ZW ; ZWSpace + +# Logical_Order_Exception (LOE) + +LOE; N ; No ; F ; False +LOE; Y ; Yes ; T ; True + +# Lowercase (Lower) + +Lower; N ; No ; F ; False +Lower; Y ; Yes ; T ; True + +# Lowercase_Mapping (lc) + +# @missing: 0000..10FFFF; Lowercase_Mapping; <code point> + +# Math (Math) + +Math; N ; No ; F ; False +Math; Y ; Yes ; T ; True + +# NFC_Quick_Check (NFC_QC) + +NFC_QC; M ; Maybe +NFC_QC; N ; No +NFC_QC; Y ; Yes + +# NFD_Quick_Check (NFD_QC) + +NFD_QC; N ; No +NFD_QC; Y ; Yes + +# NFKC_Casefold (NFKC_CF) + +# @missing: 0000..10FFFF; NFKC_Casefold; <code point> + +# NFKC_Quick_Check (NFKC_QC) + +NFKC_QC; M ; Maybe +NFKC_QC; N ; No +NFKC_QC; Y ; Yes + +# NFKD_Quick_Check (NFKD_QC) + +NFKD_QC; N ; No +NFKD_QC; Y ; Yes + +# Name (na) + +# @missing: 0000..10FFFF; Name; <none> + +# Name_Alias (Name_Alias) + +# @missing: 0000..10FFFF; Name_Alias; <none> + +# Noncharacter_Code_Point (NChar) + +NChar; N ; No ; F ; False +NChar; Y ; Yes ; T ; True + +# Numeric_Type (nt) + +nt ; De ; Decimal +nt ; Di ; Digit +nt ; None ; None +nt ; Nu ; Numeric + +# Numeric_Value (nv) + +# @missing: 0000..10FFFF; Numeric_Value; NaN + +# Other_Alphabetic (OAlpha) + +OAlpha; N ; No ; F ; False +OAlpha; Y ; Yes ; T ; True + +# Other_Default_Ignorable_Code_Point (ODI) + +ODI; N ; No ; F ; False +ODI; Y ; Yes ; T ; True + +# Other_Grapheme_Extend (OGr_Ext) + +OGr_Ext; N ; No ; F ; False +OGr_Ext; Y ; Yes ; T ; True + +# Other_ID_Continue (OIDC) + +OIDC; N ; No ; F ; False +OIDC; Y ; Yes ; T ; True + +# Other_ID_Start (OIDS) + +OIDS; N ; No ; F ; False +OIDS; Y ; Yes ; T ; True + +# Other_Lowercase (OLower) + +OLower; N ; No ; F ; False +OLower; Y ; Yes ; T ; True + +# Other_Math (OMath) + +OMath; N ; No ; F ; False +OMath; Y ; Yes ; T ; True + +# Other_Uppercase (OUpper) + +OUpper; N ; No ; F ; False +OUpper; Y ; Yes ; T ; True + +# Pattern_Syntax (Pat_Syn) + +Pat_Syn; N ; No ; F ; False +Pat_Syn; Y ; Yes ; T ; True + +# Pattern_White_Space (Pat_WS) + +Pat_WS; N ; No ; F ; False +Pat_WS; Y ; Yes ; T ; True + +# Quotation_Mark (QMark) + +QMark; N ; No ; F ; False +QMark; Y ; Yes ; T ; True + +# Radical (Radical) + +Radical; N ; No ; F ; False +Radical; Y ; Yes ; T ; True + +# STerm (STerm) + +STerm; N ; No ; F ; False +STerm; Y ; Yes ; T ; True + +# Script (sc) + +sc ; Arab ; Arabic +sc ; Armi ; Imperial_Aramaic +sc ; Armn ; Armenian +sc ; Avst ; Avestan +sc ; Bali ; Balinese +sc ; Bamu ; Bamum +sc ; Batk ; Batak +sc ; Beng ; Bengali +sc ; Bopo ; Bopomofo +sc ; Brah ; Brahmi +sc ; Brai ; Braille +sc ; Bugi ; Buginese +sc ; Buhd ; Buhid +sc ; Cans ; Canadian_Aboriginal +sc ; Cari ; Carian +sc ; Cham ; Cham +sc ; Cher ; Cherokee +sc ; Copt ; Coptic ; Qaac +sc ; Cprt ; Cypriot +sc ; Cyrl ; Cyrillic +sc ; Deva ; Devanagari +sc ; Dsrt ; Deseret +sc ; Egyp ; Egyptian_Hieroglyphs +sc ; Ethi ; Ethiopic +sc ; Geor ; Georgian +sc ; Glag ; Glagolitic +sc ; Goth ; Gothic +sc ; Grek ; Greek +sc ; Gujr ; Gujarati +sc ; Guru ; Gurmukhi +sc ; Hang ; Hangul +sc ; Hani ; Han +sc ; Hano ; Hanunoo +sc ; Hebr ; Hebrew +sc ; Hira ; Hiragana +sc ; Hrkt ; Katakana_Or_Hiragana +sc ; Ital ; Old_Italic +sc ; Java ; Javanese +sc ; Kali ; Kayah_Li +sc ; Kana ; Katakana +sc ; Khar ; Kharoshthi +sc ; Khmr ; Khmer +sc ; Knda ; Kannada +sc ; Kthi ; Kaithi +sc ; Lana ; Tai_Tham +sc ; Laoo ; Lao +sc ; Latn ; Latin +sc ; Lepc ; Lepcha +sc ; Limb ; Limbu +sc ; Linb ; Linear_B +sc ; Lisu ; Lisu +sc ; Lyci ; Lycian +sc ; Lydi ; Lydian +sc ; Mand ; Mandaic +sc ; Mlym ; Malayalam +sc ; Mong ; Mongolian +sc ; Mtei ; Meetei_Mayek +sc ; Mymr ; Myanmar +sc ; Nkoo ; Nko +sc ; Ogam ; Ogham +sc ; Olck ; Ol_Chiki +sc ; Orkh ; Old_Turkic +sc ; Orya ; Oriya +sc ; Osma ; Osmanya +sc ; Phag ; Phags_Pa +sc ; Phli ; Inscriptional_Pahlavi +sc ; Phnx ; Phoenician +sc ; Prti ; Inscriptional_Parthian +sc ; Rjng ; Rejang +sc ; Runr ; Runic +sc ; Samr ; Samaritan +sc ; Sarb ; Old_South_Arabian +sc ; Saur ; Saurashtra +sc ; Shaw ; Shavian +sc ; Sinh ; Sinhala +sc ; Sund ; Sundanese +sc ; Sylo ; Syloti_Nagri +sc ; Syrc ; Syriac +sc ; Tagb ; Tagbanwa +sc ; Tale ; Tai_Le +sc ; Talu ; New_Tai_Lue +sc ; Taml ; Tamil +sc ; Tavt ; Tai_Viet +sc ; Telu ; Telugu +sc ; Tfng ; Tifinagh +sc ; Tglg ; Tagalog +sc ; Thaa ; Thaana +sc ; Thai ; Thai +sc ; Tibt ; Tibetan +sc ; Ugar ; Ugaritic +sc ; Vaii ; Vai +sc ; Xpeo ; Old_Persian +sc ; Xsux ; Cuneiform +sc ; Yiii ; Yi +sc ; Zinh ; Inherited ; Qaai +sc ; Zyyy ; Common +sc ; Zzzz ; Unknown + +# Sentence_Break (SB) + +SB ; AT ; ATerm +SB ; CL ; Close +SB ; CR ; CR +SB ; EX ; Extend +SB ; FO ; Format +SB ; LE ; OLetter +SB ; LF ; LF +SB ; LO ; Lower +SB ; NU ; Numeric +SB ; SC ; SContinue +SB ; SE ; Sep +SB ; SP ; Sp +SB ; ST ; STerm +SB ; UP ; Upper +SB ; XX ; Other + +# Simple_Case_Folding (scf) + +# @missing: 0000..10FFFF; Simple_Case_Folding; <code point> + +# Simple_Lowercase_Mapping (slc) + +# @missing: 0000..10FFFF; Simple_Lowercase_Mapping; <code point> + +# Simple_Titlecase_Mapping (stc) + +# @missing: 0000..10FFFF; Simple_Titlecase_Mapping; <code point> + +# Simple_Uppercase_Mapping (suc) + +# @missing: 0000..10FFFF; Simple_Uppercase_Mapping; <code point> + +# Soft_Dotted (SD) + +SD ; N ; No ; F ; False +SD ; Y ; Yes ; T ; True + +# Terminal_Punctuation (Term) + +Term; N ; No ; F ; False +Term; Y ; Yes ; T ; True + +# Titlecase_Mapping (tc) + +# @missing: 0000..10FFFF; Titlecase_Mapping; <code point> + +# Unicode_1_Name (na1) + +# @missing: 0000..10FFFF; Unicode_1_Name; <none> + +# Unified_Ideograph (UIdeo) + +UIdeo; N ; No ; F ; False +UIdeo; Y ; Yes ; T ; True + +# Uppercase (Upper) + +Upper; N ; No ; F ; False +Upper; Y ; Yes ; T ; True + +# Uppercase_Mapping (uc) + +# @missing: 0000..10FFFF; Uppercase_Mapping; <code point> + +# Variation_Selector (VS) + +VS ; N ; No ; F ; False +VS ; Y ; Yes ; T ; True + +# White_Space (WSpace) + +WSpace; N ; No ; F ; False +WSpace; Y ; Yes ; T ; True + +# Word_Break (WB) + +WB ; CR ; CR +WB ; EX ; ExtendNumLet +WB ; Extend ; Extend +WB ; FO ; Format +WB ; KA ; Katakana +WB ; LE ; ALetter +WB ; LF ; LF +WB ; MB ; MidNumLet +WB ; ML ; MidLetter +WB ; MN ; MidNum +WB ; NL ; Newline +WB ; NU ; Numeric +WB ; XX ; Other + +# XID_Continue (XIDC) + +XIDC; N ; No ; F ; False +XIDC; Y ; Yes ; T ; True + +# XID_Start (XIDS) + +XIDS; N ; No ; F ; False +XIDS; Y ; Yes ; T ; True + +# cjkAccountingNumeric (cjkAccountingNumeric) + +# @missing: 0000..10FFFF; cjkAccountingNumeric; NaN + +# cjkCompatibilityVariant (cjkCompatibilityVariant) + +# @missing: 0000..10FFFF; cjkCompatibilityVariant; <code point> + +# cjkIICore (cjkIICore) + +# @missing: 0000..10FFFF; cjkIICore; <none> + +# cjkIRG_GSource (cjkIRG_GSource) + +# @missing: 0000..10FFFF; cjkIRG_GSource; <none> + +# cjkIRG_HSource (cjkIRG_HSource) + +# @missing: 0000..10FFFF; cjkIRG_HSource; <none> + +# cjkIRG_JSource (cjkIRG_JSource) + +# @missing: 0000..10FFFF; cjkIRG_JSource; <none> + +# cjkIRG_KPSource (cjkIRG_KPSource) + +# @missing: 0000..10FFFF; cjkIRG_KPSource; <none> + +# cjkIRG_KSource (cjkIRG_KSource) + +# @missing: 0000..10FFFF; cjkIRG_KSource; <none> + +# cjkIRG_MSource (cjkIRG_MSource) + +# @missing: 0000..10FFFF; cjkIRG_MSource; <none> + +# cjkIRG_TSource (cjkIRG_TSource) + +# @missing: 0000..10FFFF; cjkIRG_TSource; <none> + +# cjkIRG_USource (cjkIRG_USource) + +# @missing: 0000..10FFFF; cjkIRG_USource; <none> + +# cjkIRG_VSource (cjkIRG_VSource) + +# @missing: 0000..10FFFF; cjkIRG_VSource; <none> + +# cjkOtherNumeric (cjkOtherNumeric) + +# @missing: 0000..10FFFF; cjkOtherNumeric; NaN + +# cjkPrimaryNumeric (cjkPrimaryNumeric) + +# @missing: 0000..10FFFF; cjkPrimaryNumeric; NaN + +# cjkRSUnicode (cjkRSUnicode) + +# @missing: 0000..10FFFF; cjkRSUnicode; <none> + +# EOF diff --git a/test/java/lang/Double/ParseDouble.java b/test/java/lang/Double/ParseDouble.java index a282a6aac68f3e7cfd12532c6f8f4b3545fef9e6..e67c3d86beac8e56c8fd445d432a57acc20c98c7 100644 --- a/test/java/lang/Double/ParseDouble.java +++ b/test/java/lang/Double/ParseDouble.java @@ -23,7 +23,7 @@ /* * @test - * @bug 4160406 4705734 4707389 4826774 4895911 4421494 + * @bug 4160406 4705734 4707389 4826774 4895911 4421494 7021568 * @summary Test for Double.parseDouble method and acceptance regex */ @@ -581,6 +581,31 @@ public class ParseDouble { } } + + private static void testStrictness() { + final double expected = 0x0.0000008000001p-1022; + boolean failed = false; + double conversion = 0.0; + double sum = 0.0; // Prevent conversion from being optimized away + + //2^-1047 + 2^-1075 + String decimal = "6.631236871469758276785396630275967243399099947355303144249971758736286630139265439618068200788048744105960420552601852889715006376325666595539603330361800519107591783233358492337208057849499360899425128640718856616503093444922854759159988160304439909868291973931426625698663157749836252274523485312442358651207051292453083278116143932569727918709786004497872322193856150225415211997283078496319412124640111777216148110752815101775295719811974338451936095907419622417538473679495148632480391435931767981122396703443803335529756003353209830071832230689201383015598792184172909927924176339315507402234836120730914783168400715462440053817592702766213559042115986763819482654128770595766806872783349146967171293949598850675682115696218943412532098591327667236328125E-316"; + + for(int i = 0; i <= 12_000; i++) { + conversion = Double.parseDouble(decimal); + sum += conversion; + if (conversion != expected) { + failed = true; + System.out.printf("Iteration %d converts as %a%n", + i, conversion); + } + } + + System.out.println("Sum = " + sum); + if (failed) + throw new RuntimeException("Inconsistent conversion"); + } + public static void main(String[] args) throws Exception { rudimentaryTest(); @@ -595,5 +620,6 @@ public class ParseDouble { testRegex(paddedBadStrings, true); testSubnormalPowers(); + testStrictness(); } } diff --git a/test/java/lang/Math/RoundTests.java b/test/java/lang/Math/RoundTests.java new file mode 100644 index 0000000000000000000000000000000000000000..9994e97df8566ae7c46ddc56ed9ec74fa8ba4419 --- /dev/null +++ b/test/java/lang/Math/RoundTests.java @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6430675 + * @summary Check for correct implementation of {Math, StrictMath}.round + */ +public class RoundTests { + public static void main(String... args) { + int failures = 0; + + failures += testNearFloatHalfCases(); + failures += testNearDoubleHalfCases(); + + if (failures > 0) { + System.err.println("Testing {Math, StrictMath}.round incurred " + + failures + " failures."); + throw new RuntimeException(); + } + } + + private static int testNearDoubleHalfCases() { + int failures = 0; + double [][] testCases = { + {+0x1.fffffffffffffp-2, 0.0}, + {+0x1.0p-1, 1.0}, // +0.5 + {+0x1.0000000000001p-1, 1.0}, + + {-0x1.fffffffffffffp-2, 0.0}, + {-0x1.0p-1, 0.0}, // -0.5 + {-0x1.0000000000001p-1, -1.0}, + }; + + for(double[] testCase : testCases) { + failures += testNearHalfCases(testCase[0], (long)testCase[1]); + } + + return failures; + } + + private static int testNearHalfCases(double input, double expected) { + int failures = 0; + + failures += Tests.test("Math.round", input, Math.round(input), expected); + failures += Tests.test("StrictMath.round", input, StrictMath.round(input), expected); + + return failures; + } + + private static int testNearFloatHalfCases() { + int failures = 0; + float [][] testCases = { + {+0x1.fffffep-2f, 0.0f}, + {+0x1.0p-1f, 1.0f}, // +0.5 + {+0x1.000002p-1f, 1.0f}, + + {-0x1.fffffep-2f, 0.0f}, + {-0x1.0p-1f, 0.0f}, // -0.5 + {-0x1.000002p-1f, -1.0f}, + }; + + for(float[] testCase : testCases) { + failures += testNearHalfCases(testCase[0], (int)testCase[1]); + } + + return failures; + } + + private static int testNearHalfCases(float input, float expected) { + int failures = 0; + + failures += Tests.test("Math.round", input, Math.round(input), expected); + failures += Tests.test("StrictMath.round", input, StrictMath.round(input), expected); + + return failures; + } +} diff --git a/test/java/lang/invoke/ClassValueTest.java b/test/java/lang/invoke/ClassValueTest.java index 59c5a658c7e70fcaf98a884f0368d3722774b634..121c260dfa187621c03e621f9af982e562956e5d 100644 --- a/test/java/lang/invoke/ClassValueTest.java +++ b/test/java/lang/invoke/ClassValueTest.java @@ -52,9 +52,9 @@ public class ClassValueTest { static String nameForCV1(Class<?> type) { return "CV1:" + type.getName(); } - static int countForCV1; - static final ClassValue<String> CV1 = new CV1(); - private static class CV1 extends ClassValue<String> { + int countForCV1; + final ClassValue<String> CV1 = new CV1(); + private class CV1 extends ClassValue<String> { protected String computeValue(Class<?> type) { countForCV1++; return nameForCV1(type); @@ -103,8 +103,8 @@ public class ClassValueTest { static String nameForCVN(Class<?> type, int n) { return "CV[" + n + "]" + type.getName(); } - static int countForCVN; - static class CVN extends ClassValue<String> { + int countForCVN; + class CVN extends ClassValue<String> { final int n; CVN(int n) { this.n = n; } protected String computeValue(Class<?> type) { diff --git a/test/java/lang/reflect/Generics/Probe.java b/test/java/lang/reflect/Generics/Probe.java index 14d094a2e6cb5aaa9a696ca9ef88bb7f8f73211d..2d9aa0144de464336705b0fd7fdd1a1f9bee6e86 100644 --- a/test/java/lang/reflect/Generics/Probe.java +++ b/test/java/lang/reflect/Generics/Probe.java @@ -38,12 +38,12 @@ import static java.util.Arrays.*; "java.util.concurrent.ConcurrentHashMap$KeyIterator", "java.util.concurrent.ConcurrentHashMap$ValueIterator", "java.util.AbstractList$ListItr", - "java.util.EnumMap$EntryIterator", - "java.util.EnumMap$KeyIterator", - "java.util.EnumMap$ValueIterator", - "java.util.IdentityHashMap$EntryIterator", - "java.util.IdentityHashMap$KeyIterator", - "java.util.IdentityHashMap$ValueIterator", +// "java.util.EnumMap$EntryIterator", +// "java.util.EnumMap$KeyIterator", +// "java.util.EnumMap$ValueIterator", +// "java.util.IdentityHashMap$EntryIterator", +// "java.util.IdentityHashMap$KeyIterator", +// "java.util.IdentityHashMap$ValueIterator", "java.util.WeakHashMap$EntryIterator", "java.util.WeakHashMap$KeyIterator", "java.util.WeakHashMap$ValueIterator", diff --git a/test/java/math/BigDecimal/DivideMcTests.java b/test/java/math/BigDecimal/DivideMcTests.java new file mode 100644 index 0000000000000000000000000000000000000000..3bf1da89a6d124aab02d23cae8840a6ef5039450 --- /dev/null +++ b/test/java/math/BigDecimal/DivideMcTests.java @@ -0,0 +1,5797 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7036582 + * @summary Some tests for the divide(..,MathContext) method. + * @run main DivideMcTests + * @run main/othervm -XX:+AggressiveOpts DivideMcTests + * @author Sergey V. Kuksenko + */ + +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; + + +public class DivideMcTests { + + static String[] value = new String[75]; + static String[][] results = new String[75][75]; + static { + value[0]="11061"; + value[1]="5030285645"; + value[2]="224198292018431"; + value[3]="19226185404220649458"; + value[4]="2754593222460641763294400"; + value[5]="88290e4"; + value[6]="14207e-4"; + value[7]="9206524943e4"; + value[8]="9637167289e-4"; + value[9]="987673128759528e4"; + value[10]="270627774630281e-4"; + value[11]="81503625886547904651e4"; + value[12]="60700032235397315737e-4"; + value[13]="6477954854329556663533122e4"; + value[14]="8056417378028557868905113e-4"; + value[15]="74996e8"; + value[16]="65282e-8"; + value[17]="6336626690e8"; + value[18]="8318166778e-8"; + value[19]="983114227763768e8"; + value[20]="245802997834566e-8"; + value[21]="52727924122290902686e8"; + value[22]="42785567085625398961e-8"; + value[23]="4810906998143118279742863e8"; + value[24]="8077506080975981172874361e-8"; + value[25]="80689e12"; + value[26]="30125e-12"; + value[27]="6921467144e12"; + value[28]="1953347181e-12"; + value[29]="405471649883944e12"; + value[30]="866720590936024e-12"; + value[31]="33231666378140173438e12"; + value[32]="42631490906110209257e-12"; + value[33]="7723154992826793726050991e12"; + value[34]="1611437259018380210686834e-12"; + value[35]="65645e16"; + value[36]="31153e-16"; + value[37]="7758733150e16"; + value[38]="6365465077e-16"; + value[39]="727973863299662e16"; + value[40]="351084160935215e-16"; + value[41]="45470432070181568402e16"; + value[42]="97216256670931719037e-16"; + value[43]="2520581904836081418366563e16"; + value[44]="3700768934485477578987416e-16"; + value[45]="28736e20"; + value[46]="52779e-20"; + value[47]="7904805864e20"; + value[48]="6373815349e-20"; + value[49]="186651310031326e20"; + value[50]="189125880591366e-20"; + value[51]="74987916068454915171e20"; + value[52]="10554589082317914511e-20"; + value[53]="3599986721169840668392202e20"; + value[54]="2588106172836128849130551e-20"; + value[55]="71080e24"; + value[56]="61576e-24"; + value[57]="7086656363e24"; + value[58]="7703864845e-24"; + value[59]="361167296280301e24"; + value[60]="149150690375117e-24"; + value[61]="78129219923655854302e24"; + value[62]="20861932490694515212e-24"; + value[63]="9185868654811652011998047e24"; + value[64]="1996563690880014012200226e-24"; + value[65]="84665e28"; + value[66]="94968e-28"; + value[67]="2622821029e28"; + value[68]="4451579486e-28"; + value[69]="590522407411869e28"; + value[70]="606293232614518e-28"; + value[71]="96628087822208148505e28"; + value[72]="24875240094942654314e-28"; + value[73]="5099400093819597146233149e28"; + value[74]="8906650752845770170008864e-28"; + //-------------------------------------------- + initResults1(); + initResults2(); + } + + private static void initResults1() { + results[0][0]="1"; + results[0][1]="0.000002198881093560642"; + results[0][2]="4.933579065397471E-11"; + results[0][3]="5.753091300977375E-16"; + results[0][4]="4.015474920147867E-21"; + results[0][5]="0.00001252803261977574"; + results[0][6]="7785.598648553530"; + results[0][7]="1.201430514605841E-10"; + results[0][8]="0.01147743903192921"; + results[0][9]="1.119904923797219E-15"; + results[0][10]="4.087163638363069E-7"; + results[0][11]="1.357117536758031E-20"; + results[0][12]="1.822239559462666E-12"; + results[0][13]="1.707483341383177E-25"; + results[0][14]="1.372942771084022E-17"; + results[0][15]="1.474878660195210E-9"; + results[0][16]="16943414.72381361"; + results[0][17]="1.745565983468090E-14"; + results[0][18]="132.9740109233477"; + results[0][19]="1.125098151123273E-19"; + results[0][20]="0.004499945117611804"; + results[0][21]="2.097749946374985E-24"; + results[0][22]="2.585217575324869E-8"; + results[0][23]="2.299150660004288E-29"; + results[0][24]="1.369358300583728E-13"; + results[0][25]="1.370818822887878E-13"; + results[0][26]="367170124481.3278"; + results[0][27]="1.598071589430057E-18"; + results[0][28]="5662587.842852089"; + results[0][29]="2.727934247231818E-23"; + results[0][30]="12.76189825841631"; + results[0][31]="3.328451806821200E-28"; + results[0][32]="0.0002594560913752765"; + results[0][33]="1.432186717769276E-33"; + results[0][34]="6.864058738928437E-9"; + results[0][35]="1.684972198948892E-17"; + results[0][36]="3550540878888069"; + results[0][37]="1.425619335806130E-22"; + results[0][38]="17376577934.52694"; + results[0][39]="1.519422682273810E-27"; + results[0][40]="315052.6634564146"; + results[0][41]="2.432569803367569E-32"; + results[0][42]="1.137772670824026"; + results[0][43]="4.388272398043467E-37"; + results[0][44]="0.00002988838318687904"; + results[0][45]="3.849178730512249E-21"; + results[0][46]="2.095719888592054E+19"; + results[0][47]="1.399275351008165E-26"; + results[0][48]="173538130528606.9"; + results[0][49]="5.926023234524105E-31"; + results[0][50]="5848485656.967753"; + results[0][51]="1.475037656720937E-36"; + results[0][52]="104798.0164242535"; + results[0][53]="3.072511333154488E-41"; + results[0][54]="0.4273781391232109"; + results[0][55]="1.556133933595948E-25"; + results[0][56]="1.796316746784461E+23"; + results[0][57]="1.560820707738894E-30"; + results[0][58]="1.435772852009322E+18"; + results[0][59]="3.062569649555309E-35"; + results[0][60]="74159898101586.80"; + results[0][61]="1.415731529229177E-40"; + results[0][62]="530200162.6615257"; + results[0][63]="1.204132174718842E-45"; + results[0][64]="5540.018608234184"; + results[0][65]="1.306443040217327E-29"; + results[0][66]="1.164708112206217E+27"; + results[0][67]="4.217214929154817E-34"; + results[0][68]="2.484736043641657E+22"; + results[0][69]="1.873087263272185E-39"; + results[0][70]="1.824364747121068E+17"; + results[0][71]="1.144698218633054E-44"; + results[0][72]="4446590247082.196"; + results[0][73]="2.169078675235893E-49"; + results[0][74]="12418809.61422664"; + results[1][0]="454776.7511979025"; + results[1][1]="1"; + results[1][2]="0.00002243677059139446"; + results[1][3]="2.616372171203405E-10"; + results[1][4]="1.826144638701504E-15"; + results[1][5]="5.697457973722958"; + results[1][6]="3540709259.519955"; + results[1][7]="0.00005463826662224685"; + results[1][8]="5219.672435012765"; + results[1][9]="5.093067228950338E-10"; + results[1][10]="0.1858747001068956"; + results[1][11]="6.171855043605175E-15"; + results[1][12]="8.287121867567282E-7"; + results[1][13]="7.765237267187802E-20"; + results[1][14]="6.243824530142372E-12"; + results[1][15]="0.0006707405254946931"; + results[1][16]="7705471102294.660"; + results[1][17]="7.938428269631898E-9"; + results[1][18]="60473488.68147447"; + results[1][19]="5.116684819466090E-14"; + results[1][20]="2046.470421156359"; + results[1][21]="9.540079054379898E-19"; + results[1][22]="0.01175696850045963"; + results[1][23]="1.045600267671264E-23"; + results[1][24]="6.227523191653488E-8"; + results[1][25]="6.234165307538822E-8"; + results[1][26]="1.669804363485477E+17"; + results[1][27]="7.267658056226699E-13"; + results[1][28]="2575213302545.012"; + results[1][29]="1.240601074437582E-17"; + results[1][30]="5803814.629080740"; + results[1][31]="1.513702499224934E-22"; + results[1][32]="117.9945983141544"; + results[1][33]="6.513252226158986E-28"; + results[1][34]="0.003121614333321446"; + results[1][35]="7.662861824967629E-12"; + results[1][36]="1.614703445896061E+21"; + results[1][37]="6.483385299828233E-17"; + results[1][38]="7902463660001319"; + results[1][39]="6.909981111408860E-22"; + results[1][40]="143278626742.9544"; + results[1][41]="1.106276192237624E-26"; + results[1][42]="517432.5588391111"; + results[1][43]="1.995684264553637E-31"; + results[1][44]="13.59254180428686"; + results[1][45]="1.750516997842428E-15"; + results[1][46]="9.530846823547244E+24"; + results[1][47]="6.363578981627979E-21"; + results[1][48]="7.892110721075739E+19"; + results[1][49]="2.695017594120158E-25"; + results[1][50]="2659755306503325"; + results[1][51]="6.708128334181145E-31"; + results[1][52]="47659701441.40646"; + results[1][53]="1.397306722110734E-35"; + results[1][54]="194361.6416434591"; + results[1][55]="7.076935347495779E-20"; + results[1][56]="8.169230942250227E+28"; + results[1][57]="7.098249706679054E-25"; + results[1][58]="6.529561130949462E+23"; + results[1][59]="1.392785475542062E-29"; + results[1][60]="3.372619752780715E+19"; + results[1][61]="6.438417854312836E-35"; + results[1][62]="241122707459808.1"; + results[1][63]="5.476113184315002E-40"; + results[1][64]="2519471664.228668"; + results[1][65]="5.941399214551468E-24"; + results[1][66]="5.296821713629854E+32"; + results[1][67]="1.917891304584321E-28"; + results[1][68]="1.130000185511682E+28"; + results[1][69]="8.518365403010947E-34"; + results[1][70]="8.296786726957023E+22"; + results[1][71]="5.205821369719668E-39"; + results[1][72]="2.022205866476320E+18"; + results[1][73]="9.864465530164297E-44"; + results[1][74]="5647785890103.269"; + results[2][0]="20269260647.17756"; + results[2][1]="44569.69401753148"; + results[2][2]="1"; + results[2][3]="0.00001166109071065203"; + results[2][4]="8.139070777868161E-11"; + results[2][5]="253933.9585665772"; + results[2][6]="157808328301844.9"; + results[2][7]="2.435210825001846"; + results[2][8]="232639203.3002624"; + results[2][9]="0.00002269964480050335"; + results[2][10]="8284.378509364762"; + results[2][11]="2.750776908140411E-10"; + results[2][12]="0.03693544859234678"; + results[2][13]="3.460942489720927E-15"; + results[2][14]="2.782853488076028E-7"; + results[2][15]="29.89469998645674"; + results[2][16]="3.434304892902040E+17"; + results[2][17]="0.0003538133189576156"; + results[2][18]="2695284886705.971"; + results[2][19]="2.280490767877520E-9"; + results[2][20]="91210560.48686773"; + results[2][21]="4.251984043567731E-14"; + results[2][22]="524.0044886392415"; + results[2][23]="4.660208399475724E-19"; + results[2][24]="0.002775588031390770"; + results[2][25]="0.002778548402117154"; + results[2][26]="7.442266954968664E+21"; + results[2][27]="3.239172957900716E-8"; + results[2][28]="1.147764689243079E+17"; + results[2][29]="5.529321028550383E-13"; + results[2][30]="258674242152.6016"; + results[2][31]="6.746525722402801E-18"; + results[2][32]="5258983.142583397"; + results[2][33]="2.902936587789118E-23"; + results[2][34]="139.1293956768774"; + results[2][35]="3.415314068374301E-7"; + results[2][36]="7.196683851264116E+25"; + results[2][37]="2.889624990111060E-12"; + results[2][38]="3.522103873109208E+20"; + results[2][39]="3.079757438024150E-17"; + results[2][40]="6385884553185581"; + results[2][41]="4.930639138691073E-22"; + results[2][42]="23061810822.16754"; + results[2][43]="8.894703702675794E-27"; + results[2][44]="605815.4291375707"; + results[2][45]="7.802000696632482E-11"; + results[2][46]="4.247869266534626E+29"; + results[2][47]="2.836227680675536E-16"; + results[2][48]="3.517489599908254E+24"; + results[2][49]="1.201161095417993E-20"; + results[2][50]="1.185444801723589E+20"; + results[2][51]="2.989792272847868E-26"; + results[2][52]="2124178310210390"; + results[2][53]="6.227753305311532E-31"; + results[2][54]="8662638896.794075"; + results[2][55]="3.154168430197397E-15"; + results[2][56]="3.641001234546430E+33"; + results[2][57]="3.163668174867180E-20"; + results[2][58]="2.910205416751843E+28"; + results[2][59]="6.207602247697180E-25"; + results[2][60]="1.503166304189191E+24"; + results[2][61]="2.869583137237347E-30"; + results[2][62]="1.074676529216240E+19"; + results[2][63]="2.440686890302896E-35"; + results[2][64]="112292081160512.5"; + results[2][65]="2.648063450285608E-19"; + results[2][66]="2.360777230418994E+37"; + results[2][67]="8.547982860420744E-24"; + results[2][68]="5.036376250800950E+32"; + results[2][69]="3.796609395417242E-29"; + results[2][70]="3.697852457491911E+27"; + results[2][71]="2.320218655583322E-34"; + results[2][72]="9.012909670930670E+22"; + results[2][73]="4.396562103259092E-39"; + results[2][74]="2.517200889984344E+17"; + results[3][0]="1738195950114877"; + results[3][1]="3822086211.611279"; + results[3][2]="85755.27151045421"; + results[3][3]="1"; + results[3][4]="0.000006979682243988879"; + results[3][5]="21776175562.60126"; + results[3][6]="1.353289604013560E+19"; + results[3][7]="208832.1654832305"; + results[3][8]="19950038042989.76"; + results[3][9]="1.946614203058035"; + results[3][10]="710429128.3659471"; + results[3][11]="0.00002358936206222687"; + results[3][12]="3167.409422397122"; + results[3][13]="2.967940628880855E-10"; + results[3][14]="0.02386443564437743"; + results[3][15]="2563628.114062170"; + results[3][16]="2.945097485404958E+22"; + results[3][17]="30.34135723122526"; + results[3][18]="2.311348872574943E+17"; + results[3][19]="0.0001955641049764209"; + results[3][20]="7821786379172.049"; + results[3][21]="3.646300461142698E-9"; + results[3][22]="44936147.19595487"; + results[3][23]="3.996374365923399E-14"; + results[3][24]="238.0213052330826"; + results[3][25]="238.2751726284952"; + results[3][26]="6.382136233766191E+26"; + results[3][27]="0.002777761564740970"; + results[3][28]="9.842687255615237E+21"; + results[3][29]="4.741684260718020E-8"; + results[3][30]="2.218267986855733E+16"; + results[3][31]="5.785501450769154E-13"; + results[3][32]="450985527261.1410"; + results[3][33]="2.489421152634873E-18"; + results[3][34]="11931079.10135604"; + results[3][35]="0.02928811852269122"; + results[3][36]="6.171535776400555E+30"; + results[3][37]="2.478005755903675E-7"; + results[3][38]="3.020389739265025E+25"; + results[3][39]="2.641054352841019E-12"; + results[3][40]="5.476232636928451E+20"; + results[3][41]="4.228282980585251E-17"; + results[3][42]="1977671848577708"; + results[3][43]="7.627677310280051E-22"; + results[3][44]="51951866610.91471"; + results[3][45]="0.000006690626880644714"; + results[3][46]="3.642771822925908E+34"; + results[3][47]="2.432214748217965E-11"; + results[3][48]="3.016432756753313E+29"; + results[3][49]="1.030058958653646E-15"; + results[3][50]="1.016581408324629E+25"; + results[3][51]="2.563904481179269E-21"; + results[3][52]="1.821594877287098E+20"; + results[3][53]="5.340626755971191E-26"; + results[3][54]="742866950591597.5"; + results[3][55]="2.704865701212809E-10"; + results[3][56]="3.122350494384281E+38"; + results[3][57]="2.713012233047182E-15"; + results[3][58]="2.495654556647489E+33"; + results[3][59]="5.323346161801775E-20"; + results[3][60]="1.289044345411101E+29"; + results[3][61]="2.460818810556097E-25"; + results[3][62]="9.215917754885128E+23"; + results[3][63]="2.093017669499310E-30"; + results[3][64]="9.629637908393713E+18"; + results[3][65]="2.270854001561525E-14"; + results[3][66]="2.024490923702789E+42"; + results[3][67]="7.330345910620899E-19"; + results[3][68]="4.318958128162389E+37"; + results[3][69]="3.255792695231470E-24"; + results[3][70]="3.171103414978191E+32"; + results[3][71]="1.989709807731689E-29"; + results[3][72]="7.729045159298581E+27"; + results[3][73]="3.770283768775571E-34"; + results[3][74]="2.158632457669644E+22"; + results[4][0]="2.490365448386802E+20"; + results[4][1]="547601750051441.0"; + results[4][2]="12286414841.35031"; + results[4][3]="143272.9979736873"; + results[4][4]="1"; + results[4][5]="3119937957255229"; + results[4][6]="1.938898586936469E+24"; + results[4][7]="29920010422.11961"; + results[4][8]="2.858301760108257E+18"; + results[4][9]="278897.2527702849"; + results[4][10]="101785311068822.8"; + results[4][11]="3.379718622942007"; + results[4][12]="453804243.7569410"; + results[4][13]="0.00004252257517076709"; + results[4][14]="3419.129239720079"; + results[4][15]="367298685591.3171"; + results[4][16]="4.219529460587362E+27"; + results[4][17]="4347097.213108260"; + results[4][18]="3.311538823369143E+22"; + results[4][19]="28.01905561601273"; + results[4][20]="1.120650784053732E+18"; + results[4][21]="0.0005224163985807529"; + results[4][22]="6438136526151.358"; + results[4][23]="5.725725364310391E-9"; + results[4][24]="34102025.98235386"; + results[4][25]="34138398.32518239"; + results[4][26]="9.143877916881798E+31"; + results[4][27]="397.9782270365194"; + results[4][28]="1.410191311229400E+27"; + results[4][29]="0.006793553194777180"; + results[4][30]="3.178179047858768E+21"; + results[4][31]="8.289061376328140E-8"; + results[4][32]="6.461404853344776E+16"; + results[4][33]="3.566668317571105E-13"; + results[4][34]="1709401471912.486"; + results[4][35]="4196.196545754653"; + results[4][36]="8.842144327867755E+35"; + results[4][37]="0.03550313136443727"; + results[4][38]="4.327402929934638E+30"; + results[4][39]="3.783917749429893E-7"; + results[4][40]="7.845962674940902E+25"; + results[4][41]="6.057987789095672E-12"; + results[4][42]="2.833469747538924E+20"; + results[4][43]="1.092840195819694E-16"; + results[4][44]="7443299679674857"; + results[4][45]="0.9585861715133080"; + results[4][46]="5.219108400046689E+39"; + results[4][47]="0.000003484706986930048"; + results[4][48]="4.321733642460815E+34"; + results[4][49]="1.475796350959623E-10"; + results[4][50]="1.456486660549828E+30"; + results[4][51]="3.673382815367253E-16"; + results[4][52]="2.609853591624336E+25"; + results[4][53]="7.651676063864807E-21"; + results[4][54]="1.064327751068292E+20"; + results[4][55]="0.00003875342181289592"; + results[4][56]="4.473485160550607E+43"; + results[4][57]="3.887013961679578E-10"; + results[4][58]="3.575599102375792E+38"; + results[4][59]="7.626917638530619E-15"; + results[4][60]="1.846852478880778E+34"; + results[4][61]="3.525688884584153E-20"; + results[4][62]="1.320392165821326E+29"; + results[4][63]="2.998729163210665E-25"; + results[4][64]="1.379667092536635E+24"; + results[4][65]="3.253520607642641E-9"; + results[4][66]="2.900548840094181E+47"; + results[4][67]="1.050240634798815E-13"; + results[4][68]="6.187900791446503E+42"; + results[4][69]="4.664671802266443E-19"; + results[4][70]="4.543334931485233E+37"; + results[4][71]="2.850716892513680E-24"; + results[4][72]="1.107363471446723E+33"; + results[4][73]="5.401798587640085E-29"; + results[4][74]="3.092737437336386E+27"; + results[5][0]="79820.99267697315"; + results[5][1]="0.1755168716666387"; + results[5][2]="0.000003938031784503595"; + results[5][3]="4.592174586052730E-11"; + results[5][4]="3.205191941956922E-16"; + results[5][5]="1"; + results[5][6]="621454212.7120434"; + results[5][7]="0.000009589937630824491"; + results[5][8]="916.1405769180272"; + results[5][9]="8.939192272132398E-11"; + results[5][10]="0.03262414588473695"; + results[5][11]="1.083264689633546E-15"; + results[5][12]="1.454529705315602E-7"; + results[5][13]="1.362930152886002E-20"; + results[5][14]="1.095896548766010E-12"; + results[5][15]="0.0001177262787348659"; + results[5][16]="1352440182592.445"; + results[5][17]="1.393328095835799E-9"; + results[5][18]="10614117.55214028"; + results[5][19]="8.980645128168683E-15"; + results[5][20]="359.1900862796728"; + results[5][21]="1.674444831077185E-19"; + results[5][22]="0.002063546331483886"; + results[5][23]="1.835204879954603E-24"; + results[5][24]="1.093035388830462E-8"; + results[5][25]="1.094201192231903E-8"; + results[5][26]="2.930788381742739E+16"; + results[5][27]="1.275596606371755E-13"; + results[5][28]="451993382737.0138"; + results[5][29]="2.177464195715552E-18"; + results[5][30]="1018667.387429325"; + results[5][31]="2.656803272979331E-23"; + results[5][32]="20.71004276966202"; + results[5][33]="1.143185655111196E-28"; + results[5][34]="0.0005478959823343203"; + results[5][35]="1.344961535532028E-12"; + results[5][36]="2.834076974930183E+20"; + results[5][37]="1.137943505635324E-17"; + results[5][38]="1387015700062728"; + results[5][39]="1.212818267950047E-22"; + results[5][40]="25147816342.61536"; + results[5][41]="1.941701364608288E-27"; + results[5][42]="90818.14402590475"; + results[5][43]="3.502762589487909E-32"; + results[5][44]="2.385720415486439"; + results[5][45]="3.072452672605791E-16"; + results[5][46]="1.672824418802933E+24"; + results[5][47]="1.116915475458918E-21"; + results[5][48]="1.385198584609954E+19"; + results[5][49]="4.730210572065213E-26"; + results[5][50]="466831930796205.5"; + results[5][51]="1.177389699953815E-31"; + results[5][52]="8365081701.561654"; + results[5][53]="2.452509046236414E-36"; + results[5][54]="34113.74731325223"; + results[5][55]="1.242121553179516E-20"; + results[5][56]="1.433837858906067E+28"; + results[5][57]="1.245862582824943E-25"; + results[5][58]="1.146048143060329E+23"; + results[5][59]="2.444573495698746E-30"; + results[5][60]="5.919516683291835E+18"; + results[5][61]="1.130050960271621E-35"; + results[5][62]="42321103301135.62"; + results[5][63]="9.611502550034045E-41"; + results[5][64]="442209784.7581557"; + results[5][65]="1.042815803460698E-24"; + results[5][66]="9.296815769522365E+31"; + results[5][67]="3.366222819772885E-29"; + results[5][68]="1.983340975437319E+27"; + results[5][69]="1.495116847249808E-34"; + results[5][70]="1.456226051200787E+22"; + results[5][71]="9.137094812685324E-40"; + results[5][72]="3.549312475498482E+17"; + results[5][73]="1.731380130517828E-44"; + results[5][74]="991281711273.9084"; + results[6][0]="0.0001284422746587108"; + results[6][1]="2.824292893609623E-10"; + results[6][2]="6.336801173682476E-15"; + results[6][3]="7.389401330167758E-20"; + results[6][4]="5.157567325787970E-25"; + results[6][5]="1.609129006682524E-9"; + results[6][6]="1"; + results[6][7]="1.543144681403597E-14"; + results[6][8]="0.000001474188376517659"; + results[6][9]="1.438431358140050E-19"; + results[6][10]="5.249645946137250E-11"; + results[6][11]="1.743112634004281E-24"; + results[6][12]="2.340525939904718E-16"; + results[6][13]="2.193130443091112E-29"; + results[6][14]="1.763438924942655E-21"; + results[6][15]="1.894367699610646E-13"; + results[6][16]="2176.250727612512"; + results[6][17]="2.242044654835111E-18"; + results[6][18]="0.01707948443348703"; + results[6][19]="1.445101657445832E-23"; + results[6][20]="5.779831867454199E-7"; + results[6][21]="2.694397747775916E-28"; + results[6][22]="3.320512258624031E-12"; + results[6][23]="2.953081405540270E-33"; + results[6][24]="1.758834949497607E-17"; + results[6][25]="1.760710877566955E-17"; + results[6][26]="47160165.97510373"; + results[6][27]="2.052599500138579E-22"; + results[6][28]="727.3156629906847"; + results[6][29]="3.503820798338526E-27"; + results[6][30]="0.001639167241274031"; + results[6][31]="4.275139211600108E-32"; + results[6][32]="3.332513055029883E-8"; + results[6][33]="1.839533197662788E-37"; + results[6][34]="8.816353178189703E-13"; + results[6][35]="2.164216619696854E-21"; + results[6][36]="456039546753.1217"; + results[6][37]="1.831097902883797E-26"; + results[6][38]="2231887.195695002"; + results[6][39]="1.951581054792877E-31"; + results[6][40]="40.46608073162718"; + results[6][41]="3.124447988106234E-36"; + results[6][42]="0.0001461381098851545"; + results[6][43]="5.636396886267384E-41"; + results[6][44]="3.838931922393911E-9"; + results[6][45]="4.943972717149220E-25"; + results[6][46]="2691790295382633"; + results[6][47]="1.797261089573547E-30"; + results[6][48]="22289632225.11453"; + results[6][49]="7.611519039226468E-35"; + results[6][50]="751192.8010897827"; + results[6][51]="1.894571918364917E-40"; + results[6][52]="13.46049560925206"; + results[6][53]="3.946403445450303E-45"; + results[6][54]="0.00005489342032839216"; + results[6][55]="1.998733821046708E-29"; + results[6][56]="2.307230089645316E+19"; + results[6][57]="2.004753620364024E-34"; + results[6][58]="184413931005301.8"; + results[6][59]="3.933634120896147E-39"; + results[6][60]="9525266000.626017"; + results[6][61]="1.818397779202506E-44"; + results[6][62]="68100.11491666482"; + results[6][63]="1.546614755106283E-49"; + results[6][64]="0.7115725916931837"; + results[6][65]="1.678025157975551E-33"; + results[6][66]="1.495977592452194E+23"; + results[6][67]="5.416686782253186E-38"; + results[6][68]="3.191451493718201E+18"; + results[6][69]="2.405835887289389E-43"; + results[6][70]="23432555792739.37"; + results[6][71]="1.470276429990037E-48"; + results[6][72]="571130165.8104760"; + results[6][73]="2.786013989610011E-53"; + results[6][74]="1595.100155404736"; + results[7][0]="8323411032.456378"; + results[7][1]="18302.19115320239"; + results[7][2]="0.4106420642242513"; + results[7][3]="0.000004788534360528390"; + results[7][4]="3.342244825091065E-11"; + results[7][5]="104275.9649224148"; + results[7][6]="64802737685647.92"; + results[7][7]="1"; + results[7][8]="95531442.66270503"; + results[7][9]="0.000009321428998035992"; + results[7][10]="3401.914291900572"; + results[7][11]="1.129584707779182E-10"; + results[7][12]="0.01516724885301000"; + results[7][13]="1.421208568140421E-15"; + results[7][14]="1.142756700777198E-7"; + results[7][15]="12.27602131180330"; + results[7][16]="1.410270050396740E+17"; + results[7][17]="0.0001452906316467887"; + results[7][18]="1106797349549.367"; + results[7][19]="9.364654363655727E-10"; + results[7][20]="37454892.83737830"; + results[7][21]="1.746043504699232E-14"; + results[7][22]="215.1782848775914"; + results[7][23]="1.913677596875906E-19"; + results[7][24]="0.001139773198646432"; + results[7][25]="0.001140988851392383"; + results[7][26]="3.056107864896266E+21"; + results[7][27]="1.330140669811724E-8"; + results[7][28]="4.713204612344845E+16"; + results[7][29]="2.270571800922490E-13"; + results[7][30]="106222524759.1882"; + results[7][31]="2.770407248989495E-18"; + results[7][32]="2159559.693390987"; + results[7][33]="1.192067872721828E-23"; + results[7][34]="57.13238223502557"; + results[7][35]="1.402471619011349E-7"; + results[7][36]="2.955261112252432E+25"; + results[7][37]="1.186601570773187E-12"; + results[7][38]="1.446324004865796E+20"; + results[7][39]="1.264677951660229E-17"; + results[7][40]="2622312814817888"; + results[7][41]="2.024727833856987E-22"; + results[7][42]="9470149600.764056"; + results[7][43]="3.652539489129880E-27"; + results[7][44]="248773.2983599527"; + results[7][45]="3.203829671144209E-11"; + results[7][46]="1.744353804164535E+29"; + results[7][47]="1.164674389402563E-16"; + results[7][48]="1.444429190193662E+24"; + results[7][49]="4.932472716883077E-21"; + results[7][50]="4.867935004036829E+19"; + results[7][51]="1.227734470523965E-26"; + results[7][52]="872276966085176.7"; + results[7][53]="2.557377472772532E-31"; + results[7][54]="3557243918.208811"; + results[7][55]="1.295234235087226E-15"; + results[7][56]="1.495148262797194E+33"; + results[7][57]="1.299135229848029E-20"; + results[7][58]="1.195052759651575E+28"; + results[7][59]="2.549102600877473E-25"; + results[7][60]="6.172633140245884E+23"; + results[7][61]="1.178371542938247E-30"; + results[7][62]="4.413073883307109E+18"; + results[7][63]="1.002248702759050E-35"; + results[7][64]="46111852003790.03"; + results[7][65]="1.087406241422075E-19"; + results[7][66]="9.694344350728666E+36"; + results[7][67]="3.510161326756695E-24"; + results[7][68]="2.068147939838898E+32"; + results[7][69]="1.559047519187323E-29"; + results[7][70]="1.518493766341199E+27"; + results[7][71]="9.527793781803528E-35"; + results[7][72]="3.701079831937688E+22"; + results[7][73]="1.805413337572430E-39"; + results[7][74]="1.033668569530294E+17"; + results[8][0]="87.12745040231444"; + results[8][1]="0.0001915829034197918"; + results[8][2]="4.298501653263149E-9"; + results[8][3]="5.012521769858929E-14"; + results[8][4]="3.498580919469208E-19"; + results[8][5]="0.001091535540718088"; + results[8][6]="678339.3601041740"; + results[8][7]="1.046775775731475E-8"; + results[8][8]="1"; + results[8][9]="9.757446070344992E-14"; + results[8][10]="0.00003561041471876213"; + results[8][11]="1.182421908739965E-18"; + results[8][12]="1.587670868382187E-10"; + results[8][13]="1.487686701391408E-23"; + results[8][14]="1.196210031928393E-15"; + results[8][15]="1.285024173155902E-7"; + results[8][16]="1476236525.994914"; + results[8][17]="1.520867136485833E-12"; + results[8][18]="11585.68654152080"; + results[8][19]="9.802693335972867E-18"; + results[8][20]="0.3920687450478594"; + results[8][21]="1.827716044092442E-22"; + results[8][22]="0.000002252434160733091"; + results[8][23]="2.003191350969721E-27"; + results[8][24]="1.193086974171064E-11"; + results[8][25]="1.194359490017227E-11"; + results[8][26]="31990596809958.51"; + results[8][27]="1.392359031474151E-16"; + results[8][28]="493366841.4268441"; + results[8][29]="2.376779558264652E-21"; + results[8][30]="1111.911657549550"; + results[8][31]="2.899995197153080E-26"; + results[8][32]="0.02260574773287777"; + results[8][33]="1.247827772192961E-31"; + results[8][34]="5.980479373345604E-7"; + results[8][35]="1.468073316931983E-15"; + results[8][36]="3.093495743267101E+17"; + results[8][37]="1.242105779730290E-20"; + results[8][38]="1513976932152.447"; + results[8][39]="1.323834243899629E-25"; + results[8][40]="27449735.30941583"; + results[8][41]="2.119436048930757E-30"; + results[8][42]="99.13123194632914"; + results[8][43]="3.823389857123776E-35"; + results[8][44]="0.002604098623720172"; + results[8][45]="3.353691289323497E-19"; + results[8][46]="1.825947306504481E+21"; + results[8][47]="1.219152937441450E-24"; + results[8][48]="1.511993486054156E+16"; + results[8][49]="5.163192954489619E-29"; + results[8][50]="509563644006.1053"; + results[8][51]="1.285162702774995E-34"; + results[8][52]="9130783.978265085"; + results[8][53]="2.677000787899666E-39"; + results[8][54]="37.23636761949100"; + results[8][55]="1.355819821187394E-23"; + results[8][56]="1.565084982623100E+25"; + results[8][57]="1.359903288004258E-28"; + results[8][58]="1.250952279524317E+20"; + results[8][59]="2.668338852452637E-33"; + results[8][60]="6461362843686697"; + results[8][61]="1.233490785959079E-38"; + results[8][62]="46194988375.59113"; + results[8][63]="1.049129663306469E-43"; + results[8][64]="482687.6965168229"; + results[8][65]="1.138270511899841E-27"; + results[8][66]="1.014780482794204E+29"; + results[8][67]="3.674351845758363E-32"; + results[8][68]="2.164887164052315E+24"; + results[8][69]="1.631973176299542E-37"; + results[8][70]="1.589522490205218E+19"; + results[8][71]="9.973463726956913E-43"; + results[8][72]="387420071212069.1"; + results[8][73]="1.889862946953332E-47"; + results[8][74]="1082019218.719317"; + results[9][0]="892932943458573.4"; + results[9][1]="1963453367.188511"; + results[9][2]="44053.55276650961"; + results[9][3]="0.5137124749367641"; + results[9][4]="0.000003585549839831714"; + results[9][5]="11186693042.92137"; + results[9][6]="6.952017517839994E+18"; + results[9][7]="107279.6885767942"; + results[9][8]="10248583418146.87"; + results[9][9]="1"; + results[9][10]="364956305.8000387"; + results[9][11]="0.00001211814956716597"; + results[9][12]="1627.137733517652"; + results[9][13]="1.524668125927760E-10"; + results[9][14]="0.01225945829784226"; + results[9][15]="1316967.743292346"; + results[9][16]="1.512933318157422E+22"; + results[9][17]="15.58673371619321"; + results[9][18]="1.187368749772774E+17"; + results[9][19]="0.0001004637203762303"; + results[9][20]="4018149239271.144"; + results[9][21]="1.873150034256679E-9"; + results[9][22]="23084259.39015671"; + results[9][23]="2.052987366292351E-14"; + results[9][24]="122.2745137989658"; + results[9][25]="122.4049286469690"; + results[9][26]="3.278583000031628E+26"; + results[9][27]="0.001426970768207302"; + results[9][28]="5.056311230110650E+21"; + results[9][29]="2.435862356942155E-8"; + results[9][30]="1.139551937600652E+16"; + results[9][31]="2.972084269024861E-13"; + results[9][32]="231676891369.9822"; + results[9][33]="1.278846701479992E-18"; + results[9][34]="6129144.173823912"; + results[9][35]="0.01504567185253299"; + results[9][36]="3.170394917855513E+30"; + results[9][37]="1.272982469772824E-7"; + results[9][38]="1.551611888231443E+25"; + results[9][39]="1.356742568040473E-12"; + results[9][40]="2.813209021245996E+20"; + results[9][41]="2.172121714689447E-17"; + results[9][42]="1015954699945620"; + results[9][43]="3.918432989082965E-22"; + results[9][44]="26688321974.27763"; + results[9][45]="0.000003437058493734438"; + results[9][46]="1.871337328785176E+34"; + results[9][47]="1.249459057884749E-11"; + results[9][48]="1.549579136952070E+29"; + results[9][49]="5.291541369807505E-16"; + results[9][50]="5.222305512451464E+24"; + results[9][51]="1.317109716528063E-21"; + results[9][52]="9.357760127432864E+19"; + results[9][53]="2.743546588523462E-26"; + results[9][54]="381620019737136.4"; + results[9][55]="1.389523253741598E-10"; + results[9][56]="1.603990400090178E+38"; + results[9][57]="1.393708228772385E-15"; + results[9][58]="1.282048878882594E+33"; + results[9][59]="2.734669331724314E-20"; + results[9][60]="6.621981609843777E+28"; + results[9][61]="1.264153321541716E-25"; + results[9][62]="4.734331918675705E+23"; + results[9][63]="1.075209287084869E-30"; + results[9][64]="4.946865122665819E+18"; + results[9][65]="1.166566029362225E-14"; + results[9][66]="1.040006242902376E+42"; + results[9][67]="3.765690139887650E-19"; + results[9][68]="2.218702669166555E+37"; + results[9][69]="1.672541323348396E-24"; + results[9][70]="1.629035383588871E+32"; + results[9][71]="1.022138749735799E-29"; + results[9][72]="3.970506917681290E+27"; + results[9][73]="1.936841806071609E-34"; + results[9][74]="1.108916422308302E+22"; + results[10][0]="2446684.518852554"; + results[10][1]="5.379968330412397"; + results[10][2]="0.0001207091152184304"; + results[10][3]="1.407599942164664E-9"; + results[10][4]="9.824600322966481E-15"; + results[10][5]="30.65214346248511"; + results[10][6]="19048903683.41529"; + results[10][7]="0.0002939521440563168"; + results[10][8]="28081.67239549524"; + results[10][9]="2.740054039641405E-9"; + results[10][10]="1"; + results[10][11]="3.320438467449187E-14"; + results[10][12]="0.000004458445319778002"; + results[10][13]="4.177673057560849E-19"; + results[10][14]="3.359157823281803E-11"; + results[10][15]="0.003608562785085618"; + results[10][16]="41455190501253.18"; + results[10][17]="4.270849268387010E-8"; + results[10][18]="325345453.9358852"; + results[10][19]="2.752760228542944E-13"; + results[10][20]="11009.94605494694"; + results[10][21]="5.132532318219450E-18"; + results[10][22]="0.06325211819412893"; + results[10][23]="5.625296326342124E-23"; + results[10][24]="3.350387754800450E-7"; + results[10][25]="3.353961192111453E-7"; + results[10][26]="8.983494593536299E+17"; + results[10][27]="3.909977017876616E-12"; + results[10][28]="13854566011748.89"; + results[10][29]="6.674394491149785E-17"; + results[10][30]="31224338.90003856"; + results[10][31]="8.143671507496243E-22"; + results[10][32]="634.8072020898827"; + results[10][33]="3.504109070472339E-27"; + results[10][34]="0.01679418625303079"; + results[10][35]="4.122595393865199E-11"; + results[10][36]="8.687053401928578E+21"; + results[10][37]="3.488040758693718E-16"; + results[10][38]="4.251500422304194E+16"; + results[10][39]="3.717547954312753E-21"; + results[10][40]="770834474302.0734"; + results[10][41]="5.951730878927634E-26"; + results[10][42]="2783770.779678667"; + results[10][43]="1.073671814080092E-30"; + results[10][44]="73.12744443686990"; + results[10][45]="9.417726010240848E-15"; + results[10][46]="5.127565407269577E+25"; + results[10][47]="3.423585338923651E-20"; + results[10][48]="4.245930573949562E+20"; + results[10][49]="1.449910930627067E-24"; + results[10][50]="1.430939931563421E+16"; + results[10][51]="3.608951799423663E-30"; + results[10][52]="256407684391.6768"; + results[10][53]="7.517465912828107E-35"; + results[10][54]="1045659.476688773"; + results[10][55]="3.807368804590335E-19"; + results[10][56]="4.395020375313125E+29"; + results[10][57]="3.818835862329240E-24"; + results[10][58]="3.512883209599986E+24"; + results[10][59]="7.493141749474667E-29"; + results[10][60]="1.814458746048353E+20"; + results[10][61]="3.463848415416480E-34"; + results[10][62]="1297232529877061"; + results[10][63]="2.946131550536850E-39"; + results[10][64]="13554677762.92165"; + results[10][65]="3.196453961262399E-23"; + results[10][66]="2.849673307116934E+33"; + results[10][67]="1.031819447983696E-27"; + results[10][68]="6.079365211412986E+28"; + results[10][69]="4.582853609507953E-33"; + results[10][70]="4.463644983521472E+23"; + results[10][71]="2.800715410287590E-38"; + results[10][72]="1.087940351921676E+19"; + results[10][73]="5.307051214872866E-43"; + results[10][74]="30384909225705.58"; + results[11][0]="7.368558528753992E+19"; + results[11][1]="162025840356721.7"; + results[11][2]="3635336609.961668"; + results[11][3]="42391.98997251724"; + results[11][4]="0.2958826196985332"; + results[11][5]="923135416089567.4"; + results[11][6]="5.736863932325467E+23"; + results[11][7]="8852811065.104166"; + results[11][8]="8.457218126697593E+17"; + results[11][9]="82520.84977639587"; + results[11][10]="30116504485873.39"; + results[11][11]="1"; + results[11][12]="134272788.4731154"; + results[11][13]="0.00001258169093785437"; + results[11][14]="1011.660916536231"; + results[11][15]="108677297304.5868"; + results[11][16]="1.248485430693727E+27"; + results[11][17]="1286230.511498665"; + results[11][18]="9.798267822918602E+21"; + results[11][19]="8.290351577144743"; + results[11][20]="3.315810897530334E+17"; + results[11][21]="0.0001545739325855462"; + results[11][22]="1904932701334.478"; + results[11][23]="1.694142620466497E-9"; + results[11][24]="10090196.78468630"; + results[11][25]="10100958.72876698"; + results[11][26]="2.705514552250553E+31"; + results[11][27]="117.7548403985430"; + results[11][28]="4.172510994426643E+26"; + results[11][29]="0.002010094316332011"; + results[11][30]="9.403679425514422E+20"; + results[11][31]="2.452589194869899E-8"; + results[11][32]="1.911817394940469E+16"; + results[11][33]="1.055315165398698E-13"; + results[11][34]="505782185625.9951"; + results[11][35]="1241.581626727822"; + results[11][36]="2.616236827482037E+35"; + results[11][37]="0.01050475951561086"; + results[11][38]="1.280403315400169E+30"; + results[11][39]="1.119595496425095E-7"; + results[11][40]="2.321483990318425E+25"; + results[11][41]="1.792453297139352E-12"; + results[11][42]="8.383744517383584E+19"; + results[11][43]="3.233524200509892E-17"; + results[11][44]="2202343008423450"; + results[11][45]="0.2836289876341450"; + results[11][46]="1.544243465896434E+39"; + results[11][47]="0.000001031064232174645"; + results[11][48]="1.278725871770590E+34"; + results[11][49]="4.366624904634691E-11"; + results[11][50]="4.309490886794513E+29"; + results[11][51]="1.086890130566436E-16"; + results[11][52]="7.722103177194344E+24"; + results[11][53]="2.263997958860880E-21"; + results[11][54]="3.149160832039346E+19"; + results[11][55]="0.00001146646396828192"; + results[11][56]="1.323626508486227E+43"; + results[11][57]="1.150099873786527E-10"; + results[11][58]="1.057957629402673E+38"; + results[11][59]="2.256672371113390E-15"; + results[11][60]="5.464515496479744E+33"; + results[11][61]="1.043190063412758E-20"; + results[11][62]="3.906810930526339E+28"; + results[11][63]="8.872718405771617E-26"; + results[11][64]="4.082195136515981E+23"; + results[11][65]="9.626602006324680E-10"; + results[11][66]="8.582219893706080E+46"; + results[11][67]="3.107479503381239E-14"; + results[11][68]="1.830892296607818E+42"; + results[11][69]="1.380195312888473E-19"; + results[11][70]="1.344293841695707E+37"; + results[11][71]="8.434775821758094E-25"; + results[11][72]="3.276496048901183E+32"; + results[11][73]="1.598298317194785E-29"; + results[11][74]="9.150872549988179E+26"; + results[12][0]="548775266570.8102"; + results[12][1]="1206691.558276256"; + results[12][2]="27.07426166761666"; + results[12][3]="0.0003157154212300068"; + results[12][4]="2.203593319712548E-9"; + results[12][5]="6875074.440525237"; + results[12][6]="4272543973773303"; + results[12][7]="65.93153509191260"; + results[12][8]="6298534664.297173"; + results[12][9]="0.0006145761230907817"; + results[12][10]="224293.4315161216"; + results[12][11]="7.447525380023099E-9"; + results[12][12]="1"; + results[12][13]="9.370246258327704E-14"; + results[12][14]="0.000007534370351881011"; + results[12][15]="809.3769299082260"; + results[12][16]="9.298126931680603E+18"; + results[12][17]="0.009579234378946397"; + results[12][18]="72972848291449.96"; + results[12][19]="6.174260378010000E-8"; + results[12][20]="2469458581.471433"; + results[12][21]="1.151193286020835E-12"; + results[12][22]="14187.03464042448"; + results[12][23]="1.261717016330308E-17"; + results[12][24]="0.07514699664337871"; + results[12][25]="0.07522714649505796"; + results[12][26]="2.014938829390782E+23"; + results[12][27]="8.769821624887181E-7"; + results[12][28]="3.107488152941784E+18"; + results[12][29]="1.497022843712283E-11"; + results[12][30]="7003414118711.969"; + results[12][31]="1.826572027556399E-16"; + results[12][32]="142383085.7078879"; + results[12][33]="7.859486478230080E-22"; + results[12][34]="3766.825664213152"; + results[12][35]="0.000009246710676425823"; + results[12][36]="1.948449017282359E+27"; + results[12][37]="7.823446310355102E-11"; + results[12][38]="9.535836188108477E+21"; + results[12][39]="8.338215874985453E-16"; + results[12][40]="1.728931093721377E+17"; + results[12][41]="1.334934142295141E-20"; + results[12][42]="624381500728.4375"; + results[12][43]="2.408175355021632E-25"; + results[12][44]="16402005.45075007"; + results[12][45]="2.112334083915552E-9"; + results[12][46]="1.150079240519853E+31"; + results[12][47]="7.678877037554697E-15"; + results[12][48]="9.523343384103629E+25"; + results[12][49]="3.252054980230781E-19"; + results[12][50]="3.209504275438039E+21"; + results[12][51]="8.094641832690152E-25"; + results[12][52]="5.751055939931189E+16"; + results[12][53]="1.686118225893689E-29"; + results[12][54]="234534552223.8769"; + results[12][55]="8.539678142289999E-14"; + results[12][56]="9.857742015622534E+34"; + results[12][57]="8.565397999586525E-19"; + results[12][58]="7.879166295965479E+29"; + results[12][59]="1.680662475826388E-23"; + results[12][60]="4.069711784956242E+25"; + results[12][61]="7.769184473454425E-29"; + results[12][62]="2.909607356004657E+20"; + results[12][63]="6.607979551678220E-34"; + results[12][64]="3040225188540963"; + results[12][65]="7.169436276548434E-18"; + results[12][66]="6.391630047531518E+38"; + results[12][67]="2.314303246933335E-22"; + results[12][68]="1.363561684707550E+34"; + results[12][69]="1.027903962212583E-27"; + results[12][70]="1.001166250423753E+29"; + results[12][71]="6.281820700734860E-33"; + results[12][72]="2.440178748173697E+24"; + results[12][73]="1.190336728215637E-37"; + results[12][74]="6.815135556539365E+18"; + results[13][0]="5.856572510920854E+24"; + results[13][1]="1.287790656733084E+19"; + results[13][2]="288938635348614.2"; + results[13][3]="3369339636.612199"; + results[13][4]="23516.92003563011"; + results[13][5]="7.337133145689837E+19"; + results[13][6]="4.559692302618115E+28"; + results[13][7]="703626492562206.3"; + results[13][8]="6.721845393016666E+22"; + results[13][9]="6558804391.555706"; + results[13][10]="2.393677021207241E+18"; + results[13][11]="79480.57259865707"; + results[13][12]="10672078112261.57"; + results[13][13]="1"; + results[13][14]="80407388.92198187"; + results[13][15]="8637733818243049"; + results[13][16]="9.923033691261843E+31"; + results[13][17]="102230337547.7774"; + results[13][18]="7.787719370405676E+26"; + results[13][19]="658921.8903956439"; + results[13][20]="2.635425487645780E+22"; + results[13][21]="12.28562467072543"; + results[13][22]="1.514051418639709E+17"; + results[13][23]="0.0001346514255384665"; + results[13][24]="801974618079.9959"; + results[13][25]="802829983557.8030"; + results[13][26]="2.150358457868733E+36"; + results[13][27]="9359222.141139671"; + results[13][28]="3.316335630112216E+31"; + results[13][29]="159.7634472393744"; + results[13][30]="7.474098252740968E+25"; + results[13][31]="0.001949331935575389"; + results[13][32]="1.519523412539414E+21"; + results[13][33]="8.387705361793504E-9"; + results[13][34]="4.019985772375435E+16"; + results[13][35]="98681618.62029944"; + results[13][36]="2.079400011019663E+40"; + results[13][37]="834.9243013119425"; + results[13][38]="1.017671886652243E+35"; + results[13][39]="0.008898609113474424"; + results[13][40]="1.845128768291237E+30"; + results[13][41]="1.424652144129865E-7"; + results[13][42]="6.663448147624991E+24"; + results[13][43]="2.570023549681410E-12"; + results[13][44]="1.750434833681448E+20"; + results[13][45]="22542.99434273927"; + results[13][46]="1.227373549011834E+44"; + results[13][47]="0.08194957555923548"; + results[13][48]="1.016338644850434E+39"; + results[13][49]="0.000003470618477439216"; + results[13][50]="3.425208032911223E+34"; + results[13][51]="8.638664992924948E-12"; + results[13][52]="6.137571821893155E+29"; + results[13][53]="1.799438541324536E-16"; + results[13][54]="2.502971061357505E+24"; + results[13][55]="0.9113611218809168"; + results[13][56]="1.052025928012465E+48"; + results[13][57]="0.000009141059651419642"; + results[13][58]="8.408707817004228E+42"; + results[13][59]="1.793616122236614E-10"; + results[13][60]="4.343228206344449E+38"; + results[13][61]="8.291334356927543E-16"; + results[13][62]="3.105155697929257E+33"; + results[13][63]="7.052087393973718E-21"; + results[13][64]="3.244552069097433E+28"; + results[13][65]="0.00007651278396420666"; + results[13][66]="6.821197513193451E+51"; + results[13][67]="2.469842502673314E-9"; + results[13][68]="1.455203681008597E+47"; + results[13][69]="1.096987137663585E-14"; + results[13][70]="1.068452442788232E+42"; + results[13][71]="6.704008120546416E-20"; + results[13][72]="2.604177820839036E+37"; + results[13][73]="1.270336654341115E-24"; + results[13][74]="7.273165900503936E+31"; + results[14][0]="7.283624788019671E+16"; + results[14][1]="160158248389.6609"; + results[14][2]="3593433.877438394"; + results[14][3]="41.90335840753915"; + results[14][4]="0.0002924721266406031"; + results[14][5]="912494889345.1759"; + results[14][6]="5.670737930617694E+20"; + results[14][7]="8750769.077266332"; + results[14][8]="835973594359440.8"; + results[14][9]="81.56967263194704"; + results[14][10]="29769366389.07392"; + results[14][11]="0.0009884734930986993"; + results[14][12]="132725.0922501232"; + results[14][13]="1.243666799042916E-8"; + results[14][14]="1"; + results[14][15]="107424627.6871908"; + results[14][16]="1.234094754760663E+24"; + results[14][17]="1271.404766631212"; + results[14][18]="9.685328021236938E+18"; + results[14][19]="0.008194792782476575"; + results[14][20]="327759118033654.3"; + results[14][21]="1.527922350848377E-7"; + results[14][22]="1882975481.406032"; + results[14][23]="1.674615073859902E-12"; + results[14][24]="9973.892061812134"; + results[14][25]="9984.529958270096"; + results[14][26]="2.674329420092467E+28"; + results[14][27]="0.1163975384180276"; + results[14][28]="4.124416517653632E+23"; + results[14][29]="0.000001986924950322545"; + results[14][30]="9.295287849718610E+17"; + results[14][31]="2.424319408589176E-11"; + results[14][32]="18897808185436.61"; + results[14][33]="1.043151067861683E-16"; + results[14][34]="499952283.7728221"; + results[14][35]="1.227270527538816"; + results[14][36]="2.586080755634628E+32"; + results[14][37]="0.00001038367633255766"; + results[14][38]="1.265644737748760E+27"; + results[14][39]="1.106690471208886E-10"; + results[14][40]="2.294725389082761E+22"; + results[14][41]="1.771792571839617E-15"; + results[14][42]="8.287109228345220E+16"; + results[14][43]="3.196252961497192E-20"; + results[14][44]="2176957686537.825"; + results[14][45]="0.0002803597361507711"; + results[14][46]="1.526443732929490E+36"; + results[14][47]="1.019179663186800E-9"; + results[14][48]="1.263986629184754E+31"; + results[14][49]="4.316292972536028E-14"; + results[14][50]="4.259817510346784E+26"; + results[14][51]="1.074362083975506E-19"; + results[14][52]="7.633094301629857E+21"; + results[14][53]="2.237901970763539E-24"; + results[14][54]="3.112862007975538E+16"; + results[14][55]="1.133429569221800E-8"; + results[14][56]="1.308369718401416E+40"; + results[14][57]="1.136843239654142E-13"; + results[14][58]="1.045763073486079E+35"; + results[14][59]="2.230660821453777E-18"; + results[14][60]="5.401528720897306E+30"; + results[14][61]="1.031165725947463E-23"; + results[14][62]="3.861779047373550E+25"; + results[14][63]="8.770446955834192E-29"; + results[14][64]="4.035141686102474E+20"; + results[14][65]="9.515640911862703E-13"; + results[14][66]="8.483296876872797E+43"; + results[14][67]="3.071661119439865E-17"; + results[14][68]="1.809788503915430E+39"; + results[14][69]="1.364286482089321E-22"; + results[14][70]="1.328798829452025E+34"; + results[14][71]="8.337552320037675E-28"; + results[14][72]="3.238729494581439E+29"; + results[14][73]="1.579875520611302E-32"; + results[14][74]="9.045394954387817E+23"; + results[15][0]="678021878.6728144"; + results[15][1]="1490.889490034119"; + results[15][2]="0.03345074546501661"; + results[15][3]="3.900721772064906E-7"; + results[15][4]="2.722579849122226E-12"; + results[15][5]="8494.280212934647"; + results[15][6]="5278806222284.789"; + results[15][7]="0.08145961746078984"; + results[15][8]="7781954.774781330"; + results[15][9]="7.593200403679254E-7"; + results[15][10]="277.1186368526144"; + results[15][11]="9.201553818525026E-12"; + results[15][12]="0.001235518289498798"; + results[15][13]="1.157711062927156E-16"; + results[15][14]="9.308852369606484E-9"; + results[15][15]="1"; + results[15][16]="1.148800588217273E+16"; + results[15][17]="0.00001183531927458393"; + results[15][18]="90159288700.90755"; + results[15][19]="7.628411621159118E-11"; + results[15][20]="3051061.242567714"; + results[15][21]="1.422320359626963E-15"; + results[15][22]="17.52834077199745"; + results[15][23]="1.558874449847949E-20"; + results[15][24]="0.00009284548875379919"; + results[15][25]="0.00009294451536144952"; + results[15][26]="2.489493775933610E+20"; + results[15][27]="1.083527501319018E-9"; + results[15][28]="3839358447360413"; + results[15][29]="1.849599103204027E-14"; + results[15][30]="8652846232.602745"; + results[15][31]="2.256763147132834E-19"; + results[15][32]="175916.9065073704"; + results[15][33]="9.710539289921761E-25"; + results[15][34]="4.653982001488808"; + results[15][35]="1.142448015842791E-8"; + results[15][36]="2.407344397008314E+24"; + results[15][37]="9.666011003355619E-14"; + results[15][38]="1.178170001607253E+19"; + results[15][39]="1.030201821533375E-18"; + results[15][40]="213612598757592.2"; + results[15][41]="1.649335548082038E-23"; + results[15][42]="771434763.7746916"; + results[15][43]="2.975344695449488E-28"; + results[15][44]="20264.97771886068"; + results[15][45]="2.609827394209354E-12"; + results[15][46]="1.420943936035166E+28"; + results[15][47]="9.487393022711177E-18"; + results[15][48]="1.176626492823741E+23"; + results[15][49]="4.017973406530782E-22"; + results[15][50]="3.965401232528285E+18"; + results[15][51]="1.000107803123075E-27"; + results[15][52]="71055347977156.85"; + results[15][53]="2.083229906348919E-32"; + results[15][54]="289771728.7920109"; + results[15][55]="1.055092853123241E-16"; + results[15][56]="1.217942055346239E+32"; + results[15][57]="1.058270588532557E-21"; + results[15][58]="9.734854064667849E+26"; + results[15][59]="2.076489227357834E-26"; + results[15][60]="5.028203343302236E+22"; + results[15][61]="9.598969511443032E-32"; + results[15][62]="3.594873103603994E+17"; + results[15][63]="8.164279592732510E-37"; + results[15][64]="3756253824637.292"; + results[15][65]="8.857969645071753E-21"; + results[15][66]="7.896975823435262E+35"; + results[15][67]="2.859363989032589E-25"; + results[15][68]="1.684705400315972E+31"; + results[15][69]="1.269994145161927E-30"; + results[15][70]="1.236959213227480E+26"; + results[15][71]="7.761304367110075E-36"; + results[15][72]="3.014885473014884E+21"; + results[15][73]="1.470682798372580E-40"; + results[15][74]="8420224625517956"; + results[16][0]="5.901998011029744E-8"; + results[16][1]="1.297779184068582E-13"; + results[16][2]="2.911797383123386E-18"; + results[16][3]="3.395473341564099E-23"; + results[16][4]="2.369932499205253E-28"; + results[16][5]="7.394042360403217E-13"; + results[16][6]="0.0004595058773843880"; + results[16][7]="7.090840507594115E-18"; + results[16][8]="6.773982233816134E-10"; + results[16][9]="6.609676632793603E-23"; + results[16][10]="2.412243166437193E-14"; + results[16][11]="8.009705002679486E-28"; + results[16][12]="1.075485425556837E-19"; + results[16][13]="1.007756328470993E-32"; + results[16][14]="8.103105504195564E-25"; + results[16][15]="8.704730918982346E-17"; + results[16][16]="1"; + results[16][17]="1.030232696254985E-21"; + results[16][18]="0.000007848123479882456"; + results[16][19]="6.640327050142802E-27"; + results[16][20]="2.655866713388787E-10"; + results[16][21]="1.238091601114291E-31"; + results[16][22]="1.525794898764651E-15"; + results[16][23]="1.356958262240303E-36"; + results[16][24]="8.081949966432234E-21"; + results[16][25]="8.090569966166392E-21"; + results[16][26]="21670.37344398340"; + results[16][27]="9.431815342299341E-26"; + results[16][28]="0.3342058218579424"; + results[16][29]="1.610026250138211E-30"; + results[16][30]="7.532069813813702E-7"; + results[16][31]="1.964451594366708E-35"; + results[16][32]="1.531309335246434E-11"; + results[16][33]="8.452763159697483E-41"; + results[16][34]="4.051166102474697E-16"; + results[16][35]="9.944702566836774E-25"; + results[16][36]="209552852.0527718"; + results[16][37]="8.414002484413322E-30"; + results[16][38]="1025.565284080813"; + results[16][39]="8.967629648693503E-35"; + results[16][40]="0.01859440193089382"; + results[16][41]="1.435702214116641E-39"; + results[16][42]="6.715132040207400E-8"; + results[16][43]="2.589957496510927E-44"; + results[16][44]="1.764011781218549E-12"; + results[16][45]="2.271784521158129E-28"; + results[16][46]="1236893461414.578"; + results[16][47]="8.258520338533136E-34"; + results[16][48]="10242217.01217658"; + results[16][49]="3.497537734347732E-38"; + results[16][50]="345.1775071495967"; + results[16][51]="8.705669316160942E-44"; + results[16][52]="0.006185176844958069"; + results[16][53]="1.813395577714413E-48"; + results[16][54]="2.522384927062784E-8"; + results[16][55]="9.184299380979178E-33"; + results[16][56]="1.060185786670131E+16"; + results[16][57]="9.211960712648993E-38"; + results[16][58]="84739285168.49519"; + results[16][59]="1.807527998031550E-42"; + results[16][60]="4376915.710937338"; + results[16][61]="8.355644669662702E-48"; + results[16][62]="31.29240305475972"; + results[16][63]="7.106785700207527E-53"; + results[16][64]="0.0003269717880686592"; + results[16][65]="7.710624224886317E-37"; + results[16][66]="6.874104961671300E+19"; + results[16][67]="2.488999412395668E-41"; + results[16][68]="1466490718750697"; + results[16][69]="1.105495730231758E-46"; + results[16][70]="10767397108.90133"; + results[16][71]="6.756006609601578E-52"; + results[16][72]="262437.6679414338"; + results[16][73]="1.280189802700927E-56"; + results[16][74]="0.7329578964252270"; + results[17][0]="57288009131181.63"; + results[17][1]="125969520.1662847"; + results[17][2]="2826.349225478968"; + results[17][3]="0.03295831469829135"; + results[17][4]="2.300385638914618E-7"; + results[17][5]="717706047.1174538"; + results[17][6]="4.460214464700500E+17"; + results[17][7]="6882.756229121966"; + results[17][8]="657519632063.7410"; + results[17][9]="0.06415712350055034"; + results[17][10]="23414546.78351770"; + results[17][11]="7.774656183788081E-7"; + results[17][12]="104.3924765216976"; + results[17][13]="9.781832125249994E-12"; + results[17][14]="0.0007865315800645127"; + results[17][15]="84492.86215264814"; + results[17][16]="9.706544974112313E+20"; + results[17][17]="1"; + results[17][18]="7617816351986589"; + results[17][19]="0.000006445463315502565"; + results[17][20]="257792896987.5612"; + results[17][21]="1.201759180828659E-10"; + results[17][22]="1481019.680613023"; + results[17][23]="1.317137640042879E-15"; + results[17][24]="7.844781082769998"; + results[17][25]="7.853148124279642"; + results[17][26]="2.103444544398340E+25"; + results[17][27]="0.00009155033980755107"; + results[17][28]="3.243983840474286E+20"; + results[17][29]="1.562779220646795E-9"; + results[17][30]="731103743959364.5"; + results[17][31]="1.906803775018709E-14"; + results[17][32]="14863722931.84754"; + results[17][33]="8.204712576512332E-20"; + results[17][34]="393228.2597126994"; + results[17][35]="0.0009652870271917130"; + results[17][36]="2.034034182903733E+29"; + results[17][37]="8.167089352725064E-9"; + results[17][38]="9.954695553818683E+23"; + results[17][39]="8.704470049622648E-14"; + results[17][40]="1.804873986089417E+19"; + results[17][41]="1.393570811075580E-18"; + results[17][42]="65180731155375.70"; + results[17][43]="2.513953892092264E-23"; + results[17][44]="1712245968.926182"; + results[17][45]="2.205117862611359E-7"; + results[17][46]="1.200596201140605E+33"; + results[17][47]="8.016169908559313E-13"; + results[17][48]="9.941654006331020E+27"; + results[17][49]="3.394900731710114E-17"; + results[17][50]="3.350480997199534E+23"; + results[17][51]="8.450197074706576E-23"; + results[17][52]="6.003669721842360E+18"; + results[17][53]="1.760180573094133E-27"; + results[17][54]="24483642736557.92"; + results[17][55]="8.914781499718627E-12"; + results[17][56]="1.029074101922827E+37"; + results[17][57]="8.941631095708316E-17"; + results[17][58]="8.225256825621270E+31"; + results[17][59]="1.754485180486043E-21"; + results[17][60]="4.248472919611204E+27"; + results[17][61]="8.110444077378283E-27"; + results[17][62]="3.037411175990747E+22"; + results[17][63]="6.898233502044262E-32"; + results[17][64]="3.173766366154361E+17"; + results[17][65]="7.484352081733892E-16"; + results[17][66]="6.672380896723107E+40"; + results[17][67]="2.415958473695767E-20"; + results[17][68]="1.423455811567193E+36"; + results[17][69]="1.073054402418369E-25"; + results[17][70]="1.045142242916776E+31"; + results[17][71]="6.557748200149776E-31"; + results[17][72]="2.547363026774680E+26"; + results[17][73]="1.242621989531652E-35"; + results[17][74]="7.114488785782220E+20"; + results[18][0]="0.007520266502124582"; + results[18][1]="1.653617183005917E-8"; + results[18][2]="3.710182938109170E-13"; + results[18][3]="4.326477979440449E-18"; + results[18][4]="3.019744153210938E-23"; + results[18][5]="9.421414404802356E-8"; + results[18][6]="58.54977671570353"; + results[18][7]="9.035077653620603E-13"; + results[18][8]="0.00008631340028199442"; + results[18][9]="8.421983483996608E-18"; + results[18][10]="3.073655979828342E-9"; + results[18][11]="1.020588555112725E-22"; + results[18][12]="1.370372711787334E-14"; + results[18][13]="1.284072977513965E-27"; + results[18][14]="1.032489553071727E-19"; + results[18][15]="1.109148058296442E-11"; + results[18][16]="127418.9941790999"; + results[18][17]="1.312712139272323E-16"; + results[18][18]="1"; + results[18][19]="8.461037937494653E-22"; + results[18][20]="0.00003384078652937511"; + results[18][21]="1.577563865155743E-26"; + results[18][22]="1.944152513241934E-10"; + results[18][23]="1.729022569176787E-31"; + results[18][24]="1.029793935728606E-15"; + results[18][25]="1.030892287424556E-15"; + results[18][26]="2761217187.717842"; + results[18][27]="1.201792424198785E-20"; + results[18][28]="42584.16966993846"; + results[18][29]="2.051479253945588E-25"; + results[18][30]="0.09597287597629022"; + results[18][31]="2.503084462677351E-30"; + results[18][32]="0.000001951178952741667"; + results[18][33]="1.077042579842804E-35"; + results[18][34]="5.161955100297903E-11"; + results[18][35]="1.267143998476655E-19"; + results[18][36]="26701013635925.91"; + results[18][37]="1.072103733584393E-24"; + results[18][38]="130676496.9625801"; + results[18][39]="1.142646350007201E-29"; + results[18][40]="2369.279991396404"; + results[18][41]="1.829357320634491E-34"; + results[18][42]="0.008556353703430740"; + results[18][43]="3.300097791720419E-39"; + results[18][44]="2.247686068829500E-7"; + results[18][45]="2.894684986776169E-23"; + results[18][46]="1.576037207601508E+17"; + results[18][47]="1.052292354943532E-28"; + results[18][48]="1305052989855.606"; + results[18][49]="4.456527402140359E-33"; + results[18][50]="43982170.77425067"; + results[18][51]="1.109267627921080E-38"; + results[18][52]="788.1090124044157"; + results[18][53]="2.310610405611983E-43"; + results[18][54]="0.003213997503388622"; + results[18][55]="1.170254189364097E-27"; + results[18][56]="1.350878065804859E+21"; + results[18][57]="1.173778768423119E-32"; + results[18][58]="1.079739448362558E+16"; + results[18][59]="2.303133994597421E-37"; + results[18][60]="557702197494.3356"; + results[18][61]="1.064667839526379E-42"; + results[18][62]="3987246.522684476"; + results[18][63]="9.055394857668533E-48"; + results[18][64]="41.66241636065038"; + results[18][65]="9.824799832280163E-32"; + results[18][66]="8.758915400977171E+24"; + results[18][67]="3.171458016398266E-36"; + results[18][68]="1.868587723561991E+20"; + results[18][69]="1.408611540154202E-41"; + results[18][70]="1371970909543155"; + results[18][71]="8.608435668627840E-47"; + results[18][72]="33439543683.80610"; + results[18][73]="1.631204970184925E-51"; + results[18][74]="93392.75793813131"; + results[19][0]="8.888113441495055E+18"; + results[19][1]="19543904603925.69"; + results[19][2]="438502104.0583787"; + results[19][3]="5113.412812236528"; + results[19][4]="0.03568999661175253"; + results[19][5]="111350575123317.2"; + results[19][6]="6.919928399829436E+22"; + results[19][7]="1067845070.589050"; + results[19][8]="1.020127801336300E+17"; + results[19][9]="9953.842006398556"; + results[19][10]="3632717407172.463"; + results[19][11]="0.1206221462014772"; + results[19][12]="16196271.92208414"; + results[19][13]="0.000001517630563767670"; + results[19][14]="122.0287109807536"; + results[19][15]="13108888844.25527"; + results[19][16]="1.505949921515530E+26"; + results[19][17]="155147.8848067927"; + results[19][18]="1.181888093857317E+21"; + results[19][19]="1"; + results[19][20]="3.999602268583552E+16"; + results[19][21]="0.00001864503949527103"; + results[19][22]="229777070804.3422"; + results[19][23]="2.043511188520634E-10"; + results[19][24]="1217101.191764106"; + results[19][25]="1218399.320556418"; + results[19][26]="3.263449718717902E+30"; + results[19][27]="14.20384157448466"; + results[19][28]="5.032972311970014E+25"; + results[19][29]="0.0002424618905033581"; + results[19][30]="1.134291994496223E+20"; + results[19][31]="2.958365724357601E-9"; + results[19][32]="2306075173230364"; + results[19][33]="1.272943801693578E-14"; + results[19][34]="61008532740.68144"; + results[19][35]="149.7622405002312"; + results[19][36]="3.155761011022271E+34"; + results[19][37]="0.001267106638103371"; + results[19][38]="1.544449959070552E+29"; + results[19][39]="1.350480116563032E-8"; + results[19][40]="2.800223812845777E+24"; + results[19][41]="2.162095636668628E-13"; + results[19][42]="1.011265256891675E+19"; + results[19][43]="3.900346288599187E-18"; + results[19][44]="265651340347854.4"; + results[19][45]="0.03421193721338280"; + results[19][46]="1.862699611140355E+38"; + results[19][47]="1.243691805564838E-7"; + results[19][48]="1.542426590563234E+33"; + results[19][49]="5.267116676538570E-12"; + results[19][50]="5.198200398008612E+28"; + results[19][51]="1.311030202341272E-17"; + results[19][52]="9.314566584224275E+23"; + results[19][53]="2.730882927935629E-22"; + results[19][54]="3.798585382942154E+18"; + results[19][55]="0.000001383109493196072"; + results[19][56]="1.596586702227764E+42"; + results[19][57]="1.387275151221789E-11"; + results[19][58]="1.276131198487774E+37"; + results[19][59]="2.722046646772734E-16"; + results[19][60]="6.591415871366172E+32"; + results[19][61]="1.258318243449020E-21"; + results[19][62]="4.712479192434771E+27"; + results[19][63]="1.070246336745521E-26"; + results[19][64]="4.924031385797897E+22"; + results[19][65]="1.161181394630329E-10"; + results[19][66]="1.035205782751841E+46"; + results[19][67]="3.748308469749455E-15"; + results[19][68]="2.208461582805865E+41"; + results[19][69]="1.664821208178269E-20"; + results[19][70]="1.621516083107649E+36"; + results[19][71]="1.017420762348790E-25"; + results[19][72]="3.952179854391208E+31"; + results[19][73]="1.927901732902443E-30"; + results[19][74]="1.103797886595758E+26"; + results[20][0]="222.2249324966694"; + results[20][1]="0.0004886462025847162"; + results[20][2]="1.096364274774934E-8"; + results[20][3]="1.278480326006873E-13"; + results[20][4]="8.923386430719285E-19"; + results[20][5]="0.002784041203245736"; + results[20][6]="1730154.134120969"; + results[20][7]="2.669878150077217E-8"; + results[20][8]="2.550573114105107"; + results[20][9]="2.488707960935246E-13"; + results[20][10]="0.00009082696636380747"; + results[20][11]="3.015853529960997E-18"; + results[20][12]="4.049470630943514E-10"; + results[20][13]="3.794453702780639E-23"; + results[20][14]="3.051021146259370E-15"; + results[20][15]="3.277548107026588E-7"; + results[20][16]="3765249193.262553"; + results[20][17]="3.879082828446787E-12"; + results[20][18]="29550.14060125232"; + results[20][19]="2.500248606854969E-17"; + results[20][20]="1"; + results[20][21]="4.661723402280728E-22"; + results[20][22]="0.000005744998011657722"; + results[20][23]="5.109286002191258E-27"; + results[20][24]="3.043055559109729E-11"; + results[20][25]="3.046301203814225E-11"; + results[20][26]="81594356127656.76"; + results[20][27]="3.551313510859396E-16"; + results[20][28]="1258368201.134266"; + results[20][29]="6.062150039464433E-21"; + results[20][30]="2836.011979005927"; + results[20][31]="7.396649780892585E-26"; + results[20][32]="0.05765761239172050"; + results[20][33]="3.182675966789038E-31"; + results[20][34]="0.000001525364989911545"; + results[20][35]="3.744428331701820E-15"; + results[20][36]="7.890187071375662E+17"; + results[20][37]="3.168081606654638E-20"; + results[20][38]="3861508858523.363"; + results[20][39]="3.376536030022057E-25"; + results[20][40]="70012556.86949763"; + results[20][41]="5.405776603467944E-30"; + results[20][42]="252.8414549704244"; + results[20][43]="9.751835374322068E-35"; + results[20][44]="0.006641943936138782"; + results[20][45]="8.553834835557002E-19"; + results[20][46]="4.657212107742966E+21"; + results[20][47]="3.109538704220428E-24"; + results[20][48]="3.856449934231786E+16"; + results[20][49]="1.316910113265814E-28"; + results[20][50]="1299679330327.398"; + results[20][51]="3.277901436948555E-34"; + results[20][52]="23288732.12566459"; + results[20][53]="6.827886236055077E-39"; + results[20][54]="94.97407811720772"; + results[20][55]="3.458117583491362E-23"; + results[20][56]="3.991863677968137E+25"; + results[20][57]="3.468532764166796E-28"; + results[20][58]="3.190645251183220E+20"; + results[20][59]="6.805793336387770E-33"; + results[20][60]="1.648017834958501E+16"; + results[20][61]="3.146108435163604E-38"; + results[20][62]="117823695357.1807"; + results[20][63]="2.675881912439624E-43"; + results[20][64]="1231130.261245134"; + results[20][65]="2.903242164230390E-27"; + results[20][66]="2.588271816133498E+29"; + results[20][67]="9.371703029553756E-32"; + results[20][68]="5.521702995703085E+24"; + results[20][69]="4.162466906410325E-37"; + results[20][70]="4.054193327782826E+19"; + results[20][71]="2.543804843647882E-42"; + results[20][72]="988143217498189.4"; + results[20][73]="4.820233621842614E-47"; + results[20][74]="2759769128.210504"; + results[21][0]="4.767012396916274E+23"; + results[21][1]="1.048209343234839E+18"; + results[21][2]="23518432565916.35"; + results[21][3]="274250575.5235032"; + results[21][4]="1914.181872385126"; + results[21][5]="5.972128680744241E+18"; + results[21][6]="3.711404527506926E+27"; + results[21][7]="57272341571595.42"; + results[21][8]="5.471309415005725E+21"; + results[21][9]="533860065.5108917"; + results[21][10]="1.948355973230217E+17"; + results[21][11]="6469.396121798011"; + results[21][12]="868663857010.9776"; + results[21][13]="0.08139594255901624"; + results[21][14]="6544835.210014115"; + results[21][15]="703076485709783.2"; + results[21][16]="8.076946803451319E+30"; + results[21][17]="8321134682.827734"; + results[21][18]="6.338887585392785E+25"; + results[21][19]="53633.56834152223"; + results[21][20]="2.145129416109833E+21"; + results[21][21]="1"; + results[21][22]="1.232376423029948E+16"; + results[21][23]="0.00001096007969861868"; + results[21][24]="65277479947.02833"; + results[21][25]="65347103226.32689"; + results[21][26]="1.750304535179781E+35"; + results[21][27]="761802.7077972777"; + results[21][28]="2.699362644550329E+30"; + results[21][29]="13.00409637452654"; + results[21][30]="6.083612720605475E+24"; + results[21][31]="0.0001586677102565503"; + results[21][32]="1.236830404041385E+20"; + results[21][33]="6.827251838304966E-10"; + results[21][34]="3272105310163334"; + results[21][35]="8032283.360848641"; + results[21][36]="1.692547238541742E+39"; + results[21][37]="67.95945047071364"; + results[21][38]="8.283436242987168E+33"; + results[21][39]="0.0007243106762555027"; + results[21][40]="1.501859952378219E+29"; + results[21][41]="1.159609040901739E-8"; + results[21][42]="5.423776426690670E+23"; + results[21][43]="2.091894892251871E-13"; + results[21][44]="1.424782931756363E+19"; + results[21][45]="1834.908272629834"; + results[21][46]="9.990322689382312E+42"; + results[21][47]="0.006670362944955292"; + results[21][48]="8.272584195675434E+37"; + results[21][49]="2.824942622339028E-7"; + results[21][50]="2.787980362995230E+33"; + results[21][51]="7.031522795507035E-13"; + results[21][52]="4.995734434666519E+28"; + results[21][53]="1.464669961481319E-17"; + results[21][54]="2.037316887371354E+23"; + results[21][55]="0.07418109752713971"; + results[21][56]="8.563064200709839E+46"; + results[21][57]="7.440451663154942E-7"; + results[21][58]="6.844346984684270E+41"; + results[21][59]="1.459930748584969E-11"; + results[21][60]="3.535211536043119E+37"; + results[21][61]="6.748809750540721E-17"; + results[21][62]="2.527470748254518E+32"; + results[21][63]="5.740113004410473E-22"; + results[21][64]="2.640933738459919E+27"; + results[21][65]="0.000006227830168580984"; + results[21][66]="5.552178009675986E+50"; + results[21][67]="2.010351584774140E-10"; + results[21][68]="1.184476752310447E+46"; + results[21][69]="8.929030204524482E-16"; + results[21][70]="8.696769366023154E+40"; + results[21][71]="5.456790598951745E-21"; + results[21][72]="2.119695083184782E+36"; + results[21][73]="1.034002493473623E-25"; + results[21][74]="5.920061938596140E+30"; + results[22][0]="38681463.77870482"; + results[22][1]="85.05593937424482"; + results[22][2]="0.001908380599175486"; + results[22][3]="2.225379927743381E-8"; + results[22][4]="1.553244476779973E-13"; + results[22][5]="484.6026400002877"; + results[22][6]="301158352119.5565"; + results[22][7]="0.004647309093335652"; + results[22][8]="443964.1421858626"; + results[22][9]="4.331956174545530E-8"; + results[22][10]="15.80974722349805"; + results[22][11]="5.249529284155089E-13"; + results[22][12]="0.00007048689351547812"; + results[22][13]="6.604795502245522E-18"; + results[22][14]="5.310743606992122E-10"; + results[22][15]="0.05705046547232572"; + results[22][16]="655396082926770.0"; + results[22][17]="6.752104736286019E-7"; + results[22][18]="5143629387.040573"; + results[22][19]="4.352044338016266E-12"; + results[22][20]="174064.4640730606"; + results[22][21]="8.114403856748394E-17"; + results[22][22]="1"; + results[22][23]="8.893451297674116E-22"; + results[22][24]="0.000005296878350409827"; + results[22][25]="0.000005302527864470423"; + results[22][26]="1.420267787074702E+19"; + results[22][27]="6.181574830231600E-11"; + results[22][28]="219037186537017.3"; + results[22][29]="1.055204897749860E-15"; + results[22][30]="493648905.2304466"; + results[22][31]="1.287493880047189E-20"; + results[22][32]="10036.14140069709"; + results[22][33]="5.539907864773438E-26"; + results[22][34]="0.2655118394847626"; + results[22][35]="6.517719108176616E-10"; + results[22][36]="1.373401184015196E+23"; + results[22][37]="5.514504270020602E-15"; + results[22][38]="6.721514699722450E+17"; + results[22][39]="5.877349344891688E-20"; + results[22][40]="12186698189873.78"; + results[22][41]="9.409536073813374E-25"; + results[22][42]="44010712.35487979"; + results[22][43]="1.697447998160085E-29"; + results[22][44]="1156.126411647312"; + results[22][45]="1.488918676420706E-13"; + results[22][46]="8.106551296088482E+26"; + results[22][47]="5.412601880645680E-19"; + results[22][48]="6.712708910266456E+21"; + results[22][49]="2.292272530980073E-23"; + results[22][50]="2.262279861002728E+17"; + results[22][51]="5.705661569067654E-29"; + results[22][52]="4053740676394.876"; + results[22][53]="1.188492358430754E-33"; + results[22][54]="16531612.00830475"; + results[22][55]="6.019353838720512E-18"; + results[22][56]="6.948416117582402E+30"; + results[22][57]="6.037482967145447E-23"; + results[22][58]="5.553779556944628E+25"; + results[22][59]="1.184646769690344E-27"; + results[22][60]="2.868613412248970E+21"; + results[22][61]="5.476256786824880E-33"; + results[22][62]="2.050891838745521E+16"; + results[22][63]="4.657759510115996E-38"; + results[22][64]="214296029127.7612"; + results[22][65]="5.053512913910754E-22"; + results[22][66]="4.505261465506844E+34"; + results[22][67]="1.631280465291153E-26"; + results[22][68]="9.611322727176706E+29"; + results[22][69]="7.245375712861636E-32"; + results[22][70]="7.056909888490957E+24"; + results[22][71]="4.427860268160242E-37"; + results[22][72]="1.720006195812521E+20"; + results[22][73]="8.390313820929822E-42"; + results[22][74]="480377734267339.0"; + results[23][0]="4.349432237720928E+28"; + results[23][1]="9.563884315247705E+22"; + results[23][2]="2.145826783438484E+18"; + results[23][3]="25022680771022.83"; + results[23][4]="174650360.6745100"; + results[23][5]="5.448982895167197E+23"; + results[23][6]="3.386293375197521E+32"; + results[23][7]="5.225540611608288E+18"; + results[23][8]="4.992034333194938E+26"; + results[23][9]="48709505787460.23"; + results[23][10]="1.777684128953709E+22"; + results[23][11]="590269076.4751797"; + results[23][12]="7.925707484777299E+16"; + results[23][13]="7426.583090383436"; + results[23][14]="597152154909.8750"; + results[23][15]="6.414884791379698E+19"; + results[23][16]="7.369423421683034E+35"; + results[23][17]="759222096156514.8"; + results[23][18]="5.783614498890633E+30"; + results[23][19]="4893538169.095777"; + results[23][20]="1.957220636251567E+26"; + results[23][21]="91240.21243440706"; + results[23][22]="1.124422866364071E+21"; + results[23][23]="1"; + results[23][24]="5955931137549612"; + results[23][25]="5962283580343192"; + results[23][26]="1.596981576147093E+40"; + results[23][27]="69507040892.53014"; + results[23][28]="2.462904211262749E+35"; + results[23][29]="1186496.515729304"; + results[23][30]="5.550701169967046E+29"; + results[23][31]="14.47687559028860"; + results[23][32]="1.128486688100694E+25"; + results[23][33]="0.00006229199080701412"; + results[23][34]="2.985475836070540E+20"; + results[23][35]="732867240177.1831"; + results[23][36]="1.544283695998176E+44"; + results[23][37]="6200634.697873477"; + results[23][38]="7.557824824970159E+38"; + results[23][39]="66.08625997006110"; + results[23][40]="1.370300211017172E+34"; + results[23][41]="0.001058029752327336"; + results[23][42]="4.948665133679859E+28"; + results[23][43]="1.908649343595118E-8"; + results[23][44]="1.299974973663679E+24"; + results[23][45]="167417420.5923969"; + results[23][46]="9.115191644675190E+47"; + results[23][47]="608.6053321123179"; + results[23][48]="7.547923393949451E+42"; + results[23][49]="0.02577483649772239"; + results[23][50]="2.543759205826400E+38"; + results[23][51]="6.415576335994377E-8"; + results[23][52]="4.558118710848557E+33"; + results[23][53]="1.336367984318503E-12"; + results[23][54]="1.858852255999673E+28"; + results[23][55]="6768.299096993695"; + results[23][56]="7.812957967622318E+51"; + results[23][57]="0.06788683903541942"; + results[23][58]="6.244796728573862E+46"; + results[23][59]="0.000001332043916404155"; + results[23][60]="3.225534515491407E+42"; + results[23][61]="6.157628353187331E-12"; + results[23][62]="2.306069679924920E+37"; + results[23][63]="5.237291299199141E-17"; + results[23][64]="2.409593553222759E+32"; + results[23][65]="0.5682285475867381"; + results[23][66]="5.065819010764803E+55"; + results[23][67]="0.00001834249056626394"; + results[23][68]="1.080719105044218E+51"; + results[23][69]="8.146866126940509E-11"; + results[23][70]="7.934950844489962E+45"; + results[23][71]="4.978787334584325E-16"; + results[23][72]="1.934014296859477E+41"; + results[23][73]="9.434260716223996E-21"; + results[23][74]="5.401477089023595E+35"; + results[24][0]="7302690607518.291"; + results[24][1]="16057748.30899485"; + results[24][2]="360.2840150232697"; + results[24][3]="0.004201304580784266"; + results[24][4]="2.932377098408908E-8"; + results[24][5]="91488346.14311905"; + results[24][6]="5.685581812469896E+16"; + results[24][7]="877.3675334597941"; + results[24][8]="83816186216.83326"; + results[24][9]="0.008178319168327438"; + results[24][10]="2984729.151326427"; + results[24][11]="9.910609488981233E-8"; + results[24][12]="13.30725171553627"; + results[24][13]="1.246922255961287E-12"; + results[24][14]="0.0001002617627905542"; + results[24][15]="10770.58253903672"; + results[24][16]="1.237325155628808E+20"; + results[24][17]="0.1274732831227585"; + results[24][18]="971068060613965.9"; + results[24][19]="8.216243700744122E-7"; + results[24][20]="32861706944.73151"; + results[24][21]="1.531921883031460E-11"; + results[24][22]="188790.4410571613"; + results[24][23]="1.678998593008280E-16"; + results[24][24]="1"; + results[24][25]="1.001066574251259"; + results[24][26]="2.681329819411114E+24"; + results[24][27]="0.00001167022238627271"; + results[24][28]="4.135212705424321E+19"; + results[24][29]="1.992125980518727E-10"; + results[24][30]="93196194545840.82"; + results[24][31]="2.430665374725046E-15"; + results[24][32]="1894727561.549639"; + results[24][33]="1.045881649206614E-20"; + results[24][34]="50126.09728222654"; + results[24][35]="0.0001230483065119351"; + results[24][36]="2.592850152786563E+28"; + results[24][37]="1.041085693348789E-9"; + results[24][38]="1.268957724732794E+23"; + results[24][39]="1.109587375069120E-14"; + results[24][40]="2.300732126296780E+18"; + results[24][41]="1.776430465518496E-19"; + results[24][42]="8308801796717.613"; + results[24][43]="3.204619562442379E-24"; + results[24][44]="218265615.1727291"; + results[24][45]="2.810936136197098E-8"; + results[24][46]="1.530439394641047E+32"; + results[24][47]="1.021847496313918E-13"; + results[24][48]="1.267295275857541E+27"; + results[24][49]="4.327591421469434E-18"; + results[24][50]="4.270968127534385E+22"; + results[24][51]="1.077174364147177E-23"; + results[24][52]="7.653074902279439E+17"; + results[24][53]="2.243759965412078E-28"; + results[24][54]="3121010322433.718"; + results[24][55]="1.136396466091162E-12"; + results[24][56]="1.311794543487070E+36"; + results[24][57]="1.139819072242488E-17"; + results[24][58]="1.048500492089822E+31"; + results[24][59]="2.236499861467814E-22"; + results[24][60]="5.415667913209714E+26"; + results[24][61]="1.033864934126942E-27"; + results[24][62]="3.871887747972994E+21"; + results[24][63]="8.793404722529862E-33"; + results[24][64]="4.045704185582832E+16"; + results[24][65]="9.540549319052715E-17"; + results[24][66]="8.505502991508699E+39"; + results[24][67]="3.079701585302480E-21"; + results[24][68]="1.814525856806408E+35"; + results[24][69]="1.367857676455993E-26"; + results[24][70]="1.332277130348850E+30"; + results[24][71]="8.359376929654525E-32"; + results[24][72]="3.247207283284959E+25"; + results[24][73]="1.584011046861337E-36"; + results[24][74]="9.069072432637074E+19"; + results[25][0]="7294910044299.792"; + results[25][1]="16040639.77563644"; + results[25][2]="359.9001547851519"; + results[25][3]="0.004196828351727361"; + results[25][4]="2.929252832762058E-8"; + results[25][5]="91390870.99331748"; + results[25][6]="5.679524178222003E+16"; + results[25][7]="876.4327528526417"; + results[25][8]="83726885276.85887"; + results[25][9]="0.008169605677269126"; + results[25][10]="2981549.107819164"; + results[25][11]="9.900050350191554E-8"; + results[25][12]="13.29307366544463"; + results[25][13]="1.245593737753071E-12"; + results[25][14]="0.0001001549401102962"; + results[25][15]="10759.10715238146"; + results[25][16]="1.236006862534849E+20"; + results[25][17]="0.1273374682578942"; + results[25][18]="970033447915559.5"; + results[25][19]="8.207489803452292E-7"; + results[25][20]="32826694837.26416"; + results[25][21]="1.530289715424023E-11"; + results[25][22]="188589.2965693774"; + results[25][23]="1.677209724302378E-16"; + results[25][24]="0.9989345621173533"; + results[25][25]="1"; + results[25][26]="2.678473029045643E+24"; + results[25][27]="0.00001165778848924346"; + results[25][28]="4.130806893155160E+19"; + results[25][29]="1.990003494032078E-10"; + results[25][30]="93096899789653.17"; + results[25][31]="2.428075651754777E-15"; + results[25][32]="1892708847.028269"; + results[25][33]="1.044767327276784E-20"; + results[25][34]="50072.69103927282"; + results[25][35]="0.0001229172061847818"; + results[25][36]="2.590087632009758E+28"; + results[25][37]="1.039976481212013E-9"; + results[25][38]="1.267605729101387E+23"; + results[25][39]="1.108405178645614E-14"; + results[25][40]="2.298280839131601E+18"; + results[25][41]="1.774537789204645E-19"; + results[25][42]="8299949284523.987"; + results[25][43]="3.201205239361082E-24"; + results[25][44]="218033066.7178449"; + results[25][45]="2.807941258351893E-8"; + results[25][46]="1.528808806532901E+32"; + results[25][47]="1.020758781281058E-13"; + results[25][48]="1.265945051462143E+27"; + results[25][49]="4.322980641628383E-18"; + results[25][50]="4.266417676295733E+22"; + results[25][51]="1.076026701773399E-23"; + results[25][52]="7.644921026359818E+17"; + results[25][53]="2.241369378545362E-28"; + results[25][54]="3117685079804.065"; + results[25][55]="1.135185706246483E-12"; + results[25][56]="1.310396907886189E+36"; + results[25][57]="1.138604665823557E-17"; + results[25][58]="1.047383379945576E+31"; + results[25][59]="2.234117009790872E-22"; + results[25][60]="5.409897855455146E+26"; + results[25][61]="1.032763415260583E-27"; + results[25][62]="3.867762492088947E+21"; + results[25][63]="8.784035896021034E-33"; + results[25][64]="4.041393739081530E+16"; + results[25][65]="9.530384456386937E-17"; + results[25][66]="8.496440906410580E+39"; + results[25][67]="3.076420354566251E-21"; + results[25][68]="1.812592592219525E+35"; + results[25][69]="1.366400309069427E-26"; + results[25][70]="1.330857671823993E+30"; + results[25][71]="8.350470532798348E-32"; + results[25][72]="3.243747585632540E+25"; + results[25][73]="1.582323381485480E-36"; + results[25][74]="9.059409899306875E+19"; + results[26][0]="2.723533134436308E-12"; + results[26][1]="5.988725516997952E-18"; + results[26][2]="1.343676605597132E-22"; + results[26][3]="1.566873478364917E-27"; + results[26][4]="1.093627899552070E-32"; + results[26][5]="3.412051194925813E-17"; + results[26][6]="2.120433589075808E-8"; + results[26][7]="3.272135815251872E-22"; + results[26][8]="3.125918550193178E-14"; + results[26][9]="3.050098167380094E-27"; + results[26][10]="1.113152559494507E-18"; + results[26][11]="3.696154578685082E-32"; + results[26][12]="4.962929819077190E-24"; + results[26][13]="4.650387456755103E-37"; + results[26][14]="3.739255128732137E-29"; + results[26][15]="4.016880900314683E-21"; + results[26][16]="0.00004614595141080237"; + results[26][17]="4.754106794320244E-26"; + results[26][18]="3.621591247686330E-10"; + results[26][19]="3.064242094077263E-31"; + results[26][20]="1.225574963096063E-14"; + results[26][21]="5.713291486714258E-36"; + results[26][22]="7.040925726124371E-20"; + results[26][23]="6.261813003582785E-41"; + results[26][24]="3.729492704555177E-25"; + results[26][25]="3.733470485444113E-25"; + results[26][26]="1"; + results[26][27]="4.352400925014057E-30"; + results[26][28]="0.00001542224561666388"; + results[26][29]="7.429619310899423E-35"; + results[26][30]="3.475745276510183E-11"; + results[26][31]="9.065148782251936E-40"; + results[26][32]="7.066372617918999E-16"; + results[26][33]="3.900607980544203E-45"; + results[26][34]="1.869449141218870E-20"; + results[26][35]="4.589077614441313E-29"; + results[26][36]="9670.015728822264"; + results[26][37]="3.882721498161075E-34"; + results[26][38]="0.04732568576779893"; + results[26][39]="4.138198020386811E-39"; + results[26][40]="8.580563680159561E-7"; + results[26][41]="6.625184461300789E-44"; + results[26][42]="3.098761568445328E-12"; + results[26][43]="1.195160527900366E-48"; + results[26][44]="8.140200194419411E-17"; + results[26][45]="1.048336581291759E-32"; + results[26][46]="57077625.57077626"; + results[26][47]="3.810972782670732E-38"; + results[26][48]="472.6368485827938"; + results[26][49]="1.613972063466582E-42"; + results[26][50]="0.01592854447302717"; + results[26][51]="4.017313932620759E-48"; + results[26][52]="2.854208701546549E-7"; + results[26][53]="8.368086421777320E-53"; + results[26][54]="1.163978522835795E-12"; + results[26][55]="4.238182329769274E-37"; + results[26][56]="489232817981.0316"; + results[26][57]="4.250946914441208E-42"; + results[26][58]="3910374.935971505"; + results[26][59]="8.341009917082876E-47"; + results[26][60]="201.9769397260919"; + results[26][61]="3.855791729321848E-52"; + results[26][62]="0.001444017710892185"; + results[26][63]="3.279493876087616E-57"; + results[26][64]="1.508842424491952E-8"; + results[26][65]="3.558140908285596E-41"; + results[26][66]="3172121135540393"; + results[26][67]="1.148572459459261E-45"; + results[26][68]="67672609451.86232"; + results[26][69]="5.101415225212420E-51"; + results[26][70]="496871.7838081744"; + results[26][71]="3.117623527377340E-56"; + results[26][72]="12.11043587318969"; + results[26][73]="5.907557643204166E-61"; + results[26][74]="0.00003382303947460244"; + results[27][0]="6.257541943766386E+17"; + results[27][1]="1375959067231.062"; + results[27][2]="30872077.93461244"; + results[27][3]="360.0021012218345"; + results[27][4]="0.002512700273696726"; + results[27][5]="7839468959112.017"; + results[27][6]="4.871871010065461E+21"; + results[27][7]="75180018.37666884"; + results[27][8]="7182055614931850"; + results[27][9]="700.7852033691596"; + results[27][10]="255755978980.9374"; + results[27][11]="0.008492219908884301"; + results[27][12]="1140274.047492801"; + results[27][13]="1.068464862698761E-7"; + results[27][14]="8.591246976449121"; + results[27][15]="922911507.8137501"; + results[27][16]="1.060241283048926E+25"; + results[27][17]="10922.95235716340"; + results[27][18]="8.320904507836979E+19"; + results[27][19]="0.07040348871507895"; + results[27][20]="2815859531810263"; + results[27][21]="0.000001312675827697515"; + results[27][22]="16177107411.35740"; + results[27][23]="1.438703169001500E-11"; + results[27][24]="85688.17001947338"; + results[27][25]="85779.56281525363"; + results[27][26]="2.297582454439834E+29"; + results[27][27]="1"; + results[27][28]="3.543388093690857E+24"; + results[27][29]="0.00001707016297188988"; + results[27][30]="7.985811363411926E+18"; + results[27][31]="2.082792678898868E-10"; + results[27][32]="162355737434647.7"; + results[27][33]="8.961968457746355E-16"; + results[27][34]="4295213546.332090"; + results[27][35]="10.54378420900297"; + results[27][36]="2.221765847269926E+33"; + results[27][37]="0.00008920872789651233"; + results[27][38]="1.087346652644278E+28"; + results[27][39]="9.507851164638391E-10"; + results[27][40]="1.971455256073830E+23"; + results[27][41]="1.522190757571212E-14"; + results[27][42]="7.119660210152448E+17"; + results[27][43]="2.745979859142930E-19"; + results[27][44]="18702781142325.76"; + results[27][45]="0.002408639735523385"; + results[27][46]="1.311405510525019E+37"; + results[27][47]="8.756024199812025E-9"; + results[27][48]="1.085922130625564E+32"; + results[27][49]="3.708233894976874E-13"; + results[27][50]="3.659714430599182E+27"; + results[27][51]="9.230110005566145E-19"; + results[27][52]="6.557779833982852E+22"; + results[27][53]="1.922636853991178E-23"; + results[27][54]="2.674336631412318E+17"; + results[27][55]="9.737573359594823E-8"; + results[27][56]="1.124052738729375E+41"; + results[27][57]="9.766901045375269E-13"; + results[27][58]="8.984408843169418E+35"; + results[27][59]="1.916415803779827E-17"; + results[27][60]="4.640586729161206E+31"; + results[27][61]="8.858999425264104E-23"; + results[27][62]="3.317749756446258E+26"; + results[27][63]="7.534907589141790E-28"; + results[27][64]="3.466689881027168E+21"; + results[27][65]="8.175122121301600E-12"; + results[27][66]="7.288209864375369E+44"; + results[27][67]="2.638939930506406E-16"; + results[27][68]="1.554834001227581E+40"; + results[27][69]="1.172092211426029E-21"; + results[27][70]="1.141603892583884E+35"; + results[27][71]="7.162997116051003E-27"; + results[27][72]="2.782472497785938E+30"; + results[27][73]="1.357310078961783E-31"; + results[27][74]="7.771122205267246E+24"; + results[28][0]="1.765977019256848E-7"; + results[28][1]="3.883173479306462E-13"; + results[28][2]="8.712587252178613E-18"; + results[28][3]="1.015982702721253E-22"; + results[28][4]="7.091236430383361E-28"; + results[28][5]="2.212421770302413E-12"; + results[28][6]="0.001374918829450271"; + results[28][7]="2.121698679027844E-17"; + results[28][8]="2.026889357030855E-9"; + results[28][9]="1.977726359178481E-22"; + results[28][10]="7.217837059291388E-14"; + results[28][11]="2.396638382345144E-27"; + results[28][12]="3.218033185591791E-19"; + results[28][13]="3.015376341646586E-32"; + results[28][14]="2.424585382489199E-24"; + results[28][15]="2.604601820097072E-16"; + results[28][16]="2.992168102999295"; + results[28][17]="3.082629412401127E-21"; + results[28][18]="0.00002348290474490412"; + results[28][19]="1.986897479292069E-26"; + results[28][20]="7.946799665619501E-10"; + results[28][21]="3.704578197445509E-31"; + results[28][22]="4.565434827802628E-15"; + results[28][23]="4.060247229376789E-36"; + results[28][24]="2.418255289959476E-20"; + results[28][25]="2.420834538784717E-20"; + results[28][26]="64841.40019917012"; + results[28][27]="2.822157702060747E-25"; + results[28][28]="1"; + results[28][29]="4.817469190655120E-30"; + results[28][30]="0.000002253721904645720"; + results[28][31]="5.877969400550175E-35"; + results[28][32]="4.581934948749433E-11"; + results[28][33]="2.529208830865435E-40"; + results[28][34]="1.212176999177676E-15"; + results[28][35]="2.975622181430421E-24"; + results[28][36]="627017359.8048342"; + results[28][37]="2.517610985241837E-29"; + results[28][38]="3068.663730570020"; + results[28][39]="2.683265539433148E-34"; + results[28][40]="0.05563757635196901"; + results[28][41]="4.295862370485278E-39"; + results[28][42]="2.009280389813716E-7"; + results[28][43]="7.749588209183903E-44"; + results[28][44]="5.278219785077115E-12"; + results[28][45]="6.797561181096882E-28"; + results[28][46]="3700993162053.089"; + results[28][47]="2.471088113492979E-33"; + results[28][48]="30646435.04783151"; + results[28][49]="1.046522084775171E-37"; + results[28][50]="1032.829126765834"; + results[28][51]="2.604882604307646E-43"; + results[28][52]="0.01850708886689335"; + results[28][53]="5.425984405757048E-48"; + results[28][54]="7.547399722243467E-8"; + results[28][55]="2.748096765616207E-32"; + results[28][56]="3.172254094127582E+16"; + results[28][57]="2.756373501047097E-37"; + results[28][58]="253554186152.1326"; + results[28][59]="5.408427620988176E-42"; + results[28][60]="13096467.57978319"; + results[28][61]="2.500149346056082E-47"; + results[28][62]="93.63213028664973"; + results[28][63]="2.126469748701247E-52"; + results[28][64]="0.0009783545548396877"; + results[28][65]="2.307148385991850E-36"; + results[28][66]="2.056847760298206E+20"; + results[28][67]="7.447504650154305E-41"; + results[28][68]="4387986751990347"; + results[28][69]="3.307829062001381E-46"; + results[28][70]="32217862181.58138"; + results[28][71]="2.021510748090225E-51"; + results[28][72]="785257.6190398789"; + results[28][73]="3.830543093426676E-56"; + results[28][74]="2.193133238525025"; + results[29][0]="3.665777505505325E+22"; + results[29][1]="8.060608850055552E+16"; + results[29][2]="1808540315956.603"; + results[29][3]="21089552.67824123"; + results[29][4]="147.1983763619884"; + results[29][5]="4.592498016581085E+17"; + results[29][6]="2.854027239276019E+26"; + results[29][7]="4404176954869.778"; + results[29][8]="4.207373782405491E+20"; + results[29][9]="41053222.77960500"; + results[29][10]="1.498263252683064E+16"; + results[29][11]="497.4890938574387"; + results[29][12]="66799247867.20172"; + results[29][13]="0.006259254023867518"; + results[29][14]="503290.2726585955"; + results[29][15]="54065770158934.34"; + results[29][16]="6.211078856100365E+29"; + results[29][17]="639885651.6572606"; + results[29][18]="4.874531380596274E+24"; + results[29][19]="4124.359493873326"; + results[29][20]="1.649579758814986E+20"; + results[29][21]="0.07689884565596421"; + results[29][22]="947683243446292.2"; + results[29][23]="8.428174771211442E-7"; + results[29][24]="5019762855.256830"; + results[29][25]="5025116805.065672"; + results[29][26]="1.345963983017241E+34"; + results[29][27]="58581.74884719846"; + results[29][28]="2.075778713727511E+29"; + results[29][29]="1"; + results[29][30]="4.678227956325009E+23"; + results[29][31]="0.00001220136376160371"; + results[29][32]="9.511083034298228E+18"; + results[29][33]="5.250077853682115E-11"; + results[29][34]="251621121216311.1"; + results[29][35]="617673.3184308691"; + results[29][36]="1.301549288620499E+38"; + results[29][37]="5.226003292611552"; + results[29][38]="6.369866851504902E+32"; + results[29][39]="0.00005569865490033896"; + results[29][40]="1.154912966748064E+28"; + results[29][41]="8.917259665756348E-10"; + results[29][42]="4.170821463085429E+22"; + results[29][43]="1.608643024477765E-14"; + results[29][44]="1.095641627623847E+18"; + results[29][45]="141.1023280498135"; + results[29][46]="7.682442825440876E+41"; + results[29][47]="0.0005129432105733799"; + results[29][48]="6.361521752392140E+36"; + results[29][49]="2.172348267022037E-8"; + results[29][50]="2.143924716258292E+32"; + results[29][51]="5.407159861780895E-14"; + results[29][52]="3.841662112296063E+27"; + results[29][53]="1.126314293048790E-18"; + results[29][54]="1.566673168742592E+22"; + results[29][55]="0.005704440769329544"; + results[29][56]="6.584897523124984E+45"; + results[29][57]="5.721621440556141E-8"; + results[29][58]="5.263223823910997E+40"; + results[29][59]="1.122669893038318E-12"; + results[29][60]="2.718536862713640E+36"; + results[29][61]="5.189756793682972E-18"; + results[29][62]="1.943595829699885E+31"; + results[29][63]="4.414080639739539E-23"; + results[29][64]="2.030847559414579E+26"; + results[29][65]="4.789129509052666E-7"; + results[29][66]="4.269560798205122E+49"; + results[29][67]="1.545937162317696E-11"; + results[29][68]="9.108489495899883E+44"; + results[29][69]="6.866321155551707E-17"; + results[29][70]="6.687715251833322E+39"; + results[29][71]="4.196208980457067E-22"; + results[29][72]="1.630021050395328E+35"; + results[29][73]="7.951359815351027E-27"; + results[29][74]="4.552459292898528E+29"; + results[30][0]="0.07835824888672127"; + results[30][1]="1.723004720015306E-7"; + results[30][2]="3.865866163087327E-12"; + results[30][3]="4.508021600300163E-17"; + results[30][4]="3.146455831913338E-22"; + results[30][5]="9.816746980813501E-7"; + results[30][6]="610.0658766354783"; + results[30][7]="9.414199128358610E-12"; + results[30][8]="0.0008993520242460782"; + results[30][9]="8.775378874836710E-17"; + results[30][10]="3.202629856156106E-8"; + results[30][11]="1.063413537138199E-21"; + results[30][12]="1.427875009316049E-13"; + results[30][13]="1.337954046340334E-26"; + results[30][14]="1.075813913638266E-18"; + results[30][15]="1.155689091332903E-10"; + results[30][16]="1327656.307919525"; + results[30][17]="1.367794937807870E-15"; + results[30][18]="10.41961064339727"; + results[30][19]="8.816072094770739E-21"; + results[30][20]="0.0003526078195024119"; + results[30][21]="1.643760124001572E-25"; + results[30][22]="2.025731221936322E-9"; + results[30][23]="1.801574196446855E-30"; + results[30][24]="1.073005185322375E-14"; + results[30][25]="1.074149625024506E-14"; + results[30][26]="28770807997.87632"; + results[30][27]="1.252220913433587E-19"; + results[30][28]="443710.4675331262"; + results[30][29]="2.137561506912014E-24"; + results[30][30]="1"; + results[30][31]="2.608116550863527E-29"; + results[30][32]="0.00002033052498315981"; + results[30][33]="1.122236432832213E-34"; + results[30][34]="5.378556230380286E-10"; + results[30][35]="1.320314709324433E-18"; + results[30][36]="278214165870389.4"; + results[30][37]="1.117090347328190E-23"; + results[30][38]="1361598218.593171"; + results[30][39]="1.190593007017408E-28"; + results[30][40]="24686.97501554217"; + results[30][41]="1.906119100865986E-33"; + results[30][42]="0.08915387411693861"; + results[30][43]="3.438573407486192E-38"; + results[30][44]="0.000002342001368579163"; + results[30][45]="3.016149049749527E-22"; + results[30][46]="1.642169406271479E+18"; + results[30][47]="1.096447662153521E-27"; + results[30][48]="13598144023296.90"; + results[30][49]="4.643528035193328E-32"; + results[30][50]="458277094.7190988"; + results[30][51]="1.155813678226253E-37"; + results[30][52]="8211.789053806363"; + results[30][53]="2.407566077505911E-42"; + results[30][54]="0.03348860259416035"; + results[30][55]="1.219359300697839E-26"; + results[30][56]="1.407562347239223E+22"; + results[30][57]="1.223031774845527E-31"; + results[30][58]="1.125046464825440E+17"; + results[30][59]="2.399775948327737E-36"; + results[30][60]="5811039752858.027"; + results[30][61]="1.109342435241184E-41"; + results[30][62]="41545556.30561193"; + results[30][63]="9.435368863912798E-47"; + results[30][64]="434.1061569410814"; + results[30][65]="1.023705889016741E-30"; + results[30][66]="9.126448813663803E+25"; + results[30][67]="3.304535770275098E-35"; + results[30][68]="1.946995653254801E+21"; + results[30][69]="1.467718379620295E-40"; + results[30][70]="1.429540269150730E+16"; + results[30][71]="8.969654791583536E-46"; + results[30][72]="348427025278.1341"; + results[30][73]="1.699652066890138E-50"; + results[30][74]="973116.1746283781"; + results[31][0]="3.004399817208225E+27"; + results[31][1]="6.606317955556214E+21"; + results[31][2]="1.482244404226248E+17"; + results[31][3]="1728458645303.865"; + results[31][4]="12064092.11609646"; + results[31][5]="3.763921891283291E+22"; + results[31][6]="2.339105115657083E+31"; + results[31][7]="3.609577618470172E+17"; + results[31][8]="3.448281572954666E+25"; + results[31][9]="3364642148346.955"; + results[31][10]="1.227947368799811E+21"; + results[31][11]="40773236.79365905"; + results[31][12]="5474736199359228"; + results[31][13]="512.9962638737704"; + results[31][14]="41248690104.82190"; + results[31][15]="4.431125177094802E+18"; + results[31][16]="5.090479209910875E+34"; + results[31][17]="52443781216564.26"; + results[31][18]="3.995070941115503E+29"; + results[31][19]="338024467.9576074"; + results[31][20]="1.351963428879995E+25"; + results[31][21]="6302.479555437567"; + results[31][22]="7.767027210749525E+19"; + results[31][23]="0.06907567822651053"; + results[31][24]="411409982796631.8"; + results[31][25]="411848782090993.5"; + results[31][26]="1.103125854876022E+39"; + results[31][27]="4801245991.169322"; + results[31][28]="1.701267787999033E+34"; + results[31][29]="81958.05153739330"; + results[31][30]="3.834184479481592E+28"; + results[31][31]="1"; + results[31][32]="7.795098335014412E+23"; + results[31][33]="0.000004302861513074059"; + results[31][34]="2.062237682054311E+19"; + results[31][35]="50623301665.22991"; + results[31][36]="1.066724436752164E+43"; + results[31][37]="428313.0471904447"; + results[31][38]="5.220618757019720E+37"; + results[31][39]="4.564953228885464"; + results[31][40]="9.465441644994164E+32"; + results[31][41]="0.00007308412272583773"; + results[31][42]="3.418324004248217E+27"; + results[31][43]="1.318412479054169E-9"; + results[31][44]="8.979665298330876E+22"; + results[31][45]="11564471.87435279"; + results[31][46]="6.296380450205607E+46"; + results[31][47]="42.03982608792905"; + results[31][48]="5.213779276388035E+41"; + results[31][49]="0.001780414312257591"; + results[31][50]="1.757118923873884E+37"; + results[31][51]="4.431602866227630E-9"; + results[31][52]="3.148551413888119E+32"; + results[31][53]="9.231052487699542E-14"; + results[31][54]="1.284014803060566E+27"; + results[31][55]="467.5248505647183"; + results[31][56]="5.396853705687309E+50"; + results[31][57]="0.004689329449025547"; + results[31][58]="4.313635694129337E+45"; + results[31][59]="9.201183695311428E-8"; + results[31][60]="2.228059843005880E+41"; + results[31][61]="4.253423547632060E-13"; + results[31][62]="1.592933271784059E+36"; + results[31][63]="3.617694485619832E-18"; + results[31][64]="1.664443089390894E+31"; + results[31][65]="0.03925077231221895"; + results[31][66]="3.499248839413294E+54"; + results[31][67]="0.000001267019976228053"; + results[31][68]="7.465140515327681E+49"; + results[31][69]="5.627503031390007E-12"; + results[31][70]="5.481121112771666E+44"; + results[31][71]="3.439131118819729E-17"; + results[31][72]="1.335933492553362E+40"; + results[31][73]="6.516779575388975E-22"; + results[31][74]="3.731106933492626E+34"; + results[32][0]="3854.216698861785"; + results[32][1]="0.008474964229612891"; + results[32][2]="1.901508281900985E-7"; + results[32][3]="2.217366056230347E-12"; + results[32][4]="1.547651049109460E-17"; + results[32][5]="0.04828575252702482"; + results[32][6]="30007384.32189076"; + results[32][7]="4.630573551915940E-7"; + results[32][8]="44.23653717702960"; + results[32][9]="4.316356258436777E-12"; + results[32][10]="0.001575281434595963"; + results[32][11]="5.230625072490977E-17"; + results[32][12]="7.023306139407549E-9"; + results[32][13]="6.581010807387358E-22"; + results[32][14]="5.291618954893612E-14"; + results[32][15]="0.000005684501960919277"; + results[32][16]="65303591964.26306"; + results[32][17]="6.727789562447809E-11"; + results[32][18]="512510.6534153962"; + results[32][19]="4.336372081917841E-16"; + results[32][20]="17.34376361626097"; + results[32][21]="8.085182873354881E-21"; + results[32][22]="0.00009963988749008084"; + results[32][23]="8.861424866987624E-26"; + results[32][24]="5.277803628834801E-10"; + results[32][25]="5.283432798288516E-10"; + results[32][26]="1415153225099094"; + results[32][27]="6.159314205957922E-15"; + results[32][28]="21824840622.69226"; + results[32][29]="1.051404972907783E-19"; + results[32][30]="49187.12137676328"; + results[32][31]="1.282857453520695E-24"; + results[32][32]="1"; + results[32][33]="5.519957963514394E-30"; + results[32][34]="0.00002645556981354615"; + results[32][35]="6.494247986306681E-14"; + results[32][36]="1.368455394540179E+19"; + results[32][37]="5.494645850284232E-19"; + results[32][38]="66973096844326.95"; + results[32][39]="5.856184274649082E-24"; + results[32][40]="1214281236.514595"; + results[32][41]="9.375651157286216E-29"; + results[32][42]="4385.222427398534"; + results[32][43]="1.691335275569338E-33"; + results[32][44]="0.1151963055808490"; + results[32][45]="1.483556894004392E-17"; + results[32][46]="8.077358590748254E+22"; + results[32][47]="5.393110424161355E-23"; + results[32][48]="6.688535605726128E+17"; + results[32][49]="2.284017770834574E-27"; + results[32][50]="22541331082138.75"; + results[32][51]="5.685114767983791E-33"; + results[32][52]="403914264.9099497"; + results[32][53]="1.184212448768611E-37"; + results[32][54]="1647.207960537155"; + results[32][55]="5.997677392530980E-22"; + results[32][56]="6.923394001901749E+26"; + results[32][57]="6.015741235696518E-27"; + results[32][58]="5.533779701986738E+21"; + results[32][59]="1.180380708474336E-31"; + results[32][60]="2.858283176490243E+17"; + results[32][61]="5.456536101060227E-37"; + results[32][62]="2043506320669.287"; + results[32][63]="4.640986335438119E-42"; + results[32][64]="21352432.23186122"; + results[32][65]="5.035314581717381E-26"; + results[32][66]="4.489037455364987E+30"; + results[32][67]="1.625406020263772E-30"; + results[32][68]="9.576711151667440E+25"; + results[32][69]="7.219284208528977E-36"; + results[32][70]="7.031497073168779E+20"; + results[32][71]="4.411914989412857E-41"; + results[32][72]="1.713812238330015E+16"; + results[32][73]="8.360099251239178E-46"; + results[32][74]="47864783395.13761"; + results[33][0]="6.982329800946383E+32"; + results[33][1]="1.535331298830604E+27"; + results[33][2]="3.444787613364996E+22"; + results[33][3]="4.016998083837972E+17"; + results[33][4]="2803737019990.124"; + results[33][5]="8.747485550828852E+27"; + results[33][6]="5.436161746200319E+36"; + results[33][7]="8.388784085898711E+22"; + results[33][8]="8.013926459118452E+30"; + results[33][9]="7.819545523655909E+17"; + results[33][10]="2.853792447348690E+26"; + results[33][11]="9475842220292.549"; + results[33][12]="1.272347758049958E+21"; + results[33][13]="119222118.1915926"; + results[33][14]="9586339225533875"; + results[33][15]="1.029808922186089E+24"; + results[33][16]="1.183045095558775E+40"; + results[33][17]="1.218811738588753E+19"; + results[33][18]="9.284683992214605E+34"; + results[33][19]="78558063495777.08"; + results[33][20]="3.142010089732407E+30"; + results[33][21]="1464718196.550773"; + results[33][22]="1.805084171812118E+25"; + results[33][23]="16053.42817021349"; + results[33][24]="9.561311270339060E+19"; + results[33][25]="9.571509118748273E+19"; + results[33][26]="2.563702902183168E+44"; + results[33][27]="1115826288292324"; + results[33][28]="3.953805584562284E+39"; + results[33][29]="19047336589.46896"; + results[33][30]="8.910778252638594E+33"; + results[33][31]="232403.4824178150"; + results[33][32]="1.811607998846661E+29"; + results[33][33]="1"; + results[33][34]="4.792712188826647E+24"; + results[33][35]="1.176503159848700E+16"; + results[33][36]="2.479104738813852E+48"; + results[33][37]="99541443732.04527"; + results[33][38]="1.213289979507148E+43"; + results[33][39]="1060911.027467431"; + results[33][40]="2.199801600919255E+38"; + results[33][41]="16.98500463093566"; + results[33][42]="7.944304026196954E+32"; + results[33][43]="0.0003064036513952934"; + results[33][44]="2.086905486278503E+28"; + results[33][45]="2687623535922.464"; + results[33][46]="1.463300743255233E+52"; + results[33][47]="9770201.983074019"; + results[33][48]="1.211700460390415E+47"; + results[33][49]="413.7744863151833"; + results[33][50]="4.083605569305342E+42"; + results[33][51]="0.001029919938804072"; + results[33][52]="7.317343131591340E+37"; + results[33][53]="2.145328744523008E-8"; + results[33][54]="2.984095117073005E+32"; + results[33][55]="108654403.3881091"; + results[33][56]="1.254247595301220E+56"; + results[33][57]="1089.816494157951"; + results[33][58]="1.002503957197447E+51"; + results[33][59]="0.02138387133156396"; + results[33][60]="5.178088665498566E+46"; + results[33][61]="9.885104446676278E-8"; + results[33][62]="3.702032396218190E+41"; + results[33][63]="8.407647967817748E-13"; + results[33][64]="3.868223702607104E+36"; + results[33][65]="9122.016172948436"; + results[33][66]="8.132376161261471E+59"; + results[33][67]="0.2944598547683367"; + results[33][68]="1.734924652500475E+55"; + results[33][69]="0.000001307851301811848"; + results[33][70]="1.273831634161944E+50"; + results[33][71]="7.992660485051813E-12"; + results[33][72]="3.104755959479955E+45"; + results[33][73]="1.514522267469688E-16"; + results[33][74]="8.671222446169412E+39"; + results[34][0]="145686398.9710135"; + results[34][1]="320.3470682862941"; + results[34][2]="0.007187553680765358"; + results[34][3]="8.381471545908569E-8"; + results[34][4]="5.850000812747606E-13"; + results[34][5]="1825.163958566520"; + results[34][6]="1134255830941.353"; + results[34][7]="0.01750320852868166"; + results[34][8]="1672106.761971122"; + results[34][9]="1.631549155379241E-7"; + results[34][10]="59.54441524783812"; + results[34][11]="1.977135669106896E-12"; + results[34][12]="0.0002654755194806417"; + results[34][13]="2.487570993091087E-17"; + results[34][14]="2.000190883125157E-9"; + results[34][15]="0.2148697609230333"; + results[34][16]="2468425077384854"; + results[34][17]="0.000002543052222977617"; + results[34][18]="19372504808.15474"; + results[34][19]="1.639114981260948E-11"; + results[34][20]="655580.7997520574"; + results[34][21]="3.056136356290082E-16"; + results[34][22]="3.766310391056549"; + results[34][23]="3.349549803478537E-21"; + results[34][24]="0.00001994968797131100"; + results[34][25]="0.00001997096579482185"; + results[34][26]="5.349169324542341E+19"; + results[34][27]="2.328172951619490E-10"; + results[34][28]="824962031682160.1"; + results[34][29]="3.974229171089060E-15"; + results[34][30]="1859235001.303121"; + results[34][31]="4.849101578843441E-20"; + results[34][32]="37799.22364355827"; + results[34][33]="2.086501255659210E-25"; + results[34][34]="1"; + results[34][35]="2.454775320311342E-9"; + results[34][36]="5.172655150445800E+23"; + results[34][37]="2.076933473370431E-14"; + results[34][38]="2.531531065720401E+18"; + results[34][39]="2.213592190953497E-19"; + results[34][40]="45898888025191.66"; + results[34][41]="3.543923348982476E-24"; + results[34][42]="165758003.2599846"; + results[34][43]="6.393116033748466E-29"; + results[34][44]="4354.330917562191"; + results[34][45]="5.607729882441468E-13"; + results[34][46]="3.053178838209099E+27"; + results[34][47]="2.038553870572805E-18"; + results[34][48]="2.528214532087444E+22"; + results[34][49]="8.633409852563746E-23"; + results[34][50]="8.520448147972540E+17"; + results[34][51]="2.148929245543152E-28"; + results[34][52]="15267645632154.63"; + results[34][53]="4.476231119249052E-33"; + results[34][54]="62263182.08779341"; + results[34][55]="2.267075491021919E-17"; + results[34][56]="2.616989182503541E+31"; + results[34][57]="2.273903483498682E-22"; + results[34][58]="2.091725765495799E+26"; + results[34][59]="4.461747438416318E-27"; + results[34][60]="1.080408850247748E+22"; + results[34][61]="2.062528284031250E-32"; + results[34][62]="7.724295243200328E+16"; + results[34][63]="1.754256804199234E-37"; + results[34][64]="807105361266.0442"; + results[34][65]="1.903309819900053E-21"; + results[34][66]="1.696821307196509E+35"; + results[34][67]="6.143908567153631E-26"; + results[34][68]="3.619922465916360E+30"; + results[34][69]="2.728833383445953E-31"; + results[34][70]="2.657851304177320E+25"; + results[34][71]="1.667669613811836E-36"; + results[34][72]="6.478077207970342E+20"; + results[34][73]="3.160052612799337E-41"; + results[34][74]="1809251652203281"; + results[35][0]="5.934816020251334E+16"; + results[35][1]="130499547406.9147"; + results[35][2]="2927988.407449751"; + results[35][3]="34.14353841900911"; + results[35][4]="0.0002383110488501100"; + results[35][5]="743515686940.7634"; + results[35][6]="4.620609558668262E+20"; + results[35][7]="7130269.065301548"; + results[35][8]="681164890381514.3"; + results[35][9]="66.46429682910084"; + results[35][10]="24256564238.34587"; + results[35][11]="0.0008054242898515592"; + results[35][12]="108146.5653023476"; + results[35][13]="1.013359948875315E-8"; + results[35][14]="0.8148162752717714"; + results[35][15]="87531335.00453358"; + results[35][16]="1.005560491406513E+24"; + results[35][17]="1035.961296309220"; + results[35][18]="7.891762903049598E+18"; + results[35][19]="0.006677250531641558"; + results[35][20]="267063463742543.0"; + results[35][21]="1.244975998822763E-7"; + results[35][22]="1534279068.187334"; + results[35][23]="1.364503616996488E-12"; + results[35][24]="8126.889579768451"; + results[35][25]="8135.557510937055"; + results[35][26]="2.179087136929461E+28"; + results[35][27]="0.09484260870458016"; + results[35][28]="3.360641704583902E+23"; + results[35][29]="0.000001618978787266365"; + results[35][30]="7.573951823286671E+17"; + results[35][31]="1.975374910575696E-11"; + results[35][32]="15398241676457.85"; + results[35][33]="8.499764676608273E-17"; + results[35][34]="407369257.6773865"; + results[35][35]="1"; + results[35][36]="2.107180688858216E+32"; + results[35][37]="0.000008460788472922284"; + results[35][38]="1.031267931029763E+27"; + results[35][39]="9.017494076291857E-11"; + results[35][40]="1.869779594303981E+22"; + results[35][41]="1.443685423940549E-15"; + results[35][42]="6.752471474210576E+16"; + results[35][43]="2.604358932913510E-20"; + results[35][44]="1773820553569.003"; + results[35][45]="0.0002284416759465479"; + results[35][46]="1.243771196877546E+36"; + results[35][47]="8.304441769906065E-10"; + results[35][48]="1.029916877185643E+31"; + results[35][49]="3.516985762863528E-14"; + results[35][50]="3.470968637118237E+26"; + results[35][51]="8.754077115581401E-20"; + results[35][52]="6.219569467652223E+21"; + results[35][53]="1.823478948240904E-24"; + results[35][54]="2.536410626773635E+16"; + results[35][55]="9.235368598761958E-9"; + results[35][56]="1.066080940626218E+40"; + results[35][57]="9.263183741028816E-14"; + results[35][58]="8.521047723546869E+34"; + results[35][59]="1.817578741931636E-18"; + results[35][60]="4.401253513135038E+30"; + results[35][61]="8.402106160044240E-24"; + results[35][62]="3.146640419303486E+25"; + results[35][63]="7.146302921021462E-29"; + results[35][64]="3.287899118863873E+20"; + results[35][65]="7.753499084627650E-13"; + results[35][66]="6.912328363238143E+43"; + results[35][67]="2.502839472239110E-17"; + results[35][68]="1.474645127790042E+39"; + results[35][69]="1.111642829739649E-22"; + results[35][70]="1.082726912799589E+34"; + results[35][71]="6.793573326296614E-28"; + results[35][72]="2.638969503387675E+29"; + results[35][73]="1.287308287097552E-32"; + results[35][74]="7.370335025096355E+23"; + results[36][0]="2.816472290028026E-16"; + results[36][1]="6.193087669080073E-22"; + results[36][2]="1.389528872835434E-26"; + results[36][3]="1.620342223120407E-31"; + results[36][4]="1.130947384389897E-36"; + results[36][5]="3.528485672216559E-21"; + results[36][6]="2.192792285493067E-12"; + results[36][7]="3.383795752781463E-26"; + results[36][8]="3.232588899391471E-18"; + results[36][9]="3.154181185340816E-31"; + results[36][10]="1.151138313225971E-22"; + results[36][11]="3.822283936590086E-36"; + results[36][12]="5.132287225019476E-28"; + results[36][13]="4.809079516690182E-41"; + results[36][14]="3.866855270552440E-33"; + results[36][15]="4.153954877593472E-25"; + results[36][16]="4.772065806807389E-9"; + results[36][17]="4.916338222853396E-30"; + results[36][18]="3.745176170594929E-14"; + results[36][19]="3.168807766200464E-35"; + results[36][20]="1.267397073040055E-18"; + results[36][21]="5.908254595372923E-40"; + results[36][22]="7.281193664595935E-24"; + results[36][23]="6.475494124501726E-45"; + results[36][24]="3.856759708713939E-29"; + results[36][25]="3.860873229312546E-29"; + results[36][26]="0.0001034124481327801"; + results[36][27]="4.500924349110802E-34"; + results[36][28]="1.594852174924249E-9"; + results[36][29]="7.683151216346878E-39"; + results[36][30]="3.594353281298647E-15"; + results[36][31]="9.374492282605629E-44"; + results[36][32]="7.307508918374459E-20"; + results[36][33]="4.033714204743355E-49"; + results[36][34]="1.933243123531666E-24"; + results[36][35]="4.745677507807144E-33"; + results[36][36]="1"; + results[36][37]="4.015217355426124E-38"; + results[36][38]="0.000004894065024810755"; + results[36][39]="4.279411881464243E-43"; + results[36][40]="8.873370965245172E-11"; + results[36][41]="6.851265444743684E-48"; + results[36][42]="3.204505199727048E-16"; + results[36][43]="1.235944761018426E-52"; + results[36][44]="8.417980303958437E-21"; + results[36][45]="1.084110523385301E-36"; + results[36][46]="5902.536993880142"; + results[36][47]="3.941020252233737E-42"; + results[36][48]="0.04887653358970880"; + results[36][49]="1.669048023009940E-46"; + results[36][50]="0.000001647209779147603"; + results[36][51]="4.154402686902390E-52"; + results[36][52]="2.951607093088121E-11"; + results[36][53]="8.653643030626684E-57"; + results[36][54]="1.203698686204266E-16"; + results[36][55]="4.382808103545301E-41"; + results[36][56]="50592763.41431727"; + results[36][57]="4.396008273048529E-46"; + results[36][58]="404.3814452458765"; + results[36][59]="8.625642554253372E-51"; + results[36][60]="0.02088692980344213"; + results[36][61]="3.987368622192980E-56"; + results[36][62]="1.493294066304539E-7"; + results[36][63]="3.391404903626805E-61"; + results[36][64]="1.560330889633121E-12"; + results[36][65]="3.679560621272072E-45"; + results[36][66]="328036812399.9663"; + results[36][67]="1.187766898905705E-49"; + results[36][68]="6998190.214950595"; + results[36][69]="5.275498373810540E-55"; + results[36][70]="51.38272757170476"; + results[36][71]="3.224010813224441E-60"; + results[36][72]="0.001252369821601588"; + results[36][73]="6.109149983692593E-65"; + results[36][74]="3.497723315360298E-9"; + results[37][0]="7.014495208389838E+21"; + results[37][1]="1.542404089460013E+16"; + results[37][2]="346065667144.4297"; + results[37][3]="4035503.136413506"; + results[37][4]="28.16652958678678"; + results[37][5]="8.787782478196851E+16"; + results[37][6]="5.461204441472514E+25"; + results[37][7]="842742858791.6008"; + results[37][8]="8.050844109405394E+19"; + results[37][9]="7855567.721827779"; + results[37][10]="2866938975720293"; + results[37][11]="95.19494458811030"; + results[37][12]="12782090658.38928"; + results[37][13]="0.001197713371653776"; + results[37][14]="96305.00489162340"; + results[37][15]="10345529294895.73"; + results[37][16]="1.188495013939524E+29"; + results[37][17]="122442642.2696522"; + results[37][18]="9.327455624622005E+23"; + results[37][19]="789.1995590022467"; + results[37][20]="3.156484346550524E+19"; + results[37][21]="0.01471465694724737"; + results[37][22]="181339962947614.9"; + results[37][23]="1.612738128796641E-7"; + results[37][24]="960535723.8013413"; + results[37][25]="961560206.4717620"; + results[37][26]="2.575513078838174E+33"; + results[37][27]="11209.66550672107"; + results[37][28]="3.972019529077253E+28"; + results[37][29]="0.1913508170601013"; + results[37][30]="8.951827418361983E+22"; + results[37][31]="0.000002334740925030381"; + results[37][32]="1.819953509739433E+18"; + results[37][33]="1.004606686931215E-11"; + results[37][34]="48147907134319.92"; + results[37][35]="118192.2941579709"; + results[37][36]="2.490525198215260E+37"; + results[37][37]="1"; + results[37][38]="1.218879226599518E+32"; + results[37][39]="0.00001065798312432847"; + results[37][40]="2.209935398205477E+27"; + results[37][41]="1.706324922979563E-10"; + results[37][42]="7.980900947732038E+21"; + results[37][43]="3.078151570918528E-15"; + results[37][44]="2.096519206508824E+17"; + results[37][45]="27.00004576141425"; + results[37][46]="1.470041711665625E+41"; + results[37][47]="0.00009815210244864781"; + results[37][48]="1.217282385065843E+36"; + results[37][49]="4.156806158337618E-9"; + results[37][50]="4.102417461713700E+31"; + results[37][51]="1.034664457526358E-14"; + results[37][52]="7.351051840566861E+26"; + results[37][53]="2.155211602413563E-19"; + results[37][54]="2.997841909050329E+21"; + results[37][55]="0.001091549402082161"; + results[37][56]="1.260025521307003E+45"; + results[37][57]="1.094836937559011E-8"; + results[37][58]="1.007122179075560E+40"; + results[37][59]="2.148238013216586E-13"; + results[37][60]="5.201942498882593E+35"; + results[37][61]="9.930642028144481E-19"; + results[37][62]="3.719086500476785E+30"; + results[37][63]="8.446379369833354E-24"; + results[37][64]="3.886043398184922E+25"; + results[37][65]="9.164038445638694E-8"; + results[37][66]="8.169839472243282E+48"; + results[37][67]="2.958163391330656E-12"; + results[37][68]="1.742916907223793E+44"; + results[37][69]="1.313876163311878E-17"; + results[37][70]="1.279699777703607E+39"; + results[37][71]="8.029480169653943E-23"; + results[37][72]="3.119058598183105E+34"; + results[37][73]="1.521499197406275E-27"; + results[37][74]="8.711168053289843E+28"; + } + + private static void initResults2() { + results[38][0]="5.754873046740801E-11"; + results[38][1]="1.265428153832008E-16"; + results[38][2]="2.839212118742058E-21"; + results[38][3]="3.310831006343367E-26"; + results[38][4]="2.310854838782263E-31"; + results[38][5]="7.209723725223695E-16"; + results[38][6]="4.480513181530232E-7"; + results[38][7]="6.914080086037084E-21"; + results[38][8]="6.605120453046024E-13"; + results[38][9]="6.444910660872926E-26"; + results[38][10]="2.352110786003469E-17"; + results[38][11]="7.810039133548062E-31"; + results[38][12]="1.048675732545652E-22"; + results[38][13]="9.826349859084964E-36"; + results[38][14]="7.901111348029064E-28"; + results[38][15]="8.487739448770601E-20"; + results[38][16]="0.0009750720071382617"; + results[38][17]="1.004551062956811E-24"; + results[38][18]="7.652485513797906E-9"; + results[38][19]="6.474797024837234E-30"; + results[38][20]="2.589661286915703E-13"; + results[38][21]="1.207228462519536E-34"; + results[38][22]="1.487759894419769E-18"; + results[38][23]="1.323132016365500E-39"; + results[38][24]="7.880483175360085E-24"; + results[38][25]="7.888888295802402E-24"; + results[38][26]="21.13017452946058"; + results[38][27]="9.196699116773269E-29"; + results[38][28]="0.0003258747415163162"; + results[38][29]="1.569891527267555E-33"; + results[38][30]="7.344310431260839E-10"; + results[38][31]="1.915481759045105E-38"; + results[38][32]="1.493136867068297E-14"; + results[38][33]="8.242052739990580E-44"; + results[38][34]="3.950178662790491E-19"; + results[38][35]="9.696801092238556E-28"; + results[38][36]="204329.1200526434"; + results[38][37]="8.204258290543218E-33"; + results[38][38]="1"; + results[38][39]="8.744084640824158E-38"; + results[38][40]="0.00001813088081229221"; + results[38][41]="1.399913039571560E-42"; + results[38][42]="6.547737276643480E-11"; + results[38][43]="2.525395054525697E-47"; + results[38][44]="1.720038508128311E-15"; + results[38][45]="2.215153492831292E-31"; + results[38][46]="1206060190.037704"; + results[38][47]="8.052652002485662E-37"; + results[38][48]="9986.899099608667"; + results[38][49]="3.410351138672251E-41"; + results[38][50]="0.3365729247153389"; + results[38][51]="8.488654453591028E-47"; + results[38][52]="0.000006030992800718365"; + results[38][53]="1.768191265697641E-51"; + results[38][54]="2.459506933606407E-11"; + results[38][55]="8.955353231570062E-36"; + results[38][56]="10337574829479.02"; + results[38][57]="8.982325021761465E-41"; + results[38][58]="82626904.87270614"; + results[38][59]="1.762469952999227E-45"; + results[38][60]="4267.807987338662"; + results[38][61]="8.147355218982128E-51"; + results[38][62]="0.03051234625478403"; + results[38][63]="6.929627797002850E-56"; + results[38][64]="3.188210376696939E-7"; + results[38][65]="7.518413839248804E-40"; + results[38][66]="6.702747322255918E+16"; + results[38][67]="2.426953652810597E-44"; + results[38][68]="1429934048581.875"; + results[38][69]="1.077937940559859E-49"; + results[38][70]="10498987.51063113"; + results[38][71]="6.587592925063573E-55"; + results[38][72]="255.8956236283385"; + results[38][73]="1.248277240437528E-59"; + results[38][74]="0.0007146867272151842"; + results[39][0]="6.581447096100371E+26"; + results[39][1]="1.447181958788470E+21"; + results[39][2]="3.247008961334176E+16"; + results[39][3]="378636660364.1785"; + results[39][4]="2642763.575267104"; + results[39][5]="8.245258390527376E+21"; + results[39][6]="5.124050561692560E+30"; + results[39][7]="7.907151371518986E+16"; + results[39][8]="7.553815778735954E+24"; + results[39][9]="737059500863.3713"; + results[39][10]="2.689945125899165E+20"; + results[39][11]="8931797.271363033"; + results[39][12]="1199297325702478"; + results[39][13]="112.3771127878607"; + results[39][14]="9035950213.862933"; + results[39][15]="9.706835875242173E+17"; + results[39][16]="1.115121876320673E+34"; + results[39][17]="11488350172947.65"; + results[39][18]="8.751614180482857E+28"; + results[39][19]="74047739.59538163"; + results[39][20]="2.961615072691725E+24"; + results[39][21]="1380.623029291435"; + results[39][22]="1.701447270390950E+19"; + results[39][23]="0.01513173843478247"; + results[39][24]="90123592108977.16"; + results[39][25]="90219715611751.54"; + results[39][26]="2.416510749542446E+38"; + results[39][27]="1051762362.161496"; + results[39][28]="3.726802231475215E+33"; + results[39][29]="17953.75492979660"; + results[39][30]="8.399175823358240E+27"; + results[39][31]="0.2190602947851342"; + results[39][32]="1.707596539147366E+23"; + results[39][33]="9.425861114736121E-7"; + results[39][34]="4.517543945478293E+18"; + results[39][35]="11089555385.78204"; + results[39][36]="2.336769695694354E+42"; + results[39][37]="93826.38237785791"; + results[39][38]="1.143630283873541E+37"; + results[39][39]="1"; + results[39][40]="2.073502437023907E+32"; + results[39][41]="0.00001600982946843494"; + results[39][42]="7.488190640417148E+26"; + results[39][43]="2.888118263100058E-10"; + results[39][44]="1.967088127324202E+22"; + results[39][45]="2533316.617830116"; + results[39][46]="1.379286957501396E+46"; + results[39][47]="9.209256695537514"; + results[39][48]="1.142132025230187E+41"; + results[39][49]="0.0003900180840828200"; + results[39][50]="3.849149894363509E+36"; + results[39][51]="9.707882302464703E-10"; + results[39][52]="6.897226008724825E+31"; + results[39][53]="2.022157079132508E-14"; + results[39][54]="2.812766612669237E+26"; + results[39][55]="102.4161315840830"; + results[39][56]="1.182236363680106E+50"; + results[39][57]="0.001027245891448147"; + results[39][58]="9.449463067516497E+44"; + results[39][59]="2.015614012667092E-8"; + results[39][60]="4.880794460077878E+40"; + results[39][61]="9.317562161903105E-14"; + results[39][62]="3.489484320900643E+35"; + results[39][63]="7.924932204624348E-19"; + results[39][64]="3.646133938150488E+30"; + results[39][65]="0.008598285753258867"; + results[39][66]="7.665464822884150E+53"; + results[39][67]="2.775537694911710E-7"; + results[39][68]="1.635315881900131E+49"; + results[39][69]="1.232762472960531E-12"; + results[39][70]="1.200696006716784E+44"; + results[39][71]="7.533770766933783E-18"; + results[39][72]="2.926499846920735E+39"; + results[39][73]="1.427567654834451E-22"; + results[39][74]="8.173373847257529E+33"; + results[40][0]="0.000003174072515461667"; + results[40][1]="6.979408043839129E-12"; + results[40][2]="1.565953771433517E-16"; + results[40][3]="1.826072897737389E-21"; + results[40][4]="1.274540858056698E-26"; + results[40][5]="3.976488401123740E-11"; + results[40][6]="0.02471205468678926"; + results[40][7]="3.813427575647367E-16"; + results[40][8]="3.643022377913347E-8"; + results[40][9]="3.554659438554945E-21"; + results[40][10]="1.297295377072253E-12"; + results[40][11]="4.307589473674706E-26"; + results[40][12]="5.783920502277423E-18"; + results[40][13]="5.419675944492992E-31"; + results[40][14]="4.357819914999574E-23"; + results[40][15]="4.681371818966545E-15"; + results[40][16]="53.77962699292531"; + results[40][17]="5.540553012050880E-20"; + results[40][18]="0.0004220691533424975"; + results[40][19]="3.571143118677119E-25"; + results[40][20]="1.428315211889754E-8"; + results[40][21]="6.658410449100025E-30"; + results[40][22]="8.205668052327118E-14"; + results[40][23]="7.297670918825164E-35"; + results[40][24]="4.346442545702108E-19"; + results[40][25]="4.351078349405929E-19"; + results[40][26]="1165424.600614822"; + results[40][27]="5.072395109750087E-24"; + results[40][28]="17.97346443838419"; + results[40][29]="8.658661118125126E-29"; + results[40][30]="0.00004050719050715733"; + results[40][31]="1.056474739906990E-33"; + results[40][32]="8.235324486033761E-10"; + results[40][33]="4.545864497880714E-39"; + results[40][34]="2.178702018774722E-14"; + results[40][35]="5.348223946000686E-23"; + results[40][36]="11269674218.70173"; + results[40][37]="4.525019151292953E-28"; + results[40][38]="55154.51843475961"; + results[40][39]="4.822757775174344E-33"; + results[40][40]="1"; + results[40][41]="7.721152954810994E-38"; + results[40][42]="0.000003611372963305955"; + results[40][43]="1.392869480898883E-42"; + results[40][44]="9.486789560505935E-11"; + results[40][45]="1.221757241561856E-26"; + results[40][46]="66519668984864.25"; + results[40][47]="4.441401433197993E-32"; + results[40][48]="550822610.4954504"; + results[40][49]="1.880962747469021E-36"; + results[40][50]="18563.51758085312"; + results[40][51]="4.681876485468906E-42"; + results[40][52]="0.3326365036071236"; + results[40][53]="9.752373776010145E-47"; + results[40][54]="0.000001356529205100136"; + results[40][55]="4.939281949004150E-31"; + results[40][56]="5.701639615032074E+17"; + results[40][57]="4.954158109997452E-36"; + results[40][58]="4557247148008.799"; + results[40][59]="9.720818151340577E-41"; + results[40][60]="235388894.3136845"; + results[40][61]="4.493634536198847E-46"; + results[40][62]="1682.893763997254"; + results[40][63]="3.822002840758163E-51"; + results[40][64]="0.01758442079954232"; + results[40][65]="4.146744946969999E-35"; + results[40][66]="3.696868007488996E+21"; + results[40][67]="1.338574599842493E-39"; + results[40][68]="7.886732384299944E+16"; + results[40][69]="5.945314801413554E-45"; + results[40][70]="579066600201.4157"; + results[40][71]="3.633355154261108E-50"; + results[40][72]="14113799.89078350"; + results[40][73]="6.884813006940251E-55"; + results[40][74]="39.41820227126789"; + results[41][0]="4.110878950382567E+31"; + results[41][1]="9.039334001912643E+25"; + results[41][2]="2.028134632999056E+21"; + results[41][3]="2.365026192881695E+16"; + results[41][4]="165071313250.2498"; + results[41][5]="5.150122558634225E+26"; + results[41][6]="3.200565360046566E+35"; + results[41][7]="4.938935412840446E+21"; + results[41][8]="4.718236252065705E+29"; + results[41][9]="4.603793577667779E+16"; + results[41][10]="1.680183496771577E+25"; + results[41][11]="557894591505.3629"; + results[41][12]="7.491006247549473E+19"; + results[41][13]="7019257.326220990"; + results[41][14]="564400153772921.7"; + results[41][15]="6.063047638564933E+22"; + results[41][16]="6.965232693572741E+38"; + results[41][17]="7.175810457942816E+17"; + results[41][18]="5.466400624527316E+33"; + results[41][19]="4625142306567.008"; + results[41][20]="1.849872966186717E+29"; + results[41][21]="86235960.97719082"; + results[41][22]="1.062751651256206E+24"; + results[41][23]="945.1530051969814"; + results[41][24]="5.629266213401292E+18"; + results[41][25]="5.635270243797986E+18"; + results[41][26]="1.509391935939637E+43"; + results[41][27]="65694788581924.34"; + results[41][28]="2.327821316787288E+38"; + results[41][29]="1121420747.497299"; + results[41][30]="5.246261891744755E+32"; + results[41][31]="13682.86247002409"; + results[41][32]="1.066592584583160E+28"; + results[41][33]="0.05887546231095213"; + results[41][34]="2.821731458405042E+23"; + results[41][35]="692671674463882.5"; + results[41][36]="1.459584376149378E+47"; + results[41][37]="5860548518.823794"; + results[41][38]="7.143300846072895E+41"; + results[41][39]="62461.62721293222"; + results[41][40]="1.295143362464938E+37"; + results[41][41]="1"; + results[41][42]="4.677245722811041E+31"; + results[41][43]="0.00001803965662966171"; + results[41][44]="1.228675253039092E+27"; + results[41][45]="158235078195.2310"; + results[41][46]="8.615250775911171E+50"; + results[41][47]="575225.1586248642"; + results[41][48]="7.133942478787923E+45"; + results[41][49]="24.36116417428315"; + results[41][50]="2.404241657884309E+41"; + results[41][51]="0.00006063701254035724"; + results[41][52]="4.308119597603104E+36"; + results[41][53]="1.263072216427666E-9"; + results[41][54]="1.756899795975280E+31"; + results[41][55]="6397078.231595606"; + results[41][56]="7.384440702575934E+54"; + results[41][57]="64.16344992765041"; + results[41][58]="5.902288394855864E+49"; + results[41][59]="0.001258985310643743"; + results[41][60]="3.048623640683292E+45"; + results[41][61]="5.819900942901146E-9"; + results[41][62]="2.179588688174679E+40"; + results[41][63]="4.950041610530071E-14"; + results[41][64]="2.277434588131763E+35"; + results[41][65]="537.0629193903215"; + results[41][66]="4.787974061808353E+58"; + results[41][67]="0.01733646008150164"; + results[41][68]="1.021444909906334E+54"; + results[41][69]="7.700035002815314E-8"; + results[41][70]="7.499742636760013E+48"; + results[41][71]="4.705715811519044E-13"; + results[41][72]="1.827939424770661E+44"; + results[41][73]="8.916819867750936E-18"; + results[41][74]="5.105222303193294E+38"; + results[42][0]="0.8789101950179163"; + results[42][1]="0.000001932619010762593"; + results[42][2]="4.336172938504800E-11"; + results[42][3]="5.056450597297903E-16"; + results[42][4]="3.529241845156713E-21"; + results[42][5]="0.00001101101559303791"; + results[42][6]="6842.842026531408"; + results[42][7]="1.055949527892695E-10"; + results[42][8]="0.01008763817785915"; + results[42][9]="9.842958549761383E-16"; + results[42][10]="3.592249790463821E-7"; + results[42][11]="1.192784438894235E-20"; + results[42][12]="1.601584926576693E-12"; + results[42][13]="1.500724516564931E-25"; + results[42][14]="1.206693398681896E-17"; + results[42][15]="1.296285890859935E-9"; + results[42][16]="14891739.93917645"; + results[42][17]="1.534195738946580E-14"; + results[42][18]="116.8722138729541"; + results[42][19]="9.888602354180532E-20"; + results[42][20]="0.003955047640890110"; + results[42][21]="1.843733814467261E-24"; + results[42][22]="2.272174083292525E-8"; + results[42][23]="2.020746954959940E-29"; + results[42][24]="1.203542971015447E-13"; + results[42][25]="1.204826638958615E-13"; + results[42][26]="322709565712.6364"; + results[42][27]="1.404561412318563E-18"; + results[42][28]="4976906.185267212"; + results[42][29]="2.397609221230570E-23"; + results[42][30]="11.21656248710349"; + results[42][31]="2.925410226640957E-28"; + results[42][32]="0.0002280386038692306"; + results[42][33]="1.258763507416664E-33"; + results[42][34]="6.032891204846025E-9"; + results[42][35]="1.480939243977938E-17"; + results[42][36]="3120606576282596"; + results[42][37]="1.252991368454678E-22"; + results[42][38]="15272451501.17909"; + results[42][39]="1.335436085991919E-27"; + results[42][40]="276902.9978793913"; + results[42][41]="2.138010400272485E-32"; + results[42][42]="1"; + results[42][43]="3.856897349156122E-37"; + results[42][44]="0.00002626920469555007"; + results[42][45]="3.383082428693337E-21"; + results[42][46]="1.841949575985368E+19"; + results[42][47]="1.229837371638349E-26"; + results[42][48]="152524432145942.5"; + results[42][49]="5.208442236736284E-31"; + results[42][50]="5140293669.325014"; + results[42][51]="1.296425634527369E-36"; + results[42][52]="92108.04505293148"; + results[42][53]="2.700461535017569E-41"; + results[42][54]="0.3756270036031754"; + results[42][55]="1.367701979050812E-25"; + results[42][56]="1.578801102230280E+23"; + results[42][57]="1.371821232626794E-30"; + results[42][58]="1.261915397360943E+18"; + results[42][59]="2.691723687946608E-35"; + results[42][60]="65179890502974.45"; + results[42][61]="1.244300874447829E-40"; + results[42][62]="465998328.3633725"; + results[42][63]="1.058324044509485E-45"; + results[42][64]="4869.178835365991"; + results[42][65]="1.148246107257210E-29"; + results[42][66]="1.023673834038115E+27"; + results[42][67]="3.706553195815928E-34"; + results[42][68]="2.183859840685134E+22"; + results[42][69]="1.646275491848131E-39"; + results[42][70]="1.603452775675989E+17"; + results[42][71]="1.006086934575439E-44"; + results[42][72]="3908153501227.777"; + results[42][73]="1.906425361460782E-49"; + results[42][74]="10915018.37993031"; + results[43][0]="2.278801107346606E+36"; + results[43][1]="5.010812670929508E+30"; + results[43][2]="1.124264543740979E+26"; + results[43][3]="1.311015082733337E+21"; + results[43][4]="9150468694555485"; + results[43][5]="2.854889460681936E+31"; + results[43][6]="1.774183082168003E+40"; + results[43][7]="2.737821187083793E+26"; + results[43][8]="2.615480077546344E+34"; + results[43][9]="2.552040580472019E+21"; + results[43][10]="9.313833025008547E+29"; + results[43][11]="3.092600945563700E+16"; + results[43][12]="4.152521525954315E+24"; + results[43][13]="389101492911.9866"; + results[43][14]="3.128663507069788E+19"; + results[43][15]="3.360955124054725E+27"; + results[43][16]="3.861067223485925E+43"; + results[43][17]="3.977797696073652E+22"; + results[43][18]="3.030213233404445E+38"; + results[43][19]="2.563874912653335E+17"; + results[43][20]="1.025447991701273E+34"; + results[43][21]="4780354900735.599"; + results[43][22]="5.891196673382220E+28"; + results[43][23]="52393070.69974453"; + results[43][24]="3.120495211724467E+23"; + results[43][25]="3.123823451568468E+23"; + results[43][26]="8.367076862526411E+47"; + results[43][27]="3.641687307612366E+18"; + results[43][28]="1.290391144673877E+43"; + results[43][29]="62164195833605.98"; + results[43][30]="2.908182788312382E+37"; + results[43][31]="758487966.3133965"; + results[43][32]="5.912488283338024E+32"; + results[43][33]="3263.668678379727"; + results[43][34]="1.564182465516227E+28"; + results[43][35]="3.839716512812981E+19"; + results[43][36]="8.090976486489524E+51"; + results[43][37]="324870292108974.2"; + results[43][38]="3.959776503909459E+46"; + results[43][39]="3462462090.893108"; + results[43][40]="7.179423583569754E+41"; + results[43][41]="55433.42761611934"; + results[43][42]="2.592757622182496E+36"; + results[43][43]="1"; + results[43][44]="6.810968070305965E+31"; + results[43][45]="8771512753466319"; + results[43][46]="4.775728802811879E+55"; + results[43][47]="31886702193.60218"; + results[43][48]="3.954588840154493E+50"; + results[43][49]="1350422.830899525"; + results[43][50]="1.332753559139886E+46"; + results[43][51]="3.361317445513614"; + results[43][52]="2.388138358753168E+41"; + results[43][53]="0.00007001642228327445"; + results[43][54]="9.739097766897050E+35"; + results[43][55]="354611973105.8077"; + results[43][56]="4.093448591717685E+59"; + results[43][57]="3556799.957164907"; + results[43][58]="3.271840765057037E+54"; + results[43][59]="69.78987108732747"; + results[43][60]="1.689956579146075E+50"; + results[43][61]="0.0003226170576512954"; + results[43][62]="1.208220717788436E+45"; + results[43][63]="2.743977733140975E-9"; + results[43][64]="1.262460053916486E+40"; + results[43][65]="29771238.46732512"; + results[43][66]="2.654138135831102E+63"; + results[43][67]="961.0194050476638"; + results[43][68]="5.662219247714633E+58"; + results[43][69]="0.004268393329701480"; + results[43][70]="4.157364405943601E+53"; + results[43][71]="2.608539568198692E-8"; + results[43][72]="1.013289477896753E+49"; + results[43][73]="4.942898887049463E-13"; + results[43][74]="2.829999710082635E+43"; + results[44][0]="33457.81515672613"; + results[44][1]="0.07356975717997179"; + results[44][2]="0.000001650667764311622"; + results[44][3]="1.924858653278701E-11"; + results[44][4]="1.343490176447769E-16"; + results[44][5]="0.4191605996698921"; + results[44][6]="260489120.4677608"; + results[44][7]="0.000004019724008133258"; + results[44][8]="384.0100336028812"; + results[44][9]="3.746957193351482E-11"; + results[44][10]="0.01367475655276438"; + results[44][11]="4.540618769080169E-16"; + results[44][12]="6.096815435177592E-8"; + results[44][13]="5.712866201918743E-21"; + results[44][14]="4.593566545569257E-13"; + results[44][15]="0.00004934621759141124"; + results[44][16]="566889637953.1077"; + results[44][17]="5.840282401874423E-10"; + results[44][18]="4449019.878121849"; + results[44][19]="3.764332597345680E-15"; + results[44][20]="150.5583319604680"; + results[44][21]="7.018612995084639E-20"; + results[44][22]="0.0008649573177513917"; + results[44][23]="7.692455779988837E-25"; + results[44][24]="4.581573690425900E-9"; + results[44][25]="4.586460278954353E-9"; + results[44][26]="1.228471015596839E+16"; + results[44][27]="5.346798384636640E-14"; + results[44][28]="189457817354.8698"; + results[44][29]="9.127071980358501E-19"; + results[44][30]="426985.2329790381"; + results[44][31]="1.113627253106948E-23"; + results[44][32]="8.680833946520647"; + results[44][33]="4.791783847304273E-29"; + results[44][34]="0.0002296564085119783"; + results[44][35]="5.637548837665439E-13"; + results[44][36]="1.187933404322369E+20"; + results[44][37]="4.769810822125617E-18"; + results[44][38]="581382332589848.2"; + results[44][39]="5.083656324845414E-23"; + results[44][40]="10540973778.55897"; + results[44][41]="8.138847083690577E-28"; + results[44][42]="38067.38771080486"; + results[44][43]="1.468220067511016E-32"; + results[44][44]="1"; + results[44][45]="1.287851104706806E-16"; + results[44][46]="7.011820865278762E+23"; + results[44][47]="4.681669604739426E-22"; + results[44][48]="5.806206693869941E+18"; + results[44][49]="1.982717899951718E-26"; + results[44][50]="195677552057591.1"; + results[44][51]="4.935153726777955E-32"; + results[44][52]="3506312662.314225"; + results[44][53]="1.027995162516290E-36"; + results[44][54]="14299.13878080998"; + results[44][55]="5.206484150936237E-21"; + results[44][56]="6.010083367684613E+27"; + results[44][57]="5.222165073231839E-26"; + results[44][58]="4.803782268957339E+22"; + results[44][59]="1.024668892394211E-30"; + results[44][60]="2.481228162724536E+18"; + results[44][61]="4.736728381649903E-36"; + results[44][62]="17739339038395.46"; + results[44][63]="4.028763172600968E-41"; + results[44][64]="185356918.5591225"; + results[44][65]="4.371072975238266E-25"; + results[44][66]="3.896858872973504E+31"; + results[44][67]="1.410987975758478E-29"; + results[44][68]="8.313383926141755E+26"; + results[44][69]="6.266940742697879E-35"; + results[44][70]="6.103925848762411E+21"; + results[44][71]="3.829910140925841E-40"; + results[44][72]="1.487731945645773E+17"; + results[44][73]="7.257263337643890E-45"; + results[44][74]="415506236539.3683"; + results[45][0]="2.597956785100805E+20"; + results[45][1]="571259805664574.7"; + results[45][2]="12817225207.78065"; + results[45][3]="149462.8258067859"; + results[45][4]="1.043203031420026"; + results[45][5]="3254728734851059"; + results[45][6]="2.022664883508130E+24"; + results[45][7]="31212645572.47396"; + results[45][8]="2.981789060858130E+18"; + results[45][9]="290946.4595446784"; + results[45][10]="106182745061026.3"; + results[45][11]="3.525732712799818"; + results[45][12]="473409962.7585133"; + results[45][13]="0.00004435967932193017"; + results[45][14]="3566.845987692836"; + results[45][15]="383167102245.4531"; + results[45][16]="4.401825924450844E+27"; + results[45][17]="4534904.990592084"; + results[45][18]="3.454607339203797E+22"; + results[45][19]="29.22956375615078"; + results[45][20]="1.169066295088082E+18"; + results[45][21]="0.0005449863706629740"; + results[45][22]="6716283540777.093"; + results[45][23]="5.973094057127134E-9"; + results[45][24]="35575336.88235604"; + results[45][25]="35613280.62065461"; + results[45][26]="9.538921161825726E+31"; + results[45][27]="415.1720928836645"; + results[45][28]="1.471115850756691E+27"; + results[45][29]="0.007087055286904757"; + results[45][30]="3.315486017121880E+21"; + results[45][31]="8.647173955412170E-8"; + results[45][32]="6.740557130241340E+16"; + results[45][33]="3.720759200959941E-13"; + results[45][34]="1783252797412.961"; + results[45][35]="4377.484956965496"; + results[45][36]="9.224151767085032E+35"; + results[45][37]="0.03703697426428437"; + results[45][38]="4.514359854683718E+30"; + results[45][39]="3.947394466849308E-7"; + results[45][40]="8.184932046906727E+25"; + results[45][41]="6.319711225890107E-12"; + results[45][42]="2.955884230069542E+20"; + results[45][43]="1.140054205136760E-16"; + results[45][44]="7764872789604521"; + results[45][45]="1"; + results[45][46]="5.444589704238428E+39"; + results[45][47]="0.000003635256892375972"; + results[45][48]="4.508445636805033E+34"; + results[45][49]="1.539555227079692E-10"; + results[45][50]="1.519411299508411E+30"; + results[45][51]="3.832084088557348E-16"; + results[45][52]="2.722607178344951E+25"; + results[45][53]="7.982251665267820E-21"; + results[45][54]="1.110309936338901E+20"; + results[45][55]="0.00004042768711311199"; + results[45][56]="4.666753280498896E+43"; + results[45][57]="4.054944747996101E-10"; + results[45][58]="3.730075822741150E+38"; + results[45][59]="7.956423600906009E-15"; + results[45][60]="1.926642104554017E+34"; + results[45][61]="3.678009332242079E-20"; + results[45][62]="1.377437110048061E+29"; + results[45][63]="3.128283353469004E-25"; + results[45][64]="1.439272893284671E+24"; + results[45][65]="3.394082560680328E-9"; + results[45][66]="3.025861342768090E+47"; + results[45][67]="1.095614213942617E-13"; + results[45][68]="6.455236863763371E+42"; + results[45][69]="4.866199764703870E-19"; + results[45][70]="4.739620773281892E+37"; + results[45][71]="2.973876503990548E-24"; + results[45][72]="1.155204930297025E+33"; + results[45][73]="5.635172661746553E-29"; + results[45][74]="3.226353070015521E+27"; + results[46][0]="4.771630051532411E-20"; + results[46][1]="1.049224710578041E-25"; + results[46][2]="2.354121413006176E-30"; + results[46][3]="2.745162334095334E-35"; + results[46][4]="1.916036080015227E-40"; + results[46][5]="5.977913693510024E-25"; + results[46][6]="3.714999648060815E-16"; + results[46][7]="5.732781948321280E-30"; + results[46][8]="5.476609299938448E-22"; + results[46][9]="5.343771989249925E-35"; + results[46][10]="1.950243284234377E-26"; + results[46][11]="6.475662821856263E-40"; + results[46][12]="8.695053043023237E-32"; + results[46][13]="8.147478824234940E-45"; + results[46][14]="6.551174985538704E-37"; + results[46][15]="7.037575337351325E-29"; + results[46][16]="8.084770687172574E-13"; + results[46][17]="8.329195103649068E-34"; + results[46][18]="6.345027865946450E-18"; + results[46][19]="5.368552148823365E-39"; + results[46][20]="2.147207335344303E-22"; + results[46][21]="1.000968668472338E-43"; + results[46][22]="1.233570187216990E-27"; + results[46][23]="1.097069638227704E-48"; + results[46][24]="6.534071218380670E-33"; + results[46][25]="6.541040290498085E-33"; + results[46][26]="1.752E-8"; + results[46][27]="7.625406420624627E-38"; + results[46][28]="2.701977432039512E-13"; + results[46][29]="1.301669303269579E-42"; + results[46][30]="6.089505724445841E-19"; + results[46][31]="1.588214066650539E-47"; + results[46][32]="1.238028482659409E-23"; + results[46][33]="6.833865181913444E-53"; + results[46][34]="3.275274895415460E-28"; + results[46][35]="8.040063980501181E-37"; + results[46][36]="0.0001694186755689661"; + results[46][37]="6.802528064778204E-42"; + results[46][38]="8.291460146518372E-10"; + results[46][39]="7.250122931717692E-47"; + results[46][40]="1.503314756763955E-14"; + results[46][41]="1.160732317619898E-51"; + results[46][42]="5.429030267916215E-20"; + results[46][43]="2.093921244881440E-56"; + results[46][44]="1.426163074062281E-24"; + results[46][45]="1.836685690423163E-40"; + results[46][46]="1"; + results[46][47]="6.676824315239122E-46"; + results[46][48]="0.000008280597587170547"; + results[46][49]="2.827679055193452E-50"; + results[46][50]="2.790680991674361E-10"; + results[46][51]="7.038334009951569E-56"; + results[46][52]="5.000573645109554E-15"; + results[46][53]="1.466088741095387E-60"; + results[46][54]="2.039290372008313E-20"; + results[46][55]="7.425295441755768E-45"; + results[46][56]="8571.358971027673"; + results[46][57]="7.447658994100996E-50"; + results[46][58]="0.06850976887822076"; + results[46][59]="1.461344937472920E-54"; + results[46][60]="0.000003538635984001130"; + results[46][61]="6.755347109771878E-60"; + results[46][62]="2.529919029483109E-11"; + results[46][63]="5.745673270905503E-65"; + results[46][64]="2.643491927709899E-16"; + results[46][65]="6.233862871316364E-49"; + results[46][66]="55575562.29466768"; + results[46][67]="2.012298948972625E-53"; + results[46][68]="1185.624117596628"; + results[46][69]="8.937679474572159E-59"; + results[46][70]="0.008705193652319216"; + results[46][71]="5.462076419965100E-64"; + results[46][72]="2.121748364982833E-7"; + results[46][73]="1.035004099089370E-68"; + results[46][74]="5.925796515950347E-13"; + results[47][0]="7.146556246270681E+25"; + results[47][1]="1.571442741399231E+20"; + results[47][2]="3525810028628656"; + results[47][3]="41114790572.36538"; + results[47][4]="286968.1737232600"; + results[47][5]="8.953228977234115E+20"; + results[47][6]="5.564021865277680E+29"; + results[47][7]="8586090748616571"; + results[47][8]="8.202416360482460E+23"; + results[47][9]="80034635283.92306"; + results[47][10]="2.920914482927399E+19"; + results[47][11]="969871.6809241588"; + results[47][12]="130227375058794.5"; + results[47][13]="12.20262573876507"; + results[47][14]="981181273.6462696"; + results[47][15]="1.054030330150941E+17"; + results[47][16]="1.210870663276248E+33"; + results[47][17]="1247478548243.150"; + results[47][18]="9.503062483559163E+27"; + results[47][19]="8040577.219577623"; + results[47][20]="3.215911088814389E+23"; + results[47][21]="149.9168798238013"; + results[47][22]="1.847540281090668E+18"; + results[47][23]="0.001643100951037101"; + results[47][24]="9786196116419.247"; + results[47][25]="9796633821214.788"; + results[47][26]="2.624001946556017E+37"; + results[47][27]="114207084.9942909"; + results[47][28]="4.046800251839102E+32"; + results[47][29]="1949.533553397026"; + results[47][30]="9.120362371295601E+26"; + results[47][31]="0.02378696805044898"; + results[47][32]="1.854217550450959E+22"; + results[47][33]="1.023520293369992E-7"; + results[47][34]="4.905438185545787E+17"; + results[47][35]="1204174859.319065"; + results[47][36]="2.537414009565692E+41"; + results[47][37]="10188.26876910955"; + results[47][38]="1.241826915768028E+36"; + results[47][39]="0.1085863966072925"; + results[47][40]="2.251541579928655E+31"; + results[47][41]="0.000001738449692274594"; + results[47][42]="8.131156387513517E+25"; + results[47][43]="3.136103551657476E-11"; + results[47][44]="2.135990115551220E+21"; + results[47][45]="275083.7229955457"; + results[47][46]="1.497718006025124E+45"; + results[47][47]="1"; + results[47][48]="1.240200010695352E+40"; + results[47][49]="0.00004235065836223342"; + results[47][50]="4.179653170302738E+35"; + results[47][51]="1.054143957912348E-10"; + results[47][52]="7.489449188735266E+30"; + results[47][53]="2.195787505969266E-15"; + results[47][54]="3.054281909670523E+25"; + results[47][55]="11.12099868317389"; + results[47][56]="1.283747866701312E+49"; + results[47][57]="0.0001115449297820002"; + results[47][58]="1.026083144375309E+44"; + results[47][59]="2.188682625866851E-9"; + results[47][60]="5.299878830006924E+39"; + results[47][61]="1.011760500325512E-14"; + results[47][62]="3.789105284242457E+34"; + results[47][63]="8.605398314572440E-20"; + results[47][64]="3.959205458913181E+29"; + results[47][65]="0.0009336568669461997"; + results[47][66]="8.323652034369472E+52"; + results[47][67]="3.013856369381733E-8"; + results[47][68]="1.775730589302118E+48"; + results[47][69]="1.338612348114789E-13"; + results[47][70]="1.303792527901410E+43"; + results[47][71]="8.180650204466976E-19"; + results[47][72]="3.177780730489156E+38"; + results[47][73]="1.550144275515960E-23"; + results[47][74]="8.875172141979778E+32"; + results[48][0]="5.762422338848205E-15"; + results[48][1]="1.267088153400481E-20"; + results[48][2]="2.842936621692024E-25"; + results[48][3]="3.315174183018531E-30"; + results[48][4]="2.313886238094478E-35"; + results[48][5]="7.219181503001472E-20"; + results[48][6]="4.486390757373126E-11"; + results[48][7]="6.923150035938593E-25"; + results[48][8]="6.613785107035720E-17"; + results[48][9]="6.453365150275192E-30"; + results[48][10]="2.355196305223146E-21"; + results[48][11]="7.820284410257130E-35"; + results[48][12]="1.050051394418058E-26"; + results[48][13]="9.839240149597593E-40"; + results[48][14]="7.911476094054727E-32"; + results[48][15]="8.498873738599392E-24"; + results[48][16]="9.763511150087314E-8"; + results[48][17]="1.005868841707006E-28"; + results[48][18]="7.662524110309441E-13"; + results[48][19]="6.483290719429564E-34"; + results[48][20]="2.593058426931717E-17"; + results[48][21]="1.208812115230884E-38"; + results[48][22]="1.489711550683502E-22"; + results[48][23]="1.324867712358631E-43"; + results[48][24]="7.890820861170891E-28"; + results[48][25]="7.899237007522711E-28"; + results[48][26]="0.002115789327468880"; + results[48][27]="9.208763426010420E-33"; + results[48][28]="3.263022268134115E-8"; + results[48][29]="1.571950924515769E-37"; + results[48][30]="7.353944761040615E-14"; + results[48][31]="1.917994504540616E-42"; + results[48][32]="1.495095576891135E-18"; + results[48][33]="8.252864735875365E-48"; + results[48][34]="3.955360541236747E-23"; + results[48][35]="9.709521439561277E-32"; + results[48][36]="20.45971607549835"; + results[48][37]="8.215020707343183E-37"; + results[48][38]="0.0001001311808626548"; + results[48][39]="8.755555206487259E-42"; + results[48][40]="1.815466505814869E-9"; + results[48][41]="1.401749457573287E-46"; + results[48][42]="6.556326654887352E-15"; + results[48][43]="2.528707889543666E-51"; + results[48][44]="1.722294869481269E-19"; + results[48][45]="2.218059350292316E-35"; + results[48][46]="120764.2310199132"; + results[48][47]="8.063215540849113E-41"; + results[48][48]="1"; + results[48][49]="3.414824866715520E-45"; + results[48][50]="0.00003370144439814430"; + results[48][51]="8.499789943731035E-51"; + results[48][52]="6.038904309100998E-10"; + results[48][53]="1.770510794253370E-55"; + results[48][54]="2.462733336018967E-15"; + results[48][55]="8.967100941193022E-40"; + results[48][56]="1035113574.931792"; + results[48][57]="8.994108113211472E-45"; + results[48][58]="8273.529555930313"; + results[48][59]="1.764781976287603E-49"; + results[48][60]="0.4273406534672904"; + results[48][61]="8.158042989841942E-55"; + results[48][62]="0.000003055237261381728"; + results[48][63]="6.938718142525727E-60"; + results[48][64]="3.192392698572340E-11"; + results[48][65]="7.528276559381090E-44"; + results[48][66]="6711540044014.826"; + results[48][67]="2.430137351548587E-48"; + results[48][68]="143180984.8402199"; + results[48][69]="1.079351988849169E-53"; + results[48][70]="1051.276017301760"; + results[48][71]="6.596234586290859E-59"; + results[48][72]="0.02562313097149101"; + results[48][73]="1.249914741289858E-63"; + results[48][74]="7.156242594292246E-8"; + results[49][0]="1.687472290311238E+30"; + results[49][1]="3.710550915072856E+24"; + results[49][2]="8.325277964917845E+19"; + results[49][3]="970818215402995.0"; + results[49][4]="6776002660.189255"; + results[49][5]="2.114070789798686E+25"; + results[49][6]="1.313798198291870E+34"; + results[49][7]="2.027380702131727E+20"; + results[49][8]="1.936786033011718E+28"; + results[49][9]="1889808526690925"; + results[49][10]="6.896975385705340E+23"; + results[49][11]="22900982379.74620"; + results[49][12]="3.074978762902205E+18"; + results[49][13]="288133.0824752154"; + results[49][14]="23168028823874.12"; + results[49][15]="2.488816870650781E+21"; + results[49][16]="2.859154284968690E+37"; + results[49][17]="2.945594228012286E+16"; + results[49][18]="2.243899587646931E+32"; + results[49][19]="189857195390.0929"; + results[49][20]="7.593532693891262E+27"; + results[49][21]="3539894.906509671"; + results[49][22]="4.362483022786321E+22"; + results[49][23]="38.79753030008030"; + results[49][24]="2.310754187742728E+17"; + results[49][25]="2.313218778660363E+17"; + results[49][26]="6.195894108923685E+41"; + results[49][27]="2696701525096.859"; + results[49][28]="9.555460076266186E+36"; + results[49][29]="46033134.51994738"; + results[49][30]="2.153534968284877E+31"; + results[49][31]="561.6670193647148"; + results[49][32]="4.378249647482396E+26"; + results[49][33]="0.002416775400787454"; + results[49][34]="1.158290892101044E+22"; + results[49][35]="28433438956710.49"; + results[49][36]="5.991439348740924E+45"; + results[49][37]="240569312.5704755"; + results[49][38]="2.932249376494788E+40"; + results[49][39]="2563.983673607429"; + results[49][40]="5.316426395714516E+35"; + results[49][41]="0.04104894137430629"; + results[49][42]="1.919959854688953E+30"; + results[49][43]="7.405088074035996E-7"; + results[49][44]="5.043581843006266E+25"; + results[49][45]="6495382448.194808"; + results[49][46]="3.536469240253245E+49"; + results[49][47]="23612.38381341809"; + results[49][48]="2.928407865794388E+44"; + results[49][49]="1"; + results[49][50]="9.869157486415798E+39"; + results[49][51]="0.000002489085172882200"; + results[49][52]="1.768437487955098E+35"; + results[49][53]="5.184777736365438E-11"; + results[49][54]="7.211887672551995E+29"; + results[49][55]="262593.2892956190"; + results[49][56]="3.031234734820807E+53"; + results[49][57]="2.633841694453359"; + results[49][58]="2.422826902946868E+48"; + results[49][59]="0.00005168001420772782"; + results[49][60]="1.251427730987327E+44"; + results[49][61]="2.389007726094191E-10"; + results[49][62]="8.946980828098355E+38"; + results[49][63]="2.031939678710256E-15"; + results[49][64]="9.348627889203813E+33"; + results[49][65]="22.04586429236709"; + results[49][66]="1.965412665648703E+57"; + results[49][67]="0.0007116433335235624"; + results[49][68]="4.192923222382870E+52"; + results[49][69]="3.160782854106722E-9"; + results[49][70]="3.078564958187471E+47"; + results[49][71]="1.931646524711914E-14"; + results[49][72]="7.503497828319405E+42"; + results[49][73]="3.660260159965578E-19"; + results[49][74]="2.095639710265825E+37"; + results[50][0]="1.709844323220016E-10"; + results[50][1]="3.759744355260485E-16"; + results[50][2]="8.435652158126978E-21"; + results[50][3]="9.836890501942623E-26"; + results[50][4]="6.865836997247178E-31"; + results[50][5]="2.142098545603874E-15"; + results[50][6]="0.000001331216165209868"; + results[50][7]="2.054259145142100E-20"; + results[50][8]="1.962463397384800E-12"; + results[50][9]="1.914863076500820E-25"; + results[50][10]="6.988413545126361E-17"; + results[50][11]="2.320459716168051E-30"; + results[50][12]="3.115745966294182E-22"; + results[50][13]="2.919530698256769E-35"; + results[50][14]="2.347518403243974E-27"; + results[50][15]="2.521812904573124E-19"; + results[50][16]="0.002897060148147514"; + results[50][17]="2.984646087638879E-24"; + results[50][18]="2.273648577130825E-8"; + results[50][19]="1.923742686763465E-29"; + results[50][20]="7.694205614150171E-13"; + results[50][21]="3.586825837344361E-34"; + results[50][22]="4.420319595457841E-18"; + results[50][23]="3.931189704235886E-39"; + results[50][24]="2.341389516707296E-23"; + results[50][25]="2.343886782477983E-23"; + results[50][26]="62.78037530003851"; + results[50][27]="2.732453635286172E-28"; + results[50][28]="0.0009682143677835323"; + results[50][29]="4.664342886746792E-33"; + results[50][30]="2.182085929066454E-9"; + results[50][31]="5.691134427004636E-38"; + results[50][32]="4.436295249628704E-14"; + results[50][33]="2.448816329168904E-43"; + results[50][34]="1.173647186900553E-18"; + results[50][35]="2.881040149156310E-27"; + results[50][36]="607087.2166127371"; + results[50][37]="2.437587128400801E-32"; + results[50][38]="2.971124313834108"; + results[50][39]="2.597976247857604E-37"; + results[50][40]="0.00005386910081262968"; + results[50][41]="4.159315669124470E-42"; + results[50][42]="1.945414142323337E-10"; + results[50][43]="7.503262648537709E-47"; + results[50][44]="5.110448232230970E-15"; + results[50][45]="6.581496401425599E-31"; + results[50][46]="3583354754.568408"; + results[50][47]="2.392543015543006E-36"; + results[50][48]="29672.31873465527"; + results[50][49]="1.013257718682096E-40"; + results[50][50]="1"; + results[50][51]="2.522084763880048E-46"; + results[50][52]="0.00001791882934677280"; + results[50][53]="5.253516061023365E-51"; + results[50][54]="7.307500850481565E-11"; + results[50][55]="2.660746772529066E-35"; + results[50][56]="30714219921944.59"; + results[50][57]="2.668760426691597E-40"; + results[50][58]="245494806.0441551"; + results[50][59]="5.236517329758060E-45"; + results[50][60]="12680.18807795731"; + results[50][61]="2.420680518456101E-50"; + results[50][62]="0.09065597382971390"; + results[50][63]="2.058878563349585E-55"; + results[50][64]="9.472569367822474E-7"; + results[50][65]="2.233814215925896E-39"; + results[50][66]="1.991469553864102E+17"; + results[50][67]="7.210781006414067E-44"; + results[50][68]="4248511818920.849"; + results[50][69]="3.202687624001662E-49"; + results[50][70]="31193797.06347679"; + results[50][71]="1.957255750929793E-54"; + results[50][72]="760.2977091658982"; + results[50][73]="3.708786859469685E-59"; + results[50][74]="0.002123423112003558"; + results[51][0]="6.779487936755711E+35"; + results[51][1]="1.490728784815458E+30"; + results[51][2]="3.344713975889266E+25"; + results[51][3]="3.900301307403033E+20"; + results[51][4]="2722286378148756"; + results[51][5]="8.493364601705167E+30"; + results[51][6]="5.278237211829022E+39"; + results[51][7]="8.145083680620504E+25"; + results[51][8]="7.781115946181321E+33"; + results[51][9]="7.592381921196569E+20"; + results[51][10]="2.770887658182901E+29"; + results[51][11]="9200561969210697"; + results[51][12]="1.235385111125618E+24"; + results[51][13]="115758627151.1858"; + results[51][14]="9.307848954420085E+18"; + results[51][15]="9.998922084971854E+26"; + results[51][16]="1.148676757275435E+43"; + results[51][17]="1.183404352773304E+22"; + results[51][18]="9.014957029568579E+37"; + results[51][19]="7.627589343206385E+16"; + results[51][20]="3.050732364091198E+33"; + results[51][21]="1422167045577.915"; + results[51][22]="1.752645136580379E+28"; + results[51][23]="15587064.16428300"; + results[51][24]="9.283548079903686E+22"; + results[51][25]="9.293449673246033E+22"; + results[51][26]="2.489225429658254E+47"; + results[51][27]="1.083410706261310E+18"; + results[51][28]="3.838944597143528E+42"; + results[51][29]="18493997321370.88"; + results[51][30]="8.651913529303709E+36"; + results[51][31]="225651988.7241708"; + results[51][32]="1.758979441596474E+32"; + results[51][33]="970.9492576298560"; + results[51][34]="4.653480341774795E+27"; + results[51][35]="1.142324869654275E+19"; + results[51][36]="2.407084905737968E+51"; + results[51][37]="96649690895033.44"; + results[51][38]="1.178043004892208E+46"; + results[51][39]="1030090774.530830"; + results[51][40]="2.135895731345520E+41"; + results[51][41]="16491.57763724665"; + results[51][42]="7.713516096621809E+35"; + results[51][43]="0.2975023978573374"; + results[51][44]="2.026279332645786E+31"; + results[51][45]="2609546076992446"; + results[51][46]="1.420790770352885E+55"; + results[51][47]="9486370362.359466"; + results[51][48]="1.176499662485828E+50"; + results[51][49]="401754.0303139023"; + results[51][50]="3.964973795970168E+45"; + results[51][51]="1"; + results[51][52]="7.104768881441538E+40"; + results[51][53]="0.00002083005351866606"; + results[51][54]="2.897404938618912E+35"; + results[51][55]="105497912307.8994"; + results[51][56]="1.217810771541752E+59"; + results[51][57]="1058156.515955435"; + results[51][58]="9.733804730118538E+53"; + results[51][59]="20.76265399463438"; + results[51][60]="5.027661345707404E+49"; + results[51][61]="0.00009597934824093921"; + results[51][62]="3.594485606829729E+44"; + results[51][63]="8.163399552765810E-10"; + results[51][64]="3.755848932392581E+39"; + results[51][65]="8857014.831211825"; + results[51][66]="7.896124596543564E+62"; + results[51][67]="285.9055773891117"; + results[51][68]="1.684523803389072E+58"; + results[51][69]="0.001269857250584455"; + results[51][70]="1.236825879534966E+53"; + results[51][71]="7.760467764448543E-9"; + results[51][72]="3.014560493978934E+48"; + results[51][73]="1.470524271263579E-13"; + results[51][74]="8.419316996851535E+42"; + results[52][0]="0.000009542165339768479"; + results[52][1]="2.098208695724657E-11"; + results[52][2]="4.707702715884311E-16"; + results[52][3]="5.489694840870986E-21"; + results[52][4]="3.831632560574457E-26"; + results[52][5]="1.195445586399130E-10"; + results[52][6]="0.07429146957357580"; + results[52][7]="1.146424861461206E-15"; + results[52][8]="1.095196209197808E-7"; + results[52][9]="1.068631794769388E-20"; + results[52][10]="3.900039120795011E-12"; + results[52][11]="1.294983992124446E-25"; + results[52][12]="1.738811116505963E-17"; + results[52][13]="1.629308835837862E-30"; + results[52][14]="1.310084692372364E-22"; + results[52][15]="1.407353603167891E-14"; + results[52][16]="161.6768647148971"; + results[52][17]="1.665647922572809E-19"; + results[52][18]="0.001268859998122764"; + results[52][19]="1.073587258148610E-24"; + results[52][20]="4.293922033213574E-8"; + results[52][21]="2.001707682980056E-29"; + results[52][22]="2.466857354302527E-13"; + results[52][23]="2.193887573879874E-34"; + results[52][24]="1.306664331355432E-18"; + results[52][25]="1.308057985886294E-18"; + results[52][26]="3503598.035624204"; + results[52][27]="1.524906333112822E-23"; + results[52][28]="54.03334944745757"; + results[52][29]="2.603039962310287E-28"; + results[52][30]="0.0001217761432311118"; + results[52][31]="3.176063746613903E-33"; + results[52][32]="2.475772922312967E-9"; + results[52][33]="1.366616245837476E-38"; + results[52][34]="6.549798338873787E-14"; + results[52][35]="1.607828331528359E-22"; + results[52][36]="33879848111.95684"; + results[52][37]="1.360349541383301E-27"; + results[52][38]="165810.1796906287"; + results[52][39]="1.449858245525120E-32"; + results[52][40]="3.006284605435543"; + results[52][41]="2.321198326426144E-37"; + results[52][42]="0.00001085681494407283"; + results[52][43]="4.187362077807307E-42"; + results[52][44]="2.851998941075561E-10"; + results[52][45]="3.672949986886802E-26"; + results[52][46]="199977056827865.5"; + results[52][47]="1.335211675518248E-31"; + results[52][48]="1655929534.258291"; + results[52][49]="5.654709351113861E-36"; + results[52][50]="55807.21712605078"; + results[52][51]="1.407505320281584E-41"; + results[52][52]="1"; + results[52][53]="2.931841114927259E-46"; + results[52][54]="0.000004078112866116254"; + results[52][55]="1.484888728519684E-30"; + results[52][56]="1.714075140041236E+18"; + results[52][57]="1.489360925897899E-35"; + results[52][58]="13700381944223.89"; + results[52][59]="2.922354596061357E-40"; + results[52][60]="707646009.2657238"; + results[52][61]="1.350914432862808E-45"; + results[52][62]="5059.257615288420"; + results[52][63]="1.149002830210218E-50"; + results[52][64]="0.05286377354516463"; + results[52][65]="1.246629549674354E-34"; + results[52][66]="1.111383737924134E+22"; + results[52][67]="4.024136212733528E-39"; + results[52][68]="2.370976215411088E+17"; + results[52][69]="1.787330836195764E-44"; + results[52][70]="1740839005707.414"; + results[52][71]="1.092289966633505E-49"; + results[52][72]="42430099.33586029"; + results[52][73]="2.069770735406687E-54"; + results[52][74]="118.5023346620570"; + results[53][0]="3.254666595398102E+40"; + results[53][1]="7.156624842464271E+34"; + results[53][2]="1.605715497990454E+30"; + results[53][3]="1.872439407756647E+25"; + results[53][4]="1.306903208726412E+20"; + results[53][5]="4.077456927364187E+35"; + results[53][6]="2.533952784662378E+44"; + results[53][7]="3.910255762579582E+30"; + results[53][8]="3.735523741793833E+38"; + results[53][9]="3.644917145504665E+25"; + results[53][10]="1.330235496370605E+34"; + results[53][11]="4.416965112915320E+20"; + results[53][12]="5.930782222996091E+28"; + results[53][13]="5557288993398558"; + results[53][14]="4.468470974440470E+23"; + results[53][15]="4.800238307602860E+31"; + results[53][16]="5.514516591357251E+47"; + results[53][17]="5.681235296456829E+26"; + results[53][18]="4.327860714083221E+42"; + results[53][19]="3.661819369005083E+21"; + results[53][20]="1.464582105541592E+38"; + results[53][21]="6.827476675964822E+16"; + results[53][22]="8.414021284245927E+32"; + results[53][23]="748296885090.3456"; + results[53][24]="4.456804718040974E+27"; + results[53][25]="4.461558231196124E+27"; + results[53][26]="1.195016338977540E+52"; + results[53][27]="5.201190219172758E+22"; + results[53][28]="1.842983549563809E+47"; + results[53][29]="8.878516468907865E+17"; + results[53][30]="4.153572395553678E+41"; + results[53][31]="10833000910053.42"; + results[53][32]="8.444430735716701E+36"; + results[53][33]="46612902.68696511"; + results[53][34]="2.234022268644081E+32"; + results[53][35]="5.484022730093443E+23"; + results[53][36]="1.155582679411242E+56"; + results[53][37]="4.639915630001839E+18"; + results[53][38]="5.655496774583657E+50"; + results[53][39]="49452142482867.52"; + results[53][40]="1.025391379542793E+46"; + results[53][41]="791720367.9994558"; + results[53][42]="3.703070704887838E+40"; + results[53][43]="14282.36358541959"; + results[53][44]="9.727672234879347E+35"; + results[53][45]="1.252779343391509E+20"; + results[53][46]="6.820869514711989E+59"; + results[53][47]="455417474269022.8"; + results[53][48]="5.648087564592924E+54"; + results[53][49]="19287229864.95862"; + results[53][50]="1.903487090139787E+50"; + results[53][51]="48007.55788283925"; + results[53][52]="3.410826033199997E+45"; + results[53][53]="1"; + results[53][54]="1.390973353007717E+40"; + results[53][55]="5064697131640181"; + results[53][56]="5.846412110513578E+63"; + results[53][57]="50799510188.83404"; + results[53][58]="4.672961940014202E+58"; + results[53][59]="996764.3134487737"; + results[53][60]="2.413657430693617E+54"; + results[53][61]="4.607734116234075"; + results[53][62]="1.725624758289108E+49"; + results[53][63]="0.00003919048765501487"; + results[53][64]="1.803091350210368E+44"; + results[53][65]="425203652178.5674"; + results[53][66]="3.790736586186758E+67"; + results[53][67]="13725628.55553436"; + results[53][68]="8.086987399622141E+62"; + results[53][69]="60.96274546037631"; + results[53][70]="5.937699000276846E+57"; + results[53][71]="0.0003725611053996715"; + results[53][72]="1.447216874060142E+53"; + results[53][73]="7.059627907080629E-9"; + results[53][74]="4.041908480603224E+47"; + results[54][0]="2.339848271255880"; + results[54][1]="0.000005145048125465107"; + results[54][2]="1.154382644727447E-10"; + results[54][3]="1.346136073496915E-15"; + results[54][4]="9.395602050179328E-21"; + results[54][5]="0.00002931369546761954"; + results[54][6]="18217.11953851009"; + results[54][7]="2.811165112634539E-10"; + results[54][8]="0.02685546587730432"; + results[54][9]="2.620407599917871E-15"; + results[54][10]="9.563342773563720E-7"; + results[54][11]="3.175449122274317E-20"; + results[54][12]="4.263764083022794E-12"; + results[54][13]="3.995251944533639E-25"; + results[54][14]="3.212477769454207E-17"; + results[54][15]="3.450992283369952E-9"; + results[54][16]="39645019.65068670"; + results[54][17]="4.084359548780881E-14"; + results[54][18]="311.1390095809556"; + results[54][19]="2.632558963898978E-19"; + results[54][20]="0.01052918880419032"; + results[54][21]="4.908416585552623E-24"; + results[54][22]="6.049016874444212E-8"; + results[54][23]="5.379663697167850E-29"; + results[54][24]="3.204090652350726E-13"; + results[54][25]="3.207508052939222E-13"; + results[54][26]="859122381024.4411"; + results[54][27]="3.739245045871056E-18"; + results[54][28]="13249596.37493202"; + results[54][29]="6.382952232485079E-23"; + results[54][30]="29.86090557789883"; + results[54][31]="7.788072206149096E-28"; + results[54][32]="0.0006070878868712484"; + results[54][33]="3.351099615688073E-33"; + results[54][34]="1.606085597408052E-8"; + results[54][35]="3.942579286824783E-17"; + results[54][36]="8307726937489580"; + results[54][37]="3.335732938354928E-22"; + results[54][38]="40658555840.44592"; + results[54][39]="3.555218536425345E-27"; + results[54][40]="737175.4299430523"; + results[54][41]="5.691844249118863E-32"; + results[54][42]="2.662215416909782"; + results[54][43]="1.026789158436190E-36"; + results[54][44]="0.00006993428173045223"; + results[54][45]="9.006494198343990E-21"; + results[54][46]="4.903666558358682E+19"; + results[54][47]="3.274092011067419E-26"; + results[54][48]="406052894714338.1"; + results[54][49]="1.386599522072340E-30"; + results[54][50]="13684569053.92081"; + results[54][51]="3.451364311115807E-36"; + results[54][52]="245211.4575613350"; + results[54][53]="7.189210331295627E-41"; + results[54][54]="1"; + results[54][55]="3.641117294367092E-25"; + results[54][56]="4.203108634591608E+23"; + results[54][57]="3.652083634743231E-30"; + results[54][58]="3.359490625690135E+18"; + results[54][59]="7.165948300112717E-35"; + results[54][60]="173522909369510.1"; + results[54][61]="3.312596971229334E-40"; + results[54][62]="1240587934.023157"; + results[54][63]="2.817486587379466E-45"; + results[54][64]="12962.80296320216"; + results[54][65]="3.056878489146789E-29"; + results[54][66]="2.725240262863416E+27"; + results[54][67]="9.867643061497388E-34"; + results[54][68]="5.813905336242105E+22"; + results[54][69]="4.382739994878830E-39"; + results[54][70]="4.268736699691402E+17"; + results[54][71]="2.678420147978238E-44"; + results[54][72]="10404346502618.53"; + results[54][73]="5.075314988468698E-49"; + results[54][74]="29058130.20690411"; + results[55][0]="6.426182081186150E+24"; + results[55][1]="1.413041028209840E+19"; + results[55][2]="317040773861723.4"; + results[55][3]="3697041222.976872"; + results[55][4]="25804.17297930660"; + results[55][5]="8.050741873371843E+19"; + results[55][6]="5.003167452664180E+28"; + results[55][7]="772061124475030.9"; + results[55][8]="7.375611304488999E+22"; + results[55][9]="7196712953.937829"; + results[55][10]="2.626485773572434E+18"; + results[55][11]="87210.84396777946"; + results[55][12]="11710043204647.52"; + results[55][13]="1.097259885232042"; + results[55][14]="88227802.34034201"; + results[55][15]="9477838818070297"; + results[55][16]="1.088814680922766E+32"; + results[55][17]="112173248444.9072"; + results[55][18]="8.545152062590683E+26"; + results[55][19]="723008.5578324046"; + results[55][20]="2.891746668111807E+22"; + results[55][21]="13.48052311620413"; + results[55][22]="1.661307885852018E+17"; + results[55][23]="0.0001477476077326687"; + results[55][24]="879974577393.4671"; + results[55][25]="880913135619.4773"; + results[55][26]="2.359502074688797E+36"; + results[55][27]="10269499.01244810"; + results[55][28]="3.638882052887863E+31"; + results[55][29]="175.3020217821514"; + results[55][30]="8.201028191015562E+25"; + results[55][31]="0.002138923735908606"; + results[55][32]="1.667312085250398E+21"; + results[55][33]="9.203492622641725E-9"; + results[55][34]="4.410969127231112E+16"; + results[55][35]="108279381.5218219"; + results[55][36]="2.281642217442943E+40"; + results[55][37]="916.1289430349850"; + results[55][38]="1.116650537551916E+35"; + results[55][39]="0.009764086814575751"; + results[55][40]="2.024585780533582E+30"; + results[55][41]="1.563213648163519E-7"; + results[55][42]="7.311534349712662E+24"; + results[55][43]="2.819983745167070E-12"; + results[55][44]="1.920681924711475E+20"; + results[55][45]="24735.52338530067"; + results[55][46]="1.346747759525569E+44"; + results[55][47]="0.08991998187294129"; + results[55][48]="1.115187624805477E+39"; + results[55][49]="0.000003808170432239159"; + results[55][50]="3.758343373088038E+34"; + results[55][51]="9.478860558694889E-12"; + results[55][52]="6.734511352893900E+29"; + results[55][53]="1.974451727335874E-16"; + results[55][54]="2.746409739524259E+24"; + results[55][55]="1"; + results[55][56]="1.154345849032090E+48"; + results[55][57]="0.00001003011806401597"; + results[55][58]="9.226537774235836E+42"; + results[55][59]="1.968063020435687E-10"; + results[55][60]="4.765650083230079E+38"; + results[55][61]="9.097748584902804E-16"; + results[55][62]="3.407162784737478E+33"; + results[55][63]="7.737972604557934E-21"; + results[55][64]="3.560116830967234E+28"; + results[55][65]="0.00008395440855134944"; + results[55][66]="7.484626400471738E+51"; + results[55][67]="2.710059101024540E-9"; + results[55][68]="1.596736624012738E+47"; + results[55][69]="1.203679980773772E-14"; + results[55][70]="1.172370004749711E+42"; + results[55][71]="7.356039180945439E-20"; + results[55][72]="2.857459856817670E+37"; + results[55][73]="1.393889451548389E-24"; + results[55][74]="7.980553181260552E+31"; + results[56][0]="5.566946930657264E-24"; + results[56][1]="1.224105435467771E-29"; + results[56][2]="2.746497283526938E-34"; + results[56][3]="3.202715395976701E-39"; + results[56][4]="2.235393578184839E-44"; + results[56][5]="6.974289273983464E-29"; + results[56][6]="4.334201449989442E-20"; + results[56][7]="6.688299915682963E-34"; + results[56][8]="6.389429399060419E-26"; + results[56][9]="6.234451278160885E-39"; + results[56][10]="2.275302307167926E-30"; + results[56][11]="7.555001305796269E-44"; + results[56][12]="1.014431092247293E-35"; + results[56][13]="9.505469146461484E-49"; + results[56][14]="7.643099545454276E-41"; + results[56][15]="8.210571230465625E-33"; + results[56][16]="9.432309059158727E-17"; + results[56][17]="9.717473193927414E-38"; + results[56][18]="7.402592619669160E-22"; + results[56][19]="6.263361699083869E-43"; + results[56][20]="2.505095566061517E-26"; + results[56][21]="1.167806262525866E-47"; + results[56][22]="1.439176904603599E-31"; + results[56][23]="1.279924970982950E-52"; + results[56][24]="7.623144988404633E-37"; + results[56][25]="7.631275638562877E-37"; + results[56][26]="2.044016597510373E-12"; + results[56][27]="8.896379729748234E-42"; + results[56][28]="3.152332601134258E-17"; + results[56][29]="1.518626518466200E-46"; + results[56][30]="7.104481033905097E-23"; + results[56][31]="1.852931456982391E-51"; + results[56][32]="1.444378291521926E-27"; + results[56][33]="7.972907452613771E-57"; + results[56][34]="3.821185072852883E-32"; + results[56][35]="9.380150811181354E-41"; + results[56][36]="1.976567264789908E-8"; + results[56][37]="7.936347185751581E-46"; + results[56][38]="9.673448719794147E-14"; + results[56][39]="8.458545437455212E-51"; + results[56][40]="1.753881457824083E-18"; + results[56][41]="1.354198700046664E-55"; + results[56][42]="6.333920077629528E-24"; + results[56][43]="2.442927955717607E-60"; + results[56][44]="1.663870430445044E-28"; + results[56][45]="2.142817371937639E-44"; + results[56][46]="0.0001166676140131492"; + results[56][47]="7.789691620439270E-50"; + results[56][48]="9.660775630982277E-10"; + results[56][49]="3.298985685643760E-54"; + results[56][50]="3.255820927704967E-14"; + results[56][51]="8.211456355686501E-60"; + results[56][52]="5.834049958719679E-19"; + results[56][53]="1.710450753551403E-64"; + results[56][54]="2.379191419821972E-24"; + results[56][55]="8.662915025323579E-49"; + results[56][56]="1"; + results[56][57]="8.689006048253338E-54"; + results[56][58]="0.000007992871271614319"; + results[56][59]="1.704916271051602E-58"; + results[56][60]="4.128442171144841E-10"; + results[56][61]="7.881302291277083E-64"; + results[56][62]="2.951596168162563E-15"; + results[56][63]="6.703339914156715E-69"; + results[56][64]="3.084098958689342E-20"; + results[56][65]="7.272899072816394E-53"; + results[56][66]="6483.868250358015"; + results[56][67]="2.347701170578040E-57"; + results[56][68]="0.1383239369164440"; + results[56][69]="1.042737739112631E-62"; + results[56][70]="0.000001015614172938495"; + results[56][71]="6.372474234748120E-68"; + results[56][72]="2.475393192788476E-11"; + results[56][73]="1.207514587345858E-72"; + results[56][74]="6.913485406433592E-17"; + results[57][0]="6.406885781574903E+29"; + results[57][1]="1.408798001370755E+24"; + results[57][2]="3.160887756637065E+19"; + results[57][3]="368593988563342.1"; + results[57][4]="2572668917.216598"; + results[57][5]="8.026567406274776E+24"; + results[57][6]="4.988144128246639E+33"; + results[57][7]="7.697428081578381E+19"; + results[57][8]="7.353464094256007E+27"; + results[57][9]="717510293299212.7"; + results[57][10]="2.618599060159830E+23"; + results[57][11]="8694897050.180986"; + results[57][12]="1.167488072414467E+18"; + results[57][13]="109396.5074218388"; + results[57][14]="8796287518974.268"; + results[57][15]="9.449379117552936E+20"; + results[57][16]="1.085545228853283E+37"; + results[57][17]="1.118364188028252E+16"; + results[57][18]="8.519492999037822E+31"; + results[57][19]="72083753473.07911"; + results[57][20]="2.883063439189447E+27"; + results[57][21]="1344004.430472940"; + results[57][22]="1.656319372562645E+22"; + results[57][23]="14.73039567328003"; + results[57][24]="8.773322225891460E+16"; + results[57][25]="8.782679625475591E+16"; + results[57][26]="2.352417049958506E+41"; + results[57][27]="1023866214425.824"; + results[57][28]="3.627955353728795E+36"; + results[57][29]="17477563.14166077"; + results[57][30]="8.176402449775297E+30"; + results[57][31]="213.2501055578004"; + results[57][32]="1.662305542775258E+26"; + results[57][33]="0.0009175856718636401"; + results[57][34]="4.397724033833556E+21"; + results[57][35]="10795424423794.65"; + results[57][36]="2.274790987384843E+45"; + results[57][37]="91337802.52514549"; + results[57][38]="1.113297501011488E+40"; + results[57][39]="973.4767579262472"; + results[57][40]="2.018506429946206E+35"; + results[57][41]="0.01558519688588414"; + results[57][42]="7.289579547366953E+29"; + results[57][43]="2.811516003270229E-7"; + results[57][44]="1.914914572742777E+25"; + results[57][45]="2466124847.925947"; + results[57][46]="1.342703795638417E+49"; + results[57][47]="8964.997350882443"; + results[57][48]="1.111838981044821E+44"; + results[57][49]="0.3796735400255500"; + results[57][50]="3.747057959937145E+39"; + results[57][51]="9.450397790132930E-7"; + results[57][52]="6.714289213658032E+34"; + results[57][53]="1.968522917411524E-11"; + results[57][54]="2.738162922904441E+29"; + results[57][55]="99699.72373382105"; + results[57][56]="1.150879622417825E+53"; + results[57][57]="1"; + results[57][58]="9.198832671109769E+47"; + results[57][59]="0.00001962153394281874"; + results[57][60]="4.751339967101001E+43"; + results[57][61]="9.070430205145709E-11"; + results[57][62]="3.396931883544830E+38"; + results[57][63]="7.714737309343017E-16"; + results[57][64]="3.549426645075597E+33"; + results[57][65]="8.370231338805882"; + results[57][66]="7.462151843778957E+56"; + results[57][67]="0.0002701921436744741"; + results[57][68]="1.591942002897441E+52"; + results[57][69]="1.200065615470761E-9"; + results[57][70]="1.168849655873646E+47"; + results[57][71]="7.333950741154235E-15"; + results[57][72]="2.848879583052055E+42"; + results[57][73]="1.389703932348617E-19"; + results[57][74]="7.956589474147437E+36"; + results[58][0]="6.964890014465238E-19"; + results[58][1]="1.531496497153692E-24"; + results[58][2]="3.436183556816159E-29"; + results[58][3]="4.006964815448415E-34"; + results[58][4]="2.796734117467348E-39"; + results[58][5]="8.725636929437082E-24"; + results[58][6]="5.422583828394453E-15"; + results[58][7]="8.367831394252054E-29"; + results[58][8]="7.993910050511732E-21"; + results[58][9]="7.800014620905704E-34"; + results[58][10]="2.846664521232035E-25"; + results[58][11]="9.452174380221672E-39"; + results[58][12]="1.269169811166505E-30"; + results[58][13]="1.189243367426543E-43"; + results[58][14]="9.562395396755339E-36"; + results[58][15]="1.027236765294149E-27"; + results[58][16]="1.180090200208327E-11"; + results[58][17]="1.215767508784710E-32"; + results[58][18]="9.261493608634160E-17"; + results[58][19]="7.836184878051788E-38"; + results[58][20]="3.134162281529605E-21"; + results[58][21]="1.461059765435212E-42"; + results[58][22]="1.800575607560021E-26"; + results[58][23]="1.601333147361503E-47"; + results[58][24]="9.537429953960697E-32"; + results[58][25]="9.547602331172774E-32"; + results[58][26]="2.557299533609959E-7"; + results[58][27]="1.113039285562200E-36"; + results[58][28]="3.943930152271277E-12"; + results[58][29]="1.899976199866263E-41"; + results[58][30]="8.888521774566507E-18"; + results[58][31]="2.318230075295776E-46"; + results[58][32]="1.807083140011844E-22"; + results[58][33]="9.975022969440973E-52"; + results[58][34]="4.780741416946553E-27"; + results[58][35]="1.173564604311067E-35"; + results[58][36]="0.002472912671331814"; + results[58][37]="9.929281876384678E-41"; + results[58][38]="1.210259541417636E-8"; + results[58][39]="1.058261186752084E-45"; + results[58][40]="2.194307149738259E-13"; + results[58][41]="1.694258113296445E-50"; + results[58][42]="7.924461513753702E-19"; + results[58][43]="3.056383460588637E-55"; + results[58][44]="2.081693016068045E-23"; + results[58][45]="2.680910650403675E-39"; + results[58][46]="14.59645852517100"; + results[58][47]="9.745798919724109E-45"; + results[58][48]="0.0001208673992447659"; + results[58][49]="4.127410005162593E-49"; + results[58][50]="4.073405935195787E-9"; + results[58][51]="1.027347504625585E-54"; + results[58][52]="7.299066581290476E-14"; + results[58][53]="2.139970350361897E-59"; + results[58][54]="2.976641733579987E-19"; + results[58][55]="1.083830169527293E-43"; + results[58][56]="125111.4857249578"; + results[58][57]="1.087094456170119E-48"; + results[58][58]="1"; + results[58][59]="2.133046077079208E-53"; + results[58][60]="0.00005165155337615015"; + results[58][61]="9.860414391091898E-59"; + results[58][62]="3.692785818589105E-10"; + results[58][63]="8.386648159795576E-64"; + results[58][64]="3.858562028444187E-15"; + results[58][65]="9.099232085277269E-48"; + results[58][66]="811206390.0471738"; + results[58][67]="2.937243814892411E-52"; + results[58][68]="17305.91325894164"; + results[58][69]="1.304584677618646E-57"; + results[58][70]="0.1270649980996593"; + results[58][71]="7.972697192533506E-63"; + results[58][72]="0.000003097001201032130"; + results[58][73]="1.510739440573996E-67"; + results[58][74]="8.649564307367203E-12"; + results[59][0]="3.265231862221327E+34"; + results[59][1]="7.179856607930284E+28"; + results[59][2]="1.610927955912394E+24"; + results[59][3]="1.878517702221967E+19"; + results[59][4]="131114566512174.5"; + results[59][5]="4.090693128103987E+29"; + results[59][6]="2.542178477372429E+38"; + results[59][7]="3.922949196535957E+24"; + results[59][8]="3.747649962375796E+32"; + results[59][9]="3.656749239841227E+19"; + results[59][10]="1.334553693809554E+28"; + results[59][11]="443130342180164.7"; + results[59][12]="5.950034670157650E+22"; + results[59][13]="5575329010.496484"; + results[59][14]="4.482976481149991E+17"; + results[59][15]="4.815820794179703E+25"; + results[59][16]="5.532417761102616E+41"; + results[59][17]="5.699677666829715E+20"; + results[59][18]="4.341909773142817E+36"; + results[59][19]="3673706331174018"; + results[59][20]="1.469336417627336E+32"; + results[59][21]="68496399638.76680"; + results[59][22]="8.441334797725325E+26"; + results[59][23]="750725.9991093196"; + results[59][24]="4.471272353863239E+21"; + results[59][25]="4.476041297826234E+21"; + results[59][26]="1.198895589312202E+46"; + results[59][27]="5.218074271917703E+16"; + results[59][28]="1.848966224710778E+41"; + results[59][29]="890733782210.6083"; + results[59][30]="4.167055681580780E+35"; + results[59][31]="10868166.89150073"; + results[59][32]="8.471842964059609E+30"; + results[59][33]="46.76421703510423"; + results[59][34]="2.241274329850788E+26"; + results[59][35]="5.501824910965054E+17"; + results[59][36]="1.159333920586464E+50"; + results[59][37]="4654977678672.980"; + results[59][38]="5.673855592818941E+44"; + results[59][39]="49612673.54342235"; + results[59][40]="1.028719994995578E+40"; + results[59][41]="794.2904429033256"; + results[59][42]="3.715091576739267E+34"; + results[59][43]="0.01432872685419792"; + results[59][44]="9.759250109207765E+29"; + results[59][45]="125684610342532.4"; + results[59][46]="6.843011354521704E+53"; + results[59][47]="456895846.0132791"; + results[59][48]="5.666422331123308E+48"; + results[59][49]="19349.83988163200"; + results[59][50]="1.909666171287554E+44"; + results[59][51]="0.04816339954701486"; + results[59][52]="3.421898223260666E+39"; + results[59][53]="0.000001003246190205216"; + results[59][54]="1.395488717081967E+34"; + results[59][55]="5081138101.861297"; + results[59][56]="5.865390676242383E+57"; + results[59][57]="50964.41506123880"; + results[59][58]="4.688131263293223E+52"; + results[59][59]="1"; + results[59][60]="2.421492621803881E+48"; + results[59][61]="0.000004622691697590433"; + results[59][62]="1.731226464477344E+43"; + results[59][63]="3.931770743217822E-11"; + results[59][64]="1.808944527690531E+38"; + results[59][65]="426583.9441094915"; + results[59][66]="3.803042038163392E+61"; + results[59][67]="13.77018455651177"; + results[59][68]="8.113239298908500E+56"; + results[59][69]="0.00006116064212757286"; + results[59][70]="5.956973900613066E+51"; + results[59][71]="3.737705096108644E-10"; + results[59][72]="1.451914815301539E+47"; + results[59][73]="7.082544802045064E-15"; + results[59][74]="4.055029284323338E+41"; + results[60][0]="1.348437667255375E-14"; + results[60][1]="2.965054092372860E-20"; + results[60][2]="6.652623846164517E-25"; + results[60][3]="7.757685013397121E-30"; + results[60][4]="5.414617634246651E-35"; + results[60][5]="1.689327108110964E-19"; + results[60][6]="1.049839447984212E-10"; + results[60][7]="1.620054160484525E-24"; + results[60][8]="1.547661111428041E-16"; + results[60][9]="1.510121982992930E-29"; + results[60][10]="5.511285402205287E-21"; + results[60][11]="1.829988405457360E-34"; + results[60][12]="2.457176460742298E-26"; + results[60][13]="2.302434853732143E-39"; + results[60][14]="1.851327747515669E-31"; + results[60][15]="1.988781940038362E-23"; + results[60][16]="2.284713862551959E-7"; + results[60][17]="2.353786922788046E-28"; + results[60][18]="1.793071650950697E-12"; + results[60][19]="1.517124726334002E-33"; + results[60][20]="6.067895497169673E-17"; + results[60][21]="2.828685044174972E-38"; + results[60][22]="3.486004756618662E-22"; + results[60][23]="3.100261352644838E-43"; + results[60][24]="1.846494312475907E-27"; + results[60][25]="1.848463735764689E-27"; + results[60][26]="0.004951060261414672"; + results[60][27]="2.154899926158156E-32"; + results[60][28]="7.635646741444116E-8"; + results[60][29]="3.678449292763319E-37"; + results[60][30]="1.720862431732932E-13"; + results[60][31]="4.488209789961917E-42"; + results[60][32]="3.498603666092752E-18"; + results[60][33]="1.931214516782934E-47"; + results[60][34]="9.255755353824531E-23"; + results[60][35]="2.272079981340803E-31"; + results[60][36]="47.87683060222675"; + results[60][37]="1.922358811568574E-36"; + results[60][38]="0.0002343123221491472"; + results[60][39]="2.048846777260200E-41"; + results[60][40]="4.248288785737604E-9"; + results[60][41]="3.280168751088831E-46"; + results[60][42]="1.534215526112867E-14"; + results[60][43]="5.917311795698881E-51"; + results[60][44]="4.030262170254993E-19"; + results[60][45]="5.190377588220942E-35"; + results[60][46]="282594.7637793763"; + results[60][47]="1.886835590161396E-40"; + results[60][48]="2.340053519098534"; + results[60][49]="7.990872946462834E-45"; + results[60][50]="0.00007886318356258115"; + results[60][51]="1.988996336942614E-50"; + results[60][52]="1.413135928001109E-9"; + results[60][53]="4.143090014694539E-55"; + results[60][54]="5.762927809552455E-15"; + results[60][55]="2.098349611355051E-39"; + results[60][56]="2422221163.685803"; + results[60][57]="2.104669434147318E-44"; + results[60][58]="19360.50195272046"; + results[60][59]="4.129684274053472E-49"; + results[60][60]="1"; + results[60][61]="1.909025720733676E-54"; + results[60][62]="0.000007149418705177280"; + results[60][63]="1.623697180745017E-59"; + results[60][64]="7.470369768638670E-11"; + results[60][65]="1.761657005552672E-43"; + results[60][66]="15705362898567.62"; + results[60][67]="5.686651461384062E-48"; + results[60][68]="335051167.4433505"; + results[60][69]="2.525741419852499E-53"; + results[60][70]="2460.042143830875"; + results[60][71]="1.543554195644939E-58"; + results[60][72]="0.05995949780016016"; + results[60][73]="2.924867388928466E-63"; + results[60][74]="1.674599066629639E-7"; + results[61][0]="7.063486115509977E+39"; + results[61][1]="1.553176607402299E+34"; + results[61][2]="3.484826722820572E+29"; + results[61][3]="4.063688052571492E+24"; + results[61][4]="2.836325134564299E+19"; + results[61][5]="8.849158446444201E+34"; + results[61][6]="5.499346795499110E+43"; + results[61][7]="8.486287758668364E+29"; + results[61][8]="8.107073124364424E+37"; + results[61][9]="7.910432879932915E+24"; + results[61][10]="2.886962361139478E+33"; + results[61][11]="9.585980878005454E+19"; + results[61][12]="1.287136382739755E+28"; + results[61][13]="1206078487432465"; + results[61][14]="9.697762200941783E+22"; + results[61][15]="1.041778493835083E+31"; + results[61][16]="1.196795746509847E+47"; + results[61][17]="1.232978108793337E+26"; + results[61][18]="9.392600798807385E+41"; + results[61][19]="7.947115169045187E+20"; + results[61][20]="3.178529985880788E+37"; + results[61][21]="1.481742762003150E+16"; + results[61][22]="1.826064844887958E+32"; + results[61][23]="162400187644.0589"; + results[61][24]="9.672443343331502E+26"; + results[61][25]="9.682759722348257E+26"; + results[61][26]="2.593501076303929E+51"; + results[61][27]="1.128795648353017E+22"; + results[61][28]="3.999761060584132E+46"; + results[61][29]="1.926872567934611E+17"; + results[61][30]="9.014349115587456E+40"; + results[61][31]="2351047312362.565"; + results[61][32]="1.832664499013753E+36"; + results[61][33]="10116230.99578109"; + results[61][34]="4.848418359846594E+31"; + results[61][35]="1.190177773229581E+23"; + results[61][36]="2.507919620057646E+55"; + results[61][37]="1.006984238446915E+18"; + results[61][38]="1.227392169756080E+50"; + results[61][39]="10732421019831.98"; + results[61][40]="2.225370113978822E+45"; + results[61][41]="171824230.3109566"; + results[61][42]="8.036641462972210E+39"; + results[61][43]="3099.650115465570"; + results[61][44]="2.111161796555619E+35"; + results[61][45]="2.718862051908959E+19"; + results[61][46]="1.480308833506809E+59"; + results[61][47]="98837620136215.22"; + results[61][48]="1.225784175500373E+54"; + results[61][49]="4185838283.725054"; + results[61][50]="4.131069723475097E+49"; + results[61][51]="10418.90800810271"; + results[61][52]="7.402393339457015E+44"; + results[61][53]="0.2170264114148377"; + results[61][54]="3.018779551769291E+39"; + results[61][55]="1099173043382890"; + results[61][56]="1.268825839997009E+63"; + results[61][57]="11024835397.91414"; + results[61][58]="1.014156160519400E+58"; + results[61][59]="216324.1819741618"; + results[61][60]="5.238274105681931E+53"; + results[61][61]="1"; + results[61][62]="3.745061487400818E+48"; + results[61][63]="0.000008505370897365375"; + results[61][64]="3.913184451892906E+43"; + results[61][65]="92280422752.79732"; + results[61][66]="8.226899579190449E+66"; + results[61][67]="2978823.909820644"; + results[61][68]="1.755089854497003E+62"; + results[61][69]="13.23052587726166"; + results[61][70]="1.288637506091553E+57"; + results[61][71]="0.00008085559973763583"; + results[61][72]="3.140842847162717E+52"; + results[61][73]="1.532125710597750E-9"; + results[61][74]="8.772008928125169E+46"; + results[62][0]="1.886080145619249E-9"; + results[62][1]="4.147265973142270E-15"; + results[62][2]="9.305125522088941E-20"; + results[62][3]="1.085079127870824E-24"; + results[62][4]="7.573507522122931E-30"; + results[62][5]="2.362887358782933E-14"; + results[62][6]="0.00001468426303279687"; + results[62][7]="2.265994239939194E-19"; + results[62][8]="2.164736988067710E-11"; + results[62][9]="2.112230441755173E-24"; + results[62][10]="7.708718190213518E-16"; + results[62][11]="2.559632441351024E-29"; + results[62][12]="3.436889853664501E-21"; + results[62][13]="3.220450429158424E-34"; + results[62][14]="2.589480101613048E-26"; + results[62][15]="2.781739358191706E-18"; + results[62][16]="0.03195663810957770"; + results[62][17]="3.292277344287504E-23"; + results[62][18]="2.507996418858833E-7"; + results[62][19]="2.122025284706531E-28"; + results[62][20]="8.487257142703900E-12"; + results[62][21]="3.956524524331703E-33"; + results[62][22]="4.875927540926171E-17"; + results[62][23]="4.336382411621481E-38"; + results[62][24]="2.582719502969886E-22"; + results[62][25]="2.585474165089977E-22"; + results[62][26]="692.5122818487806"; + results[62][27]="3.014091096102228E-27"; + results[62][28]="0.01068009450322826"; + results[62][29]="5.145102622258724E-32"; + results[62][30]="2.406996292561188E-8"; + results[62][31]="6.277726868495983E-37"; + results[62][32]="4.893549826028827E-13"; + results[62][33]="2.701218933204230E-42"; + results[62][34]="1.294616490585723E-17"; + results[62][35]="3.177992610357912E-26"; + results[62][36]="6696604.657880305"; + results[62][37]="2.688832324474842E-31"; + results[62][38]="32.77361864111679"; + results[62][39]="2.865752953840177E-36"; + results[62][40]="0.0005942145733696068"; + results[62][41]="4.588021608964494E-41"; + results[62][42]="2.145930444669381E-9"; + results[62][43]="8.276633443518753E-46"; + results[62][44]="5.637188611343273E-14"; + results[62][45]="7.259859580559060E-30"; + results[62][46]="39526956726.52857"; + results[62][47]="2.639145457790906E-35"; + results[62][48]="327306.8224978871"; + results[62][49]="1.117695476511428E-39"; + results[62][50]="11.03071267954583"; + results[62][51]="2.782039238382100E-45"; + results[62][52]="0.0001976574580780646"; + results[62][53]="5.795002622652810E-50"; + results[62][54]="8.060694228719894E-10"; + results[62][55]="2.934993316079701E-34"; + results[62][56]="338799735135353.3"; + results[62][57]="2.943832947737714E-39"; + results[62][58]="2707982669.793906"; + results[62][59]="5.776251810602371E-44"; + results[62][60]="139871.5114105495"; + results[62][61]="2.670183128806329E-49"; + results[62][62]="1"; + results[62][63]="2.271089787438537E-54"; + results[62][64]="0.00001044891910335168"; + results[62][65]="2.464056279536351E-38"; + results[62][66]="2.196732845873822E+18"; + results[62][67]="7.954005347687989E-43"; + results[62][68]="46864113190170.53"; + results[62][69]="3.532792698269964E-48"; + results[62][70]="344089812.7912729"; + results[62][71]="2.158992582889526E-53"; + results[62][72]="8386.625580725921"; + results[62][73]="4.091056223648521E-58"; + results[62][74]="0.02342287024561831"; + results[63][0]="8.304736149364119E+44"; + results[63][1]="1.826112730584637E+39"; + results[63][2]="4.097207241015242E+34"; + results[63][3]="4.777790529781906E+29"; + results[63][4]="3.334745972621699E+24"; + results[63][5]="1.040420053778644E+40"; + results[63][6]="6.465734254108293E+48"; + results[63][7]="9.977563425596263E+34"; + results[63][8]="9.531710283058522E+42"; + results[63][9]="9.300514904509633E+29"; + results[63][10]="3.394281561588036E+38"; + results[63][11]="1.127050306645041E+25"; + results[63][12]="1.513321874227095E+33"; + results[63][13]="1.418019862962190E+20"; + results[63][14]="1.140192746202962E+28"; + results[63][15]="1.224847812524888E+36"; + results[63][16]="1.407105887505231E+52"; + results[63][17]="1.449646492400778E+31"; + results[63][18]="1.104314075441065E+47"; + results[63][19]="9.343643287216183E+25"; + results[63][20]="3.737085688838532E+42"; + results[63][21]="1.742125981198698E+21"; + results[63][22]="2.146954985177189E+37"; + results[63][23]="1.909383959897199E+16"; + results[63][24]="1.137215938028950E+32"; + results[63][25]="1.138428863266573E+32"; + results[63][26]="3.049251005746606E+56"; + results[63][27]="1.327156289801157E+27"; + results[63][28]="4.702629795748353E+51"; + results[63][29]="2.265477415607447E+22"; + results[63][30]="1.059841978011769E+46"; + results[63][31]="2.764191404152434E+17"; + results[63][32]="2.154714381216979E+41"; + results[63][33]="1189393280769.765"; + results[63][34]="5.700419674053768E+36"; + results[63][35]="1.399324953128441E+28"; + results[63][36]="2.948630518669679E+60"; + results[63][37]="1.183939243330163E+23"; + results[63][38]="1.443078949251087E+55"; + results[63][39]="1.261840447564310E+18"; + results[63][40]="2.616429243159934E+50"; + results[63][41]="20201850381878.22"; + results[63][42]="9.448901829150850E+44"; + results[63][43]="364434444.1728835"; + results[63][44]="2.482151362981211E+40"; + results[63][45]="3.196641374864857E+24"; + results[63][46]="1.740440071773177E+64"; + results[63][47]="1.162061259043167E+19"; + results[63][48]="1.441188385893991E+59"; + results[63][49]="492140593777240.2"; + results[63][50]="4.857013025445766E+54"; + results[63][51]="1224979854.944370"; + results[63][52]="8.703198753801531E+49"; + results[63][53]="25516.39593777902"; + results[63][54]="3.549262681424497E+44"; + results[63][55]="1.292328173158645E+20"; + results[63][56]="1.491793662272907E+68"; + results[63][57]="1296220415423529"; + results[63][58]="1.192371470635743E+63"; + results[63][59]="25433832878.60738"; + results[63][60]="6.158783865974074E+58"; + results[63][61]="117572.7680858409"; + results[63][62]="4.403172457253908E+53"; + results[63][63]="1"; + results[63][64]="4.600839280395232E+48"; + results[63][65]="1.084966474317800E+16"; + results[63][66]="9.672593562896609E+71"; + results[63][67]="350228572717.9005"; + results[63][68]="2.063507724325885E+67"; + results[63][69]="1555549.550621002"; + results[63][70]="1.515086786504186E+62"; + results[63][71]="9.506416676394638"; + results[63][72]="3.692775876635344E+57"; + results[63][73]="0.0001801362608504635"; + results[63][74]="1.031349371353387E+52"; + results[64][0]="0.0001805048088671923"; + results[64][1]="3.969086115148465E-10"; + results[64][2]="8.905347462307516E-15"; + results[64][3]="1.038460645678428E-19"; + results[64][4]="7.248125329722949E-25"; + results[64][5]="2.261370133514570E-9"; + results[64][6]="1.405337995973826"; + results[64][7]="2.168639854061398E-14"; + results[64][8]="0.000002071732938743234"; + results[64][9]="2.021482242194446E-19"; + results[64][10]="7.377526913516641E-11"; + results[64][11]="2.449662415828232E-24"; + results[64][12]="3.289230033910451E-16"; + results[64][13]="3.082089541802851E-29"; + results[64][14]="2.478227724801148E-21"; + results[64][15]="2.662226906608371E-13"; + results[64][16]="3058.367836279547"; + results[64][17]="3.150830542109802E-18"; + results[64][18]="0.02400244842602282"; + results[64][19]="2.030856267253379E-23"; + results[64][20]="8.122617333673738E-7"; + results[64][21]="3.786539531215795E-28"; + results[64][22]="4.666442043141217E-12"; + results[64][23]="4.150077504409531E-33"; + results[64][24]="2.471757583175691E-17"; + results[64][25]="2.474393896169260E-17"; + results[64][26]="66275973.14124528"; + results[64][27]="2.884596068061627E-22"; + results[64][28]="1022.124336267703"; + results[64][29]="4.924052498988474E-27"; + results[64][30]="0.002303584005917990"; + results[64][31]="6.008015572139217E-32"; + results[64][32]="4.683307218312307E-8"; + results[64][33]="2.585165897530746E-37"; + results[64][34]="1.238995610723459E-12"; + results[64][35]="3.041455847178024E-21"; + results[64][36]="640889702718.8438"; + results[64][37]="2.573311457270591E-26"; + results[64][38]="3136555.878837656"; + results[64][39]="2.742631008523106E-31"; + results[64][40]="56.86852080029998"; + results[64][41]="4.390905474129667E-36"; + results[64][42]="0.0002053734384814057"; + results[64][43]="7.921042704660115E-41"; + results[64][44]="5.394996894497005E-9"; + results[64][45]="6.947952710467755E-25"; + results[64][46]="3782875179294822"; + results[64][47]="2.525759297863022E-30"; + results[64][48]="31324467082.23605"; + results[64][49]="1.069675691290314E-34"; + results[64][50]="1055679.785673480"; + results[64][51]="2.662513902983238E-40"; + results[64][52]="18.91654592432077"; + results[64][53]="5.546030709333330E-45"; + results[64][54]="0.00007714380931645150"; + results[64][55]="2.808896582554887E-29"; + results[64][56]="3.242438110432659E+19"; + results[64][57]="2.817356435263650E-34"; + results[64][58]="259163904228646.2"; + results[64][59]="5.528085492354452E-39"; + results[64][60]="13386218232.43738"; + results[64][61]="2.555463490907705E-44"; + results[64][62]="95703.67902257296"; + results[64][63]="2.173516480484612E-49"; + results[64][64]="1"; + results[64][65]="2.358192512703023E-33"; + results[64][66]="2.102354151798515E+23"; + results[64][67]="7.612275747389602E-38"; + results[64][68]="4.485068046429608E+18"; + results[64][69]="3.381012584485181E-43"; + results[64][70]="32930660998313.20"; + results[64][71]="2.066235331649750E-48"; + results[64][72]="802630922.6602931"; + results[64][73]="3.915291316913575E-53"; + results[64][74]="2241.654855774030"; + results[65][0]="7.654371214175933E+28"; + results[65][1]="1.683105214594628E+23"; + results[65][2]="3.776344558103940E+18"; + results[65][3]="44036296446727.19"; + results[65][4]="307359356.4002524"; + results[65][5]="9.589421225506852E+23"; + results[65][6]="5.959386218061519E+32"; + results[65][7]="9.196195146831527E+18"; + results[65][8]="8.785257893845823E+26"; + results[65][9]="85721680113273.25"; + results[65][10]="3.128466770111285E+22"; + results[65][11]="1038788140.761402"; + results[65][12]="1.394809802928366E+17"; + results[65][13]="13069.71133696832"; + results[65][14]="1050901362569.648"; + results[65][15]="1.128926876100059E+20"; + results[65][16]="1.296911859318036E+36"; + results[65][17]="1336121001630285"; + results[65][18]="1.017832441445189E+31"; + results[65][19]="8611918901.080548"; + results[65][20]="3.444425037361932E+26"; + results[65][21]="160569.5680407179"; + results[65][22]="1.978821499094838E+21"; + results[65][23]="1.759855262899042"; + results[65][24]="1.048157675788096E+16"; + results[65][25]="1.049275613776351E+16"; + results[65][26]="2.810456431535270E+40"; + results[65][27]="122322331723.2581"; + results[65][28]="4.334354938206963E+35"; + results[65][29]="2088062.137617592"; + results[65][30]="9.768430666746378E+29"; + results[65][31]="25.47720569790407"; + results[65][32]="1.985973237165517E+25"; + results[65][33]="0.0001096248878581826"; + results[65][34]="5.254005362366659E+20"; + results[65][35]="1289740269632.112"; + results[65][36]="2.717715789811575E+44"; + results[65][37]="10912219.60636705"; + results[65][38]="1.330067779429277E+39"; + results[65][39]="116.3022524136263"; + results[65][40]="2.411530038110238E+34"; + results[65][41]="0.001861979227937033"; + results[65][42]="8.708934379831493E+28"; + results[65][43]="3.358946592354670E-8"; + results[65][44]="2.287767799039069E+24"; + results[65][45]="294630428.7305122"; + results[65][46]="1.604141798821501E+48"; + results[65][47]="1071.057296746282"; + results[65][48]="1.328325270880074E+43"; + results[65][49]="0.04535998166087906"; + results[65][50]="4.476648025921479E+38"; + results[65][51]="1.129048577943026E-7"; + results[65][52]="8.021629202205431E+33"; + results[65][53]="2.351814230372703E-12"; + results[65][54]="3.271310925672783E+28"; + results[65][55]="11911.22678671919"; + results[65][56]="1.374967519812914E+52"; + results[65][57]="0.1194710109580630"; + results[65][58]="1.098993838851543E+47"; + results[65][59]="0.000002344204496696504"; + results[65][60]="5.676473892750065E+42"; + results[65][61]="1.083653466433309E-11"; + results[65][62]="4.058348862827780E+37"; + results[65][63]="9.216874656230971E-17"; + results[65][64]="4.240535896086675E+32"; + results[65][65]="1"; + results[65][66]="8.915108246988459E+55"; + results[65][67]="0.00003228012855771563"; + results[65][68]="1.901909204727609E+51"; + results[65][69]="1.433730522963019E-10"; + results[65][70]="1.396436500452086E+46"; + results[65][71]="8.761945093623320E-16"; + results[65][72]="3.403585238850141E+41"; + results[65][73]="1.660293337300849E-20"; + results[65][74]="9.505817882546773E+35"; + results[66][0]="8.585842148087876E-28"; + results[66][1]="1.887924597172652E-33"; + results[66][2]="4.235893108061360E-38"; + results[66][3]="4.939513377372926E-43"; + results[66][4]="3.447623381399535E-48"; + results[66][5]="1.075637104994903E-32"; + results[66][6]="6.684592102484691E-24"; + results[66][7]="1.031529275030174E-37"; + results[66][8]="9.854347979244672E-30"; + results[66][9]="9.615326896589304E-43"; + results[66][10]="3.509174183238983E-34"; + results[66][11]="1.165199694700630E-47"; + results[66][12]="1.564546121354764E-39"; + results[66][13]="1.466018243960560E-52"; + results[66][14]="1.178786991088576E-44"; + results[66][15]="1.266307536401941E-36"; + results[66][16]="1.454734842682516E-20"; + results[66][17]="1.498715399312880E-41"; + results[66][18]="1.141693867585976E-25"; + results[66][19]="9.659915126649943E-47"; + results[66][20]="3.863581845487368E-30"; + results[66][21]="1.801094990573543E-51"; + results[66][22]="2.219627002020180E-35"; + results[66][23]="1.974014464146888E-56"; + results[66][24]="1.175709421298576E-40"; + results[66][25]="1.176963402694295E-40"; + results[66][26]="3.152464730290456E-16"; + results[66][27]="1.372079040819037E-45"; + results[66][28]="4.861808536840948E-21"; + results[66][29]="2.342161283709532E-50"; + results[66][30]="1.095716439567200E-26"; + results[66][31]="2.857756181088471E-55"; + results[66][32]="2.227649044907988E-31"; + results[66][33]="1.229652908535508E-60"; + results[66][34]="5.893372482764269E-36"; + results[66][35]="1.446690532409171E-44"; + results[66][36]="3.048438352646615E-12"; + results[66][37]="1.224014258049331E-49"; + results[66][38]="1.491925552197951E-17"; + results[66][39]="1.304552330622721E-54"; + results[66][40]="2.704992436771430E-22"; + results[66][41]="2.088566034591912E-59"; + results[66][42]="9.768736552103434E-28"; + results[66][43]="3.767701411241225E-64"; + results[66][44]="2.566169401041071E-32"; + results[66][45]="3.304844097995546E-48"; + results[66][46]="1.799352015005968E-8"; + results[66][47]="1.201395728546636E-53"; + results[66][48]="1.489970995392888E-13"; + results[66][49]="5.087990005752511E-58"; + results[66][50]="5.021417465608115E-18"; + results[66][51]="1.266444048309139E-63"; + results[66][52]="8.997792264513616E-23"; + results[66][53]="2.638009730467547E-68"; + results[66][54]="3.669401240055428E-28"; + results[66][55]="1.336072031513787E-52"; + results[66][56]="0.0001542289203585813"; + results[66][57]="1.340096021811295E-57"; + results[66][58]="1.232731906786197E-9"; + results[66][59]="2.629473957860669E-62"; + results[66][60]="6.367251788185060E-14"; + results[66][61]="1.215524743403277E-67"; + results[66][62]="4.552214903502375E-19"; + results[66][63]="1.033848877756975E-72"; + results[66][64]="4.756572526776819E-24"; + results[66][65]="1.121691371877399E-56"; + results[66][66]="1"; + results[66][67]="3.620834168628286E-61"; + results[66][68]="0.00002133355145037165"; + results[66][69]="1.608203157204890E-66"; + results[66][70]="1.566370773931775E-10"; + results[66][71]="9.828198212380789E-72"; + results[66][72]="3.817772195867480E-15"; + results[66][73]="1.862336711235894E-76"; + results[66][74]="1.066259390149060E-20"; + results[67][0]="2.371233187776874E+33"; + results[67][1]="5.214059825026099E+27"; + results[67][2]="1.169866641439169E+23"; + results[67][3]="1.364192102518798E+18"; + results[67][4]="9521627395340.313"; + results[67][5]="2.970688672556348E+28"; + results[67][6]="1.846146990216091E+37"; + results[67][7]="2.848871909041218E+23"; + results[67][8]="2.721568434319621E+31"; + results[67][9]="2.655555722462696E+18"; + results[67][10]="9.691618063161386E+26"; + results[67][11]="32180421428746.45"; + results[67][12]="4.320954919477782E+21"; + results[67][13]="404884116.6663938"; + results[67][14]="3.255567463712780E+16"; + results[67][15]="3.497281226998773E+24"; + results[67][16]="4.017678730737416E+40"; + results[67][17]="4.139143991453913E+19"; + results[67][18]="3.153123878132466E+35"; + results[67][19]="266787007544990.6"; + results[67][20]="1.067041920605562E+31"; + results[67][21]="4974254292.501521"; + results[67][22]="6.130153712234388E+25"; + results[67][23]="54518.22348701272"; + results[67][24]="3.247067848301876E+20"; + results[67][25]="3.250531087260965E+20"; + results[67][26]="8.706459847302905E+44"; + results[67][27]="3789400389299890"; + results[67][28]="1.342731622167273E+40"; + results[67][29]="64685682211.09210"; + results[67][30]="3.026143668938864E+34"; + results[67][31]="789253.5388250330"; + results[67][32]="6.152308946399247E+29"; + results[67][33]="3.396048676267737"; + results[67][34]="1.627628388459699E+25"; + results[67][35]="3.995461998628989E+16"; + results[67][36]="8.419160366577858E+48"; + results[67][37]="338047588219.9918"; + results[67][38]="4.120391828834159E+43"; + results[67][39]="3602905.490468613"; + results[67][40]="7.470633314853486E+38"; + results[67][41]="57.68190249329044"; + results[67][42]="2.697924317203462E+33"; + results[67][43]="0.001040561714724588"; + results[67][44]="7.087232614171990E+28"; + results[67][45]="9127300351475.501"; + results[67][46]="4.969440552113530E+52"; + results[67][47]="33180081.51148695"; + results[67][48]="4.114993744541877E+47"; + results[67][49]="1405.198296524041"; + results[67][50]="1.386812328803897E+43"; + results[67][51]="0.003497658244837316"; + results[67][52]="2.485005345583759E+38"; + results[67][53]="7.285640842996488E-8"; + results[67][54]="1.013413227219280E+33"; + results[67][55]="368995642.7968486"; + results[67][56]="4.259485885734702E+56"; + results[67][57]="3701.069862359855"; + results[67][58]="3.404552236793557E+51"; + results[67][59]="0.07262066792903739"; + results[67][60]="1.758504115806338E+47"; + results[67][61]="3.357029587090330E-7"; + results[67][62]="1.257228221867707E+42"; + results[67][63]="2.855278175163260E-12"; + results[67][64]="1.313667598474634E+37"; + results[67][65]="30978.81094903443"; + results[67][66]="2.761794529736332E+60"; + results[67][67]="1"; + results[67][68]="5.891888569548503E+55"; + results[67][69]="0.000004441526682273164"; + results[67][70]="4.325994234983640E+50"; + results[67][71]="2.714346406011766E-11"; + results[67][72]="1.054390236632627E+46"; + results[67][73]="5.143391341618445E-16"; + results[67][74]="2.944789350993672E+40"; + results[68][0]="4.024572358737908E-23"; + results[68][1]="8.849556069295544E-29"; + results[68][2]="1.985554593624666E-33"; + results[68][3]="2.315373222720905E-38"; + results[68][4]="1.616056937083241E-43"; + results[68][5]="5.041997379091630E-28"; + results[68][6]="3.133370511719575E-19"; + results[68][7]="4.835244040026928E-33"; + results[68][8]="4.619178387700187E-25"; + results[68][9]="4.507138400728770E-38"; + results[68][10]="1.644908580459467E-29"; + results[68][11]="5.461817725994849E-43"; + results[68][12]="7.333734962012186E-35"; + results[68][13]="6.871890258736175E-48"; + results[68][14]="5.525507526633783E-40"; + results[68][15]="5.935755888314043E-32"; + results[68][16]="6.818999856009313E-16"; + results[68][17]="7.025156607418828E-37"; + results[68][18]="5.351635287926178E-21"; + results[68][19]="4.528038919877851E-42"; + results[68][20]="1.811035473617807E-25"; + results[68][21]="8.442546449724692E-47"; + results[68][22]="1.040439519497590E-30"; + results[68][23]="9.253098194827277E-52"; + results[68][24]="5.511081565737588E-36"; + results[68][25]="5.516959543432190E-36"; + results[68][26]="1.477702733941909E-11"; + results[68][27]="6.431554746104564E-41"; + results[68][28]="2.278949451126784E-16"; + results[68][29]="1.097876876786368E-45"; + results[68][30]="5.136118297584773E-22"; + results[68][31]="1.339559513912385E-50"; + results[68][32]="1.044199813655115E-26"; + results[68][33]="5.763939076885797E-56"; + results[68][34]="2.762490106944477E-31"; + results[68][35]="6.781292537131541E-40"; + results[68][36]="1.428940867974192E-7"; + results[68][37]="5.737508172967645E-45"; + results[68][38]="6.993329524475215E-13"; + results[68][39]="6.115026528318585E-50"; + results[68][40]="1.267952240893443E-17"; + results[68][41]="9.790053191333628E-55"; + results[68][42]="4.579048441525779E-23"; + results[68][43]="1.766091979577825E-59"; + results[68][44]="1.202879608212802E-27"; + results[68][45]="1.549129832266147E-43"; + results[68][46]="0.0008434376335284867"; + results[68][47]="5.631484899930744E-49"; + results[68][48]="6.984167633124823E-9"; + results[68][49]="2.384970930690432E-53"; + results[68][50]="2.353765371550753E-13"; + results[68][51]="5.936395781336616E-59"; + results[68][52]="4.217672001516121E-18"; + results[68][53]="1.236554418332251E-63"; + results[68][54]="1.720014245444119E-23"; + results[68][55]="6.262773615644344E-48"; + results[68][56]="7.229406726646745"; + results[68][57]="6.281635877311693E-53"; + results[68][58]="0.00005778371733623009"; + results[68][59]="1.232553315830994E-57"; + results[68][60]="2.984618760264661E-9"; + results[68][61]="5.697713979929495E-63"; + results[68][62]="2.133828919245919E-14"; + results[68][63]="4.846117066640417E-68"; + results[68][64]="2.229620575759295E-19"; + results[68][65]="5.257874547924172E-52"; + results[68][66]="46874.52074382950"; + results[68][67]="1.697248663473332E-56"; + results[68][68]="1"; + results[68][69]="7.538375225269271E-62"; + results[68][70]="0.000007342287933519324"; + results[68][71]="4.606920809807113E-67"; + results[68][72]="1.789562419904057E-10"; + results[68][73]="8.729614080282214E-72"; + results[68][74]="4.998039790184512E-16"; + results[69][0]="5.338779562533849E+38"; + results[69][1]="1.173934144274364E+33"; + results[69][2]="2.633929108448886E+28"; + results[69][3]="3.071448625904928E+23"; + results[69][4]="2.143773543755267E+18"; + results[69][5]="6.688440450921611E+33"; + results[69][6]="4.156559494698874E+42"; + results[69][7]="6.414172677182188E+28"; + results[69][8]="6.127551693389194E+36"; + results[69][9]="5.978925519149620E+23"; + results[69][10]="2.182046570122424E+32"; + results[69][11]="7.245351369200056E+18"; + results[69][12]="9.728535318099962E+26"; + results[69][13]="91158771663435.09"; + results[69][14]="7.329838806791966E+21"; + results[69][15]="7.874052048267494E+29"; + results[69][16]="9.045715624703119E+45"; + results[69][17]="9.319191997593739E+24"; + results[69][18]="7.099189318657215E+40"; + results[69][19]="6.006651015061551E+19"; + results[69][20]="2.402421502642987E+36"; + results[69][21]="1119942454101324"; + results[69][22]="1.380190675584772E+31"; + results[69][23]="12274658554.81710"; + results[69][24]="7.310702108942491E+25"; + results[69][25]="7.318499515570511E+25"; + results[69][26]="1.960240356553922E+50"; + results[69][27]="8.531751941115174E+20"; + results[69][28]="3.023130824647137E+45"; + results[69][29]="1.456383960705739E+16"; + results[69][30]="6.813296160116931E+39"; + results[69][31]="177698704811.3589"; + results[69][32]="1.385178878009241E+35"; + results[69][33]="764612.9178559042"; + results[69][34]="3.664569651142300E+30"; + results[69][35]="8.995695139186061E+21"; + results[69][36]="1.895555508014859E+54"; + results[69][37]="7.611067373954845E+16"; + results[69][38]="9.276971914362904E+48"; + results[69][39]="811186276297.3776"; + results[69][40]="1.681996720782961E+44"; + results[69][41]="12986953.95065576"; + results[69][42]="6.074317481804861E+38"; + results[69][43]="234.2801899350586"; + results[69][44]="1.595674893152901E+34"; + results[69][45]="2.054991673899878E+18"; + results[69][46]="1.118858651001097E+58"; + results[69][47]="7470422646319.768"; + results[69][48]="9.264818245864578E+52"; + results[69][49]="316377317.3157802"; + results[69][50]="3.122377569719179E+48"; + results[69][51]="787.4900895669555"; + results[69][52]="5.594935082798914E+43"; + results[69][53]="0.01640346071109881"; + results[69][54]="2.281677674624746E+38"; + results[69][55]="83078560412474.54"; + results[69][56]="9.590139135570173E+61"; + results[69][57]="833287769.5256027"; + results[69][58]="7.665274758748302E+56"; + results[69][59]="16350.38425388234"; + results[69][60]="3.959233483443444E+52"; + results[69][61]="0.07558278554283523"; + results[69][62]="2.830621792469476E+47"; + results[69][63]="6.428596244978392E-7"; + results[69][64]="2.957693812169788E+42"; + results[69][65]="6974811402.726853"; + results[69][66]="6.218119865763931E+65"; + results[69][67]="225147.8087458437"; + results[69][68]="1.326545800808529E+61"; + results[69][69]="1"; + results[69][70]="9.739881226537191E+55"; + results[69][71]="0.000006111291454907054"; + results[69][72]="2.373936513408476E+51"; + results[69][73]="1.158023290087738E-10"; + results[69][74]="6.630128695943206E+45"; + results[70][0]="5.481360027253576E-18"; + results[70][1]="1.205285893092693E-23"; + results[70][2]="2.704272308036475E-28"; + results[70][3]="3.153476469031765E-33"; + results[70][4]="2.201026371773776E-38"; + results[70][5]="6.867065722216763E-23"; + results[70][6]="4.267566922042078E-14"; + results[70][7]="6.585473198283149E-28"; + results[70][8]="6.291197552485674E-20"; + results[70][9]="6.138602083626537E-33"; + results[70][10]="2.240321539216762E-24"; + results[70][11]="7.438849818270307E-38"; + results[70][12]="9.988351081318820E-30"; + results[70][13]="9.359330934659115E-43"; + results[70][14]="7.525593625126715E-35"; + results[70][15]="8.084340933043336E-27"; + results[70][16]="9.287295619229160E-11"; + results[70][17]="9.568075606715566E-32"; + results[70][18]="7.288784281388184E-16"; + results[70][19]="6.167068032304013E-37"; + results[70][20]="2.466581929251223E-20"; + results[70][21]="1.149852270323317E-41"; + results[70][22]="1.417050827913914E-25"; + results[70][23]="1.260247252438118E-46"; + results[70][24]="7.505945851807534E-31"; + results[70][25]="7.513951500384414E-31"; + results[70][26]="0.000002012591643533670"; + results[70][27]="8.759605730991504E-36"; + results[70][28]="3.103868265262150E-11"; + results[70][29]="1.495278973975256E-40"; + results[70][30]="6.995255898556019E-17"; + results[70][31]="1.824444268654967E-45"; + results[70][32]="1.422172248091892E-21"; + results[70][33]="7.850331026344006E-51"; + results[70][34]="3.762437719628292E-26"; + results[70][35]="9.235939258352015E-35"; + results[70][36]="0.01946179284866684"; + results[70][37]="7.814332841367511E-40"; + results[70][38]="9.524727970077244E-8"; + results[70][39]="8.328502755118070E-45"; + results[70][40]="1.726917075949764E-12"; + results[70][41]="1.333379088368309E-49"; + results[70][42]="6.236541637956356E-18"; + results[70][43]="2.405370091133565E-54"; + results[70][44]="1.638289888797966E-22"; + results[70][45]="2.109873443118451E-38"; + results[70][46]="114.8739522564880"; + results[70][47]="7.669931976137371E-44"; + results[70][48]="0.0009512249718838192"; + results[70][49]="3.248266687829637E-48"; + results[70][50]="3.205765550006891E-8"; + results[70][51]="8.085212450243923E-54"; + results[70][52]="5.744356581633671E-13"; + results[70][53]="1.684154080483660E-58"; + results[70][54]="2.342613448311986E-18"; + results[70][55]="8.529730340665701E-43"; + results[70][56]="984625.8812110530"; + results[70][57]="8.555420237109612E-48"; + results[70][58]="7.869987919219759"; + results[70][59]="1.678704685775246E-52"; + results[70][60]="0.0004064971010792362"; + results[70][61]="7.760134213639389E-58"; + results[70][62]="2.906217978056231E-9"; + results[70][63]="6.600281970033780E-63"; + results[70][64]="3.036683654941584E-14"; + results[70][65]="7.161084658530892E-47"; + results[70][66]="6384184489.665129"; + results[70][67]="2.311607333900624E-51"; + results[70][68]="136197.3282789357"; + results[70][69]="1.026706565245795E-56"; + results[70][70]="1"; + results[70][71]="6.274503058883598E-62"; + results[70][72]="0.00002437336203793195"; + results[70][73]="1.188950114640616E-66"; + results[70][74]="6.807196660549431E-11"; + results[71][0]="8.735926934473208E+43"; + results[71][1]="1.920926457094031E+38"; + results[71][2]="4.309938624075892E+33"; + results[71][3]="5.025858525269176E+28"; + results[71][4]="3.507889550962140E+23"; + results[71][5]="1.094439775990578E+39"; + results[71][6]="6.801442093489699E+47"; + results[71][7]="1.049560919244317E+34"; + results[71][8]="1.002660687778045E+42"; + results[71][9]="9.783407587849290E+28"; + results[71][10]="3.570516291397545E+37"; + results[71][11]="1.185567964261042E+24"; + results[71][12]="1.591895164857249E+32"; + results[71][13]="1.491644971215360E+19"; + results[71][14]="1.199392773340319E+27"; + results[71][15]="1.288443221267910E+35"; + results[71][16]="1.480164330477132E+51"; + results[71][17]="1.524913689087910E+30"; + results[71][18]="1.161651243610208E+46"; + results[71][19]="9.828775242323811E+24"; + results[71][20]="3.931119175659616E+41"; + results[71][21]="1.832579025832696E+20"; + results[71][22]="2.258427184775404E+36"; + results[71][23]="2008521217714331"; + results[71][24]="1.196261406101385E+31"; + results[71][25]="1.197537307714907E+31"; + results[71][26]="3.207571379990312E+55"; + results[71][27]="1.396063664131845E+26"; + results[71][28]="4.946795365519211E+50"; + results[71][29]="2.383103426586433E+21"; + results[71][30]="1.114870107307058E+45"; + results[71][31]="2.907711178930534E+16"; + results[71][32]="2.266589456958420E+40"; + results[71][33]="125114785229.5539"; + results[71][34]="5.996391561721113E+35"; + results[71][35]="1.471979401663617E+27"; + results[71][36]="3.101726569582645E+59"; + results[71][37]="1.245410635397457E+22"; + results[71][38]="1.518005152072067E+54"; + results[71][39]="1.327356553492530E+17"; + results[71][40]="2.752277048466415E+49"; + results[71][41]="2125075206522.494"; + results[71][42]="9.939498920359126E+43"; + results[71][43]="38335627.03787325"; + results[71][44]="2.611027317101128E+39"; + results[71][45]="3.362614414748335E+23"; + results[71][46]="1.830805582186251E+63"; + results[71][47]="1.222396722761668E+18"; + results[71][48]="1.516016428642984E+58"; + results[71][49]="51769305988793.17"; + results[71][50]="5.109194337658483E+53"; + results[71][51]="128858211.9471067"; + results[71][52]="9.155078143600022E+48"; + results[71][53]="2684.123451177847"; + results[71][54]="3.733544196771496E+43"; + results[71][55]="1.359427234414859E+19"; + results[71][56]="1.569249185107967E+67"; + results[71][57]="136352156606197.4"; + results[71][58]="1.254280672965365E+62"; + results[71][59]="2675438469.025040"; + results[71][60]="6.478554512834406E+57"; + results[71][61]="12367.72719817611"; + results[71][62]="4.631789881656898E+52"; + results[71][63]="0.1051921069779213"; + results[71][64]="4.839719777715578E+47"; + results[71][65]="1141299094338961"; + results[71][66]="1.017480496822173E+71"; + results[71][67]="36841281488.06609"; + results[71][68]="2.170647252870554E+66"; + results[71][69]="163631.5347383819"; + results[71][70]="1.593751713267834E+61"; + results[71][71]="1"; + results[71][72]="3.884508750605123E+56"; + results[71][73]="0.00001894891282198470"; + results[71][74]="1.084898134030173E+51"; + results[72][0]="2.248914211639332E-13"; + results[72][1]="4.945094941013564E-19"; + results[72][2]="1.109519607441867E-23"; + results[72][3]="1.293820878762663E-28"; + results[72][4]="9.030458614401850E-34"; + results[72][5]="2.817447060249479E-18"; + results[72][6]="1.750914344685201E-9"; + results[72][7]="2.701914158594232E-23"; + results[72][8]="2.581177575212958E-15"; + results[72][9]="2.518570098812429E-28"; + results[72][10]="9.191680391610227E-20"; + results[72][11]="3.052040915280100E-33"; + results[72][12]="4.098060442286985E-25"; + results[72][13]="3.839983552574039E-38"; + results[72][14]="3.087630509658344E-30"; + results[72][15]="3.316875579356586E-22"; + results[72][16]="0.000003810428616608354"; + results[72][17]="3.925628147575576E-27"; + results[72][18]="2.990471429442005E-11"; + results[72][19]="2.530249221550267E-32"; + results[72][20]="1.011999052659421E-15"; + results[72][21]="4.717659666868350E-37"; + results[72][22]="5.813932545327873E-21"; + results[72][23]="5.170592593983595E-42"; + results[72][24]="3.079569343009031E-26"; + results[72][25]="3.082853932375250E-26"; + results[72][26]="0.08257341110354408"; + results[72][27]="3.593925908686312E-31"; + results[72][28]="0.000001273467427444617"; + results[72][29]="6.134890097017279E-36"; + results[72][30]="2.870041436084768E-12"; + results[72][31]="7.485402571116811E-41"; + results[72][32]="5.834944911902525E-17"; + results[72][33]="3.220865063312414E-46"; + results[72][34]="1.543667924750332E-21"; + results[72][35]="3.789357924433339E-30"; + results[72][36]="798.4861841537783"; + results[72][37]="3.206095584682231E-35"; + results[72][38]="0.003907843306661606"; + results[72][39]="3.417051263652724E-40"; + results[72][40]="7.085264122619546E-8"; + results[72][41]="5.470640801598023E-45"; + results[72][42]="2.558753129030992E-13"; + results[72][43]="9.868848160504565E-50"; + results[72][44]="6.721640971189435E-18"; + results[72][45]="8.656472750188841E-34"; + results[72][46]="4713094.241069868"; + results[72][47]="3.146850222878877E-39"; + results[72][48]="39.02723680071055"; + results[72][49]="1.332711787062614E-43"; + results[72][50]="0.001315274251052358"; + results[72][51]="3.317233148902893E-49"; + results[72][52]="2.356817484881160E-8"; + results[72][53]="6.909814402554038E-54"; + results[72][54]="9.611367708181607E-14"; + results[72][55]="3.499611718478145E-38"; + results[72][56]="40397622604.49307"; + results[72][57]="3.510151871454961E-43"; + results[72][58]="322892.9971569699"; + results[72][59]="6.887456409020225E-48"; + results[72][60]="16.67792487743833"; + results[72][61]="3.183858755949381E-53"; + results[72][62]="0.0001192374680822991"; + results[72][63]="2.707989960417380E-58"; + results[72][64]="1.245902658080421E-9"; + results[72][65]="2.938078319842043E-42"; + results[72][66]="261932862595217.9"; + results[72][67]="9.484154587713828E-47"; + results[72][68]="5587958200.718210"; + results[72][69]="4.212412566013441E-52"; + results[72][70]="41028.39807014366"; + results[72][71]="2.574328091922103E-57"; + results[72][72]="1"; + results[72][73]="4.878071858901815E-62"; + results[72][74]="0.000002792883743307747"; + results[73][0]="4.610252322411714E+48"; + results[73][1]="1.013739666829516E+43"; + results[73][2]="2.274504434405050E+38"; + results[73][3]="2.652320253137757E+33"; + results[73][4]="1.851235257619769E+28"; + results[73][5]="5.775739148057081E+43"; + results[73][6]="3.589357425085942E+52"; + results[73][7]="5.538897820177879E+38"; + results[73][8]="5.291388995229049E+46"; + results[73][9]="5.163044275816442E+33"; + results[73][10]="1.884285565584005E+42"; + results[73][11]="6.256654275624378E+28"; + results[73][12]="8.400984161003253E+36"; + results[73][13]="7.871929040091104E+23"; + results[73][14]="6.329612598928488E+31"; + results[73][15]="6.799562768440446E+39"; + results[73][16]="7.811341708004652E+55"; + results[73][17]="8.047499629206652E+34"; + results[73][18]="6.130437426797644E+50"; + results[73][19]="5.186986364157197E+29"; + results[73][20]="2.074588242919507E+46"; + results[73][21]="9.671156562114322E+24"; + results[73][22]="1.191850533058106E+41"; + results[73][23]="1.059966466985920E+20"; + results[73][24]="6.313087285479891E+35"; + results[73][25]="6.319820661824533E+35"; + results[73][26]="1.692746919110240E+60"; + results[73][27]="7.367513256550102E+30"; + results[73][28]="2.610595875336918E+55"; + results[73][29]="1.257646519868694E+26"; + results[73][30]="5.883557108424581E+49"; + results[73][31]="1.534500267243291E+21"; + results[73][32]="1.196158047826734E+45"; + results[73][33]="6602742141723014"; + results[73][34]="3.164504274231525E+40"; + results[73][35]="7.768146993403301E+31"; + results[73][36]="1.636888933271145E+64"; + results[73][37]="6.572464853775255E+26"; + results[73][38]="8.011040877822095E+58"; + results[73][39]="7.004921949677867E+21"; + results[73][40]="1.452472273381932E+54"; + results[73][41]="1.121476058540394E+17"; + results[73][42]="5.245419098043044E+48"; + results[73][43]="2023104301445.511"; + results[73][44]="1.377929880004403E+44"; + results[73][45]="1.774568518172187E+28"; + results[73][46]="9.661797483505934E+67"; + results[73][47]="6.451012436678859E+22"; + results[73][48]="8.000545692964971E+62"; + results[73][49]="2.732046237963053E+18"; + results[73][50]="2.696299458262718E+58"; + results[73][51]="6800295782542.430"; + results[73][52]="4.831452986040559E+53"; + results[73][53]="141650525.0931179"; + results[73][54]="1.970321058440780E+48"; + results[73][55]="7.174170081344397E+23"; + results[73][56]="8.281473453650119E+71"; + results[73][57]="7.195777292721534E+18"; + results[73][58]="6.619275125431665E+66"; + results[73][59]="141192188394099.9"; + results[73][60]="3.418958424526566E+62"; + results[73][61]="652687957.0540302"; + results[73][62]="2.444356531253368E+57"; + results[73][63]="5551.353154988210"; + results[73][64]="2.554088365481576E+52"; + results[73][65]="6.023032060260553E+19"; + results[73][66]="5.369598279230475E+75"; + results[73][67]="1944242492124535"; + results[73][68]="1.145526011577904E+71"; + results[73][69]="8635404905.580393"; + results[73][70]="8.410781812340964E+65"; + results[73][71]="52773.47620913591"; + results[73][72]="2.049990301342397E+61"; + results[73][73]="1"; + results[73][74]="5.725384586557730E+55"; + results[74][0]="8.052301557585906E-8"; + results[74][1]="1.770605365462456E-13"; + results[74][2]="3.972666639277327E-18"; + results[74][3]="4.632562604379404E-23"; + results[74][4]="3.233381495395381E-28"; + results[74][5]="1.008794965777072E-12"; + results[74][6]="0.0006269198812448631"; + results[74][7]="9.674280804091849E-18"; + results[74][8]="9.241980019390084E-10"; + results[74][9]="9.017812162240471E-23"; + results[74][10]="3.291107413129942E-14"; + results[74][11]="1.092791965506384E-27"; + results[74][12]="1.467322244295588E-19"; + results[74][13]="1.374917076937174E-32"; + results[74][14]="1.105534921407618E-24"; + results[74][15]="1.187616773274011E-16"; + results[74][16]="1.364334847713883"; + results[74][17]="1.405582368754908E-21"; + results[74][18]="0.00001070746835276518"; + results[74][19]="9.059629594726956E-27"; + results[74][20]="3.623491507959662E-10"; + results[74][21]="1.689171516062104E-31"; + results[74][22]="2.081695150848690E-15"; + results[74][23]="1.851345444067719E-36"; + results[74][24]="1.102648597668354E-20"; + results[74][25]="1.103824654270814E-20"; + results[74][26]="29565.64565260007"; + results[74][27]="1.286815434870144E-25"; + results[74][28]="0.4559686490696489"; + results[74][29]="2.196614918797670E-30"; + results[74][30]="0.000001027626532239985"; + results[74][31]="2.680169766841597E-35"; + results[74][32]="2.089218688706290E-11"; + results[74][33]="1.153239933824738E-40"; + results[74][34]="5.527147087483460E-16"; + results[74][35]="1.356790426208511E-24"; + results[74][36]="285900258.4934282"; + results[74][37]="1.147951679823628E-29"; + results[74][38]="1399.214455677041"; + results[74][39]="1.223484963110475E-34"; + results[74][40]="0.02536899052671676"; + results[74][41]="1.958778561659312E-39"; + results[74][42]="9.161688649454979E-8"; + results[74][43]="3.533569266587664E-44"; + results[74][44]="2.406702744894305E-12"; + results[74][45]="3.099474788713032E-28"; + results[74][46]="1687536852317.355"; + results[74][47]="1.126738708841461E-33"; + results[74][48]="13973813.58756047"; + results[74][49]="4.771812612164872E-38"; + results[74][50]="470.9377016512027"; + results[74][51]="1.187744802071186E-43"; + results[74][52]="0.008438652308849302"; + results[74][53]="2.474078779366023E-48"; + results[74][54]="3.441377655339997E-8"; + results[74][55]="1.253045969730694E-32"; + results[74][56]="1.446448413805017E+16"; + results[74][57]="1.256819901603824E-37"; + results[74][58]="115612759725.7422"; + results[74][59]="2.466073435932954E-42"; + results[74][60]="5971578.629938194"; + results[74][61]="1.139989719793558E-47"; + results[74][62]="42.69331595631704"; + results[74][63]="9.696035386027837E-53"; + results[74][64]="0.0004460990046813902"; + results[74][65]="1.051987332763925E-36"; + results[74][66]="9.378580946051059E+19"; + results[74][67]="3.395828634270787E-41"; + results[74][68]="2000784391440555"; + results[74][69]="1.508266348754094E-46"; + results[74][70]="14690335094.84779"; + results[74][71]="9.217455248864755E-52"; + results[74][72]="358052.8557252626"; + results[74][73]="1.746607559512835E-56"; + results[74][74]="1"; + } + + public static int mcDivideTests() { + int failures = 0; + for(int i=0; i<value.length; i++) { + for(int j=0; j<value.length; j++) { + BigDecimal v1 = new BigDecimal(value[i]); + BigDecimal v2 = new BigDecimal(value[j]); + BigDecimal res1 = v1.divide(v2, MathContext.DECIMAL64); + if(!res1.toString().equals(results[i][j])) { + failures++; + System.err.println("Unexpected result from " + v1 + " / " + v2 + + "; expected " + results[i][j] + " got " + res1); + + } + } + } + for (int mpc = 1; mpc < 23; mpc++) { + for (int i = 0; i < value.length; i++) { + for (int j = 0; j < value.length; j++) { + BigDecimal v1 = new BigDecimal(value[i]); + BigDecimal v2 = new BigDecimal(value[j]); + BigDecimal res1 = v1.divide(v2, new MathContext(mpc, RoundingMode.HALF_EVEN)); + BigDecimal res2 = v1.divide(v2, new MathContext(128, RoundingMode.HALF_EVEN)).round(new MathContext(mpc, RoundingMode.HALF_EVEN)); + if (!res1.equals(res2)) { + failures++; + System.err.println("Unexpected result from " + v1 + " / " + v2 + + "; expected " + res2 + " got " + res1); + + } + } + } + } + return failures; + } + + public static void main(String argv[]) { + int failures = 0; + failures += mcDivideTests(); + if (failures > 0) { + throw new RuntimeException("Incurred " + failures + + " failures while testing DECIMAL64 divide."); + } + } + +} diff --git a/test/java/math/BigDecimal/FloatDoubleValueTests.java b/test/java/math/BigDecimal/FloatDoubleValueTests.java index c945e778b651fb752a71c2b1e7bfce24e0a4e9e9..ade80fe51c474d7a116aaf43d28c954a4c8c98d2 100644 --- a/test/java/math/BigDecimal/FloatDoubleValueTests.java +++ b/test/java/math/BigDecimal/FloatDoubleValueTests.java @@ -25,6 +25,8 @@ * @test * @bug 6274390 * @summary Verify {float, double}Value methods work with condensed representation + * @run main FloatDoubleValueTests + * @run main/othervm -XX:+AggressiveOpts FloatDoubleValueTests */ import java.math.*; @@ -64,6 +66,7 @@ public class FloatDoubleValueTests { static void checkDouble(BigDecimal bd, double d) { double dbd = bd.doubleValue(); + if (d != dbd ) { String message = String.format("Bad conversion:"+ "got %g (%a)\texpected %g (%a)", @@ -156,9 +159,29 @@ public class FloatDoubleValueTests { } } + static void testFloatValue1() { + checkFloat(new BigDecimal("85070591730234615847396907784232501249"), 8.507059e+37f); + checkFloat(new BigDecimal("7784232501249e12"), 7.7842326e24f); + checkFloat(new BigDecimal("907784232501249e-12"),907.78424f); + checkFloat(new BigDecimal("7784e8"),7.7839997e11f); + checkFloat(new BigDecimal("9077e-8"),9.077e-5f); + + } + + static void testDoubleValue1() { + checkDouble(new BigDecimal("85070591730234615847396907784232501249"), 8.507059173023462e37); + checkDouble(new BigDecimal("7784232501249e12"), 7.784232501249e24); + checkDouble(new BigDecimal("907784232501249e-12"), 907.784232501249); + checkDouble(new BigDecimal("7784e8"), 7.784e11); + checkDouble(new BigDecimal("9077e-8"), 9.077e-5); + + } + public static void main(String[] args) throws Exception { testFloatDoubleValue(); testDoubleValue(); testFloatValue(); + testFloatValue1(); + testDoubleValue1(); } } diff --git a/test/java/math/BigDecimal/RangeTests.java b/test/java/math/BigDecimal/RangeTests.java new file mode 100644 index 0000000000000000000000000000000000000000..cef3ef538c79dd722c4f1c91a19c799d30b648e9 --- /dev/null +++ b/test/java/math/BigDecimal/RangeTests.java @@ -0,0 +1,245 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7036582 + * @summary Some new tests for the add method and constructor with MathContext. + * @run main RangeTests + * @run main/othervm -XX:+AggressiveOpts RangeTests + * @author Sergey V. Kuksenko + */ + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.MathContext; + +public class RangeTests { + + + private static int addTest(BigDecimal arg1, BigDecimal arg2, BigDecimal expectedResult) { + int failures = 0; + BigDecimal result = arg1.add(arg2); + if (!result.equals(expectedResult)) { + System.out.println("Sum:" + + arg1 + " + " + + arg2 + " == " + + result + "; expected " + + expectedResult + ); + failures++; + } + result = arg2.add(arg1); + if (!result.equals(expectedResult)) { + System.out.println("Sum:" + + arg2 + " + " + + arg1 + " == " + + result + "; expected " + + expectedResult + ); + failures++; + } + return failures; + } + + /* + * Test BigDecimal.add(BigDecimal) when values are withing different ranges: + * 1. within 32 bits + * 2. within 64 bits + * 3. outside 64 bits. + */ + private static int addBoundaryTest() { + int failures = 0; + failures += addTest( + new BigDecimal("85070591730234615847396907784232501249"), + BigDecimal.valueOf(0), + new BigDecimal("85070591730234615847396907784232501249") ); + failures += addTest( + new BigDecimal("-85070591730234615847396907784232501249"), + BigDecimal.valueOf(0), + new BigDecimal("-85070591730234615847396907784232501249") ); + failures += addTest( + new BigDecimal("85070591730234615847396907784232501249"), + BigDecimal.valueOf(1), + new BigDecimal("85070591730234615847396907784232501250") ); + failures += addTest( + new BigDecimal("85070591730234615847396907784232501249"), + BigDecimal.valueOf(-1), + new BigDecimal("85070591730234615847396907784232501248") ); + failures += addTest( + new BigDecimal("-85070591730234615847396907784232501250"), + BigDecimal.valueOf(-1), + new BigDecimal("-85070591730234615847396907784232501251") ); + failures += addTest( + new BigDecimal("-85070591730234615847396907784232501249"), + BigDecimal.valueOf(1), + new BigDecimal("-85070591730234615847396907784232501248") ); + failures += addTest( + new BigDecimal("147573952589676412927"), + BigDecimal.valueOf(Integer.MAX_VALUE), + new BigDecimal("147573952591823896574") ); + failures += addTest( + new BigDecimal("-147573952589676412927"), + BigDecimal.valueOf(Integer.MAX_VALUE), + new BigDecimal("-147573952587528929280") ); + failures += addTest( + new BigDecimal("79228162514264337593543950335"), + BigDecimal.valueOf(999), + new BigDecimal("79228162514264337593543951334") ); + failures += addTest( + new BigDecimal("79228162514264337593543950335"), + BigDecimal.valueOf(Integer.MAX_VALUE/2), + new BigDecimal("79228162514264337594617692158") ); + failures += addTest( + new BigDecimal("79228162514264337593543950335"), + BigDecimal.valueOf(Integer.MIN_VALUE/2), + new BigDecimal("79228162514264337592470208511") ); + failures += addTest( + new BigDecimal("-79228162514264337593543950335"), + BigDecimal.valueOf(Integer.MAX_VALUE/2), + new BigDecimal("-79228162514264337592470208512") ); + failures += addTest( + new BigDecimal("79228162514264337593543950335"), + BigDecimal.valueOf(-(Integer.MIN_VALUE/2)), + new BigDecimal("79228162514264337594617692159") ); + failures += addTest( + new BigDecimal("79228162514264337593543950335"), + BigDecimal.valueOf(Long.MAX_VALUE/2), + new BigDecimal("79228162518876023611971338238") ); + failures += addTest( + new BigDecimal("79228162514264337593543950335"), + BigDecimal.valueOf(Long.MIN_VALUE/2), + new BigDecimal("79228162509652651575116562431") ); + failures += addTest( + new BigDecimal("-79228162514264337593543950335"), + BigDecimal.valueOf(Long.MAX_VALUE/2), + new BigDecimal("-79228162509652651575116562432") ); + failures += addTest( + new BigDecimal("79228162514264337593543950335"), + BigDecimal.valueOf(-(Long.MIN_VALUE/2)), + new BigDecimal("79228162518876023611971338239") ); + failures += addTest( + new BigDecimal("-9223372036854775808"), + BigDecimal.valueOf(1), + new BigDecimal("-9223372036854775807") ); + failures += addTest( + new BigDecimal("-9223372036854775808"), + BigDecimal.valueOf(Long.MAX_VALUE/2), + new BigDecimal("-4611686018427387905") ); + failures += addTest( + new BigDecimal("9223372036854775808"), + BigDecimal.valueOf(-1), + new BigDecimal("9223372036854775807") ); + failures += addTest( + new BigDecimal("9223372036854775808"), + BigDecimal.valueOf(-Long.MAX_VALUE/2), + new BigDecimal("4611686018427387905") ); + + return failures; + } + + private static int testRoundingFromBigInteger(BigInteger bi, int scale, MathContext mc) { + int failures = 0; + BigDecimal bd1 = new BigDecimal(bi,scale, mc); + BigDecimal bd2 = (new BigDecimal(bi,scale)).round(mc); + if (!bd1.equals(bd2)) { + System.out.println("new BigDecimal(BigInteger,int,MathContext):" + + "BigInteger == " + + bi + "; scale == " + scale + "; result == " + + bd1 + "; expected == " + + bd2 + ); + failures++; + } + return failures; + } + + private static int roundingConstructorTest() { + int failures = 0; + failures += testRoundingFromBigInteger( + new BigInteger("85070591730234615847396907784232501249"), + 7, MathContext.DECIMAL64); + failures += testRoundingFromBigInteger( + new BigInteger("85070591730234615847396907784232501249"), + 0, MathContext.DECIMAL64); + failures += testRoundingFromBigInteger( + new BigInteger("85070591730234615847396907784232501249"), + -7, MathContext.DECIMAL64); + failures += testRoundingFromBigInteger( + new BigInteger("85070591730234615847396907784232501249"), + 7, MathContext.DECIMAL128); + failures += testRoundingFromBigInteger( + new BigInteger("85070591730234615847396907784232501249"), + 177, MathContext.DECIMAL128); + failures += testRoundingFromBigInteger( + new BigInteger("85070591730234615847396907784232501249"), + 177, MathContext.DECIMAL32); + failures += testRoundingFromBigInteger( + new BigInteger("85070591730234615847396907784232501249"), + 177, MathContext.UNLIMITED); + failures += testRoundingFromBigInteger( + new BigInteger("85070591730234615847396907784232501249"), + 0, MathContext.UNLIMITED); + return failures; + } + + private static int minLongConstructorTest(MathContext mc) { + int failures = 0; + BigDecimal bd1 = new BigDecimal(Long.MIN_VALUE,mc); + BigDecimal bd2 = new BigDecimal(Long.MIN_VALUE).round(mc); + if (!bd1.equals(bd2)) { + System.out.println("new BigDecimal(long,MathContext):" + + "long == " + + Long.MIN_VALUE + "; result == " + + bd1 + "; expected == " + + bd2 + ); + failures++; + } + return failures; + } + + private static int minLongConstructorTest() { + int failures = 0; + failures+=minLongConstructorTest(MathContext.UNLIMITED); + failures+=minLongConstructorTest(MathContext.DECIMAL32); + failures+=minLongConstructorTest(MathContext.DECIMAL64); + failures+=minLongConstructorTest(MathContext.DECIMAL128); + return failures; + } + + public static void main(String argv[]) { + int failures = 0; + + failures += addBoundaryTest(); + failures += roundingConstructorTest(); + failures += minLongConstructorTest(); + if (failures > 0) { + throw new RuntimeException("Incurred " + failures + + " failures while testing."); + } + } + + + +} diff --git a/test/java/math/BigDecimal/StrippingZerosTest.java b/test/java/math/BigDecimal/StrippingZerosTest.java index c028d0830a9d2b3340774f68b16a78879166ad09..30885e66574c199cfb08bc607facb200385d4f0f 100644 --- a/test/java/math/BigDecimal/StrippingZerosTest.java +++ b/test/java/math/BigDecimal/StrippingZerosTest.java @@ -25,6 +25,8 @@ * @test * @bug 4108852 * @summary A few tests of stripTrailingZeros + * @run main StrippingZerosTest + * @run main/othervm -XX:+AggressiveOpts StrippingZerosTest * @author Joseph D. Darcy */ @@ -53,6 +55,11 @@ public class StrippingZerosTest { {new BigDecimal("10000000e2"), new BigDecimal("1e9")}, {new BigDecimal("1000000e3"), new BigDecimal("1e9")}, {new BigDecimal("100000e4"), new BigDecimal("1e9")}, + // BD value which larger than Long.MaxValue + {new BigDecimal("1.0000000000000000000000000000"), new BigDecimal("1")}, + {new BigDecimal("-1.0000000000000000000000000000"), new BigDecimal("-1")}, + {new BigDecimal("1.00000000000000000000000000001"), new BigDecimal("1.00000000000000000000000000001")}, + {new BigDecimal("1000000000000000000000000000000e4"), new BigDecimal("1e34")}, }; for(int i = 0; i < testCases.length; i++) { diff --git a/test/java/math/BigDecimal/ToPlainStringTests.java b/test/java/math/BigDecimal/ToPlainStringTests.java index 3f5cdc5990131e88b7d3650a2958fc63a24f68b1..df3bc6ae9d5a4dbe60e5261cfa21b15c68fe6032 100644 --- a/test/java/math/BigDecimal/ToPlainStringTests.java +++ b/test/java/math/BigDecimal/ToPlainStringTests.java @@ -25,6 +25,8 @@ * @test * @bug 4984872 * @summary Basic tests of toPlainString method + * @run main ToPlainStringTests + * @run main/othervm -XX:+AggressiveOpts ToPlainStringTests * @author Joseph D. Darcy */ @@ -60,6 +62,11 @@ public class ToPlainStringTests { {"8e-8", "0.00000008"}, {"9e-9", "0.000000009"}, {"9000e-12", "0.000000009000"}, + + {"9000e-22", "0.0000000000000000009000"}, + {"12345678901234567890", "12345678901234567890"}, + {"12345678901234567890e22", "123456789012345678900000000000000000000000"}, + {"12345678901234567890e-22", "0.0012345678901234567890"}, }; int errors = 0; @@ -73,8 +80,8 @@ public class ToPlainStringTests { s + "'' from BigDecimal " + bd); } - - if (!(s=("-"+bd.toPlainString())).equals("-"+testCase[1])) { + bd = new BigDecimal("-"+testCase[0]); + if (bd.signum()!=0 && !(s=(bd.toPlainString())).equals("-"+testCase[1])) { errors++; System.err.println("Unexpected plain result ``" + s + "'' from BigDecimal " + diff --git a/test/java/net/URL/Equals.java b/test/java/net/URL/Equals.java index 281d92895b43740bf40f5e0901889c4c02099ce4..e33ff1b2d5ce0774b0e4eb1257d4f45c02b91801 100644 --- a/test/java/net/URL/Equals.java +++ b/test/java/net/URL/Equals.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,16 +23,19 @@ /* * @test - * @bug 4052976 - * @summary Test URL.equals involving anchors - * + * @bug 4052976 7030649 + * @summary Test URL.equals with anchors, and jar URLs */ import java.net.*; public class Equals { - public static void main(String[] args) throws Exception { + anchors(); + jarURLs(); + } + + static void anchors() throws Exception { URL url1, url2; url1 = new URL(null, "http://JavaSoft/Test#bar"); @@ -45,4 +48,74 @@ public class Equals { if (url1.equals(null)) throw new RuntimeException("URL.equals fails given null"); } + + static final String HTTP_URL1A = "http://localhost/xyz"; + static final String HTTP_URL1B = "http://LOCALHOST/xyz"; + static final String FILE_URL1A = "file:///c:/foo/xyz"; + static final String FILE_URL1B = "file:/c:/foo/xyz"; + + static void jarURLs() throws Exception { + int failed = 0; + failed = compareJarURLS(HTTP_URL1A, HTTP_URL1A, "!/abc", "!/abc", true); + failed = compareJarURLS(HTTP_URL1A, HTTP_URL1B, "!/abc", "!/abc", true); + failed = compareJarURLS(HTTP_URL1B, HTTP_URL1A, "!/", "!/", true); + failed = compareJarURLS(HTTP_URL1A, HTTP_URL1B, "!/abc", "!/", false); + failed = compareJarURLS(HTTP_URL1A, HTTP_URL1B, "!/abc", "!/xy", false); + failed = compareJarURLS(FILE_URL1A, FILE_URL1A, "!/abc", "!/abc", true); + failed = compareJarURLS(FILE_URL1A, FILE_URL1B, "!/abc", "!/abc", true); + failed = compareJarURLS(FILE_URL1A, FILE_URL1B, "!/", "!/", true); + failed = compareJarURLS(FILE_URL1A, FILE_URL1B, "!/abc", "!/", false); + failed = compareJarURLS(FILE_URL1A, FILE_URL1B, "!/abc", "!/xy", false); + + failed = (new URL("jar:file://xzy!/abc")).equals( + new URL("file://xzy!/abc")) ? 1 : 0; + + if (failed > 0) + throw new RuntimeException("Some jar URL tests failed. Check output"); + } + + static int compareJarURLS(String urlStr1, String urlStr2, + String entry1, String entry2, + boolean expectEqual) throws Exception { + int failed = 0; + + URL url1 = new URL(urlStr1); + URL url2 = new URL(urlStr2); + + if (!url1.equals(url2)) { + System.out.println("Urls are not equal, so the test cannot run."); + System.out.println("url1: " + url1 + ", url2:" + url2); + return 1; + } + + URL jarUrl1 = new URL("jar:" + urlStr1 + entry1); + URL jarUrl2 = new URL("jar:" + urlStr2 + entry2); + jarUrl2.openConnection(); + + boolean equal = jarUrl1.equals(jarUrl2); + if (expectEqual && !equal) { + System.out.println("URLs should be equal, but are not. " + + jarUrl1 + ", " + jarUrl2); + failed++; + } else if (!expectEqual && equal) { + System.out.println("URLs should NOT be equal, but are. " + + jarUrl1 + ", " + jarUrl2); + failed++; + } + + if (expectEqual) { + // hashCode MUST produce the same integer result for equal urls + int hash1 = jarUrl1.hashCode(); + int hash2 = jarUrl2.hashCode(); + if (hash1 != hash2) { + System.out.println("jarUrl1.hashCode = " + hash1); + System.out.println("jarUrl2.hashCode = " + hash2); + System.out.println("Equal urls should have same hashCode. " + + jarUrl1 + ", " + jarUrl2); + failed++; + } + } + + return failed; + } } diff --git a/test/java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java b/test/java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java new file mode 100644 index 0000000000000000000000000000000000000000..36366678e8f823adaea2b4840e625b8843b95e3e --- /dev/null +++ b/test/java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java @@ -0,0 +1,65 @@ +/* + * 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. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @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> + */ + +import java.rmi.Remote; +import java.rmi.server.UnicastRemoteObject; + +public class GcDuringExport { + private static final long MAX_EXPORT_ITERATIONS = 50000; + + public static void main(String[] args) throws Exception { + Thread gcInducingThread = new Thread() { + public void run() { + while (true) { + System.gc(); + try { Thread.sleep(1); } catch (InterruptedException e) { } + } + } + }; + gcInducingThread.setDaemon(true); + gcInducingThread.start(); + + long i = 0; + try { + while (i < MAX_EXPORT_ITERATIONS) { + i++; + UnicastRemoteObject.exportObject(new Remote() { }, 0); + } + } catch (Throwable e) { + throw new RuntimeException("Test FAILED on iteration " + i + ".", e); + } + + System.out.println("Test successfully exported " + i + " objects."); + } +} diff --git a/test/java/text/Bidi/Bug6665028.java b/test/java/text/Bidi/Bug6665028.java index 3089337036bb165f307c833cc473a39e7aa6dae7..ffd1044ee18eb2f6e1b51a861bc2f6ae03253c9f 100644 --- a/test/java/text/Bidi/Bug6665028.java +++ b/test/java/text/Bidi/Bug6665028.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 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 @@ -28,7 +28,7 @@ * that this test case fails without the fix in some different ways, * including timeout, due to the memory corruption. * @build Bug6665028 - * @run main/othervm/timeout=60 -Xmx16m Bug6665028 + * @run main/othervm -Xmx16m Bug6665028 10 */ import java.awt.font.TextAttribute; @@ -36,6 +36,7 @@ import java.text.AttributedString; import java.text.Bidi; // test1() and test2() were derived from BidiEmbeddingTest. +// Usage: java Bug6665028 [duration] public class Bug6665028 { private static boolean runrun = true; @@ -50,6 +51,11 @@ public class Bug6665028 { } public static void main(String[] args) { + int duration = 45; + if (args.length == 1) { + duration = Math.max(1, Math.min(Integer.parseInt(args[0]), 45)); + } + Test[] tests = new Test[4]; for (int i = 0; i < tests.length; i++) { Test t = new Test(); @@ -58,7 +64,7 @@ public class Bug6665028 { } try { - Thread.sleep(45000); + Thread.sleep(duration * 1000); } catch (InterruptedException e) { } diff --git a/test/java/util/Currency/CurrencyTest.java b/test/java/util/Currency/CurrencyTest.java index c3a3be4ad701540e16f15e8a25619a8bb2dfa501..e7ae4fd79fc5d324e06ac3df81b22b6570a36070 100644 --- a/test/java/util/Currency/CurrencyTest.java +++ b/test/java/util/Currency/CurrencyTest.java @@ -23,7 +23,7 @@ /* * @test * @bug 4290801 4692419 4693631 5101540 5104960 6296410 6336600 6371531 - * 6488442 + * 6488442 7036905 * @summary Basic tests for Currency class. */ @@ -249,7 +249,7 @@ public class CurrencyTest { testDisplayName("ITL", new Locale("it"), "Lira Italiana"); testDisplayName("JPY", Locale.JAPANESE, "\u65e5\u672c\u5186"); testDisplayName("KRW", Locale.KOREAN, "\ub300\ud55c\ubbfc\uad6d \uc6d0"); - testDisplayName("SEK", new Locale("sv"), "Svensk krona"); + testDisplayName("SEK", new Locale("sv"), "svensk krona"); testDisplayName("CNY", Locale.SIMPLIFIED_CHINESE, "\u4eba\u6c11\u5e01"); testDisplayName("TWD", Locale.TRADITIONAL_CHINESE, "\u65b0\u81fa\u5e63"); } diff --git a/test/java/util/EnumMap/DistinctEntrySetElements.java b/test/java/util/EnumMap/DistinctEntrySetElements.java new file mode 100644 index 0000000000000000000000000000000000000000..b63aea902b06333b9bfc3fb2258f0bc99a234e1a --- /dev/null +++ b/test/java/util/EnumMap/DistinctEntrySetElements.java @@ -0,0 +1,60 @@ +/* + * 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. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Sets from Map.entrySet() return distinct objects for each Entry + * @author Neil Richards <neil.richards@ngmr.net>, <neil_richards@uk.ibm.com> + */ + +import java.util.EnumMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class DistinctEntrySetElements { + static enum TestEnum { e00, e01, e02 } + + public static void main(String[] args) throws Exception { + final EnumMap<TestEnum, String> enumMap = new EnumMap<>(TestEnum.class); + + for (TestEnum e : TestEnum.values()) { + enumMap.put(e, e.name()); + } + + Set<Map.Entry<TestEnum, String>> entrySet = enumMap.entrySet(); + HashSet<Map.Entry<TestEnum, String>> hashSet = new HashSet<>(entrySet); + + if (false == hashSet.equals(entrySet)) { + throw new RuntimeException("Test FAILED: Sets are not equal."); + } + if (hashSet.hashCode() != entrySet.hashCode()) { + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); + } + } +} diff --git a/test/java/util/EnumMap/EntrySetIteratorRemoveInvalidatesEntry.java b/test/java/util/EnumMap/EntrySetIteratorRemoveInvalidatesEntry.java new file mode 100644 index 0000000000000000000000000000000000000000..f57716232c51728cb6e12b54e007a02f9e2f92f8 --- /dev/null +++ b/test/java/util/EnumMap/EntrySetIteratorRemoveInvalidatesEntry.java @@ -0,0 +1,60 @@ +/* + * 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. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Iterator.remove() from Map.entrySet().iterator() invalidates returned Entry. + * @author Neil Richards <neil.richards@ngmr.net>, <neil_richards@uk.ibm.com> + */ + +import java.util.EnumMap; +import java.util.Iterator; +import java.util.Map; + +public class EntrySetIteratorRemoveInvalidatesEntry { + static enum TestEnum { e00, e01, e02 } + + public static void main(String[] args) throws Exception { + final EnumMap<TestEnum, String> enumMap = new EnumMap<>(TestEnum.class); + + for (TestEnum e : TestEnum.values()) { + enumMap.put(e, e.name()); + } + + Iterator<Map.Entry<TestEnum, String>> entrySetIterator = + enumMap.entrySet().iterator(); + Map.Entry<TestEnum, String> entry = entrySetIterator.next(); + + entrySetIterator.remove(); + + try { + entry.getKey(); + throw new RuntimeException("Test FAILED: Entry not invalidated by removal."); + } catch (Exception e) { } + } +} diff --git a/test/java/util/EnumMap/SimpleSerialization.java b/test/java/util/EnumMap/SimpleSerialization.java new file mode 100644 index 0000000000000000000000000000000000000000..b6a9ed2757f3314ceb68bfd58b0dde0f2b6906c2 --- /dev/null +++ b/test/java/util/EnumMap/SimpleSerialization.java @@ -0,0 +1,89 @@ +/* + * 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. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary A serialized EnumMap can be successfully de-serialized. + * @author Neil Richards <neil.richards@ngmr.net>, <neil_richards@uk.ibm.com> + */ + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.EnumMap; + +public class SimpleSerialization { + private enum TestEnum { e00, e01, e02, e03, e04, e05, e06, e07 } + public static void main(final String[] args) throws Exception { + final EnumMap<TestEnum, String> enumMap = new EnumMap<>(TestEnum.class); + + enumMap.put(TestEnum.e01, TestEnum.e01.name()); + enumMap.put(TestEnum.e04, TestEnum.e04.name()); + enumMap.put(TestEnum.e05, TestEnum.e05.name()); + + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + final ObjectOutputStream oos = new ObjectOutputStream(baos); + + oos.writeObject(enumMap); + oos.close(); + + final byte[] data = baos.toByteArray(); + final ByteArrayInputStream bais = new ByteArrayInputStream(data); + final ObjectInputStream ois = new ObjectInputStream(bais); + + final Object deserializedObject = ois.readObject(); + ois.close(); + + if (false == enumMap.equals(deserializedObject)) { + throw new RuntimeException(getFailureText(enumMap, deserializedObject)); + } + } + + private static String getFailureText(final Object orig, final Object copy) { + final StringWriter sw = new StringWriter(); + final PrintWriter pw = new PrintWriter(sw); + + pw.println("Test FAILED: Deserialized object is not equal to the original object"); + pw.print("\tOriginal: "); + printObject(pw, orig).println(); + pw.print("\tCopy: "); + printObject(pw, copy).println(); + + pw.close(); + return sw.toString(); + } + + private static PrintWriter printObject(final PrintWriter pw, final Object o) { + pw.printf("%s@%08x", o.getClass().getName(), System.identityHashCode(o)); + return pw; + } +} diff --git a/test/java/util/IdentityHashMap/DistinctEntrySetElements.java b/test/java/util/IdentityHashMap/DistinctEntrySetElements.java new file mode 100644 index 0000000000000000000000000000000000000000..7920115849d5ab8be63645f6db25da3bfa063662 --- /dev/null +++ b/test/java/util/IdentityHashMap/DistinctEntrySetElements.java @@ -0,0 +1,61 @@ +/* + * 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. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Sets from Map.entrySet() return distinct objects for each Entry + * @author Neil Richards <neil.richards@ngmr.net>, <neil_richards@uk.ibm.com> + */ + +import java.util.IdentityHashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class DistinctEntrySetElements { + public static void main(String[] args) throws Exception { + final IdentityHashMap<String, String> identityHashMap = + new IdentityHashMap<>(); + + identityHashMap.put("One", "Un"); + identityHashMap.put("Two", "Deux"); + identityHashMap.put("Three", "Trois"); + + Set<Map.Entry<String, String>> entrySet = identityHashMap.entrySet(); + HashSet<Map.Entry<String, String>> hashSet = new HashSet<>(entrySet); + + // NB: These comparisons are valid in this case because none of the + // keys put into 'identityHashMap' above are equal to any other. + if (false == hashSet.equals(entrySet)) { + throw new RuntimeException("Test FAILED: Sets are not equal."); + } + if (hashSet.hashCode() != entrySet.hashCode()) { + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); + } + } +} diff --git a/test/java/util/IdentityHashMap/EntrySetIteratorRemoveInvalidatesEntry.java b/test/java/util/IdentityHashMap/EntrySetIteratorRemoveInvalidatesEntry.java new file mode 100644 index 0000000000000000000000000000000000000000..369cadfc4356303268b1c43318fcd08759794584 --- /dev/null +++ b/test/java/util/IdentityHashMap/EntrySetIteratorRemoveInvalidatesEntry.java @@ -0,0 +1,59 @@ +/* + * 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. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Iterator.remove() from Map.entrySet().iterator() invalidates returned Entry. + * @author Neil Richards <neil.richards@ngmr.net>, <neil_richards@uk.ibm.com> + */ + +import java.util.IdentityHashMap; +import java.util.Iterator; +import java.util.Map; + +public class EntrySetIteratorRemoveInvalidatesEntry { + public static void main(String[] args) throws Exception { + final IdentityHashMap<String, String> identityHashMap = + new IdentityHashMap<>(); + + identityHashMap.put("One", "Un"); + identityHashMap.put("Two", "Deux"); + identityHashMap.put("Three", "Trois"); + + Iterator<Map.Entry<String, String>> entrySetIterator = + identityHashMap.entrySet().iterator(); + Map.Entry<String, String> entry = entrySetIterator.next(); + + entrySetIterator.remove(); + + try { + entry.getKey(); + throw new RuntimeException("Test FAILED: Entry not invalidated by removal."); + } catch (Exception e) { } + } +} diff --git a/test/java/util/Locale/Bug4518797.java b/test/java/util/Locale/Bug4518797.java index fbbb2f5bf00531213218cd3930900d1fd8f25241..f25b64fbedb87657316dca9c3fdcb3b3aa5cb7ad 100644 --- a/test/java/util/Locale/Bug4518797.java +++ b/test/java/util/Locale/Bug4518797.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,17 +24,22 @@ * @test * @bug 4518797 * @summary Make sure that hashCode() and read/writeObject() are thread-safe. - * @run main/timeout=200 Bug4518797 + * @run main Bug4518797 10 */ import java.util.*; import java.io.*; +// Usage: java Bug4518797 [duration] public class Bug4518797 { static volatile boolean runrun = true; static volatile String message = null; public static void main(String[] args) { + int duration = 180; + if (args.length == 1) { + duration = Math.max(5, Integer.parseInt(args[0])); + } final Locale loc = new Locale("ja", "US"); final int hashcode = loc.hashCode(); @@ -84,7 +89,7 @@ public class Bug4518797 { t1.start(); t2.start(); try { - for (int i = 0; runrun && i < 180; i++) { + for (int i = 0; runrun && i < duration; i++) { Thread.sleep(1000); } runrun = false; diff --git a/test/java/util/Locale/LocaleEnhanceTest.java b/test/java/util/Locale/LocaleEnhanceTest.java index d2d997b78b6bcf3eee70c7a06e7e7144486c596c..5cbcf2c9dc5394b6ba856dc0a2bbefffdc4d10bd 100644 --- a/test/java/util/Locale/LocaleEnhanceTest.java +++ b/test/java/util/Locale/LocaleEnhanceTest.java @@ -33,8 +33,10 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.URISyntaxException; import java.net.URL; +import java.text.DecimalFormatSymbols; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.IllformedLocaleException; import java.util.List; import java.util.Locale; @@ -43,8 +45,10 @@ import java.util.Set; /** * @test - * @bug 6875847 6992272 7002320 7015500 7023613 + * @bug 6875847 6992272 7002320 7015500 7023613 7032820 7033504 * @summary test API changes to Locale + * @compile LocaleEnhanceTest.java + * @run main/othervm -esa LocaleEnhanceTest */ public class LocaleEnhanceTest extends LocaleTestFmwk { @@ -593,6 +597,9 @@ public class LocaleEnhanceTest extends LocaleTestFmwk { assertEquals("extension", "aa-00-bb-01", locale.getExtension('d')); assertEquals("extension c", "1234", locale.getExtension('c')); + locale = Locale.forLanguageTag("und-U-ca-gregory-u-ca-japanese"); + assertEquals("Unicode extension", "ca-gregory", locale.getExtension(Locale.UNICODE_LOCALE_EXTENSION)); + // redundant Unicode locale keys in an extension are ignored locale = Locale.forLanguageTag("und-u-aa-000-bb-001-bB-002-cc-003-c-1234"); assertEquals("Unicode keywords", "aa-000-bb-001-cc-003", locale.getExtension(Locale.UNICODE_LOCALE_EXTENSION)); @@ -1275,6 +1282,35 @@ public class LocaleEnhanceTest extends LocaleTestFmwk { } } + /* + * 7033504: (lc) incompatible behavior change for ja_JP_JP and th_TH_TH locales + */ + public void testBug7033504() { + checkCalendar(new Locale("ja", "JP", "jp"), "java.util.GregorianCalendar"); + checkCalendar(new Locale("ja", "jp", "jp"), "java.util.GregorianCalendar"); + checkCalendar(new Locale("ja", "JP", "JP"), "java.util.JapaneseImperialCalendar"); + checkCalendar(new Locale("ja", "jp", "JP"), "java.util.JapaneseImperialCalendar"); + checkCalendar(Locale.forLanguageTag("en-u-ca-japanese"), + "java.util.JapaneseImperialCalendar"); + + checkDigit(new Locale("th", "TH", "th"), '0'); + checkDigit(new Locale("th", "th", "th"), '0'); + checkDigit(new Locale("th", "TH", "TH"), '\u0e50'); + checkDigit(new Locale("th", "TH", "TH"), '\u0e50'); + checkDigit(Locale.forLanguageTag("en-u-nu-thai"), '\u0e50'); + } + + private void checkCalendar(Locale loc, String expected) { + Calendar cal = Calendar.getInstance(loc); + assertEquals("Wrong calendar", expected, cal.getClass().getName()); + } + + private void checkDigit(Locale loc, Character expected) { + DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(loc); + Character zero = dfs.getZeroDigit(); + assertEquals("Wrong digit zero char", expected, zero); + } + /// /// utility asserts /// diff --git a/test/java/util/PriorityQueue/NoNulls.java b/test/java/util/PriorityQueue/NoNulls.java index 21f76876b4cfca8513a9cdf3aae162f4b93349a2..5ef7c536c8a34622b89218832fd977a3b33bf2e2 100644 --- a/test/java/util/PriorityQueue/NoNulls.java +++ b/test/java/util/PriorityQueue/NoNulls.java @@ -28,7 +28,7 @@ * * Written by Martin Buchholz with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/PriorityQueue/PriorityQueueSort.java b/test/java/util/PriorityQueue/PriorityQueueSort.java index 29d663d01fe805c52b97b1673dfa10ae19a5fe9c..206d6e815c54e7286851d1789351c93139bdb7c9 100644 --- a/test/java/util/PriorityQueue/PriorityQueueSort.java +++ b/test/java/util/PriorityQueue/PriorityQueueSort.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/Random/DistinctSeeds.java b/test/java/util/Random/DistinctSeeds.java index 76067507c7cf1b6a2dbefa01c778b097be40214d..fd2bcfcb658b3fcadb4e8bc2cec59dc196810481 100644 --- a/test/java/util/Random/DistinctSeeds.java +++ b/test/java/util/Random/DistinctSeeds.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/ResourceBundle/Bug4168625Test.java b/test/java/util/ResourceBundle/Bug4168625Test.java index f9f58fba46bc2acc5191eba8b88b3ce4c4d902e7..cf511101bf1511e35ed70b27a62ec9f0a68d83c5 100644 --- a/test/java/util/ResourceBundle/Bug4168625Test.java +++ b/test/java/util/ResourceBundle/Bug4168625Test.java @@ -282,7 +282,7 @@ public class Bug4168625Test extends RBTestFmwk { thread1.start(); //start thread 1 loader.waitForNotify(1); //wait for thread1 to do getBundle & block in loader thread2.start(); //start second thread - thread2.join(1000); //wait until thread2 blocks somewhere in getBundle + thread2.join(); //wait until thread2 terminates. //Thread1 should be blocked inside getBundle at the class loader //Thread2 should have completed its getBundle call and terminated @@ -292,7 +292,6 @@ public class Bug4168625Test extends RBTestFmwk { thread1.ping(); //continue thread1 thread1.join(); - thread2.join(); } /** @@ -318,8 +317,7 @@ public class Bug4168625Test extends RBTestFmwk { loader.waitForNotify(3); //wait for thread1 to do getBundle(en) & block in loader causeResourceBundleCacheFlush(); //cause a cache flush thread1.ping(); //kick thread 1 - thread1.ping(); //kick thread 1 - thread1.join(1000); //wait until thread2 blocks somewhere in getBundle + thread1.join(); //wait until thread1 terminates ResourceBundle bundle = (ResourceBundle)thread1.bundle; String s1 = bundle.getString("Bug4168625Resource3_en_US"); diff --git a/test/java/util/ResourceBundle/Control/StressTest.java b/test/java/util/ResourceBundle/Control/StressTest.java index d37c60a62ecb177df7aa055bca24d5dde479977d..401f6b43091ec91b73ef1986eea77d2fabfcdbf3 100644 --- a/test/java/util/ResourceBundle/Control/StressTest.java +++ b/test/java/util/ResourceBundle/Control/StressTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,12 +24,13 @@ * @test * @bug 5102289 * @summary Stress test for ResourceBundle.getBundle with ResourceBundle.Control. - * @run main/timeout=300/othervm -esa StressTest + * @run main/othervm -esa StressTest 2 15 */ import java.util.*; import java.util.concurrent.atomic.*; +// Usage: java StressTest [threadsFactor [duration]] public class StressTest { static final Locale ROOT_LOCALE = new Locale(""); static final Random rand = new Random(); @@ -60,16 +61,16 @@ public class StressTest { static volatile boolean runrun = true; public static void main(String[] args) { - int nThreads = 2; + int threadsFactor = 2; if (args.length > 0) { - nThreads = Math.max(Integer.parseInt(args[0]), 2); + threadsFactor = Math.max(2, Integer.parseInt(args[0])); } - int nSeconds = 180; + int duration = 180; if (args.length > 1) { - nSeconds = Integer.parseInt(args[1]); + duration = Math.max(5, Integer.parseInt(args[1])); } Locale.setDefault(Locale.US); - Thread[] tasks = new Thread[locales.length * nThreads]; + Thread[] tasks = new Thread[locales.length * threadsFactor]; counters = new AtomicIntegerArray(tasks.length); for (int i = 0; i < tasks.length; i++) { @@ -84,8 +85,8 @@ public class StressTest { System.out.printf("%d processors, intervalForCounterCheck = %d [sec]%n", nProcessors, intervalForCounterCheck); try { - for (int i = 0; runrun && i < nSeconds; i++) { - Thread.sleep(1000); // 1 seconds + for (int i = 0; runrun && i < duration; i++) { + Thread.sleep(1000); // 1 second if ((i % intervalForCounterCheck) == 0) { checkCounters(); } diff --git a/test/java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.java b/test/java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.java index 755ff9c2d9769e58db141fa4436be81822dde88d..acee6e676be75e9e66c082573d4020e8037c5270 100644 --- a/test/java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.java +++ b/test/java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/BlockingQueue/LoopHelpers.java b/test/java/util/concurrent/BlockingQueue/LoopHelpers.java index 5bf6d0dbbee5900c0abe3cfa9a55aa6d8313e645..d9859f300664b45805e5e953b3e2431516d52c94 100644 --- a/test/java/util/concurrent/BlockingQueue/LoopHelpers.java +++ b/test/java/util/concurrent/BlockingQueue/LoopHelpers.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /** diff --git a/test/java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java b/test/java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java index d57939fc3746491d1b51b3c89e5c7969a8f4482d..58983059bfe444b1226b84b10dca99aa4b561904 100644 --- a/test/java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java +++ b/test/java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/BlockingQueue/OfferDrainToLoops.java b/test/java/util/concurrent/BlockingQueue/OfferDrainToLoops.java index f5e9cc27913a09452fd88949cec67b7744e80ab4..bba0512ac6ac17cccfe89a1ec6f9a49b4476bd35 100644 --- a/test/java/util/concurrent/BlockingQueue/OfferDrainToLoops.java +++ b/test/java/util/concurrent/BlockingQueue/OfferDrainToLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/BlockingQueue/PollMemoryLeak.java b/test/java/util/concurrent/BlockingQueue/PollMemoryLeak.java index c9f501310753f02ba6cb085cf634c334c55dc56a..417fa7ee6c93417f11734e32599f9c49ef46a865 100644 --- a/test/java/util/concurrent/BlockingQueue/PollMemoryLeak.java +++ b/test/java/util/concurrent/BlockingQueue/PollMemoryLeak.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/BlockingQueue/ProducerConsumerLoops.java b/test/java/util/concurrent/BlockingQueue/ProducerConsumerLoops.java index 9f18ab53c892ae3e1bc92a8548b568a7ae518450..7755126674c100102f632994a9964effeea06da1 100644 --- a/test/java/util/concurrent/BlockingQueue/ProducerConsumerLoops.java +++ b/test/java/util/concurrent/BlockingQueue/ProducerConsumerLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/BlockingQueue/SingleProducerMultipleConsumerLoops.java b/test/java/util/concurrent/BlockingQueue/SingleProducerMultipleConsumerLoops.java index 85699bc7d56185548e473536b7e288fe6faddca1..a697d312df582b22d38d70ba440532a96679466b 100644 --- a/test/java/util/concurrent/BlockingQueue/SingleProducerMultipleConsumerLoops.java +++ b/test/java/util/concurrent/BlockingQueue/SingleProducerMultipleConsumerLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/ConcurrentHashMap/DistinctEntrySetElements.java b/test/java/util/concurrent/ConcurrentHashMap/DistinctEntrySetElements.java new file mode 100644 index 0000000000000000000000000000000000000000..cf6f29112e1a1622e83467bb13b3f43cc9675de3 --- /dev/null +++ b/test/java/util/concurrent/ConcurrentHashMap/DistinctEntrySetElements.java @@ -0,0 +1,59 @@ +/* + * 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. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Sets from Map.entrySet() return distinct objects for each Entry + * @author Neil Richards <neil.richards@ngmr.net>, <neil_richards@uk.ibm.com> + */ + +import java.util.concurrent.ConcurrentHashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class DistinctEntrySetElements { + public static void main(String[] args) throws Exception { + final ConcurrentHashMap<String, String> concurrentHashMap = + new ConcurrentHashMap<>(); + + concurrentHashMap.put("One", "Un"); + concurrentHashMap.put("Two", "Deux"); + concurrentHashMap.put("Three", "Trois"); + + Set<Map.Entry<String, String>> entrySet = concurrentHashMap.entrySet(); + HashSet<Map.Entry<String, String>> hashSet = new HashSet<>(entrySet); + + if (false == hashSet.equals(entrySet)) { + throw new RuntimeException("Test FAILED: Sets are not equal."); + } + if (hashSet.hashCode() != entrySet.hashCode()) { + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); + } + } +} diff --git a/test/java/util/concurrent/ConcurrentHashMap/LoopHelpers.java b/test/java/util/concurrent/ConcurrentHashMap/LoopHelpers.java index 5bf6d0dbbee5900c0abe3cfa9a55aa6d8313e645..d9859f300664b45805e5e953b3e2431516d52c94 100644 --- a/test/java/util/concurrent/ConcurrentHashMap/LoopHelpers.java +++ b/test/java/util/concurrent/ConcurrentHashMap/LoopHelpers.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /** diff --git a/test/java/util/concurrent/ConcurrentHashMap/MapCheck.java b/test/java/util/concurrent/ConcurrentHashMap/MapCheck.java index c6075c131b94a45119d763def02734e235fa6ad2..723ef64dc892ba9d941477b63f13a0b8a21b1a60 100644 --- a/test/java/util/concurrent/ConcurrentHashMap/MapCheck.java +++ b/test/java/util/concurrent/ConcurrentHashMap/MapCheck.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/ConcurrentHashMap/MapLoops.java b/test/java/util/concurrent/ConcurrentHashMap/MapLoops.java index 53ed2919a9d82b1ef0580b8730b7cf5565bf10cb..49f615a34010cc9ecf89500c6e96581aceffa219 100644 --- a/test/java/util/concurrent/ConcurrentHashMap/MapLoops.java +++ b/test/java/util/concurrent/ConcurrentHashMap/MapLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/ConcurrentQueues/ConcurrentQueueLoops.java b/test/java/util/concurrent/ConcurrentQueues/ConcurrentQueueLoops.java index b993628533996259d31fb7013388220807e9c709..7ee63a336fd9af2efb2edb5dd97fede7f24a5176 100644 --- a/test/java/util/concurrent/ConcurrentQueues/ConcurrentQueueLoops.java +++ b/test/java/util/concurrent/ConcurrentQueues/ConcurrentQueueLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/ConcurrentQueues/GCRetention.java b/test/java/util/concurrent/ConcurrentQueues/GCRetention.java index 1786ed3509d554a7aac852caff8b21fe4859204f..363558cbc03f61ff8a87703a057cce32f1b9e24d 100644 --- a/test/java/util/concurrent/ConcurrentQueues/GCRetention.java +++ b/test/java/util/concurrent/ConcurrentQueues/GCRetention.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* * @test diff --git a/test/java/util/concurrent/ConcurrentQueues/IteratorWeakConsistency.java b/test/java/util/concurrent/ConcurrentQueues/IteratorWeakConsistency.java index dabb2b9de2a7189854d78d905b0b75a59b79641e..c143c3f04b7926dabf980227229e96c38f5e7c2a 100644 --- a/test/java/util/concurrent/ConcurrentQueues/IteratorWeakConsistency.java +++ b/test/java/util/concurrent/ConcurrentQueues/IteratorWeakConsistency.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ import java.util.*; diff --git a/test/java/util/concurrent/ConcurrentQueues/LoopHelpers.java b/test/java/util/concurrent/ConcurrentQueues/LoopHelpers.java index 5bf6d0dbbee5900c0abe3cfa9a55aa6d8313e645..d9859f300664b45805e5e953b3e2431516d52c94 100644 --- a/test/java/util/concurrent/ConcurrentQueues/LoopHelpers.java +++ b/test/java/util/concurrent/ConcurrentQueues/LoopHelpers.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /** diff --git a/test/java/util/concurrent/ConcurrentQueues/RemovePollRace.java b/test/java/util/concurrent/ConcurrentQueues/RemovePollRace.java index 1bccb53cd707cf556dc5a801b356c56a59ecc4a4..f973d498f1547964e4b03423cb2adea0636ef580 100644 --- a/test/java/util/concurrent/ConcurrentQueues/RemovePollRace.java +++ b/test/java/util/concurrent/ConcurrentQueues/RemovePollRace.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/Exchanger/ExchangeLoops.java b/test/java/util/concurrent/Exchanger/ExchangeLoops.java index 2055c056ca33215aae45ea7648b7372107484f46..7527e4fe4c29d78da4b2040189bc531e38b6e59e 100644 --- a/test/java/util/concurrent/Exchanger/ExchangeLoops.java +++ b/test/java/util/concurrent/Exchanger/ExchangeLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/Exchanger/LoopHelpers.java b/test/java/util/concurrent/Exchanger/LoopHelpers.java index 6b65b8b2d4aa5b0eec43287030d252a71b89e0cd..5a6924c687ea2a0fdbac29a2371a4d404bd9e0a8 100644 --- a/test/java/util/concurrent/Exchanger/LoopHelpers.java +++ b/test/java/util/concurrent/Exchanger/LoopHelpers.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /** * Misc utilities in JSR166 performance tests diff --git a/test/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java b/test/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java index 71c45e75f7fa3e7a28d804dc5ec8543587e50e4e..79b2c5634e9a6a4bcac5e5916b8e1271b6a649ff 100644 --- a/test/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java +++ b/test/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/ExecutorCompletionService/LoopHelpers.java b/test/java/util/concurrent/ExecutorCompletionService/LoopHelpers.java index 6b65b8b2d4aa5b0eec43287030d252a71b89e0cd..5a6924c687ea2a0fdbac29a2371a4d404bd9e0a8 100644 --- a/test/java/util/concurrent/ExecutorCompletionService/LoopHelpers.java +++ b/test/java/util/concurrent/ExecutorCompletionService/LoopHelpers.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /** * Misc utilities in JSR166 performance tests diff --git a/test/java/util/concurrent/FutureTask/CancelledFutureLoops.java b/test/java/util/concurrent/FutureTask/CancelledFutureLoops.java index 6a0ca8c93df8c466dd66cce3fd4255ffa43e46fe..25cec33881d4924f8ee71f0c10c7c4dbcfe4fdef 100644 --- a/test/java/util/concurrent/FutureTask/CancelledFutureLoops.java +++ b/test/java/util/concurrent/FutureTask/CancelledFutureLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/FutureTask/LoopHelpers.java b/test/java/util/concurrent/FutureTask/LoopHelpers.java index 6b65b8b2d4aa5b0eec43287030d252a71b89e0cd..5a6924c687ea2a0fdbac29a2371a4d404bd9e0a8 100644 --- a/test/java/util/concurrent/FutureTask/LoopHelpers.java +++ b/test/java/util/concurrent/FutureTask/LoopHelpers.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /** * Misc utilities in JSR166 performance tests diff --git a/test/java/util/concurrent/Phaser/Arrive.java b/test/java/util/concurrent/Phaser/Arrive.java index 94496ab65729d294946caa3ffe319b46bfa20234..0787176200d15de6c852c10e4ac0712744aebf6e 100644 --- a/test/java/util/concurrent/Phaser/Arrive.java +++ b/test/java/util/concurrent/Phaser/Arrive.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/Phaser/Basic.java b/test/java/util/concurrent/Phaser/Basic.java index a358873c2ece837b79e420f3cc0166632452b335..d9f60ecd3ae982d17c13d00b8b408162956aec64 100644 --- a/test/java/util/concurrent/Phaser/Basic.java +++ b/test/java/util/concurrent/Phaser/Basic.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/Phaser/FickleRegister.java b/test/java/util/concurrent/Phaser/FickleRegister.java index 9ce91c5de442a6ef175bf6953102f990ac069127..c3bc7dda50e7b0334423898c656e43fc80bfb9f2 100644 --- a/test/java/util/concurrent/Phaser/FickleRegister.java +++ b/test/java/util/concurrent/Phaser/FickleRegister.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/Phaser/PhaseOverflow.java b/test/java/util/concurrent/Phaser/PhaseOverflow.java index da8b5367072bf15c20806e37bd817e72e3010afc..093d9497cc8182b4a34b300516228b31c7a0940a 100644 --- a/test/java/util/concurrent/Phaser/PhaseOverflow.java +++ b/test/java/util/concurrent/Phaser/PhaseOverflow.java @@ -29,7 +29,7 @@ * Written by Martin Buchholz and Doug Lea with assistance from * members of JCP JSR-166 Expert Group and released to the public * domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/Phaser/TieredArriveLoops.java b/test/java/util/concurrent/Phaser/TieredArriveLoops.java index 33a03f08dab08efbda646f0873bff3f4c3c607bd..d9c8954d05dcc94c97d9aeead740c8f9e675ebd2 100644 --- a/test/java/util/concurrent/Phaser/TieredArriveLoops.java +++ b/test/java/util/concurrent/Phaser/TieredArriveLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/ScheduledThreadPoolExecutor/DelayOverflow.java b/test/java/util/concurrent/ScheduledThreadPoolExecutor/DelayOverflow.java index bc34d00965fc0a7a5bd89b4add0617f15c60be35..e03f489e64805a44cdf4207d8efd7193aceb5fe2 100644 --- a/test/java/util/concurrent/ScheduledThreadPoolExecutor/DelayOverflow.java +++ b/test/java/util/concurrent/ScheduledThreadPoolExecutor/DelayOverflow.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/Semaphore/PermitOverflow.java b/test/java/util/concurrent/Semaphore/PermitOverflow.java index 3290abebf678e1c81e1b2b5b0710f6639bc16d25..d8137a2ace0906340c206ba390f9ac5bcb6f58c1 100644 --- a/test/java/util/concurrent/Semaphore/PermitOverflow.java +++ b/test/java/util/concurrent/Semaphore/PermitOverflow.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/Semaphore/RacingReleases.java b/test/java/util/concurrent/Semaphore/RacingReleases.java index a5f69beae223251a5649ecda4bc73b0b51516339..1a23bb924a2b5da76a6f57878e7fb1c43d03ac76 100644 --- a/test/java/util/concurrent/Semaphore/RacingReleases.java +++ b/test/java/util/concurrent/Semaphore/RacingReleases.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/forkjoin/Integrate.java b/test/java/util/concurrent/forkjoin/Integrate.java index 5b5438d06571a9f0c549a832858e5cbe7b8b902b..dda58467983d9dc0a92e9d57e1736a70c429586f 100644 --- a/test/java/util/concurrent/forkjoin/Integrate.java +++ b/test/java/util/concurrent/forkjoin/Integrate.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/forkjoin/NQueensCS.java b/test/java/util/concurrent/forkjoin/NQueensCS.java index ab147bfbd08552525ea918b81172401121602e25..4a55281c1c2e3d06c0dcb74a604a50a73896832e 100644 --- a/test/java/util/concurrent/forkjoin/NQueensCS.java +++ b/test/java/util/concurrent/forkjoin/NQueensCS.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java b/test/java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java index 3f7667c247a15c69964fb97f8b17638296383292..e942e1811bd8f32263492cd85233129b98ce2a7c 100644 --- a/test/java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java +++ b/test/java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/locks/ReentrantLock/LockOncePerThreadLoops.java b/test/java/util/concurrent/locks/ReentrantLock/LockOncePerThreadLoops.java index 8682e24dbab8b8af2c4cb1236f17af3e8b10763a..c3cedf4ab1e47f6a60805b0a6e772067970ec161 100644 --- a/test/java/util/concurrent/locks/ReentrantLock/LockOncePerThreadLoops.java +++ b/test/java/util/concurrent/locks/ReentrantLock/LockOncePerThreadLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/locks/ReentrantLock/LoopHelpers.java b/test/java/util/concurrent/locks/ReentrantLock/LoopHelpers.java index 6b65b8b2d4aa5b0eec43287030d252a71b89e0cd..5a6924c687ea2a0fdbac29a2371a4d404bd9e0a8 100644 --- a/test/java/util/concurrent/locks/ReentrantLock/LoopHelpers.java +++ b/test/java/util/concurrent/locks/ReentrantLock/LoopHelpers.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /** * Misc utilities in JSR166 performance tests diff --git a/test/java/util/concurrent/locks/ReentrantLock/SimpleReentrantLockLoops.java b/test/java/util/concurrent/locks/ReentrantLock/SimpleReentrantLockLoops.java index db7d5af61dc1ab205ac4c8cff69c0af15a23022a..f3e7705302714a8fb618cdbc6a140fb809112727 100644 --- a/test/java/util/concurrent/locks/ReentrantLock/SimpleReentrantLockLoops.java +++ b/test/java/util/concurrent/locks/ReentrantLock/SimpleReentrantLockLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/locks/ReentrantLock/TimeoutLockLoops.java b/test/java/util/concurrent/locks/ReentrantLock/TimeoutLockLoops.java index 3c20867531a976a8cacde8747b1ca34b9ec1ae96..303e11038a8b1bb5423a52cf96c96c53a06e47e0 100644 --- a/test/java/util/concurrent/locks/ReentrantLock/TimeoutLockLoops.java +++ b/test/java/util/concurrent/locks/ReentrantLock/TimeoutLockLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/locks/ReentrantReadWriteLock/LoopHelpers.java b/test/java/util/concurrent/locks/ReentrantReadWriteLock/LoopHelpers.java index 6b65b8b2d4aa5b0eec43287030d252a71b89e0cd..5a6924c687ea2a0fdbac29a2371a4d404bd9e0a8 100644 --- a/test/java/util/concurrent/locks/ReentrantReadWriteLock/LoopHelpers.java +++ b/test/java/util/concurrent/locks/ReentrantReadWriteLock/LoopHelpers.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /** * Misc utilities in JSR166 performance tests diff --git a/test/java/util/concurrent/locks/ReentrantReadWriteLock/MapLoops.java b/test/java/util/concurrent/locks/ReentrantReadWriteLock/MapLoops.java index a8e47e5a25edf9dfeca3ca70c169c6223931c289..36116703814e2ddd2b7ae970f8e3f735400d2841 100644 --- a/test/java/util/concurrent/locks/ReentrantReadWriteLock/MapLoops.java +++ b/test/java/util/concurrent/locks/ReentrantReadWriteLock/MapLoops.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ /* diff --git a/test/java/util/concurrent/locks/ReentrantReadWriteLock/RWMap.java b/test/java/util/concurrent/locks/ReentrantReadWriteLock/RWMap.java index 53f63d6e33c01dca54eec675ddc62a5ff86e6749..a281634c33a3ebc39ae14016b471b0e3ee000bf8 100644 --- a/test/java/util/concurrent/locks/ReentrantReadWriteLock/RWMap.java +++ b/test/java/util/concurrent/locks/ReentrantReadWriteLock/RWMap.java @@ -28,7 +28,7 @@ * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ import java.util.*; diff --git a/test/java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java b/test/java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java new file mode 100644 index 0000000000000000000000000000000000000000..5ab8e835b79754a77c239100a102c2b1883ded0e --- /dev/null +++ b/test/java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java @@ -0,0 +1,148 @@ +/* + * 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. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 7031076 + * @summary Allow stale InputStreams from ZipFiles to be GC'd + * @author Neil Richards <neil.richards@ngmr.net>, <neil_richards@uk.ibm.com> + */ +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.util.Enumeration; +import java.util.HashSet; +import java.util.Random; +import java.util.Set; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import java.util.zip.ZipOutputStream; + +public class ClearStaleZipFileInputStreams { + private static final int ZIP_ENTRY_NUM = 5; + + private static final byte[][] data; + + static { + data = new byte[ZIP_ENTRY_NUM][]; + Random r = new Random(); + for (int i = 0; i < ZIP_ENTRY_NUM; i++) { + data[i] = new byte[1000]; + r.nextBytes(data[i]); + } + } + + private static File createTestFile(int compression) throws Exception { + File tempZipFile = + File.createTempFile("test-data" + compression, ".zip"); + tempZipFile.deleteOnExit(); + + ZipOutputStream zos = + new ZipOutputStream(new FileOutputStream(tempZipFile)); + zos.setLevel(compression); + + try { + for (int i = 0; i < ZIP_ENTRY_NUM; i++) { + String text = "Entry" + i; + ZipEntry entry = new ZipEntry(text); + zos.putNextEntry(entry); + try { + zos.write(data[i], 0, data[i].length); + } finally { + zos.closeEntry(); + } + } + } finally { + zos.close(); + } + + return tempZipFile; + } + + private static void startGcInducingThread(final int sleepMillis) { + final Thread gcInducingThread = new Thread() { + public void run() { + while (true) { + System.gc(); + try { + Thread.sleep(sleepMillis); + } catch (InterruptedException e) { } + } + } + }; + + gcInducingThread.setDaemon(true); + gcInducingThread.start(); + } + + public static void main(String[] args) throws Exception { + startGcInducingThread(500); + runTest(ZipOutputStream.DEFLATED); + runTest(ZipOutputStream.STORED); + } + + private static void runTest(int compression) throws Exception { + ReferenceQueue<InputStream> rq = new ReferenceQueue<>(); + + System.out.println("Testing with a zip file with compression level = " + + compression); + File f = createTestFile(compression); + try { + ZipFile zf = new ZipFile(f); + try { + Set<Object> refSet = createTransientInputStreams(zf, rq); + + System.out.println("Waiting for 'stale' input streams from ZipFile to be GC'd ..."); + System.out.println("(The test will hang on failure)"); + while (false == refSet.isEmpty()) { + refSet.remove(rq.remove()); + } + System.out.println("Test PASSED."); + System.out.println(); + } finally { + zf.close(); + } + } finally { + f.delete(); + } + } + + private static Set<Object> createTransientInputStreams(ZipFile zf, + ReferenceQueue<InputStream> rq) throws Exception { + Enumeration<? extends ZipEntry> zfe = zf.entries(); + Set<Object> refSet = new HashSet<>(); + + while (zfe.hasMoreElements()) { + InputStream is = zf.getInputStream(zfe.nextElement()); + refSet.add(new WeakReference<InputStream>(is, rq)); + } + + return refSet; + } +} diff --git a/test/javax/crypto/Cipher/GCMAPI.java b/test/javax/crypto/Cipher/GCMAPI.java new file mode 100644 index 0000000000000000000000000000000000000000..1ccb230d3280f39bb5ee6ccf28156664d025e4a9 --- /dev/null +++ b/test/javax/crypto/Cipher/GCMAPI.java @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 7031343 + * @summary Provide API changes to support GCM AEAD ciphers + * @author Brad Wetmore + */ + +import javax.crypto.*; +import javax.crypto.spec.*; +import java.nio.ByteBuffer; + +/* + * At this point in time, we can't really do any testing since only the API + * is available, the underlying implementation doesn't exist yet. Test + * what we can... + */ +public class GCMAPI { + + // 16 elements + private static byte[] bytes = new byte[] { + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }; + + private static int failed = 0; + private static Cipher c; + + public static void main(String[] args) throws Exception { + c = Cipher.getInstance("AES"); + c.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(new byte[16], "AES")); + + updateAADFail((byte[]) null); + updateAADPass(bytes); + + updateAADFail(null, 2, 4); + updateAADFail(bytes, -2, 4); + updateAADFail(bytes, 2, -4); + updateAADFail(bytes, 2, 15); // one too many + + updateAADPass(bytes, 2, 14); // ok. + updateAADPass(bytes, 4, 4); + updateAADPass(bytes, 0, 0); + + ByteBuffer bb = ByteBuffer.wrap(bytes); + + updateAADFail((ByteBuffer) null); + updateAADPass(bb); + + if (failed != 0) { + throw new Exception("Test(s) failed"); + } + } + + private static void updateAADPass(byte[] src) { + try { + c.updateAAD(src); + } catch (UnsupportedOperationException e) { + // swallow + }catch (Exception e) { + e.printStackTrace(); + failed++; + } + } + + private static void updateAADFail(byte[] src) { + try { + c.updateAAD(src); + new Exception("Didn't Fail as Expected").printStackTrace(); + failed++; + } catch (IllegalArgumentException e) { + // swallow + } + } + + private static void updateAADPass(byte[] src, int offset, int len) { + try { + c.updateAAD(src, offset, len); + } catch (UnsupportedOperationException e) { + // swallow + } catch (Exception e) { + e.printStackTrace(); + failed++; + } + } + + private static void updateAADFail(byte[] src, int offset, int len) { + try { + c.updateAAD(src, offset, len); + new Exception("Didn't Fail as Expected").printStackTrace(); + failed++; + } catch (IllegalArgumentException e) { + // swallow + } + } + + private static void updateAADPass(ByteBuffer src) { + try { + c.updateAAD(src); + } catch (UnsupportedOperationException e) { + // swallow + }catch (Exception e) { + e.printStackTrace(); + failed++; + } + } + + private static void updateAADFail(ByteBuffer src) { + try { + c.updateAAD(src); + new Exception("Didn't Fail as Expected").printStackTrace(); + failed++; + } catch (IllegalArgumentException e) { + // swallow + } + } +} diff --git a/test/javax/crypto/spec/GCMParameterSpec/GCMParameterSpecTest.java b/test/javax/crypto/spec/GCMParameterSpec/GCMParameterSpecTest.java new file mode 100644 index 0000000000000000000000000000000000000000..3991c8f29a0ccbc31e0be6641ca62963bf3ce7c5 --- /dev/null +++ b/test/javax/crypto/spec/GCMParameterSpec/GCMParameterSpecTest.java @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 7031343 + * @summary Provide API changes to support GCM AEAD ciphers + * @author Brad Wetmore + */ + +import javax.crypto.AEADBadTagException; +import javax.crypto.spec.GCMParameterSpec; +import java.util.Arrays; + +public class GCMParameterSpecTest { + + // 16 elements + private static byte[] bytes = new byte[] { + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }; + + private static int failed = 0; + + public static void main(String[] args) throws Exception { + newGCMParameterSpecFail(-1, bytes); + newGCMParameterSpecFail(128, null); + newGCMParameterSpecPass(128, bytes); + + newGCMParameterSpecFail(-1, bytes, 2, 4); + newGCMParameterSpecFail(128, null, 2, 4); + newGCMParameterSpecFail(128, bytes, -2, 4); + newGCMParameterSpecFail(128, bytes, 2, -4); + newGCMParameterSpecFail(128, bytes, 2, 15); // one too many + + newGCMParameterSpecPass(128, bytes, 2, 14); // ok. + newGCMParameterSpecPass(96, bytes, 4, 4); + newGCMParameterSpecPass(96, bytes, 0, 0); + + // Might as well check the Exception constructors. + try { + new AEADBadTagException(); + new AEADBadTagException("Bad Tag Seen"); + } catch (Exception e) { + e.printStackTrace(); + failed++; + } + + if (failed != 0) { + throw new Exception("Test(s) failed"); + } + } + + private static void newGCMParameterSpecPass( + int tLen, byte[] src) { + try { + GCMParameterSpec gcmps = new GCMParameterSpec(tLen, src); + if (gcmps.getTLen() != tLen) { + throw new Exception("tLen's not equal"); + } + if (!Arrays.equals(gcmps.getIV(), src)) { + throw new Exception("IV's not equal"); + } + } catch (Exception e) { + e.printStackTrace(); + failed++; + } + } + + private static void newGCMParameterSpecFail( + int tLen, byte[] src) { + try { + new GCMParameterSpec(tLen, src); + new Exception("Didn't Fail as Expected").printStackTrace(); + failed++; + } catch (IllegalArgumentException e) { + // swallow + } + } + + private static void newGCMParameterSpecPass( + int tLen, byte[] src, int offset, int len) { + try { + GCMParameterSpec gcmps = + new GCMParameterSpec(tLen, src, offset, len); + if (gcmps.getTLen() != tLen) { + throw new Exception("tLen's not equal"); + } + if (!Arrays.equals(gcmps.getIV(), + Arrays.copyOfRange(src, offset, offset + len))) { + System.out.println(offset + " " + len); + System.out.println(Arrays.copyOfRange(src, offset, len)[0]); + throw new Exception("IV's not equal"); + } + } catch (Exception e) { + e.printStackTrace(); + failed++; + } + } + + private static void newGCMParameterSpecFail( + int tLen, byte[] src, int offset, int len) { + try { + new GCMParameterSpec(tLen, src, offset, len); + new Exception("Didn't Fail as Expected").printStackTrace(); + failed++; + } catch (IllegalArgumentException e) { + // swallow + } + } +} diff --git a/test/javax/imageio/metadata/DOML3Node.java b/test/javax/imageio/metadata/DOML3Node.java index 0a72c13517569bbf8c48380d0c2d3dc29b36e42d..459334940cc6b5c1184106c44b355f177e280c84 100644 --- a/test/javax/imageio/metadata/DOML3Node.java +++ b/test/javax/imageio/metadata/DOML3Node.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. * 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,7 @@ /* * @test - * @bug 6559064 + * @bug 6559064 6942504 * * @summary Verify DOM L3 Node APIs behave as per Image I/O spec. * @@ -34,6 +34,7 @@ import javax.imageio.metadata.IIOMetadataNode; import org.w3c.dom.Attr; +import org.w3c.dom.Node; import org.w3c.dom.DOMException; import org.w3c.dom.UserDataHandler; @@ -74,7 +75,7 @@ public class DOML3Node { } try { - node.setUserData("key"); + node.getUserData("key"); throw new RuntimeException("No expected DOM exception"); } catch (DOMException e) { } @@ -115,12 +116,6 @@ public class DOML3Node { } catch (DOMException e) { } - try { - node.lookupPrefix("namespaceURI"); - throw new RuntimeException("No expected DOM exception"); - } catch (DOMException e) { - } - try { node.getTextContent(); throw new RuntimeException("No expected DOM exception"); diff --git a/test/javax/swing/JComponent/6989617/bug6989617.java b/test/javax/swing/JComponent/6989617/bug6989617.java index 7c85e255f72a5fe8914988f8f71fbfe281f9654b..23f3754b78a95f00f03a4472fbdacfda4edc76be 100644 --- a/test/javax/swing/JComponent/6989617/bug6989617.java +++ b/test/javax/swing/JComponent/6989617/bug6989617.java @@ -59,9 +59,7 @@ public class bug6989617 { toolkit.realSync(); SwingUtilities.invokeAndWait(new Runnable() { public void run() { - if (panel.getPaintRectangle() != null) { - throw new RuntimeException("paint rectangle is not null"); - } + panel.resetPaintRectangle(); button.repaint(); } }); diff --git a/test/javax/swing/JLabel/6596966/bug6596966.java b/test/javax/swing/JLabel/6596966/bug6596966.java new file mode 100644 index 0000000000000000000000000000000000000000..5cf0110f70008f7289fc777f9152fcd8581a8ff5 --- /dev/null +++ b/test/javax/swing/JLabel/6596966/bug6596966.java @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + @bug 6596966 + @summary Some JFileChooser mnemonics do not work with sticky keys + * @library ../../regtesthelpers + * @build Util + @run main bug6596966 + @author Pavel Porvatov +*/ + + +import javax.swing.*; +import java.awt.*; +import java.awt.event.KeyEvent; + +public class bug6596966 { + private static JFrame frame; + + private static JLabel label; + private static JButton button; + private static JComboBox comboBox; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + button = new JButton("Button"); + comboBox = new JComboBox(); + + label = new JLabel("Label"); + label.setDisplayedMnemonic('L'); + label.setLabelFor(comboBox); + + JPanel pnContent = new JPanel(); + + pnContent.add(button); + pnContent.add(label); + pnContent.add(comboBox); + + frame = new JFrame(); + + frame.add(pnContent); + frame.pack(); + frame.setVisible(true); + } + }); + + Util.blockTillDisplayed(frame); + + robot.keyPress(KeyEvent.VK_ALT); + robot.keyPress(KeyEvent.VK_L); + + robot.waitForIdle(); + + Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new KeyEvent(label, KeyEvent.KEY_RELEASED, + EventQueue.getMostRecentEventTime(), 0, KeyEvent.VK_L, 'L')); + + robot.waitForIdle(); + + try { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + if (!comboBox.isFocusOwner()) { + throw new RuntimeException("comboBox isn't focus owner"); + } + } + }); + } finally { + robot.keyRelease(KeyEvent.VK_ALT); + } + } +} diff --git a/test/javax/swing/JLabel/7004134/bug7004134.java b/test/javax/swing/JLabel/7004134/bug7004134.java index 2768263e4587f93d3080db1bcacabeded96ca785..63464b2738adbbb321450106c064047d5f166708 100644 --- a/test/javax/swing/JLabel/7004134/bug7004134.java +++ b/test/javax/swing/JLabel/7004134/bug7004134.java @@ -52,7 +52,13 @@ public class bug7004134 { frame.add(label); frame.pack(); frame.setVisible(true); + } + }); + + ((SunToolkit) SunToolkit.getDefaultToolkit()).realSync(); + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { ToolTipManager toolTipManager = ToolTipManager.sharedInstance(); toolTipManager.setInitialDelay(0); @@ -83,7 +89,13 @@ public class bug7004134 { frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); + } + }); + + ((SunToolkit) SunToolkit.getDefaultToolkit()).realSync(); + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { ToolTipManager toolTipManager = ToolTipManager.sharedInstance(); toolTipManager.setInitialDelay(0); diff --git a/test/javax/swing/JMenuItem/7036148/bug7036148.java b/test/javax/swing/JMenuItem/7036148/bug7036148.java new file mode 100644 index 0000000000000000000000000000000000000000..32199de8ecb53512688399708219dcc8e5b07b4e --- /dev/null +++ b/test/javax/swing/JMenuItem/7036148/bug7036148.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + /* + * @test + * @bug 7036148 + * @summary NullPointerException with null JMenu name + * @author Alexander Potochkin + * @run main bug7036148 + */ + + +import javax.swing.*; +import java.awt.event.ActionEvent; + +public class bug7036148 extends JFrame { + public bug7036148() { + JMenuBar bar = new JMenuBar(); + Action menuAction = new AbstractAction(null, null){ + public void actionPerformed(ActionEvent e) { + } + }; + JMenu menu = new JMenu(menuAction); + menu.add(new JMenuItem("test")); + bar.add(menu); + setJMenuBar(bar); + pack(); + } + + public static void main(String[] args) { + new bug7036148(); + } +} diff --git a/test/javax/swing/border/Test7034614.java b/test/javax/swing/border/Test7034614.java new file mode 100644 index 0000000000000000000000000000000000000000..bb256a7d517caf8f885de63fd69195ff3d2f9f8e --- /dev/null +++ b/test/javax/swing/border/Test7034614.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7034614 + * @summary Tests that TitledBorder does not modify Insets + * @author Sergey Malenkov + */ + +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.image.BufferedImage; +import javax.swing.border.Border; +import javax.swing.border.TitledBorder; + +public class Test7034614 { + + public static void main(String[] args) { + Graphics g = new BufferedImage(9, 9, 9).getGraphics(); + + BrokenBorder broken = new BrokenBorder(); + TitledBorder titled = new TitledBorder(broken, broken.getClass().getName()); + + Insets insets = (Insets) broken.getBorderInsets(broken).clone(); + titled.getBorderInsets(broken); + broken.validate(insets); + for (int i = 0; i < 10; i++) { + titled.paintBorder(broken, g, 0, 0, i, i); + broken.validate(insets); + titled.getBaseline(broken, i, i); + broken.validate(insets); + } + } + + private static class BrokenBorder extends Component implements Border { + private Insets insets = new Insets(1, 2, 3, 4); + + private void validate(Insets insets) { + if (!this.insets.equals(insets)) { + throw new Error("unexpected change"); + } + } + + public Insets getBorderInsets(Component c) { + return this.insets; + } + + public boolean isBorderOpaque() { + return false; + } + + public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) { + } + } +} diff --git a/test/javax/swing/plaf/synth/7032791/bug7032791.java b/test/javax/swing/plaf/synth/7032791/bug7032791.java new file mode 100644 index 0000000000000000000000000000000000000000..f956a316388def72c56226140ca02f569f8623b1 --- /dev/null +++ b/test/javax/swing/plaf/synth/7032791/bug7032791.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 7032791 + * @author Alexander Potochkin + * @summary TableCellRenderer.getTableCellRendererComponent() doesn't accept null JTable with GTK+ L&F + */ + +import javax.swing.*; +import javax.swing.plaf.synth.SynthLookAndFeel; +import javax.swing.table.TableCellRenderer; + +public class bug7032791 { + + public static void main(String[] args) throws Exception { + + UIManager.setLookAndFeel(new SynthLookAndFeel()); + + Object value = "Test value"; + JTable table = new JTable(1, 1); + TableCellRenderer renderer = table.getDefaultRenderer(Object.class); + renderer.getTableCellRendererComponent(null, value, true, true, 0, 0); + System.out.println("OK"); + } +} + diff --git a/test/javax/swing/text/CSSBorder/6796710/bug6796710.java b/test/javax/swing/text/CSSBorder/6796710/bug6796710.java index 1ff87aad4d1406942795b0e8cf5d2e019d4ced55..b59ba9fd9bb65f0eea467c3d693b6a0efb455787 100644 --- a/test/javax/swing/text/CSSBorder/6796710/bug6796710.java +++ b/test/javax/swing/text/CSSBorder/6796710/bug6796710.java @@ -31,6 +31,8 @@ @run main bug6796710 */ +import sun.awt.SunToolkit; + import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; @@ -91,7 +93,7 @@ public class bug6796710 { } }); - robot.waitForIdle(); + ((SunToolkit) SunToolkit.getDefaultToolkit()).realSync(); BufferedImage bufferedImage = getPnBottomImage(); @@ -101,7 +103,10 @@ public class bug6796710 { } }); - robot.waitForIdle(); + ((SunToolkit) SunToolkit.getDefaultToolkit()).realSync(); + + // On Linux platforms realSync doesn't guaranties setSize completion + Thread.sleep(1000); if (!Util.compareBufferedImages(bufferedImage, getPnBottomImage())) { throw new RuntimeException("The test failed"); diff --git a/test/javax/swing/text/GlyphView/6539700/bug6539700.java b/test/javax/swing/text/GlyphView/6539700/bug6539700.java deleted file mode 100644 index 4f26b65374c4e7a7b466c8d651f6b396ea4fef20..0000000000000000000000000000000000000000 --- a/test/javax/swing/text/GlyphView/6539700/bug6539700.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * 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 6539700 - * @summary test that the long space-less lines are correctly soft-wrapped - * @author Sergey Groznyh - * @run main bug6539700 - */ - -import javax.swing.JEditorPane; -import javax.swing.JFrame; -import javax.swing.SwingUtilities; -import javax.swing.text.ParagraphView; -import javax.swing.text.View; - -public class bug6539700 { - static JFrame f; - static JEditorPane ep; - static String text = "AAAAAAAA<b>AAAAAA</b>AAAAAAAA<b>AAAAAAAAA</b>" + - "AA<b>AAA</b>AAAAAAAAA"; - static int size = 100; - static Class rowClass = null; - - static void createContentPane() { - ep = new JEditorPane(); - ep.setContentType("text/html"); - ep.setEditable(false); - ep.setText(text); - f = new JFrame(); - f.setSize(size, 2 * size); - f.add(ep); - f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - f.setVisible(true); - } - - static void checkRows(View v, boolean last) { - int width = (int) v.getPreferredSpan(View.X_AXIS); - - if (v.getClass() == rowClass) { - // Row width shouldn't exceed the container width - if (width > size) { - throw new RuntimeException("too long row: " + width); - } - - // Row shouldn't be too short (except for the last one) - if (!last) { - if (width < size * 2 / 3) { - throw new RuntimeException("too short row: " + width); - } - } - } - - int n = v.getViewCount(); - if (n > 0) { - for (int i = 0; i < n; i++) { - View c = v.getView(i); - checkRows(c, i == n - 1); - } - } - } - - public static void main(String[] argv) { - try { - SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - createContentPane(); - } - }); - } catch (Exception ex) { - throw new RuntimeException(ex); - } - - Class[] pvchildren = ParagraphView.class.getDeclaredClasses(); - for (Class c : pvchildren) { - if (c.getName().equals("javax.swing.text.ParagraphView$Row")) { - rowClass = c; - break; - } - } - if (rowClass == null) { - throw new RuntimeException("can't find ParagraphView.Row class"); - } - - SwingUtilities.invokeLater(new Runnable() { - public void run() { - checkRows(ep.getUI().getRootView(ep), true); - } - }); - - System.out.println("OK"); - } -} diff --git a/test/javax/swing/text/html/parser/Parser/7003777/bug7003777.java b/test/javax/swing/text/html/parser/Parser/7003777/bug7003777.java new file mode 100644 index 0000000000000000000000000000000000000000..93b6b56facfd7d713e95eaa10d80e4d28de0a10b --- /dev/null +++ b/test/javax/swing/text/html/parser/Parser/7003777/bug7003777.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + @bug 7003777 + @summary Nonexistent html entities not parsed properly. + @author Pavel Porvatov +*/ + +import javax.swing.*; +import javax.swing.text.BadLocationException; + +public class bug7003777 { + private static final String[] TEST_STRINGS = { + "&a", + "&aa", + "&a;", + "&aa;", + }; + + public static void main(String[] args) throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + JTextPane pane = new JTextPane(); + + pane.setContentType("text/html"); + + for (String testString : TEST_STRINGS) { + pane.setText(testString); + + String parsedText; + + try { + parsedText = pane.getDocument().getText(0, pane.getDocument().getLength()); + } catch (BadLocationException e) { + throw new RuntimeException("The test failed.", e); + } + + if (parsedText.charAt(0) != '\n') { + throw new RuntimeException("The first char should be \\n"); + } + + parsedText = parsedText.substring(1); + + if (!testString.equals(parsedText)) { + throw new RuntimeException("The '" + testString + + "' string wasn't parsed correctly. Parsed value is '" + parsedText + "'"); + } + } + } + }); + } +} diff --git a/test/sample/chatserver/ChatTest.java b/test/sample/chatserver/ChatTest.java new file mode 100644 index 0000000000000000000000000000000000000000..05d6f44e8608ad7eb84ce25945e919e03f5cab8d --- /dev/null +++ b/test/sample/chatserver/ChatTest.java @@ -0,0 +1,399 @@ +/* + * 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 chat server chatserver test + * + * @library ../../../src/share/sample/nio/chatserver + * @build ChatTest ChatServer Client ClientReader DataReader MessageReader NameReader + * @run main ChatTest + */ + +import java.io.*; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.CyclicBarrier; + +public class ChatTest { + public static int listeningPort = 0; + + public static void main(String[] args) throws Throwable { + testStartStop(); + testPortOpen(); + testAsksForName(); + testUseName(); + testConnectDisconnectConnect(); + testUsernameAndMessage(); + testDontReceiveMessageInNameState(); + } + + private static ChatServer startServer() throws IOException { + ChatServer server = new ChatServer(0); + InetSocketAddress address = (InetSocketAddress) server.getSocketAddress(); + listeningPort = address.getPort(); + server.run(); + return server; + } + + public static void testStartStop() throws Exception { + ChatServer server = startServer(); + server.shutdown(); + } + + public static void testPortOpen() throws Exception { + ChatServer server = startServer(); + try { + Socket socket = new Socket("localhost", listeningPort); + if (!socket.isConnected()) { + throw new RuntimeException("Failed to connect to server: port not open"); + } + } finally { + server.shutdown(); + } + } + + public static void testAsksForName() throws Exception { + ChatServer server = startServer(); + try { + Socket socket = new Socket("localhost", listeningPort); + + Reader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); + String string = readAvailableString(reader); + if (!string.equals("Name: ")) { + throw new RuntimeException("Server doesn't send Name: "); + } + } finally { + server.shutdown(); + } + } + + public static void testUseName() throws Throwable { + ChatServer server = startServer(); + try { + performTestUseName(); + } finally { + server.shutdown(); + } + } + + public static void testConnectDisconnectConnect() throws Exception { + ChatServer server = startServer(); + try { + performTestConnectDisconnectConnect(); + } finally { + server.shutdown(); + } + } + + public static void testUsernameAndMessage() throws Exception { + ChatServer server = startServer(); + try { + performTestUsernameAndMessage(); + } finally { + server.shutdown(); + } + } + + public static void testDontReceiveMessageInNameState() throws Exception { + ChatServer server = startServer(); + try { + performDontReceiveMessageInNameState(); + } finally { + server.shutdown(); + } + } + + private static void assertEqual(List<Exception> exception, Object value, Object expected) { + if (expected == value) { + return; + } + if (expected == null) { + exception.add(new RuntimeException("Expected null, but was: " + value)); + return; + } + if (!expected.equals(value)) { + exception.add(new RuntimeException("Expected: " + expected + " but was: " + value)); + return; + } + } + + private static void performDontReceiveMessageInNameState() throws Exception { + final CyclicBarrier barrier1 = new CyclicBarrier(2); + final CyclicBarrier barrier2 = new CyclicBarrier(2); + final CyclicBarrier barrier3 = new CyclicBarrier(2); + final List<Exception> exceptions = Collections.synchronizedList(new ArrayList<Exception>()); + + ChatConnection chatConnection = new ChatConnection() { + @Override + public void run(Socket socket, BufferedReader reader, Writer writer) throws Exception { + String string = readAvailableString(reader); + assertEqual(exceptions, string, "Name: "); + writer.write("testClient1\n"); + waitForJoin(reader, "testClient1"); + barrier1.await(); + writer.write("Ignore this!\n"); + barrier2.await(); + barrier3.await(); + } + }; + + Thread client2 = new Thread(new ChatConnection() { + @Override + public void run(Socket socket, BufferedReader reader, Writer writer) throws Exception { + barrier1.await(); + barrier2.await(); + String string = readAvailableString(reader); + assertEqual(exceptions, string, "Name: "); + string = readAvailableString(reader, true); + assertEqual(exceptions, string, null); + writer.write("testClient2\n"); + barrier3.await(); + } + }); + + client2.start(); + chatConnection.run(); + if (!exceptions.isEmpty()) { + throw exceptions.get(0); + } + + } + + private static void waitForJoin(BufferedReader reader, String s) throws IOException { + String joined; + do { + joined = readAvailableString(reader); + } while (!(joined != null && joined.contains("Welcome " + s))); + } + + private static void performTestUsernameAndMessage() throws Exception { + final CyclicBarrier barrier1 = new CyclicBarrier(2); + final CyclicBarrier barrier2 = new CyclicBarrier(2); + final CyclicBarrier barrier3 = new CyclicBarrier(2); + final List<Exception> exceptions = Collections.synchronizedList(new ArrayList<Exception>()); + + ChatConnection chatConnection = new ChatConnection() { + @Override + public void run(Socket socket, BufferedReader reader, Writer writer) throws Exception { + String string = readAvailableString(reader); + assertEqual(exceptions, string, "Name: "); + writer.write("testClient1\n"); + waitForJoin(reader, "testClient1"); + barrier1.await(); + barrier2.await(); + string = readAvailableString(reader); + assertEqual(exceptions, string, "testClient2: Hello world!\n"); + barrier3.await(); + } + }; + + Thread client2 = new Thread(new ChatConnection() { + @Override + public void run(Socket socket, BufferedReader reader, Writer writer) throws Exception { + String string = readAvailableString(reader); + assertEqual(exceptions, string, "Name: "); + barrier1.await(); + writer.write("testClient2\nHello world!\n"); + barrier2.await(); + barrier3.await(); + } + }); + + client2.start(); + chatConnection.run(); + if (!exceptions.isEmpty()) { + throw exceptions.get(0); + } + } + + private static void performTestConnectDisconnectConnect() throws Exception { + final CyclicBarrier barrier1 = new CyclicBarrier(2); + final CyclicBarrier barrier2 = new CyclicBarrier(2); + final CyclicBarrier barrier3 = new CyclicBarrier(2); + final List<Exception> exceptions = new ArrayList<Exception>(); + + ChatConnection chatConnection = new ChatConnection() { + @Override + public void run(Socket socket, BufferedReader reader, Writer writer) throws Exception { + String string = readAvailableString(reader); + assertEqual(exceptions, string, "Name: "); + writer.write("testClient1\n"); + } + }; + + ChatConnection chatConnection2 = new ChatConnection() { + @Override + public void run(Socket socket, BufferedReader reader, Writer writer) throws Exception { + readAvailableString(reader); + writer.write("testClient1\n"); + waitForJoin(reader, "testClient1"); + barrier1.await(); + writer.write("Good morning!\n"); + barrier2.await(); + String string = readAvailableString(reader); + assertEqual(exceptions, string, "testClient2: Hello world!\n"); + barrier3.await(); + } + }; + + Thread client2 = new Thread(new ChatConnection() { + @Override + public void run(Socket socket, BufferedReader reader, Writer writer) throws Exception { + readAvailableString(reader); + writer.write("testClient2\n"); + waitForJoin(reader, "testClient2"); + barrier1.await(); + writer.write("Hello world!\n"); + barrier2.await(); + String string = readAvailableString(reader); + assertEqual(exceptions, string, "testClient1: Good morning!\n"); + barrier3.await(); + } + }); + + client2.start(); + chatConnection.run(); + chatConnection2.run(); + if (!exceptions.isEmpty()) { + throw exceptions.get(0); + } + } + + private static void performTestUseName() throws Exception { + final CyclicBarrier barrier1 = new CyclicBarrier(2); + final CyclicBarrier barrier2 = new CyclicBarrier(2); + final CyclicBarrier barrier3 = new CyclicBarrier(2); + final List<Exception> exceptions = new ArrayList<Exception>(); + + ChatConnection chatConnection = new ChatConnection() { + @Override + public void run(Socket socket, BufferedReader reader, Writer writer) throws Exception { + String string = readAvailableString(reader); + if (!"Name: ".equals(string)) { + exceptions.add(new RuntimeException("Expected Name: ")); + } + writer.write("testClient1\n"); + waitForJoin(reader, "testClient1"); + barrier1.await(); + barrier2.await(); + string = readAvailableString(reader); + if (!"testClient2: Hello world!\n".equals(string)) { + exceptions.add(new RuntimeException("testClient2: Hello world!\n")); + } + barrier3.await(); + } + }; + + Thread client2 = new Thread(new ChatConnection() { + @Override + public void run(Socket socket, BufferedReader reader, Writer writer) throws Exception { + String string = readAvailableString(reader); + if (!"Name: ".equals(string)) { + exceptions.add(new RuntimeException("Expected Name: ")); + } + writer.write("testClient2\n"); + waitForJoin(reader, "testClient2"); + barrier1.await(); + writer.write("Hello world!\n"); + barrier2.await(); + barrier3.await(); + } + }); + + client2.start(); + chatConnection.run(); + if (!exceptions.isEmpty()) { + throw exceptions.get(0); + } + } + + private static String readAvailableString(Reader reader) throws IOException { + return readAvailableString(reader, false); + } + + private static String readAvailableString(Reader reader, boolean now) throws IOException { + StringBuilder builder = new StringBuilder(); + int bytes; + if (now && !reader.ready()) { + return null; + } + do { + char[] buf = new char[256]; + bytes = reader.read(buf); + builder.append(buf, 0, bytes); + } while (bytes == 256); + return builder.toString(); + } + + private abstract static class ChatConnection implements Runnable { + public Exception exception; + + @Override + public void run() { + try (Socket socket = new Socket("localhost", listeningPort); + BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); + Writer writer = new FlushingWriter(new OutputStreamWriter(socket.getOutputStream()))) { + socket.setTcpNoDelay(true); + + run(socket, reader, writer); + } catch (Exception e) { + exception = e; + } + } + + public abstract void run(Socket socket, BufferedReader reader, Writer writer) throws Exception; + } + + private static class FlushingWriter extends Writer { + public final Writer delegate; + + private FlushingWriter(Writer delegate) { + this.delegate = delegate; + } + + @Override + public void write(char[] cbuf, int off, int len) throws IOException { + delegate.write(cbuf, off, len); + } + + @Override + public void flush() throws IOException { + delegate.flush(); + } + + @Override + public void close() throws IOException { + delegate.close(); + } + + @Override + public void write(String str) throws IOException { + super.write(str); + flush(); + } + } +} diff --git a/test/sample/mergesort/MergeSortTest.java b/test/sample/mergesort/MergeSortTest.java new file mode 100644 index 0000000000000000000000000000000000000000..001e4f0a17061825c68263ea5b05e838f3c9d06b --- /dev/null +++ b/test/sample/mergesort/MergeSortTest.java @@ -0,0 +1,102 @@ +/* + * 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 MergeSort + * + * @library ../../../src/share/sample/forkjoin/mergesort + * @build MergeSortTest MergeDemo MergeSort + * @run main MergeSortTest + */ + +import java.util.Arrays; +import java.util.Random; + +public class MergeSortTest { + private Random random; + private MergeSort target; + + public MergeSortTest(Random random, MergeSort target) { + this.random = random; + this.target = target; + } + + public static void main(String[] args) { + MergeSortTest test = new MergeSortTest(new Random(), new MergeSort(Runtime.getRuntime().availableProcessors() * 4)); + test.run(); + } + + private int[] generateArray(int elements) { + int[] array = new int[elements]; + for (int i = 0; i < array.length; ++i) { + array[i] = random.nextInt(10); + } + return array; + } + + private void run() { + testSort(); + testSortSingle(); + testSortEmpty(); + testLong(); + } + + public void testLong() { + for (int i = 0; i < 1000; ++i) { + int elements = 1 + i * 100; + + int[] array = generateArray(elements); + int[] copy = Arrays.copyOf(array, array.length); + Arrays.sort(copy); + target.sort(array); + assertEqual(copy, array); + } + } + + private void testSortEmpty() { + int[] array = { }; + target.sort(array); + assertEqual(new int[] { }, array); + } + + private void testSortSingle() { + int[] array = { 1 }; + target.sort(array); + assertEqual(new int[] { 1 }, array); + } + + private void testSort() { + int[] array = { 7, 3, 9, 0, -6, 12, 54, 3, -6, 88, 1412}; + target.sort(array); + assertEqual(new int[] { -6, -6, 0, 3, 3, 7, 9, 12, 54, 88, 1412 }, array); + } + + private void assertEqual(int[] expected, int[] array) { + if (!Arrays.equals(expected, array)) { + throw new RuntimeException("Invalid sorted array!"); + } + } + + +} diff --git a/test/sun/java2d/cmm/ColorConvertOp/ColConvCCMTest.java b/test/sun/java2d/cmm/ColorConvertOp/ColConvCCMTest.java index bf16b776e910487e31d96f8a981cd66c02888d35..89bd29af05675b535b59bc2589f665ec25233f13 100644 --- a/test/sun/java2d/cmm/ColorConvertOp/ColConvCCMTest.java +++ b/test/sun/java2d/cmm/ColorConvertOp/ColConvCCMTest.java @@ -23,7 +23,7 @@ /** * @test - * @bug 6476665 + * @bug 6476665 7033534 * @summary Verifies color conversion of Component Color Model based images * @run main ColConvCCMTest */ diff --git a/test/sun/java2d/cmm/ColorConvertOp/MTColConvTest.java b/test/sun/java2d/cmm/ColorConvertOp/MTColConvTest.java index c54c1305a25c1a0952c709ec2e23a9147e7b027e..d764054e4722d4e9372ceaf26186f761d9158659 100644 --- a/test/sun/java2d/cmm/ColorConvertOp/MTColConvTest.java +++ b/test/sun/java2d/cmm/ColorConvertOp/MTColConvTest.java @@ -23,7 +23,7 @@ /** * @test - * @bug 6476665 + * @bug 6476665 7033534 * @summary Verifies MT safety of color conversion of Component and Direct Color Model based images * @run main MTColConvTest */ diff --git a/test/sun/net/InetAddress/nameservice/dns/cname.sh b/test/sun/net/InetAddress/nameservice/dns/cname.sh index 26859d34dd3e892817afb9684667db0182dc7335..9587d6af50443d19cd39f36a6157cd341a7c9930 100644 --- a/test/sun/net/InetAddress/nameservice/dns/cname.sh +++ b/test/sun/net/InetAddress/nameservice/dns/cname.sh @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -26,16 +26,16 @@ # @test # @bug 4763315 -# @build CanonicalName Lookup +# @build CanonicalName Lookup # @run shell/timeout=120 cname.sh # @summary Test DNS provider's handling of CNAME records # The host that we try to resolve -HOST=webcache.sfbay.sun.com +HOST=www-proxy.us.oracle.com -# fail gracefully if DNS is not configured or there +# fail gracefully if DNS is not configured or there # isn't a CNAME record. CLASSPATH=${TESTCLASSES} @@ -43,7 +43,7 @@ export CLASSPATH JAVA="${TESTJAVA}/bin/java" sh -xc "$JAVA CanonicalName $HOST" 2>&1 -if [ $? != 0 ]; then +if [ $? != 0 ]; then echo "DNS not configured or host doesn't resolve to CNAME record" exit 0 fi @@ -70,7 +70,7 @@ go "$np" "$HOST" go "$np $sm" "$HOST" -# +# # Results # echo '' diff --git a/test/sun/security/krb5/KrbCredSubKey.java b/test/sun/security/krb5/KrbCredSubKey.java new file mode 100644 index 0000000000000000000000000000000000000000..e6c96430f76905ee284c050ec7e5a01e28d2627d --- /dev/null +++ b/test/sun/security/krb5/KrbCredSubKey.java @@ -0,0 +1,352 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 7030180 + * @run main/othervm KrbCredSubKey + * @summary AES 128/256 decrypt exception + */ + +import java.io.FileOutputStream; +import java.security.PrivilegedExceptionAction; +import javax.security.auth.Subject; +import javax.security.auth.kerberos.KerberosKey; +import javax.security.auth.kerberos.KerberosPrincipal; +import org.ietf.jgss.GSSContext; +import org.ietf.jgss.GSSCredential; +import org.ietf.jgss.GSSManager; +import sun.security.jgss.GSSUtil; +import sun.security.krb5.Config; +import sun.security.krb5.EncryptedData; + +public class KrbCredSubKey { + + public static void main(String[] args) throws Exception { + + // We don't care about clock difference + new FileOutputStream("krb5.conf").write( + "[libdefaults]\nclockskew=999999999".getBytes()); + System.setProperty("java.security.krb5.conf", "krb5.conf"); + Config.refresh(); + + Subject subj = new Subject(); + KerberosPrincipal kp = new KerberosPrincipal(princ); + KerberosKey kk = new KerberosKey( + kp, key, EncryptedData.ETYPE_AES128_CTS_HMAC_SHA1_96, 0); + subj.getPrincipals().add(kp); + subj.getPrivateCredentials().add(kk); + + Subject.doAs(subj, new PrivilegedExceptionAction() { + public Object run() throws Exception { + GSSManager man = GSSManager.getInstance(); + GSSContext ctxt = man.createContext(man.createCredential( + null, GSSCredential.INDEFINITE_LIFETIME, + GSSUtil.GSS_KRB5_MECH_OID, GSSCredential.ACCEPT_ONLY)); + return ctxt.acceptSecContext(token, 0, token.length); + } + }); + } + + // All following data generated by myself on a test machine + + private static String princ = "server/host.rabbit.hole@RABBIT.HOLE"; + + // A aes-128 key for princ + private static byte[] key = { + (byte)0x83, (byte)0xA1, (byte)0xD6, (byte)0xE2, + (byte)0xC7, (byte)0x76, (byte)0xD5, (byte)0x24, + (byte)0x63, (byte)0x9F, (byte)0xF9, (byte)0xFF, + (byte)0x76, (byte)0x6D, (byte)0x26, (byte)0x30, + }; + + // A JGSS token generated by the first call of an initiator's + // initSecContext, targetting princ, using the authenticator + // subkey to encrypt the KRB_CRED inside AP_REQ + private static byte[] token = { + (byte)0x60, (byte)0x82, (byte)0x04, (byte)0x1C, + (byte)0x06, (byte)0x09, (byte)0x2A, (byte)0x86, + (byte)0x48, (byte)0x86, (byte)0xF7, (byte)0x12, + (byte)0x01, (byte)0x02, (byte)0x02, (byte)0x01, + (byte)0x00, (byte)0x6E, (byte)0x82, (byte)0x04, + (byte)0x0B, (byte)0x30, (byte)0x82, (byte)0x04, + (byte)0x07, (byte)0xA0, (byte)0x03, (byte)0x02, + (byte)0x01, (byte)0x05, (byte)0xA1, (byte)0x03, + (byte)0x02, (byte)0x01, (byte)0x0E, (byte)0xA2, + (byte)0x07, (byte)0x03, (byte)0x05, (byte)0x00, + (byte)0x20, (byte)0x00, (byte)0x00, (byte)0x00, + (byte)0xA3, (byte)0x82, (byte)0x01, (byte)0x04, + (byte)0x61, (byte)0x82, (byte)0x01, (byte)0x00, + (byte)0x30, (byte)0x81, (byte)0xFD, (byte)0xA0, + (byte)0x03, (byte)0x02, (byte)0x01, (byte)0x05, + (byte)0xA1, (byte)0x0D, (byte)0x1B, (byte)0x0B, + (byte)0x52, (byte)0x41, (byte)0x42, (byte)0x42, + (byte)0x49, (byte)0x54, (byte)0x2E, (byte)0x48, + (byte)0x4F, (byte)0x4C, (byte)0x45, (byte)0xA2, + (byte)0x25, (byte)0x30, (byte)0x23, (byte)0xA0, + (byte)0x03, (byte)0x02, (byte)0x01, (byte)0x00, + (byte)0xA1, (byte)0x1C, (byte)0x30, (byte)0x1A, + (byte)0x1B, (byte)0x06, (byte)0x73, (byte)0x65, + (byte)0x72, (byte)0x76, (byte)0x65, (byte)0x72, + (byte)0x1B, (byte)0x10, (byte)0x68, (byte)0x6F, + (byte)0x73, (byte)0x74, (byte)0x2E, (byte)0x72, + (byte)0x61, (byte)0x62, (byte)0x62, (byte)0x69, + (byte)0x74, (byte)0x2E, (byte)0x68, (byte)0x6F, + (byte)0x6C, (byte)0x65, (byte)0xA3, (byte)0x81, + (byte)0xBF, (byte)0x30, (byte)0x81, (byte)0xBC, + (byte)0xA0, (byte)0x03, (byte)0x02, (byte)0x01, + (byte)0x11, (byte)0xA2, (byte)0x81, (byte)0xB4, + (byte)0x04, (byte)0x81, (byte)0xB1, (byte)0xA7, + (byte)0xE8, (byte)0x58, (byte)0xBA, (byte)0x98, + (byte)0x69, (byte)0x45, (byte)0xB3, (byte)0x68, + (byte)0xBF, (byte)0xFD, (byte)0x25, (byte)0x74, + (byte)0xC4, (byte)0x2E, (byte)0x09, (byte)0x7B, + (byte)0x3C, (byte)0x7F, (byte)0xA5, (byte)0x6C, + (byte)0xC3, (byte)0x86, (byte)0xC9, (byte)0xEE, + (byte)0x58, (byte)0xD3, (byte)0x7C, (byte)0xD6, + (byte)0x19, (byte)0xA1, (byte)0x3B, (byte)0xF7, + (byte)0x17, (byte)0xD6, (byte)0x18, (byte)0xA9, + (byte)0x58, (byte)0x43, (byte)0x55, (byte)0xD6, + (byte)0xBA, (byte)0x85, (byte)0xF7, (byte)0x6B, + (byte)0x20, (byte)0x01, (byte)0xEF, (byte)0xB4, + (byte)0x74, (byte)0x0B, (byte)0x31, (byte)0x07, + (byte)0x55, (byte)0xD8, (byte)0x8C, (byte)0x85, + (byte)0x25, (byte)0x12, (byte)0x66, (byte)0x85, + (byte)0xA8, (byte)0x5A, (byte)0x84, (byte)0xB2, + (byte)0x6C, (byte)0xDE, (byte)0xEE, (byte)0xF9, + (byte)0x15, (byte)0xF2, (byte)0xBC, (byte)0xB0, + (byte)0x43, (byte)0xA5, (byte)0x21, (byte)0x31, + (byte)0xFA, (byte)0x2F, (byte)0x2C, (byte)0x37, + (byte)0x39, (byte)0xD8, (byte)0xAA, (byte)0xE0, + (byte)0x78, (byte)0x08, (byte)0x18, (byte)0xFB, + (byte)0x03, (byte)0x43, (byte)0x22, (byte)0xE6, + (byte)0x2C, (byte)0xF2, (byte)0x98, (byte)0xDC, + (byte)0x2A, (byte)0xDE, (byte)0x8C, (byte)0x95, + (byte)0x0B, (byte)0xB6, (byte)0xE6, (byte)0x0F, + (byte)0xB5, (byte)0x4E, (byte)0xAD, (byte)0xAC, + (byte)0xD1, (byte)0x4C, (byte)0xE8, (byte)0x22, + (byte)0x93, (byte)0x38, (byte)0xA2, (byte)0x44, + (byte)0x0E, (byte)0x83, (byte)0x9E, (byte)0x4D, + (byte)0xC0, (byte)0x1A, (byte)0x02, (byte)0xB2, + (byte)0xB8, (byte)0xCE, (byte)0xDF, (byte)0xB5, + (byte)0xFB, (byte)0xF2, (byte)0x75, (byte)0x5E, + (byte)0x74, (byte)0xC1, (byte)0x90, (byte)0x82, + (byte)0x60, (byte)0x00, (byte)0xA5, (byte)0xC3, + (byte)0xBF, (byte)0x66, (byte)0x97, (byte)0x0E, + (byte)0xF3, (byte)0x9F, (byte)0xB3, (byte)0xD9, + (byte)0x51, (byte)0x51, (byte)0x38, (byte)0xBC, + (byte)0xD9, (byte)0xC1, (byte)0xD0, (byte)0x1E, + (byte)0x90, (byte)0x9B, (byte)0x43, (byte)0xEE, + (byte)0xD9, (byte)0xD6, (byte)0x3E, (byte)0x31, + (byte)0xEA, (byte)0x8E, (byte)0xB1, (byte)0xDC, + (byte)0xDE, (byte)0xFD, (byte)0xA4, (byte)0x77, + (byte)0x6C, (byte)0x4A, (byte)0x81, (byte)0x1F, + (byte)0xA4, (byte)0x82, (byte)0x02, (byte)0xE8, + (byte)0x30, (byte)0x82, (byte)0x02, (byte)0xE4, + (byte)0xA0, (byte)0x03, (byte)0x02, (byte)0x01, + (byte)0x11, (byte)0xA2, (byte)0x82, (byte)0x02, + (byte)0xDB, (byte)0x04, (byte)0x82, (byte)0x02, + (byte)0xD7, (byte)0x81, (byte)0x78, (byte)0x25, + (byte)0x75, (byte)0x92, (byte)0x7A, (byte)0xEC, + (byte)0xBE, (byte)0x31, (byte)0xF1, (byte)0x50, + (byte)0xE7, (byte)0xC1, (byte)0x32, (byte)0xA5, + (byte)0xCB, (byte)0x34, (byte)0x46, (byte)0x95, + (byte)0x2B, (byte)0x84, (byte)0xB7, (byte)0x06, + (byte)0x0E, (byte)0x15, (byte)0x02, (byte)0x74, + (byte)0xCA, (byte)0x18, (byte)0x5D, (byte)0xE8, + (byte)0x0E, (byte)0x1B, (byte)0xB7, (byte)0x77, + (byte)0x5A, (byte)0x6C, (byte)0xFB, (byte)0x94, + (byte)0x82, (byte)0x2B, (byte)0xE6, (byte)0x14, + (byte)0x0C, (byte)0xDA, (byte)0x22, (byte)0xA2, + (byte)0x42, (byte)0xD7, (byte)0xB0, (byte)0xFC, + (byte)0xCA, (byte)0x4A, (byte)0xEA, (byte)0xB8, + (byte)0x92, (byte)0xB5, (byte)0x8C, (byte)0x71, + (byte)0xED, (byte)0x2B, (byte)0x46, (byte)0xC5, + (byte)0xE5, (byte)0x47, (byte)0x76, (byte)0x29, + (byte)0x27, (byte)0x0F, (byte)0xFF, (byte)0x03, + (byte)0x72, (byte)0x13, (byte)0xAA, (byte)0xDB, + (byte)0x4E, (byte)0xFF, (byte)0x48, (byte)0x36, + (byte)0xAB, (byte)0x73, (byte)0xD7, (byte)0xDA, + (byte)0xF1, (byte)0x80, (byte)0x1B, (byte)0x5B, + (byte)0x9A, (byte)0x88, (byte)0x07, (byte)0x47, + (byte)0x43, (byte)0x27, (byte)0xD5, (byte)0x00, + (byte)0x04, (byte)0xEE, (byte)0xAF, (byte)0x53, + (byte)0x5C, (byte)0xCC, (byte)0x2C, (byte)0xC7, + (byte)0x2F, (byte)0x94, (byte)0x12, (byte)0x86, + (byte)0xEF, (byte)0xAC, (byte)0xB1, (byte)0x6C, + (byte)0xB0, (byte)0xB5, (byte)0x3D, (byte)0x92, + (byte)0xBD, (byte)0xBE, (byte)0x7B, (byte)0x1A, + (byte)0x39, (byte)0x4A, (byte)0x1E, (byte)0x91, + (byte)0xA4, (byte)0xDF, (byte)0x82, (byte)0x12, + (byte)0x2E, (byte)0x67, (byte)0x17, (byte)0x92, + (byte)0xB3, (byte)0x93, (byte)0x38, (byte)0x32, + (byte)0x94, (byte)0xF5, (byte)0xF7, (byte)0x09, + (byte)0x07, (byte)0x5E, (byte)0x21, (byte)0x12, + (byte)0x70, (byte)0x37, (byte)0xAF, (byte)0x5A, + (byte)0x2D, (byte)0xAC, (byte)0xFF, (byte)0x22, + (byte)0x46, (byte)0xA0, (byte)0x12, (byte)0x74, + (byte)0x1C, (byte)0xA1, (byte)0x68, (byte)0xC3, + (byte)0x64, (byte)0xDB, (byte)0xC3, (byte)0x9F, + (byte)0xAB, (byte)0x0E, (byte)0x19, (byte)0xFE, + (byte)0xD9, (byte)0xA4, (byte)0xAA, (byte)0x7B, + (byte)0x73, (byte)0xAD, (byte)0xC8, (byte)0xA8, + (byte)0xD5, (byte)0x29, (byte)0xAD, (byte)0x1F, + (byte)0xEF, (byte)0x54, (byte)0xAE, (byte)0x72, + (byte)0x02, (byte)0xD9, (byte)0x06, (byte)0x0D, + (byte)0x1A, (byte)0x94, (byte)0x7B, (byte)0xBC, + (byte)0x32, (byte)0x9A, (byte)0xBC, (byte)0x4B, + (byte)0x33, (byte)0xC2, (byte)0x02, (byte)0xA3, + (byte)0xF4, (byte)0xB1, (byte)0xED, (byte)0x76, + (byte)0x0D, (byte)0x59, (byte)0xCD, (byte)0x56, + (byte)0xCB, (byte)0xDC, (byte)0xCE, (byte)0xED, + (byte)0xFF, (byte)0x25, (byte)0x84, (byte)0x5E, + (byte)0x41, (byte)0xF9, (byte)0x42, (byte)0xBE, + (byte)0x73, (byte)0xAC, (byte)0xA2, (byte)0x20, + (byte)0x97, (byte)0xB7, (byte)0x88, (byte)0x77, + (byte)0x65, (byte)0x43, (byte)0x9F, (byte)0xEE, + (byte)0xF4, (byte)0x3A, (byte)0x7E, (byte)0x9B, + (byte)0x5B, (byte)0x54, (byte)0xD3, (byte)0x0D, + (byte)0x50, (byte)0x6D, (byte)0xF6, (byte)0x14, + (byte)0xB7, (byte)0x5A, (byte)0x34, (byte)0x0F, + (byte)0x1F, (byte)0xC7, (byte)0x39, (byte)0x99, + (byte)0x9B, (byte)0x96, (byte)0xE3, (byte)0xAD, + (byte)0x86, (byte)0xE3, (byte)0x6A, (byte)0x71, + (byte)0x63, (byte)0x04, (byte)0xAD, (byte)0x9C, + (byte)0x17, (byte)0x68, (byte)0x44, (byte)0xFE, + (byte)0x21, (byte)0x62, (byte)0xD5, (byte)0x99, + (byte)0x4A, (byte)0xDF, (byte)0x48, (byte)0xDE, + (byte)0x9A, (byte)0xD4, (byte)0xBB, (byte)0xA1, + (byte)0x9B, (byte)0xE7, (byte)0x2A, (byte)0x08, + (byte)0x80, (byte)0x3A, (byte)0x08, (byte)0xA4, + (byte)0xBA, (byte)0xBE, (byte)0x1E, (byte)0x81, + (byte)0x63, (byte)0x20, (byte)0xAC, (byte)0x9C, + (byte)0x42, (byte)0x2F, (byte)0xCA, (byte)0x06, + (byte)0x95, (byte)0x92, (byte)0x97, (byte)0x09, + (byte)0x3C, (byte)0x0C, (byte)0x5A, (byte)0x99, + (byte)0xFB, (byte)0xAB, (byte)0xEB, (byte)0xDE, + (byte)0xC4, (byte)0x09, (byte)0xD3, (byte)0xA3, + (byte)0xF0, (byte)0x65, (byte)0xDC, (byte)0x5F, + (byte)0xAA, (byte)0xBB, (byte)0x28, (byte)0xC0, + (byte)0x3E, (byte)0xBF, (byte)0x77, (byte)0xAE, + (byte)0xCC, (byte)0x3A, (byte)0xD3, (byte)0x31, + (byte)0x0D, (byte)0x9B, (byte)0x96, (byte)0xEF, + (byte)0x2C, (byte)0xED, (byte)0x60, (byte)0x63, + (byte)0xC5, (byte)0x8F, (byte)0xCA, (byte)0xB0, + (byte)0xA2, (byte)0x0B, (byte)0x49, (byte)0x5A, + (byte)0xB2, (byte)0x8F, (byte)0xEF, (byte)0xE4, + (byte)0x19, (byte)0xC0, (byte)0xC6, (byte)0x2D, + (byte)0xD3, (byte)0x4F, (byte)0xB2, (byte)0xED, + (byte)0xA3, (byte)0xA4, (byte)0x6F, (byte)0xAE, + (byte)0xD4, (byte)0xE9, (byte)0xA2, (byte)0x5A, + (byte)0xFB, (byte)0xB0, (byte)0x14, (byte)0xBD, + (byte)0x06, (byte)0x12, (byte)0xD7, (byte)0x91, + (byte)0x15, (byte)0x46, (byte)0x78, (byte)0xE4, + (byte)0xD1, (byte)0x73, (byte)0xCA, (byte)0xA5, + (byte)0xA5, (byte)0x64, (byte)0xC8, (byte)0x6F, + (byte)0xD1, (byte)0xBD, (byte)0xEA, (byte)0x74, + (byte)0xE4, (byte)0xCA, (byte)0x40, (byte)0x16, + (byte)0x9E, (byte)0x46, (byte)0x7C, (byte)0x25, + (byte)0x6C, (byte)0x32, (byte)0xB4, (byte)0x14, + (byte)0xF9, (byte)0x26, (byte)0x8A, (byte)0x3A, + (byte)0xDD, (byte)0x51, (byte)0x26, (byte)0x79, + (byte)0x43, (byte)0x27, (byte)0x2E, (byte)0xED, + (byte)0xC7, (byte)0x82, (byte)0x7C, (byte)0xCE, + (byte)0x43, (byte)0x03, (byte)0x60, (byte)0x2A, + (byte)0x9C, (byte)0xB2, (byte)0x71, (byte)0x41, + (byte)0xAB, (byte)0x3D, (byte)0xA6, (byte)0xB5, + (byte)0x51, (byte)0xBC, (byte)0x80, (byte)0x1F, + (byte)0x96, (byte)0x73, (byte)0x23, (byte)0x11, + (byte)0xED, (byte)0xC0, (byte)0x1D, (byte)0x0B, + (byte)0xA0, (byte)0x13, (byte)0xB3, (byte)0x2F, + (byte)0x16, (byte)0x59, (byte)0x64, (byte)0x45, + (byte)0xE8, (byte)0x68, (byte)0xFB, (byte)0xF9, + (byte)0x6F, (byte)0xB0, (byte)0x2B, (byte)0xFB, + (byte)0x39, (byte)0xBB, (byte)0x53, (byte)0x8F, + (byte)0xD2, (byte)0xAF, (byte)0x38, (byte)0x5E, + (byte)0xEF, (byte)0x5B, (byte)0xE2, (byte)0x98, + (byte)0xE8, (byte)0x46, (byte)0x3C, (byte)0x03, + (byte)0x71, (byte)0x46, (byte)0x8D, (byte)0x41, + (byte)0x92, (byte)0x32, (byte)0x85, (byte)0x8D, + (byte)0xBA, (byte)0x33, (byte)0x05, (byte)0xB1, + (byte)0xE4, (byte)0x56, (byte)0x3E, (byte)0xF5, + (byte)0x20, (byte)0x35, (byte)0xA6, (byte)0x74, + (byte)0xA2, (byte)0xBE, (byte)0x54, (byte)0x08, + (byte)0xB4, (byte)0xFC, (byte)0x1D, (byte)0x13, + (byte)0x84, (byte)0xBE, (byte)0x1C, (byte)0xC5, + (byte)0x3E, (byte)0x43, (byte)0x14, (byte)0x6F, + (byte)0xC0, (byte)0x3D, (byte)0xF4, (byte)0xDC, + (byte)0x66, (byte)0x4E, (byte)0xF0, (byte)0x3E, + (byte)0xD4, (byte)0xC6, (byte)0xE9, (byte)0x8D, + (byte)0x7D, (byte)0xB9, (byte)0xDC, (byte)0x9F, + (byte)0xBE, (byte)0x54, (byte)0x63, (byte)0x93, + (byte)0x49, (byte)0x2F, (byte)0x6A, (byte)0xC3, + (byte)0x34, (byte)0xC5, (byte)0xF7, (byte)0x76, + (byte)0xE8, (byte)0xD5, (byte)0x5B, (byte)0xD9, + (byte)0x41, (byte)0xCA, (byte)0x74, (byte)0x25, + (byte)0x25, (byte)0x09, (byte)0xF4, (byte)0xD3, + (byte)0x00, (byte)0x9F, (byte)0x7D, (byte)0xFB, + (byte)0x3D, (byte)0xAB, (byte)0x87, (byte)0xF7, + (byte)0xCE, (byte)0x42, (byte)0x0F, (byte)0x60, + (byte)0xEB, (byte)0x03, (byte)0x47, (byte)0x98, + (byte)0x0F, (byte)0xEB, (byte)0xA4, (byte)0x05, + (byte)0xE2, (byte)0x58, (byte)0x8F, (byte)0x44, + (byte)0x09, (byte)0xD3, (byte)0x66, (byte)0x1E, + (byte)0x69, (byte)0x89, (byte)0xB7, (byte)0xEE, + (byte)0x8B, (byte)0xA4, (byte)0x8E, (byte)0x05, + (byte)0x2D, (byte)0x2E, (byte)0xB3, (byte)0x5A, + (byte)0xAE, (byte)0xAB, (byte)0x80, (byte)0xD6, + (byte)0x5C, (byte)0x93, (byte)0x40, (byte)0x91, + (byte)0x53, (byte)0xE6, (byte)0x13, (byte)0xD5, + (byte)0x2F, (byte)0x64, (byte)0xF0, (byte)0x68, + (byte)0xD2, (byte)0x85, (byte)0x94, (byte)0xE5, + (byte)0x2D, (byte)0x73, (byte)0x10, (byte)0x59, + (byte)0x18, (byte)0xCD, (byte)0xED, (byte)0xBC, + (byte)0x05, (byte)0x97, (byte)0xFD, (byte)0xE7, + (byte)0x6F, (byte)0x5D, (byte)0x7C, (byte)0x46, + (byte)0x28, (byte)0x5F, (byte)0xC2, (byte)0xB4, + (byte)0x31, (byte)0xA5, (byte)0x2B, (byte)0x82, + (byte)0xAB, (byte)0x32, (byte)0x49, (byte)0xA5, + (byte)0xCD, (byte)0x91, (byte)0x37, (byte)0x97, + (byte)0xA1, (byte)0x85, (byte)0x8F, (byte)0xBB, + (byte)0x6E, (byte)0x1E, (byte)0x9F, (byte)0xFC, + (byte)0x10, (byte)0x3B, (byte)0x8A, (byte)0xF6, + (byte)0x9A, (byte)0x66, (byte)0xBD, (byte)0x75, + (byte)0x4F, (byte)0x1D, (byte)0xBA, (byte)0x64, + (byte)0x15, (byte)0xDD, (byte)0x9F, (byte)0x00, + (byte)0x6C, (byte)0x2F, (byte)0x87, (byte)0x20, + (byte)0x25, (byte)0xA2, (byte)0x09, (byte)0x9F, + (byte)0x5D, (byte)0x64, (byte)0xC9, (byte)0xA8, + (byte)0x32, (byte)0x59, (byte)0x90, (byte)0x1D, + (byte)0x78, (byte)0xFE, (byte)0x5A, (byte)0xA2, + (byte)0x1F, (byte)0x9B, (byte)0x22, (byte)0xBE, + (byte)0x8F, (byte)0xEA, (byte)0x59, (byte)0x5B, + (byte)0x96, (byte)0xE3, (byte)0x4A, (byte)0xB2, + (byte)0x71, (byte)0x65, (byte)0xB7, (byte)0x3C, + (byte)0xC6, (byte)0x1B, (byte)0xD6, (byte)0x80, + (byte)0x90, (byte)0xD2, (byte)0xF2, (byte)0x6F, + (byte)0xA2, (byte)0x68, (byte)0x53, (byte)0xC0, + (byte)0x44, (byte)0xAF, (byte)0xD4, (byte)0x68, + (byte)0x12, (byte)0xFF, (byte)0xB4, (byte)0x36, + (byte)0x34, (byte)0x43, (byte)0xAC, (byte)0x1C, + }; +} diff --git a/test/sun/security/krb5/auto/KDC.java b/test/sun/security/krb5/auto/KDC.java index 5d2ff476ea6086795ab8b40006eba0513a10b430..8d01dd346cdf3a2bd39c538719064e1e6105f41b 100644 --- a/test/sun/security/krb5/auto/KDC.java +++ b/test/sun/security/krb5/auto/KDC.java @@ -691,7 +691,10 @@ public class KDC { new KerberosTime(new Date()), body.from, till, body.rtime, - body.addresses, + body.addresses != null // always set caddr + ? body.addresses + : new HostAddresses( + new InetAddress[]{InetAddress.getLocalHost()}), null); EncryptionKey skey = keyForUser(body.sname, e3, true); if (skey == null) { @@ -716,7 +719,10 @@ public class KDC { till, body.rtime, body.crealm, body.sname, - body.addresses + body.addresses != null // always set caddr + ? body.addresses + : new HostAddresses( + new InetAddress[]{InetAddress.getLocalHost()}) ); EncryptedData edata = new EncryptedData(ckey, enc_part.asn1Encode(), KeyUsage.KU_ENC_TGS_REP_PART_SESSKEY); TGSRep tgsRep = new TGSRep(null, diff --git a/test/sun/security/krb5/auto/NoAddresses.java b/test/sun/security/krb5/auto/NoAddresses.java new file mode 100644 index 0000000000000000000000000000000000000000..04c5b71e52af7aa79dd648840e39cb611fb26d62 --- /dev/null +++ b/test/sun/security/krb5/auto/NoAddresses.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7032354 + * @run main/othervm NoAddresses 1 + * @run main/othervm NoAddresses 2 + * @run main/othervm/fail NoAddresses 3 + * @summary no-addresses should not be used on acceptor side + */ + +import java.net.InetAddress; +import org.ietf.jgss.ChannelBinding; +import sun.security.jgss.GSSUtil; +import sun.security.krb5.Config; + +public class NoAddresses { + + public static void main(String[] args) + throws Exception { + + OneKDC kdc = new OneKDC(null); + kdc.writeJAASConf(); + KDC.saveConfig(OneKDC.KRB5_CONF, kdc, + "noaddresses = false", + "default_keytab_name = " + OneKDC.KTAB); + Config.refresh(); + + Context c = Context.fromJAAS("client"); + Context s = Context.fromJAAS("server"); + + c.startAsClient(OneKDC.SERVER, GSSUtil.GSS_KRB5_MECH_OID); + s.startAsServer(GSSUtil.GSS_KRB5_MECH_OID); + + InetAddress initiator = InetAddress.getLocalHost(); + InetAddress acceptor = InetAddress.getLocalHost(); + switch (args[0]) { + case "1": + // no initiator host address available, should be OK + break; + case "2": + // correct initiator host address, still fine + c.x().setChannelBinding( + new ChannelBinding(initiator, acceptor, null)); + s.x().setChannelBinding( + new ChannelBinding(initiator, acceptor, null)); + break; + case "3": + // incorrect initiator host address, fail + initiator = InetAddress.getByAddress(new byte[]{1,1,1,1}); + c.x().setChannelBinding( + new ChannelBinding(initiator, acceptor, null)); + s.x().setChannelBinding( + new ChannelBinding(initiator, acceptor, null)); + break; + } + + Context.handshake(c, s); + } +} diff --git a/test/sun/security/pkcs11/Provider/ConfigShortPath.java b/test/sun/security/pkcs11/Provider/ConfigShortPath.java index daa1ab3c1bf6e4d969ee565b03a8049612044742..21238f735d5a0a41cd8836d15b1b1d9250ce5dba 100644 --- a/test/sun/security/pkcs11/Provider/ConfigShortPath.java +++ b/test/sun/security/pkcs11/Provider/ConfigShortPath.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,27 +22,44 @@ */ /** * @test - * @bug 6581254 - * @summary Allow "~" in config to support windows short path + * @bug 6581254 6986789 + * @summary Allow '~' and '+' in config file * @author Valerie Peng */ import java.security.*; import java.io.*; +import java.lang.reflect.*; public class ConfigShortPath { - public static void main(String[] args) { - String testSrc = System.getProperty("test.src", "."); - String configFile = testSrc + File.separator + "csp.cfg"; - System.out.println("Testing against " + configFile); + private static final String[] configNames = { "csp.cfg", "cspPlus.cfg" }; + + public static void main(String[] args) throws Exception { + Constructor cons = null; try { - Provider p = new sun.security.pkcs11.SunPKCS11(configFile); - } catch (ProviderException pe) { - String cause = pe.getCause().getMessage(); - if (cause.indexOf("Unexpected token") != -1) { - // re-throw to indicate test failure - throw pe; + Class clazz = Class.forName("sun.security.pkcs11.SunPKCS11"); + cons = clazz.getConstructor(String.class); + } catch (Exception ex) { + System.out.println("Skipping test - no PKCS11 provider available"); + return; + } + String testSrc = System.getProperty("test.src", "."); + for (int i = 0; i < configNames.length; i++) { + String configFile = testSrc + File.separator + configNames[i]; + + System.out.println("Testing against " + configFile); + try { + Object obj = cons.newInstance(configFile); + } catch (InvocationTargetException ite) { + Throwable cause = ite.getCause(); + if (cause instanceof ProviderException) { + String causeMsg = cause.getCause().getMessage(); + // Indicate failure if due to parsing config + if (causeMsg.indexOf("Unexpected token") != -1) { + throw (ProviderException) cause; + } + } } } } diff --git a/test/sun/security/pkcs11/Provider/cspPlus.cfg b/test/sun/security/pkcs11/Provider/cspPlus.cfg new file mode 100644 index 0000000000000000000000000000000000000000..51099cda9b882a537e36df9d110d434668fc4779 --- /dev/null +++ b/test/sun/security/pkcs11/Provider/cspPlus.cfg @@ -0,0 +1,4 @@ +showInfo = false +name = NSS +nssSecmodDirectory = /export/local/38289.JDK7.PIT.JSN-TL+7-b112_pit_security_oel5.5-x64-32/results/ResultDir/KeytoolNSS/db +nssLibraryDirectory = /export/local/common/testbase/7/security/tools/lib/nss/Linux2.6 diff --git a/test/sun/security/ssl/javax/net/ssl/SSLContextVersion.java b/test/sun/security/ssl/javax/net/ssl/SSLContextVersion.java new file mode 100644 index 0000000000000000000000000000000000000000..2480b2f0c9e03e38206d705dfaae5e13d3925778 --- /dev/null +++ b/test/sun/security/ssl/javax/net/ssl/SSLContextVersion.java @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6976117 + * @summary SSLContext.getInstance("TLSv1.1") returns SSLEngines/SSLSockets + * without TLSv1.1 enabled + */ + +import javax.net.ssl.*; + +public class SSLContextVersion { + static enum ContextVersion { + TLS_CV_01("SSL", "TLSv1", "TLSv1.2"), + TLS_CV_02("TLS", "TLSv1", "TLSv1.2"), + TLS_CV_03("SSLv3", "TLSv1", "TLSv1.2"), + TLS_CV_04("TLSv1", "TLSv1", "TLSv1.2"), + TLS_CV_05("TLSv1.1", "TLSv1.1", "TLSv1.2"), + TLS_CV_06("TLSv1.2", "TLSv1.2", "TLSv1.2"), + TLS_CV_07("Default", "TLSv1", "TLSv1.2"); + + final String contextVersion; + final String defaultProtocolVersion; + final String supportedProtocolVersion; + + ContextVersion(String contextVersion, String defaultProtocolVersion, + String supportedProtocolVersion) { + this.contextVersion = contextVersion; + this.defaultProtocolVersion = defaultProtocolVersion; + this.supportedProtocolVersion = supportedProtocolVersion; + } + } + + public static void main(String[] args) throws Exception { + for (ContextVersion cv : ContextVersion.values()) { + System.out.println("Checking SSLContext of " + cv.contextVersion); + SSLContext context = SSLContext.getInstance(cv.contextVersion); + + // Default SSLContext is initialized automatically. + if (!cv.contextVersion.equals("Default")) { + // Use default TK, KM and random. + context.init((KeyManager[])null, (TrustManager[])null, null); + } + + SSLParameters parameters = context.getDefaultSSLParameters(); + + String[] protocols = parameters.getProtocols(); + String[] ciphers = parameters.getCipherSuites(); + + if (protocols.length == 0 || ciphers.length == 0) { + throw new Exception("No default protocols or cipher suites"); + } + + boolean isMatch = false; + for (String protocol : protocols) { + System.out.println("\tdefault protocol version " + protocol); + if (protocol.equals(cv.defaultProtocolVersion)) { + isMatch = true; + break; + } + } + + if (!isMatch) { + throw new Exception("No matched default protocol"); + } + + parameters = context.getSupportedSSLParameters(); + + protocols = parameters.getProtocols(); + ciphers = parameters.getCipherSuites(); + + if (protocols.length == 0 || ciphers.length == 0) { + throw new Exception("No default protocols or cipher suites"); + } + + isMatch = false; + for (String protocol : protocols) { + System.out.println("\tsupported protocol version " + protocol); + if (protocol.equals(cv.supportedProtocolVersion)) { + isMatch = true; + break; + } + } + + if (!isMatch) { + throw new Exception("No matched default protocol"); + } + System.out.println("\t... Success"); + } + } +} diff --git a/test/sun/text/resources/LocaleData b/test/sun/text/resources/LocaleData index 9507873623385b6777e6b207ca6a8a415534a2fb..a3d7088e35d96958425f98fa9f75a03f88e3f70c 100644 --- a/test/sun/text/resources/LocaleData +++ b/test/sun/text/resources/LocaleData @@ -6942,3 +6942,14 @@ CurrencyNames/zh_TW/xpt=\u94c2 CurrencyNames/zh_TW/xts=XTS CurrencyNames/zh_TW/xxx=XXX CurrencyNames/zh_TW/yer=\u8449\u9580\u91cc\u96c5 + +# bug 7036905 +CurrencyNames/de/afa=Afghani (1927-2002) +CurrencyNames/de/afn=Afghani +CurrencyNames/de/bob=Boliviano +CurrencyNames/de/dem=Deutsche Mark +CurrencyNames/de/mwk=Malawi Kwacha +CurrencyNames/de/mxv=Mexican Unidad de Inversion (UDI) +CurrencyNames/de/svc=El Salvador Colon + +CurrencyNames/it/bob=Boliviano diff --git a/test/sun/text/resources/LocaleDataTest.java b/test/sun/text/resources/LocaleDataTest.java index 30e65c52ab530ed7003553f8a93537ec1aaedef3..65037949c6d0e8bd412d0de6e9b982596b67512c 100644 --- a/test/sun/text/resources/LocaleDataTest.java +++ b/test/sun/text/resources/LocaleDataTest.java @@ -33,7 +33,7 @@ * 6379214 6485516 6486607 4225362 4494727 6533691 6531591 6531593 6570259 * 6509039 6609737 6610748 6645271 6507067 6873931 6450945 6645268 6646611 * 6645405 6650730 6910489 6573250 6870908 6585666 6716626 6914413 6916787 - * 6919624 6998391 7019267 7020960 7025837 7020583 + * 6919624 6998391 7019267 7020960 7025837 7020583 7036905 * @summary Verify locale data * */ diff --git a/test/tools/launcher/ExecutionEnvironment.java b/test/tools/launcher/ExecutionEnvironment.java index a8c59e6593204e21396ee6a010f1866f6372c213..fec9f6a0ba8b9cf7c57133f0f3474231263523d7 100644 --- a/test/tools/launcher/ExecutionEnvironment.java +++ b/test/tools/launcher/ExecutionEnvironment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,7 +30,7 @@ */ /* - * This test tests for various things as follows: + * This tests for various things as follows: * Ensures that: * 1. uneccessary execs do not occur * 2. the environment is pristine, users environment variable wrt. @@ -84,7 +84,9 @@ public class ExecutionEnvironment { static int errors = 0; static int passes = 0; - private static void createTestJar() { + static final String LIBJVM = TestHelper.isWindows ? "jvm.dll" : "libjvm.so"; + + static void createTestJar() { try { List<String> codeList = new ArrayList<String>(); codeList.add("static void printValue(String name, boolean property) {\n"); @@ -127,6 +129,7 @@ public class ExecutionEnvironment { testJarFile.getAbsolutePath()); if (!tr.isNotZeroOutput()) { + System.out.println(tr); throw new RuntimeException("Error: No output at all. Did the test execute ?"); } @@ -177,7 +180,6 @@ public class ExecutionEnvironment { Map<String, String> env = new HashMap<String, String>(); - if (TestHelper.isLinux) { for (String x : LD_PATH_STRINGS) { String pairs[] = x.split("="); @@ -209,7 +211,7 @@ public class ExecutionEnvironment { verifyJavaLibraryPathOverride(tr, true); // try changing the model from 32 to 64 bit - if (TestHelper.java64Cmd != null && TestHelper.is32Bit) { + if (TestHelper.dualModePresent() && TestHelper.is32Bit) { // verify the override occurs env.clear(); for (String x : LD_PATH_STRINGS) { @@ -326,7 +328,7 @@ public class ExecutionEnvironment { File symLink = null; String libPathPrefix = TestHelper.isSDK ? "jre/lib" : "/lib"; symLink = new File(TestHelper.JAVAHOME, libPathPrefix + - TestHelper.getJreArch() + "/libjvm.so"); + TestHelper.getJreArch() + "/" + LIBJVM); if (symLink.exists()) { System.out.println("FAIL: The symlink exists " + symLink.getAbsolutePath()); diff --git a/test/tools/launcher/Test7029048.java b/test/tools/launcher/Test7029048.java new file mode 100644 index 0000000000000000000000000000000000000000..69c94d52e57938e6f62d310589119fd147d68fb8 --- /dev/null +++ b/test/tools/launcher/Test7029048.java @@ -0,0 +1,313 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7029048 + * @summary Checks for LD_LIBRARY_PATH on *nixes + * @compile -XDignore.symbol.file ExecutionEnvironment.java TestHelper.java Test7029048.java + * @run main Test7029048 + */ + +/* + * 7029048: test for LD_LIBRARY_PATH set to different paths pointing which may + * contain a libjvm.so and may not, but we test to ensure that the launcher + * behaves correctly in all cases. + */ +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Test7029048 { + + static int passes = 0; + static int errors = 0; + + private static final String LIBJVM = ExecutionEnvironment.LIBJVM; + private static final String LD_LIBRARY_PATH = + ExecutionEnvironment.LD_LIBRARY_PATH; + private static final String LD_LIBRARY_PATH_32 = + ExecutionEnvironment.LD_LIBRARY_PATH_32; + private static final String LD_LIBRARY_PATH_64 = + ExecutionEnvironment.LD_LIBRARY_PATH_64; + + private static final File libDir = + new File(System.getProperty("sun.boot.library.path")); + private static final File srcServerDir = new File(libDir, "server"); + private static final File srcLibjvmSo = new File(srcServerDir, LIBJVM); + + private static final File dstLibDir = new File("lib"); + private static final File dstLibArchDir = + new File(dstLibDir, TestHelper.getJreArch()); + + private static final File dstServerDir = new File(dstLibArchDir, "server"); + private static final File dstServerLibjvm = new File(dstServerDir, LIBJVM); + + private static final File dstClientDir = new File(dstLibArchDir, "client"); + private static final File dstClientLibjvm = new File(dstClientDir, LIBJVM); + + // used primarily to test the solaris variants in dual mode + private static final File dstOtherArchDir; + private static final File dstOtherServerDir; + private static final File dstOtherServerLibjvm; + + private static final Map<String, String> env = new HashMap<>(); + + static { + if (TestHelper.isDualMode) { + dstOtherArchDir = new File(dstLibDir, TestHelper.getComplementaryJreArch()); + dstOtherServerDir = new File(dstOtherArchDir, "server"); + dstOtherServerLibjvm = new File(dstOtherServerDir, LIBJVM); + } else { + dstOtherArchDir = null; + dstOtherServerDir = null; + dstOtherServerLibjvm = null; + } + } + + static String getValue(String name, List<String> in) { + for (String x : in) { + String[] s = x.split("="); + if (name.equals(s[0].trim())) { + return s[1].trim(); + } + } + return null; + } + + static void run(boolean want32, String dflag, Map<String, String> env, + int nLLPComponents, String caseID) { + final boolean want64 = want32 == false; + env.put(ExecutionEnvironment.JLDEBUG_KEY, "true"); + List<String> cmdsList = new ArrayList<>(); + + // only for a dual-mode system + if (want64 && TestHelper.isDualMode) { + cmdsList.add(TestHelper.java64Cmd); + } else { + cmdsList.add(TestHelper.javaCmd); // a 32-bit java command for all + } + + /* + * empty or null strings can confuse the ProcessBuilder. A null flag + * indicates that the appropriate data model is enforced on the chosen + * launcher variant. + */ + + if (dflag != null) { + cmdsList.add(dflag); + } else { + cmdsList.add(want32 ? "-d32" : "-d64"); + } + cmdsList.add("-server"); + cmdsList.add("-jar"); + cmdsList.add(ExecutionEnvironment.testJarFile.getAbsolutePath()); + String[] cmds = new String[cmdsList.size()]; + TestHelper.TestResult tr = TestHelper.doExec(env, cmdsList.toArray(cmds)); + analyze(tr, nLLPComponents, caseID); + } + + // no cross launch, ie. no change to the data model. + static void run(Map<String, String> env, int nLLPComponents, String caseID) + throws IOException { + boolean want32 = TestHelper.is32Bit; + run(want32, null, env, nLLPComponents, caseID); + } + + static void analyze(TestHelper.TestResult tr, int nLLPComponents, String caseID) { + String envValue = getValue(LD_LIBRARY_PATH, tr.testOutput); + /* + * the envValue can never be null, since the test code should always + * print a "null" string. + */ + if (envValue == null) { + System.out.println(tr); + throw new RuntimeException("NPE, likely a program crash ??"); + } + String values[] = envValue.split(File.pathSeparator); + if (values.length == nLLPComponents) { + System.out.println(caseID + " :OK"); + passes++; + } else { + System.out.println("FAIL: test7029048, " + caseID); + System.out.println(" expected " + nLLPComponents + + " but got " + values.length); + System.out.println(envValue); + System.out.println(tr); + errors++; + } + } + + /* + * A crucial piece, specifies what we should expect, given the conditions. + * That is for a given enum type, the value indicates how many absolute + * environment variables that can be expected. This value is used to base + * the actual expected values by adding the set environment variable usually + * it is 1, but it could be more if the test wishes to set more paths in + * the future. + */ + private static enum LLP_VAR { + LLP_SET_NON_EXISTENT_PATH(0), // env set, but the path does not exist + LLP_SET_EMPTY_PATH(0), // env set, with a path but no libjvm.so + LLP_SET_WITH_JVM(3); // env set, with a libjvm.so + private final int value; + LLP_VAR(int i) { + this.value = i; + } + } + + /* + * test for 7029048 + */ + static void test7029048() throws IOException { + String desc = null; + for (LLP_VAR v : LLP_VAR.values()) { + switch (v) { + case LLP_SET_WITH_JVM: + // copy the files into the directory structures + TestHelper.copyFile(srcLibjvmSo, dstServerLibjvm); + // does not matter if it is client or a server + TestHelper.copyFile(srcLibjvmSo, dstClientLibjvm); + // does not matter if the arch do not match either + if (TestHelper.isDualMode) { + TestHelper.copyFile(srcLibjvmSo, dstOtherServerLibjvm); + } + desc = "LD_LIBRARY_PATH should be set"; + break; + case LLP_SET_EMPTY_PATH: + if (!dstClientDir.exists()) { + Files.createDirectories(dstClientDir.toPath()); + } else { + Files.deleteIfExists(dstClientLibjvm.toPath()); + } + + if (!dstServerDir.exists()) { + Files.createDirectories(dstServerDir.toPath()); + } else { + Files.deleteIfExists(dstServerLibjvm.toPath()); + } + + if (TestHelper.isDualMode) { + if (!dstOtherServerDir.exists()) { + Files.createDirectories(dstOtherServerDir.toPath()); + } else { + Files.deleteIfExists(dstOtherServerLibjvm.toPath()); + } + } + + desc = "LD_LIBRARY_PATH should not be set"; + break; + case LLP_SET_NON_EXISTENT_PATH: + if (dstLibDir.exists()) { + TestHelper.recursiveDelete(dstLibDir); + } + desc = "LD_LIBRARY_PATH should not be set"; + break; + default: + throw new RuntimeException("unknown case"); + } + + /* + * Case 1: set the server path + */ + env.clear(); + env.put(LD_LIBRARY_PATH, dstServerDir.getAbsolutePath()); + run(env, v.value + 1, "Case 1: " + desc); + + /* + * Case 2: repeat with client path + */ + env.clear(); + env.put(LD_LIBRARY_PATH, dstClientDir.getAbsolutePath()); + run(env, v.value + 1, "Case 2: " + desc); + + if (!TestHelper.isDualMode) { + continue; // nothing more to do for Linux + } + + // Tests applicable only to solaris. + + // initialize test variables for dual mode operations + final File dst32ServerDir = TestHelper.is32Bit + ? dstServerDir + : dstOtherServerDir; + + final File dst64ServerDir = TestHelper.is64Bit + ? dstServerDir + : dstOtherServerDir; + + /* + * Case 3: set the appropriate LLP_XX flag, + * java32 -d32, LLP_32 is relevant, LLP_64 is ignored + * java64 -d64, LLP_64 is relevant, LLP_32 is ignored + */ + env.clear(); + env.put(LD_LIBRARY_PATH_32, dst32ServerDir.getAbsolutePath()); + env.put(LD_LIBRARY_PATH_64, dst64ServerDir.getAbsolutePath()); + run(TestHelper.is32Bit, null, env, v.value + 1, "Case 3: " + desc); + + /* + * Case 4: we are in dual mode environment, running 64-bit then + * we have the following scenarios: + * java32 -d64, LLP_64 is relevant, LLP_32 is ignored + * java64 -d32, LLP_32 is relevant, LLP_64 is ignored + */ + if (TestHelper.dualModePresent()) { + run(true, "-d64", env, v.value + 1, "Case 4A: " + desc); + run(false,"-d32", env, v.value + 1, "Case 4B: " + desc); + } + } + return; + } + + public static void main(String... args) throws Exception { + if (TestHelper.isWindows) { + System.out.println("Warning: noop on windows"); + return; + } + // create our test jar first + ExecutionEnvironment.createTestJar(); + + // run the tests + test7029048(); + if (errors > 0) { + throw new Exception("Test7029048: FAIL: with " + + errors + " errors and passes " + passes); + } else if (TestHelper.dualModePresent() && passes < 15) { + throw new Exception("Test7029048: FAIL: " + + "all tests did not run, expected " + 15 + " got " + passes); + } else if (TestHelper.isSolaris && passes < 9) { + throw new Exception("Test7029048: FAIL: " + + "all tests did not run, expected " + 9 + " got " + passes); + } else if (TestHelper.isLinux && passes < 6) { + throw new Exception("Test7029048: FAIL: " + + "all tests did not run, expected " + 6 + " got " + passes); + } else { + System.out.println("Test7029048: PASS " + passes); + } + } +} diff --git a/test/tools/launcher/TestHelper.java b/test/tools/launcher/TestHelper.java index af17bb49fc28f4c849638fca268c3add0ff0dfea..3cfdfb8ecbd92ed9a9c478220b22f222749511ea 100644 --- a/test/tools/launcher/TestHelper.java +++ b/test/tools/launcher/TestHelper.java @@ -1,6 +1,5 @@ - /* - * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2011 Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,20 +21,28 @@ * questions. */ +import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.FileVisitResult; +import java.nio.file.SimpleFileVisitor; import javax.tools.ToolProvider; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.tools.JavaCompiler; +import static java.nio.file.StandardCopyOption.*; + /** - * This class provides some common utilites for the launcher tests. + * This class provides some common utilities for the launcher tests. */ public enum TestHelper { INSTANCE; @@ -100,6 +107,13 @@ public enum TestHelper { } } + /* + * is a dual mode available in the test jdk + */ + static boolean dualModePresent() { + return isDualMode && java64Cmd != null; + } + /* * usually the jre/lib/arch-name is the same as os.arch, except for x86. */ @@ -108,6 +122,27 @@ public enum TestHelper { return arch.equals("x86") ? "i386" : arch; } + /* + * get the complementary jre arch ie. if sparc then return sparcv9 and + * vice-versa. + */ + static String getComplementaryJreArch() { + String arch = System.getProperty("os.arch"); + if (arch != null) { + switch (arch) { + case "sparc": + return "sparcv9"; + case "sparcv9": + return "sparc"; + case "x86": + return "amd64"; + case "amd64": + return "i386"; + } + } + return null; + } + /* * A convenience method to create a jar with jar file name and defs */ @@ -168,6 +203,44 @@ public enum TestHelper { } } + static void copyFile(File src, File dst) throws IOException { + Path parent = dst.toPath().getParent(); + if (parent != null) { + Files.createDirectories(parent); + } + Files.copy(src.toPath(), dst.toPath(), COPY_ATTRIBUTES, REPLACE_EXISTING); + } + + static void recursiveDelete(File target) throws IOException { + if (!target.exists()) { + return; + } + Files.walkFileTree(target.toPath(), new SimpleFileVisitor<Path>() { + @Override + public FileVisitResult postVisitDirectory(Path dir, IOException exc) { + try { + Files.deleteIfExists(dir); + } catch (IOException ex) { + System.out.println("Error: could not delete: " + dir.toString()); + System.out.println(ex.getMessage()); + return FileVisitResult.TERMINATE; + } + return FileVisitResult.CONTINUE; + } + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { + try { + Files.deleteIfExists(file); + } catch (IOException ex) { + System.out.println("Error: could not delete: " + file.toString()); + System.out.println(ex.getMessage()); + return FileVisitResult.TERMINATE; + } + return FileVisitResult.CONTINUE; + } + }); + } + static TestResult doExec(String...cmds) { return doExec(null, cmds); } @@ -187,7 +260,7 @@ public enum TestHelper { } BufferedReader rdr = null; try { - List<String> outputList = new ArrayList<String>(); + List<String> outputList = new ArrayList<>(); pb.redirectErrorStream(true); Process p = pb.start(); rdr = new BufferedReader(new InputStreamReader(p.getInputStream())); @@ -198,7 +271,9 @@ public enum TestHelper { } p.waitFor(); p.destroy(); - return new TestHelper.TestResult(cmdStr, p.exitValue(), outputList); + + return new TestHelper.TestResult(cmdStr, p.exitValue(), outputList, + env, new Throwable("current stack of the test")); } catch (Exception ex) { ex.printStackTrace(); throw new RuntimeException(ex.getMessage()); @@ -213,11 +288,16 @@ public enum TestHelper { StringBuilder status; int exitValue; List<String> testOutput; + Map<String, String> env; + Throwable t; - public TestResult(String str, int rv, List<String> oList) { + public TestResult(String str, int rv, List<String> oList, + Map<String, String> env, Throwable t) { status = new StringBuilder("Executed command: " + str + "\n"); exitValue = rv; testOutput = oList; + this.env = env; + this.t = t; } void appendStatus(String x) { @@ -262,11 +342,21 @@ public enum TestHelper { @Override public String toString() { - status = status.append("++++Test Output Begin++++\n"); + status.append("++++Begin Test Info++++\n"); + status.append("++++Test Environment++++\n"); + for (String x : env.keySet()) { + status.append(x).append("=").append(env.get(x)).append("\n"); + } + status.append("++++Test Output++++\n"); for (String x : testOutput) { appendStatus(x); } - status = status.append("++++Test Output End++++\n"); + status.append("++++Test Stack Trace++++\n"); + status.append(t.toString()); + for (StackTraceElement e : t.getStackTrace()) { + status.append(e.toString()); + } + status.append("++++End of Test Info++++\n"); return status.toString(); }