diff --git a/jdk/make/CompileJavaClasses.gmk b/jdk/make/CompileJavaClasses.gmk index 3221f4ad9fa..ec003f58c20 100644 --- a/jdk/make/CompileJavaClasses.gmk +++ b/jdk/make/CompileJavaClasses.gmk @@ -267,6 +267,20 @@ ifndef OPENJDK $(JDK_TOPDIR)/src/closed/$(OPENJDK_TARGET_OS_API_DIR)/classes endif +# No SCTP implementation on Mac OS X or AIX. These classes should be excluded. +SCTP_IMPL_CLASSES = \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/AssociationChange.java\ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/AssociationImpl.java \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/PeerAddrChange.java \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/ResultContainer.java \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpNet.java \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpNotification.java \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SendFailed.java \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/Shutdown.java + MACOSX_SRC_DIRS := ifeq ($(OPENJDK_TARGET_OS), macosx) MACOSX_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/classes @@ -278,9 +292,7 @@ ifeq ($(OPENJDK_TARGET_OS), macosx) $(JDK_TOPDIR)/src/solaris/classes/java/lang/ClassLoaderHelper.java \ $(JDK_TOPDIR)/src/solaris/classes/sun/util/locale/provider/HostLocaleProviderAdapterImpl.java \ $(JDK_TOPDIR)/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java \ - $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java \ - $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \ - $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java + EXFILES += $(SCTP_IMPL_CLASSES) endif @@ -302,9 +314,7 @@ ifeq ($(OPENJDK_TARGET_OS),aix) AIX_SRC_DIRS += $(JDK_TOPDIR)/src/aix/classes # these files are duplicated in AIX_SRC_DIRS - EXFILES += $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java \ - $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \ - $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java + EXFILES += $(SCTP_IMPL_CLASSES) endif # The JDK_USER_DEFINED_FILTER is a poor man's incremental build: by specifying diff --git a/jdk/make/CompileLaunchers.gmk b/jdk/make/CompileLaunchers.gmk index 4eb1af722cc..68786a0a5b3 100644 --- a/jdk/make/CompileLaunchers.gmk +++ b/jdk/make/CompileLaunchers.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -679,7 +679,10 @@ ifndef OPENJDK PROGRAM := jabswitch, \ DEBUG_SYMBOLS := true, \ VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/closed/windows/native/sun/bridge/AccessBridgeStatusWindow.rc, \ - RC_FLAGS := $(RC_FLAGS), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=jabswitch.exe" \ + -D "JDK_INTERNAL_NAME=jabswitch" \ + -D "JDK_FTYPE=0x01L", \ MANIFEST := $(JDK_TOPDIR)/src/closed/windows/native/sun/bridge/jabswitch.manifest)) BUILD_LAUNCHERS += $(BUILD_JABSWITCH) diff --git a/jdk/make/Images.gmk b/jdk/make/Images.gmk index 97898672211..5a3aa249114 100644 --- a/jdk/make/Images.gmk +++ b/jdk/make/Images.gmk @@ -301,10 +301,15 @@ $(JDK_IMAGE_DIR)/jre/lib/ext/meta-index: $(JDKJRE_LIB_TARGETS) ################################################################################ # /man dir +# +# All variables in this section are assigned with simple =, without :, to enable +# more selective overriding from the custom version of this file. +# # Avoid evaluating this whole section on windows for speed and stability ifneq ($(OPENJDK_TARGET_OS), windows) - JRE_MAN_PAGES := \ + JRE_MAN_PAGES = \ java.1 \ + jjs.1 \ keytool.1 \ orbd.1 \ pack200.1 \ @@ -335,6 +340,7 @@ ifneq ($(OPENJDK_TARGET_OS), windows) jconsole.1 \ jcmd.1 \ jdb.1 \ + jdeps.1 \ jhat.1 \ jinfo.1 \ jmap.1 \ @@ -352,29 +358,22 @@ ifneq ($(OPENJDK_TARGET_OS), windows) wsimport.1 \ xjc.1 - ifndef OPENJDK - JDK_MAN_PAGES += jvisualvm.1 - endif - # This variable is potentially overridden in the closed makefile. MAN_SRC_BASEDIR ?= $(JDK_TOPDIR)/src ifeq ($(OPENJDK_TARGET_OS), linux) - MAN_SRC_DIR := $(MAN_SRC_BASEDIR)/linux/doc - MAN1_SUBDIR := man + MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/linux/doc + MAN1_SUBDIR = man endif ifeq ($(OPENJDK_TARGET_OS), solaris) - MAN_SRC_DIR := $(MAN_SRC_BASEDIR)/solaris/doc - MAN1_SUBDIR := sun/man/man1 + MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/solaris/doc + MAN1_SUBDIR = sun/man/man1 endif ifeq ($(OPENJDK_TARGET_OS), macosx) - MAN_SRC_DIR := $(MAN_SRC_BASEDIR)/bsd/doc - MAN1_SUBDIR := man - JDK_MAN_PAGES := $(filter-out jcmd.1, $(JDK_MAN_PAGES)) - JDK_MAN_PAGES := $(filter-out jvisualvm.1, $(JDK_MAN_PAGES)) + MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/bsd/doc + MAN1_SUBDIR = man endif - $(JRE_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/% $(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@) $(install-file) @@ -426,12 +425,6 @@ ifneq ($(OPENJDK_TARGET_OS), windows) $(install-file) endif - # Old build creates empty man page for this, mimicing behaviour. - $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/jcmd.1 $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/jcmd.1 $(JDK_IMAGE_DIR)/man/ja/man1/jcmd.1: - $(ECHO) $(LOG_INFO) Creating dummy $(patsubst $(OUTPUT_ROOT)/%,%,$@) - $(MKDIR) -p $(@D) - $(TOUCH) $@ - ifeq ($(OPENJDK_TARGET_OS), linux) $(JRE_IMAGE_DIR)/man/ja: $(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@) @@ -453,33 +446,33 @@ ifneq ($(OPENJDK_TARGET_OS), windows) endif ifeq ($(OPENJDK_TARGET_OS), linux) - JRE_MAN_PAGE_LIST := $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \ + JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \ $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \ $(JRE_IMAGE_DIR)/man/ja - JDK_MAN_PAGE_LIST := $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \ + JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \ $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \ - $(JDK_IMAGE_DIR)/man/ja + $(JDK_IMAGE_DIR)/man/ja endif ifeq ($(OPENJDK_TARGET_OS), solaris) - JRE_MAN_PAGE_LIST := $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \ + JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \ $(addprefix $(JRE_IMAGE_DIR)/man/ja/man1/, $(JRE_MAN_PAGES)) \ $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \ $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JRE_MAN_PAGES)) - JDK_MAN_PAGE_LIST := $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \ + JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \ $(addprefix $(JDK_IMAGE_DIR)/man/ja/man1/, $(JDK_MAN_PAGES)) \ $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \ $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JDK_MAN_PAGES)) endif ifeq ($(OPENJDK_TARGET_OS), macosx) - JRE_MAN_PAGE_LIST := $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \ + JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \ $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \ $(JRE_IMAGE_DIR)/man/ja - JDK_MAN_PAGE_LIST := $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \ + JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \ $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \ $(JDK_IMAGE_DIR)/man/ja endif @@ -733,6 +726,13 @@ ifneq ($(POST_STRIP_CMD), ) endif +################################################################################ + +# Include the custom makefile right here, after all variables have been defined +# so that they may be overridden, but before the main targets are declared, so +# that overriding has an effect. +$(eval $(call IncludeCustomExtension, jdk, Images.gmk)) + ################################################################################ # Main targets @@ -782,6 +782,3 @@ endif # Profile ################################################################################ .PHONY: default images jre-image jdk-image - -# Hook to include the corresponding custom file, if present. -$(eval $(call IncludeCustomExtension, jdk, Images.gmk)) diff --git a/jdk/make/Tools.gmk b/jdk/make/Tools.gmk index 0856b640bc0..d223f4afa62 100644 --- a/jdk/make/Tools.gmk +++ b/jdk/make/Tools.gmk @@ -71,6 +71,7 @@ TOOL_CHARACTERNAME = $(JAVA_SMALL) -cp $(JDK_OUTPUTDIR)/btclasses \ build.tools.generatecharacter.CharacterName TOOL_DTDBUILDER = $(JAVA_SMALL) -Ddtd_home=$(JDK_TOPDIR)/make/data/dtdbuilder \ + -Djava.awt.headless=true \ -cp $(JDK_OUTPUTDIR)/btclasses build.tools.dtdbuilder.DTDBuilder TOOL_GENERATEBREAKITERATORDATA = $(JAVA_SMALL) \ diff --git a/jdk/make/lib/Awt2dLibraries.gmk b/jdk/make/lib/Awt2dLibraries.gmk index 9f384731b4b..de86e3f86a4 100644 --- a/jdk/make/lib/Awt2dLibraries.gmk +++ b/jdk/make/lib/Awt2dLibraries.gmk @@ -26,9 +26,6 @@ # Hook to include the corresponding custom file, if present. $(eval $(call IncludeCustomExtension, jdk, lib/Awt2dLibraries.gmk)) -# Openwin is defined on Solaris. -OPENWIN_LIB := $(OPENWIN_HOME)/lib - WIN_AWT_LIB := $(JDK_OUTPUTDIR)/objs/libawt/awt.lib ########################################################################################## @@ -481,7 +478,6 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBAWT, \ ASFLAGS := $(LIBAWT_ASFLAGS), \ MAPFILE := $(LIBAWT_MAPFILE), \ LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN), \ - LDFLAGS_solaris := -R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR), \ LDFLAGS_SUFFIX_linux := -ljvm $(LIBM) $(LIBDL) -ljava, \ LDFLAGS_SUFFIX_solaris := -ljvm $(LIBM) $(LIBDL) -ljava -lc, \ LDFLAGS_SUFFIX_aix :=-ljvm $(LIBM) $(LIBDL) -ljava -lm,\ @@ -638,14 +634,7 @@ ifeq ($(findstring $(OPENJDK_TARGET_OS),windows macosx),) $(X_CFLAGS), \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt_xawt/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ - $(X_LIBS) $(LIBAWT_XAWT_LDFLAGS), \ - LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN) \ - $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ - LDFLAGS_solaris := -L$(OPENWIN_HOME)/sfw/lib$(OPENJDK_TARGET_CPU_ISADIR) \ - -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) \ - -R$(OPENWIN_HOME)/sfw/lib$(OPENJDK_TARGET_CPU_ISADIR) \ - -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) \ - -R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) \ + $(X_LIBS) $(LIBAWT_XAWT_LDFLAGS) \ $(call SET_SHARED_LIBRARY_ORIGIN) \ $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ LDFLAGS_SUFFIX := $(LIBAWT_XAWT_LDFLAGS_SUFFIX), \ @@ -976,7 +965,7 @@ else # OPENJDK_TARGET_OS not windows MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjawt/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ - LDFLAGS_solaris := -L$(OPENWIN_HOME)/sfw/lib$(OPENJDK_TARGET_CPU_ISADIR) -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR), \ + LDFLAGS_solaris := $(X_LIBS), \ LDFLAGS_SUFFIX_linux := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \ LDFLAGS_SUFFIX_aix := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\ LDFLAGS_SUFFIX_solaris := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX) -lXrender, \ @@ -1074,11 +1063,11 @@ ifndef OPENJDK CFLAGS := $(CFLAGS_JDKLIB) \ -I$(JDK_TOPDIR)/src/share/javavm/export \ -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/javavm/export \ - -I$(OPENWIN_HOME)/include, \ + $(X_CFLAGS), \ MAPFILE := $(SUNWJDGA_MAPFILE), \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ - LDFLAGS_SUFFIX := -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -ldga -lX11 $(LIBDL) -lc, \ + LDFLAGS_SUFFIX := $(X_LIBS) -ldga -lX11 $(LIBDL) -lc, \ OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libsunwjdga, \ DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) @@ -1173,9 +1162,7 @@ ifeq ($(BUILD_HEADLESS), true) LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ - LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..) \ - -R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) \ - -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR), \ + LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_ORIGIN)., \ REORDER := $(LIBAWT_HEADLESS_REORDER), \ LDFLAGS_SUFFIX_linux := -ljvm -lawt -lm $(LIBDL) -ljava, \ @@ -1236,8 +1223,6 @@ ifndef BUILD_HEADLESS_ONLY else ifeq ($(OPENJDK_TARGET_OS), windows) LIBSPLASHSCREEN_CFLAGS += -DWITH_WIN32 - else ifeq ($(OPENJDK_TARGET_OS), solaris) - LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions else LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) endif @@ -1258,10 +1243,7 @@ ifndef BUILD_HEADLESS_ONLY -framework JavaNativeFoundation else ifeq ($(OPENJDK_TARGET_OS), windows) LIBSPLASHSCREEN_LDFLAGS_SUFFIX += kernel32.lib user32.lib gdi32.lib delayimp.lib -DELAYLOAD:user32.dll - else ifeq ($(OPENJDK_TARGET_OS), solaris) - # Solaris still uses OPENWIN_LIB .. - LIBSPLASHSCREEN_LDFLAGS_SUFFIX += -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -lX11 -lXext $(LIBM) -lpthread - else # .. all other Unixes can use X_LIBS + else LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread endif diff --git a/jdk/make/lib/CoreLibraries.gmk b/jdk/make/lib/CoreLibraries.gmk index 627dfceced2..2241d5d8d86 100644 --- a/jdk/make/lib/CoreLibraries.gmk +++ b/jdk/make/lib/CoreLibraries.gmk @@ -305,7 +305,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBPREFS, \ LDFLAGS_SUFFIX_linux := -ljvm -ljava, \ LDFLAGS_SUFFIX_solaris := -ljvm -ljava -lc, \ LDFLAGS_SUFFIX_aix := -ljvm -ljava, \ - LDFLAGS_SUFFIX_windows := advapi32.lib, \ + LDFLAGS_SUFFIX_windows := advapi32.lib jvm.lib $(WIN_JAVA_LIB), \ LDFLAGS_SUFFIX_macosx := -ljvm -framework CoreFoundation, \ VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ RC_FLAGS := $(RC_FLAGS) \ diff --git a/jdk/make/lib/PlatformLibraries.gmk b/jdk/make/lib/PlatformLibraries.gmk index a70adf87027..336e4b1b3e4 100644 --- a/jdk/make/lib/PlatformLibraries.gmk +++ b/jdk/make/lib/PlatformLibraries.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -160,7 +160,10 @@ ifndef OPENJDK -subsystem:windows -machine:$2 \ -def:$(ACCESSBRIDGE_SRCDIR)/JAWTAccessBridge.DEF, \ VERSIONINFO_RESOURCE := $(ACCESSBRIDGE_SRCDIR)/AccessBridgeStatusWindow.rc, \ - RC_FLAGS := $(RC_FLAGS), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=JAWTAccessBridge$1.dll" \ + -D "JDK_INTERNAL_NAME=JAWTAccessBridge$1" \ + -D "JDK_FTYPE=0x02L", \ OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjawtaccessbridge$1, \ DEBUG_SYMBOLS := true) @@ -183,7 +186,10 @@ ifndef OPENJDK -subsystem:windows -machine:$2 \ -def:$(ACCESSBRIDGE_SRCDIR)/JavaAccessBridge.DEF, \ VERSIONINFO_RESOURCE := $(ACCESSBRIDGE_SRCDIR)/AccessBridgeStatusWindow.rc, \ - RC_FLAGS := $(RC_FLAGS), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=JavaAccessBridge$1.dll" \ + -D "JDK_INTERNAL_NAME=JavaAccessBridge$1" \ + -D "JDK_FTYPE=0x02L", \ OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjavaaccessbridge$1, \ DEBUG_SYMBOLS := true) @@ -205,7 +211,10 @@ ifndef OPENJDK -subsystem:windows -machine:$2 \ -def:$(ACCESSBRIDGE_SRCDIR)/WinAccessBridge.DEF, \ VERSIONINFO_RESOURCE := $(ACCESSBRIDGE_SRCDIR)/AccessBridgeStatusWindow.rc, \ - RC_FLAGS := $(RC_FLAGS), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=WindowsAccessBridge$1.dll" \ + -D "JDK_INTERNAL_NAME=WindowsAccessBridge$1" \ + -D "JDK_FTYPE=0x02L", \ OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libwindowsaccessbridge$1, \ DEBUG_SYMBOLS := true) diff --git a/jdk/make/lib/ServiceabilityLibraries.gmk b/jdk/make/lib/ServiceabilityLibraries.gmk index ef4234b0dd0..550a3e722da 100644 --- a/jdk/make/lib/ServiceabilityLibraries.gmk +++ b/jdk/make/lib/ServiceabilityLibraries.gmk @@ -49,7 +49,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBATTACH, \ EXCLUDE_FILES := $(LIBATTACH_EXCLUDE_FILES), \ LANG := C, \ OPTIMIZATION := LOW, \ - CFLAGS := $(CFLAGS_JDKLIB), \ + CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS), \ CFLAGS_windows := /Gy, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libattach/mapfile-$(OPENJDK_TARGET_OS), \ VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ @@ -79,7 +79,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBDT_SOCKET, \ $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/transport/socket, \ LANG := C, \ OPTIMIZATION := LOW, \ - CFLAGS := $(CFLAGS_JDKLIB) -DUSE_MMAP \ + CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_CFLAGS_WARNINGS_ARE_ERRORS) -DUSE_MMAP \ -I$(INCLUDEDIR) -I$(JDK_OUTPUTDIR)/include/$(OPENJDK_TARGET_OS) \ -I$(JDK_TOPDIR)/src/share/transport/socket \ -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/transport/socket \ @@ -115,7 +115,7 @@ ifeq ($(OPENJDK_TARGET_OS), windows) $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/transport/shmem, \ LANG := C, \ OPTIMIZATION := LOW, \ - CFLAGS := $(CFLAGS_JDKLIB) -DUSE_MMAP \ + CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS) -DUSE_MMAP \ -I$(INCLUDEDIR) -I$(JDK_OUTPUTDIR)/include/$(OPENJDK_TARGET_OS) \ -I$(JDK_TOPDIR)/src/share/transport/shmem \ -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/transport/shmem \ @@ -144,7 +144,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJDWP, \ SRC := $(JDK_TOPDIR)/src/share/back $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/back, \ LANG := C, \ OPTIMIZATION := LOW, \ - CFLAGS := $(CFLAGS_JDKLIB) -DJDWP_LOGGING \ + CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS) -DJDWP_LOGGING \ -I$(JDK_TOPDIR)/src/share/transport/export \ -I$(JDK_TOPDIR)/src/share/back/export \ -I$(JDK_TOPDIR)/src/share/npt \ @@ -179,7 +179,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJSDT, \ $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/tracing/dtrace, \ LANG := C, \ OPTIMIZATION := LOW, \ - CFLAGS := $(CFLAGS_JDKLIB) \ + CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS) \ -I$(JDK_TOPDIR)/src/share/native/sun/tracing/dtrace, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjsdt/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ @@ -248,7 +248,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT, \ INCLUDE_FILES := $(LIBINSTRUMENT_FILES), \ LANG := C, \ OPTIMIZATION := LOW, \ - CFLAGS := $(LIBINSTRUMENT_CFLAGS), \ + CFLAGS := $(LIBINSTRUMENT_CFLAGS) $(CFLAGS_WARNINGS_ARE_ERRORS), \ CFLAGS_debug := -DJPLIS_LOGGING, \ CFLAGS_release := -DNO_JPLIS_LOGGING, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libinstrument/mapfile-vers, \ @@ -316,7 +316,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBMANAGEMENT, \ EXCLUDE_FILES := $(BUILD_LIBMANAGEMENT_EXCLUDES), \ LANG := C, \ OPTIMIZATION := $(LIBMANAGEMENT_OPTIMIZATION), \ - CFLAGS := $(CFLAGS_JDKLIB) $(BUILD_LIBMANAGEMENT_CFLAGS), \ + CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS) $(BUILD_LIBMANAGEMENT_CFLAGS), \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libmanagement/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ @@ -364,7 +364,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBHPROF, \ SRC := $(BUILD_LIBHPROF_SRC), \ LANG := C, \ OPTIMIZATION := $(LIBHPROF_OPTIMIZATION), \ - CFLAGS := $(CFLAGS_JDKLIB) \ + CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS) \ $(BUILD_LIBHPROF_CFLAGS), \ CFLAGS_debug := -DHPROF_LOGGING, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libhprof/mapfile-vers, \ @@ -392,7 +392,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJAVA_CRW_DEMO, \ SRC := $(JDK_TOPDIR)/src/share/demo/jvmti/java_crw_demo, \ LANG := C, \ OPTIMIZATION := LOW, \ - CFLAGS := $(CFLAGS_JDKLIB) \ + CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS) \ -I$(JDK_TOPDIR)/src/share/demo/jvmti/java_crw_demo, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjava_crw_demo/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ @@ -419,7 +419,7 @@ ifndef OPENJDK SRC := $(JDK_TOPDIR)/src/closed/share/native/oracle/jfr, \ LANG := C, \ OPTIMIZATION := LOW, \ - CFLAGS := $(CFLAGS_JDKLIB) \ + CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS) \ -I$(JDK_TOPDIR)/src/closed/share/javavm/export, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjfr/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ diff --git a/jdk/src/aix/native/sun/tools/attach/AixVirtualMachine.c b/jdk/src/aix/native/sun/tools/attach/AixVirtualMachine.c index a5ba1605132..7422427803f 100644 --- a/jdk/src/aix/native/sun/tools/attach/AixVirtualMachine.c +++ b/jdk/src/aix/native/sun/tools/attach/AixVirtualMachine.c @@ -1,6 +1,6 @@ /* - * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. - * Copyright 2013 SAP AG. All rights reserved. + * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright 2014 SAP AG. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -92,10 +92,10 @@ JNIEXPORT void JNICALL Java_sun_tools_attach_AixVirtualMachine_connect struct sockaddr_un addr; int err = 0; - /* added missing structure initialization */ - memset(&addr,0, sizeof(addr)); + memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; - strcpy(addr.sun_path, p); + /* strncpy is safe because addr.sun_path was zero-initialized before. */ + strncpy(addr.sun_path, p, sizeof(addr.sun_path) - 1); /* We must call bind with the actual socketaddr length. This is obligatory for AS400. */ if (connect(fd, (struct sockaddr*)&addr, SUN_LEN(&addr)) == -1) { err = errno; diff --git a/jdk/src/bsd/doc/man/ja/jcmd.1 b/jdk/src/bsd/doc/man/ja/jcmd.1 new file mode 100644 index 00000000000..a281da552eb --- /dev/null +++ b/jdk/src/bsd/doc/man/ja/jcmd.1 @@ -0,0 +1,24 @@ +." Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +." +." This code is free software; you can redistribute it and/or modify it +." under the terms of the GNU General Public License version 2 only, as +." published by the Free Software Foundation. +." +." This code is distributed in the hope that it will be useful, but WITHOUT +." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +." version 2 for more details (a copy is included in the LICENSE file that +." accompanied this code). +." +." You should have received a copy of the GNU General Public License version +." 2 along with this work; if not, write to the Free Software Foundation, +." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +." +." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +." or visit www.oracle.com if you need additional information or have any +." questions. +." +.TH jcmd 1 "07 May 2011" + +.LP diff --git a/jdk/src/bsd/doc/man/ja/jdeps.1 b/jdk/src/bsd/doc/man/ja/jdeps.1 new file mode 100644 index 00000000000..58949352aa3 --- /dev/null +++ b/jdk/src/bsd/doc/man/ja/jdeps.1 @@ -0,0 +1,24 @@ +." Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +." +." This code is free software; you can redistribute 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 jdeps 1 "07 May 2011" + +.LP diff --git a/jdk/src/bsd/doc/man/ja/jjs.1 b/jdk/src/bsd/doc/man/ja/jjs.1 new file mode 100644 index 00000000000..c57b30ab161 --- /dev/null +++ b/jdk/src/bsd/doc/man/ja/jjs.1 @@ -0,0 +1,24 @@ +." Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +." +." This code is free software; you can redistribute 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 jjs 1 "07 May 2011" + +.LP diff --git a/jdk/src/bsd/doc/man/ja/kinit.1 b/jdk/src/bsd/doc/man/ja/kinit.1 deleted file mode 100644 index e78964daf58..00000000000 --- a/jdk/src/bsd/doc/man/ja/kinit.1 +++ /dev/null @@ -1,25 +0,0 @@ -'\" t -.\" -.\" Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. -.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -.\" -.\" This code is free software; you can redistribute it and/or modify it -.\" under the terms of the GNU General Public License version 2 only, as -.\" published by the Free Software Foundation. -.\" -.\" This code is distributed in the hope that it will be useful, but WITHOUT -.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -.\" version 2 for more details (a copy is included in the LICENSE file that -.\" accompanied this code). -.\" -.\" You should have received a copy of the GNU General Public License version -.\" 2 along with this work; if not, write to the Free Software Foundation, -.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -.\" -.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -.\" or visit www.oracle.com if you need additional information or have any -.\" questions. -.\" -.\" -.\" diff --git a/jdk/src/bsd/doc/man/ja/klist.1 b/jdk/src/bsd/doc/man/ja/klist.1 deleted file mode 100644 index 5ab393b3cc9..00000000000 --- a/jdk/src/bsd/doc/man/ja/klist.1 +++ /dev/null @@ -1,24 +0,0 @@ -'\" t -.\" -.\" Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. -.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -.\" -.\" This code is free software; you can redistribute it and/or modify it -.\" under the terms of the GNU General Public License version 2 only, as -.\" published by the Free Software Foundation. -.\" -.\" This code is distributed in the hope that it will be useful, but WITHOUT -.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -.\" version 2 for more details (a copy is included in the LICENSE file that -.\" accompanied this code). -.\" -.\" You should have received a copy of the GNU General Public License version -.\" 2 along with this work; if not, write to the Free Software Foundation, -.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -.\" -.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -.\" or visit www.oracle.com if you need additional information or have any -.\" questions. -.\" -.\" diff --git a/jdk/src/bsd/doc/man/ja/ktab.1 b/jdk/src/bsd/doc/man/ja/ktab.1 deleted file mode 100644 index 5ab393b3cc9..00000000000 --- a/jdk/src/bsd/doc/man/ja/ktab.1 +++ /dev/null @@ -1,24 +0,0 @@ -'\" t -.\" -.\" Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. -.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -.\" -.\" This code is free software; you can redistribute it and/or modify it -.\" under the terms of the GNU General Public License version 2 only, as -.\" published by the Free Software Foundation. -.\" -.\" This code is distributed in the hope that it will be useful, but WITHOUT -.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -.\" version 2 for more details (a copy is included in the LICENSE file that -.\" accompanied this code). -.\" -.\" You should have received a copy of the GNU General Public License version -.\" 2 along with this work; if not, write to the Free Software Foundation, -.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -.\" -.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -.\" or visit www.oracle.com if you need additional information or have any -.\" questions. -.\" -.\" diff --git a/jdk/src/linux/doc/man/ja/appletviewer.1 b/jdk/src/linux/doc/man/ja/appletviewer.1 index 5aa0ad3d1fe..76609bfd263 100644 --- a/jdk/src/linux/doc/man/ja/appletviewer.1 +++ b/jdk/src/linux/doc/man/ja/appletviewer.1 @@ -1,66 +1,105 @@ -." Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." 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 appletviewer 1 "07 May 2011" - -.LP -.SH "名前" -appletviewer \- Java アプレットビューア -.LP -.LP -\f3appletviewer\fP コマンドは Web ブラウザの外でアプレットを実行させます。 -.LP -.SH "形式" -.LP -.LP -\f4appletviewer\fP \f2[\fP \f2options\fP \f2] \fP\f2urls\fP ... -.LP -.SH "説明" -.LP -.LP -\f3appletviewer\fP コマンドは \f2urls\fP に指定されたドキュメントあるいはリソースと接続して、そのドキュメントが参照するそれぞれのアプレットを独自のウィンドウで表示します。注: \f2urls\fP によって参照されたドキュメントが、\f2OBJECT\fP、\f2EMBED\fP、または \f2APPLET\fP タグでどのアプレットも参照していない場合、\f3appletviewer\fP は何も行いません。\f3appletviewer\fP でサポートされる HTML タグの詳細については、 -.na -\f2「アプレットビューアのタグ」\fP @ +'\" t +.\" Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: appletviewer +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "appletviewer" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +appletviewer \- Webブラウザの外側でアプレットを実行します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIappletviewer\fR [\fIoptions\fR] \fIurl\fR\&.\&.\&. .fi -http://java.sun.com/javase/6/docs/technotes/tools/appletviewertags.htmlを参照してください。 -.LP -.LP -\f3注:\fP \f3appletviewer\fP は、RFC2396 で規定されたエスケープ機構に従って符号化された URL を必要とします。サポートされるのは、符号化された URL だけです。ただし、ファイル名については、RFC2396 に指定された方法で符号化を解除しておく必要があります。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -\-debug -Java デバッガ jdb(1) でアプレットビューアを開始します。これにより、ドキュメント中のアプレットをデバッグすることができます。 -.TP 3 -\-encoding \ \ encoding name -入力 HTML ファイルのエンコーディング名を指定します。 -.TP 3 -\-Jjavaoption -文字列 \f2javaoption\fP は、appletviewer を実行する Java インタプリタに 1 つの引数として渡されます。引数にスペースを含めてはいけません。複数の引数は、各引数のすべてを接頭辞 \f3\-J\fP で始めることにより区分する必要があります。これは、コンパイラの実行環境、またはメモリーの利用に有効です。 +.if n \{\ .RE +.\} +.PP +\fIoptions\fR +.RS 4 +空白で区切られたコマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIurl\fR +.RS 4 +表示するドキュメントまたはリソースの場所。空白で区切られた複数のURLを指定できます。 +.RE +.SH "説明" +.PP +\fIappletviewer\fRコマンドは\fIurls\fRに指定されたドキュメントあるいはリソースと接続して、そのドキュメントが参照するそれぞれのアプレットを独自のウィンドウで表示します。urlsによって参照されたドキュメントが、\fIOBJECT\fR、\fIEMBED\fRまたは\fIAPPLET\fRタグでどのアプレットも参照していない場合、\fIappletviewer\fRコマンドは何も行いません。\fIappletviewer\fRコマンドでサポートされるHTMLタグの詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/appletviewertags\&.htmlにある +アプレット・ビューア・タグを参照してください。 +.PP +\fIappletviewer\fRコマンドは、RFC2396で定義されたエスケープ・メカニズムに従ってエンコードされたURLを必要とします。サポートされるのは、エンコードされたURLのみです。ただし、ファイル名については、RFC2396の仕様に従ってエンコードを解除しておく必要があります。 +.PP +\fB注意:\fR +The +\fIappletviewer\fRコマンドは開発専用です。詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/samples/aboutCodeSamples\&.htmlにある +サンプル/テスト・アプリケーションおよびコードについてを参照してください。 +.SH "オプション" +.PP +\-debug +.RS 4 +\fIjdb\fRコマンドを使用してJavaデバッガでアプレット・ビューアを開始して、ドキュメント中のアプレットをデバッグします。 +.RE +.PP +\-encoding \fIencoding\-name\fR +.RS 4 +入力HTMLファイルのエンコーディング名を指定します。 +.RE +.PP +\-J\fIjavaoption\fR +.RS 4 +文字列\fIjavaoption\fRは、アプレット・ビューアを実行するJavaインタプリタに1つの引数として渡されます。引数にスペースを含めないでください。複数の引数は、すべてが接頭辞\fI\-J\fRで始まる必要があります。これは、コンパイラの実行環境またはメモリー使用の調整に有効です。 +.RE +.PP -.LP -.LP - -.LP - +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/extcheck.1 b/jdk/src/linux/doc/man/ja/extcheck.1 index d0a671568f8..fdd5a8e0cb2 100644 --- a/jdk/src/linux/doc/man/ja/extcheck.1 +++ b/jdk/src/linux/doc/man/ja/extcheck.1 @@ -1,73 +1,108 @@ -." 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 -." 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 extcheck 1 "07 May 2011" - -.LP -.SH "名前" -extcheck \- jar の競合検出ユーティリティー -.LP -.LP -\f3extcheck\fP は、ターゲットの jar ファイルと現在インストールされている拡張機能の jar ファイル間のバージョンの競合を検出します。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: extcheck +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "extcheck" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +extcheck \- ターゲットのJavaアーカイブ(JAR)ファイルと現在インストールされている拡張機能のJARファイル間のバージョンの競合を検出します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -extcheck [ \-verbose ] targetfile.jar -.fl -\fP +\fIextcheck\fR [\fIoptions\fR] \fItargetfile\&.jar\fR .fi - -.LP -.SH "説明" -.LP -.LP -\f3extcheck\fP ユーティリティーは、指定された Jar ファイルのタイトルおよびバージョンが Java(TM) 2 SDK にインストールされている拡張機能と競合していないかをチェックします。拡張機能をインストールする前に、このユーティリティーを使って、バージョンが同じか、より新しい拡張機能がすでにインストールされていないかどうかを調べることができます。 -.LP -.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 -.LP -競合が検出されない場合のリターンコードは \f20\fP です。 -.LP -.LP -拡張機能ディレクトリ内のいずれかの jar ファイルのマニフェストに、同一の \f2Specification\-title\fP 、および同一またはより新しい \f2Specification\-version\fP 番号がある場合は、ゼロでないエラーコードが返されます。 \f2targetfile.jar\fP のマニフェストに \f2Specification\-title\fP または \f2Specification\-version\fP 属性がない場合も、ゼロでないエラーコードが返されます。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -\-verbose -拡張機能ディレクトリ内の Jar ファイルを、チェック時に一覧表示します。また、ターゲット jar ファイルのマニフェストの属性、および競合する jar ファイルについても報告します。 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fItargetfile\&.jar\fR +.RS 4 +バージョンの競合を検出するために、現在インストールされている拡張機能JARファイルと比較するターゲットJARファイル。 +.RE +.SH "説明" +.PP +\fIextcheck\fRコマンドは、指定されたJARファイルのタイトルおよびバージョンがJava SE SDKにインストールされている拡張機能と競合していないかをチェックします。拡張機能をインストールする前に、このユーティリティを使用して、同じバージョンまたはより新しいバージョンの拡張機能がすでにインストールされていないかどうかを調べることができます。 +.PP +\fIextcheck\fRコマンドは、\fItargetfile\&.jar\fRファイルのマニフェスト内のヘッダーSpecification\-titleおよびSpecification\-versionを、拡張機能ディレクトリ内に現在インストールされているすべてのJARファイル内の対応するヘッダーと比較します。デフォルトでは、拡張機能ディレクトリは、Oracle Solarisの場合は\fIjre/lib/ext\fR、Windowsの場合は\fI\ejre\elib\eext\fRです。\fIextcheck\fRコマンドは、\fIjava\&.lang\&.Package\&.isCompatibleWith\fRメソッドと同様の方法でバージョン番号を比較します。 +.PP +競合が検出されない場合、リターン・コードは0です。 +.PP +拡張機能ディレクトリ内のいずれかのJARファイルのマニフェストに、同一の\fISpecification\-title\fR、および同一またはより新しい\fISpecification\-version\fR番号がある場合は、ゼロでないエラー・コードが返されます。\fItargetfile\&.jar\fRのマニフェスト・ファイルに\fISpecification\-title\fRまたは\fISpecification\-version\fR属性がない場合も、ゼロでないエラー・コードが返されます。 +.SH "オプション" +.PP +\-verbose +.RS 4 +拡張機能ディレクトリ内のJARファイルを、チェック時に一覧表示します。また、ターゲットJARファイルのマニフェストの属性、および競合するJARファイルについても報告します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシン(JVM)に\fIoption\fRを渡します。optionには、Java起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 .RE - -.LP .SH "関連項目" -.LP -.LP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} jar(1) -.LP - +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/idlj.1 b/jdk/src/linux/doc/man/ja/idlj.1 index 96ce9478bdc..92b10e2e57d 100644 --- a/jdk/src/linux/doc/man/ja/idlj.1 +++ b/jdk/src/linux/doc/man/ja/idlj.1 @@ -1,738 +1,554 @@ -." 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 -." 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 idlj 1 "07 May 2011" - -.LP -.SH "名前" -idlj \- IDL\-to\-Java コンパイラ -.LP -\f3idlj\fP は、指定された IDL ファイルから Java バインディングを生成します。 -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: idlj +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java IDLおよびRMI-IIOPツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "idlj" "1" "2013年11月21日" "JDK 8" "Java IDLおよびRMI-IIOPツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +idlj \- 指定されたインタフェース定義言語(IDL)ファイルに対してJavaバインディングを生成します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -idlj [ \fP\f3options\fP\f3 ] \fP\f4idl\-file\fP\f3 -.fl -\fP +\fIidlj\fR [ \fIoptions\fR ] \fIidlfile\fR .fi - -.LP -.LP -\f2idl\-file\fP は、インタフェース定義言語 (IDL) による定義が入ったファイルの名前です。\f2options\fP の順番は任意ですが、\f2idl\-file\fP よりも前に指定しなければなりません。 -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。optionsの順番は任意ですが、\fIidlfile\fRよりも前に指定する必要があります。 +.RE +.PP +\fIidlfile\fR +.RS 4 +インタフェース定義言語(IDL)による定義が含まれるファイルの名前。 +.RE .SH "説明" -.LP -.LP -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 という名前だったものがあります。 -.LP -.SS -クライアントバインディングおよびサーバーバインディングの発行 -.LP -.LP -My.idl という名前の IDL ファイルに対して Java バインディングを生成するには、次のコマンドを実行します。 -.LP +.PP +IDL\-to\-Javaコンパイラは、指定されたIDLファイルに対してJavaバインディングを生成します。バインディングの詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/mapping/jidlMapping\&.htmlにある +Java IDL: Java言語マッピングへのIDLを参照してください。 +.PP +IDL\-to\-Javaコンパイラの以前のリリースの中には、\fIidltojava\fRという名前だったものがあります。 +.SS "クライアント・バインディングおよびサーバー・バインディングの発行" +.PP +次の\fIidlj\fRコマンドは、クライアント側バインディングを含む\fIMy\&.idl\fRという名前のIDLファイルを生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -idlj My.idl -.fl -\fP +idlj My\&.idl .fi - -.LP -.LP -これにより、クライアント側のバインディングが生成されます。このコマンドは、次のコマンドと等価です。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-fclient\fP My.idl -.fl -.fi - -.LP -.LP -クライアント側のバインディングには、サーバー側のスケルトンは組み込まれていません。インタフェースに対してサーバー側のバインディングを生成するには、次のコマンドを実行します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-fserver\fP My.idl -.fl -.fi - -.LP -.LP -サーバー側のバインディングには、クライアント側のバインディングのほかに、スケルトンも含まれています。これらはすべて、 \f2POA\fP (つまり継承モデル) クラスです。クライアント側とサーバー側の両方のバインディングを生成する場合は、次のコマンド (どれも等価) のうちの 1 つを使用します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-fclient \-fserver\fP My.idl -.fl -idlj \f3\-fall\fP My.idl -.fl -.fi - -.LP -.LP -サーバー側で可能なモデルは 2 つあります。継承モデルと Tie 委譲モデルです。 -.LP -.LP -デフォルトのサーバー側のモデルは、「移殖可能サーバント継承モデル」です。\f2My.idl\fP 内で \f2My\fP インタフェースが定義されている場合は、\f2MyPOA.java\fP というファイルが生成されます。この実装は \f2My\fP に提供し、\f2MyPOA\fP を継承する必要があります。 -.LP -.LP -\f2MyPOA.java\fP は -.na -\f2org.omg.PortableServer.Servant\fP @ -.fi -http://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 そのものによって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドも提供します。 -.LP -.LP -継承モデルのもう 1 つのオプションは、\f2\-oldImplBase\fP フラグを使用することで、J2SE 1.4 より前のバージョンの Java プログラミング言語と互換性のあるサーバー側バインディングを生成することです。ただし、\f2\-oldImplBase\fP フラグを使用するのは、標準的な手法ではありません。これらの API は今後非推奨になる予定です。このフラグを使用するのは、J2SE 1.3 で記述された既存のサーバーとの互換性が必要な場合だけです。その場合には既存の MAKEFILE を変更し、\f2idlj\fP コンパイラに \f2\-oldImplBase\fP フラグを追加する必要があります。そうしないと、POA ベースのサーバー側マッピングが生成されます。下位互換性のあるサーバー側バインディングを生成するには、次のコマンドを使用します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-fclient \-fserver\fP \f3\-oldImplBase\fP My.idl -.fl -idlj \f3\-fall\fP \f3\-oldImplBase\fP My.idl -.fl -.fi - -.LP -.LP -\f2My.idl\fP 内で \f2My\fP インタフェースが定義されている場合は、\f2_MyImplBase.java\fP というファイルが生成されます。\f2My\fP に対してその実装を提供し、この実装は \f2_MyImplBase\fP から継承しなければなりません。 -.LP -.LP -もう 1 つのサーバー側モデルは、Tie モデルと呼ばれるものです。このサーバー側モデルは、委譲モデルです。Tie とスケルトンを同時に生成することはできないため、それらは別々に生成しなければなりません。次のコマンドによって、Tie モデル用のバインディングが生成されます。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-fall\fP My.idl -.fl -idlj \f3\-fallTIE\fP My.idl -.fl -.fi - -.LP -.LP -\f2My\fP というインタフェースの場合、上記の 2 番目のコマンドにより、\f2MyPOATie.java\fP が生成されます。\f2MyPOATie\fP のコンストラクタは、\f2delegate\fP を取ります。この例では、デフォルトの POA モデルを使用しているため、コンストラクタにも \f2poa\fP が必要です。\f2delegate\fP に対して実装を提供しなければなりませんが、この実装は \f2MyOperations\fP インタフェースから継承する必要があるだけで、その他のクラスから継承する必要はありません。しかし、この実装を ORB と一緒に使用するには、\f2MyPOATie\fP 内で実装をラップしなければなりません。たとえば、次のようにします。 -.LP -.nf -\f3 -.fl - ORB orb = ORB.init(args, System.getProperties()); -.fl - -.fl - // Get reference to rootpoa & activate the POAManager -.fl - POA rootpoa = (POA)orb.resolve_initial_references("RootPOA"); -.fl - rootpoa.the_POAManager().activate(); -.fl - -.fl - // create servant and register it with the ORB -.fl - MyServant myDelegate = new MyServant(); -.fl - myDelegate.setORB(orb); -.fl - -.fl - // create a tie, with servant being the delegate. -.fl - MyPOATie tie = new MyPOATie(myDelegate, rootpoa); -.fl - -.fl - // obtain the objectRef for the tie -.fl - My ref = tie._this(orb); -.fl -\fP -.fi - -.LP -.LP -他の実装から継承しなければならない場合、標準の継承モデルではなく Tie モデルを使用することがあります。Java の場合は、インタフェースの継承の個数に制限はありませんが、クラスの継承に使用できるスロットは 1 つだけです。継承モデルを使用した場合は、そのスロットが占有されます。Tie モデルを使用した場合は、そのスロットが使用されず、ユーザーが独自の目的で使用することができます。ただし、この方法には、間接性のレベルが 1 つ導入されるという欠点があります。メソッドを呼び出すときに、余分なメソッド呼び出しが 1 回発生します。 -.LP -.LP -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 -.LP -\f2My\fP というインタフェースの場合、これにより \f2My_Tie.java\fP が生成されます。\f2My_Tie\fP のコンストラクタは、\f2impl\fP を取ります。\f2impl\fP に対して実装を提供しなければなりませんが、その実装は \f2HelloOperations\fP インタフェースから継承する必要があるだけで、その他のクラスから継承する必要はありません。しかし、この実装を ORB と一緒に使用するには、\f2My_Tie\fP 内で実装をラップしなければなりません。たとえば、次のようにします。 -.LP -.nf -\f3 -.fl - ORB orb = ORB.init(args, System.getProperties()); -.fl - -.fl - // create servant and register it with the ORB -.fl - MyServant myDelegate = new MyServant(); -.fl - myDelegate.setORB(orb); -.fl - -.fl - // create a tie, with servant being the delegate. -.fl - MyPOATie tie = new MyPOATie(myDelegate); -.fl - -.fl - // obtain the objectRef for the tie -.fl - My ref = tie._this(orb); -.fl -\fP -.fi - -.LP -.SS -発行されたファイルの代替位置の指定 -.LP -.LP -発行されたファイルをカレントディレクトリ以外のディレクトリに置くには、次のようなコマンドでコンパイラを呼び出します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-td /altdir\fP My.idl -.fl -.fi - -.LP -.LP -\f2My\fP インタフェースの場合、バインディングは、\f2./My.java\fP ではなく、\f2/altdir/My.java\fP などに発行されます。 -.LP -.SS -インクルードファイルの代替位置の指定 -.LP -.LP -\f2My.idl\fP にもう 1 つの IDL ファイル \f2MyOther.idl\fP がインクルードされている場合、コンパイラは、ローカルディレクトリに \f2MyOther.idl\fP があるものと想定します。もしそのファイルが、たとえば \f2/includes\fP にある場合は、次のようなコマンドでコンパイラを呼び出します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-i /includes\fP My.idl -.fl -.fi - -.LP -.LP -また、もし \f2My.idl\fP に、たとえば \f2/moreIncludes\fP にある \f2Another.idl\fP もインクルードされているのであれば、次のようなコマンドでコンパイラを呼び出します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-i /includes \-i /moreIncludes\fP My.idl -.fl -.fi - -.LP -.LP -このような形式でインクルードを指定すると、コマンドが長くて複雑になります。そこで、インクルードファイルを検索する場所をコンパイラに指示するための別の方法が用意されています。この方法は、環境変数の考え方と似ています。CLASSPATH にリストされているディレクトリ内に \f2idl.config\fP という名前のファイルを作成します。その \f2idl.config\fP の中に、次のような形式の行を入れます。 -.LP -.nf -\f3 -.fl -includes=/includes;/moreIncludes -.fl -\fP -.fi - -.LP -.LP -コンパイラは、このファイルを検索し、インクルードリストを読み込みます。この例では、ディレクトリの間の区切り文字はセミコロン (;) になっています。この区切り文字は、プラットフォームによって異なります。たとえば、Windows プラットフォームではセミコロンですが、Unix プラットフォームではコロンです。 \f2インクルード\fPの詳細については、 -.na -\f2CLASSPATH の設定\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#general を参照してください。 -.LP -.SS -インクルードファイルに対するバインディングの発行 -.LP -.LP -デフォルトでは、コマンド行に指定した IDL ファイルで定義されているインタフェースや構造体などについてのみ、Java バインディングが生成されます。インクルードされたファイルで定義されている型については、Java バインディングは生成されません。たとえば、次の 2 つの IDL ファイルについて考えてみましょう。 -.LP - -.LP -.LP -\f4My.idl\fP -.LP -.nf -\f3 -.fl -#include -.fl -interface My -.fl -{ -.fl -}; -.fl -\fP -.fi - -.LP - -.LP -.LP -\f4MyOther.idl\fP -.LP -.nf -\f3 -.fl -interface MyOther -.fl -{ -.fl -}; -.fl -\fP -.fi - -.LP - -.LP -.LP -次のコマンドでは、\f2My\fP に対する Java バインディングだけが生成されます。 -.LP -.nf -\f3 -.fl -idlj My.idl -.fl -\fP -.fi - -.LP -.LP -\f2My.idl\fP で定義されている型と、\f2My.idl\fP にインクルードされたファイル (この例では \f2MyOther.idl\fP) で定義されている型すべてについて Java バインディングを生成するには、次のコマンドを使用します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-emitAll\fP My.idl -.fl -.fi - -.LP -.LP -このデフォルトの規則に関して注意しなければならないことがあります。グローバルスコープに指定した \f2#include\fP 文は、前述のとおりに処理されます。これらの \f2#include\fP 文は、インポート文と見なすことができます。それに対して、他の定義に囲まれたスコープ内に指定した \f2#include\fP 文は、本当の意味での \f2#include\fP 文として処理されます。つまり、インクルードされたファイルにあるコードが、元のファイルにそのまま指定されているかのように処理され、それに対して Java バインディングが発行されます。次はその例です。 -.LP - -.LP -.LP -\f4My.idl\fP -.LP -.nf -\f3 -.fl -#include -.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 - -.LP -.LP -\f4Widgets.idl\fP -.LP -.nf -\f3 -.fl -module Widgets -.fl -{ -.fl - interface W1 {...}; -.fl - interface W2 {...}; -.fl -}; -.fl -\fP -.fi - -.LP - -.LP -.LP -このファイルに対して IDL\-to\-Java コンパイラを実行すると、\f2W1\fP および \f2W2\fP に対する Java バインディングが \f2Widgets\fP パッケージ内に生成されます。しかし、業界の慣例によると、会社のパッケージは、\f2com.<会社名>\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 -.LP -コンパイル用のシンボルが IDL ファイル内で定義されていない場合は、そのシンボルを定義する必要があります。これは、たとえば、バインディング内にデバッグコードを組み入れるときに使用します。次のコマンドは、 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-d\fP MYDEF My.idl -.fl -.fi - -.LP -.LP -\f2My.idl\fP 内に \f2#define MYDEF\fP という行を指定した場合と等価です。 -.LP -.SS -既存のバインディングの保持 -.LP -.LP -Java バインディングファイルがすでに存在する場合は、\f2\-keep\fP フラグを指定すると、コンパイラによる上書きを回避できます。デフォルトでは、すでに存在するかどうかにかかわらず、すべてのファイルが生成されます。これらのファイルをカスタマイズした場合 (ただし、それらの内容が正確であるとき以外はカスタマイズは避ける)、\-keep オプションは有用です。次のコマンドは、 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-keep\fP My.idl -.fl -.fi - -.LP -.LP -クライアント側のバインディングで、まだ存在しないものをすべて発行します。 -.LP -.SS -コンパイルの進捗状況の表示 -.LP -.LP -IDL\-to\-Java コンパイラは、実行の各段階で状態メッセージを生成します。「冗長」モード (メッセージが多いモード) にするには、\f2\-v\fP オプションを使用します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-v\fP My.idl -.fl -.fi - -.LP -.LP -デフォルトでは、コンパイラは冗長モードでは実行されません。 -.LP -.SS -バージョン情報の表示 -.LP -.LP -IDL\-to\-Java コンパイラのビルドバージョンを表示するには、コマンド行で \f2\-version\fP オプションを指定します。 -.LP -.nf -\f3 -.fl -idlj \-version -.fl -\fP -.fi - -.LP -.LP -バージョン情報は、コンパイラによって生成されたバインディング内にも書き込まれています。このオプションをコマンド行に指定すると、それ以外のオプションを指定しても、すべて無視されます。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -\-d symbol -このオプションは、IDL ファイルに次のような行を追加した場合と等価です。 -.nf -\f3 -.fl -#define \fP\f4symbol\fP\f3 -.fl -\fP -.fi -.TP 3 -\-emitAll -#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 が指定されたものと見なされます。 -.TP 3 -\-i include\-path -デフォルトでは、インクルードファイルはカレントディレクトリから検索されます。このオプションを指定すると、ほかのディレクトリを追加できます。 -.TP 3 -\-keep -生成されるファイルがすでに存在している場合は、そのファイルが上書きされません。デフォルトでは、上書きされます。 -.TP 3 -\-noWarn -警告メッセージを表示しないようにします。 -.TP 3 -\-oldImplBase -v1.4 より前の JDK ORB と互換性のあるスケルトンを生成します。デフォルトでは、POA 継承モデルのサーバー側バインディングが生成されます。このオプションを指定すると、\f2ImplBase\fP 継承モデルのクラスであるサーバー側バインディングが生成されるので、古いバージョンの Java プログラミング言語との下位互換性が得られます。 -.TP 3 -\-pkgPrefix type prefix -\f2type\fP がファイルスコープで検出された場合は、その型に対して生成されるすべてのファイルについて、生成される Java パッケージ名に \f2prefix\fP という接頭辞が付加されます。\f2type\fP は、トップレベルモジュールの単純名か、どのモジュールよりも外側で定義された IDL 型の単純名のどちらかです。 -.TP 3 -\-pkgTranslate type package -識別子の中にモジュール名 type が検出されると、生成される Java パッケージ内のすべてのファイルについて、識別子の中のその名前が package で置き換えられます。最初に \f2pkgPrefix\fP を変更します。\f2type\fP は、トップレベルのモジュール、またはすべてのモジュールの外部で定義された IDL 型の単純名です。そして、完全なパッケージ名に正確に一致しなければなりません。 -.LP -1 つの識別子の中で複数の変換がマッチする場合は、もっとも長いマッチが選ばれます。たとえば、次のような引数が指定されている場合は、 -.nf -\f3 -.fl - \-pkgTranslate foo bar \-pkgTranslate foo.baz buzz.fizz -.fl -\fP -.fi -.LP -次のような変換が実施されます。 -.nf -\f3 -.fl -foo => bar -.fl -foo.boo => bar.boo -.fl -foo.baz => buzz.fizz -.fl -foo.baz.bar => buzz.fizz.bar -.fl -\fP -.fi -.LP -次のパッケージ名を変換することはできません。 -.RS 3 -.TP 2 -o -\f2org\fP -.TP 2 -o -\f2org.omg\fP、または \f2org.omg\fP のサブパッケージ +.if n \{\ .RE -.LP -これらのパッケージ名を変換しようとすると、互換性のないコードが生成されます。そして、\f2\-pkgTranslate\fP のあとの最初の引数としてそれらのパッケージを使用すると、エラーとして扱われます。 -.TP 3 -\-skeletonName xxx%yyy -\f2xxx%yyy\fP が、スケルトンに名前を付けるパターンとして使用されます。デフォルトは次のとおりです。 -.RS 3 -.TP 2 -o -\f2POA\fP 基底クラスの場合は「%POA」(\f2\-fserver\fP または \f2\-fall\fP) -.TP 2 -o -\f2oldImplBase\fP クラスの場合は「_%ImplBase」(\f2\-oldImplBase\fP かつ (\f2\-fserver\fP または \f2\-fall\fP)) +.\} +.PP +前の構文は次と同等です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-fclient My\&.idl +.fi +.if n \{\ .RE -.TP 3 -\-td dir -出力ディレクトリとして、カレントディレクトリではなく、\f2dir\fP が使用されます。 -.TP 3 -\-tieName xxx%yyy -このパターンに従って Tie に名前が付けられます。デフォルトは次のとおりです。 -.RS 3 -.TP 2 -o -\f2POA\fP Tie 基底クラスの場合は「%POATie」(\f2\-fserverTie\fP または \f2\-fallTie\fP) -.TP 2 -o -\f2oldImplBase\fP Tie クラスの場合は「%_Tie」(\f2\-oldImplBase\fP かつ (\f2\-fserverTie\fP または \f2\-fallTie\fP)) +.\} +.PP +次の例では、サーバー側バインディングを生成し、クライアント側バインディングおよびスケルトンを含めており、これらはすべて、POA (継承モデル)です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlg \-fserver My\&.idl +.fi +.if n \{\ .RE -.TP 3 -\-nowarn, \-verbose -冗長モードになります。 -.TP 3 -\-version -バージョン情報を表示して終了します。 +.\} +.PP +クライアント側とサーバー側の両方のバインディングを生成する場合は、次のコマンド(どれも等価)のうちの1つを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-fclient \-fserver My\&.idl +idlj \-fall My\&.idl +.fi +.if n \{\ .RE - -.LP -各オプションの詳細については、「説明」のセクションを参照してください。 -.SH "制約" -.LP -.RS 3 -.TP 2 -o -グローバルスコープ内のエスケープされた識別子は、IDL プリミティブ型の \f2Object\fP または \f2ValueBase\fP と同じ綴りであってはなりません。これらの識別子については、シンボルテーブルが事前にロードされており、これらの識別子の再定義を許可すると元の定義が上書きされてしまいます。これは、おそらく恒久的な制約です。 -.TP 2 -o -\f2fixed\fP という IDL 型はサポートされていません。 +.\} +.PP +サーバー側で可能なモデルは2つあります。移殖可能サーバント継承モデルとTieモデルです。Tie委譲モデルを参照してください。 +.if n \{\ +.sp +.\} +.RS 4 +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 +.br +.ps +1 +\fB移殖可能サーバント継承モデル\fR +.ps -1 +.br +.PP +デフォルトのサーバー側のモデルは、移殖可能サーバント継承モデルです。\fIMy\&.idl\fR内で\fIMy\fRインタフェースが定義されている場合は、\fIMyPOA\&.java\fRというファイルが生成されます。\fIMy\fRインタフェースの実装を提供する必要があり、\fIMy\fRインタフェースは\fIMyPOA\fRクラスから継承する必要があります。\fIMyPOA\&.java\fRは、http://docs\&.oracle\&.com/javase/8/docs/api/org/omg/PortableServer/Servant\&.htmlにある +\fIorg\&.omg\&.PortableServer\&.Servant\fRクラスを拡張するストリームベースのスケルトンです。 +.PP +\fIMy\fRインタフェースは、スケルトンが実装するIDLインタフェースに関連付けられている\fIcallHandler\fRインタフェースと操作インタフェースを実装します。 +.PP +ポータブル・オブジェクト・アダプタ(POA)の\fIPortableServer\fRモジュールは、ネイティブの\fIServant\fR型を定義します。http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/POA\&.htmlにある +ポータブル・オブジェクト・アダプタ(POA)を参照してください。 +.PP +Javaプログラミング言語では、\fIServant\fR型はJavaの\fIorg\&.omg\&.PortableServer\&.Servant\fRクラスにマップされます。これは、すべてのPOAサーバント実装のベース・クラスとして機能し、アプリケーション・プログラマが呼び出すことのできるいくつかのメソッド、およびPOAによって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドを提供します。 +.PP +継承モデルのもう1つのオプションは、\fI\-oldImplBase\fRフラグを使用して、Java SE 1\&.4より前のリリースのJavaプログラミング言語と互換性のあるサーバー側バインディングを生成することです。\-\fIoldImplBase\fRフラグは非標準で、これらのAPIは非推奨です。このフラグを使用するのは、Java SE 1\&.3で記述された既存のサーバーとの互換性が必要な場合のみです。その場合、既存のmakeファイルを変更して、\fI\-oldImplBase\fRフラグを\fIidlj\fRコンパイラに追加する必要があります。それ以外の場合、POAベースのサーバー側マッピングが生成されます。下位互換性のあるサーバー側バインディングを生成するには、次を実行します。 +.sp .5v .RE - -.LP -.SH "既知の問題点" -.LP -.RS 3 -.TP 2 -o -グローバル識別子についてインポートが生成されません。予期されないローカル impl を呼び出すと、例外を受け取ります。 しかし、その原因は、\f2ServerDelegate\fP DSI コード内の \f2NullPointerException\fP にあるようです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-fclient \-fserver \-oldImplBase My\&.idl +idlj \-fall \-oldImplBase My\&.idl +.fi +.if n \{\ .RE - -.LP +.\} +.PP +\fIMy\&.idl\fR内で\fIMy\fRインタフェースが定義されている場合は、\fI_MyImplBase\&.java\fRというファイルが生成されます。\fIMy\fRインタフェースの実装を提供する必要があり、\fIMy\fRインタフェースは\fI_MyImplBase\fRクラスから継承する必要があります。 +.if n \{\ +.sp +.\} +.RS 4 +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 +.br +.ps +1 +\fBTie委譲モデル\fR +.ps -1 +.br +.PP +もう1つのサーバー側モデルは、Tieモデルと呼ばれるものです。このサーバー側モデルは、委譲モデルです。Tieとスケルトンを同時に生成することはできないため、それらは別々に生成する必要があります。次のコマンドによって、Tieモデル用のバインディングが生成されます。 +.sp .5v +.RE +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-fall My\&.idl +idlj \-fallTIE My\&.idl +.fi +.if n \{\ +.RE +.\} +.PP +\fIMy\fRインタフェースの場合、2番目のコマンドにより、\fIMyPOATie\&.java\fRが生成されます。\fIMyPOATie\fRクラスへのコンストラクタは、delegateを取ります。この例では、デフォルトのPOAモデルを使用しているため、コンストラクタにもPOAが必要です。delegateに対して実装を提供する必要がありますが、この実装は\fIMyOperations\fRインタフェースから継承する必要があるのみで、その他のクラスから継承する必要はありません。これをORBと一緒に使用するには、たとえば次のように\fIMyPOATie\fRクラス内で実装をラップする必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +ORB orb = ORB\&.init(args, System\&.getProperties()); +// Get reference to rootpoa & activate the POAManager +POA rootpoa = (POA)orb\&.resolve_initial_references("RootPOA"); +rootpoa\&.the_POAManager()\&.activate(); + +// create servant and register it with the ORB +MyServant myDelegate = new MyServant(); +myDelegate\&.setORB(orb); + +// create a tie, with servant being the delegate\&. +MyPOATie tie = new MyPOATie(myDelegate, rootpoa); + +// obtain the objectRef for the tie +My ref = tie\&._this(orb); +.fi +.if n \{\ +.RE +.\} +.PP +他の実装から継承する必要がある場合、標準の継承モデルではなくTieモデルを使用することもできます。Javaの場合は、インタフェースの継承の個数に制限はありませんが、クラスの継承に使用できるスロットは1つのみです。継承モデルを使用した場合は、そのスロットが占有されます。Tieモデルを使用すると、そのスロットが使用されず、ユーザーが独自の目的で使用できます。この方法には、間接性のレベルが1つ導入されるという短所があります。メソッドを呼び出すときに、余分なメソッド呼出しが1回発生します。 +.PP +サーバー側の生成の場合、Java SE 1\&.4より前のバージョンのJava言語にマッピングするIDLのバージョンと互換性のある、Tieモデルのバインディングです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-oldImplBase \-fall My\&.idl +idlj \-oldImplBase \-fallTIE My\&.idl +.fi +.if n \{\ +.RE +.\} +.PP +\fIMy\fRインタフェースの場合、これにより、\fIMy_Tie\&.java\fRが生成されます。\fIMy_Tie\fRクラスへのコンストラクタは、\fIimpl\fRオブジェクトを取ります。\fIimpl\fRに対して実装を提供する必要がありますが、その実装は\fIHelloOperations\fRインタフェースから継承する必要があるのみで、その他のクラスから継承する必要はありません。しかし、これをORBと一緒に使用するには、たとえば次のように\fIMy_Tie\fR内で実装をラップする必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +ORB orb = ORB\&.init(args, System\&.getProperties()); + +// create servant and register it with the ORB +MyServant myDelegate = new MyServant(); +myDelegate\&.setORB(orb); + +// create a tie, with servant being the delegate\&. +MyPOATie tie = new MyPOATie(myDelegate); + +// obtain the objectRef for the tie +My ref = tie\&._this(orb); +.fi +.if n \{\ +.RE +.\} +.SS "発行されたファイルの代替位置の指定" +.PP +発行されたファイルを現在のディレクトリ以外のディレクトリに置くには、\fIi\fR\fIdlj \-td /altdir My\&.idl\fRのコマンドでコンパイラを呼び出します。 +.PP + +\fIMy\fRインタフェースの場合、バインディングは、\fI\&./My\&.java\fRではなく、\fI/altdir/My\&.java\fRなどに発行されます。 +.SS "インクルード・ファイルの代替位置の指定" +.PP +\fIMy\&.idl\fRファイルが別の\fIidl\fRファイルである\fIMyOther\&.idl\fRをインクルードする場合、コンパイラでは、\fIMyOther\&.idl\fRファイルがローカル・ディレクトリに存在することを前提としています。たとえば、それが\fI/includes\fRにある場合は、次のようなコマンドでコンパイラを呼び出します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-i /includes My\&.idl +.fi +.if n \{\ +.RE +.\} +.PP +たとえば、\fI/moreIncludes\fRにある\fIAnother\&.idl\fRも\fIMy\&.idl\fRにインクルードされているのであれば、次のようなコマンドでコンパイラを呼び出します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-i /includes \-i /moreIncludes My\&.idl +.fi +.if n \{\ +.RE +.\} +.PP +このような形式の\fIinclude\fRは長くなるため、インクルード・ファイルを検索する場所をコンパイラに指示するための別の方法が用意されています。この方法は、環境変数の考え方と似ています。\fICLASSPATH\fR変数に一覧表示されているディレクトリ内にidl\&.configという名前のファイルを作成します。その\fIidl\&.config\fRの中に、次のような形式の行を入れます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +includes=/includes;/moreIncludes +.fi +.if n \{\ +.RE +.\} +.PP +コンパイラは、このファイルを検索し、インクルード・リストを読み込みます。この例では、ディレクトリの間の区切り文字はセミコロン(;)になっています。この区切り文字は、プラットフォームによって異なります。Windowsプラットフォームではセミコロンを使用し、UNIXプラットフォームではコロンを使用するなどです。 +.SS "インクルード・ファイルに対するバインディングの発行" +.PP +デフォルトでは、コマンドラインに指定した\fIidl\fRファイルで定義されているインタフェースや構造体などについてのみ、Javaバインディングが生成されます。インクルードされたファイルで定義されている型については生成されません。たとえば、次の2つの\fIidl\fRファイルについて考えてみます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +My\&.idl file: + +#include +interface My +{ +}; + +MyOther\&.idl file: + +interface MyOther +{ +}; +.fi +.if n \{\ +.RE +.\} +.PP +デフォルトのルールに関して警告があります。グローバル・スコープに表示される\fI#include\fR文は、前述のとおりに処理されます。これらの\fI#include\fR文は、インポート文と見なすことができます。囲まれたスコープ内に表示される\fI#include\fR文は、本当の意味での\fI#include\fR文として処理されます。つまり、インクルードされたファイルにあるコードが、元のファイルにそのまま表示されているかのように処理され、それに対してJavaバインディングが発行されます。次はその例です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +My\&.idl file: + +#include +interface My +{ + #include +}; + +MyOther\&.idl file: + +interface MyOther +{ +}; + +Embedded\&.idl + +enum E {one, two, three}; +.fi +.if n \{\ +.RE +.\} +.PP +\fI idlj My\&.idl \fRを実行して、Javaファイルの次のリストを生成します。インポート文とみなされる\fI#include\fRに定義されていたため、\fIMyOther\&.java\fRは生成されませんでした。ただし、本当の意味での\fI#include\fRで定義されていたため、\fIE\&.java\fRは生成されました。\fIEmbedded\&.idl\fRファイルが\fIMy\fRインタフェースのスコープ内にインクルードされているため、\fIMy\fRのスコープ内(つまり、\fIMyPackage\fR内)に生成されています。\fI\-emitAll\fRフラグを使用した場合、インクルードされたすべてのファイルにあるすべての型が発行されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\&./MyHolder\&.java +\&./MyHelper\&.java +\&./_MyStub\&.java +\&./MyPackage +\&./MyPackage/EHolder\&.java +\&./MyPackage/EHelper\&.java +\&./MyPackage/E\&.java +\&./My\&.java +.fi +.if n \{\ +.RE +.\} +.SS "パッケージの接頭辞の挿入" +.PP +ABCという名前の会社のために作業していて、次のようなIDLファイルを構築したとしましょう。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Widgets\&.idl file: + +module Widgets +{ + interface W1 {\&.\&.\&.}; + interface W2 {\&.\&.\&.}; +}; +.fi +.if n \{\ +.RE +.\} +.PP +IDL\-to\-Javaコンパイラを介してこのファイルを実行した場合、W1およびW2に対するJavaバインディングは、\fIWidgets\fRパッケージ内に格納されます。業界の慣例によると、会社のパッケージは、\fIcom\&.\fRという名前のパッケージ内に置くことになっています。この慣例に従うには、パッケージ名を\fIcom\&.abc\&.Widgets\fRにする必要があります。このパッケージ接頭辞をWidgetsモジュールに付加するには、次のコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-pkgPrefix Widgets com\&.abc Widgets\&.idl +.fi +.if n \{\ +.RE +.\} +.PP +Widgets\&.idlをインクルードしているIDLファイルがある場合は、そのコマンドにも\fI\-pkgPrefix\fRフラグが必要です。このフラグを指定しないと、そのIDLファイルは、\fIcom\&.abc\&.Widgets\fRパッケージではなく、\fIWidgets\fRパッケージを検索することになります。 +.PP +接頭辞が必要なパッケージがいくつもある場合は、前述のidl\&.configファイルで接頭辞を指定するのが簡単です。パッケージ接頭辞の各行は、\fIPkgPrefix\&.=\fRの形式である必要があります。前述の例の行では、\fIPkgPrefix\&.Widgets=com\&.abc\fRになります。このオプションは、リポジトリIDには影響しません。 +.SS "コンパイル前のシンボルの定義" +.PP +コンパイル用のシンボルがIDLファイル内で定義されていない場合は、そのシンボルを定義する必要があります。これは、たとえば、バインディング内にデバッグ・コードを組み入れるときに使用します。コマンド\fIidlj \-d MYDEF My\&.idl \fRは、My\&.idl内に行\fI#define MYDEF\fRを配置した場合と同等になります。 +.SS "既存のバインディングの保持" +.PP +Javaバインディング・ファイルがすでに存在する場合は、\fI\-keep\fRフラグを指定すると、コンパイラによる上書きを回避できます。デフォルトでは、すでに存在するかどうかにかかわらず、すべてのファイルが生成されます。これらのファイルをカスタマイズした場合(ただし、それらの内容が正確であるとき以外はカスタマイズは避ける)、\fI\-keep\fRオプションは有用です。コマンド\fIidlj \-keep My\&.idl\fRは、すでに存在しないすべてのクライアント側バインディングを発行します。 +.SS "コンパイルの進捗状況の表示" +.PP +IDL\-to\-Javaコンパイラは、実行の各段階で状態メッセージを生成します。\fI\-v\fRオプションを使用して、\fIidlj \-v My\&.idl\fRのような冗長モードをアクティブ化します。 +.PP +デフォルトでは、コンパイラは冗長モードでは実行されません。 +.SS "バージョン情報の表示" +.PP +IDL\-to\-Javaコンパイラのビルド・バージョンを表示するには、コマンドライン\fIidlj \-version\fRで\fI\-version\fRオプションを指定します。 +.PP +バージョン情報は、コンパイラによって生成されたバインディング内にも書き込まれています。このオプションをコマンドラインに指定すると、それ以外のオプションを指定しても、すべて無視されます。 +.SH "オプション" +.PP +\-d \fIsymbol\fR +.RS 4 +このオプションは、IDLファイルに次のような行を追加した場合と等価です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +#define \fIsymbol\fR +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-demitAll +.RS 4 +\fI#include\fRファイル内で定義されているものも含めて、すべての型を発行します。 +.RE +.PP +\-fside +.RS 4 +発行するバインディングを定義します。\fIside\fRパラメータには、\fIclient\fR、\fIserver\fR、\fIserverTIE\fR、\fIall\fRまたは\fIallTIE\fRを指定できます。\fI\-fserverTIE\fRまたは\fI\-fallTIE\fRオプションを指定すると、委譲モデル・スケルトンが発行されます。フラグを指定しない場合、\fI\-fclient\fRにデフォルト設定されます。 +.RE +.PP +\-i \fIinclude\-path\fR +.RS 4 +デフォルトでは、インクルード・ファイルは現在のディレクトリから検索されます。このオプションを指定すると、他のディレクトリを追加できます。 +.RE +.PP +\-i \fIkeep\fR +.RS 4 +生成されるファイルがすでに存在している場合は、そのファイルが上書きされません。デフォルトでは、上書きされます。 +.RE +.PP +\-noWarn +.RS 4 +警告メッセージを表示しないようにします。 +.RE +.PP +\-oldImplBase +.RS 4 +1\&.4より前のJDK ORBと互換性のあるスケルトンを生成します。デフォルトでは、POA継承モデルのサーバー側バインディングが生成されます。このオプションを指定すると、\fIImplBase\fR継承モデルのクラスであるサーバー側バインディングが生成されるので、以前のリリースのJavaプログラミング言語との下位互換性が得られます。 +.RE +.PP +\-pkgPrefix \fItype\fR \fIprefix\fR +.RS 4 +\fItype\fRがファイル・スコープで検出された場合は、その型に対して生成されるすべてのファイルについて、生成されるJavaパッケージ名に\fIprefix\fRという接頭辞が付加されます。typeは、トップレベル・モジュールの単純名か、どのモジュールよりも外側で定義されたIDL型の単純名のどちらかです。 +.RE +.PP +\-pkgTranslate \fItype\fR \fIpackage\fR +.RS 4 +識別子の中にモジュール名typeが検出されると、生成されるJavaパッケージ内のすべてのファイルについて、識別子の中のその名前がpackageで置き換えられます。最初に\fIpkgPrefix\fRの変更が行われます。typeの値は、トップレベルのモジュールの単純名、またはすべてのモジュールの外部で定義されたIDL型の単純名で、完全なパッケージ名に正確に一致する必要があります。 +.sp +複数の変換が識別子に一致する場合、次の例に示すように、最も長い一致が選択されます。 +.sp +\fBコマンド\fR: +.sp +.if n \{\ +.RS 4 +.\} +.nf +pkgTranslate type pkg \-pkgTranslate type2\&.baz pkg2\&.fizz +.fi +.if n \{\ +.RE +.\} +\fB結果の変換\fR: +.sp +.if n \{\ +.RS 4 +.\} +.nf +type => pkg +type\&.ext => pkg\&.ext +type\&.baz => pkg2\&.fizz +type2\&.baz\&.pkg => pkg2\&.fizz\&.pkg +.fi +.if n \{\ +.RE +.\} +パッケージ名\fIorg\fR、\fIorg\fR\&.o\fImg\fR、または\fIorg\&.omg\fRのサブパッケージは、変換できません。これらのパッケージ名を変換しようとすると、互換性のないコードが生成され、\fI\-pkgTranslate\fRの後の最初の引数としてそれらのパッケージを使用すると、エラーとして扱われます。 +.RE +.PP +\-skeletonName \fIxxx%yyy\fR +.RS 4 +\fIxxx%yyy\fRが、スケルトンに名前を付けるパターンとして使用されます。デフォルトは次のとおりです。\fIPOA\fRベース・クラスの場合は\fI%POA\fR +(\fI\-fserver\fRまたは\fI\-fall\fR)、\fIoldImplBase\fRクラスの場合は\fI_%ImplBase\fR +(\-\fIoldImplBase\fR)および(\fI\-fserver\fRまたは\fI\-fall\fR))。 +.RE +.PP +\-td \fIdir\fR +.RS 4 +出力ディレクトリとして、現在のディレクトリではなく、\fIdir\fRが使用されます。 +.RE +.PP +\-tieName \fIxxx%yyy\fR +.RS 4 +パターンに従って、\fIxxx%yyy\fRを使用します。デフォルトは次のとおりです。\fIPOA\fRベース・クラスの場合は\fI%POA\fR +(\fI\-fserverTieまたは\-fallTie\fR)、\fIoldImplBase\fR +tieクラスの場合は\fI_%Tie\fR +(\-\fIoldImplBase\fR)および(\fI\-fserverTie\fRまたは\fI\-fallTie\fR))。 +.RE +.PP +\-nowarn、\-verbose +.RS 4 +リリース情報を表示して終了します。 +.RE +.PP +\-version +.RS 4 +リリース情報を表示して終了します。 +.RE +.SH "制限事項" +.PP +グローバル・スコープ内のエスケープされた識別子は、IDLプリミティブ型の\fIObject\fRまたは\fIValueBase\fRと同じ綴りにしないでください。これは、シンボル表がこれらの識別子でプリロードされているためです。これらの再定義を許可すると、元の定義が上書きされます。これは、おそらく恒久的な制約です。 +.PP +\fIfixed\fRというIDL型はサポートされていません。 +.SH "既知の問題" +.PP +グローバル識別子についてインポートが生成されません。予期されないローカル\fIimpl\fRオブジェクトを呼び出すと、例外を受け取ります。しかし、その原因は、\fIServerDelegate\fR +DSIコード内の\fINullPointerException\fRにあるようです。 +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jar.1 b/jdk/src/linux/doc/man/ja/jar.1 index 0ce57f3ee56..dc1fc5869f7 100644 --- a/jdk/src/linux/doc/man/ja/jar.1 +++ b/jdk/src/linux/doc/man/ja/jar.1 @@ -1,601 +1,517 @@ -." 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 -." 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 jar 1 "07 May 2011" - -.LP -.SH "名前" -jar \- Java ARchive ツール -.LP -\f3jar\fP は複数のファイルを 1 つの JAR アーカイブファイルに結合します。 -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -コマンド行引数ファイル -.TP 2 -o -例 -.TP 2 -o -関連項目 +'\" t +.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jar +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jar" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jar \- Java Archive (JAR)ファイルを操作します。 +.SH "概要" +JARファイルの作成 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjar c\fR[\fIefmMnv0\fR] [\fIentrypoint\fR] [\fIjarfile\fR] [\fImanifest\fR] [\fI\-C\fR \fIdir\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.] +.fi +.if n \{\ .RE - -.LP -.SH "形式" -.LP -.RS 3 -.TP 3 -JAR ファイルの作成 -\f4jar c\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP -.TP 3 -JAR ファイルの更新 -\f4jar u\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP -.TP 3 -JAR ファイルの抽出 -\f4jar x\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP -.TP 3 -JAR ファイルの内容の表形式による一覧表示 -\f4jar t\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP -.TP 3 -JAR ファイルへのインデックスの追加 -\f4jar i\fP \f2jarfile\fP \f2[\-J\fP\f2option\fP\f2]\fP +.\} +JARファイルの更新 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjar u\fR[\fIefmMnv0\fR] [\fIentrypoint\fR] [\fIjarfile\fR] [\fImanifest\fR] [\fI\-C\fR \fIdir\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.] +.fi +.if n \{\ .RE - -.LP -.LP -説明 -.LP -.RS 3 -.TP 3 -cuxtiv0Mmfe -\f2jar\fP コマンドを制御するオプション -.TP 3 -jarfile -作成 (\f2c\fP)、更新 (\f2u\fP)、抽出 (\f2x\fP)、または目次表示 (\f2t\fP) の対象となる JAR ファイル。\f2f\fP オプションとファイル名 \f2jarfile\fP とがペアになります。 つまり、片方を記述すれば、もう一方も記述する必要があります。 \f2f\fP と \f2jarfile\fP を省略すると、標準入力から「JAR ファイル」が取得されるか (x および t の場合)、標準出力へ「JAR ファイル」が送信されます(c および u の場合)。 -.TP 3 -inputfiles -\f2jarfile\fP に結合されるか (c および u の場合)、\f2jarfile\fP から抽出 (x の場合) または一覧表示 (t の場合) される、空白で区切られたファイルまたはディレクトリ。すべてのディレクトリは再帰的に処理されます。このファイルは、オプション \f20\fP (ゼロ) を使用しないかぎり圧縮されます。 -.TP 3 -manifest -JAR ファイルの MANIFEST.MF 内に含めるべき \f2name\fP\f2:\fP \f2value\fP ペアが含まれている既存のマニフェストファイル。\f2m\fP オプションとファイル名 \f2manifest\fP とがペアになります。つまり、片方を記述すれば、もう一方も記述する必要があります。\f3m\fP、\f3f\fP、および \f3e\fP の出現順序は、\f2manifest\fP、\f2jarfile\fP、\f2entrypoint\fP の出現順序と一致する必要があります。 -.TP 3 -entrypoint -実行可能 JAR ファイル内にバンドルされたスタンドアロンアプリケーションのアプリケーションエントリポイントとして設定するクラスの名前。\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\f2\-\ dir\fP \f2inputfiles\fP のセットは複数使用できます。 -.TP 3 -\-Joption -Java 実行環境へ渡されるオプション。\f2\-J\fP と \f2option\fP の間には空白を入れないでください。 +.\} +JARファイルの抽出 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjar\fR \fIx\fR[\fIvf\fR] [\fIjarfile\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.] +.fi +.if n \{\ .RE - -.LP +.\} +JARファイルのコンテンツのリスト +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjar\fR \fIt\fR[\fIvf\fR] [\fIjarfile\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.] +.fi +.if n \{\ +.RE +.\} +JARファイルへの索引の追加 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjar\fR \fIi\fR \fIjarfile\fR [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.] +.fi +.if n \{\ +.RE +.\} .SH "説明" -.LP -\f3jar\fP ツールは複数のファイルを 1 つの JAR アーカイブファイルに結合します。\f3jar\fP は、ZIP および -.na -\f2ZLIB\fP @ -.fi -http://www.gzip.org/zlib/ 圧縮形式に基づく汎用のアーカイブおよび圧縮ツールです。ただし \f3jar\fP ツールの主な目的は、いくつかの Java アプレットやアプリケーションを 1 個のアーカイブに統合することです。アプレットやアプリケーションのコンポーネント (ファイル、イメージ、およびサウンド) が 1 つのアーカイブに結合されていると、Java エージェント (ブラウザなど) は、それらのコンポーネントを 1 回の HTTP トランザクションでダウンロードすることができ、コンポーネントごとに新しい接続を必要とすることがありません。これにより、ダウンロード時間が大幅に短縮されます。また、\f3jar\fP はファイルの圧縮も行うので、ダウンロード時間がさらに短縮されます。また、ファイル内の個々のエントリにアプレット作成者による署名を書き込めるので、配布元の認証が可能になります。jar ツールの構文は、\f2tar\fP コマンドの構文とほぼ同じです。\f3JAR\fP アーカイブは、圧縮されているかどうかにかかわらず、クラスパスのエントリとして使用できます。 -.LP -複数のファイルを JAR ファイルへ結合する一般的な使用法は次のとおりです。 -.LP -.nf -\f3 -.fl -% jar cf myFile.jar *.class -.fl -\fP -.fi - -.LP -この例では、現在のディレクトリにあるクラス (.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 オプションを使って指定します。 -.LP -.nf -\f3 -.fl -% jar cmf myManifestFile myFile.jar *.class -.fl -\fP -.fi - -.LP -既存のマニフェストファイルは改行文字で終わっている必要があります。マニフェストファイルが改行文字で終わっていないと、\f3jar\fP はその最終行を解析しません。 -.br - -.LP -.br - -.LP -\f3注:\ \fPコマンド行に \f2cmf\fP ではなく \f2cfm\fP が指定された jar コマンド (m と \-f オプションの順番を逆にする) の場合、\f3jar\fP コマンド行にまず JAR アーカイブの名前を指定し、続いてマニフェストファイルの名前を指定する必要があります。 次に例を示します。 -.nf -\f3 -.fl -% jar cfm myFile.jar myManifestFile *.class -.fl -\fP -.fi - -.LP -マニフェストは、RFC822 ASCII 形式で規定されたテキスト形式であるため、マニフェストファイルの内容を簡単に表示および編集できます。 -.LP -JAR ファイルからファイルを抽出する場合は、 \f2x\fP を使用します。 -.LP -.nf -\f3 -.fl -% jar xf myFile.jar -.fl -\fP -.fi - -.LP -.LP -jar ファイルから個別のファイルを抽出する場合は、そのファイル名を指定します。 -.LP -.nf -\f3 -.fl -% jar xf myFile.jar foo bar -.fl -\fP -.fi - -.LP -.LP -JDK のバージョン 1.3 以降から、\f2jar\fP ユーティリティーで -.na -\f2JarIndex\fP @ -.fi -http://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 -.fl -% jar i main.jar -.fl -\fP -.fi - -.LP -.LP -この例では、 \f2INDEX.LIST\fP ファイルが \f2main.jar\fP の \f2META\-INF\fP ディレクトリ内に挿入されます。 -.br -.br -このファイルに格納されている情報を使用して、アプリケーションのクラスローダーは、効率的にクラスをロードします。インデックスファイルに位置情報を格納する方法の詳細は、「JarIndex 仕様」を参照してください。 -.br -.br -ディレクトリをコピーするには、まず \f2dir1\fP 内のファイルを圧縮して \f2stdout\fP に出力し、続いて \f2stdin\fP から抽出して \f2dir2\fP に出力します (\f2\-f\fP オプションはどちらの \f2jar\fP コマンドでも省略)。 -.LP -.nf -\f3 -.fl -% (cd dir1; jar c .)| (cd dir2; jar x) -.fl -\fP -.fi - -.LP -.LP -\f2jar\fP を使用して JAR ファイルや JAR マニフェストファイルを操作するサンプルコマンドを確認したい場合は、後述の「例」を参照してください。また、「 -.na -\f2Java Tutorial\fP @ -.fi -http://download.oracle.com/javase/tutorial/deployment/jar」の JAR コースも参照してください。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -c -f が指定された場合は \f2jarfile\fP という名前の \f2新しい\fP アーカイブファイルを \f2作成し、\fP f と \f2jarfile\fP が省略された場合は標準出力に情報を出力します。\f2inputfiles\fP で指定されたファイルとディレクトリを、このアーカイブに追加します。 -.TP 3 -u -f が指定されている場合に、既存ファイル \f2jarfile\fP を \f2更新する目的で、\fP \f2inputfiles\fP に指定されたファイルやディレクトリを追加します。次に例を示します。 -.nf -\f3 -.fl -jar uf foo.jar foo.class -.fl -\fP -.fi -上のコマンドは、ファイル \f2foo.class\fP を既存の JAR ファイル \f2foo.jar\fP に追加します。次の例に示すように、\f2\-u\fP オプションは、マニフェストエントリも更新できます。 -.nf -\f3 -.fl -jar umf manifest foo.jar -.fl -\fP -.fi -\f2foo.jar\fP マニフェストをマニフェスト内の \f2name:value\fP ペアで更新します。 -.TP 3 -x -f が指定された場合は \f2jarfile\fP \f2から\fP 、 \f2f\fP と \f2jarfile\fP が省略された場合は標準入力から、ファイルやディレクトリを抽出します。\f2inputfiles\fP が指定されている場合は、その指定したファイルとディレクトリだけが抽出されます。指定されていなければ、すべてのファイルとディレクトリが抽出されます。抽出されたファイルの日時は、アーカイブ内で設定されたものです。 -.TP 3 -t -f が指定された場合は \f2jarfile\fP \f2から\fP 、 \f2f\fP と \f2jarfile\fP が省略された場合は標準入力から、目次を表示します。\f2inputfiles\fP が指定されている場合は、その指定したファイルとディレクトリだけが一覧表示されます。指定されていなければ、すべてのファイルとディレクトリが一覧表示されます。 -.TP 3 -i -指定された \f2jarfile\fP と、それに依存する JAR ファイルについて、インデックス情報を生成します。たとえば、 -.nf -\f3 -.fl -jar i foo.jar -.fl -\fP -.fi -.LP -上のコマンドは、\f2foo.jar\fP 内に \f2INDEX.LIST\fP ファイルを生成します。 このファイルには、\f2foo.jar\fP と、\f2foo.jar\fP の \f2Class\-Path\fP 属性に指定されたすべての JAR ファイルに入っている各パッケージの位置情報が書き込まれています。インデックスの例を参照してください。 -.TP 3 -f -次の各処理の対象となるファイル \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 による圧縮を使用せずに、保存します。 -.TP 3 -M -マニフェストファイルエントリを作成しません (c および u の場合)。または、マニフェストファイルエントリが存在する場合にそれを削除します (u の場合)。 -.TP 3 -m -\f2META\-INF/MANIFEST.MF\fP のファイルで指定したマニフェストファイル \f2manifest\fP の \f2name : value\fP の属性ペアを組み込みます。 \f2jar\fP は、すでに同じ名前で存在しないかぎり、その \f2name:value\fP ペアを追加します。同じ名前で存在する場合、 \f2jar\fP はその値を更新します。 -.LP -コマンド行で、\f3m\fP と \f3f\fP の文字は、\f2manifest\fP と \f2jarfile\fP の入力順序と同じ順序で記述する必要があります。たとえば、次のようにして使います。 -.nf -\f3 -.fl -jar cmf myManifestFile myFile.jar *.class -.fl -\fP -.fi -デフォルトのマニフェストには含まれないマニフェストに、特別な目的の \f2name\ :\ value\fP の属性ペアを追加できます。たとえば、ベンダー情報、バージョン情報、パッケージシーリング、または JAR にバンドルされたアプリケーションを実行するための属性を追加できます。「Java Tutorial」の「 -.na -\f2JAR Files\fP @ -.fi -http://download.oracle.com/javase/tutorial/deployment/jar/」コースを参照し、 \f4\-m\fP オプションの使用例を確認してください。 -.TP 3 -e -実行可能 JAR ファイル内にバンドルされたスタンドアロンアプリケーションのアプリケーションエントリポイントとして、\f2entrypoint\fP を設定します。このオプションを使用すると、マニフェストファイル内の \f2Main\-Class\fP 属性値が作成または上書きされます。このオプションは、JAR ファイルの作成中または更新中に使用できます。このオプションを使えば、マニフェストファイルを編集または作成することなしに、アプリケーションのエントリポイントを指定できます。 -.br -.br -たとえば、次のコマンドでは \f2Main.jar\fP が作成されますが、その際、マニフェスト内の \f2Main\-Class\fP 属性値は \f2Main\fP に設定されます。 -.nf -\f3 -.fl -jar cfe Main.jar Main Main.class -.fl -\fP -.fi -.LP -次のコマンドを実行すると java ランタイムから直接このアプリケーションを起動できます。 -.nf -\f3 -.fl -java \-jar Main.jar -.fl -\fP -.fi -あるパッケージ内にエントリポイントのクラス名が含まれている場合、ドット (「.」) 、スラッシュ (「/」) のいずれかの文字をその区切り文字として使用できます。たとえば、 \f2Main.class\fP が \f2foo\fP という名前のパッケージに含まれている場合、エントリポイントは次のようにして指定できます。 -.nf -\f3 -.fl -jar \-cfe Main.jar foo/Main foo/Main.class -.fl -\fP -.fi -または -.nf -\f3 -.fl -jar \-cfe Main.jar foo.Main foo/Main.class -.fl -\fP -.fi -\f3注:\ \fP \f2\-m\fP オプションと \f2\-e\fP オプションの両方を同時に指定した場合、指定したマニフェストにも \f2Main\-Class\fP 属性が含まれていれば、 \f2Main.class\fP の指定があいまいになってエラーや発生し、JAR の作成処理や更新処理が異常終了します。 -.LP -.TP 3 -\-C \ dir -\f2jar\fP コマンドの実行中に後続の \f2inputfiles\fP 引数を処理するときに、一時的にディレクトリを変更します (cd \f2dir\fP)。この処理は、UNIX の \f2tar\fP ユーティリティーの \f2\-C\fP オプションの機能に類似しています。 -.br -.br -たとえば、次のコマンドは、\f2classes\fP ディレクトリに移動し、そのディレクトリから \f2bar.class\fP を \f2foo.jar\fP に追加します。 -.nf -\f3 -.fl -jar uf foo.jar \-C classes bar.class -.fl -\fP -.fi -次のコマンドでは、\f2classes\fP ディレクトリに移動し、\f2classes\fP ディレクトリ内のすべてのファイルを \f2foo.jar\fP に追加します (jar ファイルには classes ディレクトリを作成しません)。次に元のディレクトリに戻ってから、\f2bin\fP ディレクトリに移動し、\f2xyz.class\fP を \f2foo.jar\fP に追加します。 -.nf -\f3 -.fl -jar uf foo.jar \-C classes .\-C bin xyz.class -.fl -\fP -.fi -\f2classes\fP にファイル \f2bar1\fP と \f2bar2\fP が格納されている場合に、 \f2jar tf foo.jar\fP 使用したときの JAR ファイルの中身を、次に示します。 -.nf -\f3 -.fl -META\-INF/ -.fl -META\-INF/MANIFEST.MF -.fl -bar1 -.fl -bar2 -.fl -xyz.class -.fl -\fP -.fi -.LP -.TP 3 -\-Joption -Java 実行環境に \f2option\fP を渡します。 \f2option\fP には、「Java アプリケーション起動ツール」のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、 \f4\-J\-Xmx48M\fP と指定すると、最大メモリーが 48M バイトに設定されます。\f2\-J\fP を使って背後の実行環境にオプションを渡すことはよく行われています。 +.PP +\fIjar\fRコマンドは、ZIPおよびZLIB圧縮形式に基づく汎用のアーカイブおよび圧縮ツールです。ただし、\fIjar\fRコマンドは、主にいくつかのJavaアプレットやアプリケーションを単一のアーカイブにパッケージ化するように設計されました。アプレットやアプリケーションのコンポーネント(ファイル、イメージ、およびサウンド)が1つのアーカイブに結合されていると、Javaエージェント(ブラウザなど)は、それらのコンポーネントを1回のHTTPトランザクションでダウンロードすることができ、コンポーネントごとに新しい接続が不要になります。これにより、ダウンロード時間が大幅に短縮されます。また、\fIjar\fRコマンドはファイルの圧縮も行うため、ダウンロード時間がさらに短縮されます。また、\fIjar\fRコマンドによって、ファイル内の個々のエントリにアプレット作成者による署名を書き込めるため、配布元の認証が可能になります。JARファイルは、圧縮されているかどうかにかかわらず、クラス・パスのエントリとして使用できます。 +.PP +\fIjar\fRコマンドの構文は、\fItar\fRコマンドの構文に似ています。必須の\fI操作の引数\fRの1つで定義された複数の操作モードがあります。他の引数は、操作の動作を変更する\fIオプション\fR、または操作を実行するために必要な\fIオペランド\fRを使用します。 +.SH "操作の引数" +.PP +\fIjar\fRコマンドを使用する場合は、次の操作の引数のいずれかを指定して実行される操作を選択する必要があります。コマンドラインで他の1文字のオプションと混在させることができますが、通常、操作の引数は指定される最初の引数です。 +.PP +c +.RS 4 +新しいJARアーカイブを作成します。 .RE - -.LP -.SH "コマンド行引数ファイル" -.LP -jar のコマンド行を短くしたり簡潔にしたりするために、jar コマンドに対する引数 (\-J オプションを除く) を含む 1 つ以上の \f2ファイルを\fP 指定することが \f2できます\fP 。これにより、任意の長さの jar コマンドを作成でき、オペレーティングシステムによるコマンド行の制限から解放されます。 -.LP -引数ファイルにはオプションとファイル名を含めることができます。ファイル内の各引数は、スペースまたは改行で区切ります。引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。ワイルドカード (*) は、通常ならばオペレーティングシステムシェルによってあらゆる文字に解釈されますが、この場合はそのようには解釈されません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、\f2\-J\fP オプションもサポートされていません。このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 -.LP -.LP -\f2jar\fP を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。 \f2jar\fP は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +.PP +i +.RS 4 +JARアーカイブの索引情報を生成します。 +.RE +.PP +t +.RS 4 +JARアーカイブのコンテンツをリストします。 +.RE +.PP +u +.RS 4 +JARアーカイブを更新します。 +.RE +.PP +x +.RS 4 +JARアーカイブからファイルを抽出します。 +.RE +.SH "オプション" +.PP +次のオプションを使用して、JARファイルを作成、更新、抽出または表示する方法をカスタマイズします。 +.PP +e +.RS 4 +\fIentrypoint\fRオペランドで指定されるクラスを、実行可能JARファイルにバンドルされるスタンドアロンJavaアプリケーションのエントリ・ポイントに設定します。このオプションを使用すると、マニフェスト・ファイル内の\fIMain\-Class\fR属性値が作成またはオーバーライドされます。\fIe\fRオプションは、JARファイルの作成時(\fIc\fR)または更新時(\fIu\fR)に使用できます。 +.sp +たとえば、次のコマンドでは、\fIMain\&.jar\fRアーカイブが\fIMain\&.class\fRファイルとともに作成されますが、その際、マニフェスト内の\fIMain\-Class\fR属性値は\fIMain\fRに設定されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jar cfe Main\&.jar Main Main\&.class +.fi +.if n \{\ +.RE +.\} +Java Runtime Environment (JRE)は、次のコマンドを実行して、このアプリケーションを直接呼び出すことができます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-jar Main\&.jar +.fi +.if n \{\ +.RE +.\} +あるパッケージ内にエントリ・ポイントのクラス名が含まれている場合、ドット(\&.)またはスラッシュ(/)のいずれかを区切り文字として使用できます。たとえば、\fIMain\&.class\fRが\fImydir\fRという名前のパッケージに含まれている場合、エントリ・ポイントは次のいずれかの方法で指定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jar \-cfe Main\&.jar mydir/Main mydir/Main\&.class +jar \-cfe Main\&.jar mydir\&.Main mydir/Main\&.class +.fi +.if n \{\ +.RE +.\} +.if n \{\ +.sp +.\} +.RS 4 +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 .br +.ps +1 +\fBNote\fR +.ps -1 .br -次の例で、 \f2classes.list\fP には、 \f2find\fP コマンドによって出力されたファイルの名前が格納されます。 -.LP +.TS +allbox tab(:); +l. +T{ +注意 +特定のマニフェストにも\fIMain\-Class\fR属性が含まれている場合に\fIm\fRオプションと\fIe\fRオプションの両方を同時に指定すると、\fIMain\-Class\fRの指定があいまいになります。このあいまいさによってエラーが発生し、\fIjar\fRコマンドの作成や更新の操作が終了します。 +T} +.TE +.sp 1 +.sp .5v +.RE +.RE +.PP +f +.RS 4 +\fIjarfile\fRオペランドで指定されたファイルを、作成(\fIc\fR)、更新(\fIu\fR)、抽出(\fIx\fR)または表示(\fIt\fR)されるJARファイルの名前に設定します。\fIf\fRオプションおよび\fIjarfile\fRオペランドを省略すると、\fIjar\fRコマンドに、\fIstdin\fRからのJARファイル名を受け入れるか(\fIx\fRおよび\fIt\fRの場合)、JARファイルを\fIstdout\fRに送信すること(\fIc\fRおよび\fIu\fRの場合)が指示されます。 +.RE +.PP +m +.RS 4 +(\fIMETA\-INF/MANIFEST\&.MF\fRのアーカイブにある) +\fIjar\fRコマンドのマニフェスト・ファイルの\fImanifest\fRオペランドで指定されたファイルから、属性の名前と値のペアを含めます。\fIjar\fRコマンドは、同じ名前のエントリがすでに存在する場合を除き、属性の名前と値をJARファイルに追加します。同じ名前のエントリがすでに存在する場合、\fIjar\fRコマンドは属性の値を更新します。\fIm\fRオプションは、JARファイルの作成時(\fIc\fR)または更新時(\fIu\fR)に使用できます。 +.sp +デフォルトのマニフェスト・ファイルには含まれないマニフェストに、特別な目的の名前\-値の属性ペアを追加できます。たとえば、ベンダー情報、リリース情報、パッケージ・シーリングを指定する属性、またはJARにバンドルされたアプリケーションを実行可能にするための属性を追加できます。\fIm\fRオプションの使用例は、http://docs\&.oracle\&.com/javase/tutorial/deployment/jar/index\&.htmlにある +プログラムのパッケージ化に関する項を参照してください。 +.RE +.PP +M +.RS 4 +マニフェスト・ファイル・エントリを作成しない(\fIc\fRおよび\fIu\fRの場合)か、またはマニフェスト・ファイル・エントリが存在する場合は削除します(\fIu\fRの場合)。\fIM\fRオプションは、JARファイルの作成時(\fIc\fR)または更新時(\fIu\fR)に使用できます。 +.RE +.PP +n +.RS 4 +JARファイルの作成(\fIc\fR)時に、このオプションは、コンテンツがpack200(1)コマンドのパックおよびアンパック操作の影響を受けないようにアーカイブを正規化します。この正規化を使用しない場合、署名付きJARの署名は無効になります。 +.RE +.PP +v +.RS 4 +詳細な出力を標準出力に生成します。例を参照してください。 +.RE +.PP +0 +.RS 4 +(ゼロ) ZIP圧縮を使用しないでJARファイルを作成(\fIc\fR)または更新(\fIu\fR)します。 +.RE +.PP +\-C \fIdir\fR +.RS 4 +JARファイルの作成(\fIc\fR)または更新(\fIu\fR)時に、このオプションは\fIfile\fRオペランドで指定されたファイルの処理中にディレクトリを一時的に変更します。この操作は、UNIX +\fItar\fRユーティリティの\fI\-C\fRオプションと同様になることを目的としています。たとえば、次のコマンドによって、\fIclasses\fRディレクトリに変更され、そのディレクトリから\fImy\&.jar\fRに\fIBar\&.class\fRファイルが追加されます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% find \fP\f3.\fP \-name '*.class' \-print > classes.list -.fl +jar uf my\&.jar \-C classes Bar\&.class .fi - -.LP -.LP -次に、引数ファイル構文を使用して \f2classes.list\fP を jar に渡すことで、 \f2そのリスト\fP に対して \f2jar\fP コマンドを実行できます。 -.LP +.if n \{\ +.RE +.\} +次のコマンドでは、\fIclasses\fRディレクトリに移動し、classesディレクトリ内のすべてのファイルを\fImy\&.jar\fRに追加します(JARファイルには\fIclasses\fRディレクトリを作成しません)。次に元のディレクトリに戻ってから、\fIbin\fRディレクトリに移動し、\fIXyz\&.class\fRを\fImy\&.jar\fRに追加します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% jar cf my.jar @classes.list -.fl -\fP +jar uf my\&.jar \-C classes \&. \-C bin Xyz\&.class .fi - -.LP -引数ファイルはパスを指定できますが、相対パスが記述された引数ファイル内のすべてのファイル名は、渡されたパスに対して相対的ではなく、現在の作業ディレクトリに相対的となります。次はその例です。 +.if n \{\ +.RE +.\} +\fIclasses\fRに\fIbar1\fRファイルと\fIbar2\fRファイルが含まれている場合、前述のコマンドを実行した後、JARファイルには次のものが含まれます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% jar @path1/classes.list -.fl -\fP -.fi - -.LP -.LP - -.LP -.SH "例" -.LP -特定のディレクトリ内のすべてのファイルをアーカイブに追加する (そのアーカイブがすでに存在する場合は、その内容を上書きする) には、次のようにします。\f2\-v\fP オプションを使用して情報を詳細に列挙するように指定すると、サイズや最新の更新日など、アーカイブ内のファイルについての詳細情報が表示されます。 -.nf -\f3 -.fl -% ls -.fl -1.au Animator.class monkey.jpg -.fl -2.au Wave.class spacemusic.au -.fl -3.au at_work.gif -.fl - -.fl -% jar cvf bundle.jar * -.fl -added manifest -.fl -adding: 1.au(in = 2324) (out= 67)(deflated 97%) -.fl -adding: 2.au(in = 6970) (out= 90)(deflated 98%) -.fl -adding: 3.au(in = 11616) (out= 108)(deflated 99%) -.fl -adding: Animator.class(in = 2266) (out= 66)(deflated 97%) -.fl -adding: Wave.class(in = 3778) (out= 81)(deflated 97%) -.fl -adding: at_work.gif(in = 6621) (out= 89)(deflated 98%) -.fl -adding: monkey.jpg(in = 7667) (out= 91)(deflated 98%) -.fl -adding: spacemusic.au(in = 3079) (out= 73)(deflated 97%) -.fl -\fP -.fi - -.LP -すでに画像、オーディオファイル、およびクラス用のサブディレクトリに分けている場合は、これらを単一の JAR ファイルに結合できます。 -.nf -\f3 -.fl -% ls \-F -.fl -audio/ classes/ images/ -.fl - -.fl -% jar cvf bundle.jar audio classes images -.fl -added manifest -.fl -adding: audio/(in = 0) (out= 0)(stored 0%) -.fl -adding: audio/1.au(in = 2324) (out= 67)(deflated 97%) -.fl -adding: audio/2.au(in = 6970) (out= 90)(deflated 98%) -.fl -adding: audio/3.au(in = 11616) (out= 108)(deflated 99%) -.fl -adding: audio/spacemusic.au(in = 3079) (out= 73)(deflated 97%) -.fl -adding: classes/(in = 0) (out= 0)(stored 0%) -.fl -adding: classes/Animator.class(in = 2266) (out= 66)(deflated 97%) -.fl -adding: classes/Wave.class(in = 3778) (out= 81)(deflated 97%) -.fl -adding: images/(in = 0) (out= 0)(stored 0%) -.fl -adding: images/monkey.jpg(in = 7667) (out= 91)(deflated 98%) -.fl -adding: images/at_work.gif(in = 6621) (out= 89)(deflated 98%) -.fl - -.fl -% ls \-F -.fl -audio/ bundle.jar classes/ images/ -.fl -\fP -.fi - -.LP -JAR ファイルのエントリ名を表示するには、「\f2t\fP」オプションを使用します。 -.nf -\f3 -.fl -% jar tf bundle.jar -.fl +% \fIjar tf my\&.jar\fR META\-INF/ -.fl -META\-INF/MANIFEST.MF -.fl -audio/1.au -.fl -audio/2.au -.fl -audio/3.au -.fl -audio/spacemusic.au -.fl -classes/Animator.class -.fl -classes/Wave.class -.fl -images/monkey.jpg -.fl -images/at_work.gif -.fl -\fP +META\-INF/MANIFEST\&.MF +bar1 +bar2 +Xyz\&.class .fi - -.LP -.LP -クラスロードを高速にするためにインデックスファイルを JAR ファイルに追加するには、「\f2i\fP」オプションを使用します。 -.br -.br -例: -.br - -.LP -たとえば、株取引アプリケーションの内部依存しているクラスを、\f2main.jar\fP、\f2buy.jar\fP、および \f2sell.jar\fP という 3 つの JAR ファイルに分割したとします。 -.br - -.LP -.br - -.LP -\f2main.jar\fP のマニフェストの \f2Class\-path\fP 属性に次のように指定した場合、 +.if n \{\ +.RE +.\} +.RE +.PP +\-J\fIoption\fR +.RS 4 +指定したJVMオプションを、JREがJARファイルを実行する際に使用するように設定します。JVMオプションは、java(1)コマンドのリファレンス・ページで説明されています。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。 +.RE +.SH "オペランド" +.PP +次のオペランドは、\fIjar\fRコマンドで認識されます。 +.PP +\fIfile\fR +.RS 4 +JARファイルの作成(\fIc\fR)または更新(\fIu\fR)時に、\fIfile\fRオペランドは、アーカイブに追加する必要のあるファイルまたはディレクトリのパスと名前を定義します。JARファイルの抽出(\fIx\fR)またはコンテンツのリスト(\fIt\fR)時に、\fIfile\fRオペランドは抽出またはリストするファイルのパスと名前を定義します。少なくとも1つの有効なファイルまたはディレクトリを指定する必要があります。複数の\fIfile\fRオペランドを空白で区切ります。\fIentrypoint\fR、\fIjarfile\fRまたは\fImanifest\fRオペランドが使用される場合は、その後に\fIfile\fRオペランドを指定する必要があります。 +.RE +.PP +\fIentrypoint\fR +.RS 4 +JARファイルの作成(\fIc\fR)または更新(\fIu\fR)時に、\fIentrypoint\fRオペランドは、実行可能JARファイルにバンドルされているスタンドアロンJavaアプリケーションのエントリ・ポイントとなるクラスの名前を定義します。\fIe\fRオプションが存在する場合は\fIentrypoint\fRオペランドを指定する必要があります。 +.RE +.PP +\fIjarfile\fR +.RS 4 +作成(\fIc\fR)、更新(\fIu\fR)、抽出(\fIx\fR)または表示(\fIt\fR)するファイルの名前を定義します。\fIf\fRオプションが存在する場合は\fIjarfile\fRオペランドを指定する必要があります。\fIf\fRオプションおよび\fIjarfile\fRオペランドを省略すると、\fIjar\fRコマンドに、\fIstdin\fRからのJARファイル名を受け入れるか(\fIx\fRおよび\fIt\fRの場合)、JARファイルを\fIstdout\fRに送信すること(\fIc\fRおよび\fIu\fRの場合)が指示されます。 +.sp +JARファイルを索引付け(\fIi\fR)する場合は、\fIf\fRオプションを指定しないで\fIjarfile\fRオペランドを指定します。 +.RE +.PP +\fImanifest\fR +.RS 4 +JARファイルの作成(\fIc\fR)または更新(\fIu\fR)時に、\fImanifest\fRオペランドはJARファイルの\fIMANIFEST\&.MF\fRに含める属性の名前と値を持つ既存のマニフェスト・ファイルを定義します。\fIf\fRオプションが存在する場合は\fImanifest\fRオペランドを指定する必要があります。 +.RE +.PP +\fI@arg\-file\fR +.RS 4 +\fIjar\fRコマンドを短縮または簡素化するには、別のテキスト・ファイル内の引数を指定し、接頭辞としてアットマーク(@)を付けて\fIjar\fRコマンドに渡すことができます。\fIjar\fRコマンドは、アットマーク文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +.sp +引数ファイルには、\fIjar\fRコマンドのオプションと引数(引数ファイルをサポートしない起動ツールに渡される\fI\-J\fRオプションを除く)を含めることができます。ファイル内の引数は、空白または改行文字で区切ることができます。引数ファイル内のファイル名は、\fIjar\fRコマンドを実行できる現在のディレクトリに対して相対的であり、引数ファイルの場所に対しては相対的ではありません。通常はオペレーティング・システム・シェルによって展開されるアスタリスク(*)などのワイルドカードは展開されません。 +.sp +次の例は、\fIfind\fRコマンドによる現在のディレクトリ出力からのファイル名で\fIclasses\&.list\fRファイルを作成する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -Class\-Path: buy.jar sell.jar -.fl -\fP +find \&. \-name \*(Aq*\&.class\*(Aq \-print > classes\&.list .fi - -.LP -\f2\-i\fP オプションを使用すれば、アプリケーションのクラスの 読み込みを高速化できます。 +.if n \{\ +.RE +.\} +\fIjar\fRコマンドを実行し、\fI@arg\-file\fR構文を使用して\fIclasses\&.list\fRファイルを渡すことができます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% jar i main.jar -.fl -\fP +jar cf my\&.jar @classes\&.list .fi +.if n \{\ +.RE +.\} +引数ファイルはパスを指定できますが、相対パスが記述された引数ファイル内のすべてのファイル名は、渡されたパスに対して相対的ではなく、\fIjar\fRコマンドの現在の作業ディレクトリに相対的となります。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jar @dir/classes\&.list +.fi +.if n \{\ +.RE +.\} +.RE +.SH "注意" +.PP +\fIe\fR、\fIf\fRおよび\fIm\fRオプションは、\fIentrypoint\fR、\fIjarfile\fRおよび\fImanifest\fRオペランドと同じ順序でコマンドラインに出現する必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jar cmef myManifestFile MyMainClass myFile\&.jar *\&.class +.fi +.if n \{\ +.RE +.\} +.SH "例" +.PP +\fBExample 1\fR, 冗長な出力による現在のディレクトリからのすべてのファイルの追加 +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +% ls +1\&.au Animator\&.class monkey\&.jpg +2\&.au Wave\&.class spacemusic\&.au +3\&.au at_work\&.gif -.LP -\f2INDEX.LIST\fP ファイルが \f2META\-INF\fP ディレクトリに挿入されます。この結果、アプリケーションのクラスローダーによってクラスまたはリソースの検索が行われるときに、適切な jar ファイルがダウンロードされます。 +% jar cvf bundle\&.jar * +added manifest +adding: 1\&.au(in = 2324) (out= 67)(deflated 97%) +adding: 2\&.au(in = 6970) (out= 90)(deflated 98%) +adding: 3\&.au(in = 11616) (out= 108)(deflated 99%) +adding: Animator\&.class(in = 2266) (out= 66)(deflated 97%) +adding: Wave\&.class(in = 3778) (out= 81)(deflated 97%) +adding: at_work\&.gif(in = 6621) (out= 89)(deflated 98%) +adding: monkey\&.jpg(in = 7667) (out= 91)(deflated 98%) +adding: spacemusic\&.au(in = 3079) (out= 73)(deflated 97%) +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, サブディレクトリからのファイルの追加 +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +% ls \-F +audio/ classes/ images/ +% jar cvf bundle\&.jar audio classes images +added manifest +adding: audio/(in = 0) (out= 0)(stored 0%) +adding: audio/1\&.au(in = 2324) (out= 67)(deflated 97%) +adding: audio/2\&.au(in = 6970) (out= 90)(deflated 98%) +adding: audio/3\&.au(in = 11616) (out= 108)(deflated 99%) +adding: audio/spacemusic\&.au(in = 3079) (out= 73)(deflated 97%) +adding: classes/(in = 0) (out= 0)(stored 0%) +adding: classes/Animator\&.class(in = 2266) (out= 66)(deflated 97%) +adding: classes/Wave\&.class(in = 3778) (out= 81)(deflated 97%) +adding: images/(in = 0) (out= 0)(stored 0%) +adding: images/monkey\&.jpg(in = 7667) (out= 91)(deflated 98%) +adding: images/at_work\&.gif(in = 6621) (out= 89)(deflated 98%) + +% ls \-F +audio/ bundle\&.jar classes/ images/ +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, JARのコンテンツのリスト +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +% jar tf bundle\&.jar +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +META\-INF/ +META\-INF/MANIFEST\&.MF +audio/1\&.au +audio/2\&.au +audio/3\&.au +audio/spacemusic\&.au +classes/Animator\&.class +classes/Wave\&.class +images/monkey\&.jpg +images/at_work\&.gif +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 4\fR, 索引の追加 +.RS 4 +株式取引のアプリケーションの相互依存クラスを、\fImain\&.jar\fR、\fIbuy\&.jar\fRおよび\fIsell\&.jar\fRの3つのJARファイルに分割する場合、\fIi\fRオプションを使用します。\fImain\&.jar\fRマニフェスト内の\fIClass\-Path\fR属性を指定する場合、\fIi\fRオプションを使用して、アプリケーションのクラス・ロードの速度を向上できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Class\-Path: buy\&.jar sell\&.jar +jar i main\&.jar +.fi +.if n \{\ +.RE +.\} +\fIINDEX\&.LIST\fRファイルが\fIMETA\-INF\fRディレクトリに挿入されます。これにより、アプリケーションのクラス・ローダーによってクラスまたはリソースの検索が行われるときに、指定したJARファイルがダウンロードされるようになります。 +.sp +アプリケーションのクラス・ローダーは、このファイルに格納されている情報を使用して、効率的にクラスをロードします。ディレクトリをコピーするには、最初に\fIdir1\fR内のファイルを\fIstdout\fRに圧縮してから、\fIstdin\fRから\fIdir2\fRにパイプラインを作成して抽出します(\fI\-f\fRオプションは両方の\fIjar\fRコマンドで省略します)。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +(cd dir1; jar c \&.) | (cd dir2; jar x) +.fi +.if n \{\ +.RE +.\} +.RE .SH "関連項目" -.LP -.LP -.na -\f2JAR ファイルの概要\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jarGuide.html -.LP -.LP -.na -\f2JAR ファイルの仕様\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html -.LP -.LP -.na -\f2JarIndex の仕様\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR_Index -.LP -.LP -.na -\f2JAR チュートリアル\fP @ -.fi -http://download.oracle.com/javase/tutorial/deployment/jar/index.html -.LP -.LP -pack200(1) -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +pack200(1)\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/tutorial/deployment/jar/index\&.htmlにある +JavaチュートリアルのJARに関する項 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jarsigner.1 b/jdk/src/linux/doc/man/ja/jarsigner.1 index 739d051356e..fa0799a8c60 100644 --- a/jdk/src/linux/doc/man/ja/jarsigner.1 +++ b/jdk/src/linux/doc/man/ja/jarsigner.1 @@ -1,1660 +1,1071 @@ -." 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 -." 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 jarsigner 1 "07 May 2011" - -.LP -.SH "名前" -jarsigner \- JAR 署名および検証ツール -.LP -.LP -Java ARchive (JAR) ファイルの署名を生成し、署名付き JAR ファイルの署名を検証します。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jarsigner +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: セキュリティ・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jarsigner" "1" "2013年11月21日" "JDK 8" "セキュリティ・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jarsigner \- Javaアーカイブ(JAR)ファイルに対して署名および検証を行います。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jarsigner\fP [ options ] jar\-file alias -.fl -\f3jarsigner\fP \-verify [ options ] jar\-file [alias...] -.fl +\fIjarsigner\fR [ \fIoptions\fR ] \fIjar\-file\fR \fIalias\fR .fi - -.LP -.LP -jarsigner の \-verify コマンドでは、JAR ファイル名のあとに 0 個以上のキーストア別名を指定できます。キーストア別名が指定された場合、jarsigner は、JAR ファイル内の各署名付きエンティティーの検証に使用される証明書がキーストア別名のいずれかに一致することをチェックします。別名は、\-keystore で指定されたキーストア内またはデフォルトのキーストア内に定義されます。 -.LP +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjarsigner\fR \fI\-verify\fR [ \fIoptions\fR ] \fIjar\-file\fR [\fIalias \&.\&.\&.\fR] +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\-verify +.RS 4 +\fI\-verify\fRオプションでは、JARファイル名の後に0個以上のキーストア別名を指定できます。\fI\-verify\fRオプションが指定された場合、\fIjarsigner\fRコマンドでは、JARファイル内の各署名付きエンティティの検証に使用される証明書が、いずれかのキーストア別名に一致することをチェックします。別名は、\fI\-keystore\fRで指定されたキーストア内またはデフォルトのキーストア内に定義されます。 +.sp +\fI\-strict\fRオプションも指定した場合、\fIjarsigner\fRコマンドにより重大な警告が検出されると、メッセージ「jarが検証されました。署名者エラー」が表示されます。 +.RE +.PP +\fIjar\-file\fR +.RS 4 +署名されるJARファイル。 +.sp +\fI\-strict\fRオプションも指定した場合、\fIjarsigner\fRコマンドにより重大な警告が検出されると、メッセージ「jarは署名されました \- 署名者エラーがあります。」というメッセージが表示されます。 +.RE +.PP +\fIalias\fR +.RS 4 +別名は、\fI\-keystore\fRで指定されたキーストア内またはデフォルトのキーストア内に定義されます。 +.RE .SH "説明" -.LP -.LP -\f3jarsigner\fP ツールは、次の 2 つの目的で使用します。 -.LP -.RS 3 -.TP 3 -1. -Java ARchive (JAR) ファイルに署名を付ける -.TP 3 -2. -署名付き JAR ファイルの署名と整合性を検証する +.PP +\fIjarsigner\fRツールには、次の2つの目的があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Javaアーカイブ(JAR)ファイルに署名する目的。 .RE - -.LP -.LP -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 -署名付きのデータは変更できない。 データが変更された場合は、その署名によってデータが本物ではないことが検証される +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +署名付きJARファイルの署名と整合性を検証する目的。 .RE - -.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 \fP\f4<キーストアのパスワード>\fP\f3 -.fl - \-keypass \fP\f4<非公開鍵のパスワード>\fP\f3 MyJARFile.jar duke -.fl -\fP -.fi - -.LP -.LP -キーストアはパスワードで保護されているので、ストアのパスワードを指定する必要があります。コマンド行でストアのパスワードを指定しないと、パスワードの入力を求められます。同様に、非公開鍵もキーストア内でパスワードによって保護されているため、非公開鍵のパスワードを指定する必要があります。コマンド行で非公開鍵のパスワードを指定していない、また、指定したパスワートが保存されているパスワードと違っている場合には、非公開鍵のパスワードの入力を求められます。 -.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 -\f2「Java 暗号化アーキテクチャー用プロバイダの実装方法」\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 - KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); -.fl -\fP -.fi - -.LP -.LP -デフォルトのキーストアタイプは JKS (Sun が提供する独自のタイプのキーストアの実装) です。これは、セキュリティープロパティーファイル内の次の行によって指定されています。 -.LP -.nf -\f3 -.fl - keystore.type=jks -.fl -\fP -.fi - -.LP -.LP -注: キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、JKS と jks は同じものとして扱われます。 -.LP -.LP -各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。たとえば、pkcs12 と呼ばれるタイプのキーストアの実装を提供しているプロバイダパッケージを使用するには、上の行を次のように変更します。 -.LP -.nf -\f3 -.fl - keystore.type=pkcs12 -.fl -\fP -.fi - -.LP -.LP -PKCS#11 プロバイダパッケージを使用する場合、その詳細については、「Java PKCS#11 Reference Guide」にある -.na -\f2「KeyTool 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 2 -o -SHA1 ダイジェストアルゴリズムを使った DSA (デジタル署名アルゴリズム) -.TP 2 -o -SHA256 ダイジェストアルゴリズムを使用した RSA アルゴリズム -.TP 2 -o -SHA256 と ECDSA (楕円曲線デジタル署名アルゴリズム) を使用した EC (楕円曲線) 暗号方式アルゴリズム +.PP +JAR機能を使用すると、クラス・ファイル、イメージ、サウンドおよびその他のデジタル・データを単一のファイルにパッケージ化できるので、ファイルを迅速かつ容易に配布できます。\fIjar\fRという名前のツールを使用して、開発者はJARファイルを作成できます。(技術的な観点から言えば、すべてのZIPファイルもJARファイルとみなすことができます。ただし、\fIjar\fRコマンドによって作成されたJARファイル、または\fIjarsigner\fRコマンドによって処理されたJARファイルには、\fIMETA\-INF/MANIFEST\&.MF\fRファイルも含まれています。) +.PP +デジタル署名は、なんらかのデータ(署名の対象となるデータ)、およびエンティティ(人、会社など)の秘密鍵から計算されるビットの文字列です。手書きの署名同様、デジタル署名には多くの利点があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +署名の生成に使用された秘密鍵に対応する公開鍵を使用する計算によって、それが本物であることを検証できます。 .RE - -.LP -.LP -具体的には、署名者の公開鍵と非公開鍵が DSA 鍵である場合、\f3jarsigner\fP は SHA1withDSA アルゴリズムを使って JAR ファイルに署名を付けます。署名者の鍵が RSA 鍵である場合、\f3jarsigner\fP は SHA256withRSA アルゴリズムを使って JAR ファイルに署名を付けます。署名者の鍵が EC 鍵である場合、\f3jarsigner\fP は SHA256withECDSA アルゴリズムを使って JAR ファイルに署名を付けます。 -.LP -.LP -これらのデフォルトの署名アルゴリズムは、\f2\-sigalg\fP オプションを使ってオーバーライドできます。 -.LP -.SS -署名付き JAR ファイル -.LP -.LP -\f3jarsigner\fP を使って JAR ファイルに署名を付けた場合、出力される署名付き JAR ファイルは入力 JAR ファイルと同じですが、次の 2 つの追加ファイルが META\-INF ディレクトリに置かれる点が異なります。 -.LP -.RS 3 -.TP 2 -o -.SF 拡張子の付いた署名ファイル -.TP 2 -o -.DSA、.RSA、または .EC を拡張子に持つ署名ブロックファイル +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +秘密鍵が他人に知られない限り、デジタル署名の偽造は不可能です。 .RE - -.LP -.LP -これら 2 つのファイルのベースファイル名は、 \f2\-sigFile\fP オプションの値から作成されます。たとえば、次のようにオプションを指定したとします。 -.LP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +これは、署名が付いたデータの機能であり、他のデータの署名となるように要求できません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +署名付きデータは変更できません。データが変更された場合、署名によって本物であると検証できません。 +.RE +.PP +ファイルに対してエンティティの署名を生成するには、まず、エンティティは、そのエンティティに関連する公開鍵/秘密鍵のペアと、公開鍵を認証する1つ以上の証明書を持つ必要があります。証明書とは、あるエンティティからのデジタル署名付きの文書で、別のエンティティの公開鍵が特定の値を持つことを示しています。 +.PP +\fIjarsigner\fRコマンドは、キーストアからの鍵と証明書情報を使用して、JARファイルのデジタル署名を生成します。キーストアは、秘密鍵、および対応する公開鍵を認証する、秘密鍵に関連したX\&.509証明書チェーンのデータベースです。\fIkeytool\fRコマンドを使用して、キーストアを作成および管理します。 +.PP +\fIjarsigner\fRコマンドでは、エンティティの秘密鍵を使用して署名を生成します。署名付きJARファイルには、特に、ファイルへの署名に使用する秘密鍵に対応する公開鍵のキーストアからの証明書のコピーが含まれます。\fIjarsigner\fRコマンドでは、内部(署名ブロック・ファイル内)の証明書を使用して、署名付きJARファイルのデジタル署名を検証できます。 +.PP +\fIjarsigner\fRコマンドでは、署名証明書の有効期間中にJARファイルが署名されたされたかどうかをシステムやデプロイヤ(Java Plug\-inを含む)がチェックできる、タイムスタンプを含む署名を生成できます。さらに、APIを使用すると、アプリケーションでタイムスタンプ情報を取得できます。 +.PP +現時点では、\fIjarsigner\fRコマンドでは、\fIjar\fRコマンドまたはZIPファイルによって作成されたJARファイルのみに署名できます。JARファイルはZIPファイルと同じですが、JARファイルには\fIMETA\-INF/MANIFEST\&.MF\fRファイルも含まれている点が異なります。\fIMETA\-INF/MANIFEST\&.MF\fRファイルは、\fIjarsigner\fRコマンドによってZIPファイルに署名する際に作成されます。 +.PP +デフォルトの\fIjarsigner\fRコマンドの動作では、JARまたはZIPファイルに署名します。\fI\-verify\fRオプションを使用して、署名付きJARファイルを検証します。 +.PP +\fIjarsigner\fRコマンドは、署名または検証の後に署名者の証明書の検証も試行します。検証エラーまたはその他の問題が発生すると、コマンドにより警告メッセージが生成されます。\fI\-strict\fRオプションを指定した場合、コマンドにより重大な警告がエラーとして処理されます。エラーと警告を参照してください。 +.SS "キーストアの別名" +.PP +キーストアのすべてのエンティティは、一意の別名を使用してアクセスされます。 +.PP +\fIjarsigner\fRコマンドを使用してJARファイルに署名するときは、署名の生成に必要な秘密鍵を含むキーストア・エントリの別名を指定する必要があります。たとえば、次のコマンドでは、\fIworking\fRディレクトリの\fImystore\fRという名前のキーストアに含まれる別名\fIduke\fRに関連付けられた秘密鍵を使用して、\fIMyJARFile\&.jar\fRという名前のJARファイルに署名します。出力ファイルは指定されていないため、\fIMyJARFile\&.jar\fRは署名付きのJARファイルによって上書きされます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\-sigFile MKSIGN -.fl -\fP +jarsigner \-keystore /working/mystore \-storepass + \-keypass MyJARFile\&.jar duke .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 ダイジェストの値 +.if n \{\ .RE - -.LP -.LP -マニフェストファイルでは、SHA ダイジェストの値は、ソースファイルのバイナリデータのダイジェスト (ハッシュ) です。一方、.SF ファイルでは、ソースファイルのダイジェストの値は、マニフェストファイル中の該当するソースファイルに対応する 3 行のハッシュです。 -.LP -.LP -署名ファイルには、デフォルトでマニフェストファイル全体のハッシュも含まれています。後述の「JAR ファイルの検証」で説明するように、このヘッダーの存在によって検証の最適化が可能になっています。 -.LP -\f3署名ブロックファイル\fP -.LP -.SF ファイルには署名が付けられ、署名は署名ブロックファイルに置かれます。このファイルには、キーストアからの証明書または証明書チェーンも符号化された形で含まれています。 証明書または証明書チェーンは、署名に使われた非公開鍵に対応する公開鍵を認証します。ファイルの拡張子は、使用されるダイジェストアルゴリズムに応じて .DSA、.RSA、.EC のいずれかになります。 -.SS -署名タイムスタンプ -.LP -.LP -\f2jarsigner\fP ツールは、JAR ファイルの署名時に署名タイムスタンプを生成して保存できます。さらに、 \f2jarsigner\fP は代替署名機構をサポートします。この動作は省略可能で、署名時に次の各オプションによって制御されます。 -.LP -.RS 3 -.TP 2 -o -\f2\-tsa url\fP -.TP 2 -o -\f2\-tsacert alias\fP -.TP 2 -o -\f2\-altsigner class\fP -.TP 2 -o -\f2\-altsignerpath classpathlist\fP -.RE - -.LP -.LP -これらの各オプションの詳細については、後述の「オプション」節を参照してください。 -.LP -.SS -JAR ファイルの検証 -.LP -.LP -JAR ファイルの検証が成功するのは、署名が有効であり、かつ署名の生成以後に JAR ファイル内のどのファイルも変更されていない場合です。JAR ファイルの検証は、次の手順で行われます。 -.LP -.RS 3 -.TP 3 -1. -.SF ファイルそれ自体の署名を検証します。 -.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 ファイル内にエントリを持つ各ファイルを読み込みます。読み込み中にファイルのダイジェストを計算し、結果をマニフェストセクション内の該当するファイルのダイジェストと比較します。2 つのダイジェストは同じでなければならず、そうでない場合は検証が失敗します。 -.RE - -.LP -.LP -検証プロセスの途中でなんらかの重大な検証エラーが発生した場合、検証プロセスは中止され、セキュリティー例外がスローされます。スローされたセキュリティー例外は、\f3jarsigner\fP がキャッチして表示します。 -.LP -.SS -1 つの JAR ファイルを対象とする複数の署名 -.LP -.LP -1 つの JAR ファイルに対して \f3jarsigner\fP ツールを複数回実行し、実行のたびに、異なるユーザーの別名を指定すれば、JAR ファイルに複数のユーザーの署名を付けることができます。 -.LP +.\} +.PP +キーストアはパスワードで保護されているので、ストアのパスワードを指定する必要があります。コマンドラインで指定しないと、入力を求められます。同様に、秘密鍵もキーストア内でパスワードによって保護されているため、秘密鍵のパスワードを指定する必要があります。コマンドラインでパスワードを指定していない場合、または指定したパスワートが保存されているパスワードと同じではない場合は、パスワードの入力を求められます。 +.SS "キーストアの場所" +.PP +\fIjarsigner\fRコマンドには、使用するキーストアのURLを指定する\fI\-keystore\fRオプションがあります。キーストアはデフォルトで、\fIuser\&.home\fRシステム・プロパティで決まるユーザーのホーム・ディレクトリの\fI\&.keystore\fRという名前のファイル内に格納されます。 +.PP +Oracle Solarisシステムの場合、\fIuser\&.home\fRは、ユーザーのホーム・ディレクトリにデフォルト設定されます。 +.PP +\fI\-keystore\fRオプションからの入力ストリームは、\fIKeyStore\&.load\fRメソッドに渡されます。URLとして\fINONE\fRが指定されている場合は、nullのストリームが\fIKeyStore\&.load\fRメソッドに渡されます。\fINONE\fRは、\fIKeyStore\fRクラスがファイルベースではない場合、たとえば、ハードウェア・トークン・デバイスに置かれている場合に指定します。 +.SS "キーストアの実装" +.PP +\fIjava\&.security package\fRで提供されている\fIKeyStore\fRクラスは、キーストア内の情報へのアクセスおよび情報の変更を行うための、明確に定義された多くのインタフェースを提供します。複数の異なる固定実装を指定することができ、各実装は特定のタイプのキーストアを対象とします。 +.PP +現在、キーストアの実装を使用する2つのコマンドライン・ツール(\fIkeytool\fRと\fIjarsigner\fR)、およびポリシー・ツールという名前の1つのGUIベースのツールがあります。\fIKeyStore\fRクラスは公開されているため、JDKユーザーは、それを使用する他のセキュリティ・アプリケーションを書き込むことができます。 +.PP +Oracleが提供する組込みのデフォルトの実装があります。これは、JKSという名前の独自のキーストア・タイプ(形式)を使用するもので、キーストアをファイルとして実装しています。組込みの実装では、各秘密鍵は個別のパスワードによって保護され、キーストア全体の整合性は(秘密鍵とは別の)パスワードによって保護されます。 +.PP +キーストアの実装はプロバイダベースで、つまり、\fIKeyStore\fRクラスにより提供されるアプリケーション・インタフェースは、サービス・プロバイダ・インタフェース(SPI)に関して実装されます。対応する\fIKeystoreSpi\fR抽象クラスがあり、これも\fIjava\&.security package\fRに含まれています。このクラスが、プロバイダが実装する必要のあるサービス・プロバイダ・インタフェースのメソッドを定義しています。ここで、プロバイダとは、Java Security APIによってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。キーストアの実装を提供するには、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider\&.htmlにある +Java暗号化アーキテクチャのプロバイダの実装方法で説明しているように、クライアントはプロバイダを実装し、\fIKeystoreSpi\fRサブクラスの実装を提供する必要があります。 +.PP +アプリケーションでは、\fIKeyStore\fRクラスの\fIgetInstance\fRファクトリ・メソッドを使用して、様々なプロバイダから異なるタイプのキーストアの実装を選択できます。キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の秘密鍵とキーストア自体の整合性を保護するために使用されるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。 +.PP +\fIjarsigner\fRおよび\fIpolicytool\fRコマンドは、URLを使用して指定できる任意の場所からファイルベースのキーストアを読み取ることができます。また、これらのコマンドは、Windows上のMSCAPIおよびすべてのプラットフォーム上のPKCS11で提供されるような非ファイルベースのキーストアを読み取ることができます。 +.PP +\fIjarsigner\fRコマンドおよび\fIkeytool\fRコマンドの場合、\fI\-storetype\fRオプションを使用して、コマンドラインでキーストアのタイプを指定できます。ポリシー・ツールの場合、\fB「キーストア」\fRメニューの\fB「編集」\fRコマンドを使用して、キーストアのタイプを指定できます。 +.PP +ユーザーがキーストアのタイプを明示的に指定しなかった場合、セキュリティ・プロパティ・ファイルで指定された\fIkeystore\&.type\fRプロパティの値に基づいて、ツールによってキーストアの実装が選択されます。このセキュリティ・プロパティ・ファイルは\fIjava\&.security\fRと呼ばれ、JDKセキュリティ・プロパティ・ディレクトリ\fIjava\&.home/lib/security\fR内に存在しています。ここで、\fIjava\&.home\fRは実行時環境のディレクトリです。\fIjre\fRディレクトリは、JDKまたはJava Runtime Environment (JRE)の最上位のディレクトリにあります。 +.PP +各ツールは、\fIkeystore\&.type\fRの値を取得し、そのタイプのキーストアを実装しているプロバイダが見つかるまで、インストールされているすべてのプロバイダを調べます。目的のプロバイダが見つかると、そのプロバイダからのキーストアの実装を使用します。 +.PP +\fIKeyStore\fRクラスに定義されているstaticメソッド\fIgetDefaultType\fRを使用すると、アプリケーションやアプレットから\fIkeystore\&.type\fRプロパティの値を取得できます。次のコードの行では、\fIkeystore\&.type property\fRで指定された、デフォルトのキーストア・タイプのインスタンスを作成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - jarsigner myBundle.jar susan -.fl - jarsigner myBundle.jar kevin -.fl -\fP +KeyStore keyStore = KeyStore\&.getInstance(KeyStore\&.getDefaultType()); .fi - -.LP -.LP -JAR ファイルが複数回署名されている場合、その JAR ファイルには .SF ファイルと .DSA ファイルの対が複数含まれることになります。 .SF ファイルと .DSA ファイルの対は、1 回の署名に対して 1 つ作成されます。したがって、上の例で出力される JAR ファイルには、次の名前を持つファイルが含まれます。 -.LP +.if n \{\ +.RE +.\} +.PP +デフォルトのキーストア・タイプは、\fIjks\fR +(Oracleが提供する独自のタイプのキーストアの実装)です。これは、セキュリティ・プロパティ・ファイル内の次の行によって指定されています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - SUSAN.SF -.fl - SUSAN.DSA -.fl - KEVIN.SF -.fl - KEVIN.DSA -.fl -\fP +keystore\&.type=jks .fi - -.LP -.LP -注: JAR ファイルでは、JDK 1.1 の \f3javakey\fP ツールで生成された署名と \f3jarsigner\fP で生成された署名が混在できます。つまり、すでに \f3javakey\fP を使って署名が付けられている JAR ファイルに、\f3jarsigner\fP を使って署名を付けることができます。 -.LP +.if n \{\ +.RE +.\} +.PP +キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、\fIJKS\fRは\fIjks\fRと同じになります。 +.PP +ツールでデフォルト以外のキーストアの実装を使用するには、その行を変更して別のキーストアのタイプを指定します。たとえば、\fIpkcs12\fRと呼ばれるキーストアのタイプのキーストアの実装を提供するプロバイダ・パッケージがある場合、行を次のように変更します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keystore\&.type=pkcs12 +.fi +.if n \{\ +.RE +.\} +.PP +\fB注意:\fR +PKCS 11プロバイダ・パッケージを使用する場合、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/p11guide\&.htmlにある +Java PKCS #11リファレンス・ガイドの「KeyTool」および「JarSigner」を参照してください。 +.SS "サポートされるアルゴリズム" +.PP +デフォルトで、\fIjarsigner\fRコマンドでは次のいずれかのアルゴリズムを使用してJARファイルに署名します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +SHA1ダイジェスト・アルゴリズムを使用したデジタル署名アルゴリズム(DSA) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +SHA256ダイジェスト・アルゴリズムを使用したRSAアルゴリズム。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +SHA256と楕円曲線デジタル署名アルゴリズム(ECDSA)を使用した楕円曲線(EC)暗号方式アルゴリズム +.RE +.PP +署名者の公開鍵と秘密鍵がDSA鍵である場合、\fIjarsigner\fRは\fISHA1withDSA\fRアルゴリズムを使用してJARファイルに署名します。署名者の鍵がRSA鍵である場合、\fIjarsigner\fRは\fISHA256withRSA\fRアルゴリズムを使用してJARファイルに署名しようとします。署名者の鍵がEC鍵である場合、\fIjarsigner\fRは\fISHA256withECDSA\fRアルゴリズムを使用してJARファイルに署名します。 +.PP +これらのデフォルトの署名アルゴリズムは、\fI\-sigalg\fRオプションを使用してオーバーライドできます。 +.SS "署名付きJARファイル" +.PP +\fIjarsigner\fRコマンドを使用してJARファイルに署名する場合、出力される署名付きJARファイルは入力JARファイルと同じですが、次の2つの追加ファイルがMETA\-INFディレクトリに置かれる点が異なります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\&.SF\fR拡張子の付いた署名ファイル +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\&.DSA\fR、\fI\&.RSA\fRまたは\fI\&.EC\fR拡張子の付いた署名ブロック・ファイル +.RE +.PP +これら2つのファイルのベース・ファイル名は、\fI\-sigFile\fRオプションの値から作成されます。たとえば、オプションが\fI\-sigFile MKSIGN\fRの場合、ファイルは\fIMKSIGN\&.SF\fRおよび\fIMKSIGN\&.DSA\fRという名前になります。 +.PP +コマンドラインで\fI\-sigfile\fRオプションを指定しなかった場合、\fI\&.SF\fRファイルと\fI\&.DSA\fRファイルのベース・ファイル名は、コマンドラインで指定された別名の先頭の8文字をすべて大文字に変換したものになります。別名が8文字未満の場合は、別名がそのまま使用されます。別名に、署名ファイル名で使用できない文字が含まれている場合、ファイル名の作成時に、該当する文字が下線(_)文字に変換されます。有効な文字は、アルファベット、数字、下線およびハイフンです。 +署名ファイル.PP +署名ファイル(\fI\&.SF\fRファイル)は、\fIjarsigner\fRコマンドを使用してファイルに署名する際にJARファイルに常に含まれるマニフェスト・ファイルと似ています。JARファイルに含まれているソース・ファイルごとに、\fI\&.SF\fRファイルには、マニフェスト・ファイルにあるような、次に示す3つの行があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ファイル名 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ダイジェスト・アルゴリズム(SHA)の名前 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +SHAダイジェストの値 +.RE +.PP +マニフェスト・ファイルでは、各ソース・ファイルのSHAダイジェストの値は、ソース・ファイルのバイナリ・データのダイジェスト(ハッシュ)になります。\fI\&.SF\fRファイルでは、指定されたソース・ファイルのダイジェストの値は、ソース・ファイルのマニフェスト・ファイル内のその3行のハッシュになります。 +.PP +署名ファイルには、デフォルトで、マニフェスト・ファイル全体のハッシュが格納されたヘッダーが含まれています。ヘッダーにはマニフェスト・ヘッダーのハッシュも含まれています。ヘッダーが存在すると、検証の最適化が有効になります。JARファイルの検証を参照してください。 +署名ブロック・ファイル.PP +\fI\&.SF\fRファイルには署名が付けられ、署名は署名ブロック・ファイルに置かれます。このファイルには、署名に使用された秘密鍵に対応する公開鍵を認証するキーストアからの証明書または証明書チェーンも、内部でエンコードされて含まれています。ファイルの拡張子は、使用されるダイジェスト・アルゴリズムに応じて、\fI\&.DSA\fR、\fI\&.RSA\fRまたは\fI\&.EC\fRになります。 +.SS "署名タイムスタンプ" +.PP +\fIjarsigner\fRコマンドでは、JARファイルの署名時に署名タイムスタンプを生成および保存できます。さらに、\fIjarsigner\fRは代替署名機構をサポートします。この動作は省略可能で、署名時に次の各オプションによって制御されます。オプションを参照してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-tsa \fIurl\fR +\-tsacert \fIalias\fR +\-altsigner \fIclass\fR +\-altsignerpath \fIclasspathlist\fR +\-tsapolicyid \fIpolicyid\fR +.fi +.if n \{\ +.RE +.\} +.SS "JARファイルの検証" +.PP +JARファイルの検証が成功するのは、署名が有効であり、かつ署名の生成以降にJARファイル内のどのファイルも変更されていない場合です。JARファイルの検証は、次の手順で行われます。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +\fI\&.SF\fRファイルの署名を検証します。 +.sp +検証では、各署名ブロック(\fI\&.DSA\fR)ファイルに格納された署名が、証明書(または証明書チェーン)も\fI\&.DSA\fRファイルに示される公開鍵に対応する秘密鍵を使用して生成されたことを確認します。また、署名が対応する署名(\fI\&.SF\fR)ファイルの有効な署名であることが確認され、それにより、\fI\&.SF\fRファイルが改ざんされていないことも確認されます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +\fI\&.SF\fRファイル内の各エントリに示されるダイジェストを、マニフェスト内の対応する各セクションと突きあわせて検証します。 +.sp +\fI\&.SF\fRファイルには、マニフェスト・ファイル全体のハッシュが格納されたヘッダーがデフォルトで含まれています。ヘッダーが存在する場合、検証では、ヘッダー内のハッシュがマニフェスト・ファイルのハッシュと一致するかどうかを確認するためにチェックできます。一致する場合、検証は次の手順に進みます。 +.sp +一致しない場合、\fI\&.SF\fRファイル内の各ソース・ファイル情報セクションのハッシュが、マニフェスト・ファイル内の対応するセクションのハッシュと一致することを確認するために、あまり最適化されていない検証が必要になります。署名ファイルを参照してください。 +.sp +\fI\&.SF\fRファイルのヘッダーに格納されたマニフェスト・ファイルのハッシュが、現在のマニフェスト・ファイルのハッシュに一致しない理由の1つは、署名および\fI\&.SF\fRファイルの生成後に、(\fIjar\fRツールを使用して)1つ以上のファイルがJARファイルに追加されたことです。\fIjar\fRツールを使用してファイルを追加した場合、新しいファイル用のセクションが追加されることにより、マニフェスト・ファイルは変更されますが、\fI\&.SF\fRファイルは変更されません。検証がまだ成功しているとみなされるのは、署名の生成以降にJARファイル内のどのファイルも変更されていない場合です。これが発生するのは、\fI\&.SF\fRファイルのヘッダー以外のセクションのハッシュが、マニフェスト・ファイル内の対応するセクションのハッシュと一致する場合です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 3.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 3." 4.2 +.\} +\fI\&.SF\fRファイル内にエントリを持つJARファイル内の各ファイルを読み取ります。読取り中にファイルのダイジェストを計算し、結果をマニフェスト・セクション内のこのファイルのダイジェストと比較します。ダイジェストは同じである必要があり、そうでない場合は検証が失敗します。 +.sp +検証プロセス中になんらかの重大な検証エラーが発生した場合、そのプロセスは停止され、セキュリティ例外がスローされます。\fIjarsigner\fRコマンドでは、例外を捕捉および表示します。 +.RE +.PP +\fB注意:\fR +追加の警告(または、\fI\-strict\fRオプションを指定した場合はエラー)はすべて読む必要があります。同様に、証明が信頼できるかを決定するために、(\fI\-verbose\fRおよび\fI\-certs\fRオプションを指定して)証明書の内容も読む必要があります。 +.SS "1つのJARファイルを対象とする複数の署名" +.PP +次のように、\fIjarsigner\fRコマンドをファイルで複数回実行し、実行のたびに異なるユーザーの別名を指定することによって、1つのJARファイルに複数のユーザーの署名を付けることができます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner myBundle\&.jar susan +jarsigner myBundle\&.jar kevin +.fi +.if n \{\ +.RE +.\} +.PP +JARファイルが複数回署名されている場合、そのJARファイルには、複数の\fI\&.SF\fRファイルと\fI\&.DSA\fRファイルが含まれており、1回の署名に対して1つのペアとなります。前述の例では、出力JARファイルには、次の名前のファイルが含まれています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +SUSAN\&.SF +SUSAN\&.DSA +KEVIN\&.SF +KEVIN\&.DSA +.fi +.if n \{\ +.RE +.\} .SH "オプション" -.LP -.LP -以下では、\f3jarsigner\fP のオプションについて説明します。注: -.LP -.RS 3 -.TP 2 -o -どのオプション名にも先頭にマイナス記号 (\-) が付く -.TP 2 -o -オプションは任意の順序で指定できる -.TP 2 -o -イタリック体の項目の実際の値 (オプションの値) は、ユーザーが指定する必要がある -.TP 2 -o -\f2\-keystore\fP、 \f2\-storepass\fP、 \f2\-keypass\fP、 \f2\-sigfile\fP、 \f2\-sigalg\fP、 \f2\-digestalg\fP、および \f2\-signedjar\fP オプションを使用できるのは、署名付き JAR ファイルを検証する場合ではなく、JAR ファイルに署名する場合だけです。同様に、別名をコマンド行で指定するのは、JAR ファイルに署名を付ける場合だけである +.PP +次の各項では、様々な\fIjarsigner\fRオプションについて説明します。次の標準に注意してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +どのオプション名にも先頭にマイナス記号(\-)が付きます。 .RE - -.LP -.RS 3 -.TP 3 -\-keystore url -キーストアの場所を示す URL を指定します。デフォルトは、ユーザーのホームディレクトリ内のファイル \f2.keystore\fP です。 ユーザーのホームディレクトリは、user.home システムプロパティーによって決まります。 -.LP -署名するときはキーストアが必要です。 このため、デフォルトのキーストアが存在しない場合、あるいはデフォルト以外のほかのキーストアを使用する場合は、キーストアを明示的に指定する必要があります。 -.LP -検証するときはキーストアは必要ありません。ただし、キーストアが指定されているか、あるいはデフォルトのキーストアが存在していて、さらに \f2\-verbose\fP オプションも指定されていた場合、JAR ファイルの検証に使用される証明書がそのキーストアに 1 つでも含まれているかどうかに関する追加情報が出力されます。 -.LP -注: \f2\-keystore\fP の引数には、URL の代わりにファイル名 (とパス) を指定できます。 ファイル名 (とパス) を指定した場合は、「file:」URL として扱われます。たとえば、次のように指定できます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +オプションは任意の順序で指定できます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +イタリック体または下線付きの項目(オプションの値)の実際の値は、指定する必要があります。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-storepass\fR、\fI\-keypass\fR、\fI\-sigfile\fR、\fI\-sigalg\fR、\fI\-digestalg\fR、\fI\-signedjar\fRおよびTSA関連のオプションを使用できるのは、JARファイルに署名する場合のみです。署名付きJARファイルを検証する場合ではありません。\fI\-keystore \fRオプションは、JARファイルの署名および検証に関連します。また、別名は、JARファイルの署名および検証時に指定します。 +.RE +.PP +\-keystore \fIurl\fR +.RS 4 +キーストアの場所を示すURLを指定します。これにより、\fIuser\&.home\fRシステム・プロパティで決定されたユーザーのホーム・ディレクトリ内のファイル\fI\&.keystore\fRにデフォルト設定されます。 +.sp +キーストアは署名時には必要です。デフォルトのキーストアが存在しない場合、またはデフォルト以外のキーストアを使用する場合は、キーストアを明示的に指定する必要があります。 +.sp +検証するときはキーストアは必要ありません。ただし、キーストアが指定されているか、あるいはデフォルトのキーストアが存在していて、さらに\fI\-verbose\fRオプションも指定されていた場合、JARファイルの検証に使用される証明書がそのキーストアに1つでも含まれているかどうかに関する追加情報が出力されます。 +.sp +\fI\-keystore\fR引数には、URLではなくファイル名とパスを指定でき、この場合、ファイル: URLと同じように処理されます。たとえば、次にように指定すると同等になります。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \-keystore \fP\f4filePathAndName\fP\f3 -.fl -\fP +\-keystore \fIfilePathAndName\fR +\-keystore file:\fIfilePathAndName\fR .fi -.LP -これは、次の指定と同じものとして扱われます。 +.if n \{\ +.RE +.\} +(JREの\fI$JAVA_HOME/lib/security directory\fRにある) +\fIjava\&.security\fRセキュリティ・プロパティ・ファイル内でSun PKCS #11プロバイダが構成された場合、\fIkeytool\fRおよび\fIjarsigner\fRツールはPKCS#11トークンに基づいて動作できます。次のオプションを指定します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \-keystore file:\fP\f4filePathAndName\fP\f3 -.fl -\fP +\-keystore NONE +\-storetype PKCS11 .fi -.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 +.if n \{\ .RE -.LP -たとえば、次のコマンドは、設定された PKCS#11 トークンの内容を一覧表示します。 +.\} +たとえば、次のコマンドは、構成されたPKCS#11トークンの内容を一覧表示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - jarsigner \-keystore NONE \-storetype PKCS11 \-list -.fl - -.fl -\fP +keytool \-keystore NONE \-storetype PKCS11 \-list .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 -キーストアにアクセスするのに必要なパスワードを指定します。このオプションが必要なのは、JAR ファイルに署名を付けるときだけです (JAR ファイルを検証するときは不要)。その場合、 \f2\-storepass\fP オプションをコマンド行で指定しなかった場合は、新しいパスワードの入力を求められます。 -.LP -修飾子 \f2env\fP または \f2file\fP が指定されていない場合、パスワードの値は \f2argument\fP になります。それ以外の場合、パスワードは次のようにして取得されます。 -.RS 3 -.TP 2 -o -\f2env\fP: \f2argument\fP という名前の環境変数からパスワードを取得する -.TP 2 -o -\f2file\fP: \f2argument\fP という名前のファイルからパスワードを取得する +.if n \{\ .RE -.LP -注: テストを目的とする場合、またはセキュリティー保護されたシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。 -.TP 3 -\-keypass[:env | :file] argument -.LP -コマンド行で指定された別名に対応するキーストアエントリの非公開鍵を保護するのに使うパスワードを指定します。\f3jarsigner\fP を使って JAR ファイルに署名を付けるときは、パスワードが必要です。コマンド行でパスワードが指定されておらず、必要なパスワードがストアのパスワードと異なる場合は、パスワードの入力を求められます。 -.LP -修飾子 \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 -\f2file\fP に使用できる文字は「a\-zA\-Z0\-9_\-」です。つまり、文字、数字、下線、およびハイフンだけを使用できます。注: .SF および .DSA のファイル名では、小文字はすべて大文字に変換されます。 -.LP -\-sigfile \f2\-sigfile\fP オプションを指定しなかった場合、.SF ファイルと .DSA ファイルのベースファイル名は、コマンド行で指定された別名の先頭の 8 文字をすべて大文字に変換したものになります。別名が 8 文字未満の場合は、別名がそのまま使われます。別名の中に、署名ファイル名に使用できない文字が含まれている場合は、該当する文字を下線 (_) に置き換えてファイル名が作成されます。 -.TP 3 -\-sigalg algorithm -JAR ファイルの署名に使用する署名アルゴリズムの名前を指定します。 -.LP -標準署名アルゴリズム名の一覧については、「Java Cryptography Architecture」にある -.na -\f2「Appendix A 」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。このアルゴリズムは、JAR ファイルの署名に使用する秘密鍵と互換性のあるものでなければなりません。このオプションを指定しなかった場合、秘密鍵のタイプに応じて SHA1withDSA、SHA256withRSA、SHA256withECDSA のいずれかが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、あるいはユーザーがそのようなプロバイダを \f2\-providerClass\fP オプションを使って指定する必要があります。そうでない場合、コマンドの実行が失敗します。 -.TP 3 -\-digestalg algorithm -JAR ファイルのエントリをダイジェストする際に使用するメッセージダイジェストアルゴリズムの名前を指定します。 -.LP -標準メッセージダイジェストアルゴリズム名の一覧については、「Java Cryptography Architecture」にある -.na -\f2「Appendix 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 -コマンド行で名前を指定しなかった場合は、入力 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 -検証についての詳細は、「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 のインスタンス) である場合は、署名者の識別名 +.PP +\-storetype \fIstoretype\fR +.RS 4 +インスタンスを生成するキーストアのタイプを指定します。デフォルトのキーストア・タイプは、セキュリティ・プロパティ・ファイル内の\fIkeystore\&.type\fRプロパティの値で指定されたタイプです。この値は、\fIjava\&.security\&.KeyStore\fRのstatic +\fIgetDefaultType\fRメソッドによって返されます。 +.sp +\fI\-storepass\fRオプションを使用して、PCKS #11トークンのPINを指定することもできます。何も指定しない場合、\fIkeytool\fRおよび\fIjarsigner\fRコマンドによって、トークンPINの指定を求められます。トークンに保護された認証パス(専用のPINパッドや生体読取り機など)がある場合、\fI\-protected\fRオプションを指定する必要がありますが、パスワード・オプションは指定できません。 .RE -.LP -キーストアの確認も行われます。コマンド行でキーストアの値が指定されていない場合、デフォルトのキーストアファイルがあれば、検査されます。署名者の公開鍵の証明書がキーストア内のエントリと一致した場合は、次の情報も表示されます。 -.RS 3 -.TP 2 -o -署名者に該当するキーストアエントリの別名。この別名は括弧で囲まれます。 ただし、キーストアではなく JDK 1.1 のアイデンティティーデータベースに由来する署名者の場合は、括弧ではなく大括弧で囲まれます。 +.PP +\-storepass[:env | :file] \fIargument\fR +.RS 4 +キーストアにアクセスするのに必要なパスワードを指定します。これが必要なのは、JARファイルに署名を付けるときのみです(検証するときには不要です)。その場合、\fI\-storepass\fRオプションをコマンドラインで指定しないと、パスワードの入力を求められます。 +.sp +修飾子\fIenv\fRまたは\fIfile\fRが指定されていない場合、パスワードの値は\fIargument\fRになります。それ以外の場合、パスワードは次のようにして取得されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIenv\fR: +\fIargument\fRという名前の環境変数からパスワードを取得します。 .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 -デフォルトでは、最適化を行うために、マニフェストファイル全体のハッシュを含むヘッダーが追加されます。ヘッダーが存在する場合は、JAR ファイルの検証時に、まずヘッダー内のハッシュが、マニフェストファイル全体のハッシュと実際に一致するかどうかが確認されます。ハッシュが一致する場合、検証は次の手順に進みます。ハッシュが一致しない場合は、効率的には劣る方法を使って検証を行います。 具体的には、.SF ファイル内の各ソースファイル情報セクションのハッシュが、マニフェストファイル内の対応するセクションのハッシュと一致するかどうかを確認します。 -.LP -詳細は、「JAR ファイルの検証」を参照してください。 -.LP -\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 キーストアを一覧表示するコマンドの例を次に示します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIfile\fR: +\fIargument\fRという名前のファイルからパスワードを取得します。 +.RE +.sp +\fB注意:\fR +テストを目的とする場合またはセキュリティ保護されたシステムを使用している場合以外は、コマンドラインやスクリプトでパスワードを指定しないでください。 +.RE +.PP +\-keypass [:env | :file] \fIargument\fR +.RS 4 +コマンドラインで指定された別名に対応するキーストア・エントリの秘密鍵を保護するのに使用するパスワードを指定します。\fIjarsigner\fRを使用してJARファイルに署名を付けるときは、パスワードが必要です。コマンドラインでパスワードが指定されておらず、必要なパスワードがストアのパスワードと異なる場合は、パスワードの入力を求められます。 +.sp +修飾子\fIenv\fRまたは\fIfile\fRが指定されていない場合、パスワードの値は\fIargument\fRになります。それ以外の場合、パスワードは次のようにして取得されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIenv\fR: +\fIargument\fRという名前の環境変数からパスワードを取得します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIfile\fR: +\fIargument\fRという名前のファイルからパスワードを取得します。 +.RE +.sp +\fB注意:\fR +テストを目的とする場合またはセキュリティ保護されたシステムを使用している場合以外は、コマンドラインやスクリプトでパスワードを指定しないでください。 +.RE +.PP +\-sigfile \fIfile\fR +.RS 4 +生成された\fI\&.SF\fRファイルおよび\fI\&.DSA\fRファイルに使用するベース・ファイル名を指定します。たとえば、ファイルが\fIDUKESIGN\fRの場合、生成される\fI\&.SF\fRおよび\fI\&.DSA\fRファイルは、\fIDUKESIGN\&.SF\fRおよび\fIDUKESIGN\&.DSA\fRという名前で、署名付きJARファイルの\fIMETA\-INF\fRディレクトリに格納されます。 +.sp +ファイル内の文字は、セット\fIa\-zA\-Z0\-9_\-\fRから指定される必要があります。アルファベット、数字、下線およびハイフン文字のみを使用できます。\fI\&.SF\fRおよび\fI\&.DSA\fRのファイル名では、小文字はすべて大文字に変換されます。 +.sp +コマンドラインで\fI\-sigfile\fRオプションを指定しなかった場合、\fI\&.SF\fRファイルと\fI\&.DSA\fRファイルのベース・ファイル名は、コマンドラインで指定された別名の先頭の8文字をすべて大文字に変換したものになります。別名が8文字未満の場合は、別名がそのまま使用されます。別名に、署名ファイル名で無効な文字が含まれている場合、ファイル名を作成するために、該当する文字が下線(_)文字に変換されます。 +.RE +.PP +\-sigalg \fIalgorithm\fR +.RS 4 +JARファイルの署名に使用する署名アルゴリズムの名前を指定します。 +.sp +標準的な署名アルゴリズム名のリストは、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppAにある +Java Cryptography Architecture (JCA)リファレンス・ガイドの「付録A: 標準名」を参照してください。 +.sp +このアルゴリズムには、JARファイルの署名に使用する秘密鍵との互換性が必要です。このオプションを指定しない場合、秘密鍵のタイプに応じて、\fISHA1withDSA\fR、\fISHA256withRSA\fRまたは\fISHA256withECDSA\fRが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、\fI\-providerClass\fRオプションを使用してそのようなプロバイダをユーザーが指定する必要があります。そうでない場合、コマンドは失敗します。 +.RE +.PP +\-digestalg \fIalgorithm\fR +.RS 4 +JARファイルのエントリをダイジェストする際に使用するメッセージ・ダイジェスト・アルゴリズムの名前を指定します。 +.sp +標準的なメッセージ・ダイジェスト・アルゴリズム名のリストは、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppAにある +Java Cryptography Architecture (JCA)リファレンス・ガイドの「付録A: 標準名」を参照してください。 +.sp +このオプションを指定しない場合、\fISHA256\fRが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、\fI\-providerClass\fRオプションを使用してそのようなプロバイダをユーザーが指定する必要があります。そうでない場合、コマンドは失敗します。 +.RE +.PP +\-certs +.RS 4 +コマンドラインで、\fI\-certs\fRオプションを\fI\-verify\fRおよび\fI\-verbose\fRオプションとともに指定した場合、JARファイルの各署名者の証明書情報が出力に含まれます。この情報には、署名者の公開鍵を証明する証明書(\fI\&.DSA\fRファイルに格納)のタイプの名前が含まれ、証明書がX\&.509証明書(\fIjava\&.security\&.cert\&.X509Certificate\fRのインスタンス)の場合、署名者の識別名が含まれます。 +.sp +キーストアの確認も行われます。コマンドラインでキーストアの値が指定されていない場合、デフォルトのキーストア・ファイル(ある場合)がチェックされます。署名者の公開鍵の証明書がキーストア内のエントリと一致する場合、その署名者のキーストアのエントリの別名が丸カッコ内に表示されます。 +.RE +.PP +\-certchain \fIfile\fR +.RS 4 +コマンドラインで指定した別名によって表されるキーストア・エントリの秘密鍵に関連付けられた証明書チェーンが完全ではない場合に、使用する証明書チェーンを指定します。これは、証明書チェーン全体を保持するのに十分な領域がないハードウェア・トークン上にキーストアが格納されている場合に発生します。このファイルは一連の連結されたX\&.509証明書、PKCS#7形式の単一データ・ブロックのいずれかとなり、そのエンコーディング形式はバイナリ・エンコーディング形式、Internet RFC 1421標準で規定される印刷可能エンコーディング形式(Base64エンコーディングとも呼ばれる)のいずれかになります。インターネットRFC 1421証明書符号化規格およびhttp://tools\&.ietf\&.org/html/rfc1421を参照してください。 +.RE +.PP +\-verbose +.RS 4 +コマンドラインで\fI\-verbose\fRオプションを指定した場合、冗長モードで動作し、このモードでは、\fIjarsigner\fRは、JARの署名または検証の進行状況に関する追加情報を出力します。 +.RE +.PP +\-internalsf +.RS 4 +以前は、JARファイルの署名時に生成された\fI\&.DSA\fR +(署名ブロック)ファイルに、生成された\fI\&.SF\fRファイル(署名ファイル)のエンコードされた完全なコピーが含まれていました。 この動作は変更されました。出力JARファイル全体のサイズを小さくするために、デフォルトでは\fI\&.DSA\fRファイルには\fI\&.SF\fRファイルのコピーが含まれないようになっています。コマンドラインで\fI\-internalsf\fRを指定した場合、以前と同じように動作します。このオプションは、テストを行う場合に便利です。実際には、\fI\-internalsf\fRオプションは、オーバーヘッドが大きくなるため、使用しないでください。 +.RE +.PP +\-sectionsonly +.RS 4 +コマンドラインで\fI\-sectionsonly\fRオプションを指定した場合、JARファイルの署名時に生成される\fI\&.SF\fRファイル(署名ファイル)には、マニフェスト・ファイル全体のハッシュを含むヘッダーは含まれません。これに含まれるのは、JARファイル内の各ソース・ファイルに関連する情報およびハッシュのみです。署名ファイルを参照してください。 +.sp +デフォルトでは、最適化のために、このヘッダーが追加されます。ヘッダーが存在する場合、JARファイルを検証するたびに、検証では、まずヘッダー内のハッシュがマニフェスト・ファイル全体のハッシュと一致するかどうかを確認するためにチェックできます。一致する場合、検証は次の手順に進みます。一致しない場合、\fI\&.SF\fRファイル内の各ソース・ファイル情報セクションのハッシュが、マニフェスト・ファイル内の対応するセクションのハッシュと一致するという、あまり最適化されていない検証を実行する必要があります。JARファイルの検証を参照してください。 +.sp +\fI\-sectionsonly\fRオプションは、主にテスト用に使用されます。これを使用するとオーバーヘッドが大きくなるため、テスト用以外では使用しないでください。 +.RE +.PP +\-protected +.RS 4 +\fItrue\fRまたは\fIfalse\fRのいずれかの値を指定できます。専用PINリーダーなどの保護された認証パスによってパスワードを指定する必要がある場合、\fItrue\fRを指定します。 +.RE +.PP +\-providerClass \fIprovider\-class\-name\fR +.RS 4 +暗号化サービス・プロバイダが\fIjava\&.security\fRセキュリティ・プロパティ・ファイルに指定されていないときは、そのマスター・クラス・ファイルの名前を指定するときに使用されます。 +.sp +\fI\-providerArg ConfigFilePath\fRオプションとともに使用し、\fIkeytool\fRおよび\fIjarsigner\fRツールは、プロバイダを動的にインストールし、トークン構成ファイルへのパスに\fIConfigFilePath\fRを使用します。次の例は、Oracle PKCS #11プロバイダがセキュリティ・プロパティ・ファイルに構成されていなかった場合に\fIPKCS #11\fRキーストアを一覧表示するコマンドを示しています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jarsigner \-keystore NONE \-storetype PKCS11 \\ -.fl - \-providerClass sun.security.pkcs11.SunPKCS11 \\ -.fl - \-providerArg /foo/bar/token.config \\ -.fl +jarsigner \-keystore NONE \-storetype PKCS11 \e + \-providerClass sun\&.security\&.pkcs11\&.SunPKCS11 \e + \-providerArg /mydir1/mydir2/token\&.config \e \-list -.fl -\fP .fi -.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 キーストアプロバイダインスタンスの内容をリストします。 +.if n \{\ +.RE +.\} +.RE +.PP +\-providerName \fIproviderName\fR +.RS 4 +\fIjava\&.security\fRセキュリティ・プロパティ・ファイル内で2つ以上のプロバイダが構成された場合、\fI\-providerName\fRオプションを使用して、特定のプロバイダ・インスタンスを対象にすることができます。このオプションの引数は、プロバイダの名前です。 +.sp +Oracle PKCS #11プロバイダの場合、\fIproviderName\fRは\fISunPKCS11\-\fR\fITokenName\fRという形式になります。ここで、構成属性の表で詳細に説明されているように、\fITokenName\fRは、プロバイダ・インスタンスが構成された名前の接尾辞です。たとえば、次のコマンドは、名前接尾辞\fISmartCard\fRの\fIPKCS #11\fRキーストア・プロバイダ・インスタンスの内容を一覧表示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jarsigner \-keystore NONE \-storetype PKCS11 \\ -.fl - \-providerName SunPKCS11\-SmartCard \\ -.fl +jarsigner \-keystore NONE \-storetype PKCS11 \e + \-providerName SunPKCS11\-SmartCard \e \-list -.fl -\fP .fi -.TP 3 -できますjavaoption -指定された \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 -タイムスタンプを生成するために、 \f2jarsigner\fP は、 -.na -\f2RFC 3161\fP @ -.fi -http://www.ietf.org/rfc/rfc3161.txt で定義されている タイムスタンププロトコル (TSP) を使用して TSA と通信します。成功すると、TSA から返されたタイムスタンプトークンは署名ブロックファイルの署名とともに保存されます。 -.LP -.TP 3 -\-tsacert alias -\f2「\-tsacert alias」\fP が JAR ファイルの署名時にコマンド行に表示される場合、署名のタイムスタンプが生成されます。 \f2alias\fP は、キーストア内の現在有効な TSA の公開鍵証明書を特定します。エントリの証明書で、TSA の場所を特定する URL を含む Subject Information Access 拡張機能が確認されます。 -.LP -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 -たとえば、 \f2com.sun.sun.jarsigner.AuthSigner\fP という名前のクラスが提供する署名機構を使用するには、 \f2jarsigner\fP オプション \f2「\-altsigner com.sun.jarsigner.AuthSigner」を使用します。\fP -.LP -.TP 3 -\-altsignerpath classpathlist -クラスファイル (そのクラスファイル名は前述の \f2\-altsigner\fP オプションで指定される) およびそのクラスが依存するすべての JAR ファイルへのパスを指定します。クラスファイルが JAR ファイル内にある場合、以下の例のように JAR ファイルへのパスが指定されます。 -.LP -絶対パスまたは現在のディレクトリからの相対パスを指定できます。 \f2classpathlist\fP に複数のパスや JAR ファイルが含まれる場合には、それらを Solaris の場合はコロン (\f2:\fP) で、Windows の場合はセミコロン (\f2;\fP) でそれぞれ区切ります。目的のクラスがすでに検索パス内にある場合は、このオプションは不要です。 -.LP -クラスファイルを含む、JAR ファイルへのパスを指定する例を示します。 +.if n \{\ +.RE +.\} +.RE +.PP +\-J\fIjavaoption\fR +.RS 4 +指定された\fIjavaoption\fR文字列をJavaインタプリタに直接渡します。\fIjarsigner\fRコマンドは、インタプリタに対するラッパーです。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタ・オプションを一覧表示するには、コマンドラインで\fIjava \-h\fRまたは\fIjava \-X\fRと入力してください。 +.RE +.PP +\-tsa \fIurl\fR +.RS 4 +\fI\-tsa http://example\&.tsa\&.url\fRがJARファイルの署名時にコマンドラインにある場合、署名のタイムスタンプが生成されます。URL +\fIhttp://example\&.tsa\&.url\fRは、Time Stamping Authority (TSA)の場所を特定し、\fI\-tsacert\fRオプションを指定して検出されたURLをオーバーライドします。\fI\-tsa\fRオプションでは、TSAの公開鍵証明書をキーストアに配置する必要はありません。 +.sp +タイムスタンプを生成するために、\fIjarsigner\fRは、RFC 3161で定義されているタイムスタンプ・プロトコル(TSP)を使用してTSAと通信します。成功すると、TSAによって返されたタイムスタンプ・トークンは、署名ブロック・ファイルの署名とともに保存されます。 +.RE +.PP +\-tsacert \fIalias\fR +.RS 4 +\fI\-tsacert alias\fRがJARファイルの署名時にコマンドラインにある場合、署名のタイムスタンプが生成されます。別名は、キーストア内の有効なTSAの公開鍵証明書を特定します。エントリの証明書で、TSAの場所を特定するURLを含むSubject Information Access拡張機能が確認されます。 +.sp +\fI\-tsacert\fRオプションを使用する場合は、TSAの公開鍵証明書がキーストアに配置されている必要があります。 +.RE +.PP +\-tsapolicyid \fIpolicyid\fR +.RS 4 +TSAサーバーに送信するポリシーIDを識別するオブジェクト識別子(OID)を指定します。このオプションを指定しない場合、ポリシーIDは送信されず、TSAサーバーはデフォルトのポリシーIDを選択します。 +.sp +オブジェクト識別子は、ITU Telecommunication Standardization Sector (ITU\-T)標準であるX\&.696によって定義されます。これらの識別子は、通常、\fI1\&.2\&.3\&.4\fRなどの、負ではない数字のピリオド区切りのセットです。 +.RE +.PP +\-altsigner \fIclass\fR +.RS 4 +このオプションは、代替署名メカニズムを指定します。完全修飾クラス名は、\fIcom\&.sun\&.jarsigner\&.ContentSigner\fR抽象クラスを拡張するクラス・ファイルを識別します。このクラス・ファイルへのパスは、\fI\-altsignerpath\fRオプションによって定義されます。\fI\-altsigner\fRオプションを使用した場合、\fIjarsigner\fRコマンドでは、指定されたクラスによって提供される署名メカニズムを使用します。それ以外の場合、\fIjarsigner\fRコマンドはデフォルトの署名メカニズムを使用します。 +.sp +たとえば、\fIcom\&.sun\&.sun\&.jarsigner\&.AuthSigner\fRという名前のクラスが提供する署名メカニズムを使用するには、jarsignerのオプション\fI\-altsigner com\&.sun\&.jarsigner\&.AuthSigner\fRを使用します。 +.RE +.PP +\-altsignerpath \fIclasspathlist\fR +.RS 4 +クラス・ファイルおよびそれが依存するJARファイルへのパスを指定します。\fI\-altsigner\fRオプションを使用して、クラス・ファイル名を指定します。クラス・ファイルがJARファイル内にある場合、このオプションでは、そのJARファイルへのパスを指定します。 +.sp +絶対パスまたは現在のディレクトリへの相対パスを指定できます。\fIclasspathlist\fRに複数のパスやJARファイルが含まれる場合、それらを、Oracle Solarisの場合はコロン(:)で、Windowsの場合はセミコロン(;)で、それぞれ区切ります。目的のクラスがすでに検索パス内にある場合は、このオプションは不要です。 +.sp +次の例では、クラス・ファイルを含むJARファイルへのパスを指定する方法を示します。JARファイル名を含めます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\-altsignerpath /home/user/lib/authsigner.jar -.fl -\fP +\-altsignerpath /home/user/lib/authsigner\&.jar .fi -.LP -JAR ファイル名が含まれていることに注意してください。 -.LP -クラスファイルを含む JAR ファイルへのパスを指定する例を示します。 +.if n \{\ +.RE +.\} +次の例では、クラス・ファイルを含むJARファイルへのパスを指定する方法を示します。JARファイル名を省略します。 +.sp +.if n \{\ +.RS 4 +.\} .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 つのエントリ (およびそれ以上)」として要約されて表示されます。詳細は例の項を参照してください。 +.if n \{\ +.RE +.\} +.RE +.PP +\-strict +.RS 4 +署名または検証処理中に、コマンドにより警告メッセージが発行される場合があります。このオプションを指定すると、コマンドにより検出された重大な警告メッセージがツールの終了コードに反映されます。エラーと警告を参照してください。 +.RE +.PP +\-verbose \fIsuboptions\fR +.RS 4 +検証処理の場合、\fI\-verbose\fRオプションには、表示する情報の量を決定するサブオプションを指定します。\fI\-certs\fRオプションも指定した場合、デフォルト・モード(またはサブオプション\fIall\fR)では、エントリが処理されるたびに各エントリが表示され、その後にJARファイルの各署名者の証明書情報も表示されます。\fI\-certs\fRおよび\fI\-verbose:grouped\fRサブオプションを指定した場合、同じ署名者情報を持つエントリが、その証明書情報とともに、グループ化されて表示されます。\fI\-certs\fRおよび\fI\-verbose:summary\fRサブオプションを指定した場合、同じ署名者情報を持つエントリが、その証明書情報とともに、グループ化されて表示されます。各エントリの詳細は、\fI1つのエントリ(以上)\fRにまとめられて表示されます。例を参照してください。 +.RE +.SH "エラーと警告" +.PP +署名または検証プロセス中に、\fIjarsigner\fRコマンドで、様々なエラーまたは警告が発行される可能性があります。 +.PP +障害がある場合、\fIjarsigner\fRコマンドはコード1で終了します。障害はないが、1つ以上の重大な警告がある場合、\fI\-strict\fRオプションが指定されて\fBいない\fR場合は、\fIjarsigner\fRコマンドはコード0で終了し、\fI\-strict\fRが指定されている場合は警告コードのOR値で終了します。情報警告のみがある、または警告がまったくない場合、コマンドは常にコード0で終了します。 +.PP +たとえば、エントリの署名に使用される証明書が期限切れで、ファイルの署名を許可しないKeyUsage拡張機能を使用している場合、\fI\-strict\fRオプションが指定されていると、\fIjarsigner\fRコマンドはコード12 (=4+8)で終了します。 +.PP +\fB注意:\fR +UNIXベースのオペレーティング・システムでは0から255までの値のみが有効のため、終了コードは再利用されます。 +.PP +次のセクションでは、\fIjarsigner\fRコマンドにより発行できるエラーおよび警告の名前、コード、説明を記述します。 +.SS "障害" +.PP +コマンドライン解析エラー、JARファイルに署名する鍵ペアを検索できない、または署名付きJARファイルの検証失敗など(限定されません)、\fIjarsigner\fRコマンドの失敗理由。 +.PP +failure +.RS 4 +コード1。署名または検証が失敗します。 +.RE +.SS "重大な警告" +.PP +\fB注意:\fR +\fI\-strict\fRオプションを指定した場合、重大な警告はエラーとして報告されます。 +.PP +JARファイルの署名に使用する証明書にエラーがある、または署名付きJARファイルに他の問題があるなど、\fIjarsigner\fRコマンドが重大な警告を発行する理由。 +.PP +hasExpiredCert +.RS 4 +コード4。このjarには、署名者証明書が期限切れのエントリが含まれています。 +.RE +.PP +notYetValidCert +.RS 4 +コード4。このjarには、署名者証明書がまだ有効になっていないエントリが含まれています。 +.RE +.PP +chainNotValidated +.RS 4 +コード4。このjarには、証明書チェーンが正しく検証できないエントリが含まれています。 +.RE +.PP +badKeyUsage +.RS 4 +コード8。このJARには、署名者証明書のKeyUsage拡張機能がコード署名を許可しないエントリが含まれています。 +.RE +.PP +badExtendedKeyUsage +.RS 4 +コード8。このjarには、署名者証明書のExtendedKeyUsage拡張機能がコード署名を許可しないエントリが含まれています。 +.RE +.PP +badNetscapeCertType +.RS 4 +コード8。このjarには、署名者証明書のNetscapeCertType拡張機能がコード署名を許可しないエントリが含まれています。 +.RE +.PP +hasUnsignedEntry +.RS 4 +コード16。このjarには、整合性チェックをしていない未署名のエントリが含まれています。 +.RE +.PP +notSignedByAlias +.RS 4 +コード32。このjarには、指定された別名によって署名されていない署名済エントリが含まれています。 +.RE +.PP +aliasNotInStore +.RS 4 +コード32。このjarには、このキーストア内の別名によって署名されていない署名済エントリが含まれます。 +.RE +.SS "情報警告" +.PP +情報警告には、エラーではないが不適切とみなされるものが含まれます。コードはありません。 +.PP +hasExpiringCert +.RS 4 +このjarには、署名者証明書が6か月以内に期限切れとなるエントリが含まれています。 +.RE +.PP +noTimestamp +.RS 4 +このjarには、タイムスタンプを含まない署名が含まれています。タイムスタンプなしでは、署名者証明書の有効期限(\fIYYYY\-MM\-DD\fR)後または将来の取消日後、ユーザーはこのJARファイルを検証できない場合があります。 .RE - -.LP .SH "例" -.LP -.SS -JAR ファイルの署名 -.LP -.LP -bundle.jar という名前の JAR ファイルがあるとします。このファイルに、キーストアの別名が jane であるユーザーの非公開鍵を使って、署名を付けるとします。この場合、次のコマンドを実行すると、JAR ファイルに署名を付けて sbundle.jar という署名付き JAR ファイルを作成できます。 -.LP +.SS "JARファイルの署名" +.PP +次のコマンドを使用して、キーストア別名が\fIworking\fRディレクトリの\fImystore\fRという名前のキーストアにある\fIjane\fRであるユーザーの秘密鍵でbundle\&.jarに署名し、署名付きJARファイルに\fIsbundle\&.jar\fRという名前を付けます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - jarsigner \-keystore /working/mystore \-storepass \fP\f4<キーストアのパスワード>\fP\f3 -.fl - \-keypass \fP\f4<非公開鍵のパスワード>\fP\f3 \-signedjar sbundle.jar bundle.jar jane -.fl -\fP +jarsigner \-keystore /working/mystore + \-storepass + \-keypass + \-signedjar sbundle\&.jar bundle\&.jar jane .fi - -.LP -.LP -上のコマンドでは \f2\-sigfile\fP が指定されていないため、署名付き JAR ファイルに格納される .SF ファイルと .DSA ファイルの名前は、別名からデフォルト名がつけられます。つまり、それらの名前は \f2JANE.SF\fP および \f2JANE.DSA\fP になります。 -.LP -.LP -ストアのパスワードと非公開鍵のパスワードをあとで入力する場合は、上のコマンドを短縮して次のように入力できます。 -.LP -.nf -\f3 -.fl - jarsigner \-keystore /working/mystore -.fl - \-signedjar sbundle.jar bundle.jar jane -.fl -\fP -.fi - -.LP -.LP -デフォルトのキーストア (ホームディレクトリ内の .keystore という名前のキーストア) を使用する場合は、次に示すように、キーストアの指定を省略できます。 -.LP -.nf -\f3 -.fl - jarsigner \-signedjar sbundle.jar bundle.jar jane -.fl -\fP -.fi - -.LP -.LP -最後に、入力 JAR ファイル (\f2bundle.jar\fP) を署名付き JAR ファイルで単純に上書きする場合は、次のように \f2\-signedjar\fP オプションを指定する必要はありません。 -.LP -.nf -\f3 -.fl - jarsigner bundle.jar jane -.fl -\fP -.fi - -.LP -.SS -署名付き JAR ファイルの検証 -.LP -.LP -次に示すのは、署名付き JAR ファイルを検証し、署名が有効で JAR ファイルが改変されていないことを確認するためのコマンド例です。 -.LP -.nf -\f3 -.fl - jarsigner \-verify sbundle.jar -.fl -\fP -.fi - -.LP -.LP -検証が成功すると、次のようなメッセージが表示されます。 -.LP -.nf -\f3 -.fl - jar verified. -.fl -\fP -.fi - -.LP -.LP -というプロンプトが表示されます。検証が成功しなかった場合は、エラーメッセージが表示されます。 -.LP -.LP -\-verbose オプションを使うと、 \f2より多くの情報が\fP 表示されます。\-verbose オプション付きで \f3jarsigner\fP \f2を使用する例とその出力例を、\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 -検証時に \-verify と \-verbose オプションに加えて \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 -.SH "警告" -.LP -署名/検証処理中には、jarsigner からさまざまな警告が表示される可能性があります。これらの警告コードは次のように定義されています。 -.nf -\f3 -.fl - 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 - -.LP -.LP -\f2\-strict\fP オプションを指定した場合、検出された警告の OR を取った値がツールの終了コードとして返されます。たとえば、エントリの署名に使用される証明書が期限切れになっていて、かつその証明書の keyUsage 拡張でファイルの署名が許可されていない場合、終了コード 12 (=4+8) が返されます。 -.LP -.LP -\f3注\fP: UNIX で使用可能な値は 0 から 255 だけであるため、終了コードは再利用されます。いずれにしても、署名/検証処理が失敗すると、次の終了コードが返されます。 -.LP -.nf -\f3 -.fl -failure 1 -.fl -\fP -.fi - -.LP -.SS -JDK 1.1 との互換性 -.LP -.LP -\f3keytool\fP ツールと \f3jarsigner\fP ツールは、JDK 1.1 で提供されていた \f3javakey\fP ツールを完全に置き換えるものです。これらの新しいツールは、キーストアと非公開鍵をパスワードで保護する機能や、署名の生成に加えて署名を検証する機能など、\f3javakey\fP より多くのを機能を備えています。 -.LP -.LP -新しいキーストアアーキテクチャーは、\f3javakey\fP が作成して管理していたアイデンティティーデータベースに代わるものです。キーストア形式と、JDK 1.1 の \f3javakey\fP が使っていたデータベース形式との間には下位互換性はありません。ただし、次のことは可能です。 -.LP -.RS 3 -.TP 2 -o -\f3keytool\fP の \f2\-identitydb\fP コマンドを使うと、アイデンティティーデータベースの情報をキーストアにインポートできます。 -.TP 2 -o -\f3jarsigner\fP は、以前に \f3javakey\fP を使って署名された JAR ファイルに署名を付けることができます。 -.TP 2 -o -\f3jarsigner\fP は、\f3javakey\fPを使って署名された JAR ファイルを検証できます。したがって、jarsigner は、Java 2 SDK のキーストアではなく JDK 1.1 のアイデンティティーデータベースからの署名者別名を認識し、これらを対象に処理を行うことができます。 +.if n \{\ .RE - -.LP -.LP -次の表は、JDK 1.1.x で署名された JAR ファイルが、Java 2 プラットフォームでどのように扱われるかを示しています。 -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. +.\} +.PP +前述のコマンドでは\fI\-sigfile\fRが指定されていないため、署名付きJARファイルに格納される生成された\fI\&.SF\fRファイルおよび\fI\&.DSA\fRファイルの名前は、別名に基づいたデフォルトの名前になります。これらは、名前付きの\fIJANE\&.SF\fRおよび\fIJANE\&.DSA\fRです。 +.PP +ストアのパスワードおよび秘密鍵のパスワードを求められる場合、前述のコマンドを短縮して、次のことを実行できます。 +.sp +.if n \{\ +.RS 4 +.\} .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 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 -.LP -注 \- -.LP -.RS 3 -.TP 3 -1. -ポリシーファイル内にアイデンティティー/別名についての言及がある場合、それをキーストアにインポートして、ポリシーファイルの設定が与えられた特権に反映されるようにする必要があります。 -.TP 3 -2. -ポリシーファイル/キーストアの組み合わせは、アイデンティティーデータベース内の信頼できるアイデンティティーよりも優先されます。 -.TP 3 -3. -Java 2 プラットフォームでは、信頼できないアイデンティティーは無視されます。 -.TP 3 -4. -Java 2 SDK キーストアにインポートできるのは、信頼できるアイデンティティーだけです。 -.RE - -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -jar(1) ツールのドキュメント -.TP 2 -o -keytool(1) ツールのドキュメント -.TP 2 -o -.na -\f4jarsigner\fP\f2 ツールの使用例については、\fP @ +jarsigner \-keystore /working/mystore + \-signedjar sbundle\&.jar bundle\&.jar jane .fi -http://download.oracle.com/javase/tutorial/security/index.html -.na -\f2「Java チュートリアル」\fP\f4の\fP @ -.fi -http://download.oracle.com/javase/tutorial/index.html「Security」\f3を参照\fP +.if n \{\ .RE - -.LP +.\} +.PP +キーストアがデフォルトのキーストア(ホーム・ディレクトリ内の\&.keystore)である場合、次に示すように、キーストアを指定する必要がありません。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner \-signedjar sbundle\&.jar bundle\&.jar jane +.fi +.if n \{\ +.RE +.\} +.PP +入力JARファイル(bundle\&.jar)を署名付きJARファイルで上書きする場合、次のように\fI\-signedjar\fRオプションを指定する必要はありません。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner bundle\&.jar jane +.fi +.if n \{\ +.RE +.\} +.SS "署名付きJARファイルの検証" +.PP +署名付きJARファイルを検証して、署名が有効でJARファイルが改ざんされなかったことを確認するには、次のようなコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner \-verify sbundle\&.jar +.fi +.if n \{\ +.RE +.\} +.PP +検証が成功すると、\fIjar verified\fRが表示されます。そうでない場合は、エラー・メッセージが表示されます。\fI\-verbose\fRオプションを使用すると、詳細情報を取得できます。\fIjarsigner\fRを\fI\-verbose\fRオプションとともに使用するサンプルを、次に示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner \-verify \-verbose sbundle\&.jar + 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF + 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF + 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA + smk 2752 Fri Sep 26 16:12:30 PDT 1997 AclEx\&.class + smk 849 Fri Sep 26 16:12:46 PDT 1997 test\&.class + + s = signature was verified + m = entry is listed in manifest + k = at least one certificate was found in keystore + + jar verified\&. +.fi +.if n \{\ +.RE +.\} +.SS "証明書情報を使用した検証" +.PP +\fI\-certs\fRオプションを\fI\-verify\fRおよび\fI\-verbose\fRオプションとともに指定した場合、JARファイルの各署名者の証明書情報が出力に含まれます。この情報には、証明書タイプ、署名者の識別名情報(X\&.509証明書の場合)が含まれ、丸カッコ内には、JARファイルの公開鍵証明書がキーストア・エントリの公開鍵証明書に一致する場合の署名者のキーストア別名が含まれます。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner \-keystore /working/mystore \-verify \-verbose \-certs myTest\&.jar + + 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF + 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF + 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA + 208 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST\&.SF + 1087 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST\&.DSA + smk 2752 Fri Sep 26 16:12:30 PDT 1997 Tst\&.class + + X\&.509, CN=Test Group, OU=Java Software, O=Oracle, L=CUP, S=CA, C=US (javatest) + X\&.509, CN=Jane Smith, OU=Java Software, O=Oracle, L=cup, S=ca, C=us (jane) + + s = signature was verified + m = entry is listed in manifest + k = at least one certificate was found in keystore + + jar verified\&. +.fi +.if n \{\ +.RE +.\} +.PP +署名者の証明書がX\&.509証明書ではない場合、識別名情報は表示されません。その場合には、証明書のタイプと別名のみが表示されます。たとえば、証明書がPGP証明書で、別名が\fIbob\fRである場合、\fIPGP, (bob)\fRを取得します。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +keytool(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/tutorial/security/index\&.htmlにある +「コース: Java SEのセキュリティ機能」 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/java.1 b/jdk/src/linux/doc/man/ja/java.1 index 062d3209af8..f134a028e6c 100644 --- a/jdk/src/linux/doc/man/ja/java.1 +++ b/jdk/src/linux/doc/man/ja/java.1 @@ -1,509 +1,2553 @@ -." 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 -." 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 java 1 "07 May 2011" - -.LP -.SH "名前" -java \- Java アプリケーション起動ツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: java +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "java" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +java \- Javaアプリケーションを起動します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \fP\f3java\fP [ options ] class [ argument ... ] -.fl - \f3java\fP [ options ] \f3\-jar\fP file.jar [ argument ... ] -.fl +\fIjava\fR [\fIoptions\fR] \fIclassname\fR [\fIargs\fR] .fi - -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。 -.TP 3 -class -呼び出されるクラスの名前 -.TP 3 -file.jar -呼び出される JAR ファイルの名前。必ず \f2\-jar\fP とともに使用する -.TP 3 -argument -\f3main\fP 関数に渡される引数 +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjava\fR [\fIoptions\fR] \fI\-jar\fR \fIfilename\fR [\fIargs\fR] +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +空白で区切られたコマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIclassname\fR +.RS 4 +起動するクラスの名前。 +.RE +.PP +\fIfilename\fR +.RS 4 +呼び出されるJavaアーカイブ(JAR)ファイルの名前。\fI\-jar\fRオプションと一緒にのみ使用します。 +.RE +.PP +\fIargs\fR +.RS 4 +空白で区切られた\fImain()\fRメソッドに渡される引数。 .RE - -.LP .SH "説明" -.LP -.LP -\f3java\fP ツールは、Java アプリケーションを起動します。java ツールは、Java Runtime Environment を起動したあと、指定されたクラスをロードし、そのクラスの \f3main\fP メソッドを呼び出すことにより、Java アプリケーションを起動します。 -.LP -.LP -このメソッドは、public および static として宣言する必要があります。 また、値を返してはいけません。 さらに、 \f2String\fP 配列をパラメータとして指定できなければなりません。メソッドの宣言は、次のようになっていなければなりません。 -.LP +.PP +\fIjava\fRコマンドはJavaアプリケーションを開始します。Java Runtime Environment (JRE)を起動した後、指定したクラスをロードし、そのクラスの\fImain()\fRメソッドを呼び出すことにより、これを行います。このメソッドは、\fIpublic\fRおよび\fIstatic\fRとして宣言する必要があります。また、値は返せません。さらに、\fIString\fR配列をパラメータとして指定できる必要があります。メソッド宣言は次の形式を含みます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -public static void main(String args[]) -.fl -\fP +public static void main(String[] args) .fi - -.LP -.LP -デフォルトでは、コマンド行オプション以外の最初の引数が、呼び出されるクラスの名前になります。この名前には、完全指定のクラス名を使用する必要があります。\f3\-jar\fP オプションを指定した場合、コマンド行オプション以外の最初の引数が、アプリケーションのクラスファイルとリソースファイルを含む \f3JAR\fP アーカイブの名前になります。この場合、マニフェストの \f3Main\-Class\fP ヘッダーで指定されたクラスが起動クラスになります。 -.LP -.LP -Java Runtime は、ブートストラップクラスパス、インストール型拡張機能、およびユーザークラスパスの 3 箇所から起動クラスと他の使用されているクラスを検索します。 -.LP -.LP -クラス名または JAR ファイル名のあとにある、コマンド行オプション以外の引数は、\f3main\fP 関数に渡されます。 -.LP +.if n \{\ +.RE +.\} +.PP +\fIjava\fRコマンドを使用して、\fImain()\fRメソッドがあるか\fIjavafx\&.application\&.Application\fRを拡張するクラスをロードすることで、JavaFXアプリケーションを起動できます。後者の場合、起動ツールは\fIApplication\fRクラスのインスタンスを構成し、その\fIinit()\fRメソッドをコールし、\fIstart(javafx\&.stage\&.Stage)\fRメソッドをコールします。 +.PP +デフォルトでは、\fIjava\fRコマンドのオプションではない最初の引数は、呼び出されるクラスの完全修飾名です。\fI\-jar\fRオプションを指定した場合、その引数は、アプリケーションのクラス・ファイルとリソース・ファイルを含むJARファイルの名前になります。起動クラスは、ソース・コードの\fIMain\-Class\fRマニフェスト・ヘッダーによって指定される必要があります。 +.PP +JREは、ブートストラップ・クラス・パス、インストール済拡張機能およびユーザーのクラス・パスの3箇所から、起動クラス(およびアプリケーションで使用されている他のクラス)を検索します。 +.PP +クラス・ファイル名またはJARファイル名の後の引数は、\fImain()\fRメソッドに渡されます。 .SH "オプション" -.LP -.LP -起動ツールには、現在の実行環境および将来のリリースでサポートされる標準オプションがあります。また、仮想マシンの現在の実装では、非標準オプションのセットもサポートされます。これは、将来のリリースで変更される可能性があります。 -.LP -.SH "標準オプション" -.LP -.RS 3 -.TP 3 -\-client -.LP -Java HotSpot Client VM を選択します。64 ビット対応 JDK は現時点では、このオプションを無視し、代わりに Java Hotspot Server VM を使用します。 -.LP -デフォルトの VM の選択については、 -.na -\f2「サーバー \- クラスマシンの検出」\fP @ -.fi -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 オプションが暗黙的に選択されます。 -.LP -デフォルトの VM の選択については、 -.na -\f2「サーバー \- クラスマシンの検出」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.htmlを参照してください。 -.TP 3 -\-agentlib:libname[=options] -ネイティブエージェントライブラリ \f2libname\fP をロードします。たとえば次のように指定します。 -.LP -\-agentlib:hprof -.LP -\-agentlib:jdwp=help -.LP -\-agentlib:hprof=help -.LP -詳細については、 -.na -\f2「JVMTI エージェントのコマンド行オプション」\fP @ -.fi -http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#startingを参照してください。 -.TP 3 -\-agentpath:pathname[=options] -フルパス名を使用して、ネーティブエージェントライブラリをロードします。詳細については、 -.na -\f2「JVMTI エージェントのコマンド行オプション」\fP @ -.fi -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 環境変数の設定がオーバーライドされます。 -.LP -\f3\-classpath\fP も \f3\-cp\fP も使用されず、\f3CLASSPATH\fP も設定されていない場合、ユーザークラスパスは現在のディレクトリ (\f4.\fP) になります。 -.LP -便宜上、 \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 プログラムが展開されていないワイルドカードを認識することはありません。 -.LP -クラスパスの詳細は、 -.na -\f2「クラスパスの設定」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照してください。 -.TP 3 -\-Dproperty=value -システムプロパティーの値を設定します。 -.TP 3 -\-d32 -.TP 3 -\-d64 -それぞれ 32 ビット環境、64 ビット環境でプログラムを実行することを要求します。要求された環境がインストールされていないかサポートされていない場合は、エラーが報告されます。 -.LP -現在のところ、Java HotSpot Server VM だけが 64 ビットの操作をサポートしており、\-server オプションを使用する場合は、\-d64 も一緒に使用する必要があります。したがって、\-d64 使用時には「\-client」オプションは無視されます。この仕様は、将来のリリースでは変更になる可能性があります。 -.LP -\f3\-d32\fP と \f3\-d64\fP がどちらも指定されていない場合は、デフォルトとして、32 ビット環境で実行されます。この仕様は、将来のリリースでは変更になる可能性があります。 -.TP 3 -\-enableassertions[:"..." | : ] -.TP 3 -\-ea[:"..." | : ] -アサーションを有効にします。アサーションは、デフォルトでは無効になっています。 -.LP -引数なしの \f3enableassertions\fP または \f3\-ea\fP を指定すると、アサーションが有効になります。「\f2...\fP」で終わる引数を 1 つ指定すると、指定したパッケージとそのサブパッケージ内でアサーションが有効になります。引数として「\f2...\fP」だけを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが有効になります。「\f2...\fP」で終わらない引数を 1 つ指定すると、指定したクラス内でアサーションが有効になります。 -.LP -単一コマンド行にこれらのスイッチのインスタンスを複数指定した場合は、指定したスイッチが順番に処理されてからクラスがロードされます。したがって、たとえば、パッケージ \f2com.wombat.fruitbat\fP (サブパッケージを含む) 内でのみアサーションを有効にしてプログラムを実行するには、次のようなコマンドを使用します。 -.nf -\f3 -.fl -java \-ea:com.wombat.fruitbat...
-.fl -\fP -.fi -.LP -\f3\-enableassertions\fP および \f3\-ea\fP スイッチは、すべてのクラスローダおよびシステムクラスに適用されます。システムクラスにはクラスローダはありません。ただし、この規則には 1 つ例外があります。それは、引数なしの形式でこのスイッチを指定すると、その指定がシステムに適用されない、ということです。この例外を利用すれば、システムクラスを除くすべてのクラスでアサーションを簡単に有効にすることができます。すべてのシステムクラスでアサーションを有効にするために、別のスイッチが用意されています。このあとの \f3\-enablesystemassertions\fP を参照してください。 -.TP 3 -\-disableassertions[:"..." | : ] -.TP 3 -\-da[:"..." | : ] -アサーションを無効にします。これがデフォルトです。 -.LP -引数なしの \f3disableassertions\fP または \f3\-da\fP を指定すると、アサーションが無効になります。「\f2...\fP」で終わる引数を 1 つ指定すると、指定したパッケージとそのサブパッケージ内でアサーションが無効になります。引数として「\f2...\fP」だけを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが無効になります。「\f2...\fP」で終わらない引数を 1 つ指定すると、指定したクラス内でアサーションが無効になります。 -.LP -パッケージ \f2com.wombat.fruitbat\fP 内ではアサーションを有効にし、クラス \f2com.wombat.fruitbat.Brickbat\fP 内ではアサーションを無効にしたうえで、プログラムを実行するには、次のようなコマンドを使用します。 -.nf -\f3 -.fl -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 を参照してください。 -.TP 3 -\-enablesystemassertions -.TP 3 -\-esa -すべてのシステムクラス内でアサーションを有効にします。つまり、システムクラスについてアサーションのデフォルトステータスを \f2true\fP に設定します。 -.TP 3 -\-disablesystemassertions -.TP 3 -\-dsa -すべてのシステムクラス内でアサーションを無効にします。 -.TP 3 -\-jar -JAR ファイルにカプセル化されたプログラムを実行します。最初の引数は、起動クラスの名前ではなく、JAR ファイルの名前にします。このオプションが機能するには、JAR ファイルのマニフェストに\f3「Main\-Class:\fP\f4classname\fP\f3」\fPという形式の行を指定する必要があります。\f2classname\fP には、アプリケーションの開始位置として機能する \f2public\ static\ void\ main(String[]\ args)\fP メソッドを含むクラスを指定します。JAR ファイルとそのマニフェストについては、jar(1)と、 -.na -\f2Java チュートリアル\fP @ -.fi -http://download.oracle.com/javase/tutorial/deployment/jarの「Trail: Jar Files」を参照してください。 -.LP -このオプションを使用すると、指定した JAR ファイルがすべてのユーザークラスのソースになり、ユーザークラスパスのほかの設定は無視されます。 -.LP -Solaris 8 では、「java \-jar」オプションで実行できる JAR ファイルは、実行権限のセットを保持しています。このため、「java \-jar」を使用しないで実行することも可能です。Java Archive (JAR) ファイル -.na - @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/index.html -.TP 3 -\-javaagent:jarpath[=options] -Java プログラミング言語エージェントをロードします。 java.lang.instrument を参照してください。 -.na - @ -.fi -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) アクティビティーに関する情報を報告します。 -.TP 3 -\-version -バージョン情報を表示して終了します。 -.TP 3 -\-version:release -コマンド行に指定されたクラスまたは JAR ファイルが、\f2release\fP で指定されたバージョンを必要としていることを示します。起動された java コマンドのバージョンがこの指定内容を満たさず、かつ適切な実装がシステム上で見つかった場合には、その適切な実装が使用されます。 -.LP -\f2release\fP では、特定のバージョンを指定できるだけでなく、バージョン文字列と呼ばれるバージョンのリストを指定することもできます。バージョン文字列は、いくつかのバージョン範囲を空白で区切った形式の順序付きリストです。バージョン範囲は、バージョン ID、バージョン ID の後にアスタリスク (*) を付加したもの、バージョン ID の後にプラス記号 (+) を付加したもの、2 つのバージョン範囲をアンパサンド (&) で結合したもの、のいずれかになります。アスタリスクはプレフィックス一致を、プラス記号は指定されたバージョン以上を、アンパサンドは 2 つのバージョン範囲の論理積を、それぞれ意味します。次に例を示します。 -.nf -\f3 -.fl -\-version:"1.6.0_13 1.6*&1.6.0_10+" -.fl -\fP -.fi -上記の意味は、バージョン 1.6.0_13、1.6 をバージョン ID プレフィックスに持つ 1.6.0_10 以上のバージョン、のいずれかをクラスまたは JAR ファイルが必要としている、ということです。バージョン文字列の厳密な構文や定義については、「Java Network Launching Protocol & API Specification (JSR\-56)」の「Appendix A」を参照してください。 -.LP -JAR ファイルの場合は通常、バージョン要件をコマンド行に指定するよりも、JAR ファイルのマニフェスト内に指定することが推奨されています。 -.LP -このオプションの使用に関する重要なポリシー情報については、後述の「注」節を参照してください。 -.TP 3 -\-showversion -バージョン情報を表示して続行します。 -.TP 3 -\-? -.TP 3 -\-help -使用法を表示して終了します。 -.TP 3 -\-splash:imagepath -\f2imagepath\fP に指定された画像を含むスプラッシュ画面を表示します。 -.TP 3 -\-X -非標準オプションに関する情報を表示して終了します。 +.PP +\fIjava\fRコマンドは、次のカテゴリに分類できる広範なオプションをサポートしています。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +標準オプション .RE - -.LP -.SS +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} 非標準オプション -.LP -.RS 3 -.TP 3 -\-Xint -インタプリタ専用モードで動作します。ネイティブコードへのコンパイルは無効になり、すべてのバイトコードがインタプリタによって実行されます。Java HotSpot VM に対応するコンパイラが提供するパフォーマンス上の利点は、このモードでは実現されません。 -.TP 3 -\-Xbatch -バックグラウンドコンパイルを無効にします。通常、VM では、バックグラウンドコンパイルが終了するまで、メソッドをバックグラウンドタスクとしてコンパイルし、インタプリタモードでメソッドを実行します。\f2\-Xbatch\fP フラグを指定すると、バックグラウンドコンパイルが無効になり、すべてのメソッドのコンパイルが完了するまでフォアグラウンドタスクとして処理されます。 -.TP 3 -\-Xbootclasspath:bootclasspath -ブートクラスファイルを探すディレクトリ、JAR アーカイブ、および ZIP アーカイブをコロンで区切ったリストで指定します。指定したパスに存在するブートクラスファイルが、Java プラットフォーム JDK に含まれるブートクラスファイルの代わりに使用されます。\f2注: rt.jar 内のクラスをオーバーライドする目的でこのオプションを使用するアプリケーションは、システムに配置しないでください。Java Runtime Environment バイナリコードライセンス違反になります。\fP -.TP 3 -\-Xbootclasspath/a:path -ディレクトリ、JAR アーカイブ、および ZIP アーカイブのパスをコロンで区切って指定します。パスはデフォルトのブートストラップクラスパスのあとに追加されます。 -.TP 3 -\-Xbootclasspath/p:path -ディレクトリ、JAR アーカイブ、および ZIP アーカイブのパスをコロンで区切って指定します。パスはデフォルトのブートストラップクラスパスの前に追加されます。\f2注: rt.jar 内のクラスをオーバーライドする目的でこのオプションを使用するアプリケーションは、システムに配置しないでください。Java Runtime Environment バイナリコードライセンス違反になります。\fP -.TP 3 -\-Xcheck:jni -Java Native Interface (JNI) 機能に対して追加チェックを行います。具体的には、Java 仮想マシンは JNI 要求を処理する前に、JNI 関数に渡されるパラメータと、実行環境のデータを検証します。無効なデータが見つかった場合は、ネイティブコードに問題があることを示しているため、Java 仮想マシンは致命的エラーを発生して終了します。このオプションを使用すると、パフォーマンス低下が予想されます。 -.TP 3 -\-Xfuture -クラスとファイルの形式を厳密にチェックします。下位互換性を保つため、JDK の仮想マシンが実行するデフォルトの形式チェックは、JDK ソフトウェアのバージョン 1.1.x が実行するチェックと同程度の厳密さになっています。\f3\-Xfuture\fP フラグを指定すると、クラスファイル形式の仕様への準拠を強化するためのより厳密なチェックが有効になります。Java アプリケーション起動ツールの将来のリリースでは、より厳密なチェックがデフォルトになるため、新しいコードを開発するときにはこのフラグを使用することをお勧めします。 -.TP 3 -\-Xnoclassgc -クラスのガベージコレクションを無効にします。このオプションを使用すると、ロード済みクラスからメモリーが回復されることがなくなるため、全体的なメモリー使用量が増大します。この場合、アプリケーションによっては OutOfMemoryError がスローされる可能性があります。 -.TP 3 -\-Xincgc -インクリメンタルガーベジコレクタを有効にします。インクリメンタルガベージコレクタは、デフォルトでは無効になっています。 有効にすると、プログラムの実行中にガベージコレクションによる一時停止が発生しなくなります。インクリメンタルガベージコレクタは、プログラムと同時に実行することがあり、この場合、プログラムの利用できるプロセッサ能力が低下します。 -.TP 3 -\-Xloggc:file -\-verbose:gc と同様にガベージコレクションイベントが発生するたびに報告しますが、そのデータを \f2file\fP に記録します。\f2\-verbose:gc\fP を指定したときに報告される情報のほかに、報告される各イベントの先頭に、最初のガベージコレクションイベントからの経過時間 (秒単位) が付け加えられます。 -.LP -ネットワークの応答時間によって JVM の実行速度が低下するのを避けるため、このファイルの格納先は、常にローカルファイルシステムにしてください。ファイルシステムが満杯になると、ファイルは切り詰められ、そのファイルにデータが引き続き記録されます。このオプションと \f2\-verbose:gc\fP の両方がコマンド行に指定されている場合は、このオプションが優先されます。 -.TP 3 -\-Xmsn -メモリー割り当てプールの初期サイズをバイト数で指定します。指定する値は、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 - \-Xms6291456 -.fl - \-Xms6144k -.fl - \-Xms6m -.fl - -.fl -\fP -.fi -.TP 3 -\-Xmxn -メモリー割り当てプールの最大サイズをバイト数で指定します。指定する値は、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 -例: -.nf -\f3 -.fl - \-Xmx83886080 -.fl - \-Xmx81920k -.fl - \-Xmx80m -.fl - -.fl -\fP -.fi -Solaris 7 および Solaris 8 SPARC プラットフォームの場合のこの値の上限は、およそ 4000m からオーバーヘッドの量を引いたものです。Solaris 2.6 および x86 プラットフォームの場合の上限は、およそ 2000m からオーバーヘッドの量を引いたものです。Linux プラットフォームの場合の上限は、およそ 2000m からオーバーヘッドの量を引いたものです。 -.TP 3 -\-Xprof -実行中のプログラムのプロファイルを生成し、プロファイルデータを標準出力に出力します。このオプションは、プログラム開発用のユーティリティーとして提供されています。 本番稼動システムでの使用を目的としたものではありません。 -.TP 3 -\-Xrs -Java 仮想マシン (JVM) によるオペレーティングシステムシグナルの使用を減らします。 -.LP -以前のリリースでは、Java アプリケーションを秩序正しくシャットダウンするためのシャットダウンフック機能が追加されました。この機能により、JVM が突然終了した場合でも、シャットダウン時にユーザークリーンアップコード (データベース接続のクローズなど) を実行できるようになりました。 -.LP -Sun の JVM は、シグナルをキャッチすることによって、JVM の異常終了のためのシャットダウンフックを実装します。JVM は、SIGHUP、SIGINT、および SIGTERM を使用して、シャットダウンフックの実行を開始します。 -.LP -JVM は、デバッグの目的でスレッドスタックをダンプするという、1.2 より前からある機能を実現するためにも、同様の機構を使用します。Sun の JVM は、スレッドダンプを実行するために SIGQUIT を使用します。 -.LP -JVM を埋め込んでいるアプリケーションが SIGINT や SIGTERM などのシグナルを頻繁にトラップする必要があると、JVM そのもののシグナルハンドラの処理に支障が出る可能性があります。\f3\-Xrs\fP コマンド行オプションを使用すると、この問題に対処できます。Sun の JVM に対して \f3\-Xrs\fP を使用すると、SIGINT、SIGTERM、SIGHUP、および SIGQUIT に対するシグナルマスクは JVM によって変更されず、これらのシグナルに対するシグナルハンドラはインストールされません。 -.LP -\f3\-Xrs\fP を指定した場合、次の 2 つの影響があります。 -.RS 3 -.TP 2 -o -SIGQUIT によるスレッドダンプを利用できない -.TP 2 -o -シャットダウンフック処理の実行は、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 以外のシグナルを使用させます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +高度なランタイム・オプション .RE - -.LP -.SH "注" -.LP -.LP -\f3\-version:\fP\f2release\fP コマンド行オプションでは、どんなに複雑にリリースを指定してもかまいません。ただし、現実的なリリース指定の限られたサブセットを使用するだけでも適切なポリシーを表現できるため、それらのサブセットのみが完全にサポートされます。それらのポリシーを次に示します。 -.LP -.RS 3 -.TP 3 -1. -任意のバージョン。これは、このオプションを使用しないことで表現できます。 -.TP 3 -2. -ある特定のバージョン ID よりも大きい任意のバージョン。次に例を示します。 -.nf -\f3 -.fl -"1.6.0_10+" -.fl -\fP -.fi -この場合、 \f21.6.0_10\fP よりも大きい任意のバージョンが使用されます。これは、指定されたバージョンで特定のインタフェースが導入された (あるいはそのバグが修正された) 場合に便利です。 -.TP 3 -3. -ある特定のバージョン ID よりも大きいバージョン。ただし、そのリリースファミリの上限によって制限するもの。次に例を示します。 -.nf -\f3 -.fl -"1.6.0_10+&1.6*" -.fl -\fP -.fi -.TP 3 -4. -上の項目 2 と項目 3 の「OR」式。次に例を示します。 -.nf -\f3 -.fl -"1.6.0_10+&1.6* 1.7+" -.fl -\fP -.fi -これは項目 2 に似ていますが、ある変更が特定のリリース (1.7) で導入されたが、その同じ変更が以前のリリースのアップデートでも利用可能になった、という場合に便利です。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +高度なJITコンパイラ・オプション +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +高度なサービスアビリティ・オプション +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +高度なガベージ・コレクション・オプション +.RE +.PP +標準のオプションは、Java Virtual Machine (JVM)のすべての実装でサポートすることが保証されます。これらは、JREのバージョンの確認、クラス・パスの設定、冗長な出力の有効化などの一般的なアクションに使用されます。 +.PP +標準以外のオプションは、Java HotSpot仮想マシンに固有の汎用オプションであるため、すべてのJVM実装でサポートされることは保証されず、変更される可能性があります。これらのオプションは\fI\-X\fRで開始します。 +.PP +拡張オプションは、不用意に使用しないことをお薦めします。これらは、特定のシステム要件を持つことが多く、システム構成パラメータへの特権アクセスが必要な場合があるJava HotSpot仮想マシン操作の特定の領域を調整するために使用される開発者オプションです。これらは、すべてのJVM実装でサポートされることは保証されず、変更される可能性があります。拡張オプションは\fI\-XX\fRで始まります。 +.PP +最新リリースで非推奨または削除されるオプションを追跡するために、ドキュメントの最後に非推奨で削除されたオプションという名前のセクションがあります。 +.PP +ブール・オプションは、デフォルトで無効になっている機能を有効にしたり、デフォルトで有効になっている機能を無効にするために使用されます。このようなオプションは、パラメータを必要としません。ブール値\fI\-XX\fRオプションは、プラス記号(\fI\-XX:+\fR\fIOptionName\fR)を使用して有効にし、マイナス記号(\fI\-XX:\-\fR\fIOptionName\fR)を使用して無効にします。 +.PP +引数が必要なオプションの場合、引数は、オプション名を空白、コロン(:)または等号(=)で区切ったものになるか、あるいは引数がオプションの後に直接続く場合もあります(正確な構文は各オプションによって異なります)。サイズをバイト単位で指定するよう求められている場合、接尾辞を使用しないか、あるいはキロバイト(KB)には接尾辞\fIk\fRまたは\fIK\fR、メガバイト(MB)には接尾辞\fIm\fRまたは\fIM\fR、ギガバイト(GB)には接尾辞\fIg\fRまたは\fIG\fRを使用します。たとえば、サイズを8GBに設定するには、\fI8g\fR、\fI8192m\fR、\fI8388608k\fRまたは\fI8589934592\fRのいずれかを引数として指定できます。パーセントの指定が必要な場合は、0から1の数値を使用します(たとえば、25%の場合は\fI0\&.25\fRを指定します)。 +.SS "標準オプション" +.PP +これらは、JVMのすべての実装でサポートされる最も一般的に使用されるオプションです。 +.PP +\-agentlib:\fIlibname\fR[=\fIoptions\fR] +.RS 4 +指定したネイティブ・エージェント・ライブラリをロードします。ライブラリ名の後に、ライブラリに固有のオプションのカンマ区切りリストを使用できます。 +.sp +オプション\fI\-agentlib:foo\fRを指定した場合、JVMは、\fILD_LIBRARY_PATH\fRシステム変数(OS Xでは、この変数は\fIDYLD_LIBRARY_PATH\fRになります)で指定された場所に\fIlibfoo\&.so\fRという名前のライブラリをロードしようとします。 +.sp +次の例では、スタックの深さ3で、20ミリ秒ごとにヒープ・プロファイリング・ツール(HPROF)ライブラリをロードして、サンプルのCPU情報を取得する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-agentlib:hprof=cpu=samples,interval=20,depth=3 +.fi +.if n \{\ +.RE +.\} +次の例では、メイン・クラスのロード前にJVMを一時停止して、Javaデバッグ・ワイヤ・プロトコル(JDWP)ライブラリをロードして、ポート8000でのソケット接続用にリスニングする方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-agentlib:jdwp=transport=dt_socket,server=y,address=8000 +.fi +.if n \{\ +.RE +.\} +ネイティブ・エージェント・ライブラリの詳細は、次を参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/8/docs/api/java/lang/instrument/package\-summary\&.htmlにある\fIjava\&.lang\&.instrument\fRパッケージの説明 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/8/docs/platform/jvmti/jvmti\&.html#startingにあるJVMツール・インタフェース・ガイドのエージェントのコマンドライン・オプションに関する項 +.RE +.RE +.PP +\-agentpath:\fIpathname\fR[=\fIoptions\fR] +.RS 4 +絶対パス名で指定されたネイティブ・エージェント・ライブラリをロードします。このオプションは\fI\-agentlib\fRと同等ですが、ライブラリのフル・パスおよびファイル名を使用します。 +.RE +.PP +\-client +.RS 4 +Java HotSpot Client VMを選択します。64ビット・バージョンのJava SE Development Kit (JDK)では、現在、このオプションは無視され、かわりにServer JVMが使用されます。 +.sp +デフォルトのJVM選択は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/server\-class\&.htmlにある +サーバークラス・マシンの検出を参照してください。 +.RE +.PP +\-D\fIproperty\fR=\fIvalue\fR +.RS 4 +システム・プロパティの値を設定します。\fIproperty\fR変数は、プロパティの名前を表す、空白のない文字列です。\fIvalue\fR変数は、プロパティの値を表す文字列です。\fIvalue\fRが空白を含む文字列の場合、それを引用符で囲みます(例: +\fI\-Dfoo="foo bar"\fR)。 +.RE +.PP +\-d32 +.RS 4 +アプリケーションを32ビット環境で実行します。32ビット環境がインストールされていないかサポートされていない場合は、エラーが報告されます。デフォルトでは、64ビット・システムが使用されている場合を除き、アプリケーションは32ビット環境で実行されます。 +.RE +.PP +\-d64 +.RS 4 +アプリケーションを64ビット環境で実行します。64ビット環境がインストールされていないかサポートされていない場合は、エラーが報告されます。デフォルトでは、64ビット・システムが使用されている場合を除き、アプリケーションは32ビット環境で実行されます。 +.sp +現在のところ、Java HotSpot Server VMのみが64ビットの操作をサポートしているため、\fI\-d64\fR使用時には\fI\-server\fRオプションが暗黙的に使用されます。\fI\-d64\fR使用時には、\fI\-client\fRオプションは無視されます。この仕様は、将来のリリースでは変更になる可能性があります。 +.RE +.PP +\-disableassertions[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR], \-da[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR] +.RS 4 +アサーションを無効にします。デフォルトでは、アサーションはすべてのパッケージおよびクラスで無効になっています。 +.sp +引数なしの\fI\-disableassertions\fR +(\fI\-da\fR)を指定すると、すべてのパッケージおよびクラスでアサーションが無効になります。\fI\&.\&.\&.\fRで終わる\fIpackagename\fR引数を指定すると、指定したパッケージとそのサブパッケージ内でアサーションが無効になります。引数として\fI\&.\&.\&.\fRのみを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが無効になります。\fIclassname\fR引数を指定すると、切替えによって、指定したクラス内でアサーションが無効になります。 +.sp +\fI\-disableassertions\fR +(\fI\-da\fR)オプションは、すべてのクラス・ローダーおよびシステム・クラスに適用されます(システム・クラスにはクラス・ローダーはありません)。このルールには1つ例外があります。オプションの引数が指定されていない場合は、システム・クラスに適用されません。これにより、システム・クラスを除くすべてのクラスでアサーションを簡単に無効にすることができます。\fI\-disablesystemassertions\fRオプションを使用すると、すべてのシステム・クラスでアサーションを無効にすることができます。 +.sp +特定のパッケージやクラスでアサーションを明示的に有効にするには、\fI\-enableassertions\fR +(\fI\-ea\fR)オプションを使用します。両方のオプションを同時に使用できます。たとえば、パッケージ\fIcom\&.wombat\&.fruitbat\fR +(およびそのサブパッケージ)ではアサーションを有効にして、クラス\fIcom\&.wombat\&.fruitbat\&.Brickbat\fRではアサーションを無効にして、\fIMyClass\fRアプリケーションを実行するには、次のコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-ea:com\&.wombat\&.fruitbat\&.\&.\&. \-da:com\&.wombat\&.fruitbat\&.Brickbat MyClass +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-disablesystemassertions, \-dsa +.RS 4 +すべてのシステム・クラス内でアサーションを無効にします。 +.RE +.PP +\-enableassertions[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR], \-ea[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR] +.RS 4 +アサーションを有効にします。デフォルトでは、アサーションはすべてのパッケージおよびクラスで無効になっています。 +.sp +引数なしの\fI\-enableassertions\fR +(\fI\-ea\fR)を指定すると、すべてのパッケージおよびクラスでアサーションが有効になります。\fI\&.\&.\&.\fRで終わる\fIpackagename\fR引数を指定すると、指定したパッケージとそのサブパッケージ内でアサーションが有効になります。引数として\fI\&.\&.\&.\fRのみを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが有効になります。\fIclassname\fR引数を指定すると、切替えによって、指定したクラス内でアサーションが有効になります。 +.sp +\fI\-enableassertions\fR +(\fI\-ea\fR)オプションは、すべてのクラス・ローダーおよびシステム・クラスに適用されます(システム・クラスにはクラス・ローダーはありません)。このルールには1つ例外があります。オプションの引数が指定されていない場合は、システム・クラスに適用されません。これにより、システム・クラスを除くすべてのクラスでアサーションを簡単に有効にすることができます。\fI\-enablesystemassertions\fRオプションは、すべてのシステム・クラスでアサーションを有効にする別のスイッチを提供します。 +.sp +特定のパッケージやクラスでアサーションを明示的に無効にするには、\fI\-disableassertions\fR +(\fI\-da\fR)オプションを使用します。単一コマンドにこれらのスイッチのインスタンスを複数指定した場合は、指定したスイッチが順番に処理されてからクラスがロードされます。たとえば、パッケージ\fIcom\&.wombat\&.fruitbat\fR +(およびそのサブパッケージ)でのみアサーションを有効にして、クラス\fIcom\&.wombat\&.fruitbat\&.Brickbat\fRではアサーションを無効にして、\fIMyClass\fRアプリケーションを実行するには、次のコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-ea:com\&.wombat\&.fruitbat\&.\&.\&. \-da:com\&.wombat\&.fruitbat\&.Brickbat MyClass +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-enablesystemassertions, \-esa +.RS 4 +すべてのシステム・クラス内でアサーションを有効にします。 +.RE +.PP +\-help, \-? +.RS 4 +実際にJVMを実行せずに、\fIjava\fRコマンドの使用状況情報を表示します。 +.RE +.PP +\-jar \fIfilename\fR +.RS 4 +JARファイルにカプセル化されたプログラムを実行します。\fIfilename\fR引数は、使用するアプリケーションの開始点として機能する\fIpublic static void main(String[] args)\fRメソッドを定義する、\fIMain\-Class:\fR\fIclassname\fRという形式の1行を含むマニフェストを持つJARファイルの名前です。 +.sp +\fI\-jar\fRオプションを使用すると、指定したJARファイルがすべてのユーザー・クラスのソースになり、クラス・パスの他の設定は無視されます。 +.sp +JARファイルの詳細は、次のリソースを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jar/index\&.htmlにあるJavaアーカイブ(JAR)ファイルのガイド +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/tutorial/deployment/jar/index\&.htmlにある +「レッスン: JARファイルのプログラムのパッケージ化」 +.RE +.RE +.PP +\-javaagent:\fIjarpath\fR[=\fIoptions\fR] +.RS 4 +指定したJavaプログラミング言語エージェントをロードします。Javaアプリケーションのインストゥルメントの詳細は、http://docs\&.oracle\&.com/javase/8/docs/api/java/lang/instrument/package\-summary\&.htmlにあるJava APIドキュメントの\fIjava\&.lang\&.instrument\fRパッケージの説明を参照してください。 +.RE +.PP +\-jre\-restrict\-search +.RS 4 +ユーザー・プライベートなJREをバージョン検索に含めます。 +.RE +.PP +\-no\-jre\-restrict\-search +.RS 4 +ユーザー・プライベートなJREをバージョン検索から除外します。 +.RE +.PP +\-server +.RS 4 +Java HotSpot Server VMを選択します。64ビット・バージョンのJDKでは、Server VMのみをサポートしているため、その場合、このオプションは暗黙的です。 +.sp +デフォルトのJVM選択は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/server\-class\&.htmlにある +サーバークラス・マシンの検出を参照してください。 +.RE +.PP +\-showversion +.RS 4 +バージョン情報を表示し、アプリケーションの実行を続行します。このオプションは\fI\-version\fRオプションと同等ですが、\-versionはバージョン情報の表示後にJVMに終了を指示する点が異なります。 +.RE +.PP +\-splash:\fIimgname\fR +.RS 4 +\fIimgname\fRで指定されたイメージを含むスプラッシュ画面を表示します。たとえば、アプリケーションの起動時に\fIimages\fRディレクトリの\fIsplash\&.gif\fRファイルを表示するには、次のオプションを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-splash:images/splash\&.gif +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-verbose:class +.RS 4 +ロードされた各クラスに関する情報を表示します。 +.RE +.PP +\-verbose:gc +.RS 4 +各ガベージ・コレクション(GC)イベントに関する情報を表示します。 +.RE +.PP +\-verbose:jni +.RS 4 +ネイティブ・メソッドの使用およびその他のJava Native Interface (JNI)アクティビティに関する情報を表示します。 +.RE +.PP +\-version +.RS 4 +バージョン情報を表示してから終了します。このオプションは\fI\-showversion\fRオプションと同等ですが、\-showversionはバージョン情報の表示後にJVMに終了を指示しない点が異なります。 +.RE +.PP +\-version:\fIrelease\fR +.RS 4 +アプリケーションの実行に使用するリリース・バージョンを指定します。コールされた\fIjava\fRコマンドのバージョンがこの指定内容を満たさず、かつ適切な実装がシステム上で見つかった場合には、その適切な実装が使用されます。 +.sp +\fIrelease\fR引数は、正確なバージョン文字列、または空白で区切られたバージョン文字列とバージョン範囲のリストを指定します。\fIバージョン文字列\fRは、次の形式で、開発者のバージョン番号を指定します: +\fI1\&.\fR\fIx\fR\fI\&.0_\fR\fIu\fR +(\fIx\fRはメジャー・バージョン番号、\fIu\fRは更新バージョン番号です)。\fIバージョン範囲\fRは、このバージョン以降を指定するにはバージョン文字列の後にプラス記号(\fI+\fR)を続けたもの、または一致する接頭辞を含む任意のバージョン文字列を指定するには一部のバージョン文字列の後にアスタリスク(\fI*\fR)を続けたもので構成されます。論理\fIOR\fRの組合せには空白、2つのバージョンの文字列/範囲の論理\fIAND\fRの組合せにはアンパサンド(\fI&\fR)を使用して、バージョン文字列とバージョン範囲を組み合せることができます。たとえば、クラスまたはJARファイルの実行にJRE 6u13 (1\&.6\&.0_13)または6u10 (1\&.6\&.0_10)以降の任意のJRE 6のいずれかを必要とする場合、次を指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-version:"1\&.6\&.0_13 1\&.6* & 1\&.6\&.0_10+" +.fi +.if n \{\ +.RE +.\} +引用符が必要なのは、\fIrelease\fRパラメータに空白がある場合のみです。 +.sp +JARファイルの場合は、バージョン要件をコマンドラインに指定するよりも、JARファイルのマニフェスト内に指定することが推奨されています。 +.RE +.SS "非標準オプション" +.PP +これらのオプションは、Java HotSpot仮想マシンに固有の汎用オプションです。 +.PP +\-X +.RS 4 +使用可能なすべての\fI\-X\fRオプションのヘルプを表示します。 +.RE +.PP +\-Xbatch +.RS 4 +バックグラウンド・コンパイルを無効にします。デフォルトでは、JVMでは、バックグラウンド・コンパイルが終了するまで、メソッドをバックグラウンド・タスクとしてコンパイルし、インタプリタ・モードでメソッドを実行します。\fI\-Xbatch\fRフラグを指定すると、バックグラウンド・コンパイルが無効になり、すべてのメソッドのコンパイルが完了するまでフォアグラウンド・タスクとして処理されます。 +.sp +このオプションは\fI\-XX:\-BackgroundCompilation\fRと同等です。 +.RE +.PP +\-Xbootclasspath:\fIpath\fR +.RS 4 +ブート・クラス・ファイルを検索するディレクトリ、JARファイルおよびZIPアーカイブの、コロン(:)で区切られたリストを指定します。これらは、JDKに含まれるブート・クラス・ファイルのかわりに使用されます。 +.sp +JREバイナリ・コード・ライセンスに違反するため、\fIrt\&.jar\fRでクラスをオーバーライドする目的で、このオプションを使用するアプリケーションをデプロイしないでください。 +.RE +.PP +\-Xbootclasspath/a:\fIpath\fR +.RS 4 +デフォルトのブートストラップ・クラス・パスの最後に追加するディレクトリ、JARファイルおよびZIPアーカイブの、コロン(:)で区切られたリストを指定します。 +.sp +JREバイナリ・コード・ライセンスに違反するため、\fIrt\&.jar\fRでクラスをオーバーライドする目的で、このオプションを使用するアプリケーションをデプロイしないでください。 +.RE +.PP +\-Xbootclasspath/p:\fIpath\fR +.RS 4 +デフォルトのブートストラップ・クラス・パスの先頭に追加するディレクトリ、JARファイルおよびZIPアーカイブの、コロン(:)で区切られたリストを指定します。 +.sp +JREバイナリ・コード・ライセンスに違反するため、\fIrt\&.jar\fRでクラスをオーバーライドする目的で、このオプションを使用するアプリケーションをデプロイしないでください。 +.RE +.PP +\-Xboundthreads +.RS 4 +ユーザー・レベルのスレッドをカーネル・スレッドにバインドします。 +.RE +.PP +\-Xcheck:jni +.RS 4 +Java Native Interface (JNI)機能に対して追加チェックを行います。具体的には、これは、JNIリクエストを処理する前に、JNI関数に渡されるパラメータと実行環境のデータを検証します。無効なデータが見つかった場合は、ネイティブ・コードに問題があることを示しているため、JVMはリカバリ不能なエラーを発生して終了します。このオプションを使用すると、パフォーマンス低下が予想されます。 +.RE +.PP +\-Xcomp +.RS 4 +最初の呼出しでJavaコードおよびコンパイル・メソッドの解釈を無効にします。デフォルトでは、JITコンパイラは、10,000の解釈されたメソッド呼出しを実行して、効率的なコンパイルのための情報を収集します。効率を犠牲にしてコンパイルのパフォーマンスを向上させるには、\fI\-Xcomp\fRフラグを使用して、解釈されたメソッド呼出しを無効にします。 +.sp +\fI\-XX:CompileThreshold\fRオプションを使用して、コンパイルの前に、解釈されたメソッド呼出しの数を変更することもできます。 +.RE +.PP +\-Xdebug +.RS 4 +何も行いません。下位互換性のために用意されています。 +.RE +.PP +\-Xdiag +.RS 4 +追加の診断メッセージを表示します。 +.RE +.PP +\-Xfuture +.RS 4 +クラス・ファイル形式の仕様への準拠を強化する、厳密なクラス・ファイル形式のチェックが有効になります。将来のリリースでは、より厳密なチェックがデフォルトになるため、新しいコードを開発するときには、開発者はこのフラグを使用することをお薦めします。 +.RE +.PP +\-Xincgc +.RS 4 +増分GCを有効にします。 +.RE +.PP +\-Xint +.RS 4 +インタプリタ専用モードでアプリケーションを実行します。ネイティブ・コードへのコンパイルは無効になり、すべてのバイトコードがインタプリタによって実行されます。ジャスト・イン・タイム(JIT)コンパイラが提供するパフォーマンス上の利点は、このモードでは実現されません。 +.RE +.PP +\-Xinternalversion +.RS 4 +\fI\-version\fRオプションより詳細なJVMバージョン情報を表示してから終了します。 +.RE +.PP +\-Xloggc:\fIfilename\fR +.RS 4 +詳細なGCイベント情報をロギング用にリダイレクトするファイルを設定します。このファイルに書き込まれる情報は、記録された各イベントの前に行われる最初のGCイベント以降に経過した時間を指定した\fI\-verbose:gc\fRの出力と類似しています。\fI\-Xloggc\fRオプションは\fI\-verbose:gc\fRをオーバーライドします(これらの両方が同じ\fIjava\fRコマンドで指定された場合)。 +.sp +例: +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xloggc:garbage\-collection\&.log +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-Xmaxjitcodesize=\fIsize\fR +.RS 4 +JITコンパイルされたコードの最大コード・キャッシュ・サイズ(バイト単位)を指定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、この値は48MBに設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xmaxjitcodesize=48m +.fi +.if n \{\ +.RE +.\} +このオプションは\fI\-XX:ReservedCodeCacheSize\fRと同等です。 +.RE +.PP +\-Xmixed +.RS 4 +ネイティブ・コードにコンパイルされたホット・メソッドを除き、インタプリタによってすべてのバイトコードを実行します。 +.RE +.PP +\-Xmn\fIsize\fR +.RS 4 +若い世代(ナーサリ)のヒープの初期サイズおよび最大サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。 +.sp +ヒープの若い世代リージョンは新しいオブジェクトに使用されます。GCは、他のリージョンよりこのリージョンで、より頻繁に実行されます。若い世代のサイズが小さすぎる場合、多数のマイナー・ガベージ・コレクションが実行されます。サイズが大きすぎる場合、フル・ガベージ・コレクションのみが実行されますが、完了までに時間がかかることがあります。若い世代のサイズは、全体のヒープ・サイズの半分から4分の1の間にしておくことをお薦めします。 +.sp +次の例では、若い世代の初期サイズおよび最大サイズを様々な単位を使用して256MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xmn256m +\-Xmn262144k +\-Xmn268435456 +.fi +.if n \{\ +.RE +.\} +若い世代のヒープの初期サイズと最大サイズの両方を設定する\fI\-Xmn\fRオプションのかわりに、初期サイズの設定には\fI\-XX:NewSize\fRを、最大サイズの設定には\fI\-XX:MaxNewSize\fRを使用できます。 +.RE +.PP +\-Xms\fIsize\fR +.RS 4 +ヒープの初期サイズ(バイト単位)を設定します。指定する値は、1MBより大きい1024の倍数にする必要があります。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。 +.sp +次の例では、割り当てられたメモリーのサイズを様々な単位を使用して6MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xms6291456 +\-Xms6144k +\-Xms6m +.fi +.if n \{\ +.RE +.\} +このオプションを設定しない場合、初期サイズは、古い世代と若い世代に割り当てられたサイズの合計として設定されます。若い世代のヒープの初期サイズは、\fI\-Xmn\fRオプションまたは\fI\-XX:NewSize\fRオプションを使用して設定できます。 +.RE +.PP +\-Xmx\fIsize\fR +.RS 4 +メモリー割当てプールの最大サイズ(バイト単位)を指定します。指定する値は、2MBより大きい1024の倍数にする必要があります。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値は、実行時にシステム構成に基づいて選択されます。サーバー・デプロイメントでは、\fI\-Xms\fRおよび\fI\-Xmx\fRは通常同じ値に設定されます。詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gc\-ergonomics\&.htmlにあるガベージ・コレクタ・エルゴノミックを参照してください。 +.sp +次の例では、割り当てられたメモリーの許可される最大サイズを様々な単位を使用して80MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xmx83886080 +\-Xmx81920k +\-Xmx80m +.fi +.if n \{\ +.RE +.\} +\fI\-Xmx\fRオプションは\fI\-XX:MaxHeapSize\fRと同等です。 +.RE +.PP +\-Xnoclassgc +.RS 4 +クラスのガベージ・コレクション(GC)を無効にします。これにより、GC時間を節約でき、アプリケーション実行中の中断が短縮されます。 +.sp +起動時に\fI\-Xnoclassgc\fRを指定すると、アプリケーション内のクラス・オブジェクトは、GCの間はそのまま残り、常にライブであるとみなされます。これにより、より多くのメモリーが永久に占有されることになり、注意して使用しないと、メモリー不足の例外がスローされます。 +.RE +.PP +\-Xprof +.RS 4 +実行中のプログラムのプロファイルを生成し、プロファイル・データを標準出力に送信します。このオプションは、プログラム開発用のユーティリティとして提供されています。本番稼働システムでの使用を目的としたものではありません。 +.RE +.PP +\-Xrs +.RS 4 +JVMによるオペレーティング・システム・シグナルの使用を減らします。 +.sp +シャットダウン・フックは、JVMが突然終了した場合でも、シャットダウン時にユーザー・クリーンアップ・コード(データベース接続のクローズなど)を実行することによって、Javaアプリケーションのシャットダウンを順番に有効にします。 +.sp +JVMは、予期しない終了のシャットダウン・フックを実装するためにシグナルをキャッチします。JVMは、\fISIGHUP\fR、\fISIGINT\fRおよび\fISIGTERM\fRを使用して、シャットダウン・フックの実行を開始します。 +.sp +JVMは、デバッグの目的でスレッド・スタックをダンプするという機能を実現するために、同様のメカニズムを使用します。JVMは、スレッド・ダンプを実行するために\fISIGQUIT\fRを使用します。 +.sp +JVMを埋め込んでいるアプリケーションは、\fISIGINT\fRや\fISIGTERM\fRなどのシグナルを頻繁にトラップする必要があり、その結果、JVMのシグナル・ハンドラと衝突する可能性があります。\fI\-Xrs\fRオプションは、この問題に対処するために使用できます。\fI\-Xrs\fRが使用されている場合、\fISIGINT\fR、\fISIGTERM\fR、\fISIGHUP\fRおよび\fISIGQUIT\fRのシグナル・マスクはJVMによって変更されず、これらのシグナルのシグナル・ハンドラはインストールされません。 +.sp +\fI\-Xrs\fRを指定すると、次の2つの結果が生じます: +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fISIGQUIT\fRによるスレッド・ダンプは使用できません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +シャットダウン・フック処理の実行は、JVMが終了しようとしている時点で\fISystem\&.exit()\fRを呼び出すなどして、ユーザー・コード側で行う必要があります。 +.RE +.RE +.PP +\-Xshare:\fImode\fR +.RS 4 +クラス・データ共有モードを設定します。このオプションで使用可能な\fImode\fR引数は次のとおりです。 +.PP +auto +.RS 4 +可能な場合、共有クラスのデータを使用します。これは、Java HotSpot 32\-Bit Client VMの場合のデフォルト値です。 +.RE +.PP +on +.RS 4 +クラス・データ共有の使用が必要です。クラス・データ共有を使用できない場合、エラー・メッセージを出力して終了します。 +.RE +.PP +off +.RS 4 +共有クラス・データを使用しません。これは、Java HotSpot 32\-Bit Server VM、Java HotSpot 64\-Bit Client VMおよびJava HotSpot 64\-Bit Server VMの場合のデフォルト値です。 +.RE +.PP +dump +.RS 4 +クラス・データ共有アーカイブを手動で生成します。 +.RE +.RE +.PP +\-XshowSettings:\fIcategory\fR +.RS 4 +設定を表示して続行します。このオプションで使用可能な\fIcategory\fR引数は次のとおりです。 +.PP +all +.RS 4 +設定のすべてのカテゴリを表示します。これがデフォルト値です。 +.RE +.PP +locale +.RS 4 +ロケールに関連する設定を表示します。 +.RE +.PP +properties +.RS 4 +システム・プロパティに関連する設定を表示します。 +.RE +.PP +vm +.RS 4 +JVMの設定を表示します。 +.RE +.RE +.PP +\-Xss\fIsize\fR +.RS 4 +スレッドのスタック・サイズ(バイト単位)を設定します。KBを示す場合は文字\fIk\fRまたは\fIK\fR、MBを示す場合は文字\fIm\fRまたは\fIM\fR、GBを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値はプラットフォームによって異なります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/ARM (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/i386 (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/x64 (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +OS X (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Oracle Solaris/i386 (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Oracle Solaris/x64 (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Windows: 仮想メモリーによって異なります。 +.RE +.sp +次の例では、スレッド・スタック・サイズを異なる単位で1024KBに設定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xss1m +\-Xss1024k +\-Xss1048576 +.fi +.if n \{\ +.RE +.\} +このオプションは\fI\-XX:ThreadStackSize\fRと同等です。 +.RE +.PP +\-Xusealtsigs +.RS 4 +JVM内部シグナルの\fISIGUSR1\fRおよび\fISIGUSR2\fRのかわりに、代替シグナルを使用します。このオプションは\fI\-XX:+UseAltSigs\fRと同等です。 +.RE +.PP +\-Xverify:\fImode\fR +.RS 4 +バイトコード・ベリファイアのモードを設定します。バイトコードの検証は一部の問題のトラブルシューティングに役立ちますが、実行中のアプリケーションへのオーバーヘッドを増大させます。このオプションで使用可能な\fImode\fR引数は次のとおりです。 +.PP +none +.RS 4 +バイトコードを検証しません。これにより、起動時間が短縮され、Javaによって提供される保護も軽減されます。 +.RE +.PP +remote +.RS 4 +ネットワークを介してリモートでロードされるクラスのみを検証します。これは、\fI\-Xverify\fRオプションを指定しない場合のデフォルトの動作です。 +.RE +.PP +all +.RS 4 +すべてのクラスを検証します。 +.RE +.RE +.SS "高度なランタイム・オプション" +.PP +これらのオプションは、Java HotSpot VMの実行時の動作を制御します。 +.PP +\-XX:+DisableAttachMechanism +.RS 4 +JVMにツールをアタッチするメカニズムを無効にするオプションを有効にします。デフォルトでは、このオプションは無効になっており、これは、アタッチ・メカニズムを有効にすると、\fIjcmd\fR、\fIjstack\fR、\fIjmap\fR、\fIjinfo\fRなどのツールを使用できることを意味します。 +.RE +.PP +\-XX:ErrorFile=\fIfilename\fR +.RS 4 +リカバリ不能なエラーが発生した場合にエラー・データが書き込まれるパスおよびファイル名を指定します。デフォルトでは、このファイルは、現在の作業ディレクトリに作成され、名前は\fIhs_err_pid\fR\fIpid\fR\fI\&.log\fR +(\fIpid\fRはエラーの原因となったプロセスの識別子)になります。次の例では、デフォルトのログ・ファイルを設定する方法を示します(プロセスの識別子は\fI%p\fRとして指定されます)。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:ErrorFile=\&./hs_err_pid%p\&.log +.fi +.if n \{\ +.RE +.\} +次の例では、エラー・ログを\fI/var/log/java/java_error\&.log\fRに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:ErrorFile=/var/log/java/java_error\&.log +.fi +.if n \{\ +.RE +.\} +(領域不足、権限の問題または別の問題により)指定したディレクトリにファイルを作成できない場合、ファイルはオペレーティング・システムの一時ディレクトリに作成されます。一時ディレクトリは\fI/tmp\fRです。 +.RE +.PP +\-XX:LargePageSizeInBytes=\fIsize\fR +.RS 4 +Javaヒープに使用される大きいページの最大サイズ(バイト単位)を設定します。\fIsize\fR引数は、2の累乗(2、4、8、16、\&.\&.\&.)である必要があります。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、サイズは0に設定され、これは、JVMでは大きいページのサイズが自動的に選択されていることを意味します。 +.sp +次の例では、大きいページのサイズを4メガバイト(MB)に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:LargePageSizeInBytes=4m +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxDirectMemorySize=\fIsize\fR +.RS 4 +新規I/O (\fIjava\&.nio\fRパッケージ)の直接バッファ割当ての最大合計サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、サイズは0に設定され、これは、JVMではNIOの直接バッファ割当てのサイズが自動的に選択されていることを意味します。 +.sp +次の例では、NIOサイズを異なる単位で1024KBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxDirectMemorySize=1m +\-XX:MaxDirectMemorySize=1024k +\-XX:MaxDirectMemorySize=1048576 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:NativeMemoryTracking=\fImode\fR +.RS 4 +JVMのネイティブ・メモリー使用状況のトラッキングのモードを指定します。このオプションで使用可能な\fImode\fR引数は次のとおりです。 +.PP +off +.RS 4 +JVMのネイティブ・メモリー使用状況を追跡しません。これは、\fI\-XX:NativeMemoryTracking\fRオプションを指定しない場合のデフォルトの動作です。 +.RE +.PP +summary +.RS 4 +JVMサブシステム(Javaヒープ、クラス、コード、スレッドなど)によるメモリー使用状況のみ追跡します。 +.RE +.PP +detail +.RS 4 +JVMサブシステムによるメモリー使用状況のトラッキングに加えて、個々の\fICallSite\fR +(個々の仮想メモリー・リージョンおよびそのコミット済リージョン)によるメモリー使用状況を追跡します。 +.RE +.RE +.PP +\-XX:OnError=\fIstring\fR +.RS 4 +リカバリ不能なエラーが発生したときに実行する、カスタム・コマンドまたは一連のセミコロン区切りのコマンドを設定します。文字列に空白が含まれている場合は、引用符で囲む必要があります。 +.sp +次の例では、\fI\-XX:OnError\fRオプションを使用してコア・イメージを作成するために\fIgcore\fRコマンドを実行する方法、およびリカバリ不能なエラーの場合にデバッガを起動してプロセスに接続する方法を示します(\fI%p\fRは現在のプロセスを指定します)。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:OnError="gcore %p;dbx \- %p" +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:OnOutOfMemoryError=\fIstring\fR +.RS 4 +\fIOutOfMemoryError\fR例外が最初にスローされたときに実行する、カスタム・コマンドまたは一連のセミコロン区切りのコマンドを設定します。文字列に空白が含まれている場合は、引用符で囲む必要があります。コマンド文字列の例は、\fI\-XX:OnError\fRオプションの説明を参照してください。 +.RE +.PP +\-XX:+PrintCommandLineFlags +.RS 4 +コマンドラインに表示された、人間工学的に選択したJVMフラグの印刷を有効にします。これは、ヒープ領域サイズや選択されたガベージ・コレクタなど、JVMによって設定されたエルゴノミック値を確認する場合に役立ちます。デフォルトでは、このオプションは無効であり、フラグは印刷されません。 +.RE +.PP +\-XX:+PrintNMTStatistics +.RS 4 +ネイティブ・メモリーのトラッキングが有効な場合に、JVMの終了時に収集されたネイティブ・メモリーのトラッキング・データの印刷を有効にします(\fI\-XX:NativeMemoryTracking\fRを参照してください)。デフォルトでは、このオプションは無効であり、ネイティブ・メモリーのトラッキング・データは印刷されません。 +.RE +.PP +\-XX:+ShowMessageBoxOnError +.RS 4 +JVMでリカバリ不能なエラーが発生した場合、ダイアログ・ボックスの表示を有効にします。これにより、JVMにデバッガを接続してエラーの原因を調査できるように、JVMを終了しないようにして、プロセスをアクティブなままにします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:ThreadStackSize=\fIsize\fR +.RS 4 +スレッドのスタック・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値はプラットフォームによって異なります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/ARM (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/i386 (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/x64 (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +OS X (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Oracle Solaris/i386 (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Oracle Solaris/x64 (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Windows: 仮想メモリーによって異なります。 +.RE +.sp +次の例では、スレッド・スタック・サイズを異なる単位で1024KBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:ThreadStackSize=1m +\-XX:ThreadStackSize=1024k +\-XX:ThreadStackSize=1048576 +.fi +.if n \{\ +.RE +.\} +このオプションは\fI\-Xss\fRと同等です。 +.RE +.PP +\-XX:+TraceClassLoading +.RS 4 +クラスがロードされるときのクラスのトレースを有効にします。デフォルトでは、このオプションは無効であり、クラスはトレースされません。 +.RE +.PP +\-XX:+TraceClassLoadingPreorder +.RS 4 +クラスが参照される順序で、ロードされたすべてのクラスのトレースを有効にします。デフォルトでは、このオプションは無効であり、クラスはトレースされません。 +.RE +.PP +\-XX:+TraceClassResolution +.RS 4 +定数プールの解決のトレースを有効にします。デフォルトでは、このオプションは無効であり、定数プールの解決はトレースされません。 +.RE +.PP +\-XX:+TraceClassUnloading +.RS 4 +クラスがアンロードされるときのクラスのトレースを有効にします。デフォルトでは、このオプションは無効であり、クラスはトレースされません。 +.RE +.PP +\-XX:+TraceLoaderConstraints +.RS 4 +ローダー制約の記録のトレースを有効にします。デフォルトでは、このオプションは無効であり、ローダー制約の記録は追跡されません。 +.RE +.PP +\-XX:+UseAltSigs +.RS 4 +JVM内部シグナルの\fISIGUSR1\fRおよび\fISIGUSR2\fRのかわりに、代替シグナルの使用を有効にします。デフォルトでは、このオプションは無効であり、代替シグナルは使用されません。このオプションは\fI\-Xusealtsigs\fRと同等です。 +.RE +.PP +\-XX:+UseBiasedLocking +.RS 4 +バイアス・ロックの使用を有効にします。かなりの量の非競合の同期化がある一部のアプリケーションは、このフラグを有効にすると大幅な高速化が実現しますが、特定のパターンのロックがあるアプリケーションは、速度が低下することがあります。バイアス・ロックの方法の詳細は、http://www\&.oracle\&.com/technetwork/java/tuning\-139912\&.html#section4\&.2\&.5にあるJavaチューニングのホワイト・ペーパーの例を参照してください。 +.sp +デフォルトでは、このオプションは無効であり、バイアス・ロックは使用されません。 +.RE +.PP +\-XX:+UseCompressedOops +.RS 4 +圧縮されたポインタの使用を有効にします。このオプションを有効にすると、オブジェクト参照は、64ビットのポインタではなく32ビットのオフセットとして表され、これにより、32GBより小さいJavaヒープ・サイズのアプリケーションの実行時に、通常、パフォーマンスが向上します。このオプションは、64ビットのJVMでのみ機能します。 +.sp +デフォルトでは、このオプションは無効であり、圧縮ポインタは使用されません。 +.RE +.PP +\-XX:+UseLargePages +.RS 4 +大きいページのメモリーの使用を有効にします。このオプションはデフォルトで有効になっています。大きいページのメモリーの使用を無効にするには、\fI\-XX:\-UseLargePages\fRを指定します。 +.sp +詳細は、http://www\&.oracle\&.com/technetwork/java/javase/tech/largememory\-jsp\-137182\&.htmlにある大きいメモリー・ページ用のJavaサポートを参照してください。 +.RE +.PP +\-XX:+UseMembar +.RS 4 +スレッドの状態の遷移でメンバーの発行を有効にします。このオプションは、有効になっているPower PCおよびARMサーバーを除くすべてのプラットフォーム上で、デフォルトでは無効になっています。Power PCとARMのスレッド状態遷移に対するメンバーの発行を無効にするには、\fI\-XX:\-UseMembar\fRを指定します。 +.RE +.PP +\-XX:+UsePerfData +.RS 4 +\fIperfdata\fR機能を有効にします。このオプションはデフォルトで有効になっており、JVMのモニタリングおよびパフォーマンス・テストが可能になります。これを無効にすると、\fIhsperfdata_userid\fRディレクトリの作成を抑制します。\fIperfdata\fR機能を無効にするには、\fI\-XX:\-UsePerfData\fRを指定します。 +.RE +.PP +\-XX:+AllowUserSignalHandlers +.RS 4 +アプリケーションによるシグナル・ハンドラのインストールを有効にします。デフォルトでは、このオプションは無効であり、アプリケーションはシグナル・ハンドラをインストールすることは許可されていません。 +.RE +.SS "高度なJITコンパイラ・オプション" +.PP +これらのオプションは、Java HotSpot VMで実行される動的なjust\-in\-time (JIT)コンパイラを制御します。 +.PP +\-XX:+AggressiveOpts +.RS 4 +積極的なパフォーマンス最適化機能の使用を有効にします。これは今後のリリースでデフォルトになる予定です。デフォルトでは、このオプションは無効であり、試験的なパフォーマンス機能は使用されません。 +.RE +.PP +\-XX:AllocateInstancePrefetchLines=\fIlines\fR +.RS 4 +インスタンス割当てポインタの前にプリフェッチする行数を設定します。デフォルトでは、プリフェッチする行数は1に設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:AllocateInstancePrefetchLines=1 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:AllocatePrefetchInstr=\fIinstruction\fR +.RS 4 +割当てポインタの前にプリフェッチするプリフェッチ命令を設定します。使用可能な値は0から3までです。値の背後にある実際の命令は、プラットフォームによって異なります。デフォルトでは、プリフェッチ命令は0に設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:AllocatePrefetchInstr=0 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:AllocatePrefetchStepSize=\fIsize\fR +.RS 4 +順次プリフェッチ命令のステップ・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、ステップ・サイズは16バイトに設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:AllocatePrefetchStepSize=16 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+BackgroundCompilation +.RS 4 +バックグラウンド・コンパイルを有効にします。このオプションはデフォルトで有効になっています。バックグラウンド・コンパイルを無効にするには、\fI\-XX:\-BackgroundCompilation\fRを指定します(これは\fI\-Xbatch\fRを指定するのと同等です)。 +.RE +.PP +\-XX:CICompilerCount=\fIthreads\fR +.RS 4 +コンパイルに使用するコンパイラ・スレッドの数を設定します。デフォルトでは、スレッド数は、サーバーJVMの場合は2、クライアントJVMの場合は1に設定されており、層コンパイルが使用されている場合、コア数に合せて増減します。次の例では、スレッドの数を2に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CICompilerCount=2 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CodeCacheMinimumFreeSpace=\fIsize\fR +.RS 4 +コンパイルに必要な最小空き領域(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。最小空き領域より少ない領域しか残っていない場合、コンパイルは停止します。デフォルトでは、このオプションは500KBに設定されています。次の例では、最小空き領域を1024MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CodeCacheMinimumFreeSpace=1024m +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CompileCommand=\fIcommand\fR,\fImethod\fR[,\fIoption\fR] +.RS 4 +メソッドで実行するコマンドを指定します。たとえば、コンパイル元から\fIString\fRクラスの\fIindexOf()\fRメソッドを実行するには、次を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand=exclude,java/lang/String\&.indexOf +.fi +.if n \{\ +.RE +.\} +スラッシュ(\fI/\fR)で区切られたすべてのパッケージおよびサブパッケージを含む、完全クラス名を指定します。切取りと貼付けの操作を容易にするために、\fI\-XX:+PrintCompilation\fRオプションおよび\fI\-XX:+LogCompilation\fRオプションによって生成されるメソッド名の形式を使用することもできます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand=exclude,java\&.lang\&.String::indexOf +.fi +.if n \{\ +.RE +.\} +署名なしでメソッドを指定すると、コマンドは指定した名前を持つすべてのメソッドに適用されます。ただし、クラス・ファイル形式でメソッドの署名を指定することもできます。たとえば、コンパイル元から\fIString\fRクラスの\fIindexOf(String)\fRメソッドのみ除外するには、次を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand=exclude,java/lang/String\&.indexOf(Ljava/lang/String;)I +.fi +.if n \{\ +.RE +.\} +また、クラス名およびメソッド名にワイルドカードとしてアスタリスク(*)を使用できます。たとえば、コンパイル元からすべてのクラスのすべての\fIindexOf()\fRメソッドを除外するには、次を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand=exclude,*\&.indexOf +.fi +.if n \{\ +.RE +.\} +カンマとピリオドは空白の別名で、これにより、シェルを介してコンパイラ・コマンドを渡すことが容易になります。引数を引用符で囲むことで、空白をセパレータとして使用して\fI\-XX:CompileCommand\fRに引数を渡すことができます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand="exclude java/lang/String indexOf" +.fi +.if n \{\ +.RE +.\} +\fI\-XX:CompileCommand\fRオプションを使用してコマンドラインで渡されたコマンドを解析した後に、JITコンパイラは\fI\&.hotspot_compiler\fRファイルからコマンドを読み取ります。このファイルにコマンドを追加するか、または\fI\-XX:CompileCommandFile\fRオプションを使用して別のファイルを指定することができます。 +.sp +複数のコマンドを追加するには、\fI\-XX:CompileCommand\fRオプションを複数回指定するか、または改行セパレータ(\fI\en\fR)を使用して各引数を区切ります。次のコマンドを使用できます。 +.PP +break +.RS 4 +指定したメソッドのコンパイルの最初に停止するために、JVMのデバッグ時のブレークポイントを設定します。 +.RE +.PP +compileonly +.RS 4 +指定したメソッドを除いたすべてのメソッドを、コンパイルから除外します。別の方法として、\fI\-XX:CompileOnly\fRオプションを使用して複数のメソッドを指定できます。 +.RE +.PP +dontinline +.RS 4 +指定したメソッドをインライン化しないようにします。 +.RE +.PP +exclude +.RS 4 +指定したメソッドをコンパイルから除外します。 +.RE +.PP +help +.RS 4 +\fI\-XX:CompileCommand\fRオプションのヘルプ・メッセージを印刷します。 +.RE +.PP +inline +.RS 4 +指定したメソッドをインライン化しようとします。 +.RE +.PP +log +.RS 4 +指定したメソッドを除くすべてのメソッドに対して、(\fI\-XX:+LogCompilation\fRオプションを使用して)コンパイル・ロギングを除外します。デフォルトでは、コンパイルされたすべてのメソッドにロギングが実行されます。 +.RE +.PP +option +.RS 4 +このコマンドは、最後の引数(\fIoption\fR)のかわりに、指定したメソッドにJITコンパイル・オプションを渡すために使用できます。コンパイル・オプションは、メソッド名の後の末尾に設定されます。たとえば、\fIStringBuffer\fRクラスの\fIappend()\fRメソッドに対して\fIBlockLayoutByFrequency\fRオプションを有効にするには、次を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand=option,java/lang/StringBuffer\&.append,BlockLayoutByFrequency +.fi +.if n \{\ +.RE +.\} +カンマまたは空白で区切って、複数のコンパイル・オプションを指定できます。 +.RE +.PP +print +.RS 4 +指定したメソッドのコンパイル後に生成されたアセンブラ・コードを出力します。 +.RE +.PP +quiet +.RS 4 +コンパイル・コマンドを出力しません。デフォルトでは、\fI\-XX:CompileCommand\fRオプションを使用して指定したコマンドが出力されます。たとえば、\fIString\fRクラスの\fIindexOf()\fRメソッドのコンパイルから除外する場合、次が標準出力に出力されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CompilerOracle: exclude java/lang/String\&.indexOf +.fi +.if n \{\ +.RE +.\} +他の\fI\-XX:CompileCommand\fRオプションの前に\fI\-XX:CompileCommand=quiet\fRオプションを指定することによって、これを抑制できます。 +.RE +.RE +.PP +\-XX:CompileCommandFile=\fIfilename\fR +.RS 4 +JITコンパイラ・コマンドの読取り元のファイルを設定します。デフォルトでは、JITコンパイラによって実行されるコマンドを格納するために、\fI\&.hotspot_compiler\fRファイルが使用されます。 +.sp +コマンド・ファイルの各行は、コマンドが使用されるコマンド、クラス名およびメソッド名を表します。たとえば、次の行は、\fIString\fRクラスの\fItoString()\fRメソッドに対してアセンブリ・コードを出力します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +print java/lang/String toString +.fi +.if n \{\ +.RE +.\} +メソッドで実行するJITコンパイラのコマンドの指定の詳細は、\fI\-XX:CompileCommand\fRオプションを参照してください。 +.RE +.PP +\-XX:CompileOnly=\fImethods\fR +.RS 4 +コンパイルを制限する(カンマで区切られた)メソッドのリストを設定します。指定したメソッドのみがコンパイルされます。完全クラス名(パッケージおよびサブパッケージを含む)で各メソッドを指定します。たとえば、\fIString\fRクラスの\fIlength()\fRメソッドおよび\fIList\fRクラスの\fIsize()\fRメソッドのみをコンパイルするには、次を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileOnly=java/lang/String\&.length,java/util/List\&.size +.fi +.if n \{\ +.RE +.\} +スラッシュ(\fI/\fR)で区切られたすべてのパッケージおよびサブパッケージを含む、完全クラス名を指定します。切取りと貼付けの操作を容易にするために、\fI\-XX:+PrintCompilation\fRオプションおよび\fI\-XX:+LogCompilation\fRオプションによって生成されるメソッド名の形式を使用することもできます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileOnly=java\&.lang\&.String::length,java\&.util\&.List::size +.fi +.if n \{\ +.RE +.\} +ワイルドカードはサポートされていませんが、クラス名またはパッケージ名だけを指定してクラスまたはパッケージのすべてのメソッドをコンパイルすることも、メソッドだけを指定して任意のクラスのこの名前を持つメソッドをコンパイルすることもできます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileOnly=java/lang/String +\-XX:CompileOnly=java/lang +\-XX:CompileOnly=\&.length +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CompileThreshold=\fIinvocations\fR +.RS 4 +コンパイル前に解釈されたメソッド呼出しの数を設定します。デフォルトでは、サーバーJVMでは、JITコンパイラは、10,000の解釈されたメソッド呼出しを実行して、効率的なコンパイルのための情報を収集します。クライアントJVMの場合、デフォルト設定は1,500呼出しです。次の例では、解釈されたメソッド呼出しの数を5,000に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileThreshold=5000 +.fi +.if n \{\ +.RE +.\} +\fI\-Xcomp\fRオプションを指定して、コンパイルの前に、Javaメソッドの解釈を完全に無効にすることができます。 +.RE +.PP +\-XX:+DoEscapeAnalysis +.RS 4 +エスケープ分析の使用を有効にします。このオプションはデフォルトで有効になっています。エスケープ分析の使用を無効にするには、\fI\-XX:\-DoEscapeAnalysis\fRを指定します。 +.RE +.PP +\-XX:+FailOverToOldVerifier +.RS 4 +新しいタイプ・チェッカが失敗した場合の、古いベリファイアへの自動フェイルオーバーを有効にします。デフォルトでは、このオプションは無効になっており、最近のバイトコード・バージョンを使用したクラスには、これは無視されます(つまり、無効として処理されます)。古いバージョンのバイトコードを使用したクラスには、これを有効化できます。 +.RE +.PP +\-XX:InitialCodeCacheSize=\fIsize\fR +.RS 4 +初期コード・キャッシュ・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値は500KBに設定されています。次の例では、初期コード・キャッシュ・サイズを32KBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:InitialCodeCacheSize=32k +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+Inline +.RS 4 +メソッドのインライン化を有効にします。このオプションは、パフォーマンスを向上させるためにデフォルトで有効になっています。メソッドのインライン化を無効にするには、\fI\-XX:\-Inline\fRを指定します。 +.RE +.PP +\-XX:InlineSmallCode=\fIsize\fR +.RS 4 +インライン化が必要なコンパイルされたメソッドの最大コード・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。指定したサイズより小さいサイズのコンパイルされたメソッドのみが、インライン化されます。デフォルトでは、最大コード・サイズは1000バイトに設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:InlineSmallCode=1000 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+LogCompilation +.RS 4 +現在の作業ディレクトリにある\fIhotspot\&.log\fRという名前のファイルへのコンパイル・アクティビティのロギングを有効にします。\fI\-XX:LogFile\fRオプションを使用して、異なるログ・ファイル・パスと名前を指定できます。 +.sp +デフォルトでは、このオプションは無効であり、コンパイル・アクティビティは記録されません。\fI\-XX:+LogCompilation\fRオプションは、診断JVMオプションのロックを解除する\fI\-XX:UnlockDiagnosticVMOptions\fRオプションとともに使用する必要があります。 +.sp +\fI\-XX:+PrintCompilation\fRオプションを使用して、メソッドをコンパイルするたびに、コンソールに出力されたメッセージを含む詳細な診断出力を有効化できます。 +.RE +.PP +\-XX:MaxInlineSize=\fIsize\fR +.RS 4 +インライン化するメソッドの最大バイトコード・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、最大バイトコード・サイズは35バイトに設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxInlineSize=35 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxNodeLimit=\fInodes\fR +.RS 4 +単一のメソッドのコンパイル時に使用されるノードの最大数を設定します。デフォルトでは、ノードの最大数は65,000に設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxNodeLimit=65000 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxTrivialSize=\fIsize\fR +.RS 4 +インライン化する単純メソッドの最大バイトコード・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、単純メソッドの最大バイトコード・サイズは6バイトに設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxTrivialSize=6 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+OptimizeStringConcat +.RS 4 +\fIString\fR連結操作の最適化を有効にします。このオプションはデフォルトで有効になっています。\fIString\fR連結操作の最適化を無効にするには、\fI\-XX:\-OptimizeStringConcat\fRを指定します。 +.RE +.PP +\-XX:+PrintAssembly +.RS 4 +外部の\fIdisassembler\&.so\fRライブラリを使用して、バイトコード化されたネイティブのメソッドのアセンブリ・コードの出力を有効にします。これにより、生成されたコードを表示することができ、パフォーマンスの問題の診断に役立ちます。 +.sp +デフォルトでは、このオプションは無効であり、アセンブリ・コードは印刷されません。\fI\-XX:+PrintAssembly\fRオプションは、診断JVMオプションのロックを解除する\fI\-XX:UnlockDiagnosticVMOptions\fRオプションとともに使用する必要があります。 +.RE +.PP +\-XX:+PrintCompilation +.RS 4 +メソッドをコンパイルするたびに、コンソールにメッセージを出力することによって、JVMからの詳細な診断出力を有効にします。これにより、実際にコンパイルされるメソッドを確認できます。デフォルトでは、このオプションは無効であり、診断出力は印刷されません。 +.sp +\fI\-XX:+LogCompilation\fRオプションを使用して、コンパイル・アクティビティをファイルに記録することもできます。 +.RE +.PP +\-XX:+PrintInlining +.RS 4 +インライン化の決定内容の出力を有効にします。これにより、インライン化されるメソッドを確認できます。 +.sp +デフォルトでは、このオプションは無効であり、インライン化情報は出力されません。\fI\-XX:+PrintInlining\fRオプションは、診断JVMオプションのロックを解除する\fI\-XX:+UnlockDiagnosticVMOptions\fRオプションとともに使用する必要があります。 +.RE +.PP +\-XX:+RelaxAccessControlCheck +.RS 4 +ベリファイア内のアクセス制御チェックの量を減らします。デフォルトでは、このオプションは無効になっており、最近のバイトコード・バージョンを使用したクラスには、これは無視されます(つまり、無効として処理されます)。古いバージョンのバイトコードを使用したクラスには、これを有効化できます。 +.RE +.PP +\-XX:ReservedCodeCacheSize=\fIsize\fR +.RS 4 +JITコンパイルされたコードの最大コード・キャッシュ・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。このオプションは\fI\-Xmaxjitcodesize\fRと同等です。 +.RE +.PP +\-XX:+TieredCompilation +.RS 4 +層コンパイルの使用を有効にします。デフォルトでは、このオプションは無効であり、層コンパイルは使用されません。 +.RE +.PP +\-XX:+UseCodeCacheFlushing +.RS 4 +コンパイラをシャットダウンする前に、コード・キャッシュのフラッシュを有効にします。このオプションはデフォルトで有効になっています。コンパイラをシャットダウンする前にコード・キャッシュのフラッシュを無効にするには\fI\-XX:\-UseCodeCacheFlushing\fRを指定します。 +.RE +.PP +\-XX:+UseCondCardMark +.RS 4 +カード表の更新前に、カードがすでにマークされているかどうかのチェックを有効にします。このオプションは、デフォルトでは無効になっており、複数のソケットを持つマシン上でのみ使用する必要があります。これにより、同時操作にかなり依存しているJavaアプリケーションのパフォーマンスが向上します。 +.RE +.PP +\-XX:+UseSuperWord +.RS 4 +スカラー演算のスーパーワード演算への変換を有効にします。このオプションはデフォルトで有効になっています。スカラー演算のスーパーワード演算への変換を無効にするには、\fI\-XX:\-UseSuperWord\fRを指定します。 +.RE +.SS "高度なサービスアビリティ・オプション" +.PP +これらのオプションは、システム情報を収集し、詳細なデバッグを実行する機能を提供します。 +.PP +\-XX:+ExtendedDTraceProbes +.RS 4 +パフォーマンスに影響を与える追加の\fIdtrace\fRツール・プローブを有効にします。デフォルトでは、このオプションは無効になっており、\fIdtrace\fRは標準プローブのみを実行します。 +.RE +.PP +\-XX:+HeapDumpOnOutOfMemory +.RS 4 +\fIjava\&.lang\&.OutOfMemoryError\fR例外がスローされた場合に、ヒープ・プロファイラ(HPROF)を使用して、現在のディレクトリ内のファイルへのJavaヒープのダンプを有効にします。\fI\-XX:HeapDumpPath\fRオプションを使用して、ヒープ・ダンプ・ファイルのパスおよび名前を明示的に設定できます。デフォルトでは、このオプションは無効であり、\fIOutOfMemoryError\fR例外がスローされた場合にヒープはダンプされません。 +.RE +.PP +\-XX:HeapDumpPath=\fIpath\fR +.RS 4 +\fI\-XX:+HeapDumpOnOutOfMemoryError\fRオプションが設定されている場合、ヒープ・プロファイラ(HPROF)が提供するヒープ・ダンプを書き込むパスおよびファイル名を設定します。デフォルトでは、このファイルは、現在の作業ディレクトリに作成され、名前は\fIjava_pid\fR\fIpid\fR\fI\&.hprof\fR +(\fIpid\fRはエラーの原因となったプロセスの識別子)になります。次の例では、デフォルトのファイルを明示的に設定する方法を示します(\fI%p\fRは現在のプロセスの識別子を表します)。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:HeapDumpPath=\&./java_pid%p\&.hprof +.fi +.if n \{\ +.RE +.\} +次の例では、ヒープ・ダンプ・ファイルを\fI/var/log/java/java_heapdump\&.hprof\fRに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:HeapDumpPath=/var/log/java/java_heapdump\&.hprof +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:LogFile=\fIpath\fR +.RS 4 +ログ・データが書き込まれるパスおよびファイル名を設定します。デフォルトでは、ファイルは現在の作業ディレクトリに作成され、名前は\fIhotspot\&.log\fRです。 +.sp +次の例では、ログ・ファイルを\fI/var/log/java/hotspot\&.log\fRに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:LogFile=/var/log/java/hotspot\&.log +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+PrintClassHistogram +.RS 4 +\fI[Control]+[C]\fRイベント(\fISIGTERM\fR)後にクラス・インスタンスのヒストグラムの印刷を有効にします。デフォルトでは、このオプションは無効です。 +.sp +このオプションを設定すると、\fIjmap \-histo\fRコマンド、または\fIjcmd \fR\fIpid\fR\fI GC\&.class_histogram\fRコマンド(\fIpid\fRは現在のJavaプロセスの識別子)を実行する場合と同じになります。 +.RE +.PP +\-XX:+PrintConcurrentLocks +.RS 4 +.sp +\fI[Control]+[C]\fRイベント(\fISIGTERM\fR)後に\fIjava\&.util\&.concurrent\fRロックの印刷を有効にします。デフォルトでは、このオプションは無効です。 +.sp +このオプションを設定すると、\fIjstack \-l\fRコマンド、または\fIjcmd \fR\fIpid\fR\fI Thread\&.print \-l\fRコマンド(\fIpid\fRは現在のJavaプロセスの識別子)を実行する場合と同じになります。 +.RE +.PP +\-XX:+UnlockDiagnosticVMOptions +.RS 4 +JVMの診断を目的としたオプションをアンロックします。デフォルトでは、このオプションは無効であり、診断オプションは使用できません。 +.RE +.SS "高度なガベージ・コレクション・オプション" +.PP +これらのオプションは、ガベージ・コレクション(GC)がJava HotSpot VMによってどのように実行されるかを制御します。 +.PP +\-XX:+AggressiveHeap +.RS 4 +Javaヒープの最適化を有効にします。これにより、コンピュータの構成(RAMおよびCPU)に基づいて、様々なパラメータが、メモリー割当てが集中した長時間実行ジョブに最適になるように設定されます。デフォルトでは、このオプションは無効であり、ヒープは最適化されません。 +.RE +.PP +\-XX:AllocatePrefetchDistance=\fIsize\fR +.RS 4 +オブジェクト割当てのプリフェッチ距離のサイズ(バイト単位)を設定します。新規オブジェクトの値で書き込もうとするメモリーは、最後に割り当てられたオブジェクトのアドレスから、この距離までプリフェッチされます。各Javaスレッドには独自の割当てポイントがあります。 +.sp +負の値は、プリフェッチ距離はプラットフォームに基づいて選択されることを示します。正の値は、プリフェッチするバイト数です。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値は\-1に設定されています。 +.sp +次の例では、プリフェッチ距離を1024バイトに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:AllocatePrefetchDistance=1024 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:AllocatePrefetchLines=\fIlines\fR +.RS 4 +コンパイルされたコードで生成されるプリフェッチ命令を使用して、最後のオブジェクト割当て後にロードするキャッシュ行数を設定します。最後に割り当てられたオブジェクトがインスタンスの場合は、デフォルト値は1になり、配列の場合は3になります。 +.sp +次の例では、ロードされるキャッシュ行数を5に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:AllocatePrefetchLines=5 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:AllocatePrefetchStyle=\fIstyle\fR +.RS 4 +プリフェッチ命令に生成されるコード・スタイルを設定します。\fIstyle\fR引数は、0から3までの整数です。 +.PP +0 +.RS 4 +プリフェッチ命令を生成しません。 +.RE +.PP +1 +.RS 4 +各割当ての後で、プリフェッチ命令を実行します。これはデフォルトのパラメータです。 +.RE +.PP +2 +.RS 4 +スレッド・ローカルな割当てブロック(TLAB)ウォーターマーク・ポインタを使用して、プリフェッチ命令を実行するタイミングを決定します。 +.RE +.PP +3 +.RS 4 +割当てプリフェッチ用のSPARCでBIS命令を使用します。 +.RE +.RE +.PP +\-XX:+AlwaysPreTouch +.RS 4 +JVMの初期化中にJavaヒープ上のすべてのページのタッチを有効にします。これにより、\fImain()\fRメソッドの入力前に、すべてのページがメモリーに取得されます。このオプションは、物理メモリーにマップされたすべての仮想メモリーを含む長時間実行のシステムをシミュレートするテストで使用できます。デフォルトでは、このオプションは無効になっており、JVMヒープ領域がいっぱいになると、すべてのページがコミットされます。 +.RE +.PP +\-XX:+CMSClassUnloadingEnabled +.RS 4 +並行マークスイープ(CMS)ガベージ・コレクタを使用する場合に、アンロードするクラスを有効にします。このオプションはデフォルトで有効になっています。CMSガベージ・コレクタのクラス・アンロードを無効にするには、\fI\-XX:\-CMSClassUnloadingEnabled\fRを指定します。 +.RE +.PP +\-XX:CMSExpAvgFactor=\fIpercent\fR +.RS 4 +並行コレクション統計の指数平均を計算する際に、現在のサンプルを重み付けするために使用される時間の割合(0から100まで)を設定します。デフォルトでは、指数平均係数は25%に設定されています。次の例では、係数を15%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSExpAvgFactor=15 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CMSIncrementalDutyCycle=\fIpercent\fR +.RS 4 +並行コレクタの実行が許可されているマイナー・コレクション間の時間の割合(0から100まで)を設定します。\fI\-XX:+CMSIncrementalPacing\fRが有効な場合、デューティ・サイクルが自動的に設定され、このオプションは初期値のみを設定します。 +.sp +デフォルトでは、デューティ・サイクルは10%に設定されています。次の例では、デューティ・サイクルを20%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSIncrementalDutyCycle=20 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CMSIncrementalDutyCycleMin=\fIpercent\fR +.RS 4 +\fI\-XX:+CMSIncrementalPacing\fRが有効な場合にデューティ・サイクルの下限であるマイナー・コレクション間の時間の割合(0から100まで)を設定します。デフォルトでは、デューティ・サイクルの下限は0%に設定されています。次の例では、下限を10%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSIncrementalDutyCycleMin=10 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+CMSIncrementalMode +.RS 4 +CMSコレクタの増分モードを有効にします。このオプションはデフォルトで無効になっており、2つ以下のGCスレッドを持つ構成にのみ有効にする必要があります。\fICMSIncremental\fRで始まるすべてのオプションは、このオプションが有効な場合のみ、適用されます。 +.RE +.PP +\-XX:CMSIncrementalOffset=\fIpercent\fR +.RS 4 +増分モードのデューティ・サイクルをマイナー・コレクション間で期間内に右に移動する時間の割合(0から100まで)を設定します。デフォルトでは、オフセットは0%に設定されています。次の例では、デューティ・サイクルのオフセットを25%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSIncrementalOffset=25 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+CMSIncrementalPacing +.RS 4 +JVMの実行中に収集された統計に基づいて、増分モードのデューティ・サイクルの自動調整を有効にします。このオプションはデフォルトで有効になっています。増分モード・デューティ・サイクルの自動調整を無効にするには、\fI\-XX:\-CMSIncrementalPacing\fRを指定します。 +.RE +.PP +\-XX:CMSIncrementalSafetyFactor=\fIpercent\fR +.RS 4 +デューティ・サイクルを計算する際に、保守を追加するために使用される時間の割合(0から100まで)を設定します。デフォルトでは、安全係数は10%に設定されています。次の例では、安全係数を5%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSIncrementalSafetyFactor=5 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CMSInitiatingOccupancyFraction=\fIpercent\fR +.RS 4 +CMS収集サイクルを開始する古い世代の占有率(0から100まで)を設定します。デフォルト値は\-1に設定されています。負の値(デフォルトを含む)は、\fI\-XX:CMSTriggerRatio\fRが開始占有率の値を定義するために使用されることを意味します。 +.sp +次の例では、占有率を20%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSInitiatingOccupancyFraction=20 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+CMSScavengeBeforeRemark +.RS 4 +CMSコメント・ステップの前にスカベンジの試行を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:CMSTriggerRatio=\fIpercent\fR +.RS 4 +CMS収集サイクルが開始する前に割り当てられる\fI\-XX:MinHeapFreeRatio\fRによって指定される値の割合(0から100まで)を設定します。デフォルト値は80%に設定されています。 +.sp +次の例では、占有率を75%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSTriggerRatio=75 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:ConcGCThreads=\fIthreads\fR +.RS 4 +並行GCに使用されるスレッドの数を設定します。デフォルト値は、JVMに使用できるCPUの数によって異なります。 +.sp +たとえば、並行GCのスレッド数を2に設定するには、次のオプションを指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:ConcGCThreads=2 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+DisableExplicitGC +.RS 4 +\fISystem\&.gc()\fRの呼出しの処理を無効にするオプションを有効にします。このオプションはデフォルトで無効になっており、これは\fISystem\&.gc()\fRへの呼出しが処理されることを意味します。\fISystem\&.gc()\fRの呼出しの処理が無効になっている場合、JVMは必要に応じてGCを実行します。 +.RE +.PP +\-XX:+ExplicitGCInvokesConcurrent +.RS 4 +\fISystem\&.gc()\fRリクエストを使用することによって、並行GCの呼出しを有効にします。このオプションはデフォルトで無効になっており、\fI\-XX:+UseConcMarkSweepGC\fRオプションとともに使用する場合のみ、有効にすることができます。 +.RE +.PP +\-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses +.RS 4 +\fISystem\&.gc()\fRリクエストを使用し、並行GCサイクル中にクラスをアンロードすることによって、並行GCの呼出しを有効にします。このオプションはデフォルトで無効になっており、\fI\-XX:+UseConcMarkSweepGC\fRオプションとともに使用する場合のみ、有効にすることができます。 +.RE +.PP +\-XX:G1HeapRegionSize=\fIsize\fR +.RS 4 +ガベージファースト(G1)コレクタを使用する際にJavaヒープを細分化するリージョンのサイズを設定します。値には、1MBから32MBまでを指定できます。デフォルトのリージョン・サイズは、ヒープ・サイズに基づいて人間工学的に決定されます。 +.sp +次の例では、細分化されたサイズを16MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:G1HeapRegionSize=16m +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+G1PrintHeapRegions +.RS 4 +割り当てられたリージョンおよびG1コレクタによって再要求されたものに関する情報の印刷を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:G1ReservePercent=\fIpercent\fR +.RS 4 +G1コレクタの昇格が失敗する可能性を減らすためのfalseの上限として予約されたヒープの割合(0から50まで)を設定します。デフォルトでは、このオプションは10%に設定されています。 +.sp +次の例では、予約されたヒープを20%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:G1ReservePercent=20 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:InitialHeapSize=\fIsize\fR +.RS 4 +メモリー割当てプールの初期サイズ(バイト単位)を設定します。指定する値は、0、または1MBより大きい1024の倍数のいずれかにする必要があります。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値は、実行時にシステム構成に基づいて選択されます。詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gc\-ergonomics\&.htmlにあるガベージ・コレクタ・エルゴノミックを参照してください。 +.sp +次の例では、割り当てられたメモリーのサイズを様々な単位を使用して6MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:InitialHeapSize=6291456 +\-XX:InitialHeapSize=6144k +\-XX:InitialHeapSize=6m +.fi +.if n \{\ +.RE +.\} +このオプションを0に設定した場合、初期サイズは、古い世代と若い世代に割り当てられたサイズの合計として設定されます。若い世代のヒープのサイズは、\fI\-XX:NewSize\fRオプションを使用して設定できます。 +.RE +.PP +\-XX:InitialSurvivorRatio=\fIratio\fR +.RS 4 +スループット・ガベージ・コレクタが使用するサバイバ領域の初期比を設定します(\fI\-XX:+UseParallelGC\fRおよび/または\fI\-XX:+UseParallelOldGC\fRオプションによって有効になります)。\fI\-XX:+UseParallelGC\fRオプションおよび\fI\-XX:+UseParallelOldGC\fRオプションを使用することによって、スループット・ガベージ・コレクタで適応サイズ指定をデフォルトで有効にします。初期値から始めて、アプリケーションの動作に従って、サバイバ領域がサイズ変更されます。(\fI\-XX:\-UseAdaptiveSizePolicy\fRオプションを使用して)適応サイズ指定を無効にした場合、\fI\-XX:SurvivorRatio\fRオプションを使用して、アプリケーションの実行全体のサバイバ領域のサイズを設定する必要があります。 +.sp +次の式を使用して、若い世代のサイズ(Y)およびサバイバ領域の初期比(R)に基づいて、サバイバ領域の初期サイズ(S)を計算できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +S=Y/(R+2) +.fi +.if n \{\ +.RE +.\} +等式内の2は、2つのサバイバ領域を示します。サバイバ領域の初期比に指定する値を大きくすると、サバイバ領域の初期サイズは小さくなります。 +.sp +デフォルトでは、サバイバ領域の初期比は8に設定されています。若い世代の領域サイズのデフォルト値(2MB)を使用した場合、サバイバ領域の初期サイズは0\&.2MBになります。 +.sp +次の例では、サバイバ領域の初期比を4に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:InitialSurvivorRatio=4 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:InitiatingHeapOccupancyPercent=\fIpercent\fR +.RS 4 +並行GCサイクルを開始するヒープ占有率(0から100まで)を設定します。これは、1つの世代のみ(たとえばG1ガベージ・コレクタなど)ではなく、ヒープ全体の占有に基づいて並行GCサイクルをトリガーするガベージ・コレクタによって使用されます。 +.sp +デフォルトでは、開始値は45%に設定されています。値0は、GCサイクルが停止しないことを意味します。次の例では、開始ヒープ占有率を75%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:InitiatingHeapOccupancyPercent=75 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxGCPauseMillis=\fItime\fR +.RS 4 +最大GC休止時間(ミリ秒単位)のターゲットを設定します。これはソフト・ゴールのため、JVMは実現のために最善の努力をします。デフォルトでは、休止時間の最大値はありません。 +.sp +次の例では、最大ターゲット休止時間を500ミリ秒に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxGCPauseMillis=500 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxHeapSize=\fIsize\fR +.RS 4 +メモリー割当てプールの最大サイズ(バイト単位)を設定します。指定する値は、2MBより大きい1024の倍数にする必要があります。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値は、実行時にシステム構成に基づいて選択されます。サーバー・デプロイメントでは、\fI\-XX:InitialHeapSize\fRおよび\fI\-XX:MaxHeapSize\fRは通常同じ値に設定されます。詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gc\-ergonomics\&.htmlにあるガベージ・コレクタ・エルゴノミックを参照してください。 +.sp +次の例では、割り当てられたメモリーの許可される最大サイズを様々な単位を使用して80MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxHeapSize=83886080 +\-XX:MaxHeapSize=81920k +\-XX:MaxHeapSize=80m +.fi +.if n \{\ +.RE +.\} +Oracle Solaris 7およびOracle Solaris 8 SPARCプラットフォームの場合のこの値の上限は、およそ4,000MBからオーバーヘッドの量を引いたものです。Oracle Solaris 2\&.6およびx86プラットフォームの場合の上限は、およそ2,000MBからオーバーヘッドの量を引いたものです。Linuxプラットフォームの場合の上限は、およそ2,000MBからオーバーヘッドの量を引いたものです。 +.sp +\fI\-XX:MaxHeapSize\fRオプションは\fI\-Xmx\fRと同等です。 +.RE +.PP +\-XX:MaxHeapFreeRatio=\fIpercent\fR +.RS 4 +GCイベント後の空きヒープ領域の許可されている最大の割合(0から100まで)を設定します。空きヒープ領域がこの値を超えて拡大した場合、そのヒープは縮小します。デフォルトでは、この値は70%に設定されています。 +.sp +次の例では、空きヒープの最大比率を75%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxHeapFreeRatio=75 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxMetaspaceSize=\fIsize\fR +.RS 4 +クラス・メタデータに割り当てることができるネイティブ・メモリーの最大量を設定します。デフォルトでは、このサイズは制限されていません。アプリケーションのメタデータの量は、アプリケーション自体、他の実行中アプリケーション、およびシステムで使用可能なメモリーの量によって異なります。 +.sp +次の例では、クラス・メタデータの最大サイズを256MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxMetaspaceSize=256m +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxNewSize=\fIsize\fR +.RS 4 +若い世代(ナーサリ)のヒープの最大サイズ(バイト単位)を設定します。デフォルト値は人間工学的に設定されます。 +.RE +.PP +\-XX:MaxTenuringThreshold=\fIthreshold\fR +.RS 4 +適応GCサイズ指定で使用する最大殿堂入りしきい値を設定します。最大値は15です。デフォルト値は、パラレル(スループット)コレクタの場合は15、CMSコレクタの場合は6です。 +.sp +次の例では、最大殿堂入りしきい値を10に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxTenuringThreshold=10 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MetaspaceSize=\fIsize\fR +.RS 4 +最初に超えたときにガベージ・コレクションをトリガーする、割り当てられたクラス・メタデータ領域のサイズを設定します。このガベージ・コレクションのしきい値は、使用されるメタデータの量によって増加または減少します。デフォルトのサイズはプラットフォームによって異なります。 +.RE +.PP +\-XX:MinHeapFreeRatio=\fIpercent\fR +.RS 4 +GCイベント後の空きヒープ領域の許可されている最小の割合(0から100まで)を設定します。空きヒープ領域がこの値を下回った場合、そのヒープは拡大します。デフォルトでは、この値は40%に設定されています。 +.sp +次の例では、空きヒープの最小比率を25%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MinHeapFreeRatio=25 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:NewRatio=\fIratio\fR +.RS 4 +若い世代のサイズと古い世代のサイズとの比率を設定します。デフォルトでは、このオプションは2に設定されています。次の例では、若い/古いの比率を1に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:NewRatio=1 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:NewSize=\fIsize\fR +.RS 4 +若い世代(ナーサリ)のヒープの初期サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。 +.sp +ヒープの若い世代リージョンは新しいオブジェクトに使用されます。GCは、他のリージョンよりこのリージョンで、より頻繁に実行されます。若い世代のサイズが小さすぎる場合、多数のマイナーGCが実行されます。サイズが大きすぎる場合、フルGCのみが実行されますが、完了までに時間がかかることがあります。若い世代のサイズは、全体のヒープ・サイズの半分から4分の1の間にしておくことをお薦めします。 +.sp +次の例では、若い世代の初期サイズを様々な単位を使用して256MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:NewSize=256m +\-XX:NewSize=262144k +\-XX:NewSize=268435456 +.fi +.if n \{\ +.RE +.\} +\fI\-XX:NewSize\fRオプションは\fI\-Xmn\fRと同等です。 +.RE +.PP +\-XX:ParallelGCThreads=\fIthreads\fR +.RS 4 +若い世代と古い世代でパラレル・ガベージ・コレクションに使用するスレッドの数を設定します。デフォルト値は、JVMに使用できるCPUの数によって異なります。 +.sp +たとえば、パラレルGCのスレッド数を2に設定するには、次のオプションを指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:ParallelGCThreads=2 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+ParallelRefProcEnabled +.RS 4 +パラレル参照処理を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintAdaptiveSizePolicy +.RS 4 +適応世代サイズ指定に関する情報の出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGC +.RS 4 +GCごとのメッセージの出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGCApplicationConcurrentTime +.RS 4 +最後の休止(たとえばGC休止など)以降に経過した時間の出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGCApplicationStoppedTime +.RS 4 +休止(たとえばGC休止など)が継続した時間の出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX+PrintGCDateStamp +.RS 4 +GCごとの日付スタンプの出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGCDetails +.RS 4 +GCごとの詳細メッセージの出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGCTaskTimeStamps +.RS 4 +個々のGCワーカー・スレッド・タスクごとのタイムスタンプの出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGCTimeStamp +.RS 4 +GCごとのタイムスタンプの出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintTenuringDistribution +.RS 4 +殿堂入り期間情報の出力を有効にします。次に、出力の例を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Desired survivor size 48286924 bytes, new threshold 10 (max 10) +\- age 1: 28992024 bytes, 28992024 total +\- age 2: 1366864 bytes, 30358888 total +\- age 3: 1425912 bytes, 31784800 total +\&.\&.\&. +.fi +.if n \{\ +.RE +.\} +期間1オブジェクトは、最も若いサバイバです(前のスカベンジの後に作成され、最新のスカベンジで存続し、Eden領域からサバイバ領域に移動しました)。期間2オブジェクトは、2つのスカベンジで存続します(2番目のスカベンジ中に、あるサバイバ領域から次の領域にコピーされました)。このように続きます。 +.sp +前述の例では、28,992,024バイトが1つのスカベンジで存続し、Eden領域からサバイバ領域にコピーされました。1,366,864バイトは期間2オブジェクトなどにより占有されています。各行の3番目の値は、期間n以下のオブジェクトの累積サイズです。 +.sp +デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+ScavengeBeforeFullGC +.RS 4 +それぞれのフルGCの前に若い世代のGCを有効にします。このオプションはデフォルトで有効になっています。フルGCの前に若い世代のスカベンジを行うと、古い世代領域から若い世代領域へのアクセスが可能なオブジェクトの数を減らすことができるため、これを無効に\fIしない\fRことをお薦めします。各フルGCの前に若い世代のGCを無効にするには、\fI\-XX:\-ScavengeBeforeFullGC\fRを指定します。 +.RE +.PP +\-XX:SoftRefLRUPolicyMSPerMB=\fItime\fR +.RS 4 +ソフト・アクセスが可能なオブジェクトが最後に参照されてからヒープ上でアクティブなままになっている時間(ミリ秒単位)を設定します。デフォルト値は、ヒープ内の空きメガバイト当たりで1秒の存続期間です。\fI\-XX:SoftRefLRUPolicyMSPerMB\fRオプションは、現在のヒープ・サイズ(Java HotSpot Client VM用)または最大可能ヒープ・サイズ(Java HotSpot Server VM用)の1メガバイト当たりのミリ秒を表す整数値を受け入れます。この違いは、Client VMは、ヒープを大きくするのではなく、ソフト参照をフラッシュする傾向があるのに対し、Server VMは、ソフト参照をフラッシュするのではなく、ヒープを大きくする傾向があることを意味します。後者の場合、\fI\-Xmx\fRオプションの値は、ソフト参照がどのくらい迅速にガベージ・コレクションされるかに重要な影響を及ぼします。 +.sp +次の例では、値を2\&.5秒に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:SoftRefLRUPolicyMSPerMB=2500 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:SurvivorRatio=\fIratio\fR +.RS 4 +Eden領域のサイズとサバイバ領域のサイズとの比率を設定します。デフォルトでは、このオプションは8に設定されています。次の例では、Eden/サバイバ領域の比率を4に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:SurvivorRatio=4 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:TargetSurvivorRatio=\fIpercent\fR +.RS 4 +若いガベージ・コレクションの後に使用されるサバイバ領域の目的の割合(0から100まで)を設定します。デフォルトでは、このオプションは50%に設定されています。 +.sp +次の例では、ターゲットのサバイバ領域の比率を30%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:TargetSurvivorRatio=30 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:TLABSize=\fIsize\fR +.RS 4 +スレッド・ローカルな割当てバッファ(TLAB)の初期サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。このオプションが0に設定されている場合、JVMでは初期サイズが自動的に選択されます。 +.sp +次の例では、TLABの初期サイズを512KBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:TLABSize=512k +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+UseAdaptiveSizePolicy +.RS 4 +適応世代サイズ指定の使用を有効にします。このオプションはデフォルトで有効になっています。適応世代サイズ指定を無効にするには、\fI\-XX:\-UseAdaptiveSizePolicy\fRを指定し、メモリー割当てプールのサイズを明示的に設定します(\fI\-XX:SurvivorRatio\fRオプションを参考にしてください)。 +.RE +.PP +\-XX:+UseCMSInitiatingOccupancyOnly +.RS 4 +CMSコレクタの開始のための唯一の基準としての占有値の使用を有効にします。デフォルトでは、このオプションは無効になっており、他の基準が使用されます。 +.RE +.PP +\-XX:+UseConcMarkSweepGC +.RS 4 +古い世代へのCMSガベージ・コレクタの使用を有効にします。アプリケーションの待機時間の要件を、スループット(\fI\-XX:+UseParallelGC\fR)ガベージ・コレクタによって満たすことができない場合、CMSガベージ・コレクタを使用することをお薦めします。G1ガベージ・コレクタ(\fI\-XX:+UseG1GC\fR)は別の代替となります。 +.sp +デフォルトでは、このオプションは無効になっており、コレクタは、マシンの構成およびJVMのタイプに基づいて、自動的に選択されます。このオプションを有効にすると、\fI\-XX:+UseParNewGC\fRオプションが自動的に設定されます。 +.RE +.PP +\-XX:+UseG1GC +.RS 4 +G1ガベージ・コレクタの使用を有効にします。これはサーバー形式のガベージ・コレクタで、大量のRAMを持つマルチプロセッサ・マシンを対象としています。高い確率でGC休止時間の目標を達成し、同時に適切なスループットも維持します。G1コレクタは、GC待機時間の限定された要件(安定した予測可能な0\&.5秒未満の休止時間)を持つ、大きいヒープ(約6GB以上のサイズ)が必要なアプリケーションに推奨されます。 +.sp +デフォルトでは、このオプションは無効になっており、コレクタは、マシンの構成およびJVMのタイプに基づいて、自動的に選択されます。 +.RE +.PP +\-XX:+UseGCOverheadLimit +.RS 4 +\fIOutOfMemoryError\fR例外がスローされるまでに、GCでJVMによって要した時間の割合を制限するポリシーの使用を有効にします。デフォルトでは、このオプションは有効になっており、ガベージ・コレクションに合計時間の98%より多く費やされ、ヒープのリカバリが2%未満である場合、パラレルGCによって\fIOutOfMemoryError\fRがスローされます。ヒープが小さい場合、この機能は、アプリケーションが長期間ほとんどまたはまったく進捗なく実行している状態を回避するために使用できます。このオプションを無効にするには、\fI\-XX:\-UseGCOverheadLimit\fRを指定します。 +.RE +.PP +\-XX:+UseNUMA +.RS 4 +アプリケーションで短い待機時間のメモリーの使用を増加させることで、不均一なメモリー・アーキテクチャ(NUMA)を使用したマシン上のアプリケーションのパフォーマンス最適化を有効にします。デフォルトでは、このオプションは無効になっており、NUMAに対する最適化は行われません。このオプションは、パラレル・ガベージ・コレクタ(\fI\-XX:+UseParallelGC\fR)が使用されている場合のみ使用可能です。 +.RE +.PP +\-XX:+UseParallelGC +.RS 4 +複数のプロセッサを利用してアプリケーションのパフォーマンスを向上させる、パラレル・スカベンジ・ガベージ・コレクタ(スループット・コレクタとも呼ばれる)の使用を有効にします。 +.sp +デフォルトでは、このオプションは無効になっており、コレクタは、マシンの構成およびJVMのタイプに基づいて、自動的に選択されます。これを有効にした場合、明示的に無効にしないかぎり、\fI\-XX:+UseParallelOldGC\fRオプションが自動的に有効になります。 +.RE +.PP +\-XX:+UseParallelOldGC +.RS 4 +フルGCへのパラレル・ガベージ・コレクタの使用を有効にします。デフォルトでは、このオプションは無効です。これを有効にすると、\fI\-XX:+UseParallelGC\fRオプションが自動的に有効になります。 +.RE +.PP +\-XX:+UseParNewGC +.RS 4 +若い世代でのコレクションへのパラレル・スレッドの使用を有効にします。デフォルトでは、このオプションは無効です。\fI\-XX:+UseConcMarkSweepGC\fRオプションを設定すると、これは自動的に有効になります。 +.RE +.PP +\-XX:+UseSerialGC +.RS 4 +シリアル・ガベージ・コレクタの使用を有効にします。ガベージ・コレクションから特別な機能を必要としない、小規模で単純なアプリケーションの場合には、これは一般に最適な選択です。デフォルトでは、このオプションは無効になっており、コレクタは、マシンの構成およびJVMのタイプに基づいて、自動的に選択されます。 +.RE +.PP +\-XX:+UseTLAB +.RS 4 +若い世代の領域でのスレッド・ローカルな割当てブロック(TLAB)の使用を有効にします。このオプションはデフォルトで有効になっています。TLABの使用を無効にするには、\fI\-XX:\-UseTLAB\fRを指定します。 +.RE +.SS "非推奨で削除されたオプション" +.PP +これらのオプションは、以前のリリースには含まれていましたが、以降は不要とみなされています。 +.PP +\-Xrun\fIlibname\fR +.RS 4 +指定したデバッグ/プロファイルのライブラリをロードします。このオプションは、\fI\-agentlib\fRオプションに取って代わられました。 +.RE +.PP +\-XX:CMSInitiatingPermOccupancyFraction=\fIpercent\fR +.RS 4 +GCを開始する永久世代占有率(0から100まで)を設定します。このオプションはJDK 8では非推奨で、それに代わるものはありません。 +.RE +.PP +\-XX:MaxPermSize=\fIsize\fR +.RS 4 +永久世代領域の最大サイズ(バイト単位)を設定します。このオプションは、JDK 8で非推奨になり、\fI\-XX:MaxMetaspaceSize\fRオプションに取って代わられました。 +.RE +.PP +\-XX:PermSize=\fIsize\fR +.RS 4 +超えた場合にはガベージ・コレクションをトリガーする、永久世代に割り当てられた領域(バイト単位)を設定します。このオプションは、JDK 8で非推奨になり、\fI\-XX:MetaspaceSize\fRオプションに取って代わられました。 +.RE +.PP +\-XX:+UseSplitVerifier +.RS 4 +検証プロセスの分割を有効にします。デフォルトでは、このオプションは以前のリリースでは有効になっており、検証は、タイプ参照(コンパイラによって実行)と、タイプ・チェック(JVMランタイムによって実行)の2つのフェーズに分割されていました。このオプションはJDK 8で非推奨となり、検証はデフォルトで分割され、無効にする方法はありません。 +.RE +.PP +\-XX:+UseStringCache +.RS 4 +一般に割り当てられた文字列のキャッシングを有効にします。このオプションはJDK 8から削除され、それに代わるものはありません。 +.RE +.SH "パフォーマンス・チューニングの例" +.PP +次の例では、スループットの最適化またはレスポンス時間の短縮化のいずれかを行うための、試験的なチューニング・フラグの使用方法を示します。 +.PP +\fBExample 1\fR, スループットを向上するためのチューニング +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-d64 \-server \-XX:+AggressiveOpts \-XX:+UseLargePages \-Xmn10g \-Xms26g \-Xmx26g +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, レスポンス時間を速くするためのチューニング +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-d64 \-XX:+UseG1GC \-Xms26g Xmx26g \-XX:MaxGCPauseMillis=500 \-XX:+PrintGCTimeStamp +.fi +.if n \{\ +.RE +.\} .RE - -.LP .SH "終了ステータス" -.LP -.LP -一般に、次の終了値が起動ツールから返されるのは通常、起動元が不正な引数で呼び出されたか、深刻なエラーが発生したか、あるいは Java 仮想マシンから例外がスローされた場合です。ただし Java アプリケーションは、API 呼び出し \f2System.exit(exitValue)\fP を使用して任意の値を返すことを選択することもできます。 -.LP -.RS 3 -.TP 2 -o -\f20\fP: 正常終了 -.TP 2 -o -\f2>0\fP: エラーが発生した +.PP +通常、次の終了値が起動ツールから返されるのは、起動元が不正な引数で呼び出されたか、深刻なエラーが発生したか、あるいはJVMにより例外がスローされた場合です。ただし、Javaアプリケーションは、API呼出し\fISystem\&.exit(exitValue)\fRを使用して任意の値を返すことを選択することもできます。値は次のとおりです。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI0\fR: 正常終了 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI>0\fR: エラー発生 .RE - -.LP .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -javac(1) -.TP 2 -o -jdb(1) -.TP 2 -o -javah(1) -.TP 2 -o -jar(1) -.TP 2 -o -.na -\f2「Java 拡張機能フレームワーク」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html -.TP 2 -o -.na -\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 @ -.fi -http://java.sun.com/docs/hotspot/VMOptions.html +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javac(1) .RE - -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/javac.1 b/jdk/src/linux/doc/man/ja/javac.1 index cb107bfb9a1..5d829a38a81 100644 --- a/jdk/src/linux/doc/man/ja/javac.1 +++ b/jdk/src/linux/doc/man/ja/javac.1 @@ -1,1250 +1,1489 @@ -." 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 -." 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 javac 1 "07 May 2011" - -.LP -.SH "名前" -javac \- Java プログラミング言語コンパイラ -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -コマンド行引数ファイル -.TP 2 -o -注釈処理 -.TP 2 -o -型の検索 -.TP 2 -o -プログラマティックインタフェース -.TP 2 -o -例 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: javac +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "javac" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +javac \- Javaクラスおよびインタフェースの定義を読み取り、バイトコードおよびクラス・ファイルにコンパイルします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \fP\f3javac\fP [ options ] [ sourcefiles ] [ classes ] [ @argfiles ] -.fl - -.fl +\fIjavac\fR [ \fIoptions\fR ] [ \fIsourcefiles\fR ] [ \fIclasses\fR] [ \fI@argfiles\fR ] .fi - -.LP -.LP -引数は順不同です。 -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。 -.TP 3 -sourcefiles -コンパイルされる 1 つ以上のソースファイル (MyClass.java など) -.TP 3 -classes -注釈の処理対象となる 1 つ以上のクラス (MyPackage.MyClass など) -.TP 3 -@argfiles -オプションとソースファイルを列挙した 1 つ以上のファイル。このファイルの中では \f2\-J\fP オプションは指定できません。 +.if n \{\ +.RE +.\} +.PP +引数を指定する順序は任意です。 +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIsourcefiles\fR +.RS 4 +コンパイルされる1つ以上のソース・ファイル(\fIMyClass\&.java\fRなど)。 +.RE +.PP +\fIclasses\fR +.RS 4 +注釈の処理対象となる1つ以上のクラス(\fIMyPackage\&.MyClass\fRなど)。 +.RE +.PP +\fI@argfiles\fR +.RS 4 +オプションとソース・ファイルを一覧表示する1つ以上のファイル。このファイルの中では\fI\-J\fRオプションは指定できません。コマンドライン引数ファイルを参照してください。 .RE - -.LP .SH "説明" -.LP -.LP -\f3javac\fP ツールは、Java プログラミング言語で記述されたクラスとインタフェースの定義を読み取り、バイトコードのクラスファイルにコンパイルします。また、Java ソースファイルおよびクラス内の注釈の処理も行います。 -.LP -.LP -ソースコードのファイル名を \f3javac\fP に渡すには、次の 2 つの方法があります。 -.LP -.RS 3 -.TP 2 -o -ソースファイルの数が少ない場合は、ファイル名をコマンド行で直接指定します。 -.TP 2 -o -ソースファイルの数が多い場合は、ファイル名を空白または改行で区切って、1 つのファイルに列挙します。次に、このリストファイル名の先頭に \f3@\fP を付けて、\f3javac\fP のコマンド行で指定します。 +.PP +\fIjavac\fRコマンドは、Javaプログラミング言語で記述されたクラスとインタフェースの定義を読み取り、バイトコードのクラス・ファイルにコンパイルします。\fIjavac\fRコマンドでは、Javaソース・ファイルおよびクラス内の注釈の処理もできます。 +.PP +ソース・コードのファイル名を\fIjavac\fRに渡すには、2つの方法があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ソース・ファイルの数が少ない場合は、ファイル名をコマンドラインで指定します。 .RE - -.LP -.LP -ソースコードのファイル名は \f2.java\fP 拡張子を、クラスのファイル名は \f2.class\fP 拡張子を持っていなければなりません。また、ソースファイルとクラスファイルのどちらも、該当するクラスに対応するルート名を持っていなければなりません。たとえば、 \f2MyClass\fP という名前のクラスは、 \f2MyClass.java\fP という名前のソースファイルに記述します。このソースファイルは、 \f2MyClass.class\fP という名前のバイトコードクラスファイルにコンパイルされます。 -.LP -.LP -内部クラスが定義されていると、追加のクラスファイルが生成されます。これらのクラスファイルの名前は、 \f2MyClass$MyInnerClass.class\fP のように、外部クラス名と内部クラス名を組み合わせたものになります。 -.LP -.LP -ソースファイルは、パッケージツリーを反映したディレクトリツリーに配置する必要があります。たとえば、すべてのソースファイルを \f3/workspace\fP に置いている場合、 \f2com.mysoft.mypack.MyClass\fP のソースコードは \f3/workspace/com/mysoft/mypack/MyClass.java\fP にある必要があります。 -.LP -.LP -デフォルトでは、コンパイラは、各クラスファイルを対応するソースファイルと同じディレクトリに置きます。別の出力先ディレクトリを指定するには、\f3\-d\fP を使用します (このあとのオプションを参照)。 -.LP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ソース・ファイルの数が多い場合は、ファイル内のファイル名を空白または改行で区切って指定します。\fIjavac\fRコマンドで、リスト・ファイル名の先頭にアットマーク(@)を使用します。 +.RE +.PP +ソース・コードのファイル名は\&.java拡張子を、クラスのファイル名は\&.class拡張子を持っている必要があります。また、ソース・ファイルとクラス・ファイルのどちらも、該当するクラスに対応するルート名を持っている必要があります。たとえば、\fIMyClass\fRという名前のクラスは、\fIMyClass\&.java\fRという名前のソース・ファイルに記述されます。このソース・ファイルは、\fIMyClass\&.class\fRという名前のバイトコード・クラス・ファイルにコンパイルされます。 +.PP +内部クラスが定義されていると、追加のクラス・ファイルが生成されます。これらのクラス・ファイルの名前は、\fIMyClass$MyInnerClass\&.class\fRのように、内部クラス名と外部クラス名を組み合せたものになります。 +.PP +ソース・ファイルは、パッケージ・ツリーを反映したディレクトリ・ツリーに配置します。たとえば、すべてのソース・ファイルが\fI/workspace\fRにある場合、\fIcom\&.mysoft\&.mypack\&.MyClass\fRのソース・コードを、\fI/workspace/com/mysoft/mypack/MyClass\&.java\fRに格納します。 +.PP +デフォルトでは、コンパイラは、各クラス・ファイルを対応するソース・ファイルと同じディレクトリに格納します。\fI\-d\fRオプションを使用して、別の出力先ディレクトリを指定できます。 .SH "オプション" -.LP -.LP -コンパイラには、現在の開発環境でサポートされており、将来のリリースでもサポートされる標準オプションのセットがあります。これ以外の非標準オプションは、現在の仮想マシンおよびコンパイラの実装に固有のオプションで、将来に変更される可能性があります。非標準オプションは、\f3\-X\fP で始まります。 -.LP -.SS -標準オプション -.LP -.RS 3 -.TP 3 -\-Akey[=value] -注釈プロセッサに渡されるオプション。これらは、javac によって直接解釈されず、個々のプロセッサによって使用されます。\f2key\fP には、1 つまたは複数の識別子を「.」で区切ったものを指定してください。 -.TP 3 -\-cp path または \-classpath path -ユーザーのクラスファイルおよび (場合によっては) 注釈プロセッサやソースファイルの検索場所を指定します。このクラスパスは \f3CLASSPATH\fP 環境変数のユーザークラスパスをオーバーライドします。\f3CLASSPATH\fP、\f3\-cp\fP、\f3\-classpath\fP のいずれも指定されていない場合、ユーザークラスパスは、現在のディレクトリになります。詳細は、「クラスパスの設定」を参照してください。 -.LP -\f3\-sourcepath\fP オプションが指定されていない場合は、ソースファイルもユーザークラスパスから検索されます。 -.LP -\f3\-processorpath\fP オプションが指定されていない場合は、注釈プロセッサもユーザークラスパスから検索されます。 -.TP 3 -\-Djava.ext.dirs=directories -インストール型拡張機能の位置をオーバーライドします。 -.TP 3 -\-Djava.endorsed.dirs=directories -承認された標準パスの位置をオーバーライドします。 -.TP 3 -\-d directory -クラスファイルの出力先ディレクトリを設定します。そのディレクトリはすでに存在している必要があります。\f3javac\fP は作成しません。クラスがパッケージの一部である場合、\f3javac\fP は、必要に応じてディレクトリを作成し、パッケージ名を反映したサブディレクトリにクラスファイルを置きます。たとえば、\f3\-d /home/myclasses\fP と指定し、クラスの名前が \f2com.mypackage.MyClass\fP である場合、クラスファイルは \f2/home/myclasses/com/mypackage/MyClass.class\fP になります。 -.LP -\f3\-d\fP が指定されなかった場合、\f3javac\fP は各クラスファイルを、その生成元となるソースファイルと同じディレクトリ内に格納します。 -.LP -\f3注:\fP \f3\-d\fP で指定したディレクトリはユーザークラスパスに自動的には追加されません。 -.TP 3 -\-deprecation -推奨されないメンバーやクラスが、使用またはオーバーライドされるたびに説明を表示します。\f3\-deprecation\fP が指定されていない場合、\f3javac\fP は、推奨されないメンバーやクラスを使用またはオーバーライドしているソースファイルの要約を表示します。\f3\-deprecation\fP は \f3\-Xlint:deprecation\fP の省略表記です。 -.TP 3 -\-encoding encoding -ソースファイルのエンコーディング名 ( \f2EUC\-JP や UTF\-8\fP など) を指定します。\f3\-encoding\fP が指定されていない場合は、プラットフォームのデフォルトコンバータが使われます。 -.TP 3 -\-endorseddirs directories -承認された標準パスの位置をオーバーライドします。 -.TP 3 -\-extdirs directories -\f2ext\fP ディレクトリの位置をオーバーライドします。\f2directories\fP 変数には、コロンで区切ったディレクトリのリストを指定します。指定したディレクトリ内の各 JAR アーカイブから、クラスファイルが検索されます。見つかったすべての JAR アーカイブは自動的にクラスパスの一部になります。 -.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 -局所変数のデバッグ情報 +.PP +コンパイラには、現在の開発環境でサポートされる標準オプションのセットがあります。これ以外の非標準オプションは、現在の仮想マシンおよびコンパイラの実装に固有のオプションで、将来、変更される可能性があります。非標準オプションは、\fI\-X\fRオプションで始まります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +クロスコンパイル・オプションを参照してください。 .RE -.TP 3 -\-help -標準オプションの形式を表示します。 -.TP 3 -\-implicit:{class,none} -暗黙的にロードされたソースファイルに対するクラスファイルの生成を制御します。クラスファイルを自動生成するには、\f3\-implicit:class\fP を使用します。クラスファイルの生成を抑制するには、\f3\-implicit:none\fP を使用します。このオプションが指定されなかった場合のデフォルト動作は、クラスファイルの自動生成になります。その場合、そのようなクラスファイルが生成された時に注釈処理も実行されると、コンパイラから警告が発行されます。このオプションが明示的に設定された場合には、警告は発行されません。「型の検索」を参照してください。 -.TP 3 -\-Joption -\f3javac\fP が呼び出す \f3java\fP 起動ツールに、\f2option\fP を渡します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 -.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 と同じ意味です。 -.TP 3 -\-proc: {none,only} -注釈処理、コンパイル、その両方、のいずれを実行するかを制御します。\f3\-proc:none\fP は、注釈処理なしでコンパイルが実行されることを意味します。\f3\-proc:only\fP は、注釈処理だけが実行され、後続のコンパイルはまったく実行されないことを意味します。 -.TP 3 -\-processor class1[,class2,class3...] -実行する注釈プロセッサの名前。これを指定した場合、デフォルトの検索処理は省略されます。 -.TP 3 -\-processorpath path -注釈プロセッサの検索場所を指定します。このオプションを使用しなかった場合、クラスパス内でプロセッサの検索が行われます。 -.TP 3 -\-s dir -生成されたソースファイルの格納先となるディレクトリを指定します。そのディレクトリはすでに存在している必要があります。\f3javac\fP は作成しません。クラスがパッケージの一部になっていた場合、コンパイラはそのソースファイルを、パッケージ名を反映したサブディレクトリ内に格納します。その際、必要に応じてディレクトリを作成します。たとえば、ユーザーが \f3\-s /home/mysrc\fP と指定し、クラスの名前が \f2com.mypackage.MyClass\fP であった場合、そのソースファイルは \f2/home/mysrc/com/mypackage/MyClass.java\fP 内に格納されます。 -.TP 3 -\-source release -受け付けるソースコードのバージョンを指定します。\f2release\fP には次の値を指定できます。 -.RS 3 -.TP 3 -1.3 -このコンパイラでは、JDK 1.3 以降に導入されたアサーション、総称、または他の言語機能をサポートしません。 -.TP 3 -1.4 -JDK 1.4 で導入された、アサーションを含むコードを受け付けます。 -.TP 3 -1.5 -JDK 5 で導入された総称および他の言語機能を含んだコードを受け付けます。 -.TP 3 -5 -1.5 と同義です。 -.TP 3 -1.6 -これがデフォルト値です。Java SE 6 では言語に対する変更は導入されませんでしたが、ソースファイル内のエンコーディングエラーが、以前のような「警告」ではなく、「エラー」として報告されるようになりました。 -.TP 3 -6 -1.6 と同義です。 -.TP 3 -1.7 -JDK 7 で導入された機能を含むコードを受け付けます。 -.TP 3 -7 -1.7 と同義です。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +非標準オプションを参照してください。 .RE -.TP 3 -\-sourcepath sourcepath -クラスまたはインタフェースの定義を検索するソースコードパスを指定します。ユーザークラスパスと同様に、ソースパスの複数のエントリはコロン (\f3:\fP) で区切ります。ソースパスのエントリには、ディレクトリ、JAR アーカイブ、または ZIP アーカイブを指定できます。パッケージを使っている場合は、ディレクトリまたはアーカイブ内のローカルパス名がパッケージ名を反映していなければなりません。 -.LP -\f3注:\fP\ クラスパスからクラスだけでなくそのソースも見つかった場合、そのクラスは自動再コンパイルの対象になることがあります。「型の検索」を参照してください。 -.TP 3 -\-verbose -詳細な出力を表示します。ロードされるクラスおよびコンパイルされるソースファイルごとの情報が出力されます。 -.TP 3 -\-version -バージョン情報を出力します。 -.TP 3 -\-Werror -警告が発生した場合にコンパイルを終了します。 -.TP 3 -\-X -非標準オプションに関する情報を表示して終了します。 +.SS "標準オプション" +.PP +\-A\fIkey\fR[\fI=value\fR] +.RS 4 +注釈プロセッサに渡すオプションを指定します。これらのオプションは、\fIjavac\fRが直接解釈するのではなく、それぞれのプロセッサで使用できるようになります。\fIkey\fRの値は、1つまたは複数の識別子をドット(\&.)で区切る必要があります。 .RE - -.LP -.SS -クロスコンパイルオプション -.LP -.LP -デフォルトでは、クラスのコンパイルは、\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 も可)、および \f31.7\fP (\f37\fP も可) です。 -.LP -\f3\-target\fP のデフォルトは、次のように \f3\-source\fP の値によって決まります。 -.RS 3 -.TP 2 -o -\-source が\f3指定されなかった\fP場合、\-target の値は \f31.7\fP になります。 -.TP 2 -o -\-source が\f31.2\fP の場合、\-target の値は \f31.4\fP になります。 -.TP 2 -o -\-source が\f31.3\fP の場合、\-target の値は \f31.4\fP になります。 -.TP 2 -o -\-source が\f3それ以外の値の場合はすべて\fP、\f3\\\-target\fP の値は \f3\-source\fP の値になります。 +.PP +\-cp \fIpath\fR or \-classpath \fIpath\fR +.RS 4 +ユーザー・クラス・ファイル、および(オプションで)注釈プロセッサとソース・ファイルを検索する場所を指定します。このクラス・パスは\fICLASSPATH\fR環境変数のユーザー・クラス・パスをオーバーライドします。\fICLASSPATH\fR、\fI\-cp\fR、\fI\-classpath\fRのいずれも指定されていない場合、ユーザーの\fIクラス・パス\fRは、現在のディレクトリになります。Setting the Class Path を参照してください。 +.sp +\fI\-sourcepath\fRオプションが指定されていない場合、ソース・ファイルもユーザー・クラス・パスから検索されます。 +.sp +\fI\-processorpath\fRオプションが指定されていない場合、注釈プロセッサもクラス・パスから検索されます。 .RE -.TP 3 -\-bootclasspath bootclasspath -指定された一連のブートクラスに対してクロスコンパイルを行います。ユーザークラスパスと同様に、ブートクラスパスの複数のエントリはコロン (\f3:\fP) で区切ります。ブートクラスパスのエントリには、ディレクトリ、JAR アーカイブ、または ZIP アーカイブを指定できます。 +.PP +\-Djava\&.ext\&.dirs=\fIdirectories\fR +.RS 4 +インストール済拡張機能の位置をオーバーライドします。 .RE - -.LP -.SS -非標準オプション -.LP -.RS 3 -.TP 3 -\-Xbootclasspath/p:path -ブートストラップクラスパスの前に追加します。 -.TP 3 -\-Xbootclasspath/a:path -ブートストラップクラスパスの後ろに追加します。 -.TP 3 -\-Xbootclasspath/:path -ブートストラップクラスファイルの位置をオーバーライドします。 -.TP 3 -\-Xlint -推奨されるすべての警告を有効にします。このリリースでは、利用可能なすべての警告を有効にすることが推奨されています。 -.TP 3 -\-Xlint:all -推奨されるすべての警告を有効にします。このリリースでは、利用可能なすべての警告を有効にすることが推奨されています。 -.TP 3 -\-Xlint:none -すべての警告を無効にします。 -.TP 3 -\-Xlint:name -警告 \f2name\fP を有効にします。このオプションで有効にできる警告のリストについては、「\-Xlint オプションを使って有効または無効にできる警告」を参照してください。 -.TP 3 -\-Xlint:\-name -警告 \f2name\fP を無効にします。このオプションで無効にできる警告のリストについては、「\-Xlint オプションを使って有効または無効にできる警告」を参照してください。 -.TP 3 -\-Xmaxerrs number -印刷するエラーの最大数を設定します。 -.TP 3 -\-Xmaxwarns number -印刷する警告の最大数を設定します。 -.TP 3 -\-Xstdout filename -コンパイラのメッセージを、指定されたファイルに送ります。デフォルトでは、コンパイラのメッセージは \f2System.err\fP に送られます。 -.TP 3 -\-Xprefer:{newer,source} -ある型に対してソースファイルとクラスファイルの両方が見つかった場合、そのどちらのファイルを読み取るべきかを指定します (「型の検索」を参照)。\f2\-Xprefer:newer\fP を使用した場合、ある型に対するソースファイルとクラスファイルの新しい方が読み取られます (デフォルト)。\f2\-Xprefer:source\fP オプションを使用した場合、ソースファイルが読み取られます。SOURCE の保存ポリシーを使って宣言された注釈に任意の注釈プロセッサがアクセスできるようにする場合は、\f2\-Xprefer:source\fP \f2を使用してください\fP。 -.TP 3 -\-Xpkginfo:{always,legacy,nonempty} -パッケージ情報ファイルの処理を指定します。 -.TP 3 -\-Xprint -指定された型のテキスト表現をデバッグ目的で出力します。注釈処理、コンパイルのどちらも実行しません。出力形式は変更される可能性があります。 -.TP 3 -\-XprintProcessorInfo -ある特定のプロセッサが処理を依頼されている注釈に関する情報を出力します。 -.TP 3 -\-XprintRounds -初回および後続の注釈処理ラウンドに関する情報を出力します。 +.PP +\-Djava\&.endorsed\&.dirs=\fIdirectories\fR +.RS 4 +承認された標準パスの位置をオーバーライドします。 .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 -不要で冗長なキャストについて警告します。次に例を示します。 +.PP +\-d \fIdirectory\fR +.RS 4 +クラス・ファイルの出力先ディレクトリを設定します。そのディレクトリは\fIjavac\fRでは作成されないため、すでに存在している必要があります。クラスがパッケージの一部である場合、\fIjavac\fRは、パッケージ名を反映したサブディレクトリ内にクラス・ファイルを格納し、必要に応じてディレクトリを作成します。 +.sp +\fI\-d\fR +\fI/home/myclasses\fRと指定し、クラスの名前が\fIcom\&.mypackage\&.MyClass\fRである場合、クラス・ファイルは\fI/home/myclasses/com/mypackage/MyClass\&.class\fRになります。 +.sp +\fI\-d\fRオプションが指定されなかった場合、\fIjavac\fRは、各クラス・ファイルを、その生成元となるソース・ファイルと同じディレクトリ内に格納します。 +.sp +\fB注意:\fR +\fI\-d\fRオプションによって指定されたディレクトリは、ユーザー・クラス・パスに自動的に追加されません。 +.RE +.PP +\-deprecation +.RS 4 +非推奨のメンバーまたはクラスが使用またはオーバーライドされるたびに、説明を表示します。\fI\-deprecation\fRオプションが指定されていない場合、\fIjavac\fRは、非推奨のメンバーまたはクラスを使用またはオーバーライドしているソース・ファイルのサマリーを表示します。\fI\-deprecation\fRオプションは、\fI\-Xlint:deprecation\fRの省略表記です。 +.RE +.PP +\-encoding \fIencoding\fR +.RS 4 +ソース・ファイルのエンコーディング名(EUC\-JPやUTF\-8など)を設定します。\fI\-encoding\fRオプションが指定されていない場合は、プラットフォームのデフォルト・コンバータが使用されます。 +.RE +.PP +\-endorseddirs \fIdirectories\fR +.RS 4 +承認された標準パスの位置をオーバーライドします。 +.RE +.PP +\-extdirs \fIdirectories\fR +.RS 4 +\fIext\fRディレクトリの位置をオーバーライドします。directories変数には、コロンで区切ったディレクトリのリストを指定します。指定したディレクトリ内の各JARファイルから、クラス・ファイルが検索されます。検出されたすべてのJARファイルは、クラス・パスの一部になります。 +.sp +クロスコンパイル(異なるJavaプラットフォームに実装されたブートストラップ・クラスや拡張機能クラスに対してコンパイルを行う)を実行する場合、このオプションには拡張機能クラスを含むディレクトリを指定します。詳細はクロスコンパイル・オプションを参照してください。 +.RE +.PP +\-g +.RS 4 +ローカル変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号およびソース・ファイル情報のみが生成されます。 +.RE +.PP +\-g:none +.RS 4 +デバッグ情報を生成しません。 +.RE +.PP +\-g:[\fIkeyword list\fR] +.RS 4 +カンマで区切られたキーワード・リストにより指定された、特定の種類のデバッグ情報のみを生成します。次のキーワードが有効です。 +.PP +source +.RS 4 +ソース・ファイルのデバッグ情報。 +.RE +.PP +lines +.RS 4 +行番号のデバッグ情報。 +.RE +.PP +vars +.RS 4 +ローカル変数のデバッグ情報。 +.RE +.RE +.PP +\-help +.RS 4 +標準オプションの概要を出力します。 +.RE +.PP +\-implicit:[\fIclass, none\fR] +.RS 4 +暗黙的にロードされたソース・ファイルに対するクラス・ファイルの生成を制御します。クラス・ファイルを自動生成するには、\fI\-implicit:class\fRを使用します。クラス・ファイルの生成を抑制するには、\fI\-implicit:none\fRを使用します。このオプションが指定されなかった場合のデフォルト動作は、クラス・ファイルの自動生成になります。その場合、そのようなクラス・ファイルが生成された時に注釈処理も実行されると、コンパイラから警告が発行されます。\fI\-implicit\fRオプションが明示的に設定された場合、警告は発行されません。型の検索を参照してください。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシン(JVM)に\fIoption\fRを渡します。optionには、Java起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.sp +\fB注意:\fR +\fICLASSPATH\fR、\fI\-classpath\fR、\fI\-bootclasspath\fRおよび\fI\-extdirs\fRオプションは、\fIjavac\fRの実行に使用されるクラスを指定しません。これらのオプションおよび変数を使用してコンパイラの実装をカスタマイズしようとすると、リスクが高く、多くの場合、必要な処理が実行されません。コンパイラの実装をカスタマイズする必要がある場合、\fI\-J\fRオプションを使用して、基礎となるJava起動ツールにオプションを渡します。 +.RE +.PP +\-nowarn +.RS 4 +警告メッセージを無効にします。このオプションは、\fI\-Xlint:none\fRオプションと同じように動作します。 +.RE +.PP +\-parameters +.RS 4 +リフレクションAPIのメソッド\fIjava\&.lang\&.reflect\&.Executable\&.getParameters\fRが取得できるように、生成されるクラス・ファイル内のコンストラクタとメソッドの仮パラメータ名を格納します。 +.RE +.PP +\-proc: [\fInone\fR, \fIonly\fR] +.RS 4 +注釈処理およびコンパイルを実行するかを制御します。\fI\-proc:none\fRは、注釈処理なしでコンパイルが実行されることを意味します。\fI\-proc:only\fRは、注釈処理のみが実行され、後続のコンパイルはまったく実行されないことを意味します。 +.RE +.PP +\-processor \fIclass1\fR [,\fIclass2\fR,\fIclass3\fR\&.\&.\&.] +.RS 4 +実行する注釈プロセッサの名前。これを指定した場合、デフォルトの検索処理は省略されます。 +.RE +.PP +\-processorpath \fIpath\fR +.RS 4 +注釈プロセッサを検索する場所を指定します。このオプションが使用されない場合、クラス・パスのプロセッサが検索されます。 +.RE +.PP +\-s \fIdir\fR +.RS 4 +生成されたソース・ファイルの格納先となるディレクトリを指定します。そのディレクトリは\fIjavac\fRでは作成されないため、すでに存在している必要があります。クラスがパッケージの一部である場合、コンパイラは、パッケージ名を反映したサブディレクトリ内にソース・ファイルを格納し、必要に応じてディレクトリを作成します。 +.sp +\fI\-s /home/mysrc\fRと指定し、クラスの名前が\fIcom\&.mypackage\&.MyClass\fRである場合、ソース・ファイルは\fI/home/mysrc/com/mypackage/MyClass\&.java\fRに格納されます。 +.RE +.PP +\-source \fIrelease\fR +.RS 4 +受け付けるソース・コードのバージョンを指定します。\fIrelease\fRには次の値を指定できます。 +.PP +1\&.3 +.RS 4 +このコンパイラでは、Java SE 1\&.3以降に導入されたアサーション、総称または他の言語機能をサポートしません。 +.RE +.PP +1\&.4 +.RS 4 +Java SE 1\&.4で導入された、アサーションを含むコードを受け付けます。 +.RE +.PP +1\&.5 +.RS 4 +Java SE 5で導入された総称および他の言語機能を含んだコードを受け付けます。 +.RE +.PP +5 +.RS 4 +1\&.5と同義です。 +.RE +.PP +1\&.6 +.RS 4 +Java SE 6では言語に対する変更は導入されませんでした。しかし、ソース・ファイル内のエンコーディング・エラーが、Java Platform, Standard Editionの以前のリリースような警告ではなく、エラーとして報告されるようになりました。 +.RE +.PP +6 +.RS 4 +1\&.6と同義です。 +.RE +.PP +1\&.7 +.RS 4 +これがデフォルト値です。Java SE 7で導入された機能を含むコードを受け付けます。 +.RE +.PP +7 +.RS 4 +1\&.7と同義です。 +.RE +.RE +.PP +\-sourcepath \fIsourcepath\fR +.RS 4 +クラスまたはインタフェースの定義を検索するソース・コード・パスを指定します。ユーザー・クラス・パスと同様に、ソース・パスのエントリは、Oracle Solarisではコロン(:)で、Windowsではセミコロンで区切り、ここには、ディレクトリ、JARアーカイブまたはZIPアーカイブを指定できます。パッケージを使用している場合は、ディレクトリまたはアーカイブ内のローカル・パス名がパッケージ名を反映している必要があります。 +.sp +\fB注意:\fR +ソース・ファイルも見つかった場合、クラス・パスにより見つかったクラスは再コンパイルされる可能性があります。型の検索を参照してください。 +.RE +.PP +\-verbose +.RS 4 +ロードされるクラスおよびコンパイルされるソース・ファイルごとの情報が出力される、詳細出力を使用します。 +.RE +.PP +\-version +.RS 4 +リリース情報を出力します。 +.RE +.PP +\-werror +.RS 4 +警告が発生した場合にコンパイルを終了します。 +.RE +.PP +\-X +.RS 4 +非標準オプションに関する情報を表示して終了します。 +.RE +.SS "クロスコンパイル・オプション" +.PP +デフォルトでは、クラスのコンパイルは、\fIjavac\fRが添付されているプラットフォームのブートストラップ・クラスおよび拡張機能クラスに対して行われます。ただし、\fIjavac\fRは、異なるJavaプラットフォームに実装されたブートストラップ・クラスおよび拡張機能クラスに対してコンパイルを行うクロスコンパイルもサポートしています。クロスコンパイルを行う場合は、\fI\-bootclasspath\fRおよび\fI\-extdirs\fRオプションを使用することが重要です。 +.PP +\-target \fIversion\fR +.RS 4 +仮想マシンの指定されたリリースを対象とするクラス・ファイルを生成します。クラス・ファイルは、指定されたターゲット以降のリリースでは動作しますが、それより前のリリースのJVMでは動作しません。有効なターゲットは、1\&.1、1\&.2、1\&.3、1\&.4、1\&.5 (5も可)、1\&.6 (6も可)および1\&.7 (7も可)です。 +.sp +\fI\-target\fRオプションのデフォルトは、\fI\-source\fRオプションの値によって異なります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションが指定されていない場合、\fI\-target\fRオプションの値は1\&.7です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションが1\&.2の場合、\fI\-target\fRオプションの値は1\&.4です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションが1\&.3の場合、\fI\-target\fRオプションの値は1\&.4です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションが1\&.5の場合、\fI\-target\fRオプションの値は1\&.7です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションが1\&.6の場合、\fI\-target\fRオプションの値は1\&.7です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションの他のすべての値の場合、\fI\-target\fRオプションの値は、\fI\-source\fRオプションの値になります。 +.RE +.RE +.PP +\-bootclasspath \fIbootclasspath\fR +.RS 4 +指定された一連のブート・クラスに対してクロスコンパイルを行います。ユーザー・クラス・パスと同様に、ブート・クラス・パスのエントリはコロン(:)で区切り、ここには、ディレクトリ、JARアーカイブまたはZIPアーカイブを指定できます。 +.RE +.SS "コンパクト・プロファイル・オプション" +.PP +JDK 8以降から、\fIjavac\fRコンパイラはコンパクト・プロファイルをサポートします。コンパクト・プロファイルを使用すると、Javaプラットフォーム全体を必要としないアプリケーションは、デプロイ可能で、小さいフットプリントで実行できます。コンパクト・プロファイル機能は、アプリケーション・ストアからのアプリケーションのダウンロード時間を短縮するのに使用できます。この機能は、JREをバンドルするJavaアプリケーションの、よりコンパクトなデプロイメントに役立ちます。この機能は、小さいデバイスでも役立ちます。 +.PP +サポートされているプロファイル値は、\fIcompact1\fR、\fIcompact2\fRおよび\fIcompact3\fRです。これらは、追加のレイヤーです。大きい番号の各コンパクト・プロファイルには、小さい番号の名前のプロファイル内のすべてのAPIが含まれます。 +.PP +\-profile +.RS 4 +コンパクト・プロファイルを使用する場合、このオプションは、コンパイル時にプロファイル名を指定します。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -String s = (String)"Hello!" -.fl -\fP +javac \-profile compact1 Hello\&.java .fi -.TP 3 -classfile -クラスファイルの内容に関連した問題について警告します。 -.TP 3 -deprecation -非推奨項目の使用について警告します。次に例を示します。 +.if n \{\ +.RE +.\} +javacは、指定されたプロファイルにない任意のJava SE APIを使用するソース・コードをコンパイルしません。これは、そのようなソース・コードをコンパイルしようとすることによって生じるエラー・メッセージの例です。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - java.util.Date myDate = new java.util.Date(); -.fl - int currentDay = myDate.getDay(); -.fl -\fP +cd jdk1\&.8\&.0/bin +\&./javac \-profile compact1 Paint\&.java +Paint\&.java:5: error: Applet is not available in profile \*(Aqcompact1\*(Aq +import java\&.applet\&.Applet; .fi -.LP -メソッド \f2java.util.Date.getDay\fP は JDK 1.1 以降は推奨されていません。 -.TP 3 -dep\-ann -\f2@deprecated\fP Javadoc コメントでドキュメント化されているが、 \f2@Deprecated\fP 注釈が付いていない項目について警告します。次に例を示します。 +.if n \{\ +.RE +.\} +この例では、\fIApplet\fRクラスを使用しないようにソースを変更することによって、エラーを修正できます。\-profileオプションを指定せずにコンパイルすることによって、エラーを修正することもできます。コンパイルは、Java SE APIの完全なセットに対して実行されます。(どのコンパクト・プロファイルにも、\fIApplet\fRクラスは含まれていません。) +.sp +コンパクト・プロファイルを使用してコンパイルするための別の方法として、\fI\-bootclasspath\fRオプションを使用して、プロファイルのイメージを指定する\fIrt\&.jar\fRファイルへのパスを指定します。かわりに\fI\-profile\fRオプションを使用すると、プロファイル・イメージは、コンパイル時にシステム上に存在する必要がありません。これは、クロスコンパイル時に役立ちます。 +.RE +.SS "非標準オプション" +.PP +\-Xbootclasspath/p:\fIpath\fR +.RS 4 +ブートストラップ・クラス・パスに接尾辞を追加します。 +.RE +.PP +\-Xbootclasspath/a:\fIpath\fR +.RS 4 +ブートストラップ・クラス・パスに接頭辞を追加します。 +.RE +.PP +\-Xbootclasspath/:\fIpath\fR +.RS 4 +ブートストラップ・クラス・ファイルの位置をオーバーライドします。 +.RE +.PP +\-Xdoclint:[\-]\fIgroup\fR [\fI/access\fR] +.RS 4 +\fIgroup\fRの値が\fIaccessibility\fR、\fIsyntax\fR、\fIreference\fR、\fIhtml\fRまたは\fImissing\fRのいずれかである特定のチェック・グループを有効または無効にします。これらのチェック・グループの詳細は、\fIjavadoc\fRコマンドの\fI\-Xdoclint\fRオプションを参照してください。\fI\-Xdoclint\fRオプションは、\fIjavac\fRコマンドではデフォルトで無効になります。 +.sp +変数\fIaccess\fRは、\fI\-Xdoclint\fRオプションがチェックするクラスとメンバーの最小の可視性レベルを指定します。\fIpublic\fR、\fIprotected\fR、\fIpackage\fRおよび\fIprivate\fRの値(可視性の高い順)の1つを持つことができます。たとえば、次のオプションは、(protected、package、publicを含む) protected以上のアクセス・レベルを持つクラスおよびメンバーを(すべてのチェック・グループで)チェックします。 +.sp +.if n \{\ +.RS 4 +.\} .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 +\-Xdoclint:all/protected .fi -.TP 3 -divzero -一定の整数 0 で除算されることについて警告します。次に例を示します。 +.if n \{\ +.RE +.\} +次のオプションは、package以上のアクセス権(packageおよびpublicを含む)を持つクラスおよびメンバーに対するHTMLエラーをチェックしないことを除き、すべてのアクセス・レベルに対してすべてのチェック・グループを有効にします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - int divideByZero = 42 / 0; -.fl -\fP +\-Xdoclint:all,\-html/package .fi -.TP 3 -empty -\f2if\fP 文以降が空の文であることについて警告します。次に例を示します。 +.if n \{\ +.RE +.\} +.RE +.PP +\-Xdoclint:none +.RS 4 +すべてのチェック・グループを無効にします。 +.RE +.PP +\-Xdoclint:all[\fI/access\fR] +.RS 4 +すべてのチェック・グループを有効にします。 +.RE +.PP +\-Xlint +.RS 4 +推奨されるすべての警告を有効にします。このリリースでは、利用可能なすべての警告を有効にすることをお薦めします。 +.RE +.PP +\-Xlint:all +.RS 4 +推奨されるすべての警告を有効にします。このリリースでは、利用可能なすべての警告を有効にすることをお薦めします。 +.RE +.PP +\-Xlint:none +.RS 4 +すべての警告を無効にします。 +.RE +.PP +\-Xlint:\fIname\fR +.RS 4 +警告名を無効にします。このオプションで無効にできる警告のリストは、\-Xlintオプションを使用した警告の有効化または無効化を参照してください。 +.RE +.PP +\-Xlint:\fI\-name\fR +.RS 4 +警告名を無効にします。このオプションで無効にできる警告のリストを取得するには、\-Xlintオプションを使用した警告の有効化または無効化\-Xlint\fIオプションを使用した\fRを参照してください。 +.RE +.PP +\-Xmaxerrs \fInumber\fR +.RS 4 +印刷するエラーの最大数を設定します。 +.RE +.PP +\-Xmaxwarns \fInumber\fR +.RS 4 +印刷する警告の最大数を設定します。 +.RE +.PP +\-Xstdout \fIfilename\fR +.RS 4 +コンパイラのメッセージを、指定されたファイルに送信します。デフォルトでは、コンパイラのメッセージは\fISystem\&.err\fRに送られます。 +.RE +.PP +\-Xprefer:[\fInewer,source\fR] +.RS 4 +ある型に対してソース・ファイルとクラス・ファイルの両方が見つかった場合、そのどちらのファイルを読み取るかを指定します。(型の検索を参照してください)。\fI\-Xprefer:newer\fRオプションを使用した場合、ある型に対するソース・ファイルとクラス・ファイルのうち新しい方が読み取られます(デフォルト)。\fI\-Xprefer:source\fRオプションを使用した場合、ソース・ファイルが読み取られます。\fISOURCE\fRの保存ポリシーを使用して宣言された注釈に任意の注釈プロセッサがアクセスできるようにする場合は、\fI\-Xprefer:source\fRを使用してください。 +.RE +.PP +\-Xpkginfo:[\fIalways\fR,\fIlegacy\fR,\fInonempty\fR] +.RS 4 +javacがpackage\-info\&.javaファイルから\fIpackage\-info\&.class\fRファイルを生成するかどうかを制御します。このオプションで使用可能なmode引数は次のとおりです。 +.PP +always +.RS 4 +すべての\fIpackage\-info\&.java\fRファイルの\fIpackage\-info\&.class\fRファイルを常に生成します。このオプションは、各\fI\&.java\fRファイルに対応する\fI\&.class\fRファイルがあることを確認するAntなどのビルド・システムを使用する場合に役立つことがあります。 +.RE +.PP +legacy +.RS 4 +package\-info\&.javaに注釈が含まれる場合にのみ\fIpackage\-info\&.class\fRファイルを生成します。package\-info\&.javaにコメントのみ含まれる場合に\fIpackage\-info\&.class\fRファイルを生成しません。 +.sp +\fB注意:\fR +\fIpackage\-info\&.class\fRファイルは生成できますが、package\-info\&.javaファイル内のすべての注釈に\fIRetentionPolicy\&.SOURCE\fRがある場合は空になります。 +.RE +.PP +nonempty +.RS 4 +package\-info\&.javaに\fIRetentionPolicy\&.CLASS\fRまたは\fIRetentionPolicy\&.RUNTIME\fRとともに注釈が含まれる場合にのみ\fIpackage\-info\&.class\fRファイルを生成します。 +.RE +.RE +.PP +\-Xprint +.RS 4 +デバッグ目的で指定した型のテキスト表示を出力します。注釈処理もコンパイルも実行されません。出力形式は変更される可能性があります。 +.RE +.PP +\-XprintProcessorInfo +.RS 4 +ある特定のプロセッサが処理を依頼されている注釈に関する情報を出力します。 +.RE +.PP +\-XprintRounds +.RS 4 +初回および後続の注釈処理ラウンドに関する情報を出力します。 +.RE +.SH "-XLINTオプションを使用した警告の有効化または無効化" +.PP +\fI\-Xlint:name\fRオプションを使用して警告\fIname\fRを有効にします。ここで、\fIname\fRは次の警告名のいずれかになります。\fI\-Xlint:\-name:\fRオプションを使用して、警告を無効化できます。 +.PP +cast +.RS 4 +不要で冗長なキャストについて警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +String s = (String) "Hello!" +.fi +.if n \{\ +.RE +.\} +.RE +.PP +classfile +.RS 4 +クラス・ファイルの内容に関連した問題について警告します。 +.RE +.PP +deprecation +.RS 4 +非推奨の項目の使用について警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java\&.util\&.Date myDate = new java\&.util\&.Date(); +int currentDay = myDate\&.getDay(); +.fi +.if n \{\ +.RE +.\} +メソッド\fIjava\&.util\&.Date\&.getDay\fRはJDK 1\&.1以降は非推奨になりました。 +.RE +.PP +dep\-ann +.RS 4 +\fI@deprecated\fR +Javadocコメントでドキュメント化されているが、\fI@Deprecated\fR注釈が付いていない項目について警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * @deprecated As of Java SE 7, replaced by {@link #newMethod()} + */ +public static void deprecatedMethood() { } +public static void newMethod() { } +.fi +.if n \{\ +.RE +.\} +.RE +.PP +divzero +.RS 4 +定整数0で除算されることについて警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +int divideByZero = 42 / 0; +.fi +.if n \{\ +.RE +.\} +.RE +.PP +empty +.RS 4 +\fIif \fR文以降が空の文であることについて警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl class E { -.fl void m() { -.fl - if (true) ; -.fl + if (true) ; } -.fl } -.fl -\fP .fi -.TP 3 -fallthrough -fall\-through ケースの \f2switch\fP ブロックをチェックし、検出されたものに対して警告メッセージを表示します。Fall\-through ケースは、\f2switch\fP ブロック内の最後のケースを除くケースです。このコードには \f2break\fP 文は含まれません。コードの実行をそのケースから次のケースへ移動します。たとえば、この \f2switch\fP ブロック内の \f2case 1\fP ラベルに続くコードは、\f2break\fP 文で終わっていません。 +.if n \{\ +.RE +.\} +.RE +.PP +fallthrough +.RS 4 +fall\-throughケースのswitchブロックをチェックし、検出されたものに対して警告メッセージを表示します。Fall\-throughケースは、switchブロック内の最後のケースを除くケースです。このコードにはbreak文は含まれません。コードの実行をそのケースから次のケースへ移動します。たとえば、このswitchブロック内のcase 1ラベルに続くコードは、break文で終わっていません。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl switch (x) { -.fl case 1: -.fl - System.out.println("1"); -.fl - // No break statement here. -.fl + System\&.out\&.println("1"); + // No break statement here\&. case 2: -.fl - System.out.println("2"); -.fl + System\&.out\&.println("2"); } -.fl -\fP .fi -.LP -このコードのコンパイル時に \f2\-Xlint:fallthrough\fP フラグが使用されていた場合、コンパイラは 当該ケースの行番号とともに、fall\-through ケースの可能性があることを示す警告を発行します。 -.TP 3 -finally -正常に完了できない \f2finally\fP 節について警告します。次に例を示します。 +.if n \{\ +.RE +.\} +このコードのコンパイル時に\fI\-Xlint:fallthrough\fRオプションが使用されていた場合、コンパイラは、問題になっているケースの行番号とともに、caseにfall\-throughする可能性があることを示す警告を発行します。 +.RE +.PP +finally +.RS 4 +正常に完了できない\fIfinally\fR句について警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} .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 +public static int m() { + try { + throw new NullPointerException(); + } catch (NullPointerException(); { + System\&.err\&.println("Caught NullPointerException\&."); + return 1; + } finally { + return 0; + } } -.fl -\fP .fi -.LP -この例では、コンパイラは \f2finally\fP ブロックに関する警告を生成します。このメソッドが呼び出されると、値 1 ではなく \f20\fP が \f2返されます\fP。 \f2finally\fP ブロックは、 \f2try\fP ブロックが終了すると必ず実行されます。この例では、制御が \f2catch\fP に移された場合、メソッドは終了します。ただし、 \f2finally\fP ブロックは実行される必要があるため、制御がすでにこのメソッドの外部に移されていても、このブロックは実行されます。 -.TP 3 -options -コマンド行オプションの使用に関する問題について警告します。この種の警告の例については、「クロスコンパイルの例」を参照してください。 -.TP 3 -overrides -メソッドのオーバーライドに関する問題について警告します。たとえば、次の 2 つのクラスがあるとします。 +.if n \{\ +.RE +.\} +この例では、コンパイラは\fIfinally\fRブロックに関する警告を生成します。\fIint\fRメソッドが呼び出されると、値0が返されます。\fIfinally\fRブロックは、\fItry\fRブロックが終了すると実行されます。この例では、制御が\fIcatch\fRブロックに移された場合、\fIint\fRメソッドは終了します。ただし、\fIfinally\fRブロックは実行される必要があるため、制御がメソッドの外部に移されていても、このブロックは実行されます。 +.RE +.PP +options +.RS 4 +コマンドライン・オプションの使用に関する問題について警告します。クロスコンパイル・オプションを参照してください。 +.RE +.PP +overrides +.RS 4 +メソッドのオーバーライドに関する問題について警告します。たとえば、次の2つのクラスがあるとします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl public class ClassWithVarargsMethod { -.fl - void varargsMethod(String... s) { } -.fl + void varargsMethod(String\&.\&.\&. s) { } } -.fl -\fP -.fi -.nf -\f3 -.fl + public class ClassWithOverridingMethod extends ClassWithVarargsMethod { -.fl - @Override -.fl - void varargsMethod(String[] s) { } -.fl + @Override + void varargsMethod(String[] s) { } } -.fl -\fP .fi -.LP -コンパイラは次のような警告を生成します。 +.if n \{\ +.RE +.\} +コンパイラは、次のような警告を生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -warning: [override] varargsMethod(String[]) in ClassWithOverridingMethod overrides varargsMethod(String...) in ClassWithVarargsMethod; overriding method is missing '...' -.fl -\fP +warning: [override] varargsMethod(String[]) in ClassWithOverridingMethod +overrides varargsMethod(String\&.\&.\&.) in ClassWithVarargsMethod; overriding +method is missing \*(Aq\&.\&.\&.\*(Aq .fi -.LP -コンパイラは、varargs メソッドを検出すると、varargs の仮パラメータを配列に変換します。メソッド \f2ClassWithVarargsMethod.varargsMethod\fP では、コンパイラは varargs の仮パラメータ \f2String... s\fP を仮パラメータ \f2String[] s\fP に変換します。String[] s は、メソッド \f2ClassWithOverridingMethod.varargsMethod\fP の仮パラメータに対応する配列です。その結果、この例ではコンパイルが行われます。 -.TP 3 -path -コマンド行での無効なパス要素と存在しないパスディレクトリについて警告します (クラスパス、ソースパスなどのパス関連)。このような警告を \f2@SuppressWarnings\fP 注釈で抑制することはできません。次に例を示します。 +.if n \{\ +.RE +.\} +コンパイラは、\fIvarargs\fRメソッドを検出すると、\fIvarargs\fRの仮パラメータを配列に変換します。メソッド\fIClassWithVarargsMethod\&.varargsMethod\fRでは、コンパイラは\fIvarargs\fRの仮パラメータ\fIString\&.\&.\&. s\fRを仮パラメータ\fIString[] s\fRに変換します。これは、メソッド\fIClassWithOverridingMethod\&.varargsMethod\fRの仮パラメータに対応する配列です。その結果、この例ではコンパイルが行われます。 +.RE +.PP +path +.RS 4 +コマンドラインでの無効なパス要素と存在しないパス・ディレクトリについて警告します(クラス・パス、ソース・パスなどのパス関連)。このような警告を\fI@SuppressWarnings\fR注釈で抑制することはできません。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -javac \-Xlint:path \-classpath /nonexistentpath Example.java -.fl -\fP +javac \-Xlint:path \-classpath /nonexistentpath Example\&.java .fi -.TP 3 -processing -注釈処理に関する問題について警告します。コンパイラがこの警告を生成するのは、注釈を含むクラスがあるときに、使用している注釈プロセッサでその型の例外を処理できない場合です。単純な注釈プロセッサの例を次に示します。 -.LP -\f3ソースファイル \fP\f4AnnoProc.java\fP: +.if n \{\ +.RE +.\} +.RE +.PP +processing +.RS 4 +注釈処理に関する問題について警告します。コンパイラがこの警告を生成するのは、注釈を含むクラスがあるときに、使用している注釈プロセッサでそのタイプの例外を処理できない場合です。たとえば、単純な注釈プロセッサを次に示します。 +.sp +\fBソース・ファイルAnnocProc\&.java\fR: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -import java.util.*; -.fl -import javax.annotation.processing.*; -.fl -import javax.lang.model.*; -.fl -import javax.lang.model.element.*; -.fl +import java\&.util\&.*; +import javax\&.annotation\&.processing\&.*; +import javax\&.lang\&.model\&.*; +import\&.javaz\&.lang\&.model\&.element\&.*; -.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 -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 -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 -コンパイラは次の警告を生成します。 -.nf -\f3 -.fl -warning: [serial] serializable class PersistentTime has no definition of serialVersionUID -.fl -\fP -.fi -.LP -直列化可能クラスが \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 -コンパイラは次の警告を生成します。 -.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 -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 -型の消去中に、型 \f2ArrayList\fP および \f2List\fP はそれぞれ \f2ArrayList\fP および \f2List\fP になります。 -.LP -変数 \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 + public boolean process(Set elems, RoundEnvironment renv){ + return true; } -.fl + + public SourceVersion getSupportedSourceVersion() { + return SourceVersion\&.latest(); + } } -.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 に変換します。その結果、ヒープ汚染が発生する可能性があります。 +.if n \{\ .RE - -.LP -.SH "コマンド行引数ファイル" -.LP -.LP -javac のコマンド行を短くしたり簡潔にしたりするために、 \f2javac\fP コマンドに対する引数 ( \f2\-J\fP オプションを除く) を含む 1 つ以上のファイルを指定することができます。この方法を使うと、どのオペレーティングシステム上でも、任意の長さの javac コマンドを作成できます。 -.LP -.LP -引数ファイルには、javac のオプションとソースファイル名を自由に組み合わせて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に空白が含まれている場合は、そのファイル名全体を二重引用符で囲みます。 -.LP -.LP -引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。引数ファイル内のファイル名リストでは、ワイルドカード (*) は使用できません。たとえば、 \f2*.java\fP とは指定できません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、 \f2\-J\fP オプションもサポートされていません。このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 -.LP -.LP -javac を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。javac は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 -.LP -.SS -引数ファイルを 1 つ指定する例 -.LP -.LP -\f2「argfile」という名前の引数ファイルに\fPすべての javac 引数を格納する場合は、次のように指定します。 -.LP +.\} +\fBソース・ファイルAnnosWithoutProcessors\&.java\fR: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% \fP\f3javac @argfile\fP -.fl -.fi - -.LP -.LP -この引数ファイルには、次の例で示されている 2 つのファイルの内容を両方とも入れることができます。 -.LP -.SS -引数ファイルを 2 つ指定する例 -.LP -.LP -たとえば、javac オプション用に 1 ファイル、ソースファイル名用に 1 ファイルというように、2 つの引数ファイルを作成することもできます。なお、このあとのリストでは、行の継続文字を使用していません。 -.LP -.LP -以下の内容を含む \f2options\fP というファイルを作成します。 -.LP -.nf -\f3 -.fl - \-d classes -.fl - \-g -.fl - \-sourcepath /java/pubs/ws/1.3/src/share/classes -.fl - -.fl -\fP -.fi - -.LP -.LP -以下の内容を含む \f2classes\fP というファイルを作成します。 -.LP -.nf -\f3 -.fl - MyClass1.java -.fl - MyClass2.java -.fl - MyClass3.java -.fl - -.fl -\fP -.fi - -.LP -.LP -次のコマンドを使用して \f3javac\fP を実行します。 -.LP -.nf -\f3 -.fl - % \fP\f3javac @options @classes\fP -.fl - -.fl -.fi - -.LP -.SS -パス付きの引数ファイルの例 -.LP -.LP -引数ファイルには、パスを指定できます。ただし、そのファイル内に指定されたファイル名は、現在の作業ディレクトリから見た相対パスになります。つまり、下の例の場合は、 \f2path1\fP や \f2path2\fP から見た相対パスではありません。 -.LP -.nf -\f3 -.fl -% \fP\f3javac @path1/options @path2/classes\fP -.fl -.fi - -.LP -.SH "注釈処理" -.LP -.LP -\f3javac\fP が注釈処理を直接サポートしているため、独立した注釈処理ツールである \f3apt\fP を使用する必要がなくなりました。 -.LP -.LP -注釈処理の API は、 \f2javax.annotation.processing\fP および \f2javax.lang.model\fP パッケージとそのサブパッケージ内に定義されています。 -.LP -.SS -注釈処理の概要 -.LP -.LP -\f3\-proc:none\fP オプションによって注釈処理が無効化されないかぎり、コンパイラは使用可能なすべての注釈プロセッサを検索します。検索パスは \f3\-processorpath\fP オプションを使って指定できます。検索パスを指定しなかった場合は、ユーザークラスパスが使用されます。プロセッサの検索は、検索パス上の \f2META\-INF/services/javax.annotation.processing.Processor\fP という名前のサービスプロバイダ構成ファイルに基づいて行われます。このようなファイルには、使用するすべての注釈プロセッサの名前を、1 行に 1 つずつ含めてください。また、別の方法として、\f3\-processor\fP オプションを使ってプロセッサを明示的に指定することもできます。 -.LP -.LP -コンパイラは、コマンド行のソースファイルやクラスを走査することで、どのような注釈が存在しているかを確認し終わると、プロセッサに対して問い合わせを行い、それらのプロセッサがどの注釈を処理できるのかを確認します。一致するものが見つかった場合、そのプロセッサが呼び出されます。各プロセッサは、自身が処理する注釈を「要求」できます。その場合、それらの注釈に対する別のプロセッサを見つける試みは行われません。すべての注釈が要求されてしまうと、コンパイラはそれ以上プロセッサの検索を行いません。 -.LP -.LP -いずれかのプロセッサによって新しいソースファイルが生成されると、注釈処理の 2 回目のラウンドが開始されます。新しく生成されたすべてのソースファイルが走査され、前回と同様に注釈が処理されます。以前のラウンドで呼び出されたプロセッサはすべて、後続のどのラウンドでも呼び出されます。これが、新しいソースファイルが生成されなくなるまで続きます。 -.LP -.LP -あるラウンドで新しいソースファイルが生成されなかった場合、注釈プロセッサがあと 1 回だけ呼び出され、必要な処理を実行する機会が与えられます。最後に、\f3\-proc:only\fP オプションが使用されないかぎり、コンパイラは、元のソースファイルと生成されたすべてのソースファイルをコンパイルします。 -.LP -.SS -暗黙的にロードされたソースファイル -.LP -.LP -コンパイラは、一連のソースファイルをコンパイルする際に、別のソースファイルを暗黙的にロードすることが必要な場合があります (「型の検索」を参照)。そのようなファイルは、現時点では注釈処理の対象になりません。デフォルトでは、注釈処理が実行され、かつ暗黙的にロードされたソースファイルが 1 つでもコンパイルされた場合にコンパイラは警告を発行します。この警告を抑制する方法については、\-implicit オプションを参照してください。 -.LP -.SH "型の検索" -.LP -.LP -ソースファイルをコンパイルする場合、コマンド行で指定したソースファイルに型の定義が見つからないとき、コンパイラは通常、その型に関する情報を必要とします。コンパイラは、ソースファイルで使われているクラスまたはインタフェース、拡張されているクラスまたはインタフェース、あるいは実装されているクラスまたはインタフェースすべてについて、型の情報を必要とします。これには、ソースファイルで明示的には言及されていなくても、継承を通じて情報を提供するクラスとインタフェースも含まれます。 -.LP -.LP -たとえば、\f3java.applet.Applet\fP をサブクラスにした場合、\f3アプレットの\fP祖先のクラス(\f3java.awt.Panel\fP、\f3java.awt.Container\fP、\f3java.awt.Component\fP、\f3java.lang.Object\fP)を使用していることになります。 -.LP -.LP -コンパイラは、型の情報が必要になると、その型を定義しているソースファイルまたはクラスファイルを探します。まず、ブートストラップクラスと拡張機能クラスを検索し、続いてユーザークラスパス (デフォルトではカレントディレクトリ) を検索します。ユーザークラスパスは、\f3CLASSPATH\fP 環境変数を設定して定義するか、または \f3\-classpath\fP コマンド行オプションを使って設定します。詳細は、「クラスパスの設定」を参照してください。 -.LP -.LP -\-sourcepath オプションが指定されている場合、コンパイラは、指定されたパスからソースファイルを検索します。それ以外の場合は、ユーザークラスパスからクラスファイルとソースファイルの両方を検索します。 -.LP -.LP -\f3\-bootclasspath\fP オプションと \f3\-extdirs\fP オプションを使うと、別のブートストラップクラスや拡張機能クラスを指定できます。このあとの「クロスコンパイルオプション」を参照してください。 -.LP -.LP -型の検索に成功したときに得られる結果は、クラスファイル、ソースファイル、またはその両方である場合があります。両方が見つかった場合、そのどちらを使用すべきかを \-Xprefer オプションでコンパイラに指示できます。\f3newer\fP が指定された場合、コンパイラは 2 つのファイルの新しい方を使用します。\f3source\fP が指定された場合、コンパイラはソースファイルを使用します。デフォルトは \f3newer\fP です。 -.LP -.LP -型の検索自体によって、または \f3\-Xprefer\fP が設定された結果として必要な型のソースファイルが見つかった場合、コンパイラはそのソースファイルを読み取り、必要な情報を取得します。さらに、コンパイラはデフォルトで、そのソースファイルのコンパイルも行います。\-implicit オプションを使えばその動作を指定できます。\f3none\fP を指定した場合、そのソースファイルのクラスファイルは生成されません。\f3class\fP を指定した場合、そのソースファイルのクラスファイルが生成されます。 -.LP -.LP -コンパイラは、注釈処理の完了後に、ある型情報の必要性を認識しない場合があります。その型情報があるソースファイル内に見つかり、かつ \f3\-implicit\fP オプションが指定されていない場合は、そのファイルが注釈処理の対象とならずにコンパイルされることを、コンパイラがユーザーに警告します。この警告を無効にするには、(そのファイルが注釈処理の対象となるように) そのファイルをコマンド行に指定するか、あるいはそのようなソースファイルに対してクラスファイルを生成すべきかどうかを \f3\-implicit\fP オプションを使って指定します。 -.LP -.SH "プログラマティックインタフェース" -.LP -.LP -\f3javac\fP は、 \f2javax.tools\fP パッケージ内のクラスとインタフェースによって定義される新しい Java Compiler API をサポートします。 -.LP -.SS -例 -.LP -.LP -コマンド行から指定された引数を使ってコンパイルを実行するには、次のようなコードを使用します。 -.LP -.nf -\f3 -.fl -JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); -.fl -int rc = javac.run(null, null, null, args); -.fl -\fP -.fi - -.LP -.LP -この場合、標準出力ストリームにすべての診断メッセージが書き出され、コマンド行から呼び出された \f3javac\fP が返すのと同じ終了コードが返されます。 -.LP -.LP -\f2javax.tools.JavaCompiler\fP インタフェース上のほかのメソッドを使えば、診断メッセージの処理やファイルの読み取り元/書き込み先の制御などを行えます。 -.LP -.SS -旧式のインタフェース -.LP -.LP -\f3注:\fP この API は、下位互換性を確保するためだけに残されています。新しいコードでは、必ず前述の Java Compiler API を使用してください。 -.LP -.LP -\f2com.sun.tools.javac.Main\fP クラスには、プログラム内からコンパイラを呼び出すための static メソッドが 2 つ用意されています。それらを次に示します。 -.LP -.nf -\f3 -.fl -public static int compile(String[] args); -.fl -public static int compile(String[] args, PrintWriter out); -.fl -\fP -.fi - -.LP -.LP -\f2args\fP パラメータは、javac プログラムに通常渡される任意のコマンド行引数を表しています。その概要については、前出の「形式」節を参照してください。 -.LP -.LP -\f2out\fP パラメータは、コンパイラの診断メッセージの出力先を示します。 -.LP -.LP -戻り値は、\f3javac\fP の終了値と同じです。 -.LP -.LP -名前が \f2com.sun.tools.javac\fP で始まるパッケージ (非公式には \f2com.sun.tools.javac\fP のサブパッケージとして知られる) に含まれるその他のクラスやメソッドは、どれも完全に内部用であり、いつでも変更される可能性があります。 -.LP -.SH "例" -.LP -.SS -簡単なプログラムのコンパイル -.LP -.LP -\f2Hello.java\fP というソースファイルで、\f3greetings.Hello\fP という名前のクラスを定義しているとします。 \f2greetings\fP ディレクトリは、ソースファイルとクラスファイルの両方があるパッケージディレクトリで、現在のディレクトリのすぐ下にあります。このため、この例では、デフォルトのユーザークラスパスを使用できます。また、\f3\-d\fP を使って別の出力先ディレクトリを指定する必要もありません。 -.LP -.nf -\f3 -.fl -% \fP\f3ls\fP -.fl -greetings/ -.fl -% \f3ls greetings\fP -.fl -Hello.java -.fl -% \f3cat greetings/Hello.java\fP -.fl -package greetings; -.fl - -.fl -public class Hello { -.fl - public static void main(String[] args) { -.fl - for (int i=0; i < args.length; i++) { -.fl - System.out.println("Hello " + args[i]); -.fl - } -.fl - } -.fl -} -.fl -% \f3javac greetings/Hello.java\fP -.fl -% \f3ls greetings\fP -.fl -Hello.class Hello.java -.fl -% \f3java greetings.Hello World Universe Everyone\fP -.fl -Hello World -.fl -Hello Universe -.fl -Hello Everyone -.fl -.fi - -.LP -.SS -複数のソースファイルのコンパイル -.LP -.LP -次の例では、パッケージ \f2greetings\fP 内のすべてのソースファイルをコンパイルします。 -.LP -.nf -\f3 -.fl -% \fP\f3ls\fP -.fl -greetings/ -.fl -% \f3ls greetings\fP -.fl -Aloha.java GutenTag.java Hello.java Hi.java -.fl -% \f3javac greetings/*.java\fP -.fl -% \f3ls greetings\fP -.fl -Aloha.class GutenTag.class Hello.class Hi.class -.fl -Aloha.java GutenTag.java Hello.java Hi.java -.fl -.fi - -.LP -.SS -ユーザークラスパスの指定 -.LP -.LP -上の例のソースファイルのうち 1 つを変更し、変更後のファイルを再コンパイルするとします。 -.LP -.nf -\f3 -.fl -% \fP\f3pwd\fP -.fl -/examples -.fl -% \f3javac greetings/Hi.java\fP -.fl -.fi - -.LP -.LP -\f2greetings.Hi\fP は、 \f2greetings\fP パッケージ内のほかのクラスを参照しているため、コンパイラはこれらのクラスを探す必要があります。上の例では、デフォルトのユーザークラスパスが、パッケージディレクトリを含むディレクトリと同じであるため、コンパイルは正常に実行されます。ただし、現在どのディレクトリにいるかに関係なく、このファイルを再コンパイルする場合は、ユーザークラスパスに \f2/examples\fP を追加する必要があります。ユーザークラスパスにエントリを追加するには、\f3CLASSPATH\fP を設定する方法もありますが、ここでは \f3\-classpath\fP オプションを使うことにします。 -.LP -.nf -\f3 -.fl -% \fP\f3javac \-classpath /examples /examples/greetings/Hi.java\fP -.fl -.fi - -.LP -.LP -再度 \f2greetings.Hi\fP を変更してバナーユーティリティーを使うようにした場合は、このバナーユーティリティーもユーザークラスパスを通じてアクセスできるようになっている必要があります。 -.LP -.nf -\f3 -.fl -% \fP\f3javac \-classpath /examples:/lib/Banners.jar \\ -.fl - /examples/greetings/Hi.java\fP -.fl -.fi - -.LP -.LP -\f2greetings\fP 内のクラスを実行するには、 \f2greetings\fP と、それが使うクラスの両方にアクセスできる必要があります。 -.LP -.nf -\f3 -.fl -% \fP\f3java \-classpath /examples:/lib/Banners.jar greetings.Hi\fP -.fl -.fi - -.LP -.SS -ソースファイルとクラスファイルの分離 -.LP -.LP -特に大規模プロジェクトの場合は、ソースファイルとクラスファイルを別々のディレクトリに置くと便利なことがあります。クラスファイルの出力先を別に指定するには、\f3\-d\fP を使います。ソースファイルはユーザークラスパスにはないので、\f3\-sourcepath\fP を使って、コンパイラがソースファイルを見つけることができるようにします。 -.LP -.nf -\f3 -.fl -% \fP\f3ls\fP -.fl -classes/ lib/ src/ -.fl -% \f3ls src\fP -.fl -farewells/ -.fl -% \f3ls src/farewells\fP -.fl -Base.java GoodBye.java -.fl -% \f3ls lib\fP -.fl -Banners.jar -.fl -% \f3ls classes\fP -.fl -% \f3javac \-sourcepath src \-classpath classes:lib/Banners.jar \\ -.fl - src/farewells/GoodBye.java \-d classes\fP -.fl -% \f3ls classes\fP -.fl -farewells/ -.fl -% \f3ls classes/farewells\fP -.fl -Base.class GoodBye.class -.fl -.fi - -.LP -.LP -\f3注:\fP コマンド行では \f2src/farewells/Base.java\fP を指定していませんが、このファイルもコンパイラによってコンパイルされています。自動コンパイルを監視するには、\f3\-verbose\fP オプションを使います。 -.LP -.SS -クロスコンパイルの例 -.LP -.LP -ここでは、\f3javac\fP を使って、1.6 VM 上で実行するコードをコンパイルします。 -.LP -.nf -\f3 -.fl -% \fP\f3javac \-source 1.6 \-target 1.6 \-bootclasspath jdk1.6.0/lib/rt.jar \\ -.fl - \-extdirs "" OldCode.java\fP -.fl -.fi - -.LP -.LP -\f2\-source 1.6\fP オプションにより、 \f2OldCode.java\fP のコンパイルにはバージョン 1.6 (または 6) の Java プログラミング言語が使用されます。\f3\-target 1.6\fP オプションにより、1.6 VM と互換性のあるクラスファイルが生成されます。ほとんどの場合、\f3\-target\fP オプションの値は \f3\-source\fP オプションの値になります。この例では、\f3\-target\fP オプションを省略できます。 -.LP -.LP -\f3\-bootclasspath\fP オプションを使用して、適切なバージョンのブートストラップクラス ( \f2rt.jar\fP ライブラリ) を指定する必要があります。指定しない場合は、コンパイラによって次の警告が生成されます。 -.LP -.nf -\f3 -.fl -% \fP\f3javac \-source 1.6 OldCode.java\fP -.fl -warning: [options] bootstrap class path not set in conjunction with \-source 1.6 -.fl -.fi - -.LP -.LP -適切なバージョンのブートストラップクラスを指定しない場合、コンパイラは古い言語仕様 (この例では、バージョン 1.6 の Java プログラミング言語) を新しいブートストラップクラスと組み合わせて使用します。その結果、存在しないメソッドへの参照が含まれていることがあるため、クラスファイルが古いプラットフォーム (この場合は Java SE 6) で動作しない可能性があります。 -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -.na -\f2「The javac Guide」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javac/index.html -.TP 2 -o -「java(1) \- Java アプリケーション起動ツール」 -.TP 2 -o -「jdb(1) \- Java デバッガ」 -.TP 2 -o -「javah(1) \- C ヘッダーとスタブファイルジェネレータ」 -.TP 2 -o -「javap(1) \- クラスファイル逆アセンブラ」 -.TP 2 -o -「javadoc(1) \- Java API ドキュメントジェネレータ」 -.TP 2 -o -「jar(1) \- JAR アーカイブツール」 -.TP 2 -o -.na -\f2「Java 拡張機能フレームワーク」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html -.RE - -.LP +@interface Anno { } +@Anno +class AnnosWithoutProcessors { } +.fi +.if n \{\ +.RE +.\} +次のコマンドは、注釈プロセッサ\fIAnnoProc\fRをコンパイルし、この注釈プロセッサをソース・ファイル\fIAnnosWithoutProcessors\&.java\fRに対して実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac AnnoProc\&.java +javac \-cp \&. \-Xlint:processing \-processor AnnoProc \-proc:only AnnosWithoutProcessors\&.java +.fi +.if n \{\ +.RE +.\} +コンパイラがソース・ファイル\fIAnnosWithoutProcessors\&.java\fRに対して注釈プロセッサを実行すると、次の警告が生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +warning: [processing] No processor claimed any of these annotations: Anno + +.fi +.if n \{\ +.RE +.\} +この問題を解決するために、クラス\fIAnnosWithoutProcessors\fRで定義および使用される注釈の名前を、\fIAnno\fRから\fINotAnno\fRに変更できます。 +.RE +.PP +rawtypes +.RS 4 +raw型に対する未検査操作について警告します。次の文では、\fIrawtypes\fR警告が生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +void countElements(List l) { \&.\&.\&. } +.fi +.if n \{\ +.RE +.\} +次の例では、\fIrawtypes\fR警告は生成されません。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +void countElements(List l) { \&.\&.\&. } +.fi +.if n \{\ +.RE +.\} +\fIList\fRはraw型です。ただし、\fIList\fRは、アンバウンド形式のワイルドカードのパラメータ化された型です。\fIList\fRはパラメータ化されたインタフェースであるため、常にその型引数を指定します。この例では、\fIList\fRの仮引数はアンバウンド形式のワイルドカード(\fI?\fR)を使用してその仮型パラメータとして指定されます。つまり、\fIcountElements\fRメソッドは\fIList\fRインタフェースのどのインスタンス化も受け付けることができます。 +.RE +.PP +Serial +.RS 4 +直列化可能クラスに\fIserialVersionUID\fR定義がないことを警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +public class PersistentTime implements Serializable +{ + private Date time; + + public PersistentTime() { + time = Calendar\&.getInstance()\&.getTime(); + } + + public Date getTime() { + return time; + } +} +.fi +.if n \{\ +.RE +.\} +コンパイラは次の警告を生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +warning: [serial] serializable class PersistentTime has no definition of +serialVersionUID +.fi +.if n \{\ +.RE +.\} +直列化可能クラスが\fIserialVersionUID\fRという名前のフィールドを明示的に宣言しない場合、直列化ランタイム環境では、「Javaオブジェクト直列化仕様」で説明されているように、クラスの様々な側面に基づいて、クラスの\fIserialVersionUID\fRのデフォルト値を計算します。ただし、すべての直列化可能クラスが\fIserialVersionUID\fR値を明示的に宣言することを強くお薦めします。 これは、\fIserialVersionUID\fR値を計算するデフォルトのプロセスが、コンパイラの実装によって異なる可能性のあるクラスの詳細にきわめて影響を受けやすく、その結果、直列化復元中に予期しない\fIInvalidClassExceptions\fRが発生する可能性があるためです。Javaコンパイラの実装が異なっても\fIserialVersionUID\fR値の一貫性を確保にするには、直列化可能クラスが\fIserialVersionUID\fR値を明示的に宣言する必要があります。 +.RE +.PP +static +.RS 4 +staticの使用に関する問題について警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +class XLintStatic { + static void m1() { } + void m2() { this\&.m1(); } +} +.fi +.if n \{\ +.RE +.\} +コンパイラは次の警告を生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +warning: [static] static method should be qualified by type name, +XLintStatic, instead of by an expression +.fi +.if n \{\ +.RE +.\} +この問題を解決するために、次のように\fIstatic\fRメソッド\fIm1\fRを呼び出すことができます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +XLintStatic\&.m1(); +.fi +.if n \{\ +.RE +.\} +あるいは、\fIstatic\fRキーワードをメソッド\fIm1\fRの宣言から削除することもできます。 +.RE +.PP +try +.RS 4 +try\-with\-resources文を含む、\fItry\fRブロックの使用に関する問題について警告します。たとえば、\fItry\fRブロックで宣言されたリソース\fIac\fRが使用されないために、次の文に対して警告が生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +try ( AutoCloseable ac = getResource() ) { // do nothing} +.fi +.if n \{\ +.RE +.\} +.RE +.PP +unchecked +.RS 4 +Java言語仕様で指定されている未検査変換警告の詳細を示します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +List l = new ArrayList(); +List ls = l; // unchecked warning +.fi +.if n \{\ +.RE +.\} +型の消去中に、型\fIArrayList\fRおよび\fIList\fRは、それぞれ\fIArrayList\fRおよび\fIList\fRになります。 +.sp +\fIls\fRコマンドには、パラメータ化された型\fIList\fRが指定されています。\fIl\fRによって参照される\fIList\fRが\fIls\fRに割り当てられた場合、コンパイラは未検査警告を生成します。コンパイル時に、コンパイラおよびJVMは、\fIl\fRが\fIList\fR型を参照するかどうかを判別できません。この場合、\fIl\fRは、\fIList\fR型を参照しません。その結果、ヒープ汚染が発生します。 +.sp +ヒープ汚染状態が発生するのは、\fIList\fRオブジェクト\fIl\fR +(そのstatic型は\fIList\fR)が別の\fIList\fRオブジェクト\fIls\fR +(異なるstatic型\fIList\fRを持つ)に代入される場合です。しかし、コンパイラではこの代入をいまだに許可しています。総称をサポートしないJava SEのリリースとの下位互換性を確保するために、この代入を許可する必要があります。型消去により、\fIList\fRおよび\fIList\fRは、両方とも\fIList\fRになります。その結果、コンパイラはオブジェクト\fIl\fR +(\fIList\fRというraw型を持つ)をオブジェクト\fIls\fRに代入することを許可します。 +.RE +.PP +varargs +.RS 4 +可変引数(\fIvarargs\fR)メソッド、特に非具象化可能引数を含むものの使用が安全でないことを警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +public class ArrayBuilder { + public static void addToList (List listArg, T\&.\&.\&. elements) { + for (T x : elements) { + listArg\&.add(x); + } + } +} +.fi +.if n \{\ +.RE +.\} +\fB注意:\fR +非具象化可能型は、型情報が実行時に完全に使用不可能な型です。 +.sp +コンパイラは、メソッド\fIArrayBuilder\&.addToList\fRの定義に関する次の警告を生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +warning: [varargs] Possible heap pollution from parameterized vararg type T +.fi +.if n \{\ +.RE +.\} +コンパイラは、varargsメソッドを検出すると、\fIvarargs\fRの仮パラメータを配列に変換します。しかし、Javaプログラミング言語では、パラメータ化された型の配列の作成を許可していません。メソッド\fIArrayBuilder\&.addToList\fRでは、コンパイラは\fIvarargs\fRの仮パラメータ\fIT\&.\&.\&.\fR要素を仮パラメータ\fIT[]\fR要素(配列)に変換します。しかし、型消去により、コンパイラは\fIvarargs\fRの仮パラメータを\fIObject[]\fR要素に変換します。その結果、ヒープ汚染が発生する可能性があります。 +.RE +.SH "コマンドライン引数ファイル" +.PP +\fIjavac\fRコマンドを短くしたり簡潔にしたりするために、\fIjavac\fRコマンドに対する引数(\fI\-J\fRオプションを除く)を含む1つ以上のファイルを指定することができます。これにより、どのオペレーティング・システム上でも、任意の長さの\fIjavac\fRコマンドを作成できます。 +.PP +引数ファイルには、\fIjavac\fRのオプションとソース・ファイル名を自由に組み合せて記述できます。ファイル内の引数は、空白または改行文字で区切ることができます。ファイル名に埋め込まれた空白がある場合、ファイル名全体を二重引用符で囲みます。 +.PP +引数ファイル内のファイル名は、引数ファイルの位置ではなく、現在のディレクトリに相対的となります。これらのリストでは、ワイルドカード(*)は使用できません(たとえば、\fI*\&.java\fRとは指定できません)。アットマーク(@)を使用したファイルの再帰的な解釈はサポートされていません。また、\fI\-J\fRオプションもサポートされていません。このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 +.PP +\fIjavac\fRコマンドを実行するときに、各引数ファイルのパスと名前の先頭にアットマーク(@)文字を付けて渡します。\fIjavac\fRコマンドは、アットマーク(@)で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +.PP +\fBExample 1\fR, 単一の引数ファイル +.RS 4 +\fIargfile\fRという名前の単一の引数ファイルを使用して、すべての\fIjavac\fR引数を格納する場合は、次のように指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac @argfile +.fi +.if n \{\ +.RE +.\} +この引数ファイルには、例2で示されている両方のファイルの内容を入れることができます。 +.RE +.PP +\fBExample 2\fR, 2つの引数ファイル +.RS 4 +\fIjavac\fRオプション用とソース・ファイル名用に、2つの引数ファイルを作成できます。次のリストには、行の継続文字はありません。 +.sp +次を含むoptionsという名前のファイルを作成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-d classes +\-g +\-sourcepath /java/pubs/ws/1\&.3/src/share/classes +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +.fi +.if n \{\ +.RE +.\} +次を含むclassesという名前のファイルを作成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +MyClass1\&.java +MyClass2\&.java +MyClass3\&.java +.fi +.if n \{\ +.RE +.\} +それから、次のように\fIjavac\fRコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac @options @classes +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, パスを使用した引数ファイル +.RS 4 +引数ファイルはパスを指定できますが、ファイル内のすべてのファイル名は、(\fIpath1\fRや\fIpath2\fRではなく)次のように現在の作業ディレクトリに相対的となります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac @path1/options @path2/classes +.fi +.if n \{\ +.RE +.\} +.RE +.SH "注釈処理" +.PP +\fIjavac\fRコマンドが注釈処理を直接サポートしているため、独立した注釈処理コマンドである\fIapt\fRを使用する必要がなくなりました。 +.PP +注釈プロセッサのAPIは、\fIjavax\&.annotation\&.processing\fRおよび\fIjavax\&.lang\&.model\fRパッケージとそのサブパッケージ内に定義されています。 +.SS "注釈処理を行う方法" +.PP +\fI\-proc:none\fRオプションによって注釈処理が無効化されない限り、コンパイラは使用可能なすべての注釈プロセッサを検索します。検索パスは、\fI\-processorpath\fRオプションを使用して指定できます。パスを指定しない場合、ユーザー・クラス・パスが使用されます。プロセッサの検索は、検索パス上の\fIMETA\-INF/services/javax\&.annotation\&.processing\fR\&.Processorという名前のサービス・プロバイダ構成ファイルに基づいて行われます。このようなファイルには、使用するすべての注釈プロセッサの名前を、1行に1つずつ含めてください。また、別の方法として、\fI\-processor\fRオプションを使用してプロセッサを明示的に指定することもできます。 +.PP +コンパイラは、コマンドラインのソース・ファイルやクラスを走査することで、どのような注釈が存在しているかを確認し終わると、プロセッサに対して問合せを行い、それらのプロセッサがどの注釈を処理できるのかを確認します。一致するものが見つかった場合、そのプロセッサが呼び出されます。各プロセッサは、自身が処理する注釈を要求できます。その場合、それらの注釈に対する別のプロセッサを見つける試みは行われません。すべての注釈が要求されると、コンパイラはそれ以上プロセッサの検索を行いません。 +.PP +いずれかのプロセッサによって新しいソース・ファイルが生成されると、注釈処理の2回目のラウンドが開始されます。新しく生成されたすべてのソース・ファイルがスキャンされ、前回と同様に注釈が処理されます。以前のラウンドで呼び出されたプロセッサはすべて、後続のどのラウンドでも呼び出されます。これが、新しいソース・ファイルが生成されなくなるまで続きます。 +.PP +あるラウンドで新しいソース・ファイルが生成されなかった場合、注釈プロセッサがあと1回のみ呼び出され、残りの処理を実行する機会が与えられます。最後に、\fI\-proc:only\fRオプションが使用されないかぎり、コンパイラは、元のソース・ファイルと生成されたすべてのソース・ファイルをコンパイルします。 +.SS "暗黙的にロードされたソース・ファイル" +.PP +コンパイラは、一連のソース・ファイルをコンパイルする際に、別のソース・ファイルを暗黙的にロードすることが必要な場合があります。型の検索を参照してください。そのようなファイルは、現時点では注釈処理の対象になりません。デフォルトでは、注釈処理が実行され、かつ暗黙的にロードされた任意のソース・ファイルがコンパイルされた場合、コンパイラは警告を発行します。\fI\-implicit\fRオプションでは、警告を抑制する方法が提供されます。 +.SH "型の検索" +.PP +ソース・ファイルをコンパイルするために、コンパイラは通常、型に関する情報を必要としますが、その型の定義はコマンドラインで指定したソース・ファイルにありません。コンパイラは、ソース・ファイルで使用されているクラスまたはインタフェース、拡張されているクラスまたはインタフェース、あるいは実装されているクラスまたはインタフェースすべてについて、型の情報を必要とします。これには、ソース・ファイルで明示的には言及されていなくても、継承を通じて情報を提供するクラスとインタフェースも含まれます。 +.PP +たとえば、サブクラス\fIjava\&.applet\&.Applet\fRを作成すると、\fIアプレット\fRの祖先のクラス(\fIjava\&.awt\&.Panel\fR、\fIjava\&.awt\&.Container\fR、\fIjava\&.awt\&.Component\fRおよび\fIjava\&.lang\&.Object\fR)を使用していることにもなります。 +.PP +コンパイラは、型の情報が必要になると、その型を定義しているソース・ファイルまたはクラス・ファイルを検索します。まず、ブートストラップ・クラスと拡張機能クラスを検索し、続いてユーザー・クラス・パス(デフォルトでは現在のディレクトリ)を検索します。ユーザー・クラス・パスは、\fICLASSPATH\fR環境変数を設定して定義するか、または\fI\-classpath\fRオプションを使用して定義します。 +.PP +\fI\-sourcepath\fRオプションが設定されている場合、コンパイラは、指定されたパスからソース・ファイルを検索します。それ以外の場合、コンパイラは、ユーザー・クラス・パスからクラス・ファイルとソース・ファイルの両方を検索します。 +.PP +\fI\-bootclasspath\fRオプションおよび\fI\-extdirs\fRオプションを使用して、別のブートストラップ・クラスや拡張機能クラスを指定できます。クロスコンパイル・オプションを参照してください。 +.PP +型の検索に成功したときに得られる結果は、クラス・ファイル、ソース・ファイル、またはその両方である場合があります。両方が見つかった場合、そのどちらを使用するかを\fI\-Xprefer\fRオプションでコンパイラに指示できます。\fInewer\fRが指定された場合、コンパイラは2つのファイルのうち新しい方を使用します。\fIsource\fRが指定された場合、コンパイラはソース・ファイルを使用します。デフォルトは\fInewer\fRです。 +.PP +型の検索自体によって、または\fI\-Xprefer\fRオプションが設定された結果として必要な型のソース・ファイルが見つかった場合、コンパイラはそのソース・ファイルを読み取り、必要な情報を取得します。デフォルトでは、コンパイラはソース・ファイルのコンパイルも行います。\fI\-implicit\fRオプションを使用してその動作を指定できます。\fInone\fRが指定された場合、ソース・ファイルに対してクラス・ファイルは生成されません。\fIclass\fRが指定された場合、ソース・ファイルに対してクラス・ファイルが生成されます。 +.PP +コンパイラは、注釈処理が完了するまで、ある型情報の必要性を認識しない場合があります。型情報がソース・ファイル内に見つかり、かつ\fI\-implicit\fRオプションが指定されていない場合、コンパイラによって、そのファイルが注釈処理の対象とならずにコンパイルされることが警告されます。この警告を無効にするには、(そのファイルが注釈処理の対象となるように)そのファイルをコマンドラインに指定するか、あるいはそのようなソース・ファイルに対してクラス・ファイルを生成する必要があるかどうかを\fI\-implicit\fRオプションを使用して指定します。 +.SH "プログラマティック・インタフェース" +.PP +\fIjavac\fRコマンドは、\fIjavax\&.tools\fRパッケージ内のクラスとインタフェースによって定義される新しいJava Compiler APIをサポートします。 +.SS "例" +.PP +コマンドライン引数を指定するようにコンパイルするには、次の構文を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +JavaCompiler javac = ToolProvider\&.getSystemJavaCompiler(); +JavaCompiler javac = ToolProvider\&.getSystemJavaCompiler(); +.fi +.if n \{\ +.RE +.\} +.PP +例では、診断を標準出力ストリームに書き込み、コマンドラインからの呼出し時に\fIjavac\fRが指定する終了コードを返します。 +.PP +\fIjavax\&.tools\&.JavaCompiler\fRインタフェースの他のメソッドを使用すると、診断の処理やファイルの読取り元/書込み先の制御などを行うことができます。 +.SS "旧式のインタフェース" +.PP +\fB注意:\fR +このAPIは、下位互換性のためにのみ保持されています。すべての新しいコードは、新しいJava Compiler APIを使用する必要があります。 +.PP +次のように、\fIcom\&.sun\&.tools\&.javac\&.Main\fRクラスには、プログラムからコンパイラを呼び出すためのstaticメソッドが2つ用意されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +public static int compile(String[] args); +public static int compile(String[] args, PrintWriter out); +.fi +.if n \{\ +.RE +.\} +.PP +\fIargs\fRパラメータは、通常コンパイラに渡される任意のコマンドライン引数を表しています。 +.PP +\fIout\fRパラメータは、コンパイラの診断出力の宛先を示します。 +.PP +\fIreturn\fR値は、\fIjavac\fRの\fIexit\fR値と同じです。 +.PP +\fB注意:\fR +名前が\fIcom\&.sun\&.tools\&.javac\fRで始まるパッケージ(\fIcom\&.sun\&.tools\&.javac\fRのサブパッケージ)で検出される他のすべてのクラスおよびメソッドは、完全に内部用であり、いつでも変更される可能性があります。 +.SH "例" +.PP +\fBExample 1\fR, 簡単なプログラムのコンパイル +.RS 4 +この例では、greetingsディレクトリで\fIHello\&.java\fRソース・ファイルをコンパイルする方法を示しています。\fIHello\&.java\fRで定義されたクラスは、\fIgreetings\&.Hello\fRと呼ばれます。greetingsディレクトリは、ソース・ファイルとクラス・ファイルの両方があるパッケージ・ディレクトリで、現在のディレクトリのすぐ下にあります。これにより、デフォルトのユーザー・クラス・パスを使用できるようになります。また、\fI\-d\fRオプションを使用して別の出力先ディレクトリを指定する必要もありません。 +.sp +\fIHello\&.java\fR内のソース・コードは次のとおりです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +package greetings; + +public class Hello { + public static void main(String[] args) { + for (int i=0; i < args\&.length; i++) { + System\&.out\&.println("Hello " + args[i]); + } + } +} +.fi +.if n \{\ +.RE +.\} +greetings\&.Helloのコンパイル: +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac greetings/Hello\&.java +.fi +.if n \{\ +.RE +.\} +\fIgreetings\&.Hello\fRの実行: +.sp +.if n \{\ +.RS 4 +.\} +.nf +java greetings\&.Hello World Universe Everyone +Hello World +Hello Universe +Hello Everyone +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, 複数のソース・ファイルのコンパイル +.RS 4 +この例では、\fIgreetings\fRパッケージのソース・ファイル\fIAloha\&.java\fR、\fIGutenTag\&.java\fR、\fIHello\&.java\fRおよび\fIHi\&.java\fRをコンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +% javac greetings/*\&.java +% ls greetings +Aloha\&.class GutenTag\&.class Hello\&.class Hi\&.class +Aloha\&.java GutenTag\&.java Hello\&.java Hi\&.java +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, ユーザー・クラス・パスの指定 +.RS 4 +前述の例のソース・ファイルのうち1つを変更した後に、そのファイルを再コンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +pwd +/examples +javac greetings/Hi\&.java +.fi +.if n \{\ +.RE +.\} +\fIgreetings\&.Hi\fRは\fIgreetings\fRパッケージ内の他のクラスを参照しているため、コンパイラはこれらの他のクラスを探す必要があります。デフォルトのユーザー・クラス・パスはパッケージ・ディレクトリを含むディレクトリであるため、前述の例は動作します。現在のディレクトリを気にせずにこのファイルを再コンパイルする場合、\fICLASSPATH\fRを設定して、ユーザー・クラス・パスに例のディレクトリを追加します。この例では、\fI\-classpath\fRオプションを使用しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-classpath /examples /examples/greetings/Hi\&.java +.fi +.if n \{\ +.RE +.\} +\fIgreetings\&.Hi\fRを変更してバナー・ユーティリティを使用するようにした場合、 そのユーティリティもユーザー・クラス・パスを通じてアクセスできるようになっている必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-classpath /examples:/lib/Banners\&.jar \e + /examples/greetings/Hi\&.java +.fi +.if n \{\ +.RE +.\} +\fIgreetings\fRパッケージでクラスを実行するには、プログラムは\fIgreetings\fRパッケージ、および\fIgreetings\fRクラスが使用するクラスにアクセスする必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-classpath /examples:/lib/Banners\&.jar greetings\&.Hi +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 4\fR, ソース・ファイルとクラス・ファイルの分離 +.RS 4 +次の例では、\fIjavac\fRを使用して、JVM 1\&.6上で実行するコードをコンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-source 1\&.6 \-target 1\&.6 \-bootclasspath jdk1\&.6\&.0/lib/rt\&.jar \e +\-extdirs "" OldCode\&.java +.fi +.if n \{\ +.RE +.\} +\fI\-source 1\&.6\fRオプションにより、\fIOldCode\&.java\fRのコンパイルにはリリース1\&.6(または6)のJavaプログラミング言語が使用されます。\fI\-target 1\&.6\fRオプションにより、JVM 1\&.6と互換性のあるクラス・ファイルが生成されます。ほとんどの場合、\fI\-target\fRオプションの値は\fI\-source\fRオプションの値になります。この例では、\fI\-target\fRオプションを省略できます。 +.sp +\fI\-bootclasspath\fRオプションを使用して、適切なバージョンのブートストラップ・クラス(\fIrt\&.jar\fRライブラリ)を指定する必要があります。指定しない場合は、コンパイラによって次の警告が生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-source 1\&.6 OldCode\&.java +warning: [options] bootstrap class path not set in conjunction with +\-source 1\&.6 +.fi +.if n \{\ +.RE +.\} +適切なバージョンのブートストラップ・クラスを指定しない場合、コンパイラは古い言語仕様(この例では、バージョン1\&.6のJavaプログラミング言語)を新しいブートストラップ・クラスと組み合せて使用します。その結果、存在しないメソッドへの参照が含まれていることがあるため、クラス・ファイルが古いプラットフォーム(この場合はJava SE 6)で動作しない可能性があります。 +.RE +.PP +\fBExample 5\fR, クロス・コンパイル +.RS 4 +この例では、\fIjavac\fRを使用して、JVM 1\&.6上で実行するコードをコンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-source 1\&.6 \-target 1\&.6 \-bootclasspath jdk1\&.6\&.0/lib/rt\&.jar \e + \-extdirs "" OldCode\&.java +.fi +.if n \{\ +.RE +.\} +The\fI \-source 1\&.6\fRオプションにより、OldCode\&.javaのコンパイルにはリリース1\&.6(または6)のJavaプログラミング言語が使用されます。\fI\-target 1\&.6\fRオプションにより、JVM 1\&.6と互換性のあるクラス・ファイルが生成されます。ほとんどの場合、\fI\-target\fRの値は\fI\-source\fRの値になります。この例では、\fI\-target\fRオプションは省略されます。 +.sp +\fI\-bootclasspath\fRオプションを使用して、適切なバージョンのブートストラップ・クラス(\fIrt\&.jar\fRライブラリ)を指定する必要があります。指定しない場合は、コンパイラによって次の警告が生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-source 1\&.6 OldCode\&.java +warning: [options] bootstrap class path not set in conjunction with \-source 1\&.6 +.fi +.if n \{\ +.RE +.\} +適切なバージョンのブートストラップ・クラスを指定しない場合、コンパイラは古い言語仕様を新しいブートストラップ・クラスと組み合せて使用します。この組合せは、存在しないメソッドへの参照が含まれていることがあるため、クラス・ファイルが古いプラットフォーム(この場合はJava SE 6)で動作しない可能性があります。この例では、コンパイラはJavaプログラミング言語のリリース1\&.6を使用します。 +.RE +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javadoc(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/javadoc.1 b/jdk/src/linux/doc/man/ja/javadoc.1 index e6374a63c67..74cdf8f655b 100644 --- a/jdk/src/linux/doc/man/ja/javadoc.1 +++ b/jdk/src/linux/doc/man/ja/javadoc.1 @@ -1,4236 +1,3839 @@ -." 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 -." 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 javadoc 1 "07 May 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 -引数を指定する順序は任意です。Javadoc ツールでの、処理対象の .java ファイルを決定する方法の詳細については、「ソースファイルの処理」\f2を参照\fPしてください。 -.RS 3 -.TP 3 -options -このドキュメントで説明されているコマンド行オプションです。Javadoc オプションの標準的な使用法については、「使用例」を参照してください。 -.TP 3 -packagenames -スペースで区切られた一連のパッケージ名です。たとえば、 \f2java.lang\ java.lang.reflect\ java.awt のように指定します\fP。ドキュメント化するパッケージを個別に指定する必要があります。ワイルドカードは使用不可です。再帰的処理のためには、\-subpackages を使用します。Javadoc ツールは、\f2\-sourcepath\fP を使用してこれらのパッケージ名を検索します。「1 つ以上のパッケージのドキュメント化」の例を参照してください。 -.TP 3 -sourcefilenames -スペースで区切られた一連のソースファイル名です。 各ファイルは、パスで始まります。アスタリスク (*) などのワイルドカードを含めることができます。Javadoc ツールが処理するのは、ファイル名が「.java」という拡張子で終わり、その拡張子を除いた名前が実際に有効なクラス名であるすべてのファイルです (Java 言語仕様を参照)。したがって、ハイフンを含む名前 ( \f2X\-Buffer\fP など) や、その他の無効な文字を含む名前を付けることによって、それらのファイルをドキュメント化の対象から除外できます。これは、テスト用のファイルや、テンプレートから生成されたファイルの場合に便利です。ソースファイル名の前に指定したパスによって、javadoc がそのファイルを検索する場所が決まります。Javadoc ツールは、これらのソースファイル名を検索するときには \f2\-sourcepath\fP を使用しません。相対パスは現在のディレクトリを起点とするため、 \f2Button.java\fP を渡すことは、 \f2./Button.java\fP を渡すことと同じです。ソースファイル名をフルパスで指定すると、 \f2/home/src/java/awt/Graphics*.java のようになります\fP。 「1 つ以上のクラスのドキュメント化」の例を参照してください。また、「パッケージとクラスのドキュメント化」の例のように、パッケージ名とソースファイル名を混在させることもできます。 -.TP 3 -\-subpackages pkg1:pkg2:... -ソースファイルから指定されたパッケージおよびそのサブパッケージ内に再帰的にドキュメントを生成します。パッケージ名またはソースファイル名を指定する必要はありません。 -.TP 3 -@argfiles -Javadoc オプション、パッケージ名、およびソースファイル名を任意の順序で並べたリストが含まれる 1 つ以上のファイルです。ワイルドカード (*) や \f2\-J\fP オプションは、このファイルの中では指定できません。 -.RE -.SH " 説明" -.LP -\f3Javadoc\fP ツールは、一連の Java ソースファイルにある宣言およびドキュメンテーションコメントを解析し、デフォルトでは public クラス、protected クラス、入れ子にされたクラス (匿名の内部クラスは除く)、インタフェース、コンストラクタ、メソッド、およびフィールドについて説明した一連の HTML ページを生成します。また、API (アプリケーションプログラミングインタフェース) ドキュメントの生成や、一連のソースファイルの実装ドキュメントの生成に使用できます。 -.LP -Javadoc ツールは、パッケージ全体、個々のソースファイル、またはその両方に対して実行できます。パッケージ全体のドキュメント化を行うには、\f2\-subpackages\fP を使用して最上位ディレクトリから下方に再帰的にたどるか、パッケージ名の明示的なリストを渡します。個々ソースファイルに対して javadoc を実行する場合は、一連のソース (.\f2.java\fP) ファイル名を渡します。具体的な例は、このドキュメントの最後に紹介します。次に、Javadoc によるソースファイルの処理について説明します。 -.SS -ソースファイルの処理 -.LP -Javadoc ツールは、末尾が「\f2.java\fP」のファイルを処理するだけでなく、「ソースファイル」で説明するその他のファイルも処理します。個々のソースファイル名を明示的に渡すことによって Javadoc ツールを実行する場合、どの \f2.java\fP ファイルを処理するかを正確に指定できます。ただし、多くの開発者はこの方法では作業しません。パッケージ名を渡すほうが簡単だからです。ソースファイル名を明示的に指定しなくても、Javadoc ツールは 3 つの方法で実行できます。その方法とは、(1) パッケージ名を渡す、(2) \f2\-subpackages\fP を使用する、(3) ソースファイル名でワイルドカードを使用する (\f2*.java\fP)、の 3 つです。これらの場合、Javadoc ツールが「\f2.java\fP」ファイルの処理を行うのは、そのファイルが次のすべての要件を満たす場合だけです。 -.RS 3 -.TP 2 -o -名前から接尾辞「\f2.java\fP」を取り除くと、実際に有効なクラス名になっている (Java 言語仕様の有効な文字を参照) -.TP 2 -o -ソースツリーのルートから相対的なディレクトリパスが、区切り文字をドットに変換すると、実際に有効なパッケージ名になっている -.TP 2 -o -パッケージ文には有効なパッケージ名が含まれる (前項目で指定) -.RE -.LP -\f3リンクの処理\fP \- Javadoc ツールは、処理の実行中に、その実行でドキュメント化されるパッケージ、クラス、およびメンバーの名前に対して、自動的に相互参照リンクを追加します。このようなリンクは、次のような場所に追加されます。 -.RS 3 -.TP 2 -o -宣言 (戻り値の型、引数の型、フィールドの型) -.TP 2 -o -\f2@see\fP タグから生成された [関連項目] セクション -.TP 2 -o -\f2{@link}\fP タグから生成されたインラインテキスト -.TP 2 -o -\f2@throws\fP タグから生成された例外の名前 -.TP 2 -o -インタフェースのメンバーに対する「定義」リンクと、クラスのメンバーに対する「オーバーライド」リンク -.TP 2 -o -パッケージ、クラス、およびメンバーを列挙している概要テーブル -.TP 2 -o -パッケージおよびクラスの継承ツリー -.TP 2 -o -索引 -.RE -.LP -コマンド行で指定しなかったクラスについての既存のテキスト (別に生成したテキスト) に対してハイパーリンクを追加するには、\f2\-link\fP および \f2\-linkoffline\fP オプションを利用できます。 -.LP -\f3その他の処理についての詳細\fP \- Javadoc ツールは、実行するたびに 1 つの完全なドキュメントを作成します。ドキュメントを追加生成することはできません。つまり、Javadoc ツールの以前の実行結果を修正したり、その内容を直接組み入れたりすることはできません。ただし、前述のように、以前の実行結果に対してリンクを追加することはできます。 -.LP -実装上の理由から、Javadoc ツールは、処理を実行するために java コンパイラを必要とし、java コンパイラに依存しています。Javadoc ツールは、 \f2javac\fP の一部を呼び出して宣言をコンパイルしますが、メンバーの実装は無視します。Javadoc ツールは、クラス階層を含むクラスの豊富な内部表現とクラスの「使用」関係を構築し、その情報から HTML を生成します。さらに、Javadoc ツールは、ソースコードのドキュメンテーションコメントから、ユーザーの提供したドキュメントも取得します。 -.LP -実際には、Javadoc ツールは、メソッド本体を持たない純粋なスタブファイルであるような \f2.java\fP ソースファイルでも動作します。したがって、API の作成時には、実装を記述する前の設計の早い段階で、ドキュメンテーションコメントを記述して javadoc ツールを実行できます。 -.LP -コンパイラに依存することによって、HTML 出力は、実際の実装に正確に対応します。実際の実装は、明示的なソースコードにではなく、暗黙のソースコードに依存する場合があります。たとえば、Javadoc ツールは、.class ファイルには存在するがソースコードには存在しないデフォルトコンストラクタ (Java 言語仕様を参照) \f2をドキュメント化\fP します。 -.LP -通常、Javadoc ツールでは、ソースファイルのコードが不完全またはエラーを含んでいる場合でもドキュメントを生成できます。このため、デバッグやトラブルシューティングを完了する前にドキュメントを生成できます。たとえば、Java 言語仕様によると、抽象メソッドを含むクラスは、それ自体抽象として宣言されなければなりません。このエラーを検出すると、javac コンパイラは停止しますが、Javadoc ツールは警告を出さずに処理を続行します。Javadoc ツールはドキュメンテーションコメントの基本的なチェックを行います。ドキュメンテーションコメントをより詳しくチェックする必要がある場合は、DocCheck ドックレットを使用してください。 -.LP -Javadoc ツールは、ドキュメントの内部構造を構築する際、参照クラスをすべてロードします。このため、Javadoc ツールは、ブートストラップクラス、拡張機能、またはユーザークラスにかかわらず、すべての参照クラスを検索できなければなりません。詳細は、 -.na -\f2「クラスの検索方法」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.htmlを参照してください。通常、作成するクラスは、拡張機能としてロードするか、Javadoc ツールのクラスパス内に置く必要があります。 -.SS -Javadoc のドックレット -.LP -Javadoc ツールの出力の内容と形式は、ドックレットを使ってカスタマイズできます。Javadoc ツールには、標準ドックレットと呼ばれるデフォルトの「組み込み」ドックレットがあります。標準ドックレットは、HTML 形式の API ドキュメントを生成します。標準ドックレットを修正またはサブクラス化することや、HTML、XML、MIF、RTF などの好みの出力形式を生成する独自のドックレットを記述することも可能です。ドックレットとその使用法については、次の項目を参照してください。 -.RS 3 -.TP 2 -o -.na -\f2Javadoc のドックレット\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/index.html -.TP 2 -o -\f2\-doclet\fP コマンド行オプション -.RE -.LP -\f2\-doclet\fP コマンド行オプションでカスタムドックレットが指定されていない場合、Javadoc ツールは、デフォルトの標準ドックレットを使用します。javadoc ツールには、使用されているドックレットに関係なく使用できるコマンド行オプションがあります。標準ドックレットでは、これらのほかに、いくつかのコマンド行オプションが追加されます。どちらのオプションについても、このあとの「オプション」で説明します。 -.SS -関連ドキュメントおよびドックレット -.RS 3 -.TP 2 -o -.na -\f2Javadoc に施された拡張機能\fP @ -.fi -http://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 関連のツールについての情報、およびバグの回避方法 -.TP 2 -o -.na -\f2How to Write Doc Comments for Javadoc\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html \- ドキュメンテーションコメントの記述方法に関する Sun の規約 -.TP 2 -o -.na -\f2Requirements for Writing API Specifications\fP @ -.fi -http://java.sun.com/j2se/javadoc/writingapispecs/index.html \- Java SE プラットフォーム仕様を記述する際に使用された標準要件この情報は、ソースファイルのドキュメンテーションコメント形式で API 仕様を記述する場合にも、その他の形式で記述する場合にも役立ちます。検証可能なアサーションを満たすパッケージ、クラス、インタフェース、フィールド、およびメソッドについての要件を定めています。 -.TP 2 -o -.na -\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 版では削除されました。 -.TP 2 -o -.na -\f2DocCheck ドックレット\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-141437.html \- ソースファイル内のドキュメンテーションコメントをチェックし、検出されたエラーや不正のレポートを生成します。Doc Check ユーティリティーの一部です。 -.TP 2 -o -.na -\f2MIF ドックレット\fP @ -.fi -http://java.sun.com/j2se/javadoc/mifdoclet/ \- MIF、FrameMaker、PDF の書式で API ドキュメントを自動生成します。MIF は Adobe FrameMaker の交換書式です。 -.RE -.SS -用語 -.LP -\f2「ドキュメンテーションコメント」\fP、\f2「doc コメント」\fP、\f2「主説明」\fP、\f2「タグ」\fP、\f2「ブロックタグ」\fP、および\f2「インラインタグ」\fPの用語については、「ドキュメンテーションコメント」で説明します以下のその他の用語は、Javadoc ツールのコンテキストで特定の意味を持ちます。 -.RS 3 -.TP 3 -生成ドキュメント (generated document) -javadoc ツールが Java ソースコード内のドキュメンテーションコメントから生成したドキュメントのことです。デフォルトの生成ドキュメントは HTML 形式で、標準ドックレットによって作成されます。 -.LP -.TP 3 -名前 (name) -Java 言語で書かれたプログラム要素の名前、つまりパッケージ、クラス、インタフェース、フィールド、コンストラクタ、またはメソッドの名前のことです。名前は、 \f2java.lang.String.equals(java.lang.Object)\fP のような完全修飾名にすることも、 \f2equals(Object)\fP のような部分修飾名にすることもできます。 -.LP -.TP 3 -ドキュメント化されるクラス (documented classes) -javadoc ツールの実行によって詳細なドキュメントが生成されるクラスおよびインタフェースのことです。ドキュメント化するには、ソースファイルが使用可能でなければならず、ソースファイル名またはパッケージ名を javadoc コマンドに渡され、アクセス修飾子 (public、protected、package\-private または private) によってフィルタ処理されないようにしなければなりません。ドキュメント化されるクラスは、javadoc ツールの出力に組み込まれるクラス、つまり「包含クラス」とも呼ばれます。 -.LP -.TP 3 -包含クラス (included classes) -ツールの実行によって詳細なドキュメントが生成されるクラスおよびインタフェースのことです。「ドキュメント化されるクラス」と同じ。 -.LP -.TP 3 -除外クラス (excluded classes) -ツールの実行によって詳細なドキュメントが生成されないクラスおよびインタフェースのことです。 -.LP -.TP 3 -参照クラス (referenced classes) -ドキュメント化されるクラスおよびインタフェースの定義 (実装) またはドキュメンテーションコメントの中で明示的に参照されているクラスおよびインタフェースのことです。参照の例としては、戻り値の型、パラメータの型、キャストの型、拡張されたクラス、実装されたインタフェース、インポートされたクラス、メソッド本体で使用されるクラス、@see、{@link}、{@linkplain}、{@inheritDoc} タグなどがあります。この定義は -.na -\f21.3\fP @ -.fi -http://download.oracle.com/javase/1.3/docs/tooldocs/solaris/javadoc.html#referencedclasses から変更されています。javadoc ツールを実行するときは、Javadoc のブートクラスパスおよびクラスパス内にあるすべての参照クラスをメモリーにロードする必要があります。参照クラスが見つからない場合は、「クラスが見つかりません」という警告が表示されます。Javadoc ツールは、クラスの存在とそのメンバーの完全指定の名前を判別するのに必要なすべての情報を、.class ファイルから引き出すことができます。 -.LP -.TP 3 -外部参照クラス (external referenced classes) -参照クラスのうち、javadoc ツールの実行中にドキュメントが生成されないクラスのことです。つまり、これらのクラスは、コマンド行で Javadoc ツールに渡されていません。生成ドキュメント内でこれらのクラスにリンクしている箇所は、「外部参照」または「外部リンク」と呼ばれます。たとえば、Javadoc ツールの実行対象が \f2java.awt\fP パッケージのみである場合、 \f2java.lang\fP 内のすべてのクラス ( \f2Object\fPなど) が外部参照クラスになります。外部参照クラスにリンクするには、 \f2\-link\fP および \f2\-linkoffline\fP オプションを使用します。外部参照クラスには、通常そのソースコメントを javadoc ツールの実行で利用できないという重要な特徴があります。この場合、それらのコメントを継承することはできません。 -.RE -.SH "ソースファイル" -.LP -Javadoc ツールは 4 種類の異なる「ソース」ファイルから出力を生成します。その 4 種類とは、クラスの Java 言語ソースファイル (\f2.java\fP)、パッケージコメントファイル、概要コメントファイル、およびその他の処理されないファイルです。また、ドキュメント化しないがソースツリーに存在する場合があるテストファイルやテンプレートファイルについても説明します。 -.SS -クラスソースコードファイル -.LP -それぞれのクラスまたはインタフェース、およびそのメンバーは、独自のドキュメンテーションコメントを持つことができ、それを \f2.java\fP ファイル内に保持します。ドキュメンテーションコメントの詳細は、「ドキュメンテーションコメント」を参照してください。 -.SS -パッケージコメントファイル -.LP -それぞれのパッケージは、独自のドキュメンテーションコメントを持つことができ、それを専用の「ソース」ファイルに保持します。その内容は、Javadoc ツールによって生成される概要ページに組み込まれます。このコメントには、通常、そのパッケージ全体に当てはまるドキュメントを記述します。 -.LP -パッケージコメントファイルを作成する場合、コメントの格納先として、次の 2 つのファイルのいずれかを選択できます。 -.RS 3 -.TP 2 -o -\f2package\-info.java\fP \- パッケージ宣言、パッケージ注釈、パッケージコメント、および Javadoc タグを格納できます。このファイルは一般に、package.html よりも推奨されます。 -.TP 2 -o -\f2package.html\fP \- 格納できるのはパッケージコメントと Javadoc タグだけです。パッケージ注釈は格納できません。 -.RE -.LP -各パッケージでは、単一の \f2package.html\fP ファイル、単一の \f2package\-info.java\fP ファイルのいずれかを選択できますが、その両方を選択することはできません。このどちらかのファイルを \f2.java\fP ファイルとともに、ソースツリー内のそのパッケージのディレクトリ内に配置してください。 -.LP -\f4package\-info.java\fP \- このファイルには、次の構造のパッケージコメントを格納できます。 コメントはパッケージ宣言の前に配置します。 -.LP -File: \f2java/applet/package\-info.java\fP +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: javadoc +.\" Language: English +.\" Date: 2011年5月10日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "javadoc" "1" "2011年5月10日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +javadoc \- Javaソース・ファイルから、APIドキュメントのHTMLページを生成します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjavadoc\fR {\fIpackages\fR|\fIsource\-files\fR} [\fIoptions\fR] [\fI@argfiles\fR] +.fi +.if n \{\ +.RE +.\} +.PP +\fIpackages\fR +.RS 4 +\fIjava\&.lang java\&.lang\&.reflect java\&.awt\fRなど、空白で区切ってドキュメント化するパッケージの名前。サブパッケージもドキュメント化する場合は、\fI\-subpackages\fRオプションを使用してパッケージを指定します。 +.sp +デフォルトでは、\fIjavadoc\fRは、現在のディレクトリおよびサブディレクトリで指定されたパッケージを探します。\fI\-sourcepath\fRオプションを使用して、パッケージを探すディレクトリのリストを指定します。 +.RE +.PP +\fIsource\-files\fR +.RS 4 +\fIClass\&.java Object\&.java Button\&.java\fRのように空白で区切った、ドキュメント化するJavaソース・ファイルの名前。デフォルトでは、\fIjavadoc\fRは、現在のディレクトリで指定されたクラスを探します。ただし、\fI/home/src/java/awt/Graphics*\&.java\fRのように、クラス・ファイルのフルパスを指定し、ワイルドカード文字を使用できます。現在のディレクトリからの相対パスも指定できます。 +.RE +.PP +\fIoptions\fR +.RS 4 +空白で区切られたコマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fI@argfiles\fR +.RS 4 +\fIjavadoc\fRコマンド・オプション、パッケージ名およびソース・ファイル名のリストを任意の順序で含むファイルの名前。 +.RE +.SH "説明" +.PP +\fIjavadoc\fRコマンドは、一連のJavaソース・ファイルにある宣言およびドキュメンテーション・コメントを解析し、デフォルトでは、publicクラス、protectedクラス、ネストされたクラス(匿名の内部クラスは除く)、インタフェース、コンストラクタ、メソッド、およびフィールドについて記述した一連のHTMLページを生成します。\fIjavadoc\fRコマンドは、APIドキュメントの生成や、一連のソース・ファイルの実装ドキュメントの生成に使用できます。 +.PP +\fIjavadoc\fRコマンドは、パッケージ全体、個々のソース・ファイル、またはその両方に対して実行できます。パッケージ全体のドキュメント化を行うには、\fI\-subpackages\fRオプションを使用してディレクトリおよびそのサブディレクトリを再帰的にたどるか、パッケージ名の明示的なリストを渡します。個々のソース・ファイルをドキュメント化するには、Javaソース・ファイル名のリストを渡します。簡単な例を参照してください。 +.SS "ソース・ファイルの処理" +.PP +\fIjavadoc\fRコマンドは、ソースで終わるファイル、およびソース・ファイルで説明しているその他のファイルを処理します。個々のソース・ファイル名を渡して\fIjavadoc\fRを実行する場合、どのソース・ファイルを処理するかを正確に指定できます。ただし、多くの開発者はこの方法では作業しません。パッケージ名を渡すほうが簡単だからです。ソース・ファイル名を明示的に指定しなくても、\fIjavadoc\fRコマンドは3つの方法で実行できます。パッケージ名を渡し、\fI\-subpackages\fRオプションを使用するか、またはソース・ファイル名にワイルドカードを使用することができます。これらの場合、\fIjavadoc\fRコマンドがソース・ファイルの処理を行うのは、そのファイルが次のすべての要件を満たす場合のみです。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ファイル名の接頭辞(\fI\&.java\fRを削除)が有効なクラス名である。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ソース・ツリーのルートからの相対的なパス名が、区切り文字をドットに変換すると、有効なパッケージ名になる。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージ文に有効なパッケージ名が含まれている。 +.RE +リンクの処理.PP +処理の実行中に、\fIjavadoc\fRコマンドは、その実行でドキュメント化されるパッケージ、クラス、およびメンバーの名前に対して、相互参照リンクを追加します。リンクは、次の場所に表示されます。@タグの説明については、javadocタグを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +宣言(戻り値の型、引数の型、フィールドの型)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI@see\fRタグから生成された「\fI関連項目\fR」セクション。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI{@link}\fRタグから生成されたインライン・テキスト。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI@throws\fRタグから生成された例外の名前。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +インタフェースのメンバーに対する「\fI定義\fR」リンクと、クラスのメンバーに対する「\fIオーバーライド\fR」リンク。メソッド・コメントの継承を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージ、クラス、およびメンバーをリストしているサマリー表。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージおよびクラスの継承ツリー。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +索引。 +.RE +.PP +コマンドラインで指定しなかったクラスについての既存のテキスト(別に生成したテキスト)に対してリンクを追加するには、\fI\-link\fRおよび\fI\-linkoffline\fRオプションを利用できます。 +処理の詳細.PP +\fIjavadoc\fRコマンドは実行するたびに1つの完全なドキュメントを生成します。前の実行の結果を変更または直接取り込む、増分ビルドを行いません。ただし、\fIjavadoc\fRコマンドは、他の実行の結果にリンクできます。 +.PP +\fIjavadoc\fRコマンドの実装にはJavaコンパイラが必要で、Javaコンパイラに依存しています。\fIjavadoc\fRコマンドは\fIjavac\fRコマンドの一部を呼び出し、宣言をコンパイルして、メンバーの実装を無視します。\fIjavadoc\fRコマンドは、クラス階層を含むクラスの豊富な内部表現とクラスの「使用」関係を構築し、HTMLを生成します。さらに、J\fIjavadoc\fRコマンドは、ソース・コードのドキュメンテーション・コメントから、ユーザーの提供したドキュメントも取得します。ドキュメンテーション・コメントを参照してください。 +.PP +\fIjavadoc\fRコマンドは、メソッド本体を持たない純粋なスタブ・ファイルであるソース・ファイルに対して実行できます。したがって、APIの実装前の設計の早い段階で、ドキュメンテーション・コメントを記述して\fIjavadoc\fRコメントを実行できます。 +.PP +コンパイラに依存することによって、HTML出力は、実際の実装に正確に対応します。実際の実装は、明示的なソース・コードにではなく、暗黙のソース・コードに依存する場合があります。たとえば、\fIjavadoc\fRコマンドは、コンパイル済クラス・ファイルには存在するがソース・コードには存在しないデフォルト・コンストラクタをドキュメント化します。 +.PP +多くの場合、\fIjavadoc\fRコマンドでは、ソース・ファイルのコードが不完全またはエラーを含んでいる場合でもドキュメントを生成できます。すべてのデバッグやトラブルシューティングを完了する前にドキュメントを生成できます。\fIjavadoc\fRコマンドはドキュメンテーション・コメントの基本的なチェックを行います。 +.PP +\fIjavadoc\fRコマンドは、ドキュメントの内部構造を構築する際、参照クラスをすべてロードします。このため、 +\fIjavadoc\fRコマンドは、ブートストラップ・クラス、拡張機能、またはユーザー・クラスにかかわらず、すべての参照クラスを検索できる必要があります。クラスの検出方法 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html)を参照してください +.PP +通常、作成するクラスは、拡張クラスとして、または\fIjavadoc\fRコマンドのクラス・パスでロードされる必要があります。 +.SS "Javadocのドックレット" +.PP +\fIjavadoc\fRコマンドの出力の内容と形式は、ドックレットを使用してカスタマイズできます。\fIjavadoc\fRコマンドには、標準ドックレットと呼ばれるデフォルトの組込みドックレットがあります。標準ドックレットは、HTML形式のAPIドキュメントを生成します。標準ドックレットを修正またはサブクラスを作成することや、HTML、XML、MIF、RTFなどの好みの出力形式を生成する独自のドックレットを記述することも可能です。 +.PP +\fI\-doclet\fRオプションでカスタム・ドックレットが指定されていない場合、\fIjavadoc\fRコマンドは、デフォルトの標準ドックレットを使用します。\fIjavadoc\fRコマンドには、使用されているドックレットに関係なく使用できるいくつかのオプションがあります。標準ドックレットでは、これらの他に、いくつかのコマンドライン・オプションが追加されます。オプションを参照してください。 +.SH "ソース・ファイル" +.PP +\fIjavadoc\fRコマンドは、次のタイプのソース・ファイルから出力を生成します。そのファイルは、クラスのJava言語ソース・ファイル(\fI\&.java\fR)、パッケージ・コメント・ファイル、概要コメント・ファイル、およびその他の未処理のファイルです。ここでは、ドキュメント化しないがソース・ツリーに存在する場合があるテスト・ファイルやテンプレート・ファイルについても説明します。 +.SS "クラスのソース・ファイル" +.PP +それぞれのクラスまたはインタフェース、およびそのメンバーは、独自のドキュメンテーション・コメントを持つことができ、それをソース・ファイル内に保持します。ドキュメンテーション・コメントを参照してください。 +.SS "パッケージ・コメント・ファイル" +.PP +それぞれのパッケージは、独自のドキュメンテーション・コメントを持つことができ、それを専用のソース・ファイルに保持します。その内容は、\fIjavadoc\fRコマンドによって生成されるパッケージのサマリー・ページに組み込まれます。このコメントには、通常、そのパッケージ全体に当てはまるドキュメントを記述します。 +.PP +パッケージ・コメント・ファイルを作成するには、次のいずれかのファイルにコメントを格納できます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIpackage\-info\&.java\fRファイルには、パッケージ宣言、パッケージ注釈、パッケージ・コメント、およびJavadocタグを格納できます。このファイルが優先されます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIpackage\&.html\fRファイルには、パッケージ・コメントとJavadocタグのみを格納できます。パッケージ注釈は格納できません。 +.RE +.PP +各パッケージは、\fIpackage\&.html\fRファイルまたは\fIpackage\-info\&.java\fRファイルのいずれかを1つ持つことができますが、その両方を持つことはできません。このどちらかのファイルをソース・ファイルとともに、ソース・ツリー内のそのパッケージ・ディレクトリ内に配置してください。 +package\-info\&.javaファイル.PP +\fIpackage\-info\&.java\fRファイルには、次の構造のパッケージ・コメントを含めることができます。コメントは、パッケージ宣言の前に配置されます。 +.PP +\fB注意:\fR +コメント区切り文字である\fI/**\fRおよび\fI*/\fRが存在する必要がありますが、中間の行の先頭のアスタリスクは省略可能です。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl * Provides the classes necessary to create an -.fl * applet and the classes an applet uses -.fl - * to communicate with its applet context. -.fl + * to communicate with its applet context\&. *

-.fl * The applet framework involves two entities: -.fl - * the applet and the applet context. -.fl + * the applet and the applet context\&. * An applet is an embeddable window (see the -.fl - * {@link java.awt.Panel} class) with a few extra -.fl + * {@link java\&.awt\&.Panel} class) with a few extra * methods that the applet context can use to -.fl - * initialize, start, and stop the applet. -.fl + * initialize, start, and stop the applet\&. * -.fl - * @since 1.0 -.fl - * @see java.awt -.fl + * @since 1\&.0 + * @see java\&.awt */ -.fl -package java.lang.applet; -.fl -\fP +package java\&.lang\&.applet; .fi -.LP -コメント区切り文字の \f2/**\fP と \f2/*\fP は存在している必要がありますが、中間行の行頭のアスタリスクは省略してもかまいません。 -.LP -\f4package.html\fP \- このファイルには、次の構造のパッケージコメントを格納できます。コメントは \f2\fP 要素内に配置します。 -.LP -File: \f2java/applet/package.html\fP +.if n \{\ +.RE +.\} +package\&.htmlファイル.PP +\fIpackage\&.html\fRファイルには、次の構造のパッケージ・コメントを含めることができます。コメントは、\fI\fR要素に配置されます。 +.PP +ファイル: +\fIjava/applet/package\&.html\fR +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - Provides the classes necessary to create an applet and the 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\&. +

The applet framework involves two entities: the applet -.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 +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 + + .fi -.LP -これは単なる通常の HTML ファイルであり、パッケージ宣言を含んでいない点に注意してください。パッケージコメントファイルの内容は、ほかのすべてのコメントと同様に HTML で記述しますが、1 つだけ例外があります。それは、このドキュメンテーションコメントには、コメント区切り文字 である \f2/**\fP と \f2*/\fP 、および行頭のアスタリスクを含めてはならない、という点です。コメントを書く場合は、最初の文をパッケージの概要とし、 \f2\fP と最初の文の間にタイトルやその他のテキストを含めないようにします。パッケージタグを含めることはできますが、ほかのドキュメンテーションコメントと同様、すべてのブロックタグは、主説明のあとに置かなければなりません。 \f2@see\fP タグをパッケージコメントファイルに追加する場合には、完全修飾名を使用する必要があります。詳細は、 -.na -\f2package.html\fPの例 @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#packagecommentsを参照してください。 -.LP -\f3パッケージコメントファイルの処理\fP \- Javadoc ツールは、実行時にパッケージコメントファイルを自動的に検索し、このファイルを見つけると次の処理を行います。 -.RS 3 -.TP 2 -o -処理できるようにコメントをコピーする( \f2package.html\fP の場合であれば、 \f2\fP と \f2\fP HTML タグの間にある内容をすべてコピーする。 \f2\fP セクションを含め、そこに \f2\fP やソースファイルの著作権記述などの情報を配置することもできるが、生成後のドキュメンテーションにはそれらは一切表示されない) -.TP 2 -o -パッケージタグがあれば、すべて処理する -.TP 2 -o -生成したパッケージの概要ページの最後に、処理したテキストを挿入する (例: -.na -\f2パッケージの概要\fP @ -.fi -http://java.sun.com/javase/6/docs/api/java/applet/package\-summary.html) -.TP 2 -o -パッケージの概要ページの先頭に、パッケージコメントの最初の文をコピーする。さらに、概要ページのパッケージリストに、パッケージ名とパッケージコメントの最初の文を追加する (例: -.na -\f2概要の要約\fP @ -.fi -http://java.sun.com/javase/6/docs/api/overview\-summary.html)。文の末尾は、クラスやメンバーの主説明の最初の文の末尾と同じ規則によって判断される +.if n \{\ .RE -.SS -概要コメントファイル -.LP -ドキュメント化する各アプリケーションまたはパッケージセットは、独自の概要ドキュメンテーションコメントを持つことができ、それは専用の「ソース」ファイルに保持されます。その内容は、Javadoc ツールによって生成される概要ページに組み込まれます。このコメントには、通常、アプリケーションまたはパッケージセット全体に当てはまるドキュメントを記述します。 -.LP -概要コメントファイルを作成するには、ファイルに任意の名前 (通常は \f4overview.html\fP) を付け、それを任意の場所 (通常はソースツリーの最上位) に配置できます。たとえば、 \f2java.applet\fP パッケージのソースファイルが \f2/home/user/src/java/applet\fP ディレクトリに格納されていれば、概要コメントファイルは \f2/home/user/src/overview.html に作成できます\fP。 -.LP -異なるパッケージのセットに対して javadoc を複数回実行する場合は、同じ 1 つのソースファイルのセットに対して複数の概要コメントファイルを作成できます。たとえば、内部ドキュメンテーション用に \-private を指定して javadoc を 1 回実行したあと、公開ドキュメンテーション用にそのオプションを指定しないで再度実行することができます。この場合、各概要コメントファイルの 1 文目で、そのドキュメンテーションを公開用または内部用として記述できます。 -.LP -概要コメントファイルの内容は、前述のパッケージコメントファイルと同様、HTML で記述された 1 つの大きなドキュメンテーションコメントです。詳細は、前述の説明を参照してください。要点を繰り返すと、このコメントを記述する場合は、最初の文をアプリケーションまたはパッケージセットの要約とし、 \f2<body>\fP と最初の文の間にタイトルその他のテキストを含めないようにします。概要タグを含めることができます。ほかのドキュメンテーションコメントと同じく、 \f2{@link}\fP などのインラインタグを除くすべてのタグは、主説明のあとに配置する必要があります。 \f2@see\fP タグを追加する場合には、完全修飾名を使用する必要があります。 -.LP -Javadoc ツールの実行時に、\-overview オプションを使って概要コメントファイル名を指定します。このファイルは、パッケージコメントファイルと同じように処理されます。 -.RS 3 -.TP 2 -o -\f2<body>\fP と \f2</body>\fP タグの間にあるすべての内容を処理対象としてコピーする -.TP 2 -o -概要タグがあれば、すべて処理する -.TP 2 -o -生成した概要ページの最後に、処理したテキストを挿入する (例: -.na -\f2概要の要約\fP @ -.fi -http://java.sun.com/javase/6/docs/api/overview\-summary.html) -.TP 2 -o -概要ページの先頭に、概要コメントの最初の文をコピーする +.\} +.PP +\fIpackage\&.html\fRファイルは通常のHTMLファイルであり、パッケージ宣言を含んでいません。パッケージ・コメント・ファイルの内容はHTMLで記述しますが、例外が1つあります。このドキュメンテーション・コメントには、コメント区切り文字である\fI/**\fRと\fI*/\fR、または行頭のアスタリスクを含めない、という点です。コメントを書く場合は、最初の文をパッケージのサマリーとし、\fI<body>\fRタグと最初の文の間にタイトルやその他のテキストを含めないようにします。パッケージ・タグを含めることができます。すべてのブロック・タグは、主説明の後に配置する必要があります。\fI@see\fRタグをパッケージ・コメント・ファイルに追加する場合には、完全修飾名を使用する必要があります。 +コメント・ファイルの処理.PP +\fIjavadoc\fRコメントを実行すると、パッケージ・コメント・ファイルが検索されます。パッケージ・コメント・ファイルが見つかった場合は、\fIjavadoc\fRコマンドは次の手順を実行します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +処理できるようにコメントをコピーします。package\&.htmlの場合、\fIjavadoc\fRコマンドは、\fI<body>\fRと\fI</body>\fR +HTMLタグ間のすべての内容をコピーします。\fI<head>\fRセクションを含め、そこに\fI<title>\fRタグやソース・ファイルの著作権記述などの情報を配置することもできますが、生成されたドキュメントにはそれらは一切表示されません。 .RE -.SS -その他の未処理のファイル -.LP -ソースには、Javadoc ツールによって生成先のディレクトリにコピーされる、その他の任意のファイルを含めることができます。一般に、このようなファイルには、グラフィックファイル、サンプルの Java ソース (.java) およびクラス (.class) ファイル、内容が通常の Java ソースファイルのドキュメンテーションコメントの影響を受けない独立した HTML ファイルなどがあります。 -.LP -処理されないファイルを含めるには、\f4doc\-files\fP という名前のディレクトリ内にそれらのファイルを配置します。このディレクトリは、ソースファイルが格納された任意のパッケージディレクトリのサブディレクトリにします。このようなサブディレクトリは、パッケージごとに 1 つ用意できます。イメージ、サンプルコード、ソースファイル、.class ファイル、アプレット、および HTML ファイルをこのディレクトリに格納できます。たとえば、ボタンの画像 \f2button.gif\fP を \f2java.awt.Button\fP クラスのドキュメンテーションに含める場合には、そのファイルを \f2/home/user/src/java/awt/doc\-files/\fP ディレクトリ内に配置します。なお、 \f2doc\-files\fP ディレクトリを \f2/home/user/src/java/doc\-files\fP に配置することはできません。なぜなら、 \f2java\fP はパッケージではないからです。つまり、java に直接含まれているソースファイルは 1 つも存在していません。 -.LP -これらの未処理のファイルへのリンクは、すべて明示的に記述する必要があります。これは、Javadoc ツールがそれらのファイルを見ずに、単にディレクトリとその内容を生成先にコピーするだけだからです。たとえば、 \f2Button.java\fP のドキュメンテーションコメント内のリンクは、次のようになります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージ・タグを処理します。パッケージ・タグを参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +処理したテキストを生成されたパッケージのサマリー・ページの下部に挿入します。Javaプラットフォーム、Standard Edition API仕様の概要 +(http://docs\&.oracle\&.com/javase/8/docs/api/overview\-summary\&.html)を参照してください +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージのサマリー・ページの先頭に、パッケージ・コメントの最初の文をコピーします。さらに、\fIjavadoc\fRコマンドは、概要ページのパッケージ・リストに、パッケージ名とパッケージ・コメントの最初の文を追加します。Javaプラットフォーム、Standard Edition API仕様の概要 +(http://docs\&.oracle\&.com/javase/8/docs/api/overview\-summary\&.html)を参照してください +.sp +文の終わりは、クラスやメンバーの主説明の最初の文の終わりと同じルールによって判断されます。 +.RE +.SS "概要コメント・ファイル" +.PP +ドキュメント化する各アプリケーションまたはパッケージ・セットは、独自の概要ドキュメンテーション・コメントを持つことができ、それは専用のソース・ファイルに保持されます。その内容は、\fIjavadoc\fRコマンドによって生成される概要ページに組み込まれます。このコメントには、通常、アプリケーションまたはパッケージ・セット全体に当てはまるドキュメントを記述します。 +.PP +このファイルにはoverview\&.htmlなどの名前を付けることができ、どこに配置してもかまいません。一般的な場所は、ソース・ツリーの最上部です。 +.PP +たとえば、\fIjava\&.applet\fRパッケージのソース・ファイルが/home/user/src/java/appletディレクトリに格納されている場合、概要コメント・ファイルは/home/user/src/overview\&.htmlに作成できます。 +.PP +異なるパッケージのセットに対して\fIjavadoc\fRコマンドを複数回実行する場合は、同じ1つのソース・ファイルのセットに対して複数の概要コメント・ファイルを作成できます。たとえば、内部ドキュメント用に\fI\-private\fRを指定して\fIjavadoc\fRコマンドを1回実行した後、公開ドキュメント用にそのオプションを指定しないで再度実行することができます。この場合、各概要コメント・ファイルの1文目で、そのドキュメントを公開用または内部用として記述できます。 +.PP +概要コメント・ファイルの内容は、HTMLで記述された1つの大きなドキュメンテーション・コメントです。最初の文はアプリケーションまたはパッケージのセットのサマリーとします。\fI<body>\fRタグと最初の文の間にタイトルやその他のテキストを含めないようにします。{\fI@link}\fRなどのインライン・タグを除くすべてのタグは、主説明の後に配置する必要があります。\fI@see\fRタグを追加する場合には、完全修飾名を使用する必要があります。 +.PP +\fIjavadoc\fRコマンドの実行時に、\fI\-overview\fRオプションを使用して概要コメント・ファイル名を指定します。このファイルは、パッケージ・コメント・ファイルと同じように処理されます。\fIjavadoc\fRコマンドは次の手順を実行します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI<body>\fRと\fI</body>\fRタグの間にある内容をすべて処理対象としてコピーします。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +概要タグがあれば処理します。概要タグを参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +処理したテキストを生成された概要ページの下部に挿入します。JavaプラットフォームStandard Edition API仕様の概要 +(http://docs\&.oracle\&.com/javase/8/docs/api/overview\-summary\&.html)を参照してください +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +概要サマリー・ページの先頭に、概要コメントの最初の文をコピーします。 +.RE +.SS "未処理のファイル" +.PP +ソース・ファイルには、\fIjavadoc\fRコマンドによって宛先ディレクトリにコピーされる、任意のファイルを含めることができます。このようなファイルには、通常、グラフィック・ファイル、サンプルのJavaソースおよびクラス・ファイル、一般的なJavaソース・ファイルのドキュメンテーション・コメントの影響を受けない多くの内容を含む独立したHTMLファイルなどがあります。 +.PP +未処理のファイルを含めるには、doc\-filesというディレクトリにファイルを配置します。doc\-filesディレクトリは、ソース・ファイルを含む任意のパッケージ・ディレクトリのサブディレクトリになることができます。doc\-filesサブディレクトリは、パッケージごとに1つ用意できます。 +.PP +たとえば、ボタンのイメージを\fIjava\&.awt\&.Button\fRクラスのドキュメントに含める場合には、そのイメージ・ファイルを/home/user/src/java/awt/doc\-files/ディレクトリに置きます。doc\-filesディレクトリを/home/user/src/java/doc\-filesに置かないでください。javaはパッケージではないからです。ソース・ファイルを含めることもできません。 +.PP +\fIjavadoc\fRコマンドはファイルを参照しないので、未処理のファイルへのすべてのリンクは、コードに含まれている必要があります。\fIjavadoc\fRコマンドはディレクトリとそのすべての内容を宛先にコピーします。次の例では、Button\&.javaドキュメンテーション・コメントのリンクがどのように見えるかを示しています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - /** -.fl - * This button looks like this: -.fl - * <img src="doc\-files/Button.gif"> -.fl - */ -.fl -\fP +/** + * This button looks like this: + * <img src="doc\-files/Button\&.gif"> + */ .fi -.SS -テストファイルおよびテンプレートファイル -.LP -一部の開発者から、テストファイルおよびテンプレートファイルを対応するソースファイルの近くのソースツリーに保存したいという要望がありました。つまり、これらのソースファイルと同じディレクトリまたはサブディレクトリに保存したいということです。 -.LP -個別のソースファイル名で明示的に渡して Javadoc ツールを実行する場合は、テストファイルおよびテンプレートファイルを意図的に除外して、処理されないようにすることができます。ただし、パッケージ名またはワイルドカードで渡す場合は、以下のルールに従って、これらのテストファイルおよびテンプレートファイルが処理されないようにする必要があります。 -.LP -テストファイルとテンプレートファイルの違いは、テストファイルは、正当でコンパイル可能なソースファイルであるのに対して、テンプレートファイルは、そうではないという点です。ただし、テンプレートファイルも「.java」で終わることができます。 -.LP -\f3テストファイル\fP \- 開発者の多くは、あるパッケージのコンパイル可能で実行可能なテストファイルをそのパッケージのソースファイルと同じディレクトリに配置したいと考えています。しかしテストファイルは、名前なしパッケージなど、ソースファイルパッケージとは別のパッケージに属させたいとも考えています (そのため、テストファイルには package ステートメントがないか、またはソースとは別の package ステートメントがある)。このような状況では、コマンド行で指定されているソースのパッケージ名を指定してそのソースがドキュメント化されているときに、テストファイルは警告またはエラーを引き起こします。そのようなテストファイルはサブディレクトリに配置する必要があります。たとえば、 \f2com.package1\fP 内のソースファイルに対するテストファイルを追加する場合は次のように、ハイフンを含んでいるためにパッケージ名としては無効であるようなサブディレクトリ内に、それらのファイルを配置します。 +.if n \{\ +.RE +.\} +.SS "テストおよびテンプレート・ファイル" +.PP +ソース・ツリーのテストおよびテンプレート・ファイルを、ソース・ファイルが存在するディレクトリまたはサブディレクトリと同じディレクトリに格納できます。テストおよびテンプレート・ファイルが処理されるのを防ぐには、\fIjavadoc\fRコマンドを実行し、明示的に個別のソース・ファイル名を渡します。 +.PP +テスト・ファイルは、有効な、コンパイル可能なソース・ファイルです。テンプレート・ファイルは、有効な、互換性のあるソース・ファイルではありませんが、多くの場合、\fI\&.java\fR接尾辞を持っています。 +テスト・ファイル.PP +テスト・ファイルを、名前なしパッケージや、ソース・ファイルが存在するパッケージとは別のパッケージに属するようにする場合、テスト・ファイルをソース・ファイルの下のサブディレクトリに配置し、そのディレクトリに無効な名前を付けます。テスト・ファイルをソースと同じディレクトリに配置し、パッケージ名を示すコマンドライン引数を指定して\fIjavadoc\fRコマンドを呼び出すと、テスト・ファイルは警告またはエラーを引き起こします。ファイルが無効な名前を持つサブディレクトリ内に存在する場合、テスト・ファイル・ディレクトリはスキップされ、エラーまたは警告は発行されません。たとえば、ソース・ファイルのテスト・ファイルをcom\&.package1に追加するには、無効なパッケージ名のサブディレクトリに配置します。次のディレクトリ名にはハイフンが含まれているため無効です。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - com/package1/test\-files/ -.fl -\fP +com/package1/test\-files/ .fi -.LP -こうすると、Javadoc ツールでは警告なしで test ディレクトリをスキップします。 -.LP -テストファイルに doc コメントが含まれる場合、次のようにワイルドカードを含んだテストソースファイル名で渡してテストファイルのドキュメントを生成するように、Javadoc ツールを別個に実行できるように設定できます。たとえば、 \f2com/package1/test\-files/*.java などです\fP。 -.LP -\f3ソースファイルのテンプレート\fP \- テンプレートファイルの名前は「.java」で終わることもありますが、テンプレートファイルはコンパイルできません。ソースディレクトリ内に保持したいソースファイルのテンプレートがある場合は、 \f2Buffer\-Template.java\fP のようにハイフンやその他の無効な Java 文字を名前に含めることで、テンプレートが処理されないようにします。これは、Javadoc ツールが処理するのは、「.java」接尾辞を除いた名前が 正規のクラス名であるソースファイルだけであるためです (Java 言語仕様の「Identifiers」に関する情報を参照)。 +.if n \{\ +.RE +.\} +.PP +テスト・ファイルにドキュメンテーション・コメントが含まれる場合、\fIjavadoc\fRコマンドの個別の実行で、ワイルドカードを含んだテスト・ソース・ファイル名(\fIcom/package1/test\-files/*\&.java\fRなど)を渡して、テスト・ファイルのドキュメントを生成するように設定できます。 +テンプレート・ファイル.PP +テンプレート・ファイルをソース・ディレクトリに配置するが、\fIjavadoc\fRコマンドを実行するときにエラーを生成しない場合、ファイルに\fIBuffer\-Template\&.java\fRなどの無効な名前を付けて、処理させないようにします。\fIjavadoc\fRコマンドは、接尾辞の\fI\&.java\fRが削除されると有効なクラス名になる名前を持つソース・ファイルのみを処理します。 .SH "生成されるファイル" -.LP -デフォルトでは、javadoc ツールは、HTML 形式のドキュメントを生成する標準ドックレットを使います。このドックレットは、以下の種類のファイルを生成します。それぞれの HTML ページは、個々のファイルに相当します。javadoc が生成するファイルの名前には、クラスやインタフェースの名前にちなんだものと、そうでないもの ( \f2package\-summary.html など\fP) の 2 種類があります。後者のグループのファイル名には、前者のグループとファイル名が競合しないように、ハイフンが含まれています。 -.LP -\f3基本内容ページ\fP -.RS 3 -.TP 2 -o -ドキュメント化するクラスまたはインタフェースごとに 1 つの\f3クラスページまたはインタフェースページ\fP (\f2クラス名\fP\f2.html\fP) -.TP 2 -o -ドキュメント化するパッケージごとに 1 つの\f3パッケージページ\fP (\f2package\-summary.html\fP)。Javadoc ツールは、 \f2package.html\fP または \f2package\-info.java\fP という名前のファイル内の HTML テキストをすべて組み入れます。 -.TP 2 -o -パッケージのセット全体に対して 1 つの\f3概要ページ\fP (\f2overview\-summary.html\fP)。これは、生成ドキュメントの先頭ページになります。Javadoc ツールは、\f2\-overview\fP オプションで指定されたファイル内の HTML テキストをすべて組み入れます。このページのファイルは、javadoc に複数のパッケージ名を渡した場合にだけ作成されます。詳細は、「HTML フレーム」を参照してください。 +.PP +デフォルトでは、\fIjavadoc\fRコマンドは、HTML形式のドキュメントを生成する標準ドックレットを使用します。標準ドックレットは、ここで説明する、基本内容ページ、相互参照ページ、サポート・ページを生成します。各HTMLページは個別のファイルに対応します。\fIjavadoc\fRコマンドは、2つのタイプのファイルを生成します。最初のタイプには、クラスおよびインタフェースに応じた名前が付けられます。2番目のタイプには、最初のタイプのファイルとの競合を防ぐために、ハイフンが含まれます(package\-summary\&.htmlなど)。 +.SS "基本内容ページ" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +記載されているクラスまたはインタフェースごとに1つのクラスまたはインタフェース・ページ(classname\&.html)。 .RE -.LP -\f3相互参照ページ\fP -.RS 3 -.TP 2 -o -\f3パッケージのセット全体に対して 1 つのクラス階層ページ\fP (\f2overview\-tree.html\fP)。このページを表示するには、ナビゲーションバーの [概要] をクリックしてから、[階層ツリー] をクリックします。 -.TP 2 -o -\f3パッケージごとに 1 つのクラス階層ページ\fP (\f2package\-tree.html\fP)。これを表示するには、特定のパッケージ、クラス、またはインタフェースのページに移動し、[階層ツリー] をクリックしてそのパッケージの階層を表示させます。 -.TP 2 -o -\f3パッケージごとに 1 つの [使用] ページ\fP (\f2package\-use.html\fP) と、クラスおよびインタフェースごとに 1 つずつの [使用] ページ (\f2class\-use/\fP\f2クラス名\fP\f2.html\fP)。このページには、特定のクラス、インタフェース、またはパッケージの一部を使っているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドについて記述されます。クラスまたはインタフェース A を例にして考えると、その [使用] ページには、A のサブクラス、A として宣言されたフィールド、A を返すメソッド、A 型のパラメータを持つメソッドおよびコンストラクタが表示されます。 このページを表示するには、まず、パッケージ、クラス、またはインタフェースのページに移動してから、ナビゲーションバーの [使用] リンクをクリックします。 -.TP 2 -o -\f3非推奨 API ページ\fP (\f2deprecated\-list.html\fP)。推奨されない名前がすべて一覧表示されます。非推奨名は、一般に改良された API が存在するために使用が推奨されていない API の名前であり、通常、それに置き換わる名前が提示されています。非推奨 API は、将来の実装では削除される可能性があります。 -.TP 2 -o -\f3定数フィールド値ページ\fP (\f2constant\-values.html\fP)。static フィールドの値用です。 -.TP 2 -o -\f3直列化された形式ページ\fP (\f2serialized\-form.html\fP)。直列化可能かつ外部化可能なクラスに関する情報用です。これらの各クラスには、直列化フィールドおよびメソッドに関する説明があります。これらの情報は、API を使う開発者ではなく、再実装を行う開発者に必要な情報です。ナビゲーションバーにこのページへのリンクはありませんが、直列化されたクラスに移動して、そのクラスの説明にある「関連項目」セクションで「直列化された形式」をクリックすると、この情報を取得できます。標準ドックレットは直列化された形式ページを自動生成します。Serializable を実装するすべてのクラス (public または 非 public) が含まれるほか、 \f2readObject\fP メソッドや \f2writeObject\fP メソッド、直列化されるフィールド、および \f2@serial\fP、\f2@serialField\fP、\f2@serialData\fP タグからのドキュメンテーションコメントも含まれます。public 直列化可能クラスを除外するには、そのクラス (またはそのパッケージ) を \f2@serial exclude\fP でマークします。package\-private 直列化可能クラスを含めるには、そのクラス (またはそのパッケージ) を \f2@serial include\fP でマークします。バージョン 1.4 では \f2\-private\fP オプションの指定なしで javadoc ツールを実行することにより、public クラスおよび private クラスの完全に直列化されたクラスを生成できます。 -.TP 2 -o -\f3索引\fP (\f2index\-*.html\fP)。すべてのクラス、インタフェース、コンストラクタ、フィールド、およびメソッドの名前がアルファベット順に並んでいます。索引は、Unicode を扱えるように国際化されています。1 つのファイルとして生成することも、先頭文字 (英語の場合 A ~ Z) ごとに別々のファイルとして生成することもできます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +記載されているパッケージごとに1つのパッケージ・ページ(package\-summary\&.html)。\fIjavadoc\fRコマンドは、ソース・ツリーのパッケージ・ディレクトリ内にあるpackage\&.htmlまたはpackage\-info\&.javaという名前のファイル内のHTMLテキストをすべて組み入れます。 .RE -.LP -\f3サポートファイル\fP -.RS 3 -.TP 2 -o -\f3ヘルプページ\fP (\f2help\-doc.html\fP)。ナビゲーションバーや前述の各ページに関する説明が記載されています。デフォルトのヘルプファイルに代わる独自のカスタムヘルプファイルを提供するには、\f2\-helpfile\fP を使用します。 -.TP 2 -o -表示用の HTML フレームを作成する 1 つの \f3index.html ファイル\fP。このファイルは、フレーム付きの先頭ページを表示する場合にロードします。このファイル自体には、テキスト内容は含まれていません。 -.TP 2 -o -複数の\f3フレームファイル\fP (\f2*\-frame.html\fP)。パッケージ、クラス、およびインタフェースのリストが含まれています。HTML フレームを表示するときに使用されます。 -.TP 2 -o -\f3パッケージリスト\fPファイル (\f2package\-list\fP)。 \f2\-link\fP および \f2\-linkoffline\fP オプションで使用されます。これは、HTML ファイルではなくテキストファイルであり、どのリンクからもアクセスできません。 -.TP 2 -o -\f3スタイルシート\fPファイル (\f2stylesheet.css\fP)。生成されるページ上のいくつかの要素について、色、フォントファミリ、フォントサイズ、フォントのスタイル、および配置を制御します。 -.TP 2 -o -\f3doc\-files\fP ディレクトリ。生成先ディレクトリにコピーするイメージ、サンプルコード、ソースコードなどのファイルがすべて格納されます。これらのファイルは、Javadoc ツールによって処理されないため、ファイル内に javadoc タグがあっても無視されます。このディレクトリは、ソースツリーの中にある場合にのみ生成されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージのセット全体に対して1つの概要ページ(overview\-summary\&.html)。概要ページは、生成ドキュメントの先頭ページになります。\fIjavadoc\fRコマンドは、\fI\-overview\fRオプションで指定されたファイル内のHTMLテキストをすべて組み入れます。概要ページが作成されるのは、\fIjavadoc\fRコマンドに複数のパッケージ名を渡した場合のみです。HTMLフレームおよびオプションを参照してください。 .RE -.LP -\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 -HTML フレームが必要かどうかによって、次のどちらかのファイルを開始ページとしてロードします。 -.RS 3 -.TP 2 -o -\f2index.html\fP (フレームあり) -.TP 2 -o -\f2overview\-summary.html\fP (フレームなし) +.SS "相互参照ページ" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージのセット全体に対して1つのクラス階層ページ(overview\-tree\&.html)。階層ページを表示するには、ナビゲーション・バーの「概要」をクリックしてから、「階層ツリー」をクリックします。 .RE -.LP -\f3生成されるファイルの構造\fP -.LP -生成されるクラスファイルおよびインタフェースファイルは、Java ソースファイルおよびクラスファイルと同じディレクトリ階層に編成されます。1 つのサブパッケージにつき 1 つのディレクトリ、という構造になります。 -.LP -たとえば、 \f2java.applet.Applet\fP クラス用に生成されたドキュメントは、 \f2java/applet/Applet.html\fP に格納されます。生成先のディレクトリの名前が \f2apidocs\fP だとすると、java.applet パッケージのファイル構造は、その下に構築されます。前述のように、「frame」という語を名前に含むファイルは、すべて左上または左下のフレームに表示されます。それ以外の HTML ファイルは、すべて右側のフレームに表示されます。 -.LP -注 \- 下の階層図で、ディレクトリは\f3太字\fP (bold) で示してあります。アスタリスク (\f2*\fP) は、javadoc への引数がパッケージ名ではなくソースファイル名 (*.java) である場合に省略されるファイルおよびディレクトリを示しています。また、引数がソースファイル名の場合、 \f2package\-list\fP は作成されますが、その中身は空です。doc\-files ディレクトリは、ソースツリー内に存在する場合にのみ、生成先に作成されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージごとに1つのクラス階層ページ(package\-tree\&.html)。階層ページを表示するには、特定のパッケージ、クラス、またはインタフェースのページに移動し、「階層ツリー」をクリックしてそのパッケージの階層を表示します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージごとに1つの使用ページ(package\-use\&.html)と、クラスおよびインタフェースごとに1つずつの使用ページ(class\-use/classname\&.html)。使用ページでは、指定したクラス、インタフェース、またはパッケージの一部を使用しているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドについて記述されます。たとえば、クラスまたはインタフェースAを例にすると、その使用ページには、Aのサブクラス、Aとして宣言されたフィールド、Aを返すメソッド、A型のパラメータを持つメソッドおよびコンストラクタが組み込まれます。使用ページを表示するには、パッケージ、クラス、またはインタフェースに移動し、ナビゲーション・バーの「使用」リンクをクリックします。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +すべての非推奨APIとその推奨する代替をリストする非推奨APIページ(deprecated\-list\&.html)。非推奨APIは将来の実装で削除される可能性があるので使用しないでください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +定数フィールドの値用の定数フィールド値ページ(constant\-values\&.html)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +直列化された形式ページ(serialized\-form\&.html)。フィールドおよびメソッドの説明を含む、直列化可能かつ外部化可能なクラスに関する情報用のページです。このページ内の情報は、APIを使用する開発者ではなく、再実装者に必要な情報です。直列化された形式ページへアクセスするには、直列化されたクラスに移動して、そのクラス・コメントにある「関連項目」セクションで「直列化された形式」をクリックします。標準ドックレットは直列化された形式ページを生成します。このページには、Serializableを実装するすべてのクラス(publicまたは非public)が、その\fIreadObject\fRや\fIwriteObject\fRメソッド、直列化されたフィールド、および\fI@serial\fR、\fI@serialField\fR、\fI@serialData\fRタグからのドキュメンテーション・コメントとともにリストされます。直列化可能なpublicクラスを除外するには、そのクラス(またはそのパッケージ)を\fI@serial\fR +excludeでマークします。直列化可能なpackage\-privateクラスを含めるには、そのクラス(またはそのパッケージ)を\fI@serial\fR +includeでマークします。リリース1\&.4では、\fI\-private\fRオプションを指定せずに\fIjavadoc\fRコマンドを実行することにより、publicクラスおよびprivateクラスの完全に直列化された形式を生成できます。オプションを参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +索引ページ(\fIindex\-*\&.html\fR)。すべてのクラス名、インタフェース名、コンストラクタ名、フィールド名、およびメソッド名がアルファベット順に並んでいます。索引ページは、Unicodeを扱えるように国際化されています。1つのファイルとして生成することも、先頭文字(英語の場合A\(enZ)ごとに別々のファイルとして生成することもできます。 +.RE +.SS "サポート・ページ" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ヘルプ・ページ(help\-doc\&.html)。ナビゲーション・バーや前述の各ページに関する説明が記載されています。デフォルトのヘルプ・ファイルを独自のカスタム・ヘルプ・ファイルでオーバーライドするには、\fI\-helpfile\fRを使用します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +表示用のHTMLフレームを作成する1つのindex\&.htmlファイル。フレーム付きの先頭ページを表示するにはこのファイルをロードします。index\&.htmlファイルには、テキスト・コンテンツは含まれていません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +複数のフレーム・ファイル(\fI*\-frame\&.html\fR)。パッケージ、クラス、およびインタフェースのリストが含まれています。フレーム・ファイルはHTMLフレームを表示します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージ・リスト・ファイル(package\-list)。\fI\-link\fRおよび\fI\-linkoffline\fRオプションで使用されます。パッケージ・リスト・ファイルはテキスト・ファイルであり、どのリンクからもアクセスできません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +スタイルシート・ファイル(stylesheet\&.css)。生成されるページの一部の要素について色、フォント・ファミリ、フォント・サイズ、フォント・スタイル、および配置を制御します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +doc\-filesディレクトリ。宛先ディレクトリにコピーするイメージ、サンプル・コード、ソース・コードなどのファイルが格納されます。これらのファイルは、\fIjavadoc\fRコマンドによって処理されません。このディレクトリは、ソース・ツリーの中に存在する場合にのみ処理されます。 +.RE +.PP +オプションを参照してください。 +.SS "HTMLフレーム" +.PP +\fIjavadoc\fRコマンドは、コマンドに渡された値に基づき、最小限必要な数(2または3)のフレームを生成します。\fIjavadoc\fRコマンドに引数として1つのパッケージ名または1つのパッケージに含まれるソース・ファイルを渡す場合は、パッケージのリストが省略されます。そのかわりに、\fIjavadoc\fRコマンドは左側の列に1つのフレームを作成し、クラスのリストを表示します。複数のパッケージ名を渡した場合は、\fIjavadoc\fRコマンドは、すべてのパッケージをリストする第3のフレームと概要ページ(overview\-summary\&.html)を作成します。フレームを省略するには、「フレームなし」リンクをクリックするか、overview\-summary\&.htmlページからページ・セットを表示します。 +.SS "生成されるファイルの構造" +.PP +生成されるクラス・ファイルおよびインタフェース・ファイルは、Javaソース・ファイルおよびクラス・ファイルと同じディレクトリ階層に編成されます。1つのサブパッケージにつき1つのディレクトリ、という構造になります。 +.PP +たとえば、\fIjava\&.applet\&.Applet\fRクラス用に生成されるドキュメントは、java/applet/Applet\&.htmlに格納されます。 +.PP +生成先ディレクトリの名前が\fIapidocs\fRだとすると、\fIjava\&.applet\fRパッケージのファイルの構造は、次のとおりです。前述のように、\fIframe\fRという語を名前に含むファイルは、すべて左上または左下のフレームに表示されます。それ以外のHTMLファイルは、すべて右側のフレームに表示されます。 +.PP +ディレクトリは太字です。アスタリスク(*)は、\fIjavadoc\fRコマンドへの引数がパッケージ名ではなくソース・ファイル名である場合に省略されるファイルおよびディレクトリを示しています。引数がソース・ファイル名の場合、空のパッケージ・リストが作成されます。doc\-filesディレクトリは、ソース・ツリー内に存在する場合にのみ、生成先に作成されます。生成されるファイルを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBapidocs\fR: 最上位レベル・ディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +index\&.html: HTMLフレームを設定する初期ページ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +*overview\-summary\&.html: パッケージ・リストとサマリー +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +overview\-tree\&.html: すべてのパッケージのクラス階層 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +deprecated\-list\&.html: すべてのパッケージの非推奨API +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +constant\-values\&.html: すべてのパッケージの静的フィールド値 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +serialized\-form\&.html: すべてのパッケージの直列化されたフォーム +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +*overview\-frame\&.html: 左上のフレームに表示するすべてのパッケージ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +allclasses\-frame\&.html: 左下のフレームに表示するすべてのクラス +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +help\-doc\&.html: Javadocページの編成に関するヘルプ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +index\-all\&.html: +\fI\-splitindex\fRオプションなしで作成されたデフォルトの索引 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBindex\-files\fR: +\fI\-splitindex\fRオプションを指定して作成されたディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +index\-<number>\&.html: +\fI\-splitindex\fRオプションを指定して作成された索引ファイル +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +package\-list: 外部参照を解決するためのパッケージ名 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +stylesheet\&.css: フォント、色、位置などを定義します +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBjava\fR: パッケージ・ディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBapplet\fR: サブパッケージ・ディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Applet\&.html: +\fIApplet\fRクラス・ページ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +AppletContext\&.html: +\fIAppletContext\fRインタフェース +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +AppletStub\&.html: +\fIAppletStub\fRインタフェース +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +AudioClip\&.html: +\fIAudioClip\fRインタフェース +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +package\-summary\&.html: クラスとサマリー +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +package\-frame\&.html: 左下のフレームに表示するパッケージ・クラス +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +package\-tree\&.html: このパッケージのクラス階層 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +package\-use\&.html: このパッケージが使用される場所 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBdoc\-files\fR: イメージおよびサンプル・ファイルのディレクトリ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBclass\-use\fR: イメージおよびサンプル・ファイルの場所 +.sp +\- Applet\&.html: Appletクラスの使用 +.sp +\- AppletContext\&.html: +\fIAppletContext\fRインタフェースの使用 +.sp +\- AppletStub\&.html: +\fIAppletStub\fRインタフェースの使用 +.sp +\- AudioClip\&.html: +\fIAudioClip\fRインタフェースの使用 +.RE +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBsrc\-html\fR: ソース・コード・ディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBjava\fR: パッケージ・ディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBapplet\fR: サブパッケージ・ディレクトリ +.sp +\- Applet\&.html: Appletソース・コード +.sp +\- AppletContext\&.html: +\fIAppletContext\fRソース・コード +.sp +\- AppletStub\&.html: +\fIAppletStub\fRソース・コード +.sp +\- AudioClip\&.html: +\fIAudioClip\fRソース・コード +.RE +.RE +.RE +.SS "生成されるAPI宣言" +.PP +\fIjavadoc\fRコマンドは、それぞれのクラス、インタフェース、フィールド、コンストラクタ、およびメソッドの記述の最初に、そのAPI用の宣言を生成します。たとえば、\fIBoolean\fRクラスの宣言は、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - -.fl -\fP\f3apidocs\fP 最上位ディレクトリ -.fl - index.html HTML フレームを設定する初期ページ -.fl - * overview\-summary.html 全パッケージのリスト。先頭文による要約付き -.fl - overview\-tree.html 全パッケージのクラス階層のリスト -.fl - deprecated\-list.html 全パッケージの非推奨 API のリスト -.fl - constant\-values.html 全パッケージの static フィールドの値のリスト -.fl - serialized\-form.html 全パッケージの直列化された形式のリスト -.fl - * overview\-frame.html 全パッケージのリスト。左上のフレームで使用される -.fl - allclasses\-frame.html 全パッケージの全クラスのリスト。左下のフレームで使用される -.fl - help\-doc.html これらのページの構成を示すユーザーヘルプのリスト -.fl - index\-all.html \-splitindex オプションを指定しなかった場合に作成されるデフォルトの索引 -.fl - \f3index\-files\fP \-splitindex オプションを指定した場合に作成されるディレクトリ -.fl - index\-<number>.html \-splitindex オプションを指定した場合に作成される索引ファイル -.fl - package\-list パッケージ名のリスト。外部参照を解決するためだけに使用される -.fl - stylesheet.css フォント、色、配置を定義する HTML スタイルシート -.fl - \f3java\fP パッケージディレクトリ -.fl - \f3applet\fP サブパッケージディレクトリ -.fl - Applet.html Applet クラスのページ -.fl - AppletContext.html AppletContext インタフェースのページ -.fl - AppletStub.html AppletStub インタフェースのページ -.fl - AudioClip.html AudioClip インタフェースのページ -.fl - * package\-summary.html このパッケージのクラスのリスト。先頭文による要約付き -.fl - * package\-frame.html このパッケージのクラスのリスト。左下のフレームで使用される -.fl - * package\-tree.html このパッケージのクラス階層のリスト -.fl - package\-use このパッケージが使用されている場所のリスト -.fl - \f3doc\-files\fP 画像やサンプルファイルを保持するディレクトリ -.fl - \f3class\-use\fP API が使用されている場所のページを保持するディレクトリ -.fl - Applet.html Applet クラスの使用に関するページ -.fl - AppletContext.html AppletContext インタフェースの使用に関するページ -.fl - AppletStub.html AppletStub インタフェースの使用に関するページ -.fl - AudioClip.html AudioClip インタフェースの使用に関するページ -.fl - \f3src\-html\fP ソースコードディレクトリ -.fl - \f3java\fP パッケージディレクトリ -.fl - \f3applet\fP サブパッケージディレクトリ -.fl - Applet.html Applet ソースコードのページ -.fl - AppletContext.html AppletContext ソースコードのページ -.fl - AppletStub.html AppletStub ソースコードのページ -.fl - AudioClip.html AudioClip ソースコードのページ -.fl +public final class Boolean +extends Object +implements Serializable .fi -.SS -生成される API 宣言 -.LP -Javadoc ツールは、それぞれのクラス、インタフェース、フィールド、コンストラクタ、およびメソッドの説明の最初に、その API 用の宣言を生成します。たとえば、 \f2Boolean\fP クラスの宣言は、次のようになります。 -.LP -\f2public final class Boolean\fP -.br -\f2extends Object\fP -.br -\f2implements Serializable\fP -.LP -また、 \f2Boolean.valueOf\fP メソッドの宣言は、次のようになります。 -.LP -\f2public static Boolean valueOf(String s)\fP -.LP -Javadoc ツールでは、修飾子 \f2public\fP、 \f2protected\fP、 \f2private\fP、 \f2abstract\fP、 \f2final\fP、 \f2static\fP、 \f2transient\fP、および \f2volatile\fP は組み込めますが、 \f2synchronized\fP と \f2native\fP は組み込めません。これら後者の 2 つの修飾子は、実装の詳細と見なされているため、API 仕様には含まれません。 -.LP -API では、並行性セマンティクスについて、キーワード \f2synchronized\fP に依存するのではなく、コメントの主説明としてドキュメント化すべきです。 \f2たとえば、「1 つの Enumeration を\fP 複数のスレッドから並行して使用することはできない」などと記述します。ドキュメントには、これらのセマンティクスを実現する方法を記述するべきではありません。たとえば、 \f2Hashtable\fP はスレッドに対して安全である必要がありますが、「エクスポートされるすべてのメソッドを同期化すればそれを実現できる」のようには指定する根拠はありません。バケットレベルで内部的に同期化する権利を残しておく必要があります。そうすれば、より高度な並行性が提供されます。 -.SH "ドキュメンテーションコメント" -.LP -オリジナルの「ドキュメンテーションコメントの仕様」は、「関連項目」を参照してください。 -.SS -ソースコードへのコメントの挿入 -.LP -ソースコードの任意のクラス、インタフェース、メソッド、コンストラクタ、またはフィールドの宣言の前に、ドキュメンテーションコメント ("doc comments") を記述することができます。各パッケージにドキュメンテーションコメントを作成できます。構文は若干異なりますが、概要にもドキュメンテーションコメントを作成できます。ドキュメンテーションコメントは、非公式に「Javadoc コメント」と呼ばれています (この用語は商標関連の使用法に違反)。ドキュメンテーションコメントは、コメントを始まりを示す文字列 \f2/**\fP と、コメントを終わりを示す文字列 \f2*/\fP の間にある文字から構成されます。行の先頭のアスタリスクは、各行に記述できます。詳細は、以下で説明します。コメントのテキストは、複数行にわたって記述できます。 +.if n \{\ +.RE +.\} +.PP +\fIBoolean\&.valueOf\fRメソッドの宣言は次のとおりです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +public static Boolean valueOf(String s) +.fi +.if n \{\ +.RE +.\} +.PP +\fIjavadoc\fRコマンドは、修飾子\fIpublic\fR、\fIprotected\fR、\fIprivate\fR、\fIabstract\fR、\fIfinal\fR、\fIstatic\fR、\fItransient\fR、および\fIvolatile\fRを含めることができますが、\fIsynchronized\fRおよび\fInative\fRはできません。\fIsynchronized\fRおよび\fInative\fR修飾子は、実装の詳細とみなされているため、API仕様には含まれません。 +.PP +APIでは、並行性セマンティクスについて、キーワード\fIsynchronized\fRに依存するのではなく、コメントの主説明としてドキュメント化する必要があります。たとえば、「1つのenumerationを複数のスレッドから並行して使用することはできない」のように記述します。ドキュメントには、これらのセマンティクスを実現する方法を記述しないでください。たとえば、\fIHashtable\fRオプションはスレッドセーフである必要がありますが、「エクスポートされるすべてのメソッドを同期化してそれを実現する」のように指定する根拠はありません。より高度な並行性のために、バケット・レベルで内部的に同期化する権限を保有しておくことをお薦めします。 +.SH "ドキュメンテーション・コメント" +.PP +このセクションでは、ソース・コードのコメントとコメントの継承について説明します。 +.SS "ソース・コード・コメント" +.PP +ソース・コードの任意のクラス、インタフェース、メソッド、コンストラクタ、またはフィールドの宣言の前に、ドキュメンテーション・コメントを記述することができます。各パッケージにもドキュメンテーション・コメントを作成できます。構文は若干異なりますが、概要にもドキュメンテーション・コメントを作成できます。ドキュメンテーション・コメントは、\fI/**\fRと、終わりを表す\fI*/\fRの間にある文字から構成されます。先頭のアスタリスクは各行で使用でき、次の項で詳しく説明します。コメントのテキストは、複数行にわたって記述できます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl * This is the typical format of a simple documentation comment -.fl - * that spans two lines. -.fl + * that spans two lines\&. */ -.fl -\fP .fi -.LP -次のようにして 1 行に記述すると、スペースを節約できます。 +.if n \{\ +.RE +.\} +.PP +スペースを節約するには、コメントを1行に入れます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -/** This comment takes up only one line.*/ -.fl -\fP +/** This comment takes up only one line\&. */ .fi -.LP -\f3コメントの配置\fP \- ドキュメンテーションコメントは、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドの宣言の直前に置かれているときにだけ認識されます。クラスの例、メソッドの例、およびフィールドの例を参照してください。メソッドの本体に置かれているドキュメンテーションコメントは無視されます。javadoc ツールでは、1 つの宣言文につき 1 つのドキュメンテーションコメントだけが認識されます。 -.LP -よくある間違いは、クラスコメントとクラス宣言の間に \f2import\fP 文を置いてしまうことです。このような記述はしないでください。このようなクラスコメントは無視されます。 +.if n \{\ +.RE +.\} +コメントの配置.PP +ドキュメンテーション・コメントは、クラス、インタフェース、コンストラクタ、メソッド、またはフィールド宣言の直前に配置される場合にのみ認識されます。メソッドの本体に置かれているドキュメンテーション・コメントは無視されます。\fIjavadoc\fRコマンドは、宣言文ごとに1つのドキュメンテーション・コメントしか認識しません。タグを使用できる場所を参照してください。 +.PP +よくある間違いは、クラス・コメントとクラス宣言の間に\fIimport\fR文を置いてしまうことです。\fIjavadoc\fRコマンドはクラス・コメントを無視するので、\fIimport\fR文をこの場所に配置しないでください。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - /** -.fl - * This is the class comment for the class Whatever. -.fl - */ -.fl - -.fl - import com.sun; // MISTAKE \- Important not to put import statement here -.fl - -.fl - public class Whatever { -.fl - } -.fl -\fP -.fi -.LP -\f3ドキュメンテーションコメントは主説明のあとにタグセクションが続く \- コメントの開始区切り文字である\fP \f2/**\fP のあとからタグセクションまでが主説明になります。タグセクションは、行の先頭にある最初の \f2@\fP で定義される最初のブロックタグから始まります (先頭のアスタリスク、空白、先頭の区切り文字 \f2/**\fP は除く)。主説明を記述せず、タグセクションだけのコメントを記述することもできます。主説明は、タグセクション以降に続けることはできません。タグの引数は、複数行にわたって記述できます。タグの数に制限はありません。何回も記述できるタグと、1 回しか記述できないタグがあります。たとえば、次の \f2@see\fP は、タグセクションを開始しています。 -.nf -\f3 -.fl /** -.fl - * This sentence would hold the main description for this doc comment. -.fl - * @see java.lang.Object -.fl + * This is the class comment for the class Whatever\&. */ -.fl -\fP + +import com\&.example; // MISTAKE \- Important not to put import statement here + +public class Whatever{ } .fi -.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 が含まれています。 +.if n \{\ +.RE +.\} +コメントのパーツ.PP +ドキュメンテーション・コメントには、主説明とその後に続くタグ・セクションが含まれます。主説明は、開始区切り文字\fI/**\fRで始まり、タグ・セクションまで続きます。タグ・セクションは、先頭文字が\fI@\fRの行で定義される最初のブロック・タグから始まります(先頭のアスタリスク、空白文字、先頭の区切り文字\fI/**\fRは除く)。主説明を記述せず、タグ・セクションのみのコメントを記述することもできます。主説明は、タグ・セクション以降に続けることはできません。タグの引数は、複数行にわたって記述できます。タグの数に制限はありません。何回も記述できるタグと、1回しか記述できないタグがあります。たとえば、次の\fI@see\fRタグからタグ・セクションは始まります。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl - * @deprecated As of JDK 1.1, replaced by {@link #setBounds(int,int,int,int)} -.fl + * This sentence holds the main description for this documentation comment\&. + * @see java\&.lang\&.Object */ -.fl -\fP .fi -.LP -\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 -次に、ドキュメンテーションコメントを示します。 +.if n \{\ +.RE +.\} +ブロックおよびインライン・タグ.PP +タグは、\fIjavadoc\fRコマンドが処理するドキュメンテーション・コメント内の特殊なキーワードです。タグには2つのタイプがあります。1つは\fI@tag\fRタグのように表記されるブロック・タグ(スタンドアロン・タグとも呼ばれる)、もう1つは\fI{@tag}\fRタグのように中カッコで囲んで表記されるインライン・タグです。ブロック・タグが解釈されるには、行頭のアスタリスク、空白文字、区切り文字(\fI/**\fR)を除いて、行の先頭に置く必要があります。これは、\fI@\fR文字をテキスト内の別の場所で使用しても、タグの開始として解釈されないことを意味しています。\fI@\fR文字を使用して行を開始しても、それが解釈されないようにするには、HTMLエンティティ\fI@\fRを使用します。それぞれのブロック・タグには、関連付けられたテキストがあります。このテキストは、タグの後から、次のタグの前、またはドキュメンテーション・コメントの最後までの間に記述されたテキストです(タグまたはコメント区切り文字を除く)。この関連テキストは、複数行にわたって記述できます。インライン・タグは、テキストを記述できる場所であればどこにでも置くことができ、解釈されます。次の例にはブロック・タグ\fI@deprecated\fRとインライン・タグ\fI{@link}\fRが含まれています。javadocタグを参照してください。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl - * This is a <b>doc</b> comment. -.fl - * @see java.lang.Object -.fl + * @deprecated As of JDK 1\&.1, replaced by {@link #setBounds(int,int,int,int)} */ -.fl -\fP .fi -.LP -\f3行頭のアスタリスク\fP \- javadoc によるドキュメンテーションコメントの解析時に、各行の先頭にあるアスタリスク (\f2*\fP) 文字は破棄されます。最初のアスタリスク (\f2*\fP) 文字より前にある空白やタブも破棄されます。バージョン 1.4 からは、行の先頭のアスタリスクを省略しても、先頭の空白文字は削除されなくなりました。このため、コード例を直接ドキュメンテーションコメントの \f2<PRE>\fP タグ内にペーストしても、インデントが保持されます。通常、ブラウザは、空白文字をタブよりも一律に解釈します。インデントの起点は左マージンになります (区切り文字 \f2/**\fP または \f2<PRE>\fP タグではなく)。 -.LP -\f3最初の文\fP \- 各ドキュメンテーションコメントの最初の文は、宣言されているエンティティーに関する簡潔かつ完全な要約文である必要があります。この「最初の文」は、直後にスペース、タブ、または改行が続く最初のピリオド (ロケールが英語に設定されている場合)、または最初のタグがある位置で終わります。最初の文は、Javadoc ツールによって HTML ページの最初にあるメンバーの概要の部分にコピーされます。 -.LP -\f3複数フィールドの宣言\fP \- Java では、1 つの文で複数のフィールドを宣言できます。ただし、この文には、1 つのドキュメンテーションコメントしか記述できません。そのコメントが、すべてのフィールドに対してコピーされます。したがって、フィールドごとにドキュメンテーションコメントを記述する必要がある場合は、各フィールドを別々の文で宣言しなければなりません。たとえば、次のドキュメンテーションコメントは、1 つの宣言として記述すると不適切です。この場合は、宣言を 2 つに分けることをお勧めします。 +.if n \{\ +.RE +.\} +HTMLでのコメントの記述.PP +テキストはHTMLエンティティとHTMLタグを使用してHTMLで記述される必要があります。使用するブラウザがサポートする任意のHTMLのバージョンを使用できます。標準ドックレットは、カスケーディング・スタイル・シートおよびフレームを含め、ドキュメンテーション・コメント以外の部分でHTML 3\&.2に準拠したコードを生成します。フレーム・セットのため、生成されたファイルにはHTML 4\&.0が推奨されます。 +.PP +たとえば、より小さい記号(<)およびより大きい記号(>)のエンティティは、\fI<\fRおよび\fI>\fRと記述する必要があります。同様に、アンパサンド(&)は\fI&\fRと記述する必要があります。次の例では、太字のHTMLタグ\fI<b>\fRを使用しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * This is a <b>doc</b> comment\&. + * @see java\&.lang\&.Object + */ +.fi +.if n \{\ +.RE +.\} +先頭のアスタリスク.PP +\fIjavadoc\fRコマンドによるドキュメンテーション・コメントの解析時に、各行の先頭にあるアスタリスク(*)文字は破棄されます。最初のアスタリスク(*)文字より前にある空白やタブも破棄されます。行頭のアスタリスクを省略した場合、インデントを保持したままでサンプル・コードを\fI<PRE>\fRタグ内のドキュメンテーション・コメントに直接貼り付けられるように、先頭の空白文字は削除されなくなります。ブラウザは、空白文字をタブよりも一律に解釈します。インデントの起点は(区切り文字\fI/**\fRまたは\fI<PRE>\fRタグではなく)左マージンになります。 +最初の文.PP +各ドキュメンテーション・コメントの最初の文は、宣言されているエンティティに関する簡潔かつ完全なサマリー文である必要があります。この文は、空白、タブ、または行終了文字が続く最初のピリオド、または最初のブロック・タグがある位置で終わります。最初の文は、\fIjavadoc\fRコマンドによってHTMLページの先頭にあるメンバーのサマリーの部分にコピーされます。 +複数フィールドの宣言.PP +Javaプラットフォームでは、1つの文で複数のフィールドを宣言できます。ただし、この文には、1つのドキュメンテーション・コメントしか記述できません。そのコメントが、すべてのフィールドに対してコピーされます。フィールドごとにドキュメンテーション・コメントを記述する必要がある場合は、各フィールドを別々の文で宣言する必要があります。たとえば、次のドキュメンテーション・コメントは、1つの宣言として記述すると不適切です。この場合は、宣言を2つに分けることをお薦めします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl * The horizontal and vertical distances of point (x,y) -.fl */ -.fl -public int x, y; // Avoid this -.fl -\fP +public int x, y; // Avoid this + .fi -.LP -上記のコードからは、次のようなドキュメントが生成されます。 +.if n \{\ +.RE +.\} +.PP +\fIjavadoc\fRコマンドは、上のコードから次のようなドキュメントを生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -public int \fP\f3x\fP -.fl +public int x .fi -.RS 3 -The horizontal and vertical distances of point (x,y) +.if n \{\ .RE +.\} +.PP +The horizontal and vertical distances of point (x, y)\&. +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -public int \fP\f3y\fP -.fl +public int y .fi -.RS 3 -The horizontal and vertical distances of point (x,y) +.if n \{\ .RE -.LP -\f3見出しタグはなるべく使用しない\fP \- メンバーに対してドキュメンテーションコメントを記述するときには、<H1> や <H2> などの HTML 見出しタグは、なるべく使わないでください。 Javadoc ツールは、完全に構造化されたドキュメントを作成するので、このような構造化タグが使われていると、生成ドキュメントの形式が悪影響を受けることがあります。ただし、クラスやパッケージのコメントでは、これらの見出しタグを使って独自の構造を組み立ててかまいません。 -.SS -メソッドコメントの自動コピー -.LP -Javadoc ツールには、次の 2 つの場合に、クラスおよびインタフェースのメソッドコメントをコピーまたは「継承」する機能があります。コンストラクタ、フィールド、および入れ子のクラスは、ドキュメンテーションコメントを継承しません。 -.RS 3 -.TP 2 -o -\f3自動的にコメントを継承して見つからないテキストを埋める\fP \- 主説明、 \f2@return\fP タグ、 \f2@param\fP タグ、または \f2@throws\fP タグがメソッドコメントに見つからない場合、Javadoc ツールは、オーバーライドまたは実装している場合はその対象となるメソッドから、対応する主説明またはタグコメントを、次のアルゴリズムに従ってコピーします。 -.LP -厳密には、特定のパラメータの \f2@param\fP タグが見つからない場合、そのパラメータのコメントが、上位の継承階層のメソッドからコピーされます。特定の例外の \f2@throws\fP タグが見つからない場合、その例外が宣言されている場合にかぎり、 \f2@throws\fP タグがコピーされます。 -.LP -この動作はバージョン 1.3 以前の動作とは対照的です。これまでのバージョンでは、主説明またはタグが存在すれば、コメントは一切継承されませんでした。 -.TP 2 -o -\f3{@inheritDoc} タグを含むコメントを明示的に継承する\fP \- インラインタグ \f2{@inheritDoc}\fP を、メソッドの主説明内または \f2@return\fP タグ、 \f2@param\fP タグ、または \f2@throws\fP のいずれかのタグコメント内に挿入します。対応する継承された主説明またはタグコメントがその位置にコピーされます。 +.\} +.PP +The horizontal and vertical distances of point (x, y)\&. +ヘッダー・タグの使用.PP +メンバーに対してドキュメンテーション・コメントを記述するときには、\fI<H1>\fRや\fI<H2>\fRなどのHTML見出しタグを使用しないことをお薦めします。\fIjavadoc\fRコマンドは、完全な構造化ドキュメントを作成するので、このような構造化タグが使用されていると、生成ドキュメントの形式が悪影響を受けることがあります。ただし、クラスやパッケージのコメントでは、これらの見出しを使用して独自の構造を指定してかまいません。 +.SS "メソッド・コメントの継承" +.PP +\fIjavadoc\fRコマンドでは、クラスおよびインタフェースでメソッド・コメントを継承して、欠落したテキストを入力したり、明示的にメソッド・コメントを継承することができます。コンストラクタ、フィールド、およびネストされたクラスは、ドキュメンテーション・コメントを継承しません。 +.PP +\fB注意:\fR +ドキュメンテーション・コメントをコピーに利用するには、継承したメソッドのソース・ファイルが\fI\-sourcepath\fRオプションで指定したパスのみに置かれている必要があります。コマンドラインで、クラスもパッケージも渡す必要はありません。この点はリリース1\&.3\&.\fIn\fR以前とは対照的です。これまでは、クラスがドキュメント化されるクラスであることが必要でした。 +欠落テキストの入力.PP +主説明、または\fI@return\fR、\fI@param\fR、\fI@throws\fRタグがメソッド・コメントから欠落している場合、\fIjavadoc\fRコマンドは、対応する主説明またはタグ・コメントを、それがオーバーライドまたは実装しているメソッド(ある場合)からコピーします。メソッド・コメントの継承を参照してください。 +.PP +特定のパラメータの\fI@param\fRタグが見つからない場合、そのパラメータのコメントが、上位の継承階層のメソッドからコピーされます。特定の例外の\fI@throws\fRタグが見つからない場合、その例外が宣言されている場合にかぎり、\fI@throws\fRタグがコピーされます。 +.PP +この動作はリリース1\&.3以前の動作とは対照的です。これまでのバージョンでは、主説明またはタグが存在すれば、コメントは一切継承されませんでした。 +.PP +javadocタグおよびオプションを参照してください。 +明示的な継承.PP +\fI{@inheritDoc}\fRインライン・タグをメソッドの主説明または\fI@return\fR、\fI@param\fR、\fI@throws\fRタグ・コメントに挿入します。対応する継承された主説明またはタグ・コメントは、その場所にコピーされます。 +.SS "クラスおよびインタフェースの継承" +.PP +コメントの継承は、クラスおよびインタフェースからの継承の、考えられるすべての場合に発生します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +クラスのメソッドがスーパークラスのメソッドをオーバーライドしている場合 .RE -.LP -ドキュメンテーションコメントを実際にコピーに利用するには、継承したメソッドのソースファイルが \-sourcepath で指定したパスだけに置かれていることが必要になります。コマンド行で、クラスもパッケージも渡す必要はありません。この点は、クラスがドキュメント化されるクラスでなければならなかった 1.3.x 以前のリリースと異なります。 -.LP -\f3クラスおよびインタフェースからの継承\fP \- クラスおよびインタフェースから継承する次の 3 つの場合に、コメントの継承が行われます。 -.RS 3 -.TP 2 -o -クラスのメソッドがスーパークラスのメソッドをオーバーライドしている -.TP 2 -o -インタフェースのメソッドがスーパーインタフェースのメソッドをオーバーライドしている -.TP 2 -o -クラスのメソッドがインタフェースのメソッドを実装している +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +インタフェースのメソッドがスーパーインタフェースのメソッドをオーバーライドしている場合 .RE -.LP -最初の 2 つのケース (メソッドがオーバーライドしている場合) では、Javadoc ツールは、そのコメントが継承されているかどうかにかかわらず、オーバーライドしているメソッドのドキュメント内に「オーバーライド」という小見出しを生成し、オーバーライドされているメソッドへのリンクを書き込みます。 -.LP -3 つ目のケース (特定のクラスのメソッドがインタフェースのメソッドを実装している場合) では、javadoc ツールは、オーバーライドしているメソッドのドキュメント内に「定義」という小見出しを生成し、実装されているメソッドへのリンクを書き込みます。これは、コメントが継承されているかどうかにかかわりません。 -.LP -\f3メソッドの説明が継承されるアルゴリズム\fP \- あるメソッドにドキュメンテーションコメントが記述されていない場合、または {@inheritDoc} タグがある場合、Javadoc ツールは、次のようなアルゴリズムを使用して適切なコメントを検索します。 このアルゴリズムは、もっとも適切なドキュメンテーションコメントを検索できるように設計されており、スーパークラスよりもインタフェースが優先されるようになっています。 -.RS 3 -.TP 3 -1. -直接に実装されている (または、拡張されている) インタフェースを、メソッドの宣言で implements (または extends) キーワードのあとに登場する順序で、1 つずつ調べる。このメソッドについて最初に見つかったドキュメンテーションコメントを採用する -.TP 3 -2. -手順 1 でドキュメンテーションコメントが見つからなかった場合は、直接実装されている (または、拡張されている) インタフェースのそれぞれに対して、このアルゴリズム全体を再帰的に適用する (その際の順序は、手順 1 でインタフェースを調べたときの順序と同じ) -.TP 3 -3. -手順 2 でドキュメンテーションコメントが見つからなかった場合で、このクラスが Object 以外のクラスである (インタフェースではない) 場合は、次のように処理する -.RS 3 -.TP 3 -a. -スーパークラスにこのメソッドについてのドキュメンテーションコメントが記述されていれば、そのコメントを採用する -.TP 3 -b. -手順 3a でドキュメンテーションコメントが見つからなかった場合は、スーパークラスに対して、このアルゴリズム全体を適用する +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +クラスのメソッドがインタフェースのメソッドを実装している場合 +.RE +.PP +最初の2つのケースでは、\fIjavadoc\fRコマンドは、オーバーライドしているメソッドのドキュメント内に\fI「オーバーライド」\fRという小見出しを生成します。コメントが継承されているかどうかにかかわらず、オーバーライドされているメソッドへのリンクが含まれます。 +.PP +3つ目のケース(特定のクラスのメソッドがインタフェースのメソッドを実装している場合)では、\fIjavadoc\fRコマンドは、オーバーライドしているメソッドのドキュメント内に\fI「定義」\fRという小見出しを生成します。コメントが継承されているかどうかにかかわらず、実装されているメソッドへのリンクが含まれます。 +.SS "メソッド・コメントのアルゴリズム" +.PP +メソッドにドキュメンテーション・コメントがない、または\fI{@inheritDoc}\fRタグがある場合、\fIjavadoc\fRコマンドは次のアルゴリズムを使用して適用できるコメントを検索します。アルゴリズムは、最も特定される適用可能なドキュメンテーション・コメントを探し、スーパークラスよりもインタフェースを優先するように設計されています。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +直接に実装されている(または、拡張されている)インタフェースを、メソッドの宣言で\fIimplements\fR(または\fIextends\fR)という語の後に出現する順序で、1つずつ調べます。このメソッドについて最初に見つかったドキュメンテーション・コメントを採用します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +手順1でドキュメンテーション・コメントが見つからなかった場合は、直接実装されている(または、拡張されている)インタフェースのそれぞれに対して、このアルゴリズム全体を再帰的に適用します(その際の順序は、手順1でインタフェースを調べたときの順序と同じ)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 3.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 3." 4.2 +.\} +手順2でドキュメンテーション・コメントが見つからなかった場合で、このクラスが\fIObject\fR以外のクラスであるが、インタフェースではない場合は、次のように処理します。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +スーパークラスにこのメソッドについてのドキュメンテーション・コメントが記述されている場合は、そのコメントを採用します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +手順3aでドキュメンテーション・コメントが見つからなかった場合は、スーパークラスに対して、このアルゴリズム全体を再帰的に適用します。 .RE .RE -.SH "javadoc タグ" -.LP -Javadoc ツールは、Java のドキュメンテーションコメント内に埋め込まれた特別なタグを解析します。これらのドキュメンテーションタグを使うと、書式の整った完全な API ドキュメントをソースコードから自動的に生成できます。タグは「アットマーク」記号 (\f2@\fP) で始まり、大文字と小文字の区別があります。タグは、大文字と小文字を使用して、表示されているとおりに入力する必要があります。タグは、行の先頭 (先行する空白と省略可能なアスタリスクは除く) に置かなければなりません。慣例として、同じ名前のタグは 1 か所にまとめて記述するようにします。たとえば、 \f2@see\fP タグはすべて同じ場所に配置します。 -.LP -タグには 2 つのタイプがあります。 -.RS 3 -.TP 2 -o -\f3ブロックタグ\fP \- 主説明に続くタグセクション内にのみ記述可能。ブロックタグは、 \f2@tag\fP の形式をとります。 -.TP 2 -o -\f3インラインタグ\fP \- 主説明内、またはブロックタグのコメント内に記述可能。インラインタグは、 \f2{@tag}\fP.のように中括弧で囲みます。 +.SH "JAVADOCタグ" +.PP +\fIjavadoc\fRコマンドは、Javaのドキュメンテーション・コメント内に埋め込まれた特別なタグを解析します。\fIjavadoc\fRタグを使用すると、完全な整形式のAPIをソース・コードから自動的に生成できます。タグはアットマーク記号(\fI@\fR)で始まり、大文字と小文字が区別されます。これらのタグは、表示されているとおりに大文字と小文字を使用して入力する必要があります。タグは、行の先頭(先頭の空白文字と省略可能なアスタリスクの後)に置く必要があります。そうしないと、テキストとして扱われます。慣例として、同じ名前のタグは1箇所にまとめます。たとえば、\fI@see\fRタグが複数ある場合は、すべて同じ場所にまとめて配置します。詳細は、タグを使用できる場所を参照してください。 +.PP +タグには、次のタイプがあります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ブロック・タグ: ブロック・タグは主説明に続くタグ・セクション内にのみ配置します。ブロック・タグは、\fI@tag\fRの形式をとります。 .RE -.LP -今後のリリースで導入されるタグについては、 -.na -\f2「Proposed Javadoc Tags」\fP @ -.fi -http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください。 -.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 -.. +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +インライン・タグ: インライン・タグは主説明内またはブロック・タグのコメント内の任意の場所に配置します。インライン・タグは\fI{@tag}\fRのように中カッコで囲みます。 +.RE +.PP +カスタム・タグについては、\-tag tagname:Xaoptcmf:"taghead"を参照してください。タグを使用できる場所も参照してください。 +.SS "タグの説明" +.PP +@author \fIname\-text\fR +.RS 4 +JDK 1\&.0で導入 +.sp +\fI\-author\fRオプションが使用されている場合、指定した名前のテキストの作成者エントリを生成されるドキュメントに追加します。1つのドキュメンテーション・コメントに複数の\fI@author\fRタグを含めることができます。1つの\fI@author\fRタグに1つの名前を指定することも、複数の名前を指定することもできます。前者の場合は、\fIjavadoc\fRコマンドによって名前と名前の間にカンマ(,)と空白文字が挿入されます。後者の場合は、テキスト全体が解析されることなく、生成ドキュメントにコピーされます。したがって、カンマではなく、各言語に対応した名前区切り文字を使用する必要があるときに、1行に複数の名前を指定できます。JavadocツールでのDocコメントの記述方法の@authorに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@author)を参照してください。 +.RE +.PP +{@code \fItext\fR} +.RS 4 +JDK 1\&.5で導入 +.sp +\fI<code>{@literal}</code>\fRと同等です。 +.sp +テキストをHTMLマークアップまたはネストされたJavadocタグとして解釈せずに、textをコード・フォントで表示します。これにより、ドキュメンテーション・コメントでは、パラメータの型(\fI<Object>\fR)、不等号(\fI3 < 4\fR)、矢印(\fI<\-\fR)などで、通常の山カッコ(<および>)をHTMLエンティティ(\fI<\fRおよび\fI>\fR)のかわりに使用できます。たとえば、ドキュメンテーション・コメント\fI{@code A<B>C}\fRは\fIA<B>C\fRとして変更されずに生成されたHTMLページに表示されます。つまり、\fI<B>\fRが太字として解釈されず、そのフォントはコード・フォントになります。コード・フォントなしで同じ機能を実現するには、\fI{@literal}\fRタグを使用します。 +.RE +.PP +@deprecated \fIdeprecated\-text\fR +.RS 4 +JDK 1\&.0で導入 +.sp +このAPIは動作し続けますが、このAPIを使用しないことを薦めるコメントを追加します。\fIjavadoc\fRコマンドは、\fIdeprecated\-text\fRを主説明の前に移動してイタリックにし、その前に太字の警告「推奨されていません。」を追加します。このタグは、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 +.sp +非推奨テキストの最初の文では、そのAPIが推奨されなくなった時期と、代替として使用するAPIをユーザーに提示する必要があります。\fIjavadoc\fRコマンドは、この最初の文を、サマリー・セクションと索引にコピーします。その後の文で非推奨になった理由を説明することもできます。代替APIを指し示す\fI{@link}\fRタグ(Javadoc 1\&.2以降の場合)を含める必要があります。 +.sp +\fI@deprecated annotation\fRタグを使用してプログラム要素を非推奨にします。APIを非推奨にする方法と時期 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/deprecation/deprecation\&.html)を参照してください。 +.sp +JavadocツールでのDocコメントの記述方法の@deprecatedに関する項 + +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@deprecated)も参照してください。 +.RE +.PP +{@docRoot} +.RS 4 +JDK 1\&.3で導入 +.sp +生成されるページからの、生成ドキュメントの(生成先)ルート・ディレクトリへの相対パスを表します。このタグは、著作権のページや会社のロゴなど、生成されるすべてのページから参照するファイルを組み込むときに便利です。通常は、各ページの最下部から著作権のページにリンクします。 +.sp +この\fI{@docRoot}\fRタグは、コマンドラインでもドキュメンテーション・コメント内でも使用できます。このタグは、任意のタグ(\fI@return\fR、\fI@param\fRおよび\fI@deprecated\fRタグなど)のテキスト部分を含む、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +コマンドラインで、ヘッダー、フッターまたは最下部が次のように定義されます。\fIjavadoc \-bottom \*(Aq<a href="{@docRoot}/copyright\&.html">Copyright</a>\*(Aq\fR +.sp +\fI{@docRoot}\fRタグをmakefile内でこのように利用する場合、一部の\fImakefile\fRプログラムでは、中カッコ\fI{}\fR文字を特別にエスケープする必要があります。たとえば、Inprise MAKEバージョン5\&.2をWindows上で実行する場合は、\fI{{@docRoot}}\fRのように、中カッコを二重にする必要があります。\fI\-bottom\fRオプションなどのオプションへの引数を囲むのに、二重(一重ではなく)引用符も必要です(\fIhref\fR引数を囲む引用符は省略)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ドキュメンテーション・コメントでは +.sp +.if n \{\ +.RS 4 +.\} .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 -\f3導入された JDK/SDK のバージョン\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 -.nr 38 \w\f2@author\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@code}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@docRoot}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@deprecated\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@exception\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@inheritDoc}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@link}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@linkplain}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@literal}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@param\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@return\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@see\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@serial\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@serialData\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@serialField\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@since\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@throws\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@value}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@version\fP -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.5 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.3 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.4 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.2 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.4 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.5 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.2 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.2 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.2 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.1 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.2 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.4 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.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 851 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3タグ\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 (\n(41u+\n(81u-\n(a-u)/2u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@author\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@code}\fP\h'|\n(41u'1.5 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@docRoot}\fP\h'|\n(41u'1.3 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@deprecated\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@exception\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@inheritDoc}\fP\h'|\n(41u'1.4 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@link}\fP\h'|\n(41u'1.2 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@linkplain}\fP\h'|\n(41u'1.4 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@literal}\fP\h'|\n(41u'1.5 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@param\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@return\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@see\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@serial\fP\h'|\n(41u'1.2 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@serialData\fP\h'|\n(41u'1.2 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@serialField\fP\h'|\n(41u'1.2 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@since\fP\h'|\n(41u'1.1 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@throws\fP\h'|\n(41u'1.2 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@value}\fP\h'|\n(41u'1.4 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@version\fP\h'|\n(41u'1.0 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-44 -.LP -カスタムタグについては、\-tag オプションを参照してください。 -.RS 3 -.TP 3 -@author\ name\-text -\-author オプションが使用されている場合、指定された \f2name\-text\fP を含む [作成者] エントリを生成ドキュメントに追加します。1 つのドキュメンテーションコメントに複数の \f2@author\fP タグを含めることができます。1 つの \f2@author\fP タグに 1 つの名前を指定することも、複数の名前を指定することもできます。前者の場合は、Javadoc ツールによって名前と名前の間にコンマ (\f2,\fP) と空白が挿入されます。後者の場合は、テキスト全体が、解析されることなく、生成ドキュメントにそのままコピーされます。したがって、コンマではなく、各言語に対応した名前区切り文字を使う必要があるときは、1 つのタグに複数の名前を指定してください。 -.RE -.LP -詳細については、「タグを使用できる場所」および -.na -\f2@author タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@authorを参照してください。 -.LP -.RS 3 -.TP 3 -@deprecated\ deprecated\-text 注: @Deprecated 注釈を使って特定のプログラム要素を非推奨にできます。 -.RE -.LP -この API は動作し続けますが、この API を使用するべきではないことを示すコメントを追加します。Javadoc ツールは、 \f2deprecated\-text\fP を主説明の前に移動してイタリックにし、その前にボールドの警告「推奨されません。」を追加します。このタグは、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 -.LP -\f2deprecated\-text\fP の最初の文では、少なくとも、その API が推奨されなくなった時期と、代替使用するべき API を読者に提示する必要があります。Javadoc ツールは、この最初の文だけを、概要セクションと索引にコピーします。そのあとの文では、その API が推奨されない理由を説明することもできます。代わりのAPI を指し示す \f2{@link}\fP タグ ( Javadoc 1.2 以降の場合) を含めるべきです。 -.LP -詳細については、 -.na -\f2@deprecated タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@deprecatedを参照してください。 -.RS 3 -.TP 2 -o -Javadoc 1.2 以降では \f2{@link}\fP タグを使用します。これにより、必要な場所にインラインでリンクを作成できます。次に例を示します。 -.nf -\f3 -.fl /** -.fl - * @deprecated As of JDK 1.1, replaced by {@link #setBounds(int,int,int,int)} -.fl + * See the <a href="{@docRoot}/copyright\&.html">Copyright</a>\&. */ -.fl - -.fl -\fP .fi -.TP 2 -o -Javadoc 1.1 の場合の標準形式は、 \f2@see\fP タグ (インラインは不可) を \f2@deprecated\fP タグごとに作成することです。 +.if n \{\ .RE -.LP -推奨されないタグについての詳細は、 -.na -\f2@deprecated タグ\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/index.htmlのドキュメントを参照してください。 -.LP -.RS 3 -.TP 3 -{@code\ text} -\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 -は、生成された HTML ページで、次のようにそのまま表示されます。 -.nf -\f3 -.fl - \fP\f4A<B>C\fP\f3 -.fl - -.fl -\fP -.fi -.LP -ここで注目すべき点は、 \f2<B>\fP が太字として解釈されず、そのフォントはコードフォントになる、という点です。 -.LP -コードフォントなしで同じ機能を実現するには、\f2{@literal}\fP を使用します。 -.LP -.TP 3 -{@docRoot} -生成されるページから見た、生成ドキュメントの (生成先の) ルートディレクトリへの相対パスを表します。このタグは、著作権のページや会社のロゴなど、生成されるすべてのページから参照するファイルを組み込むときに便利です。通常は、各ページの下部から著作権のページにリンクします。 -.LP -この \f2{@docRoot}\fP タグは、コマンド行でもドキュメンテーションコメント内でも使用できます。このタグは、@return、@param、@deprecated などの任意のタグのテキスト部分を含む、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 -.RS 3 -.TP 3 -1. -コマンド行では、ヘッダー、フッター、またはボトムノートは次のように定義します。 -.nf -\f3 -.fl - javadoc \-bottom '<a href="{@docRoot}/copyright.html">Copyright</a>' -.fl - -.fl -\fP -.fi -.LP -注 \- \f2{@docRoot}\fP を Makefile 内でこのように利用する場合、一部の Makefile プログラムでは、中括弧 { } 文字をエスケープする必要があります。たとえば、Inprise MAKE バージョン 5.2 を Windows 上で実行する場合は、 \f2{{@docRoot}} のように、中括弧を二重にする必要があります\fP。さらに、 \f2\-bottom\fP などのオプションに対する引数を、単一引用符ではなく二重引用符で囲む必要もあります ( \f2href\fP の引数を囲む引用符は省略)。 -.TP 3 -2. -ドキュメンテーションコメントの中では、次のように使用します。 -.nf -\f3 -.fl - /** -.fl - * See the <a href="{@docRoot}/copyright.html">Copyright</a>. -.fl - */ -.fl - -.fl -\fP -.fi -.RE -.LP -このタグが必要な理由は、生成ドキュメントが、サブパッケージと同じ深さを持つ階層構造のディレクトリに格納されるからです。次に例を示します。 -.nf -\f3 -.fl - <a href="{@docRoot}/copyright.html"> -.fl - -.fl -\fP -.fi -.LP -次のように解決されます。 -.nf -\f3 -.fl - <a href="../../copyright.html"> java/lang/Object.java の場合 -.fl - -.fl -\fP -.fi -.LP -かつ -.nf -\f3 -.fl - <a href="../../../copyright.html"> java/lang/ref/Reference.java の場合 -.fl - -.fl -\fP -.fi -.LP -.TP 3 -@exception\ class\-name\ description -\f2@exception\fP タグは \f2@throws\fP と同義です。 -.LP -.TP 3 -{@inheritDoc}\ -もっとも近い継承可能なクラスまたは実装可能なインタフェースから、このタグの現在のドキュメンテーションコメントに、ドキュメントを継承 (コピー) します。この機能により、より汎用的なコメントを継承ツリーの上位に記述し、コピーしたテキストを使って記述することができます。 -.LP -このタグは、ドキュメンテーションコメントの次の位置でのみ有効です。 -.RS 3 -.TP 2 -o -メソッドの主説明ブロック内。この場合、主説明は、上位階層のクラスまたはインタフェースからコピーされる -.TP 2 -o -メソッドの @return、@param、@throws タグのテキスト引数内。この場合、タグテキストは、上位階層の対応するタグからコピーされる -.RE -.LP -継承階層でコメントを見つける方法に関する正確な説明について、「メソッドコメントの自動コピー」を参照してください。このタグが見つからない場合、コメントは、この節で説明するルールに応じて、自動的に継承されるかどうかが決まります。 -.LP -.TP 3 -{@link\ package.class#member\ label} -表示テキスト \f2label\fP とのインラインリンクを挿入します。label は、参照クラスの指定されたパッケージ、クラス、またはメンバーの名前のドキュメンテーションを指し示します。このタグは、@return、@param、@deprecated などの任意のタグのテキスト部分を含む、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 -.LP -このタグは \f2@see\fP と非常によく似ています。どちらも、\f2package.class\fP\f2#\fP\f2member\fP と \f2label\fP の参照の仕方が同じで、有効な構文もまったく同じです。大きな違いは、 \f2{@link}\fP では、[関連項目] セクションにリンクが配置される代わりに、インラインのリンクが生成されるという点です。また、インラインテキストのほかの部分と区別するために、 \f2{@link}\fP タグの最初と最後に中括弧を記述します。ラベルの中で「}」を使う必要がある場合は、HTML エンティティーの「}」を使います。 -.LP -1 文内で使用可能な \f2{@link}\fP タグの数に制限はありません。このタグは、ドキュメンテーションコメントの主説明部分、または @deprecated、@return、@param などの任意のタグのテキスト部分で使うことができます。 -.LP -たとえば、次のコメントでは \f2getComponentAt(int, int)\fP メソッドを参照しています。 -.nf -\f3 -.fl -{@link #getComponentAt(int, int) getComponentAt} メソッドを使用します。 -.fl - -.fl -\fP -.fi -.LP -標準ドックレットでは、上記のコメントから次の HTML が生成されます (このコメントが同じパッケージの別のクラスを参照している場合)。 -.nf -\f3 -.fl -<a href="Component.html#getComponentAt(int, int)">getComponentAt</a> メソッドを使用します。 -.fl - -.fl -\fP -.fi -.LP -この HTML は、Web ページ上では次のように表示されます。 -.nf -\f3 -.fl -getComponentAt メソッドを使用します。 -.fl - -.fl -\fP -.fi -.LP -\f2{@link}\fP を拡張してドキュメント化されないクラスへのリンクも可能にするには、\f2\-link\fP オプションを使用します。 -.LP -詳細については、 -.na -\f2{@link} タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#{@link}を参照してください。 -.LP -.TP 3 -{@linkplain\ package.class#member\ label} -リンクのラベルがコードフォントではなくプレーンテキストで表示される点以外は \f2{@link}\fP と同じです。ラベルがプレーンテキストで記述されていると便利です。次の例を参照してください。例: -.nf -\f3 -.fl - {@linkplain add() the overridden method} を参照してください。 -.fl - -.fl -\fP -.fi -.LP -これは以下のように表示されます。 -.LP -the overridden method を参照してください。 -.LP -.TP 3 -{@literal\ text} -テキストを HTML マークアップまたは入れ子になった javadoc タグとして解釈せずに、 \f2text\fP を表示します。このため、ドキュメンテーションコメント内で通常の山括弧 (\f2<\fP および \f2>\fP) を HTML エンティティー (\f2<\fP および \f2>\fP) の代わりに使用できます。たとえば、パラメータの型 (\f2<Object>\fP)、不等号 (\f23 < 4\fP)、矢印 (\f2<\-\fP) などです。たとえば、次のドキュメンテーションコメント -.nf -\f3 -.fl - \fP\f4{@literal A<B>C}\fP\f3 -.fl - -.fl -\fP -.fi -.LP -は、生成された HTML ページはブラウザで次のようにそのまま表示されます。 -.LP -\f2\ \ \ \ \ \fPA<B>C -.LP -ここで注目すべき点は、 \f2<B>\fP が太字として解釈されず、そのフォントはコードフォントになる、という点です。 -.LP -コードフォントで同じ機能を実現するには、\f2{@code}\fP を使用します。 -.LP -.TP 3 -@param\ parameter\-name description -指定された \f2parameter\-name\fP のあとに指定された \f2description\fP が続くパラメータを、[パラメータ] セクションに追加します。ドキュメンテーションコメントを記述するときには、 \f2description\fP を複数行にわたって記述することもできます。このタグは、メソッド、コンストラクタ、またはクラスの doc コメント内でのみ有効です。 -.LP -\f2parameter\-name\fP は、メソッドまたはコンストラクタでのパラメータの名前か、クラス、メソッドまたはコンストラクタのタイプパラメータの名前になります。山括弧でパラメータ名を囲むと、型パラメータを使用することを 指定します。 -.LP -クラスの型パラメータの例: -.nf -\f3 -.fl - /** -.fl - * @param <E> Type of element stored in a list -.fl - */ -.fl - public interface List<E> extends Collection<E> { -.fl - } -.fl - -.fl -\fP -.fi -.LP -メソッドの型パラメータの例: -.nf -\f3 -.fl - /** -.fl - * @param string the string to be converted -.fl - * @param type the type to convert the string to -.fl - * @param <T> the type of the element -.fl - * @param <V> the value of the element -.fl - */ -.fl - <T, V extends T> V convert(String string, Class<T> type) { -.fl - } -.fl - -.fl -\fP -.fi -.LP -詳細については、 -.na -\f2@param タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@paramを参照してください。 -.LP -.TP 3 -@return\ description -[戻り値] セクションを追加して、 \f2description\fP のテキストを書き込みます。このテキストでは、戻り値の型と、取り得る値の範囲について記述する必要があります。このタグは、メソッドのドキュメンテーションコメントでのみ有効です。 -.LP -詳細については、 -.na -\f2@return タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@returnを参照してください。 -.LP -.TP 3 -@see\ reference -「関連項目」見出しを追加し、 \f2reference を指すリンクか、またはテキストエントリを書き込みます\fP。ドキュメンテーションコメントには任意の数の \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 つの形式と区別します。たとえば、 -.nf -\f3 -.fl - @see "The Java Programming Language" -.fl - -.fl -\fP -.fi -.LP -これは次のようなテキストを生成します。 +.\} +このタグが必要な理由は、生成ドキュメントが、サブパッケージと同じ深さを持つ階層構造のディレクトリに格納されるからです。式\fI<a href="{@docRoot}/copyright\&.html">\fRは、\fIjava/lang/Object\&.java\fRに対しては\fI<a href="\&.\&./\&.\&./copyright\&.html">\fRに解決され、\fIjava/lang/ref/Reference\&.java\fRに対しては\fI<a href="\&.\&./\&.\&./\&.\&./copyright\&.html">\fRに解決されます。 .RE .RE -.RS 3 -.RS 3 -.RS 3 -.RS 3 -.TP 3 -関連項目: -The Java Programming Language +.PP +@exception \fIclass\-name description\fR +.RS 4 +JDK 1\&.0で導入 +.sp +\fI@throws\fRタグと同じです。@throws class\-name descriptionを参照してください。 .RE +.PP +{@inheritDoc} +.RS 4 +JDK 1\&.4で導入 +.sp +最も近い継承可能なクラスまたは実装可能なインタフェースから、このタグの位置にある現在のドキュメンテーション・コメントに、ドキュメントを継承(コピー)します。これにより、より汎用的なコメントを継承ツリーの上位に記述し、コピーしたテキストを使用して記述することができます。 +.sp +このタグは、ドキュメンテーション・コメントの次の位置でのみ有効です。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +メソッドの主説明ブロック内。この場合、主説明は、上位階層のクラスまたはインタフェースからコピーされます。 .RE -.TP 3 -@see <a href="URL#value">label</a> -\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 -\fP -.fi -これは次のようなリンクを生成します。 -.RS 3 -.TP 3 -関連項目: -Java Spec +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +メソッドの\fI@return\fR、\fI@param\fR、\fI@throws\fRタグのテキスト引数内。この場合、タグ・テキストは、上位階層の対応するタグからコピーされます。 .RE -.TP 3 -@see\ package.class#member\ label -可視のテキスト \f2label\fP を持つリンクを追加します。このリンクは、参照先となる、指定された Java 言語の名前のドキュメンテーションを指します。 \f2label\fP は省略可能です。label を省略すると、リンク先のメンバーの名前が適切に短縮されて表示されます。 「名前が表示される方法」を参照してください。\-noqualifier を使用すると、表示テキストからパッケージ名が全体的に削除されます。ラベルは、自動生成される表示テキストとは異なる表示テキストを指定する場合に使います。 -.LP -バージョン 1.2 だけは、ラベルではなく、名前が <code> HTML タグ内に自動的に表示されます。 1.2.2 からは、ラベルを使用するか、しないかにかかわらず、<code> は常に表示テキストを囲むかたちで、含まれます。 -.LP -.RS 3 -.TP 2 -o -\f4package.class\fP\f4#\fP\f4member\fP には、参照されている任意の有効なプログラム要素の名前を指定します。つまり、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドの名前です。ただし、メンバー名ーの前のドットは、シャープ記号 (\f2#\fP) で置き換えます。 \f2class\fP は、任意のトップレベルまたは入れ子にされたクラスまたはインタフェースを表します。 \f2member\fP は、任意のコンストラクタ、メソッドまたはフィールド (入れ子にされたクラスまたはインタフェースではない) を表します。指定した名前が、ドキュメント化されているクラスに含まれている場合、Javadoc ツールは、その名前へのリンクを自動的に作成します。外部参照クラスへのリンクを作成するには、\f2\-link\fP オプションを使います。参照先のクラスに属していない名前のドキュメンテーションを参照するには、残り 2 つの \f2@see\fP 形式のうちのどちらかを使用します。この引数については、このあとの「名前の指定」で詳しく説明します。 -.TP 2 -o -\f4label\fP は、省略可能なテキストで、リンクのラベルとして表示されます。 \f2label\fP には空白を含めることができます。 \f2label\fP を省略すると、\f2package.class.member\fP が、現在のクラスおよびパッケージに応じて適切に短縮されて表示されます。「名前が表示される方法」を参照してください。 -.TP 2 -o -空白が、 \f2package.class\fP\f2#\fP\f2member\fP と \f2label\fP の間の区切り文字になります。括弧の内側の空白文字はラベルの先頭とは解釈されないため、メソッドのパラメータ間に空白文字を入れてもかまいません。 +.sp +継承階層でコメントを見つける方法に関する説明は、メソッド・コメントの継承を参照してください。このタグが見つからない場合、コメントは、この項で説明するルールに応じて、自動的に継承されるかどうかが決まります。 .RE -.LP -\f3例\fP \- この例では、 \f2@see\fP タグ ( \f2Character\fP クラス内) が String クラスの \f2equals\fP メソッド \f2を参照\fP しています。このタグには名前「\f2String#equals(Object)\fP」とラベル「\f2equals\fP」の両方の引数が含まれています。 +.PP +{@link \fIpackage\&.class#member label\fR} +.RS 4 +JDK 1\&.2で導入 +.sp +表示テキストlabelとともにインライン・リンクを挿入します。labelは、参照クラスの指定されたパッケージ、クラス、またはメンバーの名前のドキュメントを指し示します。このタグは、\fI@return\fR、\fI@param\fRおよび\fI@deprecated\fRタグなどの任意のタグのテキスト部分を含む、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。JavadocツールでのDocコメントの記述方法の@linkに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#{@link)を参照してください。 +.sp +このタグは\fI@see\fRタグに似ています。どちらのタグも、\fIpackage\&.class#member\fRと\fIlabel\fRの参照方法と、有効な構文が同じです。主な違いは、\fI{@link}\fRタグでは、「関連項目」セクションにリンクが配置されるかわりに、インライン・リンクが生成されるという点です。インライン・テキストの他の部分と区別するために、\fI{@link}\fRタグの最初と最後に中カッコを記述します。ラベル内で右中カッコ(\fI}\fR)を使用する必要がある場合、HTMLエンティティ記法\fI}\fRを使用します。 +.sp +1つ文の中で使用できる\fI{@link}\fRタグの数に制限はありません。このタグは、ドキュメンテーション・コメントの主説明部分、または\fI@deprecated\fR、\fI@return\fR、\fI@param\fRタグなどの任意のタグのテキスト部分で使用できます。 +.sp +たとえば、次のコメントでは\fIgetComponentAt(int,int)\fRメソッドを参照しています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - /** -.fl - * @see String#equals(Object) equals -.fl - */ -.fl -\fP +Use the {@link #getComponentAt(int, int) getComponentAt} method\&. .fi -標準ドックレットは、次のような HTML を生成します。 -.nf -\f3 -.fl -<dl> -.fl -<dt><b>See Also:</b> -.fl -<dd><a href="../../java/lang/String#equals(java.lang.Object)"><code>equals<code></a> -.fl -</dl> -.fl -\fP -.fi -これは、ブラウザでは次のように表示され、ラベルがリンクテキストになります。 -.RS 3 -.TP 3 -関連項目: -equals +.if n \{\ .RE -.LP -\f3名前の指定\fP \- この \f2package.class\fP\f2#\fP\f2member\fP という名前は、 \f2java.lang.String#toUpperCase()\fP のような完全修飾名にすることも、 \f2String#toUpperCase()\fP や \f2#toUpperCase()\fP のような非完全修飾名にすることもできます。名前が完全指定されていない場合、Javadoc ツールは、Java コンパイラの通常の検索順序でその名前を検索します。詳細は、このあとの「@see の検索順序」を参照してください。名前には、メソッドの複数の引数の間など、括弧の内側であれば空白を含めることができます。 -.LP -「部分的に指定」した短い名前を指定することの利点は、入力する文字数が減ることや、ソースコードが読みやすくなることです。次の表に、さまざまな形式の名前を示します。ここで、 \f2Class\fP にはクラスまたはインタフェースを、 \f2Type\fP にはクラス、インタフェース、配列、または基本データ型を、 \f2method\fP にはメソッドまたはコンストラクタを、それぞれ指定できます。 -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. +.\} +標準ドックレットでは、このコードから次のHTMLが生成されます(このコメントが同じパッケージの別のクラスを参照している場合)。 +.sp +.if n \{\ +.RS 4 +.\} .nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 -.nr 34 \n(.lu -.eo -.am 80 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/2u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f4@see\fP\f3\ \fP\f4package.class#member\fP\f3 の一般的な形式\fP -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/2u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f3現在のクラスのメンバーを参照する\fP -.br -\f2@see\fP\ \f2#\fP\f2フィールド\fP -.br -\f2@see\fP\ \f2#\fP\f2method(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP -.br -\f2@see\fP\ \f2#\fP\f2constructor(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/2u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f3現在の、またはインポートされたパッケージの別のクラスを参照する\fP -.br -\f2@see\fP\ \f2クラス\fP\f2#\fP\f2フィールド\fP -.br -\f2@see\fP\ \f2クラス\fP\f2#\fP\f2method(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2クラス\fP\f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP -.br -\f2@see\fP\ \f2クラス\fP\f2#\fP\f2constructor(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2クラス\fP\f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP -.br -\f2@see\fP\ \f2Class.NestedClass\fP -.br -\f2@see\fP\ \f2クラス\fP -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/2u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f3別のパッケージの要素を参照する\fP\ (完全修飾) -.br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2フィールド\fP -.br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2method(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP -.br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2constructor(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP -.br -\f2@see\fP\ \f2package.Class.NestedClass\fP -.br -\f2@see\fP\ \f2package.Class\fP -.br -\f2@see\fP\ \f2パッケージ\fP -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.80 -.rm 80 -.nr 38 \n(a- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(b- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(c- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(d- -.if \n(80<\n(38 .nr 80 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr TW \n(80 -.if t .if \n(TW>\n(.li .tm Table at line 1342 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-58 -.LP -上の表に対する補足事項を次に示します。 -.RS 3 -.TP 2 -o -最初の種類の形式 (パッケージとクラスを省略) の場合、Javadoc ツールは、現在のクラスの階層だけを検索します。つまり、現在のクラスかインタフェース、そのスーパークラスかスーパーインタフェース、または現在のクラスかインタフェースを囲んでいるクラスかインタフェースからメンバーを検索します (このあとの検索手順 1 ~ 3)。現在のパッケージのほかの部分や、ほかのパッケージは検索しません (検索手順 4 ~ 5)。 -.TP 2 -o -メソッドまたはコンストラクタの指定時に、 \f2getValue\fP のように括弧なしの名前を使用した場合、同じ名前のフィールドが存在していなければ、Javadoc ツールによってその名前へのリンクが正しく作成されますが、括弧や引数の追加をユーザーに促すための警告メッセージが表示されます。このメソッドがオーバーロードされている場合、Javadoc ツールは、検索で最初に見つかったメソッドにリンクします。結果は前もって特定できません。 -.TP 2 -o -入れ子になったクラスは、すべての形式について、 \f2outer\fP\f2.\fP\f2inner\fP として指定する必要があります。単純に \f2inner\fP とはしないでください。 -.TP 2 -o -すでに述べたように、\f2クラスとメンバーとの間の区切り文字としては、\fPドット (\f2.\fP) ではなくシャープ文字 (#) を使用します。このように指定すると、Javadoc ツールは、あいまいさを解決できます。ドットは、クラス、入れ子にされたクラス、パッケージ、およびサブパッケージを区切るためにも使用されます。ただし、Javadoc ツールでは一般に許容範囲が広く、あいまいさがなければ、ドットでも正しく解析されます。その場合でも警告は表示されます。 +Use the <a href="Component\&.html#getComponentAt(int, int)">getComponentAt</a> method\&. +.fi +.if n \{\ .RE -.LP -\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 ツールは、特定の名前空間のあいまいさを検出しません。 これは、ソースコードにこれらのエラーが存在していないことを前提としているためです。この検索順序は、\f2Java 言語仕様\fPで正式に定義されています。Javadoc ツールは、関連するクラスとパッケージ、およびインポートされたクラスとパッケージのすべてから名前を検索します。具体的には、次の順序で検索します。 -.RS 3 -.TP 3 -1. -現在のクラスまたはインタフェース -.TP 3 -2. -外側を囲んでいるクラスとインタフェース (もっとも近いものから検索) -.TP 3 -3. -スーパークラスとスーパーインタフェース (もっとも近いものから検索) -.TP 3 -4. -現在のパッケージ -.TP 3 -5. -インポートされているパッケージ、クラス、およびインタフェース (import 文の順序に従って検索) -.RE -.LP -Javadoc ツールは、各クラスについて手順 1 ~ 3 を再帰的に適用しながら、一致する名前が見つかるまで検索を続けます。つまり、まず現在のクラスを検索し、次にそのクラスを囲んでいるクラス E を検索し、その次に E のスーパークラスを検索し、さらにその次に E を囲んでいるクラスを検索します。 手順 4 と 5 では、1 つのパッケージ内のクラスまたはインタフェースを検索する順序は決まっていません。その順序は、個々のコンパイラによって異なります。手順 5 では、Javadoc ツールは、java.lang を検索します。このパッケージは、すべてのプログラムに自動的にインポートされるからです。 -.LP -Javadoc ツールは、必ずしもサブクラスを検索するとは限りません。また、javadoc の実行中にほかのパッケージのドキュメントが生成される場合でも、ほかのパッケージを検索しません。たとえば、 \f2@see\fP タグが \f2java.awt.event.KeyEvent\fP クラス内に含まれていて、 \f2java.awt\fP パッケージ内のある名前を参照していても、そのクラス内でそのパッケージがインポートされないかぎり、javadoc はそのパッケージ内での検索を行いません。 -.LP -\f3名前が表示される方法\fP \- \f2label\fP を省略した場合は、\f2package.class.member\fP が表示されます。一般に、package.class.member は、現在のクラスおよびパッケージに応じて適切に短縮されます。「短縮される」とは、必要最小限の名前だけが表示されるということです。たとえば、 \f2String.toUpperCase()\fP メソッドに、同じクラスのメンバーへの参照とほかのクラスのメンバーへの参照が含まれている場合、クラス名が表示されるのは後者のケースだけです (次の表を参照)。 -.LP -パッケージ名を広域的に削除するには、\-noqualifier を使用します。 -.br -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. +.\} +前の行は、次のようにWebページに表示されます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 82 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\f4String.toUpperCase() での例\fP -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f2@see\fP タグが同じクラス、同じパッケージのメンバーを参照している -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 82 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(82 .ll \n(82u -.in 0 -\f2toLowerCase()\fP (クラス名は省略) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f2@see\fP タグが異なるクラス、同じパッケージのメンバーを参照している -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\f2@see Character#toLowerCase(char)\fP -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 82 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(82 .ll \n(82u -.in 0 -\f2Character.toLowerCase(char)\fP (パッケージ名は省略し、クラス名を含む) -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f2@see\fP タグが異なるクラス、異なるパッケージのメンバーを参照している -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\f2@see java.io.File#exists()\fP -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 82 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(82 .ll \n(82u -.in 0 -\f2java.io.File.exists()\fP (パッケージ名とクラス名を含む) -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \w\f3参照の種類\fP -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 38 \n(b- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(d- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(g- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 81 0 -.nr 38 \w\f2@see String#toLowerCase()\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 82 0 -.nr 38 \w\f3表示される名前\fP -.if \n(82<\n(38 .nr 82 \n(38 -.82 -.rm 82 -.nr 38 \n(c- -.if \n(82<\n(38 .nr 82 \n(38 -.nr 38 \n(f- -.if \n(82<\n(38 .nr 82 \n(38 -.nr 38 \n(i- -.if \n(82<\n(38 .nr 82 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr 42 \n(81+(3*\n(38) -.nr 82 +\n(42 -.nr TW \n(82 -.if t .if \n(TW>\n(.li .tm Table at line 1418 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u \n(82u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3参照の種類\fP\h'|\n(41u'\h'|\n(42u'\f3表示される名前\fP -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.ne \n(c|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u \n(82u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u'\f2@see String#toLowerCase()\fP\h'|\n(42u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(42u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.ne \n(e|u+\n(.Vu -.ne \n(f|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u \n(82u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(42u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.ne \n(h|u+\n(.Vu -.ne \n(i|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u \n(82u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(42u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-28 -.LP -\f3@see の例\fP -.br -右側のコメントは、 \f2@see\fP タグが \f2java.applet.Applet\fP などの別のパッケージのクラス内にある場合に、名前がどのように表示されるかを示しています。 -.nf -\f3 -.fl - 関連項目: -.fl -@see java.lang.String // String \fP\f3 -.fl -@see java.lang.String The String class // The String class \fP\f3 -.fl -@see String // String \fP\f3 -.fl -@see String#equals(Object) // String.equals(Object) \fP\f3 -.fl -@see String#equals // String.equals(java.lang.Object) \fP\f3 -.fl -@see java.lang.Object#wait(long) // java.lang.Object.wait(long) \fP\f3 -.fl -@see Character#MAX_RADIX // Character.MAX_RADIX \fP\f3 -.fl -@see <a href="spec.html">Java Spec</a> // Java Spec \fP\f3 -.fl -@see "The Java Programming Language" // "The Java Programming Language" \fP\f3 -.fl -\fP +Use the getComponentAt method\&. .fi -\f2@see\fP を拡張してドキュメント化されないクラスへのリンクも可能にするには、\f2\-link\fP オプションを使用します。 -.LP -詳細については、 -.na -\f2@see タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@seeを参照してください。 +.if n \{\ .RE +.\} .RE -.LP -.RS 3 -.TP 3 -@serial\ field\-description | include | exclude -デフォルトの直列化可能フィールドのドキュメンテーションコメントで使用します。 -.LP -\f2field\-description\fP (省略可能) では、フィールドの意味を説明し、取り得る値のリストを示す必要があります。必要に応じて、複数の行に渡って説明を記述できます。標準ドックレットは、この情報を、直列化された形式のページに追加します。 -.LP -クラスを直列化したあとしばらくしてから直列化可能フィールドをクラスに追加した場合、主説明に、追加したバージョンを識別する文を追加する必要があります。 -.LP -\f2include\fP および \f2exclude\fP 引数は、直列化された形式のページにクラスまたはパッケージを含めるか除外するかを示します。これらの引数には、次のような効果があります。 -.RS 3 -.TP 2 -o -\f2Serializable\fP を実装している public または protected クラスは、そのクラス (またはそのパッケージ) が \f2@serial exclude\fP としてマークされていないかぎり、含められます。 -.TP 2 -o -\f2Serializable\fP を実装している private または package\-private クラスは、そのクラス (またはそのパッケージ) が \f2@serial include\fP として マークされていないかぎり、除外されます。 +.PP +{@linkplain \fIpackage\&.class#member label\fR} +.RS 4 +JDK 1\&.4で導入 +.sp +\fI{@link}\fRタグと同じ動作をしますが、リンク・ラベルがコード・フォントではなくプレーン・テキストで表示される点が異なります。ラベルがプレーン・テキストで記述されていると便利です。たとえば、「\fIRefer to {@linkplain add() the overridden method}\fR\&.」は「Refer to the overridden method」と表示されます。 .RE -.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 タグをオーバーライドします。 -.LP -これらのタグの使用法についての詳細と使用例は、「Java オブジェクト直列化仕様」の第 1.6 節 -.na -\f2「クラスの直列化可能なフィールドおよびデータの文書化」\fP @ -.fi -http://java.sun.com/javase/6/docs/platform/serialization/spec/serial\-arch.htmlを参照してください。また、 -.na -\f2「直列化の FAQ」\fP @ -.fi -http://java.sun.com/javase/technologies/core/basic/serializationFAQ.jsp#javadoc_warn_missingも参照してください。この FAQ には、「\-private スイッチを指定しないで javadoc を実行しているのに private フィールドの @serial タグが見つからないという javadoc の警告が表示される」などの一般的な質問への回答が記載されています。直列化形式仕様にクラスを含める場合には、 -.na -\f2「Sun の仕様」\fP @ -.fi -http://java.sun.com/j2se/javadoc/writingapispecs/serialized\-criteria.htmlも参照してください。 -.LP -.TP 3 -@serialField\ field\-name\ field\-type\ field\-description -Serializable \f2クラスの\fP serialPersistentFields \f2メンバーの\fP ObjectStreamField コンポーネント \f2をドキュメント化\fP します。1 つの \f2@serialField\fP タグを各 \f2ObjectStreamField\fP コンポーネントで使用すべきです。 -.LP -.TP 3 -@serialData\ data\-description -\f2data\-description\fP は、直列化された形式でのデータの型と順序を説明するテキストです。具体的に言うと、このデータには、 \f2writeObject\fP メソッドによって書き込まれる省略可能なデータ、および \f2Externalizable.writeExternal\fP メソッドによって書き込まれるすべてのデータ (基底クラスも含む) が含まれます。 -.LP -\f2@serialData\fP タグは、 \f2writeObject\fP、 \f2readObject\fP、 \f2writeExternal\fP、 \f2readExternal\fP、 \f2writeReplace\fP、および \f2readResolve\fP メソッドのドキュメンテーションコメント内で使用できます。 -.LP -.TP 3 -@since\ since\-text -生成ドキュメントに [導入されたバージョン] 見出しを追加し、指定された \f2since\-text\fP を書き込みます。このテキストには、特別な内部構造はありません。このタグは、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。このタグは、特定の変更または機能が、 \f2since\-text に示されたソフトウェアリリース以降、存在していることを意味します\fP。たとえば、 +.PP +{@literal \fItext\fR} +.RS 4 +JDK 1\&.5で導入 +.sp +テキストをHTMLマークアップまたはネストされたJavadocタグとして解釈せずに、textを表示します。これにより、ドキュメンテーション・コメントでは、パラメータの型(\fI<Object>\fR)、不等号(\fI3 < 4\fR)、矢印(<\-)などで、山カッコ(\fI<および>\fR)をHTMLエンティティ(\fI<\fRおよび\fI>\fR)のかわりに使用できます。たとえば、ドキュメンテーション・コメントのテキスト\fI{@literal A<B>C}\fRは\fIA<B>C\fRとして、ブラウザの生成されたHTMLページに変更されずに表示されます。\fI<B>\fRは太字として解釈されません(コード・フォントになりません)。コード・フォントで同じ機能を実現するには、\fI{@code}\fRタグを使用します。 +.RE +.PP +@param \fIparameter\-name description\fR +.RS 4 +JDK 1\&.0で導入 +.sp +「パラメータ」セクションに、指定された\fIparameter\-name\fRの後に指定されたdescriptionを続けてパラメータを追加します。ドキュメンテーション・コメントを記述するときには、descriptionを複数行にわたって記述することもできます。このタグは、メソッド、コンストラクタ、またはクラスのドキュメンテーション・コメント内でのみ有効です。JavadocツールでのDocコメントの記述方法の@paramに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@param)を参照してください。 +.sp +\fIparameter\-name\fRは、メソッドまたはコンストラクタでのパラメータの名前か、クラス、メソッドまたはコンストラクタの型パラメータの名前になります。山カッコでこのパラメータ名を囲み、型パラメータを使用することを指定します。 +.sp +クラスの型パラメータの例: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - @since 1.5 -.fl - -.fl -\fP -.fi -.LP -Java プラットフォームのソースコードの場合、このタグは、Java プラットフォーム API 仕様のバージョンを示します。その変更や機能がリファレンス実装に追加された時期を示すとは限りません。複数の @since タグを使用でき、複数の @author タグのように扱われます。プログラム要素が複数の API で使用される場合、複数のタグを使用できます。 -.LP -.TP 3 -@throws\ class\-name\ description -\f2@throws\fP タグと \f2@exception\fP タグは同義です。生成ドキュメントに「例外」小見出しを追加して、 \f2class\-name\fP および \f2description\fP のテキストを書き込みます。 \f2class\-name\fP は、そのメソッドからスローされる可能性のある例外の名前です。このタグは、メソッド、コンストラクタの doc コメント内でのみ有効です。このクラスが完全指定の名前で記述されていない場合、Javadoc ツールは、検索順序に従ってクラスを探します。同じまたは異なる例外の doc コメントで、複数の \f2@throws\fP タグを使用できます。 -.LP -すべてのチェック済み例外がドキュメント化されるようにするために、 \f2@throws\fP タグが throws 節内の例外用に存在しない場合は、@throws タグのあるドキュメントであるかのように、Javadoc ツールによって例外が HTML 出力に説明なしで自動的に追加されます。 -.LP -オーバーライドされるメソッド内で例外が明示的に宣言されている場合のみ、 \f2@throws\fP ドキュメンテーションがそのメソッドからサブクラスにコピーされます。インタフェースメソッドから実装メソッドにコピーされる場合も同様です。@throws にドキュメンテーションを継承させるには、{@inheritDoc} を使用できます。 -.LP -詳細については、 -.na -\f2@throws タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@exceptionを参照してください。 -.LP -.TP 3 -{@value\ package.class#field} -\f2{@value}\fP が静的フィールドの doc コメントで 引数なしで使用されている場合、その定数の値が表示されます。 -.nf -\f3 -.fl - /** -.fl - * The value of this constant is {@value}. -.fl - */ -.fl - public static final String SCRIPT_START = "<script>" -.fl - -.fl -\fP -.fi -.LP -任意のドキュメンテーションコメント内で引数 \f2package.class#field\fP ありで使用された場合は、その指定された定数の値が表示されます。 -.nf -\f3 -.fl - /** -.fl - * Evaluates the script starting with {@value #SCRIPT_START}. -.fl - */ -.fl - public String evalScript(String script) { -.fl - } -.fl - -.fl -\fP -.fi -.LP -引数 \f2package.class#field\fP は、@see 引数と同一の形式になります。ただし、メンバーが静的フィールドになければならない点が異なります。 -.LP -これらの定数での値は、 -.na -\f2定数フィールド値\fP @ -.fi -http://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 -詳細については、 -.na -\f2@version タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@versionを参照してください。 -.RE -.SS -タグを使用できる場所 -.LP -ここでは、タグを使用できる場所について説明します。すべてのドキュメンテーションコメントで使用可能なタグは次のとおりです。 \f2@see\fP、 \f2@since\fP、 \f2@deprecated\fP、 \f2{@link}\fP、 \f2{@linkplain}\fP、および \f2{@docroot}\fP。 -.SS -概要のドキュメンテーションタグ -.LP -概要タグは、概要ページのドキュメンテーションコメントで使用できるタグです。このドキュメンテーションコメントは、通常 \f2overview.html\fP という名前のソースファイル内にあります。 ほかのドキュメンテーションコメントの場合と同様に、これらのタグは、主説明のあとで使う必要があります。 -.LP -\f3注\fP \- バージョン 1.2 では、概要ドキュメント内の \f2{@link}\fP タグにバグがあります。テキストは正しく表示されますが、リンクが設定されません。現在のところ、 \f2{@docRoot}\fP タグは、概要ドキュメント内では動作しません。 -.LP -\f3概要タグ\fP -.RS 3 -.TP 2 -o -\f2@see\fP -.TP 2 -o -\f2@since\fP -.TP 2 -o -\f2@author\fP -.TP 2 -o -\f2@version\fP -.TP 2 -o -\f2{@link}\fP -.TP 2 -o -\f2{@linkplain}\fP -.TP 2 -o -\f2{@docRoot}\fP -.RE -.SS -パッケージドキュメンテーションタグ -.LP -パッケージタグは、パッケージのドキュメンテーションコメントで使用できるタグです。このドキュメンテーションコメントは \f2package.html\fP または \f2package\-info.java\fP という名前のソースファイル内にあります。ここで使用できる \f2@serial\fP タグは、 \f2include\fP または \f2exclude\fP 引数が指定されたものだけです。 -.LP -\f3パッケージタグ\fP -.RS 3 -.TP 2 -o -\f2@see\fP -.TP 2 -o -\f2@since\fP -.TP 2 -o -\f2@serial\fP -.TP 2 -o -\f2@author\fP -.TP 2 -o -\f2@version\fP -.TP 2 -o -\f2{@link}\fP -.TP 2 -o -\f2{@linkplain}\fP -.TP 2 -o -\f2{@docRoot}\fP -.RE -.SS -クラスおよびインタフェースドキュメンテーションタグ -.LP -次に、クラスまたはインタフェースのドキュメンテーションコメントで使用できるタグを示します。ここで使用できる \f2@serial\fP タグは、 \f2include\fP または \f2exclude\fP 引数が指定されたものだけです。 -.LP -\f3クラスおよびインタフェースタグ\fP -.RS 3 -.TP 2 -o -\f2@see\fP -.TP 2 -o -\f2@since\fP -.TP 2 -o -\f2@deprecated\fP -.TP 2 -o -\f2@serial\fP -.TP 2 -o -\f2@author\fP -.TP 2 -o -\f2@version\fP -.TP 2 -o -\f2{@link}\fP -.TP 2 -o -\f2{@linkplain}\fP -.TP 2 -o -\f2{@docRoot}\fP -.RE -\f3次にクラスコメントの例を示します。\fP -.nf -\f3 -.fl /** -.fl - * A class representing a window on the screen. -.fl - * For example: -.fl - * <pre> -.fl - * Window win = new Window(parent); -.fl - * win.show(); -.fl - * </pre> -.fl - * -.fl - * @author Sami Shaio -.fl - * @version 1.13, 06/08/06 -.fl - * @see java.awt.BaseWindow -.fl - * @see java.awt.Button -.fl + * @param <E> Type of element stored in a list */ -.fl -class Window extends BaseWindow { -.fl - ... -.fl +public interface List<E> extends Collection<E> { } -.fl -\fP .fi -.SS -フィールドドキュメンテーションタグ -.LP -次に、フィールドのドキュメンテーションコメントで使用できるタグを示します。 -.LP -\f3フィールドタグ\fP -.RS 3 -.TP 2 -o -\f2@see\fP -.TP 2 -o -\f2@since\fP -.TP 2 -o -\f2@deprecated\fP -.TP 2 -o -\f2@serial\fP -.TP 2 -o -\f2@serialField\fP -.TP 2 -o -\f2{@link}\fP -.TP 2 -o -\f2{@linkplain}\fP -.TP 2 -o -\f2{@docRoot}\fP -.TP 2 -o -\f2{@value}\fP +.if n \{\ .RE -\f3次にフィールドコメントの例を示します。\fP +.\} +メソッドの型パラメータの例: +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * @param string the string to be converted + * @param type the type to convert the string to + * @param <T> the type of the element + * @param <V> the value of the element + */ +<T, V extends T> V convert(String string, Class<T> type) { +} +.fi +.if n \{\ +.RE +.\} +.RE +.PP +@return \fIdescription\fR +.RS 4 +JDK 1\&.0で導入 +.sp +「戻り値」セクションを追加して、descriptionのテキストを書き込みます。このテキストでは、戻り値の型と、取り得る値の範囲について記述する必要があります。このタグは、メソッドのドキュメンテーション・コメントでのみ有効です。JavadocツールでのDocコメントの記述方法の@returnに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@return)を参照してください。 +.RE +.PP +@see \fIreference\fR +.RS 4 +JDK 1\&.0で導入 +.sp +\fI「関連項目」\fR見出しを追加して、referenceを指すリンク、またはテキスト・エントリを書き込みます。1つのドキュメンテーション・コメントには任意の数の\fI@see\fRタグを含めることができますが、それらはすべて同じ見出しの下にグループ化されます。\fI@see\fRタグには、3つのタイプの形式があります。この形式が最も一般的です。このタグは、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドで有効です。パッケージ、クラス、またはメンバーに対するインライン・リンクを文中に挿入する方法は、\fI{@link}\fRを参照してください。 +.sp +\fB形式1\fR。@see +\fIstring\fRタグ形式は、\fIstring\fRのテキスト・エントリを追加します。リンクは生成されません。stringは、書籍またはURLではアクセスできない情報の参照先です。\fIjavadoc\fRコマンドは、最初の文字として二重引用符(")を検索して、この形式を前述の形式と区別します。たとえば、\fI@see "The Java Programming Language"\fRは次のテキストを生成します。 +.sp +\fB関連項目\fR: +.sp +"The Java Programming Language" +.sp +\fB形式2\fR。\fI@see <a href="URL#value">label</a>\fR形式は、\fIURL#value\fRにより定義されたリンクを追加します。\fIURL#value\fRパラメータは、相対URLまたは絶対URLです。\fIjavadoc\fRコマンドは、最初の文字として「より小さい」記号(\fI<\fR)を検索して、この形式を他の形式と区別します。たとえば、\fI@see <a href="spec\&.html#section">Java Spec</a>\fRは次のリンクを生成します。 +.sp +\fB関連項目\fR: +.sp +Java Spec +.sp +\fB形式3\fR。\fI@see package\&.class#member label\fR形式は、表示テキスト・ラベルとともにリンクを追加します。このラベルは参照されているJava言語の指定された名前のドキュメントを指し示します。ラベルはオプションです。ラベルを省略した場合は、表示テキストのかわりに、名前が適切に短縮されて表示されます。\fI\-noqualifier\fRオプションを使用すると、この表示テキストからパッケージ名が全体的に削除されます。ラベルは、自動生成される表示テキストとは異なる表示テキストにする場合に使用します。「名前が表示される方法」を参照してください。 +.sp +Java SE 1\&.2だけは、ラベルではなく名前が\fI<code>\fR +HTMLタグ内に自動的に表示されます。Java SE 1\&.2\&.2からは、ラベルを使用するかしないかにかかわらず、\fI<code>\fRタグは常に表示テキストを囲むかたちで含まれます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIpackage\&.class#member\fRには、参照されている任意の有効なプログラム要素の名前を指定します。つまり、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドの名前です。ただし、メンバー名の前の文字は、シャープ記号(\fI#\fR)にする必要があります。classは、任意のトップレベルまたはネストされたクラスか、インタフェースを表します。memberは、任意のコンストラクタ、メソッドまたはフィールドを表します(ネストされたクラスまたはインタフェースではありません)。この名前が、ドキュメント化されるクラスに含まれている場合、\fIjavadoc\fRコマンドは、その名前へのリンクを作成します。外部参照クラスへのリンクを作成するには、\fI\-link\fRオプションを使用します。参照クラスに属していない名前のドキュメントを参照するには、他の2つの\fI@see\fRタグ形式のどちらかを使用します。「名前の指定」を参照してください。 +.sp +\fB注意:\fR +外部参照クラスは、コマンドラインで\fIjavadoc\fRコマンドに渡されないクラスです。生成ドキュメント内で外部参照クラスにリンクしている箇所は、外部参照または外部リンクと呼ばれます。たとえば、\fIjava\&.awt package\fRに対してのみ\fIjavadoc\fRコマンドを実行した場合、\fIObject\fRなどの\fIjava\&.lang\fR内のすべてのクラスが外部参照クラスになります。\fI\-link\fRおよび\fI\-linkoffline\fRオプションを使用して、外部参照クラスへリンクします。外部参照クラスのソース・コメントは\fIjavadoc\fRコマンドの実行には使用できません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIlabel\fRは、省略可能なテキストで、リンクのラベルとして表示されます。ラベルには空白を含めることができます。\fIlabel\fRを省略すると、\fIpackage\&.class\&.member\fRが、現在のクラスおよびパッケージに応じて適切に短縮されて表示されます。「名前が表示される方法」を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +空白文字が、\fIpackage\&.class#member\fRと\fIlabel\fRの間の区切り文字になります。カッコの内側の空白文字はラベルの先頭とは解釈されないため、メソッドのパラメータ間に空白文字を入れてもかまいません。 +.RE +.sp +この例では、\fI@see\fRタグ(\fICharacter\fRクラス内)が、\fIString\fRクラスのequalsメソッドを参照しています。タグには、名前\fIString#equals(Object)\fRとラベル\fIequals\fRの両方の引数が含まれています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * @see String#equals(Object) equals + */ +.fi +.if n \{\ +.RE +.\} +標準ドックレットは、次のようなHTMLを生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +<dl> +<dt><b>See Also:</b> +<dd><a href="\&.\&./\&.\&./java/lang/String#equals(java\&.lang\&.Object)"><code>equals<code></a> +</dl> +.fi +.if n \{\ +.RE +.\} +前述のコードは、ブラウザに次のように表示され、ラベルは表示リンク・テキストになっています。 +.sp +\fB関連項目\fR: +.sp +equals +.RE +名前の指定.PP +この\fIpackage\&.class#member\fRという名前は、\fIjava\&.lang\&.String#toUpperCase()\fRのような完全修飾名にすることも、\fIString#toUpperCase()\fRや\fI#toUpperCase()\fRのような非完全修飾名にすることもできます。名前が完全修飾より短い場合は、\fIjavadoc\fRコマンドは、標準のJavaコンパイラの検索順序を使用して探します。「@seeタグの検索順序」を参照してください。名前は、メソッド引数の間など、カッコ内のスペースを含めることができます。部分的に修飾した短い名前を指定することの利点は、入力する文字数が減ることや、ソース・コードが読みやすくなることです。次のリストに様々な形式の名前を示します。ここで、\fIClass\fRにはクラスまたはインタフェースを、Typeにはクラス、インタフェース、配列、またはプリミティブを、methodにはメソッドまたはコンストラクタを、それぞれ指定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBTypical forms for\fR\fB @see package\&.class#member\fR +\fBReferencing a member of the current class\fR +@see #field +@see #method(Type, Type,\&.\&.\&.) +@see #method(Type argname, Type argname,\&.\&.\&.) +@see #constructor(Type, Type,\&.\&.\&.) +@see #constructor(Type argname, Type argname,\&.\&.\&.) + +\fBReferencing another class in the current or imported packages\fR +@see Class#field +@see Class#method(Type, Type,\&.\&.\&.) +@see Class#method(Type argname, Type argname,\&.\&.\&.) +@see Class#constructor(Type, Type,\&.\&.\&.) +@see Class#constructor(Type argname, Type argname,\&.\&.\&.) +@see Class\&.NestedClass +@see Class + +\fBReferencing an element in another package (fully qualified)\fR +@see package\&.Class#field +@see package\&.Class#method(Type, Type,\&.\&.\&.) +@see package\&.Class#method(Type argname, Type argname,\&.\&.\&.) +@see package\&.Class#constructor(Type, Type,\&.\&.\&.) +@see package\&.Class#constructor(Type argname, Type argname,\&.\&.\&.) +@see package\&.Class\&.NestedClass +@see package\&.Class +@see package +.fi +.if n \{\ +.RE +.\} +.PP +前のリストに関するメモ: +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +最初のタイプの形式(パッケージとクラスを省略)の場合、\fIjavadoc\fRコマンドは、現在のクラスの階層のみを検索します。つまり、現在のクラスかインタフェース、そのスーパークラスかスーパーインタフェース、またはその外側を囲んでいるクラスかインタフェースからメンバーを検索します(検索項目1\(en3)。現在のパッケージの他の部分や、他のパッケージは検索しません(検索項目4\(en5)。「@seeタグの検索順序」を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +メソッドまたはコンストラクタの入力時に、\fIgetValue\fRのようにカッコなしの名前を使用した場合、同じ名前のフィールドが存在していなければ、\fIjavadoc\fRコマンドはそのメソッドへのリンクを作成します。このメソッドがオーバーロードされている場合、\fIjavadoc\fRコマンドは、検索で最初に見つかったメソッドにリンクします。結果は前もって特定できません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ネストされたクラスは、すべての形式について、\fIouter\&.inner\fRとして指定する必要があります。単純に\fIinner\fRとはしないでください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +すでに述べたように、クラスとメンバーとの間の区切り文字としては、ドット(\fI\&.\fR)ではなくシャープ記号(\fI#\fR)を使用します。このように指定すると、\fIjavadoc\fRコマンドは、あいまいさを解決できます。ドットは、クラス、ネストされたクラス、パッケージ、およびサブパッケージを区切るためにも使用されるからです。ただし、\fIjavadoc\fRコマンドでは、あいまいさがなければドットは正しく解析されますが、警告は表示されます。 +.RE +@seeタグの検索順序.PP +\fIjavadoc\fRコマンドは、ソース・ファイル、パッケージ・ファイル、概要ファイルに表示される\fI@see\fRタグを処理します。後者の2つのファイルでは、完全修飾の名前を\fI@see\fRタグに指定する必要があります。ソース・ファイルでは、完全修飾の名前、または部分修飾の名前を指定できます。 +.PP +次に、\fI@see\fRタグの検索順序を示します。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +現在のクラスまたはインタフェース。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +外側を囲んでいるクラスとインタフェース(最も近いものから検索)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 3.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 3." 4.2 +.\} +スーパークラスとスーパーインタフェース(最も近いものから検索)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 4.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 4." 4.2 +.\} +現在のパッケージ。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 5.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 5." 4.2 +.\} +インポートされているパッケージ、クラス、およびインタフェース(\fIimport\fR文の順序に従って検索)。 +.RE +.PP +\fIjavadoc\fRコマンドは、各クラスについて項目1\-3を再帰的に適用しながら、一致する名前が見つかるまで検索を続けます。つまり、まず現在のクラスを検索し、次にその外側を囲んでいるクラスEを検索した後、Eのスーパークラスを検索してから、Eを囲んでいるクラスを検索します。項目4と5では、\fIjavadoc\fRコマンドが1つのパッケージ内のクラスまたはインタフェースを検索する順序は決まっていません(その順序は、個々のコンパイラによって異なります)。項目5では、\fIjavadoc\fRコマンドは、\fIjava\&.lang\fRを検索します。このパッケージは、すべてのプログラムに自動的にインポートされるからです。 +.PP +\fIjavadoc\fRコマンドは、完全修飾でないソース・ファイルで\fI@see\fRタグを見つけると、Javaコンパイラと同じ順序で指定された名前を検索します(ただし、\fIjavadoc\fRコマンドは、特定の名前空間のあいまいさを検出しません。これは、ソース・コードにこれらのエラーが存在していないことを前提としているためです)。この検索順序は、Java言語仕様で正式に定義されています。\fIjavadoc\fRコマンドは、関連するクラスとパッケージ、およびインポートされたクラスとパッケージのすべてからその名前を検索します。具体的には、次の順序で検索します。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +現在のクラスまたはインタフェース。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +外側を囲んでいるクラスとインタフェース(最も近いものから検索)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 3.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 3." 4.2 +.\} +スーパークラスとスーパーインタフェース(最も近いものから検索)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 4.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 4." 4.2 +.\} +現在のパッケージ。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 5.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 5." 4.2 +.\} +インポートされているパッケージ、クラス、およびインタフェース(\fIimport\fR文の順序に従って検索)。 +.RE +.PP +\fIjavadoc\fRコマンドは、必ずしもサブクラスを検索するとは限りません。また、実行中に他のパッケージのドキュメントが生成される場合でも、他のパッケージを検索しません。たとえば、\fI@see\fRタグが\fIjava\&.awt\&.event\&.KeyEvent\fRクラス内に含まれていて、\fIjava\&.awt package\fR内のある名前を参照していても、そのクラスがインポートしないかぎり\fIjavadoc\fRコマンドはそのパッケージを検索しません。 +名前が表示される方法.PP +\fIlabel\fRを省略すると、\fIpackage\&.class\&.member\fRが表示されます。一般に、これは現在のクラスおよびパッケージに応じて適切に短縮されます。短縮されるとは、\fIjavadoc\fRコマンドにより必要最小限の名前のみが表示されるということです。たとえば、\fIString\&.toUpperCase()\fRメソッドに、同じクラスのメンバーへの参照と他のクラスのメンバーへの参照が含まれている場合、クラス名が表示されるのは後者のケースのみです(次のリストを参照)。パッケージ名を全体的に削除するには、\fI\-noqualifier\fRオプションを使用します。 +.RS 4 +\fB参照のタイプ\fR: \fI@see\fRタグは同じクラス、同じパッケージのメンバーを参照します +.RE +.RS 4 +\fB例\fR: \fI@see String#toLowerCase()\fR +.RE +.RS 4 +\fB表示\fR: \fItoLowerCase()\fR \- パッケージおよびクラス名を省略します +.RE +.RS 4 +.RE +.RS 4 +\fB参照のタイプ\fR: \fI@see\fRタグは別のクラス、同じパッケージのメンバーを参照します +.RE +.RS 4 +\fB例\fR: \fI@see Character#toLowerCase(char)\fR +.RE +.RS 4 +\fB表示\fR: \fICharacter\&.toLowerCase(char)\fR \- パッケージ名を省略し、クラス名を含みます +.RE +.RS 4 +.RE +.RS 4 +\fB参照のタイプ\fR: \fI@see\fRタグは異なるクラス、異なるパッケージのメンバーを参照します +.RE +.RS 4 +\fB例\fR: \fI@see java\&.io\&.File#exists()\fR +.RE +.RS 4 +\fB表示\fR: \fIjava\&.io\&.File\&.exists()\fR \- パッケージおよびクラス名を含みます +.RE +.RS 4 +.RE +@seeタグの例.PP +右側のコメントは、\fI@see\fRタグが\fIjava\&.applet\&.Applet\fRなどの別のパッケージのクラス内にある場合に、名前がどのように表示されるかを示しています。JavadocツールでのDocコメントの記述方法の@seeに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@see)を参照してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + See also: +@see java\&.lang\&.String // String +@see java\&.lang\&.String The String class // The String class +@see String // String +@see String#equals(Object) // String\&.equals(Object) +@see String#equals // String\&.equals(java\&.lang\&.Object) +@see java\&.lang\&.Object#wait(long) // java\&.lang\&.Object\&.wait(long) +@see Character#MAX_RADIX // Character\&.MAX_RADIX +@see <a href="spec\&.html">Java Spec</a> // Java Spec +@see "The Java Programming Language" // "The Java Programming Language" +.fi +.if n \{\ +.RE +.\} +.PP +\fB注意:\fR +\fI@se\fR\fIe\fRタグを拡張してドキュメント化されないクラスにリンクするには、\fI\-link\fRオプションを使用します。 +.PP +@serial \fIfield\-description\fR | include | exclude +.RS 4 +JDK 1\&.2で導入 +.sp +デフォルトの直列化可能フィールドのドキュメンテーション・コメントで使用します。クラスの直列化可能なフィールドおよびデータの文書化 +(http://docs\&.oracle\&.com/javase/8/docs/platform/serialization/spec/serial\-arch\&.html#5251)を参照してください +.sp +Oracleの直列化された形式の仕様にクラスを含める基準 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/serialized\-criteria\-137781\&.html)も参照してください +.sp +\fIfield\-description\fR(省略可能)では、フィールドの意味を説明し、取り得る値のリストを示す必要があります。必要な場合は、複数の行に渡って説明を記述できます。標準ドックレットは、この情報を、直列化された形式ページに追加します。相互参照ページを参照してください。 +.sp +クラスを直列化した後に直列化可能フィールドをクラスに追加した場合、主説明に、追加したバージョンを識別する文を追加する必要があります。 +.sp +\fIinclude\fRおよび\fIexclude\fR引数は、直列化された形式ページにクラスまたはパッケージを含めるか除外するかを示します。次のように機能します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fISerializable\fRを実装しているpublicまたはprotectedクラスは、そのクラス(またはそのクラスが属するパッケージ)が\fI@serial exclude\fRタグでマークされていないかぎり、含められます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fISerializable\fRを実装しているprivateまたはpackage\-privateクラスは、そのクラス(またはそのクラスが属するパッケージ)が\fI@serial include\fRタグでマークされていないかぎり、除外されます。 +.RE +.sp +たとえば、\fIjavax\&.swing\fRパッケージはpackage\&.htmlまたはpackage\-info\&.java内で\fI@serial\fR +\fIexclude\fRタグでマークされています。publicクラス\fIjava\&.security\&.BasicPermission\fRは\fI@serial exclude\fRタグでマークされています。package\-privateクラス\fIjava\&.util\&.PropertyPermissionCollection\fRは\fI@serial include\fRタグでマークされています。 +.sp +クラス・レベルの\fI@serial\fRタグはパッケージ・レベルの\fI@serial\fRタグをオーバーライドします。 +.RE +.PP +@serialData \fIdata\-description\fR +.RS 4 +JDK 1\&.2で導入 +.sp +データの説明値を使用して、直列化された形式でのデータの型と順序をドキュメント化します。このデータには、\fIwriteObject\fRメソッドによって書き込まれる省略可能なデータ、および\fIExternalizable\&.writeExternal\fRメソッドによって書き込まれるすべてのデータ(ベース・クラスを含む)が含まれます。 +.sp +\fI@serialData\fRタグは、\fIwriteObject\fR、\fIreadObject\fR、\fIwriteExternal\fR、\fIreadExternal\fR、\fIwriteReplace\fRおよび\fIreadResolve\fRメソッドのドキュメンテーション・コメントで使用できます。 +.RE +.PP +@serialField \fIfield\-name\fR \fIfield\-type\fR \fIfield\-description\fR +.RS 4 +JDK 1\&.2で導入 +.sp +\fISerializable\fRクラスの\fIserialPersistentFields\fRメンバーの\fIObjectStreamField\fRコンポーネントをドキュメント化します。\fIObjectStreamField\fRコンポーネントごとに1つの\fI@serialField\fRタグを使用します。 +.RE +.PP +@since \fIsince\-text\fR +.RS 4 +JDK 1\&.1で導入 +.sp +生成ドキュメントに、指定された\fIsince\-text\fRの値の\fI「導入されたバージョン」\fR見出しを追加します。このテキストには、特別な内部構造はありません。このタグは、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドで有効です。このタグは、特定の変更または機能が、\fIsince\-text\fRの値によって指定されたソフトウェア・リリース以降、存在していることを意味します。たとえば、\fI@since 1\&.5\fRです。 +.sp +Javaプラットフォームのソース・コードの場合、\fI@since\fRタグは、JavaプラットフォームAPI仕様のバージョンを示します。ソース・コードがリファレンス実装に追加された時期を示すとは限りません。複数の\fI@since\fRタグを使用でき、複数の\fI@author\fRタグのように扱われます。プログラム要素が複数のAPIで使用される場合、複数のタグを使用できます。 +.RE +.PP +@throws \fIclass\-name\fR \fIdescription\fR +.RS 4 +JDK 1\&.2で導入 +.sp +\fI@exception\fRタグと同じ動作をします。JavadocツールでのDocコメントの記述方法の@throwsに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@exception)を参照してください +.sp +\fI@throws\fRタグは、生成ドキュメントに\fIThrows\fR小見出しを追加して、\fIclass\-name\fRおよび\fIdescription\fRテキストを書き込みます。\fIclass\-name\fRは、そのメソッドからスローされる可能性のある例外の名前です。このタグは、メソッド、コンストラクタのドキュメンテーション・コメント内でのみ有効です。このクラスが完全指定の名前で記述されていない場合、\fIjavadoc\fRコマンドは、検索順序に従ってクラスを探します。複数の\fI@throws\fRタグを、同じ例外または違う例外の指定したドキュメンテーション・コメントで使用できます。「@seeタグの検索順序」を参照してください。 +.sp +すべてのチェック済例外がドキュメント化されるようにするために、\fI@throws\fRタグがthrows節内の例外用に存在しない場合は、\fI@throws\fRタグでドキュメント化されたかのように、\fIjavadoc\fRコマンドによって例外がHTML出力に説明なしで追加されます。 +.sp +オーバーライドされるメソッド内で例外が明示的に宣言されている場合のみ、\fI@throws\fRのドキュメントがそのメソッドからサブクラスにコピーされます。インタフェース・メソッドから実装メソッドにコピーされる場合も同様です。\fI{@inheritDoc}\fRタグを使用して、\fI@throws\fRタグがドキュメンテーションを継承するように強制できます。 +.RE +.PP +{@value \fIpackage\&.class#field\fR} +.RS 4 +JDK 1\&.4で導入 +.sp +定数の値を表示します。\fI{@value}\fRタグが静的フィールドのドキュメンテーション・コメントで引数なしで使用されている場合、その定数の値を表示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * The value of this constant is {@value}\&. + */ +public static final String SCRIPT_START = "<script>" +.fi +.if n \{\ +.RE +.\} +任意のドキュメンテーション・コメント内で引数\fIpackage\&.class#field\fRありで使用された場合、\fI{@value}\fRタグは指定された定数の値を表示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * Evaluates the script starting with {@value #SCRIPT_START}\&. + */ +public String evalScript(String script) {} +.fi +.if n \{\ +.RE +.\} +引数\fIpackage\&.class#field\fRは、\fI@see\fRタグ引数と同一の形式になります。ただし、メンバーは静的フィールドである必要があります。 +.sp +これらの定数の値は「定数フィールド値」 +(http://docs\&.oracle\&.com/javase/8/docs/api/constant\-values\&.html)にも表示されます +.RE +.PP +@version \fIversion\-text\fR +.RS 4 +JDK 1\&.0で導入 +.sp +\fI\-version\fRオプションが使用されている場合、生成ドキュメントに\fI「バージョン」\fR小見出しを追加して、指定された\fIversion\-text\fRの値を書き込みます。このタグはこのコードが含まれるソフトウェアの現在のリリース番号を保持するためのものであるのに対し、\fI@since\fRタグは、このコードが導入されたリリース番号を保持します。\fIversion\-text\fRの値には、特別な内部構造はありません。JavadocツールでのDocコメントの記述方法の@versionに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@version)を参照してください +.sp +1つのドキュメンテーション・コメントに複数の\fI@version\fRタグを含めることができます。必要に応じて、1つの\fI@version\fRタグに1つのリリース番号を指定することも、複数のリリース番号を指定することもできます。前者の場合は、\fIjavadoc\fRコマンドによって名前と名前の間にカンマ(,)と空白文字が挿入されます。後者の場合は、テキスト全体が解析されることなく、生成ドキュメントにコピーされます。したがって、カンマではなく、各言語に対応した名前区切り文字を使用する必要があるときに、1行に複数の名前を指定できます。 +.RE +.SH "タグを使用できる場所" +.PP +ここでは、タグを使用できる場所について説明します。次のタグがすべてのドキュメンテーション・コメントで使用できます。\fI@see\fR、\fI@since\fR、\fI@deprecated\fR、\fI{@link}\fR、\fI{@linkplain}\fRおよび\fI{@docroot}\fR。 +.SS "概要タグ" +.PP +概要タグは、概要ページのドキュメンテーション・コメントで使用できるタグです(このドキュメンテーション・コメントは、通常overview\&.htmlという名前のソース・ファイル内にあります)。他のドキュメンテーション・コメントの場合と同様に、これらのタグは、主説明の後で使用する必要があります。 +.PP +\fB注意:\fR +Java SE 1\&.2では、概要ドキュメント内の\fI{@link}\fRタグに不具合があります。テキストは正しく表示されますが、リンクが設定されません。現在のところ、\fI{@docRoot}\fRタグは、概要ドキュメント内では機能しません。 +.PP +概要タグは、次のとおりです。 +.PP +@see reference || @since since\-text || @serialField field\-name field\-type field\-description || @author name\-text || @version version\-text || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} || +.SS "パッケージ・タグ" +.PP +パッケージ・タグは、パッケージのドキュメンテーション・コメントで使用できるタグで、ドキュメンテーション・コメントはpackage\&.htmlまたはpackage\-info\&.javaという名前のソース・ファイル内にあります。ここで使用できる\fI@serial\fRタグは、\fIinclude\fRまたは\fIexclude\fR引数を指定したもののみです。 +.PP +パッケージ・タグは、次のとおりです。 +.PP +@see reference || @since since\-text || @serial field\-description | include | exclude || @author name\-text || @version version\-text || {@linkplain package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} || +.SS "クラスおよびインタフェース・タグ" +.PP +次に、クラスまたはインタフェースのドキュメンテーション・コメントで使用できるタグを示します。\fI@serial\fRタグは、\fIinclude\fRまたは\fIexclude\fR引数を指定して、クラスまたはインタフェースのドキュメンテーション内でのみ使用できます。 +.PP +@see reference || @since since\-text || @deprecated deprecated\-text || @serial field\-description | include | exclude || @author name\-text || @version version\-text || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} || +.PP +クラス・コメントの例: +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * A class representing a window on the screen\&. + * For example: + * <pre> + * Window win = new Window(parent); + * win\&.show(); + * </pre> + * + * @author Sami Shaio + * @version 1\&.13, 06/08/06 + * @see java\&.awt\&.BaseWindow + * @see java\&.awt\&.Button + */ +class Window extends BaseWindow { + \&.\&.\&. +} +.fi +.if n \{\ +.RE +.\} +.SS "フィールド・タグ" +.PP +これらのタグは、フィールドに表示できます。 +.PP +@see reference || @since since\-text || @deprecated deprecated\-text || @serial field\-description | include | exclude || @serialField field\-name field\-type field\-description || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} || {@value package\&.class#field} +.PP +フィールド・コメントの例: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl - * The X\-coordinate of the component. -.fl + * The X\-coordinate of the component\&. * -.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 +.if n \{\ .RE -\f3次にメソッドのドキュメンテーションコメントの例を示します。\fP +.\} +.SS "コンストラクタとメソッド・タグ" +.PP +次に、コンストラクタまたはメソッドのドキュメンテーション・コメントで使用できるタグを示します。ただし、\fI@return\fRはコンストラクタでは使用できず、 +\fI{@inheritDoc}\fRには制限があります。 +.PP +@see reference || @since since\-text || @deprecated deprecated\-text || @param parameter\-name description || @return description || @throws class\-name description || @exception class\-name description || @serialData data\-description || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@inheritDoc} || {@docRoot} +.PP +\fB注意:\fR +\fI@serialData\fRタグは、\fIwriteObject\fR、\fIreadObject\fR、\fIwriteExternal\fR、\fIreadExternal\fR、\fIwriteReplace\fRおよび\fIreadResolve\fRメソッドのドキュメンテーション・コメントでのみ使用できます。 +.PP +メソッド・コメントの例: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - /** -.fl - * Returns the character at the specified index. An index -.fl - * ranges from <code>0</code> to <code>length() \- 1</code>. -.fl +/** + * Returns the character at the specified index\&. An index + * ranges from <code>0</code> to <code>length() \- 1</code> * -.fl - * @param index the index of the desired character. -.fl - * @return the desired character. -.fl + * @param index the index of the desired character\&. + * @return the desired character\&. * @exception StringIndexOutOfRangeException -.fl * if the index is not in the range <code>0</code> -.fl - * to <code>length()\-1</code>. -.fl - * @see java.lang.Character#charValue() -.fl + * to <code>length()\-1</code> + * @see java\&.lang\&.Character#charValue() */ -.fl public char charAt(int index) { -.fl - ... -.fl + \&.\&.\&. } -.fl -\fP .fi +.if n \{\ +.RE +.\} .SH "オプション" -.LP -javadoc ツールは、ドックレットを使って出力を決定します。Javadoc ツールは、\-doclet オプションでカスタムドックレットが指定されている場合以外は、デフォルトの標準ドックレットを使います。Javadoc ツールには、任意のドックレットとともに使用できるコマンド行オプションがあります。これらのオプションについては、このあとの「Javadoc オプション」で説明します。標準ドックレットでは、このほかに、いくつかの追加のコマンド行オプションが提供されます。これらのオプションについては、そのあとの「標準ドックレットが提供するオプション」で説明します。どのオプション名も、大文字と小文字が区別されません。ただし、オプションの引数では、大文字と小文字が区別されます。 -.LP +.PP +\fIjavadoc\fRコマンドは、ドックレットを使用して出力を決定します。\fIjavadoc\fRコマンドは、\fI\-doclet\fRオプションでカスタム・ドックレットが指定されている場合以外は、デフォルトの標準ドックレットを使用します。\fIjavadoc\fRコマンドには、任意のドックレットとともに使用できるコマンドライン・オプションがあります。これらのオプションについては、Javadocオプションで説明します。標準ドックレットでは、この他に、いくつかの追加のコマンドライン・オプションが提供されます。これらのオプションについては、標準ドックレットのオプションで説明します。どのオプション名も、大文字と小文字が区別されません。ただし、オプションの引数では、大文字と小文字が区別されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Javadocオプションも参照してください +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +標準ドックレットのオプションも参照してください +.RE +.PP オプションは次のとおりです。 -.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 -.. +.PP +\-1\&.1 || \-author || \-bootclasspath classpathlist || \-bottom text || \-breakiterator || \-charset name || \-classpath classpathlist || \-d directory || \-docencoding name || \-docfilesubdirs || \-doclet class || \-docletpath classpathlist || \-doctitle title || \-encoding || \-exclude packagename1:packagename2:\&.\&.\&. || \-excludedocfilessubdir name1:name2 || \-extdirs dirist || \-footer footer || \-group groupheading packagepattern:packagepattern || \-header header || \-help || \-helpfile path\efilename || \-Jflag || \-keywords || \-link extdocURL || \-linkoffline extdocURL packagelistLoc || \-linksource || \-locale language_country_variant || \-nocomment || \-nodeprecated || \-nodeprecatedlist || \-nohelp || \-noindex || \-nonavbar || \-noqualifier all | packagename1:packagename2\&.\&.\&. || \-nosince || \-notimestamp || \-notree || +\fI\-overview path/filename || \fR\-package || \-private || \-protected || \-public || \-quiet || \-serialwarn || \-source release || \-sourcepath sourcepathlist || \-sourcetab tablength || \-splitindex || +\fI\-stylesheet path/filename || \fR\-subpackages package1:package2:\&.\&.\&. || \-tag tagname:Xaoptcmf:"taghead" || \-taglet class || \-tagletpath tagletpathlist || \-title title || \-top || \-use || \-verbose || \-version || \-windowtitle title +.PP +次のオプションは、すべてのドックレットに使用可能なコアのJavadocオプションです。標準ドックレットでは、ドックレットの他の部分を提供します。\fI\-bootclasspath\fR、\fI\-breakiterator\fR、\fI\-classpath\fR、\fI\-doclet\fR、\fI\-docletpath\fR、\fI\-encoding\fR、\-\fIexclude\fR、\fI\-extdirs\fR、\fI\-help\fR、\fI\-locale\fR、\fI\-\fR\fIoverview\fR、\fI\-package\fR、\fI\-private\fR、\fI\-protected\fR、\fI\-public\fR、\fI\-quiet\fR、\fI\-source\fR、\fI\-sourcepath\fR、\fI\-subpackages\fRおよび\fI\-verbose\fR。 +.SS "Javadocオプション" +.PP +\-overview \fIpath/filename \fR +.RS 4 + +\fIjavadoc\fRコマンドに対して、\fIpath/filename \fRで指定されたソース・ファイルから概要ドキュメント用のテキストを取得し、そのテキストを概要ページ(overview\-summary\&.html)に配置するように指定します。\fIpath/filename\fRは、現在のディレクトリからの相対パスです。 +.sp +\fIfilename\fRの値で任意の名前を使用し、pathで任意の配置先を指定できますが、通常はoverview\&.htmlという名前を付け、ソース・ツリー内の最上位パッケージ・ディレクトリを含むディレクトリに配置します。この場所に配置すると、パッケージをドキュメント化するときにpathを指定する必要がなくなります。これは、\fI\-sourcepath\fRオプションによってこのファイルが指し示されるからです。 +.sp +たとえば、\fIjava\&.lang\fRパッケージのソース・ツリーが/src/classes/java/lang/の場合、概要ファイルを/src/classes/overview\&.htmlに配置できます +.sp +実際の例を参照してください。 +.sp +\fIpath/filename\fRで指定するファイルについては、概要コメント・ファイルを参照してください。 +.sp +概要ページが作成されるのは、\fIjavadoc\fRコマンドに複数のパッケージ名を渡した場合のみです。詳細は、HTMLフレームを参照してください。概要ページのタイトルは、\fI\-doctitle\fRによって設定されます。 +.RE +.PP +\-Xdoclint:(all|none|[\-]\fI<group>\fR) +.RS 4 +不正な参照、アクセシビリティの欠落およびJavadocコメントの不足の警告をレポートし、無効なJavadoc構文および不足しているHTMLタグのエラーをレポートします。 +.sp +このオプションにより、\fIjavadoc\fRコマンドは生成された出力に含まれるすべてのドキュメント・コメントをチェックします。通常どおり、標準オプション\fI\-public\fR、\fI\-protected\fR、\fI\-package\fRおよび\fI\-private\fRで生成された出力に含む項目を選択できます。 +.sp +\fI\-Xdoclint\fRが有効になっている場合は、\fIjavac\fRコマンドと同様にメッセージで問題がレポートされます。\fIjavadoc\fRコマンドは、メッセージ、ソース・ファイルのコピーおよびエラーが検出された正確な位置を指すキャレットを出力します。メッセージは、重大度、および生成されたドキュメントがバリデータを使用して実行された場合にエラーが発生する可能性に応じて、警告またはエラーになります。たとえば、不正な参照またはJavadocコメントの欠落は、\fIjavadoc\fRコマンドが無効なHTMLを生成する原因にならないため、これらの問題は警告としてレポートされます。構文エラーまたはHTML終了タグの欠落は、\fIjavadoc\fRコマンドが無効なHTMLを生成する原因になるため、これらの問題はエラーとしてレポートされます。 +.sp +デフォルトでは、\fI\-Xdoclint\fRオプションは有効になっています。オプション\fI\-Xdoclint:none\fRで無効にします。 +.sp +\fI\-Xdoclint\fRオプションでレポートされる内容は次のオプションで変更します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-Xdoclint\fR\fI\fR\fI none\fR: +\fI\-Xdoclint\fRオプションを無効にします。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-Xdoclint\fR\fI\fR\fI \fR\fIgroup\fR: +\fIgroup\fRチェックを有効にします。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-Xdoclint\fR\fI\fR\fI all\fR: すべてのチェック・グループを有効にします。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-Xdoclint\fR\fI\fR\fI all,\fR\fI\-group\fR: +\fIgroup\fRチェック以外のすべてを有効にします。 +.RE +.sp +変数\fIgroup\fRは次のいずれかの値を持ちます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIaccessibility\fR: アクセシビリティ・チェッカで検出する問題をチェックします(たとえば、\fI<table>\fRタグで指定されるno captionまたはsummary属性)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIhtml\fR: インライン要素へのブロック要素の挿入や終了タグを必要とする要素を終了しないなど、上位レベルHTMLの問題を検出します。ルールは、HTML 4\&.01仕様から導出されます。このタイプのチェックは、\fIjavadoc\fRコマンドを有効にして、ブラウザが受け入れる可能性のあるHTMLの問題を検出します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fImissing\fR: 欠落しているJavadocコメントまたはタグをチェックします(たとえば、欠落しているコメントやクラス、または欠落している\fI@return\fRタグやメソッド上の同様のタグ)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIreference\fR: JavadocタグのJava API要素の参照に関連する問題をチェックします(たとえば、\fI@see\fRで見つからない項目、または\fI@param\fRの後の不正な名前)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIsyntax\fR: エスケープされていない山カッコ(\fI<\fRおよび\fI>\fR)やアンパサンド(\fI&\fR)、無効なJavadocタグなどの下位レベルの問題を確認します。 +.RE +.sp +\fI\-Xdoclint\fRオプションを複数回指定して、複数のカテゴリのエラーと警告をチェックするオプションを有効にできます。または、前のオプションを使用して、複数のエラーおよび警告カテゴリを指定できます。たとえば、次のコマンドのいずれかを使用して、\fIfilename\fRファイル内のHTML、構文およびアクセシビリティの問題をチェックします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 82 -.nr 34 \n(.lu -.eo -.am 80 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\-\f21.1\fP -.br -\-author -.br -\-\f2bootclasspath\fP -.br -\-bottom -.br -\-\f2breakiterator\fP -.br -\-charset -.br -\-\f2classpath\fP -.br -\-d -.br -\-docencoding -.br -\-docfilessubdirs -.br -\-\f2doclet\fP -.br -\-\f2docletpath\fP -.br -\-doctitle -.br -\-\f2encoding\fP -.br -\-\f2exclude\fP -.br -\-excludedocfilessubdir -.br -\-\f2extdirs\fP -.br -\-footer -.br -\-group -.br -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\-header -.br -\-\f2help\fP -.br -\-helpfile -.br -\-\f2J\fP -.br -\-keywords -.br -\-link -.br -\-linkoffline -.br -\-linksource -.br -\-\f2locale\fP -.br -\-nocomment -.br -\-nodeprecated -.br -\-nodeprecatedlist -.br -\-nohelp -.br -\-noindex -.br -\-nonavbar -.br -\-noqualifier -.br -\-nosince -.br -\-notimestamp -.br -\-notree -.br -\-\f2overview\fP -.br -\-\f2package\fP -.br -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 82 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(82 .ll \n(82u -.in 0 -\-\f2private\fP -.br -\-\f2protected\fP -.br -\-\f2public\fP -.br -\-\f2quiet\fP -.br -\-serialwarn -.br -\-\f2source\fP -.br -\-\f2sourcepath\fP -.br -\-sourcetab -.br -\-splitindex -.br -\-stylesheetfile -.br -\-\f2subpackages\fP -.br -\-tag -.br -\-taglet -.br -\-tagletpath -.br -\-top -.br -\-title -.br +javadoc \-Xdoclint:html \-Xdoclint:syntax \-Xdoclint:accessibility \fIfilename\fR +javadoc \-Xdoclint:html,syntax,accessibility \fIfilename\fR +.fi +.if n \{\ +.RE +.\} +\fB注意:\fR +\fIjavadoc\fRコマンドでは、これらのチェックの完全性は保証されません。具体的には、完全なHTMLコンプライアンス・チェッカではありません。\-\fIXdoclint\fRオプションの目的は、\fIjavadoc\fRコマンドを有効にして一般的なエラーの大半をレポートすることです。 +.sp +\fIjavadoc\fRコマンドは、無効な入力の修正を試行せず、レポートのみ行います。 +.RE +.PP +\-public +.RS 4 +publicクラスおよびメンバーのみ表示します。 +.RE +.PP +\-protected +.RS 4 +protectedおよびpublicのクラスとメンバーのみを表示します。これがデフォルトです。 +.RE +.PP +\-package +.RS 4 +package、protected、およびpublicのクラスとメンバーのみ表示します。 +.RE +.PP +\-private +.RS 4 +すべてのクラスとメンバーを表示します。 +.RE +.PP +\-help +.RS 4 +オンライン・ヘルプを表示します。\fIjavadoc\fRと\fIドックレット\fRのコマンドライン・オプションがリストされます。 +.RE +.PP +\-doclet \fIclass\fR +.RS 4 +ドキュメントの生成に使用するドックレットを起動するためのクラス・ファイルを指定します。完全修飾名を使用します。このドックレットにより、出力の内容と形式が定義されます。\fI\-doclet\fRオプションが使用されていない場合、\fIjavadoc\fRコマンドは、標準ドックレットを使用してデフォルトのHTML形式を生成します。このクラスには\fIstart(Root)\fRメソッドが含まれている必要があります。この起動クラスへのパスは\fI\-docletpath\fRオプションによって定義されます。ドックレットの概要 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/doclet/overview\&.html)を参照してください +.RE +.PP +\-docletpath \fIclasspathlist\fR +.RS 4 +\fI\-doclet\fRオプションで指定されたドックレット開始クラス・ファイル、およびそのクラスが依存するすべてのJARファイルへのパスを指定します。開始クラス・ファイルがJARファイル内にある場合、このオプションでJARファイルへのパスを指定します。絶対パスまたは現在のディレクトリからの相対パスを指定できます。\fIclasspathlist\fRに複数のパスやJARファイルが含まれる場合には、それらをSolarisの場合はコロン(:)で、Windowsの場合はセミコロン(;)でそれぞれ区切ります。目的のドックレット開始クラスがすでに検索パス内にある場合は、このオプションは不要です。ドックレットの概要 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/doclet/overview\&.html)を参照してください +.RE +.PP +\-1\&.1 +.RS 4 +Javadoc 1\&.4から削除され、代替はありません。このオプションは、Javadoc 1\&.1によって生成されるのと同じ外見と機能を持つドキュメントを作成するためのものでした(ネストされたクラスはサポートされていません)。このオプションが必要な場合は、Javadoc 1\&.2または1\&.3をかわりに使用してください。 +.RE +.PP +\-source \fIrelease\fR +.RS 4 +受け付けるソース・コードのリリースを指定します。\fIrelease\fRパラメータには次の値を指定できます。\fIjavac\fRコマンドでコードをコンパイルするときに使用する値に対応する\fIリリース\fRの値を使用します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBリリース値: 1\&.5\fR。\fIjavadoc\fRコマンドは、JDK 1\&.5で導入された総称および他の言語機能を含むコードを受け付けます。\fI\-source\fRオプションが使用されなかった場合のコンパイラのデフォルト動作は、1\&.5のものになります。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBリリース値: 1\&.4\fR。\fIjavadoc\fRコマンドは、JDK 1\&.4で導入されたアサーションを含むコードを受け付けます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBリリース値: 1\&.3\fR。\fIjavadoc\fRコマンドは、JDK 1\&.3以降に導入されたアサーション、総称、または他の言語機能をサポートしません。 +.RE +.RE +.PP +\-sourcepath \fIsourcepathlist\fR +.RS 4 +パッケージ名または\fI\-subpackages\fRオプションを\fIjavadoc\fRコマンドに渡すときに、ソース・ファイルを見つけるための検索パスを指定します。 +\fI複数のパスはコロン(:)で区切ります。\fR\fIjavadoc\fRコマンドは、指定されたパス以下のすべてのサブディレクトリを検索します。このオプションを使用して、ドキュメント化されるソース・ファイルの位置のみでなく、それ自体はドキュメント化されないがドキュメント化されるソース・ファイルから継承されたコメントを持つソース・ファイルの位置も確認できます。 +.sp +\fI\-sourcepath\fRオプションを使用できるのは、\fIjavadoc\fRコマンドにパッケージ名を渡す場合のみです。\fIjavadoc\fRコマンドに渡されるソース・ファイルは検索されません。ソース・ファイルを特定するには、そのディレクトリに移動するか、「1つ以上のクラスのドキュメント化」に示すように各ファイルの前にパスを含めます。\fI\-sourcepath\fRが省略された場合、\fIjavadoc\fRコマンドは、クラス・パスを使用してソース・ファイルを検索します(\fI\-classpath\fRを参照)。デフォルトの\fI\-sourcepath\fRは、クラス・パスの値です。\fI\-classpath\fRを省略してパッケージ名を\fIjavadoc\fRコマンドに渡すと、\fIjavadoc\fRコマンドは現在のディレクトリ(およびそのサブディレクトリ)からソース・ファイルを検索します。 +.sp +\fIsourcepathlist\fRには、ドキュメント化するパッケージのソース・ツリーのルート・ディレクトリを設定します。 +.sp +たとえば、\fIcom\&.mypackage\fRという名前のパッケージをドキュメント化する場合に、そのソース・ファイルが/home/user/src/com/mypackage/*\&.javaにあるとします。ソース・パスをcom\emypackageが含まれるディレクトリ/home/user/srcに指定してから、次のように、パッケージ名を指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath /home/user/src/ com\&.mypackage +.fi +.if n \{\ +.RE +.\} +ソース・パスの値とパッケージ名を連結して、ドットをスラッシュ(/)に変更すると、次のように、パッケージのフルパスになります。 +.sp +/home/user/src/com/mypackage +.sp +2つのソース・パスを設定するには、次のようにします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath /home/user1/src:/home/user2/src com\&.mypackage +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-classpath \fIclasspathlist\fR +.RS 4 +\fIjavadoc\fRコマンドが参照クラスの検索を行うときに使用するパスを指定します。参照クラスとは、ドキュメント化されるクラスと、それらのクラスによって参照されるすべてのクラスのことです。 +\fI複数のパスはコロン(:)で区切ります。\fR\fIjavadoc\fRコマンドは、指定されたパス以下のすべてのサブディレクトリを検索します。\fIclasspathlist\fRの値を指定するときは、クラス・パスのドキュメントにある指示に従ってください。 +.sp +\fI\-sourcepath\fRが省略された場合、\fIjavadoc\fRコマンドは\fI\-classpath\fRを使用して、ソース・ファイルおよびクラス・ファイルを検索します(下位互換性のため)。ソース・ファイルとクラス・ファイルを別々のパスから検索する必要がある場合は、\fI\-sourcepath\fRと\fI\-classpath\fRの両方を使用します。 +.sp +たとえば、\fIcom\&.mypackage\fRをドキュメント化する場合に、そのソース・ファイルがディレクトリ/home/user/src/com/mypackageにあり、このパッケージが/home/user/libthen内のライブラリに依存しているとき、次のように指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath /home/user/lib \-classpath /home/user/src com\&.mypackage +.fi +.if n \{\ +.RE +.\} +他のツールと同様に、\fI\-classpath\fRが指定されていない場合、\fICLASSPATH\fR環境変数が設定されていれば、\fIjavadoc\fRコマンドはその環境変数を使用します。どちらも設定されていない場合、\fIjavadoc\fRコマンドは現在のディレクトリからクラスを検索します。 +.sp +\fIjavadoc\fRコマンドが\fI\-classpath\fRを使用してユーザー・クラスを検索する方法についての、拡張機能クラスやブートストラップ・クラスに関連した詳細は、クラスの検索方法 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html)を参照してください。 +.sp +*のベース名を含むクラス・パス要素は、\fI\&.jar\fRまたは\fI\&.JAR\fRを拡張子に持つディレクトリ内のすべてのファイルのリストを指定するのと同等とみなされます。 +.sp +たとえば、ディレクトリ\fImydir\fRに\fIa\&.jar\fRと\fIb\&.JA\fRRが含まれている場合、クラス・パス要素\fIfoo/*\fRは\fIA\&.jar:b\&.JAR\fRに展開されますが、JARファイルの順番は未指定となります。非表示のファイルを含む、指定したディレクトリ内のすべてのJARファイルがリストに含まれます。*からなるクラス・パス・エントリは、現在のディレクトリ内のすべてのJARファイルのリストに展開されます。\fICLASSPATH\fR環境変数も同様に展開されます。クラス・パスのワイルドカードの展開は、Java仮想マシン(JVM)の開始前に行われます。Javaプログラムは、System\&.getenv(\fI"CLASSPATH"\fR)の呼び出しによってなど、環境を問い合せる場合を除き、展開されていないワイルドカードを参照しません。 +.RE +.PP +\-subpackages \fIpackage1:package2:\&.\&.\&.\fR +.RS 4 +ソース・ファイルから指定されたパッケージおよびそのサブパッケージ内に再帰的にドキュメントを生成します。このオプションは、ソース・コードに新しいサブパッケージを追加する際に便利です。新しいサブパッケージが自動的に組み込まれるからです。各package引数は、任意の最上位サブパッケージ(\fIjava\fRなど)または完全修飾パッケージ(\fIjavax\&.swing\fRなど)になります。ソース・ファイルを含める必要はありません。引数は、すべてのオペレーティング・システムで、コロンで区切られます。ワイルドカードは使用できません。パッケージの検索場所を指定するには、\fI\-sourcepath\fRを使用します。このオプションでは、ソース・ツリー内に存在するがパッケージに含まれないソース・ファイルを処理しません。ソース・ファイルの処理を参照してください。 +.sp +たとえば、次のコマンドは、\fIjava\fRおよび\fIjavax\&.swing\fRという名前のパッケージとこれらのサブパッケージ全部のドキュメントを生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-d docs \-sourcepath /home/user/src \-subpackages java:javax\&.swing +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-exclude \fIpackagename1:packagename2:\&.\&.\&.\fR +.RS 4 +指定されたパッケージとそのサブパッケージを\fI\-subpackages\fRによって作成されたリストから無条件に除外します。過去または将来の\fI\-subpackages\fRオプションの指定によって組み込まれるパッケージも除外の対象となります。 +.sp +次の例では、\fIjava\&.io\fR、\fIjava\&.util\fR、\fIjava\&.math\fRなどは組み込まれますが、\fIjava\&.net\fRと\fIjava\&.lang\fRをルートに持つパッケージは除外されます。\fIjava\&.lang\fRのサブパッケージである\fIjava\&.lang\&.ref\fRが除外される点に注意してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath /home/user/src \-subpackages java \-exclude + java\&.net:java\&.lang +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-bootclasspath \fIclasspathlist\fR +.RS 4 +ブート・クラスが存在するパスを指定します。ブート・クラスとは、通常、Javaプラットフォーム・クラスのことです。\fIbootclasspath\fRは、\fIjavadoc\fRコマンドがソース・ファイルとクラス・ファイルを探すときに使用する検索パスの一部です。詳細は、クラスの検出方法 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html)を参照してください +.sp +\fIclasspathlist\fRパラメータ内のディレクトリは、セミコロン(;)で区切る(Windowsの場合)か、コロン(:)で区切ります(Oracle Solarisの場合)。 +.RE +.PP +\-extdirs \fIdirist\fR +.RS 4 +拡張機能クラスが存在するディレクトリを指定します。拡張機能クラスとは、Java拡張機能機構を使用するすべてのクラスです。\fIextdirs\fRオプションは、\fIjavadoc\fRコマンドがソース・ファイルとクラス・ファイルを探すときに使用する検索パスの一部です。詳細は、\fI\-classpath\fRオプションを参照してください。\fIdirlist\fR内のディレクトリは、セミコロン(;)で区切る(Windowsの場合)か、コロン(:)で区切ります(Oracle Solarisの場合)。 +.RE +.PP +\-verbose +.RS 4 +\fIjavadoc\fRコマンドの実行中に詳細なメッセージを表示します。\fIverbose\fRオプションを指定しないと、ソース・ファイルのロード時、ドキュメントの生成時(ソース・ファイルごとに1つのメッセージ)、およびソート時にメッセージが表示されます。verboseオプションを指定すると、各Javaソース・ファイルの解析に要した時間(ミリ秒単位)を示す追加のメッセージが表示されます。 +.RE +.PP +\-quiet +.RS 4 +メッセージを抑制し、警告とエラーのみが表示されるようにして、これらを確認しやすくします。\fIversion\fR文字列も抑止します。 +.RE +.PP +\-breakiterator +.RS 4 +英語の場合、パッケージ、クラスまたはメンバーの主説明の最初の文の終わりを判断する際に、\fIjava\&.text\&.BreakIterator\fRの国際化された文境界を使用します。他のすべてのロケールは、英語言語というロケール固有のアルゴリズムではなく、すでに\fIBreakIterator\fRクラスを使用しています。最初の文は、パッケージ、クラス、またはメンバーのサマリーにコピーされ、アルファベット順の索引にコピーされます。JDK 1\&.2以降、\fIBreakIterator\fRクラスは、英語を除くすべての言語の文の終わりを判断するために、すでに使用されています。したがって、\fI\-breakiterator\fRオプションは、1\&.2以降では英文以外には効果がありません。英文には、次のような独自のデフォルトのアルゴリズムがあります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +英文のデフォルトの文区切りアルゴリズム。空白文字またはHTMLブロック・タグ(\fI<P>\fRなど)が続くピリオドで停止します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +breakiterator文区切りアルゴリズム。次の語が大文字で始まる場合、空白文字が続くピリオド、疑問符、または感嘆符で停止します。このアルゴリズムでは「The serial no\&. is valid」など、ほとんどの省略表記が処理されますが、「Mr\&. Smith」は処理されません。\fI\-breakiterator\fRオプションでは、HTMLタグや、数字または記号で始まる文では停止しません。HTMLタグに埋め込まれている場合でも、「\&.\&./filename」の最後のピリオドで停止します。 +.RE +.sp +Java SE 1\&.5では\fI\-breakiterator\fR警告メッセージが削除され、デフォルトの文区切りアルゴリズムは変更されていません。ソース・コードを変更せず、SE 1\&.4\&.xでの\fI\-breakiterator\fRオプションの警告を除去していない場合でも、何もする必要はありません。Java SE 1\&.5\&.0からは警告は消滅しています。 +.RE +.PP +\-locale \fIlanguage_country_variant\fR +.RS 4 +\fIjavadoc\fRコマンドがドキュメントを生成するときに使用するロケールを指定します。この引数は、\fIj\fR\fIava\&.util\&.Locale\fRドキュメントで説明しているように、\fIen_US\fR +(英語、米国)または\fIen_US_WIN\fR +(Windowsバリアント)などのロケールの名前です。 +.sp +\fB注意:\fR +\fI\-locale\fRオプションは、標準ドックレットが提供するすべてのオプション、またはその他の任意のドックレットが提供するすべてのオプションより前(左側)に指定する必要があります。そうしないと、ナビゲーション・バーが英語で表示されます。このコマンドライン・オプションのみ、指定する順序に依存します。標準ドックレットのオプションを参照してください。 +.sp +ロケールを指定すると、指定したロケールのリソース・ファイルが\fIjavadoc\fRコマンドによって選択されて、メッセージ(ナビゲーション・バー、リストと表の見出し、ヘルプ・ファイルの目次、stylesheet\&.cssのコメントなどの文字列)のために使用されます。また、アルファベット順にソートされるリストのソート順、および最初の文の終わりを判断するための文の区切り文字も、指定したロケールによって決まります。\fI\-locale\fRオプションは、ドキュメント化されるクラスのソース・ファイル内で指定されているドキュメンテーション・コメントのテキストのロケールを決定するものではありません。 +.RE +.PP +\-encoding +.RS 4 +ソース・ファイルのエンコーディングの名前(\fIEUCJIS/SJIS\fRなど)を指定します。このオプションが指定されていない場合は、プラットフォームのデフォルト・コンバータが使用されます。およびオプションも参照してください。 +.RE +.PP +\-J\fIflag\fR +.RS 4 +\fIjavadoc\fRコマンドを実行するJava Runtime Environment (JRE)に、\fIflag\fRを直接渡します。たとえば、生成ドキュメントを処理するためにシステムで32MBのメモリーを確保しておく必要がある場合は、\fI\-Xmx\fRオプションを次のように呼び出します。\fIjavadoc \-J\-Xmx32m \-J\-Xms32m com\&.mypackage\fR。\fI\-Xms\fRは省略可能で、これは初期メモリーのサイズを設定するのみのオプションで、必要なメモリーの最小量がわかっている場合に便利です。 +.sp +\fIJ\fRと\fIflag\fRの間に空白文字はありません。 +.sp +使用している\fIjavadoc\fRコマンドのバージョンを確認するには\fI\-version\fRオプションを使用します。出力ストリームには標準ドックレットのバージョン番号が含まれます。Javadocコマンドの実行を参照してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-J\-version +java version "1\&.7\&.0_09" +Java(TM) SE Runtime Environment (build 1\&.7\&.0_09\-b05) +Java HotSpot(TM) 64\-Bit Server VM (build 23\&.5\-b02, mixed mode) +.fi +.if n \{\ +.RE +.\} +.RE +.SS "標準ドックレットのオプション" +.PP +\-d \fIdirectory\fR +.RS 4 +\fIjavadoc\fRコマンドが生成されたHTMLファイルを保存する生成先ディレクトリを指定します。\fI\-d\fRオプションを省略すると、ファイルは現在のディレクトリに保存されます。\fIdirectory\fRの値には、絶対ディレクトリ、または現在の作業ディレクトリからの相対ディレクトリを指定できます。Java SE 1\&.4では、\fIjavadoc\fRコマンドを実行すると生成先ディレクトリが自動的に作成されます。 +.sp +たとえば、次の例では、\fIcom\&.mypackage\fRパッケージのドキュメントが生成され、その結果が\fI/user/doc/ \fRディレクトリに保存されます。\fIjavadoc \-d \fR\fI/user/doc/ \fR\fIcom\&.mypackage\fR +.RE +.PP \-use -.br -\-\f2verbose\fP -.br +.RS 4 +ドキュメント化されるクラスおよびパッケージごとに1つの使用ページを組み込みます。このページには、その特定のクラスまたはパッケージのAPIを使用しているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドが記述されます。たとえば、クラスCを例にとると、クラスCを使用しているものとしては、Cのサブクラス、Cとして宣言されているフィールド、Cを返すメソッド、および型Cのパラメータを持つメソッドとコンストラクタがあります。たとえば、\fIString\fR型用の使用ページを表示できます。\fIjava\&.awt\&.Font\fRクラスの\fIgetName\fRメソッドは\fIString\fR型を戻すので、\fIgetName\fRメソッドは\fIString\fRを使用し、\fIgetName\fRメソッドが\fIString\fR用の使用ページに表示されます。これは実装ではなくAPIの使用のみをドキュメント化します。メソッドがその実装で\fIString\fRを使用するが、引数として文字列を取らない、または文字列を返さない場合、それは\fIString\fRの使用とはみなされません。生成された使用ページにアクセスするには、クラスまたはパッケージに移動し、ナビゲーション・バーの\fBリンクの使用\fRをクリックします。 +.RE +.PP \-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 1993 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ne \n(a|u+\n(.Vu -.ne \n(b|u+\n(.Vu -.ne \n(c|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u \n(82u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(42u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-127 -.LP -\f2イタリック\fP で示されたオプションは、Javadoc の基本オプションであり、Javadoc ツールのフロントエンドによって提供され、すべてのドックレットで使用できます。標準ドックレット自体は、イタリックでないオプションを提供します。 -.SS -Javadoc オプション -.RS 3 -.TP 3 -\-overview \ path/filename -Javadoc に対して、\f2path/filename\fP で指定された「ソース」ファイルから概要ドキュメント用のテキストを取得し、そのテキストを概要ページ (\f2overview\-summary.html\fP) に配置するように指定します。 \f2path/filename\fP は、カレントディレクトリからの相対パスです。 -.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 -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 には次の値を指定できます。 -.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 以降に導入されたアサーション、総称、または他の言語機能をサポートしません。 +.RS 4 +生成ドキュメントに、@versionのテキストを組み込みます。このテキストは、デフォルトでは省略されます。使用している\fIjavadoc\fRコマンドのバージョンを確認するには\fI\-J\-version\fRオプションを使用します。 .RE -.LP -javac でコードをコンパイルするときに使用した値に対応する \f2release\fP の値を使用します。 -.LP -.TP 3 -\-sourcepath\ sourcepathlist -パッケージ名または \-subpackages を javadoc コマンドに渡すときは、ソースファイル (.\f2.java\fP) を見つけるための \f2検索パス\fP を指定 \f2します\fP 。\f2sourcepathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパス以下のすべてのサブディレクトリを検索します。このオプションを使って、ドキュメント化されるソースファイルの位置だけでなく、それ自体はドキュメント化されないがドキュメント化されるソースファイルから継承されたコメントを持つソースファイルの位置も確認できます。 -.LP -\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 という名前のパッケージをドキュメント化する場合に、そのソースファイルが次の場所にあるとします。 -.nf -\f3 -.fl - /home/user/src/com/mypackage/*.java -.fl -\fP -.fi -このとき次のように、 \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 -この方法は、ソースパスの値とパッケージ名を連結して、ドットを (円記号) 「\\」に変えると、パッケージのフルパス \f2/home/user/src/com/mypackage になることを理解すると簡単です\fP。 -.LP -2 つのソースパスを設定するには、次のようにします。 -.nf -\f3 -.fl - % \fP\f3javadoc \-sourcepath /home/user1/src:/home/user2/src com.mypackage\fP -.fl -.fi -.LP -.TP 3 -\-classpath\ classpathlist -javadoc が参照クラス (\f2.class\fP ファイル) の検索を行うときに使用するパスを指定します。参照クラスとは、ドキュメント化されるクラスと、それらのクラスから参照されるすべてのクラスを指します。\f2classpathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパス以下のすべてのサブディレクトリを検索します。classpathlist を指定するときは、 -.na -\f2クラスパス\fP @ -.fi -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.。 -.LP -たとえば、 \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 が指定されなかった場合、Javadoc ツールはほかのツールと同じく、CLASSPATH 環境変数が設定されていればその値を使用します。どちらも設定されていない場合、Javadoc ツールは現在のディレクトリからクラスを検索します。 -.LP -Javadoc ツールが \f2\-classpath\fP を使用してユーザークラスを検索する方法について、拡張クラスやブートストラップクラスと関連付けて説明している情報を入手するには、 -.na -\f2「クラスの検索方法」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.htmlを参照してください。 -.LP -便宜上、 \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 プログラムが展開されていないワイルドカードを認識することはありません。 -.LP -.TP 3 -\-subpackages\ \ package1:package2:... -ソースファイルから指定されたパッケージおよびそのサブパッケージ内に再帰的にドキュメントを生成します。このオプションは、ソースコードに新しいサブパッケージを追加する際に便利です。新しいサブパッケージは自動的に組み込まれます。各 \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」という名前のパッケージとこれらのサブパッケージ全部のドキュメントを生成します。 -.LP -\f2\-subpackages\fP と \f2\-exclude\fP を組み合わせて使用すると、特定のパッケージを除外できます。 -.LP -.TP 3 -\-exclude\ \ packagename1:packagename2:... -指定されたパッケージとそのサブパッケージを \f2\-subpackages\fP によって作成されたリストから無条件に除外します。 過去の \f2\-subpackages\fP オプションの指定によって組み込まれたパッケージ、または将来組み込まれるパッケージも除外の対象となります。 次に例を示します。 -.nf -\f3 -.fl - % \fP\f3javadoc \-sourcepath /home/user/src \-subpackages java \-exclude java.net:java.lang\fP -.fl -.fi -この場合、 \f2java.io\fP、 \f2java.util\fP、 \f2java.math\fP などが含められ、 \f2java.net\fP と \f2java.lang\fP をルートに持つパッケージが除外されます。この場合、 \f2java.lang\fP のサブパッケージである \f2java.lang.ref\fP も除外される点に注意してください。 -.LP -.TP 3 -\-bootclasspath\ classpathlist -ブートクラスが存在するパスを指定します。ブートクラスとは、通常、Java プラットフォームのコアクラスのことです。ブートクラスパスは、Javadoc ツールがソースファイルとクラスファイルを探すときに使う検索パスの一部です。詳細は、 -.na -\f2「クラスの検索方法」\fP @ -.fi -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 内のディレクトリ間の区切り文字として使用します。 -.LP -.TP 3 -\-verbose -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とは、パッケージ、クラス、またはメンバーの主説明での最初の文のことです。この文は、パッケージ、クラス、またはメンバーの要約にコピーされ、アルファベット順のインデックスにコピーされます。 -.LP -JDK 1.2 以降、BreakIterator クラスは、英語を除くすべての言語の文の終わりを判断するために、すでに使用されています。したがって、 \f2\-breakiterator\fP オプションは、1.2 以降では英文以外には効果がありません。英文には、次のような独自のデフォルトのアルゴリズムがあります。 -.RS 3 -.TP 2 -o -英文のデフォルトの文区切りアルゴリズム \- 空白または HTML ブロックタグ ( \f2<P>\fP など) が続くピリオドで停止する -.TP 2 -o -breakiterator 文区切りアルゴリズム \- 一般に、次の語が大文字で始まる場合、空白文字が続くピリオド、疑問符、または感嘆符で停止する。このアルゴリズムでは「The serial no. is valid」など、ほとんどの省略表記が処理されますが、「Mr. Smith」などは処理されません。HTML タグや、数字または記号で始まる文では停止しない。HTML タグに埋め込まれている場合でも、「../filename」の最後のピリオドで停止する +.PP +\-author +.RS 4 +生成ドキュメントに、\fI@author\fRのテキストを組み込みます。 .RE -.LP -注: 1.5.0 からは、1.4.x に設けられていた breakiterator 警告メッセージを削除し、デフォルトの文区切りアルゴリズムを変更していません。つまり、\\\-breakiterator オプションは、1.5.0 ではデフォルトではなくなり、またデフォルトにするつもりもありません。これは、「次のメジャーリリース」(1.5.0) でデフォルトを変更するという、以前の目的とは逆になっています。つまり、ソースコードを変更せず、1.4.x での breakiterator 警告を除去していない場合でも、1.5.0 からは何もする必要がなく、警告は消滅しています。この逆戻りの理由は、breakiterator をデフォルトにするメリットよりも、デフォルトにするために必要となる、互換性のないソースの変更の方が負担が大きかったためです。この件で皆様に余分の手間をおかけし、混乱を招いたことをお詫びいたします。 -.TP 3 -\-locale\ language_country_variant -.LP -\f3重要\fP \- \f2\-locale\fP オプションは、\f2標準ドックレットが提供するすべてのオプション\fP、またはその他の任意のドックレットの提供するすべてのオプションより前 (左側) に指定する必要があります。そうしないと、ナビゲーションバーが英語で表示されます。このコマンド行オプションだけは、指定する順序に依存します。 -.LP -Javadoc がドキュメントを生成するときに使うロケールを指定します。この引数は次のような、java.util.Locale のドキュメンテーションで説明されているロケールの名前です。 \f2en_US\fP (英語、米国) または \f2en_US_WIN\fP (Windows で使用される英語)。 -.LP -ロケールを指定すると、指定したロケールのリソースファイルが Javadoc によって選択されて、メッセージ (ナビゲーションバー、リストと表の見出し、ヘルプファイルの目次、stylesheet.css のコメントなどの文字列) のために使われます。また、アルファベット順にソートされるリストのソート順、および最初の文の末尾を判別するための文の区切り文字も、指定したロケールによって決まります。ただし、このオプションは、ドキュメント化されるクラスのソースファイル内で指定されているドキュメンテーションコメントのテキストのロケールを決定するものではありません。 -.LP -.TP 3 -\-encoding\ name -ソースファイルのエンコーディングの名前 ( \f2EUCJIS/SJIS\fP など) を指定します。 このオプションが指定されていない場合は、プラットフォームのデフォルトコンバータが使われます。 -.LP -\-docencoding および \-charset も参照してください。 -.LP -.TP 3 -\-Jflag -javadoc を実行する実行時システム java に、\f2flag\fP を直接渡します。 \f2J\fP と \f2flag\fP の間に空白を入れないように注意してください。たとえば、生成ドキュメントの処理用として32M バイトのメモリーをシステムで確保しておく必要がある場合には、java の \f2\-Xmx\fP オプションを次のように呼び出します。\f2\-Xms\fP は省略可能です。これは、メモリーの初期サイズを設定するだけのオプションで、メモリーの最低必要量がわかっている場合に便利です。 -.nf -\f3 -.fl - % \fP\f3javadoc \-J\-Xmx32m \-J\-Xms32m\fP \f3com.mypackage\fP -.fl -.fi -使用している javadoc のバージョンを確認するには、次のように Java の\f2「\-version」\fPオプションを呼び出します。 -.nf -\f3 -.fl - % \fP\f3javadoc \-J\-version\fP -.fl - java version "1.2" -.fl - Classic VM (build JDK\-1.2\-V, green threads, sunwjit) -.fl -.fi -出力ストリームには標準ドックレットのバージョン番号が含まれます。 +.PP +\-splitindex +.RS 4 +索引ファイルをアルファベットごとに複数のファイルに分割し、文字ごとに1つのファイルと、アルファベット以外の記号で始まる索引エントリ用に1つのファイルを作成します。 .RE -.SS -標準ドックレットが提供するオプション -.RS 3 -.TP 3 -\-d\ directory -生成された HTML ファイルを保存する生成先ディレクトリを指定します(「d」は「生成先 (destination)」の意味)。このオプションを省略すると、生成されたファイルは現在のディレクトリに保存されます。値 \f2directory\fP には、絶対ディレクトリ、または現在の作業ディレクトリからの相対ディレクトリを指定できます。バージョン 1.4 では、javadoc を実行すると生成先ディレクトリが自動的に作成されます。 -.LP -たとえば次の場合、パッケージ \f2com.mypackage\fP のドキュメントが生成され、その結果が \f2/home/user/doc/\fP ディレクトリに保存されます。 -.nf -\f3 -.fl - % \fP\f3javadoc \-d /home/user/doc com.mypackage\fP -.fl -.fi -.LP -.TP 3 -\-use -ドキュメント化されるクラスおよびパッケージごとに 1 つの「使用」ページを組み込みます。このページには、その特定のクラスまたはパッケージの API を使っているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドが記述されます。たとえば、クラス C を例にとると、クラス C を使っているものとしては、C のサブクラス、C として宣言されているフィールド、C を返すメソッド、および、型 C のパラメータを持つメソッドとコンストラクタがあります。 -.LP -たとえば、String の [使用] ページに何が表示されるかを見てみましょう。java.awt.Font クラスの \f2getName()\fP メソッドは、 \f2String\fP 型の値を \f2返します\fP。したがって、 \f2getName()\fP は \f2String\fP を使用しているので、String の [使用] ページに \f2このメソッドが表示されます\fP。 -.LP -ただし、ドキュメント化されるのは API の使用だけであって、実装はドキュメント化されません。あるメソッドが、その実装の中で \f2String\fP を使っていても、引数として文字列をとったり、文字列を返したりしない場合は、 \f2String\fP の「使用」とはみなされません。 -.LP -生成された [使用] ページにアクセスするには、目的のクラスまたはパッケージに移動し、ナビゲーションバーの [使用] リンクをクリックします。 -.TP 3 -\-version -生成ドキュメントに、@version のテキストを組み込みます。このテキストは、デフォルトでは省略されます。使用している Javadoc ツールのバージョンを確認するには \f2\-J\-version\fP オプションを使用します。 -.LP -.TP 3 -\-author -生成ドキュメントに、@author のテキストを組み込みます。 -.LP -.TP 3 -\-splitindex -索引ファイルをアルファベットごとに複数のファイルに分割し、文字ごとに 1 つのファイルと、アルファベット以外の文字で始まる索引エントリ用に 1 つのファイルを作成します。 -.LP -.TP 3 -\-windowtitle\ title -HTML の <title> タグに配置するタイトルを指定します。指定したタイトルは、ウィンドウのタイトルや、このページに対して作成されたブラウザのブックマーク (お気に入り) に表示されます。このタイトルには HTML タグを含めないでください。タイトルに HTML タグが含まれていると、ブラウザがタグを正しく解釈できません。\f2title\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。\-windowtitle が省略されている場合、Javadoc ツールは、このオプションの代わりに \-doctitle の値を使います。 -.nf -\f3 -.fl - % \fP\f3javadoc \-windowtitle "Java SE Platform" com.mypackage\fP -.fl -.fi -.TP 3 -\-doctitle\ title -概要ファイルの最上部の近くに配置するタイトルを指定します。タイトルは中央揃えになり、レベル 1 の見出しとして、上部ナビゲーションバーのすぐ下に置かれます。\f2title\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2title\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 -.nf -\f3 -.fl - % \fP\f3javadoc \-doctitle "Java(TM)" com.mypackage\fP -.fl -.fi -.TP 3 -\-title\ title -\f3このオプションはもう存在していません。\fPこのオプションは Javadoc 1.2 のベータ版にしか存在していませんでした。このオプションの名前は \f2\-doctitle\fP に変更されました。名前を変更した理由は、このオプションが、ウィンドウのタイトルではなくドキュメントのタイトルを定義することを明確にするためです。 -.LP -.TP 3 -\-header\ header -各出力ファイルの上端に配置するヘッダーテキストを指定します。ヘッダーは、上部ナビゲーションバーの右側に配置されます。\f2header\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2header\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 -.nf -\f3 -.fl - % \fP\f3javadoc \-header "<b>Java 2 Platform </b><br>v1.4" com.mypackage\fP -.fl -.fi -.LP -.TP 3 -\-footer\ footer -各出力ファイルの下端に配置するフッターテキストを指定します。フッターは、下部ナビゲーションバーの右側に配置されます。\f2footer\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2footer\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 -.LP -.TP 3 -\-top -各出力ファイルの上端に配置するテキストを指定します。 -.LP -.TP 3 -\-bottom\ text -各出力ファイルの最下部に配置するテキストを指定します。このテキストは、下部ナビゲーションバーより下の、ページの最下部に配置されます。 \f2text\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。引用符を \f2text\fP 内で使用する場合、引用符をエスケープしなければならない可能性があります。 -.LP -.TP 3 -\-link\ extdocURL -javadoc により生成された既存の外部参照クラスのドキュメンテーションへのリンクを作成します。引数を 1 つとります。 -.LP -.RS 3 -.TP 2 -o -\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 で指定された) 生成先ディレクトリから、リンク先となるパッケージを含むディレクトリへの相対パスにすべきです。 -.LP -通常、絶対リンクを指定する場合は、 \f2http:\fP リンクを使用します。Web サーバーを持たないファイルシステムにリンクする場合は、 \f2file: リンクを使用できます。\fP ただし、この方法は、すべてのユーザーが生成された同じファイルシステムを共有するドキュメントにアクセスする必要がある場合以外は使用しないでください。 -.LP -すべての場合、すべてのオペレーティングシステムで、絶対 URL と相対 URL、「http:」ベースと「file:」ベースにかかわらず、スラッシュを区切り文字として使用します ( -.na -\f2URL Memo\fP @ -.fi -http://www.ietf.org/rfc/rfc1738.txt で指定)。 -.RS 3 -.TP 3 -http: ベースの絶対リンク: -\f2\-link http://<host>/<directory>/<directory>/.../<name>\fP -.TP 3 -file: ベースの絶対リンク: -\f2\-link file://<host>/<directory>/<directory>/.../<name>\fP -.TP 3 -相対リンク: -\f2\-link <directory>/<directory>/.../<name>\fP +.PP +\-windowtitle \fItitle\fR +.RS 4 +HTMLの\fI<title>\fRタグに配置するタイトルを指定します。\fItitle\fRタグに指定したテキストは、ウィンドウのタイトルや、このページに対して作成されたブラウザのブックマーク(お気に入り)に表示されます。このタイトルにはHTMLタグを含めないでください。タイトルにHTMLタグが含まれていると、ブラウザがタグを正しく解釈できません。\fItitle\fRタグ内の内部の二重引用符はエスケープ文字を使用してマークします。\fI\-windowtitle\fRオプションを省略すると、\fIjavadoc\fRコマンドは、\fI\-windowtitle\fRオプションのかわりに、\fI\-doctitle\fRオプションの値を使用します。たとえば、\fIjavadoc \-windowtitle "Java SE Platform" com\&.mypackage\fRです。 .RE +.PP +\-doctitle \fItitle\fR +.RS 4 +概要サマリー・ファイルの最上部の近くに配置するタイトルを指定します。\fItitle\fRタグに指定したテキストは中央揃えになり、レベル1の見出しとして、上部ナビゲーション・バーのすぐ下に置かれます。\fItitle\fRタグにはHTMLタグおよび空白文字を含めることができますが、その場合、タイトルを引用符で囲む必要があります。\fItitle\fRタグの内部で引用符を使用する場合は、エスケープする必要があります。たとえば、\fIjavadoc \-header "<b>Java Platform </b><br>v1\&.4" com\&.mypackage\fRです。 .RE -.LP -javadoc の 1 回の実行で複数の \f2\-link\fP オプションを指定すれば、複数のドキュメントへのリンクを作成できます。 \f3\-linkoffline または \-link の選択\fP -.br -\f2\-link\fPを使用する場合: -.RS 3 -.TP 2 -o -外部 API ドキュメントへの相対パスを使用する場合 -.TP 2 -o -外部 API ドキュメントへの絶対 URL を使用する場合 (プログラムがその URL に接続し、読み取りを行うことがシェルによって許可されている場合) +.PP +\-title \fItitle\fR +.RS 4 +すでに存在しません。Javadoc 1\&.2のベータ版にしか存在していませんでした。このオプションは、\fI\-doctitle\fRという名前に変更されました。名前を変更した理由は、このオプションが、ウィンドウのタイトルではなくドキュメントのタイトルを定義することを明確にするためです。 .RE -\f2\-linkoffline\fP を使用する場合: -.RS 3 -.TP 2 -o -外部 API ドキュメントへの絶対 URL を使用する場合 (プログラムがその URL に接続し、読み取りを行うことがシェルによって許可されていない場合)このような状況は、リンク先のドキュメントがファイアウォールの向こう側にある場合に発生します。 +.PP +\-header \fIheader\fR +.RS 4 +各出力ファイルの最上部に配置するヘッダー・テキストを指定します。ヘッダーは、ナビゲーション・バーの右上に配置されます。\fIheader\fRにはHTMLタグおよび空白文字を含めることができますが、その場合、\fIheader\fRを引用符で囲む必要があります。ヘッダー内部の引用符にはエスケープ文字を使用します。たとえば、\fIjavadoc \-header "<b>Java Platform </b><br>v1\&.4" com\&.mypackage\fRです。 .RE -.LP -\f3外部ドキュメントへの絶対リンクの使用例\fP \- \f2java.lang\fP、 \f2java.io\fP 、その他の Java プラットフォームパッケージ ( -.na -\f2http://download.oracle.com/javase/7/docs/api/\fP @ -.fi -http://download.oracle.com/javase/7/docs/api/ 内) にリンクしたい場合があります。次のコマンドは、Java SE プラットフォームパッケージへのリンクを含んだ、パッケージ \f2com.mypackage\fP のドキュメントを生成します。生成されたドキュメントには、たとえばクラスツリー内の \f2Object\fP クラスへのリンクが含まれています。なお、 \f2\-sourcepath\fP や \f2\-d\fP など、その他のオプションは示していません。 +.PP +\-footer \fIfooter\fR +.RS 4 +各出力ファイルの最下部に配置するフッター・テキストを指定します。\fIfooter\fRの値は、ナビゲーション・バーの右下に配置されます。\fIfooter\fRにはHTMLタグおよび空白文字を含めることができますが、その場合、\fIfooter\fRを引用符で囲む必要があります。フッター内部の引用符にはエスケープ文字を使用します。 +.RE +.PP +\-top +.RS 4 +各出力ファイルの最上部に配置するテキストを指定します。 +.RE +.PP +\-bottom \fItext\fR +.RS 4 +各出力ファイルの最下部に配置するテキストを指定します。このテキストは、下部ナビゲーション・バーより下の、ページの最下部に配置されます。テキストにはHTMLタグおよび空白文字を含めることができますが、その場合、テキストを引用符で囲む必要があります。テキスト内部の引用符にはエスケープ文字を使用します。 +.RE +.PP +\-link \fIextdocURL\fR +.RS 4 +既存のJavadocにより生成された外部参照クラスのドキュメントへのリンクを作成します。\fIextdocURL\fR引数は、リンク先として指定する、Javadocにより生成された外部ドキュメントを含むディレクトリの絶対URLまたは相対URLです。指定した\fIjavadoc\fRコマンドの実行で、複数の\fI\-link\fRオプションを指定して複数のドキュメントへのリンクを作成できます。 +.sp +このディレクトリ内にpackage\-listファイルが存在する必要があります(存在しない場合は、\fI\-linkoffline\fRオプションを使用します)。\fIjavadoc\fRコマンドは、package\-listファイルからパッケージ名を読み取った後、そのURLでこれらのパッケージにリンクします。\fIjavadoc\fRコマンドの実行時に、\fIextdocURL\fRの値が、作成された\fI<A HREF>\fRリンク内にコピーされます。したがって、\fIextdocURL\fRはファイルではなくディレクトリへのURLである必要があります。\fIextdocURL\fRに絶対リンクを使用すると、ユーザーのドキュメントを任意のWebサイト上のドキュメントにリンクできます。相対位置へリンクするのみの場合は相対リンクを使用できます。相対リンクを使用する場合、渡す値は宛先ディレクトリから、リンクされているパッケージを含むディレクトリへである必要があります(\fI\-d\fRオプションで指定)。絶対リンクを指定する場合、通常、HTTPリンクを使用します。ただし、Webサーバーを持たないファイル・システムにリンクする場合は、ファイル・リンクを使用できます。生成されたドキュメンテーションにアクセスする全員が同じファイル・システムを共有する場合にのみファイル・リンクを使用します。どの場合も、どのオペレーティング・システムでも、URLが絶対または相対のいずれでも、また\fIh\fR\fIttp:\fRまたは\fIf\fR\fIile:\fRのいずれでも、URLメモ: Uniform Resource Locators +(http://www\&.ietf\&.org/rfc/rfc1738\&.txt)に指定されているとおり、区切り文字としてスラッシュを使用します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc \-link http://download.oracle.com/javase/7/docs/api/ com.mypackage\fP -.fl +\-link http://<host>/<directory>/<directory>/\&.\&.\&./<name> +\-link file://<host>/<directory>/<directory>/\&.\&.\&./<name> +\-link <directory>/<directory>/\&.\&.\&./<name> .fi -\f3外部ドキュメントへの相対リンクの使用例\fP \- 2 つのパッケージがあり、そのドキュメントが Javadoc ツールを複数回実行した結果生成されたものであるとします。さらに、これらのドキュメントが相対パスで分割されているとします。この例の場合、パッケージは、API である \f2com.apipackage\fP と、SPI (サービスプロバイダインタフェース) である \f2com.spipackage\fP です。ドキュメントの格納先は、 \f2docs/api/com/apipackage\fP と \f2docs/spi/com/spipackage\fP です。API パッケージのドキュメントはすでに生成済みで、 \f2docs\fP がカレントディレクトリになっていると仮定すると、API ドキュメントへのリンクを含む SPI パッケージをドキュメント化するには、次のコマンドを実行します。 +.if n \{\ +.RE +.\} +.RE +\-linkofflineおよび\-linkオプションの違い.PP +次の場合に、\fI\-link\fRオプションを使用します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +外部APIドキュメントへの相対パスを使用する場合。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +外部APIドキュメントへの絶対URLを使用する場合(そのURLに接続し、読取りを行うことがシェルによって許可されている場合)。 +.RE +.PP +外部APIドキュメントへの絶対URLを使用する場合(そのURLに接続し、読取りを行うことがシェルによって許可されていない場合)は\fI\-linkoffline\fRオプションを使用します。このような状況は、ファイアウォールの内側からファイアウォールの外側にあるドキュメントにリンクしようとする場合に発生します。 +.PP +\fBExample 1\fR, 外部ドキュメントへの絶対リンク +.RS 4 +http://docs\&.oracle\&.com/javase/8/docs/api/index\&.htmlに示すような、\fIjava\&.lang\fR、\fIjava\&.io\fRおよびその他のJavaプラットフォーム・パッケージにリンクする場合、次のコマンドを使用します +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc \-d ./spi \-link ../api com.spipackage\fP -.fl +javadoc \-link http://docs\&.oracle\&.com/javase/8/docs/api/ com\&.mypackage .fi -.LP -\f2\-link\fP の引数は、生成先ディレクトリ (\f2docs/spi\fP) からの相対パスです。 -.LP -\f3詳細\fP \- \f2\-link\fP オプションを使うと、「コードからは参照されていても、Javadoc の今回の実行ではドキュメント化されない」というクラスにリンクできるようになります。リンクから有効なページに移動できるようにするには、それらの HTML ページがある場所を調べ、その場所を \f2extdocURL\fP に指定する必要があります。これにより、たとえば、サードパーティーのドキュメントから \f2http://java.sun.com 上の java.*\fP のドキュメントへのリンクが \f2可能となります\fP。 -.LP -今回の実行で Javadoc によって生成されるドキュメント内の API だけを対象に \f2リンクを作成する場合は、\fP \-link オプションを省略します。 \f2\-link\fP オプションが指定されていない場合、Javadoc ツールは、外部参照されたドキュメントへのリンクを作成しません。これは、そのドキュメントが存在するかどうか、および存在する場合はその場所を判別できないからです。 -.LP -このオプションでは、生成ドキュメント内の複数の場所にリンクを作成できます。 -.LP -もう 1 つの用途は、パッケージセット間でのクロスリンクです。一方のパッケージセットに対して javadoc を実行したあと、他方のパッケージセットに対して javadoc を再度実行することにより、両セット間で双方向のリンクを作成できます。 -.LP -\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。たとえば、次のようにすれば十分です。 -.br -\f2import java.io.*;\fP -.br -1.3.x および 1.2.x では、名前による明示的なインポートだけです。ワイルドカードによるインポート文も、 \f2java.lang.* の自動インポートも使用できません\fP。 -.TP 2 -o +.if n \{\ +.RE +.\} +このコマンドは、Java SEプラットフォーム・パッケージへのリンク持つ\fIcom\&.mypackage\fRパッケージのドキュメントを生成します。生成ドキュメントには、たとえばクラス\fItrees\fR内の\fIObject\fRクラスへのリンクが含まれています。\fI\-sourcepath\fRや\fI\-d\fRなどの他のオプションは表示されません。 +.RE +.PP +\fBExample 2\fR, 外部ドキュメントへの相対リンク +.RS 4 +この例では、2つのパッケージがあり、そのドキュメントは\fIjavadoc\fRコマンドを複数回実行した結果生成されたものです。さらに、これらのドキュメントは相対パスで分割されています。パッケージは、APIである\fIcom\&.apipackage\fRと、SPI(サービス・プロバイダ・インタフェース)であるc\fIom\&.spipackage\fRです。ドキュメントの格納先は、docs/api/com/apipackageとdocs/spi/com/spipackageです。APIパッケージのドキュメントはすでに生成されていて、docsが現在のディレクトリである場合、APIドキュメントへのリンクを持つSPIパッケージをドキュメント化するには、次のコマンドを実行します。\fIjavadoc \-d \&./spi \-link \&.\&./api com\&.spipackage\fR +.sp +\fI\-link\fRオプションは、宛先ディレクトリ(docs/spi)からの相対パスです。 +.RE +注意.PP +\fI\-link\fRオプションを使用すると、コードからは参照されていても、今回の\fIjavadoc\fRの実行ではドキュメント化されないクラスにリンクできるようになります。リンクから有効なページに移動できるようにするには、それらのHTMLページがある場所を調べ、その場所を\fIextdocURL\fRに指定する必要があります。これにより、サードパーティのドキュメンテーションがjava\&.*ドキュメンテーション(http://docs\&.oracle\&.com)へリンクすることができます。\fIjavadoc\fRコマンドで、現在の実行で生成しているドキュメンテーション内のAPIへのリンクのみを作成する場合には、\fI\-link\fRオプションを省略します。\fI\-link\fRオプションを指定しないと、\fIjavadoc\fRコマンドは外部参照のためのドキュメンテーションへのリンクを作成しません。ドキュメンテーションが存在するのかどうか、またはどこに存在するのかがわからないからです。\fI\-link\fRオプションでは、生成ドキュメンテーション内の複数の場所にリンクを作成できます。ソース・ファイルの処理を参照してください。もう1つの用途は、パッケージ・セットの間にクロスリンクを作成することです。一方のパッケージ・セットに対して\fIjavadoc\fRコマンドを実行した後、他方のパッケージ・セットに対して\fIjavadoc\fRコマンドを再度実行すると、両セット間に双方向のリンクを作成できます。 +クラスの参照方法.PP +表示される外部参照クラスへのリンクの場合(およびそのテキスト・ラベルだけではなく)、クラスは次の方法で参照される必要があります。メソッドの本体でクラスを参照するのみでは十分ではありません。\fIimport\fR文、宣言のいずれかで参照する必要があります。次に、クラス\fIjava\&.io\&.File\fRを参照する方法の例を示します。 +.PP +すべてのタイプのimport文の場合。ワイルドカードによるインポート、名前による明示的なインポート、または\fIjava\&.lang\&.*\fRに対する自動インポート。 +.PP +Java SE 1\&.3\&.\fIn\fRおよび1\&.2\&.\fIn\fRでは、名前による明示的なインポートのみ機能します。ワイルドカードによる\fIimport\fR文も、\fIimport java\&.lang\&.*\fRの自動インポートも機能しません。 +.PP 宣言の場合: -.br -\f2void foo(File f) {}\fP -.br -この参照を使用し、メソッド、コンストラクタ、フィールド、クラス、またはインタフェースの戻り値の型またはパラメータの型に置くか、 \f2implements\fP、 \f2extends\fP 、または \f2throws\fP 文に置きます。 +\fIvoid mymethod(File f) {}\fR +.PP +参照は、メソッド、コンストラクタ、フィールド、クラスまたはインタフェースの戻り型またはパラメータ・タイプ、あるいは実装、拡張またはスロー文にあります。 +.PP +重要な結果として、\fI\-link\fRオプションを使用しても、この制限のために誤って表示されないリンクが多数発生する可能性があります。テキストはハイパーテキスト・リンクが付けられずに表示されます。リンクが表示する警告から、これらのリンクを認識できます。クラスを正しく参照し、それによってリンクを追加するための最も簡単な方法はそのクラスをインポートすることです。 +パッケージ・リスト.PP +\fI\-link\fRオプションには、\fIjavadoc\fRコマンドによって生成されるpackage\-listという名前のファイルが、\fI\-link\fRオプションに指定したURLに存在していることが必要です。package\-listファイルは、その場所にあるドキュメント化されたパッケージの名前のリストが入った単純なテキスト・ファイルです。前述の例では、\fIjavadoc\fRコマンドは、指定したURLでpackage\-listという名前のファイルを検索し、パッケージ名を読み取って、そのURLでこれらのパッケージにリンクします。 +.PP +たとえば、Java SE APIのパッケージ・リストは +http://docs\&.oracle\&.com/javase/8/docs/api/package\-listにあります。 +.PP +このパッケージ・リストは次のような内容で始まっています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java\&.applet +java\&.awt +java\&.awt\&.color +java\&.awt\&.datatransfer +java\&.awt\&.dnd +java\&.awt\&.event +java\&.awt\&.font +and so on \&.\&.\&.\&. +.fi +.if n \{\ .RE -.LP -重要な結果として、 \f2\-link\fP オプションの使用時に、この制限のために誤って表示されないリンクが多数発生する可能性があります。テキストはハイパーテキストリンクが付けられずに表示されます。これらのリンクが表示する警告から、このリンクを認識できます。クラスを正しく参照し、それによってリンクを追加するためのもっとも安全な方法は上で説明したとおり、当該のクラスをインポートすることです。 -.LP -\f3パッケージリスト\fP \- \f2\-link\fP オプションが正しく機能するには、Javadoc ツールによって生成される \f2package\-list\fP という名前のファイルが、ユーザーが \f2\-link\fP に指定した URL に存在している必要があります。 \f2package\-list\fP ファイルは、その場所にあるドキュメント化されたパッケージの名前のリストが入った単純なテキストファイルです。前の例では、Javadoc ツールは、指定された URL で \f2package\-list\fP という名前のファイルを検索し、パッケージ名を読み込んだあと、その URL にあるそれらのパッケージへのリンクを作成しました。 -.LP -たとえば、Java SE 6 API のパッケージリストは -.na -\f2http://download.oracle.com/javase/7/docs/api/package\-list\fP @ -.fi -http://download.oracle.com/javase/7/docs/api/package\-list にあり、次のような内容で始まっています。 -.nf -\f3 -.fl - java.applet -.fl - java.awt -.fl - java.awt.color -.fl - java.awt.datatransfer -.fl - java.awt.dnd -.fl - java.awt.event -.fl - java.awt.font -.fl - その他 -.fl -\fP -.fi -.LP -\f2\-link\fP オプションを指定せずに javadoc を実行した場合、外部参照クラスに属する名前を見つけると、javadoc はその名前をリンクを持たない形で出力します。一方、 \f2\-link\fP オプションが指定された場合、Javadoc ツールは、 \f2指定された\fP \f2extdocURL\fP の場所にある package\-list ファイル内で、そのパッケージ名を検索します。パッケージ名が見つかると、\f2extdocURL\fP が名前の前に付加されます。 -.LP -すべてのリンクが正しく機能するためには、外部参照のすべてのドキュメントが、指定した URL に存在していなければなりません。Javadoc ツールは、指定された package\-list が存在するかどうかを調べるだけで、指定された URL に目的のページが存在するかどうかはチェックしません。 -.LP -\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 -.LP -\f2extdocURL1\fP、\f2extdocURL2\fP、... \f2extdocURLn\fP は、それぞれ外部ドキュメントのルートを指し、各ルートには、 \f2package\-list\fP という名前のファイルが入っています。 -.LP -\f3クロスリンク\fP \- まだ生成されていない 2 つ以上のドキュメントをクロスリンクする場合は、「ブートストラップ」が必要になります。つまり、どのドキュメントについても \f2package\-list\fP が存在していない場合は、最初のドキュメントに対して Javadoc ツールを実行する時点で、2 番目のドキュメントの \f2package\-list\fP はまだ存在していません。したがって、外部リンクを作成するには、2 番目のドキュメントを生成したあとで、最初のドキュメントを生成し直す必要があります。 -.LP -この場合、最初のドキュメント生成の目的は、 \f2package\-list\fP を作成することです。パッケージ名をすべて把握している場合は、package\-list を手動で作成してもかまいません。次に、2 番目のドキュメントとその外部リンクを生成します。必要な外部の \f2package\-list\fP ファイルが存在しない場合は、Javadoc ツールから警告が出力されます。 -.LP -.TP 3 -\-linkoffline\ extdocURL\ packagelistLoc -このオプションは \f2\-link\fP のバリエーションの 1 つです。どちらも、外部参照クラスの javadoc 生成ドキュメントへのリンクを作成します。Javadoc \f2ツール自体が\fP オフラインになっているとき (Web 接続を使ってドキュメントにアクセスできないとき)、Web 上のドキュメントにリンクするには、\-linkoffline オプションを使用します。 -.LP -厳密には、 \f2外部\fP ドキュメントの \f2package\-list\fP ファイルにアクセスできないとき、またはこのファイルが \f2extdocURL\fP で指定された場所とは異なる場所 (通常、\f2packageListLoc\fP で指定可能なローカルな場所) に存在するとき、\-linkoffline を使用します。したがって、WWW 経由でしか \f2extdocURL\fP にアクセスできない場合、 \f2\-linkoffline\fP を指定することにより、ドキュメントの生成時に Javadoc ツールが Web に接続できなければならないという制約がなくなります。 -.LP -さらに、ドキュメントを更新するための「ハッキング」としての使用も可能です。パッケージのセット全体に対して javadoc を実行したあと、変更した一部のパッケージだけに対して javadoc を実行します。こうして、更新されたファイルを、オリジナルのファイルセットに挿入できるようにします。例をあとで示します。 -.LP -\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 で指定された) 生成先ディレクトリからリンク先パッケージのルートへの相対パスにすべきです。詳細は、\-link オプションの \f2extdocURL\fP \f2を参照\fP してください。 -.TP 2 -o -\f4packagelistLoc\fP は、外部ドキュメントの \f2package\-list\fP ファイルを含むディレクトリへのパスまたは URL です。これは、URL (http: または file:) でもファイルパスでもかまいませんし、絶対パスでも相対パスでもかまいません。相対パスの場合は、javadoc が実行されるカレントディレクトリからの相対パスとして指定します。ファイル名 \f2package\-list\fP は含めないでください。 +.\} +.PP +\fI\-link\fRオプションを指定せずに\fIjavadoc\fRを実行した場合、外部参照クラスに属する名前を見つけると、その名前をリンクなしで出力します。一方、\fI\-link\fRオプションを指定した場合、\fIjavadoc\fRコマンドは、指定された\fIextdocURL\fRの場所にあるpackage\-listファイルでそのパッケージ名を検索します。パッケージ名が見つかると、\fIextdocURL\fRが名前の前に付加されます。 +.PP +すべてのリンクが正しく機能するためには、外部参照のすべてのドキュメントが、指定したURLに存在する必要があります。\fIjavadoc\fRコマンドは、指定されたpackage\-listが存在するかどうかのみをチェックし、これらのページが存在するかどうかはチェックしません。 +複数のリンク.PP +複数の\fI\-link\fRオプションを指定すると、任意の数の外部生成ドキュメントへのリンクを作成できます。Javadoc 1\&.2には、複数の\fI\-link\fRオプションを指定できないという既知の不具合があります。これはJavadoc 1\&.2\&.2で修正されました。リンクする外部ドキュメントごとに、次のように別々のリンク・オプションを指定します。\fIjavadoc \-link extdocURL1 \-link extdocURL2 \&.\&.\&. \-link extdocURLn com\&.mypackage\fR +\fIextdocURL1\fR、\fIextdocURL2\fR、\&.\fI\&.\&. extdocURLn\fRは、それぞれ外部ドキュメントのルートを指し、各ルートには、package\-listという名前のファイルが入っています。 +クロスリンク.PP +以前に作成された複数のドキュメントをクロスリンクする場合、ブートストラップが必要になることがあります。どのドキュメントについてもpackage\-listが存在していない場合は、最初のドキュメントに対して\fIjavadoc\fRコマンドを実行する時点で、2番目のドキュメントのpackage\-listはまだ存在していません。したがって、外部リンクを作成するには、2番目のドキュメントを生成した後で、最初のドキュメントを生成しなおす必要があります。 +.PP +この場合、最初のドキュメント生成の目的は、package\-listを作成することです(パッケージ名を把握している場合は手動で作成してもかまいません)。次に、2番目のドキュメントとその外部リンクを生成します。必要な外部のpackage\-listファイルが存在しない場合は、\fIjavadoc\fRコマンドから警告が出力されます。 +.PP +\-linkoffline \fIextdocURL packagelistLoc\fR +.RS 4 +このオプションは\fI\-link\fRオプションのバリエーションです。両方とも、Javadocにより生成された外部参照クラスのドキュメントへのリンクを作成します。\fIjavadoc\fRコマンドがWeb接続を使用してドキュメントにアクセスできないとき、Web上のドキュメントにリンクするには、\fI\-link\fRo\fIffline\fRオプションを使用します。外部ドキュメントのpackage\-listファイルにアクセスできないとき、またはこのファイルが\fIextdocURL\fRで指定された場所には存在せず、\fIpackageListLoc\fRで指定できる別の場所(通常ローカル)に存在するとき、\fI\-linkoffline\fRオプションを使用します。\fIextdocURL\fRにWorld Wide Web上でしかアクセスできない場合は、\fI\-linkoffline\fRオプションを指定することにより、ドキュメントの生成時に\fIjavadoc\fRコマンドがWebに接続する必要があるという制約がなくなります。もう1つの用途は、ドキュメントを更新するための回避策として使用することです。パッケージのセット全体に対して\fIjavadoc\fRコマンドを実行した後、変更した一部のパッケージに対してのみ\fIjavadoc\fRコマンドを再度実行して、更新されたファイルを、オリジナルのセットに挿入できるようにします。次に例を示します。\fI\-linkoffline\fRオプションは引数を2つ取ります。第1引数は\fI<a href>\fRリンクに組み込まれる文字列を指定し、第2引数はpackage\-listの検索場所を\fI\-linkoffline\fRに伝えます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIextdocURL\fRの値は、リンク先として指定する、Javadocにより生成された外部ドキュメントを含むディレクトリの絶対URLまたは相対URLです。相対URLの場合、値は、生成先ディレクトリ(\fI\-d\fRオプションで指定)からリンク先となるパッケージのルートへの相対パスにする必要があります。詳細は、\fI\-link\fRオプションの\fIextdocURL\fRを参照してください。 .RE -.LP -1 回の javadoc 実行で複数の \f2\-linkoffline\fP オプションを指定できます。1.2.2 より前は、複数のオプションを指定することはできませんでした。 -.LP -\f3外部ドキュメントへの絶対リンクの使用例\fP \- http://download.oracle.com/javase/7/docs/api/ 内の \f2java.lang\fP、 \f2java.io\fP 、およびその他の Java SE プラットフォームパッケージ \f2にリンクしたくても、\fPWeb にアクセスできない場合を考えます。ブラウザで \f2、\fP -.na -\f2http://download.oracle.com/javase/7/docs/api/package\-list\fP @ -.fi -http://download.oracle.com/javase/7/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://download.oracle.com/javase/7/docs/api/ . com.mypackage\fP -.fl -.fi -.LP -\f3外部ドキュメントへの相対リンクの使用例\fP \- \f2\-linkoffline\fP で相対パスを使用することは、あまりありません。理由は単純で、通常は \f2\-link\fP で十分だからです。 \f2\-linkoffline\fP を使用する際、 \f2package\-list\fP には通常ローカルのファイルを指定します。 相対リンクを使用する際も、リンク先のファイルには通常ローカルのファイルを指定します。したがって、 \f2\-linkoffline の 2 つの引数に別々のパスを指定する必要はありません\fP。2 つの引数が同一である場合は、 \f2\-link\fP を使用できます。 \f2\-link\fP の相対リンクの例を参照してください。 -.LP -\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 回ずつ含めることができます。わかりやすくするために、オプションごとに改行して示しています。 -.LP -\f2% \fP\f4javadoc \-linkoffline\fP \f2extdocURL1\fP \f2packagelistLoc1\fP \f2\\\fP -.br -\f2\ \ \ \ \ \ \ \ \ \ \fP\f4\-linkoffline\fP \f2extdocURL2\fP \f2packagelistLoc2\fP \f2\\\fP -.br -\f2\ \ \ \ \ \ \ \ \ \ ...\fP -.LP -\f3ドキュメントの更新\fP \- 前述の \f2\-linkoffline\fP オプションのもうひとつの用途は、プロジェクトに大量のパッケージが含まれていて、すでにツリー全体に対して javadoc の実行が完了している場合に、次の実行では、少量の変更を手早く加えたあと、ソースツリーのごく一部に対してだけ javadoc を再実行する場合に便利です。これは、ドキュメンテーションコメントに対してだけ変更を加え、宣言は変更しない場合にのみ正しく処理されるので、ハッキングのようなものです。ソースコードの宣言を追加、削除、または変更した場合は、索引、パッケージツリー、継承されるメンバーのリスト、「使用」ページなどの場所で、リンクが壊れることがあります。 -.LP -まず、この新しい小さな実行用として、新しい生成先ディレクトリ ( \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。 -.LP -.TP 3 -\-linksource\ -各ソースファイル (行番号付き) の 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 オプションも併せて指定しないかぎり、非公開のすべてのクラスやインタフェースにリンク経由でアクセスできるとはかぎりません。 -.LP -各リンクは、その宣言内の識別子名の上に作成されます。たとえば、 \f2Button\fP クラスのソースコードへのリンクは、「Button」という語の上に作成されます。 -.nf -\f3 -.fl - public class Button -.fl - extends Component -.fl - implements Accessible -.fl -\fP -.fi -また、Button クラスの \f2getLabel()\fP メソッドのソースコードへのリンクは、「getLabel」という語の上に作成されます。 -.nf -\f3 -.fl - public String getLabel() -.fl -\fP -.fi -.LP -.TP 3 -\-group\ groupheading\ packagepattern:packagepattern:... -概要ページの複数のパッケージを、指定したグループに分けて、グループごとに表を作成します。各グループは、それぞれ別の \f2\-group\fP オプションで指定します。これらのグループは、コマンド行で指定した順序でページに表示されます。各グループ内では、パッケージがアルファベット順に並べられます。ある特定の \f2\-group\fP オプションでは、 \f2packagepattern\fP 式のリストに一致するパッケージが、 \f2groupheading\fP という見出しの表に表示されます。 -.RS 3 -.TP 2 -o -\f4groupheading\fP には、任意のテキストを指定でき、空白を含めることができます。指定したテキストは、グループの表見出しになります。 -.TP 2 -o -\f4packagepattern\fP には、任意のパッケージ名、または任意のパッケージ名の先頭部分とそれに続く 1 つのアスタリスク (\f2*\fP) を指定できます。 アスタリスクは、「任意の文字に一致する」という意味のワイルドカードです。ワイルドカードとして指定できるのは、アスタリスクだけです。1 つのグループには、コロン (\f2:\fP) で区切って複数のパターンを含めることができます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIpackagelistLoc\fRの値は、外部ドキュメントのpackage\-listファイルを含むディレクトリへのパスまたはURLです。これは、URL (http:またはfile:)でもファイル・パスでもかまいません。また、絶対パスと相対パスのどちらでもかまいません。相対パスの場合は、\fIjavadoc\fRコマンドが実行される現在のディレクトリからの相対パスとして指定します。package\-listファイル名を含めないでください。 +.sp +指定した\fIjavadoc\fRコマンドの実行で、複数の\fI\-link\fRオプションを指定できます。Javadoc 1\&.2\&.2より前では、\fI\-linkfile\fRオプションは1回しか指定できませんでした。 .RE -.LP -\f3注: パターンやパターンリスト内でアスタリスクを使う場合は、 \fP\f4"java.lang*:java.util" のように、パターンリストを引用符で囲む必要があります。\fP -.LP -ユーザーが \f2\-group\fP オプションを 1 つも指定しなかった場合、「パッケージ」という見出しの 1 つのグループ内に、すべてのパッケージが配置されます。ドキュメント化されるパッケージの中に、指定したグループのどのグループにも入らないパッケージがある場合、このようなパッケージは「その他のパッケージ」という見出しを持つ独立したグループに入れられます。 -.LP -たとえば、次のようにオプションを指定すると、ドキュメント化される 5 つのパッケージは、コアパッケージ、拡張機能パッケージ、およびその他のパッケージに分けられます。「java.lang*」では、最後のドットを指定していないことに注目してください。「java.lang.*」のようにドットを入れると、java.lang パッケージは除外されることになります。 -.nf -\f3 -.fl - % \fP\f3javadoc \-group "Core Packages" "java.lang*:java.util" -.fl - \-group "Extension Packages" "javax.*" -.fl - java.lang java.lang.reflect java.util javax.servlet java.new\fP -.fl -.fi -この結果、次のようなグループ化が行われます。 -.RS 3 -.TP 3 -コアパッケージ -\f2java.lang\fP -\f2java.lang.reflect\fP -\f2java.util\fP -.TP 3 -拡張機能パッケージ -\f2javax.servlet\fP -.TP 3 -その他のパッケージ -\f2java.new\fP .RE -.LP -.TP 3 -\-nodeprecated -推奨されない API をドキュメントに生成しないようにします。このオプションを指定すると、\-nodeprecatedlist オプションを指定した場合と同じ効果があることに加えて、ドキュメントのほかの部分全体でも、推奨されない API が生成されません。このオプションは、コードを記述しているとき、推奨されないコードによって気を散らされたくない場合に便利です。 -.LP -.TP 3 -\-nodeprecatedlist -推奨されない API のリストを含むファイル (deprecated\-list.html)、およびナビゲーションバーのそのページへのリンクが生成されないようにします。ただし、ドキュメントのほかの部分では、推奨されない API が生成されます。このオプションは、推奨されない API がソースコードに含まれておらず、ナビゲーションバーをすっきりと見せたい場合に便利です。 -.LP -.TP 3 -\-nosince -生成ドキュメントから、@since タグに対応する「導入されたバージョン」 セクションを省略します。 -.LP -.TP 3 -\-notree -生成されるドキュメントからクラスおよびインタフェースの階層ページを省略します。これらのページには、ナビゲーションバーの「ツリー」ボタンからアクセスできます。デフォルトでは、階層が生成されます。 -.LP -.TP 3 -\-noindex -生成ドキュメントから、索引を省略します。デフォルトでは、索引が生成されます。 -.LP -.TP 3 -\-nohelp -出力の各ページの最上部と最下部にあるナビゲーションバーから「ヘルプ」リンクを省略します。 -.LP -.TP 3 -\-nonavbar -生成されるページの最上部と最下部に表示されるナビゲーションバー、ヘッダー、およびフッターを生成しないようにします。このオプションは、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 Javadoc ツールは、ナビゲーションバー内のリンクを必要に応じて調整します。次に例を示します。 -.nf -\f3 -.fl - % \fP\f3javadoc \-helpfile /home/user/myhelp.html java.awt\fP -.fl -.fi -.TP 3 -\-stylesheetfile\ path/filename -代替 HTML スタイルシートファイルのパスを指定します。このオプションが指定されないと、Javadoc ツールは、ツール内でハードコードされているスタイルシートファイル \f2stylesheet.css\fP を自動作成します。このオプションを使うと、そのデフォルトの動作をオーバーライドできます。\f2filename\fP にはどんなファイル名でも指定でき、 \f2stylesheet.css には限定されません\fP。たとえば、 -.nf -\f3 -.fl - % \fP\f3javadoc \-stylesheetfile /home/user/mystylesheet.css com.mypackage\fP -.fl -.fi -.TP 3 -\-serialwarn -@serial タグがない場合は、コンパイル時に警告を生成します。デフォルトでは、Javadoc 1.2.2 以降のバージョンでは、直列化の警告は生成されません1.2.2 より前の初期バージョンでは、警告が生成されます。このオプションを使用すると、直列化の警告が表示されるので、デフォルトの直列化可能フィールドと \f2writeExternal\fP メソッドを適切にドキュメント化するのに役立ちます。 -.LP -.TP 3 -\-charset\ name -このドキュメント用の HTML 文字セットを指定します。この名前は、 -.na -\f2IANA Registry\fP @ -.fi -http://www.iana.org/assignments/character\-sets で与えられた、推奨される MIME 名でなければなりません。たとえば、 -.nf -\f3 -.fl - % \fP\f3javadoc \-charset "iso\-8859\-1" mypackage\fP -.fl -.fi -生成されるすべてのページの先頭に、次の行が挿入されます。 -.nf -\f3 -.fl - <META http\-equiv="Content\-Type" content="text/html; charset=ISO\-8859\-1"> -.fl -\fP -.fi -この META タグについては、 -.na -\f2HTML の標準\fP @ -.fi -http://www.w3.org/TR/REC\-html40/charset.html#h\-5.2.2 (4197265 および 4137321) を参照してください。 -.LP -\-encoding および \-docencoding も参照してください。 -.LP -.TP 3 -\-docencoding\ name -生成される HTML ファイルのエンコーディングを指定します。この名前は、 -.na -\f2IANA Registry\fP @ -.fi -http://www.iana.org/assignments/character\-sets で与えられた、推奨される MIME 名でなければなりません。このオプションを省略しながら \-encoding を使用した場合、生成される HTML ファイルのエンコードは、\-encoding によって決められます。例: -.nf -\f3 -.fl - % \fP\f3javadoc \-docencoding "ISO\-8859\-1" mypackage\fP -.fl -.fi -\-encoding および \-charset も参照してください。 -.LP -.TP 3 -\-keywords -HTML メタキーワードタグを、クラスごとに生成されるファイルに追加します。これらのタグは、メタタグを検索するサーチエンジンがページを見つける場合に役立ちます。インターネット全体を検索する多くのサーチエンジンは、ページがメタタグを誤用しているため、メタタグを調べません。一方、検索を自身の Web サイトに限定している企業では、サーチエンジンがメタタグを調べることによってメリットを得られます。 -.LP -メタタグには、クラスの完全修飾名と、フィールドおよびメソッドの修飾されていない名前が含まれます。コンストラクタは、クラス名と同じであるため含まれません。たとえば、クラス String は次のキーワードで開始します。 -.nf -\f3 -.fl - <META NAME="keywords" CONTENT="java.lang.String class"> -.fl - <META NAME="keywords" CONTENT="CASE_INSENSITIVE_ORDER"> -.fl - <META NAME="keywords" CONTENT="length()"> -.fl - <META NAME="keywords" CONTENT="charAt()"> -.fl -\fP -.fi -.LP -.TP 3 -\-tag\ \ tagname:Xaoptcmf:"taghead" -Javadoc ツールがドキュメンテーションコメント内の引数を 1 つ取る単純なカスタムブロックタグ \f2@\fP\f2tagname\fP を解釈できるようにします。Javadoc ツールはタグ名の「スペルチェック」を行うことができるので、ソースコード内に存在するすべてのカスタムタグについて、 \f2\-tag\fP オプションを含めることが重要です。今回の実行では出力されないタグは、X を付けて無効 \f2にします\fP。 -.LP -コロン (\f4:\fP) が常に区切り文字になります。tagname \f2でコロンを使用する方法については、\fP 「タグ名でのコロンの使用」を参照してください。 -.LP -\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 (タグの無効化) -.br -\f4a\fP (すべて) -.br -\f4o\fP (概要) -.br -\f4p\fP (パッケージ) -.br -\f4t\fP (型、つまりクラスとインタフェース) -.br -\f4c\fP (コンストラクタ) -.br -\f4m\fP (メソッド) -.br -\f4f\fP (フィールド) -.LP -\f3シングルタグの例\fP \- ソースコード内の任意の位置で使用できるタグのタグオプションの例を示します。 -.nf -\f3 -.fl - \-tag todo:a:"To Do:" -.fl -\fP -.fi -@todo をコンストラクタ、メソッド、フィールドのみで使用する場合は、以下のオプションを使用します。 -.nf -\f3 -.fl - \-tag todo:cmf:"To Do:" -.fl -\fP -.fi -上の例の最後のコロン (\f2:\fP) は、パラメータ区切り子ですが、見出しテキストの一部になっています (以下の例を参照)。次の例のように、 \f2@todo\fP タグを含むソースコードでは、いずれかのタグオプションを使用します。 -.nf -\f3 -.fl - @todo The documentation for this method needs work. -.fl -\fP -.fi -\f3タグ名にコロンを使用する\fP \- コロン (:) をバックスラッシュでエスケープすると、コロンをタグ名に使用することができます。このドキュメンテーションコメントの中では、次のように使用します。 -.nf -\f3 -.fl - /** -.fl - * @ejb:bean -.fl - */ -.fl -\fP -.fi -でこのタグオプションを使用すると、 -.nf -\f3 -.fl - \-tag ejb\\\\:bean:a:"EJB Bean:" -.fl -\fP -.fi -\f3タグ名のスペルチェック (タグの無効化)\fP \- ソースコード内に配置した一部のカスタムタグの出力を抑制したい場合があります。この場合も、ソースコード内にすべてのタグを配置し、出力を抑制しないタグを有効にし、出力を抑制するタグを無効にします。 \f2X\fP が存在する場合はタグが無効になり、存在しない場合はタグが有効になります。これにより、Javadoc ツールは、検出したタグが入力ミスなどによる未知のタグであるかどうかを特定できます。未知のタグを検出した場合、Javadoc ツールは警告を出力します。 -.LP -すでに配置されている値に \f2X\fP を追加できます。こうしておけば、 \f2X を削除するだけでタグを有効にすることができます\fP。たとえば、@todo タグの出力を抑制したい場合、次のように指定します。 -.nf -\f3 -.fl - \-tag todo:Xcmf:"To Do:" -.fl -\fP -.fi -さらに単純な指定方法もあります。 -.nf -\f3 -.fl - \-tag todo:X -.fl -\fP -.fi -.LP -構文 \f2\-tag todo:X\fP は、 \f2@todo\fP がタグレットで定義されていても有効です。 -.LP -\f3タグの順序\fP \- \f2\-tag\fP (および \f2\-taglet\fP) オプションの順序によって、タグの出力順が決まります。カスタムタグと標準タグを組み合わせて使用することもできます。標準タグのタグオプションは、順序を決定するためだけのプレースホルダです。これらは標準タグ名のみを使用します。(標準タグの小見出しは変更できません。)これについては、以下の例で説明します。 -.LP -\f2\-tag\fP が存在しない場合は、 \f2\-taglet\fP の位置によってその順序が決まります。タグが両方とも存在する場合、コマンド行の最後にあるほうがその順序を決定します。これは、タグやタグレットがコマンド行に指定された順番に処理されるためです。たとえば、 \f2\-taglet\fP と \f2\-tag\fP の両方が todo という名前を持っている場合、コマンド行の最後にあるほうが順序を決定します。 -.LP -\f3タグの完全セットの例\fP \- この例では、出力の「Parameters」と「Throws」の間に「To Do」を挿入します。X を使用して、@example が、ソースコード内の今回の実行では出力されないタグであることを指定します。@argfile を使用する場合は、次のように、引数ファイル内の別々の行にタグを配置できます。行の継続を示す文字は不要です。 -.nf -\f3 -.fl - \-tag param -.fl - \-tag return -.fl - \-tag todo:a:"To Do:" -.fl - \-tag throws -.fl - \-tag see -.fl - \-tag example:X -.fl -\fP -.fi -.LP -javadoc がドキュメンテーションコメントを解析する際に検索されたタグのうち、標準タグでも、 \f2\-tag\fP や \f2\-taglet\fP で渡されたタグでもないものはすべて未知のタグとみなされ、警告がスローされます。 -.LP -標準タグは、最初、デフォルトの順序でリスト内に内部的に格納されます。 \f2\-tag\fP オプションを使用すると、このリストに追加されるタグ、すなわち標準タグの位置がデフォルトの位置から移動します。つまり、標準タグに \f2\-tag\fP オプションを付けなければ、これらはデフォルトの位置に配置されたままになります。 -.LP -\f3競合の回避\fP \- 固有の名前空間を細かく分けるには、パッケージに使用されている \f2com.mycompany.todo という名前のように、ドット (.) を区切り記号とする名前を使います\fP。Oracle は、今後も名前にドットを含まない標準タグを作成します。ユーザーが作成したタグは、Oracle が提供する同じ名前のタグの動作をオーバーライドします。つまり、 \f2@todo\fP という名前のタグまたはタグレットをユーザーが作成した場合、Oracle がその後同じ名前の標準タグを作成したとしても、その動作は常にユーザーが定義した動作と同じになります。 -.LP -\f3注釈 vs. Javadoc タグ\fP \- 一般に、追加する必要のあるマークアップが、ドキュメンテーションに影響を与えたりドキュメンテーションを生成したりするためのものである場合、そのマークアップは javadoc タグにすべきです。それ以外の場合は注釈にすべきです。 -.na -\f2「Comparing Annotations and Javadoc Tags」\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#annotationsを参照してください。 -.LP -\-taglet オプションを使用して、より複雑なブロックタグやカスタムインラインタグを 作成することができます。 -.LP -.TP 3 -\-taglet\ \ class -そのタグのドキュメントの生成に使うドックレットを起動するためのクラスファイルを指定します。クラスの完全指定名を指定してください。このタグレットは、カスタムタグのテキスト引数の数も定義します。タグレットは、これらの引数を受け付け、処理し、出力を生成します。外部ドキュメントとサンプルタグレットについては、以下を参照してください。 -.RS 3 -.TP 2 -o -.na -\f2「タグレットの概要」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/taglet/overview.html +外部ドキュメントへの絶対リンク.PP +http://docs\&.oracle\&.com/javase/8/docs/api/index\&.htmlに示すような、\fIjava\&.lang\fR、 +\fIjava\&.io\fRおよびその他のJava SEパッケージにリンクする必要がある場合があります。 +.PP +ただし、シェルにはWebアクセス権がありません。この場合、次を行います。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +ブラウザでpackage\-listファイルを開きます(http://docs\&.oracle\&.com/javase/8/docs/api/package\-list) .RE -.LP -タグレットは、ブロックタグまたはインラインタグで便利です。タグレットは任意の数の引数をとることができます。また、テキストを太字にする、箇条書きを作成する、テキストをファイルに書き出す、その他のプロセスを開始するなどのカスタム動作を実装できます。 -.LP -タグレットで指定できるのは、タグの配置場所と配置形式のみです。その他のすべての決定は、ドックレットによって行われます。タグレットを使用しても、包含クラスのリストからクラス名を削除するなどの処理は実行できません。ただし、タグのテキストをファイルに出力したり、別のプロセスをトリガーするなどの副作用は得られます。 -.LP -タグレットのパスを指定するには、\f2\-tagletpath\fP オプションを使用します。以下は、生成されるページの「Parameter」と「Throws」の間に「To Do」タグレットを挿入する例です。 -.nf -\f3 -.fl - \-taglet com.sun.tools.doclets.ToDoTaglet -.fl - \-tagletpath /home/taglets -.fl - \-tag return -.fl - \-tag param -.fl - \-tag todo -.fl - \-tag throws -.fl - \-tag see -.fl -\fP -.fi -.LP -また、 \f2\-taglet\fP オプションを \f2\-tag\fP オプションの代わりに使用することもできますが、そうすると可読性が低下する可能性があります。 -.LP -.TP 3 -\-tagletpath\ \ tagletpathlist -taglet クラスファイル (.class) の検索パスを指定します。\f2tagletpathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパス以下のすべてのサブディレクトリを検索します。 -.LP -.TP 3 -\-docfilessubdirs\ -「\f2doc\-files\fP」ディレクトリの深いコピーを有効にします。つまり、コピー先には、サブディレクトリとすべてのコンテンツがコピーされます。たとえば、ディレクトリ \f2doc\-files/example/images\fP とそのすべての内容がコピーされます。ここでも、サブディレクトリを除外する指定が可能です。 -.LP -.TP 3 -\-excludedocfilessubdir\ \ name1:name2... -「\f2doc\-files\fP」の、指定された名前のサブディレクトリをすべて除外します。これにより、SCCS とその他のソースコード制御サブディレクトリのコピーを防ぎます。 -.LP -.TP 3 -\-noqualifier\ \ all\ | \ packagename1:packagename2:... -出力されるクラス名の先頭のパッケージ名 (パッケージ修飾子) を省略します。 \f2\-noqualifier\fP の引数は、「\f2all\fP」(すべてのパッケージ修飾子が省略される)、修飾子として削除すべきパッケージのコロン区切りリスト (ワイルドカードも可)、のいずれかとなります。クラスまたはインタフェース名が表示される位置からパッケージ名が削除されます。 -.LP -次の例では、すべてのパッケージ修飾子を省略します。 -.nf -\f3 -.fl - \-noqualifier all -.fl -\fP -.fi -次の例では、パッケージ修飾子 java.lang および java.io を省略します。 -.nf -\f3 -.fl - \-noqualifier java.lang:java.io -.fl -\fP -.fi -次の例では、java で始まるパッケージ修飾子と com.sun というサブパッケージ (javax ではない) を省略します。 -.nf -\f3 -.fl - \-noqualifier java.*:com.sun.* -.fl -\fP -.fi -パッケージ修飾子が上記の動作に従って表示される場合、名前は適切に短くされます。詳細は「名前の表示方法」を参照してください。この規則は、 \f2\-noqualifier\fP を使用するかどうかにかかわらず有効です。 -.LP -.TP 3 -\-notimestamp\ -タイムスタンプが抑制されます。各ページ先頭近くにある、生成された HTML 内の HTML コメントでタイムスタンプが隠されます。Javadoc を 2 つのソースベースで実行し、それらに対して diff を実行するときにこのオプションを使用すると、タイムスタンプによって diff が発生しなくなるので便利です (このオプションを使用しないと、各ページで diff になります)。タイムスタンプには Javadoc のバージョン番号が含まれており、次のようになります。 -.nf -\f3 -.fl - <!\-\- Generated by javadoc (build 1.5.0_01) on Thu Apr 02 14:04:52 IST 2009 \-\-> -.fl -\fP -.fi -.LP -.TP 3 -\-nocomment\ -主説明およびすべてのタグを含むコメント本文全体を抑制し、宣言だけを生成します。このオプションにより、元は異なる目的のためだったソースファイルを再利用し、新しいプロジェクトの早い段階でスケルトン HTML ドキュメントを作成できるようになりました。 -.LP -.TP 3 -\-sourcetab tabLength -ソース内で各タブが獲得する空白の数を指定します。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +ファイルをローカル・ディレクトリに保存し、このローカル・コピーを第2引数\fIpackagelistLoc\fRで指定します。この例では、パッケージ・リスト・ファイルはカレント・ディレクトリ(\&.)に保存されています。 .RE -.SH "コマンド行引数ファイル" -.LP -javadoc のコマンド行を短くしたり簡潔にしたりするために、 \f2javadoc\fP コマンドに対する引数 ( \f2\-J\fP オプションを除く) が入った 1 つ以上のファイルを指定することができます。このことを利用すれば、どのオペレーティングシステム上でも、任意の長さの javadoc コマンドを作成できます。 -.LP -引数ファイルには、javac のオプションとソースファイル名を自由に組み合わせて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に空白が含まれている場合は、そのファイル名全体を二重引用符で囲みます。 -.LP -引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。引数ファイル内のファイル名リストでは、ワイルドカード (*) は使用できません。たとえば、 \f2*.java\fP とは指定できません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、 \f2\-J\fP オプションもサポートされていません。 このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 -.LP -javadoc を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。javadoc は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 -.SS -引数ファイルを 1 つ指定する例 -.LP -次のように、「\f2argfile\fP」という名前の単一の引数ファイル内に、Javadoc のすべての引数を格納します。 +.PP +次のコマンドは、Java SEプラットフォーム・パッケージへのリンクを持つc\fIom\&.mypackage\fRパッケージのドキュメントを生成します。生成ドキュメントには、たとえばクラス\fItrees\fR内の\fIObject\fRクラスへのリンクが含まれています。\fI\-sourcepath\fRなど、他の必要なオプションは表示されません。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc @argfile\fP -.fl +javadoc \-linkoffline http://docs\&.oracle\&.com/javase/8/docs/api/ \&. com\&.mypackage .fi -.LP -この引数ファイルには、次の例で示されている 2 つのファイルの内容を両方とも入れることができます。 -.SS -引数ファイルを 2 つ指定する例 -.LP -2 つの引数ファイルを作成できます。1 つは Javadoc オプション用、もう 1 つはパッケージ名またはソースファイル名用です。なお、次のリストでは行継続文字を使用していません。 -.LP -次の内容を含む、「\f2options\fP」という名前のファイルを作成します。 +.if n \{\ +.RE +.\} +外部ドキュメントへの相対リンク.PP +\fI\-linkoffline\fRを相対パスとともに使用することはあまりありません。理由は単純で、通常は\fI\-link\fRで間に合うからです。\fI\-linkoffline\fRオプションを使用する場合、通常、package\-listファイルはローカルで、相対リンクを使用する場合はリンク先のファイルもローカルなので、通常は\fI\-linkoffline\fRオプションの2つの引数に、異なるパスを指定する必要はありません。2つの引数が同一の場合、\fI\-link\fRオプションを使用できます。 +package\-listファイルの手動での作成.PP +package\-listファイルがまだ存在しなくても、ドキュメントのリンク先のパッケージ名がわかっている場合は、このファイルのコピーを手動で作成し、\fIpackagelistLoc\fRでそのパスを指定することができます。\fIcom\&.apipackage\fRが最初に生成された時点で\fIcom\&.spipackage\fRのパッケージ・リストが存在しないという前出のケースが一例として挙げられます。この方法は、パッケージ名はわかっているものの、まだ公開されていない、新しい外部ドキュメントにリンクするドキュメントを生成する必要がある場合に便利です。また、package\-listファイルが生成されないJavadoc 1\&.0または1\&.1で生成されたパッケージ用にpackage\-listファイルを作成する場合にも、この方法が使用できます。同様に、2つの企業が未公開のpackage\-listファイルを共有できるため、クロスリンクを設定したドキュメントを同時にリリースすることも可能になります。 +複数ドキュメントへのリンク.PP +参照先の生成ドキュメントごとに1回、\fI\-linkoffline\fRオプションを含めることができます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \-d docs\-filelist -.fl - \-use -.fl - \-splitindex -.fl - \-windowtitle 'Java SE 7 API Specification' -.fl - \-doctitle 'Java SE 7 API Specification' -.fl - \-header '<b>Java(TM) SE 7</b>' -.fl - \-bottom 'Copyright © 1993\-2011 Oracle and/or its affiliates. All rights reserved.' -.fl - \-group "Core Packages" "java.*" -.fl - \-overview /java/pubs/ws/1.7.0/src/share/classes/overview\-core.html -.fl - \-sourcepath /java/pubs/ws/1.7.0/src/share/classes -.fl -\fP +javadoc \-linkoffline extdocURL1 packagelistLoc1 \-linkoffline extdocURL2 +packagelistLoc2 \&.\&.\&. .fi -.LP -次の内容を含む、「\f2packages\fP」という名前のファイルを作成します。 +.if n \{\ +.RE +.\} +ドキュメントの更新.PP +プロジェクトに何十または何百のパッケージが含まれる場合にも、\fI\-linkoffline\fRオプションを使用できます。ソース・ツリー全体ですでに\fIjavadoc\fRコマンドを実行したことがある場合、ドキュメンテーション・コメントにわずかな変更を迅速に加え、ソース・ツリーの一部で\fIjavadoc\fRコマンドを再実行することができます。2回目の実行は、ドキュメンテーション・コメントを変更し、宣言は変更しない場合にのみ正しく処理されることに注意してください。ソース・コードに対して宣言を追加、削除、または変更した場合は、索引、パッケージ・ツリー、継承されるメンバーのリスト、使用ページなどの場所で、リンクが壊れることがあります。 +.PP +まず、この新しい小規模な実行で使用する、新しい生成先ディレクトリ(updateなど)を作成します。この例では、元の生成先ディレクトリの名前はhtmlです。最も単純な例では、htmlディレクトリの親ディレクトリに移動します。\fI\-linkoffline\fRオプションの第1引数にカレント・ディレクトリ(\&.)を設定し、第2引数にpackage\-listが検索されるhtmlへの相対パスを設定し、更新するパッケージのパッケージ名のみを渡します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - com.mypackage1 -.fl - com.mypackage2 -.fl - com.mypackage3 -.fl -\fP +javadoc \-d update \-linkoffline \&. html com\&.mypackage .fi -.LP -そのあと、次のコマンドを使用して javadoc を実行します。 +.if n \{\ +.RE +.\} +.PP +\fIjavadoc\fRコマンドの終了後、update/com/package内の生成されたクラスのページをコピーし(概要や索引は除く)、html/com/package内の元のファイルに上書きします。 +.PP +\-linksource +.RS 4 +各ソース・ファイル(行番号付き)のHTMLバージョンを作成し、標準HTMLドキュメントからソース・ファイルへのリンクを追加します。リンクは、ソース・ファイル内に宣言されているクラス、インタフェース、コンストラクタ、メソッド、フィールドに対して作成されます。そうでない場合、たとえばデフォルト・コンストラクタや生成されたクラスに対しては、リンクは作成されません。 +.sp +このオプションは、\fI\-public\fR、\fI\-package\fR、\fI\-protected\fRおよび\fI\-private\fRの各オプションとは関係なく、非公開のクラス、フィールド、非公開のメソッドの本体をはじめとする組み込まれたソース・ファイル内のすべての非公開実装の詳細を公開します。\fI\-private\fRオプションもあわせて指定しないかぎり、非公開のクラスやインタフェースの一部には、リンクを介してアクセスできないことがあります。 +.sp +各リンクは、その宣言内の識別子名の上に作成されます。たとえば、\fIButton\fRクラスのソース・コードへのリンクは、\fIButton\fRという語の上に作成されます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc @options @packages\fP -.fl +public class Button extends Component implements Accessible .fi -.SS -パス付きの引数ファイルの例 -.LP -引数ファイルには、パスを指定できます。ただし、そのファイル内に指定されたファイル名は、現在の作業ディレクトリから見た相対パスになります。つまり、下の例の場合は、 \f2path1\fP や \f2path2\fP から見た相対パスではありません。 +.if n \{\ +.RE +.\} +\fIButton\fRクラスの\fIgetLabel\fRメソッドのソース・コードへのリンクは、\fIgetLabel\fRという語の上に作成されます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc @path1/options @path2/packages\fP -.fl +public String getLabel() .fi -.SS -オプションの引数の例 -.LP -次に、Javadoc オプションに対する引数だけを引数ファイルに格納する例を示します。ここでは \f2\-bottom\fP オプションを使用します。というのも、引数が長くなる可能性があるからです。次のようなテキスト引数を含む、「\f2bottom\fP」という名前のファイルを作成できます。 +.if n \{\ +.RE +.\} +.RE +.PP +\-group groupheading \fIpackagepattern:packagepattern\fR +.RS 4 +概要ページの複数のパッケージを、指定したグループに分けて、グループごとに表を作成します。各グループは、それぞれ別の\fI\-group\fRオプションで指定します。グループは、コマンド行で指定された順序でページに表示されます。パッケージは、グループ内でアルファベット順になっています。指定した\fI\-group\fRオプションでは、\fIpackagepattern\fR式のリストに一致するパッケージが、見出しとして\fIgroupheading\fRを持つ1つの表に表示されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIgroupheading\fRには、任意のテキストを指定でき、空白を含めることができます。指定したテキストは、グループの表見出しになります。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIpackagepattern\fRの値には、任意のパッケージ名の先頭部分とそれに続く1つのアスタリスク(*)で任意のパッケージ名を指定できます。アスタリスクは使用できる唯一のワイルドカードで、任意の文字に一致する、という意味です。1つのグループには、コロン(:)で区切って複数のパターンを含めることができます。パターンまたはパターン・リストでアスタリスクを使用する場合、パターン・リストは\fI"java\&.lang*:java\&.util"\fRのように引用符で囲む必要があります。 +.RE +.sp +\fI\-group\fRオプションを指定しない場合は、見出し\fIPackages\fRおよび適切な小見出しを持つ1つのグループに配置されます。小見出しにすべてのドキュメント化されるパッケージ(すべてのグループ)が含まれるわけではない場合、残りのパッケージは「その他のパッケージ」というサブ見出しを持つ独立したグループに入れられます。 +.sp +たとえば、次の\fIjavadoc\fRコマンドでは、3つのドキュメント化されたパッケージが\fI「コア」\fR、\fI「拡張」\fRおよび\fI「その他のパッケージ」\fRに分けられます。\fIjava\&.lang*\fRでは、最後のドット(\&.)を指定していません。\fIjava\&.lang\&.*\fRのようにドットを入れると、\fI java\&.lang\fRパッケージは除外されることになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-group "Core Packages" "java\&.lang*:java\&.util" + \-group "Extension Packages" "javax\&.*" + java\&.lang java\&.lang\&.reflect java\&.util javax\&.servlet java\&.new +.fi +.if n \{\ +.RE +.\} +\fBコア・パッケージ\fR +.sp +\fIjava\&.lang\fR +.sp +\fIjava\&.lang\&.reflect\fR +.sp +\fIjava\&.util\fR +.sp +\fB拡張機能パッケージ\fR +.sp +\fIjavax\&.servlet\fR +.sp +\fBOther Packages\fR +.sp +\fIjava\&.new\fR +.RE +.PP +\-nodeprecated +.RS 4 +非推奨のAPIをドキュメントに生成しないようにします。このオプションを指定すると、\fI\-nodeprecatedlist\fRオプションを指定した場合と同じ効果があり、ドキュメントの他の部分全体でも、非推奨のAPIが生成されません。このオプションは、コードを記述しているとき、非推奨のコードによって気を散らされたくない場合に便利です。 +.RE +.PP +\-nodeprecatedlist +.RS 4 +非推奨のAPIのリストを含むファイル(deprecated\-list\&.html)、およびナビゲーション・バーのそのページへのリンクが生成されないようにします。\fIjavadoc\fRコマンドでは、引き続き、ドキュメントの他の部分では、非推奨のAPIが生成されます。このオプションは、非推奨のAPIがソース・コードに含まれておらず、ナビゲーション・バーをすっきりと見せる場合に便利です。 +.RE +.PP +\-nosince +.RS 4 +生成ドキュメントから、\fI@since\fRタグに関連付けられた\fI「導入されたバージョン」\fRセクションを省略します。 +.RE +.PP +\-notree +.RS 4 +生成ドキュメントから、クラスおよびインタフェースの階層ページを省略します。これらのページには、ナビゲーション・バーの「階層ツリー」ボタンからアクセスできます。デフォルトでは、階層が生成されます。 +.RE +.PP +\-noindex +.RS 4 +生成ドキュメントから、索引を省略します。デフォルトでは、索引が生成されます。 +.RE +.PP +\-nohelp +.RS 4 +出力の各ページの最上部と最下部にあるナビゲーション・バーから「ヘルプ」リンクを省略します。 +.RE +.PP +\-nonavbar +.RS 4 +通常、生成されるページの最上部と最下部に表示されるナビゲーション・バー、ヘッダー、およびフッターを生成しないようにします。\fI\-nonavbar\fRオプションは\fI\-bottom\fRオプションに影響を与えません。\fI\-nonavbar\fRオプションは、印刷するためにのみファイルをPostScriptやPDFに変換する場合など、内容のみが重要で、ナビゲーションの必要がない場合に便利です。 +.RE +.PP +\-helpfile \fIpath\efilename\fR +.RS 4 +最上部および最下部のナビゲーション・バーの「ヘルプ」リンクのリンク先となる代替ヘルプ・ファイルpath\efilenameのパスを指定します。このオプションが指定されていないと、\fIjavadoc\fRコマンドは、\fIjavadoc\fRコマンド内でハードコードされているヘルプ・ファイルhelp\-doc\&.htmlを自動作成します。このオプションを使用すると、デフォルトをオーバーライドできます。ファイル名にはどんな名前でも指定でき、help\-doc\&.htmlに限定されません。\fIjavadoc\fRコマンドは、次の例のように、ナビゲーション・バー内のリンクを必要に応じて調整します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-helpfile /home/user/myhelp\&.html java\&.awt\&. +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-stylesheet \fIpath/filename \fR +.RS 4 +代替HTMLスタイルシート・ファイルのパスを指定します。このオプションが指定されていないと、\fIjavadoc\fRコマンドは、\fIjavadoc\fRコマンド内でハードコードされているスタイルシート・ファイルstylesheet\&.cssを自動作成します。このオプションを使用すると、デフォルトをオーバーライドできます。ファイル名にはどんな名前でも指定でき、stylesheet\&.cssに限定されません。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-stylesheet file /home/user/mystylesheet\&.css com\&.mypackage +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-serialwarn +.RS 4 +\fI@serial\fRタグがない場合は、コンパイル時に警告を生成します。デフォルトでは、Javadoc 1\&.2\&.2以降では、直列化の警告は生成されません。以前のリリースとは逆の動作です。このオプションを使用すると、直列化の警告が表示されるので、デフォルトの直列化可能フィールドと\fIwriteExternal\fRメソッドを適切にドキュメント化するのに役立ちます。 +.RE +.PP +\-charset \fIname\fR +.RS 4 +このドキュメント用のHTML文字セットを指定します。この名前は、IANA RegistryのCharacter Sets +(http://www\&.iana\&.org/assignments/character\-sets)に示された、優先MIME名である必要があります。 +.sp +たとえば、\fIjavadoc \-charset "iso\-8859\-1" mypackage\fRは次の行を生成された各ページのヘッダーに挿入します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +<META http\-equiv="Content\-Type" content="text/html; charset=ISO\-8859\-1"> +.fi +.if n \{\ +.RE +.\} +この\fIMETA\fRタグは、HTML標準(4197265および4137321)のHTML Document Representation +(http://www\&.w3\&.org/TR/REC\-html40/charset\&.html#h\-5\&.2\&.2)に記載されています。 +.sp +およびオプションも参照してください。 +.RE +.PP +\-docencoding \fIname\fR +.RS 4 +生成されるHTMLファイルのエンコーディングを指定します。この名前は、IANA RegistryのCharacter Sets +(http://www\&.iana\&.org/assignments/character\-sets)に示された、優先MIME名である必要があります。 +.sp +\fI\-docencoding\fRオプションを省略し、\fI\-encoding\fRオプションを使用すると、生成されたHTMLファイルの暗号化は\fI\-encoding\fRオプションで特定されます。例: +\fIjavadoc \-docencoding"iso\-8859\-1" mypackage\fRおよびオプションも参照してください。 +.RE +.PP +\-keywords +.RS 4 +HTMLキーワード<META>タグを、クラスごとに生成されるファイルに追加します。これらのタグは、<META>タグを検索するサーチ・エンジンがページを見つける場合に役立ちます。インターネット全体を検索する検索エンジンのほとんどは<META>タグを参照しません。ページが誤用している可能性があるからです。自身のWebサイトへの検索を制限する、企業により提供される検索エンジンは、<META>タグを参照することで恩恵を受けることができます。<META>タグには、クラスの完全修飾名と、フィールドおよびメソッドの修飾されていない名前が含まれます。コンストラクタは、クラス名と同じであるため含まれません。たとえば、クラス\fIString\fRは次のキーワードで開始します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +<META NAME="keywords" CONTENT="java\&.lang\&.String class"> +<META NAME="keywords" CONTENT="CASE_INSENSITIVE_ORDER"> +<META NAME="keywords" CONTENT="length()"> +<META NAME="keywords" CONTENT="charAt()"> +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-tag \fItagname\fR:Xaoptcmf:"\fItaghead\fR" +.RS 4 +\fIjavadoc\fRコマンドがドキュメンテーション・コメント内の引数を1つ取る単純なカスタム・ブロック・タグ\fI@tagname\fRを解釈できるようにします。これにより、\fIjavadoc\fRコマンドはタグ名のスペルチェックを行うことができるので、ソース・コード内に存在するすべてのカスタム・タグについて、\fI\-tag\fRオプションを組み込むことが重要です。今回の実行では出力されないタグは、\fIX\fRを付けて無効にします。\fI\-tag\fRオプションは、タグの見出し\fItaghead\fRを太字で出力します。その次の行には、このオプションの1つの引数で指定したテキストが続きます。ブロック・タグと同様、この引数のテキストにはインライン・タグを含めることができます。このインライン・タグも解釈されます。出力は、引数を1つ取る標準のタグ(\fI@return\fRや\fI@author\fRなど)の出力とよく似ています。\fItaghead\fRの値を省略すると、\fItagname\fRが見出しとして表示されます。 +.sp +\fBタグの配置\fR: +\fIXaoptcmf\fR引数により、ソース・コード内でタグを配置できる場所が決まり、タグを無効にできるかどうか(\fIX\fRを使用して)が決まります。タグの配置位置を制限しない場合は\fIa\fRを指定します。それ以外の文字の組合せも可能です。 +.sp +\fIX\fR +(タグの無効化) +.sp +\fIa\fR +(すべて) +.sp +\fIo\fR +(概要) +.sp +\fIp\fR +(パッケージ) +.sp +\fIt\fR +(タイプ、つまりクラスとインタフェース) +.sp +\fIc\fR +(コンストラクタ) +.sp +\fIm\fR +(メソッド) +.sp +\fIf\fR +(フィールド) +.sp +\fBシングル・タグの例\fR: ソース・コード内の任意の位置で使用できるタグのタグ・オプションの例を示します。\fI\-tag todo:a:"To Do:"\fR +.sp +\fI@todo\fRタグをコンストラクタ、メソッドおよびフィールドとのみ使用する場合、\fI\-tag todo:cmf:"To Do:"\fRを使用します。 +.sp +最後のコロン(:)は、パラメータ区切り文字ではなく、見出しテキストの一部になっています。\fI@todo\fRタグを含む、ソース・コード用のいずれかのタグ・オプションを使用します。たとえば、\fI@todo The documentation for this method needs work\fRです。 +.sp +\fBタグ名内のコロン\fR: タグ名内でコロンを使用する場合はバックスラッシュを使用してエスケープします。次のドキュメンテーション・コメントには、\fI\-tag ejb\e\e:bean:a:"EJB Bean:"\fRオプションを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * @ejb:bean + */ +.fi +.if n \{\ +.RE +.\} +\fBタグ名のスペルチェック\fR: 一部の開発者が必ずしも出力しないカスタム・タグをソース・コード内に配置することがあります。この場合、ソース・コード内のすべてのタグをリストし、出力するタグを有効にし、出力しないタグを無効にする必要があります。\fIX\fRを指定するとタグは無効になります。指定しないと、タグは有効になります。これにより、\fIjavadoc\fRコマンドは、検出したタグが入力ミスなどによる不明タグであるかどうかを特定できます。このような場合に、\fIjavadoc\fRコマンドから警告が出力されます。すでに配置されている値に\fIX\fRを追加できます。こうしておけば、\fIX\fRを削除するのみでタグを有効にすることができます。たとえば、\fI@todo\fRタグを出力で抑制する場合、\fI\-tag todo:Xcmf:"To Do:"\fRを使用します。さらに簡単にする場合、\fI\-tag todo:X\fRを使用します。構文\fI\-tag todo:X\fRは、\fI@todo\fRタグがタグレットで定義されていても機能します。 +.sp +\fBタグの順序\fR: +\fI\-ta\fR\fIg\fRおよび\fI\-taglet\fRオプションの順序によって、タグの出力順が決まります。カスタム・タグと標準タグを組み合せて使用することもできます。標準タグのタグ・オプションは、順序を決定するためだけのプレースホルダです。標準タグの名前のみを取ります。標準タグの小見出しは変更できません。これを次の例に示します。\fI\-tag\fRオプションを指定しないと、\fI\-tagle\fR\fIt\fRオプションの位置により、順序が決まります。タグが両方とも存在する場合、コマンドラインの最後にある方がその順序を決定します。これは、タグやタグレットがコマンドラインに指定された順番に処理されるためです。たとえば、\fI\-taglet\fRおよび\fI\-tag\fRオプションが名前\fItodo\fR値を持つ場合、コマンドラインに最後に指定されたものが順序を決定します。 +.sp +\fBタグの完全セットの例\fR: この例では、出力のParametersとThrowsの間にTo Doを挿入します。\fIX\fRを使用して、\fI@example\fRタグが、ソース・コード内の今回の実行では出力されないタグであることも指定します。\fI@argfile\fRタグを使用する場合は、次のように、引数ファイル内の別々の行にタグを配置できます(行の継続を示す文字は不要)。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-tag param +\-tag return +\-tag todo:a:"To Do:" +\-tag throws +\-tag see +\-tag example:X +.fi +.if n \{\ +.RE +.\} +\fIjavadoc\fRコマンドがドキュメンテーション・コメントを解析する際に検索されたタグのうち、標準タグでも、\fI\-tag\fRや\fI\-taglet\fRオプションで渡されたタグでもないものはすべて不明タグとみなされ、警告がスローされます。 +.sp +標準タグは、最初、デフォルトの順序でリスト内に内部的に格納されます。\fI\-tag\fRオプションを使用すると、それらのタグはこのリストに追加されます。標準タグは、デフォルトの位置から移動されます。そのため、標準タグの\fI\-tag\fRオプションを省略すると、それはデフォルトの位置に配置されたままになります。 +.sp +\fB競合の回避\fR: 固有の名前空間を作成するには、パッケージに使用されている\fIcom\&.mycompany\&.todo\fRという名前のように、ドットで区切られた名前を使用します。Oracleは、今後も名前にドットを含まない標準タグを作成します。ユーザーが作成したタグは、Oracleが定義する同じ名前のタグの動作をオーバーライドします。\fI@todo\fRという名前のタグまたはタグレットをユーザーが作成した場合、その後にOracleが同じ名前の標準タグを作成しても、そのタグまたはタグレットは常にユーザーが定義したのと同じ動作を保持します。 +.sp +\fB注釈vs\&. Javadocタグ\fR: 一般に、追加する必要のあるマークアップが、ドキュメントに影響を与えたりドキュメントを生成したりするためのものである場合、そのマークアップはJavadocタグにします。それ以外の場合は注釈にします。JavadocツールでのDocコメントの記述方法のカスタム・タグと注釈に関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#annotations)を参照してください。 +.sp +\fI\-taglet\fRオプションを使用して、より複雑なブロック・タグやカスタム・インライン・タグも作成できます。 +.RE +.PP +\-taglet \fIclass\fR +.RS 4 +そのタグのドキュメントの生成に使用するドックレットを起動するためのクラス・ファイルを指定します。\fIclass\fR値の完全修飾名を使用します。このタグレットは、カスタム・タグのテキスト引数の数も定義します。タグレットは、これらの引数を受け付け、処理し、出力を生成します。タグレットの例を使用した豊富なドキュメントについては、タグレットの概要 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/taglet/overview\&.html)を参照してください。 +.sp +タグレットは、ブロックタグまたはインライン・タグで便利です。タグレットは任意の数の引数をとることができます。また、テキストを太字にする、箇条書きを作成する、テキストをファイルに書き出す、その他のプロセスを開始するなどのカスタム動作を実装できます。タグレットで指定できるのは、タグの配置場所と配置形式のみです。その他のすべての決定は、ドックレットによって行われます。タグレットを使用しても、包含クラスのリストからクラス名を削除するなどの処理は実行できません。ただし、タグのテキストをファイルに出力したり、別のプロセスをトリガーするなどの副作用は得られます。タグレットへのパスを指定するには、\fI\-tagletpath\fRオプションを使用します。次に、生成されるページのParametersとThrowsの間にTo Doタグレットを挿入する例を示します。または、\fI\-taglet\fRオプションをその\fI\-tag\fRオプションのかわりに使用することができますが、読み取りが困難になる可能性があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-taglet com\&.sun\&.tools\&.doclets\&.ToDoTaglet +\-tagletpath /home/taglets +\-tag return +\-tag param +\-tag todo +\-tag throws +\-tag see +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-tagletpath \fItagletpathlist\fR +.RS 4 +tagletクラス・ファイルを検索するための検索パスを指定します。\fItagletpathlist\fRには、コロン(:)で区切って複数のパスを含めることができます。\fIjavadoc\fRコマンドは、指定されたパス以下のすべてのサブディレクトリを検索します。 +.RE +.PP +\-docfilesubdirs +.RS 4 +doc\-filesディレクトリのディープ・コピーを有効にします。宛先には、サブディレクトリとそのすべて内容が再帰的にコピーされます。たとえば、ディレクトリoc\-files/example/imagesとその内容がすべてコピーされます。ここでも、サブディレクトリを除外する指定が可能です。 +.RE +.PP +\-excludedocfilessubdir \fIname1:name2\fR +.RS 4 +指定された名前のdoc\-filesサブディレクトリをすべて除外します。これにより、SCCSとその他のソース・コード制御サブディレクトリのコピーを防ぎます。 +.RE +.PP +\-noqualifier all | \fIpackagename1\fR:\fIpackagename2\&.\&.\&.\fR +.RS 4 +出力されるクラス名から修飾パッケージ名を省略します。\fI\-noqualifier\fRオプションの引数は、\fIall\fR(すべてのパッケージ修飾子を省略)、または修飾子として削除するパッケージのコロン区切りリスト(ワイルドカードも可)、のいずれかとなります。クラスまたはインタフェース名が表示される位置からパッケージ名が削除されます。ソース・ファイルの処理を参照してください。 +.sp +次の例では、すべてのパッケージ修飾子を省略します。\fI\-noqualifier all\fR +.sp +次の例では、\fIjava\&.lang\fRおよび\fIjava\&.io\fRパッケージ修飾子を省略します: +\fI\-noqualifier java\&.lang:java\&.io\fR。 +.sp +次の例では、\fIjava\fRで始まるパッケージ修飾子および\fIcom\&.sun\fRサブパッケージを省略しますが、\fIjavax\fRは省略しません。\fI\-noqualifier java\&.*:com\&.sun\&.*\fR +.sp +パッケージ修飾子が前述の動作に従って表示される場合、名前は適切に短縮されます。「名前が表示される方法」を参照してください。このルールは、\fI\-noqualifier\fRオプションを使用するかどうかにかかわらず有効です。 +.RE +.PP +\-notimestamp +.RS 4 +タイムスタンプが抑制されます。各ページの先頭近くにある、生成されたHTML内のHTMLコメントでタイムスタンプが隠されます。\fI\-notimestamp\fRオプションは、\fIjavadoc\fRコマンドを2つのソース・ベースで実行し、それらの間の差分\fIdiff\fRを取得する場合に役立ちます。タイムスタンプによる\fIdiff\fRの発生を防ぐからです(そうでないとすべてのページで\fIdiff\fRになります)。タイムスタンプには\fIjavadoc\fRコマンドのリリース番号が含まれ、現在では、\fI<!\-\- Generated by javadoc (build 1\&.5\&.0_01) on Thu Apr 02 14:04:52 IST 2009 \-\->\fRのように表示されます。 +.RE +.PP +\-nocomment +.RS 4 +主説明およびすべてのタグを含むコメント本文全体を抑制し、宣言のみを生成します。このオプションにより、元は異なる目的のためだったソース・ファイルを再利用し、新しいプロジェクトの早い段階でスケルトンHTMLドキュメントを作成できるようになります。 +.RE +.PP +\-sourcetab \fItablength\fR +.RS 4 +ソース内で各タブが使用する空白文字の数を指定します。 +.RE +.SH "コマンドライン引数ファイル" +.PP +\fIjavadoc\fRコマンドを短くしたり簡潔にしたりするために、\fIjavadoc\fRコマンドに対する引数(\fI\-J\fRオプションを除く)が入った1つ以上のファイルを指定することができます。このことを利用すれば、どのオペレーティング・システム上でも、任意の長さの\fIjavadoc\fRコマンドを作成できます。 +.PP +引数ファイルには、\fIjavac\fRのオプションとソース・ファイル名を自由に組み合せて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に埋め込まれた空白がある場合、ファイル名全体を二重引用符で囲みます。 +.PP +引数ファイル内のファイル名は、引数ファイルの位置ではなく、現在のディレクトリに相対的となります。これらのリストでは、ワイルドカード(\fI*\fR)は使用できません。たとえば、*\&.javaとは指定できません。アットマーク(@)を使用して、ファイルを再帰的に解釈することはできません。また、\fI\-J\fRオプションもサポートされていません。このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 +.PP +\fIjavadoc\fRを実行するときに、各引数ファイルのパスとファイル名の先頭に@文字を付けて渡します。\fIjavadoc\fRコマンドは、アットマーク(@)文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +.PP +\fBExample 1\fR, 単一の引数ファイル +.RS 4 +\fIargfile\fRという名前の1つの引数ファイルを使用して、すべての\fIjavadoc\fRコマンド引数を保持できます。\fIjavadoc @argfile\fR次の例に示すように、この引数ファイルには両方のファイルの内容が含まれています。 +.RE +.PP +\fBExample 2\fR, 2つの引数ファイル +.RS 4 +次のように、2つの引数ファイルを作成できます。\fIjavadoc\fRコマンドのオプション用に1つ、パッケージ名またはソース・ファイル名用に1つです。次のリストでは行継続文字を使用していません。 +.sp +次の内容を含む、optionsという名前のファイルを作成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-d docs\-filelist +\-use +\-splitindex +\-windowtitle \*(AqJava SE 7 API Specification\*(Aq +\-doctitle \*(AqJava SE 7 API Specification\*(Aq +\-header \*(Aq<b>Java(TM) SE 7</b>\*(Aq +\-bottom \*(AqCopyright © 1993\-2011 Oracle and/or its affiliates\&. All rights reserved\&.\*(Aq +\-group "Core Packages" "java\&.*" +\-overview /java/pubs/ws/1\&.7\&.0/src/share/classes/overview\-core\&.html +\-sourcepath /java/pubs/ws/1\&.7\&.0/src/share/classes +.fi +.if n \{\ +.RE +.\} +次の内容を含む、packagesという名前のファイルを作成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +com\&.mypackage1 +com\&.mypackage2 +com\&.mypackage3 +.fi +.if n \{\ +.RE +.\} +次のように、\fIjavadoc\fRコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc @options @packages +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, パスを使用した引数ファイル +.RS 4 +引数ファイルはパスを指定できますが、ファイル内のすべてのファイル名は、(\fIpath1\fRや\fIpath2\fRではなく)次のように現在の作業ディレクトリに相対的となります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc @path1/options @path2/packages +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 4\fR, オプション引数 +.RS 4 +次に、\fIjavadoc\fRコマンドのオプションに対する引数を引数ファイルに格納する例を示します。長い引数を指定できるので、\fI\-bottom\fRオプションを使用します。次のようなテキスト引数を含む、bottomという名前のファイルを作成できます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl <font size="\-1"> -.fl - <a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/> -.fl - Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> -.fl - Oracle is a registered trademark of Oracle Corporation and/or its affiliates. -.fl - その他の名称は、それぞれの所有者の商標または登録商標です。</font> -.fl -\fP -.fi -.LP -そのあと、次のようにして Javadoc ツールを実行します。 -.nf -\f3 -.fl - % \fP\f3javadoc \-bottom @bottom @packages\fP -.fl -.fi -.LP -あるいは、引数ファイルの先頭に \f2\-bottom\fP オプションも組み込んだあと、次のように実行してもかまいません。 -.nf -\f3 -.fl - % \fP\f3javadoc @bottom @packages\fP -.fl -.fi -.SH "名前" -実行 -.SH "Javadoc の実行" -.LP -\f3バージョン番号\fP \- javadoc のバージョン番号を判別するには、\f3javadoc \-J\-version\fP を使用します。出力ストリームには標準ドックレットのバージョン番号が含まれます。その出力を無効にするには、 \f2\-quiet\fP を使用します。 -.LP -\f3公開プログラムインタフェース\fP \- Java 言語で記述されたプログラムから Javadoc ツールを起動するとき使用します。このインタフェースは \f2com.sun.tools.javadoc.Main にあります\fP (javadoc は再入可能)。詳細は、 -.na -\f2「標準ドックレット」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/standard\-doclet.html#runningprogrammaticallyを参照してください。 -.LP -\f3ドックレットの実行\fP \- 下記の説明は、標準 HTML ドックレットを呼び出すためのものです。カスタムドックレットを呼び出すには、\-doclet および \-docletpath オプションを使用します。特定のドックレットを実行した完全な例については、 -.na -\f2MIF Doclet のドキュメント\fP @ -.fi -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 -あるパッケージをドキュメント化するには、そのパッケージのソースファイル (\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 オプションを使用します。以下の例では、両方の方法について説明します。 -.RS 3 -.TP 2 -o -\f3ケース 1 \- 1 つ以上のパッケージからの起動を再帰的に実行\fP \- この例では javadoc が任意のディレクトリから実行できるように、\-sourcepath を使用し、再帰的処理のために \-subpackages (1.4 の新オプション) を使用します。これは、 \f2java\fP ディレクトリのサブパッケージをたどりますが、その際に、 \f2java.net\fP と \f2java.lang\fP をルートに持つパッケージが除外されます。この場合、 \f2java.lang\fP のサブパッケージである \f2java.lang.ref\fP。 -.nf -\f3 -.fl - % \fP\f3javadoc \fP\f3\-d\fP\f3 /home/html \fP\f3\-sourcepath\fP\f3 /home/src \fP\f3\-subpackages\fP\f3 java \fP\f3\-exclude\fP\f3 java.net:java.lang\fP -.fl -.fi -.LP -ほかのパッケージツリーも下方にたどるには、 \f2java:javax:org.xml.sax のように、\fP それらのパッケージの名前を \-subpackages \f2の引数の末尾に追加します\fP。 -.TP 2 -o -\f3ケース 2 \- ルートソースディレクトリに移ってから明示的なパッケージに対して実行\fP \- 完全指定のパッケージ名の親ディレクトリに移ります。次に、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。 -.nf -\f3 -.fl - % \fP\f3cd /home/src/\fP -.fl - % \f3javadoc \-d /home/html java.awt java.awt.event\fP -.fl -.fi -.TP 2 -o -\f3ケース 3 \- 任意のディレクトリから実行。ソースファイルは 1 つのディレクトリツリー内にある\fP \- このケースでは、現在のディレクトリがどこであってもかまいません。最上位パッケージの親ディレクトリを \f2\-sourcepath\fP に指定し、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。 -.nf -\f3 -.fl - % \fP\f3javadoc \-d /home/html \-sourcepath /home/src java.awt java.awt.event\fP -.fl -.fi -.TP 2 -o -\f3ケース 4 \- 任意のディレクトリから実行。ソースファイルは複数のディレクトリツリー内にある\fP \- これはケース 3 と似ていますが、パッケージが複数のディレクトリツリーに存在します。それぞれのツリーのルートへのパスを \f2\-sourcepath\fP に指定し (コロンで区切る)、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。1 つのパッケージのすべてのソースファイルが、1 つのルートディレクトリの下に存在しなければならない、ということはありません。ソースパスとして指定された場所のどこかで見つかれば十分です。 -.nf -\f3 -.fl - % \fP\f3javadoc \-d /home/html \-sourcepath /home/src1:/home/src2 java.awt java.awt.event\fP -.fl + <a href="http://bugreport\&.sun\&.com/bugreport/">Submit a bug or feature</a><br/> + Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&. <br/> + Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&. + Other names may be trademarks of their respective owners\&.</font> .fi +.if n \{\ .RE -.LP -結果: すべてのケースでパッケージ \f2java.awt\fP および \f2java.awt.event\fP 内の public および protected クラスとインタフェースについて、HTML 形式のドキュメントが生成され、指定された生成先ディレクトリ (\f2/home/html\fP) に HTML ファイルが保存されます。2 つ以上のパッケージが生成されているので、ドキュメントは、パッケージのリスト、クラスのリスト、およびメインのクラスページという 3 つのフレームを持つことになります。 -.SS -1 つ以上のクラスのドキュメント化 -.LP -また、1 つ以上のソースファイル (\f2.java\fP) を渡して、Javadoc ツールを実行することもできます。javadoc は、次の 2 つの方法のいずれかで実行できます。1 つは \f2cd\fP を使用してディレクトリを変更する方法、もう 1 つは \f2.java\fP ファイルへのパスを完全に指定する方法です。相対パスは、現在のディレクトリを起点とします。ソースファイル名を渡すときは、 \f2\-sourcepath\fP オプションは無視されます。アスタリスク (*) のようなコマンド行ワイルドカードを使用すると、クラスのグループを指定できます。 -.RS 3 -.TP 2 -o -\f3ケース 1 \- ソースディレクトリに移る\fP \- \f2.java\fP ファイルのあるディレクトリに移ります。次に、ドキュメント化する 1 つ以上のソースファイルの名前を指定して javadoc を実行します。 -.nf -\f3 -.fl - % \fP\f3cd /home/src/java/awt\fP -.fl - % \f3javadoc \-d /home/html Button.java Canvas.java Graphics*.java\fP -.fl -.fi -この例では、クラス \f2Button\fP と \f2Canvas\fP 、および名前が \f2Graphics で始まるクラスについて、HTML 形式のドキュメントが生成されます\fP。パッケージ名ではなくソースファイルが javadoc に引数として渡されているので、ドキュメントは、クラスのリストとメインページという 2 つのフレームを持つことになります。 -.TP 2 -o -\f3ケース 2 \- パッケージのルートディレクトリに移る\fP \- これは、同じルート内にある複数のサブパッケージの個々のソースファイルをドキュメント化する場合に便利です。パッケージのルートディレクトリに移り、各ソースファイルを、ルートからのパスとともに指定します。 -.nf -\f3 -.fl - % \fP\f3cd /home/src/\fP -.fl - % \f3javadoc \-d /home/html java/awt/Button.java java/applet/Applet.java\fP -.fl -.fi -この例では、クラス \f2Button\fP および \f2Applet について、HTML 形式のドキュメントが生成されます\fP。 -.TP 2 -o -\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 で始まるクラスについて、HTML 形式のドキュメントが生成されます\fP。 +.\} +\fIjavadoc\fRコマンドを次のように実行します。\fI javadoc \-bottom @bottom @packages\fR +.sp +\fI\-bottom\fRオプションを引数ファイルの最初に含めて、次のように\fIjavadoc\fRコマンドを実行することもできます。\fIjavadoc @bottom @packages\fR .RE -.SS -パッケージとクラスのドキュメント化 -.LP -パッケージ全体と個々のクラスを同時に指定してドキュメント化することもできます。次に前述の 2 つの例を組み合わせた例を示します。 \f2\-sourcepath\fP は、パッケージへのパスに対しては使用できますが、個々のクラスのパスに対しては使用できません。 +.SH "JAVADOCコマンドの実行" +.PP +\fIjavadoc\fRコマンドのリリース番号は\fIjavadoc \-J\-version\fRオプションで特定できます。出力ストリームには標準ドックレットのリリース番号が含まれます。\fI\-quiet\fRオプションで無効にできます。 +.PP +Java言語で記述されたプログラムから\fIjavadoc\fRコマンドを起動するには公開プログラマティック・インタフェースを使用します。このインタフェースは\fIcom\&.sun\&.tools\&.javadoc\&.Main\fRにあります(また\fIjavadoc\fRコマンドは再入可能です)。詳細は、標準ドックレット +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/standard\-doclet\&.html#runningprogrammatically)を参照してください。 +.PP +次の手順では、標準HTMLドックレットを呼び出します。カスタム・ドックレットを呼び出すには、\fI\-doclet\fRおよび\fI\-docletpath\fRオプションを使用しますドックレットの概要 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/doclet/overview\&.html)を参照してください +.SS "簡単な例" +.PP +\fIjavadoc\fRコマンドは、パッケージ全体に対して実行することも、個々のソース・ファイルに対して実行することもできます。各パッケージ名は、それぞれのパッケージ名に対応するディレクトリ名を持ちます。 +.PP +次の例では、ソース・ファイルは/home/src/java/awt/*\&.javaにあります。生成先ディレクトリは/home/htmlです。 +1つ以上のパッケージのドキュメント化.PP +パッケージをドキュメント化するには、そのパッケージのソース・ファイルを、そのパッケージと同じ名前のディレクトリ内に格納する必要があります。 +.PP +パッケージ名が(\fIjava\&.awt\&.color\fRのようにドットで区切られた)複数の識別子から構成されている場合、後続の各識別子が下位のサブディレクトリ(ava/awt/colorなど)に対応している必要があります。 +.PP +1つのパッケージのための複数のソース・ファイルを、異なる場所にあるそのような2つのディレクトリ・ツリーに分けて格納することもできます。ただし、その場合は\fI\-sourcepath\fRによってその両方の場所を指定する必要があります。たとえば、src1/java/awt/colorとsrc2/java/awt/color。 +.PP +ディレクトリの変更(\fIcd\fRコマンドを使用)または\fI\-sourcepath\fRオプションにより、\fIjavadoc\fRコマンドを実行できます。次の例で両方の選択肢を示します。 +.PP +\fBExample 1\fR, 1つ以上のパッケージから再帰的に実行 +.RS 4 +この例では\fIjavadoc\fRコマンドが任意のディレクトリから実行できるように、\fI\-sourcepath\fRを使用し、再帰的処理のために\fI\-subpackages\fR +(1\&.4の新オプション)を使用します。これは、javaディレクトリのサブパッケージをたどりますが、\fIjava\&.net\fRと\fIjava\&.lang\fRをルートに持つパッケージは除外されます。\fIjava\&.lang\fRのサブパッケージである\fIjava\&.lang\&.ref\fRが除外される点に注意してください。また、他のパッケージ・ツリーを下方にたどるには、\fIjava:javax:org\&.xml\&.sax\fRのように、それらのパッケージの名前を\fI\-subpackages\fRの引数に追加します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc \-d /home/html \-sourcepath /home/src java.awt /home/src/java/applet/Applet.java\fP -.fl +javadoc \-d /home/html \-sourcepath /home/src \-subpackages java \-exclude .fi -.LP -この例では、パッケージ \f2java.awt\fP とクラス \f2Applet について、HTML 形式のドキュメントが生成されます\fP。Javadoc ツールは、 \f2Applet.java ソースファイル内にパッケージ宣言があれば、\fP その宣言に基づいて \f2Applet のパッケージ名を\fP 判定します。 -.SH "使用例" -.LP -Javadoc ツールには多くの便利なオプションがあり、その中にはほかのオプションよりも頻繁に使われるものがあります。ここで紹介するのは、Java プラットフォーム API に対して Javadoc ツールを実行するときに使用する実際のコマンドです。ここでは、Java SE Platform, Standard Edition, v1.2 の (約) 1500 個の public および protected クラスのドキュメントを生成するために、180M バイトのメモリーを使用します。 -.LP -同じ例を 2 回掲載します。最初の例はコマンド行から実行するもので、2 番目の例は Makefile から実行するものです。オプションの引数で絶対パスが使用されているため、同じ \f2javadoc\fP コマンドをどのディレクトリからでも実行できます。 -.SS -コマンド行の例 -.LP -次の例は、DOS などの一部のシェルでは長すぎる可能性があります。この制限を回避するには、コマンド行引数ファイルを使用します。または、シェルスクリプトを記述します。 +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, ルートへの移動および明示的なパッケージの実行 +.RS 4 +完全修飾されたパッケージの親ディレクトリに移動します。次に、ドキュメント化する1つ以上のパッケージの名前を指定して\fIjavadoc\fRコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% javadoc \-sourcepath /java/jdk/src/share/classes \\ -.fl - \-overview /java/jdk/src/share/classes/overview.html \\ -.fl - \-d /java/jdk/build/api \\ -.fl - \-use \\ -.fl - \-splitIndex \\ -.fl - \-windowtitle 'Java Platform, Standard Edition 7 API Specification' \\ -.fl - \-doctitle 'Java Platform, Standard Edition 7 API Specification' \\ -.fl - \-header '<b>Java(TM) SE 7</b>' \\ -.fl - \-bottom '<font size="\-1"> -.fl - <a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/> -.fl - Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> -.fl - Oracle is a registered trademark of Oracle Corporation and/or its affiliates. -.fl - その他の名称は、それぞれの所有者の商標または登録商標です。</font>' \\ -.fl - \-group "Core Packages" "java.*:com.sun.java.*:org.omg.*" \\ -.fl - \-group "Extension Packages" "javax.*" \\ -.fl - \-J\-Xmx180m \\ -.fl - @packages -.fl -\fP +cd /home/src/ +javadoc \-d /home/html java\&.awt java\&.awt\&.event .fi -.LP -ここで、 \f2packages\fP は、処理対象のパッケージ名 ( \f2java.applet java.lang\fP など) が入っているファイルの名前です。各オプションの、単一引用符で囲まれた引数の内側には、改行文字を挿入できません。たとえば、この例をコピー&ペーストする場合は、 \f2\-bottom\fP オプションから改行文字を削除してください。さらに、このあとの「注」も参照してください。 -.SS -Makefile の例 -.LP -ここでは、GNU Makefile の例を示します。Windows の Makefile の例については、 -.na -\f2Windows の Makefile の作成方法\fP @ -.fi -http://java.sun.com/j2se/javadoc/faq/index.html#makefilesを参照してください。 +.if n \{\ +.RE +.\} +また、他のパッケージ・ツリーを下方にたどるには、j\fIava:javax:org\&.xml\&.sax\fRのように、それらのパッケージの名前を\fI\-subpackages\fRの引数に追加します。 +.RE +.PP +\fBExample 3\fR, 1つのツリーの明示的なパッケージの任意のディレクトリから実行 +.RS 4 +この場合、現在のディレクトリがどこかは問題ではありません。\fIjavadoc\fRコマンドを実行し、最上位パッケージの親ディレクトリを指定して\fI\-sourcepath\fRオプションを使用します。ドキュメント化する1つ以上のパッケージの名前を指定します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -javadoc \-\fP\f3sourcepath\fP\f3 $(SRCDIR) \\ /* Sets path for source files */ -.fl - \-\fP\f3overview\fP\f3 $(SRCDIR)/overview.html \\ /* Sets file for overview text */ -.fl - \-\fP\f3d\fP\f3 /java/jdk/build/api \\ /* Sets destination directory */ -.fl - \-\fP\f3use\fP\f3 \\ /* Adds "Use" files */ -.fl - \-\fP\f3splitIndex\fP\f3 \\ /* Splits index A\-Z */ -.fl - \-\fP\f3windowtitle\fP\f3 $(WINDOWTITLE) \\ /* Adds a window title */ -.fl - \-\fP\f3doctitle\fP\f3 $(DOCTITLE) \\ /* Adds a doc title */ -.fl - \-\fP\f3header\fP\f3 $(HEADER) \\ /* Adds running header text */ -.fl - \-\fP\f3bottom\fP\f3 $(BOTTOM) \\ /* Adds text at bottom */ -.fl - \-\fP\f3group\fP\f3 $(GROUPCORE) \\ /* 1st subhead on overview page */ -.fl - \-\fP\f3group\fP\f3 $(GROUPEXT) \\ /* 2nd subhead on overview page */ -.fl - \-\fP\f3J\fP\f3\-Xmx180m \\ /* Sets memory to 180MB */ -.fl - java.lang java.lang.reflect \\ /* Sets packages to document */ -.fl - java.util java.io java.net \\ -.fl - java.applet -.fl +javadoc \-d /home/html \-sourcepath /home/src java\&.awt java\&.awt\&.event +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 4\fR, 複数のツリーの明示的なパッケージの任意のディレクトリから実行 +.RS 4 +\fIjavadoc\fRコマンドを実行し、各ツリーのルートへのパスのコロン区切りリストを指定して\fI\-sourcepath\fRオプションを使用します。ドキュメント化する1つ以上のパッケージの名前を指定します。指定したパッケージのすべてのソース・ファイルが、1つのルート・ディレクトリの下に存在する必要はありませんが、ソース・パスで指定された場所のどこかで見つかる必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-d /home/html \-sourcepath /home/src1:/home/src2 java\&.awt java\&.awt\&.event +.fi +.if n \{\ +.RE +.\} +すべてのケースでj\fIava\&.awt\fRおよび\fIjava\&.awt\&.even\fRtパッケージ内の\fIpublic\fRおよび\fIprotected\fRクラスとインタフェースについて、HTML形式のドキュメントが生成され、指定された生成先ディレクトリにHTMLファイルが保存されます。2つ以上のパッケージが生成されているので、ドキュメントは、パッケージのリスト、クラスのリスト、およびメインのクラス・ページという3つのHTMLフレームを持つことになります。 +.RE +1つ以上のクラスのドキュメント化.PP +また、1つ以上のソース・ファイルを渡して、\fIjavadoc\fRコマンドを実行することもできます。\fIjavadoc\fRは、次の2つの方法のいずれかで実行できます。1つはディレクトリを変更する方法(\fIcd\fRを使用)、もう1つはソース・ファイルへのパスを完全に指定する方法です。相対パスは、現在のディレクトリを起点とします。ソース・ファイルを渡すときは、\fI\-sourcepath\fRオプションは無視されます。アスタリスク(*)のようなコマンドライン・ワイルドカードを使用すると、クラスのグループを指定できます。 +.PP +\fBExample 1\fR, ソース・ディレクトリに変更 +.RS 4 +ソースを保持するディレクトリに変更します。次に、ドキュメント化する1つ以上のソース・ファイルの名前を指定して\fIjavadoc\fRコマンドを実行します。 +.sp +この例では、\fIButton\fRクラスと\fICanvas\fRクラス、および名前が\fIGraphics\fRで始まるクラスについて、HTML形式のドキュメントが生成されます。パッケージ名ではなくソース・ファイルが\fIjavadoc\fRコマンドに引数として渡されているので、ドキュメントは、クラスのリストとメイン・ページという2つのフレームを持つことになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +cd /home/src/java/awt +javadoc \-d /home/html Button\&.java Canvas\&.java Graphics*\&.java +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, パッケージのルート・ディレクトリに変更 +.RS 4 +これは、同じルートからの別のサブパッケージの個々のソース・ファイルをドキュメント化するのに役立ちます。パッケージのルート・ディレクトリに移り、各ソース・ファイルを、ルートからのパスとともに指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +cd /home/src/ +javadoc \-d /home/html java/awt/Button\&.java java/applet/Applet\&.java +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, 任意のディレクトリからのファイルのドキュメント化 +.RS 4 +この場合、現在のディレクトリがどこかは問題ではありません。ドキュメント化するソース・ファイルへの絶対パス(または現在のディレクトリからの相対パス)を指定して\fIjavadoc\fRコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-d /home/html /home/src/java/awt/Button\&.java +/home/src/java/awt/Graphics*\&.java +.fi +.if n \{\ +.RE +.\} +.RE +パッケージおよびクラスのドキュメント化.PP +パッケージ全体と個々のクラスを同時に指定してドキュメント化することもできます。次に、前述の2つの例を組み合せた例を示します。\fI\-sourcepath\fRオプションは、パッケージへのパスに対しては使用できますが、個々のクラスへのパスに対しては使用できません。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-d /home/html \-sourcepath /home/src java\&.awt +/home/src/java/applet/Applet\&.java +.fi +.if n \{\ +.RE +.\} +.SS "実際の例" +.PP +次のコマンドラインおよび\fImakefile\fRバージョンの\fIjavadoc\fRコマンドをJavaプラットフォームAPIで実行します。Java SE 1\&.2で約1500個のpublicおよびprotectedクラスのドキュメントを生成するには、180MBのメモリーを使用します。どちらの例もオプションの引数で絶対パスが使用されているため、任意のディレクトリから同じ\fIjavadoc\fRコマンドを実行できます。 +コマンドラインの例.PP +次のコマンドは、一部のシェルに対して長すぎる可能性があります。この制限を回避するには、コマンドライン引数ファイルを使用します。または、シェル・スクリプトを記述します。 +.PP +この例では、\fIpackages\fRは処理するパッケージを含む名前で、\fIjava\&.applet\fR +\fIjava\&.lang\fRなどです。各オプションの、一重引用符で囲まれた引数の内側には、改行文字を挿入できません。たとえば、この例をコピー・アンド・ペーストする場合は、\fI\-bottom\fRオプションから改行文字を削除してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath /java/jdk/src/share/classes \e +\-overview /java/jdk/src/share/classes/overview\&.html \e +\-d /java/jdk/build/api \e +\-use \e +\-splitIndex \e +\-windowtitle \*(AqJava Platform, Standard Edition 7 API Specification\*(Aq \e +\-doctitle \*(AqJava Platform, Standard Edition 7 API Specification\*(Aq \e +\-header \*(Aq<b>Java(TM) SE 7</b>\*(Aq \e +\-bottom \*(Aq<font size="\-1"> +<a href="http://bugreport\&.sun\&.com/bugreport/">Submit a bug or feature</a><br/> +Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&.<br/> +Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&. +Other names may be trademarks of their respective owners\&.</font>\*(Aq \e +\-group "Core Packages" "java\&.*:com\&.sun\&.java\&.*:org\&.omg\&.*" \e +\-group "Extension Packages" "javax\&.*" \e +\-J\-Xmx180m \e +@packages +.fi +.if n \{\ +.RE +.\} +プログラマティック・インタフェース.PP +Javadoc Access APIでは、新しいプロセスを実行しなくても、JavadocツールをJavaアプリケーションから直接起動できます。 +.PP +たとえば、次の文はコマンド\fIjavadoc \-d /home/html \-sourcepath /home/src \-subpackages java \-exclude java\&.net:java\&.lang com\&.example\fRと同等です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +import javax\&.tools\&.DocumentationTool; +import javax\&.tools\&.ToolProvider; + +public class JavaAccessSample{ + public static void main(String[] args){ + DocumentationTool javadoc = ToolProvider\&.getSystemDocumentationTool(); + int rc = javadoc\&.run( null, null, null, + "\-d", "/home/html", + "\-sourcepath", "home/src", + "\-subpackages", "java", + "\-exclude", "java\&.net:java\&.lang", + "com\&.example"); + } + } +.fi +.if n \{\ +.RE +.\} +.PP +\fIrun\fRメソッドの最初の3つの引数は、入力、標準出力、および標準エラー・ストリームを指定します。\fINull\fRは\fISystem\&.in\fR、\fISystem\&.out\fRおよび\fISystem\&.err\fRそれぞれのデフォルト値です。 +.SS "makefileの例" +.PP +ここでは、GNU +\fImakefile\fRの例を示します。\fImakefile\fRの引数は、一重引用符で囲みます。Windows +\fImakefile\fRの例については、Javadoc FAQの\fImakefiles\fRに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137483\&.html#makefiles)を参照してください +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath $(SRCDIR) \e /* Sets path for source files */ + \-overview $(SRCDIR)/overview\&.html \e /* Sets file for overview text */ + \-d /java/jdk/build/api \e /* Sets destination directory */ + \-use \e /* Adds "Use" files */ + \-splitIndex \e /* Splits index A\-Z */ + \-windowtitle $(WINDOWTITLE) \e /* Adds a window title */ + \-doctitle $(DOCTITLE) \e /* Adds a doc title */ + \-header $(HEADER) \e /* Adds running header text */ + \-bottom $(BOTTOM) \e /* Adds text at bottom */ + \-group $(GROUPCORE) \e /* 1st subhead on overview page */ + \-group $(GROUPEXT) \e /* 2nd subhead on overview page */ + \-J\-Xmx180m \e /* Sets memory to 180MB */ + java\&.lang java\&.lang\&.reflect \e /* Sets packages to document */ + java\&.util java\&.io java\&.net \e + java\&.applet -.fl -WINDOWTITLE = 'Java(TM) SE 7 API Specification' -.fl -DOCTITLE = 'Java(TM) Platform Standard Edition 7 API Specification' -.fl -HEADER = '<b>Java(TM) SE 7</font>' -.fl -BOTTOM = '<font size="\-1"> -.fl - <a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/> -.fl - Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> -.fl - Oracle is a registered trademark of Oracle Corporation and/or its affiliates. -.fl - その他の名称は、それぞれの所有者の商標または登録商標です。</font>' -.fl -GROUPCORE = '"Core Packages" "java.*:com.sun.java.*:org.omg.*"' -.fl -GROUPEXT = '"Extension Packages" "javax.*"' -.fl -SRCDIR = '/java/jdk/1.7.0/src/share/classes' -.fl -\fP +WINDOWTITLE = \*(AqJava(TM) SE 7 API Specification\*(Aq +DOCTITLE = \*(AqJava(TM) Platform Standard Edition 7 API Specification\*(Aq +HEADER = \*(Aq<b>Java(TM) SE 7</font>\*(Aq +BOTTOM = \*(Aq<font size="\-1"> + <a href="http://bugreport\&.sun\&.com/bugreport/">Submit a bug or feature</a><br/> + Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&.<br/> + Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&. + Other names may be trademarks of their respective owners\&.</font>\*(Aq +GROUPCORE = \*(Aq"Core Packages" "java\&.*:com\&.sun\&.java\&.*:org\&.omg\&.*"\*(Aq +GROUPEXT = \*(Aq"Extension Packages" "javax\&.*"\*(Aq +SRCDIR = \*(Aq/java/jdk/1\&.7\&.0/src/share/classes\*(Aq .fi -.LP -Makefile の引数は、単一引用符で囲みます。 -.LP -\f3注\fP -.RS 3 -.TP 2 -o -\-windowtitle \f2オプションを省略すると、\fP Javadoc ツールによってドキュメントタイトルがウィンドウタイトルにコピーされます。 \f2\-windowtitle\fP のテキストは基本的に \f2\-doctitle\fP のものと同じですが、HTML タグを含まない点が異なります。これは、HTML タグが raw テキストとしてウィンドウタイトル内に表示されるのを防ぐためです。 -.TP 2 -o -ここで行っているように \f2\-footer\fP オプションを省略すると、Javadoc ツールによってヘッダーのテキストがフッターにコピーされます。 -.TP 2 -o -この例では必要ありませんが、\-\f2classpath\fP と \-\f2link\fP も重要なオプションです。 +.if n \{\ .RE -.SH "トラブルシューティング" -.SS -一般的なトラブルシューティング -.RS 3 -.TP 2 -o -\f3Javadoc FAQ\fP \- 一般的なバグおよびトラブルシューティングのヒントは、 -.na -\f2「Javadoc FAQ」\fP @ -.fi -http://java.sun.com/j2se/javadoc/faq/index.html#B で参照できます。 -.TP 2 -o -\f3バグおよび制限事項\fP \- バグの一部は、「Important Bug Fixes and Changes」 でも参照できます。 -.TP 2 -o -\f3バージョン番号\fP \- 「バージョン番号」を参照してください。 -.TP 2 -o -\f3有効なクラスだけをドキュメント化\fP \- パッケージをドキュメント化するとき、Javadoc は、有効なクラス名で構成されているファイルのみを読み込みます。たとえば、ファイル名にハイフン「\-」を含めることで、javadoc によるファイルの解析を防ぐことができます。 +.\} +.SS "注意" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-windowtitle\fRオプションを省略すると、\fIjavadoc\fRコマンドによってドキュメント・タイトルがウィンドウ・タイトルにコピーされます。\fI\-windowtitle\fRオプションのテキストは、\fI\-doctitle\fRオプションと同じですが、HTMLタグは含まれません。これは、HTMLタグが、ウィンドウ・タイトル内にそのままのテキストとして表示されるのを防ぐためです。 .RE -.SS -エラーと警告 -.LP -エラーおよび警告メッセージには、ファイル名と宣言行 (ドキュメンテーションコメント内の特定の行ではない) の行番号が含まれます。 -.RS 3 -.TP 2 -o -\f2"error: cannot read: Class1.java"\fP Javadoc ツールはカレントディレクトリに Class1.java クラスをロードしようとしています。絶対パスまたは相対パスとともに表示されるクラス名は、この例の場合 \f2./Class1.java と同じです\fP。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-footer\fRオプションを省略すると、\fIjavadoc\fRコマンドによってヘッダー・テキストがフッターにコピーされます。 .RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +この例では必要ありませんが、\fI\-classpath\fRと\fI\-link\fRも重要なオプションです。 +.RE +.SH "一般的なトラブルシューティング" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIjavadoc\fRコマンドは有効なクラス名を含むファイルのみを読み取ります。\fIjavadoc\fRコマンドがファイルの内容を正しく読み取っていない場合は、クラス名が有効であることを確認します。ソース・ファイルの処理を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +共通の不具合およびトラブルシューティングのヒントについては、Javadoc FAQ +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137483\&.html)を参照してください。 +.RE +.SH "エラーと警告" +.PP +エラーおよび警告メッセージには、ファイル名と宣言行(ドキュメンテーション・コメント内の特定の行ではない)の行番号が含まれます。 +.PP +たとえば、メッセージ\fI「エラー: Class1\&.javaを読み込めません」\fRは、\fIjavadoc\fRコマンドが\fIClass1\&.jav\fR\fIa\fRを現在のディレクトリにロードしようとしていることを意味します。クラス名はそのパス(絶対または相対)で表示されます。 .SH "環境" -.RS 3 -.TP 3 -CLASSPATH -Javadoc がユーザークラスのファイルを探すときに使うパスを指定する環境変数です。この環境変数は、 \f2\-classpath\fP オプションによってオーバーライドされます。ディレクトリは、次のようにコロンで区切ります。 -.:/home/classes:/usr/local/java/classes +.PP +CLASSPATH +.RS 4 +\fICLASSPATH\fRは、\fIjavadoc\fRコマンドがユーザー・クラス・ファイルの検出に使用するパスを提供する環境変数です。この環境変数は、\fI\-classpath\fRオプションによってオーバーライドされます。ディレクトリはセミコロン(Windowsの場合)またはコロン(Oracle Solarisの場合)で区切ります。 +.sp +\fBWindowsの例\fR: +\fI\&.;C:\eclasses;C:\ehome\ejava\eclasses\fR +.sp +\fBOracle Solarisの例\fR: +\fI\&.:/home/classes:/usr/local/java/classes\fR .RE .SH "関連項目" -.RS 3 -.TP 2 -o -javac(1) -.TP 2 -o -java(1) -.TP 2 -o -jdb(1) -.TP 2 -o -javah(1) -.TP 2 -o -javap(1) -.TP 2 -o -.na -\f2Javadoc のホームページ\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-jsp\-135444.html -.TP 2 -o -.na -\f2How to Write Doc Comments for Javadoc\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html -.TP 2 -o -.na -\f2クラスパスの設定\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#general -.TP 2 -o -.na -\f2javac と javadoc がクラスを検索する方法\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html#srcfiles (tools.jar) +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javac(1) .RE - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javap(1) +.RE +.SH "関連ドキュメント" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Javadocテクノロジ +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/index\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +クラスの検出方法 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +JavadocツールでのDocコメントの記述方法 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +URLメモ、Uniform Resource Locators +(http://www\&.ietf\&.org/rfc/rfc1738\&.txt) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +HTML標準、HTML Document Representation (4197265および4137321) +(http://www\&.w3\&.org/TR/REC\-html40/charset\&.html#h\-5\&.2\&.2) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/javah.1 b/jdk/src/linux/doc/man/ja/javah.1 index b9c445d6b80..e88dfbfaabd 100644 --- a/jdk/src/linux/doc/man/ja/javah.1 +++ b/jdk/src/linux/doc/man/ja/javah.1 @@ -1,139 +1,220 @@ -." 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 -." 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 javah 1 "07 May 2011" - -.LP -.SH "名前" -javah \- C ヘッダーとスタブファイルジェネレータ -.LP -.LP -\f3javah\fP は、Java クラスから C ヘッダーファイルと C ソースファイルを作成します。これらのファイルは、Java プログラミング言語で書かれたコードと、C などのその他の言語で書かれたコードを接続し、コードが相互に作用するようにします。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: javah +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "javah" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +javah \- JavaクラスからCヘッダーとソース・ファイルを生成します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -javah [ \fP\f3options\fP\f3 ] fully\-qualified\-classname. . . -.fl -\fP +\fIjavah\fR [ \fIoptions\fR ] f\fIully\-qualified\-class\-name \&.\&.\&.\fR .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIfully\-qualified\-class\-name\fR +.RS 4 +Cヘッダーとソース・ファイルに変換されるクラスの完全修飾された場所。 +.RE .SH "説明" -.LP -.LP -\f3javah\fP は、ネイティブメソッドを実装するために必要な C ヘッダーとソースファイルを生成します。作成されたヘッダーとソースファイルは、ネイティブソースコードからオブジェクトのインスタンス変数を参照するために C プログラムによって使用されます。.h ファイルは、対応するクラスと一致する配置を持つ構造体定義を含みます。構造体のフィールドは、クラスのインスタンス変数に対応します。 -.LP -.LP -ヘッダーファイルとその中で宣言される構造体の名前はクラスの名前から派生します。\f3javah\fP に渡されるクラスがパッケージの中にある場合、パッケージ名はヘッダーファイル名と構造体名の両方に付加されます。下線 (_) が名前の区切り文字として使用されます。 -.LP -.LP -デフォルトでは \f3javah\fP は、コマンド行にリストされる各クラスのヘッダーファイルを作成し、現在のディレクトリにファイルを置きます。ソースファイルを作成するには、\f2\-stubs\fP オプションを使用してください。1 つのファイルの中に、リストされたすべてのクラスの結果を連結するには、\f2\-o\fP オプションを使用してください。 -.LP -.LP -新しいネイティブメソッドインタフェースである Java Native Interface (JNI) は、ヘッダー情報またはスタブファイルを必要としません。現在では、\f3javah\fP は、JNI 形式のネイティブメソッドに必要なネイティブメソッド機能プロトタイプを生成します。デフォルトでは、\f3javah\fP は JNI 形式で出力され、その結果は .h ファイルに格納されます。 -.LP +.PP +\fIjavah\fRコマンドは、ネイティブ・メソッドを実装するために必要なCヘッダーとソース・ファイルを生成します。作成されたヘッダーとソース・ファイルは、ネイティブ・ソース・コードからオブジェクトのインスタンス変数を参照するためにCプログラムによって使用されます。\fI\&.h\fRファイルは、対応するクラスと一致する配置を持つ\fIstruct\fR定義を含みます。\fIstruct\fRのフィールドは、クラスのインスタンス変数に対応します。 +.PP +ヘッダー・ファイルとその中で宣言される構造体の名前はクラスの名前から派生します。\fIjavah\fRコマンドに渡されるクラスがパッケージの中にある場合、パッケージ名はヘッダー・ファイル名と構造体名の両方の先頭に付加されます。下線(_)が名前の区切り文字として使用されます。 +.PP +デフォルトでは\fIjavah\fRコマンドは、コマンドラインにリストされる各クラスのヘッダー・ファイルを作成し、現在のディレクトリにファイルを置きます。ソース・ファイルを作成するには、\fI\-stubs\fRオプションを使用してください。1つのファイルの中に、リストされたすべてのクラスの結果を連結するには、\fI\-o\fRオプションを使用してください。 +.PP +Java Native Interface (JNI)はヘッダー情報またはスタブ・ファイルを必要としません。\fIjavah\fRコマンドは引き続きJNI形式のネイティブ・メソッドに必要なネイティブ・メソッド関数プロトタイプの生成に使用できます。\fIjavah\fRコマンドはデフォルトでJNI形式の出力を生成し、その結果を\fI\&.h\fRファイルに格納します。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-o outputfile -コマンド行にリストされたすべてのクラスに対して、結果のヘッダーまたはソースファイルを連結して \f2outputfile\fP に格納します。\f3\-o\fP または \f3\-d\fP のどちらか一方だけが使われます。 -.TP 3 -\-d directory -\f3javah\fP がヘッダーファイルまたはスタブファイルを保存する、ディレクトリを設定します。\f3\-d\fP または \f3\-o\fP のどちらか一方だけが使われます。 -.TP 3 -\-stubs -\f3javah\fP が、Java オブジェクトファイルから C 宣言を生成します。 -.TP 3 -\-verbose -詳細出力を指定し、作成ファイルの状態に関するメッセージを、\f3javah\fP が標準出力に出力します。 -.TP 3 -\-help -\f3javah\fP の使用法についてのヘルプメッセージを出力します。 -.TP 3 -\-version -\f3javah\fP のバージョン情報を出力します。 -.TP 3 -\-jni -JNI 形式のネイティブファイル機能プロトタイプを含む出力ファイルを、\f3javah\fP が作成します。これは標準出力であるため、\f3\-jni\fP の使用はオプションです。 -.TP 3 -\-classpath path -クラスを探すために \f3javah\fP が使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 -.nf -\f3 -.fl - .:<your_path> -.fl -\fP -.fi -次に例を示します。 -.nf -\f3 -.fl - .:/home/avh/classes:/usr/local/java/classes -.fl -\fP -.fi -.LP -便宜上、 \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 プログラムが展開されていないワイルドカードを認識することはありません。 -.TP 3 -\-bootclasspath path -ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは \f2jre/lib/rt.jar\fP および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。 -.TP 3 -\-old -古い JDK1.0 形式のヘッダーファイルを生成するように指定します。 -.TP 3 -\-force -出力ファイルが常に書き込まれるように指定します。 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +.PP +\-o \fIoutputfile\fR +.RS 4 +コマンドラインにリストされたすべてのクラスに対して、結果のヘッダーまたはソース・ファイルを連結して出力ファイルに格納します。\fI\-o\fRまたは\fI\-d\fRのどちらかのみ使用できます。 .RE - -.LP -.SH "環境変数" -.LP -.RS 3 -.TP 3 -CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割されています。 -.nf -\f3 -.fl -.:/home/avh/classes:/usr/local/java/classes -.fl -\fP -.fi +.PP +\-d \fIdirectory\fR +.RS 4 +\fIjavah\fRがヘッダー・ファイルまたはスタブ・ファイルを保存する、ディレクトリを設定します。\fI\-d\fRまたは\fI\-o\fRのどちらかのみ使用できます。 +.RE +.PP +\-stubs +.RS 4 +\fIjavah\fRコマンドが、Javaオブジェクト・ファイルからC宣言を生成します。 +.RE +.PP +\-verbose +.RS 4 +詳細出力を指定し、作成ファイルの状態に関するメッセージを、\fIjavah\fRコマンドが\fI標準出力\fRに出力します。 +.RE +.PP +\-help +.RS 4 +\fIjavah\fRの使用方法についてのヘルプ・メッセージを出力します。 +.RE +.PP +\-version +.RS 4 +\fIjavah\fRコマンドのリリース情報を出力します。 +.RE +.PP +\-jni +.RS 4 +JNI形式のネイティブ・メソッド機能プロトタイプを含む出力ファイルを、\fIjavah\fRコマンドが作成します。これは標準出力であるため、\fI\-jni\fRの使用はオプションです。 +.RE +.PP +\-classpath \fIpath\fR +.RS 4 +クラスを探すために\fIjavah\fRコマンドが使用するパスを指定します。デフォルトまたは\fICLASSPATH\fR環境変数の設定をオーバーライドします。ディレクトリはOracle Solarisの場合はコロンで、Windowsの場合はセミコロンで区切られます。パスの一般的な形式は次のようになります。 +.sp +\fBOracle Solaris\fRの場合: +.sp +\&.:\fIyour\-path\fR +.sp +例: +\fI\&.:/home/avh/classes:/usr/local/java/classes\fR +.sp +\fBWindows\fRの場合: +.sp +\&.;\fIyour\-path\fR +.sp +例: +\fI\&.;C:\eusers\edac\eclasses;C:\etools\ejava\eclasses\fR +.sp +便宜上、*のベース名を含むクラス・パス要素は、\fI\&.jar\fRまたは\fI\&.JAR\fRを拡張子に持つディレクトリ内のすべてのファイルのリストを指定するのと同等とみなされます。 +.sp +たとえば、ディレクトリ\fImydir\fRに\fIa\&.jar\fRと\fIb\&.JAR\fRが含まれている場合、クラス・パス要素\fImydir/*\fRは\fIA\fR\fI\&.jar:b\&.JAR\fRに展開されますが、JARファイルの順番は未指定となります。このリストには、隠しファイルも含め、指定されたディレクトリ内のすべてのJARファイルが含まれます。*からなるクラス・パス・エントリは、現在のディレクトリ内のすべてのJARファイルのリストに展開されます。\fICLASSPATH\fR環境変数も、定義時には同様に展開されます。クラス・パスのワイルドカードの展開は、Java仮想マシン(JVM)の開始前に行われます。Javaプログラムは、環境を問い合せる場合を除き、展開されていないワイルドカードを参照しません。たとえば、\fISystem\&.getenv("CLASSPATH")\fRをコールして問い合せる場合です。 +.RE +.PP +\-bootclasspath \fIpath\fR +.RS 4 +ブートストラップ・クラスをロードするパスを指定します。ブートストラップ・クラスは、デフォルトでは\fIjre\elib\ert\&.jar\fRおよび他のいくつかのJARファイルにある、コアJavaプラットフォームを実装するクラスです。 +.RE +.PP +\-old +.RS 4 +古いJDK 1\&.0形式のヘッダー・ファイルを生成するように指定します。 +.RE +.PP +\-force +.RS 4 +出力ファイルが常に書き込まれるように指定します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンに\fIoption\fRを渡します。\fIoption\fRには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 .RE - -.LP .SH "関連項目" -.LP -.LP -javac(1)、java(1)、jdb(1)、javap(1)、javadoc(1) -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javap(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javadoc(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/javap.1 b/jdk/src/linux/doc/man/ja/javap.1 index 1854f9d552e..152821dfebe 100644 --- a/jdk/src/linux/doc/man/ja/javap.1 +++ b/jdk/src/linux/doc/man/ja/javap.1 @@ -1,317 +1,344 @@ -." 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 -." 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 javap 1 "07 May 2011" - -.LP -.SH "名前" -javap \- Java クラスファイル逆アセンブラ -.LP -.LP -クラスファイルを逆アセンブルします。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: javap +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "javap" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +javap \- 1つ以上のクラス・ファイルを逆アセンブルします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -javap [ \fP\f3options\fP\f3 ] classes -.fl -\fP +\fIjavap\fR [\fIoptions\fR] \fIclassfile\fR\&.\&.\&. .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIclassfile\fR +.RS 4 +注釈の処理対象となる、空白で区切った1つ以上のクラス(DocFooter\&.classなど)。クラス・パスで検出できるクラスを、ファイル名またはURL(\fIfile:///home/user/myproject/src/DocFooter\&.class\fRなど)で指定できます。 +.RE .SH "説明" -.LP -.LP -\f3javap\fP コマンドは、1 つまたは複数のクラスファイルを逆アセンブルします。その出力は指定するオプションにより異なります。オプションを指定しない場合、\f3javap\fP は、そのパッケージ、渡されたクラスの protected および public のフィールドとメソッドを出力します。\f3javap\fP はその出力を標準出力に表示します。 -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。 -.TP 3 -classes -注釈の処理対象となる 1 つ以上のクラス \f2DocFooter.class\fP など) のリスト (空白区切り)。クラスパスで見つかるクラスは、ファイル名 ( \f2/home/user/myproject/src/DocFooter.class\fP など) または URL ( \f2file:///home/user/myproject/src/DocFooter.class\fP など) で指定できます。 -.RE - -.LP -.LP -たとえば、次のクラス宣言をコンパイルするとします。 -.LP -.nf -\f3 -.fl -import java.awt.*; -.fl -import java.applet.*; -.fl - -.fl -public class DocFooter extends Applet { -.fl - String date; -.fl - String email; -.fl - -.fl - public void init() { -.fl - resize(500,100); -.fl - date = getParameter("LAST_UPDATED"); -.fl - email = getParameter("EMAIL"); -.fl - } -.fl - -.fl - public void paint(Graphics g) { -.fl - g.drawString(date + " by ",100, 15); -.fl - g.drawString(email,290,15); -.fl - } -.fl -} -.fl -\fP -.fi - -.LP -.LP -\f3javap DocFooter.class\fP がもたらす出力は次のようになります。 -.LP -.nf -\f3 -.fl -Compiled from "DocFooter.java" -.fl -public class DocFooter extends java.applet.Applet { -.fl - java.lang.String date; -.fl - java.lang.String email; -.fl - public DocFooter(); -.fl - public void init(); -.fl - public void paint(java.awt.Graphics); -.fl -} -.fl -\fP -.fi - -.LP -.LP -\f3javap \-c DocFooter.class\fP がもたらす出力は次のようになります。 -.LP -.nf -\f3 -.fl -Compiled from "DocFooter.java" -.fl -public class DocFooter extends java.applet.Applet { -.fl - java.lang.String date; -.fl - -.fl - java.lang.String email; -.fl - -.fl - public DocFooter(); -.fl - Code: -.fl - 0: aload_0 -.fl - 1: invokespecial #1 // Method java/applet/Applet."<init>":()V -.fl - 4: return -.fl - -.fl - public void init(); -.fl - Code: -.fl - 0: aload_0 -.fl - 1: sipush 500 -.fl - 4: bipush 100 -.fl - 6: invokevirtual #2 // Method resize:(II)V -.fl - 9: aload_0 -.fl - 10: aload_0 -.fl - 11: ldc #3 // String LAST_UPDATED -.fl - 13: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String; -.fl - 16: putfield #5 // Field date:Ljava/lang/String; -.fl - 19: aload_0 -.fl - 20: aload_0 -.fl - 21: ldc #6 // String EMAIL -.fl - 23: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String; -.fl - 26: putfield #7 // Field email:Ljava/lang/String; -.fl - 29: return -.fl - -.fl - public void paint(java.awt.Graphics); -.fl - Code: -.fl - 0: aload_1 -.fl - 1: new #8 // class java/lang/StringBuilder -.fl - 4: dup -.fl - 5: invokespecial #9 // Method java/lang/StringBuilder."<init>":()V -.fl - 8: aload_0 -.fl - 9: getfield #5 // Field date:Ljava/lang/String; -.fl - 12: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; -.fl - 15: ldc #11 // String by -.fl - 17: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; -.fl - 20: invokevirtual #12 // Method java/lang/StringBuilder.toString:()Ljava/lang/String; -.fl - 23: bipush 100 -.fl - 25: bipush 15 -.fl - 27: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V -.fl - 30: aload_1 -.fl - 31: aload_0 -.fl - 32: getfield #7 // Field email:Ljava/lang/String; -.fl - 35: sipush 290 -.fl - 38: bipush 15 -.fl - 40: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V -.fl - 43: return -.fl -} -.fl -\fP -.fi - -.LP +.PP +\fIjavap\fRコマンドは、1つまたは複数のクラス・ファイルを逆アセンブルします。その出力は指定するオプションにより異なります。オプションを指定しない場合、\fIjavap\fRコマンドは、そのパッケージ、渡されたクラスのprotectedおよびpublicのフィールドとメソッドを出力します。\fIjavap\fRコマンドはその出力を\fI標準出力\fRに表示します。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-help \-\-help \-? -\f3javap\fP のヘルプメッセージを出力します。 -.TP 3 -\-version -バージョン情報を表示します。 -.TP 3 -\-l -行番号と局所変数テーブルを表示します。 -.TP 3 -\-public -public クラスおよびメンバーだけを表示します。 -.TP 3 -\-protected -protected および public のクラスとメンバーだけを表示します。 -.TP 3 -\-package -package、protected、および public のクラスとメンバーだけを表示します。これはデフォルトの設定です。 -.TP 3 -\-private \-p -すべてのクラスとメンバーを表示します。 -.TP 3 -\-Jflag -ランタイムシステムに直接 \f2flag\fP を渡します。使用例を次に示します。 -.nf -\f3 -.fl -javap \-J\-version -.fl -javap \-J\-Djava.security.manager \-J\-Djava.security.policy=MyPolicy MyClassName -.fl -\fP -.fi -.TP 3 -\-s -内部の型シグニチャーを出力します。 -.TP 3 -\-sysinfo -処理中のクラスのシステム情報 (パス、サイズ、日付、MD5 ハッシュ) を表示します。 -.TP 3 -\-constants -static final 定数を表示します。 -.TP 3 -\-c -クラスの各メソッドのために逆アセンブルされるコード、すなわち Java バイトコードから成る命令を表示します。これらは -.na -\f2「Java Virtual Machine Specification」\fP @ -.fi -http://java.sun.com/docs/books/vmspec/にドキュメント化されています。 -.TP 3 -\-verbose -メソッドのスタックサイズ、および \f2locals\fP と \f2args\fP の数を出力します。 -.TP 3 -\-classpath path -\f3javap\fP がクラスを探すために使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。 -.TP 3 -\-bootclasspath path -ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは \f2jre/lib/rt.jar\fP および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。 -.TP 3 -\-extdirs dirs -インストールされた拡張機能を検索する場所をオーバーライドします。拡張機能は、デフォルトでは \f2java.ext.dirs\fP にあります。 +.PP +\-help, \-\-help, \-? +.RS 4 +\fIjavap\fRコマンドについてのヘルプ・メッセージを出力します。 .RE - -.LP -.SH "関連項目" -.LP -.LP -javac(1)、java(1)、jdb(1)、javah(1)、javadoc(1) -.LP +.PP +\-version +.RS 4 +リリース情報を出力します。 +.RE +.PP +\-l +.RS 4 +行番号とローカル変数表を出力します。 +.RE +.PP +\-public +.RS 4 +publicクラスおよびメンバーのみ表示します。 +.RE +.PP +\-protected +.RS 4 +protectedおよびpublicのクラスとメンバーのみを表示します。 +.RE +.PP +\-private, \-p +.RS 4 +すべてのクラスとメンバーを表示します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +指定されたオプションをJVMに渡します。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javap \-J\-version +javap \-J\-Djava\&.security\&.manager \-J\-Djava\&.security\&.policy=MyPolicy MyClassName +.fi +.if n \{\ +.RE +.\} +JVMオプションの詳細は、コマンドのマニュアルを参照してください。 +.RE +.PP +\-s +.RS 4 +内部の型シグニチャを出力します。 +.RE +.PP +\-sysinfo +.RS 4 +処理中のクラスのシステム情報(パス、サイズ、日付、MD5ハッシュ)を表示します。 +.RE +.PP +\-constants +.RS 4 +\fIstatic final\fR定数を表示します。 +.RE +.PP +\-c +.RS 4 +クラスの各メソッドのために逆アセンブルされるコード、すなわちJavaバイトコードからなる命令を表示します。 +.RE +.PP +\-verbose +.RS 4 +メソッドのスタック・サイズ、localsとargumentsの数を出力します。 +.RE +.PP +\-classpath \fIpath\fR +.RS 4 +クラスを探すために\fIjavap\fRコマンドが使用するパスを指定します。デフォルトまたは\fICLASSPATH\fR環境変数の設定をオーバーライドします。 +.RE +.PP +\-bootclasspath \fIpath\fR +.RS 4 +ブートストラップ・クラスをロードするパスを指定します。ブートストラップ・クラスは、デフォルトでは\fIjre/lib/rt\&.jar\fRおよび他のいくつかのJARファイルにある、コアJavaプラットフォームを実装するクラスです。 +.RE +.PP +\-extdir \fIdirs\fR +.RS 4 +インストールされた拡張機能を検索する場所をオーバーライドします。拡張機能のデフォルト位置は\fIjava\&.ext\&.dirs\fRです。 +.RE +.SH "例" +.PP +次の\fIDocFooter\fRクラスをコンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +import java\&.awt\&.*; +import java\&.applet\&.*; +public class DocFooter extends Applet { + String date; + String email; + + public void init() { + resize(500,100); + date = getParameter("LAST_UPDATED"); + email = getParameter("EMAIL"); + } + + public void paint(Graphics g) { + g\&.drawString(date + " by ",100, 15); + g\&.drawString(email,290,15); + } +} +.fi +.if n \{\ +.RE +.\} +.PP +\fIjavap DocFooter\&.class\fRコマンドからの出力は次を生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Compiled from "DocFooter\&.java" +public class DocFooter extends java\&.applet\&.Applet { + java\&.lang\&.String date; + java\&.lang\&.String email; + public DocFooter(); + public void init(); + public void paint(java\&.awt\&.Graphics); +} +.fi +.if n \{\ +.RE +.\} +.PP +\fIjavap \-c DocFooter\&.class\fRコマンドからの出力は次を生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Compiled from "DocFooter\&.java" +public class DocFooter extends java\&.applet\&.Applet { + java\&.lang\&.String date; + java\&.lang\&.String email; + + public DocFooter(); + Code: + 0: aload_0 + 1: invokespecial #1 // Method +java/applet/Applet\&."<init>":()V + 4: return + + public void init(); + Code: + 0: aload_0 + 1: sipush 500 + 4: bipush 100 + 6: invokevirtual #2 // Method resize:(II)V + 9: aload_0 + 10: aload_0 + 11: ldc #3 // String LAST_UPDATED + 13: invokevirtual #4 // Method + getParameter:(Ljava/lang/String;)Ljava/lang/String; + 16: putfield #5 // Field date:Ljava/lang/String; + 19: aload_0 + 20: aload_0 + 21: ldc #6 // String EMAIL + 23: invokevirtual #4 // Method + getParameter:(Ljava/lang/String;)Ljava/lang/String; + 26: putfield #7 // Field email:Ljava/lang/String; + 29: return + + public void paint(java\&.awt\&.Graphics); + Code: + 0: aload_1 + 1: new #8 // class java/lang/StringBuilder + 4: dup + 5: invokespecial #9 // Method + java/lang/StringBuilder\&."<init>":()V + 8: aload_0 + 9: getfield #5 // Field date:Ljava/lang/String; + 12: invokevirtual #10 // Method + java/lang/StringBuilder\&.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 15: ldc #11 // String by + 17: invokevirtual #10 // Method + java/lang/StringBuilder\&.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 20: invokevirtual #12 // Method + java/lang/StringBuilder\&.toString:()Ljava/lang/String; + 23: bipush 100 + 25: bipush 15 + 27: invokevirtual #13 // Method + java/awt/Graphics\&.drawString:(Ljava/lang/String;II)V + 30: aload_1 + 31: aload_0 + 32: getfield #7 // Field email:Ljava/lang/String; + 35: sipush 290 + 38: bipush 15 + 40: invokevirtual #13 // Method +java/awt/Graphics\&.drawString:(Ljava/lang/String;II)V + 43: return +} +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javac(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javadoc(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/javaws.1 b/jdk/src/linux/doc/man/ja/javaws.1 index 500e6a7cba8..fc32e88de73 100644 --- a/jdk/src/linux/doc/man/ja/javaws.1 +++ b/jdk/src/linux/doc/man/ja/javaws.1 @@ -1,222 +1,232 @@ -." Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." under the terms of the GNU General Public License version 2 only, as -." published by the Free Software Foundation. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -." or visit www.oracle.com if you need additional information or have any -." questions. -." -.TH javaws 1 "07 May 2011" - -.LP -.SH "名前" -\f2javaws\fP コマンド行 -.LP -.SH "名前" -.LP -.LP -\f2javaws\fP \- Java Web Start 起動コマンド -.LP -.SH "形式" -.LP -.LP -\f2javaws [run\-options] <jnlp>\fP -.LP -.LP -\f2javaws [control\-options]\fP -.LP -.SH "パラメータ" -.LP -.LP -\f2[run\-options]\fP -.LP -.LP -コマンド行実行オプション。実行オプションは任意の順序で指定できます。各種オプションについては、下の 「実行オプション」を参照してください。 -.LP -.LP -\f2<jnlp>\fP -.LP -.LP -JNLP (Java Network Launching Protocol) ファイルのパスまたは URL (Uniform Resource Locator) のどちらかです。 -.LP -.LP -\f2[control\-options]\fP -.LP -.LP -コマンド行制御オプション。制御オプションは任意の順序で指定できます。各種オプションについては、下の 「制御オプション」を参照してください。 -.LP +'\" t +.\" Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: javaws +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java Web Startツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "javaws" "1" "2013年11月21日" "JDK 8" "Java Web Startツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +javaws \- Java Web Startを起動します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjavaws\fR [ \fIrun\-options\fR ] \fIjnlp\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjavaws\fR [ \fIcontrol\-options\fR ] +.fi +.if n \{\ +.RE +.\} +.PP +\fIrun\-options\fR +.RS 4 +コマンドライン\fI実行オプション\fR。\fI実行オプション\fRは任意の順序で指定できます。実行オプションを参照してください。 +.RE +.PP +\fIjnlp\fR +.RS 4 +JNLP (Java Network Launching Protocol)ファイルのパスまたはURL (Uniform Resource Locator)のどちらか。 +.RE +.PP +\fI制御オプション\fR +.RS 4 +コマンドライン\fI制御オプション\fR。\fI制御オプション\fRは任意の順序で指定できます。制御オプションを参照してください。 +.RE .SH "説明" -.LP -.LP -\f2javaws\fP コマンドは、JNLP (Java Network Launching Protocol) のリファレンス実装である Java Web Start を起動します。Java Web Start は、ネットワーク上で動作する Java アプリケーションまたはアプレットを起動します。 -.LP -.LP -JNLP ファイルが指定された場合、 \f2javaws\fP は、その JNLP ファイルで指定された Java アプリケーション/アプレットを起動します。 -.LP -.LP -\f2javaws\fP 起動ツールには、現在のリリースでサポートされている 1 組のオプションがあります。ただし、これらのオプションは将来のリリースでは削除される可能性があります。 -.LP +.PP +\fB注意:\fR +\fIjavaws\fRコマンドは、Oracle Solarisでは使用できません。 +.PP +\fIjavaws\fRコマンドは、JNLPのリファレンス実装であるJava Web Startを起動します。Java Web Startは、ネットワーク上で動作するJavaアプリケーションおよびアプレットを起動します。 +.PP +JNLPファイルが指定されると、\fIjavaws\fRコマンドはJNLPファイルで指定したJavaアプリケーションまたはアプレットを起動します。 +.PP +\fIjavaws\fR起動ツールには、現在のリリースでサポートされている1組のオプションがあります。ただし、これらのオプションは将来のリリースでは削除される可能性があります。 .SH "実行オプション" -.LP -.LP -\f2\-offline\fP -.LP -.LP -Java Web Start をオフラインモードで実行します。 -.LP -.LP -\f2\-Xnosplash\fP -.LP -.LP +.PP +\-offline +.RS 4 +Java Web Startをオフライン・モードで実行します。 +.RE +.PP +\-Xnosplash +.RS 4 初期スプラッシュ画面を表示しません。 -.LP -.LP -\f2\-open <arguments>\fP -.LP -.LP -このオプションを指定すると、JNLP ファイル内の引数が \f2\-open <arguments>\fP に置き換わります。 -.LP -.LP -\f2\-print <arguments>\fP -.LP -.LP -このオプションを指定すると、JNLP ファイル内の引数が \f2\-print <arguments>\fP に置き換わります。 -.LP -.LP -\f2\-online\fP -.LP -.LP -オンラインモードを使用します (デフォルトの動作)。 -.LP -.LP -\f2\-wait\fP -.LP -.LP -このオプションを指定した場合、 \f2javaws\fP プロセスは、アプリケーションが終了するまで終了しません。Windows プラットフォーム上では、このオプションは説明したとおりに機能しません。 -.LP -.LP -\f2\-verbose\fP -.LP -.LP +.RE +.PP +\-open \fIarguments\fR +.RS 4 +このオプションを指定すると、JNLPファイル内の引数が\fI\-open\fR +\fIarguments\fRに置き換わります。 +.RE +.PP +\-print \fIarguments\fR +.RS 4 +このオプションを指定すると、JNLPファイル内の引数が\fI\-print\fR +\fIarguments\fRに置き換わります。 +.RE +.PP +\-online +.RS 4 +オンライン・モードを使用します。これは、デフォルトの動作です。 +.RE +.PP +\-wait +.RS 4 +\fIjavaws\fRプロセスは、アプリケーションが終了するまで終了しません。Windowsプラットフォーム上では、このオプションは説明したとおりに機能しません。 +.RE +.PP +\-verbose +.RS 4 追加の出力を表示します。 -.LP -.LP -\f2\-J<option>\fP -.LP -.LP -vm にオプションを補います。 -.LP -.LP -\f2\-system\fP -.LP -.LP -アプリケーションをシステムキャッシュからのみ実行します。 -.LP +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンにoptionを渡します。\fIoption\fRには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.PP +\-system +.RS 4 +アプリケーションをシステム・キャッシュのみから実行します。 +.RE .SH "制御オプション" -.LP -.LP -\f2\-viewer\fP -.LP -.LP -Java コントロールパネルでキャッシュビューアを表示します。 -.LP -.LP -\f2\-clearcache\fP -.LP -.LP +.PP +\-viewer +.RS 4 +Javaコントロール・パネルでキャッシュ・ビューアを表示します。 +.RE +.PP +\-clearcache +.RS 4 インストールされていないすべてのアプリケーションをキャッシュから削除します。 -.LP -.LP -\f2\-userConfig <property name>\fP -.LP -.LP -指定された配備プロパティーをクリアします。 -.LP -.LP -\f2\-userConfig <property name> <property value>\fP -.LP -.LP -指定された配備プロパティーを指定された値に設定します。 -.LP -.LP -\f2\-uninstall\fP -.LP -.LP +.RE +.PP +\-userConfig \fIproperty\-name\fR +.RS 4 +指定されたデプロイメント・プロパティをクリアします。 +.RE +.PP +\-userConfig \fIproperty\-name property\-value\fR +.RS 4 +指定されたデプロイメント・プロパティを指定された値に設定します。 +.RE +.PP +\-uninstall +.RS 4 キャッシュからすべてのアプリケーションを削除します。 -.LP -.LP -\f2\-uninstall <jnlp>\fP -.LP -.LP +.RE +.PP +\-uninstall \fIjnlp\fR +.RS 4 キャッシュからアプリケーションを削除します。 -.LP -.LP -\f2\-import [import\-options] <jnlp>\fP -.LP -.LP +.RE +.PP +\-print \fIimport\-options \fRjnlp +.RS 4 キャッシュにアプリケーションをインポートします。 -.LP -.SH "インポートオプション" -.LP -.LP -\f2\-silent\fP -.LP -.LP -サイレントモードでインポートします (UI は表示されません)。 -.LP -.LP -\f2\-system\fP -.LP -.LP -システムキャッシュにアプリケーションをインポートします。 -.LP -.LP -\f2\-codebase <url>\fP -.LP -.LP -任意の codebase からリソースを取得します。 -.LP -.LP -\f2\-shortcut\fP -.LP -.LP -ユーザー許容プロンプトのようにショートカットをインストールします。このオプションは、 \f2\-silent\fP オプションも使用しないと効果がありません。 -.LP -.LP -\f2\-association\fP -.LP -.LP -ユーザー許容プロンプトのように関連付けをインストールします。このオプションは、 \f2\-silent\fP オプションも使用しないと効果がありません。 -.LP +.RE +.SH "インポート・オプション" +.PP +\-silent +.RS 4 +サイレント・モードでインポートします(ユーザー・インタフェースは表示されません)。 +.RE +.PP +\-system +.RS 4 +システム・キャッシュにアプリケーションをインポートします。 +.RE +.PP +\-codebase \fIurl\fR +.RS 4 +指定したコードベースからリソースを取得します。 +.RE +.PP +\-shortcut +.RS 4 +ユーザーがプロンプトを受け入れればショートカットをインストールします。このオプションは、 +\fI\-silent\fRオプションも使用しないと効果がありません。 +.RE +.PP +\-association +.RS 4 +ユーザーがプロンプトを受け入れればアソシエーションをインストールします。このオプションは、 +\fI\-silent\fRオプションも使用しないと効果がありません。 +.RE +.PP +\fB注意:\fR\fIjavaws \-shortcut \-uninstall\fR .SH "ファイル" -.LP -.LP -ユーザーキャッシュ、システムキャッシュ、および deployment.properties ファイルについては、 -.na -\f2システムレベルおよびユーザーレベルのプロパティー\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/properties.htmlを参照してください。 -.LP -.SH "詳細情報" -.LP -.LP -Java Web Start の詳細は、 -.na -\f2「Java Web Start」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javaws/index.htmlを参照してください。 -.LP - +.PP +ユーザーおよびシステム・キャッシュならびにdeployment\&.propertiesファイルの詳細は、構成ファイルおよびプロパティのデプロイメント +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/deployment/deployment\-guide/properties\&.html)を参照してください +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Java Web Start +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javaws/index\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jcmd.1 b/jdk/src/linux/doc/man/ja/jcmd.1 new file mode 100644 index 00000000000..d79de5a2d19 --- /dev/null +++ b/jdk/src/linux/doc/man/ja/jcmd.1 @@ -0,0 +1,154 @@ +'\" t +.\" Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jcmd +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jcmd" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jcmd \- 実行中のJava仮想マシン(JVM)に診断コマンド・リクエストを送信します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjcmd\fR [\fI\-l\fR|\fI\-h\fR|\fI\-help\fR] +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjcmd\fR \fIpid\fR|\fImain\-class\fR \fIPerfCounter\&.print\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjcmd\fR \fIpid\fR|\fImain\-class\fR \fI\-f\fR \fIfilename\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjcmd\fR \fIpid\fR|\fImain\-class\fR \fIcommand\fR[ \fIarguments\fR] +.fi +.if n \{\ +.RE +.\} +.SH "説明" +.PP +\fIjcmd\fRユーティリティは、JVMに診断コマンド・リクエストを送信するために使用されます。これはJVMが稼働しているのと同じマシンで使用し、JVMの起動に使用したものと同じ有効ユーザーおよびグループ識別子を持っている必要があります。 +.PP +\fB注意:\fR +リモート・マシンから、または別の識別子で診断コマンドを起動するには、\fIcom\&.sun\&.management\&.DiagnosticCommandMBean\fRインタフェースを使用できます。\fIDiagnosticCommandMBean\fRインタフェースの詳細は、http://download\&.java\&.net/jdk8/docs/jre/api/management/extension/com/sun/management/DiagnosticCommandMBean\&.htmlにあるAPIドキュメントを参照してください。 +.PP +\fIjcmd\fRを引数なしまたは\fI\- l\fRオプションを指定して実行した場合は、実行中のJavaプロセス識別子のリストが、メイン・クラスおよびプロセスの起動に使用されたコマンドライン引数とともに出力されます。\fI\-h\fRまたは\fI\-help\fRオプションを指定して\fIjcmd\fRを実行すると、ツールのヘルプ・メッセージが出力されます。 +.PP +プロセス識別子(\fIpid\fR)またはメイン・クラス(\fImain\-class\fR)を最初の引数として指定した場合、\fIjcmd\fRは、識別子を指定した場合はJavaプロセスに、メイン・クラスの名前を指定した場合はすべてのJavaプロセスに診断コマンド・リクエストを送信します。プロセス識別子として\fI0\fRを指定して、すべての使用可能なJavaプロセスに診断コマンド・リクエストを送信することもできます。診断コマンド・リクエストとして、次のいずれかを使用します。 +.PP +Perfcounter\&.print +.RS 4 +指定したJavaプロセスで使用可能なパフォーマンス・カウンタが出力されます。パフォーマンス・カウンタのリストはJavaプロセスによって異なる場合があります。 +.RE +.PP +\-f \fIfilename\fR +.RS 4 +診断コマンドを読み取り、指定したJavaプロセスに送信するファイルの名前。\fI\-f\fRオプションでのみ使用します。ファイル内の各コマンドは、1行で記述する必要があります。番号記号(\fI#\fR)で始まる行は無視されます。すべての行が読み取られるか、\fIstop\fRキーワードを含む行が読み取られると、ファイルの処理が終了します。 +.RE +.PP +\fIcommand\fR [\fIarguments\fR] +.RS 4 +指定されたJavaプロセスに送信するコマンド。指定したプロセスで使用できる診断コマンドのリストは、このプロセスに対して\fIhelp\fRコマンドを送信すれば表示されます。各診断コマンドに独自の引数セットがあります。コマンドの説明、構文および使用可能な引数のリストを表示するには、\fIhelp\fRコマンドの引数としてコマンド名を使用します。 +.sp +\fB注意:\fR +引数にスペースが含まれている場合は、一重引用符または二重引用符(\fI\*(Aq\fRまたは\fI"\fR)で囲む必要があります。加えて、オペレーティング・システム・シェルが引用符を処理しないように、バックスラッシュ(\fI\e\fR)で一重引用符または二重引用符をエスケープする必要があります。または、これらの引数を一重引用符で囲んでから、二重引用符で囲むこともできます(または二重引用符で囲んでから、一重引用符で囲む)。 +.RE +.SH "オプション" +.PP +各オプションは互いに排他的です。 +.PP +\-f \fIfilename\fR +.RS 4 +指定されたファイルからコマンドを読み取ります。このオプションは、最初の引数としてプロセス識別子またはメイン・クラスを指定する場合にのみ使用できます。ファイル内の各コマンドは、1行で記述する必要があります。番号記号(\fI#\fR)で始まる行は無視されます。すべての行が読み取られるか、\fIstop\fRキーワードを含む行が読み取られると、ファイルの処理が終了します。 +.RE +.PP +\-h, \-help +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.PP +\-l +.RS 4 +実行中のJavaプロセス識別子のリストをメイン・クラスおよびコマンドライン引数とともに出力します。 +.RE +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jconsole.1 b/jdk/src/linux/doc/man/ja/jconsole.1 index fc9c17c2a59..426fb365ba8 100644 --- a/jdk/src/linux/doc/man/ja/jconsole.1 +++ b/jdk/src/linux/doc/man/ja/jconsole.1 @@ -1,157 +1,156 @@ -." 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 -." 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 jconsole 1 "07 May 2011" - -.LP -.SH "名前" -jconsole \- Java 監視および管理コンソール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jconsole +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Javaトラブルシューティング、プロファイリング、モニタリングおよび管理ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jconsole" "1" "2013年11月21日" "JDK 8" "Javaトラブルシューティング、プロファイリング、モニタリン" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jconsole \- Javaアプリケーションを監視および管理するためのグラフィカル・コンソールを開始します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jconsole\fP [ \f2options\fP ] [ connection ... ] -.fl - -.fl +\fIjconsole\fR [ \fIoptions\fR ] [ connection \&.\&.\&. ] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -options -オプションを使用する場合、コマンド名の直後に記述してください。 -.TP 3 -connection = pid | host:port | jmxUrl -.RS 3 -.TP 2 -o -\f2pid\fPローカルの Java VM のプロセス ID。Java VM は、jconsole を実行しているユーザー ID と同じユーザー ID を使用して実行する必要があります。詳細については、 -.na -\f2「JMX 監視および管理」\fP @ -.fi -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 @ -.fi -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 を参照してください。 +.if n \{\ .RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 .RE - -.LP -.SH " 説明" -.LP -.LP -\f3jconsole\fP コマンドは、ローカルマシンまたはリモートマシン上の Java アプリケーションと仮想マシンの監視と管理を行うグラフィカルコンソールツールを起動します。 -.LP -.LP -Windows 上では、\f3jconsole\fP はコンソールウィンドウと関連付けられていません。ただし、なんらかの理由で \f3jconsole\fP コマンドが失敗すると、エラー情報を示すダイアログボックスが表示されます。 -.LP +.PP +connection = \fIpid\fR | \fIhost\fR:\fIport\fR | \fIjmxURL\fR +.RS 4 +\fIpid\fR値はローカルのJava仮想マシン(JVM)のプロセスIDです。JVMは\fIjconsole\fRコマンドを実行しているユーザーIDと同じユーザーIDで実行する必要があります。\fIhost:port\fR値はJVMが動作しているホスト・システムの名前と、JVMが開始したときにシステム・プロパティ\fIcom\&.sun\&.management\&.jmxremote\&.port\fRで指定したポート番号です。\fIjmxUrl\fR値は、JMXServiceURLで記述されている、接続されるJMXエージェントのアドレスです。 +.sp +\fIconnection\fRパラメータの詳細は、JMXテクノロジを使用したモニタリングおよび管理 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/agent\&.html)を参照してください +.sp +\fIJMXServiceURL\fRクラスの説明( +http://docs\&.oracle\&.com/javase/8/docs/api/javax/management/remote/JMXServiceURL\&.html)も参照してください +.RE +.SH "説明" +.PP +\fIjconsole\fRコマンドは、ローカル・マシンまたはリモート・マシン上のJavaアプリケーションと仮想マシンの監視と管理を行うグラフィカル・コンソール・ツールを起動します。 +.PP +Windows上では、\fIjconsole\fRコマンドはコンソール・ウィンドウと関連付けられていません。ただし、\fIjconsole\fRコマンドが失敗すると、エラー情報を示すダイアログ・ボックスが表示されます。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-interval=n -更新間隔を \f2n\fP 秒に設定します (デフォルトは 4 秒)。 -.TP 3 -\-notile -最初にウィンドウをタイリングしません (複数の接続のため)。 -.TP 3 -\-pluginpath plugins -JConsole プラグインの検索先となるディレクトリまたは JAR ファイルのリストを指定します。\f2plugins\fP パスには、次の名前のプロバイダ構成ファイルを含めてください。 -.br -.nf -\f3 -.fl - META\-INF/services/com.sun.tools.jconsole.JConsolePlugin -.fl -\fP -.fi -.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 行ずつ含まれています。 -.TP 3 -\-version -バージョン情報を出力して終了します。 -.TP 3 -\-help -ヘルプメッセージを出力して終了します。 -.TP 3 -\-J<flag> -jconsole が実行されている Java 仮想マシンに <flag> を渡します。 +.PP +\-interval\fI=n\fR +.RS 4 +更新間隔を\fIn\fR秒に設定します(デフォルトは4秒)。 +.RE +.PP +\-notile +.RS 4 +最初にウィンドウをタイリングしません(複数接続の場合)。 +.RE +.PP +\-pluginpath \fIplugins\fR +.RS 4 +\fIJConsole\fRプラグインを検索するディレクトリまたはJARファイルのリストを指定します。\fIplugins\fRパスには\fIMETA\-INF/services/com\&.sun\&.tools\&.jconsole\&.JConsolePlugin\fRという名前のプロバイダ構成ファイルを含んでいる必要があり、これにはプラグインごとに1行が含まれています。その行は\fIcom\&.sun\&.tools\&.jconsole\&.JConsolePlugin\fRクラスを実装しているクラスの完全修飾クラス名を指定します。 +.RE +.PP +\-version +.RS 4 +リリース情報を表示して終了します。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示します。 +.RE +.PP +\-J\fIflag\fR +.RS 4 +\fIjconsole\fRコマンドを実行したJVMに\fIflag\fRを渡します。 .RE - -.LP .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -.na -\f2JConsole の使用\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html -.TP 2 -o -.na -\f2「Java プラットフォームの監視および管理」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/management/index.html +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +JConsoleの使用 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/jconsole\&.html) .RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +JMXテクノロジを使用したモニタリングおよび管理 -.LP - +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/agent\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIJMXServiceURL\fRクラスの説明( +http://docs\&.oracle\&.com/javase/8/docs/api/javax/management/remote/JMXServiceURL\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jdb.1 b/jdk/src/linux/doc/man/ja/jdb.1 index 4904c9d8eab..f7bcabdec2f 100644 --- a/jdk/src/linux/doc/man/ja/jdb.1 +++ b/jdk/src/linux/doc/man/ja/jdb.1 @@ -1,326 +1,382 @@ -." Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." 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 jdb 1 "07 May 2011" - -.LP -.SH "名前" -jdb \- Java デバッガ -.LP -.LP -\f3jdb\fP は、Java 言語プログラムのバグを見つけて修正するために使用するツールです。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jdb +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jdb" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jdb \- Javaプラットフォーム・プログラムの不具合を検出および修正します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jdb\fP [ options ] [ class ] [ arguments ] -.fl +\fIjdb\fR [\fIoptions\fR] [\fIclassname\fR] [\fIarguments\fR] .fi - -.LP -.RS 3 -.TP 3 -options -次に示すコマンド行オプション -.TP 3 -class -デバッグを開始するクラスの名前 -.TP 3 -arguments -class の \f2main()\fP メソッドに渡す \f2引数\fP +.if n \{\ .RE - -.LP -.SH " 説明" -.LP -.LP -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 の検査とデバッグを行うことができます。 -.LP -.SS -jdb セッションの開始 -.LP -.LP -jdb セッションを開始するにはさまざまな方法があります。もっとも頻繁に使われるのは、デバッグするアプリケーションのメインクラスを使用して、\f3jdb\fP から新しい Java 仮想マシン (VM) を起動する方法です。コマンド行で、\f3java\fP の代わりに \f3jdb\fP コマンドを入力します。たとえば、アプリケーションのメインクラスが MyClass の場合は、JDB 環境でデバッグするときに次のコマンドを使用します。 -.LP +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIclass\fRname +.RS 4 +デバッグするメイン・クラスの名前。 +.RE +.PP +\fIarguments\fR +.RS 4 +classの\fImain()\fRメソッドに渡す引数。 +.RE +.SH "説明" +.PP +Javaデバッガ(JDB)は、Javaクラス用の簡単なコマンドライン・デバッガです。\fIjdb\fRコマンドとそのオプションはJDBを呼び出します。\fIjdb\fRコマンドは、JDBA (Java Platform Debugger Architecture)を視覚的に実行し、ローカルまたはリモートのJava仮想マシン(JVM)の検査とデバッグを行うことができます。Java Platform Debugger Architecture (JDBA) +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html)を参照してください。 +.SS "JDBセッションの開始" +.PP +JDBセッションを開始するには様々な方法があります。最も頻繁に使用されるのは、デバッグするアプリケーションのメイン・クラスを使用して、JDBから新しいJVMを起動する方法です。コマンドラインで、\fIjava\fRコマンドのかわりに\fIjdb\fRコマンドを入力します。たとえば、アプリケーションのメイン・クラスが\fIMyClass\fRの場合は、JDB環境でデバッグするときに次のコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % jdb MyClass -.fl -\fP +jdb MyClass .fi - -.LP -.LP -この方法で起動すると、\f3jdb\fP は、指定されたパラメータを使って 2 つ目の Java VM を呼び出します。次に、指定されたクラスをロードして、クラスの最初の命令を実行する前に VM を停止させます。 -.LP -.LP -\f3jdb\fP のもう 1 つの使用方法は、すでに起動している Java VM に jdb を接続することです。jdb が接続する VM を、その実行中に起動するための構文を次に示します。これは、インプロセスデバッグ用ライブラリをロードし、接続の種類を指定します。 -.LP +.if n \{\ +.RE +.\} +.PP +この方法で起動すると、\fIjdb\fRコマンドは、指定されたパラメータを使用して2つ目のJVMを呼び出します。次に、指定されたクラスをロードして、クラスの最初の命令を実行する前にJVMを停止させます。 +.PP +\fIjdb\fRコマンドのもう1つの使用方法は、すでに実行中のJVMにjdbを接続することです。\fIjdb\fRコマンドが接続するVMを、その実行中に起動するための構文を次に示します。これは、インプロセス・デバッグ用ライブラリをロードし、接続の種類を指定します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\-agentlib:jdwp=transport=dt_socket,server=y,suspend=n -.fl -\fP +java \-agentlib:jdwp=transport=dt_socket,server=y,suspend=n MyClass .fi - -.LP -.LP -たとえば、次のコマンドは、MyClass アプリケーションを実行して、\f3jdb\fP があとでそのアプリケーションに接続できるようにします。 -.LP +.if n \{\ +.RE +.\} +.PP +次のコマンドを使用して、\fIjdb\fRコマンドをJVMに接続できます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % java \-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n MyClass -.fl -\fP +jdb \-attach 8000 .fi - -.LP -.LP -次のコマンドを使用して、\f3jdb\fP を VM に接続できます。 -.LP +.if n \{\ +.RE +.\} +.PP +この場合、\fIjdb\fRコマンドは新しいJVMを起動するかわりに既存のJVMに接続されるため、\fIjdb\fRコマンドラインに\fIMyClass\fR引数は指定しません。 +.PP +デバッガをJVMに接続するには他にも様々な方法があり、すべて\fIjdb\fRコマンドでサポートされています。接続オプションについては、Java Platform Debugger Architectureのドキュメントを参照してください。 +.SS "基本jdbコマンド" +.PP +基本的な\fIjdb\fRコマンドの一覧を示します。JDBがサポートするコマンドはこれ以外にもあり、それらは\fI\-help\fRオプションを使用して表示できます。 +.PP +helpまたは? +.RS 4 +\fIhelp\fRまたは\fI?\fRコマンドは、認識されたコマンドのリストに簡潔な説明を付けて表示します。 +.RE +.PP +run +.RS 4 +JDBを起動してブレークポイントを設定したあとに、\fIrun\fRコマンドを使用して、デバッグするアプリケーションの実行を開始できます。\fIrun\fRコマンドは、既存のVMに接続している場合とは異なり、デバッグするアプリケーションが\fIjdb\fRから起動したときにのみ使用できます。 +.RE +.PP +cont +.RS 4 +ブレークポイント、例外、またはステップ実行の後で、デバッグするアプリケーションの実行を継続します。 +.RE +.PP +print +.RS 4 +Javaオブジェクトおよびプリミティブ値を表示します。プリミティブ型の変数またはフィールドの場合には、実際の値が出力されます。オブジェクトの場合には、短い説明が出力されます。オブジェクトの詳細を取得する方法を探すには、dumpコマンドを参照してください。 +.sp +\fB注意:\fR +ローカル変数を表示するには、含んでいるクラスが\fIjavac \-g\fRオプションを使用してコンパイルされている必要があります。 +.sp +\fIprint\fRコマンドは、次に示すような、メソッド呼出しを使用したものなど、多くの簡単なJava式をサポートします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % jdb \-attach 8000 -.fl -\fP +print MyClass\&.myStaticField +print myObj\&.myInstanceField +print i + j + k (i, j, k are primities and either fields or local variables) +print myObj\&.myMethod() (if myMethod returns a non\-null) +print new java\&.lang\&.String("Hello")\&.length() .fi - -.LP -.LP -この場合、\f3jdb\fP は新しい VM を起動する代わりに既存の VM に接続されるため、\f3jdb\fP コマンド行には「MyClass」は指定しません。 -.LP -.LP -デバッガを VM に接続するにはほかにもさまざまな方法があり、すべて \f3jdb\fP でサポートされています。接続オプションについては、Java Platform Debugger Architecture の -.na -\f2ドキュメント\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.htmlを参照してください。\f3jdb\fP で使用するために J2SE 1.4.2 以前の VM を起動する方法については、 -.na -\f21.4.2 のドキュメント\fP @ -.fi -http://java.sun.com/j2se/1.4.2/docs/guide/jpda/conninv.htmlを参照してください。 -.LP -.SS -基本 jdb コマンド -.LP -.LP -基本的な \f3jdb\fP コマンドの一覧を示します。Java デバッガがサポートするコマンドはこれ以外にもあり、それらは \f3jdb\fP の \f2help\fP コマンドを使用して表示できます。 -.LP -.RS 3 -.TP 3 -help または ? -もっとも重要な \f3jdb\fP コマンド \f2help\fP は、認識されたコマンドのリストに簡潔な説明を付けて表示します。 -.TP 3 -run -\f3jdb\fP を起動して必要なブレークポイントを設定したあとに、このコマンドを使用して、デバッグするアプリケーションの実行を開始できます。このコマンドは、既存の VM に接続している場合とは異なり、デバッグするアプリケーションが \f3jdb\fP から起動したときにだけ使用できます。 -.TP 3 -cont -ブレークポイント、例外、またはステップ実行のあとで、デバッグするアプリケーションの実行を継続します。 -.TP 3 -print -Java オブジェクトおよびプリミティブ値を表示します。プリミティブ型の変数またはフィールドの場合には、実際の値が出力されます。オブジェクトの場合には、短い説明が出力されます。オブジェクトについては、以降の \f2dump\fP コマンドの説明を参照してください。 -.LP -\f2注: 局所変数を表示するには、その変数を含むクラスが \fP\f2javac(1)\fP\f2 \fP\f2\-g\fP オプションでコンパイルされている必要があります。 -.LP -\f2print\fP では、メソッドの呼び出しを含む多数の簡単な Java 式がサポートされています。次に例を示します。 -.RS 3 -.TP 2 -o -\f2print MyClass.myStaticField\fP -.TP 2 -o -\f2print myObj.myInstanceField\fP -.TP 2 -o -\f2print i + j + k\fP (i、j、および k はプリミティブであり、フィールドまたは局所変数のいずれか) -.TP 2 -o -\f2print myObj.myMethod()\fP (myMethod が null 以外を返す場合) -.TP 2 -o -\f2print new java.lang.String("Hello").length()\fP +.if n \{\ .RE -.TP 3 -dump -プリミティブ値の場合には、このコマンドは \f2print\fP と同じです。オブジェクトの場合には、オブジェクト内に定義されている各フィールドの現在の値が出力されます。static フィールドと instance フィールドが出力されます。 -.LP -\f2dump\fP コマンドでは、\f2print\fP コマンドと同じ式がサポートされます。 -.TP 3 -threads -現在実行中のスレッドを一覧表示します。スレッドごとに、名前と現在の状態、およびほかのコマンドに使用できるインデックスが出力されます。次に例を示します。 +.\} +.RE +.PP +dump +.RS 4 +プリミティブ値の場合、\fIdump\fRコマンドは\fIprint\fRコマンドと同一です。オブジェクトの場合、\fIdump\fRコマンドでは、オブジェクト内に定義されている各フィールドの現在の値が出力されます。staticフィールドとinstanceフィールドが出力されます。\fIdump\fRコマンドでは、\fIprint\fRコマンドと同じ式がサポートされます。 +.RE +.PP +threads +.RS 4 +現在実行中のスレッドを一覧表示します。スレッドごとに、名前と現在の状態、および他のコマンドに使用できるインデックスが出力されます。この例では、スレッド・インデックスは4であり、スレッドは\fIjava\&.lang\&.Thread\fRのインスタンスで、スレッドの名前は\fImain\fRであり、現在実行中です。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -4. (java.lang.Thread)0x1 main running -.fl -\fP +4\&. (java\&.lang\&.Thread)0x1 main running .fi -この例では、スレッドインデックスは 4 であり、スレッドは java.lang.Thread のインスタンスです。スレッドの名前は「main」であり、現在実行中です。 -.TP 3 -thread -現在のスレッドにするスレッドを選択します。多くの \f3jdb\fP コマンドは、現在のスレッドの設定に基づいて実行されます。スレッドは、\f2threads\fP コマンドで説明したスレッドインデックスとともに指定します。 -.TP 3 -where -\f2引数を指定しないで\fP where を実行すると、現在のスレッドのスタックがダンプされます。 \f2where all\fP コマンドは、現在のスレッドグループにあるスレッドのスタックをすべてダンプします。 \f2where\fP \f2threadindex\fP は、指定されたスレッドのスタックをダンプします。 -.LP -現在のスレッドが (ブレークポイントか \f2suspend\fP コマンドによって) 中断している場合は、局所変数とフィールドは \f2print\fP コマンドと \f2dump\fP コマンドで表示できます。\f2up\fP コマンドと \f2down\fP コマンドで、どのスタックフレームをカレントにするかを選ぶことができます。 +.if n \{\ .RE - -.LP -.SS -ブレークポイント -.LP -.LP -ブレークポイントは、行番号またはメソッドの最初の命令で \f3jdb\fP に設定できます。次に例を示します。 -.LP -.RS 3 -.TP 2 -o -\f2stop at MyClass:22\fP (MyClass が含まれるソースファイルの 22 行目の最初の命令にブレークポイントを設定) -.TP 2 -o -\f2stop in java.lang.String.length\fP (\f2java.lang.String.length\fP メソッドの最初にブレークポイントを設定) -.TP 2 -o -\f2stop in MyClass.<init>\fP (<init> は MyClass コンストラクタを識別) -.TP 2 -o -\f2stop in MyClass.<clinit>\fP (<clinit> は MyClass の静的初期化コードを識別) +.\} .RE - -.LP -.LP -メソッドがオーバーロードされている場合には、メソッドの引数の型も指定して、ブレークポイントに対して適切なメソッドが選択されるようにしなければなりません。たとえば、「\f2MyClass.myMethod(int,java.lang.String)\fP」または「\f2MyClass.myMethod()\fP」と指定します。 -.LP -.LP -\f2clear\fP コマンドは、「\f2clear\ MyClass:45\fP」のような構文を使用してブレークポイントを削除します。\f2clear\fP を使用するか、引数を指定しないでコマンドを使用すると、現在設定されているすべてのブレークポイントが表示されます。\f2cont\fP コマンドは実行を継続します。 -.LP -.SS -ステップ実行 -.LP -.LP -\f2step\fP コマンドは、現在のスタックフレームまたは呼び出されたメソッド内で、次の行を実行します。\f2next\fP コマンドは、現在のスタックフレームの次の行を実行します。 -.LP -.SS -例外 -.LP -.LP -スローしているスレッドの呼び出しスタック上のどこにも catch 文がない場合に例外が発生すると、VM は通常、例外トレースを出力して終了します。ただし、\f3jdb\fP 環境で実行している場合は、例外が発生すると \f3jdb\fP に制御が戻ります。次に、\f3jdb\fP を使用して例外の原因を診断します。 -.LP -.LP -たとえば、「\f2catch java.io.FileNotFoundException\fP」または「\f2catch mypackage.BigTroubleException\fP」のように \f2catch\fP コマンドを使用すると、デバッグされたアプリケーションは、ほかの例外がスローされたときに停止します。例外が特定のクラス (またはサブクラス) のインスタンスの場合は、アプリケーションは例外がスローされた場所で停止します。 -.LP -.LP -\f2ignore\fP コマンドを使うと、以前の \f2catch\fP コマンドの効果が無効になります。 -.LP -.LP -\f2注: \fP\f2ignore\fP コマンドでは、デバッグされる VM は例外を無視せず、デバッガだけが例外を無視します。 -.LP -.SH "コマンド行オプション" -.LP -.LP -コマンド行で Java アプリケーション起動ツールの代わりに \f3jdb\fP を使用する場合、\f3jdb\fP は、\f2\-D\fP、\f2\-classpath\fP、\f2\-X<option>\fP など、java コマンドと同じ数のオプションを受け入れます。 -.LP -.LP -\f3jdb\fP は、そのほかに次のオプションを受け入れます。 -.LP -.RS 3 -.TP 3 -\-help -ヘルプメッセージを表示します。 -.TP 3 -\-sourcepath <dir1:dir2:...> -指定されたパスを使用して、ソースファイルを検索します。このオプションが指定されていない場合は、デフォルトパスの「.」が使われます。 -.TP 3 -\-attach <address> -デフォルトの接続機構を使用して、すでに実行中の VM にデバッガを接続します。 -.TP 3 -\-listen <address> -実行中の VM が標準のコネクタを使って指定されたアドレスに接続するのを待機します。 -.TP 3 -\-listenany -実行中の VM が標準のコネクタを使って利用可能な任意のアドレスに接続するのを待機します。 -.TP 3 -\-launch -デバッグするアプリケーションを jdb の起動後ただちに起動します。このオプションによって、\f2run\fP コマンドを使用する必要がなくなります。デバッグするアプリケーションは、起動後、初期アプリケーションクラスがロードされる直前に停止します。その時点で、必要なブレークポイントを設定し、\f2cont\fP を使用して実行を継続できます。 -.TP 3 -\-listconnectors -この VM で利用できるコネクタを一覧表示します。 -.TP 3 -\-connect <connector\-name>:<name1>=<value1>,... -一覧表示された引数の値と指定のコネクタを使ってターゲット VM に接続します。 -.TP 3 -\-dbgtrace [flags] -jdb のデバッグ情報を出力します。 -.TP 3 -\-tclient -Java HotSpot(tm) VM (クライアント) 内でアプリケーションを実行します。 -.TP 3 -\-tserver -Java HotSpot(tm) VM (サーバー) 内でアプリケーションを実行します。 -.TP 3 -\-Joption -jdb の実行に使用される Java 仮想マシンに \f2option\fP を渡します。(アプリケーション Java 仮想マシンに対するオプションは、\f3run\fP コマンドに渡される)。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +.PP +thread +.RS 4 +現在のスレッドにするスレッドを選択します。多くの\fIjdb\fRコマンドは、現在のスレッドの設定に基づいて実行されます。スレッドは、threadsコマンドで説明したスレッド・インデックスとともに指定します。 .RE - -.LP -.LP -デバッガとデバッグを行う VM を接続するための代替機構に対して、その他のオプションがサポートされています。その他の接続オプションについては、Java Platform Debugger Architecture の -.na -\f2ドキュメント\fP @ -.fi -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 オプションです。 +.PP +where +.RS 4 +引数を指定しないで\fIwhere\fRコマンドを実行すると、現在のスレッドのスタックがダンプされます。\fIwhere\fR +\fIall\fRコマンドは、現在のスレッド・グループにあるスレッドのスタックをすべてダンプします。\fIwhere\fR +\fIthreadindex\fRコマンドは、指定されたスレッドのスタックをダンプします。 +.sp +現在のスレッドが(ブレークポイントか\fIsuspend\fRコマンドによって)中断している場合は、ローカル変数とフィールドは\fIprint\fRコマンドと\fIdump\fRコマンドで表示できます。\fIup\fRコマンドと\fIdown\fRコマンドで、どのスタック・フレームを現在のスタック・フレームにするかを選ぶことができます。 +.RE +.SS "ブレークポイント" +.PP +ブレークポイントは、行番号またはメソッドの最初の命令でJDBに設定できます。次に例を示します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +コマンド\fIstop at MyClass:22\fRは、\fIMyClass\fRが含まれるソース・ファイルの22行目の最初の命令にブレークポイントを設定します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +コマンド\fIstop in java\&.lang\&.String\&.length\fRは、メソッド\fIjava\&.lang\&.String\&.length\fRの先頭にブレークポイントを設定します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +コマンド\fIstop in MyClass\&.<clinit>\fRは、\fI<clinit>\fRを使用して\fIMyClass\fRの静的初期化コードを特定します。 +.RE +.PP +メソッドがオーバーロードされている場合には、メソッドの引数の型も指定して、ブレークポイントに対して適切なメソッドが選択されるようにする必要があります。たとえば、\fIMyClass\&.myMethod(int,java\&.lang\&.String)\fRまたは\fIMyClass\&.myMethod()\fRと指定します。 +.PP +\fIclear\fRコマンドは、\fIclear MyClass:45\fRのような構文を使用してブレークポイントを削除します。\fIclear\fRを使用するか、引数を指定しないで\fIstop\fRコマンドを使用すると、現在設定されているすべてのブレークポイントが表示されます。\fIcont\fRコマンドは実行を継続します。 +.SS "ステップ実行" +.PP +\fIstep\fRコマンドは、現在のスタック・フレームまたは呼び出されたメソッド内で、次の行を実行します。\fInext\fRコマンドは、現在のスタック・フレームの次の行を実行します。 +.SS "例外" +.PP +スローしているスレッドの呼出しスタック上のどこにも\fIcatch\fR文がない場合に例外が発生すると、JVMは通常、例外トレースを出力して終了します。ただし、JDB環境で実行している場合は、違反のスロー時にJDBに制御が戻ります。次に、\fIjdb\fRコマンドを使用して例外の原因を診断します。 +.PP +たとえば、\fIcatch java\&.io\&.FileNotFoundException\fRまたは\fIcatch\fR +\fImypackage\&.BigTroubleException\fRのように\fIcatch\fRコマンドを使用すると、デバッグされたアプリケーションは、他の例外がスローされたときに停止します。例外が特定のクラスまたはサブクラスのインスタンスの場合は、アプリケーションは例外がスローされた場所で停止します。 +.PP +\fIignore\fRコマンドを使用すると、以前の\fIcatch\fRコマンドの効果が無効になります。\fIignore\fRコマンドでは、デバッグされるJVMは特定の例外を無視せず、デバッガのみを無視します。 +.SH "オプション" +.PP +コマンドラインで\fIjava\fRコマンドのかわりに\fIjdb\fRコマンドを使用する場合、\fIjdb\fRコマンドは、\fI\-D\fR、\fI\-classpath\fR、\fI\-X\fRなど、\fIjava\fRコマンドと同じ数のオプションを受け入れます。\fIjdb\fRコマンドは、その他に次のリストにあるオプションを受け入れます。 +.PP +デバッグを行うJVMにデバッガを接続するための代替機構を提供するために、その他のオプションがサポートされています。これらの接続の代替に関する詳細なドキュメントは、Java Platform Debugger Architecture (JPDA) +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html)を参照してください +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示します。 +.RE +.PP +\-sourcepath \fIdir1:dir2: \&. \&. \&.\fR +.RS 4 +指定されたパスを使用して、ソース・ファイルを検索します。このオプションが指定されていない場合は、デフォルト・パスのドット(\&.)が使用されます。 +.RE +.PP +\-attach \fIaddress\fR +.RS 4 +デフォルトの接続機構を使用して、実行中のJVMにデバッガを接続します。 +.RE +.PP +\-listen \fIaddress\fR +.RS 4 +実行中のJVMが標準のコネクタを使用して指定されたアドレスに接続するのを待機します。 +.RE +.PP +\-launch +.RS 4 +デバッグするアプリケーションをJDBの起動後ただちに起動します。\fI\-launch\fRオプションにより、\fIrun\fRコマンドが必要なくなります。デバッグするアプリケーションは、起動後、初期アプリケーション・クラスがロードされる直前に停止します。その時点で、必要なブレークポイントを設定し、\fIcont\fRコマンドを使用して実行を継続できます。 +.RE +.PP +\-listconnectors +.RS 4 +このJVMで利用できるコネクタを一覧表示します。 +.RE +.PP +\-connect connector\-name:\fIname1=value1\fR +.RS 4 +一覧表示された引数の値と指定のコネクタを使用してターゲットJVMに接続します。 +.RE +.PP +\-dbgtrace [\fIflags\fR] +.RS 4 +\fIjdb\fRコマンドのデバッグの情報を出力します。 +.RE +.PP +\-tclient +.RS 4 +Java HotSpot VMクライアント内でアプリケーションを実行します。 +.RE +.PP +\-tserver +.RS 4 +Java HotSpot VMサーバー内でアプリケーションを実行します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +JVMに\fIoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "デバッグ対象のプロセスに転送されるオプション" +.PP +\-v \-verbose[:\fIclass\fR|gc|jni] +.RS 4 +冗長モードにします。 +.RE +.PP +\-D\fIname\fR=\fIvalue\fR +.RS 4 +システム・プロパティを設定します。 +.RE +.PP +\-classpath \fIdir\fR +.RS 4 +クラスを検索するための、コロンで区切って指定されたディレクトリのリスト。 +.RE +.PP +\-X\fIoption\fR +.RS 4 +非標準ターゲットJVMオプションです。 .RE - -.LP .SH "関連項目" -.LP -.LP -javac(1)、java(1)、javah(1)、javap(1)、javadoc(1) -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javac(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javap(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jdeps.1 b/jdk/src/linux/doc/man/ja/jdeps.1 new file mode 100644 index 00000000000..9ab6f666e0c --- /dev/null +++ b/jdk/src/linux/doc/man/ja/jdeps.1 @@ -0,0 +1,367 @@ +'\" t +.\" Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jdeps +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jdeps" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jdeps \- Javaクラス依存性アナライザ。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjdeps\fR [\fIoptions\fR] \fIclasses\fR \&.\&.\&. +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIclasses\fR +.RS 4 +分析するクラスの名前。クラス・パスで検出できるクラスを、ファイル名、ディレクトリまたはJARファイルで指定できます。 +.RE +.SH "説明" +.PP +\fIjdeps\fRコマンドは、Javaクラス・ファイルのパッケージレベルまたはクラスレベルの依存性を示します。入力クラスには、\fI\&.class\fRファイルのパス名、ディレクトリ、JARファイル、またはすべてのクラス・ファイルを分析するための完全修飾クラス名を指定できます。オプションにより出力が決定します。デフォルトでは、\fIjdeps\fRはシステム出力に依存関係を出力します。DOT言語で依存関係を生成できます(\fI\-dotoutput\fRオプションを参照)。 +.SH "オプション" +.PP +\-dotoutput <\fIdir\fR> +.RS 4 +DOTファイル出力の宛先ディレクトリ。指定した場合は\fIjdeps\fRは<\fIarchive\-file\-name\fR>\&.dotという名前の分析済みアーカイブごとに依存関係をリストする1つのdotファイルを生成し、アーカイブ間の依存関係をリストするsummary\&.dotという名前のサマリー・ファイルも生成します。 +.RE +.PP +\-s, \-summary +.RS 4 +依存関係のサマリーのみを出力します。 +.RE +.PP +\-v, \-verbose +.RS 4 +すべてのクラスレベルの依存関係を出力します。 +.RE +.PP +\-verbose:package +.RS 4 +同じアーカイブ内の依存関係を除き、パッケージレベルの依存関係を出力します。 +.RE +.PP +\-verbose:class +.RS 4 +同じアーカイブ内の依存関係を除き、クラスレベルの依存関係を出力します。 +.RE +.PP +\-cp <\fIpath\fR>, \-classpath <\fIpath\fR> +.RS 4 +クラス・ファイルの検索場所を指定します。 +.sp +Setting the Class Path も参照してください。 +.RE +.PP +\-p <\fIpkg name\fR>, \-package <\fIpkg name\fR> +.RS 4 +指定したパッケージの依存関係を検出します。異なるパッケージに対してこのオプションを複数回指定できます。\fI\-p\fRオプションと\fI\-e\fRオプションを同時に指定することはできません。 +.RE +.PP +\-e <\fIregex\fR>, \-regex <\fIregex\fR> +.RS 4 +指定した正規表現パターンと一致するパッケージの依存関係を検出します。\fI\-p\fRオプションと\fI\-e\fRオプションを同時に指定することはできません。 +.RE +.PP +\-include <\fIregex\fR> +.RS 4 +分析をパターンに一致するクラスに制限します。このオプションは、分析するクラスのリストをフィルタします。依存関係にパターンを適用する\fI\-p\fRおよび\fI\-e\fRとともに使用できます。 +.RE +.PP +\-jdkinternals +.RS 4 +JDKの内部APIのクラスレベルの依存関係を検出します。デフォルトでは、\fI\-include\fRオプションを指定しないかぎり、\fI\-classpath\fRオプションおよび入力ファイルに指定されたすべてのクラスを分析します。このオプションは、\fI\-p\fRオプション、\fI\-e\fRオプションおよび\fI\-s\fRオプションとともに使用できません。 +.sp +\fB警告\fR: JDKの内部APIは、今後のリリースでアクセスできなくなる可能性があります。 +.RE +.PP +\-P, \-profile +.RS 4 +パッケージを含むプロファイルまたはファイルを表示します。 +.RE +.PP +\-apionly +.RS 4 +フィールド・タイプ、メソッド・パラメータ・タイプ、戻りタイプ、チェックされた例外タイプを含むパブリック・クラスの\fIpublic\fRおよび\fIprotected\fRメンバーの署名からの依存関係など、分析をAPIに制限します。 +.RE +.PP +\-R, \-recursive +.RS 4 +すべての依存関係を再帰的に走査します。 +.RE +.PP +\-version +.RS 4 +バージョン情報を出力します。 +.RE +.PP +\-h, \-?, \-help +.RS 4 +\fIjdeps\fRに関するヘルプ・メッセージを出力します。 +.RE +.SH "例" +.PP +Notepad\&.jarの依存関係の分析。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps demo/jfc/Notepad/Notepad\&.jar + +demo/jfc/Notepad/Notepad\&.jar \-> /usr/java/jre/lib/rt\&.jar + <unnamed> (Notepad\&.jar) + \-> java\&.awt + \-> java\&.awt\&.event + \-> java\&.beans + \-> java\&.io + \-> java\&.lang + \-> java\&.net + \-> java\&.util + \-> java\&.util\&.logging + \-> javax\&.swing + \-> javax\&.swing\&.border + \-> javax\&.swing\&.event + \-> javax\&.swing\&.text + \-> javax\&.swing\&.tree + \-> javax\&.swing\&.undo +.fi +.if n \{\ +.RE +.\} +.PP +\-Pまたは\-profileオプションを使用して、メモ帳が依存するプロファイルを表示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps \-profile demo/jfc/Notepad/Notepad\&.jar +demo/jfc/Notepad/Notepad\&.jar \-> /usr/java/jre/lib/rt\&.jar (Full JRE) + <unnamed> (Notepad\&.jar) + \-> java\&.awt Full JRE + \-> java\&.awt\&.event Full JRE + \-> java\&.beans Full JRE + \-> java\&.io compact1 + \-> java\&.lang compact1 + \-> java\&.net compact1 + \-> java\&.util compact1 + \-> java\&.util\&.logging compact1 + \-> javax\&.swing Full JRE + \-> javax\&.swing\&.border Full JRE + \-> javax\&.swing\&.event Full JRE + \-> javax\&.swing\&.text Full JRE + \-> javax\&.swing\&.tree Full JRE + \-> javax\&.swing\&.undo Full JRE +.fi +.if n \{\ +.RE +.\} +.PP +tools\&.jarファイル内の\fIcom\&.sun\&.tools\&.jdeps\&.Main\fRクラスなど、特定のクラスパス内の特定のクラスの直接依存関係の分析。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main +lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar + com\&.sun\&.tools\&.jdeps (tools\&.jar) + \-> java\&.io + \-> java\&.lang +.fi +.if n \{\ +.RE +.\} +.PP +\fI\-verbose:class\fRオプションを使用して、クラスレベル依存関係を検索するか\fI\-v\fRまたは\fI\-verbose\fRオプションを使用して同じJARファイルからの依存関係を含めます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps \-verbose:class \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main + +lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar + com\&.sun\&.tools\&.jdeps\&.Main (tools\&.jar) + \-> java\&.io\&.PrintWriter + \-> java\&.lang\&.Exception + \-> java\&.lang\&.Object + \-> java\&.lang\&.String + \-> java\&.lang\&.System +.fi +.if n \{\ +.RE +.\} +.PP +\fI\-R\fRまたは\fI\-recursive\fRオプションを使用して、\fIcom\&.sun\&.tools\&.jdeps\&.Main\fRクラスの推移的な依存関係を分析します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps \-R \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main +lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar + com\&.sun\&.tools\&.classfile (tools\&.jar) + \-> java\&.io + \-> java\&.lang + \-> java\&.lang\&.reflect + \-> java\&.nio\&.charset + \-> java\&.nio\&.file + \-> java\&.util + \-> java\&.util\&.regex + com\&.sun\&.tools\&.jdeps (tools\&.jar) + \-> java\&.io + \-> java\&.lang + \-> java\&.nio\&.file + \-> java\&.nio\&.file\&.attribute + \-> java\&.text + \-> java\&.util + \-> java\&.util\&.jar + \-> java\&.util\&.regex + \-> java\&.util\&.zip +/usr/java/jre/lib/jce\&.jar \-> /usr/java/jre/lib/rt\&.jar + javax\&.crypto (jce\&.jar) + \-> java\&.io + \-> java\&.lang + \-> java\&.lang\&.reflect + \-> java\&.net + \-> java\&.nio + \-> java\&.security + \-> java\&.security\&.cert + \-> java\&.security\&.spec + \-> java\&.util + \-> java\&.util\&.concurrent + \-> java\&.util\&.jar + \-> java\&.util\&.regex + \-> java\&.util\&.zip + \-> javax\&.security\&.auth + \-> sun\&.security\&.jca JDK internal API (rt\&.jar) + \-> sun\&.security\&.util JDK internal API (rt\&.jar) + javax\&.crypto\&.spec (jce\&.jar) + \-> java\&.lang + \-> java\&.security\&.spec + \-> java\&.util +/usr/java/jre/lib/rt\&.jar \-> /usr/java/jre/lib/jce\&.jar + java\&.security (rt\&.jar) + \-> javax\&.crypto +.fi +.if n \{\ +.RE +.\} +.PP +メモ帳デモの依存関係のdotファイルを生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps \-dotoutput dot demo/jfc/Notepad/Notepad\&.jar +.fi +.if n \{\ +.RE +.\} +.PP +\fIjdeps\fRは、\fI\-dotoutput\fRオプションで指定されたdotディレクトリに<\fIfilename\fR>\&.dotという名前のdotファイルを特定のJARファイルごとに作成し、JARファイル間の依存関係をリストするsummary\&.dotという名前のサマリー・ファイルも作成します +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ cat dot/Notepad\&.jar\&.dot +digraph "Notepad\&.jar" { + // Path: demo/jfc/Notepad/Notepad\&.jar + "<unnamed>" \-> "java\&.awt"; + "<unnamed>" \-> "java\&.awt\&.event"; + "<unnamed>" \-> "java\&.beans"; + "<unnamed>" \-> "java\&.io"; + "<unnamed>" \-> "java\&.lang"; + "<unnamed>" \-> "java\&.net"; + "<unnamed>" \-> "java\&.util"; + "<unnamed>" \-> "java\&.util\&.logging"; + "<unnamed>" \-> "javax\&.swing"; + "<unnamed>" \-> "javax\&.swing\&.border"; + "<unnamed>" \-> "javax\&.swing\&.event"; + "<unnamed>" \-> "javax\&.swing\&.text"; + "<unnamed>" \-> "javax\&.swing\&.tree"; + "<unnamed>" \-> "javax\&.swing\&.undo"; +} + +$ cat dot/summary\&.dot +digraph "summary" { + "Notepad\&.jar" \-> "rt\&.jar"; +} +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javap(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jhat.1 b/jdk/src/linux/doc/man/ja/jhat.1 index 666b25229d2..63415d9a6da 100644 --- a/jdk/src/linux/doc/man/ja/jhat.1 +++ b/jdk/src/linux/doc/man/ja/jhat.1 @@ -1,159 +1,214 @@ -." 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 -." 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 jhat 1 "07 May 2011" - -.LP -.SH "名前" -jhat \- Java ヒープ解析ツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jhat +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jhat" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jhat \- Javaヒープを分析します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jhat\fP [ \f2options\fP ] <heap\-dump\-file> -.fl - -.fl +\fIjhat\fR [ \fIoptions\fR ] \fIheap\-dump\-file\fR .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -options -オプションを使用する場合、コマンド名の直後に記述してください。 -.TP 3 -heap\-dump\-file -ブラウズ対象となる Java バイナリヒープダンプファイル。複数のヒープダンプを含むダンプファイルの場合、「foo.hprof#3」のようにファイル名の後に「#<number>」を付加することで、ファイル内の特定のダンプを指定できます。 +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIheap\-dump\-file\fR +.RS 4 +ブラウズ対象となるJavaバイナリ・ヒープ・ダンプ・ファイル。複数のヒープ・ダンプを含むダンプ・ファイルの場合、\fImyfile\&.hprof#3\fRのようにファイル名の後に\fI#<number>\fRを付加することで、ファイル内の特定のダンプを指定できます。 .RE - -.LP .SH "説明" -.LP -.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 -.LP -Java のヒープダンプを生成するには、いくつかの方法があります。 -.LP -.RS 3 -.TP 2 -o -jmap(1) の \-dump オプションを使って実行時にヒープダンプを取得する。 -.TP 2 -o -jconsole(1) のオプションを使って -.na -\f2HotSpotDiagnosticMXBean\fP @ -.fi -http://java.sun.com/javase/6/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html 経由で実行時にヒープダンプを取得する。 -.TP 2 -o -\-XX:+HeapDumpOnOutOfMemoryError VM オプションを指定すると、OutOfMemoryError のスロー時にヒープダンプが生成される。 -.TP 2 -o -.na -\f2hprof\fP @ -.fi -http://java.sun.com/developer/technicalArticles/Programming/HPROF.html を使用する。 +.PP +\fIjhat\fRコマンドはJavaヒープ・ダンプ・ファイルを解析し、Webサーバーを開始します。\fIjhat\fRコマンドを使用して、お気に入りのブラウザでヒープ・ダンプを参照できます。\fIjhat\fRコマンドは、既知のクラス\fIMyClass\fRのすべてのインスタンスを表示するなどの事前設計済の問合せやObject Query Language (OQL)をサポートします。ヒープ・ダンプの問合せを除き、OQLはSQLに似ています。OQLのヘルプには、\fIjhat\fRコマンドによって表示されるOQLヘルプ・ページからアクセスできます。デフォルト・ポートを使用する場合、OQLのヘルプはhttp://localhost:7000/oqlhelp/で利用可能です。 +.PP +Javaのヒープ・ダンプを生成するには、次のいくつかの方法があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIjmap \-dump\fRオプションを使用して実行時にヒープ・ダンプを取得します。jmap(1)を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIjconsole\fRオプションを使用して\fIHotSpotDiagnosticMXBean\fR経由で実行時にヒープ・ダンプを取得します。jconsole(1)および\fIHotSpotDiagnosticMXBean\fRのインタフェースの説明( +http://docs\&.oracle\&.com/javase/8/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean\&.html)を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ヒープ・ダンプは、\fI\-XX:+HeapDumpOnOutOfMemoryError\fR +Java仮想マシン(JVM)オプションを指定することで、\fIOutOfMemoryError\fRがスローされたときに生成されます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIhprof\fRコマンドを使用します。HPROF: Heap/CPUプロファイリング・ツール +(http://docs\&.oracle\&.com/javase/8/docs/technotes/samples/hprof\&.html)を参照してください .RE - -.LP -.LP -\f3注:\fP このツールは\f3試験的なもの\fPであり、将来の JDK のバージョンでは\f3利用できなくなる\fP可能性があります。 -.LP .SH "オプション" -.LP -.RS 3 -.TP 3 -\-stack false/true -オブジェクト割り当て呼び出しスタックの追跡を無効にします。ヒープダンプ内で割り当てサイト情報が使用できない場合、このフラグを false に設定する必要があります。デフォルトは true です。 -.TP 3 -\-refs false/true -オブジェクトへの参照の追跡を無効にします。デフォルトは true です。デフォルトでは、ヒープ内のすべてのオブジェクトについて、バックポインタ (指定されたオブジェクトをポイントしているオブジェクト。参照者または受信参照とも呼ばれる) が計算されます。 -.TP 3 -\-port port\-number -jhat の HTTP サーバーのポートを設定します。デフォルトは 7000 です。 -.TP 3 -\-exclude exclude\-file -「到達可能なオブジェクト」のクエリから除外すべきデータメンバーの一覧を含むファイルを指定します。たとえば、このファイルに \f2java.lang.String.value\fP が含まれていた場合、特定のオブジェクト「o」から到達可能なオブジェクトのリストを計算する際に、\f2java.lang.String.value\fP フィールドに関連する参照パスが考慮されなくなります。 -.TP 3 -\-baseline baseline\-dump\-file -ベースラインとなるヒープダンプを指定します。両方のヒープダンプ内で同じオブジェクト ID を持つオブジェクトは「新規ではない」としてマークされます。その他のオブジェクトは「新規」としてマークされます。これは、異なる 2 つのヒープダンプを比較する際に役立ちます。 -.TP 3 -\-debug int -このツールのデバッグレベルを設定します。0 は「デバッグ出力なし」を意味します。より大きな値を設定すると、より冗長なモードになります。 -.TP 3 -\-version -バージョン番号を報告したあと、終了します。 -.TP 3 -\-h -ヘルプメッセージを出力して終了します。 -.TP 3 -\-help -ヘルプメッセージを出力して終了します。 -.TP 3 -\-J<flag> -jhat が実行されている Java 仮想マシンに <flag> を渡します。たとえば、512M バイトの最大ヒープサイズを使用するには、\-J\-Xmx512m とします。 +.PP +\-stack false|true +.RS 4 +オブジェクト割当呼出しスタックの追跡を無効にします。ヒープ・ダンプ内で割当サイト情報が使用できない場合、このフラグを\fIfalse\fRに設定する必要があります。デフォルトは\fItrue\fRです。 +.RE +.PP +\-refs false|true +.RS 4 +オブジェクトへの参照の追跡を無効にします。デフォルトは\fItrue\fRです。デフォルトでは、ヒープ内のすべてのオブジェクトについて、バックポインタ(指定されたオブジェクトをポイントしているオブジェクト。参照者または受信参照とも呼ばれる)が計算されます。 +.RE +.PP +\-port \fIport\-number\fR +.RS 4 +\fIjhat\fRのHTTPサーバーのポートを設定します。デフォルトは7000です。 +.RE +.PP +\-exclude \fIexclude\-file\fR +.RS 4 +到達可能なオブジェクトの問合せから除外する必要があるデータ・メンバーの一覧を含むファイルを指定します。たとえば、このファイルに\fIjava\&.lang\&.String\&.value\fRが含まれていた場合、特定のオブジェクト\fIo\fRから到達可能なオブジェクトのリストを計算する際に、\fIjava\&.lang\&.String\&.value\fRフィールドに関連する参照パスが考慮されなくなります。 +.RE +.PP +\-baseline \fIexclude\-file\fR +.RS 4 +ベースラインとなるヒープ・ダンプを指定します。両方のヒープ・ダンプ内で同じオブジェクトIDを持つオブジェクトは新規ではないとしてマークされます。他のオブジェクトは新規としてマークされます。これは、異なる2つのヒープ・ダンプを比較する際に役立ちます。 +.RE +.PP +\-debug \fIint\fR +.RS 4 +このツールのデバッグ・レベルを設定します。レベル0はデバッグ出力がないことを意味します。より大きな値を設定すると、より冗長なモードになります。 +.RE +.PP +\-version +.RS 4 +リリース番号をレポートして終了します +.RE +.PP +\-h +.RS 4 +ヘルプ・メッセージを表示して終了します。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示して終了します。 +.RE +.PP +\-J\fIflag\fR +.RS 4 +\fIjhat\fRコマンドを実行しているJava仮想マシンに\fIflag\fRを渡します。たとえば、512Mバイトの最大ヒープ・サイズを使用するには、\fI\-J\-Xmx512m\fRとします。 .RE - -.LP .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -jmap(1) -.TP 2 -o -jconsole(1) -.TP 2 -o -.na -\f2hprof \- ヒープおよび CPU プロファイリングツール\fP @ -.fi -http://java.sun.com/developer/technicalArticles/Programming/HPROF.html +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jmap(1) .RE - -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jconsole(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +HPROF: Heap/CPUプロファイリング・ツール +(http://docs\&.oracle\&.com/javase/8/docs/technotes/samples/hprof\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jinfo.1 b/jdk/src/linux/doc/man/ja/jinfo.1 index a1f639cfda9..f4e7ae9c4ec 100644 --- a/jdk/src/linux/doc/man/ja/jinfo.1 +++ b/jdk/src/linux/doc/man/ja/jinfo.1 @@ -1,166 +1,186 @@ -." 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 -." 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 jinfo 1 "07 May 2011" - -.LP -.SH "名前" -jinfo \- 構成情報 -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jinfo +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jinfo" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jinfo \- 構成情報を生成します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jinfo\fP [ option ] pid -.fl -\f3jinfo\fP [ option ] executable core -.fl -\f3jinfo\fP [ option ] [server\-id@]remote\-hostname\-or\-IP -.fl +\fIjinfo\fR [ \fIoption\fR ] \fIpid\fR .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -option -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。 +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -pid -出力する構成情報のプロセス ID。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjinfo\fR [ \fIoption \fR] \fIexecutable core\fR +.fi +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -executable -コアダンプの作成元の Java 実行可能ファイルです。 +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjinfo\fR [ \fIoption \fR] \fI[ servier\-id ] remote\-hostname\-or\-IP\fR +.fi +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -core -出力する構成情報のコアファイル。 +.\} +.PP +\fIオプション\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 .RE - -.LP -.RS 3 -.TP 3 -remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 +.PP +\fIpid\fR +.RS 4 +構成情報が出力されるプロセスID。プロセスはJavaプロセスである必要があります。マシン上で実行しているJavaプロセスの一覧を取得するには、jps(1)コマンドを使用します。 .RE - -.LP -.RS 3 -.TP 3 -server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 +.PP +\fI実行可能ファイル\fR +.RS 4 +コア・ダンプの作成元のJava実行可能ファイル。 +.RE +.PP +\fIコア\fR +.RS 4 +構成情報が出力されるコア・ファイル。 +.RE +.PP +\fIremote\-hostname\-or\-IP\fR +.RS 4 +リモート・デバッグ・サーバーの\fIホスト名\fRまたは\fIIP\fRアドレス。jsadebugd(1)を参照してください。 +.RE +.PP +\fIserver\-id\fR +.RS 4 +複数のデバッグ・サーバーが同一のリモート・ホストで実行している場合の、オプション固有のID。 .RE - -.LP .SH "説明" -.LP -.LP -\f3jinfo\fP は、指定された Java プロセスやコアファイルまたはリモートデバッグサーバーの Java 構成情報を出力します。構成情報は、Java システムプロパティーと Java 仮想マシンのコマンド行フラグから構成されます。指定されたプロセスが 64 ビット VM 上で実行されている場合、\f2\-J\-d64\fP オプションを指定しなければならない場合があります。次に例を示します。 -.br -jinfo \-J\-d64 \-sysprops pid -.LP -.LP -\f3注 \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。dbgeng.dll が存在していない Windows システムでは、「Debugging Tools For Windows」をインストールしないとこれらのツールが正常に動作しません。また、 \fP\f4PATH\fP\f3 環境変数には、ターゲットプロセスによって使用される \fP\f4jvm.dll\fP\f3 の場所、またはクラッシュダンプファイルが生成された場所が含まれるようにしてください。\fP -.LP -.LP -\f3次に例を示します。 \fP\f4set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -.LP +.PP +\fIjinfo\fRコマンドは、指定されたJavaプロセスやコア・ファイルまたはリモート・デバッグ・サーバーのJava構成情報を出力します。構成情報には、Javaシステム・プロパティとJava仮想マシン(JVM)のコマンドライン・フラグが含まれています。指定されたプロセスが64ビットJVM上で実行されている場合、\fI\-J\-d64\fRオプションを指定する必要がある場合があります。次に例を示します。\fIjinfo\fR +\fI\-J\-d64 \-sysprops pid\fR。 +.PP +このユーティリティはサポート対象外であり、将来のJDKのリリースでは利用できなくなる可能性があります。\fIdbgeng\&.dll\fRが存在していないWindowsシステムでは、Debugging Tools For Windowsをインストールしないとこれらのツールが正常に動作しません。\fIPATH\fR環境変数には、ターゲット・プロセスによって使用されるjvm\&.dllの場所、またはクラッシュ・ダンプ・ファイルが生成された場所が含まれるようにしてください。たとえば、\fIset PATH=%JDK_HOME%\ejre\ebin\eclient;%PATH%\fRです。 .SH "オプション" -.LP -.RS 3 -.TP 3 -<オプションなし> -コマンド行フラグを、システムプロパティー名と値のペアとともに出力します。 -.br -.TP 3 -\-flag name -指定されたコマンド行フラグの名前と値を出力します。 -.br -.TP 3 -\-flag [+|\-]name -指定されたブール型のコマンド行フラグを有効または無効にします。 -.br -.TP 3 -\-flag name=value -指定されたコマンド行フラグを指定された値に設定します。 -.br -.TP 3 -\-flags -JVM に渡されるコマンド行フラグをペアで出力します。 -.br -.TP 3 -\-sysprops -Java システムプロパティーを名前と値のペアとして出力します。 -.br -.TP 3 -\-h -ヘルプメッセージを出力します。 -.TP 3 -\-help -ヘルプメッセージを出力します。 +.PP +no\-option +.RS 4 +コマンドライン・フラグを、システム・プロパティ名と値のペアとともに出力します。 +.RE +.PP +\-flag \fIname\fR +.RS 4 +指定されたコマンドライン・フラグの名前と値を出力します。 +.RE +.PP +\-flag \fI[+|\-]name\fR +.RS 4 +指定されたブール型のコマンドライン・フラグを有効または無効にします。 +.RE +.PP +\-flag \fIname=value\fR +.RS 4 +指定されたコマンドライン・フラグを指定された値に設定します。 +.RE +.PP +\-flags +.RS 4 +JVMに渡されるコマンドライン・フラグを出力します。 +.RE +.PP +\-sysprops +.RS 4 +Javaシステム・プロパティを名前と値のペアとして出力します。 +.RE +.PP +\-h +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージが出力されます。 .RE - -.LP .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -jps(1) -.TP 2 -o -jsadebugd(1) +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) .RE - -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jsadebugd(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jjs.1 b/jdk/src/linux/doc/man/ja/jjs.1 new file mode 100644 index 00000000000..bcf28254fe2 --- /dev/null +++ b/jdk/src/linux/doc/man/ja/jjs.1 @@ -0,0 +1,394 @@ +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jjs +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jjs" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jjs \- Nashornエンジンを呼び出します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjjs\fR [\fIoptions\fR] [\fIscript\-files\fR] [\-\- \fIarguments\fR] +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +空白文字で区切られた、\fIjjs\fRコマンドの1つ以上のオプション。詳細は、オプションを参照してください。 +.RE +.PP +\fIscript\-files\fR +.RS 4 +空白文字で区切られた、Nashornを使用して解釈する1つ以上のスクリプト・ファイル。ファイルが指定されない場合は、対話型シェルが起動されます。 +.RE +.PP +\fIarguments\fR +.RS 4 +二重ハイフン・マーカー(\fI\-\-\fR)の後のすべての値が、引数としてスクリプトまたは対話型シェルに渡されます。これらの値には\fIarguments\fRプロパティを使用してアクセスできます(Example 3を参照してください)。 +.RE +.SH "説明" +.PP +\fIjjs\fRコマンドライン・ツールを使用してNashornエンジンを呼び出します。これを使用して、1つまたは複数のスクリプト・ファイルを解釈したり、対話型シェルを実行することができます。 +.SH "オプション" +.PP +\fIjjs\fRコマンドのオプションはスクリプトがNashornによって解釈される条件を制御します。 +.PP +\-ccs=\fIsize\fR, \-\-class\-cache\-size=\fIsize\fR +.RS 4 +クラス・キャッシュ・サイズをバイト単位で設定します。キロバイト(KB)を示すために\fIk\fRまたは\fIK\fRの文字を追加し、メガバイト(MB)を示すために\fIm\fRまたは\fIM\fRの文字を追加し、ギガバイト(GB)を示すために\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、クラス・キャッシュ・サイズは50バイトに設定されます。次の例は、1024バイト(1 KB)に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-css=100 +\-css=1k +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-co, \-\-compile\-only +.RS 4 +スクリプトを実行せずにコンパイルします。 +.RE +.PP +\-cp \fIpath\fR, \-\-classpath \fIpath\fR +.RS 4 +サポートするクラスへのパスを指定します。複数のパスを設定するには、このオプションを繰り返すか、または各パスをコロン(:)で区切ります。 +.RE +.PP +\-D\fIname\fR=\fIvalue\fR +.RS 4 +プロパティ名に値を割り当てることで、スクリプトに渡すシステム・プロパティを設定します。次の例で、対話型モードでNashornを呼び出して、\fImyValue\fRを\fImyKey\fRという名前のプロパティに割り当てる方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +>> \fBjjs \-DmyKey=myValue\fR +jjs> \fBjava\&.lang\&.System\&.getProperty("myKey")\fR +myValue +jjs> +.fi +.if n \{\ +.RE +.\} +このオプションを繰り返し使用すると、複数のプロパティを設定できます。 +.RE +.PP +\-d=\fIpath\fR, \-\-dump\-debug\-dir=\fIpath\fR +.RS 4 +クラス・ファイルをダンプするディレクトリへのパスを指定します。 +.RE +.PP +\-\-debug\-lines +.RS 4 +クラス・ファイル内の行番号表を生成します。デフォルトでは、このオプションは有効になっています。無効にするには\fI\-\-debug\-lines=false\fRを指定します。 +.RE +.PP +\-\-debug\-locals +.RS 4 +クラス・ファイル内のローカル変数を生成します。 +.RE +.PP +\-doe, \-\-dump\-on\-error +.RS 4 +エラーが発生したときに、フル・スタック・トレースを提供します。デフォルトでは、簡単なエラー・メッセージのみが出力されます。 +.RE +.PP +\-\-early\-lvalue\-error +.RS 4 +無効な左辺値式が早期エラーとして(つまり、コードが解析されるときに)報告されます。デフォルトでは、このオプションは有効になっています。無効にするには\fI\-\-early\-lvalue\-error=false\fRを指定します。無効な場合、無効な左辺値式はコードが実行されるまで報告されません。 +.RE +.PP +\-\-empty\-statements +.RS 4 +空の文をJavaの抽象構文ツリーに保存します。 +.RE +.PP +\-fv, \-\-fullversion +.RS 4 +完全なNashornバージョン文字列を出力します。 +.RE +.PP +\-\-function\-statement\-error +.RS 4 +関数の宣言が文として使用されるとエラー・メッセージが出力されます。 +.RE +.PP +\-\-function\-statement\-warning +.RS 4 +関数の宣言が文として使用されると警告メッセージが出力されます。 +.RE +.PP +\-fx +.RS 4 +スクリプトをJavaFXアプリケーションとして起動します。 +.RE +.PP +\-h, \-help +.RS 4 +オプションのリストとその説明を出力します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +指定した\fIjava\fR起動オプションをJVMに渡します。次の例で、対話型モードでNashornを呼び出して、JVMによって使用される最大メモリーを4 GBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +>> \fBjjs \-J\-Xmx4g\fR +jjs> \fBjava\&.lang\&.Runtime\&.getRuntime()\&.maxMemory()\fR +3817799680 +jjs> +.fi +.if n \{\ +.RE +.\} +このオプションを繰り返し使用すると、複数の\fIjava\fRコマンド・オプションを渡すことができます。 +.RE +.PP +\-\-lazy\-compilation +.RS 4 +レイジー・コード生成戦略(つまり、スクリプト全体が一度にコンパイルされない)を有効にします。このオプションは試験的なものです。 +.RE +.PP +\-\-loader\-per\-compile +.RS 4 +コンパイルごとに新しいクラス・ローダーを作成します。デフォルトでは、このオプションは有効になっています。無効にするには\fI\-\-loader\-per\-compile=false\fRを指定します。 +.RE +.PP +\-\-log=\fIsubsystem\fR:\fIlevel\fR +.RS 4 +指定されたサブシステムに対して、特定のレベルでロギングを実行します。カンマで区切って複数のサブシステムのロギング・レベルを指定できます。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-\-log=fields:finest,codegen:info +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-\-package=\fIname\fR +.RS 4 +生成されたクラス・ファイルを追加するパッケージを指定します。 +.RE +.PP +\-\-parse\-only +.RS 4 +コンパイルせずにコードを解析します。 +.RE +.PP +\-\-print\-ast +.RS 4 +抽象構文ツリーを出力します。 +.RE +.PP +\-\-print\-code +.RS 4 +バイトコードを出力します。 +.RE +.PP +\-\-print\-lower\-ast +.RS 4 +掘り下げた抽象構文ツリーを出力します。 +.RE +.PP +\-\-print\-lower\-parse +.RS 4 +掘り下げた解析ツリーを出力します。 +.RE +.PP +\-\-print\-no\-newline +.RS 4 +その他の\fI\-\-print*\fRオプションで強制的に1行で出力します。 +.RE +.PP +\-\-print\-parse +.RS 4 +解析ツリーを出力します。 +.RE +.PP +\-\-print\-symbols +.RS 4 +記号表を出力します。 +.RE +.PP +\-pcs, \-\-profile\-callsites +.RS 4 +呼び出しサイトのプロファイル・データをダンプします。 +.RE +.PP +\-scripting +.RS 4 +シェルのスクリプト機能を有効にします。 +.RE +.PP +\-\-stderr=\fIfilename\fR|\fIstream\fR|\fItty\fR +.RS 4 +標準エラー・ストリームを指定したファイル、ストリーム(たとえば\fIstdout\fR)に、またはテキスト端末にリダイレクトします。 +.RE +.PP +\-\-stdout=\fIfilename\fR|\fIstream\fR|\fItty\fR +.RS 4 +標準出力ストリームを指定したファイル、ストリーム(たとえば\fIstderr\fR)に、またはテキスト端末にリダイレクトします。 +.RE +.PP +\-strict +.RS 4 +標準(ECMAScript Edition 5\&.1)への準拠を強化するstrictモードを有効にし、これにより共通のコーディング・エラーを簡単に検出できるようになります。 +.RE +.PP +\-t=\fIzone\fR, \-timezone=\fIzone\fR +.RS 4 +スクリプトの実行に対し指定したタイムゾーンを設定します。OSで設定されたタイムゾーンをオーバーライドし、\fIDate\fRオブジェクトで使用されます。 +.RE +.PP +\-tcs=\fIparameter\fR, \-\-trace\-callsites=\fIparameter\fR +.RS 4 +呼出しサイトのトレースのモードを有効にします。使用可能なパラメータは、次のとおりです。 +.PP +miss +.RS 4 +呼出しサイトのミスをトレースします。 +.RE +.PP +enterexit +.RS 4 +呼出しサイトへの出入りをトレースします。 +.RE +.PP +objects +.RS 4 +オブジェクトのプロパティを出力します。 +.RE +.RE +.PP +\-\-verify\-code +.RS 4 +バイトコードを実行する前に検証します。 +.RE +.PP +\-v, \-version +.RS 4 +Nashornバージョン文字列を出力します。 +.RE +.PP +\-xhelp +.RS 4 +コマンドライン・オプションの拡張ヘルプを出力します。 +.RE +.SH "例" +.PP +\fBExample 1\fR, Nashornを使用したスクリプトの実行 +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jjs script\&.js +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, 対話型モードでのNashornの実行 +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +>> \fBjjs\fR +jjs> \fBprintln("Hello, World!")\fR +Hello, World! +jjs> \fBquit()\fR +>> +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, Nashornへの引数の渡し +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +>> \fBjjs \-\- a b c\fR +jjs> \fBarguments\&.join(", ")\fR +a, b, c +jjs> +.fi +.if n \{\ +.RE +.\} +.RE +.SH "関連項目" +.PP +\fIjrunscript\fR +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jmap.1 b/jdk/src/linux/doc/man/ja/jmap.1 index 15ea13f6f2e..cc465a08b4e 100644 --- a/jdk/src/linux/doc/man/ja/jmap.1 +++ b/jdk/src/linux/doc/man/ja/jmap.1 @@ -1,179 +1,209 @@ -." 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 -." 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 jmap 1 "07 May 2011" - -.LP -.SH "名前" -jmap \- メモリーマップ -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jmap +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jmap" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jmap \- プロセスやコア・ファイルまたはリモート・デバッグ・サーバーの、共用オブジェクト・メモリー・マップまたはヒープ・メモリーの詳細を出力します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jmap\fP [ option ] pid -.fl -\f3jmap\fP [ option ] executable core -.fl -\f3jmap\fP [ option ] [server\-id@]remote\-hostname\-or\-IP -.fl +\fIjmap\fR [ \fIoptions\fR ] \fIpid\fR .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -option -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。 -.TP 3 -pid -印刷するメモリーマップのプロセス ID。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 -.br -.TP 3 -executable -コアダンプの作成元の Java 実行可能ファイルです。 -.br -.TP 3 -core -印刷するメモリーマップのコアファイル。 -.br -.TP 3 -remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 -.br -.TP 3 -server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 -.br +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjmap\fR [ \fIoptions\fR ] \fIexecutable\fR \fIcore\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjmap\fR [ \fIoptions\fR ] [ \fIpid\fR ] \fIserver\-id\fR@ ] \fIremote\-hostname\-or\-IP\fR +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIpid\fR +.RS 4 +出力するメモリー・マップのプロセスID。プロセスはJavaプロセスである必要があります。マシン上で実行しているJavaプロセスの一覧を取得するには、jps(1)コマンドを使用します。 +.RE +.PP +\fI実行可能ファイル\fR +.RS 4 +コア・ダンプの作成元のJava実行可能ファイル。 +.RE +.PP +\fIコア\fR +.RS 4 +出力するメモリー・マップのコア・ファイル。 +.RE +.PP +\fIremote\-hostname\-or\-IP\fR +.RS 4 +リモート・デバッグ・サーバーの\fIホスト名\fRまたは\fIIP\fRアドレス。jsadebugd(1)を参照してください。 +.RE +.PP +\fIserver\-id\fR +.RS 4 +複数のデバッグ・サーバーが同一のリモート・ホストで実行している場合の、オプション固有のID。 .RE - -.LP .SH "説明" -.LP -.LP -\f3jmap\fP は、指定されたプロセスやコアファイルまたはリモートデバッグサーバーの、共用オブジェクトメモリーマップまたはヒープメモリーの詳細を印刷します。指定されたプロセスが 64 ビット VM 上で実行されている場合、\f2\-J\-d64\fP オプションを指定しなければならない場合があります。次に例を示します。 -.LP -.nf -\f3 -.fl -jmap \-J\-d64 \-heap pid -.fl -\fP -.fi - -.LP -.LP -\f3注: このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。dbgeng.dll が存在していない Windows システムでは、「Debugging Tools For Windows」をインストールしないとこれらのツールが正常に動作しません。また、 \fP\f4PATH\fP\f3 環境変数には、ターゲットプロセスによって使用される \fP\f4jvm.dll\fP\f3 の場所、またはクラッシュダンプファイルが生成された場所が含まれるようにしてください。\fP -.LP -.LP -\f3次に例を示します。 \fP\f4set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -.LP -.br - -.LP +.PP +\fIjmap\fRコマンドは、指定されたプロセスやコア・ファイルまたはリモート・デバッグ・サーバーの、共用オブジェクト・メモリー・マップまたはヒープ・メモリーの詳細を出力します。指定されたプロセスが64ビットJava仮想マシン(JVM)上で実行されている場合、\fI\-J\-d64\fRオプションを指定する必要がある場合があります。次に例を示します。\fIjmap\fR +\fI\-J\-d64 \-heap pid\fR。 +.PP +\fB注意:\fR +このユーティリティはサポート対象外であり、将来のJDKのリリースでは利用できなくなる可能性があります。\fIdbgeng\&.dll\fRファイルが存在していないWindowsシステムでは、Debugging Tools For Windowsをインストールしないとこれらのツールが正常に動作しません。\fIPATH\fR環境変数には、ターゲット・プロセスによって使用される\fIjvm\&.dll\fRの場所、またはクラッシュ・ダンプ・ファイルが生成された場所が含まれるようにしてください。次に例を示します。\fIset PATH=%JDK_HOME%\ejre\ebin\eclient;%PATH%\fR。 .SH "オプション" -.LP -.RS 3 -.TP 3 -<オプションなし> -オプションを使用しない場合、jmap は共用オブジェクトマッピングを印刷します。ターゲット VM にロードされた共用オブジェクトごとに、開始アドレス、マッピングのサイズ、および共用オブジェクトファイルのフルパスが印刷されます。これは、Solaris \f3pmap\fP ユーティリティーと類似しています。 -.br -.TP 3 -\-dump:[live,]format=b,file=<filename> -Java ヒープを hprof バイナリ形式で filename にダンプします。\f2live\fP サブオプションは省略可能です。これが指定された場合、ヒープ内で生存中のオブジェクトのみがダンプされます。ヒープダンプを参照するには、生成されたファイルを jhat(1) (Java Heap Analysis Tool) を使って読み取ります。 -.br -.TP 3 -\-finalizerinfo -ファイナライズを待っているオブジェクトに関する情報を出力します。 -.br -.TP 3 -\-heap -ヒープサマリーを印刷します。使用される GC アルゴリズム、ヒープ構成、および世代ごとのヒープ使用率が印刷されます。 -.br -.TP 3 -\-histo[:live] -ヒープのヒストグラムを印刷します。Java クラスごとに、オブジェクトの数、バイト単位でのメモリーサイズ、および完全修飾クラス名が印刷されます。VM 内部クラス名は、「*」の接頭辞を付けて印刷されます。\f2live\fP サブオプションが指定された場合、生存中のオブジェクトのみがカウントされます。 -.br -.TP 3 -\-permstat -Permanent 世代の Java ヒープの、クラスローダー関連の統計データを印刷します。クラスローダーごとに、その名前、状態、アドレス、親クラスローダー、およびクラスローダーがロードしたクラスの数とサイズが印刷されます。さらに、intern された文字列の数とサイズも出力されます。 -.br -.TP 3 -\-F -強制 (Force)。pid が応答しない場合に、jmap \-dump または jmap \-histo オプションとともに使用します。このモードでは、\f2live\fP サブオプションはサポートされません。 -.br -.TP 3 -\-h -ヘルプメッセージを印刷します。 -.br -.br -.TP 3 -\-help -ヘルプメッセージを印刷します。 -.br -.br -.TP 3 -\-J<flag> -jmap が実行されている Java 仮想マシンに <flag> を渡します。 -.br +.PP +<オプションなし> +.RS 4 +オプションを使用しない場合、\fIjmap\fRコマンドは共用オブジェクト・マッピングを出力します。ターゲットJVMにロードされた共用オブジェクトごとに、開始アドレス、マッピングのサイズおよび共用オブジェクト・ファイルのフルパスが出力されます。この動作は、Oracle Solaris +\fIpmap\fRユーティリティと類似しています。 +.RE +.PP +\-dump:[live,] format=b, file=\fIfilename\fR +.RS 4 +Javaヒープを\fIhprof\fRバイナリ形式で\fIfilename\fRにダンプします。\fIlive\fRサブオプションはオプションですが、指定した場合、ヒープ内のアクティブなオブジェクトのみがダンプされます。ヒープ・ダンプを参照するには、jhat(1)コマンドを使用して生成されたファイルを読み取ります。 +.RE +.PP +\-finalizerinfo +.RS 4 +ファイナライズを待っているオブジェクトに関する情報を出力します。 +.RE +.PP +\-heap +.RS 4 +使用されているガベージ・コレクションのヒープ・サマリー、ヘッダー構成、および世代関連のヒープ使用状況を出力します。さらに、internされた文字列の数とサイズも出力されます。 +.RE +.PP +\-histo[:live] +.RS 4 +ヒープのヒストグラムを出力します。Javaクラスごとに、オブジェクトの数、バイト単位でのメモリー・サイズ、および完全修飾クラス名が出力されます。JVMの内部クラス名はアスタリスク(*)の接頭辞を付けて出力されます。\fIlive\fRサブオプションが指定された場合、アクティブなオブジェクトのみがカウントされます。 +.RE +.PP +\-clstats +.RS 4 +Javaヒープの、クラス・ローダー関連の統計データを出力します。クラス・ローダーごとに、その名前、状態、アドレス、親クラス・ローダー、およびクラス・ローダーがロードしたクラスの数とサイズが出力されます。 +.RE +.PP +\-F +.RS 4 +強制します。PIDが応答しないときに、このオプションを\fIjmap \-dump\fRまたは\fIjmap \-histo\fRオプションとともに使用します。このモードでは、\fIlive\fRサブオプションはサポートされません。 +.RE +.PP +\-h +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.PP +\-J\fIflag\fR +.RS 4 +\fIjmap\fRコマンドを実行しているJava仮想マシンに\fIflag\fRを渡します。 .RE - -.LP .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -pmap (1) -.TP 2 -o -jhat(1) -.TP 2 -o -jps(1) -.TP 2 -o -jsadebugd(1) +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jhat(1) .RE - -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jsadebugd(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jps.1 b/jdk/src/linux/doc/man/ja/jps.1 index bcfb9bed82e..d6a7ae886f9 100644 --- a/jdk/src/linux/doc/man/ja/jps.1 +++ b/jdk/src/linux/doc/man/ja/jps.1 @@ -1,278 +1,263 @@ -." 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 -." 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 jps 1 "07 May 2011" - -.LP -.SH "名前" -jps \- Java 仮想マシンプロセスステータスツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -ホスト識別子 -.TP 2 -o -出力形式 -.TP 2 -o -例 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jps +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: モニタリング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jps" "1" "2013年11月21日" "JDK 8" "モニタリング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jps \- ターゲット・システム上で計測されたJava仮想マシン(JVM)を一覧表示します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jps\fP [ \f2options\fP ] [ \f2hostid\fP ] -.br - -.fl +\fIjps\fR [ \fIoptions\fR ] [ \fIhostid\fR ] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。 -.TP 3 -hostid -プロセスレポートを生成するホストのホスト識別子。\f2hostid\fP には、通信プロトコル、ポート番号、実装に固有な他のデータを指定したオプションコンポーネントを含めることができます。 +.if n \{\ .RE - -.LP -.SH " 説明" -.LP -.LP -\f3jps\fP ツールは、ターゲットシステム上で計測された HotSpot Java 仮想マシン (JVM) を一覧表示します。このツールで表示できるレポート情報は、アクセス権を持った JVM に関するものに限定されます。 -.LP -.LP -\f2hostid\fP を指定せずに \f3jps\fP を実行した場合、ローカルホストで計測された JVM が検索されます。\f2hostid\fP を指定して起動した場合、指定されたプロトコルとポートを使用して、指定されたホスト上の JVM を検索します。\f3jstatd\fP プロセスがターゲットホスト上で実行されていると想定されます。 -.LP -.LP -\f3jps\fP コマンドは、ターゲットシステムで計測された各 JVM について、ローカル VM 識別子、つまり \f2lvmid\fP をレポートします。\f3lvmid\fP は、必須ではありませんが、一般的には JVM プロセスに対するオペレーティングシステムのプロセス識別子です。オプションを指定しない場合、\f3jps\fP によって、各 Java アプリケーションの \f2lvmid\fP が一覧表示され、それぞれにアプリケーションのクラス名または JAR ファイル名が簡単な形式で示されます。この簡単な形式のクラス名と JAR ファイル名では、クラスのパッケージ情報または JAR ファイルパス情報が省略されています。 -.LP -.LP -\f3jps\fP コマンドは、\f3Java\fP 起動ツールを使用して \f2main\fP メソッドに渡されるクラス名と引数を検索します。独自の起動ツールを使用してターゲット JVM を起動した場合は、 \f2main\fP メソッドに渡されるクラス名 (または JAR ファイル名) と引数は利用できません。この場合、\f3jps\fP コマンドは、main メソッドへ渡されるクラス名 (または JAR ファイル名) と引数に対して、文字列 \f2Unknown\fP を出力します。 -.LP -.LP -\f3jps\fP コマンドで生成される JVM のリストは、このコマンドを実行する主体に与えられたアクセス権に基づき、制限される場合があります。このコマンドは、オペレーティングシステム独自のアクセス制御機構による決定に基づいて、主体にアクセス権が与えられている JVM だけを一覧表示します。 -.LP -.LP -\f3注:\fP このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 -.LP +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIhostid\fR +.RS 4 +プロセス・レポートを生成するホストの識別子。\fIhostid\fRには、通信プロトコル、ポート番号、実装に固有な他のデータを指定したオプション・コンポーネントを含めることができます。ホスト識別子を参照してください。 +.RE +.SH "説明" +.PP +\fIjps\fRコマンドは、ターゲット・システム上で計測されたJava HotSpot VMを一覧表示します。このコマンドで表示できるレポート情報は、アクセス権を持ったJVMに関するものに限定されます。 +.PP +\fIhostid\fRを指定せずに\fIjps\fRコマンドを実行した場合、ローカル・ホストで計測されたJVMが検索されます。\fIhostid\fRを指定して起動した場合、指定されたプロトコルとポートを使用して、指定されたホスト上のJVMを検索します。\fIjstatd\fRプロセスがターゲット・ホスト上で実行されていると想定されます。 +.PP +\fIjps\fRコマンドは、ターゲット・システムで計測された各JVMについて、ローカルVM識別子、つまり\fIlvmid\fRをレポートします。\fIlvmid\fRは、一般的にはJVMプロセスに対するオペレーティング・システムのプロセス識別子ですが、必ずしもそうであるとは限りません。オプションを指定しない場合、\fIjps\fRによって、各Javaアプリケーションの\fIlvmid\fRが一覧表示され、それぞれにアプリケーションのクラス名またはJARファイル名が簡単な形式で示されます。この簡単な形式のクラス名とJARファイル名では、クラスのパッケージ情報またはJARファイル・パス情報が省略されています。 +.PP +\fIjps\fRコマンドは、Java起動ツールを使用してmainメソッドに渡されるクラス名と引数を検索します。独自の起動ツールを使用してターゲットJVMを起動した場合は、\fImain\fRメソッドに渡されるクラス名またはJARファイル名と引数は利用できません。この場合、\fIjps\fRコマンドは、\fImain\fRメソッドに渡されるクラス名またはJARファイル名と引数に対して、文字列\fIUnknown\fRを出力します。 +.PP +\fIjps\fRコマンドで生成されるJVMのリストは、このコマンドを実行するプリンシパルに与えられたアクセス権に基づき、制限される場合があります。このコマンドは、オペレーティング・システム独自のアクセス制御機構による決定に基づいて、プリンシパルにアクセス権が与えられているJVMのみを一覧表示します。 .SH "オプション" -.LP -.LP -\f3jps\fP コマンドでは、コマンドの出力を変更するオプションが多数サポートされています。将来、これらのオプションは、変更または廃止される可能性があります。 -.LP -.RS 3 -.TP 3 -\-q -クラス名、JAR ファイル名、および \f2main\fP メソッドに渡された引数の出力を抑制し、ローカル VM 識別子の一覧のみを生成します。 -.TP 3 -\-m -main メソッドに渡される引数を出力します。この出力は、組み込まれている JVM に対して null になることもあります。 -.TP 3 -\-l -アプリケーションの主要なクラスのフルパッケージ名、またはアプリケーションの JAR ファイルへのフルパス名を出力します。 -.TP 3 -\-v -JVM に渡される引数を出力します。 -.TP 3 -\-V -フラグファイル (.hotspotrc ファイルまたは \-XX:Flags=<\f2filename\fP> の引数で指定されたファイル) を通じて JVM に渡される引数を出力します。 -.TP 3 -\-Joption -\f3jps\fP が呼び出す \f3java\fP 起動ツールに、\f2option\fP を渡します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 +.PP +\fIjps\fRコマンドでは、コマンドの出力を変更するオプションが多数サポートされています。将来、これらのオプションは、変更または廃止される可能性があります。 +.PP +\-q +.RS 4 +クラス名、JARファイル名、および\fImain\fRメソッドに渡された引数の出力を抑制し、ローカルVM識別子の一覧のみを生成します。 .RE - -.LP -.SS -ホスト識別子 -.LP -.LP -ホスト識別子、つまり \f2hostid\fP は、ターゲットシステムを示す文字列です。\f2hostid\fP 文字列の構文の大部分は、URI の構文に対応しています。 -.LP -.nf -\f3 -.fl -[\fP\f4protocol\fP\f3:][[//]\fP\f4hostname\fP\f3][:\fP\f4port\fP\f3][/\fP\f4servername\fP\f3]\fP -.br -\f3 -.fl -\fP -.fi - -.LP -.RS 3 -.TP 3 -protocol -通信プロトコルです。\f2protocol\fP が省略され、\f2hostname\fP が指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカルプロトコルになります。\f2protocol\fP が省略され、\f2hostname\fP が指定されている場合は、デフォルトプロトコルは \f3rmi\fP になります。 -.TP 3 -hostname -ターゲットホストを示すホスト名または IP アドレスです。\f2hostname\fP が省略されている場合は、ターゲットホストはローカルホストになります。 -.TP 3 -port -リモートサーバーと通信するためのデフォルトポートです。\f2hostname\fP が省略されているか、\f2protocol\fP で最適化されたローカルプロトコルが指定されている場合、\f2port\fP は無視されます。そうでなければ、\f2port\fP パラメータの扱いは、実装によって異なります。デフォルトの \f3rmi\fP プロトコルの場合、\f2port\fP は、リモートホスト上の rmiregistry のポート番号を示します。\f2port\fP が省略され、\f2protocol\fP で \f3rmi\fP が指定されている場合、デフォルトの rmiregistry ポート (1099) が使用されます。 -.TP 3 -servername -このパラメータの扱いは、実装によって異なります。最適化されたローカルプロトコルの場合、このフィールドは無視されます。\f3rmi\fP プロトコルの場合、このパラメータは、リモートホスト上の RMI リモートオブジェクトの名前を示す文字列になります。jstatd(1) コマンドについては、\f3\-n\fP オプションを参照してください。 +.PP +\-m +.RS 4 +\fImain\fRメソッドに渡される引数を出力します。この出力は、組み込まれているJVMに対して\fInull\fRになることもあります。 .RE - -.LP -.SH "出力形式" -.LP -.LP -\f3jps\fP コマンドの出力は、次のパターンに従います。 -.LP +.PP +\-l +.RS 4 +アプリケーションの\fImain\fRクラスのフル・パッケージ名、またはアプリケーションのJARファイルへのフルパス名を出力します。 +.RE +.PP +\-v +.RS 4 +JVMに渡される引数を表示します。 +.RE +.PP +\-V +.RS 4 +クラス名、JARファイル名、およびmaiメソッドに渡された引数の出力を抑制し、ローカルVM識別子の一覧のみを生成します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +JVMに\fIoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されている\fIオプション\fRを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "ホスト識別子" +.PP +ホスト識別子、つまり\fIhostid\fRは、ターゲット・システムを示す文字列です。\fIhostid\fR文字列の構文は、URIの構文に対応しています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f4lvmid\fP\f3 [ [ \fP\f4classname\fP\f3 | \fP\f4JARfilename\fP\f3 | "Unknown"] [ \fP\f4arg\fP\f3* ] [ \fP\f4jvmarg\fP\f3* ] ]\fP -.br -\f3 -.fl -\fP +[protocol:][[//]hostname][:port][/servername] .fi - -.LP -.LP -すべての出力トークンは空白で区切ります。\f2arg\fP の中で空白を使用すると、実際の定位置パラメータに引数をマッピングしようとするときに、あいまいになります。 -.br -.br -\f3注\fP: 将来のリリースでこの形式は変更される可能性があるため、\f3jps\fP の出力を解析するスクリプトは作成しないことをお勧めします。\f3jps\fP 出力を解析するスクリプトを作成すると、このツールの将来のリリースで、作成したスクリプトを変更する必要が予測されます。 -.br - -.LP +.if n \{\ +.RE +.\} +.PP +\fIprotocol\fR +.RS 4 +通信プロトコルです。\fIprotocol\fRが省略され、\fIhostname\fRが指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカル・プロトコルになります。プロトコルが省略され、ホスト名が指定されている場合は、デフォルト・プロトコルは\fIrmi\fRになります。 +.RE +.PP +hostname +.RS 4 +ターゲット・ホストを示すホスト名またはIPアドレスです。\fIhostname\fRパラメータが省略されている場合は、ターゲット・ホストはローカル・ホストになります。 +.RE +.PP +port +.RS 4 +リモート・サーバーと通信するためのデフォルト・ポートです。\fIhostname\fRパラメータが省略されているか、\fIprotocol\fRパラメータが、最適化されたローカル・プロトコルを指定している場合、\fIport\fRパラメータは無視されます。それ以外の場合、\fIport\fRパラメータの扱いは、実装によって異なります。デフォルトの +\fIrmi\fRプロトコルの場合、\fIport\fRパラメータは、リモート・ホスト上のrmiregistryのポート番号を示します。\fIport\fRパラメータが省略されているか、\fIprotocol\fRパラメータが\fIrmi\fRを示している場合、デフォルトのrmiregistryポート(1099)が使用されます。 +.RE +.PP +servername +.RS 4 +このパラメータの扱いは、実装によって異なります。最適化されたローカル・プロトコルの場合、このフィールドは無視されます。\fIrmi\fRプロトコルの場合、このパラメータは、リモート・ホスト上のRMIリモート・オブジェクトの名前を示す文字列になります。詳細は、\fIjstatd\fRコマンドの\fI\-n\fRオプションを参照してください。 +.RE +.SH "出力フォーマット" +.PP +\fIjps\fRコマンドの出力は、次のパターンに従います。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +lvmid [ [ classname | JARfilename | "Unknown"] [ arg* ] [ jvmarg* ] ] +.fi +.if n \{\ +.RE +.\} +.PP +すべての出力トークンは空白文字で区切られます。\fIarg\fR値の中で空白を使用すると、実際の定位置パラメータに引数をマッピングしようとするときに、あいまいになります。 +.PP +\fB注意:\fR +将来のリリースでこの形式は変更される可能性があるため、\fIjps\fRの出力を解析するスクリプトは作成しないことをお薦めします。\fIjps\fR出力を解析するスクリプトを作成すると、このツールの将来のリリースで、作成したスクリプトの変更が必要になる可能性があります。 .SH "例" -.LP -.LP -この節では、\f3jps\fP コマンドの例を示します。 -.LP -.LP -ローカルホスト上で計測された JVM を一覧表示する場合: -.LP +.PP +この項では、\fIjps\fRコマンドの例を示します。 +.PP +ローカル・ホスト上で計測されたJVMを一覧表示する場合: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jps\fP -.br - -.fl -18027 Java2Demo.JAR -.br - -.fl +jps +18027 Java2Demo\&.JAR 18032 jps -.br - -.fl 18005 jstat -.br - -.fl .fi - -.LP -.LP -リモートホスト上で計測された JVM を一覧表示する場合: -.LP -.LP -この例では、\f3jstat\fP サーバーと、その内部 RMI レジストリまたは別の外部 \f3rmiregistry\fP プロセスのいずれかとが、リモートホストのデフォルトポート (ポート 1099) で実行されていると想定しています。また、ローカルホストが、リモートホストへの有効なアクセス権を持っていることも想定しています。この例には、\f2\-l\fP オプションも含まれ、クラス名または JAR ファイル名を詳細な形式で出力します。 -.LP -.nf -\f3 -.fl -\fP\f3jps \-l remote.domain\fP -.br - -.fl -3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR -.br - -.fl -2857 sun.tools.jstatd.jstatd -.br - -.fl -.fi - -.LP -.LP -RMI レジストリにデフォルトではないポートを使用して、リモートホスト上で計測された JVM を一覧表示する場合: -.LP -.LP -この例では、内部 RMI レジストリがポート 2002 にバインドされた \f3jstatd\fP サーバーが、リモートホスト上で実行していると想定しています。また、\f2\-m\fP オプションを使用して、一覧表示されたそれぞれの Java アプリケーションの \f2main\fP メソッドに渡される引数を組み込んでいます。 -.LP -.nf -\f3 -.fl -\fP\f3jps \-m remote.domain:2002\fP -.br - -.fl -3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR -.br - -.fl -3102 sun.tools.jstatd.jstatd \-p 2002 -.fl -.fi - -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -「java(1) \- Java アプリケーション起動ツール」 -.TP 2 -o -「jstat(1) \- Java 仮想マシン統計データ監視ツール」 -.TP 2 -o -「jstatd(1) \- 仮想マシン jstat デーモン」 -.TP 2 -o -「rmiregistry(1) \- Java リモートオブジェクトレジストリ」 +.if n \{\ .RE - -.LP - +.\} +.PP +次の例では、リモート・ホスト上で計測されたJVMを一覧表示します。この例では、\fIjstat\fRサーバーと、その内部RMIレジストリまたは別の外部rmiregistryプロセスのいずれかが、リモート・ホストのデフォルト・ポート(ポート1099)で実行されていると想定しています。また、ローカル・ホストが、リモート・ホストへの有効なアクセス権を持っていることも想定しています。この例には、\fI\-l\fRオプションも含まれ、クラス名またはJARファイル名を詳細な形式で出力します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jps \-l remote\&.domain +3002 /opt/jdk1\&.7\&.0/demo/jfc/Java2D/Java2Demo\&.JAR +2857 sun\&.tools\&.jstatd\&.jstatd +.fi +.if n \{\ +.RE +.\} +.PP +次の例では、RMIレジストリにデフォルトではないポートを使用して、リモート・ホスト上で計測されたJVMを一覧表示します。この例では、内部RMIレジストリがポート2002にバインドされた\fIjstatd\fRサーバーが、リモート・ホスト上で実行されていると想定しています。また、\fI\-m\fRオプションを使用して、一覧表示されたそれぞれのJavaアプリケーションの\fImain\fRメソッドに渡される引数を組み込んでいます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jps \-m remote\&.domain:2002 +3002 /opt/jdk1\&.7\&.0/demo/jfc/Java2D/Java2Demo\&.JAR +3102 sun\&.tools\&.jstatd\&.jstatd \-p 2002 +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jstat(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jstatd(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rmiregistry(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jrunscript.1 b/jdk/src/linux/doc/man/ja/jrunscript.1 index 3f83aa5c428..f53c29f59c7 100644 --- a/jdk/src/linux/doc/man/ja/jrunscript.1 +++ b/jdk/src/linux/doc/man/ja/jrunscript.1 @@ -1,208 +1,206 @@ -." 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 -." 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 jrunscript 1 "07 May 2011" - -.LP -.SH "名前" -jrunscript \- コマンド行スクリプトシェル -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -引数 -.TP 2 -o -例 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jrunscript +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: スクリプティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jrunscript" "1" "2013年11月21日" "JDK 8" "スクリプティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jrunscript \- 対話型モードとバッチ・モードをサポートするコマンドライン・スクリプト・シェルを実行します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jrunscript\fP [ \f2options\fP ] [ arguments... ] -.fl +\fIjrunscript\fR [\fIoptions\fR] [\fIarguments\fR] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -options -オプションを使用する場合、コマンド名の直後に記述してください。 -.TP 3 -arguments -引数を使用する場合、オプションまたはコマンド名の直後に記述してください。 +.if n \{\ .RE - -.LP -.SH " 説明" -.LP -.LP -\f3jrunscript\fP はコマンド行スクリプトシェルです。jrunscript は、対話型 (読み取り \- 評価 \- 出力) モードとバッチ (\-f オプション) モードの両方のスクリプト実行をサポートします。これはスクリプト言語に依存しないシェルです。デフォルトの使用言語は JavaScript ですが、\-l オプションを使えばほかの言語も指定できます。jrunscript は、Java とスクリプト言語との通信によって「探求的なプログラミング」スタイルをサポートします。 -.LP -.LP -\f3注:\fP このツールは\f3試験的なもの\fPであり、将来の JDK のバージョンでは\f3利用できなくなる\fP可能性があります。 -.LP +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIarguments\fR +.RS 4 +引数を使用する場合、オプションまたはコマンド名の直後に記述してください。引数を参照してください。 +.RE +.SH "説明" +.PP +\fIjrunscript\fRコマンドは、言語に依存しないコマンドライン・スクリプト・シェルです。\fIjrunscript\fRは、対話型(read\-eval\-print)モードとバッチ(\fI\-f\fRオプション)・モードの両方のスクリプト実行をサポートします。デフォルトの使用言語はJavaScriptですが、\fI\-l\fRオプションを使用すれば他の言語も指定できます。\fIjrunscript\fRコマンドは、Javaとスクリプト言語との通信を使用して探求的なプログラミング・スタイルをサポートします。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-classpath path -スクリプトからのアクセス対象となるユーザーの .class ファイルの検索場所を指定します。 -.TP 3 -\-cp path -\-classpath \f2path\fP と同義です。 -.TP 3 -\-Dname=value -Java のシステムプロパティーを設定します。 -.TP 3 -\-J<flag> -jrunscript が実行されている Java 仮想マシンに <flag> を渡します。 -.TP 3 -\-l language -指定されたスクリプト言語を使用します。デフォルトでは JavaScript が使用されます。ほかのスクリプト言語を使用するには、対応するスクリプトエンジンの JAR ファイルも指定する必要があります。それには、\-cp、\-classpath のいずれかのオプションを使用します。 -.TP 3 -\-e script -指定されたスクリプトを評価します。このオプションを使えば、コマンド行にすべてが指定された「1 行」スクリプトを実行できます。 -.TP 3 -\-encoding encoding -スクリプトファイルの読み取り時に使用する文字エンコーディングを指定します。 -.TP 3 -\-f script\-file -指定されたスクリプトファイルを評価します (バッチモード)。 -.TP 3 -\-f \- -標準入力からスクリプトを読み取り、それを評価します (対話型モード)。 -.TP 3 -\-help\ -ヘルプメッセージを出力して終了します。 -.TP 3 -\-?\ -ヘルプメッセージを出力して終了します。 -.TP 3 -\-q\ -利用可能なすべてのスクリプトエンジンを一覧表示したあと、終了します。 +.PP +\-classpath \fIpath\fR +.RS 4 +スクリプトがアクセスする必要のあるクラス・ファイルの場所を示します。 +.RE +.PP +\-cp \fIpath\fR +.RS 4 +\fI\-classpath\fR +\fIpath\fRと同じです。 +.RE +.PP +\-D\fIname\fR=\fIvalue\fR +.RS 4 +Javaのシステム・プロパティを設定します。 +.RE +.PP +\-J\fIflag\fR +.RS 4 +\fIflag\fRを、\fIjrunscript\fRコマンドが実行されているJava仮想マシンに直接渡します。 +.RE +.PP +\-I \fIlanguage\fR +.RS 4 +指定されたスクリプト言語を使用します。デフォルトではJavaScriptが使用されます。他のスクリプト言語を使用するには、\fI\-cp\fRまたは\fI\-classpath\fRオプションを使用して、対応するスクリプト・エンジンのJARファイルを指定する必要があります。 +.RE +.PP +\-e \fIscript\fR +.RS 4 +指定されたスクリプトを評価します。このオプションを使用すれば、コマンドラインにすべてが指定された1行スクリプトを実行できます。 +.RE +.PP +\-encoding \fIencoding\fR +.RS 4 +スクリプト・ファイルの読取り時に使用する文字エンコーディングを指定します。 +.RE +.PP +\-f \fIscript\-file\fR +.RS 4 +指定されたスクリプト・ファイル(バッチ・モード)を評価します。 +.RE +.PP +\-f \- +.RS 4 +標準入力からスクリプトを読み取り、それを評価します(対話型モード)。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示して終了します。 +.RE +.PP +\-? +.RS 4 +ヘルプ・メッセージを表示して終了します。 +.RE +.PP +\-q +.RS 4 +利用可能なすべてのスクリプト・エンジンを一覧表示したあと、終了します。 .RE - -.LP .SH "引数" -.LP -.LP -[arguments...] が存在していて、かつ \f3\-e\fP、\f3\-f\fP のいずれのオプションも使用されなかった場合、最初の引数がスクリプトファイルとなり、他の引数が存在する場合はスクリプト引数として渡されます。[arguments..] と、\f3\-e\fP または \f3\-f\fP が使用されている場合、すべての [arguments..] がスクリプト引数として渡されます。[arguments..]、\f3\-e\fP、\f3\-f\fP がどれも存在しなかった場合は、対話型モードが使用されます。スクリプトからスクリプト引数を使用するには、「arguments」という名前の String 配列型のエンジン変数を使用します。 -.LP +.PP +argumentsが存在していて、かつ\fI\-e\fR、\fI\-f\fRのいずれのオプションも使用されなかった場合、最初の引数がスクリプト・ファイルとなり、他の引数が存在する場合はスクリプトに渡されます。argumentsと、\fI\-e\fRまたは\fI\-f\fRオプションが使用されている場合、すべてのargumentsがスクリプトに渡されます。arguments、\fI\-e\fR、\fI\-f\fRがどれも存在しなかった場合は、対話型モードが使用されます。スクリプトからスクリプト引数を使用するには、\fIarguments\fRという名前の\fIString\fR配列型のエンジン変数を使用します。 .SH "例" -.LP -.SS -インラインスクリプトの実行 -.LP +.SS "インライン・スクリプトの実行" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jrunscript \-e "print('hello world')" -.fl -jrunscript \-e "cat('http://java.sun.com')" -.fl -\fP +jrunscript \-e "print(\*(Aqhello world\*(Aq)" +jrunscript \-e "cat(\*(Aqhttp://www\&.example\&.com\*(Aq)" .fi - -.LP -.SS -指定された言語を使用し、指定されたスクリプトファイルを評価する -.LP +.if n \{\ +.RE +.\} +.SS "指定された言語の使用およびスクリプト・ファイルの評価" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jrunscript \-l js \-f test.js -.fl -\fP +jrunscript \-l js \-f test\&.js .fi - -.LP -.SS -対話型モード -.LP +.if n \{\ +.RE +.\} +.SS "対話型モード" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl jrunscript -.fl -js> print('Hello World\\n'); -.fl +js> print(\*(AqHello World\en\*(Aq); Hello World -.fl js> 34 + 55 -.fl -89.0 -.fl -js> t = new java.lang.Thread(function() { print('Hello World\\n'); }) -.fl +89\&.0 +js> t = new java\&.lang\&.Thread(function() { print(\*(AqHello World\en\*(Aq); }) Thread[Thread\-0,5,main] -.fl -js> t.start() -.fl +js> t\&.start() js> Hello World -.fl - -.fl -js> -.fl -\fP -.fi - -.LP -.SS -スクリプト引数を指定してスクリプトファイルを実行する -.LP -.nf -\f3 -.fl -jrunscript test.js arg1 arg2 arg3 -.fl -\fP -.fi - -.LP -test.js が実行対象となるスクリプトファイルであり、arg1、arg2、および arg3 はスクリプト引数としてスクリプトに渡されます。スクリプトは「arguments」配列を使ってこれらにアクセスできます。 -.SH "関連項目" -.LP -.LP -JavaScript が使用される場合、jrunscript は、最初のユーザー定義スクリプトを評価する前に、いくつかの組み込み関数や組み込みオブジェクトを初期化します。これらの JavaScript 組み込み機能については、jsdocs を参照してください。 -.LP +js> +.fi +.if n \{\ +.RE +.\} +.SS "スクリプト引数を指定したスクリプト・ファイルの実行" +.PP +test\&.jsファイルはスクリプト・ファイルです。\fIarg1\fR、\fIarg2\fRおよび\fIarg3\fRの各引数がスクリプトに渡されます。スクリプトはarguments配列を使用してこれらの引数にアクセスできます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jrunscript test\&.js arg1 arg2 arg3 +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.PP +JavaScriptが使用される場合、ユーザー定義スクリプトを評価する前に、\fIjrunscript\fRコマンドはいくつかの組込み関数や組込みオブジェクトを初期化します。これらのJavaScriptの組込みについては、http://code\&.google\&.com/p/jsdoc\-toolkit/にある +JsDoc\-Toolkitを参照してください。 +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jsadebugd.1 b/jdk/src/linux/doc/man/ja/jsadebugd.1 index 077543a2367..0425f1af70a 100644 --- a/jdk/src/linux/doc/man/ja/jsadebugd.1 +++ b/jdk/src/linux/doc/man/ja/jsadebugd.1 @@ -1,142 +1,171 @@ -." 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 -." 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 jsadebugd 1 "07 May 2011" - -.LP -.SH "名前" -jsadebugd \- サービスアビリティーエージェントデバッグデーモン -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jsadebugd +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jsadebugd" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jsadebugd \- Javaプロセスまたはコア・ファイルに接続し、デバッグ・サーバーとして機能します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jsadebugd\fP pid [ server\-id ] -.fl -\f3jsadebugd\fP executable core [ server\-id ] -.fl +\fIjsadebugd\fR \fIpid\fR [ \fIserver\-id\fR ] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -pid -デバッグサーバーが接続するプロセスのプロセス ID です。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。単一のプロセスに接続できるデバッグサーバーのインスタンスは、1 つに制限されます。 +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -executable +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjsadebugd\fR \fIexecutable\fR \fIcore\fR [ \fIserver\-id\fR ] +.fi +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -コアダンプの作成元になる Java 実行可能ファイルです。 +.\} +.PP +\fIpid\fR +.RS 4 +デバッグ・サーバーが接続するプロセスのプロセスIDです。プロセスはJavaプロセスである必要があります。マシン上で実行しているJavaプロセスの一覧を取得するには、jps(1)コマンドを使用します。単一のプロセスに接続できるデバッグ・サーバーのインスタンスは、1つに制限されます。 .RE - -.LP -.RS 3 -.TP 3 -core -デバッグサーバーを接続するコアファイルです。 +.PP +\fI実行可能ファイル\fR +.RS 4 +コア・ダンプの作成元のJava実行可能ファイル。 .RE - -.LP -.RS 3 -.TP 3 -server\-id -複数のデバッグサーバーが同一のマシン上で実行している場合に必要になる、オプション固有の ID です。この ID は、リモートクライアントが、接続先のデバッグサーバーを特定するために使用する必要があります。この ID は、単一のマシン内で一意でなければなりません。 +.PP +\fIコア\fR +.RS 4 +デバッグ・サーバーを接続するコア・ファイルです。 +.RE +.PP +\fIserver\-id\fR +.RS 4 +複数のデバッグ・サーバーが同一のマシン上で実行されている場合に必要になる、オプションの一意のIDです。このIDは、リモート・クライアントが、接続先のデバッグ・サーバーを特定するために使用する必要があります。このIDは、単一のマシン内で一意にする必要があります。 .RE - -.LP .SH "説明" -.LP -.LP -\f3jsadebugd\fP は、Java プロセスまたはコアファイルに接続し、デバッグサーバーとして機能します。jstack(1)、jmap(1)、および jinfo(1) などのリモートクライアントは、Java Remote Method Invocation (RMI) を使用しているサーバーに接続できます。 \f2jsadebugd\fP を起動する前に、次のようにして -.na -\f2rmiregistry\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi を起動する必要があります。 -.LP +.PP +\fIjsadebugd\fRコマンドは、Javaプロセスまたはコア・ファイルに接続し、デバッグ・サーバーとして機能します。\fIjstack\fR、\fIjmap\fRおよび\fIjinfo\fRなどのリモート・クライアントは、Java Remote Method Invocation (RMI)を使用しているサーバーに接続できます。\fIjsadebugd\fRコマンドを起動する前に、\fIrmiregistry\fRコマンドでRMIレジストリを次のように起動します。\fI$JAVA_HOME\fRはJDKのインストール・ディレクトリです。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f4rmiregistry \-J\-Xbootclasspath/p:$JAVA_HOME/lib/sajdi.jar\fP\f3 -.fl -\fP +rmiregistry \-J\-Xbootclasspath/p:$JAVA_HOME/lib/sajdi\&.jar .fi - -.LP -.LP -ここで、 \f2$JAVA_HOME\fP は JDK インストールディレクトリです。rmiregistry が起動していない場合、jsadebugd は標準 (1099) ポートの rmiregistry を内部で起動します。デバッグサーバーは、SIGINT を送信する (Ctrl+C を押す) ことにより停止できます。 -.LP -.LP -\f3注\fP \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。dbgeng.dll が存在していない Windows システムでは、「Debugging Tools For Windows」をインストールしないとこれらのツールが正常に動作しません。また、 \f2PATH\fP 環境変数には、ターゲットプロセスによって使用される \f2jvm.dll\fP の場所、またはクラッシュダンプファイルが生成された場所が含まれるようにしてください。 -.LP -.LP -次に例を示します。 \f2set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -jinfo(1) -.TP 2 -o -jmap(1) -.TP 2 -o -jps(1) -.TP 2 -o -jstack(1) -.TP 2 -o -.na -\f2rmiregistry\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi +.if n \{\ .RE - -.LP - +.\} +.PP +RMIレジストリが起動していない場合、\fIjsadebugd\fRコマンドはRMIレジストリを標準(1099)ポートで内部で起動します。デバッグ・サーバーは、\fISIGINT\fRを送信することにより停止できます。SIGINTを送信するには、\fB[Ctrl] + [C]\fRを押します。 +.PP +\fB注意:\fR +このユーティリティはサポート対象外であり、将来のJDKのリリースでは利用できなくなる可能性があります。\fIdbgeng\&.dll\fRが存在していないWindowsシステムでは、Debugging Tools For Windowsをインストールしないとこれらのツールが正常に動作しません。\fIPATH\fR環境変数には、ターゲット・プロセスによって使用されるjvm\&.dllの場所、またはクラッシュ・ダンプ・ファイルが生成された場所が含まれるようにしてください。例: +\fIs\fR\fIet PATH=%JDK_HOME%\ejre\ebin\eclient;%PATH%\fR +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jinfo(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jmap(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jstack(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rmiregistry(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jstack.1 b/jdk/src/linux/doc/man/ja/jstack.1 index 043a6fb72a3..0afbad29b1d 100644 --- a/jdk/src/linux/doc/man/ja/jstack.1 +++ b/jdk/src/linux/doc/man/ja/jstack.1 @@ -1,172 +1,210 @@ -." 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 -." 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 jstack 1 "07 May 2011" - -.LP -.SH "名前" -jstack \- スタックトレース -.br - -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.br -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.TP 2 -o -既知のバグ -.br -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jstack +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jstack" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jstack \- Javaプロセス、コア・ファイルまたはリモート・デバッグ・サーバーに対するJavaスレッドのスタック・トレースを出力します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jstack\fP [ option ] pid -.fl -\f3jstack\fP [ option ] executable core -.fl -\f3jstack\fP [ option ] [server\-id@]remote\-hostname\-or\-IP -.fl +\fIjstack\fR [ \fIoptions\fR ] \fIpid\fR .fi - -.LP -.SH "パラメータ" -.LP -.LP -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。オプションを参照してください。 -.LP -.RS 3 -.TP 3 -pid -印刷するスタックトレースのプロセス ID です。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -executable -コアダンプの作成元の Java 実行可能ファイルです。 -.br -.TP 3 -core -印刷するスタックトレースのコアファイルです。 -.br -.TP 3 -remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 -.br -.TP 3 -server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjstack\fR [ \fIoptions\fR ] \fIexecutable\fR \fIcore\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjstack\fR [ \fIoptions\fR ] [ \fIserver\-id\fR@ ] \fIremote\-hostname\-or\-IP\fR +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIpid\fR +.RS 4 +出力するスタック・トレースのプロセスIDです。プロセスはJavaプロセスである必要があります。マシン上で実行しているJavaプロセスの一覧を取得するには、jps(1)コマンドを使用します。 +.RE +.PP +\fI実行可能ファイル\fR +.RS 4 +コア・ダンプの作成元のJava実行可能ファイル。 +.RE +.PP +\fIコア\fR +.RS 4 +出力するスタック・トレースのコア・ファイルです。 +.RE +.PP +\fIremote\-hostname\-or\-IP\fR +.RS 4 +リモート・デバッグ・サーバーの\fIホスト名\fRまたは\fIIP\fRアドレス。jsadebugd(1)を参照してください。 +.RE +.PP +\fIserver\-id\fR +.RS 4 +複数のデバッグ・サーバーが同一のリモート・ホストで実行している場合の、オプション固有のID。 .RE - -.LP .SH "説明" -.LP -.LP -\f3jstack\fP は、指定された Java プロセスやコアファイルまたはリモートデバッグサーバーに対する Java スレッドの Java スタックトレースを印刷します。Java フレームごとに、フルクラス名、メソッド名、「bci」(バイトコードインデックス)、および行番号 (利用可能な場合) が印刷されます。\-m オプションを使用すると、jstack は、すべてのスレッドの Java フレームとネイティブフレームの両方を、「pc」(プログラムカウンタ) とともに印刷します。ネイティブフレームごとに、「pc」にもっとも近いネイティブシンボル (利用可能な場合) が印刷されます。C++ 分解名は分解解除されません。C++ 名を分解解除するには、このコマンドの出力を \f3c++filt\fP にパイプします。指定されたプロセスが 64 ビット VM 上で実行されている場合、\f2\-J\-d64\fP オプションを指定しなければならない場合があります。次に例を示します。 -.br - -.LP +.PP +\fIjstack\fRコマンドは、指定されたJavaプロセス、コア・ファイルまたはリモート・デバッグ・サーバーに対するJavaスレッドのJavaスタック・トレースを出力します。Javaフレームごとに、フルクラス名、メソッド名、バイトコード・インデックス(bci)、および行番号(利用可能な場合)が出力されます。\fI\-m\fRオプションを使用すると、\fIjstack\fRコマンドは、すべてのスレッドのJavaフレームとネイティブ・フレームの両方を、プログラム・カウンタ(PC)とともに出力します。ネイティブ・フレームごとに、PCに最も近いネイティブ・シンボル(利用可能な場合)が出力されます。C++分解名は分解解除されません。C++名を分解解除するには、このコマンドの出力を\fIc++filt\fRにパイプします。指定されたプロセスが64ビットJava仮想マシン上で実行されている場合は、\fI\-J\-d64\fRオプションを指定する必要があります(例: +\fIjstack \-J\-d64 \-m pid\fR)。 +.PP +\fB注意\fR +このユーティリティはサポート対象外であり、将来のJDKのリリースでは利用できなくなる可能性があります。dbgeng\&.dllファイルが存在していないWindowsシステムでは、Debugging Tools For Windowsをインストールしないとこれらのツールが正常に動作しません。また、\fIPATH\fR環境変数には、ターゲット・プロセスによって使用されるjvm\&.dllの場所、またはクラッシュ・ダンプ・ファイルが生成された場所が含まれるようにしてください。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jstack \-J\-d64 \-m pid -.fl -\fP +set PATH=<jdk>\ejre\ebin\eclient;%PATH% .fi - -.LP -.LP -\f3注\fP \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。dbgeng.dll が存在していない Windows システムでは、「Debugging Tools For Windows」をインストールしないとこれらのツールが正常に動作しません。また、 \f2PATH\fP 環境変数には、ターゲットプロセスによって使用される \f2jvm.dll\fP の場所、またはクラッシュダンプファイルが生成された場所が含まれるようにしてください。 -.LP -.LP -次に例を示します。 \f2set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -.LP +.if n \{\ +.RE +.\} .SH "オプション" -.LP -.RS 3 -.TP 3 -\-F -「jstack [\-l] pid」が応答しない場合にスタックダンプを強制します。 -.TP 3 -\-l -長形式のリスト。所有 java.util.concurrent の -.na -\f2所有できるシンクロナイザ\fP @ -.fi -http://java.sun.com/javase/6/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.htmlの一覧など、ロックについての追加情報を印刷します。 -.TP 3 -\-m -混合モード (Java およびネイティブ C/C++ フレームの両方) のスタックトレースを印刷します。 -.TP 3 -\-h -ヘルプメッセージを印刷します。 -.br -.br -.TP 3 -\-help -ヘルプメッセージを出力します。 -.br +.PP +\-F +.RS 4 +\fIjstack\fR +[\fI\-l\fR] +\fIpid\fRが応答しない場合にスタック・ダンプを強制します。 .RE - -.LP +.PP +\-l +.RS 4 +長形式のリスト。所有\fIjava\&.util\&.concurrent\fRの所有できるシンクロナイザの一覧など、ロックについての追加情報を印刷します。http://docs\&.oracle\&.com/javase/8/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer\&.htmlにある +\fIAbstractOwnableSynchronizer\fRクラス記述を参照してください +.RE +.PP +\-m +.RS 4 +JavaおよびネイティブC/C++フレームの両方を持つ混合モードのスタック・トレースを出力します。 +.RE +.PP +\-h +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.SH "既知の不具合" +.PP +混合モードのスタック・トレースでは、\fI\-m\fRオプションはリモート・デバッグ・サーバーでは機能しません。 .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -pstack(1) -.TP 2 -o -c++filt(1) -.TP 2 -o -jps(1) -.TP 2 -o -jsadebugd(1) +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +pstack(1) .RE - -.LP -.SH "既知のバグ" -.LP -.LP -混合モードのスタックトレース (\-m オプション使用) は、リモートデバッグサーバーでは機能しません。 -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +C++filt(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jsadebugd(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jstat.1 b/jdk/src/linux/doc/man/ja/jstat.1 index 07e724add93..046a2f37b7f 100644 --- a/jdk/src/linux/doc/man/ja/jstat.1 +++ b/jdk/src/linux/doc/man/ja/jstat.1 @@ -1,5446 +1,619 @@ -." 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 -." 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 jstat 1 "07 May 2011" - -.LP -.SH "名前" -jstat \- Java 仮想マシン統計データ監視ツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -仮想マシン識別子 -.TP 2 -o -オプション -.RS 3 -.TP 2 -* -一般的なオプション -.TP 2 -* -出力オプション -.RE -.TP 2 -o -例 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jstat +.\" Language: English +.\" Date: 2011年5月10日 +.\" SectDesc: モニタリング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jstat" "1" "2011年5月10日" "JDK 8" "モニタリング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jstat \- Java仮想マシン(JVM)の統計を監視します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jstat\fP [ \f2generalOption\fP | \f2outputOptions\fP \f2vmid\fP [\f2interval\fP[s|ms] [\f2count\fP]] ] -.fl +\fIjstat\fR [ \fIgeneralOption\fR | \fIoutputOptions vmid\fR [ \fIinterval\fR[s|ms] [ \fIcount \fR] ] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -generalOption -単独で使用する一般的なコマンド行オプションです (\-help、\-options、または \-version)。 -.TP 3 -outputOptions -単一の \f2statOption\fP と、\-t、\-h、および \-J オプションのいずれかを組み合わせた、1 つまたは複数の出力オプションです。 -.TP 3 -vmid -ターゲットの Java 仮想マシン (JVM) を示す文字列である仮想マシン識別子です。一般的な構文は次のようになります。 -.nf -\f3 -.fl -[\fP\f4protocol\fP\f3:][//]\fP\f4lvmid\fP[@\f2hostname\fP[:\f2port\fP]/\f2servername\fP] -.fl -.fi -vmid 文字列の構文の大部分は、URI の構文に対応しています。\f2vmid\fP は、ローカル JVM を表す単純な整数から、通信プロトコル、ポート番号、および他の実装固有の値を示す複雑な構造まで、さまざまに異なります。詳細は、「仮想マシン識別子」を参照してください。 -.TP 3 -interval[s|ms] -秒 (s) またはミリ秒 (ms) のうち指定した単位でのサンプリング間隔です。デフォルトの単位はミリ秒です。正の整数でなければなりません。これが指定された場合、\f3jstat\fP は interval ごとに出力を生成します。 -.TP 3 -count -表示するサンプル数です。デフォルト値は無限です。つまり、\f3jstat\fP は、ターゲット JVM が終了するまで、または \f3jstat\fP コマンドが終了するまで、統計データを表示します。正の整数でなければなりません。 +.if n \{\ .RE - -.LP -.SH " 説明" -.LP -.LP -\f3jstat\fP ツールは、設置されている HotSpot Java 仮想マシン (JVM) のパフォーマンス統計データを表示します。ターゲット JVM は、仮想マシン識別子、つまり下記の \f2vmid\fP オプションによって識別されます。 -.LP -.LP -\f3注\fP: このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 -.br - -.LP -.SS -仮想マシン識別子 -.LP -.LP -\f2vmid\fP 文字列の構文の大部分は、URI の構文に対応しています。 -.LP -.nf -\f3 -.fl -[\fP\f4protocol\fP\f3:][//]\fP\f4lvmid\fP[@\f2hostname\fP][:\f2port\fP][/\f2servername\fP] -.fl -.fi - -.LP -.RS 3 -.TP 3 -protocol -通信プロトコルです。\f2protocol\fP が省略され、\f2hostname\fP が指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカルプロトコルになります。\f2protocol\fP が省略され、\f2hostname\fP が指定されている場合は、デフォルトプロトコルは \f3rmi\fP になります。 -.TP 3 -lvmid -ターゲット JVM のローカル仮想マシン識別子です。\f2lvmid\fP は、システム上の JVM を一意に識別するプラットフォーム固有の値です。\f2lvmid\fP は、仮想マシン識別子の唯一の必須要素です。\f2lvmid\fP は、絶対というわけではありませんが、一般的にはターゲット JVM プロセスに対するオペレーティングシステムのプロセス識別子です。jps(1) コマンドを使用して、\f2lvmid\fP を指定できます。また、Unix プラットフォームでは\f3ps\fP コマンドを使用して、Windows では Windows タスクマネージャーを使用して、\f2lvmid\fP を指定できます。 -.TP 3 -hostname -ターゲットホストを示すホスト名または IP アドレスです。\f2hostname\fP が省略されている場合は、ターゲットホストはローカルホストになります。 -.TP 3 -port -リモートサーバーと通信するためのデフォルトポートです。\f2hostname\fP が省略されているか、\f2protocol\fP で最適化されたローカルプロトコルが指定されている場合、\f2port\fP は無視されます。そうでなければ、\f2port\fP パラメータの扱いは、実装によって異なります。デフォルトの \f3rmi\fP プロトコルの場合、\f2port\fP は、リモートホスト上の rmiregistry のポート番号を示します。\f2port\fP が省略され、\f2protocol\fP で \f3rmi\fP が指定されている場合、デフォルトの rmiregistry ポート (1099) が使用されます。 -.TP 3 -servername -このパラメータの扱いは、実装によって異なります。最適化されたローカルプロトコルの場合、このフィールドは無視されます。\f3rmi\fP プロトコルの場合は、このパラメータは、リモートホスト上の RMI リソースオブジェクトの名前を示します。 +.\} +.PP +\fIgeneralOption\fR +.RS 4 +単独で使用する一般的なコマンドライン・オプションです(\fI\-help\fRまたは\fI\-options\fR)。一般的なオプションを参照してください。 +.RE +.PP +\fIoutputOptions\fR +.RS 4 +単一の\fIstatOption\fRと\fI\-t\fR、\fI\-h\fRおよび\fI\-J\fRのいずれかのオプションで構成される1つ以上の出力オプション。出力オプションを参照してください。 +.RE +.PP +\fIvmid\fR +.RS 4 +ターゲットJVMを示す文字列である仮想マシン識別子です。一般的な構文は次のとおりです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +[protocol:][//]lvmid[@hostname[:port]/servername] +.fi +.if n \{\ +.RE +.\} +\fIvmid\fR文字列の構文は、URIの構文に対応しています。\fIvmid\fR文字列は、ローカルJVMを表す単純な整数から、通信プロトコル、ポート番号、および他の実装固有の値を示す複雑な構造まで、様々に異なります。仮想マシン識別子を参照してください。 +.RE +.PP +\fIinterval\fR [s|ms] +.RS 4 +秒(s)またはミリ秒(ms)のうち指定した単位でのサンプリング間隔です。デフォルトの単位はミリ秒です。正の整数にする必要があります。指定した場合、\fIjstat\fRコマンドは各間隔で出力を生成します。 +.RE +.PP +\fIcount\fR +.RS 4 +表示するサンプル数です。デフォルト値は無限で、ターゲットJVMが終了するまで、または\fIjstat\fRコマンドが終了するまで、\fIjstat\fRコマンドは統計データを表示します。この値は、正の整数である必要があります。 +.RE +.SH "説明" +.PP +\fIjstat\fRコマンドは、設置されているJava HotSpot VMのパフォーマンス統計データを表示します。ターゲットJVMは、仮想マシン識別子または\fIvmid\fRオプションによって識別されます。 +.SH "仮想マシン識別子" +.PP +\fIvmid\fR文字列の構文は、URIの構文に対応しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +[protocol:][//]lvmid[@hostname[:port]/servername] +.fi +.if n \{\ +.RE +.\} +.PP +\fIprotocol\fR +.RS 4 +通信プロトコルです。\fIprotocol\fR値が省略され、ホスト名が指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカル・プロトコルになります。\fIprotocol\fR値が省略され、ホスト名が指定されている場合は、デフォルト・プロトコルは\fIrmi\fRになります。 +.RE +.PP +\fIlvmid\fR +.RS 4 +ターゲットJVMのローカル仮想マシン識別子です。\fIlvmid\fRは、システム上のJVMを一意に識別するプラットフォーム固有の値です。\fIlvmid\fRは、仮想マシン識別子の唯一の必須要素です。\fIlvmid\fRは、一般的にはターゲットJVMプロセスに対するオペレーティング・システムのプロセス識別子ですが、必ずしもそうであるとは限りません。\fIjps\fRコマンドを使用して、\fIlvmid\fRを特定できます。また、UNIXプラットフォームでは\fIps\fRコマンドを使用して、WindowsではWindowsタスク・マネージャを使用して、\fIlvmid\fRを特定できます。 +.RE +.PP +\fIhostname\fR +.RS 4 +ターゲット・ホストを示すホスト名またはIPアドレスです。\fIhostname\fR値が省略されている場合は、ターゲット・ホストはローカル・ホストになります。 +.RE +.PP +\fIport\fR +.RS 4 +リモート・サーバーと通信するためのデフォルト・ポートです。\fIhostname\fR値が省略されているか、最適化されたローカル・プロトコルが\fIprotocol\fR値に指定されている場合、\fIport\fR値は無視されます。それ以外の場合、\fIport\fRパラメータの扱いは、実装によって異なります。デフォルトの\fIrmi\fRプロトコルの場合、ポート値は、リモート・ホスト上のrmiregistryのポート番号を示します。\fIport\fR値が省略され、\fIprotocol\fR値で\fIrmi\fRが指定されている場合、デフォルトのrmiregistryポート(1099)が使用されます。 +.RE +.PP +\fIservername\fR +.RS 4 +\fIservername\fRパラメータの扱いは、実装によって異なります。最適化されたローカル・プロトコルの場合、このフィールドは無視されます。\fIrmi\fRプロトコルの場合、これは、リモート・ホスト上のRMIリソース・オブジェクトの名前を表します。 .RE - -.LP .SH "オプション" -.LP -.LP -\f3jstat\fP コマンドは、一般的なオプションと出力オプションの 2 つのタイプのオプションをサポートしています。一般的なオプションを使用した場合、\f3jstat\fP は簡単な使用率およびバージョン情報を表示します。出力オプションでは、統計データ出力の内容と形式を指定します。 -.br - -.LP -.LP -\f3注\fP: すべてのオプションとその機能は、将来のリリースで変更または廃止される可能性があります。 -.LP -.SS -一般的なオプション -.LP -.LP +.PP +\fIjstat\fRコマンドは、一般的なオプションと出力オプションの2つのタイプのオプションをサポートしています。一般的なオプションを使用した場合、\fIjstat\fRコマンドは簡単な使用率およびバージョン情報を表示します。出力オプションによって、統計データ出力の内容と形式が決まります。 +.PP +すべてのオプションとその機能は、将来のリリースで変更または廃止される可能性があります。 +.SS "一般的なオプション" +.PP いずれかの一般的なオプションを指定した場合、他のオプションまたはパラメータは一切指定できません。 -.LP -.RS 3 -.TP 3 -\-help -ヘルプメッセージを表示します。 -.TP 3 -\-version -バージョン情報を表示します。 -.TP 3 -\-options -統計データオプションを一覧表示します。下記の「出力オプション」の節を参照してください。 +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示します。 .RE - -.LP -.SS -出力オプション -.LP -.LP -一般的なオプションを指定しない場合に、出力オプションを指定できます。出力オプションは、\f3jstat\fP の出力の内容および形式を指定し、単一の \f2statOption\fP と、他のいずれかの出力オプション (\-h、\-t、および \-J) とで構成されます。\f2statOption\fP は最初に記述する必要があります。 -.LP -.LP -出力は、各列が空白で区切られたテーブルの形式で構成されます。タイトルを含むヘッダー行によって、各列の意味がわかります。ヘッダーの表示頻度を設定するには、\f3\-h\fP オプションを使用します。列のヘッダー名は一般に、オプション間で一貫性が保たれています。一般に、2 つのオプションで同じ名前の列が使用されていれば、2 つの列のデータソースは同じになります。 -.LP -.LP -\f3\-t\fP オプションを使用すると、 \f2Timestamp というラベルの付いたタイムスタンプの列が、\fP 出力の最初の列として表示されます。 \f2Timestamp\fP 列には、ターゲット JVM の起動からの経過時間が、秒単位で表示されます。タイムスタンプの精度は、さまざまな要因によって異なり、大量の負荷のかかったシステムでのスレッドスケジュールの遅延により変動します。 -.LP -.LP -\f2interval\fP および \f2count\fP パラメータを使用して、\f3jstat\fP がその出力を表示する頻度と回数をそれぞれ指定します。 -.LP -.LP -\f3注\fP: 将来のリリースでこの形式は変更される可能性があるため、\f3jstat\fP の出力を解析するスクリプトは作成しないことをお勧めします。\f3jstat\fP 出力を解析するスクリプトを作成する場合は、このツールの将来のリリースで、そのスクリプトを変更しなければならないことに留意してください。 -.LP -.RS 3 -.TP 3 -\-statOption -\f3jstat\fP が表示する統計データ情報を指定します。次の表に、利用可能なオプションの一覧を示します。ある特定のプラットフォームインストールのオプションを一覧表示するには、一般的なオプションの \f3\-options\fP を使用します。 -.br -.br -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -クラスローダーの動作に関する統計データ -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -HotSpot Just\-in\-Time コンパイラの動作に関する統計データ -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクトされたヒープの動作に関する統計データ -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -世代ごとの容量と対応する領域に関する統計データ -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション統計データの概要 (\f3\-gcutil\fP と同じ) と、直前および現在 (適用可能な場合) のガベージコレクションイベントの原因 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の動作に関する統計データ -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代のサイズと対応する領域に関する統計データ -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代および Permanent 世代の動作に関する統計データ -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代のサイズに関する統計データ -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代のサイズに関する統計データ -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション統計データの概要 -.br -.di -.nr k| \n(dn -.nr k- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -HotSpot コンパイル方法の統計データ -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \w\f3オプション\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wclass -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wcompiler -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgc -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgccapacity -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgccause -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcnew -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcnewcapacity -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcold -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcoldcapacity -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcpermcapacity -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcutil -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wprintcompilation -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3表示内容\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(l- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 248 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3表示内容\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'class\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'compiler\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gc\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gccapacity\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gccause\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcnew\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcnewcapacity\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcold\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcoldcapacity\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcpermcapacity\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(k|u+\n(.Vu -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcutil\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'printcompilation\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-52 -.TP 3 -\-h n -\f2n\fP サンプル (出力行) ごとに列ヘッダーを表示。 ただし、\f2n\fP は正の整数値。デフォルト値は 0。 このとき、データの最初の行の上に列ヘッダーが表示される -.TP 3 -\-t n -タイムスタンプ列を出力の最初の列として表示。タイムスタンプは、ターゲット JVM の起動時からの経過時間 -.TP 3 -\-JjavaOption -\f2javaOption\fP を \f3java\fP アプリケーション起動ツールへ渡す。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。オプションの完全なリストについては、「java(1)」のドキュメントを参照してください。 +.PP +\-options +.RS 4 +Staticオプションのリストを表示します。出力オプションを参照してください。 +.RE +.SS "出力オプション" +.PP +一般的なオプションを指定しない場合に、出力オプションを指定できます。出力オプションは、\fIjstat\fRコマンドの出力の内容と形式を決定し、単一の\fIstatOption\fRといずれかの出力オプション(\fI\-h\fR、\fI\-t\fRおよび\fI\-J\fR)で構成されます。\fIstatOption\fRは最初に記述する必要があります。 +.PP +出力は、各列が空白で区切られた表の形式になります。タイトルを含むヘッダー行によって、各列の意味がわかります。ヘッダーの表示頻度を設定するには、\fI\-h\fRオプションを使用します。列のヘッダー名は、様々なオプション間で一貫性が保たれています。一般に、2つのオプションで同じ名前の列が使用されていれば、2つの列のデータ・ソースは同じです。 +.PP +\fI\-t\fRオプションを使用すると、Timestampというラベルの付いたタイムスタンプの列が、出力の最初の列として表示されます。Timestamp列には、ターゲットJVMの起動からの経過時間が、秒単位で表示されます。タイムスタンプの精度は、様々な要因によって異なり、大量の負荷のかかったシステムでのスレッド・スケジュールの遅延により変動します。 +.PP +intervalおよびcountパラメータを使用して、\fIjstat\fRコマンドがその出力を表示する頻度と回数をそれぞれ指定します。 +.PP +\fB注意:\fR +将来のリリースでこの形式は変更される可能性があるため、\fIjstat\fRコマンドの出力を解析するスクリプトは作成しなでください。\fIjstat\fRコマンドの出力を解析するスクリプトを作成する場合は、このツールの将来のリリースで、そのスクリプトを変更する必要があることに留意してください。 +.PP +\-\fIstatOption\fR +.RS 4 +\fIjstat\fRコマンドが表示する統計データ情報を指定します。次に、利用可能なオプションの一覧を示します。特定のプラットフォーム・インストールのオプションを一覧表示するには、一般的なオプションの\fI\-options\fRを使用します。Statオプションおよび出力を参照してください。 +.sp +\fIclass\fR: クラス・ローダーの動作に関する統計データを表示します。 +.sp +\fIcompiler\fR: Java HotSpot VM Just\-in\-Timeコンパイラの動作に関する統計データを表示します。 +.sp +\fIgc\fR: ガベージ・コレクトされたヒープの動作に関する統計データを表示します。 +.sp +\fIgccapacity\fR: 世代ごとの容量と対応する領域に関する統計データを表示します。 +.sp +\fIgccause\fR: ガベージ・コレクション統計データのサマリー(\fI\-gcutil\fRと同じ)と、直前および現在(適用可能な場合)のガベージ・コレクション・イベントの原因を表示します。 +.sp +\fIgcnew\fR: New世代の動作に関する統計データを表示します。 +.sp +\fIgcnewcapacity\fR: New世代のサイズと対応する領域に関する統計データを表示します。 +.sp +\fIgcold\fR: Old世代の動作とメタスペースに関する統計データを表示します。 +.sp +\fIgcoldcapacity\fR: Old世代のサイズに関する統計データを表示します。 +.sp +\fIgcmetacapacity\fR: メタスペースのサイズに関する統計データを表示します。 +.sp +\fIgcutil\fR: ガベージ・コレクションのサマリーに関する統計データを表示します。 +.sp +\fIprintcompilation\fR: Java HotSpot VMコンパイル・メソッドの統計データを表示します。 +.RE +.PP +\-h \fIn\fR +.RS 4 +\fIn\fRサンプル(出力行)ごとに列ヘッダーを表示します。ここで、\fIn\fRは正の整数値です。デフォルト値は0です。この場合、データの最初の行の上に列ヘッダーが表示されます。 +.RE +.PP +\-t +.RS 4 +タイムスタンプ列を出力の最初の列として表示します。タイムスタンプは、ターゲットJVMの起動時からの経過時間です。 +.RE +.PP +\-J\fIjavaOption\fR +.RS 4 +\fIjavaOption\fRをJavaアプリケーション起動ツールに渡します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。オプションの完全なリストについては、java(1)を参照してください。 +.RE +.SS "Statオプションおよび出力" +.PP +次の情報は、\fIjstat\fRコマンドが各\fIstatOption\fRについて出力する列をまとめたものです。 +.PP +\-class \fIoption\fR +.RS 4 +クラス・ローダーの統計データ。 +.sp +\fILoaded\fR: ロードされたクラスの数。 +.sp +\fIBytes\fR: ロードされたKBの数。 +.sp +\fIUnloaded\fR: アンロードされたクラスの数。 +.sp +\fIBytes\fR: アンロードされたKBの数。 +.sp +\fITime\fR: クラスのロードやアンロード処理に要した時間。 +.RE +.PP +\-compiler \fIoption\fR +.RS 4 +Java HotSpot VM Just\-in\-Timeコンパイラの統計データ。 +.sp +\fICompiled\fR: 実行されたコンパイル・タスクの数。 +.sp +\fIFailed\fR: 失敗したコンパイル・タスクの数。 +.sp +\fIInvalid\fR: 無効にされたコンパイル・タスクの数。 +.sp +\fITime\fR: コンパイル・タスクの実行に要した時間。 +.sp +\fIFailedType\fR: 最後に失敗したコンパイルのコンパイル・タイプ。 +.sp +\fIFailedMethod\fR: 最後に失敗したコンパイルのクラス名とメソッド。 +.RE +.PP +\-gc \fIoption\fR +.RS 4 +ガベージ・コレクトされたヒープの統計データ。 +.sp +\fIS0C\fR: Survivor領域0の現在の容量(KB)。 +.sp +\fIS1C\fR: Survivor領域1の現在の容量(KB)。 +.sp +\fIS0U\fR: Survivor領域0の使用率(KB)。 +.sp +\fIS1U\fR: Survivor領域1の使用率(KB)。 +.sp +\fIEC\fR: Eden領域の現在の容量(KB)。 +.sp +\fIEU\fR: Eden領域の使用率(KB)。 +.sp +\fIOC\fR: Old領域の現在の容量(KB)。 +.sp +\fIOU\fR: Old領域の使用率(KB)。 +.sp +\fIMC\fR: メタスペースの容量(KB)。 +.sp +\fIMU\fR: メタスペースの使用率(KB)。 +.sp +\fIYGC\fR: 若い世代のガベージ・コレクション・イベントの数。 +.sp +\fIYGCT\fR: 若い世代のガベージ・コレクション時間。 +.sp +\fIFGC\fR: フルGCイベント数。 +.sp +\fIFGCT\fR: フルガベージ・コレクション時間。 +.sp +\fIGCT\fR: ガベージ・コレクション総時間。 +.RE +.PP +\-gccapacity \fIoption\fR +.RS 4 +メモリー・プール世代および領域容量。 +.sp +\fINGCMN\fR: New世代の最小容量(KB)。 +.sp +\fINGCMX\fR: New世代の最大容量(KB)。 +.sp +\fINGC\fR: New世代の現在の容量(KB)。 +.sp +\fIS0C\fR: Survivor領域0の現在の容量(KB)。 +.sp +\fIS1C\fR: Survivor領域1の現在の容量(KB)。 +.sp +\fIEC\fR: Eden領域の現在の容量(KB)。 +.sp +\fIOGCMN\fR: Old世代の最小容量(KB)。 +.sp +\fIOGCMX\fR: Old世代の最大容量(KB)。 +.sp +\fIOGC\fR: Old世代の現在の容量(KB)。 +.sp +\fIOC\fR: Old領域の現在の容量(KB)。 +.sp +\fIMCMN\fR: メタスペースの最小容量(KB)。 +.sp +\fIMCMX\fR: メタスペースの最大容量(KB)。 +.sp +\fIMC\fR: メタスペースの容量(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIFGC\fR: フルGCイベント数。 +.RE +.PP +\-gccause \fIoption\fR +.RS 4 +このオプションは、\fI\-gcutil\fRオプションと同じガベージ・コレクション統計データのサマリーを表示しますが、最後のガベージ・コレクション・イベントと(適用可能な場合は)現在のガベージ・コレクション・イベントの原因が含まれます。\fI\-gcutil\fRで一覧表示される列のほか、このオプションでは次の列が追加されます。 +.sp +ガベージ・コレクション・イベントを含むガベージ・コレクション統計データ。 +.sp +\fILGCC\fR: 最後のガベージ・コレクションの原因。 +.sp +\fIGCC\fR: 現在のガベージ・コレクションの原因。 +.RE +.PP +\-gcnew \fIoption\fR +.RS 4 +New世代の統計データ。 +.sp +\fIS0C\fR: Survivor領域0の現在の容量(KB)。 +.sp +\fIS1C\fR: Survivor領域1の現在の容量(KB)。 +.sp +\fIS0U\fR: Survivor領域0の使用率(KB)。 +.sp +\fIS1U\fR: Survivor領域1の使用率(KB)。 +.sp +\fITT\fR: 殿堂入りしきい値。 +.sp +\fIMTT\fR: 最大殿堂入りしきい値。 +.sp +\fIDSS\fR: 適切なSurvivorサイズ(KB)。 +.sp +\fIEC\fR: Eden領域の現在の容量(KB)。 +.sp +\fIEU\fR: Eden領域の使用率(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIYGCT\fR: 若い世代のガベージ・コレクション時間。 +.RE +.PP +\-gcnewcapacity \fIoption\fR +.RS 4 +New世代領域サイズの統計データ。 +.sp +NGCMN: New世代の最小容量(KB)。 +.sp +\fINGCMX\fR: New世代の最大容量(KB)。 +.sp +\fINGC\fR: New世代の現在の容量(KB)。 +.sp +\fIS0CMX\fR: Survivor領域0の最大容量(KB)。 +.sp +\fIS0C\fR: Survivor領域0の現在の容量(KB)。 +.sp +\fIS1CMX\fR: Survivor領域1の最大容量(KB)。 +.sp +\fIS1C\fR: Survivor領域1の現在の容量(KB)。 +.sp +\fIECMX\fR: Eden領域の最大容量(KB)。 +.sp +\fIEC\fR: Eden領域の現在の容量(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIFGC\fR: フルGCイベント数。 +.RE +.PP +\-gcold \fIoption\fR +.RS 4 +OldおよびPermanent世代の統計データ。 +.sp +\fIMC\fR: メタスペースの容量(KB)。 +.sp +\fIMU\fR: メタスペースの使用率(KB)。 +.sp +\fIOC\fR: Old領域の現在の容量(KB)。 +.sp +\fIOU\fR: Old領域の使用率(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIFGC\fR: フルGCイベント数。 +.sp +\fIFGCT\fR: フルガベージ・コレクション時間。 +.sp +\fIGCT\fR: ガベージ・コレクション総時間。 +.RE +.PP +\-gcoldcapacity \fIoption\fR +.RS 4 +Old世代の統計データ。 +.sp +\fIOGCMN\fR: Old世代の最小容量(KB)。 +.sp +\fIOGCMX\fR: Old世代の最大容量(KB)。 +.sp +\fIOGC\fR: Old世代の現在の容量(KB)。 +.sp +\fIOC\fR: Old領域の現在の容量(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIFGC\fR: フルGCイベント数。 +.sp +\fIFGCT\fR: フルガベージ・コレクション時間。 +.sp +\fIGCT\fR: ガベージ・コレクション総時間。 +.RE +.PP +\-gcmetacapacity \fIoption\fR +.RS 4 +Permanent世代の統計データ。 +.sp +\fIMCMN\fR: メタスペースの最小容量(KB)。 +.sp +\fIMCMX\fR: メタスペースの最大容量(KB)。 +.sp +\fIMC\fR: メタスペースの容量(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIFGC\fR: フルGCイベント数。 +.sp +\fIFGCT\fR: フルガベージ・コレクション時間。 +.sp +\fIGCT\fR: ガベージ・コレクション総時間。 +.RE +.PP +\-gcutil \fIoption\fR +.RS 4 +ガベージ・コレクション統計データのサマリー +.sp +\fIS0\fR: Survivor領域0の使用率(現在の容量に対するパーセンテージ)。 +.sp +\fIS1\fR: Survivor領域1の使用率(現在の容量に対するパーセンテージ)。 +.sp +\fIE\fR: Eden領域の使用率(現在の容量に対するパーセンテージ)。 +.sp +\fIO\fR: Old領域の使用率(現在の容量に対するパーセンテージ)。 +.sp +\fIM\fR: メタスペースの使用率(領域の現在の容量に対するパーセンテージ)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIYGCT\fR: 若い世代のガベージ・コレクション時間。 +.sp +\fIFGC\fR: フルGCイベント数。 +.sp +\fIFGCT\fR: フルガベージ・コレクション時間。 +.sp +\fIGCT\fR: ガベージ・コレクション総時間。 +.RE +.PP +\-printcompilation \fIoption\fR +.RS 4 +Java HotSpot VMコンパイル・メソッドの統計データ。 +.sp +\fICompiled\fR: 最近コンパイルされたメソッドで実行されたコンパイル・タスクの数。 +.sp +\fISize\fR: 最近コンパイルされたメソッドのバイト・コードのバイト数。 +.sp +\fIType\fR: 最近コンパイルされたメソッドのコンパイル・タイプ。 +.sp +\fIMethod\fR: 最近コンパイルされたメソッドを特定するクラス名とメソッド名。クラス名では、名前空間の区切り文字として、ドット(\&.)のかわりにスラッシュ(/)が使用されます。メソッド名は、指定されたクラス内のメソッドです。これらの2つのフィールドの形式は、HotSpot +\fI\-XX:+PrintComplation\fRオプションと対応しています。 .RE - -.LP -.SS -statOption と出力 -.LP -.LP -以降の表では、\f3jstat\fP が \f2statOption\fP ごとに出力する列について概要を示します。 -.br - -.LP -.SS -\-class オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ロードされたクラスの数 -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ロードされた K バイト数 -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -アンロードされたクラスの数 -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -アンロードされた K バイト数 -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -クラスのロードやアンロード処理に要した時間 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wクラスローダーの統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wLoaded -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wBytes -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wUnloaded -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wBytes -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wTime -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.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 298 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'クラスローダーの統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Loaded\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.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'Bytes\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'Unloaded\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Bytes\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Time\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-25 - -.LP -.SS -\-compiler オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -実行されたコンパイルタスクの数 -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -失敗したコンパイルタスクの数 -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -無効にされたコンパイルタスクの数 -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -コンパイルタスクの実行に要した時間 -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -最後に失敗したコンパイルのコンパイルタイプ -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -最後に失敗したコンパイルのクラス名とメソッド -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wHotSpot Just\-In\-Time コンパイラの統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wCompiled -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFailed -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wInvalid -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wTime -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFailedType -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFailedMethod -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 334 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'HotSpot Just\-In\-Time コンパイラの統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Compiled\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Failed\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Invalid\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Time\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FailedType\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FailedMethod\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-29 - -.LP -.SS -\-gc オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の現在の容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の現在の容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の使用率 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の使用率 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の現在の容量 (KB) -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の使用率 (KB) -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の現在の容量 (KB) -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の使用率 (KB) -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の現在の容量 (KB) -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の使用率 (KB) -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr k| \n(dn -.nr k- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代のガベージコレクション時間 -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di m+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -フルガベージコレクション時間 -.br -.di -.nr m| \n(dn -.nr m- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di n+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション総時間 -.br -.di -.nr n| \n(dn -.nr n- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wガベージコレクトされたヒープの統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0U -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1U -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(l- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(m- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(n- -.if \n(81<\n(38 .nr 81 \n(38 -.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 404 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'ガベージコレクトされたヒープの統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0U\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1U\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(k|u+\n(.Vu -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\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 -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.m+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(n|u+\n(.Vu -.if (\n(n|+\n(#^-1v)>\n(#- .nr #- +(\n(n|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.n+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.rm m+ -.rm n+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-63 - -.LP -.SS -\-gccapacity オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の最小容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の最大容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の現在の容量 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の現在の容量 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の現在の容量 (KB) -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の現在の容量 (KB) -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の最小容量 (KB) -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の最大容量 (KB) -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の現在の容量 (KB) -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の現在の容量 (KB) -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の最小容量 (KB) -.br -.di -.nr k| \n(dn -.nr k- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の最大容量 (KB) -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di m+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の現在の容量 (KB) -.br -.di -.nr m| \n(dn -.nr m- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di n+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の現在の容量 (KB) -.br -.di -.nr n| \n(dn -.nr n- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di o+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr o| \n(dn -.nr o- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wメモリープール世代および領域容量 -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(l- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(m- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(n- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(o- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 478 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'メモリープール世代および領域容量\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(k|u+\n(.Vu -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(m|u+\n(.Vu -.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.m+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(n|u+\n(.Vu -.if (\n(n|+\n(#^-1v)>\n(#- .nr #- +(\n(n|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.n+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(o|u+\n(.Vu -.if (\n(o|+\n(#^-1v)>\n(#- .nr #- +(\n(o|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.o+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.rm m+ -.rm n+ -.rm o+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-67 - -.LP -.SS -\-gccause オプション -.LP -.LP -このオプションは、\f3\-gcutil\fP オプションと同じガベージコレクション統計データの概要を表示しますが、最後のガベージコレクションイベントと (適用可能な場合は) 現在のガベージコレクションイベントの原因が含まれます。\f3\-gcutil\fP で一覧表示される列の他に、このオプションでは次の列が追加されます。 -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -最後のガベージコレクションの原因 -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -現在のガベージコレクションの原因 -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wGC イベントを含むガベージコレクション統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wLGCC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCC -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 501 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GC イベントを含むガベージコレクション統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'LGCC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-13 - -.LP -.SS -\-gcnew オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の現在の容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の現在の容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の使用率 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の使用率 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -最大殿堂入りしきい値 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -適切な Survivor サイズ (KB) -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の現在の容量 (KB) -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の使用率 (KB) -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代のガベージコレクション時間 -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wNew 世代の統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0U -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1U -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wTT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wMTT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wDSS -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w殿堂入りしきい値 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 555 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'New 世代の統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0U\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1U\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'TT\h'|\n(41u'殿堂入りしきい値 -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'MTT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'DSS\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-47 - -.LP -.SS -\-gcnewcapacity オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の最小容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の最大容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の現在の容量 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の最大容量 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の現在の容量 (KB) -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の最大容量 (KB) -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の現在の容量 (KB) -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の最大容量 (KB) -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の現在の容量 (KB) -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wNew 世代領域サイズの統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0CMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1CMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wECMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 609 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'New 世代領域サイズの統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0CMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1CMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'ECMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-47 - -.LP -.SS -\-gcold オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の現在の容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の使用率 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の現在の容量 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の使用率 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -フルガベージコレクション時間 -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション総時間 -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wOld および Permanent 世代の統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 651 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Old および Permanent 世代の統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-35 - -.LP -.SS -\-gcoldcapacity オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の最小容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の最大容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の現在の容量 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の現在の容量 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -フルガベージコレクション時間 -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション総時間 -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wOld 世代の統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 693 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Old 世代の統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-35 - -.LP -.SS -\-gcpermcapacity オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の最小容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の最大容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の現在の容量 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の現在の容量 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -フルガベージコレクション時間 -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション総時間 -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wPermanent 世代の統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 735 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Permanent 世代の統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-35 - -.LP -.SS -\-gcutil オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の使用率 (現在の容量に対するパーセンテージ) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の使用率 (現在の容量に対するパーセンテージ) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の使用率 (現在の容量に対するパーセンテージ) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の使用率 (現在の容量に対するパーセンテージ) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の使用率 (現在の容量に対するパーセンテージ) -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代のガベージコレクション時間 -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -フルガベージコレクション時間 -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション総時間 -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wガベージコレクション統計データの概要 -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0 -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1 -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wE -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wO -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 785 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'ガベージコレクション統計データの概要\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'E\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'O\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'P\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-43 - -.LP -.SS -\-printcompilation オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -実行されたコンパイルタスクの数 -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -メソッドのバイトコードのバイト数 -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -コンパイル方法を特定するクラス名とメソッド名。クラス名では、名前空間の区切り文字として、「.」の代わりに「/」が使用される。メソッド名は、指定されたクラス内のメソッドである。これらの 2 つのフィールドの形式は、HotSpot \- \f3XX:+PrintComplation\fP オプションと対応している -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wHotSpot コンパイル方法の統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wCompiled -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wサイズ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w型 -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wメソッド -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wコンパイルタイプ -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.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 811 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'HotSpot コンパイル方法の統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Compiled\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'サイズ\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 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\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' -.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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-19 - -.LP .SH "例" -.LP -.LP -この項では、21891 の \f2lvmid\fP を持つローカル JVM を監視する例を示します。 -.LP -.SS -gcutil オプションの使用 -.LP -.LP -この例は、\f2lvmid\fP 21891 に接続して、250 ミリ秒間隔で 7 つのサンプルを取得し、\f3\-gcutil\fP オプションでの指定に従って出力を表示します。 -.LP +.PP +この項では、21891の\fIlvmid\fRを持つローカルJVMをモニタリングする例を示します。 +.SS "gcutilオプション" +.PP +この例では、lvmid 21891に接続して、250ミリ秒間隔で7つのサンプルを取得し、\-\fIgcutil\fRオプションでの指定に従って出力を表示します。 +.PP +この例の出力は、若い世代のコレクションが3番目と4番目のサンプル間で行われたことを示しています。コレクションには0\&.001秒かかっており、オブジェクトがEden領域(E)からOld領域(O)に昇格したため、Old領域の使用率は9\&.49%から9\&.51%に増加しています。Survivor領域は、コレクション前は12\&.44%が使用されていましたが、コレクション後の使用は7\&.74%のみです。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jstat \-gcutil 21891 250 7\fP -.br - -.fl - S0 S1 E O P YGC YGCT FGC FGCT GCT -.br - -.fl - 12.44 0.00 27.20 9.49 96.70 78 0.176 5 0.495 0.672 -.br - -.fl - 12.44 0.00 62.16 9.49 96.70 78 0.176 5 0.495 0.672 -.br - -.fl - 12.44 0.00 83.97 9.49 96.70 78 0.176 5 0.495 0.672 -.br - -.fl - 0.00 7.74 0.00 9.51 96.70 79 0.177 5 0.495 0.673 -.br - -.fl - 0.00 7.74 23.37 9.51 96.70 79 0.177 5 0.495 0.673 -.br - -.fl - 0.00 7.74 43.82 9.51 96.70 79 0.177 5 0.495 0.673 -.br - -.fl - 0.00 7.74 58.11 9.51 96.71 79 0.177 5 0.495 0.673 -.br - -.fl +jstat \-gcutil 21891 250 7 + S0 S1 E O M YGC YGCT FGC FGCT GCT +0\&.00 99\&.74 13\&.49 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.49 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.49 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.49 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.80 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.80 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.80 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 .fi - -.LP -.LP -この例の出力は、若い世代のコレクションが 3 番目と 4 番目のサンプル間で行われたことを示しています。コレクションには 0.001 秒かかっており、オブジェクトが Eden 領域 (E) から Old 領域 (O) に昇格したため、Old 領域の使用率は 9.49% から 9.51% に増加しています。Survivor 領域は、コレクション前は 12.44% が使用されていましたが、コレクション後は 7.74% しか使用されていません。 -.LP -.SS -列ヘッダー文字列の繰り返し -.LP -.LP -この例は、\f2lvmid\fP 21891 に接続して、250 ミリ秒間隔でサンプルを取得し、\f3\-gcutil\fP オプションでの指定に従って出力を表示します。さらに、\f3\-h3\fP オプションを使用して、データが 3 行表示されるごとに列ヘッダーを出力します。 -.LP -.nf -\f3 -.fl -\fP\f3jstat \-gcnew \-h3 21891 250\fP -.br - -.fl - S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT -.br - -.fl - 64.0 64.0 0.0 31.7 31 31 32.0 512.0 178.6 249 0.203 -.br - -.fl - 64.0 64.0 0.0 31.7 31 31 32.0 512.0 355.5 249 0.203 -.br - -.fl - 64.0 64.0 35.4 0.0 2 31 32.0 512.0 21.9 250 0.204 -.br - -.fl - S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT -.br - -.fl - 64.0 64.0 35.4 0.0 2 31 32.0 512.0 245.9 250 0.204 -.br - -.fl - 64.0 64.0 35.4 0.0 2 31 32.0 512.0 421.1 250 0.204 -.br - -.fl - 64.0 64.0 0.0 19.0 31 31 32.0 512.0 84.4 251 0.204 -.br - -.fl - S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT -.br - -.fl - 64.0 64.0 0.0 19.0 31 31 32.0 512.0 306.7 251 0.204 -.br - -.fl -.fi - -.LP -.LP -この例では、ヘッダー文字列の繰り返しが見られるほかにも、2 番目と 3 番目のサンプル間で Young GC が行われたことがわかります。この継続時間は 0.001 秒でした。このコレクションでは、Survivor 領域 0 の使用率 (S0U) が適切な Survivor サイズ (DSS) を超過することになるライブデータが検出されました。この結果、オブジェクトは、Old 世代 (この出力には非表示) へ昇格され、殿堂入りしきい値 (TT) が、31 から 2 へ降格されました。 -.LP -.LP -別のコレクションが、5 番目と 6 番目のサンプル間で行われています。このコレクションでは、Survivor がほとんど見られず、殿堂入りしきい値を 31 に戻しました。 -.LP -.SS -サンプルごとのタイムスタンプの挿入 -.LP -.LP -この例は、\f2lvmid\fP 21891 へ接続し、250 ミリ秒間隔で 3 つのサンプルを取得しています。\f3\-t\fP オプションを使用して、最初の列にサンプルごとのタイムスタンプを表示しています。 -.LP -.nf -\f3 -.fl -\fP\f3jstat \-gcoldcapacity \-t 21891 250 3\fP -.br - -.fl -Timestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT -.br - -.fl - 150.1 1408.0 60544.0 11696.0 11696.0 194 80 2.874 3.799 -.br - -.fl - 150.4 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863 -.br - -.fl - 150.7 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863 -.br - -.fl -.fi - -.LP -.LP -\f2Timestamp\fP 列には、ターゲット JVM の起動時からの経過時間が、秒単位でレポートされています。さらに、\f3\-gcoldcapacity\fP 出力では、割り当て要求または昇格要求あるいはその両方を満たすためにヒープが拡張するごとに、Old 世代の容量 (OGC) と Old 領域の容量 (OC) とが増加していることがわかります。Old 世代の容量 (OGC) は、81 番目のフル GC (FGC) 後に、11696 KB から 13820 KB へ増加しています。Old 世代 (および領域) の最大容量は、60544 KB (OGCMX) なので、まだ拡張できる余裕が残されています。 -.LP -.SS -リモート JVM のインストゥルメンテーションの監視 -.LP -.LP -この例は、\f3\-gcutil\fP オプションを使用して、\f2remote.domain\fP というシステム上の \f2lvmid\fP 40496 に接続し、サンプルを秒単位で無期限に取得しています。 -.LP -.nf -\f3 -.fl -\fP\f3jstat \-gcutil 40496@remote.domain 1000\fP -.br - -.fl -... \f2output omitted\fP -.br - -.fl -.fi - -.LP -.LP -\f2lvmid\fP は、リモートホストの名前と結合されて、\f240496@remote.domain\fP の \f2vmid\fP を構成しています。結果として、この \f2vmid\fP は、\f3rmi\fP プロトコルを使用して、リモートホスト上のデフォルトの \f3jstatd\fP サーバーと通信します。\f3jstatd\fP サーバーは、\f3rmiregistry\fP を使用して、デフォルトの \f3rmiregistry\fP ポート (ポート 1099) にバインドされた \f2remote.domain\fP に配置されれます。 -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -「java(1) \- Java アプリケーション起動ツール」 -.TP 2 -o -「jps(1) \- Java 仮想マシンプロセスステータスツール」 -.TP 2 -o -「jstatd(1) \- 仮想マシン jstat デーモン」 -.TP 2 -o -「rmiregistry(1) \- Java リモートオブジェクトレジストリ」 +.if n \{\ .RE - -.LP - +.\} +.SS "列ヘッダー文字列の繰返し" +.PP +この例では、lvmid 21891に接続して、250ミリ秒間隔でサンプルを取得し、\fI\-gcutil\fRオプションでの指定に従って出力を表示します。さらに、\fI\-h3\fRオプションを使用して、データが3行表示されるごとに列ヘッダーを出力します。 +.PP +この例では、ヘッダー文字列の繰返しが表示されているほか、2番目と3番目のサンプル間でYoung GCが行われたことがわかります。この継続時間は0\&.001秒でした。このコレクションでは、Survivor領域0の使用率(S0U)が適切なSurvivorサイズ(DSS)を超過することになるアクティブ・データが検出されました。この結果、オブジェクトは、Old世代(この出力には非表示)へ昇格され、殿堂入りしきい値(TT)が、31から2へ降格されました。 +.PP +別のコレクションが、5番目と6番目のサンプル間で行われています。このコレクションでは、Survivorがほとんど見られず、殿堂入りしきい値を31に戻しました。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jstat \-gcnew \-h3 21891 250 + S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT + 64\&.0 64\&.0 0\&.0 31\&.7 31 31 32\&.0 512\&.0 178\&.6 249 0\&.203 + 64\&.0 64\&.0 0\&.0 31\&.7 31 31 32\&.0 512\&.0 355\&.5 249 0\&.203 + 64\&.0 64\&.0 35\&.4 0\&.0 2 31 32\&.0 512\&.0 21\&.9 250 0\&.204 + S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT + 64\&.0 64\&.0 35\&.4 0\&.0 2 31 32\&.0 512\&.0 245\&.9 250 0\&.204 + 64\&.0 64\&.0 35\&.4 0\&.0 2 31 32\&.0 512\&.0 421\&.1 250 0\&.204 + 64\&.0 64\&.0 0\&.0 19\&.0 31 31 32\&.0 512\&.0 84\&.4 251 0\&.204 + S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT + 64\&.0 64\&.0 0\&.0 19\&.0 31 31 32\&.0 512\&.0 306\&.7 251 0\&.204 +.fi +.if n \{\ +.RE +.\} +.SS "サンプルごとのタイムスタンプの挿入" +.PP +この例では、lvmid21891へ接続し、250ミリ秒間隔で3つのサンプルを取得しています。\fI\-t\fRオプションを使用して、最初の列にサンプルごとのタイムスタンプを表示しています。 +.PP +Timestamp列には、ターゲットJVMの起動時からの経過時間が、秒単位でレポートされています。さらに、\fI\-gcoldcapacity\fR出力では、割当リクエストまたは昇格リクエストあるいはその両方を満たすためにヒープが拡張するたびに、Old世代の容量(OGC)とOld領域の容量(OC)とが増加していることがわかります。81番目のフル・ガベージ・コレクション(FGC)の後、Old世代の容量(OGC)は11,696 KBから13820 KBに増加しました。この世代(および領域)の最大容量は、60,544 KB (OGCMX)なので、まだ拡張できる余裕が残されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Timestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT + 150\&.1 1408\&.0 60544\&.0 11696\&.0 11696\&.0 194 80 2\&.874 3\&.799 + 150\&.4 1408\&.0 60544\&.0 13820\&.0 13820\&.0 194 81 2\&.938 3\&.863 + 150\&.7 1408\&.0 60544\&.0 13820\&.0 13820\&.0 194 81 2\&.938 3\&.863 +.fi +.if n \{\ +.RE +.\} +.SS "リモートJVMのインストゥルメンテーションの監視" +.PP +この例は、\fI\-gcutil\fRオプションを使用して、remote\&.domainというシステム上のlvmid 40496に接続し、サンプルを秒単位で無期限に取得しています。 +.PP +lvmidは、リモート・ホストの名前と結合されて、\fI40496@remote\&.domain\fRの\fIvmid\fRを構成しています。結果として、このvmidは、\fIrmi\fRプロトコルを使用して、リモート・ホスト上のデフォルトの\fIjstatd\fRサーバーと通信します。\fIjstatd\fRサーバーは、rmiregistryを使用して、デフォルトのrmiregistryポート(ポート1099)にバインドされた\fIremote\&.domain\fRに配置されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jstat \-gcutil 40496@remote\&.domain 1000 +\fI\&.\&.\&. output omitted\fR +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jstatd(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rmiregistry(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jstatd.1 b/jdk/src/linux/doc/man/ja/jstatd.1 index 9eeffc439d9..cfd8e4e4b82 100644 --- a/jdk/src/linux/doc/man/ja/jstatd.1 +++ b/jdk/src/linux/doc/man/ja/jstatd.1 @@ -1,286 +1,268 @@ -." 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 -." 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 jstatd 1 "07 May 2011" - -.LP -.SH "名前" -jstatd \- 仮想マシン jstat デーモン -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -セキュリティー -.TP 2 -o -リモートインタフェース -.TP 2 -o -例 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jstatd +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: モニタリング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jstatd" "1" "2013年11月21日" "JDK 8" "モニタリング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jstatd \- Java仮想マシン(JVM)をモニターし、リモート・モニタリング・ツールがJVMに接続できるようにします。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jstatd [ \fP\f4options\fP\f3 ]\fP -.br -\f3 -.fl -\fP +\fIjstatd\fR [ \fIoptions\fR ] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。オプションは任意の順序で指定できます。重複または矛盾するオプションがある場合、最後に指定したオプションが優先されます。 +.if n \{\ .RE - -.LP -.SH " 説明" -.LP -.LP -\f3jstatd\fP ツールは、計測された HotSpot Java 仮想マシン (JVM) の作成と終了を監視し、ローカルシステム上で実行している Java 仮想マシンに、リモート監視ツールが接続できるようにするためのインタフェースを提供する RMI サーバーアプリケーションです。 -.LP -.LP -\f3jstatd\fP サーバーでは、ローカルホストに RMI レジストリが存在することが必要になります。\f3jstatd\fP サーバーは、デフォルトポートまたは \f2\-p port\fP オプションで指定されたポート上の RMI レジストリに接続しようとします。RMI レジストリが見つからない場合、\f2\-p port\fP オプションで指定されたポート、または \f2\-p port\fP が省略されている場合は、デフォルト RMI レジストリにバインドされた \f3jstatd\fP アプリケーション内に、1 つの RMI レジストリが作成されます。内部 RMI レジストリの作成は、\f2\-nr\fP オプションを指定することによって禁止することができます。 -.LP -.LP -\f3注:\fP このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 -.LP +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.SH "説明" +.PP +\fIjstatd\fRコマンドは、計測されたJava HotSpot VMの作成と終了をモニターし、ローカル・システム上で実行されているJVMに、リモート・モニタリング・ツールが接続できるようにするためのインタフェースを提供するRMIサーバー・アプリケーションです。 +.PP +\fIjstatd\fRサーバーでは、ローカル・ホストにRMIレジストリが必要になります。\fIjstatd\fRサーバーはデフォルト・ポートで、または\fI\-p\fR +\fIport\fRオプションで指定したポートで、RMIレジストリに接続しようとします。RMIレジストリが見つからない場合、\fI\-p\fR +\fIport\fRオプションで指定されたポート、または\fI\-p\fR +\fIport\fRオプションが省略されている場合は、デフォルトRMIレジストリにバインドされた\fIjstatd\fRアプリケーション内に、1つのRMIレジストリが作成されます。内部RMIレジストリの作成は、\fI\-nr\fRオプションを指定することによって中止できます。 .SH "オプション" -.LP -.LP -\f3jstatd\fP コマンドは次のオプションをサポートしています。 -.LP -.RS 3 -.TP 3 -\-nr -既存の RMI レジストリが見つからない場合、\f2jstatd\fP プロセス内に内部 RMI レジストリを作成しないようにします。 -.TP 3 -\-p\ port -RMI レジストリがあると予想されるポート番号です。 見つからない場合は、\f2\-nr\fP が指定されていなければ作成されます。 -.TP 3 -\-n\ rminame -RMI レジストリにおいて、リモート RMI オブジェクトがバインドされる名前です。デフォルト名は \f2JStatRemoteHost\fP です。複数の \f3jstatd\fP サーバーが同じホスト上で起動している場合、各サーバーのエクスポートした RMI オブジェクトの名前は、このオプションを指定することによって、一意の名前にすることができます。ただし、このオプションを使用する場合、監視クライアントの \f2hostid\fP および \f2vmid\fP 文字列に、その一意のサーバー名を含める必要があります。 -.TP 3 -\-Joption -\f3javac\fP が呼び出す \f3java\fP 起動ツールに、\f2option\fP を渡します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 +.PP +\-nr +.RS 4 +既存のRMIレジストリが見つからない場合、\fIjstatd\fRプロセス内に内部RMIレジストリを作成しないようにします。 .RE - -.LP -.SH "セキュリティー" -.LP -.LP -\f3jstatd\fP サーバーは、有効なネイティブアクセス権を持つ JVM だけを監視できます。したがって、\f3jstatd\fP プロセスは、ターゲット JVM と同じユーザー資格で実行している必要があります。一部のユーザー資格は、UNIX(TM) ベースのシステムにおける \f2root\fP ユーザーのように、システム上の任意の JVM によってエクスポートされたインストゥルメンテーションへのアクセス権を持っています。このような資格で実行している \f3jstatd\fP プロセスは、システム上のすべての JVM を監視できますが、セキュリティー上の別の問題が起こります。 -.LP -.LP -\f3jstatd\fP サーバーは、リモートクライアントの認証を一切与えません。そのため、\f3jstatd\fP サーバープロセスを実行すると、\f3jstatd\fP プロセスがアクセス権を持つすべての JVM によるインストゥルメンテーションのエクスポートを、ネットワーク上のすべてのユーザーに公開することになります。この無防備な状態は、環境的に望ましくない場合があります。 特に実稼働環境または安全でないネットワークでは、\f3jstatd\fP プロセスを起動する前に、ローカルセキュリティーポリシーを検討する必要があります。 -.LP -.LP -\f3jstatd\fP サーバーは、他のセキュリティーマネージャーがインストールされていない場合には、RMISecurityPolicy のインスタンスをインストールします。 そのため、セキュリティーポリシーファイルを指定する必要があります。ポリシーファイルは、デフォルトポリシー実装の -.na -\f2ポリシーファイルの構文\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyFiles.htmlに準拠する必要があります。 -.LP -.LP -次のポリシーファイルの場合、\f3jstatd\fP サーバーは一切のセキュリティー例外を使用せずに実行できます。このポリシーは、すべてのコードベースへのあらゆるアクセス権を認めるポリシーよりも自由度は低いですが、\f3jstatd\fP サーバーを実行するために最低限必要なアクセス権しか認めないポリシーよりも自由度は高くなっています。 -.LP +.PP +\-p \fIport\fR +.RS 4 +RMIレジストリがあると予想されるポート番号です。見つからない場合は、\fI\-nr\fRオプションが指定されていなければ作成されます。 +.RE +.PP +\-n \fIrminame\fR +.RS 4 +RMIレジストリにおいて、リモートRMIオブジェクトがバインドされる名前です。デフォルト名は\fIJStatRemoteHost\fRです。複数の\fIjstatd\fRサーバーが同じホスト上で起動している場合、各サーバーのエクスポートしたRMIオブジェクトの名前は、このオプションを指定することによって、一意の名前にすることができます。ただし、このオプションを使用する場合、モニタリング・クライアントの\fIhostid\fRおよび\fIvmid\fR文字列に、その一意のサーバー名を含める必要があります。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +JVMに\fIoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されている\fIオプション\fRを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "セキュリティ" +.PP +\fIjstatd\fRサーバーは、適切なネイティブ・アクセス権を持つJVMのみを監視できます。したがって、\fIjstatd\fRプロセスは、ターゲットJVMと同じユーザー資格で実行されている必要があります。UNIXベースのシステムにおけるrootユーザーなどの一部のユーザー資格は、システム上の任意のJVMによってエクスポートされたインストゥルメンテーションへのアクセス権を持っています。このような資格で実行されている\fIjstatd\fRプロセスは、システム上のすべてのJVMを監視できますが、セキュリティ上の別の問題が起こります。 +.PP +\fIjstatd\fRサーバーには、リモート・クライアントの認証機能がありません。そのため、\fIjstatd\fRサーバー・プロセスを実行すると、\fIjstatd\fRプロセスがアクセス権を持つすべてのJVMによるインストゥルメンテーションのエクスポートを、ネットワーク上のすべてのユーザーに公開することになります。この無防備な状態は、環境によっては望ましくない場合があるので、特に実稼働環境または安全でないネットワークでは、\fIjstatd\fRプロセスを起動する前に、ローカル・セキュリティ・ポリシーを検討する必要があります。 +.PP +\fIjstatd\fRサーバーは、他のセキュリティ・マネージャがインストールされていない場合には、\fIRMISecurityPolicy\fRのインスタンスをインストールします。そのため、セキュリティ・ポリシー・ファイルを指定する必要があります。ポリシー・ファイルは、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/PolicyFiles\&.htmlにある +「デフォルトのPolicyの実装とポリシー・ファイルの構文」に準拠している必要があります +.PP +次のポリシー・ファイルでは、セキュリティ例外を発生せずに\fIjstatd\fRサーバーを実行できます。このポリシーは、すべてのコード・ベースへのあらゆるアクセス権を認めるポリシーよりも自由度が低いですが、\fIjstatd\fRサーバーを実行するために最低限必要なアクセス権のみを認めるポリシーよりも自由度が高くなっています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -grant codebase "file:${java.home}/../lib/tools.jar" {\fP -.br -\f3 -.fl - permission java.security.AllPermission;\fP -.br -\f3 -.fl -};\fP -.br -\f3 -.fl -\fP +grant codebase "file:${java\&.home}/\&.\&./lib/tools\&.jar" { + permission java\&.security\&.AllPermission; +}; .fi - -.LP -.LP -このポリシーを使用するには、このテキストを \f2jstatd.all.policy\fP というファイルにコピーし、次のように \f3jstatd\fP サーバーを実行します。 -.LP +.if n \{\ +.RE +.\} +.PP +このポリシー設定を使用するには、このテキストを\fIjstatd\&.all\&.policy\fRというファイルにコピーし、次のように\fIjstatd\fRサーバーを実行します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jstatd \-J\-Djava.security.policy=jstatd.all.policy\fP -.br -\f3 -.fl -\fP +jstatd \-J\-Djava\&.security\&.policy=jstatd\&.all\&.policy .fi - -.LP -.LP -より厳しいセキュリティーを実施するサイトの場合、カスタムポリシーファイルを使用して、特定の信頼できるホストまたはネットワークにアクセスを制限することができます。 ただし、このような方法は、IP アドレスの盗聴攻撃を受けやすくなります。セキュリティーの問題について、カスタマイズしたポリシーファイルでも対処できない場合は、\f3jstatd\fP サーバーを実行せずに、\f3jstat\fP と \f3jps\fP ツールをローカルで使用することがもっとも安全な方法になります。 -.LP -.SH "リモートインタフェース" -.LP -.LP -\f3jstatd\fP プロセスがエクスポートするインタフェースは、独自に開発したものであり変更される予定です。ユーザーおよび開発者は、このインタフェースへの書き込みを行わないでください。 -.LP +.if n \{\ +.RE +.\} +.PP +より厳しいセキュリティを実施するサイトの場合、カスタム・ポリシー・ファイルを使用して、特定の信頼できるホストまたはネットワークにアクセスを制限することができます。ただし、このような方法は、IPアドレスの盗聴攻撃を受けやすくなります。セキュリティの問題について、カスタマイズしたポリシー・ファイルでも対処できない場合は、\fIjstatd\fRサーバーを実行せずに、\fIjstat\fRと\fIjps\fRツールをローカルで使用することが最も安全な方法になります。 +.SH "リモート・インタフェース" +.PP +\fIjstatd\fRプロセスがエクスポートするインタフェースは、独自に開発したものであり変更される予定です。ユーザーおよび開発者は、このインタフェースへの書込みを行わないでください。 .SH "例" -.LP -.LP -次に \f3jstatd\fP を起動する例を紹介します。\f3jstatd\fP スクリプトによって、サーバーはバックグラウンドで自動的に起動します。 -.LP -.SS -内部 RMI レジストリの使用 -.LP -.LP -この例は、内部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。この例では、デフォルトの RMI レジストリポート (ポート 1099) には、他のサーバーはバインドされていないと想定しています。 -.LP +.PP +次に、\fIjstatd\fRコマンドの例を示します。\fIjstatd\fRスクリプトによって、サーバーはバックグラウンドで自動的に起動します。 +.SS "内部RMIレジストリ" +.PP +この例は、内部RMIレジストリを使用したホストによる\fIjstatd\fRセッションの起動を表しています。この例では、デフォルトのRMIレジストリ・ポート(ポート1099)には、他のサーバーはバインドされていないと想定しています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jstatd \-J\-Djava.security.policy=all.policy -.fl -\fP +jstatd \-J\-Djava\&.security\&.policy=all\&.policy .fi - -.LP -.SS -外部 RMI レジストリの使用 -.LP -.LP -この例は、外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 -.LP -.nf -\f3 -.fl -rmiregistry& -.fl -jstatd \-J\-Djava.security.policy=all.policy -.fl -\fP -.fi - -.LP -.LP -この例は、ポート 2020 の外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 -.LP -.nf -\f3 -.fl -rmiregistry 2020& -.fl -jstatd \-J\-Djava.security.policy=all.policy \-p 2020 -.fl -\fP -.fi - -.LP -.LP -この例は、AlternateJstatdServerName の名前にバインドされた、ポート 2020 の外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 -.LP -.nf -\f3 -.fl -rmiregistry 2020& -.fl -jstatd \-J\-Djava.security.policy=all.policy \-p 2020 \-n AlternateJstatdServerName -.fl -\fP -.fi - -.LP -.SS -インプロセス RMI レジストリの作成の禁止 -.LP -.LP -この例は、RMI レジストリが見つからない場合に RMI レジストリを作成しない \f3jstatd\fP の起動を表しています。この例では、RMI レジストリがすでに実行していると想定しています。実行していない場合は、該当するエラーメッセージが表示されます。 -.LP -.nf -\f3 -.fl -jstatd \-J\-Djava.security.policy=all.policy \-nr -.fl -\fP -.fi - -.LP -.SS -RMI ログ機能の有効化 -.LP -.LP -この例は、RMI ログ機能を有効にした \f3jstatd\fP の起動を表しています。この方法は、トラブルシューティングまたはサーバー活動の監視に役立ちます。 -.LP -.nf -\f3 -.fl -jstatd \-J\-Djava.security.policy=all.policy \-J\-Djava.rmi.server.logCalls=true -.fl -\fP -.fi - -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -「java(1) \- Java アプリケーション起動ツール」 -.TP 2 -o -「jps(1) \- Java 仮想マシンプロセスステータスツール」 -.TP 2 -o -「jstat(1) \- Java 仮想マシン統計データ監視ツール」 -.TP 2 -o -「 -.na -\f2rmiregistry\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi \- Java リモートオブジェクトレジストリ」 +.if n \{\ .RE - -.LP - +.\} +.SS "外部RMIレジストリ" +.PP +この例は、外部RMIレジストリを使用した\fIjstatd\fRセッションの起動を表しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +rmiregistry& +jstatd \-J\-Djava\&.security\&.policy=all\&.policy +.fi +.if n \{\ +.RE +.\} +.PP +この例では、ポート2020の外部RMIレジストリを使用して\fIjstatd\fRセッションを起動します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jrmiregistry 2020& +jstatd \-J\-Djava\&.security\&.policy=all\&.policy \-p 2020 +.fi +.if n \{\ +.RE +.\} +.PP +この例では、ポート2020の外部RMIレジストリを使用して、\fIAlternateJstatdServerName\fRにバインドされている\fIjstatd\fRセッションを起動します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +rmiregistry 2020& +jstatd \-J\-Djava\&.security\&.policy=all\&.policy \-p 2020 + \-n AlternateJstatdServerName +.fi +.if n \{\ +.RE +.\} +.SS "インプロセスRMIレジストリの作成の停止" +.PP +この例では、外部RMIレジストリがない場合に作成しない\fIjstatd\fRセッションを起動します。この例では、RMIレジストリがすでに実行されていると想定しています。RMIレジストリが実行されていない場合、エラー・メッセージが表示されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jstatd \-J\-Djava\&.security\&.policy=all\&.policy \-nr +.fi +.if n \{\ +.RE +.\} +.SS "RMIロギングの有効化" +.PP +この例では、RMIロギング機能を有効化して\fIjstatd\fRセッションを起動します。この方法は、トラブルシューティングまたはサーバー活動のモニタリングに役立ちます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jstatd \-J\-Djava\&.security\&.policy=all\&.policy + \-J\-Djava\&.rmi\&.server\&.logCalls=true +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jstat(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rmiregistry(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/jvisualvm.1 b/jdk/src/linux/doc/man/ja/jvisualvm.1 index 25a29ca9610..d4d0d519bf6 100644 --- a/jdk/src/linux/doc/man/ja/jvisualvm.1 +++ b/jdk/src/linux/doc/man/ja/jvisualvm.1 @@ -1,126 +1,123 @@ -." Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." under the terms of the GNU General Public License version 2 only, as -." published by the Free Software Foundation. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -." or visit www.oracle.com if you need additional information or have any -." questions. -." -.TH jvisualvm 1 "07 May 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 +'\" t +.\" Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jvisualvm +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Javaトラブルシューティング、プロファイリング、モニタリングおよび管理ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jvisualvm" "1" "2013年11月21日" "JDK 8" "Javaトラブルシューティング、プロファイリング、モニタリン" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jvisualvm \- Javaアプリケーションを視覚的に監視、トラブルシュートおよびプロファイルします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \fP\f3jvisualvm\fP [ \f2options\fP ] -.fl +\fIjvisualvm\fR [ \fIoptions\fR ] .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 +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.SH "説明" +.PP +Java VisualVMは、指定されたJava仮想マシン(JVM)でJavaテクノロジ・ベースのアプリケーション(Javaアプリケーション)が実行されているときに、そのJavaアプリケーションに関する詳細な情報を提供する直感的なグラフィカル・ユーザー・インタフェースです。Java VisualVMという名前は、Java VisualVMがJVMソフトウェアに関する情報を視覚的に提供するという事実に由来しています。 +.PP +Java VisualVMは、いくつかのモニタリング、トラブルシューティングおよびプロファイリング・ユーティリティを1つのツールに統合します。たとえば、スタンドアロン・ツール\fIjmap\fR、\fIjinfo\fR、\fIjstat\fRおよび\fIjstack\fRで提供されている機能のほとんどが、Java VisualVMに組み込まれています。\fIjconsole\fRコマンドによって提供される一部の機能など、他の機能はオプションのプラグインとして追加できます。 +.PP +Java VisualVMは、Javaアプリケーションの開発者がアプリケーションのトラブルシューティングを行ったり、アプリケーションのパフォーマンスを監視および改善したりするのに役立ちます。Java VisualVMを使用すると、開発者はヒープ・ダンプの生成および解析、メモリー・リークの特定、ガベージ・コレクションの実行および監視、およびメモリーとCPUの簡易プロファイリングの実行が可能になります。プラグインでJava VisualVMの機能を拡張できます。たとえば、\fIjconsole\fRコマンドのほとんどの機能は、「MBean」タブおよびJConsole Plug\-in Wrapperプラグインを介して使用できます。標準のJava VisualVMプラグインのカタログから選択するには、Java VisualVMメニューの\fB「ツール」\fR、\fB「プラグイン」\fRを選択します。 +.PP +Java VisualVMを起動するには、次のコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +% jvisualvm <options> +.fi +.if n \{\ +.RE +.\} .SH "オプション" -.LP -.LP -次のオプションは、Java VisualVM を起動したときに実行可能になります。 -.LP -.RS 3 -.TP 3 -\-J<jvm_option>\ -この \f2<jvm_option>\fP を JVM ソフトウェアに渡します。 +.PP +次のオプションは、Java VisualVMを起動したときに実行可能になります。 +.PP +\-J\fIjvm_option\fR +.RS 4 +この\fIjvm_option\fRを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 -http://visualvm.java.net -.TP 2 -o -.na -\f2Java SE プラットフォームでの Java VisualVM のドキュメント\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/visualvm/index.html +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Java VisualVM開発者のサイト +http://visualvm\&.java\&.net/ .RE - -.LP -.LP -\f2(* 「Java 仮想マシン」と「JVM」という用語は、Java プラットフォームの仮想マシンを意味しています。)\fP -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Java SEドキュメントのJava VisualVM +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/visualvm/index\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/keytool.1 b/jdk/src/linux/doc/man/ja/keytool.1 index aac06f6ba57..c19d4cf4e45 100644 --- a/jdk/src/linux/doc/man/ja/keytool.1 +++ b/jdk/src/linux/doc/man/ja/keytool.1 @@ -1,1845 +1,1579 @@ -." 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 -." 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 keytool 1 "07 May 2011" - -.LP -.SH "名前" -keytool \- 鍵と証明書の管理ツール -.LP -.LP -暗号化鍵、X.509 証明書チェーン、および信頼できる証明書を含むキーストア (データベース) を管理します。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: keytool +.\" Language: English +.\" Date: 2013年8月6日 +.\" SectDesc: セキュリティ・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "keytool" "1" "2013年8月6日" "JDK 8" "セキュリティ・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +keytool \- 暗号化鍵、X\&.509証明書チェーンおよび信頼できる証明書を含むキーストア(データベース)を管理します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3keytool\fP [ commands ] -.fl -.fi - -.LP -.LP -Java SE 6 で keytool のコマンドインタフェースが変更されました。詳細については「変更点」の節を参照してください。以前に定義されたコマンドも引き続きサポートされています。 -.LP -.SH "説明" -.LP -\f3keytool\fP は、鍵と証明書を管理するためのユーティリティーです。keytool を使うと、自分の公開鍵と非公開鍵のペア、および関連する証明書を管理し、デジタル署名を使った自己認証 (ほかのユーザーまたはサービスに対して自分自身を認証すること) や、データの整合性と証明書に関するサービスを利用することができます。keytool では、通信相手の公開鍵を (証明書の形で) キャッシュすることもできます。 -.LP -「証明書」とは、あるエンティティー (人物、会社など) からのデジタル署名付きの文書のことです。証明書には、ほかのあるエンティティーの公開鍵 (およびその他の情報) が特別な値を持っていることが書かれています(「証明書」を参照)。データにデジタル署名が付いている場合は、デジタル署名を検証することで、データの整合性およびデータが本物であることをチェックできます。データの「整合性」とは、データが変更されたり、改変されたりしていないことを意味します。 また、データが「本物である」とは、そのデータが、データを作成して署名したと称する人物から実際に渡されたデータであることを意味します。 -.LP -.LP -また、\f3keytool\fP を使えば、DES などの対称暗号化/復号化で使用される秘密鍵を管理することもできます。 -.LP -.LP -\f3keytool\fP は、鍵と証明書を\f2「キーストア」\fPに格納します。 -.LP -.SH "コマンドとオプションに関する注" -.LP -.LP -以下では、コマンドとそのオプションについて説明します。注: -.LP -.RS 3 -.TP 2 -o -どのコマンド名およびオプション名にも先頭にマイナス記号 (\-) が付く -.TP 2 -o -各コマンドのオプションは任意の順序で指定できる -.TP 2 -o -イタリック体になっていないすべての項目、または中括弧か角括弧で囲まれているすべての項目は、そのとおりに指定する必要がある -.TP 2 -o -オプションを囲む中括弧は、一般に、そのオプションをコマンド行で指定しなかった場合に、デフォルト値が使われることを意味する。中括弧は、 \f2\-v\fP、 \f2\-rfc\fP、および \f2\-J\fP オプションを囲むのにも使われるが、これらのオプションはコマンド行で指定された場合にのみ意味を持つ (つまり、これらのオプションには、オプション自体を指定しないこと以外に「デフォルト値」は存在しない) -.TP 2 -o -オプションを囲む角括弧は、そのオプションをコマンド行で指定しなかった場合に、値の入力を求められることを意味する。( \f2\-keypass\fP オプションの場合、オプションをコマンド行で指定しなかった場合は、\f3keytool\fP がまずキーストアのパスワードから非公開/秘密鍵の復元を試みる。 ユーザーは、この試みが失敗した場合に非公開/秘密鍵のパスワードの入力を求められる -.TP 2 -o -イタリック体の項目の実際の値 (オプションの値) は、ユーザーが指定する必要があるたとえば、 \f2\-printcert\fP コマンドの形式は次のとおりである -.nf -\f3 -.fl - keytool \-printcert {\-file \fP\f4cert_file\fP\f3} {\-v} -.fl -\fP -.fi -.LP -\f2\-printcert\fP コマンドを指定するときは、\f2cert_file\fP の代わりに実際のファイル名を指定する。次に例を示す -.nf -\f3 -.fl - keytool \-printcert \-file VScert.cer -.fl -\fP -.fi -.TP 2 -o -オプションの値に空白 (スペース) が含まれている場合は、値を引用符で囲む必要がある -.TP 2 -o -\f2\-help\fP コマンドはデフォルトのコマンドである。たとえば、次のようにコマンド行を指定したとする -.nf -\f3 -.fl - keytool -.fl -\fP -.fi -.LP -これは、次のように指定することと同じです。 -.nf -\f3 -.fl - keytool \-help -.fl -\fP +\fIkeytool\fR [\fIcommands\fR] .fi +.if n \{\ .RE - -.LP -.SS -オプションのデフォルト値 -.LP -.LP -オプションのデフォルト値は、次のとおりです。 -.LP -.nf -\f3 -.fl -\-alias "mykey" -.fl - -.fl -\-keyalg -.fl - "DSA" (\fP\f3\-genkeypair\fP\f3 を使用している場合) -.fl - "DES" (\fP\f3\-genseckey\fP\f3 を使用している場合) -.fl - -.fl -\-keysize -.fl - 2048 (\fP\f3\-genkeypair\fP\f3 を使用していて \-keyalg が "RSA" の場合) -.fl - 1024 (\fP\f3\-genkeypair\fP\f3 を使用していて \-keyalg が "DSA" の場合) -.fl - 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 -\-validity 90 -.fl - -.fl -\-keystore ユーザーのホームディレクトリの \fP\f4.keystore\fP\f3 というファイル -.fl - -.fl -\-storetype セキュリティープロパティーファイルの「keystore.type」プロパティーの値で、 -.fl - java.security.KeyStore の静的な getDefaultType メソッドから返される \fP\f4 \fP\f3 -.fl - \fP\f4 \fP\f3 -.fl - -.fl -\-file 読み込みの場合は標準入力、書き込みの場合は標準出力 -.fl - -.fl -\-protected false -.fl -\fP -.fi - -.LP -.LP -公開/非公開鍵ペアの生成において、署名アルゴリズム (\f2\-sigalg\fP オプション) は、基になる非公開鍵のアルゴリズムから派生します。 -.LP -.RS 3 -.TP 2 -o -基になる非公開鍵が DSA タイプである場合、\f2\-sigalg\fP オプションのデフォルト値は SHA1withDSA になり、 -.TP 2 -o -基になる非公開鍵が RSA タイプである場合は、\f2\-sigalg\fP オプションのデフォルト値は SHA256withRSA になり、 -.TP 2 -o -基になる非公開鍵が EC タイプである場合は、\f2\-sigalg\fP オプションのデフォルト値は SHA256withECDSA になります。 -.RE - -.LP -.LP -選択可能な \f2\-keyalg\fP および \f2\-sigalg\fP の完全な一覧については、 -.na -\f2「Java Cryptography Architecture API Specification & Reference」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。 -.LP -.SS -一般オプション -.LP -.LP -\f2\-v\fP オプションは、 \f2\-help\fP コマンドを除くすべてのコマンドで使用できます。このオプションを指定した場合、コマンドは「冗長」モードで実行され、詳細な証明書情報が出力されます。 -.LP -.LP -また、 \f2\-J\fP\f2javaoption\fP オプションも、任意のコマンドで使用できます。このオプションを指定した場合、指定された \f2javaoption\fP 文字列が Java インタプリタに直接渡されます。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタオプションを一覧表示するには、コマンド行で \f2java \-h\fP または \f2java \-X\fP と入力してください。 -.LP -.LP -次のオプションは、キーストアに対する操作を行うすべてのコマンドで指定できます。 -.LP -.RS 3 -.TP 3 -\-storetype storetype -.LP -この修飾子は、インスタンスを生成するキーストアのタイプを指定します。 -.TP 3 -\-keystore keystore -.LP -キーストアの場所を指定します。 -.LP -特定の \f3keytool\fP コマンドを実行する際に、JKS ストアタイプが使用され、かつキーストアファイルがまだ存在していなかった場合、新しいキーストアファイルが作成されます。たとえば、 \f2keytool \-genkeypair\fP の実行時に \f2\-keystore\fP オプションが指定されなかった場合、 \f2.keystore\fP という名前のデフォルトキーストアファイルがユーザーのホームディレクトリ内にまだ存在していなければ、そこに作成されます。同様に、 \f2\-keystore \fP\f2ks_file\fP というオプションが指定されてもその \f2ks_file\fP が存在しなかった場合、そのファイルが作成されます。 -.LP -\f2\-keystore\fP オプションからの入力ストリームは、 \f2KeyStore.load\fP メソッドに渡されます。URL として \f2NONE\fP が指定されている場合は、null のストリームが \f2KeyStore.load\fP メソッドに渡されます。 \f2NONE\fP は、 \f2KeyStore\fP がファイルベースではなく、たとえば、ハードウェアトークンデバイスに置かれている場合に指定します。 -.TP 3 -\-storepass[:env|:file] argument -.LP -キーストアの整合性を保護するために使うパスワードを指定します。 -.LP -修飾子 \f2env\fP または \f2file\fP を指定しない場合、パスワードの値は \f2argument\fP になります。この値は、6 文字以上にする必要があります。それ以外の場合、パスワードは次のように取得されます。 -.RS 3 -.TP 2 -o -\f2env\fP: \f2argument\fP という名前の環境変数からパスワードを取得する -.TP 2 -o -\f2file\fP: \f2argument\fP という名前のファイルからパスワードを取得する -.RE -.LP -\f3注\fP: \f2\-keypass\fP、 \f2\-srckeypass\fP、 \f2\-destkeypass\fP \f2\-srcstorepass\fP、 \f2\-deststorepass\fP などのパスワードを必要とするその他のオプションはすべて、 \f2env\fP と \f2file\fP 修飾子を受け付けます。パスワードオプションと修飾子は、必ずコロン (\f2:\fP) で区切ってください。 -.LP -パスワードは、キーストアの内容にアクセスするすべてのコマンドで使われます。この種のコマンドを実行するときに、コマンド行で \f2\-storepass\fP オプションを指定しなかった場合は、パスワードの入力を求められます。 -.LP -キーストアから情報を取り出す場合は、パスワードを省略できます。 パスワードを省略すると、取り出す情報の整合性をチェックできないので、警告が表示されます。 -.TP 3 -\-providerName provider_name -.LP -セキュリティープロパティーファイル内に含まれる暗号化サービスプロバイダ名を特定するために使用されます。 -.TP 3 -\-providerClass provider_class_name -.LP -暗号化サービスプロバイダがセキュリティープロパティーファイルに指定されていないときは、そのマスタークラスファイルの名前を指定するときに使われます。 -.TP 3 -\-providerArg provider_arg -.LP -\f2\-providerClass\fP と組み合わせて使用します。\f2provider_class_name\fP のコンストラクタに対する省略可能な文字列入力引数を表します。 -.TP 3 -\-protected -.LP -\f2true\fP または \f2false\fP のいずれか。専用 PIN リーダーなどの保護された認証パスを介してパスワードを指定する必要がある場合には、この値に \f2true\fP を指定してください。 -.LP -注: \f2\-importkeystore\fP コマンドには 2 つのキーストアが関係しているため、2 つのオプション、つまり \f2\-srcprotected\fP と \f2\-destprotected\fP がソースキーストアとターゲットキーストアにそれぞれ指定されます。 -.TP 3 -\-ext {name{:critical}{=value}} -.LP -X.509 証明書エクステンションを示します。このオプションを \-genkeypair および \-gencert で使用して、生成される証明書または \f2\-certreq\fP にエクステンションを埋め込み、証明書要求で要求されるエクステンションを示すことができます。このオプションは、複数回使用できます。name には、サポートされているエクステンション名 (下記を参照) または任意の OID 番号を指定できます。value を指定した場合は、エクステンションのパラメータを示します。省略した場合は、エクステンションのデフォルト値 (定義されている場合) を示すか、またはエクステンションにパラメータは必要ありません。 \f2:critical\fP 修飾子を指定した場合は、エクステンションの isCritical 属性が true であることを示します。それ以外の場合は false であることを示します。:critical の代わりに : \f2:c\fP を使用できます。 . -.RE - -.LP -.LP -現在、keytool は次の名前のエクステンションをサポートしています (大文字と小文字は区別されない)。 -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 80 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -BC または BasicConstraints -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -完全な形は「ca:{true|false}[,pathlen:<len>]」で、<len> は「ca:true,pathlen:<len>」の省略表記です。 省略すると、「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)、keyEncipherment、dataEncipherment、keyAgreement、keyCertSign、cRLSign、encipherOnly、decipherOnly のいずれかを指定できます。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、 serverAuth、clientAuth、codeSigning、emailProtection、 timeStamping、OCSPSigning、または任意の OID 文字列のいずれかを指定できます。 名前付きの usage は、あいまいさがなければ、 最初の数文字またはキャメルケーススタイルに 短縮できます。Usage の大文字と小文字は区別されません。 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -SAN または SubjectAlternativeName -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -type:value(,type:value)*。type には、EMAIL、URI、DNS、IP、または OID を指定できます。value は、type の文字列形式の値です。 -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -IAN または IssuerAlternativeName -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -SubjectAlternativeName と同じです -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -SIA または SubjectInfoAccess -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -method:location\-type:location\-value (,method:location\-type:location\-value)*。 method には、「timeStamping」、「caRepository」、または任意の OID を指定できます。location\-type および location\-value には、SubjectAlternativeName エクステンションでサポートされる任意の type:value を指定できます。 -.br -.di -.nr k| \n(dn -.nr k- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -AIA または AuthorityInfoAccess -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di m+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -SubjectInfoAccess と同じです。method には、「ocsp」、「caIssuers」、または任意の OID を指定できます。 -.br -.di -.nr m| \n(dn -.nr m- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \w\f3名前\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wKU または KeyUsage -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 38 \n(a- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(d- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(f- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(h- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(j- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(l- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 81 0 -.nr 38 \w\f3値\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(m- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 325 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3名前\fP\h'|\n(41u'\f3値\fP -.ne \n(a|u+\n(.Vu -.ne \n(b|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'KU または KeyUsage\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.ne \n(e|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.ne \n(g|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.ne \n(i|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.ne \n(k|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.ne \n(m|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.m+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.rm m+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-44 - -.LP -.LP -OID 名の場合、OCTET STRING タイプと長さのバイトを除外したエクステンションについては、値は extnValue の HEX ダンプの DER エンコーディングです。HEX 文字列では、標準の HEX 数 (0\-9、a\-f、A\-F) 以外の文字は無視されます。したがって、 \f2「01:02:03:04」\fP と \f2「01020304」の両方とも\fP 同一の値として受け付けられます。値がない場合、エクステンションの値フィールドは空になります。 -.LP -.LP -\f2\-gencert\fP でのみ使用する「honored」という特別な名前は、証明書要求に含まれるエクステンションを優先する方法を示します。この名前の値は、 \f2「all」\fP (要求されるすべてのエクステンションが優先される)、 \f2「name{:[critical|non\-critical]}」\fP (名前付きのエクステンションが優先されるが、別の isCritical 属性を使用する)、および \f2「\-name」\fP (「all」とともに使用し、例外を示す) のコンマ区切りリストです。デフォルトでは、要求されるエクステンションは優先されません。 -.LP -.LP -\-ext 優先のオプションに加え、別の名前の、または OID \-ext のオプションを指定した場合は、このエクステンションが、すでに優先されているエクステンションに追加されます。ただし、この名前 (または OID) を優先される値でも使用した場合は、その値と重要性が要求に含まれるものをオーバーライドします。 -.LP -.LP -subjectKeyIdentifier エクステンションは常に作成されます。自己署名でない証明書の場合は、authorityKeyIdentifier が常に作成されます。 -.LP -.LP -\f3注:\fP ユーザーは、エクステンション (および証明書のほかのフィールド) の組み合わせによっては、インターネットの標準に準拠しない場合があることに注意してください。詳細については、「証明書の準拠に関する注意事項」を参照してください。 -.LP -.SH "コマンド" -.LP -.SS +.\} +.PP +\fIcommands\fR +.RS 4 +コマンドを参照してください。これらのコマンドは、次のようにタスク別に分類されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} キーストアへのデータの作成または追加 -.LP -.RS 3 -.TP 3 -\-gencert {\-rfc} {\-infile infile} {\-outfile outfile} {\-alias alias} {\-sigalg sigalg} {\-dname dname} {\-startdate startdate {\-ext ext}* {\-validity valDays} [\-keypass keypass] {\-keystore keystore} [\-storepass storepass] {\-storetype storetype} {\-providername provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -証明書要求ファイル ( \f2keytool \-certreq\fP コマンドで作成できる) に応答して証明書を生成します。このコマンドは、\f2infile\fP から (省略した場合は、標準入力から) 要求を読み込み、別名の非公開鍵を使ってその要求に署名して、X.509 証明書を \f2outfile\fP に (省略した場合は、標準出力に) 出力します。 \f2\-rfc\fP を指定した場合、出力形式は BASE64 符号化の PEM になります。それ以外の場合は、バイナリ DER が作成されます。 -.LP -\f2sigalg\fP には、証明書に署名を付けるときに使うアルゴリズムを指定します。\f2startdate\fP は、証明書が有効になる開始時刻/日付です。\f2valDays\fP には、証明書の有効日数を指定します。 -.LP -\f2dname\fP を指定すると、生成される証明書の主体として使用されます。それ以外の場合は、証明書要求からの名前が使用されます。 -.LP -\f2ext\fP は、証明書に埋め込まれる X.509 エクステンションを示します。\-ext の文法については、「一般オプション」を参照してください。 -.LP -\f2\-gencert\fP コマンドを使用すると、証明書チェーンを作成できます。次の例では、 \f2e1\fP という証明書を作成します。この証明書の証明書チェーンには、3 つの証明書が含まれています。 -.LP -次のコマンドは、ca、ca1、ca2、および 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 の証明書チェーンには ca、ca1、および 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] {\-startdate value} {\-ext ext}* {\-validity valDays} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -鍵のペア (公開鍵および関連する非公開鍵) を生成します。公開鍵は X.509 v3 自己署名証明書でラップされます。証明書は、単一の要素を持つ証明書チェーンとして格納されます。この証明書チェーンと非公開鍵は、\f2alias\fP で特定される新しいキーストアエントリに格納されます。 -.LP -\f2keyalg\fP は鍵のペアの生成に使用するアルゴリズムを、\f2keysize\fP は生成する各鍵のサイズを、それぞれ指定します。\f2sigalg\fP には、自己署名証明書に署名を付けるときに使うアルゴリズムを指定します。このアルゴリズムは、\f2keyalg\fP と互換性のあるものでなければなりません。 -.LP -\f2dname\fP には、\f2alias\fP に関連付け、自己署名証明書の issuer フィールドと subject フィールドとして使う X.500 識別名を指定します。 コマンド行で識別名を指定しなかった場合は、識別名の入力を求められます。 -.LP -\f2keypass\fP には、生成される鍵のペアのうち、非公開鍵を保護するのに使うパスワードを指定します。パスワードを指定しなかった場合は、パスワードの入力を求められます。このとき、Return キーを押すと、キーストアのパスワードと同じパスワードが鍵のパスワードに設定されます。\f2keypass\fP は、6 文字以上にする必要があります。 -.LP -\f2startdate\fP には、証明書の発行時刻を指定します。これは、X.509 証明書の「Validity」フィールドの「Not Before」値とも呼ばれます。 -.LP -オプションの値は、次の 2 つの形式のいずれかで設定できます。 -.RS 3 -.TP 3 -1. -([+\-]\f2nnn\fP[ymdHMS])+ -.TP 3 -2. -[yyyy/mm/dd] [HH:MM:SS] +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-gencert .RE -.LP -最初の形式では、発行時刻は、指定される値だけ現在の時刻から移ります。指定される値は、一連の下位の値を連結したものになります。下位の各値で、プラス記号 (「+」) は時間が進むことを、マイナス記号 (「\-」) は時間が戻ることを意味しています。移る時間は \f2nnn\fP で、単位は年、月、日、時間、分、または秒です (それぞれ、1 文字の「y」、「m」、「d」、「H」、「M」、または「S」で示されている)。下位の各値で \f2java.util.GregorianCalendar.add(int field, int amount)\fP メソッドを使うことで、発行時刻の追加の値が左から右へ計算されます。たとえば、 \f2「\-startdate \-1y+1m\-1d」\fPと指定すると、開始時刻は次のようになります。 -.nf -\f3 -.fl - Calendar c = new GregorianCalendar(); -.fl - c.add(Calendar.YEAR, \-1); -.fl - c.add(Calendar.MONTH, 1); -.fl - c.add(Calendar.DATE, \-1); -.fl - return c.getTime() -.fl -\fP -.fi -.LP -2 番目の形式では、ユーザーは、年/月/日と時間:分:秒の 2 つの部分で厳密な開始時刻を設定します (地元の時間帯を使用)。ユーザーは、1 つの部分だけを指定できます。これは、もう 1 つの部分は現在の日付 (または時刻) と同じになるということです。ユーザーは、形式の定義に示されているように、桁数を厳密に指定する必要があります (短い場合は 0 で埋める)。日付と時刻の両方が指定された状態で、2 つの部分の間に空白文字が 1 つ (1 つだけ) あります。時間は常に 24 時間形式で指定してください。 -.LP -オプションを指定しないと、開始日付は現在の時刻になります。オプションは、最大で 1 回指定できます。 -.LP -\f2valDays\fP には、証明書の有効日数を指定します ( \f2\-startdate\fP で指定された日付、または \f2\-startdate\fP が指定されていない場合は現在の日付から始まる)。 -.LP -このコマンドは、以前のリリースでは \f2\-genkey\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-genkeypair\fP を使用することをお勧めします。 -.TP 3 -\-genseckey {\-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 -秘密鍵を生成し、それを新しい \f2KeyStore.SecretKeyEntry\fP (\f2alias\fP で特定される) 内に格納します。 -.LP -\f2keyalg\fP は秘密鍵の生成に使用するアルゴリズムを、\f2keysize\fP は生成する鍵のサイズを、それぞれ指定します。\f2keypass\fP は秘密鍵の保護に使用するパスワードです。パスワードを指定しなかった場合は、パスワードの入力を求められます。このとき、Return キーを押すと、キーストアのパスワードと同じパスワードが鍵のパスワードに設定されます。\f2keypass\fP は、6 文字以上にする必要があります。 -.TP 3 -\-importcert {\-alias alias} {\-file cert_file} [\-keypass keypass] {\-noprompt} {\-trustcacerts} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -ファイル \f2cert_file\fP から証明書または証明書チェーン (証明書チェーンの場合は、PKCS#7 形式の応答または一連の X.509 証明書で提供されるもの) を読み込み、\f2alias\fP によって特定されるキーストアエントリに格納します。ファイルが指定されていない場合は、標準入力から証明書または証明書チェーンを読み込みます。 -.LP -\f3keytool\fP では、X.509 v1、v2、v3 の証明書、および、PKCS#7 形式の証明書から構成されている PKCS#7 形式の証明書チェーンをインポートできます。インポートするデータは、バイナリ符号化方式、または出力可能符号化方式 (Base64 符号化とも呼ばれる) のどちらかで提供する必要があります。 出力可能符号化方式は、インターネット RFC 1421 証明書符号化規格で定義されています。この符号化方式の場合、証明書は「\-\-\-\-\-BEGIN」で始まる文字列で開始され、「\-\-\-\-\-END」で始まる文字列で終了しなければなりません。 -.LP -証明書のインポートには、次の 2 つの目的があります。 -.RS 3 -.TP 3 -1. -信頼できる証明書のリストに証明書を追加する -.TP 3 -2. -CA に証明書署名要求 (\-certreq コマンドを参照) を送信した結果として、CA から受け取った証明応答をインポートする +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-genkeypair .RE -.LP -どちらの種類のインポートを行うかは、 \f2\-alias\fP オプションの値によって指定します。 -.RS 3 -.TP 3 -1. -\f3別名がキーエントリをポイントしない場合\fP、\f3keytool\fP はユーザーが信頼できる証明書エントリを追加しようとしているものと見なします。この場合、別名がキーストア内にすでに存在していてはいけません。別名がすでに存在している場合、その別名の信頼できる証明書がすでに存在することになるので、\f3keytool\fP はエラーを出力し、証明書のインポートを行いません。 -.TP 3 -2. -.LP -\f3別名がキーエントリをポイントしない場合\fP、\f3keytool\fP はユーザーが信頼できる証明書エントリを追加しようとしているものと見なします。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-genseckey .RE -\f3新しい信頼できる証明書のインポート\fP -.LP -\f3keytool\fP は、キーストアに証明書を追加する前に、キーストア内にすでに存在する信頼できる証明書を使って、インポートする証明書から (ルート CA の) 自己署名証明書に至るまでの信頼のチェーンの構築を試みます。 -.LP -\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 は証明書を出力せず、ユーザーに検証を求めるプロンプトを表示します。ユーザーが証明応答の信頼性を判断するのは、不可能ではなくても非常に困難だからです。 -.TP 2 -o -\f3証明応答が PKCS#7 形式の証明書チェーンまたは一連の X.509 証明書である場合\fP、チェーンは、ユーザーの証明書が最初に、0 以上の CA 証明書がその次にくるように並べられます。チェーンが自己署名のルート CA 証明書で終わり、 \f2\-trustcacerts\fP オプションが指定されている場合、\f3keytool\fP は、その証明書と、キーストア内または「cacerts」キーストアファイル内の信頼できるすべての証明書を照合しようとします。チェーンが自己署名のルート CA 証明書で終わっておらず、 \f2\-trustcacerts\fP オプションが指定されている場合、\f3keytool\fP は、キーストア内または「cacerts」キーストアファイル内の信頼できる証明書から自己署名のルート CA 証明書を見つけてそれをチェーンの末尾に追加しようとします。その証明書が見つからず、 \f2\-noprompt\fP オプションが指定されていない場合は、チェーン内の最後の証明書の情報が出力され、ユーザーは確認を求められます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-importcert .RE -.LP -証明書応答内の公開鍵が \f2alias\fP の下にすでに格納されているユーザーの公開鍵に一致した場合、古い証明書チェーンが応答内の新しい証明書チェーンで置き換えられます。以前の証明書チェーンを新しい証明書チェーンで置き換えることができるのは、有効な \f2keypass\fP、つまり該当するエントリの非公開鍵を保護するためのパスワードを指定した場合だけです。パスワードを指定しておらず、非公開鍵のパスワードがキーストアのパスワードと異なる場合は、非公開鍵のパスワードの入力を求められます。 -.LP -このコマンドは、以前のリリースでは \f2\-import\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-importcert\fP を使用することをお勧めします。 -.TP 3 -\-importkeystore \-srckeystore srckeystore \-destkeystore destkeystore {\-srcstoretype srcstoretype} {\-deststoretype deststoretype} [\-srcstorepass srcstorepass] [\-deststorepass deststorepass] {\-srcprotected} {\-destprotected} {\-srcalias srcalias {\-destalias destalias} [\-srckeypass srckeypass] [\-destkeypass destkeypass] } {\-noprompt} {\-srcProviderName src_provider_name} {\-destProviderName dest_provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -ソースキーストアからターゲットキーストアへ、単一のエントリまたはすべてのエントリをインポートします。 -.LP -\f2srcalias\fP オプションが指定された場合、このコマンドは、その別名で特定される単一のエントリをターゲットキーストアにインポートします。\f2destalias\fP 経由でターゲット別名が指定されなかった場合、\f2srcalias\fP がターゲット別名として使用されます。ソースのエントリがパスワードで保護されていた場合、\f2srckeypass\fP を使ってそのエントリが回復されます。\f2srckeypass\fP が指定されなかった場合、\f3keytool\fP は \f2srcstorepass\fP を使ってそのエントリを回復しようとします。\f2srcstorepass\fP が指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ターゲットエントリは \f2destkeypass\fP によって保護されます。\f2destkeypass\fP が指定されなかった場合、ターゲットエントリはソースエントリのパスワードによって保護されます。 -.LP -\f2srcalias\fP オプションが指定されなかった場合、ソースキーストア内のすべてのエントリがターゲットキーストア内にインポートされます。各ターゲットエントリは対応するソースエントリの別名の下に格納されます。ソースのエントリがパスワードで保護されていた場合、\f2srcstorepass\fP を使ってそのエントリが回復されます。\f2srcstorepass\fP が指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ソースキーストア内のあるエントリタイプがターゲットキーストアでサポートされていない場合や、あるエントリをターゲットキーストアに格納する際にエラーが発生した場合、ユーザーはそのエントリをスキップして処理を続行するか、あるいは処理を中断するかの選択を求められます。ターゲットエントリはソースエントリのパスワードによって保護されます。 -.LP -ターゲット別名がターゲットキーストア内にすでに存在していた場合、ユーザーは、そのエントリを上書きするか、あるいは異なる別名の下で新しいエントリを作成するかの選択を求められます。 -.LP -\f2\-noprompt\fP を指定した場合、ユーザーは新しいターゲット別名の入力を求められません。既存のエントリはそのターゲット別名で自動的に上書きされます。最後に、インポートできないエントリは自動的にスキップされ、警告が出力されます。 -.TP 3 -\-printcertreq {\-file file} -.LP -PKCS #10 形式の証明書要求の内容を出力します。この要求は、keytool \-certreq コマンドで生成できます。このコマンドは、file から要求を読み込みます。file が省略されている場合は、標準入力から読み込みます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-importpassword .RE - -.LP -.SS +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +別のキーストアの内容のインポート +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-importkeystore +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +証明書リクエストの生成 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-certreq +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} データのエクスポート -.LP -.RS 3 -.TP 3 -\-certreq {\-alias alias} {\-dname dname} {\-sigalg sigalg} {\-file certreq_file} [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -PKCS#10 形式を使って証明書署名要求 (CSR) を生成します。 -.LP -CSR は、証明書発行局 (CA) に送信することを目的としたものです。CA は、証明書要求者を (通常はオフラインで) 認証し、証明書または証明書チェーンを送り返します。 この証明書または証明書チェーンは、キーストア内の既存の証明書チェーン (最初は 1 つの自己署名証明書から構成される) に置き換えて使います。 -.LP -\f2alias\fP に関連付けられた非公開鍵は、PKCS#10 証明書要求を作成するのに使われます。非公開鍵はキーストア内ではパスワードによって保護されているので、非公開鍵にアクセスするには、適切なパスワードを提供する必要があります。コマンド行で \f2keypass\fP を指定しておらず、非公開鍵のパスワードがキーストアのパスワードと異なる場合は、非公開鍵のパスワードの入力を求められます。dname が指定されている場合は、それが CSR で主体として使用されます。それ以外の場合は、別名に関連付けられた X.500 識別名が使用されます。 -.LP -\f2sigalg\fP には、CSR に署名を付けるときに使うアルゴリズムを指定します。 -.LP -CSR は、ファイル \f2certreq_file\fP に格納されます。ファイルが指定されていない場合は、標準出力に CSR が出力されます。 -.LP -CA からの応答をインポートするには、\f2importcert\fP コマンドを使います。 -.TP 3 -\-exportcert {\-alias alias} {\-file cert_file} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-rfc} {\-v} {\-protected} {\-Jjavaoption} -.LP -\f2alias\fP に関連付けられた証明書を (キーストアから) 読み込み、ファイル \f2cert_file\fP に格納します。 -.LP -ファイルが指定されていない場合は、標準出力に証明書が出力されます。 -.LP -デフォルトでは、バイナリ符号化方式の証明書が出力されます。 ただし、\-rfc オプションを指定した場合は、出力可能符号化方式の証明書が出力されます。 出力可能符号化方式は、インターネット RFC 1421 証明書符号化規格で定義されています。 -.LP -\f2alias\fP が、信頼できる証明書を参照している場合は、該当する証明書が出力されます。それ以外の場合、\f2alias\fP は、関連付けられた証明書チェーンを持つ鍵エントリを参照します。この場合は、チェーン内の最初の証明書が返されます。この証明書は、\f2alias\fP によって表されるエンティティーの公開鍵を認証する証明書です。 -.LP -このコマンドは、以前のリリースでは \f2\-export\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-exportcert\fP を使用することをお勧めします。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-exportcert .RE - -.LP -.SS +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.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 で特定されるキーストアエントリの内容を (標準出力に) 出力します。別名が指定されていない場合は、キーストア全体の内容が表示されます。 -.LP -このコマンドは、デフォルトでは証明書の SHA1 フィンガープリントを表示します。 \f2\-v\fP オプションが指定されている場合は、所有者、発行者、シリアル番号、拡張機能などの付加的な情報とともに、人間が読むことのできる形式で証明書が表示されます。 \f2\-rfc\fP オプションが指定されている場合は、出力可能符号化方式で証明書の内容が表示されます。 出力可能符号化方式は、インターネット RFC 1421 証明書符号化規格で定義されています。 -.LP -\f2\-v\fP オプションと \f2\-rfc\fP オプションを同時に指定することはできません。 -.TP 3 -\-printcert {\-file cert_file | \-sslserver host[:port]} {\-jarfile JAR_file {\-rfc} {\-v} {\-Jjavaoption} -.LP -ファイル \f2cert_file\fP、\f2host:port\fP にある SSL サーバー、または署名付き JAR ファイル \f2JAR_file\fP ( \f2\-jarfile\fP オプションを指定) から証明書を読み込み、人間が読むことのできる形式で証明書の内容を表示します。ポートが指定されていない場合は、標準の HTTPS ポート 443 が想定されます。 \f2\-sslserver\fP および \f2\-file\fP オプションを同時に指定することはできません。同時に指定すると、エラーが報告されます。オプションが指定されていない場合は、標準入力から証明書を読み込みます。 -.LP -\f2\-rfc\fP が指定されている場合、keytool は、インターネット RFC 1421 標準で定義されているように、PEM モードで証明書を出力します。 -.LP -ファイルまたは標準入力から証明書を読み込む場合、その証明書は、インターネット RFC 1421 標準で定義されているように、バイナリ符号化方式または出力可能符号化方式で表示できます。 -.LP -SSL サーバーがファイアウォールの背後にある場合は、 \f2\-J\-Dhttps.proxyHost=proxyhost\fP と \f2\-J\-Dhttps.proxyPort=proxyport\fP をコマンド行で指定して、プロキシトンネリングを使用できます。詳細は、 -.na -\f2「JSSE リファレンスガイド」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.htmlを参照してください。 -.LP -\f3注\fP: このオプションはキーストアとは関係なく使用できます。 -.TP 3 -\-printcrl \-file crl_ {\-v} -.LP -ファイル \f2crl_file\fP から証明書の取り消しリスト (CRL) を読み込みます。 -.LP -証明書の取り消しリスト (CRL) は、デジタル証明書を発行した証明書発行局 (CA) によって取り消されたデジタル証明書のリストです。CA は、\f2crl_file\fP を生成します。 -.LP -\f3注\fP: このオプションはキーストアとは関係なく使用できます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-list .RE - -.LP -.SS +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-printcert +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-printcertreq +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-printcrl +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.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 には、新しいパスワードを指定します。new_storepass は、6 文字以上でなければなりません。 -.TP 3 -\-keypasswd {\-alias alias} [\-keypass old_keypass] [\-new new_keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-Jjavaoption} -.LP -\f2alias\fP によって特定される非公開/秘密鍵を保護するためのパスワードを、\f2old_keypass\fP から \f2new_keypass\fP に変更します。new_keypass は、6 文字以上でなければなりません。 -.LP -コマンド行で \f2\-keypass\fP オプションを指定しておらず、鍵のパスワードがキーストアのパスワードと異なる場合は、鍵のパスワードの入力を求められます。 -.LP -コマンド行で \f2\-new\fP オプションを指定しなかった場合は、新しいパスワードの入力を求められます。 -.TP 3 -\-delete [\-alias alias] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -\f2alias\fP によって特定されるエントリをキーストアから削除します。コマンド行で別名を指定しなかった場合は、別名の入力を求められます。 -.TP 3 -\-changealias {\-alias alias} [\-destalias destalias] [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -指定された \f2alias\fP から新しい別名 \f2destalias\fP へ、既存のキーストアエントリを移動します。ターゲット別名が指定されなかった場合、このコマンドはその入力を求めます。元のエントリがエントリパスワードで保護されていた場合、「\-keypass」オプション経由でそのパスワードを指定できます。鍵パスワードが指定されなかった場合、\f2storepass\fP (指定された場合) がまず試みられます。その試みが失敗すると、ユーザーはパスワードの入力を求められます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-storepasswd .RE - -.LP -.SS +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-keypasswd +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-delete +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-changealias +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} ヘルプの表示 -.LP -.RS 3 -.TP 3 -\-help -.LP -基本的なコマンドとそのオプションの一覧を表示します。 -.LP -特定のコマンドの詳細については、次のように入力してください。 \f2command_name\fP はコマンドの名前です。 -.nf -\f3 -.fl - keytool \-\fP\f4command_name\fP\f3 \-help -.fl -\fP -.fi +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-help .RE - -.LP -.SH "例" -.LP -.LP -ここでは、自分の鍵のペアおよび信頼できるエンティティーからの証明書を管理するためのキーストアを作成する場合を例として示します。 -.LP -.SS -鍵のペアの生成 -.LP -.LP -まず、キーストアを作成して鍵のペアを生成する必要があります。次に示すのは、実行するコマンドの例です。 -.LP -.nf -\f3 -.fl - keytool \-genkeypair \-dname "cn=Mark Jones, ou=Java, o=Oracle, c=US" -.fl - \-alias business \-keypass \fP\f4<非公開鍵の新しいパスワード>\fP\f3 \-keystore /working/mykeystore -.fl - \-storepass \fP\f4<キーストアの新しいパスワード>\fP\f3 \-validity 180 -.fl -\fP -.fi - -.LP -.LP -注: このコマンドは 1 行に入力しなければなりません。例で複数行に入力しているのは読みやすくするためです。 -.LP -.LP -この例では、working ディレクトリに mykeystore という名前のキーストアを作成し (キーストアはまだ存在していないと仮定する)、作成したキーストアに、\f2<キーストアの新しいパスワード>\fP で指定したパスワード を割り当てます。生成する公開鍵と非公開鍵のペアに対応するエンティティーの「識別名」は、通称が「Mark Jones」、組織単位が「Java」、組織が「Oracle」、2 文字の国番号が「US」です。公開鍵と非公開鍵のサイズはどちらも 1024 ビットで、鍵の作成にはデフォルトの DSA 鍵生成アルゴリズムを使用します。 -.LP -.LP -このコマンドは、公開鍵と識別名情報を含む自己署名証明書 (デフォルトの SHA1withDSA 署名アルゴリズムを使用) を作成します。証明書の有効期間は 180 日です。 証明書は、別名「business」で特定されるキーストアエントリ内の非公開鍵に関連付けられます。非公開鍵には、\f2<非公開鍵の新しいパスワード>\fP で指定したパスワードが割り当てられます。 -.LP -.LP -オプションのデフォルト値を使う場合は、上に示したコマンドを大幅に短くすることができます。実際には、オプションを 1 つも指定せずにコマンドを実行することも可能です。 デフォルト値を持つオプションでは、オプションを指定しなければデフォルト値が使われ、必要な値については入力を求められます。たとえば、単に次のように入力することもできます。 -.LP -.nf -\f3 -.fl - keytool \-genkeypair -.fl -\fP -.fi - -.LP -.LP -この場合は、mykey という別名でキーストアエントリが作成され、新しく生成された鍵のペア、および 90 日間有効な証明書がこのエントリに格納されます。このエントリは、ホームディレクトリ内の .keystore という名前のキーストアに置かれます。このキーストアがまだ存在していない場合は、作成されます。識別名情報、キーストアのパスワード、および非公開鍵のパスワードについては、入力を求められます。 -.LP -.LP -以下では、オプションを指定しないで \f2\-genkeypair\fP コマンドを実行したものとして例を示します。情報の入力を求められた場合は、最初に示した \f2\-genkeypair\fP コマンドの値を入力したものとします (たとえば、識別名には cn=Mark Jones, ou=Java, o=Oracle, c=US と指定)。 -.LP -.SS -証明書発行局に対する署名付き証明書の要求 -.LP -.LP -現時点で手元にあるのは、1 通の自己署名証明書だけです。証明書に証明書発行局 (CA) の署名が付いていれば、ほかのユーザーから証明書が信頼できる可能性も高くなります。CA の署名を取得するには、まず、証明書署名要求 (CSR) を生成します。 たとえば、次のようにします。 -.LP -.nf -\f3 -.fl - keytool \-certreq \-file MarkJ.csr -.fl -\fP -.fi - -.LP -.LP -CSR (デフォルト別名「mykey」によって特定されるエンティティーの CSR) が作成され、MarkJ.csr という名前のファイルに置かれます。このファイルは、VeriSign などの CA に提出します。 CA は要求者を (通常はオフラインで) 認証し、要求者の公開鍵を認証した署名付きの証明書を送り返します。場合によっては、CA が証明書のチェーンを返すこともあります。証明書のチェーンでは、各証明書がチェーン内のその前の署名者の公開鍵を認証します。 -.LP -.SS -CA からの証明書のインポート -.LP -.LP -作成した自己署名証明書は、証明書チェーンで置き換える必要があります。証明書チェーンでは、各証明書が、「ルート」CA を起点とするチェーン内の次の証明書の署名者の公開鍵を認証します。 -.LP -.LP -CA からの証明応答をインポートするには、キーストアか、 \f2cacerts\fP キーストアファイル (importcert コマンドで説明) 内に 1 つ以上の「信頼できる証明書」がある必要があります。 -.LP -.RS 3 -.TP 2 -o -証明応答が証明書チェーンの場合は、チェーンのトップの証明書 (その CA の公開鍵を認証する「ルート」CA の証明書) だけを必要とする -.TP 2 -o -証明応答が単一の証明書の場合は、証明書に署名した CA の発行用の証明書が必要で、その証明書が自己署名されない場合は、さらにその証明書の署名者用の証明書を必要とする。 このようにして自己署名される「ルート」CA の証明書までそれぞれ証明書を必要とする .RE - -.LP -.LP -cacerts キーストアファイルは、いくつかの VeriSign ルート CA 証明書を含んだ状態で出荷されているので、VeriSign の証明書を、信頼できる証明書としてキーストア内にインポートする必要はないかもしれません。ただし、ほかの CA に対して署名付き証明書を要求していて、この CA の公開鍵を認証する証明書が、cacerts にまだ追加されていない場合は、該当する CA からの証明書を、「信頼できる証明書」としてインポートする必要があります。 -.LP -.LP -通常、CA からの証明書は、自己署名証明書、またはほかの CA によって署名された証明書です (後者の場合は、該当するほかの CA の公開鍵を認証する証明書も必要)。たとえば、ABC という企業が CA だとします。このとき、この CA の公開鍵を認証する自己署名証明書と考えられる ABCCA.cer という名前のファイルを、ABC から入手したとします。 -.LP -.LP -「信頼できる証明書」として証明書をインポートするときは、証明書が有効であることを慎重に確認する必要があります。まず、証明書の内容を表示し (\f3keytool\fP \f2\-printcert\fP コマンドを使用するか、または \-noprompt オプションを指定しないで \f3keytool\fP \f2\-importcert\fP コマンドを使用し、 表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致するかどうかを確認します。証明書を送信した人物に連絡し、この人物が提示した (または安全な公開鍵のリポジトリによって提示される) フィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中でほかの何者か (攻撃者など) による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのものを信頼することになります。 -.LP -.LP -ABCCA.cer を有効な証明書として信頼する場合は、証明書をキーストアに追加できます。 たとえば、次のようにします。 -.LP -.nf -\f3 -.fl - keytool \-importcert \-alias abc \-file ABCCA.cer -.fl -\fP -.fi - -.LP -.LP -ABCCA.cer ファイルのデータを含む「信頼できる証明書」のエントリがキーストア内に作成され、該当するエントリに abc という別名が割り当てられます。 -.LP -.SS -CA からの証明応答のインポート -.LP -.LP -証明書署名要求の提出先の CA の公開鍵を認証する証明書をインポートしたあとは (または同種の証明書がすでに cacerts ファイル内に存在している場合は)、証明応答をインポートし、自己署名証明書を証明書チェーンで置き換えることができます。この証明書チェーンは、CA の応答がチェーンの場合、証明書署名要求に対する応答として CA から送り返された証明書チェーンです。 また、CA の応答が単一の証明書の場合は、この証明応答と、インポート先のキーストア内または cacerts キーストアファイル内にすでに存在する信頼できる証明書とを使って構築した証明書チェーンです。 -.LP -.LP -たとえば、証明書署名要求を VeriSign に送信したとします。送り返された証明書の名前が VSMarkJ.cer だとすると、次のようにして応答をインポートできます。 -.LP -.nf -\f3 -.fl - keytool \-importcert \-trustcacerts \-file VSMarkJ.cer -.fl -\fP -.fi - -.LP -.SS -公開鍵を認証する証明書のエクスポート -.LP -.LP -たとえば、jarsigner(1) ツールを使って Java ARchive (JAR) ファイルに署名を付けたとします。この JAR ファイルはクライアントによって使われますが、クライアント側では署名を認証したいと考えています。 -.LP -.LP -クライアントが署名を認証する方法の 1 つに、まず自分の公開鍵の証明書を「信頼できる」エントリとしてクライアントのキーストアにインポートする方法があります。そのためには、証明書をエクスポートして、クライアントに提供します。たとえば、次のようにして、証明書を \f2MJ.cer\fP という名前のファイルにコピーします。このエントリには「mykey」という別名が使われているとします。 -.LP -.nf -\f3 -.fl - keytool \-exportcert \-alias mykey \-file MJ.cer -.fl -\fP -.fi - -.LP -.LP -証明書と署名付き JAR ファイルを入手したクライアントは、\f3jarsigner\fP ツールを使って署名を認証できます。 -.LP -.SS -キーストアのインポート -.LP -.LP -コマンド「importkeystore」を使えば、あるキーストアの全体を別のキーストア内にインポートできます。これは、鍵や証明書といったソースキーストア内のすべてのエントリが、単一のコマンドを使ってターゲットキーストア内にインポートされることを意味します。このコマンドを使えば、異なるタイプのキーストア内に含まれるエントリをインポートすることができます。インポート時には、ターゲットキーストア内の新しいエントリはすべて、元と同じ別名および (秘密鍵や非公開鍵の場合は) 保護用パスワードを持ちます。ソースキーストア内の非公開鍵や秘密鍵の回復時に問題が発生した場合、\f3keytool\fP はユーザーにパスワードの入力を求めます。このコマンドは、別名の重複を検出すると、ユーザーに新しい別名の入力を求めます。ユーザーは、新しい別名を指定することも、単純に既存の別名の上書きを \f3keytool\fP に許可することもできます。 -.LP -.LP -たとえば、通常の JKS タイプのキーストア key.jks 内のエントリを PKCS #11 タイプのハードウェアベースのキーストア内にインポートするには、次のコマンドを使用できます。 -.LP -.nf -\f3 -.fl - keytool \-importkeystore -.fl - \-srckeystore key.jks \-destkeystore NONE -.fl - \-srcstoretype JKS \-deststoretype PKCS11 -.fl - \-srcstorepass \fP\f4<ソースキーストアのパスワード>\fP\f3 \-deststorepass \fP\f4<ターゲットキーストアのパスワード>\fP\f3 -.fl -\fP -.fi - -.LP -.LP -また、importkeystore コマンドを使えば、あるソースキーストア内の単一のエントリをターゲットキーストアにインポートすることもできます。この場合、上記の例で示したオプションに加え、インポート対象となる別名を指定する必要があります。srcalias オプションを指定する場合には、ターゲット別名もコマンド行から指定できるほか、秘密/非公開鍵の保護用パスワードやターゲット保護用パスワードも指定できます。その方法を示すコマンドを次に示します。 -.LP -.nf -\f3 -.fl - keytool \-importkeystore -.fl - \-srckeystore key.jks \-destkeystore NONE -.fl - \-srcstoretype JKS \-deststoretype PKCS11 -.fl - \-srcstorepass \fP\f4<ソースキーストアのパスワード>\fP\f3 \-deststorepass \fP\f4<ターゲットキーストアのパスワード>\fP\f3 -.fl - \-srcalias myprivatekey \-destalias myoldprivatekey -.fl - \-srckeypass \fP\f4<ソースエントリのパスワード>\fP\f3 \-destkeypass \fP\f4<ターゲットエントリのパスワード>\fP\f3 -.fl - \-noprompt -.fl -\fP -.fi - -.LP -.SS -一般的な SSL サーバー用の証明書の生成 -.LP -.LP -次に、3 つのエンティティー、つまりルート CA (root)、中間 CA (ca)、および SSL サーバー (server) 用の鍵ペアと証明書を生成する keytool コマンドを示します。すべての証明書を同じキーストアに格納するようにしてください。これらの例では、鍵のアルゴリズムとして RSA を指定することをお勧めします。 -.LP -.nf -\f3 -.fl -keytool \-genkeypair \-keystore root.jks \-alias root \-ext bc:c -.fl -keytool \-genkeypair \-keystore ca.jks \-alias ca \-ext bc:c -.fl -keytool \-genkeypair \-keystore server.jks \-alias server -.fl - -.fl -keytool \-keystore root.jks \-alias root \-exportcert \-rfc > root.pem -.fl - -.fl -keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore ca.jks \-certreq \-alias ca | keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore root.jks \-gencert \-alias root \-ext BC=0 \-rfc > ca.pem -.fl -keytool \-keystore ca.jks \-importcert \-alias ca \-file ca.pem -.fl - -.fl -keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore server.jks \-certreq \-alias server | keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore ca.jks \-gencert \-alias ca \-ext ku:c=dig,kE \-rfc > server.pem -.fl -cat root.pem ca.pem server.pem | keytool \-keystore server.jks \-importcert \-alias server -.fl -\fP -.fi - -.LP -.SH "用語と警告" -.LP -.SS -KeyStore -.LP -.LP -キーストアは、暗号化の鍵と証明書を格納するための機能です。 -.LP -.RS 3 -.TP 2 -o -\f3キーストアのエントリ\fP -.LP -キーストアには異なるタイプのエントリを含めることができます。\f3keytool\fP でもっとも適用範囲の広いエントリタイプは、次の 2 つです。 -.RS 3 -.TP 3 -1. -\f3鍵のエントリ\fP \- 各エントリは、非常に重要な暗号化の鍵の情報を保持します。この情報は、許可していないアクセスを防ぐために、保護された形で格納されます。 一般に、この種のエントリとして格納される鍵は、秘密鍵か、対応する公開鍵の証明書チェーンを伴う非公開鍵です。\f3keytool\fP がこの両方のタイプのエントリを処理できるのに対し、\f3jarsigner\fP ツールは後者のタイプのエントリ、つまり非公開鍵とそれに関連付けられた証明書チェーンのみを処理します。 -.TP 3 -2. -\f3信頼できる証明書のエントリ\fP \- 各エントリは、第三者からの公開鍵証明書を 1 つ含んでいます。この証明書は、「信頼できる証明書」と呼ばれます。 それは、証明書内の公開鍵が、証明書の「Subject」(所有者) によって特定されるアイデンティティーに由来するものであることを、キーストアの所有者が信頼するからです。証明書の発行者は、証明書に署名を付けることによって、その内容を保証します。 .RE -.TP 2 -o -\f3キーストアの別名\fP -.LP -キーストアのすべてのエントリ (鍵および信頼できる証明書) は、一意の「別名」を介してアクセスされます。 -.LP -別名を指定するのは、\-genseckey コマンドを使って秘密鍵を生成したり、\-genkeypair コマンドを使って鍵ペア (公開鍵と非公開鍵) を生成したり、\-importcert コマンドを使って証明書または証明書チェーンを信頼できる証明書のリストに追加したりするなど、特定のエンティティーをキーストアに追加する場合です。これ以後、\f3keytool\fP コマンドでエンティティーを参照する場合は、このときに指定した別名を使用する必要があります。 -.LP -たとえば、\f2duke\fP という別名を使って新しい公開鍵と非公開鍵のペアを生成し、公開鍵を自己署名証明書 (「証明書チェーン」を参照) でラップするとします。 この場合は、次のコマンドを実行します。 -.nf -\f3 -.fl - keytool \-genkeypair \-alias duke \-keypass dukekeypasswd -.fl -\fP -.fi -.LP -ここでは、初期パスワードとして dukekeypasswd を指定しています。 以後、別名 duke 連付けられた非公開鍵にアクセスするコマンドを実行するときは、このパスワードが必要になります。 duke の非公開鍵のパスワードをあとから変更するには、次のコマンドを実行します。 -.nf -\f3 -.fl - keytool \-keypasswd \-alias duke \-keypass dukekeypasswd \-new newpass -.fl -\fP -.fi -.LP -パスワードが、dukekeypasswd から newpass に変更されます。 -.LP -注: テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。必要なパスワードのオプションをコマンド行で指定しなかった場合は、パスワードの入力を求められます。 -.TP 2 -o -\f3キーストアの実装\fP -.LP -\f2KeyStore\fP クラス ( \f2java.security\fP パッケージで提供される) には、キーストア内の情報に対するアクセスと変更を行うための明確に定義されたインタフェースが用意されています。キーストアの固定実装としては、それぞれが特定の「タイプ」のキーストアを対象とする複数の異なる実装が存在可能です。 -.LP -現在、\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 によってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。したがって、キーストアの実装を提供するには、 -.na -\f2「Java(TM) 暗号化アーキテクチャー用プロバイダの実装方法」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.htmlで説明しているように、クライアントが「プロバイダ」を実装し、KeystoreSpi サブクラスの実装を提供する必要があります。 -.LP -アプリケーションでは、KeyStore クラスが提供する getInstance ファクトリメソッドを使うことで、さまざまなプロバイダから異なる「タイプ」のキーストアの実装を選択できます。 キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の非公開/秘密鍵とキーストア自体の整合性を保護するために使われるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。 -.LP -\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 の最上位ディレクトリ) です。 -.LP -各ツールは、 \f2keystore.type\fP の値を取得し、この値で指定されたタイプのキーストアを実装しているプロバイダが見つかるまで、現在インストールされているすべてのプロバイダを調べます。目的のプロバイダが見つかると、そのプロバイダからのキーストアの実装を使います。 -.LP -\f2KeyStore\fP クラスでは \f2getDefaultType\fP という名前の static メソッドが定義されており、アプリケーションとアプレットはこのメソッドを使うことで \f2keystore.type\fP プロパティーの値を取得できます。次のコードは、デフォルトのキーストアタイプ ( \f2keystore.type\fP プロパティーで指定されたタイプ) のインスタンスを生成します。 -.nf -\f3 -.fl - KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); -.fl -\fP -.fi -.LP -デフォルトのキーストアタイプは JKS (Oracle が提供する独自のタイプのキーストアの実装) です。これは、セキュリティープロパティーファイル内の次の行によって指定されています。 -.nf -\f3 -.fl - keystore.type=jks -.fl -\fP -.fi -.LP -各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。 -.LP -たとえば、pkcs12 と呼ばれるタイプのキーストアの実装を提供しているプロバイダパッケージを使用するには、上の行を次のように変更します。 -.nf -\f3 -.fl - keystore.type=pkcs12 -.fl -\fP -.fi -.LP -注: キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、JKS と jks は同じものとして扱われます。 +.SH "説明" +.PP +\fIkeytool\fRコマンドは、鍵と証明書を管理するためのユーティリティです。これにより、ユーザーは自分の公開鍵と秘密鍵のペアおよび関連する証明書を管理し、デジタル署名を使用した自己認証(他のユーザーまたはサービスに対して自分自身を認証すること)や、データの整合性と証明書に関するサービスを利用することができます。\fIkeytool\fRコマンドでは、通信しているピアの公開鍵をキャッシュすることもできます(証明書のフォームで)。 +.PP +証明書とは、あるエンティティ(人物、会社など)からのデジタル署名付きの文書のことです。証明書には、他のあるエンティティの公開鍵(およびその他の情報)が特別な値を持っていることが書かれています。(証明書を参照してください。)データにデジタル署名が付いている場合は、デジタル署名を検証することで、データの整合性およびデータが本物であることをチェックできます。データの整合性とは、データが変更されたり、改変されたりしていないことを意味します。また、データが本物であるとは、そのデータが、データを作成して署名したと称する人物から渡されたデータであることを意味します。 +.PP +また、\fIkeytool\fRコマンドを使用すれば、対称暗号化/復号化(DES)で使用される秘密鍵およびパスフレーズを管理することもできます。 +.PP +\fIkeytool\fRコマンドは、鍵と証明書をキーストアに格納します。キーストアの別名を参照してください。 +.SH "コマンドとオプションに関する注意" +.PP +様々なコマンドとその説明については、コマンドを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +どのコマンド名およびオプション名にも先頭にマイナス記号(\-)が付きます。 .RE - -.LP -.SS -証明書 -.LP -\f3証明書\fP (\f3公開鍵証明書\fPとも呼ぶ) とは、あるエンティティー (「発行者」) からのデジタル署名付きの文書のことです。 証明書には、ほかのあるエンティティー (「署名者」) の公開鍵 (およびその他の情報) が特別な値を持っていることが書かれています。 -.RS 3 -.TP 2 -o -\f3証明書の用語\fP -.RS 3 -.TP 3 -公開鍵 -.LP -公開鍵は、特定のエンティティーに関連付けられた数です。公開鍵は、該当するエンティティーとの間に信頼できる関係を持つ必要があるすべての人に対して公開することを意図したものです。公開鍵は、署名を検証するのに使われます。 -.TP 3 -デジタル署名 -.LP -データが「デジタル署名」されると、そのデータは、エンティティーの「アイデンティティー」と、そのエンティティーがデータの内容について知っていることを証明する署名とともに格納されます。エンティティーの非公開鍵を使ってデータに署名を付けると、データの偽造は不可能になります。 -.TP 3 -アイデンティティー -.LP -エンティティーを特定するための既知の方法です。システムによっては、公開鍵をアイデンティティーにするものがあります。公開鍵のほかにも、Unix UID や電子メールアドレス、X.509 識別名など、さまざまなものをアイデンティティーとすることができます。 -.TP 3 -署名 -.LP -署名は、なんらかのデータを基にエンティティー (署名者。 証明書に関しては発行者とも呼ばれる) の非公開鍵を使って計算されます。 -.TP 3 -非公開鍵 -.LP -非公開鍵は特定のエンティティーだけが知っている数のことで、この数のことを、そのエンティティーの非公開鍵といいます。非公開鍵は、ほかに知られないように秘密にしておくことが前提になっています。非公開鍵と公開鍵は、すべての公開鍵暗号化システムで対になって存在しています。DSA などの典型的な公開鍵暗号化システムの場合、1 つの非公開鍵は正確に 1 つの公開鍵に対応します。非公開鍵は、署名を計算するのに使われます。 -.TP 3 -エンティティー -.LP -エンテンティーは、人、組織、プログラム、コンピュータ、企業、銀行など、一定の度合いで信頼の対象となるさまざまなものを指します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +各コマンドのオプションは任意の順序で指定できます。 .RE -.LP -公開鍵暗号化では、その性質上、ユーザーの公開鍵にアクセスする必要があります。大規模なネットワーク環境では、互いに通信しているエンティティー間で以前の関係が引き続き確立されていると仮定したり、使われているすべての公開鍵を収めた信頼できるリポジトリが存在すると仮定したりすることは不可能です。このような公開鍵の配布に関する問題を解決するために証明書が考案されました。現在では、「証明書発行局 (CA)」が信頼できる第三者として機能します。CA は、ほかのエンティティーの証明書に署名する (発行する) 行為を、信頼して任されているエンティティー (企業など) です。CA は法律上の契約に拘束されるので、有効かつ信頼できる証明書だけを作成するものとして扱われます。 -.na -\f2VeriSign\fP @ -.fi -http://www.verisign.com/、 -.na -\f2Thawte\fP @ -.fi -http://www.thawte.com/、 -.na -\f2Entrust\fP @ -.fi -http://www.entrust.com/ をはじめ、多くの CA が存在します。Microsoft の認証サーバー、Entrust の CA 製品などを所属組織内で利用すれば、独自の証明書発行局を運営することも可能です。 -.LP -\f3keytool\fP を使うと、証明書の表示、インポート、およびエクスポートを行うことができます。また、自己署名証明書を生成することもできます。 -.LP -現在、\f3keytool\fP は X.509 証明書を対象にしています。 -.TP 2 -o -\f3X.509 証明書\fP -.LP -X.509 規格では、証明書に含める情報が定義されており、この情報を証明書に書き込む方法 (データ形式) についても記述されています。証明書のすべてのデータは、ASN.1/DER と呼ばれる 2 つの関連規格を使って符号化されます。\f2Abstract Syntax Notation 1\fP はデータについて記述しています。\f2Definite Encoding Rules\fP は、データの保存および転送の方法について記述しています。 -.LP -すべての X.509 証明書は、署名のほかに次のデータを含んでいます。 -.RS 3 -.TP 3 -バージョン -.LP -証明書に適用される X.509 規格のバージョンを特定します。証明書に指定できる情報は、バージョンによって異なります。これまでに、3 つのバージョンが定義されています。\f3keytool\fP では、v1、v2、および v3 の証明書のインポートとエクスポートが可能です。keytool が生成するのは、v3 の証明書です。 -.LP -「X.509 Version 1」は、1988 年から利用されて広く普及しており、もっとも一般的です。 -.LP -「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 -シリアル番号 -.LP -証明書を作成したエンティティーは、そのエンティティーが発行するほかの証明書と区別するために、証明書にシリアル番号を割り当てます。この情報は、さまざまな方法で使われます。たとえば、証明書が取り消されると、シリアル番号が証明書の取り消しリスト (CRL) に格納されます。 -.TP 3 -署名アルゴリズム識別子 -.LP -証明書に署名を付けるときに CA が使ったアルゴリズムを特定します。 -.TP 3 -発行者名 -.LP -証明書に署名を付けたエンティティーの X.500 識別名です。エンティティーは、通常は CA です。この証明書を使うことは、証明書に署名を付けたエンティティーを信頼することを意味します。「ルート」つまり「トップレベル」の CA の証明書など、場合によっては発行者が自身の証明書に署名を付けることがある点に注意してください。 -.TP 3 -有効期間 -.LP -各証明書は、限られた期間だけ有効になります。この期間は開始の日時と終了の日時によって指定され、数秒の短い期間から 100 年という長期にわたることもあります。選択される有効期間は、証明書への署名に使われる非公開鍵の強度や証明書に支払う金額など、さまざまな要因で異なります。有効期間は、使用する非公開鍵が損なわれない場合に、エンティティーが公開鍵を信頼できると期待される期間です。 -.TP 3 -Subject 名 -.LP -証明書で公開鍵が識別されているエンティティーの名前です。この名前は X.500 標準を使うので、インターネット全体で一意なものと想定されます。これは、エンティティーの X.500 識別名 (DN) です。次に例を示します。 -.nf -\f3 -.fl - CN=Java Duke, OU=Java Software Division, O=Oracle Corporation, C=US -.fl -\fP -.fi -.LP -これらはそれぞれ主体の通称、組織単位、組織、国を表します。 -.TP 3 -Subject の公開鍵情報 -.LP -名前を付けられたエンティティーの公開鍵とアルゴリズム識別子です。アルゴリズム識別子では、公開鍵に対して使われている公開鍵暗号化システムおよび関連する鍵パラメータが指定されています。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +イタリック体になっていないすべての項目、または中カッコか角カッコで囲まれているすべての項目は、そのとおりに指定する必要があります。 .RE -.TP 2 -o -\f3証明書チェーン\fP -.LP -\f3keytool\fP では、非公開鍵および関連する証明書「チェーン」を含むキーストアの「鍵」エントリを作成し、管理することができます。このようなエントリでは、非公開鍵に対応する公開鍵は、チェーンの最初の証明書に含まれています。 -.LP -鍵を初めて作成すると (\-genkeypair コマンドを参照)、「自己署名証明書」という 1 つの要素だけを含むチェーンが開始されます。自己署名証明書は、発行者 (署名者) が主体 (証明書で認証されている公開鍵の持ち主) と同じである証明書のことです。 \f2\-genkeypair\fP コマンドを呼び出して新しい公開鍵と非公開鍵のペアを作成すると、公開鍵は常に自己署名証明書でラップされます。 -.LP -このあと、証明書署名要求 (CSR) が生成されて (\-certreq コマンドを参照)、CSR が証明書発行局 (CA) に送信されると、CA からの応答がインポートされ (\-importcert コマンドを参照)、元の自己署名証明書は証明書チェーンによって置き換えられます。チェーンの最後にあるのは、Subject の公開鍵を認証した CA が発行した証明書 (応答) です。チェーン内のその前の証明書は、「CA」の公開鍵を認証する証明書です。 -.LP -CA の公開鍵を認証する証明書は、多くの場合、自己署名証明書 (つまり CA が自身の公開鍵を認証した証明書) であり、これはチェーンの最初の証明書になります。場合によっては、CA が証明書のチェーンを返すこともあります。この場合、チェーン内の最後の証明書 (CA によって署名され、鍵エントリの公開鍵を認証する証明書) に変わりはありませんが、チェーン内のその前の証明書は、CSR の送信先の CA とは「別の」CA によって署名され、CSR の送信先の CA の公開鍵を認証する証明書になります。さらに、チェーン内のその前の証明書は、次の CA の鍵を認証する証明書になります。 以下同様に、自己署名された「ルート」証明書に達するまでチェーンが続きます。したがって、チェーン内の (最初の証明書以後の) 各証明書では、チェーン内の次の証明書の署名者の公開鍵が認証されていることになります。 -.LP -多くの CA は、チェーンをサポートせずに発行済みの証明書だけを返します。特に、中間の CA が存在しないフラットな階層構造の場合は、その傾向が顕著です。このような場合は、キーストアにすでに格納されている信頼できる証明書情報から、証明書チェーンを確立する必要があります。 -.LP -別の応答形式 (PKCS#7 で定義されている形式) でも、発行済み証明書に加え、証明書チェーンのサポートが含まれています。\f3keytool\fP では、どちらの応答形式も扱うことができます。 -.LP -トップレベル (ルート) CA の証明書は、自己署名証明書です。ただし、ルートの公開鍵に対する信頼は、ルートの証明書自体から導き出されるものではなく (たとえば、VeriSign ルート CA のような有名な識別名を使った自己署名証明書を作成すること自体は誰でも可能)、新聞などのほかの情報源に由来するものです。ルート CA の公開鍵は広く知られています。ルート CA の公開鍵を証明書に格納する理由は、証明書という形式にすることで多くのツールから利用できるようになるからにすぎません。 つまり、証明書は、ルート CA の公開鍵を運ぶ「媒体」として利用されるだけです。ルート CA の証明書をキーストアに追加するときは、その前に証明書の内容を表示し ( \f2\-printcert\fP オプションを使用)、表示されたフィンガープリントと、新聞やルート CA の Web ページなどから入手した既知のフィンガープリントとを比較する必要があります。 -.TP 2 -o -\f3cacerts 証明書ファイル\fP -.LP -\f3cacerts\fP という名前の証明書ファイルは、セキュリティープロパティーディレクトリ \f2java.home\fP/lib/security に置かれています。\f2java.home\fP は、実行環境のディレクトリ (SDK の \f2jre\fP ディレクトリまたは Java 2 Runtime Environment の最上位ディレクトリ) です。 -.LP -cacerts ファイルは、CA の証明書を含む、システム全体のキーストアです。システム管理者は、キーストアタイプに jks を指定することで、\f3keytool\fP を使ってこのファイルの構成と管理を行うことができます。cacerts キーストアファイルは、ルート CA 証明書のデフォルトセットを含んだ状態で出荷されています。それらの証明書を一覧表示するには、次のコマンドを使用します。 -.nf -\f3 -.fl -keytool \-list \-keystore \fP\f4java.home\fP\f3/lib/security/cacerts -.fl -\fP -.fi -.LP -cacerts キーストアファイルの初期パスワードは、changeit です。システム管理者は、SDK のインストール後、このファイルのパスワードとデフォルトアクセス権を変更する必要があります。 -.LP -\f3重要: \fP\f4cacerts\fP\f3 ファイルを確認してください\fP: \f2cacerts\fP ファイル内の CA は、署名および他のエンティティーへの証明書発行のためのエンティティーとして信頼されるため、 \f2cacerts\fP ファイルの管理は慎重に行う必要があります。 \f2cacerts\fP ファイルには、信頼する CA の証明書だけが含まれていなければなりません。ユーザーは、自身の責任において、 \f2cacerts\fP ファイルにバンドルされている信頼できるルート CA 証明書を検証し、信頼性に関する独自の決定を行います。信頼できない CA 証明書を \f2cacerts\fP ファイルから削除するには、 \f2keytool\fP コマンドの削除オプションを使用します。 \f2cacerts\fP ファイルは JRE のインストールディレクトリにあります。このファイルを編集するアクセス権がない場合は、システム管理者に連絡してください。 -.TP 2 -o -\f3インターネット RFC 1421 証明書符号化規格\fP -.LP -多くの場合、証明書は、バイナリ符号化ではなく、インターネット RFC 1421 規格で定義されている出力可能符号化方式を使って格納されます。「Base 64 符号化」とも呼ばれるこの証明書形式では、電子メールやその他の機構を通じて、ほかのアプリケーションに証明書を容易にエクスポートできます。 -.LP -\f2\-importcert\fP と \f2\-printcert\fP コマンドでは、この形式の証明書とバイナリ符号化の証明書を読み込むことができます。 -.LP -\f2\-exportcert\fP コマンドでは、デフォルトでバイナリ符号化の証明書が出力されます。 ただし、 \f2\-rfc\fP オプションを指定した場合は、出力可能符号化方式の証明書が出力されます。 -.LP -\f2\-list\fP コマンドでは、デフォルトで証明書の SHA1 フィンガープリントが出力されます。 \f2\-v\fP オプションを指定すると、人間が読むことのできる形式で証明書が出力されます。一方、 \f2\-rfc\fP オプションを指定すると、出力可能符号化方式で証明書が出力されます。 -.LP -出力可能符号化方式で符号化された証明書は、次の行で始まります。 -.nf -\f3 -.fl -\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\- -.fl -\fP -.fi -.LP -最後は、次の行で終わります。 -.nf -\f3 -.fl -\-\-\-\-\-END CERTIFICATE\-\-\-\-\- -.fl -\fP -.fi +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +オプションを囲む中カッコは、そのオプションをコマンドラインで指定しなかった場合に、デフォルト値が使用されることを意味します。オプションのデフォルト値を参照してください。中カッコは、\fI\-v\fR、\fI\-rfc\fRおよび\fI\-J\fRオプションを囲むためにも使用されますが、これらのオプションはコマンドラインで指定された場合にのみ意味を持ちます。指定されていない場合以外、デフォルト値はありません。 .RE - -.LP -.SS -X.500 識別名 -.LP -.LP -X.500 識別名は、エンティティーを特定するために使われます。たとえば、X.509 証明書の \f2subject\fP フィールドと \f2issuer\fP (署名者) フィールドで指定される名前は、X.500 識別名です。\f3keytool\fP は、次のサブパートをサポートしています。 -.LP -.RS 3 -.TP 2 -o -\f2commonName\fP \- 人の通称。 「Susan Jones」など -.TP 2 -o -\f2organizationUnit\fP \- 小さな組織 (部、課など) の名称。 「仕入部」など -.TP 2 -o -\f2organizationName\fP \- 大きな組織の名称。 「ABCSystems, Inc.」など -.TP 2 -o -\f2localityName\fP \- 地域 (都市) 名。 「Palo Alto」など -.TP 2 -o -\f2stateName\fP \- 州名または地方名。 「California」など -.TP 2 -o -\f2country\fP \- 2 文字の国番号。 「CH」など +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +オプションを囲む角カッコは、そのオプションをコマンドラインで指定しなかった場合に、値の入力を求められることを意味します。\fI\-keypass\fRオプションの場合、オプションをコマンドラインで指定しなかった場合は、\fIkeytool\fRコマンドがまずキーストアのパスワードを使用して非公開/秘密鍵の復元を試みます。この試みが失敗した場合、\fIkeytool\fRコマンドにより、非公開/秘密鍵のパスワードの入力を求められます。 .RE - -.LP -.LP -\-genkeypair コマンドの \f2\-dname\fP オプションの値として識別名文字列を指定する場合は、 次の形式で指定する必要があります。 -.LP -.nf -\f3 -.fl -CN=\fP\f4cName\fP\f3, OU=\fP\f4orgUnit\fP\f3, O=\fP\f4org\fP\f3, L=\fP\f4city\fP\f3, S=\fP\f4state\fP\f3, C=\fP\f4countryCode\fP\f3 -.fl -\fP -.fi - -.LP -.LP -イタリック体の項目は、実際に指定する値を表します。 短縮形のキーワードの意味は、次のとおりです。 -.LP -.nf -\f3 -.fl - CN=commonName -.fl - OU=organizationUnit -.fl - O=organizationName -.fl - L=localityName -.fl - S=stateName -.fl - C=country -.fl -\fP -.fi - -.LP -.LP -次に示すのは、識別名文字列の例です。 -.LP -.nf -\f3 -.fl -CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, S=California, C=US -.fl -\fP -.fi - -.LP -.LP -次は、この文字列を使ったコマンドの例です。 -.LP -.nf -\f3 -.fl -keytool \-genkeypair \-dname "CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, -.fl -S=California, C=US" \-alias mark -.fl -\fP -.fi - -.LP -.LP -キーワードの短縮形では、大文字と小文字は区別されません。たとえば、CN、cn、および Cn は、どれも同じものとして扱われます。 -.LP -.LP -一方、キーワードの指定順序には意味があり、各サブコンポーネントは上に示した順序で指定する必要があります。ただし、サブコンポーネントをすべて指定する必要はありません。たとえば、次のように一部のサブコンポーネントだけを指定できます。 -.LP -.nf -\f3 -.fl -CN=Steve Meier, OU=Java, O=Oracle, C=US -.fl -\fP -.fi - -.LP -.LP -識別名文字列の値にコンマが含まれる場合に、コマンド行で文字列を指定するときには、次のようにコンマを文字 \\ でエスケープする必要があります。 -.LP -.nf -\f3 -.fl - cn=Peter Schuster, ou=Java\\, Product Development, o=Oracle, c=US -.fl -\fP -.fi - -.LP -.LP -識別名文字列をコマンド行で指定する必要はありません。識別名を必要とするコマンドを実行するときに、コマンド行で識別名を指定しなかった場合は、各サブコンポーネントの入力を求められます。この場合は、コンマを文字 \\ でエスケープする必要はありません。 -.LP -.SS -信頼できる証明書のインポートに関する注意事項 -.LP -.LP -重要: 信頼できる証明書として証明書をインポートする前に、証明書の内容を慎重に調べてください。 -.LP -.LP -まず、証明書の内容を表示し (\-printcert コマンドを使用するか、または \-noprompt オプションを指定しないで \-importcert コマンドを使用)、 コマンドを使用し、 表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致するかどうかを確認します。たとえば、あるユーザーから証明書が送られてきて、この証明書を /tmp/cert という名前でファイルに格納しているとします。 この場合は、信頼できる証明書のリストにこの証明書を追加する前に、 \f2\-printcert\fP コマンドを実行してフィンガープリントを表示できます。たとえば、次のようにします。 -.LP -.nf -\f3 -.fl - keytool \-printcert \-file /tmp/cert -.fl - Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll -.fl - Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll -.fl - Serial Number: 59092b34 -.fl - Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997 -.fl - Certificate Fingerprints: -.fl - MD5: 11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F -.fl - SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE -.fl - SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90: -.fl - 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4 -.fl -\fP -.fi - -.LP -.LP -次に、証明書を送信した人物に連絡し、この人物が提示したフィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中でほかの何者か (攻撃者など) による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのもの (攻撃的意図を持つクラスファイルを含んだ JAR ファイルなど) を信頼することになります。 -.LP -.LP -注: 証明書をインポートする前に必ず \f2\-printcert\fP コマンドを実行しなければならないわけではありません。キーストア内の信頼できる証明書のリストに証明書を追加する前に \f2\-importcert\fP コマンドを実行すると、証明書の情報が表示され、確認を求めるメッセージが表示されます。インポート操作は、この時点で中止できます。ただし、確認メッセージが表示されるのは、\-importcert コマンドを \-noprompt オプションを指定せずに実行した場合だけです。 コマンドを使用し、 \f2\-noprompt\fP オプションが指定されている場合、ユーザーとの対話は行われません。 -.LP -.SS -パスワードに関する注意事項 -.LP -.LP -キーストアに対する操作を行うほとんどのコマンドでは、ストアのパスワードが必要です。また、一部のコマンドでは、非公開/秘密鍵のパスワードが必要になることがあります。 -.LP -.LP -パスワードはコマンド行で指定できます (ストアのパスワードには \f2\-storepass\fP オプション、非公開鍵のパスワードには \f2\-keypass\fP オプションを使用)。ただし、テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。 -.LP -.LP -必要なパスワードのオプションをコマンド行で指定しなかった場合は、パスワードの入力を求められます。 -.LP -.SS -証明書の準拠に関する注意事項 -.LP -.LP -インターネット標準の -.na -\f2RFC 5280\fP @ -.fi -http://tools.ietf.org/rfc/rfc5280.txt では、X.509 証明書が準拠するプロファイルを定義しています。このプロファイルには、証明書のフィールドやエクステンションで有効な値や値の組み合わせが含まれています。\f3keytool\fP では、これらのすべての規則が適用されているわけではないので、標準に準拠しない証明書が生成される可能性があり、そのような証明書は JRE やほかのアプリケーションで拒否されることがあります。ユーザーは、 \f2\-dname\fP や \f2\-ext\fP などで適正なオプションを指定するようにしてください。 -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -jar(1) ツールのドキュメント -.TP 2 -o -jarsigner(1) ツールのドキュメント -.TP 2 -o -.na -\f4keytool\fP\f2 の使用例については、\fP @ -.fi -http://download.oracle.com/javase/tutorial/security/index.html -.na -\f2「Java Tutorial」\fP\f4の\fP @ -.fi -http://download.oracle.com/javase/tutorial/「Security」\f3を参照\fP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +イタリック体の項目の実際の値(オプションの値)は、指定する必要があります。たとえば、\fI\-printcert\fRコマンドの形式は次のとおりです。 +.sp +\fIkeytool \-printcert {\-file cert_file} {\-v}\fR +.sp +\fI\-printcert\fRコマンドを指定する場合は、\fIcert_file\fRを実際のファイル名で置き換えます。例: +\fIkeytool \-printcert \-file VScert\&.cer\fR .RE - -.LP -.SH "変更点" -.LP -.LP -Java SE 6 で keytool のコマンドインタフェースが変更されました。 -.LP -.LP -\f3keytool\fP は、ユーザーがパスワードを入力する際にその入力内容を表示しなくなりました。ユーザーはパスワード入力時にその入力内容を確認できなくなったため、初期キーストアパスワードを設定したり鍵パスワードを変更したりするなど、パスワードの設定や変更を行うたびにパスワードの再入力を求められます。 -.LP -.LP -変更されたコマンドの中には、名前が変更されただけのものもあれば、廃止されてこのドキュメントに記載されなくなったものもあります。以前のすべてのコマンド (名前が変更されたものと廃止されたものの両方) は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。keytool のコマンドインタフェースに加えられたすべての変更点の概要を、次に示します。 -.LP -.LP -名前が変更されたコマンド: -.LP -.RS 3 -.TP 2 -o -\f2\-export\fP の名前が \f2\-exportcert に変更\fP -.TP 2 -o -\f2\-genkey\fP の名前が \f2\-genkeypair に変更\fP -.TP 2 -o -\f2\-import\fP の名前が \f2\-importcert に変更\fP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +オプションの値に空白(スペース)が含まれている場合は、値を引用符で囲む必要があります。 .RE - -.LP -.LP -廃止されてドキュメントに記載されなくなったコマンド: -.LP -.RS 3 -.TP 2 -o -.na -\f2\-keyclone\fP @ -.fi -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/windows/keytool.html#identitydbCmd -.TP 2 -o -.na -\f2\-selfcert\fP @ -.fi -http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/keytool.html#selfcertCmd +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-help\fRオプションがデフォルトです。\fIkeytool\fRコマンドは、\fIkeytool \-help\fRと同じです。 .RE - -.LP +.SH "オプションのデフォルト値" +.PP +次の例で、様々なオプション値のデフォルト値を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-alias "mykey" +\-keyalg + "DSA" (when using \-genkeypair) + "DES" (when using \-genseckey) + +\-keysize + 2048 (when using \-genkeypair and \-keyalg is "RSA") + 1024 (when using \-genkeypair and \-keyalg is "DSA") + 256 (when using \-genkeypair and \-keyalg is "EC") + 56 (when using \-genseckey and \-keyalg is "DES") + 168 (when using \-genseckey and \-keyalg is "DESede") + +\-validity 90 + +\-keystore <the file named \&.keystore in the user\*(Aqs home directory> + +\-storetype <the value of the "keystore\&.type" property in the + security properties file, which is returned by the static + getDefaultType method in java\&.security\&.KeyStore> + +\-file + stdin (if reading) + stdout (if writing) + +\-protected false +.fi +.if n \{\ +.RE +.\} +.PP +公開/秘密鍵ペアの生成において、署名アルゴリズム(\fI\-sigalg\fRオプション)は、基になる秘密鍵のアルゴリズムから派生します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +基になる秘密鍵がDSAタイプである場合は、\fI\-sigalg\fRオプションのデフォルト値はSHA1withDSAになります。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +基になる秘密鍵がRSAタイプである場合は、\fI\-sigalg\fRオプションのデフォルト値はSHA256withRSAになります。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +基になる秘密鍵がECタイプである場合は、\fI\-sigalg\fRオプションのデフォルト値はSHA256withECDSAになります。 +.RE +.PP +\fI\-keyalg\fRおよび\fI\-sigalg\fR引数の完全なリストについては、 +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppAの「Java Cryptography Architecture (JCA) Reference Guide」を参照してください。 +.SH "一般オプション" +.PP +\fI\-v\fRオプションは、\fI\-help\fRコマンドを除くすべてのコマンドで使用できます。\fI\-v\fRオプションを指定した場合、コマンドは冗長モードで実行され、詳細な情報が出力されます。 +.PP +任意のコマンドで指定できる\fI\-Jjavaoption\fR引数もあります。\fI\-Jjavaoption\fRを指定した場合、指定された\fIjavaoption\fR文字列がJavaインタプリタに直接渡されます。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタ・オプションを一覧表示するには、コマンドラインで\fIjava \-h\fRまたは\fIjava \-X\fRと入力してください。 +.PP +次のオプションは、キーストアに対する操作を行うすべてのコマンドで指定できます。 +.PP +\-storetype \fIstoretype\fR +.RS 4 +この修飾子は、インスタンスを生成するキーストアのタイプを指定します。 +.RE +.PP +\-keystore \fIkeystore\fR +.RS 4 +キーストアの場所を指定します。 +.sp +特定の\fIkeytool\fRコマンドを実行する際に、JKS +\fIstoretype\fRが使用され、かつキーストア・ファイルがまだ存在していなかった場合、新しいキーストア・ファイルが作成されます。たとえば、\fIkeytool \-genkeypair\fRの呼出し時に\fI\-keystore\fRオプションが指定されなかった場合、\fI\&.keystore\fRという名前のデフォルト・キーストア・ファイルがユーザーのホーム・ディレクトリ内にまだ存在していなければ、そこに作成されます。同様に、\fI\-keystore ks_file\fRというオプションが指定されてもそのks_fileが存在しなかった場合、そのファイルが作成されます。JKS +\fIstoretype\fRの詳細は、\fIの\fRKeyStoreの実装キーストアの別名に関する項を参照してください。 +.sp +\fI\-keystore\fRオプションからの入力ストリームは、\fIKeyStore\&.load\fRメソッドに渡されます。URLとして\fINONE\fRが指定されている場合は、nullのストリームが\fIKeyStore\&.load\fRメソッドに渡されます。\fINONE\fRは、KeyStoreがファイルベースではない場合に指定してください。たとえば、ハードウェア・トークン・デバイス上に存在している場合などです。 +.RE +.PP +\-storepass[:\fIenv\fR| :\fIfile\fR] argument +.RS 4 +キーストアの整合性を保護するために使用するパスワードを指定します。 +.sp +修飾子\fIenv\fRまたは\fIfile\fRを指定しない場合、パスワードの値は\fIargument\fRになります。この値は、6文字以上にする必要があります。それ以外の場合、パスワードは次のようにして取得されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIenv\fR: +\fIargument\fRという名前の環境変数からパスワードを取得します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIfile\fR: argumentという名前のファイルからパスワードを取得します。 +.RE +.sp +\fB注意:\fR +\fI\-keypass\fR、\fI\-srckeypass\fR、\-\fIdestkeypass\fR、\fI\-srcstorepass\fR、\fI\-deststorepass\fRなどのパスワードを必要とするその他のオプションはすべて、\fIenv\fRおよび\fIfile\fR修飾子を受け付けます。パスワード・オプションと修飾子は、必ずコロン(:)で区切ってください。 +.sp +パスワードは、キーストアの内容にアクセスするすべてのコマンドで使用されます。この種のコマンドを実行するときに、コマンドラインで\fI\-storepass\fRオプションを指定しなかった場合は、パスワードの入力を求められます。 +.sp +キーストアから情報を取得する場合、パスワードは省略可能です。パスワードが指定されていない場合は、取得した情報の整合性を検証できず、警告が表示されます。 +.RE +.PP +\-providerName \fIprovider_name\fR +.RS 4 +セキュリティ・プロパティ・ファイル内に含まれる暗号化サービス・プロバイダ名を特定するために使用されます。 +.RE +.PP +\-providerClass \fIprovider_class_name\fR +.RS 4 +暗号化サービス・プロバイダがセキュリティ・プロパティ・ファイルに指定されていないときは、そのマスター・クラス・ファイルの名前を指定するときに使用されます。 +.RE +.PP +\-providerArg \fIprovider_arg\fR +.RS 4 +\fI\-providerClass\fRオプションとともに使用され、\fIprovider_class_name\fRのコンストラクタのオプションの文字列入力引数を表します。 +.RE +.PP +\-protected +.RS 4 +\fItrue\fRまたは\fIfalse\fRのいずれか。パスワードを専用PINリーダーなどの保護された認証パス経由で指定する必要がある場合は、この値を\fItrue\fRに指定する必要があります。\fI\-importkeystore\fRコマンドには2つのキーストアが関連しているため、ソース・キーストアと宛先キーストアにそれぞれ次の2つのオプション、\fI\-srcprotected\fRと\-\fIdestprotected\fRが用意されています。 +.RE +.PP +\-ext \fI{name{:critical} {=value}}\fR +.RS 4 +X\&.509証明書エクステンションを示します。このオプションを\fI\-genkeypair\fRおよび\fI\-gencert\fRで使用して、生成される証明書または\fI\-certreq\fRにエクステンションを埋め込み、証明書リクエストでリクエストされるエクステンションを示すことができます。このオプションは複数回指定できます。\fIname\fR引数には、サポートされているエクステンション名(名前付きエクステンションを参照)または任意のOID番号を指定できます。指定されている場合、\fIvalue\fR引数はエクステンションの引数を指します。\fIvalue\fRを省略した場合、エクステンションのデフォルト値またはエクステンションが引数を必要としないことを示します。\fI:critical\fR修飾子が指定された場合、エクステンションの\fIisCritical\fR属性は\fItrue\fRで、指定されない場合は\fIfalse\fRです。\fI:critical\fRのかわりに\fI:c\fRを使用できます。 +.RE +.SH "名前付きエクステンション" +.PP +\fIkeytool\fRコマンドは、次の名前のエクステンションをサポートしています。名前の大/小文字は区別されません。 +.PP +BCまたはBasicContraints +.RS 4 +\fB値\fR: 完全な形式は次のとおりです: +\fIca:{true|false}[,pathlen:<len>]\fRまたは\fI<len>\fR(これは、\fIca:true,pathlen:<len>\fRの短縮形です)。<\fIlen\fR>を省略すると、\fIca:true\fRの意味になります。 +.RE +.PP +KUまたはKeyUsage +.RS 4 +\fB値\fR: +\fIusage\fR(\fIusage\fR)*、\fIusage\fRには\fIdigitalSignature\fR、\fInonRepudiation\fR +(contentCommitment)、\fIkeyEncipherment\fR、\fIdataEncipherment\fR、\fIkeyAgreement\fR、\fIkeyCertSign\fR、\fIcRLSign\fR、\fIencipherOnly\fR、\fIdecipherOnly\fRのいずれかを指定できます。\fIusage\fR引数は、不明確にならないかぎり、最初の数文字(\fIdigitalSignature\fRの場合は\fIdig\fR)またはキャメルケース・スタイル(\fIdigitalSignature\fRの場合は\fIdS\fR、\fIcRLSign\fRの場合は\fIcRLS\fR)で省略表記できます。\fIusage\fR値は、大文字と小文字が区別されます。 +.RE +.PP +EKUまたはExtendedKeyUsage +.RS 4 +\fB値\fR: +\fIusage\fR(\fIusage\fR)*、\fIusage\fRには\fIanyExtendedKeyUsage\fR、\fIserverAuth\fR、\fIclientAuth\fR、\fIcodeSigning\fR、\fIemailProtection\fR、\fItimeStamping\fR、\fIOCSPSigning\fRまたは任意の\fIOID文字列\fRのいずれかを指定できます。\fIusage\fR引数は、不明確にならないかぎり、最初の数文字またはキャメルケース・スタイルで省略表記できます。\fIusage\fR値は、大文字と小文字が区別されます。 +.RE +.PP +SANまたはSubjectAlternativeName +.RS 4 +\fB値\fR: +\fItype\fR:\fIvalue\fR +(t\fIype:value\fR)*、\fItype\fRには\fIEMAIL\fR、\fIURI\fR、\fIDNS\fR、\fIIP\fRまたは\fIOID\fRを指定できます。\fIvalue\fR引数は、\fItype\fRの文字列形式の値です。 +.RE +.PP +IANまたはIssuerAlternativeName +.RS 4 +\fB値\fR: +\fISubjectAlternativeName\fRと同じです。 +.RE +.PP +SIAまたはSubjectInfoAccess +.RS 4 +\fB値\fR: +\fImethod\fR:\fIlocation\-type\fR:\fIlocation\-value\fR +(\fImethod:location\-type\fR:\fIlocation\-value\fR)*、\fImethod\fRには\fItimeStamping\fR、\fIcaRepository\fRまたは任意のOIDを指定できます。\fIlocation\-type\fRおよび\fIlocation\-value\fR引数には、\fISubjectAlternativeName\fRエクステンションでサポートされる任意の\fItype\fR:\fIvalue\fRを指定できます。 +.RE +.PP +AIAまたはAuthorityInfoAccess +.RS 4 +\fB値\fR: +\fISubjectInfoAccess\fRと同じです。\fImethod\fR引数には、\fIocsp\fR、\fIcaIssuers\fRまたは任意のOIDを指定できます。 +.RE +.PP +\fIname\fRがOIDの場合、OCTET STRINGタイプと長さのバイトを除外したエクステンションについては、値は\fIextnValue\fRの16進ダンプのDERエンコーディングです。HEX文字列では、標準の16進数(0\-9、a\-f、A\-F)以外の文字は無視されます。したがって、01:02:03:04と01020304の両方とも同一の値として受け付けられます。値がない場合、エクステンションの値フィールドは空になります。 +.PP +\fI\-gencert\fRでのみ使用する\fIhonored\fRという特別な名前は、証明書リクエストに含まれるエクステンションを優先する方法を示します。この名前の値は、\fIall\fR(リクエストされるすべてのエクステンションが優先される)、\fIname{:[critical|non\-critical]}\fR(名前付きのエクステンションが優先されるが、別の\fIisCritical\fR属性を使用する)、および\fI\-name\fR(\fIall\fRとともに使用し、例外を示す)のカンマ区切りリストです。デフォルトでは、リクエストされるエクステンションは優先されません。 +.PP +\fI\-ext honored\fRオプションに加え、別の名前の、またはOID +\fI\-ext\fRのオプションを指定した場合は、このエクステンションが、すでに優先されているエクステンションに追加されます。ただし、この名前(またはOID)を優先される値でも使用した場合は、その値と重要性がリクエストに含まれるものをオーバーライドします。 +.PP +\fIsubjectKeyIdentifier\fRエクステンションは常に作成されます。自己署名でない証明書の場合は、\fIauthorityKeyIdentifier\fRが作成されます。 +.PP +\fB注意:\fR +ユーザーは、エクステンション(および証明書の他のフィールド)の組合せによっては、インターネットの標準に準拠しない場合があることに注意してください。証明書の準拠に関する警告を参照してください。 +.SH "コマンド" +.PP +\-gencert +.RS 4 +\fI{\-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}\fR +.sp +証明書リクエスト・ファイル(\fIkeytool\fR +\fI\-certreq\fRコマンドで作成可能)に対するレスポンスとして証明書を生成します。このコマンドは、\fIinfile\fRから(省略した場合は、標準入力から)リクエストを読み込み、別名の秘密鍵を使用してそのリクエストに署名して、X\&.509証明書を\fIoutfile\fRに(省略した場合は、標準出力に)出力します。\fI\-rfc\fRを指定した場合、出力形式はBASE64符号化のPEMになります。それ以外の場合は、バイナリDERが作成されます。 +.sp +\fIsigalg\fR値には、証明書に署名を付けるときに使用するアルゴリズムを指定します。\fIstartdate\fR引数は、証明書の有効開始日時です。\fIvalDays\fR引数は、証明書の有効日数を示します。 +.sp +\fIdname\fRを指定すると、生成される証明書の主体として使用されます。それ以外の場合は、証明書リクエストからの名前が使用されます。 +.sp +\fIext\fR値は、証明書に埋め込まれるX\&.509エクステンションを示します。\fI\-ext\fRの構文については、一般オプションを参照してください。 +.sp +\fI\-gencert\fRオプションを使用すると、証明書チェーンを作成できます。次の例では、\fIe1\fRという証明書を作成します。この証明書の証明書チェーンには、3つの証明書が含まれています。 +.sp +次のコマンドは、\fIca\fR、\fIca1\fR、\fIca2\fRおよび\fIe1\fRの4つの鍵ペアを作成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-alias ca \-dname CN=CA \-genkeypair +keytool \-alias ca1 \-dname CN=CA \-genkeypair +keytool \-alias ca2 \-dname CN=CA \-genkeypair +keytool \-alias e1 \-dname CN=E1 \-genkeypair +.fi +.if n \{\ +.RE +.\} +次の2つのコマンドは、署名付き証明書のチェーンを作成します。\fIca\fRは\fIca1\fRに署名し、\fIca1\fRは\fIca2\fRに署名します。すべて自己発行です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-alias ca1 \-certreq | + keytool \-alias ca \-gencert \-ext san=dns:ca1 | + keytool \-alias ca1 \-importcert + +keytool \-alias ca2 \-certreq | + $KT \-alias ca1 \-gencert \-ext san=dns:ca2 | + $KT \-alias ca2 \-importcert +.fi +.if n \{\ +.RE +.\} +次のコマンドは、証明書\fIe1\fRを作成してファイル\fIe1\&.cert\fRに格納します。この証明書は\fIca2\fRによって署名されます。その結果、\fIe1\fRの証明書チェーンには\fIca\fR、\fIca1\fRおよび\fIca2\fRが含まれることになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-alias e1 \-certreq | keytool \-alias ca2 \-gencert > e1\&.cert +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-genkeypair +.RS 4 +\fI{\-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}\fR +.sp +鍵のペア(公開鍵および関連する秘密鍵)を生成します。公開鍵はX\&.509 v3自己署名証明書でラップされます。証明書は、単一の要素を持つ証明書チェーンとして格納されます。この証明書チェーンと秘密鍵は、aliasで特定される新しいキーストア・エントリに格納されます。 +.sp +\fIkeyalg\fR値は鍵ペアの生成に使用するアルゴリズムを、\fIkeysize\fR値は生成する各鍵のサイズを、それぞれ指定します。\fIsigalg\fR値は、自己署名証明書に署名を付けるために使用するアルゴリズムを指定します。このアルゴリズムは\fIkeyalg\fR値と互換性がある必要があります。 +.sp +\fIdname\fR値には、\fIalias\fR値に関連付け、自己署名証明書のissuerフィールドとsubjectフィールドとして使用するX\&.500識別名を指定します。コマンドラインで識別名を指定しなかった場合は、識別名の入力を求められます。 +.sp +\fIkeypass\fR値には、生成される鍵のペアのうち、秘密鍵を保護するのに使用するパスワードを指定します。パスワードを指定しなかった場合は、パスワードの入力を求められます。このとき、\fI[Return]キー\fRを押すと、キーストアのパスワードと同じパスワードが鍵のパスワードに設定されます。\fIkeypass\fR値は、6文字以上にする必要があります。 +.sp +\fIstartdate\fR値には、証明書の発行時刻を指定します。これは、X\&.509証明書の「Validity」フィールドの「Not Before」値とも呼ばれます。 +.sp +オプションの値は、次の2つの形式のいずれかで設定できます。 +.sp +\fI([+\-]nnn[ymdHMS])+\fR +.sp +\fI[yyyy/mm/dd] [HH:MM:SS]\fR +.sp +最初の形式では、発行時刻は、指定される値の分、現在の時刻から移ります。指定される値は、一連の下位の値を連結したものになります。下位の各値で、プラス記号(「+」)は時間が進むことを、マイナス記号(「\-」)は時間が戻ることを意味しています。移る時間は\fInnn\fRで、単位は年、月、日、時間、分または秒です(それぞれ、1文字の\fIy\fR、\fIm\fR、\fId\fR、\fIH\fR、\fIM\fRまたは\fIS\fR」で示されています)。下位の各値で\fIjava\&.util\&.GregorianCalendar\&.add(int field, int amount)\fRメソッドを使用することで、発行時刻の追加の値が左から右へ計算されます。たとえば、指定すると、発行時刻は次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Calendar c = new GregorianCalendar(); +c\&.add(Calendar\&.YEAR, \-1); +c\&.add(Calendar\&.MONTH, 1); +c\&.add(Calendar\&.DATE, \-1); +return c\&.getTime() +.fi +.if n \{\ +.RE +.\} +2番目の形式では、ユーザーは、年/月/日と時間:分:秒の2つの部分で厳密な開始時刻を設定します(地元の時間帯を使用)。ユーザーは、1つの部分のみを指定できます。これは、もう1つの部分は現在の日付(または時刻)と同じになるということです。ユーザーは、形式の定義に示されているように、桁数を厳密に指定する必要があります(短い場合は0で埋めます)。日付と時刻の両方が指定された状態で、2つの部分の間に空白文字が1つ(1つのみ)あります。時間は常に24時間形式で指定してください。 +.sp +オプションを指定しないと、開始日付は現在の時刻になります。オプションは、最大で1回指定できます。 +.sp +\fIvalDays\fRの値には、証明書の有効日数を指定します(\fI\-startdate\fRで指定された日付、または\fI\-startdate\fRが指定されていない場合は現在の日付から始まります)。 +.sp +このコマンドは、以前のリリースでは\fI\-genkey\fRという名前でした。このリリースでは、引き続き古い名前がサポートされています。今後は、新しい名前\fI\-genkeypair\fRが優先されます。 +.RE +.PP +\-genseckey +.RS 4 +\fI\-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}\fR +.sp +秘密鍵を生成し、それを新しい\fIKeyStore\&.SecretKeyEntry\fR(\fIalias\fRで特定される)内に格納します。 +.sp +\fIkeyalg\fR値は鍵ペアの生成に使用するアルゴリズムを、\fIkeysize\fR値は生成する各鍵のサイズを、それぞれ指定します。\fIkeypass\fR値は、秘密鍵を保護するパスワードです。パスワードを指定しなかった場合は、パスワードの入力を求められます。このとき、[Return]キーを押すと、\fIkeystore\fRのパスワードと同じパスワードが鍵のパスワードに設定されます。\fIkeypass\fR値は、6文字以上にする必要があります。 +.RE +.PP +\-importcert +.RS 4 +\fI\-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}\fR +.sp +ファイル\fIcert_file\fRから証明書または証明書チェーン(証明書チェーンの場合は、PKCS#7形式の応答または一連のX\&.509証明書で提供されるもの)を読み込み、\fIalias\fRによって特定される\fIkeystore\fRエントリに格納します。ファイルが指定されていない場合は、\fIstdin\fRから証明書または証明書チェーンを読み込みます。 +.sp +\fIkeytool\fRコマンドでは、X\&.509 v1、v2、v3の証明書、およびPKCS#7形式の証明書から構成されているPKCS#7形式の証明書チェーンをインポートできます。インポートするデータは、バイナリ符号化方式、または出力可能符号化方式(Base64符号化とも呼ばれる)のどちらかで提供する必要があります。出力可能符号化方式は、インターネットRFC 1421証明書符号化規格で定義されています。この符号化方式の場合、証明書は\fI\-\fR\fI\-\-\-\-BEGIN\fRで始まる文字列で開始され、\fI\-\-\-\-\-END\fRで始まる文字列で終了する必要があります。 +.sp +証明書は、信頼できる証明書のリストに追加するため、および認証局(CA)に証明書署名リクエストを送信した結果としてCAから受信した証明書応答をインポートするため(コマンドの\fI\-certreq\fRオプションを参照)という2つの理由でインポートします。 +.sp +どちらのタイプのインポートを行うかは、\fI\-alias\fRオプションの値によって指定します。別名がキー・エントリをポイントしない場合、\fIkeytool\fRコマンドはユーザーが信頼できる証明書エントリを追加しようとしているものとみなします。この場合、別名がキーストア内に存在していないことが必要です。別名がすでに存在している場合、その別名の信頼できる証明書がすでに存在することになるので、\fIkeytool\fRコマンドはエラーを出力し、証明書のインポートを行いません。別名がキー・エントリをポイントする場合、\fIkeytool\fRコマンドはユーザーが証明書応答をインポートしようとしているものとみなします。 +.RE +.PP +\-importpassword +.RS 4 +\fI{\-alias alias} [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption}\fR +.sp +パスフレーズをインポートし、\fIalias\fRで識別される新規\fIKeyStore\&.SecretKeyEntry\fRに格納します。パスフレーズは、標準入力ストリームを介して提供できます。または、ユーザーにそのプロンプトが表示されます。\fIkeypass\fRは、インポートされるパスフレーズの保護に使用されるパスワードです。パスワードを指定しなかった場合は、パスワードの入力を求められます。このとき、[Return]キーを押すと、\fIkeystore\fRのパスワードと同じパスワードが鍵のパスワードに設定されます。\fIkeypass\fRは、6文字以上にする必要があります。 +.RE +.PP +\-importkeystore +.RS 4 +\fI{\-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}\fR +.sp +ソース・キーストアからターゲット・キーストアへ、単一のエントリまたはすべてのエントリをインポートします。 +.sp +\fI\-srcalias\fRオプションが指定された場合、このコマンドは、その別名で特定される単一のエントリをターゲット・キーストアにインポートします。\fIdestalias\fR経由でターゲット別名が指定されなかった場合、\fIsrcalias\fRがターゲット別名として使用されます。ソースのエントリがパスワードで保護されていた場合、\fIsrckeypass\fRを使用してそのエントリが回復されます。\fIsrckeypass\fRが指定されなかった場合、\fIkeytool\fRコマンドは\fIsrcstorepass\fRを使用してそのエントリを回復しようとします。\fIsrcstorepass\fRが指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ターゲットのエントリは\fIdestkeypass\fRによって保護されます。\fIdestkeypass\fRが指定されなかった場合、ターゲット・エントリはソース・エントリのパスワードによって保護されます。たとえば、ほとんどのサード・パーティ・ツールでは、PKCS #12キーストアで\fIstorepass\fRと\fIkeypass\fRが同じである必要があります。これらのツールのPKCS #12キーストアを作成する場合は、常に\fI\-destkeypass\fRと\fI\-deststorepass\fRが同じになるように指定します。 +.sp +\fI\-srcalias\fRオプションが指定されなかった場合、ソース・キーストア内のすべてのエントリがターゲット・キーストア内にインポートされます。各ターゲット・エントリは対応するソース・エントリの別名の下に格納されます。ソースのエントリがパスワードで保護されていた場合、\fIsrcstorepass\fRを使用してそのエントリが回復されます。\fIsrcstorepass\fRが指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ソース・キーストア内のあるエントリ・タイプがターゲット・キーストアでサポートされていない場合や、あるエントリをターゲット・キーストアに格納する際にエラーが発生した場合、ユーザーはそのエントリをスキップして処理を続行するか、あるいは処理を中断するかの選択を求められます。ターゲット・エントリはソース・エントリのパスワードによって保護されます。 +.sp +ターゲット別名がターゲット・キーストア内にすでに存在していた場合、ユーザーは、そのエントリを上書きするか、あるいは異なる別名の下で新しいエントリを作成するかの選択を求められます。 +.sp + +\fI\-noprompt\fRオプションを指定した場合、ユーザーは新しいターゲット別名の入力を求められません。既存のエントリがそのターゲット別名で上書きされます。インポートできないエントリはスキップされ、警告が出力されます。 +.RE +.PP +\-printcertreq +.RS 4 +\fI{\-file file}\fR +.sp +PKCS#10形式の証明書リクエストの内容を出力します。このリクエストは、\fIkeytool\fR +\fI\-certreq\fRコマンドで生成できます。このコマンドは、ファイルからリクエストを読み取ります。ファイルが存在しない場合、リクエストは標準入力から読み取られます。 +.RE +.PP +\-certreq +.RS 4 +\fI{\-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}\fR +.sp +PKCS#10形式を使用して証明書署名リクエスト(CSR)を生成します。 +.sp +CSRは、証明書発行局(CA)に送信することを目的としたものです。CAは、証明書要求者を(通常はオフラインで)認証し、証明書または証明書チェーンを送り返します。この証明書または証明書チェーンは、キーストア内の既存の証明書チェーン(最初は1つの自己署名証明書から構成される)に置き換えて使用します。 +.sp +aliasに関連付けられた秘密鍵は、PKCS#10証明書リクエストを作成するのに使用されます。秘密鍵にアクセスするには、正しいパスワードを指定する必要があります。コマンドラインで\fIkeypass\fRを指定しておらず、秘密鍵のパスワードがキーストアのパスワードと異なる場合は、秘密鍵のパスワードの入力を求められます。\fIdname\fRが指定されている場合は、それがCSRで主体として使用されます。それ以外の場合は、別名に関連付けられたX\&.500識別名が使用されます。 +.sp +\fIsigalg\fR値には、CSRに署名を付けるときに使用するアルゴリズムを指定します。 +.sp +CSRは、ファイルcertreq_fileに格納されます。ファイルが指定されていない場合は、\fIstdout\fRにCSRが出力されます。 +.sp +CAからのレスポンスをインポートするには、\fIimportcert\fRコマンドを使用します。 +.RE +.PP +\-exportcert +.RS 4 +\fI{\-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}\fR +.sp +\fIalias\fRに関連付けられた証明書をキーストアから読み込み、ファイルcert_fileに格納します。ファイルが指定されていない場合は、\fIstdout\fRに証明書が出力されます。 +.sp +デフォルトでは、証明書はバイナリ符号化で出力されます。\fI\-rfc\fRオプションが指定されている場合、出力可能符号化方式の出力はインターネットRFC 1421証明書符号化規格で定義されます。 +.sp +\fIalias\fRが、信頼できる証明書を参照している場合は、該当する証明書が出力されます。それ以外の場合、\fIalias\fRは、関連付けられた証明書チェーンを持つ鍵エントリを参照します。この場合は、チェーン内の最初の証明書が返されます。この証明書は、\fIalias\fRによって表されるエンティティの公開鍵を認証する証明書です。 +.sp +このコマンドは、以前のリリースでは\fI\-export\fRという名前でした。このリリースでは、引き続き古い名前がサポートされています。今後は、新しい名前\fI\-exportcert\fRが優先されます。 +.RE +.PP +\-list +.RS 4 +\fI{\-alias alias} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v | \-rfc} {\-protected} {\-Jjavaoption}\fR +.sp +\fIalias\fRで特定されるキーストア・エントリの内容を\fIstdout\fRに出力します。\fIalias\fRが指定されていない場合は、キーストア全体の内容が表示されます。 +.sp +このコマンドは、デフォルトでは証明書のSHA1フィンガープリントを表示します。 +\fI\-v\fRオプションが指定されている場合は、所有者、発行者、シリアル番号、拡張機能などの付加的な情報とともに、人間が読むことのできる形式で証明書が表示されます。\fI\-rfc\fRオプションが指定されている場合は、出力可能符号化方式で証明書の内容が出力されます。出力可能符号化方式は、インターネットRFC 1421証明書符号化規格で定義されています。 +.sp +\fI\-v\fRオプションと\fI\-rfc\fRオプションを同時に指定することはできません。 +.RE +.PP +\-printcert +.RS 4 +\fI{\-file cert_file | \-sslserver host[:port]} {\-jarfile JAR_file {\-rfc} {\-v} {\-Jjavaoption}\fR +.sp +ファイルcert_file、host:portにあるSSLサーバー、または署名付きJARファイル\fIJAR_file\fR(\fI\-jarfile\fRオプションを指定)から証明書を読み込み、人間が読むことのできる形式で証明書の内容を表示します。ポートが指定されていない場合は、標準のHTTPSポート443が想定されます。\fI\-sslserver\fRおよび\-fileオプションを同時に指定することはできません。これに反する場合、エラーが報告されます。オプションが指定されていない場合は、\fIstdin\fRから証明書を読み込みます。 +.sp +\fI\-rfc\fRが指定されている場合、\fIkeytool\fRコマンドは、インターネットRFC 1421証明書符号化標準で定義されているように、PEMモードで証明書を出力します。インターネットRFC 1421証明書符号化規格を参照してください。 +.sp +ファイルまたは\fIstdin\fRから証明書を読み込む場合、その証明書は、インターネットRFC 1421証明書符号化標準で定義されているように、バイナリ符号化方式または出力可能符号化方式で表示できます。 +.sp +SSLサーバーがファイアウォールの背後にある場合は、\fI\-J\-Dhttps\&.proxyHost=proxyhost\fRおよび\fI\-J\-Dhttps\&.proxyPort=proxyport\fRオプションをコマンドラインで指定して、プロキシ・トンネリングを使用できます。http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide\&.htmlの +「Java Secure Socket Extension (JSSE) Reference Guide」を参照してください +.sp +\fB注意:\fR +このオプションはキーストアとは関係なく使用できます。 +.RE +.PP +\-printcrl +.RS 4 +\fI\-file crl_ {\-v}\fR +.sp +ファイル\fIcrl_\fRから証明書失効リスト(CRL)を読み込みます。CRLは、発行したCAによって失効されたデジタル証明書のリストです。CAは、\fIcrl_\fRを生成します。 +.sp +\fB注意:\fR +このオプションはキーストアとは関係なく使用できます。 +.RE +.PP +\-storepasswd +.RS 4 +\fI[\-new new_storepass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-Jjavaoption}\fR +.sp +キーストアの内容の整合性を保護するために使用するパスワードを変更します。\fInew_storepass\fRには、新しいパスワードを指定します。new_storepassは、6文字以上である必要があります。 +.RE +.PP +\-keypasswd +.RS 4 +\fI{\-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}\fR +.sp +\fIalias\fRによって特定される非公開/秘密鍵を保護するためのパスワードを、\fIold_keypass\fRから\fInew_keypass\fRに変更します。new_keypassは、6文字以上である必要があります。 +.sp +コマンドラインで\fI\-keypass\fRオプションを指定しておらず、鍵のパスワードがキーストアのパスワードと異なる場合は、鍵のパスワードの入力を求められます。 +.sp +コマンドラインで\fI\-new\fRオプションを指定しなかった場合は、新しいパスワードの入力を求められます。 +.RE +.PP +\-delete +.RS 4 +\fI[\-alias alias] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption}\fR +.sp +\fIalias\fRによって特定されるエントリをキーストアから削除します。コマンドラインで別名を指定しなかった場合は、別名の入力を求められます。 +.RE +.PP +\-changealias +.RS 4 +\fI{\-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}\fR +.sp +指定された\fIalias\fRから新しい別名\fIdestalias\fRへ、既存のキーストア・エントリを移動します。ターゲット別名を指定しなかった場合、ターゲット別名の入力を求められます。元のエントリがエントリ・パスワードで保護されていた場合、\fI\-keypass\fRオプションでそのパスワードを指定できます。鍵パスワードが指定されなかった場合、\fIstorepass\fR(指定された場合)がまず試みられます。その試みが失敗すると、ユーザーはパスワードの入力を求められます。 +.RE +.PP +\-help +.RS 4 +基本的なコマンドとそのオプションの一覧を表示します。 +.sp +特定のコマンドの詳細を参照するには、次のように入力してください: +\fIkeytool \-command_name \-help\fR。\fIcommand_name\fRはコマンドの名前です。 +.RE +.SH "例" +.PP +この例では、公開/秘密鍵のペアおよび信頼できるエンティティからの証明書を管理するためのキーストアを作成する手順を示します。 +.SS "鍵のペアの生成" +.PP +まず、キーストアを作成して鍵のペアを生成します。単一行に入力する、次のようなコマンドを使用できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-genkeypair \-dname "cn=Mark Jones, ou=Java, o=Oracle, c=US" + \-alias business \-keypass <new password for private key> + \-keystore /working/mykeystore + \-storepass <new password for keystore> \-validity 180 +.fi +.if n \{\ +.RE +.\} +.PP +コマンドは、workingディレクトリに\fImykeystore\fRという名前のキーストアを作成し(キーストアはまだ存在していないと仮定)、作成したキーストアに、\fI<new password for keystore>\fRで指定したパスワードを割り当てます。生成する公開鍵と秘密鍵のペアに対応するエンティティの「識別名」は、通称がMark Jones、組織単位がJava、組織がOracle、2文字の国番号がUSです。公開鍵と秘密鍵のサイズはどちらも1024ビットで、鍵の作成にはデフォルトのDSA鍵生成アルゴリズムを使用します。 +.PP +このコマンドは、デフォルトのSHA1withDSA署名アルゴリズムを使用して、公開鍵と識別名情報を含む自己署名証明書を作成します。証明書の有効期間は180日です。証明書は、別名\fIbusiness\fRで特定されるキーストア・エントリ内の秘密鍵に関連付けられます。秘密鍵には、\fI<new password for private key>\fRで指定したパスワードが割り当てられます。 +.PP +オプションのデフォルト値を使用する場合、コマンドは大幅に短くなります。この場合、オプションは不要です。デフォルト値を持つオプションでは、オプションを指定しなければデフォルト値が使用されます。必須値の入力を求められます。使用可能な値は次のとおりです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-genkeypair +.fi +.if n \{\ +.RE +.\} +.PP +この場合は、\fImykey\fRという別名でキーストア・エントリが作成され、新しく生成された鍵のペア、および90日間有効な証明書がこのエントリに格納されます。このエントリは、ホーム・ディレクトリ内の\fI\&.keystore\fRという名前のキーストアに置かれます。キーストアは、まだ存在していない場合に作成されます。識別名情報、キーストアのパスワードおよび秘密鍵のパスワードの入力を求められます。 +.PP +以降では、オプションを指定しないで\fI\-genkeypair\fRコマンドを実行したものとして例を示します。情報の入力を求められた場合は、最初に示した\fI\-genkeypair\fRコマンドの値を入力したものとします。たとえば識別名には\fIcn=Mark Jones\fR、\fIou=Java\fR、\fIo=Oracle\fR、\fIc=US\fRと指定します。 +.SS "CAからの署名付き証明書のリクエスト" +.PP +自己署名証明書を作成する鍵のペアの生成。証明書に証明書発行局(CA)の署名が付いていれば、他のユーザーから証明書が信頼される可能性も高くなります。CAの署名を取得するには、まず、証明書署名リクエスト(CSR)を生成します。たとえば、次のようにします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-certreq \-file MarkJ\&.csr +.fi +.if n \{\ +.RE +.\} +.PP +CSR(デフォルト別名\fImykey\fRによって特定されるエンティティのCSR)が作成され、MarkJ\&.csrという名前のファイルに置かれます。このファイルをCA (VeriSignなど)に提出します。CAは要求者を(通常はオフラインで)認証し、要求者の公開鍵を認証した署名付きの証明書を送り返します。場合によっては、CAが証明書のチェーンを返すこともあります。証明書のチェーンでは、各証明書がチェーン内のその前の署名者の公開鍵を認証します。 +.SS "CAからの証明書のインポート" +.PP +作成した自己署名証明書は、証明書チェーンで置き換える必要があります。証明書チェーンでは、各証明書が、「ルート」CAを起点とするチェーン内の次の証明書の署名者の公開鍵を認証します。 +.PP +CAからの証明書応答をインポートするには、キーストアか、\fIcacerts\fRキーストア・ファイル内に1つ以上の信頼できる証明書がある必要があります。\fIの\fR\-importcertコマンドを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +証明応答が証明書チェーンの場合は、チェーンの最上位証明書が必要です。CAの公開鍵を認証するルートCA証明書。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +証明書応答が単一の証明書の場合は、発行CA(署名した)の証明書が必要です。その証明書が自己署名でない場合は、その署名者の証明書が必要であり、このようにして自己署名ルート証明書が必要になります。 +.RE +.PP +\fIcacerts\fRキーストア・ファイルは、いくつかのVeriSignルートCA証明書を含んだ状態で出荷されているので、VeriSignの証明書を、信頼できる証明書としてキーストア内にインポートする必要がない場合があります。ただし、他のCAに対して署名付き証明書をリクエストしていて、このCAの公開鍵を認証する証明書が、\fIcacerts\fRにまだ追加されていない場合は、該当するCAからの証明書を、「信頼できる証明書」としてインポートする必要があります。 +.PP +通常、CAからの証明書は、自己署名証明書、または他のCAによって署名された証明書です(後者の場合は、該当する他のCAの公開鍵を認証する証明書が必要)。ABC, Inc\&.,がCAで、ABCから自己署名証明書であるA\fIBCCA\&.cer\fRという名前のファイルを取得したとします(この証明書はCAの公開鍵を認証します)。信頼できる証明書として証明書をインポートするときは、証明書が有効であることを確認する必要があります。まず、\fIkeytool \-printcert\fRコマンドまたは\fI\-noprompt\fRオプションなしの\fIkeytool \-importcert\fRコマンドでそれを表示し、表示された証明書のフィンガープリントが期待されるものと一致するかどうかを確認します。証明書を送信した人物に連絡し、この人物が提示した(または安全な公開鍵のリポジトリによって提示される)フィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中で他の何者か(攻撃者など)による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのものを信頼することになります。 +.PP +証明書が有効であると信頼する場合は、次のコマンドでキーストアに追加できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-importcert \-alias abc \-file ABCCA\&.cer +.fi +.if n \{\ +.RE +.\} +.PP +ABCCA\&.cerファイルのデータを含む信頼できる証明書のエントリがキーストア内に作成され、該当するエントリに\fIabc\fRという別名が割り当てられます。 +.SS "CAからの証明書応答のインポート" +.PP +証明書署名リクエストの提出先のCAの公開鍵を認証する証明書をインポートした後は(または同種の証明書がすでにcacertsファイル内に存在している場合は)、証明応答をインポートし、自己署名証明書を証明書チェーンで置き換えることができます。このチェーンは、CAの応答がチェーンの場合に、リクエストに対するレスポンスとしてCAから送り返された証明書チェーンです。また、CAの応答が単一の証明書の場合は、この証明応答と、インポート先のキーストア内または\fIcacerts\fRキーストアファイル内にすでに存在する信頼できる証明書とを使用して構築した証明書チェーンです。 +.PP +たとえば、証明書署名リクエストをVeriSignに送信する場合、送り返された証明書の名前がVSMarkJ\&.cerだとすると、次のようにして応答をインポートできます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-importcert \-trustcacerts \-file VSMarkJ\&.cer +.fi +.if n \{\ +.RE +.\} +.SS "公開鍵を認証する証明書のエクスポート" +.PP +\fIjarsigner\fRコマンドを使用してJava Archive (JAR)ファイルに署名する場合、このファイルを使用するクライアントは署名を認証する必要があります。クライアントが署名を認証する方法の1つに、まず自分の公開鍵の証明書を信頼できるエントリとしてクライアントのキーストアにインポートする方法があります。 +.PP +そのためには、証明書をエクスポートして、クライアントに提供します。例として、次のコマンドを使用して、MJ\&.cerという名前のファイルに証明書をコピーできます。このコマンドでは、エントリに別名\fImykey\fRがあると仮定しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-exportcert \-alias mykey \-file MJ\&.cer +.fi +.if n \{\ +.RE +.\} +.PP +証明書と署名付きJARファイルを入手したクライアントは、\fIjarsigner\fRコマンドを使用して署名を認証できます。 +.SS "キーストアのインポート" +.PP +コマンド\fIimportkeystore\fRを使用すれば、あるキーストアの全体を別のキーストア内にインポートできます。これは、鍵や証明書といったソースキーストア内のすべてのエントリが、単一のコマンドを使用してターゲットキーストア内にインポートされることを意味します。このコマンドを使用すれば、異なるタイプのキーストア内に含まれるエントリをインポートすることができます。インポート時には、ターゲット・キーストア内の新しいエントリはすべて、元と同じ別名および(秘密鍵や秘密鍵の場合は)保護用パスワードを持ちます。ソースキーストア内の非公開/秘密鍵をリカバリできない場合、\fIkeytool\fRコマンドはユーザーにパスワードの入力を求めます。このコマンドは、別名の重複を検出すると、ユーザーに新しい別名の入力を求めます。ユーザーは、新しい別名を指定することも、単純に既存の別名の上書きを\fIkeytool\fRコマンドに許可することもできます。 +.PP +たとえば、通常のJKSタイプのキーストアkey\&.jks内のエントリをPKCS#11タイプのハードウェア・ベースのキーストア内にインポートするには、次のコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-importkeystore + \-srckeystore key\&.jks \-destkeystore NONE + \-srcstoretype JKS \-deststoretype PKCS11 + \-srcstorepass <src keystore password> + \-deststorepass <destination keystore pwd> +.fi +.if n \{\ +.RE +.\} +.PP +また、\fIimportkeystore\fRコマンドを使用すれば、あるソース・キーストア内の単一のエントリをターゲット・キーストアにインポートすることもできます。この場合は、前例のオプションに加えて、インポートする別名を指定する必要があります。\fI\-srcalias\fRオプションを指定する場合には、ターゲット別名もコマンドラインから指定できるほか、秘密/秘密鍵の保護用パスワードやターゲット保護用パスワードも指定できます。その方法を示すコマンドを次に示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-importkeystore + \-srckeystore key\&.jks \-destkeystore NONE + \-srcstoretype JKS \-deststoretype PKCS11 + \-srcstorepass <src keystore password> + \-deststorepass <destination keystore pwd> + \-srcalias myprivatekey \-destalias myoldprivatekey + \-srckeypass <source entry password> + \-destkeypass <destination entry password> + \-noprompt +.fi +.if n \{\ +.RE +.\} +.SS "SSLサーバーの証明書の生成" +.PP +次に、3つのエンティティ、つまりルートCA(\fIroot\fR)、中間CA(\fIca\fR)およびSSLサーバー(\fIserver\fR)用の鍵ペアと証明書を生成する\fIkeytool\fRコマンドを示します。すべての証明書を同じキーストアに格納するようにしてください。これらの例では、RSAが推奨される鍵のアルゴリズムです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-genkeypair \-keystore root\&.jks \-alias root \-ext bc:c +keytool \-genkeypair \-keystore ca\&.jks \-alias ca \-ext bc:c +keytool \-genkeypair \-keystore server\&.jks \-alias server + +keytool \-keystore root\&.jks \-alias root \-exportcert \-rfc > root\&.pem + +keytool \-storepass <storepass> \-keystore ca\&.jks \-certreq \-alias ca | + keytool \-storepass <storepass> \-keystore root\&.jks + \-gencert \-alias root \-ext BC=0 \-rfc > ca\&.pem +keytool \-keystore ca\&.jks \-importcert \-alias ca \-file ca\&.pem + +keytool \-storepass <storepass> \-keystore server\&.jks \-certreq \-alias server | + keytool \-storepass <storepass> \-keystore ca\&.jks \-gencert \-alias ca + \-ext ku:c=dig,kE \-rfc > server\&.pem +cat root\&.pem ca\&.pem server\&.pem | + keytool \-keystore server\&.jks \-importcert \-alias server +.fi +.if n \{\ +.RE +.\} +.SH "用語" +.PP +キーストア +.RS 4 +キーストアは、暗号化の鍵と証明書を格納するための機能です。 +.RE +.PP +キーストアのエントリ +.RS 4 +キーストアには異なるタイプのエントリを含めることができます。\fIkeytool\fRコマンドで最も適用範囲の広いエントリ・タイプは、次の2つです。 +.sp +\fB鍵のエントリ\fR +\- 各エントリは、非常に重要な暗号化の鍵の情報を保持します。この情報は、許可していないアクセスを防ぐために、保護された形で格納されます。一般に、この種のエントリとして格納される鍵は、秘密鍵か、対応する公開鍵の証明書チェーンを伴う秘密鍵です。証明書チェーンを参照してください。\fIkeytool\fRコマンドがこの両方のタイプのエントリを処理できるのに対し、\fIjarsigner\fRツールは後者のタイプのエントリ、つまり秘密鍵とそれに関連付けられた証明書チェーンのみを処理します。 +.sp +\fB信頼できる証明書のエントリ\fR: 各エントリは、第三者からの公開鍵証明書を1つ含んでいます。このエントリは、信頼できる証明書と呼ばれます。それは、証明書内の公開鍵が、証明書のSubject(所有者)によって特定されるアイデンティティに由来するものであることを、キーストアの所有者が信頼するからです。証明書の発行者は、証明書に署名を付けることによって、その内容を保証します。 +.RE +.PP +キーストアの別名 +.RS 4 +キーストアのすべてのエントリ(鍵および信頼できる証明書エントリ)は、一意の別名を介してアクセスされます。 +.sp +別名を指定するのは、\fI\-genseckey\fRコマンドを使用して秘密鍵を生成したり、\fI\-genkeypair\fRコマンドを使用して鍵ペア(公開鍵と秘密鍵)を生成したり、\fI\-importcert\fRコマンドを使用して証明書または証明書チェーンを信頼できる証明書のリストに追加するなど、特定のエンティティをキーストアに追加する場合です。これ以後、\fIkeytool\fRコマンドでエンティティを参照する場合は、このときに指定した別名を使用する必要があります。 +.sp +たとえば、\fIduke\fRという別名を使用して新しい公開鍵と秘密鍵のペアを生成し、公開鍵を自己署名証明書でラップするとします。この場合は、次のコマンドを実行します。証明書チェーンを参照してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-genkeypair \-alias duke \-keypass dukekeypasswd +.fi +.if n \{\ +.RE +.\} +この例では、初期パスワードとして\fIdukekeypasswd\fRを指定しています。以後、別名\fIduke\fRに関連付けられた秘密鍵にアクセスするコマンドを実行するときは、このパスワードが必要になります。Dukeの秘密鍵のパスワードをあとから変更するには、次のコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-keypasswd \-alias duke \-keypass dukekeypasswd \-new newpass +.fi +.if n \{\ +.RE +.\} +パスワードが、\fIdukekeypasswd\fRから\fInewpass\fRに変更されます。テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンドラインやスクリプトでパスワードを指定しないでください。必要なパスワードのオプションをコマンドラインで指定しなかった場合は、パスワードの入力を求められます。 +.RE +.PP +キーストアの実装 +.RS 4 +\fIjava\&.security\fRパッケージで提供されている\fIKeyStore\fRクラスは、キーストア内の情報へのアクセスおよび情報の変更を行うための、明確に定義されたインタフェースを提供します。キーストアの固定実装としては、それぞれが特定のタイプのキーストアを対象とする複数の異なる実装が存在可能です。 +.sp +現在、\fIkeytool\fRと\fIjarsigner\fRの2つのコマンドライン・ツールと、Policy Toolという名前のGUIベースのツールが、キーストアの実装を使用しています。\fIKeyStore\fRクラスは\fIpublic\fRであるため、ユーザーはKeyStoreを使用した他のセキュリティ・アプリケーションも作成できます。 +.sp +キーストアには、Oracleが提供する組込みのデフォルトの実装があります。これは、JKSという名前の独自のキーストア・タイプ(形式)を利用するもので、キーストアをファイルとして実装しています。この実装では、個々の秘密鍵は個別のパスワードによって保護され、キーストア全体の整合性も(秘密鍵とは別の)パスワードによって保護されます。 +.sp +キーストアの実装は、プロバイダベースです。具体的には、\fIKeyStore\fRによって提供されるアプリケーション・インタフェースがサービス・プロバイダ・インタフェース(SPI)に基づいて実装されます。つまり、対応する\fIKeystoreSpi\fR抽象クラス(これも\fIjava\&.security\fRパッケージに含まれています)があり、このクラスが、プロバイダが実装する必要のあるService Provider Interfaceのメソッドを定義しています。ここで、\fIプロバイダ\fRとは、Java Security APIによってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。キーストアの実装を提供するには、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider\&.htmlにある +Java暗号化アーキテクチャのプロバイダの実装方法で説明しているように、クライアントはプロバイダを実装し、\fIKeystoreSpi\fRサブクラスの実装を提供する必要があります。 +.sp +アプリケーションでは、\fIKeyStore\fRクラスが提供する\fIgetInstance\fRファクトリ・メソッドを使用することで、様々なプロバイダから異なるタイプのキーストアの実装を選択できます。キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の非公開/秘密鍵とキーストアの整合性を保護するために使用されるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。 +.sp +\fIkeytool\fRコマンドは、任意のファイルベースのキーストア実装で動作します。コマンド・ラインで渡されたキーストアの場所をファイル名として扱って、\fIFileInputStream\fRに変換し、ここからキーストア情報をロードします。\fIjarsigner\fRおよび\fIpolicytool\fRコマンドは、URLで指定できる任意の場所からキーストアを読み取ることができます。 +.sp +\fIkeytool\fRと\fIjarsigner\fRの場合、\fI\-storetype\fRオプションを使用してコマンドラインでキーストアのタイプを指定できます。Policy Toolの場合は、「キーストア」メニューによってキーストアのタイプを指定できます。 +.sp +ユーザーがキーストアのタイプを明示的に指定しなかった場合、セキュリティ・プロパティ・ファイルで指定された\fIkeystore\&.type\fRプロパティの値に基づいて、ツールによってキーストアの実装が選択されます。このセキュリティ・プロパティ・ファイルは\fIjava\&.security\fRと呼ばれ、Windowsではセキュリティ・プロパティ・ディレクトリ\fIjava\&.home\elib\esecurity\fR、Oracle Solarisでは\fIjava\&.home/lib/security\fRにあります。\fIjava\&.home\fRは、実行時環境のディレクトリです。\fIjre\fRディレクトリは、SDKまたはJava Runtime Environment (JRE)の最上位のディレクトリにあります。 +.sp +各ツールは、\fIkeystore\&.type\fRの値を取得し、この値で指定されたタイプのキーストアを実装しているプロバイダが見つかるまで、現在インストールされているすべてのプロバイダを調べます。そのプロバイダからのキーストアの実装を使用します。\fIKeyStore\fRクラスに定義されているstaticメソッド\fIgetDefaultType\fRを使用すると、アプリケーションやアプレットから\fIkeystore\&.type\fRプロパティの値を取得できます。次のコードは、デフォルトのキーストア・タイプ(\fIkeystore\&.type\fRプロパティで指定されたタイプ)のインスタンスを生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +KeyStore keyStore = KeyStore\&.getInstance(KeyStore\&.getDefaultType()); +.fi +.if n \{\ +.RE +.\} +デフォルトのキーストア・タイプは\fIjks\fRで、これはOracleが提供する独自のタイプのキーストアの実装です。これは、セキュリティ・プロパティ・ファイル内の次の行によって指定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keystore\&.type=jks +.fi +.if n \{\ +.RE +.\} +各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。たとえば、\fIpkcs12\fRと呼ばれるキーストアのタイプのキーストアの実装を提供するプロバイダ・パッケージがある場合、行を次のように変更します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keystore\&.type=pkcs12 +.fi +.if n \{\ +.RE +.\} +\fB注意:\fR +キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、JKSとjksは同じものとして扱われます。 +.RE +.PP +証明書 +.RS 4 +証明書(公開鍵証明書)とは、あるエンティティ(発行者)からのデジタル署名付きの文書のことです。証明書には、他のあるエンティティ(署名者)の公開鍵(およびその他の情報)が特別な値を持っていることが書かれています。次の用語は、証明書に関連しています。 +.sp +\fB公開鍵\fR: 公開鍵は、特定のエンティティに関連付けられた数です。公開鍵は、該当するエンティティとの間に信頼できる関係を持つ必要があるすべての人に対して公開することを意図したものです。公開鍵は、署名を検証するのに使用されます。 +.sp +\fBデジタル署名\fR: データがデジタル署名されると、そのデータは、エンティティのアイデンティティと、そのエンティティがデータの内容について知っていることを証明書する署名とともに格納されます。エンティティの秘密鍵を使用してデータに署名を付けると、データの偽造は不可能になります。 +.sp +\fBアイデンティティ\fR: エンティティをアドレス指定する既知の方法。システムによっては、公開鍵をアイデンティティにするものがあります。公開鍵の他にも、Oracle Solaris UIDや電子メール・アドレス、X\&.509識別名など、様々なものをアイデンティティとすることができます。 +.sp +\fB署名\fR: 署名は、なんらかのデータを基にエンティティの秘密鍵を使用して計算されます。署名者、証明書の場合は発行者とも呼ばれます。 +.sp +\fB秘密鍵\fR: 秘密鍵は特定のエンティティのみが知っている数のことで、この数のことを、そのエンティティの秘密鍵といいます。秘密鍵は、他に知られないように秘密にしておくことが前提になっています。秘密鍵と公開鍵は、すべての公開鍵暗号化システムで対になって存在しています。DSAなどの典型的な公開鍵暗号化システムの場合、1つの秘密鍵は正確に1つの公開鍵に対応します。秘密鍵は、署名を計算するのに使用されます。 +.sp +\fBエンティティ\fR: エンティティは、人、組織、プログラム、コンピュータ、企業、銀行など、一定の度合いで信頼の対象となる様々なものを指します。 +.sp +公開鍵暗号化では、ユーザーの公開鍵にアクセスする必要があります。大規模なネットワーク環境では、互いに通信しているエンティティ間で以前の関係が引続き確立されていると仮定したり、使用されているすべての公開鍵を収めた信頼できるリポジトリが存在すると仮定したりすることは不可能です。このような公開鍵の配布に関する問題を解決するために証明書が考案されました。現在では、証明書発行局(CA)が信頼できる第三者として機能します。CAは、他のエンティティの証明書に署名する(発行する)行為を、信頼して任されているエンティティ(企業など)です。CAは法律上の契約に拘束されるので、有効かつ信頼できる証明書のみを作成するものとして扱われます。VeriSign、Thawte、Entrustをはじめ、多くの公的な証明書発行局が存在します。 +.sp +Microsoftの認証サーバー、EntrustのCA製品などを所属組織内で利用すれば、独自の証明書発行局を運営することも可能です。\fIkeytool\fRコマンドを使用すると、証明書の表示、インポートおよびエクスポートを行うことができます。また、自己署名証明書を生成することもできます。 +.sp +現在、\fIkeytool\fRコマンドはX\&.509証明書を対象にしています。 +.RE +.PP +X\&.509証明書 +.RS 4 +X\&.509規格では、証明書に含める情報が定義されており、この情報を証明書に書き込む方法(データ形式)についても記述されています。証明書のすべてのデータは、ASN\&.1/DERと呼ばれる2つの関連規格を使用して符号化されます。Abstract Syntax Notation 1はデータについて記述しています。Definite Encoding Rulesは、データの保存および転送の方法について記述しています。 +.sp +すべてのX\&.509証明書は、署名の他に次のデータを含んでいます。 +.sp +\fBバージョン\fR: 証明書に適用されるX\&.509規格のバージョンを特定します。証明書に指定できる情報は、バージョンによって異なります。今のところ、3つのバージョンが定義されています。\fIkeytool\fRコマンドでは、v1、v2、v3の証明書をインポートおよびエクスポートできます。v3の証明書を生成します。 +.sp +X\&.509 Version 1は、1988年から利用されて広く普及しており、最も一般的です。 +.sp +X\&.509 Version 2では、Subjectや発行者の名前をあとで再利用できるようにするために、Subjectと発行者の一意識別子の概念が導入されました。ほとんどの証明書プロファイル文書では、名前を再使用しないことと、証明書で一意の識別子を使用しないことが、強く推奨されています。Version 2の証明書は、広くは使用されていません。 +.sp +X\&.509 Version 3は最も新しい(1996年)規格で、エクステンションの概念をサポートしています。エクステンションは誰でも定義することができ、証明書に含めることができます。一般的なエクステンションとしては、KeyUsage(\fI署名専用\fRなど、鍵の使用を特定の目的に制限する)、AlternativeNames(DNS名、電子メール・アドレス、IPアドレスなど、他のアイデンティティを公開鍵に関連付けることができる)などがあります。エクステンションには、criticalというマークを付けて、そのエクステンションのチェックと使用を義務づけることができます。たとえば、criticalとマークされ、\fIkeyCertSign\fRが設定されたKeyUsageエクステンションが証明書に含まれている場合、この証明書をSSL通信中に提示すると、証明書が拒否されます。これは、証明書のエクステンションによって、関連する秘密鍵が証明書の署名専用として指定されており、SSLでは使用できないためです。 +.sp +\fBシリアル番号\fR: 証明書を作成したエンティティは、そのエンティティが発行する他の証明書と区別するために、証明書にシリアル番号を割り当てます。この情報は、様々な方法で使用されます。たとえば、証明書が取り消されると、シリアル番号が証明書失効リスト(CRL)に格納されます。 +.sp +\fB証明書アルゴリズム識別子\fR: 証明書に署名を付けるときにCAが使用したアルゴリズムを特定します。 +.sp +\fB発行者名\fR: 証明書に署名を付けたエンティティのX\&.500識別名です。X\&.500識別名を参照してください。通常はCAです。この証明書を使用することは、証明書に署名を付けたエンティティを信頼することを意味します。ルートつまりトップレベルのCAの証明書など、場合によっては発行者が自身の証明書に署名を付けることがあります。 +.sp +\fB有効期間\fR: 各証明書は限られた期間のみ有効です。この期間は開始の日時と終了の日時によって指定され、数秒の短い期間から100年という長期にわたることもあります。選択される有効期間は、証明書への署名に使用される秘密鍵の強度や証明書に支払う金額など、様々な要因で異なります。有効期間は、関連する秘密鍵が損われない場合に、エンティティが公開鍵を信頼できると期待される期間です。 +.sp +\fB主体名\fR: 証明書で公開鍵を認証するエンティティの名前。この名前はX\&.500標準を使用するので、インターネット全体で一意なものと想定されます。これは、エンティティのX\&.500識別名(DN)です。X\&.500識別名を参照してください。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CN=Java Duke, OU=Java Software Division, O=Oracle Corporation, C=US +.fi +.if n \{\ +.RE +.\} +これらはそれぞれ主体の通称(CN)、組織単位(OU)、組織(O)、国(C)を表します。 +.sp +\fB主体の公開鍵情報\fR: 名前を付けられたエンティティの公開鍵とアルゴリズム識別子です。アルゴリズム識別子では、公開鍵に対して使用されている公開鍵暗号化システムおよび関連する鍵パラメータが指定されています。 +.RE +.PP +証明書チェーン +.RS 4 +\fIkeytool\fRコマンドでは、秘密鍵および関連する証明書チェーンを含むキーストアの鍵エントリを作成し、管理することができます。このようなエントリでは、秘密鍵に対応する公開鍵は、チェーンの最初の証明書に含まれています。 +.sp +鍵を初めて作成すると、自己署名証明書という1つの要素のみを含むチェーンが開始されます。\fIの\fR\-genkeypairコマンドを参照してください。自己署名証明書は発行者(署名者)が主体と同じです。主体は、その公開鍵が証明書によって認証されるエンティティです。\fI\-genkeypair\fRコマンドを呼び出して新しい公開鍵と秘密鍵のペアを作成すると、公開鍵は常に自己署名証明書でラップされます。 +.sp +この後、証明書署名リクエスト(CSR)が\fI\-certreq\fRコマンドで生成されて、CSRが証明書発行局(CA)に送信されると、CAからのレスポンスが\fI\-importcert\fRでインポートされ、元の自己署名証明書は証明書チェーンによって置き換えられます。コマンドの\fI\-certreq\fRおよび\fI\-importcert\fRオプションを参照してください。チェーンの最後にあるのは、Subjectの公開鍵を認証したCAが発行した証明書(応答)です。チェーン内のその前の証明書は、CAの公開鍵を認証する証明書です。 +.sp +CAの公開鍵を認証する証明書は、多くの場合、自己署名証明書(つまりCAが自身の公開鍵を認証した証明書)であり、これはチェーンの最初の証明書になります。場合によっては、CAが証明書のチェーンを返すこともあります。この場合、チェーン内の最後の証明書(CAによって署名され、鍵エントリの公開鍵を認証する証明書)に変わりはありませんが、チェーン内のその前の証明書は、CSRの送信先のCAとは別のCAによって署名され、CSRの送信先のCAの公開鍵を認証する証明書になります。チェーン内のその前の証明書は、次のCAの鍵を認証する証明書になります。以下同様に、自己署名された「ルート」証明書に達するまでチェーンが続きます。したがって、チェーン内の(最初の証明書以後の)各証明書では、チェーン内の次の証明書の署名者の公開鍵が認証されていることになります。 +.sp +多くのCAは、チェーンをサポートせずに発行済の証明書のみを返します。特に、中間のCAが存在しないフラットな階層構造の場合は、その傾向が顕著です。このような場合は、キーストアにすでに格納されている信頼できる証明書情報から、証明書チェーンを確立する必要があります。 +.sp +別の応答形式(PKCS#7で定義されている形式)では、発行済証明書に加え、証明書チェーンのサポートが含まれています。\fIkeytool\fRコマンドでは、どちらの応答形式も扱うことができます。 +.sp +トップレベル(ルート)CAの証明書は、自己署名証明書です。ただし、ルートの公開鍵への信頼は、ルート証明書自体からではなく、新聞など他のソースから取得されます。これは、VeriSignルートCAなどの識別名を使用して、誰でも自己署名型証明書を生成できるためです。ルートCAの公開鍵は広く知られています。ルートCAの公開鍵を証明書に格納する理由は、証明書という形式にすることで多くのツールから利用できるようになるからにすぎません。つまり、証明書は、ルートCAの公開鍵を運ぶ「媒体」として利用されるのみです。ルートCAの証明書をキーストアに追加するときは、\fI\-printcert\fRオプションを使用して、その前に証明書の内容を表示し、表示されたフィンガープリントと、新聞やルートCAのWebページなどから入手した既知のフィンガープリントとを比較する必要があります。 +.RE +.PP +cacerts証明書ファイル +.RS 4 +\fIcacerts\fRという名前の証明書ファイルは、Windowsではセキュリティ・プロパティ・ディレクトリ\fIjava\&.home\elib\esecurity\fR、Oracle Solarisでは\fIjava\&.home/lib/security\fRに置かれています。\fIjava\&.home\fRは、実行環境のディレクトリ(SDKの\fIjre\fRディレクトリまたはJREの最上位ディレクトリ)です。 +.sp +\fIcacerts\fRファイルは、CAの証明書を含む、システム全体のキーストアです。システム管理者は、キーストア・タイプに\fIjks\fRを指定することで、\fIkeytool\fRコマンドを使用してこのファイルの構成と管理を行うことができます。\fIcacerts\fRキーストア・ファイルは、ルートCA証明書のデフォルト・セットを含んだ状態で出荷されています。デフォルトの証明書を一覧表示するには、次のコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-list \-keystore java\&.home/lib/security/cacerts +.fi +.if n \{\ +.RE +.\} +\fIcacerts\fRキーストア・ファイルの初期パスワードは、\fIchangeit\fRです。システム管理者は、SDKのインストール後、このファイルのパスワードとデフォルト・アクセス権を変更する必要があります。 +.sp +\fB注意:\fR +\fIcacerts\fRファイルを確認することが重要です。\fIcacerts\fRファイル内のCAは、署名および他のエンティティへの証明書発行のためのエンティティとして信頼されるため、\fIcacerts\fRファイルの管理は慎重に行う必要があります。\fIcacerts\fRファイルには、信頼するCAの証明書のみが含まれている必要があります。ユーザーは、自身の責任において、\fIcacerts\fRファイルにバンドルされている信頼できるルートCA証明書を検証し、信頼性に関する独自の決定を行います。 +.sp +信頼できないCA証明書を\fIcacerts\fRファイルから削除するには、\fIkeytool\fRコマンドの\fIdelete\fRオプションを使用します。\fIcacerts\fRファイルはJREのインストール・ディレクトリにあります。このファイルを編集するアクセス権がない場合は、システム管理者に連絡してください +.RE +.PP +インターネットRFC 1421証明書符号化規格 +.RS 4 +多くの場合、証明書は、バイナリ符号化ではなく、インターネットRFC 1421規格で定義されている出力可能符号化方式を使用して格納されます。Base 64符号化とも呼ばれるこの証明書形式では、電子メールやその他の機構を通じて、他のアプリケーションに証明書を容易にエクスポートできます。 +.sp +\fI\-importcert\fRと\fI\-printcert\fRコマンドでは、この形式の証明書とバイナリ符号化の証明書を読み込むことができます。\fI\-exportcert\fRコマンドでは、デフォルトでバイナリ符号化の証明書が出力されます。ただし、\fI\-rfc\fRオプションを指定した場合は、出力可能符号化方式の証明書が出力されます。 +.sp +\fI\-list\fRコマンドでは、デフォルトで証明書のSHA1フィンガープリントが出力されます。\fI\-v\fRオプションが指定されている場合、証明書は人が理解できる形式で出力されます。\fI\-rfc\fRオプションが指定されている場合、証明書は出力可能符号化方式で出力されます。 +.sp +出力可能符号化方式で符号化された証明書は、次のテキストで始まり、次のテキストで終了します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\- + +encoded certificate goes here\&. + +\-\-\-\-\-END CERTIFICATE\-\-\-\-\- +.fi +.if n \{\ +.RE +.\} +.RE +.PP +X\&.500識別名 +.RS 4 +X\&.500識別名は、エンティティを特定するために使用されます。たとえば、X\&.509証明書の\fIsubject\fRフィールドと\fIissuer\fR(署名者)フィールドで指定される名前は、X\&.500識別名です。\fIkeytool\fRコマンドは、次のサブパートをサポートしています。 +.sp +\fBcommonName\fR: Susan Jonesなど、人の通称。 +.sp +\fBorganizationUnit\fR: 小さな組織(部、課など)の名称。Purchasingなどです。 +.sp +\fBlocalityName\fR: 地域(都市)名。Palo Altoなど。 +.sp +\fBstateName\fR: 州名または地方名。Californiaなど。 +.sp +\fBcountry\fR: 2文字の国コード。CHなど。 +.sp +識別名文字列を\fI\-dname\fRオプションの値として指定する場合(たとえば\fI\-genkeypair\fRコマンドに)、文字列は次の形式にする必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CN=cName, OU=orgUnit, O=org, L=city, S=state, C=countryCode +.fi +.if n \{\ +.RE +.\} +イタリック体の項目は、実際に指定する値を表します。短縮形のキーワードの意味は、次のとおりです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CN=commonName +OU=organizationUnit +O=organizationName +L=localityName +S=stateName +C=country +.fi +.if n \{\ +.RE +.\} +次に示すのは、識別名文字列の例です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, S=California, C=US +.fi +.if n \{\ +.RE +.\} +この文字列を使用したコマンドの例です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-genkeypair \-dname "CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, +S=California, C=US" \-alias mark +.fi +.if n \{\ +.RE +.\} +キーワードの短縮形では、大文字と小文字は区別されません。たとえば、CN、cnおよびCnは、どれも同じものとして扱われます。 +.sp +一方、キーワードの指定順序には意味があり、各サブコンポーネントは上に示した順序で指定する必要があります。ただし、サブコンポーネントをすべて指定する必要はありません。たとえば、次のように一部のサブコンポーネントのみを指定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CN=Steve Meier, OU=Java, O=Oracle, C=US +.fi +.if n \{\ +.RE +.\} +識別名文字列の値にカンマが含まれる場合に、コマンドラインで文字列を指定するときには、次のようにカンマをバックスラッシュ文字(\e)でエスケープする必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +cn=Peter Schuster, ou=Java\e, Product Development, o=Oracle, c=US +.fi +.if n \{\ +.RE +.\} +識別名文字列をコマンドラインで指定する必要はありません。識別名を必要とするコマンドを実行するときに、コマンドラインで識別名を指定しなかった場合は、各サブコンポーネントの入力を求められます。この場合は、カンマをバックスラッシュ(\e)でエスケープする必要はありません。 +.RE +.SH "警告" +.SS "信頼できる証明書のインポート警告" +.PP +\fB重要\fR: 信頼できる証明書として証明書をインポートする前に、証明書の内容を慎重に調べてください。 +Windowsの例:.PP +まず、\fI\-noprompt\fRオプションを指定せずに\fI\-printcert\fRコマンドまたは\fI\-importcert\fRコマンドを使用して、証明書を表示します。表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致することを確認します。たとえば、証明書が送られてきて、この証明書を\fI\etmp\ecert\fRという名前でファイルに格納しているとします。この場合は、信頼できる証明書のリストにこの証明書を追加する前に、\fI\-printcert\fRコマンドを実行してフィンガープリントを表示できます。たとえば、次のようにします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + keytool \-printcert \-file \etmp\ecert + Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll + Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll + Serial Number: 59092b34 + Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997 + Certificate Fingerprints: + MD5: 11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F + SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE + SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90: + 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4 +.fi +.if n \{\ +.RE +.\} +Oracle Solarisの例:.PP +まず、\fI\-noprompt\fRオプションを指定せずに\fI\-printcert\fRコマンドまたは\fI\-importcert\fRコマンドを使用して、証明書を表示します。表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致することを確認します。たとえば、あるユーザーから証明書が送られてきて、この証明書を\fI/tmp/cert\fRという名前でファイルに格納しているとします。この場合は、信頼できる証明書のリストにこの証明書を追加する前に、\fI\-printcert\fRコマンドを実行してフィンガープリントを表示できます。たとえば、次のようにします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + keytool \-printcert \-file /tmp/cert + Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll + Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll + Serial Number: 59092b34 + Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997 + Certificate Fingerprints: + MD5: 11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F + SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE + SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90: + 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4 +.fi +.if n \{\ +.RE +.\} +.PP +次に、証明書を送信した人物に連絡し、この人物が提示したフィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中で他の何者か(攻撃者など)による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのもの(攻撃的意図を持つクラス・ファイルを含んだJARファイルなど)を信頼することになります。 +.PP +\fB注意:\fR +証明書をインポートする前に\fI\-printcert\fRコマンドを実行する必要はありません。キーストア内の信頼できる証明書のリストに証明書を追加する前に、\fI\-importcert\fRコマンドによって証明書の情報が表示され、確認を求めるメッセージが表示されるためです。ユーザーはインポート操作を停止できます。ただし、これを実行できるのは、\fI\-noprompt\fRオプションを指定せずに\fI\-importcert\fRコマンドを呼び出す場合のみです。\fI\-noprompt\fRオプションが指定されている場合、ユーザーとの対話は行われません。 +.SS "パスワード警告" +.PP +キーストアに対する操作を行うほとんどのコマンドでは、ストアのパスワードが必要です。また、一部のコマンドでは、非公開/秘密鍵のパスワードが必要になることがあります。パスワードはコマンドラインで指定できます(\fI\-storepass\fRオプションと\fI\-keypass\fRオプションを使用)。ただし、テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンドラインやスクリプトでパスワードを指定しないでください。必要なパスワードのオプションをコマンドラインで指定しなかった場合は、パスワードの入力を求められます。 +.SS "証明書の準拠に関する警告" +.PP +インターネット標準RFC 5280では、X\&.509証明書の準拠に関するプロファイルが定義されており、証明書のフィールドおよびエクステンションに有効な値および値の組合せが記載されています。標準については、 +http://tools\&.ietf\&.org/rfc/rfc5280\&.txtを参照してください +.PP +\fIkeytool\fRコマンドでは、これらのルールすべてが適用されるわけではないため、標準に準拠しない証明書を生成できます。標準に準拠しない証明書は、JREや他のアプリケーションで拒否されることがあります。ユーザーは、\fI\-dname\fRや\fI\-ext\fRなどで適正なオプションを指定するようにしてください。 +.SH "注意" +.SS "新しい信頼できる証明書のインポート" +.PP +\fIkeytool\fRコマンドは、キーストアに証明書を追加する前に、キーストア内にすでに存在する信頼できる証明書を使用して、インポートする証明書から(ルートCAの)自己署名証明書に至るまでの信頼のチェーンの構築を試みます。 +.PP +\fI\-trustcacerts\fRオプションを指定した場合、追加の証明書は信頼できるすなわち\fIcacerts\fRという名前のファイルに含まれる証明書のチェーンとみなされます。 +.PP +\fIkeytool\fRコマンドが、インポートする証明書から自己署名証明書(キーストアまたは\fIcacerts\fRファイルに含まれている自己署名証明書)に至るまでの信頼のパスの構築に失敗した場合は、インポートする証明書の情報を表示し、ユーザーに確認を求めます。この場合は、表示された証明書のフィンガープリントと、他のなんらかの(信頼できる)情報源(証明書の所有者など)から入手したフィンガープリントとを比較します。信頼できる証明書として証明書をインポートするときは、証明書が有効であることを慎重に確認する必要があります。信頼できる証明書のインポート警告を参照してください。インポート操作は、証明書を確認する時点で中止できます。\fI\-noprompt\fRオプションが指定されている場合、ユーザーとの対話は行われません。 +.SS "証明書応答のインポート" +.PP +証明書応答をインポートするときは、キーストア内の信頼できる証明書、および(\fI\-trustcacert\fR\fIs\fRオプションが指定されている場合は)\fIcacerts\fRキーストア・ファイルで構成された証明書を使用して証明書応答が検査されます。cacerts証明書ファイルを参照してください。 +.PP +証明書応答が信頼できるかどうかを決定する方法は次のとおりです。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +証明書応答が単一のX\&.509証明書である場合、\fIkeytool\fRコマンドは、証明書応答から(ルートCAの)自己署名証明書に至るまでの信頼チェーンの確立を試みます。証明書応答と、証明書応答の認証に使用される証明書の階層構造は、aliasの新しい証明書チェーンを形成します。信頼チェーンが確立されない場合、証明書応答はインポートされません。この場合、\fIkeytool\fRコマンドは証明書を出力せず、ユーザーに検証を求めるプロンプトを表示します。ユーザーが証明書応答の信頼性を判断するのは非常に難しいためです。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +証明書応答がPKCS#7形式の証明書チェーンまたは一連のX\&.509証明書である場合、チェーンは、ユーザーの証明書が最初に、0以上のCA証明書がその次にくるように並べられます。チェーンが自己署名のルートCA証明書で終わり、\fI \-trustcacerts\fRオプションが指定されている場合、\fIkeytool\fRコマンドは、その証明書と、キーストア内または\fIcacerts\fRキーストア・ファイル内の信頼できるすべての証明書を照合しようとします。チェーンが自己署名のルートCA証明書で終わっておらず、\fI\-trustcacerts\fRオプションが指定されている場合、\fIkeytool\fRコマンドは、キーストア内または\fIcacerts\fRキーストア・ファイル内の信頼できる証明書から自己署名のルートCA証明書を見つけてそれをチェーンの末尾に追加しようとします。その証明書が見つからず、\fI\-noprompt\fRオプションが指定されていない場合は、チェーン内の最後の証明書の情報が出力され、ユーザーは確認を求められます。 +.RE +.PP +証明書応答内の公開鍵が\fIalias\fRですでに格納されているユーザーの公開鍵に一致した場合、古い証明書チェーンが応答内の新しい証明書チェーンで置き換えられます。以前の証明書チェーンを有効な\fIkeypass\fRで置き換えることができるのは、エントリの秘密鍵を保護するためのパスワードを指定した場合のみです。パスワードを指定しておらず、秘密鍵のパスワードがキーストアのパスワードと異なる場合は、秘密鍵のパスワードの入力を求められます。 +.PP +このコマンドは、以前のリリースでは\fI\-import\fRという名前でした。このリリースでは、引き続き古い名前がサポートされています。今後は、新しい名前\fI\-importcert\fRが優先されます。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jarsigner(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/tutorial/security/index\&.htmlにある +「コース: Java SEのセキュリティ機能」 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/native2ascii.1 b/jdk/src/linux/doc/man/ja/native2ascii.1 index 89b6f6c3be4..f8bdb8ebd49 100644 --- a/jdk/src/linux/doc/man/ja/native2ascii.1 +++ b/jdk/src/linux/doc/man/ja/native2ascii.1 @@ -1,72 +1,98 @@ -." 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 -." 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 native2ascii 1 "07 May 2011" - -.LP -.SH "名前" -native2ascii \- ネイティブ \- ASCII コンバータ -.LP -.LP -サポートされる文字エンコーディングの文字のファイルを ASCII または Unicode エスケープあるいはその両方のファイルに変換します。その逆の変換も行います。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: native2ascii +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 国際化ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "native2ascii" "1" "2013年11月21日" "JDK 8" "国際化ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +native2ascii \- サポートされている任意の文字エンコーディングの文字を含むファイルを、ASCIIおよびUnicodeでエスケープされたファイルに変換して(またはその逆)、ローカライズ可能なアプリケーションを作成します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f4native2ascii\fP\f2 [options] [inputfile [outputfile]]\fP -.fl +\fInative2ascii\fR [ \fIinputfile\fR ] [ \fIoutputfile\fR ] .fi - -.LP -.SH "説明" -.LP -.LP -\f2native2ascii\fP Java 実行環境でサポートされる文字エンコーディングにエンコードされたファイルを、ASCII でエンコードされたファイルに変換します。ASCII 文字セットの一部でないすべての文字で Unicode エスケープ (「\\uxxxx」の表記) を使用します。このプロセスは、ISO\-8859\-1 文字セットに含まれない文字が含まれているプロパティーファイルで必要です。このツールは、その逆の変換を実行することもできます。 -.LP -.LP -\f2outputfile\fP を省略した場合、標準出力に出力されます。さらに、 \f2inputfile\fP を省略した場合、標準入力から入力されます。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -\-reverse -逆の処理を行います。つまり、ISO\-8859\-1 で Unicode エスケープを使ってエンコードされたファイルを、Java 実行環境でサポートされる文字エンコーディングのファイルに変換します。 -.br -.br -.TP 3 -\-encoding encoding_name -変換処理で使用する文字エンコーディングの名前を指定します。このオプションが存在しない場合は、デフォルトの文字エンコーディング ( \f2java.nio.charset.Charset.defaultCharset\fP メソッドで定義される) が使用されます。 \f2encoding_name\fP 文字列は、 -.na -\f4「サポートされている文字列エンコーディング」\fP @ -.fi -http://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 バイトに設定されます。 +.if n \{\ .RE - -.LP - +.\} +.PP +\fIinputfile\fR +.RS 4 +ASCIIに変換するエンコードされたファイル。 +.RE +.PP +\fIoutputfile\fR +.RS 4 +変換されたASCIIファイル。 +.RE +.SH "説明" +.PP +\fInative2ascii\fRコマンドは、ASCIIキャラクタ・セットに含まれないすべての文字にUnicodeエスケープ(\fI\eu\fR\fIxxxx\fR)表記法を使用して、Java Runtime Environment (JRE)でサポートされているエンコードされたファイルを、ASCIIでエンコードされたファイルに変換します。このプロセスは、ISO\-8859\-1文字セットに含まれない文字が含まれているプロパティ・ファイルで必要です。このツールは、その逆の変換を実行することもできます。 +.PP +\fIoutputfile\fR値を省略した場合、標準出力に出力されます。さらに、\fIinputfile\fR値を省略した場合、標準入力から入力されます。 +.SH "オプション" +.PP +\-reverse +.RS 4 +逆の処理を行います。つまり、ISO\-8859\-1でUnicodeエスケープを使用してエンコードされたファイルを、JREでサポートされる文字エンコーディングのファイルに変換します。 +.RE +.PP +\-encoding \fIencoding_name\fR +.RS 4 +変換処理で使用する文字エンコーディングの名前を指定します。このオプションが存在しない場合は、デフォルトの文字エンコーディング(\fIjava\&.nio\&.charset\&.Charset\&.defaultCharset\fRメソッドで定義された)が使用されます。\fIencoding_name\fR文字列は、JREでサポートされている文字エンコーディングの名前にする必要があります。http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/intl/encoding\&.doc\&.htmlにある +「サポートされているエンコーディング」を参照してください +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシン(JVM)に\fIoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/orbd.1 b/jdk/src/linux/doc/man/ja/orbd.1 index b78927f5655..849257b14e2 100644 --- a/jdk/src/linux/doc/man/ja/orbd.1 +++ b/jdk/src/linux/doc/man/ja/orbd.1 @@ -1,368 +1,277 @@ -." 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 -." 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 orbd 1 "07 May 2011" - -.LP -.SH "名前" -orbd \- The Object Request Broker Daemon -.LP -.LP -\f3orbd\fP は、クライアントから CORBA 環境のサーバーにある持続オブジェクトを透過的に検索して呼び出すために使用します。 -.LP -.LP -\f3関連項目:\fP -.na -\f2ネームサービス\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: orbd +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java IDLおよびRMI-IIOPツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "orbd" "1" "2013年11月21日" "JDK 8" "Java IDLおよびRMI-IIOPツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +orbd \- CORBA環境のサーバーにある永続オブジェクトをクライアントから検索して呼び出せるようにします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -orbd <\fP\f3options\fP\f3> -.fl -\fP +\fIorbd\fR [ \fIoptions\fR ] .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE .SH "説明" -.LP -.LP -\f3orbd\fP ツールに含まれるサーバーマネージャーを使うと、クライアントは CORBA 環境でサーバー上にある持続オブジェクトを透過的に検索して呼び出すことができます。持続サーバーは、ネームサービスに持続オブジェクト参照を発行する際、サーバーのポート番号の代わりに OBRD のポート番号をオブジェクト参照に含めます。持続オブジェクト参照のオブジェクト参照に ORBD ポート番号を含めることには、次のような利点があります。 -.LP -.RS 3 -.TP 2 -o -ネームサービスにあるオブジェクト参照が、サーバーのライフタイムと無関係になる。オブジェクト参照は、始めてインストールされたときはネームサービスのサーバーによりネームサービスに発行されますが、その後は、サーバーの開始またはシャットダウンの回数にかかわらず、ORBD がいつでも呼び出したクライアントに正しいオブジェクト参照を返します。 -.TP 2 -o -クライアントは一度だけネーミングサービスのオブジェクト参照をルックアップする必要があるが、その後はサーバーのライフタイムによる変更とは無関係にこの参照を利用することができる +.PP +\fIorbd\fRコマンドを使用すると、CORBA環境のサーバーにある永続オブジェクトをクライアントから透過的に検索して呼び出すことができます。orbdツールに含まれるサーバー・マネージャを使用すると、クライアントはCORBA環境でサーバー上にある永続オブジェクトを透過的に検索して呼び出すことができます。永続サーバーは、ネーミング・サービスに永続オブジェクト参照を発行する際、サーバーのポート番号のかわりにORBDのポート番号をオブジェクト参照に含めます。永続オブジェクト参照のオブジェクト参照にORBDポート番号を含めることには、次のような利点があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ネーミング・サービスにあるオブジェクト参照が、サーバーのライフ・サイクルと無関係になります。たとえば、オブジェクト参照は、初めてインストールされたときはネーミング・サービスのサーバーによってネーミング・サービスに発行されますが、その後は、サーバーの開始またはシャットダウンの回数にかかわらず、呼び出したクライアントにORBDが正しいオブジェクト参照を返します。 .RE - -.LP -.LP -ORBD のサーバーマネージャーにアクセスするには、servertool(1) を使用してサーバーを起動する必要があります。servertool は、アプリケーションプログラマが、持続サーバーの登録、登録解除、起動、およびシャットダウンを行うためのコマンド行インタフェースです。サーバーマネージャーの詳細については、このドキュメントの「サーバーマネージャー」を参照してください。 -.LP -.LP -\f2orbd\fP を起動すると、ネームサービスも起動されます。ネームサービスについては、 -.na -\f2「ネームサービス」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlを参照してください。 -.LP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +クライアントは一度のみネーミング・サービスのオブジェクト参照をルックアップする必要がありますが、その後はサーバーのライフ・サイクルによる変更とは無関係にこの参照を利用することができます。 +.RE +.PP +ORBDのサーバー・マネージャにアクセスするには、\fIservertool\fRを使用してサーバーを起動する必要があります。servertoolは、アプリケーション・プログラマが、永続サーバーの登録、登録解除、起動および停止を行うためのコマンドライン・インタフェースです。サーバー・マネージャの詳細は、サーバー・マネージャを参照してください。 +.PP +\fIorbd\fRを起動すると、ネーミング・サービスも起動されます。ネーミング・サービスの詳細。ネーミング・サービスの起動と停止を参照してください。 .SH "オプション" -.LP -.SS -必須オプション -.LP -.RS 3 -.TP 3 -\-ORBInitialPort nameserverport -ネームサーバーを起動するポートの番号を指定します。\f2orbd\fP は、起動されると、このポート上で着信要求を待機します。Solaris ソフトウェアを使用する場合、1024 より小さいポート上でプロセスを開始するには、root ユーザーになる必要があります。このため、1024 以上のポート番号を使用することをお勧めします。(必須) +.PP +\-ORBInitialPort \fInameserverport\fR +.RS 4 +必須。ネーム・サーバーを起動するポートの番号を指定します。\fIorbd\fRは、起動されると、このポート上で着信リクエストをリスニングします。Oracle Solarisソフトウェアでは、1024より小さいポートでプロセスを開始する場合、rootユーザーになる必要があります。このため、1024以上のポート番号を使用することをお薦めします。 .RE - -.LP -.LP - -.LP -.SS -その他のオプション -.LP -.RS 3 -.TP 3 -\-port port -ORBD を起動するポートを指定します。ORBD は、このポートで、持続オブジェクトに対する要求を受け取ります。このポートのデフォルト値は 1049 です。このポート番号が、持続 Interoperable Object References (IOR). のポートフィールドに追加されます。(省略可) +.SS "必須でないオプション" +.PP +\-port \fIport\fR +.RS 4 +ORBDを起動するポートを指定します。このポートで、永続オブジェクトに対するリクエストをORBDが受け取ります。このポートのデフォルト値は1049です。このポート番号は、永続Interoperable Object References (IOR)のポート・フィールドに追加されます。 .RE - -.LP -.RS 3 -.TP 3 -\-defaultdb directory -ORBD 持続格納ディレクトリ \f2orb.db\fP が作成されるベースディレクトリを指定します。このオプションが指定されていない場合、デフォルト値は「./orb.db」となります。(省略可) +.PP +\-defaultdb \fIdirectory\fR +.RS 4 +ORBD永続格納ディレクトリ\fIorb\&.db\fRが作成されるベース・ディレクトリを指定します。このオプションが指定されていない場合、デフォルト値は\fI\&./orb\&.db\fRになります。 .RE - -.LP -.RS 3 -.TP 3 -\-serverPollingTime milliseconds -\f2servertool\fP を使用して登録された持続サーバーが正常に動作していることを ORBD が確認する回数を指定します。デフォルト値は 1,000 ミリ秒です。\f2milliseconds\fP に指定する値は、有効な正の整数でなければなりません。(省略可) +.PP +\-serverPollingTime \fImilliseconds\fR +.RS 4 +\fIservertool\fRを使用して登録された永続サーバーのヘルス状態をORBDがチェックする間隔を指定します。デフォルト値は1000ミリ秒です。\fImilliseconds\fRに指定する値は、有効な正の整数にする必要があります。 .RE - -.LP -.RS 3 -.TP 3 -\-serverStartupDelay milliseconds -\f2servertool\fP を使用して登録された持続サーバーを再起動してから、位置転送の例外を送信するまでの ORBD の待機時間を指定します。デフォルト値は 1,000 ミリ秒です。\f2milliseconds\fP に指定する値は、有効な正の整数でなければなりません。(省略可) +.PP +\-serverStartupDelay milliseconds +.RS 4 +\fIservertool\fRを使用して登録された永続サーバーを再起動してから、位置転送の例外を送信するまでのORBDの待機時間を指定します。デフォルト値は1000ミリ秒です。\fImilliseconds\fRに指定する値は、有効な正の整数にする必要があります。 .RE - -.LP -.RS 3 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って背後の実行環境にオプションを渡すことはよく行われています。 -.TP 3 - +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンに\fIoption\fRを渡します。\fIoption\fRには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 .RE - -.LP -.SH "ネームサービスの起動と停止" -.LP -.LP -ネームサービスは、 -.na -\f2CORBA オブジェクト\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#CORBA%20objectにネーミングを可能にする CORBA サービスです。ネーミングは名前をオブジェクト参照にバインドすることにより可能になります。 -.na -\f2「ネームバインディング」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#name%20bindingはネームサービスに格納され、クライアントは名前を与えて目的のオブジェクト参照を取得できます。 -.LP -.LP -ORBD は、クライアントまたはサーバーを実行する前に起動します。ORBD には、持続ネームサービスおよび一時ネームサービスが組み込まれています。これらはどちらも COS ネームサービスの実装です。 -.LP -.LP -\f3「持続」ネームサービス\fPは、ネーミングコンテキストに対して持続性を提供します。つまり、この情報は、サービスの停止や起動後にも維持され、サービスに障害が発生した場合でも回復できます。ORBD を再起動すると、持続ネームサービスはネーミングコンテキストのグラフを復元し、すべてのクライアントとサーバーの名前のバインディングが保持されます。 -.LP -.LP -\ -.LP -.LP -下位互換性のため、旧バージョンの JDK に同梱されていた\f2一時ネームサービス\fPが、今回のリリースの J2SE にも同梱されています。一時ネームサービスでは、ネームサービスの実行中にのみネーミングコンテキストが保持されます。サービスが中断されると、ネーミングコンテキストは失われます。 -.LP -.LP -\f2\-ORBInitialPort\fP 引数は、\f2orbd\fP の必須のコマンド行引数で、ネームサービスが実行されるポートの番号を設定するために使われます。以下の説明では、JavaIDL Object Request Broker Daemon 用にポート 1050 を使用できることを前提としています。Solaris ソフトウェアを使用する場合、1024 より小さいポート上でプロセスを開始するには、root ユーザーになる必要があります。このため、1024 以上のポート番号を使用することをお勧めします。必要であれば別のポートに変更してください。 -.LP -.LP -UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように入力します。 -.LP +.SS "ネーミング・サービスの起動と停止" +.PP +ネーミング・サービスは、CORBAオブジェクトにネーミングを可能にするCORBAサービスです。ネーミングは名前をオブジェクト参照にバインドすることにより可能になります。ネーム・バインディングをネーミング・サービスに格納すれば、クライアントが名前を指定して目的のオブジェクト参照を取得できるようになります。 +.PP +クライアントまたはサーバーを実行する前に、ORBDを起動します。ORBDには、永続ネーミング・サービスおよび一時ネーミング・サービスが組み込まれています。これらはどちらもCOSネーミング・サービスの実装です。 +.PP +永続ネーミング・サービスは、ネーミング・コンテキストに対して永続性を提供します。つまり、この情報は、サービスの停止や起動後にも維持され、サービスに障害が発生した場合でも回復できます。ORBDを再起動すると、永続ネーミング・サービスはネーミング・コンテキストのグラフを復元し、すべてのクライアントとサーバーの名前のバインディングがそのまま(永続的に)保持されるようにします。 +.PP +下位互換性のため、旧リリースのJDKに同梱されていた一時ネーミング・サービス\fItnameserv\fRが、今回のリリースのJava SEにも同梱されています。一時ネーム・サービスでは、ネーム・サービスの実行中にのみネーミング・コンテキストが保持されます。サービスが中断されると、ネーミング・コンテキスト・グラフは失われます。 +.PP +\fI\-ORBInitialPort\fR引数は、\fIorbd\fRの必須のコマンドライン引数で、ネーミング・サービスが実行されるポートの番号を設定するために使用されます。次の手順では、Java IDL Object Request Broker Daemon用にポート1050を使用できることを前提としています。Oracle Solarisソフトウェアを使用する場合、1024より小さいポートでプロセスを開始するには、rootユーザーになる必要があります。このため、1024以上のポート番号を使用することをお薦めします。必要であれば別のポートに変更してください。 +.PP +UNIXコマンド・シェルで\fIorbd\fRを起動するには、次のように入力します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - orbd \-ORBInitialPort 1050& -.fl -\fP +orbd \-ORBInitialPort 1050& .fi - -.LP -.LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 -.LP +.if n \{\ +.RE +.\} +.PP +WindowsのMS\-DOSシステム・プロンプトでは、次のように入力します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - start orbd \-ORBInitialPort 1050 -.fl -\fP +start orbd \-ORBInitialPort 1050 .fi - -.LP -.LP -これで ORBD が実行され、サーバーとクライアントのアプリケーションを実行できるようになります。クライアントとサーバーのアプリケーションは、実行時に、ネームサービスが実行されているポートの番号 (必要な場合はさらにマシン名) を認識している必要があります。これを実現する 1 つの方法は、次のコードをアプリケーションに追加することです。 -.LP +.if n \{\ +.RE +.\} +.PP +これでORBDが実行され、サーバーとクライアントのアプリケーションを実行できるようになります。クライアントとサーバーのアプリケーションは、実行時に、ネーミング・サービスが実行されているポートの番号(必要な場合はさらにマシン名)を認識している必要があります。これを実現する1つの方法は、次のコードをアプリケーションに追加することです。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - Properties props = new Properties(); -.fl - props.put("org.omg.CORBA.ORBInitialPort", "1050"); -.fl - props.put("org.omg.CORBA.ORBInitialHost", "MyHost"); -.fl - ORB orb = ORB.init(args, props); -.fl -\fP +Properties props = new Properties(); +props\&.put("org\&.omg\&.CORBA\&.ORBInitialPort", "1050"); +props\&.put("org\&.omg\&.CORBA\&.ORBInitialHost", "MyHost"); +ORB orb = ORB\&.init(args, props); .fi - -.LP -.LP -この例では、ネームサービスは、ホスト MyHost のポート 1050 上で実行されます。別の方法として、コマンド行からサーバーまたはクライアントのアプリケーションを実行するときに、ポート番号またはマシン名あるいはその両方を指定する方法もあります。たとえば、次のコマンド行オプションを使用して、「HelloApplication」を起動できます。 -.LP +.if n \{\ +.RE +.\} +.PP +この例では、ネーミング・サービスは、ホスト\fIMyHost\fRのポート1050上で実行されます。別の方法として、コマンドラインからサーバーまたはクライアントのアプリケーションを実行するときに、ポート番号またはマシン名あるいはその両方を指定する方法もあります。たとえば、次のコマンドライン・オプションを使用して、\fIHelloApplication\fRを起動できます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - java HelloApplication \-ORBInitialPort 1050 \-ORBInitialHost MyHost -.fl -\fP +java HelloApplication \-ORBInitialPort 1050 \-ORBInitialHost MyHost .fi - -.LP -.LP -ネームサービスを停止するには、適切なオペレーティングシステムコマンドを使用します。たとえば、Solaris 上で \f2pkill orbd\fP \f2を実行したり、\fP \f2orbd\fP が動作中の DOS ウィンドウで Ctrl+C キーを押したりします。一時ネームサービスの場合は、サービスが終了されると、ネームサービスに登録された名前が消去される場合があります。Java IDL ネームサービスは、明示的に停止されるまで実行されます。 -.LP -.LP -ORDB に含まれるネームサービスの詳細については、 -.na -\f2「ネームサービス」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlを参照してください。 -.LP -.SH "サーバーマネージャー" -.LP -.LP -ORBD のサーバーマネージャーにアクセスして持続サーバーを実行するには、servertool(1) を使用してサーバーを起動する必要があります。servertool は、アプリケーションプログラマが、持続サーバーの登録、登録解除、起動、およびシャットダウンを行うためのコマンド行インタフェースです。\f2servertool\fP を使用してサーバーを起動する場合は、\f2orbd\fP が実行されている場所と同じポートとホストで起動する必要があります。サーバーを異なるポートで実行すると、ローカルコンテキスト用にデータベースに保存されている情報が無効になり、サービスが正しく動作しません。 -.LP -.SS -サーバーマネージャー: 例 -.LP -.LP -デモ用の -.na -\f2サンプルチュートリアル\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlExample.htmlを使用し、チュートリアルの手順に従って、\f2idlj\fP コンパイラと \f2javac\fP コンパイラを実行します。サーバーマネージャーを実行するには、次の手順に従ってアプリケーションを実行します。 -.LP -.LP -\f2orbd\fP を起動します。 -.LP -.LP -UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように入力します。 -.LP -.LP -\ -.LP +.if n \{\ +.RE +.\} +.PP +ネーミング・サービスを停止するには、適切なオペレーティング・システム・コマンドを使用します。たとえば、Oracle Solaris上で\fIpkill\fR +\fIorbd\fRを実行したり、\fIorbd\fRが動作中のDOSウィンドウで\fB[Ctrl]+[C]\fRキーを押します。一時ネーミング・サービスの場合は、サービスが終了されると、ネーミング・サービスに登録された名前が消去される場合があります。Java IDLネーム・サービスは、明示的に停止されるまで実行されます。 +.PP +ORBDに付属するネーミング・サービスの詳細は、 +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/jidlNaming\&.htmlの「Naming Service」を参照してください +.SH "サーバー・マネージャ" +.PP +ORBDのサーバー・マネージャにアクセスして、永続サーバーを実行するには、\fIservertool\fRを使用してサーバーを起動する必要があります。servertoolは、アプリケーション・プログラマが、永続サーバーの登録、登録解除、起動および停止を行うためのコマンドライン・インタフェースです。\fIservertool\fRを使用してサーバーを起動する場合は、\fIorbd\fRが実行されている場所と同じポートとホストで起動する必要があります。サーバーを異なるポートで実行すると、ローカル・コンテキスト用にデータベースに保存されている情報が無効になり、サービスが正しく動作しません。 +.PP +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/jidlExample\&.htmlの +「Java IDL: The "Hello World" Example」を参照してください +.PP +この例では、チュートリアルの手順に従って\fIidlj\fRコンパイラと\fIjavac\fRコンパイラを実行します。ORBDのサーバー・マネージャを実行するには、次の手順に従ってアプリケーションを実行します。 +.PP +\fIorbd\fRを起動します。 +.PP +UNIXコマンド・シェルで次のように入力します: +\fIorbd \-ORBInitialPort 1050\fR。 +.PP +MS\-DOSシステム・プロンプト(Windows)で次のように入力します: +\fIs\fR\fItart orbd \-ORBInitialPort 105\fR\fI0\fR +.PP +ポート1050はネーム・サーバーを実行するポートです。\fI\-ORBInitialPort\fRオプションは必須コマンドライン引数です。Oracle Solarisソフトウェアを使用する場合、1024より小さいポートでプロセスを開始するには、rootユーザーになる必要があります。このため、1024以上のポート番号を使用することをお薦めします。 +.PP +\fIservertool\fRを起動します: +\fIservertool \-ORBInitialPort 1050\fR。 +.PP +前回の手順とネーム・サーバー(\fIorbd\fR)のポートが同じであることを確認します。たとえば\fI\-ORBInitialPort 1050\&.\fRのようになります。\fIservertool\fRは、ネーム・サーバーと同じポート上で起動する必要があります。 +.PP +\fIservertool\fRコマンドライン・インタフェースで、\fIservertool\fRプロンプトから\fIHello\fRサーバーを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - orbd \-ORBInitialPort 1050 -.fl -\fP -.fi - -.LP -.LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 -.LP -.nf -\f3 -.fl - start orbd \-ORBInitialPort 1050 -.fl -\fP -.fi - -.LP -.LP -\f21050\fP はネームサーバーを実行するポートです。\f2\-ORBInitialPort\fP は必要なコマンド行の引数です。Solaris ソフトウェアを使用する場合、1024 より小さいポート上でプロセスを開始するには、root ユーザーになる必要があります。このため、1024 以上のポート番号を使用することをお勧めします。 -.LP -.LP -\f2servertool\fP を起動します。 -.LP -.LP -Hello サーバーを起動するには、次のように入力します。 -.LP -.nf -\f3 -.fl - servertool \-ORBInitialPort 1050 -.fl -\fP -.fi - -.LP -.LP -前回の手順と同様にネームサーバー (\f2orbd\fP) のポートを指定します。たとえば \f2\-ORBInitialPort 1050\fP のようになります。\f2servertool\fP は、ネームサーバーと同じポート上で起動する必要があります。 -.LP -.LP -\f2servertool\fP コマンド行インタフェースが表示されます。 -.LP -.LP - -.LP -.LP -\f2servertool\fP プロンプトから Hello サーバーを起動します。 -.LP -.nf -\f3 -.fl - servertool > register \-server HelloServer \-classpath .\-applicationName -.fl +servertool > register \-server HelloServer \-classpath \&. \-applicationName HelloServerApName -.fl -\fP .fi - -.LP -.LP -\f2servertool\fP によってサーバーが登録されて、「HelloServerApName」という名前がサーバーに割り当てられ、サーバー ID が表示されます。 -.LP -.LP - -.LP -.LP -別の端末ウィンドウまたはプロンプトからクライアントアプリケーションを実行します。 -.LP -.LP -\ -.LP -.nf -\f3 -.fl - java HelloClient \-ORBInitialPort 1050 \-ORBInitialHost localhost -.fl -\fP -.fi - -.LP -.LP -この例の \f2\-ORBInitialHost localhost\fP は省略することができます。ネームサーバーが Hello クライアントとして同一ホスト上で動作しているからです。ネームサーバーが別のホストで動作している場合は、IDL ネームサーバーが動作しているホストを \f2\-ORBInitialHost\fP \f2nameserverhost\fP で指定します。 -.LP -.LP -前回の手順と同様にネームサーバー (\f2orbd\fP) のポートを指定します。たとえば \f2\-ORBInitialPort 1050\fP のようになります。 -.LP -.LP -\ -.LP -.LP -\ -.LP -.LP -サーバーマネージャーの操作が終了したら、ネームサーバー (\f2orbd\fP) と \f2servertool\fP を停止するか終了してください。 -.LP -.LP -DOS プロンプトで \f2orbd\fP をシャットダウンするには、サーバーを実行しているウィンドウを選択して \f2Ctrl+C\fP と入力します。UNIX シェルで \f2orbd\fP をシャットダウンするには、プロセスを検出して終了 (kill) します。サーバーを明示的に停止するまでは、呼び出し待機状態が続きます。 -.LP -.LP -\f2servertool\fP をシャットダウンするには、 \f2quit\fP と入力してキーボードの \f2Enter\fP キーを押します。 -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -.na -\f2ネームサービス\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html -.br -.TP 2 -o -servertool(1) +.if n \{\ +.RE +.\} +.PP +\fIservertool\fRによってサーバーが登録されて、\fIHelloServerApName\fRという名前がサーバーに割り当てられ、登録されているすべてのサーバー一覧とともにサーバーIDが表示されます。他の端末ウィンドウまたはプロンプトからクライアント・アプリケーションを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java HelloClient \-ORBInitialPort 1050 \-ORBInitialHost localhost +.fi +.if n \{\ +.RE +.\} +.PP +この例の\fI\-ORBInitialHost localhost\fRは省略することができます。ネーム・サーバーが\fIHello\fRクライアントとして同一ホスト上で動作しているからです。ネーム・サーバーが別のホストで実行されている場合は、\-\fIORBInitialHost nameserverhost\fRオプションを使用してIDLネーム・サーバーが実行されているホストを指定します。前の手順で行われたとおりにネーム・サーバー(\fIorbd\fR)ポートを指定します(例: +\fI\-ORBInitialPort 1050\fR)。ORBDのサーバー・マネージャの操作が終了したら、ネーム・サーバー(\fIorbd\fR)と\fIservertool\fRを停止するか終了してください。MS\-DOSプロンプトで\fIorbd\fRをシャットダウンするには、サーバーを実行しているウィンドウを選択して\fB[Ctrl]+[C]\fRキーを押します。 +.PP +Oracle Solarisから\fIorbd\fRをシャットダウンするには、プロセスを検索して、\fIkill\fRコマンドで終了します。サーバーを明示的に停止するまでは、呼出し待機状態が続きます。\fIservertool\fRをシャットダウンするには、\fBquit\fRと入力してキーボードの\fB[Enter]\fRキーを押します。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +servertool(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/jidlNaming\&.htmlの +「Naming Service」 .RE - -.LP .br - -.LP - +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/pack200.1 b/jdk/src/linux/doc/man/ja/pack200.1 index b1bb4f0fe03..e4150ab54dd 100644 --- a/jdk/src/linux/doc/man/ja/pack200.1 +++ b/jdk/src/linux/doc/man/ja/pack200.1 @@ -1,362 +1,325 @@ -." 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 -." 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 pack200 1 "07 May 2011" - -.LP -.SH "名前" -pack200 \- JAR パックツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -終了ステータス -.TP 2 -o -関連項目 -.TP 2 -o -注意事項 +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: pack200 +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Javaデプロイメント・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "pack200" "1" "2013年11月21日" "JDK 8" "Javaデプロイメント・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +pack200 \- WebデプロイメントのためにJARファイルをpack200圧縮ファイルにパッケージします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIpack200\fR [\fIoptions\fR] \fIoutput\-file\fR \fIJAR\-file\fR +.fi +.if n \{\ .RE - -.LP -.SH "形式" -.LP -.LP -\f4pack200\fP\f2 [ \fP\f2options\fP ] \f2output\-file\fP \f2JAR\-file\fP -.LP -.LP -オプションの指定順序に決まりはありません。コマンド行または properties ファイルに指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。 -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。 -.TP 3 -output\-file -出力ファイルの名前。 -.TP 3 -JAR\-file -入力ファイルの名前。 +.\} +.PP +オプションは任意の順序で指定できます。コマンドラインまたはpropertiesファイルに指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。 +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 .RE - -.LP -.SH " 説明" -.LP -.LP -\f2pack200\fP ツールは、Java gzip 圧縮プログラムを使用して JAR ファイルを \f2pack200\fP 圧縮ファイルに変換する \f2Java アプリケーション\fP です。 \f2pack200\fP ファイルは高圧縮のファイルで、帯域幅の節約やダウンロード時間の短縮や直接配備することができます。 -.LP -.LP -\f2pack200\fP ツールには、圧縮エンジンの設定や微調整を行うオプションが用意されています。 -.LP -.SS -一般的な使用方法: -.LP -.LP -\f2% pack200 myarchive.pack.gz myarchive.jar\fP -.LP -.LP -この例では、 \f2デフォルトの pack200 設定を使用して\fP myarchive.pack.gz \f2が生成されます\fP 。 -.LP +.PP +\fIoutput\-file\fR +.RS 4 +出力ファイルの名前。 +.RE +.PP +\fIJAR\-file\fR +.RS 4 +入力ファイルの名前。 +.RE +.SH "説明" +.PP +\fIpack200\fRコマンドは、Java gzipコンプレッサを使用してJARファイルをpack200圧縮ファイルに変換するJavaアプリケーションです。pack200ファイルは高圧縮のファイルで、直接デプロイでき、帯域幅の節約やダウンロード時間の短縮が可能です。 +.PP +\fIpack200\fRコマンドには、圧縮エンジンの設定や微調整を行うオプションがあります。一般的な使用方法を次の例に示します。\fImyarchive\&.pack\&.gz\fRがデフォルトの\fIpack200\fRコマンド設定で作成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +pack200 myarchive\&.pack\&.gz myarchive\&.jar +.fi +.if n \{\ +.RE +.\} .SH "オプション" -.LP -.LP -\f4\-r \-\-repack\fP -.LP -.LP -ファイル \f2myarchive.jar\fP をパックしたあとアンパックすることで、JAR ファイルを生成します。生成されたファイルは \f2jarsigner(1)\fP ツールの入力ファイルとして使用できます。 -.LP -.LP -\f2% pack200 \-\-repack myarchive\-packer.jar myarchive.jar\fP -.LP -.LP -\f2% pack200 \-\-repack myarchive.jar\fP -.LP -.LP -\f4\-g \-\-no\-gzip\fP -.LP -.LP -\f2pack200\fP ファイルを生成します。このオプションを指定するときは、適切な圧縮ツールを使用する必要があります。また、ターゲットシステムでは、対応する圧縮解除ツールを使用する必要があります。 -.LP -.LP -\f2% pack200 \-\-no\-gzip myarchive.pack myarchive.jar\fP -.LP -.LP -\f4\-G \-\-strip\-debug\fP -.LP -.LP -出力からデバッグ用の属性を削除します。そうした属性としては、 \f2SourceFile\fP、 \f2LineNumberTable\fP、 \f2LocalVariableTable\fP 、 \f2LocalVariableTypeTable\fP などが挙げられます。これらの属性を削除すれば、ダウンロードとインストールのサイズは小さくなりますが、デバッガの機能は制限されます。 -.LP -.LP -\f4\-\-keep\-file\-order\fP -.LP -.LP -入力ファイル内のファイルの順序を維持します。これがデフォルトの動作です。 -.LP -.LP -\f4\-O \-\-no\-keep\-file\-order\fP -.LP -.LP -パックツールは、すべての要素を並べ替えて転送します。また、JAR ディレクトリ名を削除します。このため、ダウンロードのサイズは小さくなりますが、インデックスをはじめとする JAR ファイルの最適化機能は正常に動作しなくなることがあります。 -.LP -.LP -\f4\-Svalue \-\-segment\-limit=\fP\f2value\fP -.LP -.LP -この値は、各アーカイブセグメントの予想ターゲットサイズ N (バイト単位) です。単一の入力ファイルの必要サイズが -.br -N バイトを超えると、そのファイルには独立したアーカイブセグメントが割り当てられます。特殊なケースとして、値が \f2\-1\fP の場合は、すべての入力ファイルを含む大きな単一のセグメントが生成され、値が \f20\fP の場合は、クラスごとにセグメントが 1 つずつ生成されます。アーカイブセグメントが大きくなると、断片化が少なくなり圧縮率が高くなりますが、その処理には多くのメモリーが必要です。 -.LP -.LP -各セグメントのサイズは、セグメントに変換されるそれぞれの入力ファイルのサイズのほか、その名前とほかの送信されるプロパティーのサイズを計算して推測されます。 -.LP -.LP -デフォルトは \-1 です。つまり、パックツールは常に単一のセグメント出力ファイルを作成します。極端に大きな出力ファイルが生成される場合には、入力ファイルをセグメント化 (分割) してより小さな JAR にすることを強くお勧めします。 -.LP -.LP -この制限が課されていない 10M バイトの JAR パックファイルは通常、元の 10% 程度のサイズにパックされます。しかし、パックツールでより大きな Java ヒープ (セグメントの制限の約 10 倍) を必要とする場合もあります。 -.LP -.LP -\f4\-Evalue \-\-effort=\fP\f2value\fP -.LP -.LP -単一の 10 進数値を指定した場合、パックツールは、指定された圧縮率でアーカイブを圧縮します。レベル \f21\fP の場合は、比較的短い圧縮時間でやや大きめのファイルが生成されますが、レベル \f29\fP の場合は、非常に長い時間がかかるものの、より圧縮率の高いファイルが生成されます。特殊な値 \f20\fP を指定した場合は、元の JAR ファイルを圧縮なしで直接コピーします。JSR 200 標準では、すべての解凍プログラムが、この特別な場合をアーカイブ全体のパススルーと解釈するように規定しています。 -.LP -.LP -デフォルトは \f25\fPです。この場合、標準的な時間で適切な圧縮が行われます。 -.LP -.LP -\f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP -.LP -.LP -デフォルト値を上書きし、入力情報を保存します。転送されるアーカイブのサイズは大きくなります。返される値は次のどれかになります。 -.LP -.RS 3 -.TP 3 -true -.TP 3 -false -どちらの場合でも、パックツールはデフレーションヒントを出力アーカイブに設定します。アーカイブ要素の個々のデフレーションヒントは転送しません。 +.PP +\-r, \-\-repack +.RS 4 +JARファイルをパックした後アンパックして、JARファイルを生成します。生成されたファイルは\fIjarsigner\fR(1)ツールの入力ファイルとして使用できます。次の例では、myarchive\&.jarファイルをパックした後、アンパックします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +pack200 \-\-repack myarchive\-packer\&.jar myarchive\&.jar +pack200 \-\-repack myarchive\&.jar +.fi +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -keep -入力 JAR.内で見つかったデフレーションヒントを維持します。(これがデフォルトです。) +.\} +次の例では、入力ファイル内のファイルの順序を保持します。 .RE - -.LP -.LP -\f4\-mvalue \-\-modification\-time=\fP\f2value\fP -.LP -.LP -返される値は次のどれかになります。 -.LP -.RS 3 -.TP 3 -latest -パックツールは、元のアーカイブの全エントリの最終更新時刻か、そのセグメントのすべてのエントリの最終更新時刻を特定しようとします。この単一の値はセグメントの一部として転送され、各セグメントの全エントリに適用されます。この場合、すべてのインストールファイルに単一の日付が設定されるという問題はありますが、アーカイブの転送サイズを少し小さくすることができます。 -.TP 3 -keep -入力 JAR. 内で見つかった変更時刻を維持します。(これがデフォルトです。) +.PP +\-g, \-\-no\-gzip +.RS 4 +\fIpack200\fRファイルを生成します。このオプションを指定するときは、適切な圧縮ツールを使用する必要があります。また、ターゲット・システムでは、対応する圧縮解除ツールを使用する必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +pack200 \-\-no\-gzip myarchive\&.pack myarchive\&.jar +.fi +.if n \{\ .RE - -.LP -.LP -\f4\-Pfile \-\-pass\-file=\fP\f2file\fP -.LP -.LP -ファイルを圧縮せず、バイト単位で転送するように指定します。このオプションを繰り返し使用して、複数のファイルを指定できます。システムファイルセパレータが JAR ファイルセパレータ「\f2/\fP」に置き換えられる点を除き、パス名の変換は行われません。 結果として得られるファイル名は、文字列として正確に JAR ファイルでの出現と一致している必要があります。file にディレクトリ名を指定した場合、そのディレクトリ内のすべてのファイルが転送されます。 -.LP -.LP -\f4\-Uaction \-\-unknown\-attribute=\fP\f2action\fP -.LP -.LP -デフォルトの動作を無効にします。たとえば、不明な属性を含むクラスファイルを指定したアクションで転送します。アクションとして指定可能な値: -.LP -.RS 3 -.TP 3 -error -\f2pack200\fP の操作に失敗し、適切な解説が表示されます。 -.TP 3 -strip -属性はドロップされます。注: VM 必須属性を削除するとクラスローダーの障害が発生することがあります。 -.TP 3 -pass -この属性が検出された場合、クラス全体が 1 つのリソースとして転送されます。 +.\} .RE - -.LP -.LP -\f4\-Cattribute\-name=\fP\f2layout\fP \f3\-\-class\-attribute=\fP\f2attribute\-name=action\fP -.br -\f4\-Fattribute\-name=\fP\f2layout\fP \f3\-\-field\-attribute=\fP\f2attribute\-name=action\fP -.br -\f4\-Mattribute\-name=\fP\f2layout\fP \f3\-\-method\-attribute=\fP\f2attribute\-name=action\fP -.br -\f4\-Dattribute\-name=\fP\f2layout\fP \f3\-\-code\-attribute=\fP\f2attribute\-name=action\fP -.LP -.LP -これら 4 つのオプションでは、クラスエンティティーに Class 属性、Field 属性、Method 属性、Code 属性などの属性のレイアウトを指定できます。attribute\-name には、これからレイアウトまたはアクションを定義する属性の名前を指定します。アクションとして指定可能な値: -.LP -.RS 3 -.TP 3 -some\-layout\-string -レイアウト言語は、JSR 200 仕様に定義されています。 -.LP -例: \f2\-\-class\-attribute=SourceFile=RUH\fP -.TP 3 -error -この属性が検出された場合、pack200 の操作に失敗し、適切な解説が表示されます。 -.TP 3 -strip -この属性が検出された場合、属性は出力から削除されます。注: VM 必須属性を削除するとクラスローダーの障害が発生することがあります。 +.PP +\-G, \-\-strip\-debug +.RS 4 +出力からデバッグ属性を削除します。これには、\fISourceFile\fR、\fILineNumberTable\fR、\fILocalVariableTable\fR、\fILocalVariableTypeTable\fRが含まれます。これらの属性を削除すれば、ダウンロードとインストールのサイズは小さくなりますが、デバッガの機能は制限されます。 .RE - -.LP -.LP -例: \f2\-\-class\-attribute=CompilationID=pass\fP というこの属性を含むクラスファイルを転送します。パックツールは、その他のアクションを行いません。 -.LP -.LP -\f4\-f\fP\f2 \fP\f2pack.properties\fP \f3\-\-config\-file=\fP\f2pack.properties\fP -.LP -.LP -コマンド行に、パックツールを初期化するための Java プロパティーが含まれている設定ファイルを指定できます。 -.LP -.LP -\f2% pack200 \-f pack.properties myarchive.pack.gz myarchive.jar\fP -.br -\f2% more pack.properties\fP -.br -\f2# Generic properties for the packer.\fP -.br -\f2modification.time=latest\fP -.br -\f2deflate.hint=false\fP -.br -\f2keep.file.order=false\fP -.br -\f2# This option will cause the files bearing new attributes to\fP -.br -\f2# be reported as an error rather than passed uncompressed.\fP -.br -\f2unknown.attribute=error\fP -.br -\f2# Change the segment limit to be unlimited.\fP -.br -\f2segment.limit=\-1\fP -.LP -.LP -\f4\-v \-\-verbose\fP -.LP -.LP -最小限のメッセージを出力します。このオプションを複数指定すると、より長いメッセージが出力されます。 -.LP -.LP -\f4\-q \-\-quiet\fP -.LP -.LP -メッセージを表示せずに動作します。 -.LP -.LP -\f4\-lfilename \-\-log\-file=\fP\f2filename\fP -.LP -.LP -出力メッセージのログファイルを指定します。 -.LP -.LP -\f4\-? \-h \-\-help\fP -.LP -.LP +.PP +\-\-keep\-file\-order +.RS 4 +入力ファイル内のファイルの順序を保持します。これは、デフォルトの動作です。 +.RE +.PP +\-O, \-\-no\-keep\-file\-order +.RS 4 +パック・ツールは、すべての要素を並べ替えて送信します。パック・ツールは、JARディレクトリ名を削除してダウンロード・サイズを削減することもできます。ただし、インデックスなど、特定のJARファイルの最適化機能が正常に動作しなくなることがあります。 +.RE +.PP +\-S\fIvalue\fR, \-\-segment\-limit=\fIvalue\fR +.RS 4 +この値は、各アーカイブ・セグメントの予想ターゲット・サイズ\fIN\fR +(バイト単位)です。単一の入力ファイルの必要サイズが\fIN\fRバイトを超えると、独立したセグメントが割り当てられます。特殊なケースとして、値が\fI\-1\fRの場合は、すべての入力ファイルを含む大きな単一のセグメントが生成され、値が0の場合は、クラスごとにセグメントが1つずつ生成されます。アーカイブ・セグメントが大きくなると、断片化が少なくなり圧縮率が高くなりますが、その処理には多くのメモリーが必要です。 +.sp +各セグメントのサイズは、セグメントに変換されるそれぞれの入力ファイルのサイズのほか、その名前と他の送信されるプロパティのサイズを計算して推測されます。 +.sp +デフォルトは\-1です。つまり、パック・ツールは単一のセグメント出力ファイルを作成します。極端に大きな出力ファイルが生成される場合には、入力ファイルをセグメント化(分割)してより小さなJARにすることを強くお薦めします。 +.sp +この制限が課されていない10 MBのJARパック・ファイルは通常、約10%小さくパックされます。しかし、パック・ツールでより大きなJavaヒープ(セグメントの制限の約10倍)を必要とする場合もあります。 +.RE +.PP +\-E\fIvalue\fR, \-\-effort=\fIvalue\fR +.RS 4 +単一の10進数値を指定した場合、パック・ツールは、指定された圧縮率でアーカイブを圧縮します。レベル1の場合は、比較的短い圧縮時間で多少大きめのファイルが生成されますが、レベル9の場合は、非常に長い時間がかかるものの、より圧縮率の高いファイルが生成されます。特殊な値0を指定した場合は、\fIpack200\fRコマンドは元のJARファイルを圧縮なしで直接コピーします。JSR 200標準では、すべての解凍プログラムが、この特別な場合をアーカイブ全体のパススルーと解釈するように規定しています。 +.sp +デフォルトは5です。この場合、標準的な時間で適切な圧縮が行われます。 +.RE +.PP +\-H\fIvalue\fR, \-\-deflate\-hint=\fIvalue\fR +.RS 4 +入力情報を保存するというデフォルト値をオーバーライドします。転送されるアーカイブのサイズは大きくなる場合があります。指定可能な値は、\fItrue\fR、\fIfalse\fRまたは\fIkeep\fRです。 +.sp +\fIvalue\fRが\fItrue\fRまたはfalseの場合、\fIpacker200\fRコマンドは指定に従ってデフレーション・ヒントを出力アーカイブに設定します。アーカイブ要素の個々のデフレーション・ヒントは転送されません。 +.sp +\fIkeep\fR値は、入力JARで確認されたデフレーション・ヒントを保持します。これがデフォルトです。 +.RE +.PP +\-m\fIvalue\fR, \-\-modification\-time=\fIvalue\fR +.RS 4 +指定可能な値は\fIlatest\fRと\fIkeep\fRです。 +.sp +値が最新の場合、パック・ツールは、元のアーカイブの使用可能なすべてのエントリのうちの最終更新時刻か、そのセグメントの使用可能なすべてのエントリの最終更新時刻を特定しようとします。この単一の値はセグメントの一部として転送され、各セグメントの全エントリに適用されます。この場合、すべてのインストール・ファイルに単一の日付が設定されるという問題はありますが、アーカイブの転送サイズを少し小さくすることができます。 +.sp +値が\fIkeep\fRの場合、入力JARで確認された変更時間が保持されます。これがデフォルトです。 +.RE +.PP +\-P\fIfile\fR, \-\-pass\-file=\fIfile\fR +.RS 4 +ファイルを圧縮せず、バイト単位で転送するように指定します。このオプションを繰返し使用して、複数のファイルを指定できます。システム・ファイル・セパレータがJARファイル・セパレータのスラッシュ(/)に置き換えられる点を除き、パス名の変換は行われません。結果として得られるファイル名は、文字列として正確にJARファイルでの出現と一致している必要があります。\fIfile\fRにディレクトリ名を指定した場合、そのディレクトリ内のすべてのファイルが転送されます。 +.RE +.PP +\-U\fIaction\fR, \-\-unknown\-attribute=\fIaction\fR +.RS 4 +デフォルトの動作をオーバーライドします。つまり、不明な属性を含むクラス・ファイルが、指定した\fIaction\fRによって渡されます。アクションとして指定可能な値は、\fIerror\fR、\fIstrip\fRまたは\fIpass\fRです。 +.sp +値が\fIerror\fRの場合、\fIpack200\fRコマンド操作全体が失敗して適切な説明が表示されます。 +.sp +値が\fIstrip\fRの場合、属性は削除されます。Java仮想マシン(JVM)必須属性を削除すると、クラス・ローダーの障害が発生することがあります。 +.sp +値が\fIpass\fRの場合、クラス全体が1つのリソースとして転送されます。 +.RE +.PP +\-C\fIattribute\-name\fR=\fIlayout\fR, \-\-class\-attribute=\fIattribute\-name\fR=\fIaction\fR +.RS 4 +次のオプションを参照してください。 +.RE +.PP +\-F\fIattribute\-name\fR=\fIlayout\fR, \-\-field\-attribute=\fIattribute\-name\fR=\fIaction\fR +.RS 4 +次のオプションを参照してください。 +.RE +.PP +\-M\fIattribute\-name\fR=\fIlayout\fR, \-\-method\-attribute=\fIattribute\-name\fR=\fIaction\fR +.RS 4 +次のオプションを参照してください。 +.RE +.PP +\-D\fIattribute\-name\fR=\fIlayout\fR, \-\-code\-attribute=\fIattribute\-name\fR=\fIaction\fR +.RS 4 +前述の4つのオプションでは、クラス・エンティティに\fIclass\-attribute\fR、\fIfield\-attribute\fR、\fImethod\-attribute\fRおよび\fIcode\-attribute\fRなどの属性のレイアウトを指定できます。\fIattribute\-name\fRには、これからレイアウトまたはアクションを定義する属性の名前を指定します。\fIaction\fRとして指定可能な値は、\fIsome\-layout\-string\fR、\fIerror\fR、\fIstrip\fR、\fIpass\fRです。 +.sp +\fIsome\-layout\-string\fR: レイアウト言語はJSR 200仕様で定義されています。例: +\fI\-\-class\-attribute=SourceFile=RUH\fR。 +.sp +値が\fIerror\fRの場合、\fIpack200\fR操作が失敗して説明が表示されます。 +.sp +値が\fIstrip\fRの場合、属性が出力から削除されます。VM必須属性を削除するとクラス・ローダーの障害が発生することがあります。たとえば、\fI\-\-class\-attribute=CompilationID=pass\fRというこの属性を含むクラス・ファイルを転送します。パック・ツールは、その他のアクションを行いません。 +.sp +値が\fIpass\fRの場合、クラス全体が1つのリソースとして転送されます。 +.RE +.PP +\-f \fIpack\&.properties\fR, \-\-config\-file=\fIpack\&.properties\fR +.RS 4 +コマンドラインに、パック・ツールを初期化するためのJavaプロパティが含まれている構成ファイルを指定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +pack200 \-f pack\&.properties myarchive\&.pack\&.gz myarchive\&.jar +more pack\&.properties +# Generic properties for the packer\&. +modification\&.time=latest +deflate\&.hint=false +keep\&.file\&.order=false +# This option will cause the files bearing new attributes to +# be reported as an error rather than passed uncompressed\&. +unknown\&.attribute=error +# Change the segment limit to be unlimited\&. +segment\&.limit=\-1 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-v, \-\-verbose +.RS 4 +最小限のメッセージを出力します。このオプションを複数指定すると、より長いメッセージが作成されます。 +.RE +.PP +\-q, \-\-quiet +.RS 4 +メッセージを表示せずに動作するように指定します。 +.RE +.PP +\-l\fIfilename\fR, \-\-log\-file=\fIfilename\fR +.RS 4 +出力メッセージのログ・ファイルを指定します。 +.RE +.PP +\-?, \-h, \-\-help +.RS 4 このコマンドに関するヘルプ情報を出力します。 -.LP -.LP -\f4\-V \-\-version\fP -.LP -.LP -このコマンドに関するバージョン情報を出力します。 -.LP -.LP -\f4\-J\fP\f2option\fP -.LP -.LP -\f2option\fP を、 \f2pack200\fP から呼び出された Java 起動ツールに渡します。たとえば、 \f2\-J\-Xms48m\fP と指定すると、スタートアップメモリーが 48M バイトに設定されます。このオプションは \f2\-X\fP で始まっていませんが、 \f2pack200\fP の標準オプションではありません。 \f2\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 -.LP -.SH "終了ステータス" -.LP -.LP -次の終了値が返されます。 -.LP -.LP -\f2\ 0\fP 正常終了した場合 -.LP -.LP -\f2>0\fP エラーが発生した場合 -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -unpack200(1) -.TP 2 -o -.na -\f2Java SE のドキュメント\fP @ -.fi -http://java.sun.com/javase/6/docs/index.html -.TP 2 -o -.na -\f2「Java 配備ガイド \- Pack200」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/pack200.html -.TP 2 -o -jar(1) \- Java Archive ツール」 -.TP 2 -o -jarsigner(1) \- JAR 署名および検証ツール」 -.TP 2 -o -\f2attributes(5) の\fP マニュアルページ .RE - -.LP -.SH "注意事項" -.LP -.LP -このコマンドと \f2pack(1)\fP を混同しないでください。これらは別製品です。 -.LP -.LP -SDK に付属する Java SE API 仕様との相違が見つかった場合には、仕様を優先してください。 -.LP - +.PP +\-V, \-\-version +.RS 4 +このコマンドに関するバージョン情報を出力します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +指定されたオプションをJava仮想マシンに渡します。詳細は、java(1)コマンドのリファレンス・ページを参照してください。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。 +.RE +.SH "終了ステータス" +.PP +次の終了値が返されます: 正常終了の場合は0、エラーが発生した場合は0より大きい値。 +.SH "注意" +.PP +このコマンドと\fIpack\fR(1)を混同しないでください。\fIpack\fRおよび\fIpack200\fRコマンドは、別々の製品です。 +.PP +JDKに付属するJava SE API仕様との相違が見つかった場合には、仕様を優先してください。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +unpack200(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jarsigner(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/policytool.1 b/jdk/src/linux/doc/man/ja/policytool.1 index b3de7eca294..c724f7893be 100644 --- a/jdk/src/linux/doc/man/ja/policytool.1 +++ b/jdk/src/linux/doc/man/ja/policytool.1 @@ -1,105 +1,173 @@ -." 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 -." 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 policytool 1 "07 May 2011" - -.LP -.SH "名前" -policytool \- PolicyTool 管理 GUI ユーティリティー -.LP -\f3policytool\fP は、ユーティリティー GUI 経由で取得したユーザー入力に基づいて、プレーンテキストのポリシーファイルを読み書きします。 -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 +'\" t +.\" Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: policytool +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: セキュリティ・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "policytool" "1" "2013年11月21日" "JDK 8" "セキュリティ・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +policytool \- ユーティリティGUI経由で取得したユーザー入力に基づいて、プレーン・テキストのポリシー・ファイルを読み書きします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIpolicytool\fR [ \fI\-file\fR ] [ \fIfilename\fR ] +.fi +.if n \{\ .RE - -.LP -.SH "形式" -.LP -.RS 3 -.TP 3 -\ -.TP 3 -policytool 管理者ユーティリティーを実行します -\f4policytool\fP -.TP 3 -policytool を実行し、指定されたポリシーファイルを読み込みます -\f4policytool\fP\f2[\-file\ \fP\f2filename\fP\f2]\fP -.TP 3 -\ -.TP 3 -以下にそれぞれの意味を示します。 -.RS 3 -.TP 3 -file -ローカルポリシーファイルを読み込むように \f2policytool\fP に指示します -.TP 3 -filename -ファイル名 +.\} +.PP +\-file +.RS 4 +ポリシー・ファイルを読み込むように\fIpolicytool\fRに指示します。 .RE -.SH "説明" -.LP -\f3policytool\fP は、ユーザーがローカルポリシーファイルの内容を管理することを可能にする GUI です。詳細については、 -.na -\f2「ポリシーファイル作成および管理ツール」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyGuide.htmlを参照してください。 -.SH "オプション" -.RS 3 -.TP 3 -file -\f2filename\fP を読み込みます。 -.SH "関連項目" -.na -\f2「Default 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 @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyGuide.html -.br -.na -\f2「Security Permissions」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/permissions.html -.br -.na -\f2「Security Overview」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/overview/jsoverview.html -.br +.PP +\fIfilename\fR +.RS 4 +ロードするファイルの名前。 .RE +.PP +\fB例\fR: +.PP +ポリシー・ツール管理ユーティリティを実行します: +.sp +.if n \{\ +.RS 4 +.\} +.nf +policytool +.fi +.if n \{\ .RE - -.LP - +.\} +.PP +\fIpolicytool\fRコマンドを実行し、指定されたファイルをロードします: +.sp +.if n \{\ +.RS 4 +.\} +.nf +policytool\-file mypolicyfile +.fi +.if n \{\ +.RE +.\} +.SH "説明" +.PP +\fIpolicytool\fRコマンドは、管理者のGUIを呼び出します。これにより、システム管理者はローカル・ポリシー・ファイルの内容を管理できるようになります。ポリシー・ファイルは\fI\&.policy\fR拡張子を持つプレーンテキスト・ファイルで、ドメイン別にリモート・リクエスタを権限オブジェクトにマップします。詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/PolicyFiles\&.htmlにある +「Default Policy Implementation and Policy File Syntax」を参照してください +.SH "オプション" +.PP +\-file +.RS 4 +ポリシー・ファイルを読み込むように\fIpolicytool\fRに指示します。 +.RE +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Default Policy Implementation and Policy File Syntax」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/PolicyFiles\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Policy File Creation and Management」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/PolicyGuide\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Permissions in Java SE Development Kit (JDK)」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/permissions\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Java Security Overview」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/overview/jsoverview\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Java Cryptography Architecture (JCA) Reference Guide」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/rmic.1 b/jdk/src/linux/doc/man/ja/rmic.1 index 621cde4c028..bca3b844f7b 100644 --- a/jdk/src/linux/doc/man/ja/rmic.1 +++ b/jdk/src/linux/doc/man/ja/rmic.1 @@ -1,231 +1,360 @@ -." 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 -." 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 rmic 1 "07 May 2011" - -.LP -.SH "名前" -rmic \- Java RMI コンパイラ -.LP -.LP -\f3rmic\fP によって、JRMP または IIOP プロトコルを使用するリモートオブジェクトのスタブ、スケルトン、および Tie クラスが生成されます。また、OMG IDL も生成されます。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: rmic +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Remote Method Invocation (RMI)ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "rmic" "1" "2013年11月21日" "JDK 8" "Remote Method Invocation (RMI)" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +rmic \- Java Remote Method Protocol (JRMP)またはInternet Inter\-Orb protocol (IIOP)を使用するリモート・オブジェクトのスタブ、スケルトンおよびTieクラスを生成します。Object Management Group (OMG)インタフェース定義言語(IDL)も生成します +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -rmic [ \fP\f3options\fP\f3 ] \fP\f4package\-qualified\-class\-name(s)\fP\f3 -.fl -\fP +\fIrmic\fR [ \fIoptions\fR ] \fIpackage\-qualified\-class\-names\fR .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・\fIオプション\fR。オプションを参照してください。 +.RE +.PP +\fIpackage\-qualified\-class\-names\fR +.RS 4 +パッケージを含むクラス名。例: +\fIjava\&.awt\&.Color\fR。 +.RE .SH "説明" -.LP -.LP -\f3rmic\fP コンパイラによって、リモートオブジェクトの、スタブ、スケルトンクラスファイル (JRMP プロトコル)、およびスタブと Tie クラスファイルの組み合わせ (IIOP プロトコル) が生成されます。リモートオブジェクトの実装クラスであるこれらのクラスファイルは、Java プログラミング言語のクラスをコンパイルしたときに生成されます。リモート実装クラスは、\f2java.rmi.Remote\fP インタフェースを実装するクラスです。\f3rmic\fP コマンドでのクラス名は、そのクラスが \f3javac\fP コマンドでコンパイルが成功していて、かつ完全なパッケージ名が指定されている必要があります。たとえば、クラスファイル名 \f2HelloImpl\fP で \f3rmic\fP を実行するには、次のようにします。 -.LP +.PP +\fB非推奨に関する注意:\fR +Java Remote Method Protocol (JRMP)スタブおよびスケルトンの静的な生成のサポートは非推奨になりました。動的に生成されるJRMPスタブをかわりに使用して、JRMPベースのアプリケーションにこのツールを使用する必要性をなくすことをお薦めします。詳細は、\fIjava\&.rmi\&.server\&.UnicastRemoteObject\fR仕様(http://docs\&.oracle\&.com/javase/8/docs/api/java/rmi/server/UnicastRemoteObject\&.html)を参照してください。 +.PP +\fIrmic\fRコンパイラは、Java Remote Method Protocol (JRMP)とスタブおよびTieクラス・ファイル(IIOPプロトコル)を使用して、リモート・オブジェクトのスタブおよびスケルトン・クラス・ファイルを生成します。リモート・オブジェクトの実装クラスであるこれらのクラス・ファイルは、Javaプログラミング言語のクラスをコンパイルしたときに生成されます。リモート実装クラスは、\fIjava\&.rmi\&.Remote\fRインタフェースを実装するクラスです。\fIrmic\fRコマンドでのクラス名は、そのクラスが\fIjavac\fRコマンドでコンパイルが成功していて、かつ完全修飾パッケージ名である必要があります。たとえば、次に示すクラス・ファイル名\fIHelloImpl\fRで\fIrmic\fRコマンドを実行すると、helloサブディレクトリ(クラスのパッケージの名前の付いた)に\fIHelloImpl_Stub\&.class \fRファイルが作成されます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -rmic hello.HelloImpl -.fl -\fP +rmic hello\&.HelloImpl .fi - -.LP -.LP -\f2HelloImpl_Stub.class\fP ファイルが、クラスのパッケージ名が付いた \f2hello\fP サブディレクトリに作成されます。 -.LP -.LP -リモートオブジェクトの「スケルトン」は JRMP プロトコルサーバー側のエンティティーで、実際のリモートオブジェクト実装を呼び出すメソッドを含みます。 -.LP -.LP -リモートオブジェクトの「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 オプションを使用します。 -.LP -.LP -スタブはリモートインタフェースだけを実装し、リモートオブジェクトが実装する局所インタフェースは実装していません。JRMP スタブはリモートオブジェクト自体が実装するリモートインタフェースと同じものを実装しているので、クライアントは、キャストや型チェックに Java プログラミング言語に組み込まれた演算子を使用することができます。IIOP の場合は、\f2PortableRemoteObject.narrow\fP メソッドを使わなければなりません。 -.LP +.if n \{\ +.RE +.\} +.PP +リモート・オブジェクトのスケルトンはJRMPプロトコル・サーバー側のエンティティで、リモート・オブジェクト実装を呼び出すメソッドを含みます。 +.PP +リモート・オブジェクトのTieは、スケルトンと同様にサーバー側のエンティティですが、IIOPプロトコルを使用してクライアントと通信します。 +.PP +スタブとは、リモート・オブジェクトのクライアント側での代理です。スタブは、リモート・オブジェクトのメソッド呼出しを、実物のリモート・オブジェクトが常駐するサーバーと通信する役割を持ちます。したがって、クライアントのリモート・オブジェクトへの参照は、実際はローカル・スタブへの参照となります。 +.PP +デフォルトで\fIrmic\fRコマンドは、1\&.2 JRMPスタブ・プロトコル・バージョンのみを使用するスタブ・クラスを生成します。これは、\fI\-v1\&.2\fRオプションを指定した場合と同じ動作です。リリース5\&.0以前では\fI\-vcompat\fRオプションがデフォルトでした。IIOPプロトコル用のスタブおよびTieクラスを生成するには\fI\-iiop\fRオプションを使用します。オプションを参照してください。 +.PP +スタブはリモート・インタフェースのみを実装し、リモート・オブジェクトが実装するローカル・インタフェースは実装していません。JRMPスタブはリモート・オブジェクトが実装するリモート・インタフェースと同じものを実装しているので、クライアントは、キャストや型チェックにJavaプログラミング言語に組み込まれた演算子を使用することができます。IIOPの場合は、\fIPortableRemoteObject\&.narrow\fRメソッドを使用する必要があります。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-bootclasspath path -ブートストラップクラスファイルの位置をオーバーライドします。 -.TP 3 -\-classpath path -\f3rmic\fP がクラスを探すためのパスを指定します。このオプションは、デフォルトや CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 -.nf -\f3 -.fl -.:<your_path> -.fl -\fP -.fi -例を示します。 -.nf -\f3 -.fl -.:/usr/local/java/classes -.fl -\fP -.fi -.TP 3 -\-d directory -生成されたクラス階層の出力先ディレクトリのルートを指定します。このオプションを使えば、スタブ、スケルトン、および Tie ファイルを格納するディレクトリを指定できます。たとえば、次のようにして使います。 -.nf -\f3 -.fl -% rmic \-d /java/classes foo.MyClass -.fl -\fP -.fi -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 -局所変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号情報だけが生成されます。 -.TP 3 -\-idl -\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) を参照してください。 -.LP -\f2\-idl\fP オプションを使うときは、ほかのオプションも指定できます。 -.RS 3 -.TP 3 -\-always または \-alwaysgenerate -既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。 -.TP 3 -\-factory -生成された IDL で factory キーワードを使います。 -.TP 3 -\-idlModule\ fromJavaPackage[.class]\ toIDLModule -IDLEntity パッケージのマップを指定します。例を示します。 \f2\-idlModule foo.bar my::real::idlmod\fP -.TP 3 -\-idlFile\ fromJavaPackage[.class]\ toIDLFile -IDLEntity ファイルのマップを指定します。例を示します。 \f2\-idlFile test.pkg.X TEST16.idl\fP\ +.PP +\-bootclasspath \fIpath\fR +.RS 4 +ブートストラップ・クラス・ファイルの位置をオーバーライドします。 .RE -.TP 3 -\-iiop -\f2rmic\fP によって、JRMP のスタブとスケルトンクラスの代わりに、IIOP のスタブと Tie クラスが生成されます。スタブクラスは、リモートオブジェクトのローカルプロキシで、クライアントからサーバーに呼び出しを送信するときに使われます。各リモートインタフェースにはスタブクラスが必要です。スタブクラスによってリモートインタフェースが実装されます。クライアントでリモートオブジェクトを参照するときは、実際にはスタブを参照することになります。タイクラスは、サーバー側で着呼を処理し、その呼び出しを適切な実装クラスにディスパッチするときに使われます。各実装クラスには、タイクラスが必要です。 -.LP -\f2\-iiop\fP を使って \f2rmic\fP を呼び出すと、次の命名規約に準拠したスタブと Tie が生成されます。 +.PP +\-classpath path +.RS 4 +\fIrmic\fRコマンドがクラスを探すためのパスを指定します。このオプションは、デフォルトや\fICLASSPATH\fR環境変数設定をオーバーライドします。ディレクトリはコロンで分割します。パスの一般的な形式は\fI\&.;<your_path>\fRです。例: +\fI\&.;/usr/local/java/classes\fR +.RE +.PP +\-d \fIdirectory\fR +.RS 4 +生成されたクラス階層の出力先ディレクトリのルートを指定します。このオプションを使用すると、スタブ、スケルトン、およびTieファイルを格納するディレクトリを指定できます。たとえば、次のコマンドはMyClassから導出されたスタブおよびスケルトン・クラスをディレクトリ/java/classes/exampleclassに格納します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -_<implementationName>_stub.class -.fl -\fP -.br -\f3 -.fl -_<interfaceName>_tie.class -.fl -\fP +rmic \-d /java/classes exampleclass\&.MyClass .fi -.LP -\f2\-iiop\fP オプションを使うときは、ほかのオプションも指定できます。 -.RS 3 -.TP 3 -\-always または \-alwaysgenerate -既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。 -.TP 3 -\-nolocalstubs -同じプロセスのクライアントとサーバーに対して最適化されたスタブを作成しません。 -.TP 3 -\-noValueMethods -これは \f2\-idl\fP オプションとともに使われなければなりません。発行された IDL に、\f2valuetype\fP メソッドおよび初期化子を追加しません。このメソッドおよび初期化子は、\f2valuetype\fP の場合はオプションです。 \f2\-idl\fP オプションを使うときは、 \f2\-noValueMethods\fP オプションを指定しない限り生成されます。 -.TP 3 -\-poa -継承が \f2org.omg.CORBA_2_3.portable.ObjectImpl\fP から \f2org.omg.PortableServer.Servant\fP に変わります。 -.LP -.na -\f2Portable Object Adapter\fP @ +.if n \{\ +.RE +.\} +\fI\-d\fRオプションが指定されていない場合、デフォルトの動作は\fI\-d\fRが指定されていた場合と同じです。ターゲット・クラスのパッケージ階層が現在のディレクトリに作成され、stub/tie/skeletonファイルが格納されます。以前のリリースの\fIrmic\fRコマンドでは、\fI\-d\fRが指定されていない場合は、パッケージ階層は作成されず、出力ファイルはすべて現在のディレクトリに直接格納されていました。 +.RE +.PP +\-extdirs \fIpath\fR +.RS 4 +インストール済拡張機能の位置をオーバーライドします。 +.RE +.PP +\-g +.RS 4 +ローカル変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号情報のみ生成されます。 +.RE +.PP +\-idl +.RS 4 +\fIrmic\fRコマンドによって、指定したクラスおよび参照されたクラスのOMG IDLが生成されます。IDLでは、プログラミング言語に依存せずに、宣言するだけでオブジェクトのAPIを指定することができます。IDLは、メソッドおよびデータの仕様として使用します。CORBAバインディングを提供する任意の言語で、メソッドおよびデータの作成および呼出しを行うことができます。これらの言語には、JavaおよびC++が含まれています。http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/mapping/jidlMapping\&.htmlの +「Java IDL: IDL to Java Language Mapping」を参照してください +.sp +\fI\-idl\fRオプションを使用するときには、他のオプションも指定できます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +既存のスタブ/Tie/IDLが入力クラスよりも新しい場合でも、\fI\-always\fRまたは\fI\-alwaysgenerate\fRオプションは再生成を強制します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-factory\fRオプションは、生成されたIDLで\fIfactory\fRキーワードを使用します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +The +\fI\-idlModule\fR +from J\fIavaPackage[\&.class]\fR +\fItoIDLModule\fR +specifies +\fIIDLEntity\fR +package mapping, for example: +\fI\-idlModule\fR +\fImy\&.module my::real::idlmod\fR\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-idlFile\fR +\fIfromJavaPackage[\&.class] toIDLFile\fR +specifies +\fIIDLEntity\fR +file mapping, for example: +\fI\-idlFile test\&.pkg\&.X TEST16\&.idl\fR\&. +.RE +.RE +.PP +\-iiop +.RS 4 +\fIrmic\fRコマンドによって、JRMPのスタブとスケルトン・クラスのかわりに、IIOPのスタブとTieクラスが生成されます。スタブ・クラスは、リモート・オブジェクトのローカル・プロキシで、クライアントからサーバーに呼出しを送信するときに使用されます。各リモート・インタフェースにはスタブ・クラスが必要です。スタブ・クラスによってリモート・インタフェースが実装されます。クライアントでリモート・オブジェクトを参照するときは、スタブを参照することになります。タイ・クラスは、サーバー側で着呼を処理し、その呼出しを適切な実装クラスにディスパッチするときに使用されます。各実装クラスには、タイ・クラスが必要です。 +.sp +\fI\-iiop\fRを使用して\fIrmic\fRコマンドを呼び出すと、次の命名規則に準拠したスタブとTieが生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +_<implementationName>_stub\&.class +_<interfaceName>_tie\&.class .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 に準拠しています。 +.if n \{\ .RE -.TP 3 -\-J -\f2\-J\fP の後ろに続くオプションを \f2java\fP インタプリタに引き渡します。 \f2java\fP オプションと組み合わせて使います (\-J と java オプションの間にスペースは入れない)。 -.TP 3 -\-keep または \-keepgenerated -スタブ、スケルトン、または Tie クラスのための \f2.java\fP ソースファイルを \f2.class\fP ファイルと同じディレクトリに残します。 -.TP 3 -\-nowarn -警告をオフにします。このオプションを指定すると、コンパイラは警告を表示しません。 -.TP 3 -\-nowrite -コンパイルしたクラスをファイルシステムに書き込みません。 -.TP 3 -\-vcompat -1.1 と 1.2 の両方の JRMP スタブプロトコルバージョンと互換性のあるスタブおよびスケルトンクラスを作成します。(5.0 以前のリリースではこのオプションはデフォルト。)生成されたスタブクラスは、JDK 1.1 仮想マシンにロードされると 1.1 スタブプロトコルバージョンを使用し、JDK 1.2 以降の仮想マシンにロードされると 1.2 スタブプロトコルバージョンを使用します。生成されたスケルトンクラスでは、1.1 と 1.2 の両方のスタブプロトコルバージョンをサポートします。生成されたクラスは両方の操作モードをサポートするために、サイズが大きくなります。 -.TP 3 -\-verbose -コンパイラやリンカーが、コンパイルされているクラスやロードされているクラスファイルについてのメッセージを表示するようにします。 -.TP 3 -\-v1.1 -1.1 JRMP スタブプロトコルバージョンのみのスタブおよびスケルトンクラスを生成します。このオプションが使用できるのは、JDK 1.1 から \f3rmic\fP ツールで生成され、アップグレードできない (さらにダイナミッククラスローディングを使用していない) 、既存の静的配備されたスタブクラスに対し、直列化互換性のあるスタブクラスを生成場合だけです。 -.TP 3 -\-v1.2 -(デフォルト) 1.2 JRMP スタブプロトコルバージョンのみのスタブクラスを生成します。スケルトンクラスは 1.2 スタブプロトコルバージョンで使用できないため、このオプションではスケルトンクラスは生成されません。生成されたスタブクラスは、JDK 1.1 仮想マシンにロードされても動作しません。 +.\} +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-iiop\fRオプションを使用するときには、他のオプションも指定できます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +既存のスタブ/Tie/IDLが入力クラスよりも新しい場合でも、\fI\-always\fRまたは\fI\-alwaysgenerate\fRオプションは再生成を強制します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-nolocalstubs\fRオプションでは、同じプロセスのクライアントとサーバーに最適化されたスタブは作成されません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-noValueMethods\fRオプションは\fI\-idl\fRオプションとともに使用する必要があります。\fI\-noValueMethods\fRオプションは、送信されるIDLに\fIvaluetype\fRメソッドおよび初期化子を追加できないようにします。このメソッドおよび初期化子は、valuetypeの場合はオプションです。\fI\-idl\fRオプションとともに\fI\-noValueMethods\fRオプションを指定しないかぎり生成されます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-poa\fRオプションは継承を\fIorg\&.omg\&.CORBA_2_3\&.portable\&.ObjectImpl\fRから\fIorg\&.omg\&.PortableServer\&.Servant\fRに変更します。ポータブル・オブジェクト・アダプタ(POA)の\fIPortableServer\fRモジュールは、ネイティブの\fIServant\fR型を定義します。Javaプログラミング言語では、\fIServant\fR型はJavaの\fIorg\&.omg\&.PortableServer\&.Servant\fRクラスにマップされます。これは、すべてのPOAサーバント実装のベース・クラスとして機能し、アプリケーション・プログラマが呼び出すことのできるいくつかのメソッド、およびPOAによって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドを提供します。OMG IDL to Java Language Mapping Specification、CORBA V 2\&.3\&.1 ptc/00\-01\-08\&.pdfに準拠しています。 +.RE +.RE +.PP +\-J +.RS 4 +Javaコマンドとともに使用して、\fI\-J\fRオプションは\fI\-J\fRの後ろに続く引数をJavaインタプリタに渡します(\fI\-J\fRと引数の間にスペースは入れません)。 +.RE +.PP +\-keep or \-keepgenerated +.RS 4 +スタブ、スケルトン、またはTieクラスのために生成された\fI\&.java\fRソース・ファイルを保持し、\fI\&.class\fRファイルと同じディレクトリに書き込みます。 +.RE +.PP +\-nowarn +.RS 4 +警告をオフにします。\fI\-nowarn\fRオプションが使用される場合。コンパイラは警告を表示しません。 +.RE +.PP +\-nowrite +.RS 4 +コンパイルしたクラスをファイル・システムに書き込みません。 +.RE +.PP +\-vcompat (非推奨) +.RS 4 +1\&.1と1\&.2の両方のJRMPスタブ・プロトコル・バージョンと互換性のあるスタブおよびスケルトン・クラスを作成します。5\&.0以前のリリースではこのオプションがデフォルトでした。生成されたスタブ・クラスは、JDK 1\&.1仮想マシンにロードされると1\&.1スタブ・プロトコル・バージョンを使用し、JDK 1\&.2以降の仮想マシンにロードされると1\&.2スタブ・プロトコル・バージョンを使用します。生成されたスケルトン・クラスでは、1\&.1と1\&.2の両方のスタブ・プロトコル・バージョンをサポートします。生成されたクラスは両方の操作モードをサポートするために、サイズが大きくなります。注意:このオプションは非推奨になりました。説明を参照してください。 +.RE +.PP +\-verbose +.RS 4 +コンパイラやリンカーが、コンパイルされているクラスやロードされているクラス・ファイルについてのメッセージを表示するようにします。 +.RE +.PP +\-v1\&.1 (非推奨) +.RS 4 +1\&.1 JRMPスタブ・プロトコル・バージョンのみのスタブおよびスケルトン・クラスを生成します。\fI\-v1\&.1\fRオプションを使用できるのは、JDK 1\&.1から\fIrmic\fRコマンドで生成され、アップグレードできない(さらにダイナミック・クラス・ローディングを使用していない)、既存の静的デプロイされたスタブ・クラスに対し、直列化互換性のあるスタブ・クラスを生成する場合のみです。注意:このオプションは非推奨になりました。説明を参照してください。 +.RE +.PP +\-v1\&.2 (非推奨) +.RS 4 +(デフォルト)1\&.2 JRMPスタブ・プロトコル・バージョンのみのスタブ・クラスを生成します。スケルトン・クラスは1\&.2スタブ・プロトコル・バージョンで使用できないため、スケルトン・クラスは生成されません。生成されたスタブ・クラスは、JDK 1\&.1仮想マシンにロードされても動作しません。注意:このオプションは非推奨になりました。説明を参照してください。 .RE - -.LP .SH "環境変数" -.LP -.RS 3 -.TP 3 -CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。次に例を示します。 -.nf -\f3 -.fl -.:/usr/local/java/classes -.fl -\fP -.fi +.PP +CLASSPATH +.RS 4 +ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで区切られます。例: +\fI\&.:/usr/local/java/classes\fR .RE - -.LP .SH "関連項目" -.LP -.LP -java(1)、javac(1)、 -.na -\f2CLASSPATH\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javac(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Setting the Class Path +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/rmid.1 b/jdk/src/linux/doc/man/ja/rmid.1 index e229fbf1cdc..1ee27efb1a9 100644 --- a/jdk/src/linux/doc/man/ja/rmid.1 +++ b/jdk/src/linux/doc/man/ja/rmid.1 @@ -1,328 +1,365 @@ -." 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 -." 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 rmid 1 "07 May 2011" - -.LP -.SH "名前" -rmid \- Java RMI 起動システムデーモン -.LP -.LP -\f3rmid\fP で起動システムデーモンを開始すると、オブジェクトを仮想マシン (VM) に登録して起動できるようになります。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: rmid +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Remote Method Invocation (RMI)ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "rmid" "1" "2013年11月21日" "JDK 8" "Remote Method Invocation (RMI)" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +rmid \- 起動システム・デーモンを開始すると、オブジェクトをJava仮想マシン(VM)に登録してアクティブ化できるようになります。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -rmid [options] -.fl -\fP +\fIrmid\fR [\fIoptions\fR] .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE .SH "説明" -.LP -.LP -\f3rmid\fP ツールは、起動システムデーモンを開始します。起動システムデーモンを開始してからでないと、起動可能オブジェクトを起動システムに登録したり、VM 内で起動したりすることができません。起動可能なリモートオブジェクトを使ったプログラムの作成方法の詳細は、 -.na -\f2「Java RMI 仕様」\fP @ -.fi -http://java.sun.com/javase/6/docs/platform/rmi/spec/rmiTOC.htmlおよび -.na -\f2「起動のチュートリアル」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/rmi/activation/overview.htmlを参照してください。 -.LP -.LP -デーモンを起動するには、次のように、セキュリティーポリシーファイルを指定して \f2rmid\fP コマンドを実行します。 -.LP +.PP +\fIrmid\fRコマンドは、起動システム・デーモンを開始します。起動システム・デーモンを開始してからでないと、アクティブ化可能オブジェクトをアクティブ化システムに登録したり、JVM内でアクティブ化したりすることができません。アクティブ化可能なオブジェクトを使用するプログラムの作成方法の詳細は、\fIアクティブ化の使用\fRに関するチュートリアル(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/rmi/activation/overview\&.html)を参照してください +.PP +\fIrmid\fRコマンドを実行し、次のようにセキュリティ・ポリシー・ファイルを指定して、デーモンを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - rmid \-J\-Djava.security.policy=rmid.policy -.fl -\fP +rmid \-J\-Djava\&.security\&.policy=rmid\&.policy .fi - -.LP -.LP -\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 をデフォルト設定で実行すると、次のような処理が行われます。 -.LP -.RS 3 -.TP 2 -o -アクティベータを起動し、デフォルトポート 1098 で内部レジストリを起動する -.TP 2 -o -この内部レジストリの中で、 \f2ActivationSystem\fP を \f2java.rmi.activation.ActivationSystem という名前に\fP バインドする +.if n \{\ .RE - -.LP -.LP -レジストリにほかのポートを指定するには、rmid の起動時に \f2\-port\fP オプションを \f2指定しなければなりません\fP。次に例を示します。 -.LP +.\} +.PP +\fIrmid\fRコマンドのOracleの実装を実行する場合、デフォルトでは、セキュリティ・ポリシー・ファイルを指定する必要があります。それは、\fIrmid\fRコマンドが起動グループ用にJVMを起動するために各\fIActivationGroupDesc\fR内の情報を使用できるかどうかを検証できるようにするためです特に、\fIActivationGroupDesc\fRコンストラクタに渡される\fICommandEnvironment\fRや任意のプロパティによって指定されるコマンドおよびオプションは、\fIrmid\fRコマンドのセキュリティ・ポリシー・ファイルの中で明示的に許可することが必要になりました。\fIsun\&.rmi\&.activation\&.execPolicy\fRプロパティの値は、起動グループ用にJVMを起動するために\fIActivationGroupDesc\fR内の情報を使用できるかどうかを判断するときに\fIrmid\fRコマンドが使用するポリシーを決定します。詳細は、\-J\-Dsun\&.rmi\&.activation\&.execPolicy=policyオプションの説明を参照してください。 +.PP +\fIrmid\fRコマンドを実行すると、デフォルト・ポート1098でアクティベータと内部レジストリが起動され、\fIActivationSystem\fRがこの内部レジストリ内の名前\fIjava\&.rmi\&.activation\&.ActivationSystem\fRにバインドされます。 +.PP +レジストリに他のポートを指定するには、\fIrmid\fRコマンドの実行時に\fI\-port\fRオプションを指定する必要があります。たとえば、次のコマンドは、レジストリのデフォルト・ポート1099で、起動システム・デーモンとレジストリを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - rmid \-J\-Djava.security.policy=rmid.policy \-port 1099 -.fl -\fP +rmid \-J\-Djava\&.security\&.policy=rmid\&.policy \-port 1099 .fi - -.LP -.LP -このコマンドは、起動システムデーモンを開始し、レジストリのデフォルトポート 1099 でレジストリを開始します。 -.LP -.SS -rmid を inetd/xinetd から開始する -.LP -.LP -\f2rmid\fP をコマンド行から開始するには、 \f2inetd\fP (Solaris の場合)、または \f2xinetd\fP (Linux の場合) を構成して \f2rmid\fP を必要に応じて開始する方法もあります。 -.LP -.LP -\f2rmid\fP を開始すると、System.inheritedChannel メソッドを呼び出して、継承されたチャンネル ( \f2inetd\fP/\f2xinetd\fP から継承) を取得しようとします。 継承されたチャンネルが \f2null\fP であるか、 \f2java.nio.channels.ServerSocketChannel\fP のインスタンスでなかった場合、 \f2rmid\fP rmid はそのチャンネルは \f2inetd\fP/\f2xinetd\fP によって起動されたものではないと判断し、前述のように起動します。 -.LP -.LP -継承されたチャンネルが \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) にある。ファイル名の接頭辞は \f2"rmid\-err"\fP で、接尾辞は \f2"tmp"\fP である -.TP 2 -o -\f2\-port\fP オプションは拒否される。このオプションを指定すると、 \f2rmid\fP はエラーメッセージを出して終了する -.TP 2 -o -\f2\-log\fP オプションは必須。このオプションを指定しないと、 \f2rmid\fP はエラーメッセージを出して終了する +.if n \{\ .RE - -.LP -.LP -必要に応じてサービスを開始するように設定する詳細については、 \f2inetd\fP (Solaris の場合)、または \f2xinetd\fP (Linux) のマニュアルページを参照してください。 -.LP +.\} +.SH "必要に応じてRMIDを開始" +.PP +\fIrmid\fRをコマンドラインから開始するには、\fIinetd\fR +(Oracle Solarisの場合)、または\fIxinetd\fR +(Linuxの場合)を構成して\fIrmid\fRを必要に応じて開始する方法もあります。 +.PP +RMIDを開始すると、\fISystem\&.inheritedChannel\fRメソッドを呼び出して、継承されたチャンネル(\fIinetd\fR/\fIxinetd\fRから継承)を取得しようとします。継承されたチャンネルがnullであるか、\fIjava\&.nio\&.channels\&.ServerSocketChannel\fRのインスタンスでなかった場合、RMIDはそのチャンネルは\fIinetd\fR/\fIxinetd\fRによって起動されたものではないと判断し、前述のように起動します。 +.PP +継承されたチャンネルが\fIServerSocketChannel\fRインスタンスである場合は、RMIDはエクスポートするリモート・オブジェクト、つまり\fIjava\&.rmi\&.activation\&.ActivationSystem\fRがバインドされているレジストリと\fIjava\&.rmi\&.activation\&.Activator\fRリモート・オブジェクトに対するリクエストを受信するサーバー・ソケットとして、\fIServerSocketChannel\fRから取得した\fIjava\&.net\&.ServerSocket\fRを使用します。このモードでは、RMIDの動作は、次のことを除いて、コマンドラインから起動した場合と同じです。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fISystem\&.err\fRに対する出力は、ファイルにリダイレクトされる。このファイルは\fIjava\&.io\&.tmpdir\fRシステム・プロパティで指定されるディレクトリ(通常は\fI/var/tmp\fRまたは\fI/tmp\fR)にある。ファイル名の接頭辞は\fIrmid\-err\fRで、接尾辞は\fItmp\fRである。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-port\fRオプションは使用できません。このオプションが指定されている場合、RMIDはエラー・メッセージが表示されて終了します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-log\fRオプションは必須。このオプションが指定されていない場合、RMIDはエラー・メッセージが表示されて終了します。 +.RE +.PP +必要に応じてサービスを開始するように構成する方法の詳細は、\fIinetd\fR +(Oracle Solarisの場合)、または\fIxinetd\fR +(Linux)のマニュアル・ページを参照してください。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-C<someCommandLineOption> -\f2rmid\fP の子プロセス (起動グループ) が作成されたときに、それぞれの子プロセスにコマンド行引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システムデーモンによって生成される各仮想マシンにプロパティーを渡すことができます。 +.PP +\-C\fIオプション\fR +.RS 4 +\fIrmid\fRコマンドの子プロセス(起動グループ)が作成されたときに、それぞれの子プロセスにコマンドライン引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システム・デーモンによって生成される各仮想マシンにプロパティを渡すことができます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - rmid \-C\-Dsome.property=value -.fl -\fP +rmid \-C\-Dsome\&.property=value .fi -コマンド行引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のようなコマンドを実行できます。 +.if n \{\ +.RE +.\} +コマンドライン引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のコマンドでは、すべての子JVMでserver\-callロギングが可能です。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - rmid \-C\-Djava.rmi.server.logCalls=true -.fl -\fP +rmid \-C\-Djava\&.rmi\&.server\&.logCalls=true .fi -このコマンドにより、すべての子 VM でサーバー呼び出しのログが作成されるようになります。 -.LP -.TP 3 -\-J<someCommandLineOption> -rmid を実行している \f2java\fP インタプリタに渡すオプションを指定します。 たとえば、 \f2rmid\fP が \f2rmid.policy\fP という名前のポリシーファイルを使用するように指定するには、rmid のコマンド行で \f2\-J\fP オプションを使って、 \f2java.security.policy\fP プロパティーを定義します。 次に例を示します。 +.if n \{\ +.RE +.\} +.RE +.PP +\-J\fIoption\fR +.RS 4 +RMIDを実行しているJavaインタプリタに渡すオプションを指定します。たとえば、\fIrmid\fRコマンドが\fIrmid\&.policy\fRという名前のポリシー・ファイルを使用するように指定するには、\fIrmid\fRのコマンドラインで\fI\-J\fRオプションを使用して、\fIjava\&.security\&.policy\fRプロパティを定義します。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - rmid \-J\-Djava.security.policy=rmid.policy -.fl -\fP +rmid \-J\-Djava\&.security\&.policy\-rmid\&.policy .fi -.TP 3 -\-J\-Dsun.rmi.activation.execPolicy=<policy> -起動グループが実行されることになる VM の起動に使用するコマンドおよびコマンド行オプションをチェックするために、 \f2rmid\fP が採用するポリシーを指定します。このオプションは、Java RMI 起動デーモンの Sun の実装だけに存在することに注意してください。コマンド行にこのプロパティーを指定しない場合、結果は \f2\-J\-Dsun.rmi.activation.execPolicy=default\fP を指定した場合と同じになります。\f2<policy>\fP に指定可能な値は、\f2default\fP、\f2<policyClassName>\fP、または \f2none\fP です。 -.RS 3 -.TP 2 -o -\f3default (または、このプロパティーが「指定されていない」場合)\fP -.LP -デフォルトの \f2execPolicy\fP の場合、 \f2rmid\fP が実行できるのは、 \f2rmid\fP が使用するセキュリティーポリシーファイルの中で、実行する権限が \f2rmid\fP に与えられているコマンドおよびコマンド行オプションだけです。「デフォルト」の実行ポリシーで使用できるのは、デフォルトの起動グループ実装だけです。 -.LP -\f2rmid は、\fP 起動グループ用の VM を起動するときに、そのグループについて登録された起動グループ記述子である \f2ActivationGroupDesc\fP 内の情報を使用します。グループ記述子は、 \f2ActivationGroupDesc.CommandEnvironment\fP を指定します (省略可能)。これには、起動グループを開始する「コマンド」と、そのコマンド行に追加できるコマンド行「オプション」が含まれています。デフォルトでは、 \f2rmid は\fP java.home にある \f2java\fP コマンドを使用します。 グループ記述子には、オプションとしてコマンド行に追加される「プロパティー」オーバーライドも含まれています。このプロパティーは、次のように定義します。 +.if n \{\ +.RE +.\} +.RE +.PP +\-J\-Dsun\&.rmi\&.activation\&.execPolicy=\fIpolicy\fR +.RS 4 +起動グループが実行されることになるJVMの起動に使用するコマンドおよびコマンドライン・オプションをチェックするために、RMIDが採用するポリシーを指定します。このオプションは、Java RMI起動デーモンのOracleの実装のみに存在することに注意してください。コマンドラインにこのプロパティを指定しない場合、結果は\fI\-J\-Dsun\&.rmi\&.activation\&.execPolicy=default\fRを指定した場合と同じになります。\fIpolicy\fRに指定可能な値は、\fIdefault\fR、\fIpolicyClassName\fRまたは\fInone\fRです。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +デフォルト +.sp +\fIdefault\fRまたは未指定値の\fIexecPolicy\fRの場合、\fIrmid\fRコマンドが実行できるのは、\fIrmid\fRコマンドが使用するセキュリティ・ポリシー・ファイルの中で、実行する権限が\fIrmid\fRに与えられているコマンドおよびコマンドライン・オプションのみです。デフォルトの実行ポリシーで使用できるのは、デフォルトの起動グループ実装のみです。 +.sp +\fIrmid\fRコマンドは、起動グループ用のJVMを起動するときに、そのグループについて登録された起動グループ記述子である\fIActivationGroupDesc\fR内の情報を使用します。グループ記述子は、\fIActivationGroupDesc\&.CommandEnvironment\fRを指定します(省略可能)。これには、起動グループを開始するコマンドと、そのコマンドラインに追加できるコマンドライン・オプションが含まれています。デフォルトでは、\fIrmid\fRコマンドは\fIjava\&.home\fRにある\fIjava\fRコマンドを使用します。グループ記述子には、コマンドラインにオプションとして追加されるプロパティ・オーバーライドも含まれます(\fI\-D<property>=<value>\fRとして定義されます)。\fIcom\&.sun\&.rmi\&.rmid\&.ExecPermission\fR権限は\fIrmid\fRコマンドに、起動グループを開始するためにグループ記述子の\fICommandEnvironment\fRで指定されたコマンドを実行する権限を付与します。\fIcom\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fR権限は起動グループの開始時に、グループ記述子でプロパティ・オーバーライドとして、または\fICommandEnvironment\fRでオプションとして指定されたコマンドライン・オプションを、\fIrmid\fRコマンドが使用することを許可します。\fIrmid\fRコマンドに様々なコマンドおよびオプションを実行する権限を付与する場合、権限\fIExecPermission\fRおよび\fIExecOptionPermission\fRをすべてのコード・ソースに付与する必要があります。 +.sp +\fBExecPermission\fR +.sp +\fIExecPermission\fRクラスは、起動グループを開始するために\fIrmid\fRコマンドが特定のコマンドを実行する権限を表します。 +.sp +\fB構文\fR: +\fIExecPermission\fRの名前は、\fIrmid\fRコマンドに実行を許可するコマンドのパス名です。スラッシュ(/)およびアスタリスク(*)で終わるパス名は、そのディレクトリに含まれるすべてのファイルを示します。スラッシュはファイル区切り文字\fIFile\&.separatorChar\fRです。スラッシュ(/)およびマイナス符号(\-)で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ(再帰的に)を示します。パス名に特別なトークン\fI<<ALL FILES>>\fRを指定した場合は、任意のファイルを示します。 +.sp +パス名にアスタリスク(*)を指定した場合は、現在のディレクトリ内のすべてのファイルを示します。パス名にマイナス符号(\-)を指定した場合は、現在のディレクトリ内のすべてのファイルおよび(再帰的に)現在のディレクトリに含まれるすべてのファイルとサブディレクトリを示します。 +.sp +\fBExecOptionPermission\fR +.sp +\fIExecOptionPermission\fRクラスは、起動グループを開始するときに\fIrmid\fRコマンドで特定のコマンドライン・オプションを使用できる権限を表します。\fIExecOptionPermission\fRの名前は、コマンドライン・オプションの値です。 +.sp +\fB構文\fR: オプションでは、ワイルドカードが限定的にサポートされます。アスタリスクは、ワイルドカード・マッチを表します。アスタリスク(*)は、オプション名そのものとして使用できます。つまり、任意のオプションを表すことができます。また、オプション名の末尾に使用することもできます。ただし、ドット(\&.)か等号(=)の直後にアスタリスク(*)を指定する必要があります。 +.sp +例: +\fI*\fRや\fI\-Dmydir\&.*\fRや\fI\-Da\&.b\&.c=*\fRは有効ですが、\fI*mydir\fRや\fI\-Da*b\fRや\fIab*\fRは無効です。 +.sp +\fBrmidのポリシー・ファイル\fR +.sp +\fIrmid\fRコマンドに様々なコマンドおよびオプションを実行する権限を許可する場合は、権限\fIExecPermission\fRおよび\fIExecOptionPermission\fRをすべてのコード・ソースに付与する必要があります(汎用的に)。これらの権限をチェックするのは\fIrmid\fRコマンドのみなので、これらの権限を汎用的に付与しても安全です。 +.sp +\fIrmid\fRコマンドに各種の実行権限を付与するポリシー・ファイルの例を、次に示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \-D\fP\f4<property>\fP\f3=\fP\f4<value>\fP\f3 -.fl -\fP -.fi -.LP -アクセス権 \f2com.sun.rmi.rmid.ExecPermission\fP を使用すると、 \f2rmid\fP に対して、グループ記述子の \f2CommandEnvironment\fP で指定されたコマンドを実行して起動グループを開始する権限を許可することができます。アクセス権 \f2com.sun.rmi.rmid.ExecOptionPermission\fP を使用すると、グループ記述子でプロパティーオーバーライドとして指定されたコマンド行オプション、または \f2CommandEnvironment\fP でオプションとして指定されたコマンド行オプションを、起動グループを開始するときに rmid が使用できるようになります。 -.LP -\f2rmid に\fP さまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。つまり、すべてのコードソースに対して許可します。 -.RS 3 -.TP 3 -ExecPermission -\f2ExecPermission\fP クラスは、起動グループを開始するために \f2rmid が\fP 特定の「コマンド」を実行する権限を表します。 -.LP -\f3構文\fP -.br -\f2ExecPermission\fP の「名前」は、 \f2rmid\fP に実行を許可するコマンドのパス名です。「/*」 (「/」はファイル区切り文字 File.separatorChar) で終わるパス名は、そのディレクトリに含まれるすべてのファイルを示します。 「/\-」で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を示します。パス名に特別なトークン「<<ALL FILES>>」を指定した場合は、\f3任意の\fPファイルを示します。 -.LP -\f3注:\fP 「*」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルを表します。また、「\-」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルと、現在のディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を表します。 -.TP 3 -ExecOptionPermission -\f2ExecOptionPermission\fP クラスは、起動グループを開始するときに \f2rmid は、起動グループを開始するコマンドをまったく検証しません。\fP 特定のコマンド行「オプション」を使用できる権限を表します。 \f2ExecOptionPermission\fP の「名前」は、コマンド行オプションの値です。 -.LP -\f3構文\fP -.br -オプションでは、ワイルドカードが限定的にサポートされます。アスタリスクは、ワイルドカードマッチを表します。 アスタリスクは、オプション名そのものとして使用できます。 つまり、任意のオプションを表すことができます。 また、オプション名の末尾に使用することもできます。 ただし、「.」か「=」の直後にアスタリスクを指定する必要があります。 -.LP -例を示します。「*」、「\-Dfoo.*」、「\-Da.b.c=*」は有効ですが、「*foo」、「\-Da*b」、「ab*」は無効です。 -.TP 3 -rmid のポリシーファイル -\f2rmid に\fP さまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。つまり、すべてのコードソースに対して許可します。これらのアクセス権をチェックするのは \f2rmid\fP だけなので、これらのアクセス権を汎用的に許可しても安全です。 -.LP -rmid に各種の実行権限を許可するポリシーファイルの例を、次に示します。 -.nf -\f3 -.fl grant { -.fl - permission com.sun.rmi.rmid.ExecPermission -.fl - "/files/apps/java/jdk1.7.0/solaris/bin/java"; -.fl - -.fl - permission com.sun.rmi.rmid.ExecPermission -.fl - "/files/apps/rmidcmds/*"; -.fl - -.fl - permission com.sun.rmi.rmid.ExecOptionPermission -.fl - "\-Djava.security.policy=/files/policies/group.policy"; -.fl - -.fl - permission com.sun.rmi.rmid.ExecOptionPermission -.fl - "\-Djava.security.debug=*"; -.fl - -.fl - permission com.sun.rmi.rmid.ExecOptionPermission -.fl - "\-Dsun.rmi.*"; -.fl -}; -.fl -\fP -.fi -最初に付与されているアクセス権は、 \f2rmid\fP に対し、パス名により明示的に指定される \f2java\fP コマンドの 1.7.0 バージョンの実行を許可します。デフォルトでは、java.home にあるバージョンの \f2java\fP コマンドを使用します。 \f2rmid\fP が使用するのと同じバージョン) が使用されるため、そのコマンドは、ポリシーファイルで指定する必要はありません。2 番目のアクセス権は、 \f2rmid\fP に対して、ディレクトリ \f2/files/apps/rmidcmds\fP 内の任意のコマンドの実行権限を許可します。 -.LP -3 番目に付与されているアクセス権 \f2ExecOptionPermission\fP は、 \f2rmid\fP に対して、セキュリティーポリシーファイルを \f2/files/policies/group.policy\fP として定義している起動グループの開始を許可します。次のアクセス権は、起動グループが \f2java.security.debug\fP プロパティーを使用することを許可しています。最後のアクセス権は、起動グループが \f2sun.rmi\fP というプロパティー名の階層内の任意のプロパティーを使用することを許可しています。 -.LP -ポリシーファイルを指定して \f2rmid\fP を起動するには、rmid のコマンド行で \f2java.security.policy\fP プロパティーを指定する必要があります。 次に例を示します。 -.LP -\f2rmid \-J\-Djava.security.policy=rmid.policy\fP -.RE -.TP 2 -o -\f4<policyClassName>\fP -.LP -デフォルトの動作では十分な柔軟性が得られない場合、管理者は、 \f2rmid\fP の起動時に、 \f2checkExecCommand\fP メソッドが所属するクラスの名前を指定して、rmid が実行するコマンドをチェックすることができます。 -.LP -\f2policyClassName\fP には、引数なしのコンストラクタを持ち、次のような \f2checkExecCommand\fP メソッドを実装している public クラスを指定します。 -.nf -\f3 -.fl - public void checkExecCommand(ActivationGroupDesc desc, -.fl - String[] command) -.fl - throws SecurityException; -.fl -\fP -.fi -起動グループを開始する前に、 \f2rmid\fP は、ポリシーの \f2checkExecCommand\fP メソッドを呼び出します。このとき、起動グループの記述子と、起動グループを開始するための完全なコマンドを含む配列をそのメソッドに渡します。 \f2checkExecCommand\fP が \f2SecurityException\fP をスローすると、 \f2rmid\fP はその起動グループを開始せず、オブジェクトの起動を試行している呼び出し側には \f2ActivationException\fP がスローされます。 -.TP 2 -o -\f3none\fP -.LP -\f2sun.rmi.activation.execPolicy\fP プロパティーの値が「none」の場合、 \f2rmid\fP は、起動グループを開始するコマンドをまったく検証しません。 -.RE -.LP -.TP 3 -\-log dir -起動システムデーモンがデータベースおよび関連情報を書き込むのに使うディレクトリの名前を指定します。デフォルトでは、rmid コマンドを実行したディレクトリに、 \f2log\fP というログディレクトリが作成されます。 -.LP -.TP 3 -\-port port -\f2rmid\fP のレジストリが使うポートを指定します。起動システムデーモンは、このレジストリの中で、 \f2java.rmi.activation.ActivationSystem\fP という名前でActivationSystem をバインドします。したがって、ローカルマシン上の \f2ActivationSystem\fP は、次のように \f2Naming.lookup\fP メソッドを呼び出すことによって取得できます。 -.nf -\f3 -.fl - import java.rmi.*; -.fl - import java.rmi.activation.*; -.fl - -.fl - ActivationSystem system; system = (ActivationSystem) -.fl - Naming.lookup("//:\fP\f4port\fP/java.rmi.activation.ActivationSystem"); -.fl -.fi -.TP 3 -\-stop -\-port オプションによって指定されたポートの、現在の \f2rmid\fP 呼び出しを停止します。 ポートが指定されていない場合は、ポート 1098 で実行されている \f2rmid\fP を停止します。 -.RE - -.LP -.SH "環境変数" -.LP -.RS 3 -.TP 3 -CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。例を示します。 -.nf -\f3 -.fl - .:/usr/local/java/classes -.fl -\fP -.fi -.RE - -.LP -.SH "関連項目" -.LP -.LP -rmic(1)、 -.na -\f2CLASSPATH\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath、java(1) -.LP + permission com\&.sun\&.rmi\&.rmid\&.ExecPermission + "/files/apps/java/jdk1\&.7\&.0/solaris/bin/java"; + permission com\&.sun\&.rmi\&.rmid\&.ExecPermission + "/files/apps/rmidcmds/*"; + + permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission + "\-Djava\&.security\&.policy=/files/policies/group\&.policy"; + + permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission + "\-Djava\&.security\&.debug=*"; + + permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission + "\-Dsun\&.rmi\&.*"; +}; +.fi +.if n \{\ +.RE +.\} +最初に付与されている権限は、\fIrmid\fRコマンドに対し、パス名により明示的に指定される\fIjava\fRコマンドの1\&.7\&.0リリースの実行を許可します。デフォルトでは、\fIjava\&.home\fRにあるバージョンの\fIjava\fRコマンドを使用します。\fIrmid\fRコマンドが使用するのと同じバージョンが使用されるため、そのコマンドは、ポリシー・ファイルで指定する必要はありません。2番目の権限は、\fIrmid\fRコマンドに対して、ディレクトリ\fI/files/apps/rmidcmds\fR内の任意のコマンドの実行権限を許可します。 +.sp +3番目に付与されている権限\fIExecOptionPermission\fRは、\fIrmid\fRコマンドに対して、セキュリティ・ポリシー・ファイルを\fI/files/policies/group\&.policy\fRとして定義している起動グループの開始を許可します。次の権限は、起動グループが\fIjava\&.security\&.debug property\fRを使用することを許可しています。最後の権限は、起動グループが\fIsun\&.rmi property\fR名の階層内の任意のプロパティを使用することを許可しています。 +.sp +ポリシー・ファイルを指定して\fIrmid\fRコマンドを起動するには、\fIrmid\fRのコマンドラインで\fIjava\&.security\&.policy\fRプロパティを指定する必要があります。次に例を示します。 +.sp +\fIrmid \-J\-Djava\&.security\&.policy=rmid\&.policy\fR\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +<policyClassName> +.sp +デフォルトの動作では十分な柔軟性が得られない場合、管理者は、\fIrmid\fRの起動時に、\fIcheckExecCommand\fRメソッドが所属するクラスの名前を指定して、\fIrmid\fRコマンドが実行するコマンドをチェックすることができます。 +.sp +\fIpolicyClassName\fRには、引数なしのコンストラクタを持ち、次のような\fIcheckExecCommand\fRメソッドを実装しているpublicクラスを指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + public void checkExecCommand(ActivationGroupDesc desc, String[] command) + throws SecurityException; +.fi +.if n \{\ +.RE +.\} +起動グループを開始する前に、\fIrmid\fRコマンドは、ポリシーの\fIcheckExecCommand\fRメソッドを呼び出します。このとき、起動グループの記述子と、起動グループを開始するための完全なコマンドを含む配列をそのメソッドに渡します。\fIcheckExecCommand\fRが\fISecurityException\fRをスローすると、\fIrmid\fRコマンドはその起動グループを開始せず、オブジェクトの起動を試行している呼出し側には\fIActivationException\fRがスローされます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +none +.sp +\fIsun\&.rmi\&.activation\&.execPolicy\fRプロパティの値が\fInone\fRの場合、\fIrmid\fRコマンドは、起動グループを開始するコマンドをまったく検証しません。 +.RE +.RE +.PP +\-log \fIdir\fR +.RS 4 +起動システム・デーモンがデータベースおよび関連情報を書き込むのに使用するディレクトリの名前を指定します。デフォルトでは、\fIrmid\fRコマンドを実行したディレクトリに、logというログ・ディレクトリが作成されます。 +.RE +.PP +\-port \fIport\fR +.RS 4 +レジストリが使用するポートを指定します。起動システム・デーモンは、このレジストリの中で、\fIjava\&.rmi\&.activation\&.ActivationSystem\fRという名前で\fIActivationSystem\fRをバインドします。ローカル・マシン上の\fIActivationSystem\fRは、次のように\fINaming\&.lookup\fRメソッドを呼び出すことによって取得できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +import java\&.rmi\&.*; + import java\&.rmi\&.activation\&.*; + + ActivationSystem system; system = (ActivationSystem) + Naming\&.lookup("//:port/java\&.rmi\&.activation\&.ActivationSystem"); +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-stop +.RS 4 +\fI\-port\fRオプションによって指定されたポートの、現在の\fIrmid\fRコマンドの呼出しを停止します。ポートが指定されていない場合は、このオプションはポート1098で実行されている\fIrmid\fRの呼出しを停止します。 +.RE +.SH "環境変数" +.PP +CLASSPATH +.RS 4 +ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで区切られます。例: +\fI\&.:/usr/local/java/classes\fR +.RE +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Setting the Class Path +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/rmiregistry.1 b/jdk/src/linux/doc/man/ja/rmiregistry.1 index 264c3c1cfa6..2786a5b1a3c 100644 --- a/jdk/src/linux/doc/man/ja/rmiregistry.1 +++ b/jdk/src/linux/doc/man/ja/rmiregistry.1 @@ -1,83 +1,132 @@ -." 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 -." 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 rmiregistry 1 "07 May 2011" - -.LP -.SH "名前" -rmiregistry \- Java リモートオブジェクトレジストリ -.LP -.RS 3 -\f3rmiregistry\fP コマンドは、現在のホストの指定したポート上にリモートオブジェクトレジストリを開始します。 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: rmiregistry +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Remote Method Invocation (RMI)ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "rmiregistry" "1" "2013年11月21日" "JDK 8" "Remote Method Invocation (RMI)" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +rmiregistry \- 現在のホストの指定したポート上にリモート・オブジェクト・レジストリを開始します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -rmiregistry [\fP\f4port\fP\f3] -.fl -\fP +\fIrmiregistry\fR [ \fIport\fR ] .fi - -.LP -.SH "説明" -.LP -.LP -\f3rmiregistry\fP コマンドは、現在のホストの指定 \f2port\fP 上にリモートオブジェクトレジストリを作成し、開始します。\f2port\fP の指定を省略した場合、レジストリはポート 1099 で開始します。\f3rmiregistry\fP コマンドに、出力機能はありません。通常、これはバックグラウンドで実行されます。例を示します。 -.LP -.LP -\f2rmiregistry&\fP -.LP -.LP -リモートオブジェクトレジストリは、ブートストラップのネームサービスです。同一ホストの RMI サーバーが、リモートオブジェクトを名前にバインドするために使用されます。次に、ローカルおよびリモートホストのクライアントはリモートオブジェクトを検索し、リモートメソッドの呼び出しを行います。 -.LP -.LP -レジストリは、一般的に、最初のリモートオブジェクトの位置を指定します。 そこで、アプリケーションはメソッドを呼び出す必要があります。代わって、そのオブジェクトはアプリケーション指定のサポートを提供し、他のオブジェクトを探します。 -.LP -.LP -\f2java.rmi.registry.LocateRegistry\fP クラスのメソッドは、ローカルホスト、またはローカルホストとポートで動作するレジストリを取得するために使用されます。 -.LP -.LP -\f2java.rmi.Naming\fP クラスの URL ベースのメソッドは、レジストリで動作し、任意のホストおよびローカルホスト上のリモートオブジェクトの検索に使用されます。リモートオブジェクトに単純な (文字列) 名前をバインドしたり、新しい名前をリバインド (古いバインドにオーバーライド) します。またリモートオブジェクトをアンバインドしたり、レジストリにバインドされた URL を出力します。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -\-J -\f2\-J\fP の後ろに続くオプションを \f2java\fP インタプリタに引き渡します。 \f2java\fP オプションと組み合わせて使います (\-J と java オプションの間にスペースは入れない)。 +.if n \{\ +.RE +.\} +.PP +\fIport\fR +.RS 4 +リモート・オブジェクト・レジストリを開始する現在のホスト上の\fIport\fRの数。 +.RE +.SH "説明" +.PP +\fIrmiregistry\fRコマンドは、現在のホストの指定したポート上にリモート・オブジェクト・レジストリを作成し、開始します。portの指定を省略した場合、レジストリはポート1099で開始します。\fIrmiregistry\fRコマンドに、出力機能はありません。通常、これはバックグラウンドで実行されます。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +rmiregistry & +.fi +.if n \{\ +.RE +.\} +.PP +リモート・オブジェクト・レジストリは、ブートストラップのネーム・サービスです。同一ホストのRMIサーバーが、リモート・オブジェクトを名前にバインドするために使用されます。次に、ローカルおよびリモート・ホストのクライアントはリモート・オブジェクトを検索し、リモート・メソッドの呼出しを行います。 +.PP +レジストリは、一般的に、最初のリモート・オブジェクトの位置を指定します。そこで、アプリケーションはメソッドを呼び出す必要があります。その後、そのオブジェクトはアプリケーション指定のサポートを提供し、他のオブジェクトを探します。 +.PP +\fIjava\&.rmi\&.registry\&.LocateRegistry\fRクラスのメソッドは、ローカル・ホスト、またはローカル・ホストとポートで動作するレジストリを取得するために使用されます。 +.PP +\fIjava\&.rmi\&.Naming\fRクラスのURLベース・メソッドはレジストリに対して操作を実行し、任意のホストおよびローカル・ホストでのリモート・オブジェクトの検索に使用できます。単純名(文字列)をリモート・オブジェクトにバインドし、新しい名前をリモート・オブジェクトに再バインドし(古いバインドをオーバーライド)、リモート・オブジェクトをアンバインドし、レジストリにバインドされているURLをリスト表示します。 +.SH "オプション" +.PP +\-J +.RS 4 +Javaオプションとともに使用して、\fI\-J\fRの後ろに続くオプションをJavaインタプリタに引き渡します(\fI\-J\fRとオプションの間にスペースは入れません)。 .RE - -.LP .SH "関連項目" -.LP -java(1)、 -.na -\f2java.rmi.registry.LocateRegistry\fP @ -.fi -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 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI「java\&.rmi\&.registry\&.LocateRegistry」\fR(http://docs\&.oracle\&.com/javase/8/docs/api/java/rmi/registry/LocateRegistry\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI「java\&.rmi\&.Naming class description」\fR(http://docs\&.oracle\&.com/javase/8/docs/api/java/rmi/Naming\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/schemagen.1 b/jdk/src/linux/doc/man/ja/schemagen.1 index cb86632a14a..60deab8308d 100644 --- a/jdk/src/linux/doc/man/ja/schemagen.1 +++ b/jdk/src/linux/doc/man/ja/schemagen.1 @@ -1,127 +1,158 @@ -." 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. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please 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 schemagen 1 "07 May 2011" - -.LP -.SH "名前" -schemagen \- XML バインドのための Java(TM) アーキテクチャースキーマジェネレータ -.LP -.LP -\f3仕様バージョン:\fP 2.1 -.br -\f3実装バージョン:\fP 2.1.3 -.LP -.SH "schemagen の起動" -.LP -.LP -スキーマジェネレータを起動するには、ユーザーのプラットフォームの bin ディレクトリ内にある \f2適切な schemagen シェルスクリプト\fP を使用 \f2します\fP 。 -.LP -.LP -現在のスキーマジェネレータは、Java ソースファイルとクラスファイルのいずれも処理できます。 -.LP -.LP -また、スキーマジェネレータを実行するための Ant タスクも用意されています。 -.na -\f2schemagen を Ant とともに使用する\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlための手順を参照してください。 -.LP +'\" t +.\" Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: schemagen +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java Webサービス・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "schemagen" "1" "2013年11月21日" "JDK 8" "Java Webサービス・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +schemagen \- Javaクラス内で参照されているネームスペースごとにスキーマを生成します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% schemagen.sh Foo.java Bar.java ... -.fl -Note: Writing schema1.xsd -.fl -\fP +\fIschemagen\fR [ \fIoptions\fR ] \fIjava\-files\fR .fi - -.LP -.LP -ユーザーの Java ソース/クラスがほかのクラスを参照している場合、システムの 環境変数経由でそれらのクラスにアクセスできるようになっているか、あるいは \f2\-classpath\fP/\f2\-cp\fP を使ってそれらのクラスをツールに指定する必要があります。そうしないと、スキーマの生成時にエラーが発生します。 -.LP -.SS -コマンド行オプション -.LP -.nf -\f3 -.fl -使用方法: schemagen [\-options ...] <java files> -.fl - -.fl -オプション: -.fl - \-d <path> : プロセッサおよび javac によって生成されるクラスファイルの格納場所を指定します。 -.fl - \-cp <path> : ユーザー指定ファイルの検索場所を指定します。 -.fl - \-classpath <path> : ユーザー指定ファイルの検索場所を指定します。 -.fl - \-encoding <encoding> : apt/javac 呼び出しに使用されるエンコーディングを指定します。 -.fl - -.fl - \-episode <file> : 個別コンパイル用のエピソードファイルを生成します。 -.fl - \-version : バージョン情報を表示します。 -.fl - \-help : この使用方法に関するメッセージを表示します。 -.fl -\fP -.fi - -.LP -.SH "生成されるリソースファイル" -.LP -.LP -現在のスキーマジェネレータは単純に、Java クラス内で参照されている名前空間ごとに 1 つのスキーマファイルを作成します。生成されるスキーマファイルの名前を制御する方法は、現時点では存在しません。そうした目的には、 -.na -\f2スキーマジェネレータの ant タスク\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlを使用してください。 -.LP -.SH "名前" -関連項目 -.LP -.RS 3 -.TP 2 -o -スキーマジェネレータの実行 (schemagen): [ -.na -\f2コマンド行の命令\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagen.html、 -.na -\f2SchemaGen を Ant とともに使用する\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.html] -.TP 2 -o -.na -\f2XML バインドのための JavaTM アーキテクチャー (JAXB)\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/xml/jaxb/index.html +.if n \{\ .RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIjava\-files\fR +.RS 4 +処理するJavaクラス・ファイル。 +.RE +.SH "説明" +.PP +スキーマ・ジェネレータは、Javaクラス内で参照されているネームスペースごとに1つのスキーマ・ファイルを作成します。現在、生成されるスキーマ・ファイルの名前は制御できません。スキーマ・ファイル名を制御する場合は、http://jaxb\&.java\&.net/nonav/2\&.2\&.3u1/docs/schemagenTask\&.htmlにある +「Using SchemaGen with Ant」を参照してください +.PP +プラットフォームのbinディレクトリにある適切な\fIschemagen\fRシェル・スクリプトを使用して、スキーマ・ジェネレータを起動します。現在のスキーマ・ジェネレータは、Javaソース・ファイルとクラス・ファイルのいずれも処理できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +schemagen\&.sh Foo\&.java Bar\&.java \&.\&.\&. +Note: Writing schema1\&.xsd +.fi +.if n \{\ +.RE +.\} +.PP +javaファイルが他のクラスを参照している場合、それらのクラスにシステム\fICLASSPATH\fR環境変数でアクセスできる必要があります。または、クラス・パス・オプションを指定して\fIschemagen\fRコマンド・ラインで指定する必要があります。オプションを参照してください。参照されるファイルにアクセスできない、または参照されるファイルが指定されていない場合、スキーマの生成時にエラーが表示されます。 +.SH "オプション" +.PP +\-d \fIpath\fR +.RS 4 +\fIschemagen\fRコマンドがプロセッサ生成および\fIjavac\fR生成クラス・ファイルを配置する場所。 +.RE +.PP +\-cp \fIpath\fR +.RS 4 +\fIschemagen\fRコマンドがユーザー指定ファイルを配置する場所。 +.RE +.PP +\-classpath \fIpath\fR +.RS 4 +\fIschemagen\fRコマンドがユーザー指定ファイルを配置する場所。 +.RE +.PP +\-encoding \fIencoding\fR +.RS 4 +\fIapt\fRまたは\fIjavac\fRコマンドの呼出しに使用するエンコーディングを指定します。 +.RE +.PP +\-episode \fIfile\fR +.RS 4 +コンパイルごとにエピソード・ファイルを生成します。 +.RE +.PP +\-version +.RS 4 +リリース情報を表示します。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示します。 +.RE +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Using SchemaGen with Ant -.LP - +(http://jaxb\&.java\&.net/nonav/2\&.2\&.3u1/docs/schemagenTask\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Java Architecture for XML Binding (JAXB) + +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/xml/jaxb/index\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/serialver.1 b/jdk/src/linux/doc/man/ja/serialver.1 index e06b12e9de1..e527c1694f4 100644 --- a/jdk/src/linux/doc/man/ja/serialver.1 +++ b/jdk/src/linux/doc/man/ja/serialver.1 @@ -1,97 +1,144 @@ -." 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 -." 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 serialver 1 "07 May 2011" - -.LP -.SH "名前" -serialver \- シリアルバージョンコマンド -.LP -.LP -\f3serialver\fP コマンドは \f2serialVersionUID\fP を返します。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: serialver +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Remote Method Invocation (RMI)ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "serialver" "1" "2013年11月21日" "JDK 8" "Remote Method Invocation (RMI)" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +serialver \- 指定したクラスのシリアル・バージョンUIDを戻します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3serialver\fP [ options ] [ classnames ] -.fl +\fIserialver\fR [ \fIoptions\fR ] [ \fIclassnames\fR ] .fi - -.LP -.RS 3 -.TP 3 -options -このドキュメントで説明されているコマンド行オプションです。 -.TP 3 -classnames -1 つ以上のクラス名です。 +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIclassnames\fR +.RS 4 +\fIserialVersionUID\fRを戻すクラスです。 .RE - -.LP .SH "説明" -.LP -.LP -\f3serialver\fP は、1 つ以上のクラスの \f2serialVersionUID\fP を、展開しているクラスへコピーするのに適した形式で返します。引数を指定しないで呼び出すと、使用方法が表示されます。 -.LP +.PP +\fIserialver\fRコマンドは、1つ以上のクラスの\fIserialVersionUID\fRを、展開しているクラスへコピーするのに適した形式で返します。引数なしで呼び出された場合、\fIserialver\fRコマンドは使用率行を出力します。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-classpath <: で区切られたディレクトリと zip や jar ファイル> -アプリケーションのクラスおよびリソースの検索パスを設定します。 +.PP +\-classpath \fIpath\-files\fR +.RS 4 +アプリケーションのクラスおよびリソースの検索パスを設定します。クラスとリソースをコロン(:)で区切ります。 .RE - -.LP -.RS 3 -.TP 3 -\-show -簡単なユーザーインタフェースを表示します。完全指定のクラス名を入力して、Enter キーか「Show」ボタンを押し、シリアルバージョン UID を表示します。 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +.PP +\-show +.RS 4 +簡単なユーザー・インタフェースを表示します。完全指定のクラス名を入力して、Enterキーか「表示」ボタンを押し、\fIserialVersionUID\fRを表示します。 .RE - -.LP -.SH "注" -.LP -.LP -\f3serialver\fP コマンドは、指定されたクラスをその仮想マシン内に読み込んで初期化しますが、デフォルトではセキュリティーマネージャーの設定は行いません。信頼できないクラスとともに \f3serialver\fP を実行する場合には、次のオプションを使ってセキュリティーマネージャーを設定できます。 -.LP -.LP -\f2\-J\-Djava.security.manager\fP -.LP -.LP -また、必要であれば、次のオプションを使ってセキュリティーポリシーを指定できます。 -.LP -.LP -\f2\-J\-Djava.security.policy=<policy file>\fP -.LP -.SH "関連項目" -.LP -.LP -.na -\f2java.io.ObjectStreamClass\fP @ +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンに\fIoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "注意" +.PP +\fIserialver\fRコマンドは、指定されたクラスをその仮想マシン内に読み込んで初期化しますが、デフォルトではセキュリティ・マネージャの設定は行いません。信頼できないクラスとともに\fIserialver\fRコマンドを実行する場合には、次のオプションを使用してセキュリティ・マネージャを設定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-J\-Djava\&.security\&.manager .fi -http://java.sun.com/javase/6/docs/api/java/io/ObjectStreamClass.html -.LP - +.if n \{\ +.RE +.\} +.PP +必要であれば、次のオプションを使用してセキュリティ・ポリシーを指定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-J\-Djava\&.security\&.policy=<policy file> +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +policytool(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/8/docs/api/java/io/ObjectStreamClass\&.htmlにある +\fIjava\&.io\&.ObjectStream\fRクラス記述 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/servertool.1 b/jdk/src/linux/doc/man/ja/servertool.1 index 2e8fc6d97e3..71ab6b65ed1 100644 --- a/jdk/src/linux/doc/man/ja/servertool.1 +++ b/jdk/src/linux/doc/man/ja/servertool.1 @@ -1,113 +1,199 @@ -." 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 -." 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 servertool 1 "07 May 2011" - -.LP -.SH "名前" -servertool \- Java(TM) IDL サーバーツール -.LP -\f3servertool\fP はアプリケーションプログラマが、持続サーバーの登録、登録解除、起動、および停止を行うためのコマンド行インタフェースを提供します。 -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: servertool +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java IDLおよびRMI-IIOPツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "servertool" "1" "2013年11月21日" "JDK 8" "Java IDLおよびRMI-IIOPツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +servertool \- 開発者が永続サーバーを登録、登録解除、起動、停止するための使いやすいユーザー・インタフェースを提供します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -servertool \-ORBInitialPort \fP\f4nameserverport\fP\f3 \fP\f3options\fP\f3 [ \fP\f3commands\fP\f3 ] -.fl -\fP +\fIservertool\fR \-ORBInitialPort \fInameserverport\fR [ \fIoptions\fR ] [ \fIcommands \fR] .fi - -.LP -.LP -コマンドを入力しないで \f2servertool\fP を起動すると、コマンド行ツールとして \f2servertool >\fP プロンプトが表示されます。\f2servertool >\fP プロンプトにコマンドを入力します。 -.LP -.LP -コマンドを入力して \f2servertool\fP を起動すると、Java IDL サーバーツールが起動し、コマンドを実行して終了します。 -.LP -.LP -\f2\-ORBInitialPort\fP \f2nameserverport\fP オプションは\f3必須\fPです。 \f2nameserverport\fP の値には、\f2orbd\fP が実行され、着信要求を待機しているポートを指定する必要があります。Solaris ソフトウェアを使用する場合、1024 より小さいポート上でプロセスを開始するには、root ユーザーになる必要があります。このため、\f2nameserverport\fPとして 1024 以上のポート番号を使用することをお勧めします。 -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +commands +.RS 4 +コマンドライン・コマンド。コマンドを参照してください。 +.RE +.PP +\fIservertool\fR\fIservertool >\fR\fIservertool >\fR .SH "説明" -.LP -.LP -\f2servertool\fP はアプリケーションプログラマが、持続サーバーの登録、登録解除、起動、および停止を行うためのコマンド行インタフェースを提供します。そのほかに、サーバーに関するさまざまな統計情報を取得するためのコマンドも提供します。 -.LP +.PP +\fIservertool\fRコマンドは、開発者が永続サーバーを登録、登録解除、起動、停止するためのコマンドライン・インタフェースを提供します。コマンドライン・コマンドを使用すると、サーバーに関する様々な統計情報を取得できます。コマンドを参照してください。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-ORBInitialHost nameserverhost -ネームサーバーが、実行され、着信要求を待機しているホストマシンを指定します。このオプションを指定しない場合、\f2nameserverhost\fP はデフォルトで \f2localhost\fP に設定されます。\f2orbd\fP と \f2servertool\fP が異なるマシン上で実行されている場合は、\f2orbd\fP が実行されているホストの名前と IP アドレスを指定する必要があります。 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って背後の実行環境にオプションを渡すことはよく行われています。 +.PP +\-ORBInitialHost \fInameserverhost\fR +.RS 4 +このオプションは必須です。ネーム・サーバーが実行され、着信リクエストをリスニングするホスト・マシンを指定します。\fInameserverhost\fR値は、\fIorb\fRが実行され、リクエストをリスニングしているポートを指定する必要があります。このオプションを指定しない場合、値はデフォルトで\fIlocalhost\fRに設定されます。\fIorbd\fRと\fIservertool\fRが異なるマシン上で実行されている場合は、\fIorbd\fRが実行されているホストの名前またはIPアドレスを指定する必要があります。 +.sp +\fB注意:\fR +Oracle Solarisでは、1024より小さいポート上でプロセスを開始するには、rootユーザーになる必要があります。\fInameserverport\fR値には、1024以上のポート番号を使用することをお薦めします。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンに\fIoption\fRを渡します。\fIoption\fRには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 .RE - -.LP .SH "コマンド" -.LP -.RS 3 -.TP 3 -register \-server\ <server\ class\ name> \ \-classpath\ <classpath\ to\ server> [\ \-applicationName\ <application\ name> \-args\ <args\ to\ server> \-vmargs\ <flags\ to\ be\ passed\ to\ Java\ VM> \ ] -Object Request Broker Daemon (ORBD) に新規持続サーバーを登録します。サーバーが未登録の場合、登録して起動します。このコマンドによって、\f2\-server\fP オプションで識別されるサーバーのメインクラス内でインストールメソッドが呼び出されます。このインストールメソッドは、\f2public static void install(org.omg.CORBA.ORB)\fP になっている必要があります。インストールメソッドは、オプションであり、データベーススキーマの作成などの独自のサーバーインストール動作を開発者が指定できます。 -.TP 3 -unregister \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -サーバー ID またはアプリケーション名を使用して、ORBD のサーバーの登録を解除します。このコマンドによって、\f2\-server\fP オプションで識別されるサーバーのメインクラス内でアンインストールメソッドが呼び出されます。このアンインストールメソッドは、\f2public static void uninstall(org.omg.CORBA.ORB)\fP になっている必要があります。アンインストールメソッドは、オプションであり、インストールメソッドの動作の取り消しなどの独自のサーバーアンインストール動作を開発者が指定できます。 -.TP 3 -getserverid \-applicationName\ <application\ name> -アプリケーションに関連付けられているサーバー ID を返します。 -.TP 3 -list -ORBD に登録されているすべての持続サーバーに関する情報を一覧表示します。 -.TP 3 -listappnames -現在 ORBD に登録されているすべてのサーバーのアプリケーション名を一覧表示します。 -.TP 3 -listactive -ORDB によって起動され、現在実行されているすべての持続サーバーに関する情報を一覧表示します。 -.TP 3 -locate \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> [\-endpointType\ <endpointType>\ ] -登録されたサーバーで作成したすべての ORB の特定の型について端点 (ポート) を検出します。サーバーが実行されていない場合、起動されます。端点の型が指定されていない場合、サーバーの ORB ごとに関連付けられている plain 型 または non\-protected 型の端点が返されます。 -.TP 3 -locateperorb \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> [\-orbid\ <ORB\ name>\ ] -登録されたサーバーの特定の ORB で登録された端点 (ポート) を検出します。サーバーが実行されていない場合、起動されます。\f2orbid\fP が指定されていない場合は、デフォルト値の「""」が\f2orbid\fPに割り当てられます。ORB が空文字列の \f2orbid\fP で作成されている場合、登録したポートがすべて返されます。 -.TP 3 -orblist \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -サーバー上に定義された ORB の ORBId を一覧表示します。ORBId はサーバーで作成された ORB の文字列名です。サーバーが実行されていない場合、起動されます。 -.TP 3 -shutdown \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -ORBD に登録されたアクティブなサーバーを停止します。このコマンドの実行中に、\f2\-serverid\fP パラメータまたは \f2\-applicationName\fP パラメータで指定されたクラス内に定義された \f2shutdown()\fP メソッドも呼び出されてサーバープロセスを正しく停止します。 -.TP 3 -startup \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -ORBD に登録されたサーバーを起動します。サーバーが実行されていない場合は、このコマンドでサーバーを起動します。サーバーがすでに実行されている場合は、ユーザーにエラーメッセージが返されます。 -.TP 3 -help -サーバーがサーバーツールで使用できるすべてのコマンドを表示します。 -.TP 3 -quit -サーバーツールを終了します。 +.PP +\fIservertool\fRコマンドは、コマンドライン・コマンドを使用して、または使用せずに起動できます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIservertool\fRの起動時にコマンドを指定しなかった場合、コマンドライン・ツールにコマンド入力を求める\fIservertool\fRプロンプトが表示されます: +\fIservertool >\fR。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIservertool\fRの起動時にコマンドを指定した場合、Java IDL Server Toolが起動してコマンドを実行し、終了します。 +.RE +.PP +register \-server \fIserver\-class\-name\fR \-classpath \fIclasspath\-to\-server\fR [ \-applicationName \fIapplication\-name\fR \-args \fIargs\-to\-server\fR \-vmargs \fIflags\-for\-JVM\fR ] +.RS 4 +Object Request Broker Daemon (ORBD)に新規永続サーバーを登録します。サーバーが未登録の場合、登録してアクティブ化します。このコマンドによって、\fI\-server\fRオプションで識別されるサーバーの\fIメイン\fR・クラス内でインストール・メソッドが呼び出されます。このインストール・メソッドは、\fIpublic static void install(org\&.omg\&.CORBA\&.ORB)\fRになっている必要があります。インストール・メソッドはオプションであり、開発者はデータベース・スキーマの作成など独自のサーバー・インストール動作を指定できます。 +.RE +.PP +unregister \-serverid \fIserver\-id\fR | \-applicationName \fIapplication\-name\fR +.RS 4 +サーバーIDまたはアプリケーション名で、サーバーをORBDから登録解除します。このコマンドによって、\fI\-server\fRオプションで識別されるサーバーの\fIメイン\fR・クラス内でアンインストール・メソッドが呼び出されます。 +\fIuninstall\fRメソッドは、\fIpublic static void uninstall(org\&.omg\&.CORBA\&.ORB)\fRになっている必要があります。\fIuninstall\fRメソッドはオプションであり、開発者は\fIinstall\fRメソッドの動作の取消など、独自のサーバー・アンインストール動作を指定できます。 +.RE +.PP +getserverid \-applicationName \fIapplication\-name\fR +.RS 4 +\fIapplication\-name\fR値に対応するサーバーIDを返します。 +.RE +.PP +list +.RS 4 +ORBDに登録されているすべての永続サーバーに関する情報を一覧表示します。 +.RE +.PP +listappnames +.RS 4 +現在ORBDに登録されているすべてのサーバーのアプリケーション名を一覧表示します。 +.RE +.PP +listactive +.RS 4 +ORBDによって起動され、現在実行されているすべての永続サーバーに関する情報を一覧表示します。 +.RE +.PP +locate \-serverid \fIserver\-id\fR | \-applicationName \fIapplication\-name\fR [ \-endpointType \fIendpointType\fR ] +.RS 4 +登録されたサーバーで作成したすべてのORBの特定のタイプについてエンドポイント(ポート)を検出します。サーバーが実行されていない場合、アクティブ化されます。\fIendpointType\fR値が指定されていない場合、サーバーのORBごとに関連付けられているplainタイプまたはnon\-protectedタイプのエンドポイントが返されます。 +.RE +.PP +locateperorb \-serverid \fIserver\-id\fR | \-applicationName \fIapplication\-name\fR [ \-orbid \fIORB\-name\fR ] +.RS 4 +登録されたサーバーの特定のObject Request Broker (ORB)で登録されたエンドポイント(ポート)を検出します。サーバーが実行されていない場合、アクティブ化されます。\fIorbid\fRが指定されていない場合、デフォルト値の\fI""\fRが\fIorbid\fRに割り当てられます。ORBが空文字列の\fIorbid\fRで作成されている場合、登録したポートがすべて返されます。 +.RE +.PP +orblist \-serverid \fIserver\-id\fR | \-applicationName \fIapplication\-name\fR +.RS 4 +サーバー上に定義されたORBの\fIORBId\fRを一覧表示します。\fIORBId\fRはサーバーで作成されたORBの文字列名です。サーバーが実行されていない場合、アクティブ化されます。 +.RE +.PP +shutdown \-serverid \fIserver\-id\fR | \-applicationName application\-name +.RS 4 +ORBDに登録されたアクティブなサーバーを停止します。このコマンドの実行中に、\fI\-serverid\fRパラメータまたは\fI\-applicationName\fRパラメータで指定されたクラス内に定義された\fIshutdown\fRメソッドも呼び出されてサーバー・プロセスを停止します。 +.RE +.PP +startup \-serverid \fIserver\-id\fR | \-applicationName application\-name +.RS 4 +ORBDに登録されたサーバーを起動またはアクティブ化します。サーバーが実行されていない場合、このコマンドがサーバーを起動します。サーバーがすでに実行されている場合は、エラー・メッセージが表示されます。 +.RE +.PP +help +.RS 4 +\fIservertool\fRコマンドを介してサーバーが利用できるすべてのコマンドをリストします。 +.RE +.PP +quit +.RS 4 +\fIservertool\fRコマンドを終了します。 .RE - -.LP .SH "関連項目" -.LP -orbd(1) +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +orbd(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/tnameserv.1 b/jdk/src/linux/doc/man/ja/tnameserv.1 index 229c3af8300..7a924315f3b 100644 --- a/jdk/src/linux/doc/man/ja/tnameserv.1 +++ b/jdk/src/linux/doc/man/ja/tnameserv.1 @@ -1,495 +1,425 @@ -." Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." under the terms of the GNU General Public License version 2 only, as -." published by the Free Software Foundation. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -." or visit www.oracle.com if you need additional information or have any -." questions. -." -.TH tnameserv 1 "07 May 2011" - -.LP -.SH "名前" -Java IDL: 一時ネームサービス \- \f2tnameserv\fP -.LP -.LP -このドキュメントでは、Java IDL 一時ネームサービス \f2tnameserv\fP の使用方法について説明します。Java IDL には、Object Request Broker Daemon (ORBD) も含まれています。ORBD は、ブートストラップサービス、一時ネームサービス、\f3持続\fPネームサービス、およびサーバーマネージャーを含むデーモンプロセスです。Java IDL のすべてのチュートリアルでは ORBD を使用していますが、一時ネームサービスを使用する例では、\f2orbd\fP の代わりに \f2tnameserv\fP を使用できます。\f2orbd\fP ツールの詳細については、orbd の orbd(1)または -.na -\f2ORBD に含まれる Java IDL ネームサービス\fP @ +'\" t +.\" Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: tnameserv +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java IDLおよびRMI-IIOPツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "tnameserv" "1" "2013年11月21日" "JDK 8" "Java IDLおよびRMI-IIOPツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +tnameserv \- インタフェース定義言語(IDL)。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fItnameserve\fR \fI\-ORBInitialPort\fR [ \fInameserverport\fR ] .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlに関するトピックを参照してください。 -.LP -.LP -ここでは、以下の項目について説明します。 -.LP -.RS 3 -.TP 2 -o -Java\ IDL 一時ネームサービス -.TP 2 -o -Java\ IDL 一時ネームサービスの起動 -.TP 2 -o -Java\ IDL 一時ネームサービスの停止 -.TP 2 -o -サンプルクライアント: 名前空間へのオブジェクトの追加 -.TP 2 -o -サンプルクライアント: 名前空間のブラウズ +.if n \{\ .RE - -.LP -.SH "Java IDL 一時ネームサービス" -.LP -.LP -CORBA の COS (Common Object Services) ネームサービスは、ファイルシステムがファイルに対してディレクトリ構造を提供しているのと同じように、オブジェクト参照に対してツリー構造のディレクトリを提供します。Java IDL の一時ネームサービスである \f2tnameserv\fP は、COS ネームサービスの仕様を単純な形で実装したものです。 -.LP -.LP -オブジェクト参照は名前空間に名前で格納され、オブジェクト参照と名前のペアは、それぞれ「ネームバインディング」と呼ばれます。ネームバインディングは「ネーミングコンテキスト」に組み込むことができます。ネーミングコンテキストはそれ自体がネームバインディングであり、ファイルシステムのサブディレクトリと同じ編成機能を持ちます。すべてのバインディングは「初期ネーミングコンテキスト」に格納されます。名前空間において、初期ネーミングコンテキストは唯一の持続的バインディングです。それ以外のネーミングコンテキストは、Java IDL のネーミングサービスプロセスが停止し、再起動されると失われます。 -.LP -.LP -アプレットまたはアプリケーションから COS ネームサービスを使用するためには、その ORB はネームサービスが動作しているホストのポートを知っているか、そのネームサービスの文字列化された初期ネーミングコンテキストにアクセスできなければなりません。ネームサービスは、Java IDL のネームサービスでもその他の COS 準拠のネームサービスでもかまいません。 -.LP -.SH "Java IDL 一時ネームサービスの起動" -.LP -.LP -Java IDL ネームサービスは、ネームサービスを使用するアプリケーションまたはアプレットより前に起動しておく必要があります。Java\ IDL 製品をインストールすると、Java\ IDL ネームサービスを起動するスクリプト (Solaris: \f2tnameserv\fP) または実行可能ファイル (Windows NT: \f2tnameserv.exe\fP) が作成されます。バックグラウンドで動作するように、ネームサービスを起動してください。 -.LP -.LP -特に指定しない場合、Java IDL ネームサービスは、ORB の \f2resolve_initial_references()\fP メソッドと \f2list_initial_references()\fP メソッドの実装に使用するブートストラッププロトコルに対してポート 900 で待機します。 -.LP -.nf -\f3 -.fl - tnameserv \-ORBInitialPort \fP\f4nameserverport\fP\f3& -.fl -\fP -.fi - -.LP -.LP -ネームサーバーポートを指定しない場合、デフォルトでポート 900 が使用されます。Solaris ソフトウェアの実行時は、1024 より小さいポートでプロセスを開始する場合、root ユーザーになる必要があります。このため、1024 または 1024 よりも大きいポート番号を使用することをお勧めします。1050 のように別のポートを指定し、ネームサービスをバックグラウンドで実行するには、UNIX コマンドシェルで次のように入力します。 -.LP -.nf -\f3 -.fl - tnameserv \-ORBInitialPort 1050& -.fl -\fP -.fi - -.LP -.LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 -.LP -.nf -\f3 -.fl - start tnameserv \-ORBInitialPort 1050 -.fl -\fP -.fi - -.LP -.LP -ネームサーバーのクライアントには、新しいポート番号を知らせる必要があります。このため、ORB オブジェクトの作成時に \f2org.omg.CORBA.ORBInitialPort\fP プロパティーに新しいポート番号を設定します。 -.LP -.SS -異なるマシン上でのクライアントとサーバーの実行 -.LP -.LP -Java IDL と RMI\-IIOP のほとんどのチュートリアルでは、ネームサービス、サーバー、およびクライアントはすべて開発用のマシン上で実行されます。実際に配備する場合には、クライアントとサーバーを、ネームサービスとは異なるホスト上で実行することが多くなります。 -.LP -.LP -クライアントとサーバーがネームサービスを見つけるには、クライアントとサーバーが、ネームサービスが実行されているポートの番号とホストを認識している必要があります。そのためには、クライアントとサーバーのファイル内の \f2org.omg.CORBA.ORBInitialPort\fP プロパティーと \f2org.omg.CORBA.ORBInitialHost\fP プロパティーをネームサービスが実行されているポートの番号とマシンの名前に設定します。この例は、 -.na -\f2「RMI\-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 を使用して、クライアントとサーバーに対してネームサービスを探す場所を指定することもできます。 -.na -\f2「Java IDL: 2 台のマシン上で実行する Hello World プログラム」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/tutorial/jidl2machines.html には、コマンド行オプションを使用して指定する方法が示されています。 -.LP -.LP -たとえば、一時ネームサービス \f2tnameserv\fP が、ホスト \f2nameserverhost\fP のポート 1050 上で実行されているとします。さらに、クライアントがホスト \f2clienthost\fP 上で実行され、サーバーはホスト \f2serverhost\fP 上で実行されているとします。 -.LP -.RS 3 -.TP 2 -o -次のように、ホスト \f2nameserverhost\fP 上で \f2tnameserv\fP を起動します。 -.nf -\f3 -.fl - tnameserv \-ORBInitialPort 1050 -.fl - -.fl -\fP -.fi -.TP 2 -o -\f2serverhost\fP 上でサーバーを起動します。 -.nf -\f3 -.fl - java Server \-ORBInitialPort 1050 \-ORBInitialHost nameserverhost -.fl -\fP -.fi -.TP 2 -o -\f2clienthost\fP 上でクライアントを起動します。 -.nf -\f3 -.fl - java Client \-ORBInitialPort 1050 \-ORBInitialHost nameserverhost -.fl -\fP -.fi +.\} +.PP +\-ORBInitialPort \fInameserverport\fR +.RS 4 +ネーミング・サービスがORBの\fIresolve_initial_references\fRメソッドと\fIlist_initial_references\fRメソッドの実装に使用するブートストラップ・プロトコルをリスニングする初期ポートです。 .RE - -.LP -.SS -\-J オプション -.LP -このコマンド行オプションは、\f2tnameserve\fP とともに使用できます。 -.RS 3 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って背後の実行環境にオプションを渡すことはよく行われています。 +.SH "説明" +.PP +Java IDLには、Object Request Broker Daemon (ORBD)が含まれます。ORBDは、ブートストラップ・サービス、一時ネーミング・サービス、永続ネーミング・サービスおよびサーバー・マネージャを含むデーモン・プロセスです。Java IDLのすべてのチュートリアルではORBDを使用していますが、一時ネーミング・サービスを使用する例では、\fIorbd\fRのかわりに\fItnameserv\fRを使用できます。 +.PP +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/jidlNaming\&.htmlにある +orbd(1)または「Naming Service」を参照してください。 +.PP +CORBAのCOS (Common Object Services)ネーミング・サービスは、ファイル・システムがファイルに対してディレクトリ構造を提供しているのと同じように、オブジェクト参照に対してツリー構造のディレクトリを提供します。Java IDLの一時ネーム・サービスである\fItnameserv\fRは、COSネーム・サービスの仕様を単純な形で実装したものです。 +.PP +オブジェクト参照はネームスペースに名前で格納され、オブジェクト参照と名前のペアは、それぞれネーム・バインディングと呼ばれます。ネーム・バインディングはネーミング・コンテキストに組み込むことができます。ネーミング・コンテキストはネーム・バインディングであり、ファイル・システムのサブディレクトリと同じ編成機能を持ちます。すべてのバインディングは初期ネーミング・コンテキストの下に格納されます。初期ネーミング・コンテキストは、ネームスペースの唯一の永続バインディングです。Java IDLネーミング・サービス・プロセスを停止して再起動すると、残りのネームスペースは失われます。 +.PP +アプレットまたはアプリケーションからCOSネーミング・サービスを使用するためには、そのORBがネーミング・サービスが動作しているホストのポートを知っているか、そのネーミング・サービスの初期ネーミング・コンテキスト文字列にアクセスできる必要があります。ネーム・サービスは、Java IDLのネーム・サービスでもその他のCOS準拠のネーム・サービスでもかまいません。 +.SS "ネーミング・サービスの起動" +.PP +Java IDLネーム・サービスは、ネーム・サービスを使用するアプリケーションまたはアプレットより前に起動しておく必要があります。Java IDL製品をインストールすると、Java IDLネーミング・サービスを起動するスクリプト(Oracle Solaris: +\fItnameserv\fR)または実行可能ファイル(Windows: +\fItnameserv\&.exe\fR)が作成されます。バックグラウンドで動作するように、ネーム・サービスを起動してください。 +.PP +特に指定しない場合、Java IDLネーミング・サービスは、ORBの\fIresolve_initial_references\fRメソッドと\fIlist_initial_references methods\fRメソッドの実装に使用するブートストラップ・プロトコルに対してポート900でリスニングします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +tnameserv \-ORBInitialPort nameserverport& +.fi +.if n \{\ .RE - -.LP -.SH "Java IDL 一時ネームサービスの停止" -.LP -.LP -Java IDL ネームサービスを停止するには、Unix の場合は、\f2kill\fP などのオペレーティングシステムのコマンドを使い、Windows の場合は、\f2Ctrl\-C\fP を使います。ネームサービスを明示的に停止するまでは、呼び出し待機状態が続きます。なお、サービスを終了させると、Java IDL ネームサービスに登録されている名前は失われます。 -.LP -.SH "サンプルクライアント: 名前空間へのオブジェクトの追加" -.LP -.LP -次に示すサンプルプログラムは、名前を名前空間に追加する方法を示すものです。このサンプルプログラムは、このままの状態で完全に動作する一時ネームサービスクライアントで、次のような単純なツリーを作成するものです。 -.LP +.\} +.PP +ネーム・サーバー・ポートを指定しない場合、デフォルトでポート900が使用されます。Oracle Solarisソフトウェアの実行時、1024より小さいポートでプロセスを開始する場合は、rootユーザーになる必要があります。このため、1024以上のポート番号を使用することをお薦めします。1050のように別のポートを指定し、ネーム・サービスをバックグラウンドで実行するには、UNIXコマンド・シェルで次のように入力します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3 -.fl - \fP\f4初期\fP\f3 -.fl - \fP\f4ネーミングコンテキスト\fP\f3 -.fl - / \\ -.fl - / \\ -.fl - plans \fP\f4Personal\fP\f3 -.fl - / \\ -.fl - / \\ -.fl - calendar schedule\fP -.fl +tnameserv \-ORBInitialPort 1050& .fi - -.LP -.LP -この例で、\f3plans\fP はオブジェクト参照、\f3Personal\fP は \f3calendar\fP と \f3schedule\fP の 2 つのオブジェクト参照を含むネーミングコンテキストです。 -.LP +.if n \{\ +.RE +.\} +.PP +WindowsのMS\-DOSシステム・プロンプトでは、次のように入力します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -import java.util.Properties; -.fl -import org.omg.CORBA.*; -.fl -import org.omg.CosNaming.*; -.fl - -.fl -public class NameClient -.fl -{ -.fl - public static void main(String args[]) -.fl - { -.fl - try { -.fl -\fP +start tnameserv \-ORBInitialPort 1050 .fi - -.LP -前述の「Java IDL 一時ネームサービスの起動」で、ネームサーバーはポート 1050 を使用して起動しました。次のコードで、このポート番号をクライアントシステムに知らせます。 +.if n \{\ +.RE +.\} +.PP +ネーム・サーバーのクライアントには、新しいポート番号を知らせる必要があります。これを行うには、ORBオブジェクトの作成時に\fIorg\&.omg\&.CORBA\&.ORBInitialPort\fRプロパティに新しいポート番号を設定します。 +.SS "異なるホスト上でのサーバーとクライアントの実行" +.PP +Java IDLとRMI\-IIOPのほとんどのチュートリアルでは、ネーミング・サービス、サーバーおよびクライアントはすべて開発用のマシン上で実行されます。実際にデプロイメントする場合には、クライアントとサーバーを、ネーミング・サービスとは異なるホスト・マシン上で実行することが多くなります。 +.PP +クライアントとサーバーがネーム・サービスを見つけるには、クライアントとサーバーが、ネーム・サービスが実行されているポートの番号とホストを認識している必要があります。そのためには、クライアントとサーバーのファイル内の\fIorg\&.omg\&.CORBA\&.ORBInitialPort\fRプロパティと\fIorg\&.omg\&.CORBA\&.ORBInitialHost\fRプロパティをネーム・サービスが実行されているポートの番号とマシンの名前に設定します。この例は、「Getting Started Using RMI\-IIOP」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/rmi\-iiop/rmiiiopexample\&.html)に示されています +.PP +コマンドライン・オプション\fI\-ORBInitialPort nameserverport#\fRと\fI\-ORBInitialHost nameserverhostname\fRを使用して、クライアントとサーバーに対してネーミング・サービスを探す場所を指定することもできます。コマンドライン・オプションを使用してこれを行う方法の1つの例は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/tutorial/jidl2machines\&.htmlの「Java IDL: The Hello World Example on Two Machines」 +を参照してください +.PP +たとえば、一時ネーム・サービス\fItnameserv\fRが、ホスト\fInameserverhost\fRのポート1050上で実行されているとします。さらに、クライアントがホスト\fIclienthost\fR上で実行され、サーバーはホスト\fIserverhost\fR上で実行されているとします。 +.PP +ホスト\fInameserverhost\fR上で\fItnameserv\fRを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - Properties props = new Properties(); -.fl - props.put("org.omg.CORBA.ORBInitialPort", "1050"); -.fl - ORB orb = ORB.init(args, props); -.fl - -.fl -\fP +tnameserv \-ORBInitialPort 1050 .fi - -.LP -次のコードでは、初期ネーミングコンテキストを取得し、それを \f3ctx\fP に代入します。2 行目では、\f3ctx\fP をダミーのオブジェクト参照 \f3objref\fP にコピーします。この objref には、あとでさまざまな名前を割り当てて名前空間に追加します。 +.if n \{\ +.RE +.\} +.PP +\fIserverhost\fR上でサーバーを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - NamingContext ctx = -.fl -NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); -.fl - NamingContext objref = ctx; -.fl - -.fl -\fP +java Server \-ORBInitialPort 1050 \-ORBInitialHost nameserverhost .fi +.if n \{\ +.RE +.\} +.PP -.LP -次のコードでは、text 型の名前 plans を作成し、それをダミーのオブジェクト参照にバインドします。その後、rebind を使用して初期ネーミングコンテキストの下に \f2plans を追加しています\fP。 \f2rebind\fP メソッドを使用すれば、bind を使用した場合に発生する例外を発生させずに、 \f2このプログラムを何度も繰り返し実行できます\fP。 +\fIclienthost\fR上でクライアントを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - NameComponent nc1 = new NameComponent("plans", "text"); -.fl - NameComponent[] name1 = {nc1}; -.fl - ctx.rebind(name1, objref); -.fl - System.out.println("plans rebind sucessful!"); -.fl - -.fl -\fP +java Client \-ORBInitialPort 1050 \-ORBInitialHost nameserverhost .fi - -.LP -次のコードでは、directory 型の Personal というネーミングコンテキストを作成します。その結果得られるオブジェクト参照 \f3ctx2\fP をこの名前にバインドし、初期ネーミングコンテキストに追加します。 +.if n \{\ +.RE +.\} +.SS "ネーミング・サービスの停止" +.PP +Java IDLネーミング・サービスを停止するには、Unixの場合は、\fIkill\fRなどのオペレーティング・システムのコマンドを使用し、Windowsの場合は、\fI[Ctrl]+[C]\fRキーを使用します。ネーミング・サービスを明示的に停止するまでは、呼出し待機状態が続きます。サービスを終了させると、Java IDLネーム・サービスに登録されている名前は失われます。 +.SH "オプション" +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンに\fIoption\fRを渡します。\fIoption\fRには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "例" +.SS "ネームスペースへのオブジェクトの追加" +.PP +次の例では、ネームスペースに名前を追加する方法を示します。このサンプル・プログラムは、このままの状態で完全に動作する一時ネーム・サービス・クライアントで、次のような単純なツリーを作成するものです。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - NameComponent nc2 = new NameComponent("Personal", "directory"); -.fl - NameComponent[] name2 = {nc2}; -.fl - NamingContext ctx2 = ctx.bind_new_context(name2); -.fl - System.out.println("new naming context added.."); -.fl - -.fl -\fP +Initial Naming Context + plans + Personal + calendar + schedule .fi - -.LP -残りのコードでは、ダミーのオブジェクト参照を schedule と calendar という名前でネーミングコンテキスト "Personal" (\f3ctx2\fP) にバインドします。 +.if n \{\ +.RE +.\} +.PP +この例で、\fIplans\fRはオブジェクト参照、\fIPersonal\fRは\fIcalendar\fRと\fIschedule\fRの2つのオブジェクト参照を含むネーミング・コンテキストです。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - NameComponent nc3 = new NameComponent("schedule", "text"); -.fl - NameComponent[] name3 = {nc3}; -.fl - ctx2.rebind(name3, objref); -.fl - System.out.println("schedule rebind sucessful!"); -.fl - -.fl - NameComponent nc4 = new NameComponent("calender", "text"); -.fl - NameComponent[] name4 = {nc4}; -.fl - ctx2.rebind(name4, objref); -.fl - System.out.println("calender rebind sucessful!"); -.fl - -.fl - -.fl - } catch (Exception e) { -.fl - e.printStackTrace(System.err); -.fl - } -.fl - } -.fl -} -.fl -\fP -.fi - -.LP -.SH "サンプルクライアント: 名前空間のブラウズ" -.LP -.LP -次のサンプルプログラムでは、名前空間をブラウズする方法を示します。 -.LP -.nf -\f3 -.fl -import java.util.Properties; -.fl -import org.omg.CORBA.*; -.fl -import org.omg.CosNaming.*; -.fl - -.fl -public class NameClientList -.fl -{ -.fl - public static void main(String args[]) -.fl - { -.fl - try { -.fl -\fP -.fi - -.LP -前述の「Java IDL 一時ネームサービスの起動」で、ネームサーバーはポート 1050 を使用して起動しました。次のコードで、このポート番号をクライアントシステムに知らせます。 -.nf -\f3 -.fl - -.fl - Properties props = new Properties(); -.fl - props.put("org.omg.CORBA.ORBInitialPort", "1050"); -.fl - ORB orb = ORB.init(args, props); -.fl - -.fl - -.fl -\fP -.fi - -.LP -次のコードでは、初期ネーミングコンテキストを取得しています。 -.nf -\f3 -.fl - NamingContext nc = -.fl -NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); -.fl - -.fl -\fP -.fi - -.LP -\f2list\fP メソッドは、ネーミングコンテキストに追加されているバインディングをリストします。この場合、最大 1000 個までのバインディングが初期ネーミングコンテキストから BindingListHolder に返されます。残りのバインディングは、BindingIteratorHolder に返されます。 -.nf -\f3 -.fl - BindingListHolder bl = new BindingListHolder(); -.fl - BindingIteratorHolder blIt= new BindingIteratorHolder(); -.fl - nc.list(1000, bl, blIt); -.fl - -.fl -\fP -.fi - -.LP -次のコードでは、返された BindingListHolder からバインディングの配列を取得します。バインディングがない場合は、プログラムは終了します。 -.nf -\f3 -.fl - Binding bindings[] = bl.value; -.fl - if (bindings.length == 0) return; -.fl - -.fl -\fP -.fi - -.LP -残りのコードでは、バインディングに対してループ処理を行い、名前を出力します。 -.nf -\f3 -.fl - for (int i=0; i < bindings.length; i++) { -.fl - -.fl - // get the object reference for each binding -.fl - org.omg.CORBA.Object obj = nc.resolve(bindings[i].binding_name); -.fl - String objStr = orb.object_to_string(obj); -.fl - int lastIx = bindings[i].binding_name.length\-1; -.fl - -.fl - // check to see if this is a naming context -.fl - if (bindings[i].binding_type == BindingType.ncontext) { -.fl - System.out.println( "Context: " + -.fl -bindings[i].binding_name[lastIx].id); -.fl - } else { -.fl - System.out.println("Object: " + -.fl -bindings[i].binding_name[lastIx].id); -.fl - } -.fl - } -.fl - -.fl - } catch (Exception e) { -.fl - e.printStackTrace(System.err); -.fl - } -.fl - } -.fl -} -.fl -\fP -.fi - -.LP +import java\&.util\&.Properties; +import org\&.omg\&.CORBA\&.*; +import org\&.omg\&.CosNaming\&.*; +public class NameClient { + + public static void main(String args[]) { + + try { +.fi +.if n \{\ +.RE +.\} +.PP +ネーミング・サービスの起動で、\fInameserver\fRはポート1050で起動されました。次のコードで、このポート番号をクライアント・システムに知らせます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + Properties props = new Properties(); + props\&.put("org\&.omg\&.CORBA\&.ORBInitialPort", "1050"); + ORB orb = ORB\&.init(args, props); +.fi +.if n \{\ +.RE +.\} +.PP +次のコードでは、初期ネーミング・コンテキストを取得し、それを\fIctx\fRに代入します。2行目では、\fIctx\fRをダミーのオブジェクト参照\fIobjref\fRにコピーします。このobjrefには、あとで様々な名前を割り当ててネームスペースに追加します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + NamingContext ctx = + NamingContextHelper\&.narrow( + orb\&.resolve_initial_references("NameService")); + NamingContext objref = ctx; +.fi +.if n \{\ +.RE +.\} +.PP +次のコードでは、\fItext\fRタイプの名前\fIplans\fRを作成し、それをダミーのオブジェクト参照にバインドします。その後、\fIrebind\fRメソッドを使用して初期ネーミング・コンテキストの下に\fIplans\fRを追加しています。\fIrebind\fRメソッドを使用すれば、\fIbind\fRメソッドを使用した場合に発生する例外を発生させずに、このプログラムを何度も繰返し実行できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + NameComponent nc1 = new NameComponent("plans", "text"); + NameComponent[] name1 = {nc1}; + ctx\&.rebind(name1, objref); + System\&.out\&.println("plans rebind successful!"); +.fi +.if n \{\ +.RE +.\} +.PP +次のコードでは、\fIdirectory\fRタイプの\fIPersonal\fRというネーミング・コンテキストを作成します。その結果得られるオブジェクト参照\fIctx2\fRを\fIname\fRにバインドし、初期ネーミング・コンテキストに追加します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + NameComponent nc2 = new NameComponent("Personal", "directory"); + NameComponent[] name2 = {nc2}; + NamingContext ctx2 = ctx\&.bind_new_context(name2); + System\&.out\&.println("new naming context added\&.\&."); +.fi +.if n \{\ +.RE +.\} +.PP +残りのコードでは、ダミーのオブジェクト参照を\fIschedule\fRと\fIcalendar\fRという名前でネーミング・コンテキスト\fIPersonal\fR(\fIctx2\fR)にバインドします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + NameComponent nc3 = new NameComponent("schedule", "text"); + NameComponent[] name3 = {nc3}; + ctx2\&.rebind(name3, objref); + System\&.out\&.println("schedule rebind successful!"); + + NameComponent nc4 = new NameComponent("calender", "text"); + NameComponent[] name4 = {nc4}; + ctx2\&.rebind(name4, objref); + System\&.out\&.println("calender rebind successful!"); + } catch (Exception e) { + e\&.printStackTrace(System\&.err); + } + } +} +.fi +.if n \{\ +.RE +.\} +.SS "ネームスペースの参照" +.PP +次のサンプル・プログラムでは、ネームスペースをブラウズする方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +import java\&.util\&.Properties; +import org\&.omg\&.CORBA\&.*; +import org\&.omg\&.CosNaming\&.*; + +public class NameClientList { + + public static void main(String args[]) { + + try { +.fi +.if n \{\ +.RE +.\} +.PP +ネーミング・サービスの起動で、\fInameserver\fRはポート1050で起動されました。次のコードで、このポート番号をクライアント・システムに知らせます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + Properties props = new Properties(); + props\&.put("org\&.omg\&.CORBA\&.ORBInitialPort", "1050"); + ORB orb = ORB\&.init(args, props); +.fi +.if n \{\ +.RE +.\} +.PP +次のコードでは、初期ネーミング・コンテキストを取得しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + NamingContext nc = + NamingContextHelper\&.narrow( + orb\&.resolve_initial_references("NameService")); +.fi +.if n \{\ +.RE +.\} +.PP +\fIlist\fRメソッドは、ネーミング・コンテキストのバインディングをリストします。この場合、最大1000個までのバインディングが初期ネーミング・コンテキストから\fIBindingListHolder\fRに返されます。残りのバインディングは、\fIBindingIteratorHolder\fRに返されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + BindingListHolder bl = new BindingListHolder(); + BindingIteratorHolder blIt= new BindingIteratorHolder(); + nc\&.list(1000, bl, blIt); +.fi +.if n \{\ +.RE +.\} +.PP +次のコードでは、返された\fIBindingListHolder\fRからバインディングの配列を取得します。バインディングがない場合は、プログラムが終了します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + Binding bindings[] = bl\&.value; + if (bindings\&.length == 0) return; +.fi +.if n \{\ +.RE +.\} +.PP +残りのコードでは、バインディングに対してループ処理を行い、名前を出力します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + for (int i=0; i < bindings\&.length; i++) { + + // get the object reference for each binding + org\&.omg\&.CORBA\&.Object obj = nc\&.resolve(bindings[i]\&.binding_name); + String objStr = orb\&.object_to_string(obj); + int lastIx = bindings[i]\&.binding_name\&.length\-1; + + // check to see if this is a naming context + if (bindings[i]\&.binding_type == BindingType\&.ncontext) { + System\&.out\&.println("Context: " + + bindings[i]\&.binding_name[lastIx]\&.id); + } else { + System\&.out\&.println("Object: " + + bindings[i]\&.binding_name[lastIx]\&.id); + } + } + } catch (Exception e) { + e\&.printStackTrace(System\&.err) + } + } +} +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +orbd(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/unpack200.1 b/jdk/src/linux/doc/man/ja/unpack200.1 index 96a85d8105e..0b940d494d2 100644 --- a/jdk/src/linux/doc/man/ja/unpack200.1 +++ b/jdk/src/linux/doc/man/ja/unpack200.1 @@ -1,178 +1,201 @@ -." 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 -." 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 unpack200 1 "07 May 2011" - -.LP -.SH "名前" -unpack200 \- JAR アンパックツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -終了ステータス -.TP 2 -o -関連項目 -.TP 2 -o -注意事項 +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: unpack200 +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Javaデプロイメント・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "unpack200" "1" "2013年11月21日" "JDK 8" "Javaデプロイメント・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +unpack200 \- pack200(1)で作成されたパック・ファイルを、WebデプロイメントのためにJARファイルに変換します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIunpack200\fR [ \fIoptions\fR ] input\-file \fIJAR\-file\fR +.fi +.if n \{\ .RE - -.LP -.SH "形式" -.LP -.LP -\f4unpack200\fP\f2 [ \fP\f2options\fP ] \f2input\-file\fP \f2JAR\-file\fP -.LP -.LP -オプションの指定順序に決まりはありません。コマンド行に指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。 -.LP -.RS 3 -.TP 3 -input\-file -入力ファイルの名前。入力ファイルは通常、pack200 gzip ファイルか pack200 ファイルです。このほかに、0 を設定すれば pack200(1) から作成された JAR ファイルも入力ファイルとして使用できます。この場合、入力ファイルの内容が Pack200 マーカーとともに出力 JAR ファイルにコピーされます。 -.TP 3 -JAR\-file -出力 JAR ファイル名。 +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 .RE - -.LP -.SH " 説明" -.LP -.LP -\f2unpack200\fP は、pack200(1) で作成されたパックファイルを JAR ファイルに変換する \f2ネイティブ実装\fPです。一般的な使用方法: -.LP -.LP -\f2% unpack200 myarchive.pack.gz myarchive.jar\fP -.LP -.LP -この例では、 \f2デフォルトの unpack200 設定で、myarchive.pack.gz\fP から \f2myarchive.jar\fP が \f2作成されます\fP 。 -.LP +.PP +\fIinput\-file\fR +.RS 4 +入力ファイルの名前。pack200 gzipファイルかpack200ファイルを指定できます。入力ファイルには、\fIpack200\fR(1)で作成されたJARファイルを指定することもできます(手間は\fI0\fRです)。この場合、入力ファイルの内容はPack2000マーカーで出力JARファイルにコピーされます。 +.RE +.PP +\fIJAR\-file\fR +.RS 4 +出力JARファイル名。 +.RE +.SH "説明" +.PP +\fIunpack200\fRコマンドは、\fIpack200\fR\fI(1)\fRで作成されたパック・ファイルをJARファイルに変換するネイティブ実装です。一般的な使用方法は次のとおりです。次の例では、デフォルトの\fIunpack200\fRコマンド設定で、\fImyarchive\&.jar\fRファイルが\fImyarchive\&.pack\&.gz\fRから作成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +unpack200 myarchive\&.pack\&.gz myarchive\&.jar +.fi +.if n \{\ +.RE +.\} .SH "オプション" -.LP -.LP -\f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP -.LP -.LP -JAR ファイル内のすべてのエントリに \f2true\fP 、 \f2false\fP、 \f2keep\fP としてデフレーションを設定します。デフォルトモードは \f2keep\fP です。 \f2true\fP または \f2false 場合、\fPデフォルトの動作をオーバーライドして、出力 JAR ファイル内のすべてのエントリのデフレーションモードを設定します。 -.LP -.LP -\f4\-r \-\-remove\-pack\-file\fP -.LP -.LP -入力パックファイルを削除します。 -.LP -.LP -\f4\-v \-\-verbose\fP -.LP -.LP -最小限のメッセージを出力します。このオプションを複数指定すると、より長いメッセージが出力されます。 -.LP -.LP -\f4\-q \-\-quiet\fP -.LP -.LP -メッセージを表示せずに動作します。 -.LP -.LP -\f4\-lfilename \-\-log\-file=\fP\f2filename\fP -.LP -.LP -出力メッセージのログファイルを指定します。 -.LP -.LP -\f4\-? \-h \-\-help\fP -.LP -.LP -このコマンドに関するヘルプ情報を出力します。 -.LP -.LP -\f4\-V \-\-version\fP -.LP -.LP -このコマンドに関するバージョン情報を出力します。 -.LP -.LP -\f4\-J\fP\f2option\fP -.LP -.LP -unpack200 によって呼び出される Java 起動ツールに \f2オプション\fP を \f2渡します\fP。 -.LP -.SH "終了ステータス" -.LP -.LP -次の終了値が返されます。 -.LP -.LP -\f2\ 0\fP " 成功" -.LP -.LP -\f2>0\fP " エラー" -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -pack200(1) -.TP 2 -o -.na -\f2Java SE のドキュメント\fP @ -.fi -http://java.sun.com/javase/6/docs/index.html -.TP 2 -o -.na -\f2「Java 配備ガイド \- Pack200」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/pack200.html -.TP 2 -o -jar(1) \- Java Archive ツール」 -.TP 2 -o -jarsigner(1) \- JAR 署名および検証ツール」 -.TP 2 -o -\f2attributes(5)\fP のマニュアルページ +.PP +\-Hvalue \-\-deflate\-hint=\fIvalue\fR +.RS 4 +JARファイル内のすべてのエントリに\fItrue\fR、\fIfalse\fRまたは\fIkeep\fRのデフレーションを設定します。デフォルト・モードは\fIkeep\fRです。値が\fItrue\fRまたは\fIfalse\fR場合、\fI\-\-deflate=hint\fRオプションはデフォルトの動作をオーバーライドして、出力JARファイル内のすべてのエントリのデフレーション・モードが設定されます。 .RE - -.LP -.SH "注意事項" -.LP -.LP -このコマンドと \f2unpack(1) を\fP混同しないでください。これらは別製品です。 -.LP -.LP -SDK に付属する Java SE API 仕様との相違が見つかった場合には、仕様を優先してください。 -.LP - +.PP +\-r \-\-remove\-pack\-file +.RS 4 +入力パック・ファイルを削除します。 +.RE +.PP +\-v \-\-verbose +.RS 4 +最小限のメッセージが表示されます。このオプションの複数の仕様には、より詳細なメッセージが表示されます。 +.RE +.PP +\-q \-\-quiet +.RS 4 +メッセージを表示せずに動作するように指定します。 +.RE +.PP +\-lfilename \-\-log\-file=\fIfilename\fR +.RS 4 +出力メッセージが記録されるログ・ファイルを指定します。 +.RE +.PP +\-? \-h \-\-help +.RS 4 +\fIunpack200\fRコマンドに関するヘルプ情報を出力します。 +.RE +.PP +\-V \-\-version +.RS 4 +\fIunpack200\fRコマンドに関するバージョン情報を出力します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンにoptionを渡します。\fIoption\fRには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "注意" +.PP +このコマンドと\fIunpack\fRコマンドを混同しないでください。これらは別製品です。 +.PP +JDKに付属するJava SE API仕様との相違が見つかった場合には、仕様を優先してください。 +.SH "終了ステータス" +.PP +次の終了値が返されます: 正常終了の場合は0、エラーが発生した場合は0より大きい値。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +pack200(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jarsigner(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Pack200 and Compression」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/deployment/deployment\-guide/pack200\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Java SE Technical Documentation」 +(http://docs\&.oracle\&.com/javase/) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/wsgen.1 b/jdk/src/linux/doc/man/ja/wsgen.1 index c85556ee16f..0f50de81de0 100644 --- a/jdk/src/linux/doc/man/ja/wsgen.1 +++ b/jdk/src/linux/doc/man/ja/wsgen.1 @@ -1,656 +1,228 @@ -." 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. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please 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 wsgen 1 "07 May 2011" -.SH "名前" -wsgen \- XML Web Services (JAX\-WS) 2.0 のための Java(TM) API -.LP -\f3仕様バージョン:\fP 2.1 -.br -\f3実装バージョン:\fP 2.1.1 -.LP -\f2wsgen\fP ツールは、JAX\-WS Web サービスで使用される JAX\-WS ポータブルアーティファクトを生成します。このツールは、Web サービスのエンドポイント実装クラス (SEI) を読み取り、Web サービスの配備と呼び出しに必要なすべてのアーティファクトを生成します。 +'\" t +.\" Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: wsgen +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java Webサービス・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "wsgen" "1" "2013年11月21日" "JDK 8" "Java Webサービス・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +wsgen \- Webサービスのエンドポイント実装(SEI)クラスを読取り、Webサービスのデプロイメントと呼出しに必要なすべてのアーティファクトを生成します。 .SH "概要" -.LP -\f2wsgen\fP ツールは、JAX\-WS Web サービスで使用される JAX\-WS ポータブルアーティファクトを生成します。このツールは、Web サービスのエンドポイントクラスを読み取り、Web サービスの配備と呼び出しに必要なすべてのアーティファクトを生成します。JAXWS 2.1.1 RI には wsgen Ant タスクも用意されています。詳細は、 -.na -\f2Wsgen Ant タスク\fP @ +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIwsgen\fR [ \fIoptions\fR ] \fISEI\fR .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsgenant.htmlを参照してください。 -.LP -.SH "wsgen の起動" -.RS 3 -.TP 2 -o -\f3Solaris/Linux\fP -.RS 3 -.TP 2 -* -\f2export JAXWS_HOME=/pathto/jaxws\-ri\fP -.TP 2 -* -\f2$JAXWS_HOME/bin/wsgen.sh \-help\fP +.if n \{\ .RE -.TP 2 -o -\f3Windows\fP -.RS 3 -.TP 2 -* -\f2set JAXWS_HOME=c:\\pathto\\jaxws\-ri\fP -.TP 2 -* -\f2%JAXWS_HOME%\\bin\\wsgen.bat \-help\fP +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 .RE +.PP +\fISEI\fR +.RS 4 +読み取るWebサービスのエンドポイント実装クラス(SEI)です。 .RE - -.LP -.SH "構文" +.SH "説明" +.PP +\fIwsgen\fRコマンドは、JAX\-WS Webサービスで使用されるJAX\-WSポータブル・アーティファクトを生成します。このツールは、Webサービスのエンドポイント・クラスを読取り、Webサービスのデプロイメントと呼出しに必要なすべてのアーティファクトを生成します。JAXWS 2\&.1\&.1 RIでは\fIwsgen\fR +Antタスクも提供されます。 +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsgenant\&.htmlのJAX\-WS (wsgen)ページのToolsタブを参照してください。 +.PP +\fIwsgen\fRコマンドを起動するには、次を行います。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -wsgen [options] <SEI>\fP -.br -\f3 -.fl -\fP +export JAXWS_HOME=/pathto/jaxws\-ri +$JAXWS_HOME/bin/wsgen\&.sh \-help .fi -.LP -次の表に、 \f2wsgen\fP のオプションを示します。 -.br -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -入力クラスファイルの検索場所を指定します -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\-classpath <path> \f2と同じです\fP -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -生成される出力ファイルを格納する場所を指定します -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ベンダー拡張 (仕様で規定されていない機能) を許可します。拡張を使用すると、アプリケーションの移植性が失われたり、ほかの実装との相互運用が行えなくなる可性があります -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ヘルプを表示します -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -生成されたファイルを保持します -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -常に \-wsdl オプションと組み合わせて使用します。WSDL などの生成されたリソースファイルの格納場所を指定します -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -生成されるソースファイルを格納する場所を指定する -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -コンパイラが実行している処理に関するメッセージを出力します -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -バージョン情報を出力します。このオプションを使用した場合、バージョン情報が出力されるだけです。通常の処理は実行されません。 -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -デフォルトでは \f2wsgen\fP は WSDL ファイルを生成しません。このフラグは省略可能ですが、指定した場合は \f2wsgen\fP が WSDL ファイルを生成するようになります。このフラグは通常、エンドポイントの配備前に開発者が WSDL を参照できるようにするためだけに使用されます。 \f2protocol\fP は省略可能であり、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 -.nr k- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -常に \f2\-wsdl\fP オプションと組み合わせて使用します。WSDL 内で生成されるべき \f2wsdl:service\fP の名前を指定するために使用します。例: \f2\-servicename "{http://mynamespace/}MyService"\fP -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di m+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -常に \f2\-wsdl\fP オプションと組み合わせて使用します。WSDL 内で生成されるべき \f2wsdl:port\fP の名前を指定するために使用します。例: \f2\-portname "{http://mynamespace/}MyPort"\fP -.br -.br -.di -.nr m| \n(dn -.nr m- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \w\f3オプション\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-classpath <path>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-cp <path>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-d <directory>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-extension\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-help\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-keep\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-r <directory>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-s <directory>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-verbose\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-version\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-wsdl[:protocol]\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-servicename <name>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-portname <name>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(l- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(m- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 137 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-classpath <path>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-cp <path>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-d <directory>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-extension\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-help\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-keep\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-r <directory>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-s <directory>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-verbose\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-version\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(k|u+\n(.Vu -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-wsdl[:protocol]\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-servicename <name>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(m|u+\n(.Vu -.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-portname <name>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.m+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.rm m+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-57 - -.LP +.if n \{\ +.RE +.\} +.SH "オプション" +.PP +\-classpath \fIpath\fR +.RS 4 +入力クラス・ファイルの場所。 +.RE +.PP +\-cp \fIpath\fR +.RS 4 +入力クラス・ファイルの場所。 +.RE +.PP +\-d \fIdirectory\fR +.RS 4 +生成された出力ファイルを格納する場所。 +.RE +.PP +\-extension +.RS 4 +ベンダー拡張を使用可能にします。拡張を使用すると、アプリケーションの移植性が失われたり、他の実装と連携できなくなる可能性があります。 +.RE +.PP +\-help +.RS 4 +\fIwsgen\fRコマンドに関するヘルプ・メッセージを表示します。 +.RE +.PP +\-keep +.RS 4 +生成されたファイルを保存します。 +.RE +.PP +\-r \fIdirectory\fR +.RS 4 +このオプションを\fI\-wsdl\fRオプションとともに使用して、WSDLなど生成されたリソース・ファイルを配置する場所を指定します。 +.RE +.PP +\-s \fIdirectory\fR +.RS 4 +生成されたソース・ファイルを格納する場所。 +.RE +.PP +\-verbose +.RS 4 +コンパイラ・メッセージを表示します。 +.RE +.PP +\-version +.RS 4 +リリース情報を出力します。 +.RE +.PP +\-wsdl [ :protocol ] +.RS 4 +エンドポイントをデプロイする前に確認するWSDLファイルを生成するオプション・コマンド。WSDLファイルには、サービスを呼び出す方法、パラメータに必要な値、返されるデータ構造についてのコンピュータで読取り可能な記述が含まれます。 +.sp +デフォルトでは\fIwsgen\fRコマンドはWSDLファイルを生成しません。\fIprotocol\fR値は省略可能であり、WSDLバインディング(\fIwsdl:binding\fR)で使用するプロトコルを指定するために使用されます。有効なプロトコルは、\fIsoap1\&.1\fRと\fIXsoap1\&.2\fRです。デフォルトは\fIsoap1\&.1\fRです。\fIXsoap1\&.2\fRプロトコルは標準ではないため、\fI\-extension\fRオプションとともにのみ使用可能です。 +.RE +.PP +\-servicename \fIname\fR +.RS 4 +\fI\-wsdl\fRオプションとともにのみ使用して、WSDLで生成される特定のWSDLサービス(\fIwsdl:service\fR)名を指定します。例: +\fI\-servicename "{http://mynamespace/}MyService"\fR。 +.RE +.PP +\-portname \fIname\fR +.RS 4 +\fI\-wsdl\fRオプションとともにのみ使用して、WSDLで生成される特定のWSDLポート(\fIwsdl:port\fR)名を指定します。例: +\fI\-portname "{http://mynamespace/}MyPort"\fR。 +.RE .SH "例" +.PP +次の例では、Stockディレクトリ内に\fI@WebService\fR注釈を持つ\fIStockService\fRのラッパー・クラスを生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3wsgen \-d stock \-cp myclasspath stock.StockService\fP -.fl +wsgen \-d stock \-cp myclasspath stock\&.StockService .fi -.LP -\f3stock\fP ディレクトリ内に @WebService 注釈が付けられた、StockService に必要なラッパークラスが生成されます。 +.if n \{\ +.RE +.\} +.PP +次の例では、SOAP 1\&.1 WSDLおよび\fI@WebService\fR注釈を持つ\fIstock\&.StockService\fRクラスのスキーマを生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3wsgen \-wsdl \-d stock \-cp myclasspath stock.StockService\fP -.fl +wsgen \-wsdl \-d stock \-cp myclasspath stock\&.StockService .fi -.LP -SOAP 1.1 WSDL と、@WebService 注釈が付けられた Java クラス stock.StockService のスキーマが生成されます。 +.if n \{\ +.RE +.\} +.PP +次の例では、SOAP 1\&.2 WSDLを生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3wsgen \-wsdl:Xsoap1.2 \-d stock \-cp myclasspath stock.StockService\fP -.fl +wsgen \-wsdl:Xsoap1\&.2 \-d stock \-cp myclasspath stock\&.StockService .fi -.LP -SOAP 1.2 WSDL が生成されます。 -.LP -サービスを配備するときに JAXWS ランタイムによって自動的に WSDL が生成されるため、開発時に WSDL を生成する必要はありません。 +.if n \{\ +.RE +.\} +.PP +\fB注意:\fR +サービスのデプロイ時にJAXWS実行時環境でWSDLが生成されるため、開発時にWSDLを生成する必要はありません。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +wsimport(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsgenant\&.htmlの +JAX\-WS (wsgen)ページのToolsタブを参照してください。 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/wsimport.1 b/jdk/src/linux/doc/man/ja/wsimport.1 index a09204e86ba..feff3f3acca 100644 --- a/jdk/src/linux/doc/man/ja/wsimport.1 +++ b/jdk/src/linux/doc/man/ja/wsimport.1 @@ -1,1066 +1,332 @@ -." 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. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please 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 wsimport 1 "07 May 2011" -.SH "名前" -wsimport \- XML Web Services (JAX\-WS) 2.0 のための Java(TM) API -.LP -\f3仕様バージョン:\fP 2.1 -.br -\f3実装バージョン:\fP 2.1.1 -.br +'\" t +.\" Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: wsimport +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java Webサービス・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "wsimport" "1" "2013年11月21日" "JDK 8" "Java Webサービス・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +wsimport \- Webアプリケーション・アーカイブ(WAR)ファイルにパッケージできるJAX\-WSポータブル・アーティファクトを生成して、Antタスクを指定します。 .SH "概要" -.LP -\f2wsimport\fP ツールは、次のような JAX\-WS ポータブルアーティファクトを生成します。 -.RS 3 -.TP 2 -o -サービスエンドポイントインタフェース (SEI) -.TP 2 -o -サービス -.TP 2 -o -wsdl:fault からマップされる例外クラス (存在する場合) -.TP 2 -o -応答 wsdl:message から派生する非同期応答 Bean (存在する場合) -.TP 2 -o -JAX\-B が生成する値タイプ (スキーマの型からマップされた Java クラス) -.RE -.LP -これらのアーティファクトは、WSDL ドキュメント、スキーマドキュメント、およびエンドポイント実装とともに WAR ファイル内にパッケージ化して配備することができます。また、wsimport Ant タスクも用意されています。 -.na -\f2wsimport Ant タスク\fP @ -.fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsimportant.htmlを参照してください。 -.br - -.LP -.SH "wsimport の起動" -.RS 3 -.TP 2 -o -\f3Solaris/Linux\fP -.RS 3 -.TP 2 -* -\f2/bin/wsimport.sh \-help\fP -.RE -.TP 2 -o -\f3Windows\fP -.RS 3 -.TP 2 -* -\f2\\bin\\wsimport.bat \-help\fP -.RE -.RE - -.LP -.SH "構文" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -wsimport [options] <wsdl> -.fl -\fP +\fIwsimport\fR [ \fIoptions\fR ] \fIwsdl\fR .fi -.LP -次の表に、 \f2wsimport\fP のオプションを示します。 -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIwsdl\fR +.RS 4 +Webサービスを呼び出す方法、パラメータに必要な値、返されるデータ構造についてのコンピュータで読取り可能な記述が含まれまるファイルです。 +.RE +.SH "説明" +.PP +\fIwsimport\fRコマンドは、次のJAX\-WSポータブル・アーティファクトを生成します。これらのアーティファクトは、デプロイするWSDLおよびスキーマ・ドキュメントおよびエンドポイント実装とともに、WARファイルにパッケージできます。\fIwsimport\fRコマンドでは\fIwsimport\fR +Antタスクも提供されます。 +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsimportant\&.htmlのWsimport Ant TaskページのToolsタブを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +サービス・エンドポイント・インタフェース(SEI) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +サービス +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +例外クラスは\fIwsdl:fault\fRからマップされます(存在する場合) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +非同期レスポンスBeanはレスポンス\fIwsdl:message\fRから派生します(存在する場合) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +JAXBが生成する値タイプ(スキーマのタイプからマップされたJavaクラス) +.RE +.PP +\fIwsgen\fRコマンドを起動するには、次を行います。 +.PP +\fBOracle Solaris/Linux\fR: +.sp +.if n \{\ +.RS 4 +.\} .nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -生成される出力ファイルを格納する場所を指定します -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -外部の JAX\-WS または JAXB バインディングファイルを指定します ( \f2<file>\fP ごとに \f2\-b\fP が必要となる) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -このオプションを JAXB スキーマコンパイラに渡します -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -外部エンティティー参照を解決するためのカタログファイルを指定します。TR9401、XCatalog、OASIS XML Catalog の各形式がサポートされています。 -.na -\f2カタログ\fP @ +/bin/wsimport\&.sh \-help .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlのドキュメントをお読みになり、\f3カタログ\fPのサンプルを参照してください。 -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ベンダー拡張 (仕様で規定されていない機能) を許可します。拡張を使用すると、アプリケーションの移植性が失われたり、ほかの実装との相互運用が行えなくなる可能性があります -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ヘルプを表示します -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f3\-httpproxy:<host>:<port> \fP -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -HTTP プロキシサーバーを指定します (デフォルトのポートは 8080) -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 +.if n \{\ +.RE +.\} +.PP +\fBWindows\fRの場合: +.sp +.if n \{\ +.RS 4 +.\} +.nf +\ebin\ewsimport\&.bat \-help +.fi +.if n \{\ +.RE +.\} +.SH "オプション" +.PP +\-d \fIdirectory\fR +.RS 4 +生成される出力ファイルを格納する場所を指定します。 +.RE +.PP +\-b \fIpath\fR +.RS 4 +外部JAX\-WSまたはJAXBバインディング・ファイルを指定します。\fI\-b\fRオプションで複数のJAX\-WSおよびJAXBバインディング・ファイルを指定できます。これらのファイルを使用して、パッケージ名、Bean名などをカスタマイズできます。JAX\-WSおよびJAXBバインディング・ファイルの詳細は、 +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsimportant\&.htmlのWSDL CustomizationのUsers Guideタブを参照してください +.RE +.PP +\-B \fIjaxbOption\fR +.RS 4 +JAXBスキーマ・コンパイラに\fIjaxbOption\fRオプションを渡します。 +.RE +.PP +\-catalog +.RS 4 +外部エンティティ参照を解決するカタログ・ファイルを指定します。\fI\-catalog\fRオプションは、TR9401、XCatalog、OASIS XML Catalogの各形式をサポートしています。http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/catalog\-support\&.htmlの +Catalog SupportページのUsers Guideタブを参照してください。 +.RE +.PP +\-extension +.RS 4 +ベンダー拡張を使用可能にします。拡張を使用すると、アプリケーションの移植性が失われたり、他の実装と連携できなくなる可能性があります。 +.RE +.PP +\-help +.RS 4 +\fIwsimport\fRコマンドに関するヘルプ・メッセージを表示します。 +.RE +.PP +\-httpproxy: \fIhost\fR:\fIport\fR +.RS 4 +HTTPプロキシ・サーバーを指定します。デフォルトは8080です。 +.RE +.PP +\-keep +.RS 4 生成されたファイルを保持します -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -このコマンド行オプション経由でターゲットパッケージを指定した場合、その指定内容は、パッケージ名に対するすべての WSDL/スキーマバインディングカスタマイズや、 仕様で規定されているデフォルトのパッケージ名アルゴリズムよりも優先されます -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -生成されるソースファイルを格納する場所を指定する -.br -.di -.nr k| \n(dn -.nr k- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -コンパイラが実行している処理に関するメッセージを出力します -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di m+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -バージョン情報を出力します -.br -.di -.nr m| \n(dn -.nr m- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di n+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f3\-wsdllocation <location>\fP -.br -.di -.nr n| \n(dn -.nr n- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di o+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\f2@WebServiceClient.wsdlLocation\fP 値 -.br -.di -.nr o| \n(dn -.nr o- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di p+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -指定された JAX\-WS 仕様バージョンに従ってコードを生成します。バージョン 2.0 では、JAX\-WS 2.0 仕様に準拠したコードを生成します。 -.br -.di -.nr p| \n(dn -.nr p- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di q+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -wsimport 出力を抑制します -.br -.di -.nr q| \n(dn -.nr q- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \w\f3オプション\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-d <directory> \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-b <path> \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-B <jaxbOption>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-catalog\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-extension \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-help \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-keep \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-p \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-s <directory> \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-verbose \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-version \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-target \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-quiet \fP -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 38 \n(g- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(n- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(l- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(m- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(o- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(p- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(q- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 163 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-d <directory> \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-b <path> \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-B <jaxbOption>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-catalog\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-extension \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-help \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.ne \n(h|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-keep \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-p \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(k|u+\n(.Vu -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-s <directory> \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-verbose \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(m|u+\n(.Vu -.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-version \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.m+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(n|u+\n(.Vu -.ne \n(o|u+\n(.Vu -.if (\n(n|+\n(#^-1v)>\n(#- .nr #- +(\n(n|+\n(#^-\n(#--1v) -.if (\n(o|+\n(#^-1v)>\n(#- .nr #- +(\n(o|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.n+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.o+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(p|u+\n(.Vu -.if (\n(p|+\n(#^-1v)>\n(#- .nr #- +(\n(p|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-target \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.p+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(q|u+\n(.Vu -.if (\n(q|+\n(#^-1v)>\n(#- .nr #- +(\n(q|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-quiet \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.q+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.rm m+ -.rm n+ -.rm o+ -.rm p+ -.rm q+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-72 -.LP -\-b オプションを使って、複数の JAX\-WS および JAXB バインディングファイル \f2を指定できます。\fP これらのファイルを使って、パッケージ名や Bean 名など、さまざまなカスタマイズが可能です。JAX\-WS および JAXB バインディングファイルの詳細は、 -.na -\f2カスタマイズマニュアル\fP @ -.fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/customizations.htmlを参照してください。 -.LP -次の表に、 \f2wsimport\fP の非標準オプションを示します。 -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -要求または応答メッセージにバインドされないヘッダーを Java メソッドのパラメータにマップします -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -認証情報を含むファイルを指定する WSDL URI です。この URI の形式は次のとおりです http://\f2<ユーザー名>\fP:\f2<パスワード>\fP@\f2<ホスト名>\fP/\f2<Web サービス名>\fP?wsdl -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 +.RE +.PP +\-p \fIname\fR +.RS 4 +ターゲット・パッケージ\fIname\fRを指定して、WSDLおよびスキーマ・バインディングのカスタマイズ、および仕様部で定義されたデフォルトのアルゴリズムをオーバーライドします。 +.RE +.PP +\-s \fIdirectory\fR +.RS 4 +生成されるソース・ファイルを格納する場所を指定します +.RE +.PP +\-verbose +.RS 4 +コンパイラ・メッセージを表示します。 +.RE +.PP +\-version +.RS 4 +リリース情報を出力します。 +.RE +.PP +\-wsdllocation \fIlocation\fR +.RS 4 +\fI@WebServiceClient\&.wsdlLocation\fRの値を指定します。 +.RE +.PP +\-target +.RS 4 +指定されたJAX\-WS仕様バージョンに従って、コードを生成します。バージョン2\&.0では、JAX\-WS 2\&.0仕様に準拠したコードを生成します。 +.RE +.PP +\-quiet +.RS 4 +\fIwsimport\fRコマンド出力を抑制します。 +.RE +.PP +\fI\-b\fRオプションを使用して、複数の\fIJAX\-WS\fRおよび\fIJAXB\fRバインディング・ファイルを指定できます。これらのファイルを使用して、パッケージ名やBean名など、様々なものをカスタマイズできます。\fIJAX\-WS\fRおよび\fIJAXB\fRバインディング・ファイルの詳細は、 +https://jax\-ws\&.dev\&.java\&.net/nonav/2\&.1\&.1/docs/customizations\&.htmlのJAXBタブを参照してください +.SH "非標準オプション" +.PP +\-XadditionalHeaders +.RS 4 +リクエストまたはレスポンス・メッセージにバインドされないヘッダーをJavaメソッドのパラメータにマップします +.RE +.PP +\-Xauthfile \fIfile\fR +.RS 4 +認証情報を含むファイルを指定するWSDL URIです。このURIの形式は次のとおりです。 +.sp +http://\fIuser\-name\fR:\fIpassword\fR@\fIhost\-name\fR/\fIweb\-service\-name\fR>?wsdl +.RE +.PP +\-Xdebug +.RS 4 デバッグ情報を出力します -.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 +.RE +.PP +\-Xno\-addressing\-databinding +.RS 4 +W3C EndpointReferenceTypeとJavaのバインディングを有効にします。 +.RE +.PP +\-Xnocompile +.RS 4 +生成されたJavaファイルをコンパイルしません +.RE .SH "例" +.PP +次の例では、Javaアーティファクトを生成し、\fIhttp://stockquote\&.example\&.com/quote?wsdl\fRをインポートしてアーティファクトをコンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3wsimport \-p stockquote http://stockquote.example.com/quote?wsdl\fP -.fl +wsimport \-p stockquote http://stockquote\&.example\&.com/quote?wsdl .fi -.LP -Java アーティファクトを生成し、 \f2http://stockquote.example.com/quote?wsdl\fP をインポートしてその Java アーティファクトをコンパイルします +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +wsgen(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsimportant\&.htmlの +Wsimport Ant TaskページのToolsタブ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/catalog\-support\&.htmlの +Catalog SupportページのUsers Guideタブ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsimportant\&.htmlの +WSDL CustomizationページのUsers Guideタブ +.RE .br - +'pl 8.5i +'bp diff --git a/jdk/src/linux/doc/man/ja/xjc.1 b/jdk/src/linux/doc/man/ja/xjc.1 index 0b3baf84f0a..17a0efdd9ed 100644 --- a/jdk/src/linux/doc/man/ja/xjc.1 +++ b/jdk/src/linux/doc/man/ja/xjc.1 @@ -1,298 +1,342 @@ -." 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. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please 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 xjc 1 "07 May 2011" - -.LP -.ad c -.SH "名前" -xjc \- XML バインドのための Java(TM) アーキテクチャー -.br -バインディングコンパイラ -.LP -\f3仕様バージョン:\fP 2.1 -.br -\f3リファレンス実装 (RI) バージョン:\fP 2.1.3 .ad l - -.LP -.SH "xjc の起動" -.LP -.LP -バインディングコンパイラを起動するには、使用するプラットフォームに応じた bin ディレクトリ内の \f2xjc\fP シェルスクリプト \f2を\fP 使用します。また、バインディングコンパイラを実行するための Ant タスクも用意されています。 -.na -\f2xjc を Ant とともに使用する\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.htmlための手順を参照してください。 -.LP -.LP -\f2% xjc \-help\fP -.LP -.SS -出力 -.LP +'\" t +.\" Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: xjc +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java Webサービス・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "xjc" "1" "2013年11月21日" "JDK 8" "Java Webサービス・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +xjc \- XMLスキーマ・ファイルを完全注釈付きのJavaクラスにコンパイルします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -Usage: xjc [\-options ...] <schema file/URL/dir/jar> ... [\-b <bindinfo>] ... -.fl -If dir is specified, all schema files in it will be compiled. -.fl -If jar is specified, /META\-INF/sun\-jaxb.episode binding file will be compiled. -.fl -Options: -.fl - \-nv : do not perform strict validation of the input schema(s) -.fl - \-extension : allow vendor extensions \- do not strictly follow the Compatibility Rules and App E.2 from the JAXB Spec -.fl - \-b <file/dir> : specify external bindings files (each <file> must have its own \-b); if a directory is given, **/*.xjb is searched -.fl - \-d <dir> : generated files will go into this directory -.fl - \-p <pkg> : specifies the target package -.fl - \-httpproxy <proxy> : set HTTP/HTTPS proxy; format is [user[:password]@]proxyHost:proxyPort -.fl - \-httpproxyfile <f> : works like \-httpproxy but takes the argument in a file to protect password -.fl - \-classpath <arg> : specify where to find user class files -.fl - \-catalog <file> : specify catalog files to resolve external entity references; support TR9401, XCatalog, and OASIS XML Catalog format -.fl - \-readOnly : generated files will be in read\-only mode -.fl - \-npa : suppress generation of package level annotations (**/package\-info.java) -.fl - \-no\-header : suppress generation of a file header with timestamp -.fl - \-target 2.0 : behave like XJC 2.0 and generate code that doesnt use any 2.1 features -.fl - \-xmlschema : treat input as W3C XML Schema (default) -.fl - \-relaxng : treat input as RELAX NG (experimental,unsupported) -.fl - \-relaxng\-compact : treat input as RELAX NG compact syntax (experimental,unsupported) -.fl - \-dtd : treat input as XML DTD (experimental,unsupported) -.fl - \-wsdl : treat input as WSDL and compile schemas inside it (experimental,unsupported) -.fl - \-verbose : be extra verbose -.fl - \-quiet : suppress compiler output -.fl - \-help : display this help message -.fl - \-version : display version information -.fl - -.fl - -.fl -Extensions: -.fl - \-Xlocator : enable source location support for generated code -.fl - \-Xsync\-methods : generate accessor methods with the 'synchronized' keyword -.fl - \-mark\-generated : mark the generated code as @javax.annotation.Generated -.fl - \-episode <FILE> : generate the episode file for separate compilation -.fl -\fP +\fIxjc\fR [ \fIoptions\fR ] \fIschema\fR \fIfile/URL/dir/jar\fR \&.\&.\&. [\fI\-b\fR \fIbindinfo\fR ] \&.\&.\&. .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +schema \fIfile/URL/dir/jar \&.\&.\&.\fR +.RS 4 +XMLスキーマ・ファイルの場所。\fIdir\fRが指定されている場合は、すべてのスキーマ・ファイルがコンパイルされます。\fIjar\fRが指定されている場合は、\fI/META\-INF/sun\-jaxb\&.episode\fRバインディング・ファイルがコンパイルされます。 +.RE +.PP +\-b \fIbindinfo\fR +.RS 4 +バインディング・ファイルの場所。 +.RE +.SH "説明" +.PP +プラットフォームのbinディレクトリにある適切な\fIxjc\fRシェル・スクリプトを使用して、バインディング・コンパイラを起動します。バインディング・コンパイラを実行するAntタスクもあります。http://jaxb\&.java\&.net/nonav/2\&.1\&.3/docs/xjcTask\&.htmlの +Using the XJC with Antを参照してください .SH "オプション" -.LP -.RS 3 -.TP 3 -\-nv -デフォルトでは、XJC バインディングコンパイラは、ソーススキーマを処理する前に厳密な検証を実行します。このオプションを使用すると、厳密なスキーマ検証を無効にします。これは、バインディングコンパイラが検証を一切実行しないということではありません。より厳密でない検証を実行するということです。 -.TP 3 -\-extension -デフォルトでは、XJC バインディングコンパイラは、JAXB 仕様の「Compatibility」の章で説明されている規則を厳密に強制します。付録 E.2 には、JAXB v1.0 で完全にはサポートされていない一連の W3C XML スキーマ機能が定義されています。場合によっては、このスイッチで有効になる「\-extension」モードでそれらの機能が使用できるかもしれません。また、デフォルトの厳密なモードでは、仕様に定義されているバインディングカスタマイズのみが使用できます。「\-extension」スイッチを指定すれば、JAXB Vendor Extension を使用できます。 -.TP 3 -\-b <file> -処理する外部バインディングファイルを 1 つまたは複数指定します。(バインディングファイルごとに \f2「\-b」\fP スイッチを指定する必要があります。) 外部バインディングファイルの構文は非常に柔軟です。複数のスキーマのカスタマイズが含まれる 1 つのバインディングファイルを使用したり、それらのカスタマイズを複数のバインディングファイルに分割したりできます。次に例を示します。 \f2xjc schema1.xsd schema2.xsd schema3.xsd \-b bindings123.xjb\fP -.br -\f2xjc schema1.xsd schema2.xsd schema3.xsd \-b bindings1.xjb \-b bindings2.xjb \-b bindings3.xjb\fP また、コマンド行にスキーマファイルとバインディングファイルを指定する順番は任意です。 -.TP 3 -\-d <dir> -デフォルトでは、XJC バインディングコンパイラは、Java コンテンツクラスを現在のディレクトリに生成します。このオプションを使用すると、代替出力ディレクトリを指定できます。出力ディレクトリはあらかじめ存在している必要があります。XJC バインディングコンパイラは、このディレクトリを自動的に作成しません。 -.TP 3 -\-p <pkg> -このコマンド行オプション経由でターゲットパッケージを指定した場合、その指定内容は、パッケージ名に対するすべてのバインディングカスタマイズや、仕様で規定されているデフォルトのパッケージ名アルゴリズムよりも優先されます。 -.TP 3 -\-httpproxy <proxy> -HTTP/HTTPS プロキシを指定します。形式は [user[:password]@]proxyHost[:proxyPort] です。従来の \f2\-host\fP および \f2\-port\fP は、下位互換性のためにリファレンス実装でもサポートされていますが、推奨されなくなりました。このオプションで指定されたパスワードは、 \f2top\fP コマンドを使用するユーザーなど、ほかのユーザーが表示できる引数であることに注意してください。セキュリティーを高めるには、次の \f2\-httpproxyfile\fP を使用してください。 -.TP 3 -\-httpproxyfile <file> -HTTP/HTTPS プロキシをファイル経由で指定します。形式は上記と同じですが、このファイル内に指定されたパスワードをほかのユーザーが表示することはできません。 -.TP 3 -\-classpath <arg> -<jxb:javaType> および <xjc:superClass> \f2カスタマイズが使用する\fP クライアントアプリケーションの \f2クラスファイルの検索場所を\fP 指定します。 -.TP 3 -\-catalog <file> -外部エンティティー参照を解決するカタログファイルを指定します。TR9401、XCatalog、および OASIS XML Catalog 形式がサポートされます。詳細は、『XML Entity and URI Resolvers』ドキュメントを参照するか、 \f2カタログリゾルバの\fP サンプルアプリケーションを調べてください。 -.TP 3 -\-readOnly -デフォルトでは、XJC バインディングコンパイラは、生成する Java ソースファイルを書き込みから保護しません。このオプションを使用すると、XJC バインディングコンパイラは生成される Java ソースを強制的に読み取り専用にします。 -.TP 3 -\-npa -パッケージレベルの注釈を **/package\-info.java に生成することを抑制します。このスイッチを使用して生成するコードでは、これらの注釈がほかの生成済みクラスに内部化されます。 -.TP 3 -\-no\-header -多少のメモとタイムスタンプを含むファイルヘッダーコメントの生成を抑制します。このオプションを使用すると、生成されたコードがわかりにくくなります。 -.TP 3 -\-target 2.0 -なんらかの JAXB 2.1 機能に依存するコードを生成しないようにします。これにより、生成されたコードを JAXB 2.0 ランタイム (JavaSE 6 など) で実行できます。 -.TP 3 -\-xmlschema -入力スキーマを W3C XML スキーマ (デフォルト) と見なします。このスイッチを指定しなくても、入力スキーマは W3C XML スキーマと見なされます。 -.TP 3 -\-relaxng -入力スキーマを RELAX NG として扱います (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 -.TP 3 -\-relaxng\-compact -入力スキーマを RELAX NG 圧縮構文として処理します (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 -.TP 3 -\-dtd -入力スキーマを XML DTD として扱います (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 -.TP 3 -\-wsdl -入力を WSDL として扱い、その内部のスキーマをコンパイルします (試験的、未サポート)。 -.TP 3 -\-quiet -進捗情報や警告など、コンパイラの出力を抑制します。 -.TP 3 -\-verbose -情報メッセージを出力したり特定のエラー発生時にスタックトレースを表示したりするなど、極めて冗長になります。 -.TP 3 -\-help -コンパイラスイッチの概要を表示します。 -.TP 3 -\-version -コンパイラのバージョン情報を表示します。 -.TP 3 -<schema file/URL/dir> -コンパイル対象となる 1 つまたは複数のスキーマファイルを指定します。ユーザーがディレクトリを指定した場合、xjc はそのディレクトリを走査し、そこで見つかったすべてのスキーマファイルをコンパイルします。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +非標準オプションも参照してください .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> -コンパイルごとに指定されたエピソードファイルを生成します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +非推奨で削除されたオプションも参照してください .RE - -.LP -.SS -非推奨コマンド行オプションおよび削除されたコマンド行オプション -.LP -.RS 3 -.TP 3 -\-host & \-port -これらのオプションは非推奨となり、\f3\-httpproxy\fP オプションで置き換えられました。これらのオプションは、下位互換性を確保する目的で引き続きサポートされますが、ドキュメントには記載されず、将来のリリースで削除される可能性もあります。 -.TP 3 -\-use\-runtime -JAXB 2.0 仕様で移植性のあるランタイムが規定されたため、JAXB RI が **/impl/runtime パッケージを生成する必要がなくなりました。このため、このスイッチは不要となり、削除されました。 -.TP 3 -\-source -\-source 互換性スイッチは、JAXB 2.0 の最初の Early Access 版で導入されました。このスイッチは、JAXB 2.0 の今後のリリースから削除されることになりました。1.0.x コードを生成する必要がある場合は、1.0.x コードベースのインストールを使用してください。 +.PP +\-nv +.RS 4 +デフォルトでは、XJCバインディング・コンパイラは、ソース・スキーマを処理する前に厳密な検証を実行します。このオプションを使用すると、厳密なスキーマ検証か無効になります。これは、バインディング・コンパイラが検証を一切実行しないということではありません。より厳密でない検証を実行するということです。 .RE - -.LP -.SS -コンパイラの制限 -.LP -.LP -通常は、関連するすべてのスキーマを、同じバインディングコンパイラスイッチを指定して 1 つの単位としてコンパイルするのがもっとも安全です。 -.LP -.LP -xjc を実行するときは、次に示す制限に注意してください。これらの制限のほとんどは、xjc を何度か呼び出して複数のスキーマをコンパイルする場合にのみ適用されます。 -.LP -.RS 3 -.TP 2 -o -複数のスキーマを同時にコンパイルする場合は、ターゲットの Java パッケージ名に次の優先順位の規則が適用されることに注意してください。 -.RS 3 -.TP 3 -1. -「\f2\-p\fP」コマンド行オプションがもっとも優先されます。 -.TP 3 -2. -<\f2jaxb:package\fP> のカスタマイズ -.TP 3 -3. -\f2targetNamespace\fP が宣言されている場合は、 \f2仕様に定義されている targetNamespace\fP \-> Java パッケージ名のアルゴリズムを適用します。 -.TP 3 -4. -\f2targetNamespace\fP が宣言されていない場合は、「generated」という名前のハードコードされたパッケージを使用します。 +.PP +\-extension +.RS 4 +デフォルトでは、XJCバインディング・コンパイラは、JAXB仕様のCompatibilityの章で説明されているルールを厳密に強制します。付録E\&.2には、JAXB v1\&.0で完全にはサポートされていない一連のW3C XMLスキーマ機能が定義されています。場合によっては、このスイッチで有効になる\fI\-extension\fRモードでそれらの機能が使用できる場合があります。また、デフォルトの厳密なモードでは、仕様に定義されているバインディング・カスタマイズのみが使用できます。\fI\-extension\fRスイッチを指定すれば、JAXB Vendor Extensionを使用できます。 .RE -.TP 2 -o -名前空間ごとに複数の <\f2jaxb:schemaBindings\fP> を持つことは不正です。このため、1 つのターゲット名前空間内の 2 つのスキーマを異なる Java パッケージにコンパイルすることはできません。 -.TP 2 -o -1 つの Java パッケージにコンパイルされるすべてのスキーマは、XJC バインディングコンパイラに同時に送信する必要があります。個別にコンパイルすることはできず、予期したとおりに動作しません。 -.TP 2 -o -複数のスキーマファイルにまたがる要素置換グループは、同時にコンパイルする必要があります。 +.PP +\-b \fIfile\fR +.RS 4 +処理する外部バインディング・ファイルを1つまたは複数指定します。バインディング・ファイルごとに\fI\-b\fRスイッチを指定する必要があります。外部バインディング・ファイルの構文は柔軟です。複数のスキーマのカスタマイズが含まれる1つのバインディング・ファイルを使用したり、それらのカスタマイズを複数のバインディング・ファイルに分割したりできます。次に例を示します。\fIxjc schema1\&.xsd schema2\&.xsd schema3\&.xsd \-b bindings123\&.xjb\fR +\fIxjc schema1\&.xsd schema2\&.xsd schema3\&.xsd \-b bindings1\&.xjb \-b bindings2\&.xjb \-b bindings3\&.xjb\fRまた、コマンドラインにスキーマ・ファイルとバインディング・ファイルを指定する順番は任意です。 .RE - -.LP +.PP +\-d \fIdir\fR +.RS 4 +デフォルトでは、XJCバインディング・コンパイラは、Javaコンテンツ・クラスを現在のディレクトリに生成します。このオプションを使用すると、代替出力ディレクトリを指定できます。出力ディレクトリはすでに存在している必要があります。XJCバインディング・コンパイラでは作成されません。 +.RE +.PP +\-p \fIpkg\fR +.RS 4 +このコマンドライン・オプションでターゲット・パッケージを指定した場合、その指定内容は、パッケージ名に対するすべてのバインディング・カスタマイズや、仕様で規定されているデフォルトのパッケージ名アルゴリズムよりも優先されます。 +.RE +.PP +\-httpproxy \fIproxy\fR +.RS 4 +\fI[user[:password]@]proxyHost[:proxyPort]\fR形式でHTTPまたはHTTPSプロキシを指定します。古い\fI\-host\fRおよび\fI\-port\fRオプションは、下位互換性のために引き続きRIでサポートされますが、非推奨となりました。このオプションで指定されたパスワードは、topコマンドを使用する他のユーザーが表示できる引数です。セキュリティを高めるには、\fI\-httpproxyfile\fRを使用してください。 +.RE +.PP +\-httpproxyfile file +.RS 4 +ファイルを使用して、HTTPまたはHTTPSプロキシを指定します。形式は\fI\-httpproxy\fRオプションと同じですが、このファイル内に指定されたパスワードを他のユーザーが表示することはできません。 +.RE +.PP +\-classpath arg +.RS 4 +\fIjxb:javaType\fRおよびxjc:\fIsuperClass\fRカスタマイズが使用するクライアント・アプリケーションのクラス・ファイルの検索場所を指定します。 +.RE +.PP +\-catalog file +.RS 4 +外部エンティティ参照を解決するカタログ・ファイルを指定します。TR9401、XCatalogおよびOASIS XML Catalogの各形式がサポートされます。http://xerces\&.apache\&.org/xml\-commons/components/resolver/resolver\-article\&.htmlの +XML Entity and URI Resolversを参照してください +.RE +.PP +\-readOnly +.RS 4 +デフォルトでは、XJCバインディング・コンパイラは、生成するJavaソース・ファイルを書込みから保護しません。このオプションを使用すると、XJCバインディング・コンパイラは生成されるJavaソースを強制的に読取り専用にします。 +.RE +.PP +\-npa +.RS 4 +\fI**/package\-info\&.java\fRへのパッケージ・レベルの注釈の生成を抑制します。このスイッチを使用して生成するコードでは、これらの注釈が他の生成済クラスに内部化されます。 +.RE +.PP +\-no\-header +.RS 4 +多少のメモとタイムスタンプを含むファイル・ヘッダー・コメントの生成を抑制します。これを使用すると、生成されたコードと\fIdiff\fRコマンドとの互換性がより強くなります。 +.RE +.PP +\-target 2\&.0 +.RS 4 +JAXB 2\&.1機能に依存するコードを生成しないようにします。これにより、生成されたコードをJAXB 2\&.0ランタイム環境(Java SE 6など)で実行できるようになります。 +.RE +.PP +\-xmlschema +.RS 4 +入力スキーマをW3C XMLスキーマとして扱います(デフォルト)。このスイッチを指定しない場合、入力スキーマはW3C XMLスキーマと同じように扱われます。 +.RE +.PP +\-relaxing +.RS 4 +入力スキーマをRELAX NGとして扱います(試験的および未サポート)。RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。 +.RE +.PP +\-relaxing\-compact +.RS 4 +入力スキーマをRELAX NG圧縮構文として処理します(試験的および未サポート)。RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。 +.RE +.PP +\-dtd +.RS 4 +入力スキーマをXML DTDとして扱います(試験的および未サポート)。RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。 +.RE +.PP +\-wsdl +.RS 4 +入力をWSDLとして扱い、その内部のスキーマをコンパイルします(試験的および未サポート)。 +.RE +.PP +\-quiet +.RS 4 +進捗情報や警告など、コンパイラの出力を抑制します。 +.RE +.PP +\-verbose +.RS 4 +情報メッセージを出力したり特定のエラー発生時にスタック・トレースを表示したりするなど、きわめて冗長になります。 +.RE +.PP +\-help +.RS 4 +コンパイラ・スイッチのサマリーを表示します。 +.RE +.PP +\-version +.RS 4 +コンパイラのバージョン情報を表示します。 +.RE +.PP +\fIschema file/URL/dir\fR +.RS 4 +コンパイル対象となる1つまたは複数のスキーマ・ファイルを指定します。ディレクトリを指定する場合、\fIxjc\fRコマンドはすべてのスキーマ・ファイルをスキャンしてコンパイルします。 +.RE +.SS "非標準オプション" +.PP +\-XLocator +.RS 4 +生成されたコードでは、非整列化の後にJava Beanインスタンスに含まれるソースXMLに関するSAX Locator情報が公開されます。 +.RE +.PP +\-Xsync\-methods +.RS 4 +生成されたすべてのメソッド・シグニチャに\fIsynchronized\fRキーワードが含められます。 +.RE +.PP +\-mark\-generated +.RS 4 +生成されたコードに注釈\fI@javax\&.annotation\&.Generated\fRを付けます。 +.RE +.PP +\-episode file +.RS 4 +コンパイルごとに指定されたエピソード・ファイルを生成します。 +.RE +.SS "非推奨で削除されたオプション" +.PP +\-host & \-port +.RS 4 +これらのオプションは\fI\-httpproxy\fRオプションで置き換えられました。これらのオプションは、下位互換性を確保するためにサポートされますが、ドキュメントには記載されず、将来のリリースで削除される可能性もあります。 +.RE +.PP +\-use\-runtime +.RS 4 +JAXB 2\&.0仕様では、移植性のあるランタイム環境が定義されたため、JAXB RIが\fI**/impl/runtime \fRパッケージを生成する必要がなくなりました。このため、このスイッチは不要となり、削除されました。 +.RE +.PP +\-source +.RS 4 +\fI\-source\fR互換性スイッチは、JAXB 2\&.0の最初のEarly Access版で導入されました。このスイッチはJAXB 2\&.0の今後のリリースから削除されます。1\&.0\&.xコードを生成する必要がある場合は、1\&.0\&.xコード・ベースのインストールを使用してください。 +.RE +.SH "コンパイラの制限" +.PP +通常は、関連するすべてのスキーマを、同じバインディング・コンパイラ・スイッチを指定して1つの単位としてコンパイルするのが最も安全です。\fIxjc\fRコマンドの実行時には、次の制限リストに留意してください。これらの問題のほとんどは、\fIxjc\fRコマンドを何度か呼び出して複数のスキーマをコンパイルする場合にのみ当てはまります。 +.PP +複数のスキーマを同時にコンパイルする場合は、ターゲットのJavaパッケージ名に次の優先順位のルールが適用されることに注意してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +\fI\-p\fRオプションが最も優先されます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +\fIjaxb:package\fRのカスタマイズ。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 3.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 3." 4.2 +.\} +\fItargetNamespace\fRが宣言されている場合は、\fIt\fR\fIargetNamespace\fRを仕様で定義されているJavaパッケージ名のアルゴリズムに適用します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 4.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 4." 4.2 +.\} +\fItargetNamespace\fRが宣言されていない場合は、\fIgenerated\fRという名前のハードコードされたパッケージを使用します。 +.RE +.PP +1つのネームスペースが複数の\fIjaxb:schemaBindings\fRを持つことはできないため、異なるJavaパッケージにコンパイラされる同一ターゲット・ネームスペースが2つのスキーマを持つことはできません。 +.PP +同じJavaパッケージにコンパイラされるスキーマはすべて、同時にXJCバインディング・コンパイラに送信される必要があります。別々にコンパイルすると、予想どおりに機能しません。 +.PP +複数のスキーマ・ファイルにまたがる要素置換グループは、同時にコンパイルする必要があります。 .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -コマンド行でのコンバータの実行 (XJC): [ -.na -\f2コマンド行の命令\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/xjc.html、 -.na -\f2xjc を Ant とともに使用する\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.html] -.TP 2 -o -.na -\f2XML バインドのための Java アーキテクチャー (JAXB)\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/xml/jaxb/index.html +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://jaxb\&.java\&.net/nonav/2\&.2\&.3u1/docs/xjc\&.htmlの +Binding Compiler (xjc) .RE - -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://www\&.oracle\&.com/technetwork/articles/javase/index\-140168\&.htmlの +Java Architecture for XML Binding (JAXB) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/macosx/classes/apple/laf/AquaLookAndFeel.java b/jdk/src/macosx/classes/apple/laf/AquaLookAndFeel.java index 805bb4e23d6..b51b08b84c5 100644 --- a/jdk/src/macosx/classes/apple/laf/AquaLookAndFeel.java +++ b/jdk/src/macosx/classes/apple/laf/AquaLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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,4 +30,5 @@ package apple.laf; * "apple.laf.AquaLookAndFeel" is so widely used, documented, * and hard coded that it is impractical to remove it. */ +@SuppressWarnings("serial") // JDK implementation class public class AquaLookAndFeel extends com.apple.laf.AquaLookAndFeel { } diff --git a/jdk/src/macosx/classes/apple/security/AppleProvider.java b/jdk/src/macosx/classes/apple/security/AppleProvider.java index 5f05f968d1f..01accf67324 100644 --- a/jdk/src/macosx/classes/apple/security/AppleProvider.java +++ b/jdk/src/macosx/classes/apple/security/AppleProvider.java @@ -36,7 +36,7 @@ import java.security.*; * * This provider only exists to provide access to the Apple keychain-based KeyStore implementation */ - +@SuppressWarnings("serial") // JDK implementation class public final class AppleProvider extends Provider { private static final String info = "Apple Provider"; diff --git a/jdk/src/macosx/classes/com/apple/eawt/AppEvent.java b/jdk/src/macosx/classes/com/apple/eawt/AppEvent.java index d2d9575ec0b..643351748cd 100644 --- a/jdk/src/macosx/classes/com/apple/eawt/AppEvent.java +++ b/jdk/src/macosx/classes/com/apple/eawt/AppEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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.awt.Window; * @since Java for Mac OS X 10.6 Update 3 * @since Java for Mac OS X 10.5 Update 8 */ +@SuppressWarnings("serial") // JDK implementation class public abstract class AppEvent extends EventObject { AppEvent() { super(Application.getApplication()); @@ -44,6 +45,7 @@ public abstract class AppEvent extends EventObject { /** * Contains a list of files. */ + @SuppressWarnings("serial") // JDK implementation class public abstract static class FilesEvent extends AppEvent { final List<File> files; @@ -64,6 +66,7 @@ public abstract class AppEvent extends EventObject { * * @see OpenFilesHandler#openFiles(OpenFilesEvent) */ + @SuppressWarnings("serial") // JDK implementation class public static class OpenFilesEvent extends FilesEvent { final String searchTerm; @@ -87,6 +90,7 @@ public abstract class AppEvent extends EventObject { * * @see PrintFilesHandler#printFiles(PrintFilesEvent) */ + @SuppressWarnings("serial") // JDK implementation class public static class PrintFilesEvent extends FilesEvent { PrintFilesEvent(final List<File> files) { super(files); @@ -98,6 +102,7 @@ public abstract class AppEvent extends EventObject { * * @see OpenURIHandler#openURI(OpenURIEvent) */ + @SuppressWarnings("serial") // JDK implementation class public static class OpenURIEvent extends AppEvent { final URI uri; @@ -118,6 +123,7 @@ public abstract class AppEvent extends EventObject { * * @see AboutHandler#handleAbout() */ + @SuppressWarnings("serial") // JDK implementation class public static class AboutEvent extends AppEvent { AboutEvent() { } } /** @@ -125,6 +131,7 @@ public abstract class AppEvent extends EventObject { * * @see PreferencesHandler#handlePreferences() */ + @SuppressWarnings("serial") // JDK implementation class public static class PreferencesEvent extends AppEvent { PreferencesEvent() { } } /** @@ -132,6 +139,7 @@ public abstract class AppEvent extends EventObject { * * @see QuitHandler#handleQuitRequestWith(QuitEvent, QuitResponse) */ + @SuppressWarnings("serial") // JDK implementation class public static class QuitEvent extends AppEvent { QuitEvent() { } } /** @@ -139,6 +147,7 @@ public abstract class AppEvent extends EventObject { * * @see AppReOpenedListener#appReOpened(AppReOpenedEvent) */ + @SuppressWarnings("serial") // JDK implementation class public static class AppReOpenedEvent extends AppEvent { AppReOpenedEvent() { } } /** @@ -147,6 +156,7 @@ public abstract class AppEvent extends EventObject { * @see AppForegroundListener#appRaisedToForeground(AppForegroundEvent) * @see AppForegroundListener#appMovedToBackground(AppForegroundEvent) */ + @SuppressWarnings("serial") // JDK implementation class public static class AppForegroundEvent extends AppEvent { AppForegroundEvent() { } } /** @@ -155,6 +165,7 @@ public abstract class AppEvent extends EventObject { * @see AppHiddenListener#appHidden(AppHiddenEvent) * @see AppHiddenListener#appUnhidden(AppHiddenEvent) */ + @SuppressWarnings("serial") // JDK implementation class public static class AppHiddenEvent extends AppEvent { AppHiddenEvent() { } } /** @@ -163,6 +174,7 @@ public abstract class AppEvent extends EventObject { * @see UserSessionListener#userSessionActivated(UserSessionEvent) * @see UserSessionListener#userSessionDeactivated(UserSessionEvent) */ + @SuppressWarnings("serial") // JDK implementation class public static class UserSessionEvent extends AppEvent { UserSessionEvent() { } } /** @@ -171,6 +183,7 @@ public abstract class AppEvent extends EventObject { * @see ScreenSleepListener#screenAboutToSleep(ScreenSleepEvent) * @see ScreenSleepListener#screenAwoke(ScreenSleepEvent) */ + @SuppressWarnings("serial") // JDK implementation class public static class ScreenSleepEvent extends AppEvent { ScreenSleepEvent() { } } /** @@ -179,6 +192,7 @@ public abstract class AppEvent extends EventObject { * @see SystemSleepListener#systemAboutToSleep(SystemSleepEvent) * @see SystemSleepListener#systemAwoke(SystemSleepEvent) */ + @SuppressWarnings("serial") // JDK implementation class public static class SystemSleepEvent extends AppEvent { SystemSleepEvent() { } } /** @@ -188,6 +202,7 @@ public abstract class AppEvent extends EventObject { * * @since Java for Mac OS X 10.7 Update 1 */ + @SuppressWarnings("serial") // JDK implementation class public static class FullScreenEvent extends AppEvent { final Window window; diff --git a/jdk/src/macosx/classes/com/apple/eawt/ApplicationEvent.java b/jdk/src/macosx/classes/com/apple/eawt/ApplicationEvent.java index 482075dc163..908c8257b01 100644 --- a/jdk/src/macosx/classes/com/apple/eawt/ApplicationEvent.java +++ b/jdk/src/macosx/classes/com/apple/eawt/ApplicationEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +34,7 @@ import java.util.EventObject; * @since 1.4 */ @Deprecated +@SuppressWarnings("serial") // JDK implementation class public class ApplicationEvent extends EventObject { private String fFilename = null; private boolean fHandled = false; diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaCaret.java b/jdk/src/macosx/classes/com/apple/laf/AquaCaret.java index edb2bea8b2b..15b9098ced2 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaCaret.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaCaret.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ import javax.swing.border.Border; import javax.swing.plaf.UIResource; import javax.swing.text.*; +@SuppressWarnings("serial") // Superclass is not serializable across versions public class AquaCaret extends DefaultCaret implements UIResource, PropertyChangeListener { final boolean isMultiLineEditor; final JTextComponent c; diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxButton.java b/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxButton.java index 1d902d0a1d5..2867245ee1e 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxButton.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,6 +33,7 @@ import javax.swing.plaf.UIResource; import apple.laf.JRSUIState; import apple.laf.JRSUIConstants.*; +@SuppressWarnings("serial") // Superclass is not serializable across versions class AquaComboBoxButton extends JButton { final protected JComboBox comboBox; final protected JList list; @@ -43,6 +44,7 @@ class AquaComboBoxButton extends JButton { boolean isPopDown; boolean isSquare; + @SuppressWarnings("serial") // anonymous class protected AquaComboBoxButton(final AquaComboBoxUI ui, final JComboBox comboBox, final CellRendererPane rendererPane, final JList list) { super(""); putClientProperty("JButton.buttonType", "comboboxInternal"); diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxPopup.java b/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxPopup.java index 0607f9c36ac..dde9b1be337 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxPopup.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxPopup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,6 +33,7 @@ import javax.swing.plaf.basic.BasicComboPopup; import sun.lwawt.macosx.CPlatformWindow; +@SuppressWarnings("serial") // Superclass is not serializable across versions class AquaComboBoxPopup extends BasicComboPopup { static final int FOCUS_RING_PAD_LEFT = 6; static final int FOCUS_RING_PAD_RIGHT = 6; @@ -147,6 +148,7 @@ class AquaComboBoxPopup extends BasicComboPopup { } @Override + @SuppressWarnings("serial") // anonymous class protected JList createList() { return new JList(comboBox.getModel()) { @Override diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxRenderer.java b/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxRenderer.java index 181ad9970dc..6161eb6447c 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxRenderer.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,6 +28,7 @@ package com.apple.laf; import javax.swing.*; import javax.swing.plaf.UIResource; +@SuppressWarnings("serial") // Superclass is not serializable across versions class AquaComboBoxRenderer extends AquaComboBoxRendererInternal implements UIResource { public AquaComboBoxRenderer(final JComboBox comboBox) { super(comboBox); diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxRendererInternal.java b/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxRendererInternal.java index a93560a1f71..2ed6dcfcf70 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxRendererInternal.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxRendererInternal.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +30,7 @@ import sun.swing.SwingUtilities2; import javax.swing.*; import java.awt.*; +@SuppressWarnings("serial") // Superclass is not serializable across versions class AquaComboBoxRendererInternal extends JLabel implements ListCellRenderer { final JComboBox fComboBox; boolean fSelected; diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxUI.java index 4b9c78b3dcd..c38e108633b 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -202,7 +202,9 @@ public class AquaComboBoxUI extends BasicComboBoxUI implements Sizeable { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions class AquaCustomComboTextField extends JTextField { + @SuppressWarnings("serial") // anonymous class public AquaCustomComboTextField() { final InputMap inputMap = getInputMap(); inputMap.put(KeyStroke.getKeyStroke("DOWN"), highlightNextAction); @@ -286,6 +288,7 @@ public class AquaComboBoxUI extends BasicComboBoxUI implements Sizeable { SwingUtilities.replaceUIActionMap(comboBox, actionMap); } + @SuppressWarnings("serial") // Superclass is not serializable across versions private abstract class ComboBoxAction extends AbstractAction { public void actionPerformed(final ActionEvent e) { if (!comboBox.isEnabled() || !comboBox.isShowing()) { @@ -306,6 +309,7 @@ public class AquaComboBoxUI extends BasicComboBoxUI implements Sizeable { /** * Hilight _but do not select_ the next item in the list. */ + @SuppressWarnings("serial") // anonymous class private Action highlightNextAction = new ComboBoxAction() { @Override public void performComboBoxAction(AquaComboBoxUI ui) { @@ -322,6 +326,7 @@ public class AquaComboBoxUI extends BasicComboBoxUI implements Sizeable { /** * Hilight _but do not select_ the previous item in the list. */ + @SuppressWarnings("serial") // anonymous class private Action highlightPreviousAction = new ComboBoxAction() { @Override void performComboBoxAction(final AquaComboBoxUI ui) { @@ -334,6 +339,7 @@ public class AquaComboBoxUI extends BasicComboBoxUI implements Sizeable { } }; + @SuppressWarnings("serial") // anonymous class private Action highlightFirstAction = new ComboBoxAction() { @Override void performComboBoxAction(final AquaComboBoxUI ui) { @@ -342,6 +348,7 @@ public class AquaComboBoxUI extends BasicComboBoxUI implements Sizeable { } }; + @SuppressWarnings("serial") // anonymous class private Action highlightLastAction = new ComboBoxAction() { @Override void performComboBoxAction(final AquaComboBoxUI ui) { @@ -351,6 +358,7 @@ public class AquaComboBoxUI extends BasicComboBoxUI implements Sizeable { } }; + @SuppressWarnings("serial") // anonymous class private Action highlightPageUpAction = new ComboBoxAction() { @Override void performComboBoxAction(final AquaComboBoxUI ui) { @@ -371,6 +379,7 @@ public class AquaComboBoxUI extends BasicComboBoxUI implements Sizeable { } }; + @SuppressWarnings("serial") // anonymous class private Action highlightPageDownAction = new ComboBoxAction() { @Override void performComboBoxAction(final AquaComboBoxUI ui) { @@ -486,12 +495,14 @@ public class AquaComboBoxUI extends BasicComboBoxUI implements Sizeable { // This is somewhat messy. The difference here from BasicComboBoxUI.EnterAction is that // arrow up or down does not automatically select the + @SuppressWarnings("serial") // anonymous class private static final Action triggerSelectionAction = new AbstractAction() { public void actionPerformed(final ActionEvent e) { triggerSelectionEvent((JComboBox)e.getSource(), e); } }; + @SuppressWarnings("serial") // anonymous class private static final Action toggleSelectionAction = new AbstractAction() { public void actionPerformed(final ActionEvent e) { final JComboBox comboBox = (JComboBox)e.getSource(); @@ -510,6 +521,7 @@ public class AquaComboBoxUI extends BasicComboBoxUI implements Sizeable { } }; + @SuppressWarnings("serial") // anonymous class private static Action hideAction = new AbstractAction() { @Override public void actionPerformed(final ActionEvent e) { diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaFileChooserUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaFileChooserUI.java index cfa3b08d3be..3fae5e20310 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaFileChooserUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaFileChooserUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -857,6 +857,7 @@ public class AquaFileChooserUI extends FileChooserUI { // Action to attach to the file list so we can override the default action // of the table for the return key, which is to select the next line. + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class DefaultButtonAction extends AbstractAction { public void actionPerformed(final ActionEvent e) { final JRootPane root = AquaFileChooserUI.this.getFileChooser().getRootPane(); @@ -883,6 +884,7 @@ public class AquaFileChooserUI extends FileChooserUI { /** * Creates a new folder. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class NewFolderAction extends AbstractAction { protected NewFolderAction() { super(newFolderAccessibleName); @@ -944,6 +946,7 @@ public class AquaFileChooserUI extends FileChooserUI { /** * Responds to an Open, Save, or Choose request */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class ApproveSelectionAction extends AbstractAction { public void actionPerformed(final ActionEvent e) { fSubPanel.approveSelection(getFileChooser()); @@ -953,6 +956,7 @@ public class AquaFileChooserUI extends FileChooserUI { /** * Responds to an OpenDirectory request */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class OpenSelectionAction extends AbstractAction { public void actionPerformed(final ActionEvent e) { final int index = fFileList.getSelectedRow(); @@ -966,6 +970,7 @@ public class AquaFileChooserUI extends FileChooserUI { /** * Responds to a cancel request. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class CancelSelectionAction extends AbstractAction { public void actionPerformed(final ActionEvent e) { getFileChooser().cancelSelection(); @@ -979,6 +984,7 @@ public class AquaFileChooserUI extends FileChooserUI { /** * Rescans the files in the current directory */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class UpdateAction extends AbstractAction { public void actionPerformed(final ActionEvent e) { final JFileChooser fc = getFileChooser(); @@ -1004,6 +1010,7 @@ public class AquaFileChooserUI extends FileChooserUI { } // Penultimate superclass is JLabel + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class MacFCTableCellRenderer extends DefaultTableCellRenderer { boolean fIsSelected = false; @@ -1084,6 +1091,7 @@ public class AquaFileChooserUI extends FileChooserUI { } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class FileRenderer extends MacFCTableCellRenderer { public FileRenderer(final Font f) { super(f); @@ -1100,6 +1108,7 @@ public class AquaFileChooserUI extends FileChooserUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class DateRenderer extends MacFCTableCellRenderer { public DateRenderer(final Font f) { super(f); @@ -1134,6 +1143,7 @@ public class AquaFileChooserUI extends FileChooserUI { return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE); } + @SuppressWarnings("serial") // anonymous class protected ListCellRenderer createDirectoryComboBoxRenderer(final JFileChooser fc) { return new AquaComboBoxRendererInternal(directoryComboBox) { public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus) { @@ -1162,6 +1172,7 @@ public class AquaFileChooserUI extends FileChooserUI { /** * Data model for a type-face selection combo-box. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class DirectoryComboBoxModel extends AbstractListModel implements ComboBoxModel { Vector<File> fDirectories = new Vector<File>(); int topIndex = -1; @@ -1245,6 +1256,7 @@ public class AquaFileChooserUI extends FileChooserUI { // // Renderer for Types ComboBox // + @SuppressWarnings("serial") // anonymous class protected ListCellRenderer createFilterComboBoxRenderer() { return new AquaComboBoxRendererInternal(filterComboBox) { public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus) { @@ -1266,6 +1278,7 @@ public class AquaFileChooserUI extends FileChooserUI { /** * Data model for a type-face selection combo-box. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class FilterComboBoxModel extends AbstractListModel<FileFilter> implements ComboBoxModel<FileFilter>, PropertyChangeListener { protected FileFilter[] filters; @@ -1336,6 +1349,7 @@ public class AquaFileChooserUI extends FileChooserUI { /** * Acts when FilterComboBox has changed the selected item. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class FilterComboBoxAction extends AbstractAction { protected FilterComboBoxAction() { super("FilterComboBoxAction"); @@ -1349,6 +1363,7 @@ public class AquaFileChooserUI extends FileChooserUI { /** * Acts when DirectoryComboBox has changed the selected item. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class DirectoryComboBoxAction extends AbstractAction { protected DirectoryComboBoxAction() { super("DirectoryComboBoxAction"); @@ -1360,6 +1375,7 @@ public class AquaFileChooserUI extends FileChooserUI { } // Sorting Table operations + @SuppressWarnings("serial") // Superclass is not serializable across versions class JSortingTableHeader extends JTableHeader { public JSortingTableHeader(final TableColumnModel cm) { super(cm); @@ -1396,6 +1412,7 @@ public class AquaFileChooserUI extends FileChooserUI { return label; } + @SuppressWarnings("serial") // Superclass is not serializable across versions class AquaTableCellRenderer extends DefaultTableCellRenderer implements UIResource { public Component getTableCellRendererComponent(final JTable localTable, final Object value, final boolean isSelected, final boolean hasFocus, final int row, final int column) { if (localTable != null) { @@ -1474,6 +1491,7 @@ public class AquaFileChooserUI extends FileChooserUI { tPanel.add(labelArea); // separator line + @SuppressWarnings("serial") // anonymous class final JSeparator sep = new JSeparator(){ public Dimension getPreferredSize() { return new Dimension(((JComponent)getParent()).getWidth(), 3); @@ -1761,6 +1779,7 @@ public class AquaFileChooserUI extends FileChooserUI { return p; } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class ScrollPaneCornerPanel extends JPanel { final Border border = UIManager.getBorder("TableHeader.cellBorder"); @@ -2225,6 +2244,7 @@ public class AquaFileChooserUI extends FileChooserUI { } // See FileRenderer - documents in Save dialogs draw disabled, so they shouldn't be selected + @SuppressWarnings("serial") // Superclass is not serializable across versions class MacListSelectionModel extends DefaultListSelectionModel { AquaFileSystemModel fModel; @@ -2315,6 +2335,7 @@ public class AquaFileChooserUI extends FileChooserUI { // Convenience, to translate from the JList directory view to the Mac-style JTable // & minimize diffs between this and BasicFileChooserUI + @SuppressWarnings("serial") // Superclass is not serializable across versions class JTableExtension extends JTable { public void setSelectedIndex(final int index) { getSelectionModel().setSelectionInterval(index, index); diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaFileSystemModel.java b/jdk/src/macosx/classes/com/apple/laf/AquaFileSystemModel.java index 31c249349ea..37e627e8338 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaFileSystemModel.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaFileSystemModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +39,7 @@ import javax.swing.table.AbstractTableModel; * * Some of it came from BasicDirectoryModel */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class AquaFileSystemModel extends AbstractTableModel implements PropertyChangeListener { private final JTable fFileList; private LoadFilesThread loadThread = null; diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaFileView.java b/jdk/src/macosx/classes/com/apple/laf/AquaFileView.java index dccd9bc93e7..b69d2d09e7c 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaFileView.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaFileView.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +34,7 @@ import javax.swing.filechooser.FileView; import com.apple.laf.AquaUtils.RecyclableSingleton; +@SuppressWarnings("serial") // JDK implementation class class AquaFileView extends FileView { private static final boolean DEBUG = false; diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaFonts.java b/jdk/src/macosx/classes/com/apple/laf/AquaFonts.java index 79f032ae94d..1e9c778695b 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaFonts.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaFonts.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +34,7 @@ import javax.swing.plaf.*; import com.apple.laf.AquaUtils.RecyclableSingleton; +@SuppressWarnings("serial") // JDK implementation class public class AquaFonts { private static final String MAC_DEFAULT_FONT_NAME = "Lucida Grande"; diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaIcon.java b/jdk/src/macosx/classes/com/apple/laf/AquaIcon.java index 576661be417..e40d066ac22 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaIcon.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaIcon.java @@ -295,14 +295,8 @@ public class AquaIcon { } Image createImage() { - int w = getIconWidth(); - int h = getIconHeight(); - return new AquaImageFactory.MultiResolutionIconImage( - AquaUtils.getCImageCreator().createSystemImageFromSelector( - selector, w, h), - AquaUtils.getCImageCreator().createSystemImageFromSelector( - selector, 2 * w, 2 * h) - ); + return AquaUtils.getCImageCreator().createSystemImageFromSelector( + selector, getIconWidth(), getIconHeight()); } } } diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaImageFactory.java b/jdk/src/macosx/classes/com/apple/laf/AquaImageFactory.java index 5451abd5dcd..be6a787a45b 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaImageFactory.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaImageFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -125,16 +125,14 @@ public class AquaImageFactory { private static final int kAlertIconSize = 64; static IconUIResource getAppIconCompositedOn(final Image background) { - final BufferedImage iconImage = getAppIconImageCompositedOn(background, 1); - - if (background instanceof MultiResolutionIconImage) { - BufferedImage background2x - = ((MultiResolutionIconImage) background).resolutionVariant; - BufferedImage icon2xImage = getAppIconImageCompositedOn(background2x, 2); - - return new IconUIResource(new ImageIcon( - new MultiResolutionIconImage(iconImage, icon2xImage))); + if (background instanceof MultiResolutionBufferedImage) { + int width = background.getWidth(null); + Image mrIconImage = ((MultiResolutionBufferedImage) background).map( + rv -> getAppIconImageCompositedOn(rv, rv.getWidth(null) / width)); + return new IconUIResource(new ImageIcon(mrIconImage)); } + + BufferedImage iconImage = getAppIconImageCompositedOn(background, 1); return new IconUIResource(new ImageIcon(iconImage)); } @@ -248,6 +246,7 @@ public class AquaImageFactory { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions static class InvertableImageIcon extends ImageIcon implements InvertableIcon, UIResource { Icon invertedImage; public InvertableImageIcon(final Image image) { @@ -312,10 +311,16 @@ public class AquaImageFactory { return icon; } - Image icon2x = AquaUtils.getCImageCreator().createImageFromName( - imageName, 2 * icon.getWidth(null), 2 * icon.getHeight(null)); - return new MultiResolutionBufferedImage( - BufferedImage.TYPE_INT_ARGB_PRE, 0, icon, icon2x); + int w = icon.getWidth(null); + int h = icon.getHeight(null); + + Dimension[] sizes = new Dimension[]{ + new Dimension(w, h), new Dimension(2 * w, 2 * h) + }; + + return new MultiResolutionBufferedImage(icon, sizes, (width, height) -> + AquaUtils.getCImageCreator().createImageFromName( + imageName, width, height)); } public static class NineSliceMetrics { @@ -480,6 +485,7 @@ public class AquaImageFactory { // when we use SystemColors, we need to proxy the color with something that implements UIResource, // so that it will be uninstalled when the look and feel is changed. + @SuppressWarnings("serial") // JDK implementation class private static class SystemColorProxy extends Color implements UIResource { final Color color; public SystemColorProxy(final Color color) { @@ -524,29 +530,4 @@ public class AquaImageFactory { public static Color getSelectionInactiveForegroundColorUIResource() { return new SystemColorProxy(LWCToolkit.getAppleColor(LWCToolkit.INACTIVE_SELECTION_FOREGROUND_COLOR)); } - - static class MultiResolutionIconImage extends BufferedImage - implements MultiResolutionImage { - - BufferedImage resolutionVariant; - - public MultiResolutionIconImage(BufferedImage image, BufferedImage resolutionVariant) { - super(image.getWidth(), image.getHeight(), image.getType()); - this.resolutionVariant = resolutionVariant; - Graphics g = getGraphics(); - g.drawImage(image, 0, 0, null); - g.dispose(); - } - - @Override - public Image getResolutionVariant(int width, int height) { - return ((width <= getWidth() && height <= getHeight())) - ? this : resolutionVariant; - } - - @Override - public List<Image> getResolutionVariants() { - return Arrays.asList(this, resolutionVariant); - } - } -} +} \ No newline at end of file diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameDockIconUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameDockIconUI.java index 80ba1bbf332..e144100ce0f 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameDockIconUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameDockIconUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -167,6 +167,7 @@ public class AquaInternalFrameDockIconUI extends DesktopIconUI implements MouseL fFrame.putClientProperty(CACHED_FRAME_ICON_KEY, null); } + @SuppressWarnings("serial") // Superclass is not serializable across versions class ScaledImageLabel extends JLabel { ScaledImageLabel() { super(null, null, CENTER); @@ -226,6 +227,7 @@ public class AquaInternalFrameDockIconUI extends DesktopIconUI implements MouseL } } + @SuppressWarnings("serial") // Superclass is not serializable across versions class DockLabel extends JLabel { final static int NUB_HEIGHT = 7; final static int ROUND_ADDITIONAL_HEIGHT = 8; diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameManager.java b/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameManager.java index a229b19d0d2..49a9a19d201 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameManager.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -53,6 +53,7 @@ import javax.swing.*; * * @see com.sun.java.swing.plaf.windows.WindowsDesktopManager */ +@SuppressWarnings("serial") // JDK implementation class public class AquaInternalFrameManager extends DefaultDesktopManager { // Variables diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaInternalFramePaneUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaInternalFramePaneUI.java index c21575db86a..1534d6d80c7 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaInternalFramePaneUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaInternalFramePaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -116,6 +116,7 @@ public class AquaInternalFramePaneUI extends BasicDesktopPaneUI implements Mouse } } + @SuppressWarnings("serial") // Superclass is not serializable across versions class Dock extends JComponent implements Border { static final int DOCK_EDGE_SLACK = 8; @@ -185,6 +186,7 @@ public class AquaInternalFramePaneUI extends BasicDesktopPaneUI implements Mouse } } + @SuppressWarnings("serial") // JDK implementation class class AquaDockingDesktopManager extends AquaInternalFrameManager { public void openFrame(final JInternalFrame f) { final JInternalFrame.JDesktopIcon desktopIcon = f.getDesktopIcon(); diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameUI.java index dd0267ce3fc..076b2dec952 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaInternalFrameUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -753,6 +753,7 @@ public class AquaInternalFrameUI extends BasicInternalFrameUI implements SwingCo } }; + @SuppressWarnings("serial") // Superclass is not serializable across versions static class CompoundUIBorder extends CompoundBorder implements UIResource { public CompoundUIBorder(final Border inside, final Border outside) { super(inside, outside); } } @@ -796,6 +797,7 @@ public class AquaInternalFrameUI extends BasicInternalFrameUI implements SwingCo } }; + @SuppressWarnings("serial") // Superclass is not serializable across versions class ResizeBox extends JLabel implements MouseListener, MouseMotionListener, MouseWheelListener, ComponentListener, PropertyChangeListener, UIResource { final JLayeredPane layeredPane; Dimension originalSize; diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaKeyBindings.java b/jdk/src/macosx/classes/com/apple/laf/AquaKeyBindings.java index 98048262b80..1b83b300027 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaKeyBindings.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaKeyBindings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -528,6 +528,7 @@ public class AquaKeyBindings { } // extracted and adapted from DefaultEditorKit in 1.6 + @SuppressWarnings("serial") // Superclass is not serializable across versions static abstract class DeleteWordAction extends TextAction { public DeleteWordAction(final String name) { super(name); } @@ -565,6 +566,7 @@ public class AquaKeyBindings { final TextAction pageUpMultilineAction = new AquaMultilineAction(pageUpMultiline, DefaultEditorKit.pageUpAction, DefaultEditorKit.beginAction); final TextAction pageDownMultilineAction = new AquaMultilineAction(pageDownMultiline, DefaultEditorKit.pageDownAction, DefaultEditorKit.endAction); + @SuppressWarnings("serial") // Superclass is not serializable across versions static class AquaMultilineAction extends TextAction { final String targetActionName; final String proxyActionName; diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaListUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaListUI.java index 91636ca190d..85d06468912 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaListUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaListUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -67,6 +67,7 @@ public class AquaListUI extends BasicListUI { list.getActionMap().put("aquaEnd", new AquaHomeEndAction(false)); } + @SuppressWarnings("serial") // Superclass is not serializable across versions static class AquaHomeEndAction extends AbstractAction { private boolean fHomeAction = false; diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java b/jdk/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java index baa5c61c824..8c0d06cfa79 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java @@ -32,19 +32,19 @@ import java.util.*; import javax.swing.*; import javax.swing.border.Border; import javax.swing.plaf.*; +import javax.swing.plaf.basic.BasicBorders; import javax.swing.plaf.basic.BasicLookAndFeel; - +import static javax.swing.UIDefaults.LazyValue; import sun.swing.*; import apple.laf.*; +@SuppressWarnings("serial") // Superclass is not serializable across versions public class AquaLookAndFeel extends BasicLookAndFeel { static final String sOldPropertyPrefix = "com.apple.macos."; // old prefix for things like 'useScreenMenuBar' static final String sPropertyPrefix = "apple.laf."; // new prefix for things like 'useScreenMenuBar' // for lazy initalizers. Following the pattern from metal. private static final String PKG_PREFIX = "com.apple.laf."; - private static final String kAquaImageFactoryName = PKG_PREFIX + "AquaImageFactory"; - private static final String kAquaFontsName = PKG_PREFIX + "AquaFonts"; /** * Return a short string that identifies this look and feel, e.g. @@ -320,17 +320,21 @@ public class AquaLookAndFeel extends BasicLookAndFeel { // our launch times of Swing apps. // *** Text value objects - final Object marginBorder = new SwingLazyValue("javax.swing.plaf.basic.BasicBorders$MarginBorder"); + final LazyValue marginBorder = t -> new BasicBorders.MarginBorder(); - final Object zero = new Integer(0); + final int zero = 0; final Object editorMargin = zeroInsets; // this is not correct - look at TextEdit to determine the right margin - final Object textCaretBlinkRate = new Integer(500); - final Object textFieldBorder = new SwingLazyValue(PKG_PREFIX + "AquaTextFieldBorder", "getTextFieldBorder"); + final int textCaretBlinkRate = 500; + final LazyValue textFieldBorder = t -> + AquaTextFieldBorder.getTextFieldBorder(); final Object textAreaBorder = marginBorder; // text areas have no real border - radar 311073 - final Object scollListBorder = new SwingLazyValue(PKG_PREFIX + "AquaScrollRegionBorder", "getScrollRegionBorder"); - final Object aquaTitledBorder = new SwingLazyValue(PKG_PREFIX + "AquaGroupBorder", "getBorderForTitledBorder"); - final Object aquaInsetBorder = new SwingLazyValue(PKG_PREFIX + "AquaGroupBorder", "getTitlelessBorder"); + final LazyValue scollListBorder = t -> + AquaScrollRegionBorder.getScrollRegionBorder(); + final LazyValue aquaTitledBorder = t -> + AquaGroupBorder.getBorderForTitledBorder(); + final LazyValue aquaInsetBorder = t -> + AquaGroupBorder.getTitlelessBorder(); final Border listHeaderBorder = AquaTableHeaderBorder.getListHeaderBorder(); final Border zeroBorder = new BorderUIResource.EmptyBorderUIResource(0, 0, 0, 0); @@ -352,7 +356,8 @@ public class AquaLookAndFeel extends BasicLookAndFeel { final Color textPasswordFieldCapsLockIconColor = mediumTranslucentBlack; - final Object internalFrameBorder = new SwingLazyValue("javax.swing.plaf.basic.BasicBorders", "getInternalFrameBorder"); + final LazyValue internalFrameBorder = t -> + BasicBorders.getInternalFrameBorder(); final Color desktopBackgroundColor = new ColorUIResource(new Color(65, 105, 170));//SystemColor.desktop final Color focusRingColor = AquaImageFactory.getFocusRingColorUIResource(); @@ -363,11 +368,12 @@ public class AquaLookAndFeel extends BasicLookAndFeel { final Color tabBackgroundColor = windowBackgroundColor; final Color controlBackgroundColor = windowBackgroundColor; - final Object controlFont = new SwingLazyValue(kAquaFontsName, "getControlTextFont"); - final Object controlSmallFont = new SwingLazyValue(kAquaFontsName, "getControlTextSmallFont"); - final Object alertHeaderFont = new SwingLazyValue(kAquaFontsName, "getAlertHeaderFont"); - final Object menuFont = new SwingLazyValue(kAquaFontsName, "getMenuFont"); - final Object viewFont = new SwingLazyValue(kAquaFontsName, "getViewFont"); + final LazyValue controlFont = t -> AquaFonts.getControlTextFont(); + final LazyValue controlSmallFont = t -> + AquaFonts.getControlTextSmallFont(); + final LazyValue alertHeaderFont = t -> AquaFonts.getAlertHeaderFont(); + final LazyValue menuFont = t -> AquaFonts.getMenuFont(); + final LazyValue viewFont = t -> AquaFonts.getViewFont(); final Color menuBackgroundColor = new ColorUIResource(Color.white); final Color menuForegroundColor = black; @@ -389,10 +395,14 @@ public class AquaLookAndFeel extends BasicLookAndFeel { }); // sja testing - final Object confirmIcon = new SwingLazyValue(kAquaImageFactoryName, "getConfirmImageIcon"); // AquaImageFactory.getConfirmImageIcon(); - final Object cautionIcon = new SwingLazyValue(kAquaImageFactoryName, "getCautionImageIcon"); // AquaImageFactory.getCautionImageIcon(); - final Object stopIcon = new SwingLazyValue(kAquaImageFactoryName, "getStopImageIcon"); // AquaImageFactory.getStopImageIcon(); - final Object securityIcon = new SwingLazyValue(kAquaImageFactoryName, "getLockImageIcon"); // AquaImageFactory.getLockImageIcon(); + final LazyValue confirmIcon = t -> + AquaImageFactory.getConfirmImageIcon(); + final LazyValue cautionIcon = t -> + AquaImageFactory.getCautionImageIcon(); + final LazyValue stopIcon = t -> + AquaImageFactory.getStopImageIcon(); + final LazyValue securityIcon = t -> + AquaImageFactory.getLockImageIcon(); final AquaKeyBindings aquaKeyBindings = AquaKeyBindings.instance(); @@ -404,7 +414,7 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "Button.foreground", black, "Button.disabledText", disabled, "Button.select", selected, - "Button.border", new SwingLazyValue(PKG_PREFIX + "AquaButtonBorder", "getDynamicButtonBorder"), + "Button.border",(LazyValue) t -> AquaButtonBorder.getDynamicButtonBorder(), "Button.font", controlFont, "Button.textIconGap", new Integer(4), "Button.textShiftOffset", zero, // radar 3308129 - aqua doesn't move images when pressed. @@ -416,7 +426,7 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "CheckBox.foreground", black, "CheckBox.disabledText", disabled, "CheckBox.select", selected, - "CheckBox.icon", new SwingLazyValue(PKG_PREFIX + "AquaButtonCheckBoxUI", "getSizingCheckBoxIcon"), + "CheckBox.icon",(LazyValue) t -> AquaButtonCheckBoxUI.getSizingCheckBoxIcon(), "CheckBox.font", controlFont, "CheckBox.border", AquaButtonBorder.getBevelButtonBorder(), "CheckBox.margin", new InsetsUIResource(1, 1, 0, 1), @@ -441,8 +451,8 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "CheckBoxMenuItem.border", menuBorder, // for inset calculation "CheckBoxMenuItem.margin", menuItemMargin, "CheckBoxMenuItem.borderPainted", Boolean.TRUE, - "CheckBoxMenuItem.checkIcon", new SwingLazyValue(kAquaImageFactoryName, "getMenuItemCheckIcon"), - "CheckBoxMenuItem.dashIcon", new SwingLazyValue(kAquaImageFactoryName, "getMenuItemDashIcon"), + "CheckBoxMenuItem.checkIcon",(LazyValue) t -> AquaImageFactory.getMenuItemCheckIcon(), + "CheckBoxMenuItem.dashIcon",(LazyValue) t -> AquaImageFactory.getMenuItemDashIcon(), //"CheckBoxMenuItem.arrowIcon", null, "ColorChooser.background", panelBackgroundColor, @@ -538,10 +548,10 @@ public class AquaLookAndFeel extends BasicLookAndFeel { /* Default frame icons are undefined for Basic. */ - "InternalFrame.closeIcon", new SwingLazyValue(PKG_PREFIX + "AquaInternalFrameUI", "exportCloseIcon"), - "InternalFrame.maximizeIcon", new SwingLazyValue(PKG_PREFIX + "AquaInternalFrameUI", "exportZoomIcon"), - "InternalFrame.iconifyIcon", new SwingLazyValue(PKG_PREFIX + "AquaInternalFrameUI", "exportMinimizeIcon"), - "InternalFrame.minimizeIcon", new SwingLazyValue(PKG_PREFIX + "AquaInternalFrameUI", "exportMinimizeIcon"), + "InternalFrame.closeIcon",(LazyValue) t -> AquaInternalFrameUI.exportCloseIcon(), + "InternalFrame.maximizeIcon",(LazyValue) t -> AquaInternalFrameUI.exportZoomIcon(), + "InternalFrame.iconifyIcon",(LazyValue) t -> AquaInternalFrameUI.exportMinimizeIcon(), + "InternalFrame.minimizeIcon",(LazyValue) t -> AquaInternalFrameUI.exportMinimizeIcon(), // this could be either grow or icon // we decided to make it icon so that anyone who uses // these for ui will have different icons for max and min @@ -595,11 +605,11 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "List.border", null, "List.cellRenderer", listCellRendererActiveValue, - "List.sourceListBackgroundPainter", new SwingLazyValue(PKG_PREFIX + "AquaListUI", "getSourceListBackgroundPainter"), - "List.sourceListSelectionBackgroundPainter", new SwingLazyValue(PKG_PREFIX + "AquaListUI", "getSourceListSelectionBackgroundPainter"), - "List.sourceListFocusedSelectionBackgroundPainter", new SwingLazyValue(PKG_PREFIX + "AquaListUI", "getSourceListFocusedSelectionBackgroundPainter"), - "List.evenRowBackgroundPainter", new SwingLazyValue(PKG_PREFIX + "AquaListUI", "getListEvenBackgroundPainter"), - "List.oddRowBackgroundPainter", new SwingLazyValue(PKG_PREFIX + "AquaListUI", "getListOddBackgroundPainter"), + "List.sourceListBackgroundPainter",(LazyValue) t -> AquaListUI.getSourceListBackgroundPainter(), + "List.sourceListSelectionBackgroundPainter",(LazyValue) t -> AquaListUI.getSourceListSelectionBackgroundPainter(), + "List.sourceListFocusedSelectionBackgroundPainter",(LazyValue) t -> AquaListUI.getSourceListFocusedSelectionBackgroundPainter(), + "List.evenRowBackgroundPainter",(LazyValue) t -> AquaListUI.getListEvenBackgroundPainter(), + "List.oddRowBackgroundPainter",(LazyValue) t -> AquaListUI.getListOddBackgroundPainter(), // <rdar://Problem/3743210> The modifier for the Mac is meta, not control. "List.focusInputMap", aquaKeyBindings.getListInputMap(), @@ -623,7 +633,7 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "Menu.borderPainted", Boolean.FALSE, "Menu.margin", menuItemMargin, //"Menu.checkIcon", emptyCheckIcon, // A non-drawing GlyphIcon to make the spacing consistent - "Menu.arrowIcon", new SwingLazyValue(kAquaImageFactoryName, "getMenuArrowIcon"), + "Menu.arrowIcon",(LazyValue) t -> AquaImageFactory.getMenuArrowIcon(), "Menu.consumesTabs", Boolean.TRUE, "Menu.menuPopupOffsetY", new Integer(1), "Menu.submenuPopupOffsetY", new Integer(-4), @@ -637,8 +647,8 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "MenuBar.selectionForeground", menuSelectedForegroundColor, "MenuBar.disabledBackground", menuDisabledBackgroundColor, //ThemeBrush.GetThemeBrushForMenu(false, false), // not a menu item, not selected "MenuBar.disabledForeground", menuDisabledForegroundColor, - "MenuBar.backgroundPainter", new SwingLazyValue(PKG_PREFIX + "AquaMenuPainter", "getMenuBarPainter"), - "MenuBar.selectedBackgroundPainter", new SwingLazyValue(PKG_PREFIX + "AquaMenuPainter", "getSelectedMenuBarItemPainter"), + "MenuBar.backgroundPainter",(LazyValue) t -> AquaMenuPainter.getMenuBarPainter(), + "MenuBar.selectedBackgroundPainter",(LazyValue) t -> AquaMenuPainter.getSelectedMenuBarItemPainter(), "MenuItem.font", menuFont, "MenuItem.acceleratorFont", menuFont, @@ -656,7 +666,7 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "MenuItem.borderPainted", Boolean.TRUE, //"MenuItem.checkIcon", emptyCheckIcon, // A non-drawing GlyphIcon to make the spacing consistent //"MenuItem.arrowIcon", null, - "MenuItem.selectedBackgroundPainter", new SwingLazyValue(PKG_PREFIX + "AquaMenuPainter", "getSelectedMenuItemPainter"), + "MenuItem.selectedBackgroundPainter",(LazyValue) t -> AquaMenuPainter.getSelectedMenuItemPainter(), // *** OptionPane // You can additionaly define OptionPane.messageFont which will @@ -732,7 +742,7 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "RadioButton.foreground", black, "RadioButton.disabledText", disabled, "RadioButton.select", selected, - "RadioButton.icon", new SwingLazyValue(PKG_PREFIX + "AquaButtonRadioUI", "getSizingRadioButtonIcon"), + "RadioButton.icon",(LazyValue) t -> AquaButtonRadioUI.getSizingRadioButtonIcon(), "RadioButton.font", controlFont, "RadioButton.border", AquaButtonBorder.getBevelButtonBorder(), "RadioButton.margin", new InsetsUIResource(1, 1, 0, 1), @@ -752,8 +762,8 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "RadioButtonMenuItem.border", menuBorder, // for inset calculation "RadioButtonMenuItem.margin", menuItemMargin, "RadioButtonMenuItem.borderPainted", Boolean.TRUE, - "RadioButtonMenuItem.checkIcon", new SwingLazyValue(kAquaImageFactoryName, "getMenuItemCheckIcon"), - "RadioButtonMenuItem.dashIcon", new SwingLazyValue(kAquaImageFactoryName, "getMenuItemDashIcon"), + "RadioButtonMenuItem.checkIcon",(LazyValue) t -> AquaImageFactory.getMenuItemCheckIcon(), + "RadioButtonMenuItem.dashIcon",(LazyValue) t -> AquaImageFactory.getMenuItemDashIcon(), //"RadioButtonMenuItem.arrowIcon", null, "Separator.background", null, @@ -808,7 +818,7 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "SplitPane.border", scollListBorder, "SplitPane.dividerSize", new Integer(9), //$ "SplitPaneDivider.border", null, // AquaSplitPaneDividerUI draws it - "SplitPaneDivider.horizontalGradientVariant", new SwingLazyValue(PKG_PREFIX + "AquaSplitPaneDividerUI", "getHorizontalSplitDividerGradientVariant"), + "SplitPaneDivider.horizontalGradientVariant",(LazyValue) t -> AquaSplitPaneDividerUI.getHorizontalSplitDividerGradientVariant(), // *** TabbedPane "TabbedPane.font", controlFont, @@ -918,7 +928,7 @@ public class AquaLookAndFeel extends BasicLookAndFeel { // "ToggleButton.disabledBackground", getControl(), // "ToggleButton.disabledSelectedBackground", getControlShadow(), //"ToggleButton.focus", getFocusColor(), - "ToggleButton.border", new SwingLazyValue(PKG_PREFIX + "AquaButtonBorder", "getDynamicButtonBorder"), // sja make this lazy! + "ToggleButton.border",(LazyValue) t -> AquaButtonBorder.getDynamicButtonBorder(), // sja make this lazy! "ToggleButton.font", controlFont, "ToggleButton.focusInputMap", controlFocusInputMap, "ToggleButton.margin", new InsetsUIResource(2, 2, 2, 2), @@ -931,7 +941,7 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "ToolBar.dockingForeground", selectionBackground, "ToolBar.floatingBackground", panelBackgroundColor, "ToolBar.floatingForeground", new ColorUIResource(Color.darkGray), - "ToolBar.border", new SwingLazyValue(PKG_PREFIX + "AquaToolBarUI", "getToolBarBorder"), + "ToolBar.border",(LazyValue) t -> AquaToolBarUI.getToolBarBorder(), "ToolBar.borderHandleColor", toolbarDragHandleColor, //"ToolBar.separatorSize", new DimensionUIResource( 10, 10 ), "ToolBar.separatorSize", null, @@ -967,12 +977,12 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "Tree.rightChildIndent", new Integer(13),//$ "Tree.rowHeight", new Integer(19),// iconHeight + 3, to match finder - a zero would have the renderer decide, except that leaves the icons touching "Tree.scrollsOnExpand", Boolean.FALSE, - "Tree.openIcon", new SwingLazyValue(kAquaImageFactoryName, "getTreeOpenFolderIcon"), // Open folder icon - "Tree.closedIcon", new SwingLazyValue(kAquaImageFactoryName, "getTreeFolderIcon"), // Closed folder icon - "Tree.leafIcon", new SwingLazyValue(kAquaImageFactoryName, "getTreeDocumentIcon"), // Document icon - "Tree.expandedIcon", new SwingLazyValue(kAquaImageFactoryName, "getTreeExpandedIcon"), - "Tree.collapsedIcon", new SwingLazyValue(kAquaImageFactoryName, "getTreeCollapsedIcon"), - "Tree.rightToLeftCollapsedIcon", new SwingLazyValue(kAquaImageFactoryName, "getTreeRightToLeftCollapsedIcon"), + "Tree.openIcon",(LazyValue) t -> AquaImageFactory.getTreeOpenFolderIcon(), // Open folder icon + "Tree.closedIcon",(LazyValue) t -> AquaImageFactory.getTreeFolderIcon(), // Closed folder icon + "Tree.leafIcon",(LazyValue) t -> AquaImageFactory.getTreeDocumentIcon(), // Document icon + "Tree.expandedIcon",(LazyValue) t -> AquaImageFactory.getTreeExpandedIcon(), + "Tree.collapsedIcon",(LazyValue) t -> AquaImageFactory.getTreeCollapsedIcon(), + "Tree.rightToLeftCollapsedIcon",(LazyValue) t -> AquaImageFactory.getTreeRightToLeftCollapsedIcon(), "Tree.changeSelectionWithFocus", Boolean.TRUE, "Tree.drawsFocusBorderAroundIcon", Boolean.FALSE, @@ -1088,4 +1098,4 @@ public class AquaLookAndFeel extends BasicLookAndFeel { }; table.putDefaults(uiDefaults); } -} +} \ No newline at end of file diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaNativeResources.java b/jdk/src/macosx/classes/com/apple/laf/AquaNativeResources.java index e0e7c41db70..b43f8965cf2 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaNativeResources.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaNativeResources.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,6 +44,7 @@ public class AquaNativeResources { } // TODO: removing CColorPaint for now + @SuppressWarnings("serial") // JDK implementation class static class CColorPaintUIResource extends Color/*CColorPaint*/ implements UIResource { // The color passed to this MUST be a retained NSColor, and the CColorPaintUIResource // takes ownership of that retain. diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java b/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java index dc34b694ecd..38884ac7e8f 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java @@ -38,6 +38,7 @@ import sun.java2d.*; import sun.print.*; import apple.laf.*; import apple.laf.JRSUIUtils.NineSliceMetricsProvider; +import sun.awt.image.ImageCache; abstract class AquaPainter <T extends JRSUIState> { static <T extends JRSUIState> AquaPainter<T> create(final T state) { @@ -155,10 +156,15 @@ abstract class AquaPainter <T extends JRSUIState> { final ImageCache cache = ImageCache.getInstance(); final int imgW = bounds.width * scale; final int imgH = bounds.height * scale; - BufferedImage img = (BufferedImage) cache.getImage(config, imgW, imgH, scale, controlState); + AquaPixelsKey key = new AquaPixelsKey(config, + imgW, imgH, scale, controlState); + BufferedImage img = (BufferedImage) cache.getImage(key); if (img == null) { img = new BufferedImage(imgW, imgH, BufferedImage.TYPE_INT_ARGB_PRE); - cache.setImage(img, config, imgW, imgH, scale, controlState); + if (!controlState.is(JRSUIConstants.Animating.YES)) { + cache.setImage(key, img); + } + final WritableRaster raster = img.getRaster(); final DataBufferInt buffer = (DataBufferInt) raster.getDataBuffer(); @@ -172,6 +178,59 @@ abstract class AquaPainter <T extends JRSUIState> { } } + private static class AquaPixelsKey implements ImageCache.PixelsKey { + + private final int pixelCount; + private final int hash; + + // key parts + private final GraphicsConfiguration config; + private final int w; + private final int h; + private final int scale; + private final JRSUIState state; + + AquaPixelsKey(final GraphicsConfiguration config, + final int w, final int h, final int scale, + final JRSUIState state) { + this.pixelCount = w * h; + this.config = config; + this.w = w; + this.h = h; + this.scale = scale; + this.state = state; + this.hash = hash(); + } + + public int getPixelCount() { + return pixelCount; + } + + private int hash() { + int hash = config != null ? config.hashCode() : 0; + hash = 31 * hash + w; + hash = 31 * hash + h; + hash = 31 * hash + scale; + hash = 31 * hash + state.hashCode(); + return hash; + } + + @Override + public int hashCode() { + return hash; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof AquaPixelsKey) { + AquaPixelsKey key = (AquaPixelsKey) obj; + return config == key.config && w == key.w && h == key.h + && scale == key.scale && state.equals(key.state); + } + return false; + } + } + private static class RecyclableJRSUISlicedImageControl extends RecyclableSlicedImageControl { diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaSpinnerUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaSpinnerUI.java index f7bfd926f9b..1f9cc03dadc 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaSpinnerUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaSpinnerUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -188,6 +188,7 @@ public class AquaSpinnerUI extends SpinnerUI { return spinner.getEditor().getBaselineResizeBehavior(); } + @SuppressWarnings("serial") // Superclass is not serializable across versions class TransparentButton extends JButton implements SwingConstants { boolean interceptRepaints = false; @@ -293,6 +294,7 @@ public class AquaSpinnerUI extends SpinnerUI { return map; } + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class ArrowButtonHandler extends AbstractAction implements MouseListener { final javax.swing.Timer autoRepeatTimer; final boolean isNext; @@ -461,6 +463,7 @@ public class AquaSpinnerUI extends SpinnerUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions class SpinPainter extends JComponent { final AquaPainter<JRSUIState> painter = AquaPainter.create(JRSUIStateFactory.getSpinnerArrows()); diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaSplitPaneDividerUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaSplitPaneDividerUI.java index 81b4c5bbe48..6f7580496d2 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaSplitPaneDividerUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaSplitPaneDividerUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +39,7 @@ import com.apple.laf.AquaUtils.LazyKeyedSingleton; import com.apple.laf.AquaUtils.RecyclableSingleton; import com.apple.laf.AquaUtils.RecyclableSingletonFromDefaultConstructor; +@SuppressWarnings("serial") // Superclass is not serializable across versions public class AquaSplitPaneDividerUI extends BasicSplitPaneDivider { final AquaPainter<JRSUIState> painter = AquaPainter.create(JRSUIStateFactory.getSplitPaneDivider()); diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaTabbedPaneCopyFromBasicUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaTabbedPaneCopyFromBasicUI.java index 4bd2570e91f..dd65433283f 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaTabbedPaneCopyFromBasicUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaTabbedPaneCopyFromBasicUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -3237,6 +3237,7 @@ public class AquaTabbedPaneCopyFromBasicUI extends TabbedPaneUI implements Swing } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class ScrollableTabViewport extends JViewport implements UIResource { public ScrollableTabViewport() { super(); @@ -3251,6 +3252,7 @@ public class AquaTabbedPaneCopyFromBasicUI extends TabbedPaneUI implements Swing } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class ScrollableTabPanel extends JPanel implements UIResource { public ScrollableTabPanel() { super(null); @@ -3281,6 +3283,7 @@ public class AquaTabbedPaneCopyFromBasicUI extends TabbedPaneUI implements Swing } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class ScrollableTabButton extends javax.swing.plaf.basic.BasicArrowButton implements UIResource, SwingConstants { public ScrollableTabButton(final int direction) { super(direction, UIManager.getColor("TabbedPane.selected"), UIManager.getColor("TabbedPane.shadow"), UIManager.getColor("TabbedPane.darkShadow"), UIManager.getColor("TabbedPane.highlight")); @@ -3585,6 +3588,7 @@ public class AquaTabbedPaneCopyFromBasicUI extends TabbedPaneUI implements Swing return htmlViews; } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class TabContainer extends JPanel implements UIResource { private boolean notifyTabbedPane = true; @@ -3629,6 +3633,7 @@ public class AquaTabbedPaneCopyFromBasicUI extends TabbedPaneUI implements Swing } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class CroppedEdge extends JPanel implements UIResource { private Shape shape; private int tabIndex; @@ -3708,6 +3713,7 @@ public class AquaTabbedPaneCopyFromBasicUI extends TabbedPaneUI implements Swing * @version 1.6, 11/17/05 * @author Scott Violet */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class LazyActionMap extends ActionMapUIResource { /** * Object to invoke <code>loadActionMap</code> on. This may be diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaTabbedPaneUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaTabbedPaneUI.java index 5c3ce82378d..41b9dd906a6 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaTabbedPaneUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaTabbedPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -987,7 +987,8 @@ public class AquaTabbedPaneUI extends AquaTabbedPaneCopyFromBasicUI { if (component == null) { menuItem = new JMenuItem(tabPane.getTitleAt(i), tabPane.getIconAt(i)); } else { - menuItem = new JMenuItem() { + @SuppressWarnings("serial") // anonymous class + JMenuItem tmp = new JMenuItem() { public void paintComponent(final Graphics g) { super.paintComponent(g); final Dimension size = component.getSize(); @@ -1001,6 +1002,7 @@ public class AquaTabbedPaneUI extends AquaTabbedPaneCopyFromBasicUI { return component.getPreferredSize(); } }; + menuItem = tmp; } final Color background = tabPane.getBackgroundAt(i); diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaTableHeaderBorder.java b/jdk/src/macosx/classes/com/apple/laf/AquaTableHeaderBorder.java index d103065cb54..17f412b8d42 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaTableHeaderBorder.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaTableHeaderBorder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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 apple.laf.JRSUIConstants.*; import com.apple.laf.AquaUtils.RecyclableSingleton; +@SuppressWarnings("serial") // Superclass is not serializable across versions public class AquaTableHeaderBorder extends AbstractBorder { protected static final int SORT_NONE = 0; protected static final int SORT_ASCENDING = 1; diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaTableHeaderUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaTableHeaderUI.java index 656a89cff1a..5d847e98ef2 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaTableHeaderUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaTableHeaderUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +111,7 @@ public class AquaTableHeaderUI extends BasicTableHeaderUI { tableColumn.setHeaderRenderer(renderer); } + @SuppressWarnings("serial") // Superclass is not serializable across versions class AquaTableCellRenderer extends DefaultTableCellRenderer implements UIResource { public Component getTableCellRendererComponent(final JTable localTable, final Object value, final boolean isSelected, final boolean hasFocus, final int row, final int column) { if (localTable != null) { diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaTextFieldSearch.java b/jdk/src/macosx/classes/com/apple/laf/AquaTextFieldSearch.java index b6492a31fcc..4117d895f6e 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaTextFieldSearch.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaTextFieldSearch.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +249,7 @@ public class AquaTextFieldSearch { label.setText(promptText); } + @SuppressWarnings("serial") // anonymous class inside protected static JButton getCancelButton(final JTextComponent c) { final JButton b = createButton(c, getCancelIcon()); b.setName("cancel"); @@ -325,6 +326,7 @@ public class AquaTextFieldSearch { } protected boolean doingLayout; + @SuppressWarnings("serial") // anonymous class inside protected LayoutManager getCustomLayout() { // unfortunately, the default behavior of BorderLayout, which accommodates for margins // is not what we want, so we "turn off margins" for layout for layout out our buttons diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaToolBarUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaToolBarUI.java index 21fd8ab8bca..05773dd6429 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaToolBarUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaToolBarUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -55,6 +55,7 @@ public class AquaToolBarUI extends BasicToolBarUI implements SwingConstants { } /* ToolBarBorder and drag-off handle, based loosly on MetalBumps */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class ToolBarBorder extends AbstractBorder implements UIResource, javax.swing.SwingConstants { protected void fillHandle(final Graphics g, final int x1, final int y1, final int x2, final int y2, final boolean horizontal) { g.setColor(UIManager.getColor("ToolBar.borderHandleColor")); diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaTreeUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaTreeUI.java index 4ebbbed819e..1b73f2a987a 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaTreeUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaTreeUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -493,6 +493,7 @@ public class AquaTreeUI extends BasicTreeUI { tree.getActionMap().put("aquaFullyCollapseNode", new KeyboardExpandCollapseAction(false, true)); } + @SuppressWarnings("serial") // Superclass is not serializable across versions class KeyboardExpandCollapseAction extends AbstractAction { /** * Determines direction to traverse, 1 means expand, -1 means collapse. diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java b/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java index 6a522839151..a20897f7b31 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java @@ -177,16 +177,7 @@ final class AquaUtils { abstract static class RecyclableSingleton<T> { final T get() { - final AppContext appContext = AppContext.getAppContext(); - SoftReference<T> ref = (SoftReference<T>) appContext.get(this); - if (ref != null) { - final T object = ref.get(); - if (object != null) return object; - } - final T object = getInstance(); - ref = new SoftReference<T>(object); - appContext.put(this, ref); - return object; + return AppContext.getSoftReferenceValue(this, () -> getInstance()); } void reset() { diff --git a/jdk/src/macosx/classes/com/apple/laf/ImageCache.java b/jdk/src/macosx/classes/com/apple/laf/ImageCache.java deleted file mode 100644 index 442b9742f01..00000000000 --- a/jdk/src/macosx/classes/com/apple/laf/ImageCache.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.apple.laf; - -import java.awt.*; -import java.lang.ref.*; -import java.util.*; -import java.util.concurrent.locks.*; - -import apple.laf.JRSUIConstants; -import apple.laf.JRSUIState; -import com.apple.laf.AquaUtils.RecyclableSingleton; - -/** - * ImageCache - A fixed pixel count sized cache of Images keyed by arbitrary set of arguments. All images are held with - * SoftReferences so they will be dropped by the GC if heap memory gets tight. When our size hits max pixel count least - * recently requested images are removed first. - */ -final class ImageCache { - // Ordered Map keyed by args hash, ordered by most recent accessed entry. - private final LinkedHashMap<Integer, PixelCountSoftReference> map = new LinkedHashMap<>(16, 0.75f, true); - - // Maximum number of pixels to cache, this is used if maxCount - private final int maxPixelCount; - // The current number of pixels stored in the cache - private int currentPixelCount = 0; - - // Lock for concurrent access to map - private final ReadWriteLock lock = new ReentrantReadWriteLock(); - // Reference queue for tracking lost softreferences to images in the cache - private final ReferenceQueue<Image> referenceQueue = new ReferenceQueue<>(); - - // Singleton Instance - private static final RecyclableSingleton<ImageCache> instance = new RecyclableSingleton<ImageCache>() { - @Override - protected ImageCache getInstance() { - return new ImageCache(); - } - }; - static ImageCache getInstance() { - return instance.get(); - } - - ImageCache(final int maxPixelCount) { - this.maxPixelCount = maxPixelCount; - } - - ImageCache() { - this((8 * 1024 * 1024) / 4); // 8Mb of pixels - } - - public void flush() { - lock.writeLock().lock(); - try { - map.clear(); - } finally { - lock.writeLock().unlock(); - } - } - - public Image getImage(final GraphicsConfiguration config, final int w, - final int h, final int scale, - final JRSUIState state) { - final int hash = hash(config, w, h, scale, state); - final PixelCountSoftReference ref; - lock.readLock().lock(); - try { - ref = map.get(hash); - } finally { - lock.readLock().unlock(); - } - // check reference has not been lost and the key truly matches, - // in case of false positive hash match - if (ref != null && ref.equals(config, w, h, scale, state)) { - return ref.get(); - } - return null; - } - - /** - * Sets the cached image for the specified constraints. - * - * @param image The image to store in cache - * @param config The graphics configuration, needed if cached image is a Volatile Image. Used as part of cache key - * @param w The image width, used as part of cache key - * @param h The image height, used as part of cache key - * @param scale The image scale factor, used as part of cache key - * @return true if the image could be cached, false otherwise. - */ - public boolean setImage(final Image image, - final GraphicsConfiguration config, final int w, final int h, - final int scale, final JRSUIState state) { - if (state.is(JRSUIConstants.Animating.YES)) { - return false; - } - - final int hash = hash(config, w, h, scale, state); - - lock.writeLock().lock(); - try { - PixelCountSoftReference ref = map.get(hash); - // check if currently in map - if (ref != null && ref.get() == image) return true; - - // clear out old - if (ref != null) { - currentPixelCount -= ref.pixelCount; - map.remove(hash); - } - - // add new image to pixel count - final int newPixelCount = image.getWidth(null) * image.getHeight(null); - currentPixelCount += newPixelCount; - // clean out lost references if not enough space - if (currentPixelCount > maxPixelCount) { - while ((ref = (PixelCountSoftReference)referenceQueue.poll()) != null) { - //reference lost - map.remove(ref.hash); - currentPixelCount -= ref.pixelCount; - } - } - - // remove old items till there is enough free space - if (currentPixelCount > maxPixelCount) { - final Iterator<Map.Entry<Integer, PixelCountSoftReference>> mapIter = map.entrySet().iterator(); - while ((currentPixelCount > maxPixelCount) && mapIter.hasNext()) { - final Map.Entry<Integer, PixelCountSoftReference> entry = mapIter.next(); - mapIter.remove(); - final Image img = entry.getValue().get(); - if (img != null) img.flush(); - currentPixelCount -= entry.getValue().pixelCount; - } - } - // finally put new in map - map.put(hash, new PixelCountSoftReference(image, referenceQueue, newPixelCount, hash, config, w, h, scale, state)); - return true; - } finally { - lock.writeLock().unlock(); - } - } - - private static int hash(final GraphicsConfiguration config, final int w, - final int h, final int scale, - final JRSUIState state) { - int hash = config != null ? config.hashCode() : 0; - hash = 31 * hash + w; - hash = 31 * hash + h; - hash = 31 * hash + scale; - hash = 31 * hash + state.hashCode(); - return hash; - } - - /** - * Extended SoftReference that stores the pixel count even after the image - * is lost. - */ - private static class PixelCountSoftReference extends SoftReference<Image> { - - // default access, because access to these fields shouldn't be emulated - // by a synthetic accessor. - final int pixelCount; - final int hash; - - // key parts - private final GraphicsConfiguration config; - private final int w; - private final int h; - private final int scale; - private final JRSUIState state; - - PixelCountSoftReference(final Image referent, - final ReferenceQueue<? super Image> q, final int pixelCount, - final int hash, final GraphicsConfiguration config, final int w, - final int h, final int scale, final JRSUIState state) { - super(referent, q); - this.pixelCount = pixelCount; - this.hash = hash; - this.config = config; - this.w = w; - this.h = h; - this.scale = scale; - this.state = state; - } - - boolean equals(final GraphicsConfiguration config, final int w, - final int h, final int scale, final JRSUIState state) { - return config == this.config && w == this.w && h == this.h - && scale == this.scale && state.equals(this.state); - } - } - -// /** Gets the rendered image for this painter at the requested size, either from cache or create a new one */ -// private VolatileImage getImage(GraphicsConfiguration config, JComponent c, int w, int h, Object[] extendedCacheKeys) { -// VolatileImage buffer = (VolatileImage)getImage(config, w, h, this, extendedCacheKeys); -// -// int renderCounter = 0; // to avoid any potential, though unlikely, infinite loop -// do { -// //validate the buffer so we can check for surface loss -// int bufferStatus = VolatileImage.IMAGE_INCOMPATIBLE; -// if (buffer != null) { -// bufferStatus = buffer.validate(config); -// } -// -// //If the buffer status is incompatible or restored, then we need to re-render to the volatile image -// if (bufferStatus == VolatileImage.IMAGE_INCOMPATIBLE || bufferStatus == VolatileImage.IMAGE_RESTORED) { -// // if the buffer isn't the right size, or has lost its contents, then recreate -// if (buffer != null) { -// if (buffer.getWidth() != w || buffer.getHeight() != h || bufferStatus == VolatileImage.IMAGE_INCOMPATIBLE) { -// // clear any resources related to the old back buffer -// buffer.flush(); -// buffer = null; -// } -// } -// -// if (buffer == null) { -// // recreate the buffer -// buffer = config.createCompatibleVolatileImage(w, h, Transparency.TRANSLUCENT); -// // put in cache for future -// setImage(buffer, config, w, h, this, extendedCacheKeys); -// } -// -// //create the graphics context with which to paint to the buffer -// Graphics2D bg = buffer.createGraphics(); -// -// //clear the background before configuring the graphics -// bg.setComposite(AlphaComposite.Clear); -// bg.fillRect(0, 0, w, h); -// bg.setComposite(AlphaComposite.SrcOver); -// bg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); -// -// // paint the painter into buffer -// paint0(bg, c, w, h, extendedCacheKeys); -// //close buffer graphics -// bg.dispose(); -// } -// } while (buffer.contentsLost() && renderCounter++ < 3); -// -// // check if we failed -// if (renderCounter >= 3) return null; -// -// return buffer; -// } -} diff --git a/jdk/src/macosx/classes/com/apple/laf/ScreenMenu.java b/jdk/src/macosx/classes/com/apple/laf/ScreenMenu.java index 87393408487..a692ae1794b 100644 --- a/jdk/src/macosx/classes/com/apple/laf/ScreenMenu.java +++ b/jdk/src/macosx/classes/com/apple/laf/ScreenMenu.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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 sun.awt.SunToolkit; import sun.lwawt.LWToolkit; import sun.lwawt.macosx.*; +@SuppressWarnings("serial") // JDK implementation class final class ScreenMenu extends Menu implements ContainerListener, ComponentListener, ScreenMenuPropertyHandler { diff --git a/jdk/src/macosx/classes/com/apple/laf/ScreenMenuBar.java b/jdk/src/macosx/classes/com/apple/laf/ScreenMenuBar.java index 94fea5f09a4..1735b444ea5 100644 --- a/jdk/src/macosx/classes/com/apple/laf/ScreenMenuBar.java +++ b/jdk/src/macosx/classes/com/apple/laf/ScreenMenuBar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,6 +33,7 @@ import java.util.*; import javax.swing.*; +@SuppressWarnings("serial") // JDK implementation class public class ScreenMenuBar extends MenuBar implements ContainerListener, ScreenMenuPropertyHandler, ComponentListener { static boolean sJMenuBarHasHelpMenus = false; //$ could check by calling getHelpMenu in a try block diff --git a/jdk/src/macosx/classes/com/apple/laf/ScreenMenuItem.java b/jdk/src/macosx/classes/com/apple/laf/ScreenMenuItem.java index c403b8b3c28..47be00d1504 100644 --- a/jdk/src/macosx/classes/com/apple/laf/ScreenMenuItem.java +++ b/jdk/src/macosx/classes/com/apple/laf/ScreenMenuItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +34,7 @@ import javax.swing.plaf.ComponentUI; import sun.lwawt.macosx.CMenuItem; +@SuppressWarnings("serial") // JDK implementation class final class ScreenMenuItem extends MenuItem implements ActionListener, ComponentListener, ScreenMenuPropertyHandler { ScreenMenuPropertyListener fListener; JMenuItem fMenuItem; diff --git a/jdk/src/macosx/classes/com/apple/laf/ScreenMenuItemCheckbox.java b/jdk/src/macosx/classes/com/apple/laf/ScreenMenuItemCheckbox.java index 92b6afe7245..a0483581ca2 100644 --- a/jdk/src/macosx/classes/com/apple/laf/ScreenMenuItemCheckbox.java +++ b/jdk/src/macosx/classes/com/apple/laf/ScreenMenuItemCheckbox.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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 com.apple.laf.AquaMenuItemUI.IndeterminateListener; import sun.lwawt.macosx.*; +@SuppressWarnings("serial") // JDK implementation class final class ScreenMenuItemCheckbox extends CheckboxMenuItem implements ActionListener, ComponentListener, ScreenMenuPropertyHandler, ItemListener { JMenuItem fMenuItem; MenuContainer fParent; diff --git a/jdk/src/macosx/classes/sun/lwawt/LWWindowPeer.java b/jdk/src/macosx/classes/sun/lwawt/LWWindowPeer.java index fe7596eb395..226d8c68699 100644 --- a/jdk/src/macosx/classes/sun/lwawt/LWWindowPeer.java +++ b/jdk/src/macosx/classes/sun/lwawt/LWWindowPeer.java @@ -685,7 +685,7 @@ public class LWWindowPeer public void notifyNCMouseDown() { // Ungrab except for a click on a Dialog with the grabbing owner if (grabbingWindow != null && - grabbingWindow != getOwnerFrameDialog(this)) + !grabbingWindow.isOneOfOwnersOf(this)) { grabbingWindow.ungrab(); } @@ -780,7 +780,7 @@ public class LWWindowPeer // Ungrab only if this window is not an owned window of the grabbing one. if (!isGrabbing() && grabbingWindow != null && - grabbingWindow != getOwnerFrameDialog(this)) + !grabbingWindow.isOneOfOwnersOf(this)) { grabbingWindow.ungrab(); } @@ -1235,6 +1235,17 @@ public class LWWindowPeer changeFocusedWindow(activate, null); } + private boolean isOneOfOwnersOf(LWWindowPeer peer) { + Window owner = (peer != null ? peer.getTarget().getOwner() : null); + while (owner != null) { + if ((LWWindowPeer)owner.getPeer() == this) { + return true; + } + owner = owner.getOwner(); + } + return false; + } + /* * Changes focused window on java level. */ @@ -1266,7 +1277,7 @@ public class LWWindowPeer // - when the opposite (gaining focus) window is an owned/owner window. // - for a simple window in any case. if (!becomesFocused && - (isGrabbing() || getOwnerFrameDialog(grabbingWindow) == this)) + (isGrabbing() || this.isOneOfOwnersOf(grabbingWindow))) { if (focusLog.isLoggable(PlatformLogger.Level.FINE)) { focusLog.fine("ungrabbing on " + grabbingWindow); @@ -1285,6 +1296,11 @@ public class LWWindowPeer postEvent(windowEvent); } + /* + * Retrieves the owner of the peer. + * Note: this method returns the owner which can be activated, (i.e. the instance + * of Frame or Dialog may be returned). + */ static LWWindowPeer getOwnerFrameDialog(LWWindowPeer peer) { Window owner = (peer != null ? peer.getTarget().getOwner() : null); while (owner != null && !(owner instanceof Frame || owner instanceof Dialog)) { diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CCustomCursor.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CCustomCursor.java index 8e0ded6b3eb..3312f6e4213 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CCustomCursor.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CCustomCursor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,6 +28,7 @@ package sun.lwawt.macosx; import java.awt.*; import java.awt.image.BufferedImage; +@SuppressWarnings("serial") // JDK implementation class public class CCustomCursor extends Cursor { static Dimension sMaxCursorSize; static Dimension getMaxCursorSize() { diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java index 8b2eb3dfd78..26d2347ff15 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java @@ -52,7 +52,9 @@ public class CDataTransferer extends DataTransferer { "RICH_TEXT", "HTML", "PDF", - "URL" + "URL", + "PNG", + "JFIF" }; static { @@ -74,8 +76,8 @@ public class CDataTransferer extends DataTransferer { public static final int CF_HTML = 5; public static final int CF_PDF = 6; public static final int CF_URL = 7; - public static final int CF_PNG = 10; - public static final int CF_JPEG = 11; + public static final int CF_PNG = 8; + public static final int CF_JPEG = 9; private CDataTransferer() {} @@ -204,20 +206,9 @@ public class CDataTransferer extends DataTransferer { return handler; } - private native byte[] imageDataToPlatformImageBytes(int[] rData, int nW, int nH); @Override protected byte[] imageToPlatformBytes(Image image, long format) { - int w = image.getWidth(null); - int h = image.getHeight(null); - BufferedImage bimage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB_PRE); - Graphics g = bimage.getGraphics(); - g.drawImage(image, 0, 0, w, h, null); - g.dispose(); - Raster raster = bimage.getRaster(); - DataBuffer buffer = raster.getDataBuffer(); - return imageDataToPlatformImageBytes(((DataBufferInt)buffer).getData(), - raster.getWidth(), - raster.getHeight()); + return CImage.getCreator().getPlatformImageBytes(image); } private static native String[] nativeDragQueryFile(final byte[] bytes); @@ -228,14 +219,9 @@ public class CDataTransferer extends DataTransferer { return nativeDragQueryFile(bytes); } - private native Image getImageForByteStream(byte[] bytes); - /** - * Translates a byte array which contains - * platform-specific image data in the given format into an Image. - */ @Override protected Image platformImageBytesToImage(byte[] bytes, long format) throws IOException { - return getImageForByteStream(bytes); + return CImage.getCreator().createImageFromPlatformImageBytes(bytes); } @Override diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java index 7aab0b58fa7..dd718c0ca0b 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java @@ -33,6 +33,7 @@ import java.awt.Toolkit; import sun.awt.EmbeddedFrame; import sun.lwawt.LWWindowPeer; +@SuppressWarnings("serial") // JDK implementation class public class CEmbeddedFrame extends EmbeddedFrame { private CPlatformResponder responder; diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CImage.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CImage.java index 5ea172b3e23..17815d4882e 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CImage.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CImage.java @@ -32,20 +32,24 @@ import java.awt.image.*; import java.util.Arrays; import java.util.List; import sun.awt.image.MultiResolutionImage; +import sun.awt.image.MultiResolutionBufferedImage; import sun.awt.image.SunWritableRaster; public class CImage extends CFRetainedResource { private static native long nativeCreateNSImageFromArray(int[] buffer, int w, int h); + private static native long nativeCreateNSImageFromBytes(byte[] buffer); private static native long nativeCreateNSImageFromArrays(int[][] buffers, int w[], int h[]); private static native long nativeCreateNSImageFromFileContents(String file); private static native long nativeCreateNSImageOfFileFromLaunchServices(String file); private static native long nativeCreateNSImageFromImageName(String name); private static native long nativeCreateNSImageFromIconSelector(int selector); - private static native void nativeCopyNSImageIntoArray(long image, int[] buffer, int w, int h); + private static native byte[] nativeGetPlatformImageBytes(int[] buffer, int w, int h); + private static native void nativeCopyNSImageIntoArray(long image, int[] buffer, int sw, int sh, int dw, int dh); private static native Dimension2D nativeGetNSImageSize(long image); private static native void nativeSetNSImageSize(long image, double w, double h); private static native void nativeResizeNSImageRepresentations(long image, double w, double h); + private static native Dimension2D[] nativeGetNSImageRepresentationSizes(long image, double w, double h); static Creator creator = new Creator(); static Creator getCreator() { @@ -145,6 +149,23 @@ public class CImage extends CFRetainedResource { image.getHeight(null))); } + public byte[] getPlatformImageBytes(final Image image) { + int[] buffer = imageToArray(image, false); + + if (buffer == null) { + return null; + } + + return nativeGetPlatformImageBytes(buffer, image.getWidth(null), image.getHeight(null)); + } + + /** + * Translates a byte array which contains platform-specific image data in the given format into an Image. + */ + public Image createImageFromPlatformImageBytes(final byte[] buffer) { + return createImageUsingNativeSize(nativeCreateNSImageFromBytes(buffer)); + } + // This is used to create a CImage from a Image public CImage createFromImage(final Image image) { if (image instanceof MultiResolutionImage) { @@ -210,18 +231,30 @@ public class CImage extends CFRetainedResource { super(nsImagePtr, true); } - /** @return A BufferedImage created from nsImagePtr, or null. */ - public BufferedImage toImage() { + /** @return A MultiResolution image created from nsImagePtr, or null. */ + private BufferedImage toImage() { if (ptr == 0) return null; final Dimension2D size = nativeGetNSImageSize(ptr); final int w = (int)size.getWidth(); final int h = (int)size.getHeight(); - final BufferedImage bimg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB_PRE); + Dimension2D[] sizes + = nativeGetNSImageRepresentationSizes(ptr, + size.getWidth(), size.getHeight()); + + BufferedImage baseImage = toImage(w, h, w, h); + + return sizes == null || sizes.length < 2 ? baseImage + : new MultiResolutionBufferedImage(baseImage, sizes, + (width, height) -> toImage(w, h, width, height)); + } + + private BufferedImage toImage(int srcWidth, int srcHeight, int dstWidth, int dstHeight) { + final BufferedImage bimg = new BufferedImage(dstWidth, dstHeight, BufferedImage.TYPE_INT_ARGB_PRE); final DataBufferInt dbi = (DataBufferInt)bimg.getRaster().getDataBuffer(); final int[] buffer = SunWritableRaster.stealData(dbi, 0); - nativeCopyNSImageIntoArray(ptr, buffer, w, h); + nativeCopyNSImageIntoArray(ptr, buffer, srcWidth, srcHeight, dstWidth, dstHeight); SunWritableRaster.markDirty(dbi); return bimg; } diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CMenuItem.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CMenuItem.java index dbe6a8c8b9e..2fca524922b 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CMenuItem.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CMenuItem.java @@ -150,8 +150,6 @@ public class CMenuItem extends CMenuComponent implements MenuItemPeer { // native callbacks void handleAction(final long when, final int modifiers) { - assert CThreading.assertAppKit(); - SunToolkit.executeOnEventHandlerThread(getTarget(), new Runnable() { public void run() { final String cmd = ((MenuItem)getTarget()).getActionCommand(); diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CMouseDragGestureRecognizer.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CMouseDragGestureRecognizer.java index 170e93d2ffe..b2d2015d191 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CMouseDragGestureRecognizer.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CMouseDragGestureRecognizer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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,7 +32,7 @@ import java.awt.event.*; import sun.awt.dnd.SunDragSourceContextPeer; - +@SuppressWarnings("serial") // JDK implementation class class CMouseDragGestureRecognizer extends MouseDragGestureRecognizer { // Number of pixels before drag is determined to have started: diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java index a9de01d0d98..edf25ddb313 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java @@ -468,7 +468,6 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo @Override // PlatformWindow public void setBounds(int x, int y, int w, int h) { -// assert CThreading.assertEventQueue(); nativeSetNSWindowBounds(getNSWindowPtr(), x, y, w, h); } @@ -1062,8 +1061,6 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo // ---------------------------------------------------------------------- private void windowDidBecomeMain() { - assert CThreading.assertAppKit(); - if (checkBlockingAndOrder()) return; // If it's not blocked, make sure it's above its siblings orderAboveSiblings(); diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterDialog.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterDialog.java index f877e42925c..4a75ddae9c0 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterDialog.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterDialog.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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.lwawt.macosx; import java.awt.*; +@SuppressWarnings("serial") // JDK implementation class public abstract class CPrinterDialog extends Dialog { private final CPrinterJob fPrinterJob; // used from native diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJob.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJob.java index a3102323e6f..ede3bec7b73 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJob.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJob.java @@ -41,7 +41,7 @@ import javax.print.attribute.standard.PageRanges; import sun.java2d.*; import sun.print.*; -final class CPrinterJob extends RasterPrinterJob { +public final class CPrinterJob extends RasterPrinterJob { // NOTE: This uses RasterPrinterJob as a base, but it doesn't use // all of the RasterPrinterJob functions. RasterPrinterJob will // break down printing to pieces that aren't necessary under MacOSX diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJobDialog.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJobDialog.java index 55da5684521..562f0524f91 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJobDialog.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJobDialog.java @@ -29,6 +29,7 @@ package sun.lwawt.macosx; import java.awt.*; import java.awt.print.*; +@SuppressWarnings("serial") // JDK implementation class final class CPrinterJobDialog extends CPrinterDialog { private Pageable fPageable; private boolean fAllowPrintToFile; diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterPageDialog.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterPageDialog.java index 95b8e58985a..3880e51e2bd 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterPageDialog.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterPageDialog.java @@ -29,6 +29,7 @@ package sun.lwawt.macosx; import java.awt.*; import java.awt.print.*; +@SuppressWarnings("serial") // JDK implementation class final class CPrinterPageDialog extends CPrinterDialog { private PageFormat fPage; private Printable fPainter; diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CThreading.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CThreading.java deleted file mode 100644 index a8ef960eae0..00000000000 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CThreading.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * 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.lwawt.macosx; - -import java.awt.EventQueue; - - -public class CThreading { - static String APPKIT_THREAD_NAME = "AppKit Thread"; - - static boolean isEventQueue() { - return EventQueue.isDispatchThread(); - } - - static boolean isAppKit() { - return APPKIT_THREAD_NAME.equals(Thread.currentThread().getName()); - } - - static boolean assertEventQueue() { - final boolean isEventQueue = isEventQueue(); - assert isEventQueue : "Threading violation: not EventQueue thread"; - return isEventQueue; - } - - static boolean assertNotEventQueue() { - final boolean isNotEventQueue = isEventQueue(); - assert isNotEventQueue : "Threading violation: EventQueue thread"; - return isNotEventQueue; - } - - static boolean assertAppKit() { - final boolean isAppKitThread = isAppKit(); - assert isAppKitThread : "Threading violation: not AppKit thread"; - return isAppKitThread; - } - - static boolean assertNotAppKit() { - final boolean isNotAppKitThread = !isAppKit(); - assert isNotAppKitThread : "Threading violation: AppKit thread"; - return isNotAppKitThread; - } -} diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CViewEmbeddedFrame.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CViewEmbeddedFrame.java index 0d12aa1ca67..f2dfa7d44be 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CViewEmbeddedFrame.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CViewEmbeddedFrame.java @@ -37,6 +37,7 @@ import sun.lwawt.LWWindowPeer; * The CViewEmbeddedFrame class is used in the SWT_AWT bridge. * This is a part of public API and should not be renamed or moved */ +@SuppressWarnings("serial") // JDK implementation class public class CViewEmbeddedFrame extends EmbeddedFrame { private final long nsViewPtr; diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CWarningWindow.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CWarningWindow.java index 800d76f478a..fc72ef79474 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CWarningWindow.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CWarningWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 @@ package sun.lwawt.macosx; import sun.awt.AWTAccessor; import sun.awt.IconInfo; -import sun.awt.SunToolkit; import sun.java2d.SunGraphics2D; import sun.java2d.SurfaceData; import sun.java2d.opengl.CGLLayer; @@ -39,15 +38,11 @@ import java.awt.*; import java.awt.event.MouseEvent; import java.awt.geom.Point2D; import java.lang.ref.WeakReference; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; public final class CWarningWindow extends CPlatformWindow implements SecurityWarningWindow, PlatformEventNotifier { - private static class Lock {}; + private static class Lock {} private final Lock lock = new Lock(); private final static int SHOWING_DELAY = 300; @@ -95,7 +90,7 @@ public final class CWarningWindow extends CPlatformWindow public CWarningWindow(final Window _ownerWindow, final LWWindowPeer _ownerPeer) { super(); - this.ownerPeer = new WeakReference<LWWindowPeer>(_ownerPeer); + this.ownerPeer = new WeakReference<>(_ownerPeer); this.ownerWindow = _ownerWindow; initialize(null, null, _ownerPeer.getPlatformWindow()); @@ -120,16 +115,8 @@ public final class CWarningWindow extends CPlatformWindow } public void setVisible(boolean visible, boolean doSchedule) { - synchronized (scheduler) { - if (showingTaskHandle != null) { - showingTaskHandle.cancel(false); - showingTaskHandle = null; - } - - if (hidingTaskHandle != null) { - hidingTaskHandle.cancel(false); - hidingTaskHandle = null; - } + synchronized (taskLock) { + cancelTasks(); if (visible) { if (isVisible()) { @@ -138,20 +125,18 @@ public final class CWarningWindow extends CPlatformWindow currentIcon = 2; } - showingTaskHandle = scheduler.schedule(showingTask, 50, - TimeUnit.MILLISECONDS); - + showHideTask = new ShowingTask(); + LWCToolkit.performOnMainThreadAfterDelay(showHideTask, 50); } else { if (!isVisible()) { return; } + showHideTask = new HidingTask(); if (doSchedule) { - hidingTaskHandle = scheduler.schedule(hidingTask, HIDING_DELAY, - TimeUnit.MILLISECONDS); + LWCToolkit.performOnMainThreadAfterDelay(showHideTask, HIDING_DELAY); } else { - hidingTaskHandle = scheduler.schedule(hidingTask, 50, - TimeUnit.MILLISECONDS); + LWCToolkit.performOnMainThreadAfterDelay(showHideTask, 50); } } } @@ -321,6 +306,21 @@ public final class CWarningWindow extends CPlatformWindow }; } + @Override + public void dispose() { + cancelTasks(); + super.dispose(); + } + + private void cancelTasks() { + synchronized (taskLock) { + if (showHideTask != null) { + showHideTask.cancel(); + showHideTask = null; + } + } + } + private void updateIconSize() { int newSize = -1; @@ -353,7 +353,7 @@ public final class CWarningWindow extends CPlatformWindow } } - private final Graphics getGraphics() { + private Graphics getGraphics() { SurfaceData sd = contentView.getSurfaceData(); if (ownerWindow == null || sd == null) { return null; @@ -398,44 +398,59 @@ public final class CWarningWindow extends CPlatformWindow return getSecurityIconInfo(currentSize, currentIcon); } - private final Runnable hidingTask = new Runnable() { - public void run() { + private final Lock taskLock = new Lock(); + private CancelableRunnable showHideTask; + + private static abstract class CancelableRunnable implements Runnable { + private volatile boolean perform = true; + + public final void cancel() { + perform = false; + } + + @Override + public final void run() { + if (perform) { + perform(); + } + } + + public abstract void perform(); + } + + private class HidingTask extends CancelableRunnable { + @Override + public void perform() { synchronized (lock) { setVisible(false); } - synchronized (scheduler) { - hidingTaskHandle = null; + synchronized (taskLock) { + showHideTask = null; } } - }; + } - private final Runnable showingTask = new Runnable() { - public void run() { + private class ShowingTask extends CancelableRunnable { + @Override + public void perform() { synchronized (lock) { if (!isVisible()) { setVisible(true); } - repaint(); } - synchronized (scheduler) { + synchronized (taskLock) { if (currentIcon > 0) { currentIcon--; - showingTaskHandle = scheduler.schedule(showingTask, SHOWING_DELAY, - TimeUnit.MILLISECONDS); + showHideTask = new ShowingTask(); + LWCToolkit.performOnMainThreadAfterDelay(showHideTask, SHOWING_DELAY); } else { - showingTaskHandle = null; + showHideTask = null; } } } - }; - - private final ScheduledExecutorService scheduler = - Executors.newSingleThreadScheduledExecutor(); - - private ScheduledFuture hidingTaskHandle; - private ScheduledFuture showingTaskHandle; + } } diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java b/jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java index fc587f298dc..e0c76ab2fc4 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java @@ -47,10 +47,10 @@ import sun.awt.datatransfer.DataTransferer; import sun.lwawt.*; import sun.lwawt.LWWindowPeer.PeerType; import sun.security.action.GetBooleanAction; -import sun.awt.image.MultiResolutionImage; import sun.util.CoreResourceBundleControl; +@SuppressWarnings("serial") // JDK implementation class final class NamedCursor extends Cursor { NamedCursor(String name) { super(name); @@ -141,6 +141,7 @@ public final class LWCToolkit extends LWToolkit { loadNativeColors(systemColors, appleColors); } + @SuppressWarnings("serial") // JDK implementation class private static class AppleSpecificColor extends Color { private final int index; AppleSpecificColor(int index) { @@ -474,9 +475,11 @@ public final class LWCToolkit extends LWToolkit { return true; } + private static final String APPKIT_THREAD_NAME = "AppKit Thread"; + // Intended to be called from the LWCToolkit.m only. private static void installToolkitThreadNameInJava() { - Thread.currentThread().setName(CThreading.APPKIT_THREAD_NAME); + Thread.currentThread().setName(APPKIT_THREAD_NAME); } @Override @@ -667,6 +670,13 @@ public final class LWCToolkit extends LWToolkit { throw new InvocationTargetException(eventException); } + /** + * Schedules a {@code Runnable} execution on the Appkit thread after a delay + * @param r a {@code Runnable} to execute + * @param delay a delay in milliseconds + */ + native static void performOnMainThreadAfterDelay(Runnable r, long delay); + // This exists purely to get around permissions issues with getSystemEventQueueImpl EventQueue getSystemEventQueueForInvokeAndWait() { return getSystemEventQueueImpl(); diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/NSPrintInfo.java b/jdk/src/macosx/classes/sun/lwawt/macosx/NSPrintInfo.java index 56988646c01..16bada2688c 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/NSPrintInfo.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/NSPrintInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ package sun.lwawt.macosx; import java.io.*; import javax.print.attribute.*; +@SuppressWarnings("serial") // JDK implementation class public final class NSPrintInfo implements PrintJobAttribute, PrintRequestAttribute, Serializable, Cloneable { private long fNSPrintInfo; diff --git a/jdk/src/macosx/native/sun/awt/AWTEvent.m b/jdk/src/macosx/native/sun/awt/AWTEvent.m index 3a7aab4d94f..70624769dab 100644 --- a/jdk/src/macosx/native/sun/awt/AWTEvent.m +++ b/jdk/src/macosx/native/sun/awt/AWTEvent.m @@ -28,6 +28,7 @@ #import <sys/time.h> #include <Carbon/Carbon.h> +#import "jni_util.h" #import "LWCToolkit.h" #import "ThreadUtilities.h" @@ -687,6 +688,7 @@ JNF_COCOA_ENTER(env); jboolean copy = JNI_FALSE; jint *data = (*env)->GetIntArrayElements(env, inData, ©); + CHECK_NULL_RETURN(data, postsTyped); // in = [testChar, testDeadChar, modifierFlags, keyCode] jchar testChar = (jchar)data[0]; @@ -727,6 +729,7 @@ JNF_COCOA_ENTER(env); jboolean copy = JNI_FALSE; jint *data = (*env)->GetIntArrayElements(env, inData, ©); + CHECK_NULL(data); // in = [modifierFlags, keyCode] jint modifierFlags = data[0]; diff --git a/jdk/src/macosx/native/sun/awt/AWTSurfaceLayers.m b/jdk/src/macosx/native/sun/awt/AWTSurfaceLayers.m index d12908c83a3..39fc4c2b82a 100644 --- a/jdk/src/macosx/native/sun/awt/AWTSurfaceLayers.m +++ b/jdk/src/macosx/native/sun/awt/AWTSurfaceLayers.m @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -103,8 +103,6 @@ JNF_COCOA_ENTER(env); CALayer *windowLayer = jlong_to_ptr(windowLayerPtr); surfaceLayers = [[AWTSurfaceLayers alloc] initWithWindowLayer: windowLayer]; - CFRetain(surfaceLayers); - [surfaceLayers release]; }]; JNF_COCOA_EXIT(env); diff --git a/jdk/src/macosx/native/sun/awt/AWTView.m b/jdk/src/macosx/native/sun/awt/AWTView.m index 8b4d06ab313..bcc832190f4 100644 --- a/jdk/src/macosx/native/sun/awt/AWTView.m +++ b/jdk/src/macosx/native/sun/awt/AWTView.m @@ -112,9 +112,9 @@ AWT_ASSERT_APPKIT_THREAD; remoteLayer.parentLayer = parentLayer; remoteLayer.remoteLayer = NULL; remoteLayer.jrsRemoteLayer = [remoteLayer createRemoteLayerBoundTo:JRSRemotePort]; - CFRetain(remoteLayer); // REMIND + [remoteLayer retain]; // REMIND remoteLayer.frame = CGRectMake(0, 0, 720, 500); // REMIND - CFRetain(remoteLayer.jrsRemoteLayer); // REMIND + [remoteLayer.jrsRemoteLayer retain]; // REMIND int layerID = [remoteLayer.jrsRemoteLayer layerID]; NSLog(@"layer id to send = %d", layerID); sendLayerID(layerID); @@ -1081,21 +1081,22 @@ JNF_CLASS_CACHE(jc_CInputMethod, "sun/lwawt/macosx/CInputMethod"); jarray array; jboolean isCopy; jint *_array; - NSRange range; + NSRange range = NSMakeRange(NSNotFound, 0); array = JNFCallObjectMethod(env, fInputMethodLOCKABLE, jm_markedRange); // AWT_THREADING Safe (AWTRunLoopMode) if (array) { _array = (*env)->GetIntArrayElements(env, array, &isCopy); - range = NSMakeRange(_array[0], _array[1]); - + if (_array != NULL) { + range.location = _array[0]; + range.length = _array[1]; #ifdef IM_DEBUG - fprintf(stderr, "markedRange returning (%lu, %lu)\n", (unsigned long)range.location, (unsigned long)range.length); + fprintf(stderr, "markedRange returning (%lu, %lu)\n", + (unsigned long)range.location, (unsigned long)range.length); #endif // IM_DEBUG - (*env)->ReleaseIntArrayElements(env, array, _array, 0); + (*env)->ReleaseIntArrayElements(env, array, _array, 0); + } (*env)->DeleteLocalRef(env, array); - } else { - range = NSMakeRange(NSNotFound, 0); } return range; @@ -1115,7 +1116,7 @@ JNF_CLASS_CACHE(jc_CInputMethod, "sun/lwawt/macosx/CInputMethod"); jarray array; jboolean isCopy; jint *_array; - NSRange range; + NSRange range = NSMakeRange(NSNotFound, 0); #ifdef IM_DEBUG fprintf(stderr, "AWTView InputMethod Selector Called : [selectedRange]\n"); @@ -1124,15 +1125,15 @@ JNF_CLASS_CACHE(jc_CInputMethod, "sun/lwawt/macosx/CInputMethod"); array = JNFCallObjectMethod(env, fInputMethodLOCKABLE, jm_selectedRange); // AWT_THREADING Safe (AWTRunLoopMode) if (array) { _array = (*env)->GetIntArrayElements(env, array, &isCopy); - range = NSMakeRange(_array[0], _array[1]); - (*env)->ReleaseIntArrayElements(env, array, _array, 0); + if (_array != NULL) { + range.location = _array[0]; + range.length = _array[1]; + (*env)->ReleaseIntArrayElements(env, array, _array, 0); + } (*env)->DeleteLocalRef(env, array); - } else { - range = NSMakeRange(NSNotFound, 0); } return range; - } /* This method returns the first frame of rects for theRange in screen coordindate system. @@ -1140,7 +1141,7 @@ JNF_CLASS_CACHE(jc_CInputMethod, "sun/lwawt/macosx/CInputMethod"); - (NSRect) firstRectForCharacterRange:(NSRange)theRange actualRange:(NSRangePointer)actualRange { if (!fInputMethodLOCKABLE) { - return NSMakeRect(0, 0, 0, 0); + return NSZeroRect; } static JNF_MEMBER_CACHE(jm_firstRectForCharacterRange, jc_CInputMethod, @@ -1152,18 +1153,27 @@ JNF_CLASS_CACHE(jc_CInputMethod, "sun/lwawt/macosx/CInputMethod"); NSRect rect; #ifdef IM_DEBUG - fprintf(stderr, "AWTView InputMethod Selector Called : [firstRectForCharacterRange:] location=%lu, length=%lu\n", (unsigned long)theRange.location, (unsigned long)theRange.length); + fprintf(stderr, + "AWTView InputMethod Selector Called : [firstRectForCharacterRange:] location=%lu, length=%lu\n", + (unsigned long)theRange.location, (unsigned long)theRange.length); #endif // IM_DEBUG - array = JNFCallObjectMethod(env, fInputMethodLOCKABLE, jm_firstRectForCharacterRange, theRange.location); // AWT_THREADING Safe (AWTRunLoopMode) + array = JNFCallObjectMethod(env, fInputMethodLOCKABLE, jm_firstRectForCharacterRange, + theRange.location); // AWT_THREADING Safe (AWTRunLoopMode) _array = (*env)->GetIntArrayElements(env, array, &isCopy); - rect = ConvertNSScreenRect(env, NSMakeRect(_array[0], _array[1], _array[2], _array[3])); - (*env)->ReleaseIntArrayElements(env, array, _array, 0); + if (_array) { + rect = ConvertNSScreenRect(env, NSMakeRect(_array[0], _array[1], _array[2], _array[3])); + (*env)->ReleaseIntArrayElements(env, array, _array, 0); + } else { + rect = NSZeroRect; + } (*env)->DeleteLocalRef(env, array); #ifdef IM_DEBUG - fprintf(stderr, "firstRectForCharacterRange returning x=%f, y=%f, width=%f, height=%f\n", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); + fprintf(stderr, + "firstRectForCharacterRange returning x=%f, y=%f, width=%f, height=%f\n", + rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); #endif // IM_DEBUG return rect; } @@ -1265,12 +1275,9 @@ JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ CALayer *windowLayer = jlong_to_ptr(windowLayerPtr); - AWTView *view = [[AWTView alloc] initWithRect:rect - platformView:cPlatformView - windowLayer:windowLayer]; - CFRetain(view); - [view release]; // GC - newView = view; + newView = [[AWTView alloc] initWithRect:rect + platformView:cPlatformView + windowLayer:windowLayer]; }]; JNF_COCOA_EXIT(env); diff --git a/jdk/src/macosx/native/sun/awt/AWTWindow.m b/jdk/src/macosx/native/sun/awt/AWTWindow.m index f9a7919b4ef..df7b126e5e7 100644 --- a/jdk/src/macosx/native/sun/awt/AWTWindow.m +++ b/jdk/src/macosx/native/sun/awt/AWTWindow.m @@ -791,7 +791,7 @@ JNF_COCOA_ENTER(env); contentView:contentView]; // the window is released is CPlatformWindow.nativeDispose() - if (window) CFRetain(window.nsWindow); + if (window) [window.nsWindow retain]; }]; JNF_COCOA_EXIT(env); diff --git a/jdk/src/macosx/native/sun/awt/ApplicationDelegate.m b/jdk/src/macosx/native/sun/awt/ApplicationDelegate.m index 81955757e4d..da48e7351dc 100644 --- a/jdk/src/macosx/native/sun/awt/ApplicationDelegate.m +++ b/jdk/src/macosx/native/sun/awt/ApplicationDelegate.m @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -255,8 +255,6 @@ AWT_ASSERT_APPKIT_THREAD; [super dealloc]; } -//- (void)finalize { [super finalize]; } // GC - #pragma mark Callbacks from AppKit @@ -623,8 +621,7 @@ JNIEXPORT jlong JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeGetDockIc JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ - image = [ApplicationDelegate _dockIconImage]; - CFRetain(image); + image = [[ApplicationDelegate _dockIconImage] retain]; }]; JNF_COCOA_EXIT(env); diff --git a/jdk/src/macosx/native/sun/awt/CClipboard.m b/jdk/src/macosx/native/sun/awt/CClipboard.m index d2a7cf524ba..72e1cf4f0f8 100644 --- a/jdk/src/macosx/native/sun/awt/CClipboard.m +++ b/jdk/src/macosx/native/sun/awt/CClipboard.m @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * 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,14 +23,13 @@ * questions. */ -#include "CClipboard.h" -#include "CDataTransferer.h" +#import "CClipboard.h" +#import "CDataTransferer.h" +#import "ThreadUtilities.h" +#import "jni_util.h" #import <Cocoa/Cocoa.h> #import <JavaNativeFoundation/JavaNativeFoundation.h> -#include "ThreadUtilities.h" - - static CClipboard *sClipboard = nil; // @@ -73,7 +72,6 @@ static CClipboard *sClipboard = nil; [super dealloc]; } -//- (void)finalize { [super finalize]; } - (NSData *)data { return fData; @@ -246,6 +244,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CClipboard_setData JNF_COCOA_ENTER(env); jint nBytes = (*env)->GetArrayLength(env, inBytes); jbyte *rawBytes = (*env)->GetPrimitiveArrayCritical(env, inBytes, NULL); + CHECK_NULL(rawBytes); NSData *bytesAsData = [NSData dataWithBytes:rawBytes length:nBytes]; (*env)->ReleasePrimitiveArrayCritical(env, inBytes, rawBytes, JNI_ABORT); NSString *format = formatForIndex(inFormat); diff --git a/jdk/src/macosx/native/sun/awt/CDataTransferer.m b/jdk/src/macosx/native/sun/awt/CDataTransferer.m index d648e924132..5fcb04bdb70 100644 --- a/jdk/src/macosx/native/sun/awt/CDataTransferer.m +++ b/jdk/src/macosx/native/sun/awt/CDataTransferer.m @@ -54,6 +54,10 @@ NSMutableDictionary *getMappingTable() { forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_PDF]]; [sStandardMappings setObject:NSURLPboardType forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_URL]]; + [sStandardMappings setObject:NSPasteboardTypePNG + forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_PNG]]; + [sStandardMappings setObject:(NSString*)kUTTypeJPEG + forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_JPEG]]; } return sStandardMappings; } @@ -126,108 +130,6 @@ JNF_COCOA_EXIT(env); return returnValue; } -/* - * Class: sun_lwawt_macosx_CDataTransferer - * Method: imageDataToPlatformImageBytes - * Signature: ([III)[B - */ -JNIEXPORT jbyteArray JNICALL Java_sun_lwawt_macosx_CDataTransferer_imageDataToPlatformImageBytes -(JNIEnv *env, jobject obj, jintArray inPixelData, jint inWidth, jint inHeight) -{ - jbyteArray returnValue = nil; -JNF_COCOA_ENTER(env); - UInt32 *rawImageData = (UInt32 *)(*env)->GetPrimitiveArrayCritical(env, inPixelData, 0); - - // The pixel data is in premultiplied ARGB format. That's exactly what - // we need for the bitmap image rep. - if (rawImageData != NULL) { - NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL - pixelsWide:inWidth - pixelsHigh:inHeight - bitsPerSample:8 - samplesPerPixel:4 - hasAlpha:YES - isPlanar:NO - colorSpaceName:NSCalibratedRGBColorSpace - bytesPerRow:(inWidth*4) - bitsPerPixel:32]; - - // Conver the ARGB data into RGBA data that the bitmap can draw. - unsigned char *destData = [imageRep bitmapData]; - unsigned char *currentRowBase; - jint x, y; - - for (y = 0; y < inHeight; y++) { - currentRowBase = destData + y * (inWidth * 4); - unsigned char *currElement = currentRowBase; - for (x = 0; x < inWidth; x++) { - UInt32 currPixel = rawImageData[y * inWidth + x]; - *currElement++ = ((currPixel & 0xFF0000) >> 16); - *currElement++ = ((currPixel & 0xFF00) >> 8); - *currElement++ = (currPixel & 0xFF); - *currElement++ = ((currPixel & 0xFF000000) >> 24); - } - } - - (*env)->ReleasePrimitiveArrayCritical(env, inPixelData, rawImageData, JNI_ABORT); - NSData *tiffImage = [imageRep TIFFRepresentation]; - jsize tiffSize = (jsize)[tiffImage length]; // #warning 64-bit: -length returns NSUInteger, but NewByteArray takes jsize - returnValue = (*env)->NewByteArray(env, tiffSize); - CHECK_NULL_RETURN(returnValue, nil); - jbyte *tiffData = (jbyte *)(*env)->GetPrimitiveArrayCritical(env, returnValue, 0); - CHECK_NULL_RETURN(tiffData, nil); - [tiffImage getBytes:tiffData]; - (*env)->ReleasePrimitiveArrayCritical(env, returnValue, tiffData, 0); // Do not use JNI_COMMIT, as that will not free the buffer copy when +ProtectJavaHeap is on. - [imageRep release]; - } -JNF_COCOA_EXIT(env); - return returnValue; - -} - -static jobject getImageForByteStream(JNIEnv *env, jbyteArray sourceData) -{ - CHECK_NULL_RETURN(sourceData, NULL); - - jsize sourceSize = (*env)->GetArrayLength(env, sourceData); - if (sourceSize == 0) return NULL; - - jbyte *sourceBytes = (*env)->GetPrimitiveArrayCritical(env, sourceData, NULL); - CHECK_NULL_RETURN(sourceBytes, NULL); - NSData *rawData = [NSData dataWithBytes:sourceBytes length:sourceSize]; - - NSImage *newImage = [[NSImage alloc] initWithData:rawData]; - if (newImage) CFRetain(newImage); // GC - [newImage release]; - - (*env)->ReleasePrimitiveArrayCritical(env, sourceData, sourceBytes, JNI_ABORT); - CHECK_NULL_RETURN(newImage, NULL); - - // The ownership of the NSImage is passed to the new CImage jobject. No need to release it. - static JNF_CLASS_CACHE(jc_CImage, "sun/lwawt/macosx/CImage"); - static JNF_STATIC_MEMBER_CACHE(jm_CImage_getCreator, jc_CImage, "getCreator", "()Lsun/lwawt/macosx/CImage$Creator;"); - jobject creator = JNFCallStaticObjectMethod(env, jm_CImage_getCreator); - - static JNF_CLASS_CACHE(jc_CImage_Generator, "sun/lwawt/macosx/CImage$Creator"); - static JNF_MEMBER_CACHE(jm_CImage_Generator_createImageUsingNativeSize, jc_CImage_Generator, "createImageUsingNativeSize", "(J)Ljava/awt/image/BufferedImage;"); - return JNFCallObjectMethod(env, creator, jm_CImage_Generator_createImageUsingNativeSize, ptr_to_jlong(newImage)); // AWT_THREADING Safe (known object) -} - -/* - * Class: sun_lwawt_macosx_CDataTransferer - * Method: getImageForByteStream - * Signature: ([B)Ljava/awt/Image; - */ -JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CDataTransferer_getImageForByteStream - (JNIEnv *env, jobject obj, jbyteArray sourceData) -{ - jobject img = NULL; -JNF_COCOA_ENTER(env); - img = getImageForByteStream(env, sourceData); -JNF_COCOA_EXIT(env); - return img; -} - static jobjectArray CreateJavaFilenameArray(JNIEnv *env, NSArray *filenameArray) { NSUInteger filenameCount = [filenameArray count]; diff --git a/jdk/src/macosx/native/sun/awt/CDesktopPeer.m b/jdk/src/macosx/native/sun/awt/CDesktopPeer.m index ef9bdb6801b..9054da8ad65 100644 --- a/jdk/src/macosx/native/sun/awt/CDesktopPeer.m +++ b/jdk/src/macosx/native/sun/awt/CDesktopPeer.m @@ -79,7 +79,7 @@ JNF_COCOA_ENTER(env); LSApplicationParameters params = {0, flags, NULL, NULL, NULL, NULL, NULL}; status = LSOpenURLsWithRole((CFArrayRef)[NSArray arrayWithObject:url], kLSRolesAll, NULL, ¶ms, NULL, 0); - CFRelease(url); + [url release]; JNF_COCOA_EXIT(env); return status; diff --git a/jdk/src/macosx/native/sun/awt/CDragSource.m b/jdk/src/macosx/native/sun/awt/CDragSource.m index 992092a7a5d..5d4f4e65724 100644 --- a/jdk/src/macosx/native/sun/awt/CDragSource.m +++ b/jdk/src/macosx/native/sun/awt/CDragSource.m @@ -188,7 +188,7 @@ static BOOL sNeedsEnter; fFormatMap = NULL; } - CFRelease(self); // GC + [self release]; } - (void)dealloc @@ -204,8 +204,6 @@ static BOOL sNeedsEnter; [super dealloc]; } -//- (void)finalize { [super finalize]; } - // Appropriated from Windows' awt_DataTransferer.cpp: // @@ -313,8 +311,7 @@ static BOOL sNeedsEnter; // This is a good approximation if not perfect. A conclusive search would // have to be done matching all defined strings in AppKit's commonStrings.h. - if ([type hasPrefix:@"NS"] || [type hasPrefix:@"NeXT"]) - hasNSTypeData = true; + hasNSTypeData = [type hasPrefix:@"NS"] || [type hasPrefix:@"NeXT"] || [type hasPrefix:@"public."]; } } } diff --git a/jdk/src/macosx/native/sun/awt/CDragSourceContextPeer.m b/jdk/src/macosx/native/sun/awt/CDragSourceContextPeer.m index 2b9f6e035dc..de0a49b236e 100644 --- a/jdk/src/macosx/native/sun/awt/CDragSourceContextPeer.m +++ b/jdk/src/macosx/native/sun/awt/CDragSourceContextPeer.m @@ -76,10 +76,6 @@ JNF_COCOA_ENTER(env); }]; JNF_COCOA_EXIT(env); - if (dragSource) { - CFRetain(dragSource); // GC - [dragSource release]; - } return ptr_to_jlong(dragSource); } diff --git a/jdk/src/macosx/native/sun/awt/CDropTarget.m b/jdk/src/macosx/native/sun/awt/CDropTarget.m index bff775fd10d..41b0a192c61 100644 --- a/jdk/src/macosx/native/sun/awt/CDropTarget.m +++ b/jdk/src/macosx/native/sun/awt/CDropTarget.m @@ -106,6 +106,7 @@ extern JNFClassInfo jc_CDropTargetContextPeer; NSFilenamesPboardType, NSPostScriptPboardType, NSTIFFPboardType, + NSPasteboardTypePNG, NSRTFPboardType, NSTabularTextPboardType, NSFontPboardType, @@ -119,6 +120,7 @@ extern JNFClassInfo jc_CDropTargetContextPeer; NSVCardPboardType, NSFilesPromisePboardType, [DnDUtilities javaPboardType], + (NSString*)kUTTypeJPEG, nil]; // Enable dragging events over this object: @@ -169,7 +171,7 @@ extern JNFClassInfo jc_CDropTargetContextPeer; fDropTargetContextPeer = NULL; } - CFRelease(self); + [self release]; } - (void)dealloc @@ -185,7 +187,6 @@ extern JNFClassInfo jc_CDropTargetContextPeer; [super dealloc]; } -//- (void)finalize { [super finalize]; } - (NSInteger) getDraggingSequenceNumber { @@ -722,10 +723,6 @@ JNF_COCOA_ENTER(env); dropTarget = [[CDropTarget alloc] init:jdroptarget component:jcomponent peer:jpeer control:controlObj]; JNF_COCOA_EXIT(env); - if (dropTarget) { - CFRetain(dropTarget); // GC - [dropTarget release]; - } return ptr_to_jlong(dropTarget); } diff --git a/jdk/src/macosx/native/sun/awt/CFileDialog.m b/jdk/src/macosx/native/sun/awt/CFileDialog.m index 74ea1fb6883..0a9621e9313 100644 --- a/jdk/src/macosx/native/sun/awt/CFileDialog.m +++ b/jdk/src/macosx/native/sun/awt/CFileDialog.m @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -88,7 +88,6 @@ canChooseDirectories:(BOOL)inChooseDirectories [super dealloc]; } -//- (void)finalize { [super finalize]; } - (void)safeSaveOrLoad { NSSavePanel *thePanel = nil; @@ -168,9 +167,9 @@ canChooseDirectories:(BOOL)inChooseDirectories } // ask the file filter up in Java - CFStringRef filePath = CFURLCopyFileSystemPath((CFURLRef)url, kCFURLPOSIXPathStyle); - BOOL shouldEnableFile = [self askFilenameFilter:(NSString *)filePath]; - CFRelease(filePath); + NSString* filePath = (NSString*)CFURLCopyFileSystemPath((CFURLRef)url, kCFURLPOSIXPathStyle); + BOOL shouldEnableFile = [self askFilenameFilter:filePath]; + [filePath release]; return shouldEnableFile; } @@ -223,9 +222,8 @@ JNF_COCOA_ENTER(env); NSArray *urls = [dialogDelegate URLs]; jsize count = [urls count]; - jclass stringClass = (*env)->FindClass(env, "java/lang/String"); - returnValue = (*env)->NewObjectArray(env, count, stringClass, NULL); - (*env)->DeleteLocalRef(env, stringClass); + static JNF_CLASS_CACHE(jc_String, "java/lang/String"); + returnValue = JNFNewObjectArray(env, &jc_String, count); [urls enumerateObjectsUsingBlock:^(id url, NSUInteger index, BOOL *stop) { jstring filename = JNFNormalizedJavaStringForPath(env, [url path]); diff --git a/jdk/src/macosx/native/sun/awt/CGraphicsEnv.m b/jdk/src/macosx/native/sun/awt/CGraphicsEnv.m index dd36775ce31..6488b700b29 100644 --- a/jdk/src/macosx/native/sun/awt/CGraphicsEnv.m +++ b/jdk/src/macosx/native/sun/awt/CGraphicsEnv.m @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ #import <JavaNativeFoundation/JavaNativeFoundation.h> +#import "jni_util.h" #import "LWCToolkit.h" #import "AWT_debug.h" @@ -64,7 +65,7 @@ JNF_COCOA_ENTER(env); /* Get the count */ CGDisplayCount displayCount; - if (CGGetActiveDisplayList(MAX_DISPLAYS, NULL, &displayCount) != kCGErrorSuccess) { + if (CGGetOnlineDisplayList(MAX_DISPLAYS, NULL, &displayCount) != kCGErrorSuccess) { [JNFException raise:env as:kInternalError reason:"CGGetOnlineDisplayList() failed to get display count"]; @@ -73,23 +74,36 @@ JNF_COCOA_ENTER(env); /* Allocate an array and get the size list of display Ids */ CGDirectDisplayID displays[MAX_DISPLAYS]; - if (CGGetActiveDisplayList(displayCount, displays, &displayCount) != kCGErrorSuccess) { + if (CGGetOnlineDisplayList(displayCount, displays, &displayCount) != kCGErrorSuccess) { [JNFException raise:env as:kInternalError reason:"CGGetOnlineDisplayList() failed to get display list"]; return NULL; } + CGDisplayCount i; + CGDisplayCount displayActiveCount = 0; //Active and sleeping. + for (i = 0; i < displayCount; ++i) { + if (CGDisplayMirrorsDisplay(displays[i]) == kCGNullDirectDisplay) { + ++displayActiveCount; + } else { + displays[i] = kCGNullDirectDisplay; + } + } + /* Allocate a java array for display identifiers */ - ret = JNFNewIntArray(env, displayCount); + ret = JNFNewIntArray(env, displayActiveCount); /* Initialize and return the backing int array */ assert(sizeof(jint) >= sizeof(CGDirectDisplayID)); jint *elems = (*env)->GetIntArrayElements(env, ret, 0); + CHECK_NULL_RETURN(elems, NULL); - CGDisplayCount i; - for (i = 0; i < displayCount; i++) { - elems[i] = displays[i]; + /* Filter out the mirrored displays */ + for (i = 0; i < displayCount; ++i) { + if (displays[i] != kCGNullDirectDisplay) { + elems[--displayActiveCount] = displays[i]; + } } (*env)->ReleaseIntArrayElements(env, ret, elems, 0); @@ -145,8 +159,7 @@ Java_sun_awt_CGraphicsEnvironment_registerDisplayReconfiguration JNF_COCOA_ENTER(env); - JNFWeakJObjectWrapper *wrapper = [JNFWeakJObjectWrapper wrapperWithJObject:this withEnv:env]; - CFRetain(wrapper); // pin from ObjC-GC + JNFWeakJObjectWrapper *wrapper = [[JNFWeakJObjectWrapper wrapperWithJObject:this withEnv:env] retain]; /* Register the callback */ if (CGDisplayRegisterReconfigurationCallback(&displaycb_handle, wrapper) != kCGErrorSuccess) { @@ -186,8 +199,7 @@ JNF_COCOA_ENTER(env); } [wrapper setJObject:NULL withEnv:env]; // more efficiant to pre-clear - - CFRelease(wrapper); + [wrapper release]; JNF_COCOA_EXIT(env); } diff --git a/jdk/src/macosx/native/sun/awt/CImage.m b/jdk/src/macosx/native/sun/awt/CImage.m index db0956b3e8e..034c41c9e36 100644 --- a/jdk/src/macosx/native/sun/awt/CImage.m +++ b/jdk/src/macosx/native/sun/awt/CImage.m @@ -22,6 +22,7 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ +#import "jni_util.h" #import <Cocoa/Cocoa.h> #import <JavaNativeFoundation/JavaNativeFoundation.h> @@ -52,18 +53,21 @@ static void CImage_CopyArrayIntoNSImageRep } static void CImage_CopyNSImageIntoArray -(NSImage *srcImage, jint *dstPixels, int width, int height) +(NSImage *srcImage, jint *dstPixels, NSRect fromRect, NSRect toRect) { + int width = toRect.size.width; + int height = toRect.size.height; CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); - CGContextRef cgRef = CGBitmapContextCreate(dstPixels, width, height, 8, width * 4, colorspace, kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host); + CGContextRef cgRef = CGBitmapContextCreate(dstPixels, width, height, + 8, width * 4, colorspace, + kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host); CGColorSpaceRelease(colorspace); NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithGraphicsPort:cgRef flipped:NO]; CGContextRelease(cgRef); NSGraphicsContext *oldContext = [[NSGraphicsContext currentContext] retain]; [NSGraphicsContext setCurrentContext:context]; - NSRect rect = NSMakeRect(0, 0, width, height); - [srcImage drawInRect:rect - fromRect:rect + [srcImage drawInRect:toRect + fromRect:fromRect operation:NSCompositeSourceOver fraction:1.0]; [NSGraphicsContext setCurrentContext:oldContext]; @@ -108,17 +112,12 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromArra jlong result = 0L; JNF_COCOA_ENTER(env); - + NSBitmapImageRep* imageRep = CImage_CreateImageRep(env, buffer, width, height); if (imageRep) { - NSImage *nsImage = [[NSImage alloc] initWithSize:NSMakeSize(width, height)]; + NSImage *nsImage = [[[NSImage alloc] initWithSize:NSMakeSize(width, height)] retain]; [nsImage addRepresentation:imageRep]; [imageRep release]; - - if (nsImage != nil) { - CFRetain(nsImage); // GC - } - result = ptr_to_jlong(nsImage); } @@ -161,13 +160,8 @@ JNF_COCOA_ENTER(env); (*env)->ReleaseIntArrayElements(env, widths, ws, JNI_ABORT); } if ([reps count]) { - NSImage *nsImage = [[NSImage alloc] initWithSize:NSMakeSize(0, 0)]; + NSImage *nsImage = [[[NSImage alloc] initWithSize:NSMakeSize(0, 0)] retain]; [nsImage addRepresentations: reps]; - - if (nsImage != nil) { - CFRetain(nsImage); // GC - } - result = ptr_to_jlong(nsImage); } @@ -190,8 +184,7 @@ JNF_COCOA_ENTER(env); IconRef iconRef; if (noErr == GetIconRef(kOnSystemDisk, kSystemIconsCreator, selector, &iconRef)) { - image = [[NSImage alloc] initWithIconRef:iconRef]; - if (image) CFRetain(image); // GC + image = [[[NSImage alloc] initWithIconRef:iconRef] retain]; ReleaseIconRef(iconRef); } @@ -213,8 +206,7 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromFile JNF_COCOA_ENTER(env); NSString *path = JNFNormalizedNSStringForPath(env, file); - image = [[NSImage alloc] initByReferencingFile:path]; - if (image) CFRetain(image); // GC + image = [[[NSImage alloc] initByReferencingFile:path] retain]; JNF_COCOA_EXIT(env); @@ -235,9 +227,8 @@ JNF_COCOA_ENTER(env); NSString *path = JNFNormalizedNSStringForPath(env, file); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ - image = [[NSWorkspace sharedWorkspace] iconForFile:path]; + image = [[[NSWorkspace sharedWorkspace] iconForFile:path] retain]; [image setScalesWhenResized:TRUE]; - if (image) CFRetain(image); // GC }]; JNF_COCOA_EXIT(env); @@ -257,8 +248,7 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromImag JNF_COCOA_ENTER(env); - image = [NSImage imageNamed:JNFJavaToNSString(env, name)]; - if (image) CFRetain(image); // GC + image = [[NSImage imageNamed:JNFJavaToNSString(env, name)] retain]; JNF_COCOA_EXIT(env); @@ -268,17 +258,20 @@ JNF_COCOA_EXIT(env); /* * Class: sun_lwawt_macosx_CImage * Method: nativeCopyNSImageIntoArray - * Signature: (J[III)V + * Signature: (J[IIIII)V */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CImage_nativeCopyNSImageIntoArray -(JNIEnv *env, jclass klass, jlong nsImgPtr, jintArray buffer, jint w, jint h) +(JNIEnv *env, jclass klass, jlong nsImgPtr, jintArray buffer, jint sw, jint sh, + jint dw, jint dh) { JNF_COCOA_ENTER(env); NSImage *img = (NSImage *)jlong_to_ptr(nsImgPtr); jint *dst = (*env)->GetPrimitiveArrayCritical(env, buffer, NULL); if (dst) { - CImage_CopyNSImageIntoArray(img, dst, w, h); + NSRect fromRect = NSMakeRect(0, 0, sw, sh); + NSRect toRect = NSMakeRect(0, 0, dw, dh); + CImage_CopyNSImageIntoArray(img, dst, fromRect, toRect); (*env)->ReleasePrimitiveArrayCritical(env, buffer, dst, JNI_ABORT); } @@ -345,3 +338,146 @@ JNF_COCOA_ENTER(env); JNF_COCOA_EXIT(env); } + +NSComparisonResult getOrder(BOOL order){ + return (NSComparisonResult) (order ? NSOrderedAscending : NSOrderedDescending); +} + +/* + * Class: sun_lwawt_macosx_CImage + * Method: nativeGetNSImageRepresentationsCount + * Signature: (JDD)[Ljava/awt/geom/Dimension2D; + */ +JNIEXPORT jobjectArray JNICALL + Java_sun_lwawt_macosx_CImage_nativeGetNSImageRepresentationSizes +(JNIEnv *env, jclass clazz, jlong image, jdouble w, jdouble h) +{ + if (!image) return NULL; + jobjectArray jreturnArray = NULL; + NSImage *img = (NSImage *)jlong_to_ptr(image); + +JNF_COCOA_ENTER(env); + + NSArray *imageRepresentations = [img representations]; + if([imageRepresentations count] == 0){ + return NULL; + } + + NSArray *sortedImageRepresentations = [imageRepresentations + sortedArrayUsingComparator: ^(id obj1, id obj2) { + + NSImageRep *imageRep1 = (NSImageRep *) obj1; + NSImageRep *imageRep2 = (NSImageRep *) obj2; + NSSize size1 = [imageRep1 size]; + NSSize size2 = [imageRep2 size]; + + if (NSEqualSizes(size1, size2)) { + return getOrder([imageRep1 pixelsWide] <= [imageRep2 pixelsWide] && + [imageRep1 pixelsHigh] <= [imageRep2 pixelsHigh]); + } + + return getOrder(size1.width <= size2.width && size1.height <= size2.height); + }]; + + NSMutableArray *sortedPixelSizes = [[NSMutableArray alloc] init]; + NSSize lastSize = [[sortedImageRepresentations lastObject] size]; + + NSUInteger i = [sortedImageRepresentations indexOfObjectPassingTest: + ^BOOL(id obj, NSUInteger idx, BOOL *stop) { + NSSize imageRepSize = [obj size]; + return (w <= imageRepSize.width && h <= imageRepSize.height) + || NSEqualSizes(imageRepSize, lastSize); + }]; + + NSUInteger count = [sortedImageRepresentations count]; + i = (i == NSNotFound) ? count - 1 : i; + NSSize bestFitSize = [[sortedImageRepresentations objectAtIndex: i] size]; + + for(; i < count; i++){ + NSImageRep *imageRep = [sortedImageRepresentations objectAtIndex: i]; + + if (!NSEqualSizes([imageRep size], bestFitSize)) { + break; + } + + NSSize pixelSize = NSMakeSize( + [imageRep pixelsWide], [imageRep pixelsHigh]); + [sortedPixelSizes addObject: [NSValue valueWithSize: pixelSize]]; + } + + count = [sortedPixelSizes count]; + static JNF_CLASS_CACHE(jc_Dimension, "java/awt/Dimension"); + jreturnArray = JNFNewObjectArray(env, &jc_Dimension, count); + CHECK_NULL_RETURN(jreturnArray, NULL); + + for(i = 0; i < count; i++){ + NSSize pixelSize = [[sortedPixelSizes objectAtIndex: i] sizeValue]; + + (*env)->SetObjectArrayElement(env, jreturnArray, i, + NSToJavaSize(env, pixelSize)); + JNU_CHECK_EXCEPTION_RETURN(env, NULL); + } + +JNF_COCOA_EXIT(env); + + return jreturnArray; +} + +/* + * Class: sun_lwawt_macosx_CImage + * Method: nativeGetPlatformImageBytes + * Signature: ([III)[B + */ +JNIEXPORT jbyteArray JNICALL Java_sun_lwawt_macosx_CImage_nativeGetPlatformImageBytes +(JNIEnv *env, jclass klass, jintArray buffer, jint width, jint height) +{ + jbyteArray result = 0L; + + JNF_COCOA_ENTER(env); + + NSBitmapImageRep* imageRep = [CImage_CreateImageRep(env, buffer, width, height) autorelease]; + if (imageRep) { + NSData *tiffImage = [imageRep TIFFRepresentation]; + jsize tiffSize = (jsize)[tiffImage length]; + result = (*env)->NewByteArray(env, tiffSize); + CHECK_NULL_RETURN(result, nil); + jbyte *tiffData = (jbyte *)(*env)->GetPrimitiveArrayCritical(env, result, 0); + CHECK_NULL_RETURN(tiffData, nil); + [tiffImage getBytes:tiffData]; + (*env)->ReleasePrimitiveArrayCritical(env, result, tiffData, 0); + } + + JNF_COCOA_EXIT(env); + + return result; +} + +/* + * Class: sun_lwawt_macosx_CImage + * Method: nativeCreateNSImageFromBytes + * Signature: ([B)J + */ +JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromBytes +(JNIEnv *env, jclass klass, jbyteArray sourceData) +{ + jlong result = 0L; + CHECK_NULL_RETURN(sourceData, 0L); + + JNF_COCOA_ENTER(env); + + jsize sourceSize = (*env)->GetArrayLength(env, sourceData); + if (sourceSize == 0) return 0L; + + jbyte *sourceBytes = (*env)->GetPrimitiveArrayCritical(env, sourceData, NULL); + CHECK_NULL_RETURN(sourceBytes, 0L); + NSData *rawData = [NSData dataWithBytes:sourceBytes length:sourceSize]; + NSImage *newImage = [[NSImage alloc] initWithData:rawData]; + + (*env)->ReleasePrimitiveArrayCritical(env, sourceData, sourceBytes, JNI_ABORT); + CHECK_NULL_RETURN(newImage, 0L); + + result = ptr_to_jlong(newImage); + JNF_COCOA_EXIT(env); + + return result; +} diff --git a/jdk/src/macosx/native/sun/awt/CInputMethod.m b/jdk/src/macosx/native/sun/awt/CInputMethod.m index 512c814baff..f4c3e7f1854 100644 --- a/jdk/src/macosx/native/sun/awt/CInputMethod.m +++ b/jdk/src/macosx/native/sun/awt/CInputMethod.m @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -70,17 +70,23 @@ static jobject CreateLocaleObjectFromNSString(JNIEnv *env, NSString *name) } // Create the java.util.Locale object + jobject localeObj = NULL; jobject langObj = (*env)->NewStringUTF(env, language); - jobject ctryObj = (*env)->NewStringUTF(env, country); - jobject vrntObj = (*env)->NewStringUTF(env, variant); - jobject localeObj = JNFNewObject(env, jm_localeCons, langObj, ctryObj, vrntObj); // AWT_THREADING Safe (known object) - + if (langObj != NULL) { + jobject ctryObj = (*env)->NewStringUTF(env, country); + if(ctryObj != NULL) { + jobject vrntObj = (*env)->NewStringUTF(env, variant); + if (vrntObj != NULL) { + localeObj = JNFNewObject(env, jm_localeCons,langObj, ctryObj, + vrntObj); + (*env)->DeleteLocalRef(env, vrntObj); + } + (*env)->DeleteLocalRef(env, ctryObj); + } + (*env)->DeleteLocalRef(env, langObj); + } // Clean up and return. free(language); - (*env)->DeleteLocalRef(env, langObj); - (*env)->DeleteLocalRef(env, ctryObj); - (*env)->DeleteLocalRef(env, vrntObj); - return localeObj; } @@ -234,10 +240,12 @@ JNF_COCOA_ENTER(env); if (sLastKeyboardLocaleObj) { JNFDeleteGlobalRef(env, sLastKeyboardLocaleObj); + sLastKeyboardLocaleObj = NULL; + } + if (localObj != NULL) { + sLastKeyboardLocaleObj = JNFNewGlobalRef(env, localObj); + (*env)->DeleteLocalRef(env, localObj); } - - sLastKeyboardLocaleObj = JNFNewGlobalRef(env, localObj); - (*env)->DeleteLocalRef(env, localObj); } returnValue = sLastKeyboardLocaleObj; @@ -305,9 +313,12 @@ JNF_COCOA_ENTER(env); for(NSString *locale in selectableArray) { jobject localeObj = CreateLocaleObjectFromNSString(env, locale); + if (localeObj == NULL) { + break; + } - if (JNFCallBooleanMethod(env, returnValue, jm_listContains, localeObj) == JNI_FALSE) { // AWT_THREADING Safe (known object) - JNFCallBooleanMethod(env, returnValue, jm_listAdd, localeObj); // AWT_THREADING Safe (known object) + if (JNFCallBooleanMethod(env, returnValue, jm_listContains, localeObj) == JNI_FALSE) { + JNFCallBooleanMethod(env, returnValue, jm_listAdd, localeObj); } (*env)->DeleteLocalRef(env, localeObj); diff --git a/jdk/src/macosx/native/sun/awt/CMenu.m b/jdk/src/macosx/native/sun/awt/CMenu.m index e2db11c10fa..43b08f09d2c 100644 --- a/jdk/src/macosx/native/sun/awt/CMenu.m +++ b/jdk/src/macosx/native/sun/awt/CMenu.m @@ -52,7 +52,6 @@ AWT_ASSERT_APPKIT_THREAD; fMenu = nil; [super dealloc]; } -//- (void)finalize { [super finalize]; } - (void)addJavaSubmenu:(CMenu *)submenu { [ThreadUtilities performOnMainThread:@selector(addNativeItem_OnAppKitThread:) on:self withObject:submenu waitUntilDone:YES]; @@ -169,10 +168,6 @@ JNF_COCOA_ENTER(env); // Add it to the parent menu [((CMenu *)jlong_to_ptr(parentMenu)) addJavaSubmenu: aCMenu]; - if (aCMenu) { - CFRetain(aCMenu); // GC - [aCMenu release]; - } JNF_COCOA_EXIT(env); @@ -209,10 +204,6 @@ JNF_COCOA_ENTER(env); [parent javaSetHelpMenu: aCMenu]; } - if (aCMenu) { - CFRetain(aCMenu); // GC - [aCMenu release]; - } JNF_COCOA_EXIT(env); return ptr_to_jlong(aCMenu); } @@ -275,13 +266,9 @@ Java_sun_lwawt_macosx_CMenu_nativeGetNSMenu NSMenu* nsMenu = NULL; JNF_COCOA_ENTER(env); - nsMenu = [((CMenu *)jlong_to_ptr(menuObject)) menu]; -JNF_COCOA_EXIT(env); - // Strong retain this menu; it'll get released in Java_apple_laf_ScreenMenu_addMenuListeners - if (nsMenu) { - CFRetain(nsMenu); // GC - } + nsMenu = [[((CMenu *)jlong_to_ptr(menuObject)) menu] retain]; +JNF_COCOA_EXIT(env); return ptr_to_jlong(nsMenu); } diff --git a/jdk/src/macosx/native/sun/awt/CMenuBar.m b/jdk/src/macosx/native/sun/awt/CMenuBar.m index 3bf4f779fb5..34ba099331b 100644 --- a/jdk/src/macosx/native/sun/awt/CMenuBar.m +++ b/jdk/src/macosx/native/sun/awt/CMenuBar.m @@ -405,10 +405,6 @@ Java_sun_lwawt_macosx_CMenuBar_nativeCreateMenuBar JNF_COCOA_EXIT(env); - if (aCMenuBar) { - CFRetain(aCMenuBar); // GC - [aCMenuBar release]; - } return ptr_to_jlong(aCMenuBar); } diff --git a/jdk/src/macosx/native/sun/awt/CMenuComponent.m b/jdk/src/macosx/native/sun/awt/CMenuComponent.m index c8b3766ad23..c3bff14241c 100644 --- a/jdk/src/macosx/native/sun/awt/CMenuComponent.m +++ b/jdk/src/macosx/native/sun/awt/CMenuComponent.m @@ -51,8 +51,7 @@ fPeer = NULL; [self cleanup]; - - CFRelease(self); // GC + [self release]; } // The method is used by all subclasses, since the process of the creation @@ -64,9 +63,6 @@ [argValue addObject: aCMenuItem]; } -//-(void) dealloc { [super dealloc]; } -//- (void)finalize { [super finalize]; } - @end /* diff --git a/jdk/src/macosx/native/sun/awt/CMenuItem.m b/jdk/src/macosx/native/sun/awt/CMenuItem.m index 219cc5bb971..8e483468074 100644 --- a/jdk/src/macosx/native/sun/awt/CMenuItem.m +++ b/jdk/src/macosx/native/sun/awt/CMenuItem.m @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -259,7 +259,7 @@ static unichar AWTKeyToMacShortcut(jint awtKey, BOOL doShift) { case java_awt_event_KeyEvent_VK_QUOTE : macKey = '\''; break; case java_awt_event_KeyEvent_VK_ESCAPE : macKey = 0x1B; break; -// case java_awt_event_KeyEvent_VK_SPACE : macKey = kMenuSpaceGlyph; break; + case java_awt_event_KeyEvent_VK_SPACE : macKey = ' '; break; case java_awt_event_KeyEvent_VK_PAGE_UP : macKey = NSPageUpFunctionKey; break; case java_awt_event_KeyEvent_VK_PAGE_DOWN : macKey = NSPageDownFunctionKey; break; case java_awt_event_KeyEvent_VK_END : macKey = NSEndFunctionKey; break; @@ -420,11 +420,6 @@ JNF_COCOA_ENTER(env); // setLabel will be called after creation completes. - if (aCMenuItem) { - CFRetain(aCMenuItem); // GC - [aCMenuItem release]; - } - JNF_COCOA_EXIT(env); return ptr_to_jlong(aCMenuItem); } diff --git a/jdk/src/macosx/native/sun/awt/CPopupMenu.m b/jdk/src/macosx/native/sun/awt/CPopupMenu.m index 287e97a2acf..11869a52403 100644 --- a/jdk/src/macosx/native/sun/awt/CPopupMenu.m +++ b/jdk/src/macosx/native/sun/awt/CPopupMenu.m @@ -66,8 +66,6 @@ JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ aCPopupMenu = [[CPopupMenu alloc] initWithPeer:cPeerObjGlobal]; - CFRetain(aCPopupMenu); - [aCPopupMenu release]; }]; JNF_COCOA_EXIT(env); diff --git a/jdk/src/macosx/native/sun/awt/CPrinterJob.m b/jdk/src/macosx/native/sun/awt/CPrinterJob.m index 219f65b49d9..4a85a916976 100644 --- a/jdk/src/macosx/native/sun/awt/CPrinterJob.m +++ b/jdk/src/macosx/native/sun/awt/CPrinterJob.m @@ -469,8 +469,6 @@ JNF_COCOA_ENTER(env); // safety is assured by the java side of this call. NSPrintInfo* printInfo = createDefaultNSPrintInfo(env, NULL); - if (printInfo) CFRetain(printInfo); // GC - [printInfo release]; result = ptr_to_jlong(printInfo); @@ -490,7 +488,7 @@ JNF_COCOA_ENTER(env); if (nsPrintInfo != -1) { NSPrintInfo* printInfo = (NSPrintInfo*)jlong_to_ptr(nsPrintInfo); - if (printInfo) CFRelease(printInfo); // GC + [printInfo release]; } JNF_COCOA_EXIT(env); } diff --git a/jdk/src/macosx/native/sun/awt/CSystemColors.m b/jdk/src/macosx/native/sun/awt/CSystemColors.m index 0f3fab5b444..f83c66036e0 100644 --- a/jdk/src/macosx/native/sun/awt/CSystemColors.m +++ b/jdk/src/macosx/native/sun/awt/CSystemColors.m @@ -75,7 +75,7 @@ static JNF_STATIC_MEMBER_CACHE(jm_systemColorsChanged, jc_LWCToolkit, "systemCol sColors = (NSColor**)malloc(sizeof(NSColor*) * java_awt_SystemColor_NUM_COLORS); } else { for (i = 0; i < java_awt_SystemColor_NUM_COLORS; i++) { - if (sColors[i] != NULL) CFRelease(sColors[i]); // GC + if (sColors[i] != NULL) [sColors[i] release]; } } @@ -108,14 +108,14 @@ static JNF_STATIC_MEMBER_CACHE(jm_systemColorsChanged, jc_LWCToolkit, "systemCol sColors[java_awt_SystemColor_INFO_TEXT] = [NSColor textColor]; for (i = 0; i < java_awt_SystemColor_NUM_COLORS; i++) { - if (sColors[i] != NULL) CFRetain(sColors[i]); // GC + [sColors[i] retain]; } if (appleColors == nil) { appleColors = (NSColor**)malloc(sizeof(NSColor*) * sun_lwawt_macosx_LWCToolkit_NUM_APPLE_COLORS); } else { for (i = 0; i < sun_lwawt_macosx_LWCToolkit_NUM_APPLE_COLORS; i++) { - if (appleColors[i] != NULL) CFRelease(appleColors[i]); // GC + if (appleColors[i] != NULL) [appleColors[i] release]; } } @@ -124,7 +124,7 @@ static JNF_STATIC_MEMBER_CACHE(jm_systemColorsChanged, jc_LWCToolkit, "systemCol appleColors[sun_lwawt_macosx_LWCToolkit_INACTIVE_SELECTION_FOREGROUND_COLOR] = [NSColor controlDarkShadowColor]; for (i = 0; i < sun_lwawt_macosx_LWCToolkit_NUM_APPLE_COLORS; i++) { - if (appleColors[i] != NULL) CFRetain(appleColors[i]); // GC + [appleColors[i] retain]; } } diff --git a/jdk/src/macosx/native/sun/awt/ImageSurfaceData.m b/jdk/src/macosx/native/sun/awt/ImageSurfaceData.m index 2d3669f2d90..82ee1f09488 100644 --- a/jdk/src/macosx/native/sun/awt/ImageSurfaceData.m +++ b/jdk/src/macosx/native/sun/awt/ImageSurfaceData.m @@ -849,7 +849,7 @@ PRINT(" copyARGB_PRE_bitToIndexed_8bit") indexOfBest = 0; distanceOfBest = DBL_MAX; - for (i=0; i<lutDataSize; i++) + for (i=0; (unsigned)i<lutDataSize; i++) { p2 = lutdata[i]; @@ -899,7 +899,7 @@ static void releaseDataFromProvider(void *info, const void *data, size_t size) { if (data != NULL) { - free(data); + free((void*)data); } } @@ -1497,7 +1497,7 @@ PRINT("ImageSD_dispose") } if (isdo->nsRef) { - CFRelease(isdo->nsRef); // GC + [isdo->nsRef release]; isdo->nsRef = nil; } @@ -1577,7 +1577,9 @@ JNIEXPORT jobject JNICALL Java_sun_awt_image_BufImgSurfaceData_getSurfaceData { static char *bimgName = "java/awt/image/BufferedImage"; jclass bimg = (*env)->FindClass(env, bimgName); + CHECK_NULL_RETURN(bimg, NULL); sDataID = (*env)->GetFieldID(env, bimg, "sData", "Lsun/java2d/SurfaceData;"); + CHECK_NULL_RETURN(sDataID, NULL); } return (*env)->GetObjectField(env, bufImg, sDataID); @@ -1591,7 +1593,9 @@ JNIEXPORT void JNICALL Java_sun_awt_image_BufImgSurfaceData_setSurfaceData { static char *bimgName = "java/awt/image/BufferedImage"; jclass bimg = (*env)->FindClass(env, bimgName); + CHECK_NULL(bimg); sDataID = (*env)->GetFieldID(env, bimg, "sData", "Lsun/java2d/SurfaceData;"); + CHECK_NULL(sDataID); } (*env)->SetObjectField(env, bufImg, sDataID, sData); @@ -1610,18 +1614,11 @@ JNIEXPORT void JNICALL Java_sun_java2d_OSXOffScreenSurfaceData_initIDs(JNIEnv *e return; } - icm = (*env)->FindClass(env, icmName); - if (icm == NULL) { - return; - } - - rgbID = (*env)->GetFieldID(env, icm, "rgb", "[I"); - allGrayID = (*env)->GetFieldID(env, icm, "allgrayopaque", "Z"); - mapSizeID = (*env)->GetFieldID(env, icm, "map_size", "I"); - CMpDataID = (*env)->GetFieldID(env, icm, "pData", "J"); - if (allGrayID == 0 || rgbID == 0 || mapSizeID == 0 || CMpDataID == 0) { - JNU_ThrowInternalError(env, "Could not get field IDs"); - } + CHECK_NULL(icm = (*env)->FindClass(env, icmName)); + CHECK_NULL(rgbID = (*env)->GetFieldID(env, icm, "rgb", "[I")); + CHECK_NULL(allGrayID = (*env)->GetFieldID(env, icm, "allgrayopaque", "Z")); + CHECK_NULL(mapSizeID = (*env)->GetFieldID(env, icm, "map_size", "I")); + CHECK_NULL(CMpDataID = (*env)->GetFieldID(env, icm, "pData", "J")); } gColorspaceRGB = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); @@ -1795,20 +1792,23 @@ PRINT("Java_sun_java2d_OSXOffScreenSurfaceData_initRaster") //bisdo->sdOps.Dispose = BufImg_Dispose; bisdo->array = (*env)->NewWeakGlobalRef(env, array); + if (array != NULL) CHECK_NULL(bisdo->array); bisdo->offset = offset; //bisdo->scanStr = scanStr; bisdo->scanStr = scanStride; //bisdo->pixStr = pixStr; bisdo->pixStr = pixelStride; if (!icm) { - bisdo->lutarray = NULL; - bisdo->lutsize = 0; - bisdo->icm = NULL; + bisdo->lutarray = NULL; + bisdo->lutsize = 0; + bisdo->icm = NULL; } else { - jobject lutarray = (*env)->GetObjectField(env, icm, rgbID); - bisdo->lutarray = (*env)->NewWeakGlobalRef(env, lutarray); - bisdo->lutsize = (*env)->GetIntField(env, icm, mapSizeID); - bisdo->icm = (*env)->NewWeakGlobalRef(env, icm); + jobject lutarray = (*env)->GetObjectField(env, icm, rgbID); + bisdo->lutarray = (*env)->NewWeakGlobalRef(env, lutarray); + if (lutarray != NULL) CHECK_NULL(bisdo->lutarray); + bisdo->lutsize = (*env)->GetIntField(env, icm, mapSizeID); + bisdo->icm = (*env)->NewWeakGlobalRef(env, icm); + if (icm != NULL) CHECK_NULL(bisdo->icm); } bisdo->rasbounds.x1 = 0; bisdo->rasbounds.y1 = 0; @@ -1887,7 +1887,7 @@ PRINT("Java_sun_java2d_OSXOffScreenSurfaceData_initRaster") Pixel32bit* src = lutdata; Pixel32bit* dst = isdo->lutData; jint i; - for (i=0; i<isdo->lutDataSize; i++) + for (i=0; (unsigned)i<isdo->lutDataSize; i++) { if (i != transparent_index) { @@ -1919,7 +1919,7 @@ PRINT("Java_sun_java2d_OSXOffScreenSurfaceData_initRaster") Pixel32bit* src = lutdata; Pixel32bit* dst = isdo->lutData; jint i; - for (i=0; i<isdo->lutDataSize; i++) + for (i=0; (unsigned)i<isdo->lutDataSize; i++) { *dst = *src | mask; dst++; src++; diff --git a/jdk/src/macosx/native/sun/awt/JavaAccessibilityAction.m b/jdk/src/macosx/native/sun/awt/JavaAccessibilityAction.m index 9afd1ff527e..d0f8b871004 100644 --- a/jdk/src/macosx/native/sun/awt/JavaAccessibilityAction.m +++ b/jdk/src/macosx/native/sun/awt/JavaAccessibilityAction.m @@ -55,20 +55,6 @@ [super dealloc]; } -- (void)finalize -{ - JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; - - JNFDeleteGlobalRef(env, fAccessibleAction); - fAccessibleAction = NULL; - - JNFDeleteGlobalRef(env, fComponent); - fComponent = NULL; - - [super finalize]; -} - - - (NSString *)getDescription { static JNF_STATIC_MEMBER_CACHE(jm_getAccessibleActionDescription, sjc_CAccessibility, "getAccessibleActionDescription", "(Ljavax/accessibility/AccessibleAction;ILjava/awt/Component;)Ljava/lang/String;"); @@ -116,19 +102,6 @@ [super dealloc]; } -- (void)finalize -{ - JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; - - JNFDeleteGlobalRef(env, fTabGroup); - fTabGroup = NULL; - - JNFDeleteGlobalRef(env, fComponent); - fComponent = NULL; - - [super finalize]; -} - - (NSString *)getDescription { return @"click"; diff --git a/jdk/src/macosx/native/sun/awt/JavaComponentAccessibility.m b/jdk/src/macosx/native/sun/awt/JavaComponentAccessibility.m index d20e70fe67b..e5260a2b6a6 100644 --- a/jdk/src/macosx/native/sun/awt/JavaComponentAccessibility.m +++ b/jdk/src/macosx/native/sun/awt/JavaComponentAccessibility.m @@ -192,20 +192,6 @@ static NSObject *sAttributeNamesLOCK = nil; [super dealloc]; } -- (void)finalize -{ - [self unregisterFromCocoaAXSystem]; - - JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; - - JNFDeleteGlobalRef(env, fAccessible); - fAccessible = NULL; - - JNFDeleteGlobalRef(env, fComponent); - fComponent = NULL; - - [super finalize]; -} - (void)postValueChanged { @@ -355,8 +341,8 @@ static NSObject *sAttributeNamesLOCK = nil; // must init freshly -alloc'd object [newChild initWithParent:parent withEnv:env withAccessible:jCAX withIndex:index withView:view withJavaRole:javaRole]; // must init new instance - // must hard CFRetain() pointer poked into Java object - CFRetain(newChild); + // must hard retain pointer poked into Java object + [newChild retain]; JNFSetLongField(env, jCAX, jf_ptr, ptr_to_jlong(newChild)); // return autoreleased instance @@ -1397,18 +1383,6 @@ static BOOL ObjectEquals(JNIEnv *env, jobject a, jobject b, jobject component); [super dealloc]; } -- (void)finalize -{ - JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; - - if (fTabGroupAxContext != NULL) { - JNFDeleteGlobalRef(env, fTabGroupAxContext); - fTabGroupAxContext = NULL; - } - - [super finalize]; -} - - (id)accessibilityValueAttribute { JNIEnv *env = [ThreadUtilities getJNIEnv]; diff --git a/jdk/src/macosx/native/sun/awt/LWCToolkit.m b/jdk/src/macosx/native/sun/awt/LWCToolkit.m index 5e2dd6cb43d..8018ef4efbf 100644 --- a/jdk/src/macosx/native/sun/awt/LWCToolkit.m +++ b/jdk/src/macosx/native/sun/awt/LWCToolkit.m @@ -82,6 +82,39 @@ static long eventCount; @end +@interface JavaRunnable : NSObject { } +@property jobject runnable; +- (id)initWithRunnable:(jobject)gRunnable; +- (void)perform; +@end + +@implementation JavaRunnable +@synthesize runnable = _runnable; + +- (id)initWithRunnable:(jobject)gRunnable { + if (self = [super init]) { + self.runnable = gRunnable; + } + return self; +} + +- (void)dealloc { + JNIEnv *env = [ThreadUtilities getJNIEnv]; + if (self.runnable) { + (*env)->DeleteGlobalRef(env, self.runnable); + } + [super dealloc]; +} + +- (void)perform { + JNIEnv* env = [ThreadUtilities getJNIEnv]; + static JNF_CLASS_CACHE(sjc_Runnable, "java/lang/Runnable"); + static JNF_MEMBER_CACHE(jm_Runnable_run, sjc_Runnable, "run", "()V"); + JNFCallVoidMethod(env, self.runnable, jm_Runnable_run); + [self release]; +} +@end + /* * Class: sun_lwawt_macosx_LWCToolkit * Method: nativeSyncQueue @@ -291,17 +324,15 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_LWCToolkit_createAWTRunLoopMediato { AWT_ASSERT_APPKIT_THREAD; - AWTRunLoopObject *o = nil; + jlong result; +JNF_COCOA_ENTER(env); // We double retain because this object is owned by both main thread and "other" thread // We release in both doAWTRunLoop and stopAWTRunLoop - o = [[AWTRunLoopObject alloc] init]; - if (o) { - CFRetain(o); // GC - CFRetain(o); // GC - [o release]; - } - return ptr_to_jlong(o); + result = ptr_to_jlong([[[AWTRunLoopObject alloc] init] retain]); +JNF_COCOA_EXIT(env); + + return result; } /* @@ -336,10 +367,7 @@ JNF_COCOA_ENTER(env); } } - - - CFRelease(mediatorObject); - + [mediatorObject release]; JNF_COCOA_EXIT(env); } @@ -357,11 +385,30 @@ JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThread:@selector(endRunLoop) on:mediatorObject withObject:nil waitUntilDone:NO]; - CFRelease(mediatorObject); + [mediatorObject release]; JNF_COCOA_EXIT(env); } +/* + * Class: sun_lwawt_macosx_LWCToolkit + * Method: performOnMainThreadAfterDelay + * Signature: (Ljava/lang/Runnable;J)V + */ +JNIEXPORT void JNICALL Java_sun_lwawt_macosx_LWCToolkit_performOnMainThreadAfterDelay +(JNIEnv *env, jclass clz, jobject runnable, jlong delay) +{ +JNF_COCOA_ENTER(env); + jobject gRunnable = (*env)->NewGlobalRef(env, runnable); + CHECK_NULL(gRunnable); + [ThreadUtilities performOnMainThreadWaiting:NO block:^() { + JavaRunnable* performer = [[JavaRunnable alloc] initWithRunnable:gRunnable]; + [performer performSelector:@selector(perform) withObject:nil afterDelay:(delay/1000.0)]; + }]; +JNF_COCOA_EXIT(env); +} + + /* * Class: sun_lwawt_macosx_LWCToolkit * Method: isCapsLockOn @@ -438,4 +485,3 @@ Java_sun_font_FontManager_populateFontFileNameMap { } - diff --git a/jdk/src/macosx/native/sun/awt/PrintModel.m b/jdk/src/macosx/native/sun/awt/PrintModel.m index 8a172d7e96e..e2e44cca625 100644 --- a/jdk/src/macosx/native/sun/awt/PrintModel.m +++ b/jdk/src/macosx/native/sun/awt/PrintModel.m @@ -48,7 +48,6 @@ [super dealloc]; } -//- (void)finalize { [super finalize]; } - (BOOL)runPageSetup { __block BOOL fResult = NO; @@ -86,8 +85,8 @@ AWT_ASSERT_NOT_APPKIT_THREAD; fResult = [self safePrintLoop:printerView withEnv:env]; } else { // Retain these so they don't go away while we're in Java - CFRetain(self); // GC - if (printerView) CFRetain(printerView); // GC + [self retain]; + [printerView retain]; static JNF_CLASS_CACHE(jc_CPrinterJob, "sun/lwawt/macosx/CPrinterJob"); static JNF_STATIC_MEMBER_CACHE(jm_detachPrintLoop, jc_CPrinterJob, "detachPrintLoop", "(JJ)V"); @@ -134,8 +133,8 @@ JNF_COCOA_ENTER(env); [model safePrintLoop:arg withEnv:env]; // These are to match the retains in runPrintLoopWithView: - if (model) CFRelease(model); // GC - if (arg) CFRelease(arg); // GC + [model release]; + [arg release]; JNF_COCOA_EXIT(env); } diff --git a/jdk/src/macosx/native/sun/awt/QuartzRenderer.m b/jdk/src/macosx/native/sun/awt/QuartzRenderer.m index d87582caf5b..27f31c206f3 100644 --- a/jdk/src/macosx/native/sun/awt/QuartzRenderer.m +++ b/jdk/src/macosx/native/sun/awt/QuartzRenderer.m @@ -438,6 +438,9 @@ QUARTZ_RENDERER_INLINE SDRenderType doPolyUsingCG(JNIEnv *env, CGContextRef cgRe { SDRenderType renderType = SD_Nothing; + if (xpointsarray == NULL || ypointsarray == NULL) { + return SD_Nothing; + } if (npoints > 1) { if (fill == YES) @@ -452,7 +455,14 @@ QUARTZ_RENDERER_INLINE SDRenderType doPolyUsingCG(JNIEnv *env, CGContextRef cgRe jint i; jint* xpoints = (jint*)(*env)->GetPrimitiveArrayCritical(env, xpointsarray, NULL); + if (xpoints == NULL) { + return SD_Nothing; + } jint* ypoints = (jint*)(*env)->GetPrimitiveArrayCritical(env, ypointsarray, NULL); + if (ypoints == NULL) { + (*env)->ReleasePrimitiveArrayCritical(env, xpointsarray, xpoints, 0); + return SD_Nothing; + } CGContextMoveToPoint(cgRef, xpoints[0]+offsetX, ypoints[0]+offsetY); diff --git a/jdk/src/macosx/native/sun/awt/QuartzSurfaceData.m b/jdk/src/macosx/native/sun/awt/QuartzSurfaceData.m index dd61d0a9fd6..131dc1e0d6f 100644 --- a/jdk/src/macosx/native/sun/awt/QuartzSurfaceData.m +++ b/jdk/src/macosx/native/sun/awt/QuartzSurfaceData.m @@ -778,6 +778,10 @@ PRINT(" SetUpCGContext") qsdo->graphicsStateInfo.simpleStroke = NO; jint length = (*env)->GetArrayLength(env, dasharray); jfloat* jdashes = (jfloat*)(*env)->GetPrimitiveArrayCritical(env, dasharray, NULL); + if (jdashes == NULL) { + CGContextSetLineDash(cgRef, 0, NULL, 0); + return; + } CGFloat* dashes = (CGFloat*)malloc(sizeof(CGFloat)*length); if (dashes != NULL) { diff --git a/jdk/src/macosx/native/sun/font/AWTStrike.m b/jdk/src/macosx/native/sun/font/AWTStrike.m index 6e4b4291cbb..2425ec67f88 100644 --- a/jdk/src/macosx/native/sun/font/AWTStrike.m +++ b/jdk/src/macosx/native/sun/font/AWTStrike.m @@ -127,6 +127,9 @@ GetTxFromDoubles(JNIEnv *env, jdoubleArray txArray) } jdouble *txPtr = (*env)->GetPrimitiveArrayCritical(env, txArray, NULL); + if (txPtr == NULL) { + return CGAffineTransformIdentity; + } CGAffineTransform tx = CGAffineTransformMake(txPtr[0], txPtr[1], txPtr[2], @@ -311,18 +314,22 @@ JNF_COCOA_ENTER(env); jlong *glyphInfos = (*env)->GetPrimitiveArrayCritical(env, glyphInfoLongArray, NULL); - jint *rawGlyphCodes = - (*env)->GetPrimitiveArrayCritical(env, glyphCodes, NULL); + if (glyphInfos != NULL) { + jint *rawGlyphCodes = + (*env)->GetPrimitiveArrayCritical(env, glyphCodes, NULL); - CGGlyphImages_GetGlyphImagePtrs(glyphInfos, awtStrike, - rawGlyphCodes, len); + if (rawGlyphCodes != NULL) { + CGGlyphImages_GetGlyphImagePtrs(glyphInfos, awtStrike, + rawGlyphCodes, len); - (*env)->ReleasePrimitiveArrayCritical(env, glyphCodes, - rawGlyphCodes, JNI_ABORT); - // Do not use JNI_COMMIT, as that will not free the buffer copy - // when +ProtectJavaHeap is on. - (*env)->ReleasePrimitiveArrayCritical(env, glyphInfoLongArray, - glyphInfos, 0); + (*env)->ReleasePrimitiveArrayCritical(env, glyphCodes, + rawGlyphCodes, JNI_ABORT); + } + // Do not use JNI_COMMIT, as that will not free the buffer copy + // when +ProtectJavaHeap is on. + (*env)->ReleasePrimitiveArrayCritical(env, glyphInfoLongArray, + glyphInfos, 0); + } JNF_COCOA_EXIT(env); } diff --git a/jdk/src/macosx/native/sun/font/CCharToGlyphMapper.m b/jdk/src/macosx/native/sun/font/CCharToGlyphMapper.m index cf081379120..d2e12cfc70c 100644 --- a/jdk/src/macosx/native/sun/font/CCharToGlyphMapper.m +++ b/jdk/src/macosx/native/sun/font/CCharToGlyphMapper.m @@ -101,10 +101,13 @@ JNF_COCOA_ENTER(env); jchar *unicodesAsChars = (*env)->GetPrimitiveArrayCritical(env, unicodes, NULL); - AllocateGlyphBuffer(env, awtFont, count, (UniChar *)unicodesAsChars, glyphs); + if (unicodesAsChars != NULL) { + AllocateGlyphBuffer(env, awtFont, count, + (UniChar *)unicodesAsChars, glyphs); - (*env)->ReleasePrimitiveArrayCritical(env, unicodes, - unicodesAsChars, JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, unicodes, + unicodesAsChars, JNI_ABORT); + } JNF_COCOA_EXIT(env); } diff --git a/jdk/src/macosx/native/sun/osxapp/NSApplicationAWT.m b/jdk/src/macosx/native/sun/osxapp/NSApplicationAWT.m index b55f1b76c21..3e11e1dda7e 100644 --- a/jdk/src/macosx/native/sun/osxapp/NSApplicationAWT.m +++ b/jdk/src/macosx/native/sun/osxapp/NSApplicationAWT.m @@ -71,7 +71,6 @@ AWT_ASSERT_APPKIT_THREAD; [super dealloc]; } -//- (void)finalize { [super finalize]; } - (void)finishLaunching { diff --git a/jdk/src/share/back/SDE.c b/jdk/src/share/back/SDE.c index 5c0ac218703..6ff7025bbf6 100644 --- a/jdk/src/share/back/SDE.c +++ b/jdk/src/share/back/SDE.c @@ -48,8 +48,6 @@ #define BASE_STRATUM_NAME "Java" #define null NULL -#define true JNI_TRUE -#define false JNI_FALSE #define String char * #define private static @@ -147,7 +145,7 @@ private jboolean isValid(void); defaultStratumId = null; defaultStratumIndex = -1; baseStratumIndex = -2; /* so as not to match -1 above */ - sourceMapIsValid = false; + sourceMapIsValid = JNI_FALSE; if (getSourceDebugExtension(clazz, &sourceDebugExtension) == JVMTI_ERROR_NONE) { @@ -667,7 +665,7 @@ private jboolean isValid(void); jplsFilename = readLine(); defaultStratumId = readLine(); createJavaStratum(); - while (true) { + while (1) { if (sdeRead() != '*') { syntax("expected '*'"); } @@ -684,7 +682,7 @@ private jboolean isValid(void); case 'E': /* set end points */ storeStratum("*terminator*"); - sourceMapIsValid = true; + sourceMapIsValid = JNI_TRUE; return; default: ignoreSection(); diff --git a/jdk/src/share/back/eventFilter.c b/jdk/src/share/back/eventFilter.c index bbb344594bc..d3eeb4d077c 100644 --- a/jdk/src/share/back/eventFilter.c +++ b/jdk/src/share/back/eventFilter.c @@ -288,7 +288,7 @@ static jboolean isVersionGte12x() { >> JVMTI_VERSION_SHIFT_MAJOR; minor = (version & JVMTI_VERSION_MASK_MINOR) >> JVMTI_VERSION_SHIFT_MINOR; - return (major > 1 || major == 1 && minor >= 2); + return (major > 1 || (major == 1 && minor >= 2)) ? JNI_TRUE : JNI_FALSE; } else { return JNI_FALSE; } diff --git a/jdk/src/share/back/eventHandler.c b/jdk/src/share/back/eventHandler.c index 5f5bf24cf6c..82911fdb66b 100644 --- a/jdk/src/share/back/eventHandler.c +++ b/jdk/src/share/back/eventHandler.c @@ -1682,7 +1682,7 @@ HandlerNode * eventHandler_createPermanentInternal(EventIndex ei, HandlerFunction func) { return createInternal(ei, func, NULL, - NULL, NULL, (jlocation)NULL, JNI_TRUE); + NULL, NULL, 0, JNI_TRUE); } HandlerNode * @@ -1691,7 +1691,7 @@ eventHandler_createInternalThreadOnly(EventIndex ei, jthread thread) { return createInternal(ei, func, thread, - NULL, NULL, (jlocation)NULL, JNI_FALSE); + NULL, NULL, 0, JNI_FALSE); } HandlerNode * diff --git a/jdk/src/share/back/log_messages.c b/jdk/src/share/back/log_messages.c index de8b69db8c9..77b8876382d 100644 --- a/jdk/src/share/back/log_messages.c +++ b/jdk/src/share/back/log_messages.c @@ -56,17 +56,24 @@ static int open_count; static void get_time_stamp(char *tbuf, size_t ltbuf) { - char format[MAXLEN_TIMESTAMP+1]; + char timestamp_prefix[MAXLEN_TIMESTAMP+1]; + char timestamp_postfix[MAXLEN_TIMESTAMP+1]; unsigned millisecs = 0; time_t t = 0; GETMILLSECS(millisecs); - if ( time(&t) == (time_t)(-1) ) + if ( time(&t) == (time_t)(-1) ) { t = 0; - (void)strftime(format, sizeof(format), - /* Break this string up for SCCS's sake */ - "%" "d.%" "m.%" "Y %" "T.%%.3d %" "Z", localtime(&t)); - (void)snprintf(tbuf, ltbuf, format, (int)(millisecs)); + } + /* Break this up so that the format strings are string literals + and we avoid a compiler warning. */ + (void)strftime(timestamp_prefix, sizeof(timestamp_prefix), + "%d.%m.%Y %T", localtime(&t)); + (void)strftime(timestamp_postfix, sizeof(timestamp_postfix), + "%Z", localtime(&t)); + (void)snprintf(tbuf, ltbuf, + "%s.%.3d %s", timestamp_prefix, + (int)(millisecs), timestamp_postfix); } /* Get basename of filename */ @@ -175,7 +182,7 @@ log_message_end(const char *format, ...) "LOC=%s;PID=%d;THR=t@%d", location_stamp, (int)processPid, - (int)tid); + (int)(intptr_t)tid); /* Construct message string. */ va_start(ap, format); diff --git a/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java b/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java index b30d618cd75..9a418cf5edc 100644 --- a/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java +++ b/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java @@ -25,6 +25,9 @@ package com.sun.java.browser.dom; +import java.security.AccessController; +import java.security.PrivilegedAction; + public abstract class DOMService { /** @@ -43,8 +46,9 @@ public abstract class DOMService { try { - String provider = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("com.sun.java.browser.dom.DOMServiceProvider")); + String provider = AccessController.doPrivileged( + (PrivilegedAction<String>) () -> + System.getProperty("com.sun.java.browser.dom.DOMServiceProvider")); Class clazz = Class.forName("sun.plugin.dom.DOMService"); diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKColorChooserPanel.java b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKColorChooserPanel.java index 45ca3797cbb..348c0a64e9a 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKColorChooserPanel.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKColorChooserPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * 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 javax.swing.plaf.*; * * @author Scott Violet */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class GTKColorChooserPanel extends AbstractColorChooserPanel implements ChangeListener { private static final float PI_3 = (float)(Math.PI / 3); @@ -535,6 +536,7 @@ class GTKColorChooserPanel extends AbstractColorChooserPanel implements /** * Class responsible for rendering a color wheel and color triangle. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class ColorTriangle extends JPanel { /** * Cached image of the wheel. @@ -1229,6 +1231,7 @@ class GTKColorChooserPanel extends AbstractColorChooserPanel implements /** * Action class used for colors. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class ColorAction extends AbstractAction { private int type; @@ -1294,7 +1297,7 @@ class GTKColorChooserPanel extends AbstractColorChooserPanel implements } } - + @SuppressWarnings("serial") // Superclass is not serializable across versions private class OpaqueLabel extends JLabel { public boolean isOpaque() { return true; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java index f52e4bdb28f..ddbdcded4b6 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java @@ -549,6 +549,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { fc.add(interior, BorderLayout.CENTER); + @SuppressWarnings("serial") // anonymous class JPanel comboBoxPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0) { public void layoutContainer(Container target) { @@ -660,26 +661,30 @@ class GTKFileChooserUI extends SynthFileChooserUI { if (currentDirectory != null) { curDirName = currentDirectory.getPath(); } - pathField = new JLabel(curDirName) { + @SuppressWarnings("serial") // anonymous class + JLabel tmp = new JLabel(curDirName) { public Dimension getMaximumSize() { Dimension d = super.getMaximumSize(); d.height = getPreferredSize().height; return d; } }; + pathField = tmp; pathField.setName("GTKFileChooser.pathField"); align(pathField); pathFieldPanel.add(pathField); interior.add(pathFieldPanel); // add the fileName field - fileNameTextField = new JTextField() { + @SuppressWarnings("serial") // anonymous class + JTextField tmp2 = new JTextField() { public Dimension getMaximumSize() { Dimension d = super.getMaximumSize(); d.height = getPreferredSize().height; return d; } }; + fileNameTextField = tmp2; pathFieldLabel.setLabelFor(fileNameTextField); @@ -905,6 +910,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { return approveSelectionAction; } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class GTKDirectoryModel extends BasicDirectoryModel { FileSystemView fsv; private Comparator<File> fileComparator = new Comparator<File>() { @@ -923,6 +929,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class GTKDirectoryListModel extends AbstractListModel implements ListDataListener { File curDir; public GTKDirectoryListModel() { @@ -966,6 +973,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class GTKFileListModel extends AbstractListModel implements ListDataListener { public GTKFileListModel() { getModel().addListDataListener(this); @@ -1009,6 +1017,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class FileCellRenderer extends DefaultListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { @@ -1022,6 +1031,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class DirectoryCellRenderer extends DefaultListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { @@ -1084,6 +1094,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { /** * Data model for a type-face selection combo-box. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class DirectoryComboBoxModel extends AbstractListModel implements ComboBoxModel { Vector<File> directories = new Vector<File>(); File selectedDirectory = null; @@ -1160,6 +1171,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { /** * Acts when DirectoryComboBox has changed the selected item. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class DirectoryComboBoxAction extends AbstractAction { protected DirectoryComboBoxAction() { super("DirectoryComboBoxAction"); @@ -1174,6 +1186,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { /** * Creates a new folder. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class NewFolderAction extends AbstractAction { protected NewFolderAction() { super(FilePane.ACTION_NEW_FOLDER); @@ -1209,6 +1222,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class GTKApproveSelectionAction extends ApproveSelectionAction { public void actionPerformed(ActionEvent e) { if (isDirectorySelected()) { @@ -1240,6 +1254,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { /** * Renames file */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class RenameFileAction extends AbstractAction { protected RenameFileAction() { super(FilePane.ACTION_EDIT_FILE_NAME); @@ -1285,6 +1300,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { /** * Render different filters */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public class FilterComboBoxRenderer extends DefaultListCellRenderer implements UIResource { public String getName() { // As SynthComboBoxRenderer's are asked for a size BEFORE they @@ -1328,6 +1344,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { /** * Data model for filter combo-box. */ + @SuppressWarnings("serial") // JDK implementation class protected class FilterComboBoxModel extends AbstractListModel implements ComboBoxModel, PropertyChangeListener { protected FileFilter[] filters; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java index feb9b4f4383..d86b4ec92ac 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -51,6 +51,7 @@ import sun.swing.SwingUtilities2; /** * @author Scott Violet */ +@SuppressWarnings("serial") // Superclass not serializable public class GTKLookAndFeel extends SynthLookAndFeel { private static final boolean IS_22; @@ -336,10 +337,9 @@ public class GTKLookAndFeel extends SynthLookAndFeel { // populate the table with the values from basic. super.initComponentDefaults(table); - Integer zero = Integer.valueOf(0); - Object zeroBorder = new sun.swing.SwingLazyValue( - "javax.swing.plaf.BorderUIResource$EmptyBorderUIResource", - new Object[] {zero, zero, zero, zero}); + UIDefaults.LazyValue zeroBorder = + t -> new BorderUIResource.EmptyBorderUIResource(0, 0, 0, 0); + Object focusBorder = new GTKStyle.GTKLazyValue( "com.sun.java.swing.plaf.gtk.GTKPainter$ListTableFocusBorder", "getUnselectedCellBorder"); diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKPainter.java b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKPainter.java index c2b76264b2f..3e55c0837de 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKPainter.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKPainter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1414,6 +1414,7 @@ class GTKPainter extends SynthPainter { } // Refer to GTKLookAndFeel for details on this. + @SuppressWarnings("serial") // Superclass is not serializable across versions static class ListTableFocusBorder extends AbstractBorder implements UIResource { @@ -1482,6 +1483,7 @@ class GTKPainter extends SynthPainter { } // TitledBorder implementation for GTK L&F + @SuppressWarnings("serial") // Superclass is not serializable across versions static class TitledBorder extends AbstractBorder implements UIResource { public void paintBorder(Component c, Graphics g, int x, int y, diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifBorders.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifBorders.java index 4b140f17f89..7a1b637850b 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifBorders.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifBorders.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -54,6 +54,7 @@ import java.awt.Rectangle; */ public class MotifBorders { + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class BevelBorder extends AbstractBorder implements UIResource { private Color darkShadow = UIManager.getColor("controlShadow"); private Color lightShadow = UIManager.getColor("controlLtHighlight"); @@ -87,6 +88,7 @@ public class MotifBorders { } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class FocusBorder extends AbstractBorder implements UIResource { private Color focus; private Color control; @@ -113,6 +115,7 @@ public class MotifBorders { } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class ButtonBorder extends AbstractBorder implements UIResource { protected Color focus = UIManager.getColor("activeCaptionBorder"); protected Color shadow = UIManager.getColor("Button.shadow"); @@ -191,6 +194,7 @@ public class MotifBorders { } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class ToggleButtonBorder extends ButtonBorder { public ToggleButtonBorder(Color shadow, Color highlight, Color darkShadow, Color focus) { @@ -224,6 +228,7 @@ public class MotifBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class MenuBarBorder extends ButtonBorder { public MenuBarBorder(Color shadow, Color highlight, Color darkShadow, Color focus) { @@ -249,6 +254,7 @@ public class MotifBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class FrameBorder extends AbstractBorder implements UIResource { JComponent jcomp; @@ -434,6 +440,7 @@ public class MotifBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class InternalFrameBorder extends FrameBorder { JInternalFrame frame; @@ -618,6 +625,7 @@ public class MotifBorders { g.setColor(oldColor); } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class MotifPopupMenuBorder extends AbstractBorder implements UIResource { protected Font font; protected Color background; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifComboBoxUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifComboBoxUI.java index 953869f4072..91fa518769e 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifComboBoxUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifComboBoxUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,6 +44,7 @@ import java.beans.*; * * @author Arnaud Weber */ +@SuppressWarnings("serial") // Same-version serialization only public class MotifComboBoxUI extends BasicComboBoxUI implements Serializable { Icon arrowIcon; static final int HORIZ_MARGIN = 3; @@ -93,6 +94,7 @@ public class MotifComboBoxUI extends BasicComboBoxUI implements Serializable { /** * Overriden to empty the MouseMotionListener. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class MotifComboPopup extends BasicComboPopup { public MotifComboPopup( JComboBox comboBox ) { @@ -279,6 +281,7 @@ public class MotifComboBoxUI extends BasicComboBoxUI implements Serializable { } } + @SuppressWarnings("serial") // Same-version serialization only static class MotifComboBoxArrowIcon implements Icon, Serializable { private Color lightShadow; private Color darkShadow; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifDesktopIconUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifDesktopIconUI.java index a3ce69054c0..b3ff4ad4965 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifDesktopIconUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifDesktopIconUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -200,6 +200,7 @@ public class MotifDesktopIconUI extends BasicDesktopIconUI defaultIcon = newIcon; } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class IconLabel extends JPanel { JInternalFrame frame; @@ -291,6 +292,7 @@ public class MotifDesktopIconUI extends BasicDesktopIconUI } } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class IconButton extends JButton { Icon icon; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifDesktopPaneUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifDesktopPaneUI.java index 122e1c6e145..c3e1f85993b 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifDesktopPaneUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifDesktopPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -72,6 +72,7 @@ public class MotifDesktopPaneUI extends javax.swing.plaf.basic.BasicDesktopPaneU //////////////////////////////////////////////////////////////////////////////////// /// DragPane class //////////////////////////////////////////////////////////////////////////////////// + @SuppressWarnings("serial") // Superclass is not serializable across versions private class DragPane extends JComponent { public void paint(Graphics g) { g.setColor(Color.darkGray); @@ -82,6 +83,7 @@ public class MotifDesktopPaneUI extends javax.swing.plaf.basic.BasicDesktopPaneU //////////////////////////////////////////////////////////////////////////////////// /// MotifDesktopManager class //////////////////////////////////////////////////////////////////////////////////// + @SuppressWarnings("serial") // JDK-implementation class private class MotifDesktopManager extends DefaultDesktopManager implements Serializable, UIResource { JComponent dragPane; boolean usingDragPane = false; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifFileChooserUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifFileChooserUI.java index ae7baa53bc2..f707ad84268 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifFileChooserUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifFileChooserUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -281,6 +281,7 @@ public class MotifFileChooserUI extends BasicFileChooserUI { fc.setLayout(new BorderLayout(10, 10)); fc.setAlignmentX(JComponent.CENTER_ALIGNMENT); + @SuppressWarnings("serial") // anonymous class JPanel interior = new JPanel() { public Insets getInsets() { return insets; @@ -303,13 +304,16 @@ public class MotifFileChooserUI extends BasicFileChooserUI { if(currentDirectory != null) { curDirName = currentDirectory.getPath(); } - pathField = new JTextField(curDirName) { + + @SuppressWarnings("serial") // anonymous class + JTextField tmp1 = new JTextField(curDirName) { public Dimension getMaximumSize() { Dimension d = super.getMaximumSize(); d.height = getPreferredSize().height; return d; } }; + pathField = tmp1; pathField.setInheritsPopupMenu(true); l.setLabelFor(pathField); align(pathField); @@ -337,13 +341,15 @@ public class MotifFileChooserUI extends BasicFileChooserUI { align(l); leftPanel.add(l); - filterComboBox = new JComboBox<FileFilter>() { + @SuppressWarnings("serial") // anonymous class + JComboBox tmp2 = new JComboBox<FileFilter>() { public Dimension getMaximumSize() { Dimension d = super.getMaximumSize(); d.height = getPreferredSize().height; return d; } }; + filterComboBox = tmp2; filterComboBox.setInheritsPopupMenu(true); l.setLabelFor(filterComboBox); filterComboBoxModel = createFilterComboBoxModel(); @@ -413,13 +419,15 @@ public class MotifFileChooserUI extends BasicFileChooserUI { align(fileNameLabel); interior.add(fileNameLabel); - filenameTextField = new JTextField() { + @SuppressWarnings("serial") // anonymous class + JTextField tmp3 = new JTextField() { public Dimension getMaximumSize() { Dimension d = super.getMaximumSize(); d.height = getPreferredSize().height; return d; } }; + filenameTextField = tmp3; filenameTextField.setInheritsPopupMenu(true); fileNameLabel.setLabelFor(filenameTextField); filenameTextField.addActionListener(getApproveSelectionAction()); @@ -436,11 +444,13 @@ public class MotifFileChooserUI extends BasicFileChooserUI { buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.LINE_AXIS)); buttonPanel.add(Box.createGlue()); - approveButton = new JButton(getApproveButtonText(fc)) { + @SuppressWarnings("serial") // anonymous class + JButton tmp4 = new JButton(getApproveButtonText(fc)) { public Dimension getMaximumSize() { return new Dimension(MAX_SIZE.width, this.getPreferredSize().height); } }; + approveButton = tmp4; approveButton.setMnemonic(getApproveButtonMnemonic(fc)); approveButton.setToolTipText(getApproveButtonToolTipText(fc)); approveButton.setInheritsPopupMenu(true); @@ -450,6 +460,7 @@ public class MotifFileChooserUI extends BasicFileChooserUI { buttonPanel.add(approveButton); buttonPanel.add(Box.createGlue()); + @SuppressWarnings("serial") // anonymous class JButton updateButton = new JButton(updateButtonText) { public Dimension getMaximumSize() { return new Dimension(MAX_SIZE.width, this.getPreferredSize().height); @@ -464,6 +475,7 @@ public class MotifFileChooserUI extends BasicFileChooserUI { buttonPanel.add(updateButton); buttonPanel.add(Box.createGlue()); + @SuppressWarnings("serial") // anonymous class JButton cancelButton = new JButton(cancelButtonText) { public Dimension getMaximumSize() { return new Dimension(MAX_SIZE.width, this.getPreferredSize().height); @@ -478,6 +490,7 @@ public class MotifFileChooserUI extends BasicFileChooserUI { buttonPanel.add(cancelButton); buttonPanel.add(Box.createGlue()); + @SuppressWarnings("serial") // anonymous class JButton helpButton = new JButton(helpButtonText) { public Dimension getMaximumSize() { return new Dimension(MAX_SIZE.width, this.getPreferredSize().height); @@ -640,6 +653,7 @@ public class MotifFileChooserUI extends BasicFileChooserUI { c.setAlignmentY(JComponent.TOP_ALIGNMENT); } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class FileCellRenderer extends DefaultListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { @@ -651,6 +665,7 @@ public class MotifFileChooserUI extends BasicFileChooserUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class DirectoryCellRenderer extends DefaultListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { @@ -662,6 +677,7 @@ public class MotifFileChooserUI extends BasicFileChooserUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class MotifDirectoryListModel extends AbstractListModel<File> implements ListDataListener { public MotifDirectoryListModel() { getModel().addListDataListener(this); @@ -698,6 +714,7 @@ public class MotifFileChooserUI extends BasicFileChooserUI { } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class MotifFileListModel extends AbstractListModel<File> implements ListDataListener { public MotifFileListModel() { getModel().addListDataListener(this); @@ -759,6 +776,7 @@ public class MotifFileChooserUI extends BasicFileChooserUI { /** * Render different type sizes and styles. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public class FilterComboBoxRenderer extends DefaultListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, @@ -777,6 +795,7 @@ public class MotifFileChooserUI extends BasicFileChooserUI { /** * Data model for a type-face selection combo-box. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class FilterComboBoxModel extends AbstractListModel<FileFilter> implements ComboBoxModel<FileFilter>, PropertyChangeListener { protected FileFilter[] filters; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifIconFactory.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifIconFactory.java index 7c732af6ea2..394bb892327 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifIconFactory.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifIconFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -50,6 +50,7 @@ import java.io.Serializable; * 1.20 04/27/99 * @author Georges Saab */ +@SuppressWarnings("serial") // Same-version serialization only public class MotifIconFactory implements Serializable { private static Icon checkBoxIcon; @@ -90,6 +91,7 @@ public class MotifIconFactory implements Serializable return radioButtonIcon; } + @SuppressWarnings("serial") // Same-version serialization only private static class CheckBoxIcon implements Icon, UIResource, Serializable { final static int csize = 13; @@ -264,6 +266,7 @@ public class MotifIconFactory implements Serializable } } // end class CheckBoxIcon + @SuppressWarnings("serial") // Same-version serialization only private static class RadioButtonIcon implements Icon, UIResource, Serializable { private Color dot = UIManager.getColor("activeCaptionBorder"); private Color highlight = UIManager.getColor("controlHighlight"); @@ -355,6 +358,7 @@ public class MotifIconFactory implements Serializable } } // end class RadioButtonIcon + @SuppressWarnings("serial") // Same-version serialization only private static class MenuItemCheckIcon implements Icon, UIResource, Serializable { public void paintIcon(Component c,Graphics g, int x, int y) @@ -365,6 +369,7 @@ public class MotifIconFactory implements Serializable } // end class MenuItemCheckIcon + @SuppressWarnings("serial") // Same-version serialization only private static class MenuItemArrowIcon implements Icon, UIResource, Serializable { public void paintIcon(Component c,Graphics g, int x, int y) @@ -374,6 +379,7 @@ public class MotifIconFactory implements Serializable public int getIconHeight() { return 0; } } // end class MenuItemArrowIcon + @SuppressWarnings("serial") // Same-version serialization only private static class MenuArrowIcon implements Icon, UIResource, Serializable { private Color focus = UIManager.getColor("windowBorder"); diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifInternalFrameTitlePane.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifInternalFrameTitlePane.java index 03c9f23a9c5..0ed3021b693 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifInternalFrameTitlePane.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifInternalFrameTitlePane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +42,7 @@ import java.beans.PropertyVetoException; * * @since 1.3 */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class MotifInternalFrameTitlePane extends BasicInternalFrameTitlePane implements LayoutManager, ActionListener, PropertyChangeListener { @@ -232,6 +233,7 @@ public class MotifInternalFrameTitlePane static Dimension buttonDimension = new Dimension(BUTTON_SIZE, BUTTON_SIZE); + @SuppressWarnings("serial") // Superclass is not serializable across versions private abstract class FrameButton extends JButton { FrameButton() { @@ -276,6 +278,7 @@ public class MotifInternalFrameTitlePane } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class MinimizeButton extends FrameButton { public void paintComponent(Graphics g) { super.paintComponent(g); @@ -288,7 +291,8 @@ public class MotifInternalFrameTitlePane } } - private class MaximizeButton extends FrameButton { + @SuppressWarnings("serial") // Superclass is not serializable across versions + private class MaximizeButton extends FrameButton { public void paintComponent(Graphics g) { super.paintComponent(g); int max = BUTTON_SIZE - 5; @@ -302,6 +306,7 @@ public class MotifInternalFrameTitlePane } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class SystemButton extends FrameButton { public boolean isFocusTraversable() { return false; } public void requestFocus() {} @@ -317,6 +322,7 @@ public class MotifInternalFrameTitlePane } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class Title extends FrameButton { Title(String title) { super(); diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifInternalFrameUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifInternalFrameUI.java index dbfda306038..bcd1cacfde9 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifInternalFrameUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifInternalFrameUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -130,6 +130,7 @@ public class MotifInternalFrameUI extends BasicInternalFrameUI { } } + @SuppressWarnings("serial") // anonymous class protected void setupMenuOpenKey(){ super.setupMenuOpenKey(); ActionMap map = SwingUtilities.getUIActionMap(frame); @@ -149,6 +150,7 @@ public class MotifInternalFrameUI extends BasicInternalFrameUI { } } + @SuppressWarnings("serial") // anonymous class protected void setupMenuCloseKey(){ ActionMap map = SwingUtilities.getUIActionMap(frame); if (map != null) { diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java index 1438b57e670..116fe475be3 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java @@ -60,6 +60,7 @@ import sun.awt.OSInfo; * * @author unattributed */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class MotifLookAndFeel extends BasicLookAndFeel { public String getName() { diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifOptionPaneUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifOptionPaneUI.java index 8b111933542..ddba46c9cc9 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifOptionPaneUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifOptionPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -77,6 +77,7 @@ public class MotifOptionPaneUI extends BasicOptionPaneUI return null; } + @SuppressWarnings("serial") // anonymous class protected Container createSeparator() { return new JPanel() { diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifRadioButtonMenuItemUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifRadioButtonMenuItemUI.java index 6822b04f3c9..5065b0309d8 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifRadioButtonMenuItemUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifRadioButtonMenuItemUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -71,6 +71,7 @@ public class MotifRadioButtonMenuItemUI extends BasicRadioButtonMenuItemUI return new ChangeHandler(); } + @SuppressWarnings("serial") // Same-version serialization only protected class ChangeHandler implements ChangeListener, Serializable { public void stateChanged(ChangeEvent e) { JMenuItem c = (JMenuItem)e.getSource(); diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifScrollBarButton.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifScrollBarButton.java index 316d5210253..680a658a6c6 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifScrollBarButton.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifScrollBarButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -43,6 +43,7 @@ import java.awt.event.*; * version of Swing. A future release of Swing will provide support for * long term persistence. */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class MotifScrollBarButton extends BasicArrowButton { private Color darkShadow = UIManager.getColor("controlShadow"); diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifSplitPaneDivider.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifSplitPaneDivider.java index 1ce751ac19e..6040eb31323 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifSplitPaneDivider.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifSplitPaneDivider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -45,6 +45,7 @@ import javax.swing.plaf.basic.BasicSplitPaneDivider; * * @author Jeff Dinkins */ +@SuppressWarnings("serial") // Same-version serialization only public class MotifSplitPaneDivider extends BasicSplitPaneDivider { /** diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTextUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTextUI.java index 3bfad49441b..d198a942825 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTextUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTextUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -66,6 +66,7 @@ public class MotifTextUI { * version of Swing. A future release of Swing will provide support for * long term persistence. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class MotifCaret extends DefaultCaret implements UIResource { /** diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTreeCellRenderer.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTreeCellRenderer.java index 5db617c3184..fbddca81841 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTreeCellRenderer.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTreeCellRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * 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,7 @@ import java.util.*; * * @author Jeff Dinkins */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class MotifTreeCellRenderer extends DefaultTreeCellRenderer { static final int LEAF_SIZE = 13; @@ -69,6 +70,7 @@ public class MotifTreeCellRenderer extends DefaultTreeCellRenderer * version of Swing. A future release of Swing will provide support for * long term persistence. */ + @SuppressWarnings("serial") // Same-version serialization only public static class TreeLeafIcon implements Icon, Serializable { Color bg; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTreeUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTreeUI.java index d44886f5344..5977b807300 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTreeUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifTreeUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -91,6 +91,7 @@ public class MotifTreeUI extends BasicTreeUI * version of Swing. A future release of Swing will provide support for * long term persistence. */ + @SuppressWarnings("serial") // Same-version serialization only public static class MotifExpandedIcon implements Icon, Serializable { static Color bg; static Color fg; @@ -139,6 +140,7 @@ public class MotifTreeUI extends BasicTreeUI * version of Swing. A future release of Swing will provide support for * long term persistence. */ + @SuppressWarnings("serial") // Same-version serialization only public static class MotifCollapsedIcon extends MotifExpandedIcon { public static Icon createCollapsedIcon() { return new MotifCollapsedIcon(); diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/nimbus/NimbusLookAndFeel.java b/jdk/src/share/classes/com/sun/java/swing/plaf/nimbus/NimbusLookAndFeel.java index 26a0268f21d..f102f457d09 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/nimbus/NimbusLookAndFeel.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/nimbus/NimbusLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * 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,5 +30,6 @@ package com.sun.java.swing.plaf.nimbus; * @deprecated Use {@link javax.swing.plaf.nimbus.NimbusLookAndFeel} instead. */ @Deprecated +@SuppressWarnings("serial") // Superclass not serializable public class NimbusLookAndFeel extends javax.swing.plaf.nimbus.NimbusLookAndFeel { } diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsBorders.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsBorders.java index 286c3a516bd..ca840ca0c42 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsBorders.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsBorders.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -114,6 +114,7 @@ public class WindowsBorders { return internalFrameBorder; } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class ProgressBarBorder extends AbstractBorder implements UIResource { protected Color shadow; protected Color highlight; @@ -144,6 +145,7 @@ public class WindowsBorders { * <p> * @since 1.4 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class ToolBarBorder extends AbstractBorder implements UIResource, SwingConstants { protected Color shadow; protected Color highlight; @@ -247,6 +249,7 @@ public class WindowsBorders { * This class is an implementation of a dashed border. * @since 1.4 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class DashedBorder extends LineBorder implements UIResource { public DashedBorder(Color color) { super(color); @@ -272,6 +275,7 @@ public class WindowsBorders { * A dashed border that paints itself in the complementary color * of the component's background color. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class ComplementDashedBorder extends LineBorder implements UIResource { private Color origColor; private Color paintColor; @@ -297,6 +301,7 @@ public class WindowsBorders { * This class is an implementation of the InternalFrameLine border. * @since 1.4 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class InternalFrameLineBorder extends LineBorder implements UIResource { protected Color activeColor; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsClassicLookAndFeel.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsClassicLookAndFeel.java index 672ea76b3f5..5141fa399da 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsClassicLookAndFeel.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsClassicLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * 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 @@ package com.sun.java.swing.plaf.windows; * * @since 1.5 */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class WindowsClassicLookAndFeel extends WindowsLookAndFeel { public String getName() { return "Windows Classic"; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsComboBoxUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsComboBoxUI.java index 2656d1de6a8..348b28a1a7b 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsComboBoxUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsComboBoxUI.java @@ -407,6 +407,7 @@ public class WindowsComboBoxUI extends BasicComboBoxUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class XPComboBoxButton extends XPStyle.GlyphButton { public XPComboBoxButton() { super(null, @@ -459,6 +460,7 @@ public class WindowsComboBoxUI extends BasicComboBoxUI { * @deprecated As of Java 2 platform v1.4. */ @Deprecated + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class WindowsComboPopup extends BasicComboPopup { public WindowsComboPopup( JComboBox cBox ) { @@ -510,6 +512,7 @@ public class WindowsComboBoxUI extends BasicComboBoxUI { * Subclassed to set opacity {@code false} on the renderer * and to show border for focused cells. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class WindowsComboBoxRenderer extends BasicComboBoxRenderer.UIResource { private static final Object BORDER_KEY diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java index a0c794559bc..16eef680706 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -51,6 +51,7 @@ import java.lang.ref.WeakReference; * @see javax.swing.DefaultDesktopManager * @author Thomas Ball */ +@SuppressWarnings("serial") // JDK-implementation class public class WindowsDesktopManager extends DefaultDesktopManager implements java.io.Serializable, javax.swing.plaf.UIResource { diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java index 48b5010946a..0def92eba15 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -225,7 +225,8 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { fc.add(topPanel, BorderLayout.NORTH); // ComboBox Label - lookInLabel = new JLabel(lookInLabelText, JLabel.TRAILING) { + @SuppressWarnings("serial") // anonymous class + JLabel tmp1 = new JLabel(lookInLabelText, JLabel.TRAILING) { public Dimension getPreferredSize() { return getMinimumSize(); } @@ -238,6 +239,7 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { return d; } }; + lookInLabel = tmp1; lookInLabel.setDisplayedMnemonic(lookInLabelMnemonic); lookInLabel.setAlignmentX(JComponent.LEFT_ALIGNMENT); lookInLabel.setAlignmentY(JComponent.CENTER_ALIGNMENT); @@ -245,7 +247,8 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { topPanel.add(Box.createRigidArea(new Dimension(8,0))); // CurrentDir ComboBox - directoryComboBox = new JComboBox<File>() { + @SuppressWarnings("serial") // anonymous class + JComboBox<File> tmp2 = new JComboBox<File>() { public Dimension getMinimumSize() { Dimension d = super.getMinimumSize(); d.width = 60; @@ -259,6 +262,7 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { return d; } }; + directoryComboBox = tmp2; directoryComboBox.putClientProperty( "JComboBox.lightweightKeyboardNavigation", "Lightweight" ); lookInLabel.setLabelFor(directoryComboBox); directoryComboBoxModel = createDirectoryComboBoxModel(fc); @@ -416,12 +420,13 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { fileAndFilterPanel.add(Box.createRigidArea(vstrut8)); fileAndFilterPanel.setLayout(new BoxLayout(fileAndFilterPanel, BoxLayout.Y_AXIS)); - - filenameTextField = new JTextField(35) { + @SuppressWarnings("serial") // anonymous class + JTextField tmp3 = new JTextField(35) { public Dimension getMaximumSize() { return new Dimension(Short.MAX_VALUE, super.getPreferredSize().height); } }; + filenameTextField = tmp3; fileNameLabel.setLabelFor(filenameTextField); filenameTextField.addFocusListener( @@ -456,12 +461,14 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { // buttons getButtonPanel().setLayout(new BoxLayout(getButtonPanel(), BoxLayout.Y_AXIS)); - approveButton = new JButton(getApproveButtonText(fc)) { + @SuppressWarnings("serial") // anonymous class + JButton tmp4 = new JButton(getApproveButtonText(fc)) { public Dimension getMaximumSize() { return approveButton.getPreferredSize().width > cancelButton.getPreferredSize().width ? approveButton.getPreferredSize() : cancelButton.getPreferredSize(); } }; + approveButton = tmp4; Insets buttonMargin = approveButton.getMargin(); buttonMargin = new InsetsUIResource(buttonMargin.top, buttonMargin.left + 5, buttonMargin.bottom, buttonMargin.right + 5); @@ -473,12 +480,14 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { getButtonPanel().add(approveButton); getButtonPanel().add(Box.createRigidArea(vstrut4)); - cancelButton = new JButton(cancelButtonText) { + @SuppressWarnings("serial") // anonymous class + JButton tmp5 = new JButton(cancelButtonText) { public Dimension getMaximumSize() { return approveButton.getPreferredSize().width > cancelButton.getPreferredSize().width ? approveButton.getPreferredSize() : cancelButton.getPreferredSize(); } }; + cancelButton = tmp5; cancelButton.setMargin(buttonMargin); cancelButton.setToolTipText(cancelButtonToolTipText); cancelButton.addActionListener(getCancelSelectionAction()); @@ -589,6 +598,7 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { } // Obsolete class, not used in this version. + @SuppressWarnings("serial") protected class WindowsNewFolderAction extends NewFolderAction { } @@ -597,6 +607,7 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { } // Obsolete class, not used in this version. + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class FileRenderer extends DefaultListCellRenderer { } @@ -917,6 +928,7 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { return new DirectoryComboBoxRenderer(); } + @SuppressWarnings("serial") // anonymous class private static JButton createToolButton(Action a, Icon defaultIcon, String toolTipText, String accessibleName) { final JButton result = new JButton(a); @@ -979,6 +991,7 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { // // Renderer for DirectoryComboBox // + @SuppressWarnings("serial") // Superclass is not serializable across versions class DirectoryComboBoxRenderer extends DefaultListCellRenderer { IndentIcon ii = new IndentIcon(); public Component getListCellRendererComponent(JList list, Object value, @@ -1036,6 +1049,7 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { /** * Data model for a type-face selection combo-box. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class DirectoryComboBoxModel extends AbstractListModel<File> implements ComboBoxModel<File> { Vector<File> directories = new Vector<File>(); int[] depths = null; @@ -1168,6 +1182,7 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { /** * Render different type sizes and styles. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public class FilterComboBoxRenderer extends DefaultListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, @@ -1193,6 +1208,7 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { /** * Data model for a type-face selection combo-box. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class FilterComboBoxModel extends AbstractListModel<FileFilter> implements ComboBoxModel<FileFilter>, PropertyChangeListener { protected FileFilter[] filters; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsIconFactory.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsIconFactory.java index 3bc26eb46c3..0a4cfce44bf 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsIconFactory.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsIconFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -51,6 +51,7 @@ import sun.swing.MenuItemCheckIconFactory; * @author Georges Saab * @author Rich Schiavi */ +@SuppressWarnings("serial") // Same-version serialization only public class WindowsIconFactory implements Serializable { private static Icon frame_closeIcon; @@ -160,6 +161,7 @@ public class WindowsIconFactory implements Serializable } + @SuppressWarnings("serial") // Same-version serialization only private static class FrameButtonIcon implements Icon, Serializable { private Part part; @@ -296,6 +298,7 @@ public class WindowsIconFactory implements Serializable + @SuppressWarnings("serial") // Same-version serialization only private static class ResizeIcon implements Icon, Serializable { public void paintIcon(Component c, Graphics g, int x, int y) { g.setColor(UIManager.getColor("InternalFrame.resizeIconHighlight")); @@ -315,6 +318,7 @@ public class WindowsIconFactory implements Serializable public int getIconHeight() { return 13; } }; + @SuppressWarnings("serial") // Same-version serialization only private static class CheckBoxIcon implements Icon, Serializable { final static int csize = 13; @@ -428,6 +432,7 @@ public class WindowsIconFactory implements Serializable } } + @SuppressWarnings("serial") // Same-version serialization only private static class RadioButtonIcon implements Icon, UIResource, Serializable { public void paintIcon(Component c, Graphics g, int x, int y) { @@ -542,6 +547,7 @@ public class WindowsIconFactory implements Serializable } // end class RadioButtonIcon + @SuppressWarnings("serial") // Same-version serialization only private static class CheckBoxMenuItemIcon implements Icon, UIResource, Serializable { public void paintIcon(Component c, Graphics g, int x, int y) { @@ -567,6 +573,7 @@ public class WindowsIconFactory implements Serializable } // End class CheckBoxMenuItemIcon + @SuppressWarnings("serial") // Same-version serialization only private static class RadioButtonMenuItemIcon implements Icon, UIResource, Serializable { public void paintIcon(Component c, Graphics g, int x, int y) { @@ -583,6 +590,7 @@ public class WindowsIconFactory implements Serializable } // End class RadioButtonMenuItemIcon + @SuppressWarnings("serial") // Same-version serialization only private static class MenuItemCheckIcon implements Icon, UIResource, Serializable{ public void paintIcon(Component c, Graphics g, int x, int y) { /* For debugging: @@ -597,6 +605,7 @@ public class WindowsIconFactory implements Serializable } // End class MenuItemCheckIcon + @SuppressWarnings("serial") // Same-version serialization only private static class MenuItemArrowIcon implements Icon, UIResource, Serializable { public void paintIcon(Component c, Graphics g, int x, int y) { /* For debugging: @@ -611,6 +620,7 @@ public class WindowsIconFactory implements Serializable } // End class MenuItemArrowIcon + @SuppressWarnings("serial") // Same-version serialization only private static class MenuArrowIcon implements Icon, UIResource, Serializable { public void paintIcon(Component c, Graphics g, int x, int y) { if (WindowsMenuItemUI.isVistaPainting()) { @@ -722,6 +732,7 @@ public class WindowsIconFactory implements Serializable * JRadioButtonMenuItem. * Note: to be used on Vista only. */ + @SuppressWarnings("serial") // Same-version serialization only private static class VistaMenuItemCheckIcon implements Icon, UIResource, Serializable { diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java index d3ccff28323..c654c5a7046 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java @@ -41,6 +41,7 @@ import java.beans.PropertyVetoException; import static com.sun.java.swing.plaf.windows.TMSchema.*; import static com.sun.java.swing.plaf.windows.XPStyle.Skin; +@SuppressWarnings("serial") // Superclass is not serializable across versions public class WindowsInternalFrameTitlePane extends BasicInternalFrameTitlePane { private Color selectedTitleGradientColor; private Color notSelectedTitleGradientColor; @@ -267,7 +268,8 @@ public class WindowsInternalFrameTitlePane extends BasicInternalFrameTitlePane { systemPopupMenu = new JPopupMenu(); addSystemMenuItems(systemPopupMenu); enableActions(); - systemLabel = new JLabel(frame.getFrameIcon()) { + @SuppressWarnings("serial") // anonymous class + JLabel tmp = new JLabel(frame.getFrameIcon()) { protected void paintComponent(Graphics g) { int x = 0; int y = 0; @@ -303,6 +305,7 @@ public class WindowsInternalFrameTitlePane extends BasicInternalFrameTitlePane { g.dispose(); } }; + systemLabel = tmp; systemLabel.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2 && frame.isClosable() && diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameUI.java index a61270dc22c..66b038d2ec5 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -88,6 +88,7 @@ public class WindowsInternalFrameUI extends BasicInternalFrameUI return titlePane; } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class XPBorder extends AbstractBorder { private Skin leftSkin = xp.getSkin(frame, Part.WP_FRAMELEFT); private Skin rightSkin = xp.getSkin(frame, Part.WP_FRAMERIGHT); diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java index d063e23a660..00530fa19ea 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -52,6 +52,7 @@ import javax.swing.*; import javax.swing.plaf.basic.*; import javax.swing.border.*; import javax.swing.text.DefaultEditorKit; +import static javax.swing.UIDefaults.LazyValue; import java.awt.Font; import java.awt.Color; @@ -67,9 +68,10 @@ import sun.security.action.GetPropertyAction; import sun.swing.DefaultLayoutStyle; import sun.swing.ImageIconUIResource; -import sun.swing.SwingLazyValue; +import sun.swing.icon.SortArrowIcon; import sun.swing.SwingUtilities2; import sun.swing.StringUIClientPropertyKey; +import sun.swing.plaf.windows.ClassicSortArrowIcon; import static com.sun.java.swing.plaf.windows.TMSchema.*; import static com.sun.java.swing.plaf.windows.XPStyle.Skin; @@ -90,6 +92,7 @@ import com.sun.java.swing.plaf.windows.WindowsIconFactory.VistaMenuItemCheckIcon * * @author unattributed */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class WindowsLookAndFeel extends BasicLookAndFeel { /** @@ -296,27 +299,11 @@ public class WindowsLookAndFeel extends BasicLookAndFeel initResourceBundle(table); // *** Shared Fonts - Integer twelve = Integer.valueOf(12); - Integer fontPlain = Integer.valueOf(Font.PLAIN); - Integer fontBold = Integer.valueOf(Font.BOLD); + LazyValue dialogPlain12 = t -> new FontUIResource(Font.DIALOG, Font.PLAIN, 12); - Object dialogPlain12 = new SwingLazyValue( - "javax.swing.plaf.FontUIResource", - null, - new Object[] {Font.DIALOG, fontPlain, twelve}); - - Object sansSerifPlain12 = new SwingLazyValue( - "javax.swing.plaf.FontUIResource", - null, - new Object[] {Font.SANS_SERIF, fontPlain, twelve}); - Object monospacedPlain12 = new SwingLazyValue( - "javax.swing.plaf.FontUIResource", - null, - new Object[] {Font.MONOSPACED, fontPlain, twelve}); - Object dialogBold12 = new SwingLazyValue( - "javax.swing.plaf.FontUIResource", - null, - new Object[] {Font.DIALOG, fontBold, twelve}); + LazyValue sansSerifPlain12 = t -> new FontUIResource(Font.SANS_SERIF, Font.PLAIN, 12); + LazyValue monospacedPlain12 = t -> new FontUIResource(Font.MONOSPACED, Font.PLAIN, 12); + LazyValue dialogBold12 = t -> new FontUIResource(Font.DIALOG, Font.BOLD, 12); // *** Colors // XXX - some of these doens't seem to be used @@ -757,9 +744,7 @@ public class WindowsLookAndFeel extends BasicLookAndFeel "FileChooser.listViewBackground", new XPColorValue(Part.LVP_LISTVIEW, null, Prop.FILLCOLOR, WindowBackgroundColor), "FileChooser.listViewBorder", new XPBorderValue(Part.LVP_LISTVIEW, - new SwingLazyValue( - "javax.swing.plaf.BorderUIResource", - "getLoweredBevelBorderUIResource")), + (LazyValue) t -> BorderUIResource.getLoweredBevelBorderUIResource()), "FileChooser.listViewIcon", new LazyWindowsIcon("fileChooserIcon ListView", "icons/ListView.gif"), "FileChooser.listViewWindowsStyle", Boolean.TRUE, @@ -849,15 +834,12 @@ public class WindowsLookAndFeel extends BasicLookAndFeel "InternalFrame.closeIcon", WindowsIconFactory.createFrameCloseIcon(), "InternalFrame.icon", - new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsInternalFrameTitlePane$ScalableIconUIResource", + (LazyValue) t -> new Object[]{ // The constructor takes one arg: an array of UIDefaults.LazyValue // representing the icons - new Object[][] { { SwingUtilities2.makeIcon(getClass(), BasicLookAndFeel.class, "icons/JavaCup16.png"), SwingUtilities2.makeIcon(getClass(), WindowsLookAndFeel.class, "icons/JavaCup32.png") - } }), - + }, // Internal Frame Auditory Cue Mappings "InternalFrame.closeSound", "win.sound.close", "InternalFrame.maximizeSound", "win.sound.maximize", @@ -1715,9 +1697,7 @@ public class WindowsLookAndFeel extends BasicLookAndFeel String POPUP_MENU_BORDER = "PopupMenu.border"; Object popupMenuBorder = new XPBorderValue(Part.MENU, - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getInternalFrameBorder"), + (LazyValue) t -> BasicBorders.getInternalFrameBorder(), BorderFactory.createEmptyBorder(2, 2, 2, 2)); table.put(POPUP_MENU_BORDER, popupMenuBorder); /* END handling menus for Vista */ @@ -1725,14 +1705,10 @@ public class WindowsLookAndFeel extends BasicLookAndFeel /* START table handling for Vista */ table.put("Table.ascendingSortIcon", new XPValue( new SkinIcon(Part.HP_HEADERSORTARROW, State.SORTEDDOWN), - new SwingLazyValue( - "sun.swing.plaf.windows.ClassicSortArrowIcon", - null, new Object[] { Boolean.TRUE }))); + (LazyValue) t -> new ClassicSortArrowIcon(true))); table.put("Table.descendingSortIcon", new XPValue( new SkinIcon(Part.HP_HEADERSORTARROW, State.SORTEDUP), - new SwingLazyValue( - "sun.swing.plaf.windows.ClassicSortArrowIcon", - null, new Object[] { Boolean.FALSE }))); + (LazyValue) t -> new ClassicSortArrowIcon(false))); /* END table handling for Vista */ } @@ -1757,15 +1733,11 @@ public class WindowsLookAndFeel extends BasicLookAndFeel Object buttonBorder = new XPBorderValue(Part.BP_PUSHBUTTON, - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getButtonBorder")); + (LazyValue) t -> BasicBorders.getButtonBorder()); Object textFieldBorder = new XPBorderValue(Part.EP_EDIT, - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getTextFieldBorder")); + (LazyValue) t -> BasicBorders.getTextFieldBorder()); Object textFieldMargin = new XPValue(new InsetsUIResource(2, 2, 2, 2), @@ -1782,44 +1754,27 @@ public class WindowsLookAndFeel extends BasicLookAndFeel Object comboBoxBorder = new XPBorderValue(Part.CP_COMBOBOX, textFieldBorder); // For focus rectangle for cells and trees. - Object focusCellHighlightBorder = new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsBorders", - "getFocusCellHighlightBorder"); + LazyValue focusCellHighlightBorder = t -> WindowsBorders.getFocusCellHighlightBorder(); - Object etchedBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource", - "getEtchedBorderUIResource"); + LazyValue etchedBorder = t -> BorderUIResource.getEtchedBorderUIResource(); - Object internalFrameBorder = new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsBorders", - "getInternalFrameBorder"); + LazyValue internalFrameBorder = t -> WindowsBorders.getInternalFrameBorder(); - Object loweredBevelBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource", - "getLoweredBevelBorderUIResource"); + LazyValue loweredBevelBorder = t -> BorderUIResource.getLoweredBevelBorderUIResource(); - Object marginBorder = new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders$MarginBorder"); + LazyValue marginBorder = t -> new BasicBorders.MarginBorder(); - Object menuBarBorder = new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getMenuBarBorder"); + LazyValue menuBarBorder = t -> BasicBorders.getMenuBarBorder(); Object popupMenuBorder = new XPBorderValue(Part.MENU, - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getInternalFrameBorder")); + (LazyValue) t -> BasicBorders.getInternalFrameBorder()); // *** ProgressBar - Object progressBarBorder = new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsBorders", - "getProgressBarBorder"); + LazyValue progressBarBorder = t -> WindowsBorders.getProgressBarBorder(); - Object radioButtonBorder = new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getRadioButtonBorder"); + LazyValue radioButtonBorder = t -> BasicBorders.getRadioButtonBorder(); Object scrollPaneBorder = new XPBorderValue(Part.LBP_LISTBOX, textFieldBorder); @@ -1827,45 +1782,27 @@ public class WindowsLookAndFeel extends BasicLookAndFeel Object tableScrollPaneBorder = new XPBorderValue(Part.LBP_LISTBOX, loweredBevelBorder); - Object tableHeaderBorder = new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsBorders", - "getTableHeaderBorder"); + LazyValue tableHeaderBorder = t -> WindowsBorders.getTableHeaderBorder(); // *** ToolBar - Object toolBarBorder = new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsBorders", - "getToolBarBorder"); + LazyValue toolBarBorder = t -> WindowsBorders.getToolBarBorder(); // *** ToolTips - Object toolTipBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource", - "getBlackLineBorderUIResource"); + LazyValue toolTipBorder = t -> BorderUIResource.getBlackLineBorderUIResource(); - Object checkBoxIcon = new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsIconFactory", - "getCheckBoxIcon"); + LazyValue checkBoxIcon = t -> WindowsIconFactory.getCheckBoxIcon(); - Object radioButtonIcon = new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsIconFactory", - "getRadioButtonIcon"); + LazyValue radioButtonIcon = t -> WindowsIconFactory.getRadioButtonIcon(); - Object radioButtonMenuItemIcon = new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsIconFactory", - "getRadioButtonMenuItemIcon"); + LazyValue radioButtonMenuItemIcon = t -> WindowsIconFactory.getRadioButtonMenuItemIcon(); - Object menuItemCheckIcon = new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsIconFactory", - "getMenuItemCheckIcon"); + LazyValue menuItemCheckIcon = t -> WindowsIconFactory.getMenuItemCheckIcon(); - Object menuItemArrowIcon = new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsIconFactory", - "getMenuItemArrowIcon"); + LazyValue menuItemArrowIcon = t -> WindowsIconFactory.getMenuItemArrowIcon(); - Object menuArrowIcon = new SwingLazyValue( - "com.sun.java.swing.plaf.windows.WindowsIconFactory", - "getMenuArrowIcon"); + LazyValue menuArrowIcon = t -> WindowsIconFactory.getMenuArrowIcon(); Object[] lazyDefaults = { @@ -1910,21 +1847,11 @@ public class WindowsLookAndFeel extends BasicLookAndFeel "InternalFrame.layoutTitlePaneAtOrigin", new XPValue(Boolean.TRUE, Boolean.FALSE), "Table.ascendingSortIcon", new XPValue( - new SwingLazyValue( - "sun.swing.icon.SortArrowIcon", - null, new Object[] { Boolean.TRUE, - "Table.sortIconColor" }), - new SwingLazyValue( - "sun.swing.plaf.windows.ClassicSortArrowIcon", - null, new Object[] { Boolean.TRUE })), + (LazyValue) t -> new SortArrowIcon(true,"Table.sortIconColor"), + (LazyValue) t -> new ClassicSortArrowIcon(true)), "Table.descendingSortIcon", new XPValue( - new SwingLazyValue( - "sun.swing.icon.SortArrowIcon", - null, new Object[] { Boolean.FALSE, - "Table.sortIconColor" }), - new SwingLazyValue( - "sun.swing.plaf.windows.ClassicSortArrowIcon", - null, new Object[] { Boolean.FALSE })), + (LazyValue) t -> new SortArrowIcon(false,"Table.sortIconColor"), + (LazyValue) t -> new ClassicSortArrowIcon(false)), }; return lazyDefaults; @@ -2092,6 +2019,7 @@ public class WindowsLookAndFeel extends BasicLookAndFeel * * @since 1.4 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class AudioAction extends AbstractAction { private Runnable audioRunnable; private String audioResource; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsMenuBarUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsMenuBarUI.java index c56b83bef92..73dcf802e33 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsMenuBarUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsMenuBarUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -134,6 +134,7 @@ public class WindowsMenuBarUI extends BasicMenuBarUI * Action that activates the menu (e.g. when F10 is pressed). * Unlike BasicMenuBarUI.TakeFocus, this Action will not show menu popup. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class TakeFocus extends AbstractAction { public void actionPerformed(ActionEvent e) { JMenuBar menuBar = (JMenuBar)e.getSource(); diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsPopupWindow.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsPopupWindow.java index 9534346ac8e..61330225c82 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsPopupWindow.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsPopupWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +49,7 @@ import java.awt.Graphics; * * @author Amy Fowler */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class WindowsPopupWindow extends JWindow { static final int UNDEFINED_WINDOW_TYPE = 0; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java index 2052617c7d6..279bdb72b79 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -273,6 +273,7 @@ public class WindowsScrollBarUI extends BasicScrollBarUI { * document up/down. It differs from BasicArrowButton in that the * preferred size is always a square. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class WindowsArrowButton extends BasicArrowButton { public WindowsArrowButton(int direction, Color background, Color shadow, diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsSplitPaneDivider.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsSplitPaneDivider.java index 4f272a530d3..327162e62bf 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsSplitPaneDivider.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsSplitPaneDivider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,6 +44,7 @@ import javax.swing.plaf.basic.BasicSplitPaneDivider; * * @author Jeff Dinkins */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class WindowsSplitPaneDivider extends BasicSplitPaneDivider { diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java index 391f019ae6f..c5101177f40 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -71,6 +71,7 @@ public class WindowsTableHeaderUI extends BasicTableHeaderUI { } } + @SuppressWarnings("serial") // JDK-implementation class private class XPDefaultRenderer extends DefaultTableCellHeaderRenderer { Skin skin; boolean isSelected, hasFocus, hasRollover; diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTextFieldUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTextFieldUI.java index 420b742cb1d..917f7a4ec27 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTextFieldUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTextFieldUI.java @@ -100,6 +100,7 @@ public class WindowsTextFieldUI extends BasicTextFieldUI * WindowsFieldCaret has different scrolling behavior than * DefaultCaret. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class WindowsFieldCaret extends DefaultCaret implements UIResource { public WindowsFieldCaret() { diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTextUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTextUI.java index a4e0b805597..04c773c4e6c 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTextUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTextUI.java @@ -62,6 +62,7 @@ public abstract class WindowsTextUI extends BasicTextUI { static LayeredHighlighter.LayerPainter WindowsPainter = new WindowsHighlightPainter(null); /* public */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class WindowsCaret extends DefaultCaret implements UIResource { /** diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java index 63c817db28a..d532090669c 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java @@ -127,6 +127,7 @@ public class WindowsTreeUI extends BasicTreeUI { * version of Swing. A future release of Swing will provide support for * long term persistence. */ + @SuppressWarnings("serial") // Same-version serialization only public static class ExpandedIcon implements Icon, Serializable { static public Icon createExpandedIcon() { @@ -179,6 +180,7 @@ public class WindowsTreeUI extends BasicTreeUI { * version of Swing. A future release of Swing will provide support for * long term persistence. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class CollapsedIcon extends ExpandedIcon { static public Icon createCollapsedIcon() { return new CollapsedIcon(); @@ -195,6 +197,7 @@ public class WindowsTreeUI extends BasicTreeUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public class WindowsTreeCellRenderer extends DefaultTreeCellRenderer { /** diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/XPStyle.java b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/XPStyle.java index 7379533adef..bc1404e9227 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/XPStyle.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/XPStyle.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -305,6 +305,7 @@ class XPStyle { return border; } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class XPFillBorder extends LineBorder implements UIResource { XPFillBorder(Color color, int thickness) { super(color, thickness); @@ -333,6 +334,7 @@ class XPStyle { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class XPStatefulFillBorder extends XPFillBorder { private final Part part; private final Prop prop; @@ -360,6 +362,7 @@ class XPStyle { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class XPImageBorder extends AbstractBorder implements UIResource { Skin skin; @@ -399,6 +402,7 @@ class XPStyle { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class XPEmptyBorder extends EmptyBorder implements UIResource { XPEmptyBorder(Insets m) { super(m.top+2, m.left+2, m.bottom+2, m.right+2); @@ -674,6 +678,7 @@ class XPStyle { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions static class GlyphButton extends JButton { private Skin skin; diff --git a/jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java b/jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java index 89d325d695c..076b49cec63 100644 --- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java +++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java @@ -55,6 +55,9 @@ import java.lang.reflect.InvocationTargetException; import java.security.AccessController; import javax.management.AttributeNotFoundException; import javax.management.openmbean.CompositeData; + +import sun.misc.JavaBeansIntrospectorAccess; +import sun.misc.SharedSecrets; import sun.reflect.misc.MethodUtil; import sun.reflect.misc.ReflectUtil; @@ -549,16 +552,9 @@ public class Introspector { // Java Beans introspection // Class<?> clazz = complex.getClass(); - Method readMethod = null; - if (BeansHelper.isAvailable()) { - Object bi = BeansHelper.getBeanInfo(clazz); - Object[] pds = BeansHelper.getPropertyDescriptors(bi); - for (Object pd: pds) { - if (BeansHelper.getPropertyName(pd).equals(element)) { - readMethod = BeansHelper.getReadMethod(pd); - break; - } - } + Method readMethod; + if (BeansIntrospector.isAvailable()) { + readMethod = BeansIntrospector.getReadMethod(clazz, element); } else { // Java Beans not available so use simple introspection // to locate method @@ -583,6 +579,30 @@ public class Introspector { } } + /** + * Provides access to java.beans.Introspector if available. + */ + private static class BeansIntrospector { + private static final JavaBeansIntrospectorAccess JBIA; + static { + // ensure that java.beans.Introspector is initialized (if present) + try { + Class.forName("java.beans.Introspector", true, + BeansIntrospector.class.getClassLoader()); + } catch (ClassNotFoundException ignore) { } + + JBIA = SharedSecrets.getJavaBeansIntrospectorAccess(); + } + + static boolean isAvailable() { + return JBIA != null; + } + + static Method getReadMethod(Class<?> clazz, String property) throws Exception { + return JBIA.getReadMethod(clazz, property); + } + } + /** * A simple introspector that uses reflection to analyze a class and * identify its "getter" methods. This class is intended for use only when @@ -696,121 +716,4 @@ public class Introspector { return null; } } - - /** - * A class that provides access to the JavaBeans Introspector and - * PropertyDescriptors without creating a static dependency on java.beans. - */ - private static class BeansHelper { - private static final Class<?> introspectorClass = - getClass("java.beans.Introspector"); - private static final Class<?> beanInfoClass = - (introspectorClass == null) ? null : getClass("java.beans.BeanInfo"); - private static final Class<?> getPropertyDescriptorClass = - (beanInfoClass == null) ? null : getClass("java.beans.PropertyDescriptor"); - - private static final Method getBeanInfo = - getMethod(introspectorClass, "getBeanInfo", Class.class); - private static final Method getPropertyDescriptors = - getMethod(beanInfoClass, "getPropertyDescriptors"); - private static final Method getPropertyName = - getMethod(getPropertyDescriptorClass, "getName"); - private static final Method getReadMethod = - getMethod(getPropertyDescriptorClass, "getReadMethod"); - - private static Class<?> getClass(String name) { - try { - return Class.forName(name, true, null); - } catch (ClassNotFoundException e) { - return null; - } - } - private static Method getMethod(Class<?> clazz, - String name, - Class<?>... paramTypes) - { - if (clazz != null) { - try { - return clazz.getMethod(name, paramTypes); - } catch (NoSuchMethodException e) { - throw new AssertionError(e); - } - } else { - return null; - } - } - - private BeansHelper() { } - - /** - * Returns {@code true} if java.beans is available. - */ - static boolean isAvailable() { - return introspectorClass != null; - } - - /** - * Invokes java.beans.Introspector.getBeanInfo(Class) - */ - static Object getBeanInfo(Class<?> clazz) throws Exception { - try { - return getBeanInfo.invoke(null, clazz); - } catch (InvocationTargetException e) { - Throwable cause = e.getCause(); - if (cause instanceof Exception) - throw (Exception)cause; - throw new AssertionError(e); - } catch (IllegalAccessException iae) { - throw new AssertionError(iae); - } - } - - /** - * Invokes java.beans.BeanInfo.getPropertyDescriptors() - */ - static Object[] getPropertyDescriptors(Object bi) { - try { - return (Object[])getPropertyDescriptors.invoke(bi); - } catch (InvocationTargetException e) { - Throwable cause = e.getCause(); - if (cause instanceof RuntimeException) - throw (RuntimeException)cause; - throw new AssertionError(e); - } catch (IllegalAccessException iae) { - throw new AssertionError(iae); - } - } - - /** - * Invokes java.beans.PropertyDescriptor.getName() - */ - static String getPropertyName(Object pd) { - try { - return (String)getPropertyName.invoke(pd); - } catch (InvocationTargetException e) { - Throwable cause = e.getCause(); - if (cause instanceof RuntimeException) - throw (RuntimeException)cause; - throw new AssertionError(e); - } catch (IllegalAccessException iae) { - throw new AssertionError(iae); - } - } - - /** - * Invokes java.beans.PropertyDescriptor.getReadMethod() - */ - static Method getReadMethod(Object pd) { - try { - return (Method)getReadMethod.invoke(pd); - } catch (InvocationTargetException e) { - Throwable cause = e.getCause(); - if (cause instanceof RuntimeException) - throw (RuntimeException)cause; - throw new AssertionError(e); - } catch (IllegalAccessException iae) { - throw new AssertionError(iae); - } - } - } } diff --git a/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java b/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java index 305672b99a0..68379a7ebbd 100644 --- a/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java +++ b/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java @@ -787,6 +787,14 @@ public abstract class ClientNotifForwarder { if (!reconnected) { try { NotificationResult nr = fetchNotifs(-1, 0, 0); + + if (state != STOPPED) { // JDK-8038940 + // reconnection must happen during + // fetchNotifs(-1, 0, 0), and a new + // thread takes over the fetching job + return; + } + clientSequenceNumber = nr.getNextSequenceNumber(); } catch (ClassNotFoundException e) { // can't happen diff --git a/jdk/src/share/classes/java/awt/PointerInfo.java b/jdk/src/share/classes/java/awt/PointerInfo.java index 9418d3d134f..9b51d6ead36 100644 --- a/jdk/src/share/classes/java/awt/PointerInfo.java +++ b/jdk/src/share/classes/java/awt/PointerInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * 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,62 +23,59 @@ * questions. */ + package java.awt; /** * A class that describes the pointer position. - * It provides the <code>GraphicsDevice</code> where the - * pointer is and the <code>Point</code> that represents - * the coordinates of the pointer. + * It provides the {@code GraphicsDevice} where the pointer is and + * the {@code Point} that represents the coordinates of the pointer. * <p> * Instances of this class should be obtained via * {@link MouseInfo#getPointerInfo}. - * The <code>PointerInfo</code> instance is not updated dynamically - * as the mouse moves. To get the updated location, you must call + * The {@code PointerInfo} instance is not updated dynamically as the mouse + * moves. To get the updated location, you must call * {@link MouseInfo#getPointerInfo} again. * * @see MouseInfo#getPointerInfo - * @author Roman Poborchiy - * @since 1.5 + * @author Roman Poborchiy + * @since 1.5 */ - public class PointerInfo { - private GraphicsDevice device; - private Point location; + private final GraphicsDevice device; + private final Point location; /** * Package-private constructor to prevent instantiation. */ - PointerInfo(GraphicsDevice device, Point location) { + PointerInfo(final GraphicsDevice device, final Point location) { this.device = device; this.location = location; } /** - * Returns the <code>GraphicsDevice</code> where the mouse pointer - * was at the moment this <code>PointerInfo</code> was created. + * Returns the {@code GraphicsDevice} where the mouse pointer was at the + * moment this {@code PointerInfo} was created. * - * @return <code>GraphicsDevice</code> corresponding to the pointer - * @since 1.5 + * @return {@code GraphicsDevice} corresponding to the pointer + * @since 1.5 */ public GraphicsDevice getDevice() { return device; } /** - * Returns the <code>Point</code> that represents the coordinates - * of the pointer on the screen. See {@link MouseInfo#getPointerInfo} - * for more information about coordinate calculation for multiscreen - * systems. + * Returns the {@code Point} that represents the coordinates of the pointer + * on the screen. See {@link MouseInfo#getPointerInfo} for more information + * about coordinate calculation for multiscreen systems. * + * @return coordinates of mouse pointer * @see MouseInfo * @see MouseInfo#getPointerInfo - * @return coordinates of mouse pointer - * @since 1.5 + * @since 1.5 */ public Point getLocation() { return location; } - } diff --git a/jdk/src/share/classes/java/awt/datatransfer/FlavorListener.java b/jdk/src/share/classes/java/awt/datatransfer/FlavorListener.java index 280d96f9b35..cc048335f7a 100644 --- a/jdk/src/share/classes/java/awt/datatransfer/FlavorListener.java +++ b/jdk/src/share/classes/java/awt/datatransfer/FlavorListener.java @@ -38,7 +38,7 @@ public interface FlavorListener extends EventListener { * Invoked when the target {@link Clipboard} of the listener * has changed its available {@link DataFlavor}s. * <p> - * Some notifications may be redundant — they are not + * Some notifications may be redundant — they are not * caused by a change of the set of DataFlavors available * on the clipboard. * For example, if the clipboard subsystem supposes that diff --git a/jdk/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java b/jdk/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java index 4fd4c8163cd..1b8390eccf2 100644 --- a/jdk/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java +++ b/jdk/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java @@ -54,7 +54,6 @@ import sun.awt.datatransfer.DataTransferer; * which correspond to platform-independent MIME types. This mapping is used * by the data transfer subsystem to transfer data between Java and native * applications, and between Java applications in separate VMs. - * <p> * * @since 1.2 */ diff --git a/jdk/src/share/classes/java/awt/dnd/Autoscroll.java b/jdk/src/share/classes/java/awt/dnd/Autoscroll.java index 203826e0337..0e3f0fb459a 100644 --- a/jdk/src/share/classes/java/awt/dnd/Autoscroll.java +++ b/jdk/src/share/classes/java/awt/dnd/Autoscroll.java @@ -62,7 +62,7 @@ public interface Autoscroll { * This value is read once by the <code>DropTarget</code> * upon entry of the drag <code>Cursor</code> * into the associated <code>Component</code>. - * <P> + * * @return the Insets */ @@ -70,7 +70,7 @@ public interface Autoscroll { /** * notify the <code>Component</code> to autoscroll - * <P> + * * @param cursorLocn A <code>Point</code> indicating the * location of the cursor that triggered this operation. */ diff --git a/jdk/src/share/classes/java/awt/dnd/DragGestureEvent.java b/jdk/src/share/classes/java/awt/dnd/DragGestureEvent.java index 3c9eadd6e56..e8827f44358 100644 --- a/jdk/src/share/classes/java/awt/dnd/DragGestureEvent.java +++ b/jdk/src/share/classes/java/awt/dnd/DragGestureEvent.java @@ -82,14 +82,14 @@ public class DragGestureEvent extends EventObject { * the user's preferred action, an {@code ori} parameter * indicating the origin of the drag, and a {@code List} of * events that comprise the gesture({@code evs} parameter). - * <P> + * * @param dgr The <code>DragGestureRecognizer</code> firing this event * @param act The user's preferred action. * For information on allowable values, see * the class description for {@link DragGestureEvent} * @param ori The origin of the drag * @param evs The <code>List</code> of events that comprise the gesture - * <P> + * * @throws IllegalArgumentException if any parameter equals {@code null} * @throws IllegalArgumentException if the act parameter does not comply with * the values given in the class @@ -124,7 +124,7 @@ public class DragGestureEvent extends EventObject { /** * Returns the source as a <code>DragGestureRecognizer</code>. - * <P> + * * @return the source as a <code>DragGestureRecognizer</code> */ @@ -135,7 +135,7 @@ public class DragGestureEvent extends EventObject { /** * Returns the <code>Component</code> associated * with this <code>DragGestureEvent</code>. - * <P> + * * @return the Component */ @@ -143,7 +143,7 @@ public class DragGestureEvent extends EventObject { /** * Returns the <code>DragSource</code>. - * <P> + * * @return the <code>DragSource</code> */ @@ -152,7 +152,7 @@ public class DragGestureEvent extends EventObject { /** * Returns a <code>Point</code> in the coordinates * of the <code>Component</code> over which the drag originated. - * <P> + * * @return the Point where the drag originated in Component coords. */ @@ -163,7 +163,7 @@ public class DragGestureEvent extends EventObject { /** * Returns an <code>Iterator</code> for the events * comprising the gesture. - * <P> + * * @return an Iterator for the events comprising the gesture */ @SuppressWarnings("unchecked") @@ -172,7 +172,7 @@ public class DragGestureEvent extends EventObject { /** * Returns an <code>Object</code> array of the * events comprising the drag gesture. - * <P> + * * @return an array of the events comprising the gesture */ @@ -180,9 +180,9 @@ public class DragGestureEvent extends EventObject { /** * Returns an array of the events comprising the drag gesture. - * <P> + * * @param array the array of <code>EventObject</code> sub(types) - * <P> + * * @return an array of the events comprising the gesture */ @SuppressWarnings("unchecked") @@ -191,7 +191,7 @@ public class DragGestureEvent extends EventObject { /** * Returns an <code>int</code> representing the * action selected by the user. - * <P> + * * @return the action selected by the user */ @@ -199,7 +199,7 @@ public class DragGestureEvent extends EventObject { /** * Returns the initial event that triggered the gesture. - * <P> + * * @return the first "triggering" event in the sequence of the gesture */ @@ -242,7 +242,7 @@ public class DragGestureEvent extends EventObject { * Starts the drag given the initial <code>Cursor</code> to display, * the <code>Transferable</code> object, * and the <code>DragSourceListener</code> to use. - * <P> + * * @param dragCursor The initial {@code Cursor} for this drag operation * or {@code null} for the default cursor handling; * see @@ -251,7 +251,7 @@ public class DragGestureEvent extends EventObject { * during drag and drop * @param transferable The source's Transferable * @param dsl The source's DragSourceListener - * <P> + * * @throws InvalidDnDOperationException if * the Drag and Drop system is unable to * initiate a drag operation, or if the user @@ -269,7 +269,7 @@ public class DragGestureEvent extends EventObject { * the <code>Image</code>, * the <code>Transferable</code> object, and * the <code>DragSourceListener</code> to use. - * <P> + * * @param dragCursor The initial {@code Cursor} for this drag operation * or {@code null} for the default cursor handling; * see @@ -280,7 +280,7 @@ public class DragGestureEvent extends EventObject { * @param imageOffset The dragImage's offset * @param transferable The source's Transferable * @param dsl The source's DragSourceListener - * <P> + * * @throws InvalidDnDOperationException if * the Drag and Drop system is unable to * initiate a drag operation, or if the user diff --git a/jdk/src/share/classes/java/awt/dnd/DragGestureListener.java b/jdk/src/share/classes/java/awt/dnd/DragGestureListener.java index 5adb328b6e3..f3e600e6cd4 100644 --- a/jdk/src/share/classes/java/awt/dnd/DragGestureListener.java +++ b/jdk/src/share/classes/java/awt/dnd/DragGestureListener.java @@ -53,7 +53,7 @@ import java.util.EventListener; * drag initiating gesture. To initiate the drag and drop operation, * if appropriate, {@link DragGestureEvent#startDrag startDrag()} method on * the {@code DragGestureEvent} has to be invoked. - * <P> + * * @see java.awt.dnd.DragGestureRecognizer * @see java.awt.dnd.DragGestureEvent * @param dge the <code>DragGestureEvent</code> describing diff --git a/jdk/src/share/classes/java/awt/dnd/DragGestureRecognizer.java b/jdk/src/share/classes/java/awt/dnd/DragGestureRecognizer.java index 18f2e2a813d..b3dbeb5f477 100644 --- a/jdk/src/share/classes/java/awt/dnd/DragGestureRecognizer.java +++ b/jdk/src/share/classes/java/awt/dnd/DragGestureRecognizer.java @@ -76,7 +76,7 @@ import java.io.Serializable; * for causing the associated * <code>DragSource</code> to start the Drag and Drop operation (if * appropriate). - * <P> + * * @author Laurence P. G. Cable * @see java.awt.dnd.DragGestureListener * @see java.awt.dnd.DragGestureEvent @@ -96,7 +96,7 @@ public abstract class DragGestureRecognizer implements Serializable { * for this Drag and Drop operation, and the * <code>DragGestureListener</code> to notify * once a drag initiating gesture has been detected. - * <P> + * * @param ds the <code>DragSource</code> this * <code>DragGestureRecognizer</code> * will use to process the Drag and Drop operation @@ -115,7 +115,7 @@ public abstract class DragGestureRecognizer implements Serializable { * * @param dgl the <code>DragGestureRecognizer</code> * to notify when a drag gesture is detected - * <P> + * * @throws IllegalArgumentException * if ds is <code>null</code>. */ @@ -144,7 +144,7 @@ public abstract class DragGestureRecognizer implements Serializable { * <code>DragGestureRecognizer</code> should "observe" * for drag initiating gestures, and the action(s) * supported for this Drag and Drop operation. - * <P> + * * @param ds the <code>DragSource</code> this * <code>DragGestureRecognizer</code> will use to * process the Drag and Drop operation @@ -158,7 +158,7 @@ public abstract class DragGestureRecognizer implements Serializable { * * @param sa the set (logical OR) of the <code>DnDConstants</code> * that this Drag and Drop operation will support - * <P> + * * @throws IllegalArgumentException * if ds is <code>null</code>. */ @@ -174,7 +174,7 @@ public abstract class DragGestureRecognizer implements Serializable { * the <code>Component</code> this * <code>DragGestureRecognizer</code> * should "observe" for drag initiating gestures. - * <P> + * * @param ds the <code>DragSource</code> this * <code>DragGestureRecognizer</code> * will use to process the Drag and Drop operation @@ -186,7 +186,7 @@ public abstract class DragGestureRecognizer implements Serializable { * If this value is <code>null</code>, * the <code>DragGestureRecognizer</code> * is not associated with any <code>Component</code>. - * <P> + * * @throws IllegalArgumentException * if ds is <code>null</code>. */ @@ -199,11 +199,11 @@ public abstract class DragGestureRecognizer implements Serializable { * Construct a new <code>DragGestureRecognizer</code> * given the <code>DragSource</code> to be used in this * Drag and Drop operation. - * <P> + * * @param ds the <code>DragSource</code> this * <code>DragGestureRecognizer</code> will * use to process the Drag and Drop operation - * <P> + * * @throws IllegalArgumentException * if ds is <code>null</code>. */ @@ -233,7 +233,7 @@ public abstract class DragGestureRecognizer implements Serializable { * this <code>DragGestureRecognizer</code> * will use in order to process the Drag and Drop * operation. - * <P> + * * @return the DragSource */ @@ -244,7 +244,7 @@ public abstract class DragGestureRecognizer implements Serializable { * that is to be "observed" by the * <code>DragGestureRecognizer</code> * for drag initiating gestures. - * <P> + * * @return The Component this DragGestureRecognizer * is associated with */ @@ -256,7 +256,7 @@ public abstract class DragGestureRecognizer implements Serializable { * * registerListeners() and unregisterListeners() are called as a side * effect as appropriate. - * <P> + * * @param c The <code>Component</code> or <code>null</code> */ @@ -274,7 +274,7 @@ public abstract class DragGestureRecognizer implements Serializable { * This method returns an int representing the * type of action(s) this Drag and Drop * operation will support. - * <P> + * * @return the currently permitted source action(s) */ @@ -283,7 +283,7 @@ public abstract class DragGestureRecognizer implements Serializable { /** * This method sets the permitted source drag action(s) * for this Drag and Drop operation. - * <P> + * * @param actions the permitted source drag action(s) */ @@ -295,7 +295,7 @@ public abstract class DragGestureRecognizer implements Serializable { * This method returns the first event in the * series of events that initiated * the Drag and Drop operation. - * <P> + * * @return the initial event that triggered the drag gesture */ @@ -310,10 +310,10 @@ public abstract class DragGestureRecognizer implements Serializable { /** * Register a new <code>DragGestureListener</code>. - * <P> + * * @param dgl the <code>DragGestureListener</code> to register * with this <code>DragGestureRecognizer</code>. - * <P> + * * @throws java.util.TooManyListenersException if a * <code>DragGestureListener</code> has already been added. */ @@ -330,10 +330,10 @@ public abstract class DragGestureRecognizer implements Serializable { /** * unregister the current DragGestureListener - * <P> + * * @param dgl the <code>DragGestureListener</code> to unregister * from this <code>DragGestureRecognizer</code> - * <P> + * * @throws IllegalArgumentException if * dgl is not (equal to) the currently registered <code>DragGestureListener</code>. */ @@ -351,7 +351,7 @@ public abstract class DragGestureRecognizer implements Serializable { /** * Notify the DragGestureListener that a Drag and Drop initiating * gesture has occurred. Then reset the state of the Recognizer. - * <P> + * * @param dragAction The action initially selected by the users gesture * @param p The point (in Component coords) where the gesture originated */ @@ -369,14 +369,14 @@ public abstract class DragGestureRecognizer implements Serializable { * Listeners registered on the Component by this Recognizer shall record * all Events that are recognized as part of the series of Events that go * to comprise a Drag and Drop initiating gesture via this API. - *<P> + * <P> * This method is used by a <code>DragGestureRecognizer</code> * implementation to add an <code>InputEvent</code> * subclass (that it believes is one in a series * of events that comprise a Drag and Drop operation) * to the array of events that this * <code>DragGestureRecognizer</code> maintains internally. - * <P> + * * @param awtie the <code>InputEvent</code> * to add to this <code>DragGestureRecognizer</code>'s * internal array of events. Note that <code>null</code> diff --git a/jdk/src/share/classes/java/awt/dnd/DragSource.java b/jdk/src/share/classes/java/awt/dnd/DragSource.java index 2b32b87da14..3236ca241f5 100644 --- a/jdk/src/share/classes/java/awt/dnd/DragSource.java +++ b/jdk/src/share/classes/java/awt/dnd/DragSource.java @@ -228,7 +228,7 @@ public class DragSource implements Serializable { * whether or not drag * <code>Image</code> support * is available on the underlying platform. - * <P> + * * @return if the Drag Image support is available on this platform */ @@ -270,7 +270,7 @@ public class DragSource implements Serializable { * the <code>Transferable</code> subject data * of the drag, the <code>DragSourceListener</code>, * and the <code>FlavorMap</code>. - * <P> + * * @param trigger the <code>DragGestureEvent</code> that initiated the drag * @param dragCursor the initial {@code Cursor} for this drag operation * or {@code null} for the default cursor handling; @@ -282,7 +282,7 @@ public class DragSource implements Serializable { * @param transferable the subject data of the drag * @param dsl the <code>DragSourceListener</code> * @param flavorMap the <code>FlavorMap</code> to use, or <code>null</code> - * <P> + * * @throws java.awt.dnd.InvalidDnDOperationException * if the Drag and Drop * system is unable to initiate a drag operation, or if the user @@ -332,7 +332,7 @@ public class DragSource implements Serializable { * the <code>Transferable</code> subject data * of the drag, the <code>DragSourceListener</code>, * and the <code>FlavorMap</code>. - * <P> + * * @param trigger the <code>DragGestureEvent</code> that * initiated the drag * @param dragCursor the initial {@code Cursor} for this drag operation @@ -342,7 +342,7 @@ public class DragSource implements Serializable { * @param transferable the subject data of the drag * @param dsl the <code>DragSourceListener</code> * @param flavorMap the <code>FlavorMap</code> to use or <code>null</code> - * <P> + * * @throws java.awt.dnd.InvalidDnDOperationException * if the Drag and Drop * system is unable to initiate a drag operation, or if the user @@ -368,7 +368,7 @@ public class DragSource implements Serializable { * at the instant of the trigger, * the subject data of the drag, and * the <code>DragSourceListener</code>. - * <P> + * * @param trigger the <code>DragGestureEvent</code> that initiated the drag * @param dragCursor the initial {@code Cursor} for this drag operation * or {@code null} for the default cursor handling; @@ -379,7 +379,7 @@ public class DragSource implements Serializable { * of the <code>Cursor</code> at the instant of the trigger * @param transferable the subject data of the drag * @param dsl the <code>DragSourceListener</code> - * <P> + * * @throws java.awt.dnd.InvalidDnDOperationException * if the Drag and Drop * system is unable to initiate a drag operation, or if the user @@ -403,15 +403,15 @@ public class DragSource implements Serializable { * use, * the <code>Transferable</code> subject data * of the drag, and the <code>DragSourceListener</code>. - * <P> - * @param trigger the <code>DragGestureEvent</code> that initiated the drag + * + * @param trigger the <code>DragGestureEvent</code> that initiated the drag * @param dragCursor the initial {@code Cursor} for this drag operation * or {@code null} for the default cursor handling; * see <a href="DragSourceContext.html#defaultCursor">DragSourceContext</a> class * for more details on the cursor handling mechanism during drag and drop * @param transferable the subject data of the drag * @param dsl the <code>DragSourceListener</code> - * <P> + * * @throws java.awt.dnd.InvalidDnDOperationException * if the Drag and Drop * system is unable to initiate a drag operation, or if the user @@ -480,7 +480,7 @@ public class DragSource implements Serializable { /** * This method returns the * <code>FlavorMap</code> for this <code>DragSource</code>. - * <P> + * * @return the <code>FlavorMap</code> for this <code>DragSource</code> */ @@ -494,13 +494,13 @@ public class DragSource implements Serializable { * sets the specified <code>Component</code> * and <code>DragGestureListener</code> on * the newly created object. - * <P> + * * @param <T> the type of {@code DragGestureRecognizer} to create * @param recognizerAbstractClass the requested abstract type * @param actions the permitted source drag actions * @param c the <code>Component</code> target * @param dgl the <code>DragGestureListener</code> to notify - * <P> + * * @return the new <code>DragGestureRecognizer</code> or <code>null</code> * if the <code>Toolkit.createDragGestureRecognizer</code> method * has no implementation available for @@ -528,11 +528,11 @@ public class DragSource implements Serializable { * * For this <code>DragSource</code> * the default is <code>MouseDragGestureRecognizer</code>. - * <P> + * * @param c the <code>Component</code> target for the recognizer * @param actions the permitted source actions * @param dgl the <code>DragGestureListener</code> to notify - * <P> + * * @return the new <code>DragGestureRecognizer</code> or <code>null</code> * if the <code>Toolkit.createDragGestureRecognizer</code> method * has no implementation available for diff --git a/jdk/src/share/classes/java/awt/dnd/DragSourceContext.java b/jdk/src/share/classes/java/awt/dnd/DragSourceContext.java index cbc4c83b148..58e43ff3d89 100644 --- a/jdk/src/share/classes/java/awt/dnd/DragSourceContext.java +++ b/jdk/src/share/classes/java/awt/dnd/DragSourceContext.java @@ -289,7 +289,7 @@ public class DragSourceContext /** * Returns the current drag <code>Cursor</code>. - * <P> + * * @return the current drag <code>Cursor</code> */ @@ -300,11 +300,11 @@ public class DragSourceContext * <code>DragSourceContext</code> if one has not already been added. * If a <code>DragSourceListener</code> already exists, * this method throws a <code>TooManyListenersException</code>. - * <P> + * * @param dsl the <code>DragSourceListener</code> to add. * Note that while <code>null</code> is not prohibited, * it is not acceptable as a parameter. - * <P> + * * @throws TooManyListenersException if * a <code>DragSourceListener</code> has already been added */ diff --git a/jdk/src/share/classes/java/awt/dnd/DragSourceDropEvent.java b/jdk/src/share/classes/java/awt/dnd/DragSourceDropEvent.java index 5cc3c8f6694..f31e3d233dc 100644 --- a/jdk/src/share/classes/java/awt/dnd/DragSourceDropEvent.java +++ b/jdk/src/share/classes/java/awt/dnd/DragSourceDropEvent.java @@ -36,7 +36,7 @@ package java.awt.dnd; * originator of the operation * to provide appropriate feedback to the end user * when the operation completes. - * <P> + * * @since 1.2 */ diff --git a/jdk/src/share/classes/java/awt/dnd/DragSourceEvent.java b/jdk/src/share/classes/java/awt/dnd/DragSourceEvent.java index 3effe4f07ad..b9f55e15170 100644 --- a/jdk/src/share/classes/java/awt/dnd/DragSourceEvent.java +++ b/jdk/src/share/classes/java/awt/dnd/DragSourceEvent.java @@ -131,7 +131,7 @@ public class DragSourceEvent extends EventObject { /** * This method returns the <code>DragSourceContext</code> that * originated the event. - * <P> + * * @return the <code>DragSourceContext</code> that originated the event */ diff --git a/jdk/src/share/classes/java/awt/dnd/DropTarget.java b/jdk/src/share/classes/java/awt/dnd/DropTarget.java index 9f5462a320b..a6939b924a7 100644 --- a/jdk/src/share/classes/java/awt/dnd/DropTarget.java +++ b/jdk/src/share/classes/java/awt/dnd/DropTarget.java @@ -234,7 +234,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * Gets the <code>Component</code> associated * with this <code>DropTarget</code>. - * <P> + * * @return the current <code>Component</code> */ @@ -244,7 +244,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * Sets the default acceptable actions for this <code>DropTarget</code> - * <P> + * * @param ops the default actions * @see java.awt.dnd.DnDConstants */ @@ -264,7 +264,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * Gets an <code>int</code> representing the * current action(s) supported by this <code>DropTarget</code>. - * <P> + * * @return the current default actions */ @@ -275,7 +275,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * Sets the DropTarget active if <code>true</code>, * inactive if <code>false</code>. - * <P> + * * @param isActive sets the <code>DropTarget</code> (in)active. */ @@ -291,7 +291,7 @@ public class DropTarget implements DropTargetListener, Serializable { * Reports whether or not * this <code>DropTarget</code> * is currently active (ready to accept drops). - * <P> + * * @return <CODE>true</CODE> if active, <CODE>false</CODE> if not */ @@ -301,9 +301,9 @@ public class DropTarget implements DropTargetListener, Serializable { /** * Adds a new <code>DropTargetListener</code> (UNICAST SOURCE). - * <P> + * * @param dtl The new <code>DropTargetListener</code> - * <P> + * * @throws TooManyListenersException if a * <code>DropTargetListener</code> is already added to this * <code>DropTarget</code>. @@ -322,7 +322,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * Removes the current <code>DropTargetListener</code> (UNICAST SOURCE). - * <P> + * * @param dtl the DropTargetListener to deregister. */ @@ -464,7 +464,7 @@ public class DropTarget implements DropTargetListener, Serializable { * If no <code>FlavorMap</code> has been set for this * <code>DropTarget</code>, it is associated with the default * <code>FlavorMap</code>. - * <P> + * * @return the FlavorMap for this DropTarget */ @@ -473,7 +473,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * Sets the <code>FlavorMap</code> associated * with this <code>DropTarget</code>. - * <P> + * * @param fm the new <code>FlavorMap</code>, or null to * associate the default FlavorMap with this DropTarget. */ @@ -494,7 +494,7 @@ public class DropTarget implements DropTargetListener, Serializable { * association of the ComponentPeer with the Component may result in * a malfunction of the DnD system. ********************************************************************** - * <P> + * * @param peer The Peer of the Component we are associated with! * */ @@ -529,7 +529,7 @@ public class DropTarget implements DropTargetListener, Serializable { * disassociation of the ComponentPeer from the Component may result in * a malfunction of the DnD system. ********************************************************************** - * <P> + * * @param peer The Peer of the Component we are being disassociated from! */ @@ -549,7 +549,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * Gets the <code>DropTargetContext</code> associated * with this <code>DropTarget</code>. - * <P> + * * @return the <code>DropTargetContext</code> associated with this <code>DropTarget</code>. */ @@ -641,7 +641,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * construct a DropTargetAutoScroller - * <P> + * * @param c the <code>Component</code> * @param p the <code>Point</code> */ @@ -710,7 +710,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * cause autoscroll to occur - * <P> + * * @param newLocn the <code>Point</code> */ @@ -734,7 +734,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * cause autoscroll to occur - * <P> + * * @param e the <code>ActionEvent</code> */ @@ -779,7 +779,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * initialize autoscrolling - * <P> + * * @param p the <code>Point</code> */ @@ -791,7 +791,7 @@ public class DropTarget implements DropTargetListener, Serializable { /** * update autoscrolling with current cursor location - * <P> + * * @param dragCursorLocn the <code>Point</code> */ diff --git a/jdk/src/share/classes/java/awt/dnd/DropTargetContext.java b/jdk/src/share/classes/java/awt/dnd/DropTargetContext.java index 5a55c844df2..43e71180c86 100644 --- a/jdk/src/share/classes/java/awt/dnd/DropTargetContext.java +++ b/jdk/src/share/classes/java/awt/dnd/DropTargetContext.java @@ -61,7 +61,7 @@ public class DropTargetContext implements Serializable { /** * Construct a <code>DropTargetContext</code> * given a specified <code>DropTarget</code>. - * <P> + * * @param dt the DropTarget to associate with */ @@ -74,7 +74,7 @@ public class DropTargetContext implements Serializable { /** * This method returns the <code>DropTarget</code> associated with this * <code>DropTargetContext</code>. - * <P> + * * @return the <code>DropTarget</code> associated with this <code>DropTargetContext</code> */ @@ -83,7 +83,7 @@ public class DropTargetContext implements Serializable { /** * This method returns the <code>Component</code> associated with * this <code>DropTargetContext</code>. - * <P> + * * @return the Component associated with this Context */ @@ -91,7 +91,7 @@ public class DropTargetContext implements Serializable { /** * Called when associated with the <code>DropTargetContextPeer</code>. - * <P> + * * @param dtcp the <code>DropTargetContextPeer</code> */ @@ -111,7 +111,7 @@ public class DropTargetContext implements Serializable { /** * This method sets the current actions acceptable to * this <code>DropTarget</code>. - * <P> + * * @param actions an <code>int</code> representing the supported action(s) */ @@ -130,7 +130,7 @@ public class DropTargetContext implements Serializable { /** * This method returns an <code>int</code> representing the * current actions this <code>DropTarget</code> will accept. - * <P> + * * @return the current actions acceptable to this <code>DropTarget</code> */ @@ -145,9 +145,9 @@ public class DropTargetContext implements Serializable { /** * This method signals that the drop is completed and * if it was successful or not. - * <P> + * * @param success true for success, false if not - * <P> + * * @throws InvalidDnDOperationException if a drop is not outstanding/extant */ @@ -160,7 +160,7 @@ public class DropTargetContext implements Serializable { /** * accept the Drag. - * <P> + * * @param dragOperation the supported action(s) */ @@ -186,7 +186,7 @@ public class DropTargetContext implements Serializable { * called to signal that the drop is acceptable * using the specified operation. * must be called during DropTargetListener.drop method invocation. - * <P> + * * @param dropOperation the supported action(s) */ @@ -212,7 +212,7 @@ public class DropTargetContext implements Serializable { /** * get the available DataFlavors of the * <code>Transferable</code> operand of this operation. - * <P> + * * @return a <code>DataFlavor[]</code> containing the * supported <code>DataFlavor</code>s of the * <code>Transferable</code> operand. @@ -227,7 +227,7 @@ public class DropTargetContext implements Serializable { * This method returns a the currently available DataFlavors * of the <code>Transferable</code> operand * as a <code>java.util.List</code>. - * <P> + * * @return the currently available * DataFlavors as a <code>java.util.List</code> */ @@ -240,9 +240,9 @@ public class DropTargetContext implements Serializable { * This method returns a <code>boolean</code> * indicating if the given <code>DataFlavor</code> is * supported by this <code>DropTargetContext</code>. - * <P> + * * @param df the <code>DataFlavor</code> - * <P> + * * @return if the <code>DataFlavor</code> specified is supported */ @@ -252,9 +252,9 @@ public class DropTargetContext implements Serializable { /** * get the Transferable (proxy) operand of this operation - * <P> + * * @throws InvalidDnDOperationException if a drag is not outstanding/extant - * <P> + * * @return the <code>Transferable</code> */ @@ -279,7 +279,7 @@ public class DropTargetContext implements Serializable { /** * Get the <code>DropTargetContextPeer</code> - * <P> + * * @return the platform peer */ @@ -322,7 +322,7 @@ public class DropTargetContext implements Serializable { * data transfer for a particular drag-n-drop operation and * a <code>boolean</code> which indicates whether the * drag-n-drop operation is local (within the same JVM). - * <p> + * * @param t the <code>Transferable</code> object * @param local <code>true</code>, if <code>t</code> represents * the result of local drag-n-drop operation @@ -336,7 +336,7 @@ public class DropTargetContext implements Serializable { /** * Returns an array of DataFlavor objects indicating the flavors * the data can be provided in by the encapsulated transferable. - * <p> + * * @return an array of data flavors in which the data can be * provided by the encapsulated transferable */ diff --git a/jdk/src/share/classes/java/awt/dnd/DropTargetDragEvent.java b/jdk/src/share/classes/java/awt/dnd/DropTargetDragEvent.java index daa5487a1ad..00639cf9043 100644 --- a/jdk/src/share/classes/java/awt/dnd/DropTargetDragEvent.java +++ b/jdk/src/share/classes/java/awt/dnd/DropTargetDragEvent.java @@ -80,7 +80,7 @@ public class DropTargetDragEvent extends DropTargetEvent { * the location of the "Drag" <code>Cursor</code>'s hotspot * in the <code>Component</code>'s coordinates, the * user drop action, and the source drop actions. - * <P> + * * @param dtc The DropTargetContext for this operation * @param cursorLocn The location of the "Drag" Cursor's * hotspot in Component coordinates @@ -118,7 +118,7 @@ public class DropTargetDragEvent extends DropTargetEvent { * indicating the <code>Cursor</code>'s current * location within the <code>Component'</code>s * coordinates. - * <P> + * * @return the current cursor location in * <code>Component</code>'s coords. */ @@ -131,7 +131,7 @@ public class DropTargetDragEvent extends DropTargetEvent { /** * This method returns the current <code>DataFlavor</code>s from the * <code>DropTargetContext</code>. - * <P> + * * @return current DataFlavors from the DropTargetContext */ @@ -142,7 +142,7 @@ public class DropTargetDragEvent extends DropTargetEvent { /** * This method returns the current <code>DataFlavor</code>s * as a <code>java.util.List</code> - * <P> + * * @return a <code>java.util.List</code> of the Current <code>DataFlavor</code>s */ @@ -153,9 +153,9 @@ public class DropTargetDragEvent extends DropTargetEvent { /** * This method returns a <code>boolean</code> indicating * if the specified <code>DataFlavor</code> is supported. - * <P> + * * @param df the <code>DataFlavor</code> to test - * <P> + * * @return if a particular DataFlavor is supported */ diff --git a/jdk/src/share/classes/java/awt/dnd/DropTargetDropEvent.java b/jdk/src/share/classes/java/awt/dnd/DropTargetDropEvent.java index e6ad6844aa8..32b16e16169 100644 --- a/jdk/src/share/classes/java/awt/dnd/DropTargetDropEvent.java +++ b/jdk/src/share/classes/java/awt/dnd/DropTargetDropEvent.java @@ -85,7 +85,7 @@ public class DropTargetDropEvent extends DropTargetEvent { * assumes that the target is not in the same virtual machine as * the source; that is, {@link #isLocalTransfer()} will * return <code>false</code>. - * <P> + * * @param dtc The <code>DropTargetContext</code> for this operation * @param cursorLocn The location of the "Drag" Cursor's * hotspot in <code>Component</code> coordinates @@ -128,7 +128,7 @@ public class DropTargetDropEvent extends DropTargetEvent { * the current set of actions supported by the source, * and a <code>boolean</code> indicating if the source is in the same JVM * as the target. - * <P> + * * @param dtc The DropTargetContext for this operation * @param cursorLocn The location of the "Drag" Cursor's * hotspot in Component's coordinates @@ -154,7 +154,7 @@ public class DropTargetDropEvent extends DropTargetEvent { * This method returns a <code>Point</code> * indicating the <code>Cursor</code>'s current * location in the <code>Component</code>'s coordinates. - * <P> + * * @return the current <code>Cursor</code> location in Component's coords. */ @@ -165,7 +165,7 @@ public class DropTargetDropEvent extends DropTargetEvent { /** * This method returns the current DataFlavors. - * <P> + * * @return current DataFlavors */ @@ -176,7 +176,7 @@ public class DropTargetDropEvent extends DropTargetEvent { /** * This method returns the currently available * <code>DataFlavor</code>s as a <code>java.util.List</code>. - * <P> + * * @return the currently available DataFlavors as a java.util.List */ @@ -188,9 +188,9 @@ public class DropTargetDropEvent extends DropTargetEvent { * This method returns a <code>boolean</code> indicating if the * specified <code>DataFlavor</code> is available * from the source. - * <P> + * * @param df the <code>DataFlavor</code> to test - * <P> + * * @return if the DataFlavor specified is available from the source */ @@ -215,7 +215,7 @@ public class DropTargetDropEvent extends DropTargetEvent { /** * This method returns the <code>Transferable</code> object * associated with the drop. - * <P> + * * @return the <code>Transferable</code> associated with the drop */ @@ -225,7 +225,7 @@ public class DropTargetDropEvent extends DropTargetEvent { /** * accept the drop, using the specified action. - * <P> + * * @param dropAction the specified action */ @@ -244,7 +244,7 @@ public class DropTargetDropEvent extends DropTargetEvent { /** * This method notifies the <code>DragSource</code> * that the drop transfer(s) are completed. - * <P> + * * @param success a <code>boolean</code> indicating that the drop transfer(s) are completed. */ @@ -255,7 +255,7 @@ public class DropTargetDropEvent extends DropTargetEvent { /** * This method returns an <code>int</code> indicating if * the source is in the same JVM as the target. - * <P> + * * @return if the Source is in the same JVM */ diff --git a/jdk/src/share/classes/java/awt/dnd/DropTargetEvent.java b/jdk/src/share/classes/java/awt/dnd/DropTargetEvent.java index 326ba939a3f..e7911ab8cbb 100644 --- a/jdk/src/share/classes/java/awt/dnd/DropTargetEvent.java +++ b/jdk/src/share/classes/java/awt/dnd/DropTargetEvent.java @@ -47,7 +47,7 @@ public class DropTargetEvent extends java.util.EventObject { /** * Construct a <code>DropTargetEvent</code> object with * the specified <code>DropTargetContext</code>. - * <P> + * * @param dtc The <code>DropTargetContext</code> * @throws NullPointerException if {@code dtc} equals {@code null}. * @see #getSource() @@ -63,7 +63,7 @@ public class DropTargetEvent extends java.util.EventObject { /** * This method returns the <code>DropTargetContext</code> * associated with this <code>DropTargetEvent</code>. - * <P> + * * @return the <code>DropTargetContext</code> */ diff --git a/jdk/src/share/classes/java/awt/dnd/DropTargetListener.java b/jdk/src/share/classes/java/awt/dnd/DropTargetListener.java index 03659845580..60676f99b0d 100644 --- a/jdk/src/share/classes/java/awt/dnd/DropTargetListener.java +++ b/jdk/src/share/classes/java/awt/dnd/DropTargetListener.java @@ -91,7 +91,7 @@ public interface DropTargetListener extends EventListener { /** * Called if the user has modified * the current drop gesture. - * <P> + * * @param dtde the <code>DropTargetDragEvent</code> */ @@ -144,7 +144,7 @@ public interface DropTargetListener extends EventListener { * <code>DropTargetDropEvent.isLocalTransfer()</code> returns * <code>true</code>. Otherwise, the behavior of the call is * implementation-dependent. - * <P> + * * @param dtde the <code>DropTargetDropEvent</code> */ diff --git a/jdk/src/share/classes/java/awt/dnd/InvalidDnDOperationException.java b/jdk/src/share/classes/java/awt/dnd/InvalidDnDOperationException.java index 1f9368e5899..e0727aba3b5 100644 --- a/jdk/src/share/classes/java/awt/dnd/InvalidDnDOperationException.java +++ b/jdk/src/share/classes/java/awt/dnd/InvalidDnDOperationException.java @@ -48,7 +48,7 @@ public class InvalidDnDOperationException extends IllegalStateException { /** * Create an Exception with its own descriptive message - * <P> + * * @param msg the detail message */ diff --git a/jdk/src/share/classes/java/awt/dnd/MouseDragGestureRecognizer.java b/jdk/src/share/classes/java/awt/dnd/MouseDragGestureRecognizer.java index 1fc0e0bd8a0..cf975835f22 100644 --- a/jdk/src/share/classes/java/awt/dnd/MouseDragGestureRecognizer.java +++ b/jdk/src/share/classes/java/awt/dnd/MouseDragGestureRecognizer.java @@ -74,7 +74,7 @@ public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer i * permitted for this drag operation, and * the <code>DragGestureListener</code> to * notify when a drag gesture is detected. - * <P> + * * @param ds The DragSource for the Component c * @param c The Component to observe * @param act The actions permitted for this Drag @@ -92,7 +92,7 @@ public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer i * the <code>Component</code> c, * the <code>Component</code> to observe, and the action(s) * permitted for this drag operation. - * <P> + * * @param ds The DragSource for the Component c * @param c The Component to observe * @param act The actions permitted for this drag @@ -107,7 +107,7 @@ public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer i * given the <code>DragSource</code> for the * <code>Component</code> c, and the * <code>Component</code> to observe. - * <P> + * * @param ds The DragSource for the Component c * @param c The Component to observe */ @@ -119,7 +119,7 @@ public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer i /** * Construct a new <code>MouseDragGestureRecognizer</code> * given the <code>DragSource</code> for the <code>Component</code>. - * <P> + * * @param ds The DragSource for the Component */ @@ -150,7 +150,7 @@ public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer i /** * Invoked when the mouse has been clicked on a component. - * <P> + * * @param e the <code>MouseEvent</code> */ @@ -159,7 +159,7 @@ public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer i /** * Invoked when a mouse button has been * pressed on a <code>Component</code>. - * <P> + * * @param e the <code>MouseEvent</code> */ @@ -167,7 +167,7 @@ public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer i /** * Invoked when a mouse button has been released on a component. - * <P> + * * @param e the <code>MouseEvent</code> */ @@ -175,7 +175,7 @@ public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer i /** * Invoked when the mouse enters a component. - * <P> + * * @param e the <code>MouseEvent</code> */ @@ -183,7 +183,7 @@ public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer i /** * Invoked when the mouse exits a component. - * <P> + * * @param e the <code>MouseEvent</code> */ @@ -191,7 +191,7 @@ public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer i /** * Invoked when a mouse button is pressed on a component. - * <P> + * * @param e the <code>MouseEvent</code> */ @@ -200,7 +200,7 @@ public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer i /** * Invoked when the mouse button has been moved on a component * (with no buttons no down). - * <P> + * * @param e the <code>MouseEvent</code> */ diff --git a/jdk/src/share/classes/java/awt/event/MouseEvent.java b/jdk/src/share/classes/java/awt/event/MouseEvent.java index 89c950aff1f..65a8626f872 100644 --- a/jdk/src/share/classes/java/awt/event/MouseEvent.java +++ b/jdk/src/share/classes/java/awt/event/MouseEvent.java @@ -930,7 +930,7 @@ public class MouseEvent extends InputEvent { * and will cause the returning an unspecified string. * Zero parameter means that no modifiers were passed and will * cause the returning an empty string. - * <p> + * * @param modifiers A modifier mask describing the modifier keys and * mouse buttons that were down during the event * @return string string text description of the combination of modifier diff --git a/jdk/src/share/classes/java/awt/peer/CheckboxMenuItemPeer.java b/jdk/src/share/classes/java/awt/peer/CheckboxMenuItemPeer.java index 5741b21c8ce..f9535131b21 100644 --- a/jdk/src/share/classes/java/awt/peer/CheckboxMenuItemPeer.java +++ b/jdk/src/share/classes/java/awt/peer/CheckboxMenuItemPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. * 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,12 +38,12 @@ import java.awt.CheckboxMenuItem; public interface CheckboxMenuItemPeer extends MenuItemPeer { /** - * Sets the state of the checkbox to be checked ({@code true}) or - * unchecked ({@code false}). + * Sets the state of the checkbox to be checked {@code true} or + * unchecked {@code false}. * - * @param t the state to set on the checkbox + * @param state the state to set on the checkbox * - * @see CheckboxMenuItemPeer#setState(boolean) + * @see CheckboxMenuItem#setState(boolean) */ - void setState(boolean t); + void setState(boolean state); } diff --git a/jdk/src/share/classes/java/awt/peer/CheckboxPeer.java b/jdk/src/share/classes/java/awt/peer/CheckboxPeer.java index 567d29e0e27..dc0b85f50c2 100644 --- a/jdk/src/share/classes/java/awt/peer/CheckboxPeer.java +++ b/jdk/src/share/classes/java/awt/peer/CheckboxPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,8 @@ */ package java.awt.peer; -import java.awt.*; +import java.awt.Checkbox; +import java.awt.CheckboxGroup; /** * The peer interface for {@link Checkbox}. @@ -38,8 +39,8 @@ import java.awt.*; public interface CheckboxPeer extends ComponentPeer { /** - * Sets the state of the checkbox to be checked ({@code true}) or - * unchecked ({@code false}). + * Sets the state of the checkbox to be checked {@code true} or + * unchecked {@code false}. * * @param state the state to set on the checkbox * @@ -60,7 +61,7 @@ public interface CheckboxPeer extends ComponentPeer { void setCheckboxGroup(CheckboxGroup g); /** - * Sets the label that should be displayed on the ckeckbox. A value of + * Sets the label that should be displayed on the checkbox. A value of * {@code null} means that no label should be displayed. * * @param label the label to be displayed on the checkbox, or diff --git a/jdk/src/share/classes/java/awt/peer/ComponentPeer.java b/jdk/src/share/classes/java/awt/peer/ComponentPeer.java index 8f0366711e5..5fcc90f8d75 100644 --- a/jdk/src/share/classes/java/awt/peer/ComponentPeer.java +++ b/jdk/src/share/classes/java/awt/peer/ComponentPeer.java @@ -27,11 +27,11 @@ package java.awt.peer; import java.awt.*; import java.awt.event.PaintEvent; -import java.awt.image.ImageProducer; -import java.awt.image.ImageObserver; import java.awt.image.ColorModel; +import java.awt.image.ImageObserver; +import java.awt.image.ImageProducer; import java.awt.image.VolatileImage; -import java.awt.GraphicsConfiguration; + import sun.awt.CausedFocusEvent; import sun.java2d.pipe.Region; diff --git a/jdk/src/share/classes/java/awt/peer/TextAreaPeer.java b/jdk/src/share/classes/java/awt/peer/TextAreaPeer.java index 2aa68ed090e..e173cf58b18 100644 --- a/jdk/src/share/classes/java/awt/peer/TextAreaPeer.java +++ b/jdk/src/share/classes/java/awt/peer/TextAreaPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. * 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 interface TextAreaPeer extends TextComponentPeer { void insert(String text, int pos); /** - * Replaces a range of text by the specified string + * Replaces a range of text by the specified string. * * @param text the replacement string * @param start the begin of the range to replace diff --git a/jdk/src/share/classes/java/beans/Introspector.java b/jdk/src/share/classes/java/beans/Introspector.java index 01b24ada112..38169518386 100644 --- a/jdk/src/share/classes/java/beans/Introspector.java +++ b/jdk/src/share/classes/java/beans/Introspector.java @@ -47,6 +47,8 @@ import java.util.EventObject; import java.util.List; import java.util.TreeMap; +import sun.misc.JavaBeansIntrospectorAccess; +import sun.misc.SharedSecrets; import sun.reflect.misc.ReflectUtil; /** @@ -140,6 +142,20 @@ public class Introspector { static final String SET_PREFIX = "set"; static final String IS_PREFIX = "is"; + // register with SharedSecrets for JMX usage + static { + SharedSecrets.setJavaBeansIntrospectorAccess((clazz, property) -> { + BeanInfo bi = Introspector.getBeanInfo(clazz); + PropertyDescriptor[] pds = bi.getPropertyDescriptors(); + for (PropertyDescriptor pd: pds) { + if (pd.getName().equals(property)) { + return pd.getReadMethod(); + } + } + return null; + }); + } + //====================================================================== // Public methods //====================================================================== diff --git a/jdk/src/share/classes/java/beans/SimpleBeanInfo.java b/jdk/src/share/classes/java/beans/SimpleBeanInfo.java index 2775b7eb8af..29fd9cc4b5a 100644 --- a/jdk/src/share/classes/java/beans/SimpleBeanInfo.java +++ b/jdk/src/share/classes/java/beans/SimpleBeanInfo.java @@ -108,7 +108,7 @@ public class SimpleBeanInfo implements BeanInfo { * It takes the name of a resource file associated with the * current object's class file and loads an image object * from that file. Typically images will be GIFs. - * <p> + * * @param resourceName A pathname relative to the directory * holding the class file of the current class. For example, * "wombat.gif". diff --git a/jdk/src/share/classes/java/beans/beancontext/BeanContextChildSupport.java b/jdk/src/share/classes/java/beans/beancontext/BeanContextChildSupport.java index 3b6edade049..af95e03e284 100644 --- a/jdk/src/share/classes/java/beans/beancontext/BeanContextChildSupport.java +++ b/jdk/src/share/classes/java/beans/beancontext/BeanContextChildSupport.java @@ -262,7 +262,7 @@ public class BeanContextChildSupport implements BeanContextChild, BeanContextSer * the PropertyVetoException. <P> * * No event is fired if old and new are equal and non-null. - * <P> + * * @param name The programmatic name of the property that is about to * change * diff --git a/jdk/src/share/classes/java/beans/package.html b/jdk/src/share/classes/java/beans/package.html index 9f8234673e7..2b68012cee5 100644 --- a/jdk/src/share/classes/java/beans/package.html +++ b/jdk/src/share/classes/java/beans/package.html @@ -150,7 +150,6 @@ For overview, architecture, and tutorial documentation, please see: <li><a href="http://java.sun.com/docs/books/tutorial/javabeans/">JavaBeans</a>, a trail in <em>The Java Tutorial</em>. <li><a href="http://java.sun.com/products/jfc/tsc/articles/persistence2/">Long-Term Persistence</a>, an article in <em>The Swing Connection</em>. </ul> -<p> </body> </html> diff --git a/jdk/src/share/classes/java/sql/Array.java b/jdk/src/share/classes/java/sql/Array.java index 9e2c210353e..fdc243663ce 100644 --- a/jdk/src/share/classes/java/sql/Array.java +++ b/jdk/src/share/classes/java/sql/Array.java @@ -348,12 +348,11 @@ public interface Array { * This method frees the <code>Array</code> object and releases the resources that * it holds. The object is invalid once the <code>free</code> * method is called. - *<p> + * <p> * After <code>free</code> has been called, any attempt to invoke a * method other than <code>free</code> will result in a <code>SQLException</code> * being thrown. If <code>free</code> is called multiple times, the subsequent * calls to <code>free</code> are treated as a no-op. - *<p> * * @throws SQLException if an error occurs releasing * the Array's resources diff --git a/jdk/src/share/classes/java/sql/BatchUpdateException.java b/jdk/src/share/classes/java/sql/BatchUpdateException.java index 9c0c072140c..fd5fb2242a9 100644 --- a/jdk/src/share/classes/java/sql/BatchUpdateException.java +++ b/jdk/src/share/classes/java/sql/BatchUpdateException.java @@ -203,7 +203,6 @@ public class BatchUpdateException extends SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> * * @since 1.2 * @see #BatchUpdateException(java.lang.String, java.lang.String, int, long[], @@ -378,7 +377,7 @@ public class BatchUpdateException extends SQLException { * there are commands in the batch; otherwise, it will contain an * update count for each command that executed successfully before * the <code>BatchUpdateException</code> was thrown. - *<P> + * <P> * The possible return values for this method were modified for * the Java 2 SDK, Standard Edition, version 1.3. This was done to * accommodate the new option of continuing to process commands @@ -410,7 +409,7 @@ public class BatchUpdateException extends SQLException { * <p> * This constructor should be used when the returned update count may exceed * {@link Integer#MAX_VALUE}. - * <p> + * * @param reason a description of the error * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode an exception code used by a particular @@ -448,7 +447,7 @@ public class BatchUpdateException extends SQLException { * <p> * This method should be used when {@code Statement.executeLargeBatch} is * invoked and the returned update count may exceed {@link Integer#MAX_VALUE}. - * <p> + * * @return an array of <code>long</code> containing the update counts * for the updates that were executed successfully before this error * occurred. Or, if the driver continues to process commands after an diff --git a/jdk/src/share/classes/java/sql/Blob.java b/jdk/src/share/classes/java/sql/Blob.java index ba65c4027d6..090e89b6750 100644 --- a/jdk/src/share/classes/java/sql/Blob.java +++ b/jdk/src/share/classes/java/sql/Blob.java @@ -269,12 +269,11 @@ public interface Blob { * This method frees the <code>Blob</code> object and releases the resources that * it holds. The object is invalid once the <code>free</code> * method is called. - *<p> + * <p> * After <code>free</code> has been called, any attempt to invoke a * method other than <code>free</code> will result in a <code>SQLException</code> * being thrown. If <code>free</code> is called multiple times, the subsequent * calls to <code>free</code> are treated as a no-op. - *<p> * * @throws SQLException if an error occurs releasing * the Blob's resources diff --git a/jdk/src/share/classes/java/sql/CallableStatement.java b/jdk/src/share/classes/java/sql/CallableStatement.java index a830b63ea8b..20da9aae6a9 100644 --- a/jdk/src/share/classes/java/sql/CallableStatement.java +++ b/jdk/src/share/classes/java/sql/CallableStatement.java @@ -1160,13 +1160,13 @@ public interface CallableStatement extends PreparedStatement { * <P> * This method throws an exception if there is an ambiguity, for example, if the * object is of a class implementing more than one of the interfaces named above. - *<p> + * <p> *<b>Note:</b> Not all databases allow for a non-typed Null to be sent to * the backend. For maximum portability, the <code>setNull</code> or the * <code>setObject(String parameterName, Object x, int sqlType)</code> * method should be used * instead of <code>setObject(String parameterName, Object x)</code>. - *<p> + * * @param parameterName the name of the parameter * @param x the object containing the input parameter value * @exception SQLException if parameterName does not correspond to a named @@ -2025,7 +2025,7 @@ public interface CallableStatement extends PreparedStatement { * <code>NVARCHAR</code> * or <code>LONGNVARCHAR</code> parameter as * a <code>String</code> in the Java programming language. - * <p> + * <p> * For the fixed-length type JDBC <code>NCHAR</code>, * the <code>String</code> object * returned has exactly the same value the SQL diff --git a/jdk/src/share/classes/java/sql/Clob.java b/jdk/src/share/classes/java/sql/Clob.java index 2cfd4e47018..b074ac604c0 100644 --- a/jdk/src/share/classes/java/sql/Clob.java +++ b/jdk/src/share/classes/java/sql/Clob.java @@ -317,7 +317,7 @@ public interface Clob { * method other than <code>free</code> will result in a <code>SQLException</code> * being thrown. If <code>free</code> is called multiple times, the subsequent * calls to <code>free</code> are treated as a no-op. - * <p> + * * @throws SQLException if an error occurs releasing * the Clob's resources * diff --git a/jdk/src/share/classes/java/sql/Connection.java b/jdk/src/share/classes/java/sql/Connection.java index 4cedd13dc3b..ea191cd2dba 100644 --- a/jdk/src/share/classes/java/sql/Connection.java +++ b/jdk/src/share/classes/java/sql/Connection.java @@ -273,7 +273,6 @@ public interface Connection extends Wrapper, AutoCloseable { * commits or rolls back an active transaction prior to calling the * <code>close</code> method. If the <code>close</code> method is called * and there is an active transaction, the results are implementation-defined. - * <P> * * @exception SQLException SQLException if a database access error occurs */ @@ -632,7 +631,7 @@ public interface Connection extends Wrapper, AutoCloseable { * Installs the given <code>TypeMap</code> object as the type map for * this <code>Connection</code> object. The type map will be used for the * custom mapping of SQL structured types and distinct types. - *<p> + * <p> * You must set the the values for the <code>TypeMap</code> prior to * callng <code>setMap</code> as a JDBC driver may create an internal copy * of the <code>TypeMap</code>: @@ -1114,7 +1113,7 @@ public interface Connection extends Wrapper, AutoCloseable { * completes, this method returns false. A value of * 0 indicates a timeout is not applied to the * database operation. - * <p> + * * @return true if the connection is valid, false otherwise * @exception SQLException if the value supplied for <code>timeout</code> * is less then 0 @@ -1165,16 +1164,16 @@ public interface Connection extends Wrapper, AutoCloseable { * <li>ClientHostname - The hostname of the computer the application * using the connection is running on.</li> * </ul> - * <p> + * * @param name The name of the client info property to set * @param value The value to set the client info property to. If the * value is null, the current value of the specified * property is cleared. - * <p> + * * @throws SQLClientInfoException if the database server returns an error while * setting the client info value on the database server or this method * is called on a closed connection - * <p> + * * @since 1.6 */ void setClientInfo(String name, String value) @@ -1198,13 +1197,13 @@ public interface Connection extends Wrapper, AutoCloseable { * some databases do not allow multiple client info properties to be set * atomically. For those databases, one or more properties may have been * set before the error occurred. - * <p> + * * * @param properties the list of client info properties to set - * <p> + * * @see java.sql.Connection#setClientInfo(String, String) setClientInfo(String, String) * @since 1.6 - * <p> + * * @throws SQLClientInfoException if the database server returns an error while * setting the clientInfo values on the database server or this method * is called on a closed connection @@ -1222,15 +1221,15 @@ public interface Connection extends Wrapper, AutoCloseable { * <p> * Applications may use the <code>DatabaseMetaData.getClientInfoProperties</code> * method to determine the client info properties supported by the driver. - * <p> + * * @param name The name of the client info property to retrieve - * <p> + * * @return The value of the client info property specified - * <p> + * * @throws SQLException if the database server returns an error when - * fetching the client info value from the database - *or this method is called on a closed connection - * <p> + * fetching the client info value from the database + * or this method is called on a closed connection + * * @since 1.6 * * @see java.sql.DatabaseMetaData#getClientInfoProperties @@ -1243,14 +1242,14 @@ public interface Connection extends Wrapper, AutoCloseable { * property supported by the driver. The value of a client info property * may be null if the property has not been set and does not have a * default value. - * <p> + * * @return A <code>Properties</code> object that contains the name and current value of * each of the client info properties supported by the driver. - * <p> + * * @throws SQLException if the database server returns an error when * fetching the client info values from the database * or this method is called on a closed connection - * <p> + * * @since 1.6 */ Properties getClientInfo() @@ -1294,7 +1293,7 @@ SQLException; * <code>Struct.getSQLTypeName</code>. * @param attributes the attributes that populate the returned object - * @return a Struct object that maps to the given SQL type and is populated with the given attributes + * @return a Struct object that maps to the given SQL type and is populated with the given attributes * @throws SQLException if a database error occurs, the typeName is null or this method is called on a closed connection * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this data type * @since 1.6 @@ -1426,7 +1425,7 @@ throws SQLException; * problems, the connection will be marked as closed, any resources held by * the connection will be released and both the connection and * statement will be unusable. - *<p> + * <p> * When the driver determines that the {@code setNetworkTimeout} timeout * value has expired, the JDBC driver marks the connection * closed and releases any resources held by the connection. diff --git a/jdk/src/share/classes/java/sql/DataTruncation.java b/jdk/src/share/classes/java/sql/DataTruncation.java index 3a00c439f9f..5aef67c2af1 100644 --- a/jdk/src/share/classes/java/sql/DataTruncation.java +++ b/jdk/src/share/classes/java/sql/DataTruncation.java @@ -49,7 +49,6 @@ public class DataTruncation extends SQLWarning { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> * * @param index The index of the parameter or column value * @param parameter true if a parameter value was truncated @@ -77,7 +76,6 @@ public class DataTruncation extends SQLWarning { * the reason set to "Data truncation", the * vendor code set to 0, and * the other fields set to the given values. - * <p> * * @param index The index of the parameter or column value * @param parameter true if a parameter value was truncated diff --git a/jdk/src/share/classes/java/sql/DatabaseMetaData.java b/jdk/src/share/classes/java/sql/DatabaseMetaData.java index 11b013df863..07b7475c4b3 100644 --- a/jdk/src/share/classes/java/sql/DatabaseMetaData.java +++ b/jdk/src/share/classes/java/sql/DatabaseMetaData.java @@ -1417,7 +1417,7 @@ public interface DatabaseMetaData extends Wrapper { * A possible value for the column * <code>COLUMN_TYPE</code> * in the <code>ResultSet</code> - * returned by the method <code>getProcedureColumns</code>. + * returned by the method <code>getProcedureColumns</code>. */ int procedureColumnOut = 4; /** @@ -2367,7 +2367,6 @@ public interface DatabaseMetaData extends Wrapper { * <P>If SQL distinct or structured types are supported, then information on the * individual types may be obtained from the getUDTs() method. * - * * <P>Each type description has the following columns: * <OL> @@ -2377,7 +2376,7 @@ public interface DatabaseMetaData extends Wrapper { * <LI><B>LITERAL_PREFIX</B> String {@code =>} prefix used to quote a literal * (may be <code>null</code>) * <LI><B>LITERAL_SUFFIX</B> String {@code =>} suffix used to quote a literal - (may be <code>null</code>) + * (may be <code>null</code>) * <LI><B>CREATE_PARAMS</B> String {@code =>} parameters used in creating * the type (may be <code>null</code>) * <LI><B>NULLABLE</B> short {@code =>} can you use NULL for this type. @@ -2821,7 +2820,7 @@ public interface DatabaseMetaData extends Wrapper { /** * Retrieves the connection that produced this metadata object. - * <P> + * * @return the connection that produced this metadata object * @exception SQLException if a database access error occurs * @since 1.2 @@ -2870,9 +2869,9 @@ public interface DatabaseMetaData extends Wrapper { * * @return <code>true</code> if auto-generated keys can be retrieved * after a statement has executed; <code>false</code> otherwise - *<p>If <code>true</code> is returned, the JDBC driver must support the + * <p>If <code>true</code> is returned, the JDBC driver must support the * returning of auto-generated keys for at least SQL INSERT statements - *<p> + * * @exception SQLException if a database access error occurs * @since 1.4 */ @@ -3138,7 +3137,7 @@ public interface DatabaseMetaData extends Wrapper { * whether the value returned by the method * <code>SQLException.getSQLState</code> is an * X/Open (now know as Open Group) SQL CLI SQLSTATE value. - * <P> + * * @since 1.4 */ int sqlStateXOpen = 1; @@ -3148,7 +3147,7 @@ public interface DatabaseMetaData extends Wrapper { * <code>DatabaseMetaData.getSQLStateType</code> which is used to indicate * whether the value returned by the method * <code>SQLException.getSQLState</code> is an SQLSTATE value. - * <P> + * * @since 1.6 */ int sqlStateSQL = 2; @@ -3282,12 +3281,12 @@ public interface DatabaseMetaData extends Wrapper { * </ol> * <p> * The <code>ResultSet</code> is sorted by the NAME column - * <p> + * * @return A <code>ResultSet</code> object; each row is a supported client info * property - * <p> + * * @exception SQLException if a database access error occurs - * <p> + * * @since 1.6 */ ResultSet getClientInfoProperties() diff --git a/jdk/src/share/classes/java/sql/Date.java b/jdk/src/share/classes/java/sql/Date.java index 9ac1e1c6f74..ab5121fca21 100644 --- a/jdk/src/share/classes/java/sql/Date.java +++ b/jdk/src/share/classes/java/sql/Date.java @@ -150,7 +150,7 @@ public class Date extends java.util.Date { /** * Formats a date in the date escape format yyyy-mm-dd. - * <P> + * * @return a String in yyyy-mm-dd format */ @SuppressWarnings("deprecation") diff --git a/jdk/src/share/classes/java/sql/JDBCType.java b/jdk/src/share/classes/java/sql/JDBCType.java index 89db37bbf59..1ca4b3d0286 100644 --- a/jdk/src/share/classes/java/sql/JDBCType.java +++ b/jdk/src/share/classes/java/sql/JDBCType.java @@ -27,7 +27,7 @@ package java.sql; /** * <P>Defines the constants that are used to identify generic * SQL types, called JDBC types. - * <p> + * * @see SQLType * @since 1.8 */ diff --git a/jdk/src/share/classes/java/sql/PreparedStatement.java b/jdk/src/share/classes/java/sql/PreparedStatement.java index 2b2e7f3374b..f33fd10aae9 100644 --- a/jdk/src/share/classes/java/sql/PreparedStatement.java +++ b/jdk/src/share/classes/java/sql/PreparedStatement.java @@ -892,7 +892,6 @@ public interface PreparedStatement extends Statement { * Sets the designated parameter to the given <code>java.sql.SQLXML</code> object. * The driver converts this to an * SQL <code>XML</code> value when it sends it to the database. - * <p> * * @param parameterIndex index of the first parameter is 1, the second is 2, ... * @param xmlObject a <code>SQLXML</code> object that maps an SQL <code>XML</code> value diff --git a/jdk/src/share/classes/java/sql/ResultSet.java b/jdk/src/share/classes/java/sql/ResultSet.java index d939a9a582e..656fa535528 100644 --- a/jdk/src/share/classes/java/sql/ResultSet.java +++ b/jdk/src/share/classes/java/sql/ResultSet.java @@ -1259,7 +1259,6 @@ public interface ResultSet extends Wrapper, AutoCloseable { * If an input stream is open for the current row, a call to the method * <code>previous</code> will implicitly close it. A <code>ResultSet</code> * object's warning change is cleared when a new row is read. - *<p> * * @return <code>true</code> if the cursor is now positioned on a valid row; * <code>false</code> if the cursor is positioned before the first row @@ -3206,7 +3205,6 @@ public interface ResultSet extends Wrapper, AutoCloseable { * row. The updater methods do not update the underlying database; instead * the <code>updateRow</code> or <code>insertRow</code> methods are called * to update the database. - * <p> * * @param columnIndex the first column is 1, the second 2, ... * @param xmlObject the value for the column to be updated @@ -3232,7 +3230,6 @@ public interface ResultSet extends Wrapper, AutoCloseable { * row. The updater methods do not update the underlying database; instead * the <code>updateRow</code> or <code>insertRow</code> methods are called * to update the database. - * <p> * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column * @param xmlObject the column value diff --git a/jdk/src/share/classes/java/sql/SQLClientInfoException.java b/jdk/src/share/classes/java/sql/SQLClientInfoException.java index 131e407824f..8c8e8c867ff 100644 --- a/jdk/src/share/classes/java/sql/SQLClientInfoException.java +++ b/jdk/src/share/classes/java/sql/SQLClientInfoException.java @@ -40,7 +40,7 @@ import java.util.Map; * properties are identified by passing a * <code>Map<String,ClientInfoStatus></code> to * the appropriate <code>SQLClientInfoException</code> constructor. - * <p> + * * @see ClientInfoStatus * @see Connection#setClientInfo * @since 1.6 @@ -60,7 +60,6 @@ public class SQLClientInfoException extends SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> * * @since 1.6 */ @@ -78,7 +77,6 @@ public class SQLClientInfoException extends SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> * * @param failedProperties A Map containing the property values that could not * be set. The keys in the Map @@ -86,7 +84,7 @@ public class SQLClientInfoException extends SQLException { * properties that could not be set and * the values contain one of the reason codes * defined in <code>ClientInfoStatus</code> - * <p> + * * @since 1.6 */ public SQLClientInfoException(Map<String, ClientInfoStatus> failedProperties) { @@ -102,8 +100,6 @@ public class SQLClientInfoException extends SQLException { * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code> and the vendor code is initialized to 0. * - * <p> - * * @param failedProperties A Map containing the property values that could not * be set. The keys in the Map * contain the names of the client info @@ -112,7 +108,7 @@ public class SQLClientInfoException extends SQLException { * defined in <code>ClientInfoStatus</code> * @param cause the (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. - * <p> + * * @since 1.6 */ public SQLClientInfoException(Map<String, ClientInfoStatus> failedProperties, @@ -132,7 +128,6 @@ public class SQLClientInfoException extends SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> * * @param reason a description of the exception * @param failedProperties A Map containing the property values that could not @@ -141,7 +136,7 @@ public class SQLClientInfoException extends SQLException { * properties that could not be set and * the values contain one of the reason codes * defined in <code>ClientInfoStatus</code> - * <p> + * * @since 1.6 */ public SQLClientInfoException(String reason, @@ -157,7 +152,6 @@ public class SQLClientInfoException extends SQLException { * <code>failedProperties</code>. * The <code>SQLState</code> is initialized * to <code>null</code> and the vendor code is initialized to 0. - * <p> * * @param reason a description of the exception * @param failedProperties A Map containing the property values that could not @@ -168,7 +162,7 @@ public class SQLClientInfoException extends SQLException { * defined in <code>ClientInfoStatus</code> * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. - * <p> + * * @since 1.6 */ public SQLClientInfoException(String reason, @@ -188,17 +182,16 @@ public class SQLClientInfoException extends SQLException { * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> * - * @param reason a description of the exception - * @param SQLState an XOPEN or SQL:2003 code identifying the exception + * @param reason a description of the exception + * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param failedProperties A Map containing the property values that could not * be set. The keys in the Map * contain the names of the client info * properties that could not be set and * the values contain one of the reason codes * defined in <code>ClientInfoStatus</code> - * <p> + * * @since 1.6 */ public SQLClientInfoException(String reason, @@ -213,19 +206,18 @@ public class SQLClientInfoException extends SQLException { * Constructs a <code>SQLClientInfoException</code> object initialized with a * given <code>reason</code>, <code>SQLState</code>, <code>cause</code> * and <code>failedProperties</code>. The vendor code is initialized to 0. - * <p> * - * @param reason a description of the exception - * @param SQLState an XOPEN or SQL:2003 code identifying the exception + * @param reason a description of the exception + * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param failedProperties A Map containing the property values that could not * be set. The keys in the Map * contain the names of the client info * properties that could not be set and * the values contain one of the reason codes * defined in <code>ClientInfoStatus</code> - * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating + * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. - * <p> + * * @since 1.6 */ public SQLClientInfoException(String reason, @@ -245,18 +237,17 @@ public class SQLClientInfoException extends SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> * - * @param reason a description of the exception - * @param SQLState an XOPEN or SQL:2003 code identifying the exception - * @param vendorCode a database vendor-specific exception code + * @param reason a description of the exception + * @param SQLState an XOPEN or SQL:2003 code identifying the exception + * @param vendorCode a database vendor-specific exception code * @param failedProperties A Map containing the property values that could not * be set. The keys in the Map * contain the names of the client info * properties that could not be set and * the values contain one of the reason codes * defined in <code>ClientInfoStatus</code> - * <p> + * * @since 1.6 */ public SQLClientInfoException(String reason, @@ -273,11 +264,10 @@ public class SQLClientInfoException extends SQLException { * given <code>reason</code>, <code>SQLState</code>, * <code>cause</code>, <code>vendorCode</code> and * <code>failedProperties</code>. - * <p> * - * @param reason a description of the exception - * @param SQLState an XOPEN or SQL:2003 code identifying the exception - * @param vendorCode a database vendor-specific exception code + * @param reason a description of the exception + * @param SQLState an XOPEN or SQL:2003 code identifying the exception + * @param vendorCode a database vendor-specific exception code * @param failedProperties A Map containing the property values that could not * be set. The keys in the Map * contain the names of the client info @@ -285,8 +275,8 @@ public class SQLClientInfoException extends SQLException { * the values contain one of the reason codes * defined in <code>ClientInfoStatus</code> * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating - * the cause is non-existent or unknown. - * <p> + * the cause is non-existent or unknown. + * * @since 1.6 */ public SQLClientInfoException(String reason, @@ -305,11 +295,10 @@ public class SQLClientInfoException extends SQLException { * keys in the Map contain the names of the client info * properties that could not be set and the values contain one of the * reason codes defined in <code>ClientInfoStatus</code> - * <p> * * @return Map list containing the client info properties that could * not be set - * <p> + * * @since 1.6 */ public Map<String, ClientInfoStatus> getFailedProperties() { diff --git a/jdk/src/share/classes/java/sql/SQLDataException.java b/jdk/src/share/classes/java/sql/SQLDataException.java index 8dc1753a6b7..5d193b410e0 100644 --- a/jdk/src/share/classes/java/sql/SQLDataException.java +++ b/jdk/src/share/classes/java/sql/SQLDataException.java @@ -45,7 +45,6 @@ public class SQLDataException extends SQLNonTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> * * @since 1.6 */ @@ -62,7 +61,6 @@ public class SQLDataException extends SQLNonTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> * * @param reason a description of the exception * @since 1.6 @@ -79,7 +77,7 @@ public class SQLDataException extends SQLNonTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -96,7 +94,7 @@ public class SQLDataException extends SQLNonTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -114,7 +112,7 @@ public class SQLDataException extends SQLNonTransientException { * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 @@ -128,7 +126,7 @@ public class SQLDataException extends SQLNonTransientException { * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -142,7 +140,7 @@ public class SQLDataException extends SQLNonTransientException { * Constructs a <code>SQLDataException</code> object with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -157,7 +155,7 @@ public class SQLDataException extends SQLNonTransientException { * Constructs a <code>SQLDataException</code> object with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLException.java b/jdk/src/share/classes/java/sql/SQLException.java index d6c9bd2e05c..0076679fdb1 100644 --- a/jdk/src/share/classes/java/sql/SQLException.java +++ b/jdk/src/share/classes/java/sql/SQLException.java @@ -61,7 +61,7 @@ public class SQLException extends java.lang.Exception * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code @@ -88,7 +88,7 @@ public class SQLException extends java.lang.Exception * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception */ @@ -112,7 +112,7 @@ public class SQLException extends java.lang.Exception * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception */ public SQLException(String reason) { @@ -155,7 +155,7 @@ public class SQLException extends java.lang.Exception * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> * (which is saved for later retrieval by the <code>getCause()</code> method); * may be null indicating the cause is non-existent or unknown. @@ -176,7 +176,7 @@ public class SQLException extends java.lang.Exception * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code> * (which is saved for later retrieval by the <code>getCause()</code> method); @@ -197,7 +197,7 @@ public class SQLException extends java.lang.Exception * Constructs a <code>SQLException</code> object with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param sqlState an XOPEN or SQL:2003 code identifying the exception * @param cause the underlying reason for this <code>SQLException</code> @@ -223,7 +223,7 @@ public class SQLException extends java.lang.Exception * Constructs a <code>SQLException</code> object with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param sqlState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLFeatureNotSupportedException.java b/jdk/src/share/classes/java/sql/SQLFeatureNotSupportedException.java index 98900fb4d26..88d82aa8cca 100644 --- a/jdk/src/share/classes/java/sql/SQLFeatureNotSupportedException.java +++ b/jdk/src/share/classes/java/sql/SQLFeatureNotSupportedException.java @@ -50,7 +50,7 @@ public class SQLFeatureNotSupportedException extends SQLNonTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @since 1.6 */ public SQLFeatureNotSupportedException() { @@ -66,7 +66,7 @@ public class SQLFeatureNotSupportedException extends SQLNonTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @since 1.6 */ @@ -82,7 +82,7 @@ public class SQLFeatureNotSupportedException extends SQLNonTransientException { * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -99,7 +99,7 @@ public class SQLFeatureNotSupportedException extends SQLNonTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -117,7 +117,7 @@ public class SQLFeatureNotSupportedException extends SQLNonTransientException { * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 @@ -132,7 +132,7 @@ public class SQLFeatureNotSupportedException extends SQLNonTransientException { * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -147,7 +147,7 @@ public class SQLFeatureNotSupportedException extends SQLNonTransientException { * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -163,7 +163,7 @@ public class SQLFeatureNotSupportedException extends SQLNonTransientException { * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLIntegrityConstraintViolationException.java b/jdk/src/share/classes/java/sql/SQLIntegrityConstraintViolationException.java index 86b4e8f91d3..3a6b1cc1f0f 100644 --- a/jdk/src/share/classes/java/sql/SQLIntegrityConstraintViolationException.java +++ b/jdk/src/share/classes/java/sql/SQLIntegrityConstraintViolationException.java @@ -45,7 +45,7 @@ public class SQLIntegrityConstraintViolationException extends SQLNonTransientExc * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @since 1.6 */ public SQLIntegrityConstraintViolationException() { @@ -61,7 +61,7 @@ public class SQLIntegrityConstraintViolationException extends SQLNonTransientExc * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @since 1.6 */ @@ -77,7 +77,7 @@ public class SQLIntegrityConstraintViolationException extends SQLNonTransientExc * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -94,7 +94,7 @@ public class SQLIntegrityConstraintViolationException extends SQLNonTransientExc * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -112,11 +112,11 @@ public class SQLIntegrityConstraintViolationException extends SQLNonTransientExc * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 - */ + */ public SQLIntegrityConstraintViolationException(Throwable cause) { super(cause); } @@ -127,7 +127,7 @@ public class SQLIntegrityConstraintViolationException extends SQLNonTransientExc * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -142,7 +142,7 @@ public class SQLIntegrityConstraintViolationException extends SQLNonTransientExc * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -158,7 +158,7 @@ public class SQLIntegrityConstraintViolationException extends SQLNonTransientExc * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLInvalidAuthorizationSpecException.java b/jdk/src/share/classes/java/sql/SQLInvalidAuthorizationSpecException.java index 63009d98acb..97cdfba993c 100644 --- a/jdk/src/share/classes/java/sql/SQLInvalidAuthorizationSpecException.java +++ b/jdk/src/share/classes/java/sql/SQLInvalidAuthorizationSpecException.java @@ -45,7 +45,7 @@ public class SQLInvalidAuthorizationSpecException extends SQLNonTransientExcepti * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @since 1.6 */ public SQLInvalidAuthorizationSpecException() { @@ -61,7 +61,7 @@ public class SQLInvalidAuthorizationSpecException extends SQLNonTransientExcepti * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @since 1.6 */ @@ -77,7 +77,7 @@ public class SQLInvalidAuthorizationSpecException extends SQLNonTransientExcepti * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -94,7 +94,7 @@ public class SQLInvalidAuthorizationSpecException extends SQLNonTransientExcepti * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -104,19 +104,19 @@ public class SQLInvalidAuthorizationSpecException extends SQLNonTransientExcepti super(reason,SQLState,vendorCode); } - /** + /** * Constructs a <code>SQLInvalidAuthorizationSpecException</code> object - * with a given <code>cause</code>. + * with a given <code>cause</code>. * The <code>SQLState</code> is initialized * to <code>null</code> and the vendor code is initialized to 0. * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 - */ + */ public SQLInvalidAuthorizationSpecException(Throwable cause) { super(cause); } @@ -127,7 +127,7 @@ public class SQLInvalidAuthorizationSpecException extends SQLNonTransientExcepti * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -142,7 +142,7 @@ public class SQLInvalidAuthorizationSpecException extends SQLNonTransientExcepti * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -158,7 +158,7 @@ public class SQLInvalidAuthorizationSpecException extends SQLNonTransientExcepti * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLNonTransientConnectionException.java b/jdk/src/share/classes/java/sql/SQLNonTransientConnectionException.java index f28252af18d..a712cef50aa 100644 --- a/jdk/src/share/classes/java/sql/SQLNonTransientConnectionException.java +++ b/jdk/src/share/classes/java/sql/SQLNonTransientConnectionException.java @@ -45,7 +45,6 @@ public class SQLNonTransientConnectionException extends java.sql.SQLNonTransient * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> * * @since 1.6 */ @@ -62,7 +61,7 @@ public class SQLNonTransientConnectionException extends java.sql.SQLNonTransient * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @since 1.6 */ @@ -78,7 +77,7 @@ public class SQLNonTransientConnectionException extends java.sql.SQLNonTransient * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -95,7 +94,7 @@ public class SQLNonTransientConnectionException extends java.sql.SQLNonTransient * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -105,15 +104,15 @@ public class SQLNonTransientConnectionException extends java.sql.SQLNonTransient super(reason,SQLState,vendorCode); } - /** + /** * Constructs a <code>SQLNonTransientConnectionException</code> object - * with a given <code>cause</code>. - * The <code>SQLState</code> is initialized + * with a given <code>cause</code>. + * The <code>SQLState</code> is initialized * to <code>null</code> and the vendor code is initialized to 0. * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 @@ -128,7 +127,7 @@ public class SQLNonTransientConnectionException extends java.sql.SQLNonTransient * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -143,7 +142,7 @@ public class SQLNonTransientConnectionException extends java.sql.SQLNonTransient * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -155,11 +154,11 @@ public class SQLNonTransientConnectionException extends java.sql.SQLNonTransient } /** - * Constructs a <code>SQLNonTransientConnectionException</code> object + * Constructs a <code>SQLNonTransientConnectionException</code> object * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLNonTransientException.java b/jdk/src/share/classes/java/sql/SQLNonTransientException.java index 9d1a636ee49..db16e68b18e 100644 --- a/jdk/src/share/classes/java/sql/SQLNonTransientException.java +++ b/jdk/src/share/classes/java/sql/SQLNonTransientException.java @@ -29,7 +29,6 @@ package java.sql; * The subclass of {@link SQLException} thrown when an instance where a retry * of the same operation would fail unless the cause of the <code>SQLException</code> * is corrected. - *<p> * * @since 1.6 */ @@ -43,7 +42,6 @@ public class SQLNonTransientException extends java.sql.SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> * * @since 1.6 */ @@ -60,7 +58,6 @@ public class SQLNonTransientException extends java.sql.SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> * * @param reason a description of the exception * @since 1.6 @@ -77,7 +74,7 @@ public class SQLNonTransientException extends java.sql.SQLException { * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -94,7 +91,7 @@ public class SQLNonTransientException extends java.sql.SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -112,7 +109,7 @@ public class SQLNonTransientException extends java.sql.SQLException { * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 @@ -127,7 +124,7 @@ public class SQLNonTransientException extends java.sql.SQLException { * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -143,7 +140,7 @@ public class SQLNonTransientException extends java.sql.SQLException { * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -155,11 +152,11 @@ public class SQLNonTransientException extends java.sql.SQLException { } /** - * Constructs a <code>SQLNonTransientException</code> object + * Constructs a <code>SQLNonTransientException</code> object * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLPermission.java b/jdk/src/share/classes/java/sql/SQLPermission.java index 951430d90cc..1224738a887 100644 --- a/jdk/src/share/classes/java/sql/SQLPermission.java +++ b/jdk/src/share/classes/java/sql/SQLPermission.java @@ -104,7 +104,7 @@ import java.security.*; * registered Drivers and release its resources.</td> * </tr> * </table> - *<p> + * * @since 1.3 * @see java.security.BasicPermission * @see java.security.Permission diff --git a/jdk/src/share/classes/java/sql/SQLRecoverableException.java b/jdk/src/share/classes/java/sql/SQLRecoverableException.java index 76b32a412c1..5c21cb20b75 100644 --- a/jdk/src/share/classes/java/sql/SQLRecoverableException.java +++ b/jdk/src/share/classes/java/sql/SQLRecoverableException.java @@ -32,7 +32,6 @@ package java.sql; * distributed transaction, the transaction branch. At a minimum, * the recovery operation must include closing the current connection and getting * a new connection. - *<p> * * @since 1.6 */ @@ -46,7 +45,7 @@ public class SQLRecoverableException extends java.sql.SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @since 1.6 */ public SQLRecoverableException() { @@ -62,7 +61,7 @@ public class SQLRecoverableException extends java.sql.SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @since 1.6 */ @@ -78,7 +77,7 @@ public class SQLRecoverableException extends java.sql.SQLException { * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -95,7 +94,7 @@ public class SQLRecoverableException extends java.sql.SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -113,7 +112,7 @@ public class SQLRecoverableException extends java.sql.SQLException { * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 @@ -128,7 +127,7 @@ public class SQLRecoverableException extends java.sql.SQLException { * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -143,7 +142,7 @@ public class SQLRecoverableException extends java.sql.SQLException { * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -159,7 +158,7 @@ public class SQLRecoverableException extends java.sql.SQLException { * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLSyntaxErrorException.java b/jdk/src/share/classes/java/sql/SQLSyntaxErrorException.java index 2b3142fa6b5..bf7efc286f9 100644 --- a/jdk/src/share/classes/java/sql/SQLSyntaxErrorException.java +++ b/jdk/src/share/classes/java/sql/SQLSyntaxErrorException.java @@ -44,7 +44,7 @@ public class SQLSyntaxErrorException extends SQLNonTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @since 1.6 */ public SQLSyntaxErrorException() { @@ -60,7 +60,7 @@ public class SQLSyntaxErrorException extends SQLNonTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @since 1.6 */ @@ -76,7 +76,7 @@ public class SQLSyntaxErrorException extends SQLNonTransientException { * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -93,7 +93,7 @@ public class SQLSyntaxErrorException extends SQLNonTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -111,7 +111,7 @@ public class SQLSyntaxErrorException extends SQLNonTransientException { * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 @@ -126,7 +126,7 @@ public class SQLSyntaxErrorException extends SQLNonTransientException { * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -141,7 +141,7 @@ public class SQLSyntaxErrorException extends SQLNonTransientException { * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -157,7 +157,7 @@ public class SQLSyntaxErrorException extends SQLNonTransientException { * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLTimeoutException.java b/jdk/src/share/classes/java/sql/SQLTimeoutException.java index 3f9ed357d30..2e0dfecac4d 100644 --- a/jdk/src/share/classes/java/sql/SQLTimeoutException.java +++ b/jdk/src/share/classes/java/sql/SQLTimeoutException.java @@ -44,7 +44,7 @@ public class SQLTimeoutException extends SQLTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @since 1.6 */ public SQLTimeoutException() { @@ -60,7 +60,7 @@ public class SQLTimeoutException extends SQLTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @since 1.6 */ @@ -76,7 +76,7 @@ public class SQLTimeoutException extends SQLTransientException { * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -93,7 +93,7 @@ public class SQLTimeoutException extends SQLTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -111,7 +111,7 @@ public class SQLTimeoutException extends SQLTransientException { * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 @@ -126,7 +126,7 @@ public class SQLTimeoutException extends SQLTransientException { * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -141,7 +141,7 @@ public class SQLTimeoutException extends SQLTransientException { * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -157,7 +157,7 @@ public class SQLTimeoutException extends SQLTransientException { * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLTransactionRollbackException.java b/jdk/src/share/classes/java/sql/SQLTransactionRollbackException.java index 910f8b40827..2aa2fdba3f3 100644 --- a/jdk/src/share/classes/java/sql/SQLTransactionRollbackException.java +++ b/jdk/src/share/classes/java/sql/SQLTransactionRollbackException.java @@ -44,7 +44,7 @@ public class SQLTransactionRollbackException extends SQLTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @since 1.6 */ public SQLTransactionRollbackException() { @@ -60,7 +60,7 @@ public class SQLTransactionRollbackException extends SQLTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @since 1.6 */ @@ -76,7 +76,7 @@ public class SQLTransactionRollbackException extends SQLTransientException { * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -93,7 +93,7 @@ public class SQLTransactionRollbackException extends SQLTransientException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -111,7 +111,7 @@ public class SQLTransactionRollbackException extends SQLTransientException { * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 @@ -126,7 +126,7 @@ public class SQLTransactionRollbackException extends SQLTransientException { * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -141,7 +141,7 @@ public class SQLTransactionRollbackException extends SQLTransientException { * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -157,7 +157,7 @@ public class SQLTransactionRollbackException extends SQLTransientException { * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLTransientConnectionException.java b/jdk/src/share/classes/java/sql/SQLTransientConnectionException.java index e1c9bef15f4..d585bfbe98f 100644 --- a/jdk/src/share/classes/java/sql/SQLTransientConnectionException.java +++ b/jdk/src/share/classes/java/sql/SQLTransientConnectionException.java @@ -45,7 +45,7 @@ public class SQLTransientConnectionException extends java.sql.SQLTransientExcept * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @since 1.6 */ public SQLTransientConnectionException() { @@ -61,7 +61,7 @@ public class SQLTransientConnectionException extends java.sql.SQLTransientExcept * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @since 1.6 */ @@ -77,7 +77,7 @@ public class SQLTransientConnectionException extends java.sql.SQLTransientExcept * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -94,7 +94,7 @@ public class SQLTransientConnectionException extends java.sql.SQLTransientExcept * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -112,7 +112,7 @@ public class SQLTransientConnectionException extends java.sql.SQLTransientExcept * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 @@ -127,7 +127,7 @@ public class SQLTransientConnectionException extends java.sql.SQLTransientExcept * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code>(which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -142,7 +142,7 @@ public class SQLTransientConnectionException extends java.sql.SQLTransientExcept * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -158,7 +158,7 @@ public class SQLTransientConnectionException extends java.sql.SQLTransientExcept * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLTransientException.java b/jdk/src/share/classes/java/sql/SQLTransientException.java index 4271df92623..df5a1ed23c7 100644 --- a/jdk/src/share/classes/java/sql/SQLTransientException.java +++ b/jdk/src/share/classes/java/sql/SQLTransientException.java @@ -29,7 +29,6 @@ package java.sql; * The subclass of {@link SQLException} is thrown in situations where a * previously failed operation might be able to succeed when the operation is * retried without any intervention by application-level functionality. - *<p> * * @since 1.6 */ @@ -43,7 +42,7 @@ public class SQLTransientException extends java.sql.SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @since 1.6 */ public SQLTransientException() { @@ -59,7 +58,7 @@ public class SQLTransientException extends java.sql.SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @since 1.6 */ @@ -75,7 +74,7 @@ public class SQLTransientException extends java.sql.SQLException { * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @since 1.6 @@ -92,7 +91,7 @@ public class SQLTransientException extends java.sql.SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor specific exception code @@ -110,7 +109,7 @@ public class SQLTransientException extends java.sql.SQLException { * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. * @since 1.6 @@ -125,7 +124,7 @@ public class SQLTransientException extends java.sql.SQLException { * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. @@ -140,7 +139,7 @@ public class SQLTransientException extends java.sql.SQLException { * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the exception. * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -156,7 +155,7 @@ public class SQLTransientException extends java.sql.SQLException { * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the exception * @param SQLState an XOPEN or SQL:2003 code identifying the exception * @param vendorCode a database vendor-specific exception code diff --git a/jdk/src/share/classes/java/sql/SQLWarning.java b/jdk/src/share/classes/java/sql/SQLWarning.java index 3dd334821fb..37d3bfc61a3 100644 --- a/jdk/src/share/classes/java/sql/SQLWarning.java +++ b/jdk/src/share/classes/java/sql/SQLWarning.java @@ -52,7 +52,7 @@ public class SQLWarning extends SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the warning * @param SQLState an XOPEN or SQL:2003 code identifying the warning * @param vendorCode a database vendor-specific warning code @@ -73,7 +73,7 @@ public class SQLWarning extends SQLException { * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code * is initialized to 0. - * <p> + * * @param reason a description of the warning * @param SQLState an XOPEN or SQL:2003 code identifying the warning */ @@ -92,7 +92,7 @@ public class SQLWarning extends SQLException { * The <code>cause</code> is not initialized, and may subsequently be * initialized by a call to the * {@link Throwable#initCause(java.lang.Throwable)} method. - * <p> + * * @param reason a description of the warning */ public SQLWarning(String reason) { @@ -123,7 +123,7 @@ public class SQLWarning extends SQLException { * The <code>reason</code> is initialized to <code>null</code> if * <code>cause==null</code> or to <code>cause.toString()</code> if * <code>cause!=null</code>. - * <p> + * * @param cause the underlying reason for this <code>SQLWarning</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating * the cause is non-existent or unknown. */ @@ -138,7 +138,7 @@ public class SQLWarning extends SQLException { * <code>reason</code> and <code>cause</code>. * The <code>SQLState</code> is initialized to <code>null</code> * and the vendor code is initialized to 0. - * <p> + * * @param reason a description of the warning * @param cause the underlying reason for this <code>SQLWarning</code> * (which is saved for later retrieval by the <code>getCause()</code> method); @@ -154,7 +154,7 @@ public class SQLWarning extends SQLException { * with a given * <code>reason</code>, <code>SQLState</code> and <code>cause</code>. * The vendor code is initialized to 0. - * <p> + * * @param reason a description of the warning * @param SQLState an XOPEN or SQL:2003 code identifying the warning * @param cause the underlying reason for this <code>SQLWarning</code> (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating @@ -171,7 +171,7 @@ public class SQLWarning extends SQLException { * with a given * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> * and <code>cause</code>. - * <p> + * * @param reason a description of the warning * @param SQLState an XOPEN or SQL:2003 code identifying the warning * @param vendorCode a database vendor-specific warning code diff --git a/jdk/src/share/classes/java/sql/Statement.java b/jdk/src/share/classes/java/sql/Statement.java index 7c8cff8185d..cf60bffc4f4 100644 --- a/jdk/src/share/classes/java/sql/Statement.java +++ b/jdk/src/share/classes/java/sql/Statement.java @@ -522,7 +522,7 @@ public interface Statement extends Wrapper, AutoCloseable { /** * Empties this <code>Statement</code> object's current list of * SQL commands. - * <P> + * * @exception SQLException if a database access error occurs, * this method is called on a closed <code>Statement</code> or the * driver does not support batch updates @@ -1009,13 +1009,13 @@ public interface Statement extends Wrapper, AutoCloseable { * By default, a <code>Statement</code> is not poolable when created, and * a <code>PreparedStatement</code> and <code>CallableStatement</code> * are poolable when created. - * <p> + * * @param poolable requests that the statement be pooled if true and * that the statement not be pooled if false - * <p> + * * @throws SQLException if this method is called on a closed * <code>Statement</code> - * <p> + * * @since 1.6 */ void setPoolable(boolean poolable) @@ -1024,15 +1024,15 @@ public interface Statement extends Wrapper, AutoCloseable { /** * Returns a value indicating whether the <code>Statement</code> * is poolable or not. - * <p> + * * @return <code>true</code> if the <code>Statement</code> * is poolable; <code>false</code> otherwise - * <p> + * * @throws SQLException if this method is called on a closed * <code>Statement</code> - * <p> + * * @since 1.6 - * <p> + * * @see java.sql.Statement#setPoolable(boolean) setPoolable(boolean) */ boolean isPoolable() diff --git a/jdk/src/share/classes/java/sql/Time.java b/jdk/src/share/classes/java/sql/Time.java index a61ee1cfa8e..46a14b59a80 100644 --- a/jdk/src/share/classes/java/sql/Time.java +++ b/jdk/src/share/classes/java/sql/Time.java @@ -253,7 +253,8 @@ public class Time extends java.util.Date { /** * Obtains an instance of {@code Time} from a {@link LocalTime} object * with the same hour, minute and second time value as the given - * {@code LocalTime}. + * {@code LocalTime}. The nanosecond field from {@code LocalTime} is + * not part of the newly created {@code Time} object. * * @param time a {@code LocalTime} to convert * @return a {@code Time} object @@ -269,7 +270,8 @@ public class Time extends java.util.Date { * Converts this {@code Time} object to a {@code LocalTime}. * <p> * The conversion creates a {@code LocalTime} that represents the same - * hour, minute, and second time value as this {@code Time}. + * hour, minute, and second time value as this {@code Time}. The + * nanosecond {@code LocalTime} field will be set to zero. * * @return a {@code LocalTime} object representing the same time value * @since 1.8 diff --git a/jdk/src/share/classes/java/sql/Timestamp.java b/jdk/src/share/classes/java/sql/Timestamp.java index f4a527ab958..71c5a3e80a5 100644 --- a/jdk/src/share/classes/java/sql/Timestamp.java +++ b/jdk/src/share/classes/java/sql/Timestamp.java @@ -269,7 +269,7 @@ public class Timestamp extends java.util.Date { * Formats a timestamp in JDBC timestamp escape format. * <code>yyyy-mm-dd hh:mm:ss.fffffffff</code>, * where <code>ffffffffff</code> indicates nanoseconds. - * <P> + * * @return a <code>String</code> object in * <code>yyyy-mm-dd hh:mm:ss.fffffffff</code> format */ diff --git a/jdk/src/share/classes/java/sql/package.html b/jdk/src/share/classes/java/sql/package.html index d60cb5354ce..2ed4641e343 100644 --- a/jdk/src/share/classes/java/sql/package.html +++ b/jdk/src/share/classes/java/sql/package.html @@ -44,7 +44,7 @@ The reader/writer facility, available through the <code>javax.sql.RowSet</code> group of interfaces, can be customized to use and update data from a spread sheet, flat file, or any other tabular data source. -<P> + <h2>What the JDBC<sup><font size=-2>TM</font></sup> 4.2 API Includes</h2> The JDBC<sup><font size=-2>TM</font></sup> 4.2 API includes both the <code>java.sql</code> package, referred to as the JDBC core API, @@ -56,7 +56,7 @@ The <code>javax.sql</code> package extends the functionality of the JDBC API from a client-side API to a server-side API, and it is an essential part of the Java<sup><font size=-2>TM</font></sup> Enterprise Edition (Java EE<sup><font size=-2>TM</font></sup>) technology. -<P> + <h2>Versions</h2> The JDBC 4.2 API incorporates all of the previous JDBC API versions: <UL> @@ -101,7 +101,6 @@ Java<sup><font size=-2>TM</font></sup> 2 SDK, Standard Edition, version 1.3 release. This class is used to prevent unauthorized access to the logging stream associated with the <code>DriverManager</code>, which may contain information such as table names, column data, and so on. -<p> <h2>What the <code>java.sql</code> Package Contains</h2> The <code>java.sql</code> package contains API for the following: @@ -181,7 +180,7 @@ The <code>java.sql</code> package contains API for the following: commands in a batch update executed successfully </UL> </UL> -<P> + <h3><code>java.sql</code> and <code>javax.sql</code> Features Introduced in the JDBC 4.2 API</h3> <UL> <LI>Added <code>JDBCType</code> enum and <code>SQLType</code> interface</li> @@ -192,7 +191,7 @@ The <code>java.sql</code> package contains API for the following: <LI>Added support for large update counts</LI> </UL> -<P> + <h3><code>java.sql</code> and <code>javax.sql</code> Features Introduced in the JDBC 4.1 API</h3> <UL> <LI>Allow <code>Connection</code>, @@ -231,8 +230,8 @@ The <code>java.sql</code> package contains API for the following: </UL> -<P> -<P> + + <h3><code>java.sql</code> and <code>javax.sql</code> Features Introduced in the JDBC 3.0 API</h3> <UL> <LI>Pooled statements -- reuse of statements associated with a pooled @@ -258,7 +257,7 @@ The <code>java.sql</code> package contains API for the following: allows JDBC drivers access to objects stored outside a data source <LI>Addition of metadata for retrieving SQL type hierarchies </UL> -<P> + <h3><code>java.sql</code> Features Introduced in the JDBC 2.1 Core API</h3> <UL> <LI>Scrollable result sets--using new methods in the <code>ResultSet</code> @@ -273,7 +272,7 @@ The <code>java.sql</code> package contains API for the following: additional security, and support for time zones in date, time, and timestamp values. </UL> -<P> + <h3><code>javax.sql</code> Features Introduced in the JDBC 2.0 Optional Package API</h3> <UL> @@ -287,8 +286,8 @@ Package API</h3> <LI><code>RowSet</code> technology -- providing a convenient means of handling and passing data </UL> -<P> -<P> + + <h3>Custom Mapping of UDTs</h3> A user-defined type (UDT) defined in SQL can be mapped to a class in the Java programming language. An SQL structured type or an SQL <code>DISTINCT</code> @@ -317,24 +316,18 @@ object back to its SQL type to store it in the data source. <h2>Package Specification</h2> <ul> - <li><a href="http://java.sun.com/products/jdbc/download.html">Specification - of the JDBC 4.0 API</a> + <li><a href="https://jcp.org/en/jsr/detail?id=221">JDBC 4.2 Specification</a> </ul> <h2>Related Documentation</h2> <ul> - <li><a href="../../../technotes/guides/jdbc/getstart/GettingStartedTOC.fm.html">Getting Started</a>--overviews of the major interfaces -<P> - <li><a href="http://java.sun.com/docs/books/tutorial/jdbc">Chapters on the JDBC - API</a>--from the online version of <i>The Java Tutorial Continued</i> -<P> - <li><a href="http://java.sun.com/docs/books/jdbc"> -<i>JDBC<sup><font size=-2>TM</font></sup>API Tutorial and Reference, -Third Edition</i></a>-- -a complete reference and tutorial for the JDBC 3.0 API + <li><a href="http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html"> + Lesson:JDBC Basics(The Javaxx Tutorials > JDBC(™) Database Access)</a> + + <li><a href="http://www.oracle.com/technetwork/java/index-142838.html"> + <i>JDBC™API Tutorial and Reference, Third Edition</i></a> </ul> -<P> -@since 1.1 + </body> </html> diff --git a/jdk/src/share/classes/java/time/LocalTime.java b/jdk/src/share/classes/java/time/LocalTime.java index 4cc12f74dc3..0fcf89d26a3 100644 --- a/jdk/src/share/classes/java/time/LocalTime.java +++ b/jdk/src/share/classes/java/time/LocalTime.java @@ -838,9 +838,9 @@ public final class LocalTime case NANO_OF_SECOND: return withNano((int) newValue); case NANO_OF_DAY: return LocalTime.ofNanoOfDay(newValue); case MICRO_OF_SECOND: return withNano((int) newValue * 1000); - case MICRO_OF_DAY: return plusNanos((newValue - toNanoOfDay() / 1000) * 1000); + case MICRO_OF_DAY: return LocalTime.ofNanoOfDay(newValue * 1000); case MILLI_OF_SECOND: return withNano((int) newValue * 1000_000); - case MILLI_OF_DAY: return plusNanos((newValue - toNanoOfDay() / 1000_000) * 1000_000); + case MILLI_OF_DAY: return LocalTime.ofNanoOfDay(newValue * 1000_000); case SECOND_OF_MINUTE: return withSecond((int) newValue); case SECOND_OF_DAY: return plusSeconds(newValue - toSecondOfDay()); case MINUTE_OF_HOUR: return withMinute((int) newValue); diff --git a/jdk/src/share/classes/java/time/chrono/ChronoLocalDate.java b/jdk/src/share/classes/java/time/chrono/ChronoLocalDate.java index baa7b69348c..6fe6a4578a9 100644 --- a/jdk/src/share/classes/java/time/chrono/ChronoLocalDate.java +++ b/jdk/src/share/classes/java/time/chrono/ChronoLocalDate.java @@ -101,19 +101,12 @@ import java.util.Objects; * <h3>When to use this interface</h3> * The design of the API encourages the use of {@code LocalDate} rather than this * interface, even in the case where the application needs to deal with multiple - * calendar systems. The rationale for this is explored in the following documentation. + * calendar systems. * <p> - * The primary use case where this interface should be used is where the generic - * type parameter {@code <D>} is fully defined as a specific chronology. - * In that case, the assumptions of that chronology are known at development - * time and specified in the code. - * <p> - * When the chronology is defined in the generic type parameter as ? or otherwise - * unknown at development time, the rest of the discussion below applies. - * <p> - * To emphasize the point, declaring a method signature, field or variable as this - * interface type can initially seem like the sensible way to globalize an application, - * however it is usually the wrong approach. + * This concept can seem surprising at first, as the natural way to globalize an + * application might initially appear to be to abstract the calendar system. + * However, as explored below, abstracting the calendar system is usually the wrong + * approach, resulting in logic errors and hard to find bugs. * As such, it should be considered an application-wide architectural decision to choose * to use this interface as opposed to {@code LocalDate}. * diff --git a/jdk/src/share/classes/java/time/format/DateTimeFormatter.java b/jdk/src/share/classes/java/time/format/DateTimeFormatter.java index 39d91986f86..e92f3e9a122 100644 --- a/jdk/src/share/classes/java/time/format/DateTimeFormatter.java +++ b/jdk/src/share/classes/java/time/format/DateTimeFormatter.java @@ -1932,8 +1932,8 @@ public final class DateTimeFormatter { */ private TemporalAccessor parseResolved0(final CharSequence text, final ParsePosition position) { ParsePosition pos = (position != null ? position : new ParsePosition(0)); - Parsed unresolved = parseUnresolved0(text, pos); - if (unresolved == null || pos.getErrorIndex() >= 0 || (position == null && pos.getIndex() < text.length())) { + DateTimeParseContext context = parseUnresolved0(text, pos); + if (context == null || pos.getErrorIndex() >= 0 || (position == null && pos.getIndex() < text.length())) { String abbr; if (text.length() > 64) { abbr = text.subSequence(0, 64).toString() + "..."; @@ -1948,7 +1948,7 @@ public final class DateTimeFormatter { pos.getIndex(), text, pos.getIndex()); } } - return unresolved.resolve(resolverStyle, resolverFields); + return context.toResolved(resolverStyle, resolverFields); } /** @@ -1991,10 +1991,14 @@ public final class DateTimeFormatter { * @throws IndexOutOfBoundsException if the position is invalid */ public TemporalAccessor parseUnresolved(CharSequence text, ParsePosition position) { - return parseUnresolved0(text, position); + DateTimeParseContext context = parseUnresolved0(text, position); + if (context == null) { + return null; + } + return context.toUnresolved(); } - private Parsed parseUnresolved0(CharSequence text, ParsePosition position) { + private DateTimeParseContext parseUnresolved0(CharSequence text, ParsePosition position) { Objects.requireNonNull(text, "text"); Objects.requireNonNull(position, "position"); DateTimeParseContext context = new DateTimeParseContext(this); @@ -2005,7 +2009,7 @@ public final class DateTimeFormatter { return null; } position.setIndex(pos); // errorIndex not updated from input - return context.toParsed(); + return context; } //----------------------------------------------------------------------- @@ -2126,23 +2130,23 @@ public final class DateTimeFormatter { @Override public Object parseObject(String text, ParsePosition pos) { Objects.requireNonNull(text, "text"); - Parsed unresolved; + DateTimeParseContext context; try { - unresolved = formatter.parseUnresolved0(text, pos); + context = formatter.parseUnresolved0(text, pos); } catch (IndexOutOfBoundsException ex) { if (pos.getErrorIndex() < 0) { pos.setErrorIndex(0); } return null; } - if (unresolved == null) { + if (context == null) { if (pos.getErrorIndex() < 0) { pos.setErrorIndex(0); } return null; } try { - TemporalAccessor resolved = unresolved.resolve(formatter.resolverStyle, formatter.resolverFields); + TemporalAccessor resolved = context.toResolved(formatter.resolverStyle, formatter.resolverFields); if (parseType == null) { return resolved; } diff --git a/jdk/src/share/classes/java/time/format/DateTimeFormatterBuilder.java b/jdk/src/share/classes/java/time/format/DateTimeFormatterBuilder.java index 9b9d9637a6c..f04d59b2303 100644 --- a/jdk/src/share/classes/java/time/format/DateTimeFormatterBuilder.java +++ b/jdk/src/share/classes/java/time/format/DateTimeFormatterBuilder.java @@ -2596,8 +2596,16 @@ public final class DateTimeFormatterBuilder { return value; } - boolean isFixedWidth() { - return subsequentWidth == -1; + /** + * For NumberPrinterParser, the width is fixed depending on the + * minWidth, maxWidth, signStyle and whether subsequent fields are fixed. + * @param context the context + * @return true if the field is fixed width + * @see DateTimeFormatterBuilder#appendValue(java.time.temporal.TemporalField, int) + */ + boolean isFixedWidth(DateTimeParseContext context) { + return subsequentWidth == -1 || + (subsequentWidth > 0 && minWidth == maxWidth && signStyle == SignStyle.NOT_NEGATIVE); } @Override @@ -2626,12 +2634,12 @@ public final class DateTimeFormatterBuilder { return ~position; } } - int effMinWidth = (context.isStrict() || isFixedWidth() ? minWidth : 1); + int effMinWidth = (context.isStrict() || isFixedWidth(context) ? minWidth : 1); int minEndPos = position + effMinWidth; if (minEndPos > length) { return ~position; } - int effMaxWidth = (context.isStrict() || isFixedWidth() ? maxWidth : 9) + Math.max(subsequentWidth, 0); + int effMaxWidth = (context.isStrict() || isFixedWidth(context) ? maxWidth : 9) + Math.max(subsequentWidth, 0); long total = 0; BigInteger totalBig = null; int pos = position; @@ -2866,6 +2874,21 @@ public final class DateTimeFormatterBuilder { this.subsequentWidth + subsequentWidth); } + /** + * For a ReducedPrinterParser, fixed width is false if the mode is strict, + * otherwise it is set as for NumberPrinterParser. + * @param context the context + * @return if the field is fixed width + * @see DateTimeFormatterBuilder#appendValueReduced(java.time.temporal.TemporalField, int, int, int) + */ + @Override + boolean isFixedWidth(DateTimeParseContext context) { + if (context.isStrict() == false) { + return false; + } + return super.isFixedWidth(context); + } + @Override public String toString() { return "ReducedValue(" + field + "," + minWidth + "," + maxWidth + "," + (baseDate != null ? baseDate : baseValue) + ")"; diff --git a/jdk/src/share/classes/java/time/format/DateTimeParseContext.java b/jdk/src/share/classes/java/time/format/DateTimeParseContext.java index 026a595896c..e3ca5e981a5 100644 --- a/jdk/src/share/classes/java/time/format/DateTimeParseContext.java +++ b/jdk/src/share/classes/java/time/format/DateTimeParseContext.java @@ -64,10 +64,12 @@ package java.time.format; import java.time.ZoneId; import java.time.chrono.Chronology; import java.time.chrono.IsoChronology; +import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField; import java.util.ArrayList; import java.util.Locale; import java.util.Objects; +import java.util.Set; import java.util.function.Consumer; /** @@ -77,8 +79,8 @@ import java.util.function.Consumer; * It has the ability to store and retrieve the parsed values and manage optional segments. * It also provides key information to the parsing methods. * <p> - * Once parsing is complete, the {@link #toParsed()} is used to obtain the data. - * It contains a method to resolve the separate parsed fields into meaningful values. + * Once parsing is complete, the {@link #toUnresolved()} is used to obtain the unresolved + * result data. The {@link #toResolved()} is used to obtain the resolved result. * * @implSpec * This class is a mutable context intended for use from a single thread. @@ -309,16 +311,27 @@ final class DateTimeParseContext { } /** - * Gets the result of the parse. + * Gets the unresolved result of the parse. * * @return the result of the parse, not null */ - Parsed toParsed() { - Parsed parsed = currentParsed(); - parsed.effectiveChrono = getEffectiveChronology(); - return parsed; + Parsed toUnresolved() { + return currentParsed(); } + /** + * Gets the resolved result of the parse. + * + * @return the result of the parse, not null + */ + TemporalAccessor toResolved(ResolverStyle resolverStyle, Set<TemporalField> resolverFields) { + Parsed parsed = currentParsed(); + parsed.chrono = getEffectiveChronology(); + parsed.zone = (parsed.zone != null ? parsed.zone : formatter.getZone()); + return parsed.resolve(resolverStyle, resolverFields); + } + + //----------------------------------------------------------------------- /** * Gets the first value that was parsed for the specified field. diff --git a/jdk/src/share/classes/java/time/format/Parsed.java b/jdk/src/share/classes/java/time/format/Parsed.java index f9878bbb580..1ae19b58a73 100644 --- a/jdk/src/share/classes/java/time/format/Parsed.java +++ b/jdk/src/share/classes/java/time/format/Parsed.java @@ -135,10 +135,6 @@ final class Parsed implements TemporalAccessor { * Whether a leap-second is parsed. */ boolean leapSecond; - /** - * The effective chronology. - */ - Chronology effectiveChrono; /** * The resolver style to use. */ @@ -241,7 +237,6 @@ final class Parsed implements TemporalAccessor { fieldValues.keySet().retainAll(resolverFields); } this.resolverStyle = resolverStyle; - chrono = effectiveChrono; resolveFields(); resolveTimeLenient(); crossCheck(); @@ -266,14 +261,16 @@ final class Parsed implements TemporalAccessor { TemporalAccessor resolvedObject = targetField.resolve(fieldValues, this, resolverStyle); if (resolvedObject != null) { if (resolvedObject instanceof ChronoZonedDateTime) { - ChronoZonedDateTime<?> czdt = (ChronoZonedDateTime) resolvedObject; - if (zone.equals(czdt.getZone()) == false) { + ChronoZonedDateTime<?> czdt = (ChronoZonedDateTime<?>) resolvedObject; + if (zone == null) { + zone = czdt.getZone(); + } else if (zone.equals(czdt.getZone()) == false) { throw new DateTimeException("ChronoZonedDateTime must use the effective parsed zone: " + zone); } resolvedObject = czdt.toLocalDateTime(); } if (resolvedObject instanceof ChronoLocalDateTime) { - ChronoLocalDateTime<?> cldt = (ChronoLocalDateTime) resolvedObject; + ChronoLocalDateTime<?> cldt = (ChronoLocalDateTime<?>) resolvedObject; updateCheckConflict(cldt.toLocalTime(), Period.ZERO); updateCheckConflict(cldt.toLocalDate()); changedCount++; diff --git a/jdk/src/share/classes/java/util/ArrayList.java b/jdk/src/share/classes/java/util/ArrayList.java index b06c8fd1913..cdae99d0534 100644 --- a/jdk/src/share/classes/java/util/ArrayList.java +++ b/jdk/src/share/classes/java/util/ArrayList.java @@ -609,11 +609,14 @@ public class ArrayList<E> extends AbstractList<E> * @throws IndexOutOfBoundsException if {@code fromIndex} or * {@code toIndex} is out of range * ({@code fromIndex < 0 || - * fromIndex >= size() || * toIndex > size() || * toIndex < fromIndex}) */ protected void removeRange(int fromIndex, int toIndex) { + if (fromIndex > toIndex) { + throw new IndexOutOfBoundsException( + outOfBoundsMsg(fromIndex, toIndex)); + } modCount++; int numMoved = size - toIndex; System.arraycopy(elementData, toIndex, elementData, fromIndex, @@ -655,6 +658,13 @@ public class ArrayList<E> extends AbstractList<E> return "Index: "+index+", Size: "+size; } + /** + * A version used in checking (fromIndex > toIndex) condition + */ + private static String outOfBoundsMsg(int fromIndex, int toIndex) { + return "From Index: " + fromIndex + " > To Index: " + toIndex; + } + /** * Removes from this list all of its elements that are contained in the * specified collection. diff --git a/jdk/src/share/classes/java/util/Spliterators.java b/jdk/src/share/classes/java/util/Spliterators.java index 3f97a833a68..79c0ef3efde 100644 --- a/jdk/src/share/classes/java/util/Spliterators.java +++ b/jdk/src/share/classes/java/util/Spliterators.java @@ -384,7 +384,7 @@ public final class Spliterators { */ private static void checkFromToBounds(int arrayLength, int origin, int fence) { if (origin > fence) { - throw new IllegalArgumentException( + throw new ArrayIndexOutOfBoundsException( "origin(" + origin + ") > fence(" + fence + ")"); } if (origin < 0) { diff --git a/jdk/src/share/classes/javax/imageio/spi/DigraphNode.java b/jdk/src/share/classes/javax/imageio/spi/DigraphNode.java index 7fb4c625853..4554f09a14a 100644 --- a/jdk/src/share/classes/javax/imageio/spi/DigraphNode.java +++ b/jdk/src/share/classes/javax/imageio/spi/DigraphNode.java @@ -132,17 +132,17 @@ class DigraphNode<E> implements Cloneable, Serializable { * appropriately. */ public void dispose() { - @SuppressWarnings("unchecked") - DigraphNode<E>[] inNodesArray = (DigraphNode<E>[])inNodes.toArray(); + Object[] inNodesArray = inNodes.toArray(); for(int i=0; i<inNodesArray.length; i++) { - DigraphNode<E> node = inNodesArray[i]; + @SuppressWarnings("unchecked") + DigraphNode<E> node = (DigraphNode<E>)inNodesArray[i]; node.removeEdge(this); } - @SuppressWarnings("unchecked") - DigraphNode<E>[] outNodesArray = (DigraphNode<E>[])outNodes.toArray(); + Object[] outNodesArray = outNodes.toArray(); for(int i=0; i<outNodesArray.length; i++) { - DigraphNode<E> node = outNodesArray[i]; + @SuppressWarnings("unchecked") + DigraphNode<E> node = (DigraphNode<E>)outNodesArray[i]; removeEdge(node); } } diff --git a/jdk/src/share/classes/javax/sound/midi/spi/MidiDeviceProvider.java b/jdk/src/share/classes/javax/sound/midi/spi/MidiDeviceProvider.java index 4146d3d9fff..b4c95a1ec60 100644 --- a/jdk/src/share/classes/javax/sound/midi/spi/MidiDeviceProvider.java +++ b/jdk/src/share/classes/javax/sound/midi/spi/MidiDeviceProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * 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,26 +26,24 @@ package javax.sound.midi.spi; import javax.sound.midi.MidiDevice; -import javax.sound.midi.MidiUnavailableException; /** - * A <code>MidiDeviceProvider</code> is a factory or provider for a particular - * type of MIDI device. - * This mechanism allows the implementation to determine - * how resources are managed in the creation and management of - * a device. + * A {@code MidiDeviceProvider} is a factory or provider for a particular type + * of MIDI device. This mechanism allows the implementation to determine how + * resources are managed in the creation and management of a device. * * @author Kara Kytle */ public abstract class MidiDeviceProvider { - /** * Indicates whether the device provider supports the device represented by * the specified device info object. - * @param info an info object that describes the device for which support is queried - * @return <code>true</code> if the specified device is supported, - * otherwise <code>false</code> + * + * @param info an info object that describes the device for which support + * is queried + * @return {@code true} if the specified device is supported, otherwise + * {@code false} */ public boolean isDeviceSupported(MidiDevice.Info info) { @@ -59,21 +57,22 @@ public abstract class MidiDeviceProvider { return false; } - /** - * Obtains the set of info objects representing the device - * or devices provided by this <code>MidiDeviceProvider</code>. + * Obtains the set of info objects representing the device or devices + * provided by this {@code MidiDeviceProvider}. + * * @return set of device info objects */ public abstract MidiDevice.Info[] getDeviceInfo(); - /** * Obtains an instance of the device represented by the info object. - * @param info an info object that describes the desired device + * + * @param info an info object that describes the desired device * @return device instance * @throws IllegalArgumentException if the info object specified does not - * match the info object for a device supported by this <code>MidiDeviceProvider</code>. + * match the info object for a device supported by this + * {@code MidiDeviceProvider} */ public abstract MidiDevice getDevice(MidiDevice.Info info); } diff --git a/jdk/src/share/classes/javax/sound/midi/spi/MidiFileReader.java b/jdk/src/share/classes/javax/sound/midi/spi/MidiFileReader.java index 2c050b80030..ecb72b32dd2 100644 --- a/jdk/src/share/classes/javax/sound/midi/spi/MidiFileReader.java +++ b/jdk/src/share/classes/javax/sound/midi/spi/MidiFileReader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,9 +35,10 @@ import javax.sound.midi.Sequence; import javax.sound.midi.InvalidMidiDataException; /** - * A <code>MidiFileReader</code> supplies MIDI file-reading services. Classes implementing this - * interface can parse the format information from one or more types of - * MIDI file, and can produce a <code>Sequence</code> object from files of these types. + * A {@code MidiFileReader} supplies MIDI file-reading services. Classes + * implementing this interface can parse the format information from one or more + * types of MIDI file, and can produce a {@link Sequence} object from files of + * these types. * * @author Kara Kytle * @since 1.3 @@ -45,98 +46,102 @@ import javax.sound.midi.InvalidMidiDataException; public abstract class MidiFileReader { /** - * Obtains the MIDI file format of the input stream provided. The stream must - * point to valid MIDI file data. In general, MIDI file readers may + * Obtains the MIDI file format of the input stream provided. The stream + * must point to valid MIDI file data. In general, MIDI file readers may * need to read some data from the stream before determining whether they - * support it. These parsers must - * be able to mark the stream, read enough data to determine whether they - * support the stream, and, if not, reset the stream's read pointer to its original - * position. If the input stream does not support this, this method may fail - * with an <code>IOException</code>. - * @param stream the input stream from which file format information should be - * extracted - * @return a <code>MidiFileFormat</code> object describing the MIDI file format - * @throws InvalidMidiDataException if the stream does not point to valid MIDI - * file data recognized by the system + * support it. These parsers must be able to mark the stream, read enough + * data to determine whether they support the stream, and, if not, reset the + * stream's read pointer to its original position. If the input stream does + * not support this, this method may fail with an {@code IOException}. + * + * @param stream the input stream from which file format information + * should be extracted + * @return a {@code MidiFileFormat} object describing the MIDI file format + * @throws InvalidMidiDataException if the stream does not point to valid + * MIDI file data recognized by the system * @throws IOException if an I/O exception occurs * @see InputStream#markSupported * @see InputStream#mark */ - public abstract MidiFileFormat getMidiFileFormat(InputStream stream) throws InvalidMidiDataException, IOException; - + public abstract MidiFileFormat getMidiFileFormat(InputStream stream) + throws InvalidMidiDataException, IOException; /** - * Obtains the MIDI file format of the URL provided. The URL must - * point to valid MIDI file data. - * @param url the URL from which file format information should be - * extracted - * @return a <code>MidiFileFormat</code> object describing the MIDI file format + * Obtains the MIDI file format of the URL provided. The URL must point to + * valid MIDI file data. + * + * @param url the URL from which file format information should be + * extracted + * @return a {@code MidiFileFormat} object describing the MIDI file format * @throws InvalidMidiDataException if the URL does not point to valid MIDI - * file data recognized by the system + * file data recognized by the system * @throws IOException if an I/O exception occurs */ - public abstract MidiFileFormat getMidiFileFormat(URL url) throws InvalidMidiDataException, IOException; - + public abstract MidiFileFormat getMidiFileFormat(URL url) + throws InvalidMidiDataException, IOException; /** - * Obtains the MIDI file format of the <code>File</code> provided. - * The <code>File</code> must point to valid MIDI file data. - * @param file the <code>File</code> from which file format information should be - * extracted - * @return a <code>MidiFileFormat</code> object describing the MIDI file format - * @throws InvalidMidiDataException if the <code>File</code> does not point to valid MIDI - * file data recognized by the system + * Obtains the MIDI file format of the {@code File} provided. The + * {@code File} must point to valid MIDI file data. + * + * @param file the {@code File} from which file format information should + * be extracted + * @return a {@code MidiFileFormat} object describing the MIDI file format + * @throws InvalidMidiDataException if the {@code File} does not point to + * valid MIDI file data recognized by the system * @throws IOException if an I/O exception occurs */ - public abstract MidiFileFormat getMidiFileFormat(File file) throws InvalidMidiDataException, IOException; - + public abstract MidiFileFormat getMidiFileFormat(File file) + throws InvalidMidiDataException, IOException; /** - * Obtains a MIDI sequence from the input stream provided. The stream must - * point to valid MIDI file data. In general, MIDI file readers may - * need to read some data from the stream before determining whether they - * support it. These parsers must - * be able to mark the stream, read enough data to determine whether they - * support the stream, and, if not, reset the stream's read pointer to its original - * position. If the input stream does not support this, this method may fail - * with an IOException. - * @param stream the input stream from which the <code>Sequence</code> should be - * constructed - * @return a <code>Sequence</code> object based on the MIDI file data contained - * in the input stream. - * @throws InvalidMidiDataException if the stream does not point to valid MIDI - * file data recognized by the system + * Obtains a MIDI sequence from the input stream provided. The stream must + * point to valid MIDI file data. In general, MIDI file readers may need to + * read some data from the stream before determining whether they support + * it. These parsers must be able to mark the stream, read enough data to + * determine whether they support the stream, and, if not, reset the + * stream's read pointer to its original position. If the input stream does + * not support this, this method may fail with an IOException. + * + * @param stream the input stream from which the {@code Sequence} should + * be constructed + * @return a {@code Sequence} object based on the MIDI file data contained + * in the input stream. + * @throws InvalidMidiDataException if the stream does not point to valid + * MIDI file data recognized by the system * @throws IOException if an I/O exception occurs * @see InputStream#markSupported * @see InputStream#mark */ - public abstract Sequence getSequence(InputStream stream) throws InvalidMidiDataException, IOException; - + public abstract Sequence getSequence(InputStream stream) + throws InvalidMidiDataException, IOException; /** - * Obtains a MIDI sequence from the URL provided. The URL must - * point to valid MIDI file data. - * @param url the URL for which the <code>Sequence</code> should be - * constructed - * @return a <code>Sequence</code> object based on the MIDI file data pointed - * to by the URL + * Obtains a MIDI sequence from the URL provided. The URL must point to + * valid MIDI file data. + * + * @param url the URL for which the {@code Sequence} should be constructed + * @return a {@code Sequence} object based on the MIDI file data pointed to + * by the URL * @throws InvalidMidiDataException if the URL does not point to valid MIDI - * file data recognized by the system + * file data recognized by the system * @throws IOException if an I/O exception occurs */ - public abstract Sequence getSequence(URL url) throws InvalidMidiDataException, IOException; - + public abstract Sequence getSequence(URL url) + throws InvalidMidiDataException, IOException; /** - * Obtains a MIDI sequence from the <code>File</code> provided. The <code>File</code> must - * point to valid MIDI file data. - * @param file the <code>File</code> from which the <code>Sequence</code> should be - * constructed - * @return a <code>Sequence</code> object based on the MIDI file data pointed - * to by the <code>File</code> - * @throws InvalidMidiDataException if the <code>File</code> does not point to valid MIDI - * file data recognized by the system + * Obtains a MIDI sequence from the {@code File} provided. The {@code File} + * must point to valid MIDI file data. + * + * @param file the {@code File} from which the {@code Sequence} should be + * constructed + * @return a {@code Sequence} object based on the MIDI file data pointed to + * by the {@code File} + * @throws InvalidMidiDataException if the {@code File} does not point to + * valid MIDI file data recognized by the system * @throws IOException if an I/O exception occurs */ - public abstract Sequence getSequence(File file) throws InvalidMidiDataException, IOException; + public abstract Sequence getSequence(File file) + throws InvalidMidiDataException, IOException; } diff --git a/jdk/src/share/classes/javax/sound/midi/spi/MidiFileWriter.java b/jdk/src/share/classes/javax/sound/midi/spi/MidiFileWriter.java index 531c54852a9..a1800f7f701 100644 --- a/jdk/src/share/classes/javax/sound/midi/spi/MidiFileWriter.java +++ b/jdk/src/share/classes/javax/sound/midi/spi/MidiFileWriter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * 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,45 +30,44 @@ import java.io.IOException; import java.io.OutputStream; import javax.sound.midi.Sequence; -import javax.sound.midi.MidiFileFormat; /** - * A <code>MidiFileWriter</code> supplies MIDI file-writing services. Classes - * that implement this interface can write one or more types of MIDI file from - * a <code>{@link Sequence}</code> object. + * A {@code MidiFileWriter} supplies MIDI file-writing services. Classes that + * implement this interface can write one or more types of MIDI file from a + * {@link Sequence} object. * * @author Kara Kytle * @since 1.3 */ public abstract class MidiFileWriter { - /** * Obtains the set of MIDI file types for which file writing support is * provided by this file writer. - * @return array of file types. If no file types are supported, - * an array of length 0 is returned. + * + * @return array of file types. If no file types are supported, an array of + * length 0 is returned. */ public abstract int[] getMidiFileTypes(); - /** - * Obtains the file types that this file writer can write from the - * sequence specified. - * @param sequence the sequence for which MIDI file type support - * is queried - * @return array of file types. If no file types are supported, - * returns an array of length 0. + * Obtains the file types that this file writer can write from the sequence + * specified. + * + * @param sequence the sequence for which MIDI file type support is + * queried + * @return array of file types. If no file types are supported, returns an + * array of length 0. */ public abstract int[] getMidiFileTypes(Sequence sequence); - /** * Indicates whether file writing support for the specified MIDI file type * is provided by this file writer. - * @param fileType the file type for which write capabilities are queried - * @return <code>true</code> if the file type is supported, - * otherwise <code>false</code> + * + * @param fileType the file type for which write capabilities are queried + * @return {@code true} if the file type is supported, otherwise + * {@code false} */ public boolean isFileTypeSupported(int fileType) { @@ -81,14 +80,14 @@ public abstract class MidiFileWriter { return false; } - /** * Indicates whether a MIDI file of the file type specified can be written * from the sequence indicated. - * @param fileType the file type for which write capabilities are queried - * @param sequence the sequence for which file writing support is queried - * @return <code>true</code> if the file type is supported for this sequence, - * otherwise <code>false</code> + * + * @param fileType the file type for which write capabilities are queried + * @param sequence the sequence for which file writing support is queried + * @return {@code true} if the file type is supported for this sequence, + * otherwise {@code false} */ public boolean isFileTypeSupported(int fileType, Sequence sequence) { @@ -101,35 +100,38 @@ public abstract class MidiFileWriter { return false; } - /** * Writes a stream of bytes representing a MIDI file of the file type * indicated to the output stream provided. - * @param in sequence containing MIDI data to be written to the file - * @param fileType type of the file to be written to the output stream - * @param out stream to which the file data should be written + * + * @param in sequence containing MIDI data to be written to the file + * @param fileType type of the file to be written to the output stream + * @param out stream to which the file data should be written * @return the number of bytes written to the output stream * @throws IOException if an I/O exception occurs * @throws IllegalArgumentException if the file type is not supported by - * this file writer + * this file writer * @see #isFileTypeSupported(int, Sequence) - * @see #getMidiFileTypes(Sequence) + * @see #getMidiFileTypes(Sequence) */ - public abstract int write(Sequence in, int fileType, OutputStream out) throws IOException; - + public abstract int write(Sequence in, int fileType, OutputStream out) + throws IOException; /** * Writes a stream of bytes representing a MIDI file of the file type * indicated to the external file provided. - * @param in sequence containing MIDI data to be written to the external file - * @param fileType type of the file to be written to the external file - * @param out external file to which the file data should be written + * + * @param in sequence containing MIDI data to be written to the external + * file + * @param fileType type of the file to be written to the external file + * @param out external file to which the file data should be written * @return the number of bytes written to the file * @throws IOException if an I/O exception occurs * @throws IllegalArgumentException if the file type is not supported by - * this file writer + * this file writer * @see #isFileTypeSupported(int, Sequence) - * @see #getMidiFileTypes(Sequence) + * @see #getMidiFileTypes(Sequence) */ - public abstract int write(Sequence in, int fileType, File out) throws IOException; + public abstract int write(Sequence in, int fileType, File out) + throws IOException; } diff --git a/jdk/src/share/classes/javax/sound/midi/spi/SoundbankReader.java b/jdk/src/share/classes/javax/sound/midi/spi/SoundbankReader.java index fec13785118..c7e82d9960f 100644 --- a/jdk/src/share/classes/javax/sound/midi/spi/SoundbankReader.java +++ b/jdk/src/share/classes/javax/sound/midi/spi/SoundbankReader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * 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,60 +25,58 @@ package javax.sound.midi.spi; -import java.io.InputStream; -import java.io.IOException; import java.io.File; - +import java.io.IOException; +import java.io.InputStream; import java.net.URL; -import javax.sound.midi.Soundbank; import javax.sound.midi.InvalidMidiDataException; - +import javax.sound.midi.Soundbank; /** - * A <code>SoundbankReader</code> supplies soundbank file-reading services. - * Concrete subclasses of <code>SoundbankReader</code> parse a given - * soundbank file, producing a {@link javax.sound.midi.Soundbank} - * object that can be loaded into a {@link javax.sound.midi.Synthesizer}. + * A {@code SoundbankReader} supplies soundbank file-reading services. Concrete + * subclasses of {@code SoundbankReader} parse a given soundbank file, producing + * a {@link javax.sound.midi.Soundbank} object that can be loaded into a + * {@link javax.sound.midi.Synthesizer}. * * @since 1.3 * @author Kara Kytle */ public abstract class SoundbankReader { - /** * Obtains a soundbank object from the URL provided. - * @param url URL representing the soundbank. + * + * @param url URL representing the soundbank. * @return soundbank object - * @throws InvalidMidiDataException if the URL does not point to - * valid MIDI soundbank data recognized by this soundbank reader + * @throws InvalidMidiDataException if the URL does not point to valid MIDI + * soundbank data recognized by this soundbank reader * @throws IOException if an I/O error occurs */ - public abstract Soundbank getSoundbank(URL url) throws InvalidMidiDataException, IOException; - + public abstract Soundbank getSoundbank(URL url) + throws InvalidMidiDataException, IOException; /** - * Obtains a soundbank object from the <code>InputStream</code> provided. - * @param stream <code>InputStream</code> representing the soundbank + * Obtains a soundbank object from the {@code InputStream} provided. + * + * @param stream {@code InputStream} representing the soundbank * @return soundbank object - * @throws InvalidMidiDataException if the stream does not point to - * valid MIDI soundbank data recognized by this soundbank reader + * @throws InvalidMidiDataException if the stream does not point to valid + * MIDI soundbank data recognized by this soundbank reader * @throws IOException if an I/O error occurs */ - public abstract Soundbank getSoundbank(InputStream stream) throws InvalidMidiDataException, IOException; - + public abstract Soundbank getSoundbank(InputStream stream) + throws InvalidMidiDataException, IOException; /** - * Obtains a soundbank object from the <code>File</code> provided. - * @param file the <code>File</code> representing the soundbank + * Obtains a soundbank object from the {@code File} provided. + * + * @param file the {@code File} representing the soundbank * @return soundbank object - * @throws InvalidMidiDataException if the file does not point to - * valid MIDI soundbank data recognized by this soundbank reader + * @throws InvalidMidiDataException if the file does not point to valid MIDI + * soundbank data recognized by this soundbank reader * @throws IOException if an I/O error occurs */ - public abstract Soundbank getSoundbank(File file) throws InvalidMidiDataException, IOException; - - - + public abstract Soundbank getSoundbank(File file) + throws InvalidMidiDataException, IOException; } diff --git a/jdk/src/share/classes/javax/sql/package.html b/jdk/src/share/classes/javax/sql/package.html index 667fb03a7d7..d5cfd948faa 100644 --- a/jdk/src/share/classes/javax/sql/package.html +++ b/jdk/src/share/classes/javax/sql/package.html @@ -296,8 +296,7 @@ the particular features you want to use. <h2>Package Specification</h2> <ul> - <li><a href="http://java.sun.com/products/jdbc/download.html">Specification of the - JDBC 4.0 API</a> + <li><a href="https://jcp.org/en/jsr/detail?id=221">JDBC 4.2 Specification</a> </ul> <h2>Related Documentation</h2> @@ -307,10 +306,8 @@ information about the classes and interfaces in the <code>javax.sql</code> package: <ul> - <li><a href="http://java.sun.com/docs/books/jdbc"><i>JDBC<sup><font size=-2>TM</font></sup> - API Tutorial and Reference, Third Edition:</i></a> + <li><a href="http://www.oracle.com/technetwork/java/index-142838.html"> + <i>JDBC™API Tutorial and Reference, Third Edition</i></a> </ul> -<P> -@since 1.4 </body> </html> diff --git a/jdk/src/share/classes/javax/sql/rowset/package.html b/jdk/src/share/classes/javax/sql/rowset/package.html index 09949e5651b..a9949c4998f 100644 --- a/jdk/src/share/classes/javax/sql/rowset/package.html +++ b/jdk/src/share/classes/javax/sql/rowset/package.html @@ -295,14 +295,13 @@ match column as a basis for adding the <code>RowSet</code> object. <h3><a name="relspec">4.0 Related Specifications</a></h3> <ul> -<li><a href="http://java.sun.com/products/jdbc">JDBC 3.0 Specification</a> +<li><a href="https://jcp.org/en/jsr/detail?id=221">JDBC 4.2 Specification</a> <li><a href="http://www.w3.org/XML/Schema">XML Schema</a> -<li><a href="http://www.syncml.org">SyncML</a> </ul> <h3><a name="reldocs">5.0 Related Documentation</a></h3> <ul> -<li><a href="http://java.sun.com/developer/Books/JDBCTutorial/chapter5.html"> +<li><a href="http://docs.oracle.com/javase/tutorial/jdbc/basics/rowset.html"> JDBC RowSet Tutorial</a> </ul> </body> diff --git a/jdk/src/share/classes/javax/swing/AbstractSpinnerModel.java b/jdk/src/share/classes/javax/swing/AbstractSpinnerModel.java index 6a54de06026..f46593c4946 100644 --- a/jdk/src/share/classes/javax/swing/AbstractSpinnerModel.java +++ b/jdk/src/share/classes/javax/swing/AbstractSpinnerModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * 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,7 @@ import java.io.Serializable; * @author Hans Muller * @since 1.4 */ +@SuppressWarnings("serial") // Field contents are not serializable across versions public abstract class AbstractSpinnerModel implements SpinnerModel, Serializable { diff --git a/jdk/src/share/classes/javax/swing/ActionPropertyChangeListener.java b/jdk/src/share/classes/javax/swing/ActionPropertyChangeListener.java index 2dfa914daac..0d33a113091 100644 --- a/jdk/src/share/classes/javax/swing/ActionPropertyChangeListener.java +++ b/jdk/src/share/classes/javax/swing/ActionPropertyChangeListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -50,6 +50,7 @@ import java.lang.ref.ReferenceQueue; * @author Georges Saab * @see AbstractButton */ +@SuppressWarnings("serial") // Bound of type variable is not serializable across versions abstract class ActionPropertyChangeListener<T extends JComponent> implements PropertyChangeListener, Serializable { private static ReferenceQueue<JComponent> queue; diff --git a/jdk/src/share/classes/javax/swing/ComponentInputMap.java b/jdk/src/share/classes/javax/swing/ComponentInputMap.java index ba2d48aea70..da074d5c054 100644 --- a/jdk/src/share/classes/javax/swing/ComponentInputMap.java +++ b/jdk/src/share/classes/javax/swing/ComponentInputMap.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * 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 @@ package javax.swing; * @author Scott Violet * @since 1.3 */ -@SuppressWarnings("serial") +@SuppressWarnings("serial") // Field data not serializable across versions public class ComponentInputMap extends InputMap { /** Component binding is created for. */ private JComponent component; diff --git a/jdk/src/share/classes/javax/swing/DefaultComboBoxModel.java b/jdk/src/share/classes/javax/swing/DefaultComboBoxModel.java index 1700e902cb6..b42dc109b50 100644 --- a/jdk/src/share/classes/javax/swing/DefaultComboBoxModel.java +++ b/jdk/src/share/classes/javax/swing/DefaultComboBoxModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,7 +36,7 @@ import java.io.Serializable; * @author Arnaud Weber * @author Tom Santos */ - +@SuppressWarnings("serial") // Superclass is not serializable across versions public class DefaultComboBoxModel<E> extends AbstractListModel<E> implements MutableComboBoxModel<E>, Serializable { Vector<E> objects; Object selectedObject; diff --git a/jdk/src/share/classes/javax/swing/DefaultDesktopManager.java b/jdk/src/share/classes/javax/swing/DefaultDesktopManager.java index 3860e9d3d7a..d140e98c5d7 100644 --- a/jdk/src/share/classes/javax/swing/DefaultDesktopManager.java +++ b/jdk/src/share/classes/javax/swing/DefaultDesktopManager.java @@ -47,6 +47,7 @@ import java.beans.PropertyVetoException; * @author David Kloba * @author Steve Wilson */ +@SuppressWarnings("serial") // No Interesting Non-Transient State public class DefaultDesktopManager implements DesktopManager, java.io.Serializable { final static String HAS_BEEN_ICONIFIED_PROPERTY = "wasIconOnce"; diff --git a/jdk/src/share/classes/javax/swing/DefaultFocusManager.java b/jdk/src/share/classes/javax/swing/DefaultFocusManager.java index 0644bc07433..31240737791 100644 --- a/jdk/src/share/classes/javax/swing/DefaultFocusManager.java +++ b/jdk/src/share/classes/javax/swing/DefaultFocusManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * 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,7 @@ import java.util.Comparator; * @author Arnaud Weber * @author David Mendenhall */ +@SuppressWarnings("serial") // Obsolete class public class DefaultFocusManager extends FocusManager { final FocusTraversalPolicy gluePolicy = @@ -148,6 +149,7 @@ public class DefaultFocusManager extends FocusManager { } } +@SuppressWarnings("serial") // JDK-implementation class final class LegacyLayoutFocusTraversalPolicy extends LayoutFocusTraversalPolicy { diff --git a/jdk/src/share/classes/javax/swing/JColorChooser.java b/jdk/src/share/classes/javax/swing/JColorChooser.java index 88f91c00ca7..09cbf6c5d80 100644 --- a/jdk/src/share/classes/javax/swing/JColorChooser.java +++ b/jdk/src/share/classes/javax/swing/JColorChooser.java @@ -606,6 +606,7 @@ public class JColorChooser extends JComponent implements Accessible { * * Note: This needs to be fixed to deal with localization! */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class ColorChooserDialog extends JDialog { private Color initialColor; private JColorChooser chooserPane; @@ -665,6 +666,7 @@ class ColorChooserDialog extends JDialog { cancelButton.getAccessibleContext().setAccessibleDescription(cancelString); // The following few lines are used to register esc to close the dialog + @SuppressWarnings("serial") // anonymous class Action cancelKeyAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { ((AbstractButton)e.getSource()).fireActionPerformed(e); @@ -729,6 +731,7 @@ class ColorChooserDialog extends JDialog { chooserPane.setColor(initialColor); } + @SuppressWarnings("serial") // JDK-implementation class class Closer extends WindowAdapter implements Serializable{ public void windowClosing(WindowEvent e) { cancelButton.doClick(0); @@ -737,6 +740,7 @@ class ColorChooserDialog extends JDialog { } } + @SuppressWarnings("serial") // JDK-implementation class static class DisposeOnClose extends ComponentAdapter implements Serializable{ public void componentHidden(ComponentEvent e) { Window w = (Window)e.getComponent(); @@ -746,6 +750,7 @@ class ColorChooserDialog extends JDialog { } +@SuppressWarnings("serial") // JDK-implementation class class ColorTracker implements ActionListener, Serializable { JColorChooser chooser; Color color; diff --git a/jdk/src/share/classes/javax/swing/JComboBox.java b/jdk/src/share/classes/javax/swing/JComboBox.java index 6416f5036a8..937c13376cc 100644 --- a/jdk/src/share/classes/javax/swing/JComboBox.java +++ b/jdk/src/share/classes/javax/swing/JComboBox.java @@ -1416,6 +1416,28 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { super.processKeyEvent(e); } + /** + * {@inheritDoc} + */ + @Override + protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed) { + if (super.processKeyBinding(ks, e, condition, pressed)) { + return true; + } + + if (!isEditable() || condition != WHEN_FOCUSED || getEditor() == null + || !Boolean.TRUE.equals(getClientProperty("JComboBox.isTableCellEditor"))) { + return false; + } + + Component editorComponent = getEditor().getEditorComponent(); + if (editorComponent instanceof JComponent) { + JComponent component = (JComponent) editorComponent; + return component.processKeyBinding(ks, e, WHEN_FOCUSED, pressed); + } + return false; + } + /** * Sets the object that translates a keyboard character into a list * selection. Typically, the first selection with a matching first diff --git a/jdk/src/share/classes/javax/swing/JFileChooser.java b/jdk/src/share/classes/javax/swing/JFileChooser.java index a3d4443ab2b..ac6374c2a40 100644 --- a/jdk/src/share/classes/javax/swing/JFileChooser.java +++ b/jdk/src/share/classes/javax/swing/JFileChooser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -88,6 +88,7 @@ import java.lang.ref.WeakReference; * @author Jeff Dinkins * */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class JFileChooser extends JComponent implements Accessible { /** @@ -1996,6 +1997,7 @@ public class JFileChooser extends JComponent implements Accessible { * Java Accessibility API appropriate to file chooser user-interface * elements. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class AccessibleJFileChooser extends AccessibleJComponent { /** diff --git a/jdk/src/share/classes/javax/swing/JLayer.java b/jdk/src/share/classes/javax/swing/JLayer.java index d79b048df67..6ce1b66f49d 100644 --- a/jdk/src/share/classes/javax/swing/JLayer.java +++ b/jdk/src/share/classes/javax/swing/JLayer.java @@ -148,6 +148,7 @@ import java.security.PrivilegedAction; * * @author Alexander Potochkin */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public final class JLayer<V extends Component> extends JComponent implements Scrollable, PropertyChangeListener, Accessible { @@ -687,6 +688,7 @@ public final class JLayer<V extends Component> * * @return the AccessibleContext associated with this {@code JLayer}. */ + @SuppressWarnings("serial") // anonymous class public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJComponent() { @@ -825,6 +827,7 @@ public final class JLayer<V extends Component> * The default glassPane for the {@link javax.swing.JLayer}. * It is a subclass of {@code JPanel} which is non opaque by default. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class DefaultLayerGlassPane extends JPanel { /** * Creates a new {@link DefaultLayerGlassPane} diff --git a/jdk/src/share/classes/javax/swing/JTable.java b/jdk/src/share/classes/javax/swing/JTable.java index 5db8833b982..e811fa80d5a 100644 --- a/jdk/src/share/classes/javax/swing/JTable.java +++ b/jdk/src/share/classes/javax/swing/JTable.java @@ -58,7 +58,6 @@ import sun.swing.SwingUtilities2; import sun.swing.SwingUtilities2.Section; import static sun.swing.SwingUtilities2.Section.*; import sun.swing.PrintingStatus; -import sun.swing.SwingLazyValue; /** * The <code>JTable</code> is used to display and edit regular two-dimensional tables diff --git a/jdk/src/share/classes/javax/swing/LayoutComparator.java b/jdk/src/share/classes/javax/swing/LayoutComparator.java index b127d96253e..cbd7c9f470a 100644 --- a/jdk/src/share/classes/javax/swing/LayoutComparator.java +++ b/jdk/src/share/classes/javax/swing/LayoutComparator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +39,7 @@ import java.awt.Window; * * @author David Mendenhall */ +@SuppressWarnings("serial") // JDK-implementation class final class LayoutComparator implements Comparator<Component>, java.io.Serializable { private static final int ROW_TOLERANCE = 10; diff --git a/jdk/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java b/jdk/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java index e3bcf02ed5c..735d7628a7a 100644 --- a/jdk/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java +++ b/jdk/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,6 +47,7 @@ import sun.awt.SunToolkit; * @see java.awt.ComponentOrientation * @since 1.4 */ +@SuppressWarnings("serial") // Parts of superclass are not serializable across versions public class LayoutFocusTraversalPolicy extends SortingFocusTraversalPolicy implements Serializable { @@ -265,6 +266,7 @@ public class LayoutFocusTraversalPolicy extends SortingFocusTraversalPolicy // Create our own subclass and change accept to public so that we can call // accept. +@SuppressWarnings("serial") // JDK-implementation class class SwingDefaultFocusTraversalPolicy extends java.awt.DefaultFocusTraversalPolicy { diff --git a/jdk/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java b/jdk/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java index f3aca5b8f1f..de33d4c4dae 100644 --- a/jdk/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java +++ b/jdk/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +42,7 @@ import java.io.*; * * @author David Mendenhall */ +@SuppressWarnings("serial") // JDK-implementation class final class LegacyGlueFocusTraversalPolicy extends FocusTraversalPolicy implements Serializable { diff --git a/jdk/src/share/classes/javax/swing/MultiUIDefaults.java b/jdk/src/share/classes/javax/swing/MultiUIDefaults.java index 2649867558f..f4a30a1e3f5 100644 --- a/jdk/src/share/classes/javax/swing/MultiUIDefaults.java +++ b/jdk/src/share/classes/javax/swing/MultiUIDefaults.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * 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.util.Set; * * @author Hans Muller */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class MultiUIDefaults extends UIDefaults { private UIDefaults[] tables; diff --git a/jdk/src/share/classes/javax/swing/Popup.java b/jdk/src/share/classes/javax/swing/Popup.java index 75970458743..6d0a2fda2a2 100644 --- a/jdk/src/share/classes/javax/swing/Popup.java +++ b/jdk/src/share/classes/javax/swing/Popup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -228,6 +228,7 @@ public class Popup { /** * Component used to house window. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class HeavyWeightWindow extends JWindow implements ModalExclude { HeavyWeightWindow(Window parent) { super(parent); @@ -267,6 +268,7 @@ public class Popup { * PopupFactory uses this as a way to know when the Popup shouldn't * be cached based on the Window. */ + @SuppressWarnings("serial") // JDK-implementation class static class DefaultFrame extends Frame { } } diff --git a/jdk/src/share/classes/javax/swing/PopupFactory.java b/jdk/src/share/classes/javax/swing/PopupFactory.java index 275a1d3c825..20b21c7a274 100644 --- a/jdk/src/share/classes/javax/swing/PopupFactory.java +++ b/jdk/src/share/classes/javax/swing/PopupFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -941,6 +941,7 @@ public class PopupFactory { // This implements SwingHeavyWeight so that repaints on it // are processed by the RepaintManager and SwingPaintEventDispatcher. + @SuppressWarnings("serial") // JDK-implementation class private static class MediumWeightComponent extends Panel implements SwingHeavyWeight { MediumWeightComponent() { diff --git a/jdk/src/share/classes/javax/swing/ProgressMonitor.java b/jdk/src/share/classes/javax/swing/ProgressMonitor.java index 378e1767538..889f30d734a 100644 --- a/jdk/src/share/classes/javax/swing/ProgressMonitor.java +++ b/jdk/src/share/classes/javax/swing/ProgressMonitor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * 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,7 +153,7 @@ public class ProgressMonitor implements Accessible } } - + @SuppressWarnings("serial") // Superclass is not serializable across versions private class ProgressOptionPane extends JOptionPane { ProgressOptionPane(Object messageList) { diff --git a/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java b/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java index 53b348fe73b..2c4850b8ff4 100644 --- a/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java +++ b/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -607,6 +607,7 @@ public class SortingFocusTraversalPolicy // Create our own subclass and change accept to public so that we can call // accept. +@SuppressWarnings("serial") // JDK-implementation class class SwingContainerOrderFocusTraversalPolicy extends java.awt.ContainerOrderFocusTraversalPolicy { diff --git a/jdk/src/share/classes/javax/swing/SpinnerDateModel.java b/jdk/src/share/classes/javax/swing/SpinnerDateModel.java index e810486992f..cd21e353073 100644 --- a/jdk/src/share/classes/javax/swing/SpinnerDateModel.java +++ b/jdk/src/share/classes/javax/swing/SpinnerDateModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -86,6 +86,7 @@ import java.io.Serializable; * @author Hans Muller * @since 1.4 */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class SpinnerDateModel extends AbstractSpinnerModel implements Serializable { private Comparable start, end; diff --git a/jdk/src/share/classes/javax/swing/SpinnerListModel.java b/jdk/src/share/classes/javax/swing/SpinnerListModel.java index 15a847266fb..b528971c1ee 100644 --- a/jdk/src/share/classes/javax/swing/SpinnerListModel.java +++ b/jdk/src/share/classes/javax/swing/SpinnerListModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -56,6 +56,7 @@ import java.io.Serializable; * @author Hans Muller * @since 1.4 */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class SpinnerListModel extends AbstractSpinnerModel implements Serializable { private List list; diff --git a/jdk/src/share/classes/javax/swing/SpinnerNumberModel.java b/jdk/src/share/classes/javax/swing/SpinnerNumberModel.java index b52d360c9ba..90583ca8ea4 100644 --- a/jdk/src/share/classes/javax/swing/SpinnerNumberModel.java +++ b/jdk/src/share/classes/javax/swing/SpinnerNumberModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -80,6 +80,7 @@ import java.io.Serializable; * @author Hans Muller * @since 1.4 */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class SpinnerNumberModel extends AbstractSpinnerModel implements Serializable { private Number stepSize, value; diff --git a/jdk/src/share/classes/javax/swing/SwingUtilities.java b/jdk/src/share/classes/javax/swing/SwingUtilities.java index 7f79052a51a..7042c31bb2a 100644 --- a/jdk/src/share/classes/javax/swing/SwingUtilities.java +++ b/jdk/src/share/classes/javax/swing/SwingUtilities.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1755,6 +1755,7 @@ public class SwingUtilities implements SwingConstants private static final Object sharedOwnerFrameKey = new StringBuffer("SwingUtilities.sharedOwnerFrame"); + @SuppressWarnings("serial") // JDK-implementation class static class SharedOwnerFrame extends Frame implements WindowListener { public void addNotify() { super.addNotify(); diff --git a/jdk/src/share/classes/javax/swing/SwingWorker.java b/jdk/src/share/classes/javax/swing/SwingWorker.java index 746b78aa7d2..4eed4a8e9fa 100644 --- a/jdk/src/share/classes/javax/swing/SwingWorker.java +++ b/jdk/src/share/classes/javax/swing/SwingWorker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -843,6 +843,7 @@ public abstract class SwingWorker<T, V> implements RunnableFuture<T> { } } + @SuppressWarnings("serial") // JDK-implementation class private class SwingWorkerPropertyChangeSupport extends PropertyChangeSupport { SwingWorkerPropertyChangeSupport(Object source) { diff --git a/jdk/src/share/classes/javax/swing/colorchooser/CenterLayout.java b/jdk/src/share/classes/javax/swing/colorchooser/CenterLayout.java index 769eb0b50e9..24e3aa9f65b 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/CenterLayout.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/CenterLayout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +34,7 @@ import java.io.*; * @author Tom Santos * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only class CenterLayout implements LayoutManager, Serializable { public void addLayoutComponent(String name, Component comp) { } public void removeLayoutComponent(Component comp) { } diff --git a/jdk/src/share/classes/javax/swing/colorchooser/ColorChooserPanel.java b/jdk/src/share/classes/javax/swing/colorchooser/ColorChooserPanel.java index 7a5afdef9d2..06a4dfdfb6e 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/ColorChooserPanel.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/ColorChooserPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. * 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,8 +38,8 @@ import javax.swing.JFormattedTextField; import javax.swing.JLabel; import javax.swing.SwingConstants; +@SuppressWarnings("serial") // Superclass is not serializable across versions final class ColorChooserPanel extends AbstractColorChooserPanel implements PropertyChangeListener { - private static final int MASK = 0xFF000000; private final ColorModel model; private final ColorPanel panel; diff --git a/jdk/src/share/classes/javax/swing/colorchooser/ColorPanel.java b/jdk/src/share/classes/javax/swing/colorchooser/ColorPanel.java index efed08faade..6960cba86a2 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/ColorPanel.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/ColorPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +39,7 @@ import javax.swing.JRadioButton; import javax.swing.border.EmptyBorder; import javax.swing.JSpinner.DefaultEditor; +@SuppressWarnings("serial") // Superclass is not serializable across versions final class ColorPanel extends JPanel implements ActionListener { private final SlidingSpinner[] spinners = new SlidingSpinner[5]; diff --git a/jdk/src/share/classes/javax/swing/colorchooser/DefaultColorSelectionModel.java b/jdk/src/share/classes/javax/swing/colorchooser/DefaultColorSelectionModel.java index e4bd911f89a..f8de2344f8e 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/DefaultColorSelectionModel.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/DefaultColorSelectionModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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 java.io.Serializable; * * @see java.awt.Color */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultColorSelectionModel implements ColorSelectionModel, Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/colorchooser/DefaultSwatchChooserPanel.java b/jdk/src/share/classes/javax/swing/colorchooser/DefaultSwatchChooserPanel.java index e56b95f2ddf..c8716f13c84 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/DefaultSwatchChooserPanel.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/DefaultSwatchChooserPanel.java @@ -266,8 +266,7 @@ class DefaultSwatchChooserPanel extends AbstractColorChooserPanel { } - - +@SuppressWarnings("serial") // Same-version serialization only class SwatchPanel extends JPanel { protected Color[] colors; @@ -438,6 +437,7 @@ class SwatchPanel extends JPanel { } +@SuppressWarnings("serial") // Superclass is not serializable across versions class RecentSwatchPanel extends SwatchPanel { protected void initValues() { swatchSize = UIManager.getDimension("ColorChooser.swatchesRecentSwatchSize", getLocale()); @@ -465,6 +465,7 @@ class RecentSwatchPanel extends SwatchPanel { } +@SuppressWarnings("serial") // Superclass is not serializable across versions class MainSwatchPanel extends SwatchPanel { diff --git a/jdk/src/share/classes/javax/swing/colorchooser/DiagramComponent.java b/jdk/src/share/classes/javax/swing/colorchooser/DiagramComponent.java index 760efc22f83..61f8047f746 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/DiagramComponent.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/DiagramComponent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +34,7 @@ import java.awt.event.MouseMotionListener; import java.awt.image.BufferedImage; import javax.swing.JComponent; +@SuppressWarnings("serial") // Superclass is not serializable across versions final class DiagramComponent extends JComponent implements MouseListener, MouseMotionListener { private final ColorPanel panel; diff --git a/jdk/src/share/classes/javax/swing/colorchooser/SmartGridLayout.java b/jdk/src/share/classes/javax/swing/colorchooser/SmartGridLayout.java index 42606039fb6..73e0f0059ba 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/SmartGridLayout.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/SmartGridLayout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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.io.Serializable; * * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only class SmartGridLayout implements LayoutManager, Serializable { int rows = 2; diff --git a/jdk/src/share/classes/javax/swing/colorchooser/ValueFormatter.java b/jdk/src/share/classes/javax/swing/colorchooser/ValueFormatter.java index 420318b3c33..6defbbed287 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/ValueFormatter.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/ValueFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. * 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 javax.swing.text.BadLocationException; import javax.swing.text.DefaultFormatterFactory; import javax.swing.text.DocumentFilter; +@SuppressWarnings("serial") // Same-version serialization only final class ValueFormatter extends AbstractFormatter implements FocusListener, Runnable { static void init(int length, boolean hex, JFormattedTextField text) { diff --git a/jdk/src/share/classes/javax/swing/event/RowSorterEvent.java b/jdk/src/share/classes/javax/swing/event/RowSorterEvent.java index b0acf927bd7..f7340ecd43b 100644 --- a/jdk/src/share/classes/javax/swing/event/RowSorterEvent.java +++ b/jdk/src/share/classes/javax/swing/event/RowSorterEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +40,7 @@ import javax.swing.RowSorter; * @see javax.swing.RowSorter * @since 1.6 */ +@SuppressWarnings("serial") // Same-version serialization only public class RowSorterEvent extends java.util.EventObject { private Type type; private int[] oldViewToModel; diff --git a/jdk/src/share/classes/javax/swing/event/TreeSelectionEvent.java b/jdk/src/share/classes/javax/swing/event/TreeSelectionEvent.java index d2966adeafb..792ce190509 100644 --- a/jdk/src/share/classes/javax/swing/event/TreeSelectionEvent.java +++ b/jdk/src/share/classes/javax/swing/event/TreeSelectionEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +49,7 @@ import javax.swing.tree.TreePath; * * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class TreeSelectionEvent extends EventObject { /** Paths this event represents. */ diff --git a/jdk/src/share/classes/javax/swing/filechooser/FileSystemView.java b/jdk/src/share/classes/javax/swing/filechooser/FileSystemView.java index f62d69c0e00..4ab5dea5cac 100644 --- a/jdk/src/share/classes/javax/swing/filechooser/FileSystemView.java +++ b/jdk/src/share/classes/javax/swing/filechooser/FileSystemView.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -579,9 +579,7 @@ public abstract class FileSystemView { return new FileSystemRoot(f); } - - - + @SuppressWarnings("serial") // Same-version serialization only static class FileSystemRoot extends File { public FileSystemRoot(File f) { super(f,""); @@ -775,6 +773,7 @@ class WindowsFileSystemView extends FileSystemView { return super.createFileObject(path); } + @SuppressWarnings("serial") // anonymous class protected File createFileSystemRoot(File f) { // Problem: Removable drives on Windows return false on f.exists() // Workaround: Override exists() to always return true. diff --git a/jdk/src/share/classes/javax/swing/plaf/ActionMapUIResource.java b/jdk/src/share/classes/javax/swing/plaf/ActionMapUIResource.java index b9a6cd35b31..2a1090c5da3 100644 --- a/jdk/src/share/classes/javax/swing/plaf/ActionMapUIResource.java +++ b/jdk/src/share/classes/javax/swing/plaf/ActionMapUIResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ import javax.swing.ActionMap; * @author Scott Violet * @since 1.3 */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class ActionMapUIResource extends ActionMap implements UIResource { public ActionMapUIResource() { } diff --git a/jdk/src/share/classes/javax/swing/plaf/ComponentInputMapUIResource.java b/jdk/src/share/classes/javax/swing/plaf/ComponentInputMapUIResource.java index 3eda1b3f645..092e4350920 100644 --- a/jdk/src/share/classes/javax/swing/plaf/ComponentInputMapUIResource.java +++ b/jdk/src/share/classes/javax/swing/plaf/ComponentInputMapUIResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * 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 javax.swing.JComponent; * @author Scott Violet * @since 1.3 */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class ComponentInputMapUIResource extends ComponentInputMap implements UIResource { public ComponentInputMapUIResource(JComponent component) { super(component); diff --git a/jdk/src/share/classes/javax/swing/plaf/InputMapUIResource.java b/jdk/src/share/classes/javax/swing/plaf/InputMapUIResource.java index 9a025111896..2efd5c543cc 100644 --- a/jdk/src/share/classes/javax/swing/plaf/InputMapUIResource.java +++ b/jdk/src/share/classes/javax/swing/plaf/InputMapUIResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ import javax.swing.InputMap; * @author Scott Violet * @since 1.3 */ +@SuppressWarnings("serial") // Same-version serialization only public class InputMapUIResource extends InputMap implements UIResource { public InputMapUIResource() { } diff --git a/jdk/src/share/classes/javax/swing/plaf/LayerUI.java b/jdk/src/share/classes/javax/swing/plaf/LayerUI.java index cce5249804d..1c8eea75908 100644 --- a/jdk/src/share/classes/javax/swing/plaf/LayerUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/LayerUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -58,6 +58,7 @@ import java.io.Serializable; * * @author Alexander Potochkin */ +@SuppressWarnings("serial") // Same-version serialization only public class LayerUI<V extends Component> extends ComponentUI implements Serializable { diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicBorders.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicBorders.java index be06927017c..05a3093e254 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicBorders.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicBorders.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -144,6 +144,7 @@ public class BasicBorders { * Special thin border for rollover toolbar buttons. * @since 1.4 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class RolloverButtonBorder extends ButtonBorder { public RolloverButtonBorder(Color shadow, Color darkShadow, @@ -196,6 +197,7 @@ public class BasicBorders { * Note: This is identical to the package private class * MetalBorders.RolloverMarginBorder and should probably be consolidated. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class RolloverMarginBorder extends EmptyBorder { public RolloverMarginBorder() { @@ -225,6 +227,7 @@ public class BasicBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class ButtonBorder extends AbstractBorder implements UIResource { protected Color shadow; protected Color darkShadow; @@ -267,6 +270,7 @@ public class BasicBorders { } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class ToggleButtonBorder extends ButtonBorder { public ToggleButtonBorder(Color shadow, Color darkShadow, @@ -288,6 +292,7 @@ public class BasicBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class RadioButtonBorder extends ButtonBorder { public RadioButtonBorder(Color shadow, Color darkShadow, @@ -324,6 +329,7 @@ public class BasicBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class MenuBarBorder extends AbstractBorder implements UIResource { private Color shadow; private Color highlight; @@ -350,6 +356,7 @@ public class BasicBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class MarginBorder extends AbstractBorder implements UIResource { public Insets getBorderInsets(Component c, Insets insets) { Insets margin = null; @@ -377,6 +384,7 @@ public class BasicBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class FieldBorder extends AbstractBorder implements UIResource { protected Color shadow; protected Color darkShadow; diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java index b6de66beb2b..1a876fc6ce5 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -345,6 +345,7 @@ public class BasicColorChooserUI extends ColorChooserUI } } + @SuppressWarnings("serial") // JDK-implementation class static class ColorTransferHandler extends TransferHandler implements UIResource { ColorTransferHandler() { diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java index 6aa49dda179..70c01456be9 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java @@ -32,6 +32,8 @@ import java.awt.event.*; import java.lang.reflect.Method; +import sun.reflect.misc.MethodUtil; + /** * The default editor for editable combo boxes. The editor is implemented as a JTextField. * @@ -98,8 +100,8 @@ public class BasicComboBoxEditor implements ComboBoxEditor,FocusListener { // Must take the value from the editor and get the value and cast it to the new type. Class<?> cls = oldValue.getClass(); try { - Method method = cls.getMethod("valueOf", new Class[]{String.class}); - newValue = method.invoke(oldValue, new Object[] { editor.getText()}); + Method method = MethodUtil.getMethod(cls, "valueOf", new Class[]{String.class}); + newValue = MethodUtil.invoke(method, oldValue, new Object[] { editor.getText()}); } catch (Exception ex) { // Fail silently and return the newValue (a String object) } @@ -129,6 +131,7 @@ public class BasicComboBoxEditor implements ComboBoxEditor,FocusListener { editor.removeActionListener(l); } + @SuppressWarnings("serial") // Superclass is not serializable across versions static class BorderlessTextField extends JTextField { public BorderlessTextField(String value,int n) { super(value,n); diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicDesktopPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicDesktopPaneUI.java index 2d0067789b0..695eb87bded 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicDesktopPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicDesktopPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -304,6 +304,7 @@ public class BasicDesktopPaneUI extends DesktopPaneUI { /** * The default DesktopManager installed by the UI. */ + @SuppressWarnings("serial") // JDK-implementation class private class BasicDesktopManager extends DefaultDesktopManager implements UIResource { } @@ -632,6 +633,7 @@ public class BasicDesktopPaneUI extends DesktopPaneUI { * Handles restoring a minimized or maximized internal frame. * @since 1.3 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class OpenAction extends AbstractAction { public void actionPerformed(ActionEvent evt) { JDesktopPane dp = (JDesktopPane)evt.getSource(); @@ -646,6 +648,7 @@ public class BasicDesktopPaneUI extends DesktopPaneUI { /** * Handles closing an internal frame. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class CloseAction extends AbstractAction { public void actionPerformed(ActionEvent evt) { JDesktopPane dp = (JDesktopPane)evt.getSource(); @@ -664,6 +667,7 @@ public class BasicDesktopPaneUI extends DesktopPaneUI { /** * Handles minimizing an internal frame. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class MinimizeAction extends AbstractAction { public void actionPerformed(ActionEvent evt) { JDesktopPane dp = (JDesktopPane)evt.getSource(); @@ -682,6 +686,7 @@ public class BasicDesktopPaneUI extends DesktopPaneUI { /** * Handles maximizing an internal frame. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class MaximizeAction extends AbstractAction { public void actionPerformed(ActionEvent evt) { JDesktopPane dp = (JDesktopPane)evt.getSource(); @@ -700,6 +705,7 @@ public class BasicDesktopPaneUI extends DesktopPaneUI { /** * Handles navigating to the next internal frame. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class NavigateAction extends AbstractAction { public void actionPerformed(ActionEvent evt) { JDesktopPane dp = (JDesktopPane)evt.getSource(); diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java index eeca39b5cd5..4d0220cba9b 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +40,7 @@ import sun.awt.shell.ShellFolder; * * @author Jeff Dinkins */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class BasicDirectoryModel extends AbstractListModel<Object> implements PropertyChangeListener { private JFileChooser filechooser = null; diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java index 62c417fc9ce..b609dd2f2f0 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -752,6 +752,7 @@ public class BasicFileChooserUI extends FileChooserUI { /** * Creates a new folder. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class NewFolderAction extends AbstractAction { protected NewFolderAction() { super(FilePane.ACTION_NEW_FOLDER); @@ -794,6 +795,7 @@ public class BasicFileChooserUI extends FileChooserUI { /** * Acts on the "home" key event or equivalent event. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class GoHomeAction extends AbstractAction { protected GoHomeAction() { super("Go Home"); @@ -804,6 +806,7 @@ public class BasicFileChooserUI extends FileChooserUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class ChangeToParentDirectoryAction extends AbstractAction { protected ChangeToParentDirectoryAction() { super("Go Up"); @@ -817,6 +820,7 @@ public class BasicFileChooserUI extends FileChooserUI { /** * Responds to an Open or Save request */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class ApproveSelectionAction extends AbstractAction { protected ApproveSelectionAction() { super(FilePane.ACTION_APPROVE_SELECTION); @@ -1125,6 +1129,7 @@ public class BasicFileChooserUI extends FileChooserUI { /** * Responds to a cancel request. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class CancelSelectionAction extends AbstractAction { public void actionPerformed(ActionEvent e) { getFileChooser().cancelSelection(); @@ -1134,6 +1139,7 @@ public class BasicFileChooserUI extends FileChooserUI { /** * Rescans the files in the current directory */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class UpdateAction extends AbstractAction { public void actionPerformed(ActionEvent e) { JFileChooser fc = getFileChooser(); @@ -1286,6 +1292,7 @@ public class BasicFileChooserUI extends FileChooserUI { * Data transfer support for the file chooser. Since files are currently presented * as a list, the list support is reused with the added flavor of DataFlavor.javaFileListFlavor */ + @SuppressWarnings("serial") // JDK-implementation class static class FileTransferHandler extends TransferHandler implements UIResource { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicHTML.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicHTML.java index 73c4e2b526e..02719839496 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicHTML.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicHTML.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -276,6 +276,7 @@ public class BasicHTML { * provided by HTMLEditorKit. * </ul> */ + @SuppressWarnings("serial") // JDK-implementation class static class BasicEditorKit extends HTMLEditorKit { /** Shared base style for all documents created by us use. */ private static StyleSheet defaultStyles; @@ -345,6 +346,7 @@ public class BasicHTML { * is overridden to return the foreground property from the Component this * was created for. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class BasicDocument extends HTMLDocument { /** The host, that is where we are rendering. */ // private JComponent host; diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicListUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicListUI.java index f8a91437dde..c6f22cefb0b 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicListUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicListUI.java @@ -2834,6 +2834,7 @@ public class BasicListUI extends ListUI private static final TransferHandler defaultTransferHandler = new ListTransferHandler(); + @SuppressWarnings("serial") // Superclass is a JDK-implementation class static class ListTransferHandler extends TransferHandler implements UIResource { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java index 1bcf5fa93e0..6ed2265087e 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java @@ -49,8 +49,8 @@ import javax.sound.sampled.*; import sun.awt.AppContext; import sun.awt.SunToolkit; -import sun.swing.SwingLazyValue; import sun.swing.SwingUtilities2; +import sun.swing.icon.SortArrowIcon; import javax.swing.LookAndFeel; import javax.swing.AbstractAction; @@ -74,6 +74,7 @@ import javax.swing.plaf.*; import javax.swing.text.JTextComponent; import javax.swing.text.DefaultEditorKit; import javax.swing.JInternalFrame; +import static javax.swing.UIDefaults.LazyValue; import java.beans.PropertyVetoException; import java.awt.Window; import java.beans.PropertyChangeListener; @@ -459,30 +460,16 @@ public abstract class BasicLookAndFeel extends LookAndFeel implements Serializab // *** Shared Longs Long oneThousand = new Long(1000); - // *** Shared Fonts - Integer twelve = new Integer(12); - Integer fontPlain = new Integer(Font.PLAIN); - Integer fontBold = new Integer(Font.BOLD); - Object dialogPlain12 = new SwingLazyValue( - "javax.swing.plaf.FontUIResource", - null, - new Object[] {Font.DIALOG, fontPlain, twelve}); - Object serifPlain12 = new SwingLazyValue( - "javax.swing.plaf.FontUIResource", - null, - new Object[] {Font.SERIF, fontPlain, twelve}); - Object sansSerifPlain12 = new SwingLazyValue( - "javax.swing.plaf.FontUIResource", - null, - new Object[] {Font.SANS_SERIF, fontPlain, twelve}); - Object monospacedPlain12 = new SwingLazyValue( - "javax.swing.plaf.FontUIResource", - null, - new Object[] {Font.MONOSPACED, fontPlain, twelve}); - Object dialogBold12 = new SwingLazyValue( - "javax.swing.plaf.FontUIResource", - null, - new Object[] {Font.DIALOG, fontBold, twelve}); + LazyValue dialogPlain12 = t -> + new FontUIResource(Font.DIALOG, Font.PLAIN, 12); + LazyValue serifPlain12 = t -> + new FontUIResource(Font.SERIF, Font.PLAIN, 12); + LazyValue sansSerifPlain12 = t -> + new FontUIResource(Font.SANS_SERIF, Font.PLAIN, 12); + LazyValue monospacedPlain12 = t -> + new FontUIResource(Font.MONOSPACED, Font.PLAIN, 12); + LazyValue dialogBold12 = t -> + new FontUIResource(Font.DIALOG, Font.BOLD, 12); // *** Shared Colors @@ -515,55 +502,40 @@ public abstract class BasicLookAndFeel extends LookAndFeel implements Serializab InsetsUIResource threeInsets = new InsetsUIResource(3,3,3,3); // *** Shared Borders - Object marginBorder = new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders$MarginBorder"); - Object etchedBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource", - "getEtchedBorderUIResource"); - Object loweredBevelBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource", - "getLoweredBevelBorderUIResource"); + LazyValue marginBorder = t -> new BasicBorders.MarginBorder(); + LazyValue etchedBorder = t -> + BorderUIResource.getEtchedBorderUIResource(); + LazyValue loweredBevelBorder = t -> + BorderUIResource.getLoweredBevelBorderUIResource(); - Object popupMenuBorder = new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getInternalFrameBorder"); + LazyValue popupMenuBorder = t -> BasicBorders.getInternalFrameBorder(); - Object blackLineBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource", - "getBlackLineBorderUIResource"); - Object focusCellHighlightBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource$LineBorderUIResource", - null, - new Object[] {yellow}); + LazyValue blackLineBorder = t -> + BorderUIResource.getBlackLineBorderUIResource(); + LazyValue focusCellHighlightBorder = t -> + new BorderUIResource.LineBorderUIResource(yellow); Object noFocusBorder = new BorderUIResource.EmptyBorderUIResource(1,1,1,1); - Object tableHeaderBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource$BevelBorderUIResource", - null, - new Object[] { new Integer(BevelBorder.RAISED), + LazyValue tableHeaderBorder = t -> + new BorderUIResource.BevelBorderUIResource( + BevelBorder.RAISED, controlLtHighlight, control, controlDkShadow, - controlShadow }); + controlShadow); // *** Button value objects - Object buttonBorder = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getButtonBorder"); + LazyValue buttonBorder = + t -> BasicBorders.getButtonBorder(); - Object buttonToggleBorder = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getToggleButtonBorder"); + LazyValue buttonToggleBorder = + t -> BasicBorders.getToggleButtonBorder(); - Object radioButtonBorder = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getRadioButtonBorder"); + LazyValue radioButtonBorder = + t -> BasicBorders.getRadioButtonBorder(); // *** FileChooser / FileView value objects @@ -601,9 +573,8 @@ public abstract class BasicLookAndFeel extends LookAndFeel implements Serializab // *** InternalFrame value objects - Object internalFrameBorder = new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getInternalFrameBorder"); + LazyValue internalFrameBorder = t -> + BasicBorders.getInternalFrameBorder(); // *** List value objects @@ -616,46 +587,30 @@ public abstract class BasicLookAndFeel extends LookAndFeel implements Serializab // *** Menus value objects - Object menuBarBorder = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getMenuBarBorder"); + LazyValue menuBarBorder = + t -> BasicBorders.getMenuBarBorder(); - Object menuItemCheckIcon = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicIconFactory", - "getMenuItemCheckIcon"); + LazyValue menuItemCheckIcon = + t -> BasicIconFactory.getMenuItemCheckIcon(); - Object menuItemArrowIcon = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicIconFactory", - "getMenuItemArrowIcon"); + LazyValue menuItemArrowIcon = + t -> BasicIconFactory.getMenuItemArrowIcon(); - Object menuArrowIcon = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicIconFactory", - "getMenuArrowIcon"); + LazyValue menuArrowIcon = + t -> BasicIconFactory.getMenuArrowIcon(); - Object checkBoxIcon = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicIconFactory", - "getCheckBoxIcon"); + LazyValue checkBoxIcon = + t -> BasicIconFactory.getCheckBoxIcon(); - Object radioButtonIcon = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicIconFactory", - "getRadioButtonIcon"); + LazyValue radioButtonIcon = + t -> BasicIconFactory.getRadioButtonIcon(); - Object checkBoxMenuItemIcon = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicIconFactory", - "getCheckBoxMenuItemIcon"); + LazyValue checkBoxMenuItemIcon = + t -> BasicIconFactory.getCheckBoxMenuItemIcon(); - Object radioButtonMenuItemIcon = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicIconFactory", - "getRadioButtonMenuItemIcon"); + LazyValue radioButtonMenuItemIcon = + t -> BasicIconFactory.getRadioButtonMenuItemIcon(); Object menuItemAcceleratorDelimiter = "+"; @@ -663,27 +618,22 @@ public abstract class BasicLookAndFeel extends LookAndFeel implements Serializab Object optionPaneMinimumSize = new DimensionUIResource(262, 90); - Integer zero = new Integer(0); - Object zeroBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource$EmptyBorderUIResource", - new Object[] {zero, zero, zero, zero}); + int zero = 0; + LazyValue zeroBorder = t -> + new BorderUIResource.EmptyBorderUIResource(zero, zero, zero, zero); - Integer ten = new Integer(10); - Object optionPaneBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource$EmptyBorderUIResource", - new Object[] {ten, ten, twelve, ten}); + int ten = 10; + LazyValue optionPaneBorder = t -> + new BorderUIResource.EmptyBorderUIResource(ten, ten, 12, ten); - Object optionPaneButtonAreaBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource$EmptyBorderUIResource", - new Object[] {new Integer(6), zero, zero, zero}); + LazyValue optionPaneButtonAreaBorder = t -> + new BorderUIResource.EmptyBorderUIResource(6, zero, zero, zero); // *** ProgessBar value objects - Object progressBarBorder = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getProgressBarBorder"); + LazyValue progressBarBorder = + t -> BasicBorders.getProgressBarBorder(); // ** ScrollBar value objects @@ -699,14 +649,10 @@ public abstract class BasicLookAndFeel extends LookAndFeel implements Serializab // *** SplitPane value objects - Object splitPaneBorder = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getSplitPaneBorder"); - Object splitPaneDividerBorder = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getSplitPaneDividerBorder"); + LazyValue splitPaneBorder = + t -> BasicBorders.getSplitPaneBorder(); + LazyValue splitPaneDividerBorder = + t -> BasicBorders.getSplitPaneDividerBorder(); // ** TabbedBane value objects @@ -721,10 +667,8 @@ public abstract class BasicLookAndFeel extends LookAndFeel implements Serializab // *** Text value objects - Object textFieldBorder = - new SwingLazyValue( - "javax.swing.plaf.basic.BasicBorders", - "getTextFieldBorder"); + LazyValue textFieldBorder = + t -> BasicBorders.getTextFieldBorder(); Object editorMargin = threeInsets; @@ -899,21 +843,13 @@ public abstract class BasicLookAndFeel extends LookAndFeel implements Serializab /* Default frame icons are undefined for Basic. */ "InternalFrame.maximizeIcon", - new SwingLazyValue( - "javax.swing.plaf.basic.BasicIconFactory", - "createEmptyFrameIcon"), + (LazyValue) t -> BasicIconFactory.createEmptyFrameIcon(), "InternalFrame.minimizeIcon", - new SwingLazyValue( - "javax.swing.plaf.basic.BasicIconFactory", - "createEmptyFrameIcon"), + (LazyValue) t -> BasicIconFactory.createEmptyFrameIcon(), "InternalFrame.iconifyIcon", - new SwingLazyValue( - "javax.swing.plaf.basic.BasicIconFactory", - "createEmptyFrameIcon"), + (LazyValue) t -> BasicIconFactory.createEmptyFrameIcon(), "InternalFrame.closeIcon", - new SwingLazyValue( - "javax.swing.plaf.basic.BasicIconFactory", - "createEmptyFrameIcon"), + (LazyValue) t -> BasicIconFactory.createEmptyFrameIcon(), // InternalFrame Auditory Cue Mappings "InternalFrame.closeSound", null, "InternalFrame.maximizeSound", null, @@ -1576,14 +1512,10 @@ public abstract class BasicLookAndFeel extends LookAndFeel implements Serializab "ctrl shift PAGE_UP", "scrollRightExtendSelection", "ctrl shift PAGE_DOWN", "scrollLeftExtendSelection", }), - "Table.ascendingSortIcon", new SwingLazyValue( - "sun.swing.icon.SortArrowIcon", - null, new Object[] { Boolean.TRUE, - "Table.sortIconColor" }), - "Table.descendingSortIcon", new SwingLazyValue( - "sun.swing.icon.SortArrowIcon", - null, new Object[] { Boolean.FALSE, - "Table.sortIconColor" }), + "Table.ascendingSortIcon", (LazyValue) t -> + new SortArrowIcon(true, "Table.sortIconColor"), + "Table.descendingSortIcon", (LazyValue) t -> + new SortArrowIcon(false, "Table.sortIconColor"), "Table.sortIconColor", controlShadow, "TableHeader.font", dialogPlain12, @@ -2324,4 +2256,4 @@ public abstract class BasicLookAndFeel extends LookAndFeel implements Serializab } } } -} +} \ No newline at end of file diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java index 1c9e8cb807b..143899bb6cb 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -393,6 +393,7 @@ public class BasicOptionPaneUI extends OptionPaneUI { if (nl >= 0) { // break up newlines if (nl == 0) { + @SuppressWarnings("serial") // anonymous class JPanel breakPanel = new JPanel() { public Dimension getPreferredSize() { Font f = getFont(); @@ -1338,6 +1339,7 @@ public class BasicOptionPaneUI extends OptionPaneUI { * change to the JOptionPane, but we also want additional bindings * (those of the JRootPane) to be processed as well. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class MultiplexingTextField extends JTextField { private KeyStroke[] strokes; @@ -1431,6 +1433,7 @@ public class BasicOptionPaneUI extends OptionPaneUI { return button; } + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class ConstrainedButton extends JButton { int minimumWidth; diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicRootPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicRootPaneUI.java index 9fa579b24f4..5c999e0089d 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicRootPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicRootPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -240,6 +240,7 @@ public class BasicRootPaneUI extends RootPaneUI implements } } + @SuppressWarnings("serial") // JDK-implementation class private static class RootPaneInputMap extends ComponentInputMapUIResource { public RootPaneInputMap(JComponent c) { super(c); diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java index 440de3d291f..bc8dda4a665 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1894,6 +1894,7 @@ public class BasicSliderUI extends SliderUI{ * This class should be treated as a "protected" inner class. * Instantiate it only within subclasses of <code>Foo</code>. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public class ActionScroller extends AbstractAction { // NOTE: This class exists only for backward compatibility. All // its functionality has been moved into Actions. If you need to add @@ -1927,6 +1928,7 @@ public class BasicSliderUI extends SliderUI{ /** * A static version of the above. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class SharedActionScroller extends AbstractAction { // NOTE: This class exists only for backward compatibility. All // its functionality has been moved into Actions. If you need to add diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java index eb057e68cf0..203deb1a54b 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -601,6 +601,7 @@ public class BasicSpinnerUI extends SpinnerUI * so it doesn't have any state that persists beyond the limits * of a single button pressed/released gesture. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class ArrowButtonHandler extends AbstractAction implements FocusListener, MouseListener, UIResource { final javax.swing.Timer autoRepeatTimer; diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java index ab99d046fe4..405795b985d 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +829,7 @@ public class BasicSplitPaneUI extends SplitPaneUI * Returns the default non continuous layout divider, which is an * instance of {@code Canvas} that fills in the background with dark gray. */ + @SuppressWarnings("serial") // anonymous class protected Component createDefaultNonContinuousLayoutDivider() { return new Canvas() { public void paint(Graphics g) { diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java index 7b7823f74cb..bf27557ac99 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -3449,6 +3449,7 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants { } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class ScrollableTabViewport extends JViewport implements UIResource { public ScrollableTabViewport() { super(); @@ -3463,6 +3464,7 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class ScrollableTabPanel extends JPanel implements UIResource { public ScrollableTabPanel() { super(null); @@ -3493,6 +3495,7 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class ScrollableTabButton extends BasicArrowButton implements UIResource, SwingConstants { public ScrollableTabButton(int direction) { @@ -3818,6 +3821,7 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants { return htmlViews; } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class TabContainer extends JPanel implements UIResource { private boolean notifyTabbedPane = true; @@ -3862,6 +3866,7 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class CroppedEdge extends JPanel implements UIResource { private Shape shape; private int tabIndex; diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java index dba3c6b23a1..a59c79dc622 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -2134,6 +2134,7 @@ public class BasicTableUI extends TableUI private static final TransferHandler defaultTransferHandler = new TableTransferHandler(); + @SuppressWarnings("serial") // JDK-implementation class static class TableTransferHandler extends TransferHandler implements UIResource { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicToolBarUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicToolBarUI.java index c4883927c96..506a8a63b38 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicToolBarUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicToolBarUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -470,11 +470,13 @@ public class BasicToolBarUI extends ToolBarUI implements SwingConstants */ protected JFrame createFloatingFrame(JToolBar toolbar) { Window window = SwingUtilities.getWindowAncestor(toolbar); + @SuppressWarnings("serial") // anonymous class JFrame frame = new JFrame(toolbar.getName(), (window != null) ? window.getGraphicsConfiguration() : null) { // Override createRootPane() to automatically resize // the frame when contents change protected JRootPane createRootPane() { + @SuppressWarnings("serial") // anonymous class JRootPane rootPane = new JRootPane() { private boolean packing = false; @@ -505,6 +507,7 @@ public class BasicToolBarUI extends ToolBarUI implements SwingConstants * @since 1.4 */ protected RootPaneContainer createFloatingWindow(JToolBar toolbar) { + @SuppressWarnings("serial") // Superclass is not serializable across versions class ToolBarDialog extends JDialog { public ToolBarDialog(Frame owner, String title, boolean modal) { super(owner, title, modal); @@ -517,6 +520,7 @@ public class BasicToolBarUI extends ToolBarUI implements SwingConstants // Override createRootPane() to automatically resize // the frame when contents change protected JRootPane createRootPane() { + @SuppressWarnings("serial") // anonymous class JRootPane rootPane = new JRootPane() { private boolean packing = false; @@ -1370,6 +1374,7 @@ public class BasicToolBarUI extends ToolBarUI implements SwingConstants } } + @SuppressWarnings("serial") // Same-version serialization only protected class DragWindow extends Window { Color borderColor = Color.gray; diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java index cd41f852715..66097d8a1e9 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -2916,6 +2916,7 @@ public class BasicTreeUI extends TreeUI * Will toggle the expandedness of a node, as well as potentially * incrementing the selection. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public class TreeTraverseAction extends AbstractAction { /** Determines direction to traverse, 1 means expand, -1 means * collapse. */ @@ -2948,6 +2949,7 @@ public class BasicTreeUI extends TreeUI /** TreePageAction handles page up and page down events. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public class TreePageAction extends AbstractAction { /** Specifies the direction to adjust the selection by. */ protected int direction; @@ -2983,6 +2985,7 @@ public class BasicTreeUI extends TreeUI /** TreeIncrementAction is used to handle up/down actions. Selection * is moved up or down based on direction. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public class TreeIncrementAction extends AbstractAction { /** Specifies the direction to adjust the selection by. */ protected int direction; @@ -3020,6 +3023,7 @@ public class BasicTreeUI extends TreeUI * Scrolls either the first or last cell to be visible based on * direction. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public class TreeHomeAction extends AbstractAction { protected int direction; /** Set to true if append to selection. */ @@ -3054,6 +3058,7 @@ public class BasicTreeUI extends TreeUI /** * For the first selected row expandedness will be toggled. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public class TreeToggleAction extends AbstractAction { public TreeToggleAction(String name) { } @@ -3073,6 +3078,7 @@ public class BasicTreeUI extends TreeUI /** * ActionListener that invokes cancelEditing when action performed. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public class TreeCancelEditingAction extends AbstractAction { public TreeCancelEditingAction(String name) { } @@ -3185,6 +3191,7 @@ public class BasicTreeUI extends TreeUI private static final TransferHandler defaultTransferHandler = new TreeTransferHandler(); + @SuppressWarnings("serial") // JDK-implementation class static class TreeTransferHandler extends TransferHandler implements UIResource, Comparator<TreePath> { private JTree tree; diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/CenterLayout.java b/jdk/src/share/classes/javax/swing/plaf/basic/CenterLayout.java index 777adf3db0d..fadd9ef99d0 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/CenterLayout.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/CenterLayout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +34,7 @@ import java.io.*; * @author Tom Santos * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only class CenterLayout implements LayoutManager, Serializable { public void addLayoutComponent(String name, Component comp) { } public void removeLayoutComponent(Component comp) { } diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/DefaultMenuLayout.java b/jdk/src/share/classes/javax/swing/plaf/basic/DefaultMenuLayout.java index 6b905c6c07b..627c3702a73 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/DefaultMenuLayout.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/DefaultMenuLayout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,7 +39,7 @@ import java.awt.Dimension; * * @author Georges Saab */ - +@SuppressWarnings("serial") // Superclass is not serializable across versions public class DefaultMenuLayout extends BoxLayout implements UIResource { public DefaultMenuLayout(Container target, int axis) { super(target, axis); diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java b/jdk/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java index db2056e6144..d6ee02e1236 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ import javax.swing.plaf.*; * * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only class LazyActionMap extends ActionMapUIResource { /** * Object to invoke <code>loadActionMap</code> on. This may be diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalBorders.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalBorders.java index 24c3d5a15d1..8f1ee4fb4d3 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalBorders.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalBorders.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -56,7 +56,7 @@ public class MetalBorders { static Object NO_BUTTON_ROLLOVER = new StringUIClientPropertyKey("NoButtonRollover"); - + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class Flush3DBorder extends AbstractBorder implements UIResource{ public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) { @@ -73,6 +73,7 @@ public class MetalBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class ButtonBorder extends AbstractBorder implements UIResource { protected static Insets borderInsets = new Insets( 3, 3, 3, 3 ); @@ -187,6 +188,7 @@ public class MetalBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class InternalFrameBorder extends AbstractBorder implements UIResource { private static final int corner = 14; @@ -248,6 +250,7 @@ public class MetalBorders { * Border for a Frame. * @since 1.4 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class FrameBorder extends AbstractBorder implements UIResource { private static final int corner = 14; @@ -310,6 +313,7 @@ public class MetalBorders { * Border for a Frame. * @since 1.4 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class DialogBorder extends AbstractBorder implements UIResource { private static final int corner = 14; @@ -403,6 +407,7 @@ public class MetalBorders { * Border for an Error Dialog. * @since 1.4 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class ErrorDialogBorder extends DialogBorder implements UIResource { protected Color getActiveBackground() { @@ -416,6 +421,7 @@ public class MetalBorders { * JColorChooser.. * @since 1.4 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class QuestionDialogBorder extends DialogBorder implements UIResource { protected Color getActiveBackground() { @@ -428,6 +434,7 @@ public class MetalBorders { * Border for a Warning Dialog. * @since 1.4 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class WarningDialogBorder extends DialogBorder implements UIResource { protected Color getActiveBackground() { @@ -440,6 +447,7 @@ public class MetalBorders { * Border for a Palette. * @since 1.3 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class PaletteBorder extends AbstractBorder implements UIResource { int titleHeight = 0; @@ -462,6 +470,7 @@ public class MetalBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class OptionDialogBorder extends AbstractBorder implements UIResource { int titleHeight = 0; @@ -523,7 +532,7 @@ public class MetalBorders { } } - + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class MenuBarBorder extends AbstractBorder implements UIResource { protected static Insets borderInsets = new Insets( 1, 0, 1, 0 ); @@ -560,6 +569,7 @@ public class MetalBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class MenuItemBorder extends AbstractBorder implements UIResource { protected static Insets borderInsets = new Insets( 2, 2, 2, 2 ); @@ -607,6 +617,7 @@ public class MetalBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class PopupMenuBorder extends AbstractBorder implements UIResource { protected static Insets borderInsets = new Insets( 3, 1, 2, 1 ); @@ -631,7 +642,7 @@ public class MetalBorders { } } - + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class RolloverButtonBorder extends ButtonBorder { public void paintBorder( Component c, Graphics g, int x, int y, int w, int h ) { @@ -652,6 +663,7 @@ public class MetalBorders { * Note: This is identical to the package private class * BasicBorders.RolloverMarginBorder and should probably be consolidated. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class RolloverMarginBorder extends EmptyBorder { public RolloverMarginBorder() { @@ -681,6 +693,7 @@ public class MetalBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class ToolBarBorder extends AbstractBorder implements UIResource, SwingConstants { protected MetalBumps bumps = new MetalBumps( 10, 10, @@ -808,6 +821,7 @@ public class MetalBorders { return textFieldBorder; } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class TextFieldBorder extends Flush3DBorder { public void paintBorder(Component c, Graphics g, int x, int y, @@ -832,6 +846,7 @@ public class MetalBorders { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class ScrollPaneBorder extends AbstractBorder implements UIResource { public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) { @@ -892,6 +907,7 @@ public class MetalBorders { /** * @since 1.3 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class ToggleButtonBorder extends ButtonBorder { public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) { AbstractButton button = (AbstractButton)c; @@ -924,6 +940,7 @@ public class MetalBorders { * Border for a Table Header * @since 1.3 */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class TableHeaderBorder extends javax.swing.border.AbstractBorder { protected Insets editorBorderInsets = new Insets( 2, 2, 2, 0 ); diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxIcon.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxIcon.java index 0f0f7d75440..1b1bed9e0b7 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxIcon.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxIcon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +40,7 @@ import javax.swing.plaf.basic.BasicComboBoxUI; * @see MetalComboBoxUI * @author Tom Santos */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalComboBoxIcon implements Icon, Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java index 677d1f88c8d..75c1041b95f 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -234,7 +234,8 @@ public class MetalFileChooserUI extends BasicFileChooserUI { topPanel.add(lookInLabel, BorderLayout.BEFORE_LINE_BEGINS); // CurrentDir ComboBox - directoryComboBox = new JComboBox() { + @SuppressWarnings("serial") // anonymous class + JComboBox tmp1 = new JComboBox() { public Dimension getPreferredSize() { Dimension d = super.getPreferredSize(); // Must be small enough to not affect total width. @@ -242,6 +243,7 @@ public class MetalFileChooserUI extends BasicFileChooserUI { return d; } }; + directoryComboBox = tmp1; directoryComboBox.putClientProperty(AccessibleContext.ACCESSIBLE_DESCRIPTION_PROPERTY, lookInLabelText); directoryComboBox.putClientProperty( "JComboBox.isTableCellEditor", Boolean.TRUE ); @@ -380,11 +382,13 @@ public class MetalFileChooserUI extends BasicFileChooserUI { populateFileNameLabel(); fileNamePanel.add(fileNameLabel); - fileNameTextField = new JTextField(35) { + @SuppressWarnings("serial") // anonymous class + JTextField tmp2 = new JTextField(35) { public Dimension getMaximumSize() { return new Dimension(Short.MAX_VALUE, super.getPreferredSize().height); } }; + fileNameTextField = tmp2; fileNamePanel.add(fileNameTextField); fileNameLabel.setLabelFor(fileNameTextField); fileNameTextField.addFocusListener( @@ -534,6 +538,7 @@ public class MetalFileChooserUI extends BasicFileChooserUI { } // Obsolete class, not used in this version. + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class FileRenderer extends DefaultListCellRenderer { } @@ -853,6 +858,7 @@ public class MetalFileChooserUI extends BasicFileChooserUI { // // Renderer for DirectoryComboBox // + @SuppressWarnings("serial") // Superclass is not serializable across versions class DirectoryComboBoxRenderer extends DefaultListCellRenderer { IndentIcon ii = new IndentIcon(); public Component getListCellRendererComponent(JList list, Object value, @@ -910,6 +916,7 @@ public class MetalFileChooserUI extends BasicFileChooserUI { /** * Data model for a type-face selection combo-box. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class DirectoryComboBoxModel extends AbstractListModel<Object> implements ComboBoxModel<Object> { Vector<File> directories = new Vector<File>(); int[] depths = null; @@ -1042,6 +1049,7 @@ public class MetalFileChooserUI extends BasicFileChooserUI { /** * Render different type sizes and styles. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public class FilterComboBoxRenderer extends DefaultListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, @@ -1067,6 +1075,7 @@ public class MetalFileChooserUI extends BasicFileChooserUI { /** * Data model for a type-face selection combo-box. */ + @SuppressWarnings("serial") // Same-version serialization only protected class FilterComboBoxModel extends AbstractListModel<Object> implements ComboBoxModel<Object>, PropertyChangeListener { protected FileFilter[] filters; protected FilterComboBoxModel() { @@ -1144,6 +1153,7 @@ public class MetalFileChooserUI extends BasicFileChooserUI { /** * Acts when DirectoryComboBox has changed the selected item. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions protected class DirectoryComboBoxAction extends AbstractAction { protected DirectoryComboBoxAction() { super("DirectoryComboBoxAction"); @@ -1244,6 +1254,7 @@ public class MetalFileChooserUI extends BasicFileChooserUI { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class AlignedLabel extends JLabel { private AlignedLabel[] group; private int maxWidth = 0; diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java index 2c814fcd639..bcf1abbcedc 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -43,7 +43,7 @@ import javax.swing.plaf.basic.BasicInternalFrameTitlePane; * @author Brian Beck * @since 1.3 */ - +@SuppressWarnings("serial") // Superclass is not serializable across versions public class MetalInternalFrameTitlePane extends BasicInternalFrameTitlePane { protected boolean isPalette = false; diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java index a51603608e6..aea222d755f 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java @@ -45,7 +45,7 @@ import java.security.PrivilegedAction; import sun.awt.*; import sun.security.action.GetPropertyAction; import sun.swing.DefaultLayoutStyle; -import sun.swing.SwingLazyValue; +import static javax.swing.UIDefaults.LazyValue; import sun.swing.SwingUtilities2; /** @@ -457,9 +457,8 @@ public class MetalLookAndFeel extends BasicLookAndFeel Integer zero = Integer.valueOf(0); - Object textFieldBorder = - new SwingLazyValue("javax.swing.plaf.metal.MetalBorders", - "getTextFieldBorder"); + LazyValue textFieldBorder = + t -> MetalBorders.getTextFieldBorder(); Object dialogBorder = new MetalLazyValue( "javax.swing.plaf.metal.MetalBorders$DialogBorder"); @@ -614,61 +613,47 @@ public class MetalLookAndFeel extends BasicLookAndFeel "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/ }); - Object scrollPaneBorder = new SwingLazyValue("javax.swing.plaf.metal.MetalBorders$ScrollPaneBorder"); - Object buttonBorder = - new SwingLazyValue("javax.swing.plaf.metal.MetalBorders", - "getButtonBorder"); + LazyValue scrollPaneBorder = t -> new MetalBorders.ScrollPaneBorder(); + LazyValue buttonBorder = + t -> MetalBorders.getButtonBorder(); - Object toggleButtonBorder = - new SwingLazyValue("javax.swing.plaf.metal.MetalBorders", - "getToggleButtonBorder"); + LazyValue toggleButtonBorder = + t -> MetalBorders.getToggleButtonBorder(); - Object titledBorderBorder = - new SwingLazyValue( - "javax.swing.plaf.BorderUIResource$LineBorderUIResource", - new Object[] {controlShadow}); + LazyValue titledBorderBorder = + t -> new BorderUIResource.LineBorderUIResource(controlShadow); - Object desktopIconBorder = - new SwingLazyValue( - "javax.swing.plaf.metal.MetalBorders", - "getDesktopIconBorder"); + LazyValue desktopIconBorder = + t -> MetalBorders.getDesktopIconBorder(); - Object menuBarBorder = - new SwingLazyValue( - "javax.swing.plaf.metal.MetalBorders$MenuBarBorder"); + LazyValue menuBarBorder = + t -> new MetalBorders.MenuBarBorder(); - Object popupMenuBorder = - new SwingLazyValue( - "javax.swing.plaf.metal.MetalBorders$PopupMenuBorder"); - Object menuItemBorder = - new SwingLazyValue( - "javax.swing.plaf.metal.MetalBorders$MenuItemBorder"); + LazyValue popupMenuBorder = + t -> new MetalBorders.PopupMenuBorder(); + LazyValue menuItemBorder = + t -> new MetalBorders.MenuItemBorder(); Object menuItemAcceleratorDelimiter = "-"; - Object toolBarBorder = new SwingLazyValue("javax.swing.plaf.metal.MetalBorders$ToolBarBorder"); + LazyValue toolBarBorder = t -> new MetalBorders.ToolBarBorder(); - Object progressBarBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource$LineBorderUIResource", - new Object[] {controlDarkShadow, new Integer(1)}); + LazyValue progressBarBorder = t -> + new BorderUIResource.LineBorderUIResource(controlDarkShadow, new Integer(1)); - Object toolTipBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource$LineBorderUIResource", - new Object[] {primaryControlDarkShadow}); + LazyValue toolTipBorder = t -> + new BorderUIResource.LineBorderUIResource(primaryControlDarkShadow); - Object toolTipBorderInactive = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource$LineBorderUIResource", - new Object[] {controlDarkShadow}); + LazyValue toolTipBorderInactive = t -> + new BorderUIResource.LineBorderUIResource(controlDarkShadow); - Object focusCellHighlightBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource$LineBorderUIResource", - new Object[] {focusColor}); + LazyValue focusCellHighlightBorder = t -> + new BorderUIResource.LineBorderUIResource(focusColor); Object tabbedPaneTabAreaInsets = new InsetsUIResource(4, 2, 0, 6); Object tabbedPaneTabInsets = new InsetsUIResource(0, 9, 1, 9); - final Object[] internalFrameIconArgs = new Object[1]; - internalFrameIconArgs[0] = new Integer(16); + int internalFrameIconSize = 16; Object[] defaultCueList = new Object[] { "OptionPane.errorSound", @@ -794,7 +779,7 @@ public class MetalLookAndFeel extends BasicLookAndFeel "Checkbox.select", controlShadow, "CheckBox.font", controlTextValue, "CheckBox.focus", focusColor, - "CheckBox.icon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getCheckBoxIcon"), + "CheckBox.icon",(LazyValue) t -> MetalIconFactory.getCheckBoxIcon(), "CheckBox.focusInputMap", new UIDefaults.LazyInputMap(new Object[] { "SPACE", "pressed", @@ -806,7 +791,7 @@ public class MetalLookAndFeel extends BasicLookAndFeel "RadioButton.disabledText", inactiveControlTextColor, "RadioButton.select", controlShadow, - "RadioButton.icon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getRadioButtonIcon"), + "RadioButton.icon",(LazyValue) t -> MetalIconFactory.getRadioButtonIcon(), "RadioButton.font", controlTextValue, "RadioButton.focus", focusColor, "RadioButton.focusInputMap", @@ -831,18 +816,18 @@ public class MetalLookAndFeel extends BasicLookAndFeel // File View - "FileView.directoryIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getTreeFolderIcon"), - "FileView.fileIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getTreeLeafIcon"), - "FileView.computerIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getTreeComputerIcon"), - "FileView.hardDriveIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getTreeHardDriveIcon"), - "FileView.floppyDriveIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getTreeFloppyDriveIcon"), + "FileView.directoryIcon",(LazyValue) t -> MetalIconFactory.getTreeFolderIcon(), + "FileView.fileIcon",(LazyValue) t -> MetalIconFactory.getTreeLeafIcon(), + "FileView.computerIcon",(LazyValue) t -> MetalIconFactory.getTreeComputerIcon(), + "FileView.hardDriveIcon",(LazyValue) t -> MetalIconFactory.getTreeHardDriveIcon(), + "FileView.floppyDriveIcon",(LazyValue) t -> MetalIconFactory.getTreeFloppyDriveIcon(), // File Chooser - "FileChooser.detailsViewIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getFileChooserDetailViewIcon"), - "FileChooser.homeFolderIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getFileChooserHomeFolderIcon"), - "FileChooser.listViewIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getFileChooserListViewIcon"), - "FileChooser.newFolderIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getFileChooserNewFolderIcon"), - "FileChooser.upFolderIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getFileChooserUpFolderIcon"), + "FileChooser.detailsViewIcon",(LazyValue) t -> MetalIconFactory.getFileChooserDetailViewIcon(), + "FileChooser.homeFolderIcon",(LazyValue) t -> MetalIconFactory.getFileChooserHomeFolderIcon(), + "FileChooser.listViewIcon",(LazyValue) t -> MetalIconFactory.getFileChooserListViewIcon(), + "FileChooser.newFolderIcon",(LazyValue) t -> MetalIconFactory.getFileChooserNewFolderIcon(), + "FileChooser.upFolderIcon",(LazyValue) t -> MetalIconFactory.getFileChooserUpFolderIcon(), "FileChooser.usesSingleFilePane", Boolean.TRUE, "FileChooser.ancestorInputMap", @@ -873,8 +858,8 @@ public class MetalLookAndFeel extends BasicLookAndFeel "Slider.focusInsets", zeroInsets, "Slider.trackWidth", new Integer( 7 ), "Slider.majorTickLength", new Integer( 6 ), - "Slider.horizontalThumbIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getHorizontalSliderThumbIcon"), - "Slider.verticalThumbIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getVerticalSliderThumbIcon"), + "Slider.horizontalThumbIcon",(LazyValue) t -> MetalIconFactory.getHorizontalSliderThumbIcon(), + "Slider.verticalThumbIcon",(LazyValue) t -> MetalIconFactory.getVerticalSliderThumbIcon(), "Slider.focusInputMap", new UIDefaults.LazyInputMap(new Object[] { "RIGHT", "positiveUnitIncrement", @@ -926,32 +911,29 @@ public class MetalLookAndFeel extends BasicLookAndFeel }), // Internal Frame Defaults - "InternalFrame.icon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getInternalFrameDefaultMenuIcon"), - "InternalFrame.border", new SwingLazyValue("javax.swing.plaf.metal.MetalBorders$InternalFrameBorder"), - "InternalFrame.optionDialogBorder", new SwingLazyValue("javax.swing.plaf.metal.MetalBorders$OptionDialogBorder"), - "InternalFrame.paletteBorder", new SwingLazyValue("javax.swing.plaf.metal.MetalBorders$PaletteBorder"), + "InternalFrame.icon",(LazyValue) t -> + MetalIconFactory.getInternalFrameDefaultMenuIcon(), + "InternalFrame.border",(LazyValue) t -> + new MetalBorders.InternalFrameBorder(), + "InternalFrame.optionDialogBorder",(LazyValue) t -> + new MetalBorders.OptionDialogBorder(), + "InternalFrame.paletteBorder",(LazyValue) t -> + new MetalBorders.PaletteBorder(), "InternalFrame.paletteTitleHeight", new Integer(11), - "InternalFrame.paletteCloseIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory$PaletteCloseIcon"), + "InternalFrame.paletteCloseIcon",(LazyValue) t -> + new MetalIconFactory.PaletteCloseIcon(), "InternalFrame.closeIcon", - new SwingLazyValue( - "javax.swing.plaf.metal.MetalIconFactory", - "getInternalFrameCloseIcon", - internalFrameIconArgs), + (LazyValue) t -> MetalIconFactory. + getInternalFrameCloseIcon(internalFrameIconSize), "InternalFrame.maximizeIcon", - new SwingLazyValue( - "javax.swing.plaf.metal.MetalIconFactory", - "getInternalFrameMaximizeIcon", - internalFrameIconArgs), + (LazyValue) t -> MetalIconFactory. + getInternalFrameMaximizeIcon(internalFrameIconSize), "InternalFrame.iconifyIcon", - new SwingLazyValue( - "javax.swing.plaf.metal.MetalIconFactory", - "getInternalFrameMinimizeIcon", - internalFrameIconArgs), + (LazyValue) t -> MetalIconFactory. + getInternalFrameMinimizeIcon(internalFrameIconSize), "InternalFrame.minimizeIcon", - new SwingLazyValue( - "javax.swing.plaf.metal.MetalIconFactory", - "getInternalFrameAltMaximizeIcon", - internalFrameIconArgs), + (LazyValue) t -> MetalIconFactory. + getInternalFrameAltMaximizeIcon(internalFrameIconSize), "InternalFrame.titleFont", windowTitleValue, "InternalFrame.windowBindings", null, // Internal Frame Auditory Cue Mappings @@ -1248,8 +1230,7 @@ public class MetalLookAndFeel extends BasicLookAndFeel "icons/sortDown.png"), "TableHeader.font", userTextValue, - "TableHeader.cellBorder", new SwingLazyValue( - "javax.swing.plaf.metal.MetalBorders$TableHeaderBorder"), + "TableHeader.cellBorder",(LazyValue) t -> new MetalBorders.TableHeaderBorder(), // MenuBar "MenuBar.border", menuBarBorder, @@ -1271,8 +1252,8 @@ public class MetalLookAndFeel extends BasicLookAndFeel "Menu.acceleratorFont", subTextValue, "Menu.acceleratorForeground", acceleratorForeground, "Menu.acceleratorSelectionForeground", acceleratorSelectedForeground, - "Menu.checkIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getMenuItemCheckIcon"), - "Menu.arrowIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getMenuArrowIcon"), + "Menu.checkIcon",(LazyValue) t -> MetalIconFactory.getMenuItemCheckIcon(), + "Menu.arrowIcon",(LazyValue) t -> MetalIconFactory.getMenuArrowIcon(), // Menu Item "MenuItem.border", menuItemBorder, @@ -1285,8 +1266,8 @@ public class MetalLookAndFeel extends BasicLookAndFeel "MenuItem.acceleratorForeground", acceleratorForeground, "MenuItem.acceleratorSelectionForeground", acceleratorSelectedForeground, "MenuItem.acceleratorDelimiter", menuItemAcceleratorDelimiter, - "MenuItem.checkIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getMenuItemCheckIcon"), - "MenuItem.arrowIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getMenuItemArrowIcon"), + "MenuItem.checkIcon",(LazyValue) t -> MetalIconFactory.getMenuItemCheckIcon(), + "MenuItem.arrowIcon",(LazyValue) t -> MetalIconFactory.getMenuItemArrowIcon(), // Menu Item Auditory Cue Mapping "MenuItem.commandSound", "sounds/MenuItemCommand.wav", @@ -1347,8 +1328,8 @@ public class MetalLookAndFeel extends BasicLookAndFeel "CheckBoxMenuItem.acceleratorFont", subTextValue, "CheckBoxMenuItem.acceleratorForeground", acceleratorForeground, "CheckBoxMenuItem.acceleratorSelectionForeground", acceleratorSelectedForeground, - "CheckBoxMenuItem.checkIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getCheckBoxMenuItemIcon"), - "CheckBoxMenuItem.arrowIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getMenuItemArrowIcon"), + "CheckBoxMenuItem.checkIcon",(LazyValue) t -> MetalIconFactory.getCheckBoxMenuItemIcon(), + "CheckBoxMenuItem.arrowIcon",(LazyValue) t -> MetalIconFactory.getMenuItemArrowIcon(), "CheckBoxMenuItem.commandSound", "sounds/MenuItemCommand.wav", "RadioButtonMenuItem.border", menuItemBorder, @@ -1360,8 +1341,8 @@ public class MetalLookAndFeel extends BasicLookAndFeel "RadioButtonMenuItem.acceleratorFont", subTextValue, "RadioButtonMenuItem.acceleratorForeground", acceleratorForeground, "RadioButtonMenuItem.acceleratorSelectionForeground", acceleratorSelectedForeground, - "RadioButtonMenuItem.checkIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getRadioButtonMenuItemIcon"), - "RadioButtonMenuItem.arrowIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getMenuItemArrowIcon"), + "RadioButtonMenuItem.checkIcon",(LazyValue) t -> MetalIconFactory.getRadioButtonMenuItemIcon(), + "RadioButtonMenuItem.arrowIcon",(LazyValue) t -> MetalIconFactory.getMenuItemArrowIcon(), "RadioButtonMenuItem.commandSound", "sounds/MenuItemCommand.wav", "Spinner.ancestorInputMap", @@ -1404,17 +1385,11 @@ public class MetalLookAndFeel extends BasicLookAndFeel "Tree.font", userTextValue, "Tree.textBackground", getWindowBackground(), "Tree.selectionBorderColor", focusColor, - "Tree.openIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getTreeFolderIcon"), - "Tree.closedIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getTreeFolderIcon"), - "Tree.leafIcon", new SwingLazyValue("javax.swing.plaf.metal.MetalIconFactory", "getTreeLeafIcon"), - "Tree.expandedIcon", new SwingLazyValue( - "javax.swing.plaf.metal.MetalIconFactory", - "getTreeControlIcon", - new Object[] {Boolean.valueOf(MetalIconFactory.DARK)}), - "Tree.collapsedIcon", new SwingLazyValue( - "javax.swing.plaf.metal.MetalIconFactory", - "getTreeControlIcon", - new Object[] {Boolean.valueOf( MetalIconFactory.LIGHT )}), + "Tree.openIcon",(LazyValue) t -> MetalIconFactory.getTreeFolderIcon(), + "Tree.closedIcon",(LazyValue) t -> MetalIconFactory.getTreeFolderIcon(), + "Tree.leafIcon",(LazyValue) t -> MetalIconFactory.getTreeLeafIcon(), + "Tree.expandedIcon",(LazyValue) t -> MetalIconFactory.getTreeControlIcon(Boolean.valueOf(MetalIconFactory.DARK)), + "Tree.collapsedIcon",(LazyValue) t -> MetalIconFactory.getTreeControlIcon(Boolean.valueOf( MetalIconFactory.LIGHT )), "Tree.line", primaryControl, // horiz lines "Tree.hash", primaryControl, // legs @@ -2499,4 +2474,4 @@ public class MetalLookAndFeel extends BasicLookAndFeel return 0; } } -} +} \ No newline at end of file diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalTitlePane.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalTitlePane.java index 4af472c9d15..7efa719b456 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalTitlePane.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalTitlePane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +49,7 @@ import javax.accessibility.*; * @author Terry Kellerman * @since 1.4 */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class MetalTitlePane extends JComponent { private static final Border handyEmptyBorder = new EmptyBorder(0,0,0,0); private static final int IMAGE_HEIGHT = 16; @@ -781,6 +782,7 @@ class MetalTitlePane extends JComponent { /** * Actions used to <code>close</code> the <code>Window</code>. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class CloseAction extends AbstractAction { public CloseAction() { super(UIManager.getString("MetalTitlePane.closeTitle", @@ -796,6 +798,7 @@ class MetalTitlePane extends JComponent { /** * Actions used to <code>iconfiy</code> the <code>Frame</code>. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class IconifyAction extends AbstractAction { public IconifyAction() { super(UIManager.getString("MetalTitlePane.iconifyTitle", @@ -811,6 +814,7 @@ class MetalTitlePane extends JComponent { /** * Actions used to <code>restore</code> the <code>Frame</code>. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class RestoreAction extends AbstractAction { public RestoreAction() { super(UIManager.getString @@ -826,6 +830,7 @@ class MetalTitlePane extends JComponent { /** * Actions used to <code>restore</code> the <code>Frame</code>. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class MaximizeAction extends AbstractAction { public MaximizeAction() { super(UIManager.getString("MetalTitlePane.maximizeTitle", @@ -843,6 +848,7 @@ class MetalTitlePane extends JComponent { * image to draw from the Frame associated with the * <code>JRootPane</code>. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class SystemMenuBar extends JMenuBar { public void paint(Graphics g) { if (isOpaque()) { diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/OceanTheme.java b/jdk/src/share/classes/javax/swing/plaf/metal/OceanTheme.java index 07cc51b42f7..407d622f3f7 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/OceanTheme.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/OceanTheme.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * 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,7 +32,6 @@ import javax.swing.*; import javax.swing.plaf.*; import sun.swing.SwingUtilities2; import sun.swing.PrintColorUIResource; -import sun.swing.SwingLazyValue; /** * The default theme for the {@code MetalLookAndFeel}. @@ -51,6 +50,7 @@ import sun.swing.SwingLazyValue; * @since 1.5 * @see MetalLookAndFeel#setCurrentTheme */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class OceanTheme extends DefaultMetalTheme { private static final ColorUIResource PRIMARY1 = new ColorUIResource(0x6382BF); @@ -98,6 +98,7 @@ public class OceanTheme extends DefaultMetalTheme { // InternalFrame Icon // Delegates to different icons based on button state + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class IFIcon extends IconUIResource { private Icon pressed; @@ -129,9 +130,8 @@ public class OceanTheme extends DefaultMetalTheme { * @throws NullPointerException if {@code table} is {@code null} */ public void addCustomEntriesToTable(UIDefaults table) { - Object focusBorder = new SwingLazyValue( - "javax.swing.plaf.BorderUIResource$LineBorderUIResource", - new Object[] {getPrimary1()}); + UIDefaults.LazyValue focusBorder = t -> + new BorderUIResource.LineBorderUIResource(getPrimary1()); // .30 0 DDE8F3 white secondary2 java.util.List buttonGradient = Arrays.asList( new Object[] {new Float(.3f), new Float(0f), diff --git a/jdk/src/share/classes/javax/swing/plaf/multi/MultiLookAndFeel.java b/jdk/src/share/classes/javax/swing/plaf/multi/MultiLookAndFeel.java index 65828883fdd..651302274b1 100644 --- a/jdk/src/share/classes/javax/swing/plaf/multi/MultiLookAndFeel.java +++ b/jdk/src/share/classes/javax/swing/plaf/multi/MultiLookAndFeel.java @@ -294,6 +294,7 @@ public class MultiLookAndFeel extends LookAndFeel { * emits error messages when it cannot find a UI class in the * LAF. */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class MultiUIDefaults extends UIDefaults { MultiUIDefaults(int initialCapacity, float loadFactor) { super(initialCapacity, loadFactor); diff --git a/jdk/src/share/classes/javax/swing/plaf/nimbus/DerivedColor.java b/jdk/src/share/classes/javax/swing/plaf/nimbus/DerivedColor.java index f2143f4ccea..7d537addbef 100644 --- a/jdk/src/share/classes/javax/swing/plaf/nimbus/DerivedColor.java +++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/DerivedColor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * 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.beans.PropertyChangeListener; * * @author Jasper Potts */ +@SuppressWarnings("serial") // Same-version serialization only class DerivedColor extends Color { private final String uiDefaultParentName; private final float hOffset, sOffset, bOffset; @@ -173,6 +174,7 @@ class DerivedColor extends Color { return src == null ? s : s + " pColor=" + src.getRed() + "," + src.getGreen() + "," + src.getBlue(); } + @SuppressWarnings("serial") // Same-version serialization only static class UIResource extends DerivedColor implements javax.swing.plaf.UIResource { UIResource(String uiDefaultParentName, float hOffset, float sOffset, float bOffset, int aOffset) { diff --git a/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java b/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java index b83fc59b4b4..71e00249752 100644 --- a/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java +++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -61,6 +61,7 @@ import sun.security.action.GetPropertyAction; * @author Jasper Potts * @author Richard Bair */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class NimbusLookAndFeel extends SynthLookAndFeel { /** Set of standard region names for UIDefaults Keys */ diff --git a/jdk/src/share/classes/javax/swing/plaf/nimbus/TableScrollPaneCorner.java b/jdk/src/share/classes/javax/swing/plaf/nimbus/TableScrollPaneCorner.java index 2f02ca7ac93..474240490f4 100644 --- a/jdk/src/share/classes/javax/swing/plaf/nimbus/TableScrollPaneCorner.java +++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/TableScrollPaneCorner.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,6 +41,7 @@ import java.awt.image.BufferedImage; * * @author Created by Jasper Potts (Jan 28, 2008) */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class TableScrollPaneCorner extends JComponent implements UIResource{ /** diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java index 65eb2c5373e..e4766bb12c4 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,6 +33,7 @@ import javax.swing.plaf.UIResource; * * @author Scott Violet */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class SynthArrowButton extends JButton implements SwingConstants, UIResource { private int direction; diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthBorder.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthBorder.java index 06b687b7b33..8dcbd6ff36c 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthBorder.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthBorder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * 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 javax.swing.plaf.UIResource; * * @author Scott Violet */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class SynthBorder extends AbstractBorder implements UIResource { private SynthUI ui; private Insets insets; diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java index 754484d03d2..b36b4cf4984 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -444,6 +444,7 @@ public class SynthComboBoxUI extends BasicComboBoxUI implements * renderer installed on a Synth combo box is a JLabel. If this is changed, * then an assert will fail in SynthFileChooserUIImpl */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class SynthComboBoxRenderer extends JLabel implements ListCellRenderer<Object>, UIResource { public SynthComboBoxRenderer() { super(); @@ -535,6 +536,7 @@ public class SynthComboBoxUI extends BasicComboBoxUI implements * are in sync. Whenever one is "over" both are. Whenever one is pressed, * both are. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private final class ButtonHandler extends DefaultButtonModel implements MouseListener, PopupMenuListener { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboPopup.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboPopup.java index 66428dab51b..58a10a90d4c 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboPopup.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboPopup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * 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.awt.*; * * @author Scott Violet */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class SynthComboPopup extends BasicComboPopup { public SynthComboPopup( JComboBox combo ) { super(combo); diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthDesktopIconUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthDesktopIconUI.java index cde0f050e44..e10014100d9 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthDesktopIconUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthDesktopIconUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -60,7 +60,8 @@ public class SynthDesktopIconUI extends BasicDesktopIconUI @Override protected void installComponents() { if (UIManager.getBoolean("InternalFrame.useTaskBar")) { - iconPane = new JToggleButton(frame.getTitle(), frame.getFrameIcon()) { + @SuppressWarnings("serial") // anonymous class + JToggleButton tmp = new JToggleButton(frame.getTitle(), frame.getFrameIcon()) { @Override public String getToolTipText() { return getText(); } @@ -69,6 +70,7 @@ public class SynthDesktopIconUI extends BasicDesktopIconUI return frame.getComponentPopupMenu(); } }; + iconPane = tmp; ToolTipManager.sharedInstance().registerComponent(iconPane); iconPane.setFont(desktopIcon.getFont()); iconPane.setBackground(desktopIcon.getBackground()); diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthDesktopPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthDesktopPaneUI.java index c1099085be4..40300565b9a 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthDesktopPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthDesktopPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -194,6 +194,8 @@ public class SynthDesktopPaneUI extends BasicDesktopPaneUI implements super.uninstallDesktopManager(); } + @SuppressWarnings("serial") // Same-version serialization only and + // internal anonymous classes static class TaskBar extends JPanel implements ComponentListener, ContainerListener { TaskBar() { setOpaque(true); @@ -321,7 +323,7 @@ public class SynthDesktopPaneUI extends BasicDesktopPaneUI implements } } - + @SuppressWarnings("serial") // Same-version serialization only class SynthDesktopManager extends DefaultDesktopManager implements UIResource { public void maximizeFrame(JInternalFrame f) { diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java index f0f7b607e6d..abf490ce863 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +42,7 @@ import sun.swing.SwingUtilities2; * @author Joshua Outwater * @author Steve Wilson */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class SynthInternalFrameTitlePane extends BasicInternalFrameTitlePane implements SynthUI, PropertyChangeListener { @@ -159,6 +160,7 @@ class SynthInternalFrameTitlePane extends BasicInternalFrameTitlePane super.uninstallDefaults(); } + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class JPopupMenuUIResource extends JPopupMenu implements UIResource { } diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthListUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthListUI.java index 5f19a1940f8..58a443acb44 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthListUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthListUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -196,7 +196,7 @@ public class SynthListUI extends BasicListUI return SynthLookAndFeel.getComponentState(c); } - + @SuppressWarnings("serial") // Superclass is not serializable across versions private class SynthListCellRenderer extends DefaultListCellRenderer.UIResource { @Override public String getName() { return "List.cellRenderer"; diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java index 95d461cb6d1..11e5cc2d3a1 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -63,6 +63,7 @@ import sun.swing.plaf.synth.*; * @since 1.5 * @author Scott Violet */ +@SuppressWarnings("serial") // Per above comment, not actually serializable public class SynthLookAndFeel extends BasicLookAndFeel { /** * Used in a handful of places where we need an empty Insets. diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthMenuLayout.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthMenuLayout.java index acffe9f0e26..a192cec9f4f 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthMenuLayout.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthMenuLayout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * 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 @@ import java.awt.Dimension; * * @author Georges Saab */ - +@SuppressWarnings("serial") // Superclass is not serializable across versions class SynthMenuLayout extends DefaultMenuLayout { public SynthMenuLayout(Container target, int axis) { super(target, axis); diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthParser.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthParser.java index a03e752e4c7..ef38ae11387 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthParser.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthParser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1294,6 +1294,7 @@ class SynthParser extends DefaultHandler { /** * ImageIcon that lazily loads the image until needed. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private static class LazyImageIcon extends ImageIcon implements UIResource { private URL location; diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollBarUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollBarUI.java index 21b0a52b508..d3e948d899c 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollBarUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollBarUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -375,6 +375,7 @@ public class SynthScrollBarUI extends BasicScrollBarUI */ @Override protected JButton createDecreaseButton(int orientation) { + @SuppressWarnings("serial") // anonymous class SynthArrowButton synthArrowButton = new SynthArrowButton(orientation) { @Override public boolean contains(int x, int y) { @@ -404,6 +405,7 @@ public class SynthScrollBarUI extends BasicScrollBarUI */ @Override protected JButton createIncreaseButton(int orientation) { + @SuppressWarnings("serial") // anonymous class SynthArrowButton synthArrowButton = new SynthArrowButton(orientation) { @Override public boolean contains(int x, int y) { diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollPaneUI.java index 82d0b5e1e89..6b261546408 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * 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 SynthScrollPaneUI extends BasicScrollPaneUI } - + @SuppressWarnings("serial") // Superclass is not serializable across versions private class ViewportBorder extends AbstractBorder implements UIResource { private Insets insets; diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneDivider.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneDivider.java index c26fe9ec776..c3a203e5237 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneDivider.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneDivider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * 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 sun.swing.DefaultLookup; * * @author Scott Violet */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class SynthSplitPaneDivider extends BasicSplitPaneDivider { public SynthSplitPaneDivider(BasicSplitPaneUI ui) { super(ui); diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneUI.java index 665286c4da8..2c5031c03d6 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -260,6 +260,7 @@ public class SynthSplitPaneUI extends BasicSplitPaneUI * {@inheritDoc} */ @Override + @SuppressWarnings("serial") // anonymous class protected Component createDefaultNonContinuousLayoutDivider() { return new Canvas() { public void paint(Graphics g) { diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java index 95aa6dcc732..df09ba5fcfa 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -922,6 +922,7 @@ public class SynthTabbedPaneUI extends BasicTabbedPaneUI } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class SynthScrollableTabButton extends SynthArrowButton implements UIResource { public SynthScrollableTabButton(int direction) { diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableHeaderUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableHeaderUI.java index ec358aa3092..a988692a4aa 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableHeaderUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableHeaderUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -216,6 +216,7 @@ public class SynthTableHeaderUI extends BasicTableHeaderUI } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class HeaderRenderer extends DefaultTableCellHeaderRenderer { HeaderRenderer() { setHorizontalAlignment(JLabel.LEADING); diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java index 49dfe4b1bb3..da49bddc4c2 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -705,7 +705,7 @@ public class SynthTableUI extends BasicTableUI } } - + @SuppressWarnings("serial") // Superclass is not serializable across versions private class SynthBooleanTableCellRenderer extends JCheckBox implements TableCellRenderer { private boolean isRowSelected; @@ -744,6 +744,7 @@ public class SynthTableUI extends BasicTableUI } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class SynthTableCellRenderer extends DefaultTableCellRenderer { private Object numberFormat; private Object dateFormat; diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java index 70f7f64564c..a214532ed56 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -684,7 +684,7 @@ public class SynthTreeUI extends BasicTreeUI return super.getRowX(row, depth) + padding; } - + @SuppressWarnings("serial") // Superclass is not serializable across versions private class SynthTreeCellRenderer extends DefaultTreeCellRenderer implements UIResource { SynthTreeCellRenderer() { @@ -762,6 +762,7 @@ public class SynthTreeUI extends BasicTreeUI @Override protected TreeCellEditor createTreeCellEditor() { + @SuppressWarnings("serial") // anonymous class JTextField tf = new JTextField() { @Override public String getName() { diff --git a/jdk/src/share/classes/javax/swing/text/ChangedCharSetException.java b/jdk/src/share/classes/javax/swing/text/ChangedCharSetException.java index 918569c42b3..a1bffa75cdc 100644 --- a/jdk/src/share/classes/javax/swing/text/ChangedCharSetException.java +++ b/jdk/src/share/classes/javax/swing/text/ChangedCharSetException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +32,7 @@ import java.io.IOException; * * @author Sunita Mani */ +@SuppressWarnings("serial") // Same-version serialization only public class ChangedCharSetException extends IOException { String charSetSpec; diff --git a/jdk/src/share/classes/javax/swing/text/ComponentView.java b/jdk/src/share/classes/javax/swing/text/ComponentView.java index 7bd0f2d4311..d15ccf63cb2 100644 --- a/jdk/src/share/classes/javax/swing/text/ComponentView.java +++ b/jdk/src/share/classes/javax/swing/text/ComponentView.java @@ -374,6 +374,7 @@ public class ComponentView extends View { * cached between the associated view and the * container hosting this component). */ + @SuppressWarnings("serial") // JDK-implementation class class Invalidator extends Container implements PropertyChangeListener { // NOTE: When we remove this class we are going to have to some diff --git a/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java b/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java index e5db094a910..ca434585761 100644 --- a/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java +++ b/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java @@ -70,6 +70,7 @@ import javax.swing.UIManager; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultEditorKit extends EditorKit { /** @@ -1030,6 +1031,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#deletePrevCharAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class DeletePrevCharAction extends TextAction { /** @@ -1088,6 +1090,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#deleteNextCharAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class DeleteNextCharAction extends TextAction { /* Create this object with the appropriate identifier. */ @@ -1139,6 +1142,7 @@ public class DefaultEditorKit extends EditorKit { * Deletes the word that precedes/follows the beginning of the selection. * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class DeleteWordAction extends TextAction { DeleteWordAction(String name) { super(name); @@ -1213,6 +1217,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#readOnlyAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class ReadOnlyAction extends TextAction { /* Create this object with the appropriate identifier. */ @@ -1238,6 +1243,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#writableAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class WritableAction extends TextAction { /* Create this object with the appropriate identifier. */ @@ -1412,6 +1418,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#pageDownAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class VerticalPageAction extends TextAction { /** Create this object with the appropriate identifier. */ @@ -1571,6 +1578,7 @@ public class DefaultEditorKit extends EditorKit { /** * Pages one view to the left or right. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class PageAction extends TextAction { /** Create this object with the appropriate identifier. */ @@ -1625,6 +1633,7 @@ public class DefaultEditorKit extends EditorKit { private boolean left; } + @SuppressWarnings("serial") // Superclass is not serializable across versions static class DumpModelAction extends TextAction { DumpModelAction() { @@ -1647,6 +1656,7 @@ public class DefaultEditorKit extends EditorKit { * getNextVisualPositionFrom method. Constructor indicates direction * to use. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class NextVisualPositionAction extends TextAction { /** @@ -1734,6 +1744,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#selectBeginWordAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class BeginWordAction extends TextAction { /** @@ -1774,6 +1785,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#selectEndWordAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class EndWordAction extends TextAction { /** @@ -1814,6 +1826,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#selectPreviousWordAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class PreviousWordAction extends TextAction { /** @@ -1873,6 +1886,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#selectNextWordAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class NextWordAction extends TextAction { /** @@ -1938,6 +1952,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#selectBeginLineAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class BeginLineAction extends TextAction { /** @@ -1978,6 +1993,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#selectEndLineAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class EndLineAction extends TextAction { /** @@ -2018,6 +2034,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#selectBeginParagraphAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class BeginParagraphAction extends TextAction { /** @@ -2055,6 +2072,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#selectEndParagraphAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class EndParagraphAction extends TextAction { /** @@ -2092,6 +2110,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#beginAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class BeginAction extends TextAction { /* Create this object with the appropriate identifier. */ @@ -2120,6 +2139,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#endAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class EndAction extends TextAction { /* Create this object with the appropriate identifier. */ @@ -2150,6 +2170,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#endAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class SelectWordAction extends TextAction { /** @@ -2179,6 +2200,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#endAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class SelectLineAction extends TextAction { /** @@ -2208,6 +2230,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#endAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class SelectParagraphAction extends TextAction { /** @@ -2237,6 +2260,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#endAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class SelectAllAction extends TextAction { /** @@ -2266,6 +2290,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#unselectAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class UnselectAction extends TextAction { /** @@ -2290,6 +2315,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#toggleComponentOrientationAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class ToggleComponentOrientationAction extends TextAction { /** diff --git a/jdk/src/share/classes/javax/swing/text/EditorKit.java b/jdk/src/share/classes/javax/swing/text/EditorKit.java index 7e4037e16c3..5b260833dac 100644 --- a/jdk/src/share/classes/javax/swing/text/EditorKit.java +++ b/jdk/src/share/classes/javax/swing/text/EditorKit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -45,6 +45,7 @@ import javax.swing.JEditorPane; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class EditorKit implements Cloneable, Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/text/GapContent.java b/jdk/src/share/classes/javax/swing/text/GapContent.java index 9109001b6c6..fff2292e211 100644 --- a/jdk/src/share/classes/javax/swing/text/GapContent.java +++ b/jdk/src/share/classes/javax/swing/text/GapContent.java @@ -58,6 +58,7 @@ import java.lang.ref.ReferenceQueue; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class GapContent extends GapVector implements AbstractDocument.Content, Serializable { /** @@ -577,7 +578,7 @@ public class GapContent extends GapVector implements AbstractDocument.Content, S unusedMarks = 0; } - + @SuppressWarnings("serial") // Superclass is not serializable across versions static class MarkVector extends GapVector { MarkVector() { @@ -855,6 +856,7 @@ public class GapContent extends GapVector implements AbstractDocument.Content, S /** * UnoableEdit created for inserts. */ + @SuppressWarnings("serial") // Superclass is a JDK-implementation class class InsertUndo extends AbstractUndoableEdit { protected InsertUndo(int offset, int length) { super(); @@ -905,6 +907,7 @@ public class GapContent extends GapVector implements AbstractDocument.Content, S /** * UndoableEdit created for removes. */ + @SuppressWarnings("serial") // JDK-implementation class class RemoveUndo extends AbstractUndoableEdit { protected RemoveUndo(int offset, String string) { super(); diff --git a/jdk/src/share/classes/javax/swing/text/GapVector.java b/jdk/src/share/classes/javax/swing/text/GapVector.java index a200478c2fe..34d36abe70f 100644 --- a/jdk/src/share/classes/javax/swing/text/GapVector.java +++ b/jdk/src/share/classes/javax/swing/text/GapVector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,6 +41,7 @@ import javax.swing.undo.UndoableEdit; * @author Timothy Prinzing * @see GapContent */ +@SuppressWarnings("serial") // Data in fields not necessarily serializable abstract class GapVector implements Serializable { diff --git a/jdk/src/share/classes/javax/swing/text/StateInvariantError.java b/jdk/src/share/classes/javax/swing/text/StateInvariantError.java index 8ceb3544a59..179bb93a5fd 100644 --- a/jdk/src/share/classes/javax/swing/text/StateInvariantError.java +++ b/jdk/src/share/classes/javax/swing/text/StateInvariantError.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ package javax.swing.text; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only class StateInvariantError extends Error { /** diff --git a/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java b/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java index b62be0f7ef3..925cd8e5b15 100644 --- a/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java +++ b/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java @@ -44,6 +44,7 @@ import javax.swing.UIManager; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class StyledEditorKit extends DefaultEditorKit { /** @@ -170,6 +171,7 @@ public class StyledEditorKit extends DefaultEditorKit { /** * Creates the AttributeSet used for the selection. */ + @SuppressWarnings("serial") // anonymous class private void createInputAttributes() { inputAttributes = new SimpleAttributeSet() { public AttributeSet getResolveParent() { @@ -218,6 +220,7 @@ public class StyledEditorKit extends DefaultEditorKit { * input attributes when the Document changes, as if the Document * changes the attributes will almost certainly change. */ + @SuppressWarnings("serial") // JDK-implementation class class AttributeTracker implements CaretListener, PropertyChangeListener, Serializable { /** @@ -854,6 +857,7 @@ public class StyledEditorKit extends DefaultEditorKit { * is inserted. Beyond that, this will reset the input attributes to * what they were before the newline was inserted. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class StyledInsertBreakAction extends StyledTextAction { private SimpleAttributeSet tempSet; diff --git a/jdk/src/share/classes/javax/swing/text/html/CSS.java b/jdk/src/share/classes/javax/swing/text/html/CSS.java index ec101b13415..12e83e06b9b 100644 --- a/jdk/src/share/classes/javax/swing/text/html/CSS.java +++ b/jdk/src/share/classes/javax/swing/text/html/CSS.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -123,6 +123,7 @@ import javax.swing.text.*; * @author Scott Violet * @see StyleSheet */ +@SuppressWarnings("serial") // Same-version serialization only public class CSS implements Serializable { /** @@ -1563,6 +1564,7 @@ public class CSS implements Serializable { * method to convert the CSS value to a StyleConstants * value. */ + @SuppressWarnings("serial") // Same-version serialization only static class CssValue implements Serializable { /** @@ -1641,6 +1643,7 @@ public class CSS implements Serializable { * provides StyleConstants conversion support for the * CSS attributes that are held as strings. */ + @SuppressWarnings("serial") // Same-version serialization only static class StringValue extends CssValue { /** @@ -1797,6 +1800,7 @@ public class CSS implements Serializable { * If the type is Integer, the value is specified * in terms of a size index. */ + @SuppressWarnings("serial") // Same-version serialization only class FontSize extends CssValue { /** @@ -1966,6 +1970,7 @@ public class CSS implements Serializable { LengthUnit lu; } + @SuppressWarnings("serial") // Same-version serialization only static class FontFamily extends CssValue { /** @@ -2063,6 +2068,7 @@ public class CSS implements Serializable { String family; } + @SuppressWarnings("serial") // Same-version serialization only static class FontWeight extends CssValue { int getValue() { @@ -2125,6 +2131,7 @@ public class CSS implements Serializable { int weight; } + @SuppressWarnings("serial") // Same-version serialization only static class ColorValue extends CssValue { /** @@ -2184,6 +2191,7 @@ public class CSS implements Serializable { Color c; } + @SuppressWarnings("serial") // Same-version serialization only static class BorderStyle extends CssValue { CSS.Value getValue() { @@ -2236,6 +2244,7 @@ public class CSS implements Serializable { transient private CSS.Value style; } + @SuppressWarnings("serial") // Same-version serialization only static class LengthValue extends CssValue { /** @@ -2373,6 +2382,7 @@ public class CSS implements Serializable { * BorderWidthValue is used to model BORDER_XXX_WIDTH and adds support * for the thin/medium/thick values. */ + @SuppressWarnings("serial") // Same-version serialization only static class BorderWidthValue extends LengthValue { BorderWidthValue(String svalue, int index) { this.svalue = svalue; @@ -2412,6 +2422,7 @@ public class CSS implements Serializable { * Handles uniquing of CSS values, like lists, and background image * repeating. */ + @SuppressWarnings("serial") // Same-version serialization only static class CssValueMapper extends CssValue { Object parseCssValue(String value) { Object retValue = cssValueToInternalValueMap.get(value); @@ -2435,6 +2446,7 @@ public class CSS implements Serializable { /** * Used for background images, to represent the position. */ + @SuppressWarnings("serial") // Same-version serialization only static class BackgroundPosition extends CssValue { float horizontalPosition; float verticalPosition; @@ -2580,6 +2592,7 @@ public class CSS implements Serializable { /** * Used for BackgroundImages. */ + @SuppressWarnings("serial") // Same-version serialization only static class BackgroundImage extends CssValue { private boolean loadedImage; private ImageIcon image; @@ -2619,6 +2632,7 @@ public class CSS implements Serializable { * Parses a length value, this is used internally, and never added * to an AttributeSet or returned to the developer. */ + @SuppressWarnings("serial") // Same-version serialization only static class LengthUnit implements Serializable { static Hashtable<String, Float> lengthMapping = new Hashtable<String, Float>(6); static Hashtable<String, Float> w3cLengthMapping = new Hashtable<String, Float>(6); diff --git a/jdk/src/share/classes/javax/swing/text/html/CSSBorder.java b/jdk/src/share/classes/javax/swing/text/html/CSSBorder.java index b550fcfdb65..5945f34e3d2 100644 --- a/jdk/src/share/classes/javax/swing/text/html/CSSBorder.java +++ b/jdk/src/share/classes/javax/swing/text/html/CSSBorder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -50,6 +50,7 @@ import javax.swing.text.html.CSS.Value; * * @author Sergey Groznyh */ +@SuppressWarnings("serial") // Superclass is not serializable across versions class CSSBorder extends AbstractBorder { /** Indices for the attribute groups. */ diff --git a/jdk/src/share/classes/javax/swing/text/html/CommentView.java b/jdk/src/share/classes/javax/swing/text/html/CommentView.java index 6288fb29c75..6402d99f4bf 100644 --- a/jdk/src/share/classes/javax/swing/text/html/CommentView.java +++ b/jdk/src/share/classes/javax/swing/text/html/CommentView.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -115,6 +115,7 @@ class CommentView extends HiddenTagView { static final int commentPadding = 3; static final int commentPaddingD = commentPadding * 3; + @SuppressWarnings("serial") // Superclass is not serializable across versions static class CommentBorder extends LineBorder { CommentBorder() { super(Color.black, 1); diff --git a/jdk/src/share/classes/javax/swing/text/html/EditableView.java b/jdk/src/share/classes/javax/swing/text/html/EditableView.java index 3a5fa648efa..3ef2c655600 100644 --- a/jdk/src/share/classes/javax/swing/text/html/EditableView.java +++ b/jdk/src/share/classes/javax/swing/text/html/EditableView.java @@ -73,7 +73,7 @@ class EditableView extends ComponentView { Component c = getComponent(); Container host = getContainer(); - if (host != null && + if (host instanceof JTextComponent && isVisible != ((JTextComponent)host).isEditable()) { isVisible = ((JTextComponent)host).isEditable(); preferenceChanged(null, true, true); diff --git a/jdk/src/share/classes/javax/swing/text/html/FormSubmitEvent.java b/jdk/src/share/classes/javax/swing/text/html/FormSubmitEvent.java index a17c0704e8b..93fb2035355 100644 --- a/jdk/src/share/classes/javax/swing/text/html/FormSubmitEvent.java +++ b/jdk/src/share/classes/javax/swing/text/html/FormSubmitEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * 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,7 +34,7 @@ import java.net.URL; * @since 1.5 * @author Denis Sharypov */ - +@SuppressWarnings("serial") // Superclass is not serializable across versions public class FormSubmitEvent extends HTMLFrameHyperlinkEvent { /** diff --git a/jdk/src/share/classes/javax/swing/text/html/FrameView.java b/jdk/src/share/classes/javax/swing/text/html/FrameView.java index b2030e47a11..ae3154161bb 100644 --- a/jdk/src/share/classes/javax/swing/text/html/FrameView.java +++ b/jdk/src/share/classes/javax/swing/text/html/FrameView.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -458,6 +458,7 @@ class FrameView extends ComponentView implements HyperlinkListener { /** Editor pane rendering frame of HTML document * It uses the same editor kits classes as outermost JEditorPane */ + @SuppressWarnings("serial") // Superclass is not serializable across versions class FrameEditorPane extends JEditorPane implements FrameEditorPaneTag { public EditorKit getEditorKitForContentType(String type) { EditorKit editorKit = super.getEditorKitForContentType(type); diff --git a/jdk/src/share/classes/javax/swing/text/html/HTML.java b/jdk/src/share/classes/javax/swing/text/html/HTML.java index 3545de230b9..dc49ff3b228 100644 --- a/jdk/src/share/classes/javax/swing/text/html/HTML.java +++ b/jdk/src/share/classes/javax/swing/text/html/HTML.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -283,6 +283,7 @@ public class HTML { // There is no unique instance of UnknownTag, so we allow it to be // Serializable. + @SuppressWarnings("serial") // Same-version serialization only public static class UnknownTag extends Tag implements Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java index 5ec27c0f5c1..923e2e74df9 100644 --- a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java +++ b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java @@ -160,6 +160,7 @@ import java.lang.ref.*; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class HTMLEditorKit extends StyledEditorKit implements Accessible { private JEditorPane theEditor; @@ -640,6 +641,7 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible { * Class to watch the associated component and fire * hyperlink events on it when appropriate. */ + @SuppressWarnings("serial") // Same-version serialization only public static class LinkController extends MouseAdapter implements MouseMotionListener, Serializable { private Element curElem = null; /** @@ -1482,6 +1484,7 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible { * document. If you have another thread modifying the text these * methods may have inconsistent behavior, or return the wrong thing. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public static abstract class HTMLTextAction extends StyledTextAction { public HTMLTextAction(String name) { super(name); @@ -1592,6 +1595,7 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible { * addTag. These will be checked for if there is no parentTag at * offset. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions public static class InsertHTMLTextAction extends HTMLTextAction { public InsertHTMLTextAction(String name, String html, HTML.Tag parentTag, HTML.Tag addTag) { @@ -1823,6 +1827,7 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible { * the parent HTML.Tag based on the paragraph element at the selection * start. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class InsertHRAction extends InsertHTMLTextAction { InsertHRAction() { super("InsertHR", "<hr>", null, HTML.Tag.IMPLIED, null, null, @@ -1877,6 +1882,7 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible { * javax.accessibility package. The text package should support * keyboard navigation of text elements directly. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class NavigateLinkAction extends TextAction implements CaretListener { private static final FocusHighlightPainter focusPainter = @@ -2086,6 +2092,7 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible { * javax.accessibility package. The text package should support * keyboard navigation of text elements directly. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions static class ActivateLinkAction extends TextAction { /** @@ -2259,7 +2266,7 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible { * @see DefaultEditorKit#beginAction * @see HTMLEditorKit#getActions */ - + @SuppressWarnings("serial") // Superclass is not serializable across versions static class BeginAction extends TextAction { /* Create this object with the appropriate identifier. */ diff --git a/jdk/src/share/classes/javax/swing/text/html/HTMLFrameHyperlinkEvent.java b/jdk/src/share/classes/javax/swing/text/html/HTMLFrameHyperlinkEvent.java index 0e21e32814f..82516f670d9 100644 --- a/jdk/src/share/classes/javax/swing/text/html/HTMLFrameHyperlinkEvent.java +++ b/jdk/src/share/classes/javax/swing/text/html/HTMLFrameHyperlinkEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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 @@ import java.net.URL; * * @author Sunita Mani */ - +@SuppressWarnings("serial") // Superclass is not serializable across versions public class HTMLFrameHyperlinkEvent extends HyperlinkEvent { /** diff --git a/jdk/src/share/classes/javax/swing/text/html/HiddenTagView.java b/jdk/src/share/classes/javax/swing/text/html/HiddenTagView.java index 698db97f3a1..d73d7ecaa71 100644 --- a/jdk/src/share/classes/javax/swing/text/html/HiddenTagView.java +++ b/jdk/src/share/classes/javax/swing/text/html/HiddenTagView.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -295,7 +295,7 @@ class HiddenTagView extends EditableView implements DocumentListener { static final Border StartBorder = new StartTagBorder(); static final Border EndBorder = new EndTagBorder(); - + @SuppressWarnings("serial") // Same-version serialization only static class StartTagBorder implements Border, Serializable { public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { @@ -326,7 +326,7 @@ class HiddenTagView extends EditableView implements DocumentListener { } } // End of class HiddenTagView.StartTagBorder - + @SuppressWarnings("serial") // Same-version serialization only static class EndTagBorder implements Border, Serializable { public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { diff --git a/jdk/src/share/classes/javax/swing/text/html/Map.java b/jdk/src/share/classes/javax/swing/text/html/Map.java index 8045d3af111..c40e237aaf3 100644 --- a/jdk/src/share/classes/javax/swing/text/html/Map.java +++ b/jdk/src/share/classes/javax/swing/text/html/Map.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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 javax.swing.text.AttributeSet; * * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only class Map implements Serializable { /** Name of the Map. */ private String name; diff --git a/jdk/src/share/classes/javax/swing/text/html/MuxingAttributeSet.java b/jdk/src/share/classes/javax/swing/text/html/MuxingAttributeSet.java index 24634247fd2..185a20707f7 100644 --- a/jdk/src/share/classes/javax/swing/text/html/MuxingAttributeSet.java +++ b/jdk/src/share/classes/javax/swing/text/html/MuxingAttributeSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,6 +33,7 @@ import java.util.*; * across a set of <code>AttributeSet</code>s. * */ +@SuppressWarnings("serial") // Same-version serialization only class MuxingAttributeSet implements AttributeSet, Serializable { /** * Creates a <code>MuxingAttributeSet</code> with the passed in diff --git a/jdk/src/share/classes/javax/swing/text/html/OptionComboBoxModel.java b/jdk/src/share/classes/javax/swing/text/html/OptionComboBoxModel.java index 34d530784e6..d3942a86610 100644 --- a/jdk/src/share/classes/javax/swing/text/html/OptionComboBoxModel.java +++ b/jdk/src/share/classes/javax/swing/text/html/OptionComboBoxModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,7 +39,7 @@ import java.io.Serializable; * @author Sunita Mani */ - +@SuppressWarnings("serial") // Superclass is not serializable across versions class OptionComboBoxModel<E> extends DefaultComboBoxModel<E> implements Serializable { private Option selectedOption = null; diff --git a/jdk/src/share/classes/javax/swing/text/html/OptionListModel.java b/jdk/src/share/classes/javax/swing/text/html/OptionListModel.java index 886ff0da2ac..74a4ee1adc6 100644 --- a/jdk/src/share/classes/javax/swing/text/html/OptionListModel.java +++ b/jdk/src/share/classes/javax/swing/text/html/OptionListModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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,7 +42,7 @@ import java.io.Serializable; * @author Sunita Mani */ - +@SuppressWarnings("serial") // Superclass is not serializable across versions class OptionListModel<E> extends DefaultListModel<E> implements ListSelectionModel, Serializable { diff --git a/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java b/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java index 645327cb809..409560ba902 100644 --- a/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java +++ b/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java @@ -127,6 +127,7 @@ import javax.swing.text.*; * @author Sara Swanson * @author Jill Nakata */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class StyleSheet extends StyleContext { // As the javadoc states, this class maintains a mapping between // a CSS selector (such as p.bar) and a Style. @@ -763,6 +764,7 @@ public class StyleSheet extends StyleContext { * Large set of attributes that does conversion of requests * for attributes of type StyleConstants. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions class LargeConversionSet extends SimpleAttributeSet { /** @@ -1760,6 +1762,7 @@ public class StyleSheet extends StyleContext { * the insets of a View and making sure the background * is maintained according to the CSS attributes. */ + @SuppressWarnings("serial") // Same-version serialization only public static class BoxPainter implements Serializable { BoxPainter(AttributeSet a, CSS css, StyleSheet ss) { @@ -2019,6 +2022,7 @@ public class StyleSheet extends StyleContext { * while not knowing anything about how the CSS values * are being cached. */ + @SuppressWarnings("serial") // Same-version serialization only public static class ListPainter implements Serializable { ListPainter(AttributeSet attr, StyleSheet ss) { @@ -2448,6 +2452,7 @@ public class StyleSheet extends StyleContext { /** * Paints the background image. */ + @SuppressWarnings("serial") // Same-version serialization only static class BackgroundImagePainter implements Serializable { ImageIcon backgroundImage; float hPosition; @@ -2615,6 +2620,7 @@ public class StyleSheet extends StyleContext { * CSS and HTML and StyleConstants. The AttributeSets used are * the CSS rules that match the Views Elements. */ + @SuppressWarnings("serial") // Same-version serialization only class ViewAttributeSet extends MuxingAttributeSet { ViewAttributeSet(View v) { host = v; @@ -2779,6 +2785,7 @@ public class StyleSheet extends StyleContext { // contain a SimpleAttributeSet that modify methods are delegated to, // or change getRule to return an AttributeSet and then don't make this // implement Style. + @SuppressWarnings("serial") // Same-version serialization only static class ResolvedStyle extends MuxingAttributeSet implements Serializable, Style { ResolvedStyle(String name, AttributeSet[] attrs, int extendedIndex) { @@ -3020,6 +3027,7 @@ public class StyleSheet extends StyleContext { * This is not thread safe, it is assumed the caller will take the * necessary precations if this is to be used in a threaded environment. */ + @SuppressWarnings("serial") // Same-version serialization only static class SelectorMapping implements Serializable { public SelectorMapping(int specificity) { this.specificity = specificity; diff --git a/jdk/src/share/classes/javax/swing/text/html/TextAreaDocument.java b/jdk/src/share/classes/javax/swing/text/html/TextAreaDocument.java index 8b21a95a9ce..3a0cad8f30e 100644 --- a/jdk/src/share/classes/javax/swing/text/html/TextAreaDocument.java +++ b/jdk/src/share/classes/javax/swing/text/html/TextAreaDocument.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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 @@ import javax.swing.text.*; * * @author Sunita Mani */ - +@SuppressWarnings("serial") // Superclass is not serializable across versions class TextAreaDocument extends PlainDocument { String initialText; diff --git a/jdk/src/share/classes/javax/swing/text/html/parser/AttributeList.java b/jdk/src/share/classes/javax/swing/text/html/parser/AttributeList.java index 769c31c30e4..8674c7fac74 100644 --- a/jdk/src/share/classes/javax/swing/text/html/parser/AttributeList.java +++ b/jdk/src/share/classes/javax/swing/text/html/parser/AttributeList.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,6 +44,7 @@ import java.io.*; * @author Arthur Van Hoff * */ +@SuppressWarnings("serial") // Same-version serialization only public final class AttributeList implements DTDConstants, Serializable { public String name; diff --git a/jdk/src/share/classes/javax/swing/text/html/parser/ContentModel.java b/jdk/src/share/classes/javax/swing/text/html/parser/ContentModel.java index c23b1bc12f2..6dbd6e6b5a5 100644 --- a/jdk/src/share/classes/javax/swing/text/html/parser/ContentModel.java +++ b/jdk/src/share/classes/javax/swing/text/html/parser/ContentModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +40,7 @@ import java.io.*; * @author Arthur van Hoff * */ +@SuppressWarnings("serial") // Same-version serialization only public final class ContentModel implements Serializable { /** * Type. Either '*', '?', '+', ',', '|', '&'. diff --git a/jdk/src/share/classes/javax/swing/text/html/parser/Element.java b/jdk/src/share/classes/javax/swing/text/html/parser/Element.java index 6ce872b8e38..16b1943000c 100644 --- a/jdk/src/share/classes/javax/swing/text/html/parser/Element.java +++ b/jdk/src/share/classes/javax/swing/text/html/parser/Element.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +40,7 @@ import sun.awt.AppContext; * @see AttributeList * @author Arthur van Hoff */ +@SuppressWarnings("serial") // Same-version serialization only public final class Element implements DTDConstants, Serializable { public int index; diff --git a/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java b/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java index 81f7bb2cace..c6109d6d66f 100644 --- a/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java +++ b/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java @@ -43,9 +43,8 @@ import java.io.Serializable; * * @author Sunita Mani */ - +@SuppressWarnings("serial") // Same-version serialization only public class ParserDelegator extends HTMLEditorKit.Parser implements Serializable { - private static final Object DTD_KEY = new Object(); protected static void setDefaultDTD() { diff --git a/jdk/src/share/classes/javax/swing/text/rtf/RTFEditorKit.java b/jdk/src/share/classes/javax/swing/text/rtf/RTFEditorKit.java index b8eb6ce9c5d..794c2cfee40 100644 --- a/jdk/src/share/classes/javax/swing/text/rtf/RTFEditorKit.java +++ b/jdk/src/share/classes/javax/swing/text/rtf/RTFEditorKit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +40,7 @@ import javax.swing.*; * * @author Timothy Prinzing (of this class, not the package!) */ +@SuppressWarnings("serial") // Same-version serialization only public class RTFEditorKit extends StyledEditorKit { /** diff --git a/jdk/src/share/classes/javax/swing/tree/ExpandVetoException.java b/jdk/src/share/classes/javax/swing/tree/ExpandVetoException.java index 88aee49de8c..9fd6addb446 100644 --- a/jdk/src/share/classes/javax/swing/tree/ExpandVetoException.java +++ b/jdk/src/share/classes/javax/swing/tree/ExpandVetoException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * 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 javax.swing.event.TreeExpansionEvent; * * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class ExpandVetoException extends Exception { /** The event that the exception was created for. */ protected TreeExpansionEvent event; diff --git a/jdk/src/share/classes/javax/swing/undo/AbstractUndoableEdit.java b/jdk/src/share/classes/javax/swing/undo/AbstractUndoableEdit.java index 3c1601f23df..7184557d1e7 100644 --- a/jdk/src/share/classes/javax/swing/undo/AbstractUndoableEdit.java +++ b/jdk/src/share/classes/javax/swing/undo/AbstractUndoableEdit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ import javax.swing.UIManager; * * @author Ray Ryan */ +@SuppressWarnings("serial") // Same-version serialization only public class AbstractUndoableEdit implements UndoableEdit, Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/undo/CompoundEdit.java b/jdk/src/share/classes/javax/swing/undo/CompoundEdit.java index 48ce2686656..5e95f4130e4 100644 --- a/jdk/src/share/classes/javax/swing/undo/CompoundEdit.java +++ b/jdk/src/share/classes/javax/swing/undo/CompoundEdit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +32,7 @@ import java.util.*; * * @author Ray Ryan */ +@SuppressWarnings("serial") // Same-version serialization only public class CompoundEdit extends AbstractUndoableEdit { /** * True if this edit has never received <code>end</code>. diff --git a/jdk/src/share/classes/javax/swing/undo/StateEdit.java b/jdk/src/share/classes/javax/swing/undo/StateEdit.java index 8d01282168f..14a50768b6b 100644 --- a/jdk/src/share/classes/javax/swing/undo/StateEdit.java +++ b/jdk/src/share/classes/javax/swing/undo/StateEdit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -55,7 +55,7 @@ import java.util.Vector; * * @author Ray Ryan */ - +@SuppressWarnings("serial") // Same-version serialization only public class StateEdit extends AbstractUndoableEdit { diff --git a/jdk/src/share/classes/sun/applet/AppletEvent.java b/jdk/src/share/classes/sun/applet/AppletEvent.java index 6095a01e7ff..9b7e9c25526 100644 --- a/jdk/src/share/classes/sun/applet/AppletEvent.java +++ b/jdk/src/share/classes/sun/applet/AppletEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,7 +33,7 @@ import java.util.EventObject; * * @author Sunita Mani */ - +@SuppressWarnings("serial") // JDK-implementation class public class AppletEvent extends EventObject { private Object arg; diff --git a/jdk/src/share/classes/sun/applet/AppletIOException.java b/jdk/src/share/classes/sun/applet/AppletIOException.java index 3034678bd83..de435906e17 100644 --- a/jdk/src/share/classes/sun/applet/AppletIOException.java +++ b/jdk/src/share/classes/sun/applet/AppletIOException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +32,7 @@ import java.io.IOException; * * @author Koji Uno */ +@SuppressWarnings("serial") // JDK implementation class public class AppletIOException extends IOException { private String key = null; diff --git a/jdk/src/share/classes/sun/applet/AppletIllegalArgumentException.java b/jdk/src/share/classes/sun/applet/AppletIllegalArgumentException.java index 3203a7cc522..292bd957053 100644 --- a/jdk/src/share/classes/sun/applet/AppletIllegalArgumentException.java +++ b/jdk/src/share/classes/sun/applet/AppletIllegalArgumentException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +30,7 @@ package sun.applet; * * @author Arthur van Hoff */ +@SuppressWarnings("serial") // JDK implementation class public class AppletIllegalArgumentException extends IllegalArgumentException { private String key = null; diff --git a/jdk/src/share/classes/sun/applet/AppletPanel.java b/jdk/src/share/classes/sun/applet/AppletPanel.java index 52ddab9e5db..15ba72b288c 100644 --- a/jdk/src/share/classes/sun/applet/AppletPanel.java +++ b/jdk/src/share/classes/sun/applet/AppletPanel.java @@ -28,23 +28,16 @@ package sun.applet; import java.applet.*; import java.awt.*; import java.awt.event.*; -import java.awt.image.ColorModel; -import java.awt.image.MemoryImageSource; import java.io.*; import java.lang.ref.WeakReference; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.net.InetAddress; import java.net.JarURLConnection; -import java.net.MalformedURLException; import java.net.SocketPermission; import java.net.URL; -import java.net.UnknownHostException; import java.security.*; import java.util.*; -import java.util.Collections; import java.util.Locale; -import java.util.WeakHashMap; import sun.awt.AWTAccessor; import sun.awt.AppContext; import sun.awt.EmbeddedFrame; @@ -62,6 +55,7 @@ import sun.security.util.SecurityConstants; * * @author Arthur van Hoff */ +@SuppressWarnings("serial") // JDK implementation class public abstract class AppletPanel extends Panel implements AppletStub, Runnable { @@ -148,7 +142,9 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { abstract protected String getJarFiles(); abstract protected String getSerializedObject(); + @Override abstract public int getWidth(); + @Override abstract public int getHeight(); abstract public boolean hasInitialFocus(); @@ -184,6 +180,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { handler = new Thread(appletGroup, this, "thread " + nm); // set the context class loader for this thread AccessController.doPrivileged(new PrivilegedAction() { + @Override public Object run() { handler.setContextClassLoader(loader); return null; @@ -236,6 +233,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { /** * Minimum size */ + @Override public Dimension minimumSize() { return new Dimension(defaultAppletSize.width, defaultAppletSize.height); @@ -244,6 +242,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { /** * Preferred size */ + @Override public Dimension preferredSize() { return new Dimension(currentAppletSize.width, currentAppletSize.height); @@ -368,6 +367,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { * * */ + @Override public void run() { Thread curThread = Thread.currentThread(); @@ -450,6 +450,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { try { final AppletPanel p = this; Runnable r = new Runnable() { + @Override public void run() { p.validate(); } @@ -480,6 +481,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { final AppletPanel p = this; final Applet a = applet; Runnable r = new Runnable() { + @Override public void run() { p.validate(); a.setVisible(true); @@ -515,6 +517,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { try { final Applet a = applet; Runnable r = new Runnable() { + @Override public void run() { a.setVisible(false); } @@ -574,6 +577,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { try { final Applet a = applet; Runnable r = new Runnable() { + @Override public void run() { remove(a); } @@ -628,10 +632,13 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { */ private Component getMostRecentFocusOwnerForWindow(Window w) { Method meth = (Method)AccessController.doPrivileged(new PrivilegedAction() { + @Override public Object run() { Method meth = null; try { - meth = KeyboardFocusManager.class.getDeclaredMethod("getMostRecentFocusOwner", new Class[] {Window.class}); + meth = KeyboardFocusManager.class.getDeclaredMethod( + "getMostRecentFocusOwner", + new Class[]{Window.class}); meth.setAccessible(true); } catch (Exception e) { // Must never happen @@ -880,6 +887,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { /** * Return true when the applet has been started. */ + @Override public boolean isActive() { return status == APPLET_START; } @@ -889,6 +897,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { /** * Is called when the applet wants to be resized. */ + @Override public void appletResize(int width, int height) { currentAppletSize.width = width; currentAppletSize.height = height; @@ -904,17 +913,20 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { final AppletPanel ap = this; if (appEvtQ != null){ appEvtQ.postEvent(new InvocationEvent(Toolkit.getDefaultToolkit(), - new Runnable(){ - public void run(){ - if(ap != null) - { - ap.dispatchAppletEvent(APPLET_RESIZE, currentSize); + new Runnable() { + @Override + public void run() { + if (ap != null) { + ap.dispatchAppletEvent( + APPLET_RESIZE, + currentSize); } } })); } } + @Override public void setBounds(int x, int y, int width, int height) { super.setBounds(x, y, width, height); currentAppletSize.width = width; @@ -966,7 +978,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { public String getClassLoaderCacheKey() { /** - * Fixed #4501142: Classlaoder sharing policy doesn't + * Fixed #4501142: Classloader sharing policy doesn't * take "archive" into account. This will be overridden * by Java Plug-in. [stanleyh] */ @@ -1012,6 +1024,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { getAccessControlContext(codebase); c = (AppletClassLoader) AccessController.doPrivileged(new PrivilegedAction() { + @Override public Object run() { AppletClassLoader ac = createClassLoader(codebase); /* Should the creation of the classloader be @@ -1055,6 +1068,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { PermissionCollection perms = (PermissionCollection) AccessController.doPrivileged(new PrivilegedAction() { + @Override public Object run() { Policy p = java.security.Policy.getPolicy(); if (p != null) { diff --git a/jdk/src/share/classes/sun/applet/AppletProps.java b/jdk/src/share/classes/sun/applet/AppletProps.java index 38a76a4afc2..466aa83735b 100644 --- a/jdk/src/share/classes/sun/applet/AppletProps.java +++ b/jdk/src/share/classes/sun/applet/AppletProps.java @@ -37,6 +37,7 @@ import java.security.PrivilegedActionException; import sun.security.action.*; +@SuppressWarnings("serial") // JDK implementation class class AppletProps extends Frame { TextField proxyHost; @@ -194,7 +195,7 @@ class AppletProps extends Frame { /* 4066432 */ /* Dialog class to display property-related errors to user */ - +@SuppressWarnings("serial") // JDK implementation class class AppletPropsErrorDialog extends Dialog { public AppletPropsErrorDialog(Frame parent, String title, String message, String buttonText) { diff --git a/jdk/src/share/classes/sun/applet/AppletSecurityException.java b/jdk/src/share/classes/sun/applet/AppletSecurityException.java index 138e9279c33..2cc21af694b 100644 --- a/jdk/src/share/classes/sun/applet/AppletSecurityException.java +++ b/jdk/src/share/classes/sun/applet/AppletSecurityException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +30,7 @@ package sun.applet; * * @author Arthur van Hoff */ +@SuppressWarnings("serial") // JDK-implementation class public class AppletSecurityException extends SecurityException { private String key = null; diff --git a/jdk/src/share/classes/sun/applet/AppletViewer.java b/jdk/src/share/classes/sun/applet/AppletViewer.java index a97ac33bbe0..cbde244cb72 100644 --- a/jdk/src/share/classes/sun/applet/AppletViewer.java +++ b/jdk/src/share/classes/sun/applet/AppletViewer.java @@ -33,20 +33,17 @@ import java.awt.print.*; import javax.print.attribute.*; import java.applet.*; import java.net.URL; -import java.net.MalformedURLException; import java.net.SocketPermission; import java.security.AccessController; import java.security.PrivilegedAction; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import sun.awt.SunToolkit; import sun.awt.AppContext; -import java.lang.ref.WeakReference; /** * A frame to show the applet tag in. */ -class TextFrame extends Frame { +@SuppressWarnings("serial") // JDK-implementation class +final class TextFrame extends Frame { /** * Create the tag frame. @@ -65,6 +62,7 @@ class TextFrame extends Frame { p.add(b); class ActionEventListener implements ActionListener { + @Override public void actionPerformed(ActionEvent evt) { dispose(); } @@ -77,6 +75,7 @@ class TextFrame extends Frame { WindowListener windowEventListener = new WindowAdapter() { + @Override public void windowClosing(WindowEvent evt) { dispose(); } @@ -89,20 +88,22 @@ class TextFrame extends Frame { } /** - * Lets us construct one using unix-style one shot behaviors + * Lets us construct one using unix-style one shot behaviors. */ +final class StdAppletViewerFactory implements AppletViewerFactory { -class StdAppletViewerFactory implements AppletViewerFactory -{ + @Override public AppletViewer createAppletViewer(int x, int y, URL doc, Hashtable atts) { return new AppletViewer(x, y, doc, atts, System.out, this); } + @Override public MenuBar getBaseMenuBar() { return new MenuBar(); } + @Override public boolean isStandalone() { return true; } @@ -115,8 +116,8 @@ class StdAppletViewerFactory implements AppletViewerFactory * (The document named appletviewertags.html in the JDK's docs/tooldocs directory, * once the JDK docs have been installed.) */ -public class AppletViewer extends Frame implements AppletContext, - Printable { +@SuppressWarnings("serial") // JDK implementation class +public class AppletViewer extends Frame implements AppletContext, Printable { /** * Some constants... @@ -146,13 +147,14 @@ public class AppletViewer extends Frame implements AppletContext, private final class UserActionListener implements ActionListener { + @Override public void actionPerformed(ActionEvent evt) { processUserAction(evt); } } /** - * Create the applet viewer + * Create the applet viewer. */ public AppletViewer(int x, int y, URL doc, Hashtable atts, PrintStream statusMsgStream, AppletViewerFactory factory) { @@ -200,14 +202,17 @@ public class AppletViewer extends Frame implements AppletContext, WindowListener windowEventListener = new WindowAdapter() { + @Override public void windowClosing(WindowEvent evt) { appletClose(); } + @Override public void windowIconified(WindowEvent evt) { appletStop(); } + @Override public void windowDeiconified(WindowEvent evt) { appletStart(); } @@ -222,6 +227,7 @@ public class AppletViewer extends Frame implements AppletContext, this.frame = frame; } + @Override public void appletStateChanged(AppletEvent evt) { AppletPanel src = (AppletPanel)evt.getSource(); @@ -369,6 +375,7 @@ public class AppletViewer extends Frame implements AppletContext, /** * Get an audio clip. */ + @Override public AudioClip getAudioClip(URL url) { checkConnect(url); synchronized (audioClips) { @@ -385,6 +392,7 @@ public class AppletViewer extends Frame implements AppletContext, /** * Get an image. */ + @Override public Image getImage(URL url) { return getCachedImage(url); } @@ -416,6 +424,7 @@ public class AppletViewer extends Frame implements AppletContext, /** * Get an applet by name. */ + @Override public Applet getApplet(String name) { AppletSecurity security = (AppletSecurity)System.getSecurityManager(); name = name.toLowerCase(); @@ -445,6 +454,7 @@ public class AppletViewer extends Frame implements AppletContext, * Return an enumeration of all the accessible * applets on this page. */ + @Override public Enumeration getApplets() { AppletSecurity security = (AppletSecurity)System.getSecurityManager(); Vector v = new Vector(); @@ -468,31 +478,37 @@ public class AppletViewer extends Frame implements AppletContext, /** * Ignore. */ + @Override public void showDocument(URL url) { } /** * Ignore. */ + @Override public void showDocument(URL url, String target) { } /** * Show status. */ + @Override public void showStatus(String status) { label.setText(status); } + @Override public void setStream(String key, InputStream stream)throws IOException{ // We do nothing. } + @Override public InputStream getStream(String key){ // We do nothing. return null; } + @Override public Iterator getStreamKeys(){ // We do nothing. return null; @@ -606,7 +622,7 @@ public class AppletViewer extends Frame implements AppletContext, panel.sendEvent(AppletPanel.APPLET_DISPOSE); /** - * Fixed #4501142: Classlaoder sharing policy doesn't + * Fixed #4501142: Classloader sharing policy doesn't * take "archive" into account. This will be overridden * by Java Plug-in. [stanleyh] */ @@ -635,6 +651,7 @@ public class AppletViewer extends Frame implements AppletContext, void appletSave() { AccessController.doPrivileged(new PrivilegedAction() { + @Override public Object run() { // XXX: this privileged block should be made smaller // by initializing a private static variable with "user.dir" @@ -763,6 +780,7 @@ public class AppletViewer extends Frame implements AppletContext, } } + @Override public int print(Graphics graphics, PageFormat pf, int pageIndex) { if (pageIndex > 0) { return Printable.NO_SUCH_PAGE; @@ -827,6 +845,7 @@ public class AppletViewer extends Frame implements AppletContext, new Thread(new Runnable() { + @Override public void run() { appletShutdown(p); @@ -862,6 +881,7 @@ public class AppletViewer extends Frame implements AppletContext, // new Thread(new Runnable() { + @Override public void run() { for (Enumeration e = appletPanels.elements() ; e.hasMoreElements() ;) { diff --git a/jdk/src/share/classes/sun/applet/Main.java b/jdk/src/share/classes/sun/applet/Main.java index e6af9ee7f72..a95a36f2688 100644 --- a/jdk/src/share/classes/sun/applet/Main.java +++ b/jdk/src/share/classes/sun/applet/Main.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -512,6 +512,7 @@ public class Main { return amh.getMessage(key, arg0, arg1, arg2); } + @SuppressWarnings("serial") // JDK implementation class class ParseException extends RuntimeException { public ParseException(String msg) { diff --git a/jdk/src/share/classes/sun/audio/InvalidAudioFormatException.java b/jdk/src/share/classes/sun/audio/InvalidAudioFormatException.java index 9b12af84a03..39b33f87be4 100644 --- a/jdk/src/share/classes/sun/audio/InvalidAudioFormatException.java +++ b/jdk/src/share/classes/sun/audio/InvalidAudioFormatException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ import java.io.IOException; /** * Signals an invalid audio stream for the stream handler. */ +@SuppressWarnings("serial") // JDK-implementation class final class InvalidAudioFormatException extends IOException { diff --git a/jdk/src/share/classes/sun/awt/AppContext.java b/jdk/src/share/classes/sun/awt/AppContext.java index c7f46efdf28..5959e54dea4 100644 --- a/jdk/src/share/classes/sun/awt/AppContext.java +++ b/jdk/src/share/classes/sun/awt/AppContext.java @@ -42,11 +42,13 @@ import java.util.Set; import java.util.HashSet; import java.beans.PropertyChangeSupport; import java.beans.PropertyChangeListener; +import java.lang.ref.SoftReference; import sun.util.logging.PlatformLogger; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Supplier; /** * The AppContext is a table referenced by ThreadGroup which stores @@ -883,6 +885,23 @@ public final class AppContext { }); } + + public static <T> T getSoftReferenceValue(Object key, + Supplier<T> supplier) { + + final AppContext appContext = AppContext.getAppContext(); + SoftReference<T> ref = (SoftReference<T>) appContext.get(key); + if (ref != null) { + final T object = ref.get(); + if (object != null) { + return object; + } + } + final T object = supplier.get(); + ref = new SoftReference<>(object); + appContext.put(key, ref); + return object; + } } final class MostRecentKeyValue { diff --git a/jdk/src/share/classes/sun/awt/image/ImageCache.java b/jdk/src/share/classes/sun/awt/image/ImageCache.java new file mode 100644 index 00000000000..c7088bacf52 --- /dev/null +++ b/jdk/src/share/classes/sun/awt/image/ImageCache.java @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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.awt.image; + +import java.awt.*; +import java.lang.ref.*; +import java.util.*; +import java.util.concurrent.locks.*; +import sun.awt.AppContext; + +/** + * ImageCache - A fixed pixel count sized cache of Images keyed by arbitrary + * set of arguments. All images are held with SoftReferences so they will be + * dropped by the GC if heap memory gets tight. When our size hits max pixel + * count least recently requested images are removed first. + * + * The ImageCache must be used from the thread with an AppContext only. + * + */ +final public class ImageCache { + + // Ordered Map keyed by args hash, ordered by most recent accessed entry. + private final LinkedHashMap<PixelsKey, ImageSoftReference> map + = new LinkedHashMap<>(16, 0.75f, true); + + // Maximum number of pixels to cache, this is used if maxCount + private final int maxPixelCount; + // The current number of pixels stored in the cache + private int currentPixelCount = 0; + + // Lock for concurrent access to map + private final ReadWriteLock lock = new ReentrantReadWriteLock(); + // Reference queue for tracking lost softreferences to images in the cache + private final ReferenceQueue<Image> referenceQueue = new ReferenceQueue<>(); + + public static ImageCache getInstance() { + return AppContext.getSoftReferenceValue(ImageCache.class, + () -> new ImageCache()); + } + + ImageCache(final int maxPixelCount) { + this.maxPixelCount = maxPixelCount; + } + + ImageCache() { + this((8 * 1024 * 1024) / 4); // 8Mb of pixels + } + + public void flush() { + lock.writeLock().lock(); + try { + map.clear(); + } finally { + lock.writeLock().unlock(); + } + } + + public Image getImage(final PixelsKey key){ + final ImageSoftReference ref; + lock.readLock().lock(); + try { + ref = map.get(key); + } finally { + lock.readLock().unlock(); + } + return ref == null ? null : ref.get(); + } + + /** + * Sets the cached image for the specified constraints. + * + * @param key The key with which the specified image is to be associated + * @param image The image to store in cache + */ + public void setImage(final PixelsKey key, final Image image) { + + lock.writeLock().lock(); + try { + ImageSoftReference ref = map.get(key); + + // check if currently in map + if (ref != null) { + if (ref.get() != null) { + return; + } + // soft image has been removed + currentPixelCount -= key.getPixelCount(); + map.remove(key); + }; + + + // add new image to pixel count + final int newPixelCount = key.getPixelCount(); + currentPixelCount += newPixelCount; + // clean out lost references if not enough space + if (currentPixelCount > maxPixelCount) { + while ((ref = (ImageSoftReference)referenceQueue.poll()) != null) { + //reference lost + map.remove(ref.key); + currentPixelCount -= ref.key.getPixelCount(); + } + } + + // remove old items till there is enough free space + if (currentPixelCount > maxPixelCount) { + final Iterator<Map.Entry<PixelsKey, ImageSoftReference>> + mapIter = map.entrySet().iterator(); + while ((currentPixelCount > maxPixelCount) && mapIter.hasNext()) { + final Map.Entry<PixelsKey, ImageSoftReference> entry = + mapIter.next(); + mapIter.remove(); + final Image img = entry.getValue().get(); + if (img != null) img.flush(); + currentPixelCount -= entry.getValue().key.getPixelCount(); + } + } + + // finally put new in map + map.put(key, new ImageSoftReference(key, image, referenceQueue)); + } finally { + lock.writeLock().unlock(); + } + } + + public interface PixelsKey { + + int getPixelCount(); + } + + private static class ImageSoftReference extends SoftReference<Image> { + + final PixelsKey key; + + ImageSoftReference(final PixelsKey key, final Image referent, + final ReferenceQueue<? super Image> q) { + super(referent, q); + this.key = key; + } + } +} diff --git a/jdk/src/share/classes/sun/awt/image/MultiResolutionBufferedImage.java b/jdk/src/share/classes/sun/awt/image/MultiResolutionBufferedImage.java index 79f7a3b4dab..283095c3588 100644 --- a/jdk/src/share/classes/sun/awt/image/MultiResolutionBufferedImage.java +++ b/jdk/src/share/classes/sun/awt/image/MultiResolutionBufferedImage.java @@ -26,46 +26,152 @@ package sun.awt.image; import java.awt.Image; import java.awt.Graphics; +import java.awt.geom.Dimension2D; import java.awt.image.BufferedImage; +import java.awt.image.ImageObserver; import java.util.Arrays; import java.util.List; import java.util.function.Function; +import java.util.function.BiFunction; +import java.util.stream.Collectors; public class MultiResolutionBufferedImage extends BufferedImage implements MultiResolutionImage { - Image[] resolutionVariants; - int baseIndex; + private final BiFunction<Integer, Integer, Image> mapper; + private final Dimension2D[] sizes; + private int availableInfo; - public MultiResolutionBufferedImage(int imageType, int baseIndex, Image... images) { - super(images[baseIndex].getWidth(null), images[baseIndex].getHeight(null), - imageType); - this.baseIndex = baseIndex; - this.resolutionVariants = images; + public MultiResolutionBufferedImage(Image baseImage, + Dimension2D[] sizes, BiFunction<Integer, Integer, Image> mapper) { + super(baseImage.getWidth(null), baseImage.getHeight(null), + BufferedImage.TYPE_INT_ARGB_PRE); + this.sizes = sizes; + this.mapper = mapper; + this.availableInfo = getInfo(baseImage); Graphics g = getGraphics(); - g.drawImage(images[baseIndex], 0, 0, null); + g.drawImage(baseImage, 0, 0, null); g.dispose(); - images[baseIndex] = this; } @Override public Image getResolutionVariant(int width, int height) { - for (Image image : resolutionVariants) { - if (width <= image.getWidth(null) && height <= image.getHeight(null)) { - return image; - } + int baseWidth = getWidth(); + int baseHeight = getHeight(); + + if (baseWidth == width && baseHeight == height) { + return this; } - return this; + + ImageCache cache = ImageCache.getInstance(); + ImageCacheKey key = new ImageCacheKey(this, width, height); + Image resolutionVariant = cache.getImage(key); + if (resolutionVariant == null) { + resolutionVariant = mapper.apply(width, height); + cache.setImage(key, resolutionVariant); + preload(resolutionVariant, availableInfo); + } + + return resolutionVariant; } @Override public List<Image> getResolutionVariants() { - return Arrays.asList(resolutionVariants); + return Arrays.stream(sizes).map((Function<Dimension2D, Image>) size + -> getResolutionVariant((int) size.getWidth(), + (int) size.getHeight())).collect(Collectors.toList()); } public MultiResolutionBufferedImage map(Function<Image, Image> mapper) { - return new MultiResolutionBufferedImage(getType(), baseIndex, - Arrays.stream(resolutionVariants).map(mapper) - .toArray(length -> new Image[length])); + return new MultiResolutionBufferedImage(mapper.apply(this), sizes, + (width, height) -> + mapper.apply(getResolutionVariant(width, height))); } -} + + @Override + public int getWidth(ImageObserver observer) { + availableInfo |= ImageObserver.WIDTH; + return super.getWidth(observer); + } + + @Override + public int getHeight(ImageObserver observer) { + availableInfo |= ImageObserver.HEIGHT; + return super.getHeight(observer); + } + + @Override + public Object getProperty(String name, ImageObserver observer) { + availableInfo |= ImageObserver.PROPERTIES; + return super.getProperty(name, observer); + } + + private static int getInfo(Image image) { + if (image instanceof ToolkitImage) { + return ((ToolkitImage) image).getImageRep().check( + (img, infoflags, x, y, w, h) -> false); + } + return 0; + } + + private static void preload(Image image, int availableInfo) { + if (image instanceof ToolkitImage) { + ((ToolkitImage) image).preload(new ImageObserver() { + int flags = availableInfo; + + @Override + public boolean imageUpdate(Image img, int infoflags, + int x, int y, int width, int height) { + flags &= ~infoflags; + return (flags != 0) && ((infoflags + & (ImageObserver.ERROR | ImageObserver.ABORT)) == 0); + } + }); + } + } + + private static class ImageCacheKey implements ImageCache.PixelsKey { + + private final int pixelCount; + private final int hash; + + private final int w; + private final int h; + private final Image baseImage; + + ImageCacheKey(final Image baseImage, + final int w, final int h) { + this.baseImage = baseImage; + this.w = w; + this.h = h; + this.pixelCount = w * h; + hash = hash(); + } + + @Override + public int getPixelCount() { + return pixelCount; + } + + private int hash() { + int hash = baseImage.hashCode(); + hash = 31 * hash + w; + hash = 31 * hash + h; + return hash; + } + + @Override + public int hashCode() { + return hash; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof ImageCacheKey) { + ImageCacheKey key = (ImageCacheKey) obj; + return baseImage == key.baseImage && w == key.w && h == key.h; + } + return false; + } + } +} \ No newline at end of file diff --git a/jdk/src/share/classes/sun/awt/shell/ShellFolder.java b/jdk/src/share/classes/sun/awt/shell/ShellFolder.java index cb9459f1d41..e8a9407276d 100644 --- a/jdk/src/share/classes/sun/awt/shell/ShellFolder.java +++ b/jdk/src/share/classes/sun/awt/shell/ShellFolder.java @@ -33,6 +33,8 @@ import java.io.FileNotFoundException; import java.util.*; import java.util.concurrent.Callable; +import sun.reflect.misc.ReflectUtil; + /** * @author Michael Martak * @since 1.4 @@ -208,10 +210,11 @@ public abstract class ShellFolder extends File { getDesktopProperty("Shell.shellFolderManager"); Class managerClass = null; try { - managerClass = Class.forName(managerClassName); + managerClass = ReflectUtil.forName(managerClassName); // swallow the exceptions below and use default shell folder } catch(ClassNotFoundException e) { } catch(NullPointerException e) { + } catch(SecurityException e) { } if (managerClass == null) { diff --git a/jdk/src/share/classes/sun/java2d/SunGraphics2D.java b/jdk/src/share/classes/sun/java2d/SunGraphics2D.java index f66eee685b0..287549c2062 100644 --- a/jdk/src/share/classes/sun/java2d/SunGraphics2D.java +++ b/jdk/src/share/classes/sun/java2d/SunGraphics2D.java @@ -2430,6 +2430,8 @@ public final class SunGraphics2D surfaceData = NullSurfaceData.theInstance; } + invalidatePipe(); + // this will recalculate the composite clip setDevClip(surfaceData.getBounds()); diff --git a/jdk/src/share/classes/sun/misc/REException.java b/jdk/src/share/classes/sun/misc/JavaBeansIntrospectorAccess.java similarity index 77% rename from jdk/src/share/classes/sun/misc/REException.java rename to jdk/src/share/classes/sun/misc/JavaBeansIntrospectorAccess.java index db68992d597..c32f24c655f 100644 --- a/jdk/src/share/classes/sun/misc/REException.java +++ b/jdk/src/share/classes/sun/misc/JavaBeansIntrospectorAccess.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. * 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,16 +25,8 @@ package sun.misc; -/** - * A class to signal exception from the RegexpPool class. - * @author James Gosling - */ +import java.lang.reflect.Method; -public class REException extends Exception { - - private static final long serialVersionUID = 4656584872733646963L; - - REException (String s) { - super(s); - } +public interface JavaBeansIntrospectorAccess { + Method getReadMethod(Class<?> clazz, String property) throws Exception; } diff --git a/jdk/src/share/classes/sun/misc/Regexp.java b/jdk/src/share/classes/sun/misc/Regexp.java deleted file mode 100644 index 4d488363bb3..00000000000 --- a/jdk/src/share/classes/sun/misc/Regexp.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 1995, 2004, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. 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.misc; - -/** - * A class to represent a regular expression. Only handles '*'s. - * @author James Gosling - */ - -public class Regexp { - /** if true then the matching process ignores case. */ - public boolean ignoreCase; - - /* - * regular expressions are carved into three regions: a constant string - * prefix, a constant string suffix, and a series of floating strings in - * between. In the input regular expression, they are separated by *s - */ - public String exp; - public String prefix, suffix; - public boolean exact; - public int prefixLen, suffixLen, totalLen; - public String mids[]; - - /** Create a new regular expression object. The regular expression - is a series of constant strings separated by *s. For example: - <dl> - <dt>*.gif <dd>Matches any string that ends in ".gif". - <dt>/tmp/* <dd>Matches any string that starts with "/tmp/". - <dt>/tmp/*.gif <dd>Matches any string that starts with "/tmp/" and ends - with ".gif". - <dt>/tmp/*new*.gif <dd>Matches any string that starts with "/tmp/" - and ends with ".gif" and has "new" somewhere in between. - </dl> - */ - public Regexp (String s) { - exp = s; - int firstst = s.indexOf('*'); - int lastst = s.lastIndexOf('*'); - if (firstst < 0) { - totalLen = s.length(); - exact = true; // no * s - } else { - prefixLen = firstst; - if (firstst == 0) - prefix = null; - else - prefix = s.substring(0, firstst); - suffixLen = s.length() - lastst - 1; - if (suffixLen == 0) - suffix = null; - else - suffix = s.substring(lastst + 1); - int nmids = 0; - int pos = firstst; - while (pos < lastst && pos >= 0) { - nmids++; - pos = s.indexOf('*', pos + 1); - } - totalLen = prefixLen + suffixLen; - if (nmids > 0) { - mids = new String[nmids]; - pos = firstst; - for (int i = 0; i < nmids; i++) { - pos++; - int npos = s.indexOf('*', pos); - if (pos < npos) { - mids[i] = s.substring(pos, npos); - totalLen += mids[i].length(); - } - pos = npos; - } - } - } - } - - /** Returns true iff the String s matches this regular expression. */ - final boolean matches(String s) { - return matches(s, 0, s.length()); - } - - /** Returns true iff the substring of s from offset for len characters - matches this regular expression. */ - boolean matches(String s, int offset, int len) { - if (exact) - return len == totalLen && - exp.regionMatches(ignoreCase, 0, s, offset, len); - if (len < totalLen) - return false; - if (prefixLen > 0 && - !prefix.regionMatches(ignoreCase, - 0, s, offset, prefixLen) - || - suffixLen > 0 && - !suffix.regionMatches(ignoreCase, - 0, s, offset + len - suffixLen, - suffixLen)) - return false; - if (mids == null) - return true; - int nmids = mids.length; - int spos = offset + prefixLen; - int limit = offset+len-suffixLen; - for (int i = 0; i<nmids; i++) { - String ms = mids[i]; - int ml = ms.length(); - while (spos+ml<=limit && - !ms.regionMatches(ignoreCase, - 0, s, spos, ml)) - spos++; - if (spos+ml>limit) - return false; - spos+=ml; - } - return true; - } - -} diff --git a/jdk/src/share/classes/sun/misc/RegexpPool.java b/jdk/src/share/classes/sun/misc/RegexpPool.java deleted file mode 100644 index c82c66fee13..00000000000 --- a/jdk/src/share/classes/sun/misc/RegexpPool.java +++ /dev/null @@ -1,319 +0,0 @@ -/* - * Copyright (c) 1995, 2001, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * 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.misc; -import java.io.*; - -/** - * A class to represent a pool of regular expressions. A string - * can be matched against the whole pool all at once. It is much - * faster than doing individual regular expression matches one-by-one. - * - * @see java.misc.RegexpTarget - * @author James Gosling - */ - -public class RegexpPool { - private RegexpNode prefixMachine = new RegexpNode(); - private RegexpNode suffixMachine = new RegexpNode(); - private static final int BIG = 0x7FFFFFFF; - private int lastDepth = BIG; - - public RegexpPool () { - } - - /** - * Add a regular expression to the pool of regular expressions. - * @param re The regular expression to add to the pool. - For now, only handles strings that either begin or end with - a '*'. - * @param ret The object to be returned when this regular expression is - matched. If ret is an instance of the RegexpTarget class, ret.found - is called with the string fragment that matched the '*' as its - parameter. - * @exception REException error - */ - public void add(String re, Object ret) throws REException { - add(re, ret, false); - } - - /** - * Replace the target for the regular expression with a different - * target. - * - * @param re The regular expression to be replaced in the pool. - * For now, only handles strings that either begin or end with - * a '*'. - * @param ret The object to be returned when this regular expression is - * matched. If ret is an instance of the RegexpTarget class, ret.found - * is called with the string fragment that matched the '*' as its - * parameter. - */ - public void replace(String re, Object ret) { - try { - add(re, ret, true); - } catch(Exception e) { - // should never occur if replace is true - } - } - - /** - * Delete the regular expression and its target. - * @param re The regular expression to be deleted from the pool. - * must begin or end with a '*' - * @return target - the old target. - */ - public Object delete(String re) { - Object o = null; - RegexpNode p = prefixMachine; - RegexpNode best = p; - int len = re.length() - 1; - int i; - boolean prefix = true; - - if (!re.startsWith("*") || - !re.endsWith("*")) - len++; - - if (len <= 0) - return null; - - /* March forward through the prefix machine */ - for (i = 0; p != null; i++) { - if (p.result != null && p.depth < BIG - && (!p.exact || i == len)) { - best = p; - } - if (i >= len) - break; - p = p.find(re.charAt(i)); - } - - /* march backward through the suffix machine */ - p = suffixMachine; - for (i = len; --i >= 0 && p != null;) { - if (p.result != null && p.depth < BIG) { - prefix = false; - best = p; - } - p = p.find(re.charAt(i)); - } - - // delete only if there is an exact match - if (prefix) { - if (re.equals(best.re)) { - o = best.result; - best.result = null; - - } - } else { - if (re.equals(best.re)) { - o = best.result; - best.result = null; - } - } - return o; - } - - /** Search for a match to a string & return the object associated - with it with the match. When multiple regular expressions - would match the string, the best match is returned first. - The next best match is returned the next time matchNext is - called. - @param s The string to match against the regular expressions - in the pool. - @return null on failure, otherwise the object associated with - the regular expression when it was added to the pool. - If the object is an instance of RegexpTarget, then - the return value is the result from calling - return.found(string_that_matched_wildcard). - */ - public Object match(String s) { - return matchAfter(s, BIG); - } - - /** Identical to match except that it will only find matches to - regular expressions that were added to the pool <i>after</i> - the last regular expression that matched in the last call - to match() or matchNext() */ - public Object matchNext(String s) { - return matchAfter(s, lastDepth); - } - - private void add(String re, Object ret, boolean replace) throws REException { - int len = re.length(); - RegexpNode p; - if (re.charAt(0) == '*') { - p = suffixMachine; - while (len > 1) - p = p.add(re.charAt(--len)); - } else { - boolean exact = false; - if (re.charAt(len - 1) == '*') - len--; - else - exact = true; - p = prefixMachine; - for (int i = 0; i < len; i++) - p = p.add(re.charAt(i)); - p.exact = exact; - } - - if (p.result != null && !replace) - throw new REException(re + " is a duplicate"); - - p.re = re; - p.result = ret; - } - - private Object matchAfter(String s, int lastMatchDepth) { - RegexpNode p = prefixMachine; - RegexpNode best = p; - int bst = 0; - int bend = 0; - int len = s.length(); - int i; - if (len <= 0) - return null; - /* March forward through the prefix machine */ - for (i = 0; p != null; i++) { - if (p.result != null && p.depth < lastMatchDepth - && (!p.exact || i == len)) { - lastDepth = p.depth; - best = p; - bst = i; - bend = len; - } - if (i >= len) - break; - p = p.find(s.charAt(i)); - } - /* march backward through the suffix machine */ - p = suffixMachine; - for (i = len; --i >= 0 && p != null;) { - if (p.result != null && p.depth < lastMatchDepth) { - lastDepth = p.depth; - best = p; - bst = 0; - bend = i+1; - } - p = p.find(s.charAt(i)); - } - Object o = best.result; - if (o != null && o instanceof RegexpTarget) - o = ((RegexpTarget) o).found(s.substring(bst, bend)); - return o; - } - - /** Resets the pool so that the next call to matchNext looks - at all regular expressions in the pool. match(s); is equivalent - to reset(); matchNext(s); - <p><b>Multithreading note:</b> reset/nextMatch leave state in the - regular expression pool. If multiple threads could be using this - pool this way, they should be syncronized to avoid race hazards. - match() was done in such a way that there are no such race - hazards: multiple threads can be matching in the same pool - simultaneously. */ - public void reset() { - lastDepth = BIG; - } - - /** Print this pool to standard output */ - public void print(PrintStream out) { - out.print("Regexp pool:\n"); - if (suffixMachine.firstchild != null) { - out.print(" Suffix machine: "); - suffixMachine.firstchild.print(out); - out.print("\n"); - } - if (prefixMachine.firstchild != null) { - out.print(" Prefix machine: "); - prefixMachine.firstchild.print(out); - out.print("\n"); - } - } - -} - -/* A node in a regular expression finite state machine. */ -class RegexpNode { - char c; - RegexpNode firstchild; - RegexpNode nextsibling; - int depth; - boolean exact; - Object result; - String re = null; - - RegexpNode () { - c = '#'; - depth = 0; - } - RegexpNode (char C, int depth) { - c = C; - this.depth = depth; - } - RegexpNode add(char C) { - RegexpNode p = firstchild; - if (p == null) - p = new RegexpNode (C, depth+1); - else { - while (p != null) - if (p.c == C) - return p; - else - p = p.nextsibling; - p = new RegexpNode (C, depth+1); - p.nextsibling = firstchild; - } - firstchild = p; - return p; - } - RegexpNode find(char C) { - for (RegexpNode p = firstchild; - p != null; - p = p.nextsibling) - if (p.c == C) - return p; - return null; - } - void print(PrintStream out) { - if (nextsibling != null) { - RegexpNode p = this; - out.print("("); - while (p != null) { - out.write(p.c); - if (p.firstchild != null) - p.firstchild.print(out); - p = p.nextsibling; - out.write(p != null ? '|' : ')'); - } - } else { - out.write(c); - if (firstchild != null) - firstchild.print(out); - } - } -} diff --git a/jdk/src/share/classes/sun/misc/SharedSecrets.java b/jdk/src/share/classes/sun/misc/SharedSecrets.java index bfb7c5b6203..3e268759bc7 100644 --- a/jdk/src/share/classes/sun/misc/SharedSecrets.java +++ b/jdk/src/share/classes/sun/misc/SharedSecrets.java @@ -55,6 +55,7 @@ public class SharedSecrets { private static JavaSecurityAccess javaSecurityAccess; private static JavaUtilZipFileAccess javaUtilZipFileAccess; private static JavaAWTAccess javaAWTAccess; + private static JavaBeansIntrospectorAccess javaBeansIntrospectorAccess; public static JavaUtilJarAccess javaUtilJarAccess() { if (javaUtilJarAccess == null) { @@ -184,4 +185,12 @@ public class SharedSecrets { } return javaAWTAccess; } + + public static JavaBeansIntrospectorAccess getJavaBeansIntrospectorAccess() { + return javaBeansIntrospectorAccess; + } + + public static void setJavaBeansIntrospectorAccess(JavaBeansIntrospectorAccess access) { + javaBeansIntrospectorAccess = access; + } } diff --git a/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java b/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java index f7018ed023f..36db753365a 100644 --- a/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java +++ b/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java @@ -32,13 +32,14 @@ import java.net.SocketAddress; import java.net.URI; import java.util.ArrayList; import java.util.List; -import java.util.StringTokenizer; import java.io.IOException; -import sun.misc.RegexpPool; import java.security.AccessController; import java.security.PrivilegedAction; +import java.util.StringJoiner; +import java.util.regex.Pattern; import sun.net.NetProperties; import sun.net.SocksProxy; +import static java.util.regex.Pattern.quote; /** * Supports proxy settings using system properties This proxy selector @@ -107,7 +108,7 @@ public class DefaultProxySelector extends ProxySelector { /** * How to deal with "non proxy hosts": - * since we do have to generate a RegexpPool we don't want to do that if + * since we do have to generate a pattern we don't want to do that if * it's not necessary. Therefore we do cache the result, on a per-protocol * basis, and change it only when the "source", i.e. the system property, * did change. @@ -119,17 +120,17 @@ public class DefaultProxySelector extends ProxySelector { static final String defStringVal = "localhost|127.*|[::1]|0.0.0.0|[::0]"; String hostsSource; - RegexpPool hostsPool; + Pattern pattern; final String property; final String defaultVal; static NonProxyInfo ftpNonProxyInfo = new NonProxyInfo("ftp.nonProxyHosts", null, null, defStringVal); static NonProxyInfo httpNonProxyInfo = new NonProxyInfo("http.nonProxyHosts", null, null, defStringVal); static NonProxyInfo socksNonProxyInfo = new NonProxyInfo("socksNonProxyHosts", null, null, defStringVal); - NonProxyInfo(String p, String s, RegexpPool pool, String d) { + NonProxyInfo(String p, String s, Pattern pattern, String d) { property = p; hostsSource = s; - hostsPool = pool; + this.pattern = pattern; defaultVal = d; } } @@ -255,7 +256,7 @@ public class DefaultProxySelector extends ProxySelector { nphosts = nprop.defaultVal; } else { nprop.hostsSource = null; - nprop.hostsPool = null; + nprop.pattern = null; } } else if (nphosts.length() != 0) { // add the required default patterns @@ -266,20 +267,11 @@ public class DefaultProxySelector extends ProxySelector { } if (nphosts != null) { if (!nphosts.equals(nprop.hostsSource)) { - RegexpPool pool = new RegexpPool(); - StringTokenizer st = new StringTokenizer(nphosts, "|", false); - try { - while (st.hasMoreTokens()) { - pool.add(st.nextToken().toLowerCase(), Boolean.TRUE); - } - } catch (sun.misc.REException ex) { - } - nprop.hostsPool = pool; + nprop.pattern = toPattern(nphosts); nprop.hostsSource = nphosts; } } - if (nprop.hostsPool != null && - nprop.hostsPool.match(urlhost) != null) { + if (shouldNotUseProxyFor(nprop.pattern, urlhost)) { return Proxy.NO_PROXY; } } @@ -355,4 +347,49 @@ public class DefaultProxySelector extends ProxySelector { private native static boolean init(); private synchronized native Proxy getSystemProxy(String protocol, String host); + + /** + * @return {@code true} if given this pattern for non-proxy hosts and this + * urlhost the proxy should NOT be used to access this urlhost + */ + static boolean shouldNotUseProxyFor(Pattern pattern, String urlhost) { + if (pattern == null || urlhost.isEmpty()) + return false; + boolean matches = pattern.matcher(urlhost).matches(); + return matches; + } + + /** + * @param mask non-null mask + * @return {@link java.util.regex.Pattern} corresponding to this mask + * or {@code null} in case mask should not match anything + */ + static Pattern toPattern(String mask) { + boolean disjunctionEmpty = true; + StringJoiner joiner = new StringJoiner("|"); + for (String disjunct : mask.split("\\|")) { + if (disjunct.isEmpty()) + continue; + disjunctionEmpty = false; + String regex = disjunctToRegex(disjunct.toLowerCase()); + joiner.add(regex); + } + return disjunctionEmpty ? null : Pattern.compile(joiner.toString()); + } + + /** + * @param disjunct non-null mask disjunct + * @return java regex string corresponding to this mask + */ + static String disjunctToRegex(String disjunct) { + String regex; + if (disjunct.startsWith("*")) { + regex = ".*" + quote(disjunct.substring(1)); + } else if (disjunct.endsWith("*")) { + regex = quote(disjunct.substring(0, disjunct.length() - 1)) + ".*"; + } else { + regex = quote(disjunct); + } + return regex; + } } diff --git a/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java b/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java index 1d46e46d0ad..91b676c2c0c 100644 --- a/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java +++ b/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java @@ -30,8 +30,7 @@ import java.nio.charset.Charset; import java.nio.charset.spi.CharsetProvider; import sun.nio.cs.AbstractCharsetProvider; import java.security.AccessController; -import sun.security.action.GetPropertyAction; - +import java.security.PrivilegedAction; /** * Provider for extended charsets. @@ -1175,7 +1174,7 @@ public class ExtendedCharsets return; String map = AccessController.doPrivileged( - new GetPropertyAction("sun.nio.cs.map")); + (PrivilegedAction<String>) () -> System.getProperty("sun.nio.cs.map")); boolean sjisIsMS932 = false; boolean iso2022jpIsMS50221 = false; boolean iso2022jpIsMS50220 = false; @@ -1296,7 +1295,7 @@ public class ExtendedCharsets } } String osName = AccessController.doPrivileged( - new GetPropertyAction("os.name")); + (PrivilegedAction<String>) () -> System.getProperty("os.name")); if ("SunOS".equals(osName) || "Linux".equals(osName) || "AIX".equals(osName) || osName.contains("OS X")) { charset("x-COMPOUND_TEXT", "COMPOUND_TEXT", diff --git a/jdk/src/share/classes/sun/nio/cs/ext/JISAutoDetect.java b/jdk/src/share/classes/sun/nio/cs/ext/JISAutoDetect.java index 27a9cf8a07c..a3bedd9ab8e 100644 --- a/jdk/src/share/classes/sun/nio/cs/ext/JISAutoDetect.java +++ b/jdk/src/share/classes/sun/nio/cs/ext/JISAutoDetect.java @@ -35,7 +35,7 @@ import java.nio.charset.CharacterCodingException; import java.nio.charset.MalformedInputException; import sun.nio.cs.HistoricallyNamedCharset; import java.security.AccessController; -import sun.security.action.GetPropertyAction; +import java.security.PrivilegedAction; import static java.lang.Character.UnicodeBlock; @@ -117,6 +117,8 @@ public class JISAutoDetect } private static class Decoder extends CharsetDecoder { + private final static String osName = AccessController.doPrivileged( + (PrivilegedAction<String>) () -> System.getProperty("os.name")); private final static String SJISName = getSJISName(); private final static String EUCJPName = getEUCJPName(); @@ -239,12 +241,11 @@ public class JISAutoDetect return ((CharsetDecoder) detectedDecoder).charset(); } + /** * Returned Shift_JIS Charset name is OS dependent */ private static String getSJISName() { - String osName = AccessController.doPrivileged( - new GetPropertyAction("os.name")); if (osName.equals("Solaris") || osName.equals("SunOS")) return("PCK"); else if (osName.startsWith("Windows")) @@ -258,8 +259,6 @@ public class JISAutoDetect */ private static String getEUCJPName() { - String osName = AccessController.doPrivileged( - new GetPropertyAction("os.name")); if (osName.equals("Solaris") || osName.equals("SunOS")) return("x-eucjp-open"); else diff --git a/jdk/src/share/classes/sun/print/DialogOwner.java b/jdk/src/share/classes/sun/print/DialogOwner.java index 1afb95bf840..2551ed694a3 100644 --- a/jdk/src/share/classes/sun/print/DialogOwner.java +++ b/jdk/src/share/classes/sun/print/DialogOwner.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved. * 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 java.awt.Frame; * <P> * */ +@SuppressWarnings("serial") // JDK-implementation class public final class DialogOwner implements PrintRequestAttribute { diff --git a/jdk/src/share/classes/sun/print/PrintJobAttributeException.java b/jdk/src/share/classes/sun/print/PrintJobAttributeException.java index 335f378ed0e..8919a1af1b8 100644 --- a/jdk/src/share/classes/sun/print/PrintJobAttributeException.java +++ b/jdk/src/share/classes/sun/print/PrintJobAttributeException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ import javax.print.AttributeException; import javax.print.PrintException; import javax.print.attribute.Attribute; +@SuppressWarnings("serial") // JDK-implementation class class PrintJobAttributeException extends PrintException implements AttributeException { diff --git a/jdk/src/share/classes/sun/print/PrintJobFlavorException.java b/jdk/src/share/classes/sun/print/PrintJobFlavorException.java index de095f658d5..0d312175466 100644 --- a/jdk/src/share/classes/sun/print/PrintJobFlavorException.java +++ b/jdk/src/share/classes/sun/print/PrintJobFlavorException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,7 +29,7 @@ import javax.print.DocFlavor; import javax.print.FlavorException; import javax.print.PrintException; - +@SuppressWarnings("serial") // JDK implementation class class PrintJobFlavorException extends PrintException implements FlavorException { diff --git a/jdk/src/share/classes/sun/print/ServiceDialog.java b/jdk/src/share/classes/sun/print/ServiceDialog.java index 7c557db9c4b..70d1f93e434 100644 --- a/jdk/src/share/classes/sun/print/ServiceDialog.java +++ b/jdk/src/share/classes/sun/print/ServiceDialog.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -81,6 +81,7 @@ import java.lang.reflect.Field; * * @author Chris Campbell */ +@SuppressWarnings("serial") // Superclass is not serializable across versions public class ServiceDialog extends JDialog implements ActionListener { /** @@ -307,6 +308,7 @@ public class ServiceDialog extends JDialog implements ActionListener { * Performs Cancel when Esc key is pressed. */ private void handleEscKey(JButton btnCancel) { + @SuppressWarnings("serial") // anonymous class Action cancelKeyAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { dispose(CANCEL); @@ -656,6 +658,7 @@ public class ServiceDialog extends JDialog implements ActionListener { * The "General" tab. Includes the controls for PrintService, * PageRange, and Copies/Collate. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class GeneralPanel extends JPanel { private PrintServicePanel pnlPrintService; @@ -699,6 +702,7 @@ public class ServiceDialog extends JDialog implements ActionListener { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class PrintServicePanel extends JPanel implements ActionListener, ItemListener, PopupMenuListener { @@ -956,6 +960,7 @@ public class ServiceDialog extends JDialog implements ActionListener { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class PrintRangePanel extends JPanel implements ActionListener, FocusListener { @@ -1168,6 +1173,7 @@ public class ServiceDialog extends JDialog implements ActionListener { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class CopiesPanel extends JPanel implements ActionListener, ChangeListener { @@ -1301,6 +1307,7 @@ public class ServiceDialog extends JDialog implements ActionListener { * The "Page Setup" tab. Includes the controls for MediaSource/MediaTray, * OrientationRequested, and Sides. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class PageSetupPanel extends JPanel { private MediaPanel pnlMedia; @@ -1342,6 +1349,7 @@ public class ServiceDialog extends JDialog implements ActionListener { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class MarginsPanel extends JPanel implements ActionListener, FocusListener { @@ -1872,6 +1880,7 @@ public class ServiceDialog extends JDialog implements ActionListener { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class MediaPanel extends JPanel implements ItemListener { private final String strTitle = getMsg("border.media"); @@ -2106,6 +2115,7 @@ public class ServiceDialog extends JDialog implements ActionListener { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class OrientationPanel extends JPanel implements ActionListener { @@ -2264,6 +2274,7 @@ public class ServiceDialog extends JDialog implements ActionListener { * The "Appearance" tab. Includes the controls for Chromaticity, * PrintQuality, JobPriority, JobName, and other related job attributes. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class AppearancePanel extends JPanel { private ChromaticityPanel pnlChromaticity; @@ -2310,6 +2321,7 @@ public class ServiceDialog extends JDialog implements ActionListener { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class ChromaticityPanel extends JPanel implements ActionListener { @@ -2400,6 +2412,7 @@ public class ServiceDialog extends JDialog implements ActionListener { } } + @SuppressWarnings("serial") // Superclass is not serializable across versions private class QualityPanel extends JPanel implements ActionListener { @@ -2501,6 +2514,8 @@ public class ServiceDialog extends JDialog implements ActionListener { } + + @SuppressWarnings("serial") // Superclass is not serializable across versions private class SidesPanel extends JPanel implements ActionListener { @@ -2603,7 +2618,7 @@ public class ServiceDialog extends JDialog implements ActionListener { } - + @SuppressWarnings("serial") // Superclass is not serializable across versions private class JobAttributesPanel extends JPanel implements ActionListener, ChangeListener, FocusListener { @@ -2791,6 +2806,7 @@ public class ServiceDialog extends JDialog implements ActionListener { * A special widget that groups a JRadioButton with an associated icon, * placed to the left of the radio button. */ + @SuppressWarnings("serial") // Superclass is not serializable across versions private class IconRadioButton extends JPanel { private JRadioButton rb; @@ -2843,6 +2859,7 @@ public class ServiceDialog extends JDialog implements ActionListener { * chooser will pop up a "Do you want to overwrite..." dialog if the * user selects a file that already exists. */ + @SuppressWarnings("serial") // JDK implementation class private class ValidatingFileChooser extends JFileChooser { public void approveSelection() { File selected = getSelectedFile(); diff --git a/jdk/src/share/classes/sun/print/SunMinMaxPage.java b/jdk/src/share/classes/sun/print/SunMinMaxPage.java index 46ccc44a9ff..9381d29128e 100644 --- a/jdk/src/share/classes/sun/print/SunMinMaxPage.java +++ b/jdk/src/share/classes/sun/print/SunMinMaxPage.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +30,7 @@ import javax.print.attribute.PrintRequestAttribute; /* * A class used to determine minimum and maximum pages. */ +@SuppressWarnings("serial") // JDK-implementation class public final class SunMinMaxPage implements PrintRequestAttribute { private int page_max, page_min; diff --git a/jdk/src/share/classes/sun/print/SunPageSelection.java b/jdk/src/share/classes/sun/print/SunPageSelection.java index 2596c1a6b21..b54d7ba55d2 100644 --- a/jdk/src/share/classes/sun/print/SunPageSelection.java +++ b/jdk/src/share/classes/sun/print/SunPageSelection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +30,7 @@ import javax.print.attribute.PrintRequestAttribute; /* * A class used to determine the range of pages to be printed. */ +@SuppressWarnings("serial") // JDK implementation class public final class SunPageSelection implements PrintRequestAttribute { public static final SunPageSelection ALL = new SunPageSelection(0); diff --git a/jdk/src/share/classes/sun/security/jgss/wrapper/GSSLibStub.java b/jdk/src/share/classes/sun/security/jgss/wrapper/GSSLibStub.java index 47861f8081e..900532459bf 100644 --- a/jdk/src/share/classes/sun/security/jgss/wrapper/GSSLibStub.java +++ b/jdk/src/share/classes/sun/security/jgss/wrapper/GSSLibStub.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -48,10 +48,11 @@ class GSSLibStub { /** * Initialization routine to dynamically load function pointers. * - * @param library name to dlopen + * @param lib library name to dlopen + * @param debug set to true for reporting native debugging info * @return true if succeeded, false otherwise. */ - static native boolean init(String lib); + static native boolean init(String lib, boolean debug); private static native long getMechPtr(byte[] oidDerEncoding); // Miscellaneous routines diff --git a/jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java b/jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java index 238e12bc326..94ca2c669bf 100644 --- a/jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java +++ b/jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java @@ -100,7 +100,7 @@ public final class SunNativeProvider extends Provider { gssLibs = new String[]{ defaultLib }; } for (String libName: gssLibs) { - if (GSSLibStub.init(libName)) { + if (GSSLibStub.init(libName, DEBUG)) { debug("Loaded GSS library: " + libName); Oid[] mechs = GSSLibStub.indicateMechs(); HashMap<String, String> map = diff --git a/jdk/src/share/classes/sun/security/pkcs11/SessionManager.java b/jdk/src/share/classes/sun/security/pkcs11/SessionManager.java index 348de3a1dce..798624c369d 100644 --- a/jdk/src/share/classes/sun/security/pkcs11/SessionManager.java +++ b/jdk/src/share/classes/sun/security/pkcs11/SessionManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +34,9 @@ import sun.security.util.Debug; import sun.security.pkcs11.wrapper.*; import static sun.security.pkcs11.wrapper.PKCS11Constants.*; +import java.util.concurrent.ConcurrentLinkedDeque; +import java.util.concurrent.atomic.AtomicInteger; + /** * Session manager. There is one session manager object per PKCS#11 * provider. It allows code to checkout a session, release it @@ -77,7 +80,7 @@ final class SessionManager { private final int maxSessions; // total number of active sessions - private int activeSessions; + private AtomicInteger activeSessions = new AtomicInteger(); // pool of available object sessions private final Pool objSessions; @@ -118,7 +121,7 @@ final class SessionManager { return (maxSessions <= DEFAULT_MAX_SESSIONS); } - synchronized Session getObjSession() throws PKCS11Exception { + Session getObjSession() throws PKCS11Exception { Session session = objSessions.poll(); if (session != null) { return ensureValid(session); @@ -131,7 +134,7 @@ final class SessionManager { return ensureValid(session); } - synchronized Session getOpSession() throws PKCS11Exception { + Session getOpSession() throws PKCS11Exception { Session session = opSessions.poll(); if (session != null) { return ensureValid(session); @@ -139,7 +142,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 || - activeSessions < maxSessions) { + activeSessions.get() < maxSessions) { session = openSession(); return ensureValid(session); } @@ -155,20 +158,20 @@ final class SessionManager { return session; } - synchronized Session killSession(Session session) { + Session killSession(Session session) { if ((session == null) || (token.isValid() == false)) { return null; } if (debug != null) { String location = new Exception().getStackTrace()[2].toString(); System.out.println("Killing session (" + location + ") active: " - + activeSessions); + + activeSessions.get()); } closeSession(session); return null; } - synchronized Session releaseSession(Session session) { + Session releaseSession(Session session) { if ((session == null) || (token.isValid() == false)) { return null; } @@ -181,13 +184,13 @@ final class SessionManager { return null; } - synchronized void demoteObjSession(Session session) { + void demoteObjSession(Session session) { if (token.isValid() == false) { return; } if (debug != null) { System.out.println("Demoting session, active: " + - activeSessions); + activeSessions.get()); } boolean present = objSessions.remove(session); if (present == false) { @@ -200,18 +203,21 @@ final class SessionManager { private Session openSession() throws PKCS11Exception { if ((maxSessions != Integer.MAX_VALUE) && - (activeSessions >= maxSessions)) { + (activeSessions.get() >= 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++; + activeSessions.incrementAndGet(); if (debug != null) { - if (activeSessions > maxActiveSessions) { - maxActiveSessions = activeSessions; - if (maxActiveSessions % 10 == 0) { - System.out.println("Open sessions: " + maxActiveSessions); + synchronized(this) { + if (activeSessions.get() > maxActiveSessions) { + maxActiveSessions = activeSessions.get(); + if (maxActiveSessions % 10 == 0) { + System.out.println("Open sessions: " + maxActiveSessions); + } } } } @@ -220,18 +226,18 @@ final class SessionManager { private void closeSession(Session session) { session.close(); - activeSessions--; + activeSessions.decrementAndGet(); } - private static final class Pool { + public static final class Pool { private final SessionManager mgr; - private final List<Session> pool; + private final ConcurrentLinkedDeque<Session> pool; Pool(SessionManager mgr) { - this.mgr = mgr; - pool = new ArrayList<Session>(); + this.mgr = mgr; + pool = new ConcurrentLinkedDeque<Session>(); } boolean remove(Session session) { @@ -239,45 +245,40 @@ final class SessionManager { } Session poll() { - int n = pool.size(); - if (n == 0) { - return null; - } - Session session = pool.remove(n - 1); - return session; + return pool.pollLast(); } void release(Session session) { - pool.add(session); - // if there are idle sessions, close them + pool.offer(session); if (session.hasObjects()) { return; } + int n = pool.size(); if (n < 5) { return; } - Session oldestSession = pool.get(0); + + Session oldestSession; long time = System.currentTimeMillis(); - if (session.isLive(time) && oldestSession.isLive(time)) { - return; - } - Collections.sort(pool); int i = 0; - while (i < n - 1) { // always keep at least 1 session open - oldestSession = pool.get(i); - if (oldestSession.isLive(time)) { + // Check if the session head is too old and continue through queue + // until only one is left. + do { + oldestSession = pool.peek(); + if (oldestSession == null || oldestSession.isLive(time) || + !pool.remove(oldestSession)) { break; } + i++; mgr.closeSession(oldestSession); - } + } while ((n - i) > 1); + if (debug != null) { System.out.println("Closing " + i + " idle sessions, active: " + mgr.activeSessions); } - List<Session> subList = pool.subList(0, i); - subList.clear(); } } diff --git a/jdk/src/share/classes/sun/security/provider/certpath/ldap/LDAPCertStore.java b/jdk/src/share/classes/sun/security/provider/certpath/ldap/LDAPCertStore.java index 5a24a694b3d..05499ead984 100644 --- a/jdk/src/share/classes/sun/security/provider/certpath/ldap/LDAPCertStore.java +++ b/jdk/src/share/classes/sun/security/provider/certpath/ldap/LDAPCertStore.java @@ -50,8 +50,6 @@ import sun.security.provider.certpath.X509CertificatePair; import sun.security.util.Cache; import sun.security.util.Debug; import sun.security.x509.X500Name; -import sun.security.action.GetBooleanAction; -import sun.security.action.GetPropertyAction; /** * A <code>CertStore</code> that retrieves <code>Certificates</code> and @@ -146,7 +144,7 @@ public final class LDAPCertStore extends CertStoreSpi { static { String s = AccessController.doPrivileged( - new GetPropertyAction(PROP_LIFETIME)); + (PrivilegedAction<String>) () -> System.getProperty(PROP_LIFETIME)); if (s != null) { LIFETIME = Integer.parseInt(s); // throws NumberFormatException } else { @@ -249,7 +247,7 @@ public final class LDAPCertStore extends CertStoreSpi { // If property is set to true, disable application resource file lookup. boolean disableAppResourceFiles = AccessController.doPrivileged( - new GetBooleanAction(PROP_DISABLE_APP_RESOURCE_FILES)); + (PrivilegedAction<Boolean>) () -> Boolean.getBoolean(PROP_DISABLE_APP_RESOURCE_FILES)); if (disableAppResourceFiles) { if (debug != null) { debug.println("LDAPCertStore disabling app resource files"); diff --git a/jdk/src/share/classes/sun/security/smartcardio/ChannelImpl.java b/jdk/src/share/classes/sun/security/smartcardio/ChannelImpl.java index b1c355e55f3..1d3ec88d1df 100644 --- a/jdk/src/share/classes/sun/security/smartcardio/ChannelImpl.java +++ b/jdk/src/share/classes/sun/security/smartcardio/ChannelImpl.java @@ -27,13 +27,12 @@ package sun.security.smartcardio; import java.nio.*; import java.security.AccessController; +import java.security.PrivilegedAction; import javax.smartcardio.*; import static sun.security.smartcardio.PCSC.*; -import sun.security.action.GetPropertyAction; - /** * CardChannel implementation. * @@ -125,7 +124,8 @@ final class ChannelImpl extends CardChannel { getBooleanProperty("sun.security.smartcardio.t1StripLe", false); private static boolean getBooleanProperty(String name, boolean def) { - String val = AccessController.doPrivileged(new GetPropertyAction(name)); + String val = AccessController.doPrivileged( + (PrivilegedAction<String>) () -> System.getProperty(name)); if (val == null) { return def; } diff --git a/jdk/src/share/classes/sun/security/x509/CRLReasonCodeExtension.java b/jdk/src/share/classes/sun/security/x509/CRLReasonCodeExtension.java index 0016bc18cd3..5212b0e78b5 100644 --- a/jdk/src/share/classes/sun/security/x509/CRLReasonCodeExtension.java +++ b/jdk/src/share/classes/sun/security/x509/CRLReasonCodeExtension.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * 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,29 +34,9 @@ import sun.security.util.*; /** * The reasonCode is a non-critical CRL entry extension that identifies - * the reason for the certificate revocation. CAs are strongly - * encouraged to include reason codes in CRL entries; however, the - * reason code CRL entry extension should be absent instead of using the - * unspecified (0) reasonCode value. - * <p>The ASN.1 syntax for this is: - * <pre> - * id-ce-cRLReason OBJECT IDENTIFIER ::= { id-ce 21 } - * - * -- reasonCode ::= { CRLReason } - * - * CRLReason ::= ENUMERATED { - * unspecified (0), - * keyCompromise (1), - * cACompromise (2), - * affiliationChanged (3), - * superseded (4), - * cessationOfOperation (5), - * certificateHold (6), - * removeFromCRL (8), - * privilegeWithdrawn (9), - * aACompromise (10) } - * </pre> + * the reason for the certificate revocation. * @author Hemma Prafullchandra + * @see java.security.cert.CRLReason * @see Extension * @see CertAttrSet */ @@ -64,23 +44,11 @@ public class CRLReasonCodeExtension extends Extension implements CertAttrSet<String> { /** - * Attribute name and Reason codes + * Attribute name */ public static final String NAME = "CRLReasonCode"; public static final String REASON = "reason"; - public static final int UNSPECIFIED = 0; - public static final int KEY_COMPROMISE = 1; - public static final int CA_COMPROMISE = 2; - public static final int AFFLIATION_CHANGED = 3; - public static final int SUPERSEDED = 4; - public static final int CESSATION_OF_OPERATION = 5; - public static final int CERTIFICATE_HOLD = 6; - // note 7 missing in syntax - public static final int REMOVE_FROM_CRL = 8; - public static final int PRIVILEGE_WITHDRAWN = 9; - public static final int AA_COMPROMISE = 10; - private static CRLReason[] values = CRLReason.values(); private int reasonCode = 0; @@ -181,7 +149,7 @@ public class CRLReasonCodeExtension extends Extension * Returns a printable representation of the Reason code. */ public String toString() { - return super.toString() + " Reason Code: " + values[reasonCode]; + return super.toString() + " Reason Code: " + getReasonCode(); } /** diff --git a/jdk/src/share/classes/sun/swing/SwingLazyValue.java b/jdk/src/share/classes/sun/swing/SwingLazyValue.java deleted file mode 100644 index 508e5b81121..00000000000 --- a/jdk/src/share/classes/sun/swing/SwingLazyValue.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute 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.swing; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import javax.swing.UIDefaults; -import sun.reflect.misc.ReflectUtil; - -/** - * SwingLazyValue is a copy of ProxyLazyValue that does not snapshot the - * AccessControlContext or use a doPrivileged to resolve the class name. - * It's intented for use in places in Swing where we need ProxyLazyValue, this - * should never be used in a place where the developer could supply the - * arguments. - * - */ -public class SwingLazyValue implements UIDefaults.LazyValue { - private String className; - private String methodName; - private Object[] args; - - public SwingLazyValue(String c) { - this(c, (String)null); - } - public SwingLazyValue(String c, String m) { - this(c, m, null); - } - public SwingLazyValue(String c, Object[] o) { - this(c, null, o); - } - public SwingLazyValue(String c, String m, Object[] o) { - className = c; - methodName = m; - if (o != null) { - args = o.clone(); - } - } - - public Object createValue(final UIDefaults table) { - try { - ReflectUtil.checkPackageAccess(className); - Class<?> c = Class.forName(className, true, null); - if (methodName != null) { - Class<?>[] types = getClassArray(args); - Method m = c.getMethod(methodName, types); - return m.invoke(c, args); - } else { - Class<?>[] types = getClassArray(args); - Constructor<?> constructor = c.getConstructor(types); - return constructor.newInstance(args); - } - } catch (Exception e) { - // Ideally we would throw an exception, unfortunately - // often times there are errors as an initial look and - // feel is loaded before one can be switched. Perhaps a - // flag should be added for debugging, so that if true - // the exception would be thrown. - } - return null; - } - - private Class<?>[] getClassArray(Object[] args) { - Class<?>[] types = null; - if (args!=null) { - types = new Class<?>[args.length]; - for (int i = 0; i< args.length; i++) { - /* PENDING(ges): At present only the primitive types - used are handled correctly; this should eventually - handle all primitive types */ - if (args[i] instanceof java.lang.Integer) { - types[i]=Integer.TYPE; - } else if (args[i] instanceof java.lang.Boolean) { - types[i]=Boolean.TYPE; - } else if (args[i] instanceof javax.swing.plaf.ColorUIResource) { - /* PENDING(ges) Currently the Reflection APIs do not - search superclasses of parameters supplied for - constructor/method lookup. Since we only have - one case where this is needed, we substitute - directly instead of adding a massive amount - of mechanism for this. Eventually this will - probably need to handle the general case as well. - */ - types[i]=java.awt.Color.class; - } else { - types[i]=args[i].getClass(); - } - } - } - return types; - } -} diff --git a/jdk/src/share/classes/sun/tools/jinfo/JInfo.java b/jdk/src/share/classes/sun/tools/jinfo/JInfo.java index 0c1d6a1e677..c1e9d5ffb82 100644 --- a/jdk/src/share/classes/sun/tools/jinfo/JInfo.java +++ b/jdk/src/share/classes/sun/tools/jinfo/JInfo.java @@ -78,8 +78,16 @@ public class JInfo { } if (useSA) { + // SA only supports -flags or -sysprops + if (args[0].startsWith("-")) { + if (!(args[0].equals("-flags") || args[0].equals("-sysprops"))) { + usage(1); + } + } + // invoke SA which does it's own argument parsing runTool(args); + } else { // Now we can parse arguments for the non-SA case String pid = null; diff --git a/jdk/src/share/instrument/InvocationAdapter.c b/jdk/src/share/instrument/InvocationAdapter.c index f3639533dd6..3626647060c 100644 --- a/jdk/src/share/instrument/InvocationAdapter.c +++ b/jdk/src/share/instrument/InvocationAdapter.c @@ -359,7 +359,7 @@ Agent_OnAttach(JavaVM* vm, char *args, void * reserved) { * class name. The manifest is in UTF8 so need to convert to * modified UTF8 (see JNI spec). */ - oldLen = strlen(agentClass); + oldLen = (int)strlen(agentClass); newLen = modifiedUtf8LengthOfUtf8(agentClass, oldLen); if (newLen == oldLen) { agentClass = strdup(agentClass); diff --git a/jdk/src/share/instrument/PathCharsValidator.c b/jdk/src/share/instrument/PathCharsValidator.c index e85ee802746..d1ebc2b1638 100644 --- a/jdk/src/share/instrument/PathCharsValidator.c +++ b/jdk/src/share/instrument/PathCharsValidator.c @@ -46,9 +46,9 @@ static jlong H_PATH; /* Compute the low-order mask for the characters in the given string */ static jlong lowMask(char* s) { - int n = strlen(s); + size_t n = strlen(s); jlong m = 0; - int i; + size_t i; for (i = 0; i < n; i++) { int c = (int)s[i]; if (c < 64) @@ -59,9 +59,9 @@ static jlong lowMask(char* s) { /* Compute the high-order mask for the characters in the given string */ static jlong highMask(char* s) { - int n = strlen(s); + size_t n = strlen(s); jlong m = 0; - int i; + size_t i; for (i = 0; i < n; i++) { int c = (int)s[i]; if ((c >= 64) && (c < 128)) @@ -168,7 +168,7 @@ static void initialize() { * illegal characters. Returns 0 if only validate characters are present. */ int validatePathChars(const char* path) { - int i, n; + size_t i, n; /* initialize on first usage */ if (L_HEX == 0) { diff --git a/jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c b/jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c index dd2a8e7bc36..c7ebaf33871 100644 --- a/jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c +++ b/jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +32,7 @@ #include <jni.h> +#include <jni_util.h> // for malloc #ifdef _ALLBSD_SOURCE #include <stdlib.h> @@ -603,6 +604,7 @@ JNIEXPORT jint JNICALL Java_com_sun_media_sound_DirectAudioDevice_nWrite if (len == 0) return 0; if (info && info->handle) { data = (UINT8*) ((*env)->GetByteArrayElements(env, jData, &didCopy)); + CHECK_NULL_RETURN(data, ret); dataOffset = data; dataOffset += (int) offset; convertedData = dataOffset; @@ -671,6 +673,7 @@ JNIEXPORT jint JNICALL Java_com_sun_media_sound_DirectAudioDevice_nRead } if (info && info->handle) { data = (char*) ((*env)->GetByteArrayElements(env, jData, NULL)); + CHECK_NULL_RETURN(data, ret); dataOffset = data; dataOffset += (int) offset; ret = DAUDIO_Read(info->handle, dataOffset, (int) len); diff --git a/jdk/src/share/native/com/sun/media/sound/DirectAudioDeviceProvider.c b/jdk/src/share/native/com/sun/media/sound/DirectAudioDeviceProvider.c index c1a18be0335..39238a8401d 100644 --- a/jdk/src/share/native/com/sun/media/sound/DirectAudioDeviceProvider.c +++ b/jdk/src/share/native/com/sun/media/sound/DirectAudioDeviceProvider.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,6 +28,7 @@ #include <jni.h> +#include <jni_util.h> #include "SoundDefs.h" #include "DirectAudio.h" #include "Utilities.h" @@ -70,6 +71,11 @@ JNIEXPORT jobject JNICALL Java_com_sun_media_sound_DirectAudioDeviceProvider_nNe jmethodID directAudioDeviceInfoConstructor; DirectAudioDeviceDescription desc; jobject info = NULL; + jstring name; + jstring vendor; + jstring description; + jstring version; + TRACE1("Java_com_sun_media_sound_DirectAudioDeviceProvider_nNewDirectAudioDeviceInfo(%d).\n", mixerIndex); // retrieve class and constructor of DirectAudioDeviceProvider.DirectAudioDeviceInfo @@ -89,14 +95,18 @@ JNIEXPORT jobject JNICALL Java_com_sun_media_sound_DirectAudioDeviceProvider_nNe if (getDirectAudioDeviceDescription(mixerIndex, &desc)) { // create a new DirectAudioDeviceInfo object and return it - info = (*env)->NewObject(env, directAudioDeviceInfoClass, directAudioDeviceInfoConstructor, - mixerIndex, - desc.deviceID, - desc.maxSimulLines, - (*env)->NewStringUTF(env, desc.name), - (*env)->NewStringUTF(env, desc.vendor), - (*env)->NewStringUTF(env, desc.description), - (*env)->NewStringUTF(env, desc.version)); + name = (*env)->NewStringUTF(env, desc.name); + CHECK_NULL_RETURN(name, info); + vendor = (*env)->NewStringUTF(env, desc.vendor); + CHECK_NULL_RETURN(vendor, info); + description = (*env)->NewStringUTF(env, desc.description); + CHECK_NULL_RETURN(description, info); + version = (*env)->NewStringUTF(env, desc.version); + CHECK_NULL_RETURN(version, info); + info = (*env)->NewObject(env, directAudioDeviceInfoClass, + directAudioDeviceInfoConstructor, mixerIndex, + desc.deviceID, desc.maxSimulLines, + name, vendor, description, version); } else { ERROR1("ERROR: getDirectAudioDeviceDescription(%d, desc) returned FALSE!\n", mixerIndex); } diff --git a/jdk/src/share/native/com/sun/media/sound/PortMixer.c b/jdk/src/share/native/com/sun/media/sound/PortMixer.c index bc529449a53..8213598c0af 100644 --- a/jdk/src/share/native/com/sun/media/sound/PortMixer.c +++ b/jdk/src/share/native/com/sun/media/sound/PortMixer.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,6 +28,7 @@ #include <jni.h> +#include <jni_util.h> #include "SoundDefs.h" #include "Ports.h" #include "Utilities.h" @@ -170,6 +171,7 @@ typedef struct tag_ControlCreatorJNI { void* PORT_NewBooleanControl(void* creatorV, void* controlID, char* type) { ControlCreatorJNI* creator = (ControlCreatorJNI*) creatorV; jobject ctrl = NULL; + jstring typeString; #ifdef USE_TRACE if (((UINT_PTR) type) <= CONTROL_TYPE_MAX) { @@ -199,8 +201,11 @@ void* PORT_NewBooleanControl(void* creatorV, void* controlID, char* type) { type = "Select"; } - ctrl = (*creator->env)->NewObject(creator->env, creator->boolCtrlClass, creator->boolCtrlConstructor, - (jlong) (UINT_PTR) controlID, (*creator->env)->NewStringUTF(creator->env, type)); + typeString = (*creator->env)->NewStringUTF(creator->env, type); + CHECK_NULL_RETURN(typeString, (void*) ctrl); + ctrl = (*creator->env)->NewObject(creator->env, creator->boolCtrlClass, + creator->boolCtrlConstructor, + (jlong) (UINT_PTR) controlID, typeString); if (!ctrl) { ERROR0("PORT_NewBooleanControl: ctrl is NULL\n"); } @@ -216,6 +221,7 @@ void* PORT_NewCompoundControl(void* creatorV, char* type, void** controls, int c jobject ctrl = NULL; jobjectArray controlArray; int i; + jstring typeString; TRACE2("PORT_NewCompoundControl: creating '%s' with %d controls\n", type, controlCount); if (!creator->compCtrlClass) { @@ -250,8 +256,11 @@ void* PORT_NewCompoundControl(void* creatorV, char* type, void** controls, int c (*creator->env)->SetObjectArrayElement(creator->env, controlArray, i, (jobject) controls[i]); } TRACE0("PORT_NewCompoundControl: creating compound control\n"); - ctrl = (*creator->env)->NewObject(creator->env, creator->compCtrlClass, creator->compCtrlConstructor, - (*creator->env)->NewStringUTF(creator->env, type), controlArray); + typeString = (*creator->env)->NewStringUTF(creator->env, type); + CHECK_NULL_RETURN(typeString, (void*) ctrl); + ctrl = (*creator->env)->NewObject(creator->env, creator->compCtrlClass, + creator->compCtrlConstructor, + typeString, controlArray); if (!ctrl) { ERROR0("PORT_NewCompoundControl: ctrl is NULL\n"); } @@ -266,6 +275,8 @@ void* PORT_NewFloatControl(void* creatorV, void* controlID, char* type, float min, float max, float precision, char* units) { ControlCreatorJNI* creator = (ControlCreatorJNI*) creatorV; jobject ctrl = NULL; + jstring unitsString; + jstring typeString; #ifdef USE_TRACE if (((UINT_PTR) type) <= CONTROL_TYPE_MAX) { @@ -294,18 +305,24 @@ void* PORT_NewFloatControl(void* creatorV, void* controlID, char* type, return NULL; } } + unitsString = (*creator->env)->NewStringUTF(creator->env, units); + CHECK_NULL_RETURN(unitsString, (void*) ctrl); if (((UINT_PTR) type) <= CONTROL_TYPE_MAX) { // constructor with int parameter TRACE1("PORT_NewFloatControl: calling constructor2 with type %d\n", (int) (UINT_PTR) type); - ctrl = (*creator->env)->NewObject(creator->env, creator->floatCtrlClass, creator->floatCtrlConstructor2, - (jlong) (UINT_PTR) controlID, (jint) (UINT_PTR) type, - min, max, precision, (*creator->env)->NewStringUTF(creator->env, units)); + ctrl = (*creator->env)->NewObject(creator->env, creator->floatCtrlClass, + creator->floatCtrlConstructor2, + (jlong) (UINT_PTR) controlID, (jint) (UINT_PTR) type, + min, max, precision, unitsString); } else { TRACE0("PORT_NewFloatControl: calling constructor1\n"); // constructor with string parameter - ctrl = (*creator->env)->NewObject(creator->env, creator->floatCtrlClass, creator->floatCtrlConstructor1, - (jlong) (UINT_PTR) controlID, (*creator->env)->NewStringUTF(creator->env, type), - min, max, precision, (*creator->env)->NewStringUTF(creator->env, units)); + typeString = (*creator->env)->NewStringUTF(creator->env, type); + CHECK_NULL_RETURN(typeString, (void*) ctrl); + ctrl = (*creator->env)->NewObject(creator->env, creator->floatCtrlClass, + creator->floatCtrlConstructor1, + (jlong) (UINT_PTR) controlID, typeString, + min, max, precision, unitsString); } if (!ctrl) { ERROR0("PORT_NewFloatControl: ctrl is NULL!\n"); diff --git a/jdk/src/share/native/com/sun/media/sound/PortMixerProvider.c b/jdk/src/share/native/com/sun/media/sound/PortMixerProvider.c index 9e94bff7342..ecab09f8e4a 100644 --- a/jdk/src/share/native/com/sun/media/sound/PortMixerProvider.c +++ b/jdk/src/share/native/com/sun/media/sound/PortMixerProvider.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * 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 @@ #include <jni.h> +#include <jni_util.h> #include "SoundDefs.h" #include "Ports.h" #include "Utilities.h" @@ -65,6 +66,11 @@ JNIEXPORT jobject JNICALL Java_com_sun_media_sound_PortMixerProvider_nNewPortMix jmethodID portMixerInfoConstructor; PortMixerDescription desc; jobject info = NULL; + jstring name; + jstring vendor; + jstring description; + jstring version; + TRACE1("Java_com_sun_media_sound_PortMixerProvider_nNewPortMixerInfo(%d).\n", mixerIndex); // retrieve class and constructor of PortMixerProvider.PortMixerInfo @@ -82,11 +88,17 @@ JNIEXPORT jobject JNICALL Java_com_sun_media_sound_PortMixerProvider_nNewPortMix if (getPortMixerDescription(mixerIndex, &desc)) { // create a new PortMixerInfo object and return it - info = (*env)->NewObject(env, portMixerInfoClass, portMixerInfoConstructor, mixerIndex, - (*env)->NewStringUTF(env, desc.name), - (*env)->NewStringUTF(env, desc.vendor), - (*env)->NewStringUTF(env, desc.description), - (*env)->NewStringUTF(env, desc.version)); + name = (*env)->NewStringUTF(env, desc.name); + CHECK_NULL_RETURN(name, info); + vendor = (*env)->NewStringUTF(env, desc.vendor); + CHECK_NULL_RETURN(vendor, info); + description = (*env)->NewStringUTF(env, desc.description); + CHECK_NULL_RETURN(description, info); + version = (*env)->NewStringUTF(env, desc.version); + CHECK_NULL_RETURN(version, info); + info = (*env)->NewObject(env, portMixerInfoClass, + portMixerInfoConstructor, mixerIndex, + name, vendor, description, version); } TRACE0("Java_com_sun_media_sound_PortMixerProvider_nNewPortMixerInfo succeeded.\n"); diff --git a/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c b/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c index 42756c9f0b7..6dc99aba256 100644 --- a/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c +++ b/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -69,17 +69,14 @@ Java_sun_awt_image_BufImgSurfaceData_initIDs } clsICMCD = (*env)->NewWeakGlobalRef(env, cd); - initICMCDmID = (*env)->GetMethodID(env, cd, "<init>", "(J)V"); - pDataID = (*env)->GetFieldID(env, cd, "pData", "J"); - - rgbID = (*env)->GetFieldID(env, icm, "rgb", "[I"); - allGrayID = (*env)->GetFieldID(env, icm, "allgrayopaque", "Z"); - mapSizeID = (*env)->GetFieldID(env, icm, "map_size", "I"); - colorDataID = (*env)->GetFieldID(env, icm, "colorData", - "Lsun/awt/image/BufImgSurfaceData$ICMColorData;"); - if (allGrayID == 0 || rgbID == 0 || mapSizeID == 0 || pDataID == 0|| colorDataID == 0 || initICMCDmID == 0) { - JNU_ThrowInternalError(env, "Could not get field IDs"); - } + JNU_CHECK_EXCEPTION(env); + CHECK_NULL(initICMCDmID = (*env)->GetMethodID(env, cd, "<init>", "(J)V")); + CHECK_NULL(pDataID = (*env)->GetFieldID(env, cd, "pData", "J")); + CHECK_NULL(rgbID = (*env)->GetFieldID(env, icm, "rgb", "[I")); + CHECK_NULL(allGrayID = (*env)->GetFieldID(env, icm, "allgrayopaque", "Z")); + CHECK_NULL(mapSizeID = (*env)->GetFieldID(env, icm, "map_size", "I")); + CHECK_NULL(colorDataID = (*env)->GetFieldID(env, icm, "colorData", + "Lsun/awt/image/BufImgSurfaceData$ICMColorData;")); } /* @@ -120,6 +117,7 @@ Java_sun_awt_image_BufImgSurfaceData_initRaster(JNIEnv *env, jobject bisd, bisdo->sdOps.Unlock = NULL; bisdo->sdOps.Dispose = BufImg_Dispose; bisdo->array = (*env)->NewWeakGlobalRef(env, array); + JNU_CHECK_EXCEPTION(env); bisdo->offset = offset; bisdo->bitoffset = bitoffset; bisdo->scanStr = scanStr; @@ -131,6 +129,7 @@ Java_sun_awt_image_BufImgSurfaceData_initRaster(JNIEnv *env, jobject bisd, } else { jobject lutarray = (*env)->GetObjectField(env, icm, rgbID); bisdo->lutarray = (*env)->NewWeakGlobalRef(env, lutarray); + JNU_CHECK_EXCEPTION(env); bisdo->lutsize = (*env)->GetIntField(env, icm, mapSizeID); bisdo->icm = (*env)->NewWeakGlobalRef(env, icm); } @@ -174,8 +173,8 @@ static jint BufImg_Lock(JNIEnv *env, { bipriv->cData = BufImg_SetupICM(env, bisdo); if (bipriv->cData == NULL) { - JNU_ThrowNullPointerException(env, "Could not initialize " - "inverse tables"); + (*env)->ExceptionClear(env); + JNU_ThrowNullPointerException(env, "Could not initialize inverse tables"); return SD_FAILURE; } } else { @@ -201,6 +200,7 @@ static void BufImg_GetRasInfo(JNIEnv *env, if ((bipriv->lockFlags & (SD_LOCK_RD_WR)) != 0) { bipriv->base = (*env)->GetPrimitiveArrayCritical(env, bisdo->array, NULL); + CHECK_NULL(bipriv->base); } if ((bipriv->lockFlags & (SD_LOCK_LUT)) != 0) { bipriv->lutbase = @@ -291,6 +291,7 @@ static ColorData *BufImg_SetupICM(JNIEnv *env, = (*env)->GetBooleanField(env, bisdo->icm, allGrayID); int *pRgb = (int *) ((*env)->GetPrimitiveArrayCritical(env, bisdo->lutarray, NULL)); + CHECK_NULL_RETURN(pRgb, (ColorData*)NULL); cData->img_clr_tbl = initCubemap(pRgb, bisdo->lutsize, 32); if (allGray == JNI_TRUE) { initInverseGrayLut(pRgb, bisdo->lutsize, cData); @@ -303,6 +304,7 @@ static ColorData *BufImg_SetupICM(JNIEnv *env, if (JNU_IsNull(env, colorData)) { jlong pData = ptr_to_jlong(cData); colorData = (*env)->NewObjectA(env, clsICMCD, initICMCDmID, (jvalue *)&pData); + JNU_CHECK_EXCEPTION_RETURN(env, (ColorData*)NULL); (*env)->SetObjectField(env, bisdo->icm, colorDataID, colorData); } } diff --git a/jdk/src/share/native/sun/awt/image/DataBufferNative.c b/jdk/src/share/native/sun/awt/image/DataBufferNative.c index 2d661a49ded..5ced47fd0f8 100644 --- a/jdk/src/share/native/sun/awt/image/DataBufferNative.c +++ b/jdk/src/share/native/sun/awt/image/DataBufferNative.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -74,6 +74,7 @@ Java_sun_awt_image_DataBufferNative_getElem(JNIEnv *env, jobject dbn, SurfaceDataOps *ops; ops = SurfaceData_GetOps(env, sd); + JNU_CHECK_EXCEPTION_RETURN(env, -1); if (!(pixelPtr = DBN_GetPixelPointer(env, x, y, &lockInfo, ops, SD_LOCK_READ))) @@ -115,6 +116,7 @@ Java_sun_awt_image_DataBufferNative_setElem(JNIEnv *env, jobject dbn, ops = SurfaceData_GetOps(env, sd); + JNU_CHECK_EXCEPTION(env); if (!(pixelPtr = DBN_GetPixelPointer(env, x, y, &lockInfo, ops, SD_LOCK_WRITE))) diff --git a/jdk/src/share/native/sun/awt/image/awt_ImageRep.c b/jdk/src/share/native/sun/awt/image/awt_ImageRep.c index 8552e3149f0..d1f702a2408 100644 --- a/jdk/src/share/native/sun/awt/image/awt_ImageRep.c +++ b/jdk/src/share/native/sun/awt/image/awt_ImageRep.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -97,9 +97,9 @@ static jfieldID s_JsrcLUTtransIndexID; JNIEXPORT void JNICALL Java_sun_awt_image_ImageRepresentation_initIDs(JNIEnv *env, jclass cls) { - s_JnumSrcLUTID = (*env)->GetFieldID(env, cls, "numSrcLUT", "I"); - s_JsrcLUTtransIndexID = (*env)->GetFieldID(env, cls, "srcLUTtransIndex", - "I"); + CHECK_NULL(s_JnumSrcLUTID = (*env)->GetFieldID(env, cls, "numSrcLUT", "I")); + CHECK_NULL(s_JsrcLUTtransIndexID = (*env)->GetFieldID(env, cls, + "srcLUTtransIndex", "I")); } /* @@ -166,6 +166,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls, cOffs = (int *) (*env)->GetPrimitiveArrayCritical(env, joffs, NULL); if (cOffs == NULL) { + (*env)->ExceptionClear(env); JNU_ThrowNullPointerException(env, "Null channel offset array"); return JNI_FALSE; } @@ -190,6 +191,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls, srcLUT = (int *) (*env)->GetPrimitiveArrayCritical(env, jlut, NULL); if (srcLUT == NULL) { + (*env)->ExceptionClear(env); JNU_ThrowNullPointerException(env, "Null IndexColorModel LUT"); return JNI_FALSE; } @@ -198,6 +200,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls, NULL); if (srcData == NULL) { (*env)->ReleasePrimitiveArrayCritical(env, jlut, srcLUT, JNI_ABORT); + (*env)->ExceptionClear(env); JNU_ThrowNullPointerException(env, "Null data array"); return JNI_FALSE; } @@ -206,6 +209,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls, if (dstData == NULL) { (*env)->ReleasePrimitiveArrayCritical(env, jlut, srcLUT, JNI_ABORT); (*env)->ReleasePrimitiveArrayCritical(env, jpix, srcData, JNI_ABORT); + (*env)->ExceptionClear(env); JNU_ThrowNullPointerException(env, "Null tile data array"); return JNI_FALSE; } diff --git a/jdk/src/share/native/sun/awt/image/awt_parseImage.c b/jdk/src/share/native/sun/awt/image/awt_parseImage.c index b77db60686b..9cb03bee4a4 100644 --- a/jdk/src/share/native/sun/awt/image/awt_parseImage.c +++ b/jdk/src/share/native/sun/awt/image/awt_parseImage.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -182,6 +182,11 @@ static int checkChannelOffsets(RasterS_t *rasterP, int dataArrayLength) { int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) { jobject joffs = NULL; /* int status;*/ + jclass singlePixelPackedSampleModelClass = NULL; + jclass integerComponentRasterClass = NULL; + jclass byteComponentRasterClass = NULL; + jclass shortComponentRasterClass = NULL; + jclass bytePackedRasterClass = NULL; if (JNU_IsNull(env, jraster)) { JNU_ThrowNullPointerException(env, "null Raster object"); @@ -226,8 +231,11 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) { rasterP->sppsm.isUsed = 0; + singlePixelPackedSampleModelClass = (*env)->FindClass(env, + "java/awt/image/SinglePixelPackedSampleModel"); + CHECK_NULL_RETURN(singlePixelPackedSampleModelClass, -1); if ((*env)->IsInstanceOf(env, rasterP->jsampleModel, - (*env)->FindClass(env,"java/awt/image/SinglePixelPackedSampleModel"))) { + singlePixelPackedSampleModelClass)) { jobject jmask, joffs, jnbits; rasterP->sppsm.isUsed = 1; @@ -261,8 +269,15 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) { rasterP->jsampleModel, g_SMHeightID); - if ((*env)->IsInstanceOf(env, jraster, - (*env)->FindClass(env, "sun/awt/image/IntegerComponentRaster"))){ + integerComponentRasterClass = (*env)->FindClass(env, "sun/awt/image/IntegerComponentRaster"); + CHECK_NULL_RETURN(integerComponentRasterClass, -1); + byteComponentRasterClass = (*env)->FindClass(env, "sun/awt/image/ByteComponentRaster"); + CHECK_NULL_RETURN(byteComponentRasterClass, -1); + shortComponentRasterClass = (*env)->FindClass(env,"sun/awt/image/ShortComponentRaster"); + CHECK_NULL_RETURN(shortComponentRasterClass, -1); + bytePackedRasterClass = (*env)->FindClass(env, "sun/awt/image/BytePackedRaster"); + CHECK_NULL_RETURN(bytePackedRasterClass, -1); + if ((*env)->IsInstanceOf(env, jraster, integerComponentRasterClass)){ rasterP->jdata = (*env)->GetObjectField(env, jraster, g_ICRdataID); rasterP->dataType = INT_DATA_TYPE; rasterP->dataSize = 4; @@ -273,8 +288,7 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) { rasterP->pixelStride = (*env)->GetIntField(env, jraster, g_ICRpixstrID); joffs = (*env)->GetObjectField(env, jraster, g_ICRdataOffsetsID); } - else if ((*env)->IsInstanceOf(env, jraster, - (*env)->FindClass(env, "sun/awt/image/ByteComponentRaster"))){ + else if ((*env)->IsInstanceOf(env, jraster, byteComponentRasterClass)){ rasterP->jdata = (*env)->GetObjectField(env, jraster, g_BCRdataID); rasterP->dataType = BYTE_DATA_TYPE; rasterP->dataSize = 1; @@ -285,8 +299,7 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) { rasterP->pixelStride = (*env)->GetIntField(env, jraster, g_BCRpixstrID); joffs = (*env)->GetObjectField(env, jraster, g_BCRdataOffsetsID); } - else if ((*env)->IsInstanceOf(env, jraster, - (*env)->FindClass(env, "sun/awt/image/ShortComponentRaster"))){ + else if ((*env)->IsInstanceOf(env, jraster, shortComponentRasterClass)){ rasterP->jdata = (*env)->GetObjectField(env, jraster, g_SCRdataID); rasterP->dataType = SHORT_DATA_TYPE; rasterP->dataSize = 2; @@ -297,8 +310,7 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) { rasterP->pixelStride = (*env)->GetIntField(env, jraster, g_SCRpixstrID); joffs = (*env)->GetObjectField(env, jraster, g_SCRdataOffsetsID); } - else if ((*env)->IsInstanceOf(env, jraster, - (*env)->FindClass(env, "sun/awt/image/BytePackedRaster"))){ + else if ((*env)->IsInstanceOf(env, jraster, bytePackedRasterClass)){ rasterP->rasterType = PACKED_RASTER_TYPE; rasterP->dataType = BYTE_DATA_TYPE; rasterP->dataSize = 1; @@ -397,30 +409,41 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) { } static int getColorModelType(JNIEnv *env, jobject jcmodel) { - int type = UNKNOWN_CM_TYPE; + jclass colorModelClass; - if ((*env)->IsInstanceOf(env, jcmodel, - (*env)->FindClass(env, "java/awt/image/IndexColorModel"))) + colorModelClass = (*env)->FindClass(env, + "java/awt/image/IndexColorModel"); + CHECK_NULL_RETURN(colorModelClass, UNKNOWN_CM_TYPE); + + if ((*env)->IsInstanceOf(env, jcmodel, colorModelClass)) { - type = INDEX_CM_TYPE; - } else if ((*env)->IsInstanceOf(env, jcmodel, - (*env)->FindClass(env, "java/awt/image/PackedColorModel"))) + return INDEX_CM_TYPE; + } + + colorModelClass = (*env)->FindClass(env, + "java/awt/image/PackedColorModel"); + CHECK_NULL_RETURN(colorModelClass, UNKNOWN_CM_TYPE); + if ((*env)->IsInstanceOf(env, jcmodel, colorModelClass)) { - if ((*env)->IsInstanceOf(env, jcmodel, - (*env)->FindClass(env, "java/awt/image/DirectColorModel"))) { - type = DIRECT_CM_TYPE; + colorModelClass = (*env)->FindClass(env, + "java/awt/image/DirectColorModel"); + CHECK_NULL_RETURN(colorModelClass, UNKNOWN_CM_TYPE); + if ((*env)->IsInstanceOf(env, jcmodel, colorModelClass)) { + return DIRECT_CM_TYPE; } else { - type = PACKED_CM_TYPE; + return PACKED_CM_TYPE; } } - else if ((*env)->IsInstanceOf(env, jcmodel, - (*env)->FindClass(env, "java/awt/image/ComponentColorModel"))) + colorModelClass = (*env)->FindClass(env, + "java/awt/image/ComponentColorModel"); + CHECK_NULL_RETURN(colorModelClass, UNKNOWN_CM_TYPE); + if ((*env)->IsInstanceOf(env, jcmodel, colorModelClass)) { - type = COMPONENT_CM_TYPE; + return COMPONENT_CM_TYPE; } - return type; + return UNKNOWN_CM_TYPE; } int awt_parseColorModel (JNIEnv *env, jobject jcmodel, int imageType, @@ -506,12 +529,13 @@ int awt_parseColorModel (JNIEnv *env, jobject jcmodel, int imageType, if (s_jdefCM == NULL) { jobject defCM; jclass jcm = (*env)->FindClass(env, "java/awt/image/ColorModel"); + CHECK_NULL_RETURN(jcm, -1); defCM = (*env)->CallStaticObjectMethod(env, jcm, g_CMgetRGBdefaultMID, NULL); s_jdefCM = (*env)->NewGlobalRef(env, defCM); if (defCM == NULL || s_jdefCM == NULL) { - JNU_ThrowNullPointerException(env, - "Unable to find default CM"); + (*env)->ExceptionClear(env); + JNU_ThrowNullPointerException(env, "Unable to find default CM"); return -1; } } @@ -931,6 +955,7 @@ int awt_getPixels(JNIEnv *env, RasterS_t *rasterP, void *bufferP) { jdata = (*env)->NewIntArray(env, maxSamples); if (JNU_IsNull(env, jdata)) { + (*env)->ExceptionClear(env); JNU_ThrowOutOfMemoryError(env, "Out of Memory"); return -1; } @@ -1028,6 +1053,7 @@ int awt_setPixels(JNIEnv *env, RasterS_t *rasterP, void *bufferP) { jdata = (*env)->NewIntArray(env, maxSamples); if (JNU_IsNull(env, jdata)) { + (*env)->ExceptionClear(env); JNU_ThrowOutOfMemoryError(env, "Out of Memory"); return -1; } diff --git a/jdk/src/share/native/sun/awt/image/gif/gifdecoder.c b/jdk/src/share/native/sun/awt/image/gif/gifdecoder.c index dc464291f92..6730695c51b 100644 --- a/jdk/src/share/native/sun/awt/image/gif/gifdecoder.c +++ b/jdk/src/share/native/sun/awt/image/gif/gifdecoder.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -104,12 +104,12 @@ static jfieldID outCodeID; JNIEXPORT void JNICALL Java_sun_awt_image_GifImageDecoder_initIDs(JNIEnv *env, jclass this) { - readID = (*env)->GetMethodID(env, this, "readBytes", "([BII)I"); - sendID = (*env)->GetMethodID(env, this, "sendPixels", - "(IIII[BLjava/awt/image/ColorModel;)I"); - prefixID = (*env)->GetFieldID(env, this, "prefix", "[S"); - suffixID = (*env)->GetFieldID(env, this, "suffix", "[B"); - outCodeID = (*env)->GetFieldID(env, this, "outCode", "[B"); + CHECK_NULL(readID = (*env)->GetMethodID(env, this, "readBytes", "([BII)I")); + CHECK_NULL(sendID = (*env)->GetMethodID(env, this, "sendPixels", + "(IIII[BLjava/awt/image/ColorModel;)I")); + CHECK_NULL(prefixID = (*env)->GetFieldID(env, this, "prefix", "[S")); + CHECK_NULL(suffixID = (*env)->GetFieldID(env, this, "suffix", "[B")); + CHECK_NULL(outCodeID = (*env)->GetFieldID(env, this, "outCode", "[B")); } JNIEXPORT jboolean JNICALL @@ -291,8 +291,10 @@ Java_sun_awt_image_GifImageDecoder_parseImage(JNIEnv *env, * reads the immediately subsequent code as uncompressed data. */ if (verbose) { + RELEASE_ARRAYS(); fprintf(stdout, "."); fflush(stdout); + GET_ARRAYS(); } /* Note that freeCode is one less than it is supposed to be, @@ -318,10 +320,10 @@ Java_sun_awt_image_GifImageDecoder_parseImage(JNIEnv *env, /* make sure we read the whole block of pixels. */ flushit: while (!blockEnd) { + RELEASE_ARRAYS(); if (verbose) { fprintf(stdout, "flushing %d bytes\n", blockLength); } - RELEASE_ARRAYS(); if ((*env)->CallIntMethod(env, this, readID, blockh, 0, blockLength + 1) != 0 || (*env)->ExceptionOccurred(env)) diff --git a/jdk/src/share/native/sun/awt/image/imageInitIDs.c b/jdk/src/share/native/sun/awt/image/imageInitIDs.c index d41ec32ba90..f7fe035fe1e 100644 --- a/jdk/src/share/native/sun/awt/image/imageInitIDs.c +++ b/jdk/src/share/native/sun/awt/image/imageInitIDs.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,211 +29,139 @@ JNIEXPORT void JNICALL Java_java_awt_image_BufferedImage_initIDs(JNIEnv *env, jclass cls) { - g_BImgRasterID = (*env)->GetFieldID(env, cls, "raster", - "Ljava/awt/image/WritableRaster;"); - g_BImgTypeID = (*env)->GetFieldID(env, cls, "imageType", "I"); - g_BImgCMID = (*env)->GetFieldID(env, cls, "colorModel", - "Ljava/awt/image/ColorModel;"); - g_BImgGetRGBMID = (*env)->GetMethodID(env, cls, "getRGB", - "(IIII[III)[I"); - g_BImgSetRGBMID = (*env)->GetMethodID(env, cls, "setRGB", - "(IIII[III)V"); - if (g_BImgRasterID == NULL || g_BImgTypeID == NULL || g_BImgCMID == NULL - || g_BImgGetRGBMID == NULL) { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } + CHECK_NULL(g_BImgRasterID = (*env)->GetFieldID(env, cls, "raster", + "Ljava/awt/image/WritableRaster;")); + CHECK_NULL(g_BImgTypeID = (*env)->GetFieldID(env, cls, "imageType", "I")); + CHECK_NULL(g_BImgCMID = (*env)->GetFieldID(env, cls, "colorModel", + "Ljava/awt/image/ColorModel;")); + CHECK_NULL(g_BImgGetRGBMID = (*env)->GetMethodID(env, cls, "getRGB", + "(IIII[III)[I")); + CHECK_NULL(g_BImgSetRGBMID = (*env)->GetMethodID(env, cls, "setRGB", + "(IIII[III)V")); } JNIEXPORT void JNICALL Java_java_awt_image_Raster_initIDs(JNIEnv *env, jclass cls) { - g_RasterWidthID = (*env)->GetFieldID(env, cls, "width", "I"); - g_RasterHeightID = (*env)->GetFieldID(env, cls, "height", "I"); - g_RasterNumBandsID = (*env)->GetFieldID(env, cls, "numBands", "I"); - g_RasterGetDataMID = (*env)->GetMethodID(env, cls, "getDataElements", - "(IIIILjava/lang/Object;)Ljava/lang/Object;"); - g_RasterMinXID = (*env)->GetFieldID(env, cls, "minX", "I"); - g_RasterMinYID = (*env)->GetFieldID(env, cls, "minY", "I"); - g_RasterBaseOriginXID = (*env)->GetFieldID(env, cls, - "sampleModelTranslateX", "I"); - g_RasterBaseOriginYID = (*env)->GetFieldID(env, cls, - "sampleModelTranslateY", "I"); - g_RasterSampleModelID = (*env)->GetFieldID(env, cls, - "sampleModel","Ljava/awt/image/SampleModel;"); - g_RasterNumDataElementsID = (*env)->GetFieldID(env, cls, "numDataElements", - "I"); - g_RasterNumBandsID = (*env)->GetFieldID(env, cls, "numBands", "I"); - g_RasterDataBufferID = (*env)->GetFieldID(env, cls, "dataBuffer", - "Ljava/awt/image/DataBuffer;"); - if (g_RasterWidthID == NULL || g_RasterHeightID == NULL - || g_RasterNumBandsID == NULL || g_RasterGetDataMID == NULL - || g_RasterMinXID == NULL || g_RasterMinYID == NULL - || g_RasterBaseOriginXID == NULL || g_RasterBaseOriginYID == NULL - || g_RasterSampleModelID == NULL || g_RasterNumDataElementsID == NULL - || g_RasterNumBandsID == NULL || g_RasterDataBufferID == NULL) - { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } + CHECK_NULL(g_RasterWidthID = (*env)->GetFieldID(env, cls, "width", "I")); + CHECK_NULL(g_RasterHeightID = (*env)->GetFieldID(env, cls, "height", "I")); + CHECK_NULL(g_RasterNumBandsID = (*env)->GetFieldID(env, cls, "numBands", "I")); + CHECK_NULL(g_RasterGetDataMID = (*env)->GetMethodID(env, cls, "getDataElements", + "(IIIILjava/lang/Object;)Ljava/lang/Object;")); + CHECK_NULL(g_RasterMinXID = (*env)->GetFieldID(env, cls, "minX", "I")); + CHECK_NULL(g_RasterMinYID = (*env)->GetFieldID(env, cls, "minY", "I")); + CHECK_NULL(g_RasterBaseOriginXID = (*env)->GetFieldID(env, cls, + "sampleModelTranslateX", "I")); + CHECK_NULL(g_RasterBaseOriginYID = (*env)->GetFieldID(env, cls, + "sampleModelTranslateY", "I")); + CHECK_NULL(g_RasterSampleModelID = (*env)->GetFieldID(env, cls, + "sampleModel","Ljava/awt/image/SampleModel;")); + CHECK_NULL(g_RasterNumDataElementsID = (*env)->GetFieldID(env, cls, + "numDataElements", "I")); + CHECK_NULL(g_RasterNumBandsID = (*env)->GetFieldID(env, cls, "numBands", "I")); + CHECK_NULL(g_RasterDataBufferID = (*env)->GetFieldID(env, cls, "dataBuffer", + "Ljava/awt/image/DataBuffer;")); } JNIEXPORT void JNICALL Java_sun_awt_image_ByteComponentRaster_initIDs(JNIEnv *env, jclass cls) { - g_BCRdataID = (*env)->GetFieldID(env, cls, "data", "[B"); - g_BCRscanstrID = (*env)->GetFieldID(env, cls, "scanlineStride", "I"); - g_BCRpixstrID = (*env)->GetFieldID(env, cls, "pixelStride", "I"); - g_BCRbandoffsID = (*env)->GetFieldID(env, cls, "bandOffset", "I"); - g_BCRdataOffsetsID = (*env)->GetFieldID(env, cls, "dataOffsets", "[I"); - g_BCRtypeID = (*env)->GetFieldID(env, cls, "type", "I"); - if (g_BCRdataID == NULL || g_BCRscanstrID == NULL || - g_BCRpixstrID == NULL || g_BCRbandoffsID == NULL || - g_BCRtypeID == NULL) - { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } + CHECK_NULL(g_BCRdataID = (*env)->GetFieldID(env, cls, "data", "[B")); + CHECK_NULL(g_BCRscanstrID = (*env)->GetFieldID(env, cls, "scanlineStride", "I")); + CHECK_NULL(g_BCRpixstrID = (*env)->GetFieldID(env, cls, "pixelStride", "I")); + CHECK_NULL(g_BCRbandoffsID = (*env)->GetFieldID(env, cls, "bandOffset", "I")); + CHECK_NULL(g_BCRdataOffsetsID = (*env)->GetFieldID(env, cls, "dataOffsets", "[I")); + CHECK_NULL(g_BCRtypeID = (*env)->GetFieldID(env, cls, "type", "I")); } JNIEXPORT void JNICALL Java_sun_awt_image_BytePackedRaster_initIDs(JNIEnv *env, jclass cls) { - g_BPRdataID = (*env)->GetFieldID(env, cls, "data", "[B"); - g_BPRscanstrID = (*env)->GetFieldID(env, cls, "scanlineStride", "I"); - g_BPRpixstrID = (*env)->GetFieldID(env, cls, "pixelBitStride", "I"); - g_BPRtypeID = (*env)->GetFieldID(env, cls, "type", "I"); - g_BPRdataBitOffsetID = (*env)->GetFieldID(env, cls, "dataBitOffset", "I"); - if (g_BPRdataID == NULL || g_BPRscanstrID == NULL || - g_BPRpixstrID == NULL || g_BPRtypeID == NULL) - { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } + CHECK_NULL(g_BPRdataID = (*env)->GetFieldID(env, cls, "data", "[B")); + CHECK_NULL(g_BPRscanstrID = (*env)->GetFieldID(env, cls, "scanlineStride", "I")); + CHECK_NULL(g_BPRpixstrID = (*env)->GetFieldID(env, cls, "pixelBitStride", "I")); + CHECK_NULL(g_BPRtypeID = (*env)->GetFieldID(env, cls, "type", "I")); + CHECK_NULL(g_BPRdataBitOffsetID = (*env)->GetFieldID(env, cls, "dataBitOffset", "I")); } JNIEXPORT void JNICALL Java_sun_awt_image_ShortComponentRaster_initIDs(JNIEnv *env, jclass cls) { - g_SCRdataID = (*env)->GetFieldID(env, cls, "data", "[S"); - g_SCRscanstrID = (*env)->GetFieldID(env, cls, "scanlineStride", "I"); - g_SCRpixstrID = (*env)->GetFieldID(env, cls, "pixelStride", "I"); - g_SCRbandoffsID = (*env)->GetFieldID(env, cls, "bandOffset", "I"); - g_SCRdataOffsetsID = (*env)->GetFieldID(env, cls, "dataOffsets", "[I"); - g_SCRtypeID = (*env)->GetFieldID(env, cls, "type", "I"); - if (g_SCRdataID == NULL || g_SCRscanstrID == NULL || - g_SCRpixstrID == NULL || g_SCRbandoffsID == NULL || - g_SCRdataOffsetsID == NULL || g_SCRtypeID == NULL) - { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } + CHECK_NULL(g_SCRdataID = (*env)->GetFieldID(env, cls, "data", "[S")); + CHECK_NULL(g_SCRscanstrID = (*env)->GetFieldID(env, cls, "scanlineStride", "I")); + CHECK_NULL(g_SCRpixstrID = (*env)->GetFieldID(env, cls, "pixelStride", "I")); + CHECK_NULL(g_SCRbandoffsID = (*env)->GetFieldID(env, cls, "bandOffset", "I")); + CHECK_NULL(g_SCRdataOffsetsID = (*env)->GetFieldID(env, cls, "dataOffsets", "[I")); + CHECK_NULL(g_SCRtypeID = (*env)->GetFieldID(env, cls, "type", "I")); } JNIEXPORT void JNICALL Java_sun_awt_image_IntegerComponentRaster_initIDs(JNIEnv *env, jclass cls) { - g_ICRdataID = (*env)->GetFieldID(env, cls, "data", "[I"); - g_ICRscanstrID = (*env)->GetFieldID(env, cls, "scanlineStride", "I"); - g_ICRpixstrID = (*env)->GetFieldID(env, cls, "pixelStride", "I"); - g_ICRdataOffsetsID = (*env)->GetFieldID(env, cls, "dataOffsets", "[I"); - g_ICRbandoffsID = (*env)->GetFieldID(env, cls, "bandOffset", "I"); - g_ICRputDataMID = (*env)->GetMethodID(env, cls, "setDataElements", - "(IIIILjava/lang/Object;)V"); - g_ICRtypeID = (*env)->GetFieldID(env, cls, "type", "I"); - if (g_ICRdataID == NULL || g_ICRscanstrID == NULL - || g_ICRpixstrID == NULL || g_ICRbandoffsID == NULL - || g_ICRputDataMID == NULL || g_ICRdataOffsetsID == NULL || g_ICRtypeID == NULL) - { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } + CHECK_NULL(g_ICRdataID = (*env)->GetFieldID(env, cls, "data", "[I")); + CHECK_NULL(g_ICRscanstrID = (*env)->GetFieldID(env, cls, "scanlineStride", "I")); + CHECK_NULL(g_ICRpixstrID = (*env)->GetFieldID(env, cls, "pixelStride", "I")); + CHECK_NULL(g_ICRdataOffsetsID = (*env)->GetFieldID(env, cls, "dataOffsets", "[I")); + CHECK_NULL(g_ICRbandoffsID = (*env)->GetFieldID(env, cls, "bandOffset", "I")); + CHECK_NULL(g_ICRputDataMID = (*env)->GetMethodID(env, cls, "setDataElements", + "(IIIILjava/lang/Object;)V")); + CHECK_NULL(g_ICRtypeID = (*env)->GetFieldID(env, cls, "type", "I")); } JNIEXPORT void JNICALL -Java_java_awt_image_SinglePixelPackedSampleModel_initIDs(JNIEnv *env, - jclass cls) { - g_SPPSMmaskArrID = (*env)->GetFieldID(env, cls, "bitMasks", "[I"); - g_SPPSMmaskOffID = (*env)->GetFieldID(env, cls, "bitOffsets", "[I"); - g_SPPSMnBitsID = (*env)->GetFieldID(env, cls, "bitSizes", "[I"); - g_SPPSMmaxBitID = (*env)->GetFieldID(env, cls, "maxBitSize", "I"); - - if (g_SPPSMmaskArrID == NULL || g_SPPSMmaskOffID == NULL || - g_SPPSMnBitsID == NULL || g_SPPSMmaxBitID == NULL) { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } +Java_java_awt_image_SinglePixelPackedSampleModel_initIDs(JNIEnv *env, jclass cls) { + CHECK_NULL(g_SPPSMmaskArrID = (*env)->GetFieldID(env, cls, "bitMasks", "[I")); + CHECK_NULL(g_SPPSMmaskOffID = (*env)->GetFieldID(env, cls, "bitOffsets", "[I")); + CHECK_NULL(g_SPPSMnBitsID = (*env)->GetFieldID(env, cls, "bitSizes", "[I")); + CHECK_NULL(g_SPPSMmaxBitID = (*env)->GetFieldID(env, cls, "maxBitSize", "I")); } JNIEXPORT void JNICALL Java_java_awt_image_ColorModel_initIDs(JNIEnv *env, jclass cls) { - g_CMpDataID = (*env)->GetFieldID (env, cls, "pData", "J"); - g_CMnBitsID = (*env)->GetFieldID(env, cls, "nBits", "[I"); - g_CMcspaceID = (*env)->GetFieldID(env, cls, "colorSpace", - "Ljava/awt/color/ColorSpace;"); - g_CMnumComponentsID = (*env)->GetFieldID(env, cls, "numComponents", "I"); - g_CMsuppAlphaID = (*env)->GetFieldID(env, cls, "supportsAlpha", "Z"); - g_CMisAlphaPreID = (*env)->GetFieldID(env, cls, "isAlphaPremultiplied", - "Z"); - g_CMtransparencyID = (*env)->GetFieldID(env, cls, "transparency", "I"); - g_CMgetRGBMID = (*env)->GetMethodID(env, cls, "getRGB", - "(Ljava/lang/Object;)I"); - g_CMcsTypeID = (*env)->GetFieldID(env, cls, "colorSpaceType", "I"); - g_CMis_sRGBID = (*env)->GetFieldID(env, cls, "is_sRGB", "Z"); - g_CMgetRGBdefaultMID = (*env)->GetStaticMethodID(env, cls, + CHECK_NULL(g_CMpDataID = (*env)->GetFieldID (env, cls, "pData", "J")); + CHECK_NULL(g_CMnBitsID = (*env)->GetFieldID(env, cls, "nBits", "[I")); + CHECK_NULL(g_CMcspaceID = (*env)->GetFieldID(env, cls, "colorSpace", + "Ljava/awt/color/ColorSpace;")); + CHECK_NULL(g_CMnumComponentsID = (*env)->GetFieldID(env, cls, "numComponents", "I")); + CHECK_NULL(g_CMsuppAlphaID = (*env)->GetFieldID(env, cls, "supportsAlpha", "Z")); + CHECK_NULL(g_CMisAlphaPreID = (*env)->GetFieldID(env, cls, "isAlphaPremultiplied", + "Z")); + CHECK_NULL(g_CMtransparencyID = (*env)->GetFieldID(env, cls, "transparency", "I")); + CHECK_NULL(g_CMgetRGBMID = (*env)->GetMethodID(env, cls, "getRGB", + "(Ljava/lang/Object;)I")); + CHECK_NULL(g_CMcsTypeID = (*env)->GetFieldID(env, cls, "colorSpaceType", "I")); + CHECK_NULL(g_CMis_sRGBID = (*env)->GetFieldID(env, cls, "is_sRGB", "Z")); + CHECK_NULL(g_CMgetRGBdefaultMID = (*env)->GetStaticMethodID(env, cls, "getRGBdefault", - "()Ljava/awt/image/ColorModel;"); - if (g_CMnBitsID == NULL || g_CMcspaceID == NULL - || g_CMnumComponentsID == NULL || g_CMsuppAlphaID == NULL - || g_CMisAlphaPreID == NULL || g_CMtransparencyID == NULL - || g_CMgetRGBMID == NULL || g_CMgetRGBMID == NULL - || g_CMis_sRGBID == NULL || g_CMgetRGBdefaultMID == NULL - || g_CMpDataID == NULL) - { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } + "()Ljava/awt/image/ColorModel;")); } JNIEXPORT void JNICALL Java_java_awt_image_IndexColorModel_initIDs(JNIEnv *env, jclass cls) { - g_ICMtransIdxID = (*env)->GetFieldID(env, cls, "transparent_index", "I"); - g_ICMmapSizeID = (*env)->GetFieldID(env, cls, "map_size", "I"); - g_ICMrgbID = (*env)->GetFieldID(env, cls, "rgb", "[I"); - if (g_ICMtransIdxID == NULL || g_ICMmapSizeID == NULL - || g_ICMrgbID == NULL) { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } + CHECK_NULL(g_ICMtransIdxID = (*env)->GetFieldID(env, cls, "transparent_index", "I")); + CHECK_NULL(g_ICMmapSizeID = (*env)->GetFieldID(env, cls, "map_size", "I")); + CHECK_NULL(g_ICMrgbID = (*env)->GetFieldID(env, cls, "rgb", "[I")); } JNIEXPORT void JNICALL Java_java_awt_image_SampleModel_initIDs(JNIEnv *env, jclass cls) { - g_SMWidthID = (*env)->GetFieldID(env, cls, "width","I"); - g_SMHeightID = (*env)->GetFieldID(env, cls, "height","I"); - g_SMGetPixelsMID = (*env)->GetMethodID(env, cls, "getPixels", - "(IIII[ILjava/awt/image/DataBuffer;)[I"); - g_SMSetPixelsMID = (*env)->GetMethodID(env, cls, "setPixels", - "(IIII[ILjava/awt/image/DataBuffer;)V"); - if (g_SMWidthID == NULL || g_SMHeightID == NULL || g_SMGetPixelsMID == NULL - || g_SMSetPixelsMID == NULL) { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } + CHECK_NULL(g_SMWidthID = (*env)->GetFieldID(env, cls, "width","I")); + CHECK_NULL(g_SMHeightID = (*env)->GetFieldID(env, cls, "height","I")); + CHECK_NULL(g_SMGetPixelsMID = (*env)->GetMethodID(env, cls, "getPixels", + "(IIII[ILjava/awt/image/DataBuffer;)[I")); + CHECK_NULL(g_SMSetPixelsMID = (*env)->GetMethodID(env, cls, "setPixels", + "(IIII[ILjava/awt/image/DataBuffer;)V")); } JNIEXPORT void JNICALL Java_java_awt_image_ComponentSampleModel_initIDs(JNIEnv *env, jclass cls) { - g_CSMPixStrideID = (*env)->GetFieldID(env, cls, "pixelStride", "I"); - g_CSMScanStrideID = (*env)->GetFieldID(env, cls, "scanlineStride", "I"); - g_CSMBandOffsetsID = (*env)->GetFieldID(env, cls, "bandOffsets", "[I"); - if (g_CSMPixStrideID == NULL || g_CSMScanStrideID == NULL || - g_CSMBandOffsetsID == NULL) { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } + CHECK_NULL(g_CSMPixStrideID = (*env)->GetFieldID(env, cls, "pixelStride", "I")); + CHECK_NULL(g_CSMScanStrideID = (*env)->GetFieldID(env, cls, "scanlineStride", "I")); + CHECK_NULL(g_CSMBandOffsetsID = (*env)->GetFieldID(env, cls, "bandOffsets", "[I")); } JNIEXPORT void JNICALL Java_java_awt_image_Kernel_initIDs(JNIEnv *env, jclass cls) { - g_KernelWidthID = (*env)->GetFieldID(env, cls, "width", "I"); - g_KernelHeightID = (*env)->GetFieldID(env, cls, "height", "I"); - g_KernelDataID = (*env)->GetFieldID(env, cls, "data", "[F"); - if (g_KernelWidthID == NULL || g_KernelHeightID == NULL - || g_KernelDataID == NULL) - { - JNU_ThrowNullPointerException(env, "Unable to grab field ids"); - } + CHECK_NULL(g_KernelWidthID = (*env)->GetFieldID(env, cls, "width", "I")); + CHECK_NULL(g_KernelHeightID = (*env)->GetFieldID(env, cls, "height", "I")); + CHECK_NULL(g_KernelDataID = (*env)->GetFieldID(env, cls, "data", "[F")); } JNIEXPORT void JNICALL Java_java_awt_image_DataBufferInt_initIDs(JNIEnv *env, jclass cls) { - g_DataBufferIntPdataID = (*env)->GetFieldID(env, cls, "pData", "J"); - if (g_DataBufferIntPdataID == NULL) { - JNU_ThrowNullPointerException(env, "Unable to grab DataBufferInt.pData"); - return; - } + CHECK_NULL(g_DataBufferIntPdataID = (*env)->GetFieldID(env, cls, "pData", "J")); } diff --git a/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c b/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c index 2d93a850ff8..3698bc49b2e 100644 --- a/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c +++ b/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +153,7 @@ static int initStreamBuffer(JNIEnv *env, streamBufferPtr sb) { /* Initialize a new buffer */ jbyteArray hInputBuffer = (*env)->NewByteArray(env, STREAMBUF_SIZE); if (hInputBuffer == NULL) { + (*env)->ExceptionClear(env); JNU_ThrowByName( env, "java/lang/OutOfMemoryError", "Initializing Reader"); @@ -557,6 +558,7 @@ sun_jpeg_output_message (j_common_ptr cinfo) // Create a new java string from the message string = (*env)->NewStringUTF(env, buffer); + CHECK_NULL(string); theObject = data->imageIOobj; @@ -591,12 +593,7 @@ static void imageio_set_stream(JNIEnv *env, /* Now we need a new weak global reference for the I/O provider */ if (io != NULL) { // Fix for 4411955 sb->ioRef = (*env)->NewWeakGlobalRef(env, io); - if (sb->ioRef == NULL) { - JNU_ThrowByName(env, - "java/lang/OutOfMemoryError", - "Setting I/O provider"); - return; - } + CHECK_NULL(sb->ioRef); } /* And finally reset state */ @@ -693,6 +690,7 @@ static int setQTables(JNIEnv *env, } for (i = 0; i < qlen; i++) { table = (*env)->GetObjectArrayElement(env, qtables, i); + CHECK_NULL_RETURN(table, 0); qdata = (*env)->GetObjectField(env, table, JPEGQTable_tableID); qdataBody = (*env)->GetPrimitiveArrayCritical(env, qdata, NULL); @@ -724,7 +722,7 @@ static int setQTables(JNIEnv *env, return qlen; } -static void setHuffTable(JNIEnv *env, +static boolean setHuffTable(JNIEnv *env, JHUFF_TBL *huff_ptr, jobject table) { @@ -742,6 +740,8 @@ static void setHuffTable(JNIEnv *env, hlensBody = (*env)->GetShortArrayElements(env, huffLens, NULL); + CHECK_NULL_RETURN(hlensBody, FALSE); + if (hlensLen > 16) { /* Ignore extra elements of bits array. Only 16 elements can be stored. 0-th element is not used. (see jpeglib.h, line 107) */ @@ -762,6 +762,7 @@ static void setHuffTable(JNIEnv *env, hvalsBody = (*env)->GetShortArrayElements(env, huffValues, NULL); + CHECK_NULL_RETURN(hvalsBody, FALSE); if (hvalsLen > 256) { /* Ignore extra elements of hufval array. Only 256 elements @@ -775,6 +776,7 @@ static void setHuffTable(JNIEnv *env, huffValues, hvalsBody, JNI_ABORT); + return TRUE; } static int setHTables(JNIEnv *env, @@ -810,7 +812,9 @@ static int setHTables(JNIEnv *env, huff_ptr = comp->dc_huff_tbl_ptrs[i]; } table = (*env)->GetObjectArrayElement(env, DCHuffmanTables, i); - setHuffTable(env, huff_ptr, table); + if (table == NULL || !setHuffTable(env, huff_ptr, table)) { + return 0; + } huff_ptr->sent_table = !write; } hlen = (*env)->GetArrayLength(env, ACHuffmanTables); @@ -835,7 +839,9 @@ static int setHTables(JNIEnv *env, huff_ptr = comp->ac_huff_tbl_ptrs[i]; } table = (*env)->GetObjectArrayElement(env, ACHuffmanTables, i); - setHuffTable(env, huff_ptr, table); + if(table == NULL || !setHuffTable(env, huff_ptr, table)) { + return 0; + } huff_ptr->sent_table = !write; } return hlen; @@ -1405,57 +1411,57 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initReaderIDs jclass qTableClass, jclass huffClass) { - JPEGImageReader_readInputDataID = (*env)->GetMethodID(env, + CHECK_NULL(JPEGImageReader_readInputDataID = (*env)->GetMethodID(env, cls, "readInputData", - "([BII)I"); - JPEGImageReader_skipInputBytesID = (*env)->GetMethodID(env, + "([BII)I")); + CHECK_NULL(JPEGImageReader_skipInputBytesID = (*env)->GetMethodID(env, cls, "skipInputBytes", - "(J)J"); - JPEGImageReader_warningOccurredID = (*env)->GetMethodID(env, + "(J)J")); + CHECK_NULL(JPEGImageReader_warningOccurredID = (*env)->GetMethodID(env, cls, "warningOccurred", - "(I)V"); - JPEGImageReader_warningWithMessageID = + "(I)V")); + CHECK_NULL(JPEGImageReader_warningWithMessageID = (*env)->GetMethodID(env, cls, "warningWithMessage", - "(Ljava/lang/String;)V"); - JPEGImageReader_setImageDataID = (*env)->GetMethodID(env, + "(Ljava/lang/String;)V")); + CHECK_NULL(JPEGImageReader_setImageDataID = (*env)->GetMethodID(env, cls, "setImageData", - "(IIIII[B)V"); - JPEGImageReader_acceptPixelsID = (*env)->GetMethodID(env, + "(IIIII[B)V")); + CHECK_NULL(JPEGImageReader_acceptPixelsID = (*env)->GetMethodID(env, cls, "acceptPixels", - "(IZ)V"); - JPEGImageReader_passStartedID = (*env)->GetMethodID(env, + "(IZ)V")); + CHECK_NULL(JPEGImageReader_passStartedID = (*env)->GetMethodID(env, cls, "passStarted", - "(I)V"); - JPEGImageReader_passCompleteID = (*env)->GetMethodID(env, + "(I)V")); + CHECK_NULL(JPEGImageReader_passCompleteID = (*env)->GetMethodID(env, cls, "passComplete", - "()V"); - JPEGImageReader_pushBackID = (*env)->GetMethodID(env, + "()V")); + CHECK_NULL(JPEGImageReader_pushBackID = (*env)->GetMethodID(env, cls, "pushBack", - "(I)V"); - JPEGQTable_tableID = (*env)->GetFieldID(env, + "(I)V")); + CHECK_NULL(JPEGQTable_tableID = (*env)->GetFieldID(env, qTableClass, "qTable", - "[I"); + "[I")); - JPEGHuffmanTable_lengthsID = (*env)->GetFieldID(env, + CHECK_NULL(JPEGHuffmanTable_lengthsID = (*env)->GetFieldID(env, huffClass, "lengths", - "[S"); + "[S")); - JPEGHuffmanTable_valuesID = (*env)->GetFieldID(env, + CHECK_NULL(JPEGHuffmanTable_valuesID = (*env)->GetFieldID(env, huffClass, "values", - "[S"); + "[S")); } JNIEXPORT jlong JNICALL @@ -1536,9 +1542,9 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initJPEGImageReader /* set up the association to persist for future calls */ ret = initImageioData(env, (j_common_ptr) cinfo, this); if (ret == NULL) { - JNU_ThrowByName( env, - "java/lang/OutOfMemoryError", - "Initializing Reader"); + (*env)->ExceptionClear(env); + JNU_ThrowByName(env, "java/lang/OutOfMemoryError", + "Initializing Reader"); imageio_dispose((j_common_ptr)cinfo); return 0; } @@ -1633,6 +1639,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImageHeader #endif if (GET_ARRAYS(env, data, &src->next_input_byte) == NOT_OK) { + (*env)->ExceptionClear(env); JNU_ThrowByName(env, "javax/imageio/IIOException", "Array pin failed"); @@ -1896,6 +1903,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage body = (*env)->GetIntArrayElements(env, srcBands, NULL); if (body == NULL) { + (*env)->ExceptionClear(env); JNU_ThrowByName( env, "java/lang/OutOfMemoryError", "Initializing Read"); @@ -1954,6 +1962,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage } if (GET_ARRAYS(env, data, &src->next_input_byte) == NOT_OK) { + (*env)->ExceptionClear(env); JNU_ThrowByName(env, "javax/imageio/IIOException", "Array pin failed"); @@ -2399,44 +2408,39 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initWriterIDs jclass qTableClass, jclass huffClass) { - JPEGImageWriter_writeOutputDataID = (*env)->GetMethodID(env, + CHECK_NULL(JPEGImageWriter_writeOutputDataID = (*env)->GetMethodID(env, cls, "writeOutputData", - "([BII)V"); - - JPEGImageWriter_warningOccurredID = (*env)->GetMethodID(env, + "([BII)V")); + CHECK_NULL(JPEGImageWriter_warningOccurredID = (*env)->GetMethodID(env, cls, "warningOccurred", - "(I)V"); - JPEGImageWriter_warningWithMessageID = - (*env)->GetMethodID(env, - cls, - "warningWithMessage", - "(Ljava/lang/String;)V"); - - JPEGImageWriter_writeMetadataID = (*env)->GetMethodID(env, + "(I)V")); + CHECK_NULL(JPEGImageWriter_warningWithMessageID = + (*env)->GetMethodID(env, + cls, + "warningWithMessage", + "(Ljava/lang/String;)V")); + CHECK_NULL(JPEGImageWriter_writeMetadataID = (*env)->GetMethodID(env, cls, "writeMetadata", - "()V"); - JPEGImageWriter_grabPixelsID = (*env)->GetMethodID(env, + "()V")); + CHECK_NULL(JPEGImageWriter_grabPixelsID = (*env)->GetMethodID(env, cls, "grabPixels", - "(I)V"); - - JPEGQTable_tableID = (*env)->GetFieldID(env, + "(I)V")); + CHECK_NULL(JPEGQTable_tableID = (*env)->GetFieldID(env, qTableClass, "qTable", - "[I"); - - JPEGHuffmanTable_lengthsID = (*env)->GetFieldID(env, + "[I")); + CHECK_NULL(JPEGHuffmanTable_lengthsID = (*env)->GetFieldID(env, huffClass, "lengths", - "[S"); - - JPEGHuffmanTable_valuesID = (*env)->GetFieldID(env, + "[S")); + CHECK_NULL(JPEGHuffmanTable_valuesID = (*env)->GetFieldID(env, huffClass, "values", - "[S"); + "[S")); } JNIEXPORT jlong JNICALL @@ -2512,6 +2516,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initJPEGImageWriter /* set up the association to persist for future calls */ ret = initImageioData(env, (j_common_ptr) cinfo, this); if (ret == NULL) { + (*env)->ExceptionClear(env); JNU_ThrowByName( env, "java/lang/OutOfMemoryError", "Initializing Writer"); @@ -2589,6 +2594,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeTables if (GET_ARRAYS(env, data, (const JOCTET **)(&dest->next_output_byte)) == NOT_OK) { + (*env)->ExceptionClear(env); JNU_ThrowByName(env, "javax/imageio/IIOException", "Array pin failed"); @@ -2660,6 +2666,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage imageIODataPtr data = (imageIODataPtr)jlong_to_ptr(ptr); j_compress_ptr cinfo; UINT8** scale = NULL; + boolean success = TRUE; /* verify the inputs */ @@ -2704,13 +2711,14 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage } bandSize = (*env)->GetIntArrayElements(env, bandSizes, NULL); + CHECK_NULL_RETURN(bandSize, JNI_FALSE); for (i = 0; i < numBands; i++) { if (bandSize[i] <= 0 || bandSize[i] > JPEG_BAND_SIZE) { (*env)->ReleaseIntArrayElements(env, bandSizes, bandSize, JNI_ABORT); JNU_ThrowByName(env, "javax/imageio/IIOException", "Invalid Image"); - return JNI_FALSE;; + return JNI_FALSE; } } @@ -2821,30 +2829,30 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage vfactors = (*env)->GetIntArrayElements(env, VsamplingFactors, NULL); qsels = (*env)->GetIntArrayElements(env, QtableSelectors, NULL); - if ((ids == NULL) || - (hfactors == NULL) || (vfactors == NULL) || - (qsels == NULL)) { - JNU_ThrowByName( env, - "java/lang/OutOfMemoryError", - "Writing JPEG"); - return JNI_FALSE; + if (ids && hfactors && vfactors && qsels) { + for (i = 0; i < numBands; i++) { + cinfo->comp_info[i].component_id = ids[i]; + cinfo->comp_info[i].h_samp_factor = hfactors[i]; + cinfo->comp_info[i].v_samp_factor = vfactors[i]; + cinfo->comp_info[i].quant_tbl_no = qsels[i]; + } + } else { + success = FALSE; } - for (i = 0; i < numBands; i++) { - cinfo->comp_info[i].component_id = ids[i]; - cinfo->comp_info[i].h_samp_factor = hfactors[i]; - cinfo->comp_info[i].v_samp_factor = vfactors[i]; - cinfo->comp_info[i].quant_tbl_no = qsels[i]; + if (ids) { + (*env)->ReleaseIntArrayElements(env, componentIds, ids, JNI_ABORT); } - - (*env)->ReleaseIntArrayElements(env, componentIds, - ids, JNI_ABORT); - (*env)->ReleaseIntArrayElements(env, HsamplingFactors, - hfactors, JNI_ABORT); - (*env)->ReleaseIntArrayElements(env, VsamplingFactors, - vfactors, JNI_ABORT); - (*env)->ReleaseIntArrayElements(env, QtableSelectors, - qsels, JNI_ABORT); + if (hfactors) { + (*env)->ReleaseIntArrayElements(env, HsamplingFactors, hfactors, JNI_ABORT); + } + if (vfactors) { + (*env)->ReleaseIntArrayElements(env, VsamplingFactors, vfactors, JNI_ABORT); + } + if (qsels) { + (*env)->ReleaseIntArrayElements(env, QtableSelectors, qsels, JNI_ABORT); + } + if (!success) return data->abortFlag; jpeg_suppress_tables(cinfo, TRUE); // Disable writing any current @@ -2861,6 +2869,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage if (GET_ARRAYS(env, data, (const JOCTET **)(&dest->next_output_byte)) == NOT_OK) { + (*env)->ExceptionClear(env); JNU_ThrowByName(env, "javax/imageio/IIOException", "Array pin failed"); @@ -2895,6 +2904,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage cinfo->scan_info = cinfo->script_space; scanptr = (int *) cinfo->script_space; scanData = (*env)->GetIntArrayElements(env, scanInfo, NULL); + CHECK_NULL_RETURN(scanData, data->abortFlag); // number of jints per scan is 9 // We avoid a memcpy to handle different size ints for (i = 0; i < numScans*9; i++) { diff --git a/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c b/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c index ad7e8211867..1ccfc390b24 100644 --- a/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c +++ b/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -462,14 +462,14 @@ JNIEXPORT void JNICALL Java_sun_awt_image_JPEGImageDecoder_initIDs(JNIEnv *env, jclass cls, jclass InputStreamClass) { - sendHeaderInfoID = (*env)->GetMethodID(env, cls, "sendHeaderInfo", - "(IIZZZ)Z"); - sendPixelsByteID = (*env)->GetMethodID(env, cls, "sendPixels", "([BI)Z"); - sendPixelsIntID = (*env)->GetMethodID(env, cls, "sendPixels", "([II)Z"); - InputStream_readID = (*env)->GetMethodID(env, InputStreamClass, - "read", "([BII)I"); - InputStream_availableID = (*env)->GetMethodID(env, InputStreamClass, - "available", "()I"); + CHECK_NULL(sendHeaderInfoID = (*env)->GetMethodID(env, cls, "sendHeaderInfo", + "(IIZZZ)Z")); + CHECK_NULL(sendPixelsByteID = (*env)->GetMethodID(env, cls, "sendPixels", "([BI)Z")); + CHECK_NULL(sendPixelsIntID = (*env)->GetMethodID(env, cls, "sendPixels", "([II)Z")); + CHECK_NULL(InputStream_readID = (*env)->GetMethodID(env, InputStreamClass, + "read", "([BII)I")); + CHECK_NULL(InputStream_availableID = (*env)->GetMethodID(env, InputStreamClass, + "available", "()I")); } diff --git a/jdk/src/share/native/sun/font/FontInstanceAdapter.cpp b/jdk/src/share/native/sun/font/FontInstanceAdapter.cpp index f2f553c0cf3..8c8c47593fb 100644 --- a/jdk/src/share/native/sun/font/FontInstanceAdapter.cpp +++ b/jdk/src/share/native/sun/font/FontInstanceAdapter.cpp @@ -222,9 +222,15 @@ void FontInstanceAdapter::getKerningAdjustment(LEPoint &adjustment) const jobject pt = env->NewObject(sunFontIDs.pt2DFloatClass, sunFontIDs.pt2DFloatCtr, adjustment.fX, adjustment.fY); - env->CallObjectMethod(fontStrike, sunFontIDs.adjustPointMID, pt); - adjustment.fX = env->GetFloatField(pt, sunFontIDs.xFID); - adjustment.fY = env->GetFloatField(pt, sunFontIDs.yFID); + if (pt == NULL) { + env->ExceptionClear(); + adjustment.fX = 0.0f; + adjustment.fY = 0.0f; + } else { + env->CallObjectMethod(fontStrike, sunFontIDs.adjustPointMID, pt); + adjustment.fX = env->GetFloatField(pt, sunFontIDs.xFID); + adjustment.fY = env->GetFloatField(pt, sunFontIDs.yFID); + } } void FontInstanceAdapter::getWideGlyphAdvance(le_uint32 glyph, LEPoint &advance) const diff --git a/jdk/src/share/native/sun/font/layout/SunLayoutEngine.cpp b/jdk/src/share/native/sun/font/layout/SunLayoutEngine.cpp index 20618cd9511..a9aea06683e 100644 --- a/jdk/src/share/native/sun/font/layout/SunLayoutEngine.cpp +++ b/jdk/src/share/native/sun/font/layout/SunLayoutEngine.cpp @@ -56,50 +56,13 @@ static jfieldID gvdIndicesFID = 0; JNIEXPORT void JNICALL Java_sun_font_SunLayoutEngine_initGVIDs (JNIEnv *env, jclass cls) { - gvdClass = env->FindClass(gvdClassName); - if (!gvdClass) { - JNU_ThrowClassNotFoundException(env, gvdClassName); - return; - } - gvdClass = (jclass)env->NewGlobalRef(gvdClass); - if (!gvdClass) { - JNU_ThrowInternalError(env, "could not create global ref"); - return; - } - gvdCountFID = env->GetFieldID(gvdClass, "_count", "I"); - if (!gvdCountFID) { - gvdClass = 0; - JNU_ThrowNoSuchFieldException(env, "_count"); - return; - } - - gvdFlagsFID = env->GetFieldID(gvdClass, "_flags", "I"); - if (!gvdFlagsFID) { - gvdClass = 0; - JNU_ThrowNoSuchFieldException(env, "_flags"); - return; - } - - gvdGlyphsFID = env->GetFieldID(gvdClass, "_glyphs", "[I"); - if (!gvdGlyphsFID) { - gvdClass = 0; - JNU_ThrowNoSuchFieldException(env, "_glyphs"); - return; - } - - gvdPositionsFID = env->GetFieldID(gvdClass, "_positions", "[F"); - if (!gvdPositionsFID) { - gvdClass = 0; - JNU_ThrowNoSuchFieldException(env, "_positions"); - return; - } - + CHECK_NULL(gvdClass = env->FindClass(gvdClassName)); + CHECK_NULL(gvdClass = (jclass)env->NewGlobalRef(gvdClass)); + CHECK_NULL(gvdCountFID = env->GetFieldID(gvdClass, "_count", "I")); + CHECK_NULL(gvdFlagsFID = env->GetFieldID(gvdClass, "_flags", "I")); + CHECK_NULL(gvdGlyphsFID = env->GetFieldID(gvdClass, "_glyphs", "[I")); + CHECK_NULL(gvdPositionsFID = env->GetFieldID(gvdClass, "_positions", "[F")); gvdIndicesFID = env->GetFieldID(gvdClass, "_indices", "[I"); - if (!gvdIndicesFID) { - gvdClass = 0; - JNU_ThrowNoSuchFieldException(env, "_indices"); - return; - } } int putGV(JNIEnv* env, jint gmask, jint baseIndex, jobject gvdata, const LayoutEngine* engine, int glyphCount) { @@ -195,7 +158,7 @@ JNIEXPORT void JNICALL Java_sun_font_SunLayoutEngine_nativeLayout jchar* chars = buffer; if (len > 256) { size_t size = len * sizeof(jchar); - if (size / sizeof(jchar) != len) { + if (size / sizeof(jchar) != (size_t)len) { return; } chars = (jchar*)malloc(size); @@ -220,8 +183,10 @@ JNIEXPORT void JNICALL Java_sun_font_SunLayoutEngine_nativeLayout env->SetIntField(gvdata, gvdCountFID, -1); // flag failure } else { if (putGV(env, gmask, baseIndex, gvdata, engine, glyphCount)) { - // !!! hmmm, could use current value in positions array of GVData... - putFloat(env, pt, x, y); + if (!(env->ExceptionCheck())) { + // !!! hmmm, could use current value in positions array of GVData... + putFloat(env, pt, x, y); + } } } diff --git a/jdk/src/share/native/sun/font/sunFont.c b/jdk/src/share/native/sun/font/sunFont.c index 50a62e46f19..0695088899b 100644 --- a/jdk/src/share/native/sun/font/sunFont.c +++ b/jdk/src/share/native/sun/font/sunFont.c @@ -27,6 +27,7 @@ #include "string.h" #include "gdefs.h" #include "jlong.h" +#include "jni_util.h" #include "sunfontids.h" #include "fontscalerdefs.h" #include "sun_font_SunFontManager.h" @@ -81,100 +82,106 @@ static void initFontIDs(JNIEnv *env) { if (initialisedFontIDs) { return; } - tmpClass = (*env)->FindClass(env, "sun/font/TrueTypeFont"); - sunFontIDs.ttReadBlockMID = + CHECK_NULL(tmpClass = (*env)->FindClass(env, "sun/font/TrueTypeFont")); + CHECK_NULL(sunFontIDs.ttReadBlockMID = (*env)->GetMethodID(env, tmpClass, "readBlock", - "(Ljava/nio/ByteBuffer;II)I"); - sunFontIDs.ttReadBytesMID = - (*env)->GetMethodID(env, tmpClass, "readBytes", "(II)[B"); + "(Ljava/nio/ByteBuffer;II)I")); + CHECK_NULL(sunFontIDs.ttReadBytesMID = + (*env)->GetMethodID(env, tmpClass, "readBytes", "(II)[B")); - tmpClass = (*env)->FindClass(env, "sun/font/Type1Font"); - sunFontIDs.readFileMID = + CHECK_NULL(tmpClass = (*env)->FindClass(env, "sun/font/Type1Font")); + CHECK_NULL(sunFontIDs.readFileMID = (*env)->GetMethodID(env, tmpClass, - "readFile", "(Ljava/nio/ByteBuffer;)V"); + "readFile", "(Ljava/nio/ByteBuffer;)V")); - tmpClass = (*env)->FindClass(env, "java/awt/geom/Point2D$Float"); + CHECK_NULL(tmpClass = + (*env)->FindClass(env, "java/awt/geom/Point2D$Float")); sunFontIDs.pt2DFloatClass = (jclass)(*env)->NewGlobalRef(env, tmpClass); - sunFontIDs.pt2DFloatCtr = - (*env)->GetMethodID(env, sunFontIDs.pt2DFloatClass, "<init>","(FF)V"); + CHECK_NULL(sunFontIDs.pt2DFloatCtr = + (*env)->GetMethodID(env, sunFontIDs.pt2DFloatClass, "<init>","(FF)V")); - sunFontIDs.xFID = - (*env)->GetFieldID(env, sunFontIDs.pt2DFloatClass, "x", "F"); - sunFontIDs.yFID = - (*env)->GetFieldID(env, sunFontIDs.pt2DFloatClass, "y", "F"); + CHECK_NULL(sunFontIDs.xFID = + (*env)->GetFieldID(env, sunFontIDs.pt2DFloatClass, "x", "F")); + CHECK_NULL(sunFontIDs.yFID = + (*env)->GetFieldID(env, sunFontIDs.pt2DFloatClass, "y", "F")); - tmpClass = (*env)->FindClass(env, "sun/font/StrikeMetrics"); - sunFontIDs.strikeMetricsClass=(jclass)(*env)->NewGlobalRef(env, tmpClass); + CHECK_NULL(tmpClass = (*env)->FindClass(env, "sun/font/StrikeMetrics")); + CHECK_NULL(sunFontIDs.strikeMetricsClass = + (jclass)(*env)->NewGlobalRef(env, tmpClass)); - sunFontIDs.strikeMetricsCtr = + CHECK_NULL(sunFontIDs.strikeMetricsCtr = (*env)->GetMethodID(env, sunFontIDs.strikeMetricsClass, - "<init>", "(FFFFFFFFFF)V"); + "<init>", "(FFFFFFFFFF)V")); - tmpClass = (*env)->FindClass(env, "java/awt/geom/Rectangle2D$Float"); + CHECK_NULL(tmpClass = + (*env)->FindClass(env, "java/awt/geom/Rectangle2D$Float")); sunFontIDs.rect2DFloatClass = (jclass)(*env)->NewGlobalRef(env, tmpClass); - sunFontIDs.rect2DFloatCtr = - (*env)->GetMethodID(env, sunFontIDs.rect2DFloatClass, "<init>", "()V"); - sunFontIDs.rect2DFloatCtr4 = - (*env)->GetMethodID(env, sunFontIDs.rect2DFloatClass, - "<init>", "(FFFF)V"); - sunFontIDs.rectF2DX = - (*env)->GetFieldID(env, sunFontIDs.rect2DFloatClass, "x", "F"); - sunFontIDs.rectF2DY = - (*env)->GetFieldID(env, sunFontIDs.rect2DFloatClass, "y", "F"); - sunFontIDs.rectF2DWidth = - (*env)->GetFieldID(env, sunFontIDs.rect2DFloatClass, "width", "F"); - sunFontIDs.rectF2DHeight = - (*env)->GetFieldID(env, sunFontIDs.rect2DFloatClass, "height", "F"); + CHECK_NULL(sunFontIDs.rect2DFloatCtr = + (*env)->GetMethodID(env, sunFontIDs.rect2DFloatClass, "<init>", "()V")); + CHECK_NULL(sunFontIDs.rect2DFloatCtr4 = + (*env)->GetMethodID(env, sunFontIDs.rect2DFloatClass, + "<init>", "(FFFF)V")); + CHECK_NULL(sunFontIDs.rectF2DX = + (*env)->GetFieldID(env, sunFontIDs.rect2DFloatClass, "x", "F")); + CHECK_NULL(sunFontIDs.rectF2DY = + (*env)->GetFieldID(env, sunFontIDs.rect2DFloatClass, "y", "F")); + CHECK_NULL(sunFontIDs.rectF2DWidth = + (*env)->GetFieldID(env, sunFontIDs.rect2DFloatClass, "width", "F")); + CHECK_NULL(sunFontIDs.rectF2DHeight = + (*env)->GetFieldID(env, sunFontIDs.rect2DFloatClass, "height", "F")); - tmpClass = (*env)->FindClass(env, "java/awt/geom/GeneralPath"); + CHECK_NULL(tmpClass = (*env)->FindClass(env, "java/awt/geom/GeneralPath")); sunFontIDs.gpClass = (jclass)(*env)->NewGlobalRef(env, tmpClass); - sunFontIDs.gpCtr = - (*env)->GetMethodID(env, sunFontIDs.gpClass, "<init>", "(I[BI[FI)V"); - sunFontIDs.gpCtrEmpty = - (*env)->GetMethodID(env, sunFontIDs.gpClass, "<init>", "()V"); + CHECK_NULL(sunFontIDs.gpCtr = + (*env)->GetMethodID(env, sunFontIDs.gpClass, "<init>", "(I[BI[FI)V")); + CHECK_NULL(sunFontIDs.gpCtrEmpty = + (*env)->GetMethodID(env, sunFontIDs.gpClass, "<init>", "()V")); - tmpClass = (*env)->FindClass(env, "sun/font/Font2D"); - sunFontIDs.f2dCharToGlyphMID = - (*env)->GetMethodID(env, tmpClass, "charToGlyph", "(I)I"); - sunFontIDs.getMapperMID = + CHECK_NULL(tmpClass = (*env)->FindClass(env, "sun/font/Font2D")); + CHECK_NULL(sunFontIDs.f2dCharToGlyphMID = + (*env)->GetMethodID(env, tmpClass, "charToGlyph", "(I)I")); + CHECK_NULL(sunFontIDs.getMapperMID = (*env)->GetMethodID(env, tmpClass, "getMapper", - "()Lsun/font/CharToGlyphMapper;"); - sunFontIDs.getTableBytesMID = - (*env)->GetMethodID(env, tmpClass, "getTableBytes", "(I)[B"); - sunFontIDs.canDisplayMID = - (*env)->GetMethodID(env, tmpClass, "canDisplay", "(C)Z"); + "()Lsun/font/CharToGlyphMapper;")); + CHECK_NULL(sunFontIDs.getTableBytesMID = + (*env)->GetMethodID(env, tmpClass, "getTableBytes", "(I)[B")); + CHECK_NULL(sunFontIDs.canDisplayMID = + (*env)->GetMethodID(env, tmpClass, "canDisplay", "(C)Z")); - tmpClass = (*env)->FindClass(env, "sun/font/CharToGlyphMapper"); - sunFontIDs.charToGlyphMID = - (*env)->GetMethodID(env, tmpClass, "charToGlyph", "(I)I"); + CHECK_NULL(tmpClass = (*env)->FindClass(env, "sun/font/CharToGlyphMapper")); + CHECK_NULL(sunFontIDs.charToGlyphMID = + (*env)->GetMethodID(env, tmpClass, "charToGlyph", "(I)I")); - tmpClass = (*env)->FindClass(env, "sun/font/PhysicalStrike"); - sunFontIDs.getGlyphMetricsMID = + CHECK_NULL(tmpClass = (*env)->FindClass(env, "sun/font/PhysicalStrike")); + CHECK_NULL(sunFontIDs.getGlyphMetricsMID = (*env)->GetMethodID(env, tmpClass, "getGlyphMetrics", - "(I)Ljava/awt/geom/Point2D$Float;"); - sunFontIDs.getGlyphPointMID = + "(I)Ljava/awt/geom/Point2D$Float;")); + CHECK_NULL(sunFontIDs.getGlyphPointMID = (*env)->GetMethodID(env, tmpClass, "getGlyphPoint", - "(II)Ljava/awt/geom/Point2D$Float;"); - sunFontIDs.adjustPointMID = + "(II)Ljava/awt/geom/Point2D$Float;")); + CHECK_NULL(sunFontIDs.adjustPointMID = (*env)->GetMethodID(env, tmpClass, "adjustPoint", - "(Ljava/awt/geom/Point2D$Float;)V"); - sunFontIDs.pScalerContextFID = - (*env)->GetFieldID(env, tmpClass, "pScalerContext", "J"); + "(Ljava/awt/geom/Point2D$Float;)V")); + CHECK_NULL(sunFontIDs.pScalerContextFID = + (*env)->GetFieldID(env, tmpClass, "pScalerContext", "J")); - tmpClass = (*env)->FindClass(env, "sun/font/GlyphList"); - sunFontIDs.glyphListX = (*env)->GetFieldID(env, tmpClass, "x", "F"); - sunFontIDs.glyphListY = (*env)->GetFieldID(env, tmpClass, "y", "F"); - sunFontIDs.glyphListLen = (*env)->GetFieldID(env, tmpClass, "len", "I"); - sunFontIDs.glyphImages = - (*env)->GetFieldID(env, tmpClass, "images", "[J"); - sunFontIDs.glyphListUsePos = - (*env)->GetFieldID(env, tmpClass, "usePositions", "Z"); - sunFontIDs.glyphListPos = - (*env)->GetFieldID(env, tmpClass, "positions", "[F"); - sunFontIDs.lcdRGBOrder = - (*env)->GetFieldID(env, tmpClass, "lcdRGBOrder", "Z"); - sunFontIDs.lcdSubPixPos = - (*env)->GetFieldID(env, tmpClass, "lcdSubPixPos", "Z"); + CHECK_NULL(tmpClass = (*env)->FindClass(env, "sun/font/GlyphList")); + CHECK_NULL(sunFontIDs.glyphListX = + (*env)->GetFieldID(env, tmpClass, "x", "F")); + CHECK_NULL(sunFontIDs.glyphListY = + (*env)->GetFieldID(env, tmpClass, "y", "F")); + CHECK_NULL(sunFontIDs.glyphListLen = + (*env)->GetFieldID(env, tmpClass, "len", "I")); + CHECK_NULL(sunFontIDs.glyphImages = + (*env)->GetFieldID(env, tmpClass, "images", "[J")); + CHECK_NULL(sunFontIDs.glyphListUsePos = + (*env)->GetFieldID(env, tmpClass, "usePositions", "Z")); + CHECK_NULL(sunFontIDs.glyphListPos = + (*env)->GetFieldID(env, tmpClass, "positions", "[F")); + CHECK_NULL(sunFontIDs.lcdRGBOrder = + (*env)->GetFieldID(env, tmpClass, "lcdRGBOrder", "Z")); + CHECK_NULL(sunFontIDs.lcdSubPixPos = + (*env)->GetFieldID(env, tmpClass, "lcdSubPixPos", "Z")); initLCDGammaTables(); diff --git a/jdk/src/share/native/sun/security/jgss/wrapper/GSSLibStub.c b/jdk/src/share/native/sun/security/jgss/wrapper/GSSLibStub.c index 15fd41794e3..e14036b899c 100644 --- a/jdk/src/share/native/sun/security/jgss/wrapper/GSSLibStub.c +++ b/jdk/src/share/native/sun/security/jgss/wrapper/GSSLibStub.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * 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,20 +28,6 @@ #include "NativeFunc.h" #include "jlong.h" #include <jni.h> -#include "jni_util.h" - -/* Throws a Java Exception by name */ - -void throwByName(JNIEnv *env, const char *name, const char *msg) { - jclass cls = (*env)->FindClass(env, name); - - if (cls != 0) /* Otherwise an exception has already been thrown */ - (*env)->ThrowNew(env, cls, msg); -} - -void throwOutOfMemoryError(JNIEnv *env, const char *message) { - throwByName(env, "java/lang/OutOfMemoryError", message); -} /* Constants for indicating what type of info is needed for inquiries */ const int TYPE_CRED_NAME = 10; @@ -51,29 +37,32 @@ const int TYPE_CRED_USAGE = 12; /* * Class: sun_security_jgss_wrapper_GSSLibStub * Method: init - * Signature: (Ljava/lang/String;)Z + * Signature: (Ljava/lang/String;Z)Z */ JNIEXPORT jboolean JNICALL Java_sun_security_jgss_wrapper_GSSLibStub_init(JNIEnv *env, jclass jcls, - jstring jlibName) { + jstring jlibName, + jboolean jDebug) { const char *libName; char *error = NULL; + if (!jDebug) { + JGSS_DEBUG = 0; + } else { + JGSS_DEBUG = 1; + } + if (jlibName == NULL) { - debug(env, "[GSSLibStub_init] GSS lib name is NULL"); + TRACE0("[GSSLibStub_init] GSS lib name is NULL"); return JNI_FALSE; } libName = (*env)->GetStringUTFChars(env, jlibName, NULL); if (libName == NULL) { - if (!(*env)->ExceptionCheck(env)) { - throwOutOfMemoryError(env, NULL); - } return JNI_FALSE; } - sprintf(debugBuf, "[GSSLibStub_init] libName=%s", libName); - debug(env, debugBuf); + TRACE1("[GSSLibStub_init] libName=%s", libName); /* initialize global function table */ error = loadNative(libName); @@ -82,7 +71,7 @@ Java_sun_security_jgss_wrapper_GSSLibStub_init(JNIEnv *env, if (error == NULL) { return JNI_TRUE; } else { - debug(env, error); + TRACE0(error); return JNI_FALSE; } } @@ -100,136 +89,139 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getMechPtr(JNIEnv *env, unsigned int i, len; jbyte* bytes; jthrowable gssEx; - jboolean found; + int found; if (jbytes != NULL) { - found = JNI_FALSE; + found = 0; len = (unsigned int)((*env)->GetArrayLength(env, jbytes) - 2); bytes = (*env)->GetByteArrayElements(env, jbytes, NULL); - if (bytes != NULL) { - for (i = 0; i < ftab->mechs->count; i++) { - cOid = &(ftab->mechs->elements[i]); - if (len == cOid->length && - (memcmp(cOid->elements, (bytes + 2), len) == 0)) { - // Found a match - found = JNI_TRUE; - break; - } - } - (*env)->ReleaseByteArrayElements(env, jbytes, bytes, 0); - } else { - JNU_CHECK_EXCEPTION_RETURN(env, jlong_zero); + if (bytes == NULL) { + return ptr_to_jlong(NULL); } - if (found != JNI_TRUE) { + for (i = 0; i < ftab->mechs->count; i++) { + cOid = &(ftab->mechs->elements[i]); + if (len == cOid->length && + (memcmp(cOid->elements, (bytes + 2), len) == 0)) { + // Found a match + found = 1; + break; + } + } + (*env)->ReleaseByteArrayElements(env, jbytes, bytes, 0); + + if (found != 1) { checkStatus(env, NULL, GSS_S_BAD_MECH, 0, "[GSSLibStub_getMechPtr]"); return ptr_to_jlong(NULL); - } else return ptr_to_jlong(cOid); - } else return ptr_to_jlong(GSS_C_NO_OID); -} - - -/* - * Utility routine which creates a gss_channel_bindings_t structure - * using the specified org.ietf.jgss.ChannelBinding object. - */ -gss_channel_bindings_t getGSSCB(JNIEnv *env, jobject jcb) { - gss_channel_bindings_t cb; - jobject jinetAddr; - jbyteArray value; - - if (jcb == NULL) { - return GSS_C_NO_CHANNEL_BINDINGS; - } - - cb = malloc(sizeof(struct gss_channel_bindings_struct)); - - if (cb == NULL) { - throwOutOfMemoryError(env,NULL); - return NULL; - } - - /* set up initiator address */ - jinetAddr = - (*env)->CallObjectMethod(env, jcb, - MID_ChannelBinding_getInitiatorAddr); - if (jinetAddr != NULL) { - cb->initiator_addrtype = GSS_C_AF_INET; - value = (*env)->CallObjectMethod(env, jinetAddr, - MID_InetAddress_getAddr); - if (!initGSSBuffer(env, value, &(cb->initiator_address))) { - return NULL; + } else { + return ptr_to_jlong(cOid); } } else { - cb->initiator_addrtype = GSS_C_AF_NULLADDR; - cb->initiator_address.length = 0; - cb->initiator_address.value = NULL; + return ptr_to_jlong(GSS_C_NO_OID); } - /* set up acceptor address */ - jinetAddr = - (*env)->CallObjectMethod(env, jcb, - MID_ChannelBinding_getAcceptorAddr); - if (jinetAddr != NULL) { - cb->acceptor_addrtype = GSS_C_AF_INET; - value = (*env)->CallObjectMethod(env, jinetAddr, - MID_InetAddress_getAddr); - if (!initGSSBuffer(env, value, &(cb->acceptor_address))) { - return NULL; - } - } else { - cb->acceptor_addrtype = GSS_C_AF_NULLADDR; - cb->acceptor_address.length = 0; - cb->acceptor_address.value = NULL; - } - /* set up application data */ - value = (*env)->CallObjectMethod(env, jcb, - MID_ChannelBinding_getAppData); - if (value != NULL) { - if (!initGSSBuffer(env, value, &(cb->application_data))) { - return NULL; - } - } else { - cb->application_data.length = 0; - cb->application_data.value = NULL; - } - return cb; } /* * Utility routine which releases the specified gss_channel_bindings_t * structure. */ -void releaseGSSCB(JNIEnv *env, jobject jcb, gss_channel_bindings_t cb) { +void deleteGSSCB(gss_channel_bindings_t cb) { jobject jinetAddr; jbyteArray value; if (cb == GSS_C_NO_CHANNEL_BINDINGS) return; + /* release initiator address */ if (cb->initiator_addrtype != GSS_C_AF_NULLADDR) { - jinetAddr = - (*env)->CallObjectMethod(env, jcb, - MID_ChannelBinding_getInitiatorAddr); - value = (*env)->CallObjectMethod(env, jinetAddr, - MID_InetAddress_getAddr); - resetGSSBuffer(env, value, &(cb->initiator_address)); + resetGSSBuffer(&(cb->initiator_address)); } /* release acceptor address */ if (cb->acceptor_addrtype != GSS_C_AF_NULLADDR) { - jinetAddr = - (*env)->CallObjectMethod(env, jcb, - MID_ChannelBinding_getAcceptorAddr); - value = (*env)->CallObjectMethod(env, jinetAddr, - MID_InetAddress_getAddr); - resetGSSBuffer(env, value, &(cb->acceptor_address)); + resetGSSBuffer(&(cb->acceptor_address)); } /* release application data */ if (cb->application_data.length != 0) { - value = (*env)->CallObjectMethod(env, jcb, - MID_ChannelBinding_getAppData); - resetGSSBuffer(env, value, &(cb->application_data)); + resetGSSBuffer(&(cb->application_data)); } free(cb); } +/* + * Utility routine which creates a gss_channel_bindings_t structure + * using the specified org.ietf.jgss.ChannelBinding object. + * NOTE: must call deleteGSSCB() to free up the resources. + */ +gss_channel_bindings_t newGSSCB(JNIEnv *env, jobject jcb) { + gss_channel_bindings_t cb; + jobject jinetAddr; + jbyteArray value; + int i; + + if (jcb == NULL) { + return GSS_C_NO_CHANNEL_BINDINGS; + } + + cb = malloc(sizeof(struct gss_channel_bindings_struct)); + if (cb == NULL) { + throwOutOfMemoryError(env,NULL); + return NULL; + } + + // initialize addrtype in CB first + cb->initiator_addrtype = GSS_C_AF_NULLADDR; + cb->acceptor_addrtype = GSS_C_AF_NULLADDR; + + /* set up initiator address */ + jinetAddr = (*env)->CallObjectMethod(env, jcb, + MID_ChannelBinding_getInitiatorAddr); + if ((*env)->ExceptionCheck(env)) { + goto cleanup; + } + if (jinetAddr != NULL) { + value = (*env)->CallObjectMethod(env, jinetAddr, + MID_InetAddress_getAddr); + if ((*env)->ExceptionCheck(env)) { + goto cleanup; + } + cb->initiator_addrtype = GSS_C_AF_INET; + initGSSBuffer(env, value, &(cb->initiator_address)); + if ((*env)->ExceptionCheck(env)) { + goto cleanup; + } + } + /* set up acceptor address */ + jinetAddr = (*env)->CallObjectMethod(env, jcb, + MID_ChannelBinding_getAcceptorAddr); + if ((*env)->ExceptionCheck(env)) { + goto cleanup; + } + if (jinetAddr != NULL) { + value = (*env)->CallObjectMethod(env, jinetAddr, + MID_InetAddress_getAddr); + if ((*env)->ExceptionCheck(env)) { + goto cleanup; + } + cb->acceptor_addrtype = GSS_C_AF_INET; + initGSSBuffer(env, value, &(cb->acceptor_address)); + if ((*env)->ExceptionCheck(env)) { + goto cleanup; + } + } + /* set up application data */ + value = (*env)->CallObjectMethod(env, jcb, + MID_ChannelBinding_getAppData); + if ((*env)->ExceptionCheck(env)) { + goto cleanup; + } + initGSSBuffer(env, value, &(cb->application_data)); + if ((*env)->ExceptionCheck(env)) { + goto cleanup; + } + return cb; +cleanup: + deleteGSSCB(cb); + return NULL; +} + /* * Utility routine for storing the supplementary information * into the specified org.ietf.jgss.MessageProp object. @@ -245,7 +237,9 @@ void setSupplementaryInfo(JNIEnv *env, jobject jstub, jobject jprop, isUnseq = ((suppInfo & GSS_S_UNSEQ_TOKEN) != 0); hasGap = ((suppInfo & GSS_S_GAP_TOKEN) != 0); minorMsg = getMinorMessage(env, jstub, minor); - CHECK_NULL(minorMsg); + if ((*env)->ExceptionCheck(env)) { + return; + } (*env)->CallVoidMethod(env, jprop, MID_MessageProp_setSupplementaryStates, isDuplicate, isOld, isUnseq, hasGap, minor, minorMsg); @@ -281,22 +275,26 @@ Java_sun_security_jgss_wrapper_GSSLibStub_inquireNamesForMech(JNIEnv *env, jobjectArray result; if (ftab->inquireNamesForMech != NULL) { + mech = (gss_OID)jlong_to_ptr((*env)->GetLongField(env, jobj, FID_GSSLibStub_pMech)); + nameTypes = GSS_C_NO_OID_SET; - mech = (gss_OID)jlong_to_ptr((*env)->GetLongField(env, jobj, FID_GSSLibStub_pMech)); - nameTypes = GSS_C_NO_OID_SET; + /* gss_inquire_names_for_mech(...) => N/A */ + major = (*ftab->inquireNamesForMech)(&minor, mech, &nameTypes); - /* gss_inquire_names_for_mech(...) => N/A */ - major = (*ftab->inquireNamesForMech)(&minor, mech, &nameTypes); + /* release intermediate buffers before checking status */ + result = getJavaOIDArray(env, nameTypes); + deleteGSSOIDSet(nameTypes); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } - result = getJavaOIDArray(env, nameTypes); - - /* release intermediate buffers */ - deleteGSSOIDSet(nameTypes); - - CHECK_NULL_RETURN(result, NULL); - checkStatus(env, jobj, major, minor, "[GSSLibStub_inquireNamesForMech]"); - return result; - } else return NULL; + checkStatus(env, jobj, major, minor, "[GSSLibStub_inquireNamesForMech]"); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + return result; + } + return NULL; } /* @@ -314,8 +312,7 @@ Java_sun_security_jgss_wrapper_GSSLibStub_releaseName(JNIEnv *env, nameHdl = (gss_name_t) jlong_to_ptr(pName); - sprintf(debugBuf, "[GSSLibStub_releaseName] %ld", (long) pName); - debug(env, debugBuf); + TRACE1("[GSSLibStub_releaseName] %ld", (long) pName); if (nameHdl != GSS_C_NO_NAME) { /* gss_release_name(...) => GSS_S_BAD_NAME */ @@ -341,15 +338,16 @@ Java_sun_security_jgss_wrapper_GSSLibStub_importName(JNIEnv *env, gss_name_t nameHdl; nameHdl = GSS_C_NO_NAME; - debug(env, "[GSSLibStub_importName]"); + TRACE0("[GSSLibStub_importName]"); - if (!initGSSBuffer(env, jnameVal, &nameVal)) { - return jlong_zero; + initGSSBuffer(env, jnameVal, &nameVal); + if ((*env)->ExceptionCheck(env)) { + return jlong_zero; } + nameType = newGSSOID(env, jnameType); if ((*env)->ExceptionCheck(env)) { - deleteGSSOID(nameType); - resetGSSBuffer(env, jnameVal, &nameVal); + resetGSSBuffer(&nameVal); return jlong_zero; } @@ -357,14 +355,16 @@ Java_sun_security_jgss_wrapper_GSSLibStub_importName(JNIEnv *env, GSS_S_BAD_MECH */ major = (*ftab->importName)(&minor, &nameVal, nameType, &nameHdl); - sprintf(debugBuf, "[GSSLibStub_importName] %ld", (long) nameHdl); - debug(env, debugBuf); + TRACE1("[GSSLibStub_importName] %ld", (long) nameHdl); /* release intermediate buffers */ deleteGSSOID(nameType); - resetGSSBuffer(env, jnameVal, &nameVal); + resetGSSBuffer(&nameVal); checkStatus(env, jobj, major, minor, "[GSSLibStub_importName]"); + if ((*env)->ExceptionCheck(env)) { + return jlong_zero; + } return ptr_to_jlong(nameHdl); } @@ -388,9 +388,7 @@ Java_sun_security_jgss_wrapper_GSSLibStub_compareName(JNIEnv *env, nameHdl1 = (gss_name_t) jlong_to_ptr(pName1); nameHdl2 = (gss_name_t) jlong_to_ptr(pName2); - sprintf(debugBuf, "[GSSLibStub_compareName] %ld %ld", (long) pName1, - (long) pName2); - debug(env, debugBuf); + TRACE2("[GSSLibStub_compareName] %ld %ld", (long)pName1, (long)pName2); if ((nameHdl1 != GSS_C_NO_NAME) && (nameHdl2 != GSS_C_NO_NAME)) { @@ -417,8 +415,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_canonicalizeName(JNIEnv *env, gss_OID mech; nameHdl = (gss_name_t) jlong_to_ptr(pName); - sprintf(debugBuf, "[GSSLibStub_canonicalizeName] %ld", (long) pName); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_canonicalizeName] %ld", (long) pName); if (nameHdl != GSS_C_NO_NAME) { mech = (gss_OID) jlong_to_ptr((*env)->GetLongField(env, jobj, FID_GSSLibStub_pMech)); @@ -428,16 +426,15 @@ Java_sun_security_jgss_wrapper_GSSLibStub_canonicalizeName(JNIEnv *env, GSS_S_BAD_NAME, GSS_S_BAD_MECH */ major = (*ftab->canonicalizeName)(&minor, nameHdl, mech, &mnNameHdl); - sprintf(debugBuf, "[GSSLibStub_canonicalizeName] MN=%ld", - (long)mnNameHdl); - debug(env, debugBuf); - - /* release intermediate buffers */ + TRACE1("[GSSLibStub_canonicalizeName] MN=%ld", (long)mnNameHdl); checkStatus(env, jobj, major, minor, "[GSSLibStub_canonicalizeName]"); - } else mnNameHdl = GSS_C_NO_NAME; - - return ptr_to_jlong(mnNameHdl); + if ((*env)->ExceptionCheck(env)) { + return (jlong) GSS_C_NO_NAME; + } + return ptr_to_jlong(mnNameHdl); + } + return (jlong) GSS_C_NO_NAME; } /* @@ -455,8 +452,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_exportName(JNIEnv *env, jbyteArray jresult; nameHdl = (gss_name_t) jlong_to_ptr(pName); - sprintf(debugBuf, "[GSSLibStub_exportName] %ld", (long) pName); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_exportName] %ld", (long) pName); /* gss_export_name(...) => GSS_S_NAME_NOT_MN, GSS_S_BAD_NAMETYPE, GSS_S_BAD_NAME */ @@ -464,28 +461,38 @@ Java_sun_security_jgss_wrapper_GSSLibStub_exportName(JNIEnv *env, /* canonicalize the internal name to MN and retry */ if (major == GSS_S_NAME_NOT_MN) { - debug(env, "[GSSLibStub_exportName] canonicalize and re-try"); + /* release intermediate buffers before retrying */ + (*ftab->releaseBuffer)(&minor, &outBuf); + + TRACE0("[GSSLibStub_exportName] canonicalize and re-try"); mNameHdl = (gss_name_t)jlong_to_ptr( Java_sun_security_jgss_wrapper_GSSLibStub_canonicalizeName (env, jobj, pName)); - /* return immediately if an exception has occurred */ if ((*env)->ExceptionCheck(env)) { - return NULL; + return NULL; } + major = (*ftab->exportName)(&minor, mNameHdl, &outBuf); Java_sun_security_jgss_wrapper_GSSLibStub_releaseName (env, jobj, ptr_to_jlong(mNameHdl)); - /* return immediately if an exception has occurred */ if ((*env)->ExceptionCheck(env)) { + /* release intermediate buffers */ + (*ftab->releaseBuffer)(&minor, &outBuf); return NULL; } } - /* release intermediate buffers */ + /* release intermediate buffers before checking status */ jresult = getJavaBuffer(env, &outBuf); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } checkStatus(env, jobj, major, minor, "[GSSLibStub_exportName]"); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } return jresult; } @@ -507,8 +514,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_displayName(JNIEnv *env, jobjectArray jresult; nameHdl = (gss_name_t) jlong_to_ptr(pName); - sprintf(debugBuf, "[GSSLibStub_displayName] %ld", (long) pName); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_displayName] %ld", (long) pName); if (nameHdl == GSS_C_NO_NAME) { checkStatus(env, jobj, GSS_S_BAD_NAME, 0, "[GSSLibStub_displayName]"); @@ -518,26 +525,37 @@ Java_sun_security_jgss_wrapper_GSSLibStub_displayName(JNIEnv *env, /* gss_display_name(...) => GSS_S_BAD_NAME */ major = (*ftab->displayName)(&minor, nameHdl, &outNameBuf, &outNameType); - /* release intermediate buffers */ + /* release intermediate buffers before checking status */ jname = getJavaString(env, &outNameBuf); - if (jname == NULL && !(*env)->ExceptionCheck(env)) { - throwOutOfMemoryError(env, NULL); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + + checkStatus(env, jobj, major, minor, "[GSSLibStub_displayName]"); + if ((*env)->ExceptionCheck(env)) { return NULL; } jtype = getJavaOID(env, outNameType); - jresult = (*env)->NewObjectArray(env, 2, CLS_Object, NULL); - CHECK_NULL_RETURN(jresult, NULL); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + jresult = (*env)->NewObjectArray(env, 2, CLS_Object, NULL); /* return immediately if an exception has occurred */ if ((*env)->ExceptionCheck(env)) { return NULL; } (*env)->SetObjectArrayElement(env, jresult, 0, jname); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } (*env)->SetObjectArrayElement(env, jresult, 1, jtype); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } - checkStatus(env, jobj, major, minor, "[GSSLibStub_displayName]"); return jresult; } @@ -561,20 +579,14 @@ Java_sun_security_jgss_wrapper_GSSLibStub_acquireCred(JNIEnv *env, gss_cred_id_t credHdl; credHdl = GSS_C_NO_CREDENTIAL; - debug(env, "[GSSLibStub_acquireCred]"); - + TRACE0("[GSSLibStub_acquireCred]"); mech = (gss_OID) jlong_to_ptr((*env)->GetLongField(env, jobj, FID_GSSLibStub_pMech)); - mechs = newGSSOIDSet(env, mech); - if ((*env)->ExceptionCheck(env)) { - return jlong_zero; - } + mechs = newGSSOIDSet(mech); credUsage = (gss_cred_usage_t) usage; nameHdl = (gss_name_t) jlong_to_ptr(pName); - sprintf(debugBuf, "[GSSLibStub_acquireCred] pName=%ld, usage=%d", - (long) pName, usage); - debug(env, debugBuf); + TRACE2("[GSSLibStub_acquireCred] pName=%ld, usage=%d", (long)pName, usage); /* gss_acquire_cred(...) => GSS_S_BAD_MECH, GSS_S_BAD_NAMETYPE, GSS_S_BAD_NAME, GSS_S_CREDENTIALS_EXPIRED, GSS_S_NO_CRED */ @@ -584,10 +596,12 @@ Java_sun_security_jgss_wrapper_GSSLibStub_acquireCred(JNIEnv *env, /* release intermediate buffers */ deleteGSSOIDSet(mechs); - sprintf(debugBuf, "[GSSLibStub_acquireCred] pCred=%ld", (long) credHdl); - debug(env, debugBuf); + TRACE1("[GSSLibStub_acquireCred] pCred=%ld", (long) credHdl); checkStatus(env, jobj, major, minor, "[GSSLibStub_acquireCred]"); + if ((*env)->ExceptionCheck(env)) { + return jlong_zero; + } return ptr_to_jlong(credHdl); } @@ -606,15 +620,16 @@ Java_sun_security_jgss_wrapper_GSSLibStub_releaseCred(JNIEnv *env, credHdl = (gss_cred_id_t) jlong_to_ptr(pCred); - sprintf(debugBuf, "[GSSLibStub_releaseCred] %ld", (long int)pCred); - debug(env, debugBuf); + TRACE1("[GSSLibStub_releaseCred] %ld", (long int)pCred); if (credHdl != GSS_C_NO_CREDENTIAL) { - /* gss_release_cred(...) => GSS_S_NO_CRED(!) */ major = (*ftab->releaseCred)(&minor, &credHdl); checkStatus(env, jobj, major, minor, "[GSSLibStub_releaseCred]"); + if ((*env)->ExceptionCheck(env)) { + return jlong_zero; + } } return ptr_to_jlong(credHdl); } @@ -630,8 +645,7 @@ void inquireCred(JNIEnv *env, jobject jobj, gss_cred_id_t pCred, credHdl = pCred; - sprintf(debugBuf, "[gss_inquire_cred] %ld", (long) pCred); - debug(env, debugBuf); + TRACE1("[gss_inquire_cred] %ld", (long) pCred); /* gss_inquire_cred(...) => GSS_S_DEFECTIVE_CREDENTIAL(!), GSS_S_CREDENTIALS_EXPIRED(!), GSS_S_NO_CRED(!) */ @@ -643,8 +657,6 @@ void inquireCred(JNIEnv *env, jobject jobj, gss_cred_id_t pCred, major = (*ftab->inquireCred)(&minor, credHdl, NULL, NULL, result, NULL); } - /* release intermediate buffers */ - routineErr = GSS_ROUTINE_ERROR(major); if (routineErr == GSS_S_CREDENTIALS_EXPIRED) { /* ignore GSS_S_CREDENTIALS_EXPIRED for query */ @@ -673,20 +685,16 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getCredName(JNIEnv *env, credHdl = (gss_cred_id_t) jlong_to_ptr(pCred); - sprintf(debugBuf, "[GSSLibStub_getCredName] %ld", (long int)pCred); - debug(env, debugBuf); + TRACE1("[GSSLibStub_getCredName] %ld", (long int)pCred); nameHdl = GSS_C_NO_NAME; inquireCred(env, jobj, credHdl, TYPE_CRED_NAME, &nameHdl); - /* return immediately if an exception has occurred */ if ((*env)->ExceptionCheck(env)) { return jlong_zero; } - sprintf(debugBuf, "[GSSLibStub_getCredName] pName=%ld", (long) nameHdl); - debug(env, debugBuf); - + TRACE1("[GSSLibStub_getCredName] pName=%ld", (long) nameHdl); return ptr_to_jlong(nameHdl); } @@ -705,12 +713,10 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getCredTime(JNIEnv *env, credHdl = (gss_cred_id_t) jlong_to_ptr(pCred); - sprintf(debugBuf, "[GSSLibStub_getCredTime] %ld", (long int)pCred); - debug(env, debugBuf); + TRACE1("[GSSLibStub_getCredTime] %ld", (long int)pCred); lifetime = 0; inquireCred(env, jobj, credHdl, TYPE_CRED_TIME, &lifetime); - /* return immediately if an exception has occurred */ if ((*env)->ExceptionCheck(env)) { return 0; @@ -733,11 +739,9 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getCredUsage(JNIEnv *env, credHdl = (gss_cred_id_t) jlong_to_ptr(pCred); - sprintf(debugBuf, "[GSSLibStub_getCredUsage] %ld", (long int)pCred); - debug(env, debugBuf); + TRACE1("[GSSLibStub_getCredUsage] %ld", (long int)pCred); inquireCred(env, jobj, credHdl, TYPE_CRED_USAGE, &usage); - /* return immediately if an exception has occurred */ if ((*env)->ExceptionCheck(env)) { return -1; @@ -759,10 +763,11 @@ Java_sun_security_jgss_wrapper_GSSLibStub_importContext(JNIEnv *env, gss_ctx_id_t contextHdl; gss_OID mech, mech2; - debug(env, "[GSSLibStub_importContext]"); + TRACE0("[GSSLibStub_importContext]"); contextHdl = GSS_C_NO_CONTEXT; - if (!initGSSBuffer(env, jctxtToken, &ctxtToken)) { + initGSSBuffer(env, jctxtToken, &ctxtToken); + if ((*env)->ExceptionCheck(env)) { return NULL; } @@ -770,12 +775,10 @@ Java_sun_security_jgss_wrapper_GSSLibStub_importContext(JNIEnv *env, GSS_S_UNAVAILABLE, GSS_S_UNAUTHORIZED */ major = (*ftab->importSecContext)(&minor, &ctxtToken, &contextHdl); - sprintf(debugBuf, "[GSSLibStub_importContext] pContext=%ld", - (long) contextHdl); - debug(env, debugBuf); + TRACE1("[GSSLibStub_importContext] pContext=%ld", (long) contextHdl); /* release intermediate buffers */ - resetGSSBuffer(env, jctxtToken, &ctxtToken); + resetGSSBuffer(&ctxtToken); checkStatus(env, jobj, major, minor, "[GSSLibStub_importContext]"); /* return immediately if an exception has occurred */ @@ -794,9 +797,10 @@ Java_sun_security_jgss_wrapper_GSSLibStub_importContext(JNIEnv *env, return NULL; } - mech2 = (gss_OID) jlong_to_ptr((*env)->GetLongField(env, jobj, FID_GSSLibStub_pMech)); + mech2 = (gss_OID) jlong_to_ptr((*env)->GetLongField(env, jobj, + FID_GSSLibStub_pMech)); - if (sameMech(env, mech, mech2) == JNI_TRUE) { + if (sameMech(mech, mech2) == JNI_TRUE) { /* mech match - return the context object */ return (*env)->NewObject(env, CLS_NativeGSSContext, MID_NativeGSSContext_ctor, @@ -805,10 +809,11 @@ Java_sun_security_jgss_wrapper_GSSLibStub_importContext(JNIEnv *env, /* mech mismatch - clean up then return null */ major = (*ftab->deleteSecContext)(&minor, &contextHdl, GSS_C_NO_BUFFER); checkStatus(env, jobj, major, minor, - "[GSSLibStub_importContext] cleanup"); + "[GSSLibStub_importContext] cleanup"); return NULL; } } + /* * Class: sun_security_jgss_wrapper_GSSLibStub * Method: initContext @@ -838,7 +843,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_initContext(JNIEnv *env, gss_OID aMech; jobject jMech; */ - debug(env, "[GSSLibStub_initContext]"); + + TRACE0("[GSSLibStub_initContext]"); credHdl = (gss_cred_id_t) jlong_to_ptr(pCred); contextHdl = (gss_ctx_id_t) jlong_to_ptr( @@ -849,20 +855,19 @@ Java_sun_security_jgss_wrapper_GSSLibStub_initContext(JNIEnv *env, FID_NativeGSSContext_flags); time = getGSSTime((*env)->GetIntField(env, jcontextSpi, FID_NativeGSSContext_lifetime)); - cb = getGSSCB(env, jcb); + cb = newGSSCB(env, jcb); if ((*env)->ExceptionCheck(env)) { - free(cb); return NULL; } - if (!initGSSBuffer(env, jinToken, &inToken)) { + initGSSBuffer(env, jinToken, &inToken); + if ((*env)->ExceptionCheck(env)) { + deleteGSSCB(cb); return NULL; } - sprintf(debugBuf, - "[GSSLibStub_initContext] before: pCred=%ld, pContext=%ld", + TRACE2( "[GSSLibStub_initContext] before: pCred=%ld, pContext=%ld", (long)credHdl, (long)contextHdl); - debug(env, debugBuf); /* gss_init_sec_context(...) => GSS_S_CONTINUE_NEEDED(!), GSS_S_DEFECTIVE_TOKEN, GSS_S_NO_CRED, GSS_S_DEFECTIVE_CREDENTIAL(!), @@ -870,29 +875,24 @@ Java_sun_security_jgss_wrapper_GSSLibStub_initContext(JNIEnv *env, GSS_S_OLD_TOKEN, GSS_S_DUPLICATE_TOKEN, GSS_S_NO_CONTEXT(!), GSS_S_BAD_NAMETYPE, GSS_S_BAD_NAME(!), GSS_S_BAD_MECH */ major = (*ftab->initSecContext)(&minor, credHdl, - &contextHdl, targetName, mech, - flags, time, cb, &inToken, NULL /*aMech*/, - &outToken, &aFlags, &aTime); + &contextHdl, targetName, mech, + flags, time, cb, &inToken, NULL /*aMech*/, + &outToken, &aFlags, &aTime); - sprintf(debugBuf, "[GSSLibStub_initContext] after: pContext=%ld", - (long)contextHdl); - debug(env, debugBuf); - sprintf(debugBuf, "[GSSLibStub_initContext] outToken len=%ld", - (long)outToken.length); - debug(env, debugBuf); + TRACE2("[GSSLibStub_initContext] after: pContext=%ld, outToken len=%ld", + (long)contextHdl, (long)outToken.length); if (GSS_ERROR(major) == GSS_S_COMPLETE) { /* update member values if needed */ (*env)->SetLongField(env, jcontextSpi, FID_NativeGSSContext_pContext, ptr_to_jlong(contextHdl)); (*env)->SetIntField(env, jcontextSpi, FID_NativeGSSContext_flags, aFlags); - sprintf(debugBuf, "[GSSLibStub_initContext] set flags=0x%x", aFlags); - debug(env, debugBuf); + TRACE1("[GSSLibStub_initContext] set flags=0x%x", aFlags); if (major == GSS_S_COMPLETE) { (*env)->SetIntField(env, jcontextSpi, FID_NativeGSSContext_lifetime, getJavaTime(aTime)); - debug(env, "[GSSLibStub_initContext] context established"); + TRACE0("[GSSLibStub_initContext] context established"); (*env)->SetBooleanField(env, jcontextSpi, FID_NativeGSSContext_isEstablished, @@ -904,16 +904,23 @@ Java_sun_security_jgss_wrapper_GSSLibStub_initContext(JNIEnv *env, FID_NativeGSSContext_actualMech, jMech); */ } else if (major & GSS_S_CONTINUE_NEEDED) { - debug(env, "[GSSLibStub_initContext] context not established"); + TRACE0("[GSSLibStub_initContext] context not established"); major -= GSS_S_CONTINUE_NEEDED; } } - /* release intermediate buffers */ - releaseGSSCB(env, jcb, cb); - resetGSSBuffer(env, jinToken, &inToken); + + /* release intermediate buffers before checking status */ + deleteGSSCB(cb); + resetGSSBuffer(&inToken); jresult = getJavaBuffer(env, &outToken); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } checkStatus(env, jobj, major, minor, "[GSSLibStub_initContext]"); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } return jresult; } @@ -950,29 +957,27 @@ Java_sun_security_jgss_wrapper_GSSLibStub_acceptContext(JNIEnv *env, gss_name_t targetName; jobject jtargetName; - debug(env, "[GSSLibStub_acceptContext]"); + TRACE0("[GSSLibStub_acceptContext]"); contextHdl = (gss_ctx_id_t)jlong_to_ptr( (*env)->GetLongField(env, jcontextSpi, FID_NativeGSSContext_pContext)); credHdl = (gss_cred_id_t) jlong_to_ptr(pCred); - if (!initGSSBuffer(env, jinToken, &inToken)) { - return NULL; - } - cb = getGSSCB(env, jcb); + initGSSBuffer(env, jinToken, &inToken); if ((*env)->ExceptionCheck(env)) { - free(cb); - resetGSSBuffer(env, jinToken, &inToken); return NULL; } - srcName = GSS_C_NO_NAME; + cb = newGSSCB(env, jcb); + if ((*env)->ExceptionCheck(env)) { + resetGSSBuffer(&inToken); + return NULL; + } + srcName = targetName = GSS_C_NO_NAME; delCred = GSS_C_NO_CREDENTIAL; setTarget = (credHdl == GSS_C_NO_CREDENTIAL); aFlags = 0; - sprintf(debugBuf, - "[GSSLibStub_acceptContext] before: pCred=%ld, pContext=%ld", + TRACE2( "[GSSLibStub_acceptContext] before: pCred=%ld, pContext=%ld", (long) credHdl, (long) contextHdl); - debug(env, debugBuf); /* gss_accept_sec_context(...) => GSS_S_CONTINUE_NEEDED(!), GSS_S_DEFECTIVE_TOKEN, GSS_S_DEFECTIVE_CREDENTIAL(!), @@ -983,91 +988,107 @@ Java_sun_security_jgss_wrapper_GSSLibStub_acceptContext(JNIEnv *env, (*ftab->acceptSecContext)(&minor, &contextHdl, credHdl, &inToken, cb, &srcName, &aMech, &outToken, &aFlags, &aTime, &delCred); + /* release intermediate buffers before checking status */ - sprintf(debugBuf, - "[GSSLibStub_acceptContext] after: pCred=%ld, pContext=%ld, pDelegCred=%ld", + deleteGSSCB(cb); + resetGSSBuffer(&inToken); + + TRACE3("[GSSLibStub_acceptContext] after: pCred=%ld, pContext=%ld, pDelegCred=%ld", (long)credHdl, (long)contextHdl, (long) delCred); - debug(env, debugBuf); if (GSS_ERROR(major) == GSS_S_COMPLETE) { /* update member values if needed */ (*env)->SetLongField(env, jcontextSpi, FID_NativeGSSContext_pContext, ptr_to_jlong(contextHdl)); - sprintf(debugBuf, "[GSSLibStub_acceptContext] set pContext=%ld", + TRACE1("[GSSLibStub_acceptContext] set pContext=%ld", (long)contextHdl); - debug(env, debugBuf); + // WORKAROUND for a Heimdal bug if (delCred == GSS_C_NO_CREDENTIAL) { aFlags &= 0xfffffffe; } (*env)->SetIntField(env, jcontextSpi, FID_NativeGSSContext_flags, aFlags); - sprintf(debugBuf, "[GSSLibStub_acceptContext] set flags=0x%x", - aFlags); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_acceptContext] set flags=0x%x", aFlags); + if (setTarget) { major2 = (*ftab->inquireContext)(&minor2, contextHdl, NULL, &targetName, NULL, NULL, NULL, NULL, NULL); + checkStatus(env, jobj, major2, minor2, + "[GSSLibStub_acceptContext] inquire"); + if ((*env)->ExceptionCheck(env)) { + goto error; + } + jtargetName = (*env)->NewObject(env, CLS_GSSNameElement, MID_GSSNameElement_ctor, ptr_to_jlong(targetName), jobj); - - /* return immediately if an exception has occurred */ if ((*env)->ExceptionCheck(env)) { - resetGSSBuffer(env, jinToken, &inToken); - return NULL; + goto error; } - sprintf(debugBuf, "[GSSLibStub_acceptContext] set targetName=%ld", + + TRACE1("[GSSLibStub_acceptContext] set targetName=%ld", (long)targetName); - debug(env, debugBuf); + (*env)->SetObjectField(env, jcontextSpi, FID_NativeGSSContext_targetName, jtargetName); + if ((*env)->ExceptionCheck(env)) { + goto error; + } } if (srcName != GSS_C_NO_NAME) { jsrcName = (*env)->NewObject(env, CLS_GSSNameElement, MID_GSSNameElement_ctor, ptr_to_jlong(srcName), jobj); - /* return immediately if an exception has occurred */ if ((*env)->ExceptionCheck(env)) { - resetGSSBuffer(env, jinToken, &inToken); - return NULL; + goto error; } - sprintf(debugBuf, "[GSSLibStub_acceptContext] set srcName=%ld", - (long)srcName); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_acceptContext] set srcName=%ld", (long)srcName); + (*env)->SetObjectField(env, jcontextSpi, FID_NativeGSSContext_srcName, jsrcName); + if ((*env)->ExceptionCheck(env)) { + goto error; + } } if (major == GSS_S_COMPLETE) { - debug(env, "[GSSLibStub_acceptContext] context established"); + TRACE0("[GSSLibStub_acceptContext] context established"); (*env)->SetIntField(env, jcontextSpi, FID_NativeGSSContext_lifetime, getJavaTime(aTime)); - (*env)->SetBooleanField(env, jcontextSpi, FID_NativeGSSContext_isEstablished, JNI_TRUE); jMech = getJavaOID(env, aMech); + if ((*env)->ExceptionCheck(env)) { + goto error; + } (*env)->SetObjectField(env, jcontextSpi, FID_NativeGSSContext_actualMech, jMech); + if ((*env)->ExceptionCheck(env)) { + goto error; + } if (delCred != GSS_C_NO_CREDENTIAL) { jdelCred = (*env)->NewObject(env, CLS_GSSCredElement, MID_GSSCredElement_ctor, ptr_to_jlong(delCred), jsrcName, jMech); - /* return immediately if an exception has occurred */ if ((*env)->ExceptionCheck(env)) { - resetGSSBuffer(env, jinToken, &inToken); - return NULL; + goto error; } (*env)->SetObjectField(env, jcontextSpi, FID_NativeGSSContext_delegatedCred, jdelCred); - sprintf(debugBuf, "[GSSLibStub_acceptContext] set delegatedCred=%ld", + TRACE1("[GSSLibStub_acceptContext] set delegatedCred=%ld", (long) delCred); - debug(env, debugBuf); + + if ((*env)->ExceptionCheck(env)) { + goto error; + } } } else if (major & GSS_S_CONTINUE_NEEDED) { - debug(env, "[GSSLibStub_acceptContext] context not established"); + TRACE0("[GSSLibStub_acceptContext] context not established"); if (aFlags & GSS_C_PROT_READY_FLAG) { (*env)->SetIntField(env, jcontextSpi, FID_NativeGSSContext_lifetime, @@ -1076,13 +1097,20 @@ Java_sun_security_jgss_wrapper_GSSLibStub_acceptContext(JNIEnv *env, major -= GSS_S_CONTINUE_NEEDED; } } - /* release intermediate buffers */ - releaseGSSCB(env, jcb, cb); - resetGSSBuffer(env, jinToken, &inToken); - jresult = getJavaBuffer(env, &outToken); + return getJavaBuffer(env, &outToken); - checkStatus(env, jobj, major, minor, "[GSSLibStub_acceptContext]"); - return jresult; +error: + (*ftab->releaseBuffer)(&minor, &outToken); + if (srcName != GSS_C_NO_NAME) { + (*ftab->releaseName)(&minor, &srcName); + } + if (targetName != GSS_C_NO_NAME) { + (*ftab->releaseName)(&minor, &targetName); + } + if (delCred != GSS_C_NO_CREDENTIAL) { + (*ftab->releaseCred) (&minor, &delCred); + } + return NULL; } /* @@ -1106,8 +1134,7 @@ Java_sun_security_jgss_wrapper_GSSLibStub_inquireContext(JNIEnv *env, contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); - sprintf(debugBuf, "[GSSLibStub_inquireContext] %ld", (long)contextHdl); - debug(env, debugBuf); + TRACE1("[GSSLibStub_inquireContext] %ld", (long)contextHdl); srcName = targetName = GSS_C_NO_NAME; time = 0; @@ -1118,12 +1145,13 @@ Java_sun_security_jgss_wrapper_GSSLibStub_inquireContext(JNIEnv *env, &targetName, &time, NULL, &flags, &isInitiator, &isEstablished); /* update member values if needed */ - sprintf(debugBuf, "[GSSLibStub_inquireContext] srcName %ld", (long)srcName); - debug(env, debugBuf); - sprintf(debugBuf, "[GSSLibStub_inquireContext] targetName %ld", - (long)targetName); - debug(env, debugBuf); + TRACE2("[GSSLibStub_inquireContext] srcName %ld, targetName %ld", + (long)srcName, (long)targetName); + checkStatus(env, jobj, major, minor, "[GSSLibStub_inquireContext]"); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } result[0] = ptr_to_jlong(srcName); result[1] = ptr_to_jlong(targetName); result[2] = (jlong) isInitiator; @@ -1132,12 +1160,13 @@ Java_sun_security_jgss_wrapper_GSSLibStub_inquireContext(JNIEnv *env, result[5] = (jlong) getJavaTime(time); jresult = (*env)->NewLongArray(env, 6); - CHECK_NULL_RETURN(jresult, NULL); + if (jresult == NULL) { + return NULL; + } (*env)->SetLongArrayRegion(env, jresult, 0, 6, result); - - /* release intermediate buffers */ - - checkStatus(env, jobj, major, minor, "[GSSLibStub_inquireContext]"); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } return jresult; } @@ -1157,8 +1186,7 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getContextMech(JNIEnv *env, contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); - sprintf(debugBuf, "[GSSLibStub_getContextMech] %ld", (long int)pContext); - debug(env, debugBuf); + TRACE1("[GSSLibStub_getContextMech] %ld", (long int)pContext); major = (*ftab->inquireContext)(&minor, contextHdl, NULL, NULL, NULL, &mech, NULL, NULL, NULL); @@ -1187,9 +1215,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getContextName(JNIEnv *env, contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); - sprintf(debugBuf, "[GSSLibStub_getContextName] %ld, isSrc=%d", + TRACE2("[GSSLibStub_getContextName] %ld, isSrc=%d", (long)contextHdl, isSrc); - debug(env, debugBuf); nameHdl = GSS_C_NO_NAME; if (isSrc == JNI_TRUE) { @@ -1206,8 +1233,7 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getContextName(JNIEnv *env, return jlong_zero; } - sprintf(debugBuf, "[GSSLibStub_getContextName] pName=%ld", (long) nameHdl); - debug(env, debugBuf); + TRACE1("[GSSLibStub_getContextName] pName=%ld", (long) nameHdl); return ptr_to_jlong(nameHdl); } @@ -1226,8 +1252,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getContextTime(JNIEnv *env, OM_uint32 time; contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); - sprintf(debugBuf, "[GSSLibStub_getContextTime] %ld", (long)contextHdl); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_getContextTime] %ld", (long)contextHdl); if (contextHdl == GSS_C_NO_CONTEXT) return 0; @@ -1238,6 +1264,9 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getContextTime(JNIEnv *env, major = GSS_CALLING_ERROR(major) | GSS_SUPPLEMENTARY_INFO(major); } checkStatus(env, jobj, major, minor, "[GSSLibStub_getContextTime]"); + if ((*env)->ExceptionCheck(env)) { + return 0; + } return getJavaTime(time); } @@ -1255,8 +1284,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_deleteContext(JNIEnv *env, gss_ctx_id_t contextHdl; contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); - sprintf(debugBuf, "[GSSLibStub_deleteContext] %ld", (long)contextHdl); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_deleteContext] %ld", (long)contextHdl); if (contextHdl == GSS_C_NO_CONTEXT) return ptr_to_jlong(GSS_C_NO_CONTEXT); @@ -1264,6 +1293,9 @@ Java_sun_security_jgss_wrapper_GSSLibStub_deleteContext(JNIEnv *env, major = (*ftab->deleteSecContext)(&minor, &contextHdl, GSS_C_NO_BUFFER); checkStatus(env, jobj, major, minor, "[GSSLibStub_deleteContext]"); + if ((*env)->ExceptionCheck(env)) { + return jlong_zero; + } return (jlong) ptr_to_jlong(contextHdl); } @@ -1286,20 +1318,27 @@ Java_sun_security_jgss_wrapper_GSSLibStub_wrapSizeLimit(JNIEnv *env, gss_qop_t qop; contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); - sprintf(debugBuf, "[GSSLibStub_wrapSizeLimit] %ld", (long)contextHdl); - debug(env, debugBuf); - // Check context handle?? + TRACE1("[GSSLibStub_wrapSizeLimit] %ld", (long)contextHdl); + + if (contextHdl == GSS_C_NO_CONTEXT) { + // Twik per javadoc + checkStatus(env, jobj, GSS_S_NO_CONTEXT, 0, + "[GSSLibStub_wrapSizeLimit]"); + return 0; + } qop = (gss_qop_t) jqop; outSize = (OM_uint32) joutSize; - maxInSize = 0; /* gss_wrap_size_limit(...) => GSS_S_NO_CONTEXT(!), GSS_S_CONTEXT_EXPIRED, GSS_S_BAD_QOP */ major = (*ftab->wrapSizeLimit)(&minor, contextHdl, reqFlag, qop, outSize, &maxInSize); checkStatus(env, jobj, major, minor, "[GSSLibStub_wrapSizeLimit]"); + if ((*env)->ExceptionCheck(env)) { + return 0; + } return (jint) maxInSize; } @@ -1319,8 +1358,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_exportContext(JNIEnv *env, jbyteArray jresult; contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); - sprintf(debugBuf, "[GSSLibStub_exportContext] %ld", (long)contextHdl); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_exportContext] %ld", (long)contextHdl); if (contextHdl == GSS_C_NO_CONTEXT) { // Twik per javadoc @@ -1334,7 +1373,14 @@ Java_sun_security_jgss_wrapper_GSSLibStub_exportContext(JNIEnv *env, /* release intermediate buffers */ jresult = getJavaBuffer(env, &interProcToken); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } checkStatus(env, jobj, major, minor, "[GSSLibStub_exportContext]"); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + return jresult; } @@ -1356,8 +1402,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getMic(JNIEnv *env, jobject jobj, jbyteArray jresult; contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); - sprintf(debugBuf, "[GSSLibStub_getMic] %ld", (long)contextHdl); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_getMic] %ld", (long)contextHdl); if (contextHdl == GSS_C_NO_CONTEXT) { // Twik per javadoc @@ -1366,7 +1412,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getMic(JNIEnv *env, jobject jobj, } contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); qop = (gss_qop_t) jqop; - if (!initGSSBuffer(env, jmsg, &msg)) { + initGSSBuffer(env, jmsg, &msg); + if ((*env)->ExceptionCheck(env)) { return NULL; } @@ -1376,10 +1423,16 @@ Java_sun_security_jgss_wrapper_GSSLibStub_getMic(JNIEnv *env, jobject jobj, (*ftab->getMic)(&minor, contextHdl, qop, &msg, &msgToken); /* release intermediate buffers */ - resetGSSBuffer(env, jmsg, &msg); + resetGSSBuffer(&msg); jresult = getJavaBuffer(env, &msgToken); - + if ((*env)->ExceptionCheck(env)) { + return NULL; + } checkStatus(env, jobj, major, minor, "[GSSLibStub_getMic]"); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + return jresult; } @@ -1403,8 +1456,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_verifyMic(JNIEnv *env, gss_qop_t qop; contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); - sprintf(debugBuf, "[GSSLibStub_verifyMic] %ld", (long)contextHdl); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_verifyMic] %ld", (long)contextHdl); if (contextHdl == GSS_C_NO_CONTEXT) { // Twik per javadoc @@ -1413,12 +1466,18 @@ Java_sun_security_jgss_wrapper_GSSLibStub_verifyMic(JNIEnv *env, return; } - if (!initGSSBuffer(env, jmsg, &msg) || - !initGSSBuffer(env, jmsgToken, &msgToken)) { + qop = (gss_qop_t) (*env)->CallIntMethod(env, jprop, MID_MessageProp_getQOP); + if ((*env)->ExceptionCheck(env)) { return; } + + initGSSBuffer(env, jmsg, &msg); + if ((*env)->ExceptionCheck(env)) { return; } + + initGSSBuffer(env, jmsgToken, &msgToken); + if ((*env)->ExceptionCheck(env)) { + resetGSSBuffer(&msg); return; } - qop = (gss_qop_t) (*env)->CallIntMethod(env, jprop, MID_MessageProp_getQOP); /* gss_verify_mic(...) => GSS_S_DEFECTIVE_TOKEN, GSS_S_BAD_MIC, GSS_S_CONTEXT_EXPIRED, GSS_S_DUPLICATE_TOKEN(!), GSS_S_OLD_TOKEN(!), GSS_S_UNSEQ_TOKEN(!), GSS_S_GAP_TOKEN(!), GSS_S_NO_CONTEXT(!) */ @@ -1426,13 +1485,24 @@ Java_sun_security_jgss_wrapper_GSSLibStub_verifyMic(JNIEnv *env, (*ftab->verifyMic)(&minor, contextHdl, &msg, &msgToken, &qop); /* release intermediate buffers */ - resetGSSBuffer(env, jmsg, &msg); - resetGSSBuffer(env, jmsgToken, &msgToken); + resetGSSBuffer(&msg); + resetGSSBuffer(&msgToken); + + checkStatus(env, jobj, GSS_ERROR(major), minor, "[GSSLibStub_verifyMic]"); + if ((*env)->ExceptionCheck(env)) { + return; + } (*env)->CallVoidMethod(env, jprop, MID_MessageProp_setQOP, qop); + if ((*env)->ExceptionCheck(env)) { + return; + } + setSupplementaryInfo(env, jobj, jprop, GSS_SUPPLEMENTARY_INFO(major), minor); - checkStatus(env, jobj, GSS_ERROR(major), minor, "[GSSLibStub_verifyMic]"); + if ((*env)->ExceptionCheck(env)) { + return; + } } /* @@ -1457,8 +1527,8 @@ Java_sun_security_jgss_wrapper_GSSLibStub_wrap(JNIEnv *env, jbyteArray jresult; contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); - sprintf(debugBuf, "[GSSLibStub_wrap] %ld", (long)contextHdl); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_wrap] %ld", (long)contextHdl); if (contextHdl == GSS_C_NO_CONTEXT) { // Twik per javadoc @@ -1468,24 +1538,43 @@ Java_sun_security_jgss_wrapper_GSSLibStub_wrap(JNIEnv *env, confFlag = (*env)->CallBooleanMethod(env, jprop, MID_MessageProp_getPrivacy); - qop = (gss_qop_t) - (*env)->CallIntMethod(env, jprop, MID_MessageProp_getQOP); - if (!initGSSBuffer(env, jmsg, &msg)) { + if ((*env)->ExceptionCheck(env)) { return NULL; } + + qop = (gss_qop_t) + (*env)->CallIntMethod(env, jprop, MID_MessageProp_getQOP); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + + initGSSBuffer(env, jmsg, &msg); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + /* gss_wrap(...) => GSS_S_CONTEXT_EXPIRED, GSS_S_NO_CONTEXT(!), GSS_S_BAD_QOP */ major = (*ftab->wrap)(&minor, contextHdl, confFlag, qop, &msg, &confState, &msgToken); - (*env)->CallVoidMethod(env, jprop, MID_MessageProp_setPrivacy, - (confState? JNI_TRUE:JNI_FALSE)); - /* release intermediate buffers */ - resetGSSBuffer(env, jmsg, &msg); + resetGSSBuffer(&msg); jresult = getJavaBuffer(env, &msgToken); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } checkStatus(env, jobj, major, minor, "[GSSLibStub_wrap]"); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + + (*env)->CallVoidMethod(env, jprop, MID_MessageProp_setPrivacy, + (confState? JNI_TRUE:JNI_FALSE)); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } return jresult; } @@ -1510,17 +1599,20 @@ Java_sun_security_jgss_wrapper_GSSLibStub_unwrap(JNIEnv *env, jbyteArray jresult; contextHdl = (gss_ctx_id_t) jlong_to_ptr(pContext); - sprintf(debugBuf, "[GSSLibStub_unwrap] %ld", (long)contextHdl); - debug(env, debugBuf); + + TRACE1("[GSSLibStub_unwrap] %ld", (long)contextHdl); if (contextHdl == GSS_C_NO_CONTEXT) { // Twik per javadoc checkStatus(env, jobj, GSS_S_CONTEXT_EXPIRED, 0, "[GSSLibStub_unwrap]"); return NULL; } - if (!initGSSBuffer(env, jmsgToken, &msgToken)) { + + initGSSBuffer(env, jmsgToken, &msgToken); + if ((*env)->ExceptionCheck(env)) { return NULL; } + confState = 0; qop = GSS_C_QOP_DEFAULT; /* gss_unwrap(...) => GSS_S_DEFECTIVE_TOKEN, GSS_S_BAD_MIC, @@ -1528,17 +1620,34 @@ Java_sun_security_jgss_wrapper_GSSLibStub_unwrap(JNIEnv *env, GSS_S_UNSEQ_TOKEN(!), GSS_S_GAP_TOKEN(!), GSS_S_NO_CONTEXT(!) */ major = (*ftab->unwrap)(&minor, contextHdl, &msgToken, &msg, &confState, &qop); + + /* release intermediate buffers */ + resetGSSBuffer(&msgToken); + jresult = getJavaBuffer(env, &msg); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + + checkStatus(env, jobj, GSS_ERROR(major), minor, "[GSSLibStub_unwrap]"); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + /* update the message prop with relevant info */ (*env)->CallVoidMethod(env, jprop, MID_MessageProp_setPrivacy, (confState != 0)); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } (*env)->CallVoidMethod(env, jprop, MID_MessageProp_setQOP, qop); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } setSupplementaryInfo(env, jobj, jprop, GSS_SUPPLEMENTARY_INFO(major), - minor); + minor); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } - /* release intermediate buffers */ - resetGSSBuffer(env, jmsgToken, &msgToken); - jresult = getJavaBuffer(env, &msg); - - checkStatus(env, jobj, GSS_ERROR(major), minor, "[GSSLibStub_unwrap]"); return jresult; } diff --git a/jdk/src/share/native/sun/security/jgss/wrapper/NativeUtil.c b/jdk/src/share/native/sun/security/jgss/wrapper/NativeUtil.c index e3a8be9ffc2..7095af4e17e 100644 --- a/jdk/src/share/native/sun/security/jgss/wrapper/NativeUtil.c +++ b/jdk/src/share/native/sun/security/jgss/wrapper/NativeUtil.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,9 +27,6 @@ #include "NativeFunc.h" #include "jlong.h" #include <jni.h> -#include "jni_util.h" - -extern void throwOutOfMemoryError(JNIEnv *env, const char *message); const int JAVA_DUPLICATE_TOKEN_CODE = 19; /* DUPLICATE_TOKEN */ const int JAVA_OLD_TOKEN_CODE = 20; /* OLD_TOKEN */ @@ -83,7 +80,6 @@ jmethodID MID_InetAddress_getAddr; jmethodID MID_GSSNameElement_ctor; jmethodID MID_GSSCredElement_ctor; jmethodID MID_NativeGSSContext_ctor; -jmethodID MID_SunNativeProvider_debug; jfieldID FID_GSSLibStub_pMech; jfieldID FID_NativeGSSContext_pContext; jfieldID FID_NativeGSSContext_srcName; @@ -94,7 +90,8 @@ jfieldID FID_NativeGSSContext_delegatedCred; jfieldID FID_NativeGSSContext_flags; jfieldID FID_NativeGSSContext_lifetime; jfieldID FID_NativeGSSContext_actualMech; -char debugBuf[256]; + +int JGSS_DEBUG; JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved) { @@ -292,13 +289,6 @@ JNI_OnLoad(JavaVM *jvm, void *reserved) { printf("Couldn't find NativeGSSContext(long, GSSLibStub) constructor\n"); return JNI_ERR; } - MID_SunNativeProvider_debug = - (*env)->GetStaticMethodID(env, CLS_SunNativeProvider, "debug", - "(Ljava/lang/String;)V"); - if (MID_SunNativeProvider_debug == NULL) { - printf("Couldn't find SunNativeProvider.debug(String) method\n"); - return JNI_ERR; - } /* Compute and cache the field ID */ cls = (*env)->FindClass(env, "sun/security/jgss/wrapper/GSSLibStub"); if (cls == NULL) { @@ -449,14 +439,28 @@ jint getJavaErrorCode(int cNonCallingErr) { } return GSS_S_COMPLETE; } + + +/* Throws a Java Exception by name */ +void throwByName(JNIEnv *env, const char *name, const char *msg) { + jclass cls = (*env)->FindClass(env, name); + + if (cls != NULL) { + (*env)->ThrowNew(env, cls, msg); + } +} + +void throwOutOfMemoryError(JNIEnv *env, const char *message) { + throwByName(env, "java/lang/OutOfMemoryError", message); +} + /* * Utility routine for creating a java.lang.String object - * using the specified gss_buffer_t structure. After the, - * String object is created, the specified gss_buffer_t - * structure is released. + * using the specified gss_buffer_t structure. The specified + * gss_buffer_t structure is always released. */ jstring getJavaString(JNIEnv *env, gss_buffer_t bytes) { - jstring result; + jstring result = NULL; OM_uint32 minor; int len; jbyteArray jbytes; @@ -466,9 +470,18 @@ jstring getJavaString(JNIEnv *env, gss_buffer_t bytes) { NOTE: do NOT include the trailing NULL */ len = bytes->length; jbytes = (*env)->NewByteArray(env, len); + if (jbytes == NULL) { + goto finish; + } + (*env)->SetByteArrayRegion(env, jbytes, 0, len, (jbyte *) bytes->value); + if ((*env)->ExceptionCheck(env)) { + goto finish; + } + result = (*env)->NewObject(env, CLS_String, MID_String_ctor, jbytes); + finish: (*env)->DeleteLocalRef(env, jbytes); (*ftab->releaseBuffer)(&minor, bytes); return result; @@ -491,17 +504,15 @@ jstring getMinorMessage(JNIEnv *env, jobject jstub, OM_uint32 statusValue) { } else { mech = GSS_C_NO_OID; } + /* gss_display_status(...) => GSS_S_BAD_MECH, GSS_S_BAD_STATUS */ + // TBD: check messageContext value and repeat the call if necessary major = (*ftab->displayStatus)(&minor, statusValue, GSS_C_MECH_CODE, mech, - &messageContext, &statusString); - /* release intermediate buffers */ - msg = getJavaString(env, &statusString); - if (msg == NULL && !(*env)->ExceptionCheck(env)) { - throwOutOfMemoryError(env, NULL); - } - (*ftab->releaseBuffer)(&minor, &statusString); - return msg; + &messageContext, &statusString); + + return getJavaString(env, &statusString); } + /* * Utility routine checking the specified major and minor * status codes. GSSExceptions will be thrown if they are @@ -521,11 +532,9 @@ void checkStatus(JNIEnv *env, jobject jstub, OM_uint32 major, routineErr = GSS_ROUTINE_ERROR(major); supplementaryInfo = GSS_SUPPLEMENTARY_INFO(major); - sprintf(debugBuf, "%s Status major/minor = %x/%d", methodName, major, minor); - debug(env, debugBuf); - sprintf(debugBuf, "%s Status c/r/s = %d/%d/%d ", methodName, callingErr>>24, - routineErr>>16, supplementaryInfo); - debug(env, debugBuf); + TRACE3("%s Status major/minor = %x/%d", methodName, major, minor); + TRACE3("c/r/s = %d/%d/%d ", callingErr>>24, routineErr>>16, + supplementaryInfo); jmajor = getJavaErrorCode(routineErr | supplementaryInfo); jminor = minor; @@ -533,12 +542,17 @@ void checkStatus(JNIEnv *env, jobject jstub, OM_uint32 major, jmsg = NULL; if (minor != 0) { jmsg = getMinorMessage(env, jstub, minor); - CHECK_NULL(jmsg); + if ((*env)->ExceptionCheck(env)) { + return; + } } + gssEx = (*env)->NewObject(env, CLS_GSSException, MID_GSSException_ctor3, jmajor, jminor, jmsg); - (*env)->Throw(env, gssEx); + if (gssEx != NULL) { + (*env)->Throw(env, gssEx); + } } else { /* Error in calling the GSS api */ if (callingErr == GSS_S_CALL_INACCESSIBLE_READ) { @@ -550,70 +564,88 @@ void checkStatus(JNIEnv *env, jobject jstub, OM_uint32 major, } jmajor = 13; /* use GSSException.FAILURE for now */ jmsg = (*env)->NewStringUTF(env, msg); - CHECK_NULL(jmsg); + if (jmsg == NULL) { + return; + } gssEx = (*env)->NewObject(env, CLS_GSSException, MID_GSSException_ctor3, jmajor, jminor, jmsg); - CHECK_NULL(gssEx); - (*env)->Throw(env, gssEx); + if (gssEx != NULL) { + (*env)->Throw(env, gssEx); + } } } /* * Utility routine for initializing gss_buffer_t structure * with the byte[] in the specified jbyteArray object. - * NOTE: need to call resetGSSBuffer(...) to free up - * the resources. - * Return JNI_TRUE if GetByteArrayElements() returns ok, JNI_FALSE otherwise - * If JNI_FALSE returned, then an exception has been thrown. + * NOTE: must call resetGSSBuffer() to free up the resources + * inside the gss_buffer_t structure. */ -int initGSSBuffer(JNIEnv *env, jbyteArray jbytes, - gss_buffer_t cbytes) { +void initGSSBuffer(JNIEnv *env, jbyteArray jbytes, + gss_buffer_t cbytes) { + + int len; + void* value; + if (jbytes != NULL) { - cbytes->length = (*env)->GetArrayLength(env, jbytes); - cbytes->value = (*env)->GetByteArrayElements(env, jbytes, NULL); - if (cbytes->value == NULL) { - if (!(*env)->ExceptionCheck(env)) { - throwOutOfMemoryError(env, NULL); - } - return JNI_FALSE; + len = (*env)->GetArrayLength(env, jbytes); + value = malloc(len); + if (value == NULL) { + throwOutOfMemoryError(env, NULL); + return; + } else { + (*env)->GetByteArrayRegion(env, jbytes, 0, len, value); + if ((*env)->ExceptionCheck(env)) { + free(value); + return; + } else { + cbytes->length = len; + cbytes->value = value; + } } } else { cbytes->length = 0; cbytes->value = NULL; } - return JNI_TRUE; } /* - * Utility routine for unpinning/releasing the byte[] - * associated with the specified jbyteArray object. + * Utility routine for freeing the bytes malloc'ed + * in initGSSBuffer() method. * NOTE: used in conjunction with initGSSBuffer(...). */ -void resetGSSBuffer(JNIEnv *env, jbyteArray jbytes, - gss_buffer_t cbytes) { - if ((cbytes != NULL) && (cbytes != GSS_C_NO_BUFFER) && - (cbytes->length != 0)) { - (*env)->ReleaseByteArrayElements(env, jbytes, cbytes->value, - JNI_ABORT); +void resetGSSBuffer(gss_buffer_t cbytes) { + if ((cbytes != NULL) && (cbytes != GSS_C_NO_BUFFER)) { + free(cbytes->value); + cbytes->length = 0; + cbytes->value = NULL; } } + /* * Utility routine for creating a jbyteArray object using * the byte[] value in specified gss_buffer_t structure. - * NOTE: the specified gss_buffer_t structure will be - * released in this routine. + * NOTE: the specified gss_buffer_t structure is always + * released. */ jbyteArray getJavaBuffer(JNIEnv *env, gss_buffer_t cbytes) { - jbyteArray result; + jbyteArray result = NULL; OM_uint32 minor; // don't care, just so it compiles - if ((cbytes != NULL) && (cbytes != GSS_C_NO_BUFFER) && - (cbytes->length != 0)) { - result = (*env)->NewByteArray(env, cbytes->length); - if (result != NULL) - (*env)->SetByteArrayRegion(env, result, 0, cbytes->length, - cbytes->value); + if (cbytes != NULL) { + if ((cbytes != GSS_C_NO_BUFFER) && (cbytes->length != 0)) { + result = (*env)->NewByteArray(env, cbytes->length); + if (result == NULL) { + goto finish; + } + (*env)->SetByteArrayRegion(env, result, 0, cbytes->length, + cbytes->value); + if ((*env)->ExceptionCheck(env)) { + result = NULL; + } + } + finish: (*ftab->releaseBuffer)(&minor, cbytes); return result; } @@ -623,8 +655,7 @@ jbyteArray getJavaBuffer(JNIEnv *env, gss_buffer_t cbytes) { /* * Utility routine for creating a non-mech gss_OID using * the specified org.ietf.jgss.Oid object. - * NOTE: need to call deleteGSSOID(...) afterwards to - * release the created gss_OID structure. + * NOTE: must call deleteGSSOID(...) to free up the gss_OID. */ gss_OID newGSSOID(JNIEnv *env, jobject jOid) { jbyteArray jbytes; @@ -633,8 +664,6 @@ gss_OID newGSSOID(JNIEnv *env, jobject jOid) { if (jOid != NULL) { jbytes = (*env)->CallObjectMethod(env, jOid, MID_Oid_getDER); if ((*env)->ExceptionCheck(env)) { - gssEx = (*env)->ExceptionOccurred(env); - (*env)->Throw(env, gssEx); return GSS_C_NO_OID; } cOid = malloc(sizeof(struct gss_OID_desc_struct)); @@ -646,17 +675,24 @@ gss_OID newGSSOID(JNIEnv *env, jobject jOid) { cOid->elements = malloc(cOid->length); if (cOid->elements == NULL) { throwOutOfMemoryError(env,NULL); - free(cOid); - return GSS_C_NO_OID; + goto cleanup; } (*env)->GetByteArrayRegion(env, jbytes, 2, cOid->length, cOid->elements); - (*env)->DeleteLocalRef(env, jbytes); + if ((*env)->ExceptionCheck(env)) { + goto cleanup; + } return cOid; } else { return GSS_C_NO_OID; } + cleanup: + (*env)->DeleteLocalRef(env, jbytes); + free(cOid->elements); + free(cOid); + return GSS_C_NO_OID; } + /* * Utility routine for releasing the specified gss_OID * structure. @@ -668,6 +704,7 @@ void deleteGSSOID(gss_OID oid) { free(oid); } } + /* * Utility routine for creating a org.ietf.jgss.Oid * object using the specified gss_OID structure. @@ -676,7 +713,7 @@ jobject getJavaOID(JNIEnv *env, gss_OID cOid) { int cLen; char oidHdr[2]; jbyteArray jbytes; - jobject result; + jobject result = NULL; if ((cOid == NULL) || (cOid == GSS_C_NO_OID)) { return NULL; @@ -685,12 +722,21 @@ jobject getJavaOID(JNIEnv *env, gss_OID cOid) { oidHdr[0] = 6; oidHdr[1] = cLen; jbytes = (*env)->NewByteArray(env, cLen+2); - CHECK_NULL_RETURN(jbytes, NULL); + if (jbytes == NULL) { + return NULL; + } (*env)->SetByteArrayRegion(env, jbytes, 0, 2, (jbyte *) oidHdr); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } (*env)->SetByteArrayRegion(env, jbytes, 2, cLen, (jbyte *) cOid->elements); - + if ((*env)->ExceptionCheck(env)) { + return NULL; + } result = (*env)->NewObject(env, CLS_Oid, MID_Oid_ctor1, jbytes); - JNU_CHECK_EXCEPTION_RETURN(env, NULL); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } (*env)->DeleteLocalRef(env, jbytes); return result; } @@ -700,7 +746,7 @@ jobject getJavaOID(JNIEnv *env, gss_OID cOid) { * NOTE: need to call deleteGSSOIDSet(...) afterwards * to release the created gss_OID_set structure. */ -gss_OID_set newGSSOIDSet(JNIEnv *env, gss_OID oid) { +gss_OID_set newGSSOIDSet(gss_OID oid) { gss_OID_set oidSet; OM_uint32 minor; // don't care; just so it compiles @@ -741,30 +787,26 @@ jobjectArray getJavaOIDArray(JNIEnv *env, gss_OID_set cOidSet) { if (cOidSet != NULL && cOidSet != GSS_C_NO_OID_SET) { numOfOids = cOidSet->count; jOidSet = (*env)->NewObjectArray(env, numOfOids, CLS_Oid, NULL); - if (jOidSet == NULL) { + if ((*env)->ExceptionCheck(env)) { return NULL; } - if (jOidSet != NULL) { - for (i = 0; i < numOfOids; i++) { - jOid = getJavaOID(env, &(cOidSet->elements[i])); - (*env)->SetObjectArrayElement(env, jOidSet, i, jOid); - (*env)->DeleteLocalRef(env, jOid); + for (i = 0; i < numOfOids; i++) { + jOid = getJavaOID(env, &(cOidSet->elements[i])); + if ((*env)->ExceptionCheck(env)) { + return NULL; } + (*env)->SetObjectArrayElement(env, jOidSet, i, jOid); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + (*env)->DeleteLocalRef(env, jOid); } return jOidSet; } return NULL; } -void debug(JNIEnv *env, char *msg) { - jstring jmsg = (*env)->NewStringUTF(env, msg); - CHECK_NULL(jmsg); - (*env)->CallStaticVoidMethod(env, CLS_SunNativeProvider, - MID_SunNativeProvider_debug, jmsg); - (*env)->DeleteLocalRef(env, jmsg); -} - -int sameMech(JNIEnv *env, gss_OID mech, gss_OID mech2) { +int sameMech(gss_OID mech, gss_OID mech2) { int result = JNI_FALSE; // default to not equal if (mech->length == mech2->length) { diff --git a/jdk/src/share/native/sun/security/jgss/wrapper/NativeUtil.h b/jdk/src/share/native/sun/security/jgss/wrapper/NativeUtil.h index 58334a38989..78f72269f8c 100644 --- a/jdk/src/share/native/sun/security/jgss/wrapper/NativeUtil.h +++ b/jdk/src/share/native/sun/security/jgss/wrapper/NativeUtil.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * 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,12 +37,13 @@ extern "C" { extern OM_uint32 getGSSTime(jint); extern void checkStatus(JNIEnv *, jobject, OM_uint32, OM_uint32, char*); extern jint checkTime(OM_uint32); - extern jint initGSSBuffer(JNIEnv *, jbyteArray, gss_buffer_t); - extern void resetGSSBuffer(JNIEnv *, jbyteArray, gss_buffer_t); + extern void throwOutOfMemoryError(JNIEnv *, const char*); + extern void initGSSBuffer(JNIEnv *, jbyteArray, gss_buffer_t); + extern void resetGSSBuffer(gss_buffer_t); extern gss_OID newGSSOID(JNIEnv *, jobject); extern void deleteGSSOID(gss_OID); - extern gss_OID_set newGSSOIDSet(JNIEnv *, gss_OID); + extern gss_OID_set newGSSOIDSet(gss_OID); extern void deleteGSSOIDSet(gss_OID_set); extern jbyteArray getJavaBuffer(JNIEnv *, gss_buffer_t); @@ -51,13 +52,12 @@ extern "C" { extern jobjectArray getJavaOIDArray(JNIEnv *, gss_OID_set); extern jstring getMinorMessage(JNIEnv *, jobject, OM_uint32); - extern void debug(JNIEnv *, char *); - extern int sameMech(JNIEnv *, gss_OID, gss_OID); + extern int sameMech(gss_OID, gss_OID); JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *, void *); JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *, void *); - extern char debugBuf[]; + extern int JGSS_DEBUG; extern jclass CLS_Object; extern jclass CLS_GSSNameElement; @@ -85,6 +85,12 @@ extern "C" { extern jfieldID FID_NativeGSSContext_flags; extern jfieldID FID_NativeGSSContext_lifetime; extern jfieldID FID_NativeGSSContext_actualMech; + #define TRACE0(s) { if (JGSS_DEBUG) { puts(s); fflush(stdout); }} + #define TRACE1(s, p1) { if (JGSS_DEBUG) { printf(s"\n", p1); fflush(stdout); }} + #define TRACE2(s, p1, p2) { if (JGSS_DEBUG) { printf(s"\n", p1, p2); fflush(stdout); }} + #define TRACE3(s, p1, p2, p3) { if (JGSS_DEBUG) { printf(s"\n", p1, p2, p3); fflush(stdout); }} + + #ifdef __cplusplus } #endif diff --git a/jdk/src/share/native/sun/security/smartcardio/pcsc.c b/jdk/src/share/native/sun/security/smartcardio/pcsc.c index 29f0c64e12d..8c33f2a03d2 100644 --- a/jdk/src/share/native/sun/security/smartcardio/pcsc.c +++ b/jdk/src/share/native/sun/security/smartcardio/pcsc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -64,17 +64,32 @@ #define J2PCSC_EXCEPTION_NAME "sun/security/smartcardio/PCSCException" +void throwOutOfMemoryError(JNIEnv *env, const char *msg) { + jclass cls = (*env)->FindClass(env, "java/lang/OutOfMemoryError"); + + if (cls != NULL) /* Otherwise an exception has already been thrown */ + (*env)->ThrowNew(env, cls, msg); + +} + void throwPCSCException(JNIEnv* env, LONG code) { jclass pcscClass; jmethodID constructor; jthrowable pcscException; pcscClass = (*env)->FindClass(env, J2PCSC_EXCEPTION_NAME); - assert(pcscClass != NULL); + if (pcscClass == NULL) { + return; + } constructor = (*env)->GetMethodID(env, pcscClass, "<init>", "(I)V"); - assert(constructor != NULL); - pcscException = (jthrowable) (*env)->NewObject(env, pcscClass, constructor, (jint)code); - (*env)->Throw(env, pcscException); + if (constructor == NULL) { + return; + } + pcscException = (jthrowable) (*env)->NewObject(env, pcscClass, + constructor, (jint)code); + if (pcscException != NULL) { + (*env)->Throw(env, pcscException); + } } jboolean handleRV(JNIEnv* env, LONG code) { @@ -121,6 +136,10 @@ jobjectArray pcsc_multi2jstring(JNIEnv *env, char *spec) { } tab = (char **)malloc(cnt * sizeof(char *)); + if (tab == NULL) { + throwOutOfMemoryError(env, NULL); + return NULL; + } cnt = 0; cp = spec; @@ -130,12 +149,26 @@ jobjectArray pcsc_multi2jstring(JNIEnv *env, char *spec) { } stringClass = (*env)->FindClass(env, "java/lang/String"); - assert(stringClass != NULL); + if (stringClass == NULL) { + free(tab); + return NULL; + } result = (*env)->NewObjectArray(env, cnt, stringClass, NULL); - while (cnt-- > 0) { - js = (*env)->NewStringUTF(env, tab[cnt]); - (*env)->SetObjectArrayElement(env, result, cnt, js); + if (result != NULL) { + while (cnt-- > 0) { + js = (*env)->NewStringUTF(env, tab[cnt]); + if ((*env)->ExceptionCheck(env)) { + free(tab); + return NULL; + } + (*env)->SetObjectArrayElement(env, result, cnt, js); + if ((*env)->ExceptionCheck(env)) { + free(tab); + return NULL; + } + (*env)->DeleteLocalRef(env, js); + } } free(tab); return result; @@ -158,6 +191,11 @@ JNIEXPORT jobjectArray JNICALL Java_sun_security_smartcardio_PCSC_SCardListReade dprintf1("-size: %d\n", size); mszReaders = malloc(size); + if (mszReaders == NULL) { + throwOutOfMemoryError(env, NULL); + return NULL; + } + rv = CALL_SCardListReaders(context, NULL, mszReaders, &size); if (handleRV(env, rv)) { free(mszReaders); @@ -181,6 +219,9 @@ JNIEXPORT jlong JNICALL Java_sun_security_smartcardio_PCSC_SCardConnect DWORD proto; readerName = (*env)->GetStringUTFChars(env, jReaderName, NULL); + if (readerName == NULL) { + return 0; + } rv = CALL_SCardConnect(context, readerName, jShareMode, jPreferredProtocols, &card, &proto); (*env)->ReleaseStringUTFChars(env, jReaderName, readerName); dprintf1("-cardhandle: %x\n", card); @@ -210,6 +251,9 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_smartcardio_PCSC_SCardTransmit sendPci.cbPciLength = sizeof(SCARD_IO_REQUEST); sbuf = (unsigned char *) ((*env)->GetByteArrayElements(env, jBuf, NULL)); + if (sbuf == NULL) { + return NULL; + } rv = CALL_SCardTransmit(card, &sendPci, sbuf + ofs, len, NULL, rbuf, &rlen); (*env)->ReleaseByteArrayElements(env, jBuf, (jbyte *)sbuf, JNI_ABORT); @@ -218,7 +262,12 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_smartcardio_PCSC_SCardTransmit } jOut = (*env)->NewByteArray(env, rlen); - (*env)->SetByteArrayRegion(env, jOut, 0, rlen, (jbyte *)rbuf); + if (jOut != NULL) { + (*env)->SetByteArrayRegion(env, jOut, 0, rlen, (jbyte *)rbuf); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + } return jOut; } @@ -234,7 +283,7 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_smartcardio_PCSC_SCardStatus DWORD state; DWORD protocol; jbyteArray jArray; - jbyte tmp; + jbyte status[2]; rv = CALL_SCardStatus(card, readerName, &readerLen, &state, &protocol, atr, &atrLen); if (handleRV(env, rv)) { @@ -245,13 +294,19 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_smartcardio_PCSC_SCardStatus dprintf1("-protocol: %d\n", protocol); jArray = (*env)->NewByteArray(env, atrLen); + if (jArray == NULL) { + return NULL; + } (*env)->SetByteArrayRegion(env, jArray, 0, atrLen, (jbyte *)atr); - - tmp = (jbyte)state; - (*env)->SetByteArrayRegion(env, jStatus, 0, 1, &tmp); - tmp = (jbyte)protocol; - (*env)->SetByteArrayRegion(env, jStatus, 1, 1, &tmp); - + if ((*env)->ExceptionCheck(env)) { + return NULL; + } + status[0] = (jbyte) state; + status[1] = (jbyte) protocol; + (*env)->SetByteArrayRegion(env, jStatus, 0, 2, status); + if ((*env)->ExceptionCheck(env)) { + return NULL; + } return jArray; } @@ -274,36 +329,72 @@ JNIEXPORT jintArray JNICALL Java_sun_security_smartcardio_PCSC_SCardGetStatusCha SCARDCONTEXT context = (SCARDCONTEXT)jContext; LONG rv; int readers = (*env)->GetArrayLength(env, jReaderNames); - SCARD_READERSTATE *readerState = malloc(readers * sizeof(SCARD_READERSTATE)); + SCARD_READERSTATE *readerState; int i; - jintArray jEventState; - int *currentState = (*env)->GetIntArrayElements(env, jCurrentState, NULL); + jintArray jEventState = NULL; + int *currentState = NULL; + const char *readerName; + + readerState = calloc(readers, sizeof(SCARD_READERSTATE)); + if (readerState == NULL) { + throwOutOfMemoryError(env, NULL); + return NULL; + } + + currentState = (*env)->GetIntArrayElements(env, jCurrentState, NULL); + if (currentState == NULL) { + free(readerState); + return NULL; + } for (i = 0; i < readers; i++) { jobject jReaderName = (*env)->GetObjectArrayElement(env, jReaderNames, i); - readerState[i].szReader = (*env)->GetStringUTFChars(env, jReaderName, NULL); + if ((*env)->ExceptionCheck(env)) { + goto cleanup; + } + readerName = (*env)->GetStringUTFChars(env, jReaderName, NULL); + if (readerName == NULL) { + goto cleanup; + } + readerState[i].szReader = strdup(readerName); + (*env)->ReleaseStringUTFChars(env, jReaderName, readerName); + if (readerState[i].szReader == NULL) { + throwOutOfMemoryError(env, NULL); + goto cleanup; + } readerState[i].pvUserData = NULL; readerState[i].dwCurrentState = currentState[i]; readerState[i].dwEventState = SCARD_STATE_UNAWARE; readerState[i].cbAtr = 0; + (*env)->DeleteLocalRef(env, jReaderName); } - (*env)->ReleaseIntArrayElements(env, jCurrentState, currentState, JNI_ABORT); rv = CALL_SCardGetStatusChange(context, (DWORD)jTimeout, readerState, readers); + if (handleRV(env, rv)) { + goto cleanup; + } jEventState = (*env)->NewIntArray(env, readers); + if (jEventState == NULL) { + goto cleanup; + } for (i = 0; i < readers; i++) { jint eventStateTmp; - jobject jReaderName = (*env)->GetObjectArrayElement(env, jReaderNames, i); dprintf3("-reader status %s: 0x%X, 0x%X\n", readerState[i].szReader, readerState[i].dwCurrentState, readerState[i].dwEventState); - (*env)->ReleaseStringUTFChars(env, jReaderName, readerState[i].szReader); eventStateTmp = (jint)readerState[i].dwEventState; (*env)->SetIntArrayRegion(env, jEventState, i, 1, &eventStateTmp); + if ((*env)->ExceptionCheck(env)) { + jEventState = NULL; + goto cleanup; + } + } +cleanup: + (*env)->ReleaseIntArrayElements(env, jCurrentState, currentState, JNI_ABORT); + for (i = 0; i < readers; i++) { + free((char *)readerState[i].szReader); } free(readerState); - - handleRV(env, rv); return jEventState; } @@ -336,13 +427,18 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_smartcardio_PCSC_SCardControl { SCARDHANDLE card = (SCARDHANDLE)jCard; LONG rv; - jbyte* sendBuffer = (*env)->GetByteArrayElements(env, jSendBuffer, NULL); + jbyte* sendBuffer; jint sendBufferLength = (*env)->GetArrayLength(env, jSendBuffer); jbyte receiveBuffer[MAX_STACK_BUFFER_SIZE]; jint receiveBufferLength = MAX_STACK_BUFFER_SIZE; ULONG returnedLength = 0; jbyteArray jReceiveBuffer; + sendBuffer = (*env)->GetByteArrayElements(env, jSendBuffer, NULL); + if (sendBuffer == NULL) { + return NULL; + } + #ifdef J2PCSC_DEBUG { int k; @@ -375,7 +471,12 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_smartcardio_PCSC_SCardControl #endif jReceiveBuffer = (*env)->NewByteArray(env, returnedLength); + if (jReceiveBuffer == NULL) { + return NULL; + } (*env)->SetByteArrayRegion(env, jReceiveBuffer, 0, returnedLength, receiveBuffer); - + if ((*env)->ExceptionCheck(env)) { + return NULL; + } return jReceiveBuffer; } diff --git a/jdk/src/solaris/back/util_md.h b/jdk/src/solaris/back/util_md.h index 3aac722eef7..91ba1975aa0 100644 --- a/jdk/src/solaris/back/util_md.h +++ b/jdk/src/solaris/back/util_md.h @@ -62,13 +62,13 @@ typedef unsigned long UNSIGNED_JINT; (((UNSIGNED_JINT)(x & 0xff000000)) >> 24)) #define HOST_TO_JAVA_LONG(x) \ ((x << 56) | \ - ((x & 0x000000000000ff00) << 40) | \ - ((x & 0x0000000000ff0000) << 24) | \ - ((x & 0x00000000ff000000) << 8) | \ - ((x & 0x000000ff00000000) >> 8) | \ - ((x & 0x0000ff0000000000) >> 24) | \ - ((x & 0x00ff000000000000) >> 40) | \ - (((UNSIGNED_JLONG)(x & 0xff00000000000000)) >> 56)) + ((x & 0x000000000000ff00LL) << 40) | \ + ((x & 0x0000000000ff0000LL) << 24) | \ + ((x & 0x00000000ff000000LL) << 8) | \ + ((x & 0x000000ff00000000LL) >> 8) | \ + ((x & 0x0000ff0000000000LL) >> 24) | \ + ((x & 0x00ff000000000000LL) >> 40) | \ + (((UNSIGNED_JLONG)(x & 0xff00000000000000ULL)) >> 56)) #define HOST_TO_JAVA_FLOAT(x) stream_encodeFloat(x) #define HOST_TO_JAVA_DOUBLE(x) stream_encodeDouble(x) diff --git a/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java b/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java index 6ca10d10c93..18af8c7830d 100644 --- a/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java +++ b/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java @@ -61,10 +61,8 @@ class FileSystemPreferences extends AbstractPreferences { * Sync interval in seconds. */ private static final int SYNC_INTERVAL = Math.max(1, - Integer.parseInt( - AccessController.doPrivileged( - new sun.security.action.GetPropertyAction( - "java.util.prefs.syncInterval", "30")))); + AccessController.doPrivileged((PrivilegedAction<Integer>) () -> + Integer.getInteger("java.util.prefs.syncInterval", 30))); /** * Returns logger for error messages. Backing store exceptions are logged at diff --git a/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java b/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java index 48a5b946c81..334d1d1c036 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java +++ b/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java @@ -39,6 +39,7 @@ import java.lang.reflect.InvocationTargetException; /** * An utility window class. This is a base class for Tooltip and Balloon. */ +@SuppressWarnings("serial") // JDK-implementation class public abstract class InfoWindow extends Window { private Container container; private Closer closer; @@ -146,6 +147,7 @@ public abstract class InfoWindow extends Window { Rectangle getBounds(); } + @SuppressWarnings("serial") // JDK-implementation class public static class Tooltip extends InfoWindow { public interface LiveArguments extends InfoWindow.LiveArguments { @@ -239,6 +241,7 @@ public abstract class InfoWindow extends Window { } } + @SuppressWarnings("serial") // JDK-implementation class public static class Balloon extends InfoWindow { public interface LiveArguments extends InfoWindow.LiveArguments { diff --git a/jdk/src/solaris/classes/sun/awt/X11/XAWTLookAndFeel.java b/jdk/src/solaris/classes/sun/awt/X11/XAWTLookAndFeel.java index cf6c3345041..a258e8288dd 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XAWTLookAndFeel.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XAWTLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * 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 javax.swing.plaf.basic.BasicBorders; import com.sun.java.swing.plaf.motif.*; import sun.awt.X11.XComponentPeer; +@SuppressWarnings("serial") // JDK-implementation class class XAWTLookAndFeel extends MotifLookAndFeel { /** diff --git a/jdk/src/solaris/classes/sun/awt/X11/XCreateWindowParams.java b/jdk/src/solaris/classes/sun/awt/X11/XCreateWindowParams.java index d61a59a81c0..32d83f193ce 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XCreateWindowParams.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XCreateWindowParams.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; +@SuppressWarnings("serial") // JDK-implementation class public class XCreateWindowParams extends HashMap { public XCreateWindowParams() { } diff --git a/jdk/src/solaris/classes/sun/awt/X11/XCustomCursor.java b/jdk/src/solaris/classes/sun/awt/X11/XCustomCursor.java index 0135e259c48..33ddd383f8b 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XCustomCursor.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XCustomCursor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ import java.awt.*; * @author Thomas Ball * @author Bino George */ +@SuppressWarnings("serial") // JDK-implementation class public class XCustomCursor extends X11CustomCursor { public XCustomCursor(Image cursor, Point hotSpot, String name) diff --git a/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java index cdce154834e..9370b8cdae4 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java @@ -688,6 +688,7 @@ public class XEmbedCanvasPeer extends XCanvasPeer implements WindowFocusListener } } + @SuppressWarnings("serial") // JDK-implementation class private static class XEmbedDropTarget extends DropTarget { public void addDropTargetListener(DropTargetListener dtl) throws TooManyListenersException { diff --git a/jdk/src/solaris/classes/sun/awt/X11/XEmbedChildProxy.java b/jdk/src/solaris/classes/sun/awt/X11/XEmbedChildProxy.java index bca7cf0db68..def4eecf9cd 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XEmbedChildProxy.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedChildProxy.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ import java.awt.Component; import java.awt.Toolkit; import sun.awt.AWTAccessor; +@SuppressWarnings("serial") // JDK-implementation class public class XEmbedChildProxy extends Component { long handle; XEmbeddingContainer container; diff --git a/jdk/src/solaris/classes/sun/awt/X11/XEmbeddedFrame.java b/jdk/src/solaris/classes/sun/awt/X11/XEmbeddedFrame.java index 4e968977d44..132375098d7 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XEmbeddedFrame.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbeddedFrame.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +30,7 @@ import java.awt.*; import java.awt.AWTKeyStroke; import java.util.logging.Logger; +@SuppressWarnings("serial") // JDK-implementation class public class XEmbeddedFrame extends EmbeddedFrame { private static final Logger log = Logger.getLogger(XEmbeddedFrame.class.getName()); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XException.java b/jdk/src/solaris/classes/sun/awt/X11/XException.java index 1ec83e99961..732c94b5abe 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XException.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +30,7 @@ package sun.awt.X11; * * @since 1.5 */ +@SuppressWarnings("serial") // JDK-implementation class public class XException extends RuntimeException { public XException() { super(); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java index 5da53e88634..b3d0731d5f0 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java @@ -199,12 +199,13 @@ class XFileDialogPeer extends XDialogPeer implements FileDialogPeer, ActionListe // After showing we should display 'user.dir' as current directory // if user didn't set directory programatically pathField = new TextField(savedDir != null ? savedDir : userDir); - - pathChoice = new Choice() { + @SuppressWarnings("serial") // Anonymous class + Choice tmp = new Choice() { public Dimension getPreferredSize() { return new Dimension(PATH_CHOICE_WIDTH, pathField.getPreferredSize().height); } }; + pathChoice = tmp; pathPanel = new Panel(); pathPanel.setLayout(new BorderLayout()); @@ -845,6 +846,7 @@ class XFileDialogPeer extends XDialogPeer implements FileDialogPeer, ActionListe } } +@SuppressWarnings("serial") // JDK-implementation class class Separator extends Canvas { public final static int HORIZONTAL = 0; public final static int VERTICAL = 1; diff --git a/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java b/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java index ac93ae6501e..27eb71782aa 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java @@ -284,6 +284,11 @@ class XFramePeer extends XDecoratedPeer implements FramePeer { if (stateLog.isLoggable(PlatformLogger.Level.FINER)) { stateLog.finer("DeIconifying " + this); } + + XNETProtocol net_protocol = XWM.getWM().getNETProtocol(); + if (net_protocol != null) { + net_protocol.setActiveWindow(this); + } xSetVisible(true); } } diff --git a/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java b/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java index 722261113d1..a9122c8e906 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java @@ -213,7 +213,7 @@ final class XNETProtocol extends XProtocol implements XStateProtocol, XLayerProt * If window is showing then it uses ClientMessage, otherwise adjusts NET_WM_STATE list * @param window Window which NET_WM_STATE property is being modified * @param state State atom to be set/reset - * @param reset Indicates operation, 'set' if false, 'reset' if true + * @param set Indicates operation, 'set' if false, 'reset' if true */ private void setStateHelper(XWindowPeer window, XAtom state, boolean set) { if (log.isLoggable(PlatformLogger.Level.FINER)) { @@ -249,6 +249,7 @@ final class XNETProtocol extends XProtocol implements XStateProtocol, XLayerProt XAtom XA_UTF8_STRING = XAtom.get("UTF8_STRING"); /* like STRING but encoding is UTF-8 */ XAtom XA_NET_SUPPORTING_WM_CHECK = XAtom.get("_NET_SUPPORTING_WM_CHECK"); XAtom XA_NET_SUPPORTED = XAtom.get("_NET_SUPPORTED"); /* list of protocols (property of root) */ + XAtom XA_NET_ACTIVE_WINDOW = XAtom.get("_NET_ACTIVE_WINDOW"); XAtom XA_NET_WM_NAME = XAtom.get("_NET_WM_NAME"); /* window property */ XAtom XA_NET_WM_STATE = XAtom.get("_NET_WM_STATE");/* both window property and request */ @@ -325,6 +326,32 @@ final class XNETProtocol extends XProtocol implements XStateProtocol, XLayerProt return res; } + public void setActiveWindow(XWindow window) { + if (!active() || !checkProtocol(XA_NET_SUPPORTED, XA_NET_ACTIVE_WINDOW)) { + return; + } + + XClientMessageEvent msg = new XClientMessageEvent(); + msg.zero(); + msg.set_type(XConstants.ClientMessage); + msg.set_message_type(XA_NET_ACTIVE_WINDOW.getAtom()); + msg.set_display(XToolkit.getDisplay()); + msg.set_window(window.getWindow()); + msg.set_format(32); + msg.set_data(0, 1); + msg.set_data(1, XToolkit.getCurrentServerTime()); + msg.set_data(2, 0); + + XToolkit.awtLock(); + try { + XlibWrapper.XSendEvent(XToolkit.getDisplay(), XToolkit.getDefaultRootWindow(), false, + XConstants.SubstructureRedirectMask | XConstants.SubstructureNotifyMask, msg.getPData()); + } finally { + XToolkit.awtUnlock(); + msg.dispose(); + } + } + boolean isWMName(String name) { if (!active()) { return false; diff --git a/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java index f4bf1ec2062..9f0a717e5e4 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java @@ -63,7 +63,6 @@ import sun.awt.CausedFocusEvent; import sun.awt.AWTAccessor; import sun.awt.SunToolkit; - final class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { private final AWTTextPane textPane; @@ -615,7 +614,7 @@ final class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { } } - + @SuppressWarnings("serial") // JDK-implementation class static final class XAWTCaret extends DefaultCaret { @Override public void focusGained(FocusEvent e) { @@ -647,6 +646,7 @@ final class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { } } + @SuppressWarnings("serial") // JDK-implementation class final class XAWTScrollBarButton extends BasicArrowButton { private UIDefaults uidefaults = XToolkit.getUIDefaults(); @@ -907,6 +907,7 @@ final class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { } } + @SuppressWarnings("serial") // JDK-implementation class final class AWTTextArea extends JTextArea implements DocumentListener { private boolean isFocused = false; @@ -1105,6 +1106,7 @@ final class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { } } + @SuppressWarnings("serial") // JDK-implementation class private class AWTTextPane extends JScrollPane implements FocusListener { private final JTextArea jtext; @@ -1190,6 +1192,7 @@ final class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { return xwin.getGraphics(); } + @SuppressWarnings("serial") // JDK-implementation class final class XAWTScrollBar extends ScrollBar { XAWTScrollBar(int i) { @@ -1205,6 +1208,7 @@ final class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { } } + @SuppressWarnings("serial") // JDK-implementation class static class BevelBorder extends AbstractBorder implements UIResource { private Color darkShadow = SystemColor.controlDkShadow; private Color lightShadow = SystemColor.controlLtHighlight; diff --git a/jdk/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java index 3db7ed4ef9d..aeee2a022a4 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -541,6 +541,7 @@ final class XTextFieldPeer extends XComponentPeer implements TextFieldPeer { } } + @SuppressWarnings("serial") // JDK-implementation class final class XAWTTextField extends JPasswordField implements ActionListener, DocumentListener { diff --git a/jdk/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java index e2da468f440..86e6e064fc0 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -501,6 +501,7 @@ public class XTrayIconPeer implements TrayIconPeer, // Special embedded frame for tray icon // *************************************** + @SuppressWarnings("serial") // JDK-implementation class private static class XTrayIconEmbeddedFrame extends XEmbeddedFrame { public XTrayIconEmbeddedFrame(){ super(XToolkit.getDefaultRootWindow(), true, true); @@ -527,6 +528,7 @@ public class XTrayIconPeer implements TrayIconPeer, // Classes for painting an image on canvas // *************************************** + @SuppressWarnings("serial") // JDK-implementation class static class TrayIconCanvas extends IconCanvas { TrayIcon target; boolean autosize; @@ -548,6 +550,7 @@ public class XTrayIconPeer implements TrayIconPeer, } } + @SuppressWarnings("serial") // JDK-implementation class public static class IconCanvas extends Canvas { volatile Image image; IconObserver observer; diff --git a/jdk/src/solaris/classes/sun/awt/X11CustomCursor.java b/jdk/src/solaris/classes/sun/awt/X11CustomCursor.java index ed9a804cc60..969e7c5116e 100644 --- a/jdk/src/solaris/classes/sun/awt/X11CustomCursor.java +++ b/jdk/src/solaris/classes/sun/awt/X11CustomCursor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * 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 sun.awt.image.ImageRepresentation; * @see Component#setCursor * @author Thomas Ball */ +@SuppressWarnings("serial") // JDK-implementation class public abstract class X11CustomCursor extends CustomCursor { public X11CustomCursor(Image cursor, Point hotSpot, String name) diff --git a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpNet.java b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpNet.java index 2eb89b987d0..367ab1f1e4d 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpNet.java +++ b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpNet.java @@ -33,15 +33,15 @@ import java.nio.channels.AlreadyBoundException; import java.util.Set; import java.util.HashSet; import java.security.AccessController; -import sun.security.action.GetPropertyAction; +import java.security.PrivilegedAction; import sun.nio.ch.IOUtil; import sun.nio.ch.Net; import com.sun.nio.sctp.SctpSocketOption; import static com.sun.nio.sctp.SctpStandardSocketOptions.*; public class SctpNet { - static final String osName = AccessController.doPrivileged( - new GetPropertyAction("os.name")); + private static final String osName = AccessController.doPrivileged( + (PrivilegedAction<String>) () -> System.getProperty("os.name")); /* -- Miscellaneous SCTP utilities -- */ diff --git a/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java b/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java index fe430cc5ee6..9f45afdab48 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java +++ b/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java @@ -482,7 +482,7 @@ class UnixPath @Override public Path normalize() { final int count = getNameCount(); - if (count == 0) + if (count == 0 || isEmpty()) return this; boolean[] ignore = new boolean[count]; // true => ignore name diff --git a/jdk/src/solaris/classes/sun/print/IPPPrintService.java b/jdk/src/solaris/classes/sun/print/IPPPrintService.java index fbf8802edb5..2134c71321e 100644 --- a/jdk/src/solaris/classes/sun/print/IPPPrintService.java +++ b/jdk/src/solaris/classes/sun/print/IPPPrintService.java @@ -772,6 +772,7 @@ public class IPPPrintService implements PrintService, SunPrinterJobService { } //This class is for getting all pre-defined Finishings + @SuppressWarnings("serial") // JDK implementation class private class ExtFinishing extends Finishings { ExtFinishing(int value) { super(100); // 100 to avoid any conflicts with predefined values. diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/appletviewer.1 b/jdk/src/solaris/doc/sun/man/man1/ja/appletviewer.1 index 5aa0ad3d1fe..76609bfd263 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/appletviewer.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/appletviewer.1 @@ -1,66 +1,105 @@ -." Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." 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 appletviewer 1 "07 May 2011" - -.LP -.SH "名前" -appletviewer \- Java アプレットビューア -.LP -.LP -\f3appletviewer\fP コマンドは Web ブラウザの外でアプレットを実行させます。 -.LP -.SH "形式" -.LP -.LP -\f4appletviewer\fP \f2[\fP \f2options\fP \f2] \fP\f2urls\fP ... -.LP -.SH "説明" -.LP -.LP -\f3appletviewer\fP コマンドは \f2urls\fP に指定されたドキュメントあるいはリソースと接続して、そのドキュメントが参照するそれぞれのアプレットを独自のウィンドウで表示します。注: \f2urls\fP によって参照されたドキュメントが、\f2OBJECT\fP、\f2EMBED\fP、または \f2APPLET\fP タグでどのアプレットも参照していない場合、\f3appletviewer\fP は何も行いません。\f3appletviewer\fP でサポートされる HTML タグの詳細については、 -.na -\f2「アプレットビューアのタグ」\fP @ +'\" t +.\" Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: appletviewer +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "appletviewer" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +appletviewer \- Webブラウザの外側でアプレットを実行します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIappletviewer\fR [\fIoptions\fR] \fIurl\fR\&.\&.\&. .fi -http://java.sun.com/javase/6/docs/technotes/tools/appletviewertags.htmlを参照してください。 -.LP -.LP -\f3注:\fP \f3appletviewer\fP は、RFC2396 で規定されたエスケープ機構に従って符号化された URL を必要とします。サポートされるのは、符号化された URL だけです。ただし、ファイル名については、RFC2396 に指定された方法で符号化を解除しておく必要があります。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -\-debug -Java デバッガ jdb(1) でアプレットビューアを開始します。これにより、ドキュメント中のアプレットをデバッグすることができます。 -.TP 3 -\-encoding \ \ encoding name -入力 HTML ファイルのエンコーディング名を指定します。 -.TP 3 -\-Jjavaoption -文字列 \f2javaoption\fP は、appletviewer を実行する Java インタプリタに 1 つの引数として渡されます。引数にスペースを含めてはいけません。複数の引数は、各引数のすべてを接頭辞 \f3\-J\fP で始めることにより区分する必要があります。これは、コンパイラの実行環境、またはメモリーの利用に有効です。 +.if n \{\ .RE +.\} +.PP +\fIoptions\fR +.RS 4 +空白で区切られたコマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIurl\fR +.RS 4 +表示するドキュメントまたはリソースの場所。空白で区切られた複数のURLを指定できます。 +.RE +.SH "説明" +.PP +\fIappletviewer\fRコマンドは\fIurls\fRに指定されたドキュメントあるいはリソースと接続して、そのドキュメントが参照するそれぞれのアプレットを独自のウィンドウで表示します。urlsによって参照されたドキュメントが、\fIOBJECT\fR、\fIEMBED\fRまたは\fIAPPLET\fRタグでどのアプレットも参照していない場合、\fIappletviewer\fRコマンドは何も行いません。\fIappletviewer\fRコマンドでサポートされるHTMLタグの詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/appletviewertags\&.htmlにある +アプレット・ビューア・タグを参照してください。 +.PP +\fIappletviewer\fRコマンドは、RFC2396で定義されたエスケープ・メカニズムに従ってエンコードされたURLを必要とします。サポートされるのは、エンコードされたURLのみです。ただし、ファイル名については、RFC2396の仕様に従ってエンコードを解除しておく必要があります。 +.PP +\fB注意:\fR +The +\fIappletviewer\fRコマンドは開発専用です。詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/samples/aboutCodeSamples\&.htmlにある +サンプル/テスト・アプリケーションおよびコードについてを参照してください。 +.SH "オプション" +.PP +\-debug +.RS 4 +\fIjdb\fRコマンドを使用してJavaデバッガでアプレット・ビューアを開始して、ドキュメント中のアプレットをデバッグします。 +.RE +.PP +\-encoding \fIencoding\-name\fR +.RS 4 +入力HTMLファイルのエンコーディング名を指定します。 +.RE +.PP +\-J\fIjavaoption\fR +.RS 4 +文字列\fIjavaoption\fRは、アプレット・ビューアを実行するJavaインタプリタに1つの引数として渡されます。引数にスペースを含めないでください。複数の引数は、すべてが接頭辞\fI\-J\fRで始まる必要があります。これは、コンパイラの実行環境またはメモリー使用の調整に有効です。 +.RE +.PP -.LP -.LP - -.LP - +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/extcheck.1 b/jdk/src/solaris/doc/sun/man/man1/ja/extcheck.1 index d0a671568f8..fdd5a8e0cb2 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/extcheck.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/extcheck.1 @@ -1,73 +1,108 @@ -." 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 -." 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 extcheck 1 "07 May 2011" - -.LP -.SH "名前" -extcheck \- jar の競合検出ユーティリティー -.LP -.LP -\f3extcheck\fP は、ターゲットの jar ファイルと現在インストールされている拡張機能の jar ファイル間のバージョンの競合を検出します。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: extcheck +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "extcheck" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +extcheck \- ターゲットのJavaアーカイブ(JAR)ファイルと現在インストールされている拡張機能のJARファイル間のバージョンの競合を検出します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -extcheck [ \-verbose ] targetfile.jar -.fl -\fP +\fIextcheck\fR [\fIoptions\fR] \fItargetfile\&.jar\fR .fi - -.LP -.SH "説明" -.LP -.LP -\f3extcheck\fP ユーティリティーは、指定された Jar ファイルのタイトルおよびバージョンが Java(TM) 2 SDK にインストールされている拡張機能と競合していないかをチェックします。拡張機能をインストールする前に、このユーティリティーを使って、バージョンが同じか、より新しい拡張機能がすでにインストールされていないかどうかを調べることができます。 -.LP -.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 -.LP -競合が検出されない場合のリターンコードは \f20\fP です。 -.LP -.LP -拡張機能ディレクトリ内のいずれかの jar ファイルのマニフェストに、同一の \f2Specification\-title\fP 、および同一またはより新しい \f2Specification\-version\fP 番号がある場合は、ゼロでないエラーコードが返されます。 \f2targetfile.jar\fP のマニフェストに \f2Specification\-title\fP または \f2Specification\-version\fP 属性がない場合も、ゼロでないエラーコードが返されます。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -\-verbose -拡張機能ディレクトリ内の Jar ファイルを、チェック時に一覧表示します。また、ターゲット jar ファイルのマニフェストの属性、および競合する jar ファイルについても報告します。 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fItargetfile\&.jar\fR +.RS 4 +バージョンの競合を検出するために、現在インストールされている拡張機能JARファイルと比較するターゲットJARファイル。 +.RE +.SH "説明" +.PP +\fIextcheck\fRコマンドは、指定されたJARファイルのタイトルおよびバージョンがJava SE SDKにインストールされている拡張機能と競合していないかをチェックします。拡張機能をインストールする前に、このユーティリティを使用して、同じバージョンまたはより新しいバージョンの拡張機能がすでにインストールされていないかどうかを調べることができます。 +.PP +\fIextcheck\fRコマンドは、\fItargetfile\&.jar\fRファイルのマニフェスト内のヘッダーSpecification\-titleおよびSpecification\-versionを、拡張機能ディレクトリ内に現在インストールされているすべてのJARファイル内の対応するヘッダーと比較します。デフォルトでは、拡張機能ディレクトリは、Oracle Solarisの場合は\fIjre/lib/ext\fR、Windowsの場合は\fI\ejre\elib\eext\fRです。\fIextcheck\fRコマンドは、\fIjava\&.lang\&.Package\&.isCompatibleWith\fRメソッドと同様の方法でバージョン番号を比較します。 +.PP +競合が検出されない場合、リターン・コードは0です。 +.PP +拡張機能ディレクトリ内のいずれかのJARファイルのマニフェストに、同一の\fISpecification\-title\fR、および同一またはより新しい\fISpecification\-version\fR番号がある場合は、ゼロでないエラー・コードが返されます。\fItargetfile\&.jar\fRのマニフェスト・ファイルに\fISpecification\-title\fRまたは\fISpecification\-version\fR属性がない場合も、ゼロでないエラー・コードが返されます。 +.SH "オプション" +.PP +\-verbose +.RS 4 +拡張機能ディレクトリ内のJARファイルを、チェック時に一覧表示します。また、ターゲットJARファイルのマニフェストの属性、および競合するJARファイルについても報告します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシン(JVM)に\fIoption\fRを渡します。optionには、Java起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 .RE - -.LP .SH "関連項目" -.LP -.LP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} jar(1) -.LP - +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/idlj.1 b/jdk/src/solaris/doc/sun/man/man1/ja/idlj.1 index 96ce9478bdc..92b10e2e57d 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/idlj.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/idlj.1 @@ -1,738 +1,554 @@ -." 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 -." 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 idlj 1 "07 May 2011" - -.LP -.SH "名前" -idlj \- IDL\-to\-Java コンパイラ -.LP -\f3idlj\fP は、指定された IDL ファイルから Java バインディングを生成します。 -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: idlj +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java IDLおよびRMI-IIOPツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "idlj" "1" "2013年11月21日" "JDK 8" "Java IDLおよびRMI-IIOPツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +idlj \- 指定されたインタフェース定義言語(IDL)ファイルに対してJavaバインディングを生成します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -idlj [ \fP\f3options\fP\f3 ] \fP\f4idl\-file\fP\f3 -.fl -\fP +\fIidlj\fR [ \fIoptions\fR ] \fIidlfile\fR .fi - -.LP -.LP -\f2idl\-file\fP は、インタフェース定義言語 (IDL) による定義が入ったファイルの名前です。\f2options\fP の順番は任意ですが、\f2idl\-file\fP よりも前に指定しなければなりません。 -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。optionsの順番は任意ですが、\fIidlfile\fRよりも前に指定する必要があります。 +.RE +.PP +\fIidlfile\fR +.RS 4 +インタフェース定義言語(IDL)による定義が含まれるファイルの名前。 +.RE .SH "説明" -.LP -.LP -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 という名前だったものがあります。 -.LP -.SS -クライアントバインディングおよびサーバーバインディングの発行 -.LP -.LP -My.idl という名前の IDL ファイルに対して Java バインディングを生成するには、次のコマンドを実行します。 -.LP +.PP +IDL\-to\-Javaコンパイラは、指定されたIDLファイルに対してJavaバインディングを生成します。バインディングの詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/mapping/jidlMapping\&.htmlにある +Java IDL: Java言語マッピングへのIDLを参照してください。 +.PP +IDL\-to\-Javaコンパイラの以前のリリースの中には、\fIidltojava\fRという名前だったものがあります。 +.SS "クライアント・バインディングおよびサーバー・バインディングの発行" +.PP +次の\fIidlj\fRコマンドは、クライアント側バインディングを含む\fIMy\&.idl\fRという名前のIDLファイルを生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -idlj My.idl -.fl -\fP +idlj My\&.idl .fi - -.LP -.LP -これにより、クライアント側のバインディングが生成されます。このコマンドは、次のコマンドと等価です。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-fclient\fP My.idl -.fl -.fi - -.LP -.LP -クライアント側のバインディングには、サーバー側のスケルトンは組み込まれていません。インタフェースに対してサーバー側のバインディングを生成するには、次のコマンドを実行します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-fserver\fP My.idl -.fl -.fi - -.LP -.LP -サーバー側のバインディングには、クライアント側のバインディングのほかに、スケルトンも含まれています。これらはすべて、 \f2POA\fP (つまり継承モデル) クラスです。クライアント側とサーバー側の両方のバインディングを生成する場合は、次のコマンド (どれも等価) のうちの 1 つを使用します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-fclient \-fserver\fP My.idl -.fl -idlj \f3\-fall\fP My.idl -.fl -.fi - -.LP -.LP -サーバー側で可能なモデルは 2 つあります。継承モデルと Tie 委譲モデルです。 -.LP -.LP -デフォルトのサーバー側のモデルは、「移殖可能サーバント継承モデル」です。\f2My.idl\fP 内で \f2My\fP インタフェースが定義されている場合は、\f2MyPOA.java\fP というファイルが生成されます。この実装は \f2My\fP に提供し、\f2MyPOA\fP を継承する必要があります。 -.LP -.LP -\f2MyPOA.java\fP は -.na -\f2org.omg.PortableServer.Servant\fP @ -.fi -http://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 そのものによって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドも提供します。 -.LP -.LP -継承モデルのもう 1 つのオプションは、\f2\-oldImplBase\fP フラグを使用することで、J2SE 1.4 より前のバージョンの Java プログラミング言語と互換性のあるサーバー側バインディングを生成することです。ただし、\f2\-oldImplBase\fP フラグを使用するのは、標準的な手法ではありません。これらの API は今後非推奨になる予定です。このフラグを使用するのは、J2SE 1.3 で記述された既存のサーバーとの互換性が必要な場合だけです。その場合には既存の MAKEFILE を変更し、\f2idlj\fP コンパイラに \f2\-oldImplBase\fP フラグを追加する必要があります。そうしないと、POA ベースのサーバー側マッピングが生成されます。下位互換性のあるサーバー側バインディングを生成するには、次のコマンドを使用します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-fclient \-fserver\fP \f3\-oldImplBase\fP My.idl -.fl -idlj \f3\-fall\fP \f3\-oldImplBase\fP My.idl -.fl -.fi - -.LP -.LP -\f2My.idl\fP 内で \f2My\fP インタフェースが定義されている場合は、\f2_MyImplBase.java\fP というファイルが生成されます。\f2My\fP に対してその実装を提供し、この実装は \f2_MyImplBase\fP から継承しなければなりません。 -.LP -.LP -もう 1 つのサーバー側モデルは、Tie モデルと呼ばれるものです。このサーバー側モデルは、委譲モデルです。Tie とスケルトンを同時に生成することはできないため、それらは別々に生成しなければなりません。次のコマンドによって、Tie モデル用のバインディングが生成されます。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-fall\fP My.idl -.fl -idlj \f3\-fallTIE\fP My.idl -.fl -.fi - -.LP -.LP -\f2My\fP というインタフェースの場合、上記の 2 番目のコマンドにより、\f2MyPOATie.java\fP が生成されます。\f2MyPOATie\fP のコンストラクタは、\f2delegate\fP を取ります。この例では、デフォルトの POA モデルを使用しているため、コンストラクタにも \f2poa\fP が必要です。\f2delegate\fP に対して実装を提供しなければなりませんが、この実装は \f2MyOperations\fP インタフェースから継承する必要があるだけで、その他のクラスから継承する必要はありません。しかし、この実装を ORB と一緒に使用するには、\f2MyPOATie\fP 内で実装をラップしなければなりません。たとえば、次のようにします。 -.LP -.nf -\f3 -.fl - ORB orb = ORB.init(args, System.getProperties()); -.fl - -.fl - // Get reference to rootpoa & activate the POAManager -.fl - POA rootpoa = (POA)orb.resolve_initial_references("RootPOA"); -.fl - rootpoa.the_POAManager().activate(); -.fl - -.fl - // create servant and register it with the ORB -.fl - MyServant myDelegate = new MyServant(); -.fl - myDelegate.setORB(orb); -.fl - -.fl - // create a tie, with servant being the delegate. -.fl - MyPOATie tie = new MyPOATie(myDelegate, rootpoa); -.fl - -.fl - // obtain the objectRef for the tie -.fl - My ref = tie._this(orb); -.fl -\fP -.fi - -.LP -.LP -他の実装から継承しなければならない場合、標準の継承モデルではなく Tie モデルを使用することがあります。Java の場合は、インタフェースの継承の個数に制限はありませんが、クラスの継承に使用できるスロットは 1 つだけです。継承モデルを使用した場合は、そのスロットが占有されます。Tie モデルを使用した場合は、そのスロットが使用されず、ユーザーが独自の目的で使用することができます。ただし、この方法には、間接性のレベルが 1 つ導入されるという欠点があります。メソッドを呼び出すときに、余分なメソッド呼び出しが 1 回発生します。 -.LP -.LP -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 -.LP -\f2My\fP というインタフェースの場合、これにより \f2My_Tie.java\fP が生成されます。\f2My_Tie\fP のコンストラクタは、\f2impl\fP を取ります。\f2impl\fP に対して実装を提供しなければなりませんが、その実装は \f2HelloOperations\fP インタフェースから継承する必要があるだけで、その他のクラスから継承する必要はありません。しかし、この実装を ORB と一緒に使用するには、\f2My_Tie\fP 内で実装をラップしなければなりません。たとえば、次のようにします。 -.LP -.nf -\f3 -.fl - ORB orb = ORB.init(args, System.getProperties()); -.fl - -.fl - // create servant and register it with the ORB -.fl - MyServant myDelegate = new MyServant(); -.fl - myDelegate.setORB(orb); -.fl - -.fl - // create a tie, with servant being the delegate. -.fl - MyPOATie tie = new MyPOATie(myDelegate); -.fl - -.fl - // obtain the objectRef for the tie -.fl - My ref = tie._this(orb); -.fl -\fP -.fi - -.LP -.SS -発行されたファイルの代替位置の指定 -.LP -.LP -発行されたファイルをカレントディレクトリ以外のディレクトリに置くには、次のようなコマンドでコンパイラを呼び出します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-td /altdir\fP My.idl -.fl -.fi - -.LP -.LP -\f2My\fP インタフェースの場合、バインディングは、\f2./My.java\fP ではなく、\f2/altdir/My.java\fP などに発行されます。 -.LP -.SS -インクルードファイルの代替位置の指定 -.LP -.LP -\f2My.idl\fP にもう 1 つの IDL ファイル \f2MyOther.idl\fP がインクルードされている場合、コンパイラは、ローカルディレクトリに \f2MyOther.idl\fP があるものと想定します。もしそのファイルが、たとえば \f2/includes\fP にある場合は、次のようなコマンドでコンパイラを呼び出します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-i /includes\fP My.idl -.fl -.fi - -.LP -.LP -また、もし \f2My.idl\fP に、たとえば \f2/moreIncludes\fP にある \f2Another.idl\fP もインクルードされているのであれば、次のようなコマンドでコンパイラを呼び出します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-i /includes \-i /moreIncludes\fP My.idl -.fl -.fi - -.LP -.LP -このような形式でインクルードを指定すると、コマンドが長くて複雑になります。そこで、インクルードファイルを検索する場所をコンパイラに指示するための別の方法が用意されています。この方法は、環境変数の考え方と似ています。CLASSPATH にリストされているディレクトリ内に \f2idl.config\fP という名前のファイルを作成します。その \f2idl.config\fP の中に、次のような形式の行を入れます。 -.LP -.nf -\f3 -.fl -includes=/includes;/moreIncludes -.fl -\fP -.fi - -.LP -.LP -コンパイラは、このファイルを検索し、インクルードリストを読み込みます。この例では、ディレクトリの間の区切り文字はセミコロン (;) になっています。この区切り文字は、プラットフォームによって異なります。たとえば、Windows プラットフォームではセミコロンですが、Unix プラットフォームではコロンです。 \f2インクルード\fPの詳細については、 -.na -\f2CLASSPATH の設定\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#general を参照してください。 -.LP -.SS -インクルードファイルに対するバインディングの発行 -.LP -.LP -デフォルトでは、コマンド行に指定した IDL ファイルで定義されているインタフェースや構造体などについてのみ、Java バインディングが生成されます。インクルードされたファイルで定義されている型については、Java バインディングは生成されません。たとえば、次の 2 つの IDL ファイルについて考えてみましょう。 -.LP - -.LP -.LP -\f4My.idl\fP -.LP -.nf -\f3 -.fl -#include <MyOther.idl> -.fl -interface My -.fl -{ -.fl -}; -.fl -\fP -.fi - -.LP - -.LP -.LP -\f4MyOther.idl\fP -.LP -.nf -\f3 -.fl -interface MyOther -.fl -{ -.fl -}; -.fl -\fP -.fi - -.LP - -.LP -.LP -次のコマンドでは、\f2My\fP に対する Java バインディングだけが生成されます。 -.LP -.nf -\f3 -.fl -idlj My.idl -.fl -\fP -.fi - -.LP -.LP -\f2My.idl\fP で定義されている型と、\f2My.idl\fP にインクルードされたファイル (この例では \f2MyOther.idl\fP) で定義されている型すべてについて Java バインディングを生成するには、次のコマンドを使用します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-emitAll\fP My.idl -.fl -.fi - -.LP -.LP -このデフォルトの規則に関して注意しなければならないことがあります。グローバルスコープに指定した \f2#include\fP 文は、前述のとおりに処理されます。これらの \f2#include\fP 文は、インポート文と見なすことができます。それに対して、他の定義に囲まれたスコープ内に指定した \f2#include\fP 文は、本当の意味での \f2#include\fP 文として処理されます。つまり、インクルードされたファイルにあるコードが、元のファイルにそのまま指定されているかのように処理され、それに対して Java バインディングが発行されます。次はその例です。 -.LP - -.LP -.LP -\f4My.idl\fP -.LP -.nf -\f3 -.fl -#include <MyOther.idl> -.fl -interface My -.fl -{ -.fl - #include <Embedded.idl> -.fl -}; -.fl -\fP -.fi - -.LP - -.LP -.LP -\f4MyOther.idl\fP -.LP -.nf -\f3 -.fl -interface MyOther -.fl -{ -.fl -}; -.fl -\fP -.fi - -.LP - -.LP -.LP -\f4Embedded.idl\fP -.LP -.nf -\f3 -.fl -enum E {one, two, three}; -.fl -\fP -.fi - -.LP - -.LP -.LP -このとき、次のコマンドを実行すると、 -.LP -.nf -\f3 -.fl -idlj My.idl -.fl -\fP -.fi - -.LP -.LP -次のような一連の Java ファイルが生成されます。 -.LP -.nf -\f3 -.fl -./MyHolder.java -.fl -./MyHelper.java -.fl -./_MyStub.java -.fl -./MyPackage -.fl -./MyPackage/EHolder.java -.fl -./MyPackage/EHelper.java -.fl -./MyPackage/E.java -.fl -./My.java -.fl -\fP -.fi - -.LP -.LP -インポート文と見なされる \f2#include\fP に定義されているため、\f2MyOther.java\fP は生成されません。ただし、本当の意味での \f2#include\fP で定義されているため、\f2E.java\fP は生成されます。さらに、\f2Embedded.idl\fP が \f2My\fP インタフェースのスコープ内にインクルードされていたため、\f2My\fP のスコープ内 (つまり、\f2MyPackage\fP 内) に生成されています。 -.LP -.LP -上記の例で \f2\-emitAll\fP フラグを使用すれば、インクルードされたすべてのファイルにあるすべての型が発行されます。 -.LP -.SS -パッケージの接頭辞の挿入 -.LP -.LP -ABC という名前の会社のために作業していて、次のような IDL ファイルを構築したとしましょう。 -.LP - -.LP -.LP -\f4Widgets.idl\fP -.LP -.nf -\f3 -.fl -module Widgets -.fl -{ -.fl - interface W1 {...}; -.fl - interface W2 {...}; -.fl -}; -.fl -\fP -.fi - -.LP - -.LP -.LP -このファイルに対して IDL\-to\-Java コンパイラを実行すると、\f2W1\fP および \f2W2\fP に対する Java バインディングが \f2Widgets\fP パッケージ内に生成されます。しかし、業界の慣例によると、会社のパッケージは、\f2com.<会社名>\fP という名前のパッケージ内に置くことになっています。そのため、\f2Widgets\fP パッケージでは不十分です。慣例に従うには、パッケージを \f2com.abc.Widgets\fP にする必要があります。このパッケージ接頭辞を \f2Widgets\fP モジュールに付加するには、次のコマンドを実行します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-pkgPrefix Widgets com.abc\fP Widgets.idl -.fl -.fi - -.LP -.LP -\f2Widgets.idl\fP をインクルードしている IDL ファイルがある場合は、そのコマンドにも \f2\-pkgPrefix\fP フラグが必要です。このフラグを指定しないと、その IDL ファイルは、\f2com.abc.Widgets\fP パッケージではなく、\f2Widgets\fP パッケージを検索することになります。 -.LP -.LP -接頭辞が必要なパッケージがいくつもある場合は、前述の \f2idl.config\fP ファイルで接頭辞を指定するのが簡単です。パッケージの接頭辞を指定する行は、それぞれ次の形式で記述します。 -.LP -.nf -\f3 -.fl -PkgPrefix.<type>=<prefix> -.fl -\fP -.fi - -.LP -したがって、上記の例の場合は、次のように記述します。 -.nf -\f3 -.fl -PkgPrefix.Widgets=com.abc -.fl -\fP -.fi - -.LP -.LP -このオプションを使用しても、リポジトリ ID は影響を受けません。 -.LP -.SS -コンパイル前のシンボルの定義 -.LP -.LP -コンパイル用のシンボルが IDL ファイル内で定義されていない場合は、そのシンボルを定義する必要があります。これは、たとえば、バインディング内にデバッグコードを組み入れるときに使用します。次のコマンドは、 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-d\fP MYDEF My.idl -.fl -.fi - -.LP -.LP -\f2My.idl\fP 内に \f2#define MYDEF\fP という行を指定した場合と等価です。 -.LP -.SS -既存のバインディングの保持 -.LP -.LP -Java バインディングファイルがすでに存在する場合は、\f2\-keep\fP フラグを指定すると、コンパイラによる上書きを回避できます。デフォルトでは、すでに存在するかどうかにかかわらず、すべてのファイルが生成されます。これらのファイルをカスタマイズした場合 (ただし、それらの内容が正確であるとき以外はカスタマイズは避ける)、\-keep オプションは有用です。次のコマンドは、 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-keep\fP My.idl -.fl -.fi - -.LP -.LP -クライアント側のバインディングで、まだ存在しないものをすべて発行します。 -.LP -.SS -コンパイルの進捗状況の表示 -.LP -.LP -IDL\-to\-Java コンパイラは、実行の各段階で状態メッセージを生成します。「冗長」モード (メッセージが多いモード) にするには、\f2\-v\fP オプションを使用します。 -.LP -.nf -\f3 -.fl -idlj \fP\f3\-v\fP My.idl -.fl -.fi - -.LP -.LP -デフォルトでは、コンパイラは冗長モードでは実行されません。 -.LP -.SS -バージョン情報の表示 -.LP -.LP -IDL\-to\-Java コンパイラのビルドバージョンを表示するには、コマンド行で \f2\-version\fP オプションを指定します。 -.LP -.nf -\f3 -.fl -idlj \-version -.fl -\fP -.fi - -.LP -.LP -バージョン情報は、コンパイラによって生成されたバインディング内にも書き込まれています。このオプションをコマンド行に指定すると、それ以外のオプションを指定しても、すべて無視されます。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -\-d symbol -このオプションは、IDL ファイルに次のような行を追加した場合と等価です。 -.nf -\f3 -.fl -#define \fP\f4symbol\fP\f3 -.fl -\fP -.fi -.TP 3 -\-emitAll -#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 が指定されたものと見なされます。 -.TP 3 -\-i include\-path -デフォルトでは、インクルードファイルはカレントディレクトリから検索されます。このオプションを指定すると、ほかのディレクトリを追加できます。 -.TP 3 -\-keep -生成されるファイルがすでに存在している場合は、そのファイルが上書きされません。デフォルトでは、上書きされます。 -.TP 3 -\-noWarn -警告メッセージを表示しないようにします。 -.TP 3 -\-oldImplBase -v1.4 より前の JDK ORB と互換性のあるスケルトンを生成します。デフォルトでは、POA 継承モデルのサーバー側バインディングが生成されます。このオプションを指定すると、\f2ImplBase\fP 継承モデルのクラスであるサーバー側バインディングが生成されるので、古いバージョンの Java プログラミング言語との下位互換性が得られます。 -.TP 3 -\-pkgPrefix type prefix -\f2type\fP がファイルスコープで検出された場合は、その型に対して生成されるすべてのファイルについて、生成される Java パッケージ名に \f2prefix\fP という接頭辞が付加されます。\f2type\fP は、トップレベルモジュールの単純名か、どのモジュールよりも外側で定義された IDL 型の単純名のどちらかです。 -.TP 3 -\-pkgTranslate type package -識別子の中にモジュール名 type が検出されると、生成される Java パッケージ内のすべてのファイルについて、識別子の中のその名前が package で置き換えられます。最初に \f2pkgPrefix\fP を変更します。\f2type\fP は、トップレベルのモジュール、またはすべてのモジュールの外部で定義された IDL 型の単純名です。そして、完全なパッケージ名に正確に一致しなければなりません。 -.LP -1 つの識別子の中で複数の変換がマッチする場合は、もっとも長いマッチが選ばれます。たとえば、次のような引数が指定されている場合は、 -.nf -\f3 -.fl - \-pkgTranslate foo bar \-pkgTranslate foo.baz buzz.fizz -.fl -\fP -.fi -.LP -次のような変換が実施されます。 -.nf -\f3 -.fl -foo => bar -.fl -foo.boo => bar.boo -.fl -foo.baz => buzz.fizz -.fl -foo.baz.bar => buzz.fizz.bar -.fl -\fP -.fi -.LP -次のパッケージ名を変換することはできません。 -.RS 3 -.TP 2 -o -\f2org\fP -.TP 2 -o -\f2org.omg\fP、または \f2org.omg\fP のサブパッケージ +.if n \{\ .RE -.LP -これらのパッケージ名を変換しようとすると、互換性のないコードが生成されます。そして、\f2\-pkgTranslate\fP のあとの最初の引数としてそれらのパッケージを使用すると、エラーとして扱われます。 -.TP 3 -\-skeletonName xxx%yyy -\f2xxx%yyy\fP が、スケルトンに名前を付けるパターンとして使用されます。デフォルトは次のとおりです。 -.RS 3 -.TP 2 -o -\f2POA\fP 基底クラスの場合は「%POA」(\f2\-fserver\fP または \f2\-fall\fP) -.TP 2 -o -\f2oldImplBase\fP クラスの場合は「_%ImplBase」(\f2\-oldImplBase\fP かつ (\f2\-fserver\fP または \f2\-fall\fP)) +.\} +.PP +前の構文は次と同等です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-fclient My\&.idl +.fi +.if n \{\ .RE -.TP 3 -\-td dir -出力ディレクトリとして、カレントディレクトリではなく、\f2dir\fP が使用されます。 -.TP 3 -\-tieName xxx%yyy -このパターンに従って Tie に名前が付けられます。デフォルトは次のとおりです。 -.RS 3 -.TP 2 -o -\f2POA\fP Tie 基底クラスの場合は「%POATie」(\f2\-fserverTie\fP または \f2\-fallTie\fP) -.TP 2 -o -\f2oldImplBase\fP Tie クラスの場合は「%_Tie」(\f2\-oldImplBase\fP かつ (\f2\-fserverTie\fP または \f2\-fallTie\fP)) +.\} +.PP +次の例では、サーバー側バインディングを生成し、クライアント側バインディングおよびスケルトンを含めており、これらはすべて、POA (継承モデル)です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlg \-fserver My\&.idl +.fi +.if n \{\ .RE -.TP 3 -\-nowarn, \-verbose -冗長モードになります。 -.TP 3 -\-version -バージョン情報を表示して終了します。 +.\} +.PP +クライアント側とサーバー側の両方のバインディングを生成する場合は、次のコマンド(どれも等価)のうちの1つを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-fclient \-fserver My\&.idl +idlj \-fall My\&.idl +.fi +.if n \{\ .RE - -.LP -各オプションの詳細については、「説明」のセクションを参照してください。 -.SH "制約" -.LP -.RS 3 -.TP 2 -o -グローバルスコープ内のエスケープされた識別子は、IDL プリミティブ型の \f2Object\fP または \f2ValueBase\fP と同じ綴りであってはなりません。これらの識別子については、シンボルテーブルが事前にロードされており、これらの識別子の再定義を許可すると元の定義が上書きされてしまいます。これは、おそらく恒久的な制約です。 -.TP 2 -o -\f2fixed\fP という IDL 型はサポートされていません。 +.\} +.PP +サーバー側で可能なモデルは2つあります。移殖可能サーバント継承モデルとTieモデルです。Tie委譲モデルを参照してください。 +.if n \{\ +.sp +.\} +.RS 4 +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 +.br +.ps +1 +\fB移殖可能サーバント継承モデル\fR +.ps -1 +.br +.PP +デフォルトのサーバー側のモデルは、移殖可能サーバント継承モデルです。\fIMy\&.idl\fR内で\fIMy\fRインタフェースが定義されている場合は、\fIMyPOA\&.java\fRというファイルが生成されます。\fIMy\fRインタフェースの実装を提供する必要があり、\fIMy\fRインタフェースは\fIMyPOA\fRクラスから継承する必要があります。\fIMyPOA\&.java\fRは、http://docs\&.oracle\&.com/javase/8/docs/api/org/omg/PortableServer/Servant\&.htmlにある +\fIorg\&.omg\&.PortableServer\&.Servant\fRクラスを拡張するストリームベースのスケルトンです。 +.PP +\fIMy\fRインタフェースは、スケルトンが実装するIDLインタフェースに関連付けられている\fIcallHandler\fRインタフェースと操作インタフェースを実装します。 +.PP +ポータブル・オブジェクト・アダプタ(POA)の\fIPortableServer\fRモジュールは、ネイティブの\fIServant\fR型を定義します。http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/POA\&.htmlにある +ポータブル・オブジェクト・アダプタ(POA)を参照してください。 +.PP +Javaプログラミング言語では、\fIServant\fR型はJavaの\fIorg\&.omg\&.PortableServer\&.Servant\fRクラスにマップされます。これは、すべてのPOAサーバント実装のベース・クラスとして機能し、アプリケーション・プログラマが呼び出すことのできるいくつかのメソッド、およびPOAによって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドを提供します。 +.PP +継承モデルのもう1つのオプションは、\fI\-oldImplBase\fRフラグを使用して、Java SE 1\&.4より前のリリースのJavaプログラミング言語と互換性のあるサーバー側バインディングを生成することです。\-\fIoldImplBase\fRフラグは非標準で、これらのAPIは非推奨です。このフラグを使用するのは、Java SE 1\&.3で記述された既存のサーバーとの互換性が必要な場合のみです。その場合、既存のmakeファイルを変更して、\fI\-oldImplBase\fRフラグを\fIidlj\fRコンパイラに追加する必要があります。それ以外の場合、POAベースのサーバー側マッピングが生成されます。下位互換性のあるサーバー側バインディングを生成するには、次を実行します。 +.sp .5v .RE - -.LP -.SH "既知の問題点" -.LP -.RS 3 -.TP 2 -o -グローバル識別子についてインポートが生成されません。予期されないローカル impl を呼び出すと、例外を受け取ります。 しかし、その原因は、\f2ServerDelegate\fP DSI コード内の \f2NullPointerException\fP にあるようです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-fclient \-fserver \-oldImplBase My\&.idl +idlj \-fall \-oldImplBase My\&.idl +.fi +.if n \{\ .RE - -.LP +.\} +.PP +\fIMy\&.idl\fR内で\fIMy\fRインタフェースが定義されている場合は、\fI_MyImplBase\&.java\fRというファイルが生成されます。\fIMy\fRインタフェースの実装を提供する必要があり、\fIMy\fRインタフェースは\fI_MyImplBase\fRクラスから継承する必要があります。 +.if n \{\ +.sp +.\} +.RS 4 +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 +.br +.ps +1 +\fBTie委譲モデル\fR +.ps -1 +.br +.PP +もう1つのサーバー側モデルは、Tieモデルと呼ばれるものです。このサーバー側モデルは、委譲モデルです。Tieとスケルトンを同時に生成することはできないため、それらは別々に生成する必要があります。次のコマンドによって、Tieモデル用のバインディングが生成されます。 +.sp .5v +.RE +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-fall My\&.idl +idlj \-fallTIE My\&.idl +.fi +.if n \{\ +.RE +.\} +.PP +\fIMy\fRインタフェースの場合、2番目のコマンドにより、\fIMyPOATie\&.java\fRが生成されます。\fIMyPOATie\fRクラスへのコンストラクタは、delegateを取ります。この例では、デフォルトのPOAモデルを使用しているため、コンストラクタにもPOAが必要です。delegateに対して実装を提供する必要がありますが、この実装は\fIMyOperations\fRインタフェースから継承する必要があるのみで、その他のクラスから継承する必要はありません。これをORBと一緒に使用するには、たとえば次のように\fIMyPOATie\fRクラス内で実装をラップする必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +ORB orb = ORB\&.init(args, System\&.getProperties()); +// Get reference to rootpoa & activate the POAManager +POA rootpoa = (POA)orb\&.resolve_initial_references("RootPOA"); +rootpoa\&.the_POAManager()\&.activate(); + +// create servant and register it with the ORB +MyServant myDelegate = new MyServant(); +myDelegate\&.setORB(orb); + +// create a tie, with servant being the delegate\&. +MyPOATie tie = new MyPOATie(myDelegate, rootpoa); + +// obtain the objectRef for the tie +My ref = tie\&._this(orb); +.fi +.if n \{\ +.RE +.\} +.PP +他の実装から継承する必要がある場合、標準の継承モデルではなくTieモデルを使用することもできます。Javaの場合は、インタフェースの継承の個数に制限はありませんが、クラスの継承に使用できるスロットは1つのみです。継承モデルを使用した場合は、そのスロットが占有されます。Tieモデルを使用すると、そのスロットが使用されず、ユーザーが独自の目的で使用できます。この方法には、間接性のレベルが1つ導入されるという短所があります。メソッドを呼び出すときに、余分なメソッド呼出しが1回発生します。 +.PP +サーバー側の生成の場合、Java SE 1\&.4より前のバージョンのJava言語にマッピングするIDLのバージョンと互換性のある、Tieモデルのバインディングです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-oldImplBase \-fall My\&.idl +idlj \-oldImplBase \-fallTIE My\&.idl +.fi +.if n \{\ +.RE +.\} +.PP +\fIMy\fRインタフェースの場合、これにより、\fIMy_Tie\&.java\fRが生成されます。\fIMy_Tie\fRクラスへのコンストラクタは、\fIimpl\fRオブジェクトを取ります。\fIimpl\fRに対して実装を提供する必要がありますが、その実装は\fIHelloOperations\fRインタフェースから継承する必要があるのみで、その他のクラスから継承する必要はありません。しかし、これをORBと一緒に使用するには、たとえば次のように\fIMy_Tie\fR内で実装をラップする必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +ORB orb = ORB\&.init(args, System\&.getProperties()); + +// create servant and register it with the ORB +MyServant myDelegate = new MyServant(); +myDelegate\&.setORB(orb); + +// create a tie, with servant being the delegate\&. +MyPOATie tie = new MyPOATie(myDelegate); + +// obtain the objectRef for the tie +My ref = tie\&._this(orb); +.fi +.if n \{\ +.RE +.\} +.SS "発行されたファイルの代替位置の指定" +.PP +発行されたファイルを現在のディレクトリ以外のディレクトリに置くには、\fIi\fR\fIdlj \-td /altdir My\&.idl\fRのコマンドでコンパイラを呼び出します。 +.PP + +\fIMy\fRインタフェースの場合、バインディングは、\fI\&./My\&.java\fRではなく、\fI/altdir/My\&.java\fRなどに発行されます。 +.SS "インクルード・ファイルの代替位置の指定" +.PP +\fIMy\&.idl\fRファイルが別の\fIidl\fRファイルである\fIMyOther\&.idl\fRをインクルードする場合、コンパイラでは、\fIMyOther\&.idl\fRファイルがローカル・ディレクトリに存在することを前提としています。たとえば、それが\fI/includes\fRにある場合は、次のようなコマンドでコンパイラを呼び出します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-i /includes My\&.idl +.fi +.if n \{\ +.RE +.\} +.PP +たとえば、\fI/moreIncludes\fRにある\fIAnother\&.idl\fRも\fIMy\&.idl\fRにインクルードされているのであれば、次のようなコマンドでコンパイラを呼び出します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-i /includes \-i /moreIncludes My\&.idl +.fi +.if n \{\ +.RE +.\} +.PP +このような形式の\fIinclude\fRは長くなるため、インクルード・ファイルを検索する場所をコンパイラに指示するための別の方法が用意されています。この方法は、環境変数の考え方と似ています。\fICLASSPATH\fR変数に一覧表示されているディレクトリ内にidl\&.configという名前のファイルを作成します。その\fIidl\&.config\fRの中に、次のような形式の行を入れます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +includes=/includes;/moreIncludes +.fi +.if n \{\ +.RE +.\} +.PP +コンパイラは、このファイルを検索し、インクルード・リストを読み込みます。この例では、ディレクトリの間の区切り文字はセミコロン(;)になっています。この区切り文字は、プラットフォームによって異なります。Windowsプラットフォームではセミコロンを使用し、UNIXプラットフォームではコロンを使用するなどです。 +.SS "インクルード・ファイルに対するバインディングの発行" +.PP +デフォルトでは、コマンドラインに指定した\fIidl\fRファイルで定義されているインタフェースや構造体などについてのみ、Javaバインディングが生成されます。インクルードされたファイルで定義されている型については生成されません。たとえば、次の2つの\fIidl\fRファイルについて考えてみます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +My\&.idl file: + +#include <MyOther\&.idl> +interface My +{ +}; + +MyOther\&.idl file: + +interface MyOther +{ +}; +.fi +.if n \{\ +.RE +.\} +.PP +デフォルトのルールに関して警告があります。グローバル・スコープに表示される\fI#include\fR文は、前述のとおりに処理されます。これらの\fI#include\fR文は、インポート文と見なすことができます。囲まれたスコープ内に表示される\fI#include\fR文は、本当の意味での\fI#include\fR文として処理されます。つまり、インクルードされたファイルにあるコードが、元のファイルにそのまま表示されているかのように処理され、それに対してJavaバインディングが発行されます。次はその例です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +My\&.idl file: + +#include <MyOther\&.idl> +interface My +{ + #include <Embedded\&.idl> +}; + +MyOther\&.idl file: + +interface MyOther +{ +}; + +Embedded\&.idl + +enum E {one, two, three}; +.fi +.if n \{\ +.RE +.\} +.PP +\fI idlj My\&.idl \fRを実行して、Javaファイルの次のリストを生成します。インポート文とみなされる\fI#include\fRに定義されていたため、\fIMyOther\&.java\fRは生成されませんでした。ただし、本当の意味での\fI#include\fRで定義されていたため、\fIE\&.java\fRは生成されました。\fIEmbedded\&.idl\fRファイルが\fIMy\fRインタフェースのスコープ内にインクルードされているため、\fIMy\fRのスコープ内(つまり、\fIMyPackage\fR内)に生成されています。\fI\-emitAll\fRフラグを使用した場合、インクルードされたすべてのファイルにあるすべての型が発行されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\&./MyHolder\&.java +\&./MyHelper\&.java +\&./_MyStub\&.java +\&./MyPackage +\&./MyPackage/EHolder\&.java +\&./MyPackage/EHelper\&.java +\&./MyPackage/E\&.java +\&./My\&.java +.fi +.if n \{\ +.RE +.\} +.SS "パッケージの接頭辞の挿入" +.PP +ABCという名前の会社のために作業していて、次のようなIDLファイルを構築したとしましょう。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Widgets\&.idl file: + +module Widgets +{ + interface W1 {\&.\&.\&.}; + interface W2 {\&.\&.\&.}; +}; +.fi +.if n \{\ +.RE +.\} +.PP +IDL\-to\-Javaコンパイラを介してこのファイルを実行した場合、W1およびW2に対するJavaバインディングは、\fIWidgets\fRパッケージ内に格納されます。業界の慣例によると、会社のパッケージは、\fIcom\&.<company name>\fRという名前のパッケージ内に置くことになっています。この慣例に従うには、パッケージ名を\fIcom\&.abc\&.Widgets\fRにする必要があります。このパッケージ接頭辞をWidgetsモジュールに付加するには、次のコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +idlj \-pkgPrefix Widgets com\&.abc Widgets\&.idl +.fi +.if n \{\ +.RE +.\} +.PP +Widgets\&.idlをインクルードしているIDLファイルがある場合は、そのコマンドにも\fI\-pkgPrefix\fRフラグが必要です。このフラグを指定しないと、そのIDLファイルは、\fIcom\&.abc\&.Widgets\fRパッケージではなく、\fIWidgets\fRパッケージを検索することになります。 +.PP +接頭辞が必要なパッケージがいくつもある場合は、前述のidl\&.configファイルで接頭辞を指定するのが簡単です。パッケージ接頭辞の各行は、\fIPkgPrefix\&.<type>=<prefix>\fRの形式である必要があります。前述の例の行では、\fIPkgPrefix\&.Widgets=com\&.abc\fRになります。このオプションは、リポジトリIDには影響しません。 +.SS "コンパイル前のシンボルの定義" +.PP +コンパイル用のシンボルがIDLファイル内で定義されていない場合は、そのシンボルを定義する必要があります。これは、たとえば、バインディング内にデバッグ・コードを組み入れるときに使用します。コマンド\fIidlj \-d MYDEF My\&.idl \fRは、My\&.idl内に行\fI#define MYDEF\fRを配置した場合と同等になります。 +.SS "既存のバインディングの保持" +.PP +Javaバインディング・ファイルがすでに存在する場合は、\fI\-keep\fRフラグを指定すると、コンパイラによる上書きを回避できます。デフォルトでは、すでに存在するかどうかにかかわらず、すべてのファイルが生成されます。これらのファイルをカスタマイズした場合(ただし、それらの内容が正確であるとき以外はカスタマイズは避ける)、\fI\-keep\fRオプションは有用です。コマンド\fIidlj \-keep My\&.idl\fRは、すでに存在しないすべてのクライアント側バインディングを発行します。 +.SS "コンパイルの進捗状況の表示" +.PP +IDL\-to\-Javaコンパイラは、実行の各段階で状態メッセージを生成します。\fI\-v\fRオプションを使用して、\fIidlj \-v My\&.idl\fRのような冗長モードをアクティブ化します。 +.PP +デフォルトでは、コンパイラは冗長モードでは実行されません。 +.SS "バージョン情報の表示" +.PP +IDL\-to\-Javaコンパイラのビルド・バージョンを表示するには、コマンドライン\fIidlj \-version\fRで\fI\-version\fRオプションを指定します。 +.PP +バージョン情報は、コンパイラによって生成されたバインディング内にも書き込まれています。このオプションをコマンドラインに指定すると、それ以外のオプションを指定しても、すべて無視されます。 +.SH "オプション" +.PP +\-d \fIsymbol\fR +.RS 4 +このオプションは、IDLファイルに次のような行を追加した場合と等価です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +#define \fIsymbol\fR +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-demitAll +.RS 4 +\fI#include\fRファイル内で定義されているものも含めて、すべての型を発行します。 +.RE +.PP +\-fside +.RS 4 +発行するバインディングを定義します。\fIside\fRパラメータには、\fIclient\fR、\fIserver\fR、\fIserverTIE\fR、\fIall\fRまたは\fIallTIE\fRを指定できます。\fI\-fserverTIE\fRまたは\fI\-fallTIE\fRオプションを指定すると、委譲モデル・スケルトンが発行されます。フラグを指定しない場合、\fI\-fclient\fRにデフォルト設定されます。 +.RE +.PP +\-i \fIinclude\-path\fR +.RS 4 +デフォルトでは、インクルード・ファイルは現在のディレクトリから検索されます。このオプションを指定すると、他のディレクトリを追加できます。 +.RE +.PP +\-i \fIkeep\fR +.RS 4 +生成されるファイルがすでに存在している場合は、そのファイルが上書きされません。デフォルトでは、上書きされます。 +.RE +.PP +\-noWarn +.RS 4 +警告メッセージを表示しないようにします。 +.RE +.PP +\-oldImplBase +.RS 4 +1\&.4より前のJDK ORBと互換性のあるスケルトンを生成します。デフォルトでは、POA継承モデルのサーバー側バインディングが生成されます。このオプションを指定すると、\fIImplBase\fR継承モデルのクラスであるサーバー側バインディングが生成されるので、以前のリリースのJavaプログラミング言語との下位互換性が得られます。 +.RE +.PP +\-pkgPrefix \fItype\fR \fIprefix\fR +.RS 4 +\fItype\fRがファイル・スコープで検出された場合は、その型に対して生成されるすべてのファイルについて、生成されるJavaパッケージ名に\fIprefix\fRという接頭辞が付加されます。typeは、トップレベル・モジュールの単純名か、どのモジュールよりも外側で定義されたIDL型の単純名のどちらかです。 +.RE +.PP +\-pkgTranslate \fItype\fR \fIpackage\fR +.RS 4 +識別子の中にモジュール名typeが検出されると、生成されるJavaパッケージ内のすべてのファイルについて、識別子の中のその名前がpackageで置き換えられます。最初に\fIpkgPrefix\fRの変更が行われます。typeの値は、トップレベルのモジュールの単純名、またはすべてのモジュールの外部で定義されたIDL型の単純名で、完全なパッケージ名に正確に一致する必要があります。 +.sp +複数の変換が識別子に一致する場合、次の例に示すように、最も長い一致が選択されます。 +.sp +\fBコマンド\fR: +.sp +.if n \{\ +.RS 4 +.\} +.nf +pkgTranslate type pkg \-pkgTranslate type2\&.baz pkg2\&.fizz +.fi +.if n \{\ +.RE +.\} +\fB結果の変換\fR: +.sp +.if n \{\ +.RS 4 +.\} +.nf +type => pkg +type\&.ext => pkg\&.ext +type\&.baz => pkg2\&.fizz +type2\&.baz\&.pkg => pkg2\&.fizz\&.pkg +.fi +.if n \{\ +.RE +.\} +パッケージ名\fIorg\fR、\fIorg\fR\&.o\fImg\fR、または\fIorg\&.omg\fRのサブパッケージは、変換できません。これらのパッケージ名を変換しようとすると、互換性のないコードが生成され、\fI\-pkgTranslate\fRの後の最初の引数としてそれらのパッケージを使用すると、エラーとして扱われます。 +.RE +.PP +\-skeletonName \fIxxx%yyy\fR +.RS 4 +\fIxxx%yyy\fRが、スケルトンに名前を付けるパターンとして使用されます。デフォルトは次のとおりです。\fIPOA\fRベース・クラスの場合は\fI%POA\fR +(\fI\-fserver\fRまたは\fI\-fall\fR)、\fIoldImplBase\fRクラスの場合は\fI_%ImplBase\fR +(\-\fIoldImplBase\fR)および(\fI\-fserver\fRまたは\fI\-fall\fR))。 +.RE +.PP +\-td \fIdir\fR +.RS 4 +出力ディレクトリとして、現在のディレクトリではなく、\fIdir\fRが使用されます。 +.RE +.PP +\-tieName \fIxxx%yyy\fR +.RS 4 +パターンに従って、\fIxxx%yyy\fRを使用します。デフォルトは次のとおりです。\fIPOA\fRベース・クラスの場合は\fI%POA\fR +(\fI\-fserverTieまたは\-fallTie\fR)、\fIoldImplBase\fR +tieクラスの場合は\fI_%Tie\fR +(\-\fIoldImplBase\fR)および(\fI\-fserverTie\fRまたは\fI\-fallTie\fR))。 +.RE +.PP +\-nowarn、\-verbose +.RS 4 +リリース情報を表示して終了します。 +.RE +.PP +\-version +.RS 4 +リリース情報を表示して終了します。 +.RE +.SH "制限事項" +.PP +グローバル・スコープ内のエスケープされた識別子は、IDLプリミティブ型の\fIObject\fRまたは\fIValueBase\fRと同じ綴りにしないでください。これは、シンボル表がこれらの識別子でプリロードされているためです。これらの再定義を許可すると、元の定義が上書きされます。これは、おそらく恒久的な制約です。 +.PP +\fIfixed\fRというIDL型はサポートされていません。 +.SH "既知の問題" +.PP +グローバル識別子についてインポートが生成されません。予期されないローカル\fIimpl\fRオブジェクトを呼び出すと、例外を受け取ります。しかし、その原因は、\fIServerDelegate\fR +DSIコード内の\fINullPointerException\fRにあるようです。 +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jar.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jar.1 index 0ce57f3ee56..dc1fc5869f7 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jar.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jar.1 @@ -1,601 +1,517 @@ -." 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 -." 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 jar 1 "07 May 2011" - -.LP -.SH "名前" -jar \- Java ARchive ツール -.LP -\f3jar\fP は複数のファイルを 1 つの JAR アーカイブファイルに結合します。 -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -コマンド行引数ファイル -.TP 2 -o -例 -.TP 2 -o -関連項目 +'\" t +.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jar +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jar" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jar \- Java Archive (JAR)ファイルを操作します。 +.SH "概要" +JARファイルの作成 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjar c\fR[\fIefmMnv0\fR] [\fIentrypoint\fR] [\fIjarfile\fR] [\fImanifest\fR] [\fI\-C\fR \fIdir\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.] +.fi +.if n \{\ .RE - -.LP -.SH "形式" -.LP -.RS 3 -.TP 3 -JAR ファイルの作成 -\f4jar c\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP -.TP 3 -JAR ファイルの更新 -\f4jar u\fP\f2[v0Mmfe] [\fP\f2manifest\fP\f2] [\fP\f2jarfile\fP\f2] [\fP\f2entrypoint\fP\f2] [\-C\fP \f2dir\fP\f2]\fP \f2inputfiles\fP \f2[\-J\fP\f2option\fP\f2]\fP -.TP 3 -JAR ファイルの抽出 -\f4jar x\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP -.TP 3 -JAR ファイルの内容の表形式による一覧表示 -\f4jar t\fP\f2[vf] [\fP\f2jarfile\fP\f2] [\fP\f2inputfiles\fP\f2] [\-J\fP\f2option\fP\f2]\fP -.TP 3 -JAR ファイルへのインデックスの追加 -\f4jar i\fP \f2jarfile\fP \f2[\-J\fP\f2option\fP\f2]\fP +.\} +JARファイルの更新 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjar u\fR[\fIefmMnv0\fR] [\fIentrypoint\fR] [\fIjarfile\fR] [\fImanifest\fR] [\fI\-C\fR \fIdir\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.] +.fi +.if n \{\ .RE - -.LP -.LP -説明 -.LP -.RS 3 -.TP 3 -cuxtiv0Mmfe -\f2jar\fP コマンドを制御するオプション -.TP 3 -jarfile -作成 (\f2c\fP)、更新 (\f2u\fP)、抽出 (\f2x\fP)、または目次表示 (\f2t\fP) の対象となる JAR ファイル。\f2f\fP オプションとファイル名 \f2jarfile\fP とがペアになります。 つまり、片方を記述すれば、もう一方も記述する必要があります。 \f2f\fP と \f2jarfile\fP を省略すると、標準入力から「JAR ファイル」が取得されるか (x および t の場合)、標準出力へ「JAR ファイル」が送信されます(c および u の場合)。 -.TP 3 -inputfiles -\f2jarfile\fP に結合されるか (c および u の場合)、\f2jarfile\fP から抽出 (x の場合) または一覧表示 (t の場合) される、空白で区切られたファイルまたはディレクトリ。すべてのディレクトリは再帰的に処理されます。このファイルは、オプション \f20\fP (ゼロ) を使用しないかぎり圧縮されます。 -.TP 3 -manifest -JAR ファイルの MANIFEST.MF 内に含めるべき \f2name\fP\f2:\fP \f2value\fP ペアが含まれている既存のマニフェストファイル。\f2m\fP オプションとファイル名 \f2manifest\fP とがペアになります。つまり、片方を記述すれば、もう一方も記述する必要があります。\f3m\fP、\f3f\fP、および \f3e\fP の出現順序は、\f2manifest\fP、\f2jarfile\fP、\f2entrypoint\fP の出現順序と一致する必要があります。 -.TP 3 -entrypoint -実行可能 JAR ファイル内にバンドルされたスタンドアロンアプリケーションのアプリケーションエントリポイントとして設定するクラスの名前。\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\f2\-\ dir\fP \f2inputfiles\fP のセットは複数使用できます。 -.TP 3 -\-Joption -Java 実行環境へ渡されるオプション。\f2\-J\fP と \f2option\fP の間には空白を入れないでください。 +.\} +JARファイルの抽出 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjar\fR \fIx\fR[\fIvf\fR] [\fIjarfile\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.] +.fi +.if n \{\ .RE - -.LP +.\} +JARファイルのコンテンツのリスト +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjar\fR \fIt\fR[\fIvf\fR] [\fIjarfile\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.] +.fi +.if n \{\ +.RE +.\} +JARファイルへの索引の追加 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjar\fR \fIi\fR \fIjarfile\fR [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.] +.fi +.if n \{\ +.RE +.\} .SH "説明" -.LP -\f3jar\fP ツールは複数のファイルを 1 つの JAR アーカイブファイルに結合します。\f3jar\fP は、ZIP および -.na -\f2ZLIB\fP @ -.fi -http://www.gzip.org/zlib/ 圧縮形式に基づく汎用のアーカイブおよび圧縮ツールです。ただし \f3jar\fP ツールの主な目的は、いくつかの Java アプレットやアプリケーションを 1 個のアーカイブに統合することです。アプレットやアプリケーションのコンポーネント (ファイル、イメージ、およびサウンド) が 1 つのアーカイブに結合されていると、Java エージェント (ブラウザなど) は、それらのコンポーネントを 1 回の HTTP トランザクションでダウンロードすることができ、コンポーネントごとに新しい接続を必要とすることがありません。これにより、ダウンロード時間が大幅に短縮されます。また、\f3jar\fP はファイルの圧縮も行うので、ダウンロード時間がさらに短縮されます。また、ファイル内の個々のエントリにアプレット作成者による署名を書き込めるので、配布元の認証が可能になります。jar ツールの構文は、\f2tar\fP コマンドの構文とほぼ同じです。\f3JAR\fP アーカイブは、圧縮されているかどうかにかかわらず、クラスパスのエントリとして使用できます。 -.LP -複数のファイルを JAR ファイルへ結合する一般的な使用法は次のとおりです。 -.LP -.nf -\f3 -.fl -% jar cf myFile.jar *.class -.fl -\fP -.fi - -.LP -この例では、現在のディレクトリにあるクラス (.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 オプションを使って指定します。 -.LP -.nf -\f3 -.fl -% jar cmf myManifestFile myFile.jar *.class -.fl -\fP -.fi - -.LP -既存のマニフェストファイルは改行文字で終わっている必要があります。マニフェストファイルが改行文字で終わっていないと、\f3jar\fP はその最終行を解析しません。 -.br - -.LP -.br - -.LP -\f3注:\ \fPコマンド行に \f2cmf\fP ではなく \f2cfm\fP が指定された jar コマンド (m と \-f オプションの順番を逆にする) の場合、\f3jar\fP コマンド行にまず JAR アーカイブの名前を指定し、続いてマニフェストファイルの名前を指定する必要があります。 次に例を示します。 -.nf -\f3 -.fl -% jar cfm myFile.jar myManifestFile *.class -.fl -\fP -.fi - -.LP -マニフェストは、RFC822 ASCII 形式で規定されたテキスト形式であるため、マニフェストファイルの内容を簡単に表示および編集できます。 -.LP -JAR ファイルからファイルを抽出する場合は、 \f2x\fP を使用します。 -.LP -.nf -\f3 -.fl -% jar xf myFile.jar -.fl -\fP -.fi - -.LP -.LP -jar ファイルから個別のファイルを抽出する場合は、そのファイル名を指定します。 -.LP -.nf -\f3 -.fl -% jar xf myFile.jar foo bar -.fl -\fP -.fi - -.LP -.LP -JDK のバージョン 1.3 以降から、\f2jar\fP ユーティリティーで -.na -\f2JarIndex\fP @ -.fi -http://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 -.fl -% jar i main.jar -.fl -\fP -.fi - -.LP -.LP -この例では、 \f2INDEX.LIST\fP ファイルが \f2main.jar\fP の \f2META\-INF\fP ディレクトリ内に挿入されます。 -.br -.br -このファイルに格納されている情報を使用して、アプリケーションのクラスローダーは、効率的にクラスをロードします。インデックスファイルに位置情報を格納する方法の詳細は、「JarIndex 仕様」を参照してください。 -.br -.br -ディレクトリをコピーするには、まず \f2dir1\fP 内のファイルを圧縮して \f2stdout\fP に出力し、続いて \f2stdin\fP から抽出して \f2dir2\fP に出力します (\f2\-f\fP オプションはどちらの \f2jar\fP コマンドでも省略)。 -.LP -.nf -\f3 -.fl -% (cd dir1; jar c .)| (cd dir2; jar x) -.fl -\fP -.fi - -.LP -.LP -\f2jar\fP を使用して JAR ファイルや JAR マニフェストファイルを操作するサンプルコマンドを確認したい場合は、後述の「例」を参照してください。また、「 -.na -\f2Java Tutorial\fP @ -.fi -http://download.oracle.com/javase/tutorial/deployment/jar」の JAR コースも参照してください。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -c -f が指定された場合は \f2jarfile\fP という名前の \f2新しい\fP アーカイブファイルを \f2作成し、\fP f と \f2jarfile\fP が省略された場合は標準出力に情報を出力します。\f2inputfiles\fP で指定されたファイルとディレクトリを、このアーカイブに追加します。 -.TP 3 -u -f が指定されている場合に、既存ファイル \f2jarfile\fP を \f2更新する目的で、\fP \f2inputfiles\fP に指定されたファイルやディレクトリを追加します。次に例を示します。 -.nf -\f3 -.fl -jar uf foo.jar foo.class -.fl -\fP -.fi -上のコマンドは、ファイル \f2foo.class\fP を既存の JAR ファイル \f2foo.jar\fP に追加します。次の例に示すように、\f2\-u\fP オプションは、マニフェストエントリも更新できます。 -.nf -\f3 -.fl -jar umf manifest foo.jar -.fl -\fP -.fi -\f2foo.jar\fP マニフェストをマニフェスト内の \f2name:value\fP ペアで更新します。 -.TP 3 -x -f が指定された場合は \f2jarfile\fP \f2から\fP 、 \f2f\fP と \f2jarfile\fP が省略された場合は標準入力から、ファイルやディレクトリを抽出します。\f2inputfiles\fP が指定されている場合は、その指定したファイルとディレクトリだけが抽出されます。指定されていなければ、すべてのファイルとディレクトリが抽出されます。抽出されたファイルの日時は、アーカイブ内で設定されたものです。 -.TP 3 -t -f が指定された場合は \f2jarfile\fP \f2から\fP 、 \f2f\fP と \f2jarfile\fP が省略された場合は標準入力から、目次を表示します。\f2inputfiles\fP が指定されている場合は、その指定したファイルとディレクトリだけが一覧表示されます。指定されていなければ、すべてのファイルとディレクトリが一覧表示されます。 -.TP 3 -i -指定された \f2jarfile\fP と、それに依存する JAR ファイルについて、インデックス情報を生成します。たとえば、 -.nf -\f3 -.fl -jar i foo.jar -.fl -\fP -.fi -.LP -上のコマンドは、\f2foo.jar\fP 内に \f2INDEX.LIST\fP ファイルを生成します。 このファイルには、\f2foo.jar\fP と、\f2foo.jar\fP の \f2Class\-Path\fP 属性に指定されたすべての JAR ファイルに入っている各パッケージの位置情報が書き込まれています。インデックスの例を参照してください。 -.TP 3 -f -次の各処理の対象となるファイル \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 による圧縮を使用せずに、保存します。 -.TP 3 -M -マニフェストファイルエントリを作成しません (c および u の場合)。または、マニフェストファイルエントリが存在する場合にそれを削除します (u の場合)。 -.TP 3 -m -\f2META\-INF/MANIFEST.MF\fP のファイルで指定したマニフェストファイル \f2manifest\fP の \f2name : value\fP の属性ペアを組み込みます。 \f2jar\fP は、すでに同じ名前で存在しないかぎり、その \f2name:value\fP ペアを追加します。同じ名前で存在する場合、 \f2jar\fP はその値を更新します。 -.LP -コマンド行で、\f3m\fP と \f3f\fP の文字は、\f2manifest\fP と \f2jarfile\fP の入力順序と同じ順序で記述する必要があります。たとえば、次のようにして使います。 -.nf -\f3 -.fl -jar cmf myManifestFile myFile.jar *.class -.fl -\fP -.fi -デフォルトのマニフェストには含まれないマニフェストに、特別な目的の \f2name\ :\ value\fP の属性ペアを追加できます。たとえば、ベンダー情報、バージョン情報、パッケージシーリング、または JAR にバンドルされたアプリケーションを実行するための属性を追加できます。「Java Tutorial」の「 -.na -\f2JAR Files\fP @ -.fi -http://download.oracle.com/javase/tutorial/deployment/jar/」コースを参照し、 \f4\-m\fP オプションの使用例を確認してください。 -.TP 3 -e -実行可能 JAR ファイル内にバンドルされたスタンドアロンアプリケーションのアプリケーションエントリポイントとして、\f2entrypoint\fP を設定します。このオプションを使用すると、マニフェストファイル内の \f2Main\-Class\fP 属性値が作成または上書きされます。このオプションは、JAR ファイルの作成中または更新中に使用できます。このオプションを使えば、マニフェストファイルを編集または作成することなしに、アプリケーションのエントリポイントを指定できます。 -.br -.br -たとえば、次のコマンドでは \f2Main.jar\fP が作成されますが、その際、マニフェスト内の \f2Main\-Class\fP 属性値は \f2Main\fP に設定されます。 -.nf -\f3 -.fl -jar cfe Main.jar Main Main.class -.fl -\fP -.fi -.LP -次のコマンドを実行すると java ランタイムから直接このアプリケーションを起動できます。 -.nf -\f3 -.fl -java \-jar Main.jar -.fl -\fP -.fi -あるパッケージ内にエントリポイントのクラス名が含まれている場合、ドット (「.」) 、スラッシュ (「/」) のいずれかの文字をその区切り文字として使用できます。たとえば、 \f2Main.class\fP が \f2foo\fP という名前のパッケージに含まれている場合、エントリポイントは次のようにして指定できます。 -.nf -\f3 -.fl -jar \-cfe Main.jar foo/Main foo/Main.class -.fl -\fP -.fi -または -.nf -\f3 -.fl -jar \-cfe Main.jar foo.Main foo/Main.class -.fl -\fP -.fi -\f3注:\ \fP \f2\-m\fP オプションと \f2\-e\fP オプションの両方を同時に指定した場合、指定したマニフェストにも \f2Main\-Class\fP 属性が含まれていれば、 \f2Main.class\fP の指定があいまいになってエラーや発生し、JAR の作成処理や更新処理が異常終了します。 -.LP -.TP 3 -\-C \ dir -\f2jar\fP コマンドの実行中に後続の \f2inputfiles\fP 引数を処理するときに、一時的にディレクトリを変更します (cd \f2dir\fP)。この処理は、UNIX の \f2tar\fP ユーティリティーの \f2\-C\fP オプションの機能に類似しています。 -.br -.br -たとえば、次のコマンドは、\f2classes\fP ディレクトリに移動し、そのディレクトリから \f2bar.class\fP を \f2foo.jar\fP に追加します。 -.nf -\f3 -.fl -jar uf foo.jar \-C classes bar.class -.fl -\fP -.fi -次のコマンドでは、\f2classes\fP ディレクトリに移動し、\f2classes\fP ディレクトリ内のすべてのファイルを \f2foo.jar\fP に追加します (jar ファイルには classes ディレクトリを作成しません)。次に元のディレクトリに戻ってから、\f2bin\fP ディレクトリに移動し、\f2xyz.class\fP を \f2foo.jar\fP に追加します。 -.nf -\f3 -.fl -jar uf foo.jar \-C classes .\-C bin xyz.class -.fl -\fP -.fi -\f2classes\fP にファイル \f2bar1\fP と \f2bar2\fP が格納されている場合に、 \f2jar tf foo.jar\fP 使用したときの JAR ファイルの中身を、次に示します。 -.nf -\f3 -.fl -META\-INF/ -.fl -META\-INF/MANIFEST.MF -.fl -bar1 -.fl -bar2 -.fl -xyz.class -.fl -\fP -.fi -.LP -.TP 3 -\-Joption -Java 実行環境に \f2option\fP を渡します。 \f2option\fP には、「Java アプリケーション起動ツール」のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、 \f4\-J\-Xmx48M\fP と指定すると、最大メモリーが 48M バイトに設定されます。\f2\-J\fP を使って背後の実行環境にオプションを渡すことはよく行われています。 +.PP +\fIjar\fRコマンドは、ZIPおよびZLIB圧縮形式に基づく汎用のアーカイブおよび圧縮ツールです。ただし、\fIjar\fRコマンドは、主にいくつかのJavaアプレットやアプリケーションを単一のアーカイブにパッケージ化するように設計されました。アプレットやアプリケーションのコンポーネント(ファイル、イメージ、およびサウンド)が1つのアーカイブに結合されていると、Javaエージェント(ブラウザなど)は、それらのコンポーネントを1回のHTTPトランザクションでダウンロードすることができ、コンポーネントごとに新しい接続が不要になります。これにより、ダウンロード時間が大幅に短縮されます。また、\fIjar\fRコマンドはファイルの圧縮も行うため、ダウンロード時間がさらに短縮されます。また、\fIjar\fRコマンドによって、ファイル内の個々のエントリにアプレット作成者による署名を書き込めるため、配布元の認証が可能になります。JARファイルは、圧縮されているかどうかにかかわらず、クラス・パスのエントリとして使用できます。 +.PP +\fIjar\fRコマンドの構文は、\fItar\fRコマンドの構文に似ています。必須の\fI操作の引数\fRの1つで定義された複数の操作モードがあります。他の引数は、操作の動作を変更する\fIオプション\fR、または操作を実行するために必要な\fIオペランド\fRを使用します。 +.SH "操作の引数" +.PP +\fIjar\fRコマンドを使用する場合は、次の操作の引数のいずれかを指定して実行される操作を選択する必要があります。コマンドラインで他の1文字のオプションと混在させることができますが、通常、操作の引数は指定される最初の引数です。 +.PP +c +.RS 4 +新しいJARアーカイブを作成します。 .RE - -.LP -.SH "コマンド行引数ファイル" -.LP -jar のコマンド行を短くしたり簡潔にしたりするために、jar コマンドに対する引数 (\-J オプションを除く) を含む 1 つ以上の \f2ファイルを\fP 指定することが \f2できます\fP 。これにより、任意の長さの jar コマンドを作成でき、オペレーティングシステムによるコマンド行の制限から解放されます。 -.LP -引数ファイルにはオプションとファイル名を含めることができます。ファイル内の各引数は、スペースまたは改行で区切ります。引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。ワイルドカード (*) は、通常ならばオペレーティングシステムシェルによってあらゆる文字に解釈されますが、この場合はそのようには解釈されません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、\f2\-J\fP オプションもサポートされていません。このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 -.LP -.LP -\f2jar\fP を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。 \f2jar\fP は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +.PP +i +.RS 4 +JARアーカイブの索引情報を生成します。 +.RE +.PP +t +.RS 4 +JARアーカイブのコンテンツをリストします。 +.RE +.PP +u +.RS 4 +JARアーカイブを更新します。 +.RE +.PP +x +.RS 4 +JARアーカイブからファイルを抽出します。 +.RE +.SH "オプション" +.PP +次のオプションを使用して、JARファイルを作成、更新、抽出または表示する方法をカスタマイズします。 +.PP +e +.RS 4 +\fIentrypoint\fRオペランドで指定されるクラスを、実行可能JARファイルにバンドルされるスタンドアロンJavaアプリケーションのエントリ・ポイントに設定します。このオプションを使用すると、マニフェスト・ファイル内の\fIMain\-Class\fR属性値が作成またはオーバーライドされます。\fIe\fRオプションは、JARファイルの作成時(\fIc\fR)または更新時(\fIu\fR)に使用できます。 +.sp +たとえば、次のコマンドでは、\fIMain\&.jar\fRアーカイブが\fIMain\&.class\fRファイルとともに作成されますが、その際、マニフェスト内の\fIMain\-Class\fR属性値は\fIMain\fRに設定されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jar cfe Main\&.jar Main Main\&.class +.fi +.if n \{\ +.RE +.\} +Java Runtime Environment (JRE)は、次のコマンドを実行して、このアプリケーションを直接呼び出すことができます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-jar Main\&.jar +.fi +.if n \{\ +.RE +.\} +あるパッケージ内にエントリ・ポイントのクラス名が含まれている場合、ドット(\&.)またはスラッシュ(/)のいずれかを区切り文字として使用できます。たとえば、\fIMain\&.class\fRが\fImydir\fRという名前のパッケージに含まれている場合、エントリ・ポイントは次のいずれかの方法で指定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jar \-cfe Main\&.jar mydir/Main mydir/Main\&.class +jar \-cfe Main\&.jar mydir\&.Main mydir/Main\&.class +.fi +.if n \{\ +.RE +.\} +.if n \{\ +.sp +.\} +.RS 4 +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 .br +.ps +1 +\fBNote\fR +.ps -1 .br -次の例で、 \f2classes.list\fP には、 \f2find\fP コマンドによって出力されたファイルの名前が格納されます。 -.LP +.TS +allbox tab(:); +l. +T{ +注意 +特定のマニフェストにも\fIMain\-Class\fR属性が含まれている場合に\fIm\fRオプションと\fIe\fRオプションの両方を同時に指定すると、\fIMain\-Class\fRの指定があいまいになります。このあいまいさによってエラーが発生し、\fIjar\fRコマンドの作成や更新の操作が終了します。 +T} +.TE +.sp 1 +.sp .5v +.RE +.RE +.PP +f +.RS 4 +\fIjarfile\fRオペランドで指定されたファイルを、作成(\fIc\fR)、更新(\fIu\fR)、抽出(\fIx\fR)または表示(\fIt\fR)されるJARファイルの名前に設定します。\fIf\fRオプションおよび\fIjarfile\fRオペランドを省略すると、\fIjar\fRコマンドに、\fIstdin\fRからのJARファイル名を受け入れるか(\fIx\fRおよび\fIt\fRの場合)、JARファイルを\fIstdout\fRに送信すること(\fIc\fRおよび\fIu\fRの場合)が指示されます。 +.RE +.PP +m +.RS 4 +(\fIMETA\-INF/MANIFEST\&.MF\fRのアーカイブにある) +\fIjar\fRコマンドのマニフェスト・ファイルの\fImanifest\fRオペランドで指定されたファイルから、属性の名前と値のペアを含めます。\fIjar\fRコマンドは、同じ名前のエントリがすでに存在する場合を除き、属性の名前と値をJARファイルに追加します。同じ名前のエントリがすでに存在する場合、\fIjar\fRコマンドは属性の値を更新します。\fIm\fRオプションは、JARファイルの作成時(\fIc\fR)または更新時(\fIu\fR)に使用できます。 +.sp +デフォルトのマニフェスト・ファイルには含まれないマニフェストに、特別な目的の名前\-値の属性ペアを追加できます。たとえば、ベンダー情報、リリース情報、パッケージ・シーリングを指定する属性、またはJARにバンドルされたアプリケーションを実行可能にするための属性を追加できます。\fIm\fRオプションの使用例は、http://docs\&.oracle\&.com/javase/tutorial/deployment/jar/index\&.htmlにある +プログラムのパッケージ化に関する項を参照してください。 +.RE +.PP +M +.RS 4 +マニフェスト・ファイル・エントリを作成しない(\fIc\fRおよび\fIu\fRの場合)か、またはマニフェスト・ファイル・エントリが存在する場合は削除します(\fIu\fRの場合)。\fIM\fRオプションは、JARファイルの作成時(\fIc\fR)または更新時(\fIu\fR)に使用できます。 +.RE +.PP +n +.RS 4 +JARファイルの作成(\fIc\fR)時に、このオプションは、コンテンツがpack200(1)コマンドのパックおよびアンパック操作の影響を受けないようにアーカイブを正規化します。この正規化を使用しない場合、署名付きJARの署名は無効になります。 +.RE +.PP +v +.RS 4 +詳細な出力を標準出力に生成します。例を参照してください。 +.RE +.PP +0 +.RS 4 +(ゼロ) ZIP圧縮を使用しないでJARファイルを作成(\fIc\fR)または更新(\fIu\fR)します。 +.RE +.PP +\-C \fIdir\fR +.RS 4 +JARファイルの作成(\fIc\fR)または更新(\fIu\fR)時に、このオプションは\fIfile\fRオペランドで指定されたファイルの処理中にディレクトリを一時的に変更します。この操作は、UNIX +\fItar\fRユーティリティの\fI\-C\fRオプションと同様になることを目的としています。たとえば、次のコマンドによって、\fIclasses\fRディレクトリに変更され、そのディレクトリから\fImy\&.jar\fRに\fIBar\&.class\fRファイルが追加されます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% find \fP\f3.\fP \-name '*.class' \-print > classes.list -.fl +jar uf my\&.jar \-C classes Bar\&.class .fi - -.LP -.LP -次に、引数ファイル構文を使用して \f2classes.list\fP を jar に渡すことで、 \f2そのリスト\fP に対して \f2jar\fP コマンドを実行できます。 -.LP +.if n \{\ +.RE +.\} +次のコマンドでは、\fIclasses\fRディレクトリに移動し、classesディレクトリ内のすべてのファイルを\fImy\&.jar\fRに追加します(JARファイルには\fIclasses\fRディレクトリを作成しません)。次に元のディレクトリに戻ってから、\fIbin\fRディレクトリに移動し、\fIXyz\&.class\fRを\fImy\&.jar\fRに追加します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% jar cf my.jar @classes.list -.fl -\fP +jar uf my\&.jar \-C classes \&. \-C bin Xyz\&.class .fi - -.LP -引数ファイルはパスを指定できますが、相対パスが記述された引数ファイル内のすべてのファイル名は、渡されたパスに対して相対的ではなく、現在の作業ディレクトリに相対的となります。次はその例です。 +.if n \{\ +.RE +.\} +\fIclasses\fRに\fIbar1\fRファイルと\fIbar2\fRファイルが含まれている場合、前述のコマンドを実行した後、JARファイルには次のものが含まれます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% jar @path1/classes.list -.fl -\fP -.fi - -.LP -.LP - -.LP -.SH "例" -.LP -特定のディレクトリ内のすべてのファイルをアーカイブに追加する (そのアーカイブがすでに存在する場合は、その内容を上書きする) には、次のようにします。\f2\-v\fP オプションを使用して情報を詳細に列挙するように指定すると、サイズや最新の更新日など、アーカイブ内のファイルについての詳細情報が表示されます。 -.nf -\f3 -.fl -% ls -.fl -1.au Animator.class monkey.jpg -.fl -2.au Wave.class spacemusic.au -.fl -3.au at_work.gif -.fl - -.fl -% jar cvf bundle.jar * -.fl -added manifest -.fl -adding: 1.au(in = 2324) (out= 67)(deflated 97%) -.fl -adding: 2.au(in = 6970) (out= 90)(deflated 98%) -.fl -adding: 3.au(in = 11616) (out= 108)(deflated 99%) -.fl -adding: Animator.class(in = 2266) (out= 66)(deflated 97%) -.fl -adding: Wave.class(in = 3778) (out= 81)(deflated 97%) -.fl -adding: at_work.gif(in = 6621) (out= 89)(deflated 98%) -.fl -adding: monkey.jpg(in = 7667) (out= 91)(deflated 98%) -.fl -adding: spacemusic.au(in = 3079) (out= 73)(deflated 97%) -.fl -\fP -.fi - -.LP -すでに画像、オーディオファイル、およびクラス用のサブディレクトリに分けている場合は、これらを単一の JAR ファイルに結合できます。 -.nf -\f3 -.fl -% ls \-F -.fl -audio/ classes/ images/ -.fl - -.fl -% jar cvf bundle.jar audio classes images -.fl -added manifest -.fl -adding: audio/(in = 0) (out= 0)(stored 0%) -.fl -adding: audio/1.au(in = 2324) (out= 67)(deflated 97%) -.fl -adding: audio/2.au(in = 6970) (out= 90)(deflated 98%) -.fl -adding: audio/3.au(in = 11616) (out= 108)(deflated 99%) -.fl -adding: audio/spacemusic.au(in = 3079) (out= 73)(deflated 97%) -.fl -adding: classes/(in = 0) (out= 0)(stored 0%) -.fl -adding: classes/Animator.class(in = 2266) (out= 66)(deflated 97%) -.fl -adding: classes/Wave.class(in = 3778) (out= 81)(deflated 97%) -.fl -adding: images/(in = 0) (out= 0)(stored 0%) -.fl -adding: images/monkey.jpg(in = 7667) (out= 91)(deflated 98%) -.fl -adding: images/at_work.gif(in = 6621) (out= 89)(deflated 98%) -.fl - -.fl -% ls \-F -.fl -audio/ bundle.jar classes/ images/ -.fl -\fP -.fi - -.LP -JAR ファイルのエントリ名を表示するには、「\f2t\fP」オプションを使用します。 -.nf -\f3 -.fl -% jar tf bundle.jar -.fl +% \fIjar tf my\&.jar\fR META\-INF/ -.fl -META\-INF/MANIFEST.MF -.fl -audio/1.au -.fl -audio/2.au -.fl -audio/3.au -.fl -audio/spacemusic.au -.fl -classes/Animator.class -.fl -classes/Wave.class -.fl -images/monkey.jpg -.fl -images/at_work.gif -.fl -\fP +META\-INF/MANIFEST\&.MF +bar1 +bar2 +Xyz\&.class .fi - -.LP -.LP -クラスロードを高速にするためにインデックスファイルを JAR ファイルに追加するには、「\f2i\fP」オプションを使用します。 -.br -.br -例: -.br - -.LP -たとえば、株取引アプリケーションの内部依存しているクラスを、\f2main.jar\fP、\f2buy.jar\fP、および \f2sell.jar\fP という 3 つの JAR ファイルに分割したとします。 -.br - -.LP -.br - -.LP -\f2main.jar\fP のマニフェストの \f2Class\-path\fP 属性に次のように指定した場合、 +.if n \{\ +.RE +.\} +.RE +.PP +\-J\fIoption\fR +.RS 4 +指定したJVMオプションを、JREがJARファイルを実行する際に使用するように設定します。JVMオプションは、java(1)コマンドのリファレンス・ページで説明されています。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。 +.RE +.SH "オペランド" +.PP +次のオペランドは、\fIjar\fRコマンドで認識されます。 +.PP +\fIfile\fR +.RS 4 +JARファイルの作成(\fIc\fR)または更新(\fIu\fR)時に、\fIfile\fRオペランドは、アーカイブに追加する必要のあるファイルまたはディレクトリのパスと名前を定義します。JARファイルの抽出(\fIx\fR)またはコンテンツのリスト(\fIt\fR)時に、\fIfile\fRオペランドは抽出またはリストするファイルのパスと名前を定義します。少なくとも1つの有効なファイルまたはディレクトリを指定する必要があります。複数の\fIfile\fRオペランドを空白で区切ります。\fIentrypoint\fR、\fIjarfile\fRまたは\fImanifest\fRオペランドが使用される場合は、その後に\fIfile\fRオペランドを指定する必要があります。 +.RE +.PP +\fIentrypoint\fR +.RS 4 +JARファイルの作成(\fIc\fR)または更新(\fIu\fR)時に、\fIentrypoint\fRオペランドは、実行可能JARファイルにバンドルされているスタンドアロンJavaアプリケーションのエントリ・ポイントとなるクラスの名前を定義します。\fIe\fRオプションが存在する場合は\fIentrypoint\fRオペランドを指定する必要があります。 +.RE +.PP +\fIjarfile\fR +.RS 4 +作成(\fIc\fR)、更新(\fIu\fR)、抽出(\fIx\fR)または表示(\fIt\fR)するファイルの名前を定義します。\fIf\fRオプションが存在する場合は\fIjarfile\fRオペランドを指定する必要があります。\fIf\fRオプションおよび\fIjarfile\fRオペランドを省略すると、\fIjar\fRコマンドに、\fIstdin\fRからのJARファイル名を受け入れるか(\fIx\fRおよび\fIt\fRの場合)、JARファイルを\fIstdout\fRに送信すること(\fIc\fRおよび\fIu\fRの場合)が指示されます。 +.sp +JARファイルを索引付け(\fIi\fR)する場合は、\fIf\fRオプションを指定しないで\fIjarfile\fRオペランドを指定します。 +.RE +.PP +\fImanifest\fR +.RS 4 +JARファイルの作成(\fIc\fR)または更新(\fIu\fR)時に、\fImanifest\fRオペランドはJARファイルの\fIMANIFEST\&.MF\fRに含める属性の名前と値を持つ既存のマニフェスト・ファイルを定義します。\fIf\fRオプションが存在する場合は\fImanifest\fRオペランドを指定する必要があります。 +.RE +.PP +\fI@arg\-file\fR +.RS 4 +\fIjar\fRコマンドを短縮または簡素化するには、別のテキスト・ファイル内の引数を指定し、接頭辞としてアットマーク(@)を付けて\fIjar\fRコマンドに渡すことができます。\fIjar\fRコマンドは、アットマーク文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +.sp +引数ファイルには、\fIjar\fRコマンドのオプションと引数(引数ファイルをサポートしない起動ツールに渡される\fI\-J\fRオプションを除く)を含めることができます。ファイル内の引数は、空白または改行文字で区切ることができます。引数ファイル内のファイル名は、\fIjar\fRコマンドを実行できる現在のディレクトリに対して相対的であり、引数ファイルの場所に対しては相対的ではありません。通常はオペレーティング・システム・シェルによって展開されるアスタリスク(*)などのワイルドカードは展開されません。 +.sp +次の例は、\fIfind\fRコマンドによる現在のディレクトリ出力からのファイル名で\fIclasses\&.list\fRファイルを作成する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -Class\-Path: buy.jar sell.jar -.fl -\fP +find \&. \-name \*(Aq*\&.class\*(Aq \-print > classes\&.list .fi - -.LP -\f2\-i\fP オプションを使用すれば、アプリケーションのクラスの 読み込みを高速化できます。 +.if n \{\ +.RE +.\} +\fIjar\fRコマンドを実行し、\fI@arg\-file\fR構文を使用して\fIclasses\&.list\fRファイルを渡すことができます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% jar i main.jar -.fl -\fP +jar cf my\&.jar @classes\&.list .fi +.if n \{\ +.RE +.\} +引数ファイルはパスを指定できますが、相対パスが記述された引数ファイル内のすべてのファイル名は、渡されたパスに対して相対的ではなく、\fIjar\fRコマンドの現在の作業ディレクトリに相対的となります。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jar @dir/classes\&.list +.fi +.if n \{\ +.RE +.\} +.RE +.SH "注意" +.PP +\fIe\fR、\fIf\fRおよび\fIm\fRオプションは、\fIentrypoint\fR、\fIjarfile\fRおよび\fImanifest\fRオペランドと同じ順序でコマンドラインに出現する必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jar cmef myManifestFile MyMainClass myFile\&.jar *\&.class +.fi +.if n \{\ +.RE +.\} +.SH "例" +.PP +\fBExample 1\fR, 冗長な出力による現在のディレクトリからのすべてのファイルの追加 +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +% ls +1\&.au Animator\&.class monkey\&.jpg +2\&.au Wave\&.class spacemusic\&.au +3\&.au at_work\&.gif -.LP -\f2INDEX.LIST\fP ファイルが \f2META\-INF\fP ディレクトリに挿入されます。この結果、アプリケーションのクラスローダーによってクラスまたはリソースの検索が行われるときに、適切な jar ファイルがダウンロードされます。 +% jar cvf bundle\&.jar * +added manifest +adding: 1\&.au(in = 2324) (out= 67)(deflated 97%) +adding: 2\&.au(in = 6970) (out= 90)(deflated 98%) +adding: 3\&.au(in = 11616) (out= 108)(deflated 99%) +adding: Animator\&.class(in = 2266) (out= 66)(deflated 97%) +adding: Wave\&.class(in = 3778) (out= 81)(deflated 97%) +adding: at_work\&.gif(in = 6621) (out= 89)(deflated 98%) +adding: monkey\&.jpg(in = 7667) (out= 91)(deflated 98%) +adding: spacemusic\&.au(in = 3079) (out= 73)(deflated 97%) +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, サブディレクトリからのファイルの追加 +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +% ls \-F +audio/ classes/ images/ +% jar cvf bundle\&.jar audio classes images +added manifest +adding: audio/(in = 0) (out= 0)(stored 0%) +adding: audio/1\&.au(in = 2324) (out= 67)(deflated 97%) +adding: audio/2\&.au(in = 6970) (out= 90)(deflated 98%) +adding: audio/3\&.au(in = 11616) (out= 108)(deflated 99%) +adding: audio/spacemusic\&.au(in = 3079) (out= 73)(deflated 97%) +adding: classes/(in = 0) (out= 0)(stored 0%) +adding: classes/Animator\&.class(in = 2266) (out= 66)(deflated 97%) +adding: classes/Wave\&.class(in = 3778) (out= 81)(deflated 97%) +adding: images/(in = 0) (out= 0)(stored 0%) +adding: images/monkey\&.jpg(in = 7667) (out= 91)(deflated 98%) +adding: images/at_work\&.gif(in = 6621) (out= 89)(deflated 98%) + +% ls \-F +audio/ bundle\&.jar classes/ images/ +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, JARのコンテンツのリスト +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +% jar tf bundle\&.jar +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +META\-INF/ +META\-INF/MANIFEST\&.MF +audio/1\&.au +audio/2\&.au +audio/3\&.au +audio/spacemusic\&.au +classes/Animator\&.class +classes/Wave\&.class +images/monkey\&.jpg +images/at_work\&.gif +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 4\fR, 索引の追加 +.RS 4 +株式取引のアプリケーションの相互依存クラスを、\fImain\&.jar\fR、\fIbuy\&.jar\fRおよび\fIsell\&.jar\fRの3つのJARファイルに分割する場合、\fIi\fRオプションを使用します。\fImain\&.jar\fRマニフェスト内の\fIClass\-Path\fR属性を指定する場合、\fIi\fRオプションを使用して、アプリケーションのクラス・ロードの速度を向上できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Class\-Path: buy\&.jar sell\&.jar +jar i main\&.jar +.fi +.if n \{\ +.RE +.\} +\fIINDEX\&.LIST\fRファイルが\fIMETA\-INF\fRディレクトリに挿入されます。これにより、アプリケーションのクラス・ローダーによってクラスまたはリソースの検索が行われるときに、指定したJARファイルがダウンロードされるようになります。 +.sp +アプリケーションのクラス・ローダーは、このファイルに格納されている情報を使用して、効率的にクラスをロードします。ディレクトリをコピーするには、最初に\fIdir1\fR内のファイルを\fIstdout\fRに圧縮してから、\fIstdin\fRから\fIdir2\fRにパイプラインを作成して抽出します(\fI\-f\fRオプションは両方の\fIjar\fRコマンドで省略します)。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +(cd dir1; jar c \&.) | (cd dir2; jar x) +.fi +.if n \{\ +.RE +.\} +.RE .SH "関連項目" -.LP -.LP -.na -\f2JAR ファイルの概要\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jarGuide.html -.LP -.LP -.na -\f2JAR ファイルの仕様\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html -.LP -.LP -.na -\f2JarIndex の仕様\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#JAR_Index -.LP -.LP -.na -\f2JAR チュートリアル\fP @ -.fi -http://download.oracle.com/javase/tutorial/deployment/jar/index.html -.LP -.LP -pack200(1) -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +pack200(1)\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/tutorial/deployment/jar/index\&.htmlにある +JavaチュートリアルのJARに関する項 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jarsigner.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jarsigner.1 index 739d051356e..fa0799a8c60 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jarsigner.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jarsigner.1 @@ -1,1660 +1,1071 @@ -." 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 -." 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 jarsigner 1 "07 May 2011" - -.LP -.SH "名前" -jarsigner \- JAR 署名および検証ツール -.LP -.LP -Java ARchive (JAR) ファイルの署名を生成し、署名付き JAR ファイルの署名を検証します。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jarsigner +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: セキュリティ・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jarsigner" "1" "2013年11月21日" "JDK 8" "セキュリティ・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jarsigner \- Javaアーカイブ(JAR)ファイルに対して署名および検証を行います。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jarsigner\fP [ options ] jar\-file alias -.fl -\f3jarsigner\fP \-verify [ options ] jar\-file [alias...] -.fl +\fIjarsigner\fR [ \fIoptions\fR ] \fIjar\-file\fR \fIalias\fR .fi - -.LP -.LP -jarsigner の \-verify コマンドでは、JAR ファイル名のあとに 0 個以上のキーストア別名を指定できます。キーストア別名が指定された場合、jarsigner は、JAR ファイル内の各署名付きエンティティーの検証に使用される証明書がキーストア別名のいずれかに一致することをチェックします。別名は、\-keystore で指定されたキーストア内またはデフォルトのキーストア内に定義されます。 -.LP +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjarsigner\fR \fI\-verify\fR [ \fIoptions\fR ] \fIjar\-file\fR [\fIalias \&.\&.\&.\fR] +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\-verify +.RS 4 +\fI\-verify\fRオプションでは、JARファイル名の後に0個以上のキーストア別名を指定できます。\fI\-verify\fRオプションが指定された場合、\fIjarsigner\fRコマンドでは、JARファイル内の各署名付きエンティティの検証に使用される証明書が、いずれかのキーストア別名に一致することをチェックします。別名は、\fI\-keystore\fRで指定されたキーストア内またはデフォルトのキーストア内に定義されます。 +.sp +\fI\-strict\fRオプションも指定した場合、\fIjarsigner\fRコマンドにより重大な警告が検出されると、メッセージ「jarが検証されました。署名者エラー」が表示されます。 +.RE +.PP +\fIjar\-file\fR +.RS 4 +署名されるJARファイル。 +.sp +\fI\-strict\fRオプションも指定した場合、\fIjarsigner\fRコマンドにより重大な警告が検出されると、メッセージ「jarは署名されました \- 署名者エラーがあります。」というメッセージが表示されます。 +.RE +.PP +\fIalias\fR +.RS 4 +別名は、\fI\-keystore\fRで指定されたキーストア内またはデフォルトのキーストア内に定義されます。 +.RE .SH "説明" -.LP -.LP -\f3jarsigner\fP ツールは、次の 2 つの目的で使用します。 -.LP -.RS 3 -.TP 3 -1. -Java ARchive (JAR) ファイルに署名を付ける -.TP 3 -2. -署名付き JAR ファイルの署名と整合性を検証する +.PP +\fIjarsigner\fRツールには、次の2つの目的があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Javaアーカイブ(JAR)ファイルに署名する目的。 .RE - -.LP -.LP -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 -署名付きのデータは変更できない。 データが変更された場合は、その署名によってデータが本物ではないことが検証される +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +署名付きJARファイルの署名と整合性を検証する目的。 .RE - -.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 \fP\f4<キーストアのパスワード>\fP\f3 -.fl - \-keypass \fP\f4<非公開鍵のパスワード>\fP\f3 MyJARFile.jar duke -.fl -\fP -.fi - -.LP -.LP -キーストアはパスワードで保護されているので、ストアのパスワードを指定する必要があります。コマンド行でストアのパスワードを指定しないと、パスワードの入力を求められます。同様に、非公開鍵もキーストア内でパスワードによって保護されているため、非公開鍵のパスワードを指定する必要があります。コマンド行で非公開鍵のパスワードを指定していない、また、指定したパスワートが保存されているパスワードと違っている場合には、非公開鍵のパスワードの入力を求められます。 -.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 -\f2「Java 暗号化アーキテクチャー用プロバイダの実装方法」\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 - KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); -.fl -\fP -.fi - -.LP -.LP -デフォルトのキーストアタイプは JKS (Sun が提供する独自のタイプのキーストアの実装) です。これは、セキュリティープロパティーファイル内の次の行によって指定されています。 -.LP -.nf -\f3 -.fl - keystore.type=jks -.fl -\fP -.fi - -.LP -.LP -注: キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、JKS と jks は同じものとして扱われます。 -.LP -.LP -各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。たとえば、pkcs12 と呼ばれるタイプのキーストアの実装を提供しているプロバイダパッケージを使用するには、上の行を次のように変更します。 -.LP -.nf -\f3 -.fl - keystore.type=pkcs12 -.fl -\fP -.fi - -.LP -.LP -PKCS#11 プロバイダパッケージを使用する場合、その詳細については、「Java PKCS#11 Reference Guide」にある -.na -\f2「KeyTool 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 2 -o -SHA1 ダイジェストアルゴリズムを使った DSA (デジタル署名アルゴリズム) -.TP 2 -o -SHA256 ダイジェストアルゴリズムを使用した RSA アルゴリズム -.TP 2 -o -SHA256 と ECDSA (楕円曲線デジタル署名アルゴリズム) を使用した EC (楕円曲線) 暗号方式アルゴリズム +.PP +JAR機能を使用すると、クラス・ファイル、イメージ、サウンドおよびその他のデジタル・データを単一のファイルにパッケージ化できるので、ファイルを迅速かつ容易に配布できます。\fIjar\fRという名前のツールを使用して、開発者はJARファイルを作成できます。(技術的な観点から言えば、すべてのZIPファイルもJARファイルとみなすことができます。ただし、\fIjar\fRコマンドによって作成されたJARファイル、または\fIjarsigner\fRコマンドによって処理されたJARファイルには、\fIMETA\-INF/MANIFEST\&.MF\fRファイルも含まれています。) +.PP +デジタル署名は、なんらかのデータ(署名の対象となるデータ)、およびエンティティ(人、会社など)の秘密鍵から計算されるビットの文字列です。手書きの署名同様、デジタル署名には多くの利点があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +署名の生成に使用された秘密鍵に対応する公開鍵を使用する計算によって、それが本物であることを検証できます。 .RE - -.LP -.LP -具体的には、署名者の公開鍵と非公開鍵が DSA 鍵である場合、\f3jarsigner\fP は SHA1withDSA アルゴリズムを使って JAR ファイルに署名を付けます。署名者の鍵が RSA 鍵である場合、\f3jarsigner\fP は SHA256withRSA アルゴリズムを使って JAR ファイルに署名を付けます。署名者の鍵が EC 鍵である場合、\f3jarsigner\fP は SHA256withECDSA アルゴリズムを使って JAR ファイルに署名を付けます。 -.LP -.LP -これらのデフォルトの署名アルゴリズムは、\f2\-sigalg\fP オプションを使ってオーバーライドできます。 -.LP -.SS -署名付き JAR ファイル -.LP -.LP -\f3jarsigner\fP を使って JAR ファイルに署名を付けた場合、出力される署名付き JAR ファイルは入力 JAR ファイルと同じですが、次の 2 つの追加ファイルが META\-INF ディレクトリに置かれる点が異なります。 -.LP -.RS 3 -.TP 2 -o -.SF 拡張子の付いた署名ファイル -.TP 2 -o -.DSA、.RSA、または .EC を拡張子に持つ署名ブロックファイル +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +秘密鍵が他人に知られない限り、デジタル署名の偽造は不可能です。 .RE - -.LP -.LP -これら 2 つのファイルのベースファイル名は、 \f2\-sigFile\fP オプションの値から作成されます。たとえば、次のようにオプションを指定したとします。 -.LP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +これは、署名が付いたデータの機能であり、他のデータの署名となるように要求できません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +署名付きデータは変更できません。データが変更された場合、署名によって本物であると検証できません。 +.RE +.PP +ファイルに対してエンティティの署名を生成するには、まず、エンティティは、そのエンティティに関連する公開鍵/秘密鍵のペアと、公開鍵を認証する1つ以上の証明書を持つ必要があります。証明書とは、あるエンティティからのデジタル署名付きの文書で、別のエンティティの公開鍵が特定の値を持つことを示しています。 +.PP +\fIjarsigner\fRコマンドは、キーストアからの鍵と証明書情報を使用して、JARファイルのデジタル署名を生成します。キーストアは、秘密鍵、および対応する公開鍵を認証する、秘密鍵に関連したX\&.509証明書チェーンのデータベースです。\fIkeytool\fRコマンドを使用して、キーストアを作成および管理します。 +.PP +\fIjarsigner\fRコマンドでは、エンティティの秘密鍵を使用して署名を生成します。署名付きJARファイルには、特に、ファイルへの署名に使用する秘密鍵に対応する公開鍵のキーストアからの証明書のコピーが含まれます。\fIjarsigner\fRコマンドでは、内部(署名ブロック・ファイル内)の証明書を使用して、署名付きJARファイルのデジタル署名を検証できます。 +.PP +\fIjarsigner\fRコマンドでは、署名証明書の有効期間中にJARファイルが署名されたされたかどうかをシステムやデプロイヤ(Java Plug\-inを含む)がチェックできる、タイムスタンプを含む署名を生成できます。さらに、APIを使用すると、アプリケーションでタイムスタンプ情報を取得できます。 +.PP +現時点では、\fIjarsigner\fRコマンドでは、\fIjar\fRコマンドまたはZIPファイルによって作成されたJARファイルのみに署名できます。JARファイルはZIPファイルと同じですが、JARファイルには\fIMETA\-INF/MANIFEST\&.MF\fRファイルも含まれている点が異なります。\fIMETA\-INF/MANIFEST\&.MF\fRファイルは、\fIjarsigner\fRコマンドによってZIPファイルに署名する際に作成されます。 +.PP +デフォルトの\fIjarsigner\fRコマンドの動作では、JARまたはZIPファイルに署名します。\fI\-verify\fRオプションを使用して、署名付きJARファイルを検証します。 +.PP +\fIjarsigner\fRコマンドは、署名または検証の後に署名者の証明書の検証も試行します。検証エラーまたはその他の問題が発生すると、コマンドにより警告メッセージが生成されます。\fI\-strict\fRオプションを指定した場合、コマンドにより重大な警告がエラーとして処理されます。エラーと警告を参照してください。 +.SS "キーストアの別名" +.PP +キーストアのすべてのエンティティは、一意の別名を使用してアクセスされます。 +.PP +\fIjarsigner\fRコマンドを使用してJARファイルに署名するときは、署名の生成に必要な秘密鍵を含むキーストア・エントリの別名を指定する必要があります。たとえば、次のコマンドでは、\fIworking\fRディレクトリの\fImystore\fRという名前のキーストアに含まれる別名\fIduke\fRに関連付けられた秘密鍵を使用して、\fIMyJARFile\&.jar\fRという名前のJARファイルに署名します。出力ファイルは指定されていないため、\fIMyJARFile\&.jar\fRは署名付きのJARファイルによって上書きされます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\-sigFile MKSIGN -.fl -\fP +jarsigner \-keystore /working/mystore \-storepass <keystore password> + \-keypass <private key password> MyJARFile\&.jar duke .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 ダイジェストの値 +.if n \{\ .RE - -.LP -.LP -マニフェストファイルでは、SHA ダイジェストの値は、ソースファイルのバイナリデータのダイジェスト (ハッシュ) です。一方、.SF ファイルでは、ソースファイルのダイジェストの値は、マニフェストファイル中の該当するソースファイルに対応する 3 行のハッシュです。 -.LP -.LP -署名ファイルには、デフォルトでマニフェストファイル全体のハッシュも含まれています。後述の「JAR ファイルの検証」で説明するように、このヘッダーの存在によって検証の最適化が可能になっています。 -.LP -\f3署名ブロックファイル\fP -.LP -.SF ファイルには署名が付けられ、署名は署名ブロックファイルに置かれます。このファイルには、キーストアからの証明書または証明書チェーンも符号化された形で含まれています。 証明書または証明書チェーンは、署名に使われた非公開鍵に対応する公開鍵を認証します。ファイルの拡張子は、使用されるダイジェストアルゴリズムに応じて .DSA、.RSA、.EC のいずれかになります。 -.SS -署名タイムスタンプ -.LP -.LP -\f2jarsigner\fP ツールは、JAR ファイルの署名時に署名タイムスタンプを生成して保存できます。さらに、 \f2jarsigner\fP は代替署名機構をサポートします。この動作は省略可能で、署名時に次の各オプションによって制御されます。 -.LP -.RS 3 -.TP 2 -o -\f2\-tsa url\fP -.TP 2 -o -\f2\-tsacert alias\fP -.TP 2 -o -\f2\-altsigner class\fP -.TP 2 -o -\f2\-altsignerpath classpathlist\fP -.RE - -.LP -.LP -これらの各オプションの詳細については、後述の「オプション」節を参照してください。 -.LP -.SS -JAR ファイルの検証 -.LP -.LP -JAR ファイルの検証が成功するのは、署名が有効であり、かつ署名の生成以後に JAR ファイル内のどのファイルも変更されていない場合です。JAR ファイルの検証は、次の手順で行われます。 -.LP -.RS 3 -.TP 3 -1. -.SF ファイルそれ自体の署名を検証します。 -.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 ファイル内にエントリを持つ各ファイルを読み込みます。読み込み中にファイルのダイジェストを計算し、結果をマニフェストセクション内の該当するファイルのダイジェストと比較します。2 つのダイジェストは同じでなければならず、そうでない場合は検証が失敗します。 -.RE - -.LP -.LP -検証プロセスの途中でなんらかの重大な検証エラーが発生した場合、検証プロセスは中止され、セキュリティー例外がスローされます。スローされたセキュリティー例外は、\f3jarsigner\fP がキャッチして表示します。 -.LP -.SS -1 つの JAR ファイルを対象とする複数の署名 -.LP -.LP -1 つの JAR ファイルに対して \f3jarsigner\fP ツールを複数回実行し、実行のたびに、異なるユーザーの別名を指定すれば、JAR ファイルに複数のユーザーの署名を付けることができます。 -.LP +.\} +.PP +キーストアはパスワードで保護されているので、ストアのパスワードを指定する必要があります。コマンドラインで指定しないと、入力を求められます。同様に、秘密鍵もキーストア内でパスワードによって保護されているため、秘密鍵のパスワードを指定する必要があります。コマンドラインでパスワードを指定していない場合、または指定したパスワートが保存されているパスワードと同じではない場合は、パスワードの入力を求められます。 +.SS "キーストアの場所" +.PP +\fIjarsigner\fRコマンドには、使用するキーストアのURLを指定する\fI\-keystore\fRオプションがあります。キーストアはデフォルトで、\fIuser\&.home\fRシステム・プロパティで決まるユーザーのホーム・ディレクトリの\fI\&.keystore\fRという名前のファイル内に格納されます。 +.PP +Oracle Solarisシステムの場合、\fIuser\&.home\fRは、ユーザーのホーム・ディレクトリにデフォルト設定されます。 +.PP +\fI\-keystore\fRオプションからの入力ストリームは、\fIKeyStore\&.load\fRメソッドに渡されます。URLとして\fINONE\fRが指定されている場合は、nullのストリームが\fIKeyStore\&.load\fRメソッドに渡されます。\fINONE\fRは、\fIKeyStore\fRクラスがファイルベースではない場合、たとえば、ハードウェア・トークン・デバイスに置かれている場合に指定します。 +.SS "キーストアの実装" +.PP +\fIjava\&.security package\fRで提供されている\fIKeyStore\fRクラスは、キーストア内の情報へのアクセスおよび情報の変更を行うための、明確に定義された多くのインタフェースを提供します。複数の異なる固定実装を指定することができ、各実装は特定のタイプのキーストアを対象とします。 +.PP +現在、キーストアの実装を使用する2つのコマンドライン・ツール(\fIkeytool\fRと\fIjarsigner\fR)、およびポリシー・ツールという名前の1つのGUIベースのツールがあります。\fIKeyStore\fRクラスは公開されているため、JDKユーザーは、それを使用する他のセキュリティ・アプリケーションを書き込むことができます。 +.PP +Oracleが提供する組込みのデフォルトの実装があります。これは、JKSという名前の独自のキーストア・タイプ(形式)を使用するもので、キーストアをファイルとして実装しています。組込みの実装では、各秘密鍵は個別のパスワードによって保護され、キーストア全体の整合性は(秘密鍵とは別の)パスワードによって保護されます。 +.PP +キーストアの実装はプロバイダベースで、つまり、\fIKeyStore\fRクラスにより提供されるアプリケーション・インタフェースは、サービス・プロバイダ・インタフェース(SPI)に関して実装されます。対応する\fIKeystoreSpi\fR抽象クラスがあり、これも\fIjava\&.security package\fRに含まれています。このクラスが、プロバイダが実装する必要のあるサービス・プロバイダ・インタフェースのメソッドを定義しています。ここで、プロバイダとは、Java Security APIによってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。キーストアの実装を提供するには、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider\&.htmlにある +Java暗号化アーキテクチャのプロバイダの実装方法で説明しているように、クライアントはプロバイダを実装し、\fIKeystoreSpi\fRサブクラスの実装を提供する必要があります。 +.PP +アプリケーションでは、\fIKeyStore\fRクラスの\fIgetInstance\fRファクトリ・メソッドを使用して、様々なプロバイダから異なるタイプのキーストアの実装を選択できます。キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の秘密鍵とキーストア自体の整合性を保護するために使用されるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。 +.PP +\fIjarsigner\fRおよび\fIpolicytool\fRコマンドは、URLを使用して指定できる任意の場所からファイルベースのキーストアを読み取ることができます。また、これらのコマンドは、Windows上のMSCAPIおよびすべてのプラットフォーム上のPKCS11で提供されるような非ファイルベースのキーストアを読み取ることができます。 +.PP +\fIjarsigner\fRコマンドおよび\fIkeytool\fRコマンドの場合、\fI\-storetype\fRオプションを使用して、コマンドラインでキーストアのタイプを指定できます。ポリシー・ツールの場合、\fB「キーストア」\fRメニューの\fB「編集」\fRコマンドを使用して、キーストアのタイプを指定できます。 +.PP +ユーザーがキーストアのタイプを明示的に指定しなかった場合、セキュリティ・プロパティ・ファイルで指定された\fIkeystore\&.type\fRプロパティの値に基づいて、ツールによってキーストアの実装が選択されます。このセキュリティ・プロパティ・ファイルは\fIjava\&.security\fRと呼ばれ、JDKセキュリティ・プロパティ・ディレクトリ\fIjava\&.home/lib/security\fR内に存在しています。ここで、\fIjava\&.home\fRは実行時環境のディレクトリです。\fIjre\fRディレクトリは、JDKまたはJava Runtime Environment (JRE)の最上位のディレクトリにあります。 +.PP +各ツールは、\fIkeystore\&.type\fRの値を取得し、そのタイプのキーストアを実装しているプロバイダが見つかるまで、インストールされているすべてのプロバイダを調べます。目的のプロバイダが見つかると、そのプロバイダからのキーストアの実装を使用します。 +.PP +\fIKeyStore\fRクラスに定義されているstaticメソッド\fIgetDefaultType\fRを使用すると、アプリケーションやアプレットから\fIkeystore\&.type\fRプロパティの値を取得できます。次のコードの行では、\fIkeystore\&.type property\fRで指定された、デフォルトのキーストア・タイプのインスタンスを作成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - jarsigner myBundle.jar susan -.fl - jarsigner myBundle.jar kevin -.fl -\fP +KeyStore keyStore = KeyStore\&.getInstance(KeyStore\&.getDefaultType()); .fi - -.LP -.LP -JAR ファイルが複数回署名されている場合、その JAR ファイルには .SF ファイルと .DSA ファイルの対が複数含まれることになります。 .SF ファイルと .DSA ファイルの対は、1 回の署名に対して 1 つ作成されます。したがって、上の例で出力される JAR ファイルには、次の名前を持つファイルが含まれます。 -.LP +.if n \{\ +.RE +.\} +.PP +デフォルトのキーストア・タイプは、\fIjks\fR +(Oracleが提供する独自のタイプのキーストアの実装)です。これは、セキュリティ・プロパティ・ファイル内の次の行によって指定されています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - SUSAN.SF -.fl - SUSAN.DSA -.fl - KEVIN.SF -.fl - KEVIN.DSA -.fl -\fP +keystore\&.type=jks .fi - -.LP -.LP -注: JAR ファイルでは、JDK 1.1 の \f3javakey\fP ツールで生成された署名と \f3jarsigner\fP で生成された署名が混在できます。つまり、すでに \f3javakey\fP を使って署名が付けられている JAR ファイルに、\f3jarsigner\fP を使って署名を付けることができます。 -.LP +.if n \{\ +.RE +.\} +.PP +キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、\fIJKS\fRは\fIjks\fRと同じになります。 +.PP +ツールでデフォルト以外のキーストアの実装を使用するには、その行を変更して別のキーストアのタイプを指定します。たとえば、\fIpkcs12\fRと呼ばれるキーストアのタイプのキーストアの実装を提供するプロバイダ・パッケージがある場合、行を次のように変更します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keystore\&.type=pkcs12 +.fi +.if n \{\ +.RE +.\} +.PP +\fB注意:\fR +PKCS 11プロバイダ・パッケージを使用する場合、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/p11guide\&.htmlにある +Java PKCS #11リファレンス・ガイドの「KeyTool」および「JarSigner」を参照してください。 +.SS "サポートされるアルゴリズム" +.PP +デフォルトで、\fIjarsigner\fRコマンドでは次のいずれかのアルゴリズムを使用してJARファイルに署名します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +SHA1ダイジェスト・アルゴリズムを使用したデジタル署名アルゴリズム(DSA) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +SHA256ダイジェスト・アルゴリズムを使用したRSAアルゴリズム。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +SHA256と楕円曲線デジタル署名アルゴリズム(ECDSA)を使用した楕円曲線(EC)暗号方式アルゴリズム +.RE +.PP +署名者の公開鍵と秘密鍵がDSA鍵である場合、\fIjarsigner\fRは\fISHA1withDSA\fRアルゴリズムを使用してJARファイルに署名します。署名者の鍵がRSA鍵である場合、\fIjarsigner\fRは\fISHA256withRSA\fRアルゴリズムを使用してJARファイルに署名しようとします。署名者の鍵がEC鍵である場合、\fIjarsigner\fRは\fISHA256withECDSA\fRアルゴリズムを使用してJARファイルに署名します。 +.PP +これらのデフォルトの署名アルゴリズムは、\fI\-sigalg\fRオプションを使用してオーバーライドできます。 +.SS "署名付きJARファイル" +.PP +\fIjarsigner\fRコマンドを使用してJARファイルに署名する場合、出力される署名付きJARファイルは入力JARファイルと同じですが、次の2つの追加ファイルがMETA\-INFディレクトリに置かれる点が異なります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\&.SF\fR拡張子の付いた署名ファイル +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\&.DSA\fR、\fI\&.RSA\fRまたは\fI\&.EC\fR拡張子の付いた署名ブロック・ファイル +.RE +.PP +これら2つのファイルのベース・ファイル名は、\fI\-sigFile\fRオプションの値から作成されます。たとえば、オプションが\fI\-sigFile MKSIGN\fRの場合、ファイルは\fIMKSIGN\&.SF\fRおよび\fIMKSIGN\&.DSA\fRという名前になります。 +.PP +コマンドラインで\fI\-sigfile\fRオプションを指定しなかった場合、\fI\&.SF\fRファイルと\fI\&.DSA\fRファイルのベース・ファイル名は、コマンドラインで指定された別名の先頭の8文字をすべて大文字に変換したものになります。別名が8文字未満の場合は、別名がそのまま使用されます。別名に、署名ファイル名で使用できない文字が含まれている場合、ファイル名の作成時に、該当する文字が下線(_)文字に変換されます。有効な文字は、アルファベット、数字、下線およびハイフンです。 +署名ファイル.PP +署名ファイル(\fI\&.SF\fRファイル)は、\fIjarsigner\fRコマンドを使用してファイルに署名する際にJARファイルに常に含まれるマニフェスト・ファイルと似ています。JARファイルに含まれているソース・ファイルごとに、\fI\&.SF\fRファイルには、マニフェスト・ファイルにあるような、次に示す3つの行があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ファイル名 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ダイジェスト・アルゴリズム(SHA)の名前 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +SHAダイジェストの値 +.RE +.PP +マニフェスト・ファイルでは、各ソース・ファイルのSHAダイジェストの値は、ソース・ファイルのバイナリ・データのダイジェスト(ハッシュ)になります。\fI\&.SF\fRファイルでは、指定されたソース・ファイルのダイジェストの値は、ソース・ファイルのマニフェスト・ファイル内のその3行のハッシュになります。 +.PP +署名ファイルには、デフォルトで、マニフェスト・ファイル全体のハッシュが格納されたヘッダーが含まれています。ヘッダーにはマニフェスト・ヘッダーのハッシュも含まれています。ヘッダーが存在すると、検証の最適化が有効になります。JARファイルの検証を参照してください。 +署名ブロック・ファイル.PP +\fI\&.SF\fRファイルには署名が付けられ、署名は署名ブロック・ファイルに置かれます。このファイルには、署名に使用された秘密鍵に対応する公開鍵を認証するキーストアからの証明書または証明書チェーンも、内部でエンコードされて含まれています。ファイルの拡張子は、使用されるダイジェスト・アルゴリズムに応じて、\fI\&.DSA\fR、\fI\&.RSA\fRまたは\fI\&.EC\fRになります。 +.SS "署名タイムスタンプ" +.PP +\fIjarsigner\fRコマンドでは、JARファイルの署名時に署名タイムスタンプを生成および保存できます。さらに、\fIjarsigner\fRは代替署名機構をサポートします。この動作は省略可能で、署名時に次の各オプションによって制御されます。オプションを参照してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-tsa \fIurl\fR +\-tsacert \fIalias\fR +\-altsigner \fIclass\fR +\-altsignerpath \fIclasspathlist\fR +\-tsapolicyid \fIpolicyid\fR +.fi +.if n \{\ +.RE +.\} +.SS "JARファイルの検証" +.PP +JARファイルの検証が成功するのは、署名が有効であり、かつ署名の生成以降にJARファイル内のどのファイルも変更されていない場合です。JARファイルの検証は、次の手順で行われます。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +\fI\&.SF\fRファイルの署名を検証します。 +.sp +検証では、各署名ブロック(\fI\&.DSA\fR)ファイルに格納された署名が、証明書(または証明書チェーン)も\fI\&.DSA\fRファイルに示される公開鍵に対応する秘密鍵を使用して生成されたことを確認します。また、署名が対応する署名(\fI\&.SF\fR)ファイルの有効な署名であることが確認され、それにより、\fI\&.SF\fRファイルが改ざんされていないことも確認されます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +\fI\&.SF\fRファイル内の各エントリに示されるダイジェストを、マニフェスト内の対応する各セクションと突きあわせて検証します。 +.sp +\fI\&.SF\fRファイルには、マニフェスト・ファイル全体のハッシュが格納されたヘッダーがデフォルトで含まれています。ヘッダーが存在する場合、検証では、ヘッダー内のハッシュがマニフェスト・ファイルのハッシュと一致するかどうかを確認するためにチェックできます。一致する場合、検証は次の手順に進みます。 +.sp +一致しない場合、\fI\&.SF\fRファイル内の各ソース・ファイル情報セクションのハッシュが、マニフェスト・ファイル内の対応するセクションのハッシュと一致することを確認するために、あまり最適化されていない検証が必要になります。署名ファイルを参照してください。 +.sp +\fI\&.SF\fRファイルのヘッダーに格納されたマニフェスト・ファイルのハッシュが、現在のマニフェスト・ファイルのハッシュに一致しない理由の1つは、署名および\fI\&.SF\fRファイルの生成後に、(\fIjar\fRツールを使用して)1つ以上のファイルがJARファイルに追加されたことです。\fIjar\fRツールを使用してファイルを追加した場合、新しいファイル用のセクションが追加されることにより、マニフェスト・ファイルは変更されますが、\fI\&.SF\fRファイルは変更されません。検証がまだ成功しているとみなされるのは、署名の生成以降にJARファイル内のどのファイルも変更されていない場合です。これが発生するのは、\fI\&.SF\fRファイルのヘッダー以外のセクションのハッシュが、マニフェスト・ファイル内の対応するセクションのハッシュと一致する場合です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 3.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 3." 4.2 +.\} +\fI\&.SF\fRファイル内にエントリを持つJARファイル内の各ファイルを読み取ります。読取り中にファイルのダイジェストを計算し、結果をマニフェスト・セクション内のこのファイルのダイジェストと比較します。ダイジェストは同じである必要があり、そうでない場合は検証が失敗します。 +.sp +検証プロセス中になんらかの重大な検証エラーが発生した場合、そのプロセスは停止され、セキュリティ例外がスローされます。\fIjarsigner\fRコマンドでは、例外を捕捉および表示します。 +.RE +.PP +\fB注意:\fR +追加の警告(または、\fI\-strict\fRオプションを指定した場合はエラー)はすべて読む必要があります。同様に、証明が信頼できるかを決定するために、(\fI\-verbose\fRおよび\fI\-certs\fRオプションを指定して)証明書の内容も読む必要があります。 +.SS "1つのJARファイルを対象とする複数の署名" +.PP +次のように、\fIjarsigner\fRコマンドをファイルで複数回実行し、実行のたびに異なるユーザーの別名を指定することによって、1つのJARファイルに複数のユーザーの署名を付けることができます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner myBundle\&.jar susan +jarsigner myBundle\&.jar kevin +.fi +.if n \{\ +.RE +.\} +.PP +JARファイルが複数回署名されている場合、そのJARファイルには、複数の\fI\&.SF\fRファイルと\fI\&.DSA\fRファイルが含まれており、1回の署名に対して1つのペアとなります。前述の例では、出力JARファイルには、次の名前のファイルが含まれています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +SUSAN\&.SF +SUSAN\&.DSA +KEVIN\&.SF +KEVIN\&.DSA +.fi +.if n \{\ +.RE +.\} .SH "オプション" -.LP -.LP -以下では、\f3jarsigner\fP のオプションについて説明します。注: -.LP -.RS 3 -.TP 2 -o -どのオプション名にも先頭にマイナス記号 (\-) が付く -.TP 2 -o -オプションは任意の順序で指定できる -.TP 2 -o -イタリック体の項目の実際の値 (オプションの値) は、ユーザーが指定する必要がある -.TP 2 -o -\f2\-keystore\fP、 \f2\-storepass\fP、 \f2\-keypass\fP、 \f2\-sigfile\fP、 \f2\-sigalg\fP、 \f2\-digestalg\fP、および \f2\-signedjar\fP オプションを使用できるのは、署名付き JAR ファイルを検証する場合ではなく、JAR ファイルに署名する場合だけです。同様に、別名をコマンド行で指定するのは、JAR ファイルに署名を付ける場合だけである +.PP +次の各項では、様々な\fIjarsigner\fRオプションについて説明します。次の標準に注意してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +どのオプション名にも先頭にマイナス記号(\-)が付きます。 .RE - -.LP -.RS 3 -.TP 3 -\-keystore url -キーストアの場所を示す URL を指定します。デフォルトは、ユーザーのホームディレクトリ内のファイル \f2.keystore\fP です。 ユーザーのホームディレクトリは、user.home システムプロパティーによって決まります。 -.LP -署名するときはキーストアが必要です。 このため、デフォルトのキーストアが存在しない場合、あるいはデフォルト以外のほかのキーストアを使用する場合は、キーストアを明示的に指定する必要があります。 -.LP -検証するときはキーストアは必要ありません。ただし、キーストアが指定されているか、あるいはデフォルトのキーストアが存在していて、さらに \f2\-verbose\fP オプションも指定されていた場合、JAR ファイルの検証に使用される証明書がそのキーストアに 1 つでも含まれているかどうかに関する追加情報が出力されます。 -.LP -注: \f2\-keystore\fP の引数には、URL の代わりにファイル名 (とパス) を指定できます。 ファイル名 (とパス) を指定した場合は、「file:」URL として扱われます。たとえば、次のように指定できます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +オプションは任意の順序で指定できます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +イタリック体または下線付きの項目(オプションの値)の実際の値は、指定する必要があります。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-storepass\fR、\fI\-keypass\fR、\fI\-sigfile\fR、\fI\-sigalg\fR、\fI\-digestalg\fR、\fI\-signedjar\fRおよびTSA関連のオプションを使用できるのは、JARファイルに署名する場合のみです。署名付きJARファイルを検証する場合ではありません。\fI\-keystore \fRオプションは、JARファイルの署名および検証に関連します。また、別名は、JARファイルの署名および検証時に指定します。 +.RE +.PP +\-keystore \fIurl\fR +.RS 4 +キーストアの場所を示すURLを指定します。これにより、\fIuser\&.home\fRシステム・プロパティで決定されたユーザーのホーム・ディレクトリ内のファイル\fI\&.keystore\fRにデフォルト設定されます。 +.sp +キーストアは署名時には必要です。デフォルトのキーストアが存在しない場合、またはデフォルト以外のキーストアを使用する場合は、キーストアを明示的に指定する必要があります。 +.sp +検証するときはキーストアは必要ありません。ただし、キーストアが指定されているか、あるいはデフォルトのキーストアが存在していて、さらに\fI\-verbose\fRオプションも指定されていた場合、JARファイルの検証に使用される証明書がそのキーストアに1つでも含まれているかどうかに関する追加情報が出力されます。 +.sp +\fI\-keystore\fR引数には、URLではなくファイル名とパスを指定でき、この場合、ファイル: URLと同じように処理されます。たとえば、次にように指定すると同等になります。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \-keystore \fP\f4filePathAndName\fP\f3 -.fl -\fP +\-keystore \fIfilePathAndName\fR +\-keystore file:\fIfilePathAndName\fR .fi -.LP -これは、次の指定と同じものとして扱われます。 +.if n \{\ +.RE +.\} +(JREの\fI$JAVA_HOME/lib/security directory\fRにある) +\fIjava\&.security\fRセキュリティ・プロパティ・ファイル内でSun PKCS #11プロバイダが構成された場合、\fIkeytool\fRおよび\fIjarsigner\fRツールはPKCS#11トークンに基づいて動作できます。次のオプションを指定します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \-keystore file:\fP\f4filePathAndName\fP\f3 -.fl -\fP +\-keystore NONE +\-storetype PKCS11 .fi -.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 +.if n \{\ .RE -.LP -たとえば、次のコマンドは、設定された PKCS#11 トークンの内容を一覧表示します。 +.\} +たとえば、次のコマンドは、構成されたPKCS#11トークンの内容を一覧表示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - jarsigner \-keystore NONE \-storetype PKCS11 \-list -.fl - -.fl -\fP +keytool \-keystore NONE \-storetype PKCS11 \-list .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 -キーストアにアクセスするのに必要なパスワードを指定します。このオプションが必要なのは、JAR ファイルに署名を付けるときだけです (JAR ファイルを検証するときは不要)。その場合、 \f2\-storepass\fP オプションをコマンド行で指定しなかった場合は、新しいパスワードの入力を求められます。 -.LP -修飾子 \f2env\fP または \f2file\fP が指定されていない場合、パスワードの値は \f2argument\fP になります。それ以外の場合、パスワードは次のようにして取得されます。 -.RS 3 -.TP 2 -o -\f2env\fP: \f2argument\fP という名前の環境変数からパスワードを取得する -.TP 2 -o -\f2file\fP: \f2argument\fP という名前のファイルからパスワードを取得する +.if n \{\ .RE -.LP -注: テストを目的とする場合、またはセキュリティー保護されたシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。 -.TP 3 -\-keypass[:env | :file] argument -.LP -コマンド行で指定された別名に対応するキーストアエントリの非公開鍵を保護するのに使うパスワードを指定します。\f3jarsigner\fP を使って JAR ファイルに署名を付けるときは、パスワードが必要です。コマンド行でパスワードが指定されておらず、必要なパスワードがストアのパスワードと異なる場合は、パスワードの入力を求められます。 -.LP -修飾子 \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 -\f2file\fP に使用できる文字は「a\-zA\-Z0\-9_\-」です。つまり、文字、数字、下線、およびハイフンだけを使用できます。注: .SF および .DSA のファイル名では、小文字はすべて大文字に変換されます。 -.LP -\-sigfile \f2\-sigfile\fP オプションを指定しなかった場合、.SF ファイルと .DSA ファイルのベースファイル名は、コマンド行で指定された別名の先頭の 8 文字をすべて大文字に変換したものになります。別名が 8 文字未満の場合は、別名がそのまま使われます。別名の中に、署名ファイル名に使用できない文字が含まれている場合は、該当する文字を下線 (_) に置き換えてファイル名が作成されます。 -.TP 3 -\-sigalg algorithm -JAR ファイルの署名に使用する署名アルゴリズムの名前を指定します。 -.LP -標準署名アルゴリズム名の一覧については、「Java Cryptography Architecture」にある -.na -\f2「Appendix A 」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。このアルゴリズムは、JAR ファイルの署名に使用する秘密鍵と互換性のあるものでなければなりません。このオプションを指定しなかった場合、秘密鍵のタイプに応じて SHA1withDSA、SHA256withRSA、SHA256withECDSA のいずれかが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、あるいはユーザーがそのようなプロバイダを \f2\-providerClass\fP オプションを使って指定する必要があります。そうでない場合、コマンドの実行が失敗します。 -.TP 3 -\-digestalg algorithm -JAR ファイルのエントリをダイジェストする際に使用するメッセージダイジェストアルゴリズムの名前を指定します。 -.LP -標準メッセージダイジェストアルゴリズム名の一覧については、「Java Cryptography Architecture」にある -.na -\f2「Appendix 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 -コマンド行で名前を指定しなかった場合は、入力 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 -検証についての詳細は、「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 のインスタンス) である場合は、署名者の識別名 +.PP +\-storetype \fIstoretype\fR +.RS 4 +インスタンスを生成するキーストアのタイプを指定します。デフォルトのキーストア・タイプは、セキュリティ・プロパティ・ファイル内の\fIkeystore\&.type\fRプロパティの値で指定されたタイプです。この値は、\fIjava\&.security\&.KeyStore\fRのstatic +\fIgetDefaultType\fRメソッドによって返されます。 +.sp +\fI\-storepass\fRオプションを使用して、PCKS #11トークンのPINを指定することもできます。何も指定しない場合、\fIkeytool\fRおよび\fIjarsigner\fRコマンドによって、トークンPINの指定を求められます。トークンに保護された認証パス(専用のPINパッドや生体読取り機など)がある場合、\fI\-protected\fRオプションを指定する必要がありますが、パスワード・オプションは指定できません。 .RE -.LP -キーストアの確認も行われます。コマンド行でキーストアの値が指定されていない場合、デフォルトのキーストアファイルがあれば、検査されます。署名者の公開鍵の証明書がキーストア内のエントリと一致した場合は、次の情報も表示されます。 -.RS 3 -.TP 2 -o -署名者に該当するキーストアエントリの別名。この別名は括弧で囲まれます。 ただし、キーストアではなく JDK 1.1 のアイデンティティーデータベースに由来する署名者の場合は、括弧ではなく大括弧で囲まれます。 +.PP +\-storepass[:env | :file] \fIargument\fR +.RS 4 +キーストアにアクセスするのに必要なパスワードを指定します。これが必要なのは、JARファイルに署名を付けるときのみです(検証するときには不要です)。その場合、\fI\-storepass\fRオプションをコマンドラインで指定しないと、パスワードの入力を求められます。 +.sp +修飾子\fIenv\fRまたは\fIfile\fRが指定されていない場合、パスワードの値は\fIargument\fRになります。それ以外の場合、パスワードは次のようにして取得されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIenv\fR: +\fIargument\fRという名前の環境変数からパスワードを取得します。 .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 -デフォルトでは、最適化を行うために、マニフェストファイル全体のハッシュを含むヘッダーが追加されます。ヘッダーが存在する場合は、JAR ファイルの検証時に、まずヘッダー内のハッシュが、マニフェストファイル全体のハッシュと実際に一致するかどうかが確認されます。ハッシュが一致する場合、検証は次の手順に進みます。ハッシュが一致しない場合は、効率的には劣る方法を使って検証を行います。 具体的には、.SF ファイル内の各ソースファイル情報セクションのハッシュが、マニフェストファイル内の対応するセクションのハッシュと一致するかどうかを確認します。 -.LP -詳細は、「JAR ファイルの検証」を参照してください。 -.LP -\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 キーストアを一覧表示するコマンドの例を次に示します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIfile\fR: +\fIargument\fRという名前のファイルからパスワードを取得します。 +.RE +.sp +\fB注意:\fR +テストを目的とする場合またはセキュリティ保護されたシステムを使用している場合以外は、コマンドラインやスクリプトでパスワードを指定しないでください。 +.RE +.PP +\-keypass [:env | :file] \fIargument\fR +.RS 4 +コマンドラインで指定された別名に対応するキーストア・エントリの秘密鍵を保護するのに使用するパスワードを指定します。\fIjarsigner\fRを使用してJARファイルに署名を付けるときは、パスワードが必要です。コマンドラインでパスワードが指定されておらず、必要なパスワードがストアのパスワードと異なる場合は、パスワードの入力を求められます。 +.sp +修飾子\fIenv\fRまたは\fIfile\fRが指定されていない場合、パスワードの値は\fIargument\fRになります。それ以外の場合、パスワードは次のようにして取得されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIenv\fR: +\fIargument\fRという名前の環境変数からパスワードを取得します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIfile\fR: +\fIargument\fRという名前のファイルからパスワードを取得します。 +.RE +.sp +\fB注意:\fR +テストを目的とする場合またはセキュリティ保護されたシステムを使用している場合以外は、コマンドラインやスクリプトでパスワードを指定しないでください。 +.RE +.PP +\-sigfile \fIfile\fR +.RS 4 +生成された\fI\&.SF\fRファイルおよび\fI\&.DSA\fRファイルに使用するベース・ファイル名を指定します。たとえば、ファイルが\fIDUKESIGN\fRの場合、生成される\fI\&.SF\fRおよび\fI\&.DSA\fRファイルは、\fIDUKESIGN\&.SF\fRおよび\fIDUKESIGN\&.DSA\fRという名前で、署名付きJARファイルの\fIMETA\-INF\fRディレクトリに格納されます。 +.sp +ファイル内の文字は、セット\fIa\-zA\-Z0\-9_\-\fRから指定される必要があります。アルファベット、数字、下線およびハイフン文字のみを使用できます。\fI\&.SF\fRおよび\fI\&.DSA\fRのファイル名では、小文字はすべて大文字に変換されます。 +.sp +コマンドラインで\fI\-sigfile\fRオプションを指定しなかった場合、\fI\&.SF\fRファイルと\fI\&.DSA\fRファイルのベース・ファイル名は、コマンドラインで指定された別名の先頭の8文字をすべて大文字に変換したものになります。別名が8文字未満の場合は、別名がそのまま使用されます。別名に、署名ファイル名で無効な文字が含まれている場合、ファイル名を作成するために、該当する文字が下線(_)文字に変換されます。 +.RE +.PP +\-sigalg \fIalgorithm\fR +.RS 4 +JARファイルの署名に使用する署名アルゴリズムの名前を指定します。 +.sp +標準的な署名アルゴリズム名のリストは、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppAにある +Java Cryptography Architecture (JCA)リファレンス・ガイドの「付録A: 標準名」を参照してください。 +.sp +このアルゴリズムには、JARファイルの署名に使用する秘密鍵との互換性が必要です。このオプションを指定しない場合、秘密鍵のタイプに応じて、\fISHA1withDSA\fR、\fISHA256withRSA\fRまたは\fISHA256withECDSA\fRが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、\fI\-providerClass\fRオプションを使用してそのようなプロバイダをユーザーが指定する必要があります。そうでない場合、コマンドは失敗します。 +.RE +.PP +\-digestalg \fIalgorithm\fR +.RS 4 +JARファイルのエントリをダイジェストする際に使用するメッセージ・ダイジェスト・アルゴリズムの名前を指定します。 +.sp +標準的なメッセージ・ダイジェスト・アルゴリズム名のリストは、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppAにある +Java Cryptography Architecture (JCA)リファレンス・ガイドの「付録A: 標準名」を参照してください。 +.sp +このオプションを指定しない場合、\fISHA256\fRが使用されます。指定されたアルゴリズムの実装を提供するプロバイダが静的にインストールされているか、\fI\-providerClass\fRオプションを使用してそのようなプロバイダをユーザーが指定する必要があります。そうでない場合、コマンドは失敗します。 +.RE +.PP +\-certs +.RS 4 +コマンドラインで、\fI\-certs\fRオプションを\fI\-verify\fRおよび\fI\-verbose\fRオプションとともに指定した場合、JARファイルの各署名者の証明書情報が出力に含まれます。この情報には、署名者の公開鍵を証明する証明書(\fI\&.DSA\fRファイルに格納)のタイプの名前が含まれ、証明書がX\&.509証明書(\fIjava\&.security\&.cert\&.X509Certificate\fRのインスタンス)の場合、署名者の識別名が含まれます。 +.sp +キーストアの確認も行われます。コマンドラインでキーストアの値が指定されていない場合、デフォルトのキーストア・ファイル(ある場合)がチェックされます。署名者の公開鍵の証明書がキーストア内のエントリと一致する場合、その署名者のキーストアのエントリの別名が丸カッコ内に表示されます。 +.RE +.PP +\-certchain \fIfile\fR +.RS 4 +コマンドラインで指定した別名によって表されるキーストア・エントリの秘密鍵に関連付けられた証明書チェーンが完全ではない場合に、使用する証明書チェーンを指定します。これは、証明書チェーン全体を保持するのに十分な領域がないハードウェア・トークン上にキーストアが格納されている場合に発生します。このファイルは一連の連結されたX\&.509証明書、PKCS#7形式の単一データ・ブロックのいずれかとなり、そのエンコーディング形式はバイナリ・エンコーディング形式、Internet RFC 1421標準で規定される印刷可能エンコーディング形式(Base64エンコーディングとも呼ばれる)のいずれかになります。インターネットRFC 1421証明書符号化規格およびhttp://tools\&.ietf\&.org/html/rfc1421を参照してください。 +.RE +.PP +\-verbose +.RS 4 +コマンドラインで\fI\-verbose\fRオプションを指定した場合、冗長モードで動作し、このモードでは、\fIjarsigner\fRは、JARの署名または検証の進行状況に関する追加情報を出力します。 +.RE +.PP +\-internalsf +.RS 4 +以前は、JARファイルの署名時に生成された\fI\&.DSA\fR +(署名ブロック)ファイルに、生成された\fI\&.SF\fRファイル(署名ファイル)のエンコードされた完全なコピーが含まれていました。 この動作は変更されました。出力JARファイル全体のサイズを小さくするために、デフォルトでは\fI\&.DSA\fRファイルには\fI\&.SF\fRファイルのコピーが含まれないようになっています。コマンドラインで\fI\-internalsf\fRを指定した場合、以前と同じように動作します。このオプションは、テストを行う場合に便利です。実際には、\fI\-internalsf\fRオプションは、オーバーヘッドが大きくなるため、使用しないでください。 +.RE +.PP +\-sectionsonly +.RS 4 +コマンドラインで\fI\-sectionsonly\fRオプションを指定した場合、JARファイルの署名時に生成される\fI\&.SF\fRファイル(署名ファイル)には、マニフェスト・ファイル全体のハッシュを含むヘッダーは含まれません。これに含まれるのは、JARファイル内の各ソース・ファイルに関連する情報およびハッシュのみです。署名ファイルを参照してください。 +.sp +デフォルトでは、最適化のために、このヘッダーが追加されます。ヘッダーが存在する場合、JARファイルを検証するたびに、検証では、まずヘッダー内のハッシュがマニフェスト・ファイル全体のハッシュと一致するかどうかを確認するためにチェックできます。一致する場合、検証は次の手順に進みます。一致しない場合、\fI\&.SF\fRファイル内の各ソース・ファイル情報セクションのハッシュが、マニフェスト・ファイル内の対応するセクションのハッシュと一致するという、あまり最適化されていない検証を実行する必要があります。JARファイルの検証を参照してください。 +.sp +\fI\-sectionsonly\fRオプションは、主にテスト用に使用されます。これを使用するとオーバーヘッドが大きくなるため、テスト用以外では使用しないでください。 +.RE +.PP +\-protected +.RS 4 +\fItrue\fRまたは\fIfalse\fRのいずれかの値を指定できます。専用PINリーダーなどの保護された認証パスによってパスワードを指定する必要がある場合、\fItrue\fRを指定します。 +.RE +.PP +\-providerClass \fIprovider\-class\-name\fR +.RS 4 +暗号化サービス・プロバイダが\fIjava\&.security\fRセキュリティ・プロパティ・ファイルに指定されていないときは、そのマスター・クラス・ファイルの名前を指定するときに使用されます。 +.sp +\fI\-providerArg ConfigFilePath\fRオプションとともに使用し、\fIkeytool\fRおよび\fIjarsigner\fRツールは、プロバイダを動的にインストールし、トークン構成ファイルへのパスに\fIConfigFilePath\fRを使用します。次の例は、Oracle PKCS #11プロバイダがセキュリティ・プロパティ・ファイルに構成されていなかった場合に\fIPKCS #11\fRキーストアを一覧表示するコマンドを示しています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jarsigner \-keystore NONE \-storetype PKCS11 \\ -.fl - \-providerClass sun.security.pkcs11.SunPKCS11 \\ -.fl - \-providerArg /foo/bar/token.config \\ -.fl +jarsigner \-keystore NONE \-storetype PKCS11 \e + \-providerClass sun\&.security\&.pkcs11\&.SunPKCS11 \e + \-providerArg /mydir1/mydir2/token\&.config \e \-list -.fl -\fP .fi -.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 キーストアプロバイダインスタンスの内容をリストします。 +.if n \{\ +.RE +.\} +.RE +.PP +\-providerName \fIproviderName\fR +.RS 4 +\fIjava\&.security\fRセキュリティ・プロパティ・ファイル内で2つ以上のプロバイダが構成された場合、\fI\-providerName\fRオプションを使用して、特定のプロバイダ・インスタンスを対象にすることができます。このオプションの引数は、プロバイダの名前です。 +.sp +Oracle PKCS #11プロバイダの場合、\fIproviderName\fRは\fISunPKCS11\-\fR\fITokenName\fRという形式になります。ここで、構成属性の表で詳細に説明されているように、\fITokenName\fRは、プロバイダ・インスタンスが構成された名前の接尾辞です。たとえば、次のコマンドは、名前接尾辞\fISmartCard\fRの\fIPKCS #11\fRキーストア・プロバイダ・インスタンスの内容を一覧表示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jarsigner \-keystore NONE \-storetype PKCS11 \\ -.fl - \-providerName SunPKCS11\-SmartCard \\ -.fl +jarsigner \-keystore NONE \-storetype PKCS11 \e + \-providerName SunPKCS11\-SmartCard \e \-list -.fl -\fP .fi -.TP 3 -できますjavaoption -指定された \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 -タイムスタンプを生成するために、 \f2jarsigner\fP は、 -.na -\f2RFC 3161\fP @ -.fi -http://www.ietf.org/rfc/rfc3161.txt で定義されている タイムスタンププロトコル (TSP) を使用して TSA と通信します。成功すると、TSA から返されたタイムスタンプトークンは署名ブロックファイルの署名とともに保存されます。 -.LP -.TP 3 -\-tsacert alias -\f2「\-tsacert alias」\fP が JAR ファイルの署名時にコマンド行に表示される場合、署名のタイムスタンプが生成されます。 \f2alias\fP は、キーストア内の現在有効な TSA の公開鍵証明書を特定します。エントリの証明書で、TSA の場所を特定する URL を含む Subject Information Access 拡張機能が確認されます。 -.LP -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 -たとえば、 \f2com.sun.sun.jarsigner.AuthSigner\fP という名前のクラスが提供する署名機構を使用するには、 \f2jarsigner\fP オプション \f2「\-altsigner com.sun.jarsigner.AuthSigner」を使用します。\fP -.LP -.TP 3 -\-altsignerpath classpathlist -クラスファイル (そのクラスファイル名は前述の \f2\-altsigner\fP オプションで指定される) およびそのクラスが依存するすべての JAR ファイルへのパスを指定します。クラスファイルが JAR ファイル内にある場合、以下の例のように JAR ファイルへのパスが指定されます。 -.LP -絶対パスまたは現在のディレクトリからの相対パスを指定できます。 \f2classpathlist\fP に複数のパスや JAR ファイルが含まれる場合には、それらを Solaris の場合はコロン (\f2:\fP) で、Windows の場合はセミコロン (\f2;\fP) でそれぞれ区切ります。目的のクラスがすでに検索パス内にある場合は、このオプションは不要です。 -.LP -クラスファイルを含む、JAR ファイルへのパスを指定する例を示します。 +.if n \{\ +.RE +.\} +.RE +.PP +\-J\fIjavaoption\fR +.RS 4 +指定された\fIjavaoption\fR文字列をJavaインタプリタに直接渡します。\fIjarsigner\fRコマンドは、インタプリタに対するラッパーです。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタ・オプションを一覧表示するには、コマンドラインで\fIjava \-h\fRまたは\fIjava \-X\fRと入力してください。 +.RE +.PP +\-tsa \fIurl\fR +.RS 4 +\fI\-tsa http://example\&.tsa\&.url\fRがJARファイルの署名時にコマンドラインにある場合、署名のタイムスタンプが生成されます。URL +\fIhttp://example\&.tsa\&.url\fRは、Time Stamping Authority (TSA)の場所を特定し、\fI\-tsacert\fRオプションを指定して検出されたURLをオーバーライドします。\fI\-tsa\fRオプションでは、TSAの公開鍵証明書をキーストアに配置する必要はありません。 +.sp +タイムスタンプを生成するために、\fIjarsigner\fRは、RFC 3161で定義されているタイムスタンプ・プロトコル(TSP)を使用してTSAと通信します。成功すると、TSAによって返されたタイムスタンプ・トークンは、署名ブロック・ファイルの署名とともに保存されます。 +.RE +.PP +\-tsacert \fIalias\fR +.RS 4 +\fI\-tsacert alias\fRがJARファイルの署名時にコマンドラインにある場合、署名のタイムスタンプが生成されます。別名は、キーストア内の有効なTSAの公開鍵証明書を特定します。エントリの証明書で、TSAの場所を特定するURLを含むSubject Information Access拡張機能が確認されます。 +.sp +\fI\-tsacert\fRオプションを使用する場合は、TSAの公開鍵証明書がキーストアに配置されている必要があります。 +.RE +.PP +\-tsapolicyid \fIpolicyid\fR +.RS 4 +TSAサーバーに送信するポリシーIDを識別するオブジェクト識別子(OID)を指定します。このオプションを指定しない場合、ポリシーIDは送信されず、TSAサーバーはデフォルトのポリシーIDを選択します。 +.sp +オブジェクト識別子は、ITU Telecommunication Standardization Sector (ITU\-T)標準であるX\&.696によって定義されます。これらの識別子は、通常、\fI1\&.2\&.3\&.4\fRなどの、負ではない数字のピリオド区切りのセットです。 +.RE +.PP +\-altsigner \fIclass\fR +.RS 4 +このオプションは、代替署名メカニズムを指定します。完全修飾クラス名は、\fIcom\&.sun\&.jarsigner\&.ContentSigner\fR抽象クラスを拡張するクラス・ファイルを識別します。このクラス・ファイルへのパスは、\fI\-altsignerpath\fRオプションによって定義されます。\fI\-altsigner\fRオプションを使用した場合、\fIjarsigner\fRコマンドでは、指定されたクラスによって提供される署名メカニズムを使用します。それ以外の場合、\fIjarsigner\fRコマンドはデフォルトの署名メカニズムを使用します。 +.sp +たとえば、\fIcom\&.sun\&.sun\&.jarsigner\&.AuthSigner\fRという名前のクラスが提供する署名メカニズムを使用するには、jarsignerのオプション\fI\-altsigner com\&.sun\&.jarsigner\&.AuthSigner\fRを使用します。 +.RE +.PP +\-altsignerpath \fIclasspathlist\fR +.RS 4 +クラス・ファイルおよびそれが依存するJARファイルへのパスを指定します。\fI\-altsigner\fRオプションを使用して、クラス・ファイル名を指定します。クラス・ファイルがJARファイル内にある場合、このオプションでは、そのJARファイルへのパスを指定します。 +.sp +絶対パスまたは現在のディレクトリへの相対パスを指定できます。\fIclasspathlist\fRに複数のパスやJARファイルが含まれる場合、それらを、Oracle Solarisの場合はコロン(:)で、Windowsの場合はセミコロン(;)で、それぞれ区切ります。目的のクラスがすでに検索パス内にある場合は、このオプションは不要です。 +.sp +次の例では、クラス・ファイルを含むJARファイルへのパスを指定する方法を示します。JARファイル名を含めます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\-altsignerpath /home/user/lib/authsigner.jar -.fl -\fP +\-altsignerpath /home/user/lib/authsigner\&.jar .fi -.LP -JAR ファイル名が含まれていることに注意してください。 -.LP -クラスファイルを含む JAR ファイルへのパスを指定する例を示します。 +.if n \{\ +.RE +.\} +次の例では、クラス・ファイルを含むJARファイルへのパスを指定する方法を示します。JARファイル名を省略します。 +.sp +.if n \{\ +.RS 4 +.\} .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 つのエントリ (およびそれ以上)」として要約されて表示されます。詳細は例の項を参照してください。 +.if n \{\ +.RE +.\} +.RE +.PP +\-strict +.RS 4 +署名または検証処理中に、コマンドにより警告メッセージが発行される場合があります。このオプションを指定すると、コマンドにより検出された重大な警告メッセージがツールの終了コードに反映されます。エラーと警告を参照してください。 +.RE +.PP +\-verbose \fIsuboptions\fR +.RS 4 +検証処理の場合、\fI\-verbose\fRオプションには、表示する情報の量を決定するサブオプションを指定します。\fI\-certs\fRオプションも指定した場合、デフォルト・モード(またはサブオプション\fIall\fR)では、エントリが処理されるたびに各エントリが表示され、その後にJARファイルの各署名者の証明書情報も表示されます。\fI\-certs\fRおよび\fI\-verbose:grouped\fRサブオプションを指定した場合、同じ署名者情報を持つエントリが、その証明書情報とともに、グループ化されて表示されます。\fI\-certs\fRおよび\fI\-verbose:summary\fRサブオプションを指定した場合、同じ署名者情報を持つエントリが、その証明書情報とともに、グループ化されて表示されます。各エントリの詳細は、\fI1つのエントリ(以上)\fRにまとめられて表示されます。例を参照してください。 +.RE +.SH "エラーと警告" +.PP +署名または検証プロセス中に、\fIjarsigner\fRコマンドで、様々なエラーまたは警告が発行される可能性があります。 +.PP +障害がある場合、\fIjarsigner\fRコマンドはコード1で終了します。障害はないが、1つ以上の重大な警告がある場合、\fI\-strict\fRオプションが指定されて\fBいない\fR場合は、\fIjarsigner\fRコマンドはコード0で終了し、\fI\-strict\fRが指定されている場合は警告コードのOR値で終了します。情報警告のみがある、または警告がまったくない場合、コマンドは常にコード0で終了します。 +.PP +たとえば、エントリの署名に使用される証明書が期限切れで、ファイルの署名を許可しないKeyUsage拡張機能を使用している場合、\fI\-strict\fRオプションが指定されていると、\fIjarsigner\fRコマンドはコード12 (=4+8)で終了します。 +.PP +\fB注意:\fR +UNIXベースのオペレーティング・システムでは0から255までの値のみが有効のため、終了コードは再利用されます。 +.PP +次のセクションでは、\fIjarsigner\fRコマンドにより発行できるエラーおよび警告の名前、コード、説明を記述します。 +.SS "障害" +.PP +コマンドライン解析エラー、JARファイルに署名する鍵ペアを検索できない、または署名付きJARファイルの検証失敗など(限定されません)、\fIjarsigner\fRコマンドの失敗理由。 +.PP +failure +.RS 4 +コード1。署名または検証が失敗します。 +.RE +.SS "重大な警告" +.PP +\fB注意:\fR +\fI\-strict\fRオプションを指定した場合、重大な警告はエラーとして報告されます。 +.PP +JARファイルの署名に使用する証明書にエラーがある、または署名付きJARファイルに他の問題があるなど、\fIjarsigner\fRコマンドが重大な警告を発行する理由。 +.PP +hasExpiredCert +.RS 4 +コード4。このjarには、署名者証明書が期限切れのエントリが含まれています。 +.RE +.PP +notYetValidCert +.RS 4 +コード4。このjarには、署名者証明書がまだ有効になっていないエントリが含まれています。 +.RE +.PP +chainNotValidated +.RS 4 +コード4。このjarには、証明書チェーンが正しく検証できないエントリが含まれています。 +.RE +.PP +badKeyUsage +.RS 4 +コード8。このJARには、署名者証明書のKeyUsage拡張機能がコード署名を許可しないエントリが含まれています。 +.RE +.PP +badExtendedKeyUsage +.RS 4 +コード8。このjarには、署名者証明書のExtendedKeyUsage拡張機能がコード署名を許可しないエントリが含まれています。 +.RE +.PP +badNetscapeCertType +.RS 4 +コード8。このjarには、署名者証明書のNetscapeCertType拡張機能がコード署名を許可しないエントリが含まれています。 +.RE +.PP +hasUnsignedEntry +.RS 4 +コード16。このjarには、整合性チェックをしていない未署名のエントリが含まれています。 +.RE +.PP +notSignedByAlias +.RS 4 +コード32。このjarには、指定された別名によって署名されていない署名済エントリが含まれています。 +.RE +.PP +aliasNotInStore +.RS 4 +コード32。このjarには、このキーストア内の別名によって署名されていない署名済エントリが含まれます。 +.RE +.SS "情報警告" +.PP +情報警告には、エラーではないが不適切とみなされるものが含まれます。コードはありません。 +.PP +hasExpiringCert +.RS 4 +このjarには、署名者証明書が6か月以内に期限切れとなるエントリが含まれています。 +.RE +.PP +noTimestamp +.RS 4 +このjarには、タイムスタンプを含まない署名が含まれています。タイムスタンプなしでは、署名者証明書の有効期限(\fIYYYY\-MM\-DD\fR)後または将来の取消日後、ユーザーはこのJARファイルを検証できない場合があります。 .RE - -.LP .SH "例" -.LP -.SS -JAR ファイルの署名 -.LP -.LP -bundle.jar という名前の JAR ファイルがあるとします。このファイルに、キーストアの別名が jane であるユーザーの非公開鍵を使って、署名を付けるとします。この場合、次のコマンドを実行すると、JAR ファイルに署名を付けて sbundle.jar という署名付き JAR ファイルを作成できます。 -.LP +.SS "JARファイルの署名" +.PP +次のコマンドを使用して、キーストア別名が\fIworking\fRディレクトリの\fImystore\fRという名前のキーストアにある\fIjane\fRであるユーザーの秘密鍵でbundle\&.jarに署名し、署名付きJARファイルに\fIsbundle\&.jar\fRという名前を付けます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - jarsigner \-keystore /working/mystore \-storepass \fP\f4<キーストアのパスワード>\fP\f3 -.fl - \-keypass \fP\f4<非公開鍵のパスワード>\fP\f3 \-signedjar sbundle.jar bundle.jar jane -.fl -\fP +jarsigner \-keystore /working/mystore + \-storepass <keystore password> + \-keypass <private key password> + \-signedjar sbundle\&.jar bundle\&.jar jane .fi - -.LP -.LP -上のコマンドでは \f2\-sigfile\fP が指定されていないため、署名付き JAR ファイルに格納される .SF ファイルと .DSA ファイルの名前は、別名からデフォルト名がつけられます。つまり、それらの名前は \f2JANE.SF\fP および \f2JANE.DSA\fP になります。 -.LP -.LP -ストアのパスワードと非公開鍵のパスワードをあとで入力する場合は、上のコマンドを短縮して次のように入力できます。 -.LP -.nf -\f3 -.fl - jarsigner \-keystore /working/mystore -.fl - \-signedjar sbundle.jar bundle.jar jane -.fl -\fP -.fi - -.LP -.LP -デフォルトのキーストア (ホームディレクトリ内の .keystore という名前のキーストア) を使用する場合は、次に示すように、キーストアの指定を省略できます。 -.LP -.nf -\f3 -.fl - jarsigner \-signedjar sbundle.jar bundle.jar jane -.fl -\fP -.fi - -.LP -.LP -最後に、入力 JAR ファイル (\f2bundle.jar\fP) を署名付き JAR ファイルで単純に上書きする場合は、次のように \f2\-signedjar\fP オプションを指定する必要はありません。 -.LP -.nf -\f3 -.fl - jarsigner bundle.jar jane -.fl -\fP -.fi - -.LP -.SS -署名付き JAR ファイルの検証 -.LP -.LP -次に示すのは、署名付き JAR ファイルを検証し、署名が有効で JAR ファイルが改変されていないことを確認するためのコマンド例です。 -.LP -.nf -\f3 -.fl - jarsigner \-verify sbundle.jar -.fl -\fP -.fi - -.LP -.LP -検証が成功すると、次のようなメッセージが表示されます。 -.LP -.nf -\f3 -.fl - jar verified. -.fl -\fP -.fi - -.LP -.LP -というプロンプトが表示されます。検証が成功しなかった場合は、エラーメッセージが表示されます。 -.LP -.LP -\-verbose オプションを使うと、 \f2より多くの情報が\fP 表示されます。\-verbose オプション付きで \f3jarsigner\fP \f2を使用する例とその出力例を、\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 -検証時に \-verify と \-verbose オプションに加えて \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 -.SH "警告" -.LP -署名/検証処理中には、jarsigner からさまざまな警告が表示される可能性があります。これらの警告コードは次のように定義されています。 -.nf -\f3 -.fl - 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 - -.LP -.LP -\f2\-strict\fP オプションを指定した場合、検出された警告の OR を取った値がツールの終了コードとして返されます。たとえば、エントリの署名に使用される証明書が期限切れになっていて、かつその証明書の keyUsage 拡張でファイルの署名が許可されていない場合、終了コード 12 (=4+8) が返されます。 -.LP -.LP -\f3注\fP: UNIX で使用可能な値は 0 から 255 だけであるため、終了コードは再利用されます。いずれにしても、署名/検証処理が失敗すると、次の終了コードが返されます。 -.LP -.nf -\f3 -.fl -failure 1 -.fl -\fP -.fi - -.LP -.SS -JDK 1.1 との互換性 -.LP -.LP -\f3keytool\fP ツールと \f3jarsigner\fP ツールは、JDK 1.1 で提供されていた \f3javakey\fP ツールを完全に置き換えるものです。これらの新しいツールは、キーストアと非公開鍵をパスワードで保護する機能や、署名の生成に加えて署名を検証する機能など、\f3javakey\fP より多くのを機能を備えています。 -.LP -.LP -新しいキーストアアーキテクチャーは、\f3javakey\fP が作成して管理していたアイデンティティーデータベースに代わるものです。キーストア形式と、JDK 1.1 の \f3javakey\fP が使っていたデータベース形式との間には下位互換性はありません。ただし、次のことは可能です。 -.LP -.RS 3 -.TP 2 -o -\f3keytool\fP の \f2\-identitydb\fP コマンドを使うと、アイデンティティーデータベースの情報をキーストアにインポートできます。 -.TP 2 -o -\f3jarsigner\fP は、以前に \f3javakey\fP を使って署名された JAR ファイルに署名を付けることができます。 -.TP 2 -o -\f3jarsigner\fP は、\f3javakey\fPを使って署名された JAR ファイルを検証できます。したがって、jarsigner は、Java 2 SDK のキーストアではなく JDK 1.1 のアイデンティティーデータベースからの署名者別名を認識し、これらを対象に処理を行うことができます。 +.if n \{\ .RE - -.LP -.LP -次の表は、JDK 1.1.x で署名された JAR ファイルが、Java 2 プラットフォームでどのように扱われるかを示しています。 -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. +.\} +.PP +前述のコマンドでは\fI\-sigfile\fRが指定されていないため、署名付きJARファイルに格納される生成された\fI\&.SF\fRファイルおよび\fI\&.DSA\fRファイルの名前は、別名に基づいたデフォルトの名前になります。これらは、名前付きの\fIJANE\&.SF\fRおよび\fIJANE\&.DSA\fRです。 +.PP +ストアのパスワードおよび秘密鍵のパスワードを求められる場合、前述のコマンドを短縮して、次のことを実行できます。 +.sp +.if n \{\ +.RS 4 +.\} .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 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 -.LP -注 \- -.LP -.RS 3 -.TP 3 -1. -ポリシーファイル内にアイデンティティー/別名についての言及がある場合、それをキーストアにインポートして、ポリシーファイルの設定が与えられた特権に反映されるようにする必要があります。 -.TP 3 -2. -ポリシーファイル/キーストアの組み合わせは、アイデンティティーデータベース内の信頼できるアイデンティティーよりも優先されます。 -.TP 3 -3. -Java 2 プラットフォームでは、信頼できないアイデンティティーは無視されます。 -.TP 3 -4. -Java 2 SDK キーストアにインポートできるのは、信頼できるアイデンティティーだけです。 -.RE - -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -jar(1) ツールのドキュメント -.TP 2 -o -keytool(1) ツールのドキュメント -.TP 2 -o -.na -\f4jarsigner\fP\f2 ツールの使用例については、\fP @ +jarsigner \-keystore /working/mystore + \-signedjar sbundle\&.jar bundle\&.jar jane .fi -http://download.oracle.com/javase/tutorial/security/index.html -.na -\f2「Java チュートリアル」\fP\f4の\fP @ -.fi -http://download.oracle.com/javase/tutorial/index.html「Security」\f3を参照\fP +.if n \{\ .RE - -.LP +.\} +.PP +キーストアがデフォルトのキーストア(ホーム・ディレクトリ内の\&.keystore)である場合、次に示すように、キーストアを指定する必要がありません。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner \-signedjar sbundle\&.jar bundle\&.jar jane +.fi +.if n \{\ +.RE +.\} +.PP +入力JARファイル(bundle\&.jar)を署名付きJARファイルで上書きする場合、次のように\fI\-signedjar\fRオプションを指定する必要はありません。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner bundle\&.jar jane +.fi +.if n \{\ +.RE +.\} +.SS "署名付きJARファイルの検証" +.PP +署名付きJARファイルを検証して、署名が有効でJARファイルが改ざんされなかったことを確認するには、次のようなコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner \-verify sbundle\&.jar +.fi +.if n \{\ +.RE +.\} +.PP +検証が成功すると、\fIjar verified\fRが表示されます。そうでない場合は、エラー・メッセージが表示されます。\fI\-verbose\fRオプションを使用すると、詳細情報を取得できます。\fIjarsigner\fRを\fI\-verbose\fRオプションとともに使用するサンプルを、次に示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner \-verify \-verbose sbundle\&.jar + 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF + 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF + 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA + smk 2752 Fri Sep 26 16:12:30 PDT 1997 AclEx\&.class + smk 849 Fri Sep 26 16:12:46 PDT 1997 test\&.class + + s = signature was verified + m = entry is listed in manifest + k = at least one certificate was found in keystore + + jar verified\&. +.fi +.if n \{\ +.RE +.\} +.SS "証明書情報を使用した検証" +.PP +\fI\-certs\fRオプションを\fI\-verify\fRおよび\fI\-verbose\fRオプションとともに指定した場合、JARファイルの各署名者の証明書情報が出力に含まれます。この情報には、証明書タイプ、署名者の識別名情報(X\&.509証明書の場合)が含まれ、丸カッコ内には、JARファイルの公開鍵証明書がキーストア・エントリの公開鍵証明書に一致する場合の署名者のキーストア別名が含まれます。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jarsigner \-keystore /working/mystore \-verify \-verbose \-certs myTest\&.jar + + 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF + 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF + 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA + 208 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST\&.SF + 1087 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST\&.DSA + smk 2752 Fri Sep 26 16:12:30 PDT 1997 Tst\&.class + + X\&.509, CN=Test Group, OU=Java Software, O=Oracle, L=CUP, S=CA, C=US (javatest) + X\&.509, CN=Jane Smith, OU=Java Software, O=Oracle, L=cup, S=ca, C=us (jane) + + s = signature was verified + m = entry is listed in manifest + k = at least one certificate was found in keystore + + jar verified\&. +.fi +.if n \{\ +.RE +.\} +.PP +署名者の証明書がX\&.509証明書ではない場合、識別名情報は表示されません。その場合には、証明書のタイプと別名のみが表示されます。たとえば、証明書がPGP証明書で、別名が\fIbob\fRである場合、\fIPGP, (bob)\fRを取得します。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +keytool(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/tutorial/security/index\&.htmlにある +「コース: Java SEのセキュリティ機能」 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/java.1 b/jdk/src/solaris/doc/sun/man/man1/ja/java.1 index 062d3209af8..f134a028e6c 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/java.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/java.1 @@ -1,509 +1,2553 @@ -." 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 -." 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 java 1 "07 May 2011" - -.LP -.SH "名前" -java \- Java アプリケーション起動ツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: java +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "java" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +java \- Javaアプリケーションを起動します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \fP\f3java\fP [ options ] class [ argument ... ] -.fl - \f3java\fP [ options ] \f3\-jar\fP file.jar [ argument ... ] -.fl +\fIjava\fR [\fIoptions\fR] \fIclassname\fR [\fIargs\fR] .fi - -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。 -.TP 3 -class -呼び出されるクラスの名前 -.TP 3 -file.jar -呼び出される JAR ファイルの名前。必ず \f2\-jar\fP とともに使用する -.TP 3 -argument -\f3main\fP 関数に渡される引数 +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjava\fR [\fIoptions\fR] \fI\-jar\fR \fIfilename\fR [\fIargs\fR] +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +空白で区切られたコマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIclassname\fR +.RS 4 +起動するクラスの名前。 +.RE +.PP +\fIfilename\fR +.RS 4 +呼び出されるJavaアーカイブ(JAR)ファイルの名前。\fI\-jar\fRオプションと一緒にのみ使用します。 +.RE +.PP +\fIargs\fR +.RS 4 +空白で区切られた\fImain()\fRメソッドに渡される引数。 .RE - -.LP .SH "説明" -.LP -.LP -\f3java\fP ツールは、Java アプリケーションを起動します。java ツールは、Java Runtime Environment を起動したあと、指定されたクラスをロードし、そのクラスの \f3main\fP メソッドを呼び出すことにより、Java アプリケーションを起動します。 -.LP -.LP -このメソッドは、public および static として宣言する必要があります。 また、値を返してはいけません。 さらに、 \f2String\fP 配列をパラメータとして指定できなければなりません。メソッドの宣言は、次のようになっていなければなりません。 -.LP +.PP +\fIjava\fRコマンドはJavaアプリケーションを開始します。Java Runtime Environment (JRE)を起動した後、指定したクラスをロードし、そのクラスの\fImain()\fRメソッドを呼び出すことにより、これを行います。このメソッドは、\fIpublic\fRおよび\fIstatic\fRとして宣言する必要があります。また、値は返せません。さらに、\fIString\fR配列をパラメータとして指定できる必要があります。メソッド宣言は次の形式を含みます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -public static void main(String args[]) -.fl -\fP +public static void main(String[] args) .fi - -.LP -.LP -デフォルトでは、コマンド行オプション以外の最初の引数が、呼び出されるクラスの名前になります。この名前には、完全指定のクラス名を使用する必要があります。\f3\-jar\fP オプションを指定した場合、コマンド行オプション以外の最初の引数が、アプリケーションのクラスファイルとリソースファイルを含む \f3JAR\fP アーカイブの名前になります。この場合、マニフェストの \f3Main\-Class\fP ヘッダーで指定されたクラスが起動クラスになります。 -.LP -.LP -Java Runtime は、ブートストラップクラスパス、インストール型拡張機能、およびユーザークラスパスの 3 箇所から起動クラスと他の使用されているクラスを検索します。 -.LP -.LP -クラス名または JAR ファイル名のあとにある、コマンド行オプション以外の引数は、\f3main\fP 関数に渡されます。 -.LP +.if n \{\ +.RE +.\} +.PP +\fIjava\fRコマンドを使用して、\fImain()\fRメソッドがあるか\fIjavafx\&.application\&.Application\fRを拡張するクラスをロードすることで、JavaFXアプリケーションを起動できます。後者の場合、起動ツールは\fIApplication\fRクラスのインスタンスを構成し、その\fIinit()\fRメソッドをコールし、\fIstart(javafx\&.stage\&.Stage)\fRメソッドをコールします。 +.PP +デフォルトでは、\fIjava\fRコマンドのオプションではない最初の引数は、呼び出されるクラスの完全修飾名です。\fI\-jar\fRオプションを指定した場合、その引数は、アプリケーションのクラス・ファイルとリソース・ファイルを含むJARファイルの名前になります。起動クラスは、ソース・コードの\fIMain\-Class\fRマニフェスト・ヘッダーによって指定される必要があります。 +.PP +JREは、ブートストラップ・クラス・パス、インストール済拡張機能およびユーザーのクラス・パスの3箇所から、起動クラス(およびアプリケーションで使用されている他のクラス)を検索します。 +.PP +クラス・ファイル名またはJARファイル名の後の引数は、\fImain()\fRメソッドに渡されます。 .SH "オプション" -.LP -.LP -起動ツールには、現在の実行環境および将来のリリースでサポートされる標準オプションがあります。また、仮想マシンの現在の実装では、非標準オプションのセットもサポートされます。これは、将来のリリースで変更される可能性があります。 -.LP -.SH "標準オプション" -.LP -.RS 3 -.TP 3 -\-client -.LP -Java HotSpot Client VM を選択します。64 ビット対応 JDK は現時点では、このオプションを無視し、代わりに Java Hotspot Server VM を使用します。 -.LP -デフォルトの VM の選択については、 -.na -\f2「サーバー \- クラスマシンの検出」\fP @ -.fi -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 オプションが暗黙的に選択されます。 -.LP -デフォルトの VM の選択については、 -.na -\f2「サーバー \- クラスマシンの検出」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/vm/server\-class.htmlを参照してください。 -.TP 3 -\-agentlib:libname[=options] -ネイティブエージェントライブラリ \f2libname\fP をロードします。たとえば次のように指定します。 -.LP -\-agentlib:hprof -.LP -\-agentlib:jdwp=help -.LP -\-agentlib:hprof=help -.LP -詳細については、 -.na -\f2「JVMTI エージェントのコマンド行オプション」\fP @ -.fi -http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#startingを参照してください。 -.TP 3 -\-agentpath:pathname[=options] -フルパス名を使用して、ネーティブエージェントライブラリをロードします。詳細については、 -.na -\f2「JVMTI エージェントのコマンド行オプション」\fP @ -.fi -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 環境変数の設定がオーバーライドされます。 -.LP -\f3\-classpath\fP も \f3\-cp\fP も使用されず、\f3CLASSPATH\fP も設定されていない場合、ユーザークラスパスは現在のディレクトリ (\f4.\fP) になります。 -.LP -便宜上、 \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 プログラムが展開されていないワイルドカードを認識することはありません。 -.LP -クラスパスの詳細は、 -.na -\f2「クラスパスの設定」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpathを参照してください。 -.TP 3 -\-Dproperty=value -システムプロパティーの値を設定します。 -.TP 3 -\-d32 -.TP 3 -\-d64 -それぞれ 32 ビット環境、64 ビット環境でプログラムを実行することを要求します。要求された環境がインストールされていないかサポートされていない場合は、エラーが報告されます。 -.LP -現在のところ、Java HotSpot Server VM だけが 64 ビットの操作をサポートしており、\-server オプションを使用する場合は、\-d64 も一緒に使用する必要があります。したがって、\-d64 使用時には「\-client」オプションは無視されます。この仕様は、将来のリリースでは変更になる可能性があります。 -.LP -\f3\-d32\fP と \f3\-d64\fP がどちらも指定されていない場合は、デフォルトとして、32 ビット環境で実行されます。この仕様は、将来のリリースでは変更になる可能性があります。 -.TP 3 -\-enableassertions[:<package name>"..." | :<class name> ] -.TP 3 -\-ea[:<package name>"..." | :<class name> ] -アサーションを有効にします。アサーションは、デフォルトでは無効になっています。 -.LP -引数なしの \f3enableassertions\fP または \f3\-ea\fP を指定すると、アサーションが有効になります。「\f2...\fP」で終わる引数を 1 つ指定すると、指定したパッケージとそのサブパッケージ内でアサーションが有効になります。引数として「\f2...\fP」だけを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが有効になります。「\f2...\fP」で終わらない引数を 1 つ指定すると、指定したクラス内でアサーションが有効になります。 -.LP -単一コマンド行にこれらのスイッチのインスタンスを複数指定した場合は、指定したスイッチが順番に処理されてからクラスがロードされます。したがって、たとえば、パッケージ \f2com.wombat.fruitbat\fP (サブパッケージを含む) 内でのみアサーションを有効にしてプログラムを実行するには、次のようなコマンドを使用します。 -.nf -\f3 -.fl -java \-ea:com.wombat.fruitbat... <Main Class> -.fl -\fP -.fi -.LP -\f3\-enableassertions\fP および \f3\-ea\fP スイッチは、すべてのクラスローダおよびシステムクラスに適用されます。システムクラスにはクラスローダはありません。ただし、この規則には 1 つ例外があります。それは、引数なしの形式でこのスイッチを指定すると、その指定がシステムに適用されない、ということです。この例外を利用すれば、システムクラスを除くすべてのクラスでアサーションを簡単に有効にすることができます。すべてのシステムクラスでアサーションを有効にするために、別のスイッチが用意されています。このあとの \f3\-enablesystemassertions\fP を参照してください。 -.TP 3 -\-disableassertions[:<package name>"..." | :<class name> ] -.TP 3 -\-da[:<package name>"..." | :<class name> ] -アサーションを無効にします。これがデフォルトです。 -.LP -引数なしの \f3disableassertions\fP または \f3\-da\fP を指定すると、アサーションが無効になります。「\f2...\fP」で終わる引数を 1 つ指定すると、指定したパッケージとそのサブパッケージ内でアサーションが無効になります。引数として「\f2...\fP」だけを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが無効になります。「\f2...\fP」で終わらない引数を 1 つ指定すると、指定したクラス内でアサーションが無効になります。 -.LP -パッケージ \f2com.wombat.fruitbat\fP 内ではアサーションを有効にし、クラス \f2com.wombat.fruitbat.Brickbat\fP 内ではアサーションを無効にしたうえで、プログラムを実行するには、次のようなコマンドを使用します。 -.nf -\f3 -.fl -java \-ea:com.wombat.fruitbat... \-da:com.wombat.fruitbat.Brickbat \fP\f4<Main Class>\fP\f3 -.fl -\fP -.fi -.LP -\f3\-disableassertions\fP および \f3\-da\fP スイッチは、すべてのクラスローダおよびシステムクラスに適用されます。システムクラスにはクラスローダはありません。ただし、この規則には 1 つ例外があります。それは、引数なしの形式でこのスイッチを指定すると、その指定がシステムに適用されない、ということです。この例外を利用すれば、システムクラスを除くすべてのクラスでアサーションを簡単に有効にすることができます。すべてのシステムクラスでアサーションを無効にするために、別のスイッチが用意されています。このあとの \f3\-disablesystemassertions\fP を参照してください。 -.TP 3 -\-enablesystemassertions -.TP 3 -\-esa -すべてのシステムクラス内でアサーションを有効にします。つまり、システムクラスについてアサーションのデフォルトステータスを \f2true\fP に設定します。 -.TP 3 -\-disablesystemassertions -.TP 3 -\-dsa -すべてのシステムクラス内でアサーションを無効にします。 -.TP 3 -\-jar -JAR ファイルにカプセル化されたプログラムを実行します。最初の引数は、起動クラスの名前ではなく、JAR ファイルの名前にします。このオプションが機能するには、JAR ファイルのマニフェストに\f3「Main\-Class:\fP\f4classname\fP\f3」\fPという形式の行を指定する必要があります。\f2classname\fP には、アプリケーションの開始位置として機能する \f2public\ static\ void\ main(String[]\ args)\fP メソッドを含むクラスを指定します。JAR ファイルとそのマニフェストについては、jar(1)と、 -.na -\f2Java チュートリアル\fP @ -.fi -http://download.oracle.com/javase/tutorial/deployment/jarの「Trail: Jar Files」を参照してください。 -.LP -このオプションを使用すると、指定した JAR ファイルがすべてのユーザークラスのソースになり、ユーザークラスパスのほかの設定は無視されます。 -.LP -Solaris 8 では、「java \-jar」オプションで実行できる JAR ファイルは、実行権限のセットを保持しています。このため、「java \-jar」を使用しないで実行することも可能です。Java Archive (JAR) ファイル -.na - @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/jar/index.html -.TP 3 -\-javaagent:jarpath[=options] -Java プログラミング言語エージェントをロードします。 java.lang.instrument を参照してください。 -.na - @ -.fi -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) アクティビティーに関する情報を報告します。 -.TP 3 -\-version -バージョン情報を表示して終了します。 -.TP 3 -\-version:release -コマンド行に指定されたクラスまたは JAR ファイルが、\f2release\fP で指定されたバージョンを必要としていることを示します。起動された java コマンドのバージョンがこの指定内容を満たさず、かつ適切な実装がシステム上で見つかった場合には、その適切な実装が使用されます。 -.LP -\f2release\fP では、特定のバージョンを指定できるだけでなく、バージョン文字列と呼ばれるバージョンのリストを指定することもできます。バージョン文字列は、いくつかのバージョン範囲を空白で区切った形式の順序付きリストです。バージョン範囲は、バージョン ID、バージョン ID の後にアスタリスク (*) を付加したもの、バージョン ID の後にプラス記号 (+) を付加したもの、2 つのバージョン範囲をアンパサンド (&) で結合したもの、のいずれかになります。アスタリスクはプレフィックス一致を、プラス記号は指定されたバージョン以上を、アンパサンドは 2 つのバージョン範囲の論理積を、それぞれ意味します。次に例を示します。 -.nf -\f3 -.fl -\-version:"1.6.0_13 1.6*&1.6.0_10+" -.fl -\fP -.fi -上記の意味は、バージョン 1.6.0_13、1.6 をバージョン ID プレフィックスに持つ 1.6.0_10 以上のバージョン、のいずれかをクラスまたは JAR ファイルが必要としている、ということです。バージョン文字列の厳密な構文や定義については、「Java Network Launching Protocol & API Specification (JSR\-56)」の「Appendix A」を参照してください。 -.LP -JAR ファイルの場合は通常、バージョン要件をコマンド行に指定するよりも、JAR ファイルのマニフェスト内に指定することが推奨されています。 -.LP -このオプションの使用に関する重要なポリシー情報については、後述の「注」節を参照してください。 -.TP 3 -\-showversion -バージョン情報を表示して続行します。 -.TP 3 -\-? -.TP 3 -\-help -使用法を表示して終了します。 -.TP 3 -\-splash:imagepath -\f2imagepath\fP に指定された画像を含むスプラッシュ画面を表示します。 -.TP 3 -\-X -非標準オプションに関する情報を表示して終了します。 +.PP +\fIjava\fRコマンドは、次のカテゴリに分類できる広範なオプションをサポートしています。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +標準オプション .RE - -.LP -.SS +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} 非標準オプション -.LP -.RS 3 -.TP 3 -\-Xint -インタプリタ専用モードで動作します。ネイティブコードへのコンパイルは無効になり、すべてのバイトコードがインタプリタによって実行されます。Java HotSpot VM に対応するコンパイラが提供するパフォーマンス上の利点は、このモードでは実現されません。 -.TP 3 -\-Xbatch -バックグラウンドコンパイルを無効にします。通常、VM では、バックグラウンドコンパイルが終了するまで、メソッドをバックグラウンドタスクとしてコンパイルし、インタプリタモードでメソッドを実行します。\f2\-Xbatch\fP フラグを指定すると、バックグラウンドコンパイルが無効になり、すべてのメソッドのコンパイルが完了するまでフォアグラウンドタスクとして処理されます。 -.TP 3 -\-Xbootclasspath:bootclasspath -ブートクラスファイルを探すディレクトリ、JAR アーカイブ、および ZIP アーカイブをコロンで区切ったリストで指定します。指定したパスに存在するブートクラスファイルが、Java プラットフォーム JDK に含まれるブートクラスファイルの代わりに使用されます。\f2注: rt.jar 内のクラスをオーバーライドする目的でこのオプションを使用するアプリケーションは、システムに配置しないでください。Java Runtime Environment バイナリコードライセンス違反になります。\fP -.TP 3 -\-Xbootclasspath/a:path -ディレクトリ、JAR アーカイブ、および ZIP アーカイブのパスをコロンで区切って指定します。パスはデフォルトのブートストラップクラスパスのあとに追加されます。 -.TP 3 -\-Xbootclasspath/p:path -ディレクトリ、JAR アーカイブ、および ZIP アーカイブのパスをコロンで区切って指定します。パスはデフォルトのブートストラップクラスパスの前に追加されます。\f2注: rt.jar 内のクラスをオーバーライドする目的でこのオプションを使用するアプリケーションは、システムに配置しないでください。Java Runtime Environment バイナリコードライセンス違反になります。\fP -.TP 3 -\-Xcheck:jni -Java Native Interface (JNI) 機能に対して追加チェックを行います。具体的には、Java 仮想マシンは JNI 要求を処理する前に、JNI 関数に渡されるパラメータと、実行環境のデータを検証します。無効なデータが見つかった場合は、ネイティブコードに問題があることを示しているため、Java 仮想マシンは致命的エラーを発生して終了します。このオプションを使用すると、パフォーマンス低下が予想されます。 -.TP 3 -\-Xfuture -クラスとファイルの形式を厳密にチェックします。下位互換性を保つため、JDK の仮想マシンが実行するデフォルトの形式チェックは、JDK ソフトウェアのバージョン 1.1.x が実行するチェックと同程度の厳密さになっています。\f3\-Xfuture\fP フラグを指定すると、クラスファイル形式の仕様への準拠を強化するためのより厳密なチェックが有効になります。Java アプリケーション起動ツールの将来のリリースでは、より厳密なチェックがデフォルトになるため、新しいコードを開発するときにはこのフラグを使用することをお勧めします。 -.TP 3 -\-Xnoclassgc -クラスのガベージコレクションを無効にします。このオプションを使用すると、ロード済みクラスからメモリーが回復されることがなくなるため、全体的なメモリー使用量が増大します。この場合、アプリケーションによっては OutOfMemoryError がスローされる可能性があります。 -.TP 3 -\-Xincgc -インクリメンタルガーベジコレクタを有効にします。インクリメンタルガベージコレクタは、デフォルトでは無効になっています。 有効にすると、プログラムの実行中にガベージコレクションによる一時停止が発生しなくなります。インクリメンタルガベージコレクタは、プログラムと同時に実行することがあり、この場合、プログラムの利用できるプロセッサ能力が低下します。 -.TP 3 -\-Xloggc:file -\-verbose:gc と同様にガベージコレクションイベントが発生するたびに報告しますが、そのデータを \f2file\fP に記録します。\f2\-verbose:gc\fP を指定したときに報告される情報のほかに、報告される各イベントの先頭に、最初のガベージコレクションイベントからの経過時間 (秒単位) が付け加えられます。 -.LP -ネットワークの応答時間によって JVM の実行速度が低下するのを避けるため、このファイルの格納先は、常にローカルファイルシステムにしてください。ファイルシステムが満杯になると、ファイルは切り詰められ、そのファイルにデータが引き続き記録されます。このオプションと \f2\-verbose:gc\fP の両方がコマンド行に指定されている場合は、このオプションが優先されます。 -.TP 3 -\-Xmsn -メモリー割り当てプールの初期サイズをバイト数で指定します。指定する値は、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 - \-Xms6291456 -.fl - \-Xms6144k -.fl - \-Xms6m -.fl - -.fl -\fP -.fi -.TP 3 -\-Xmxn -メモリー割り当てプールの最大サイズをバイト数で指定します。指定する値は、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 -例: -.nf -\f3 -.fl - \-Xmx83886080 -.fl - \-Xmx81920k -.fl - \-Xmx80m -.fl - -.fl -\fP -.fi -Solaris 7 および Solaris 8 SPARC プラットフォームの場合のこの値の上限は、およそ 4000m からオーバーヘッドの量を引いたものです。Solaris 2.6 および x86 プラットフォームの場合の上限は、およそ 2000m からオーバーヘッドの量を引いたものです。Linux プラットフォームの場合の上限は、およそ 2000m からオーバーヘッドの量を引いたものです。 -.TP 3 -\-Xprof -実行中のプログラムのプロファイルを生成し、プロファイルデータを標準出力に出力します。このオプションは、プログラム開発用のユーティリティーとして提供されています。 本番稼動システムでの使用を目的としたものではありません。 -.TP 3 -\-Xrs -Java 仮想マシン (JVM) によるオペレーティングシステムシグナルの使用を減らします。 -.LP -以前のリリースでは、Java アプリケーションを秩序正しくシャットダウンするためのシャットダウンフック機能が追加されました。この機能により、JVM が突然終了した場合でも、シャットダウン時にユーザークリーンアップコード (データベース接続のクローズなど) を実行できるようになりました。 -.LP -Sun の JVM は、シグナルをキャッチすることによって、JVM の異常終了のためのシャットダウンフックを実装します。JVM は、SIGHUP、SIGINT、および SIGTERM を使用して、シャットダウンフックの実行を開始します。 -.LP -JVM は、デバッグの目的でスレッドスタックをダンプするという、1.2 より前からある機能を実現するためにも、同様の機構を使用します。Sun の JVM は、スレッドダンプを実行するために SIGQUIT を使用します。 -.LP -JVM を埋め込んでいるアプリケーションが SIGINT や SIGTERM などのシグナルを頻繁にトラップする必要があると、JVM そのもののシグナルハンドラの処理に支障が出る可能性があります。\f3\-Xrs\fP コマンド行オプションを使用すると、この問題に対処できます。Sun の JVM に対して \f3\-Xrs\fP を使用すると、SIGINT、SIGTERM、SIGHUP、および SIGQUIT に対するシグナルマスクは JVM によって変更されず、これらのシグナルに対するシグナルハンドラはインストールされません。 -.LP -\f3\-Xrs\fP を指定した場合、次の 2 つの影響があります。 -.RS 3 -.TP 2 -o -SIGQUIT によるスレッドダンプを利用できない -.TP 2 -o -シャットダウンフック処理の実行は、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 以外のシグナルを使用させます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +高度なランタイム・オプション .RE - -.LP -.SH "注" -.LP -.LP -\f3\-version:\fP\f2release\fP コマンド行オプションでは、どんなに複雑にリリースを指定してもかまいません。ただし、現実的なリリース指定の限られたサブセットを使用するだけでも適切なポリシーを表現できるため、それらのサブセットのみが完全にサポートされます。それらのポリシーを次に示します。 -.LP -.RS 3 -.TP 3 -1. -任意のバージョン。これは、このオプションを使用しないことで表現できます。 -.TP 3 -2. -ある特定のバージョン ID よりも大きい任意のバージョン。次に例を示します。 -.nf -\f3 -.fl -"1.6.0_10+" -.fl -\fP -.fi -この場合、 \f21.6.0_10\fP よりも大きい任意のバージョンが使用されます。これは、指定されたバージョンで特定のインタフェースが導入された (あるいはそのバグが修正された) 場合に便利です。 -.TP 3 -3. -ある特定のバージョン ID よりも大きいバージョン。ただし、そのリリースファミリの上限によって制限するもの。次に例を示します。 -.nf -\f3 -.fl -"1.6.0_10+&1.6*" -.fl -\fP -.fi -.TP 3 -4. -上の項目 2 と項目 3 の「OR」式。次に例を示します。 -.nf -\f3 -.fl -"1.6.0_10+&1.6* 1.7+" -.fl -\fP -.fi -これは項目 2 に似ていますが、ある変更が特定のリリース (1.7) で導入されたが、その同じ変更が以前のリリースのアップデートでも利用可能になった、という場合に便利です。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +高度なJITコンパイラ・オプション +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +高度なサービスアビリティ・オプション +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +高度なガベージ・コレクション・オプション +.RE +.PP +標準のオプションは、Java Virtual Machine (JVM)のすべての実装でサポートすることが保証されます。これらは、JREのバージョンの確認、クラス・パスの設定、冗長な出力の有効化などの一般的なアクションに使用されます。 +.PP +標準以外のオプションは、Java HotSpot仮想マシンに固有の汎用オプションであるため、すべてのJVM実装でサポートされることは保証されず、変更される可能性があります。これらのオプションは\fI\-X\fRで開始します。 +.PP +拡張オプションは、不用意に使用しないことをお薦めします。これらは、特定のシステム要件を持つことが多く、システム構成パラメータへの特権アクセスが必要な場合があるJava HotSpot仮想マシン操作の特定の領域を調整するために使用される開発者オプションです。これらは、すべてのJVM実装でサポートされることは保証されず、変更される可能性があります。拡張オプションは\fI\-XX\fRで始まります。 +.PP +最新リリースで非推奨または削除されるオプションを追跡するために、ドキュメントの最後に非推奨で削除されたオプションという名前のセクションがあります。 +.PP +ブール・オプションは、デフォルトで無効になっている機能を有効にしたり、デフォルトで有効になっている機能を無効にするために使用されます。このようなオプションは、パラメータを必要としません。ブール値\fI\-XX\fRオプションは、プラス記号(\fI\-XX:+\fR\fIOptionName\fR)を使用して有効にし、マイナス記号(\fI\-XX:\-\fR\fIOptionName\fR)を使用して無効にします。 +.PP +引数が必要なオプションの場合、引数は、オプション名を空白、コロン(:)または等号(=)で区切ったものになるか、あるいは引数がオプションの後に直接続く場合もあります(正確な構文は各オプションによって異なります)。サイズをバイト単位で指定するよう求められている場合、接尾辞を使用しないか、あるいはキロバイト(KB)には接尾辞\fIk\fRまたは\fIK\fR、メガバイト(MB)には接尾辞\fIm\fRまたは\fIM\fR、ギガバイト(GB)には接尾辞\fIg\fRまたは\fIG\fRを使用します。たとえば、サイズを8GBに設定するには、\fI8g\fR、\fI8192m\fR、\fI8388608k\fRまたは\fI8589934592\fRのいずれかを引数として指定できます。パーセントの指定が必要な場合は、0から1の数値を使用します(たとえば、25%の場合は\fI0\&.25\fRを指定します)。 +.SS "標準オプション" +.PP +これらは、JVMのすべての実装でサポートされる最も一般的に使用されるオプションです。 +.PP +\-agentlib:\fIlibname\fR[=\fIoptions\fR] +.RS 4 +指定したネイティブ・エージェント・ライブラリをロードします。ライブラリ名の後に、ライブラリに固有のオプションのカンマ区切りリストを使用できます。 +.sp +オプション\fI\-agentlib:foo\fRを指定した場合、JVMは、\fILD_LIBRARY_PATH\fRシステム変数(OS Xでは、この変数は\fIDYLD_LIBRARY_PATH\fRになります)で指定された場所に\fIlibfoo\&.so\fRという名前のライブラリをロードしようとします。 +.sp +次の例では、スタックの深さ3で、20ミリ秒ごとにヒープ・プロファイリング・ツール(HPROF)ライブラリをロードして、サンプルのCPU情報を取得する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-agentlib:hprof=cpu=samples,interval=20,depth=3 +.fi +.if n \{\ +.RE +.\} +次の例では、メイン・クラスのロード前にJVMを一時停止して、Javaデバッグ・ワイヤ・プロトコル(JDWP)ライブラリをロードして、ポート8000でのソケット接続用にリスニングする方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-agentlib:jdwp=transport=dt_socket,server=y,address=8000 +.fi +.if n \{\ +.RE +.\} +ネイティブ・エージェント・ライブラリの詳細は、次を参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/8/docs/api/java/lang/instrument/package\-summary\&.htmlにある\fIjava\&.lang\&.instrument\fRパッケージの説明 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/8/docs/platform/jvmti/jvmti\&.html#startingにあるJVMツール・インタフェース・ガイドのエージェントのコマンドライン・オプションに関する項 +.RE +.RE +.PP +\-agentpath:\fIpathname\fR[=\fIoptions\fR] +.RS 4 +絶対パス名で指定されたネイティブ・エージェント・ライブラリをロードします。このオプションは\fI\-agentlib\fRと同等ですが、ライブラリのフル・パスおよびファイル名を使用します。 +.RE +.PP +\-client +.RS 4 +Java HotSpot Client VMを選択します。64ビット・バージョンのJava SE Development Kit (JDK)では、現在、このオプションは無視され、かわりにServer JVMが使用されます。 +.sp +デフォルトのJVM選択は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/server\-class\&.htmlにある +サーバークラス・マシンの検出を参照してください。 +.RE +.PP +\-D\fIproperty\fR=\fIvalue\fR +.RS 4 +システム・プロパティの値を設定します。\fIproperty\fR変数は、プロパティの名前を表す、空白のない文字列です。\fIvalue\fR変数は、プロパティの値を表す文字列です。\fIvalue\fRが空白を含む文字列の場合、それを引用符で囲みます(例: +\fI\-Dfoo="foo bar"\fR)。 +.RE +.PP +\-d32 +.RS 4 +アプリケーションを32ビット環境で実行します。32ビット環境がインストールされていないかサポートされていない場合は、エラーが報告されます。デフォルトでは、64ビット・システムが使用されている場合を除き、アプリケーションは32ビット環境で実行されます。 +.RE +.PP +\-d64 +.RS 4 +アプリケーションを64ビット環境で実行します。64ビット環境がインストールされていないかサポートされていない場合は、エラーが報告されます。デフォルトでは、64ビット・システムが使用されている場合を除き、アプリケーションは32ビット環境で実行されます。 +.sp +現在のところ、Java HotSpot Server VMのみが64ビットの操作をサポートしているため、\fI\-d64\fR使用時には\fI\-server\fRオプションが暗黙的に使用されます。\fI\-d64\fR使用時には、\fI\-client\fRオプションは無視されます。この仕様は、将来のリリースでは変更になる可能性があります。 +.RE +.PP +\-disableassertions[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR], \-da[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR] +.RS 4 +アサーションを無効にします。デフォルトでは、アサーションはすべてのパッケージおよびクラスで無効になっています。 +.sp +引数なしの\fI\-disableassertions\fR +(\fI\-da\fR)を指定すると、すべてのパッケージおよびクラスでアサーションが無効になります。\fI\&.\&.\&.\fRで終わる\fIpackagename\fR引数を指定すると、指定したパッケージとそのサブパッケージ内でアサーションが無効になります。引数として\fI\&.\&.\&.\fRのみを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが無効になります。\fIclassname\fR引数を指定すると、切替えによって、指定したクラス内でアサーションが無効になります。 +.sp +\fI\-disableassertions\fR +(\fI\-da\fR)オプションは、すべてのクラス・ローダーおよびシステム・クラスに適用されます(システム・クラスにはクラス・ローダーはありません)。このルールには1つ例外があります。オプションの引数が指定されていない場合は、システム・クラスに適用されません。これにより、システム・クラスを除くすべてのクラスでアサーションを簡単に無効にすることができます。\fI\-disablesystemassertions\fRオプションを使用すると、すべてのシステム・クラスでアサーションを無効にすることができます。 +.sp +特定のパッケージやクラスでアサーションを明示的に有効にするには、\fI\-enableassertions\fR +(\fI\-ea\fR)オプションを使用します。両方のオプションを同時に使用できます。たとえば、パッケージ\fIcom\&.wombat\&.fruitbat\fR +(およびそのサブパッケージ)ではアサーションを有効にして、クラス\fIcom\&.wombat\&.fruitbat\&.Brickbat\fRではアサーションを無効にして、\fIMyClass\fRアプリケーションを実行するには、次のコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-ea:com\&.wombat\&.fruitbat\&.\&.\&. \-da:com\&.wombat\&.fruitbat\&.Brickbat MyClass +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-disablesystemassertions, \-dsa +.RS 4 +すべてのシステム・クラス内でアサーションを無効にします。 +.RE +.PP +\-enableassertions[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR], \-ea[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR] +.RS 4 +アサーションを有効にします。デフォルトでは、アサーションはすべてのパッケージおよびクラスで無効になっています。 +.sp +引数なしの\fI\-enableassertions\fR +(\fI\-ea\fR)を指定すると、すべてのパッケージおよびクラスでアサーションが有効になります。\fI\&.\&.\&.\fRで終わる\fIpackagename\fR引数を指定すると、指定したパッケージとそのサブパッケージ内でアサーションが有効になります。引数として\fI\&.\&.\&.\fRのみを指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが有効になります。\fIclassname\fR引数を指定すると、切替えによって、指定したクラス内でアサーションが有効になります。 +.sp +\fI\-enableassertions\fR +(\fI\-ea\fR)オプションは、すべてのクラス・ローダーおよびシステム・クラスに適用されます(システム・クラスにはクラス・ローダーはありません)。このルールには1つ例外があります。オプションの引数が指定されていない場合は、システム・クラスに適用されません。これにより、システム・クラスを除くすべてのクラスでアサーションを簡単に有効にすることができます。\fI\-enablesystemassertions\fRオプションは、すべてのシステム・クラスでアサーションを有効にする別のスイッチを提供します。 +.sp +特定のパッケージやクラスでアサーションを明示的に無効にするには、\fI\-disableassertions\fR +(\fI\-da\fR)オプションを使用します。単一コマンドにこれらのスイッチのインスタンスを複数指定した場合は、指定したスイッチが順番に処理されてからクラスがロードされます。たとえば、パッケージ\fIcom\&.wombat\&.fruitbat\fR +(およびそのサブパッケージ)でのみアサーションを有効にして、クラス\fIcom\&.wombat\&.fruitbat\&.Brickbat\fRではアサーションを無効にして、\fIMyClass\fRアプリケーションを実行するには、次のコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-ea:com\&.wombat\&.fruitbat\&.\&.\&. \-da:com\&.wombat\&.fruitbat\&.Brickbat MyClass +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-enablesystemassertions, \-esa +.RS 4 +すべてのシステム・クラス内でアサーションを有効にします。 +.RE +.PP +\-help, \-? +.RS 4 +実際にJVMを実行せずに、\fIjava\fRコマンドの使用状況情報を表示します。 +.RE +.PP +\-jar \fIfilename\fR +.RS 4 +JARファイルにカプセル化されたプログラムを実行します。\fIfilename\fR引数は、使用するアプリケーションの開始点として機能する\fIpublic static void main(String[] args)\fRメソッドを定義する、\fIMain\-Class:\fR\fIclassname\fRという形式の1行を含むマニフェストを持つJARファイルの名前です。 +.sp +\fI\-jar\fRオプションを使用すると、指定したJARファイルがすべてのユーザー・クラスのソースになり、クラス・パスの他の設定は無視されます。 +.sp +JARファイルの詳細は、次のリソースを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jar/index\&.htmlにあるJavaアーカイブ(JAR)ファイルのガイド +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/tutorial/deployment/jar/index\&.htmlにある +「レッスン: JARファイルのプログラムのパッケージ化」 +.RE +.RE +.PP +\-javaagent:\fIjarpath\fR[=\fIoptions\fR] +.RS 4 +指定したJavaプログラミング言語エージェントをロードします。Javaアプリケーションのインストゥルメントの詳細は、http://docs\&.oracle\&.com/javase/8/docs/api/java/lang/instrument/package\-summary\&.htmlにあるJava APIドキュメントの\fIjava\&.lang\&.instrument\fRパッケージの説明を参照してください。 +.RE +.PP +\-jre\-restrict\-search +.RS 4 +ユーザー・プライベートなJREをバージョン検索に含めます。 +.RE +.PP +\-no\-jre\-restrict\-search +.RS 4 +ユーザー・プライベートなJREをバージョン検索から除外します。 +.RE +.PP +\-server +.RS 4 +Java HotSpot Server VMを選択します。64ビット・バージョンのJDKでは、Server VMのみをサポートしているため、その場合、このオプションは暗黙的です。 +.sp +デフォルトのJVM選択は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/server\-class\&.htmlにある +サーバークラス・マシンの検出を参照してください。 +.RE +.PP +\-showversion +.RS 4 +バージョン情報を表示し、アプリケーションの実行を続行します。このオプションは\fI\-version\fRオプションと同等ですが、\-versionはバージョン情報の表示後にJVMに終了を指示する点が異なります。 +.RE +.PP +\-splash:\fIimgname\fR +.RS 4 +\fIimgname\fRで指定されたイメージを含むスプラッシュ画面を表示します。たとえば、アプリケーションの起動時に\fIimages\fRディレクトリの\fIsplash\&.gif\fRファイルを表示するには、次のオプションを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-splash:images/splash\&.gif +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-verbose:class +.RS 4 +ロードされた各クラスに関する情報を表示します。 +.RE +.PP +\-verbose:gc +.RS 4 +各ガベージ・コレクション(GC)イベントに関する情報を表示します。 +.RE +.PP +\-verbose:jni +.RS 4 +ネイティブ・メソッドの使用およびその他のJava Native Interface (JNI)アクティビティに関する情報を表示します。 +.RE +.PP +\-version +.RS 4 +バージョン情報を表示してから終了します。このオプションは\fI\-showversion\fRオプションと同等ですが、\-showversionはバージョン情報の表示後にJVMに終了を指示しない点が異なります。 +.RE +.PP +\-version:\fIrelease\fR +.RS 4 +アプリケーションの実行に使用するリリース・バージョンを指定します。コールされた\fIjava\fRコマンドのバージョンがこの指定内容を満たさず、かつ適切な実装がシステム上で見つかった場合には、その適切な実装が使用されます。 +.sp +\fIrelease\fR引数は、正確なバージョン文字列、または空白で区切られたバージョン文字列とバージョン範囲のリストを指定します。\fIバージョン文字列\fRは、次の形式で、開発者のバージョン番号を指定します: +\fI1\&.\fR\fIx\fR\fI\&.0_\fR\fIu\fR +(\fIx\fRはメジャー・バージョン番号、\fIu\fRは更新バージョン番号です)。\fIバージョン範囲\fRは、このバージョン以降を指定するにはバージョン文字列の後にプラス記号(\fI+\fR)を続けたもの、または一致する接頭辞を含む任意のバージョン文字列を指定するには一部のバージョン文字列の後にアスタリスク(\fI*\fR)を続けたもので構成されます。論理\fIOR\fRの組合せには空白、2つのバージョンの文字列/範囲の論理\fIAND\fRの組合せにはアンパサンド(\fI&\fR)を使用して、バージョン文字列とバージョン範囲を組み合せることができます。たとえば、クラスまたはJARファイルの実行にJRE 6u13 (1\&.6\&.0_13)または6u10 (1\&.6\&.0_10)以降の任意のJRE 6のいずれかを必要とする場合、次を指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-version:"1\&.6\&.0_13 1\&.6* & 1\&.6\&.0_10+" +.fi +.if n \{\ +.RE +.\} +引用符が必要なのは、\fIrelease\fRパラメータに空白がある場合のみです。 +.sp +JARファイルの場合は、バージョン要件をコマンドラインに指定するよりも、JARファイルのマニフェスト内に指定することが推奨されています。 +.RE +.SS "非標準オプション" +.PP +これらのオプションは、Java HotSpot仮想マシンに固有の汎用オプションです。 +.PP +\-X +.RS 4 +使用可能なすべての\fI\-X\fRオプションのヘルプを表示します。 +.RE +.PP +\-Xbatch +.RS 4 +バックグラウンド・コンパイルを無効にします。デフォルトでは、JVMでは、バックグラウンド・コンパイルが終了するまで、メソッドをバックグラウンド・タスクとしてコンパイルし、インタプリタ・モードでメソッドを実行します。\fI\-Xbatch\fRフラグを指定すると、バックグラウンド・コンパイルが無効になり、すべてのメソッドのコンパイルが完了するまでフォアグラウンド・タスクとして処理されます。 +.sp +このオプションは\fI\-XX:\-BackgroundCompilation\fRと同等です。 +.RE +.PP +\-Xbootclasspath:\fIpath\fR +.RS 4 +ブート・クラス・ファイルを検索するディレクトリ、JARファイルおよびZIPアーカイブの、コロン(:)で区切られたリストを指定します。これらは、JDKに含まれるブート・クラス・ファイルのかわりに使用されます。 +.sp +JREバイナリ・コード・ライセンスに違反するため、\fIrt\&.jar\fRでクラスをオーバーライドする目的で、このオプションを使用するアプリケーションをデプロイしないでください。 +.RE +.PP +\-Xbootclasspath/a:\fIpath\fR +.RS 4 +デフォルトのブートストラップ・クラス・パスの最後に追加するディレクトリ、JARファイルおよびZIPアーカイブの、コロン(:)で区切られたリストを指定します。 +.sp +JREバイナリ・コード・ライセンスに違反するため、\fIrt\&.jar\fRでクラスをオーバーライドする目的で、このオプションを使用するアプリケーションをデプロイしないでください。 +.RE +.PP +\-Xbootclasspath/p:\fIpath\fR +.RS 4 +デフォルトのブートストラップ・クラス・パスの先頭に追加するディレクトリ、JARファイルおよびZIPアーカイブの、コロン(:)で区切られたリストを指定します。 +.sp +JREバイナリ・コード・ライセンスに違反するため、\fIrt\&.jar\fRでクラスをオーバーライドする目的で、このオプションを使用するアプリケーションをデプロイしないでください。 +.RE +.PP +\-Xboundthreads +.RS 4 +ユーザー・レベルのスレッドをカーネル・スレッドにバインドします。 +.RE +.PP +\-Xcheck:jni +.RS 4 +Java Native Interface (JNI)機能に対して追加チェックを行います。具体的には、これは、JNIリクエストを処理する前に、JNI関数に渡されるパラメータと実行環境のデータを検証します。無効なデータが見つかった場合は、ネイティブ・コードに問題があることを示しているため、JVMはリカバリ不能なエラーを発生して終了します。このオプションを使用すると、パフォーマンス低下が予想されます。 +.RE +.PP +\-Xcomp +.RS 4 +最初の呼出しでJavaコードおよびコンパイル・メソッドの解釈を無効にします。デフォルトでは、JITコンパイラは、10,000の解釈されたメソッド呼出しを実行して、効率的なコンパイルのための情報を収集します。効率を犠牲にしてコンパイルのパフォーマンスを向上させるには、\fI\-Xcomp\fRフラグを使用して、解釈されたメソッド呼出しを無効にします。 +.sp +\fI\-XX:CompileThreshold\fRオプションを使用して、コンパイルの前に、解釈されたメソッド呼出しの数を変更することもできます。 +.RE +.PP +\-Xdebug +.RS 4 +何も行いません。下位互換性のために用意されています。 +.RE +.PP +\-Xdiag +.RS 4 +追加の診断メッセージを表示します。 +.RE +.PP +\-Xfuture +.RS 4 +クラス・ファイル形式の仕様への準拠を強化する、厳密なクラス・ファイル形式のチェックが有効になります。将来のリリースでは、より厳密なチェックがデフォルトになるため、新しいコードを開発するときには、開発者はこのフラグを使用することをお薦めします。 +.RE +.PP +\-Xincgc +.RS 4 +増分GCを有効にします。 +.RE +.PP +\-Xint +.RS 4 +インタプリタ専用モードでアプリケーションを実行します。ネイティブ・コードへのコンパイルは無効になり、すべてのバイトコードがインタプリタによって実行されます。ジャスト・イン・タイム(JIT)コンパイラが提供するパフォーマンス上の利点は、このモードでは実現されません。 +.RE +.PP +\-Xinternalversion +.RS 4 +\fI\-version\fRオプションより詳細なJVMバージョン情報を表示してから終了します。 +.RE +.PP +\-Xloggc:\fIfilename\fR +.RS 4 +詳細なGCイベント情報をロギング用にリダイレクトするファイルを設定します。このファイルに書き込まれる情報は、記録された各イベントの前に行われる最初のGCイベント以降に経過した時間を指定した\fI\-verbose:gc\fRの出力と類似しています。\fI\-Xloggc\fRオプションは\fI\-verbose:gc\fRをオーバーライドします(これらの両方が同じ\fIjava\fRコマンドで指定された場合)。 +.sp +例: +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xloggc:garbage\-collection\&.log +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-Xmaxjitcodesize=\fIsize\fR +.RS 4 +JITコンパイルされたコードの最大コード・キャッシュ・サイズ(バイト単位)を指定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、この値は48MBに設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xmaxjitcodesize=48m +.fi +.if n \{\ +.RE +.\} +このオプションは\fI\-XX:ReservedCodeCacheSize\fRと同等です。 +.RE +.PP +\-Xmixed +.RS 4 +ネイティブ・コードにコンパイルされたホット・メソッドを除き、インタプリタによってすべてのバイトコードを実行します。 +.RE +.PP +\-Xmn\fIsize\fR +.RS 4 +若い世代(ナーサリ)のヒープの初期サイズおよび最大サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。 +.sp +ヒープの若い世代リージョンは新しいオブジェクトに使用されます。GCは、他のリージョンよりこのリージョンで、より頻繁に実行されます。若い世代のサイズが小さすぎる場合、多数のマイナー・ガベージ・コレクションが実行されます。サイズが大きすぎる場合、フル・ガベージ・コレクションのみが実行されますが、完了までに時間がかかることがあります。若い世代のサイズは、全体のヒープ・サイズの半分から4分の1の間にしておくことをお薦めします。 +.sp +次の例では、若い世代の初期サイズおよび最大サイズを様々な単位を使用して256MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xmn256m +\-Xmn262144k +\-Xmn268435456 +.fi +.if n \{\ +.RE +.\} +若い世代のヒープの初期サイズと最大サイズの両方を設定する\fI\-Xmn\fRオプションのかわりに、初期サイズの設定には\fI\-XX:NewSize\fRを、最大サイズの設定には\fI\-XX:MaxNewSize\fRを使用できます。 +.RE +.PP +\-Xms\fIsize\fR +.RS 4 +ヒープの初期サイズ(バイト単位)を設定します。指定する値は、1MBより大きい1024の倍数にする必要があります。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。 +.sp +次の例では、割り当てられたメモリーのサイズを様々な単位を使用して6MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xms6291456 +\-Xms6144k +\-Xms6m +.fi +.if n \{\ +.RE +.\} +このオプションを設定しない場合、初期サイズは、古い世代と若い世代に割り当てられたサイズの合計として設定されます。若い世代のヒープの初期サイズは、\fI\-Xmn\fRオプションまたは\fI\-XX:NewSize\fRオプションを使用して設定できます。 +.RE +.PP +\-Xmx\fIsize\fR +.RS 4 +メモリー割当てプールの最大サイズ(バイト単位)を指定します。指定する値は、2MBより大きい1024の倍数にする必要があります。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値は、実行時にシステム構成に基づいて選択されます。サーバー・デプロイメントでは、\fI\-Xms\fRおよび\fI\-Xmx\fRは通常同じ値に設定されます。詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gc\-ergonomics\&.htmlにあるガベージ・コレクタ・エルゴノミックを参照してください。 +.sp +次の例では、割り当てられたメモリーの許可される最大サイズを様々な単位を使用して80MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xmx83886080 +\-Xmx81920k +\-Xmx80m +.fi +.if n \{\ +.RE +.\} +\fI\-Xmx\fRオプションは\fI\-XX:MaxHeapSize\fRと同等です。 +.RE +.PP +\-Xnoclassgc +.RS 4 +クラスのガベージ・コレクション(GC)を無効にします。これにより、GC時間を節約でき、アプリケーション実行中の中断が短縮されます。 +.sp +起動時に\fI\-Xnoclassgc\fRを指定すると、アプリケーション内のクラス・オブジェクトは、GCの間はそのまま残り、常にライブであるとみなされます。これにより、より多くのメモリーが永久に占有されることになり、注意して使用しないと、メモリー不足の例外がスローされます。 +.RE +.PP +\-Xprof +.RS 4 +実行中のプログラムのプロファイルを生成し、プロファイル・データを標準出力に送信します。このオプションは、プログラム開発用のユーティリティとして提供されています。本番稼働システムでの使用を目的としたものではありません。 +.RE +.PP +\-Xrs +.RS 4 +JVMによるオペレーティング・システム・シグナルの使用を減らします。 +.sp +シャットダウン・フックは、JVMが突然終了した場合でも、シャットダウン時にユーザー・クリーンアップ・コード(データベース接続のクローズなど)を実行することによって、Javaアプリケーションのシャットダウンを順番に有効にします。 +.sp +JVMは、予期しない終了のシャットダウン・フックを実装するためにシグナルをキャッチします。JVMは、\fISIGHUP\fR、\fISIGINT\fRおよび\fISIGTERM\fRを使用して、シャットダウン・フックの実行を開始します。 +.sp +JVMは、デバッグの目的でスレッド・スタックをダンプするという機能を実現するために、同様のメカニズムを使用します。JVMは、スレッド・ダンプを実行するために\fISIGQUIT\fRを使用します。 +.sp +JVMを埋め込んでいるアプリケーションは、\fISIGINT\fRや\fISIGTERM\fRなどのシグナルを頻繁にトラップする必要があり、その結果、JVMのシグナル・ハンドラと衝突する可能性があります。\fI\-Xrs\fRオプションは、この問題に対処するために使用できます。\fI\-Xrs\fRが使用されている場合、\fISIGINT\fR、\fISIGTERM\fR、\fISIGHUP\fRおよび\fISIGQUIT\fRのシグナル・マスクはJVMによって変更されず、これらのシグナルのシグナル・ハンドラはインストールされません。 +.sp +\fI\-Xrs\fRを指定すると、次の2つの結果が生じます: +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fISIGQUIT\fRによるスレッド・ダンプは使用できません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +シャットダウン・フック処理の実行は、JVMが終了しようとしている時点で\fISystem\&.exit()\fRを呼び出すなどして、ユーザー・コード側で行う必要があります。 +.RE +.RE +.PP +\-Xshare:\fImode\fR +.RS 4 +クラス・データ共有モードを設定します。このオプションで使用可能な\fImode\fR引数は次のとおりです。 +.PP +auto +.RS 4 +可能な場合、共有クラスのデータを使用します。これは、Java HotSpot 32\-Bit Client VMの場合のデフォルト値です。 +.RE +.PP +on +.RS 4 +クラス・データ共有の使用が必要です。クラス・データ共有を使用できない場合、エラー・メッセージを出力して終了します。 +.RE +.PP +off +.RS 4 +共有クラス・データを使用しません。これは、Java HotSpot 32\-Bit Server VM、Java HotSpot 64\-Bit Client VMおよびJava HotSpot 64\-Bit Server VMの場合のデフォルト値です。 +.RE +.PP +dump +.RS 4 +クラス・データ共有アーカイブを手動で生成します。 +.RE +.RE +.PP +\-XshowSettings:\fIcategory\fR +.RS 4 +設定を表示して続行します。このオプションで使用可能な\fIcategory\fR引数は次のとおりです。 +.PP +all +.RS 4 +設定のすべてのカテゴリを表示します。これがデフォルト値です。 +.RE +.PP +locale +.RS 4 +ロケールに関連する設定を表示します。 +.RE +.PP +properties +.RS 4 +システム・プロパティに関連する設定を表示します。 +.RE +.PP +vm +.RS 4 +JVMの設定を表示します。 +.RE +.RE +.PP +\-Xss\fIsize\fR +.RS 4 +スレッドのスタック・サイズ(バイト単位)を設定します。KBを示す場合は文字\fIk\fRまたは\fIK\fR、MBを示す場合は文字\fIm\fRまたは\fIM\fR、GBを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値はプラットフォームによって異なります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/ARM (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/i386 (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/x64 (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +OS X (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Oracle Solaris/i386 (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Oracle Solaris/x64 (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Windows: 仮想メモリーによって異なります。 +.RE +.sp +次の例では、スレッド・スタック・サイズを異なる単位で1024KBに設定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-Xss1m +\-Xss1024k +\-Xss1048576 +.fi +.if n \{\ +.RE +.\} +このオプションは\fI\-XX:ThreadStackSize\fRと同等です。 +.RE +.PP +\-Xusealtsigs +.RS 4 +JVM内部シグナルの\fISIGUSR1\fRおよび\fISIGUSR2\fRのかわりに、代替シグナルを使用します。このオプションは\fI\-XX:+UseAltSigs\fRと同等です。 +.RE +.PP +\-Xverify:\fImode\fR +.RS 4 +バイトコード・ベリファイアのモードを設定します。バイトコードの検証は一部の問題のトラブルシューティングに役立ちますが、実行中のアプリケーションへのオーバーヘッドを増大させます。このオプションで使用可能な\fImode\fR引数は次のとおりです。 +.PP +none +.RS 4 +バイトコードを検証しません。これにより、起動時間が短縮され、Javaによって提供される保護も軽減されます。 +.RE +.PP +remote +.RS 4 +ネットワークを介してリモートでロードされるクラスのみを検証します。これは、\fI\-Xverify\fRオプションを指定しない場合のデフォルトの動作です。 +.RE +.PP +all +.RS 4 +すべてのクラスを検証します。 +.RE +.RE +.SS "高度なランタイム・オプション" +.PP +これらのオプションは、Java HotSpot VMの実行時の動作を制御します。 +.PP +\-XX:+DisableAttachMechanism +.RS 4 +JVMにツールをアタッチするメカニズムを無効にするオプションを有効にします。デフォルトでは、このオプションは無効になっており、これは、アタッチ・メカニズムを有効にすると、\fIjcmd\fR、\fIjstack\fR、\fIjmap\fR、\fIjinfo\fRなどのツールを使用できることを意味します。 +.RE +.PP +\-XX:ErrorFile=\fIfilename\fR +.RS 4 +リカバリ不能なエラーが発生した場合にエラー・データが書き込まれるパスおよびファイル名を指定します。デフォルトでは、このファイルは、現在の作業ディレクトリに作成され、名前は\fIhs_err_pid\fR\fIpid\fR\fI\&.log\fR +(\fIpid\fRはエラーの原因となったプロセスの識別子)になります。次の例では、デフォルトのログ・ファイルを設定する方法を示します(プロセスの識別子は\fI%p\fRとして指定されます)。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:ErrorFile=\&./hs_err_pid%p\&.log +.fi +.if n \{\ +.RE +.\} +次の例では、エラー・ログを\fI/var/log/java/java_error\&.log\fRに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:ErrorFile=/var/log/java/java_error\&.log +.fi +.if n \{\ +.RE +.\} +(領域不足、権限の問題または別の問題により)指定したディレクトリにファイルを作成できない場合、ファイルはオペレーティング・システムの一時ディレクトリに作成されます。一時ディレクトリは\fI/tmp\fRです。 +.RE +.PP +\-XX:LargePageSizeInBytes=\fIsize\fR +.RS 4 +Javaヒープに使用される大きいページの最大サイズ(バイト単位)を設定します。\fIsize\fR引数は、2の累乗(2、4、8、16、\&.\&.\&.)である必要があります。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、サイズは0に設定され、これは、JVMでは大きいページのサイズが自動的に選択されていることを意味します。 +.sp +次の例では、大きいページのサイズを4メガバイト(MB)に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:LargePageSizeInBytes=4m +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxDirectMemorySize=\fIsize\fR +.RS 4 +新規I/O (\fIjava\&.nio\fRパッケージ)の直接バッファ割当ての最大合計サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、サイズは0に設定され、これは、JVMではNIOの直接バッファ割当てのサイズが自動的に選択されていることを意味します。 +.sp +次の例では、NIOサイズを異なる単位で1024KBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxDirectMemorySize=1m +\-XX:MaxDirectMemorySize=1024k +\-XX:MaxDirectMemorySize=1048576 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:NativeMemoryTracking=\fImode\fR +.RS 4 +JVMのネイティブ・メモリー使用状況のトラッキングのモードを指定します。このオプションで使用可能な\fImode\fR引数は次のとおりです。 +.PP +off +.RS 4 +JVMのネイティブ・メモリー使用状況を追跡しません。これは、\fI\-XX:NativeMemoryTracking\fRオプションを指定しない場合のデフォルトの動作です。 +.RE +.PP +summary +.RS 4 +JVMサブシステム(Javaヒープ、クラス、コード、スレッドなど)によるメモリー使用状況のみ追跡します。 +.RE +.PP +detail +.RS 4 +JVMサブシステムによるメモリー使用状況のトラッキングに加えて、個々の\fICallSite\fR +(個々の仮想メモリー・リージョンおよびそのコミット済リージョン)によるメモリー使用状況を追跡します。 +.RE +.RE +.PP +\-XX:OnError=\fIstring\fR +.RS 4 +リカバリ不能なエラーが発生したときに実行する、カスタム・コマンドまたは一連のセミコロン区切りのコマンドを設定します。文字列に空白が含まれている場合は、引用符で囲む必要があります。 +.sp +次の例では、\fI\-XX:OnError\fRオプションを使用してコア・イメージを作成するために\fIgcore\fRコマンドを実行する方法、およびリカバリ不能なエラーの場合にデバッガを起動してプロセスに接続する方法を示します(\fI%p\fRは現在のプロセスを指定します)。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:OnError="gcore %p;dbx \- %p" +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:OnOutOfMemoryError=\fIstring\fR +.RS 4 +\fIOutOfMemoryError\fR例外が最初にスローされたときに実行する、カスタム・コマンドまたは一連のセミコロン区切りのコマンドを設定します。文字列に空白が含まれている場合は、引用符で囲む必要があります。コマンド文字列の例は、\fI\-XX:OnError\fRオプションの説明を参照してください。 +.RE +.PP +\-XX:+PrintCommandLineFlags +.RS 4 +コマンドラインに表示された、人間工学的に選択したJVMフラグの印刷を有効にします。これは、ヒープ領域サイズや選択されたガベージ・コレクタなど、JVMによって設定されたエルゴノミック値を確認する場合に役立ちます。デフォルトでは、このオプションは無効であり、フラグは印刷されません。 +.RE +.PP +\-XX:+PrintNMTStatistics +.RS 4 +ネイティブ・メモリーのトラッキングが有効な場合に、JVMの終了時に収集されたネイティブ・メモリーのトラッキング・データの印刷を有効にします(\fI\-XX:NativeMemoryTracking\fRを参照してください)。デフォルトでは、このオプションは無効であり、ネイティブ・メモリーのトラッキング・データは印刷されません。 +.RE +.PP +\-XX:+ShowMessageBoxOnError +.RS 4 +JVMでリカバリ不能なエラーが発生した場合、ダイアログ・ボックスの表示を有効にします。これにより、JVMにデバッガを接続してエラーの原因を調査できるように、JVMを終了しないようにして、プロセスをアクティブなままにします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:ThreadStackSize=\fIsize\fR +.RS 4 +スレッドのスタック・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値はプラットフォームによって異なります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/ARM (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/i386 (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Linux/x64 (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +OS X (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Oracle Solaris/i386 (32ビット): 320KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Oracle Solaris/x64 (64ビット): 1024KB +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Windows: 仮想メモリーによって異なります。 +.RE +.sp +次の例では、スレッド・スタック・サイズを異なる単位で1024KBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:ThreadStackSize=1m +\-XX:ThreadStackSize=1024k +\-XX:ThreadStackSize=1048576 +.fi +.if n \{\ +.RE +.\} +このオプションは\fI\-Xss\fRと同等です。 +.RE +.PP +\-XX:+TraceClassLoading +.RS 4 +クラスがロードされるときのクラスのトレースを有効にします。デフォルトでは、このオプションは無効であり、クラスはトレースされません。 +.RE +.PP +\-XX:+TraceClassLoadingPreorder +.RS 4 +クラスが参照される順序で、ロードされたすべてのクラスのトレースを有効にします。デフォルトでは、このオプションは無効であり、クラスはトレースされません。 +.RE +.PP +\-XX:+TraceClassResolution +.RS 4 +定数プールの解決のトレースを有効にします。デフォルトでは、このオプションは無効であり、定数プールの解決はトレースされません。 +.RE +.PP +\-XX:+TraceClassUnloading +.RS 4 +クラスがアンロードされるときのクラスのトレースを有効にします。デフォルトでは、このオプションは無効であり、クラスはトレースされません。 +.RE +.PP +\-XX:+TraceLoaderConstraints +.RS 4 +ローダー制約の記録のトレースを有効にします。デフォルトでは、このオプションは無効であり、ローダー制約の記録は追跡されません。 +.RE +.PP +\-XX:+UseAltSigs +.RS 4 +JVM内部シグナルの\fISIGUSR1\fRおよび\fISIGUSR2\fRのかわりに、代替シグナルの使用を有効にします。デフォルトでは、このオプションは無効であり、代替シグナルは使用されません。このオプションは\fI\-Xusealtsigs\fRと同等です。 +.RE +.PP +\-XX:+UseBiasedLocking +.RS 4 +バイアス・ロックの使用を有効にします。かなりの量の非競合の同期化がある一部のアプリケーションは、このフラグを有効にすると大幅な高速化が実現しますが、特定のパターンのロックがあるアプリケーションは、速度が低下することがあります。バイアス・ロックの方法の詳細は、http://www\&.oracle\&.com/technetwork/java/tuning\-139912\&.html#section4\&.2\&.5にあるJavaチューニングのホワイト・ペーパーの例を参照してください。 +.sp +デフォルトでは、このオプションは無効であり、バイアス・ロックは使用されません。 +.RE +.PP +\-XX:+UseCompressedOops +.RS 4 +圧縮されたポインタの使用を有効にします。このオプションを有効にすると、オブジェクト参照は、64ビットのポインタではなく32ビットのオフセットとして表され、これにより、32GBより小さいJavaヒープ・サイズのアプリケーションの実行時に、通常、パフォーマンスが向上します。このオプションは、64ビットのJVMでのみ機能します。 +.sp +デフォルトでは、このオプションは無効であり、圧縮ポインタは使用されません。 +.RE +.PP +\-XX:+UseLargePages +.RS 4 +大きいページのメモリーの使用を有効にします。このオプションはデフォルトで有効になっています。大きいページのメモリーの使用を無効にするには、\fI\-XX:\-UseLargePages\fRを指定します。 +.sp +詳細は、http://www\&.oracle\&.com/technetwork/java/javase/tech/largememory\-jsp\-137182\&.htmlにある大きいメモリー・ページ用のJavaサポートを参照してください。 +.RE +.PP +\-XX:+UseMembar +.RS 4 +スレッドの状態の遷移でメンバーの発行を有効にします。このオプションは、有効になっているPower PCおよびARMサーバーを除くすべてのプラットフォーム上で、デフォルトでは無効になっています。Power PCとARMのスレッド状態遷移に対するメンバーの発行を無効にするには、\fI\-XX:\-UseMembar\fRを指定します。 +.RE +.PP +\-XX:+UsePerfData +.RS 4 +\fIperfdata\fR機能を有効にします。このオプションはデフォルトで有効になっており、JVMのモニタリングおよびパフォーマンス・テストが可能になります。これを無効にすると、\fIhsperfdata_userid\fRディレクトリの作成を抑制します。\fIperfdata\fR機能を無効にするには、\fI\-XX:\-UsePerfData\fRを指定します。 +.RE +.PP +\-XX:+AllowUserSignalHandlers +.RS 4 +アプリケーションによるシグナル・ハンドラのインストールを有効にします。デフォルトでは、このオプションは無効であり、アプリケーションはシグナル・ハンドラをインストールすることは許可されていません。 +.RE +.SS "高度なJITコンパイラ・オプション" +.PP +これらのオプションは、Java HotSpot VMで実行される動的なjust\-in\-time (JIT)コンパイラを制御します。 +.PP +\-XX:+AggressiveOpts +.RS 4 +積極的なパフォーマンス最適化機能の使用を有効にします。これは今後のリリースでデフォルトになる予定です。デフォルトでは、このオプションは無効であり、試験的なパフォーマンス機能は使用されません。 +.RE +.PP +\-XX:AllocateInstancePrefetchLines=\fIlines\fR +.RS 4 +インスタンス割当てポインタの前にプリフェッチする行数を設定します。デフォルトでは、プリフェッチする行数は1に設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:AllocateInstancePrefetchLines=1 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:AllocatePrefetchInstr=\fIinstruction\fR +.RS 4 +割当てポインタの前にプリフェッチするプリフェッチ命令を設定します。使用可能な値は0から3までです。値の背後にある実際の命令は、プラットフォームによって異なります。デフォルトでは、プリフェッチ命令は0に設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:AllocatePrefetchInstr=0 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:AllocatePrefetchStepSize=\fIsize\fR +.RS 4 +順次プリフェッチ命令のステップ・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、ステップ・サイズは16バイトに設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:AllocatePrefetchStepSize=16 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+BackgroundCompilation +.RS 4 +バックグラウンド・コンパイルを有効にします。このオプションはデフォルトで有効になっています。バックグラウンド・コンパイルを無効にするには、\fI\-XX:\-BackgroundCompilation\fRを指定します(これは\fI\-Xbatch\fRを指定するのと同等です)。 +.RE +.PP +\-XX:CICompilerCount=\fIthreads\fR +.RS 4 +コンパイルに使用するコンパイラ・スレッドの数を設定します。デフォルトでは、スレッド数は、サーバーJVMの場合は2、クライアントJVMの場合は1に設定されており、層コンパイルが使用されている場合、コア数に合せて増減します。次の例では、スレッドの数を2に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CICompilerCount=2 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CodeCacheMinimumFreeSpace=\fIsize\fR +.RS 4 +コンパイルに必要な最小空き領域(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。最小空き領域より少ない領域しか残っていない場合、コンパイルは停止します。デフォルトでは、このオプションは500KBに設定されています。次の例では、最小空き領域を1024MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CodeCacheMinimumFreeSpace=1024m +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CompileCommand=\fIcommand\fR,\fImethod\fR[,\fIoption\fR] +.RS 4 +メソッドで実行するコマンドを指定します。たとえば、コンパイル元から\fIString\fRクラスの\fIindexOf()\fRメソッドを実行するには、次を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand=exclude,java/lang/String\&.indexOf +.fi +.if n \{\ +.RE +.\} +スラッシュ(\fI/\fR)で区切られたすべてのパッケージおよびサブパッケージを含む、完全クラス名を指定します。切取りと貼付けの操作を容易にするために、\fI\-XX:+PrintCompilation\fRオプションおよび\fI\-XX:+LogCompilation\fRオプションによって生成されるメソッド名の形式を使用することもできます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand=exclude,java\&.lang\&.String::indexOf +.fi +.if n \{\ +.RE +.\} +署名なしでメソッドを指定すると、コマンドは指定した名前を持つすべてのメソッドに適用されます。ただし、クラス・ファイル形式でメソッドの署名を指定することもできます。たとえば、コンパイル元から\fIString\fRクラスの\fIindexOf(String)\fRメソッドのみ除外するには、次を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand=exclude,java/lang/String\&.indexOf(Ljava/lang/String;)I +.fi +.if n \{\ +.RE +.\} +また、クラス名およびメソッド名にワイルドカードとしてアスタリスク(*)を使用できます。たとえば、コンパイル元からすべてのクラスのすべての\fIindexOf()\fRメソッドを除外するには、次を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand=exclude,*\&.indexOf +.fi +.if n \{\ +.RE +.\} +カンマとピリオドは空白の別名で、これにより、シェルを介してコンパイラ・コマンドを渡すことが容易になります。引数を引用符で囲むことで、空白をセパレータとして使用して\fI\-XX:CompileCommand\fRに引数を渡すことができます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand="exclude java/lang/String indexOf" +.fi +.if n \{\ +.RE +.\} +\fI\-XX:CompileCommand\fRオプションを使用してコマンドラインで渡されたコマンドを解析した後に、JITコンパイラは\fI\&.hotspot_compiler\fRファイルからコマンドを読み取ります。このファイルにコマンドを追加するか、または\fI\-XX:CompileCommandFile\fRオプションを使用して別のファイルを指定することができます。 +.sp +複数のコマンドを追加するには、\fI\-XX:CompileCommand\fRオプションを複数回指定するか、または改行セパレータ(\fI\en\fR)を使用して各引数を区切ります。次のコマンドを使用できます。 +.PP +break +.RS 4 +指定したメソッドのコンパイルの最初に停止するために、JVMのデバッグ時のブレークポイントを設定します。 +.RE +.PP +compileonly +.RS 4 +指定したメソッドを除いたすべてのメソッドを、コンパイルから除外します。別の方法として、\fI\-XX:CompileOnly\fRオプションを使用して複数のメソッドを指定できます。 +.RE +.PP +dontinline +.RS 4 +指定したメソッドをインライン化しないようにします。 +.RE +.PP +exclude +.RS 4 +指定したメソッドをコンパイルから除外します。 +.RE +.PP +help +.RS 4 +\fI\-XX:CompileCommand\fRオプションのヘルプ・メッセージを印刷します。 +.RE +.PP +inline +.RS 4 +指定したメソッドをインライン化しようとします。 +.RE +.PP +log +.RS 4 +指定したメソッドを除くすべてのメソッドに対して、(\fI\-XX:+LogCompilation\fRオプションを使用して)コンパイル・ロギングを除外します。デフォルトでは、コンパイルされたすべてのメソッドにロギングが実行されます。 +.RE +.PP +option +.RS 4 +このコマンドは、最後の引数(\fIoption\fR)のかわりに、指定したメソッドにJITコンパイル・オプションを渡すために使用できます。コンパイル・オプションは、メソッド名の後の末尾に設定されます。たとえば、\fIStringBuffer\fRクラスの\fIappend()\fRメソッドに対して\fIBlockLayoutByFrequency\fRオプションを有効にするには、次を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileCommand=option,java/lang/StringBuffer\&.append,BlockLayoutByFrequency +.fi +.if n \{\ +.RE +.\} +カンマまたは空白で区切って、複数のコンパイル・オプションを指定できます。 +.RE +.PP +print +.RS 4 +指定したメソッドのコンパイル後に生成されたアセンブラ・コードを出力します。 +.RE +.PP +quiet +.RS 4 +コンパイル・コマンドを出力しません。デフォルトでは、\fI\-XX:CompileCommand\fRオプションを使用して指定したコマンドが出力されます。たとえば、\fIString\fRクラスの\fIindexOf()\fRメソッドのコンパイルから除外する場合、次が標準出力に出力されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CompilerOracle: exclude java/lang/String\&.indexOf +.fi +.if n \{\ +.RE +.\} +他の\fI\-XX:CompileCommand\fRオプションの前に\fI\-XX:CompileCommand=quiet\fRオプションを指定することによって、これを抑制できます。 +.RE +.RE +.PP +\-XX:CompileCommandFile=\fIfilename\fR +.RS 4 +JITコンパイラ・コマンドの読取り元のファイルを設定します。デフォルトでは、JITコンパイラによって実行されるコマンドを格納するために、\fI\&.hotspot_compiler\fRファイルが使用されます。 +.sp +コマンド・ファイルの各行は、コマンドが使用されるコマンド、クラス名およびメソッド名を表します。たとえば、次の行は、\fIString\fRクラスの\fItoString()\fRメソッドに対してアセンブリ・コードを出力します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +print java/lang/String toString +.fi +.if n \{\ +.RE +.\} +メソッドで実行するJITコンパイラのコマンドの指定の詳細は、\fI\-XX:CompileCommand\fRオプションを参照してください。 +.RE +.PP +\-XX:CompileOnly=\fImethods\fR +.RS 4 +コンパイルを制限する(カンマで区切られた)メソッドのリストを設定します。指定したメソッドのみがコンパイルされます。完全クラス名(パッケージおよびサブパッケージを含む)で各メソッドを指定します。たとえば、\fIString\fRクラスの\fIlength()\fRメソッドおよび\fIList\fRクラスの\fIsize()\fRメソッドのみをコンパイルするには、次を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileOnly=java/lang/String\&.length,java/util/List\&.size +.fi +.if n \{\ +.RE +.\} +スラッシュ(\fI/\fR)で区切られたすべてのパッケージおよびサブパッケージを含む、完全クラス名を指定します。切取りと貼付けの操作を容易にするために、\fI\-XX:+PrintCompilation\fRオプションおよび\fI\-XX:+LogCompilation\fRオプションによって生成されるメソッド名の形式を使用することもできます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileOnly=java\&.lang\&.String::length,java\&.util\&.List::size +.fi +.if n \{\ +.RE +.\} +ワイルドカードはサポートされていませんが、クラス名またはパッケージ名だけを指定してクラスまたはパッケージのすべてのメソッドをコンパイルすることも、メソッドだけを指定して任意のクラスのこの名前を持つメソッドをコンパイルすることもできます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileOnly=java/lang/String +\-XX:CompileOnly=java/lang +\-XX:CompileOnly=\&.length +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CompileThreshold=\fIinvocations\fR +.RS 4 +コンパイル前に解釈されたメソッド呼出しの数を設定します。デフォルトでは、サーバーJVMでは、JITコンパイラは、10,000の解釈されたメソッド呼出しを実行して、効率的なコンパイルのための情報を収集します。クライアントJVMの場合、デフォルト設定は1,500呼出しです。次の例では、解釈されたメソッド呼出しの数を5,000に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CompileThreshold=5000 +.fi +.if n \{\ +.RE +.\} +\fI\-Xcomp\fRオプションを指定して、コンパイルの前に、Javaメソッドの解釈を完全に無効にすることができます。 +.RE +.PP +\-XX:+DoEscapeAnalysis +.RS 4 +エスケープ分析の使用を有効にします。このオプションはデフォルトで有効になっています。エスケープ分析の使用を無効にするには、\fI\-XX:\-DoEscapeAnalysis\fRを指定します。 +.RE +.PP +\-XX:+FailOverToOldVerifier +.RS 4 +新しいタイプ・チェッカが失敗した場合の、古いベリファイアへの自動フェイルオーバーを有効にします。デフォルトでは、このオプションは無効になっており、最近のバイトコード・バージョンを使用したクラスには、これは無視されます(つまり、無効として処理されます)。古いバージョンのバイトコードを使用したクラスには、これを有効化できます。 +.RE +.PP +\-XX:InitialCodeCacheSize=\fIsize\fR +.RS 4 +初期コード・キャッシュ・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値は500KBに設定されています。次の例では、初期コード・キャッシュ・サイズを32KBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:InitialCodeCacheSize=32k +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+Inline +.RS 4 +メソッドのインライン化を有効にします。このオプションは、パフォーマンスを向上させるためにデフォルトで有効になっています。メソッドのインライン化を無効にするには、\fI\-XX:\-Inline\fRを指定します。 +.RE +.PP +\-XX:InlineSmallCode=\fIsize\fR +.RS 4 +インライン化が必要なコンパイルされたメソッドの最大コード・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。指定したサイズより小さいサイズのコンパイルされたメソッドのみが、インライン化されます。デフォルトでは、最大コード・サイズは1000バイトに設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:InlineSmallCode=1000 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+LogCompilation +.RS 4 +現在の作業ディレクトリにある\fIhotspot\&.log\fRという名前のファイルへのコンパイル・アクティビティのロギングを有効にします。\fI\-XX:LogFile\fRオプションを使用して、異なるログ・ファイル・パスと名前を指定できます。 +.sp +デフォルトでは、このオプションは無効であり、コンパイル・アクティビティは記録されません。\fI\-XX:+LogCompilation\fRオプションは、診断JVMオプションのロックを解除する\fI\-XX:UnlockDiagnosticVMOptions\fRオプションとともに使用する必要があります。 +.sp +\fI\-XX:+PrintCompilation\fRオプションを使用して、メソッドをコンパイルするたびに、コンソールに出力されたメッセージを含む詳細な診断出力を有効化できます。 +.RE +.PP +\-XX:MaxInlineSize=\fIsize\fR +.RS 4 +インライン化するメソッドの最大バイトコード・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、最大バイトコード・サイズは35バイトに設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxInlineSize=35 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxNodeLimit=\fInodes\fR +.RS 4 +単一のメソッドのコンパイル時に使用されるノードの最大数を設定します。デフォルトでは、ノードの最大数は65,000に設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxNodeLimit=65000 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxTrivialSize=\fIsize\fR +.RS 4 +インライン化する単純メソッドの最大バイトコード・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、単純メソッドの最大バイトコード・サイズは6バイトに設定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxTrivialSize=6 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+OptimizeStringConcat +.RS 4 +\fIString\fR連結操作の最適化を有効にします。このオプションはデフォルトで有効になっています。\fIString\fR連結操作の最適化を無効にするには、\fI\-XX:\-OptimizeStringConcat\fRを指定します。 +.RE +.PP +\-XX:+PrintAssembly +.RS 4 +外部の\fIdisassembler\&.so\fRライブラリを使用して、バイトコード化されたネイティブのメソッドのアセンブリ・コードの出力を有効にします。これにより、生成されたコードを表示することができ、パフォーマンスの問題の診断に役立ちます。 +.sp +デフォルトでは、このオプションは無効であり、アセンブリ・コードは印刷されません。\fI\-XX:+PrintAssembly\fRオプションは、診断JVMオプションのロックを解除する\fI\-XX:UnlockDiagnosticVMOptions\fRオプションとともに使用する必要があります。 +.RE +.PP +\-XX:+PrintCompilation +.RS 4 +メソッドをコンパイルするたびに、コンソールにメッセージを出力することによって、JVMからの詳細な診断出力を有効にします。これにより、実際にコンパイルされるメソッドを確認できます。デフォルトでは、このオプションは無効であり、診断出力は印刷されません。 +.sp +\fI\-XX:+LogCompilation\fRオプションを使用して、コンパイル・アクティビティをファイルに記録することもできます。 +.RE +.PP +\-XX:+PrintInlining +.RS 4 +インライン化の決定内容の出力を有効にします。これにより、インライン化されるメソッドを確認できます。 +.sp +デフォルトでは、このオプションは無効であり、インライン化情報は出力されません。\fI\-XX:+PrintInlining\fRオプションは、診断JVMオプションのロックを解除する\fI\-XX:+UnlockDiagnosticVMOptions\fRオプションとともに使用する必要があります。 +.RE +.PP +\-XX:+RelaxAccessControlCheck +.RS 4 +ベリファイア内のアクセス制御チェックの量を減らします。デフォルトでは、このオプションは無効になっており、最近のバイトコード・バージョンを使用したクラスには、これは無視されます(つまり、無効として処理されます)。古いバージョンのバイトコードを使用したクラスには、これを有効化できます。 +.RE +.PP +\-XX:ReservedCodeCacheSize=\fIsize\fR +.RS 4 +JITコンパイルされたコードの最大コード・キャッシュ・サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。このオプションは\fI\-Xmaxjitcodesize\fRと同等です。 +.RE +.PP +\-XX:+TieredCompilation +.RS 4 +層コンパイルの使用を有効にします。デフォルトでは、このオプションは無効であり、層コンパイルは使用されません。 +.RE +.PP +\-XX:+UseCodeCacheFlushing +.RS 4 +コンパイラをシャットダウンする前に、コード・キャッシュのフラッシュを有効にします。このオプションはデフォルトで有効になっています。コンパイラをシャットダウンする前にコード・キャッシュのフラッシュを無効にするには\fI\-XX:\-UseCodeCacheFlushing\fRを指定します。 +.RE +.PP +\-XX:+UseCondCardMark +.RS 4 +カード表の更新前に、カードがすでにマークされているかどうかのチェックを有効にします。このオプションは、デフォルトでは無効になっており、複数のソケットを持つマシン上でのみ使用する必要があります。これにより、同時操作にかなり依存しているJavaアプリケーションのパフォーマンスが向上します。 +.RE +.PP +\-XX:+UseSuperWord +.RS 4 +スカラー演算のスーパーワード演算への変換を有効にします。このオプションはデフォルトで有効になっています。スカラー演算のスーパーワード演算への変換を無効にするには、\fI\-XX:\-UseSuperWord\fRを指定します。 +.RE +.SS "高度なサービスアビリティ・オプション" +.PP +これらのオプションは、システム情報を収集し、詳細なデバッグを実行する機能を提供します。 +.PP +\-XX:+ExtendedDTraceProbes +.RS 4 +パフォーマンスに影響を与える追加の\fIdtrace\fRツール・プローブを有効にします。デフォルトでは、このオプションは無効になっており、\fIdtrace\fRは標準プローブのみを実行します。 +.RE +.PP +\-XX:+HeapDumpOnOutOfMemory +.RS 4 +\fIjava\&.lang\&.OutOfMemoryError\fR例外がスローされた場合に、ヒープ・プロファイラ(HPROF)を使用して、現在のディレクトリ内のファイルへのJavaヒープのダンプを有効にします。\fI\-XX:HeapDumpPath\fRオプションを使用して、ヒープ・ダンプ・ファイルのパスおよび名前を明示的に設定できます。デフォルトでは、このオプションは無効であり、\fIOutOfMemoryError\fR例外がスローされた場合にヒープはダンプされません。 +.RE +.PP +\-XX:HeapDumpPath=\fIpath\fR +.RS 4 +\fI\-XX:+HeapDumpOnOutOfMemoryError\fRオプションが設定されている場合、ヒープ・プロファイラ(HPROF)が提供するヒープ・ダンプを書き込むパスおよびファイル名を設定します。デフォルトでは、このファイルは、現在の作業ディレクトリに作成され、名前は\fIjava_pid\fR\fIpid\fR\fI\&.hprof\fR +(\fIpid\fRはエラーの原因となったプロセスの識別子)になります。次の例では、デフォルトのファイルを明示的に設定する方法を示します(\fI%p\fRは現在のプロセスの識別子を表します)。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:HeapDumpPath=\&./java_pid%p\&.hprof +.fi +.if n \{\ +.RE +.\} +次の例では、ヒープ・ダンプ・ファイルを\fI/var/log/java/java_heapdump\&.hprof\fRに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:HeapDumpPath=/var/log/java/java_heapdump\&.hprof +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:LogFile=\fIpath\fR +.RS 4 +ログ・データが書き込まれるパスおよびファイル名を設定します。デフォルトでは、ファイルは現在の作業ディレクトリに作成され、名前は\fIhotspot\&.log\fRです。 +.sp +次の例では、ログ・ファイルを\fI/var/log/java/hotspot\&.log\fRに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:LogFile=/var/log/java/hotspot\&.log +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+PrintClassHistogram +.RS 4 +\fI[Control]+[C]\fRイベント(\fISIGTERM\fR)後にクラス・インスタンスのヒストグラムの印刷を有効にします。デフォルトでは、このオプションは無効です。 +.sp +このオプションを設定すると、\fIjmap \-histo\fRコマンド、または\fIjcmd \fR\fIpid\fR\fI GC\&.class_histogram\fRコマンド(\fIpid\fRは現在のJavaプロセスの識別子)を実行する場合と同じになります。 +.RE +.PP +\-XX:+PrintConcurrentLocks +.RS 4 +.sp +\fI[Control]+[C]\fRイベント(\fISIGTERM\fR)後に\fIjava\&.util\&.concurrent\fRロックの印刷を有効にします。デフォルトでは、このオプションは無効です。 +.sp +このオプションを設定すると、\fIjstack \-l\fRコマンド、または\fIjcmd \fR\fIpid\fR\fI Thread\&.print \-l\fRコマンド(\fIpid\fRは現在のJavaプロセスの識別子)を実行する場合と同じになります。 +.RE +.PP +\-XX:+UnlockDiagnosticVMOptions +.RS 4 +JVMの診断を目的としたオプションをアンロックします。デフォルトでは、このオプションは無効であり、診断オプションは使用できません。 +.RE +.SS "高度なガベージ・コレクション・オプション" +.PP +これらのオプションは、ガベージ・コレクション(GC)がJava HotSpot VMによってどのように実行されるかを制御します。 +.PP +\-XX:+AggressiveHeap +.RS 4 +Javaヒープの最適化を有効にします。これにより、コンピュータの構成(RAMおよびCPU)に基づいて、様々なパラメータが、メモリー割当てが集中した長時間実行ジョブに最適になるように設定されます。デフォルトでは、このオプションは無効であり、ヒープは最適化されません。 +.RE +.PP +\-XX:AllocatePrefetchDistance=\fIsize\fR +.RS 4 +オブジェクト割当てのプリフェッチ距離のサイズ(バイト単位)を設定します。新規オブジェクトの値で書き込もうとするメモリーは、最後に割り当てられたオブジェクトのアドレスから、この距離までプリフェッチされます。各Javaスレッドには独自の割当てポイントがあります。 +.sp +負の値は、プリフェッチ距離はプラットフォームに基づいて選択されることを示します。正の値は、プリフェッチするバイト数です。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値は\-1に設定されています。 +.sp +次の例では、プリフェッチ距離を1024バイトに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:AllocatePrefetchDistance=1024 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:AllocatePrefetchLines=\fIlines\fR +.RS 4 +コンパイルされたコードで生成されるプリフェッチ命令を使用して、最後のオブジェクト割当て後にロードするキャッシュ行数を設定します。最後に割り当てられたオブジェクトがインスタンスの場合は、デフォルト値は1になり、配列の場合は3になります。 +.sp +次の例では、ロードされるキャッシュ行数を5に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:AllocatePrefetchLines=5 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:AllocatePrefetchStyle=\fIstyle\fR +.RS 4 +プリフェッチ命令に生成されるコード・スタイルを設定します。\fIstyle\fR引数は、0から3までの整数です。 +.PP +0 +.RS 4 +プリフェッチ命令を生成しません。 +.RE +.PP +1 +.RS 4 +各割当ての後で、プリフェッチ命令を実行します。これはデフォルトのパラメータです。 +.RE +.PP +2 +.RS 4 +スレッド・ローカルな割当てブロック(TLAB)ウォーターマーク・ポインタを使用して、プリフェッチ命令を実行するタイミングを決定します。 +.RE +.PP +3 +.RS 4 +割当てプリフェッチ用のSPARCでBIS命令を使用します。 +.RE +.RE +.PP +\-XX:+AlwaysPreTouch +.RS 4 +JVMの初期化中にJavaヒープ上のすべてのページのタッチを有効にします。これにより、\fImain()\fRメソッドの入力前に、すべてのページがメモリーに取得されます。このオプションは、物理メモリーにマップされたすべての仮想メモリーを含む長時間実行のシステムをシミュレートするテストで使用できます。デフォルトでは、このオプションは無効になっており、JVMヒープ領域がいっぱいになると、すべてのページがコミットされます。 +.RE +.PP +\-XX:+CMSClassUnloadingEnabled +.RS 4 +並行マークスイープ(CMS)ガベージ・コレクタを使用する場合に、アンロードするクラスを有効にします。このオプションはデフォルトで有効になっています。CMSガベージ・コレクタのクラス・アンロードを無効にするには、\fI\-XX:\-CMSClassUnloadingEnabled\fRを指定します。 +.RE +.PP +\-XX:CMSExpAvgFactor=\fIpercent\fR +.RS 4 +並行コレクション統計の指数平均を計算する際に、現在のサンプルを重み付けするために使用される時間の割合(0から100まで)を設定します。デフォルトでは、指数平均係数は25%に設定されています。次の例では、係数を15%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSExpAvgFactor=15 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CMSIncrementalDutyCycle=\fIpercent\fR +.RS 4 +並行コレクタの実行が許可されているマイナー・コレクション間の時間の割合(0から100まで)を設定します。\fI\-XX:+CMSIncrementalPacing\fRが有効な場合、デューティ・サイクルが自動的に設定され、このオプションは初期値のみを設定します。 +.sp +デフォルトでは、デューティ・サイクルは10%に設定されています。次の例では、デューティ・サイクルを20%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSIncrementalDutyCycle=20 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CMSIncrementalDutyCycleMin=\fIpercent\fR +.RS 4 +\fI\-XX:+CMSIncrementalPacing\fRが有効な場合にデューティ・サイクルの下限であるマイナー・コレクション間の時間の割合(0から100まで)を設定します。デフォルトでは、デューティ・サイクルの下限は0%に設定されています。次の例では、下限を10%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSIncrementalDutyCycleMin=10 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+CMSIncrementalMode +.RS 4 +CMSコレクタの増分モードを有効にします。このオプションはデフォルトで無効になっており、2つ以下のGCスレッドを持つ構成にのみ有効にする必要があります。\fICMSIncremental\fRで始まるすべてのオプションは、このオプションが有効な場合のみ、適用されます。 +.RE +.PP +\-XX:CMSIncrementalOffset=\fIpercent\fR +.RS 4 +増分モードのデューティ・サイクルをマイナー・コレクション間で期間内に右に移動する時間の割合(0から100まで)を設定します。デフォルトでは、オフセットは0%に設定されています。次の例では、デューティ・サイクルのオフセットを25%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSIncrementalOffset=25 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+CMSIncrementalPacing +.RS 4 +JVMの実行中に収集された統計に基づいて、増分モードのデューティ・サイクルの自動調整を有効にします。このオプションはデフォルトで有効になっています。増分モード・デューティ・サイクルの自動調整を無効にするには、\fI\-XX:\-CMSIncrementalPacing\fRを指定します。 +.RE +.PP +\-XX:CMSIncrementalSafetyFactor=\fIpercent\fR +.RS 4 +デューティ・サイクルを計算する際に、保守を追加するために使用される時間の割合(0から100まで)を設定します。デフォルトでは、安全係数は10%に設定されています。次の例では、安全係数を5%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSIncrementalSafetyFactor=5 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:CMSInitiatingOccupancyFraction=\fIpercent\fR +.RS 4 +CMS収集サイクルを開始する古い世代の占有率(0から100まで)を設定します。デフォルト値は\-1に設定されています。負の値(デフォルトを含む)は、\fI\-XX:CMSTriggerRatio\fRが開始占有率の値を定義するために使用されることを意味します。 +.sp +次の例では、占有率を20%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSInitiatingOccupancyFraction=20 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+CMSScavengeBeforeRemark +.RS 4 +CMSコメント・ステップの前にスカベンジの試行を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:CMSTriggerRatio=\fIpercent\fR +.RS 4 +CMS収集サイクルが開始する前に割り当てられる\fI\-XX:MinHeapFreeRatio\fRによって指定される値の割合(0から100まで)を設定します。デフォルト値は80%に設定されています。 +.sp +次の例では、占有率を75%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:CMSTriggerRatio=75 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:ConcGCThreads=\fIthreads\fR +.RS 4 +並行GCに使用されるスレッドの数を設定します。デフォルト値は、JVMに使用できるCPUの数によって異なります。 +.sp +たとえば、並行GCのスレッド数を2に設定するには、次のオプションを指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:ConcGCThreads=2 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+DisableExplicitGC +.RS 4 +\fISystem\&.gc()\fRの呼出しの処理を無効にするオプションを有効にします。このオプションはデフォルトで無効になっており、これは\fISystem\&.gc()\fRへの呼出しが処理されることを意味します。\fISystem\&.gc()\fRの呼出しの処理が無効になっている場合、JVMは必要に応じてGCを実行します。 +.RE +.PP +\-XX:+ExplicitGCInvokesConcurrent +.RS 4 +\fISystem\&.gc()\fRリクエストを使用することによって、並行GCの呼出しを有効にします。このオプションはデフォルトで無効になっており、\fI\-XX:+UseConcMarkSweepGC\fRオプションとともに使用する場合のみ、有効にすることができます。 +.RE +.PP +\-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses +.RS 4 +\fISystem\&.gc()\fRリクエストを使用し、並行GCサイクル中にクラスをアンロードすることによって、並行GCの呼出しを有効にします。このオプションはデフォルトで無効になっており、\fI\-XX:+UseConcMarkSweepGC\fRオプションとともに使用する場合のみ、有効にすることができます。 +.RE +.PP +\-XX:G1HeapRegionSize=\fIsize\fR +.RS 4 +ガベージファースト(G1)コレクタを使用する際にJavaヒープを細分化するリージョンのサイズを設定します。値には、1MBから32MBまでを指定できます。デフォルトのリージョン・サイズは、ヒープ・サイズに基づいて人間工学的に決定されます。 +.sp +次の例では、細分化されたサイズを16MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:G1HeapRegionSize=16m +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+G1PrintHeapRegions +.RS 4 +割り当てられたリージョンおよびG1コレクタによって再要求されたものに関する情報の印刷を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:G1ReservePercent=\fIpercent\fR +.RS 4 +G1コレクタの昇格が失敗する可能性を減らすためのfalseの上限として予約されたヒープの割合(0から50まで)を設定します。デフォルトでは、このオプションは10%に設定されています。 +.sp +次の例では、予約されたヒープを20%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:G1ReservePercent=20 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:InitialHeapSize=\fIsize\fR +.RS 4 +メモリー割当てプールの初期サイズ(バイト単位)を設定します。指定する値は、0、または1MBより大きい1024の倍数のいずれかにする必要があります。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値は、実行時にシステム構成に基づいて選択されます。詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gc\-ergonomics\&.htmlにあるガベージ・コレクタ・エルゴノミックを参照してください。 +.sp +次の例では、割り当てられたメモリーのサイズを様々な単位を使用して6MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:InitialHeapSize=6291456 +\-XX:InitialHeapSize=6144k +\-XX:InitialHeapSize=6m +.fi +.if n \{\ +.RE +.\} +このオプションを0に設定した場合、初期サイズは、古い世代と若い世代に割り当てられたサイズの合計として設定されます。若い世代のヒープのサイズは、\fI\-XX:NewSize\fRオプションを使用して設定できます。 +.RE +.PP +\-XX:InitialSurvivorRatio=\fIratio\fR +.RS 4 +スループット・ガベージ・コレクタが使用するサバイバ領域の初期比を設定します(\fI\-XX:+UseParallelGC\fRおよび/または\fI\-XX:+UseParallelOldGC\fRオプションによって有効になります)。\fI\-XX:+UseParallelGC\fRオプションおよび\fI\-XX:+UseParallelOldGC\fRオプションを使用することによって、スループット・ガベージ・コレクタで適応サイズ指定をデフォルトで有効にします。初期値から始めて、アプリケーションの動作に従って、サバイバ領域がサイズ変更されます。(\fI\-XX:\-UseAdaptiveSizePolicy\fRオプションを使用して)適応サイズ指定を無効にした場合、\fI\-XX:SurvivorRatio\fRオプションを使用して、アプリケーションの実行全体のサバイバ領域のサイズを設定する必要があります。 +.sp +次の式を使用して、若い世代のサイズ(Y)およびサバイバ領域の初期比(R)に基づいて、サバイバ領域の初期サイズ(S)を計算できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +S=Y/(R+2) +.fi +.if n \{\ +.RE +.\} +等式内の2は、2つのサバイバ領域を示します。サバイバ領域の初期比に指定する値を大きくすると、サバイバ領域の初期サイズは小さくなります。 +.sp +デフォルトでは、サバイバ領域の初期比は8に設定されています。若い世代の領域サイズのデフォルト値(2MB)を使用した場合、サバイバ領域の初期サイズは0\&.2MBになります。 +.sp +次の例では、サバイバ領域の初期比を4に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:InitialSurvivorRatio=4 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:InitiatingHeapOccupancyPercent=\fIpercent\fR +.RS 4 +並行GCサイクルを開始するヒープ占有率(0から100まで)を設定します。これは、1つの世代のみ(たとえばG1ガベージ・コレクタなど)ではなく、ヒープ全体の占有に基づいて並行GCサイクルをトリガーするガベージ・コレクタによって使用されます。 +.sp +デフォルトでは、開始値は45%に設定されています。値0は、GCサイクルが停止しないことを意味します。次の例では、開始ヒープ占有率を75%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:InitiatingHeapOccupancyPercent=75 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxGCPauseMillis=\fItime\fR +.RS 4 +最大GC休止時間(ミリ秒単位)のターゲットを設定します。これはソフト・ゴールのため、JVMは実現のために最善の努力をします。デフォルトでは、休止時間の最大値はありません。 +.sp +次の例では、最大ターゲット休止時間を500ミリ秒に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxGCPauseMillis=500 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxHeapSize=\fIsize\fR +.RS 4 +メモリー割当てプールの最大サイズ(バイト単位)を設定します。指定する値は、2MBより大きい1024の倍数にする必要があります。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。デフォルト値は、実行時にシステム構成に基づいて選択されます。サーバー・デプロイメントでは、\fI\-XX:InitialHeapSize\fRおよび\fI\-XX:MaxHeapSize\fRは通常同じ値に設定されます。詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gc\-ergonomics\&.htmlにあるガベージ・コレクタ・エルゴノミックを参照してください。 +.sp +次の例では、割り当てられたメモリーの許可される最大サイズを様々な単位を使用して80MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxHeapSize=83886080 +\-XX:MaxHeapSize=81920k +\-XX:MaxHeapSize=80m +.fi +.if n \{\ +.RE +.\} +Oracle Solaris 7およびOracle Solaris 8 SPARCプラットフォームの場合のこの値の上限は、およそ4,000MBからオーバーヘッドの量を引いたものです。Oracle Solaris 2\&.6およびx86プラットフォームの場合の上限は、およそ2,000MBからオーバーヘッドの量を引いたものです。Linuxプラットフォームの場合の上限は、およそ2,000MBからオーバーヘッドの量を引いたものです。 +.sp +\fI\-XX:MaxHeapSize\fRオプションは\fI\-Xmx\fRと同等です。 +.RE +.PP +\-XX:MaxHeapFreeRatio=\fIpercent\fR +.RS 4 +GCイベント後の空きヒープ領域の許可されている最大の割合(0から100まで)を設定します。空きヒープ領域がこの値を超えて拡大した場合、そのヒープは縮小します。デフォルトでは、この値は70%に設定されています。 +.sp +次の例では、空きヒープの最大比率を75%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxHeapFreeRatio=75 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxMetaspaceSize=\fIsize\fR +.RS 4 +クラス・メタデータに割り当てることができるネイティブ・メモリーの最大量を設定します。デフォルトでは、このサイズは制限されていません。アプリケーションのメタデータの量は、アプリケーション自体、他の実行中アプリケーション、およびシステムで使用可能なメモリーの量によって異なります。 +.sp +次の例では、クラス・メタデータの最大サイズを256MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxMetaspaceSize=256m +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MaxNewSize=\fIsize\fR +.RS 4 +若い世代(ナーサリ)のヒープの最大サイズ(バイト単位)を設定します。デフォルト値は人間工学的に設定されます。 +.RE +.PP +\-XX:MaxTenuringThreshold=\fIthreshold\fR +.RS 4 +適応GCサイズ指定で使用する最大殿堂入りしきい値を設定します。最大値は15です。デフォルト値は、パラレル(スループット)コレクタの場合は15、CMSコレクタの場合は6です。 +.sp +次の例では、最大殿堂入りしきい値を10に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MaxTenuringThreshold=10 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:MetaspaceSize=\fIsize\fR +.RS 4 +最初に超えたときにガベージ・コレクションをトリガーする、割り当てられたクラス・メタデータ領域のサイズを設定します。このガベージ・コレクションのしきい値は、使用されるメタデータの量によって増加または減少します。デフォルトのサイズはプラットフォームによって異なります。 +.RE +.PP +\-XX:MinHeapFreeRatio=\fIpercent\fR +.RS 4 +GCイベント後の空きヒープ領域の許可されている最小の割合(0から100まで)を設定します。空きヒープ領域がこの値を下回った場合、そのヒープは拡大します。デフォルトでは、この値は40%に設定されています。 +.sp +次の例では、空きヒープの最小比率を25%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:MinHeapFreeRatio=25 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:NewRatio=\fIratio\fR +.RS 4 +若い世代のサイズと古い世代のサイズとの比率を設定します。デフォルトでは、このオプションは2に設定されています。次の例では、若い/古いの比率を1に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:NewRatio=1 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:NewSize=\fIsize\fR +.RS 4 +若い世代(ナーサリ)のヒープの初期サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。 +.sp +ヒープの若い世代リージョンは新しいオブジェクトに使用されます。GCは、他のリージョンよりこのリージョンで、より頻繁に実行されます。若い世代のサイズが小さすぎる場合、多数のマイナーGCが実行されます。サイズが大きすぎる場合、フルGCのみが実行されますが、完了までに時間がかかることがあります。若い世代のサイズは、全体のヒープ・サイズの半分から4分の1の間にしておくことをお薦めします。 +.sp +次の例では、若い世代の初期サイズを様々な単位を使用して256MBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:NewSize=256m +\-XX:NewSize=262144k +\-XX:NewSize=268435456 +.fi +.if n \{\ +.RE +.\} +\fI\-XX:NewSize\fRオプションは\fI\-Xmn\fRと同等です。 +.RE +.PP +\-XX:ParallelGCThreads=\fIthreads\fR +.RS 4 +若い世代と古い世代でパラレル・ガベージ・コレクションに使用するスレッドの数を設定します。デフォルト値は、JVMに使用できるCPUの数によって異なります。 +.sp +たとえば、パラレルGCのスレッド数を2に設定するには、次のオプションを指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:ParallelGCThreads=2 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+ParallelRefProcEnabled +.RS 4 +パラレル参照処理を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintAdaptiveSizePolicy +.RS 4 +適応世代サイズ指定に関する情報の出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGC +.RS 4 +GCごとのメッセージの出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGCApplicationConcurrentTime +.RS 4 +最後の休止(たとえばGC休止など)以降に経過した時間の出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGCApplicationStoppedTime +.RS 4 +休止(たとえばGC休止など)が継続した時間の出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX+PrintGCDateStamp +.RS 4 +GCごとの日付スタンプの出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGCDetails +.RS 4 +GCごとの詳細メッセージの出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGCTaskTimeStamps +.RS 4 +個々のGCワーカー・スレッド・タスクごとのタイムスタンプの出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintGCTimeStamp +.RS 4 +GCごとのタイムスタンプの出力を有効にします。デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+PrintTenuringDistribution +.RS 4 +殿堂入り期間情報の出力を有効にします。次に、出力の例を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Desired survivor size 48286924 bytes, new threshold 10 (max 10) +\- age 1: 28992024 bytes, 28992024 total +\- age 2: 1366864 bytes, 30358888 total +\- age 3: 1425912 bytes, 31784800 total +\&.\&.\&. +.fi +.if n \{\ +.RE +.\} +期間1オブジェクトは、最も若いサバイバです(前のスカベンジの後に作成され、最新のスカベンジで存続し、Eden領域からサバイバ領域に移動しました)。期間2オブジェクトは、2つのスカベンジで存続します(2番目のスカベンジ中に、あるサバイバ領域から次の領域にコピーされました)。このように続きます。 +.sp +前述の例では、28,992,024バイトが1つのスカベンジで存続し、Eden領域からサバイバ領域にコピーされました。1,366,864バイトは期間2オブジェクトなどにより占有されています。各行の3番目の値は、期間n以下のオブジェクトの累積サイズです。 +.sp +デフォルトでは、このオプションは無効です。 +.RE +.PP +\-XX:+ScavengeBeforeFullGC +.RS 4 +それぞれのフルGCの前に若い世代のGCを有効にします。このオプションはデフォルトで有効になっています。フルGCの前に若い世代のスカベンジを行うと、古い世代領域から若い世代領域へのアクセスが可能なオブジェクトの数を減らすことができるため、これを無効に\fIしない\fRことをお薦めします。各フルGCの前に若い世代のGCを無効にするには、\fI\-XX:\-ScavengeBeforeFullGC\fRを指定します。 +.RE +.PP +\-XX:SoftRefLRUPolicyMSPerMB=\fItime\fR +.RS 4 +ソフト・アクセスが可能なオブジェクトが最後に参照されてからヒープ上でアクティブなままになっている時間(ミリ秒単位)を設定します。デフォルト値は、ヒープ内の空きメガバイト当たりで1秒の存続期間です。\fI\-XX:SoftRefLRUPolicyMSPerMB\fRオプションは、現在のヒープ・サイズ(Java HotSpot Client VM用)または最大可能ヒープ・サイズ(Java HotSpot Server VM用)の1メガバイト当たりのミリ秒を表す整数値を受け入れます。この違いは、Client VMは、ヒープを大きくするのではなく、ソフト参照をフラッシュする傾向があるのに対し、Server VMは、ソフト参照をフラッシュするのではなく、ヒープを大きくする傾向があることを意味します。後者の場合、\fI\-Xmx\fRオプションの値は、ソフト参照がどのくらい迅速にガベージ・コレクションされるかに重要な影響を及ぼします。 +.sp +次の例では、値を2\&.5秒に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:SoftRefLRUPolicyMSPerMB=2500 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:SurvivorRatio=\fIratio\fR +.RS 4 +Eden領域のサイズとサバイバ領域のサイズとの比率を設定します。デフォルトでは、このオプションは8に設定されています。次の例では、Eden/サバイバ領域の比率を4に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:SurvivorRatio=4 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:TargetSurvivorRatio=\fIpercent\fR +.RS 4 +若いガベージ・コレクションの後に使用されるサバイバ領域の目的の割合(0から100まで)を設定します。デフォルトでは、このオプションは50%に設定されています。 +.sp +次の例では、ターゲットのサバイバ領域の比率を30%に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:TargetSurvivorRatio=30 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:TLABSize=\fIsize\fR +.RS 4 +スレッド・ローカルな割当てバッファ(TLAB)の初期サイズ(バイト単位)を設定します。キロバイトを示す場合は文字\fIk\fRまたは\fIK\fR、メガバイトを示す場合は文字\fIm\fRまたは\fIM\fR、ギガバイトを示す場合は文字\fIg\fRまたは\fIG\fRを追加します。このオプションが0に設定されている場合、JVMでは初期サイズが自動的に選択されます。 +.sp +次の例では、TLABの初期サイズを512KBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-XX:TLABSize=512k +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-XX:+UseAdaptiveSizePolicy +.RS 4 +適応世代サイズ指定の使用を有効にします。このオプションはデフォルトで有効になっています。適応世代サイズ指定を無効にするには、\fI\-XX:\-UseAdaptiveSizePolicy\fRを指定し、メモリー割当てプールのサイズを明示的に設定します(\fI\-XX:SurvivorRatio\fRオプションを参考にしてください)。 +.RE +.PP +\-XX:+UseCMSInitiatingOccupancyOnly +.RS 4 +CMSコレクタの開始のための唯一の基準としての占有値の使用を有効にします。デフォルトでは、このオプションは無効になっており、他の基準が使用されます。 +.RE +.PP +\-XX:+UseConcMarkSweepGC +.RS 4 +古い世代へのCMSガベージ・コレクタの使用を有効にします。アプリケーションの待機時間の要件を、スループット(\fI\-XX:+UseParallelGC\fR)ガベージ・コレクタによって満たすことができない場合、CMSガベージ・コレクタを使用することをお薦めします。G1ガベージ・コレクタ(\fI\-XX:+UseG1GC\fR)は別の代替となります。 +.sp +デフォルトでは、このオプションは無効になっており、コレクタは、マシンの構成およびJVMのタイプに基づいて、自動的に選択されます。このオプションを有効にすると、\fI\-XX:+UseParNewGC\fRオプションが自動的に設定されます。 +.RE +.PP +\-XX:+UseG1GC +.RS 4 +G1ガベージ・コレクタの使用を有効にします。これはサーバー形式のガベージ・コレクタで、大量のRAMを持つマルチプロセッサ・マシンを対象としています。高い確率でGC休止時間の目標を達成し、同時に適切なスループットも維持します。G1コレクタは、GC待機時間の限定された要件(安定した予測可能な0\&.5秒未満の休止時間)を持つ、大きいヒープ(約6GB以上のサイズ)が必要なアプリケーションに推奨されます。 +.sp +デフォルトでは、このオプションは無効になっており、コレクタは、マシンの構成およびJVMのタイプに基づいて、自動的に選択されます。 +.RE +.PP +\-XX:+UseGCOverheadLimit +.RS 4 +\fIOutOfMemoryError\fR例外がスローされるまでに、GCでJVMによって要した時間の割合を制限するポリシーの使用を有効にします。デフォルトでは、このオプションは有効になっており、ガベージ・コレクションに合計時間の98%より多く費やされ、ヒープのリカバリが2%未満である場合、パラレルGCによって\fIOutOfMemoryError\fRがスローされます。ヒープが小さい場合、この機能は、アプリケーションが長期間ほとんどまたはまったく進捗なく実行している状態を回避するために使用できます。このオプションを無効にするには、\fI\-XX:\-UseGCOverheadLimit\fRを指定します。 +.RE +.PP +\-XX:+UseNUMA +.RS 4 +アプリケーションで短い待機時間のメモリーの使用を増加させることで、不均一なメモリー・アーキテクチャ(NUMA)を使用したマシン上のアプリケーションのパフォーマンス最適化を有効にします。デフォルトでは、このオプションは無効になっており、NUMAに対する最適化は行われません。このオプションは、パラレル・ガベージ・コレクタ(\fI\-XX:+UseParallelGC\fR)が使用されている場合のみ使用可能です。 +.RE +.PP +\-XX:+UseParallelGC +.RS 4 +複数のプロセッサを利用してアプリケーションのパフォーマンスを向上させる、パラレル・スカベンジ・ガベージ・コレクタ(スループット・コレクタとも呼ばれる)の使用を有効にします。 +.sp +デフォルトでは、このオプションは無効になっており、コレクタは、マシンの構成およびJVMのタイプに基づいて、自動的に選択されます。これを有効にした場合、明示的に無効にしないかぎり、\fI\-XX:+UseParallelOldGC\fRオプションが自動的に有効になります。 +.RE +.PP +\-XX:+UseParallelOldGC +.RS 4 +フルGCへのパラレル・ガベージ・コレクタの使用を有効にします。デフォルトでは、このオプションは無効です。これを有効にすると、\fI\-XX:+UseParallelGC\fRオプションが自動的に有効になります。 +.RE +.PP +\-XX:+UseParNewGC +.RS 4 +若い世代でのコレクションへのパラレル・スレッドの使用を有効にします。デフォルトでは、このオプションは無効です。\fI\-XX:+UseConcMarkSweepGC\fRオプションを設定すると、これは自動的に有効になります。 +.RE +.PP +\-XX:+UseSerialGC +.RS 4 +シリアル・ガベージ・コレクタの使用を有効にします。ガベージ・コレクションから特別な機能を必要としない、小規模で単純なアプリケーションの場合には、これは一般に最適な選択です。デフォルトでは、このオプションは無効になっており、コレクタは、マシンの構成およびJVMのタイプに基づいて、自動的に選択されます。 +.RE +.PP +\-XX:+UseTLAB +.RS 4 +若い世代の領域でのスレッド・ローカルな割当てブロック(TLAB)の使用を有効にします。このオプションはデフォルトで有効になっています。TLABの使用を無効にするには、\fI\-XX:\-UseTLAB\fRを指定します。 +.RE +.SS "非推奨で削除されたオプション" +.PP +これらのオプションは、以前のリリースには含まれていましたが、以降は不要とみなされています。 +.PP +\-Xrun\fIlibname\fR +.RS 4 +指定したデバッグ/プロファイルのライブラリをロードします。このオプションは、\fI\-agentlib\fRオプションに取って代わられました。 +.RE +.PP +\-XX:CMSInitiatingPermOccupancyFraction=\fIpercent\fR +.RS 4 +GCを開始する永久世代占有率(0から100まで)を設定します。このオプションはJDK 8では非推奨で、それに代わるものはありません。 +.RE +.PP +\-XX:MaxPermSize=\fIsize\fR +.RS 4 +永久世代領域の最大サイズ(バイト単位)を設定します。このオプションは、JDK 8で非推奨になり、\fI\-XX:MaxMetaspaceSize\fRオプションに取って代わられました。 +.RE +.PP +\-XX:PermSize=\fIsize\fR +.RS 4 +超えた場合にはガベージ・コレクションをトリガーする、永久世代に割り当てられた領域(バイト単位)を設定します。このオプションは、JDK 8で非推奨になり、\fI\-XX:MetaspaceSize\fRオプションに取って代わられました。 +.RE +.PP +\-XX:+UseSplitVerifier +.RS 4 +検証プロセスの分割を有効にします。デフォルトでは、このオプションは以前のリリースでは有効になっており、検証は、タイプ参照(コンパイラによって実行)と、タイプ・チェック(JVMランタイムによって実行)の2つのフェーズに分割されていました。このオプションはJDK 8で非推奨となり、検証はデフォルトで分割され、無効にする方法はありません。 +.RE +.PP +\-XX:+UseStringCache +.RS 4 +一般に割り当てられた文字列のキャッシングを有効にします。このオプションはJDK 8から削除され、それに代わるものはありません。 +.RE +.SH "パフォーマンス・チューニングの例" +.PP +次の例では、スループットの最適化またはレスポンス時間の短縮化のいずれかを行うための、試験的なチューニング・フラグの使用方法を示します。 +.PP +\fBExample 1\fR, スループットを向上するためのチューニング +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-d64 \-server \-XX:+AggressiveOpts \-XX:+UseLargePages \-Xmn10g \-Xms26g \-Xmx26g +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, レスポンス時間を速くするためのチューニング +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-d64 \-XX:+UseG1GC \-Xms26g Xmx26g \-XX:MaxGCPauseMillis=500 \-XX:+PrintGCTimeStamp +.fi +.if n \{\ +.RE +.\} .RE - -.LP .SH "終了ステータス" -.LP -.LP -一般に、次の終了値が起動ツールから返されるのは通常、起動元が不正な引数で呼び出されたか、深刻なエラーが発生したか、あるいは Java 仮想マシンから例外がスローされた場合です。ただし Java アプリケーションは、API 呼び出し \f2System.exit(exitValue)\fP を使用して任意の値を返すことを選択することもできます。 -.LP -.RS 3 -.TP 2 -o -\f20\fP: 正常終了 -.TP 2 -o -\f2>0\fP: エラーが発生した +.PP +通常、次の終了値が起動ツールから返されるのは、起動元が不正な引数で呼び出されたか、深刻なエラーが発生したか、あるいはJVMにより例外がスローされた場合です。ただし、Javaアプリケーションは、API呼出し\fISystem\&.exit(exitValue)\fRを使用して任意の値を返すことを選択することもできます。値は次のとおりです。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI0\fR: 正常終了 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI>0\fR: エラー発生 .RE - -.LP .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -javac(1) -.TP 2 -o -jdb(1) -.TP 2 -o -javah(1) -.TP 2 -o -jar(1) -.TP 2 -o -.na -\f2「Java 拡張機能フレームワーク」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html -.TP 2 -o -.na -\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 @ -.fi -http://java.sun.com/docs/hotspot/VMOptions.html +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javac(1) .RE - -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/javac.1 b/jdk/src/solaris/doc/sun/man/man1/ja/javac.1 index cb107bfb9a1..5d829a38a81 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/javac.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/javac.1 @@ -1,1250 +1,1489 @@ -." 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 -." 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 javac 1 "07 May 2011" - -.LP -.SH "名前" -javac \- Java プログラミング言語コンパイラ -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -コマンド行引数ファイル -.TP 2 -o -注釈処理 -.TP 2 -o -型の検索 -.TP 2 -o -プログラマティックインタフェース -.TP 2 -o -例 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: javac +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "javac" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +javac \- Javaクラスおよびインタフェースの定義を読み取り、バイトコードおよびクラス・ファイルにコンパイルします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \fP\f3javac\fP [ options ] [ sourcefiles ] [ classes ] [ @argfiles ] -.fl - -.fl +\fIjavac\fR [ \fIoptions\fR ] [ \fIsourcefiles\fR ] [ \fIclasses\fR] [ \fI@argfiles\fR ] .fi - -.LP -.LP -引数は順不同です。 -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。 -.TP 3 -sourcefiles -コンパイルされる 1 つ以上のソースファイル (MyClass.java など) -.TP 3 -classes -注釈の処理対象となる 1 つ以上のクラス (MyPackage.MyClass など) -.TP 3 -@argfiles -オプションとソースファイルを列挙した 1 つ以上のファイル。このファイルの中では \f2\-J\fP オプションは指定できません。 +.if n \{\ +.RE +.\} +.PP +引数を指定する順序は任意です。 +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIsourcefiles\fR +.RS 4 +コンパイルされる1つ以上のソース・ファイル(\fIMyClass\&.java\fRなど)。 +.RE +.PP +\fIclasses\fR +.RS 4 +注釈の処理対象となる1つ以上のクラス(\fIMyPackage\&.MyClass\fRなど)。 +.RE +.PP +\fI@argfiles\fR +.RS 4 +オプションとソース・ファイルを一覧表示する1つ以上のファイル。このファイルの中では\fI\-J\fRオプションは指定できません。コマンドライン引数ファイルを参照してください。 .RE - -.LP .SH "説明" -.LP -.LP -\f3javac\fP ツールは、Java プログラミング言語で記述されたクラスとインタフェースの定義を読み取り、バイトコードのクラスファイルにコンパイルします。また、Java ソースファイルおよびクラス内の注釈の処理も行います。 -.LP -.LP -ソースコードのファイル名を \f3javac\fP に渡すには、次の 2 つの方法があります。 -.LP -.RS 3 -.TP 2 -o -ソースファイルの数が少ない場合は、ファイル名をコマンド行で直接指定します。 -.TP 2 -o -ソースファイルの数が多い場合は、ファイル名を空白または改行で区切って、1 つのファイルに列挙します。次に、このリストファイル名の先頭に \f3@\fP を付けて、\f3javac\fP のコマンド行で指定します。 +.PP +\fIjavac\fRコマンドは、Javaプログラミング言語で記述されたクラスとインタフェースの定義を読み取り、バイトコードのクラス・ファイルにコンパイルします。\fIjavac\fRコマンドでは、Javaソース・ファイルおよびクラス内の注釈の処理もできます。 +.PP +ソース・コードのファイル名を\fIjavac\fRに渡すには、2つの方法があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ソース・ファイルの数が少ない場合は、ファイル名をコマンドラインで指定します。 .RE - -.LP -.LP -ソースコードのファイル名は \f2.java\fP 拡張子を、クラスのファイル名は \f2.class\fP 拡張子を持っていなければなりません。また、ソースファイルとクラスファイルのどちらも、該当するクラスに対応するルート名を持っていなければなりません。たとえば、 \f2MyClass\fP という名前のクラスは、 \f2MyClass.java\fP という名前のソースファイルに記述します。このソースファイルは、 \f2MyClass.class\fP という名前のバイトコードクラスファイルにコンパイルされます。 -.LP -.LP -内部クラスが定義されていると、追加のクラスファイルが生成されます。これらのクラスファイルの名前は、 \f2MyClass$MyInnerClass.class\fP のように、外部クラス名と内部クラス名を組み合わせたものになります。 -.LP -.LP -ソースファイルは、パッケージツリーを反映したディレクトリツリーに配置する必要があります。たとえば、すべてのソースファイルを \f3/workspace\fP に置いている場合、 \f2com.mysoft.mypack.MyClass\fP のソースコードは \f3/workspace/com/mysoft/mypack/MyClass.java\fP にある必要があります。 -.LP -.LP -デフォルトでは、コンパイラは、各クラスファイルを対応するソースファイルと同じディレクトリに置きます。別の出力先ディレクトリを指定するには、\f3\-d\fP を使用します (このあとのオプションを参照)。 -.LP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ソース・ファイルの数が多い場合は、ファイル内のファイル名を空白または改行で区切って指定します。\fIjavac\fRコマンドで、リスト・ファイル名の先頭にアットマーク(@)を使用します。 +.RE +.PP +ソース・コードのファイル名は\&.java拡張子を、クラスのファイル名は\&.class拡張子を持っている必要があります。また、ソース・ファイルとクラス・ファイルのどちらも、該当するクラスに対応するルート名を持っている必要があります。たとえば、\fIMyClass\fRという名前のクラスは、\fIMyClass\&.java\fRという名前のソース・ファイルに記述されます。このソース・ファイルは、\fIMyClass\&.class\fRという名前のバイトコード・クラス・ファイルにコンパイルされます。 +.PP +内部クラスが定義されていると、追加のクラス・ファイルが生成されます。これらのクラス・ファイルの名前は、\fIMyClass$MyInnerClass\&.class\fRのように、内部クラス名と外部クラス名を組み合せたものになります。 +.PP +ソース・ファイルは、パッケージ・ツリーを反映したディレクトリ・ツリーに配置します。たとえば、すべてのソース・ファイルが\fI/workspace\fRにある場合、\fIcom\&.mysoft\&.mypack\&.MyClass\fRのソース・コードを、\fI/workspace/com/mysoft/mypack/MyClass\&.java\fRに格納します。 +.PP +デフォルトでは、コンパイラは、各クラス・ファイルを対応するソース・ファイルと同じディレクトリに格納します。\fI\-d\fRオプションを使用して、別の出力先ディレクトリを指定できます。 .SH "オプション" -.LP -.LP -コンパイラには、現在の開発環境でサポートされており、将来のリリースでもサポートされる標準オプションのセットがあります。これ以外の非標準オプションは、現在の仮想マシンおよびコンパイラの実装に固有のオプションで、将来に変更される可能性があります。非標準オプションは、\f3\-X\fP で始まります。 -.LP -.SS -標準オプション -.LP -.RS 3 -.TP 3 -\-Akey[=value] -注釈プロセッサに渡されるオプション。これらは、javac によって直接解釈されず、個々のプロセッサによって使用されます。\f2key\fP には、1 つまたは複数の識別子を「.」で区切ったものを指定してください。 -.TP 3 -\-cp path または \-classpath path -ユーザーのクラスファイルおよび (場合によっては) 注釈プロセッサやソースファイルの検索場所を指定します。このクラスパスは \f3CLASSPATH\fP 環境変数のユーザークラスパスをオーバーライドします。\f3CLASSPATH\fP、\f3\-cp\fP、\f3\-classpath\fP のいずれも指定されていない場合、ユーザークラスパスは、現在のディレクトリになります。詳細は、「クラスパスの設定」を参照してください。 -.LP -\f3\-sourcepath\fP オプションが指定されていない場合は、ソースファイルもユーザークラスパスから検索されます。 -.LP -\f3\-processorpath\fP オプションが指定されていない場合は、注釈プロセッサもユーザークラスパスから検索されます。 -.TP 3 -\-Djava.ext.dirs=directories -インストール型拡張機能の位置をオーバーライドします。 -.TP 3 -\-Djava.endorsed.dirs=directories -承認された標準パスの位置をオーバーライドします。 -.TP 3 -\-d directory -クラスファイルの出力先ディレクトリを設定します。そのディレクトリはすでに存在している必要があります。\f3javac\fP は作成しません。クラスがパッケージの一部である場合、\f3javac\fP は、必要に応じてディレクトリを作成し、パッケージ名を反映したサブディレクトリにクラスファイルを置きます。たとえば、\f3\-d /home/myclasses\fP と指定し、クラスの名前が \f2com.mypackage.MyClass\fP である場合、クラスファイルは \f2/home/myclasses/com/mypackage/MyClass.class\fP になります。 -.LP -\f3\-d\fP が指定されなかった場合、\f3javac\fP は各クラスファイルを、その生成元となるソースファイルと同じディレクトリ内に格納します。 -.LP -\f3注:\fP \f3\-d\fP で指定したディレクトリはユーザークラスパスに自動的には追加されません。 -.TP 3 -\-deprecation -推奨されないメンバーやクラスが、使用またはオーバーライドされるたびに説明を表示します。\f3\-deprecation\fP が指定されていない場合、\f3javac\fP は、推奨されないメンバーやクラスを使用またはオーバーライドしているソースファイルの要約を表示します。\f3\-deprecation\fP は \f3\-Xlint:deprecation\fP の省略表記です。 -.TP 3 -\-encoding encoding -ソースファイルのエンコーディング名 ( \f2EUC\-JP や UTF\-8\fP など) を指定します。\f3\-encoding\fP が指定されていない場合は、プラットフォームのデフォルトコンバータが使われます。 -.TP 3 -\-endorseddirs directories -承認された標準パスの位置をオーバーライドします。 -.TP 3 -\-extdirs directories -\f2ext\fP ディレクトリの位置をオーバーライドします。\f2directories\fP 変数には、コロンで区切ったディレクトリのリストを指定します。指定したディレクトリ内の各 JAR アーカイブから、クラスファイルが検索されます。見つかったすべての JAR アーカイブは自動的にクラスパスの一部になります。 -.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 -局所変数のデバッグ情報 +.PP +コンパイラには、現在の開発環境でサポートされる標準オプションのセットがあります。これ以外の非標準オプションは、現在の仮想マシンおよびコンパイラの実装に固有のオプションで、将来、変更される可能性があります。非標準オプションは、\fI\-X\fRオプションで始まります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +クロスコンパイル・オプションを参照してください。 .RE -.TP 3 -\-help -標準オプションの形式を表示します。 -.TP 3 -\-implicit:{class,none} -暗黙的にロードされたソースファイルに対するクラスファイルの生成を制御します。クラスファイルを自動生成するには、\f3\-implicit:class\fP を使用します。クラスファイルの生成を抑制するには、\f3\-implicit:none\fP を使用します。このオプションが指定されなかった場合のデフォルト動作は、クラスファイルの自動生成になります。その場合、そのようなクラスファイルが生成された時に注釈処理も実行されると、コンパイラから警告が発行されます。このオプションが明示的に設定された場合には、警告は発行されません。「型の検索」を参照してください。 -.TP 3 -\-Joption -\f3javac\fP が呼び出す \f3java\fP 起動ツールに、\f2option\fP を渡します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 -.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 と同じ意味です。 -.TP 3 -\-proc: {none,only} -注釈処理、コンパイル、その両方、のいずれを実行するかを制御します。\f3\-proc:none\fP は、注釈処理なしでコンパイルが実行されることを意味します。\f3\-proc:only\fP は、注釈処理だけが実行され、後続のコンパイルはまったく実行されないことを意味します。 -.TP 3 -\-processor class1[,class2,class3...] -実行する注釈プロセッサの名前。これを指定した場合、デフォルトの検索処理は省略されます。 -.TP 3 -\-processorpath path -注釈プロセッサの検索場所を指定します。このオプションを使用しなかった場合、クラスパス内でプロセッサの検索が行われます。 -.TP 3 -\-s dir -生成されたソースファイルの格納先となるディレクトリを指定します。そのディレクトリはすでに存在している必要があります。\f3javac\fP は作成しません。クラスがパッケージの一部になっていた場合、コンパイラはそのソースファイルを、パッケージ名を反映したサブディレクトリ内に格納します。その際、必要に応じてディレクトリを作成します。たとえば、ユーザーが \f3\-s /home/mysrc\fP と指定し、クラスの名前が \f2com.mypackage.MyClass\fP であった場合、そのソースファイルは \f2/home/mysrc/com/mypackage/MyClass.java\fP 内に格納されます。 -.TP 3 -\-source release -受け付けるソースコードのバージョンを指定します。\f2release\fP には次の値を指定できます。 -.RS 3 -.TP 3 -1.3 -このコンパイラでは、JDK 1.3 以降に導入されたアサーション、総称、または他の言語機能をサポートしません。 -.TP 3 -1.4 -JDK 1.4 で導入された、アサーションを含むコードを受け付けます。 -.TP 3 -1.5 -JDK 5 で導入された総称および他の言語機能を含んだコードを受け付けます。 -.TP 3 -5 -1.5 と同義です。 -.TP 3 -1.6 -これがデフォルト値です。Java SE 6 では言語に対する変更は導入されませんでしたが、ソースファイル内のエンコーディングエラーが、以前のような「警告」ではなく、「エラー」として報告されるようになりました。 -.TP 3 -6 -1.6 と同義です。 -.TP 3 -1.7 -JDK 7 で導入された機能を含むコードを受け付けます。 -.TP 3 -7 -1.7 と同義です。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +非標準オプションを参照してください。 .RE -.TP 3 -\-sourcepath sourcepath -クラスまたはインタフェースの定義を検索するソースコードパスを指定します。ユーザークラスパスと同様に、ソースパスの複数のエントリはコロン (\f3:\fP) で区切ります。ソースパスのエントリには、ディレクトリ、JAR アーカイブ、または ZIP アーカイブを指定できます。パッケージを使っている場合は、ディレクトリまたはアーカイブ内のローカルパス名がパッケージ名を反映していなければなりません。 -.LP -\f3注:\fP\ クラスパスからクラスだけでなくそのソースも見つかった場合、そのクラスは自動再コンパイルの対象になることがあります。「型の検索」を参照してください。 -.TP 3 -\-verbose -詳細な出力を表示します。ロードされるクラスおよびコンパイルされるソースファイルごとの情報が出力されます。 -.TP 3 -\-version -バージョン情報を出力します。 -.TP 3 -\-Werror -警告が発生した場合にコンパイルを終了します。 -.TP 3 -\-X -非標準オプションに関する情報を表示して終了します。 +.SS "標準オプション" +.PP +\-A\fIkey\fR[\fI=value\fR] +.RS 4 +注釈プロセッサに渡すオプションを指定します。これらのオプションは、\fIjavac\fRが直接解釈するのではなく、それぞれのプロセッサで使用できるようになります。\fIkey\fRの値は、1つまたは複数の識別子をドット(\&.)で区切る必要があります。 .RE - -.LP -.SS -クロスコンパイルオプション -.LP -.LP -デフォルトでは、クラスのコンパイルは、\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 も可)、および \f31.7\fP (\f37\fP も可) です。 -.LP -\f3\-target\fP のデフォルトは、次のように \f3\-source\fP の値によって決まります。 -.RS 3 -.TP 2 -o -\-source が\f3指定されなかった\fP場合、\-target の値は \f31.7\fP になります。 -.TP 2 -o -\-source が\f31.2\fP の場合、\-target の値は \f31.4\fP になります。 -.TP 2 -o -\-source が\f31.3\fP の場合、\-target の値は \f31.4\fP になります。 -.TP 2 -o -\-source が\f3それ以外の値の場合はすべて\fP、\f3\\\-target\fP の値は \f3\-source\fP の値になります。 +.PP +\-cp \fIpath\fR or \-classpath \fIpath\fR +.RS 4 +ユーザー・クラス・ファイル、および(オプションで)注釈プロセッサとソース・ファイルを検索する場所を指定します。このクラス・パスは\fICLASSPATH\fR環境変数のユーザー・クラス・パスをオーバーライドします。\fICLASSPATH\fR、\fI\-cp\fR、\fI\-classpath\fRのいずれも指定されていない場合、ユーザーの\fIクラス・パス\fRは、現在のディレクトリになります。Setting the Class Path を参照してください。 +.sp +\fI\-sourcepath\fRオプションが指定されていない場合、ソース・ファイルもユーザー・クラス・パスから検索されます。 +.sp +\fI\-processorpath\fRオプションが指定されていない場合、注釈プロセッサもクラス・パスから検索されます。 .RE -.TP 3 -\-bootclasspath bootclasspath -指定された一連のブートクラスに対してクロスコンパイルを行います。ユーザークラスパスと同様に、ブートクラスパスの複数のエントリはコロン (\f3:\fP) で区切ります。ブートクラスパスのエントリには、ディレクトリ、JAR アーカイブ、または ZIP アーカイブを指定できます。 +.PP +\-Djava\&.ext\&.dirs=\fIdirectories\fR +.RS 4 +インストール済拡張機能の位置をオーバーライドします。 .RE - -.LP -.SS -非標準オプション -.LP -.RS 3 -.TP 3 -\-Xbootclasspath/p:path -ブートストラップクラスパスの前に追加します。 -.TP 3 -\-Xbootclasspath/a:path -ブートストラップクラスパスの後ろに追加します。 -.TP 3 -\-Xbootclasspath/:path -ブートストラップクラスファイルの位置をオーバーライドします。 -.TP 3 -\-Xlint -推奨されるすべての警告を有効にします。このリリースでは、利用可能なすべての警告を有効にすることが推奨されています。 -.TP 3 -\-Xlint:all -推奨されるすべての警告を有効にします。このリリースでは、利用可能なすべての警告を有効にすることが推奨されています。 -.TP 3 -\-Xlint:none -すべての警告を無効にします。 -.TP 3 -\-Xlint:name -警告 \f2name\fP を有効にします。このオプションで有効にできる警告のリストについては、「\-Xlint オプションを使って有効または無効にできる警告」を参照してください。 -.TP 3 -\-Xlint:\-name -警告 \f2name\fP を無効にします。このオプションで無効にできる警告のリストについては、「\-Xlint オプションを使って有効または無効にできる警告」を参照してください。 -.TP 3 -\-Xmaxerrs number -印刷するエラーの最大数を設定します。 -.TP 3 -\-Xmaxwarns number -印刷する警告の最大数を設定します。 -.TP 3 -\-Xstdout filename -コンパイラのメッセージを、指定されたファイルに送ります。デフォルトでは、コンパイラのメッセージは \f2System.err\fP に送られます。 -.TP 3 -\-Xprefer:{newer,source} -ある型に対してソースファイルとクラスファイルの両方が見つかった場合、そのどちらのファイルを読み取るべきかを指定します (「型の検索」を参照)。\f2\-Xprefer:newer\fP を使用した場合、ある型に対するソースファイルとクラスファイルの新しい方が読み取られます (デフォルト)。\f2\-Xprefer:source\fP オプションを使用した場合、ソースファイルが読み取られます。SOURCE の保存ポリシーを使って宣言された注釈に任意の注釈プロセッサがアクセスできるようにする場合は、\f2\-Xprefer:source\fP \f2を使用してください\fP。 -.TP 3 -\-Xpkginfo:{always,legacy,nonempty} -パッケージ情報ファイルの処理を指定します。 -.TP 3 -\-Xprint -指定された型のテキスト表現をデバッグ目的で出力します。注釈処理、コンパイルのどちらも実行しません。出力形式は変更される可能性があります。 -.TP 3 -\-XprintProcessorInfo -ある特定のプロセッサが処理を依頼されている注釈に関する情報を出力します。 -.TP 3 -\-XprintRounds -初回および後続の注釈処理ラウンドに関する情報を出力します。 +.PP +\-Djava\&.endorsed\&.dirs=\fIdirectories\fR +.RS 4 +承認された標準パスの位置をオーバーライドします。 .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 -不要で冗長なキャストについて警告します。次に例を示します。 +.PP +\-d \fIdirectory\fR +.RS 4 +クラス・ファイルの出力先ディレクトリを設定します。そのディレクトリは\fIjavac\fRでは作成されないため、すでに存在している必要があります。クラスがパッケージの一部である場合、\fIjavac\fRは、パッケージ名を反映したサブディレクトリ内にクラス・ファイルを格納し、必要に応じてディレクトリを作成します。 +.sp +\fI\-d\fR +\fI/home/myclasses\fRと指定し、クラスの名前が\fIcom\&.mypackage\&.MyClass\fRである場合、クラス・ファイルは\fI/home/myclasses/com/mypackage/MyClass\&.class\fRになります。 +.sp +\fI\-d\fRオプションが指定されなかった場合、\fIjavac\fRは、各クラス・ファイルを、その生成元となるソース・ファイルと同じディレクトリ内に格納します。 +.sp +\fB注意:\fR +\fI\-d\fRオプションによって指定されたディレクトリは、ユーザー・クラス・パスに自動的に追加されません。 +.RE +.PP +\-deprecation +.RS 4 +非推奨のメンバーまたはクラスが使用またはオーバーライドされるたびに、説明を表示します。\fI\-deprecation\fRオプションが指定されていない場合、\fIjavac\fRは、非推奨のメンバーまたはクラスを使用またはオーバーライドしているソース・ファイルのサマリーを表示します。\fI\-deprecation\fRオプションは、\fI\-Xlint:deprecation\fRの省略表記です。 +.RE +.PP +\-encoding \fIencoding\fR +.RS 4 +ソース・ファイルのエンコーディング名(EUC\-JPやUTF\-8など)を設定します。\fI\-encoding\fRオプションが指定されていない場合は、プラットフォームのデフォルト・コンバータが使用されます。 +.RE +.PP +\-endorseddirs \fIdirectories\fR +.RS 4 +承認された標準パスの位置をオーバーライドします。 +.RE +.PP +\-extdirs \fIdirectories\fR +.RS 4 +\fIext\fRディレクトリの位置をオーバーライドします。directories変数には、コロンで区切ったディレクトリのリストを指定します。指定したディレクトリ内の各JARファイルから、クラス・ファイルが検索されます。検出されたすべてのJARファイルは、クラス・パスの一部になります。 +.sp +クロスコンパイル(異なるJavaプラットフォームに実装されたブートストラップ・クラスや拡張機能クラスに対してコンパイルを行う)を実行する場合、このオプションには拡張機能クラスを含むディレクトリを指定します。詳細はクロスコンパイル・オプションを参照してください。 +.RE +.PP +\-g +.RS 4 +ローカル変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号およびソース・ファイル情報のみが生成されます。 +.RE +.PP +\-g:none +.RS 4 +デバッグ情報を生成しません。 +.RE +.PP +\-g:[\fIkeyword list\fR] +.RS 4 +カンマで区切られたキーワード・リストにより指定された、特定の種類のデバッグ情報のみを生成します。次のキーワードが有効です。 +.PP +source +.RS 4 +ソース・ファイルのデバッグ情報。 +.RE +.PP +lines +.RS 4 +行番号のデバッグ情報。 +.RE +.PP +vars +.RS 4 +ローカル変数のデバッグ情報。 +.RE +.RE +.PP +\-help +.RS 4 +標準オプションの概要を出力します。 +.RE +.PP +\-implicit:[\fIclass, none\fR] +.RS 4 +暗黙的にロードされたソース・ファイルに対するクラス・ファイルの生成を制御します。クラス・ファイルを自動生成するには、\fI\-implicit:class\fRを使用します。クラス・ファイルの生成を抑制するには、\fI\-implicit:none\fRを使用します。このオプションが指定されなかった場合のデフォルト動作は、クラス・ファイルの自動生成になります。その場合、そのようなクラス・ファイルが生成された時に注釈処理も実行されると、コンパイラから警告が発行されます。\fI\-implicit\fRオプションが明示的に設定された場合、警告は発行されません。型の検索を参照してください。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシン(JVM)に\fIoption\fRを渡します。optionには、Java起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.sp +\fB注意:\fR +\fICLASSPATH\fR、\fI\-classpath\fR、\fI\-bootclasspath\fRおよび\fI\-extdirs\fRオプションは、\fIjavac\fRの実行に使用されるクラスを指定しません。これらのオプションおよび変数を使用してコンパイラの実装をカスタマイズしようとすると、リスクが高く、多くの場合、必要な処理が実行されません。コンパイラの実装をカスタマイズする必要がある場合、\fI\-J\fRオプションを使用して、基礎となるJava起動ツールにオプションを渡します。 +.RE +.PP +\-nowarn +.RS 4 +警告メッセージを無効にします。このオプションは、\fI\-Xlint:none\fRオプションと同じように動作します。 +.RE +.PP +\-parameters +.RS 4 +リフレクションAPIのメソッド\fIjava\&.lang\&.reflect\&.Executable\&.getParameters\fRが取得できるように、生成されるクラス・ファイル内のコンストラクタとメソッドの仮パラメータ名を格納します。 +.RE +.PP +\-proc: [\fInone\fR, \fIonly\fR] +.RS 4 +注釈処理およびコンパイルを実行するかを制御します。\fI\-proc:none\fRは、注釈処理なしでコンパイルが実行されることを意味します。\fI\-proc:only\fRは、注釈処理のみが実行され、後続のコンパイルはまったく実行されないことを意味します。 +.RE +.PP +\-processor \fIclass1\fR [,\fIclass2\fR,\fIclass3\fR\&.\&.\&.] +.RS 4 +実行する注釈プロセッサの名前。これを指定した場合、デフォルトの検索処理は省略されます。 +.RE +.PP +\-processorpath \fIpath\fR +.RS 4 +注釈プロセッサを検索する場所を指定します。このオプションが使用されない場合、クラス・パスのプロセッサが検索されます。 +.RE +.PP +\-s \fIdir\fR +.RS 4 +生成されたソース・ファイルの格納先となるディレクトリを指定します。そのディレクトリは\fIjavac\fRでは作成されないため、すでに存在している必要があります。クラスがパッケージの一部である場合、コンパイラは、パッケージ名を反映したサブディレクトリ内にソース・ファイルを格納し、必要に応じてディレクトリを作成します。 +.sp +\fI\-s /home/mysrc\fRと指定し、クラスの名前が\fIcom\&.mypackage\&.MyClass\fRである場合、ソース・ファイルは\fI/home/mysrc/com/mypackage/MyClass\&.java\fRに格納されます。 +.RE +.PP +\-source \fIrelease\fR +.RS 4 +受け付けるソース・コードのバージョンを指定します。\fIrelease\fRには次の値を指定できます。 +.PP +1\&.3 +.RS 4 +このコンパイラでは、Java SE 1\&.3以降に導入されたアサーション、総称または他の言語機能をサポートしません。 +.RE +.PP +1\&.4 +.RS 4 +Java SE 1\&.4で導入された、アサーションを含むコードを受け付けます。 +.RE +.PP +1\&.5 +.RS 4 +Java SE 5で導入された総称および他の言語機能を含んだコードを受け付けます。 +.RE +.PP +5 +.RS 4 +1\&.5と同義です。 +.RE +.PP +1\&.6 +.RS 4 +Java SE 6では言語に対する変更は導入されませんでした。しかし、ソース・ファイル内のエンコーディング・エラーが、Java Platform, Standard Editionの以前のリリースような警告ではなく、エラーとして報告されるようになりました。 +.RE +.PP +6 +.RS 4 +1\&.6と同義です。 +.RE +.PP +1\&.7 +.RS 4 +これがデフォルト値です。Java SE 7で導入された機能を含むコードを受け付けます。 +.RE +.PP +7 +.RS 4 +1\&.7と同義です。 +.RE +.RE +.PP +\-sourcepath \fIsourcepath\fR +.RS 4 +クラスまたはインタフェースの定義を検索するソース・コード・パスを指定します。ユーザー・クラス・パスと同様に、ソース・パスのエントリは、Oracle Solarisではコロン(:)で、Windowsではセミコロンで区切り、ここには、ディレクトリ、JARアーカイブまたはZIPアーカイブを指定できます。パッケージを使用している場合は、ディレクトリまたはアーカイブ内のローカル・パス名がパッケージ名を反映している必要があります。 +.sp +\fB注意:\fR +ソース・ファイルも見つかった場合、クラス・パスにより見つかったクラスは再コンパイルされる可能性があります。型の検索を参照してください。 +.RE +.PP +\-verbose +.RS 4 +ロードされるクラスおよびコンパイルされるソース・ファイルごとの情報が出力される、詳細出力を使用します。 +.RE +.PP +\-version +.RS 4 +リリース情報を出力します。 +.RE +.PP +\-werror +.RS 4 +警告が発生した場合にコンパイルを終了します。 +.RE +.PP +\-X +.RS 4 +非標準オプションに関する情報を表示して終了します。 +.RE +.SS "クロスコンパイル・オプション" +.PP +デフォルトでは、クラスのコンパイルは、\fIjavac\fRが添付されているプラットフォームのブートストラップ・クラスおよび拡張機能クラスに対して行われます。ただし、\fIjavac\fRは、異なるJavaプラットフォームに実装されたブートストラップ・クラスおよび拡張機能クラスに対してコンパイルを行うクロスコンパイルもサポートしています。クロスコンパイルを行う場合は、\fI\-bootclasspath\fRおよび\fI\-extdirs\fRオプションを使用することが重要です。 +.PP +\-target \fIversion\fR +.RS 4 +仮想マシンの指定されたリリースを対象とするクラス・ファイルを生成します。クラス・ファイルは、指定されたターゲット以降のリリースでは動作しますが、それより前のリリースのJVMでは動作しません。有効なターゲットは、1\&.1、1\&.2、1\&.3、1\&.4、1\&.5 (5も可)、1\&.6 (6も可)および1\&.7 (7も可)です。 +.sp +\fI\-target\fRオプションのデフォルトは、\fI\-source\fRオプションの値によって異なります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションが指定されていない場合、\fI\-target\fRオプションの値は1\&.7です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションが1\&.2の場合、\fI\-target\fRオプションの値は1\&.4です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションが1\&.3の場合、\fI\-target\fRオプションの値は1\&.4です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションが1\&.5の場合、\fI\-target\fRオプションの値は1\&.7です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションが1\&.6の場合、\fI\-target\fRオプションの値は1\&.7です。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-source\fRオプションの他のすべての値の場合、\fI\-target\fRオプションの値は、\fI\-source\fRオプションの値になります。 +.RE +.RE +.PP +\-bootclasspath \fIbootclasspath\fR +.RS 4 +指定された一連のブート・クラスに対してクロスコンパイルを行います。ユーザー・クラス・パスと同様に、ブート・クラス・パスのエントリはコロン(:)で区切り、ここには、ディレクトリ、JARアーカイブまたはZIPアーカイブを指定できます。 +.RE +.SS "コンパクト・プロファイル・オプション" +.PP +JDK 8以降から、\fIjavac\fRコンパイラはコンパクト・プロファイルをサポートします。コンパクト・プロファイルを使用すると、Javaプラットフォーム全体を必要としないアプリケーションは、デプロイ可能で、小さいフットプリントで実行できます。コンパクト・プロファイル機能は、アプリケーション・ストアからのアプリケーションのダウンロード時間を短縮するのに使用できます。この機能は、JREをバンドルするJavaアプリケーションの、よりコンパクトなデプロイメントに役立ちます。この機能は、小さいデバイスでも役立ちます。 +.PP +サポートされているプロファイル値は、\fIcompact1\fR、\fIcompact2\fRおよび\fIcompact3\fRです。これらは、追加のレイヤーです。大きい番号の各コンパクト・プロファイルには、小さい番号の名前のプロファイル内のすべてのAPIが含まれます。 +.PP +\-profile +.RS 4 +コンパクト・プロファイルを使用する場合、このオプションは、コンパイル時にプロファイル名を指定します。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -String s = (String)"Hello!" -.fl -\fP +javac \-profile compact1 Hello\&.java .fi -.TP 3 -classfile -クラスファイルの内容に関連した問題について警告します。 -.TP 3 -deprecation -非推奨項目の使用について警告します。次に例を示します。 +.if n \{\ +.RE +.\} +javacは、指定されたプロファイルにない任意のJava SE APIを使用するソース・コードをコンパイルしません。これは、そのようなソース・コードをコンパイルしようとすることによって生じるエラー・メッセージの例です。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - java.util.Date myDate = new java.util.Date(); -.fl - int currentDay = myDate.getDay(); -.fl -\fP +cd jdk1\&.8\&.0/bin +\&./javac \-profile compact1 Paint\&.java +Paint\&.java:5: error: Applet is not available in profile \*(Aqcompact1\*(Aq +import java\&.applet\&.Applet; .fi -.LP -メソッド \f2java.util.Date.getDay\fP は JDK 1.1 以降は推奨されていません。 -.TP 3 -dep\-ann -\f2@deprecated\fP Javadoc コメントでドキュメント化されているが、 \f2@Deprecated\fP 注釈が付いていない項目について警告します。次に例を示します。 +.if n \{\ +.RE +.\} +この例では、\fIApplet\fRクラスを使用しないようにソースを変更することによって、エラーを修正できます。\-profileオプションを指定せずにコンパイルすることによって、エラーを修正することもできます。コンパイルは、Java SE APIの完全なセットに対して実行されます。(どのコンパクト・プロファイルにも、\fIApplet\fRクラスは含まれていません。) +.sp +コンパクト・プロファイルを使用してコンパイルするための別の方法として、\fI\-bootclasspath\fRオプションを使用して、プロファイルのイメージを指定する\fIrt\&.jar\fRファイルへのパスを指定します。かわりに\fI\-profile\fRオプションを使用すると、プロファイル・イメージは、コンパイル時にシステム上に存在する必要がありません。これは、クロスコンパイル時に役立ちます。 +.RE +.SS "非標準オプション" +.PP +\-Xbootclasspath/p:\fIpath\fR +.RS 4 +ブートストラップ・クラス・パスに接尾辞を追加します。 +.RE +.PP +\-Xbootclasspath/a:\fIpath\fR +.RS 4 +ブートストラップ・クラス・パスに接頭辞を追加します。 +.RE +.PP +\-Xbootclasspath/:\fIpath\fR +.RS 4 +ブートストラップ・クラス・ファイルの位置をオーバーライドします。 +.RE +.PP +\-Xdoclint:[\-]\fIgroup\fR [\fI/access\fR] +.RS 4 +\fIgroup\fRの値が\fIaccessibility\fR、\fIsyntax\fR、\fIreference\fR、\fIhtml\fRまたは\fImissing\fRのいずれかである特定のチェック・グループを有効または無効にします。これらのチェック・グループの詳細は、\fIjavadoc\fRコマンドの\fI\-Xdoclint\fRオプションを参照してください。\fI\-Xdoclint\fRオプションは、\fIjavac\fRコマンドではデフォルトで無効になります。 +.sp +変数\fIaccess\fRは、\fI\-Xdoclint\fRオプションがチェックするクラスとメンバーの最小の可視性レベルを指定します。\fIpublic\fR、\fIprotected\fR、\fIpackage\fRおよび\fIprivate\fRの値(可視性の高い順)の1つを持つことができます。たとえば、次のオプションは、(protected、package、publicを含む) protected以上のアクセス・レベルを持つクラスおよびメンバーを(すべてのチェック・グループで)チェックします。 +.sp +.if n \{\ +.RS 4 +.\} .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 +\-Xdoclint:all/protected .fi -.TP 3 -divzero -一定の整数 0 で除算されることについて警告します。次に例を示します。 +.if n \{\ +.RE +.\} +次のオプションは、package以上のアクセス権(packageおよびpublicを含む)を持つクラスおよびメンバーに対するHTMLエラーをチェックしないことを除き、すべてのアクセス・レベルに対してすべてのチェック・グループを有効にします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - int divideByZero = 42 / 0; -.fl -\fP +\-Xdoclint:all,\-html/package .fi -.TP 3 -empty -\f2if\fP 文以降が空の文であることについて警告します。次に例を示します。 +.if n \{\ +.RE +.\} +.RE +.PP +\-Xdoclint:none +.RS 4 +すべてのチェック・グループを無効にします。 +.RE +.PP +\-Xdoclint:all[\fI/access\fR] +.RS 4 +すべてのチェック・グループを有効にします。 +.RE +.PP +\-Xlint +.RS 4 +推奨されるすべての警告を有効にします。このリリースでは、利用可能なすべての警告を有効にすることをお薦めします。 +.RE +.PP +\-Xlint:all +.RS 4 +推奨されるすべての警告を有効にします。このリリースでは、利用可能なすべての警告を有効にすることをお薦めします。 +.RE +.PP +\-Xlint:none +.RS 4 +すべての警告を無効にします。 +.RE +.PP +\-Xlint:\fIname\fR +.RS 4 +警告名を無効にします。このオプションで無効にできる警告のリストは、\-Xlintオプションを使用した警告の有効化または無効化を参照してください。 +.RE +.PP +\-Xlint:\fI\-name\fR +.RS 4 +警告名を無効にします。このオプションで無効にできる警告のリストを取得するには、\-Xlintオプションを使用した警告の有効化または無効化\-Xlint\fIオプションを使用した\fRを参照してください。 +.RE +.PP +\-Xmaxerrs \fInumber\fR +.RS 4 +印刷するエラーの最大数を設定します。 +.RE +.PP +\-Xmaxwarns \fInumber\fR +.RS 4 +印刷する警告の最大数を設定します。 +.RE +.PP +\-Xstdout \fIfilename\fR +.RS 4 +コンパイラのメッセージを、指定されたファイルに送信します。デフォルトでは、コンパイラのメッセージは\fISystem\&.err\fRに送られます。 +.RE +.PP +\-Xprefer:[\fInewer,source\fR] +.RS 4 +ある型に対してソース・ファイルとクラス・ファイルの両方が見つかった場合、そのどちらのファイルを読み取るかを指定します。(型の検索を参照してください)。\fI\-Xprefer:newer\fRオプションを使用した場合、ある型に対するソース・ファイルとクラス・ファイルのうち新しい方が読み取られます(デフォルト)。\fI\-Xprefer:source\fRオプションを使用した場合、ソース・ファイルが読み取られます。\fISOURCE\fRの保存ポリシーを使用して宣言された注釈に任意の注釈プロセッサがアクセスできるようにする場合は、\fI\-Xprefer:source\fRを使用してください。 +.RE +.PP +\-Xpkginfo:[\fIalways\fR,\fIlegacy\fR,\fInonempty\fR] +.RS 4 +javacがpackage\-info\&.javaファイルから\fIpackage\-info\&.class\fRファイルを生成するかどうかを制御します。このオプションで使用可能なmode引数は次のとおりです。 +.PP +always +.RS 4 +すべての\fIpackage\-info\&.java\fRファイルの\fIpackage\-info\&.class\fRファイルを常に生成します。このオプションは、各\fI\&.java\fRファイルに対応する\fI\&.class\fRファイルがあることを確認するAntなどのビルド・システムを使用する場合に役立つことがあります。 +.RE +.PP +legacy +.RS 4 +package\-info\&.javaに注釈が含まれる場合にのみ\fIpackage\-info\&.class\fRファイルを生成します。package\-info\&.javaにコメントのみ含まれる場合に\fIpackage\-info\&.class\fRファイルを生成しません。 +.sp +\fB注意:\fR +\fIpackage\-info\&.class\fRファイルは生成できますが、package\-info\&.javaファイル内のすべての注釈に\fIRetentionPolicy\&.SOURCE\fRがある場合は空になります。 +.RE +.PP +nonempty +.RS 4 +package\-info\&.javaに\fIRetentionPolicy\&.CLASS\fRまたは\fIRetentionPolicy\&.RUNTIME\fRとともに注釈が含まれる場合にのみ\fIpackage\-info\&.class\fRファイルを生成します。 +.RE +.RE +.PP +\-Xprint +.RS 4 +デバッグ目的で指定した型のテキスト表示を出力します。注釈処理もコンパイルも実行されません。出力形式は変更される可能性があります。 +.RE +.PP +\-XprintProcessorInfo +.RS 4 +ある特定のプロセッサが処理を依頼されている注釈に関する情報を出力します。 +.RE +.PP +\-XprintRounds +.RS 4 +初回および後続の注釈処理ラウンドに関する情報を出力します。 +.RE +.SH "-XLINTオプションを使用した警告の有効化または無効化" +.PP +\fI\-Xlint:name\fRオプションを使用して警告\fIname\fRを有効にします。ここで、\fIname\fRは次の警告名のいずれかになります。\fI\-Xlint:\-name:\fRオプションを使用して、警告を無効化できます。 +.PP +cast +.RS 4 +不要で冗長なキャストについて警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +String s = (String) "Hello!" +.fi +.if n \{\ +.RE +.\} +.RE +.PP +classfile +.RS 4 +クラス・ファイルの内容に関連した問題について警告します。 +.RE +.PP +deprecation +.RS 4 +非推奨の項目の使用について警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java\&.util\&.Date myDate = new java\&.util\&.Date(); +int currentDay = myDate\&.getDay(); +.fi +.if n \{\ +.RE +.\} +メソッド\fIjava\&.util\&.Date\&.getDay\fRはJDK 1\&.1以降は非推奨になりました。 +.RE +.PP +dep\-ann +.RS 4 +\fI@deprecated\fR +Javadocコメントでドキュメント化されているが、\fI@Deprecated\fR注釈が付いていない項目について警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * @deprecated As of Java SE 7, replaced by {@link #newMethod()} + */ +public static void deprecatedMethood() { } +public static void newMethod() { } +.fi +.if n \{\ +.RE +.\} +.RE +.PP +divzero +.RS 4 +定整数0で除算されることについて警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +int divideByZero = 42 / 0; +.fi +.if n \{\ +.RE +.\} +.RE +.PP +empty +.RS 4 +\fIif \fR文以降が空の文であることについて警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl class E { -.fl void m() { -.fl - if (true) ; -.fl + if (true) ; } -.fl } -.fl -\fP .fi -.TP 3 -fallthrough -fall\-through ケースの \f2switch\fP ブロックをチェックし、検出されたものに対して警告メッセージを表示します。Fall\-through ケースは、\f2switch\fP ブロック内の最後のケースを除くケースです。このコードには \f2break\fP 文は含まれません。コードの実行をそのケースから次のケースへ移動します。たとえば、この \f2switch\fP ブロック内の \f2case 1\fP ラベルに続くコードは、\f2break\fP 文で終わっていません。 +.if n \{\ +.RE +.\} +.RE +.PP +fallthrough +.RS 4 +fall\-throughケースのswitchブロックをチェックし、検出されたものに対して警告メッセージを表示します。Fall\-throughケースは、switchブロック内の最後のケースを除くケースです。このコードにはbreak文は含まれません。コードの実行をそのケースから次のケースへ移動します。たとえば、このswitchブロック内のcase 1ラベルに続くコードは、break文で終わっていません。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl switch (x) { -.fl case 1: -.fl - System.out.println("1"); -.fl - // No break statement here. -.fl + System\&.out\&.println("1"); + // No break statement here\&. case 2: -.fl - System.out.println("2"); -.fl + System\&.out\&.println("2"); } -.fl -\fP .fi -.LP -このコードのコンパイル時に \f2\-Xlint:fallthrough\fP フラグが使用されていた場合、コンパイラは 当該ケースの行番号とともに、fall\-through ケースの可能性があることを示す警告を発行します。 -.TP 3 -finally -正常に完了できない \f2finally\fP 節について警告します。次に例を示します。 +.if n \{\ +.RE +.\} +このコードのコンパイル時に\fI\-Xlint:fallthrough\fRオプションが使用されていた場合、コンパイラは、問題になっているケースの行番号とともに、caseにfall\-throughする可能性があることを示す警告を発行します。 +.RE +.PP +finally +.RS 4 +正常に完了できない\fIfinally\fR句について警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} .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 +public static int m() { + try { + throw new NullPointerException(); + } catch (NullPointerException(); { + System\&.err\&.println("Caught NullPointerException\&."); + return 1; + } finally { + return 0; + } } -.fl -\fP .fi -.LP -この例では、コンパイラは \f2finally\fP ブロックに関する警告を生成します。このメソッドが呼び出されると、値 1 ではなく \f20\fP が \f2返されます\fP。 \f2finally\fP ブロックは、 \f2try\fP ブロックが終了すると必ず実行されます。この例では、制御が \f2catch\fP に移された場合、メソッドは終了します。ただし、 \f2finally\fP ブロックは実行される必要があるため、制御がすでにこのメソッドの外部に移されていても、このブロックは実行されます。 -.TP 3 -options -コマンド行オプションの使用に関する問題について警告します。この種の警告の例については、「クロスコンパイルの例」を参照してください。 -.TP 3 -overrides -メソッドのオーバーライドに関する問題について警告します。たとえば、次の 2 つのクラスがあるとします。 +.if n \{\ +.RE +.\} +この例では、コンパイラは\fIfinally\fRブロックに関する警告を生成します。\fIint\fRメソッドが呼び出されると、値0が返されます。\fIfinally\fRブロックは、\fItry\fRブロックが終了すると実行されます。この例では、制御が\fIcatch\fRブロックに移された場合、\fIint\fRメソッドは終了します。ただし、\fIfinally\fRブロックは実行される必要があるため、制御がメソッドの外部に移されていても、このブロックは実行されます。 +.RE +.PP +options +.RS 4 +コマンドライン・オプションの使用に関する問題について警告します。クロスコンパイル・オプションを参照してください。 +.RE +.PP +overrides +.RS 4 +メソッドのオーバーライドに関する問題について警告します。たとえば、次の2つのクラスがあるとします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl public class ClassWithVarargsMethod { -.fl - void varargsMethod(String... s) { } -.fl + void varargsMethod(String\&.\&.\&. s) { } } -.fl -\fP -.fi -.nf -\f3 -.fl + public class ClassWithOverridingMethod extends ClassWithVarargsMethod { -.fl - @Override -.fl - void varargsMethod(String[] s) { } -.fl + @Override + void varargsMethod(String[] s) { } } -.fl -\fP .fi -.LP -コンパイラは次のような警告を生成します。 +.if n \{\ +.RE +.\} +コンパイラは、次のような警告を生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -warning: [override] varargsMethod(String[]) in ClassWithOverridingMethod overrides varargsMethod(String...) in ClassWithVarargsMethod; overriding method is missing '...' -.fl -\fP +warning: [override] varargsMethod(String[]) in ClassWithOverridingMethod +overrides varargsMethod(String\&.\&.\&.) in ClassWithVarargsMethod; overriding +method is missing \*(Aq\&.\&.\&.\*(Aq .fi -.LP -コンパイラは、varargs メソッドを検出すると、varargs の仮パラメータを配列に変換します。メソッド \f2ClassWithVarargsMethod.varargsMethod\fP では、コンパイラは varargs の仮パラメータ \f2String... s\fP を仮パラメータ \f2String[] s\fP に変換します。String[] s は、メソッド \f2ClassWithOverridingMethod.varargsMethod\fP の仮パラメータに対応する配列です。その結果、この例ではコンパイルが行われます。 -.TP 3 -path -コマンド行での無効なパス要素と存在しないパスディレクトリについて警告します (クラスパス、ソースパスなどのパス関連)。このような警告を \f2@SuppressWarnings\fP 注釈で抑制することはできません。次に例を示します。 +.if n \{\ +.RE +.\} +コンパイラは、\fIvarargs\fRメソッドを検出すると、\fIvarargs\fRの仮パラメータを配列に変換します。メソッド\fIClassWithVarargsMethod\&.varargsMethod\fRでは、コンパイラは\fIvarargs\fRの仮パラメータ\fIString\&.\&.\&. s\fRを仮パラメータ\fIString[] s\fRに変換します。これは、メソッド\fIClassWithOverridingMethod\&.varargsMethod\fRの仮パラメータに対応する配列です。その結果、この例ではコンパイルが行われます。 +.RE +.PP +path +.RS 4 +コマンドラインでの無効なパス要素と存在しないパス・ディレクトリについて警告します(クラス・パス、ソース・パスなどのパス関連)。このような警告を\fI@SuppressWarnings\fR注釈で抑制することはできません。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -javac \-Xlint:path \-classpath /nonexistentpath Example.java -.fl -\fP +javac \-Xlint:path \-classpath /nonexistentpath Example\&.java .fi -.TP 3 -processing -注釈処理に関する問題について警告します。コンパイラがこの警告を生成するのは、注釈を含むクラスがあるときに、使用している注釈プロセッサでその型の例外を処理できない場合です。単純な注釈プロセッサの例を次に示します。 -.LP -\f3ソースファイル \fP\f4AnnoProc.java\fP: +.if n \{\ +.RE +.\} +.RE +.PP +processing +.RS 4 +注釈処理に関する問題について警告します。コンパイラがこの警告を生成するのは、注釈を含むクラスがあるときに、使用している注釈プロセッサでそのタイプの例外を処理できない場合です。たとえば、単純な注釈プロセッサを次に示します。 +.sp +\fBソース・ファイルAnnocProc\&.java\fR: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -import java.util.*; -.fl -import javax.annotation.processing.*; -.fl -import javax.lang.model.*; -.fl -import javax.lang.model.element.*; -.fl +import java\&.util\&.*; +import javax\&.annotation\&.processing\&.*; +import javax\&.lang\&.model\&.*; +import\&.javaz\&.lang\&.model\&.element\&.*; -.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 -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 -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 -コンパイラは次の警告を生成します。 -.nf -\f3 -.fl -warning: [serial] serializable class PersistentTime has no definition of serialVersionUID -.fl -\fP -.fi -.LP -直列化可能クラスが \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 -コンパイラは次の警告を生成します。 -.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 -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 -型の消去中に、型 \f2ArrayList<Number>\fP および \f2List<String>\fP はそれぞれ \f2ArrayList\fP および \f2List\fP になります。 -.LP -変数 \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 + public boolean process(Set<? extends TypeElement> elems, RoundEnvironment renv){ + return true; } -.fl + + public SourceVersion getSupportedSourceVersion() { + return SourceVersion\&.latest(); + } } -.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 に変換します。その結果、ヒープ汚染が発生する可能性があります。 +.if n \{\ .RE - -.LP -.SH "コマンド行引数ファイル" -.LP -.LP -javac のコマンド行を短くしたり簡潔にしたりするために、 \f2javac\fP コマンドに対する引数 ( \f2\-J\fP オプションを除く) を含む 1 つ以上のファイルを指定することができます。この方法を使うと、どのオペレーティングシステム上でも、任意の長さの javac コマンドを作成できます。 -.LP -.LP -引数ファイルには、javac のオプションとソースファイル名を自由に組み合わせて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に空白が含まれている場合は、そのファイル名全体を二重引用符で囲みます。 -.LP -.LP -引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。引数ファイル内のファイル名リストでは、ワイルドカード (*) は使用できません。たとえば、 \f2*.java\fP とは指定できません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、 \f2\-J\fP オプションもサポートされていません。このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 -.LP -.LP -javac を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。javac は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 -.LP -.SS -引数ファイルを 1 つ指定する例 -.LP -.LP -\f2「argfile」という名前の引数ファイルに\fPすべての javac 引数を格納する場合は、次のように指定します。 -.LP +.\} +\fBソース・ファイルAnnosWithoutProcessors\&.java\fR: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% \fP\f3javac @argfile\fP -.fl -.fi - -.LP -.LP -この引数ファイルには、次の例で示されている 2 つのファイルの内容を両方とも入れることができます。 -.LP -.SS -引数ファイルを 2 つ指定する例 -.LP -.LP -たとえば、javac オプション用に 1 ファイル、ソースファイル名用に 1 ファイルというように、2 つの引数ファイルを作成することもできます。なお、このあとのリストでは、行の継続文字を使用していません。 -.LP -.LP -以下の内容を含む \f2options\fP というファイルを作成します。 -.LP -.nf -\f3 -.fl - \-d classes -.fl - \-g -.fl - \-sourcepath /java/pubs/ws/1.3/src/share/classes -.fl - -.fl -\fP -.fi - -.LP -.LP -以下の内容を含む \f2classes\fP というファイルを作成します。 -.LP -.nf -\f3 -.fl - MyClass1.java -.fl - MyClass2.java -.fl - MyClass3.java -.fl - -.fl -\fP -.fi - -.LP -.LP -次のコマンドを使用して \f3javac\fP を実行します。 -.LP -.nf -\f3 -.fl - % \fP\f3javac @options @classes\fP -.fl - -.fl -.fi - -.LP -.SS -パス付きの引数ファイルの例 -.LP -.LP -引数ファイルには、パスを指定できます。ただし、そのファイル内に指定されたファイル名は、現在の作業ディレクトリから見た相対パスになります。つまり、下の例の場合は、 \f2path1\fP や \f2path2\fP から見た相対パスではありません。 -.LP -.nf -\f3 -.fl -% \fP\f3javac @path1/options @path2/classes\fP -.fl -.fi - -.LP -.SH "注釈処理" -.LP -.LP -\f3javac\fP が注釈処理を直接サポートしているため、独立した注釈処理ツールである \f3apt\fP を使用する必要がなくなりました。 -.LP -.LP -注釈処理の API は、 \f2javax.annotation.processing\fP および \f2javax.lang.model\fP パッケージとそのサブパッケージ内に定義されています。 -.LP -.SS -注釈処理の概要 -.LP -.LP -\f3\-proc:none\fP オプションによって注釈処理が無効化されないかぎり、コンパイラは使用可能なすべての注釈プロセッサを検索します。検索パスは \f3\-processorpath\fP オプションを使って指定できます。検索パスを指定しなかった場合は、ユーザークラスパスが使用されます。プロセッサの検索は、検索パス上の \f2META\-INF/services/javax.annotation.processing.Processor\fP という名前のサービスプロバイダ構成ファイルに基づいて行われます。このようなファイルには、使用するすべての注釈プロセッサの名前を、1 行に 1 つずつ含めてください。また、別の方法として、\f3\-processor\fP オプションを使ってプロセッサを明示的に指定することもできます。 -.LP -.LP -コンパイラは、コマンド行のソースファイルやクラスを走査することで、どのような注釈が存在しているかを確認し終わると、プロセッサに対して問い合わせを行い、それらのプロセッサがどの注釈を処理できるのかを確認します。一致するものが見つかった場合、そのプロセッサが呼び出されます。各プロセッサは、自身が処理する注釈を「要求」できます。その場合、それらの注釈に対する別のプロセッサを見つける試みは行われません。すべての注釈が要求されてしまうと、コンパイラはそれ以上プロセッサの検索を行いません。 -.LP -.LP -いずれかのプロセッサによって新しいソースファイルが生成されると、注釈処理の 2 回目のラウンドが開始されます。新しく生成されたすべてのソースファイルが走査され、前回と同様に注釈が処理されます。以前のラウンドで呼び出されたプロセッサはすべて、後続のどのラウンドでも呼び出されます。これが、新しいソースファイルが生成されなくなるまで続きます。 -.LP -.LP -あるラウンドで新しいソースファイルが生成されなかった場合、注釈プロセッサがあと 1 回だけ呼び出され、必要な処理を実行する機会が与えられます。最後に、\f3\-proc:only\fP オプションが使用されないかぎり、コンパイラは、元のソースファイルと生成されたすべてのソースファイルをコンパイルします。 -.LP -.SS -暗黙的にロードされたソースファイル -.LP -.LP -コンパイラは、一連のソースファイルをコンパイルする際に、別のソースファイルを暗黙的にロードすることが必要な場合があります (「型の検索」を参照)。そのようなファイルは、現時点では注釈処理の対象になりません。デフォルトでは、注釈処理が実行され、かつ暗黙的にロードされたソースファイルが 1 つでもコンパイルされた場合にコンパイラは警告を発行します。この警告を抑制する方法については、\-implicit オプションを参照してください。 -.LP -.SH "型の検索" -.LP -.LP -ソースファイルをコンパイルする場合、コマンド行で指定したソースファイルに型の定義が見つからないとき、コンパイラは通常、その型に関する情報を必要とします。コンパイラは、ソースファイルで使われているクラスまたはインタフェース、拡張されているクラスまたはインタフェース、あるいは実装されているクラスまたはインタフェースすべてについて、型の情報を必要とします。これには、ソースファイルで明示的には言及されていなくても、継承を通じて情報を提供するクラスとインタフェースも含まれます。 -.LP -.LP -たとえば、\f3java.applet.Applet\fP をサブクラスにした場合、\f3アプレットの\fP祖先のクラス(\f3java.awt.Panel\fP、\f3java.awt.Container\fP、\f3java.awt.Component\fP、\f3java.lang.Object\fP)を使用していることになります。 -.LP -.LP -コンパイラは、型の情報が必要になると、その型を定義しているソースファイルまたはクラスファイルを探します。まず、ブートストラップクラスと拡張機能クラスを検索し、続いてユーザークラスパス (デフォルトではカレントディレクトリ) を検索します。ユーザークラスパスは、\f3CLASSPATH\fP 環境変数を設定して定義するか、または \f3\-classpath\fP コマンド行オプションを使って設定します。詳細は、「クラスパスの設定」を参照してください。 -.LP -.LP -\-sourcepath オプションが指定されている場合、コンパイラは、指定されたパスからソースファイルを検索します。それ以外の場合は、ユーザークラスパスからクラスファイルとソースファイルの両方を検索します。 -.LP -.LP -\f3\-bootclasspath\fP オプションと \f3\-extdirs\fP オプションを使うと、別のブートストラップクラスや拡張機能クラスを指定できます。このあとの「クロスコンパイルオプション」を参照してください。 -.LP -.LP -型の検索に成功したときに得られる結果は、クラスファイル、ソースファイル、またはその両方である場合があります。両方が見つかった場合、そのどちらを使用すべきかを \-Xprefer オプションでコンパイラに指示できます。\f3newer\fP が指定された場合、コンパイラは 2 つのファイルの新しい方を使用します。\f3source\fP が指定された場合、コンパイラはソースファイルを使用します。デフォルトは \f3newer\fP です。 -.LP -.LP -型の検索自体によって、または \f3\-Xprefer\fP が設定された結果として必要な型のソースファイルが見つかった場合、コンパイラはそのソースファイルを読み取り、必要な情報を取得します。さらに、コンパイラはデフォルトで、そのソースファイルのコンパイルも行います。\-implicit オプションを使えばその動作を指定できます。\f3none\fP を指定した場合、そのソースファイルのクラスファイルは生成されません。\f3class\fP を指定した場合、そのソースファイルのクラスファイルが生成されます。 -.LP -.LP -コンパイラは、注釈処理の完了後に、ある型情報の必要性を認識しない場合があります。その型情報があるソースファイル内に見つかり、かつ \f3\-implicit\fP オプションが指定されていない場合は、そのファイルが注釈処理の対象とならずにコンパイルされることを、コンパイラがユーザーに警告します。この警告を無効にするには、(そのファイルが注釈処理の対象となるように) そのファイルをコマンド行に指定するか、あるいはそのようなソースファイルに対してクラスファイルを生成すべきかどうかを \f3\-implicit\fP オプションを使って指定します。 -.LP -.SH "プログラマティックインタフェース" -.LP -.LP -\f3javac\fP は、 \f2javax.tools\fP パッケージ内のクラスとインタフェースによって定義される新しい Java Compiler API をサポートします。 -.LP -.SS -例 -.LP -.LP -コマンド行から指定された引数を使ってコンパイルを実行するには、次のようなコードを使用します。 -.LP -.nf -\f3 -.fl -JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); -.fl -int rc = javac.run(null, null, null, args); -.fl -\fP -.fi - -.LP -.LP -この場合、標準出力ストリームにすべての診断メッセージが書き出され、コマンド行から呼び出された \f3javac\fP が返すのと同じ終了コードが返されます。 -.LP -.LP -\f2javax.tools.JavaCompiler\fP インタフェース上のほかのメソッドを使えば、診断メッセージの処理やファイルの読み取り元/書き込み先の制御などを行えます。 -.LP -.SS -旧式のインタフェース -.LP -.LP -\f3注:\fP この API は、下位互換性を確保するためだけに残されています。新しいコードでは、必ず前述の Java Compiler API を使用してください。 -.LP -.LP -\f2com.sun.tools.javac.Main\fP クラスには、プログラム内からコンパイラを呼び出すための static メソッドが 2 つ用意されています。それらを次に示します。 -.LP -.nf -\f3 -.fl -public static int compile(String[] args); -.fl -public static int compile(String[] args, PrintWriter out); -.fl -\fP -.fi - -.LP -.LP -\f2args\fP パラメータは、javac プログラムに通常渡される任意のコマンド行引数を表しています。その概要については、前出の「形式」節を参照してください。 -.LP -.LP -\f2out\fP パラメータは、コンパイラの診断メッセージの出力先を示します。 -.LP -.LP -戻り値は、\f3javac\fP の終了値と同じです。 -.LP -.LP -名前が \f2com.sun.tools.javac\fP で始まるパッケージ (非公式には \f2com.sun.tools.javac\fP のサブパッケージとして知られる) に含まれるその他のクラスやメソッドは、どれも完全に内部用であり、いつでも変更される可能性があります。 -.LP -.SH "例" -.LP -.SS -簡単なプログラムのコンパイル -.LP -.LP -\f2Hello.java\fP というソースファイルで、\f3greetings.Hello\fP という名前のクラスを定義しているとします。 \f2greetings\fP ディレクトリは、ソースファイルとクラスファイルの両方があるパッケージディレクトリで、現在のディレクトリのすぐ下にあります。このため、この例では、デフォルトのユーザークラスパスを使用できます。また、\f3\-d\fP を使って別の出力先ディレクトリを指定する必要もありません。 -.LP -.nf -\f3 -.fl -% \fP\f3ls\fP -.fl -greetings/ -.fl -% \f3ls greetings\fP -.fl -Hello.java -.fl -% \f3cat greetings/Hello.java\fP -.fl -package greetings; -.fl - -.fl -public class Hello { -.fl - public static void main(String[] args) { -.fl - for (int i=0; i < args.length; i++) { -.fl - System.out.println("Hello " + args[i]); -.fl - } -.fl - } -.fl -} -.fl -% \f3javac greetings/Hello.java\fP -.fl -% \f3ls greetings\fP -.fl -Hello.class Hello.java -.fl -% \f3java greetings.Hello World Universe Everyone\fP -.fl -Hello World -.fl -Hello Universe -.fl -Hello Everyone -.fl -.fi - -.LP -.SS -複数のソースファイルのコンパイル -.LP -.LP -次の例では、パッケージ \f2greetings\fP 内のすべてのソースファイルをコンパイルします。 -.LP -.nf -\f3 -.fl -% \fP\f3ls\fP -.fl -greetings/ -.fl -% \f3ls greetings\fP -.fl -Aloha.java GutenTag.java Hello.java Hi.java -.fl -% \f3javac greetings/*.java\fP -.fl -% \f3ls greetings\fP -.fl -Aloha.class GutenTag.class Hello.class Hi.class -.fl -Aloha.java GutenTag.java Hello.java Hi.java -.fl -.fi - -.LP -.SS -ユーザークラスパスの指定 -.LP -.LP -上の例のソースファイルのうち 1 つを変更し、変更後のファイルを再コンパイルするとします。 -.LP -.nf -\f3 -.fl -% \fP\f3pwd\fP -.fl -/examples -.fl -% \f3javac greetings/Hi.java\fP -.fl -.fi - -.LP -.LP -\f2greetings.Hi\fP は、 \f2greetings\fP パッケージ内のほかのクラスを参照しているため、コンパイラはこれらのクラスを探す必要があります。上の例では、デフォルトのユーザークラスパスが、パッケージディレクトリを含むディレクトリと同じであるため、コンパイルは正常に実行されます。ただし、現在どのディレクトリにいるかに関係なく、このファイルを再コンパイルする場合は、ユーザークラスパスに \f2/examples\fP を追加する必要があります。ユーザークラスパスにエントリを追加するには、\f3CLASSPATH\fP を設定する方法もありますが、ここでは \f3\-classpath\fP オプションを使うことにします。 -.LP -.nf -\f3 -.fl -% \fP\f3javac \-classpath /examples /examples/greetings/Hi.java\fP -.fl -.fi - -.LP -.LP -再度 \f2greetings.Hi\fP を変更してバナーユーティリティーを使うようにした場合は、このバナーユーティリティーもユーザークラスパスを通じてアクセスできるようになっている必要があります。 -.LP -.nf -\f3 -.fl -% \fP\f3javac \-classpath /examples:/lib/Banners.jar \\ -.fl - /examples/greetings/Hi.java\fP -.fl -.fi - -.LP -.LP -\f2greetings\fP 内のクラスを実行するには、 \f2greetings\fP と、それが使うクラスの両方にアクセスできる必要があります。 -.LP -.nf -\f3 -.fl -% \fP\f3java \-classpath /examples:/lib/Banners.jar greetings.Hi\fP -.fl -.fi - -.LP -.SS -ソースファイルとクラスファイルの分離 -.LP -.LP -特に大規模プロジェクトの場合は、ソースファイルとクラスファイルを別々のディレクトリに置くと便利なことがあります。クラスファイルの出力先を別に指定するには、\f3\-d\fP を使います。ソースファイルはユーザークラスパスにはないので、\f3\-sourcepath\fP を使って、コンパイラがソースファイルを見つけることができるようにします。 -.LP -.nf -\f3 -.fl -% \fP\f3ls\fP -.fl -classes/ lib/ src/ -.fl -% \f3ls src\fP -.fl -farewells/ -.fl -% \f3ls src/farewells\fP -.fl -Base.java GoodBye.java -.fl -% \f3ls lib\fP -.fl -Banners.jar -.fl -% \f3ls classes\fP -.fl -% \f3javac \-sourcepath src \-classpath classes:lib/Banners.jar \\ -.fl - src/farewells/GoodBye.java \-d classes\fP -.fl -% \f3ls classes\fP -.fl -farewells/ -.fl -% \f3ls classes/farewells\fP -.fl -Base.class GoodBye.class -.fl -.fi - -.LP -.LP -\f3注:\fP コマンド行では \f2src/farewells/Base.java\fP を指定していませんが、このファイルもコンパイラによってコンパイルされています。自動コンパイルを監視するには、\f3\-verbose\fP オプションを使います。 -.LP -.SS -クロスコンパイルの例 -.LP -.LP -ここでは、\f3javac\fP を使って、1.6 VM 上で実行するコードをコンパイルします。 -.LP -.nf -\f3 -.fl -% \fP\f3javac \-source 1.6 \-target 1.6 \-bootclasspath jdk1.6.0/lib/rt.jar \\ -.fl - \-extdirs "" OldCode.java\fP -.fl -.fi - -.LP -.LP -\f2\-source 1.6\fP オプションにより、 \f2OldCode.java\fP のコンパイルにはバージョン 1.6 (または 6) の Java プログラミング言語が使用されます。\f3\-target 1.6\fP オプションにより、1.6 VM と互換性のあるクラスファイルが生成されます。ほとんどの場合、\f3\-target\fP オプションの値は \f3\-source\fP オプションの値になります。この例では、\f3\-target\fP オプションを省略できます。 -.LP -.LP -\f3\-bootclasspath\fP オプションを使用して、適切なバージョンのブートストラップクラス ( \f2rt.jar\fP ライブラリ) を指定する必要があります。指定しない場合は、コンパイラによって次の警告が生成されます。 -.LP -.nf -\f3 -.fl -% \fP\f3javac \-source 1.6 OldCode.java\fP -.fl -warning: [options] bootstrap class path not set in conjunction with \-source 1.6 -.fl -.fi - -.LP -.LP -適切なバージョンのブートストラップクラスを指定しない場合、コンパイラは古い言語仕様 (この例では、バージョン 1.6 の Java プログラミング言語) を新しいブートストラップクラスと組み合わせて使用します。その結果、存在しないメソッドへの参照が含まれていることがあるため、クラスファイルが古いプラットフォーム (この場合は Java SE 6) で動作しない可能性があります。 -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -.na -\f2「The javac Guide」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javac/index.html -.TP 2 -o -「java(1) \- Java アプリケーション起動ツール」 -.TP 2 -o -「jdb(1) \- Java デバッガ」 -.TP 2 -o -「javah(1) \- C ヘッダーとスタブファイルジェネレータ」 -.TP 2 -o -「javap(1) \- クラスファイル逆アセンブラ」 -.TP 2 -o -「javadoc(1) \- Java API ドキュメントジェネレータ」 -.TP 2 -o -「jar(1) \- JAR アーカイブツール」 -.TP 2 -o -.na -\f2「Java 拡張機能フレームワーク」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html -.RE - -.LP +@interface Anno { } +@Anno +class AnnosWithoutProcessors { } +.fi +.if n \{\ +.RE +.\} +次のコマンドは、注釈プロセッサ\fIAnnoProc\fRをコンパイルし、この注釈プロセッサをソース・ファイル\fIAnnosWithoutProcessors\&.java\fRに対して実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac AnnoProc\&.java +javac \-cp \&. \-Xlint:processing \-processor AnnoProc \-proc:only AnnosWithoutProcessors\&.java +.fi +.if n \{\ +.RE +.\} +コンパイラがソース・ファイル\fIAnnosWithoutProcessors\&.java\fRに対して注釈プロセッサを実行すると、次の警告が生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +warning: [processing] No processor claimed any of these annotations: Anno + +.fi +.if n \{\ +.RE +.\} +この問題を解決するために、クラス\fIAnnosWithoutProcessors\fRで定義および使用される注釈の名前を、\fIAnno\fRから\fINotAnno\fRに変更できます。 +.RE +.PP +rawtypes +.RS 4 +raw型に対する未検査操作について警告します。次の文では、\fIrawtypes\fR警告が生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +void countElements(List l) { \&.\&.\&. } +.fi +.if n \{\ +.RE +.\} +次の例では、\fIrawtypes\fR警告は生成されません。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +void countElements(List<?> l) { \&.\&.\&. } +.fi +.if n \{\ +.RE +.\} +\fIList\fRはraw型です。ただし、\fIList<?>\fRは、アンバウンド形式のワイルドカードのパラメータ化された型です。\fIList\fRはパラメータ化されたインタフェースであるため、常にその型引数を指定します。この例では、\fIList\fRの仮引数はアンバウンド形式のワイルドカード(\fI?\fR)を使用してその仮型パラメータとして指定されます。つまり、\fIcountElements\fRメソッドは\fIList\fRインタフェースのどのインスタンス化も受け付けることができます。 +.RE +.PP +Serial +.RS 4 +直列化可能クラスに\fIserialVersionUID\fR定義がないことを警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +public class PersistentTime implements Serializable +{ + private Date time; + + public PersistentTime() { + time = Calendar\&.getInstance()\&.getTime(); + } + + public Date getTime() { + return time; + } +} +.fi +.if n \{\ +.RE +.\} +コンパイラは次の警告を生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +warning: [serial] serializable class PersistentTime has no definition of +serialVersionUID +.fi +.if n \{\ +.RE +.\} +直列化可能クラスが\fIserialVersionUID\fRという名前のフィールドを明示的に宣言しない場合、直列化ランタイム環境では、「Javaオブジェクト直列化仕様」で説明されているように、クラスの様々な側面に基づいて、クラスの\fIserialVersionUID\fRのデフォルト値を計算します。ただし、すべての直列化可能クラスが\fIserialVersionUID\fR値を明示的に宣言することを強くお薦めします。 これは、\fIserialVersionUID\fR値を計算するデフォルトのプロセスが、コンパイラの実装によって異なる可能性のあるクラスの詳細にきわめて影響を受けやすく、その結果、直列化復元中に予期しない\fIInvalidClassExceptions\fRが発生する可能性があるためです。Javaコンパイラの実装が異なっても\fIserialVersionUID\fR値の一貫性を確保にするには、直列化可能クラスが\fIserialVersionUID\fR値を明示的に宣言する必要があります。 +.RE +.PP +static +.RS 4 +staticの使用に関する問題について警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +class XLintStatic { + static void m1() { } + void m2() { this\&.m1(); } +} +.fi +.if n \{\ +.RE +.\} +コンパイラは次の警告を生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +warning: [static] static method should be qualified by type name, +XLintStatic, instead of by an expression +.fi +.if n \{\ +.RE +.\} +この問題を解決するために、次のように\fIstatic\fRメソッド\fIm1\fRを呼び出すことができます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +XLintStatic\&.m1(); +.fi +.if n \{\ +.RE +.\} +あるいは、\fIstatic\fRキーワードをメソッド\fIm1\fRの宣言から削除することもできます。 +.RE +.PP +try +.RS 4 +try\-with\-resources文を含む、\fItry\fRブロックの使用に関する問題について警告します。たとえば、\fItry\fRブロックで宣言されたリソース\fIac\fRが使用されないために、次の文に対して警告が生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +try ( AutoCloseable ac = getResource() ) { // do nothing} +.fi +.if n \{\ +.RE +.\} +.RE +.PP +unchecked +.RS 4 +Java言語仕様で指定されている未検査変換警告の詳細を示します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +List l = new ArrayList<Number>(); +List<String> ls = l; // unchecked warning +.fi +.if n \{\ +.RE +.\} +型の消去中に、型\fIArrayList<Number>\fRおよび\fIList<String>\fRは、それぞれ\fIArrayList\fRおよび\fIList\fRになります。 +.sp +\fIls\fRコマンドには、パラメータ化された型\fIList<String>\fRが指定されています。\fIl\fRによって参照される\fIList\fRが\fIls\fRに割り当てられた場合、コンパイラは未検査警告を生成します。コンパイル時に、コンパイラおよびJVMは、\fIl\fRが\fIList<String>\fR型を参照するかどうかを判別できません。この場合、\fIl\fRは、\fIList<String>\fR型を参照しません。その結果、ヒープ汚染が発生します。 +.sp +ヒープ汚染状態が発生するのは、\fIList\fRオブジェクト\fIl\fR +(そのstatic型は\fIList<Number>\fR)が別の\fIList\fRオブジェクト\fIls\fR +(異なるstatic型\fIList<String>\fRを持つ)に代入される場合です。しかし、コンパイラではこの代入をいまだに許可しています。総称をサポートしないJava SEのリリースとの下位互換性を確保するために、この代入を許可する必要があります。型消去により、\fIList<Number>\fRおよび\fIList<String>\fRは、両方とも\fIList\fRになります。その結果、コンパイラはオブジェクト\fIl\fR +(\fIList\fRというraw型を持つ)をオブジェクト\fIls\fRに代入することを許可します。 +.RE +.PP +varargs +.RS 4 +可変引数(\fIvarargs\fR)メソッド、特に非具象化可能引数を含むものの使用が安全でないことを警告します。たとえば、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +public class ArrayBuilder { + public static <T> void addToList (List<T> listArg, T\&.\&.\&. elements) { + for (T x : elements) { + listArg\&.add(x); + } + } +} +.fi +.if n \{\ +.RE +.\} +\fB注意:\fR +非具象化可能型は、型情報が実行時に完全に使用不可能な型です。 +.sp +コンパイラは、メソッド\fIArrayBuilder\&.addToList\fRの定義に関する次の警告を生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +warning: [varargs] Possible heap pollution from parameterized vararg type T +.fi +.if n \{\ +.RE +.\} +コンパイラは、varargsメソッドを検出すると、\fIvarargs\fRの仮パラメータを配列に変換します。しかし、Javaプログラミング言語では、パラメータ化された型の配列の作成を許可していません。メソッド\fIArrayBuilder\&.addToList\fRでは、コンパイラは\fIvarargs\fRの仮パラメータ\fIT\&.\&.\&.\fR要素を仮パラメータ\fIT[]\fR要素(配列)に変換します。しかし、型消去により、コンパイラは\fIvarargs\fRの仮パラメータを\fIObject[]\fR要素に変換します。その結果、ヒープ汚染が発生する可能性があります。 +.RE +.SH "コマンドライン引数ファイル" +.PP +\fIjavac\fRコマンドを短くしたり簡潔にしたりするために、\fIjavac\fRコマンドに対する引数(\fI\-J\fRオプションを除く)を含む1つ以上のファイルを指定することができます。これにより、どのオペレーティング・システム上でも、任意の長さの\fIjavac\fRコマンドを作成できます。 +.PP +引数ファイルには、\fIjavac\fRのオプションとソース・ファイル名を自由に組み合せて記述できます。ファイル内の引数は、空白または改行文字で区切ることができます。ファイル名に埋め込まれた空白がある場合、ファイル名全体を二重引用符で囲みます。 +.PP +引数ファイル内のファイル名は、引数ファイルの位置ではなく、現在のディレクトリに相対的となります。これらのリストでは、ワイルドカード(*)は使用できません(たとえば、\fI*\&.java\fRとは指定できません)。アットマーク(@)を使用したファイルの再帰的な解釈はサポートされていません。また、\fI\-J\fRオプションもサポートされていません。このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 +.PP +\fIjavac\fRコマンドを実行するときに、各引数ファイルのパスと名前の先頭にアットマーク(@)文字を付けて渡します。\fIjavac\fRコマンドは、アットマーク(@)で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +.PP +\fBExample 1\fR, 単一の引数ファイル +.RS 4 +\fIargfile\fRという名前の単一の引数ファイルを使用して、すべての\fIjavac\fR引数を格納する場合は、次のように指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac @argfile +.fi +.if n \{\ +.RE +.\} +この引数ファイルには、例2で示されている両方のファイルの内容を入れることができます。 +.RE +.PP +\fBExample 2\fR, 2つの引数ファイル +.RS 4 +\fIjavac\fRオプション用とソース・ファイル名用に、2つの引数ファイルを作成できます。次のリストには、行の継続文字はありません。 +.sp +次を含むoptionsという名前のファイルを作成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-d classes +\-g +\-sourcepath /java/pubs/ws/1\&.3/src/share/classes +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +.fi +.if n \{\ +.RE +.\} +次を含むclassesという名前のファイルを作成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +MyClass1\&.java +MyClass2\&.java +MyClass3\&.java +.fi +.if n \{\ +.RE +.\} +それから、次のように\fIjavac\fRコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac @options @classes +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, パスを使用した引数ファイル +.RS 4 +引数ファイルはパスを指定できますが、ファイル内のすべてのファイル名は、(\fIpath1\fRや\fIpath2\fRではなく)次のように現在の作業ディレクトリに相対的となります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac @path1/options @path2/classes +.fi +.if n \{\ +.RE +.\} +.RE +.SH "注釈処理" +.PP +\fIjavac\fRコマンドが注釈処理を直接サポートしているため、独立した注釈処理コマンドである\fIapt\fRを使用する必要がなくなりました。 +.PP +注釈プロセッサのAPIは、\fIjavax\&.annotation\&.processing\fRおよび\fIjavax\&.lang\&.model\fRパッケージとそのサブパッケージ内に定義されています。 +.SS "注釈処理を行う方法" +.PP +\fI\-proc:none\fRオプションによって注釈処理が無効化されない限り、コンパイラは使用可能なすべての注釈プロセッサを検索します。検索パスは、\fI\-processorpath\fRオプションを使用して指定できます。パスを指定しない場合、ユーザー・クラス・パスが使用されます。プロセッサの検索は、検索パス上の\fIMETA\-INF/services/javax\&.annotation\&.processing\fR\&.Processorという名前のサービス・プロバイダ構成ファイルに基づいて行われます。このようなファイルには、使用するすべての注釈プロセッサの名前を、1行に1つずつ含めてください。また、別の方法として、\fI\-processor\fRオプションを使用してプロセッサを明示的に指定することもできます。 +.PP +コンパイラは、コマンドラインのソース・ファイルやクラスを走査することで、どのような注釈が存在しているかを確認し終わると、プロセッサに対して問合せを行い、それらのプロセッサがどの注釈を処理できるのかを確認します。一致するものが見つかった場合、そのプロセッサが呼び出されます。各プロセッサは、自身が処理する注釈を要求できます。その場合、それらの注釈に対する別のプロセッサを見つける試みは行われません。すべての注釈が要求されると、コンパイラはそれ以上プロセッサの検索を行いません。 +.PP +いずれかのプロセッサによって新しいソース・ファイルが生成されると、注釈処理の2回目のラウンドが開始されます。新しく生成されたすべてのソース・ファイルがスキャンされ、前回と同様に注釈が処理されます。以前のラウンドで呼び出されたプロセッサはすべて、後続のどのラウンドでも呼び出されます。これが、新しいソース・ファイルが生成されなくなるまで続きます。 +.PP +あるラウンドで新しいソース・ファイルが生成されなかった場合、注釈プロセッサがあと1回のみ呼び出され、残りの処理を実行する機会が与えられます。最後に、\fI\-proc:only\fRオプションが使用されないかぎり、コンパイラは、元のソース・ファイルと生成されたすべてのソース・ファイルをコンパイルします。 +.SS "暗黙的にロードされたソース・ファイル" +.PP +コンパイラは、一連のソース・ファイルをコンパイルする際に、別のソース・ファイルを暗黙的にロードすることが必要な場合があります。型の検索を参照してください。そのようなファイルは、現時点では注釈処理の対象になりません。デフォルトでは、注釈処理が実行され、かつ暗黙的にロードされた任意のソース・ファイルがコンパイルされた場合、コンパイラは警告を発行します。\fI\-implicit\fRオプションでは、警告を抑制する方法が提供されます。 +.SH "型の検索" +.PP +ソース・ファイルをコンパイルするために、コンパイラは通常、型に関する情報を必要としますが、その型の定義はコマンドラインで指定したソース・ファイルにありません。コンパイラは、ソース・ファイルで使用されているクラスまたはインタフェース、拡張されているクラスまたはインタフェース、あるいは実装されているクラスまたはインタフェースすべてについて、型の情報を必要とします。これには、ソース・ファイルで明示的には言及されていなくても、継承を通じて情報を提供するクラスとインタフェースも含まれます。 +.PP +たとえば、サブクラス\fIjava\&.applet\&.Applet\fRを作成すると、\fIアプレット\fRの祖先のクラス(\fIjava\&.awt\&.Panel\fR、\fIjava\&.awt\&.Container\fR、\fIjava\&.awt\&.Component\fRおよび\fIjava\&.lang\&.Object\fR)を使用していることにもなります。 +.PP +コンパイラは、型の情報が必要になると、その型を定義しているソース・ファイルまたはクラス・ファイルを検索します。まず、ブートストラップ・クラスと拡張機能クラスを検索し、続いてユーザー・クラス・パス(デフォルトでは現在のディレクトリ)を検索します。ユーザー・クラス・パスは、\fICLASSPATH\fR環境変数を設定して定義するか、または\fI\-classpath\fRオプションを使用して定義します。 +.PP +\fI\-sourcepath\fRオプションが設定されている場合、コンパイラは、指定されたパスからソース・ファイルを検索します。それ以外の場合、コンパイラは、ユーザー・クラス・パスからクラス・ファイルとソース・ファイルの両方を検索します。 +.PP +\fI\-bootclasspath\fRオプションおよび\fI\-extdirs\fRオプションを使用して、別のブートストラップ・クラスや拡張機能クラスを指定できます。クロスコンパイル・オプションを参照してください。 +.PP +型の検索に成功したときに得られる結果は、クラス・ファイル、ソース・ファイル、またはその両方である場合があります。両方が見つかった場合、そのどちらを使用するかを\fI\-Xprefer\fRオプションでコンパイラに指示できます。\fInewer\fRが指定された場合、コンパイラは2つのファイルのうち新しい方を使用します。\fIsource\fRが指定された場合、コンパイラはソース・ファイルを使用します。デフォルトは\fInewer\fRです。 +.PP +型の検索自体によって、または\fI\-Xprefer\fRオプションが設定された結果として必要な型のソース・ファイルが見つかった場合、コンパイラはそのソース・ファイルを読み取り、必要な情報を取得します。デフォルトでは、コンパイラはソース・ファイルのコンパイルも行います。\fI\-implicit\fRオプションを使用してその動作を指定できます。\fInone\fRが指定された場合、ソース・ファイルに対してクラス・ファイルは生成されません。\fIclass\fRが指定された場合、ソース・ファイルに対してクラス・ファイルが生成されます。 +.PP +コンパイラは、注釈処理が完了するまで、ある型情報の必要性を認識しない場合があります。型情報がソース・ファイル内に見つかり、かつ\fI\-implicit\fRオプションが指定されていない場合、コンパイラによって、そのファイルが注釈処理の対象とならずにコンパイルされることが警告されます。この警告を無効にするには、(そのファイルが注釈処理の対象となるように)そのファイルをコマンドラインに指定するか、あるいはそのようなソース・ファイルに対してクラス・ファイルを生成する必要があるかどうかを\fI\-implicit\fRオプションを使用して指定します。 +.SH "プログラマティック・インタフェース" +.PP +\fIjavac\fRコマンドは、\fIjavax\&.tools\fRパッケージ内のクラスとインタフェースによって定義される新しいJava Compiler APIをサポートします。 +.SS "例" +.PP +コマンドライン引数を指定するようにコンパイルするには、次の構文を使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +JavaCompiler javac = ToolProvider\&.getSystemJavaCompiler(); +JavaCompiler javac = ToolProvider\&.getSystemJavaCompiler(); +.fi +.if n \{\ +.RE +.\} +.PP +例では、診断を標準出力ストリームに書き込み、コマンドラインからの呼出し時に\fIjavac\fRが指定する終了コードを返します。 +.PP +\fIjavax\&.tools\&.JavaCompiler\fRインタフェースの他のメソッドを使用すると、診断の処理やファイルの読取り元/書込み先の制御などを行うことができます。 +.SS "旧式のインタフェース" +.PP +\fB注意:\fR +このAPIは、下位互換性のためにのみ保持されています。すべての新しいコードは、新しいJava Compiler APIを使用する必要があります。 +.PP +次のように、\fIcom\&.sun\&.tools\&.javac\&.Main\fRクラスには、プログラムからコンパイラを呼び出すためのstaticメソッドが2つ用意されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +public static int compile(String[] args); +public static int compile(String[] args, PrintWriter out); +.fi +.if n \{\ +.RE +.\} +.PP +\fIargs\fRパラメータは、通常コンパイラに渡される任意のコマンドライン引数を表しています。 +.PP +\fIout\fRパラメータは、コンパイラの診断出力の宛先を示します。 +.PP +\fIreturn\fR値は、\fIjavac\fRの\fIexit\fR値と同じです。 +.PP +\fB注意:\fR +名前が\fIcom\&.sun\&.tools\&.javac\fRで始まるパッケージ(\fIcom\&.sun\&.tools\&.javac\fRのサブパッケージ)で検出される他のすべてのクラスおよびメソッドは、完全に内部用であり、いつでも変更される可能性があります。 +.SH "例" +.PP +\fBExample 1\fR, 簡単なプログラムのコンパイル +.RS 4 +この例では、greetingsディレクトリで\fIHello\&.java\fRソース・ファイルをコンパイルする方法を示しています。\fIHello\&.java\fRで定義されたクラスは、\fIgreetings\&.Hello\fRと呼ばれます。greetingsディレクトリは、ソース・ファイルとクラス・ファイルの両方があるパッケージ・ディレクトリで、現在のディレクトリのすぐ下にあります。これにより、デフォルトのユーザー・クラス・パスを使用できるようになります。また、\fI\-d\fRオプションを使用して別の出力先ディレクトリを指定する必要もありません。 +.sp +\fIHello\&.java\fR内のソース・コードは次のとおりです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +package greetings; + +public class Hello { + public static void main(String[] args) { + for (int i=0; i < args\&.length; i++) { + System\&.out\&.println("Hello " + args[i]); + } + } +} +.fi +.if n \{\ +.RE +.\} +greetings\&.Helloのコンパイル: +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac greetings/Hello\&.java +.fi +.if n \{\ +.RE +.\} +\fIgreetings\&.Hello\fRの実行: +.sp +.if n \{\ +.RS 4 +.\} +.nf +java greetings\&.Hello World Universe Everyone +Hello World +Hello Universe +Hello Everyone +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, 複数のソース・ファイルのコンパイル +.RS 4 +この例では、\fIgreetings\fRパッケージのソース・ファイル\fIAloha\&.java\fR、\fIGutenTag\&.java\fR、\fIHello\&.java\fRおよび\fIHi\&.java\fRをコンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +% javac greetings/*\&.java +% ls greetings +Aloha\&.class GutenTag\&.class Hello\&.class Hi\&.class +Aloha\&.java GutenTag\&.java Hello\&.java Hi\&.java +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, ユーザー・クラス・パスの指定 +.RS 4 +前述の例のソース・ファイルのうち1つを変更した後に、そのファイルを再コンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +pwd +/examples +javac greetings/Hi\&.java +.fi +.if n \{\ +.RE +.\} +\fIgreetings\&.Hi\fRは\fIgreetings\fRパッケージ内の他のクラスを参照しているため、コンパイラはこれらの他のクラスを探す必要があります。デフォルトのユーザー・クラス・パスはパッケージ・ディレクトリを含むディレクトリであるため、前述の例は動作します。現在のディレクトリを気にせずにこのファイルを再コンパイルする場合、\fICLASSPATH\fRを設定して、ユーザー・クラス・パスに例のディレクトリを追加します。この例では、\fI\-classpath\fRオプションを使用しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-classpath /examples /examples/greetings/Hi\&.java +.fi +.if n \{\ +.RE +.\} +\fIgreetings\&.Hi\fRを変更してバナー・ユーティリティを使用するようにした場合、 そのユーティリティもユーザー・クラス・パスを通じてアクセスできるようになっている必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-classpath /examples:/lib/Banners\&.jar \e + /examples/greetings/Hi\&.java +.fi +.if n \{\ +.RE +.\} +\fIgreetings\fRパッケージでクラスを実行するには、プログラムは\fIgreetings\fRパッケージ、および\fIgreetings\fRクラスが使用するクラスにアクセスする必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java \-classpath /examples:/lib/Banners\&.jar greetings\&.Hi +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 4\fR, ソース・ファイルとクラス・ファイルの分離 +.RS 4 +次の例では、\fIjavac\fRを使用して、JVM 1\&.6上で実行するコードをコンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-source 1\&.6 \-target 1\&.6 \-bootclasspath jdk1\&.6\&.0/lib/rt\&.jar \e +\-extdirs "" OldCode\&.java +.fi +.if n \{\ +.RE +.\} +\fI\-source 1\&.6\fRオプションにより、\fIOldCode\&.java\fRのコンパイルにはリリース1\&.6(または6)のJavaプログラミング言語が使用されます。\fI\-target 1\&.6\fRオプションにより、JVM 1\&.6と互換性のあるクラス・ファイルが生成されます。ほとんどの場合、\fI\-target\fRオプションの値は\fI\-source\fRオプションの値になります。この例では、\fI\-target\fRオプションを省略できます。 +.sp +\fI\-bootclasspath\fRオプションを使用して、適切なバージョンのブートストラップ・クラス(\fIrt\&.jar\fRライブラリ)を指定する必要があります。指定しない場合は、コンパイラによって次の警告が生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-source 1\&.6 OldCode\&.java +warning: [options] bootstrap class path not set in conjunction with +\-source 1\&.6 +.fi +.if n \{\ +.RE +.\} +適切なバージョンのブートストラップ・クラスを指定しない場合、コンパイラは古い言語仕様(この例では、バージョン1\&.6のJavaプログラミング言語)を新しいブートストラップ・クラスと組み合せて使用します。その結果、存在しないメソッドへの参照が含まれていることがあるため、クラス・ファイルが古いプラットフォーム(この場合はJava SE 6)で動作しない可能性があります。 +.RE +.PP +\fBExample 5\fR, クロス・コンパイル +.RS 4 +この例では、\fIjavac\fRを使用して、JVM 1\&.6上で実行するコードをコンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-source 1\&.6 \-target 1\&.6 \-bootclasspath jdk1\&.6\&.0/lib/rt\&.jar \e + \-extdirs "" OldCode\&.java +.fi +.if n \{\ +.RE +.\} +The\fI \-source 1\&.6\fRオプションにより、OldCode\&.javaのコンパイルにはリリース1\&.6(または6)のJavaプログラミング言語が使用されます。\fI\-target 1\&.6\fRオプションにより、JVM 1\&.6と互換性のあるクラス・ファイルが生成されます。ほとんどの場合、\fI\-target\fRの値は\fI\-source\fRの値になります。この例では、\fI\-target\fRオプションは省略されます。 +.sp +\fI\-bootclasspath\fRオプションを使用して、適切なバージョンのブートストラップ・クラス(\fIrt\&.jar\fRライブラリ)を指定する必要があります。指定しない場合は、コンパイラによって次の警告が生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javac \-source 1\&.6 OldCode\&.java +warning: [options] bootstrap class path not set in conjunction with \-source 1\&.6 +.fi +.if n \{\ +.RE +.\} +適切なバージョンのブートストラップ・クラスを指定しない場合、コンパイラは古い言語仕様を新しいブートストラップ・クラスと組み合せて使用します。この組合せは、存在しないメソッドへの参照が含まれていることがあるため、クラス・ファイルが古いプラットフォーム(この場合はJava SE 6)で動作しない可能性があります。この例では、コンパイラはJavaプログラミング言語のリリース1\&.6を使用します。 +.RE +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javadoc(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/javadoc.1 b/jdk/src/solaris/doc/sun/man/man1/ja/javadoc.1 index e6374a63c67..74cdf8f655b 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/javadoc.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/javadoc.1 @@ -1,4236 +1,3839 @@ -." 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 -." 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 javadoc 1 "07 May 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 -引数を指定する順序は任意です。Javadoc ツールでの、処理対象の .java ファイルを決定する方法の詳細については、「ソースファイルの処理」\f2を参照\fPしてください。 -.RS 3 -.TP 3 -options -このドキュメントで説明されているコマンド行オプションです。Javadoc オプションの標準的な使用法については、「使用例」を参照してください。 -.TP 3 -packagenames -スペースで区切られた一連のパッケージ名です。たとえば、 \f2java.lang\ java.lang.reflect\ java.awt のように指定します\fP。ドキュメント化するパッケージを個別に指定する必要があります。ワイルドカードは使用不可です。再帰的処理のためには、\-subpackages を使用します。Javadoc ツールは、\f2\-sourcepath\fP を使用してこれらのパッケージ名を検索します。「1 つ以上のパッケージのドキュメント化」の例を参照してください。 -.TP 3 -sourcefilenames -スペースで区切られた一連のソースファイル名です。 各ファイルは、パスで始まります。アスタリスク (*) などのワイルドカードを含めることができます。Javadoc ツールが処理するのは、ファイル名が「.java」という拡張子で終わり、その拡張子を除いた名前が実際に有効なクラス名であるすべてのファイルです (Java 言語仕様を参照)。したがって、ハイフンを含む名前 ( \f2X\-Buffer\fP など) や、その他の無効な文字を含む名前を付けることによって、それらのファイルをドキュメント化の対象から除外できます。これは、テスト用のファイルや、テンプレートから生成されたファイルの場合に便利です。ソースファイル名の前に指定したパスによって、javadoc がそのファイルを検索する場所が決まります。Javadoc ツールは、これらのソースファイル名を検索するときには \f2\-sourcepath\fP を使用しません。相対パスは現在のディレクトリを起点とするため、 \f2Button.java\fP を渡すことは、 \f2./Button.java\fP を渡すことと同じです。ソースファイル名をフルパスで指定すると、 \f2/home/src/java/awt/Graphics*.java のようになります\fP。 「1 つ以上のクラスのドキュメント化」の例を参照してください。また、「パッケージとクラスのドキュメント化」の例のように、パッケージ名とソースファイル名を混在させることもできます。 -.TP 3 -\-subpackages pkg1:pkg2:... -ソースファイルから指定されたパッケージおよびそのサブパッケージ内に再帰的にドキュメントを生成します。パッケージ名またはソースファイル名を指定する必要はありません。 -.TP 3 -@argfiles -Javadoc オプション、パッケージ名、およびソースファイル名を任意の順序で並べたリストが含まれる 1 つ以上のファイルです。ワイルドカード (*) や \f2\-J\fP オプションは、このファイルの中では指定できません。 -.RE -.SH " 説明" -.LP -\f3Javadoc\fP ツールは、一連の Java ソースファイルにある宣言およびドキュメンテーションコメントを解析し、デフォルトでは public クラス、protected クラス、入れ子にされたクラス (匿名の内部クラスは除く)、インタフェース、コンストラクタ、メソッド、およびフィールドについて説明した一連の HTML ページを生成します。また、API (アプリケーションプログラミングインタフェース) ドキュメントの生成や、一連のソースファイルの実装ドキュメントの生成に使用できます。 -.LP -Javadoc ツールは、パッケージ全体、個々のソースファイル、またはその両方に対して実行できます。パッケージ全体のドキュメント化を行うには、\f2\-subpackages\fP を使用して最上位ディレクトリから下方に再帰的にたどるか、パッケージ名の明示的なリストを渡します。個々ソースファイルに対して javadoc を実行する場合は、一連のソース (.\f2.java\fP) ファイル名を渡します。具体的な例は、このドキュメントの最後に紹介します。次に、Javadoc によるソースファイルの処理について説明します。 -.SS -ソースファイルの処理 -.LP -Javadoc ツールは、末尾が「\f2.java\fP」のファイルを処理するだけでなく、「ソースファイル」で説明するその他のファイルも処理します。個々のソースファイル名を明示的に渡すことによって Javadoc ツールを実行する場合、どの \f2.java\fP ファイルを処理するかを正確に指定できます。ただし、多くの開発者はこの方法では作業しません。パッケージ名を渡すほうが簡単だからです。ソースファイル名を明示的に指定しなくても、Javadoc ツールは 3 つの方法で実行できます。その方法とは、(1) パッケージ名を渡す、(2) \f2\-subpackages\fP を使用する、(3) ソースファイル名でワイルドカードを使用する (\f2*.java\fP)、の 3 つです。これらの場合、Javadoc ツールが「\f2.java\fP」ファイルの処理を行うのは、そのファイルが次のすべての要件を満たす場合だけです。 -.RS 3 -.TP 2 -o -名前から接尾辞「\f2.java\fP」を取り除くと、実際に有効なクラス名になっている (Java 言語仕様の有効な文字を参照) -.TP 2 -o -ソースツリーのルートから相対的なディレクトリパスが、区切り文字をドットに変換すると、実際に有効なパッケージ名になっている -.TP 2 -o -パッケージ文には有効なパッケージ名が含まれる (前項目で指定) -.RE -.LP -\f3リンクの処理\fP \- Javadoc ツールは、処理の実行中に、その実行でドキュメント化されるパッケージ、クラス、およびメンバーの名前に対して、自動的に相互参照リンクを追加します。このようなリンクは、次のような場所に追加されます。 -.RS 3 -.TP 2 -o -宣言 (戻り値の型、引数の型、フィールドの型) -.TP 2 -o -\f2@see\fP タグから生成された [関連項目] セクション -.TP 2 -o -\f2{@link}\fP タグから生成されたインラインテキスト -.TP 2 -o -\f2@throws\fP タグから生成された例外の名前 -.TP 2 -o -インタフェースのメンバーに対する「定義」リンクと、クラスのメンバーに対する「オーバーライド」リンク -.TP 2 -o -パッケージ、クラス、およびメンバーを列挙している概要テーブル -.TP 2 -o -パッケージおよびクラスの継承ツリー -.TP 2 -o -索引 -.RE -.LP -コマンド行で指定しなかったクラスについての既存のテキスト (別に生成したテキスト) に対してハイパーリンクを追加するには、\f2\-link\fP および \f2\-linkoffline\fP オプションを利用できます。 -.LP -\f3その他の処理についての詳細\fP \- Javadoc ツールは、実行するたびに 1 つの完全なドキュメントを作成します。ドキュメントを追加生成することはできません。つまり、Javadoc ツールの以前の実行結果を修正したり、その内容を直接組み入れたりすることはできません。ただし、前述のように、以前の実行結果に対してリンクを追加することはできます。 -.LP -実装上の理由から、Javadoc ツールは、処理を実行するために java コンパイラを必要とし、java コンパイラに依存しています。Javadoc ツールは、 \f2javac\fP の一部を呼び出して宣言をコンパイルしますが、メンバーの実装は無視します。Javadoc ツールは、クラス階層を含むクラスの豊富な内部表現とクラスの「使用」関係を構築し、その情報から HTML を生成します。さらに、Javadoc ツールは、ソースコードのドキュメンテーションコメントから、ユーザーの提供したドキュメントも取得します。 -.LP -実際には、Javadoc ツールは、メソッド本体を持たない純粋なスタブファイルであるような \f2.java\fP ソースファイルでも動作します。したがって、API の作成時には、実装を記述する前の設計の早い段階で、ドキュメンテーションコメントを記述して javadoc ツールを実行できます。 -.LP -コンパイラに依存することによって、HTML 出力は、実際の実装に正確に対応します。実際の実装は、明示的なソースコードにではなく、暗黙のソースコードに依存する場合があります。たとえば、Javadoc ツールは、.class ファイルには存在するがソースコードには存在しないデフォルトコンストラクタ (Java 言語仕様を参照) \f2をドキュメント化\fP します。 -.LP -通常、Javadoc ツールでは、ソースファイルのコードが不完全またはエラーを含んでいる場合でもドキュメントを生成できます。このため、デバッグやトラブルシューティングを完了する前にドキュメントを生成できます。たとえば、Java 言語仕様によると、抽象メソッドを含むクラスは、それ自体抽象として宣言されなければなりません。このエラーを検出すると、javac コンパイラは停止しますが、Javadoc ツールは警告を出さずに処理を続行します。Javadoc ツールはドキュメンテーションコメントの基本的なチェックを行います。ドキュメンテーションコメントをより詳しくチェックする必要がある場合は、DocCheck ドックレットを使用してください。 -.LP -Javadoc ツールは、ドキュメントの内部構造を構築する際、参照クラスをすべてロードします。このため、Javadoc ツールは、ブートストラップクラス、拡張機能、またはユーザークラスにかかわらず、すべての参照クラスを検索できなければなりません。詳細は、 -.na -\f2「クラスの検索方法」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.htmlを参照してください。通常、作成するクラスは、拡張機能としてロードするか、Javadoc ツールのクラスパス内に置く必要があります。 -.SS -Javadoc のドックレット -.LP -Javadoc ツールの出力の内容と形式は、ドックレットを使ってカスタマイズできます。Javadoc ツールには、標準ドックレットと呼ばれるデフォルトの「組み込み」ドックレットがあります。標準ドックレットは、HTML 形式の API ドキュメントを生成します。標準ドックレットを修正またはサブクラス化することや、HTML、XML、MIF、RTF などの好みの出力形式を生成する独自のドックレットを記述することも可能です。ドックレットとその使用法については、次の項目を参照してください。 -.RS 3 -.TP 2 -o -.na -\f2Javadoc のドックレット\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/index.html -.TP 2 -o -\f2\-doclet\fP コマンド行オプション -.RE -.LP -\f2\-doclet\fP コマンド行オプションでカスタムドックレットが指定されていない場合、Javadoc ツールは、デフォルトの標準ドックレットを使用します。javadoc ツールには、使用されているドックレットに関係なく使用できるコマンド行オプションがあります。標準ドックレットでは、これらのほかに、いくつかのコマンド行オプションが追加されます。どちらのオプションについても、このあとの「オプション」で説明します。 -.SS -関連ドキュメントおよびドックレット -.RS 3 -.TP 2 -o -.na -\f2Javadoc に施された拡張機能\fP @ -.fi -http://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 関連のツールについての情報、およびバグの回避方法 -.TP 2 -o -.na -\f2How to Write Doc Comments for Javadoc\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html \- ドキュメンテーションコメントの記述方法に関する Sun の規約 -.TP 2 -o -.na -\f2Requirements for Writing API Specifications\fP @ -.fi -http://java.sun.com/j2se/javadoc/writingapispecs/index.html \- Java SE プラットフォーム仕様を記述する際に使用された標準要件この情報は、ソースファイルのドキュメンテーションコメント形式で API 仕様を記述する場合にも、その他の形式で記述する場合にも役立ちます。検証可能なアサーションを満たすパッケージ、クラス、インタフェース、フィールド、およびメソッドについての要件を定めています。 -.TP 2 -o -.na -\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 版では削除されました。 -.TP 2 -o -.na -\f2DocCheck ドックレット\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-141437.html \- ソースファイル内のドキュメンテーションコメントをチェックし、検出されたエラーや不正のレポートを生成します。Doc Check ユーティリティーの一部です。 -.TP 2 -o -.na -\f2MIF ドックレット\fP @ -.fi -http://java.sun.com/j2se/javadoc/mifdoclet/ \- MIF、FrameMaker、PDF の書式で API ドキュメントを自動生成します。MIF は Adobe FrameMaker の交換書式です。 -.RE -.SS -用語 -.LP -\f2「ドキュメンテーションコメント」\fP、\f2「doc コメント」\fP、\f2「主説明」\fP、\f2「タグ」\fP、\f2「ブロックタグ」\fP、および\f2「インラインタグ」\fPの用語については、「ドキュメンテーションコメント」で説明します以下のその他の用語は、Javadoc ツールのコンテキストで特定の意味を持ちます。 -.RS 3 -.TP 3 -生成ドキュメント (generated document) -javadoc ツールが Java ソースコード内のドキュメンテーションコメントから生成したドキュメントのことです。デフォルトの生成ドキュメントは HTML 形式で、標準ドックレットによって作成されます。 -.LP -.TP 3 -名前 (name) -Java 言語で書かれたプログラム要素の名前、つまりパッケージ、クラス、インタフェース、フィールド、コンストラクタ、またはメソッドの名前のことです。名前は、 \f2java.lang.String.equals(java.lang.Object)\fP のような完全修飾名にすることも、 \f2equals(Object)\fP のような部分修飾名にすることもできます。 -.LP -.TP 3 -ドキュメント化されるクラス (documented classes) -javadoc ツールの実行によって詳細なドキュメントが生成されるクラスおよびインタフェースのことです。ドキュメント化するには、ソースファイルが使用可能でなければならず、ソースファイル名またはパッケージ名を javadoc コマンドに渡され、アクセス修飾子 (public、protected、package\-private または private) によってフィルタ処理されないようにしなければなりません。ドキュメント化されるクラスは、javadoc ツールの出力に組み込まれるクラス、つまり「包含クラス」とも呼ばれます。 -.LP -.TP 3 -包含クラス (included classes) -ツールの実行によって詳細なドキュメントが生成されるクラスおよびインタフェースのことです。「ドキュメント化されるクラス」と同じ。 -.LP -.TP 3 -除外クラス (excluded classes) -ツールの実行によって詳細なドキュメントが生成されないクラスおよびインタフェースのことです。 -.LP -.TP 3 -参照クラス (referenced classes) -ドキュメント化されるクラスおよびインタフェースの定義 (実装) またはドキュメンテーションコメントの中で明示的に参照されているクラスおよびインタフェースのことです。参照の例としては、戻り値の型、パラメータの型、キャストの型、拡張されたクラス、実装されたインタフェース、インポートされたクラス、メソッド本体で使用されるクラス、@see、{@link}、{@linkplain}、{@inheritDoc} タグなどがあります。この定義は -.na -\f21.3\fP @ -.fi -http://download.oracle.com/javase/1.3/docs/tooldocs/solaris/javadoc.html#referencedclasses から変更されています。javadoc ツールを実行するときは、Javadoc のブートクラスパスおよびクラスパス内にあるすべての参照クラスをメモリーにロードする必要があります。参照クラスが見つからない場合は、「クラスが見つかりません」という警告が表示されます。Javadoc ツールは、クラスの存在とそのメンバーの完全指定の名前を判別するのに必要なすべての情報を、.class ファイルから引き出すことができます。 -.LP -.TP 3 -外部参照クラス (external referenced classes) -参照クラスのうち、javadoc ツールの実行中にドキュメントが生成されないクラスのことです。つまり、これらのクラスは、コマンド行で Javadoc ツールに渡されていません。生成ドキュメント内でこれらのクラスにリンクしている箇所は、「外部参照」または「外部リンク」と呼ばれます。たとえば、Javadoc ツールの実行対象が \f2java.awt\fP パッケージのみである場合、 \f2java.lang\fP 内のすべてのクラス ( \f2Object\fPなど) が外部参照クラスになります。外部参照クラスにリンクするには、 \f2\-link\fP および \f2\-linkoffline\fP オプションを使用します。外部参照クラスには、通常そのソースコメントを javadoc ツールの実行で利用できないという重要な特徴があります。この場合、それらのコメントを継承することはできません。 -.RE -.SH "ソースファイル" -.LP -Javadoc ツールは 4 種類の異なる「ソース」ファイルから出力を生成します。その 4 種類とは、クラスの Java 言語ソースファイル (\f2.java\fP)、パッケージコメントファイル、概要コメントファイル、およびその他の処理されないファイルです。また、ドキュメント化しないがソースツリーに存在する場合があるテストファイルやテンプレートファイルについても説明します。 -.SS -クラスソースコードファイル -.LP -それぞれのクラスまたはインタフェース、およびそのメンバーは、独自のドキュメンテーションコメントを持つことができ、それを \f2.java\fP ファイル内に保持します。ドキュメンテーションコメントの詳細は、「ドキュメンテーションコメント」を参照してください。 -.SS -パッケージコメントファイル -.LP -それぞれのパッケージは、独自のドキュメンテーションコメントを持つことができ、それを専用の「ソース」ファイルに保持します。その内容は、Javadoc ツールによって生成される概要ページに組み込まれます。このコメントには、通常、そのパッケージ全体に当てはまるドキュメントを記述します。 -.LP -パッケージコメントファイルを作成する場合、コメントの格納先として、次の 2 つのファイルのいずれかを選択できます。 -.RS 3 -.TP 2 -o -\f2package\-info.java\fP \- パッケージ宣言、パッケージ注釈、パッケージコメント、および Javadoc タグを格納できます。このファイルは一般に、package.html よりも推奨されます。 -.TP 2 -o -\f2package.html\fP \- 格納できるのはパッケージコメントと Javadoc タグだけです。パッケージ注釈は格納できません。 -.RE -.LP -各パッケージでは、単一の \f2package.html\fP ファイル、単一の \f2package\-info.java\fP ファイルのいずれかを選択できますが、その両方を選択することはできません。このどちらかのファイルを \f2.java\fP ファイルとともに、ソースツリー内のそのパッケージのディレクトリ内に配置してください。 -.LP -\f4package\-info.java\fP \- このファイルには、次の構造のパッケージコメントを格納できます。 コメントはパッケージ宣言の前に配置します。 -.LP -File: \f2java/applet/package\-info.java\fP +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: javadoc +.\" Language: English +.\" Date: 2011年5月10日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "javadoc" "1" "2011年5月10日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +javadoc \- Javaソース・ファイルから、APIドキュメントのHTMLページを生成します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjavadoc\fR {\fIpackages\fR|\fIsource\-files\fR} [\fIoptions\fR] [\fI@argfiles\fR] +.fi +.if n \{\ +.RE +.\} +.PP +\fIpackages\fR +.RS 4 +\fIjava\&.lang java\&.lang\&.reflect java\&.awt\fRなど、空白で区切ってドキュメント化するパッケージの名前。サブパッケージもドキュメント化する場合は、\fI\-subpackages\fRオプションを使用してパッケージを指定します。 +.sp +デフォルトでは、\fIjavadoc\fRは、現在のディレクトリおよびサブディレクトリで指定されたパッケージを探します。\fI\-sourcepath\fRオプションを使用して、パッケージを探すディレクトリのリストを指定します。 +.RE +.PP +\fIsource\-files\fR +.RS 4 +\fIClass\&.java Object\&.java Button\&.java\fRのように空白で区切った、ドキュメント化するJavaソース・ファイルの名前。デフォルトでは、\fIjavadoc\fRは、現在のディレクトリで指定されたクラスを探します。ただし、\fI/home/src/java/awt/Graphics*\&.java\fRのように、クラス・ファイルのフルパスを指定し、ワイルドカード文字を使用できます。現在のディレクトリからの相対パスも指定できます。 +.RE +.PP +\fIoptions\fR +.RS 4 +空白で区切られたコマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fI@argfiles\fR +.RS 4 +\fIjavadoc\fRコマンド・オプション、パッケージ名およびソース・ファイル名のリストを任意の順序で含むファイルの名前。 +.RE +.SH "説明" +.PP +\fIjavadoc\fRコマンドは、一連のJavaソース・ファイルにある宣言およびドキュメンテーション・コメントを解析し、デフォルトでは、publicクラス、protectedクラス、ネストされたクラス(匿名の内部クラスは除く)、インタフェース、コンストラクタ、メソッド、およびフィールドについて記述した一連のHTMLページを生成します。\fIjavadoc\fRコマンドは、APIドキュメントの生成や、一連のソース・ファイルの実装ドキュメントの生成に使用できます。 +.PP +\fIjavadoc\fRコマンドは、パッケージ全体、個々のソース・ファイル、またはその両方に対して実行できます。パッケージ全体のドキュメント化を行うには、\fI\-subpackages\fRオプションを使用してディレクトリおよびそのサブディレクトリを再帰的にたどるか、パッケージ名の明示的なリストを渡します。個々のソース・ファイルをドキュメント化するには、Javaソース・ファイル名のリストを渡します。簡単な例を参照してください。 +.SS "ソース・ファイルの処理" +.PP +\fIjavadoc\fRコマンドは、ソースで終わるファイル、およびソース・ファイルで説明しているその他のファイルを処理します。個々のソース・ファイル名を渡して\fIjavadoc\fRを実行する場合、どのソース・ファイルを処理するかを正確に指定できます。ただし、多くの開発者はこの方法では作業しません。パッケージ名を渡すほうが簡単だからです。ソース・ファイル名を明示的に指定しなくても、\fIjavadoc\fRコマンドは3つの方法で実行できます。パッケージ名を渡し、\fI\-subpackages\fRオプションを使用するか、またはソース・ファイル名にワイルドカードを使用することができます。これらの場合、\fIjavadoc\fRコマンドがソース・ファイルの処理を行うのは、そのファイルが次のすべての要件を満たす場合のみです。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ファイル名の接頭辞(\fI\&.java\fRを削除)が有効なクラス名である。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ソース・ツリーのルートからの相対的なパス名が、区切り文字をドットに変換すると、有効なパッケージ名になる。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージ文に有効なパッケージ名が含まれている。 +.RE +リンクの処理.PP +処理の実行中に、\fIjavadoc\fRコマンドは、その実行でドキュメント化されるパッケージ、クラス、およびメンバーの名前に対して、相互参照リンクを追加します。リンクは、次の場所に表示されます。@タグの説明については、javadocタグを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +宣言(戻り値の型、引数の型、フィールドの型)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI@see\fRタグから生成された「\fI関連項目\fR」セクション。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI{@link}\fRタグから生成されたインライン・テキスト。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI@throws\fRタグから生成された例外の名前。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +インタフェースのメンバーに対する「\fI定義\fR」リンクと、クラスのメンバーに対する「\fIオーバーライド\fR」リンク。メソッド・コメントの継承を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージ、クラス、およびメンバーをリストしているサマリー表。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージおよびクラスの継承ツリー。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +索引。 +.RE +.PP +コマンドラインで指定しなかったクラスについての既存のテキスト(別に生成したテキスト)に対してリンクを追加するには、\fI\-link\fRおよび\fI\-linkoffline\fRオプションを利用できます。 +処理の詳細.PP +\fIjavadoc\fRコマンドは実行するたびに1つの完全なドキュメントを生成します。前の実行の結果を変更または直接取り込む、増分ビルドを行いません。ただし、\fIjavadoc\fRコマンドは、他の実行の結果にリンクできます。 +.PP +\fIjavadoc\fRコマンドの実装にはJavaコンパイラが必要で、Javaコンパイラに依存しています。\fIjavadoc\fRコマンドは\fIjavac\fRコマンドの一部を呼び出し、宣言をコンパイルして、メンバーの実装を無視します。\fIjavadoc\fRコマンドは、クラス階層を含むクラスの豊富な内部表現とクラスの「使用」関係を構築し、HTMLを生成します。さらに、J\fIjavadoc\fRコマンドは、ソース・コードのドキュメンテーション・コメントから、ユーザーの提供したドキュメントも取得します。ドキュメンテーション・コメントを参照してください。 +.PP +\fIjavadoc\fRコマンドは、メソッド本体を持たない純粋なスタブ・ファイルであるソース・ファイルに対して実行できます。したがって、APIの実装前の設計の早い段階で、ドキュメンテーション・コメントを記述して\fIjavadoc\fRコメントを実行できます。 +.PP +コンパイラに依存することによって、HTML出力は、実際の実装に正確に対応します。実際の実装は、明示的なソース・コードにではなく、暗黙のソース・コードに依存する場合があります。たとえば、\fIjavadoc\fRコマンドは、コンパイル済クラス・ファイルには存在するがソース・コードには存在しないデフォルト・コンストラクタをドキュメント化します。 +.PP +多くの場合、\fIjavadoc\fRコマンドでは、ソース・ファイルのコードが不完全またはエラーを含んでいる場合でもドキュメントを生成できます。すべてのデバッグやトラブルシューティングを完了する前にドキュメントを生成できます。\fIjavadoc\fRコマンドはドキュメンテーション・コメントの基本的なチェックを行います。 +.PP +\fIjavadoc\fRコマンドは、ドキュメントの内部構造を構築する際、参照クラスをすべてロードします。このため、 +\fIjavadoc\fRコマンドは、ブートストラップ・クラス、拡張機能、またはユーザー・クラスにかかわらず、すべての参照クラスを検索できる必要があります。クラスの検出方法 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html)を参照してください +.PP +通常、作成するクラスは、拡張クラスとして、または\fIjavadoc\fRコマンドのクラス・パスでロードされる必要があります。 +.SS "Javadocのドックレット" +.PP +\fIjavadoc\fRコマンドの出力の内容と形式は、ドックレットを使用してカスタマイズできます。\fIjavadoc\fRコマンドには、標準ドックレットと呼ばれるデフォルトの組込みドックレットがあります。標準ドックレットは、HTML形式のAPIドキュメントを生成します。標準ドックレットを修正またはサブクラスを作成することや、HTML、XML、MIF、RTFなどの好みの出力形式を生成する独自のドックレットを記述することも可能です。 +.PP +\fI\-doclet\fRオプションでカスタム・ドックレットが指定されていない場合、\fIjavadoc\fRコマンドは、デフォルトの標準ドックレットを使用します。\fIjavadoc\fRコマンドには、使用されているドックレットに関係なく使用できるいくつかのオプションがあります。標準ドックレットでは、これらの他に、いくつかのコマンドライン・オプションが追加されます。オプションを参照してください。 +.SH "ソース・ファイル" +.PP +\fIjavadoc\fRコマンドは、次のタイプのソース・ファイルから出力を生成します。そのファイルは、クラスのJava言語ソース・ファイル(\fI\&.java\fR)、パッケージ・コメント・ファイル、概要コメント・ファイル、およびその他の未処理のファイルです。ここでは、ドキュメント化しないがソース・ツリーに存在する場合があるテスト・ファイルやテンプレート・ファイルについても説明します。 +.SS "クラスのソース・ファイル" +.PP +それぞれのクラスまたはインタフェース、およびそのメンバーは、独自のドキュメンテーション・コメントを持つことができ、それをソース・ファイル内に保持します。ドキュメンテーション・コメントを参照してください。 +.SS "パッケージ・コメント・ファイル" +.PP +それぞれのパッケージは、独自のドキュメンテーション・コメントを持つことができ、それを専用のソース・ファイルに保持します。その内容は、\fIjavadoc\fRコマンドによって生成されるパッケージのサマリー・ページに組み込まれます。このコメントには、通常、そのパッケージ全体に当てはまるドキュメントを記述します。 +.PP +パッケージ・コメント・ファイルを作成するには、次のいずれかのファイルにコメントを格納できます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIpackage\-info\&.java\fRファイルには、パッケージ宣言、パッケージ注釈、パッケージ・コメント、およびJavadocタグを格納できます。このファイルが優先されます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIpackage\&.html\fRファイルには、パッケージ・コメントとJavadocタグのみを格納できます。パッケージ注釈は格納できません。 +.RE +.PP +各パッケージは、\fIpackage\&.html\fRファイルまたは\fIpackage\-info\&.java\fRファイルのいずれかを1つ持つことができますが、その両方を持つことはできません。このどちらかのファイルをソース・ファイルとともに、ソース・ツリー内のそのパッケージ・ディレクトリ内に配置してください。 +package\-info\&.javaファイル.PP +\fIpackage\-info\&.java\fRファイルには、次の構造のパッケージ・コメントを含めることができます。コメントは、パッケージ宣言の前に配置されます。 +.PP +\fB注意:\fR +コメント区切り文字である\fI/**\fRおよび\fI*/\fRが存在する必要がありますが、中間の行の先頭のアスタリスクは省略可能です。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl * Provides the classes necessary to create an -.fl * applet and the classes an applet uses -.fl - * to communicate with its applet context. -.fl + * to communicate with its applet context\&. * <p> -.fl * The applet framework involves two entities: -.fl - * the applet and the applet context. -.fl + * the applet and the applet context\&. * An applet is an embeddable window (see the -.fl - * {@link java.awt.Panel} class) with a few extra -.fl + * {@link java\&.awt\&.Panel} class) with a few extra * methods that the applet context can use to -.fl - * initialize, start, and stop the applet. -.fl + * initialize, start, and stop the applet\&. * -.fl - * @since 1.0 -.fl - * @see java.awt -.fl + * @since 1\&.0 + * @see java\&.awt */ -.fl -package java.lang.applet; -.fl -\fP +package java\&.lang\&.applet; .fi -.LP -コメント区切り文字の \f2/**\fP と \f2/*\fP は存在している必要がありますが、中間行の行頭のアスタリスクは省略してもかまいません。 -.LP -\f4package.html\fP \- このファイルには、次の構造のパッケージコメントを格納できます。コメントは \f2<body>\fP 要素内に配置します。 -.LP -File: \f2java/applet/package.html\fP +.if n \{\ +.RE +.\} +package\&.htmlファイル.PP +\fIpackage\&.html\fRファイルには、次の構造のパッケージ・コメントを含めることができます。コメントは、\fI<body>\fR要素に配置されます。 +.PP +ファイル: +\fIjava/applet/package\&.html\fR +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -<HTML> <BODY> Provides the classes necessary to create an applet and the classes an applet uses to communicate with its applet context.<p> -.fl +<HTML> +<BODY> +Provides the classes necessary to create an applet and the +classes an applet uses to communicate with its applet context\&. +<p> The applet framework involves two entities: the applet -.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 </BODY> </HTML> -.fl -\fP +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> .fi -.LP -これは単なる通常の HTML ファイルであり、パッケージ宣言を含んでいない点に注意してください。パッケージコメントファイルの内容は、ほかのすべてのコメントと同様に HTML で記述しますが、1 つだけ例外があります。それは、このドキュメンテーションコメントには、コメント区切り文字 である \f2/**\fP と \f2*/\fP 、および行頭のアスタリスクを含めてはならない、という点です。コメントを書く場合は、最初の文をパッケージの概要とし、 \f2<body>\fP と最初の文の間にタイトルやその他のテキストを含めないようにします。パッケージタグを含めることはできますが、ほかのドキュメンテーションコメントと同様、すべてのブロックタグは、主説明のあとに置かなければなりません。 \f2@see\fP タグをパッケージコメントファイルに追加する場合には、完全修飾名を使用する必要があります。詳細は、 -.na -\f2package.html\fPの例 @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#packagecommentsを参照してください。 -.LP -\f3パッケージコメントファイルの処理\fP \- Javadoc ツールは、実行時にパッケージコメントファイルを自動的に検索し、このファイルを見つけると次の処理を行います。 -.RS 3 -.TP 2 -o -処理できるようにコメントをコピーする( \f2package.html\fP の場合であれば、 \f2<body>\fP と \f2</body>\fP HTML タグの間にある内容をすべてコピーする。 \f2<head>\fP セクションを含め、そこに \f2<title>\fP やソースファイルの著作権記述などの情報を配置することもできるが、生成後のドキュメンテーションにはそれらは一切表示されない) -.TP 2 -o -パッケージタグがあれば、すべて処理する -.TP 2 -o -生成したパッケージの概要ページの最後に、処理したテキストを挿入する (例: -.na -\f2パッケージの概要\fP @ -.fi -http://java.sun.com/javase/6/docs/api/java/applet/package\-summary.html) -.TP 2 -o -パッケージの概要ページの先頭に、パッケージコメントの最初の文をコピーする。さらに、概要ページのパッケージリストに、パッケージ名とパッケージコメントの最初の文を追加する (例: -.na -\f2概要の要約\fP @ -.fi -http://java.sun.com/javase/6/docs/api/overview\-summary.html)。文の末尾は、クラスやメンバーの主説明の最初の文の末尾と同じ規則によって判断される +.if n \{\ .RE -.SS -概要コメントファイル -.LP -ドキュメント化する各アプリケーションまたはパッケージセットは、独自の概要ドキュメンテーションコメントを持つことができ、それは専用の「ソース」ファイルに保持されます。その内容は、Javadoc ツールによって生成される概要ページに組み込まれます。このコメントには、通常、アプリケーションまたはパッケージセット全体に当てはまるドキュメントを記述します。 -.LP -概要コメントファイルを作成するには、ファイルに任意の名前 (通常は \f4overview.html\fP) を付け、それを任意の場所 (通常はソースツリーの最上位) に配置できます。たとえば、 \f2java.applet\fP パッケージのソースファイルが \f2/home/user/src/java/applet\fP ディレクトリに格納されていれば、概要コメントファイルは \f2/home/user/src/overview.html に作成できます\fP。 -.LP -異なるパッケージのセットに対して javadoc を複数回実行する場合は、同じ 1 つのソースファイルのセットに対して複数の概要コメントファイルを作成できます。たとえば、内部ドキュメンテーション用に \-private を指定して javadoc を 1 回実行したあと、公開ドキュメンテーション用にそのオプションを指定しないで再度実行することができます。この場合、各概要コメントファイルの 1 文目で、そのドキュメンテーションを公開用または内部用として記述できます。 -.LP -概要コメントファイルの内容は、前述のパッケージコメントファイルと同様、HTML で記述された 1 つの大きなドキュメンテーションコメントです。詳細は、前述の説明を参照してください。要点を繰り返すと、このコメントを記述する場合は、最初の文をアプリケーションまたはパッケージセットの要約とし、 \f2<body>\fP と最初の文の間にタイトルその他のテキストを含めないようにします。概要タグを含めることができます。ほかのドキュメンテーションコメントと同じく、 \f2{@link}\fP などのインラインタグを除くすべてのタグは、主説明のあとに配置する必要があります。 \f2@see\fP タグを追加する場合には、完全修飾名を使用する必要があります。 -.LP -Javadoc ツールの実行時に、\-overview オプションを使って概要コメントファイル名を指定します。このファイルは、パッケージコメントファイルと同じように処理されます。 -.RS 3 -.TP 2 -o -\f2<body>\fP と \f2</body>\fP タグの間にあるすべての内容を処理対象としてコピーする -.TP 2 -o -概要タグがあれば、すべて処理する -.TP 2 -o -生成した概要ページの最後に、処理したテキストを挿入する (例: -.na -\f2概要の要約\fP @ -.fi -http://java.sun.com/javase/6/docs/api/overview\-summary.html) -.TP 2 -o -概要ページの先頭に、概要コメントの最初の文をコピーする +.\} +.PP +\fIpackage\&.html\fRファイルは通常のHTMLファイルであり、パッケージ宣言を含んでいません。パッケージ・コメント・ファイルの内容はHTMLで記述しますが、例外が1つあります。このドキュメンテーション・コメントには、コメント区切り文字である\fI/**\fRと\fI*/\fR、または行頭のアスタリスクを含めない、という点です。コメントを書く場合は、最初の文をパッケージのサマリーとし、\fI<body>\fRタグと最初の文の間にタイトルやその他のテキストを含めないようにします。パッケージ・タグを含めることができます。すべてのブロック・タグは、主説明の後に配置する必要があります。\fI@see\fRタグをパッケージ・コメント・ファイルに追加する場合には、完全修飾名を使用する必要があります。 +コメント・ファイルの処理.PP +\fIjavadoc\fRコメントを実行すると、パッケージ・コメント・ファイルが検索されます。パッケージ・コメント・ファイルが見つかった場合は、\fIjavadoc\fRコマンドは次の手順を実行します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +処理できるようにコメントをコピーします。package\&.htmlの場合、\fIjavadoc\fRコマンドは、\fI<body>\fRと\fI</body>\fR +HTMLタグ間のすべての内容をコピーします。\fI<head>\fRセクションを含め、そこに\fI<title>\fRタグやソース・ファイルの著作権記述などの情報を配置することもできますが、生成されたドキュメントにはそれらは一切表示されません。 .RE -.SS -その他の未処理のファイル -.LP -ソースには、Javadoc ツールによって生成先のディレクトリにコピーされる、その他の任意のファイルを含めることができます。一般に、このようなファイルには、グラフィックファイル、サンプルの Java ソース (.java) およびクラス (.class) ファイル、内容が通常の Java ソースファイルのドキュメンテーションコメントの影響を受けない独立した HTML ファイルなどがあります。 -.LP -処理されないファイルを含めるには、\f4doc\-files\fP という名前のディレクトリ内にそれらのファイルを配置します。このディレクトリは、ソースファイルが格納された任意のパッケージディレクトリのサブディレクトリにします。このようなサブディレクトリは、パッケージごとに 1 つ用意できます。イメージ、サンプルコード、ソースファイル、.class ファイル、アプレット、および HTML ファイルをこのディレクトリに格納できます。たとえば、ボタンの画像 \f2button.gif\fP を \f2java.awt.Button\fP クラスのドキュメンテーションに含める場合には、そのファイルを \f2/home/user/src/java/awt/doc\-files/\fP ディレクトリ内に配置します。なお、 \f2doc\-files\fP ディレクトリを \f2/home/user/src/java/doc\-files\fP に配置することはできません。なぜなら、 \f2java\fP はパッケージではないからです。つまり、java に直接含まれているソースファイルは 1 つも存在していません。 -.LP -これらの未処理のファイルへのリンクは、すべて明示的に記述する必要があります。これは、Javadoc ツールがそれらのファイルを見ずに、単にディレクトリとその内容を生成先にコピーするだけだからです。たとえば、 \f2Button.java\fP のドキュメンテーションコメント内のリンクは、次のようになります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージ・タグを処理します。パッケージ・タグを参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +処理したテキストを生成されたパッケージのサマリー・ページの下部に挿入します。Javaプラットフォーム、Standard Edition API仕様の概要 +(http://docs\&.oracle\&.com/javase/8/docs/api/overview\-summary\&.html)を参照してください +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージのサマリー・ページの先頭に、パッケージ・コメントの最初の文をコピーします。さらに、\fIjavadoc\fRコマンドは、概要ページのパッケージ・リストに、パッケージ名とパッケージ・コメントの最初の文を追加します。Javaプラットフォーム、Standard Edition API仕様の概要 +(http://docs\&.oracle\&.com/javase/8/docs/api/overview\-summary\&.html)を参照してください +.sp +文の終わりは、クラスやメンバーの主説明の最初の文の終わりと同じルールによって判断されます。 +.RE +.SS "概要コメント・ファイル" +.PP +ドキュメント化する各アプリケーションまたはパッケージ・セットは、独自の概要ドキュメンテーション・コメントを持つことができ、それは専用のソース・ファイルに保持されます。その内容は、\fIjavadoc\fRコマンドによって生成される概要ページに組み込まれます。このコメントには、通常、アプリケーションまたはパッケージ・セット全体に当てはまるドキュメントを記述します。 +.PP +このファイルにはoverview\&.htmlなどの名前を付けることができ、どこに配置してもかまいません。一般的な場所は、ソース・ツリーの最上部です。 +.PP +たとえば、\fIjava\&.applet\fRパッケージのソース・ファイルが/home/user/src/java/appletディレクトリに格納されている場合、概要コメント・ファイルは/home/user/src/overview\&.htmlに作成できます。 +.PP +異なるパッケージのセットに対して\fIjavadoc\fRコマンドを複数回実行する場合は、同じ1つのソース・ファイルのセットに対して複数の概要コメント・ファイルを作成できます。たとえば、内部ドキュメント用に\fI\-private\fRを指定して\fIjavadoc\fRコマンドを1回実行した後、公開ドキュメント用にそのオプションを指定しないで再度実行することができます。この場合、各概要コメント・ファイルの1文目で、そのドキュメントを公開用または内部用として記述できます。 +.PP +概要コメント・ファイルの内容は、HTMLで記述された1つの大きなドキュメンテーション・コメントです。最初の文はアプリケーションまたはパッケージのセットのサマリーとします。\fI<body>\fRタグと最初の文の間にタイトルやその他のテキストを含めないようにします。{\fI@link}\fRなどのインライン・タグを除くすべてのタグは、主説明の後に配置する必要があります。\fI@see\fRタグを追加する場合には、完全修飾名を使用する必要があります。 +.PP +\fIjavadoc\fRコマンドの実行時に、\fI\-overview\fRオプションを使用して概要コメント・ファイル名を指定します。このファイルは、パッケージ・コメント・ファイルと同じように処理されます。\fIjavadoc\fRコマンドは次の手順を実行します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI<body>\fRと\fI</body>\fRタグの間にある内容をすべて処理対象としてコピーします。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +概要タグがあれば処理します。概要タグを参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +処理したテキストを生成された概要ページの下部に挿入します。JavaプラットフォームStandard Edition API仕様の概要 +(http://docs\&.oracle\&.com/javase/8/docs/api/overview\-summary\&.html)を参照してください +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +概要サマリー・ページの先頭に、概要コメントの最初の文をコピーします。 +.RE +.SS "未処理のファイル" +.PP +ソース・ファイルには、\fIjavadoc\fRコマンドによって宛先ディレクトリにコピーされる、任意のファイルを含めることができます。このようなファイルには、通常、グラフィック・ファイル、サンプルのJavaソースおよびクラス・ファイル、一般的なJavaソース・ファイルのドキュメンテーション・コメントの影響を受けない多くの内容を含む独立したHTMLファイルなどがあります。 +.PP +未処理のファイルを含めるには、doc\-filesというディレクトリにファイルを配置します。doc\-filesディレクトリは、ソース・ファイルを含む任意のパッケージ・ディレクトリのサブディレクトリになることができます。doc\-filesサブディレクトリは、パッケージごとに1つ用意できます。 +.PP +たとえば、ボタンのイメージを\fIjava\&.awt\&.Button\fRクラスのドキュメントに含める場合には、そのイメージ・ファイルを/home/user/src/java/awt/doc\-files/ディレクトリに置きます。doc\-filesディレクトリを/home/user/src/java/doc\-filesに置かないでください。javaはパッケージではないからです。ソース・ファイルを含めることもできません。 +.PP +\fIjavadoc\fRコマンドはファイルを参照しないので、未処理のファイルへのすべてのリンクは、コードに含まれている必要があります。\fIjavadoc\fRコマンドはディレクトリとそのすべての内容を宛先にコピーします。次の例では、Button\&.javaドキュメンテーション・コメントのリンクがどのように見えるかを示しています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - /** -.fl - * This button looks like this: -.fl - * <img src="doc\-files/Button.gif"> -.fl - */ -.fl -\fP +/** + * This button looks like this: + * <img src="doc\-files/Button\&.gif"> + */ .fi -.SS -テストファイルおよびテンプレートファイル -.LP -一部の開発者から、テストファイルおよびテンプレートファイルを対応するソースファイルの近くのソースツリーに保存したいという要望がありました。つまり、これらのソースファイルと同じディレクトリまたはサブディレクトリに保存したいということです。 -.LP -個別のソースファイル名で明示的に渡して Javadoc ツールを実行する場合は、テストファイルおよびテンプレートファイルを意図的に除外して、処理されないようにすることができます。ただし、パッケージ名またはワイルドカードで渡す場合は、以下のルールに従って、これらのテストファイルおよびテンプレートファイルが処理されないようにする必要があります。 -.LP -テストファイルとテンプレートファイルの違いは、テストファイルは、正当でコンパイル可能なソースファイルであるのに対して、テンプレートファイルは、そうではないという点です。ただし、テンプレートファイルも「.java」で終わることができます。 -.LP -\f3テストファイル\fP \- 開発者の多くは、あるパッケージのコンパイル可能で実行可能なテストファイルをそのパッケージのソースファイルと同じディレクトリに配置したいと考えています。しかしテストファイルは、名前なしパッケージなど、ソースファイルパッケージとは別のパッケージに属させたいとも考えています (そのため、テストファイルには package ステートメントがないか、またはソースとは別の package ステートメントがある)。このような状況では、コマンド行で指定されているソースのパッケージ名を指定してそのソースがドキュメント化されているときに、テストファイルは警告またはエラーを引き起こします。そのようなテストファイルはサブディレクトリに配置する必要があります。たとえば、 \f2com.package1\fP 内のソースファイルに対するテストファイルを追加する場合は次のように、ハイフンを含んでいるためにパッケージ名としては無効であるようなサブディレクトリ内に、それらのファイルを配置します。 +.if n \{\ +.RE +.\} +.SS "テストおよびテンプレート・ファイル" +.PP +ソース・ツリーのテストおよびテンプレート・ファイルを、ソース・ファイルが存在するディレクトリまたはサブディレクトリと同じディレクトリに格納できます。テストおよびテンプレート・ファイルが処理されるのを防ぐには、\fIjavadoc\fRコマンドを実行し、明示的に個別のソース・ファイル名を渡します。 +.PP +テスト・ファイルは、有効な、コンパイル可能なソース・ファイルです。テンプレート・ファイルは、有効な、互換性のあるソース・ファイルではありませんが、多くの場合、\fI\&.java\fR接尾辞を持っています。 +テスト・ファイル.PP +テスト・ファイルを、名前なしパッケージや、ソース・ファイルが存在するパッケージとは別のパッケージに属するようにする場合、テスト・ファイルをソース・ファイルの下のサブディレクトリに配置し、そのディレクトリに無効な名前を付けます。テスト・ファイルをソースと同じディレクトリに配置し、パッケージ名を示すコマンドライン引数を指定して\fIjavadoc\fRコマンドを呼び出すと、テスト・ファイルは警告またはエラーを引き起こします。ファイルが無効な名前を持つサブディレクトリ内に存在する場合、テスト・ファイル・ディレクトリはスキップされ、エラーまたは警告は発行されません。たとえば、ソース・ファイルのテスト・ファイルをcom\&.package1に追加するには、無効なパッケージ名のサブディレクトリに配置します。次のディレクトリ名にはハイフンが含まれているため無効です。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - com/package1/test\-files/ -.fl -\fP +com/package1/test\-files/ .fi -.LP -こうすると、Javadoc ツールでは警告なしで test ディレクトリをスキップします。 -.LP -テストファイルに doc コメントが含まれる場合、次のようにワイルドカードを含んだテストソースファイル名で渡してテストファイルのドキュメントを生成するように、Javadoc ツールを別個に実行できるように設定できます。たとえば、 \f2com/package1/test\-files/*.java などです\fP。 -.LP -\f3ソースファイルのテンプレート\fP \- テンプレートファイルの名前は「.java」で終わることもありますが、テンプレートファイルはコンパイルできません。ソースディレクトリ内に保持したいソースファイルのテンプレートがある場合は、 \f2Buffer\-Template.java\fP のようにハイフンやその他の無効な Java 文字を名前に含めることで、テンプレートが処理されないようにします。これは、Javadoc ツールが処理するのは、「.java」接尾辞を除いた名前が 正規のクラス名であるソースファイルだけであるためです (Java 言語仕様の「Identifiers」に関する情報を参照)。 +.if n \{\ +.RE +.\} +.PP +テスト・ファイルにドキュメンテーション・コメントが含まれる場合、\fIjavadoc\fRコマンドの個別の実行で、ワイルドカードを含んだテスト・ソース・ファイル名(\fIcom/package1/test\-files/*\&.java\fRなど)を渡して、テスト・ファイルのドキュメントを生成するように設定できます。 +テンプレート・ファイル.PP +テンプレート・ファイルをソース・ディレクトリに配置するが、\fIjavadoc\fRコマンドを実行するときにエラーを生成しない場合、ファイルに\fIBuffer\-Template\&.java\fRなどの無効な名前を付けて、処理させないようにします。\fIjavadoc\fRコマンドは、接尾辞の\fI\&.java\fRが削除されると有効なクラス名になる名前を持つソース・ファイルのみを処理します。 .SH "生成されるファイル" -.LP -デフォルトでは、javadoc ツールは、HTML 形式のドキュメントを生成する標準ドックレットを使います。このドックレットは、以下の種類のファイルを生成します。それぞれの HTML ページは、個々のファイルに相当します。javadoc が生成するファイルの名前には、クラスやインタフェースの名前にちなんだものと、そうでないもの ( \f2package\-summary.html など\fP) の 2 種類があります。後者のグループのファイル名には、前者のグループとファイル名が競合しないように、ハイフンが含まれています。 -.LP -\f3基本内容ページ\fP -.RS 3 -.TP 2 -o -ドキュメント化するクラスまたはインタフェースごとに 1 つの\f3クラスページまたはインタフェースページ\fP (\f2クラス名\fP\f2.html\fP) -.TP 2 -o -ドキュメント化するパッケージごとに 1 つの\f3パッケージページ\fP (\f2package\-summary.html\fP)。Javadoc ツールは、 \f2package.html\fP または \f2package\-info.java\fP という名前のファイル内の HTML テキストをすべて組み入れます。 -.TP 2 -o -パッケージのセット全体に対して 1 つの\f3概要ページ\fP (\f2overview\-summary.html\fP)。これは、生成ドキュメントの先頭ページになります。Javadoc ツールは、\f2\-overview\fP オプションで指定されたファイル内の HTML テキストをすべて組み入れます。このページのファイルは、javadoc に複数のパッケージ名を渡した場合にだけ作成されます。詳細は、「HTML フレーム」を参照してください。 +.PP +デフォルトでは、\fIjavadoc\fRコマンドは、HTML形式のドキュメントを生成する標準ドックレットを使用します。標準ドックレットは、ここで説明する、基本内容ページ、相互参照ページ、サポート・ページを生成します。各HTMLページは個別のファイルに対応します。\fIjavadoc\fRコマンドは、2つのタイプのファイルを生成します。最初のタイプには、クラスおよびインタフェースに応じた名前が付けられます。2番目のタイプには、最初のタイプのファイルとの競合を防ぐために、ハイフンが含まれます(package\-summary\&.htmlなど)。 +.SS "基本内容ページ" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +記載されているクラスまたはインタフェースごとに1つのクラスまたはインタフェース・ページ(classname\&.html)。 .RE -.LP -\f3相互参照ページ\fP -.RS 3 -.TP 2 -o -\f3パッケージのセット全体に対して 1 つのクラス階層ページ\fP (\f2overview\-tree.html\fP)。このページを表示するには、ナビゲーションバーの [概要] をクリックしてから、[階層ツリー] をクリックします。 -.TP 2 -o -\f3パッケージごとに 1 つのクラス階層ページ\fP (\f2package\-tree.html\fP)。これを表示するには、特定のパッケージ、クラス、またはインタフェースのページに移動し、[階層ツリー] をクリックしてそのパッケージの階層を表示させます。 -.TP 2 -o -\f3パッケージごとに 1 つの [使用] ページ\fP (\f2package\-use.html\fP) と、クラスおよびインタフェースごとに 1 つずつの [使用] ページ (\f2class\-use/\fP\f2クラス名\fP\f2.html\fP)。このページには、特定のクラス、インタフェース、またはパッケージの一部を使っているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドについて記述されます。クラスまたはインタフェース A を例にして考えると、その [使用] ページには、A のサブクラス、A として宣言されたフィールド、A を返すメソッド、A 型のパラメータを持つメソッドおよびコンストラクタが表示されます。 このページを表示するには、まず、パッケージ、クラス、またはインタフェースのページに移動してから、ナビゲーションバーの [使用] リンクをクリックします。 -.TP 2 -o -\f3非推奨 API ページ\fP (\f2deprecated\-list.html\fP)。推奨されない名前がすべて一覧表示されます。非推奨名は、一般に改良された API が存在するために使用が推奨されていない API の名前であり、通常、それに置き換わる名前が提示されています。非推奨 API は、将来の実装では削除される可能性があります。 -.TP 2 -o -\f3定数フィールド値ページ\fP (\f2constant\-values.html\fP)。static フィールドの値用です。 -.TP 2 -o -\f3直列化された形式ページ\fP (\f2serialized\-form.html\fP)。直列化可能かつ外部化可能なクラスに関する情報用です。これらの各クラスには、直列化フィールドおよびメソッドに関する説明があります。これらの情報は、API を使う開発者ではなく、再実装を行う開発者に必要な情報です。ナビゲーションバーにこのページへのリンクはありませんが、直列化されたクラスに移動して、そのクラスの説明にある「関連項目」セクションで「直列化された形式」をクリックすると、この情報を取得できます。標準ドックレットは直列化された形式ページを自動生成します。Serializable を実装するすべてのクラス (public または 非 public) が含まれるほか、 \f2readObject\fP メソッドや \f2writeObject\fP メソッド、直列化されるフィールド、および \f2@serial\fP、\f2@serialField\fP、\f2@serialData\fP タグからのドキュメンテーションコメントも含まれます。public 直列化可能クラスを除外するには、そのクラス (またはそのパッケージ) を \f2@serial exclude\fP でマークします。package\-private 直列化可能クラスを含めるには、そのクラス (またはそのパッケージ) を \f2@serial include\fP でマークします。バージョン 1.4 では \f2\-private\fP オプションの指定なしで javadoc ツールを実行することにより、public クラスおよび private クラスの完全に直列化されたクラスを生成できます。 -.TP 2 -o -\f3索引\fP (\f2index\-*.html\fP)。すべてのクラス、インタフェース、コンストラクタ、フィールド、およびメソッドの名前がアルファベット順に並んでいます。索引は、Unicode を扱えるように国際化されています。1 つのファイルとして生成することも、先頭文字 (英語の場合 A ~ Z) ごとに別々のファイルとして生成することもできます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +記載されているパッケージごとに1つのパッケージ・ページ(package\-summary\&.html)。\fIjavadoc\fRコマンドは、ソース・ツリーのパッケージ・ディレクトリ内にあるpackage\&.htmlまたはpackage\-info\&.javaという名前のファイル内のHTMLテキストをすべて組み入れます。 .RE -.LP -\f3サポートファイル\fP -.RS 3 -.TP 2 -o -\f3ヘルプページ\fP (\f2help\-doc.html\fP)。ナビゲーションバーや前述の各ページに関する説明が記載されています。デフォルトのヘルプファイルに代わる独自のカスタムヘルプファイルを提供するには、\f2\-helpfile\fP を使用します。 -.TP 2 -o -表示用の HTML フレームを作成する 1 つの \f3index.html ファイル\fP。このファイルは、フレーム付きの先頭ページを表示する場合にロードします。このファイル自体には、テキスト内容は含まれていません。 -.TP 2 -o -複数の\f3フレームファイル\fP (\f2*\-frame.html\fP)。パッケージ、クラス、およびインタフェースのリストが含まれています。HTML フレームを表示するときに使用されます。 -.TP 2 -o -\f3パッケージリスト\fPファイル (\f2package\-list\fP)。 \f2\-link\fP および \f2\-linkoffline\fP オプションで使用されます。これは、HTML ファイルではなくテキストファイルであり、どのリンクからもアクセスできません。 -.TP 2 -o -\f3スタイルシート\fPファイル (\f2stylesheet.css\fP)。生成されるページ上のいくつかの要素について、色、フォントファミリ、フォントサイズ、フォントのスタイル、および配置を制御します。 -.TP 2 -o -\f3doc\-files\fP ディレクトリ。生成先ディレクトリにコピーするイメージ、サンプルコード、ソースコードなどのファイルがすべて格納されます。これらのファイルは、Javadoc ツールによって処理されないため、ファイル内に javadoc タグがあっても無視されます。このディレクトリは、ソースツリーの中にある場合にのみ生成されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージのセット全体に対して1つの概要ページ(overview\-summary\&.html)。概要ページは、生成ドキュメントの先頭ページになります。\fIjavadoc\fRコマンドは、\fI\-overview\fRオプションで指定されたファイル内のHTMLテキストをすべて組み入れます。概要ページが作成されるのは、\fIjavadoc\fRコマンドに複数のパッケージ名を渡した場合のみです。HTMLフレームおよびオプションを参照してください。 .RE -.LP -\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 -HTML フレームが必要かどうかによって、次のどちらかのファイルを開始ページとしてロードします。 -.RS 3 -.TP 2 -o -\f2index.html\fP (フレームあり) -.TP 2 -o -\f2overview\-summary.html\fP (フレームなし) +.SS "相互参照ページ" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージのセット全体に対して1つのクラス階層ページ(overview\-tree\&.html)。階層ページを表示するには、ナビゲーション・バーの「概要」をクリックしてから、「階層ツリー」をクリックします。 .RE -.LP -\f3生成されるファイルの構造\fP -.LP -生成されるクラスファイルおよびインタフェースファイルは、Java ソースファイルおよびクラスファイルと同じディレクトリ階層に編成されます。1 つのサブパッケージにつき 1 つのディレクトリ、という構造になります。 -.LP -たとえば、 \f2java.applet.Applet\fP クラス用に生成されたドキュメントは、 \f2java/applet/Applet.html\fP に格納されます。生成先のディレクトリの名前が \f2apidocs\fP だとすると、java.applet パッケージのファイル構造は、その下に構築されます。前述のように、「frame」という語を名前に含むファイルは、すべて左上または左下のフレームに表示されます。それ以外の HTML ファイルは、すべて右側のフレームに表示されます。 -.LP -注 \- 下の階層図で、ディレクトリは\f3太字\fP (bold) で示してあります。アスタリスク (\f2*\fP) は、javadoc への引数がパッケージ名ではなくソースファイル名 (*.java) である場合に省略されるファイルおよびディレクトリを示しています。また、引数がソースファイル名の場合、 \f2package\-list\fP は作成されますが、その中身は空です。doc\-files ディレクトリは、ソースツリー内に存在する場合にのみ、生成先に作成されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージごとに1つのクラス階層ページ(package\-tree\&.html)。階層ページを表示するには、特定のパッケージ、クラス、またはインタフェースのページに移動し、「階層ツリー」をクリックしてそのパッケージの階層を表示します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージごとに1つの使用ページ(package\-use\&.html)と、クラスおよびインタフェースごとに1つずつの使用ページ(class\-use/classname\&.html)。使用ページでは、指定したクラス、インタフェース、またはパッケージの一部を使用しているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドについて記述されます。たとえば、クラスまたはインタフェースAを例にすると、その使用ページには、Aのサブクラス、Aとして宣言されたフィールド、Aを返すメソッド、A型のパラメータを持つメソッドおよびコンストラクタが組み込まれます。使用ページを表示するには、パッケージ、クラス、またはインタフェースに移動し、ナビゲーション・バーの「使用」リンクをクリックします。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +すべての非推奨APIとその推奨する代替をリストする非推奨APIページ(deprecated\-list\&.html)。非推奨APIは将来の実装で削除される可能性があるので使用しないでください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +定数フィールドの値用の定数フィールド値ページ(constant\-values\&.html)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +直列化された形式ページ(serialized\-form\&.html)。フィールドおよびメソッドの説明を含む、直列化可能かつ外部化可能なクラスに関する情報用のページです。このページ内の情報は、APIを使用する開発者ではなく、再実装者に必要な情報です。直列化された形式ページへアクセスするには、直列化されたクラスに移動して、そのクラス・コメントにある「関連項目」セクションで「直列化された形式」をクリックします。標準ドックレットは直列化された形式ページを生成します。このページには、Serializableを実装するすべてのクラス(publicまたは非public)が、その\fIreadObject\fRや\fIwriteObject\fRメソッド、直列化されたフィールド、および\fI@serial\fR、\fI@serialField\fR、\fI@serialData\fRタグからのドキュメンテーション・コメントとともにリストされます。直列化可能なpublicクラスを除外するには、そのクラス(またはそのパッケージ)を\fI@serial\fR +excludeでマークします。直列化可能なpackage\-privateクラスを含めるには、そのクラス(またはそのパッケージ)を\fI@serial\fR +includeでマークします。リリース1\&.4では、\fI\-private\fRオプションを指定せずに\fIjavadoc\fRコマンドを実行することにより、publicクラスおよびprivateクラスの完全に直列化された形式を生成できます。オプションを参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +索引ページ(\fIindex\-*\&.html\fR)。すべてのクラス名、インタフェース名、コンストラクタ名、フィールド名、およびメソッド名がアルファベット順に並んでいます。索引ページは、Unicodeを扱えるように国際化されています。1つのファイルとして生成することも、先頭文字(英語の場合A\(enZ)ごとに別々のファイルとして生成することもできます。 +.RE +.SS "サポート・ページ" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ヘルプ・ページ(help\-doc\&.html)。ナビゲーション・バーや前述の各ページに関する説明が記載されています。デフォルトのヘルプ・ファイルを独自のカスタム・ヘルプ・ファイルでオーバーライドするには、\fI\-helpfile\fRを使用します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +表示用のHTMLフレームを作成する1つのindex\&.htmlファイル。フレーム付きの先頭ページを表示するにはこのファイルをロードします。index\&.htmlファイルには、テキスト・コンテンツは含まれていません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +複数のフレーム・ファイル(\fI*\-frame\&.html\fR)。パッケージ、クラス、およびインタフェースのリストが含まれています。フレーム・ファイルはHTMLフレームを表示します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +パッケージ・リスト・ファイル(package\-list)。\fI\-link\fRおよび\fI\-linkoffline\fRオプションで使用されます。パッケージ・リスト・ファイルはテキスト・ファイルであり、どのリンクからもアクセスできません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +スタイルシート・ファイル(stylesheet\&.css)。生成されるページの一部の要素について色、フォント・ファミリ、フォント・サイズ、フォント・スタイル、および配置を制御します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +doc\-filesディレクトリ。宛先ディレクトリにコピーするイメージ、サンプル・コード、ソース・コードなどのファイルが格納されます。これらのファイルは、\fIjavadoc\fRコマンドによって処理されません。このディレクトリは、ソース・ツリーの中に存在する場合にのみ処理されます。 +.RE +.PP +オプションを参照してください。 +.SS "HTMLフレーム" +.PP +\fIjavadoc\fRコマンドは、コマンドに渡された値に基づき、最小限必要な数(2または3)のフレームを生成します。\fIjavadoc\fRコマンドに引数として1つのパッケージ名または1つのパッケージに含まれるソース・ファイルを渡す場合は、パッケージのリストが省略されます。そのかわりに、\fIjavadoc\fRコマンドは左側の列に1つのフレームを作成し、クラスのリストを表示します。複数のパッケージ名を渡した場合は、\fIjavadoc\fRコマンドは、すべてのパッケージをリストする第3のフレームと概要ページ(overview\-summary\&.html)を作成します。フレームを省略するには、「フレームなし」リンクをクリックするか、overview\-summary\&.htmlページからページ・セットを表示します。 +.SS "生成されるファイルの構造" +.PP +生成されるクラス・ファイルおよびインタフェース・ファイルは、Javaソース・ファイルおよびクラス・ファイルと同じディレクトリ階層に編成されます。1つのサブパッケージにつき1つのディレクトリ、という構造になります。 +.PP +たとえば、\fIjava\&.applet\&.Applet\fRクラス用に生成されるドキュメントは、java/applet/Applet\&.htmlに格納されます。 +.PP +生成先ディレクトリの名前が\fIapidocs\fRだとすると、\fIjava\&.applet\fRパッケージのファイルの構造は、次のとおりです。前述のように、\fIframe\fRという語を名前に含むファイルは、すべて左上または左下のフレームに表示されます。それ以外のHTMLファイルは、すべて右側のフレームに表示されます。 +.PP +ディレクトリは太字です。アスタリスク(*)は、\fIjavadoc\fRコマンドへの引数がパッケージ名ではなくソース・ファイル名である場合に省略されるファイルおよびディレクトリを示しています。引数がソース・ファイル名の場合、空のパッケージ・リストが作成されます。doc\-filesディレクトリは、ソース・ツリー内に存在する場合にのみ、生成先に作成されます。生成されるファイルを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBapidocs\fR: 最上位レベル・ディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +index\&.html: HTMLフレームを設定する初期ページ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +*overview\-summary\&.html: パッケージ・リストとサマリー +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +overview\-tree\&.html: すべてのパッケージのクラス階層 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +deprecated\-list\&.html: すべてのパッケージの非推奨API +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +constant\-values\&.html: すべてのパッケージの静的フィールド値 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +serialized\-form\&.html: すべてのパッケージの直列化されたフォーム +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +*overview\-frame\&.html: 左上のフレームに表示するすべてのパッケージ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +allclasses\-frame\&.html: 左下のフレームに表示するすべてのクラス +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +help\-doc\&.html: Javadocページの編成に関するヘルプ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +index\-all\&.html: +\fI\-splitindex\fRオプションなしで作成されたデフォルトの索引 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBindex\-files\fR: +\fI\-splitindex\fRオプションを指定して作成されたディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +index\-<number>\&.html: +\fI\-splitindex\fRオプションを指定して作成された索引ファイル +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +package\-list: 外部参照を解決するためのパッケージ名 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +stylesheet\&.css: フォント、色、位置などを定義します +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBjava\fR: パッケージ・ディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBapplet\fR: サブパッケージ・ディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Applet\&.html: +\fIApplet\fRクラス・ページ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +AppletContext\&.html: +\fIAppletContext\fRインタフェース +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +AppletStub\&.html: +\fIAppletStub\fRインタフェース +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +AudioClip\&.html: +\fIAudioClip\fRインタフェース +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +package\-summary\&.html: クラスとサマリー +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +package\-frame\&.html: 左下のフレームに表示するパッケージ・クラス +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +package\-tree\&.html: このパッケージのクラス階層 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +package\-use\&.html: このパッケージが使用される場所 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBdoc\-files\fR: イメージおよびサンプル・ファイルのディレクトリ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBclass\-use\fR: イメージおよびサンプル・ファイルの場所 +.sp +\- Applet\&.html: Appletクラスの使用 +.sp +\- AppletContext\&.html: +\fIAppletContext\fRインタフェースの使用 +.sp +\- AppletStub\&.html: +\fIAppletStub\fRインタフェースの使用 +.sp +\- AudioClip\&.html: +\fIAudioClip\fRインタフェースの使用 +.RE +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBsrc\-html\fR: ソース・コード・ディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBjava\fR: パッケージ・ディレクトリ +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBapplet\fR: サブパッケージ・ディレクトリ +.sp +\- Applet\&.html: Appletソース・コード +.sp +\- AppletContext\&.html: +\fIAppletContext\fRソース・コード +.sp +\- AppletStub\&.html: +\fIAppletStub\fRソース・コード +.sp +\- AudioClip\&.html: +\fIAudioClip\fRソース・コード +.RE +.RE +.RE +.SS "生成されるAPI宣言" +.PP +\fIjavadoc\fRコマンドは、それぞれのクラス、インタフェース、フィールド、コンストラクタ、およびメソッドの記述の最初に、そのAPI用の宣言を生成します。たとえば、\fIBoolean\fRクラスの宣言は、次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - -.fl -\fP\f3apidocs\fP 最上位ディレクトリ -.fl - index.html HTML フレームを設定する初期ページ -.fl - * overview\-summary.html 全パッケージのリスト。先頭文による要約付き -.fl - overview\-tree.html 全パッケージのクラス階層のリスト -.fl - deprecated\-list.html 全パッケージの非推奨 API のリスト -.fl - constant\-values.html 全パッケージの static フィールドの値のリスト -.fl - serialized\-form.html 全パッケージの直列化された形式のリスト -.fl - * overview\-frame.html 全パッケージのリスト。左上のフレームで使用される -.fl - allclasses\-frame.html 全パッケージの全クラスのリスト。左下のフレームで使用される -.fl - help\-doc.html これらのページの構成を示すユーザーヘルプのリスト -.fl - index\-all.html \-splitindex オプションを指定しなかった場合に作成されるデフォルトの索引 -.fl - \f3index\-files\fP \-splitindex オプションを指定した場合に作成されるディレクトリ -.fl - index\-<number>.html \-splitindex オプションを指定した場合に作成される索引ファイル -.fl - package\-list パッケージ名のリスト。外部参照を解決するためだけに使用される -.fl - stylesheet.css フォント、色、配置を定義する HTML スタイルシート -.fl - \f3java\fP パッケージディレクトリ -.fl - \f3applet\fP サブパッケージディレクトリ -.fl - Applet.html Applet クラスのページ -.fl - AppletContext.html AppletContext インタフェースのページ -.fl - AppletStub.html AppletStub インタフェースのページ -.fl - AudioClip.html AudioClip インタフェースのページ -.fl - * package\-summary.html このパッケージのクラスのリスト。先頭文による要約付き -.fl - * package\-frame.html このパッケージのクラスのリスト。左下のフレームで使用される -.fl - * package\-tree.html このパッケージのクラス階層のリスト -.fl - package\-use このパッケージが使用されている場所のリスト -.fl - \f3doc\-files\fP 画像やサンプルファイルを保持するディレクトリ -.fl - \f3class\-use\fP API が使用されている場所のページを保持するディレクトリ -.fl - Applet.html Applet クラスの使用に関するページ -.fl - AppletContext.html AppletContext インタフェースの使用に関するページ -.fl - AppletStub.html AppletStub インタフェースの使用に関するページ -.fl - AudioClip.html AudioClip インタフェースの使用に関するページ -.fl - \f3src\-html\fP ソースコードディレクトリ -.fl - \f3java\fP パッケージディレクトリ -.fl - \f3applet\fP サブパッケージディレクトリ -.fl - Applet.html Applet ソースコードのページ -.fl - AppletContext.html AppletContext ソースコードのページ -.fl - AppletStub.html AppletStub ソースコードのページ -.fl - AudioClip.html AudioClip ソースコードのページ -.fl +public final class Boolean +extends Object +implements Serializable .fi -.SS -生成される API 宣言 -.LP -Javadoc ツールは、それぞれのクラス、インタフェース、フィールド、コンストラクタ、およびメソッドの説明の最初に、その API 用の宣言を生成します。たとえば、 \f2Boolean\fP クラスの宣言は、次のようになります。 -.LP -\f2public final class Boolean\fP -.br -\f2extends Object\fP -.br -\f2implements Serializable\fP -.LP -また、 \f2Boolean.valueOf\fP メソッドの宣言は、次のようになります。 -.LP -\f2public static Boolean valueOf(String s)\fP -.LP -Javadoc ツールでは、修飾子 \f2public\fP、 \f2protected\fP、 \f2private\fP、 \f2abstract\fP、 \f2final\fP、 \f2static\fP、 \f2transient\fP、および \f2volatile\fP は組み込めますが、 \f2synchronized\fP と \f2native\fP は組み込めません。これら後者の 2 つの修飾子は、実装の詳細と見なされているため、API 仕様には含まれません。 -.LP -API では、並行性セマンティクスについて、キーワード \f2synchronized\fP に依存するのではなく、コメントの主説明としてドキュメント化すべきです。 \f2たとえば、「1 つの Enumeration を\fP 複数のスレッドから並行して使用することはできない」などと記述します。ドキュメントには、これらのセマンティクスを実現する方法を記述するべきではありません。たとえば、 \f2Hashtable\fP はスレッドに対して安全である必要がありますが、「エクスポートされるすべてのメソッドを同期化すればそれを実現できる」のようには指定する根拠はありません。バケットレベルで内部的に同期化する権利を残しておく必要があります。そうすれば、より高度な並行性が提供されます。 -.SH "ドキュメンテーションコメント" -.LP -オリジナルの「ドキュメンテーションコメントの仕様」は、「関連項目」を参照してください。 -.SS -ソースコードへのコメントの挿入 -.LP -ソースコードの任意のクラス、インタフェース、メソッド、コンストラクタ、またはフィールドの宣言の前に、ドキュメンテーションコメント ("doc comments") を記述することができます。各パッケージにドキュメンテーションコメントを作成できます。構文は若干異なりますが、概要にもドキュメンテーションコメントを作成できます。ドキュメンテーションコメントは、非公式に「Javadoc コメント」と呼ばれています (この用語は商標関連の使用法に違反)。ドキュメンテーションコメントは、コメントを始まりを示す文字列 \f2/**\fP と、コメントを終わりを示す文字列 \f2*/\fP の間にある文字から構成されます。行の先頭のアスタリスクは、各行に記述できます。詳細は、以下で説明します。コメントのテキストは、複数行にわたって記述できます。 +.if n \{\ +.RE +.\} +.PP +\fIBoolean\&.valueOf\fRメソッドの宣言は次のとおりです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +public static Boolean valueOf(String s) +.fi +.if n \{\ +.RE +.\} +.PP +\fIjavadoc\fRコマンドは、修飾子\fIpublic\fR、\fIprotected\fR、\fIprivate\fR、\fIabstract\fR、\fIfinal\fR、\fIstatic\fR、\fItransient\fR、および\fIvolatile\fRを含めることができますが、\fIsynchronized\fRおよび\fInative\fRはできません。\fIsynchronized\fRおよび\fInative\fR修飾子は、実装の詳細とみなされているため、API仕様には含まれません。 +.PP +APIでは、並行性セマンティクスについて、キーワード\fIsynchronized\fRに依存するのではなく、コメントの主説明としてドキュメント化する必要があります。たとえば、「1つのenumerationを複数のスレッドから並行して使用することはできない」のように記述します。ドキュメントには、これらのセマンティクスを実現する方法を記述しないでください。たとえば、\fIHashtable\fRオプションはスレッドセーフである必要がありますが、「エクスポートされるすべてのメソッドを同期化してそれを実現する」のように指定する根拠はありません。より高度な並行性のために、バケット・レベルで内部的に同期化する権限を保有しておくことをお薦めします。 +.SH "ドキュメンテーション・コメント" +.PP +このセクションでは、ソース・コードのコメントとコメントの継承について説明します。 +.SS "ソース・コード・コメント" +.PP +ソース・コードの任意のクラス、インタフェース、メソッド、コンストラクタ、またはフィールドの宣言の前に、ドキュメンテーション・コメントを記述することができます。各パッケージにもドキュメンテーション・コメントを作成できます。構文は若干異なりますが、概要にもドキュメンテーション・コメントを作成できます。ドキュメンテーション・コメントは、\fI/**\fRと、終わりを表す\fI*/\fRの間にある文字から構成されます。先頭のアスタリスクは各行で使用でき、次の項で詳しく説明します。コメントのテキストは、複数行にわたって記述できます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl * This is the typical format of a simple documentation comment -.fl - * that spans two lines. -.fl + * that spans two lines\&. */ -.fl -\fP .fi -.LP -次のようにして 1 行に記述すると、スペースを節約できます。 +.if n \{\ +.RE +.\} +.PP +スペースを節約するには、コメントを1行に入れます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -/** This comment takes up only one line.*/ -.fl -\fP +/** This comment takes up only one line\&. */ .fi -.LP -\f3コメントの配置\fP \- ドキュメンテーションコメントは、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドの宣言の直前に置かれているときにだけ認識されます。クラスの例、メソッドの例、およびフィールドの例を参照してください。メソッドの本体に置かれているドキュメンテーションコメントは無視されます。javadoc ツールでは、1 つの宣言文につき 1 つのドキュメンテーションコメントだけが認識されます。 -.LP -よくある間違いは、クラスコメントとクラス宣言の間に \f2import\fP 文を置いてしまうことです。このような記述はしないでください。このようなクラスコメントは無視されます。 +.if n \{\ +.RE +.\} +コメントの配置.PP +ドキュメンテーション・コメントは、クラス、インタフェース、コンストラクタ、メソッド、またはフィールド宣言の直前に配置される場合にのみ認識されます。メソッドの本体に置かれているドキュメンテーション・コメントは無視されます。\fIjavadoc\fRコマンドは、宣言文ごとに1つのドキュメンテーション・コメントしか認識しません。タグを使用できる場所を参照してください。 +.PP +よくある間違いは、クラス・コメントとクラス宣言の間に\fIimport\fR文を置いてしまうことです。\fIjavadoc\fRコマンドはクラス・コメントを無視するので、\fIimport\fR文をこの場所に配置しないでください。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - /** -.fl - * This is the class comment for the class Whatever. -.fl - */ -.fl - -.fl - import com.sun; // MISTAKE \- Important not to put import statement here -.fl - -.fl - public class Whatever { -.fl - } -.fl -\fP -.fi -.LP -\f3ドキュメンテーションコメントは主説明のあとにタグセクションが続く \- コメントの開始区切り文字である\fP \f2/**\fP のあとからタグセクションまでが主説明になります。タグセクションは、行の先頭にある最初の \f2@\fP で定義される最初のブロックタグから始まります (先頭のアスタリスク、空白、先頭の区切り文字 \f2/**\fP は除く)。主説明を記述せず、タグセクションだけのコメントを記述することもできます。主説明は、タグセクション以降に続けることはできません。タグの引数は、複数行にわたって記述できます。タグの数に制限はありません。何回も記述できるタグと、1 回しか記述できないタグがあります。たとえば、次の \f2@see\fP は、タグセクションを開始しています。 -.nf -\f3 -.fl /** -.fl - * This sentence would hold the main description for this doc comment. -.fl - * @see java.lang.Object -.fl + * This is the class comment for the class Whatever\&. */ -.fl -\fP + +import com\&.example; // MISTAKE \- Important not to put import statement here + +public class Whatever{ } .fi -.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 が含まれています。 +.if n \{\ +.RE +.\} +コメントのパーツ.PP +ドキュメンテーション・コメントには、主説明とその後に続くタグ・セクションが含まれます。主説明は、開始区切り文字\fI/**\fRで始まり、タグ・セクションまで続きます。タグ・セクションは、先頭文字が\fI@\fRの行で定義される最初のブロック・タグから始まります(先頭のアスタリスク、空白文字、先頭の区切り文字\fI/**\fRは除く)。主説明を記述せず、タグ・セクションのみのコメントを記述することもできます。主説明は、タグ・セクション以降に続けることはできません。タグの引数は、複数行にわたって記述できます。タグの数に制限はありません。何回も記述できるタグと、1回しか記述できないタグがあります。たとえば、次の\fI@see\fRタグからタグ・セクションは始まります。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl - * @deprecated As of JDK 1.1, replaced by {@link #setBounds(int,int,int,int)} -.fl + * This sentence holds the main description for this documentation comment\&. + * @see java\&.lang\&.Object */ -.fl -\fP .fi -.LP -\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 -次に、ドキュメンテーションコメントを示します。 +.if n \{\ +.RE +.\} +ブロックおよびインライン・タグ.PP +タグは、\fIjavadoc\fRコマンドが処理するドキュメンテーション・コメント内の特殊なキーワードです。タグには2つのタイプがあります。1つは\fI@tag\fRタグのように表記されるブロック・タグ(スタンドアロン・タグとも呼ばれる)、もう1つは\fI{@tag}\fRタグのように中カッコで囲んで表記されるインライン・タグです。ブロック・タグが解釈されるには、行頭のアスタリスク、空白文字、区切り文字(\fI/**\fR)を除いて、行の先頭に置く必要があります。これは、\fI@\fR文字をテキスト内の別の場所で使用しても、タグの開始として解釈されないことを意味しています。\fI@\fR文字を使用して行を開始しても、それが解釈されないようにするには、HTMLエンティティ\fI@\fRを使用します。それぞれのブロック・タグには、関連付けられたテキストがあります。このテキストは、タグの後から、次のタグの前、またはドキュメンテーション・コメントの最後までの間に記述されたテキストです(タグまたはコメント区切り文字を除く)。この関連テキストは、複数行にわたって記述できます。インライン・タグは、テキストを記述できる場所であればどこにでも置くことができ、解釈されます。次の例にはブロック・タグ\fI@deprecated\fRとインライン・タグ\fI{@link}\fRが含まれています。javadocタグを参照してください。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl - * This is a <b>doc</b> comment. -.fl - * @see java.lang.Object -.fl + * @deprecated As of JDK 1\&.1, replaced by {@link #setBounds(int,int,int,int)} */ -.fl -\fP .fi -.LP -\f3行頭のアスタリスク\fP \- javadoc によるドキュメンテーションコメントの解析時に、各行の先頭にあるアスタリスク (\f2*\fP) 文字は破棄されます。最初のアスタリスク (\f2*\fP) 文字より前にある空白やタブも破棄されます。バージョン 1.4 からは、行の先頭のアスタリスクを省略しても、先頭の空白文字は削除されなくなりました。このため、コード例を直接ドキュメンテーションコメントの \f2<PRE>\fP タグ内にペーストしても、インデントが保持されます。通常、ブラウザは、空白文字をタブよりも一律に解釈します。インデントの起点は左マージンになります (区切り文字 \f2/**\fP または \f2<PRE>\fP タグではなく)。 -.LP -\f3最初の文\fP \- 各ドキュメンテーションコメントの最初の文は、宣言されているエンティティーに関する簡潔かつ完全な要約文である必要があります。この「最初の文」は、直後にスペース、タブ、または改行が続く最初のピリオド (ロケールが英語に設定されている場合)、または最初のタグがある位置で終わります。最初の文は、Javadoc ツールによって HTML ページの最初にあるメンバーの概要の部分にコピーされます。 -.LP -\f3複数フィールドの宣言\fP \- Java では、1 つの文で複数のフィールドを宣言できます。ただし、この文には、1 つのドキュメンテーションコメントしか記述できません。そのコメントが、すべてのフィールドに対してコピーされます。したがって、フィールドごとにドキュメンテーションコメントを記述する必要がある場合は、各フィールドを別々の文で宣言しなければなりません。たとえば、次のドキュメンテーションコメントは、1 つの宣言として記述すると不適切です。この場合は、宣言を 2 つに分けることをお勧めします。 +.if n \{\ +.RE +.\} +HTMLでのコメントの記述.PP +テキストはHTMLエンティティとHTMLタグを使用してHTMLで記述される必要があります。使用するブラウザがサポートする任意のHTMLのバージョンを使用できます。標準ドックレットは、カスケーディング・スタイル・シートおよびフレームを含め、ドキュメンテーション・コメント以外の部分でHTML 3\&.2に準拠したコードを生成します。フレーム・セットのため、生成されたファイルにはHTML 4\&.0が推奨されます。 +.PP +たとえば、より小さい記号(<)およびより大きい記号(>)のエンティティは、\fI<\fRおよび\fI>\fRと記述する必要があります。同様に、アンパサンド(&)は\fI&\fRと記述する必要があります。次の例では、太字のHTMLタグ\fI<b>\fRを使用しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * This is a <b>doc</b> comment\&. + * @see java\&.lang\&.Object + */ +.fi +.if n \{\ +.RE +.\} +先頭のアスタリスク.PP +\fIjavadoc\fRコマンドによるドキュメンテーション・コメントの解析時に、各行の先頭にあるアスタリスク(*)文字は破棄されます。最初のアスタリスク(*)文字より前にある空白やタブも破棄されます。行頭のアスタリスクを省略した場合、インデントを保持したままでサンプル・コードを\fI<PRE>\fRタグ内のドキュメンテーション・コメントに直接貼り付けられるように、先頭の空白文字は削除されなくなります。ブラウザは、空白文字をタブよりも一律に解釈します。インデントの起点は(区切り文字\fI/**\fRまたは\fI<PRE>\fRタグではなく)左マージンになります。 +最初の文.PP +各ドキュメンテーション・コメントの最初の文は、宣言されているエンティティに関する簡潔かつ完全なサマリー文である必要があります。この文は、空白、タブ、または行終了文字が続く最初のピリオド、または最初のブロック・タグがある位置で終わります。最初の文は、\fIjavadoc\fRコマンドによってHTMLページの先頭にあるメンバーのサマリーの部分にコピーされます。 +複数フィールドの宣言.PP +Javaプラットフォームでは、1つの文で複数のフィールドを宣言できます。ただし、この文には、1つのドキュメンテーション・コメントしか記述できません。そのコメントが、すべてのフィールドに対してコピーされます。フィールドごとにドキュメンテーション・コメントを記述する必要がある場合は、各フィールドを別々の文で宣言する必要があります。たとえば、次のドキュメンテーション・コメントは、1つの宣言として記述すると不適切です。この場合は、宣言を2つに分けることをお薦めします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl * The horizontal and vertical distances of point (x,y) -.fl */ -.fl -public int x, y; // Avoid this -.fl -\fP +public int x, y; // Avoid this + .fi -.LP -上記のコードからは、次のようなドキュメントが生成されます。 +.if n \{\ +.RE +.\} +.PP +\fIjavadoc\fRコマンドは、上のコードから次のようなドキュメントを生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -public int \fP\f3x\fP -.fl +public int x .fi -.RS 3 -The horizontal and vertical distances of point (x,y) +.if n \{\ .RE +.\} +.PP +The horizontal and vertical distances of point (x, y)\&. +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -public int \fP\f3y\fP -.fl +public int y .fi -.RS 3 -The horizontal and vertical distances of point (x,y) +.if n \{\ .RE -.LP -\f3見出しタグはなるべく使用しない\fP \- メンバーに対してドキュメンテーションコメントを記述するときには、<H1> や <H2> などの HTML 見出しタグは、なるべく使わないでください。 Javadoc ツールは、完全に構造化されたドキュメントを作成するので、このような構造化タグが使われていると、生成ドキュメントの形式が悪影響を受けることがあります。ただし、クラスやパッケージのコメントでは、これらの見出しタグを使って独自の構造を組み立ててかまいません。 -.SS -メソッドコメントの自動コピー -.LP -Javadoc ツールには、次の 2 つの場合に、クラスおよびインタフェースのメソッドコメントをコピーまたは「継承」する機能があります。コンストラクタ、フィールド、および入れ子のクラスは、ドキュメンテーションコメントを継承しません。 -.RS 3 -.TP 2 -o -\f3自動的にコメントを継承して見つからないテキストを埋める\fP \- 主説明、 \f2@return\fP タグ、 \f2@param\fP タグ、または \f2@throws\fP タグがメソッドコメントに見つからない場合、Javadoc ツールは、オーバーライドまたは実装している場合はその対象となるメソッドから、対応する主説明またはタグコメントを、次のアルゴリズムに従ってコピーします。 -.LP -厳密には、特定のパラメータの \f2@param\fP タグが見つからない場合、そのパラメータのコメントが、上位の継承階層のメソッドからコピーされます。特定の例外の \f2@throws\fP タグが見つからない場合、その例外が宣言されている場合にかぎり、 \f2@throws\fP タグがコピーされます。 -.LP -この動作はバージョン 1.3 以前の動作とは対照的です。これまでのバージョンでは、主説明またはタグが存在すれば、コメントは一切継承されませんでした。 -.TP 2 -o -\f3{@inheritDoc} タグを含むコメントを明示的に継承する\fP \- インラインタグ \f2{@inheritDoc}\fP を、メソッドの主説明内または \f2@return\fP タグ、 \f2@param\fP タグ、または \f2@throws\fP のいずれかのタグコメント内に挿入します。対応する継承された主説明またはタグコメントがその位置にコピーされます。 +.\} +.PP +The horizontal and vertical distances of point (x, y)\&. +ヘッダー・タグの使用.PP +メンバーに対してドキュメンテーション・コメントを記述するときには、\fI<H1>\fRや\fI<H2>\fRなどのHTML見出しタグを使用しないことをお薦めします。\fIjavadoc\fRコマンドは、完全な構造化ドキュメントを作成するので、このような構造化タグが使用されていると、生成ドキュメントの形式が悪影響を受けることがあります。ただし、クラスやパッケージのコメントでは、これらの見出しを使用して独自の構造を指定してかまいません。 +.SS "メソッド・コメントの継承" +.PP +\fIjavadoc\fRコマンドでは、クラスおよびインタフェースでメソッド・コメントを継承して、欠落したテキストを入力したり、明示的にメソッド・コメントを継承することができます。コンストラクタ、フィールド、およびネストされたクラスは、ドキュメンテーション・コメントを継承しません。 +.PP +\fB注意:\fR +ドキュメンテーション・コメントをコピーに利用するには、継承したメソッドのソース・ファイルが\fI\-sourcepath\fRオプションで指定したパスのみに置かれている必要があります。コマンドラインで、クラスもパッケージも渡す必要はありません。この点はリリース1\&.3\&.\fIn\fR以前とは対照的です。これまでは、クラスがドキュメント化されるクラスであることが必要でした。 +欠落テキストの入力.PP +主説明、または\fI@return\fR、\fI@param\fR、\fI@throws\fRタグがメソッド・コメントから欠落している場合、\fIjavadoc\fRコマンドは、対応する主説明またはタグ・コメントを、それがオーバーライドまたは実装しているメソッド(ある場合)からコピーします。メソッド・コメントの継承を参照してください。 +.PP +特定のパラメータの\fI@param\fRタグが見つからない場合、そのパラメータのコメントが、上位の継承階層のメソッドからコピーされます。特定の例外の\fI@throws\fRタグが見つからない場合、その例外が宣言されている場合にかぎり、\fI@throws\fRタグがコピーされます。 +.PP +この動作はリリース1\&.3以前の動作とは対照的です。これまでのバージョンでは、主説明またはタグが存在すれば、コメントは一切継承されませんでした。 +.PP +javadocタグおよびオプションを参照してください。 +明示的な継承.PP +\fI{@inheritDoc}\fRインライン・タグをメソッドの主説明または\fI@return\fR、\fI@param\fR、\fI@throws\fRタグ・コメントに挿入します。対応する継承された主説明またはタグ・コメントは、その場所にコピーされます。 +.SS "クラスおよびインタフェースの継承" +.PP +コメントの継承は、クラスおよびインタフェースからの継承の、考えられるすべての場合に発生します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +クラスのメソッドがスーパークラスのメソッドをオーバーライドしている場合 .RE -.LP -ドキュメンテーションコメントを実際にコピーに利用するには、継承したメソッドのソースファイルが \-sourcepath で指定したパスだけに置かれていることが必要になります。コマンド行で、クラスもパッケージも渡す必要はありません。この点は、クラスがドキュメント化されるクラスでなければならなかった 1.3.x 以前のリリースと異なります。 -.LP -\f3クラスおよびインタフェースからの継承\fP \- クラスおよびインタフェースから継承する次の 3 つの場合に、コメントの継承が行われます。 -.RS 3 -.TP 2 -o -クラスのメソッドがスーパークラスのメソッドをオーバーライドしている -.TP 2 -o -インタフェースのメソッドがスーパーインタフェースのメソッドをオーバーライドしている -.TP 2 -o -クラスのメソッドがインタフェースのメソッドを実装している +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +インタフェースのメソッドがスーパーインタフェースのメソッドをオーバーライドしている場合 .RE -.LP -最初の 2 つのケース (メソッドがオーバーライドしている場合) では、Javadoc ツールは、そのコメントが継承されているかどうかにかかわらず、オーバーライドしているメソッドのドキュメント内に「オーバーライド」という小見出しを生成し、オーバーライドされているメソッドへのリンクを書き込みます。 -.LP -3 つ目のケース (特定のクラスのメソッドがインタフェースのメソッドを実装している場合) では、javadoc ツールは、オーバーライドしているメソッドのドキュメント内に「定義」という小見出しを生成し、実装されているメソッドへのリンクを書き込みます。これは、コメントが継承されているかどうかにかかわりません。 -.LP -\f3メソッドの説明が継承されるアルゴリズム\fP \- あるメソッドにドキュメンテーションコメントが記述されていない場合、または {@inheritDoc} タグがある場合、Javadoc ツールは、次のようなアルゴリズムを使用して適切なコメントを検索します。 このアルゴリズムは、もっとも適切なドキュメンテーションコメントを検索できるように設計されており、スーパークラスよりもインタフェースが優先されるようになっています。 -.RS 3 -.TP 3 -1. -直接に実装されている (または、拡張されている) インタフェースを、メソッドの宣言で implements (または extends) キーワードのあとに登場する順序で、1 つずつ調べる。このメソッドについて最初に見つかったドキュメンテーションコメントを採用する -.TP 3 -2. -手順 1 でドキュメンテーションコメントが見つからなかった場合は、直接実装されている (または、拡張されている) インタフェースのそれぞれに対して、このアルゴリズム全体を再帰的に適用する (その際の順序は、手順 1 でインタフェースを調べたときの順序と同じ) -.TP 3 -3. -手順 2 でドキュメンテーションコメントが見つからなかった場合で、このクラスが Object 以外のクラスである (インタフェースではない) 場合は、次のように処理する -.RS 3 -.TP 3 -a. -スーパークラスにこのメソッドについてのドキュメンテーションコメントが記述されていれば、そのコメントを採用する -.TP 3 -b. -手順 3a でドキュメンテーションコメントが見つからなかった場合は、スーパークラスに対して、このアルゴリズム全体を適用する +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +クラスのメソッドがインタフェースのメソッドを実装している場合 +.RE +.PP +最初の2つのケースでは、\fIjavadoc\fRコマンドは、オーバーライドしているメソッドのドキュメント内に\fI「オーバーライド」\fRという小見出しを生成します。コメントが継承されているかどうかにかかわらず、オーバーライドされているメソッドへのリンクが含まれます。 +.PP +3つ目のケース(特定のクラスのメソッドがインタフェースのメソッドを実装している場合)では、\fIjavadoc\fRコマンドは、オーバーライドしているメソッドのドキュメント内に\fI「定義」\fRという小見出しを生成します。コメントが継承されているかどうかにかかわらず、実装されているメソッドへのリンクが含まれます。 +.SS "メソッド・コメントのアルゴリズム" +.PP +メソッドにドキュメンテーション・コメントがない、または\fI{@inheritDoc}\fRタグがある場合、\fIjavadoc\fRコマンドは次のアルゴリズムを使用して適用できるコメントを検索します。アルゴリズムは、最も特定される適用可能なドキュメンテーション・コメントを探し、スーパークラスよりもインタフェースを優先するように設計されています。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +直接に実装されている(または、拡張されている)インタフェースを、メソッドの宣言で\fIimplements\fR(または\fIextends\fR)という語の後に出現する順序で、1つずつ調べます。このメソッドについて最初に見つかったドキュメンテーション・コメントを採用します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +手順1でドキュメンテーション・コメントが見つからなかった場合は、直接実装されている(または、拡張されている)インタフェースのそれぞれに対して、このアルゴリズム全体を再帰的に適用します(その際の順序は、手順1でインタフェースを調べたときの順序と同じ)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 3.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 3." 4.2 +.\} +手順2でドキュメンテーション・コメントが見つからなかった場合で、このクラスが\fIObject\fR以外のクラスであるが、インタフェースではない場合は、次のように処理します。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +スーパークラスにこのメソッドについてのドキュメンテーション・コメントが記述されている場合は、そのコメントを採用します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +手順3aでドキュメンテーション・コメントが見つからなかった場合は、スーパークラスに対して、このアルゴリズム全体を再帰的に適用します。 .RE .RE -.SH "javadoc タグ" -.LP -Javadoc ツールは、Java のドキュメンテーションコメント内に埋め込まれた特別なタグを解析します。これらのドキュメンテーションタグを使うと、書式の整った完全な API ドキュメントをソースコードから自動的に生成できます。タグは「アットマーク」記号 (\f2@\fP) で始まり、大文字と小文字の区別があります。タグは、大文字と小文字を使用して、表示されているとおりに入力する必要があります。タグは、行の先頭 (先行する空白と省略可能なアスタリスクは除く) に置かなければなりません。慣例として、同じ名前のタグは 1 か所にまとめて記述するようにします。たとえば、 \f2@see\fP タグはすべて同じ場所に配置します。 -.LP -タグには 2 つのタイプがあります。 -.RS 3 -.TP 2 -o -\f3ブロックタグ\fP \- 主説明に続くタグセクション内にのみ記述可能。ブロックタグは、 \f2@tag\fP の形式をとります。 -.TP 2 -o -\f3インラインタグ\fP \- 主説明内、またはブロックタグのコメント内に記述可能。インラインタグは、 \f2{@tag}\fP.のように中括弧で囲みます。 +.SH "JAVADOCタグ" +.PP +\fIjavadoc\fRコマンドは、Javaのドキュメンテーション・コメント内に埋め込まれた特別なタグを解析します。\fIjavadoc\fRタグを使用すると、完全な整形式のAPIをソース・コードから自動的に生成できます。タグはアットマーク記号(\fI@\fR)で始まり、大文字と小文字が区別されます。これらのタグは、表示されているとおりに大文字と小文字を使用して入力する必要があります。タグは、行の先頭(先頭の空白文字と省略可能なアスタリスクの後)に置く必要があります。そうしないと、テキストとして扱われます。慣例として、同じ名前のタグは1箇所にまとめます。たとえば、\fI@see\fRタグが複数ある場合は、すべて同じ場所にまとめて配置します。詳細は、タグを使用できる場所を参照してください。 +.PP +タグには、次のタイプがあります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ブロック・タグ: ブロック・タグは主説明に続くタグ・セクション内にのみ配置します。ブロック・タグは、\fI@tag\fRの形式をとります。 .RE -.LP -今後のリリースで導入されるタグについては、 -.na -\f2「Proposed Javadoc Tags」\fP @ -.fi -http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください。 -.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 -.. +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +インライン・タグ: インライン・タグは主説明内またはブロック・タグのコメント内の任意の場所に配置します。インライン・タグは\fI{@tag}\fRのように中カッコで囲みます。 +.RE +.PP +カスタム・タグについては、\-tag tagname:Xaoptcmf:"taghead"を参照してください。タグを使用できる場所も参照してください。 +.SS "タグの説明" +.PP +@author \fIname\-text\fR +.RS 4 +JDK 1\&.0で導入 +.sp +\fI\-author\fRオプションが使用されている場合、指定した名前のテキストの作成者エントリを生成されるドキュメントに追加します。1つのドキュメンテーション・コメントに複数の\fI@author\fRタグを含めることができます。1つの\fI@author\fRタグに1つの名前を指定することも、複数の名前を指定することもできます。前者の場合は、\fIjavadoc\fRコマンドによって名前と名前の間にカンマ(,)と空白文字が挿入されます。後者の場合は、テキスト全体が解析されることなく、生成ドキュメントにコピーされます。したがって、カンマではなく、各言語に対応した名前区切り文字を使用する必要があるときに、1行に複数の名前を指定できます。JavadocツールでのDocコメントの記述方法の@authorに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@author)を参照してください。 +.RE +.PP +{@code \fItext\fR} +.RS 4 +JDK 1\&.5で導入 +.sp +\fI<code>{@literal}</code>\fRと同等です。 +.sp +テキストをHTMLマークアップまたはネストされたJavadocタグとして解釈せずに、textをコード・フォントで表示します。これにより、ドキュメンテーション・コメントでは、パラメータの型(\fI<Object>\fR)、不等号(\fI3 < 4\fR)、矢印(\fI<\-\fR)などで、通常の山カッコ(<および>)をHTMLエンティティ(\fI<\fRおよび\fI>\fR)のかわりに使用できます。たとえば、ドキュメンテーション・コメント\fI{@code A<B>C}\fRは\fIA<B>C\fRとして変更されずに生成されたHTMLページに表示されます。つまり、\fI<B>\fRが太字として解釈されず、そのフォントはコード・フォントになります。コード・フォントなしで同じ機能を実現するには、\fI{@literal}\fRタグを使用します。 +.RE +.PP +@deprecated \fIdeprecated\-text\fR +.RS 4 +JDK 1\&.0で導入 +.sp +このAPIは動作し続けますが、このAPIを使用しないことを薦めるコメントを追加します。\fIjavadoc\fRコマンドは、\fIdeprecated\-text\fRを主説明の前に移動してイタリックにし、その前に太字の警告「推奨されていません。」を追加します。このタグは、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 +.sp +非推奨テキストの最初の文では、そのAPIが推奨されなくなった時期と、代替として使用するAPIをユーザーに提示する必要があります。\fIjavadoc\fRコマンドは、この最初の文を、サマリー・セクションと索引にコピーします。その後の文で非推奨になった理由を説明することもできます。代替APIを指し示す\fI{@link}\fRタグ(Javadoc 1\&.2以降の場合)を含める必要があります。 +.sp +\fI@deprecated annotation\fRタグを使用してプログラム要素を非推奨にします。APIを非推奨にする方法と時期 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/deprecation/deprecation\&.html)を参照してください。 +.sp +JavadocツールでのDocコメントの記述方法の@deprecatedに関する項 + +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@deprecated)も参照してください。 +.RE +.PP +{@docRoot} +.RS 4 +JDK 1\&.3で導入 +.sp +生成されるページからの、生成ドキュメントの(生成先)ルート・ディレクトリへの相対パスを表します。このタグは、著作権のページや会社のロゴなど、生成されるすべてのページから参照するファイルを組み込むときに便利です。通常は、各ページの最下部から著作権のページにリンクします。 +.sp +この\fI{@docRoot}\fRタグは、コマンドラインでもドキュメンテーション・コメント内でも使用できます。このタグは、任意のタグ(\fI@return\fR、\fI@param\fRおよび\fI@deprecated\fRタグなど)のテキスト部分を含む、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +コマンドラインで、ヘッダー、フッターまたは最下部が次のように定義されます。\fIjavadoc \-bottom \*(Aq<a href="{@docRoot}/copyright\&.html">Copyright</a>\*(Aq\fR +.sp +\fI{@docRoot}\fRタグをmakefile内でこのように利用する場合、一部の\fImakefile\fRプログラムでは、中カッコ\fI{}\fR文字を特別にエスケープする必要があります。たとえば、Inprise MAKEバージョン5\&.2をWindows上で実行する場合は、\fI{{@docRoot}}\fRのように、中カッコを二重にする必要があります。\fI\-bottom\fRオプションなどのオプションへの引数を囲むのに、二重(一重ではなく)引用符も必要です(\fIhref\fR引数を囲む引用符は省略)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ドキュメンテーション・コメントでは +.sp +.if n \{\ +.RS 4 +.\} .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 -\f3導入された JDK/SDK のバージョン\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 -.nr 38 \w\f2@author\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@code}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@docRoot}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@deprecated\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@exception\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@inheritDoc}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@link}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@linkplain}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@literal}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@param\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@return\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@see\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@serial\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@serialData\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@serialField\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@since\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@throws\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2{@value}\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f2@version\fP -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.5 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.3 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.4 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.2 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.4 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.5 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.2 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.2 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.2 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.1 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.2 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.4 -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w1.0 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.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 851 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3タグ\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 (\n(41u+\n(81u-\n(a-u)/2u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@author\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@code}\fP\h'|\n(41u'1.5 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@docRoot}\fP\h'|\n(41u'1.3 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@deprecated\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@exception\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@inheritDoc}\fP\h'|\n(41u'1.4 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@link}\fP\h'|\n(41u'1.2 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@linkplain}\fP\h'|\n(41u'1.4 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@literal}\fP\h'|\n(41u'1.5 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@param\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@return\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@see\fP\h'|\n(41u'1.0 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@serial\fP\h'|\n(41u'1.2 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@serialData\fP\h'|\n(41u'1.2 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@serialField\fP\h'|\n(41u'1.2 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@since\fP\h'|\n(41u'1.1 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@throws\fP\h'|\n(41u'1.2 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2{@value}\fP\h'|\n(41u'1.4 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f2@version\fP\h'|\n(41u'1.0 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-44 -.LP -カスタムタグについては、\-tag オプションを参照してください。 -.RS 3 -.TP 3 -@author\ name\-text -\-author オプションが使用されている場合、指定された \f2name\-text\fP を含む [作成者] エントリを生成ドキュメントに追加します。1 つのドキュメンテーションコメントに複数の \f2@author\fP タグを含めることができます。1 つの \f2@author\fP タグに 1 つの名前を指定することも、複数の名前を指定することもできます。前者の場合は、Javadoc ツールによって名前と名前の間にコンマ (\f2,\fP) と空白が挿入されます。後者の場合は、テキスト全体が、解析されることなく、生成ドキュメントにそのままコピーされます。したがって、コンマではなく、各言語に対応した名前区切り文字を使う必要があるときは、1 つのタグに複数の名前を指定してください。 -.RE -.LP -詳細については、「タグを使用できる場所」および -.na -\f2@author タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@authorを参照してください。 -.LP -.RS 3 -.TP 3 -@deprecated\ deprecated\-text 注: @Deprecated 注釈を使って特定のプログラム要素を非推奨にできます。 -.RE -.LP -この API は動作し続けますが、この API を使用するべきではないことを示すコメントを追加します。Javadoc ツールは、 \f2deprecated\-text\fP を主説明の前に移動してイタリックにし、その前にボールドの警告「推奨されません。」を追加します。このタグは、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 -.LP -\f2deprecated\-text\fP の最初の文では、少なくとも、その API が推奨されなくなった時期と、代替使用するべき API を読者に提示する必要があります。Javadoc ツールは、この最初の文だけを、概要セクションと索引にコピーします。そのあとの文では、その API が推奨されない理由を説明することもできます。代わりのAPI を指し示す \f2{@link}\fP タグ ( Javadoc 1.2 以降の場合) を含めるべきです。 -.LP -詳細については、 -.na -\f2@deprecated タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@deprecatedを参照してください。 -.RS 3 -.TP 2 -o -Javadoc 1.2 以降では \f2{@link}\fP タグを使用します。これにより、必要な場所にインラインでリンクを作成できます。次に例を示します。 -.nf -\f3 -.fl /** -.fl - * @deprecated As of JDK 1.1, replaced by {@link #setBounds(int,int,int,int)} -.fl + * See the <a href="{@docRoot}/copyright\&.html">Copyright</a>\&. */ -.fl - -.fl -\fP .fi -.TP 2 -o -Javadoc 1.1 の場合の標準形式は、 \f2@see\fP タグ (インラインは不可) を \f2@deprecated\fP タグごとに作成することです。 +.if n \{\ .RE -.LP -推奨されないタグについての詳細は、 -.na -\f2@deprecated タグ\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/index.htmlのドキュメントを参照してください。 -.LP -.RS 3 -.TP 3 -{@code\ text} -\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 -は、生成された HTML ページで、次のようにそのまま表示されます。 -.nf -\f3 -.fl - \fP\f4A<B>C\fP\f3 -.fl - -.fl -\fP -.fi -.LP -ここで注目すべき点は、 \f2<B>\fP が太字として解釈されず、そのフォントはコードフォントになる、という点です。 -.LP -コードフォントなしで同じ機能を実現するには、\f2{@literal}\fP を使用します。 -.LP -.TP 3 -{@docRoot} -生成されるページから見た、生成ドキュメントの (生成先の) ルートディレクトリへの相対パスを表します。このタグは、著作権のページや会社のロゴなど、生成されるすべてのページから参照するファイルを組み込むときに便利です。通常は、各ページの下部から著作権のページにリンクします。 -.LP -この \f2{@docRoot}\fP タグは、コマンド行でもドキュメンテーションコメント内でも使用できます。このタグは、@return、@param、@deprecated などの任意のタグのテキスト部分を含む、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 -.RS 3 -.TP 3 -1. -コマンド行では、ヘッダー、フッター、またはボトムノートは次のように定義します。 -.nf -\f3 -.fl - javadoc \-bottom '<a href="{@docRoot}/copyright.html">Copyright</a>' -.fl - -.fl -\fP -.fi -.LP -注 \- \f2{@docRoot}\fP を Makefile 内でこのように利用する場合、一部の Makefile プログラムでは、中括弧 { } 文字をエスケープする必要があります。たとえば、Inprise MAKE バージョン 5.2 を Windows 上で実行する場合は、 \f2{{@docRoot}} のように、中括弧を二重にする必要があります\fP。さらに、 \f2\-bottom\fP などのオプションに対する引数を、単一引用符ではなく二重引用符で囲む必要もあります ( \f2href\fP の引数を囲む引用符は省略)。 -.TP 3 -2. -ドキュメンテーションコメントの中では、次のように使用します。 -.nf -\f3 -.fl - /** -.fl - * See the <a href="{@docRoot}/copyright.html">Copyright</a>. -.fl - */ -.fl - -.fl -\fP -.fi -.RE -.LP -このタグが必要な理由は、生成ドキュメントが、サブパッケージと同じ深さを持つ階層構造のディレクトリに格納されるからです。次に例を示します。 -.nf -\f3 -.fl - <a href="{@docRoot}/copyright.html"> -.fl - -.fl -\fP -.fi -.LP -次のように解決されます。 -.nf -\f3 -.fl - <a href="../../copyright.html"> java/lang/Object.java の場合 -.fl - -.fl -\fP -.fi -.LP -かつ -.nf -\f3 -.fl - <a href="../../../copyright.html"> java/lang/ref/Reference.java の場合 -.fl - -.fl -\fP -.fi -.LP -.TP 3 -@exception\ class\-name\ description -\f2@exception\fP タグは \f2@throws\fP と同義です。 -.LP -.TP 3 -{@inheritDoc}\ -もっとも近い継承可能なクラスまたは実装可能なインタフェースから、このタグの現在のドキュメンテーションコメントに、ドキュメントを継承 (コピー) します。この機能により、より汎用的なコメントを継承ツリーの上位に記述し、コピーしたテキストを使って記述することができます。 -.LP -このタグは、ドキュメンテーションコメントの次の位置でのみ有効です。 -.RS 3 -.TP 2 -o -メソッドの主説明ブロック内。この場合、主説明は、上位階層のクラスまたはインタフェースからコピーされる -.TP 2 -o -メソッドの @return、@param、@throws タグのテキスト引数内。この場合、タグテキストは、上位階層の対応するタグからコピーされる -.RE -.LP -継承階層でコメントを見つける方法に関する正確な説明について、「メソッドコメントの自動コピー」を参照してください。このタグが見つからない場合、コメントは、この節で説明するルールに応じて、自動的に継承されるかどうかが決まります。 -.LP -.TP 3 -{@link\ package.class#member\ label} -表示テキスト \f2label\fP とのインラインリンクを挿入します。label は、参照クラスの指定されたパッケージ、クラス、またはメンバーの名前のドキュメンテーションを指し示します。このタグは、@return、@param、@deprecated などの任意のタグのテキスト部分を含む、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 -.LP -このタグは \f2@see\fP と非常によく似ています。どちらも、\f2package.class\fP\f2#\fP\f2member\fP と \f2label\fP の参照の仕方が同じで、有効な構文もまったく同じです。大きな違いは、 \f2{@link}\fP では、[関連項目] セクションにリンクが配置される代わりに、インラインのリンクが生成されるという点です。また、インラインテキストのほかの部分と区別するために、 \f2{@link}\fP タグの最初と最後に中括弧を記述します。ラベルの中で「}」を使う必要がある場合は、HTML エンティティーの「}」を使います。 -.LP -1 文内で使用可能な \f2{@link}\fP タグの数に制限はありません。このタグは、ドキュメンテーションコメントの主説明部分、または @deprecated、@return、@param などの任意のタグのテキスト部分で使うことができます。 -.LP -たとえば、次のコメントでは \f2getComponentAt(int, int)\fP メソッドを参照しています。 -.nf -\f3 -.fl -{@link #getComponentAt(int, int) getComponentAt} メソッドを使用します。 -.fl - -.fl -\fP -.fi -.LP -標準ドックレットでは、上記のコメントから次の HTML が生成されます (このコメントが同じパッケージの別のクラスを参照している場合)。 -.nf -\f3 -.fl -<a href="Component.html#getComponentAt(int, int)">getComponentAt</a> メソッドを使用します。 -.fl - -.fl -\fP -.fi -.LP -この HTML は、Web ページ上では次のように表示されます。 -.nf -\f3 -.fl -getComponentAt メソッドを使用します。 -.fl - -.fl -\fP -.fi -.LP -\f2{@link}\fP を拡張してドキュメント化されないクラスへのリンクも可能にするには、\f2\-link\fP オプションを使用します。 -.LP -詳細については、 -.na -\f2{@link} タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#{@link}を参照してください。 -.LP -.TP 3 -{@linkplain\ package.class#member\ label} -リンクのラベルがコードフォントではなくプレーンテキストで表示される点以外は \f2{@link}\fP と同じです。ラベルがプレーンテキストで記述されていると便利です。次の例を参照してください。例: -.nf -\f3 -.fl - {@linkplain add() the overridden method} を参照してください。 -.fl - -.fl -\fP -.fi -.LP -これは以下のように表示されます。 -.LP -the overridden method を参照してください。 -.LP -.TP 3 -{@literal\ text} -テキストを HTML マークアップまたは入れ子になった javadoc タグとして解釈せずに、 \f2text\fP を表示します。このため、ドキュメンテーションコメント内で通常の山括弧 (\f2<\fP および \f2>\fP) を HTML エンティティー (\f2<\fP および \f2>\fP) の代わりに使用できます。たとえば、パラメータの型 (\f2<Object>\fP)、不等号 (\f23 < 4\fP)、矢印 (\f2<\-\fP) などです。たとえば、次のドキュメンテーションコメント -.nf -\f3 -.fl - \fP\f4{@literal A<B>C}\fP\f3 -.fl - -.fl -\fP -.fi -.LP -は、生成された HTML ページはブラウザで次のようにそのまま表示されます。 -.LP -\f2\ \ \ \ \ \fPA<B>C -.LP -ここで注目すべき点は、 \f2<B>\fP が太字として解釈されず、そのフォントはコードフォントになる、という点です。 -.LP -コードフォントで同じ機能を実現するには、\f2{@code}\fP を使用します。 -.LP -.TP 3 -@param\ parameter\-name description -指定された \f2parameter\-name\fP のあとに指定された \f2description\fP が続くパラメータを、[パラメータ] セクションに追加します。ドキュメンテーションコメントを記述するときには、 \f2description\fP を複数行にわたって記述することもできます。このタグは、メソッド、コンストラクタ、またはクラスの doc コメント内でのみ有効です。 -.LP -\f2parameter\-name\fP は、メソッドまたはコンストラクタでのパラメータの名前か、クラス、メソッドまたはコンストラクタのタイプパラメータの名前になります。山括弧でパラメータ名を囲むと、型パラメータを使用することを 指定します。 -.LP -クラスの型パラメータの例: -.nf -\f3 -.fl - /** -.fl - * @param <E> Type of element stored in a list -.fl - */ -.fl - public interface List<E> extends Collection<E> { -.fl - } -.fl - -.fl -\fP -.fi -.LP -メソッドの型パラメータの例: -.nf -\f3 -.fl - /** -.fl - * @param string the string to be converted -.fl - * @param type the type to convert the string to -.fl - * @param <T> the type of the element -.fl - * @param <V> the value of the element -.fl - */ -.fl - <T, V extends T> V convert(String string, Class<T> type) { -.fl - } -.fl - -.fl -\fP -.fi -.LP -詳細については、 -.na -\f2@param タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@paramを参照してください。 -.LP -.TP 3 -@return\ description -[戻り値] セクションを追加して、 \f2description\fP のテキストを書き込みます。このテキストでは、戻り値の型と、取り得る値の範囲について記述する必要があります。このタグは、メソッドのドキュメンテーションコメントでのみ有効です。 -.LP -詳細については、 -.na -\f2@return タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@returnを参照してください。 -.LP -.TP 3 -@see\ reference -「関連項目」見出しを追加し、 \f2reference を指すリンクか、またはテキストエントリを書き込みます\fP。ドキュメンテーションコメントには任意の数の \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 つの形式と区別します。たとえば、 -.nf -\f3 -.fl - @see "The Java Programming Language" -.fl - -.fl -\fP -.fi -.LP -これは次のようなテキストを生成します。 +.\} +このタグが必要な理由は、生成ドキュメントが、サブパッケージと同じ深さを持つ階層構造のディレクトリに格納されるからです。式\fI<a href="{@docRoot}/copyright\&.html">\fRは、\fIjava/lang/Object\&.java\fRに対しては\fI<a href="\&.\&./\&.\&./copyright\&.html">\fRに解決され、\fIjava/lang/ref/Reference\&.java\fRに対しては\fI<a href="\&.\&./\&.\&./\&.\&./copyright\&.html">\fRに解決されます。 .RE .RE -.RS 3 -.RS 3 -.RS 3 -.RS 3 -.TP 3 -関連項目: -The Java Programming Language +.PP +@exception \fIclass\-name description\fR +.RS 4 +JDK 1\&.0で導入 +.sp +\fI@throws\fRタグと同じです。@throws class\-name descriptionを参照してください。 .RE +.PP +{@inheritDoc} +.RS 4 +JDK 1\&.4で導入 +.sp +最も近い継承可能なクラスまたは実装可能なインタフェースから、このタグの位置にある現在のドキュメンテーション・コメントに、ドキュメントを継承(コピー)します。これにより、より汎用的なコメントを継承ツリーの上位に記述し、コピーしたテキストを使用して記述することができます。 +.sp +このタグは、ドキュメンテーション・コメントの次の位置でのみ有効です。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +メソッドの主説明ブロック内。この場合、主説明は、上位階層のクラスまたはインタフェースからコピーされます。 .RE -.TP 3 -@see <a href="URL#value">label</a> -\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 -\fP -.fi -これは次のようなリンクを生成します。 -.RS 3 -.TP 3 -関連項目: -Java Spec +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +メソッドの\fI@return\fR、\fI@param\fR、\fI@throws\fRタグのテキスト引数内。この場合、タグ・テキストは、上位階層の対応するタグからコピーされます。 .RE -.TP 3 -@see\ package.class#member\ label -可視のテキスト \f2label\fP を持つリンクを追加します。このリンクは、参照先となる、指定された Java 言語の名前のドキュメンテーションを指します。 \f2label\fP は省略可能です。label を省略すると、リンク先のメンバーの名前が適切に短縮されて表示されます。 「名前が表示される方法」を参照してください。\-noqualifier を使用すると、表示テキストからパッケージ名が全体的に削除されます。ラベルは、自動生成される表示テキストとは異なる表示テキストを指定する場合に使います。 -.LP -バージョン 1.2 だけは、ラベルではなく、名前が <code> HTML タグ内に自動的に表示されます。 1.2.2 からは、ラベルを使用するか、しないかにかかわらず、<code> は常に表示テキストを囲むかたちで、含まれます。 -.LP -.RS 3 -.TP 2 -o -\f4package.class\fP\f4#\fP\f4member\fP には、参照されている任意の有効なプログラム要素の名前を指定します。つまり、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドの名前です。ただし、メンバー名ーの前のドットは、シャープ記号 (\f2#\fP) で置き換えます。 \f2class\fP は、任意のトップレベルまたは入れ子にされたクラスまたはインタフェースを表します。 \f2member\fP は、任意のコンストラクタ、メソッドまたはフィールド (入れ子にされたクラスまたはインタフェースではない) を表します。指定した名前が、ドキュメント化されているクラスに含まれている場合、Javadoc ツールは、その名前へのリンクを自動的に作成します。外部参照クラスへのリンクを作成するには、\f2\-link\fP オプションを使います。参照先のクラスに属していない名前のドキュメンテーションを参照するには、残り 2 つの \f2@see\fP 形式のうちのどちらかを使用します。この引数については、このあとの「名前の指定」で詳しく説明します。 -.TP 2 -o -\f4label\fP は、省略可能なテキストで、リンクのラベルとして表示されます。 \f2label\fP には空白を含めることができます。 \f2label\fP を省略すると、\f2package.class.member\fP が、現在のクラスおよびパッケージに応じて適切に短縮されて表示されます。「名前が表示される方法」を参照してください。 -.TP 2 -o -空白が、 \f2package.class\fP\f2#\fP\f2member\fP と \f2label\fP の間の区切り文字になります。括弧の内側の空白文字はラベルの先頭とは解釈されないため、メソッドのパラメータ間に空白文字を入れてもかまいません。 +.sp +継承階層でコメントを見つける方法に関する説明は、メソッド・コメントの継承を参照してください。このタグが見つからない場合、コメントは、この項で説明するルールに応じて、自動的に継承されるかどうかが決まります。 .RE -.LP -\f3例\fP \- この例では、 \f2@see\fP タグ ( \f2Character\fP クラス内) が String クラスの \f2equals\fP メソッド \f2を参照\fP しています。このタグには名前「\f2String#equals(Object)\fP」とラベル「\f2equals\fP」の両方の引数が含まれています。 +.PP +{@link \fIpackage\&.class#member label\fR} +.RS 4 +JDK 1\&.2で導入 +.sp +表示テキストlabelとともにインライン・リンクを挿入します。labelは、参照クラスの指定されたパッケージ、クラス、またはメンバーの名前のドキュメントを指し示します。このタグは、\fI@return\fR、\fI@param\fRおよび\fI@deprecated\fRタグなどの任意のタグのテキスト部分を含む、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。JavadocツールでのDocコメントの記述方法の@linkに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#{@link)を参照してください。 +.sp +このタグは\fI@see\fRタグに似ています。どちらのタグも、\fIpackage\&.class#member\fRと\fIlabel\fRの参照方法と、有効な構文が同じです。主な違いは、\fI{@link}\fRタグでは、「関連項目」セクションにリンクが配置されるかわりに、インライン・リンクが生成されるという点です。インライン・テキストの他の部分と区別するために、\fI{@link}\fRタグの最初と最後に中カッコを記述します。ラベル内で右中カッコ(\fI}\fR)を使用する必要がある場合、HTMLエンティティ記法\fI}\fRを使用します。 +.sp +1つ文の中で使用できる\fI{@link}\fRタグの数に制限はありません。このタグは、ドキュメンテーション・コメントの主説明部分、または\fI@deprecated\fR、\fI@return\fR、\fI@param\fRタグなどの任意のタグのテキスト部分で使用できます。 +.sp +たとえば、次のコメントでは\fIgetComponentAt(int,int)\fRメソッドを参照しています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - /** -.fl - * @see String#equals(Object) equals -.fl - */ -.fl -\fP +Use the {@link #getComponentAt(int, int) getComponentAt} method\&. .fi -標準ドックレットは、次のような HTML を生成します。 -.nf -\f3 -.fl -<dl> -.fl -<dt><b>See Also:</b> -.fl -<dd><a href="../../java/lang/String#equals(java.lang.Object)"><code>equals<code></a> -.fl -</dl> -.fl -\fP -.fi -これは、ブラウザでは次のように表示され、ラベルがリンクテキストになります。 -.RS 3 -.TP 3 -関連項目: -equals +.if n \{\ .RE -.LP -\f3名前の指定\fP \- この \f2package.class\fP\f2#\fP\f2member\fP という名前は、 \f2java.lang.String#toUpperCase()\fP のような完全修飾名にすることも、 \f2String#toUpperCase()\fP や \f2#toUpperCase()\fP のような非完全修飾名にすることもできます。名前が完全指定されていない場合、Javadoc ツールは、Java コンパイラの通常の検索順序でその名前を検索します。詳細は、このあとの「@see の検索順序」を参照してください。名前には、メソッドの複数の引数の間など、括弧の内側であれば空白を含めることができます。 -.LP -「部分的に指定」した短い名前を指定することの利点は、入力する文字数が減ることや、ソースコードが読みやすくなることです。次の表に、さまざまな形式の名前を示します。ここで、 \f2Class\fP にはクラスまたはインタフェースを、 \f2Type\fP にはクラス、インタフェース、配列、または基本データ型を、 \f2method\fP にはメソッドまたはコンストラクタを、それぞれ指定できます。 -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. +.\} +標準ドックレットでは、このコードから次のHTMLが生成されます(このコメントが同じパッケージの別のクラスを参照している場合)。 +.sp +.if n \{\ +.RS 4 +.\} .nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 -.nr 34 \n(.lu -.eo -.am 80 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/2u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f4@see\fP\f3\ \fP\f4package.class#member\fP\f3 の一般的な形式\fP -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/2u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f3現在のクラスのメンバーを参照する\fP -.br -\f2@see\fP\ \f2#\fP\f2フィールド\fP -.br -\f2@see\fP\ \f2#\fP\f2method(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP -.br -\f2@see\fP\ \f2#\fP\f2constructor(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/2u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f3現在の、またはインポートされたパッケージの別のクラスを参照する\fP -.br -\f2@see\fP\ \f2クラス\fP\f2#\fP\f2フィールド\fP -.br -\f2@see\fP\ \f2クラス\fP\f2#\fP\f2method(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2クラス\fP\f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP -.br -\f2@see\fP\ \f2クラス\fP\f2#\fP\f2constructor(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2クラス\fP\f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP -.br -\f2@see\fP\ \f2Class.NestedClass\fP -.br -\f2@see\fP\ \f2クラス\fP -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/2u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f3別のパッケージの要素を参照する\fP\ (完全修飾) -.br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2フィールド\fP -.br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2method(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2method(Type\ argname,\ Type\ argname,...)\fP -.br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2constructor(Type,\ Type,...)\fP -.br -\f2@see\fP\ \f2package.Class\fP\f2#\fP\f2constructor(Type\ argname,\ Type\ argname,...)\fP -.br -\f2@see\fP\ \f2package.Class.NestedClass\fP -.br -\f2@see\fP\ \f2package.Class\fP -.br -\f2@see\fP\ \f2パッケージ\fP -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.80 -.rm 80 -.nr 38 \n(a- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(b- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(c- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(d- -.if \n(80<\n(38 .nr 80 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr TW \n(80 -.if t .if \n(TW>\n(.li .tm Table at line 1342 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-58 -.LP -上の表に対する補足事項を次に示します。 -.RS 3 -.TP 2 -o -最初の種類の形式 (パッケージとクラスを省略) の場合、Javadoc ツールは、現在のクラスの階層だけを検索します。つまり、現在のクラスかインタフェース、そのスーパークラスかスーパーインタフェース、または現在のクラスかインタフェースを囲んでいるクラスかインタフェースからメンバーを検索します (このあとの検索手順 1 ~ 3)。現在のパッケージのほかの部分や、ほかのパッケージは検索しません (検索手順 4 ~ 5)。 -.TP 2 -o -メソッドまたはコンストラクタの指定時に、 \f2getValue\fP のように括弧なしの名前を使用した場合、同じ名前のフィールドが存在していなければ、Javadoc ツールによってその名前へのリンクが正しく作成されますが、括弧や引数の追加をユーザーに促すための警告メッセージが表示されます。このメソッドがオーバーロードされている場合、Javadoc ツールは、検索で最初に見つかったメソッドにリンクします。結果は前もって特定できません。 -.TP 2 -o -入れ子になったクラスは、すべての形式について、 \f2outer\fP\f2.\fP\f2inner\fP として指定する必要があります。単純に \f2inner\fP とはしないでください。 -.TP 2 -o -すでに述べたように、\f2クラスとメンバーとの間の区切り文字としては、\fPドット (\f2.\fP) ではなくシャープ文字 (#) を使用します。このように指定すると、Javadoc ツールは、あいまいさを解決できます。ドットは、クラス、入れ子にされたクラス、パッケージ、およびサブパッケージを区切るためにも使用されます。ただし、Javadoc ツールでは一般に許容範囲が広く、あいまいさがなければ、ドットでも正しく解析されます。その場合でも警告は表示されます。 +Use the <a href="Component\&.html#getComponentAt(int, int)">getComponentAt</a> method\&. +.fi +.if n \{\ .RE -.LP -\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 ツールは、特定の名前空間のあいまいさを検出しません。 これは、ソースコードにこれらのエラーが存在していないことを前提としているためです。この検索順序は、\f2Java 言語仕様\fPで正式に定義されています。Javadoc ツールは、関連するクラスとパッケージ、およびインポートされたクラスとパッケージのすべてから名前を検索します。具体的には、次の順序で検索します。 -.RS 3 -.TP 3 -1. -現在のクラスまたはインタフェース -.TP 3 -2. -外側を囲んでいるクラスとインタフェース (もっとも近いものから検索) -.TP 3 -3. -スーパークラスとスーパーインタフェース (もっとも近いものから検索) -.TP 3 -4. -現在のパッケージ -.TP 3 -5. -インポートされているパッケージ、クラス、およびインタフェース (import 文の順序に従って検索) -.RE -.LP -Javadoc ツールは、各クラスについて手順 1 ~ 3 を再帰的に適用しながら、一致する名前が見つかるまで検索を続けます。つまり、まず現在のクラスを検索し、次にそのクラスを囲んでいるクラス E を検索し、その次に E のスーパークラスを検索し、さらにその次に E を囲んでいるクラスを検索します。 手順 4 と 5 では、1 つのパッケージ内のクラスまたはインタフェースを検索する順序は決まっていません。その順序は、個々のコンパイラによって異なります。手順 5 では、Javadoc ツールは、java.lang を検索します。このパッケージは、すべてのプログラムに自動的にインポートされるからです。 -.LP -Javadoc ツールは、必ずしもサブクラスを検索するとは限りません。また、javadoc の実行中にほかのパッケージのドキュメントが生成される場合でも、ほかのパッケージを検索しません。たとえば、 \f2@see\fP タグが \f2java.awt.event.KeyEvent\fP クラス内に含まれていて、 \f2java.awt\fP パッケージ内のある名前を参照していても、そのクラス内でそのパッケージがインポートされないかぎり、javadoc はそのパッケージ内での検索を行いません。 -.LP -\f3名前が表示される方法\fP \- \f2label\fP を省略した場合は、\f2package.class.member\fP が表示されます。一般に、package.class.member は、現在のクラスおよびパッケージに応じて適切に短縮されます。「短縮される」とは、必要最小限の名前だけが表示されるということです。たとえば、 \f2String.toUpperCase()\fP メソッドに、同じクラスのメンバーへの参照とほかのクラスのメンバーへの参照が含まれている場合、クラス名が表示されるのは後者のケースだけです (次の表を参照)。 -.LP -パッケージ名を広域的に削除するには、\-noqualifier を使用します。 -.br -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. +.\} +前の行は、次のようにWebページに表示されます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 82 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\f4String.toUpperCase() での例\fP -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f2@see\fP タグが同じクラス、同じパッケージのメンバーを参照している -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 82 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(82 .ll \n(82u -.in 0 -\f2toLowerCase()\fP (クラス名は省略) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f2@see\fP タグが異なるクラス、同じパッケージのメンバーを参照している -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\f2@see Character#toLowerCase(char)\fP -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 82 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(82 .ll \n(82u -.in 0 -\f2Character.toLowerCase(char)\fP (パッケージ名は省略し、クラス名を含む) -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f2@see\fP タグが異なるクラス、異なるパッケージのメンバーを参照している -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\f2@see java.io.File#exists()\fP -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 82 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(82 .ll \n(82u -.in 0 -\f2java.io.File.exists()\fP (パッケージ名とクラス名を含む) -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \w\f3参照の種類\fP -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 38 \n(b- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(d- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(g- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 81 0 -.nr 38 \w\f2@see String#toLowerCase()\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 82 0 -.nr 38 \w\f3表示される名前\fP -.if \n(82<\n(38 .nr 82 \n(38 -.82 -.rm 82 -.nr 38 \n(c- -.if \n(82<\n(38 .nr 82 \n(38 -.nr 38 \n(f- -.if \n(82<\n(38 .nr 82 \n(38 -.nr 38 \n(i- -.if \n(82<\n(38 .nr 82 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr 42 \n(81+(3*\n(38) -.nr 82 +\n(42 -.nr TW \n(82 -.if t .if \n(TW>\n(.li .tm Table at line 1418 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u \n(82u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3参照の種類\fP\h'|\n(41u'\h'|\n(42u'\f3表示される名前\fP -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.ne \n(c|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u \n(82u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u'\f2@see String#toLowerCase()\fP\h'|\n(42u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(42u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.ne \n(e|u+\n(.Vu -.ne \n(f|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u \n(82u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(42u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.ne \n(h|u+\n(.Vu -.ne \n(i|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u \n(82u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(42u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-28 -.LP -\f3@see の例\fP -.br -右側のコメントは、 \f2@see\fP タグが \f2java.applet.Applet\fP などの別のパッケージのクラス内にある場合に、名前がどのように表示されるかを示しています。 -.nf -\f3 -.fl - 関連項目: -.fl -@see java.lang.String // String \fP\f3 -.fl -@see java.lang.String The String class // The String class \fP\f3 -.fl -@see String // String \fP\f3 -.fl -@see String#equals(Object) // String.equals(Object) \fP\f3 -.fl -@see String#equals // String.equals(java.lang.Object) \fP\f3 -.fl -@see java.lang.Object#wait(long) // java.lang.Object.wait(long) \fP\f3 -.fl -@see Character#MAX_RADIX // Character.MAX_RADIX \fP\f3 -.fl -@see <a href="spec.html">Java Spec</a> // Java Spec \fP\f3 -.fl -@see "The Java Programming Language" // "The Java Programming Language" \fP\f3 -.fl -\fP +Use the getComponentAt method\&. .fi -\f2@see\fP を拡張してドキュメント化されないクラスへのリンクも可能にするには、\f2\-link\fP オプションを使用します。 -.LP -詳細については、 -.na -\f2@see タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@seeを参照してください。 +.if n \{\ .RE +.\} .RE -.LP -.RS 3 -.TP 3 -@serial\ field\-description | include | exclude -デフォルトの直列化可能フィールドのドキュメンテーションコメントで使用します。 -.LP -\f2field\-description\fP (省略可能) では、フィールドの意味を説明し、取り得る値のリストを示す必要があります。必要に応じて、複数の行に渡って説明を記述できます。標準ドックレットは、この情報を、直列化された形式のページに追加します。 -.LP -クラスを直列化したあとしばらくしてから直列化可能フィールドをクラスに追加した場合、主説明に、追加したバージョンを識別する文を追加する必要があります。 -.LP -\f2include\fP および \f2exclude\fP 引数は、直列化された形式のページにクラスまたはパッケージを含めるか除外するかを示します。これらの引数には、次のような効果があります。 -.RS 3 -.TP 2 -o -\f2Serializable\fP を実装している public または protected クラスは、そのクラス (またはそのパッケージ) が \f2@serial exclude\fP としてマークされていないかぎり、含められます。 -.TP 2 -o -\f2Serializable\fP を実装している private または package\-private クラスは、そのクラス (またはそのパッケージ) が \f2@serial include\fP として マークされていないかぎり、除外されます。 +.PP +{@linkplain \fIpackage\&.class#member label\fR} +.RS 4 +JDK 1\&.4で導入 +.sp +\fI{@link}\fRタグと同じ動作をしますが、リンク・ラベルがコード・フォントではなくプレーン・テキストで表示される点が異なります。ラベルがプレーン・テキストで記述されていると便利です。たとえば、「\fIRefer to {@linkplain add() the overridden method}\fR\&.」は「Refer to the overridden method」と表示されます。 .RE -.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 タグをオーバーライドします。 -.LP -これらのタグの使用法についての詳細と使用例は、「Java オブジェクト直列化仕様」の第 1.6 節 -.na -\f2「クラスの直列化可能なフィールドおよびデータの文書化」\fP @ -.fi -http://java.sun.com/javase/6/docs/platform/serialization/spec/serial\-arch.htmlを参照してください。また、 -.na -\f2「直列化の FAQ」\fP @ -.fi -http://java.sun.com/javase/technologies/core/basic/serializationFAQ.jsp#javadoc_warn_missingも参照してください。この FAQ には、「\-private スイッチを指定しないで javadoc を実行しているのに private フィールドの @serial タグが見つからないという javadoc の警告が表示される」などの一般的な質問への回答が記載されています。直列化形式仕様にクラスを含める場合には、 -.na -\f2「Sun の仕様」\fP @ -.fi -http://java.sun.com/j2se/javadoc/writingapispecs/serialized\-criteria.htmlも参照してください。 -.LP -.TP 3 -@serialField\ field\-name\ field\-type\ field\-description -Serializable \f2クラスの\fP serialPersistentFields \f2メンバーの\fP ObjectStreamField コンポーネント \f2をドキュメント化\fP します。1 つの \f2@serialField\fP タグを各 \f2ObjectStreamField\fP コンポーネントで使用すべきです。 -.LP -.TP 3 -@serialData\ data\-description -\f2data\-description\fP は、直列化された形式でのデータの型と順序を説明するテキストです。具体的に言うと、このデータには、 \f2writeObject\fP メソッドによって書き込まれる省略可能なデータ、および \f2Externalizable.writeExternal\fP メソッドによって書き込まれるすべてのデータ (基底クラスも含む) が含まれます。 -.LP -\f2@serialData\fP タグは、 \f2writeObject\fP、 \f2readObject\fP、 \f2writeExternal\fP、 \f2readExternal\fP、 \f2writeReplace\fP、および \f2readResolve\fP メソッドのドキュメンテーションコメント内で使用できます。 -.LP -.TP 3 -@since\ since\-text -生成ドキュメントに [導入されたバージョン] 見出しを追加し、指定された \f2since\-text\fP を書き込みます。このテキストには、特別な内部構造はありません。このタグは、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。このタグは、特定の変更または機能が、 \f2since\-text に示されたソフトウェアリリース以降、存在していることを意味します\fP。たとえば、 +.PP +{@literal \fItext\fR} +.RS 4 +JDK 1\&.5で導入 +.sp +テキストをHTMLマークアップまたはネストされたJavadocタグとして解釈せずに、textを表示します。これにより、ドキュメンテーション・コメントでは、パラメータの型(\fI<Object>\fR)、不等号(\fI3 < 4\fR)、矢印(<\-)などで、山カッコ(\fI<および>\fR)をHTMLエンティティ(\fI<\fRおよび\fI>\fR)のかわりに使用できます。たとえば、ドキュメンテーション・コメントのテキスト\fI{@literal A<B>C}\fRは\fIA<B>C\fRとして、ブラウザの生成されたHTMLページに変更されずに表示されます。\fI<B>\fRは太字として解釈されません(コード・フォントになりません)。コード・フォントで同じ機能を実現するには、\fI{@code}\fRタグを使用します。 +.RE +.PP +@param \fIparameter\-name description\fR +.RS 4 +JDK 1\&.0で導入 +.sp +「パラメータ」セクションに、指定された\fIparameter\-name\fRの後に指定されたdescriptionを続けてパラメータを追加します。ドキュメンテーション・コメントを記述するときには、descriptionを複数行にわたって記述することもできます。このタグは、メソッド、コンストラクタ、またはクラスのドキュメンテーション・コメント内でのみ有効です。JavadocツールでのDocコメントの記述方法の@paramに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@param)を参照してください。 +.sp +\fIparameter\-name\fRは、メソッドまたはコンストラクタでのパラメータの名前か、クラス、メソッドまたはコンストラクタの型パラメータの名前になります。山カッコでこのパラメータ名を囲み、型パラメータを使用することを指定します。 +.sp +クラスの型パラメータの例: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - @since 1.5 -.fl - -.fl -\fP -.fi -.LP -Java プラットフォームのソースコードの場合、このタグは、Java プラットフォーム API 仕様のバージョンを示します。その変更や機能がリファレンス実装に追加された時期を示すとは限りません。複数の @since タグを使用でき、複数の @author タグのように扱われます。プログラム要素が複数の API で使用される場合、複数のタグを使用できます。 -.LP -.TP 3 -@throws\ class\-name\ description -\f2@throws\fP タグと \f2@exception\fP タグは同義です。生成ドキュメントに「例外」小見出しを追加して、 \f2class\-name\fP および \f2description\fP のテキストを書き込みます。 \f2class\-name\fP は、そのメソッドからスローされる可能性のある例外の名前です。このタグは、メソッド、コンストラクタの doc コメント内でのみ有効です。このクラスが完全指定の名前で記述されていない場合、Javadoc ツールは、検索順序に従ってクラスを探します。同じまたは異なる例外の doc コメントで、複数の \f2@throws\fP タグを使用できます。 -.LP -すべてのチェック済み例外がドキュメント化されるようにするために、 \f2@throws\fP タグが throws 節内の例外用に存在しない場合は、@throws タグのあるドキュメントであるかのように、Javadoc ツールによって例外が HTML 出力に説明なしで自動的に追加されます。 -.LP -オーバーライドされるメソッド内で例外が明示的に宣言されている場合のみ、 \f2@throws\fP ドキュメンテーションがそのメソッドからサブクラスにコピーされます。インタフェースメソッドから実装メソッドにコピーされる場合も同様です。@throws にドキュメンテーションを継承させるには、{@inheritDoc} を使用できます。 -.LP -詳細については、 -.na -\f2@throws タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@exceptionを参照してください。 -.LP -.TP 3 -{@value\ package.class#field} -\f2{@value}\fP が静的フィールドの doc コメントで 引数なしで使用されている場合、その定数の値が表示されます。 -.nf -\f3 -.fl - /** -.fl - * The value of this constant is {@value}. -.fl - */ -.fl - public static final String SCRIPT_START = "<script>" -.fl - -.fl -\fP -.fi -.LP -任意のドキュメンテーションコメント内で引数 \f2package.class#field\fP ありで使用された場合は、その指定された定数の値が表示されます。 -.nf -\f3 -.fl - /** -.fl - * Evaluates the script starting with {@value #SCRIPT_START}. -.fl - */ -.fl - public String evalScript(String script) { -.fl - } -.fl - -.fl -\fP -.fi -.LP -引数 \f2package.class#field\fP は、@see 引数と同一の形式になります。ただし、メンバーが静的フィールドになければならない点が異なります。 -.LP -これらの定数での値は、 -.na -\f2定数フィールド値\fP @ -.fi -http://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 -詳細については、 -.na -\f2@version タグのドキュメント\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#@versionを参照してください。 -.RE -.SS -タグを使用できる場所 -.LP -ここでは、タグを使用できる場所について説明します。すべてのドキュメンテーションコメントで使用可能なタグは次のとおりです。 \f2@see\fP、 \f2@since\fP、 \f2@deprecated\fP、 \f2{@link}\fP、 \f2{@linkplain}\fP、および \f2{@docroot}\fP。 -.SS -概要のドキュメンテーションタグ -.LP -概要タグは、概要ページのドキュメンテーションコメントで使用できるタグです。このドキュメンテーションコメントは、通常 \f2overview.html\fP という名前のソースファイル内にあります。 ほかのドキュメンテーションコメントの場合と同様に、これらのタグは、主説明のあとで使う必要があります。 -.LP -\f3注\fP \- バージョン 1.2 では、概要ドキュメント内の \f2{@link}\fP タグにバグがあります。テキストは正しく表示されますが、リンクが設定されません。現在のところ、 \f2{@docRoot}\fP タグは、概要ドキュメント内では動作しません。 -.LP -\f3概要タグ\fP -.RS 3 -.TP 2 -o -\f2@see\fP -.TP 2 -o -\f2@since\fP -.TP 2 -o -\f2@author\fP -.TP 2 -o -\f2@version\fP -.TP 2 -o -\f2{@link}\fP -.TP 2 -o -\f2{@linkplain}\fP -.TP 2 -o -\f2{@docRoot}\fP -.RE -.SS -パッケージドキュメンテーションタグ -.LP -パッケージタグは、パッケージのドキュメンテーションコメントで使用できるタグです。このドキュメンテーションコメントは \f2package.html\fP または \f2package\-info.java\fP という名前のソースファイル内にあります。ここで使用できる \f2@serial\fP タグは、 \f2include\fP または \f2exclude\fP 引数が指定されたものだけです。 -.LP -\f3パッケージタグ\fP -.RS 3 -.TP 2 -o -\f2@see\fP -.TP 2 -o -\f2@since\fP -.TP 2 -o -\f2@serial\fP -.TP 2 -o -\f2@author\fP -.TP 2 -o -\f2@version\fP -.TP 2 -o -\f2{@link}\fP -.TP 2 -o -\f2{@linkplain}\fP -.TP 2 -o -\f2{@docRoot}\fP -.RE -.SS -クラスおよびインタフェースドキュメンテーションタグ -.LP -次に、クラスまたはインタフェースのドキュメンテーションコメントで使用できるタグを示します。ここで使用できる \f2@serial\fP タグは、 \f2include\fP または \f2exclude\fP 引数が指定されたものだけです。 -.LP -\f3クラスおよびインタフェースタグ\fP -.RS 3 -.TP 2 -o -\f2@see\fP -.TP 2 -o -\f2@since\fP -.TP 2 -o -\f2@deprecated\fP -.TP 2 -o -\f2@serial\fP -.TP 2 -o -\f2@author\fP -.TP 2 -o -\f2@version\fP -.TP 2 -o -\f2{@link}\fP -.TP 2 -o -\f2{@linkplain}\fP -.TP 2 -o -\f2{@docRoot}\fP -.RE -\f3次にクラスコメントの例を示します。\fP -.nf -\f3 -.fl /** -.fl - * A class representing a window on the screen. -.fl - * For example: -.fl - * <pre> -.fl - * Window win = new Window(parent); -.fl - * win.show(); -.fl - * </pre> -.fl - * -.fl - * @author Sami Shaio -.fl - * @version 1.13, 06/08/06 -.fl - * @see java.awt.BaseWindow -.fl - * @see java.awt.Button -.fl + * @param <E> Type of element stored in a list */ -.fl -class Window extends BaseWindow { -.fl - ... -.fl +public interface List<E> extends Collection<E> { } -.fl -\fP .fi -.SS -フィールドドキュメンテーションタグ -.LP -次に、フィールドのドキュメンテーションコメントで使用できるタグを示します。 -.LP -\f3フィールドタグ\fP -.RS 3 -.TP 2 -o -\f2@see\fP -.TP 2 -o -\f2@since\fP -.TP 2 -o -\f2@deprecated\fP -.TP 2 -o -\f2@serial\fP -.TP 2 -o -\f2@serialField\fP -.TP 2 -o -\f2{@link}\fP -.TP 2 -o -\f2{@linkplain}\fP -.TP 2 -o -\f2{@docRoot}\fP -.TP 2 -o -\f2{@value}\fP +.if n \{\ .RE -\f3次にフィールドコメントの例を示します。\fP +.\} +メソッドの型パラメータの例: +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * @param string the string to be converted + * @param type the type to convert the string to + * @param <T> the type of the element + * @param <V> the value of the element + */ +<T, V extends T> V convert(String string, Class<T> type) { +} +.fi +.if n \{\ +.RE +.\} +.RE +.PP +@return \fIdescription\fR +.RS 4 +JDK 1\&.0で導入 +.sp +「戻り値」セクションを追加して、descriptionのテキストを書き込みます。このテキストでは、戻り値の型と、取り得る値の範囲について記述する必要があります。このタグは、メソッドのドキュメンテーション・コメントでのみ有効です。JavadocツールでのDocコメントの記述方法の@returnに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@return)を参照してください。 +.RE +.PP +@see \fIreference\fR +.RS 4 +JDK 1\&.0で導入 +.sp +\fI「関連項目」\fR見出しを追加して、referenceを指すリンク、またはテキスト・エントリを書き込みます。1つのドキュメンテーション・コメントには任意の数の\fI@see\fRタグを含めることができますが、それらはすべて同じ見出しの下にグループ化されます。\fI@see\fRタグには、3つのタイプの形式があります。この形式が最も一般的です。このタグは、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドで有効です。パッケージ、クラス、またはメンバーに対するインライン・リンクを文中に挿入する方法は、\fI{@link}\fRを参照してください。 +.sp +\fB形式1\fR。@see +\fIstring\fRタグ形式は、\fIstring\fRのテキスト・エントリを追加します。リンクは生成されません。stringは、書籍またはURLではアクセスできない情報の参照先です。\fIjavadoc\fRコマンドは、最初の文字として二重引用符(")を検索して、この形式を前述の形式と区別します。たとえば、\fI@see "The Java Programming Language"\fRは次のテキストを生成します。 +.sp +\fB関連項目\fR: +.sp +"The Java Programming Language" +.sp +\fB形式2\fR。\fI@see <a href="URL#value">label</a>\fR形式は、\fIURL#value\fRにより定義されたリンクを追加します。\fIURL#value\fRパラメータは、相対URLまたは絶対URLです。\fIjavadoc\fRコマンドは、最初の文字として「より小さい」記号(\fI<\fR)を検索して、この形式を他の形式と区別します。たとえば、\fI@see <a href="spec\&.html#section">Java Spec</a>\fRは次のリンクを生成します。 +.sp +\fB関連項目\fR: +.sp +Java Spec +.sp +\fB形式3\fR。\fI@see package\&.class#member label\fR形式は、表示テキスト・ラベルとともにリンクを追加します。このラベルは参照されているJava言語の指定された名前のドキュメントを指し示します。ラベルはオプションです。ラベルを省略した場合は、表示テキストのかわりに、名前が適切に短縮されて表示されます。\fI\-noqualifier\fRオプションを使用すると、この表示テキストからパッケージ名が全体的に削除されます。ラベルは、自動生成される表示テキストとは異なる表示テキストにする場合に使用します。「名前が表示される方法」を参照してください。 +.sp +Java SE 1\&.2だけは、ラベルではなく名前が\fI<code>\fR +HTMLタグ内に自動的に表示されます。Java SE 1\&.2\&.2からは、ラベルを使用するかしないかにかかわらず、\fI<code>\fRタグは常に表示テキストを囲むかたちで含まれます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIpackage\&.class#member\fRには、参照されている任意の有効なプログラム要素の名前を指定します。つまり、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドの名前です。ただし、メンバー名の前の文字は、シャープ記号(\fI#\fR)にする必要があります。classは、任意のトップレベルまたはネストされたクラスか、インタフェースを表します。memberは、任意のコンストラクタ、メソッドまたはフィールドを表します(ネストされたクラスまたはインタフェースではありません)。この名前が、ドキュメント化されるクラスに含まれている場合、\fIjavadoc\fRコマンドは、その名前へのリンクを作成します。外部参照クラスへのリンクを作成するには、\fI\-link\fRオプションを使用します。参照クラスに属していない名前のドキュメントを参照するには、他の2つの\fI@see\fRタグ形式のどちらかを使用します。「名前の指定」を参照してください。 +.sp +\fB注意:\fR +外部参照クラスは、コマンドラインで\fIjavadoc\fRコマンドに渡されないクラスです。生成ドキュメント内で外部参照クラスにリンクしている箇所は、外部参照または外部リンクと呼ばれます。たとえば、\fIjava\&.awt package\fRに対してのみ\fIjavadoc\fRコマンドを実行した場合、\fIObject\fRなどの\fIjava\&.lang\fR内のすべてのクラスが外部参照クラスになります。\fI\-link\fRおよび\fI\-linkoffline\fRオプションを使用して、外部参照クラスへリンクします。外部参照クラスのソース・コメントは\fIjavadoc\fRコマンドの実行には使用できません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIlabel\fRは、省略可能なテキストで、リンクのラベルとして表示されます。ラベルには空白を含めることができます。\fIlabel\fRを省略すると、\fIpackage\&.class\&.member\fRが、現在のクラスおよびパッケージに応じて適切に短縮されて表示されます。「名前が表示される方法」を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +空白文字が、\fIpackage\&.class#member\fRと\fIlabel\fRの間の区切り文字になります。カッコの内側の空白文字はラベルの先頭とは解釈されないため、メソッドのパラメータ間に空白文字を入れてもかまいません。 +.RE +.sp +この例では、\fI@see\fRタグ(\fICharacter\fRクラス内)が、\fIString\fRクラスのequalsメソッドを参照しています。タグには、名前\fIString#equals(Object)\fRとラベル\fIequals\fRの両方の引数が含まれています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * @see String#equals(Object) equals + */ +.fi +.if n \{\ +.RE +.\} +標準ドックレットは、次のようなHTMLを生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +<dl> +<dt><b>See Also:</b> +<dd><a href="\&.\&./\&.\&./java/lang/String#equals(java\&.lang\&.Object)"><code>equals<code></a> +</dl> +.fi +.if n \{\ +.RE +.\} +前述のコードは、ブラウザに次のように表示され、ラベルは表示リンク・テキストになっています。 +.sp +\fB関連項目\fR: +.sp +equals +.RE +名前の指定.PP +この\fIpackage\&.class#member\fRという名前は、\fIjava\&.lang\&.String#toUpperCase()\fRのような完全修飾名にすることも、\fIString#toUpperCase()\fRや\fI#toUpperCase()\fRのような非完全修飾名にすることもできます。名前が完全修飾より短い場合は、\fIjavadoc\fRコマンドは、標準のJavaコンパイラの検索順序を使用して探します。「@seeタグの検索順序」を参照してください。名前は、メソッド引数の間など、カッコ内のスペースを含めることができます。部分的に修飾した短い名前を指定することの利点は、入力する文字数が減ることや、ソース・コードが読みやすくなることです。次のリストに様々な形式の名前を示します。ここで、\fIClass\fRにはクラスまたはインタフェースを、Typeにはクラス、インタフェース、配列、またはプリミティブを、methodにはメソッドまたはコンストラクタを、それぞれ指定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBTypical forms for\fR\fB @see package\&.class#member\fR +\fBReferencing a member of the current class\fR +@see #field +@see #method(Type, Type,\&.\&.\&.) +@see #method(Type argname, Type argname,\&.\&.\&.) +@see #constructor(Type, Type,\&.\&.\&.) +@see #constructor(Type argname, Type argname,\&.\&.\&.) + +\fBReferencing another class in the current or imported packages\fR +@see Class#field +@see Class#method(Type, Type,\&.\&.\&.) +@see Class#method(Type argname, Type argname,\&.\&.\&.) +@see Class#constructor(Type, Type,\&.\&.\&.) +@see Class#constructor(Type argname, Type argname,\&.\&.\&.) +@see Class\&.NestedClass +@see Class + +\fBReferencing an element in another package (fully qualified)\fR +@see package\&.Class#field +@see package\&.Class#method(Type, Type,\&.\&.\&.) +@see package\&.Class#method(Type argname, Type argname,\&.\&.\&.) +@see package\&.Class#constructor(Type, Type,\&.\&.\&.) +@see package\&.Class#constructor(Type argname, Type argname,\&.\&.\&.) +@see package\&.Class\&.NestedClass +@see package\&.Class +@see package +.fi +.if n \{\ +.RE +.\} +.PP +前のリストに関するメモ: +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +最初のタイプの形式(パッケージとクラスを省略)の場合、\fIjavadoc\fRコマンドは、現在のクラスの階層のみを検索します。つまり、現在のクラスかインタフェース、そのスーパークラスかスーパーインタフェース、またはその外側を囲んでいるクラスかインタフェースからメンバーを検索します(検索項目1\(en3)。現在のパッケージの他の部分や、他のパッケージは検索しません(検索項目4\(en5)。「@seeタグの検索順序」を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +メソッドまたはコンストラクタの入力時に、\fIgetValue\fRのようにカッコなしの名前を使用した場合、同じ名前のフィールドが存在していなければ、\fIjavadoc\fRコマンドはそのメソッドへのリンクを作成します。このメソッドがオーバーロードされている場合、\fIjavadoc\fRコマンドは、検索で最初に見つかったメソッドにリンクします。結果は前もって特定できません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ネストされたクラスは、すべての形式について、\fIouter\&.inner\fRとして指定する必要があります。単純に\fIinner\fRとはしないでください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +すでに述べたように、クラスとメンバーとの間の区切り文字としては、ドット(\fI\&.\fR)ではなくシャープ記号(\fI#\fR)を使用します。このように指定すると、\fIjavadoc\fRコマンドは、あいまいさを解決できます。ドットは、クラス、ネストされたクラス、パッケージ、およびサブパッケージを区切るためにも使用されるからです。ただし、\fIjavadoc\fRコマンドでは、あいまいさがなければドットは正しく解析されますが、警告は表示されます。 +.RE +@seeタグの検索順序.PP +\fIjavadoc\fRコマンドは、ソース・ファイル、パッケージ・ファイル、概要ファイルに表示される\fI@see\fRタグを処理します。後者の2つのファイルでは、完全修飾の名前を\fI@see\fRタグに指定する必要があります。ソース・ファイルでは、完全修飾の名前、または部分修飾の名前を指定できます。 +.PP +次に、\fI@see\fRタグの検索順序を示します。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +現在のクラスまたはインタフェース。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +外側を囲んでいるクラスとインタフェース(最も近いものから検索)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 3.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 3." 4.2 +.\} +スーパークラスとスーパーインタフェース(最も近いものから検索)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 4.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 4." 4.2 +.\} +現在のパッケージ。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 5.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 5." 4.2 +.\} +インポートされているパッケージ、クラス、およびインタフェース(\fIimport\fR文の順序に従って検索)。 +.RE +.PP +\fIjavadoc\fRコマンドは、各クラスについて項目1\-3を再帰的に適用しながら、一致する名前が見つかるまで検索を続けます。つまり、まず現在のクラスを検索し、次にその外側を囲んでいるクラスEを検索した後、Eのスーパークラスを検索してから、Eを囲んでいるクラスを検索します。項目4と5では、\fIjavadoc\fRコマンドが1つのパッケージ内のクラスまたはインタフェースを検索する順序は決まっていません(その順序は、個々のコンパイラによって異なります)。項目5では、\fIjavadoc\fRコマンドは、\fIjava\&.lang\fRを検索します。このパッケージは、すべてのプログラムに自動的にインポートされるからです。 +.PP +\fIjavadoc\fRコマンドは、完全修飾でないソース・ファイルで\fI@see\fRタグを見つけると、Javaコンパイラと同じ順序で指定された名前を検索します(ただし、\fIjavadoc\fRコマンドは、特定の名前空間のあいまいさを検出しません。これは、ソース・コードにこれらのエラーが存在していないことを前提としているためです)。この検索順序は、Java言語仕様で正式に定義されています。\fIjavadoc\fRコマンドは、関連するクラスとパッケージ、およびインポートされたクラスとパッケージのすべてからその名前を検索します。具体的には、次の順序で検索します。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +現在のクラスまたはインタフェース。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +外側を囲んでいるクラスとインタフェース(最も近いものから検索)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 3.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 3." 4.2 +.\} +スーパークラスとスーパーインタフェース(最も近いものから検索)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 4.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 4." 4.2 +.\} +現在のパッケージ。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 5.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 5." 4.2 +.\} +インポートされているパッケージ、クラス、およびインタフェース(\fIimport\fR文の順序に従って検索)。 +.RE +.PP +\fIjavadoc\fRコマンドは、必ずしもサブクラスを検索するとは限りません。また、実行中に他のパッケージのドキュメントが生成される場合でも、他のパッケージを検索しません。たとえば、\fI@see\fRタグが\fIjava\&.awt\&.event\&.KeyEvent\fRクラス内に含まれていて、\fIjava\&.awt package\fR内のある名前を参照していても、そのクラスがインポートしないかぎり\fIjavadoc\fRコマンドはそのパッケージを検索しません。 +名前が表示される方法.PP +\fIlabel\fRを省略すると、\fIpackage\&.class\&.member\fRが表示されます。一般に、これは現在のクラスおよびパッケージに応じて適切に短縮されます。短縮されるとは、\fIjavadoc\fRコマンドにより必要最小限の名前のみが表示されるということです。たとえば、\fIString\&.toUpperCase()\fRメソッドに、同じクラスのメンバーへの参照と他のクラスのメンバーへの参照が含まれている場合、クラス名が表示されるのは後者のケースのみです(次のリストを参照)。パッケージ名を全体的に削除するには、\fI\-noqualifier\fRオプションを使用します。 +.RS 4 +\fB参照のタイプ\fR: \fI@see\fRタグは同じクラス、同じパッケージのメンバーを参照します +.RE +.RS 4 +\fB例\fR: \fI@see String#toLowerCase()\fR +.RE +.RS 4 +\fB表示\fR: \fItoLowerCase()\fR \- パッケージおよびクラス名を省略します +.RE +.RS 4 +.RE +.RS 4 +\fB参照のタイプ\fR: \fI@see\fRタグは別のクラス、同じパッケージのメンバーを参照します +.RE +.RS 4 +\fB例\fR: \fI@see Character#toLowerCase(char)\fR +.RE +.RS 4 +\fB表示\fR: \fICharacter\&.toLowerCase(char)\fR \- パッケージ名を省略し、クラス名を含みます +.RE +.RS 4 +.RE +.RS 4 +\fB参照のタイプ\fR: \fI@see\fRタグは異なるクラス、異なるパッケージのメンバーを参照します +.RE +.RS 4 +\fB例\fR: \fI@see java\&.io\&.File#exists()\fR +.RE +.RS 4 +\fB表示\fR: \fIjava\&.io\&.File\&.exists()\fR \- パッケージおよびクラス名を含みます +.RE +.RS 4 +.RE +@seeタグの例.PP +右側のコメントは、\fI@see\fRタグが\fIjava\&.applet\&.Applet\fRなどの別のパッケージのクラス内にある場合に、名前がどのように表示されるかを示しています。JavadocツールでのDocコメントの記述方法の@seeに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@see)を参照してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + See also: +@see java\&.lang\&.String // String +@see java\&.lang\&.String The String class // The String class +@see String // String +@see String#equals(Object) // String\&.equals(Object) +@see String#equals // String\&.equals(java\&.lang\&.Object) +@see java\&.lang\&.Object#wait(long) // java\&.lang\&.Object\&.wait(long) +@see Character#MAX_RADIX // Character\&.MAX_RADIX +@see <a href="spec\&.html">Java Spec</a> // Java Spec +@see "The Java Programming Language" // "The Java Programming Language" +.fi +.if n \{\ +.RE +.\} +.PP +\fB注意:\fR +\fI@se\fR\fIe\fRタグを拡張してドキュメント化されないクラスにリンクするには、\fI\-link\fRオプションを使用します。 +.PP +@serial \fIfield\-description\fR | include | exclude +.RS 4 +JDK 1\&.2で導入 +.sp +デフォルトの直列化可能フィールドのドキュメンテーション・コメントで使用します。クラスの直列化可能なフィールドおよびデータの文書化 +(http://docs\&.oracle\&.com/javase/8/docs/platform/serialization/spec/serial\-arch\&.html#5251)を参照してください +.sp +Oracleの直列化された形式の仕様にクラスを含める基準 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/serialized\-criteria\-137781\&.html)も参照してください +.sp +\fIfield\-description\fR(省略可能)では、フィールドの意味を説明し、取り得る値のリストを示す必要があります。必要な場合は、複数の行に渡って説明を記述できます。標準ドックレットは、この情報を、直列化された形式ページに追加します。相互参照ページを参照してください。 +.sp +クラスを直列化した後に直列化可能フィールドをクラスに追加した場合、主説明に、追加したバージョンを識別する文を追加する必要があります。 +.sp +\fIinclude\fRおよび\fIexclude\fR引数は、直列化された形式ページにクラスまたはパッケージを含めるか除外するかを示します。次のように機能します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fISerializable\fRを実装しているpublicまたはprotectedクラスは、そのクラス(またはそのクラスが属するパッケージ)が\fI@serial exclude\fRタグでマークされていないかぎり、含められます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fISerializable\fRを実装しているprivateまたはpackage\-privateクラスは、そのクラス(またはそのクラスが属するパッケージ)が\fI@serial include\fRタグでマークされていないかぎり、除外されます。 +.RE +.sp +たとえば、\fIjavax\&.swing\fRパッケージはpackage\&.htmlまたはpackage\-info\&.java内で\fI@serial\fR +\fIexclude\fRタグでマークされています。publicクラス\fIjava\&.security\&.BasicPermission\fRは\fI@serial exclude\fRタグでマークされています。package\-privateクラス\fIjava\&.util\&.PropertyPermissionCollection\fRは\fI@serial include\fRタグでマークされています。 +.sp +クラス・レベルの\fI@serial\fRタグはパッケージ・レベルの\fI@serial\fRタグをオーバーライドします。 +.RE +.PP +@serialData \fIdata\-description\fR +.RS 4 +JDK 1\&.2で導入 +.sp +データの説明値を使用して、直列化された形式でのデータの型と順序をドキュメント化します。このデータには、\fIwriteObject\fRメソッドによって書き込まれる省略可能なデータ、および\fIExternalizable\&.writeExternal\fRメソッドによって書き込まれるすべてのデータ(ベース・クラスを含む)が含まれます。 +.sp +\fI@serialData\fRタグは、\fIwriteObject\fR、\fIreadObject\fR、\fIwriteExternal\fR、\fIreadExternal\fR、\fIwriteReplace\fRおよび\fIreadResolve\fRメソッドのドキュメンテーション・コメントで使用できます。 +.RE +.PP +@serialField \fIfield\-name\fR \fIfield\-type\fR \fIfield\-description\fR +.RS 4 +JDK 1\&.2で導入 +.sp +\fISerializable\fRクラスの\fIserialPersistentFields\fRメンバーの\fIObjectStreamField\fRコンポーネントをドキュメント化します。\fIObjectStreamField\fRコンポーネントごとに1つの\fI@serialField\fRタグを使用します。 +.RE +.PP +@since \fIsince\-text\fR +.RS 4 +JDK 1\&.1で導入 +.sp +生成ドキュメントに、指定された\fIsince\-text\fRの値の\fI「導入されたバージョン」\fR見出しを追加します。このテキストには、特別な内部構造はありません。このタグは、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドで有効です。このタグは、特定の変更または機能が、\fIsince\-text\fRの値によって指定されたソフトウェア・リリース以降、存在していることを意味します。たとえば、\fI@since 1\&.5\fRです。 +.sp +Javaプラットフォームのソース・コードの場合、\fI@since\fRタグは、JavaプラットフォームAPI仕様のバージョンを示します。ソース・コードがリファレンス実装に追加された時期を示すとは限りません。複数の\fI@since\fRタグを使用でき、複数の\fI@author\fRタグのように扱われます。プログラム要素が複数のAPIで使用される場合、複数のタグを使用できます。 +.RE +.PP +@throws \fIclass\-name\fR \fIdescription\fR +.RS 4 +JDK 1\&.2で導入 +.sp +\fI@exception\fRタグと同じ動作をします。JavadocツールでのDocコメントの記述方法の@throwsに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@exception)を参照してください +.sp +\fI@throws\fRタグは、生成ドキュメントに\fIThrows\fR小見出しを追加して、\fIclass\-name\fRおよび\fIdescription\fRテキストを書き込みます。\fIclass\-name\fRは、そのメソッドからスローされる可能性のある例外の名前です。このタグは、メソッド、コンストラクタのドキュメンテーション・コメント内でのみ有効です。このクラスが完全指定の名前で記述されていない場合、\fIjavadoc\fRコマンドは、検索順序に従ってクラスを探します。複数の\fI@throws\fRタグを、同じ例外または違う例外の指定したドキュメンテーション・コメントで使用できます。「@seeタグの検索順序」を参照してください。 +.sp +すべてのチェック済例外がドキュメント化されるようにするために、\fI@throws\fRタグがthrows節内の例外用に存在しない場合は、\fI@throws\fRタグでドキュメント化されたかのように、\fIjavadoc\fRコマンドによって例外がHTML出力に説明なしで追加されます。 +.sp +オーバーライドされるメソッド内で例外が明示的に宣言されている場合のみ、\fI@throws\fRのドキュメントがそのメソッドからサブクラスにコピーされます。インタフェース・メソッドから実装メソッドにコピーされる場合も同様です。\fI{@inheritDoc}\fRタグを使用して、\fI@throws\fRタグがドキュメンテーションを継承するように強制できます。 +.RE +.PP +{@value \fIpackage\&.class#field\fR} +.RS 4 +JDK 1\&.4で導入 +.sp +定数の値を表示します。\fI{@value}\fRタグが静的フィールドのドキュメンテーション・コメントで引数なしで使用されている場合、その定数の値を表示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * The value of this constant is {@value}\&. + */ +public static final String SCRIPT_START = "<script>" +.fi +.if n \{\ +.RE +.\} +任意のドキュメンテーション・コメント内で引数\fIpackage\&.class#field\fRありで使用された場合、\fI{@value}\fRタグは指定された定数の値を表示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * Evaluates the script starting with {@value #SCRIPT_START}\&. + */ +public String evalScript(String script) {} +.fi +.if n \{\ +.RE +.\} +引数\fIpackage\&.class#field\fRは、\fI@see\fRタグ引数と同一の形式になります。ただし、メンバーは静的フィールドである必要があります。 +.sp +これらの定数の値は「定数フィールド値」 +(http://docs\&.oracle\&.com/javase/8/docs/api/constant\-values\&.html)にも表示されます +.RE +.PP +@version \fIversion\-text\fR +.RS 4 +JDK 1\&.0で導入 +.sp +\fI\-version\fRオプションが使用されている場合、生成ドキュメントに\fI「バージョン」\fR小見出しを追加して、指定された\fIversion\-text\fRの値を書き込みます。このタグはこのコードが含まれるソフトウェアの現在のリリース番号を保持するためのものであるのに対し、\fI@since\fRタグは、このコードが導入されたリリース番号を保持します。\fIversion\-text\fRの値には、特別な内部構造はありません。JavadocツールでのDocコメントの記述方法の@versionに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#@version)を参照してください +.sp +1つのドキュメンテーション・コメントに複数の\fI@version\fRタグを含めることができます。必要に応じて、1つの\fI@version\fRタグに1つのリリース番号を指定することも、複数のリリース番号を指定することもできます。前者の場合は、\fIjavadoc\fRコマンドによって名前と名前の間にカンマ(,)と空白文字が挿入されます。後者の場合は、テキスト全体が解析されることなく、生成ドキュメントにコピーされます。したがって、カンマではなく、各言語に対応した名前区切り文字を使用する必要があるときに、1行に複数の名前を指定できます。 +.RE +.SH "タグを使用できる場所" +.PP +ここでは、タグを使用できる場所について説明します。次のタグがすべてのドキュメンテーション・コメントで使用できます。\fI@see\fR、\fI@since\fR、\fI@deprecated\fR、\fI{@link}\fR、\fI{@linkplain}\fRおよび\fI{@docroot}\fR。 +.SS "概要タグ" +.PP +概要タグは、概要ページのドキュメンテーション・コメントで使用できるタグです(このドキュメンテーション・コメントは、通常overview\&.htmlという名前のソース・ファイル内にあります)。他のドキュメンテーション・コメントの場合と同様に、これらのタグは、主説明の後で使用する必要があります。 +.PP +\fB注意:\fR +Java SE 1\&.2では、概要ドキュメント内の\fI{@link}\fRタグに不具合があります。テキストは正しく表示されますが、リンクが設定されません。現在のところ、\fI{@docRoot}\fRタグは、概要ドキュメント内では機能しません。 +.PP +概要タグは、次のとおりです。 +.PP +@see reference || @since since\-text || @serialField field\-name field\-type field\-description || @author name\-text || @version version\-text || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} || +.SS "パッケージ・タグ" +.PP +パッケージ・タグは、パッケージのドキュメンテーション・コメントで使用できるタグで、ドキュメンテーション・コメントはpackage\&.htmlまたはpackage\-info\&.javaという名前のソース・ファイル内にあります。ここで使用できる\fI@serial\fRタグは、\fIinclude\fRまたは\fIexclude\fR引数を指定したもののみです。 +.PP +パッケージ・タグは、次のとおりです。 +.PP +@see reference || @since since\-text || @serial field\-description | include | exclude || @author name\-text || @version version\-text || {@linkplain package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} || +.SS "クラスおよびインタフェース・タグ" +.PP +次に、クラスまたはインタフェースのドキュメンテーション・コメントで使用できるタグを示します。\fI@serial\fRタグは、\fIinclude\fRまたは\fIexclude\fR引数を指定して、クラスまたはインタフェースのドキュメンテーション内でのみ使用できます。 +.PP +@see reference || @since since\-text || @deprecated deprecated\-text || @serial field\-description | include | exclude || @author name\-text || @version version\-text || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} || +.PP +クラス・コメントの例: +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * A class representing a window on the screen\&. + * For example: + * <pre> + * Window win = new Window(parent); + * win\&.show(); + * </pre> + * + * @author Sami Shaio + * @version 1\&.13, 06/08/06 + * @see java\&.awt\&.BaseWindow + * @see java\&.awt\&.Button + */ +class Window extends BaseWindow { + \&.\&.\&. +} +.fi +.if n \{\ +.RE +.\} +.SS "フィールド・タグ" +.PP +これらのタグは、フィールドに表示できます。 +.PP +@see reference || @since since\-text || @deprecated deprecated\-text || @serial field\-description | include | exclude || @serialField field\-name field\-type field\-description || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} || {@value package\&.class#field} +.PP +フィールド・コメントの例: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl /** -.fl - * The X\-coordinate of the component. -.fl + * The X\-coordinate of the component\&. * -.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 +.if n \{\ .RE -\f3次にメソッドのドキュメンテーションコメントの例を示します。\fP +.\} +.SS "コンストラクタとメソッド・タグ" +.PP +次に、コンストラクタまたはメソッドのドキュメンテーション・コメントで使用できるタグを示します。ただし、\fI@return\fRはコンストラクタでは使用できず、 +\fI{@inheritDoc}\fRには制限があります。 +.PP +@see reference || @since since\-text || @deprecated deprecated\-text || @param parameter\-name description || @return description || @throws class\-name description || @exception class\-name description || @serialData data\-description || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@inheritDoc} || {@docRoot} +.PP +\fB注意:\fR +\fI@serialData\fRタグは、\fIwriteObject\fR、\fIreadObject\fR、\fIwriteExternal\fR、\fIreadExternal\fR、\fIwriteReplace\fRおよび\fIreadResolve\fRメソッドのドキュメンテーション・コメントでのみ使用できます。 +.PP +メソッド・コメントの例: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - /** -.fl - * Returns the character at the specified index. An index -.fl - * ranges from <code>0</code> to <code>length() \- 1</code>. -.fl +/** + * Returns the character at the specified index\&. An index + * ranges from <code>0</code> to <code>length() \- 1</code> * -.fl - * @param index the index of the desired character. -.fl - * @return the desired character. -.fl + * @param index the index of the desired character\&. + * @return the desired character\&. * @exception StringIndexOutOfRangeException -.fl * if the index is not in the range <code>0</code> -.fl - * to <code>length()\-1</code>. -.fl - * @see java.lang.Character#charValue() -.fl + * to <code>length()\-1</code> + * @see java\&.lang\&.Character#charValue() */ -.fl public char charAt(int index) { -.fl - ... -.fl + \&.\&.\&. } -.fl -\fP .fi +.if n \{\ +.RE +.\} .SH "オプション" -.LP -javadoc ツールは、ドックレットを使って出力を決定します。Javadoc ツールは、\-doclet オプションでカスタムドックレットが指定されている場合以外は、デフォルトの標準ドックレットを使います。Javadoc ツールには、任意のドックレットとともに使用できるコマンド行オプションがあります。これらのオプションについては、このあとの「Javadoc オプション」で説明します。標準ドックレットでは、このほかに、いくつかの追加のコマンド行オプションが提供されます。これらのオプションについては、そのあとの「標準ドックレットが提供するオプション」で説明します。どのオプション名も、大文字と小文字が区別されません。ただし、オプションの引数では、大文字と小文字が区別されます。 -.LP +.PP +\fIjavadoc\fRコマンドは、ドックレットを使用して出力を決定します。\fIjavadoc\fRコマンドは、\fI\-doclet\fRオプションでカスタム・ドックレットが指定されている場合以外は、デフォルトの標準ドックレットを使用します。\fIjavadoc\fRコマンドには、任意のドックレットとともに使用できるコマンドライン・オプションがあります。これらのオプションについては、Javadocオプションで説明します。標準ドックレットでは、この他に、いくつかの追加のコマンドライン・オプションが提供されます。これらのオプションについては、標準ドックレットのオプションで説明します。どのオプション名も、大文字と小文字が区別されません。ただし、オプションの引数では、大文字と小文字が区別されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Javadocオプションも参照してください +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +標準ドックレットのオプションも参照してください +.RE +.PP オプションは次のとおりです。 -.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 -.. +.PP +\-1\&.1 || \-author || \-bootclasspath classpathlist || \-bottom text || \-breakiterator || \-charset name || \-classpath classpathlist || \-d directory || \-docencoding name || \-docfilesubdirs || \-doclet class || \-docletpath classpathlist || \-doctitle title || \-encoding || \-exclude packagename1:packagename2:\&.\&.\&. || \-excludedocfilessubdir name1:name2 || \-extdirs dirist || \-footer footer || \-group groupheading packagepattern:packagepattern || \-header header || \-help || \-helpfile path\efilename || \-Jflag || \-keywords || \-link extdocURL || \-linkoffline extdocURL packagelistLoc || \-linksource || \-locale language_country_variant || \-nocomment || \-nodeprecated || \-nodeprecatedlist || \-nohelp || \-noindex || \-nonavbar || \-noqualifier all | packagename1:packagename2\&.\&.\&. || \-nosince || \-notimestamp || \-notree || +\fI\-overview path/filename || \fR\-package || \-private || \-protected || \-public || \-quiet || \-serialwarn || \-source release || \-sourcepath sourcepathlist || \-sourcetab tablength || \-splitindex || +\fI\-stylesheet path/filename || \fR\-subpackages package1:package2:\&.\&.\&. || \-tag tagname:Xaoptcmf:"taghead" || \-taglet class || \-tagletpath tagletpathlist || \-title title || \-top || \-use || \-verbose || \-version || \-windowtitle title +.PP +次のオプションは、すべてのドックレットに使用可能なコアのJavadocオプションです。標準ドックレットでは、ドックレットの他の部分を提供します。\fI\-bootclasspath\fR、\fI\-breakiterator\fR、\fI\-classpath\fR、\fI\-doclet\fR、\fI\-docletpath\fR、\fI\-encoding\fR、\-\fIexclude\fR、\fI\-extdirs\fR、\fI\-help\fR、\fI\-locale\fR、\fI\-\fR\fIoverview\fR、\fI\-package\fR、\fI\-private\fR、\fI\-protected\fR、\fI\-public\fR、\fI\-quiet\fR、\fI\-source\fR、\fI\-sourcepath\fR、\fI\-subpackages\fRおよび\fI\-verbose\fR。 +.SS "Javadocオプション" +.PP +\-overview \fIpath/filename \fR +.RS 4 + +\fIjavadoc\fRコマンドに対して、\fIpath/filename \fRで指定されたソース・ファイルから概要ドキュメント用のテキストを取得し、そのテキストを概要ページ(overview\-summary\&.html)に配置するように指定します。\fIpath/filename\fRは、現在のディレクトリからの相対パスです。 +.sp +\fIfilename\fRの値で任意の名前を使用し、pathで任意の配置先を指定できますが、通常はoverview\&.htmlという名前を付け、ソース・ツリー内の最上位パッケージ・ディレクトリを含むディレクトリに配置します。この場所に配置すると、パッケージをドキュメント化するときにpathを指定する必要がなくなります。これは、\fI\-sourcepath\fRオプションによってこのファイルが指し示されるからです。 +.sp +たとえば、\fIjava\&.lang\fRパッケージのソース・ツリーが/src/classes/java/lang/の場合、概要ファイルを/src/classes/overview\&.htmlに配置できます +.sp +実際の例を参照してください。 +.sp +\fIpath/filename\fRで指定するファイルについては、概要コメント・ファイルを参照してください。 +.sp +概要ページが作成されるのは、\fIjavadoc\fRコマンドに複数のパッケージ名を渡した場合のみです。詳細は、HTMLフレームを参照してください。概要ページのタイトルは、\fI\-doctitle\fRによって設定されます。 +.RE +.PP +\-Xdoclint:(all|none|[\-]\fI<group>\fR) +.RS 4 +不正な参照、アクセシビリティの欠落およびJavadocコメントの不足の警告をレポートし、無効なJavadoc構文および不足しているHTMLタグのエラーをレポートします。 +.sp +このオプションにより、\fIjavadoc\fRコマンドは生成された出力に含まれるすべてのドキュメント・コメントをチェックします。通常どおり、標準オプション\fI\-public\fR、\fI\-protected\fR、\fI\-package\fRおよび\fI\-private\fRで生成された出力に含む項目を選択できます。 +.sp +\fI\-Xdoclint\fRが有効になっている場合は、\fIjavac\fRコマンドと同様にメッセージで問題がレポートされます。\fIjavadoc\fRコマンドは、メッセージ、ソース・ファイルのコピーおよびエラーが検出された正確な位置を指すキャレットを出力します。メッセージは、重大度、および生成されたドキュメントがバリデータを使用して実行された場合にエラーが発生する可能性に応じて、警告またはエラーになります。たとえば、不正な参照またはJavadocコメントの欠落は、\fIjavadoc\fRコマンドが無効なHTMLを生成する原因にならないため、これらの問題は警告としてレポートされます。構文エラーまたはHTML終了タグの欠落は、\fIjavadoc\fRコマンドが無効なHTMLを生成する原因になるため、これらの問題はエラーとしてレポートされます。 +.sp +デフォルトでは、\fI\-Xdoclint\fRオプションは有効になっています。オプション\fI\-Xdoclint:none\fRで無効にします。 +.sp +\fI\-Xdoclint\fRオプションでレポートされる内容は次のオプションで変更します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-Xdoclint\fR\fI\fR\fI none\fR: +\fI\-Xdoclint\fRオプションを無効にします。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-Xdoclint\fR\fI\fR\fI \fR\fIgroup\fR: +\fIgroup\fRチェックを有効にします。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-Xdoclint\fR\fI\fR\fI all\fR: すべてのチェック・グループを有効にします。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-Xdoclint\fR\fI\fR\fI all,\fR\fI\-group\fR: +\fIgroup\fRチェック以外のすべてを有効にします。 +.RE +.sp +変数\fIgroup\fRは次のいずれかの値を持ちます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIaccessibility\fR: アクセシビリティ・チェッカで検出する問題をチェックします(たとえば、\fI<table>\fRタグで指定されるno captionまたはsummary属性)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIhtml\fR: インライン要素へのブロック要素の挿入や終了タグを必要とする要素を終了しないなど、上位レベルHTMLの問題を検出します。ルールは、HTML 4\&.01仕様から導出されます。このタイプのチェックは、\fIjavadoc\fRコマンドを有効にして、ブラウザが受け入れる可能性のあるHTMLの問題を検出します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fImissing\fR: 欠落しているJavadocコメントまたはタグをチェックします(たとえば、欠落しているコメントやクラス、または欠落している\fI@return\fRタグやメソッド上の同様のタグ)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIreference\fR: JavadocタグのJava API要素の参照に関連する問題をチェックします(たとえば、\fI@see\fRで見つからない項目、または\fI@param\fRの後の不正な名前)。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIsyntax\fR: エスケープされていない山カッコ(\fI<\fRおよび\fI>\fR)やアンパサンド(\fI&\fR)、無効なJavadocタグなどの下位レベルの問題を確認します。 +.RE +.sp +\fI\-Xdoclint\fRオプションを複数回指定して、複数のカテゴリのエラーと警告をチェックするオプションを有効にできます。または、前のオプションを使用して、複数のエラーおよび警告カテゴリを指定できます。たとえば、次のコマンドのいずれかを使用して、\fIfilename\fRファイル内のHTML、構文およびアクセシビリティの問題をチェックします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 82 -.nr 34 \n(.lu -.eo -.am 80 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\-\f21.1\fP -.br -\-author -.br -\-\f2bootclasspath\fP -.br -\-bottom -.br -\-\f2breakiterator\fP -.br -\-charset -.br -\-\f2classpath\fP -.br -\-d -.br -\-docencoding -.br -\-docfilessubdirs -.br -\-\f2doclet\fP -.br -\-\f2docletpath\fP -.br -\-doctitle -.br -\-\f2encoding\fP -.br -\-\f2exclude\fP -.br -\-excludedocfilessubdir -.br -\-\f2extdirs\fP -.br -\-footer -.br -\-group -.br -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\-header -.br -\-\f2help\fP -.br -\-helpfile -.br -\-\f2J\fP -.br -\-keywords -.br -\-link -.br -\-linkoffline -.br -\-linksource -.br -\-\f2locale\fP -.br -\-nocomment -.br -\-nodeprecated -.br -\-nodeprecatedlist -.br -\-nohelp -.br -\-noindex -.br -\-nonavbar -.br -\-noqualifier -.br -\-nosince -.br -\-notimestamp -.br -\-notree -.br -\-\f2overview\fP -.br -\-\f2package\fP -.br -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 82 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/4u -.if \n(.l<\n(82 .ll \n(82u -.in 0 -\-\f2private\fP -.br -\-\f2protected\fP -.br -\-\f2public\fP -.br -\-\f2quiet\fP -.br -\-serialwarn -.br -\-\f2source\fP -.br -\-\f2sourcepath\fP -.br -\-sourcetab -.br -\-splitindex -.br -\-stylesheetfile -.br -\-\f2subpackages\fP -.br -\-tag -.br -\-taglet -.br -\-tagletpath -.br -\-top -.br -\-title -.br +javadoc \-Xdoclint:html \-Xdoclint:syntax \-Xdoclint:accessibility \fIfilename\fR +javadoc \-Xdoclint:html,syntax,accessibility \fIfilename\fR +.fi +.if n \{\ +.RE +.\} +\fB注意:\fR +\fIjavadoc\fRコマンドでは、これらのチェックの完全性は保証されません。具体的には、完全なHTMLコンプライアンス・チェッカではありません。\-\fIXdoclint\fRオプションの目的は、\fIjavadoc\fRコマンドを有効にして一般的なエラーの大半をレポートすることです。 +.sp +\fIjavadoc\fRコマンドは、無効な入力の修正を試行せず、レポートのみ行います。 +.RE +.PP +\-public +.RS 4 +publicクラスおよびメンバーのみ表示します。 +.RE +.PP +\-protected +.RS 4 +protectedおよびpublicのクラスとメンバーのみを表示します。これがデフォルトです。 +.RE +.PP +\-package +.RS 4 +package、protected、およびpublicのクラスとメンバーのみ表示します。 +.RE +.PP +\-private +.RS 4 +すべてのクラスとメンバーを表示します。 +.RE +.PP +\-help +.RS 4 +オンライン・ヘルプを表示します。\fIjavadoc\fRと\fIドックレット\fRのコマンドライン・オプションがリストされます。 +.RE +.PP +\-doclet \fIclass\fR +.RS 4 +ドキュメントの生成に使用するドックレットを起動するためのクラス・ファイルを指定します。完全修飾名を使用します。このドックレットにより、出力の内容と形式が定義されます。\fI\-doclet\fRオプションが使用されていない場合、\fIjavadoc\fRコマンドは、標準ドックレットを使用してデフォルトのHTML形式を生成します。このクラスには\fIstart(Root)\fRメソッドが含まれている必要があります。この起動クラスへのパスは\fI\-docletpath\fRオプションによって定義されます。ドックレットの概要 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/doclet/overview\&.html)を参照してください +.RE +.PP +\-docletpath \fIclasspathlist\fR +.RS 4 +\fI\-doclet\fRオプションで指定されたドックレット開始クラス・ファイル、およびそのクラスが依存するすべてのJARファイルへのパスを指定します。開始クラス・ファイルがJARファイル内にある場合、このオプションでJARファイルへのパスを指定します。絶対パスまたは現在のディレクトリからの相対パスを指定できます。\fIclasspathlist\fRに複数のパスやJARファイルが含まれる場合には、それらをSolarisの場合はコロン(:)で、Windowsの場合はセミコロン(;)でそれぞれ区切ります。目的のドックレット開始クラスがすでに検索パス内にある場合は、このオプションは不要です。ドックレットの概要 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/doclet/overview\&.html)を参照してください +.RE +.PP +\-1\&.1 +.RS 4 +Javadoc 1\&.4から削除され、代替はありません。このオプションは、Javadoc 1\&.1によって生成されるのと同じ外見と機能を持つドキュメントを作成するためのものでした(ネストされたクラスはサポートされていません)。このオプションが必要な場合は、Javadoc 1\&.2または1\&.3をかわりに使用してください。 +.RE +.PP +\-source \fIrelease\fR +.RS 4 +受け付けるソース・コードのリリースを指定します。\fIrelease\fRパラメータには次の値を指定できます。\fIjavac\fRコマンドでコードをコンパイルするときに使用する値に対応する\fIリリース\fRの値を使用します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBリリース値: 1\&.5\fR。\fIjavadoc\fRコマンドは、JDK 1\&.5で導入された総称および他の言語機能を含むコードを受け付けます。\fI\-source\fRオプションが使用されなかった場合のコンパイラのデフォルト動作は、1\&.5のものになります。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBリリース値: 1\&.4\fR。\fIjavadoc\fRコマンドは、JDK 1\&.4で導入されたアサーションを含むコードを受け付けます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBリリース値: 1\&.3\fR。\fIjavadoc\fRコマンドは、JDK 1\&.3以降に導入されたアサーション、総称、または他の言語機能をサポートしません。 +.RE +.RE +.PP +\-sourcepath \fIsourcepathlist\fR +.RS 4 +パッケージ名または\fI\-subpackages\fRオプションを\fIjavadoc\fRコマンドに渡すときに、ソース・ファイルを見つけるための検索パスを指定します。 +\fI複数のパスはコロン(:)で区切ります。\fR\fIjavadoc\fRコマンドは、指定されたパス以下のすべてのサブディレクトリを検索します。このオプションを使用して、ドキュメント化されるソース・ファイルの位置のみでなく、それ自体はドキュメント化されないがドキュメント化されるソース・ファイルから継承されたコメントを持つソース・ファイルの位置も確認できます。 +.sp +\fI\-sourcepath\fRオプションを使用できるのは、\fIjavadoc\fRコマンドにパッケージ名を渡す場合のみです。\fIjavadoc\fRコマンドに渡されるソース・ファイルは検索されません。ソース・ファイルを特定するには、そのディレクトリに移動するか、「1つ以上のクラスのドキュメント化」に示すように各ファイルの前にパスを含めます。\fI\-sourcepath\fRが省略された場合、\fIjavadoc\fRコマンドは、クラス・パスを使用してソース・ファイルを検索します(\fI\-classpath\fRを参照)。デフォルトの\fI\-sourcepath\fRは、クラス・パスの値です。\fI\-classpath\fRを省略してパッケージ名を\fIjavadoc\fRコマンドに渡すと、\fIjavadoc\fRコマンドは現在のディレクトリ(およびそのサブディレクトリ)からソース・ファイルを検索します。 +.sp +\fIsourcepathlist\fRには、ドキュメント化するパッケージのソース・ツリーのルート・ディレクトリを設定します。 +.sp +たとえば、\fIcom\&.mypackage\fRという名前のパッケージをドキュメント化する場合に、そのソース・ファイルが/home/user/src/com/mypackage/*\&.javaにあるとします。ソース・パスをcom\emypackageが含まれるディレクトリ/home/user/srcに指定してから、次のように、パッケージ名を指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath /home/user/src/ com\&.mypackage +.fi +.if n \{\ +.RE +.\} +ソース・パスの値とパッケージ名を連結して、ドットをスラッシュ(/)に変更すると、次のように、パッケージのフルパスになります。 +.sp +/home/user/src/com/mypackage +.sp +2つのソース・パスを設定するには、次のようにします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath /home/user1/src:/home/user2/src com\&.mypackage +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-classpath \fIclasspathlist\fR +.RS 4 +\fIjavadoc\fRコマンドが参照クラスの検索を行うときに使用するパスを指定します。参照クラスとは、ドキュメント化されるクラスと、それらのクラスによって参照されるすべてのクラスのことです。 +\fI複数のパスはコロン(:)で区切ります。\fR\fIjavadoc\fRコマンドは、指定されたパス以下のすべてのサブディレクトリを検索します。\fIclasspathlist\fRの値を指定するときは、クラス・パスのドキュメントにある指示に従ってください。 +.sp +\fI\-sourcepath\fRが省略された場合、\fIjavadoc\fRコマンドは\fI\-classpath\fRを使用して、ソース・ファイルおよびクラス・ファイルを検索します(下位互換性のため)。ソース・ファイルとクラス・ファイルを別々のパスから検索する必要がある場合は、\fI\-sourcepath\fRと\fI\-classpath\fRの両方を使用します。 +.sp +たとえば、\fIcom\&.mypackage\fRをドキュメント化する場合に、そのソース・ファイルがディレクトリ/home/user/src/com/mypackageにあり、このパッケージが/home/user/libthen内のライブラリに依存しているとき、次のように指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath /home/user/lib \-classpath /home/user/src com\&.mypackage +.fi +.if n \{\ +.RE +.\} +他のツールと同様に、\fI\-classpath\fRが指定されていない場合、\fICLASSPATH\fR環境変数が設定されていれば、\fIjavadoc\fRコマンドはその環境変数を使用します。どちらも設定されていない場合、\fIjavadoc\fRコマンドは現在のディレクトリからクラスを検索します。 +.sp +\fIjavadoc\fRコマンドが\fI\-classpath\fRを使用してユーザー・クラスを検索する方法についての、拡張機能クラスやブートストラップ・クラスに関連した詳細は、クラスの検索方法 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html)を参照してください。 +.sp +*のベース名を含むクラス・パス要素は、\fI\&.jar\fRまたは\fI\&.JAR\fRを拡張子に持つディレクトリ内のすべてのファイルのリストを指定するのと同等とみなされます。 +.sp +たとえば、ディレクトリ\fImydir\fRに\fIa\&.jar\fRと\fIb\&.JA\fRRが含まれている場合、クラス・パス要素\fIfoo/*\fRは\fIA\&.jar:b\&.JAR\fRに展開されますが、JARファイルの順番は未指定となります。非表示のファイルを含む、指定したディレクトリ内のすべてのJARファイルがリストに含まれます。*からなるクラス・パス・エントリは、現在のディレクトリ内のすべてのJARファイルのリストに展開されます。\fICLASSPATH\fR環境変数も同様に展開されます。クラス・パスのワイルドカードの展開は、Java仮想マシン(JVM)の開始前に行われます。Javaプログラムは、System\&.getenv(\fI"CLASSPATH"\fR)の呼び出しによってなど、環境を問い合せる場合を除き、展開されていないワイルドカードを参照しません。 +.RE +.PP +\-subpackages \fIpackage1:package2:\&.\&.\&.\fR +.RS 4 +ソース・ファイルから指定されたパッケージおよびそのサブパッケージ内に再帰的にドキュメントを生成します。このオプションは、ソース・コードに新しいサブパッケージを追加する際に便利です。新しいサブパッケージが自動的に組み込まれるからです。各package引数は、任意の最上位サブパッケージ(\fIjava\fRなど)または完全修飾パッケージ(\fIjavax\&.swing\fRなど)になります。ソース・ファイルを含める必要はありません。引数は、すべてのオペレーティング・システムで、コロンで区切られます。ワイルドカードは使用できません。パッケージの検索場所を指定するには、\fI\-sourcepath\fRを使用します。このオプションでは、ソース・ツリー内に存在するがパッケージに含まれないソース・ファイルを処理しません。ソース・ファイルの処理を参照してください。 +.sp +たとえば、次のコマンドは、\fIjava\fRおよび\fIjavax\&.swing\fRという名前のパッケージとこれらのサブパッケージ全部のドキュメントを生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-d docs \-sourcepath /home/user/src \-subpackages java:javax\&.swing +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-exclude \fIpackagename1:packagename2:\&.\&.\&.\fR +.RS 4 +指定されたパッケージとそのサブパッケージを\fI\-subpackages\fRによって作成されたリストから無条件に除外します。過去または将来の\fI\-subpackages\fRオプションの指定によって組み込まれるパッケージも除外の対象となります。 +.sp +次の例では、\fIjava\&.io\fR、\fIjava\&.util\fR、\fIjava\&.math\fRなどは組み込まれますが、\fIjava\&.net\fRと\fIjava\&.lang\fRをルートに持つパッケージは除外されます。\fIjava\&.lang\fRのサブパッケージである\fIjava\&.lang\&.ref\fRが除外される点に注意してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath /home/user/src \-subpackages java \-exclude + java\&.net:java\&.lang +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-bootclasspath \fIclasspathlist\fR +.RS 4 +ブート・クラスが存在するパスを指定します。ブート・クラスとは、通常、Javaプラットフォーム・クラスのことです。\fIbootclasspath\fRは、\fIjavadoc\fRコマンドがソース・ファイルとクラス・ファイルを探すときに使用する検索パスの一部です。詳細は、クラスの検出方法 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html)を参照してください +.sp +\fIclasspathlist\fRパラメータ内のディレクトリは、セミコロン(;)で区切る(Windowsの場合)か、コロン(:)で区切ります(Oracle Solarisの場合)。 +.RE +.PP +\-extdirs \fIdirist\fR +.RS 4 +拡張機能クラスが存在するディレクトリを指定します。拡張機能クラスとは、Java拡張機能機構を使用するすべてのクラスです。\fIextdirs\fRオプションは、\fIjavadoc\fRコマンドがソース・ファイルとクラス・ファイルを探すときに使用する検索パスの一部です。詳細は、\fI\-classpath\fRオプションを参照してください。\fIdirlist\fR内のディレクトリは、セミコロン(;)で区切る(Windowsの場合)か、コロン(:)で区切ります(Oracle Solarisの場合)。 +.RE +.PP +\-verbose +.RS 4 +\fIjavadoc\fRコマンドの実行中に詳細なメッセージを表示します。\fIverbose\fRオプションを指定しないと、ソース・ファイルのロード時、ドキュメントの生成時(ソース・ファイルごとに1つのメッセージ)、およびソート時にメッセージが表示されます。verboseオプションを指定すると、各Javaソース・ファイルの解析に要した時間(ミリ秒単位)を示す追加のメッセージが表示されます。 +.RE +.PP +\-quiet +.RS 4 +メッセージを抑制し、警告とエラーのみが表示されるようにして、これらを確認しやすくします。\fIversion\fR文字列も抑止します。 +.RE +.PP +\-breakiterator +.RS 4 +英語の場合、パッケージ、クラスまたはメンバーの主説明の最初の文の終わりを判断する際に、\fIjava\&.text\&.BreakIterator\fRの国際化された文境界を使用します。他のすべてのロケールは、英語言語というロケール固有のアルゴリズムではなく、すでに\fIBreakIterator\fRクラスを使用しています。最初の文は、パッケージ、クラス、またはメンバーのサマリーにコピーされ、アルファベット順の索引にコピーされます。JDK 1\&.2以降、\fIBreakIterator\fRクラスは、英語を除くすべての言語の文の終わりを判断するために、すでに使用されています。したがって、\fI\-breakiterator\fRオプションは、1\&.2以降では英文以外には効果がありません。英文には、次のような独自のデフォルトのアルゴリズムがあります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +英文のデフォルトの文区切りアルゴリズム。空白文字またはHTMLブロック・タグ(\fI<P>\fRなど)が続くピリオドで停止します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +breakiterator文区切りアルゴリズム。次の語が大文字で始まる場合、空白文字が続くピリオド、疑問符、または感嘆符で停止します。このアルゴリズムでは「The serial no\&. is valid」など、ほとんどの省略表記が処理されますが、「Mr\&. Smith」は処理されません。\fI\-breakiterator\fRオプションでは、HTMLタグや、数字または記号で始まる文では停止しません。HTMLタグに埋め込まれている場合でも、「\&.\&./filename」の最後のピリオドで停止します。 +.RE +.sp +Java SE 1\&.5では\fI\-breakiterator\fR警告メッセージが削除され、デフォルトの文区切りアルゴリズムは変更されていません。ソース・コードを変更せず、SE 1\&.4\&.xでの\fI\-breakiterator\fRオプションの警告を除去していない場合でも、何もする必要はありません。Java SE 1\&.5\&.0からは警告は消滅しています。 +.RE +.PP +\-locale \fIlanguage_country_variant\fR +.RS 4 +\fIjavadoc\fRコマンドがドキュメントを生成するときに使用するロケールを指定します。この引数は、\fIj\fR\fIava\&.util\&.Locale\fRドキュメントで説明しているように、\fIen_US\fR +(英語、米国)または\fIen_US_WIN\fR +(Windowsバリアント)などのロケールの名前です。 +.sp +\fB注意:\fR +\fI\-locale\fRオプションは、標準ドックレットが提供するすべてのオプション、またはその他の任意のドックレットが提供するすべてのオプションより前(左側)に指定する必要があります。そうしないと、ナビゲーション・バーが英語で表示されます。このコマンドライン・オプションのみ、指定する順序に依存します。標準ドックレットのオプションを参照してください。 +.sp +ロケールを指定すると、指定したロケールのリソース・ファイルが\fIjavadoc\fRコマンドによって選択されて、メッセージ(ナビゲーション・バー、リストと表の見出し、ヘルプ・ファイルの目次、stylesheet\&.cssのコメントなどの文字列)のために使用されます。また、アルファベット順にソートされるリストのソート順、および最初の文の終わりを判断するための文の区切り文字も、指定したロケールによって決まります。\fI\-locale\fRオプションは、ドキュメント化されるクラスのソース・ファイル内で指定されているドキュメンテーション・コメントのテキストのロケールを決定するものではありません。 +.RE +.PP +\-encoding +.RS 4 +ソース・ファイルのエンコーディングの名前(\fIEUCJIS/SJIS\fRなど)を指定します。このオプションが指定されていない場合は、プラットフォームのデフォルト・コンバータが使用されます。およびオプションも参照してください。 +.RE +.PP +\-J\fIflag\fR +.RS 4 +\fIjavadoc\fRコマンドを実行するJava Runtime Environment (JRE)に、\fIflag\fRを直接渡します。たとえば、生成ドキュメントを処理するためにシステムで32MBのメモリーを確保しておく必要がある場合は、\fI\-Xmx\fRオプションを次のように呼び出します。\fIjavadoc \-J\-Xmx32m \-J\-Xms32m com\&.mypackage\fR。\fI\-Xms\fRは省略可能で、これは初期メモリーのサイズを設定するのみのオプションで、必要なメモリーの最小量がわかっている場合に便利です。 +.sp +\fIJ\fRと\fIflag\fRの間に空白文字はありません。 +.sp +使用している\fIjavadoc\fRコマンドのバージョンを確認するには\fI\-version\fRオプションを使用します。出力ストリームには標準ドックレットのバージョン番号が含まれます。Javadocコマンドの実行を参照してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-J\-version +java version "1\&.7\&.0_09" +Java(TM) SE Runtime Environment (build 1\&.7\&.0_09\-b05) +Java HotSpot(TM) 64\-Bit Server VM (build 23\&.5\-b02, mixed mode) +.fi +.if n \{\ +.RE +.\} +.RE +.SS "標準ドックレットのオプション" +.PP +\-d \fIdirectory\fR +.RS 4 +\fIjavadoc\fRコマンドが生成されたHTMLファイルを保存する生成先ディレクトリを指定します。\fI\-d\fRオプションを省略すると、ファイルは現在のディレクトリに保存されます。\fIdirectory\fRの値には、絶対ディレクトリ、または現在の作業ディレクトリからの相対ディレクトリを指定できます。Java SE 1\&.4では、\fIjavadoc\fRコマンドを実行すると生成先ディレクトリが自動的に作成されます。 +.sp +たとえば、次の例では、\fIcom\&.mypackage\fRパッケージのドキュメントが生成され、その結果が\fI/user/doc/ \fRディレクトリに保存されます。\fIjavadoc \-d \fR\fI/user/doc/ \fR\fIcom\&.mypackage\fR +.RE +.PP \-use -.br -\-\f2verbose\fP -.br +.RS 4 +ドキュメント化されるクラスおよびパッケージごとに1つの使用ページを組み込みます。このページには、その特定のクラスまたはパッケージのAPIを使用しているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドが記述されます。たとえば、クラスCを例にとると、クラスCを使用しているものとしては、Cのサブクラス、Cとして宣言されているフィールド、Cを返すメソッド、および型Cのパラメータを持つメソッドとコンストラクタがあります。たとえば、\fIString\fR型用の使用ページを表示できます。\fIjava\&.awt\&.Font\fRクラスの\fIgetName\fRメソッドは\fIString\fR型を戻すので、\fIgetName\fRメソッドは\fIString\fRを使用し、\fIgetName\fRメソッドが\fIString\fR用の使用ページに表示されます。これは実装ではなくAPIの使用のみをドキュメント化します。メソッドがその実装で\fIString\fRを使用するが、引数として文字列を取らない、または文字列を返さない場合、それは\fIString\fRの使用とはみなされません。生成された使用ページにアクセスするには、クラスまたはパッケージに移動し、ナビゲーション・バーの\fBリンクの使用\fRをクリックします。 +.RE +.PP \-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 1993 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ne \n(a|u+\n(.Vu -.ne \n(b|u+\n(.Vu -.ne \n(c|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u \n(82u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(42u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-127 -.LP -\f2イタリック\fP で示されたオプションは、Javadoc の基本オプションであり、Javadoc ツールのフロントエンドによって提供され、すべてのドックレットで使用できます。標準ドックレット自体は、イタリックでないオプションを提供します。 -.SS -Javadoc オプション -.RS 3 -.TP 3 -\-overview \ path/filename -Javadoc に対して、\f2path/filename\fP で指定された「ソース」ファイルから概要ドキュメント用のテキストを取得し、そのテキストを概要ページ (\f2overview\-summary.html\fP) に配置するように指定します。 \f2path/filename\fP は、カレントディレクトリからの相対パスです。 -.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 -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 には次の値を指定できます。 -.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 以降に導入されたアサーション、総称、または他の言語機能をサポートしません。 +.RS 4 +生成ドキュメントに、@versionのテキストを組み込みます。このテキストは、デフォルトでは省略されます。使用している\fIjavadoc\fRコマンドのバージョンを確認するには\fI\-J\-version\fRオプションを使用します。 .RE -.LP -javac でコードをコンパイルするときに使用した値に対応する \f2release\fP の値を使用します。 -.LP -.TP 3 -\-sourcepath\ sourcepathlist -パッケージ名または \-subpackages を javadoc コマンドに渡すときは、ソースファイル (.\f2.java\fP) を見つけるための \f2検索パス\fP を指定 \f2します\fP 。\f2sourcepathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパス以下のすべてのサブディレクトリを検索します。このオプションを使って、ドキュメント化されるソースファイルの位置だけでなく、それ自体はドキュメント化されないがドキュメント化されるソースファイルから継承されたコメントを持つソースファイルの位置も確認できます。 -.LP -\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 という名前のパッケージをドキュメント化する場合に、そのソースファイルが次の場所にあるとします。 -.nf -\f3 -.fl - /home/user/src/com/mypackage/*.java -.fl -\fP -.fi -このとき次のように、 \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 -この方法は、ソースパスの値とパッケージ名を連結して、ドットを (円記号) 「\\」に変えると、パッケージのフルパス \f2/home/user/src/com/mypackage になることを理解すると簡単です\fP。 -.LP -2 つのソースパスを設定するには、次のようにします。 -.nf -\f3 -.fl - % \fP\f3javadoc \-sourcepath /home/user1/src:/home/user2/src com.mypackage\fP -.fl -.fi -.LP -.TP 3 -\-classpath\ classpathlist -javadoc が参照クラス (\f2.class\fP ファイル) の検索を行うときに使用するパスを指定します。参照クラスとは、ドキュメント化されるクラスと、それらのクラスから参照されるすべてのクラスを指します。\f2classpathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパス以下のすべてのサブディレクトリを検索します。classpathlist を指定するときは、 -.na -\f2クラスパス\fP @ -.fi -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.。 -.LP -たとえば、 \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 が指定されなかった場合、Javadoc ツールはほかのツールと同じく、CLASSPATH 環境変数が設定されていればその値を使用します。どちらも設定されていない場合、Javadoc ツールは現在のディレクトリからクラスを検索します。 -.LP -Javadoc ツールが \f2\-classpath\fP を使用してユーザークラスを検索する方法について、拡張クラスやブートストラップクラスと関連付けて説明している情報を入手するには、 -.na -\f2「クラスの検索方法」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.htmlを参照してください。 -.LP -便宜上、 \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 プログラムが展開されていないワイルドカードを認識することはありません。 -.LP -.TP 3 -\-subpackages\ \ package1:package2:... -ソースファイルから指定されたパッケージおよびそのサブパッケージ内に再帰的にドキュメントを生成します。このオプションは、ソースコードに新しいサブパッケージを追加する際に便利です。新しいサブパッケージは自動的に組み込まれます。各 \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」という名前のパッケージとこれらのサブパッケージ全部のドキュメントを生成します。 -.LP -\f2\-subpackages\fP と \f2\-exclude\fP を組み合わせて使用すると、特定のパッケージを除外できます。 -.LP -.TP 3 -\-exclude\ \ packagename1:packagename2:... -指定されたパッケージとそのサブパッケージを \f2\-subpackages\fP によって作成されたリストから無条件に除外します。 過去の \f2\-subpackages\fP オプションの指定によって組み込まれたパッケージ、または将来組み込まれるパッケージも除外の対象となります。 次に例を示します。 -.nf -\f3 -.fl - % \fP\f3javadoc \-sourcepath /home/user/src \-subpackages java \-exclude java.net:java.lang\fP -.fl -.fi -この場合、 \f2java.io\fP、 \f2java.util\fP、 \f2java.math\fP などが含められ、 \f2java.net\fP と \f2java.lang\fP をルートに持つパッケージが除外されます。この場合、 \f2java.lang\fP のサブパッケージである \f2java.lang.ref\fP も除外される点に注意してください。 -.LP -.TP 3 -\-bootclasspath\ classpathlist -ブートクラスが存在するパスを指定します。ブートクラスとは、通常、Java プラットフォームのコアクラスのことです。ブートクラスパスは、Javadoc ツールがソースファイルとクラスファイルを探すときに使う検索パスの一部です。詳細は、 -.na -\f2「クラスの検索方法」\fP @ -.fi -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 内のディレクトリ間の区切り文字として使用します。 -.LP -.TP 3 -\-verbose -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とは、パッケージ、クラス、またはメンバーの主説明での最初の文のことです。この文は、パッケージ、クラス、またはメンバーの要約にコピーされ、アルファベット順のインデックスにコピーされます。 -.LP -JDK 1.2 以降、BreakIterator クラスは、英語を除くすべての言語の文の終わりを判断するために、すでに使用されています。したがって、 \f2\-breakiterator\fP オプションは、1.2 以降では英文以外には効果がありません。英文には、次のような独自のデフォルトのアルゴリズムがあります。 -.RS 3 -.TP 2 -o -英文のデフォルトの文区切りアルゴリズム \- 空白または HTML ブロックタグ ( \f2<P>\fP など) が続くピリオドで停止する -.TP 2 -o -breakiterator 文区切りアルゴリズム \- 一般に、次の語が大文字で始まる場合、空白文字が続くピリオド、疑問符、または感嘆符で停止する。このアルゴリズムでは「The serial no. is valid」など、ほとんどの省略表記が処理されますが、「Mr. Smith」などは処理されません。HTML タグや、数字または記号で始まる文では停止しない。HTML タグに埋め込まれている場合でも、「../filename」の最後のピリオドで停止する +.PP +\-author +.RS 4 +生成ドキュメントに、\fI@author\fRのテキストを組み込みます。 .RE -.LP -注: 1.5.0 からは、1.4.x に設けられていた breakiterator 警告メッセージを削除し、デフォルトの文区切りアルゴリズムを変更していません。つまり、\\\-breakiterator オプションは、1.5.0 ではデフォルトではなくなり、またデフォルトにするつもりもありません。これは、「次のメジャーリリース」(1.5.0) でデフォルトを変更するという、以前の目的とは逆になっています。つまり、ソースコードを変更せず、1.4.x での breakiterator 警告を除去していない場合でも、1.5.0 からは何もする必要がなく、警告は消滅しています。この逆戻りの理由は、breakiterator をデフォルトにするメリットよりも、デフォルトにするために必要となる、互換性のないソースの変更の方が負担が大きかったためです。この件で皆様に余分の手間をおかけし、混乱を招いたことをお詫びいたします。 -.TP 3 -\-locale\ language_country_variant -.LP -\f3重要\fP \- \f2\-locale\fP オプションは、\f2標準ドックレットが提供するすべてのオプション\fP、またはその他の任意のドックレットの提供するすべてのオプションより前 (左側) に指定する必要があります。そうしないと、ナビゲーションバーが英語で表示されます。このコマンド行オプションだけは、指定する順序に依存します。 -.LP -Javadoc がドキュメントを生成するときに使うロケールを指定します。この引数は次のような、java.util.Locale のドキュメンテーションで説明されているロケールの名前です。 \f2en_US\fP (英語、米国) または \f2en_US_WIN\fP (Windows で使用される英語)。 -.LP -ロケールを指定すると、指定したロケールのリソースファイルが Javadoc によって選択されて、メッセージ (ナビゲーションバー、リストと表の見出し、ヘルプファイルの目次、stylesheet.css のコメントなどの文字列) のために使われます。また、アルファベット順にソートされるリストのソート順、および最初の文の末尾を判別するための文の区切り文字も、指定したロケールによって決まります。ただし、このオプションは、ドキュメント化されるクラスのソースファイル内で指定されているドキュメンテーションコメントのテキストのロケールを決定するものではありません。 -.LP -.TP 3 -\-encoding\ name -ソースファイルのエンコーディングの名前 ( \f2EUCJIS/SJIS\fP など) を指定します。 このオプションが指定されていない場合は、プラットフォームのデフォルトコンバータが使われます。 -.LP -\-docencoding および \-charset も参照してください。 -.LP -.TP 3 -\-Jflag -javadoc を実行する実行時システム java に、\f2flag\fP を直接渡します。 \f2J\fP と \f2flag\fP の間に空白を入れないように注意してください。たとえば、生成ドキュメントの処理用として32M バイトのメモリーをシステムで確保しておく必要がある場合には、java の \f2\-Xmx\fP オプションを次のように呼び出します。\f2\-Xms\fP は省略可能です。これは、メモリーの初期サイズを設定するだけのオプションで、メモリーの最低必要量がわかっている場合に便利です。 -.nf -\f3 -.fl - % \fP\f3javadoc \-J\-Xmx32m \-J\-Xms32m\fP \f3com.mypackage\fP -.fl -.fi -使用している javadoc のバージョンを確認するには、次のように Java の\f2「\-version」\fPオプションを呼び出します。 -.nf -\f3 -.fl - % \fP\f3javadoc \-J\-version\fP -.fl - java version "1.2" -.fl - Classic VM (build JDK\-1.2\-V, green threads, sunwjit) -.fl -.fi -出力ストリームには標準ドックレットのバージョン番号が含まれます。 +.PP +\-splitindex +.RS 4 +索引ファイルをアルファベットごとに複数のファイルに分割し、文字ごとに1つのファイルと、アルファベット以外の記号で始まる索引エントリ用に1つのファイルを作成します。 .RE -.SS -標準ドックレットが提供するオプション -.RS 3 -.TP 3 -\-d\ directory -生成された HTML ファイルを保存する生成先ディレクトリを指定します(「d」は「生成先 (destination)」の意味)。このオプションを省略すると、生成されたファイルは現在のディレクトリに保存されます。値 \f2directory\fP には、絶対ディレクトリ、または現在の作業ディレクトリからの相対ディレクトリを指定できます。バージョン 1.4 では、javadoc を実行すると生成先ディレクトリが自動的に作成されます。 -.LP -たとえば次の場合、パッケージ \f2com.mypackage\fP のドキュメントが生成され、その結果が \f2/home/user/doc/\fP ディレクトリに保存されます。 -.nf -\f3 -.fl - % \fP\f3javadoc \-d /home/user/doc com.mypackage\fP -.fl -.fi -.LP -.TP 3 -\-use -ドキュメント化されるクラスおよびパッケージごとに 1 つの「使用」ページを組み込みます。このページには、その特定のクラスまたはパッケージの API を使っているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドが記述されます。たとえば、クラス C を例にとると、クラス C を使っているものとしては、C のサブクラス、C として宣言されているフィールド、C を返すメソッド、および、型 C のパラメータを持つメソッドとコンストラクタがあります。 -.LP -たとえば、String の [使用] ページに何が表示されるかを見てみましょう。java.awt.Font クラスの \f2getName()\fP メソッドは、 \f2String\fP 型の値を \f2返します\fP。したがって、 \f2getName()\fP は \f2String\fP を使用しているので、String の [使用] ページに \f2このメソッドが表示されます\fP。 -.LP -ただし、ドキュメント化されるのは API の使用だけであって、実装はドキュメント化されません。あるメソッドが、その実装の中で \f2String\fP を使っていても、引数として文字列をとったり、文字列を返したりしない場合は、 \f2String\fP の「使用」とはみなされません。 -.LP -生成された [使用] ページにアクセスするには、目的のクラスまたはパッケージに移動し、ナビゲーションバーの [使用] リンクをクリックします。 -.TP 3 -\-version -生成ドキュメントに、@version のテキストを組み込みます。このテキストは、デフォルトでは省略されます。使用している Javadoc ツールのバージョンを確認するには \f2\-J\-version\fP オプションを使用します。 -.LP -.TP 3 -\-author -生成ドキュメントに、@author のテキストを組み込みます。 -.LP -.TP 3 -\-splitindex -索引ファイルをアルファベットごとに複数のファイルに分割し、文字ごとに 1 つのファイルと、アルファベット以外の文字で始まる索引エントリ用に 1 つのファイルを作成します。 -.LP -.TP 3 -\-windowtitle\ title -HTML の <title> タグに配置するタイトルを指定します。指定したタイトルは、ウィンドウのタイトルや、このページに対して作成されたブラウザのブックマーク (お気に入り) に表示されます。このタイトルには HTML タグを含めないでください。タイトルに HTML タグが含まれていると、ブラウザがタグを正しく解釈できません。\f2title\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。\-windowtitle が省略されている場合、Javadoc ツールは、このオプションの代わりに \-doctitle の値を使います。 -.nf -\f3 -.fl - % \fP\f3javadoc \-windowtitle "Java SE Platform" com.mypackage\fP -.fl -.fi -.TP 3 -\-doctitle\ title -概要ファイルの最上部の近くに配置するタイトルを指定します。タイトルは中央揃えになり、レベル 1 の見出しとして、上部ナビゲーションバーのすぐ下に置かれます。\f2title\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2title\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 -.nf -\f3 -.fl - % \fP\f3javadoc \-doctitle "Java(TM)" com.mypackage\fP -.fl -.fi -.TP 3 -\-title\ title -\f3このオプションはもう存在していません。\fPこのオプションは Javadoc 1.2 のベータ版にしか存在していませんでした。このオプションの名前は \f2\-doctitle\fP に変更されました。名前を変更した理由は、このオプションが、ウィンドウのタイトルではなくドキュメントのタイトルを定義することを明確にするためです。 -.LP -.TP 3 -\-header\ header -各出力ファイルの上端に配置するヘッダーテキストを指定します。ヘッダーは、上部ナビゲーションバーの右側に配置されます。\f2header\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2header\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 -.nf -\f3 -.fl - % \fP\f3javadoc \-header "<b>Java 2 Platform </b><br>v1.4" com.mypackage\fP -.fl -.fi -.LP -.TP 3 -\-footer\ footer -各出力ファイルの下端に配置するフッターテキストを指定します。フッターは、下部ナビゲーションバーの右側に配置されます。\f2footer\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。\f2footer\fP の中で引用符を使う場合は、引用符をエスケープする必要があります。 -.LP -.TP 3 -\-top -各出力ファイルの上端に配置するテキストを指定します。 -.LP -.TP 3 -\-bottom\ text -各出力ファイルの最下部に配置するテキストを指定します。このテキストは、下部ナビゲーションバーより下の、ページの最下部に配置されます。 \f2text\fP には、HTML タグと空白を含めることができますが、これらを含める場合は、全体を引用符で囲まなければなりません。引用符を \f2text\fP 内で使用する場合、引用符をエスケープしなければならない可能性があります。 -.LP -.TP 3 -\-link\ extdocURL -javadoc により生成された既存の外部参照クラスのドキュメンテーションへのリンクを作成します。引数を 1 つとります。 -.LP -.RS 3 -.TP 2 -o -\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 で指定された) 生成先ディレクトリから、リンク先となるパッケージを含むディレクトリへの相対パスにすべきです。 -.LP -通常、絶対リンクを指定する場合は、 \f2http:\fP リンクを使用します。Web サーバーを持たないファイルシステムにリンクする場合は、 \f2file: リンクを使用できます。\fP ただし、この方法は、すべてのユーザーが生成された同じファイルシステムを共有するドキュメントにアクセスする必要がある場合以外は使用しないでください。 -.LP -すべての場合、すべてのオペレーティングシステムで、絶対 URL と相対 URL、「http:」ベースと「file:」ベースにかかわらず、スラッシュを区切り文字として使用します ( -.na -\f2URL Memo\fP @ -.fi -http://www.ietf.org/rfc/rfc1738.txt で指定)。 -.RS 3 -.TP 3 -http: ベースの絶対リンク: -\f2\-link http://<host>/<directory>/<directory>/.../<name>\fP -.TP 3 -file: ベースの絶対リンク: -\f2\-link file://<host>/<directory>/<directory>/.../<name>\fP -.TP 3 -相対リンク: -\f2\-link <directory>/<directory>/.../<name>\fP +.PP +\-windowtitle \fItitle\fR +.RS 4 +HTMLの\fI<title>\fRタグに配置するタイトルを指定します。\fItitle\fRタグに指定したテキストは、ウィンドウのタイトルや、このページに対して作成されたブラウザのブックマーク(お気に入り)に表示されます。このタイトルにはHTMLタグを含めないでください。タイトルにHTMLタグが含まれていると、ブラウザがタグを正しく解釈できません。\fItitle\fRタグ内の内部の二重引用符はエスケープ文字を使用してマークします。\fI\-windowtitle\fRオプションを省略すると、\fIjavadoc\fRコマンドは、\fI\-windowtitle\fRオプションのかわりに、\fI\-doctitle\fRオプションの値を使用します。たとえば、\fIjavadoc \-windowtitle "Java SE Platform" com\&.mypackage\fRです。 .RE +.PP +\-doctitle \fItitle\fR +.RS 4 +概要サマリー・ファイルの最上部の近くに配置するタイトルを指定します。\fItitle\fRタグに指定したテキストは中央揃えになり、レベル1の見出しとして、上部ナビゲーション・バーのすぐ下に置かれます。\fItitle\fRタグにはHTMLタグおよび空白文字を含めることができますが、その場合、タイトルを引用符で囲む必要があります。\fItitle\fRタグの内部で引用符を使用する場合は、エスケープする必要があります。たとえば、\fIjavadoc \-header "<b>Java Platform </b><br>v1\&.4" com\&.mypackage\fRです。 .RE -.LP -javadoc の 1 回の実行で複数の \f2\-link\fP オプションを指定すれば、複数のドキュメントへのリンクを作成できます。 \f3\-linkoffline または \-link の選択\fP -.br -\f2\-link\fPを使用する場合: -.RS 3 -.TP 2 -o -外部 API ドキュメントへの相対パスを使用する場合 -.TP 2 -o -外部 API ドキュメントへの絶対 URL を使用する場合 (プログラムがその URL に接続し、読み取りを行うことがシェルによって許可されている場合) +.PP +\-title \fItitle\fR +.RS 4 +すでに存在しません。Javadoc 1\&.2のベータ版にしか存在していませんでした。このオプションは、\fI\-doctitle\fRという名前に変更されました。名前を変更した理由は、このオプションが、ウィンドウのタイトルではなくドキュメントのタイトルを定義することを明確にするためです。 .RE -\f2\-linkoffline\fP を使用する場合: -.RS 3 -.TP 2 -o -外部 API ドキュメントへの絶対 URL を使用する場合 (プログラムがその URL に接続し、読み取りを行うことがシェルによって許可されていない場合)このような状況は、リンク先のドキュメントがファイアウォールの向こう側にある場合に発生します。 +.PP +\-header \fIheader\fR +.RS 4 +各出力ファイルの最上部に配置するヘッダー・テキストを指定します。ヘッダーは、ナビゲーション・バーの右上に配置されます。\fIheader\fRにはHTMLタグおよび空白文字を含めることができますが、その場合、\fIheader\fRを引用符で囲む必要があります。ヘッダー内部の引用符にはエスケープ文字を使用します。たとえば、\fIjavadoc \-header "<b>Java Platform </b><br>v1\&.4" com\&.mypackage\fRです。 .RE -.LP -\f3外部ドキュメントへの絶対リンクの使用例\fP \- \f2java.lang\fP、 \f2java.io\fP 、その他の Java プラットフォームパッケージ ( -.na -\f2http://download.oracle.com/javase/7/docs/api/\fP @ -.fi -http://download.oracle.com/javase/7/docs/api/ 内) にリンクしたい場合があります。次のコマンドは、Java SE プラットフォームパッケージへのリンクを含んだ、パッケージ \f2com.mypackage\fP のドキュメントを生成します。生成されたドキュメントには、たとえばクラスツリー内の \f2Object\fP クラスへのリンクが含まれています。なお、 \f2\-sourcepath\fP や \f2\-d\fP など、その他のオプションは示していません。 +.PP +\-footer \fIfooter\fR +.RS 4 +各出力ファイルの最下部に配置するフッター・テキストを指定します。\fIfooter\fRの値は、ナビゲーション・バーの右下に配置されます。\fIfooter\fRにはHTMLタグおよび空白文字を含めることができますが、その場合、\fIfooter\fRを引用符で囲む必要があります。フッター内部の引用符にはエスケープ文字を使用します。 +.RE +.PP +\-top +.RS 4 +各出力ファイルの最上部に配置するテキストを指定します。 +.RE +.PP +\-bottom \fItext\fR +.RS 4 +各出力ファイルの最下部に配置するテキストを指定します。このテキストは、下部ナビゲーション・バーより下の、ページの最下部に配置されます。テキストにはHTMLタグおよび空白文字を含めることができますが、その場合、テキストを引用符で囲む必要があります。テキスト内部の引用符にはエスケープ文字を使用します。 +.RE +.PP +\-link \fIextdocURL\fR +.RS 4 +既存のJavadocにより生成された外部参照クラスのドキュメントへのリンクを作成します。\fIextdocURL\fR引数は、リンク先として指定する、Javadocにより生成された外部ドキュメントを含むディレクトリの絶対URLまたは相対URLです。指定した\fIjavadoc\fRコマンドの実行で、複数の\fI\-link\fRオプションを指定して複数のドキュメントへのリンクを作成できます。 +.sp +このディレクトリ内にpackage\-listファイルが存在する必要があります(存在しない場合は、\fI\-linkoffline\fRオプションを使用します)。\fIjavadoc\fRコマンドは、package\-listファイルからパッケージ名を読み取った後、そのURLでこれらのパッケージにリンクします。\fIjavadoc\fRコマンドの実行時に、\fIextdocURL\fRの値が、作成された\fI<A HREF>\fRリンク内にコピーされます。したがって、\fIextdocURL\fRはファイルではなくディレクトリへのURLである必要があります。\fIextdocURL\fRに絶対リンクを使用すると、ユーザーのドキュメントを任意のWebサイト上のドキュメントにリンクできます。相対位置へリンクするのみの場合は相対リンクを使用できます。相対リンクを使用する場合、渡す値は宛先ディレクトリから、リンクされているパッケージを含むディレクトリへである必要があります(\fI\-d\fRオプションで指定)。絶対リンクを指定する場合、通常、HTTPリンクを使用します。ただし、Webサーバーを持たないファイル・システムにリンクする場合は、ファイル・リンクを使用できます。生成されたドキュメンテーションにアクセスする全員が同じファイル・システムを共有する場合にのみファイル・リンクを使用します。どの場合も、どのオペレーティング・システムでも、URLが絶対または相対のいずれでも、また\fIh\fR\fIttp:\fRまたは\fIf\fR\fIile:\fRのいずれでも、URLメモ: Uniform Resource Locators +(http://www\&.ietf\&.org/rfc/rfc1738\&.txt)に指定されているとおり、区切り文字としてスラッシュを使用します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc \-link http://download.oracle.com/javase/7/docs/api/ com.mypackage\fP -.fl +\-link http://<host>/<directory>/<directory>/\&.\&.\&./<name> +\-link file://<host>/<directory>/<directory>/\&.\&.\&./<name> +\-link <directory>/<directory>/\&.\&.\&./<name> .fi -\f3外部ドキュメントへの相対リンクの使用例\fP \- 2 つのパッケージがあり、そのドキュメントが Javadoc ツールを複数回実行した結果生成されたものであるとします。さらに、これらのドキュメントが相対パスで分割されているとします。この例の場合、パッケージは、API である \f2com.apipackage\fP と、SPI (サービスプロバイダインタフェース) である \f2com.spipackage\fP です。ドキュメントの格納先は、 \f2docs/api/com/apipackage\fP と \f2docs/spi/com/spipackage\fP です。API パッケージのドキュメントはすでに生成済みで、 \f2docs\fP がカレントディレクトリになっていると仮定すると、API ドキュメントへのリンクを含む SPI パッケージをドキュメント化するには、次のコマンドを実行します。 +.if n \{\ +.RE +.\} +.RE +\-linkofflineおよび\-linkオプションの違い.PP +次の場合に、\fI\-link\fRオプションを使用します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +外部APIドキュメントへの相対パスを使用する場合。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +外部APIドキュメントへの絶対URLを使用する場合(そのURLに接続し、読取りを行うことがシェルによって許可されている場合)。 +.RE +.PP +外部APIドキュメントへの絶対URLを使用する場合(そのURLに接続し、読取りを行うことがシェルによって許可されていない場合)は\fI\-linkoffline\fRオプションを使用します。このような状況は、ファイアウォールの内側からファイアウォールの外側にあるドキュメントにリンクしようとする場合に発生します。 +.PP +\fBExample 1\fR, 外部ドキュメントへの絶対リンク +.RS 4 +http://docs\&.oracle\&.com/javase/8/docs/api/index\&.htmlに示すような、\fIjava\&.lang\fR、\fIjava\&.io\fRおよびその他のJavaプラットフォーム・パッケージにリンクする場合、次のコマンドを使用します +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc \-d ./spi \-link ../api com.spipackage\fP -.fl +javadoc \-link http://docs\&.oracle\&.com/javase/8/docs/api/ com\&.mypackage .fi -.LP -\f2\-link\fP の引数は、生成先ディレクトリ (\f2docs/spi\fP) からの相対パスです。 -.LP -\f3詳細\fP \- \f2\-link\fP オプションを使うと、「コードからは参照されていても、Javadoc の今回の実行ではドキュメント化されない」というクラスにリンクできるようになります。リンクから有効なページに移動できるようにするには、それらの HTML ページがある場所を調べ、その場所を \f2extdocURL\fP に指定する必要があります。これにより、たとえば、サードパーティーのドキュメントから \f2http://java.sun.com 上の java.*\fP のドキュメントへのリンクが \f2可能となります\fP。 -.LP -今回の実行で Javadoc によって生成されるドキュメント内の API だけを対象に \f2リンクを作成する場合は、\fP \-link オプションを省略します。 \f2\-link\fP オプションが指定されていない場合、Javadoc ツールは、外部参照されたドキュメントへのリンクを作成しません。これは、そのドキュメントが存在するかどうか、および存在する場合はその場所を判別できないからです。 -.LP -このオプションでは、生成ドキュメント内の複数の場所にリンクを作成できます。 -.LP -もう 1 つの用途は、パッケージセット間でのクロスリンクです。一方のパッケージセットに対して javadoc を実行したあと、他方のパッケージセットに対して javadoc を再度実行することにより、両セット間で双方向のリンクを作成できます。 -.LP -\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。たとえば、次のようにすれば十分です。 -.br -\f2import java.io.*;\fP -.br -1.3.x および 1.2.x では、名前による明示的なインポートだけです。ワイルドカードによるインポート文も、 \f2java.lang.* の自動インポートも使用できません\fP。 -.TP 2 -o +.if n \{\ +.RE +.\} +このコマンドは、Java SEプラットフォーム・パッケージへのリンク持つ\fIcom\&.mypackage\fRパッケージのドキュメントを生成します。生成ドキュメントには、たとえばクラス\fItrees\fR内の\fIObject\fRクラスへのリンクが含まれています。\fI\-sourcepath\fRや\fI\-d\fRなどの他のオプションは表示されません。 +.RE +.PP +\fBExample 2\fR, 外部ドキュメントへの相対リンク +.RS 4 +この例では、2つのパッケージがあり、そのドキュメントは\fIjavadoc\fRコマンドを複数回実行した結果生成されたものです。さらに、これらのドキュメントは相対パスで分割されています。パッケージは、APIである\fIcom\&.apipackage\fRと、SPI(サービス・プロバイダ・インタフェース)であるc\fIom\&.spipackage\fRです。ドキュメントの格納先は、docs/api/com/apipackageとdocs/spi/com/spipackageです。APIパッケージのドキュメントはすでに生成されていて、docsが現在のディレクトリである場合、APIドキュメントへのリンクを持つSPIパッケージをドキュメント化するには、次のコマンドを実行します。\fIjavadoc \-d \&./spi \-link \&.\&./api com\&.spipackage\fR +.sp +\fI\-link\fRオプションは、宛先ディレクトリ(docs/spi)からの相対パスです。 +.RE +注意.PP +\fI\-link\fRオプションを使用すると、コードからは参照されていても、今回の\fIjavadoc\fRの実行ではドキュメント化されないクラスにリンクできるようになります。リンクから有効なページに移動できるようにするには、それらのHTMLページがある場所を調べ、その場所を\fIextdocURL\fRに指定する必要があります。これにより、サードパーティのドキュメンテーションがjava\&.*ドキュメンテーション(http://docs\&.oracle\&.com)へリンクすることができます。\fIjavadoc\fRコマンドで、現在の実行で生成しているドキュメンテーション内のAPIへのリンクのみを作成する場合には、\fI\-link\fRオプションを省略します。\fI\-link\fRオプションを指定しないと、\fIjavadoc\fRコマンドは外部参照のためのドキュメンテーションへのリンクを作成しません。ドキュメンテーションが存在するのかどうか、またはどこに存在するのかがわからないからです。\fI\-link\fRオプションでは、生成ドキュメンテーション内の複数の場所にリンクを作成できます。ソース・ファイルの処理を参照してください。もう1つの用途は、パッケージ・セットの間にクロスリンクを作成することです。一方のパッケージ・セットに対して\fIjavadoc\fRコマンドを実行した後、他方のパッケージ・セットに対して\fIjavadoc\fRコマンドを再度実行すると、両セット間に双方向のリンクを作成できます。 +クラスの参照方法.PP +表示される外部参照クラスへのリンクの場合(およびそのテキスト・ラベルだけではなく)、クラスは次の方法で参照される必要があります。メソッドの本体でクラスを参照するのみでは十分ではありません。\fIimport\fR文、宣言のいずれかで参照する必要があります。次に、クラス\fIjava\&.io\&.File\fRを参照する方法の例を示します。 +.PP +すべてのタイプのimport文の場合。ワイルドカードによるインポート、名前による明示的なインポート、または\fIjava\&.lang\&.*\fRに対する自動インポート。 +.PP +Java SE 1\&.3\&.\fIn\fRおよび1\&.2\&.\fIn\fRでは、名前による明示的なインポートのみ機能します。ワイルドカードによる\fIimport\fR文も、\fIimport java\&.lang\&.*\fRの自動インポートも機能しません。 +.PP 宣言の場合: -.br -\f2void foo(File f) {}\fP -.br -この参照を使用し、メソッド、コンストラクタ、フィールド、クラス、またはインタフェースの戻り値の型またはパラメータの型に置くか、 \f2implements\fP、 \f2extends\fP 、または \f2throws\fP 文に置きます。 +\fIvoid mymethod(File f) {}\fR +.PP +参照は、メソッド、コンストラクタ、フィールド、クラスまたはインタフェースの戻り型またはパラメータ・タイプ、あるいは実装、拡張またはスロー文にあります。 +.PP +重要な結果として、\fI\-link\fRオプションを使用しても、この制限のために誤って表示されないリンクが多数発生する可能性があります。テキストはハイパーテキスト・リンクが付けられずに表示されます。リンクが表示する警告から、これらのリンクを認識できます。クラスを正しく参照し、それによってリンクを追加するための最も簡単な方法はそのクラスをインポートすることです。 +パッケージ・リスト.PP +\fI\-link\fRオプションには、\fIjavadoc\fRコマンドによって生成されるpackage\-listという名前のファイルが、\fI\-link\fRオプションに指定したURLに存在していることが必要です。package\-listファイルは、その場所にあるドキュメント化されたパッケージの名前のリストが入った単純なテキスト・ファイルです。前述の例では、\fIjavadoc\fRコマンドは、指定したURLでpackage\-listという名前のファイルを検索し、パッケージ名を読み取って、そのURLでこれらのパッケージにリンクします。 +.PP +たとえば、Java SE APIのパッケージ・リストは +http://docs\&.oracle\&.com/javase/8/docs/api/package\-listにあります。 +.PP +このパッケージ・リストは次のような内容で始まっています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java\&.applet +java\&.awt +java\&.awt\&.color +java\&.awt\&.datatransfer +java\&.awt\&.dnd +java\&.awt\&.event +java\&.awt\&.font +and so on \&.\&.\&.\&. +.fi +.if n \{\ .RE -.LP -重要な結果として、 \f2\-link\fP オプションの使用時に、この制限のために誤って表示されないリンクが多数発生する可能性があります。テキストはハイパーテキストリンクが付けられずに表示されます。これらのリンクが表示する警告から、このリンクを認識できます。クラスを正しく参照し、それによってリンクを追加するためのもっとも安全な方法は上で説明したとおり、当該のクラスをインポートすることです。 -.LP -\f3パッケージリスト\fP \- \f2\-link\fP オプションが正しく機能するには、Javadoc ツールによって生成される \f2package\-list\fP という名前のファイルが、ユーザーが \f2\-link\fP に指定した URL に存在している必要があります。 \f2package\-list\fP ファイルは、その場所にあるドキュメント化されたパッケージの名前のリストが入った単純なテキストファイルです。前の例では、Javadoc ツールは、指定された URL で \f2package\-list\fP という名前のファイルを検索し、パッケージ名を読み込んだあと、その URL にあるそれらのパッケージへのリンクを作成しました。 -.LP -たとえば、Java SE 6 API のパッケージリストは -.na -\f2http://download.oracle.com/javase/7/docs/api/package\-list\fP @ -.fi -http://download.oracle.com/javase/7/docs/api/package\-list にあり、次のような内容で始まっています。 -.nf -\f3 -.fl - java.applet -.fl - java.awt -.fl - java.awt.color -.fl - java.awt.datatransfer -.fl - java.awt.dnd -.fl - java.awt.event -.fl - java.awt.font -.fl - その他 -.fl -\fP -.fi -.LP -\f2\-link\fP オプションを指定せずに javadoc を実行した場合、外部参照クラスに属する名前を見つけると、javadoc はその名前をリンクを持たない形で出力します。一方、 \f2\-link\fP オプションが指定された場合、Javadoc ツールは、 \f2指定された\fP \f2extdocURL\fP の場所にある package\-list ファイル内で、そのパッケージ名を検索します。パッケージ名が見つかると、\f2extdocURL\fP が名前の前に付加されます。 -.LP -すべてのリンクが正しく機能するためには、外部参照のすべてのドキュメントが、指定した URL に存在していなければなりません。Javadoc ツールは、指定された package\-list が存在するかどうかを調べるだけで、指定された URL に目的のページが存在するかどうかはチェックしません。 -.LP -\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 -.LP -\f2extdocURL1\fP、\f2extdocURL2\fP、... \f2extdocURLn\fP は、それぞれ外部ドキュメントのルートを指し、各ルートには、 \f2package\-list\fP という名前のファイルが入っています。 -.LP -\f3クロスリンク\fP \- まだ生成されていない 2 つ以上のドキュメントをクロスリンクする場合は、「ブートストラップ」が必要になります。つまり、どのドキュメントについても \f2package\-list\fP が存在していない場合は、最初のドキュメントに対して Javadoc ツールを実行する時点で、2 番目のドキュメントの \f2package\-list\fP はまだ存在していません。したがって、外部リンクを作成するには、2 番目のドキュメントを生成したあとで、最初のドキュメントを生成し直す必要があります。 -.LP -この場合、最初のドキュメント生成の目的は、 \f2package\-list\fP を作成することです。パッケージ名をすべて把握している場合は、package\-list を手動で作成してもかまいません。次に、2 番目のドキュメントとその外部リンクを生成します。必要な外部の \f2package\-list\fP ファイルが存在しない場合は、Javadoc ツールから警告が出力されます。 -.LP -.TP 3 -\-linkoffline\ extdocURL\ packagelistLoc -このオプションは \f2\-link\fP のバリエーションの 1 つです。どちらも、外部参照クラスの javadoc 生成ドキュメントへのリンクを作成します。Javadoc \f2ツール自体が\fP オフラインになっているとき (Web 接続を使ってドキュメントにアクセスできないとき)、Web 上のドキュメントにリンクするには、\-linkoffline オプションを使用します。 -.LP -厳密には、 \f2外部\fP ドキュメントの \f2package\-list\fP ファイルにアクセスできないとき、またはこのファイルが \f2extdocURL\fP で指定された場所とは異なる場所 (通常、\f2packageListLoc\fP で指定可能なローカルな場所) に存在するとき、\-linkoffline を使用します。したがって、WWW 経由でしか \f2extdocURL\fP にアクセスできない場合、 \f2\-linkoffline\fP を指定することにより、ドキュメントの生成時に Javadoc ツールが Web に接続できなければならないという制約がなくなります。 -.LP -さらに、ドキュメントを更新するための「ハッキング」としての使用も可能です。パッケージのセット全体に対して javadoc を実行したあと、変更した一部のパッケージだけに対して javadoc を実行します。こうして、更新されたファイルを、オリジナルのファイルセットに挿入できるようにします。例をあとで示します。 -.LP -\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 で指定された) 生成先ディレクトリからリンク先パッケージのルートへの相対パスにすべきです。詳細は、\-link オプションの \f2extdocURL\fP \f2を参照\fP してください。 -.TP 2 -o -\f4packagelistLoc\fP は、外部ドキュメントの \f2package\-list\fP ファイルを含むディレクトリへのパスまたは URL です。これは、URL (http: または file:) でもファイルパスでもかまいませんし、絶対パスでも相対パスでもかまいません。相対パスの場合は、javadoc が実行されるカレントディレクトリからの相対パスとして指定します。ファイル名 \f2package\-list\fP は含めないでください。 +.\} +.PP +\fI\-link\fRオプションを指定せずに\fIjavadoc\fRを実行した場合、外部参照クラスに属する名前を見つけると、その名前をリンクなしで出力します。一方、\fI\-link\fRオプションを指定した場合、\fIjavadoc\fRコマンドは、指定された\fIextdocURL\fRの場所にあるpackage\-listファイルでそのパッケージ名を検索します。パッケージ名が見つかると、\fIextdocURL\fRが名前の前に付加されます。 +.PP +すべてのリンクが正しく機能するためには、外部参照のすべてのドキュメントが、指定したURLに存在する必要があります。\fIjavadoc\fRコマンドは、指定されたpackage\-listが存在するかどうかのみをチェックし、これらのページが存在するかどうかはチェックしません。 +複数のリンク.PP +複数の\fI\-link\fRオプションを指定すると、任意の数の外部生成ドキュメントへのリンクを作成できます。Javadoc 1\&.2には、複数の\fI\-link\fRオプションを指定できないという既知の不具合があります。これはJavadoc 1\&.2\&.2で修正されました。リンクする外部ドキュメントごとに、次のように別々のリンク・オプションを指定します。\fIjavadoc \-link extdocURL1 \-link extdocURL2 \&.\&.\&. \-link extdocURLn com\&.mypackage\fR +\fIextdocURL1\fR、\fIextdocURL2\fR、\&.\fI\&.\&. extdocURLn\fRは、それぞれ外部ドキュメントのルートを指し、各ルートには、package\-listという名前のファイルが入っています。 +クロスリンク.PP +以前に作成された複数のドキュメントをクロスリンクする場合、ブートストラップが必要になることがあります。どのドキュメントについてもpackage\-listが存在していない場合は、最初のドキュメントに対して\fIjavadoc\fRコマンドを実行する時点で、2番目のドキュメントのpackage\-listはまだ存在していません。したがって、外部リンクを作成するには、2番目のドキュメントを生成した後で、最初のドキュメントを生成しなおす必要があります。 +.PP +この場合、最初のドキュメント生成の目的は、package\-listを作成することです(パッケージ名を把握している場合は手動で作成してもかまいません)。次に、2番目のドキュメントとその外部リンクを生成します。必要な外部のpackage\-listファイルが存在しない場合は、\fIjavadoc\fRコマンドから警告が出力されます。 +.PP +\-linkoffline \fIextdocURL packagelistLoc\fR +.RS 4 +このオプションは\fI\-link\fRオプションのバリエーションです。両方とも、Javadocにより生成された外部参照クラスのドキュメントへのリンクを作成します。\fIjavadoc\fRコマンドがWeb接続を使用してドキュメントにアクセスできないとき、Web上のドキュメントにリンクするには、\fI\-link\fRo\fIffline\fRオプションを使用します。外部ドキュメントのpackage\-listファイルにアクセスできないとき、またはこのファイルが\fIextdocURL\fRで指定された場所には存在せず、\fIpackageListLoc\fRで指定できる別の場所(通常ローカル)に存在するとき、\fI\-linkoffline\fRオプションを使用します。\fIextdocURL\fRにWorld Wide Web上でしかアクセスできない場合は、\fI\-linkoffline\fRオプションを指定することにより、ドキュメントの生成時に\fIjavadoc\fRコマンドがWebに接続する必要があるという制約がなくなります。もう1つの用途は、ドキュメントを更新するための回避策として使用することです。パッケージのセット全体に対して\fIjavadoc\fRコマンドを実行した後、変更した一部のパッケージに対してのみ\fIjavadoc\fRコマンドを再度実行して、更新されたファイルを、オリジナルのセットに挿入できるようにします。次に例を示します。\fI\-linkoffline\fRオプションは引数を2つ取ります。第1引数は\fI<a href>\fRリンクに組み込まれる文字列を指定し、第2引数はpackage\-listの検索場所を\fI\-linkoffline\fRに伝えます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIextdocURL\fRの値は、リンク先として指定する、Javadocにより生成された外部ドキュメントを含むディレクトリの絶対URLまたは相対URLです。相対URLの場合、値は、生成先ディレクトリ(\fI\-d\fRオプションで指定)からリンク先となるパッケージのルートへの相対パスにする必要があります。詳細は、\fI\-link\fRオプションの\fIextdocURL\fRを参照してください。 .RE -.LP -1 回の javadoc 実行で複数の \f2\-linkoffline\fP オプションを指定できます。1.2.2 より前は、複数のオプションを指定することはできませんでした。 -.LP -\f3外部ドキュメントへの絶対リンクの使用例\fP \- http://download.oracle.com/javase/7/docs/api/ 内の \f2java.lang\fP、 \f2java.io\fP 、およびその他の Java SE プラットフォームパッケージ \f2にリンクしたくても、\fPWeb にアクセスできない場合を考えます。ブラウザで \f2、\fP -.na -\f2http://download.oracle.com/javase/7/docs/api/package\-list\fP @ -.fi -http://download.oracle.com/javase/7/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://download.oracle.com/javase/7/docs/api/ . com.mypackage\fP -.fl -.fi -.LP -\f3外部ドキュメントへの相対リンクの使用例\fP \- \f2\-linkoffline\fP で相対パスを使用することは、あまりありません。理由は単純で、通常は \f2\-link\fP で十分だからです。 \f2\-linkoffline\fP を使用する際、 \f2package\-list\fP には通常ローカルのファイルを指定します。 相対リンクを使用する際も、リンク先のファイルには通常ローカルのファイルを指定します。したがって、 \f2\-linkoffline の 2 つの引数に別々のパスを指定する必要はありません\fP。2 つの引数が同一である場合は、 \f2\-link\fP を使用できます。 \f2\-link\fP の相対リンクの例を参照してください。 -.LP -\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 回ずつ含めることができます。わかりやすくするために、オプションごとに改行して示しています。 -.LP -\f2% \fP\f4javadoc \-linkoffline\fP \f2extdocURL1\fP \f2packagelistLoc1\fP \f2\\\fP -.br -\f2\ \ \ \ \ \ \ \ \ \ \fP\f4\-linkoffline\fP \f2extdocURL2\fP \f2packagelistLoc2\fP \f2\\\fP -.br -\f2\ \ \ \ \ \ \ \ \ \ ...\fP -.LP -\f3ドキュメントの更新\fP \- 前述の \f2\-linkoffline\fP オプションのもうひとつの用途は、プロジェクトに大量のパッケージが含まれていて、すでにツリー全体に対して javadoc の実行が完了している場合に、次の実行では、少量の変更を手早く加えたあと、ソースツリーのごく一部に対してだけ javadoc を再実行する場合に便利です。これは、ドキュメンテーションコメントに対してだけ変更を加え、宣言は変更しない場合にのみ正しく処理されるので、ハッキングのようなものです。ソースコードの宣言を追加、削除、または変更した場合は、索引、パッケージツリー、継承されるメンバーのリスト、「使用」ページなどの場所で、リンクが壊れることがあります。 -.LP -まず、この新しい小さな実行用として、新しい生成先ディレクトリ ( \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。 -.LP -.TP 3 -\-linksource\ -各ソースファイル (行番号付き) の 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 オプションも併せて指定しないかぎり、非公開のすべてのクラスやインタフェースにリンク経由でアクセスできるとはかぎりません。 -.LP -各リンクは、その宣言内の識別子名の上に作成されます。たとえば、 \f2Button\fP クラスのソースコードへのリンクは、「Button」という語の上に作成されます。 -.nf -\f3 -.fl - public class Button -.fl - extends Component -.fl - implements Accessible -.fl -\fP -.fi -また、Button クラスの \f2getLabel()\fP メソッドのソースコードへのリンクは、「getLabel」という語の上に作成されます。 -.nf -\f3 -.fl - public String getLabel() -.fl -\fP -.fi -.LP -.TP 3 -\-group\ groupheading\ packagepattern:packagepattern:... -概要ページの複数のパッケージを、指定したグループに分けて、グループごとに表を作成します。各グループは、それぞれ別の \f2\-group\fP オプションで指定します。これらのグループは、コマンド行で指定した順序でページに表示されます。各グループ内では、パッケージがアルファベット順に並べられます。ある特定の \f2\-group\fP オプションでは、 \f2packagepattern\fP 式のリストに一致するパッケージが、 \f2groupheading\fP という見出しの表に表示されます。 -.RS 3 -.TP 2 -o -\f4groupheading\fP には、任意のテキストを指定でき、空白を含めることができます。指定したテキストは、グループの表見出しになります。 -.TP 2 -o -\f4packagepattern\fP には、任意のパッケージ名、または任意のパッケージ名の先頭部分とそれに続く 1 つのアスタリスク (\f2*\fP) を指定できます。 アスタリスクは、「任意の文字に一致する」という意味のワイルドカードです。ワイルドカードとして指定できるのは、アスタリスクだけです。1 つのグループには、コロン (\f2:\fP) で区切って複数のパターンを含めることができます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIpackagelistLoc\fRの値は、外部ドキュメントのpackage\-listファイルを含むディレクトリへのパスまたはURLです。これは、URL (http:またはfile:)でもファイル・パスでもかまいません。また、絶対パスと相対パスのどちらでもかまいません。相対パスの場合は、\fIjavadoc\fRコマンドが実行される現在のディレクトリからの相対パスとして指定します。package\-listファイル名を含めないでください。 +.sp +指定した\fIjavadoc\fRコマンドの実行で、複数の\fI\-link\fRオプションを指定できます。Javadoc 1\&.2\&.2より前では、\fI\-linkfile\fRオプションは1回しか指定できませんでした。 .RE -.LP -\f3注: パターンやパターンリスト内でアスタリスクを使う場合は、 \fP\f4"java.lang*:java.util" のように、パターンリストを引用符で囲む必要があります。\fP -.LP -ユーザーが \f2\-group\fP オプションを 1 つも指定しなかった場合、「パッケージ」という見出しの 1 つのグループ内に、すべてのパッケージが配置されます。ドキュメント化されるパッケージの中に、指定したグループのどのグループにも入らないパッケージがある場合、このようなパッケージは「その他のパッケージ」という見出しを持つ独立したグループに入れられます。 -.LP -たとえば、次のようにオプションを指定すると、ドキュメント化される 5 つのパッケージは、コアパッケージ、拡張機能パッケージ、およびその他のパッケージに分けられます。「java.lang*」では、最後のドットを指定していないことに注目してください。「java.lang.*」のようにドットを入れると、java.lang パッケージは除外されることになります。 -.nf -\f3 -.fl - % \fP\f3javadoc \-group "Core Packages" "java.lang*:java.util" -.fl - \-group "Extension Packages" "javax.*" -.fl - java.lang java.lang.reflect java.util javax.servlet java.new\fP -.fl -.fi -この結果、次のようなグループ化が行われます。 -.RS 3 -.TP 3 -コアパッケージ -\f2java.lang\fP -\f2java.lang.reflect\fP -\f2java.util\fP -.TP 3 -拡張機能パッケージ -\f2javax.servlet\fP -.TP 3 -その他のパッケージ -\f2java.new\fP .RE -.LP -.TP 3 -\-nodeprecated -推奨されない API をドキュメントに生成しないようにします。このオプションを指定すると、\-nodeprecatedlist オプションを指定した場合と同じ効果があることに加えて、ドキュメントのほかの部分全体でも、推奨されない API が生成されません。このオプションは、コードを記述しているとき、推奨されないコードによって気を散らされたくない場合に便利です。 -.LP -.TP 3 -\-nodeprecatedlist -推奨されない API のリストを含むファイル (deprecated\-list.html)、およびナビゲーションバーのそのページへのリンクが生成されないようにします。ただし、ドキュメントのほかの部分では、推奨されない API が生成されます。このオプションは、推奨されない API がソースコードに含まれておらず、ナビゲーションバーをすっきりと見せたい場合に便利です。 -.LP -.TP 3 -\-nosince -生成ドキュメントから、@since タグに対応する「導入されたバージョン」 セクションを省略します。 -.LP -.TP 3 -\-notree -生成されるドキュメントからクラスおよびインタフェースの階層ページを省略します。これらのページには、ナビゲーションバーの「ツリー」ボタンからアクセスできます。デフォルトでは、階層が生成されます。 -.LP -.TP 3 -\-noindex -生成ドキュメントから、索引を省略します。デフォルトでは、索引が生成されます。 -.LP -.TP 3 -\-nohelp -出力の各ページの最上部と最下部にあるナビゲーションバーから「ヘルプ」リンクを省略します。 -.LP -.TP 3 -\-nonavbar -生成されるページの最上部と最下部に表示されるナビゲーションバー、ヘッダー、およびフッターを生成しないようにします。このオプションは、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 Javadoc ツールは、ナビゲーションバー内のリンクを必要に応じて調整します。次に例を示します。 -.nf -\f3 -.fl - % \fP\f3javadoc \-helpfile /home/user/myhelp.html java.awt\fP -.fl -.fi -.TP 3 -\-stylesheetfile\ path/filename -代替 HTML スタイルシートファイルのパスを指定します。このオプションが指定されないと、Javadoc ツールは、ツール内でハードコードされているスタイルシートファイル \f2stylesheet.css\fP を自動作成します。このオプションを使うと、そのデフォルトの動作をオーバーライドできます。\f2filename\fP にはどんなファイル名でも指定でき、 \f2stylesheet.css には限定されません\fP。たとえば、 -.nf -\f3 -.fl - % \fP\f3javadoc \-stylesheetfile /home/user/mystylesheet.css com.mypackage\fP -.fl -.fi -.TP 3 -\-serialwarn -@serial タグがない場合は、コンパイル時に警告を生成します。デフォルトでは、Javadoc 1.2.2 以降のバージョンでは、直列化の警告は生成されません1.2.2 より前の初期バージョンでは、警告が生成されます。このオプションを使用すると、直列化の警告が表示されるので、デフォルトの直列化可能フィールドと \f2writeExternal\fP メソッドを適切にドキュメント化するのに役立ちます。 -.LP -.TP 3 -\-charset\ name -このドキュメント用の HTML 文字セットを指定します。この名前は、 -.na -\f2IANA Registry\fP @ -.fi -http://www.iana.org/assignments/character\-sets で与えられた、推奨される MIME 名でなければなりません。たとえば、 -.nf -\f3 -.fl - % \fP\f3javadoc \-charset "iso\-8859\-1" mypackage\fP -.fl -.fi -生成されるすべてのページの先頭に、次の行が挿入されます。 -.nf -\f3 -.fl - <META http\-equiv="Content\-Type" content="text/html; charset=ISO\-8859\-1"> -.fl -\fP -.fi -この META タグについては、 -.na -\f2HTML の標準\fP @ -.fi -http://www.w3.org/TR/REC\-html40/charset.html#h\-5.2.2 (4197265 および 4137321) を参照してください。 -.LP -\-encoding および \-docencoding も参照してください。 -.LP -.TP 3 -\-docencoding\ name -生成される HTML ファイルのエンコーディングを指定します。この名前は、 -.na -\f2IANA Registry\fP @ -.fi -http://www.iana.org/assignments/character\-sets で与えられた、推奨される MIME 名でなければなりません。このオプションを省略しながら \-encoding を使用した場合、生成される HTML ファイルのエンコードは、\-encoding によって決められます。例: -.nf -\f3 -.fl - % \fP\f3javadoc \-docencoding "ISO\-8859\-1" mypackage\fP -.fl -.fi -\-encoding および \-charset も参照してください。 -.LP -.TP 3 -\-keywords -HTML メタキーワードタグを、クラスごとに生成されるファイルに追加します。これらのタグは、メタタグを検索するサーチエンジンがページを見つける場合に役立ちます。インターネット全体を検索する多くのサーチエンジンは、ページがメタタグを誤用しているため、メタタグを調べません。一方、検索を自身の Web サイトに限定している企業では、サーチエンジンがメタタグを調べることによってメリットを得られます。 -.LP -メタタグには、クラスの完全修飾名と、フィールドおよびメソッドの修飾されていない名前が含まれます。コンストラクタは、クラス名と同じであるため含まれません。たとえば、クラス String は次のキーワードで開始します。 -.nf -\f3 -.fl - <META NAME="keywords" CONTENT="java.lang.String class"> -.fl - <META NAME="keywords" CONTENT="CASE_INSENSITIVE_ORDER"> -.fl - <META NAME="keywords" CONTENT="length()"> -.fl - <META NAME="keywords" CONTENT="charAt()"> -.fl -\fP -.fi -.LP -.TP 3 -\-tag\ \ tagname:Xaoptcmf:"taghead" -Javadoc ツールがドキュメンテーションコメント内の引数を 1 つ取る単純なカスタムブロックタグ \f2@\fP\f2tagname\fP を解釈できるようにします。Javadoc ツールはタグ名の「スペルチェック」を行うことができるので、ソースコード内に存在するすべてのカスタムタグについて、 \f2\-tag\fP オプションを含めることが重要です。今回の実行では出力されないタグは、X を付けて無効 \f2にします\fP。 -.LP -コロン (\f4:\fP) が常に区切り文字になります。tagname \f2でコロンを使用する方法については、\fP 「タグ名でのコロンの使用」を参照してください。 -.LP -\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 (タグの無効化) -.br -\f4a\fP (すべて) -.br -\f4o\fP (概要) -.br -\f4p\fP (パッケージ) -.br -\f4t\fP (型、つまりクラスとインタフェース) -.br -\f4c\fP (コンストラクタ) -.br -\f4m\fP (メソッド) -.br -\f4f\fP (フィールド) -.LP -\f3シングルタグの例\fP \- ソースコード内の任意の位置で使用できるタグのタグオプションの例を示します。 -.nf -\f3 -.fl - \-tag todo:a:"To Do:" -.fl -\fP -.fi -@todo をコンストラクタ、メソッド、フィールドのみで使用する場合は、以下のオプションを使用します。 -.nf -\f3 -.fl - \-tag todo:cmf:"To Do:" -.fl -\fP -.fi -上の例の最後のコロン (\f2:\fP) は、パラメータ区切り子ですが、見出しテキストの一部になっています (以下の例を参照)。次の例のように、 \f2@todo\fP タグを含むソースコードでは、いずれかのタグオプションを使用します。 -.nf -\f3 -.fl - @todo The documentation for this method needs work. -.fl -\fP -.fi -\f3タグ名にコロンを使用する\fP \- コロン (:) をバックスラッシュでエスケープすると、コロンをタグ名に使用することができます。このドキュメンテーションコメントの中では、次のように使用します。 -.nf -\f3 -.fl - /** -.fl - * @ejb:bean -.fl - */ -.fl -\fP -.fi -でこのタグオプションを使用すると、 -.nf -\f3 -.fl - \-tag ejb\\\\:bean:a:"EJB Bean:" -.fl -\fP -.fi -\f3タグ名のスペルチェック (タグの無効化)\fP \- ソースコード内に配置した一部のカスタムタグの出力を抑制したい場合があります。この場合も、ソースコード内にすべてのタグを配置し、出力を抑制しないタグを有効にし、出力を抑制するタグを無効にします。 \f2X\fP が存在する場合はタグが無効になり、存在しない場合はタグが有効になります。これにより、Javadoc ツールは、検出したタグが入力ミスなどによる未知のタグであるかどうかを特定できます。未知のタグを検出した場合、Javadoc ツールは警告を出力します。 -.LP -すでに配置されている値に \f2X\fP を追加できます。こうしておけば、 \f2X を削除するだけでタグを有効にすることができます\fP。たとえば、@todo タグの出力を抑制したい場合、次のように指定します。 -.nf -\f3 -.fl - \-tag todo:Xcmf:"To Do:" -.fl -\fP -.fi -さらに単純な指定方法もあります。 -.nf -\f3 -.fl - \-tag todo:X -.fl -\fP -.fi -.LP -構文 \f2\-tag todo:X\fP は、 \f2@todo\fP がタグレットで定義されていても有効です。 -.LP -\f3タグの順序\fP \- \f2\-tag\fP (および \f2\-taglet\fP) オプションの順序によって、タグの出力順が決まります。カスタムタグと標準タグを組み合わせて使用することもできます。標準タグのタグオプションは、順序を決定するためだけのプレースホルダです。これらは標準タグ名のみを使用します。(標準タグの小見出しは変更できません。)これについては、以下の例で説明します。 -.LP -\f2\-tag\fP が存在しない場合は、 \f2\-taglet\fP の位置によってその順序が決まります。タグが両方とも存在する場合、コマンド行の最後にあるほうがその順序を決定します。これは、タグやタグレットがコマンド行に指定された順番に処理されるためです。たとえば、 \f2\-taglet\fP と \f2\-tag\fP の両方が todo という名前を持っている場合、コマンド行の最後にあるほうが順序を決定します。 -.LP -\f3タグの完全セットの例\fP \- この例では、出力の「Parameters」と「Throws」の間に「To Do」を挿入します。X を使用して、@example が、ソースコード内の今回の実行では出力されないタグであることを指定します。@argfile を使用する場合は、次のように、引数ファイル内の別々の行にタグを配置できます。行の継続を示す文字は不要です。 -.nf -\f3 -.fl - \-tag param -.fl - \-tag return -.fl - \-tag todo:a:"To Do:" -.fl - \-tag throws -.fl - \-tag see -.fl - \-tag example:X -.fl -\fP -.fi -.LP -javadoc がドキュメンテーションコメントを解析する際に検索されたタグのうち、標準タグでも、 \f2\-tag\fP や \f2\-taglet\fP で渡されたタグでもないものはすべて未知のタグとみなされ、警告がスローされます。 -.LP -標準タグは、最初、デフォルトの順序でリスト内に内部的に格納されます。 \f2\-tag\fP オプションを使用すると、このリストに追加されるタグ、すなわち標準タグの位置がデフォルトの位置から移動します。つまり、標準タグに \f2\-tag\fP オプションを付けなければ、これらはデフォルトの位置に配置されたままになります。 -.LP -\f3競合の回避\fP \- 固有の名前空間を細かく分けるには、パッケージに使用されている \f2com.mycompany.todo という名前のように、ドット (.) を区切り記号とする名前を使います\fP。Oracle は、今後も名前にドットを含まない標準タグを作成します。ユーザーが作成したタグは、Oracle が提供する同じ名前のタグの動作をオーバーライドします。つまり、 \f2@todo\fP という名前のタグまたはタグレットをユーザーが作成した場合、Oracle がその後同じ名前の標準タグを作成したとしても、その動作は常にユーザーが定義した動作と同じになります。 -.LP -\f3注釈 vs. Javadoc タグ\fP \- 一般に、追加する必要のあるマークアップが、ドキュメンテーションに影響を与えたりドキュメンテーションを生成したりするためのものである場合、そのマークアップは javadoc タグにすべきです。それ以外の場合は注釈にすべきです。 -.na -\f2「Comparing Annotations and Javadoc Tags」\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html#annotationsを参照してください。 -.LP -\-taglet オプションを使用して、より複雑なブロックタグやカスタムインラインタグを 作成することができます。 -.LP -.TP 3 -\-taglet\ \ class -そのタグのドキュメントの生成に使うドックレットを起動するためのクラスファイルを指定します。クラスの完全指定名を指定してください。このタグレットは、カスタムタグのテキスト引数の数も定義します。タグレットは、これらの引数を受け付け、処理し、出力を生成します。外部ドキュメントとサンプルタグレットについては、以下を参照してください。 -.RS 3 -.TP 2 -o -.na -\f2「タグレットの概要」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/taglet/overview.html +外部ドキュメントへの絶対リンク.PP +http://docs\&.oracle\&.com/javase/8/docs/api/index\&.htmlに示すような、\fIjava\&.lang\fR、 +\fIjava\&.io\fRおよびその他のJava SEパッケージにリンクする必要がある場合があります。 +.PP +ただし、シェルにはWebアクセス権がありません。この場合、次を行います。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +ブラウザでpackage\-listファイルを開きます(http://docs\&.oracle\&.com/javase/8/docs/api/package\-list) .RE -.LP -タグレットは、ブロックタグまたはインラインタグで便利です。タグレットは任意の数の引数をとることができます。また、テキストを太字にする、箇条書きを作成する、テキストをファイルに書き出す、その他のプロセスを開始するなどのカスタム動作を実装できます。 -.LP -タグレットで指定できるのは、タグの配置場所と配置形式のみです。その他のすべての決定は、ドックレットによって行われます。タグレットを使用しても、包含クラスのリストからクラス名を削除するなどの処理は実行できません。ただし、タグのテキストをファイルに出力したり、別のプロセスをトリガーするなどの副作用は得られます。 -.LP -タグレットのパスを指定するには、\f2\-tagletpath\fP オプションを使用します。以下は、生成されるページの「Parameter」と「Throws」の間に「To Do」タグレットを挿入する例です。 -.nf -\f3 -.fl - \-taglet com.sun.tools.doclets.ToDoTaglet -.fl - \-tagletpath /home/taglets -.fl - \-tag return -.fl - \-tag param -.fl - \-tag todo -.fl - \-tag throws -.fl - \-tag see -.fl -\fP -.fi -.LP -また、 \f2\-taglet\fP オプションを \f2\-tag\fP オプションの代わりに使用することもできますが、そうすると可読性が低下する可能性があります。 -.LP -.TP 3 -\-tagletpath\ \ tagletpathlist -taglet クラスファイル (.class) の検索パスを指定します。\f2tagletpathlist\fP には、コロン (\f2:\fP) で区切って複数のパスを含めることができます。Javadoc ツールは、指定されたパス以下のすべてのサブディレクトリを検索します。 -.LP -.TP 3 -\-docfilessubdirs\ -「\f2doc\-files\fP」ディレクトリの深いコピーを有効にします。つまり、コピー先には、サブディレクトリとすべてのコンテンツがコピーされます。たとえば、ディレクトリ \f2doc\-files/example/images\fP とそのすべての内容がコピーされます。ここでも、サブディレクトリを除外する指定が可能です。 -.LP -.TP 3 -\-excludedocfilessubdir\ \ name1:name2... -「\f2doc\-files\fP」の、指定された名前のサブディレクトリをすべて除外します。これにより、SCCS とその他のソースコード制御サブディレクトリのコピーを防ぎます。 -.LP -.TP 3 -\-noqualifier\ \ all\ | \ packagename1:packagename2:... -出力されるクラス名の先頭のパッケージ名 (パッケージ修飾子) を省略します。 \f2\-noqualifier\fP の引数は、「\f2all\fP」(すべてのパッケージ修飾子が省略される)、修飾子として削除すべきパッケージのコロン区切りリスト (ワイルドカードも可)、のいずれかとなります。クラスまたはインタフェース名が表示される位置からパッケージ名が削除されます。 -.LP -次の例では、すべてのパッケージ修飾子を省略します。 -.nf -\f3 -.fl - \-noqualifier all -.fl -\fP -.fi -次の例では、パッケージ修飾子 java.lang および java.io を省略します。 -.nf -\f3 -.fl - \-noqualifier java.lang:java.io -.fl -\fP -.fi -次の例では、java で始まるパッケージ修飾子と com.sun というサブパッケージ (javax ではない) を省略します。 -.nf -\f3 -.fl - \-noqualifier java.*:com.sun.* -.fl -\fP -.fi -パッケージ修飾子が上記の動作に従って表示される場合、名前は適切に短くされます。詳細は「名前の表示方法」を参照してください。この規則は、 \f2\-noqualifier\fP を使用するかどうかにかかわらず有効です。 -.LP -.TP 3 -\-notimestamp\ -タイムスタンプが抑制されます。各ページ先頭近くにある、生成された HTML 内の HTML コメントでタイムスタンプが隠されます。Javadoc を 2 つのソースベースで実行し、それらに対して diff を実行するときにこのオプションを使用すると、タイムスタンプによって diff が発生しなくなるので便利です (このオプションを使用しないと、各ページで diff になります)。タイムスタンプには Javadoc のバージョン番号が含まれており、次のようになります。 -.nf -\f3 -.fl - <!\-\- Generated by javadoc (build 1.5.0_01) on Thu Apr 02 14:04:52 IST 2009 \-\-> -.fl -\fP -.fi -.LP -.TP 3 -\-nocomment\ -主説明およびすべてのタグを含むコメント本文全体を抑制し、宣言だけを生成します。このオプションにより、元は異なる目的のためだったソースファイルを再利用し、新しいプロジェクトの早い段階でスケルトン HTML ドキュメントを作成できるようになりました。 -.LP -.TP 3 -\-sourcetab tabLength -ソース内で各タブが獲得する空白の数を指定します。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +ファイルをローカル・ディレクトリに保存し、このローカル・コピーを第2引数\fIpackagelistLoc\fRで指定します。この例では、パッケージ・リスト・ファイルはカレント・ディレクトリ(\&.)に保存されています。 .RE -.SH "コマンド行引数ファイル" -.LP -javadoc のコマンド行を短くしたり簡潔にしたりするために、 \f2javadoc\fP コマンドに対する引数 ( \f2\-J\fP オプションを除く) が入った 1 つ以上のファイルを指定することができます。このことを利用すれば、どのオペレーティングシステム上でも、任意の長さの javadoc コマンドを作成できます。 -.LP -引数ファイルには、javac のオプションとソースファイル名を自由に組み合わせて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に空白が含まれている場合は、そのファイル名全体を二重引用符で囲みます。 -.LP -引数ファイル内のファイル名は、現在のディレクトリから見た相対パスになります。引数ファイルの位置から見た相対パスではありません。引数ファイル内のファイル名リストでは、ワイルドカード (*) は使用できません。たとえば、 \f2*.java\fP とは指定できません。引数ファイル内の引数で \f2@\fP 文字を使用して、複数のファイルを再帰的に解釈することはサポートされていません。また、 \f2\-J\fP オプションもサポートされていません。 このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 -.LP -javadoc を実行するときに、各引数ファイルのパスとファイル名の先頭に \f2@\fP 文字を付けて渡します。javadoc は、\f2@\fP 文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 -.SS -引数ファイルを 1 つ指定する例 -.LP -次のように、「\f2argfile\fP」という名前の単一の引数ファイル内に、Javadoc のすべての引数を格納します。 +.PP +次のコマンドは、Java SEプラットフォーム・パッケージへのリンクを持つc\fIom\&.mypackage\fRパッケージのドキュメントを生成します。生成ドキュメントには、たとえばクラス\fItrees\fR内の\fIObject\fRクラスへのリンクが含まれています。\fI\-sourcepath\fRなど、他の必要なオプションは表示されません。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc @argfile\fP -.fl +javadoc \-linkoffline http://docs\&.oracle\&.com/javase/8/docs/api/ \&. com\&.mypackage .fi -.LP -この引数ファイルには、次の例で示されている 2 つのファイルの内容を両方とも入れることができます。 -.SS -引数ファイルを 2 つ指定する例 -.LP -2 つの引数ファイルを作成できます。1 つは Javadoc オプション用、もう 1 つはパッケージ名またはソースファイル名用です。なお、次のリストでは行継続文字を使用していません。 -.LP -次の内容を含む、「\f2options\fP」という名前のファイルを作成します。 +.if n \{\ +.RE +.\} +外部ドキュメントへの相対リンク.PP +\fI\-linkoffline\fRを相対パスとともに使用することはあまりありません。理由は単純で、通常は\fI\-link\fRで間に合うからです。\fI\-linkoffline\fRオプションを使用する場合、通常、package\-listファイルはローカルで、相対リンクを使用する場合はリンク先のファイルもローカルなので、通常は\fI\-linkoffline\fRオプションの2つの引数に、異なるパスを指定する必要はありません。2つの引数が同一の場合、\fI\-link\fRオプションを使用できます。 +package\-listファイルの手動での作成.PP +package\-listファイルがまだ存在しなくても、ドキュメントのリンク先のパッケージ名がわかっている場合は、このファイルのコピーを手動で作成し、\fIpackagelistLoc\fRでそのパスを指定することができます。\fIcom\&.apipackage\fRが最初に生成された時点で\fIcom\&.spipackage\fRのパッケージ・リストが存在しないという前出のケースが一例として挙げられます。この方法は、パッケージ名はわかっているものの、まだ公開されていない、新しい外部ドキュメントにリンクするドキュメントを生成する必要がある場合に便利です。また、package\-listファイルが生成されないJavadoc 1\&.0または1\&.1で生成されたパッケージ用にpackage\-listファイルを作成する場合にも、この方法が使用できます。同様に、2つの企業が未公開のpackage\-listファイルを共有できるため、クロスリンクを設定したドキュメントを同時にリリースすることも可能になります。 +複数ドキュメントへのリンク.PP +参照先の生成ドキュメントごとに1回、\fI\-linkoffline\fRオプションを含めることができます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \-d docs\-filelist -.fl - \-use -.fl - \-splitindex -.fl - \-windowtitle 'Java SE 7 API Specification' -.fl - \-doctitle 'Java SE 7 API Specification' -.fl - \-header '<b>Java(TM) SE 7</b>' -.fl - \-bottom 'Copyright © 1993\-2011 Oracle and/or its affiliates. All rights reserved.' -.fl - \-group "Core Packages" "java.*" -.fl - \-overview /java/pubs/ws/1.7.0/src/share/classes/overview\-core.html -.fl - \-sourcepath /java/pubs/ws/1.7.0/src/share/classes -.fl -\fP +javadoc \-linkoffline extdocURL1 packagelistLoc1 \-linkoffline extdocURL2 +packagelistLoc2 \&.\&.\&. .fi -.LP -次の内容を含む、「\f2packages\fP」という名前のファイルを作成します。 +.if n \{\ +.RE +.\} +ドキュメントの更新.PP +プロジェクトに何十または何百のパッケージが含まれる場合にも、\fI\-linkoffline\fRオプションを使用できます。ソース・ツリー全体ですでに\fIjavadoc\fRコマンドを実行したことがある場合、ドキュメンテーション・コメントにわずかな変更を迅速に加え、ソース・ツリーの一部で\fIjavadoc\fRコマンドを再実行することができます。2回目の実行は、ドキュメンテーション・コメントを変更し、宣言は変更しない場合にのみ正しく処理されることに注意してください。ソース・コードに対して宣言を追加、削除、または変更した場合は、索引、パッケージ・ツリー、継承されるメンバーのリスト、使用ページなどの場所で、リンクが壊れることがあります。 +.PP +まず、この新しい小規模な実行で使用する、新しい生成先ディレクトリ(updateなど)を作成します。この例では、元の生成先ディレクトリの名前はhtmlです。最も単純な例では、htmlディレクトリの親ディレクトリに移動します。\fI\-linkoffline\fRオプションの第1引数にカレント・ディレクトリ(\&.)を設定し、第2引数にpackage\-listが検索されるhtmlへの相対パスを設定し、更新するパッケージのパッケージ名のみを渡します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - com.mypackage1 -.fl - com.mypackage2 -.fl - com.mypackage3 -.fl -\fP +javadoc \-d update \-linkoffline \&. html com\&.mypackage .fi -.LP -そのあと、次のコマンドを使用して javadoc を実行します。 +.if n \{\ +.RE +.\} +.PP +\fIjavadoc\fRコマンドの終了後、update/com/package内の生成されたクラスのページをコピーし(概要や索引は除く)、html/com/package内の元のファイルに上書きします。 +.PP +\-linksource +.RS 4 +各ソース・ファイル(行番号付き)のHTMLバージョンを作成し、標準HTMLドキュメントからソース・ファイルへのリンクを追加します。リンクは、ソース・ファイル内に宣言されているクラス、インタフェース、コンストラクタ、メソッド、フィールドに対して作成されます。そうでない場合、たとえばデフォルト・コンストラクタや生成されたクラスに対しては、リンクは作成されません。 +.sp +このオプションは、\fI\-public\fR、\fI\-package\fR、\fI\-protected\fRおよび\fI\-private\fRの各オプションとは関係なく、非公開のクラス、フィールド、非公開のメソッドの本体をはじめとする組み込まれたソース・ファイル内のすべての非公開実装の詳細を公開します。\fI\-private\fRオプションもあわせて指定しないかぎり、非公開のクラスやインタフェースの一部には、リンクを介してアクセスできないことがあります。 +.sp +各リンクは、その宣言内の識別子名の上に作成されます。たとえば、\fIButton\fRクラスのソース・コードへのリンクは、\fIButton\fRという語の上に作成されます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc @options @packages\fP -.fl +public class Button extends Component implements Accessible .fi -.SS -パス付きの引数ファイルの例 -.LP -引数ファイルには、パスを指定できます。ただし、そのファイル内に指定されたファイル名は、現在の作業ディレクトリから見た相対パスになります。つまり、下の例の場合は、 \f2path1\fP や \f2path2\fP から見た相対パスではありません。 +.if n \{\ +.RE +.\} +\fIButton\fRクラスの\fIgetLabel\fRメソッドのソース・コードへのリンクは、\fIgetLabel\fRという語の上に作成されます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc @path1/options @path2/packages\fP -.fl +public String getLabel() .fi -.SS -オプションの引数の例 -.LP -次に、Javadoc オプションに対する引数だけを引数ファイルに格納する例を示します。ここでは \f2\-bottom\fP オプションを使用します。というのも、引数が長くなる可能性があるからです。次のようなテキスト引数を含む、「\f2bottom\fP」という名前のファイルを作成できます。 +.if n \{\ +.RE +.\} +.RE +.PP +\-group groupheading \fIpackagepattern:packagepattern\fR +.RS 4 +概要ページの複数のパッケージを、指定したグループに分けて、グループごとに表を作成します。各グループは、それぞれ別の\fI\-group\fRオプションで指定します。グループは、コマンド行で指定された順序でページに表示されます。パッケージは、グループ内でアルファベット順になっています。指定した\fI\-group\fRオプションでは、\fIpackagepattern\fR式のリストに一致するパッケージが、見出しとして\fIgroupheading\fRを持つ1つの表に表示されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIgroupheading\fRには、任意のテキストを指定でき、空白を含めることができます。指定したテキストは、グループの表見出しになります。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIpackagepattern\fRの値には、任意のパッケージ名の先頭部分とそれに続く1つのアスタリスク(*)で任意のパッケージ名を指定できます。アスタリスクは使用できる唯一のワイルドカードで、任意の文字に一致する、という意味です。1つのグループには、コロン(:)で区切って複数のパターンを含めることができます。パターンまたはパターン・リストでアスタリスクを使用する場合、パターン・リストは\fI"java\&.lang*:java\&.util"\fRのように引用符で囲む必要があります。 +.RE +.sp +\fI\-group\fRオプションを指定しない場合は、見出し\fIPackages\fRおよび適切な小見出しを持つ1つのグループに配置されます。小見出しにすべてのドキュメント化されるパッケージ(すべてのグループ)が含まれるわけではない場合、残りのパッケージは「その他のパッケージ」というサブ見出しを持つ独立したグループに入れられます。 +.sp +たとえば、次の\fIjavadoc\fRコマンドでは、3つのドキュメント化されたパッケージが\fI「コア」\fR、\fI「拡張」\fRおよび\fI「その他のパッケージ」\fRに分けられます。\fIjava\&.lang*\fRでは、最後のドット(\&.)を指定していません。\fIjava\&.lang\&.*\fRのようにドットを入れると、\fI java\&.lang\fRパッケージは除外されることになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-group "Core Packages" "java\&.lang*:java\&.util" + \-group "Extension Packages" "javax\&.*" + java\&.lang java\&.lang\&.reflect java\&.util javax\&.servlet java\&.new +.fi +.if n \{\ +.RE +.\} +\fBコア・パッケージ\fR +.sp +\fIjava\&.lang\fR +.sp +\fIjava\&.lang\&.reflect\fR +.sp +\fIjava\&.util\fR +.sp +\fB拡張機能パッケージ\fR +.sp +\fIjavax\&.servlet\fR +.sp +\fBOther Packages\fR +.sp +\fIjava\&.new\fR +.RE +.PP +\-nodeprecated +.RS 4 +非推奨のAPIをドキュメントに生成しないようにします。このオプションを指定すると、\fI\-nodeprecatedlist\fRオプションを指定した場合と同じ効果があり、ドキュメントの他の部分全体でも、非推奨のAPIが生成されません。このオプションは、コードを記述しているとき、非推奨のコードによって気を散らされたくない場合に便利です。 +.RE +.PP +\-nodeprecatedlist +.RS 4 +非推奨のAPIのリストを含むファイル(deprecated\-list\&.html)、およびナビゲーション・バーのそのページへのリンクが生成されないようにします。\fIjavadoc\fRコマンドでは、引き続き、ドキュメントの他の部分では、非推奨のAPIが生成されます。このオプションは、非推奨のAPIがソース・コードに含まれておらず、ナビゲーション・バーをすっきりと見せる場合に便利です。 +.RE +.PP +\-nosince +.RS 4 +生成ドキュメントから、\fI@since\fRタグに関連付けられた\fI「導入されたバージョン」\fRセクションを省略します。 +.RE +.PP +\-notree +.RS 4 +生成ドキュメントから、クラスおよびインタフェースの階層ページを省略します。これらのページには、ナビゲーション・バーの「階層ツリー」ボタンからアクセスできます。デフォルトでは、階層が生成されます。 +.RE +.PP +\-noindex +.RS 4 +生成ドキュメントから、索引を省略します。デフォルトでは、索引が生成されます。 +.RE +.PP +\-nohelp +.RS 4 +出力の各ページの最上部と最下部にあるナビゲーション・バーから「ヘルプ」リンクを省略します。 +.RE +.PP +\-nonavbar +.RS 4 +通常、生成されるページの最上部と最下部に表示されるナビゲーション・バー、ヘッダー、およびフッターを生成しないようにします。\fI\-nonavbar\fRオプションは\fI\-bottom\fRオプションに影響を与えません。\fI\-nonavbar\fRオプションは、印刷するためにのみファイルをPostScriptやPDFに変換する場合など、内容のみが重要で、ナビゲーションの必要がない場合に便利です。 +.RE +.PP +\-helpfile \fIpath\efilename\fR +.RS 4 +最上部および最下部のナビゲーション・バーの「ヘルプ」リンクのリンク先となる代替ヘルプ・ファイルpath\efilenameのパスを指定します。このオプションが指定されていないと、\fIjavadoc\fRコマンドは、\fIjavadoc\fRコマンド内でハードコードされているヘルプ・ファイルhelp\-doc\&.htmlを自動作成します。このオプションを使用すると、デフォルトをオーバーライドできます。ファイル名にはどんな名前でも指定でき、help\-doc\&.htmlに限定されません。\fIjavadoc\fRコマンドは、次の例のように、ナビゲーション・バー内のリンクを必要に応じて調整します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-helpfile /home/user/myhelp\&.html java\&.awt\&. +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-stylesheet \fIpath/filename \fR +.RS 4 +代替HTMLスタイルシート・ファイルのパスを指定します。このオプションが指定されていないと、\fIjavadoc\fRコマンドは、\fIjavadoc\fRコマンド内でハードコードされているスタイルシート・ファイルstylesheet\&.cssを自動作成します。このオプションを使用すると、デフォルトをオーバーライドできます。ファイル名にはどんな名前でも指定でき、stylesheet\&.cssに限定されません。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-stylesheet file /home/user/mystylesheet\&.css com\&.mypackage +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-serialwarn +.RS 4 +\fI@serial\fRタグがない場合は、コンパイル時に警告を生成します。デフォルトでは、Javadoc 1\&.2\&.2以降では、直列化の警告は生成されません。以前のリリースとは逆の動作です。このオプションを使用すると、直列化の警告が表示されるので、デフォルトの直列化可能フィールドと\fIwriteExternal\fRメソッドを適切にドキュメント化するのに役立ちます。 +.RE +.PP +\-charset \fIname\fR +.RS 4 +このドキュメント用のHTML文字セットを指定します。この名前は、IANA RegistryのCharacter Sets +(http://www\&.iana\&.org/assignments/character\-sets)に示された、優先MIME名である必要があります。 +.sp +たとえば、\fIjavadoc \-charset "iso\-8859\-1" mypackage\fRは次の行を生成された各ページのヘッダーに挿入します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +<META http\-equiv="Content\-Type" content="text/html; charset=ISO\-8859\-1"> +.fi +.if n \{\ +.RE +.\} +この\fIMETA\fRタグは、HTML標準(4197265および4137321)のHTML Document Representation +(http://www\&.w3\&.org/TR/REC\-html40/charset\&.html#h\-5\&.2\&.2)に記載されています。 +.sp +およびオプションも参照してください。 +.RE +.PP +\-docencoding \fIname\fR +.RS 4 +生成されるHTMLファイルのエンコーディングを指定します。この名前は、IANA RegistryのCharacter Sets +(http://www\&.iana\&.org/assignments/character\-sets)に示された、優先MIME名である必要があります。 +.sp +\fI\-docencoding\fRオプションを省略し、\fI\-encoding\fRオプションを使用すると、生成されたHTMLファイルの暗号化は\fI\-encoding\fRオプションで特定されます。例: +\fIjavadoc \-docencoding"iso\-8859\-1" mypackage\fRおよびオプションも参照してください。 +.RE +.PP +\-keywords +.RS 4 +HTMLキーワード<META>タグを、クラスごとに生成されるファイルに追加します。これらのタグは、<META>タグを検索するサーチ・エンジンがページを見つける場合に役立ちます。インターネット全体を検索する検索エンジンのほとんどは<META>タグを参照しません。ページが誤用している可能性があるからです。自身のWebサイトへの検索を制限する、企業により提供される検索エンジンは、<META>タグを参照することで恩恵を受けることができます。<META>タグには、クラスの完全修飾名と、フィールドおよびメソッドの修飾されていない名前が含まれます。コンストラクタは、クラス名と同じであるため含まれません。たとえば、クラス\fIString\fRは次のキーワードで開始します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +<META NAME="keywords" CONTENT="java\&.lang\&.String class"> +<META NAME="keywords" CONTENT="CASE_INSENSITIVE_ORDER"> +<META NAME="keywords" CONTENT="length()"> +<META NAME="keywords" CONTENT="charAt()"> +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-tag \fItagname\fR:Xaoptcmf:"\fItaghead\fR" +.RS 4 +\fIjavadoc\fRコマンドがドキュメンテーション・コメント内の引数を1つ取る単純なカスタム・ブロック・タグ\fI@tagname\fRを解釈できるようにします。これにより、\fIjavadoc\fRコマンドはタグ名のスペルチェックを行うことができるので、ソース・コード内に存在するすべてのカスタム・タグについて、\fI\-tag\fRオプションを組み込むことが重要です。今回の実行では出力されないタグは、\fIX\fRを付けて無効にします。\fI\-tag\fRオプションは、タグの見出し\fItaghead\fRを太字で出力します。その次の行には、このオプションの1つの引数で指定したテキストが続きます。ブロック・タグと同様、この引数のテキストにはインライン・タグを含めることができます。このインライン・タグも解釈されます。出力は、引数を1つ取る標準のタグ(\fI@return\fRや\fI@author\fRなど)の出力とよく似ています。\fItaghead\fRの値を省略すると、\fItagname\fRが見出しとして表示されます。 +.sp +\fBタグの配置\fR: +\fIXaoptcmf\fR引数により、ソース・コード内でタグを配置できる場所が決まり、タグを無効にできるかどうか(\fIX\fRを使用して)が決まります。タグの配置位置を制限しない場合は\fIa\fRを指定します。それ以外の文字の組合せも可能です。 +.sp +\fIX\fR +(タグの無効化) +.sp +\fIa\fR +(すべて) +.sp +\fIo\fR +(概要) +.sp +\fIp\fR +(パッケージ) +.sp +\fIt\fR +(タイプ、つまりクラスとインタフェース) +.sp +\fIc\fR +(コンストラクタ) +.sp +\fIm\fR +(メソッド) +.sp +\fIf\fR +(フィールド) +.sp +\fBシングル・タグの例\fR: ソース・コード内の任意の位置で使用できるタグのタグ・オプションの例を示します。\fI\-tag todo:a:"To Do:"\fR +.sp +\fI@todo\fRタグをコンストラクタ、メソッドおよびフィールドとのみ使用する場合、\fI\-tag todo:cmf:"To Do:"\fRを使用します。 +.sp +最後のコロン(:)は、パラメータ区切り文字ではなく、見出しテキストの一部になっています。\fI@todo\fRタグを含む、ソース・コード用のいずれかのタグ・オプションを使用します。たとえば、\fI@todo The documentation for this method needs work\fRです。 +.sp +\fBタグ名内のコロン\fR: タグ名内でコロンを使用する場合はバックスラッシュを使用してエスケープします。次のドキュメンテーション・コメントには、\fI\-tag ejb\e\e:bean:a:"EJB Bean:"\fRオプションを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +/** + * @ejb:bean + */ +.fi +.if n \{\ +.RE +.\} +\fBタグ名のスペルチェック\fR: 一部の開発者が必ずしも出力しないカスタム・タグをソース・コード内に配置することがあります。この場合、ソース・コード内のすべてのタグをリストし、出力するタグを有効にし、出力しないタグを無効にする必要があります。\fIX\fRを指定するとタグは無効になります。指定しないと、タグは有効になります。これにより、\fIjavadoc\fRコマンドは、検出したタグが入力ミスなどによる不明タグであるかどうかを特定できます。このような場合に、\fIjavadoc\fRコマンドから警告が出力されます。すでに配置されている値に\fIX\fRを追加できます。こうしておけば、\fIX\fRを削除するのみでタグを有効にすることができます。たとえば、\fI@todo\fRタグを出力で抑制する場合、\fI\-tag todo:Xcmf:"To Do:"\fRを使用します。さらに簡単にする場合、\fI\-tag todo:X\fRを使用します。構文\fI\-tag todo:X\fRは、\fI@todo\fRタグがタグレットで定義されていても機能します。 +.sp +\fBタグの順序\fR: +\fI\-ta\fR\fIg\fRおよび\fI\-taglet\fRオプションの順序によって、タグの出力順が決まります。カスタム・タグと標準タグを組み合せて使用することもできます。標準タグのタグ・オプションは、順序を決定するためだけのプレースホルダです。標準タグの名前のみを取ります。標準タグの小見出しは変更できません。これを次の例に示します。\fI\-tag\fRオプションを指定しないと、\fI\-tagle\fR\fIt\fRオプションの位置により、順序が決まります。タグが両方とも存在する場合、コマンドラインの最後にある方がその順序を決定します。これは、タグやタグレットがコマンドラインに指定された順番に処理されるためです。たとえば、\fI\-taglet\fRおよび\fI\-tag\fRオプションが名前\fItodo\fR値を持つ場合、コマンドラインに最後に指定されたものが順序を決定します。 +.sp +\fBタグの完全セットの例\fR: この例では、出力のParametersとThrowsの間にTo Doを挿入します。\fIX\fRを使用して、\fI@example\fRタグが、ソース・コード内の今回の実行では出力されないタグであることも指定します。\fI@argfile\fRタグを使用する場合は、次のように、引数ファイル内の別々の行にタグを配置できます(行の継続を示す文字は不要)。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-tag param +\-tag return +\-tag todo:a:"To Do:" +\-tag throws +\-tag see +\-tag example:X +.fi +.if n \{\ +.RE +.\} +\fIjavadoc\fRコマンドがドキュメンテーション・コメントを解析する際に検索されたタグのうち、標準タグでも、\fI\-tag\fRや\fI\-taglet\fRオプションで渡されたタグでもないものはすべて不明タグとみなされ、警告がスローされます。 +.sp +標準タグは、最初、デフォルトの順序でリスト内に内部的に格納されます。\fI\-tag\fRオプションを使用すると、それらのタグはこのリストに追加されます。標準タグは、デフォルトの位置から移動されます。そのため、標準タグの\fI\-tag\fRオプションを省略すると、それはデフォルトの位置に配置されたままになります。 +.sp +\fB競合の回避\fR: 固有の名前空間を作成するには、パッケージに使用されている\fIcom\&.mycompany\&.todo\fRという名前のように、ドットで区切られた名前を使用します。Oracleは、今後も名前にドットを含まない標準タグを作成します。ユーザーが作成したタグは、Oracleが定義する同じ名前のタグの動作をオーバーライドします。\fI@todo\fRという名前のタグまたはタグレットをユーザーが作成した場合、その後にOracleが同じ名前の標準タグを作成しても、そのタグまたはタグレットは常にユーザーが定義したのと同じ動作を保持します。 +.sp +\fB注釈vs\&. Javadocタグ\fR: 一般に、追加する必要のあるマークアップが、ドキュメントに影響を与えたりドキュメントを生成したりするためのものである場合、そのマークアップはJavadocタグにします。それ以外の場合は注釈にします。JavadocツールでのDocコメントの記述方法のカスタム・タグと注釈に関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html#annotations)を参照してください。 +.sp +\fI\-taglet\fRオプションを使用して、より複雑なブロック・タグやカスタム・インライン・タグも作成できます。 +.RE +.PP +\-taglet \fIclass\fR +.RS 4 +そのタグのドキュメントの生成に使用するドックレットを起動するためのクラス・ファイルを指定します。\fIclass\fR値の完全修飾名を使用します。このタグレットは、カスタム・タグのテキスト引数の数も定義します。タグレットは、これらの引数を受け付け、処理し、出力を生成します。タグレットの例を使用した豊富なドキュメントについては、タグレットの概要 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/taglet/overview\&.html)を参照してください。 +.sp +タグレットは、ブロックタグまたはインライン・タグで便利です。タグレットは任意の数の引数をとることができます。また、テキストを太字にする、箇条書きを作成する、テキストをファイルに書き出す、その他のプロセスを開始するなどのカスタム動作を実装できます。タグレットで指定できるのは、タグの配置場所と配置形式のみです。その他のすべての決定は、ドックレットによって行われます。タグレットを使用しても、包含クラスのリストからクラス名を削除するなどの処理は実行できません。ただし、タグのテキストをファイルに出力したり、別のプロセスをトリガーするなどの副作用は得られます。タグレットへのパスを指定するには、\fI\-tagletpath\fRオプションを使用します。次に、生成されるページのParametersとThrowsの間にTo Doタグレットを挿入する例を示します。または、\fI\-taglet\fRオプションをその\fI\-tag\fRオプションのかわりに使用することができますが、読み取りが困難になる可能性があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-taglet com\&.sun\&.tools\&.doclets\&.ToDoTaglet +\-tagletpath /home/taglets +\-tag return +\-tag param +\-tag todo +\-tag throws +\-tag see +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-tagletpath \fItagletpathlist\fR +.RS 4 +tagletクラス・ファイルを検索するための検索パスを指定します。\fItagletpathlist\fRには、コロン(:)で区切って複数のパスを含めることができます。\fIjavadoc\fRコマンドは、指定されたパス以下のすべてのサブディレクトリを検索します。 +.RE +.PP +\-docfilesubdirs +.RS 4 +doc\-filesディレクトリのディープ・コピーを有効にします。宛先には、サブディレクトリとそのすべて内容が再帰的にコピーされます。たとえば、ディレクトリoc\-files/example/imagesとその内容がすべてコピーされます。ここでも、サブディレクトリを除外する指定が可能です。 +.RE +.PP +\-excludedocfilessubdir \fIname1:name2\fR +.RS 4 +指定された名前のdoc\-filesサブディレクトリをすべて除外します。これにより、SCCSとその他のソース・コード制御サブディレクトリのコピーを防ぎます。 +.RE +.PP +\-noqualifier all | \fIpackagename1\fR:\fIpackagename2\&.\&.\&.\fR +.RS 4 +出力されるクラス名から修飾パッケージ名を省略します。\fI\-noqualifier\fRオプションの引数は、\fIall\fR(すべてのパッケージ修飾子を省略)、または修飾子として削除するパッケージのコロン区切りリスト(ワイルドカードも可)、のいずれかとなります。クラスまたはインタフェース名が表示される位置からパッケージ名が削除されます。ソース・ファイルの処理を参照してください。 +.sp +次の例では、すべてのパッケージ修飾子を省略します。\fI\-noqualifier all\fR +.sp +次の例では、\fIjava\&.lang\fRおよび\fIjava\&.io\fRパッケージ修飾子を省略します: +\fI\-noqualifier java\&.lang:java\&.io\fR。 +.sp +次の例では、\fIjava\fRで始まるパッケージ修飾子および\fIcom\&.sun\fRサブパッケージを省略しますが、\fIjavax\fRは省略しません。\fI\-noqualifier java\&.*:com\&.sun\&.*\fR +.sp +パッケージ修飾子が前述の動作に従って表示される場合、名前は適切に短縮されます。「名前が表示される方法」を参照してください。このルールは、\fI\-noqualifier\fRオプションを使用するかどうかにかかわらず有効です。 +.RE +.PP +\-notimestamp +.RS 4 +タイムスタンプが抑制されます。各ページの先頭近くにある、生成されたHTML内のHTMLコメントでタイムスタンプが隠されます。\fI\-notimestamp\fRオプションは、\fIjavadoc\fRコマンドを2つのソース・ベースで実行し、それらの間の差分\fIdiff\fRを取得する場合に役立ちます。タイムスタンプによる\fIdiff\fRの発生を防ぐからです(そうでないとすべてのページで\fIdiff\fRになります)。タイムスタンプには\fIjavadoc\fRコマンドのリリース番号が含まれ、現在では、\fI<!\-\- Generated by javadoc (build 1\&.5\&.0_01) on Thu Apr 02 14:04:52 IST 2009 \-\->\fRのように表示されます。 +.RE +.PP +\-nocomment +.RS 4 +主説明およびすべてのタグを含むコメント本文全体を抑制し、宣言のみを生成します。このオプションにより、元は異なる目的のためだったソース・ファイルを再利用し、新しいプロジェクトの早い段階でスケルトンHTMLドキュメントを作成できるようになります。 +.RE +.PP +\-sourcetab \fItablength\fR +.RS 4 +ソース内で各タブが使用する空白文字の数を指定します。 +.RE +.SH "コマンドライン引数ファイル" +.PP +\fIjavadoc\fRコマンドを短くしたり簡潔にしたりするために、\fIjavadoc\fRコマンドに対する引数(\fI\-J\fRオプションを除く)が入った1つ以上のファイルを指定することができます。このことを利用すれば、どのオペレーティング・システム上でも、任意の長さの\fIjavadoc\fRコマンドを作成できます。 +.PP +引数ファイルには、\fIjavac\fRのオプションとソース・ファイル名を自由に組み合せて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に埋め込まれた空白がある場合、ファイル名全体を二重引用符で囲みます。 +.PP +引数ファイル内のファイル名は、引数ファイルの位置ではなく、現在のディレクトリに相対的となります。これらのリストでは、ワイルドカード(\fI*\fR)は使用できません。たとえば、*\&.javaとは指定できません。アットマーク(@)を使用して、ファイルを再帰的に解釈することはできません。また、\fI\-J\fRオプションもサポートされていません。このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。 +.PP +\fIjavadoc\fRを実行するときに、各引数ファイルのパスとファイル名の先頭に@文字を付けて渡します。\fIjavadoc\fRコマンドは、アットマーク(@)文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。 +.PP +\fBExample 1\fR, 単一の引数ファイル +.RS 4 +\fIargfile\fRという名前の1つの引数ファイルを使用して、すべての\fIjavadoc\fRコマンド引数を保持できます。\fIjavadoc @argfile\fR次の例に示すように、この引数ファイルには両方のファイルの内容が含まれています。 +.RE +.PP +\fBExample 2\fR, 2つの引数ファイル +.RS 4 +次のように、2つの引数ファイルを作成できます。\fIjavadoc\fRコマンドのオプション用に1つ、パッケージ名またはソース・ファイル名用に1つです。次のリストでは行継続文字を使用していません。 +.sp +次の内容を含む、optionsという名前のファイルを作成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-d docs\-filelist +\-use +\-splitindex +\-windowtitle \*(AqJava SE 7 API Specification\*(Aq +\-doctitle \*(AqJava SE 7 API Specification\*(Aq +\-header \*(Aq<b>Java(TM) SE 7</b>\*(Aq +\-bottom \*(AqCopyright © 1993\-2011 Oracle and/or its affiliates\&. All rights reserved\&.\*(Aq +\-group "Core Packages" "java\&.*" +\-overview /java/pubs/ws/1\&.7\&.0/src/share/classes/overview\-core\&.html +\-sourcepath /java/pubs/ws/1\&.7\&.0/src/share/classes +.fi +.if n \{\ +.RE +.\} +次の内容を含む、packagesという名前のファイルを作成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +com\&.mypackage1 +com\&.mypackage2 +com\&.mypackage3 +.fi +.if n \{\ +.RE +.\} +次のように、\fIjavadoc\fRコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc @options @packages +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, パスを使用した引数ファイル +.RS 4 +引数ファイルはパスを指定できますが、ファイル内のすべてのファイル名は、(\fIpath1\fRや\fIpath2\fRではなく)次のように現在の作業ディレクトリに相対的となります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc @path1/options @path2/packages +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 4\fR, オプション引数 +.RS 4 +次に、\fIjavadoc\fRコマンドのオプションに対する引数を引数ファイルに格納する例を示します。長い引数を指定できるので、\fI\-bottom\fRオプションを使用します。次のようなテキスト引数を含む、bottomという名前のファイルを作成できます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl <font size="\-1"> -.fl - <a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/> -.fl - Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> -.fl - Oracle is a registered trademark of Oracle Corporation and/or its affiliates. -.fl - その他の名称は、それぞれの所有者の商標または登録商標です。</font> -.fl -\fP -.fi -.LP -そのあと、次のようにして Javadoc ツールを実行します。 -.nf -\f3 -.fl - % \fP\f3javadoc \-bottom @bottom @packages\fP -.fl -.fi -.LP -あるいは、引数ファイルの先頭に \f2\-bottom\fP オプションも組み込んだあと、次のように実行してもかまいません。 -.nf -\f3 -.fl - % \fP\f3javadoc @bottom @packages\fP -.fl -.fi -.SH "名前" -実行 -.SH "Javadoc の実行" -.LP -\f3バージョン番号\fP \- javadoc のバージョン番号を判別するには、\f3javadoc \-J\-version\fP を使用します。出力ストリームには標準ドックレットのバージョン番号が含まれます。その出力を無効にするには、 \f2\-quiet\fP を使用します。 -.LP -\f3公開プログラムインタフェース\fP \- Java 言語で記述されたプログラムから Javadoc ツールを起動するとき使用します。このインタフェースは \f2com.sun.tools.javadoc.Main にあります\fP (javadoc は再入可能)。詳細は、 -.na -\f2「標準ドックレット」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/javadoc/standard\-doclet.html#runningprogrammaticallyを参照してください。 -.LP -\f3ドックレットの実行\fP \- 下記の説明は、標準 HTML ドックレットを呼び出すためのものです。カスタムドックレットを呼び出すには、\-doclet および \-docletpath オプションを使用します。特定のドックレットを実行した完全な例については、 -.na -\f2MIF Doclet のドキュメント\fP @ -.fi -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 -あるパッケージをドキュメント化するには、そのパッケージのソースファイル (\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 オプションを使用します。以下の例では、両方の方法について説明します。 -.RS 3 -.TP 2 -o -\f3ケース 1 \- 1 つ以上のパッケージからの起動を再帰的に実行\fP \- この例では javadoc が任意のディレクトリから実行できるように、\-sourcepath を使用し、再帰的処理のために \-subpackages (1.4 の新オプション) を使用します。これは、 \f2java\fP ディレクトリのサブパッケージをたどりますが、その際に、 \f2java.net\fP と \f2java.lang\fP をルートに持つパッケージが除外されます。この場合、 \f2java.lang\fP のサブパッケージである \f2java.lang.ref\fP。 -.nf -\f3 -.fl - % \fP\f3javadoc \fP\f3\-d\fP\f3 /home/html \fP\f3\-sourcepath\fP\f3 /home/src \fP\f3\-subpackages\fP\f3 java \fP\f3\-exclude\fP\f3 java.net:java.lang\fP -.fl -.fi -.LP -ほかのパッケージツリーも下方にたどるには、 \f2java:javax:org.xml.sax のように、\fP それらのパッケージの名前を \-subpackages \f2の引数の末尾に追加します\fP。 -.TP 2 -o -\f3ケース 2 \- ルートソースディレクトリに移ってから明示的なパッケージに対して実行\fP \- 完全指定のパッケージ名の親ディレクトリに移ります。次に、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。 -.nf -\f3 -.fl - % \fP\f3cd /home/src/\fP -.fl - % \f3javadoc \-d /home/html java.awt java.awt.event\fP -.fl -.fi -.TP 2 -o -\f3ケース 3 \- 任意のディレクトリから実行。ソースファイルは 1 つのディレクトリツリー内にある\fP \- このケースでは、現在のディレクトリがどこであってもかまいません。最上位パッケージの親ディレクトリを \f2\-sourcepath\fP に指定し、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。 -.nf -\f3 -.fl - % \fP\f3javadoc \-d /home/html \-sourcepath /home/src java.awt java.awt.event\fP -.fl -.fi -.TP 2 -o -\f3ケース 4 \- 任意のディレクトリから実行。ソースファイルは複数のディレクトリツリー内にある\fP \- これはケース 3 と似ていますが、パッケージが複数のディレクトリツリーに存在します。それぞれのツリーのルートへのパスを \f2\-sourcepath\fP に指定し (コロンで区切る)、ドキュメント化する 1 つ以上のパッケージ名を指定して javadoc を実行します。1 つのパッケージのすべてのソースファイルが、1 つのルートディレクトリの下に存在しなければならない、ということはありません。ソースパスとして指定された場所のどこかで見つかれば十分です。 -.nf -\f3 -.fl - % \fP\f3javadoc \-d /home/html \-sourcepath /home/src1:/home/src2 java.awt java.awt.event\fP -.fl + <a href="http://bugreport\&.sun\&.com/bugreport/">Submit a bug or feature</a><br/> + Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&. <br/> + Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&. + Other names may be trademarks of their respective owners\&.</font> .fi +.if n \{\ .RE -.LP -結果: すべてのケースでパッケージ \f2java.awt\fP および \f2java.awt.event\fP 内の public および protected クラスとインタフェースについて、HTML 形式のドキュメントが生成され、指定された生成先ディレクトリ (\f2/home/html\fP) に HTML ファイルが保存されます。2 つ以上のパッケージが生成されているので、ドキュメントは、パッケージのリスト、クラスのリスト、およびメインのクラスページという 3 つのフレームを持つことになります。 -.SS -1 つ以上のクラスのドキュメント化 -.LP -また、1 つ以上のソースファイル (\f2.java\fP) を渡して、Javadoc ツールを実行することもできます。javadoc は、次の 2 つの方法のいずれかで実行できます。1 つは \f2cd\fP を使用してディレクトリを変更する方法、もう 1 つは \f2.java\fP ファイルへのパスを完全に指定する方法です。相対パスは、現在のディレクトリを起点とします。ソースファイル名を渡すときは、 \f2\-sourcepath\fP オプションは無視されます。アスタリスク (*) のようなコマンド行ワイルドカードを使用すると、クラスのグループを指定できます。 -.RS 3 -.TP 2 -o -\f3ケース 1 \- ソースディレクトリに移る\fP \- \f2.java\fP ファイルのあるディレクトリに移ります。次に、ドキュメント化する 1 つ以上のソースファイルの名前を指定して javadoc を実行します。 -.nf -\f3 -.fl - % \fP\f3cd /home/src/java/awt\fP -.fl - % \f3javadoc \-d /home/html Button.java Canvas.java Graphics*.java\fP -.fl -.fi -この例では、クラス \f2Button\fP と \f2Canvas\fP 、および名前が \f2Graphics で始まるクラスについて、HTML 形式のドキュメントが生成されます\fP。パッケージ名ではなくソースファイルが javadoc に引数として渡されているので、ドキュメントは、クラスのリストとメインページという 2 つのフレームを持つことになります。 -.TP 2 -o -\f3ケース 2 \- パッケージのルートディレクトリに移る\fP \- これは、同じルート内にある複数のサブパッケージの個々のソースファイルをドキュメント化する場合に便利です。パッケージのルートディレクトリに移り、各ソースファイルを、ルートからのパスとともに指定します。 -.nf -\f3 -.fl - % \fP\f3cd /home/src/\fP -.fl - % \f3javadoc \-d /home/html java/awt/Button.java java/applet/Applet.java\fP -.fl -.fi -この例では、クラス \f2Button\fP および \f2Applet について、HTML 形式のドキュメントが生成されます\fP。 -.TP 2 -o -\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 で始まるクラスについて、HTML 形式のドキュメントが生成されます\fP。 +.\} +\fIjavadoc\fRコマンドを次のように実行します。\fI javadoc \-bottom @bottom @packages\fR +.sp +\fI\-bottom\fRオプションを引数ファイルの最初に含めて、次のように\fIjavadoc\fRコマンドを実行することもできます。\fIjavadoc @bottom @packages\fR .RE -.SS -パッケージとクラスのドキュメント化 -.LP -パッケージ全体と個々のクラスを同時に指定してドキュメント化することもできます。次に前述の 2 つの例を組み合わせた例を示します。 \f2\-sourcepath\fP は、パッケージへのパスに対しては使用できますが、個々のクラスのパスに対しては使用できません。 +.SH "JAVADOCコマンドの実行" +.PP +\fIjavadoc\fRコマンドのリリース番号は\fIjavadoc \-J\-version\fRオプションで特定できます。出力ストリームには標準ドックレットのリリース番号が含まれます。\fI\-quiet\fRオプションで無効にできます。 +.PP +Java言語で記述されたプログラムから\fIjavadoc\fRコマンドを起動するには公開プログラマティック・インタフェースを使用します。このインタフェースは\fIcom\&.sun\&.tools\&.javadoc\&.Main\fRにあります(また\fIjavadoc\fRコマンドは再入可能です)。詳細は、標準ドックレット +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/standard\-doclet\&.html#runningprogrammatically)を参照してください。 +.PP +次の手順では、標準HTMLドックレットを呼び出します。カスタム・ドックレットを呼び出すには、\fI\-doclet\fRおよび\fI\-docletpath\fRオプションを使用しますドックレットの概要 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/doclet/overview\&.html)を参照してください +.SS "簡単な例" +.PP +\fIjavadoc\fRコマンドは、パッケージ全体に対して実行することも、個々のソース・ファイルに対して実行することもできます。各パッケージ名は、それぞれのパッケージ名に対応するディレクトリ名を持ちます。 +.PP +次の例では、ソース・ファイルは/home/src/java/awt/*\&.javaにあります。生成先ディレクトリは/home/htmlです。 +1つ以上のパッケージのドキュメント化.PP +パッケージをドキュメント化するには、そのパッケージのソース・ファイルを、そのパッケージと同じ名前のディレクトリ内に格納する必要があります。 +.PP +パッケージ名が(\fIjava\&.awt\&.color\fRのようにドットで区切られた)複数の識別子から構成されている場合、後続の各識別子が下位のサブディレクトリ(ava/awt/colorなど)に対応している必要があります。 +.PP +1つのパッケージのための複数のソース・ファイルを、異なる場所にあるそのような2つのディレクトリ・ツリーに分けて格納することもできます。ただし、その場合は\fI\-sourcepath\fRによってその両方の場所を指定する必要があります。たとえば、src1/java/awt/colorとsrc2/java/awt/color。 +.PP +ディレクトリの変更(\fIcd\fRコマンドを使用)または\fI\-sourcepath\fRオプションにより、\fIjavadoc\fRコマンドを実行できます。次の例で両方の選択肢を示します。 +.PP +\fBExample 1\fR, 1つ以上のパッケージから再帰的に実行 +.RS 4 +この例では\fIjavadoc\fRコマンドが任意のディレクトリから実行できるように、\fI\-sourcepath\fRを使用し、再帰的処理のために\fI\-subpackages\fR +(1\&.4の新オプション)を使用します。これは、javaディレクトリのサブパッケージをたどりますが、\fIjava\&.net\fRと\fIjava\&.lang\fRをルートに持つパッケージは除外されます。\fIjava\&.lang\fRのサブパッケージである\fIjava\&.lang\&.ref\fRが除外される点に注意してください。また、他のパッケージ・ツリーを下方にたどるには、\fIjava:javax:org\&.xml\&.sax\fRのように、それらのパッケージの名前を\fI\-subpackages\fRの引数に追加します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % \fP\f3javadoc \-d /home/html \-sourcepath /home/src java.awt /home/src/java/applet/Applet.java\fP -.fl +javadoc \-d /home/html \-sourcepath /home/src \-subpackages java \-exclude .fi -.LP -この例では、パッケージ \f2java.awt\fP とクラス \f2Applet について、HTML 形式のドキュメントが生成されます\fP。Javadoc ツールは、 \f2Applet.java ソースファイル内にパッケージ宣言があれば、\fP その宣言に基づいて \f2Applet のパッケージ名を\fP 判定します。 -.SH "使用例" -.LP -Javadoc ツールには多くの便利なオプションがあり、その中にはほかのオプションよりも頻繁に使われるものがあります。ここで紹介するのは、Java プラットフォーム API に対して Javadoc ツールを実行するときに使用する実際のコマンドです。ここでは、Java SE Platform, Standard Edition, v1.2 の (約) 1500 個の public および protected クラスのドキュメントを生成するために、180M バイトのメモリーを使用します。 -.LP -同じ例を 2 回掲載します。最初の例はコマンド行から実行するもので、2 番目の例は Makefile から実行するものです。オプションの引数で絶対パスが使用されているため、同じ \f2javadoc\fP コマンドをどのディレクトリからでも実行できます。 -.SS -コマンド行の例 -.LP -次の例は、DOS などの一部のシェルでは長すぎる可能性があります。この制限を回避するには、コマンド行引数ファイルを使用します。または、シェルスクリプトを記述します。 +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, ルートへの移動および明示的なパッケージの実行 +.RS 4 +完全修飾されたパッケージの親ディレクトリに移動します。次に、ドキュメント化する1つ以上のパッケージの名前を指定して\fIjavadoc\fRコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% javadoc \-sourcepath /java/jdk/src/share/classes \\ -.fl - \-overview /java/jdk/src/share/classes/overview.html \\ -.fl - \-d /java/jdk/build/api \\ -.fl - \-use \\ -.fl - \-splitIndex \\ -.fl - \-windowtitle 'Java Platform, Standard Edition 7 API Specification' \\ -.fl - \-doctitle 'Java Platform, Standard Edition 7 API Specification' \\ -.fl - \-header '<b>Java(TM) SE 7</b>' \\ -.fl - \-bottom '<font size="\-1"> -.fl - <a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/> -.fl - Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> -.fl - Oracle is a registered trademark of Oracle Corporation and/or its affiliates. -.fl - その他の名称は、それぞれの所有者の商標または登録商標です。</font>' \\ -.fl - \-group "Core Packages" "java.*:com.sun.java.*:org.omg.*" \\ -.fl - \-group "Extension Packages" "javax.*" \\ -.fl - \-J\-Xmx180m \\ -.fl - @packages -.fl -\fP +cd /home/src/ +javadoc \-d /home/html java\&.awt java\&.awt\&.event .fi -.LP -ここで、 \f2packages\fP は、処理対象のパッケージ名 ( \f2java.applet java.lang\fP など) が入っているファイルの名前です。各オプションの、単一引用符で囲まれた引数の内側には、改行文字を挿入できません。たとえば、この例をコピー&ペーストする場合は、 \f2\-bottom\fP オプションから改行文字を削除してください。さらに、このあとの「注」も参照してください。 -.SS -Makefile の例 -.LP -ここでは、GNU Makefile の例を示します。Windows の Makefile の例については、 -.na -\f2Windows の Makefile の作成方法\fP @ -.fi -http://java.sun.com/j2se/javadoc/faq/index.html#makefilesを参照してください。 +.if n \{\ +.RE +.\} +また、他のパッケージ・ツリーを下方にたどるには、j\fIava:javax:org\&.xml\&.sax\fRのように、それらのパッケージの名前を\fI\-subpackages\fRの引数に追加します。 +.RE +.PP +\fBExample 3\fR, 1つのツリーの明示的なパッケージの任意のディレクトリから実行 +.RS 4 +この場合、現在のディレクトリがどこかは問題ではありません。\fIjavadoc\fRコマンドを実行し、最上位パッケージの親ディレクトリを指定して\fI\-sourcepath\fRオプションを使用します。ドキュメント化する1つ以上のパッケージの名前を指定します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -javadoc \-\fP\f3sourcepath\fP\f3 $(SRCDIR) \\ /* Sets path for source files */ -.fl - \-\fP\f3overview\fP\f3 $(SRCDIR)/overview.html \\ /* Sets file for overview text */ -.fl - \-\fP\f3d\fP\f3 /java/jdk/build/api \\ /* Sets destination directory */ -.fl - \-\fP\f3use\fP\f3 \\ /* Adds "Use" files */ -.fl - \-\fP\f3splitIndex\fP\f3 \\ /* Splits index A\-Z */ -.fl - \-\fP\f3windowtitle\fP\f3 $(WINDOWTITLE) \\ /* Adds a window title */ -.fl - \-\fP\f3doctitle\fP\f3 $(DOCTITLE) \\ /* Adds a doc title */ -.fl - \-\fP\f3header\fP\f3 $(HEADER) \\ /* Adds running header text */ -.fl - \-\fP\f3bottom\fP\f3 $(BOTTOM) \\ /* Adds text at bottom */ -.fl - \-\fP\f3group\fP\f3 $(GROUPCORE) \\ /* 1st subhead on overview page */ -.fl - \-\fP\f3group\fP\f3 $(GROUPEXT) \\ /* 2nd subhead on overview page */ -.fl - \-\fP\f3J\fP\f3\-Xmx180m \\ /* Sets memory to 180MB */ -.fl - java.lang java.lang.reflect \\ /* Sets packages to document */ -.fl - java.util java.io java.net \\ -.fl - java.applet -.fl +javadoc \-d /home/html \-sourcepath /home/src java\&.awt java\&.awt\&.event +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 4\fR, 複数のツリーの明示的なパッケージの任意のディレクトリから実行 +.RS 4 +\fIjavadoc\fRコマンドを実行し、各ツリーのルートへのパスのコロン区切りリストを指定して\fI\-sourcepath\fRオプションを使用します。ドキュメント化する1つ以上のパッケージの名前を指定します。指定したパッケージのすべてのソース・ファイルが、1つのルート・ディレクトリの下に存在する必要はありませんが、ソース・パスで指定された場所のどこかで見つかる必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-d /home/html \-sourcepath /home/src1:/home/src2 java\&.awt java\&.awt\&.event +.fi +.if n \{\ +.RE +.\} +すべてのケースでj\fIava\&.awt\fRおよび\fIjava\&.awt\&.even\fRtパッケージ内の\fIpublic\fRおよび\fIprotected\fRクラスとインタフェースについて、HTML形式のドキュメントが生成され、指定された生成先ディレクトリにHTMLファイルが保存されます。2つ以上のパッケージが生成されているので、ドキュメントは、パッケージのリスト、クラスのリスト、およびメインのクラス・ページという3つのHTMLフレームを持つことになります。 +.RE +1つ以上のクラスのドキュメント化.PP +また、1つ以上のソース・ファイルを渡して、\fIjavadoc\fRコマンドを実行することもできます。\fIjavadoc\fRは、次の2つの方法のいずれかで実行できます。1つはディレクトリを変更する方法(\fIcd\fRを使用)、もう1つはソース・ファイルへのパスを完全に指定する方法です。相対パスは、現在のディレクトリを起点とします。ソース・ファイルを渡すときは、\fI\-sourcepath\fRオプションは無視されます。アスタリスク(*)のようなコマンドライン・ワイルドカードを使用すると、クラスのグループを指定できます。 +.PP +\fBExample 1\fR, ソース・ディレクトリに変更 +.RS 4 +ソースを保持するディレクトリに変更します。次に、ドキュメント化する1つ以上のソース・ファイルの名前を指定して\fIjavadoc\fRコマンドを実行します。 +.sp +この例では、\fIButton\fRクラスと\fICanvas\fRクラス、および名前が\fIGraphics\fRで始まるクラスについて、HTML形式のドキュメントが生成されます。パッケージ名ではなくソース・ファイルが\fIjavadoc\fRコマンドに引数として渡されているので、ドキュメントは、クラスのリストとメイン・ページという2つのフレームを持つことになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +cd /home/src/java/awt +javadoc \-d /home/html Button\&.java Canvas\&.java Graphics*\&.java +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, パッケージのルート・ディレクトリに変更 +.RS 4 +これは、同じルートからの別のサブパッケージの個々のソース・ファイルをドキュメント化するのに役立ちます。パッケージのルート・ディレクトリに移り、各ソース・ファイルを、ルートからのパスとともに指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +cd /home/src/ +javadoc \-d /home/html java/awt/Button\&.java java/applet/Applet\&.java +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, 任意のディレクトリからのファイルのドキュメント化 +.RS 4 +この場合、現在のディレクトリがどこかは問題ではありません。ドキュメント化するソース・ファイルへの絶対パス(または現在のディレクトリからの相対パス)を指定して\fIjavadoc\fRコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-d /home/html /home/src/java/awt/Button\&.java +/home/src/java/awt/Graphics*\&.java +.fi +.if n \{\ +.RE +.\} +.RE +パッケージおよびクラスのドキュメント化.PP +パッケージ全体と個々のクラスを同時に指定してドキュメント化することもできます。次に、前述の2つの例を組み合せた例を示します。\fI\-sourcepath\fRオプションは、パッケージへのパスに対しては使用できますが、個々のクラスへのパスに対しては使用できません。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-d /home/html \-sourcepath /home/src java\&.awt +/home/src/java/applet/Applet\&.java +.fi +.if n \{\ +.RE +.\} +.SS "実際の例" +.PP +次のコマンドラインおよび\fImakefile\fRバージョンの\fIjavadoc\fRコマンドをJavaプラットフォームAPIで実行します。Java SE 1\&.2で約1500個のpublicおよびprotectedクラスのドキュメントを生成するには、180MBのメモリーを使用します。どちらの例もオプションの引数で絶対パスが使用されているため、任意のディレクトリから同じ\fIjavadoc\fRコマンドを実行できます。 +コマンドラインの例.PP +次のコマンドは、一部のシェルに対して長すぎる可能性があります。この制限を回避するには、コマンドライン引数ファイルを使用します。または、シェル・スクリプトを記述します。 +.PP +この例では、\fIpackages\fRは処理するパッケージを含む名前で、\fIjava\&.applet\fR +\fIjava\&.lang\fRなどです。各オプションの、一重引用符で囲まれた引数の内側には、改行文字を挿入できません。たとえば、この例をコピー・アンド・ペーストする場合は、\fI\-bottom\fRオプションから改行文字を削除してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath /java/jdk/src/share/classes \e +\-overview /java/jdk/src/share/classes/overview\&.html \e +\-d /java/jdk/build/api \e +\-use \e +\-splitIndex \e +\-windowtitle \*(AqJava Platform, Standard Edition 7 API Specification\*(Aq \e +\-doctitle \*(AqJava Platform, Standard Edition 7 API Specification\*(Aq \e +\-header \*(Aq<b>Java(TM) SE 7</b>\*(Aq \e +\-bottom \*(Aq<font size="\-1"> +<a href="http://bugreport\&.sun\&.com/bugreport/">Submit a bug or feature</a><br/> +Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&.<br/> +Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&. +Other names may be trademarks of their respective owners\&.</font>\*(Aq \e +\-group "Core Packages" "java\&.*:com\&.sun\&.java\&.*:org\&.omg\&.*" \e +\-group "Extension Packages" "javax\&.*" \e +\-J\-Xmx180m \e +@packages +.fi +.if n \{\ +.RE +.\} +プログラマティック・インタフェース.PP +Javadoc Access APIでは、新しいプロセスを実行しなくても、JavadocツールをJavaアプリケーションから直接起動できます。 +.PP +たとえば、次の文はコマンド\fIjavadoc \-d /home/html \-sourcepath /home/src \-subpackages java \-exclude java\&.net:java\&.lang com\&.example\fRと同等です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +import javax\&.tools\&.DocumentationTool; +import javax\&.tools\&.ToolProvider; + +public class JavaAccessSample{ + public static void main(String[] args){ + DocumentationTool javadoc = ToolProvider\&.getSystemDocumentationTool(); + int rc = javadoc\&.run( null, null, null, + "\-d", "/home/html", + "\-sourcepath", "home/src", + "\-subpackages", "java", + "\-exclude", "java\&.net:java\&.lang", + "com\&.example"); + } + } +.fi +.if n \{\ +.RE +.\} +.PP +\fIrun\fRメソッドの最初の3つの引数は、入力、標準出力、および標準エラー・ストリームを指定します。\fINull\fRは\fISystem\&.in\fR、\fISystem\&.out\fRおよび\fISystem\&.err\fRそれぞれのデフォルト値です。 +.SS "makefileの例" +.PP +ここでは、GNU +\fImakefile\fRの例を示します。\fImakefile\fRの引数は、一重引用符で囲みます。Windows +\fImakefile\fRの例については、Javadoc FAQの\fImakefiles\fRに関する項 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137483\&.html#makefiles)を参照してください +.sp +.if n \{\ +.RS 4 +.\} +.nf +javadoc \-sourcepath $(SRCDIR) \e /* Sets path for source files */ + \-overview $(SRCDIR)/overview\&.html \e /* Sets file for overview text */ + \-d /java/jdk/build/api \e /* Sets destination directory */ + \-use \e /* Adds "Use" files */ + \-splitIndex \e /* Splits index A\-Z */ + \-windowtitle $(WINDOWTITLE) \e /* Adds a window title */ + \-doctitle $(DOCTITLE) \e /* Adds a doc title */ + \-header $(HEADER) \e /* Adds running header text */ + \-bottom $(BOTTOM) \e /* Adds text at bottom */ + \-group $(GROUPCORE) \e /* 1st subhead on overview page */ + \-group $(GROUPEXT) \e /* 2nd subhead on overview page */ + \-J\-Xmx180m \e /* Sets memory to 180MB */ + java\&.lang java\&.lang\&.reflect \e /* Sets packages to document */ + java\&.util java\&.io java\&.net \e + java\&.applet -.fl -WINDOWTITLE = 'Java(TM) SE 7 API Specification' -.fl -DOCTITLE = 'Java(TM) Platform Standard Edition 7 API Specification' -.fl -HEADER = '<b>Java(TM) SE 7</font>' -.fl -BOTTOM = '<font size="\-1"> -.fl - <a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/> -.fl - Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/> -.fl - Oracle is a registered trademark of Oracle Corporation and/or its affiliates. -.fl - その他の名称は、それぞれの所有者の商標または登録商標です。</font>' -.fl -GROUPCORE = '"Core Packages" "java.*:com.sun.java.*:org.omg.*"' -.fl -GROUPEXT = '"Extension Packages" "javax.*"' -.fl -SRCDIR = '/java/jdk/1.7.0/src/share/classes' -.fl -\fP +WINDOWTITLE = \*(AqJava(TM) SE 7 API Specification\*(Aq +DOCTITLE = \*(AqJava(TM) Platform Standard Edition 7 API Specification\*(Aq +HEADER = \*(Aq<b>Java(TM) SE 7</font>\*(Aq +BOTTOM = \*(Aq<font size="\-1"> + <a href="http://bugreport\&.sun\&.com/bugreport/">Submit a bug or feature</a><br/> + Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&.<br/> + Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&. + Other names may be trademarks of their respective owners\&.</font>\*(Aq +GROUPCORE = \*(Aq"Core Packages" "java\&.*:com\&.sun\&.java\&.*:org\&.omg\&.*"\*(Aq +GROUPEXT = \*(Aq"Extension Packages" "javax\&.*"\*(Aq +SRCDIR = \*(Aq/java/jdk/1\&.7\&.0/src/share/classes\*(Aq .fi -.LP -Makefile の引数は、単一引用符で囲みます。 -.LP -\f3注\fP -.RS 3 -.TP 2 -o -\-windowtitle \f2オプションを省略すると、\fP Javadoc ツールによってドキュメントタイトルがウィンドウタイトルにコピーされます。 \f2\-windowtitle\fP のテキストは基本的に \f2\-doctitle\fP のものと同じですが、HTML タグを含まない点が異なります。これは、HTML タグが raw テキストとしてウィンドウタイトル内に表示されるのを防ぐためです。 -.TP 2 -o -ここで行っているように \f2\-footer\fP オプションを省略すると、Javadoc ツールによってヘッダーのテキストがフッターにコピーされます。 -.TP 2 -o -この例では必要ありませんが、\-\f2classpath\fP と \-\f2link\fP も重要なオプションです。 +.if n \{\ .RE -.SH "トラブルシューティング" -.SS -一般的なトラブルシューティング -.RS 3 -.TP 2 -o -\f3Javadoc FAQ\fP \- 一般的なバグおよびトラブルシューティングのヒントは、 -.na -\f2「Javadoc FAQ」\fP @ -.fi -http://java.sun.com/j2se/javadoc/faq/index.html#B で参照できます。 -.TP 2 -o -\f3バグおよび制限事項\fP \- バグの一部は、「Important Bug Fixes and Changes」 でも参照できます。 -.TP 2 -o -\f3バージョン番号\fP \- 「バージョン番号」を参照してください。 -.TP 2 -o -\f3有効なクラスだけをドキュメント化\fP \- パッケージをドキュメント化するとき、Javadoc は、有効なクラス名で構成されているファイルのみを読み込みます。たとえば、ファイル名にハイフン「\-」を含めることで、javadoc によるファイルの解析を防ぐことができます。 +.\} +.SS "注意" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-windowtitle\fRオプションを省略すると、\fIjavadoc\fRコマンドによってドキュメント・タイトルがウィンドウ・タイトルにコピーされます。\fI\-windowtitle\fRオプションのテキストは、\fI\-doctitle\fRオプションと同じですが、HTMLタグは含まれません。これは、HTMLタグが、ウィンドウ・タイトル内にそのままのテキストとして表示されるのを防ぐためです。 .RE -.SS -エラーと警告 -.LP -エラーおよび警告メッセージには、ファイル名と宣言行 (ドキュメンテーションコメント内の特定の行ではない) の行番号が含まれます。 -.RS 3 -.TP 2 -o -\f2"error: cannot read: Class1.java"\fP Javadoc ツールはカレントディレクトリに Class1.java クラスをロードしようとしています。絶対パスまたは相対パスとともに表示されるクラス名は、この例の場合 \f2./Class1.java と同じです\fP。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-footer\fRオプションを省略すると、\fIjavadoc\fRコマンドによってヘッダー・テキストがフッターにコピーされます。 .RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +この例では必要ありませんが、\fI\-classpath\fRと\fI\-link\fRも重要なオプションです。 +.RE +.SH "一般的なトラブルシューティング" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIjavadoc\fRコマンドは有効なクラス名を含むファイルのみを読み取ります。\fIjavadoc\fRコマンドがファイルの内容を正しく読み取っていない場合は、クラス名が有効であることを確認します。ソース・ファイルの処理を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +共通の不具合およびトラブルシューティングのヒントについては、Javadoc FAQ +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137483\&.html)を参照してください。 +.RE +.SH "エラーと警告" +.PP +エラーおよび警告メッセージには、ファイル名と宣言行(ドキュメンテーション・コメント内の特定の行ではない)の行番号が含まれます。 +.PP +たとえば、メッセージ\fI「エラー: Class1\&.javaを読み込めません」\fRは、\fIjavadoc\fRコマンドが\fIClass1\&.jav\fR\fIa\fRを現在のディレクトリにロードしようとしていることを意味します。クラス名はそのパス(絶対または相対)で表示されます。 .SH "環境" -.RS 3 -.TP 3 -CLASSPATH -Javadoc がユーザークラスのファイルを探すときに使うパスを指定する環境変数です。この環境変数は、 \f2\-classpath\fP オプションによってオーバーライドされます。ディレクトリは、次のようにコロンで区切ります。 -.:/home/classes:/usr/local/java/classes +.PP +CLASSPATH +.RS 4 +\fICLASSPATH\fRは、\fIjavadoc\fRコマンドがユーザー・クラス・ファイルの検出に使用するパスを提供する環境変数です。この環境変数は、\fI\-classpath\fRオプションによってオーバーライドされます。ディレクトリはセミコロン(Windowsの場合)またはコロン(Oracle Solarisの場合)で区切ります。 +.sp +\fBWindowsの例\fR: +\fI\&.;C:\eclasses;C:\ehome\ejava\eclasses\fR +.sp +\fBOracle Solarisの例\fR: +\fI\&.:/home/classes:/usr/local/java/classes\fR .RE .SH "関連項目" -.RS 3 -.TP 2 -o -javac(1) -.TP 2 -o -java(1) -.TP 2 -o -jdb(1) -.TP 2 -o -javah(1) -.TP 2 -o -javap(1) -.TP 2 -o -.na -\f2Javadoc のホームページ\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-jsp\-135444.html -.TP 2 -o -.na -\f2How to Write Doc Comments for Javadoc\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html -.TP 2 -o -.na -\f2クラスパスの設定\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#general -.TP 2 -o -.na -\f2javac と javadoc がクラスを検索する方法\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.html#srcfiles (tools.jar) +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javac(1) .RE - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javap(1) +.RE +.SH "関連ドキュメント" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Javadocテクノロジ +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/index\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +クラスの検出方法 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +JavadocツールでのDocコメントの記述方法 +(http://www\&.oracle\&.com/technetwork/java/javase/documentation/index\-137868\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +URLメモ、Uniform Resource Locators +(http://www\&.ietf\&.org/rfc/rfc1738\&.txt) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +HTML標準、HTML Document Representation (4197265および4137321) +(http://www\&.w3\&.org/TR/REC\-html40/charset\&.html#h\-5\&.2\&.2) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/javah.1 b/jdk/src/solaris/doc/sun/man/man1/ja/javah.1 index b9c445d6b80..e88dfbfaabd 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/javah.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/javah.1 @@ -1,139 +1,220 @@ -." 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 -." 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 javah 1 "07 May 2011" - -.LP -.SH "名前" -javah \- C ヘッダーとスタブファイルジェネレータ -.LP -.LP -\f3javah\fP は、Java クラスから C ヘッダーファイルと C ソースファイルを作成します。これらのファイルは、Java プログラミング言語で書かれたコードと、C などのその他の言語で書かれたコードを接続し、コードが相互に作用するようにします。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: javah +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "javah" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +javah \- JavaクラスからCヘッダーとソース・ファイルを生成します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -javah [ \fP\f3options\fP\f3 ] fully\-qualified\-classname. . . -.fl -\fP +\fIjavah\fR [ \fIoptions\fR ] f\fIully\-qualified\-class\-name \&.\&.\&.\fR .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIfully\-qualified\-class\-name\fR +.RS 4 +Cヘッダーとソース・ファイルに変換されるクラスの完全修飾された場所。 +.RE .SH "説明" -.LP -.LP -\f3javah\fP は、ネイティブメソッドを実装するために必要な C ヘッダーとソースファイルを生成します。作成されたヘッダーとソースファイルは、ネイティブソースコードからオブジェクトのインスタンス変数を参照するために C プログラムによって使用されます。.h ファイルは、対応するクラスと一致する配置を持つ構造体定義を含みます。構造体のフィールドは、クラスのインスタンス変数に対応します。 -.LP -.LP -ヘッダーファイルとその中で宣言される構造体の名前はクラスの名前から派生します。\f3javah\fP に渡されるクラスがパッケージの中にある場合、パッケージ名はヘッダーファイル名と構造体名の両方に付加されます。下線 (_) が名前の区切り文字として使用されます。 -.LP -.LP -デフォルトでは \f3javah\fP は、コマンド行にリストされる各クラスのヘッダーファイルを作成し、現在のディレクトリにファイルを置きます。ソースファイルを作成するには、\f2\-stubs\fP オプションを使用してください。1 つのファイルの中に、リストされたすべてのクラスの結果を連結するには、\f2\-o\fP オプションを使用してください。 -.LP -.LP -新しいネイティブメソッドインタフェースである Java Native Interface (JNI) は、ヘッダー情報またはスタブファイルを必要としません。現在では、\f3javah\fP は、JNI 形式のネイティブメソッドに必要なネイティブメソッド機能プロトタイプを生成します。デフォルトでは、\f3javah\fP は JNI 形式で出力され、その結果は .h ファイルに格納されます。 -.LP +.PP +\fIjavah\fRコマンドは、ネイティブ・メソッドを実装するために必要なCヘッダーとソース・ファイルを生成します。作成されたヘッダーとソース・ファイルは、ネイティブ・ソース・コードからオブジェクトのインスタンス変数を参照するためにCプログラムによって使用されます。\fI\&.h\fRファイルは、対応するクラスと一致する配置を持つ\fIstruct\fR定義を含みます。\fIstruct\fRのフィールドは、クラスのインスタンス変数に対応します。 +.PP +ヘッダー・ファイルとその中で宣言される構造体の名前はクラスの名前から派生します。\fIjavah\fRコマンドに渡されるクラスがパッケージの中にある場合、パッケージ名はヘッダー・ファイル名と構造体名の両方の先頭に付加されます。下線(_)が名前の区切り文字として使用されます。 +.PP +デフォルトでは\fIjavah\fRコマンドは、コマンドラインにリストされる各クラスのヘッダー・ファイルを作成し、現在のディレクトリにファイルを置きます。ソース・ファイルを作成するには、\fI\-stubs\fRオプションを使用してください。1つのファイルの中に、リストされたすべてのクラスの結果を連結するには、\fI\-o\fRオプションを使用してください。 +.PP +Java Native Interface (JNI)はヘッダー情報またはスタブ・ファイルを必要としません。\fIjavah\fRコマンドは引き続きJNI形式のネイティブ・メソッドに必要なネイティブ・メソッド関数プロトタイプの生成に使用できます。\fIjavah\fRコマンドはデフォルトでJNI形式の出力を生成し、その結果を\fI\&.h\fRファイルに格納します。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-o outputfile -コマンド行にリストされたすべてのクラスに対して、結果のヘッダーまたはソースファイルを連結して \f2outputfile\fP に格納します。\f3\-o\fP または \f3\-d\fP のどちらか一方だけが使われます。 -.TP 3 -\-d directory -\f3javah\fP がヘッダーファイルまたはスタブファイルを保存する、ディレクトリを設定します。\f3\-d\fP または \f3\-o\fP のどちらか一方だけが使われます。 -.TP 3 -\-stubs -\f3javah\fP が、Java オブジェクトファイルから C 宣言を生成します。 -.TP 3 -\-verbose -詳細出力を指定し、作成ファイルの状態に関するメッセージを、\f3javah\fP が標準出力に出力します。 -.TP 3 -\-help -\f3javah\fP の使用法についてのヘルプメッセージを出力します。 -.TP 3 -\-version -\f3javah\fP のバージョン情報を出力します。 -.TP 3 -\-jni -JNI 形式のネイティブファイル機能プロトタイプを含む出力ファイルを、\f3javah\fP が作成します。これは標準出力であるため、\f3\-jni\fP の使用はオプションです。 -.TP 3 -\-classpath path -クラスを探すために \f3javah\fP が使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 -.nf -\f3 -.fl - .:<your_path> -.fl -\fP -.fi -次に例を示します。 -.nf -\f3 -.fl - .:/home/avh/classes:/usr/local/java/classes -.fl -\fP -.fi -.LP -便宜上、 \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 プログラムが展開されていないワイルドカードを認識することはありません。 -.TP 3 -\-bootclasspath path -ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは \f2jre/lib/rt.jar\fP および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。 -.TP 3 -\-old -古い JDK1.0 形式のヘッダーファイルを生成するように指定します。 -.TP 3 -\-force -出力ファイルが常に書き込まれるように指定します。 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +.PP +\-o \fIoutputfile\fR +.RS 4 +コマンドラインにリストされたすべてのクラスに対して、結果のヘッダーまたはソース・ファイルを連結して出力ファイルに格納します。\fI\-o\fRまたは\fI\-d\fRのどちらかのみ使用できます。 .RE - -.LP -.SH "環境変数" -.LP -.RS 3 -.TP 3 -CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割されています。 -.nf -\f3 -.fl -.:/home/avh/classes:/usr/local/java/classes -.fl -\fP -.fi +.PP +\-d \fIdirectory\fR +.RS 4 +\fIjavah\fRがヘッダー・ファイルまたはスタブ・ファイルを保存する、ディレクトリを設定します。\fI\-d\fRまたは\fI\-o\fRのどちらかのみ使用できます。 +.RE +.PP +\-stubs +.RS 4 +\fIjavah\fRコマンドが、Javaオブジェクト・ファイルからC宣言を生成します。 +.RE +.PP +\-verbose +.RS 4 +詳細出力を指定し、作成ファイルの状態に関するメッセージを、\fIjavah\fRコマンドが\fI標準出力\fRに出力します。 +.RE +.PP +\-help +.RS 4 +\fIjavah\fRの使用方法についてのヘルプ・メッセージを出力します。 +.RE +.PP +\-version +.RS 4 +\fIjavah\fRコマンドのリリース情報を出力します。 +.RE +.PP +\-jni +.RS 4 +JNI形式のネイティブ・メソッド機能プロトタイプを含む出力ファイルを、\fIjavah\fRコマンドが作成します。これは標準出力であるため、\fI\-jni\fRの使用はオプションです。 +.RE +.PP +\-classpath \fIpath\fR +.RS 4 +クラスを探すために\fIjavah\fRコマンドが使用するパスを指定します。デフォルトまたは\fICLASSPATH\fR環境変数の設定をオーバーライドします。ディレクトリはOracle Solarisの場合はコロンで、Windowsの場合はセミコロンで区切られます。パスの一般的な形式は次のようになります。 +.sp +\fBOracle Solaris\fRの場合: +.sp +\&.:\fIyour\-path\fR +.sp +例: +\fI\&.:/home/avh/classes:/usr/local/java/classes\fR +.sp +\fBWindows\fRの場合: +.sp +\&.;\fIyour\-path\fR +.sp +例: +\fI\&.;C:\eusers\edac\eclasses;C:\etools\ejava\eclasses\fR +.sp +便宜上、*のベース名を含むクラス・パス要素は、\fI\&.jar\fRまたは\fI\&.JAR\fRを拡張子に持つディレクトリ内のすべてのファイルのリストを指定するのと同等とみなされます。 +.sp +たとえば、ディレクトリ\fImydir\fRに\fIa\&.jar\fRと\fIb\&.JAR\fRが含まれている場合、クラス・パス要素\fImydir/*\fRは\fIA\fR\fI\&.jar:b\&.JAR\fRに展開されますが、JARファイルの順番は未指定となります。このリストには、隠しファイルも含め、指定されたディレクトリ内のすべてのJARファイルが含まれます。*からなるクラス・パス・エントリは、現在のディレクトリ内のすべてのJARファイルのリストに展開されます。\fICLASSPATH\fR環境変数も、定義時には同様に展開されます。クラス・パスのワイルドカードの展開は、Java仮想マシン(JVM)の開始前に行われます。Javaプログラムは、環境を問い合せる場合を除き、展開されていないワイルドカードを参照しません。たとえば、\fISystem\&.getenv("CLASSPATH")\fRをコールして問い合せる場合です。 +.RE +.PP +\-bootclasspath \fIpath\fR +.RS 4 +ブートストラップ・クラスをロードするパスを指定します。ブートストラップ・クラスは、デフォルトでは\fIjre\elib\ert\&.jar\fRおよび他のいくつかのJARファイルにある、コアJavaプラットフォームを実装するクラスです。 +.RE +.PP +\-old +.RS 4 +古いJDK 1\&.0形式のヘッダー・ファイルを生成するように指定します。 +.RE +.PP +\-force +.RS 4 +出力ファイルが常に書き込まれるように指定します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンに\fIoption\fRを渡します。\fIoption\fRには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 .RE - -.LP .SH "関連項目" -.LP -.LP -javac(1)、java(1)、jdb(1)、javap(1)、javadoc(1) -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javap(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javadoc(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/javap.1 b/jdk/src/solaris/doc/sun/man/man1/ja/javap.1 index 1854f9d552e..152821dfebe 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/javap.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/javap.1 @@ -1,317 +1,344 @@ -." 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 -." 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 javap 1 "07 May 2011" - -.LP -.SH "名前" -javap \- Java クラスファイル逆アセンブラ -.LP -.LP -クラスファイルを逆アセンブルします。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: javap +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "javap" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +javap \- 1つ以上のクラス・ファイルを逆アセンブルします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -javap [ \fP\f3options\fP\f3 ] classes -.fl -\fP +\fIjavap\fR [\fIoptions\fR] \fIclassfile\fR\&.\&.\&. .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIclassfile\fR +.RS 4 +注釈の処理対象となる、空白で区切った1つ以上のクラス(DocFooter\&.classなど)。クラス・パスで検出できるクラスを、ファイル名またはURL(\fIfile:///home/user/myproject/src/DocFooter\&.class\fRなど)で指定できます。 +.RE .SH "説明" -.LP -.LP -\f3javap\fP コマンドは、1 つまたは複数のクラスファイルを逆アセンブルします。その出力は指定するオプションにより異なります。オプションを指定しない場合、\f3javap\fP は、そのパッケージ、渡されたクラスの protected および public のフィールドとメソッドを出力します。\f3javap\fP はその出力を標準出力に表示します。 -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。 -.TP 3 -classes -注釈の処理対象となる 1 つ以上のクラス \f2DocFooter.class\fP など) のリスト (空白区切り)。クラスパスで見つかるクラスは、ファイル名 ( \f2/home/user/myproject/src/DocFooter.class\fP など) または URL ( \f2file:///home/user/myproject/src/DocFooter.class\fP など) で指定できます。 -.RE - -.LP -.LP -たとえば、次のクラス宣言をコンパイルするとします。 -.LP -.nf -\f3 -.fl -import java.awt.*; -.fl -import java.applet.*; -.fl - -.fl -public class DocFooter extends Applet { -.fl - String date; -.fl - String email; -.fl - -.fl - public void init() { -.fl - resize(500,100); -.fl - date = getParameter("LAST_UPDATED"); -.fl - email = getParameter("EMAIL"); -.fl - } -.fl - -.fl - public void paint(Graphics g) { -.fl - g.drawString(date + " by ",100, 15); -.fl - g.drawString(email,290,15); -.fl - } -.fl -} -.fl -\fP -.fi - -.LP -.LP -\f3javap DocFooter.class\fP がもたらす出力は次のようになります。 -.LP -.nf -\f3 -.fl -Compiled from "DocFooter.java" -.fl -public class DocFooter extends java.applet.Applet { -.fl - java.lang.String date; -.fl - java.lang.String email; -.fl - public DocFooter(); -.fl - public void init(); -.fl - public void paint(java.awt.Graphics); -.fl -} -.fl -\fP -.fi - -.LP -.LP -\f3javap \-c DocFooter.class\fP がもたらす出力は次のようになります。 -.LP -.nf -\f3 -.fl -Compiled from "DocFooter.java" -.fl -public class DocFooter extends java.applet.Applet { -.fl - java.lang.String date; -.fl - -.fl - java.lang.String email; -.fl - -.fl - public DocFooter(); -.fl - Code: -.fl - 0: aload_0 -.fl - 1: invokespecial #1 // Method java/applet/Applet."<init>":()V -.fl - 4: return -.fl - -.fl - public void init(); -.fl - Code: -.fl - 0: aload_0 -.fl - 1: sipush 500 -.fl - 4: bipush 100 -.fl - 6: invokevirtual #2 // Method resize:(II)V -.fl - 9: aload_0 -.fl - 10: aload_0 -.fl - 11: ldc #3 // String LAST_UPDATED -.fl - 13: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String; -.fl - 16: putfield #5 // Field date:Ljava/lang/String; -.fl - 19: aload_0 -.fl - 20: aload_0 -.fl - 21: ldc #6 // String EMAIL -.fl - 23: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String; -.fl - 26: putfield #7 // Field email:Ljava/lang/String; -.fl - 29: return -.fl - -.fl - public void paint(java.awt.Graphics); -.fl - Code: -.fl - 0: aload_1 -.fl - 1: new #8 // class java/lang/StringBuilder -.fl - 4: dup -.fl - 5: invokespecial #9 // Method java/lang/StringBuilder."<init>":()V -.fl - 8: aload_0 -.fl - 9: getfield #5 // Field date:Ljava/lang/String; -.fl - 12: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; -.fl - 15: ldc #11 // String by -.fl - 17: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; -.fl - 20: invokevirtual #12 // Method java/lang/StringBuilder.toString:()Ljava/lang/String; -.fl - 23: bipush 100 -.fl - 25: bipush 15 -.fl - 27: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V -.fl - 30: aload_1 -.fl - 31: aload_0 -.fl - 32: getfield #7 // Field email:Ljava/lang/String; -.fl - 35: sipush 290 -.fl - 38: bipush 15 -.fl - 40: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V -.fl - 43: return -.fl -} -.fl -\fP -.fi - -.LP +.PP +\fIjavap\fRコマンドは、1つまたは複数のクラス・ファイルを逆アセンブルします。その出力は指定するオプションにより異なります。オプションを指定しない場合、\fIjavap\fRコマンドは、そのパッケージ、渡されたクラスのprotectedおよびpublicのフィールドとメソッドを出力します。\fIjavap\fRコマンドはその出力を\fI標準出力\fRに表示します。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-help \-\-help \-? -\f3javap\fP のヘルプメッセージを出力します。 -.TP 3 -\-version -バージョン情報を表示します。 -.TP 3 -\-l -行番号と局所変数テーブルを表示します。 -.TP 3 -\-public -public クラスおよびメンバーだけを表示します。 -.TP 3 -\-protected -protected および public のクラスとメンバーだけを表示します。 -.TP 3 -\-package -package、protected、および public のクラスとメンバーだけを表示します。これはデフォルトの設定です。 -.TP 3 -\-private \-p -すべてのクラスとメンバーを表示します。 -.TP 3 -\-Jflag -ランタイムシステムに直接 \f2flag\fP を渡します。使用例を次に示します。 -.nf -\f3 -.fl -javap \-J\-version -.fl -javap \-J\-Djava.security.manager \-J\-Djava.security.policy=MyPolicy MyClassName -.fl -\fP -.fi -.TP 3 -\-s -内部の型シグニチャーを出力します。 -.TP 3 -\-sysinfo -処理中のクラスのシステム情報 (パス、サイズ、日付、MD5 ハッシュ) を表示します。 -.TP 3 -\-constants -static final 定数を表示します。 -.TP 3 -\-c -クラスの各メソッドのために逆アセンブルされるコード、すなわち Java バイトコードから成る命令を表示します。これらは -.na -\f2「Java Virtual Machine Specification」\fP @ -.fi -http://java.sun.com/docs/books/vmspec/にドキュメント化されています。 -.TP 3 -\-verbose -メソッドのスタックサイズ、および \f2locals\fP と \f2args\fP の数を出力します。 -.TP 3 -\-classpath path -\f3javap\fP がクラスを探すために使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。 -.TP 3 -\-bootclasspath path -ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは \f2jre/lib/rt.jar\fP および他のいくつかの JAR ファイル にある、コア Java 2 プラットフォームを実装するクラスです。 -.TP 3 -\-extdirs dirs -インストールされた拡張機能を検索する場所をオーバーライドします。拡張機能は、デフォルトでは \f2java.ext.dirs\fP にあります。 +.PP +\-help, \-\-help, \-? +.RS 4 +\fIjavap\fRコマンドについてのヘルプ・メッセージを出力します。 .RE - -.LP -.SH "関連項目" -.LP -.LP -javac(1)、java(1)、jdb(1)、javah(1)、javadoc(1) -.LP +.PP +\-version +.RS 4 +リリース情報を出力します。 +.RE +.PP +\-l +.RS 4 +行番号とローカル変数表を出力します。 +.RE +.PP +\-public +.RS 4 +publicクラスおよびメンバーのみ表示します。 +.RE +.PP +\-protected +.RS 4 +protectedおよびpublicのクラスとメンバーのみを表示します。 +.RE +.PP +\-private, \-p +.RS 4 +すべてのクラスとメンバーを表示します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +指定されたオプションをJVMに渡します。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +javap \-J\-version +javap \-J\-Djava\&.security\&.manager \-J\-Djava\&.security\&.policy=MyPolicy MyClassName +.fi +.if n \{\ +.RE +.\} +JVMオプションの詳細は、コマンドのマニュアルを参照してください。 +.RE +.PP +\-s +.RS 4 +内部の型シグニチャを出力します。 +.RE +.PP +\-sysinfo +.RS 4 +処理中のクラスのシステム情報(パス、サイズ、日付、MD5ハッシュ)を表示します。 +.RE +.PP +\-constants +.RS 4 +\fIstatic final\fR定数を表示します。 +.RE +.PP +\-c +.RS 4 +クラスの各メソッドのために逆アセンブルされるコード、すなわちJavaバイトコードからなる命令を表示します。 +.RE +.PP +\-verbose +.RS 4 +メソッドのスタック・サイズ、localsとargumentsの数を出力します。 +.RE +.PP +\-classpath \fIpath\fR +.RS 4 +クラスを探すために\fIjavap\fRコマンドが使用するパスを指定します。デフォルトまたは\fICLASSPATH\fR環境変数の設定をオーバーライドします。 +.RE +.PP +\-bootclasspath \fIpath\fR +.RS 4 +ブートストラップ・クラスをロードするパスを指定します。ブートストラップ・クラスは、デフォルトでは\fIjre/lib/rt\&.jar\fRおよび他のいくつかのJARファイルにある、コアJavaプラットフォームを実装するクラスです。 +.RE +.PP +\-extdir \fIdirs\fR +.RS 4 +インストールされた拡張機能を検索する場所をオーバーライドします。拡張機能のデフォルト位置は\fIjava\&.ext\&.dirs\fRです。 +.RE +.SH "例" +.PP +次の\fIDocFooter\fRクラスをコンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +import java\&.awt\&.*; +import java\&.applet\&.*; +public class DocFooter extends Applet { + String date; + String email; + + public void init() { + resize(500,100); + date = getParameter("LAST_UPDATED"); + email = getParameter("EMAIL"); + } + + public void paint(Graphics g) { + g\&.drawString(date + " by ",100, 15); + g\&.drawString(email,290,15); + } +} +.fi +.if n \{\ +.RE +.\} +.PP +\fIjavap DocFooter\&.class\fRコマンドからの出力は次を生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Compiled from "DocFooter\&.java" +public class DocFooter extends java\&.applet\&.Applet { + java\&.lang\&.String date; + java\&.lang\&.String email; + public DocFooter(); + public void init(); + public void paint(java\&.awt\&.Graphics); +} +.fi +.if n \{\ +.RE +.\} +.PP +\fIjavap \-c DocFooter\&.class\fRコマンドからの出力は次を生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Compiled from "DocFooter\&.java" +public class DocFooter extends java\&.applet\&.Applet { + java\&.lang\&.String date; + java\&.lang\&.String email; + + public DocFooter(); + Code: + 0: aload_0 + 1: invokespecial #1 // Method +java/applet/Applet\&."<init>":()V + 4: return + + public void init(); + Code: + 0: aload_0 + 1: sipush 500 + 4: bipush 100 + 6: invokevirtual #2 // Method resize:(II)V + 9: aload_0 + 10: aload_0 + 11: ldc #3 // String LAST_UPDATED + 13: invokevirtual #4 // Method + getParameter:(Ljava/lang/String;)Ljava/lang/String; + 16: putfield #5 // Field date:Ljava/lang/String; + 19: aload_0 + 20: aload_0 + 21: ldc #6 // String EMAIL + 23: invokevirtual #4 // Method + getParameter:(Ljava/lang/String;)Ljava/lang/String; + 26: putfield #7 // Field email:Ljava/lang/String; + 29: return + + public void paint(java\&.awt\&.Graphics); + Code: + 0: aload_1 + 1: new #8 // class java/lang/StringBuilder + 4: dup + 5: invokespecial #9 // Method + java/lang/StringBuilder\&."<init>":()V + 8: aload_0 + 9: getfield #5 // Field date:Ljava/lang/String; + 12: invokevirtual #10 // Method + java/lang/StringBuilder\&.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 15: ldc #11 // String by + 17: invokevirtual #10 // Method + java/lang/StringBuilder\&.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 20: invokevirtual #12 // Method + java/lang/StringBuilder\&.toString:()Ljava/lang/String; + 23: bipush 100 + 25: bipush 15 + 27: invokevirtual #13 // Method + java/awt/Graphics\&.drawString:(Ljava/lang/String;II)V + 30: aload_1 + 31: aload_0 + 32: getfield #7 // Field email:Ljava/lang/String; + 35: sipush 290 + 38: bipush 15 + 40: invokevirtual #13 // Method +java/awt/Graphics\&.drawString:(Ljava/lang/String;II)V + 43: return +} +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javac(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jdb(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javadoc(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jcmd.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jcmd.1 new file mode 100644 index 00000000000..d79de5a2d19 --- /dev/null +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jcmd.1 @@ -0,0 +1,154 @@ +'\" t +.\" Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jcmd +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jcmd" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jcmd \- 実行中のJava仮想マシン(JVM)に診断コマンド・リクエストを送信します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjcmd\fR [\fI\-l\fR|\fI\-h\fR|\fI\-help\fR] +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjcmd\fR \fIpid\fR|\fImain\-class\fR \fIPerfCounter\&.print\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjcmd\fR \fIpid\fR|\fImain\-class\fR \fI\-f\fR \fIfilename\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjcmd\fR \fIpid\fR|\fImain\-class\fR \fIcommand\fR[ \fIarguments\fR] +.fi +.if n \{\ +.RE +.\} +.SH "説明" +.PP +\fIjcmd\fRユーティリティは、JVMに診断コマンド・リクエストを送信するために使用されます。これはJVMが稼働しているのと同じマシンで使用し、JVMの起動に使用したものと同じ有効ユーザーおよびグループ識別子を持っている必要があります。 +.PP +\fB注意:\fR +リモート・マシンから、または別の識別子で診断コマンドを起動するには、\fIcom\&.sun\&.management\&.DiagnosticCommandMBean\fRインタフェースを使用できます。\fIDiagnosticCommandMBean\fRインタフェースの詳細は、http://download\&.java\&.net/jdk8/docs/jre/api/management/extension/com/sun/management/DiagnosticCommandMBean\&.htmlにあるAPIドキュメントを参照してください。 +.PP +\fIjcmd\fRを引数なしまたは\fI\- l\fRオプションを指定して実行した場合は、実行中のJavaプロセス識別子のリストが、メイン・クラスおよびプロセスの起動に使用されたコマンドライン引数とともに出力されます。\fI\-h\fRまたは\fI\-help\fRオプションを指定して\fIjcmd\fRを実行すると、ツールのヘルプ・メッセージが出力されます。 +.PP +プロセス識別子(\fIpid\fR)またはメイン・クラス(\fImain\-class\fR)を最初の引数として指定した場合、\fIjcmd\fRは、識別子を指定した場合はJavaプロセスに、メイン・クラスの名前を指定した場合はすべてのJavaプロセスに診断コマンド・リクエストを送信します。プロセス識別子として\fI0\fRを指定して、すべての使用可能なJavaプロセスに診断コマンド・リクエストを送信することもできます。診断コマンド・リクエストとして、次のいずれかを使用します。 +.PP +Perfcounter\&.print +.RS 4 +指定したJavaプロセスで使用可能なパフォーマンス・カウンタが出力されます。パフォーマンス・カウンタのリストはJavaプロセスによって異なる場合があります。 +.RE +.PP +\-f \fIfilename\fR +.RS 4 +診断コマンドを読み取り、指定したJavaプロセスに送信するファイルの名前。\fI\-f\fRオプションでのみ使用します。ファイル内の各コマンドは、1行で記述する必要があります。番号記号(\fI#\fR)で始まる行は無視されます。すべての行が読み取られるか、\fIstop\fRキーワードを含む行が読み取られると、ファイルの処理が終了します。 +.RE +.PP +\fIcommand\fR [\fIarguments\fR] +.RS 4 +指定されたJavaプロセスに送信するコマンド。指定したプロセスで使用できる診断コマンドのリストは、このプロセスに対して\fIhelp\fRコマンドを送信すれば表示されます。各診断コマンドに独自の引数セットがあります。コマンドの説明、構文および使用可能な引数のリストを表示するには、\fIhelp\fRコマンドの引数としてコマンド名を使用します。 +.sp +\fB注意:\fR +引数にスペースが含まれている場合は、一重引用符または二重引用符(\fI\*(Aq\fRまたは\fI"\fR)で囲む必要があります。加えて、オペレーティング・システム・シェルが引用符を処理しないように、バックスラッシュ(\fI\e\fR)で一重引用符または二重引用符をエスケープする必要があります。または、これらの引数を一重引用符で囲んでから、二重引用符で囲むこともできます(または二重引用符で囲んでから、一重引用符で囲む)。 +.RE +.SH "オプション" +.PP +各オプションは互いに排他的です。 +.PP +\-f \fIfilename\fR +.RS 4 +指定されたファイルからコマンドを読み取ります。このオプションは、最初の引数としてプロセス識別子またはメイン・クラスを指定する場合にのみ使用できます。ファイル内の各コマンドは、1行で記述する必要があります。番号記号(\fI#\fR)で始まる行は無視されます。すべての行が読み取られるか、\fIstop\fRキーワードを含む行が読み取られると、ファイルの処理が終了します。 +.RE +.PP +\-h, \-help +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.PP +\-l +.RS 4 +実行中のJavaプロセス識別子のリストをメイン・クラスおよびコマンドライン引数とともに出力します。 +.RE +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jconsole.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jconsole.1 index fc9c17c2a59..426fb365ba8 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jconsole.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jconsole.1 @@ -1,157 +1,156 @@ -." 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 -." 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 jconsole 1 "07 May 2011" - -.LP -.SH "名前" -jconsole \- Java 監視および管理コンソール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jconsole +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Javaトラブルシューティング、プロファイリング、モニタリングおよび管理ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jconsole" "1" "2013年11月21日" "JDK 8" "Javaトラブルシューティング、プロファイリング、モニタリン" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jconsole \- Javaアプリケーションを監視および管理するためのグラフィカル・コンソールを開始します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jconsole\fP [ \f2options\fP ] [ connection ... ] -.fl - -.fl +\fIjconsole\fR [ \fIoptions\fR ] [ connection \&.\&.\&. ] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -options -オプションを使用する場合、コマンド名の直後に記述してください。 -.TP 3 -connection = pid | host:port | jmxUrl -.RS 3 -.TP 2 -o -\f2pid\fPローカルの Java VM のプロセス ID。Java VM は、jconsole を実行しているユーザー ID と同じユーザー ID を使用して実行する必要があります。詳細については、 -.na -\f2「JMX 監視および管理」\fP @ -.fi -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 @ -.fi -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 を参照してください。 +.if n \{\ .RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 .RE - -.LP -.SH " 説明" -.LP -.LP -\f3jconsole\fP コマンドは、ローカルマシンまたはリモートマシン上の Java アプリケーションと仮想マシンの監視と管理を行うグラフィカルコンソールツールを起動します。 -.LP -.LP -Windows 上では、\f3jconsole\fP はコンソールウィンドウと関連付けられていません。ただし、なんらかの理由で \f3jconsole\fP コマンドが失敗すると、エラー情報を示すダイアログボックスが表示されます。 -.LP +.PP +connection = \fIpid\fR | \fIhost\fR:\fIport\fR | \fIjmxURL\fR +.RS 4 +\fIpid\fR値はローカルのJava仮想マシン(JVM)のプロセスIDです。JVMは\fIjconsole\fRコマンドを実行しているユーザーIDと同じユーザーIDで実行する必要があります。\fIhost:port\fR値はJVMが動作しているホスト・システムの名前と、JVMが開始したときにシステム・プロパティ\fIcom\&.sun\&.management\&.jmxremote\&.port\fRで指定したポート番号です。\fIjmxUrl\fR値は、JMXServiceURLで記述されている、接続されるJMXエージェントのアドレスです。 +.sp +\fIconnection\fRパラメータの詳細は、JMXテクノロジを使用したモニタリングおよび管理 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/agent\&.html)を参照してください +.sp +\fIJMXServiceURL\fRクラスの説明( +http://docs\&.oracle\&.com/javase/8/docs/api/javax/management/remote/JMXServiceURL\&.html)も参照してください +.RE +.SH "説明" +.PP +\fIjconsole\fRコマンドは、ローカル・マシンまたはリモート・マシン上のJavaアプリケーションと仮想マシンの監視と管理を行うグラフィカル・コンソール・ツールを起動します。 +.PP +Windows上では、\fIjconsole\fRコマンドはコンソール・ウィンドウと関連付けられていません。ただし、\fIjconsole\fRコマンドが失敗すると、エラー情報を示すダイアログ・ボックスが表示されます。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-interval=n -更新間隔を \f2n\fP 秒に設定します (デフォルトは 4 秒)。 -.TP 3 -\-notile -最初にウィンドウをタイリングしません (複数の接続のため)。 -.TP 3 -\-pluginpath plugins -JConsole プラグインの検索先となるディレクトリまたは JAR ファイルのリストを指定します。\f2plugins\fP パスには、次の名前のプロバイダ構成ファイルを含めてください。 -.br -.nf -\f3 -.fl - META\-INF/services/com.sun.tools.jconsole.JConsolePlugin -.fl -\fP -.fi -.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 行ずつ含まれています。 -.TP 3 -\-version -バージョン情報を出力して終了します。 -.TP 3 -\-help -ヘルプメッセージを出力して終了します。 -.TP 3 -\-J<flag> -jconsole が実行されている Java 仮想マシンに <flag> を渡します。 +.PP +\-interval\fI=n\fR +.RS 4 +更新間隔を\fIn\fR秒に設定します(デフォルトは4秒)。 +.RE +.PP +\-notile +.RS 4 +最初にウィンドウをタイリングしません(複数接続の場合)。 +.RE +.PP +\-pluginpath \fIplugins\fR +.RS 4 +\fIJConsole\fRプラグインを検索するディレクトリまたはJARファイルのリストを指定します。\fIplugins\fRパスには\fIMETA\-INF/services/com\&.sun\&.tools\&.jconsole\&.JConsolePlugin\fRという名前のプロバイダ構成ファイルを含んでいる必要があり、これにはプラグインごとに1行が含まれています。その行は\fIcom\&.sun\&.tools\&.jconsole\&.JConsolePlugin\fRクラスを実装しているクラスの完全修飾クラス名を指定します。 +.RE +.PP +\-version +.RS 4 +リリース情報を表示して終了します。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示します。 +.RE +.PP +\-J\fIflag\fR +.RS 4 +\fIjconsole\fRコマンドを実行したJVMに\fIflag\fRを渡します。 .RE - -.LP .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -.na -\f2JConsole の使用\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html -.TP 2 -o -.na -\f2「Java プラットフォームの監視および管理」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/management/index.html +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +JConsoleの使用 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/jconsole\&.html) .RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +JMXテクノロジを使用したモニタリングおよび管理 -.LP - +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/agent\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIJMXServiceURL\fRクラスの説明( +http://docs\&.oracle\&.com/javase/8/docs/api/javax/management/remote/JMXServiceURL\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jdb.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jdb.1 index 4904c9d8eab..f7bcabdec2f 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jdb.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jdb.1 @@ -1,326 +1,382 @@ -." Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." 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 jdb 1 "07 May 2011" - -.LP -.SH "名前" -jdb \- Java デバッガ -.LP -.LP -\f3jdb\fP は、Java 言語プログラムのバグを見つけて修正するために使用するツールです。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jdb +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jdb" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jdb \- Javaプラットフォーム・プログラムの不具合を検出および修正します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jdb\fP [ options ] [ class ] [ arguments ] -.fl +\fIjdb\fR [\fIoptions\fR] [\fIclassname\fR] [\fIarguments\fR] .fi - -.LP -.RS 3 -.TP 3 -options -次に示すコマンド行オプション -.TP 3 -class -デバッグを開始するクラスの名前 -.TP 3 -arguments -class の \f2main()\fP メソッドに渡す \f2引数\fP +.if n \{\ .RE - -.LP -.SH " 説明" -.LP -.LP -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 の検査とデバッグを行うことができます。 -.LP -.SS -jdb セッションの開始 -.LP -.LP -jdb セッションを開始するにはさまざまな方法があります。もっとも頻繁に使われるのは、デバッグするアプリケーションのメインクラスを使用して、\f3jdb\fP から新しい Java 仮想マシン (VM) を起動する方法です。コマンド行で、\f3java\fP の代わりに \f3jdb\fP コマンドを入力します。たとえば、アプリケーションのメインクラスが MyClass の場合は、JDB 環境でデバッグするときに次のコマンドを使用します。 -.LP +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIclass\fRname +.RS 4 +デバッグするメイン・クラスの名前。 +.RE +.PP +\fIarguments\fR +.RS 4 +classの\fImain()\fRメソッドに渡す引数。 +.RE +.SH "説明" +.PP +Javaデバッガ(JDB)は、Javaクラス用の簡単なコマンドライン・デバッガです。\fIjdb\fRコマンドとそのオプションはJDBを呼び出します。\fIjdb\fRコマンドは、JDBA (Java Platform Debugger Architecture)を視覚的に実行し、ローカルまたはリモートのJava仮想マシン(JVM)の検査とデバッグを行うことができます。Java Platform Debugger Architecture (JDBA) +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html)を参照してください。 +.SS "JDBセッションの開始" +.PP +JDBセッションを開始するには様々な方法があります。最も頻繁に使用されるのは、デバッグするアプリケーションのメイン・クラスを使用して、JDBから新しいJVMを起動する方法です。コマンドラインで、\fIjava\fRコマンドのかわりに\fIjdb\fRコマンドを入力します。たとえば、アプリケーションのメイン・クラスが\fIMyClass\fRの場合は、JDB環境でデバッグするときに次のコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % jdb MyClass -.fl -\fP +jdb MyClass .fi - -.LP -.LP -この方法で起動すると、\f3jdb\fP は、指定されたパラメータを使って 2 つ目の Java VM を呼び出します。次に、指定されたクラスをロードして、クラスの最初の命令を実行する前に VM を停止させます。 -.LP -.LP -\f3jdb\fP のもう 1 つの使用方法は、すでに起動している Java VM に jdb を接続することです。jdb が接続する VM を、その実行中に起動するための構文を次に示します。これは、インプロセスデバッグ用ライブラリをロードし、接続の種類を指定します。 -.LP +.if n \{\ +.RE +.\} +.PP +この方法で起動すると、\fIjdb\fRコマンドは、指定されたパラメータを使用して2つ目のJVMを呼び出します。次に、指定されたクラスをロードして、クラスの最初の命令を実行する前にJVMを停止させます。 +.PP +\fIjdb\fRコマンドのもう1つの使用方法は、すでに実行中のJVMにjdbを接続することです。\fIjdb\fRコマンドが接続するVMを、その実行中に起動するための構文を次に示します。これは、インプロセス・デバッグ用ライブラリをロードし、接続の種類を指定します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\-agentlib:jdwp=transport=dt_socket,server=y,suspend=n -.fl -\fP +java \-agentlib:jdwp=transport=dt_socket,server=y,suspend=n MyClass .fi - -.LP -.LP -たとえば、次のコマンドは、MyClass アプリケーションを実行して、\f3jdb\fP があとでそのアプリケーションに接続できるようにします。 -.LP +.if n \{\ +.RE +.\} +.PP +次のコマンドを使用して、\fIjdb\fRコマンドをJVMに接続できます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % java \-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n MyClass -.fl -\fP +jdb \-attach 8000 .fi - -.LP -.LP -次のコマンドを使用して、\f3jdb\fP を VM に接続できます。 -.LP +.if n \{\ +.RE +.\} +.PP +この場合、\fIjdb\fRコマンドは新しいJVMを起動するかわりに既存のJVMに接続されるため、\fIjdb\fRコマンドラインに\fIMyClass\fR引数は指定しません。 +.PP +デバッガをJVMに接続するには他にも様々な方法があり、すべて\fIjdb\fRコマンドでサポートされています。接続オプションについては、Java Platform Debugger Architectureのドキュメントを参照してください。 +.SS "基本jdbコマンド" +.PP +基本的な\fIjdb\fRコマンドの一覧を示します。JDBがサポートするコマンドはこれ以外にもあり、それらは\fI\-help\fRオプションを使用して表示できます。 +.PP +helpまたは? +.RS 4 +\fIhelp\fRまたは\fI?\fRコマンドは、認識されたコマンドのリストに簡潔な説明を付けて表示します。 +.RE +.PP +run +.RS 4 +JDBを起動してブレークポイントを設定したあとに、\fIrun\fRコマンドを使用して、デバッグするアプリケーションの実行を開始できます。\fIrun\fRコマンドは、既存のVMに接続している場合とは異なり、デバッグするアプリケーションが\fIjdb\fRから起動したときにのみ使用できます。 +.RE +.PP +cont +.RS 4 +ブレークポイント、例外、またはステップ実行の後で、デバッグするアプリケーションの実行を継続します。 +.RE +.PP +print +.RS 4 +Javaオブジェクトおよびプリミティブ値を表示します。プリミティブ型の変数またはフィールドの場合には、実際の値が出力されます。オブジェクトの場合には、短い説明が出力されます。オブジェクトの詳細を取得する方法を探すには、dumpコマンドを参照してください。 +.sp +\fB注意:\fR +ローカル変数を表示するには、含んでいるクラスが\fIjavac \-g\fRオプションを使用してコンパイルされている必要があります。 +.sp +\fIprint\fRコマンドは、次に示すような、メソッド呼出しを使用したものなど、多くの簡単なJava式をサポートします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - % jdb \-attach 8000 -.fl -\fP +print MyClass\&.myStaticField +print myObj\&.myInstanceField +print i + j + k (i, j, k are primities and either fields or local variables) +print myObj\&.myMethod() (if myMethod returns a non\-null) +print new java\&.lang\&.String("Hello")\&.length() .fi - -.LP -.LP -この場合、\f3jdb\fP は新しい VM を起動する代わりに既存の VM に接続されるため、\f3jdb\fP コマンド行には「MyClass」は指定しません。 -.LP -.LP -デバッガを VM に接続するにはほかにもさまざまな方法があり、すべて \f3jdb\fP でサポートされています。接続オプションについては、Java Platform Debugger Architecture の -.na -\f2ドキュメント\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.htmlを参照してください。\f3jdb\fP で使用するために J2SE 1.4.2 以前の VM を起動する方法については、 -.na -\f21.4.2 のドキュメント\fP @ -.fi -http://java.sun.com/j2se/1.4.2/docs/guide/jpda/conninv.htmlを参照してください。 -.LP -.SS -基本 jdb コマンド -.LP -.LP -基本的な \f3jdb\fP コマンドの一覧を示します。Java デバッガがサポートするコマンドはこれ以外にもあり、それらは \f3jdb\fP の \f2help\fP コマンドを使用して表示できます。 -.LP -.RS 3 -.TP 3 -help または ? -もっとも重要な \f3jdb\fP コマンド \f2help\fP は、認識されたコマンドのリストに簡潔な説明を付けて表示します。 -.TP 3 -run -\f3jdb\fP を起動して必要なブレークポイントを設定したあとに、このコマンドを使用して、デバッグするアプリケーションの実行を開始できます。このコマンドは、既存の VM に接続している場合とは異なり、デバッグするアプリケーションが \f3jdb\fP から起動したときにだけ使用できます。 -.TP 3 -cont -ブレークポイント、例外、またはステップ実行のあとで、デバッグするアプリケーションの実行を継続します。 -.TP 3 -print -Java オブジェクトおよびプリミティブ値を表示します。プリミティブ型の変数またはフィールドの場合には、実際の値が出力されます。オブジェクトの場合には、短い説明が出力されます。オブジェクトについては、以降の \f2dump\fP コマンドの説明を参照してください。 -.LP -\f2注: 局所変数を表示するには、その変数を含むクラスが \fP\f2javac(1)\fP\f2 \fP\f2\-g\fP オプションでコンパイルされている必要があります。 -.LP -\f2print\fP では、メソッドの呼び出しを含む多数の簡単な Java 式がサポートされています。次に例を示します。 -.RS 3 -.TP 2 -o -\f2print MyClass.myStaticField\fP -.TP 2 -o -\f2print myObj.myInstanceField\fP -.TP 2 -o -\f2print i + j + k\fP (i、j、および k はプリミティブであり、フィールドまたは局所変数のいずれか) -.TP 2 -o -\f2print myObj.myMethod()\fP (myMethod が null 以外を返す場合) -.TP 2 -o -\f2print new java.lang.String("Hello").length()\fP +.if n \{\ .RE -.TP 3 -dump -プリミティブ値の場合には、このコマンドは \f2print\fP と同じです。オブジェクトの場合には、オブジェクト内に定義されている各フィールドの現在の値が出力されます。static フィールドと instance フィールドが出力されます。 -.LP -\f2dump\fP コマンドでは、\f2print\fP コマンドと同じ式がサポートされます。 -.TP 3 -threads -現在実行中のスレッドを一覧表示します。スレッドごとに、名前と現在の状態、およびほかのコマンドに使用できるインデックスが出力されます。次に例を示します。 +.\} +.RE +.PP +dump +.RS 4 +プリミティブ値の場合、\fIdump\fRコマンドは\fIprint\fRコマンドと同一です。オブジェクトの場合、\fIdump\fRコマンドでは、オブジェクト内に定義されている各フィールドの現在の値が出力されます。staticフィールドとinstanceフィールドが出力されます。\fIdump\fRコマンドでは、\fIprint\fRコマンドと同じ式がサポートされます。 +.RE +.PP +threads +.RS 4 +現在実行中のスレッドを一覧表示します。スレッドごとに、名前と現在の状態、および他のコマンドに使用できるインデックスが出力されます。この例では、スレッド・インデックスは4であり、スレッドは\fIjava\&.lang\&.Thread\fRのインスタンスで、スレッドの名前は\fImain\fRであり、現在実行中です。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -4. (java.lang.Thread)0x1 main running -.fl -\fP +4\&. (java\&.lang\&.Thread)0x1 main running .fi -この例では、スレッドインデックスは 4 であり、スレッドは java.lang.Thread のインスタンスです。スレッドの名前は「main」であり、現在実行中です。 -.TP 3 -thread -現在のスレッドにするスレッドを選択します。多くの \f3jdb\fP コマンドは、現在のスレッドの設定に基づいて実行されます。スレッドは、\f2threads\fP コマンドで説明したスレッドインデックスとともに指定します。 -.TP 3 -where -\f2引数を指定しないで\fP where を実行すると、現在のスレッドのスタックがダンプされます。 \f2where all\fP コマンドは、現在のスレッドグループにあるスレッドのスタックをすべてダンプします。 \f2where\fP \f2threadindex\fP は、指定されたスレッドのスタックをダンプします。 -.LP -現在のスレッドが (ブレークポイントか \f2suspend\fP コマンドによって) 中断している場合は、局所変数とフィールドは \f2print\fP コマンドと \f2dump\fP コマンドで表示できます。\f2up\fP コマンドと \f2down\fP コマンドで、どのスタックフレームをカレントにするかを選ぶことができます。 +.if n \{\ .RE - -.LP -.SS -ブレークポイント -.LP -.LP -ブレークポイントは、行番号またはメソッドの最初の命令で \f3jdb\fP に設定できます。次に例を示します。 -.LP -.RS 3 -.TP 2 -o -\f2stop at MyClass:22\fP (MyClass が含まれるソースファイルの 22 行目の最初の命令にブレークポイントを設定) -.TP 2 -o -\f2stop in java.lang.String.length\fP (\f2java.lang.String.length\fP メソッドの最初にブレークポイントを設定) -.TP 2 -o -\f2stop in MyClass.<init>\fP (<init> は MyClass コンストラクタを識別) -.TP 2 -o -\f2stop in MyClass.<clinit>\fP (<clinit> は MyClass の静的初期化コードを識別) +.\} .RE - -.LP -.LP -メソッドがオーバーロードされている場合には、メソッドの引数の型も指定して、ブレークポイントに対して適切なメソッドが選択されるようにしなければなりません。たとえば、「\f2MyClass.myMethod(int,java.lang.String)\fP」または「\f2MyClass.myMethod()\fP」と指定します。 -.LP -.LP -\f2clear\fP コマンドは、「\f2clear\ MyClass:45\fP」のような構文を使用してブレークポイントを削除します。\f2clear\fP を使用するか、引数を指定しないでコマンドを使用すると、現在設定されているすべてのブレークポイントが表示されます。\f2cont\fP コマンドは実行を継続します。 -.LP -.SS -ステップ実行 -.LP -.LP -\f2step\fP コマンドは、現在のスタックフレームまたは呼び出されたメソッド内で、次の行を実行します。\f2next\fP コマンドは、現在のスタックフレームの次の行を実行します。 -.LP -.SS -例外 -.LP -.LP -スローしているスレッドの呼び出しスタック上のどこにも catch 文がない場合に例外が発生すると、VM は通常、例外トレースを出力して終了します。ただし、\f3jdb\fP 環境で実行している場合は、例外が発生すると \f3jdb\fP に制御が戻ります。次に、\f3jdb\fP を使用して例外の原因を診断します。 -.LP -.LP -たとえば、「\f2catch java.io.FileNotFoundException\fP」または「\f2catch mypackage.BigTroubleException\fP」のように \f2catch\fP コマンドを使用すると、デバッグされたアプリケーションは、ほかの例外がスローされたときに停止します。例外が特定のクラス (またはサブクラス) のインスタンスの場合は、アプリケーションは例外がスローされた場所で停止します。 -.LP -.LP -\f2ignore\fP コマンドを使うと、以前の \f2catch\fP コマンドの効果が無効になります。 -.LP -.LP -\f2注: \fP\f2ignore\fP コマンドでは、デバッグされる VM は例外を無視せず、デバッガだけが例外を無視します。 -.LP -.SH "コマンド行オプション" -.LP -.LP -コマンド行で Java アプリケーション起動ツールの代わりに \f3jdb\fP を使用する場合、\f3jdb\fP は、\f2\-D\fP、\f2\-classpath\fP、\f2\-X<option>\fP など、java コマンドと同じ数のオプションを受け入れます。 -.LP -.LP -\f3jdb\fP は、そのほかに次のオプションを受け入れます。 -.LP -.RS 3 -.TP 3 -\-help -ヘルプメッセージを表示します。 -.TP 3 -\-sourcepath <dir1:dir2:...> -指定されたパスを使用して、ソースファイルを検索します。このオプションが指定されていない場合は、デフォルトパスの「.」が使われます。 -.TP 3 -\-attach <address> -デフォルトの接続機構を使用して、すでに実行中の VM にデバッガを接続します。 -.TP 3 -\-listen <address> -実行中の VM が標準のコネクタを使って指定されたアドレスに接続するのを待機します。 -.TP 3 -\-listenany -実行中の VM が標準のコネクタを使って利用可能な任意のアドレスに接続するのを待機します。 -.TP 3 -\-launch -デバッグするアプリケーションを jdb の起動後ただちに起動します。このオプションによって、\f2run\fP コマンドを使用する必要がなくなります。デバッグするアプリケーションは、起動後、初期アプリケーションクラスがロードされる直前に停止します。その時点で、必要なブレークポイントを設定し、\f2cont\fP を使用して実行を継続できます。 -.TP 3 -\-listconnectors -この VM で利用できるコネクタを一覧表示します。 -.TP 3 -\-connect <connector\-name>:<name1>=<value1>,... -一覧表示された引数の値と指定のコネクタを使ってターゲット VM に接続します。 -.TP 3 -\-dbgtrace [flags] -jdb のデバッグ情報を出力します。 -.TP 3 -\-tclient -Java HotSpot(tm) VM (クライアント) 内でアプリケーションを実行します。 -.TP 3 -\-tserver -Java HotSpot(tm) VM (サーバー) 内でアプリケーションを実行します。 -.TP 3 -\-Joption -jdb の実行に使用される Java 仮想マシンに \f2option\fP を渡します。(アプリケーション Java 仮想マシンに対するオプションは、\f3run\fP コマンドに渡される)。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +.PP +thread +.RS 4 +現在のスレッドにするスレッドを選択します。多くの\fIjdb\fRコマンドは、現在のスレッドの設定に基づいて実行されます。スレッドは、threadsコマンドで説明したスレッド・インデックスとともに指定します。 .RE - -.LP -.LP -デバッガとデバッグを行う VM を接続するための代替機構に対して、その他のオプションがサポートされています。その他の接続オプションについては、Java Platform Debugger Architecture の -.na -\f2ドキュメント\fP @ -.fi -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 オプションです。 +.PP +where +.RS 4 +引数を指定しないで\fIwhere\fRコマンドを実行すると、現在のスレッドのスタックがダンプされます。\fIwhere\fR +\fIall\fRコマンドは、現在のスレッド・グループにあるスレッドのスタックをすべてダンプします。\fIwhere\fR +\fIthreadindex\fRコマンドは、指定されたスレッドのスタックをダンプします。 +.sp +現在のスレッドが(ブレークポイントか\fIsuspend\fRコマンドによって)中断している場合は、ローカル変数とフィールドは\fIprint\fRコマンドと\fIdump\fRコマンドで表示できます。\fIup\fRコマンドと\fIdown\fRコマンドで、どのスタック・フレームを現在のスタック・フレームにするかを選ぶことができます。 +.RE +.SS "ブレークポイント" +.PP +ブレークポイントは、行番号またはメソッドの最初の命令でJDBに設定できます。次に例を示します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +コマンド\fIstop at MyClass:22\fRは、\fIMyClass\fRが含まれるソース・ファイルの22行目の最初の命令にブレークポイントを設定します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +コマンド\fIstop in java\&.lang\&.String\&.length\fRは、メソッド\fIjava\&.lang\&.String\&.length\fRの先頭にブレークポイントを設定します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +コマンド\fIstop in MyClass\&.<clinit>\fRは、\fI<clinit>\fRを使用して\fIMyClass\fRの静的初期化コードを特定します。 +.RE +.PP +メソッドがオーバーロードされている場合には、メソッドの引数の型も指定して、ブレークポイントに対して適切なメソッドが選択されるようにする必要があります。たとえば、\fIMyClass\&.myMethod(int,java\&.lang\&.String)\fRまたは\fIMyClass\&.myMethod()\fRと指定します。 +.PP +\fIclear\fRコマンドは、\fIclear MyClass:45\fRのような構文を使用してブレークポイントを削除します。\fIclear\fRを使用するか、引数を指定しないで\fIstop\fRコマンドを使用すると、現在設定されているすべてのブレークポイントが表示されます。\fIcont\fRコマンドは実行を継続します。 +.SS "ステップ実行" +.PP +\fIstep\fRコマンドは、現在のスタック・フレームまたは呼び出されたメソッド内で、次の行を実行します。\fInext\fRコマンドは、現在のスタック・フレームの次の行を実行します。 +.SS "例外" +.PP +スローしているスレッドの呼出しスタック上のどこにも\fIcatch\fR文がない場合に例外が発生すると、JVMは通常、例外トレースを出力して終了します。ただし、JDB環境で実行している場合は、違反のスロー時にJDBに制御が戻ります。次に、\fIjdb\fRコマンドを使用して例外の原因を診断します。 +.PP +たとえば、\fIcatch java\&.io\&.FileNotFoundException\fRまたは\fIcatch\fR +\fImypackage\&.BigTroubleException\fRのように\fIcatch\fRコマンドを使用すると、デバッグされたアプリケーションは、他の例外がスローされたときに停止します。例外が特定のクラスまたはサブクラスのインスタンスの場合は、アプリケーションは例外がスローされた場所で停止します。 +.PP +\fIignore\fRコマンドを使用すると、以前の\fIcatch\fRコマンドの効果が無効になります。\fIignore\fRコマンドでは、デバッグされるJVMは特定の例外を無視せず、デバッガのみを無視します。 +.SH "オプション" +.PP +コマンドラインで\fIjava\fRコマンドのかわりに\fIjdb\fRコマンドを使用する場合、\fIjdb\fRコマンドは、\fI\-D\fR、\fI\-classpath\fR、\fI\-X\fRなど、\fIjava\fRコマンドと同じ数のオプションを受け入れます。\fIjdb\fRコマンドは、その他に次のリストにあるオプションを受け入れます。 +.PP +デバッグを行うJVMにデバッガを接続するための代替機構を提供するために、その他のオプションがサポートされています。これらの接続の代替に関する詳細なドキュメントは、Java Platform Debugger Architecture (JPDA) +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html)を参照してください +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示します。 +.RE +.PP +\-sourcepath \fIdir1:dir2: \&. \&. \&.\fR +.RS 4 +指定されたパスを使用して、ソース・ファイルを検索します。このオプションが指定されていない場合は、デフォルト・パスのドット(\&.)が使用されます。 +.RE +.PP +\-attach \fIaddress\fR +.RS 4 +デフォルトの接続機構を使用して、実行中のJVMにデバッガを接続します。 +.RE +.PP +\-listen \fIaddress\fR +.RS 4 +実行中のJVMが標準のコネクタを使用して指定されたアドレスに接続するのを待機します。 +.RE +.PP +\-launch +.RS 4 +デバッグするアプリケーションをJDBの起動後ただちに起動します。\fI\-launch\fRオプションにより、\fIrun\fRコマンドが必要なくなります。デバッグするアプリケーションは、起動後、初期アプリケーション・クラスがロードされる直前に停止します。その時点で、必要なブレークポイントを設定し、\fIcont\fRコマンドを使用して実行を継続できます。 +.RE +.PP +\-listconnectors +.RS 4 +このJVMで利用できるコネクタを一覧表示します。 +.RE +.PP +\-connect connector\-name:\fIname1=value1\fR +.RS 4 +一覧表示された引数の値と指定のコネクタを使用してターゲットJVMに接続します。 +.RE +.PP +\-dbgtrace [\fIflags\fR] +.RS 4 +\fIjdb\fRコマンドのデバッグの情報を出力します。 +.RE +.PP +\-tclient +.RS 4 +Java HotSpot VMクライアント内でアプリケーションを実行します。 +.RE +.PP +\-tserver +.RS 4 +Java HotSpot VMサーバー内でアプリケーションを実行します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +JVMに\fIoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "デバッグ対象のプロセスに転送されるオプション" +.PP +\-v \-verbose[:\fIclass\fR|gc|jni] +.RS 4 +冗長モードにします。 +.RE +.PP +\-D\fIname\fR=\fIvalue\fR +.RS 4 +システム・プロパティを設定します。 +.RE +.PP +\-classpath \fIdir\fR +.RS 4 +クラスを検索するための、コロンで区切って指定されたディレクトリのリスト。 +.RE +.PP +\-X\fIoption\fR +.RS 4 +非標準ターゲットJVMオプションです。 .RE - -.LP .SH "関連項目" -.LP -.LP -javac(1)、java(1)、javah(1)、javap(1)、javadoc(1) -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javac(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javah(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javap(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jdeps.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jdeps.1 new file mode 100644 index 00000000000..9ab6f666e0c --- /dev/null +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jdeps.1 @@ -0,0 +1,367 @@ +'\" t +.\" Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jdeps +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jdeps" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jdeps \- Javaクラス依存性アナライザ。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjdeps\fR [\fIoptions\fR] \fIclasses\fR \&.\&.\&. +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIclasses\fR +.RS 4 +分析するクラスの名前。クラス・パスで検出できるクラスを、ファイル名、ディレクトリまたはJARファイルで指定できます。 +.RE +.SH "説明" +.PP +\fIjdeps\fRコマンドは、Javaクラス・ファイルのパッケージレベルまたはクラスレベルの依存性を示します。入力クラスには、\fI\&.class\fRファイルのパス名、ディレクトリ、JARファイル、またはすべてのクラス・ファイルを分析するための完全修飾クラス名を指定できます。オプションにより出力が決定します。デフォルトでは、\fIjdeps\fRはシステム出力に依存関係を出力します。DOT言語で依存関係を生成できます(\fI\-dotoutput\fRオプションを参照)。 +.SH "オプション" +.PP +\-dotoutput <\fIdir\fR> +.RS 4 +DOTファイル出力の宛先ディレクトリ。指定した場合は\fIjdeps\fRは<\fIarchive\-file\-name\fR>\&.dotという名前の分析済みアーカイブごとに依存関係をリストする1つのdotファイルを生成し、アーカイブ間の依存関係をリストするsummary\&.dotという名前のサマリー・ファイルも生成します。 +.RE +.PP +\-s, \-summary +.RS 4 +依存関係のサマリーのみを出力します。 +.RE +.PP +\-v, \-verbose +.RS 4 +すべてのクラスレベルの依存関係を出力します。 +.RE +.PP +\-verbose:package +.RS 4 +同じアーカイブ内の依存関係を除き、パッケージレベルの依存関係を出力します。 +.RE +.PP +\-verbose:class +.RS 4 +同じアーカイブ内の依存関係を除き、クラスレベルの依存関係を出力します。 +.RE +.PP +\-cp <\fIpath\fR>, \-classpath <\fIpath\fR> +.RS 4 +クラス・ファイルの検索場所を指定します。 +.sp +Setting the Class Path も参照してください。 +.RE +.PP +\-p <\fIpkg name\fR>, \-package <\fIpkg name\fR> +.RS 4 +指定したパッケージの依存関係を検出します。異なるパッケージに対してこのオプションを複数回指定できます。\fI\-p\fRオプションと\fI\-e\fRオプションを同時に指定することはできません。 +.RE +.PP +\-e <\fIregex\fR>, \-regex <\fIregex\fR> +.RS 4 +指定した正規表現パターンと一致するパッケージの依存関係を検出します。\fI\-p\fRオプションと\fI\-e\fRオプションを同時に指定することはできません。 +.RE +.PP +\-include <\fIregex\fR> +.RS 4 +分析をパターンに一致するクラスに制限します。このオプションは、分析するクラスのリストをフィルタします。依存関係にパターンを適用する\fI\-p\fRおよび\fI\-e\fRとともに使用できます。 +.RE +.PP +\-jdkinternals +.RS 4 +JDKの内部APIのクラスレベルの依存関係を検出します。デフォルトでは、\fI\-include\fRオプションを指定しないかぎり、\fI\-classpath\fRオプションおよび入力ファイルに指定されたすべてのクラスを分析します。このオプションは、\fI\-p\fRオプション、\fI\-e\fRオプションおよび\fI\-s\fRオプションとともに使用できません。 +.sp +\fB警告\fR: JDKの内部APIは、今後のリリースでアクセスできなくなる可能性があります。 +.RE +.PP +\-P, \-profile +.RS 4 +パッケージを含むプロファイルまたはファイルを表示します。 +.RE +.PP +\-apionly +.RS 4 +フィールド・タイプ、メソッド・パラメータ・タイプ、戻りタイプ、チェックされた例外タイプを含むパブリック・クラスの\fIpublic\fRおよび\fIprotected\fRメンバーの署名からの依存関係など、分析をAPIに制限します。 +.RE +.PP +\-R, \-recursive +.RS 4 +すべての依存関係を再帰的に走査します。 +.RE +.PP +\-version +.RS 4 +バージョン情報を出力します。 +.RE +.PP +\-h, \-?, \-help +.RS 4 +\fIjdeps\fRに関するヘルプ・メッセージを出力します。 +.RE +.SH "例" +.PP +Notepad\&.jarの依存関係の分析。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps demo/jfc/Notepad/Notepad\&.jar + +demo/jfc/Notepad/Notepad\&.jar \-> /usr/java/jre/lib/rt\&.jar + <unnamed> (Notepad\&.jar) + \-> java\&.awt + \-> java\&.awt\&.event + \-> java\&.beans + \-> java\&.io + \-> java\&.lang + \-> java\&.net + \-> java\&.util + \-> java\&.util\&.logging + \-> javax\&.swing + \-> javax\&.swing\&.border + \-> javax\&.swing\&.event + \-> javax\&.swing\&.text + \-> javax\&.swing\&.tree + \-> javax\&.swing\&.undo +.fi +.if n \{\ +.RE +.\} +.PP +\-Pまたは\-profileオプションを使用して、メモ帳が依存するプロファイルを表示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps \-profile demo/jfc/Notepad/Notepad\&.jar +demo/jfc/Notepad/Notepad\&.jar \-> /usr/java/jre/lib/rt\&.jar (Full JRE) + <unnamed> (Notepad\&.jar) + \-> java\&.awt Full JRE + \-> java\&.awt\&.event Full JRE + \-> java\&.beans Full JRE + \-> java\&.io compact1 + \-> java\&.lang compact1 + \-> java\&.net compact1 + \-> java\&.util compact1 + \-> java\&.util\&.logging compact1 + \-> javax\&.swing Full JRE + \-> javax\&.swing\&.border Full JRE + \-> javax\&.swing\&.event Full JRE + \-> javax\&.swing\&.text Full JRE + \-> javax\&.swing\&.tree Full JRE + \-> javax\&.swing\&.undo Full JRE +.fi +.if n \{\ +.RE +.\} +.PP +tools\&.jarファイル内の\fIcom\&.sun\&.tools\&.jdeps\&.Main\fRクラスなど、特定のクラスパス内の特定のクラスの直接依存関係の分析。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main +lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar + com\&.sun\&.tools\&.jdeps (tools\&.jar) + \-> java\&.io + \-> java\&.lang +.fi +.if n \{\ +.RE +.\} +.PP +\fI\-verbose:class\fRオプションを使用して、クラスレベル依存関係を検索するか\fI\-v\fRまたは\fI\-verbose\fRオプションを使用して同じJARファイルからの依存関係を含めます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps \-verbose:class \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main + +lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar + com\&.sun\&.tools\&.jdeps\&.Main (tools\&.jar) + \-> java\&.io\&.PrintWriter + \-> java\&.lang\&.Exception + \-> java\&.lang\&.Object + \-> java\&.lang\&.String + \-> java\&.lang\&.System +.fi +.if n \{\ +.RE +.\} +.PP +\fI\-R\fRまたは\fI\-recursive\fRオプションを使用して、\fIcom\&.sun\&.tools\&.jdeps\&.Main\fRクラスの推移的な依存関係を分析します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps \-R \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main +lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar + com\&.sun\&.tools\&.classfile (tools\&.jar) + \-> java\&.io + \-> java\&.lang + \-> java\&.lang\&.reflect + \-> java\&.nio\&.charset + \-> java\&.nio\&.file + \-> java\&.util + \-> java\&.util\&.regex + com\&.sun\&.tools\&.jdeps (tools\&.jar) + \-> java\&.io + \-> java\&.lang + \-> java\&.nio\&.file + \-> java\&.nio\&.file\&.attribute + \-> java\&.text + \-> java\&.util + \-> java\&.util\&.jar + \-> java\&.util\&.regex + \-> java\&.util\&.zip +/usr/java/jre/lib/jce\&.jar \-> /usr/java/jre/lib/rt\&.jar + javax\&.crypto (jce\&.jar) + \-> java\&.io + \-> java\&.lang + \-> java\&.lang\&.reflect + \-> java\&.net + \-> java\&.nio + \-> java\&.security + \-> java\&.security\&.cert + \-> java\&.security\&.spec + \-> java\&.util + \-> java\&.util\&.concurrent + \-> java\&.util\&.jar + \-> java\&.util\&.regex + \-> java\&.util\&.zip + \-> javax\&.security\&.auth + \-> sun\&.security\&.jca JDK internal API (rt\&.jar) + \-> sun\&.security\&.util JDK internal API (rt\&.jar) + javax\&.crypto\&.spec (jce\&.jar) + \-> java\&.lang + \-> java\&.security\&.spec + \-> java\&.util +/usr/java/jre/lib/rt\&.jar \-> /usr/java/jre/lib/jce\&.jar + java\&.security (rt\&.jar) + \-> javax\&.crypto +.fi +.if n \{\ +.RE +.\} +.PP +メモ帳デモの依存関係のdotファイルを生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ jdeps \-dotoutput dot demo/jfc/Notepad/Notepad\&.jar +.fi +.if n \{\ +.RE +.\} +.PP +\fIjdeps\fRは、\fI\-dotoutput\fRオプションで指定されたdotディレクトリに<\fIfilename\fR>\&.dotという名前のdotファイルを特定のJARファイルごとに作成し、JARファイル間の依存関係をリストするsummary\&.dotという名前のサマリー・ファイルも作成します +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ cat dot/Notepad\&.jar\&.dot +digraph "Notepad\&.jar" { + // Path: demo/jfc/Notepad/Notepad\&.jar + "<unnamed>" \-> "java\&.awt"; + "<unnamed>" \-> "java\&.awt\&.event"; + "<unnamed>" \-> "java\&.beans"; + "<unnamed>" \-> "java\&.io"; + "<unnamed>" \-> "java\&.lang"; + "<unnamed>" \-> "java\&.net"; + "<unnamed>" \-> "java\&.util"; + "<unnamed>" \-> "java\&.util\&.logging"; + "<unnamed>" \-> "javax\&.swing"; + "<unnamed>" \-> "javax\&.swing\&.border"; + "<unnamed>" \-> "javax\&.swing\&.event"; + "<unnamed>" \-> "javax\&.swing\&.text"; + "<unnamed>" \-> "javax\&.swing\&.tree"; + "<unnamed>" \-> "javax\&.swing\&.undo"; +} + +$ cat dot/summary\&.dot +digraph "summary" { + "Notepad\&.jar" \-> "rt\&.jar"; +} +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javap(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jhat.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jhat.1 index 666b25229d2..63415d9a6da 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jhat.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jhat.1 @@ -1,159 +1,214 @@ -." 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 -." 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 jhat 1 "07 May 2011" - -.LP -.SH "名前" -jhat \- Java ヒープ解析ツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jhat +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jhat" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jhat \- Javaヒープを分析します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jhat\fP [ \f2options\fP ] <heap\-dump\-file> -.fl - -.fl +\fIjhat\fR [ \fIoptions\fR ] \fIheap\-dump\-file\fR .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -options -オプションを使用する場合、コマンド名の直後に記述してください。 -.TP 3 -heap\-dump\-file -ブラウズ対象となる Java バイナリヒープダンプファイル。複数のヒープダンプを含むダンプファイルの場合、「foo.hprof#3」のようにファイル名の後に「#<number>」を付加することで、ファイル内の特定のダンプを指定できます。 +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIheap\-dump\-file\fR +.RS 4 +ブラウズ対象となるJavaバイナリ・ヒープ・ダンプ・ファイル。複数のヒープ・ダンプを含むダンプ・ファイルの場合、\fImyfile\&.hprof#3\fRのようにファイル名の後に\fI#<number>\fRを付加することで、ファイル内の特定のダンプを指定できます。 .RE - -.LP .SH "説明" -.LP -.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 -.LP -Java のヒープダンプを生成するには、いくつかの方法があります。 -.LP -.RS 3 -.TP 2 -o -jmap(1) の \-dump オプションを使って実行時にヒープダンプを取得する。 -.TP 2 -o -jconsole(1) のオプションを使って -.na -\f2HotSpotDiagnosticMXBean\fP @ -.fi -http://java.sun.com/javase/6/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html 経由で実行時にヒープダンプを取得する。 -.TP 2 -o -\-XX:+HeapDumpOnOutOfMemoryError VM オプションを指定すると、OutOfMemoryError のスロー時にヒープダンプが生成される。 -.TP 2 -o -.na -\f2hprof\fP @ -.fi -http://java.sun.com/developer/technicalArticles/Programming/HPROF.html を使用する。 +.PP +\fIjhat\fRコマンドはJavaヒープ・ダンプ・ファイルを解析し、Webサーバーを開始します。\fIjhat\fRコマンドを使用して、お気に入りのブラウザでヒープ・ダンプを参照できます。\fIjhat\fRコマンドは、既知のクラス\fIMyClass\fRのすべてのインスタンスを表示するなどの事前設計済の問合せやObject Query Language (OQL)をサポートします。ヒープ・ダンプの問合せを除き、OQLはSQLに似ています。OQLのヘルプには、\fIjhat\fRコマンドによって表示されるOQLヘルプ・ページからアクセスできます。デフォルト・ポートを使用する場合、OQLのヘルプはhttp://localhost:7000/oqlhelp/で利用可能です。 +.PP +Javaのヒープ・ダンプを生成するには、次のいくつかの方法があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIjmap \-dump\fRオプションを使用して実行時にヒープ・ダンプを取得します。jmap(1)を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIjconsole\fRオプションを使用して\fIHotSpotDiagnosticMXBean\fR経由で実行時にヒープ・ダンプを取得します。jconsole(1)および\fIHotSpotDiagnosticMXBean\fRのインタフェースの説明( +http://docs\&.oracle\&.com/javase/8/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean\&.html)を参照してください。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ヒープ・ダンプは、\fI\-XX:+HeapDumpOnOutOfMemoryError\fR +Java仮想マシン(JVM)オプションを指定することで、\fIOutOfMemoryError\fRがスローされたときに生成されます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIhprof\fRコマンドを使用します。HPROF: Heap/CPUプロファイリング・ツール +(http://docs\&.oracle\&.com/javase/8/docs/technotes/samples/hprof\&.html)を参照してください .RE - -.LP -.LP -\f3注:\fP このツールは\f3試験的なもの\fPであり、将来の JDK のバージョンでは\f3利用できなくなる\fP可能性があります。 -.LP .SH "オプション" -.LP -.RS 3 -.TP 3 -\-stack false/true -オブジェクト割り当て呼び出しスタックの追跡を無効にします。ヒープダンプ内で割り当てサイト情報が使用できない場合、このフラグを false に設定する必要があります。デフォルトは true です。 -.TP 3 -\-refs false/true -オブジェクトへの参照の追跡を無効にします。デフォルトは true です。デフォルトでは、ヒープ内のすべてのオブジェクトについて、バックポインタ (指定されたオブジェクトをポイントしているオブジェクト。参照者または受信参照とも呼ばれる) が計算されます。 -.TP 3 -\-port port\-number -jhat の HTTP サーバーのポートを設定します。デフォルトは 7000 です。 -.TP 3 -\-exclude exclude\-file -「到達可能なオブジェクト」のクエリから除外すべきデータメンバーの一覧を含むファイルを指定します。たとえば、このファイルに \f2java.lang.String.value\fP が含まれていた場合、特定のオブジェクト「o」から到達可能なオブジェクトのリストを計算する際に、\f2java.lang.String.value\fP フィールドに関連する参照パスが考慮されなくなります。 -.TP 3 -\-baseline baseline\-dump\-file -ベースラインとなるヒープダンプを指定します。両方のヒープダンプ内で同じオブジェクト ID を持つオブジェクトは「新規ではない」としてマークされます。その他のオブジェクトは「新規」としてマークされます。これは、異なる 2 つのヒープダンプを比較する際に役立ちます。 -.TP 3 -\-debug int -このツールのデバッグレベルを設定します。0 は「デバッグ出力なし」を意味します。より大きな値を設定すると、より冗長なモードになります。 -.TP 3 -\-version -バージョン番号を報告したあと、終了します。 -.TP 3 -\-h -ヘルプメッセージを出力して終了します。 -.TP 3 -\-help -ヘルプメッセージを出力して終了します。 -.TP 3 -\-J<flag> -jhat が実行されている Java 仮想マシンに <flag> を渡します。たとえば、512M バイトの最大ヒープサイズを使用するには、\-J\-Xmx512m とします。 +.PP +\-stack false|true +.RS 4 +オブジェクト割当呼出しスタックの追跡を無効にします。ヒープ・ダンプ内で割当サイト情報が使用できない場合、このフラグを\fIfalse\fRに設定する必要があります。デフォルトは\fItrue\fRです。 +.RE +.PP +\-refs false|true +.RS 4 +オブジェクトへの参照の追跡を無効にします。デフォルトは\fItrue\fRです。デフォルトでは、ヒープ内のすべてのオブジェクトについて、バックポインタ(指定されたオブジェクトをポイントしているオブジェクト。参照者または受信参照とも呼ばれる)が計算されます。 +.RE +.PP +\-port \fIport\-number\fR +.RS 4 +\fIjhat\fRのHTTPサーバーのポートを設定します。デフォルトは7000です。 +.RE +.PP +\-exclude \fIexclude\-file\fR +.RS 4 +到達可能なオブジェクトの問合せから除外する必要があるデータ・メンバーの一覧を含むファイルを指定します。たとえば、このファイルに\fIjava\&.lang\&.String\&.value\fRが含まれていた場合、特定のオブジェクト\fIo\fRから到達可能なオブジェクトのリストを計算する際に、\fIjava\&.lang\&.String\&.value\fRフィールドに関連する参照パスが考慮されなくなります。 +.RE +.PP +\-baseline \fIexclude\-file\fR +.RS 4 +ベースラインとなるヒープ・ダンプを指定します。両方のヒープ・ダンプ内で同じオブジェクトIDを持つオブジェクトは新規ではないとしてマークされます。他のオブジェクトは新規としてマークされます。これは、異なる2つのヒープ・ダンプを比較する際に役立ちます。 +.RE +.PP +\-debug \fIint\fR +.RS 4 +このツールのデバッグ・レベルを設定します。レベル0はデバッグ出力がないことを意味します。より大きな値を設定すると、より冗長なモードになります。 +.RE +.PP +\-version +.RS 4 +リリース番号をレポートして終了します +.RE +.PP +\-h +.RS 4 +ヘルプ・メッセージを表示して終了します。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示して終了します。 +.RE +.PP +\-J\fIflag\fR +.RS 4 +\fIjhat\fRコマンドを実行しているJava仮想マシンに\fIflag\fRを渡します。たとえば、512Mバイトの最大ヒープ・サイズを使用するには、\fI\-J\-Xmx512m\fRとします。 .RE - -.LP .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -jmap(1) -.TP 2 -o -jconsole(1) -.TP 2 -o -.na -\f2hprof \- ヒープおよび CPU プロファイリングツール\fP @ -.fi -http://java.sun.com/developer/technicalArticles/Programming/HPROF.html +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jmap(1) .RE - -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jconsole(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +HPROF: Heap/CPUプロファイリング・ツール +(http://docs\&.oracle\&.com/javase/8/docs/technotes/samples/hprof\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jinfo.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jinfo.1 index a1f639cfda9..f4e7ae9c4ec 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jinfo.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jinfo.1 @@ -1,166 +1,186 @@ -." 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 -." 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 jinfo 1 "07 May 2011" - -.LP -.SH "名前" -jinfo \- 構成情報 -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jinfo +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jinfo" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jinfo \- 構成情報を生成します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jinfo\fP [ option ] pid -.fl -\f3jinfo\fP [ option ] executable core -.fl -\f3jinfo\fP [ option ] [server\-id@]remote\-hostname\-or\-IP -.fl +\fIjinfo\fR [ \fIoption\fR ] \fIpid\fR .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -option -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。 +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -pid -出力する構成情報のプロセス ID。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjinfo\fR [ \fIoption \fR] \fIexecutable core\fR +.fi +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -executable -コアダンプの作成元の Java 実行可能ファイルです。 +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjinfo\fR [ \fIoption \fR] \fI[ servier\-id ] remote\-hostname\-or\-IP\fR +.fi +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -core -出力する構成情報のコアファイル。 +.\} +.PP +\fIオプション\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 .RE - -.LP -.RS 3 -.TP 3 -remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 +.PP +\fIpid\fR +.RS 4 +構成情報が出力されるプロセスID。プロセスはJavaプロセスである必要があります。マシン上で実行しているJavaプロセスの一覧を取得するには、jps(1)コマンドを使用します。 .RE - -.LP -.RS 3 -.TP 3 -server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 +.PP +\fI実行可能ファイル\fR +.RS 4 +コア・ダンプの作成元のJava実行可能ファイル。 +.RE +.PP +\fIコア\fR +.RS 4 +構成情報が出力されるコア・ファイル。 +.RE +.PP +\fIremote\-hostname\-or\-IP\fR +.RS 4 +リモート・デバッグ・サーバーの\fIホスト名\fRまたは\fIIP\fRアドレス。jsadebugd(1)を参照してください。 +.RE +.PP +\fIserver\-id\fR +.RS 4 +複数のデバッグ・サーバーが同一のリモート・ホストで実行している場合の、オプション固有のID。 .RE - -.LP .SH "説明" -.LP -.LP -\f3jinfo\fP は、指定された Java プロセスやコアファイルまたはリモートデバッグサーバーの Java 構成情報を出力します。構成情報は、Java システムプロパティーと Java 仮想マシンのコマンド行フラグから構成されます。指定されたプロセスが 64 ビット VM 上で実行されている場合、\f2\-J\-d64\fP オプションを指定しなければならない場合があります。次に例を示します。 -.br -jinfo \-J\-d64 \-sysprops pid -.LP -.LP -\f3注 \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。dbgeng.dll が存在していない Windows システムでは、「Debugging Tools For Windows」をインストールしないとこれらのツールが正常に動作しません。また、 \fP\f4PATH\fP\f3 環境変数には、ターゲットプロセスによって使用される \fP\f4jvm.dll\fP\f3 の場所、またはクラッシュダンプファイルが生成された場所が含まれるようにしてください。\fP -.LP -.LP -\f3次に例を示します。 \fP\f4set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -.LP +.PP +\fIjinfo\fRコマンドは、指定されたJavaプロセスやコア・ファイルまたはリモート・デバッグ・サーバーのJava構成情報を出力します。構成情報には、Javaシステム・プロパティとJava仮想マシン(JVM)のコマンドライン・フラグが含まれています。指定されたプロセスが64ビットJVM上で実行されている場合、\fI\-J\-d64\fRオプションを指定する必要がある場合があります。次に例を示します。\fIjinfo\fR +\fI\-J\-d64 \-sysprops pid\fR。 +.PP +このユーティリティはサポート対象外であり、将来のJDKのリリースでは利用できなくなる可能性があります。\fIdbgeng\&.dll\fRが存在していないWindowsシステムでは、Debugging Tools For Windowsをインストールしないとこれらのツールが正常に動作しません。\fIPATH\fR環境変数には、ターゲット・プロセスによって使用されるjvm\&.dllの場所、またはクラッシュ・ダンプ・ファイルが生成された場所が含まれるようにしてください。たとえば、\fIset PATH=%JDK_HOME%\ejre\ebin\eclient;%PATH%\fRです。 .SH "オプション" -.LP -.RS 3 -.TP 3 -<オプションなし> -コマンド行フラグを、システムプロパティー名と値のペアとともに出力します。 -.br -.TP 3 -\-flag name -指定されたコマンド行フラグの名前と値を出力します。 -.br -.TP 3 -\-flag [+|\-]name -指定されたブール型のコマンド行フラグを有効または無効にします。 -.br -.TP 3 -\-flag name=value -指定されたコマンド行フラグを指定された値に設定します。 -.br -.TP 3 -\-flags -JVM に渡されるコマンド行フラグをペアで出力します。 -.br -.TP 3 -\-sysprops -Java システムプロパティーを名前と値のペアとして出力します。 -.br -.TP 3 -\-h -ヘルプメッセージを出力します。 -.TP 3 -\-help -ヘルプメッセージを出力します。 +.PP +no\-option +.RS 4 +コマンドライン・フラグを、システム・プロパティ名と値のペアとともに出力します。 +.RE +.PP +\-flag \fIname\fR +.RS 4 +指定されたコマンドライン・フラグの名前と値を出力します。 +.RE +.PP +\-flag \fI[+|\-]name\fR +.RS 4 +指定されたブール型のコマンドライン・フラグを有効または無効にします。 +.RE +.PP +\-flag \fIname=value\fR +.RS 4 +指定されたコマンドライン・フラグを指定された値に設定します。 +.RE +.PP +\-flags +.RS 4 +JVMに渡されるコマンドライン・フラグを出力します。 +.RE +.PP +\-sysprops +.RS 4 +Javaシステム・プロパティを名前と値のペアとして出力します。 +.RE +.PP +\-h +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージが出力されます。 .RE - -.LP .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -jps(1) -.TP 2 -o -jsadebugd(1) +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) .RE - -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jsadebugd(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jjs.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jjs.1 new file mode 100644 index 00000000000..bcf28254fe2 --- /dev/null +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jjs.1 @@ -0,0 +1,394 @@ +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jjs +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 基本ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jjs" "1" "2013年11月21日" "JDK 8" "基本ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jjs \- Nashornエンジンを呼び出します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjjs\fR [\fIoptions\fR] [\fIscript\-files\fR] [\-\- \fIarguments\fR] +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +空白文字で区切られた、\fIjjs\fRコマンドの1つ以上のオプション。詳細は、オプションを参照してください。 +.RE +.PP +\fIscript\-files\fR +.RS 4 +空白文字で区切られた、Nashornを使用して解釈する1つ以上のスクリプト・ファイル。ファイルが指定されない場合は、対話型シェルが起動されます。 +.RE +.PP +\fIarguments\fR +.RS 4 +二重ハイフン・マーカー(\fI\-\-\fR)の後のすべての値が、引数としてスクリプトまたは対話型シェルに渡されます。これらの値には\fIarguments\fRプロパティを使用してアクセスできます(Example 3を参照してください)。 +.RE +.SH "説明" +.PP +\fIjjs\fRコマンドライン・ツールを使用してNashornエンジンを呼び出します。これを使用して、1つまたは複数のスクリプト・ファイルを解釈したり、対話型シェルを実行することができます。 +.SH "オプション" +.PP +\fIjjs\fRコマンドのオプションはスクリプトがNashornによって解釈される条件を制御します。 +.PP +\-ccs=\fIsize\fR, \-\-class\-cache\-size=\fIsize\fR +.RS 4 +クラス・キャッシュ・サイズをバイト単位で設定します。キロバイト(KB)を示すために\fIk\fRまたは\fIK\fRの文字を追加し、メガバイト(MB)を示すために\fIm\fRまたは\fIM\fRの文字を追加し、ギガバイト(GB)を示すために\fIg\fRまたは\fIG\fRを追加します。デフォルトでは、クラス・キャッシュ・サイズは50バイトに設定されます。次の例は、1024バイト(1 KB)に設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-css=100 +\-css=1k +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-co, \-\-compile\-only +.RS 4 +スクリプトを実行せずにコンパイルします。 +.RE +.PP +\-cp \fIpath\fR, \-\-classpath \fIpath\fR +.RS 4 +サポートするクラスへのパスを指定します。複数のパスを設定するには、このオプションを繰り返すか、または各パスをコロン(:)で区切ります。 +.RE +.PP +\-D\fIname\fR=\fIvalue\fR +.RS 4 +プロパティ名に値を割り当てることで、スクリプトに渡すシステム・プロパティを設定します。次の例で、対話型モードでNashornを呼び出して、\fImyValue\fRを\fImyKey\fRという名前のプロパティに割り当てる方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +>> \fBjjs \-DmyKey=myValue\fR +jjs> \fBjava\&.lang\&.System\&.getProperty("myKey")\fR +myValue +jjs> +.fi +.if n \{\ +.RE +.\} +このオプションを繰り返し使用すると、複数のプロパティを設定できます。 +.RE +.PP +\-d=\fIpath\fR, \-\-dump\-debug\-dir=\fIpath\fR +.RS 4 +クラス・ファイルをダンプするディレクトリへのパスを指定します。 +.RE +.PP +\-\-debug\-lines +.RS 4 +クラス・ファイル内の行番号表を生成します。デフォルトでは、このオプションは有効になっています。無効にするには\fI\-\-debug\-lines=false\fRを指定します。 +.RE +.PP +\-\-debug\-locals +.RS 4 +クラス・ファイル内のローカル変数を生成します。 +.RE +.PP +\-doe, \-\-dump\-on\-error +.RS 4 +エラーが発生したときに、フル・スタック・トレースを提供します。デフォルトでは、簡単なエラー・メッセージのみが出力されます。 +.RE +.PP +\-\-early\-lvalue\-error +.RS 4 +無効な左辺値式が早期エラーとして(つまり、コードが解析されるときに)報告されます。デフォルトでは、このオプションは有効になっています。無効にするには\fI\-\-early\-lvalue\-error=false\fRを指定します。無効な場合、無効な左辺値式はコードが実行されるまで報告されません。 +.RE +.PP +\-\-empty\-statements +.RS 4 +空の文をJavaの抽象構文ツリーに保存します。 +.RE +.PP +\-fv, \-\-fullversion +.RS 4 +完全なNashornバージョン文字列を出力します。 +.RE +.PP +\-\-function\-statement\-error +.RS 4 +関数の宣言が文として使用されるとエラー・メッセージが出力されます。 +.RE +.PP +\-\-function\-statement\-warning +.RS 4 +関数の宣言が文として使用されると警告メッセージが出力されます。 +.RE +.PP +\-fx +.RS 4 +スクリプトをJavaFXアプリケーションとして起動します。 +.RE +.PP +\-h, \-help +.RS 4 +オプションのリストとその説明を出力します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +指定した\fIjava\fR起動オプションをJVMに渡します。次の例で、対話型モードでNashornを呼び出して、JVMによって使用される最大メモリーを4 GBに設定する方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +>> \fBjjs \-J\-Xmx4g\fR +jjs> \fBjava\&.lang\&.Runtime\&.getRuntime()\&.maxMemory()\fR +3817799680 +jjs> +.fi +.if n \{\ +.RE +.\} +このオプションを繰り返し使用すると、複数の\fIjava\fRコマンド・オプションを渡すことができます。 +.RE +.PP +\-\-lazy\-compilation +.RS 4 +レイジー・コード生成戦略(つまり、スクリプト全体が一度にコンパイルされない)を有効にします。このオプションは試験的なものです。 +.RE +.PP +\-\-loader\-per\-compile +.RS 4 +コンパイルごとに新しいクラス・ローダーを作成します。デフォルトでは、このオプションは有効になっています。無効にするには\fI\-\-loader\-per\-compile=false\fRを指定します。 +.RE +.PP +\-\-log=\fIsubsystem\fR:\fIlevel\fR +.RS 4 +指定されたサブシステムに対して、特定のレベルでロギングを実行します。カンマで区切って複数のサブシステムのロギング・レベルを指定できます。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-\-log=fields:finest,codegen:info +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-\-package=\fIname\fR +.RS 4 +生成されたクラス・ファイルを追加するパッケージを指定します。 +.RE +.PP +\-\-parse\-only +.RS 4 +コンパイルせずにコードを解析します。 +.RE +.PP +\-\-print\-ast +.RS 4 +抽象構文ツリーを出力します。 +.RE +.PP +\-\-print\-code +.RS 4 +バイトコードを出力します。 +.RE +.PP +\-\-print\-lower\-ast +.RS 4 +掘り下げた抽象構文ツリーを出力します。 +.RE +.PP +\-\-print\-lower\-parse +.RS 4 +掘り下げた解析ツリーを出力します。 +.RE +.PP +\-\-print\-no\-newline +.RS 4 +その他の\fI\-\-print*\fRオプションで強制的に1行で出力します。 +.RE +.PP +\-\-print\-parse +.RS 4 +解析ツリーを出力します。 +.RE +.PP +\-\-print\-symbols +.RS 4 +記号表を出力します。 +.RE +.PP +\-pcs, \-\-profile\-callsites +.RS 4 +呼び出しサイトのプロファイル・データをダンプします。 +.RE +.PP +\-scripting +.RS 4 +シェルのスクリプト機能を有効にします。 +.RE +.PP +\-\-stderr=\fIfilename\fR|\fIstream\fR|\fItty\fR +.RS 4 +標準エラー・ストリームを指定したファイル、ストリーム(たとえば\fIstdout\fR)に、またはテキスト端末にリダイレクトします。 +.RE +.PP +\-\-stdout=\fIfilename\fR|\fIstream\fR|\fItty\fR +.RS 4 +標準出力ストリームを指定したファイル、ストリーム(たとえば\fIstderr\fR)に、またはテキスト端末にリダイレクトします。 +.RE +.PP +\-strict +.RS 4 +標準(ECMAScript Edition 5\&.1)への準拠を強化するstrictモードを有効にし、これにより共通のコーディング・エラーを簡単に検出できるようになります。 +.RE +.PP +\-t=\fIzone\fR, \-timezone=\fIzone\fR +.RS 4 +スクリプトの実行に対し指定したタイムゾーンを設定します。OSで設定されたタイムゾーンをオーバーライドし、\fIDate\fRオブジェクトで使用されます。 +.RE +.PP +\-tcs=\fIparameter\fR, \-\-trace\-callsites=\fIparameter\fR +.RS 4 +呼出しサイトのトレースのモードを有効にします。使用可能なパラメータは、次のとおりです。 +.PP +miss +.RS 4 +呼出しサイトのミスをトレースします。 +.RE +.PP +enterexit +.RS 4 +呼出しサイトへの出入りをトレースします。 +.RE +.PP +objects +.RS 4 +オブジェクトのプロパティを出力します。 +.RE +.RE +.PP +\-\-verify\-code +.RS 4 +バイトコードを実行する前に検証します。 +.RE +.PP +\-v, \-version +.RS 4 +Nashornバージョン文字列を出力します。 +.RE +.PP +\-xhelp +.RS 4 +コマンドライン・オプションの拡張ヘルプを出力します。 +.RE +.SH "例" +.PP +\fBExample 1\fR, Nashornを使用したスクリプトの実行 +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jjs script\&.js +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 2\fR, 対話型モードでのNashornの実行 +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +>> \fBjjs\fR +jjs> \fBprintln("Hello, World!")\fR +Hello, World! +jjs> \fBquit()\fR +>> +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\fBExample 3\fR, Nashornへの引数の渡し +.RS 4 +.sp +.if n \{\ +.RS 4 +.\} +.nf +>> \fBjjs \-\- a b c\fR +jjs> \fBarguments\&.join(", ")\fR +a, b, c +jjs> +.fi +.if n \{\ +.RE +.\} +.RE +.SH "関連項目" +.PP +\fIjrunscript\fR +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jmap.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jmap.1 index 15ea13f6f2e..cc465a08b4e 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jmap.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jmap.1 @@ -1,179 +1,209 @@ -." 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 -." 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 jmap 1 "07 May 2011" - -.LP -.SH "名前" -jmap \- メモリーマップ -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jmap +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jmap" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jmap \- プロセスやコア・ファイルまたはリモート・デバッグ・サーバーの、共用オブジェクト・メモリー・マップまたはヒープ・メモリーの詳細を出力します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jmap\fP [ option ] pid -.fl -\f3jmap\fP [ option ] executable core -.fl -\f3jmap\fP [ option ] [server\-id@]remote\-hostname\-or\-IP -.fl +\fIjmap\fR [ \fIoptions\fR ] \fIpid\fR .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -option -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。 -.TP 3 -pid -印刷するメモリーマップのプロセス ID。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 -.br -.TP 3 -executable -コアダンプの作成元の Java 実行可能ファイルです。 -.br -.TP 3 -core -印刷するメモリーマップのコアファイル。 -.br -.TP 3 -remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 -.br -.TP 3 -server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 -.br +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjmap\fR [ \fIoptions\fR ] \fIexecutable\fR \fIcore\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjmap\fR [ \fIoptions\fR ] [ \fIpid\fR ] \fIserver\-id\fR@ ] \fIremote\-hostname\-or\-IP\fR +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIpid\fR +.RS 4 +出力するメモリー・マップのプロセスID。プロセスはJavaプロセスである必要があります。マシン上で実行しているJavaプロセスの一覧を取得するには、jps(1)コマンドを使用します。 +.RE +.PP +\fI実行可能ファイル\fR +.RS 4 +コア・ダンプの作成元のJava実行可能ファイル。 +.RE +.PP +\fIコア\fR +.RS 4 +出力するメモリー・マップのコア・ファイル。 +.RE +.PP +\fIremote\-hostname\-or\-IP\fR +.RS 4 +リモート・デバッグ・サーバーの\fIホスト名\fRまたは\fIIP\fRアドレス。jsadebugd(1)を参照してください。 +.RE +.PP +\fIserver\-id\fR +.RS 4 +複数のデバッグ・サーバーが同一のリモート・ホストで実行している場合の、オプション固有のID。 .RE - -.LP .SH "説明" -.LP -.LP -\f3jmap\fP は、指定されたプロセスやコアファイルまたはリモートデバッグサーバーの、共用オブジェクトメモリーマップまたはヒープメモリーの詳細を印刷します。指定されたプロセスが 64 ビット VM 上で実行されている場合、\f2\-J\-d64\fP オプションを指定しなければならない場合があります。次に例を示します。 -.LP -.nf -\f3 -.fl -jmap \-J\-d64 \-heap pid -.fl -\fP -.fi - -.LP -.LP -\f3注: このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。dbgeng.dll が存在していない Windows システムでは、「Debugging Tools For Windows」をインストールしないとこれらのツールが正常に動作しません。また、 \fP\f4PATH\fP\f3 環境変数には、ターゲットプロセスによって使用される \fP\f4jvm.dll\fP\f3 の場所、またはクラッシュダンプファイルが生成された場所が含まれるようにしてください。\fP -.LP -.LP -\f3次に例を示します。 \fP\f4set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -.LP -.br - -.LP +.PP +\fIjmap\fRコマンドは、指定されたプロセスやコア・ファイルまたはリモート・デバッグ・サーバーの、共用オブジェクト・メモリー・マップまたはヒープ・メモリーの詳細を出力します。指定されたプロセスが64ビットJava仮想マシン(JVM)上で実行されている場合、\fI\-J\-d64\fRオプションを指定する必要がある場合があります。次に例を示します。\fIjmap\fR +\fI\-J\-d64 \-heap pid\fR。 +.PP +\fB注意:\fR +このユーティリティはサポート対象外であり、将来のJDKのリリースでは利用できなくなる可能性があります。\fIdbgeng\&.dll\fRファイルが存在していないWindowsシステムでは、Debugging Tools For Windowsをインストールしないとこれらのツールが正常に動作しません。\fIPATH\fR環境変数には、ターゲット・プロセスによって使用される\fIjvm\&.dll\fRの場所、またはクラッシュ・ダンプ・ファイルが生成された場所が含まれるようにしてください。次に例を示します。\fIset PATH=%JDK_HOME%\ejre\ebin\eclient;%PATH%\fR。 .SH "オプション" -.LP -.RS 3 -.TP 3 -<オプションなし> -オプションを使用しない場合、jmap は共用オブジェクトマッピングを印刷します。ターゲット VM にロードされた共用オブジェクトごとに、開始アドレス、マッピングのサイズ、および共用オブジェクトファイルのフルパスが印刷されます。これは、Solaris \f3pmap\fP ユーティリティーと類似しています。 -.br -.TP 3 -\-dump:[live,]format=b,file=<filename> -Java ヒープを hprof バイナリ形式で filename にダンプします。\f2live\fP サブオプションは省略可能です。これが指定された場合、ヒープ内で生存中のオブジェクトのみがダンプされます。ヒープダンプを参照するには、生成されたファイルを jhat(1) (Java Heap Analysis Tool) を使って読み取ります。 -.br -.TP 3 -\-finalizerinfo -ファイナライズを待っているオブジェクトに関する情報を出力します。 -.br -.TP 3 -\-heap -ヒープサマリーを印刷します。使用される GC アルゴリズム、ヒープ構成、および世代ごとのヒープ使用率が印刷されます。 -.br -.TP 3 -\-histo[:live] -ヒープのヒストグラムを印刷します。Java クラスごとに、オブジェクトの数、バイト単位でのメモリーサイズ、および完全修飾クラス名が印刷されます。VM 内部クラス名は、「*」の接頭辞を付けて印刷されます。\f2live\fP サブオプションが指定された場合、生存中のオブジェクトのみがカウントされます。 -.br -.TP 3 -\-permstat -Permanent 世代の Java ヒープの、クラスローダー関連の統計データを印刷します。クラスローダーごとに、その名前、状態、アドレス、親クラスローダー、およびクラスローダーがロードしたクラスの数とサイズが印刷されます。さらに、intern された文字列の数とサイズも出力されます。 -.br -.TP 3 -\-F -強制 (Force)。pid が応答しない場合に、jmap \-dump または jmap \-histo オプションとともに使用します。このモードでは、\f2live\fP サブオプションはサポートされません。 -.br -.TP 3 -\-h -ヘルプメッセージを印刷します。 -.br -.br -.TP 3 -\-help -ヘルプメッセージを印刷します。 -.br -.br -.TP 3 -\-J<flag> -jmap が実行されている Java 仮想マシンに <flag> を渡します。 -.br +.PP +<オプションなし> +.RS 4 +オプションを使用しない場合、\fIjmap\fRコマンドは共用オブジェクト・マッピングを出力します。ターゲットJVMにロードされた共用オブジェクトごとに、開始アドレス、マッピングのサイズおよび共用オブジェクト・ファイルのフルパスが出力されます。この動作は、Oracle Solaris +\fIpmap\fRユーティリティと類似しています。 +.RE +.PP +\-dump:[live,] format=b, file=\fIfilename\fR +.RS 4 +Javaヒープを\fIhprof\fRバイナリ形式で\fIfilename\fRにダンプします。\fIlive\fRサブオプションはオプションですが、指定した場合、ヒープ内のアクティブなオブジェクトのみがダンプされます。ヒープ・ダンプを参照するには、jhat(1)コマンドを使用して生成されたファイルを読み取ります。 +.RE +.PP +\-finalizerinfo +.RS 4 +ファイナライズを待っているオブジェクトに関する情報を出力します。 +.RE +.PP +\-heap +.RS 4 +使用されているガベージ・コレクションのヒープ・サマリー、ヘッダー構成、および世代関連のヒープ使用状況を出力します。さらに、internされた文字列の数とサイズも出力されます。 +.RE +.PP +\-histo[:live] +.RS 4 +ヒープのヒストグラムを出力します。Javaクラスごとに、オブジェクトの数、バイト単位でのメモリー・サイズ、および完全修飾クラス名が出力されます。JVMの内部クラス名はアスタリスク(*)の接頭辞を付けて出力されます。\fIlive\fRサブオプションが指定された場合、アクティブなオブジェクトのみがカウントされます。 +.RE +.PP +\-clstats +.RS 4 +Javaヒープの、クラス・ローダー関連の統計データを出力します。クラス・ローダーごとに、その名前、状態、アドレス、親クラス・ローダー、およびクラス・ローダーがロードしたクラスの数とサイズが出力されます。 +.RE +.PP +\-F +.RS 4 +強制します。PIDが応答しないときに、このオプションを\fIjmap \-dump\fRまたは\fIjmap \-histo\fRオプションとともに使用します。このモードでは、\fIlive\fRサブオプションはサポートされません。 +.RE +.PP +\-h +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.PP +\-J\fIflag\fR +.RS 4 +\fIjmap\fRコマンドを実行しているJava仮想マシンに\fIflag\fRを渡します。 .RE - -.LP .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -pmap (1) -.TP 2 -o -jhat(1) -.TP 2 -o -jps(1) -.TP 2 -o -jsadebugd(1) +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jhat(1) .RE - -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jsadebugd(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jps.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jps.1 index bcfb9bed82e..d6a7ae886f9 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jps.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jps.1 @@ -1,278 +1,263 @@ -." 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 -." 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 jps 1 "07 May 2011" - -.LP -.SH "名前" -jps \- Java 仮想マシンプロセスステータスツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -ホスト識別子 -.TP 2 -o -出力形式 -.TP 2 -o -例 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jps +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: モニタリング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jps" "1" "2013年11月21日" "JDK 8" "モニタリング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jps \- ターゲット・システム上で計測されたJava仮想マシン(JVM)を一覧表示します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jps\fP [ \f2options\fP ] [ \f2hostid\fP ] -.br - -.fl +\fIjps\fR [ \fIoptions\fR ] [ \fIhostid\fR ] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。 -.TP 3 -hostid -プロセスレポートを生成するホストのホスト識別子。\f2hostid\fP には、通信プロトコル、ポート番号、実装に固有な他のデータを指定したオプションコンポーネントを含めることができます。 +.if n \{\ .RE - -.LP -.SH " 説明" -.LP -.LP -\f3jps\fP ツールは、ターゲットシステム上で計測された HotSpot Java 仮想マシン (JVM) を一覧表示します。このツールで表示できるレポート情報は、アクセス権を持った JVM に関するものに限定されます。 -.LP -.LP -\f2hostid\fP を指定せずに \f3jps\fP を実行した場合、ローカルホストで計測された JVM が検索されます。\f2hostid\fP を指定して起動した場合、指定されたプロトコルとポートを使用して、指定されたホスト上の JVM を検索します。\f3jstatd\fP プロセスがターゲットホスト上で実行されていると想定されます。 -.LP -.LP -\f3jps\fP コマンドは、ターゲットシステムで計測された各 JVM について、ローカル VM 識別子、つまり \f2lvmid\fP をレポートします。\f3lvmid\fP は、必須ではありませんが、一般的には JVM プロセスに対するオペレーティングシステムのプロセス識別子です。オプションを指定しない場合、\f3jps\fP によって、各 Java アプリケーションの \f2lvmid\fP が一覧表示され、それぞれにアプリケーションのクラス名または JAR ファイル名が簡単な形式で示されます。この簡単な形式のクラス名と JAR ファイル名では、クラスのパッケージ情報または JAR ファイルパス情報が省略されています。 -.LP -.LP -\f3jps\fP コマンドは、\f3Java\fP 起動ツールを使用して \f2main\fP メソッドに渡されるクラス名と引数を検索します。独自の起動ツールを使用してターゲット JVM を起動した場合は、 \f2main\fP メソッドに渡されるクラス名 (または JAR ファイル名) と引数は利用できません。この場合、\f3jps\fP コマンドは、main メソッドへ渡されるクラス名 (または JAR ファイル名) と引数に対して、文字列 \f2Unknown\fP を出力します。 -.LP -.LP -\f3jps\fP コマンドで生成される JVM のリストは、このコマンドを実行する主体に与えられたアクセス権に基づき、制限される場合があります。このコマンドは、オペレーティングシステム独自のアクセス制御機構による決定に基づいて、主体にアクセス権が与えられている JVM だけを一覧表示します。 -.LP -.LP -\f3注:\fP このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 -.LP +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIhostid\fR +.RS 4 +プロセス・レポートを生成するホストの識別子。\fIhostid\fRには、通信プロトコル、ポート番号、実装に固有な他のデータを指定したオプション・コンポーネントを含めることができます。ホスト識別子を参照してください。 +.RE +.SH "説明" +.PP +\fIjps\fRコマンドは、ターゲット・システム上で計測されたJava HotSpot VMを一覧表示します。このコマンドで表示できるレポート情報は、アクセス権を持ったJVMに関するものに限定されます。 +.PP +\fIhostid\fRを指定せずに\fIjps\fRコマンドを実行した場合、ローカル・ホストで計測されたJVMが検索されます。\fIhostid\fRを指定して起動した場合、指定されたプロトコルとポートを使用して、指定されたホスト上のJVMを検索します。\fIjstatd\fRプロセスがターゲット・ホスト上で実行されていると想定されます。 +.PP +\fIjps\fRコマンドは、ターゲット・システムで計測された各JVMについて、ローカルVM識別子、つまり\fIlvmid\fRをレポートします。\fIlvmid\fRは、一般的にはJVMプロセスに対するオペレーティング・システムのプロセス識別子ですが、必ずしもそうであるとは限りません。オプションを指定しない場合、\fIjps\fRによって、各Javaアプリケーションの\fIlvmid\fRが一覧表示され、それぞれにアプリケーションのクラス名またはJARファイル名が簡単な形式で示されます。この簡単な形式のクラス名とJARファイル名では、クラスのパッケージ情報またはJARファイル・パス情報が省略されています。 +.PP +\fIjps\fRコマンドは、Java起動ツールを使用してmainメソッドに渡されるクラス名と引数を検索します。独自の起動ツールを使用してターゲットJVMを起動した場合は、\fImain\fRメソッドに渡されるクラス名またはJARファイル名と引数は利用できません。この場合、\fIjps\fRコマンドは、\fImain\fRメソッドに渡されるクラス名またはJARファイル名と引数に対して、文字列\fIUnknown\fRを出力します。 +.PP +\fIjps\fRコマンドで生成されるJVMのリストは、このコマンドを実行するプリンシパルに与えられたアクセス権に基づき、制限される場合があります。このコマンドは、オペレーティング・システム独自のアクセス制御機構による決定に基づいて、プリンシパルにアクセス権が与えられているJVMのみを一覧表示します。 .SH "オプション" -.LP -.LP -\f3jps\fP コマンドでは、コマンドの出力を変更するオプションが多数サポートされています。将来、これらのオプションは、変更または廃止される可能性があります。 -.LP -.RS 3 -.TP 3 -\-q -クラス名、JAR ファイル名、および \f2main\fP メソッドに渡された引数の出力を抑制し、ローカル VM 識別子の一覧のみを生成します。 -.TP 3 -\-m -main メソッドに渡される引数を出力します。この出力は、組み込まれている JVM に対して null になることもあります。 -.TP 3 -\-l -アプリケーションの主要なクラスのフルパッケージ名、またはアプリケーションの JAR ファイルへのフルパス名を出力します。 -.TP 3 -\-v -JVM に渡される引数を出力します。 -.TP 3 -\-V -フラグファイル (.hotspotrc ファイルまたは \-XX:Flags=<\f2filename\fP> の引数で指定されたファイル) を通じて JVM に渡される引数を出力します。 -.TP 3 -\-Joption -\f3jps\fP が呼び出す \f3java\fP 起動ツールに、\f2option\fP を渡します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 +.PP +\fIjps\fRコマンドでは、コマンドの出力を変更するオプションが多数サポートされています。将来、これらのオプションは、変更または廃止される可能性があります。 +.PP +\-q +.RS 4 +クラス名、JARファイル名、および\fImain\fRメソッドに渡された引数の出力を抑制し、ローカルVM識別子の一覧のみを生成します。 .RE - -.LP -.SS -ホスト識別子 -.LP -.LP -ホスト識別子、つまり \f2hostid\fP は、ターゲットシステムを示す文字列です。\f2hostid\fP 文字列の構文の大部分は、URI の構文に対応しています。 -.LP -.nf -\f3 -.fl -[\fP\f4protocol\fP\f3:][[//]\fP\f4hostname\fP\f3][:\fP\f4port\fP\f3][/\fP\f4servername\fP\f3]\fP -.br -\f3 -.fl -\fP -.fi - -.LP -.RS 3 -.TP 3 -protocol -通信プロトコルです。\f2protocol\fP が省略され、\f2hostname\fP が指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカルプロトコルになります。\f2protocol\fP が省略され、\f2hostname\fP が指定されている場合は、デフォルトプロトコルは \f3rmi\fP になります。 -.TP 3 -hostname -ターゲットホストを示すホスト名または IP アドレスです。\f2hostname\fP が省略されている場合は、ターゲットホストはローカルホストになります。 -.TP 3 -port -リモートサーバーと通信するためのデフォルトポートです。\f2hostname\fP が省略されているか、\f2protocol\fP で最適化されたローカルプロトコルが指定されている場合、\f2port\fP は無視されます。そうでなければ、\f2port\fP パラメータの扱いは、実装によって異なります。デフォルトの \f3rmi\fP プロトコルの場合、\f2port\fP は、リモートホスト上の rmiregistry のポート番号を示します。\f2port\fP が省略され、\f2protocol\fP で \f3rmi\fP が指定されている場合、デフォルトの rmiregistry ポート (1099) が使用されます。 -.TP 3 -servername -このパラメータの扱いは、実装によって異なります。最適化されたローカルプロトコルの場合、このフィールドは無視されます。\f3rmi\fP プロトコルの場合、このパラメータは、リモートホスト上の RMI リモートオブジェクトの名前を示す文字列になります。jstatd(1) コマンドについては、\f3\-n\fP オプションを参照してください。 +.PP +\-m +.RS 4 +\fImain\fRメソッドに渡される引数を出力します。この出力は、組み込まれているJVMに対して\fInull\fRになることもあります。 .RE - -.LP -.SH "出力形式" -.LP -.LP -\f3jps\fP コマンドの出力は、次のパターンに従います。 -.LP +.PP +\-l +.RS 4 +アプリケーションの\fImain\fRクラスのフル・パッケージ名、またはアプリケーションのJARファイルへのフルパス名を出力します。 +.RE +.PP +\-v +.RS 4 +JVMに渡される引数を表示します。 +.RE +.PP +\-V +.RS 4 +クラス名、JARファイル名、およびmaiメソッドに渡された引数の出力を抑制し、ローカルVM識別子の一覧のみを生成します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +JVMに\fIoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されている\fIオプション\fRを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "ホスト識別子" +.PP +ホスト識別子、つまり\fIhostid\fRは、ターゲット・システムを示す文字列です。\fIhostid\fR文字列の構文は、URIの構文に対応しています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f4lvmid\fP\f3 [ [ \fP\f4classname\fP\f3 | \fP\f4JARfilename\fP\f3 | "Unknown"] [ \fP\f4arg\fP\f3* ] [ \fP\f4jvmarg\fP\f3* ] ]\fP -.br -\f3 -.fl -\fP +[protocol:][[//]hostname][:port][/servername] .fi - -.LP -.LP -すべての出力トークンは空白で区切ります。\f2arg\fP の中で空白を使用すると、実際の定位置パラメータに引数をマッピングしようとするときに、あいまいになります。 -.br -.br -\f3注\fP: 将来のリリースでこの形式は変更される可能性があるため、\f3jps\fP の出力を解析するスクリプトは作成しないことをお勧めします。\f3jps\fP 出力を解析するスクリプトを作成すると、このツールの将来のリリースで、作成したスクリプトを変更する必要が予測されます。 -.br - -.LP +.if n \{\ +.RE +.\} +.PP +\fIprotocol\fR +.RS 4 +通信プロトコルです。\fIprotocol\fRが省略され、\fIhostname\fRが指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカル・プロトコルになります。プロトコルが省略され、ホスト名が指定されている場合は、デフォルト・プロトコルは\fIrmi\fRになります。 +.RE +.PP +hostname +.RS 4 +ターゲット・ホストを示すホスト名またはIPアドレスです。\fIhostname\fRパラメータが省略されている場合は、ターゲット・ホストはローカル・ホストになります。 +.RE +.PP +port +.RS 4 +リモート・サーバーと通信するためのデフォルト・ポートです。\fIhostname\fRパラメータが省略されているか、\fIprotocol\fRパラメータが、最適化されたローカル・プロトコルを指定している場合、\fIport\fRパラメータは無視されます。それ以外の場合、\fIport\fRパラメータの扱いは、実装によって異なります。デフォルトの +\fIrmi\fRプロトコルの場合、\fIport\fRパラメータは、リモート・ホスト上のrmiregistryのポート番号を示します。\fIport\fRパラメータが省略されているか、\fIprotocol\fRパラメータが\fIrmi\fRを示している場合、デフォルトのrmiregistryポート(1099)が使用されます。 +.RE +.PP +servername +.RS 4 +このパラメータの扱いは、実装によって異なります。最適化されたローカル・プロトコルの場合、このフィールドは無視されます。\fIrmi\fRプロトコルの場合、このパラメータは、リモート・ホスト上のRMIリモート・オブジェクトの名前を示す文字列になります。詳細は、\fIjstatd\fRコマンドの\fI\-n\fRオプションを参照してください。 +.RE +.SH "出力フォーマット" +.PP +\fIjps\fRコマンドの出力は、次のパターンに従います。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +lvmid [ [ classname | JARfilename | "Unknown"] [ arg* ] [ jvmarg* ] ] +.fi +.if n \{\ +.RE +.\} +.PP +すべての出力トークンは空白文字で区切られます。\fIarg\fR値の中で空白を使用すると、実際の定位置パラメータに引数をマッピングしようとするときに、あいまいになります。 +.PP +\fB注意:\fR +将来のリリースでこの形式は変更される可能性があるため、\fIjps\fRの出力を解析するスクリプトは作成しないことをお薦めします。\fIjps\fR出力を解析するスクリプトを作成すると、このツールの将来のリリースで、作成したスクリプトの変更が必要になる可能性があります。 .SH "例" -.LP -.LP -この節では、\f3jps\fP コマンドの例を示します。 -.LP -.LP -ローカルホスト上で計測された JVM を一覧表示する場合: -.LP +.PP +この項では、\fIjps\fRコマンドの例を示します。 +.PP +ローカル・ホスト上で計測されたJVMを一覧表示する場合: +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jps\fP -.br - -.fl -18027 Java2Demo.JAR -.br - -.fl +jps +18027 Java2Demo\&.JAR 18032 jps -.br - -.fl 18005 jstat -.br - -.fl .fi - -.LP -.LP -リモートホスト上で計測された JVM を一覧表示する場合: -.LP -.LP -この例では、\f3jstat\fP サーバーと、その内部 RMI レジストリまたは別の外部 \f3rmiregistry\fP プロセスのいずれかとが、リモートホストのデフォルトポート (ポート 1099) で実行されていると想定しています。また、ローカルホストが、リモートホストへの有効なアクセス権を持っていることも想定しています。この例には、\f2\-l\fP オプションも含まれ、クラス名または JAR ファイル名を詳細な形式で出力します。 -.LP -.nf -\f3 -.fl -\fP\f3jps \-l remote.domain\fP -.br - -.fl -3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR -.br - -.fl -2857 sun.tools.jstatd.jstatd -.br - -.fl -.fi - -.LP -.LP -RMI レジストリにデフォルトではないポートを使用して、リモートホスト上で計測された JVM を一覧表示する場合: -.LP -.LP -この例では、内部 RMI レジストリがポート 2002 にバインドされた \f3jstatd\fP サーバーが、リモートホスト上で実行していると想定しています。また、\f2\-m\fP オプションを使用して、一覧表示されたそれぞれの Java アプリケーションの \f2main\fP メソッドに渡される引数を組み込んでいます。 -.LP -.nf -\f3 -.fl -\fP\f3jps \-m remote.domain:2002\fP -.br - -.fl -3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR -.br - -.fl -3102 sun.tools.jstatd.jstatd \-p 2002 -.fl -.fi - -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -「java(1) \- Java アプリケーション起動ツール」 -.TP 2 -o -「jstat(1) \- Java 仮想マシン統計データ監視ツール」 -.TP 2 -o -「jstatd(1) \- 仮想マシン jstat デーモン」 -.TP 2 -o -「rmiregistry(1) \- Java リモートオブジェクトレジストリ」 +.if n \{\ .RE - -.LP - +.\} +.PP +次の例では、リモート・ホスト上で計測されたJVMを一覧表示します。この例では、\fIjstat\fRサーバーと、その内部RMIレジストリまたは別の外部rmiregistryプロセスのいずれかが、リモート・ホストのデフォルト・ポート(ポート1099)で実行されていると想定しています。また、ローカル・ホストが、リモート・ホストへの有効なアクセス権を持っていることも想定しています。この例には、\fI\-l\fRオプションも含まれ、クラス名またはJARファイル名を詳細な形式で出力します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jps \-l remote\&.domain +3002 /opt/jdk1\&.7\&.0/demo/jfc/Java2D/Java2Demo\&.JAR +2857 sun\&.tools\&.jstatd\&.jstatd +.fi +.if n \{\ +.RE +.\} +.PP +次の例では、RMIレジストリにデフォルトではないポートを使用して、リモート・ホスト上で計測されたJVMを一覧表示します。この例では、内部RMIレジストリがポート2002にバインドされた\fIjstatd\fRサーバーが、リモート・ホスト上で実行されていると想定しています。また、\fI\-m\fRオプションを使用して、一覧表示されたそれぞれのJavaアプリケーションの\fImain\fRメソッドに渡される引数を組み込んでいます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jps \-m remote\&.domain:2002 +3002 /opt/jdk1\&.7\&.0/demo/jfc/Java2D/Java2Demo\&.JAR +3102 sun\&.tools\&.jstatd\&.jstatd \-p 2002 +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jstat(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jstatd(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rmiregistry(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jrunscript.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jrunscript.1 index 3f83aa5c428..f53c29f59c7 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jrunscript.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jrunscript.1 @@ -1,208 +1,206 @@ -." 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 -." 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 jrunscript 1 "07 May 2011" - -.LP -.SH "名前" -jrunscript \- コマンド行スクリプトシェル -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -引数 -.TP 2 -o -例 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jrunscript +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: スクリプティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jrunscript" "1" "2013年11月21日" "JDK 8" "スクリプティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jrunscript \- 対話型モードとバッチ・モードをサポートするコマンドライン・スクリプト・シェルを実行します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jrunscript\fP [ \f2options\fP ] [ arguments... ] -.fl +\fIjrunscript\fR [\fIoptions\fR] [\fIarguments\fR] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -options -オプションを使用する場合、コマンド名の直後に記述してください。 -.TP 3 -arguments -引数を使用する場合、オプションまたはコマンド名の直後に記述してください。 +.if n \{\ .RE - -.LP -.SH " 説明" -.LP -.LP -\f3jrunscript\fP はコマンド行スクリプトシェルです。jrunscript は、対話型 (読み取り \- 評価 \- 出力) モードとバッチ (\-f オプション) モードの両方のスクリプト実行をサポートします。これはスクリプト言語に依存しないシェルです。デフォルトの使用言語は JavaScript ですが、\-l オプションを使えばほかの言語も指定できます。jrunscript は、Java とスクリプト言語との通信によって「探求的なプログラミング」スタイルをサポートします。 -.LP -.LP -\f3注:\fP このツールは\f3試験的なもの\fPであり、将来の JDK のバージョンでは\f3利用できなくなる\fP可能性があります。 -.LP +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIarguments\fR +.RS 4 +引数を使用する場合、オプションまたはコマンド名の直後に記述してください。引数を参照してください。 +.RE +.SH "説明" +.PP +\fIjrunscript\fRコマンドは、言語に依存しないコマンドライン・スクリプト・シェルです。\fIjrunscript\fRは、対話型(read\-eval\-print)モードとバッチ(\fI\-f\fRオプション)・モードの両方のスクリプト実行をサポートします。デフォルトの使用言語はJavaScriptですが、\fI\-l\fRオプションを使用すれば他の言語も指定できます。\fIjrunscript\fRコマンドは、Javaとスクリプト言語との通信を使用して探求的なプログラミング・スタイルをサポートします。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-classpath path -スクリプトからのアクセス対象となるユーザーの .class ファイルの検索場所を指定します。 -.TP 3 -\-cp path -\-classpath \f2path\fP と同義です。 -.TP 3 -\-Dname=value -Java のシステムプロパティーを設定します。 -.TP 3 -\-J<flag> -jrunscript が実行されている Java 仮想マシンに <flag> を渡します。 -.TP 3 -\-l language -指定されたスクリプト言語を使用します。デフォルトでは JavaScript が使用されます。ほかのスクリプト言語を使用するには、対応するスクリプトエンジンの JAR ファイルも指定する必要があります。それには、\-cp、\-classpath のいずれかのオプションを使用します。 -.TP 3 -\-e script -指定されたスクリプトを評価します。このオプションを使えば、コマンド行にすべてが指定された「1 行」スクリプトを実行できます。 -.TP 3 -\-encoding encoding -スクリプトファイルの読み取り時に使用する文字エンコーディングを指定します。 -.TP 3 -\-f script\-file -指定されたスクリプトファイルを評価します (バッチモード)。 -.TP 3 -\-f \- -標準入力からスクリプトを読み取り、それを評価します (対話型モード)。 -.TP 3 -\-help\ -ヘルプメッセージを出力して終了します。 -.TP 3 -\-?\ -ヘルプメッセージを出力して終了します。 -.TP 3 -\-q\ -利用可能なすべてのスクリプトエンジンを一覧表示したあと、終了します。 +.PP +\-classpath \fIpath\fR +.RS 4 +スクリプトがアクセスする必要のあるクラス・ファイルの場所を示します。 +.RE +.PP +\-cp \fIpath\fR +.RS 4 +\fI\-classpath\fR +\fIpath\fRと同じです。 +.RE +.PP +\-D\fIname\fR=\fIvalue\fR +.RS 4 +Javaのシステム・プロパティを設定します。 +.RE +.PP +\-J\fIflag\fR +.RS 4 +\fIflag\fRを、\fIjrunscript\fRコマンドが実行されているJava仮想マシンに直接渡します。 +.RE +.PP +\-I \fIlanguage\fR +.RS 4 +指定されたスクリプト言語を使用します。デフォルトではJavaScriptが使用されます。他のスクリプト言語を使用するには、\fI\-cp\fRまたは\fI\-classpath\fRオプションを使用して、対応するスクリプト・エンジンのJARファイルを指定する必要があります。 +.RE +.PP +\-e \fIscript\fR +.RS 4 +指定されたスクリプトを評価します。このオプションを使用すれば、コマンドラインにすべてが指定された1行スクリプトを実行できます。 +.RE +.PP +\-encoding \fIencoding\fR +.RS 4 +スクリプト・ファイルの読取り時に使用する文字エンコーディングを指定します。 +.RE +.PP +\-f \fIscript\-file\fR +.RS 4 +指定されたスクリプト・ファイル(バッチ・モード)を評価します。 +.RE +.PP +\-f \- +.RS 4 +標準入力からスクリプトを読み取り、それを評価します(対話型モード)。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示して終了します。 +.RE +.PP +\-? +.RS 4 +ヘルプ・メッセージを表示して終了します。 +.RE +.PP +\-q +.RS 4 +利用可能なすべてのスクリプト・エンジンを一覧表示したあと、終了します。 .RE - -.LP .SH "引数" -.LP -.LP -[arguments...] が存在していて、かつ \f3\-e\fP、\f3\-f\fP のいずれのオプションも使用されなかった場合、最初の引数がスクリプトファイルとなり、他の引数が存在する場合はスクリプト引数として渡されます。[arguments..] と、\f3\-e\fP または \f3\-f\fP が使用されている場合、すべての [arguments..] がスクリプト引数として渡されます。[arguments..]、\f3\-e\fP、\f3\-f\fP がどれも存在しなかった場合は、対話型モードが使用されます。スクリプトからスクリプト引数を使用するには、「arguments」という名前の String 配列型のエンジン変数を使用します。 -.LP +.PP +argumentsが存在していて、かつ\fI\-e\fR、\fI\-f\fRのいずれのオプションも使用されなかった場合、最初の引数がスクリプト・ファイルとなり、他の引数が存在する場合はスクリプトに渡されます。argumentsと、\fI\-e\fRまたは\fI\-f\fRオプションが使用されている場合、すべてのargumentsがスクリプトに渡されます。arguments、\fI\-e\fR、\fI\-f\fRがどれも存在しなかった場合は、対話型モードが使用されます。スクリプトからスクリプト引数を使用するには、\fIarguments\fRという名前の\fIString\fR配列型のエンジン変数を使用します。 .SH "例" -.LP -.SS -インラインスクリプトの実行 -.LP +.SS "インライン・スクリプトの実行" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jrunscript \-e "print('hello world')" -.fl -jrunscript \-e "cat('http://java.sun.com')" -.fl -\fP +jrunscript \-e "print(\*(Aqhello world\*(Aq)" +jrunscript \-e "cat(\*(Aqhttp://www\&.example\&.com\*(Aq)" .fi - -.LP -.SS -指定された言語を使用し、指定されたスクリプトファイルを評価する -.LP +.if n \{\ +.RE +.\} +.SS "指定された言語の使用およびスクリプト・ファイルの評価" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jrunscript \-l js \-f test.js -.fl -\fP +jrunscript \-l js \-f test\&.js .fi - -.LP -.SS -対話型モード -.LP +.if n \{\ +.RE +.\} +.SS "対話型モード" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl jrunscript -.fl -js> print('Hello World\\n'); -.fl +js> print(\*(AqHello World\en\*(Aq); Hello World -.fl js> 34 + 55 -.fl -89.0 -.fl -js> t = new java.lang.Thread(function() { print('Hello World\\n'); }) -.fl +89\&.0 +js> t = new java\&.lang\&.Thread(function() { print(\*(AqHello World\en\*(Aq); }) Thread[Thread\-0,5,main] -.fl -js> t.start() -.fl +js> t\&.start() js> Hello World -.fl - -.fl -js> -.fl -\fP -.fi - -.LP -.SS -スクリプト引数を指定してスクリプトファイルを実行する -.LP -.nf -\f3 -.fl -jrunscript test.js arg1 arg2 arg3 -.fl -\fP -.fi - -.LP -test.js が実行対象となるスクリプトファイルであり、arg1、arg2、および arg3 はスクリプト引数としてスクリプトに渡されます。スクリプトは「arguments」配列を使ってこれらにアクセスできます。 -.SH "関連項目" -.LP -.LP -JavaScript が使用される場合、jrunscript は、最初のユーザー定義スクリプトを評価する前に、いくつかの組み込み関数や組み込みオブジェクトを初期化します。これらの JavaScript 組み込み機能については、jsdocs を参照してください。 -.LP +js> +.fi +.if n \{\ +.RE +.\} +.SS "スクリプト引数を指定したスクリプト・ファイルの実行" +.PP +test\&.jsファイルはスクリプト・ファイルです。\fIarg1\fR、\fIarg2\fRおよび\fIarg3\fRの各引数がスクリプトに渡されます。スクリプトはarguments配列を使用してこれらの引数にアクセスできます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jrunscript test\&.js arg1 arg2 arg3 +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.PP +JavaScriptが使用される場合、ユーザー定義スクリプトを評価する前に、\fIjrunscript\fRコマンドはいくつかの組込み関数や組込みオブジェクトを初期化します。これらのJavaScriptの組込みについては、http://code\&.google\&.com/p/jsdoc\-toolkit/にある +JsDoc\-Toolkitを参照してください。 +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jsadebugd.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jsadebugd.1 index 077543a2367..0425f1af70a 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jsadebugd.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jsadebugd.1 @@ -1,142 +1,171 @@ -." 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 -." 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 jsadebugd 1 "07 May 2011" - -.LP -.SH "名前" -jsadebugd \- サービスアビリティーエージェントデバッグデーモン -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jsadebugd +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jsadebugd" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jsadebugd \- Javaプロセスまたはコア・ファイルに接続し、デバッグ・サーバーとして機能します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jsadebugd\fP pid [ server\-id ] -.fl -\f3jsadebugd\fP executable core [ server\-id ] -.fl +\fIjsadebugd\fR \fIpid\fR [ \fIserver\-id\fR ] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -pid -デバッグサーバーが接続するプロセスのプロセス ID です。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。単一のプロセスに接続できるデバッグサーバーのインスタンスは、1 つに制限されます。 +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -executable +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjsadebugd\fR \fIexecutable\fR \fIcore\fR [ \fIserver\-id\fR ] +.fi +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -コアダンプの作成元になる Java 実行可能ファイルです。 +.\} +.PP +\fIpid\fR +.RS 4 +デバッグ・サーバーが接続するプロセスのプロセスIDです。プロセスはJavaプロセスである必要があります。マシン上で実行しているJavaプロセスの一覧を取得するには、jps(1)コマンドを使用します。単一のプロセスに接続できるデバッグ・サーバーのインスタンスは、1つに制限されます。 .RE - -.LP -.RS 3 -.TP 3 -core -デバッグサーバーを接続するコアファイルです。 +.PP +\fI実行可能ファイル\fR +.RS 4 +コア・ダンプの作成元のJava実行可能ファイル。 .RE - -.LP -.RS 3 -.TP 3 -server\-id -複数のデバッグサーバーが同一のマシン上で実行している場合に必要になる、オプション固有の ID です。この ID は、リモートクライアントが、接続先のデバッグサーバーを特定するために使用する必要があります。この ID は、単一のマシン内で一意でなければなりません。 +.PP +\fIコア\fR +.RS 4 +デバッグ・サーバーを接続するコア・ファイルです。 +.RE +.PP +\fIserver\-id\fR +.RS 4 +複数のデバッグ・サーバーが同一のマシン上で実行されている場合に必要になる、オプションの一意のIDです。このIDは、リモート・クライアントが、接続先のデバッグ・サーバーを特定するために使用する必要があります。このIDは、単一のマシン内で一意にする必要があります。 .RE - -.LP .SH "説明" -.LP -.LP -\f3jsadebugd\fP は、Java プロセスまたはコアファイルに接続し、デバッグサーバーとして機能します。jstack(1)、jmap(1)、および jinfo(1) などのリモートクライアントは、Java Remote Method Invocation (RMI) を使用しているサーバーに接続できます。 \f2jsadebugd\fP を起動する前に、次のようにして -.na -\f2rmiregistry\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi を起動する必要があります。 -.LP +.PP +\fIjsadebugd\fRコマンドは、Javaプロセスまたはコア・ファイルに接続し、デバッグ・サーバーとして機能します。\fIjstack\fR、\fIjmap\fRおよび\fIjinfo\fRなどのリモート・クライアントは、Java Remote Method Invocation (RMI)を使用しているサーバーに接続できます。\fIjsadebugd\fRコマンドを起動する前に、\fIrmiregistry\fRコマンドでRMIレジストリを次のように起動します。\fI$JAVA_HOME\fRはJDKのインストール・ディレクトリです。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f4rmiregistry \-J\-Xbootclasspath/p:$JAVA_HOME/lib/sajdi.jar\fP\f3 -.fl -\fP +rmiregistry \-J\-Xbootclasspath/p:$JAVA_HOME/lib/sajdi\&.jar .fi - -.LP -.LP -ここで、 \f2$JAVA_HOME\fP は JDK インストールディレクトリです。rmiregistry が起動していない場合、jsadebugd は標準 (1099) ポートの rmiregistry を内部で起動します。デバッグサーバーは、SIGINT を送信する (Ctrl+C を押す) ことにより停止できます。 -.LP -.LP -\f3注\fP \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。dbgeng.dll が存在していない Windows システムでは、「Debugging Tools For Windows」をインストールしないとこれらのツールが正常に動作しません。また、 \f2PATH\fP 環境変数には、ターゲットプロセスによって使用される \f2jvm.dll\fP の場所、またはクラッシュダンプファイルが生成された場所が含まれるようにしてください。 -.LP -.LP -次に例を示します。 \f2set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -jinfo(1) -.TP 2 -o -jmap(1) -.TP 2 -o -jps(1) -.TP 2 -o -jstack(1) -.TP 2 -o -.na -\f2rmiregistry\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi +.if n \{\ .RE - -.LP - +.\} +.PP +RMIレジストリが起動していない場合、\fIjsadebugd\fRコマンドはRMIレジストリを標準(1099)ポートで内部で起動します。デバッグ・サーバーは、\fISIGINT\fRを送信することにより停止できます。SIGINTを送信するには、\fB[Ctrl] + [C]\fRを押します。 +.PP +\fB注意:\fR +このユーティリティはサポート対象外であり、将来のJDKのリリースでは利用できなくなる可能性があります。\fIdbgeng\&.dll\fRが存在していないWindowsシステムでは、Debugging Tools For Windowsをインストールしないとこれらのツールが正常に動作しません。\fIPATH\fR環境変数には、ターゲット・プロセスによって使用されるjvm\&.dllの場所、またはクラッシュ・ダンプ・ファイルが生成された場所が含まれるようにしてください。例: +\fIs\fR\fIet PATH=%JDK_HOME%\ejre\ebin\eclient;%PATH%\fR +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jinfo(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jmap(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jstack(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rmiregistry(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jstack.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jstack.1 index 043a6fb72a3..0afbad29b1d 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jstack.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jstack.1 @@ -1,172 +1,210 @@ -." 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 -." 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 jstack 1 "07 May 2011" - -.LP -.SH "名前" -jstack \- スタックトレース -.br - -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.br -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 -.TP 2 -o -既知のバグ -.br -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jstack +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: トラブルシューティング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jstack" "1" "2013年11月21日" "JDK 8" "トラブルシューティング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jstack \- Javaプロセス、コア・ファイルまたはリモート・デバッグ・サーバーに対するJavaスレッドのスタック・トレースを出力します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jstack\fP [ option ] pid -.fl -\f3jstack\fP [ option ] executable core -.fl -\f3jstack\fP [ option ] [server\-id@]remote\-hostname\-or\-IP -.fl +\fIjstack\fR [ \fIoptions\fR ] \fIpid\fR .fi - -.LP -.SH "パラメータ" -.LP -.LP -各オプションは互いに排他的です。オプションを使用する場合、コマンド名の直後に記述します。オプションを参照してください。 -.LP -.RS 3 -.TP 3 -pid -印刷するスタックトレースのプロセス ID です。プロセスは Java プロセスである必要があります。マシン上で実行している Java プロセスの一覧を取得するには、jps(1) を使用します。 +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -executable -コアダンプの作成元の Java 実行可能ファイルです。 -.br -.TP 3 -core -印刷するスタックトレースのコアファイルです。 -.br -.TP 3 -remote\-hostname\-or\-IP -リモートデバッグサーバー (jsadebugd(1) を参照) のホスト名または IP アドレスです。 -.br -.TP 3 -server\-id -複数のデバッグサーバーが同一のリモートホストで実行している場合の、オプション固有の ID です。 +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjstack\fR [ \fIoptions\fR ] \fIexecutable\fR \fIcore\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIjstack\fR [ \fIoptions\fR ] [ \fIserver\-id\fR@ ] \fIremote\-hostname\-or\-IP\fR +.fi +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIpid\fR +.RS 4 +出力するスタック・トレースのプロセスIDです。プロセスはJavaプロセスである必要があります。マシン上で実行しているJavaプロセスの一覧を取得するには、jps(1)コマンドを使用します。 +.RE +.PP +\fI実行可能ファイル\fR +.RS 4 +コア・ダンプの作成元のJava実行可能ファイル。 +.RE +.PP +\fIコア\fR +.RS 4 +出力するスタック・トレースのコア・ファイルです。 +.RE +.PP +\fIremote\-hostname\-or\-IP\fR +.RS 4 +リモート・デバッグ・サーバーの\fIホスト名\fRまたは\fIIP\fRアドレス。jsadebugd(1)を参照してください。 +.RE +.PP +\fIserver\-id\fR +.RS 4 +複数のデバッグ・サーバーが同一のリモート・ホストで実行している場合の、オプション固有のID。 .RE - -.LP .SH "説明" -.LP -.LP -\f3jstack\fP は、指定された Java プロセスやコアファイルまたはリモートデバッグサーバーに対する Java スレッドの Java スタックトレースを印刷します。Java フレームごとに、フルクラス名、メソッド名、「bci」(バイトコードインデックス)、および行番号 (利用可能な場合) が印刷されます。\-m オプションを使用すると、jstack は、すべてのスレッドの Java フレームとネイティブフレームの両方を、「pc」(プログラムカウンタ) とともに印刷します。ネイティブフレームごとに、「pc」にもっとも近いネイティブシンボル (利用可能な場合) が印刷されます。C++ 分解名は分解解除されません。C++ 名を分解解除するには、このコマンドの出力を \f3c++filt\fP にパイプします。指定されたプロセスが 64 ビット VM 上で実行されている場合、\f2\-J\-d64\fP オプションを指定しなければならない場合があります。次に例を示します。 -.br - -.LP +.PP +\fIjstack\fRコマンドは、指定されたJavaプロセス、コア・ファイルまたはリモート・デバッグ・サーバーに対するJavaスレッドのJavaスタック・トレースを出力します。Javaフレームごとに、フルクラス名、メソッド名、バイトコード・インデックス(bci)、および行番号(利用可能な場合)が出力されます。\fI\-m\fRオプションを使用すると、\fIjstack\fRコマンドは、すべてのスレッドのJavaフレームとネイティブ・フレームの両方を、プログラム・カウンタ(PC)とともに出力します。ネイティブ・フレームごとに、PCに最も近いネイティブ・シンボル(利用可能な場合)が出力されます。C++分解名は分解解除されません。C++名を分解解除するには、このコマンドの出力を\fIc++filt\fRにパイプします。指定されたプロセスが64ビットJava仮想マシン上で実行されている場合は、\fI\-J\-d64\fRオプションを指定する必要があります(例: +\fIjstack \-J\-d64 \-m pid\fR)。 +.PP +\fB注意\fR +このユーティリティはサポート対象外であり、将来のJDKのリリースでは利用できなくなる可能性があります。dbgeng\&.dllファイルが存在していないWindowsシステムでは、Debugging Tools For Windowsをインストールしないとこれらのツールが正常に動作しません。また、\fIPATH\fR環境変数には、ターゲット・プロセスによって使用されるjvm\&.dllの場所、またはクラッシュ・ダンプ・ファイルが生成された場所が含まれるようにしてください。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jstack \-J\-d64 \-m pid -.fl -\fP +set PATH=<jdk>\ejre\ebin\eclient;%PATH% .fi - -.LP -.LP -\f3注\fP \- このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。dbgeng.dll が存在していない Windows システムでは、「Debugging Tools For Windows」をインストールしないとこれらのツールが正常に動作しません。また、 \f2PATH\fP 環境変数には、ターゲットプロセスによって使用される \f2jvm.dll\fP の場所、またはクラッシュダンプファイルが生成された場所が含まれるようにしてください。 -.LP -.LP -次に例を示します。 \f2set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP -.LP +.if n \{\ +.RE +.\} .SH "オプション" -.LP -.RS 3 -.TP 3 -\-F -「jstack [\-l] pid」が応答しない場合にスタックダンプを強制します。 -.TP 3 -\-l -長形式のリスト。所有 java.util.concurrent の -.na -\f2所有できるシンクロナイザ\fP @ -.fi -http://java.sun.com/javase/6/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.htmlの一覧など、ロックについての追加情報を印刷します。 -.TP 3 -\-m -混合モード (Java およびネイティブ C/C++ フレームの両方) のスタックトレースを印刷します。 -.TP 3 -\-h -ヘルプメッセージを印刷します。 -.br -.br -.TP 3 -\-help -ヘルプメッセージを出力します。 -.br +.PP +\-F +.RS 4 +\fIjstack\fR +[\fI\-l\fR] +\fIpid\fRが応答しない場合にスタック・ダンプを強制します。 .RE - -.LP +.PP +\-l +.RS 4 +長形式のリスト。所有\fIjava\&.util\&.concurrent\fRの所有できるシンクロナイザの一覧など、ロックについての追加情報を印刷します。http://docs\&.oracle\&.com/javase/8/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer\&.htmlにある +\fIAbstractOwnableSynchronizer\fRクラス記述を参照してください +.RE +.PP +\-m +.RS 4 +JavaおよびネイティブC/C++フレームの両方を持つ混合モードのスタック・トレースを出力します。 +.RE +.PP +\-h +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージが出力されます。 +.RE +.SH "既知の不具合" +.PP +混合モードのスタック・トレースでは、\fI\-m\fRオプションはリモート・デバッグ・サーバーでは機能しません。 .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -pstack(1) -.TP 2 -o -c++filt(1) -.TP 2 -o -jps(1) -.TP 2 -o -jsadebugd(1) +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +pstack(1) .RE - -.LP -.SH "既知のバグ" -.LP -.LP -混合モードのスタックトレース (\-m オプション使用) は、リモートデバッグサーバーでは機能しません。 -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +C++filt(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jsadebugd(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jstat.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jstat.1 index 07e724add93..046a2f37b7f 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jstat.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jstat.1 @@ -1,5446 +1,619 @@ -." 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 -." 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 jstat 1 "07 May 2011" - -.LP -.SH "名前" -jstat \- Java 仮想マシン統計データ監視ツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -仮想マシン識別子 -.TP 2 -o -オプション -.RS 3 -.TP 2 -* -一般的なオプション -.TP 2 -* -出力オプション -.RE -.TP 2 -o -例 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jstat +.\" Language: English +.\" Date: 2011年5月10日 +.\" SectDesc: モニタリング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jstat" "1" "2011年5月10日" "JDK 8" "モニタリング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jstat \- Java仮想マシン(JVM)の統計を監視します。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jstat\fP [ \f2generalOption\fP | \f2outputOptions\fP \f2vmid\fP [\f2interval\fP[s|ms] [\f2count\fP]] ] -.fl +\fIjstat\fR [ \fIgeneralOption\fR | \fIoutputOptions vmid\fR [ \fIinterval\fR[s|ms] [ \fIcount \fR] ] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -generalOption -単独で使用する一般的なコマンド行オプションです (\-help、\-options、または \-version)。 -.TP 3 -outputOptions -単一の \f2statOption\fP と、\-t、\-h、および \-J オプションのいずれかを組み合わせた、1 つまたは複数の出力オプションです。 -.TP 3 -vmid -ターゲットの Java 仮想マシン (JVM) を示す文字列である仮想マシン識別子です。一般的な構文は次のようになります。 -.nf -\f3 -.fl -[\fP\f4protocol\fP\f3:][//]\fP\f4lvmid\fP[@\f2hostname\fP[:\f2port\fP]/\f2servername\fP] -.fl -.fi -vmid 文字列の構文の大部分は、URI の構文に対応しています。\f2vmid\fP は、ローカル JVM を表す単純な整数から、通信プロトコル、ポート番号、および他の実装固有の値を示す複雑な構造まで、さまざまに異なります。詳細は、「仮想マシン識別子」を参照してください。 -.TP 3 -interval[s|ms] -秒 (s) またはミリ秒 (ms) のうち指定した単位でのサンプリング間隔です。デフォルトの単位はミリ秒です。正の整数でなければなりません。これが指定された場合、\f3jstat\fP は interval ごとに出力を生成します。 -.TP 3 -count -表示するサンプル数です。デフォルト値は無限です。つまり、\f3jstat\fP は、ターゲット JVM が終了するまで、または \f3jstat\fP コマンドが終了するまで、統計データを表示します。正の整数でなければなりません。 +.if n \{\ .RE - -.LP -.SH " 説明" -.LP -.LP -\f3jstat\fP ツールは、設置されている HotSpot Java 仮想マシン (JVM) のパフォーマンス統計データを表示します。ターゲット JVM は、仮想マシン識別子、つまり下記の \f2vmid\fP オプションによって識別されます。 -.LP -.LP -\f3注\fP: このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 -.br - -.LP -.SS -仮想マシン識別子 -.LP -.LP -\f2vmid\fP 文字列の構文の大部分は、URI の構文に対応しています。 -.LP -.nf -\f3 -.fl -[\fP\f4protocol\fP\f3:][//]\fP\f4lvmid\fP[@\f2hostname\fP][:\f2port\fP][/\f2servername\fP] -.fl -.fi - -.LP -.RS 3 -.TP 3 -protocol -通信プロトコルです。\f2protocol\fP が省略され、\f2hostname\fP が指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカルプロトコルになります。\f2protocol\fP が省略され、\f2hostname\fP が指定されている場合は、デフォルトプロトコルは \f3rmi\fP になります。 -.TP 3 -lvmid -ターゲット JVM のローカル仮想マシン識別子です。\f2lvmid\fP は、システム上の JVM を一意に識別するプラットフォーム固有の値です。\f2lvmid\fP は、仮想マシン識別子の唯一の必須要素です。\f2lvmid\fP は、絶対というわけではありませんが、一般的にはターゲット JVM プロセスに対するオペレーティングシステムのプロセス識別子です。jps(1) コマンドを使用して、\f2lvmid\fP を指定できます。また、Unix プラットフォームでは\f3ps\fP コマンドを使用して、Windows では Windows タスクマネージャーを使用して、\f2lvmid\fP を指定できます。 -.TP 3 -hostname -ターゲットホストを示すホスト名または IP アドレスです。\f2hostname\fP が省略されている場合は、ターゲットホストはローカルホストになります。 -.TP 3 -port -リモートサーバーと通信するためのデフォルトポートです。\f2hostname\fP が省略されているか、\f2protocol\fP で最適化されたローカルプロトコルが指定されている場合、\f2port\fP は無視されます。そうでなければ、\f2port\fP パラメータの扱いは、実装によって異なります。デフォルトの \f3rmi\fP プロトコルの場合、\f2port\fP は、リモートホスト上の rmiregistry のポート番号を示します。\f2port\fP が省略され、\f2protocol\fP で \f3rmi\fP が指定されている場合、デフォルトの rmiregistry ポート (1099) が使用されます。 -.TP 3 -servername -このパラメータの扱いは、実装によって異なります。最適化されたローカルプロトコルの場合、このフィールドは無視されます。\f3rmi\fP プロトコルの場合は、このパラメータは、リモートホスト上の RMI リソースオブジェクトの名前を示します。 +.\} +.PP +\fIgeneralOption\fR +.RS 4 +単独で使用する一般的なコマンドライン・オプションです(\fI\-help\fRまたは\fI\-options\fR)。一般的なオプションを参照してください。 +.RE +.PP +\fIoutputOptions\fR +.RS 4 +単一の\fIstatOption\fRと\fI\-t\fR、\fI\-h\fRおよび\fI\-J\fRのいずれかのオプションで構成される1つ以上の出力オプション。出力オプションを参照してください。 +.RE +.PP +\fIvmid\fR +.RS 4 +ターゲットJVMを示す文字列である仮想マシン識別子です。一般的な構文は次のとおりです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +[protocol:][//]lvmid[@hostname[:port]/servername] +.fi +.if n \{\ +.RE +.\} +\fIvmid\fR文字列の構文は、URIの構文に対応しています。\fIvmid\fR文字列は、ローカルJVMを表す単純な整数から、通信プロトコル、ポート番号、および他の実装固有の値を示す複雑な構造まで、様々に異なります。仮想マシン識別子を参照してください。 +.RE +.PP +\fIinterval\fR [s|ms] +.RS 4 +秒(s)またはミリ秒(ms)のうち指定した単位でのサンプリング間隔です。デフォルトの単位はミリ秒です。正の整数にする必要があります。指定した場合、\fIjstat\fRコマンドは各間隔で出力を生成します。 +.RE +.PP +\fIcount\fR +.RS 4 +表示するサンプル数です。デフォルト値は無限で、ターゲットJVMが終了するまで、または\fIjstat\fRコマンドが終了するまで、\fIjstat\fRコマンドは統計データを表示します。この値は、正の整数である必要があります。 +.RE +.SH "説明" +.PP +\fIjstat\fRコマンドは、設置されているJava HotSpot VMのパフォーマンス統計データを表示します。ターゲットJVMは、仮想マシン識別子または\fIvmid\fRオプションによって識別されます。 +.SH "仮想マシン識別子" +.PP +\fIvmid\fR文字列の構文は、URIの構文に対応しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +[protocol:][//]lvmid[@hostname[:port]/servername] +.fi +.if n \{\ +.RE +.\} +.PP +\fIprotocol\fR +.RS 4 +通信プロトコルです。\fIprotocol\fR値が省略され、ホスト名が指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカル・プロトコルになります。\fIprotocol\fR値が省略され、ホスト名が指定されている場合は、デフォルト・プロトコルは\fIrmi\fRになります。 +.RE +.PP +\fIlvmid\fR +.RS 4 +ターゲットJVMのローカル仮想マシン識別子です。\fIlvmid\fRは、システム上のJVMを一意に識別するプラットフォーム固有の値です。\fIlvmid\fRは、仮想マシン識別子の唯一の必須要素です。\fIlvmid\fRは、一般的にはターゲットJVMプロセスに対するオペレーティング・システムのプロセス識別子ですが、必ずしもそうであるとは限りません。\fIjps\fRコマンドを使用して、\fIlvmid\fRを特定できます。また、UNIXプラットフォームでは\fIps\fRコマンドを使用して、WindowsではWindowsタスク・マネージャを使用して、\fIlvmid\fRを特定できます。 +.RE +.PP +\fIhostname\fR +.RS 4 +ターゲット・ホストを示すホスト名またはIPアドレスです。\fIhostname\fR値が省略されている場合は、ターゲット・ホストはローカル・ホストになります。 +.RE +.PP +\fIport\fR +.RS 4 +リモート・サーバーと通信するためのデフォルト・ポートです。\fIhostname\fR値が省略されているか、最適化されたローカル・プロトコルが\fIprotocol\fR値に指定されている場合、\fIport\fR値は無視されます。それ以外の場合、\fIport\fRパラメータの扱いは、実装によって異なります。デフォルトの\fIrmi\fRプロトコルの場合、ポート値は、リモート・ホスト上のrmiregistryのポート番号を示します。\fIport\fR値が省略され、\fIprotocol\fR値で\fIrmi\fRが指定されている場合、デフォルトのrmiregistryポート(1099)が使用されます。 +.RE +.PP +\fIservername\fR +.RS 4 +\fIservername\fRパラメータの扱いは、実装によって異なります。最適化されたローカル・プロトコルの場合、このフィールドは無視されます。\fIrmi\fRプロトコルの場合、これは、リモート・ホスト上のRMIリソース・オブジェクトの名前を表します。 .RE - -.LP .SH "オプション" -.LP -.LP -\f3jstat\fP コマンドは、一般的なオプションと出力オプションの 2 つのタイプのオプションをサポートしています。一般的なオプションを使用した場合、\f3jstat\fP は簡単な使用率およびバージョン情報を表示します。出力オプションでは、統計データ出力の内容と形式を指定します。 -.br - -.LP -.LP -\f3注\fP: すべてのオプションとその機能は、将来のリリースで変更または廃止される可能性があります。 -.LP -.SS -一般的なオプション -.LP -.LP +.PP +\fIjstat\fRコマンドは、一般的なオプションと出力オプションの2つのタイプのオプションをサポートしています。一般的なオプションを使用した場合、\fIjstat\fRコマンドは簡単な使用率およびバージョン情報を表示します。出力オプションによって、統計データ出力の内容と形式が決まります。 +.PP +すべてのオプションとその機能は、将来のリリースで変更または廃止される可能性があります。 +.SS "一般的なオプション" +.PP いずれかの一般的なオプションを指定した場合、他のオプションまたはパラメータは一切指定できません。 -.LP -.RS 3 -.TP 3 -\-help -ヘルプメッセージを表示します。 -.TP 3 -\-version -バージョン情報を表示します。 -.TP 3 -\-options -統計データオプションを一覧表示します。下記の「出力オプション」の節を参照してください。 +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示します。 .RE - -.LP -.SS -出力オプション -.LP -.LP -一般的なオプションを指定しない場合に、出力オプションを指定できます。出力オプションは、\f3jstat\fP の出力の内容および形式を指定し、単一の \f2statOption\fP と、他のいずれかの出力オプション (\-h、\-t、および \-J) とで構成されます。\f2statOption\fP は最初に記述する必要があります。 -.LP -.LP -出力は、各列が空白で区切られたテーブルの形式で構成されます。タイトルを含むヘッダー行によって、各列の意味がわかります。ヘッダーの表示頻度を設定するには、\f3\-h\fP オプションを使用します。列のヘッダー名は一般に、オプション間で一貫性が保たれています。一般に、2 つのオプションで同じ名前の列が使用されていれば、2 つの列のデータソースは同じになります。 -.LP -.LP -\f3\-t\fP オプションを使用すると、 \f2Timestamp というラベルの付いたタイムスタンプの列が、\fP 出力の最初の列として表示されます。 \f2Timestamp\fP 列には、ターゲット JVM の起動からの経過時間が、秒単位で表示されます。タイムスタンプの精度は、さまざまな要因によって異なり、大量の負荷のかかったシステムでのスレッドスケジュールの遅延により変動します。 -.LP -.LP -\f2interval\fP および \f2count\fP パラメータを使用して、\f3jstat\fP がその出力を表示する頻度と回数をそれぞれ指定します。 -.LP -.LP -\f3注\fP: 将来のリリースでこの形式は変更される可能性があるため、\f3jstat\fP の出力を解析するスクリプトは作成しないことをお勧めします。\f3jstat\fP 出力を解析するスクリプトを作成する場合は、このツールの将来のリリースで、そのスクリプトを変更しなければならないことに留意してください。 -.LP -.RS 3 -.TP 3 -\-statOption -\f3jstat\fP が表示する統計データ情報を指定します。次の表に、利用可能なオプションの一覧を示します。ある特定のプラットフォームインストールのオプションを一覧表示するには、一般的なオプションの \f3\-options\fP を使用します。 -.br -.br -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -クラスローダーの動作に関する統計データ -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -HotSpot Just\-in\-Time コンパイラの動作に関する統計データ -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクトされたヒープの動作に関する統計データ -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -世代ごとの容量と対応する領域に関する統計データ -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション統計データの概要 (\f3\-gcutil\fP と同じ) と、直前および現在 (適用可能な場合) のガベージコレクションイベントの原因 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の動作に関する統計データ -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代のサイズと対応する領域に関する統計データ -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代および Permanent 世代の動作に関する統計データ -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代のサイズに関する統計データ -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代のサイズに関する統計データ -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション統計データの概要 -.br -.di -.nr k| \n(dn -.nr k- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -HotSpot コンパイル方法の統計データ -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \w\f3オプション\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wclass -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wcompiler -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgc -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgccapacity -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgccause -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcnew -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcnewcapacity -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcold -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcoldcapacity -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcpermcapacity -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wgcutil -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wprintcompilation -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3表示内容\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(l- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 248 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3表示内容\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'class\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'compiler\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gc\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gccapacity\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gccause\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcnew\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcnewcapacity\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcold\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcoldcapacity\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcpermcapacity\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(k|u+\n(.Vu -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'gcutil\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'printcompilation\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-52 -.TP 3 -\-h n -\f2n\fP サンプル (出力行) ごとに列ヘッダーを表示。 ただし、\f2n\fP は正の整数値。デフォルト値は 0。 このとき、データの最初の行の上に列ヘッダーが表示される -.TP 3 -\-t n -タイムスタンプ列を出力の最初の列として表示。タイムスタンプは、ターゲット JVM の起動時からの経過時間 -.TP 3 -\-JjavaOption -\f2javaOption\fP を \f3java\fP アプリケーション起動ツールへ渡す。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。オプションの完全なリストについては、「java(1)」のドキュメントを参照してください。 +.PP +\-options +.RS 4 +Staticオプションのリストを表示します。出力オプションを参照してください。 +.RE +.SS "出力オプション" +.PP +一般的なオプションを指定しない場合に、出力オプションを指定できます。出力オプションは、\fIjstat\fRコマンドの出力の内容と形式を決定し、単一の\fIstatOption\fRといずれかの出力オプション(\fI\-h\fR、\fI\-t\fRおよび\fI\-J\fR)で構成されます。\fIstatOption\fRは最初に記述する必要があります。 +.PP +出力は、各列が空白で区切られた表の形式になります。タイトルを含むヘッダー行によって、各列の意味がわかります。ヘッダーの表示頻度を設定するには、\fI\-h\fRオプションを使用します。列のヘッダー名は、様々なオプション間で一貫性が保たれています。一般に、2つのオプションで同じ名前の列が使用されていれば、2つの列のデータ・ソースは同じです。 +.PP +\fI\-t\fRオプションを使用すると、Timestampというラベルの付いたタイムスタンプの列が、出力の最初の列として表示されます。Timestamp列には、ターゲットJVMの起動からの経過時間が、秒単位で表示されます。タイムスタンプの精度は、様々な要因によって異なり、大量の負荷のかかったシステムでのスレッド・スケジュールの遅延により変動します。 +.PP +intervalおよびcountパラメータを使用して、\fIjstat\fRコマンドがその出力を表示する頻度と回数をそれぞれ指定します。 +.PP +\fB注意:\fR +将来のリリースでこの形式は変更される可能性があるため、\fIjstat\fRコマンドの出力を解析するスクリプトは作成しなでください。\fIjstat\fRコマンドの出力を解析するスクリプトを作成する場合は、このツールの将来のリリースで、そのスクリプトを変更する必要があることに留意してください。 +.PP +\-\fIstatOption\fR +.RS 4 +\fIjstat\fRコマンドが表示する統計データ情報を指定します。次に、利用可能なオプションの一覧を示します。特定のプラットフォーム・インストールのオプションを一覧表示するには、一般的なオプションの\fI\-options\fRを使用します。Statオプションおよび出力を参照してください。 +.sp +\fIclass\fR: クラス・ローダーの動作に関する統計データを表示します。 +.sp +\fIcompiler\fR: Java HotSpot VM Just\-in\-Timeコンパイラの動作に関する統計データを表示します。 +.sp +\fIgc\fR: ガベージ・コレクトされたヒープの動作に関する統計データを表示します。 +.sp +\fIgccapacity\fR: 世代ごとの容量と対応する領域に関する統計データを表示します。 +.sp +\fIgccause\fR: ガベージ・コレクション統計データのサマリー(\fI\-gcutil\fRと同じ)と、直前および現在(適用可能な場合)のガベージ・コレクション・イベントの原因を表示します。 +.sp +\fIgcnew\fR: New世代の動作に関する統計データを表示します。 +.sp +\fIgcnewcapacity\fR: New世代のサイズと対応する領域に関する統計データを表示します。 +.sp +\fIgcold\fR: Old世代の動作とメタスペースに関する統計データを表示します。 +.sp +\fIgcoldcapacity\fR: Old世代のサイズに関する統計データを表示します。 +.sp +\fIgcmetacapacity\fR: メタスペースのサイズに関する統計データを表示します。 +.sp +\fIgcutil\fR: ガベージ・コレクションのサマリーに関する統計データを表示します。 +.sp +\fIprintcompilation\fR: Java HotSpot VMコンパイル・メソッドの統計データを表示します。 +.RE +.PP +\-h \fIn\fR +.RS 4 +\fIn\fRサンプル(出力行)ごとに列ヘッダーを表示します。ここで、\fIn\fRは正の整数値です。デフォルト値は0です。この場合、データの最初の行の上に列ヘッダーが表示されます。 +.RE +.PP +\-t +.RS 4 +タイムスタンプ列を出力の最初の列として表示します。タイムスタンプは、ターゲットJVMの起動時からの経過時間です。 +.RE +.PP +\-J\fIjavaOption\fR +.RS 4 +\fIjavaOption\fRをJavaアプリケーション起動ツールに渡します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。オプションの完全なリストについては、java(1)を参照してください。 +.RE +.SS "Statオプションおよび出力" +.PP +次の情報は、\fIjstat\fRコマンドが各\fIstatOption\fRについて出力する列をまとめたものです。 +.PP +\-class \fIoption\fR +.RS 4 +クラス・ローダーの統計データ。 +.sp +\fILoaded\fR: ロードされたクラスの数。 +.sp +\fIBytes\fR: ロードされたKBの数。 +.sp +\fIUnloaded\fR: アンロードされたクラスの数。 +.sp +\fIBytes\fR: アンロードされたKBの数。 +.sp +\fITime\fR: クラスのロードやアンロード処理に要した時間。 +.RE +.PP +\-compiler \fIoption\fR +.RS 4 +Java HotSpot VM Just\-in\-Timeコンパイラの統計データ。 +.sp +\fICompiled\fR: 実行されたコンパイル・タスクの数。 +.sp +\fIFailed\fR: 失敗したコンパイル・タスクの数。 +.sp +\fIInvalid\fR: 無効にされたコンパイル・タスクの数。 +.sp +\fITime\fR: コンパイル・タスクの実行に要した時間。 +.sp +\fIFailedType\fR: 最後に失敗したコンパイルのコンパイル・タイプ。 +.sp +\fIFailedMethod\fR: 最後に失敗したコンパイルのクラス名とメソッド。 +.RE +.PP +\-gc \fIoption\fR +.RS 4 +ガベージ・コレクトされたヒープの統計データ。 +.sp +\fIS0C\fR: Survivor領域0の現在の容量(KB)。 +.sp +\fIS1C\fR: Survivor領域1の現在の容量(KB)。 +.sp +\fIS0U\fR: Survivor領域0の使用率(KB)。 +.sp +\fIS1U\fR: Survivor領域1の使用率(KB)。 +.sp +\fIEC\fR: Eden領域の現在の容量(KB)。 +.sp +\fIEU\fR: Eden領域の使用率(KB)。 +.sp +\fIOC\fR: Old領域の現在の容量(KB)。 +.sp +\fIOU\fR: Old領域の使用率(KB)。 +.sp +\fIMC\fR: メタスペースの容量(KB)。 +.sp +\fIMU\fR: メタスペースの使用率(KB)。 +.sp +\fIYGC\fR: 若い世代のガベージ・コレクション・イベントの数。 +.sp +\fIYGCT\fR: 若い世代のガベージ・コレクション時間。 +.sp +\fIFGC\fR: フルGCイベント数。 +.sp +\fIFGCT\fR: フルガベージ・コレクション時間。 +.sp +\fIGCT\fR: ガベージ・コレクション総時間。 +.RE +.PP +\-gccapacity \fIoption\fR +.RS 4 +メモリー・プール世代および領域容量。 +.sp +\fINGCMN\fR: New世代の最小容量(KB)。 +.sp +\fINGCMX\fR: New世代の最大容量(KB)。 +.sp +\fINGC\fR: New世代の現在の容量(KB)。 +.sp +\fIS0C\fR: Survivor領域0の現在の容量(KB)。 +.sp +\fIS1C\fR: Survivor領域1の現在の容量(KB)。 +.sp +\fIEC\fR: Eden領域の現在の容量(KB)。 +.sp +\fIOGCMN\fR: Old世代の最小容量(KB)。 +.sp +\fIOGCMX\fR: Old世代の最大容量(KB)。 +.sp +\fIOGC\fR: Old世代の現在の容量(KB)。 +.sp +\fIOC\fR: Old領域の現在の容量(KB)。 +.sp +\fIMCMN\fR: メタスペースの最小容量(KB)。 +.sp +\fIMCMX\fR: メタスペースの最大容量(KB)。 +.sp +\fIMC\fR: メタスペースの容量(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIFGC\fR: フルGCイベント数。 +.RE +.PP +\-gccause \fIoption\fR +.RS 4 +このオプションは、\fI\-gcutil\fRオプションと同じガベージ・コレクション統計データのサマリーを表示しますが、最後のガベージ・コレクション・イベントと(適用可能な場合は)現在のガベージ・コレクション・イベントの原因が含まれます。\fI\-gcutil\fRで一覧表示される列のほか、このオプションでは次の列が追加されます。 +.sp +ガベージ・コレクション・イベントを含むガベージ・コレクション統計データ。 +.sp +\fILGCC\fR: 最後のガベージ・コレクションの原因。 +.sp +\fIGCC\fR: 現在のガベージ・コレクションの原因。 +.RE +.PP +\-gcnew \fIoption\fR +.RS 4 +New世代の統計データ。 +.sp +\fIS0C\fR: Survivor領域0の現在の容量(KB)。 +.sp +\fIS1C\fR: Survivor領域1の現在の容量(KB)。 +.sp +\fIS0U\fR: Survivor領域0の使用率(KB)。 +.sp +\fIS1U\fR: Survivor領域1の使用率(KB)。 +.sp +\fITT\fR: 殿堂入りしきい値。 +.sp +\fIMTT\fR: 最大殿堂入りしきい値。 +.sp +\fIDSS\fR: 適切なSurvivorサイズ(KB)。 +.sp +\fIEC\fR: Eden領域の現在の容量(KB)。 +.sp +\fIEU\fR: Eden領域の使用率(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIYGCT\fR: 若い世代のガベージ・コレクション時間。 +.RE +.PP +\-gcnewcapacity \fIoption\fR +.RS 4 +New世代領域サイズの統計データ。 +.sp +NGCMN: New世代の最小容量(KB)。 +.sp +\fINGCMX\fR: New世代の最大容量(KB)。 +.sp +\fINGC\fR: New世代の現在の容量(KB)。 +.sp +\fIS0CMX\fR: Survivor領域0の最大容量(KB)。 +.sp +\fIS0C\fR: Survivor領域0の現在の容量(KB)。 +.sp +\fIS1CMX\fR: Survivor領域1の最大容量(KB)。 +.sp +\fIS1C\fR: Survivor領域1の現在の容量(KB)。 +.sp +\fIECMX\fR: Eden領域の最大容量(KB)。 +.sp +\fIEC\fR: Eden領域の現在の容量(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIFGC\fR: フルGCイベント数。 +.RE +.PP +\-gcold \fIoption\fR +.RS 4 +OldおよびPermanent世代の統計データ。 +.sp +\fIMC\fR: メタスペースの容量(KB)。 +.sp +\fIMU\fR: メタスペースの使用率(KB)。 +.sp +\fIOC\fR: Old領域の現在の容量(KB)。 +.sp +\fIOU\fR: Old領域の使用率(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIFGC\fR: フルGCイベント数。 +.sp +\fIFGCT\fR: フルガベージ・コレクション時間。 +.sp +\fIGCT\fR: ガベージ・コレクション総時間。 +.RE +.PP +\-gcoldcapacity \fIoption\fR +.RS 4 +Old世代の統計データ。 +.sp +\fIOGCMN\fR: Old世代の最小容量(KB)。 +.sp +\fIOGCMX\fR: Old世代の最大容量(KB)。 +.sp +\fIOGC\fR: Old世代の現在の容量(KB)。 +.sp +\fIOC\fR: Old領域の現在の容量(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIFGC\fR: フルGCイベント数。 +.sp +\fIFGCT\fR: フルガベージ・コレクション時間。 +.sp +\fIGCT\fR: ガベージ・コレクション総時間。 +.RE +.PP +\-gcmetacapacity \fIoption\fR +.RS 4 +Permanent世代の統計データ。 +.sp +\fIMCMN\fR: メタスペースの最小容量(KB)。 +.sp +\fIMCMX\fR: メタスペースの最大容量(KB)。 +.sp +\fIMC\fR: メタスペースの容量(KB)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIFGC\fR: フルGCイベント数。 +.sp +\fIFGCT\fR: フルガベージ・コレクション時間。 +.sp +\fIGCT\fR: ガベージ・コレクション総時間。 +.RE +.PP +\-gcutil \fIoption\fR +.RS 4 +ガベージ・コレクション統計データのサマリー +.sp +\fIS0\fR: Survivor領域0の使用率(現在の容量に対するパーセンテージ)。 +.sp +\fIS1\fR: Survivor領域1の使用率(現在の容量に対するパーセンテージ)。 +.sp +\fIE\fR: Eden領域の使用率(現在の容量に対するパーセンテージ)。 +.sp +\fIO\fR: Old領域の使用率(現在の容量に対するパーセンテージ)。 +.sp +\fIM\fR: メタスペースの使用率(領域の現在の容量に対するパーセンテージ)。 +.sp +\fIYGC\fR: 若い世代のGCイベント数。 +.sp +\fIYGCT\fR: 若い世代のガベージ・コレクション時間。 +.sp +\fIFGC\fR: フルGCイベント数。 +.sp +\fIFGCT\fR: フルガベージ・コレクション時間。 +.sp +\fIGCT\fR: ガベージ・コレクション総時間。 +.RE +.PP +\-printcompilation \fIoption\fR +.RS 4 +Java HotSpot VMコンパイル・メソッドの統計データ。 +.sp +\fICompiled\fR: 最近コンパイルされたメソッドで実行されたコンパイル・タスクの数。 +.sp +\fISize\fR: 最近コンパイルされたメソッドのバイト・コードのバイト数。 +.sp +\fIType\fR: 最近コンパイルされたメソッドのコンパイル・タイプ。 +.sp +\fIMethod\fR: 最近コンパイルされたメソッドを特定するクラス名とメソッド名。クラス名では、名前空間の区切り文字として、ドット(\&.)のかわりにスラッシュ(/)が使用されます。メソッド名は、指定されたクラス内のメソッドです。これらの2つのフィールドの形式は、HotSpot +\fI\-XX:+PrintComplation\fRオプションと対応しています。 .RE - -.LP -.SS -statOption と出力 -.LP -.LP -以降の表では、\f3jstat\fP が \f2statOption\fP ごとに出力する列について概要を示します。 -.br - -.LP -.SS -\-class オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ロードされたクラスの数 -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ロードされた K バイト数 -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -アンロードされたクラスの数 -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -アンロードされた K バイト数 -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -クラスのロードやアンロード処理に要した時間 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wクラスローダーの統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wLoaded -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wBytes -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wUnloaded -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wBytes -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wTime -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.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 298 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'クラスローダーの統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Loaded\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.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'Bytes\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'Unloaded\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Bytes\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Time\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-25 - -.LP -.SS -\-compiler オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -実行されたコンパイルタスクの数 -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -失敗したコンパイルタスクの数 -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -無効にされたコンパイルタスクの数 -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -コンパイルタスクの実行に要した時間 -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -最後に失敗したコンパイルのコンパイルタイプ -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -最後に失敗したコンパイルのクラス名とメソッド -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wHotSpot Just\-In\-Time コンパイラの統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wCompiled -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFailed -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wInvalid -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wTime -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFailedType -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFailedMethod -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 334 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'HotSpot Just\-In\-Time コンパイラの統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Compiled\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Failed\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Invalid\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Time\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FailedType\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FailedMethod\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-29 - -.LP -.SS -\-gc オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の現在の容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の現在の容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の使用率 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の使用率 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の現在の容量 (KB) -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の使用率 (KB) -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の現在の容量 (KB) -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の使用率 (KB) -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の現在の容量 (KB) -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の使用率 (KB) -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr k| \n(dn -.nr k- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代のガベージコレクション時間 -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di m+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -フルガベージコレクション時間 -.br -.di -.nr m| \n(dn -.nr m- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di n+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション総時間 -.br -.di -.nr n| \n(dn -.nr n- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wガベージコレクトされたヒープの統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0U -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1U -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(l- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(m- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(n- -.if \n(81<\n(38 .nr 81 \n(38 -.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 404 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'ガベージコレクトされたヒープの統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0U\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1U\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(k|u+\n(.Vu -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\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 -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.m+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(n|u+\n(.Vu -.if (\n(n|+\n(#^-1v)>\n(#- .nr #- +(\n(n|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.n+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.rm m+ -.rm n+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-63 - -.LP -.SS -\-gccapacity オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の最小容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の最大容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の現在の容量 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の現在の容量 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の現在の容量 (KB) -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の現在の容量 (KB) -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の最小容量 (KB) -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の最大容量 (KB) -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の現在の容量 (KB) -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の現在の容量 (KB) -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の最小容量 (KB) -.br -.di -.nr k| \n(dn -.nr k- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の最大容量 (KB) -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di m+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の現在の容量 (KB) -.br -.di -.nr m| \n(dn -.nr m- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di n+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の現在の容量 (KB) -.br -.di -.nr n| \n(dn -.nr n- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di o+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr o| \n(dn -.nr o- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wメモリープール世代および領域容量 -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(l- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(m- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(n- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(o- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 478 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'メモリープール世代および領域容量\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(k|u+\n(.Vu -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(m|u+\n(.Vu -.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.m+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(n|u+\n(.Vu -.if (\n(n|+\n(#^-1v)>\n(#- .nr #- +(\n(n|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.n+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(o|u+\n(.Vu -.if (\n(o|+\n(#^-1v)>\n(#- .nr #- +(\n(o|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.o+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.rm m+ -.rm n+ -.rm o+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-67 - -.LP -.SS -\-gccause オプション -.LP -.LP -このオプションは、\f3\-gcutil\fP オプションと同じガベージコレクション統計データの概要を表示しますが、最後のガベージコレクションイベントと (適用可能な場合は) 現在のガベージコレクションイベントの原因が含まれます。\f3\-gcutil\fP で一覧表示される列の他に、このオプションでは次の列が追加されます。 -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -最後のガベージコレクションの原因 -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -現在のガベージコレクションの原因 -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wGC イベントを含むガベージコレクション統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wLGCC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCC -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 501 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GC イベントを含むガベージコレクション統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'LGCC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-13 - -.LP -.SS -\-gcnew オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の現在の容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の現在の容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の使用率 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の使用率 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -最大殿堂入りしきい値 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -適切な Survivor サイズ (KB) -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の現在の容量 (KB) -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の使用率 (KB) -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代のガベージコレクション時間 -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wNew 世代の統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0U -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1U -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wTT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wMTT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wDSS -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \w殿堂入りしきい値 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 555 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'New 世代の統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0U\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1U\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'TT\h'|\n(41u'殿堂入りしきい値 -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'MTT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'DSS\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-47 - -.LP -.SS -\-gcnewcapacity オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の最小容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の最大容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -New 世代の現在の容量 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の最大容量 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の現在の容量 (KB) -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の最大容量 (KB) -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の現在の容量 (KB) -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の最大容量 (KB) -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の現在の容量 (KB) -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wNew 世代領域サイズの統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wNGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0CMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1CMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1C -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wECMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wEC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 609 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'New 世代領域サイズの統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'NGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0CMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1CMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1C\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'ECMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'EC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-47 - -.LP -.SS -\-gcold オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の現在の容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の使用率 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の現在の容量 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の使用率 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -フルガベージコレクション時間 -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション総時間 -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wOld および Permanent 世代の統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOU -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 651 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Old および Permanent 世代の統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OU\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-35 - -.LP -.SS -\-gcoldcapacity オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の最小容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の最大容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 世代の現在の容量 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の現在の容量 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -フルガベージコレクション時間 -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション総時間 -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wOld 世代の統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wOC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 693 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Old 世代の統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'OC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-35 - -.LP -.SS -\-gcpermcapacity オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の最小容量 (KB) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の最大容量 (KB) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 世代の現在の容量 (KB) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の現在の容量 (KB) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -フルガベージコレクション時間 -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション総時間 -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wPermanent 世代の統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGCMN -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGCMX -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wPC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 735 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Permanent 世代の統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGCMN\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGCMX\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'PC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-35 - -.LP -.SS -\-gcutil オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 0 の使用率 (現在の容量に対するパーセンテージ) -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Survivor 領域 1 の使用率 (現在の容量に対するパーセンテージ) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Eden 領域の使用率 (現在の容量に対するパーセンテージ) -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Old 領域の使用率 (現在の容量に対するパーセンテージ) -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -Permanent 領域の使用率 (現在の容量に対するパーセンテージ) -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代の GC イベント数 -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -若い世代のガベージコレクション時間 -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -フルガベージコレクション時間 -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ガベージコレクション総時間 -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wガベージコレクション統計データの概要 -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS0 -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wS1 -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wE -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wO -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wYGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGC -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wFGCT -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wGCT -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wフル GC イベント数 -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 785 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'ガベージコレクション統計データの概要\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S0\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'S1\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'E\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'O\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'P\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGC\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'YGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGC\h'|\n(41u'フル GC イベント数 -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'FGCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'GCT\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-43 - -.LP -.SS -\-printcompilation オプション -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -実行されたコンパイルタスクの数 -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -メソッドのバイトコードのバイト数 -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -コンパイル方法を特定するクラス名とメソッド名。クラス名では、名前空間の区切り文字として、「.」の代わりに「/」が使用される。メソッド名は、指定されたクラス内のメソッドである。これらの 2 つのフィールドの形式は、HotSpot \- \f3XX:+PrintComplation\fP オプションと対応している -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \wHotSpot コンパイル方法の統計データ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3列\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wCompiled -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wサイズ -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w型 -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wメソッド -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \wコンパイルタイプ -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.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 811 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'HotSpot コンパイル方法の統計データ\h'|\n(41u' -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3列\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'Compiled\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'サイズ\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 -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\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' -.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 -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-19 - -.LP .SH "例" -.LP -.LP -この項では、21891 の \f2lvmid\fP を持つローカル JVM を監視する例を示します。 -.LP -.SS -gcutil オプションの使用 -.LP -.LP -この例は、\f2lvmid\fP 21891 に接続して、250 ミリ秒間隔で 7 つのサンプルを取得し、\f3\-gcutil\fP オプションでの指定に従って出力を表示します。 -.LP +.PP +この項では、21891の\fIlvmid\fRを持つローカルJVMをモニタリングする例を示します。 +.SS "gcutilオプション" +.PP +この例では、lvmid 21891に接続して、250ミリ秒間隔で7つのサンプルを取得し、\-\fIgcutil\fRオプションでの指定に従って出力を表示します。 +.PP +この例の出力は、若い世代のコレクションが3番目と4番目のサンプル間で行われたことを示しています。コレクションには0\&.001秒かかっており、オブジェクトがEden領域(E)からOld領域(O)に昇格したため、Old領域の使用率は9\&.49%から9\&.51%に増加しています。Survivor領域は、コレクション前は12\&.44%が使用されていましたが、コレクション後の使用は7\&.74%のみです。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3jstat \-gcutil 21891 250 7\fP -.br - -.fl - S0 S1 E O P YGC YGCT FGC FGCT GCT -.br - -.fl - 12.44 0.00 27.20 9.49 96.70 78 0.176 5 0.495 0.672 -.br - -.fl - 12.44 0.00 62.16 9.49 96.70 78 0.176 5 0.495 0.672 -.br - -.fl - 12.44 0.00 83.97 9.49 96.70 78 0.176 5 0.495 0.672 -.br - -.fl - 0.00 7.74 0.00 9.51 96.70 79 0.177 5 0.495 0.673 -.br - -.fl - 0.00 7.74 23.37 9.51 96.70 79 0.177 5 0.495 0.673 -.br - -.fl - 0.00 7.74 43.82 9.51 96.70 79 0.177 5 0.495 0.673 -.br - -.fl - 0.00 7.74 58.11 9.51 96.71 79 0.177 5 0.495 0.673 -.br - -.fl +jstat \-gcutil 21891 250 7 + S0 S1 E O M YGC YGCT FGC FGCT GCT +0\&.00 99\&.74 13\&.49 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.49 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.49 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.49 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.80 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.80 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 +0\&.00 99\&.74 13\&.80 7\&.86 95\&.82 3 0\&.124 0 0\&.000 0\&.124 .fi - -.LP -.LP -この例の出力は、若い世代のコレクションが 3 番目と 4 番目のサンプル間で行われたことを示しています。コレクションには 0.001 秒かかっており、オブジェクトが Eden 領域 (E) から Old 領域 (O) に昇格したため、Old 領域の使用率は 9.49% から 9.51% に増加しています。Survivor 領域は、コレクション前は 12.44% が使用されていましたが、コレクション後は 7.74% しか使用されていません。 -.LP -.SS -列ヘッダー文字列の繰り返し -.LP -.LP -この例は、\f2lvmid\fP 21891 に接続して、250 ミリ秒間隔でサンプルを取得し、\f3\-gcutil\fP オプションでの指定に従って出力を表示します。さらに、\f3\-h3\fP オプションを使用して、データが 3 行表示されるごとに列ヘッダーを出力します。 -.LP -.nf -\f3 -.fl -\fP\f3jstat \-gcnew \-h3 21891 250\fP -.br - -.fl - S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT -.br - -.fl - 64.0 64.0 0.0 31.7 31 31 32.0 512.0 178.6 249 0.203 -.br - -.fl - 64.0 64.0 0.0 31.7 31 31 32.0 512.0 355.5 249 0.203 -.br - -.fl - 64.0 64.0 35.4 0.0 2 31 32.0 512.0 21.9 250 0.204 -.br - -.fl - S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT -.br - -.fl - 64.0 64.0 35.4 0.0 2 31 32.0 512.0 245.9 250 0.204 -.br - -.fl - 64.0 64.0 35.4 0.0 2 31 32.0 512.0 421.1 250 0.204 -.br - -.fl - 64.0 64.0 0.0 19.0 31 31 32.0 512.0 84.4 251 0.204 -.br - -.fl - S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT -.br - -.fl - 64.0 64.0 0.0 19.0 31 31 32.0 512.0 306.7 251 0.204 -.br - -.fl -.fi - -.LP -.LP -この例では、ヘッダー文字列の繰り返しが見られるほかにも、2 番目と 3 番目のサンプル間で Young GC が行われたことがわかります。この継続時間は 0.001 秒でした。このコレクションでは、Survivor 領域 0 の使用率 (S0U) が適切な Survivor サイズ (DSS) を超過することになるライブデータが検出されました。この結果、オブジェクトは、Old 世代 (この出力には非表示) へ昇格され、殿堂入りしきい値 (TT) が、31 から 2 へ降格されました。 -.LP -.LP -別のコレクションが、5 番目と 6 番目のサンプル間で行われています。このコレクションでは、Survivor がほとんど見られず、殿堂入りしきい値を 31 に戻しました。 -.LP -.SS -サンプルごとのタイムスタンプの挿入 -.LP -.LP -この例は、\f2lvmid\fP 21891 へ接続し、250 ミリ秒間隔で 3 つのサンプルを取得しています。\f3\-t\fP オプションを使用して、最初の列にサンプルごとのタイムスタンプを表示しています。 -.LP -.nf -\f3 -.fl -\fP\f3jstat \-gcoldcapacity \-t 21891 250 3\fP -.br - -.fl -Timestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT -.br - -.fl - 150.1 1408.0 60544.0 11696.0 11696.0 194 80 2.874 3.799 -.br - -.fl - 150.4 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863 -.br - -.fl - 150.7 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863 -.br - -.fl -.fi - -.LP -.LP -\f2Timestamp\fP 列には、ターゲット JVM の起動時からの経過時間が、秒単位でレポートされています。さらに、\f3\-gcoldcapacity\fP 出力では、割り当て要求または昇格要求あるいはその両方を満たすためにヒープが拡張するごとに、Old 世代の容量 (OGC) と Old 領域の容量 (OC) とが増加していることがわかります。Old 世代の容量 (OGC) は、81 番目のフル GC (FGC) 後に、11696 KB から 13820 KB へ増加しています。Old 世代 (および領域) の最大容量は、60544 KB (OGCMX) なので、まだ拡張できる余裕が残されています。 -.LP -.SS -リモート JVM のインストゥルメンテーションの監視 -.LP -.LP -この例は、\f3\-gcutil\fP オプションを使用して、\f2remote.domain\fP というシステム上の \f2lvmid\fP 40496 に接続し、サンプルを秒単位で無期限に取得しています。 -.LP -.nf -\f3 -.fl -\fP\f3jstat \-gcutil 40496@remote.domain 1000\fP -.br - -.fl -... \f2output omitted\fP -.br - -.fl -.fi - -.LP -.LP -\f2lvmid\fP は、リモートホストの名前と結合されて、\f240496@remote.domain\fP の \f2vmid\fP を構成しています。結果として、この \f2vmid\fP は、\f3rmi\fP プロトコルを使用して、リモートホスト上のデフォルトの \f3jstatd\fP サーバーと通信します。\f3jstatd\fP サーバーは、\f3rmiregistry\fP を使用して、デフォルトの \f3rmiregistry\fP ポート (ポート 1099) にバインドされた \f2remote.domain\fP に配置されれます。 -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -「java(1) \- Java アプリケーション起動ツール」 -.TP 2 -o -「jps(1) \- Java 仮想マシンプロセスステータスツール」 -.TP 2 -o -「jstatd(1) \- 仮想マシン jstat デーモン」 -.TP 2 -o -「rmiregistry(1) \- Java リモートオブジェクトレジストリ」 +.if n \{\ .RE - -.LP - +.\} +.SS "列ヘッダー文字列の繰返し" +.PP +この例では、lvmid 21891に接続して、250ミリ秒間隔でサンプルを取得し、\fI\-gcutil\fRオプションでの指定に従って出力を表示します。さらに、\fI\-h3\fRオプションを使用して、データが3行表示されるごとに列ヘッダーを出力します。 +.PP +この例では、ヘッダー文字列の繰返しが表示されているほか、2番目と3番目のサンプル間でYoung GCが行われたことがわかります。この継続時間は0\&.001秒でした。このコレクションでは、Survivor領域0の使用率(S0U)が適切なSurvivorサイズ(DSS)を超過することになるアクティブ・データが検出されました。この結果、オブジェクトは、Old世代(この出力には非表示)へ昇格され、殿堂入りしきい値(TT)が、31から2へ降格されました。 +.PP +別のコレクションが、5番目と6番目のサンプル間で行われています。このコレクションでは、Survivorがほとんど見られず、殿堂入りしきい値を31に戻しました。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jstat \-gcnew \-h3 21891 250 + S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT + 64\&.0 64\&.0 0\&.0 31\&.7 31 31 32\&.0 512\&.0 178\&.6 249 0\&.203 + 64\&.0 64\&.0 0\&.0 31\&.7 31 31 32\&.0 512\&.0 355\&.5 249 0\&.203 + 64\&.0 64\&.0 35\&.4 0\&.0 2 31 32\&.0 512\&.0 21\&.9 250 0\&.204 + S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT + 64\&.0 64\&.0 35\&.4 0\&.0 2 31 32\&.0 512\&.0 245\&.9 250 0\&.204 + 64\&.0 64\&.0 35\&.4 0\&.0 2 31 32\&.0 512\&.0 421\&.1 250 0\&.204 + 64\&.0 64\&.0 0\&.0 19\&.0 31 31 32\&.0 512\&.0 84\&.4 251 0\&.204 + S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT + 64\&.0 64\&.0 0\&.0 19\&.0 31 31 32\&.0 512\&.0 306\&.7 251 0\&.204 +.fi +.if n \{\ +.RE +.\} +.SS "サンプルごとのタイムスタンプの挿入" +.PP +この例では、lvmid21891へ接続し、250ミリ秒間隔で3つのサンプルを取得しています。\fI\-t\fRオプションを使用して、最初の列にサンプルごとのタイムスタンプを表示しています。 +.PP +Timestamp列には、ターゲットJVMの起動時からの経過時間が、秒単位でレポートされています。さらに、\fI\-gcoldcapacity\fR出力では、割当リクエストまたは昇格リクエストあるいはその両方を満たすためにヒープが拡張するたびに、Old世代の容量(OGC)とOld領域の容量(OC)とが増加していることがわかります。81番目のフル・ガベージ・コレクション(FGC)の後、Old世代の容量(OGC)は11,696 KBから13820 KBに増加しました。この世代(および領域)の最大容量は、60,544 KB (OGCMX)なので、まだ拡張できる余裕が残されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Timestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT + 150\&.1 1408\&.0 60544\&.0 11696\&.0 11696\&.0 194 80 2\&.874 3\&.799 + 150\&.4 1408\&.0 60544\&.0 13820\&.0 13820\&.0 194 81 2\&.938 3\&.863 + 150\&.7 1408\&.0 60544\&.0 13820\&.0 13820\&.0 194 81 2\&.938 3\&.863 +.fi +.if n \{\ +.RE +.\} +.SS "リモートJVMのインストゥルメンテーションの監視" +.PP +この例は、\fI\-gcutil\fRオプションを使用して、remote\&.domainというシステム上のlvmid 40496に接続し、サンプルを秒単位で無期限に取得しています。 +.PP +lvmidは、リモート・ホストの名前と結合されて、\fI40496@remote\&.domain\fRの\fIvmid\fRを構成しています。結果として、このvmidは、\fIrmi\fRプロトコルを使用して、リモート・ホスト上のデフォルトの\fIjstatd\fRサーバーと通信します。\fIjstatd\fRサーバーは、rmiregistryを使用して、デフォルトのrmiregistryポート(ポート1099)にバインドされた\fIremote\&.domain\fRに配置されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jstat \-gcutil 40496@remote\&.domain 1000 +\fI\&.\&.\&. output omitted\fR +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jstatd(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rmiregistry(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jstatd.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jstatd.1 index 9eeffc439d9..cfd8e4e4b82 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jstatd.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jstatd.1 @@ -1,286 +1,268 @@ -." 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 -." 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 jstatd 1 "07 May 2011" - -.LP -.SH "名前" -jstatd \- 仮想マシン jstat デーモン -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -パラメータ -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -セキュリティー -.TP 2 -o -リモートインタフェース -.TP 2 -o -例 -.TP 2 -o -関連項目 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jstatd +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: モニタリング・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jstatd" "1" "2013年11月21日" "JDK 8" "モニタリング・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jstatd \- Java仮想マシン(JVM)をモニターし、リモート・モニタリング・ツールがJVMに接続できるようにします。このコマンドは試験的なもので、サポートされていません。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jstatd [ \fP\f4options\fP\f3 ]\fP -.br -\f3 -.fl -\fP +\fIjstatd\fR [ \fIoptions\fR ] .fi - -.LP -.SH "パラメータ" -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。オプションは任意の順序で指定できます。重複または矛盾するオプションがある場合、最後に指定したオプションが優先されます。 +.if n \{\ .RE - -.LP -.SH " 説明" -.LP -.LP -\f3jstatd\fP ツールは、計測された HotSpot Java 仮想マシン (JVM) の作成と終了を監視し、ローカルシステム上で実行している Java 仮想マシンに、リモート監視ツールが接続できるようにするためのインタフェースを提供する RMI サーバーアプリケーションです。 -.LP -.LP -\f3jstatd\fP サーバーでは、ローカルホストに RMI レジストリが存在することが必要になります。\f3jstatd\fP サーバーは、デフォルトポートまたは \f2\-p port\fP オプションで指定されたポート上の RMI レジストリに接続しようとします。RMI レジストリが見つからない場合、\f2\-p port\fP オプションで指定されたポート、または \f2\-p port\fP が省略されている場合は、デフォルト RMI レジストリにバインドされた \f3jstatd\fP アプリケーション内に、1 つの RMI レジストリが作成されます。内部 RMI レジストリの作成は、\f2\-nr\fP オプションを指定することによって禁止することができます。 -.LP -.LP -\f3注:\fP このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。 -.LP +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.SH "説明" +.PP +\fIjstatd\fRコマンドは、計測されたJava HotSpot VMの作成と終了をモニターし、ローカル・システム上で実行されているJVMに、リモート・モニタリング・ツールが接続できるようにするためのインタフェースを提供するRMIサーバー・アプリケーションです。 +.PP +\fIjstatd\fRサーバーでは、ローカル・ホストにRMIレジストリが必要になります。\fIjstatd\fRサーバーはデフォルト・ポートで、または\fI\-p\fR +\fIport\fRオプションで指定したポートで、RMIレジストリに接続しようとします。RMIレジストリが見つからない場合、\fI\-p\fR +\fIport\fRオプションで指定されたポート、または\fI\-p\fR +\fIport\fRオプションが省略されている場合は、デフォルトRMIレジストリにバインドされた\fIjstatd\fRアプリケーション内に、1つのRMIレジストリが作成されます。内部RMIレジストリの作成は、\fI\-nr\fRオプションを指定することによって中止できます。 .SH "オプション" -.LP -.LP -\f3jstatd\fP コマンドは次のオプションをサポートしています。 -.LP -.RS 3 -.TP 3 -\-nr -既存の RMI レジストリが見つからない場合、\f2jstatd\fP プロセス内に内部 RMI レジストリを作成しないようにします。 -.TP 3 -\-p\ port -RMI レジストリがあると予想されるポート番号です。 見つからない場合は、\f2\-nr\fP が指定されていなければ作成されます。 -.TP 3 -\-n\ rminame -RMI レジストリにおいて、リモート RMI オブジェクトがバインドされる名前です。デフォルト名は \f2JStatRemoteHost\fP です。複数の \f3jstatd\fP サーバーが同じホスト上で起動している場合、各サーバーのエクスポートした RMI オブジェクトの名前は、このオプションを指定することによって、一意の名前にすることができます。ただし、このオプションを使用する場合、監視クライアントの \f2hostid\fP および \f2vmid\fP 文字列に、その一意のサーバー名を含める必要があります。 -.TP 3 -\-Joption -\f3javac\fP が呼び出す \f3java\fP 起動ツールに、\f2option\fP を渡します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 +.PP +\-nr +.RS 4 +既存のRMIレジストリが見つからない場合、\fIjstatd\fRプロセス内に内部RMIレジストリを作成しないようにします。 .RE - -.LP -.SH "セキュリティー" -.LP -.LP -\f3jstatd\fP サーバーは、有効なネイティブアクセス権を持つ JVM だけを監視できます。したがって、\f3jstatd\fP プロセスは、ターゲット JVM と同じユーザー資格で実行している必要があります。一部のユーザー資格は、UNIX(TM) ベースのシステムにおける \f2root\fP ユーザーのように、システム上の任意の JVM によってエクスポートされたインストゥルメンテーションへのアクセス権を持っています。このような資格で実行している \f3jstatd\fP プロセスは、システム上のすべての JVM を監視できますが、セキュリティー上の別の問題が起こります。 -.LP -.LP -\f3jstatd\fP サーバーは、リモートクライアントの認証を一切与えません。そのため、\f3jstatd\fP サーバープロセスを実行すると、\f3jstatd\fP プロセスがアクセス権を持つすべての JVM によるインストゥルメンテーションのエクスポートを、ネットワーク上のすべてのユーザーに公開することになります。この無防備な状態は、環境的に望ましくない場合があります。 特に実稼働環境または安全でないネットワークでは、\f3jstatd\fP プロセスを起動する前に、ローカルセキュリティーポリシーを検討する必要があります。 -.LP -.LP -\f3jstatd\fP サーバーは、他のセキュリティーマネージャーがインストールされていない場合には、RMISecurityPolicy のインスタンスをインストールします。 そのため、セキュリティーポリシーファイルを指定する必要があります。ポリシーファイルは、デフォルトポリシー実装の -.na -\f2ポリシーファイルの構文\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyFiles.htmlに準拠する必要があります。 -.LP -.LP -次のポリシーファイルの場合、\f3jstatd\fP サーバーは一切のセキュリティー例外を使用せずに実行できます。このポリシーは、すべてのコードベースへのあらゆるアクセス権を認めるポリシーよりも自由度は低いですが、\f3jstatd\fP サーバーを実行するために最低限必要なアクセス権しか認めないポリシーよりも自由度は高くなっています。 -.LP +.PP +\-p \fIport\fR +.RS 4 +RMIレジストリがあると予想されるポート番号です。見つからない場合は、\fI\-nr\fRオプションが指定されていなければ作成されます。 +.RE +.PP +\-n \fIrminame\fR +.RS 4 +RMIレジストリにおいて、リモートRMIオブジェクトがバインドされる名前です。デフォルト名は\fIJStatRemoteHost\fRです。複数の\fIjstatd\fRサーバーが同じホスト上で起動している場合、各サーバーのエクスポートしたRMIオブジェクトの名前は、このオプションを指定することによって、一意の名前にすることができます。ただし、このオプションを使用する場合、モニタリング・クライアントの\fIhostid\fRおよび\fIvmid\fR文字列に、その一意のサーバー名を含める必要があります。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +JVMに\fIoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されている\fIオプション\fRを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "セキュリティ" +.PP +\fIjstatd\fRサーバーは、適切なネイティブ・アクセス権を持つJVMのみを監視できます。したがって、\fIjstatd\fRプロセスは、ターゲットJVMと同じユーザー資格で実行されている必要があります。UNIXベースのシステムにおけるrootユーザーなどの一部のユーザー資格は、システム上の任意のJVMによってエクスポートされたインストゥルメンテーションへのアクセス権を持っています。このような資格で実行されている\fIjstatd\fRプロセスは、システム上のすべてのJVMを監視できますが、セキュリティ上の別の問題が起こります。 +.PP +\fIjstatd\fRサーバーには、リモート・クライアントの認証機能がありません。そのため、\fIjstatd\fRサーバー・プロセスを実行すると、\fIjstatd\fRプロセスがアクセス権を持つすべてのJVMによるインストゥルメンテーションのエクスポートを、ネットワーク上のすべてのユーザーに公開することになります。この無防備な状態は、環境によっては望ましくない場合があるので、特に実稼働環境または安全でないネットワークでは、\fIjstatd\fRプロセスを起動する前に、ローカル・セキュリティ・ポリシーを検討する必要があります。 +.PP +\fIjstatd\fRサーバーは、他のセキュリティ・マネージャがインストールされていない場合には、\fIRMISecurityPolicy\fRのインスタンスをインストールします。そのため、セキュリティ・ポリシー・ファイルを指定する必要があります。ポリシー・ファイルは、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/PolicyFiles\&.htmlにある +「デフォルトのPolicyの実装とポリシー・ファイルの構文」に準拠している必要があります +.PP +次のポリシー・ファイルでは、セキュリティ例外を発生せずに\fIjstatd\fRサーバーを実行できます。このポリシーは、すべてのコード・ベースへのあらゆるアクセス権を認めるポリシーよりも自由度が低いですが、\fIjstatd\fRサーバーを実行するために最低限必要なアクセス権のみを認めるポリシーよりも自由度が高くなっています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -grant codebase "file:${java.home}/../lib/tools.jar" {\fP -.br -\f3 -.fl - permission java.security.AllPermission;\fP -.br -\f3 -.fl -};\fP -.br -\f3 -.fl -\fP +grant codebase "file:${java\&.home}/\&.\&./lib/tools\&.jar" { + permission java\&.security\&.AllPermission; +}; .fi - -.LP -.LP -このポリシーを使用するには、このテキストを \f2jstatd.all.policy\fP というファイルにコピーし、次のように \f3jstatd\fP サーバーを実行します。 -.LP +.if n \{\ +.RE +.\} +.PP +このポリシー設定を使用するには、このテキストを\fIjstatd\&.all\&.policy\fRというファイルにコピーし、次のように\fIjstatd\fRサーバーを実行します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jstatd \-J\-Djava.security.policy=jstatd.all.policy\fP -.br -\f3 -.fl -\fP +jstatd \-J\-Djava\&.security\&.policy=jstatd\&.all\&.policy .fi - -.LP -.LP -より厳しいセキュリティーを実施するサイトの場合、カスタムポリシーファイルを使用して、特定の信頼できるホストまたはネットワークにアクセスを制限することができます。 ただし、このような方法は、IP アドレスの盗聴攻撃を受けやすくなります。セキュリティーの問題について、カスタマイズしたポリシーファイルでも対処できない場合は、\f3jstatd\fP サーバーを実行せずに、\f3jstat\fP と \f3jps\fP ツールをローカルで使用することがもっとも安全な方法になります。 -.LP -.SH "リモートインタフェース" -.LP -.LP -\f3jstatd\fP プロセスがエクスポートするインタフェースは、独自に開発したものであり変更される予定です。ユーザーおよび開発者は、このインタフェースへの書き込みを行わないでください。 -.LP +.if n \{\ +.RE +.\} +.PP +より厳しいセキュリティを実施するサイトの場合、カスタム・ポリシー・ファイルを使用して、特定の信頼できるホストまたはネットワークにアクセスを制限することができます。ただし、このような方法は、IPアドレスの盗聴攻撃を受けやすくなります。セキュリティの問題について、カスタマイズしたポリシー・ファイルでも対処できない場合は、\fIjstatd\fRサーバーを実行せずに、\fIjstat\fRと\fIjps\fRツールをローカルで使用することが最も安全な方法になります。 +.SH "リモート・インタフェース" +.PP +\fIjstatd\fRプロセスがエクスポートするインタフェースは、独自に開発したものであり変更される予定です。ユーザーおよび開発者は、このインタフェースへの書込みを行わないでください。 .SH "例" -.LP -.LP -次に \f3jstatd\fP を起動する例を紹介します。\f3jstatd\fP スクリプトによって、サーバーはバックグラウンドで自動的に起動します。 -.LP -.SS -内部 RMI レジストリの使用 -.LP -.LP -この例は、内部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。この例では、デフォルトの RMI レジストリポート (ポート 1099) には、他のサーバーはバインドされていないと想定しています。 -.LP +.PP +次に、\fIjstatd\fRコマンドの例を示します。\fIjstatd\fRスクリプトによって、サーバーはバックグラウンドで自動的に起動します。 +.SS "内部RMIレジストリ" +.PP +この例は、内部RMIレジストリを使用したホストによる\fIjstatd\fRセッションの起動を表しています。この例では、デフォルトのRMIレジストリ・ポート(ポート1099)には、他のサーバーはバインドされていないと想定しています。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -jstatd \-J\-Djava.security.policy=all.policy -.fl -\fP +jstatd \-J\-Djava\&.security\&.policy=all\&.policy .fi - -.LP -.SS -外部 RMI レジストリの使用 -.LP -.LP -この例は、外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 -.LP -.nf -\f3 -.fl -rmiregistry& -.fl -jstatd \-J\-Djava.security.policy=all.policy -.fl -\fP -.fi - -.LP -.LP -この例は、ポート 2020 の外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 -.LP -.nf -\f3 -.fl -rmiregistry 2020& -.fl -jstatd \-J\-Djava.security.policy=all.policy \-p 2020 -.fl -\fP -.fi - -.LP -.LP -この例は、AlternateJstatdServerName の名前にバインドされた、ポート 2020 の外部 RMI レジストリを使用した \f3jstatd\fP の起動を表しています。 -.LP -.nf -\f3 -.fl -rmiregistry 2020& -.fl -jstatd \-J\-Djava.security.policy=all.policy \-p 2020 \-n AlternateJstatdServerName -.fl -\fP -.fi - -.LP -.SS -インプロセス RMI レジストリの作成の禁止 -.LP -.LP -この例は、RMI レジストリが見つからない場合に RMI レジストリを作成しない \f3jstatd\fP の起動を表しています。この例では、RMI レジストリがすでに実行していると想定しています。実行していない場合は、該当するエラーメッセージが表示されます。 -.LP -.nf -\f3 -.fl -jstatd \-J\-Djava.security.policy=all.policy \-nr -.fl -\fP -.fi - -.LP -.SS -RMI ログ機能の有効化 -.LP -.LP -この例は、RMI ログ機能を有効にした \f3jstatd\fP の起動を表しています。この方法は、トラブルシューティングまたはサーバー活動の監視に役立ちます。 -.LP -.nf -\f3 -.fl -jstatd \-J\-Djava.security.policy=all.policy \-J\-Djava.rmi.server.logCalls=true -.fl -\fP -.fi - -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -「java(1) \- Java アプリケーション起動ツール」 -.TP 2 -o -「jps(1) \- Java 仮想マシンプロセスステータスツール」 -.TP 2 -o -「jstat(1) \- Java 仮想マシン統計データ監視ツール」 -.TP 2 -o -「 -.na -\f2rmiregistry\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi \- Java リモートオブジェクトレジストリ」 +.if n \{\ .RE - -.LP - +.\} +.SS "外部RMIレジストリ" +.PP +この例は、外部RMIレジストリを使用した\fIjstatd\fRセッションの起動を表しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +rmiregistry& +jstatd \-J\-Djava\&.security\&.policy=all\&.policy +.fi +.if n \{\ +.RE +.\} +.PP +この例では、ポート2020の外部RMIレジストリを使用して\fIjstatd\fRセッションを起動します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jrmiregistry 2020& +jstatd \-J\-Djava\&.security\&.policy=all\&.policy \-p 2020 +.fi +.if n \{\ +.RE +.\} +.PP +この例では、ポート2020の外部RMIレジストリを使用して、\fIAlternateJstatdServerName\fRにバインドされている\fIjstatd\fRセッションを起動します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +rmiregistry 2020& +jstatd \-J\-Djava\&.security\&.policy=all\&.policy \-p 2020 + \-n AlternateJstatdServerName +.fi +.if n \{\ +.RE +.\} +.SS "インプロセスRMIレジストリの作成の停止" +.PP +この例では、外部RMIレジストリがない場合に作成しない\fIjstatd\fRセッションを起動します。この例では、RMIレジストリがすでに実行されていると想定しています。RMIレジストリが実行されていない場合、エラー・メッセージが表示されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jstatd \-J\-Djava\&.security\&.policy=all\&.policy \-nr +.fi +.if n \{\ +.RE +.\} +.SS "RMIロギングの有効化" +.PP +この例では、RMIロギング機能を有効化して\fIjstatd\fRセッションを起動します。この方法は、トラブルシューティングまたはサーバー活動のモニタリングに役立ちます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +jstatd \-J\-Djava\&.security\&.policy=all\&.policy + \-J\-Djava\&.rmi\&.server\&.logCalls=true +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jps(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jstat(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rmiregistry(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/jvisualvm.1 b/jdk/src/solaris/doc/sun/man/man1/ja/jvisualvm.1 index 25a29ca9610..d4d0d519bf6 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/jvisualvm.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/jvisualvm.1 @@ -1,126 +1,123 @@ -." Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." under the terms of the GNU General Public License version 2 only, as -." published by the Free Software Foundation. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -." or visit www.oracle.com if you need additional information or have any -." questions. -." -.TH jvisualvm 1 "07 May 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 +'\" t +.\" Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: jvisualvm +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Javaトラブルシューティング、プロファイリング、モニタリングおよび管理ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "jvisualvm" "1" "2013年11月21日" "JDK 8" "Javaトラブルシューティング、プロファイリング、モニタリン" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +jvisualvm \- Javaアプリケーションを視覚的に監視、トラブルシュートおよびプロファイルします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \fP\f3jvisualvm\fP [ \f2options\fP ] -.fl +\fIjvisualvm\fR [ \fIoptions\fR ] .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 +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.SH "説明" +.PP +Java VisualVMは、指定されたJava仮想マシン(JVM)でJavaテクノロジ・ベースのアプリケーション(Javaアプリケーション)が実行されているときに、そのJavaアプリケーションに関する詳細な情報を提供する直感的なグラフィカル・ユーザー・インタフェースです。Java VisualVMという名前は、Java VisualVMがJVMソフトウェアに関する情報を視覚的に提供するという事実に由来しています。 +.PP +Java VisualVMは、いくつかのモニタリング、トラブルシューティングおよびプロファイリング・ユーティリティを1つのツールに統合します。たとえば、スタンドアロン・ツール\fIjmap\fR、\fIjinfo\fR、\fIjstat\fRおよび\fIjstack\fRで提供されている機能のほとんどが、Java VisualVMに組み込まれています。\fIjconsole\fRコマンドによって提供される一部の機能など、他の機能はオプションのプラグインとして追加できます。 +.PP +Java VisualVMは、Javaアプリケーションの開発者がアプリケーションのトラブルシューティングを行ったり、アプリケーションのパフォーマンスを監視および改善したりするのに役立ちます。Java VisualVMを使用すると、開発者はヒープ・ダンプの生成および解析、メモリー・リークの特定、ガベージ・コレクションの実行および監視、およびメモリーとCPUの簡易プロファイリングの実行が可能になります。プラグインでJava VisualVMの機能を拡張できます。たとえば、\fIjconsole\fRコマンドのほとんどの機能は、「MBean」タブおよびJConsole Plug\-in Wrapperプラグインを介して使用できます。標準のJava VisualVMプラグインのカタログから選択するには、Java VisualVMメニューの\fB「ツール」\fR、\fB「プラグイン」\fRを選択します。 +.PP +Java VisualVMを起動するには、次のコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +% jvisualvm <options> +.fi +.if n \{\ +.RE +.\} .SH "オプション" -.LP -.LP -次のオプションは、Java VisualVM を起動したときに実行可能になります。 -.LP -.RS 3 -.TP 3 -\-J<jvm_option>\ -この \f2<jvm_option>\fP を JVM ソフトウェアに渡します。 +.PP +次のオプションは、Java VisualVMを起動したときに実行可能になります。 +.PP +\-J\fIjvm_option\fR +.RS 4 +この\fIjvm_option\fRを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 -http://visualvm.java.net -.TP 2 -o -.na -\f2Java SE プラットフォームでの Java VisualVM のドキュメント\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/visualvm/index.html +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Java VisualVM開発者のサイト +http://visualvm\&.java\&.net/ .RE - -.LP -.LP -\f2(* 「Java 仮想マシン」と「JVM」という用語は、Java プラットフォームの仮想マシンを意味しています。)\fP -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Java SEドキュメントのJava VisualVM +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/visualvm/index\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/keytool.1 b/jdk/src/solaris/doc/sun/man/man1/ja/keytool.1 index aac06f6ba57..c19d4cf4e45 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/keytool.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/keytool.1 @@ -1,1845 +1,1579 @@ -." 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 -." 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 keytool 1 "07 May 2011" - -.LP -.SH "名前" -keytool \- 鍵と証明書の管理ツール -.LP -.LP -暗号化鍵、X.509 証明書チェーン、および信頼できる証明書を含むキーストア (データベース) を管理します。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: keytool +.\" Language: English +.\" Date: 2013年8月6日 +.\" SectDesc: セキュリティ・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "keytool" "1" "2013年8月6日" "JDK 8" "セキュリティ・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +keytool \- 暗号化鍵、X\&.509証明書チェーンおよび信頼できる証明書を含むキーストア(データベース)を管理します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3keytool\fP [ commands ] -.fl -.fi - -.LP -.LP -Java SE 6 で keytool のコマンドインタフェースが変更されました。詳細については「変更点」の節を参照してください。以前に定義されたコマンドも引き続きサポートされています。 -.LP -.SH "説明" -.LP -\f3keytool\fP は、鍵と証明書を管理するためのユーティリティーです。keytool を使うと、自分の公開鍵と非公開鍵のペア、および関連する証明書を管理し、デジタル署名を使った自己認証 (ほかのユーザーまたはサービスに対して自分自身を認証すること) や、データの整合性と証明書に関するサービスを利用することができます。keytool では、通信相手の公開鍵を (証明書の形で) キャッシュすることもできます。 -.LP -「証明書」とは、あるエンティティー (人物、会社など) からのデジタル署名付きの文書のことです。証明書には、ほかのあるエンティティーの公開鍵 (およびその他の情報) が特別な値を持っていることが書かれています(「証明書」を参照)。データにデジタル署名が付いている場合は、デジタル署名を検証することで、データの整合性およびデータが本物であることをチェックできます。データの「整合性」とは、データが変更されたり、改変されたりしていないことを意味します。 また、データが「本物である」とは、そのデータが、データを作成して署名したと称する人物から実際に渡されたデータであることを意味します。 -.LP -.LP -また、\f3keytool\fP を使えば、DES などの対称暗号化/復号化で使用される秘密鍵を管理することもできます。 -.LP -.LP -\f3keytool\fP は、鍵と証明書を\f2「キーストア」\fPに格納します。 -.LP -.SH "コマンドとオプションに関する注" -.LP -.LP -以下では、コマンドとそのオプションについて説明します。注: -.LP -.RS 3 -.TP 2 -o -どのコマンド名およびオプション名にも先頭にマイナス記号 (\-) が付く -.TP 2 -o -各コマンドのオプションは任意の順序で指定できる -.TP 2 -o -イタリック体になっていないすべての項目、または中括弧か角括弧で囲まれているすべての項目は、そのとおりに指定する必要がある -.TP 2 -o -オプションを囲む中括弧は、一般に、そのオプションをコマンド行で指定しなかった場合に、デフォルト値が使われることを意味する。中括弧は、 \f2\-v\fP、 \f2\-rfc\fP、および \f2\-J\fP オプションを囲むのにも使われるが、これらのオプションはコマンド行で指定された場合にのみ意味を持つ (つまり、これらのオプションには、オプション自体を指定しないこと以外に「デフォルト値」は存在しない) -.TP 2 -o -オプションを囲む角括弧は、そのオプションをコマンド行で指定しなかった場合に、値の入力を求められることを意味する。( \f2\-keypass\fP オプションの場合、オプションをコマンド行で指定しなかった場合は、\f3keytool\fP がまずキーストアのパスワードから非公開/秘密鍵の復元を試みる。 ユーザーは、この試みが失敗した場合に非公開/秘密鍵のパスワードの入力を求められる -.TP 2 -o -イタリック体の項目の実際の値 (オプションの値) は、ユーザーが指定する必要があるたとえば、 \f2\-printcert\fP コマンドの形式は次のとおりである -.nf -\f3 -.fl - keytool \-printcert {\-file \fP\f4cert_file\fP\f3} {\-v} -.fl -\fP -.fi -.LP -\f2\-printcert\fP コマンドを指定するときは、\f2cert_file\fP の代わりに実際のファイル名を指定する。次に例を示す -.nf -\f3 -.fl - keytool \-printcert \-file VScert.cer -.fl -\fP -.fi -.TP 2 -o -オプションの値に空白 (スペース) が含まれている場合は、値を引用符で囲む必要がある -.TP 2 -o -\f2\-help\fP コマンドはデフォルトのコマンドである。たとえば、次のようにコマンド行を指定したとする -.nf -\f3 -.fl - keytool -.fl -\fP -.fi -.LP -これは、次のように指定することと同じです。 -.nf -\f3 -.fl - keytool \-help -.fl -\fP +\fIkeytool\fR [\fIcommands\fR] .fi +.if n \{\ .RE - -.LP -.SS -オプションのデフォルト値 -.LP -.LP -オプションのデフォルト値は、次のとおりです。 -.LP -.nf -\f3 -.fl -\-alias "mykey" -.fl - -.fl -\-keyalg -.fl - "DSA" (\fP\f3\-genkeypair\fP\f3 を使用している場合) -.fl - "DES" (\fP\f3\-genseckey\fP\f3 を使用している場合) -.fl - -.fl -\-keysize -.fl - 2048 (\fP\f3\-genkeypair\fP\f3 を使用していて \-keyalg が "RSA" の場合) -.fl - 1024 (\fP\f3\-genkeypair\fP\f3 を使用していて \-keyalg が "DSA" の場合) -.fl - 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 -\-validity 90 -.fl - -.fl -\-keystore ユーザーのホームディレクトリの \fP\f4.keystore\fP\f3 というファイル -.fl - -.fl -\-storetype セキュリティープロパティーファイルの「keystore.type」プロパティーの値で、 -.fl - java.security.KeyStore の静的な getDefaultType メソッドから返される \fP\f4 \fP\f3 -.fl - \fP\f4 \fP\f3 -.fl - -.fl -\-file 読み込みの場合は標準入力、書き込みの場合は標準出力 -.fl - -.fl -\-protected false -.fl -\fP -.fi - -.LP -.LP -公開/非公開鍵ペアの生成において、署名アルゴリズム (\f2\-sigalg\fP オプション) は、基になる非公開鍵のアルゴリズムから派生します。 -.LP -.RS 3 -.TP 2 -o -基になる非公開鍵が DSA タイプである場合、\f2\-sigalg\fP オプションのデフォルト値は SHA1withDSA になり、 -.TP 2 -o -基になる非公開鍵が RSA タイプである場合は、\f2\-sigalg\fP オプションのデフォルト値は SHA256withRSA になり、 -.TP 2 -o -基になる非公開鍵が EC タイプである場合は、\f2\-sigalg\fP オプションのデフォルト値は SHA256withECDSA になります。 -.RE - -.LP -.LP -選択可能な \f2\-keyalg\fP および \f2\-sigalg\fP の完全な一覧については、 -.na -\f2「Java Cryptography Architecture API Specification & Reference」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppAを参照してください。 -.LP -.SS -一般オプション -.LP -.LP -\f2\-v\fP オプションは、 \f2\-help\fP コマンドを除くすべてのコマンドで使用できます。このオプションを指定した場合、コマンドは「冗長」モードで実行され、詳細な証明書情報が出力されます。 -.LP -.LP -また、 \f2\-J\fP\f2javaoption\fP オプションも、任意のコマンドで使用できます。このオプションを指定した場合、指定された \f2javaoption\fP 文字列が Java インタプリタに直接渡されます。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタオプションを一覧表示するには、コマンド行で \f2java \-h\fP または \f2java \-X\fP と入力してください。 -.LP -.LP -次のオプションは、キーストアに対する操作を行うすべてのコマンドで指定できます。 -.LP -.RS 3 -.TP 3 -\-storetype storetype -.LP -この修飾子は、インスタンスを生成するキーストアのタイプを指定します。 -.TP 3 -\-keystore keystore -.LP -キーストアの場所を指定します。 -.LP -特定の \f3keytool\fP コマンドを実行する際に、JKS ストアタイプが使用され、かつキーストアファイルがまだ存在していなかった場合、新しいキーストアファイルが作成されます。たとえば、 \f2keytool \-genkeypair\fP の実行時に \f2\-keystore\fP オプションが指定されなかった場合、 \f2.keystore\fP という名前のデフォルトキーストアファイルがユーザーのホームディレクトリ内にまだ存在していなければ、そこに作成されます。同様に、 \f2\-keystore \fP\f2ks_file\fP というオプションが指定されてもその \f2ks_file\fP が存在しなかった場合、そのファイルが作成されます。 -.LP -\f2\-keystore\fP オプションからの入力ストリームは、 \f2KeyStore.load\fP メソッドに渡されます。URL として \f2NONE\fP が指定されている場合は、null のストリームが \f2KeyStore.load\fP メソッドに渡されます。 \f2NONE\fP は、 \f2KeyStore\fP がファイルベースではなく、たとえば、ハードウェアトークンデバイスに置かれている場合に指定します。 -.TP 3 -\-storepass[:env|:file] argument -.LP -キーストアの整合性を保護するために使うパスワードを指定します。 -.LP -修飾子 \f2env\fP または \f2file\fP を指定しない場合、パスワードの値は \f2argument\fP になります。この値は、6 文字以上にする必要があります。それ以外の場合、パスワードは次のように取得されます。 -.RS 3 -.TP 2 -o -\f2env\fP: \f2argument\fP という名前の環境変数からパスワードを取得する -.TP 2 -o -\f2file\fP: \f2argument\fP という名前のファイルからパスワードを取得する -.RE -.LP -\f3注\fP: \f2\-keypass\fP、 \f2\-srckeypass\fP、 \f2\-destkeypass\fP \f2\-srcstorepass\fP、 \f2\-deststorepass\fP などのパスワードを必要とするその他のオプションはすべて、 \f2env\fP と \f2file\fP 修飾子を受け付けます。パスワードオプションと修飾子は、必ずコロン (\f2:\fP) で区切ってください。 -.LP -パスワードは、キーストアの内容にアクセスするすべてのコマンドで使われます。この種のコマンドを実行するときに、コマンド行で \f2\-storepass\fP オプションを指定しなかった場合は、パスワードの入力を求められます。 -.LP -キーストアから情報を取り出す場合は、パスワードを省略できます。 パスワードを省略すると、取り出す情報の整合性をチェックできないので、警告が表示されます。 -.TP 3 -\-providerName provider_name -.LP -セキュリティープロパティーファイル内に含まれる暗号化サービスプロバイダ名を特定するために使用されます。 -.TP 3 -\-providerClass provider_class_name -.LP -暗号化サービスプロバイダがセキュリティープロパティーファイルに指定されていないときは、そのマスタークラスファイルの名前を指定するときに使われます。 -.TP 3 -\-providerArg provider_arg -.LP -\f2\-providerClass\fP と組み合わせて使用します。\f2provider_class_name\fP のコンストラクタに対する省略可能な文字列入力引数を表します。 -.TP 3 -\-protected -.LP -\f2true\fP または \f2false\fP のいずれか。専用 PIN リーダーなどの保護された認証パスを介してパスワードを指定する必要がある場合には、この値に \f2true\fP を指定してください。 -.LP -注: \f2\-importkeystore\fP コマンドには 2 つのキーストアが関係しているため、2 つのオプション、つまり \f2\-srcprotected\fP と \f2\-destprotected\fP がソースキーストアとターゲットキーストアにそれぞれ指定されます。 -.TP 3 -\-ext {name{:critical}{=value}} -.LP -X.509 証明書エクステンションを示します。このオプションを \-genkeypair および \-gencert で使用して、生成される証明書または \f2\-certreq\fP にエクステンションを埋め込み、証明書要求で要求されるエクステンションを示すことができます。このオプションは、複数回使用できます。name には、サポートされているエクステンション名 (下記を参照) または任意の OID 番号を指定できます。value を指定した場合は、エクステンションのパラメータを示します。省略した場合は、エクステンションのデフォルト値 (定義されている場合) を示すか、またはエクステンションにパラメータは必要ありません。 \f2:critical\fP 修飾子を指定した場合は、エクステンションの isCritical 属性が true であることを示します。それ以外の場合は false であることを示します。:critical の代わりに : \f2:c\fP を使用できます。 . -.RE - -.LP -.LP -現在、keytool は次の名前のエクステンションをサポートしています (大文字と小文字は区別されない)。 -.LP -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 80 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -BC または BasicConstraints -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -完全な形は「ca:{true|false}[,pathlen:<len>]」で、<len> は「ca:true,pathlen:<len>」の省略表記です。 省略すると、「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)、keyEncipherment、dataEncipherment、keyAgreement、keyCertSign、cRLSign、encipherOnly、decipherOnly のいずれかを指定できます。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、 serverAuth、clientAuth、codeSigning、emailProtection、 timeStamping、OCSPSigning、または任意の OID 文字列のいずれかを指定できます。 名前付きの usage は、あいまいさがなければ、 最初の数文字またはキャメルケーススタイルに 短縮できます。Usage の大文字と小文字は区別されません。 -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -SAN または SubjectAlternativeName -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -type:value(,type:value)*。type には、EMAIL、URI、DNS、IP、または OID を指定できます。value は、type の文字列形式の値です。 -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -IAN または IssuerAlternativeName -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -SubjectAlternativeName と同じです -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -SIA または SubjectInfoAccess -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -method:location\-type:location\-value (,method:location\-type:location\-value)*。 method には、「timeStamping」、「caRepository」、または任意の OID を指定できます。location\-type および location\-value には、SubjectAlternativeName エクステンションでサポートされる任意の type:value を指定できます。 -.br -.di -.nr k| \n(dn -.nr k- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -AIA または AuthorityInfoAccess -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di m+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -SubjectInfoAccess と同じです。method には、「ocsp」、「caIssuers」、または任意の OID を指定できます。 -.br -.di -.nr m| \n(dn -.nr m- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \w\f3名前\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \wKU または KeyUsage -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 38 \n(a- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(d- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(f- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(h- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(j- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(l- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 81 0 -.nr 38 \w\f3値\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(m- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 325 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3名前\fP\h'|\n(41u'\f3値\fP -.ne \n(a|u+\n(.Vu -.ne \n(b|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'KU または KeyUsage\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.ne \n(e|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.ne \n(g|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.ne \n(i|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.ne \n(k|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.ne \n(m|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.m+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.rm m+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-44 - -.LP -.LP -OID 名の場合、OCTET STRING タイプと長さのバイトを除外したエクステンションについては、値は extnValue の HEX ダンプの DER エンコーディングです。HEX 文字列では、標準の HEX 数 (0\-9、a\-f、A\-F) 以外の文字は無視されます。したがって、 \f2「01:02:03:04」\fP と \f2「01020304」の両方とも\fP 同一の値として受け付けられます。値がない場合、エクステンションの値フィールドは空になります。 -.LP -.LP -\f2\-gencert\fP でのみ使用する「honored」という特別な名前は、証明書要求に含まれるエクステンションを優先する方法を示します。この名前の値は、 \f2「all」\fP (要求されるすべてのエクステンションが優先される)、 \f2「name{:[critical|non\-critical]}」\fP (名前付きのエクステンションが優先されるが、別の isCritical 属性を使用する)、および \f2「\-name」\fP (「all」とともに使用し、例外を示す) のコンマ区切りリストです。デフォルトでは、要求されるエクステンションは優先されません。 -.LP -.LP -\-ext 優先のオプションに加え、別の名前の、または OID \-ext のオプションを指定した場合は、このエクステンションが、すでに優先されているエクステンションに追加されます。ただし、この名前 (または OID) を優先される値でも使用した場合は、その値と重要性が要求に含まれるものをオーバーライドします。 -.LP -.LP -subjectKeyIdentifier エクステンションは常に作成されます。自己署名でない証明書の場合は、authorityKeyIdentifier が常に作成されます。 -.LP -.LP -\f3注:\fP ユーザーは、エクステンション (および証明書のほかのフィールド) の組み合わせによっては、インターネットの標準に準拠しない場合があることに注意してください。詳細については、「証明書の準拠に関する注意事項」を参照してください。 -.LP -.SH "コマンド" -.LP -.SS +.\} +.PP +\fIcommands\fR +.RS 4 +コマンドを参照してください。これらのコマンドは、次のようにタスク別に分類されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} キーストアへのデータの作成または追加 -.LP -.RS 3 -.TP 3 -\-gencert {\-rfc} {\-infile infile} {\-outfile outfile} {\-alias alias} {\-sigalg sigalg} {\-dname dname} {\-startdate startdate {\-ext ext}* {\-validity valDays} [\-keypass keypass] {\-keystore keystore} [\-storepass storepass] {\-storetype storetype} {\-providername provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -証明書要求ファイル ( \f2keytool \-certreq\fP コマンドで作成できる) に応答して証明書を生成します。このコマンドは、\f2infile\fP から (省略した場合は、標準入力から) 要求を読み込み、別名の非公開鍵を使ってその要求に署名して、X.509 証明書を \f2outfile\fP に (省略した場合は、標準出力に) 出力します。 \f2\-rfc\fP を指定した場合、出力形式は BASE64 符号化の PEM になります。それ以外の場合は、バイナリ DER が作成されます。 -.LP -\f2sigalg\fP には、証明書に署名を付けるときに使うアルゴリズムを指定します。\f2startdate\fP は、証明書が有効になる開始時刻/日付です。\f2valDays\fP には、証明書の有効日数を指定します。 -.LP -\f2dname\fP を指定すると、生成される証明書の主体として使用されます。それ以外の場合は、証明書要求からの名前が使用されます。 -.LP -\f2ext\fP は、証明書に埋め込まれる X.509 エクステンションを示します。\-ext の文法については、「一般オプション」を参照してください。 -.LP -\f2\-gencert\fP コマンドを使用すると、証明書チェーンを作成できます。次の例では、 \f2e1\fP という証明書を作成します。この証明書の証明書チェーンには、3 つの証明書が含まれています。 -.LP -次のコマンドは、ca、ca1、ca2、および 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 の証明書チェーンには ca、ca1、および 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] {\-startdate value} {\-ext ext}* {\-validity valDays} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -鍵のペア (公開鍵および関連する非公開鍵) を生成します。公開鍵は X.509 v3 自己署名証明書でラップされます。証明書は、単一の要素を持つ証明書チェーンとして格納されます。この証明書チェーンと非公開鍵は、\f2alias\fP で特定される新しいキーストアエントリに格納されます。 -.LP -\f2keyalg\fP は鍵のペアの生成に使用するアルゴリズムを、\f2keysize\fP は生成する各鍵のサイズを、それぞれ指定します。\f2sigalg\fP には、自己署名証明書に署名を付けるときに使うアルゴリズムを指定します。このアルゴリズムは、\f2keyalg\fP と互換性のあるものでなければなりません。 -.LP -\f2dname\fP には、\f2alias\fP に関連付け、自己署名証明書の issuer フィールドと subject フィールドとして使う X.500 識別名を指定します。 コマンド行で識別名を指定しなかった場合は、識別名の入力を求められます。 -.LP -\f2keypass\fP には、生成される鍵のペアのうち、非公開鍵を保護するのに使うパスワードを指定します。パスワードを指定しなかった場合は、パスワードの入力を求められます。このとき、Return キーを押すと、キーストアのパスワードと同じパスワードが鍵のパスワードに設定されます。\f2keypass\fP は、6 文字以上にする必要があります。 -.LP -\f2startdate\fP には、証明書の発行時刻を指定します。これは、X.509 証明書の「Validity」フィールドの「Not Before」値とも呼ばれます。 -.LP -オプションの値は、次の 2 つの形式のいずれかで設定できます。 -.RS 3 -.TP 3 -1. -([+\-]\f2nnn\fP[ymdHMS])+ -.TP 3 -2. -[yyyy/mm/dd] [HH:MM:SS] +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-gencert .RE -.LP -最初の形式では、発行時刻は、指定される値だけ現在の時刻から移ります。指定される値は、一連の下位の値を連結したものになります。下位の各値で、プラス記号 (「+」) は時間が進むことを、マイナス記号 (「\-」) は時間が戻ることを意味しています。移る時間は \f2nnn\fP で、単位は年、月、日、時間、分、または秒です (それぞれ、1 文字の「y」、「m」、「d」、「H」、「M」、または「S」で示されている)。下位の各値で \f2java.util.GregorianCalendar.add(int field, int amount)\fP メソッドを使うことで、発行時刻の追加の値が左から右へ計算されます。たとえば、 \f2「\-startdate \-1y+1m\-1d」\fPと指定すると、開始時刻は次のようになります。 -.nf -\f3 -.fl - Calendar c = new GregorianCalendar(); -.fl - c.add(Calendar.YEAR, \-1); -.fl - c.add(Calendar.MONTH, 1); -.fl - c.add(Calendar.DATE, \-1); -.fl - return c.getTime() -.fl -\fP -.fi -.LP -2 番目の形式では、ユーザーは、年/月/日と時間:分:秒の 2 つの部分で厳密な開始時刻を設定します (地元の時間帯を使用)。ユーザーは、1 つの部分だけを指定できます。これは、もう 1 つの部分は現在の日付 (または時刻) と同じになるということです。ユーザーは、形式の定義に示されているように、桁数を厳密に指定する必要があります (短い場合は 0 で埋める)。日付と時刻の両方が指定された状態で、2 つの部分の間に空白文字が 1 つ (1 つだけ) あります。時間は常に 24 時間形式で指定してください。 -.LP -オプションを指定しないと、開始日付は現在の時刻になります。オプションは、最大で 1 回指定できます。 -.LP -\f2valDays\fP には、証明書の有効日数を指定します ( \f2\-startdate\fP で指定された日付、または \f2\-startdate\fP が指定されていない場合は現在の日付から始まる)。 -.LP -このコマンドは、以前のリリースでは \f2\-genkey\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-genkeypair\fP を使用することをお勧めします。 -.TP 3 -\-genseckey {\-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 -秘密鍵を生成し、それを新しい \f2KeyStore.SecretKeyEntry\fP (\f2alias\fP で特定される) 内に格納します。 -.LP -\f2keyalg\fP は秘密鍵の生成に使用するアルゴリズムを、\f2keysize\fP は生成する鍵のサイズを、それぞれ指定します。\f2keypass\fP は秘密鍵の保護に使用するパスワードです。パスワードを指定しなかった場合は、パスワードの入力を求められます。このとき、Return キーを押すと、キーストアのパスワードと同じパスワードが鍵のパスワードに設定されます。\f2keypass\fP は、6 文字以上にする必要があります。 -.TP 3 -\-importcert {\-alias alias} {\-file cert_file} [\-keypass keypass] {\-noprompt} {\-trustcacerts} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -ファイル \f2cert_file\fP から証明書または証明書チェーン (証明書チェーンの場合は、PKCS#7 形式の応答または一連の X.509 証明書で提供されるもの) を読み込み、\f2alias\fP によって特定されるキーストアエントリに格納します。ファイルが指定されていない場合は、標準入力から証明書または証明書チェーンを読み込みます。 -.LP -\f3keytool\fP では、X.509 v1、v2、v3 の証明書、および、PKCS#7 形式の証明書から構成されている PKCS#7 形式の証明書チェーンをインポートできます。インポートするデータは、バイナリ符号化方式、または出力可能符号化方式 (Base64 符号化とも呼ばれる) のどちらかで提供する必要があります。 出力可能符号化方式は、インターネット RFC 1421 証明書符号化規格で定義されています。この符号化方式の場合、証明書は「\-\-\-\-\-BEGIN」で始まる文字列で開始され、「\-\-\-\-\-END」で始まる文字列で終了しなければなりません。 -.LP -証明書のインポートには、次の 2 つの目的があります。 -.RS 3 -.TP 3 -1. -信頼できる証明書のリストに証明書を追加する -.TP 3 -2. -CA に証明書署名要求 (\-certreq コマンドを参照) を送信した結果として、CA から受け取った証明応答をインポートする +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-genkeypair .RE -.LP -どちらの種類のインポートを行うかは、 \f2\-alias\fP オプションの値によって指定します。 -.RS 3 -.TP 3 -1. -\f3別名がキーエントリをポイントしない場合\fP、\f3keytool\fP はユーザーが信頼できる証明書エントリを追加しようとしているものと見なします。この場合、別名がキーストア内にすでに存在していてはいけません。別名がすでに存在している場合、その別名の信頼できる証明書がすでに存在することになるので、\f3keytool\fP はエラーを出力し、証明書のインポートを行いません。 -.TP 3 -2. -.LP -\f3別名がキーエントリをポイントしない場合\fP、\f3keytool\fP はユーザーが信頼できる証明書エントリを追加しようとしているものと見なします。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-genseckey .RE -\f3新しい信頼できる証明書のインポート\fP -.LP -\f3keytool\fP は、キーストアに証明書を追加する前に、キーストア内にすでに存在する信頼できる証明書を使って、インポートする証明書から (ルート CA の) 自己署名証明書に至るまでの信頼のチェーンの構築を試みます。 -.LP -\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 は証明書を出力せず、ユーザーに検証を求めるプロンプトを表示します。ユーザーが証明応答の信頼性を判断するのは、不可能ではなくても非常に困難だからです。 -.TP 2 -o -\f3証明応答が PKCS#7 形式の証明書チェーンまたは一連の X.509 証明書である場合\fP、チェーンは、ユーザーの証明書が最初に、0 以上の CA 証明書がその次にくるように並べられます。チェーンが自己署名のルート CA 証明書で終わり、 \f2\-trustcacerts\fP オプションが指定されている場合、\f3keytool\fP は、その証明書と、キーストア内または「cacerts」キーストアファイル内の信頼できるすべての証明書を照合しようとします。チェーンが自己署名のルート CA 証明書で終わっておらず、 \f2\-trustcacerts\fP オプションが指定されている場合、\f3keytool\fP は、キーストア内または「cacerts」キーストアファイル内の信頼できる証明書から自己署名のルート CA 証明書を見つけてそれをチェーンの末尾に追加しようとします。その証明書が見つからず、 \f2\-noprompt\fP オプションが指定されていない場合は、チェーン内の最後の証明書の情報が出力され、ユーザーは確認を求められます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-importcert .RE -.LP -証明書応答内の公開鍵が \f2alias\fP の下にすでに格納されているユーザーの公開鍵に一致した場合、古い証明書チェーンが応答内の新しい証明書チェーンで置き換えられます。以前の証明書チェーンを新しい証明書チェーンで置き換えることができるのは、有効な \f2keypass\fP、つまり該当するエントリの非公開鍵を保護するためのパスワードを指定した場合だけです。パスワードを指定しておらず、非公開鍵のパスワードがキーストアのパスワードと異なる場合は、非公開鍵のパスワードの入力を求められます。 -.LP -このコマンドは、以前のリリースでは \f2\-import\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-importcert\fP を使用することをお勧めします。 -.TP 3 -\-importkeystore \-srckeystore srckeystore \-destkeystore destkeystore {\-srcstoretype srcstoretype} {\-deststoretype deststoretype} [\-srcstorepass srcstorepass] [\-deststorepass deststorepass] {\-srcprotected} {\-destprotected} {\-srcalias srcalias {\-destalias destalias} [\-srckeypass srckeypass] [\-destkeypass destkeypass] } {\-noprompt} {\-srcProviderName src_provider_name} {\-destProviderName dest_provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -ソースキーストアからターゲットキーストアへ、単一のエントリまたはすべてのエントリをインポートします。 -.LP -\f2srcalias\fP オプションが指定された場合、このコマンドは、その別名で特定される単一のエントリをターゲットキーストアにインポートします。\f2destalias\fP 経由でターゲット別名が指定されなかった場合、\f2srcalias\fP がターゲット別名として使用されます。ソースのエントリがパスワードで保護されていた場合、\f2srckeypass\fP を使ってそのエントリが回復されます。\f2srckeypass\fP が指定されなかった場合、\f3keytool\fP は \f2srcstorepass\fP を使ってそのエントリを回復しようとします。\f2srcstorepass\fP が指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ターゲットエントリは \f2destkeypass\fP によって保護されます。\f2destkeypass\fP が指定されなかった場合、ターゲットエントリはソースエントリのパスワードによって保護されます。 -.LP -\f2srcalias\fP オプションが指定されなかった場合、ソースキーストア内のすべてのエントリがターゲットキーストア内にインポートされます。各ターゲットエントリは対応するソースエントリの別名の下に格納されます。ソースのエントリがパスワードで保護されていた場合、\f2srcstorepass\fP を使ってそのエントリが回復されます。\f2srcstorepass\fP が指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ソースキーストア内のあるエントリタイプがターゲットキーストアでサポートされていない場合や、あるエントリをターゲットキーストアに格納する際にエラーが発生した場合、ユーザーはそのエントリをスキップして処理を続行するか、あるいは処理を中断するかの選択を求められます。ターゲットエントリはソースエントリのパスワードによって保護されます。 -.LP -ターゲット別名がターゲットキーストア内にすでに存在していた場合、ユーザーは、そのエントリを上書きするか、あるいは異なる別名の下で新しいエントリを作成するかの選択を求められます。 -.LP -\f2\-noprompt\fP を指定した場合、ユーザーは新しいターゲット別名の入力を求められません。既存のエントリはそのターゲット別名で自動的に上書きされます。最後に、インポートできないエントリは自動的にスキップされ、警告が出力されます。 -.TP 3 -\-printcertreq {\-file file} -.LP -PKCS #10 形式の証明書要求の内容を出力します。この要求は、keytool \-certreq コマンドで生成できます。このコマンドは、file から要求を読み込みます。file が省略されている場合は、標準入力から読み込みます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-importpassword .RE - -.LP -.SS +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +別のキーストアの内容のインポート +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-importkeystore +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +証明書リクエストの生成 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-certreq +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} データのエクスポート -.LP -.RS 3 -.TP 3 -\-certreq {\-alias alias} {\-dname dname} {\-sigalg sigalg} {\-file certreq_file} [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -PKCS#10 形式を使って証明書署名要求 (CSR) を生成します。 -.LP -CSR は、証明書発行局 (CA) に送信することを目的としたものです。CA は、証明書要求者を (通常はオフラインで) 認証し、証明書または証明書チェーンを送り返します。 この証明書または証明書チェーンは、キーストア内の既存の証明書チェーン (最初は 1 つの自己署名証明書から構成される) に置き換えて使います。 -.LP -\f2alias\fP に関連付けられた非公開鍵は、PKCS#10 証明書要求を作成するのに使われます。非公開鍵はキーストア内ではパスワードによって保護されているので、非公開鍵にアクセスするには、適切なパスワードを提供する必要があります。コマンド行で \f2keypass\fP を指定しておらず、非公開鍵のパスワードがキーストアのパスワードと異なる場合は、非公開鍵のパスワードの入力を求められます。dname が指定されている場合は、それが CSR で主体として使用されます。それ以外の場合は、別名に関連付けられた X.500 識別名が使用されます。 -.LP -\f2sigalg\fP には、CSR に署名を付けるときに使うアルゴリズムを指定します。 -.LP -CSR は、ファイル \f2certreq_file\fP に格納されます。ファイルが指定されていない場合は、標準出力に CSR が出力されます。 -.LP -CA からの応答をインポートするには、\f2importcert\fP コマンドを使います。 -.TP 3 -\-exportcert {\-alias alias} {\-file cert_file} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-rfc} {\-v} {\-protected} {\-Jjavaoption} -.LP -\f2alias\fP に関連付けられた証明書を (キーストアから) 読み込み、ファイル \f2cert_file\fP に格納します。 -.LP -ファイルが指定されていない場合は、標準出力に証明書が出力されます。 -.LP -デフォルトでは、バイナリ符号化方式の証明書が出力されます。 ただし、\-rfc オプションを指定した場合は、出力可能符号化方式の証明書が出力されます。 出力可能符号化方式は、インターネット RFC 1421 証明書符号化規格で定義されています。 -.LP -\f2alias\fP が、信頼できる証明書を参照している場合は、該当する証明書が出力されます。それ以外の場合、\f2alias\fP は、関連付けられた証明書チェーンを持つ鍵エントリを参照します。この場合は、チェーン内の最初の証明書が返されます。この証明書は、\f2alias\fP によって表されるエンティティーの公開鍵を認証する証明書です。 -.LP -このコマンドは、以前のリリースでは \f2\-export\fP という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 \f2\-exportcert\fP を使用することをお勧めします。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-exportcert .RE - -.LP -.SS +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.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 で特定されるキーストアエントリの内容を (標準出力に) 出力します。別名が指定されていない場合は、キーストア全体の内容が表示されます。 -.LP -このコマンドは、デフォルトでは証明書の SHA1 フィンガープリントを表示します。 \f2\-v\fP オプションが指定されている場合は、所有者、発行者、シリアル番号、拡張機能などの付加的な情報とともに、人間が読むことのできる形式で証明書が表示されます。 \f2\-rfc\fP オプションが指定されている場合は、出力可能符号化方式で証明書の内容が表示されます。 出力可能符号化方式は、インターネット RFC 1421 証明書符号化規格で定義されています。 -.LP -\f2\-v\fP オプションと \f2\-rfc\fP オプションを同時に指定することはできません。 -.TP 3 -\-printcert {\-file cert_file | \-sslserver host[:port]} {\-jarfile JAR_file {\-rfc} {\-v} {\-Jjavaoption} -.LP -ファイル \f2cert_file\fP、\f2host:port\fP にある SSL サーバー、または署名付き JAR ファイル \f2JAR_file\fP ( \f2\-jarfile\fP オプションを指定) から証明書を読み込み、人間が読むことのできる形式で証明書の内容を表示します。ポートが指定されていない場合は、標準の HTTPS ポート 443 が想定されます。 \f2\-sslserver\fP および \f2\-file\fP オプションを同時に指定することはできません。同時に指定すると、エラーが報告されます。オプションが指定されていない場合は、標準入力から証明書を読み込みます。 -.LP -\f2\-rfc\fP が指定されている場合、keytool は、インターネット RFC 1421 標準で定義されているように、PEM モードで証明書を出力します。 -.LP -ファイルまたは標準入力から証明書を読み込む場合、その証明書は、インターネット RFC 1421 標準で定義されているように、バイナリ符号化方式または出力可能符号化方式で表示できます。 -.LP -SSL サーバーがファイアウォールの背後にある場合は、 \f2\-J\-Dhttps.proxyHost=proxyhost\fP と \f2\-J\-Dhttps.proxyPort=proxyport\fP をコマンド行で指定して、プロキシトンネリングを使用できます。詳細は、 -.na -\f2「JSSE リファレンスガイド」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.htmlを参照してください。 -.LP -\f3注\fP: このオプションはキーストアとは関係なく使用できます。 -.TP 3 -\-printcrl \-file crl_ {\-v} -.LP -ファイル \f2crl_file\fP から証明書の取り消しリスト (CRL) を読み込みます。 -.LP -証明書の取り消しリスト (CRL) は、デジタル証明書を発行した証明書発行局 (CA) によって取り消されたデジタル証明書のリストです。CA は、\f2crl_file\fP を生成します。 -.LP -\f3注\fP: このオプションはキーストアとは関係なく使用できます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-list .RE - -.LP -.SS +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-printcert +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-printcertreq +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-printcrl +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.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 には、新しいパスワードを指定します。new_storepass は、6 文字以上でなければなりません。 -.TP 3 -\-keypasswd {\-alias alias} [\-keypass old_keypass] [\-new new_keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-Jjavaoption} -.LP -\f2alias\fP によって特定される非公開/秘密鍵を保護するためのパスワードを、\f2old_keypass\fP から \f2new_keypass\fP に変更します。new_keypass は、6 文字以上でなければなりません。 -.LP -コマンド行で \f2\-keypass\fP オプションを指定しておらず、鍵のパスワードがキーストアのパスワードと異なる場合は、鍵のパスワードの入力を求められます。 -.LP -コマンド行で \f2\-new\fP オプションを指定しなかった場合は、新しいパスワードの入力を求められます。 -.TP 3 -\-delete [\-alias alias] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -\f2alias\fP によって特定されるエントリをキーストアから削除します。コマンド行で別名を指定しなかった場合は、別名の入力を求められます。 -.TP 3 -\-changealias {\-alias alias} [\-destalias destalias] [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption} -.LP -指定された \f2alias\fP から新しい別名 \f2destalias\fP へ、既存のキーストアエントリを移動します。ターゲット別名が指定されなかった場合、このコマンドはその入力を求めます。元のエントリがエントリパスワードで保護されていた場合、「\-keypass」オプション経由でそのパスワードを指定できます。鍵パスワードが指定されなかった場合、\f2storepass\fP (指定された場合) がまず試みられます。その試みが失敗すると、ユーザーはパスワードの入力を求められます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-storepasswd .RE - -.LP -.SS +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-keypasswd +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-delete +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-changealias +.RE +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} ヘルプの表示 -.LP -.RS 3 -.TP 3 -\-help -.LP -基本的なコマンドとそのオプションの一覧を表示します。 -.LP -特定のコマンドの詳細については、次のように入力してください。 \f2command_name\fP はコマンドの名前です。 -.nf -\f3 -.fl - keytool \-\fP\f4command_name\fP\f3 \-help -.fl -\fP -.fi +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\-help .RE - -.LP -.SH "例" -.LP -.LP -ここでは、自分の鍵のペアおよび信頼できるエンティティーからの証明書を管理するためのキーストアを作成する場合を例として示します。 -.LP -.SS -鍵のペアの生成 -.LP -.LP -まず、キーストアを作成して鍵のペアを生成する必要があります。次に示すのは、実行するコマンドの例です。 -.LP -.nf -\f3 -.fl - keytool \-genkeypair \-dname "cn=Mark Jones, ou=Java, o=Oracle, c=US" -.fl - \-alias business \-keypass \fP\f4<非公開鍵の新しいパスワード>\fP\f3 \-keystore /working/mykeystore -.fl - \-storepass \fP\f4<キーストアの新しいパスワード>\fP\f3 \-validity 180 -.fl -\fP -.fi - -.LP -.LP -注: このコマンドは 1 行に入力しなければなりません。例で複数行に入力しているのは読みやすくするためです。 -.LP -.LP -この例では、working ディレクトリに mykeystore という名前のキーストアを作成し (キーストアはまだ存在していないと仮定する)、作成したキーストアに、\f2<キーストアの新しいパスワード>\fP で指定したパスワード を割り当てます。生成する公開鍵と非公開鍵のペアに対応するエンティティーの「識別名」は、通称が「Mark Jones」、組織単位が「Java」、組織が「Oracle」、2 文字の国番号が「US」です。公開鍵と非公開鍵のサイズはどちらも 1024 ビットで、鍵の作成にはデフォルトの DSA 鍵生成アルゴリズムを使用します。 -.LP -.LP -このコマンドは、公開鍵と識別名情報を含む自己署名証明書 (デフォルトの SHA1withDSA 署名アルゴリズムを使用) を作成します。証明書の有効期間は 180 日です。 証明書は、別名「business」で特定されるキーストアエントリ内の非公開鍵に関連付けられます。非公開鍵には、\f2<非公開鍵の新しいパスワード>\fP で指定したパスワードが割り当てられます。 -.LP -.LP -オプションのデフォルト値を使う場合は、上に示したコマンドを大幅に短くすることができます。実際には、オプションを 1 つも指定せずにコマンドを実行することも可能です。 デフォルト値を持つオプションでは、オプションを指定しなければデフォルト値が使われ、必要な値については入力を求められます。たとえば、単に次のように入力することもできます。 -.LP -.nf -\f3 -.fl - keytool \-genkeypair -.fl -\fP -.fi - -.LP -.LP -この場合は、mykey という別名でキーストアエントリが作成され、新しく生成された鍵のペア、および 90 日間有効な証明書がこのエントリに格納されます。このエントリは、ホームディレクトリ内の .keystore という名前のキーストアに置かれます。このキーストアがまだ存在していない場合は、作成されます。識別名情報、キーストアのパスワード、および非公開鍵のパスワードについては、入力を求められます。 -.LP -.LP -以下では、オプションを指定しないで \f2\-genkeypair\fP コマンドを実行したものとして例を示します。情報の入力を求められた場合は、最初に示した \f2\-genkeypair\fP コマンドの値を入力したものとします (たとえば、識別名には cn=Mark Jones, ou=Java, o=Oracle, c=US と指定)。 -.LP -.SS -証明書発行局に対する署名付き証明書の要求 -.LP -.LP -現時点で手元にあるのは、1 通の自己署名証明書だけです。証明書に証明書発行局 (CA) の署名が付いていれば、ほかのユーザーから証明書が信頼できる可能性も高くなります。CA の署名を取得するには、まず、証明書署名要求 (CSR) を生成します。 たとえば、次のようにします。 -.LP -.nf -\f3 -.fl - keytool \-certreq \-file MarkJ.csr -.fl -\fP -.fi - -.LP -.LP -CSR (デフォルト別名「mykey」によって特定されるエンティティーの CSR) が作成され、MarkJ.csr という名前のファイルに置かれます。このファイルは、VeriSign などの CA に提出します。 CA は要求者を (通常はオフラインで) 認証し、要求者の公開鍵を認証した署名付きの証明書を送り返します。場合によっては、CA が証明書のチェーンを返すこともあります。証明書のチェーンでは、各証明書がチェーン内のその前の署名者の公開鍵を認証します。 -.LP -.SS -CA からの証明書のインポート -.LP -.LP -作成した自己署名証明書は、証明書チェーンで置き換える必要があります。証明書チェーンでは、各証明書が、「ルート」CA を起点とするチェーン内の次の証明書の署名者の公開鍵を認証します。 -.LP -.LP -CA からの証明応答をインポートするには、キーストアか、 \f2cacerts\fP キーストアファイル (importcert コマンドで説明) 内に 1 つ以上の「信頼できる証明書」がある必要があります。 -.LP -.RS 3 -.TP 2 -o -証明応答が証明書チェーンの場合は、チェーンのトップの証明書 (その CA の公開鍵を認証する「ルート」CA の証明書) だけを必要とする -.TP 2 -o -証明応答が単一の証明書の場合は、証明書に署名した CA の発行用の証明書が必要で、その証明書が自己署名されない場合は、さらにその証明書の署名者用の証明書を必要とする。 このようにして自己署名される「ルート」CA の証明書までそれぞれ証明書を必要とする .RE - -.LP -.LP -cacerts キーストアファイルは、いくつかの VeriSign ルート CA 証明書を含んだ状態で出荷されているので、VeriSign の証明書を、信頼できる証明書としてキーストア内にインポートする必要はないかもしれません。ただし、ほかの CA に対して署名付き証明書を要求していて、この CA の公開鍵を認証する証明書が、cacerts にまだ追加されていない場合は、該当する CA からの証明書を、「信頼できる証明書」としてインポートする必要があります。 -.LP -.LP -通常、CA からの証明書は、自己署名証明書、またはほかの CA によって署名された証明書です (後者の場合は、該当するほかの CA の公開鍵を認証する証明書も必要)。たとえば、ABC という企業が CA だとします。このとき、この CA の公開鍵を認証する自己署名証明書と考えられる ABCCA.cer という名前のファイルを、ABC から入手したとします。 -.LP -.LP -「信頼できる証明書」として証明書をインポートするときは、証明書が有効であることを慎重に確認する必要があります。まず、証明書の内容を表示し (\f3keytool\fP \f2\-printcert\fP コマンドを使用するか、または \-noprompt オプションを指定しないで \f3keytool\fP \f2\-importcert\fP コマンドを使用し、 表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致するかどうかを確認します。証明書を送信した人物に連絡し、この人物が提示した (または安全な公開鍵のリポジトリによって提示される) フィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中でほかの何者か (攻撃者など) による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのものを信頼することになります。 -.LP -.LP -ABCCA.cer を有効な証明書として信頼する場合は、証明書をキーストアに追加できます。 たとえば、次のようにします。 -.LP -.nf -\f3 -.fl - keytool \-importcert \-alias abc \-file ABCCA.cer -.fl -\fP -.fi - -.LP -.LP -ABCCA.cer ファイルのデータを含む「信頼できる証明書」のエントリがキーストア内に作成され、該当するエントリに abc という別名が割り当てられます。 -.LP -.SS -CA からの証明応答のインポート -.LP -.LP -証明書署名要求の提出先の CA の公開鍵を認証する証明書をインポートしたあとは (または同種の証明書がすでに cacerts ファイル内に存在している場合は)、証明応答をインポートし、自己署名証明書を証明書チェーンで置き換えることができます。この証明書チェーンは、CA の応答がチェーンの場合、証明書署名要求に対する応答として CA から送り返された証明書チェーンです。 また、CA の応答が単一の証明書の場合は、この証明応答と、インポート先のキーストア内または cacerts キーストアファイル内にすでに存在する信頼できる証明書とを使って構築した証明書チェーンです。 -.LP -.LP -たとえば、証明書署名要求を VeriSign に送信したとします。送り返された証明書の名前が VSMarkJ.cer だとすると、次のようにして応答をインポートできます。 -.LP -.nf -\f3 -.fl - keytool \-importcert \-trustcacerts \-file VSMarkJ.cer -.fl -\fP -.fi - -.LP -.SS -公開鍵を認証する証明書のエクスポート -.LP -.LP -たとえば、jarsigner(1) ツールを使って Java ARchive (JAR) ファイルに署名を付けたとします。この JAR ファイルはクライアントによって使われますが、クライアント側では署名を認証したいと考えています。 -.LP -.LP -クライアントが署名を認証する方法の 1 つに、まず自分の公開鍵の証明書を「信頼できる」エントリとしてクライアントのキーストアにインポートする方法があります。そのためには、証明書をエクスポートして、クライアントに提供します。たとえば、次のようにして、証明書を \f2MJ.cer\fP という名前のファイルにコピーします。このエントリには「mykey」という別名が使われているとします。 -.LP -.nf -\f3 -.fl - keytool \-exportcert \-alias mykey \-file MJ.cer -.fl -\fP -.fi - -.LP -.LP -証明書と署名付き JAR ファイルを入手したクライアントは、\f3jarsigner\fP ツールを使って署名を認証できます。 -.LP -.SS -キーストアのインポート -.LP -.LP -コマンド「importkeystore」を使えば、あるキーストアの全体を別のキーストア内にインポートできます。これは、鍵や証明書といったソースキーストア内のすべてのエントリが、単一のコマンドを使ってターゲットキーストア内にインポートされることを意味します。このコマンドを使えば、異なるタイプのキーストア内に含まれるエントリをインポートすることができます。インポート時には、ターゲットキーストア内の新しいエントリはすべて、元と同じ別名および (秘密鍵や非公開鍵の場合は) 保護用パスワードを持ちます。ソースキーストア内の非公開鍵や秘密鍵の回復時に問題が発生した場合、\f3keytool\fP はユーザーにパスワードの入力を求めます。このコマンドは、別名の重複を検出すると、ユーザーに新しい別名の入力を求めます。ユーザーは、新しい別名を指定することも、単純に既存の別名の上書きを \f3keytool\fP に許可することもできます。 -.LP -.LP -たとえば、通常の JKS タイプのキーストア key.jks 内のエントリを PKCS #11 タイプのハードウェアベースのキーストア内にインポートするには、次のコマンドを使用できます。 -.LP -.nf -\f3 -.fl - keytool \-importkeystore -.fl - \-srckeystore key.jks \-destkeystore NONE -.fl - \-srcstoretype JKS \-deststoretype PKCS11 -.fl - \-srcstorepass \fP\f4<ソースキーストアのパスワード>\fP\f3 \-deststorepass \fP\f4<ターゲットキーストアのパスワード>\fP\f3 -.fl -\fP -.fi - -.LP -.LP -また、importkeystore コマンドを使えば、あるソースキーストア内の単一のエントリをターゲットキーストアにインポートすることもできます。この場合、上記の例で示したオプションに加え、インポート対象となる別名を指定する必要があります。srcalias オプションを指定する場合には、ターゲット別名もコマンド行から指定できるほか、秘密/非公開鍵の保護用パスワードやターゲット保護用パスワードも指定できます。その方法を示すコマンドを次に示します。 -.LP -.nf -\f3 -.fl - keytool \-importkeystore -.fl - \-srckeystore key.jks \-destkeystore NONE -.fl - \-srcstoretype JKS \-deststoretype PKCS11 -.fl - \-srcstorepass \fP\f4<ソースキーストアのパスワード>\fP\f3 \-deststorepass \fP\f4<ターゲットキーストアのパスワード>\fP\f3 -.fl - \-srcalias myprivatekey \-destalias myoldprivatekey -.fl - \-srckeypass \fP\f4<ソースエントリのパスワード>\fP\f3 \-destkeypass \fP\f4<ターゲットエントリのパスワード>\fP\f3 -.fl - \-noprompt -.fl -\fP -.fi - -.LP -.SS -一般的な SSL サーバー用の証明書の生成 -.LP -.LP -次に、3 つのエンティティー、つまりルート CA (root)、中間 CA (ca)、および SSL サーバー (server) 用の鍵ペアと証明書を生成する keytool コマンドを示します。すべての証明書を同じキーストアに格納するようにしてください。これらの例では、鍵のアルゴリズムとして RSA を指定することをお勧めします。 -.LP -.nf -\f3 -.fl -keytool \-genkeypair \-keystore root.jks \-alias root \-ext bc:c -.fl -keytool \-genkeypair \-keystore ca.jks \-alias ca \-ext bc:c -.fl -keytool \-genkeypair \-keystore server.jks \-alias server -.fl - -.fl -keytool \-keystore root.jks \-alias root \-exportcert \-rfc > root.pem -.fl - -.fl -keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore ca.jks \-certreq \-alias ca | keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore root.jks \-gencert \-alias root \-ext BC=0 \-rfc > ca.pem -.fl -keytool \-keystore ca.jks \-importcert \-alias ca \-file ca.pem -.fl - -.fl -keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore server.jks \-certreq \-alias server | keytool \-storepass \fP\f4<storepass>\fP\f3 \-keystore ca.jks \-gencert \-alias ca \-ext ku:c=dig,kE \-rfc > server.pem -.fl -cat root.pem ca.pem server.pem | keytool \-keystore server.jks \-importcert \-alias server -.fl -\fP -.fi - -.LP -.SH "用語と警告" -.LP -.SS -KeyStore -.LP -.LP -キーストアは、暗号化の鍵と証明書を格納するための機能です。 -.LP -.RS 3 -.TP 2 -o -\f3キーストアのエントリ\fP -.LP -キーストアには異なるタイプのエントリを含めることができます。\f3keytool\fP でもっとも適用範囲の広いエントリタイプは、次の 2 つです。 -.RS 3 -.TP 3 -1. -\f3鍵のエントリ\fP \- 各エントリは、非常に重要な暗号化の鍵の情報を保持します。この情報は、許可していないアクセスを防ぐために、保護された形で格納されます。 一般に、この種のエントリとして格納される鍵は、秘密鍵か、対応する公開鍵の証明書チェーンを伴う非公開鍵です。\f3keytool\fP がこの両方のタイプのエントリを処理できるのに対し、\f3jarsigner\fP ツールは後者のタイプのエントリ、つまり非公開鍵とそれに関連付けられた証明書チェーンのみを処理します。 -.TP 3 -2. -\f3信頼できる証明書のエントリ\fP \- 各エントリは、第三者からの公開鍵証明書を 1 つ含んでいます。この証明書は、「信頼できる証明書」と呼ばれます。 それは、証明書内の公開鍵が、証明書の「Subject」(所有者) によって特定されるアイデンティティーに由来するものであることを、キーストアの所有者が信頼するからです。証明書の発行者は、証明書に署名を付けることによって、その内容を保証します。 .RE -.TP 2 -o -\f3キーストアの別名\fP -.LP -キーストアのすべてのエントリ (鍵および信頼できる証明書) は、一意の「別名」を介してアクセスされます。 -.LP -別名を指定するのは、\-genseckey コマンドを使って秘密鍵を生成したり、\-genkeypair コマンドを使って鍵ペア (公開鍵と非公開鍵) を生成したり、\-importcert コマンドを使って証明書または証明書チェーンを信頼できる証明書のリストに追加したりするなど、特定のエンティティーをキーストアに追加する場合です。これ以後、\f3keytool\fP コマンドでエンティティーを参照する場合は、このときに指定した別名を使用する必要があります。 -.LP -たとえば、\f2duke\fP という別名を使って新しい公開鍵と非公開鍵のペアを生成し、公開鍵を自己署名証明書 (「証明書チェーン」を参照) でラップするとします。 この場合は、次のコマンドを実行します。 -.nf -\f3 -.fl - keytool \-genkeypair \-alias duke \-keypass dukekeypasswd -.fl -\fP -.fi -.LP -ここでは、初期パスワードとして dukekeypasswd を指定しています。 以後、別名 duke 連付けられた非公開鍵にアクセスするコマンドを実行するときは、このパスワードが必要になります。 duke の非公開鍵のパスワードをあとから変更するには、次のコマンドを実行します。 -.nf -\f3 -.fl - keytool \-keypasswd \-alias duke \-keypass dukekeypasswd \-new newpass -.fl -\fP -.fi -.LP -パスワードが、dukekeypasswd から newpass に変更されます。 -.LP -注: テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。必要なパスワードのオプションをコマンド行で指定しなかった場合は、パスワードの入力を求められます。 -.TP 2 -o -\f3キーストアの実装\fP -.LP -\f2KeyStore\fP クラス ( \f2java.security\fP パッケージで提供される) には、キーストア内の情報に対するアクセスと変更を行うための明確に定義されたインタフェースが用意されています。キーストアの固定実装としては、それぞれが特定の「タイプ」のキーストアを対象とする複数の異なる実装が存在可能です。 -.LP -現在、\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 によってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。したがって、キーストアの実装を提供するには、 -.na -\f2「Java(TM) 暗号化アーキテクチャー用プロバイダの実装方法」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.htmlで説明しているように、クライアントが「プロバイダ」を実装し、KeystoreSpi サブクラスの実装を提供する必要があります。 -.LP -アプリケーションでは、KeyStore クラスが提供する getInstance ファクトリメソッドを使うことで、さまざまなプロバイダから異なる「タイプ」のキーストアの実装を選択できます。 キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の非公開/秘密鍵とキーストア自体の整合性を保護するために使われるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。 -.LP -\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 の最上位ディレクトリ) です。 -.LP -各ツールは、 \f2keystore.type\fP の値を取得し、この値で指定されたタイプのキーストアを実装しているプロバイダが見つかるまで、現在インストールされているすべてのプロバイダを調べます。目的のプロバイダが見つかると、そのプロバイダからのキーストアの実装を使います。 -.LP -\f2KeyStore\fP クラスでは \f2getDefaultType\fP という名前の static メソッドが定義されており、アプリケーションとアプレットはこのメソッドを使うことで \f2keystore.type\fP プロパティーの値を取得できます。次のコードは、デフォルトのキーストアタイプ ( \f2keystore.type\fP プロパティーで指定されたタイプ) のインスタンスを生成します。 -.nf -\f3 -.fl - KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); -.fl -\fP -.fi -.LP -デフォルトのキーストアタイプは JKS (Oracle が提供する独自のタイプのキーストアの実装) です。これは、セキュリティープロパティーファイル内の次の行によって指定されています。 -.nf -\f3 -.fl - keystore.type=jks -.fl -\fP -.fi -.LP -各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。 -.LP -たとえば、pkcs12 と呼ばれるタイプのキーストアの実装を提供しているプロバイダパッケージを使用するには、上の行を次のように変更します。 -.nf -\f3 -.fl - keystore.type=pkcs12 -.fl -\fP -.fi -.LP -注: キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、JKS と jks は同じものとして扱われます。 +.SH "説明" +.PP +\fIkeytool\fRコマンドは、鍵と証明書を管理するためのユーティリティです。これにより、ユーザーは自分の公開鍵と秘密鍵のペアおよび関連する証明書を管理し、デジタル署名を使用した自己認証(他のユーザーまたはサービスに対して自分自身を認証すること)や、データの整合性と証明書に関するサービスを利用することができます。\fIkeytool\fRコマンドでは、通信しているピアの公開鍵をキャッシュすることもできます(証明書のフォームで)。 +.PP +証明書とは、あるエンティティ(人物、会社など)からのデジタル署名付きの文書のことです。証明書には、他のあるエンティティの公開鍵(およびその他の情報)が特別な値を持っていることが書かれています。(証明書を参照してください。)データにデジタル署名が付いている場合は、デジタル署名を検証することで、データの整合性およびデータが本物であることをチェックできます。データの整合性とは、データが変更されたり、改変されたりしていないことを意味します。また、データが本物であるとは、そのデータが、データを作成して署名したと称する人物から渡されたデータであることを意味します。 +.PP +また、\fIkeytool\fRコマンドを使用すれば、対称暗号化/復号化(DES)で使用される秘密鍵およびパスフレーズを管理することもできます。 +.PP +\fIkeytool\fRコマンドは、鍵と証明書をキーストアに格納します。キーストアの別名を参照してください。 +.SH "コマンドとオプションに関する注意" +.PP +様々なコマンドとその説明については、コマンドを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +どのコマンド名およびオプション名にも先頭にマイナス記号(\-)が付きます。 .RE - -.LP -.SS -証明書 -.LP -\f3証明書\fP (\f3公開鍵証明書\fPとも呼ぶ) とは、あるエンティティー (「発行者」) からのデジタル署名付きの文書のことです。 証明書には、ほかのあるエンティティー (「署名者」) の公開鍵 (およびその他の情報) が特別な値を持っていることが書かれています。 -.RS 3 -.TP 2 -o -\f3証明書の用語\fP -.RS 3 -.TP 3 -公開鍵 -.LP -公開鍵は、特定のエンティティーに関連付けられた数です。公開鍵は、該当するエンティティーとの間に信頼できる関係を持つ必要があるすべての人に対して公開することを意図したものです。公開鍵は、署名を検証するのに使われます。 -.TP 3 -デジタル署名 -.LP -データが「デジタル署名」されると、そのデータは、エンティティーの「アイデンティティー」と、そのエンティティーがデータの内容について知っていることを証明する署名とともに格納されます。エンティティーの非公開鍵を使ってデータに署名を付けると、データの偽造は不可能になります。 -.TP 3 -アイデンティティー -.LP -エンティティーを特定するための既知の方法です。システムによっては、公開鍵をアイデンティティーにするものがあります。公開鍵のほかにも、Unix UID や電子メールアドレス、X.509 識別名など、さまざまなものをアイデンティティーとすることができます。 -.TP 3 -署名 -.LP -署名は、なんらかのデータを基にエンティティー (署名者。 証明書に関しては発行者とも呼ばれる) の非公開鍵を使って計算されます。 -.TP 3 -非公開鍵 -.LP -非公開鍵は特定のエンティティーだけが知っている数のことで、この数のことを、そのエンティティーの非公開鍵といいます。非公開鍵は、ほかに知られないように秘密にしておくことが前提になっています。非公開鍵と公開鍵は、すべての公開鍵暗号化システムで対になって存在しています。DSA などの典型的な公開鍵暗号化システムの場合、1 つの非公開鍵は正確に 1 つの公開鍵に対応します。非公開鍵は、署名を計算するのに使われます。 -.TP 3 -エンティティー -.LP -エンテンティーは、人、組織、プログラム、コンピュータ、企業、銀行など、一定の度合いで信頼の対象となるさまざまなものを指します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +各コマンドのオプションは任意の順序で指定できます。 .RE -.LP -公開鍵暗号化では、その性質上、ユーザーの公開鍵にアクセスする必要があります。大規模なネットワーク環境では、互いに通信しているエンティティー間で以前の関係が引き続き確立されていると仮定したり、使われているすべての公開鍵を収めた信頼できるリポジトリが存在すると仮定したりすることは不可能です。このような公開鍵の配布に関する問題を解決するために証明書が考案されました。現在では、「証明書発行局 (CA)」が信頼できる第三者として機能します。CA は、ほかのエンティティーの証明書に署名する (発行する) 行為を、信頼して任されているエンティティー (企業など) です。CA は法律上の契約に拘束されるので、有効かつ信頼できる証明書だけを作成するものとして扱われます。 -.na -\f2VeriSign\fP @ -.fi -http://www.verisign.com/、 -.na -\f2Thawte\fP @ -.fi -http://www.thawte.com/、 -.na -\f2Entrust\fP @ -.fi -http://www.entrust.com/ をはじめ、多くの CA が存在します。Microsoft の認証サーバー、Entrust の CA 製品などを所属組織内で利用すれば、独自の証明書発行局を運営することも可能です。 -.LP -\f3keytool\fP を使うと、証明書の表示、インポート、およびエクスポートを行うことができます。また、自己署名証明書を生成することもできます。 -.LP -現在、\f3keytool\fP は X.509 証明書を対象にしています。 -.TP 2 -o -\f3X.509 証明書\fP -.LP -X.509 規格では、証明書に含める情報が定義されており、この情報を証明書に書き込む方法 (データ形式) についても記述されています。証明書のすべてのデータは、ASN.1/DER と呼ばれる 2 つの関連規格を使って符号化されます。\f2Abstract Syntax Notation 1\fP はデータについて記述しています。\f2Definite Encoding Rules\fP は、データの保存および転送の方法について記述しています。 -.LP -すべての X.509 証明書は、署名のほかに次のデータを含んでいます。 -.RS 3 -.TP 3 -バージョン -.LP -証明書に適用される X.509 規格のバージョンを特定します。証明書に指定できる情報は、バージョンによって異なります。これまでに、3 つのバージョンが定義されています。\f3keytool\fP では、v1、v2、および v3 の証明書のインポートとエクスポートが可能です。keytool が生成するのは、v3 の証明書です。 -.LP -「X.509 Version 1」は、1988 年から利用されて広く普及しており、もっとも一般的です。 -.LP -「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 -シリアル番号 -.LP -証明書を作成したエンティティーは、そのエンティティーが発行するほかの証明書と区別するために、証明書にシリアル番号を割り当てます。この情報は、さまざまな方法で使われます。たとえば、証明書が取り消されると、シリアル番号が証明書の取り消しリスト (CRL) に格納されます。 -.TP 3 -署名アルゴリズム識別子 -.LP -証明書に署名を付けるときに CA が使ったアルゴリズムを特定します。 -.TP 3 -発行者名 -.LP -証明書に署名を付けたエンティティーの X.500 識別名です。エンティティーは、通常は CA です。この証明書を使うことは、証明書に署名を付けたエンティティーを信頼することを意味します。「ルート」つまり「トップレベル」の CA の証明書など、場合によっては発行者が自身の証明書に署名を付けることがある点に注意してください。 -.TP 3 -有効期間 -.LP -各証明書は、限られた期間だけ有効になります。この期間は開始の日時と終了の日時によって指定され、数秒の短い期間から 100 年という長期にわたることもあります。選択される有効期間は、証明書への署名に使われる非公開鍵の強度や証明書に支払う金額など、さまざまな要因で異なります。有効期間は、使用する非公開鍵が損なわれない場合に、エンティティーが公開鍵を信頼できると期待される期間です。 -.TP 3 -Subject 名 -.LP -証明書で公開鍵が識別されているエンティティーの名前です。この名前は X.500 標準を使うので、インターネット全体で一意なものと想定されます。これは、エンティティーの X.500 識別名 (DN) です。次に例を示します。 -.nf -\f3 -.fl - CN=Java Duke, OU=Java Software Division, O=Oracle Corporation, C=US -.fl -\fP -.fi -.LP -これらはそれぞれ主体の通称、組織単位、組織、国を表します。 -.TP 3 -Subject の公開鍵情報 -.LP -名前を付けられたエンティティーの公開鍵とアルゴリズム識別子です。アルゴリズム識別子では、公開鍵に対して使われている公開鍵暗号化システムおよび関連する鍵パラメータが指定されています。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +イタリック体になっていないすべての項目、または中カッコか角カッコで囲まれているすべての項目は、そのとおりに指定する必要があります。 .RE -.TP 2 -o -\f3証明書チェーン\fP -.LP -\f3keytool\fP では、非公開鍵および関連する証明書「チェーン」を含むキーストアの「鍵」エントリを作成し、管理することができます。このようなエントリでは、非公開鍵に対応する公開鍵は、チェーンの最初の証明書に含まれています。 -.LP -鍵を初めて作成すると (\-genkeypair コマンドを参照)、「自己署名証明書」という 1 つの要素だけを含むチェーンが開始されます。自己署名証明書は、発行者 (署名者) が主体 (証明書で認証されている公開鍵の持ち主) と同じである証明書のことです。 \f2\-genkeypair\fP コマンドを呼び出して新しい公開鍵と非公開鍵のペアを作成すると、公開鍵は常に自己署名証明書でラップされます。 -.LP -このあと、証明書署名要求 (CSR) が生成されて (\-certreq コマンドを参照)、CSR が証明書発行局 (CA) に送信されると、CA からの応答がインポートされ (\-importcert コマンドを参照)、元の自己署名証明書は証明書チェーンによって置き換えられます。チェーンの最後にあるのは、Subject の公開鍵を認証した CA が発行した証明書 (応答) です。チェーン内のその前の証明書は、「CA」の公開鍵を認証する証明書です。 -.LP -CA の公開鍵を認証する証明書は、多くの場合、自己署名証明書 (つまり CA が自身の公開鍵を認証した証明書) であり、これはチェーンの最初の証明書になります。場合によっては、CA が証明書のチェーンを返すこともあります。この場合、チェーン内の最後の証明書 (CA によって署名され、鍵エントリの公開鍵を認証する証明書) に変わりはありませんが、チェーン内のその前の証明書は、CSR の送信先の CA とは「別の」CA によって署名され、CSR の送信先の CA の公開鍵を認証する証明書になります。さらに、チェーン内のその前の証明書は、次の CA の鍵を認証する証明書になります。 以下同様に、自己署名された「ルート」証明書に達するまでチェーンが続きます。したがって、チェーン内の (最初の証明書以後の) 各証明書では、チェーン内の次の証明書の署名者の公開鍵が認証されていることになります。 -.LP -多くの CA は、チェーンをサポートせずに発行済みの証明書だけを返します。特に、中間の CA が存在しないフラットな階層構造の場合は、その傾向が顕著です。このような場合は、キーストアにすでに格納されている信頼できる証明書情報から、証明書チェーンを確立する必要があります。 -.LP -別の応答形式 (PKCS#7 で定義されている形式) でも、発行済み証明書に加え、証明書チェーンのサポートが含まれています。\f3keytool\fP では、どちらの応答形式も扱うことができます。 -.LP -トップレベル (ルート) CA の証明書は、自己署名証明書です。ただし、ルートの公開鍵に対する信頼は、ルートの証明書自体から導き出されるものではなく (たとえば、VeriSign ルート CA のような有名な識別名を使った自己署名証明書を作成すること自体は誰でも可能)、新聞などのほかの情報源に由来するものです。ルート CA の公開鍵は広く知られています。ルート CA の公開鍵を証明書に格納する理由は、証明書という形式にすることで多くのツールから利用できるようになるからにすぎません。 つまり、証明書は、ルート CA の公開鍵を運ぶ「媒体」として利用されるだけです。ルート CA の証明書をキーストアに追加するときは、その前に証明書の内容を表示し ( \f2\-printcert\fP オプションを使用)、表示されたフィンガープリントと、新聞やルート CA の Web ページなどから入手した既知のフィンガープリントとを比較する必要があります。 -.TP 2 -o -\f3cacerts 証明書ファイル\fP -.LP -\f3cacerts\fP という名前の証明書ファイルは、セキュリティープロパティーディレクトリ \f2java.home\fP/lib/security に置かれています。\f2java.home\fP は、実行環境のディレクトリ (SDK の \f2jre\fP ディレクトリまたは Java 2 Runtime Environment の最上位ディレクトリ) です。 -.LP -cacerts ファイルは、CA の証明書を含む、システム全体のキーストアです。システム管理者は、キーストアタイプに jks を指定することで、\f3keytool\fP を使ってこのファイルの構成と管理を行うことができます。cacerts キーストアファイルは、ルート CA 証明書のデフォルトセットを含んだ状態で出荷されています。それらの証明書を一覧表示するには、次のコマンドを使用します。 -.nf -\f3 -.fl -keytool \-list \-keystore \fP\f4java.home\fP\f3/lib/security/cacerts -.fl -\fP -.fi -.LP -cacerts キーストアファイルの初期パスワードは、changeit です。システム管理者は、SDK のインストール後、このファイルのパスワードとデフォルトアクセス権を変更する必要があります。 -.LP -\f3重要: \fP\f4cacerts\fP\f3 ファイルを確認してください\fP: \f2cacerts\fP ファイル内の CA は、署名および他のエンティティーへの証明書発行のためのエンティティーとして信頼されるため、 \f2cacerts\fP ファイルの管理は慎重に行う必要があります。 \f2cacerts\fP ファイルには、信頼する CA の証明書だけが含まれていなければなりません。ユーザーは、自身の責任において、 \f2cacerts\fP ファイルにバンドルされている信頼できるルート CA 証明書を検証し、信頼性に関する独自の決定を行います。信頼できない CA 証明書を \f2cacerts\fP ファイルから削除するには、 \f2keytool\fP コマンドの削除オプションを使用します。 \f2cacerts\fP ファイルは JRE のインストールディレクトリにあります。このファイルを編集するアクセス権がない場合は、システム管理者に連絡してください。 -.TP 2 -o -\f3インターネット RFC 1421 証明書符号化規格\fP -.LP -多くの場合、証明書は、バイナリ符号化ではなく、インターネット RFC 1421 規格で定義されている出力可能符号化方式を使って格納されます。「Base 64 符号化」とも呼ばれるこの証明書形式では、電子メールやその他の機構を通じて、ほかのアプリケーションに証明書を容易にエクスポートできます。 -.LP -\f2\-importcert\fP と \f2\-printcert\fP コマンドでは、この形式の証明書とバイナリ符号化の証明書を読み込むことができます。 -.LP -\f2\-exportcert\fP コマンドでは、デフォルトでバイナリ符号化の証明書が出力されます。 ただし、 \f2\-rfc\fP オプションを指定した場合は、出力可能符号化方式の証明書が出力されます。 -.LP -\f2\-list\fP コマンドでは、デフォルトで証明書の SHA1 フィンガープリントが出力されます。 \f2\-v\fP オプションを指定すると、人間が読むことのできる形式で証明書が出力されます。一方、 \f2\-rfc\fP オプションを指定すると、出力可能符号化方式で証明書が出力されます。 -.LP -出力可能符号化方式で符号化された証明書は、次の行で始まります。 -.nf -\f3 -.fl -\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\- -.fl -\fP -.fi -.LP -最後は、次の行で終わります。 -.nf -\f3 -.fl -\-\-\-\-\-END CERTIFICATE\-\-\-\-\- -.fl -\fP -.fi +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +オプションを囲む中カッコは、そのオプションをコマンドラインで指定しなかった場合に、デフォルト値が使用されることを意味します。オプションのデフォルト値を参照してください。中カッコは、\fI\-v\fR、\fI\-rfc\fRおよび\fI\-J\fRオプションを囲むためにも使用されますが、これらのオプションはコマンドラインで指定された場合にのみ意味を持ちます。指定されていない場合以外、デフォルト値はありません。 .RE - -.LP -.SS -X.500 識別名 -.LP -.LP -X.500 識別名は、エンティティーを特定するために使われます。たとえば、X.509 証明書の \f2subject\fP フィールドと \f2issuer\fP (署名者) フィールドで指定される名前は、X.500 識別名です。\f3keytool\fP は、次のサブパートをサポートしています。 -.LP -.RS 3 -.TP 2 -o -\f2commonName\fP \- 人の通称。 「Susan Jones」など -.TP 2 -o -\f2organizationUnit\fP \- 小さな組織 (部、課など) の名称。 「仕入部」など -.TP 2 -o -\f2organizationName\fP \- 大きな組織の名称。 「ABCSystems, Inc.」など -.TP 2 -o -\f2localityName\fP \- 地域 (都市) 名。 「Palo Alto」など -.TP 2 -o -\f2stateName\fP \- 州名または地方名。 「California」など -.TP 2 -o -\f2country\fP \- 2 文字の国番号。 「CH」など +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +オプションを囲む角カッコは、そのオプションをコマンドラインで指定しなかった場合に、値の入力を求められることを意味します。\fI\-keypass\fRオプションの場合、オプションをコマンドラインで指定しなかった場合は、\fIkeytool\fRコマンドがまずキーストアのパスワードを使用して非公開/秘密鍵の復元を試みます。この試みが失敗した場合、\fIkeytool\fRコマンドにより、非公開/秘密鍵のパスワードの入力を求められます。 .RE - -.LP -.LP -\-genkeypair コマンドの \f2\-dname\fP オプションの値として識別名文字列を指定する場合は、 次の形式で指定する必要があります。 -.LP -.nf -\f3 -.fl -CN=\fP\f4cName\fP\f3, OU=\fP\f4orgUnit\fP\f3, O=\fP\f4org\fP\f3, L=\fP\f4city\fP\f3, S=\fP\f4state\fP\f3, C=\fP\f4countryCode\fP\f3 -.fl -\fP -.fi - -.LP -.LP -イタリック体の項目は、実際に指定する値を表します。 短縮形のキーワードの意味は、次のとおりです。 -.LP -.nf -\f3 -.fl - CN=commonName -.fl - OU=organizationUnit -.fl - O=organizationName -.fl - L=localityName -.fl - S=stateName -.fl - C=country -.fl -\fP -.fi - -.LP -.LP -次に示すのは、識別名文字列の例です。 -.LP -.nf -\f3 -.fl -CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, S=California, C=US -.fl -\fP -.fi - -.LP -.LP -次は、この文字列を使ったコマンドの例です。 -.LP -.nf -\f3 -.fl -keytool \-genkeypair \-dname "CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, -.fl -S=California, C=US" \-alias mark -.fl -\fP -.fi - -.LP -.LP -キーワードの短縮形では、大文字と小文字は区別されません。たとえば、CN、cn、および Cn は、どれも同じものとして扱われます。 -.LP -.LP -一方、キーワードの指定順序には意味があり、各サブコンポーネントは上に示した順序で指定する必要があります。ただし、サブコンポーネントをすべて指定する必要はありません。たとえば、次のように一部のサブコンポーネントだけを指定できます。 -.LP -.nf -\f3 -.fl -CN=Steve Meier, OU=Java, O=Oracle, C=US -.fl -\fP -.fi - -.LP -.LP -識別名文字列の値にコンマが含まれる場合に、コマンド行で文字列を指定するときには、次のようにコンマを文字 \\ でエスケープする必要があります。 -.LP -.nf -\f3 -.fl - cn=Peter Schuster, ou=Java\\, Product Development, o=Oracle, c=US -.fl -\fP -.fi - -.LP -.LP -識別名文字列をコマンド行で指定する必要はありません。識別名を必要とするコマンドを実行するときに、コマンド行で識別名を指定しなかった場合は、各サブコンポーネントの入力を求められます。この場合は、コンマを文字 \\ でエスケープする必要はありません。 -.LP -.SS -信頼できる証明書のインポートに関する注意事項 -.LP -.LP -重要: 信頼できる証明書として証明書をインポートする前に、証明書の内容を慎重に調べてください。 -.LP -.LP -まず、証明書の内容を表示し (\-printcert コマンドを使用するか、または \-noprompt オプションを指定しないで \-importcert コマンドを使用)、 コマンドを使用し、 表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致するかどうかを確認します。たとえば、あるユーザーから証明書が送られてきて、この証明書を /tmp/cert という名前でファイルに格納しているとします。 この場合は、信頼できる証明書のリストにこの証明書を追加する前に、 \f2\-printcert\fP コマンドを実行してフィンガープリントを表示できます。たとえば、次のようにします。 -.LP -.nf -\f3 -.fl - keytool \-printcert \-file /tmp/cert -.fl - Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll -.fl - Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll -.fl - Serial Number: 59092b34 -.fl - Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997 -.fl - Certificate Fingerprints: -.fl - MD5: 11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F -.fl - SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE -.fl - SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90: -.fl - 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4 -.fl -\fP -.fi - -.LP -.LP -次に、証明書を送信した人物に連絡し、この人物が提示したフィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中でほかの何者か (攻撃者など) による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのもの (攻撃的意図を持つクラスファイルを含んだ JAR ファイルなど) を信頼することになります。 -.LP -.LP -注: 証明書をインポートする前に必ず \f2\-printcert\fP コマンドを実行しなければならないわけではありません。キーストア内の信頼できる証明書のリストに証明書を追加する前に \f2\-importcert\fP コマンドを実行すると、証明書の情報が表示され、確認を求めるメッセージが表示されます。インポート操作は、この時点で中止できます。ただし、確認メッセージが表示されるのは、\-importcert コマンドを \-noprompt オプションを指定せずに実行した場合だけです。 コマンドを使用し、 \f2\-noprompt\fP オプションが指定されている場合、ユーザーとの対話は行われません。 -.LP -.SS -パスワードに関する注意事項 -.LP -.LP -キーストアに対する操作を行うほとんどのコマンドでは、ストアのパスワードが必要です。また、一部のコマンドでは、非公開/秘密鍵のパスワードが必要になることがあります。 -.LP -.LP -パスワードはコマンド行で指定できます (ストアのパスワードには \f2\-storepass\fP オプション、非公開鍵のパスワードには \f2\-keypass\fP オプションを使用)。ただし、テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。 -.LP -.LP -必要なパスワードのオプションをコマンド行で指定しなかった場合は、パスワードの入力を求められます。 -.LP -.SS -証明書の準拠に関する注意事項 -.LP -.LP -インターネット標準の -.na -\f2RFC 5280\fP @ -.fi -http://tools.ietf.org/rfc/rfc5280.txt では、X.509 証明書が準拠するプロファイルを定義しています。このプロファイルには、証明書のフィールドやエクステンションで有効な値や値の組み合わせが含まれています。\f3keytool\fP では、これらのすべての規則が適用されているわけではないので、標準に準拠しない証明書が生成される可能性があり、そのような証明書は JRE やほかのアプリケーションで拒否されることがあります。ユーザーは、 \f2\-dname\fP や \f2\-ext\fP などで適正なオプションを指定するようにしてください。 -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -jar(1) ツールのドキュメント -.TP 2 -o -jarsigner(1) ツールのドキュメント -.TP 2 -o -.na -\f4keytool\fP\f2 の使用例については、\fP @ -.fi -http://download.oracle.com/javase/tutorial/security/index.html -.na -\f2「Java Tutorial」\fP\f4の\fP @ -.fi -http://download.oracle.com/javase/tutorial/「Security」\f3を参照\fP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +イタリック体の項目の実際の値(オプションの値)は、指定する必要があります。たとえば、\fI\-printcert\fRコマンドの形式は次のとおりです。 +.sp +\fIkeytool \-printcert {\-file cert_file} {\-v}\fR +.sp +\fI\-printcert\fRコマンドを指定する場合は、\fIcert_file\fRを実際のファイル名で置き換えます。例: +\fIkeytool \-printcert \-file VScert\&.cer\fR .RE - -.LP -.SH "変更点" -.LP -.LP -Java SE 6 で keytool のコマンドインタフェースが変更されました。 -.LP -.LP -\f3keytool\fP は、ユーザーがパスワードを入力する際にその入力内容を表示しなくなりました。ユーザーはパスワード入力時にその入力内容を確認できなくなったため、初期キーストアパスワードを設定したり鍵パスワードを変更したりするなど、パスワードの設定や変更を行うたびにパスワードの再入力を求められます。 -.LP -.LP -変更されたコマンドの中には、名前が変更されただけのものもあれば、廃止されてこのドキュメントに記載されなくなったものもあります。以前のすべてのコマンド (名前が変更されたものと廃止されたものの両方) は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。keytool のコマンドインタフェースに加えられたすべての変更点の概要を、次に示します。 -.LP -.LP -名前が変更されたコマンド: -.LP -.RS 3 -.TP 2 -o -\f2\-export\fP の名前が \f2\-exportcert に変更\fP -.TP 2 -o -\f2\-genkey\fP の名前が \f2\-genkeypair に変更\fP -.TP 2 -o -\f2\-import\fP の名前が \f2\-importcert に変更\fP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +オプションの値に空白(スペース)が含まれている場合は、値を引用符で囲む必要があります。 .RE - -.LP -.LP -廃止されてドキュメントに記載されなくなったコマンド: -.LP -.RS 3 -.TP 2 -o -.na -\f2\-keyclone\fP @ -.fi -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/windows/keytool.html#identitydbCmd -.TP 2 -o -.na -\f2\-selfcert\fP @ -.fi -http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/keytool.html#selfcertCmd +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-help\fRオプションがデフォルトです。\fIkeytool\fRコマンドは、\fIkeytool \-help\fRと同じです。 .RE - -.LP +.SH "オプションのデフォルト値" +.PP +次の例で、様々なオプション値のデフォルト値を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-alias "mykey" +\-keyalg + "DSA" (when using \-genkeypair) + "DES" (when using \-genseckey) + +\-keysize + 2048 (when using \-genkeypair and \-keyalg is "RSA") + 1024 (when using \-genkeypair and \-keyalg is "DSA") + 256 (when using \-genkeypair and \-keyalg is "EC") + 56 (when using \-genseckey and \-keyalg is "DES") + 168 (when using \-genseckey and \-keyalg is "DESede") + +\-validity 90 + +\-keystore <the file named \&.keystore in the user\*(Aqs home directory> + +\-storetype <the value of the "keystore\&.type" property in the + security properties file, which is returned by the static + getDefaultType method in java\&.security\&.KeyStore> + +\-file + stdin (if reading) + stdout (if writing) + +\-protected false +.fi +.if n \{\ +.RE +.\} +.PP +公開/秘密鍵ペアの生成において、署名アルゴリズム(\fI\-sigalg\fRオプション)は、基になる秘密鍵のアルゴリズムから派生します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +基になる秘密鍵がDSAタイプである場合は、\fI\-sigalg\fRオプションのデフォルト値はSHA1withDSAになります。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +基になる秘密鍵がRSAタイプである場合は、\fI\-sigalg\fRオプションのデフォルト値はSHA256withRSAになります。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +基になる秘密鍵がECタイプである場合は、\fI\-sigalg\fRオプションのデフォルト値はSHA256withECDSAになります。 +.RE +.PP +\fI\-keyalg\fRおよび\fI\-sigalg\fR引数の完全なリストについては、 +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppAの「Java Cryptography Architecture (JCA) Reference Guide」を参照してください。 +.SH "一般オプション" +.PP +\fI\-v\fRオプションは、\fI\-help\fRコマンドを除くすべてのコマンドで使用できます。\fI\-v\fRオプションを指定した場合、コマンドは冗長モードで実行され、詳細な情報が出力されます。 +.PP +任意のコマンドで指定できる\fI\-Jjavaoption\fR引数もあります。\fI\-Jjavaoption\fRを指定した場合、指定された\fIjavaoption\fR文字列がJavaインタプリタに直接渡されます。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタ・オプションを一覧表示するには、コマンドラインで\fIjava \-h\fRまたは\fIjava \-X\fRと入力してください。 +.PP +次のオプションは、キーストアに対する操作を行うすべてのコマンドで指定できます。 +.PP +\-storetype \fIstoretype\fR +.RS 4 +この修飾子は、インスタンスを生成するキーストアのタイプを指定します。 +.RE +.PP +\-keystore \fIkeystore\fR +.RS 4 +キーストアの場所を指定します。 +.sp +特定の\fIkeytool\fRコマンドを実行する際に、JKS +\fIstoretype\fRが使用され、かつキーストア・ファイルがまだ存在していなかった場合、新しいキーストア・ファイルが作成されます。たとえば、\fIkeytool \-genkeypair\fRの呼出し時に\fI\-keystore\fRオプションが指定されなかった場合、\fI\&.keystore\fRという名前のデフォルト・キーストア・ファイルがユーザーのホーム・ディレクトリ内にまだ存在していなければ、そこに作成されます。同様に、\fI\-keystore ks_file\fRというオプションが指定されてもそのks_fileが存在しなかった場合、そのファイルが作成されます。JKS +\fIstoretype\fRの詳細は、\fIの\fRKeyStoreの実装キーストアの別名に関する項を参照してください。 +.sp +\fI\-keystore\fRオプションからの入力ストリームは、\fIKeyStore\&.load\fRメソッドに渡されます。URLとして\fINONE\fRが指定されている場合は、nullのストリームが\fIKeyStore\&.load\fRメソッドに渡されます。\fINONE\fRは、KeyStoreがファイルベースではない場合に指定してください。たとえば、ハードウェア・トークン・デバイス上に存在している場合などです。 +.RE +.PP +\-storepass[:\fIenv\fR| :\fIfile\fR] argument +.RS 4 +キーストアの整合性を保護するために使用するパスワードを指定します。 +.sp +修飾子\fIenv\fRまたは\fIfile\fRを指定しない場合、パスワードの値は\fIargument\fRになります。この値は、6文字以上にする必要があります。それ以外の場合、パスワードは次のようにして取得されます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIenv\fR: +\fIargument\fRという名前の環境変数からパスワードを取得します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIfile\fR: argumentという名前のファイルからパスワードを取得します。 +.RE +.sp +\fB注意:\fR +\fI\-keypass\fR、\fI\-srckeypass\fR、\-\fIdestkeypass\fR、\fI\-srcstorepass\fR、\fI\-deststorepass\fRなどのパスワードを必要とするその他のオプションはすべて、\fIenv\fRおよび\fIfile\fR修飾子を受け付けます。パスワード・オプションと修飾子は、必ずコロン(:)で区切ってください。 +.sp +パスワードは、キーストアの内容にアクセスするすべてのコマンドで使用されます。この種のコマンドを実行するときに、コマンドラインで\fI\-storepass\fRオプションを指定しなかった場合は、パスワードの入力を求められます。 +.sp +キーストアから情報を取得する場合、パスワードは省略可能です。パスワードが指定されていない場合は、取得した情報の整合性を検証できず、警告が表示されます。 +.RE +.PP +\-providerName \fIprovider_name\fR +.RS 4 +セキュリティ・プロパティ・ファイル内に含まれる暗号化サービス・プロバイダ名を特定するために使用されます。 +.RE +.PP +\-providerClass \fIprovider_class_name\fR +.RS 4 +暗号化サービス・プロバイダがセキュリティ・プロパティ・ファイルに指定されていないときは、そのマスター・クラス・ファイルの名前を指定するときに使用されます。 +.RE +.PP +\-providerArg \fIprovider_arg\fR +.RS 4 +\fI\-providerClass\fRオプションとともに使用され、\fIprovider_class_name\fRのコンストラクタのオプションの文字列入力引数を表します。 +.RE +.PP +\-protected +.RS 4 +\fItrue\fRまたは\fIfalse\fRのいずれか。パスワードを専用PINリーダーなどの保護された認証パス経由で指定する必要がある場合は、この値を\fItrue\fRに指定する必要があります。\fI\-importkeystore\fRコマンドには2つのキーストアが関連しているため、ソース・キーストアと宛先キーストアにそれぞれ次の2つのオプション、\fI\-srcprotected\fRと\-\fIdestprotected\fRが用意されています。 +.RE +.PP +\-ext \fI{name{:critical} {=value}}\fR +.RS 4 +X\&.509証明書エクステンションを示します。このオプションを\fI\-genkeypair\fRおよび\fI\-gencert\fRで使用して、生成される証明書または\fI\-certreq\fRにエクステンションを埋め込み、証明書リクエストでリクエストされるエクステンションを示すことができます。このオプションは複数回指定できます。\fIname\fR引数には、サポートされているエクステンション名(名前付きエクステンションを参照)または任意のOID番号を指定できます。指定されている場合、\fIvalue\fR引数はエクステンションの引数を指します。\fIvalue\fRを省略した場合、エクステンションのデフォルト値またはエクステンションが引数を必要としないことを示します。\fI:critical\fR修飾子が指定された場合、エクステンションの\fIisCritical\fR属性は\fItrue\fRで、指定されない場合は\fIfalse\fRです。\fI:critical\fRのかわりに\fI:c\fRを使用できます。 +.RE +.SH "名前付きエクステンション" +.PP +\fIkeytool\fRコマンドは、次の名前のエクステンションをサポートしています。名前の大/小文字は区別されません。 +.PP +BCまたはBasicContraints +.RS 4 +\fB値\fR: 完全な形式は次のとおりです: +\fIca:{true|false}[,pathlen:<len>]\fRまたは\fI<len>\fR(これは、\fIca:true,pathlen:<len>\fRの短縮形です)。<\fIlen\fR>を省略すると、\fIca:true\fRの意味になります。 +.RE +.PP +KUまたはKeyUsage +.RS 4 +\fB値\fR: +\fIusage\fR(\fIusage\fR)*、\fIusage\fRには\fIdigitalSignature\fR、\fInonRepudiation\fR +(contentCommitment)、\fIkeyEncipherment\fR、\fIdataEncipherment\fR、\fIkeyAgreement\fR、\fIkeyCertSign\fR、\fIcRLSign\fR、\fIencipherOnly\fR、\fIdecipherOnly\fRのいずれかを指定できます。\fIusage\fR引数は、不明確にならないかぎり、最初の数文字(\fIdigitalSignature\fRの場合は\fIdig\fR)またはキャメルケース・スタイル(\fIdigitalSignature\fRの場合は\fIdS\fR、\fIcRLSign\fRの場合は\fIcRLS\fR)で省略表記できます。\fIusage\fR値は、大文字と小文字が区別されます。 +.RE +.PP +EKUまたはExtendedKeyUsage +.RS 4 +\fB値\fR: +\fIusage\fR(\fIusage\fR)*、\fIusage\fRには\fIanyExtendedKeyUsage\fR、\fIserverAuth\fR、\fIclientAuth\fR、\fIcodeSigning\fR、\fIemailProtection\fR、\fItimeStamping\fR、\fIOCSPSigning\fRまたは任意の\fIOID文字列\fRのいずれかを指定できます。\fIusage\fR引数は、不明確にならないかぎり、最初の数文字またはキャメルケース・スタイルで省略表記できます。\fIusage\fR値は、大文字と小文字が区別されます。 +.RE +.PP +SANまたはSubjectAlternativeName +.RS 4 +\fB値\fR: +\fItype\fR:\fIvalue\fR +(t\fIype:value\fR)*、\fItype\fRには\fIEMAIL\fR、\fIURI\fR、\fIDNS\fR、\fIIP\fRまたは\fIOID\fRを指定できます。\fIvalue\fR引数は、\fItype\fRの文字列形式の値です。 +.RE +.PP +IANまたはIssuerAlternativeName +.RS 4 +\fB値\fR: +\fISubjectAlternativeName\fRと同じです。 +.RE +.PP +SIAまたはSubjectInfoAccess +.RS 4 +\fB値\fR: +\fImethod\fR:\fIlocation\-type\fR:\fIlocation\-value\fR +(\fImethod:location\-type\fR:\fIlocation\-value\fR)*、\fImethod\fRには\fItimeStamping\fR、\fIcaRepository\fRまたは任意のOIDを指定できます。\fIlocation\-type\fRおよび\fIlocation\-value\fR引数には、\fISubjectAlternativeName\fRエクステンションでサポートされる任意の\fItype\fR:\fIvalue\fRを指定できます。 +.RE +.PP +AIAまたはAuthorityInfoAccess +.RS 4 +\fB値\fR: +\fISubjectInfoAccess\fRと同じです。\fImethod\fR引数には、\fIocsp\fR、\fIcaIssuers\fRまたは任意のOIDを指定できます。 +.RE +.PP +\fIname\fRがOIDの場合、OCTET STRINGタイプと長さのバイトを除外したエクステンションについては、値は\fIextnValue\fRの16進ダンプのDERエンコーディングです。HEX文字列では、標準の16進数(0\-9、a\-f、A\-F)以外の文字は無視されます。したがって、01:02:03:04と01020304の両方とも同一の値として受け付けられます。値がない場合、エクステンションの値フィールドは空になります。 +.PP +\fI\-gencert\fRでのみ使用する\fIhonored\fRという特別な名前は、証明書リクエストに含まれるエクステンションを優先する方法を示します。この名前の値は、\fIall\fR(リクエストされるすべてのエクステンションが優先される)、\fIname{:[critical|non\-critical]}\fR(名前付きのエクステンションが優先されるが、別の\fIisCritical\fR属性を使用する)、および\fI\-name\fR(\fIall\fRとともに使用し、例外を示す)のカンマ区切りリストです。デフォルトでは、リクエストされるエクステンションは優先されません。 +.PP +\fI\-ext honored\fRオプションに加え、別の名前の、またはOID +\fI\-ext\fRのオプションを指定した場合は、このエクステンションが、すでに優先されているエクステンションに追加されます。ただし、この名前(またはOID)を優先される値でも使用した場合は、その値と重要性がリクエストに含まれるものをオーバーライドします。 +.PP +\fIsubjectKeyIdentifier\fRエクステンションは常に作成されます。自己署名でない証明書の場合は、\fIauthorityKeyIdentifier\fRが作成されます。 +.PP +\fB注意:\fR +ユーザーは、エクステンション(および証明書の他のフィールド)の組合せによっては、インターネットの標準に準拠しない場合があることに注意してください。証明書の準拠に関する警告を参照してください。 +.SH "コマンド" +.PP +\-gencert +.RS 4 +\fI{\-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}\fR +.sp +証明書リクエスト・ファイル(\fIkeytool\fR +\fI\-certreq\fRコマンドで作成可能)に対するレスポンスとして証明書を生成します。このコマンドは、\fIinfile\fRから(省略した場合は、標準入力から)リクエストを読み込み、別名の秘密鍵を使用してそのリクエストに署名して、X\&.509証明書を\fIoutfile\fRに(省略した場合は、標準出力に)出力します。\fI\-rfc\fRを指定した場合、出力形式はBASE64符号化のPEMになります。それ以外の場合は、バイナリDERが作成されます。 +.sp +\fIsigalg\fR値には、証明書に署名を付けるときに使用するアルゴリズムを指定します。\fIstartdate\fR引数は、証明書の有効開始日時です。\fIvalDays\fR引数は、証明書の有効日数を示します。 +.sp +\fIdname\fRを指定すると、生成される証明書の主体として使用されます。それ以外の場合は、証明書リクエストからの名前が使用されます。 +.sp +\fIext\fR値は、証明書に埋め込まれるX\&.509エクステンションを示します。\fI\-ext\fRの構文については、一般オプションを参照してください。 +.sp +\fI\-gencert\fRオプションを使用すると、証明書チェーンを作成できます。次の例では、\fIe1\fRという証明書を作成します。この証明書の証明書チェーンには、3つの証明書が含まれています。 +.sp +次のコマンドは、\fIca\fR、\fIca1\fR、\fIca2\fRおよび\fIe1\fRの4つの鍵ペアを作成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-alias ca \-dname CN=CA \-genkeypair +keytool \-alias ca1 \-dname CN=CA \-genkeypair +keytool \-alias ca2 \-dname CN=CA \-genkeypair +keytool \-alias e1 \-dname CN=E1 \-genkeypair +.fi +.if n \{\ +.RE +.\} +次の2つのコマンドは、署名付き証明書のチェーンを作成します。\fIca\fRは\fIca1\fRに署名し、\fIca1\fRは\fIca2\fRに署名します。すべて自己発行です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-alias ca1 \-certreq | + keytool \-alias ca \-gencert \-ext san=dns:ca1 | + keytool \-alias ca1 \-importcert + +keytool \-alias ca2 \-certreq | + $KT \-alias ca1 \-gencert \-ext san=dns:ca2 | + $KT \-alias ca2 \-importcert +.fi +.if n \{\ +.RE +.\} +次のコマンドは、証明書\fIe1\fRを作成してファイル\fIe1\&.cert\fRに格納します。この証明書は\fIca2\fRによって署名されます。その結果、\fIe1\fRの証明書チェーンには\fIca\fR、\fIca1\fRおよび\fIca2\fRが含まれることになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-alias e1 \-certreq | keytool \-alias ca2 \-gencert > e1\&.cert +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-genkeypair +.RS 4 +\fI{\-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}\fR +.sp +鍵のペア(公開鍵および関連する秘密鍵)を生成します。公開鍵はX\&.509 v3自己署名証明書でラップされます。証明書は、単一の要素を持つ証明書チェーンとして格納されます。この証明書チェーンと秘密鍵は、aliasで特定される新しいキーストア・エントリに格納されます。 +.sp +\fIkeyalg\fR値は鍵ペアの生成に使用するアルゴリズムを、\fIkeysize\fR値は生成する各鍵のサイズを、それぞれ指定します。\fIsigalg\fR値は、自己署名証明書に署名を付けるために使用するアルゴリズムを指定します。このアルゴリズムは\fIkeyalg\fR値と互換性がある必要があります。 +.sp +\fIdname\fR値には、\fIalias\fR値に関連付け、自己署名証明書のissuerフィールドとsubjectフィールドとして使用するX\&.500識別名を指定します。コマンドラインで識別名を指定しなかった場合は、識別名の入力を求められます。 +.sp +\fIkeypass\fR値には、生成される鍵のペアのうち、秘密鍵を保護するのに使用するパスワードを指定します。パスワードを指定しなかった場合は、パスワードの入力を求められます。このとき、\fI[Return]キー\fRを押すと、キーストアのパスワードと同じパスワードが鍵のパスワードに設定されます。\fIkeypass\fR値は、6文字以上にする必要があります。 +.sp +\fIstartdate\fR値には、証明書の発行時刻を指定します。これは、X\&.509証明書の「Validity」フィールドの「Not Before」値とも呼ばれます。 +.sp +オプションの値は、次の2つの形式のいずれかで設定できます。 +.sp +\fI([+\-]nnn[ymdHMS])+\fR +.sp +\fI[yyyy/mm/dd] [HH:MM:SS]\fR +.sp +最初の形式では、発行時刻は、指定される値の分、現在の時刻から移ります。指定される値は、一連の下位の値を連結したものになります。下位の各値で、プラス記号(「+」)は時間が進むことを、マイナス記号(「\-」)は時間が戻ることを意味しています。移る時間は\fInnn\fRで、単位は年、月、日、時間、分または秒です(それぞれ、1文字の\fIy\fR、\fIm\fR、\fId\fR、\fIH\fR、\fIM\fRまたは\fIS\fR」で示されています)。下位の各値で\fIjava\&.util\&.GregorianCalendar\&.add(int field, int amount)\fRメソッドを使用することで、発行時刻の追加の値が左から右へ計算されます。たとえば、指定すると、発行時刻は次のようになります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +Calendar c = new GregorianCalendar(); +c\&.add(Calendar\&.YEAR, \-1); +c\&.add(Calendar\&.MONTH, 1); +c\&.add(Calendar\&.DATE, \-1); +return c\&.getTime() +.fi +.if n \{\ +.RE +.\} +2番目の形式では、ユーザーは、年/月/日と時間:分:秒の2つの部分で厳密な開始時刻を設定します(地元の時間帯を使用)。ユーザーは、1つの部分のみを指定できます。これは、もう1つの部分は現在の日付(または時刻)と同じになるということです。ユーザーは、形式の定義に示されているように、桁数を厳密に指定する必要があります(短い場合は0で埋めます)。日付と時刻の両方が指定された状態で、2つの部分の間に空白文字が1つ(1つのみ)あります。時間は常に24時間形式で指定してください。 +.sp +オプションを指定しないと、開始日付は現在の時刻になります。オプションは、最大で1回指定できます。 +.sp +\fIvalDays\fRの値には、証明書の有効日数を指定します(\fI\-startdate\fRで指定された日付、または\fI\-startdate\fRが指定されていない場合は現在の日付から始まります)。 +.sp +このコマンドは、以前のリリースでは\fI\-genkey\fRという名前でした。このリリースでは、引き続き古い名前がサポートされています。今後は、新しい名前\fI\-genkeypair\fRが優先されます。 +.RE +.PP +\-genseckey +.RS 4 +\fI\-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}\fR +.sp +秘密鍵を生成し、それを新しい\fIKeyStore\&.SecretKeyEntry\fR(\fIalias\fRで特定される)内に格納します。 +.sp +\fIkeyalg\fR値は鍵ペアの生成に使用するアルゴリズムを、\fIkeysize\fR値は生成する各鍵のサイズを、それぞれ指定します。\fIkeypass\fR値は、秘密鍵を保護するパスワードです。パスワードを指定しなかった場合は、パスワードの入力を求められます。このとき、[Return]キーを押すと、\fIkeystore\fRのパスワードと同じパスワードが鍵のパスワードに設定されます。\fIkeypass\fR値は、6文字以上にする必要があります。 +.RE +.PP +\-importcert +.RS 4 +\fI\-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}\fR +.sp +ファイル\fIcert_file\fRから証明書または証明書チェーン(証明書チェーンの場合は、PKCS#7形式の応答または一連のX\&.509証明書で提供されるもの)を読み込み、\fIalias\fRによって特定される\fIkeystore\fRエントリに格納します。ファイルが指定されていない場合は、\fIstdin\fRから証明書または証明書チェーンを読み込みます。 +.sp +\fIkeytool\fRコマンドでは、X\&.509 v1、v2、v3の証明書、およびPKCS#7形式の証明書から構成されているPKCS#7形式の証明書チェーンをインポートできます。インポートするデータは、バイナリ符号化方式、または出力可能符号化方式(Base64符号化とも呼ばれる)のどちらかで提供する必要があります。出力可能符号化方式は、インターネットRFC 1421証明書符号化規格で定義されています。この符号化方式の場合、証明書は\fI\-\fR\fI\-\-\-\-BEGIN\fRで始まる文字列で開始され、\fI\-\-\-\-\-END\fRで始まる文字列で終了する必要があります。 +.sp +証明書は、信頼できる証明書のリストに追加するため、および認証局(CA)に証明書署名リクエストを送信した結果としてCAから受信した証明書応答をインポートするため(コマンドの\fI\-certreq\fRオプションを参照)という2つの理由でインポートします。 +.sp +どちらのタイプのインポートを行うかは、\fI\-alias\fRオプションの値によって指定します。別名がキー・エントリをポイントしない場合、\fIkeytool\fRコマンドはユーザーが信頼できる証明書エントリを追加しようとしているものとみなします。この場合、別名がキーストア内に存在していないことが必要です。別名がすでに存在している場合、その別名の信頼できる証明書がすでに存在することになるので、\fIkeytool\fRコマンドはエラーを出力し、証明書のインポートを行いません。別名がキー・エントリをポイントする場合、\fIkeytool\fRコマンドはユーザーが証明書応答をインポートしようとしているものとみなします。 +.RE +.PP +\-importpassword +.RS 4 +\fI{\-alias alias} [\-keypass keypass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption}\fR +.sp +パスフレーズをインポートし、\fIalias\fRで識別される新規\fIKeyStore\&.SecretKeyEntry\fRに格納します。パスフレーズは、標準入力ストリームを介して提供できます。または、ユーザーにそのプロンプトが表示されます。\fIkeypass\fRは、インポートされるパスフレーズの保護に使用されるパスワードです。パスワードを指定しなかった場合は、パスワードの入力を求められます。このとき、[Return]キーを押すと、\fIkeystore\fRのパスワードと同じパスワードが鍵のパスワードに設定されます。\fIkeypass\fRは、6文字以上にする必要があります。 +.RE +.PP +\-importkeystore +.RS 4 +\fI{\-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}\fR +.sp +ソース・キーストアからターゲット・キーストアへ、単一のエントリまたはすべてのエントリをインポートします。 +.sp +\fI\-srcalias\fRオプションが指定された場合、このコマンドは、その別名で特定される単一のエントリをターゲット・キーストアにインポートします。\fIdestalias\fR経由でターゲット別名が指定されなかった場合、\fIsrcalias\fRがターゲット別名として使用されます。ソースのエントリがパスワードで保護されていた場合、\fIsrckeypass\fRを使用してそのエントリが回復されます。\fIsrckeypass\fRが指定されなかった場合、\fIkeytool\fRコマンドは\fIsrcstorepass\fRを使用してそのエントリを回復しようとします。\fIsrcstorepass\fRが指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ターゲットのエントリは\fIdestkeypass\fRによって保護されます。\fIdestkeypass\fRが指定されなかった場合、ターゲット・エントリはソース・エントリのパスワードによって保護されます。たとえば、ほとんどのサード・パーティ・ツールでは、PKCS #12キーストアで\fIstorepass\fRと\fIkeypass\fRが同じである必要があります。これらのツールのPKCS #12キーストアを作成する場合は、常に\fI\-destkeypass\fRと\fI\-deststorepass\fRが同じになるように指定します。 +.sp +\fI\-srcalias\fRオプションが指定されなかった場合、ソース・キーストア内のすべてのエントリがターゲット・キーストア内にインポートされます。各ターゲット・エントリは対応するソース・エントリの別名の下に格納されます。ソースのエントリがパスワードで保護されていた場合、\fIsrcstorepass\fRを使用してそのエントリが回復されます。\fIsrcstorepass\fRが指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ソース・キーストア内のあるエントリ・タイプがターゲット・キーストアでサポートされていない場合や、あるエントリをターゲット・キーストアに格納する際にエラーが発生した場合、ユーザーはそのエントリをスキップして処理を続行するか、あるいは処理を中断するかの選択を求められます。ターゲット・エントリはソース・エントリのパスワードによって保護されます。 +.sp +ターゲット別名がターゲット・キーストア内にすでに存在していた場合、ユーザーは、そのエントリを上書きするか、あるいは異なる別名の下で新しいエントリを作成するかの選択を求められます。 +.sp + +\fI\-noprompt\fRオプションを指定した場合、ユーザーは新しいターゲット別名の入力を求められません。既存のエントリがそのターゲット別名で上書きされます。インポートできないエントリはスキップされ、警告が出力されます。 +.RE +.PP +\-printcertreq +.RS 4 +\fI{\-file file}\fR +.sp +PKCS#10形式の証明書リクエストの内容を出力します。このリクエストは、\fIkeytool\fR +\fI\-certreq\fRコマンドで生成できます。このコマンドは、ファイルからリクエストを読み取ります。ファイルが存在しない場合、リクエストは標準入力から読み取られます。 +.RE +.PP +\-certreq +.RS 4 +\fI{\-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}\fR +.sp +PKCS#10形式を使用して証明書署名リクエスト(CSR)を生成します。 +.sp +CSRは、証明書発行局(CA)に送信することを目的としたものです。CAは、証明書要求者を(通常はオフラインで)認証し、証明書または証明書チェーンを送り返します。この証明書または証明書チェーンは、キーストア内の既存の証明書チェーン(最初は1つの自己署名証明書から構成される)に置き換えて使用します。 +.sp +aliasに関連付けられた秘密鍵は、PKCS#10証明書リクエストを作成するのに使用されます。秘密鍵にアクセスするには、正しいパスワードを指定する必要があります。コマンドラインで\fIkeypass\fRを指定しておらず、秘密鍵のパスワードがキーストアのパスワードと異なる場合は、秘密鍵のパスワードの入力を求められます。\fIdname\fRが指定されている場合は、それがCSRで主体として使用されます。それ以外の場合は、別名に関連付けられたX\&.500識別名が使用されます。 +.sp +\fIsigalg\fR値には、CSRに署名を付けるときに使用するアルゴリズムを指定します。 +.sp +CSRは、ファイルcertreq_fileに格納されます。ファイルが指定されていない場合は、\fIstdout\fRにCSRが出力されます。 +.sp +CAからのレスポンスをインポートするには、\fIimportcert\fRコマンドを使用します。 +.RE +.PP +\-exportcert +.RS 4 +\fI{\-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}\fR +.sp +\fIalias\fRに関連付けられた証明書をキーストアから読み込み、ファイルcert_fileに格納します。ファイルが指定されていない場合は、\fIstdout\fRに証明書が出力されます。 +.sp +デフォルトでは、証明書はバイナリ符号化で出力されます。\fI\-rfc\fRオプションが指定されている場合、出力可能符号化方式の出力はインターネットRFC 1421証明書符号化規格で定義されます。 +.sp +\fIalias\fRが、信頼できる証明書を参照している場合は、該当する証明書が出力されます。それ以外の場合、\fIalias\fRは、関連付けられた証明書チェーンを持つ鍵エントリを参照します。この場合は、チェーン内の最初の証明書が返されます。この証明書は、\fIalias\fRによって表されるエンティティの公開鍵を認証する証明書です。 +.sp +このコマンドは、以前のリリースでは\fI\-export\fRという名前でした。このリリースでは、引き続き古い名前がサポートされています。今後は、新しい名前\fI\-exportcert\fRが優先されます。 +.RE +.PP +\-list +.RS 4 +\fI{\-alias alias} {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v | \-rfc} {\-protected} {\-Jjavaoption}\fR +.sp +\fIalias\fRで特定されるキーストア・エントリの内容を\fIstdout\fRに出力します。\fIalias\fRが指定されていない場合は、キーストア全体の内容が表示されます。 +.sp +このコマンドは、デフォルトでは証明書のSHA1フィンガープリントを表示します。 +\fI\-v\fRオプションが指定されている場合は、所有者、発行者、シリアル番号、拡張機能などの付加的な情報とともに、人間が読むことのできる形式で証明書が表示されます。\fI\-rfc\fRオプションが指定されている場合は、出力可能符号化方式で証明書の内容が出力されます。出力可能符号化方式は、インターネットRFC 1421証明書符号化規格で定義されています。 +.sp +\fI\-v\fRオプションと\fI\-rfc\fRオプションを同時に指定することはできません。 +.RE +.PP +\-printcert +.RS 4 +\fI{\-file cert_file | \-sslserver host[:port]} {\-jarfile JAR_file {\-rfc} {\-v} {\-Jjavaoption}\fR +.sp +ファイルcert_file、host:portにあるSSLサーバー、または署名付きJARファイル\fIJAR_file\fR(\fI\-jarfile\fRオプションを指定)から証明書を読み込み、人間が読むことのできる形式で証明書の内容を表示します。ポートが指定されていない場合は、標準のHTTPSポート443が想定されます。\fI\-sslserver\fRおよび\-fileオプションを同時に指定することはできません。これに反する場合、エラーが報告されます。オプションが指定されていない場合は、\fIstdin\fRから証明書を読み込みます。 +.sp +\fI\-rfc\fRが指定されている場合、\fIkeytool\fRコマンドは、インターネットRFC 1421証明書符号化標準で定義されているように、PEMモードで証明書を出力します。インターネットRFC 1421証明書符号化規格を参照してください。 +.sp +ファイルまたは\fIstdin\fRから証明書を読み込む場合、その証明書は、インターネットRFC 1421証明書符号化標準で定義されているように、バイナリ符号化方式または出力可能符号化方式で表示できます。 +.sp +SSLサーバーがファイアウォールの背後にある場合は、\fI\-J\-Dhttps\&.proxyHost=proxyhost\fRおよび\fI\-J\-Dhttps\&.proxyPort=proxyport\fRオプションをコマンドラインで指定して、プロキシ・トンネリングを使用できます。http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide\&.htmlの +「Java Secure Socket Extension (JSSE) Reference Guide」を参照してください +.sp +\fB注意:\fR +このオプションはキーストアとは関係なく使用できます。 +.RE +.PP +\-printcrl +.RS 4 +\fI\-file crl_ {\-v}\fR +.sp +ファイル\fIcrl_\fRから証明書失効リスト(CRL)を読み込みます。CRLは、発行したCAによって失効されたデジタル証明書のリストです。CAは、\fIcrl_\fRを生成します。 +.sp +\fB注意:\fR +このオプションはキーストアとは関係なく使用できます。 +.RE +.PP +\-storepasswd +.RS 4 +\fI[\-new new_storepass] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-Jjavaoption}\fR +.sp +キーストアの内容の整合性を保護するために使用するパスワードを変更します。\fInew_storepass\fRには、新しいパスワードを指定します。new_storepassは、6文字以上である必要があります。 +.RE +.PP +\-keypasswd +.RS 4 +\fI{\-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}\fR +.sp +\fIalias\fRによって特定される非公開/秘密鍵を保護するためのパスワードを、\fIold_keypass\fRから\fInew_keypass\fRに変更します。new_keypassは、6文字以上である必要があります。 +.sp +コマンドラインで\fI\-keypass\fRオプションを指定しておらず、鍵のパスワードがキーストアのパスワードと異なる場合は、鍵のパスワードの入力を求められます。 +.sp +コマンドラインで\fI\-new\fRオプションを指定しなかった場合は、新しいパスワードの入力を求められます。 +.RE +.PP +\-delete +.RS 4 +\fI[\-alias alias] {\-storetype storetype} {\-keystore keystore} [\-storepass storepass] {\-providerName provider_name} {\-providerClass provider_class_name {\-providerArg provider_arg}} {\-v} {\-protected} {\-Jjavaoption}\fR +.sp +\fIalias\fRによって特定されるエントリをキーストアから削除します。コマンドラインで別名を指定しなかった場合は、別名の入力を求められます。 +.RE +.PP +\-changealias +.RS 4 +\fI{\-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}\fR +.sp +指定された\fIalias\fRから新しい別名\fIdestalias\fRへ、既存のキーストア・エントリを移動します。ターゲット別名を指定しなかった場合、ターゲット別名の入力を求められます。元のエントリがエントリ・パスワードで保護されていた場合、\fI\-keypass\fRオプションでそのパスワードを指定できます。鍵パスワードが指定されなかった場合、\fIstorepass\fR(指定された場合)がまず試みられます。その試みが失敗すると、ユーザーはパスワードの入力を求められます。 +.RE +.PP +\-help +.RS 4 +基本的なコマンドとそのオプションの一覧を表示します。 +.sp +特定のコマンドの詳細を参照するには、次のように入力してください: +\fIkeytool \-command_name \-help\fR。\fIcommand_name\fRはコマンドの名前です。 +.RE +.SH "例" +.PP +この例では、公開/秘密鍵のペアおよび信頼できるエンティティからの証明書を管理するためのキーストアを作成する手順を示します。 +.SS "鍵のペアの生成" +.PP +まず、キーストアを作成して鍵のペアを生成します。単一行に入力する、次のようなコマンドを使用できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-genkeypair \-dname "cn=Mark Jones, ou=Java, o=Oracle, c=US" + \-alias business \-keypass <new password for private key> + \-keystore /working/mykeystore + \-storepass <new password for keystore> \-validity 180 +.fi +.if n \{\ +.RE +.\} +.PP +コマンドは、workingディレクトリに\fImykeystore\fRという名前のキーストアを作成し(キーストアはまだ存在していないと仮定)、作成したキーストアに、\fI<new password for keystore>\fRで指定したパスワードを割り当てます。生成する公開鍵と秘密鍵のペアに対応するエンティティの「識別名」は、通称がMark Jones、組織単位がJava、組織がOracle、2文字の国番号がUSです。公開鍵と秘密鍵のサイズはどちらも1024ビットで、鍵の作成にはデフォルトのDSA鍵生成アルゴリズムを使用します。 +.PP +このコマンドは、デフォルトのSHA1withDSA署名アルゴリズムを使用して、公開鍵と識別名情報を含む自己署名証明書を作成します。証明書の有効期間は180日です。証明書は、別名\fIbusiness\fRで特定されるキーストア・エントリ内の秘密鍵に関連付けられます。秘密鍵には、\fI<new password for private key>\fRで指定したパスワードが割り当てられます。 +.PP +オプションのデフォルト値を使用する場合、コマンドは大幅に短くなります。この場合、オプションは不要です。デフォルト値を持つオプションでは、オプションを指定しなければデフォルト値が使用されます。必須値の入力を求められます。使用可能な値は次のとおりです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-genkeypair +.fi +.if n \{\ +.RE +.\} +.PP +この場合は、\fImykey\fRという別名でキーストア・エントリが作成され、新しく生成された鍵のペア、および90日間有効な証明書がこのエントリに格納されます。このエントリは、ホーム・ディレクトリ内の\fI\&.keystore\fRという名前のキーストアに置かれます。キーストアは、まだ存在していない場合に作成されます。識別名情報、キーストアのパスワードおよび秘密鍵のパスワードの入力を求められます。 +.PP +以降では、オプションを指定しないで\fI\-genkeypair\fRコマンドを実行したものとして例を示します。情報の入力を求められた場合は、最初に示した\fI\-genkeypair\fRコマンドの値を入力したものとします。たとえば識別名には\fIcn=Mark Jones\fR、\fIou=Java\fR、\fIo=Oracle\fR、\fIc=US\fRと指定します。 +.SS "CAからの署名付き証明書のリクエスト" +.PP +自己署名証明書を作成する鍵のペアの生成。証明書に証明書発行局(CA)の署名が付いていれば、他のユーザーから証明書が信頼される可能性も高くなります。CAの署名を取得するには、まず、証明書署名リクエスト(CSR)を生成します。たとえば、次のようにします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-certreq \-file MarkJ\&.csr +.fi +.if n \{\ +.RE +.\} +.PP +CSR(デフォルト別名\fImykey\fRによって特定されるエンティティのCSR)が作成され、MarkJ\&.csrという名前のファイルに置かれます。このファイルをCA (VeriSignなど)に提出します。CAは要求者を(通常はオフラインで)認証し、要求者の公開鍵を認証した署名付きの証明書を送り返します。場合によっては、CAが証明書のチェーンを返すこともあります。証明書のチェーンでは、各証明書がチェーン内のその前の署名者の公開鍵を認証します。 +.SS "CAからの証明書のインポート" +.PP +作成した自己署名証明書は、証明書チェーンで置き換える必要があります。証明書チェーンでは、各証明書が、「ルート」CAを起点とするチェーン内の次の証明書の署名者の公開鍵を認証します。 +.PP +CAからの証明書応答をインポートするには、キーストアか、\fIcacerts\fRキーストア・ファイル内に1つ以上の信頼できる証明書がある必要があります。\fIの\fR\-importcertコマンドを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +証明応答が証明書チェーンの場合は、チェーンの最上位証明書が必要です。CAの公開鍵を認証するルートCA証明書。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +証明書応答が単一の証明書の場合は、発行CA(署名した)の証明書が必要です。その証明書が自己署名でない場合は、その署名者の証明書が必要であり、このようにして自己署名ルート証明書が必要になります。 +.RE +.PP +\fIcacerts\fRキーストア・ファイルは、いくつかのVeriSignルートCA証明書を含んだ状態で出荷されているので、VeriSignの証明書を、信頼できる証明書としてキーストア内にインポートする必要がない場合があります。ただし、他のCAに対して署名付き証明書をリクエストしていて、このCAの公開鍵を認証する証明書が、\fIcacerts\fRにまだ追加されていない場合は、該当するCAからの証明書を、「信頼できる証明書」としてインポートする必要があります。 +.PP +通常、CAからの証明書は、自己署名証明書、または他のCAによって署名された証明書です(後者の場合は、該当する他のCAの公開鍵を認証する証明書が必要)。ABC, Inc\&.,がCAで、ABCから自己署名証明書であるA\fIBCCA\&.cer\fRという名前のファイルを取得したとします(この証明書はCAの公開鍵を認証します)。信頼できる証明書として証明書をインポートするときは、証明書が有効であることを確認する必要があります。まず、\fIkeytool \-printcert\fRコマンドまたは\fI\-noprompt\fRオプションなしの\fIkeytool \-importcert\fRコマンドでそれを表示し、表示された証明書のフィンガープリントが期待されるものと一致するかどうかを確認します。証明書を送信した人物に連絡し、この人物が提示した(または安全な公開鍵のリポジトリによって提示される)フィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中で他の何者か(攻撃者など)による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのものを信頼することになります。 +.PP +証明書が有効であると信頼する場合は、次のコマンドでキーストアに追加できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-importcert \-alias abc \-file ABCCA\&.cer +.fi +.if n \{\ +.RE +.\} +.PP +ABCCA\&.cerファイルのデータを含む信頼できる証明書のエントリがキーストア内に作成され、該当するエントリに\fIabc\fRという別名が割り当てられます。 +.SS "CAからの証明書応答のインポート" +.PP +証明書署名リクエストの提出先のCAの公開鍵を認証する証明書をインポートした後は(または同種の証明書がすでにcacertsファイル内に存在している場合は)、証明応答をインポートし、自己署名証明書を証明書チェーンで置き換えることができます。このチェーンは、CAの応答がチェーンの場合に、リクエストに対するレスポンスとしてCAから送り返された証明書チェーンです。また、CAの応答が単一の証明書の場合は、この証明応答と、インポート先のキーストア内または\fIcacerts\fRキーストアファイル内にすでに存在する信頼できる証明書とを使用して構築した証明書チェーンです。 +.PP +たとえば、証明書署名リクエストをVeriSignに送信する場合、送り返された証明書の名前がVSMarkJ\&.cerだとすると、次のようにして応答をインポートできます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-importcert \-trustcacerts \-file VSMarkJ\&.cer +.fi +.if n \{\ +.RE +.\} +.SS "公開鍵を認証する証明書のエクスポート" +.PP +\fIjarsigner\fRコマンドを使用してJava Archive (JAR)ファイルに署名する場合、このファイルを使用するクライアントは署名を認証する必要があります。クライアントが署名を認証する方法の1つに、まず自分の公開鍵の証明書を信頼できるエントリとしてクライアントのキーストアにインポートする方法があります。 +.PP +そのためには、証明書をエクスポートして、クライアントに提供します。例として、次のコマンドを使用して、MJ\&.cerという名前のファイルに証明書をコピーできます。このコマンドでは、エントリに別名\fImykey\fRがあると仮定しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-exportcert \-alias mykey \-file MJ\&.cer +.fi +.if n \{\ +.RE +.\} +.PP +証明書と署名付きJARファイルを入手したクライアントは、\fIjarsigner\fRコマンドを使用して署名を認証できます。 +.SS "キーストアのインポート" +.PP +コマンド\fIimportkeystore\fRを使用すれば、あるキーストアの全体を別のキーストア内にインポートできます。これは、鍵や証明書といったソースキーストア内のすべてのエントリが、単一のコマンドを使用してターゲットキーストア内にインポートされることを意味します。このコマンドを使用すれば、異なるタイプのキーストア内に含まれるエントリをインポートすることができます。インポート時には、ターゲット・キーストア内の新しいエントリはすべて、元と同じ別名および(秘密鍵や秘密鍵の場合は)保護用パスワードを持ちます。ソースキーストア内の非公開/秘密鍵をリカバリできない場合、\fIkeytool\fRコマンドはユーザーにパスワードの入力を求めます。このコマンドは、別名の重複を検出すると、ユーザーに新しい別名の入力を求めます。ユーザーは、新しい別名を指定することも、単純に既存の別名の上書きを\fIkeytool\fRコマンドに許可することもできます。 +.PP +たとえば、通常のJKSタイプのキーストアkey\&.jks内のエントリをPKCS#11タイプのハードウェア・ベースのキーストア内にインポートするには、次のコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-importkeystore + \-srckeystore key\&.jks \-destkeystore NONE + \-srcstoretype JKS \-deststoretype PKCS11 + \-srcstorepass <src keystore password> + \-deststorepass <destination keystore pwd> +.fi +.if n \{\ +.RE +.\} +.PP +また、\fIimportkeystore\fRコマンドを使用すれば、あるソース・キーストア内の単一のエントリをターゲット・キーストアにインポートすることもできます。この場合は、前例のオプションに加えて、インポートする別名を指定する必要があります。\fI\-srcalias\fRオプションを指定する場合には、ターゲット別名もコマンドラインから指定できるほか、秘密/秘密鍵の保護用パスワードやターゲット保護用パスワードも指定できます。その方法を示すコマンドを次に示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-importkeystore + \-srckeystore key\&.jks \-destkeystore NONE + \-srcstoretype JKS \-deststoretype PKCS11 + \-srcstorepass <src keystore password> + \-deststorepass <destination keystore pwd> + \-srcalias myprivatekey \-destalias myoldprivatekey + \-srckeypass <source entry password> + \-destkeypass <destination entry password> + \-noprompt +.fi +.if n \{\ +.RE +.\} +.SS "SSLサーバーの証明書の生成" +.PP +次に、3つのエンティティ、つまりルートCA(\fIroot\fR)、中間CA(\fIca\fR)およびSSLサーバー(\fIserver\fR)用の鍵ペアと証明書を生成する\fIkeytool\fRコマンドを示します。すべての証明書を同じキーストアに格納するようにしてください。これらの例では、RSAが推奨される鍵のアルゴリズムです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-genkeypair \-keystore root\&.jks \-alias root \-ext bc:c +keytool \-genkeypair \-keystore ca\&.jks \-alias ca \-ext bc:c +keytool \-genkeypair \-keystore server\&.jks \-alias server + +keytool \-keystore root\&.jks \-alias root \-exportcert \-rfc > root\&.pem + +keytool \-storepass <storepass> \-keystore ca\&.jks \-certreq \-alias ca | + keytool \-storepass <storepass> \-keystore root\&.jks + \-gencert \-alias root \-ext BC=0 \-rfc > ca\&.pem +keytool \-keystore ca\&.jks \-importcert \-alias ca \-file ca\&.pem + +keytool \-storepass <storepass> \-keystore server\&.jks \-certreq \-alias server | + keytool \-storepass <storepass> \-keystore ca\&.jks \-gencert \-alias ca + \-ext ku:c=dig,kE \-rfc > server\&.pem +cat root\&.pem ca\&.pem server\&.pem | + keytool \-keystore server\&.jks \-importcert \-alias server +.fi +.if n \{\ +.RE +.\} +.SH "用語" +.PP +キーストア +.RS 4 +キーストアは、暗号化の鍵と証明書を格納するための機能です。 +.RE +.PP +キーストアのエントリ +.RS 4 +キーストアには異なるタイプのエントリを含めることができます。\fIkeytool\fRコマンドで最も適用範囲の広いエントリ・タイプは、次の2つです。 +.sp +\fB鍵のエントリ\fR +\- 各エントリは、非常に重要な暗号化の鍵の情報を保持します。この情報は、許可していないアクセスを防ぐために、保護された形で格納されます。一般に、この種のエントリとして格納される鍵は、秘密鍵か、対応する公開鍵の証明書チェーンを伴う秘密鍵です。証明書チェーンを参照してください。\fIkeytool\fRコマンドがこの両方のタイプのエントリを処理できるのに対し、\fIjarsigner\fRツールは後者のタイプのエントリ、つまり秘密鍵とそれに関連付けられた証明書チェーンのみを処理します。 +.sp +\fB信頼できる証明書のエントリ\fR: 各エントリは、第三者からの公開鍵証明書を1つ含んでいます。このエントリは、信頼できる証明書と呼ばれます。それは、証明書内の公開鍵が、証明書のSubject(所有者)によって特定されるアイデンティティに由来するものであることを、キーストアの所有者が信頼するからです。証明書の発行者は、証明書に署名を付けることによって、その内容を保証します。 +.RE +.PP +キーストアの別名 +.RS 4 +キーストアのすべてのエントリ(鍵および信頼できる証明書エントリ)は、一意の別名を介してアクセスされます。 +.sp +別名を指定するのは、\fI\-genseckey\fRコマンドを使用して秘密鍵を生成したり、\fI\-genkeypair\fRコマンドを使用して鍵ペア(公開鍵と秘密鍵)を生成したり、\fI\-importcert\fRコマンドを使用して証明書または証明書チェーンを信頼できる証明書のリストに追加するなど、特定のエンティティをキーストアに追加する場合です。これ以後、\fIkeytool\fRコマンドでエンティティを参照する場合は、このときに指定した別名を使用する必要があります。 +.sp +たとえば、\fIduke\fRという別名を使用して新しい公開鍵と秘密鍵のペアを生成し、公開鍵を自己署名証明書でラップするとします。この場合は、次のコマンドを実行します。証明書チェーンを参照してください。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-genkeypair \-alias duke \-keypass dukekeypasswd +.fi +.if n \{\ +.RE +.\} +この例では、初期パスワードとして\fIdukekeypasswd\fRを指定しています。以後、別名\fIduke\fRに関連付けられた秘密鍵にアクセスするコマンドを実行するときは、このパスワードが必要になります。Dukeの秘密鍵のパスワードをあとから変更するには、次のコマンドを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-keypasswd \-alias duke \-keypass dukekeypasswd \-new newpass +.fi +.if n \{\ +.RE +.\} +パスワードが、\fIdukekeypasswd\fRから\fInewpass\fRに変更されます。テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンドラインやスクリプトでパスワードを指定しないでください。必要なパスワードのオプションをコマンドラインで指定しなかった場合は、パスワードの入力を求められます。 +.RE +.PP +キーストアの実装 +.RS 4 +\fIjava\&.security\fRパッケージで提供されている\fIKeyStore\fRクラスは、キーストア内の情報へのアクセスおよび情報の変更を行うための、明確に定義されたインタフェースを提供します。キーストアの固定実装としては、それぞれが特定のタイプのキーストアを対象とする複数の異なる実装が存在可能です。 +.sp +現在、\fIkeytool\fRと\fIjarsigner\fRの2つのコマンドライン・ツールと、Policy Toolという名前のGUIベースのツールが、キーストアの実装を使用しています。\fIKeyStore\fRクラスは\fIpublic\fRであるため、ユーザーはKeyStoreを使用した他のセキュリティ・アプリケーションも作成できます。 +.sp +キーストアには、Oracleが提供する組込みのデフォルトの実装があります。これは、JKSという名前の独自のキーストア・タイプ(形式)を利用するもので、キーストアをファイルとして実装しています。この実装では、個々の秘密鍵は個別のパスワードによって保護され、キーストア全体の整合性も(秘密鍵とは別の)パスワードによって保護されます。 +.sp +キーストアの実装は、プロバイダベースです。具体的には、\fIKeyStore\fRによって提供されるアプリケーション・インタフェースがサービス・プロバイダ・インタフェース(SPI)に基づいて実装されます。つまり、対応する\fIKeystoreSpi\fR抽象クラス(これも\fIjava\&.security\fRパッケージに含まれています)があり、このクラスが、プロバイダが実装する必要のあるService Provider Interfaceのメソッドを定義しています。ここで、\fIプロバイダ\fRとは、Java Security APIによってアクセス可能なサービスのサブセットに対し、その固定実装を提供するパッケージまたはパッケージの集合のことです。キーストアの実装を提供するには、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider\&.htmlにある +Java暗号化アーキテクチャのプロバイダの実装方法で説明しているように、クライアントはプロバイダを実装し、\fIKeystoreSpi\fRサブクラスの実装を提供する必要があります。 +.sp +アプリケーションでは、\fIKeyStore\fRクラスが提供する\fIgetInstance\fRファクトリ・メソッドを使用することで、様々なプロバイダから異なるタイプのキーストアの実装を選択できます。キーストアのタイプは、キーストア情報の格納形式とデータ形式を定義するとともに、キーストア内の非公開/秘密鍵とキーストアの整合性を保護するために使用されるアルゴリズムを定義します。異なるタイプのキーストアの実装には、互換性はありません。 +.sp +\fIkeytool\fRコマンドは、任意のファイルベースのキーストア実装で動作します。コマンド・ラインで渡されたキーストアの場所をファイル名として扱って、\fIFileInputStream\fRに変換し、ここからキーストア情報をロードします。\fIjarsigner\fRおよび\fIpolicytool\fRコマンドは、URLで指定できる任意の場所からキーストアを読み取ることができます。 +.sp +\fIkeytool\fRと\fIjarsigner\fRの場合、\fI\-storetype\fRオプションを使用してコマンドラインでキーストアのタイプを指定できます。Policy Toolの場合は、「キーストア」メニューによってキーストアのタイプを指定できます。 +.sp +ユーザーがキーストアのタイプを明示的に指定しなかった場合、セキュリティ・プロパティ・ファイルで指定された\fIkeystore\&.type\fRプロパティの値に基づいて、ツールによってキーストアの実装が選択されます。このセキュリティ・プロパティ・ファイルは\fIjava\&.security\fRと呼ばれ、Windowsではセキュリティ・プロパティ・ディレクトリ\fIjava\&.home\elib\esecurity\fR、Oracle Solarisでは\fIjava\&.home/lib/security\fRにあります。\fIjava\&.home\fRは、実行時環境のディレクトリです。\fIjre\fRディレクトリは、SDKまたはJava Runtime Environment (JRE)の最上位のディレクトリにあります。 +.sp +各ツールは、\fIkeystore\&.type\fRの値を取得し、この値で指定されたタイプのキーストアを実装しているプロバイダが見つかるまで、現在インストールされているすべてのプロバイダを調べます。そのプロバイダからのキーストアの実装を使用します。\fIKeyStore\fRクラスに定義されているstaticメソッド\fIgetDefaultType\fRを使用すると、アプリケーションやアプレットから\fIkeystore\&.type\fRプロパティの値を取得できます。次のコードは、デフォルトのキーストア・タイプ(\fIkeystore\&.type\fRプロパティで指定されたタイプ)のインスタンスを生成します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +KeyStore keyStore = KeyStore\&.getInstance(KeyStore\&.getDefaultType()); +.fi +.if n \{\ +.RE +.\} +デフォルトのキーストア・タイプは\fIjks\fRで、これはOracleが提供する独自のタイプのキーストアの実装です。これは、セキュリティ・プロパティ・ファイル内の次の行によって指定されています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keystore\&.type=jks +.fi +.if n \{\ +.RE +.\} +各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。たとえば、\fIpkcs12\fRと呼ばれるキーストアのタイプのキーストアの実装を提供するプロバイダ・パッケージがある場合、行を次のように変更します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keystore\&.type=pkcs12 +.fi +.if n \{\ +.RE +.\} +\fB注意:\fR +キーストアのタイプの指定では、大文字と小文字は区別されません。たとえば、JKSとjksは同じものとして扱われます。 +.RE +.PP +証明書 +.RS 4 +証明書(公開鍵証明書)とは、あるエンティティ(発行者)からのデジタル署名付きの文書のことです。証明書には、他のあるエンティティ(署名者)の公開鍵(およびその他の情報)が特別な値を持っていることが書かれています。次の用語は、証明書に関連しています。 +.sp +\fB公開鍵\fR: 公開鍵は、特定のエンティティに関連付けられた数です。公開鍵は、該当するエンティティとの間に信頼できる関係を持つ必要があるすべての人に対して公開することを意図したものです。公開鍵は、署名を検証するのに使用されます。 +.sp +\fBデジタル署名\fR: データがデジタル署名されると、そのデータは、エンティティのアイデンティティと、そのエンティティがデータの内容について知っていることを証明書する署名とともに格納されます。エンティティの秘密鍵を使用してデータに署名を付けると、データの偽造は不可能になります。 +.sp +\fBアイデンティティ\fR: エンティティをアドレス指定する既知の方法。システムによっては、公開鍵をアイデンティティにするものがあります。公開鍵の他にも、Oracle Solaris UIDや電子メール・アドレス、X\&.509識別名など、様々なものをアイデンティティとすることができます。 +.sp +\fB署名\fR: 署名は、なんらかのデータを基にエンティティの秘密鍵を使用して計算されます。署名者、証明書の場合は発行者とも呼ばれます。 +.sp +\fB秘密鍵\fR: 秘密鍵は特定のエンティティのみが知っている数のことで、この数のことを、そのエンティティの秘密鍵といいます。秘密鍵は、他に知られないように秘密にしておくことが前提になっています。秘密鍵と公開鍵は、すべての公開鍵暗号化システムで対になって存在しています。DSAなどの典型的な公開鍵暗号化システムの場合、1つの秘密鍵は正確に1つの公開鍵に対応します。秘密鍵は、署名を計算するのに使用されます。 +.sp +\fBエンティティ\fR: エンティティは、人、組織、プログラム、コンピュータ、企業、銀行など、一定の度合いで信頼の対象となる様々なものを指します。 +.sp +公開鍵暗号化では、ユーザーの公開鍵にアクセスする必要があります。大規模なネットワーク環境では、互いに通信しているエンティティ間で以前の関係が引続き確立されていると仮定したり、使用されているすべての公開鍵を収めた信頼できるリポジトリが存在すると仮定したりすることは不可能です。このような公開鍵の配布に関する問題を解決するために証明書が考案されました。現在では、証明書発行局(CA)が信頼できる第三者として機能します。CAは、他のエンティティの証明書に署名する(発行する)行為を、信頼して任されているエンティティ(企業など)です。CAは法律上の契約に拘束されるので、有効かつ信頼できる証明書のみを作成するものとして扱われます。VeriSign、Thawte、Entrustをはじめ、多くの公的な証明書発行局が存在します。 +.sp +Microsoftの認証サーバー、EntrustのCA製品などを所属組織内で利用すれば、独自の証明書発行局を運営することも可能です。\fIkeytool\fRコマンドを使用すると、証明書の表示、インポートおよびエクスポートを行うことができます。また、自己署名証明書を生成することもできます。 +.sp +現在、\fIkeytool\fRコマンドはX\&.509証明書を対象にしています。 +.RE +.PP +X\&.509証明書 +.RS 4 +X\&.509規格では、証明書に含める情報が定義されており、この情報を証明書に書き込む方法(データ形式)についても記述されています。証明書のすべてのデータは、ASN\&.1/DERと呼ばれる2つの関連規格を使用して符号化されます。Abstract Syntax Notation 1はデータについて記述しています。Definite Encoding Rulesは、データの保存および転送の方法について記述しています。 +.sp +すべてのX\&.509証明書は、署名の他に次のデータを含んでいます。 +.sp +\fBバージョン\fR: 証明書に適用されるX\&.509規格のバージョンを特定します。証明書に指定できる情報は、バージョンによって異なります。今のところ、3つのバージョンが定義されています。\fIkeytool\fRコマンドでは、v1、v2、v3の証明書をインポートおよびエクスポートできます。v3の証明書を生成します。 +.sp +X\&.509 Version 1は、1988年から利用されて広く普及しており、最も一般的です。 +.sp +X\&.509 Version 2では、Subjectや発行者の名前をあとで再利用できるようにするために、Subjectと発行者の一意識別子の概念が導入されました。ほとんどの証明書プロファイル文書では、名前を再使用しないことと、証明書で一意の識別子を使用しないことが、強く推奨されています。Version 2の証明書は、広くは使用されていません。 +.sp +X\&.509 Version 3は最も新しい(1996年)規格で、エクステンションの概念をサポートしています。エクステンションは誰でも定義することができ、証明書に含めることができます。一般的なエクステンションとしては、KeyUsage(\fI署名専用\fRなど、鍵の使用を特定の目的に制限する)、AlternativeNames(DNS名、電子メール・アドレス、IPアドレスなど、他のアイデンティティを公開鍵に関連付けることができる)などがあります。エクステンションには、criticalというマークを付けて、そのエクステンションのチェックと使用を義務づけることができます。たとえば、criticalとマークされ、\fIkeyCertSign\fRが設定されたKeyUsageエクステンションが証明書に含まれている場合、この証明書をSSL通信中に提示すると、証明書が拒否されます。これは、証明書のエクステンションによって、関連する秘密鍵が証明書の署名専用として指定されており、SSLでは使用できないためです。 +.sp +\fBシリアル番号\fR: 証明書を作成したエンティティは、そのエンティティが発行する他の証明書と区別するために、証明書にシリアル番号を割り当てます。この情報は、様々な方法で使用されます。たとえば、証明書が取り消されると、シリアル番号が証明書失効リスト(CRL)に格納されます。 +.sp +\fB証明書アルゴリズム識別子\fR: 証明書に署名を付けるときにCAが使用したアルゴリズムを特定します。 +.sp +\fB発行者名\fR: 証明書に署名を付けたエンティティのX\&.500識別名です。X\&.500識別名を参照してください。通常はCAです。この証明書を使用することは、証明書に署名を付けたエンティティを信頼することを意味します。ルートつまりトップレベルのCAの証明書など、場合によっては発行者が自身の証明書に署名を付けることがあります。 +.sp +\fB有効期間\fR: 各証明書は限られた期間のみ有効です。この期間は開始の日時と終了の日時によって指定され、数秒の短い期間から100年という長期にわたることもあります。選択される有効期間は、証明書への署名に使用される秘密鍵の強度や証明書に支払う金額など、様々な要因で異なります。有効期間は、関連する秘密鍵が損われない場合に、エンティティが公開鍵を信頼できると期待される期間です。 +.sp +\fB主体名\fR: 証明書で公開鍵を認証するエンティティの名前。この名前はX\&.500標準を使用するので、インターネット全体で一意なものと想定されます。これは、エンティティのX\&.500識別名(DN)です。X\&.500識別名を参照してください。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CN=Java Duke, OU=Java Software Division, O=Oracle Corporation, C=US +.fi +.if n \{\ +.RE +.\} +これらはそれぞれ主体の通称(CN)、組織単位(OU)、組織(O)、国(C)を表します。 +.sp +\fB主体の公開鍵情報\fR: 名前を付けられたエンティティの公開鍵とアルゴリズム識別子です。アルゴリズム識別子では、公開鍵に対して使用されている公開鍵暗号化システムおよび関連する鍵パラメータが指定されています。 +.RE +.PP +証明書チェーン +.RS 4 +\fIkeytool\fRコマンドでは、秘密鍵および関連する証明書チェーンを含むキーストアの鍵エントリを作成し、管理することができます。このようなエントリでは、秘密鍵に対応する公開鍵は、チェーンの最初の証明書に含まれています。 +.sp +鍵を初めて作成すると、自己署名証明書という1つの要素のみを含むチェーンが開始されます。\fIの\fR\-genkeypairコマンドを参照してください。自己署名証明書は発行者(署名者)が主体と同じです。主体は、その公開鍵が証明書によって認証されるエンティティです。\fI\-genkeypair\fRコマンドを呼び出して新しい公開鍵と秘密鍵のペアを作成すると、公開鍵は常に自己署名証明書でラップされます。 +.sp +この後、証明書署名リクエスト(CSR)が\fI\-certreq\fRコマンドで生成されて、CSRが証明書発行局(CA)に送信されると、CAからのレスポンスが\fI\-importcert\fRでインポートされ、元の自己署名証明書は証明書チェーンによって置き換えられます。コマンドの\fI\-certreq\fRおよび\fI\-importcert\fRオプションを参照してください。チェーンの最後にあるのは、Subjectの公開鍵を認証したCAが発行した証明書(応答)です。チェーン内のその前の証明書は、CAの公開鍵を認証する証明書です。 +.sp +CAの公開鍵を認証する証明書は、多くの場合、自己署名証明書(つまりCAが自身の公開鍵を認証した証明書)であり、これはチェーンの最初の証明書になります。場合によっては、CAが証明書のチェーンを返すこともあります。この場合、チェーン内の最後の証明書(CAによって署名され、鍵エントリの公開鍵を認証する証明書)に変わりはありませんが、チェーン内のその前の証明書は、CSRの送信先のCAとは別のCAによって署名され、CSRの送信先のCAの公開鍵を認証する証明書になります。チェーン内のその前の証明書は、次のCAの鍵を認証する証明書になります。以下同様に、自己署名された「ルート」証明書に達するまでチェーンが続きます。したがって、チェーン内の(最初の証明書以後の)各証明書では、チェーン内の次の証明書の署名者の公開鍵が認証されていることになります。 +.sp +多くのCAは、チェーンをサポートせずに発行済の証明書のみを返します。特に、中間のCAが存在しないフラットな階層構造の場合は、その傾向が顕著です。このような場合は、キーストアにすでに格納されている信頼できる証明書情報から、証明書チェーンを確立する必要があります。 +.sp +別の応答形式(PKCS#7で定義されている形式)では、発行済証明書に加え、証明書チェーンのサポートが含まれています。\fIkeytool\fRコマンドでは、どちらの応答形式も扱うことができます。 +.sp +トップレベル(ルート)CAの証明書は、自己署名証明書です。ただし、ルートの公開鍵への信頼は、ルート証明書自体からではなく、新聞など他のソースから取得されます。これは、VeriSignルートCAなどの識別名を使用して、誰でも自己署名型証明書を生成できるためです。ルートCAの公開鍵は広く知られています。ルートCAの公開鍵を証明書に格納する理由は、証明書という形式にすることで多くのツールから利用できるようになるからにすぎません。つまり、証明書は、ルートCAの公開鍵を運ぶ「媒体」として利用されるのみです。ルートCAの証明書をキーストアに追加するときは、\fI\-printcert\fRオプションを使用して、その前に証明書の内容を表示し、表示されたフィンガープリントと、新聞やルートCAのWebページなどから入手した既知のフィンガープリントとを比較する必要があります。 +.RE +.PP +cacerts証明書ファイル +.RS 4 +\fIcacerts\fRという名前の証明書ファイルは、Windowsではセキュリティ・プロパティ・ディレクトリ\fIjava\&.home\elib\esecurity\fR、Oracle Solarisでは\fIjava\&.home/lib/security\fRに置かれています。\fIjava\&.home\fRは、実行環境のディレクトリ(SDKの\fIjre\fRディレクトリまたはJREの最上位ディレクトリ)です。 +.sp +\fIcacerts\fRファイルは、CAの証明書を含む、システム全体のキーストアです。システム管理者は、キーストア・タイプに\fIjks\fRを指定することで、\fIkeytool\fRコマンドを使用してこのファイルの構成と管理を行うことができます。\fIcacerts\fRキーストア・ファイルは、ルートCA証明書のデフォルト・セットを含んだ状態で出荷されています。デフォルトの証明書を一覧表示するには、次のコマンドを使用します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-list \-keystore java\&.home/lib/security/cacerts +.fi +.if n \{\ +.RE +.\} +\fIcacerts\fRキーストア・ファイルの初期パスワードは、\fIchangeit\fRです。システム管理者は、SDKのインストール後、このファイルのパスワードとデフォルト・アクセス権を変更する必要があります。 +.sp +\fB注意:\fR +\fIcacerts\fRファイルを確認することが重要です。\fIcacerts\fRファイル内のCAは、署名および他のエンティティへの証明書発行のためのエンティティとして信頼されるため、\fIcacerts\fRファイルの管理は慎重に行う必要があります。\fIcacerts\fRファイルには、信頼するCAの証明書のみが含まれている必要があります。ユーザーは、自身の責任において、\fIcacerts\fRファイルにバンドルされている信頼できるルートCA証明書を検証し、信頼性に関する独自の決定を行います。 +.sp +信頼できないCA証明書を\fIcacerts\fRファイルから削除するには、\fIkeytool\fRコマンドの\fIdelete\fRオプションを使用します。\fIcacerts\fRファイルはJREのインストール・ディレクトリにあります。このファイルを編集するアクセス権がない場合は、システム管理者に連絡してください +.RE +.PP +インターネットRFC 1421証明書符号化規格 +.RS 4 +多くの場合、証明書は、バイナリ符号化ではなく、インターネットRFC 1421規格で定義されている出力可能符号化方式を使用して格納されます。Base 64符号化とも呼ばれるこの証明書形式では、電子メールやその他の機構を通じて、他のアプリケーションに証明書を容易にエクスポートできます。 +.sp +\fI\-importcert\fRと\fI\-printcert\fRコマンドでは、この形式の証明書とバイナリ符号化の証明書を読み込むことができます。\fI\-exportcert\fRコマンドでは、デフォルトでバイナリ符号化の証明書が出力されます。ただし、\fI\-rfc\fRオプションを指定した場合は、出力可能符号化方式の証明書が出力されます。 +.sp +\fI\-list\fRコマンドでは、デフォルトで証明書のSHA1フィンガープリントが出力されます。\fI\-v\fRオプションが指定されている場合、証明書は人が理解できる形式で出力されます。\fI\-rfc\fRオプションが指定されている場合、証明書は出力可能符号化方式で出力されます。 +.sp +出力可能符号化方式で符号化された証明書は、次のテキストで始まり、次のテキストで終了します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\- + +encoded certificate goes here\&. + +\-\-\-\-\-END CERTIFICATE\-\-\-\-\- +.fi +.if n \{\ +.RE +.\} +.RE +.PP +X\&.500識別名 +.RS 4 +X\&.500識別名は、エンティティを特定するために使用されます。たとえば、X\&.509証明書の\fIsubject\fRフィールドと\fIissuer\fR(署名者)フィールドで指定される名前は、X\&.500識別名です。\fIkeytool\fRコマンドは、次のサブパートをサポートしています。 +.sp +\fBcommonName\fR: Susan Jonesなど、人の通称。 +.sp +\fBorganizationUnit\fR: 小さな組織(部、課など)の名称。Purchasingなどです。 +.sp +\fBlocalityName\fR: 地域(都市)名。Palo Altoなど。 +.sp +\fBstateName\fR: 州名または地方名。Californiaなど。 +.sp +\fBcountry\fR: 2文字の国コード。CHなど。 +.sp +識別名文字列を\fI\-dname\fRオプションの値として指定する場合(たとえば\fI\-genkeypair\fRコマンドに)、文字列は次の形式にする必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CN=cName, OU=orgUnit, O=org, L=city, S=state, C=countryCode +.fi +.if n \{\ +.RE +.\} +イタリック体の項目は、実際に指定する値を表します。短縮形のキーワードの意味は、次のとおりです。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CN=commonName +OU=organizationUnit +O=organizationName +L=localityName +S=stateName +C=country +.fi +.if n \{\ +.RE +.\} +次に示すのは、識別名文字列の例です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, S=California, C=US +.fi +.if n \{\ +.RE +.\} +この文字列を使用したコマンドの例です。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +keytool \-genkeypair \-dname "CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, +S=California, C=US" \-alias mark +.fi +.if n \{\ +.RE +.\} +キーワードの短縮形では、大文字と小文字は区別されません。たとえば、CN、cnおよびCnは、どれも同じものとして扱われます。 +.sp +一方、キーワードの指定順序には意味があり、各サブコンポーネントは上に示した順序で指定する必要があります。ただし、サブコンポーネントをすべて指定する必要はありません。たとえば、次のように一部のサブコンポーネントのみを指定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +CN=Steve Meier, OU=Java, O=Oracle, C=US +.fi +.if n \{\ +.RE +.\} +識別名文字列の値にカンマが含まれる場合に、コマンドラインで文字列を指定するときには、次のようにカンマをバックスラッシュ文字(\e)でエスケープする必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +cn=Peter Schuster, ou=Java\e, Product Development, o=Oracle, c=US +.fi +.if n \{\ +.RE +.\} +識別名文字列をコマンドラインで指定する必要はありません。識別名を必要とするコマンドを実行するときに、コマンドラインで識別名を指定しなかった場合は、各サブコンポーネントの入力を求められます。この場合は、カンマをバックスラッシュ(\e)でエスケープする必要はありません。 +.RE +.SH "警告" +.SS "信頼できる証明書のインポート警告" +.PP +\fB重要\fR: 信頼できる証明書として証明書をインポートする前に、証明書の内容を慎重に調べてください。 +Windowsの例:.PP +まず、\fI\-noprompt\fRオプションを指定せずに\fI\-printcert\fRコマンドまたは\fI\-importcert\fRコマンドを使用して、証明書を表示します。表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致することを確認します。たとえば、証明書が送られてきて、この証明書を\fI\etmp\ecert\fRという名前でファイルに格納しているとします。この場合は、信頼できる証明書のリストにこの証明書を追加する前に、\fI\-printcert\fRコマンドを実行してフィンガープリントを表示できます。たとえば、次のようにします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + keytool \-printcert \-file \etmp\ecert + Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll + Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll + Serial Number: 59092b34 + Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997 + Certificate Fingerprints: + MD5: 11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F + SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE + SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90: + 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4 +.fi +.if n \{\ +.RE +.\} +Oracle Solarisの例:.PP +まず、\fI\-noprompt\fRオプションを指定せずに\fI\-printcert\fRコマンドまたは\fI\-importcert\fRコマンドを使用して、証明書を表示します。表示された証明書のフィンガープリントが、期待されるフィンガープリントと一致することを確認します。たとえば、あるユーザーから証明書が送られてきて、この証明書を\fI/tmp/cert\fRという名前でファイルに格納しているとします。この場合は、信頼できる証明書のリストにこの証明書を追加する前に、\fI\-printcert\fRコマンドを実行してフィンガープリントを表示できます。たとえば、次のようにします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + keytool \-printcert \-file /tmp/cert + Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll + Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll + Serial Number: 59092b34 + Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997 + Certificate Fingerprints: + MD5: 11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F + SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE + SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90: + 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4 +.fi +.if n \{\ +.RE +.\} +.PP +次に、証明書を送信した人物に連絡し、この人物が提示したフィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中で他の何者か(攻撃者など)による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのもの(攻撃的意図を持つクラス・ファイルを含んだJARファイルなど)を信頼することになります。 +.PP +\fB注意:\fR +証明書をインポートする前に\fI\-printcert\fRコマンドを実行する必要はありません。キーストア内の信頼できる証明書のリストに証明書を追加する前に、\fI\-importcert\fRコマンドによって証明書の情報が表示され、確認を求めるメッセージが表示されるためです。ユーザーはインポート操作を停止できます。ただし、これを実行できるのは、\fI\-noprompt\fRオプションを指定せずに\fI\-importcert\fRコマンドを呼び出す場合のみです。\fI\-noprompt\fRオプションが指定されている場合、ユーザーとの対話は行われません。 +.SS "パスワード警告" +.PP +キーストアに対する操作を行うほとんどのコマンドでは、ストアのパスワードが必要です。また、一部のコマンドでは、非公開/秘密鍵のパスワードが必要になることがあります。パスワードはコマンドラインで指定できます(\fI\-storepass\fRオプションと\fI\-keypass\fRオプションを使用)。ただし、テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンドラインやスクリプトでパスワードを指定しないでください。必要なパスワードのオプションをコマンドラインで指定しなかった場合は、パスワードの入力を求められます。 +.SS "証明書の準拠に関する警告" +.PP +インターネット標準RFC 5280では、X\&.509証明書の準拠に関するプロファイルが定義されており、証明書のフィールドおよびエクステンションに有効な値および値の組合せが記載されています。標準については、 +http://tools\&.ietf\&.org/rfc/rfc5280\&.txtを参照してください +.PP +\fIkeytool\fRコマンドでは、これらのルールすべてが適用されるわけではないため、標準に準拠しない証明書を生成できます。標準に準拠しない証明書は、JREや他のアプリケーションで拒否されることがあります。ユーザーは、\fI\-dname\fRや\fI\-ext\fRなどで適正なオプションを指定するようにしてください。 +.SH "注意" +.SS "新しい信頼できる証明書のインポート" +.PP +\fIkeytool\fRコマンドは、キーストアに証明書を追加する前に、キーストア内にすでに存在する信頼できる証明書を使用して、インポートする証明書から(ルートCAの)自己署名証明書に至るまでの信頼のチェーンの構築を試みます。 +.PP +\fI\-trustcacerts\fRオプションを指定した場合、追加の証明書は信頼できるすなわち\fIcacerts\fRという名前のファイルに含まれる証明書のチェーンとみなされます。 +.PP +\fIkeytool\fRコマンドが、インポートする証明書から自己署名証明書(キーストアまたは\fIcacerts\fRファイルに含まれている自己署名証明書)に至るまでの信頼のパスの構築に失敗した場合は、インポートする証明書の情報を表示し、ユーザーに確認を求めます。この場合は、表示された証明書のフィンガープリントと、他のなんらかの(信頼できる)情報源(証明書の所有者など)から入手したフィンガープリントとを比較します。信頼できる証明書として証明書をインポートするときは、証明書が有効であることを慎重に確認する必要があります。信頼できる証明書のインポート警告を参照してください。インポート操作は、証明書を確認する時点で中止できます。\fI\-noprompt\fRオプションが指定されている場合、ユーザーとの対話は行われません。 +.SS "証明書応答のインポート" +.PP +証明書応答をインポートするときは、キーストア内の信頼できる証明書、および(\fI\-trustcacert\fR\fIs\fRオプションが指定されている場合は)\fIcacerts\fRキーストア・ファイルで構成された証明書を使用して証明書応答が検査されます。cacerts証明書ファイルを参照してください。 +.PP +証明書応答が信頼できるかどうかを決定する方法は次のとおりです。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +証明書応答が単一のX\&.509証明書である場合、\fIkeytool\fRコマンドは、証明書応答から(ルートCAの)自己署名証明書に至るまでの信頼チェーンの確立を試みます。証明書応答と、証明書応答の認証に使用される証明書の階層構造は、aliasの新しい証明書チェーンを形成します。信頼チェーンが確立されない場合、証明書応答はインポートされません。この場合、\fIkeytool\fRコマンドは証明書を出力せず、ユーザーに検証を求めるプロンプトを表示します。ユーザーが証明書応答の信頼性を判断するのは非常に難しいためです。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +証明書応答がPKCS#7形式の証明書チェーンまたは一連のX\&.509証明書である場合、チェーンは、ユーザーの証明書が最初に、0以上のCA証明書がその次にくるように並べられます。チェーンが自己署名のルートCA証明書で終わり、\fI \-trustcacerts\fRオプションが指定されている場合、\fIkeytool\fRコマンドは、その証明書と、キーストア内または\fIcacerts\fRキーストア・ファイル内の信頼できるすべての証明書を照合しようとします。チェーンが自己署名のルートCA証明書で終わっておらず、\fI\-trustcacerts\fRオプションが指定されている場合、\fIkeytool\fRコマンドは、キーストア内または\fIcacerts\fRキーストア・ファイル内の信頼できる証明書から自己署名のルートCA証明書を見つけてそれをチェーンの末尾に追加しようとします。その証明書が見つからず、\fI\-noprompt\fRオプションが指定されていない場合は、チェーン内の最後の証明書の情報が出力され、ユーザーは確認を求められます。 +.RE +.PP +証明書応答内の公開鍵が\fIalias\fRですでに格納されているユーザーの公開鍵に一致した場合、古い証明書チェーンが応答内の新しい証明書チェーンで置き換えられます。以前の証明書チェーンを有効な\fIkeypass\fRで置き換えることができるのは、エントリの秘密鍵を保護するためのパスワードを指定した場合のみです。パスワードを指定しておらず、秘密鍵のパスワードがキーストアのパスワードと異なる場合は、秘密鍵のパスワードの入力を求められます。 +.PP +このコマンドは、以前のリリースでは\fI\-import\fRという名前でした。このリリースでは、引き続き古い名前がサポートされています。今後は、新しい名前\fI\-importcert\fRが優先されます。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jarsigner(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/tutorial/security/index\&.htmlにある +「コース: Java SEのセキュリティ機能」 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/native2ascii.1 b/jdk/src/solaris/doc/sun/man/man1/ja/native2ascii.1 index 89b6f6c3be4..f8bdb8ebd49 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/native2ascii.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/native2ascii.1 @@ -1,72 +1,98 @@ -." 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 -." 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 native2ascii 1 "07 May 2011" - -.LP -.SH "名前" -native2ascii \- ネイティブ \- ASCII コンバータ -.LP -.LP -サポートされる文字エンコーディングの文字のファイルを ASCII または Unicode エスケープあるいはその両方のファイルに変換します。その逆の変換も行います。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: native2ascii +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: 国際化ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "native2ascii" "1" "2013年11月21日" "JDK 8" "国際化ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +native2ascii \- サポートされている任意の文字エンコーディングの文字を含むファイルを、ASCIIおよびUnicodeでエスケープされたファイルに変換して(またはその逆)、ローカライズ可能なアプリケーションを作成します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f4native2ascii\fP\f2 [options] [inputfile [outputfile]]\fP -.fl +\fInative2ascii\fR [ \fIinputfile\fR ] [ \fIoutputfile\fR ] .fi - -.LP -.SH "説明" -.LP -.LP -\f2native2ascii\fP Java 実行環境でサポートされる文字エンコーディングにエンコードされたファイルを、ASCII でエンコードされたファイルに変換します。ASCII 文字セットの一部でないすべての文字で Unicode エスケープ (「\\uxxxx」の表記) を使用します。このプロセスは、ISO\-8859\-1 文字セットに含まれない文字が含まれているプロパティーファイルで必要です。このツールは、その逆の変換を実行することもできます。 -.LP -.LP -\f2outputfile\fP を省略した場合、標準出力に出力されます。さらに、 \f2inputfile\fP を省略した場合、標準入力から入力されます。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -\-reverse -逆の処理を行います。つまり、ISO\-8859\-1 で Unicode エスケープを使ってエンコードされたファイルを、Java 実行環境でサポートされる文字エンコーディングのファイルに変換します。 -.br -.br -.TP 3 -\-encoding encoding_name -変換処理で使用する文字エンコーディングの名前を指定します。このオプションが存在しない場合は、デフォルトの文字エンコーディング ( \f2java.nio.charset.Charset.defaultCharset\fP メソッドで定義される) が使用されます。 \f2encoding_name\fP 文字列は、 -.na -\f4「サポートされている文字列エンコーディング」\fP @ -.fi -http://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 バイトに設定されます。 +.if n \{\ .RE - -.LP - +.\} +.PP +\fIinputfile\fR +.RS 4 +ASCIIに変換するエンコードされたファイル。 +.RE +.PP +\fIoutputfile\fR +.RS 4 +変換されたASCIIファイル。 +.RE +.SH "説明" +.PP +\fInative2ascii\fRコマンドは、ASCIIキャラクタ・セットに含まれないすべての文字にUnicodeエスケープ(\fI\eu\fR\fIxxxx\fR)表記法を使用して、Java Runtime Environment (JRE)でサポートされているエンコードされたファイルを、ASCIIでエンコードされたファイルに変換します。このプロセスは、ISO\-8859\-1文字セットに含まれない文字が含まれているプロパティ・ファイルで必要です。このツールは、その逆の変換を実行することもできます。 +.PP +\fIoutputfile\fR値を省略した場合、標準出力に出力されます。さらに、\fIinputfile\fR値を省略した場合、標準入力から入力されます。 +.SH "オプション" +.PP +\-reverse +.RS 4 +逆の処理を行います。つまり、ISO\-8859\-1でUnicodeエスケープを使用してエンコードされたファイルを、JREでサポートされる文字エンコーディングのファイルに変換します。 +.RE +.PP +\-encoding \fIencoding_name\fR +.RS 4 +変換処理で使用する文字エンコーディングの名前を指定します。このオプションが存在しない場合は、デフォルトの文字エンコーディング(\fIjava\&.nio\&.charset\&.Charset\&.defaultCharset\fRメソッドで定義された)が使用されます。\fIencoding_name\fR文字列は、JREでサポートされている文字エンコーディングの名前にする必要があります。http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/intl/encoding\&.doc\&.htmlにある +「サポートされているエンコーディング」を参照してください +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシン(JVM)に\fIoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/orbd.1 b/jdk/src/solaris/doc/sun/man/man1/ja/orbd.1 index b78927f5655..849257b14e2 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/orbd.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/orbd.1 @@ -1,368 +1,277 @@ -." 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 -." 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 orbd 1 "07 May 2011" - -.LP -.SH "名前" -orbd \- The Object Request Broker Daemon -.LP -.LP -\f3orbd\fP は、クライアントから CORBA 環境のサーバーにある持続オブジェクトを透過的に検索して呼び出すために使用します。 -.LP -.LP -\f3関連項目:\fP -.na -\f2ネームサービス\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: orbd +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java IDLおよびRMI-IIOPツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "orbd" "1" "2013年11月21日" "JDK 8" "Java IDLおよびRMI-IIOPツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +orbd \- CORBA環境のサーバーにある永続オブジェクトをクライアントから検索して呼び出せるようにします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -orbd <\fP\f3options\fP\f3> -.fl -\fP +\fIorbd\fR [ \fIoptions\fR ] .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE .SH "説明" -.LP -.LP -\f3orbd\fP ツールに含まれるサーバーマネージャーを使うと、クライアントは CORBA 環境でサーバー上にある持続オブジェクトを透過的に検索して呼び出すことができます。持続サーバーは、ネームサービスに持続オブジェクト参照を発行する際、サーバーのポート番号の代わりに OBRD のポート番号をオブジェクト参照に含めます。持続オブジェクト参照のオブジェクト参照に ORBD ポート番号を含めることには、次のような利点があります。 -.LP -.RS 3 -.TP 2 -o -ネームサービスにあるオブジェクト参照が、サーバーのライフタイムと無関係になる。オブジェクト参照は、始めてインストールされたときはネームサービスのサーバーによりネームサービスに発行されますが、その後は、サーバーの開始またはシャットダウンの回数にかかわらず、ORBD がいつでも呼び出したクライアントに正しいオブジェクト参照を返します。 -.TP 2 -o -クライアントは一度だけネーミングサービスのオブジェクト参照をルックアップする必要があるが、その後はサーバーのライフタイムによる変更とは無関係にこの参照を利用することができる +.PP +\fIorbd\fRコマンドを使用すると、CORBA環境のサーバーにある永続オブジェクトをクライアントから透過的に検索して呼び出すことができます。orbdツールに含まれるサーバー・マネージャを使用すると、クライアントはCORBA環境でサーバー上にある永続オブジェクトを透過的に検索して呼び出すことができます。永続サーバーは、ネーミング・サービスに永続オブジェクト参照を発行する際、サーバーのポート番号のかわりにORBDのポート番号をオブジェクト参照に含めます。永続オブジェクト参照のオブジェクト参照にORBDポート番号を含めることには、次のような利点があります。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +ネーミング・サービスにあるオブジェクト参照が、サーバーのライフ・サイクルと無関係になります。たとえば、オブジェクト参照は、初めてインストールされたときはネーミング・サービスのサーバーによってネーミング・サービスに発行されますが、その後は、サーバーの開始またはシャットダウンの回数にかかわらず、呼び出したクライアントにORBDが正しいオブジェクト参照を返します。 .RE - -.LP -.LP -ORBD のサーバーマネージャーにアクセスするには、servertool(1) を使用してサーバーを起動する必要があります。servertool は、アプリケーションプログラマが、持続サーバーの登録、登録解除、起動、およびシャットダウンを行うためのコマンド行インタフェースです。サーバーマネージャーの詳細については、このドキュメントの「サーバーマネージャー」を参照してください。 -.LP -.LP -\f2orbd\fP を起動すると、ネームサービスも起動されます。ネームサービスについては、 -.na -\f2「ネームサービス」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlを参照してください。 -.LP +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +クライアントは一度のみネーミング・サービスのオブジェクト参照をルックアップする必要がありますが、その後はサーバーのライフ・サイクルによる変更とは無関係にこの参照を利用することができます。 +.RE +.PP +ORBDのサーバー・マネージャにアクセスするには、\fIservertool\fRを使用してサーバーを起動する必要があります。servertoolは、アプリケーション・プログラマが、永続サーバーの登録、登録解除、起動および停止を行うためのコマンドライン・インタフェースです。サーバー・マネージャの詳細は、サーバー・マネージャを参照してください。 +.PP +\fIorbd\fRを起動すると、ネーミング・サービスも起動されます。ネーミング・サービスの詳細。ネーミング・サービスの起動と停止を参照してください。 .SH "オプション" -.LP -.SS -必須オプション -.LP -.RS 3 -.TP 3 -\-ORBInitialPort nameserverport -ネームサーバーを起動するポートの番号を指定します。\f2orbd\fP は、起動されると、このポート上で着信要求を待機します。Solaris ソフトウェアを使用する場合、1024 より小さいポート上でプロセスを開始するには、root ユーザーになる必要があります。このため、1024 以上のポート番号を使用することをお勧めします。(必須) +.PP +\-ORBInitialPort \fInameserverport\fR +.RS 4 +必須。ネーム・サーバーを起動するポートの番号を指定します。\fIorbd\fRは、起動されると、このポート上で着信リクエストをリスニングします。Oracle Solarisソフトウェアでは、1024より小さいポートでプロセスを開始する場合、rootユーザーになる必要があります。このため、1024以上のポート番号を使用することをお薦めします。 .RE - -.LP -.LP - -.LP -.SS -その他のオプション -.LP -.RS 3 -.TP 3 -\-port port -ORBD を起動するポートを指定します。ORBD は、このポートで、持続オブジェクトに対する要求を受け取ります。このポートのデフォルト値は 1049 です。このポート番号が、持続 Interoperable Object References (IOR). のポートフィールドに追加されます。(省略可) +.SS "必須でないオプション" +.PP +\-port \fIport\fR +.RS 4 +ORBDを起動するポートを指定します。このポートで、永続オブジェクトに対するリクエストをORBDが受け取ります。このポートのデフォルト値は1049です。このポート番号は、永続Interoperable Object References (IOR)のポート・フィールドに追加されます。 .RE - -.LP -.RS 3 -.TP 3 -\-defaultdb directory -ORBD 持続格納ディレクトリ \f2orb.db\fP が作成されるベースディレクトリを指定します。このオプションが指定されていない場合、デフォルト値は「./orb.db」となります。(省略可) +.PP +\-defaultdb \fIdirectory\fR +.RS 4 +ORBD永続格納ディレクトリ\fIorb\&.db\fRが作成されるベース・ディレクトリを指定します。このオプションが指定されていない場合、デフォルト値は\fI\&./orb\&.db\fRになります。 .RE - -.LP -.RS 3 -.TP 3 -\-serverPollingTime milliseconds -\f2servertool\fP を使用して登録された持続サーバーが正常に動作していることを ORBD が確認する回数を指定します。デフォルト値は 1,000 ミリ秒です。\f2milliseconds\fP に指定する値は、有効な正の整数でなければなりません。(省略可) +.PP +\-serverPollingTime \fImilliseconds\fR +.RS 4 +\fIservertool\fRを使用して登録された永続サーバーのヘルス状態をORBDがチェックする間隔を指定します。デフォルト値は1000ミリ秒です。\fImilliseconds\fRに指定する値は、有効な正の整数にする必要があります。 .RE - -.LP -.RS 3 -.TP 3 -\-serverStartupDelay milliseconds -\f2servertool\fP を使用して登録された持続サーバーを再起動してから、位置転送の例外を送信するまでの ORBD の待機時間を指定します。デフォルト値は 1,000 ミリ秒です。\f2milliseconds\fP に指定する値は、有効な正の整数でなければなりません。(省略可) +.PP +\-serverStartupDelay milliseconds +.RS 4 +\fIservertool\fRを使用して登録された永続サーバーを再起動してから、位置転送の例外を送信するまでのORBDの待機時間を指定します。デフォルト値は1000ミリ秒です。\fImilliseconds\fRに指定する値は、有効な正の整数にする必要があります。 .RE - -.LP -.RS 3 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って背後の実行環境にオプションを渡すことはよく行われています。 -.TP 3 - +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンに\fIoption\fRを渡します。\fIoption\fRには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 .RE - -.LP -.SH "ネームサービスの起動と停止" -.LP -.LP -ネームサービスは、 -.na -\f2CORBA オブジェクト\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#CORBA%20objectにネーミングを可能にする CORBA サービスです。ネーミングは名前をオブジェクト参照にバインドすることにより可能になります。 -.na -\f2「ネームバインディング」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlGlossary.html#name%20bindingはネームサービスに格納され、クライアントは名前を与えて目的のオブジェクト参照を取得できます。 -.LP -.LP -ORBD は、クライアントまたはサーバーを実行する前に起動します。ORBD には、持続ネームサービスおよび一時ネームサービスが組み込まれています。これらはどちらも COS ネームサービスの実装です。 -.LP -.LP -\f3「持続」ネームサービス\fPは、ネーミングコンテキストに対して持続性を提供します。つまり、この情報は、サービスの停止や起動後にも維持され、サービスに障害が発生した場合でも回復できます。ORBD を再起動すると、持続ネームサービスはネーミングコンテキストのグラフを復元し、すべてのクライアントとサーバーの名前のバインディングが保持されます。 -.LP -.LP -\ -.LP -.LP -下位互換性のため、旧バージョンの JDK に同梱されていた\f2一時ネームサービス\fPが、今回のリリースの J2SE にも同梱されています。一時ネームサービスでは、ネームサービスの実行中にのみネーミングコンテキストが保持されます。サービスが中断されると、ネーミングコンテキストは失われます。 -.LP -.LP -\f2\-ORBInitialPort\fP 引数は、\f2orbd\fP の必須のコマンド行引数で、ネームサービスが実行されるポートの番号を設定するために使われます。以下の説明では、JavaIDL Object Request Broker Daemon 用にポート 1050 を使用できることを前提としています。Solaris ソフトウェアを使用する場合、1024 より小さいポート上でプロセスを開始するには、root ユーザーになる必要があります。このため、1024 以上のポート番号を使用することをお勧めします。必要であれば別のポートに変更してください。 -.LP -.LP -UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように入力します。 -.LP +.SS "ネーミング・サービスの起動と停止" +.PP +ネーミング・サービスは、CORBAオブジェクトにネーミングを可能にするCORBAサービスです。ネーミングは名前をオブジェクト参照にバインドすることにより可能になります。ネーム・バインディングをネーミング・サービスに格納すれば、クライアントが名前を指定して目的のオブジェクト参照を取得できるようになります。 +.PP +クライアントまたはサーバーを実行する前に、ORBDを起動します。ORBDには、永続ネーミング・サービスおよび一時ネーミング・サービスが組み込まれています。これらはどちらもCOSネーミング・サービスの実装です。 +.PP +永続ネーミング・サービスは、ネーミング・コンテキストに対して永続性を提供します。つまり、この情報は、サービスの停止や起動後にも維持され、サービスに障害が発生した場合でも回復できます。ORBDを再起動すると、永続ネーミング・サービスはネーミング・コンテキストのグラフを復元し、すべてのクライアントとサーバーの名前のバインディングがそのまま(永続的に)保持されるようにします。 +.PP +下位互換性のため、旧リリースのJDKに同梱されていた一時ネーミング・サービス\fItnameserv\fRが、今回のリリースのJava SEにも同梱されています。一時ネーム・サービスでは、ネーム・サービスの実行中にのみネーミング・コンテキストが保持されます。サービスが中断されると、ネーミング・コンテキスト・グラフは失われます。 +.PP +\fI\-ORBInitialPort\fR引数は、\fIorbd\fRの必須のコマンドライン引数で、ネーミング・サービスが実行されるポートの番号を設定するために使用されます。次の手順では、Java IDL Object Request Broker Daemon用にポート1050を使用できることを前提としています。Oracle Solarisソフトウェアを使用する場合、1024より小さいポートでプロセスを開始するには、rootユーザーになる必要があります。このため、1024以上のポート番号を使用することをお薦めします。必要であれば別のポートに変更してください。 +.PP +UNIXコマンド・シェルで\fIorbd\fRを起動するには、次のように入力します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - orbd \-ORBInitialPort 1050& -.fl -\fP +orbd \-ORBInitialPort 1050& .fi - -.LP -.LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 -.LP +.if n \{\ +.RE +.\} +.PP +WindowsのMS\-DOSシステム・プロンプトでは、次のように入力します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - start orbd \-ORBInitialPort 1050 -.fl -\fP +start orbd \-ORBInitialPort 1050 .fi - -.LP -.LP -これで ORBD が実行され、サーバーとクライアントのアプリケーションを実行できるようになります。クライアントとサーバーのアプリケーションは、実行時に、ネームサービスが実行されているポートの番号 (必要な場合はさらにマシン名) を認識している必要があります。これを実現する 1 つの方法は、次のコードをアプリケーションに追加することです。 -.LP +.if n \{\ +.RE +.\} +.PP +これでORBDが実行され、サーバーとクライアントのアプリケーションを実行できるようになります。クライアントとサーバーのアプリケーションは、実行時に、ネーミング・サービスが実行されているポートの番号(必要な場合はさらにマシン名)を認識している必要があります。これを実現する1つの方法は、次のコードをアプリケーションに追加することです。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - Properties props = new Properties(); -.fl - props.put("org.omg.CORBA.ORBInitialPort", "1050"); -.fl - props.put("org.omg.CORBA.ORBInitialHost", "MyHost"); -.fl - ORB orb = ORB.init(args, props); -.fl -\fP +Properties props = new Properties(); +props\&.put("org\&.omg\&.CORBA\&.ORBInitialPort", "1050"); +props\&.put("org\&.omg\&.CORBA\&.ORBInitialHost", "MyHost"); +ORB orb = ORB\&.init(args, props); .fi - -.LP -.LP -この例では、ネームサービスは、ホスト MyHost のポート 1050 上で実行されます。別の方法として、コマンド行からサーバーまたはクライアントのアプリケーションを実行するときに、ポート番号またはマシン名あるいはその両方を指定する方法もあります。たとえば、次のコマンド行オプションを使用して、「HelloApplication」を起動できます。 -.LP +.if n \{\ +.RE +.\} +.PP +この例では、ネーミング・サービスは、ホスト\fIMyHost\fRのポート1050上で実行されます。別の方法として、コマンドラインからサーバーまたはクライアントのアプリケーションを実行するときに、ポート番号またはマシン名あるいはその両方を指定する方法もあります。たとえば、次のコマンドライン・オプションを使用して、\fIHelloApplication\fRを起動できます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - java HelloApplication \-ORBInitialPort 1050 \-ORBInitialHost MyHost -.fl -\fP +java HelloApplication \-ORBInitialPort 1050 \-ORBInitialHost MyHost .fi - -.LP -.LP -ネームサービスを停止するには、適切なオペレーティングシステムコマンドを使用します。たとえば、Solaris 上で \f2pkill orbd\fP \f2を実行したり、\fP \f2orbd\fP が動作中の DOS ウィンドウで Ctrl+C キーを押したりします。一時ネームサービスの場合は、サービスが終了されると、ネームサービスに登録された名前が消去される場合があります。Java IDL ネームサービスは、明示的に停止されるまで実行されます。 -.LP -.LP -ORDB に含まれるネームサービスの詳細については、 -.na -\f2「ネームサービス」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlを参照してください。 -.LP -.SH "サーバーマネージャー" -.LP -.LP -ORBD のサーバーマネージャーにアクセスして持続サーバーを実行するには、servertool(1) を使用してサーバーを起動する必要があります。servertool は、アプリケーションプログラマが、持続サーバーの登録、登録解除、起動、およびシャットダウンを行うためのコマンド行インタフェースです。\f2servertool\fP を使用してサーバーを起動する場合は、\f2orbd\fP が実行されている場所と同じポートとホストで起動する必要があります。サーバーを異なるポートで実行すると、ローカルコンテキスト用にデータベースに保存されている情報が無効になり、サービスが正しく動作しません。 -.LP -.SS -サーバーマネージャー: 例 -.LP -.LP -デモ用の -.na -\f2サンプルチュートリアル\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlExample.htmlを使用し、チュートリアルの手順に従って、\f2idlj\fP コンパイラと \f2javac\fP コンパイラを実行します。サーバーマネージャーを実行するには、次の手順に従ってアプリケーションを実行します。 -.LP -.LP -\f2orbd\fP を起動します。 -.LP -.LP -UNIX コマンドシェルで \f2orbd\fP を起動するには、次のように入力します。 -.LP -.LP -\ -.LP +.if n \{\ +.RE +.\} +.PP +ネーミング・サービスを停止するには、適切なオペレーティング・システム・コマンドを使用します。たとえば、Oracle Solaris上で\fIpkill\fR +\fIorbd\fRを実行したり、\fIorbd\fRが動作中のDOSウィンドウで\fB[Ctrl]+[C]\fRキーを押します。一時ネーミング・サービスの場合は、サービスが終了されると、ネーミング・サービスに登録された名前が消去される場合があります。Java IDLネーム・サービスは、明示的に停止されるまで実行されます。 +.PP +ORBDに付属するネーミング・サービスの詳細は、 +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/jidlNaming\&.htmlの「Naming Service」を参照してください +.SH "サーバー・マネージャ" +.PP +ORBDのサーバー・マネージャにアクセスして、永続サーバーを実行するには、\fIservertool\fRを使用してサーバーを起動する必要があります。servertoolは、アプリケーション・プログラマが、永続サーバーの登録、登録解除、起動および停止を行うためのコマンドライン・インタフェースです。\fIservertool\fRを使用してサーバーを起動する場合は、\fIorbd\fRが実行されている場所と同じポートとホストで起動する必要があります。サーバーを異なるポートで実行すると、ローカル・コンテキスト用にデータベースに保存されている情報が無効になり、サービスが正しく動作しません。 +.PP +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/jidlExample\&.htmlの +「Java IDL: The "Hello World" Example」を参照してください +.PP +この例では、チュートリアルの手順に従って\fIidlj\fRコンパイラと\fIjavac\fRコンパイラを実行します。ORBDのサーバー・マネージャを実行するには、次の手順に従ってアプリケーションを実行します。 +.PP +\fIorbd\fRを起動します。 +.PP +UNIXコマンド・シェルで次のように入力します: +\fIorbd \-ORBInitialPort 1050\fR。 +.PP +MS\-DOSシステム・プロンプト(Windows)で次のように入力します: +\fIs\fR\fItart orbd \-ORBInitialPort 105\fR\fI0\fR +.PP +ポート1050はネーム・サーバーを実行するポートです。\fI\-ORBInitialPort\fRオプションは必須コマンドライン引数です。Oracle Solarisソフトウェアを使用する場合、1024より小さいポートでプロセスを開始するには、rootユーザーになる必要があります。このため、1024以上のポート番号を使用することをお薦めします。 +.PP +\fIservertool\fRを起動します: +\fIservertool \-ORBInitialPort 1050\fR。 +.PP +前回の手順とネーム・サーバー(\fIorbd\fR)のポートが同じであることを確認します。たとえば\fI\-ORBInitialPort 1050\&.\fRのようになります。\fIservertool\fRは、ネーム・サーバーと同じポート上で起動する必要があります。 +.PP +\fIservertool\fRコマンドライン・インタフェースで、\fIservertool\fRプロンプトから\fIHello\fRサーバーを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - orbd \-ORBInitialPort 1050 -.fl -\fP -.fi - -.LP -.LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 -.LP -.nf -\f3 -.fl - start orbd \-ORBInitialPort 1050 -.fl -\fP -.fi - -.LP -.LP -\f21050\fP はネームサーバーを実行するポートです。\f2\-ORBInitialPort\fP は必要なコマンド行の引数です。Solaris ソフトウェアを使用する場合、1024 より小さいポート上でプロセスを開始するには、root ユーザーになる必要があります。このため、1024 以上のポート番号を使用することをお勧めします。 -.LP -.LP -\f2servertool\fP を起動します。 -.LP -.LP -Hello サーバーを起動するには、次のように入力します。 -.LP -.nf -\f3 -.fl - servertool \-ORBInitialPort 1050 -.fl -\fP -.fi - -.LP -.LP -前回の手順と同様にネームサーバー (\f2orbd\fP) のポートを指定します。たとえば \f2\-ORBInitialPort 1050\fP のようになります。\f2servertool\fP は、ネームサーバーと同じポート上で起動する必要があります。 -.LP -.LP -\f2servertool\fP コマンド行インタフェースが表示されます。 -.LP -.LP - -.LP -.LP -\f2servertool\fP プロンプトから Hello サーバーを起動します。 -.LP -.nf -\f3 -.fl - servertool > register \-server HelloServer \-classpath .\-applicationName -.fl +servertool > register \-server HelloServer \-classpath \&. \-applicationName HelloServerApName -.fl -\fP .fi - -.LP -.LP -\f2servertool\fP によってサーバーが登録されて、「HelloServerApName」という名前がサーバーに割り当てられ、サーバー ID が表示されます。 -.LP -.LP - -.LP -.LP -別の端末ウィンドウまたはプロンプトからクライアントアプリケーションを実行します。 -.LP -.LP -\ -.LP -.nf -\f3 -.fl - java HelloClient \-ORBInitialPort 1050 \-ORBInitialHost localhost -.fl -\fP -.fi - -.LP -.LP -この例の \f2\-ORBInitialHost localhost\fP は省略することができます。ネームサーバーが Hello クライアントとして同一ホスト上で動作しているからです。ネームサーバーが別のホストで動作している場合は、IDL ネームサーバーが動作しているホストを \f2\-ORBInitialHost\fP \f2nameserverhost\fP で指定します。 -.LP -.LP -前回の手順と同様にネームサーバー (\f2orbd\fP) のポートを指定します。たとえば \f2\-ORBInitialPort 1050\fP のようになります。 -.LP -.LP -\ -.LP -.LP -\ -.LP -.LP -サーバーマネージャーの操作が終了したら、ネームサーバー (\f2orbd\fP) と \f2servertool\fP を停止するか終了してください。 -.LP -.LP -DOS プロンプトで \f2orbd\fP をシャットダウンするには、サーバーを実行しているウィンドウを選択して \f2Ctrl+C\fP と入力します。UNIX シェルで \f2orbd\fP をシャットダウンするには、プロセスを検出して終了 (kill) します。サーバーを明示的に停止するまでは、呼び出し待機状態が続きます。 -.LP -.LP -\f2servertool\fP をシャットダウンするには、 \f2quit\fP と入力してキーボードの \f2Enter\fP キーを押します。 -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -.na -\f2ネームサービス\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html -.br -.TP 2 -o -servertool(1) +.if n \{\ +.RE +.\} +.PP +\fIservertool\fRによってサーバーが登録されて、\fIHelloServerApName\fRという名前がサーバーに割り当てられ、登録されているすべてのサーバー一覧とともにサーバーIDが表示されます。他の端末ウィンドウまたはプロンプトからクライアント・アプリケーションを実行します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +java HelloClient \-ORBInitialPort 1050 \-ORBInitialHost localhost +.fi +.if n \{\ +.RE +.\} +.PP +この例の\fI\-ORBInitialHost localhost\fRは省略することができます。ネーム・サーバーが\fIHello\fRクライアントとして同一ホスト上で動作しているからです。ネーム・サーバーが別のホストで実行されている場合は、\-\fIORBInitialHost nameserverhost\fRオプションを使用してIDLネーム・サーバーが実行されているホストを指定します。前の手順で行われたとおりにネーム・サーバー(\fIorbd\fR)ポートを指定します(例: +\fI\-ORBInitialPort 1050\fR)。ORBDのサーバー・マネージャの操作が終了したら、ネーム・サーバー(\fIorbd\fR)と\fIservertool\fRを停止するか終了してください。MS\-DOSプロンプトで\fIorbd\fRをシャットダウンするには、サーバーを実行しているウィンドウを選択して\fB[Ctrl]+[C]\fRキーを押します。 +.PP +Oracle Solarisから\fIorbd\fRをシャットダウンするには、プロセスを検索して、\fIkill\fRコマンドで終了します。サーバーを明示的に停止するまでは、呼出し待機状態が続きます。\fIservertool\fRをシャットダウンするには、\fBquit\fRと入力してキーボードの\fB[Enter]\fRキーを押します。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +servertool(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/jidlNaming\&.htmlの +「Naming Service」 .RE - -.LP .br - -.LP - +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/pack200.1 b/jdk/src/solaris/doc/sun/man/man1/ja/pack200.1 index b1bb4f0fe03..e4150ab54dd 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/pack200.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/pack200.1 @@ -1,362 +1,325 @@ -." 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 -." 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 pack200 1 "07 May 2011" - -.LP -.SH "名前" -pack200 \- JAR パックツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -終了ステータス -.TP 2 -o -関連項目 -.TP 2 -o -注意事項 +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: pack200 +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Javaデプロイメント・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "pack200" "1" "2013年11月21日" "JDK 8" "Javaデプロイメント・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +pack200 \- WebデプロイメントのためにJARファイルをpack200圧縮ファイルにパッケージします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIpack200\fR [\fIoptions\fR] \fIoutput\-file\fR \fIJAR\-file\fR +.fi +.if n \{\ .RE - -.LP -.SH "形式" -.LP -.LP -\f4pack200\fP\f2 [ \fP\f2options\fP ] \f2output\-file\fP \f2JAR\-file\fP -.LP -.LP -オプションの指定順序に決まりはありません。コマンド行または properties ファイルに指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。 -.LP -.RS 3 -.TP 3 -options -コマンド行オプション。 -.TP 3 -output\-file -出力ファイルの名前。 -.TP 3 -JAR\-file -入力ファイルの名前。 +.\} +.PP +オプションは任意の順序で指定できます。コマンドラインまたはpropertiesファイルに指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。 +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 .RE - -.LP -.SH " 説明" -.LP -.LP -\f2pack200\fP ツールは、Java gzip 圧縮プログラムを使用して JAR ファイルを \f2pack200\fP 圧縮ファイルに変換する \f2Java アプリケーション\fP です。 \f2pack200\fP ファイルは高圧縮のファイルで、帯域幅の節約やダウンロード時間の短縮や直接配備することができます。 -.LP -.LP -\f2pack200\fP ツールには、圧縮エンジンの設定や微調整を行うオプションが用意されています。 -.LP -.SS -一般的な使用方法: -.LP -.LP -\f2% pack200 myarchive.pack.gz myarchive.jar\fP -.LP -.LP -この例では、 \f2デフォルトの pack200 設定を使用して\fP myarchive.pack.gz \f2が生成されます\fP 。 -.LP +.PP +\fIoutput\-file\fR +.RS 4 +出力ファイルの名前。 +.RE +.PP +\fIJAR\-file\fR +.RS 4 +入力ファイルの名前。 +.RE +.SH "説明" +.PP +\fIpack200\fRコマンドは、Java gzipコンプレッサを使用してJARファイルをpack200圧縮ファイルに変換するJavaアプリケーションです。pack200ファイルは高圧縮のファイルで、直接デプロイでき、帯域幅の節約やダウンロード時間の短縮が可能です。 +.PP +\fIpack200\fRコマンドには、圧縮エンジンの設定や微調整を行うオプションがあります。一般的な使用方法を次の例に示します。\fImyarchive\&.pack\&.gz\fRがデフォルトの\fIpack200\fRコマンド設定で作成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +pack200 myarchive\&.pack\&.gz myarchive\&.jar +.fi +.if n \{\ +.RE +.\} .SH "オプション" -.LP -.LP -\f4\-r \-\-repack\fP -.LP -.LP -ファイル \f2myarchive.jar\fP をパックしたあとアンパックすることで、JAR ファイルを生成します。生成されたファイルは \f2jarsigner(1)\fP ツールの入力ファイルとして使用できます。 -.LP -.LP -\f2% pack200 \-\-repack myarchive\-packer.jar myarchive.jar\fP -.LP -.LP -\f2% pack200 \-\-repack myarchive.jar\fP -.LP -.LP -\f4\-g \-\-no\-gzip\fP -.LP -.LP -\f2pack200\fP ファイルを生成します。このオプションを指定するときは、適切な圧縮ツールを使用する必要があります。また、ターゲットシステムでは、対応する圧縮解除ツールを使用する必要があります。 -.LP -.LP -\f2% pack200 \-\-no\-gzip myarchive.pack myarchive.jar\fP -.LP -.LP -\f4\-G \-\-strip\-debug\fP -.LP -.LP -出力からデバッグ用の属性を削除します。そうした属性としては、 \f2SourceFile\fP、 \f2LineNumberTable\fP、 \f2LocalVariableTable\fP 、 \f2LocalVariableTypeTable\fP などが挙げられます。これらの属性を削除すれば、ダウンロードとインストールのサイズは小さくなりますが、デバッガの機能は制限されます。 -.LP -.LP -\f4\-\-keep\-file\-order\fP -.LP -.LP -入力ファイル内のファイルの順序を維持します。これがデフォルトの動作です。 -.LP -.LP -\f4\-O \-\-no\-keep\-file\-order\fP -.LP -.LP -パックツールは、すべての要素を並べ替えて転送します。また、JAR ディレクトリ名を削除します。このため、ダウンロードのサイズは小さくなりますが、インデックスをはじめとする JAR ファイルの最適化機能は正常に動作しなくなることがあります。 -.LP -.LP -\f4\-Svalue \-\-segment\-limit=\fP\f2value\fP -.LP -.LP -この値は、各アーカイブセグメントの予想ターゲットサイズ N (バイト単位) です。単一の入力ファイルの必要サイズが -.br -N バイトを超えると、そのファイルには独立したアーカイブセグメントが割り当てられます。特殊なケースとして、値が \f2\-1\fP の場合は、すべての入力ファイルを含む大きな単一のセグメントが生成され、値が \f20\fP の場合は、クラスごとにセグメントが 1 つずつ生成されます。アーカイブセグメントが大きくなると、断片化が少なくなり圧縮率が高くなりますが、その処理には多くのメモリーが必要です。 -.LP -.LP -各セグメントのサイズは、セグメントに変換されるそれぞれの入力ファイルのサイズのほか、その名前とほかの送信されるプロパティーのサイズを計算して推測されます。 -.LP -.LP -デフォルトは \-1 です。つまり、パックツールは常に単一のセグメント出力ファイルを作成します。極端に大きな出力ファイルが生成される場合には、入力ファイルをセグメント化 (分割) してより小さな JAR にすることを強くお勧めします。 -.LP -.LP -この制限が課されていない 10M バイトの JAR パックファイルは通常、元の 10% 程度のサイズにパックされます。しかし、パックツールでより大きな Java ヒープ (セグメントの制限の約 10 倍) を必要とする場合もあります。 -.LP -.LP -\f4\-Evalue \-\-effort=\fP\f2value\fP -.LP -.LP -単一の 10 進数値を指定した場合、パックツールは、指定された圧縮率でアーカイブを圧縮します。レベル \f21\fP の場合は、比較的短い圧縮時間でやや大きめのファイルが生成されますが、レベル \f29\fP の場合は、非常に長い時間がかかるものの、より圧縮率の高いファイルが生成されます。特殊な値 \f20\fP を指定した場合は、元の JAR ファイルを圧縮なしで直接コピーします。JSR 200 標準では、すべての解凍プログラムが、この特別な場合をアーカイブ全体のパススルーと解釈するように規定しています。 -.LP -.LP -デフォルトは \f25\fPです。この場合、標準的な時間で適切な圧縮が行われます。 -.LP -.LP -\f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP -.LP -.LP -デフォルト値を上書きし、入力情報を保存します。転送されるアーカイブのサイズは大きくなります。返される値は次のどれかになります。 -.LP -.RS 3 -.TP 3 -true -.TP 3 -false -どちらの場合でも、パックツールはデフレーションヒントを出力アーカイブに設定します。アーカイブ要素の個々のデフレーションヒントは転送しません。 +.PP +\-r, \-\-repack +.RS 4 +JARファイルをパックした後アンパックして、JARファイルを生成します。生成されたファイルは\fIjarsigner\fR(1)ツールの入力ファイルとして使用できます。次の例では、myarchive\&.jarファイルをパックした後、アンパックします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +pack200 \-\-repack myarchive\-packer\&.jar myarchive\&.jar +pack200 \-\-repack myarchive\&.jar +.fi +.if n \{\ .RE - -.LP -.RS 3 -.TP 3 -keep -入力 JAR.内で見つかったデフレーションヒントを維持します。(これがデフォルトです。) +.\} +次の例では、入力ファイル内のファイルの順序を保持します。 .RE - -.LP -.LP -\f4\-mvalue \-\-modification\-time=\fP\f2value\fP -.LP -.LP -返される値は次のどれかになります。 -.LP -.RS 3 -.TP 3 -latest -パックツールは、元のアーカイブの全エントリの最終更新時刻か、そのセグメントのすべてのエントリの最終更新時刻を特定しようとします。この単一の値はセグメントの一部として転送され、各セグメントの全エントリに適用されます。この場合、すべてのインストールファイルに単一の日付が設定されるという問題はありますが、アーカイブの転送サイズを少し小さくすることができます。 -.TP 3 -keep -入力 JAR. 内で見つかった変更時刻を維持します。(これがデフォルトです。) +.PP +\-g, \-\-no\-gzip +.RS 4 +\fIpack200\fRファイルを生成します。このオプションを指定するときは、適切な圧縮ツールを使用する必要があります。また、ターゲット・システムでは、対応する圧縮解除ツールを使用する必要があります。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +pack200 \-\-no\-gzip myarchive\&.pack myarchive\&.jar +.fi +.if n \{\ .RE - -.LP -.LP -\f4\-Pfile \-\-pass\-file=\fP\f2file\fP -.LP -.LP -ファイルを圧縮せず、バイト単位で転送するように指定します。このオプションを繰り返し使用して、複数のファイルを指定できます。システムファイルセパレータが JAR ファイルセパレータ「\f2/\fP」に置き換えられる点を除き、パス名の変換は行われません。 結果として得られるファイル名は、文字列として正確に JAR ファイルでの出現と一致している必要があります。file にディレクトリ名を指定した場合、そのディレクトリ内のすべてのファイルが転送されます。 -.LP -.LP -\f4\-Uaction \-\-unknown\-attribute=\fP\f2action\fP -.LP -.LP -デフォルトの動作を無効にします。たとえば、不明な属性を含むクラスファイルを指定したアクションで転送します。アクションとして指定可能な値: -.LP -.RS 3 -.TP 3 -error -\f2pack200\fP の操作に失敗し、適切な解説が表示されます。 -.TP 3 -strip -属性はドロップされます。注: VM 必須属性を削除するとクラスローダーの障害が発生することがあります。 -.TP 3 -pass -この属性が検出された場合、クラス全体が 1 つのリソースとして転送されます。 +.\} .RE - -.LP -.LP -\f4\-Cattribute\-name=\fP\f2layout\fP \f3\-\-class\-attribute=\fP\f2attribute\-name=action\fP -.br -\f4\-Fattribute\-name=\fP\f2layout\fP \f3\-\-field\-attribute=\fP\f2attribute\-name=action\fP -.br -\f4\-Mattribute\-name=\fP\f2layout\fP \f3\-\-method\-attribute=\fP\f2attribute\-name=action\fP -.br -\f4\-Dattribute\-name=\fP\f2layout\fP \f3\-\-code\-attribute=\fP\f2attribute\-name=action\fP -.LP -.LP -これら 4 つのオプションでは、クラスエンティティーに Class 属性、Field 属性、Method 属性、Code 属性などの属性のレイアウトを指定できます。attribute\-name には、これからレイアウトまたはアクションを定義する属性の名前を指定します。アクションとして指定可能な値: -.LP -.RS 3 -.TP 3 -some\-layout\-string -レイアウト言語は、JSR 200 仕様に定義されています。 -.LP -例: \f2\-\-class\-attribute=SourceFile=RUH\fP -.TP 3 -error -この属性が検出された場合、pack200 の操作に失敗し、適切な解説が表示されます。 -.TP 3 -strip -この属性が検出された場合、属性は出力から削除されます。注: VM 必須属性を削除するとクラスローダーの障害が発生することがあります。 +.PP +\-G, \-\-strip\-debug +.RS 4 +出力からデバッグ属性を削除します。これには、\fISourceFile\fR、\fILineNumberTable\fR、\fILocalVariableTable\fR、\fILocalVariableTypeTable\fRが含まれます。これらの属性を削除すれば、ダウンロードとインストールのサイズは小さくなりますが、デバッガの機能は制限されます。 .RE - -.LP -.LP -例: \f2\-\-class\-attribute=CompilationID=pass\fP というこの属性を含むクラスファイルを転送します。パックツールは、その他のアクションを行いません。 -.LP -.LP -\f4\-f\fP\f2 \fP\f2pack.properties\fP \f3\-\-config\-file=\fP\f2pack.properties\fP -.LP -.LP -コマンド行に、パックツールを初期化するための Java プロパティーが含まれている設定ファイルを指定できます。 -.LP -.LP -\f2% pack200 \-f pack.properties myarchive.pack.gz myarchive.jar\fP -.br -\f2% more pack.properties\fP -.br -\f2# Generic properties for the packer.\fP -.br -\f2modification.time=latest\fP -.br -\f2deflate.hint=false\fP -.br -\f2keep.file.order=false\fP -.br -\f2# This option will cause the files bearing new attributes to\fP -.br -\f2# be reported as an error rather than passed uncompressed.\fP -.br -\f2unknown.attribute=error\fP -.br -\f2# Change the segment limit to be unlimited.\fP -.br -\f2segment.limit=\-1\fP -.LP -.LP -\f4\-v \-\-verbose\fP -.LP -.LP -最小限のメッセージを出力します。このオプションを複数指定すると、より長いメッセージが出力されます。 -.LP -.LP -\f4\-q \-\-quiet\fP -.LP -.LP -メッセージを表示せずに動作します。 -.LP -.LP -\f4\-lfilename \-\-log\-file=\fP\f2filename\fP -.LP -.LP -出力メッセージのログファイルを指定します。 -.LP -.LP -\f4\-? \-h \-\-help\fP -.LP -.LP +.PP +\-\-keep\-file\-order +.RS 4 +入力ファイル内のファイルの順序を保持します。これは、デフォルトの動作です。 +.RE +.PP +\-O, \-\-no\-keep\-file\-order +.RS 4 +パック・ツールは、すべての要素を並べ替えて送信します。パック・ツールは、JARディレクトリ名を削除してダウンロード・サイズを削減することもできます。ただし、インデックスなど、特定のJARファイルの最適化機能が正常に動作しなくなることがあります。 +.RE +.PP +\-S\fIvalue\fR, \-\-segment\-limit=\fIvalue\fR +.RS 4 +この値は、各アーカイブ・セグメントの予想ターゲット・サイズ\fIN\fR +(バイト単位)です。単一の入力ファイルの必要サイズが\fIN\fRバイトを超えると、独立したセグメントが割り当てられます。特殊なケースとして、値が\fI\-1\fRの場合は、すべての入力ファイルを含む大きな単一のセグメントが生成され、値が0の場合は、クラスごとにセグメントが1つずつ生成されます。アーカイブ・セグメントが大きくなると、断片化が少なくなり圧縮率が高くなりますが、その処理には多くのメモリーが必要です。 +.sp +各セグメントのサイズは、セグメントに変換されるそれぞれの入力ファイルのサイズのほか、その名前と他の送信されるプロパティのサイズを計算して推測されます。 +.sp +デフォルトは\-1です。つまり、パック・ツールは単一のセグメント出力ファイルを作成します。極端に大きな出力ファイルが生成される場合には、入力ファイルをセグメント化(分割)してより小さなJARにすることを強くお薦めします。 +.sp +この制限が課されていない10 MBのJARパック・ファイルは通常、約10%小さくパックされます。しかし、パック・ツールでより大きなJavaヒープ(セグメントの制限の約10倍)を必要とする場合もあります。 +.RE +.PP +\-E\fIvalue\fR, \-\-effort=\fIvalue\fR +.RS 4 +単一の10進数値を指定した場合、パック・ツールは、指定された圧縮率でアーカイブを圧縮します。レベル1の場合は、比較的短い圧縮時間で多少大きめのファイルが生成されますが、レベル9の場合は、非常に長い時間がかかるものの、より圧縮率の高いファイルが生成されます。特殊な値0を指定した場合は、\fIpack200\fRコマンドは元のJARファイルを圧縮なしで直接コピーします。JSR 200標準では、すべての解凍プログラムが、この特別な場合をアーカイブ全体のパススルーと解釈するように規定しています。 +.sp +デフォルトは5です。この場合、標準的な時間で適切な圧縮が行われます。 +.RE +.PP +\-H\fIvalue\fR, \-\-deflate\-hint=\fIvalue\fR +.RS 4 +入力情報を保存するというデフォルト値をオーバーライドします。転送されるアーカイブのサイズは大きくなる場合があります。指定可能な値は、\fItrue\fR、\fIfalse\fRまたは\fIkeep\fRです。 +.sp +\fIvalue\fRが\fItrue\fRまたはfalseの場合、\fIpacker200\fRコマンドは指定に従ってデフレーション・ヒントを出力アーカイブに設定します。アーカイブ要素の個々のデフレーション・ヒントは転送されません。 +.sp +\fIkeep\fR値は、入力JARで確認されたデフレーション・ヒントを保持します。これがデフォルトです。 +.RE +.PP +\-m\fIvalue\fR, \-\-modification\-time=\fIvalue\fR +.RS 4 +指定可能な値は\fIlatest\fRと\fIkeep\fRです。 +.sp +値が最新の場合、パック・ツールは、元のアーカイブの使用可能なすべてのエントリのうちの最終更新時刻か、そのセグメントの使用可能なすべてのエントリの最終更新時刻を特定しようとします。この単一の値はセグメントの一部として転送され、各セグメントの全エントリに適用されます。この場合、すべてのインストール・ファイルに単一の日付が設定されるという問題はありますが、アーカイブの転送サイズを少し小さくすることができます。 +.sp +値が\fIkeep\fRの場合、入力JARで確認された変更時間が保持されます。これがデフォルトです。 +.RE +.PP +\-P\fIfile\fR, \-\-pass\-file=\fIfile\fR +.RS 4 +ファイルを圧縮せず、バイト単位で転送するように指定します。このオプションを繰返し使用して、複数のファイルを指定できます。システム・ファイル・セパレータがJARファイル・セパレータのスラッシュ(/)に置き換えられる点を除き、パス名の変換は行われません。結果として得られるファイル名は、文字列として正確にJARファイルでの出現と一致している必要があります。\fIfile\fRにディレクトリ名を指定した場合、そのディレクトリ内のすべてのファイルが転送されます。 +.RE +.PP +\-U\fIaction\fR, \-\-unknown\-attribute=\fIaction\fR +.RS 4 +デフォルトの動作をオーバーライドします。つまり、不明な属性を含むクラス・ファイルが、指定した\fIaction\fRによって渡されます。アクションとして指定可能な値は、\fIerror\fR、\fIstrip\fRまたは\fIpass\fRです。 +.sp +値が\fIerror\fRの場合、\fIpack200\fRコマンド操作全体が失敗して適切な説明が表示されます。 +.sp +値が\fIstrip\fRの場合、属性は削除されます。Java仮想マシン(JVM)必須属性を削除すると、クラス・ローダーの障害が発生することがあります。 +.sp +値が\fIpass\fRの場合、クラス全体が1つのリソースとして転送されます。 +.RE +.PP +\-C\fIattribute\-name\fR=\fIlayout\fR, \-\-class\-attribute=\fIattribute\-name\fR=\fIaction\fR +.RS 4 +次のオプションを参照してください。 +.RE +.PP +\-F\fIattribute\-name\fR=\fIlayout\fR, \-\-field\-attribute=\fIattribute\-name\fR=\fIaction\fR +.RS 4 +次のオプションを参照してください。 +.RE +.PP +\-M\fIattribute\-name\fR=\fIlayout\fR, \-\-method\-attribute=\fIattribute\-name\fR=\fIaction\fR +.RS 4 +次のオプションを参照してください。 +.RE +.PP +\-D\fIattribute\-name\fR=\fIlayout\fR, \-\-code\-attribute=\fIattribute\-name\fR=\fIaction\fR +.RS 4 +前述の4つのオプションでは、クラス・エンティティに\fIclass\-attribute\fR、\fIfield\-attribute\fR、\fImethod\-attribute\fRおよび\fIcode\-attribute\fRなどの属性のレイアウトを指定できます。\fIattribute\-name\fRには、これからレイアウトまたはアクションを定義する属性の名前を指定します。\fIaction\fRとして指定可能な値は、\fIsome\-layout\-string\fR、\fIerror\fR、\fIstrip\fR、\fIpass\fRです。 +.sp +\fIsome\-layout\-string\fR: レイアウト言語はJSR 200仕様で定義されています。例: +\fI\-\-class\-attribute=SourceFile=RUH\fR。 +.sp +値が\fIerror\fRの場合、\fIpack200\fR操作が失敗して説明が表示されます。 +.sp +値が\fIstrip\fRの場合、属性が出力から削除されます。VM必須属性を削除するとクラス・ローダーの障害が発生することがあります。たとえば、\fI\-\-class\-attribute=CompilationID=pass\fRというこの属性を含むクラス・ファイルを転送します。パック・ツールは、その他のアクションを行いません。 +.sp +値が\fIpass\fRの場合、クラス全体が1つのリソースとして転送されます。 +.RE +.PP +\-f \fIpack\&.properties\fR, \-\-config\-file=\fIpack\&.properties\fR +.RS 4 +コマンドラインに、パック・ツールを初期化するためのJavaプロパティが含まれている構成ファイルを指定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +pack200 \-f pack\&.properties myarchive\&.pack\&.gz myarchive\&.jar +more pack\&.properties +# Generic properties for the packer\&. +modification\&.time=latest +deflate\&.hint=false +keep\&.file\&.order=false +# This option will cause the files bearing new attributes to +# be reported as an error rather than passed uncompressed\&. +unknown\&.attribute=error +# Change the segment limit to be unlimited\&. +segment\&.limit=\-1 +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-v, \-\-verbose +.RS 4 +最小限のメッセージを出力します。このオプションを複数指定すると、より長いメッセージが作成されます。 +.RE +.PP +\-q, \-\-quiet +.RS 4 +メッセージを表示せずに動作するように指定します。 +.RE +.PP +\-l\fIfilename\fR, \-\-log\-file=\fIfilename\fR +.RS 4 +出力メッセージのログ・ファイルを指定します。 +.RE +.PP +\-?, \-h, \-\-help +.RS 4 このコマンドに関するヘルプ情報を出力します。 -.LP -.LP -\f4\-V \-\-version\fP -.LP -.LP -このコマンドに関するバージョン情報を出力します。 -.LP -.LP -\f4\-J\fP\f2option\fP -.LP -.LP -\f2option\fP を、 \f2pack200\fP から呼び出された Java 起動ツールに渡します。たとえば、 \f2\-J\-Xms48m\fP と指定すると、スタートアップメモリーが 48M バイトに設定されます。このオプションは \f2\-X\fP で始まっていませんが、 \f2pack200\fP の標準オプションではありません。 \f2\-J\fP を使って、Java で記述されたアプリケーションを実行する背後の VM にオプション渡すことは、よく行われています。 -.LP -.SH "終了ステータス" -.LP -.LP -次の終了値が返されます。 -.LP -.LP -\f2\ 0\fP 正常終了した場合 -.LP -.LP -\f2>0\fP エラーが発生した場合 -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -unpack200(1) -.TP 2 -o -.na -\f2Java SE のドキュメント\fP @ -.fi -http://java.sun.com/javase/6/docs/index.html -.TP 2 -o -.na -\f2「Java 配備ガイド \- Pack200」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/pack200.html -.TP 2 -o -jar(1) \- Java Archive ツール」 -.TP 2 -o -jarsigner(1) \- JAR 署名および検証ツール」 -.TP 2 -o -\f2attributes(5) の\fP マニュアルページ .RE - -.LP -.SH "注意事項" -.LP -.LP -このコマンドと \f2pack(1)\fP を混同しないでください。これらは別製品です。 -.LP -.LP -SDK に付属する Java SE API 仕様との相違が見つかった場合には、仕様を優先してください。 -.LP - +.PP +\-V, \-\-version +.RS 4 +このコマンドに関するバージョン情報を出力します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +指定されたオプションをJava仮想マシンに渡します。詳細は、java(1)コマンドのリファレンス・ページを参照してください。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。 +.RE +.SH "終了ステータス" +.PP +次の終了値が返されます: 正常終了の場合は0、エラーが発生した場合は0より大きい値。 +.SH "注意" +.PP +このコマンドと\fIpack\fR(1)を混同しないでください。\fIpack\fRおよび\fIpack200\fRコマンドは、別々の製品です。 +.PP +JDKに付属するJava SE API仕様との相違が見つかった場合には、仕様を優先してください。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +unpack200(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jarsigner(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/policytool.1 b/jdk/src/solaris/doc/sun/man/man1/ja/policytool.1 index b3de7eca294..c724f7893be 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/policytool.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/policytool.1 @@ -1,105 +1,173 @@ -." 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 -." 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 policytool 1 "07 May 2011" - -.LP -.SH "名前" -policytool \- PolicyTool 管理 GUI ユーティリティー -.LP -\f3policytool\fP は、ユーティリティー GUI 経由で取得したユーザー入力に基づいて、プレーンテキストのポリシーファイルを読み書きします。 -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -関連項目 +'\" t +.\" Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: policytool +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: セキュリティ・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "policytool" "1" "2013年11月21日" "JDK 8" "セキュリティ・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +policytool \- ユーティリティGUI経由で取得したユーザー入力に基づいて、プレーン・テキストのポリシー・ファイルを読み書きします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIpolicytool\fR [ \fI\-file\fR ] [ \fIfilename\fR ] +.fi +.if n \{\ .RE - -.LP -.SH "形式" -.LP -.RS 3 -.TP 3 -\ -.TP 3 -policytool 管理者ユーティリティーを実行します -\f4policytool\fP -.TP 3 -policytool を実行し、指定されたポリシーファイルを読み込みます -\f4policytool\fP\f2[\-file\ \fP\f2filename\fP\f2]\fP -.TP 3 -\ -.TP 3 -以下にそれぞれの意味を示します。 -.RS 3 -.TP 3 -file -ローカルポリシーファイルを読み込むように \f2policytool\fP に指示します -.TP 3 -filename -ファイル名 +.\} +.PP +\-file +.RS 4 +ポリシー・ファイルを読み込むように\fIpolicytool\fRに指示します。 .RE -.SH "説明" -.LP -\f3policytool\fP は、ユーザーがローカルポリシーファイルの内容を管理することを可能にする GUI です。詳細については、 -.na -\f2「ポリシーファイル作成および管理ツール」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyGuide.htmlを参照してください。 -.SH "オプション" -.RS 3 -.TP 3 -file -\f2filename\fP を読み込みます。 -.SH "関連項目" -.na -\f2「Default 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 @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyGuide.html -.br -.na -\f2「Security Permissions」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/permissions.html -.br -.na -\f2「Security Overview」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/security/overview/jsoverview.html -.br +.PP +\fIfilename\fR +.RS 4 +ロードするファイルの名前。 .RE +.PP +\fB例\fR: +.PP +ポリシー・ツール管理ユーティリティを実行します: +.sp +.if n \{\ +.RS 4 +.\} +.nf +policytool +.fi +.if n \{\ .RE - -.LP - +.\} +.PP +\fIpolicytool\fRコマンドを実行し、指定されたファイルをロードします: +.sp +.if n \{\ +.RS 4 +.\} +.nf +policytool\-file mypolicyfile +.fi +.if n \{\ +.RE +.\} +.SH "説明" +.PP +\fIpolicytool\fRコマンドは、管理者のGUIを呼び出します。これにより、システム管理者はローカル・ポリシー・ファイルの内容を管理できるようになります。ポリシー・ファイルは\fI\&.policy\fR拡張子を持つプレーンテキスト・ファイルで、ドメイン別にリモート・リクエスタを権限オブジェクトにマップします。詳細は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/PolicyFiles\&.htmlにある +「Default Policy Implementation and Policy File Syntax」を参照してください +.SH "オプション" +.PP +\-file +.RS 4 +ポリシー・ファイルを読み込むように\fIpolicytool\fRに指示します。 +.RE +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Default Policy Implementation and Policy File Syntax」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/PolicyFiles\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Policy File Creation and Management」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/PolicyGuide\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Permissions in Java SE Development Kit (JDK)」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/permissions\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Java Security Overview」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/overview/jsoverview\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Java Cryptography Architecture (JCA) Reference Guide」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/rmic.1 b/jdk/src/solaris/doc/sun/man/man1/ja/rmic.1 index 621cde4c028..bca3b844f7b 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/rmic.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/rmic.1 @@ -1,231 +1,360 @@ -." 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 -." 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 rmic 1 "07 May 2011" - -.LP -.SH "名前" -rmic \- Java RMI コンパイラ -.LP -.LP -\f3rmic\fP によって、JRMP または IIOP プロトコルを使用するリモートオブジェクトのスタブ、スケルトン、および Tie クラスが生成されます。また、OMG IDL も生成されます。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: rmic +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Remote Method Invocation (RMI)ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "rmic" "1" "2013年11月21日" "JDK 8" "Remote Method Invocation (RMI)" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +rmic \- Java Remote Method Protocol (JRMP)またはInternet Inter\-Orb protocol (IIOP)を使用するリモート・オブジェクトのスタブ、スケルトンおよびTieクラスを生成します。Object Management Group (OMG)インタフェース定義言語(IDL)も生成します +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -rmic [ \fP\f3options\fP\f3 ] \fP\f4package\-qualified\-class\-name(s)\fP\f3 -.fl -\fP +\fIrmic\fR [ \fIoptions\fR ] \fIpackage\-qualified\-class\-names\fR .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・\fIオプション\fR。オプションを参照してください。 +.RE +.PP +\fIpackage\-qualified\-class\-names\fR +.RS 4 +パッケージを含むクラス名。例: +\fIjava\&.awt\&.Color\fR。 +.RE .SH "説明" -.LP -.LP -\f3rmic\fP コンパイラによって、リモートオブジェクトの、スタブ、スケルトンクラスファイル (JRMP プロトコル)、およびスタブと Tie クラスファイルの組み合わせ (IIOP プロトコル) が生成されます。リモートオブジェクトの実装クラスであるこれらのクラスファイルは、Java プログラミング言語のクラスをコンパイルしたときに生成されます。リモート実装クラスは、\f2java.rmi.Remote\fP インタフェースを実装するクラスです。\f3rmic\fP コマンドでのクラス名は、そのクラスが \f3javac\fP コマンドでコンパイルが成功していて、かつ完全なパッケージ名が指定されている必要があります。たとえば、クラスファイル名 \f2HelloImpl\fP で \f3rmic\fP を実行するには、次のようにします。 -.LP +.PP +\fB非推奨に関する注意:\fR +Java Remote Method Protocol (JRMP)スタブおよびスケルトンの静的な生成のサポートは非推奨になりました。動的に生成されるJRMPスタブをかわりに使用して、JRMPベースのアプリケーションにこのツールを使用する必要性をなくすことをお薦めします。詳細は、\fIjava\&.rmi\&.server\&.UnicastRemoteObject\fR仕様(http://docs\&.oracle\&.com/javase/8/docs/api/java/rmi/server/UnicastRemoteObject\&.html)を参照してください。 +.PP +\fIrmic\fRコンパイラは、Java Remote Method Protocol (JRMP)とスタブおよびTieクラス・ファイル(IIOPプロトコル)を使用して、リモート・オブジェクトのスタブおよびスケルトン・クラス・ファイルを生成します。リモート・オブジェクトの実装クラスであるこれらのクラス・ファイルは、Javaプログラミング言語のクラスをコンパイルしたときに生成されます。リモート実装クラスは、\fIjava\&.rmi\&.Remote\fRインタフェースを実装するクラスです。\fIrmic\fRコマンドでのクラス名は、そのクラスが\fIjavac\fRコマンドでコンパイルが成功していて、かつ完全修飾パッケージ名である必要があります。たとえば、次に示すクラス・ファイル名\fIHelloImpl\fRで\fIrmic\fRコマンドを実行すると、helloサブディレクトリ(クラスのパッケージの名前の付いた)に\fIHelloImpl_Stub\&.class \fRファイルが作成されます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -rmic hello.HelloImpl -.fl -\fP +rmic hello\&.HelloImpl .fi - -.LP -.LP -\f2HelloImpl_Stub.class\fP ファイルが、クラスのパッケージ名が付いた \f2hello\fP サブディレクトリに作成されます。 -.LP -.LP -リモートオブジェクトの「スケルトン」は JRMP プロトコルサーバー側のエンティティーで、実際のリモートオブジェクト実装を呼び出すメソッドを含みます。 -.LP -.LP -リモートオブジェクトの「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 オプションを使用します。 -.LP -.LP -スタブはリモートインタフェースだけを実装し、リモートオブジェクトが実装する局所インタフェースは実装していません。JRMP スタブはリモートオブジェクト自体が実装するリモートインタフェースと同じものを実装しているので、クライアントは、キャストや型チェックに Java プログラミング言語に組み込まれた演算子を使用することができます。IIOP の場合は、\f2PortableRemoteObject.narrow\fP メソッドを使わなければなりません。 -.LP +.if n \{\ +.RE +.\} +.PP +リモート・オブジェクトのスケルトンはJRMPプロトコル・サーバー側のエンティティで、リモート・オブジェクト実装を呼び出すメソッドを含みます。 +.PP +リモート・オブジェクトのTieは、スケルトンと同様にサーバー側のエンティティですが、IIOPプロトコルを使用してクライアントと通信します。 +.PP +スタブとは、リモート・オブジェクトのクライアント側での代理です。スタブは、リモート・オブジェクトのメソッド呼出しを、実物のリモート・オブジェクトが常駐するサーバーと通信する役割を持ちます。したがって、クライアントのリモート・オブジェクトへの参照は、実際はローカル・スタブへの参照となります。 +.PP +デフォルトで\fIrmic\fRコマンドは、1\&.2 JRMPスタブ・プロトコル・バージョンのみを使用するスタブ・クラスを生成します。これは、\fI\-v1\&.2\fRオプションを指定した場合と同じ動作です。リリース5\&.0以前では\fI\-vcompat\fRオプションがデフォルトでした。IIOPプロトコル用のスタブおよびTieクラスを生成するには\fI\-iiop\fRオプションを使用します。オプションを参照してください。 +.PP +スタブはリモート・インタフェースのみを実装し、リモート・オブジェクトが実装するローカル・インタフェースは実装していません。JRMPスタブはリモート・オブジェクトが実装するリモート・インタフェースと同じものを実装しているので、クライアントは、キャストや型チェックにJavaプログラミング言語に組み込まれた演算子を使用することができます。IIOPの場合は、\fIPortableRemoteObject\&.narrow\fRメソッドを使用する必要があります。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-bootclasspath path -ブートストラップクラスファイルの位置をオーバーライドします。 -.TP 3 -\-classpath path -\f3rmic\fP がクラスを探すためのパスを指定します。このオプションは、デフォルトや CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 -.nf -\f3 -.fl -.:<your_path> -.fl -\fP -.fi -例を示します。 -.nf -\f3 -.fl -.:/usr/local/java/classes -.fl -\fP -.fi -.TP 3 -\-d directory -生成されたクラス階層の出力先ディレクトリのルートを指定します。このオプションを使えば、スタブ、スケルトン、および Tie ファイルを格納するディレクトリを指定できます。たとえば、次のようにして使います。 -.nf -\f3 -.fl -% rmic \-d /java/classes foo.MyClass -.fl -\fP -.fi -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 -局所変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号情報だけが生成されます。 -.TP 3 -\-idl -\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) を参照してください。 -.LP -\f2\-idl\fP オプションを使うときは、ほかのオプションも指定できます。 -.RS 3 -.TP 3 -\-always または \-alwaysgenerate -既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。 -.TP 3 -\-factory -生成された IDL で factory キーワードを使います。 -.TP 3 -\-idlModule\ fromJavaPackage[.class]\ toIDLModule -IDLEntity パッケージのマップを指定します。例を示します。 \f2\-idlModule foo.bar my::real::idlmod\fP -.TP 3 -\-idlFile\ fromJavaPackage[.class]\ toIDLFile -IDLEntity ファイルのマップを指定します。例を示します。 \f2\-idlFile test.pkg.X TEST16.idl\fP\ +.PP +\-bootclasspath \fIpath\fR +.RS 4 +ブートストラップ・クラス・ファイルの位置をオーバーライドします。 .RE -.TP 3 -\-iiop -\f2rmic\fP によって、JRMP のスタブとスケルトンクラスの代わりに、IIOP のスタブと Tie クラスが生成されます。スタブクラスは、リモートオブジェクトのローカルプロキシで、クライアントからサーバーに呼び出しを送信するときに使われます。各リモートインタフェースにはスタブクラスが必要です。スタブクラスによってリモートインタフェースが実装されます。クライアントでリモートオブジェクトを参照するときは、実際にはスタブを参照することになります。タイクラスは、サーバー側で着呼を処理し、その呼び出しを適切な実装クラスにディスパッチするときに使われます。各実装クラスには、タイクラスが必要です。 -.LP -\f2\-iiop\fP を使って \f2rmic\fP を呼び出すと、次の命名規約に準拠したスタブと Tie が生成されます。 +.PP +\-classpath path +.RS 4 +\fIrmic\fRコマンドがクラスを探すためのパスを指定します。このオプションは、デフォルトや\fICLASSPATH\fR環境変数設定をオーバーライドします。ディレクトリはコロンで分割します。パスの一般的な形式は\fI\&.;<your_path>\fRです。例: +\fI\&.;/usr/local/java/classes\fR +.RE +.PP +\-d \fIdirectory\fR +.RS 4 +生成されたクラス階層の出力先ディレクトリのルートを指定します。このオプションを使用すると、スタブ、スケルトン、およびTieファイルを格納するディレクトリを指定できます。たとえば、次のコマンドはMyClassから導出されたスタブおよびスケルトン・クラスをディレクトリ/java/classes/exampleclassに格納します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -_<implementationName>_stub.class -.fl -\fP -.br -\f3 -.fl -_<interfaceName>_tie.class -.fl -\fP +rmic \-d /java/classes exampleclass\&.MyClass .fi -.LP -\f2\-iiop\fP オプションを使うときは、ほかのオプションも指定できます。 -.RS 3 -.TP 3 -\-always または \-alwaysgenerate -既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。 -.TP 3 -\-nolocalstubs -同じプロセスのクライアントとサーバーに対して最適化されたスタブを作成しません。 -.TP 3 -\-noValueMethods -これは \f2\-idl\fP オプションとともに使われなければなりません。発行された IDL に、\f2valuetype\fP メソッドおよび初期化子を追加しません。このメソッドおよび初期化子は、\f2valuetype\fP の場合はオプションです。 \f2\-idl\fP オプションを使うときは、 \f2\-noValueMethods\fP オプションを指定しない限り生成されます。 -.TP 3 -\-poa -継承が \f2org.omg.CORBA_2_3.portable.ObjectImpl\fP から \f2org.omg.PortableServer.Servant\fP に変わります。 -.LP -.na -\f2Portable Object Adapter\fP @ +.if n \{\ +.RE +.\} +\fI\-d\fRオプションが指定されていない場合、デフォルトの動作は\fI\-d\fRが指定されていた場合と同じです。ターゲット・クラスのパッケージ階層が現在のディレクトリに作成され、stub/tie/skeletonファイルが格納されます。以前のリリースの\fIrmic\fRコマンドでは、\fI\-d\fRが指定されていない場合は、パッケージ階層は作成されず、出力ファイルはすべて現在のディレクトリに直接格納されていました。 +.RE +.PP +\-extdirs \fIpath\fR +.RS 4 +インストール済拡張機能の位置をオーバーライドします。 +.RE +.PP +\-g +.RS 4 +ローカル変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号情報のみ生成されます。 +.RE +.PP +\-idl +.RS 4 +\fIrmic\fRコマンドによって、指定したクラスおよび参照されたクラスのOMG IDLが生成されます。IDLでは、プログラミング言語に依存せずに、宣言するだけでオブジェクトのAPIを指定することができます。IDLは、メソッドおよびデータの仕様として使用します。CORBAバインディングを提供する任意の言語で、メソッドおよびデータの作成および呼出しを行うことができます。これらの言語には、JavaおよびC++が含まれています。http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/mapping/jidlMapping\&.htmlの +「Java IDL: IDL to Java Language Mapping」を参照してください +.sp +\fI\-idl\fRオプションを使用するときには、他のオプションも指定できます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +既存のスタブ/Tie/IDLが入力クラスよりも新しい場合でも、\fI\-always\fRまたは\fI\-alwaysgenerate\fRオプションは再生成を強制します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-factory\fRオプションは、生成されたIDLで\fIfactory\fRキーワードを使用します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +The +\fI\-idlModule\fR +from J\fIavaPackage[\&.class]\fR +\fItoIDLModule\fR +specifies +\fIIDLEntity\fR +package mapping, for example: +\fI\-idlModule\fR +\fImy\&.module my::real::idlmod\fR\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-idlFile\fR +\fIfromJavaPackage[\&.class] toIDLFile\fR +specifies +\fIIDLEntity\fR +file mapping, for example: +\fI\-idlFile test\&.pkg\&.X TEST16\&.idl\fR\&. +.RE +.RE +.PP +\-iiop +.RS 4 +\fIrmic\fRコマンドによって、JRMPのスタブとスケルトン・クラスのかわりに、IIOPのスタブとTieクラスが生成されます。スタブ・クラスは、リモート・オブジェクトのローカル・プロキシで、クライアントからサーバーに呼出しを送信するときに使用されます。各リモート・インタフェースにはスタブ・クラスが必要です。スタブ・クラスによってリモート・インタフェースが実装されます。クライアントでリモート・オブジェクトを参照するときは、スタブを参照することになります。タイ・クラスは、サーバー側で着呼を処理し、その呼出しを適切な実装クラスにディスパッチするときに使用されます。各実装クラスには、タイ・クラスが必要です。 +.sp +\fI\-iiop\fRを使用して\fIrmic\fRコマンドを呼び出すと、次の命名規則に準拠したスタブとTieが生成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +_<implementationName>_stub\&.class +_<interfaceName>_tie\&.class .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 に準拠しています。 +.if n \{\ .RE -.TP 3 -\-J -\f2\-J\fP の後ろに続くオプションを \f2java\fP インタプリタに引き渡します。 \f2java\fP オプションと組み合わせて使います (\-J と java オプションの間にスペースは入れない)。 -.TP 3 -\-keep または \-keepgenerated -スタブ、スケルトン、または Tie クラスのための \f2.java\fP ソースファイルを \f2.class\fP ファイルと同じディレクトリに残します。 -.TP 3 -\-nowarn -警告をオフにします。このオプションを指定すると、コンパイラは警告を表示しません。 -.TP 3 -\-nowrite -コンパイルしたクラスをファイルシステムに書き込みません。 -.TP 3 -\-vcompat -1.1 と 1.2 の両方の JRMP スタブプロトコルバージョンと互換性のあるスタブおよびスケルトンクラスを作成します。(5.0 以前のリリースではこのオプションはデフォルト。)生成されたスタブクラスは、JDK 1.1 仮想マシンにロードされると 1.1 スタブプロトコルバージョンを使用し、JDK 1.2 以降の仮想マシンにロードされると 1.2 スタブプロトコルバージョンを使用します。生成されたスケルトンクラスでは、1.1 と 1.2 の両方のスタブプロトコルバージョンをサポートします。生成されたクラスは両方の操作モードをサポートするために、サイズが大きくなります。 -.TP 3 -\-verbose -コンパイラやリンカーが、コンパイルされているクラスやロードされているクラスファイルについてのメッセージを表示するようにします。 -.TP 3 -\-v1.1 -1.1 JRMP スタブプロトコルバージョンのみのスタブおよびスケルトンクラスを生成します。このオプションが使用できるのは、JDK 1.1 から \f3rmic\fP ツールで生成され、アップグレードできない (さらにダイナミッククラスローディングを使用していない) 、既存の静的配備されたスタブクラスに対し、直列化互換性のあるスタブクラスを生成場合だけです。 -.TP 3 -\-v1.2 -(デフォルト) 1.2 JRMP スタブプロトコルバージョンのみのスタブクラスを生成します。スケルトンクラスは 1.2 スタブプロトコルバージョンで使用できないため、このオプションではスケルトンクラスは生成されません。生成されたスタブクラスは、JDK 1.1 仮想マシンにロードされても動作しません。 +.\} +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-iiop\fRオプションを使用するときには、他のオプションも指定できます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +既存のスタブ/Tie/IDLが入力クラスよりも新しい場合でも、\fI\-always\fRまたは\fI\-alwaysgenerate\fRオプションは再生成を強制します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-nolocalstubs\fRオプションでは、同じプロセスのクライアントとサーバーに最適化されたスタブは作成されません。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-noValueMethods\fRオプションは\fI\-idl\fRオプションとともに使用する必要があります。\fI\-noValueMethods\fRオプションは、送信されるIDLに\fIvaluetype\fRメソッドおよび初期化子を追加できないようにします。このメソッドおよび初期化子は、valuetypeの場合はオプションです。\fI\-idl\fRオプションとともに\fI\-noValueMethods\fRオプションを指定しないかぎり生成されます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-poa\fRオプションは継承を\fIorg\&.omg\&.CORBA_2_3\&.portable\&.ObjectImpl\fRから\fIorg\&.omg\&.PortableServer\&.Servant\fRに変更します。ポータブル・オブジェクト・アダプタ(POA)の\fIPortableServer\fRモジュールは、ネイティブの\fIServant\fR型を定義します。Javaプログラミング言語では、\fIServant\fR型はJavaの\fIorg\&.omg\&.PortableServer\&.Servant\fRクラスにマップされます。これは、すべてのPOAサーバント実装のベース・クラスとして機能し、アプリケーション・プログラマが呼び出すことのできるいくつかのメソッド、およびPOAによって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドを提供します。OMG IDL to Java Language Mapping Specification、CORBA V 2\&.3\&.1 ptc/00\-01\-08\&.pdfに準拠しています。 +.RE +.RE +.PP +\-J +.RS 4 +Javaコマンドとともに使用して、\fI\-J\fRオプションは\fI\-J\fRの後ろに続く引数をJavaインタプリタに渡します(\fI\-J\fRと引数の間にスペースは入れません)。 +.RE +.PP +\-keep or \-keepgenerated +.RS 4 +スタブ、スケルトン、またはTieクラスのために生成された\fI\&.java\fRソース・ファイルを保持し、\fI\&.class\fRファイルと同じディレクトリに書き込みます。 +.RE +.PP +\-nowarn +.RS 4 +警告をオフにします。\fI\-nowarn\fRオプションが使用される場合。コンパイラは警告を表示しません。 +.RE +.PP +\-nowrite +.RS 4 +コンパイルしたクラスをファイル・システムに書き込みません。 +.RE +.PP +\-vcompat (非推奨) +.RS 4 +1\&.1と1\&.2の両方のJRMPスタブ・プロトコル・バージョンと互換性のあるスタブおよびスケルトン・クラスを作成します。5\&.0以前のリリースではこのオプションがデフォルトでした。生成されたスタブ・クラスは、JDK 1\&.1仮想マシンにロードされると1\&.1スタブ・プロトコル・バージョンを使用し、JDK 1\&.2以降の仮想マシンにロードされると1\&.2スタブ・プロトコル・バージョンを使用します。生成されたスケルトン・クラスでは、1\&.1と1\&.2の両方のスタブ・プロトコル・バージョンをサポートします。生成されたクラスは両方の操作モードをサポートするために、サイズが大きくなります。注意:このオプションは非推奨になりました。説明を参照してください。 +.RE +.PP +\-verbose +.RS 4 +コンパイラやリンカーが、コンパイルされているクラスやロードされているクラス・ファイルについてのメッセージを表示するようにします。 +.RE +.PP +\-v1\&.1 (非推奨) +.RS 4 +1\&.1 JRMPスタブ・プロトコル・バージョンのみのスタブおよびスケルトン・クラスを生成します。\fI\-v1\&.1\fRオプションを使用できるのは、JDK 1\&.1から\fIrmic\fRコマンドで生成され、アップグレードできない(さらにダイナミック・クラス・ローディングを使用していない)、既存の静的デプロイされたスタブ・クラスに対し、直列化互換性のあるスタブ・クラスを生成する場合のみです。注意:このオプションは非推奨になりました。説明を参照してください。 +.RE +.PP +\-v1\&.2 (非推奨) +.RS 4 +(デフォルト)1\&.2 JRMPスタブ・プロトコル・バージョンのみのスタブ・クラスを生成します。スケルトン・クラスは1\&.2スタブ・プロトコル・バージョンで使用できないため、スケルトン・クラスは生成されません。生成されたスタブ・クラスは、JDK 1\&.1仮想マシンにロードされても動作しません。注意:このオプションは非推奨になりました。説明を参照してください。 .RE - -.LP .SH "環境変数" -.LP -.RS 3 -.TP 3 -CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。次に例を示します。 -.nf -\f3 -.fl -.:/usr/local/java/classes -.fl -\fP -.fi +.PP +CLASSPATH +.RS 4 +ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで区切られます。例: +\fI\&.:/usr/local/java/classes\fR .RE - -.LP .SH "関連項目" -.LP -.LP -java(1)、javac(1)、 -.na -\f2CLASSPATH\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +javac(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Setting the Class Path +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/rmid.1 b/jdk/src/solaris/doc/sun/man/man1/ja/rmid.1 index e229fbf1cdc..1ee27efb1a9 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/rmid.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/rmid.1 @@ -1,328 +1,365 @@ -." 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 -." 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 rmid 1 "07 May 2011" - -.LP -.SH "名前" -rmid \- Java RMI 起動システムデーモン -.LP -.LP -\f3rmid\fP で起動システムデーモンを開始すると、オブジェクトを仮想マシン (VM) に登録して起動できるようになります。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: rmid +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Remote Method Invocation (RMI)ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "rmid" "1" "2013年11月21日" "JDK 8" "Remote Method Invocation (RMI)" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +rmid \- 起動システム・デーモンを開始すると、オブジェクトをJava仮想マシン(VM)に登録してアクティブ化できるようになります。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -rmid [options] -.fl -\fP +\fIrmid\fR [\fIoptions\fR] .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE .SH "説明" -.LP -.LP -\f3rmid\fP ツールは、起動システムデーモンを開始します。起動システムデーモンを開始してからでないと、起動可能オブジェクトを起動システムに登録したり、VM 内で起動したりすることができません。起動可能なリモートオブジェクトを使ったプログラムの作成方法の詳細は、 -.na -\f2「Java RMI 仕様」\fP @ -.fi -http://java.sun.com/javase/6/docs/platform/rmi/spec/rmiTOC.htmlおよび -.na -\f2「起動のチュートリアル」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/rmi/activation/overview.htmlを参照してください。 -.LP -.LP -デーモンを起動するには、次のように、セキュリティーポリシーファイルを指定して \f2rmid\fP コマンドを実行します。 -.LP +.PP +\fIrmid\fRコマンドは、起動システム・デーモンを開始します。起動システム・デーモンを開始してからでないと、アクティブ化可能オブジェクトをアクティブ化システムに登録したり、JVM内でアクティブ化したりすることができません。アクティブ化可能なオブジェクトを使用するプログラムの作成方法の詳細は、\fIアクティブ化の使用\fRに関するチュートリアル(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/rmi/activation/overview\&.html)を参照してください +.PP +\fIrmid\fRコマンドを実行し、次のようにセキュリティ・ポリシー・ファイルを指定して、デーモンを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - rmid \-J\-Djava.security.policy=rmid.policy -.fl -\fP +rmid \-J\-Djava\&.security\&.policy=rmid\&.policy .fi - -.LP -.LP -\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 をデフォルト設定で実行すると、次のような処理が行われます。 -.LP -.RS 3 -.TP 2 -o -アクティベータを起動し、デフォルトポート 1098 で内部レジストリを起動する -.TP 2 -o -この内部レジストリの中で、 \f2ActivationSystem\fP を \f2java.rmi.activation.ActivationSystem という名前に\fP バインドする +.if n \{\ .RE - -.LP -.LP -レジストリにほかのポートを指定するには、rmid の起動時に \f2\-port\fP オプションを \f2指定しなければなりません\fP。次に例を示します。 -.LP +.\} +.PP +\fIrmid\fRコマンドのOracleの実装を実行する場合、デフォルトでは、セキュリティ・ポリシー・ファイルを指定する必要があります。それは、\fIrmid\fRコマンドが起動グループ用にJVMを起動するために各\fIActivationGroupDesc\fR内の情報を使用できるかどうかを検証できるようにするためです特に、\fIActivationGroupDesc\fRコンストラクタに渡される\fICommandEnvironment\fRや任意のプロパティによって指定されるコマンドおよびオプションは、\fIrmid\fRコマンドのセキュリティ・ポリシー・ファイルの中で明示的に許可することが必要になりました。\fIsun\&.rmi\&.activation\&.execPolicy\fRプロパティの値は、起動グループ用にJVMを起動するために\fIActivationGroupDesc\fR内の情報を使用できるかどうかを判断するときに\fIrmid\fRコマンドが使用するポリシーを決定します。詳細は、\-J\-Dsun\&.rmi\&.activation\&.execPolicy=policyオプションの説明を参照してください。 +.PP +\fIrmid\fRコマンドを実行すると、デフォルト・ポート1098でアクティベータと内部レジストリが起動され、\fIActivationSystem\fRがこの内部レジストリ内の名前\fIjava\&.rmi\&.activation\&.ActivationSystem\fRにバインドされます。 +.PP +レジストリに他のポートを指定するには、\fIrmid\fRコマンドの実行時に\fI\-port\fRオプションを指定する必要があります。たとえば、次のコマンドは、レジストリのデフォルト・ポート1099で、起動システム・デーモンとレジストリを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - rmid \-J\-Djava.security.policy=rmid.policy \-port 1099 -.fl -\fP +rmid \-J\-Djava\&.security\&.policy=rmid\&.policy \-port 1099 .fi - -.LP -.LP -このコマンドは、起動システムデーモンを開始し、レジストリのデフォルトポート 1099 でレジストリを開始します。 -.LP -.SS -rmid を inetd/xinetd から開始する -.LP -.LP -\f2rmid\fP をコマンド行から開始するには、 \f2inetd\fP (Solaris の場合)、または \f2xinetd\fP (Linux の場合) を構成して \f2rmid\fP を必要に応じて開始する方法もあります。 -.LP -.LP -\f2rmid\fP を開始すると、System.inheritedChannel メソッドを呼び出して、継承されたチャンネル ( \f2inetd\fP/\f2xinetd\fP から継承) を取得しようとします。 継承されたチャンネルが \f2null\fP であるか、 \f2java.nio.channels.ServerSocketChannel\fP のインスタンスでなかった場合、 \f2rmid\fP rmid はそのチャンネルは \f2inetd\fP/\f2xinetd\fP によって起動されたものではないと判断し、前述のように起動します。 -.LP -.LP -継承されたチャンネルが \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) にある。ファイル名の接頭辞は \f2"rmid\-err"\fP で、接尾辞は \f2"tmp"\fP である -.TP 2 -o -\f2\-port\fP オプションは拒否される。このオプションを指定すると、 \f2rmid\fP はエラーメッセージを出して終了する -.TP 2 -o -\f2\-log\fP オプションは必須。このオプションを指定しないと、 \f2rmid\fP はエラーメッセージを出して終了する +.if n \{\ .RE - -.LP -.LP -必要に応じてサービスを開始するように設定する詳細については、 \f2inetd\fP (Solaris の場合)、または \f2xinetd\fP (Linux) のマニュアルページを参照してください。 -.LP +.\} +.SH "必要に応じてRMIDを開始" +.PP +\fIrmid\fRをコマンドラインから開始するには、\fIinetd\fR +(Oracle Solarisの場合)、または\fIxinetd\fR +(Linuxの場合)を構成して\fIrmid\fRを必要に応じて開始する方法もあります。 +.PP +RMIDを開始すると、\fISystem\&.inheritedChannel\fRメソッドを呼び出して、継承されたチャンネル(\fIinetd\fR/\fIxinetd\fRから継承)を取得しようとします。継承されたチャンネルがnullであるか、\fIjava\&.nio\&.channels\&.ServerSocketChannel\fRのインスタンスでなかった場合、RMIDはそのチャンネルは\fIinetd\fR/\fIxinetd\fRによって起動されたものではないと判断し、前述のように起動します。 +.PP +継承されたチャンネルが\fIServerSocketChannel\fRインスタンスである場合は、RMIDはエクスポートするリモート・オブジェクト、つまり\fIjava\&.rmi\&.activation\&.ActivationSystem\fRがバインドされているレジストリと\fIjava\&.rmi\&.activation\&.Activator\fRリモート・オブジェクトに対するリクエストを受信するサーバー・ソケットとして、\fIServerSocketChannel\fRから取得した\fIjava\&.net\&.ServerSocket\fRを使用します。このモードでは、RMIDの動作は、次のことを除いて、コマンドラインから起動した場合と同じです。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fISystem\&.err\fRに対する出力は、ファイルにリダイレクトされる。このファイルは\fIjava\&.io\&.tmpdir\fRシステム・プロパティで指定されるディレクトリ(通常は\fI/var/tmp\fRまたは\fI/tmp\fR)にある。ファイル名の接頭辞は\fIrmid\-err\fRで、接尾辞は\fItmp\fRである。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-port\fRオプションは使用できません。このオプションが指定されている場合、RMIDはエラー・メッセージが表示されて終了します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI\-log\fRオプションは必須。このオプションが指定されていない場合、RMIDはエラー・メッセージが表示されて終了します。 +.RE +.PP +必要に応じてサービスを開始するように構成する方法の詳細は、\fIinetd\fR +(Oracle Solarisの場合)、または\fIxinetd\fR +(Linux)のマニュアル・ページを参照してください。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-C<someCommandLineOption> -\f2rmid\fP の子プロセス (起動グループ) が作成されたときに、それぞれの子プロセスにコマンド行引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システムデーモンによって生成される各仮想マシンにプロパティーを渡すことができます。 +.PP +\-C\fIオプション\fR +.RS 4 +\fIrmid\fRコマンドの子プロセス(起動グループ)が作成されたときに、それぞれの子プロセスにコマンドライン引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システム・デーモンによって生成される各仮想マシンにプロパティを渡すことができます。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - rmid \-C\-Dsome.property=value -.fl -\fP +rmid \-C\-Dsome\&.property=value .fi -コマンド行引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のようなコマンドを実行できます。 +.if n \{\ +.RE +.\} +コマンドライン引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のコマンドでは、すべての子JVMでserver\-callロギングが可能です。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - rmid \-C\-Djava.rmi.server.logCalls=true -.fl -\fP +rmid \-C\-Djava\&.rmi\&.server\&.logCalls=true .fi -このコマンドにより、すべての子 VM でサーバー呼び出しのログが作成されるようになります。 -.LP -.TP 3 -\-J<someCommandLineOption> -rmid を実行している \f2java\fP インタプリタに渡すオプションを指定します。 たとえば、 \f2rmid\fP が \f2rmid.policy\fP という名前のポリシーファイルを使用するように指定するには、rmid のコマンド行で \f2\-J\fP オプションを使って、 \f2java.security.policy\fP プロパティーを定義します。 次に例を示します。 +.if n \{\ +.RE +.\} +.RE +.PP +\-J\fIoption\fR +.RS 4 +RMIDを実行しているJavaインタプリタに渡すオプションを指定します。たとえば、\fIrmid\fRコマンドが\fIrmid\&.policy\fRという名前のポリシー・ファイルを使用するように指定するには、\fIrmid\fRのコマンドラインで\fI\-J\fRオプションを使用して、\fIjava\&.security\&.policy\fRプロパティを定義します。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - rmid \-J\-Djava.security.policy=rmid.policy -.fl -\fP +rmid \-J\-Djava\&.security\&.policy\-rmid\&.policy .fi -.TP 3 -\-J\-Dsun.rmi.activation.execPolicy=<policy> -起動グループが実行されることになる VM の起動に使用するコマンドおよびコマンド行オプションをチェックするために、 \f2rmid\fP が採用するポリシーを指定します。このオプションは、Java RMI 起動デーモンの Sun の実装だけに存在することに注意してください。コマンド行にこのプロパティーを指定しない場合、結果は \f2\-J\-Dsun.rmi.activation.execPolicy=default\fP を指定した場合と同じになります。\f2<policy>\fP に指定可能な値は、\f2default\fP、\f2<policyClassName>\fP、または \f2none\fP です。 -.RS 3 -.TP 2 -o -\f3default (または、このプロパティーが「指定されていない」場合)\fP -.LP -デフォルトの \f2execPolicy\fP の場合、 \f2rmid\fP が実行できるのは、 \f2rmid\fP が使用するセキュリティーポリシーファイルの中で、実行する権限が \f2rmid\fP に与えられているコマンドおよびコマンド行オプションだけです。「デフォルト」の実行ポリシーで使用できるのは、デフォルトの起動グループ実装だけです。 -.LP -\f2rmid は、\fP 起動グループ用の VM を起動するときに、そのグループについて登録された起動グループ記述子である \f2ActivationGroupDesc\fP 内の情報を使用します。グループ記述子は、 \f2ActivationGroupDesc.CommandEnvironment\fP を指定します (省略可能)。これには、起動グループを開始する「コマンド」と、そのコマンド行に追加できるコマンド行「オプション」が含まれています。デフォルトでは、 \f2rmid は\fP java.home にある \f2java\fP コマンドを使用します。 グループ記述子には、オプションとしてコマンド行に追加される「プロパティー」オーバーライドも含まれています。このプロパティーは、次のように定義します。 +.if n \{\ +.RE +.\} +.RE +.PP +\-J\-Dsun\&.rmi\&.activation\&.execPolicy=\fIpolicy\fR +.RS 4 +起動グループが実行されることになるJVMの起動に使用するコマンドおよびコマンドライン・オプションをチェックするために、RMIDが採用するポリシーを指定します。このオプションは、Java RMI起動デーモンのOracleの実装のみに存在することに注意してください。コマンドラインにこのプロパティを指定しない場合、結果は\fI\-J\-Dsun\&.rmi\&.activation\&.execPolicy=default\fRを指定した場合と同じになります。\fIpolicy\fRに指定可能な値は、\fIdefault\fR、\fIpolicyClassName\fRまたは\fInone\fRです。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +デフォルト +.sp +\fIdefault\fRまたは未指定値の\fIexecPolicy\fRの場合、\fIrmid\fRコマンドが実行できるのは、\fIrmid\fRコマンドが使用するセキュリティ・ポリシー・ファイルの中で、実行する権限が\fIrmid\fRに与えられているコマンドおよびコマンドライン・オプションのみです。デフォルトの実行ポリシーで使用できるのは、デフォルトの起動グループ実装のみです。 +.sp +\fIrmid\fRコマンドは、起動グループ用のJVMを起動するときに、そのグループについて登録された起動グループ記述子である\fIActivationGroupDesc\fR内の情報を使用します。グループ記述子は、\fIActivationGroupDesc\&.CommandEnvironment\fRを指定します(省略可能)。これには、起動グループを開始するコマンドと、そのコマンドラインに追加できるコマンドライン・オプションが含まれています。デフォルトでは、\fIrmid\fRコマンドは\fIjava\&.home\fRにある\fIjava\fRコマンドを使用します。グループ記述子には、コマンドラインにオプションとして追加されるプロパティ・オーバーライドも含まれます(\fI\-D<property>=<value>\fRとして定義されます)。\fIcom\&.sun\&.rmi\&.rmid\&.ExecPermission\fR権限は\fIrmid\fRコマンドに、起動グループを開始するためにグループ記述子の\fICommandEnvironment\fRで指定されたコマンドを実行する権限を付与します。\fIcom\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fR権限は起動グループの開始時に、グループ記述子でプロパティ・オーバーライドとして、または\fICommandEnvironment\fRでオプションとして指定されたコマンドライン・オプションを、\fIrmid\fRコマンドが使用することを許可します。\fIrmid\fRコマンドに様々なコマンドおよびオプションを実行する権限を付与する場合、権限\fIExecPermission\fRおよび\fIExecOptionPermission\fRをすべてのコード・ソースに付与する必要があります。 +.sp +\fBExecPermission\fR +.sp +\fIExecPermission\fRクラスは、起動グループを開始するために\fIrmid\fRコマンドが特定のコマンドを実行する権限を表します。 +.sp +\fB構文\fR: +\fIExecPermission\fRの名前は、\fIrmid\fRコマンドに実行を許可するコマンドのパス名です。スラッシュ(/)およびアスタリスク(*)で終わるパス名は、そのディレクトリに含まれるすべてのファイルを示します。スラッシュはファイル区切り文字\fIFile\&.separatorChar\fRです。スラッシュ(/)およびマイナス符号(\-)で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ(再帰的に)を示します。パス名に特別なトークン\fI<<ALL FILES>>\fRを指定した場合は、任意のファイルを示します。 +.sp +パス名にアスタリスク(*)を指定した場合は、現在のディレクトリ内のすべてのファイルを示します。パス名にマイナス符号(\-)を指定した場合は、現在のディレクトリ内のすべてのファイルおよび(再帰的に)現在のディレクトリに含まれるすべてのファイルとサブディレクトリを示します。 +.sp +\fBExecOptionPermission\fR +.sp +\fIExecOptionPermission\fRクラスは、起動グループを開始するときに\fIrmid\fRコマンドで特定のコマンドライン・オプションを使用できる権限を表します。\fIExecOptionPermission\fRの名前は、コマンドライン・オプションの値です。 +.sp +\fB構文\fR: オプションでは、ワイルドカードが限定的にサポートされます。アスタリスクは、ワイルドカード・マッチを表します。アスタリスク(*)は、オプション名そのものとして使用できます。つまり、任意のオプションを表すことができます。また、オプション名の末尾に使用することもできます。ただし、ドット(\&.)か等号(=)の直後にアスタリスク(*)を指定する必要があります。 +.sp +例: +\fI*\fRや\fI\-Dmydir\&.*\fRや\fI\-Da\&.b\&.c=*\fRは有効ですが、\fI*mydir\fRや\fI\-Da*b\fRや\fIab*\fRは無効です。 +.sp +\fBrmidのポリシー・ファイル\fR +.sp +\fIrmid\fRコマンドに様々なコマンドおよびオプションを実行する権限を許可する場合は、権限\fIExecPermission\fRおよび\fIExecOptionPermission\fRをすべてのコード・ソースに付与する必要があります(汎用的に)。これらの権限をチェックするのは\fIrmid\fRコマンドのみなので、これらの権限を汎用的に付与しても安全です。 +.sp +\fIrmid\fRコマンドに各種の実行権限を付与するポリシー・ファイルの例を、次に示します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - \-D\fP\f4<property>\fP\f3=\fP\f4<value>\fP\f3 -.fl -\fP -.fi -.LP -アクセス権 \f2com.sun.rmi.rmid.ExecPermission\fP を使用すると、 \f2rmid\fP に対して、グループ記述子の \f2CommandEnvironment\fP で指定されたコマンドを実行して起動グループを開始する権限を許可することができます。アクセス権 \f2com.sun.rmi.rmid.ExecOptionPermission\fP を使用すると、グループ記述子でプロパティーオーバーライドとして指定されたコマンド行オプション、または \f2CommandEnvironment\fP でオプションとして指定されたコマンド行オプションを、起動グループを開始するときに rmid が使用できるようになります。 -.LP -\f2rmid に\fP さまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。つまり、すべてのコードソースに対して許可します。 -.RS 3 -.TP 3 -ExecPermission -\f2ExecPermission\fP クラスは、起動グループを開始するために \f2rmid が\fP 特定の「コマンド」を実行する権限を表します。 -.LP -\f3構文\fP -.br -\f2ExecPermission\fP の「名前」は、 \f2rmid\fP に実行を許可するコマンドのパス名です。「/*」 (「/」はファイル区切り文字 File.separatorChar) で終わるパス名は、そのディレクトリに含まれるすべてのファイルを示します。 「/\-」で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を示します。パス名に特別なトークン「<<ALL FILES>>」を指定した場合は、\f3任意の\fPファイルを示します。 -.LP -\f3注:\fP 「*」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルを表します。また、「\-」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルと、現在のディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を表します。 -.TP 3 -ExecOptionPermission -\f2ExecOptionPermission\fP クラスは、起動グループを開始するときに \f2rmid は、起動グループを開始するコマンドをまったく検証しません。\fP 特定のコマンド行「オプション」を使用できる権限を表します。 \f2ExecOptionPermission\fP の「名前」は、コマンド行オプションの値です。 -.LP -\f3構文\fP -.br -オプションでは、ワイルドカードが限定的にサポートされます。アスタリスクは、ワイルドカードマッチを表します。 アスタリスクは、オプション名そのものとして使用できます。 つまり、任意のオプションを表すことができます。 また、オプション名の末尾に使用することもできます。 ただし、「.」か「=」の直後にアスタリスクを指定する必要があります。 -.LP -例を示します。「*」、「\-Dfoo.*」、「\-Da.b.c=*」は有効ですが、「*foo」、「\-Da*b」、「ab*」は無効です。 -.TP 3 -rmid のポリシーファイル -\f2rmid に\fP さまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。つまり、すべてのコードソースに対して許可します。これらのアクセス権をチェックするのは \f2rmid\fP だけなので、これらのアクセス権を汎用的に許可しても安全です。 -.LP -rmid に各種の実行権限を許可するポリシーファイルの例を、次に示します。 -.nf -\f3 -.fl grant { -.fl - permission com.sun.rmi.rmid.ExecPermission -.fl - "/files/apps/java/jdk1.7.0/solaris/bin/java"; -.fl - -.fl - permission com.sun.rmi.rmid.ExecPermission -.fl - "/files/apps/rmidcmds/*"; -.fl - -.fl - permission com.sun.rmi.rmid.ExecOptionPermission -.fl - "\-Djava.security.policy=/files/policies/group.policy"; -.fl - -.fl - permission com.sun.rmi.rmid.ExecOptionPermission -.fl - "\-Djava.security.debug=*"; -.fl - -.fl - permission com.sun.rmi.rmid.ExecOptionPermission -.fl - "\-Dsun.rmi.*"; -.fl -}; -.fl -\fP -.fi -最初に付与されているアクセス権は、 \f2rmid\fP に対し、パス名により明示的に指定される \f2java\fP コマンドの 1.7.0 バージョンの実行を許可します。デフォルトでは、java.home にあるバージョンの \f2java\fP コマンドを使用します。 \f2rmid\fP が使用するのと同じバージョン) が使用されるため、そのコマンドは、ポリシーファイルで指定する必要はありません。2 番目のアクセス権は、 \f2rmid\fP に対して、ディレクトリ \f2/files/apps/rmidcmds\fP 内の任意のコマンドの実行権限を許可します。 -.LP -3 番目に付与されているアクセス権 \f2ExecOptionPermission\fP は、 \f2rmid\fP に対して、セキュリティーポリシーファイルを \f2/files/policies/group.policy\fP として定義している起動グループの開始を許可します。次のアクセス権は、起動グループが \f2java.security.debug\fP プロパティーを使用することを許可しています。最後のアクセス権は、起動グループが \f2sun.rmi\fP というプロパティー名の階層内の任意のプロパティーを使用することを許可しています。 -.LP -ポリシーファイルを指定して \f2rmid\fP を起動するには、rmid のコマンド行で \f2java.security.policy\fP プロパティーを指定する必要があります。 次に例を示します。 -.LP -\f2rmid \-J\-Djava.security.policy=rmid.policy\fP -.RE -.TP 2 -o -\f4<policyClassName>\fP -.LP -デフォルトの動作では十分な柔軟性が得られない場合、管理者は、 \f2rmid\fP の起動時に、 \f2checkExecCommand\fP メソッドが所属するクラスの名前を指定して、rmid が実行するコマンドをチェックすることができます。 -.LP -\f2policyClassName\fP には、引数なしのコンストラクタを持ち、次のような \f2checkExecCommand\fP メソッドを実装している public クラスを指定します。 -.nf -\f3 -.fl - public void checkExecCommand(ActivationGroupDesc desc, -.fl - String[] command) -.fl - throws SecurityException; -.fl -\fP -.fi -起動グループを開始する前に、 \f2rmid\fP は、ポリシーの \f2checkExecCommand\fP メソッドを呼び出します。このとき、起動グループの記述子と、起動グループを開始するための完全なコマンドを含む配列をそのメソッドに渡します。 \f2checkExecCommand\fP が \f2SecurityException\fP をスローすると、 \f2rmid\fP はその起動グループを開始せず、オブジェクトの起動を試行している呼び出し側には \f2ActivationException\fP がスローされます。 -.TP 2 -o -\f3none\fP -.LP -\f2sun.rmi.activation.execPolicy\fP プロパティーの値が「none」の場合、 \f2rmid\fP は、起動グループを開始するコマンドをまったく検証しません。 -.RE -.LP -.TP 3 -\-log dir -起動システムデーモンがデータベースおよび関連情報を書き込むのに使うディレクトリの名前を指定します。デフォルトでは、rmid コマンドを実行したディレクトリに、 \f2log\fP というログディレクトリが作成されます。 -.LP -.TP 3 -\-port port -\f2rmid\fP のレジストリが使うポートを指定します。起動システムデーモンは、このレジストリの中で、 \f2java.rmi.activation.ActivationSystem\fP という名前でActivationSystem をバインドします。したがって、ローカルマシン上の \f2ActivationSystem\fP は、次のように \f2Naming.lookup\fP メソッドを呼び出すことによって取得できます。 -.nf -\f3 -.fl - import java.rmi.*; -.fl - import java.rmi.activation.*; -.fl - -.fl - ActivationSystem system; system = (ActivationSystem) -.fl - Naming.lookup("//:\fP\f4port\fP/java.rmi.activation.ActivationSystem"); -.fl -.fi -.TP 3 -\-stop -\-port オプションによって指定されたポートの、現在の \f2rmid\fP 呼び出しを停止します。 ポートが指定されていない場合は、ポート 1098 で実行されている \f2rmid\fP を停止します。 -.RE - -.LP -.SH "環境変数" -.LP -.RS 3 -.TP 3 -CLASSPATH -ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。例を示します。 -.nf -\f3 -.fl - .:/usr/local/java/classes -.fl -\fP -.fi -.RE - -.LP -.SH "関連項目" -.LP -.LP -rmic(1)、 -.na -\f2CLASSPATH\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath、java(1) -.LP + permission com\&.sun\&.rmi\&.rmid\&.ExecPermission + "/files/apps/java/jdk1\&.7\&.0/solaris/bin/java"; + permission com\&.sun\&.rmi\&.rmid\&.ExecPermission + "/files/apps/rmidcmds/*"; + + permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission + "\-Djava\&.security\&.policy=/files/policies/group\&.policy"; + + permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission + "\-Djava\&.security\&.debug=*"; + + permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission + "\-Dsun\&.rmi\&.*"; +}; +.fi +.if n \{\ +.RE +.\} +最初に付与されている権限は、\fIrmid\fRコマンドに対し、パス名により明示的に指定される\fIjava\fRコマンドの1\&.7\&.0リリースの実行を許可します。デフォルトでは、\fIjava\&.home\fRにあるバージョンの\fIjava\fRコマンドを使用します。\fIrmid\fRコマンドが使用するのと同じバージョンが使用されるため、そのコマンドは、ポリシー・ファイルで指定する必要はありません。2番目の権限は、\fIrmid\fRコマンドに対して、ディレクトリ\fI/files/apps/rmidcmds\fR内の任意のコマンドの実行権限を許可します。 +.sp +3番目に付与されている権限\fIExecOptionPermission\fRは、\fIrmid\fRコマンドに対して、セキュリティ・ポリシー・ファイルを\fI/files/policies/group\&.policy\fRとして定義している起動グループの開始を許可します。次の権限は、起動グループが\fIjava\&.security\&.debug property\fRを使用することを許可しています。最後の権限は、起動グループが\fIsun\&.rmi property\fR名の階層内の任意のプロパティを使用することを許可しています。 +.sp +ポリシー・ファイルを指定して\fIrmid\fRコマンドを起動するには、\fIrmid\fRのコマンドラインで\fIjava\&.security\&.policy\fRプロパティを指定する必要があります。次に例を示します。 +.sp +\fIrmid \-J\-Djava\&.security\&.policy=rmid\&.policy\fR\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +<policyClassName> +.sp +デフォルトの動作では十分な柔軟性が得られない場合、管理者は、\fIrmid\fRの起動時に、\fIcheckExecCommand\fRメソッドが所属するクラスの名前を指定して、\fIrmid\fRコマンドが実行するコマンドをチェックすることができます。 +.sp +\fIpolicyClassName\fRには、引数なしのコンストラクタを持ち、次のような\fIcheckExecCommand\fRメソッドを実装しているpublicクラスを指定します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + public void checkExecCommand(ActivationGroupDesc desc, String[] command) + throws SecurityException; +.fi +.if n \{\ +.RE +.\} +起動グループを開始する前に、\fIrmid\fRコマンドは、ポリシーの\fIcheckExecCommand\fRメソッドを呼び出します。このとき、起動グループの記述子と、起動グループを開始するための完全なコマンドを含む配列をそのメソッドに渡します。\fIcheckExecCommand\fRが\fISecurityException\fRをスローすると、\fIrmid\fRコマンドはその起動グループを開始せず、オブジェクトの起動を試行している呼出し側には\fIActivationException\fRがスローされます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +none +.sp +\fIsun\&.rmi\&.activation\&.execPolicy\fRプロパティの値が\fInone\fRの場合、\fIrmid\fRコマンドは、起動グループを開始するコマンドをまったく検証しません。 +.RE +.RE +.PP +\-log \fIdir\fR +.RS 4 +起動システム・デーモンがデータベースおよび関連情報を書き込むのに使用するディレクトリの名前を指定します。デフォルトでは、\fIrmid\fRコマンドを実行したディレクトリに、logというログ・ディレクトリが作成されます。 +.RE +.PP +\-port \fIport\fR +.RS 4 +レジストリが使用するポートを指定します。起動システム・デーモンは、このレジストリの中で、\fIjava\&.rmi\&.activation\&.ActivationSystem\fRという名前で\fIActivationSystem\fRをバインドします。ローカル・マシン上の\fIActivationSystem\fRは、次のように\fINaming\&.lookup\fRメソッドを呼び出すことによって取得できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +import java\&.rmi\&.*; + import java\&.rmi\&.activation\&.*; + + ActivationSystem system; system = (ActivationSystem) + Naming\&.lookup("//:port/java\&.rmi\&.activation\&.ActivationSystem"); +.fi +.if n \{\ +.RE +.\} +.RE +.PP +\-stop +.RS 4 +\fI\-port\fRオプションによって指定されたポートの、現在の\fIrmid\fRコマンドの呼出しを停止します。ポートが指定されていない場合は、このオプションはポート1098で実行されている\fIrmid\fRの呼出しを停止します。 +.RE +.SH "環境変数" +.PP +CLASSPATH +.RS 4 +ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで区切られます。例: +\fI\&.:/usr/local/java/classes\fR +.RE +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Setting the Class Path +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/rmiregistry.1 b/jdk/src/solaris/doc/sun/man/man1/ja/rmiregistry.1 index 264c3c1cfa6..2786a5b1a3c 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/rmiregistry.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/rmiregistry.1 @@ -1,83 +1,132 @@ -." 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 -." 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 rmiregistry 1 "07 May 2011" - -.LP -.SH "名前" -rmiregistry \- Java リモートオブジェクトレジストリ -.LP -.RS 3 -\f3rmiregistry\fP コマンドは、現在のホストの指定したポート上にリモートオブジェクトレジストリを開始します。 -.RE - -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: rmiregistry +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Remote Method Invocation (RMI)ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "rmiregistry" "1" "2013年11月21日" "JDK 8" "Remote Method Invocation (RMI)" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +rmiregistry \- 現在のホストの指定したポート上にリモート・オブジェクト・レジストリを開始します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -rmiregistry [\fP\f4port\fP\f3] -.fl -\fP +\fIrmiregistry\fR [ \fIport\fR ] .fi - -.LP -.SH "説明" -.LP -.LP -\f3rmiregistry\fP コマンドは、現在のホストの指定 \f2port\fP 上にリモートオブジェクトレジストリを作成し、開始します。\f2port\fP の指定を省略した場合、レジストリはポート 1099 で開始します。\f3rmiregistry\fP コマンドに、出力機能はありません。通常、これはバックグラウンドで実行されます。例を示します。 -.LP -.LP -\f2rmiregistry&\fP -.LP -.LP -リモートオブジェクトレジストリは、ブートストラップのネームサービスです。同一ホストの RMI サーバーが、リモートオブジェクトを名前にバインドするために使用されます。次に、ローカルおよびリモートホストのクライアントはリモートオブジェクトを検索し、リモートメソッドの呼び出しを行います。 -.LP -.LP -レジストリは、一般的に、最初のリモートオブジェクトの位置を指定します。 そこで、アプリケーションはメソッドを呼び出す必要があります。代わって、そのオブジェクトはアプリケーション指定のサポートを提供し、他のオブジェクトを探します。 -.LP -.LP -\f2java.rmi.registry.LocateRegistry\fP クラスのメソッドは、ローカルホスト、またはローカルホストとポートで動作するレジストリを取得するために使用されます。 -.LP -.LP -\f2java.rmi.Naming\fP クラスの URL ベースのメソッドは、レジストリで動作し、任意のホストおよびローカルホスト上のリモートオブジェクトの検索に使用されます。リモートオブジェクトに単純な (文字列) 名前をバインドしたり、新しい名前をリバインド (古いバインドにオーバーライド) します。またリモートオブジェクトをアンバインドしたり、レジストリにバインドされた URL を出力します。 -.LP -.SH "オプション" -.LP -.RS 3 -.TP 3 -\-J -\f2\-J\fP の後ろに続くオプションを \f2java\fP インタプリタに引き渡します。 \f2java\fP オプションと組み合わせて使います (\-J と java オプションの間にスペースは入れない)。 +.if n \{\ +.RE +.\} +.PP +\fIport\fR +.RS 4 +リモート・オブジェクト・レジストリを開始する現在のホスト上の\fIport\fRの数。 +.RE +.SH "説明" +.PP +\fIrmiregistry\fRコマンドは、現在のホストの指定したポート上にリモート・オブジェクト・レジストリを作成し、開始します。portの指定を省略した場合、レジストリはポート1099で開始します。\fIrmiregistry\fRコマンドに、出力機能はありません。通常、これはバックグラウンドで実行されます。次に例を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +rmiregistry & +.fi +.if n \{\ +.RE +.\} +.PP +リモート・オブジェクト・レジストリは、ブートストラップのネーム・サービスです。同一ホストのRMIサーバーが、リモート・オブジェクトを名前にバインドするために使用されます。次に、ローカルおよびリモート・ホストのクライアントはリモート・オブジェクトを検索し、リモート・メソッドの呼出しを行います。 +.PP +レジストリは、一般的に、最初のリモート・オブジェクトの位置を指定します。そこで、アプリケーションはメソッドを呼び出す必要があります。その後、そのオブジェクトはアプリケーション指定のサポートを提供し、他のオブジェクトを探します。 +.PP +\fIjava\&.rmi\&.registry\&.LocateRegistry\fRクラスのメソッドは、ローカル・ホスト、またはローカル・ホストとポートで動作するレジストリを取得するために使用されます。 +.PP +\fIjava\&.rmi\&.Naming\fRクラスのURLベース・メソッドはレジストリに対して操作を実行し、任意のホストおよびローカル・ホストでのリモート・オブジェクトの検索に使用できます。単純名(文字列)をリモート・オブジェクトにバインドし、新しい名前をリモート・オブジェクトに再バインドし(古いバインドをオーバーライド)、リモート・オブジェクトをアンバインドし、レジストリにバインドされているURLをリスト表示します。 +.SH "オプション" +.PP +\-J +.RS 4 +Javaオプションとともに使用して、\fI\-J\fRの後ろに続くオプションをJavaインタプリタに引き渡します(\fI\-J\fRとオプションの間にスペースは入れません)。 .RE - -.LP .SH "関連項目" -.LP -java(1)、 -.na -\f2java.rmi.registry.LocateRegistry\fP @ -.fi -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 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +java(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI「java\&.rmi\&.registry\&.LocateRegistry」\fR(http://docs\&.oracle\&.com/javase/8/docs/api/java/rmi/registry/LocateRegistry\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fI「java\&.rmi\&.Naming class description」\fR(http://docs\&.oracle\&.com/javase/8/docs/api/java/rmi/Naming\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/schemagen.1 b/jdk/src/solaris/doc/sun/man/man1/ja/schemagen.1 index cb86632a14a..60deab8308d 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/schemagen.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/schemagen.1 @@ -1,127 +1,158 @@ -." 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. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please 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 schemagen 1 "07 May 2011" - -.LP -.SH "名前" -schemagen \- XML バインドのための Java(TM) アーキテクチャースキーマジェネレータ -.LP -.LP -\f3仕様バージョン:\fP 2.1 -.br -\f3実装バージョン:\fP 2.1.3 -.LP -.SH "schemagen の起動" -.LP -.LP -スキーマジェネレータを起動するには、ユーザーのプラットフォームの bin ディレクトリ内にある \f2適切な schemagen シェルスクリプト\fP を使用 \f2します\fP 。 -.LP -.LP -現在のスキーマジェネレータは、Java ソースファイルとクラスファイルのいずれも処理できます。 -.LP -.LP -また、スキーマジェネレータを実行するための Ant タスクも用意されています。 -.na -\f2schemagen を Ant とともに使用する\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlための手順を参照してください。 -.LP +'\" t +.\" Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: schemagen +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java Webサービス・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "schemagen" "1" "2013年11月21日" "JDK 8" "Java Webサービス・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +schemagen \- Javaクラス内で参照されているネームスペースごとにスキーマを生成します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -% schemagen.sh Foo.java Bar.java ... -.fl -Note: Writing schema1.xsd -.fl -\fP +\fIschemagen\fR [ \fIoptions\fR ] \fIjava\-files\fR .fi - -.LP -.LP -ユーザーの Java ソース/クラスがほかのクラスを参照している場合、システムの 環境変数経由でそれらのクラスにアクセスできるようになっているか、あるいは \f2\-classpath\fP/\f2\-cp\fP を使ってそれらのクラスをツールに指定する必要があります。そうしないと、スキーマの生成時にエラーが発生します。 -.LP -.SS -コマンド行オプション -.LP -.nf -\f3 -.fl -使用方法: schemagen [\-options ...] <java files> -.fl - -.fl -オプション: -.fl - \-d <path> : プロセッサおよび javac によって生成されるクラスファイルの格納場所を指定します。 -.fl - \-cp <path> : ユーザー指定ファイルの検索場所を指定します。 -.fl - \-classpath <path> : ユーザー指定ファイルの検索場所を指定します。 -.fl - \-encoding <encoding> : apt/javac 呼び出しに使用されるエンコーディングを指定します。 -.fl - -.fl - \-episode <file> : 個別コンパイル用のエピソードファイルを生成します。 -.fl - \-version : バージョン情報を表示します。 -.fl - \-help : この使用方法に関するメッセージを表示します。 -.fl -\fP -.fi - -.LP -.SH "生成されるリソースファイル" -.LP -.LP -現在のスキーマジェネレータは単純に、Java クラス内で参照されている名前空間ごとに 1 つのスキーマファイルを作成します。生成されるスキーマファイルの名前を制御する方法は、現時点では存在しません。そうした目的には、 -.na -\f2スキーマジェネレータの ant タスク\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.htmlを使用してください。 -.LP -.SH "名前" -関連項目 -.LP -.RS 3 -.TP 2 -o -スキーマジェネレータの実行 (schemagen): [ -.na -\f2コマンド行の命令\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagen.html、 -.na -\f2SchemaGen を Ant とともに使用する\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/schemagenTask.html] -.TP 2 -o -.na -\f2XML バインドのための JavaTM アーキテクチャー (JAXB)\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/xml/jaxb/index.html +.if n \{\ .RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIjava\-files\fR +.RS 4 +処理するJavaクラス・ファイル。 +.RE +.SH "説明" +.PP +スキーマ・ジェネレータは、Javaクラス内で参照されているネームスペースごとに1つのスキーマ・ファイルを作成します。現在、生成されるスキーマ・ファイルの名前は制御できません。スキーマ・ファイル名を制御する場合は、http://jaxb\&.java\&.net/nonav/2\&.2\&.3u1/docs/schemagenTask\&.htmlにある +「Using SchemaGen with Ant」を参照してください +.PP +プラットフォームのbinディレクトリにある適切な\fIschemagen\fRシェル・スクリプトを使用して、スキーマ・ジェネレータを起動します。現在のスキーマ・ジェネレータは、Javaソース・ファイルとクラス・ファイルのいずれも処理できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +schemagen\&.sh Foo\&.java Bar\&.java \&.\&.\&. +Note: Writing schema1\&.xsd +.fi +.if n \{\ +.RE +.\} +.PP +javaファイルが他のクラスを参照している場合、それらのクラスにシステム\fICLASSPATH\fR環境変数でアクセスできる必要があります。または、クラス・パス・オプションを指定して\fIschemagen\fRコマンド・ラインで指定する必要があります。オプションを参照してください。参照されるファイルにアクセスできない、または参照されるファイルが指定されていない場合、スキーマの生成時にエラーが表示されます。 +.SH "オプション" +.PP +\-d \fIpath\fR +.RS 4 +\fIschemagen\fRコマンドがプロセッサ生成および\fIjavac\fR生成クラス・ファイルを配置する場所。 +.RE +.PP +\-cp \fIpath\fR +.RS 4 +\fIschemagen\fRコマンドがユーザー指定ファイルを配置する場所。 +.RE +.PP +\-classpath \fIpath\fR +.RS 4 +\fIschemagen\fRコマンドがユーザー指定ファイルを配置する場所。 +.RE +.PP +\-encoding \fIencoding\fR +.RS 4 +\fIapt\fRまたは\fIjavac\fRコマンドの呼出しに使用するエンコーディングを指定します。 +.RE +.PP +\-episode \fIfile\fR +.RS 4 +コンパイルごとにエピソード・ファイルを生成します。 +.RE +.PP +\-version +.RS 4 +リリース情報を表示します。 +.RE +.PP +\-help +.RS 4 +ヘルプ・メッセージを表示します。 +.RE +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Using SchemaGen with Ant -.LP - +(http://jaxb\&.java\&.net/nonav/2\&.2\&.3u1/docs/schemagenTask\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Java Architecture for XML Binding (JAXB) + +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/xml/jaxb/index\&.html) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/serialver.1 b/jdk/src/solaris/doc/sun/man/man1/ja/serialver.1 index e06b12e9de1..e527c1694f4 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/serialver.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/serialver.1 @@ -1,97 +1,144 @@ -." 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 -." 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 serialver 1 "07 May 2011" - -.LP -.SH "名前" -serialver \- シリアルバージョンコマンド -.LP -.LP -\f3serialver\fP コマンドは \f2serialVersionUID\fP を返します。 -.LP -.SH "形式" -.LP +'\" t +.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: serialver +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Remote Method Invocation (RMI)ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "serialver" "1" "2013年11月21日" "JDK 8" "Remote Method Invocation (RMI)" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +serialver \- 指定したクラスのシリアル・バージョンUIDを戻します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3serialver\fP [ options ] [ classnames ] -.fl +\fIserialver\fR [ \fIoptions\fR ] [ \fIclassnames\fR ] .fi - -.LP -.RS 3 -.TP 3 -options -このドキュメントで説明されているコマンド行オプションです。 -.TP 3 -classnames -1 つ以上のクラス名です。 +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIclassnames\fR +.RS 4 +\fIserialVersionUID\fRを戻すクラスです。 .RE - -.LP .SH "説明" -.LP -.LP -\f3serialver\fP は、1 つ以上のクラスの \f2serialVersionUID\fP を、展開しているクラスへコピーするのに適した形式で返します。引数を指定しないで呼び出すと、使用方法が表示されます。 -.LP +.PP +\fIserialver\fRコマンドは、1つ以上のクラスの\fIserialVersionUID\fRを、展開しているクラスへコピーするのに適した形式で返します。引数なしで呼び出された場合、\fIserialver\fRコマンドは使用率行を出力します。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-classpath <: で区切られたディレクトリと zip や jar ファイル> -アプリケーションのクラスおよびリソースの検索パスを設定します。 +.PP +\-classpath \fIpath\-files\fR +.RS 4 +アプリケーションのクラスおよびリソースの検索パスを設定します。クラスとリソースをコロン(:)で区切ります。 .RE - -.LP -.RS 3 -.TP 3 -\-show -簡単なユーザーインタフェースを表示します。完全指定のクラス名を入力して、Enter キーか「Show」ボタンを押し、シリアルバージョン UID を表示します。 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 +.PP +\-show +.RS 4 +簡単なユーザー・インタフェースを表示します。完全指定のクラス名を入力して、Enterキーか「表示」ボタンを押し、\fIserialVersionUID\fRを表示します。 .RE - -.LP -.SH "注" -.LP -.LP -\f3serialver\fP コマンドは、指定されたクラスをその仮想マシン内に読み込んで初期化しますが、デフォルトではセキュリティーマネージャーの設定は行いません。信頼できないクラスとともに \f3serialver\fP を実行する場合には、次のオプションを使ってセキュリティーマネージャーを設定できます。 -.LP -.LP -\f2\-J\-Djava.security.manager\fP -.LP -.LP -また、必要であれば、次のオプションを使ってセキュリティーポリシーを指定できます。 -.LP -.LP -\f2\-J\-Djava.security.policy=<policy file>\fP -.LP -.SH "関連項目" -.LP -.LP -.na -\f2java.io.ObjectStreamClass\fP @ +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンに\fIoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "注意" +.PP +\fIserialver\fRコマンドは、指定されたクラスをその仮想マシン内に読み込んで初期化しますが、デフォルトではセキュリティ・マネージャの設定は行いません。信頼できないクラスとともに\fIserialver\fRコマンドを実行する場合には、次のオプションを使用してセキュリティ・マネージャを設定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-J\-Djava\&.security\&.manager .fi -http://java.sun.com/javase/6/docs/api/java/io/ObjectStreamClass.html -.LP - +.if n \{\ +.RE +.\} +.PP +必要であれば、次のオプションを使用してセキュリティ・ポリシーを指定できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +\-J\-Djava\&.security\&.policy=<policy file> +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +policytool(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://docs\&.oracle\&.com/javase/8/docs/api/java/io/ObjectStreamClass\&.htmlにある +\fIjava\&.io\&.ObjectStream\fRクラス記述 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/servertool.1 b/jdk/src/solaris/doc/sun/man/man1/ja/servertool.1 index 2e8fc6d97e3..71ab6b65ed1 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/servertool.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/servertool.1 @@ -1,113 +1,199 @@ -." 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 -." 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 servertool 1 "07 May 2011" - -.LP -.SH "名前" -servertool \- Java(TM) IDL サーバーツール -.LP -\f3servertool\fP はアプリケーションプログラマが、持続サーバーの登録、登録解除、起動、および停止を行うためのコマンド行インタフェースを提供します。 -.SH "形式" -.LP +'\" t +.\" Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: servertool +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java IDLおよびRMI-IIOPツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "servertool" "1" "2013年11月21日" "JDK 8" "Java IDLおよびRMI-IIOPツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +servertool \- 開発者が永続サーバーを登録、登録解除、起動、停止するための使いやすいユーザー・インタフェースを提供します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -servertool \-ORBInitialPort \fP\f4nameserverport\fP\f3 \fP\f3options\fP\f3 [ \fP\f3commands\fP\f3 ] -.fl -\fP +\fIservertool\fR \-ORBInitialPort \fInameserverport\fR [ \fIoptions\fR ] [ \fIcommands \fR] .fi - -.LP -.LP -コマンドを入力しないで \f2servertool\fP を起動すると、コマンド行ツールとして \f2servertool >\fP プロンプトが表示されます。\f2servertool >\fP プロンプトにコマンドを入力します。 -.LP -.LP -コマンドを入力して \f2servertool\fP を起動すると、Java IDL サーバーツールが起動し、コマンドを実行して終了します。 -.LP -.LP -\f2\-ORBInitialPort\fP \f2nameserverport\fP オプションは\f3必須\fPです。 \f2nameserverport\fP の値には、\f2orbd\fP が実行され、着信要求を待機しているポートを指定する必要があります。Solaris ソフトウェアを使用する場合、1024 より小さいポート上でプロセスを開始するには、root ユーザーになる必要があります。このため、\f2nameserverport\fPとして 1024 以上のポート番号を使用することをお勧めします。 -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +commands +.RS 4 +コマンドライン・コマンド。コマンドを参照してください。 +.RE +.PP +\fIservertool\fR\fIservertool >\fR\fIservertool >\fR .SH "説明" -.LP -.LP -\f2servertool\fP はアプリケーションプログラマが、持続サーバーの登録、登録解除、起動、および停止を行うためのコマンド行インタフェースを提供します。そのほかに、サーバーに関するさまざまな統計情報を取得するためのコマンドも提供します。 -.LP +.PP +\fIservertool\fRコマンドは、開発者が永続サーバーを登録、登録解除、起動、停止するためのコマンドライン・インタフェースを提供します。コマンドライン・コマンドを使用すると、サーバーに関する様々な統計情報を取得できます。コマンドを参照してください。 .SH "オプション" -.LP -.RS 3 -.TP 3 -\-ORBInitialHost nameserverhost -ネームサーバーが、実行され、着信要求を待機しているホストマシンを指定します。このオプションを指定しない場合、\f2nameserverhost\fP はデフォルトで \f2localhost\fP に設定されます。\f2orbd\fP と \f2servertool\fP が異なるマシン上で実行されている場合は、\f2orbd\fP が実行されているホストの名前と IP アドレスを指定する必要があります。 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って背後の実行環境にオプションを渡すことはよく行われています。 +.PP +\-ORBInitialHost \fInameserverhost\fR +.RS 4 +このオプションは必須です。ネーム・サーバーが実行され、着信リクエストをリスニングするホスト・マシンを指定します。\fInameserverhost\fR値は、\fIorb\fRが実行され、リクエストをリスニングしているポートを指定する必要があります。このオプションを指定しない場合、値はデフォルトで\fIlocalhost\fRに設定されます。\fIorbd\fRと\fIservertool\fRが異なるマシン上で実行されている場合は、\fIorbd\fRが実行されているホストの名前またはIPアドレスを指定する必要があります。 +.sp +\fB注意:\fR +Oracle Solarisでは、1024より小さいポート上でプロセスを開始するには、rootユーザーになる必要があります。\fInameserverport\fR値には、1024以上のポート番号を使用することをお薦めします。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンに\fIoption\fRを渡します。\fIoption\fRには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 .RE - -.LP .SH "コマンド" -.LP -.RS 3 -.TP 3 -register \-server\ <server\ class\ name> \ \-classpath\ <classpath\ to\ server> [\ \-applicationName\ <application\ name> \-args\ <args\ to\ server> \-vmargs\ <flags\ to\ be\ passed\ to\ Java\ VM> \ ] -Object Request Broker Daemon (ORBD) に新規持続サーバーを登録します。サーバーが未登録の場合、登録して起動します。このコマンドによって、\f2\-server\fP オプションで識別されるサーバーのメインクラス内でインストールメソッドが呼び出されます。このインストールメソッドは、\f2public static void install(org.omg.CORBA.ORB)\fP になっている必要があります。インストールメソッドは、オプションであり、データベーススキーマの作成などの独自のサーバーインストール動作を開発者が指定できます。 -.TP 3 -unregister \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -サーバー ID またはアプリケーション名を使用して、ORBD のサーバーの登録を解除します。このコマンドによって、\f2\-server\fP オプションで識別されるサーバーのメインクラス内でアンインストールメソッドが呼び出されます。このアンインストールメソッドは、\f2public static void uninstall(org.omg.CORBA.ORB)\fP になっている必要があります。アンインストールメソッドは、オプションであり、インストールメソッドの動作の取り消しなどの独自のサーバーアンインストール動作を開発者が指定できます。 -.TP 3 -getserverid \-applicationName\ <application\ name> -アプリケーションに関連付けられているサーバー ID を返します。 -.TP 3 -list -ORBD に登録されているすべての持続サーバーに関する情報を一覧表示します。 -.TP 3 -listappnames -現在 ORBD に登録されているすべてのサーバーのアプリケーション名を一覧表示します。 -.TP 3 -listactive -ORDB によって起動され、現在実行されているすべての持続サーバーに関する情報を一覧表示します。 -.TP 3 -locate \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> [\-endpointType\ <endpointType>\ ] -登録されたサーバーで作成したすべての ORB の特定の型について端点 (ポート) を検出します。サーバーが実行されていない場合、起動されます。端点の型が指定されていない場合、サーバーの ORB ごとに関連付けられている plain 型 または non\-protected 型の端点が返されます。 -.TP 3 -locateperorb \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> [\-orbid\ <ORB\ name>\ ] -登録されたサーバーの特定の ORB で登録された端点 (ポート) を検出します。サーバーが実行されていない場合、起動されます。\f2orbid\fP が指定されていない場合は、デフォルト値の「""」が\f2orbid\fPに割り当てられます。ORB が空文字列の \f2orbid\fP で作成されている場合、登録したポートがすべて返されます。 -.TP 3 -orblist \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -サーバー上に定義された ORB の ORBId を一覧表示します。ORBId はサーバーで作成された ORB の文字列名です。サーバーが実行されていない場合、起動されます。 -.TP 3 -shutdown \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -ORBD に登録されたアクティブなサーバーを停止します。このコマンドの実行中に、\f2\-serverid\fP パラメータまたは \f2\-applicationName\fP パラメータで指定されたクラス内に定義された \f2shutdown()\fP メソッドも呼び出されてサーバープロセスを正しく停止します。 -.TP 3 -startup \-serverid\ <server\ id\ >\ | \-applicationName\ <application\ name> -ORBD に登録されたサーバーを起動します。サーバーが実行されていない場合は、このコマンドでサーバーを起動します。サーバーがすでに実行されている場合は、ユーザーにエラーメッセージが返されます。 -.TP 3 -help -サーバーがサーバーツールで使用できるすべてのコマンドを表示します。 -.TP 3 -quit -サーバーツールを終了します。 +.PP +\fIservertool\fRコマンドは、コマンドライン・コマンドを使用して、または使用せずに起動できます。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIservertool\fRの起動時にコマンドを指定しなかった場合、コマンドライン・ツールにコマンド入力を求める\fIservertool\fRプロンプトが表示されます: +\fIservertool >\fR。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fIservertool\fRの起動時にコマンドを指定した場合、Java IDL Server Toolが起動してコマンドを実行し、終了します。 +.RE +.PP +register \-server \fIserver\-class\-name\fR \-classpath \fIclasspath\-to\-server\fR [ \-applicationName \fIapplication\-name\fR \-args \fIargs\-to\-server\fR \-vmargs \fIflags\-for\-JVM\fR ] +.RS 4 +Object Request Broker Daemon (ORBD)に新規永続サーバーを登録します。サーバーが未登録の場合、登録してアクティブ化します。このコマンドによって、\fI\-server\fRオプションで識別されるサーバーの\fIメイン\fR・クラス内でインストール・メソッドが呼び出されます。このインストール・メソッドは、\fIpublic static void install(org\&.omg\&.CORBA\&.ORB)\fRになっている必要があります。インストール・メソッドはオプションであり、開発者はデータベース・スキーマの作成など独自のサーバー・インストール動作を指定できます。 +.RE +.PP +unregister \-serverid \fIserver\-id\fR | \-applicationName \fIapplication\-name\fR +.RS 4 +サーバーIDまたはアプリケーション名で、サーバーをORBDから登録解除します。このコマンドによって、\fI\-server\fRオプションで識別されるサーバーの\fIメイン\fR・クラス内でアンインストール・メソッドが呼び出されます。 +\fIuninstall\fRメソッドは、\fIpublic static void uninstall(org\&.omg\&.CORBA\&.ORB)\fRになっている必要があります。\fIuninstall\fRメソッドはオプションであり、開発者は\fIinstall\fRメソッドの動作の取消など、独自のサーバー・アンインストール動作を指定できます。 +.RE +.PP +getserverid \-applicationName \fIapplication\-name\fR +.RS 4 +\fIapplication\-name\fR値に対応するサーバーIDを返します。 +.RE +.PP +list +.RS 4 +ORBDに登録されているすべての永続サーバーに関する情報を一覧表示します。 +.RE +.PP +listappnames +.RS 4 +現在ORBDに登録されているすべてのサーバーのアプリケーション名を一覧表示します。 +.RE +.PP +listactive +.RS 4 +ORBDによって起動され、現在実行されているすべての永続サーバーに関する情報を一覧表示します。 +.RE +.PP +locate \-serverid \fIserver\-id\fR | \-applicationName \fIapplication\-name\fR [ \-endpointType \fIendpointType\fR ] +.RS 4 +登録されたサーバーで作成したすべてのORBの特定のタイプについてエンドポイント(ポート)を検出します。サーバーが実行されていない場合、アクティブ化されます。\fIendpointType\fR値が指定されていない場合、サーバーのORBごとに関連付けられているplainタイプまたはnon\-protectedタイプのエンドポイントが返されます。 +.RE +.PP +locateperorb \-serverid \fIserver\-id\fR | \-applicationName \fIapplication\-name\fR [ \-orbid \fIORB\-name\fR ] +.RS 4 +登録されたサーバーの特定のObject Request Broker (ORB)で登録されたエンドポイント(ポート)を検出します。サーバーが実行されていない場合、アクティブ化されます。\fIorbid\fRが指定されていない場合、デフォルト値の\fI""\fRが\fIorbid\fRに割り当てられます。ORBが空文字列の\fIorbid\fRで作成されている場合、登録したポートがすべて返されます。 +.RE +.PP +orblist \-serverid \fIserver\-id\fR | \-applicationName \fIapplication\-name\fR +.RS 4 +サーバー上に定義されたORBの\fIORBId\fRを一覧表示します。\fIORBId\fRはサーバーで作成されたORBの文字列名です。サーバーが実行されていない場合、アクティブ化されます。 +.RE +.PP +shutdown \-serverid \fIserver\-id\fR | \-applicationName application\-name +.RS 4 +ORBDに登録されたアクティブなサーバーを停止します。このコマンドの実行中に、\fI\-serverid\fRパラメータまたは\fI\-applicationName\fRパラメータで指定されたクラス内に定義された\fIshutdown\fRメソッドも呼び出されてサーバー・プロセスを停止します。 +.RE +.PP +startup \-serverid \fIserver\-id\fR | \-applicationName application\-name +.RS 4 +ORBDに登録されたサーバーを起動またはアクティブ化します。サーバーが実行されていない場合、このコマンドがサーバーを起動します。サーバーがすでに実行されている場合は、エラー・メッセージが表示されます。 +.RE +.PP +help +.RS 4 +\fIservertool\fRコマンドを介してサーバーが利用できるすべてのコマンドをリストします。 +.RE +.PP +quit +.RS 4 +\fIservertool\fRコマンドを終了します。 .RE - -.LP .SH "関連項目" -.LP -orbd(1) +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +orbd(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/tnameserv.1 b/jdk/src/solaris/doc/sun/man/man1/ja/tnameserv.1 index 229c3af8300..7a924315f3b 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/tnameserv.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/tnameserv.1 @@ -1,495 +1,425 @@ -." Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." under the terms of the GNU General Public License version 2 only, as -." published by the Free Software Foundation. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -." or visit www.oracle.com if you need additional information or have any -." questions. -." -.TH tnameserv 1 "07 May 2011" - -.LP -.SH "名前" -Java IDL: 一時ネームサービス \- \f2tnameserv\fP -.LP -.LP -このドキュメントでは、Java IDL 一時ネームサービス \f2tnameserv\fP の使用方法について説明します。Java IDL には、Object Request Broker Daemon (ORBD) も含まれています。ORBD は、ブートストラップサービス、一時ネームサービス、\f3持続\fPネームサービス、およびサーバーマネージャーを含むデーモンプロセスです。Java IDL のすべてのチュートリアルでは ORBD を使用していますが、一時ネームサービスを使用する例では、\f2orbd\fP の代わりに \f2tnameserv\fP を使用できます。\f2orbd\fP ツールの詳細については、orbd の orbd(1)または -.na -\f2ORBD に含まれる Java IDL ネームサービス\fP @ +'\" t +.\" Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: tnameserv +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java IDLおよびRMI-IIOPツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "tnameserv" "1" "2013年11月21日" "JDK 8" "Java IDLおよびRMI-IIOPツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +tnameserv \- インタフェース定義言語(IDL)。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fItnameserve\fR \fI\-ORBInitialPort\fR [ \fInameserverport\fR ] .fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.htmlに関するトピックを参照してください。 -.LP -.LP -ここでは、以下の項目について説明します。 -.LP -.RS 3 -.TP 2 -o -Java\ IDL 一時ネームサービス -.TP 2 -o -Java\ IDL 一時ネームサービスの起動 -.TP 2 -o -Java\ IDL 一時ネームサービスの停止 -.TP 2 -o -サンプルクライアント: 名前空間へのオブジェクトの追加 -.TP 2 -o -サンプルクライアント: 名前空間のブラウズ +.if n \{\ .RE - -.LP -.SH "Java IDL 一時ネームサービス" -.LP -.LP -CORBA の COS (Common Object Services) ネームサービスは、ファイルシステムがファイルに対してディレクトリ構造を提供しているのと同じように、オブジェクト参照に対してツリー構造のディレクトリを提供します。Java IDL の一時ネームサービスである \f2tnameserv\fP は、COS ネームサービスの仕様を単純な形で実装したものです。 -.LP -.LP -オブジェクト参照は名前空間に名前で格納され、オブジェクト参照と名前のペアは、それぞれ「ネームバインディング」と呼ばれます。ネームバインディングは「ネーミングコンテキスト」に組み込むことができます。ネーミングコンテキストはそれ自体がネームバインディングであり、ファイルシステムのサブディレクトリと同じ編成機能を持ちます。すべてのバインディングは「初期ネーミングコンテキスト」に格納されます。名前空間において、初期ネーミングコンテキストは唯一の持続的バインディングです。それ以外のネーミングコンテキストは、Java IDL のネーミングサービスプロセスが停止し、再起動されると失われます。 -.LP -.LP -アプレットまたはアプリケーションから COS ネームサービスを使用するためには、その ORB はネームサービスが動作しているホストのポートを知っているか、そのネームサービスの文字列化された初期ネーミングコンテキストにアクセスできなければなりません。ネームサービスは、Java IDL のネームサービスでもその他の COS 準拠のネームサービスでもかまいません。 -.LP -.SH "Java IDL 一時ネームサービスの起動" -.LP -.LP -Java IDL ネームサービスは、ネームサービスを使用するアプリケーションまたはアプレットより前に起動しておく必要があります。Java\ IDL 製品をインストールすると、Java\ IDL ネームサービスを起動するスクリプト (Solaris: \f2tnameserv\fP) または実行可能ファイル (Windows NT: \f2tnameserv.exe\fP) が作成されます。バックグラウンドで動作するように、ネームサービスを起動してください。 -.LP -.LP -特に指定しない場合、Java IDL ネームサービスは、ORB の \f2resolve_initial_references()\fP メソッドと \f2list_initial_references()\fP メソッドの実装に使用するブートストラッププロトコルに対してポート 900 で待機します。 -.LP -.nf -\f3 -.fl - tnameserv \-ORBInitialPort \fP\f4nameserverport\fP\f3& -.fl -\fP -.fi - -.LP -.LP -ネームサーバーポートを指定しない場合、デフォルトでポート 900 が使用されます。Solaris ソフトウェアの実行時は、1024 より小さいポートでプロセスを開始する場合、root ユーザーになる必要があります。このため、1024 または 1024 よりも大きいポート番号を使用することをお勧めします。1050 のように別のポートを指定し、ネームサービスをバックグラウンドで実行するには、UNIX コマンドシェルで次のように入力します。 -.LP -.nf -\f3 -.fl - tnameserv \-ORBInitialPort 1050& -.fl -\fP -.fi - -.LP -.LP -Windows の MS\-DOS システムプロンプトでは、次のように入力します。 -.LP -.nf -\f3 -.fl - start tnameserv \-ORBInitialPort 1050 -.fl -\fP -.fi - -.LP -.LP -ネームサーバーのクライアントには、新しいポート番号を知らせる必要があります。このため、ORB オブジェクトの作成時に \f2org.omg.CORBA.ORBInitialPort\fP プロパティーに新しいポート番号を設定します。 -.LP -.SS -異なるマシン上でのクライアントとサーバーの実行 -.LP -.LP -Java IDL と RMI\-IIOP のほとんどのチュートリアルでは、ネームサービス、サーバー、およびクライアントはすべて開発用のマシン上で実行されます。実際に配備する場合には、クライアントとサーバーを、ネームサービスとは異なるホスト上で実行することが多くなります。 -.LP -.LP -クライアントとサーバーがネームサービスを見つけるには、クライアントとサーバーが、ネームサービスが実行されているポートの番号とホストを認識している必要があります。そのためには、クライアントとサーバーのファイル内の \f2org.omg.CORBA.ORBInitialPort\fP プロパティーと \f2org.omg.CORBA.ORBInitialHost\fP プロパティーをネームサービスが実行されているポートの番号とマシンの名前に設定します。この例は、 -.na -\f2「RMI\-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 を使用して、クライアントとサーバーに対してネームサービスを探す場所を指定することもできます。 -.na -\f2「Java IDL: 2 台のマシン上で実行する Hello World プログラム」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/idl/tutorial/jidl2machines.html には、コマンド行オプションを使用して指定する方法が示されています。 -.LP -.LP -たとえば、一時ネームサービス \f2tnameserv\fP が、ホスト \f2nameserverhost\fP のポート 1050 上で実行されているとします。さらに、クライアントがホスト \f2clienthost\fP 上で実行され、サーバーはホスト \f2serverhost\fP 上で実行されているとします。 -.LP -.RS 3 -.TP 2 -o -次のように、ホスト \f2nameserverhost\fP 上で \f2tnameserv\fP を起動します。 -.nf -\f3 -.fl - tnameserv \-ORBInitialPort 1050 -.fl - -.fl -\fP -.fi -.TP 2 -o -\f2serverhost\fP 上でサーバーを起動します。 -.nf -\f3 -.fl - java Server \-ORBInitialPort 1050 \-ORBInitialHost nameserverhost -.fl -\fP -.fi -.TP 2 -o -\f2clienthost\fP 上でクライアントを起動します。 -.nf -\f3 -.fl - java Client \-ORBInitialPort 1050 \-ORBInitialHost nameserverhost -.fl -\fP -.fi +.\} +.PP +\-ORBInitialPort \fInameserverport\fR +.RS 4 +ネーミング・サービスがORBの\fIresolve_initial_references\fRメソッドと\fIlist_initial_references\fRメソッドの実装に使用するブートストラップ・プロトコルをリスニングする初期ポートです。 .RE - -.LP -.SS -\-J オプション -.LP -このコマンド行オプションは、\f2tnameserve\fP とともに使用できます。 -.RS 3 -.TP 3 -\-Joption -Java 仮想マシンに \f2option\fP を渡します。\f2option\fP には、java(1)のリファレンスページに記載されているオプションを 1 つ指定します。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。\f3\-J\fP を使って背後の実行環境にオプションを渡すことはよく行われています。 +.SH "説明" +.PP +Java IDLには、Object Request Broker Daemon (ORBD)が含まれます。ORBDは、ブートストラップ・サービス、一時ネーミング・サービス、永続ネーミング・サービスおよびサーバー・マネージャを含むデーモン・プロセスです。Java IDLのすべてのチュートリアルではORBDを使用していますが、一時ネーミング・サービスを使用する例では、\fIorbd\fRのかわりに\fItnameserv\fRを使用できます。 +.PP +http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/jidlNaming\&.htmlにある +orbd(1)または「Naming Service」を参照してください。 +.PP +CORBAのCOS (Common Object Services)ネーミング・サービスは、ファイル・システムがファイルに対してディレクトリ構造を提供しているのと同じように、オブジェクト参照に対してツリー構造のディレクトリを提供します。Java IDLの一時ネーム・サービスである\fItnameserv\fRは、COSネーム・サービスの仕様を単純な形で実装したものです。 +.PP +オブジェクト参照はネームスペースに名前で格納され、オブジェクト参照と名前のペアは、それぞれネーム・バインディングと呼ばれます。ネーム・バインディングはネーミング・コンテキストに組み込むことができます。ネーミング・コンテキストはネーム・バインディングであり、ファイル・システムのサブディレクトリと同じ編成機能を持ちます。すべてのバインディングは初期ネーミング・コンテキストの下に格納されます。初期ネーミング・コンテキストは、ネームスペースの唯一の永続バインディングです。Java IDLネーミング・サービス・プロセスを停止して再起動すると、残りのネームスペースは失われます。 +.PP +アプレットまたはアプリケーションからCOSネーミング・サービスを使用するためには、そのORBがネーミング・サービスが動作しているホストのポートを知っているか、そのネーミング・サービスの初期ネーミング・コンテキスト文字列にアクセスできる必要があります。ネーム・サービスは、Java IDLのネーム・サービスでもその他のCOS準拠のネーム・サービスでもかまいません。 +.SS "ネーミング・サービスの起動" +.PP +Java IDLネーム・サービスは、ネーム・サービスを使用するアプリケーションまたはアプレットより前に起動しておく必要があります。Java IDL製品をインストールすると、Java IDLネーミング・サービスを起動するスクリプト(Oracle Solaris: +\fItnameserv\fR)または実行可能ファイル(Windows: +\fItnameserv\&.exe\fR)が作成されます。バックグラウンドで動作するように、ネーム・サービスを起動してください。 +.PP +特に指定しない場合、Java IDLネーミング・サービスは、ORBの\fIresolve_initial_references\fRメソッドと\fIlist_initial_references methods\fRメソッドの実装に使用するブートストラップ・プロトコルに対してポート900でリスニングします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +tnameserv \-ORBInitialPort nameserverport& +.fi +.if n \{\ .RE - -.LP -.SH "Java IDL 一時ネームサービスの停止" -.LP -.LP -Java IDL ネームサービスを停止するには、Unix の場合は、\f2kill\fP などのオペレーティングシステムのコマンドを使い、Windows の場合は、\f2Ctrl\-C\fP を使います。ネームサービスを明示的に停止するまでは、呼び出し待機状態が続きます。なお、サービスを終了させると、Java IDL ネームサービスに登録されている名前は失われます。 -.LP -.SH "サンプルクライアント: 名前空間へのオブジェクトの追加" -.LP -.LP -次に示すサンプルプログラムは、名前を名前空間に追加する方法を示すものです。このサンプルプログラムは、このままの状態で完全に動作する一時ネームサービスクライアントで、次のような単純なツリーを作成するものです。 -.LP +.\} +.PP +ネーム・サーバー・ポートを指定しない場合、デフォルトでポート900が使用されます。Oracle Solarisソフトウェアの実行時、1024より小さいポートでプロセスを開始する場合は、rootユーザーになる必要があります。このため、1024以上のポート番号を使用することをお薦めします。1050のように別のポートを指定し、ネーム・サービスをバックグラウンドで実行するには、UNIXコマンド・シェルで次のように入力します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3 -.fl - \fP\f4初期\fP\f3 -.fl - \fP\f4ネーミングコンテキスト\fP\f3 -.fl - / \\ -.fl - / \\ -.fl - plans \fP\f4Personal\fP\f3 -.fl - / \\ -.fl - / \\ -.fl - calendar schedule\fP -.fl +tnameserv \-ORBInitialPort 1050& .fi - -.LP -.LP -この例で、\f3plans\fP はオブジェクト参照、\f3Personal\fP は \f3calendar\fP と \f3schedule\fP の 2 つのオブジェクト参照を含むネーミングコンテキストです。 -.LP +.if n \{\ +.RE +.\} +.PP +WindowsのMS\-DOSシステム・プロンプトでは、次のように入力します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -import java.util.Properties; -.fl -import org.omg.CORBA.*; -.fl -import org.omg.CosNaming.*; -.fl - -.fl -public class NameClient -.fl -{ -.fl - public static void main(String args[]) -.fl - { -.fl - try { -.fl -\fP +start tnameserv \-ORBInitialPort 1050 .fi - -.LP -前述の「Java IDL 一時ネームサービスの起動」で、ネームサーバーはポート 1050 を使用して起動しました。次のコードで、このポート番号をクライアントシステムに知らせます。 +.if n \{\ +.RE +.\} +.PP +ネーム・サーバーのクライアントには、新しいポート番号を知らせる必要があります。これを行うには、ORBオブジェクトの作成時に\fIorg\&.omg\&.CORBA\&.ORBInitialPort\fRプロパティに新しいポート番号を設定します。 +.SS "異なるホスト上でのサーバーとクライアントの実行" +.PP +Java IDLとRMI\-IIOPのほとんどのチュートリアルでは、ネーミング・サービス、サーバーおよびクライアントはすべて開発用のマシン上で実行されます。実際にデプロイメントする場合には、クライアントとサーバーを、ネーミング・サービスとは異なるホスト・マシン上で実行することが多くなります。 +.PP +クライアントとサーバーがネーム・サービスを見つけるには、クライアントとサーバーが、ネーム・サービスが実行されているポートの番号とホストを認識している必要があります。そのためには、クライアントとサーバーのファイル内の\fIorg\&.omg\&.CORBA\&.ORBInitialPort\fRプロパティと\fIorg\&.omg\&.CORBA\&.ORBInitialHost\fRプロパティをネーム・サービスが実行されているポートの番号とマシンの名前に設定します。この例は、「Getting Started Using RMI\-IIOP」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/rmi\-iiop/rmiiiopexample\&.html)に示されています +.PP +コマンドライン・オプション\fI\-ORBInitialPort nameserverport#\fRと\fI\-ORBInitialHost nameserverhostname\fRを使用して、クライアントとサーバーに対してネーミング・サービスを探す場所を指定することもできます。コマンドライン・オプションを使用してこれを行う方法の1つの例は、http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/tutorial/jidl2machines\&.htmlの「Java IDL: The Hello World Example on Two Machines」 +を参照してください +.PP +たとえば、一時ネーム・サービス\fItnameserv\fRが、ホスト\fInameserverhost\fRのポート1050上で実行されているとします。さらに、クライアントがホスト\fIclienthost\fR上で実行され、サーバーはホスト\fIserverhost\fR上で実行されているとします。 +.PP +ホスト\fInameserverhost\fR上で\fItnameserv\fRを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - Properties props = new Properties(); -.fl - props.put("org.omg.CORBA.ORBInitialPort", "1050"); -.fl - ORB orb = ORB.init(args, props); -.fl - -.fl -\fP +tnameserv \-ORBInitialPort 1050 .fi - -.LP -次のコードでは、初期ネーミングコンテキストを取得し、それを \f3ctx\fP に代入します。2 行目では、\f3ctx\fP をダミーのオブジェクト参照 \f3objref\fP にコピーします。この objref には、あとでさまざまな名前を割り当てて名前空間に追加します。 +.if n \{\ +.RE +.\} +.PP +\fIserverhost\fR上でサーバーを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - NamingContext ctx = -.fl -NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); -.fl - NamingContext objref = ctx; -.fl - -.fl -\fP +java Server \-ORBInitialPort 1050 \-ORBInitialHost nameserverhost .fi +.if n \{\ +.RE +.\} +.PP -.LP -次のコードでは、text 型の名前 plans を作成し、それをダミーのオブジェクト参照にバインドします。その後、rebind を使用して初期ネーミングコンテキストの下に \f2plans を追加しています\fP。 \f2rebind\fP メソッドを使用すれば、bind を使用した場合に発生する例外を発生させずに、 \f2このプログラムを何度も繰り返し実行できます\fP。 +\fIclienthost\fR上でクライアントを起動します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - NameComponent nc1 = new NameComponent("plans", "text"); -.fl - NameComponent[] name1 = {nc1}; -.fl - ctx.rebind(name1, objref); -.fl - System.out.println("plans rebind sucessful!"); -.fl - -.fl -\fP +java Client \-ORBInitialPort 1050 \-ORBInitialHost nameserverhost .fi - -.LP -次のコードでは、directory 型の Personal というネーミングコンテキストを作成します。その結果得られるオブジェクト参照 \f3ctx2\fP をこの名前にバインドし、初期ネーミングコンテキストに追加します。 +.if n \{\ +.RE +.\} +.SS "ネーミング・サービスの停止" +.PP +Java IDLネーミング・サービスを停止するには、Unixの場合は、\fIkill\fRなどのオペレーティング・システムのコマンドを使用し、Windowsの場合は、\fI[Ctrl]+[C]\fRキーを使用します。ネーミング・サービスを明示的に停止するまでは、呼出し待機状態が続きます。サービスを終了させると、Java IDLネーム・サービスに登録されている名前は失われます。 +.SH "オプション" +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンに\fIoption\fRを渡します。\fIoption\fRには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "例" +.SS "ネームスペースへのオブジェクトの追加" +.PP +次の例では、ネームスペースに名前を追加する方法を示します。このサンプル・プログラムは、このままの状態で完全に動作する一時ネーム・サービス・クライアントで、次のような単純なツリーを作成するものです。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - NameComponent nc2 = new NameComponent("Personal", "directory"); -.fl - NameComponent[] name2 = {nc2}; -.fl - NamingContext ctx2 = ctx.bind_new_context(name2); -.fl - System.out.println("new naming context added.."); -.fl - -.fl -\fP +Initial Naming Context + plans + Personal + calendar + schedule .fi - -.LP -残りのコードでは、ダミーのオブジェクト参照を schedule と calendar という名前でネーミングコンテキスト "Personal" (\f3ctx2\fP) にバインドします。 +.if n \{\ +.RE +.\} +.PP +この例で、\fIplans\fRはオブジェクト参照、\fIPersonal\fRは\fIcalendar\fRと\fIschedule\fRの2つのオブジェクト参照を含むネーミング・コンテキストです。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl - NameComponent nc3 = new NameComponent("schedule", "text"); -.fl - NameComponent[] name3 = {nc3}; -.fl - ctx2.rebind(name3, objref); -.fl - System.out.println("schedule rebind sucessful!"); -.fl - -.fl - NameComponent nc4 = new NameComponent("calender", "text"); -.fl - NameComponent[] name4 = {nc4}; -.fl - ctx2.rebind(name4, objref); -.fl - System.out.println("calender rebind sucessful!"); -.fl - -.fl - -.fl - } catch (Exception e) { -.fl - e.printStackTrace(System.err); -.fl - } -.fl - } -.fl -} -.fl -\fP -.fi - -.LP -.SH "サンプルクライアント: 名前空間のブラウズ" -.LP -.LP -次のサンプルプログラムでは、名前空間をブラウズする方法を示します。 -.LP -.nf -\f3 -.fl -import java.util.Properties; -.fl -import org.omg.CORBA.*; -.fl -import org.omg.CosNaming.*; -.fl - -.fl -public class NameClientList -.fl -{ -.fl - public static void main(String args[]) -.fl - { -.fl - try { -.fl -\fP -.fi - -.LP -前述の「Java IDL 一時ネームサービスの起動」で、ネームサーバーはポート 1050 を使用して起動しました。次のコードで、このポート番号をクライアントシステムに知らせます。 -.nf -\f3 -.fl - -.fl - Properties props = new Properties(); -.fl - props.put("org.omg.CORBA.ORBInitialPort", "1050"); -.fl - ORB orb = ORB.init(args, props); -.fl - -.fl - -.fl -\fP -.fi - -.LP -次のコードでは、初期ネーミングコンテキストを取得しています。 -.nf -\f3 -.fl - NamingContext nc = -.fl -NamingContextHelper.narrow(orb.resolve_initial_references("NameService")); -.fl - -.fl -\fP -.fi - -.LP -\f2list\fP メソッドは、ネーミングコンテキストに追加されているバインディングをリストします。この場合、最大 1000 個までのバインディングが初期ネーミングコンテキストから BindingListHolder に返されます。残りのバインディングは、BindingIteratorHolder に返されます。 -.nf -\f3 -.fl - BindingListHolder bl = new BindingListHolder(); -.fl - BindingIteratorHolder blIt= new BindingIteratorHolder(); -.fl - nc.list(1000, bl, blIt); -.fl - -.fl -\fP -.fi - -.LP -次のコードでは、返された BindingListHolder からバインディングの配列を取得します。バインディングがない場合は、プログラムは終了します。 -.nf -\f3 -.fl - Binding bindings[] = bl.value; -.fl - if (bindings.length == 0) return; -.fl - -.fl -\fP -.fi - -.LP -残りのコードでは、バインディングに対してループ処理を行い、名前を出力します。 -.nf -\f3 -.fl - for (int i=0; i < bindings.length; i++) { -.fl - -.fl - // get the object reference for each binding -.fl - org.omg.CORBA.Object obj = nc.resolve(bindings[i].binding_name); -.fl - String objStr = orb.object_to_string(obj); -.fl - int lastIx = bindings[i].binding_name.length\-1; -.fl - -.fl - // check to see if this is a naming context -.fl - if (bindings[i].binding_type == BindingType.ncontext) { -.fl - System.out.println( "Context: " + -.fl -bindings[i].binding_name[lastIx].id); -.fl - } else { -.fl - System.out.println("Object: " + -.fl -bindings[i].binding_name[lastIx].id); -.fl - } -.fl - } -.fl - -.fl - } catch (Exception e) { -.fl - e.printStackTrace(System.err); -.fl - } -.fl - } -.fl -} -.fl -\fP -.fi - -.LP +import java\&.util\&.Properties; +import org\&.omg\&.CORBA\&.*; +import org\&.omg\&.CosNaming\&.*; +public class NameClient { + + public static void main(String args[]) { + + try { +.fi +.if n \{\ +.RE +.\} +.PP +ネーミング・サービスの起動で、\fInameserver\fRはポート1050で起動されました。次のコードで、このポート番号をクライアント・システムに知らせます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + Properties props = new Properties(); + props\&.put("org\&.omg\&.CORBA\&.ORBInitialPort", "1050"); + ORB orb = ORB\&.init(args, props); +.fi +.if n \{\ +.RE +.\} +.PP +次のコードでは、初期ネーミング・コンテキストを取得し、それを\fIctx\fRに代入します。2行目では、\fIctx\fRをダミーのオブジェクト参照\fIobjref\fRにコピーします。このobjrefには、あとで様々な名前を割り当ててネームスペースに追加します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + NamingContext ctx = + NamingContextHelper\&.narrow( + orb\&.resolve_initial_references("NameService")); + NamingContext objref = ctx; +.fi +.if n \{\ +.RE +.\} +.PP +次のコードでは、\fItext\fRタイプの名前\fIplans\fRを作成し、それをダミーのオブジェクト参照にバインドします。その後、\fIrebind\fRメソッドを使用して初期ネーミング・コンテキストの下に\fIplans\fRを追加しています。\fIrebind\fRメソッドを使用すれば、\fIbind\fRメソッドを使用した場合に発生する例外を発生させずに、このプログラムを何度も繰返し実行できます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + NameComponent nc1 = new NameComponent("plans", "text"); + NameComponent[] name1 = {nc1}; + ctx\&.rebind(name1, objref); + System\&.out\&.println("plans rebind successful!"); +.fi +.if n \{\ +.RE +.\} +.PP +次のコードでは、\fIdirectory\fRタイプの\fIPersonal\fRというネーミング・コンテキストを作成します。その結果得られるオブジェクト参照\fIctx2\fRを\fIname\fRにバインドし、初期ネーミング・コンテキストに追加します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + NameComponent nc2 = new NameComponent("Personal", "directory"); + NameComponent[] name2 = {nc2}; + NamingContext ctx2 = ctx\&.bind_new_context(name2); + System\&.out\&.println("new naming context added\&.\&."); +.fi +.if n \{\ +.RE +.\} +.PP +残りのコードでは、ダミーのオブジェクト参照を\fIschedule\fRと\fIcalendar\fRという名前でネーミング・コンテキスト\fIPersonal\fR(\fIctx2\fR)にバインドします。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + NameComponent nc3 = new NameComponent("schedule", "text"); + NameComponent[] name3 = {nc3}; + ctx2\&.rebind(name3, objref); + System\&.out\&.println("schedule rebind successful!"); + + NameComponent nc4 = new NameComponent("calender", "text"); + NameComponent[] name4 = {nc4}; + ctx2\&.rebind(name4, objref); + System\&.out\&.println("calender rebind successful!"); + } catch (Exception e) { + e\&.printStackTrace(System\&.err); + } + } +} +.fi +.if n \{\ +.RE +.\} +.SS "ネームスペースの参照" +.PP +次のサンプル・プログラムでは、ネームスペースをブラウズする方法を示します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +import java\&.util\&.Properties; +import org\&.omg\&.CORBA\&.*; +import org\&.omg\&.CosNaming\&.*; + +public class NameClientList { + + public static void main(String args[]) { + + try { +.fi +.if n \{\ +.RE +.\} +.PP +ネーミング・サービスの起動で、\fInameserver\fRはポート1050で起動されました。次のコードで、このポート番号をクライアント・システムに知らせます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + Properties props = new Properties(); + props\&.put("org\&.omg\&.CORBA\&.ORBInitialPort", "1050"); + ORB orb = ORB\&.init(args, props); +.fi +.if n \{\ +.RE +.\} +.PP +次のコードでは、初期ネーミング・コンテキストを取得しています。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + NamingContext nc = + NamingContextHelper\&.narrow( + orb\&.resolve_initial_references("NameService")); +.fi +.if n \{\ +.RE +.\} +.PP +\fIlist\fRメソッドは、ネーミング・コンテキストのバインディングをリストします。この場合、最大1000個までのバインディングが初期ネーミング・コンテキストから\fIBindingListHolder\fRに返されます。残りのバインディングは、\fIBindingIteratorHolder\fRに返されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + BindingListHolder bl = new BindingListHolder(); + BindingIteratorHolder blIt= new BindingIteratorHolder(); + nc\&.list(1000, bl, blIt); +.fi +.if n \{\ +.RE +.\} +.PP +次のコードでは、返された\fIBindingListHolder\fRからバインディングの配列を取得します。バインディングがない場合は、プログラムが終了します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + Binding bindings[] = bl\&.value; + if (bindings\&.length == 0) return; +.fi +.if n \{\ +.RE +.\} +.PP +残りのコードでは、バインディングに対してループ処理を行い、名前を出力します。 +.sp +.if n \{\ +.RS 4 +.\} +.nf + for (int i=0; i < bindings\&.length; i++) { + + // get the object reference for each binding + org\&.omg\&.CORBA\&.Object obj = nc\&.resolve(bindings[i]\&.binding_name); + String objStr = orb\&.object_to_string(obj); + int lastIx = bindings[i]\&.binding_name\&.length\-1; + + // check to see if this is a naming context + if (bindings[i]\&.binding_type == BindingType\&.ncontext) { + System\&.out\&.println("Context: " + + bindings[i]\&.binding_name[lastIx]\&.id); + } else { + System\&.out\&.println("Object: " + + bindings[i]\&.binding_name[lastIx]\&.id); + } + } + } catch (Exception e) { + e\&.printStackTrace(System\&.err) + } + } +} +.fi +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +orbd(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/unpack200.1 b/jdk/src/solaris/doc/sun/man/man1/ja/unpack200.1 index 96a85d8105e..0b940d494d2 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/unpack200.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/unpack200.1 @@ -1,178 +1,201 @@ -." 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 -." 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 unpack200 1 "07 May 2011" - -.LP -.SH "名前" -unpack200 \- JAR アンパックツール -.LP -.RS 3 -.TP 2 -o -形式 -.TP 2 -o -説明 -.TP 2 -o -オプション -.TP 2 -o -終了ステータス -.TP 2 -o -関連項目 -.TP 2 -o -注意事項 +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: unpack200 +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Javaデプロイメント・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "unpack200" "1" "2013年11月21日" "JDK 8" "Javaデプロイメント・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +unpack200 \- pack200(1)で作成されたパック・ファイルを、WebデプロイメントのためにJARファイルに変換します。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIunpack200\fR [ \fIoptions\fR ] input\-file \fIJAR\-file\fR +.fi +.if n \{\ .RE - -.LP -.SH "形式" -.LP -.LP -\f4unpack200\fP\f2 [ \fP\f2options\fP ] \f2input\-file\fP \f2JAR\-file\fP -.LP -.LP -オプションの指定順序に決まりはありません。コマンド行に指定された最後のオプションが、それ以前に指定されたすべてのオプションより優先されます。 -.LP -.RS 3 -.TP 3 -input\-file -入力ファイルの名前。入力ファイルは通常、pack200 gzip ファイルか pack200 ファイルです。このほかに、0 を設定すれば pack200(1) から作成された JAR ファイルも入力ファイルとして使用できます。この場合、入力ファイルの内容が Pack200 マーカーとともに出力 JAR ファイルにコピーされます。 -.TP 3 -JAR\-file -出力 JAR ファイル名。 +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 .RE - -.LP -.SH " 説明" -.LP -.LP -\f2unpack200\fP は、pack200(1) で作成されたパックファイルを JAR ファイルに変換する \f2ネイティブ実装\fPです。一般的な使用方法: -.LP -.LP -\f2% unpack200 myarchive.pack.gz myarchive.jar\fP -.LP -.LP -この例では、 \f2デフォルトの unpack200 設定で、myarchive.pack.gz\fP から \f2myarchive.jar\fP が \f2作成されます\fP 。 -.LP +.PP +\fIinput\-file\fR +.RS 4 +入力ファイルの名前。pack200 gzipファイルかpack200ファイルを指定できます。入力ファイルには、\fIpack200\fR(1)で作成されたJARファイルを指定することもできます(手間は\fI0\fRです)。この場合、入力ファイルの内容はPack2000マーカーで出力JARファイルにコピーされます。 +.RE +.PP +\fIJAR\-file\fR +.RS 4 +出力JARファイル名。 +.RE +.SH "説明" +.PP +\fIunpack200\fRコマンドは、\fIpack200\fR\fI(1)\fRで作成されたパック・ファイルをJARファイルに変換するネイティブ実装です。一般的な使用方法は次のとおりです。次の例では、デフォルトの\fIunpack200\fRコマンド設定で、\fImyarchive\&.jar\fRファイルが\fImyarchive\&.pack\&.gz\fRから作成されます。 +.sp +.if n \{\ +.RS 4 +.\} +.nf +unpack200 myarchive\&.pack\&.gz myarchive\&.jar +.fi +.if n \{\ +.RE +.\} .SH "オプション" -.LP -.LP -\f4\-Hvalue \-\-deflate\-hint=\fP\f2value\fP -.LP -.LP -JAR ファイル内のすべてのエントリに \f2true\fP 、 \f2false\fP、 \f2keep\fP としてデフレーションを設定します。デフォルトモードは \f2keep\fP です。 \f2true\fP または \f2false 場合、\fPデフォルトの動作をオーバーライドして、出力 JAR ファイル内のすべてのエントリのデフレーションモードを設定します。 -.LP -.LP -\f4\-r \-\-remove\-pack\-file\fP -.LP -.LP -入力パックファイルを削除します。 -.LP -.LP -\f4\-v \-\-verbose\fP -.LP -.LP -最小限のメッセージを出力します。このオプションを複数指定すると、より長いメッセージが出力されます。 -.LP -.LP -\f4\-q \-\-quiet\fP -.LP -.LP -メッセージを表示せずに動作します。 -.LP -.LP -\f4\-lfilename \-\-log\-file=\fP\f2filename\fP -.LP -.LP -出力メッセージのログファイルを指定します。 -.LP -.LP -\f4\-? \-h \-\-help\fP -.LP -.LP -このコマンドに関するヘルプ情報を出力します。 -.LP -.LP -\f4\-V \-\-version\fP -.LP -.LP -このコマンドに関するバージョン情報を出力します。 -.LP -.LP -\f4\-J\fP\f2option\fP -.LP -.LP -unpack200 によって呼び出される Java 起動ツールに \f2オプション\fP を \f2渡します\fP。 -.LP -.SH "終了ステータス" -.LP -.LP -次の終了値が返されます。 -.LP -.LP -\f2\ 0\fP " 成功" -.LP -.LP -\f2>0\fP " エラー" -.LP -.SH "関連項目" -.LP -.RS 3 -.TP 2 -o -pack200(1) -.TP 2 -o -.na -\f2Java SE のドキュメント\fP @ -.fi -http://java.sun.com/javase/6/docs/index.html -.TP 2 -o -.na -\f2「Java 配備ガイド \- Pack200」\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment\-guide/pack200.html -.TP 2 -o -jar(1) \- Java Archive ツール」 -.TP 2 -o -jarsigner(1) \- JAR 署名および検証ツール」 -.TP 2 -o -\f2attributes(5)\fP のマニュアルページ +.PP +\-Hvalue \-\-deflate\-hint=\fIvalue\fR +.RS 4 +JARファイル内のすべてのエントリに\fItrue\fR、\fIfalse\fRまたは\fIkeep\fRのデフレーションを設定します。デフォルト・モードは\fIkeep\fRです。値が\fItrue\fRまたは\fIfalse\fR場合、\fI\-\-deflate=hint\fRオプションはデフォルトの動作をオーバーライドして、出力JARファイル内のすべてのエントリのデフレーション・モードが設定されます。 .RE - -.LP -.SH "注意事項" -.LP -.LP -このコマンドと \f2unpack(1) を\fP混同しないでください。これらは別製品です。 -.LP -.LP -SDK に付属する Java SE API 仕様との相違が見つかった場合には、仕様を優先してください。 -.LP - +.PP +\-r \-\-remove\-pack\-file +.RS 4 +入力パック・ファイルを削除します。 +.RE +.PP +\-v \-\-verbose +.RS 4 +最小限のメッセージが表示されます。このオプションの複数の仕様には、より詳細なメッセージが表示されます。 +.RE +.PP +\-q \-\-quiet +.RS 4 +メッセージを表示せずに動作するように指定します。 +.RE +.PP +\-lfilename \-\-log\-file=\fIfilename\fR +.RS 4 +出力メッセージが記録されるログ・ファイルを指定します。 +.RE +.PP +\-? \-h \-\-help +.RS 4 +\fIunpack200\fRコマンドに関するヘルプ情報を出力します。 +.RE +.PP +\-V \-\-version +.RS 4 +\fIunpack200\fRコマンドに関するバージョン情報を出力します。 +.RE +.PP +\-J\fIoption\fR +.RS 4 +Java仮想マシンにoptionを渡します。\fIoption\fRには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。 +.RE +.SH "注意" +.PP +このコマンドと\fIunpack\fRコマンドを混同しないでください。これらは別製品です。 +.PP +JDKに付属するJava SE API仕様との相違が見つかった場合には、仕様を優先してください。 +.SH "終了ステータス" +.PP +次の終了値が返されます: 正常終了の場合は0、エラーが発生した場合は0より大きい値。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +pack200(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jar(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +jarsigner(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Pack200 and Compression」 +(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/deployment/deployment\-guide/pack200\&.html) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +「Java SE Technical Documentation」 +(http://docs\&.oracle\&.com/javase/) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/wsgen.1 b/jdk/src/solaris/doc/sun/man/man1/ja/wsgen.1 index c85556ee16f..0f50de81de0 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/wsgen.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/wsgen.1 @@ -1,656 +1,228 @@ -." 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. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please 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 wsgen 1 "07 May 2011" -.SH "名前" -wsgen \- XML Web Services (JAX\-WS) 2.0 のための Java(TM) API -.LP -\f3仕様バージョン:\fP 2.1 -.br -\f3実装バージョン:\fP 2.1.1 -.LP -\f2wsgen\fP ツールは、JAX\-WS Web サービスで使用される JAX\-WS ポータブルアーティファクトを生成します。このツールは、Web サービスのエンドポイント実装クラス (SEI) を読み取り、Web サービスの配備と呼び出しに必要なすべてのアーティファクトを生成します。 +'\" t +.\" Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: wsgen +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java Webサービス・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "wsgen" "1" "2013年11月21日" "JDK 8" "Java Webサービス・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +wsgen \- Webサービスのエンドポイント実装(SEI)クラスを読取り、Webサービスのデプロイメントと呼出しに必要なすべてのアーティファクトを生成します。 .SH "概要" -.LP -\f2wsgen\fP ツールは、JAX\-WS Web サービスで使用される JAX\-WS ポータブルアーティファクトを生成します。このツールは、Web サービスのエンドポイントクラスを読み取り、Web サービスの配備と呼び出しに必要なすべてのアーティファクトを生成します。JAXWS 2.1.1 RI には wsgen Ant タスクも用意されています。詳細は、 -.na -\f2Wsgen Ant タスク\fP @ +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIwsgen\fR [ \fIoptions\fR ] \fISEI\fR .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsgenant.htmlを参照してください。 -.LP -.SH "wsgen の起動" -.RS 3 -.TP 2 -o -\f3Solaris/Linux\fP -.RS 3 -.TP 2 -* -\f2export JAXWS_HOME=/pathto/jaxws\-ri\fP -.TP 2 -* -\f2$JAXWS_HOME/bin/wsgen.sh \-help\fP +.if n \{\ .RE -.TP 2 -o -\f3Windows\fP -.RS 3 -.TP 2 -* -\f2set JAXWS_HOME=c:\\pathto\\jaxws\-ri\fP -.TP 2 -* -\f2%JAXWS_HOME%\\bin\\wsgen.bat \-help\fP +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 .RE +.PP +\fISEI\fR +.RS 4 +読み取るWebサービスのエンドポイント実装クラス(SEI)です。 .RE - -.LP -.SH "構文" +.SH "説明" +.PP +\fIwsgen\fRコマンドは、JAX\-WS Webサービスで使用されるJAX\-WSポータブル・アーティファクトを生成します。このツールは、Webサービスのエンドポイント・クラスを読取り、Webサービスのデプロイメントと呼出しに必要なすべてのアーティファクトを生成します。JAXWS 2\&.1\&.1 RIでは\fIwsgen\fR +Antタスクも提供されます。 +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsgenant\&.htmlのJAX\-WS (wsgen)ページのToolsタブを参照してください。 +.PP +\fIwsgen\fRコマンドを起動するには、次を行います。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -wsgen [options] <SEI>\fP -.br -\f3 -.fl -\fP +export JAXWS_HOME=/pathto/jaxws\-ri +$JAXWS_HOME/bin/wsgen\&.sh \-help .fi -.LP -次の表に、 \f2wsgen\fP のオプションを示します。 -.br -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -入力クラスファイルの検索場所を指定します -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\-classpath <path> \f2と同じです\fP -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -生成される出力ファイルを格納する場所を指定します -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ベンダー拡張 (仕様で規定されていない機能) を許可します。拡張を使用すると、アプリケーションの移植性が失われたり、ほかの実装との相互運用が行えなくなる可性があります -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ヘルプを表示します -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -生成されたファイルを保持します -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -常に \-wsdl オプションと組み合わせて使用します。WSDL などの生成されたリソースファイルの格納場所を指定します -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -生成されるソースファイルを格納する場所を指定する -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -コンパイラが実行している処理に関するメッセージを出力します -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -バージョン情報を出力します。このオプションを使用した場合、バージョン情報が出力されるだけです。通常の処理は実行されません。 -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -デフォルトでは \f2wsgen\fP は WSDL ファイルを生成しません。このフラグは省略可能ですが、指定した場合は \f2wsgen\fP が WSDL ファイルを生成するようになります。このフラグは通常、エンドポイントの配備前に開発者が WSDL を参照できるようにするためだけに使用されます。 \f2protocol\fP は省略可能であり、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 -.nr k- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -常に \f2\-wsdl\fP オプションと組み合わせて使用します。WSDL 内で生成されるべき \f2wsdl:service\fP の名前を指定するために使用します。例: \f2\-servicename "{http://mynamespace/}MyService"\fP -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di m+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -常に \f2\-wsdl\fP オプションと組み合わせて使用します。WSDL 内で生成されるべき \f2wsdl:port\fP の名前を指定するために使用します。例: \f2\-portname "{http://mynamespace/}MyPort"\fP -.br -.br -.di -.nr m| \n(dn -.nr m- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \w\f3オプション\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-classpath <path>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-cp <path>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-d <directory>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-extension\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-help\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-keep\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-r <directory>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-s <directory>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-verbose\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-version\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-wsdl[:protocol]\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-servicename <name>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f4\-portname <name>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(g- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(l- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(m- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 137 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-classpath <path>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-cp <path>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-d <directory>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-extension\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-help\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-keep\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-r <directory>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(h|u+\n(.Vu -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-s <directory>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-verbose\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-version\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(k|u+\n(.Vu -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-wsdl[:protocol]\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-servicename <name>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(m|u+\n(.Vu -.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f4\-portname <name>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.m+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.rm m+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-57 - -.LP +.if n \{\ +.RE +.\} +.SH "オプション" +.PP +\-classpath \fIpath\fR +.RS 4 +入力クラス・ファイルの場所。 +.RE +.PP +\-cp \fIpath\fR +.RS 4 +入力クラス・ファイルの場所。 +.RE +.PP +\-d \fIdirectory\fR +.RS 4 +生成された出力ファイルを格納する場所。 +.RE +.PP +\-extension +.RS 4 +ベンダー拡張を使用可能にします。拡張を使用すると、アプリケーションの移植性が失われたり、他の実装と連携できなくなる可能性があります。 +.RE +.PP +\-help +.RS 4 +\fIwsgen\fRコマンドに関するヘルプ・メッセージを表示します。 +.RE +.PP +\-keep +.RS 4 +生成されたファイルを保存します。 +.RE +.PP +\-r \fIdirectory\fR +.RS 4 +このオプションを\fI\-wsdl\fRオプションとともに使用して、WSDLなど生成されたリソース・ファイルを配置する場所を指定します。 +.RE +.PP +\-s \fIdirectory\fR +.RS 4 +生成されたソース・ファイルを格納する場所。 +.RE +.PP +\-verbose +.RS 4 +コンパイラ・メッセージを表示します。 +.RE +.PP +\-version +.RS 4 +リリース情報を出力します。 +.RE +.PP +\-wsdl [ :protocol ] +.RS 4 +エンドポイントをデプロイする前に確認するWSDLファイルを生成するオプション・コマンド。WSDLファイルには、サービスを呼び出す方法、パラメータに必要な値、返されるデータ構造についてのコンピュータで読取り可能な記述が含まれます。 +.sp +デフォルトでは\fIwsgen\fRコマンドはWSDLファイルを生成しません。\fIprotocol\fR値は省略可能であり、WSDLバインディング(\fIwsdl:binding\fR)で使用するプロトコルを指定するために使用されます。有効なプロトコルは、\fIsoap1\&.1\fRと\fIXsoap1\&.2\fRです。デフォルトは\fIsoap1\&.1\fRです。\fIXsoap1\&.2\fRプロトコルは標準ではないため、\fI\-extension\fRオプションとともにのみ使用可能です。 +.RE +.PP +\-servicename \fIname\fR +.RS 4 +\fI\-wsdl\fRオプションとともにのみ使用して、WSDLで生成される特定のWSDLサービス(\fIwsdl:service\fR)名を指定します。例: +\fI\-servicename "{http://mynamespace/}MyService"\fR。 +.RE +.PP +\-portname \fIname\fR +.RS 4 +\fI\-wsdl\fRオプションとともにのみ使用して、WSDLで生成される特定のWSDLポート(\fIwsdl:port\fR)名を指定します。例: +\fI\-portname "{http://mynamespace/}MyPort"\fR。 +.RE .SH "例" +.PP +次の例では、Stockディレクトリ内に\fI@WebService\fR注釈を持つ\fIStockService\fRのラッパー・クラスを生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3wsgen \-d stock \-cp myclasspath stock.StockService\fP -.fl +wsgen \-d stock \-cp myclasspath stock\&.StockService .fi -.LP -\f3stock\fP ディレクトリ内に @WebService 注釈が付けられた、StockService に必要なラッパークラスが生成されます。 +.if n \{\ +.RE +.\} +.PP +次の例では、SOAP 1\&.1 WSDLおよび\fI@WebService\fR注釈を持つ\fIstock\&.StockService\fRクラスのスキーマを生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3wsgen \-wsdl \-d stock \-cp myclasspath stock.StockService\fP -.fl +wsgen \-wsdl \-d stock \-cp myclasspath stock\&.StockService .fi -.LP -SOAP 1.1 WSDL と、@WebService 注釈が付けられた Java クラス stock.StockService のスキーマが生成されます。 +.if n \{\ +.RE +.\} +.PP +次の例では、SOAP 1\&.2 WSDLを生成します。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3wsgen \-wsdl:Xsoap1.2 \-d stock \-cp myclasspath stock.StockService\fP -.fl +wsgen \-wsdl:Xsoap1\&.2 \-d stock \-cp myclasspath stock\&.StockService .fi -.LP -SOAP 1.2 WSDL が生成されます。 -.LP -サービスを配備するときに JAXWS ランタイムによって自動的に WSDL が生成されるため、開発時に WSDL を生成する必要はありません。 +.if n \{\ +.RE +.\} +.PP +\fB注意:\fR +サービスのデプロイ時にJAXWS実行時環境でWSDLが生成されるため、開発時にWSDLを生成する必要はありません。 +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +wsimport(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsgenant\&.htmlの +JAX\-WS (wsgen)ページのToolsタブを参照してください。 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/wsimport.1 b/jdk/src/solaris/doc/sun/man/man1/ja/wsimport.1 index a09204e86ba..feff3f3acca 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/wsimport.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/wsimport.1 @@ -1,1066 +1,332 @@ -." 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. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please 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 wsimport 1 "07 May 2011" -.SH "名前" -wsimport \- XML Web Services (JAX\-WS) 2.0 のための Java(TM) API -.LP -\f3仕様バージョン:\fP 2.1 -.br -\f3実装バージョン:\fP 2.1.1 -.br +'\" t +.\" Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: wsimport +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java Webサービス・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "wsimport" "1" "2013年11月21日" "JDK 8" "Java Webサービス・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +wsimport \- Webアプリケーション・アーカイブ(WAR)ファイルにパッケージできるJAX\-WSポータブル・アーティファクトを生成して、Antタスクを指定します。 .SH "概要" -.LP -\f2wsimport\fP ツールは、次のような JAX\-WS ポータブルアーティファクトを生成します。 -.RS 3 -.TP 2 -o -サービスエンドポイントインタフェース (SEI) -.TP 2 -o -サービス -.TP 2 -o -wsdl:fault からマップされる例外クラス (存在する場合) -.TP 2 -o -応答 wsdl:message から派生する非同期応答 Bean (存在する場合) -.TP 2 -o -JAX\-B が生成する値タイプ (スキーマの型からマップされた Java クラス) -.RE -.LP -これらのアーティファクトは、WSDL ドキュメント、スキーマドキュメント、およびエンドポイント実装とともに WAR ファイル内にパッケージ化して配備することができます。また、wsimport Ant タスクも用意されています。 -.na -\f2wsimport Ant タスク\fP @ -.fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/wsimportant.htmlを参照してください。 -.br - -.LP -.SH "wsimport の起動" -.RS 3 -.TP 2 -o -\f3Solaris/Linux\fP -.RS 3 -.TP 2 -* -\f2/bin/wsimport.sh \-help\fP -.RE -.TP 2 -o -\f3Windows\fP -.RS 3 -.TP 2 -* -\f2\\bin\\wsimport.bat \-help\fP -.RE -.RE - -.LP -.SH "構文" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -wsimport [options] <wsdl> -.fl -\fP +\fIwsimport\fR [ \fIoptions\fR ] \fIwsdl\fR .fi -.LP -次の表に、 \f2wsimport\fP のオプションを示します。 -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +\fIwsdl\fR +.RS 4 +Webサービスを呼び出す方法、パラメータに必要な値、返されるデータ構造についてのコンピュータで読取り可能な記述が含まれまるファイルです。 +.RE +.SH "説明" +.PP +\fIwsimport\fRコマンドは、次のJAX\-WSポータブル・アーティファクトを生成します。これらのアーティファクトは、デプロイするWSDLおよびスキーマ・ドキュメントおよびエンドポイント実装とともに、WARファイルにパッケージできます。\fIwsimport\fRコマンドでは\fIwsimport\fR +Antタスクも提供されます。 +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsimportant\&.htmlのWsimport Ant TaskページのToolsタブを参照してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +サービス・エンドポイント・インタフェース(SEI) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +サービス +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +例外クラスは\fIwsdl:fault\fRからマップされます(存在する場合) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +非同期レスポンスBeanはレスポンス\fIwsdl:message\fRから派生します(存在する場合) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +JAXBが生成する値タイプ(スキーマのタイプからマップされたJavaクラス) +.RE +.PP +\fIwsgen\fRコマンドを起動するには、次を行います。 +.PP +\fBOracle Solaris/Linux\fR: +.sp +.if n \{\ +.RS 4 +.\} .nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -生成される出力ファイルを格納する場所を指定します -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -外部の JAX\-WS または JAXB バインディングファイルを指定します ( \f2<file>\fP ごとに \f2\-b\fP が必要となる) -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -このオプションを JAXB スキーマコンパイラに渡します -.br -.di -.nr c| \n(dn -.nr c- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di d+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -外部エンティティー参照を解決するためのカタログファイルを指定します。TR9401、XCatalog、OASIS XML Catalog の各形式がサポートされています。 -.na -\f2カタログ\fP @ +/bin/wsimport\&.sh \-help .fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/catalog\-support.htmlのドキュメントをお読みになり、\f3カタログ\fPのサンプルを参照してください。 -.br -.di -.nr d| \n(dn -.nr d- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di e+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ベンダー拡張 (仕様で規定されていない機能) を許可します。拡張を使用すると、アプリケーションの移植性が失われたり、ほかの実装との相互運用が行えなくなる可能性があります -.br -.di -.nr e| \n(dn -.nr e- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di f+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -ヘルプを表示します -.br -.di -.nr f| \n(dn -.nr f- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di g+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f3\-httpproxy:<host>:<port> \fP -.br -.di -.nr g| \n(dn -.nr g- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di h+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -HTTP プロキシサーバーを指定します (デフォルトのポートは 8080) -.br -.di -.nr h| \n(dn -.nr h- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di i+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 +.if n \{\ +.RE +.\} +.PP +\fBWindows\fRの場合: +.sp +.if n \{\ +.RS 4 +.\} +.nf +\ebin\ewsimport\&.bat \-help +.fi +.if n \{\ +.RE +.\} +.SH "オプション" +.PP +\-d \fIdirectory\fR +.RS 4 +生成される出力ファイルを格納する場所を指定します。 +.RE +.PP +\-b \fIpath\fR +.RS 4 +外部JAX\-WSまたはJAXBバインディング・ファイルを指定します。\fI\-b\fRオプションで複数のJAX\-WSおよびJAXBバインディング・ファイルを指定できます。これらのファイルを使用して、パッケージ名、Bean名などをカスタマイズできます。JAX\-WSおよびJAXBバインディング・ファイルの詳細は、 +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsimportant\&.htmlのWSDL CustomizationのUsers Guideタブを参照してください +.RE +.PP +\-B \fIjaxbOption\fR +.RS 4 +JAXBスキーマ・コンパイラに\fIjaxbOption\fRオプションを渡します。 +.RE +.PP +\-catalog +.RS 4 +外部エンティティ参照を解決するカタログ・ファイルを指定します。\fI\-catalog\fRオプションは、TR9401、XCatalog、OASIS XML Catalogの各形式をサポートしています。http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/catalog\-support\&.htmlの +Catalog SupportページのUsers Guideタブを参照してください。 +.RE +.PP +\-extension +.RS 4 +ベンダー拡張を使用可能にします。拡張を使用すると、アプリケーションの移植性が失われたり、他の実装と連携できなくなる可能性があります。 +.RE +.PP +\-help +.RS 4 +\fIwsimport\fRコマンドに関するヘルプ・メッセージを表示します。 +.RE +.PP +\-httpproxy: \fIhost\fR:\fIport\fR +.RS 4 +HTTPプロキシ・サーバーを指定します。デフォルトは8080です。 +.RE +.PP +\-keep +.RS 4 生成されたファイルを保持します -.br -.di -.nr i| \n(dn -.nr i- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di j+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -このコマンド行オプション経由でターゲットパッケージを指定した場合、その指定内容は、パッケージ名に対するすべての WSDL/スキーマバインディングカスタマイズや、 仕様で規定されているデフォルトのパッケージ名アルゴリズムよりも優先されます -.br -.di -.nr j| \n(dn -.nr j- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di k+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -生成されるソースファイルを格納する場所を指定する -.br -.di -.nr k| \n(dn -.nr k- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di l+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -コンパイラが実行している処理に関するメッセージを出力します -.br -.di -.nr l| \n(dn -.nr l- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di m+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -バージョン情報を出力します -.br -.di -.nr m| \n(dn -.nr m- \n(dl -.. -.ec \ -.eo -.am 80 -.br -.di n+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(80 .ll \n(80u -.in 0 -\f3\-wsdllocation <location>\fP -.br -.di -.nr n| \n(dn -.nr n- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di o+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -\f2@WebServiceClient.wsdlLocation\fP 値 -.br -.di -.nr o| \n(dn -.nr o- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di p+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -指定された JAX\-WS 仕様バージョンに従ってコードを生成します。バージョン 2.0 では、JAX\-WS 2.0 仕様に準拠したコードを生成します。 -.br -.di -.nr p| \n(dn -.nr p- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di q+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -wsimport 出力を抑制します -.br -.di -.nr q| \n(dn -.nr q- \n(dl -.. -.ec \ -.35 -.nf -.ll \n(34u -.nr 80 0 -.nr 38 \w\f3オプション\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-d <directory> \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-b <path> \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-B <jaxbOption>\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-catalog\fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-extension \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-help \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-keep \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-p \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-s <directory> \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-verbose \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-version \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-target \fP -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \w\f3\-quiet \fP -.if \n(80<\n(38 .nr 80 \n(38 -.80 -.rm 80 -.nr 38 \n(g- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 38 \n(n- -.if \n(80<\n(38 .nr 80 \n(38 -.nr 81 0 -.nr 38 \w\f3説明\fP -.if \n(81<\n(38 .nr 81 \n(38 -.81 -.rm 81 -.nr 38 \n(a- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(b- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(c- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(d- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(e- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(f- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(h- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(i- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(j- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(k- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(l- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(m- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(o- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(p- -.if \n(81<\n(38 .nr 81 \n(38 -.nr 38 \n(q- -.if \n(81<\n(38 .nr 81 \n(38 -.35 -.nf -.ll \n(34u -.nr 38 1n -.nr 79 0 -.nr 40 \n(79+(0*\n(38) -.nr 80 +\n(40 -.nr 41 \n(80+(3*\n(38) -.nr 81 +\n(41 -.nr TW \n(81 -.if t .if \n(TW>\n(.li .tm Table at line 163 file Input is too wide - \n(TW units -.fc   -.nr #T 0-1 -.nr #a 0-1 -.eo -.de T# -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.mk ## -.nr ## -1v -.ls 1 -.ls -.. -.ec -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3オプション\fP\h'|\n(41u'\f3説明\fP -.ne \n(a|u+\n(.Vu -.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-d <directory> \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.a+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(b|u+\n(.Vu -.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-b <path> \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.b+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(c|u+\n(.Vu -.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-B <jaxbOption>\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.c+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(d|u+\n(.Vu -.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-catalog\fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.d+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(e|u+\n(.Vu -.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-extension \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.e+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(f|u+\n(.Vu -.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-help \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.f+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(g|u+\n(.Vu -.ne \n(h|u+\n(.Vu -.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v) -.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.g+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.h+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(i|u+\n(.Vu -.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-keep \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.i+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(j|u+\n(.Vu -.if (\n(j|+\n(#^-1v)>\n(#- .nr #- +(\n(j|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-p \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.j+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(k|u+\n(.Vu -.if (\n(k|+\n(#^-1v)>\n(#- .nr #- +(\n(k|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-s <directory> \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.k+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(l|u+\n(.Vu -.if (\n(l|+\n(#^-1v)>\n(#- .nr #- +(\n(l|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-verbose \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.l+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(m|u+\n(.Vu -.if (\n(m|+\n(#^-1v)>\n(#- .nr #- +(\n(m|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-version \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.m+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(n|u+\n(.Vu -.ne \n(o|u+\n(.Vu -.if (\n(n|+\n(#^-1v)>\n(#- .nr #- +(\n(n|+\n(#^-\n(#--1v) -.if (\n(o|+\n(#^-1v)>\n(#- .nr #- +(\n(o|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(40u -.in +\n(37u -.n+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.o+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(p|u+\n(.Vu -.if (\n(p|+\n(#^-1v)>\n(#- .nr #- +(\n(p|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-target \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.p+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.ne \n(q|u+\n(.Vu -.if (\n(q|+\n(#^-1v)>\n(#- .nr #- +(\n(q|+\n(#^-\n(#--1v) -.ta \n(80u \n(81u -.nr 31 \n(.f -.nr 35 1m -\&\h'|\n(40u'\f3\-quiet \fP\h'|\n(41u' -.mk ## -.nr 31 \n(## -.sp |\n(##u-1v -.nr 37 \n(41u -.in +\n(37u -.q+ -.in -\n(37u -.mk 32 -.if \n(32>\n(31 .nr 31 \n(32 -.sp |\n(31u -.fc -.nr T. 1 -.T# 1 -.35 -.rm a+ -.rm b+ -.rm c+ -.rm d+ -.rm e+ -.rm f+ -.rm g+ -.rm h+ -.rm i+ -.rm j+ -.rm k+ -.rm l+ -.rm m+ -.rm n+ -.rm o+ -.rm p+ -.rm q+ -.TE -.if \n-(b.=0 .nr c. \n(.c-\n(d.-72 -.LP -\-b オプションを使って、複数の JAX\-WS および JAXB バインディングファイル \f2を指定できます。\fP これらのファイルを使って、パッケージ名や Bean 名など、さまざまなカスタマイズが可能です。JAX\-WS および JAXB バインディングファイルの詳細は、 -.na -\f2カスタマイズマニュアル\fP @ -.fi -https://jax\-ws.dev.java.net/nonav/2.1.1/docs/customizations.htmlを参照してください。 -.LP -次の表に、 \f2wsimport\fP の非標準オプションを示します。 -.LP -.TS -.if \n+(b.=1 .nr d. \n(.c-\n(c.-1 -.de 35 -.ps \n(.s -.vs \n(.vu -.in \n(.iu -.if \n(.u .fi -.if \n(.j .ad -.if \n(.j=0 .na -.. -.nf -.nr #~ 0 -.if n .nr #~ 0.6n -.ds #d .d -.if \(ts\n(.z\(ts\(ts .ds #d nl -.fc -.nr 33 \n(.s -.rm 80 81 -.nr 34 \n(.lu -.eo -.am 81 -.br -.di a+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -要求または応答メッセージにバインドされないヘッダーを Java メソッドのパラメータにマップします -.br -.di -.nr a| \n(dn -.nr a- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di b+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 -認証情報を含むファイルを指定する WSDL URI です。この URI の形式は次のとおりです http://\f2<ユーザー名>\fP:\f2<パスワード>\fP@\f2<ホスト名>\fP/\f2<Web サービス名>\fP?wsdl -.br -.di -.nr b| \n(dn -.nr b- \n(dl -.. -.ec \ -.eo -.am 81 -.br -.di c+ -.35 -.ft \n(.f -.ll \n(34u*1u/3u -.if \n(.l<\n(81 .ll \n(81u -.in 0 +.RE +.PP +\-p \fIname\fR +.RS 4 +ターゲット・パッケージ\fIname\fRを指定して、WSDLおよびスキーマ・バインディングのカスタマイズ、および仕様部で定義されたデフォルトのアルゴリズムをオーバーライドします。 +.RE +.PP +\-s \fIdirectory\fR +.RS 4 +生成されるソース・ファイルを格納する場所を指定します +.RE +.PP +\-verbose +.RS 4 +コンパイラ・メッセージを表示します。 +.RE +.PP +\-version +.RS 4 +リリース情報を出力します。 +.RE +.PP +\-wsdllocation \fIlocation\fR +.RS 4 +\fI@WebServiceClient\&.wsdlLocation\fRの値を指定します。 +.RE +.PP +\-target +.RS 4 +指定されたJAX\-WS仕様バージョンに従って、コードを生成します。バージョン2\&.0では、JAX\-WS 2\&.0仕様に準拠したコードを生成します。 +.RE +.PP +\-quiet +.RS 4 +\fIwsimport\fRコマンド出力を抑制します。 +.RE +.PP +\fI\-b\fRオプションを使用して、複数の\fIJAX\-WS\fRおよび\fIJAXB\fRバインディング・ファイルを指定できます。これらのファイルを使用して、パッケージ名やBean名など、様々なものをカスタマイズできます。\fIJAX\-WS\fRおよび\fIJAXB\fRバインディング・ファイルの詳細は、 +https://jax\-ws\&.dev\&.java\&.net/nonav/2\&.1\&.1/docs/customizations\&.htmlのJAXBタブを参照してください +.SH "非標準オプション" +.PP +\-XadditionalHeaders +.RS 4 +リクエストまたはレスポンス・メッセージにバインドされないヘッダーをJavaメソッドのパラメータにマップします +.RE +.PP +\-Xauthfile \fIfile\fR +.RS 4 +認証情報を含むファイルを指定するWSDL URIです。このURIの形式は次のとおりです。 +.sp +http://\fIuser\-name\fR:\fIpassword\fR@\fIhost\-name\fR/\fIweb\-service\-name\fR>?wsdl +.RE +.PP +\-Xdebug +.RS 4 デバッグ情報を出力します -.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 +.RE +.PP +\-Xno\-addressing\-databinding +.RS 4 +W3C EndpointReferenceTypeとJavaのバインディングを有効にします。 +.RE +.PP +\-Xnocompile +.RS 4 +生成されたJavaファイルをコンパイルしません +.RE .SH "例" +.PP +次の例では、Javaアーティファクトを生成し、\fIhttp://stockquote\&.example\&.com/quote?wsdl\fRをインポートしてアーティファクトをコンパイルします。 +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -\fP\f3wsimport \-p stockquote http://stockquote.example.com/quote?wsdl\fP -.fl +wsimport \-p stockquote http://stockquote\&.example\&.com/quote?wsdl .fi -.LP -Java アーティファクトを生成し、 \f2http://stockquote.example.com/quote?wsdl\fP をインポートしてその Java アーティファクトをコンパイルします +.if n \{\ +.RE +.\} +.SH "関連項目" +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +wsgen(1) +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsimportant\&.htmlの +Wsimport Ant TaskページのToolsタブ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/catalog\-support\&.htmlの +Catalog SupportページのUsers Guideタブ +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://jax\-ws\&.java\&.net/nonav/2\&.1\&.1/docs/wsimportant\&.htmlの +WSDL CustomizationページのUsers Guideタブ +.RE .br - +'pl 8.5i +'bp diff --git a/jdk/src/solaris/doc/sun/man/man1/ja/xjc.1 b/jdk/src/solaris/doc/sun/man/man1/ja/xjc.1 index 0b3baf84f0a..17a0efdd9ed 100644 --- a/jdk/src/solaris/doc/sun/man/man1/ja/xjc.1 +++ b/jdk/src/solaris/doc/sun/man/man1/ja/xjc.1 @@ -1,298 +1,342 @@ -." 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. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please 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 xjc 1 "07 May 2011" - -.LP -.ad c -.SH "名前" -xjc \- XML バインドのための Java(TM) アーキテクチャー -.br -バインディングコンパイラ -.LP -\f3仕様バージョン:\fP 2.1 -.br -\f3リファレンス実装 (RI) バージョン:\fP 2.1.3 .ad l - -.LP -.SH "xjc の起動" -.LP -.LP -バインディングコンパイラを起動するには、使用するプラットフォームに応じた bin ディレクトリ内の \f2xjc\fP シェルスクリプト \f2を\fP 使用します。また、バインディングコンパイラを実行するための Ant タスクも用意されています。 -.na -\f2xjc を Ant とともに使用する\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.htmlための手順を参照してください。 -.LP -.LP -\f2% xjc \-help\fP -.LP -.SS -出力 -.LP +'\" t +.\" Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. +.\" Title: xjc +.\" Language: English +.\" Date: 2013年11月21日 +.\" SectDesc: Java Webサービス・ツール +.\" Software: JDK 8 +.\" Arch: 汎用 +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute 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. +.\" +.pl 99999 +.TH "xjc" "1" "2013年11月21日" "JDK 8" "Java Webサービス・ツール" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +xjc \- XMLスキーマ・ファイルを完全注釈付きのJavaクラスにコンパイルします。 +.SH "概要" +.sp +.if n \{\ +.RS 4 +.\} .nf -\f3 -.fl -Usage: xjc [\-options ...] <schema file/URL/dir/jar> ... [\-b <bindinfo>] ... -.fl -If dir is specified, all schema files in it will be compiled. -.fl -If jar is specified, /META\-INF/sun\-jaxb.episode binding file will be compiled. -.fl -Options: -.fl - \-nv : do not perform strict validation of the input schema(s) -.fl - \-extension : allow vendor extensions \- do not strictly follow the Compatibility Rules and App E.2 from the JAXB Spec -.fl - \-b <file/dir> : specify external bindings files (each <file> must have its own \-b); if a directory is given, **/*.xjb is searched -.fl - \-d <dir> : generated files will go into this directory -.fl - \-p <pkg> : specifies the target package -.fl - \-httpproxy <proxy> : set HTTP/HTTPS proxy; format is [user[:password]@]proxyHost:proxyPort -.fl - \-httpproxyfile <f> : works like \-httpproxy but takes the argument in a file to protect password -.fl - \-classpath <arg> : specify where to find user class files -.fl - \-catalog <file> : specify catalog files to resolve external entity references; support TR9401, XCatalog, and OASIS XML Catalog format -.fl - \-readOnly : generated files will be in read\-only mode -.fl - \-npa : suppress generation of package level annotations (**/package\-info.java) -.fl - \-no\-header : suppress generation of a file header with timestamp -.fl - \-target 2.0 : behave like XJC 2.0 and generate code that doesnt use any 2.1 features -.fl - \-xmlschema : treat input as W3C XML Schema (default) -.fl - \-relaxng : treat input as RELAX NG (experimental,unsupported) -.fl - \-relaxng\-compact : treat input as RELAX NG compact syntax (experimental,unsupported) -.fl - \-dtd : treat input as XML DTD (experimental,unsupported) -.fl - \-wsdl : treat input as WSDL and compile schemas inside it (experimental,unsupported) -.fl - \-verbose : be extra verbose -.fl - \-quiet : suppress compiler output -.fl - \-help : display this help message -.fl - \-version : display version information -.fl - -.fl - -.fl -Extensions: -.fl - \-Xlocator : enable source location support for generated code -.fl - \-Xsync\-methods : generate accessor methods with the 'synchronized' keyword -.fl - \-mark\-generated : mark the generated code as @javax.annotation.Generated -.fl - \-episode <FILE> : generate the episode file for separate compilation -.fl -\fP +\fIxjc\fR [ \fIoptions\fR ] \fIschema\fR \fIfile/URL/dir/jar\fR \&.\&.\&. [\fI\-b\fR \fIbindinfo\fR ] \&.\&.\&. .fi - -.LP +.if n \{\ +.RE +.\} +.PP +\fIoptions\fR +.RS 4 +コマンドライン・オプション。オプションを参照してください。 +.RE +.PP +schema \fIfile/URL/dir/jar \&.\&.\&.\fR +.RS 4 +XMLスキーマ・ファイルの場所。\fIdir\fRが指定されている場合は、すべてのスキーマ・ファイルがコンパイルされます。\fIjar\fRが指定されている場合は、\fI/META\-INF/sun\-jaxb\&.episode\fRバインディング・ファイルがコンパイルされます。 +.RE +.PP +\-b \fIbindinfo\fR +.RS 4 +バインディング・ファイルの場所。 +.RE +.SH "説明" +.PP +プラットフォームのbinディレクトリにある適切な\fIxjc\fRシェル・スクリプトを使用して、バインディング・コンパイラを起動します。バインディング・コンパイラを実行するAntタスクもあります。http://jaxb\&.java\&.net/nonav/2\&.1\&.3/docs/xjcTask\&.htmlの +Using the XJC with Antを参照してください .SH "オプション" -.LP -.RS 3 -.TP 3 -\-nv -デフォルトでは、XJC バインディングコンパイラは、ソーススキーマを処理する前に厳密な検証を実行します。このオプションを使用すると、厳密なスキーマ検証を無効にします。これは、バインディングコンパイラが検証を一切実行しないということではありません。より厳密でない検証を実行するということです。 -.TP 3 -\-extension -デフォルトでは、XJC バインディングコンパイラは、JAXB 仕様の「Compatibility」の章で説明されている規則を厳密に強制します。付録 E.2 には、JAXB v1.0 で完全にはサポートされていない一連の W3C XML スキーマ機能が定義されています。場合によっては、このスイッチで有効になる「\-extension」モードでそれらの機能が使用できるかもしれません。また、デフォルトの厳密なモードでは、仕様に定義されているバインディングカスタマイズのみが使用できます。「\-extension」スイッチを指定すれば、JAXB Vendor Extension を使用できます。 -.TP 3 -\-b <file> -処理する外部バインディングファイルを 1 つまたは複数指定します。(バインディングファイルごとに \f2「\-b」\fP スイッチを指定する必要があります。) 外部バインディングファイルの構文は非常に柔軟です。複数のスキーマのカスタマイズが含まれる 1 つのバインディングファイルを使用したり、それらのカスタマイズを複数のバインディングファイルに分割したりできます。次に例を示します。 \f2xjc schema1.xsd schema2.xsd schema3.xsd \-b bindings123.xjb\fP -.br -\f2xjc schema1.xsd schema2.xsd schema3.xsd \-b bindings1.xjb \-b bindings2.xjb \-b bindings3.xjb\fP また、コマンド行にスキーマファイルとバインディングファイルを指定する順番は任意です。 -.TP 3 -\-d <dir> -デフォルトでは、XJC バインディングコンパイラは、Java コンテンツクラスを現在のディレクトリに生成します。このオプションを使用すると、代替出力ディレクトリを指定できます。出力ディレクトリはあらかじめ存在している必要があります。XJC バインディングコンパイラは、このディレクトリを自動的に作成しません。 -.TP 3 -\-p <pkg> -このコマンド行オプション経由でターゲットパッケージを指定した場合、その指定内容は、パッケージ名に対するすべてのバインディングカスタマイズや、仕様で規定されているデフォルトのパッケージ名アルゴリズムよりも優先されます。 -.TP 3 -\-httpproxy <proxy> -HTTP/HTTPS プロキシを指定します。形式は [user[:password]@]proxyHost[:proxyPort] です。従来の \f2\-host\fP および \f2\-port\fP は、下位互換性のためにリファレンス実装でもサポートされていますが、推奨されなくなりました。このオプションで指定されたパスワードは、 \f2top\fP コマンドを使用するユーザーなど、ほかのユーザーが表示できる引数であることに注意してください。セキュリティーを高めるには、次の \f2\-httpproxyfile\fP を使用してください。 -.TP 3 -\-httpproxyfile <file> -HTTP/HTTPS プロキシをファイル経由で指定します。形式は上記と同じですが、このファイル内に指定されたパスワードをほかのユーザーが表示することはできません。 -.TP 3 -\-classpath <arg> -<jxb:javaType> および <xjc:superClass> \f2カスタマイズが使用する\fP クライアントアプリケーションの \f2クラスファイルの検索場所を\fP 指定します。 -.TP 3 -\-catalog <file> -外部エンティティー参照を解決するカタログファイルを指定します。TR9401、XCatalog、および OASIS XML Catalog 形式がサポートされます。詳細は、『XML Entity and URI Resolvers』ドキュメントを参照するか、 \f2カタログリゾルバの\fP サンプルアプリケーションを調べてください。 -.TP 3 -\-readOnly -デフォルトでは、XJC バインディングコンパイラは、生成する Java ソースファイルを書き込みから保護しません。このオプションを使用すると、XJC バインディングコンパイラは生成される Java ソースを強制的に読み取り専用にします。 -.TP 3 -\-npa -パッケージレベルの注釈を **/package\-info.java に生成することを抑制します。このスイッチを使用して生成するコードでは、これらの注釈がほかの生成済みクラスに内部化されます。 -.TP 3 -\-no\-header -多少のメモとタイムスタンプを含むファイルヘッダーコメントの生成を抑制します。このオプションを使用すると、生成されたコードがわかりにくくなります。 -.TP 3 -\-target 2.0 -なんらかの JAXB 2.1 機能に依存するコードを生成しないようにします。これにより、生成されたコードを JAXB 2.0 ランタイム (JavaSE 6 など) で実行できます。 -.TP 3 -\-xmlschema -入力スキーマを W3C XML スキーマ (デフォルト) と見なします。このスイッチを指定しなくても、入力スキーマは W3C XML スキーマと見なされます。 -.TP 3 -\-relaxng -入力スキーマを RELAX NG として扱います (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 -.TP 3 -\-relaxng\-compact -入力スキーマを RELAX NG 圧縮構文として処理します (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 -.TP 3 -\-dtd -入力スキーマを XML DTD として扱います (試験的、未サポート)。RELAX NG スキーマのサポートは JAXB Vendor Extension として提供されています。 -.TP 3 -\-wsdl -入力を WSDL として扱い、その内部のスキーマをコンパイルします (試験的、未サポート)。 -.TP 3 -\-quiet -進捗情報や警告など、コンパイラの出力を抑制します。 -.TP 3 -\-verbose -情報メッセージを出力したり特定のエラー発生時にスタックトレースを表示したりするなど、極めて冗長になります。 -.TP 3 -\-help -コンパイラスイッチの概要を表示します。 -.TP 3 -\-version -コンパイラのバージョン情報を表示します。 -.TP 3 -<schema file/URL/dir> -コンパイル対象となる 1 つまたは複数のスキーマファイルを指定します。ユーザーがディレクトリを指定した場合、xjc はそのディレクトリを走査し、そこで見つかったすべてのスキーマファイルをコンパイルします。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +非標準オプションも参照してください .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> -コンパイルごとに指定されたエピソードファイルを生成します。 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +非推奨で削除されたオプションも参照してください .RE - -.LP -.SS -非推奨コマンド行オプションおよび削除されたコマンド行オプション -.LP -.RS 3 -.TP 3 -\-host & \-port -これらのオプションは非推奨となり、\f3\-httpproxy\fP オプションで置き換えられました。これらのオプションは、下位互換性を確保する目的で引き続きサポートされますが、ドキュメントには記載されず、将来のリリースで削除される可能性もあります。 -.TP 3 -\-use\-runtime -JAXB 2.0 仕様で移植性のあるランタイムが規定されたため、JAXB RI が **/impl/runtime パッケージを生成する必要がなくなりました。このため、このスイッチは不要となり、削除されました。 -.TP 3 -\-source -\-source 互換性スイッチは、JAXB 2.0 の最初の Early Access 版で導入されました。このスイッチは、JAXB 2.0 の今後のリリースから削除されることになりました。1.0.x コードを生成する必要がある場合は、1.0.x コードベースのインストールを使用してください。 +.PP +\-nv +.RS 4 +デフォルトでは、XJCバインディング・コンパイラは、ソース・スキーマを処理する前に厳密な検証を実行します。このオプションを使用すると、厳密なスキーマ検証か無効になります。これは、バインディング・コンパイラが検証を一切実行しないということではありません。より厳密でない検証を実行するということです。 .RE - -.LP -.SS -コンパイラの制限 -.LP -.LP -通常は、関連するすべてのスキーマを、同じバインディングコンパイラスイッチを指定して 1 つの単位としてコンパイルするのがもっとも安全です。 -.LP -.LP -xjc を実行するときは、次に示す制限に注意してください。これらの制限のほとんどは、xjc を何度か呼び出して複数のスキーマをコンパイルする場合にのみ適用されます。 -.LP -.RS 3 -.TP 2 -o -複数のスキーマを同時にコンパイルする場合は、ターゲットの Java パッケージ名に次の優先順位の規則が適用されることに注意してください。 -.RS 3 -.TP 3 -1. -「\f2\-p\fP」コマンド行オプションがもっとも優先されます。 -.TP 3 -2. -<\f2jaxb:package\fP> のカスタマイズ -.TP 3 -3. -\f2targetNamespace\fP が宣言されている場合は、 \f2仕様に定義されている targetNamespace\fP \-> Java パッケージ名のアルゴリズムを適用します。 -.TP 3 -4. -\f2targetNamespace\fP が宣言されていない場合は、「generated」という名前のハードコードされたパッケージを使用します。 +.PP +\-extension +.RS 4 +デフォルトでは、XJCバインディング・コンパイラは、JAXB仕様のCompatibilityの章で説明されているルールを厳密に強制します。付録E\&.2には、JAXB v1\&.0で完全にはサポートされていない一連のW3C XMLスキーマ機能が定義されています。場合によっては、このスイッチで有効になる\fI\-extension\fRモードでそれらの機能が使用できる場合があります。また、デフォルトの厳密なモードでは、仕様に定義されているバインディング・カスタマイズのみが使用できます。\fI\-extension\fRスイッチを指定すれば、JAXB Vendor Extensionを使用できます。 .RE -.TP 2 -o -名前空間ごとに複数の <\f2jaxb:schemaBindings\fP> を持つことは不正です。このため、1 つのターゲット名前空間内の 2 つのスキーマを異なる Java パッケージにコンパイルすることはできません。 -.TP 2 -o -1 つの Java パッケージにコンパイルされるすべてのスキーマは、XJC バインディングコンパイラに同時に送信する必要があります。個別にコンパイルすることはできず、予期したとおりに動作しません。 -.TP 2 -o -複数のスキーマファイルにまたがる要素置換グループは、同時にコンパイルする必要があります。 +.PP +\-b \fIfile\fR +.RS 4 +処理する外部バインディング・ファイルを1つまたは複数指定します。バインディング・ファイルごとに\fI\-b\fRスイッチを指定する必要があります。外部バインディング・ファイルの構文は柔軟です。複数のスキーマのカスタマイズが含まれる1つのバインディング・ファイルを使用したり、それらのカスタマイズを複数のバインディング・ファイルに分割したりできます。次に例を示します。\fIxjc schema1\&.xsd schema2\&.xsd schema3\&.xsd \-b bindings123\&.xjb\fR +\fIxjc schema1\&.xsd schema2\&.xsd schema3\&.xsd \-b bindings1\&.xjb \-b bindings2\&.xjb \-b bindings3\&.xjb\fRまた、コマンドラインにスキーマ・ファイルとバインディング・ファイルを指定する順番は任意です。 .RE - -.LP +.PP +\-d \fIdir\fR +.RS 4 +デフォルトでは、XJCバインディング・コンパイラは、Javaコンテンツ・クラスを現在のディレクトリに生成します。このオプションを使用すると、代替出力ディレクトリを指定できます。出力ディレクトリはすでに存在している必要があります。XJCバインディング・コンパイラでは作成されません。 +.RE +.PP +\-p \fIpkg\fR +.RS 4 +このコマンドライン・オプションでターゲット・パッケージを指定した場合、その指定内容は、パッケージ名に対するすべてのバインディング・カスタマイズや、仕様で規定されているデフォルトのパッケージ名アルゴリズムよりも優先されます。 +.RE +.PP +\-httpproxy \fIproxy\fR +.RS 4 +\fI[user[:password]@]proxyHost[:proxyPort]\fR形式でHTTPまたはHTTPSプロキシを指定します。古い\fI\-host\fRおよび\fI\-port\fRオプションは、下位互換性のために引き続きRIでサポートされますが、非推奨となりました。このオプションで指定されたパスワードは、topコマンドを使用する他のユーザーが表示できる引数です。セキュリティを高めるには、\fI\-httpproxyfile\fRを使用してください。 +.RE +.PP +\-httpproxyfile file +.RS 4 +ファイルを使用して、HTTPまたはHTTPSプロキシを指定します。形式は\fI\-httpproxy\fRオプションと同じですが、このファイル内に指定されたパスワードを他のユーザーが表示することはできません。 +.RE +.PP +\-classpath arg +.RS 4 +\fIjxb:javaType\fRおよびxjc:\fIsuperClass\fRカスタマイズが使用するクライアント・アプリケーションのクラス・ファイルの検索場所を指定します。 +.RE +.PP +\-catalog file +.RS 4 +外部エンティティ参照を解決するカタログ・ファイルを指定します。TR9401、XCatalogおよびOASIS XML Catalogの各形式がサポートされます。http://xerces\&.apache\&.org/xml\-commons/components/resolver/resolver\-article\&.htmlの +XML Entity and URI Resolversを参照してください +.RE +.PP +\-readOnly +.RS 4 +デフォルトでは、XJCバインディング・コンパイラは、生成するJavaソース・ファイルを書込みから保護しません。このオプションを使用すると、XJCバインディング・コンパイラは生成されるJavaソースを強制的に読取り専用にします。 +.RE +.PP +\-npa +.RS 4 +\fI**/package\-info\&.java\fRへのパッケージ・レベルの注釈の生成を抑制します。このスイッチを使用して生成するコードでは、これらの注釈が他の生成済クラスに内部化されます。 +.RE +.PP +\-no\-header +.RS 4 +多少のメモとタイムスタンプを含むファイル・ヘッダー・コメントの生成を抑制します。これを使用すると、生成されたコードと\fIdiff\fRコマンドとの互換性がより強くなります。 +.RE +.PP +\-target 2\&.0 +.RS 4 +JAXB 2\&.1機能に依存するコードを生成しないようにします。これにより、生成されたコードをJAXB 2\&.0ランタイム環境(Java SE 6など)で実行できるようになります。 +.RE +.PP +\-xmlschema +.RS 4 +入力スキーマをW3C XMLスキーマとして扱います(デフォルト)。このスイッチを指定しない場合、入力スキーマはW3C XMLスキーマと同じように扱われます。 +.RE +.PP +\-relaxing +.RS 4 +入力スキーマをRELAX NGとして扱います(試験的および未サポート)。RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。 +.RE +.PP +\-relaxing\-compact +.RS 4 +入力スキーマをRELAX NG圧縮構文として処理します(試験的および未サポート)。RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。 +.RE +.PP +\-dtd +.RS 4 +入力スキーマをXML DTDとして扱います(試験的および未サポート)。RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。 +.RE +.PP +\-wsdl +.RS 4 +入力をWSDLとして扱い、その内部のスキーマをコンパイルします(試験的および未サポート)。 +.RE +.PP +\-quiet +.RS 4 +進捗情報や警告など、コンパイラの出力を抑制します。 +.RE +.PP +\-verbose +.RS 4 +情報メッセージを出力したり特定のエラー発生時にスタック・トレースを表示したりするなど、きわめて冗長になります。 +.RE +.PP +\-help +.RS 4 +コンパイラ・スイッチのサマリーを表示します。 +.RE +.PP +\-version +.RS 4 +コンパイラのバージョン情報を表示します。 +.RE +.PP +\fIschema file/URL/dir\fR +.RS 4 +コンパイル対象となる1つまたは複数のスキーマ・ファイルを指定します。ディレクトリを指定する場合、\fIxjc\fRコマンドはすべてのスキーマ・ファイルをスキャンしてコンパイルします。 +.RE +.SS "非標準オプション" +.PP +\-XLocator +.RS 4 +生成されたコードでは、非整列化の後にJava Beanインスタンスに含まれるソースXMLに関するSAX Locator情報が公開されます。 +.RE +.PP +\-Xsync\-methods +.RS 4 +生成されたすべてのメソッド・シグニチャに\fIsynchronized\fRキーワードが含められます。 +.RE +.PP +\-mark\-generated +.RS 4 +生成されたコードに注釈\fI@javax\&.annotation\&.Generated\fRを付けます。 +.RE +.PP +\-episode file +.RS 4 +コンパイルごとに指定されたエピソード・ファイルを生成します。 +.RE +.SS "非推奨で削除されたオプション" +.PP +\-host & \-port +.RS 4 +これらのオプションは\fI\-httpproxy\fRオプションで置き換えられました。これらのオプションは、下位互換性を確保するためにサポートされますが、ドキュメントには記載されず、将来のリリースで削除される可能性もあります。 +.RE +.PP +\-use\-runtime +.RS 4 +JAXB 2\&.0仕様では、移植性のあるランタイム環境が定義されたため、JAXB RIが\fI**/impl/runtime \fRパッケージを生成する必要がなくなりました。このため、このスイッチは不要となり、削除されました。 +.RE +.PP +\-source +.RS 4 +\fI\-source\fR互換性スイッチは、JAXB 2\&.0の最初のEarly Access版で導入されました。このスイッチはJAXB 2\&.0の今後のリリースから削除されます。1\&.0\&.xコードを生成する必要がある場合は、1\&.0\&.xコード・ベースのインストールを使用してください。 +.RE +.SH "コンパイラの制限" +.PP +通常は、関連するすべてのスキーマを、同じバインディング・コンパイラ・スイッチを指定して1つの単位としてコンパイルするのが最も安全です。\fIxjc\fRコマンドの実行時には、次の制限リストに留意してください。これらの問題のほとんどは、\fIxjc\fRコマンドを何度か呼び出して複数のスキーマをコンパイルする場合にのみ当てはまります。 +.PP +複数のスキーマを同時にコンパイルする場合は、ターゲットのJavaパッケージ名に次の優先順位のルールが適用されることに注意してください。 +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +\fI\-p\fRオプションが最も優先されます。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +\fIjaxb:package\fRのカスタマイズ。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 3.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 3." 4.2 +.\} +\fItargetNamespace\fRが宣言されている場合は、\fIt\fR\fIargetNamespace\fRを仕様で定義されているJavaパッケージ名のアルゴリズムに適用します。 +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 4.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 4." 4.2 +.\} +\fItargetNamespace\fRが宣言されていない場合は、\fIgenerated\fRという名前のハードコードされたパッケージを使用します。 +.RE +.PP +1つのネームスペースが複数の\fIjaxb:schemaBindings\fRを持つことはできないため、異なるJavaパッケージにコンパイラされる同一ターゲット・ネームスペースが2つのスキーマを持つことはできません。 +.PP +同じJavaパッケージにコンパイラされるスキーマはすべて、同時にXJCバインディング・コンパイラに送信される必要があります。別々にコンパイルすると、予想どおりに機能しません。 +.PP +複数のスキーマ・ファイルにまたがる要素置換グループは、同時にコンパイルする必要があります。 .SH "関連項目" -.LP -.RS 3 -.TP 2 -o -コマンド行でのコンバータの実行 (XJC): [ -.na -\f2コマンド行の命令\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/xjc.html、 -.na -\f2xjc を Ant とともに使用する\fP @ -.fi -https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.html] -.TP 2 -o -.na -\f2XML バインドのための Java アーキテクチャー (JAXB)\fP @ -.fi -http://java.sun.com/javase/6/docs/technotes/guides/xml/jaxb/index.html +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://jaxb\&.java\&.net/nonav/2\&.2\&.3u1/docs/xjc\&.htmlの +Binding Compiler (xjc) .RE - -.LP - +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +http://www\&.oracle\&.com/technetwork/articles/javase/index\-140168\&.htmlの +Java Architecture for XML Binding (JAXB) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_BsdOS_ALSA_MidiUtils.c b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_BsdOS_ALSA_MidiUtils.c index c12bed9260c..086b37487f7 100644 --- a/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_BsdOS_ALSA_MidiUtils.c +++ b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_BsdOS_ALSA_MidiUtils.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -229,8 +229,9 @@ static int deviceInfoIterator(UINT32 deviceID, snd_rawmidi_info_t *rawmidi_info, desc->deviceID = deviceID; buffer[0]=' '; buffer[1]='['; + // buffer[300] is enough to store the actual device string w/o overrun getDeviceStringFromDeviceID(&buffer[2], deviceID, usePlugHw, ALSA_RAWMIDI); - strcat(buffer, "]"); + strncat(buffer, "]", sizeof(buffer) - strlen(buffer) - 1); strncpy(desc->name, (cardinfo != NULL) ? snd_ctl_card_info_get_id(cardinfo) diff --git a/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_BsdOS_ALSA_PCMUtils.c b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_BsdOS_ALSA_PCMUtils.c index 9abd53a0f8e..6660047e4e3 100644 --- a/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_BsdOS_ALSA_PCMUtils.c +++ b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_BsdOS_ALSA_PCMUtils.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -184,8 +184,9 @@ int deviceInfoIterator(UINT32 deviceID, snd_pcm_info_t* pcminfo, 1 : snd_pcm_info_get_subdevices_count(pcminfo); *desc->deviceID = deviceID; buffer[0]=' '; buffer[1]='['; + // buffer[300] is enough to store the actual device string w/o overrun getDeviceStringFromDeviceID(&buffer[2], deviceID, usePlugHw, ALSA_PCM); - strcat(buffer, "]"); + strncat(buffer, "]", sizeof(buffer) - strlen(buffer) - 1); strncpy(desc->name, (cardinfo != NULL) ? snd_ctl_card_info_get_id(cardinfo) diff --git a/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiUtils.c b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiUtils.c index 7d2ac119234..14475413f1c 100644 --- a/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiUtils.c +++ b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiUtils.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -229,8 +229,9 @@ static int deviceInfoIterator(UINT32 deviceID, snd_rawmidi_info_t *rawmidi_info, desc->deviceID = deviceID; buffer[0]=' '; buffer[1]='['; + // buffer[300] is enough to store the actual device string w/o overrun getDeviceStringFromDeviceID(&buffer[2], deviceID, usePlugHw, ALSA_RAWMIDI); - strcat(buffer, "]"); + strncat(buffer, "]", sizeof(buffer) - strlen(buffer) - 1); strncpy(desc->name, (cardinfo != NULL) ? snd_ctl_card_info_get_id(cardinfo) diff --git a/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCMUtils.c b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCMUtils.c index c9f12176d86..da7b9a84745 100644 --- a/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCMUtils.c +++ b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCMUtils.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -184,8 +184,9 @@ int deviceInfoIterator(UINT32 deviceID, snd_pcm_info_t* pcminfo, 1 : snd_pcm_info_get_subdevices_count(pcminfo); *desc->deviceID = deviceID; buffer[0]=' '; buffer[1]='['; + // buffer[300] is enough to store the actual device string w/o overrun getDeviceStringFromDeviceID(&buffer[2], deviceID, usePlugHw, ALSA_PCM); - strcat(buffer, "]"); + strncat(buffer, "]", sizeof(buffer) - strlen(buffer) - 1); strncpy(desc->name, (cardinfo != NULL) ? snd_ctl_card_info_get_id(cardinfo) diff --git a/jdk/src/solaris/native/java/net/NetworkInterface.c b/jdk/src/solaris/native/java/net/NetworkInterface.c index 8ff3bb1fd27..ea467890a1e 100644 --- a/jdk/src/solaris/native/java/net/NetworkInterface.c +++ b/jdk/src/solaris/native/java/net/NetworkInterface.c @@ -231,7 +231,11 @@ JNIEXPORT jobject JNICALL Java_java_net_NetworkInterface_getByName0 } name_utf = (*env)->GetStringUTFChars(env, name, &isCopy); - + if (name_utf == NULL) { + if (!(*env)->ExceptionCheck(env)) + JNU_ThrowOutOfMemoryError(env, NULL); + return NULL; + } /* * Search the list of interface based on name */ @@ -499,7 +503,11 @@ JNIEXPORT jbyteArray JNICALL Java_java_net_NetworkInterface_getMacAddr0(JNIEnv * const char* name_utf; name_utf = (*env)->GetStringUTFChars(env, name, &isCopy); - + if (name_utf == NULL) { + if (!(*env)->ExceptionCheck(env)) + JNU_ThrowOutOfMemoryError(env, NULL); + return NULL; + } if ((sock =openSocketWithFallback(env, name_utf)) < 0) { (*env)->ReleaseStringUTFChars(env, name, name_utf); return JNI_FALSE; @@ -546,6 +554,11 @@ JNIEXPORT jint JNICALL Java_java_net_NetworkInterface_getMTU0(JNIEnv *env, jclas const char* name_utf; name_utf = (*env)->GetStringUTFChars(env, name, &isCopy); + if (name_utf == NULL) { + if (!(*env)->ExceptionCheck(env)) + JNU_ThrowOutOfMemoryError(env, NULL); + return ret; + } if ((sock =openSocketWithFallback(env, name_utf)) < 0) { (*env)->ReleaseStringUTFChars(env, name, name_utf); @@ -569,7 +582,11 @@ static int getFlags0(JNIEnv *env, jstring name) { int flags = 0; name_utf = (*env)->GetStringUTFChars(env, name, &isCopy); - + if (name_utf == NULL) { + if (!(*env)->ExceptionCheck(env)) + JNU_ThrowOutOfMemoryError(env, NULL); + return -1; + } if ((sock = openSocketWithFallback(env, name_utf)) < 0) { (*env)->ReleaseStringUTFChars(env, name, name_utf); return -1; @@ -613,10 +630,9 @@ jobject createNetworkInterface(JNIEnv *env, netif *ifs) { * Create a NetworkInterface object and populate it */ netifObj = (*env)->NewObject(env, ni_class, ni_ctrID); + CHECK_NULL_RETURN(netifObj, NULL); name = (*env)->NewStringUTF(env, ifs->name); - if (netifObj == NULL || name == NULL) { - return NULL; - } + CHECK_NULL_RETURN(name, NULL); (*env)->SetObjectField(env, netifObj, ni_nameID, name); (*env)->SetObjectField(env, netifObj, ni_descID, name); (*env)->SetIntField(env, netifObj, ni_indexID, ifs->index); @@ -655,6 +671,8 @@ jobject createNetworkInterface(JNIEnv *env, netif *ifs) { iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (iaObj) { setInetAddress_addr(env, iaObj, htonl(((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr)); + } else { + return NULL; } ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); if (ibObj) { @@ -665,10 +683,14 @@ jobject createNetworkInterface(JNIEnv *env, netif *ifs) { if (ia2Obj) { setInetAddress_addr(env, ia2Obj, htonl(((struct sockaddr_in*)addrP->brdcast)->sin_addr.s_addr)); (*env)->SetObjectField(env, ibObj, ni_ib4broadcastID, ia2Obj); + } else { + return NULL; } } (*env)->SetShortField(env, ibObj, ni_ib4maskID, addrP->mask); (*env)->SetObjectArrayElement(env, bindArr, bind_index++, ibObj); + } else { + return NULL; } } @@ -688,20 +710,20 @@ jobject createNetworkInterface(JNIEnv *env, netif *ifs) { setInet6Address_scopeid(env, iaObj, scope); setInet6Address_scopeifname(env, iaObj, netifObj); } + } else { + return NULL; } ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); if (ibObj) { (*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj); (*env)->SetShortField(env, ibObj, ni_ib4maskID, addrP->mask); (*env)->SetObjectArrayElement(env, bindArr, bind_index++, ibObj); + } else { + return NULL; } } #endif - if (iaObj == NULL) { - return NULL; - } - (*env)->SetObjectArrayElement(env, addrArr, addr_index++, iaObj); addrP = addrP->next; } @@ -893,9 +915,14 @@ netif *addif(JNIEnv *env, int sock, const char * if_name, // Deal with broadcast addr & subnet mask struct sockaddr * brdcast_to = (struct sockaddr *) ((char *) addrP + sizeof(netaddr) + addr_size); addrP->brdcast = getBroadcast(env, sock, name, brdcast_to ); - - if ((mask = getSubnet(env, sock, name)) != -1) + if ((*env)->ExceptionCheck(env) == JNI_TRUE) { + return ifs; + } + if ((mask = getSubnet(env, sock, name)) != -1) { addrP->mask = mask; + } else if((*env)->ExceptionCheck(env)) { + return ifs; + } } /** @@ -1377,6 +1404,7 @@ static int getMacAddress(JNIEnv *env, int sock, const char* ifname, const struct nddp = (struct kinfo_ndd *)malloc(size); if (!nddp) { + JNU_ThrowOutOfMemoryError(env, "Network interface getMacAddress native buffer allocation failed"); return -1; } diff --git a/jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c b/jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c index 842fa2af5d9..7771ccd5cb4 100644 --- a/jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c +++ b/jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c @@ -29,6 +29,7 @@ #include <mach/mach.h> #include <mach/task_info.h> +#include "jvm.h" JNIEXPORT jdouble JNICALL Java_sun_management_OperatingSystemImpl_getSystemCpuLoad0 diff --git a/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c index 54e16af7f6b..c74af9607f1 100644 --- a/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c +++ b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c @@ -38,8 +38,7 @@ #include "sun_nio_ch_sctp_ResultContainer.h" #include "sun_nio_ch_sctp_PeerAddrChange.h" -/* sizeof(union sctp_notification */ -#define NOTIFICATION_BUFFER_SIZE 280 +static int SCTP_NOTIFICATION_SIZE = sizeof(union sctp_notification); #define MESSAGE_IMPL_CLASS "sun/nio/ch/sctp/MessageInfoImpl" #define RESULT_CONTAINER_CLASS "sun/nio/ch/sctp/ResultContainer" @@ -463,20 +462,47 @@ JNIEXPORT jint JNICALL Java_sun_nio_ch_sctp_SctpChannelImpl_receive0 if (msg->msg_flags & MSG_NOTIFICATION) { char *bufp = (char*)addr; union sctp_notification *snp; + jboolean allocated = JNI_FALSE; - if (!(msg->msg_flags & MSG_EOR) && length < NOTIFICATION_BUFFER_SIZE) { - char buf[NOTIFICATION_BUFFER_SIZE]; + if (rv > SCTP_NOTIFICATION_SIZE) { + JNU_ThrowInternalError(env, "should not reach here"); + return -1; + } + + if (!(msg->msg_flags & MSG_EOR) && length < SCTP_NOTIFICATION_SIZE) { + char* newBuf; int rvSAVE = rv; - memcpy(buf, addr, rv); - iov->iov_base = buf + rv; - iov->iov_len = NOTIFICATION_BUFFER_SIZE - rv; + + if ((newBuf = malloc(SCTP_NOTIFICATION_SIZE)) == NULL) { + JNU_ThrowOutOfMemoryError(env, "Out of native heap space."); + return -1; + } + allocated = JNI_TRUE; + + memcpy(newBuf, addr, rv); + iov->iov_base = newBuf + rv; + iov->iov_len = SCTP_NOTIFICATION_SIZE - rv; if ((rv = recvmsg(fd, msg, flags)) < 0) { handleSocketError(env, errno); return 0; } - bufp = buf; + bufp = newBuf; rv += rvSAVE; } +#ifdef __sparc + else if ((intptr_t)addr & 0x3) { + /* the given buffer is not 4 byte aligned */ + char* newBuf; + if ((newBuf = malloc(SCTP_NOTIFICATION_SIZE)) == NULL) { + JNU_ThrowOutOfMemoryError(env, "Out of native heap space."); + return -1; + } + allocated = JNI_TRUE; + + memcpy(newBuf, addr, rv); + bufp = newBuf; + } +#endif snp = (union sctp_notification *) bufp; if (handleNotification(env, fd, resultContainerObj, snp, rv, (msg->msg_flags & MSG_EOR), @@ -484,9 +510,16 @@ JNIEXPORT jint JNICALL Java_sun_nio_ch_sctp_SctpChannelImpl_receive0 /* We have received a notification that is of interest to to the Java API. The appropriate notification will be set in the result container. */ + if (allocated == JNI_TRUE) { + free(bufp); + } return 0; } + if (allocated == JNI_TRUE) { + free(bufp); + } + // set iov back to addr, and reset msg_controllen iov->iov_base = addr; iov->iov_len = length; diff --git a/jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c b/jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c index cf3ff20300f..dbc751fa366 100644 --- a/jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c +++ b/jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c @@ -78,8 +78,10 @@ JNIEXPORT void JNICALL Java_sun_tools_attach_BsdVirtualMachine_connect struct sockaddr_un addr; int err = 0; + memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; - strcpy(addr.sun_path, p); + /* strncpy is safe because addr.sun_path was zero-initialized before. */ + strncpy(addr.sun_path, p, sizeof(addr.sun_path) - 1); if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) == -1) { err = errno; diff --git a/jdk/src/solaris/native/sun/tools/attach/LinuxVirtualMachine.c b/jdk/src/solaris/native/sun/tools/attach/LinuxVirtualMachine.c index 8c8c4eb1d69..5646a326542 100644 --- a/jdk/src/solaris/native/sun/tools/attach/LinuxVirtualMachine.c +++ b/jdk/src/solaris/native/sun/tools/attach/LinuxVirtualMachine.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -156,8 +156,10 @@ JNIEXPORT void JNICALL Java_sun_tools_attach_LinuxVirtualMachine_connect struct sockaddr_un addr; int err = 0; + memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; - strcpy(addr.sun_path, p); + /* strncpy is safe because addr.sun_path was zero-initialized before. */ + strncpy(addr.sun_path, p, sizeof(addr.sun_path) - 1); if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) == -1) { err = errno; diff --git a/jdk/src/windows/back/linker_md.c b/jdk/src/windows/back/linker_md.c index 05aaf4deda3..f5bfe230c22 100644 --- a/jdk/src/windows/back/linker_md.c +++ b/jdk/src/windows/back/linker_md.c @@ -33,6 +33,7 @@ #include <string.h> #include <errno.h> #include <io.h> +#include <stdlib.h> #include "sys.h" diff --git a/jdk/src/windows/back/proc_md.h b/jdk/src/windows/back/proc_md.h index f77c7646f2b..dc8caf18273 100644 --- a/jdk/src/windows/back/proc_md.h +++ b/jdk/src/windows/back/proc_md.h @@ -27,6 +27,7 @@ #include <process.h> #include <time.h> +#include <Windows.h> #define MUTEX_T int #define MUTEX_INIT 0 @@ -40,4 +41,4 @@ #define popen _popen #define pclose _pclose -#define sleep _sleep +#define sleep(s) Sleep((s)*1000) diff --git a/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java b/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java index 765a9b4962b..696633917a2 100644 --- a/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java +++ b/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -68,7 +68,7 @@ import javax.swing.SwingConstants; * @author Leif Samuelsson * @author Kenneth Russell * @since 1.4 */ - +@SuppressWarnings("serial") // JDK-implementation class final class Win32ShellFolder2 extends ShellFolder { private static native void initIDs(); diff --git a/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java b/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java index b14676c7eb7..dbc4129618b 100644 --- a/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java +++ b/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java @@ -54,13 +54,7 @@ public class Win32ShellFolderManager2 extends ShellFolderManager { static { // Load library here - AccessController.doPrivileged( - new java.security.PrivilegedAction<Void>() { - public Void run() { - System.loadLibrary("awt"); - return null; - } - }); + sun.awt.windows.WToolkit.loadLibraries(); } public ShellFolder createShellFolder(File file) throws FileNotFoundException { diff --git a/jdk/src/windows/classes/sun/awt/windows/WCustomCursor.java b/jdk/src/windows/classes/sun/awt/windows/WCustomCursor.java index dc5debd4af5..81e77c86ff7 100644 --- a/jdk/src/windows/classes/sun/awt/windows/WCustomCursor.java +++ b/jdk/src/windows/classes/sun/awt/windows/WCustomCursor.java @@ -38,6 +38,7 @@ import sun.awt.image.ToolkitImage; * @see Component#setCursor * @author ThomasBall */ +@SuppressWarnings("serial") // JDK-implementation class final class WCustomCursor extends CustomCursor { WCustomCursor(Image cursor, Point hotSpot, String name) diff --git a/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFrame.java b/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFrame.java index 25d45dca90d..bc22003a261 100644 --- a/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFrame.java +++ b/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFrame.java @@ -35,6 +35,7 @@ import sun.security.action.GetPropertyAction; import java.security.PrivilegedAction; import java.security.AccessController; +@SuppressWarnings("serial") // JDK-implementation class public class WEmbeddedFrame extends EmbeddedFrame { static { diff --git a/jdk/src/windows/classes/sun/awt/windows/WFontMetrics.java b/jdk/src/windows/classes/sun/awt/windows/WFontMetrics.java index b92f3b03b5e..01dae69c91a 100644 --- a/jdk/src/windows/classes/sun/awt/windows/WFontMetrics.java +++ b/jdk/src/windows/classes/sun/awt/windows/WFontMetrics.java @@ -33,6 +33,7 @@ import java.util.Hashtable; * * @author Jim Graham */ +@SuppressWarnings("serial") // JDK-implementation class final class WFontMetrics extends FontMetrics { static { diff --git a/jdk/src/windows/classes/sun/awt/windows/WPageDialog.java b/jdk/src/windows/classes/sun/awt/windows/WPageDialog.java index 16d707bc25c..877e722e1ae 100644 --- a/jdk/src/windows/classes/sun/awt/windows/WPageDialog.java +++ b/jdk/src/windows/classes/sun/awt/windows/WPageDialog.java @@ -34,6 +34,7 @@ import java.awt.print.PrinterJob; import java.awt.print.PageFormat; import java.awt.print.Printable; +@SuppressWarnings("serial") // JDK-implementation class final class WPageDialog extends WPrintDialog { static { initIDs(); diff --git a/jdk/src/windows/classes/sun/awt/windows/WPrintDialog.java b/jdk/src/windows/classes/sun/awt/windows/WPrintDialog.java index c3d0295f44f..9f518311876 100644 --- a/jdk/src/windows/classes/sun/awt/windows/WPrintDialog.java +++ b/jdk/src/windows/classes/sun/awt/windows/WPrintDialog.java @@ -32,6 +32,7 @@ import java.awt.print.PrinterJob; import sun.awt.AWTAccessor; +@SuppressWarnings("serial") // JDK-implementation class class WPrintDialog extends Dialog { static { initIDs(); diff --git a/jdk/src/windows/classes/sun/awt/windows/WPrinterJob.java b/jdk/src/windows/classes/sun/awt/windows/WPrinterJob.java index 5121562ebcc..5adc64854d3 100644 --- a/jdk/src/windows/classes/sun/awt/windows/WPrinterJob.java +++ b/jdk/src/windows/classes/sun/awt/windows/WPrinterJob.java @@ -2194,6 +2194,7 @@ public final class WPrinterJob extends RasterPrinterJob } +@SuppressWarnings("serial") // JDK-implementation class class PrintToFileErrorDialog extends Dialog implements ActionListener{ public PrintToFileErrorDialog(Frame parent, String title, String message, String buttonText) { diff --git a/jdk/src/windows/classes/sun/awt/windows/WScrollPanePeer.java b/jdk/src/windows/classes/sun/awt/windows/WScrollPanePeer.java index 654c502743d..91bc7fa0ffe 100644 --- a/jdk/src/windows/classes/sun/awt/windows/WScrollPanePeer.java +++ b/jdk/src/windows/classes/sun/awt/windows/WScrollPanePeer.java @@ -164,6 +164,7 @@ final class WScrollPanePeer extends WPanelPeer implements ScrollPanePeer { * scroll bar thumbs and paint the exposed area in one synchronous * operation. */ + @SuppressWarnings("serial") // JDK-implementation class class ScrollEvent extends PeerEvent { ScrollEvent(Object source, Runnable runnable) { super(source, runnable, 0L); diff --git a/jdk/src/windows/classes/sun/print/Win32MediaTray.java b/jdk/src/windows/classes/sun/print/Win32MediaTray.java index 176508cbb4a..eed18007353 100644 --- a/jdk/src/windows/classes/sun/print/Win32MediaTray.java +++ b/jdk/src/windows/classes/sun/print/Win32MediaTray.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * 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,7 +34,7 @@ import java.util.ArrayList; * Windows media trays or bins not covered by MediaTray's standard values. * It also implements driver-defined trays. **/ - +@SuppressWarnings("serial") // JDK implementation class public class Win32MediaTray extends MediaTray { static final Win32MediaTray ENVELOPE_MANUAL = new Win32MediaTray(0, diff --git a/jdk/src/windows/classes/sun/print/Win32PrintService.java b/jdk/src/windows/classes/sun/print/Win32PrintService.java index 1fc7fe46f54..b8b4dfda1b5 100644 --- a/jdk/src/windows/classes/sun/print/Win32PrintService.java +++ b/jdk/src/windows/classes/sun/print/Win32PrintService.java @@ -1720,7 +1720,7 @@ public class Win32PrintService implements PrintService, AttributeUpdater, private native String getPrinterPort(String printerName); } - +@SuppressWarnings("serial") // JDK implementation class class Win32MediaSize extends MediaSizeName { private static ArrayList winStringTable = new ArrayList(); private static ArrayList winEnumTable = new ArrayList(); diff --git a/jdk/src/windows/classes/sun/security/mscapi/KeyStore.java b/jdk/src/windows/classes/sun/security/mscapi/KeyStore.java index 05db5dbd7a6..b055c900b69 100644 --- a/jdk/src/windows/classes/sun/security/mscapi/KeyStore.java +++ b/jdk/src/windows/classes/sun/security/mscapi/KeyStore.java @@ -33,6 +33,7 @@ import java.security.AccessController; import java.security.InvalidKeyException; import java.security.KeyStoreSpi; import java.security.KeyStoreException; +import java.security.PrivilegedAction; import java.security.UnrecoverableKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecurityPermission; @@ -48,8 +49,6 @@ import java.util.Enumeration; import java.util.Iterator; import java.util.UUID; -import sun.security.action.GetPropertyAction; - /** * Implementation of key store for Windows using the Microsoft Crypto API. * @@ -205,9 +204,8 @@ abstract class KeyStore extends KeyStoreSpi { KeyStore(String storeName) { // Get the compatibility mode - String prop = - AccessController.doPrivileged( - new GetPropertyAction(KEYSTORE_COMPATIBILITY_MODE_PROP)); + String prop = AccessController.doPrivileged( + (PrivilegedAction<String>) () -> System.getProperty(KEYSTORE_COMPATIBILITY_MODE_PROP)); if ("false".equalsIgnoreCase(prop)) { keyStoreCompatibilityMode = false; diff --git a/jdk/src/windows/classes/sun/security/mscapi/SunMSCAPI.java b/jdk/src/windows/classes/sun/security/mscapi/SunMSCAPI.java index fb1ce9194a3..37a5d2350ad 100644 --- a/jdk/src/windows/classes/sun/security/mscapi/SunMSCAPI.java +++ b/jdk/src/windows/classes/sun/security/mscapi/SunMSCAPI.java @@ -31,9 +31,6 @@ import java.security.Provider; import java.util.HashMap; import java.util.Map; -import sun.security.action.PutAllAction; - - /** * A Cryptographic Service Provider for the Microsoft Crypto API. * @@ -140,7 +137,12 @@ public final class SunMSCAPI extends Provider { map.put("Cipher.RSA SupportedKeyClasses", "sun.security.mscapi.Key"); if (map != this) { - AccessController.doPrivileged(new PutAllAction(this, map)); + final Provider provider = this; + PrivilegedAction<Void> putAllAction = () -> { + provider.putAll(map); + return null; + }; + AccessController.doPrivileged(putAllAction); } } } diff --git a/jdk/src/windows/native/java/io/WinNTFileSystem_md.c b/jdk/src/windows/native/java/io/WinNTFileSystem_md.c index cfaeccdd030..6ecf818d3ff 100644 --- a/jdk/src/windows/native/java/io/WinNTFileSystem_md.c +++ b/jdk/src/windows/native/java/io/WinNTFileSystem_md.c @@ -85,7 +85,7 @@ extern int wcanonicalizeWithPrefix(const WCHAR *canonicalPrefix, const WCHAR *pa * Retrieves the fully resolved (final) path for the given path or NULL * if the function fails. */ -static WCHAR* getFinalPath(const WCHAR *path) +static WCHAR* getFinalPath(JNIEnv *env, const WCHAR *path) { HANDLE h; WCHAR *result; @@ -121,6 +121,7 @@ static WCHAR* getFinalPath(const WCHAR *path) len = (*GetFinalPathNameByHandle_func)(h, result, len, 0); } else { len = 0; + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); } } @@ -141,6 +142,7 @@ static WCHAR* getFinalPath(const WCHAR *path) /* copy result without prefix into new buffer */ WCHAR *tmp = (WCHAR*)malloc(resultLen * sizeof(WCHAR)); if (tmp == NULL) { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); len = 0; } else { WCHAR *p = result; @@ -164,6 +166,8 @@ static WCHAR* getFinalPath(const WCHAR *path) free(result); result = NULL; } + } else { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); } error = GetLastError(); @@ -257,6 +261,8 @@ Java_java_io_WinNTFileSystem_canonicalize0(JNIEnv *env, jobject this, rv = (*env)->NewString(env, cp, (jsize)wcslen(cp)); } free(cp); + } else { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); } } else if (wcanonicalize(path, canonicalPath, MAX_PATH_LENGTH) >= 0) { rv = (*env)->NewString(env, canonicalPath, (jsize)wcslen(canonicalPath)); @@ -288,6 +294,8 @@ Java_java_io_WinNTFileSystem_canonicalizeWithPrefix0(JNIEnv *env, jobject this, rv = (*env)->NewString(env, cp, (jsize)wcslen(cp)); } free(cp); + } else { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); } } else if (wcanonicalizeWithPrefix(canonicalPrefix, pathWithCanonicalPrefix, @@ -433,7 +441,7 @@ Java_java_io_WinNTFileSystem_setPermission(JNIEnv *env, jobject this, if ((a != INVALID_FILE_ATTRIBUTES) && ((a & FILE_ATTRIBUTE_REPARSE_POINT) != 0)) { - WCHAR *fp = getFinalPath(pathbuf); + WCHAR *fp = getFinalPath(env, pathbuf); if (fp == NULL) { a = INVALID_FILE_ATTRIBUTES; } else { @@ -628,6 +636,7 @@ Java_java_io_WinNTFileSystem_list(JNIEnv *env, jobject this, jobject file) if (search_path == 0) { free (pathbuf); errno = ENOMEM; + JNU_ThrowOutOfMemoryError(env, "native memory allocation faiuled"); return NULL; } wcscpy(search_path, pathbuf); @@ -803,7 +812,7 @@ Java_java_io_WinNTFileSystem_setReadOnly(JNIEnv *env, jobject this, if ((a != INVALID_FILE_ATTRIBUTES) && ((a & FILE_ATTRIBUTE_REPARSE_POINT) != 0)) { - WCHAR *fp = getFinalPath(pathbuf); + WCHAR *fp = getFinalPath(env, pathbuf); if (fp == NULL) { a = INVALID_FILE_ATTRIBUTES; } else { diff --git a/jdk/src/windows/native/java/io/io_util_md.c b/jdk/src/windows/native/java/io/io_util_md.c index 55e9625377e..123995433eb 100644 --- a/jdk/src/windows/native/java/io/io_util_md.c +++ b/jdk/src/windows/native/java/io/io_util_md.c @@ -165,6 +165,9 @@ pathToNTPath(JNIEnv *env, jstring path, jboolean throwFNFE) { pathbuf = (WCHAR*)malloc((pathlen + 6) * sizeof(WCHAR)); if (pathbuf != 0) { wcscpy(pathbuf, ps); + } else { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); + return NULL; } } } else { @@ -188,6 +191,9 @@ pathToNTPath(JNIEnv *env, jstring path, jboolean throwFNFE) { pathbuf = (WCHAR*)malloc((pathlen + 6) * sizeof(WCHAR)); if (pathbuf != 0) { wcscpy(pathbuf, ps); + } else { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); + return NULL; } } } @@ -196,11 +202,18 @@ pathToNTPath(JNIEnv *env, jstring path, jboolean throwFNFE) { if (pathlen == 0) { if (throwFNFE == JNI_TRUE) { - throwFileNotFoundException(env, path); + if (!(*env)->ExceptionCheck(env)) { + throwFileNotFoundException(env, path); + } return NULL; } else { pathbuf = (WCHAR*)malloc(sizeof(WCHAR)); - pathbuf[0] = L'\0'; + if (pathbuf != NULL) { + pathbuf[0] = L'\0'; + } else { + JNU_ThrowOutOfMemoryError(env, 0); + return NULL; + } } } if (pathbuf == 0) { diff --git a/jdk/src/windows/native/java/lang/ProcessEnvironment_md.c b/jdk/src/windows/native/java/lang/ProcessEnvironment_md.c index 3b73dd1d326..5c552f449d8 100644 --- a/jdk/src/windows/native/java/lang/ProcessEnvironment_md.c +++ b/jdk/src/windows/native/java/lang/ProcessEnvironment_md.c @@ -35,9 +35,13 @@ environmentBlock9x(JNIEnv *env) jmethodID String_init_ID; jbyteArray bytes; jbyte *blockA; + jclass string_class; + + string_class = JNU_ClassString(env); + CHECK_NULL_RETURN(string_class, NULL); String_init_ID = - (*env)->GetMethodID(env, JNU_ClassString(env), "<init>", "([B)V"); + (*env)->GetMethodID(env, string_class, "<init>", "([B)V"); CHECK_NULL_RETURN(String_init_ID, NULL); blockA = (jbyte *) GetEnvironmentStringsA(); @@ -54,10 +58,13 @@ environmentBlock9x(JNIEnv *env) while (blockA[i++]) ; - if ((bytes = (*env)->NewByteArray(env, i)) == NULL) return NULL; + if ((bytes = (*env)->NewByteArray(env, i)) == NULL) { + FreeEnvironmentStringsA(blockA); + return NULL; + } (*env)->SetByteArrayRegion(env, bytes, 0, i, blockA); FreeEnvironmentStringsA(blockA); - return (*env)->NewObject(env, JNU_ClassString(env), + return (*env)->NewObject(env, string_class, String_init_ID, bytes); } diff --git a/jdk/src/windows/native/java/lang/ProcessImpl_md.c b/jdk/src/windows/native/java/lang/ProcessImpl_md.c index 6721cc16579..a432f1198dc 100644 --- a/jdk/src/windows/native/java/lang/ProcessImpl_md.c +++ b/jdk/src/windows/native/java/lang/ProcessImpl_md.c @@ -359,24 +359,28 @@ Java_java_lang_ProcessImpl_create(JNIEnv *env, jclass ignored, const jchar *penvBlock = (envBlock != NULL) ? (*env)->GetStringChars(env, envBlock, NULL) : NULL; - const jchar *pdir = (dir != NULL) - ? (*env)->GetStringChars(env, dir, NULL) - : NULL; - jlong *handles = (*env)->GetLongArrayElements(env, stdHandles, NULL); - if (handles != NULL) { - ret = processCreate( - env, - pcmd, - penvBlock, - pdir, - handles, - redirectErrorStream); - (*env)->ReleaseLongArrayElements(env, stdHandles, handles, 0); + if (!(*env)->ExceptionCheck(env)) { + const jchar *pdir = (dir != NULL) + ? (*env)->GetStringChars(env, dir, NULL) + : NULL; + if (!(*env)->ExceptionCheck(env)) { + jlong *handles = (*env)->GetLongArrayElements(env, stdHandles, NULL); + if (handles != NULL) { + ret = processCreate( + env, + pcmd, + penvBlock, + pdir, + handles, + redirectErrorStream); + (*env)->ReleaseLongArrayElements(env, stdHandles, handles, 0); + } + if (pdir != NULL) + (*env)->ReleaseStringChars(env, dir, pdir); + } + if (penvBlock != NULL) + (*env)->ReleaseStringChars(env, envBlock, penvBlock); } - if (pdir != NULL) - (*env)->ReleaseStringChars(env, dir, pdir); - if (penvBlock != NULL) - (*env)->ReleaseStringChars(env, envBlock, penvBlock); (*env)->ReleaseStringChars(env, cmd, pcmd); } } @@ -448,7 +452,7 @@ Java_java_lang_ProcessImpl_isProcessAlive(JNIEnv *env, jclass ignored, jlong han JNIEXPORT jboolean JNICALL Java_java_lang_ProcessImpl_closeHandle(JNIEnv *env, jclass ignored, jlong handle) { - return CloseHandle((HANDLE) handle); + return (jboolean) CloseHandle((HANDLE) handle); } /** diff --git a/jdk/src/windows/native/java/net/DualStackPlainDatagramSocketImpl.c b/jdk/src/windows/native/java/net/DualStackPlainDatagramSocketImpl.c index 12be2b5138e..684b664a83d 100644 --- a/jdk/src/windows/native/java/net/DualStackPlainDatagramSocketImpl.c +++ b/jdk/src/windows/native/java/net/DualStackPlainDatagramSocketImpl.c @@ -384,15 +384,19 @@ JNIEXPORT jint JNICALL Java_java_net_DualStackPlainDatagramSocketImpl_socketRece if (packetAddress == NULL) { packetAddress = NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, &port); - /* stuff the new Inetaddress into the packet */ - (*env)->SetObjectField(env, dpObj, dp_addressID, packetAddress); + if (packetAddress != NULL) { + /* stuff the new Inetaddress into the packet */ + (*env)->SetObjectField(env, dpObj, dp_addressID, packetAddress); + } } - /* populate the packet */ - (*env)->SetByteArrayRegion(env, packetBuffer, packetBufferOffset, rv, + if (!(*env)->ExceptionCheck(env)) { + /* populate the packet */ + (*env)->SetByteArrayRegion(env, packetBuffer, packetBufferOffset, rv, (jbyte *)fullPacket); - (*env)->SetIntField(env, dpObj, dp_portID, port); - (*env)->SetIntField(env, dpObj, dp_lengthID, rv); + (*env)->SetIntField(env, dpObj, dp_portID, port); + (*env)->SetIntField(env, dpObj, dp_lengthID, rv); + } } if (packetBufferLen > MAX_BUFFER_LEN) { diff --git a/jdk/src/windows/native/java/net/NetworkInterface.c b/jdk/src/windows/native/java/net/NetworkInterface.c index 84ba46dc5a2..8ba5eda3c1f 100644 --- a/jdk/src/windows/native/java/net/NetworkInterface.c +++ b/jdk/src/windows/native/java/net/NetworkInterface.c @@ -543,16 +543,16 @@ jobject createNetworkInterface * Create a NetworkInterface object and populate it */ netifObj = (*env)->NewObject(env, ni_class, ni_ctor); + CHECK_NULL_RETURN(netifObj, NULL); name = (*env)->NewStringUTF(env, ifs->name); + CHECK_NULL_RETURN(name, NULL); if (ifs->dNameIsUnicode) { displayName = (*env)->NewString(env, (PWCHAR)ifs->displayName, (jsize)wcslen ((PWCHAR)ifs->displayName)); } else { displayName = (*env)->NewStringUTF(env, ifs->displayName); } - if (netifObj == NULL || name == NULL || displayName == NULL) { - return NULL; - } + CHECK_NULL_RETURN(displayName, NULL); (*env)->SetObjectField(env, netifObj, ni_nameID, name); (*env)->SetObjectField(env, netifObj, ni_displayNameID, displayName); (*env)->SetIntField(env, netifObj, ni_indexID, ifs->index); @@ -682,23 +682,28 @@ JNIEXPORT jobject JNICALL Java_java_net_NetworkInterface_getByName0 /* get the name as a C string */ name_utf = (*env)->GetStringUTFChars(env, name, &isCopy); + if (name_utf != NULL) { - /* Search by name */ - curr = ifList; - while (curr != NULL) { - if (strcmp(name_utf, curr->name) == 0) { - break; + /* Search by name */ + curr = ifList; + while (curr != NULL) { + if (strcmp(name_utf, curr->name) == 0) { + break; + } + curr = curr->next; } - curr = curr->next; - } - /* if found create a NetworkInterface */ - if (curr != NULL) {; - netifObj = createNetworkInterface(env, curr, -1, NULL); - } + /* if found create a NetworkInterface */ + if (curr != NULL) {; + netifObj = createNetworkInterface(env, curr, -1, NULL); + } - /* release the UTF string */ - (*env)->ReleaseStringUTFChars(env, name, name_utf); + /* release the UTF string */ + (*env)->ReleaseStringUTFChars(env, name, name_utf); + } else { + if (!(*env)->ExceptionCheck(env)) + JNU_ThrowOutOfMemoryError(env, NULL); + } /* release the interface list */ free_netif(ifList); diff --git a/jdk/src/windows/native/java/util/prefs/WindowsPreferences.c b/jdk/src/windows/native/java/util/prefs/WindowsPreferences.c index 3cfd8ce10a8..ef3ff356423 100644 --- a/jdk/src/windows/native/java/util/prefs/WindowsPreferences.c +++ b/jdk/src/windows/native/java/util/prefs/WindowsPreferences.c @@ -24,8 +24,10 @@ */ #include <stdlib.h> -#include <jni.h> #include <windows.h> +#include "jni.h" +#include "jni_util.h" +#include "jvm.h" #ifdef __cplusplus extern "C" { #endif @@ -37,12 +39,15 @@ extern "C" { int errorCode=-1; jintArray result; str = (*env)->GetByteArrayElements(env, lpSubKey, NULL); + CHECK_NULL_RETURN(str, NULL); errorCode = RegOpenKeyEx((HKEY)hKey, str, 0, securityMask, &handle); (*env)->ReleaseByteArrayElements(env, lpSubKey, str, 0); tmp[0]= (int) handle; tmp[1]= errorCode; result = (*env)->NewIntArray(env,2); - (*env)->SetIntArrayRegion(env, result, 0, 2, tmp); + if (result != NULL) { + (*env)->SetIntArrayRegion(env, result, 0, 2, tmp); + } return result; } @@ -58,8 +63,9 @@ extern "C" { int tmp[3]; DWORD lpdwDisposition; int errorCode; - jintArray result; + jintArray result = NULL; str = (*env)->GetByteArrayElements(env, lpSubKey, NULL); + CHECK_NULL_RETURN(str, NULL); errorCode = RegCreateKeyEx((HKEY)hKey, str, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_READ, NULL, &handle, &lpdwDisposition); @@ -68,7 +74,9 @@ extern "C" { tmp[1]= errorCode; tmp[2]= lpdwDisposition; result = (*env)->NewIntArray(env,3); - (*env)->SetIntArrayRegion(env, result, 0, 3, tmp); + if (result != NULL) { + (*env)->SetIntArrayRegion(env, result, 0, 3, tmp); + } return result; } @@ -77,6 +85,7 @@ extern "C" { char* str; int result; str = (*env)->GetByteArrayElements(env, lpSubKey, NULL); + CHECK_NULL_RETURN(str, -1); result = RegDeleteKey((HKEY)hKey, str); (*env)->ReleaseByteArrayElements(env, lpSubKey, str, 0); return result; @@ -96,6 +105,7 @@ extern "C" { DWORD valueType; DWORD valueSize; valueNameStr = (*env)->GetByteArrayElements(env, valueName, NULL); + CHECK_NULL_RETURN(valueNameStr, NULL); if (RegQueryValueEx((HKEY)hKey, valueNameStr, NULL, &valueType, NULL, &valueSize) != ERROR_SUCCESS) { (*env)->ReleaseByteArrayElements(env, valueName, valueNameStr, 0); @@ -103,19 +113,26 @@ extern "C" { } buffer = (char*)malloc(valueSize); - - if (RegQueryValueEx((HKEY)hKey, valueNameStr, NULL, &valueType, buffer, - &valueSize) != ERROR_SUCCESS) { - free(buffer); + if (buffer != NULL) { + if (RegQueryValueEx((HKEY)hKey, valueNameStr, NULL, &valueType, buffer, + &valueSize) != ERROR_SUCCESS) { + free(buffer); + (*env)->ReleaseByteArrayElements(env, valueName, valueNameStr, 0); + return NULL; + } + } else { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); (*env)->ReleaseByteArrayElements(env, valueName, valueNameStr, 0); - return NULL; + return NULL; } if (valueType == REG_SZ) { - result = (*env)->NewByteArray(env, valueSize); - (*env)->SetByteArrayRegion(env, result, 0, valueSize, buffer); + result = (*env)->NewByteArray(env, valueSize); + if (result != NULL) { + (*env)->SetByteArrayRegion(env, result, 0, valueSize, buffer); + } } else { - result = NULL; + result = NULL; } free(buffer); (*env)->ReleaseByteArrayElements(env, valueName, valueNameStr, 0); @@ -135,11 +152,14 @@ extern "C" { if ((valueName == NULL)||(data == NULL)) {return -1;} size = (*env)->GetArrayLength(env, data); dataStr = (*env)->GetByteArrayElements(env, data, NULL); + CHECK_NULL_RETURN(dataStr, -1); valueNameStr = (*env)->GetByteArrayElements(env, valueName, NULL); - error_code = RegSetValueEx((HKEY)hKey, valueNameStr, 0, + if (valueNameStr != NULL) { + error_code = RegSetValueEx((HKEY)hKey, valueNameStr, 0, REG_SZ, dataStr, size); + (*env)->ReleaseByteArrayElements(env, valueName, valueNameStr, 0); + } (*env)->ReleaseByteArrayElements(env, data, dataStr, 0); - (*env)->ReleaseByteArrayElements(env, valueName, valueNameStr, 0); return error_code; } @@ -149,6 +169,7 @@ extern "C" { int error_code = -1; if (valueName == NULL) {return -1;} valueNameStr = (*env)->GetByteArrayElements(env, valueName, NULL); + CHECK_NULL_RETURN(valueNameStr, -1); error_code = RegDeleteValue((HKEY)hKey, valueNameStr); (*env)->ReleaseByteArrayElements(env, valueName, valueNameStr, 0); return error_code; @@ -156,7 +177,7 @@ extern "C" { JNIEXPORT jintArray JNICALL Java_java_util_prefs_WindowsPreferences_WindowsRegQueryInfoKey (JNIEnv* env, jclass this_class, jint hKey) { - jintArray result; + jintArray result = NULL; int tmp[5]; int valuesNumber = -1; int maxValueNameLength = -1; @@ -173,7 +194,9 @@ extern "C" { tmp[3]= maxSubKeyLength; tmp[4]= maxValueNameLength; result = (*env)->NewIntArray(env,5); - (*env)->SetIntArrayRegion(env, result, 0, 5, tmp); + if (result != NULL) { + (*env)->SetIntArrayRegion(env, result, 0, 5, tmp); + } return result; } @@ -183,13 +206,19 @@ extern "C" { jbyteArray result; char* buffer = NULL; buffer = (char*)malloc(maxKeyLength); + if (buffer == NULL) { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); + return NULL; + } if (RegEnumKeyEx((HKEY) hKey, subKeyIndex, buffer, &size, NULL, NULL, NULL, NULL) != ERROR_SUCCESS){ free(buffer); return NULL; } result = (*env)->NewByteArray(env, size + 1); - (*env)->SetByteArrayRegion(env, result, 0, size + 1, buffer); + if (result != NULL) { + (*env)->SetByteArrayRegion(env, result, 0, size + 1, buffer); + } free(buffer); return result; } @@ -201,6 +230,10 @@ extern "C" { char* buffer = NULL; int error_code; buffer = (char*)malloc(maxValueNameLength); + if (buffer == NULL) { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); + return NULL; + } error_code = RegEnumValue((HKEY) hKey, valueIndex, buffer, &size, NULL, NULL, NULL, NULL); if (error_code!= ERROR_SUCCESS){ @@ -208,7 +241,9 @@ extern "C" { return NULL; } result = (*env)->NewByteArray(env, size + 1); - (*env)->SetByteArrayRegion(env, result, 0, size + 1, buffer); + if (result != NULL) { + (*env)->SetByteArrayRegion(env, result, 0, size + 1, buffer); + } free(buffer); return result; } diff --git a/jdk/src/windows/native/sun/font/fontpath.c b/jdk/src/windows/native/sun/font/fontpath.c index 21bda1f9271..21bf30b08da 100644 --- a/jdk/src/windows/native/sun/font/fontpath.c +++ b/jdk/src/windows/native/sun/font/fontpath.c @@ -152,6 +152,10 @@ static int CALLBACK EnumFontFacesInFamilyProcA( /* printf("FULL=%s\n",lpelfe->elfFullName);fflush(stdout); */ fullname = JNU_NewStringPlatform(env, lpelfe->elfFullName); + if (fullname == NULL) { + (*env)->ExceptionClear(env); + return 1; + } fullnameLC = (*env)->CallObjectMethod(env, fullname, fmi->toLowerCaseMID, fmi->locale); (*env)->CallBooleanMethod(env, fmi->list, fmi->addMID, fullname); @@ -242,6 +246,10 @@ static int CALLBACK EnumFontFacesInFamilyProcW( fullname = (*env)->NewString(env, lpelfe->elfFullName, (jsize)wcslen((LPWSTR)lpelfe->elfFullName)); + if (fullname == NULL) { + (*env)->ExceptionClear(env); + return 1; + } fullnameLC = (*env)->CallObjectMethod(env, fullname, fmi->toLowerCaseMID, fmi->locale); (*env)->CallBooleanMethod(env, fmi->list, fmi->addMID, fullname); @@ -287,6 +295,10 @@ static int CALLBACK EnumFamilyNamesA( return 1; } fmi->family = JNU_NewStringPlatform(env,lpelfe->elfLogFont.lfFaceName); + if (fmi->family == NULL) { + (*env)->ExceptionClear(env); + return 1; + } familyLC = (*env)->CallObjectMethod(env, fmi->family, fmi->toLowerCaseMID, fmi->locale); /* check if already seen this family with a different charset */ @@ -296,7 +308,10 @@ static int CALLBACK EnumFamilyNamesA( } fmi->list = (*env)->NewObject(env, fmi->arrayListClass, fmi->arrayListCtr, 4); - + if (fmi->list == NULL) { + (*env)->ExceptionClear(env); + return 1; + } (*env)->CallObjectMethod(env, fmi->familyToFontListMap, fmi->putMID, familyLC, fmi->list); @@ -343,6 +358,10 @@ static int CALLBACK EnumFamilyNamesW( } slen = wcslen(lpelfe->elfLogFont.lfFaceName); fmi->family = (*env)->NewString(env,lpelfe->elfLogFont.lfFaceName, (jsize)slen); + if (fmi->family == NULL) { + (*env)->ExceptionClear(env); + return 1; + } familyLC = (*env)->CallObjectMethod(env, fmi->family, fmi->toLowerCaseMID, fmi->locale); /* check if already seen this family with a different charset */ @@ -352,7 +371,10 @@ static int CALLBACK EnumFamilyNamesW( } fmi->list = (*env)->NewObject(env, fmi->arrayListClass, fmi->arrayListCtr, 4); - + if (fmi->list == NULL) { + (*env)->ExceptionClear(env); + return 1; + } (*env)->CallObjectMethod(env, fmi->familyToFontListMap, fmi->putMID, familyLC, fmi->list); @@ -447,6 +469,10 @@ static void registerFontA(GdiFontMapInfo *fmi, jobject fontToFileMap, JNIEnv *env = fmi->env; size_t dslen = strlen(data); jstring fileStr = JNU_NewStringPlatform(env, data); + if (fileStr == NULL) { + (*env)->ExceptionClear(env); + return; + } /* TTC or ttc means it may be a collection. Need to parse out * multiple font face names separated by " & " @@ -467,6 +493,10 @@ static void registerFontA(GdiFontMapInfo *fmi, jobject fontToFileMap, ptr1 = ptr2+3; } fontStr = JNU_NewStringPlatform(env, ptr1); + if (fontStr == NULL) { + (*env)->ExceptionClear(env); + return; + } fontStr = (*env)->CallObjectMethod(env, fontStr, fmi->toLowerCaseMID, fmi->locale); @@ -481,6 +511,10 @@ static void registerFontA(GdiFontMapInfo *fmi, jobject fontToFileMap, } } else { fontStr = JNU_NewStringPlatform(env, name); + if (fontStr == NULL) { + (*env)->ExceptionClear(env); + return; + } fontStr = (*env)->CallObjectMethod(env, fontStr, fmi->toLowerCaseMID, fmi->locale); (*env)->CallObjectMethod(env, fontToFileMap, fmi->putMID, @@ -496,6 +530,10 @@ static void registerFontW(GdiFontMapInfo *fmi, jobject fontToFileMap, JNIEnv *env = fmi->env; size_t dslen = wcslen(data); jstring fileStr = (*env)->NewString(env, data, (jsize)dslen); + if (fileStr == NULL) { + (*env)->ExceptionClear(env); + return; + } /* TTC or ttc means it may be a collection. Need to parse out * multiple font face names separated by " & " @@ -517,6 +555,10 @@ static void registerFontW(GdiFontMapInfo *fmi, jobject fontToFileMap, ptr1 = ptr2+3; } fontStr = (*env)->NewString(env, ptr1, (jsize)wcslen(ptr1)); + if (fontStr == NULL) { + (*env)->ExceptionClear(env); + return; + } fontStr = (*env)->CallObjectMethod(env, fontStr, fmi->toLowerCaseMID, fmi->locale); @@ -531,6 +573,10 @@ static void registerFontW(GdiFontMapInfo *fmi, jobject fontToFileMap, } } else { fontStr = (*env)->NewString(env, name, (jsize)wcslen(name)); + if (fontStr == NULL) { + (*env)->ExceptionClear(env); + return; + } fontStr = (*env)->CallObjectMethod(env, fontStr, fmi->toLowerCaseMID, fmi->locale); (*env)->CallObjectMethod(env, fontToFileMap, fmi->putMID, diff --git a/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp b/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp index f8a1683a3dd..643d64d09a0 100644 --- a/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp +++ b/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp @@ -23,6 +23,7 @@ * questions. */ +#include "jni_util.h" #include "awt.h" #include "sun_java2d_windows_GDIRenderer.h" #include "java_awt_geom_PathIterator.h" @@ -387,13 +388,20 @@ Java_sun_java2d_windows_GDIRenderer_doDrawPoly return; } - POINT tmpPts[POLYTEMPSIZE], *pPoints; + POINT tmpPts[POLYTEMPSIZE], *pPoints = NULL; + jint *xpoints = (jint *) env->GetPrimitiveArrayCritical(xpointsarray, NULL); - jint *ypoints = (jint *) env->GetPrimitiveArrayCritical(ypointsarray, NULL); - pPoints = TransformPoly(xpoints, ypoints, transx, transy, - tmpPts, &npoints, isclosed, TRUE); - env->ReleasePrimitiveArrayCritical(xpointsarray, xpoints, JNI_ABORT); - env->ReleasePrimitiveArrayCritical(ypointsarray, ypoints, JNI_ABORT); + + if (xpoints != NULL) { + jint *ypoints = (jint *) env->GetPrimitiveArrayCritical(ypointsarray, NULL); + if (ypoints != NULL) { + pPoints = TransformPoly(xpoints, ypoints, transx, transy, + tmpPts, &npoints, isclosed, TRUE); + env->ReleasePrimitiveArrayCritical(ypointsarray, ypoints, JNI_ABORT); + } + env->ReleasePrimitiveArrayCritical(xpointsarray, xpoints, JNI_ABORT); + } + if (pPoints == NULL) { return; } @@ -654,13 +662,19 @@ Java_sun_java2d_windows_GDIRenderer_doFillPoly return; } - POINT tmpPts[POLYTEMPSIZE], *pPoints; + POINT tmpPts[POLYTEMPSIZE], *pPoints = NULL; + jint *xpoints = (jint *) env->GetPrimitiveArrayCritical(xpointsarray, NULL); - jint *ypoints = (jint *) env->GetPrimitiveArrayCritical(ypointsarray, NULL); - pPoints = TransformPoly(xpoints, ypoints, transx, transy, - tmpPts, &npoints, FALSE, FALSE); - env->ReleasePrimitiveArrayCritical(xpointsarray, xpoints, JNI_ABORT); - env->ReleasePrimitiveArrayCritical(ypointsarray, ypoints, JNI_ABORT); + if (xpoints != NULL) { + jint *ypoints = (jint *) env->GetPrimitiveArrayCritical(ypointsarray, NULL); + if (ypoints != NULL) { + pPoints = TransformPoly(xpoints, ypoints, transx, transy, + tmpPts, &npoints, FALSE, FALSE); + env->ReleasePrimitiveArrayCritical(ypointsarray, xpoints, JNI_ABORT); + } + env->ReleasePrimitiveArrayCritical(xpointsarray, xpoints, JNI_ABORT); + } + if (pPoints == NULL) { return; } @@ -720,13 +734,26 @@ Java_sun_java2d_windows_GDIRenderer_doShape if (hdc == NULL) { return; } + + jbyte *types = (jbyte *) env->GetPrimitiveArrayCritical(typesarray, + NULL); + if (types == NULL) { + wsdo->ReleaseDC(env, wsdo, hdc); + return; + } + + jfloat *coords = (jfloat *) env->GetPrimitiveArrayCritical(coordsarray, + NULL); + if (coords == NULL) { + env->ReleasePrimitiveArrayCritical(typesarray, types, JNI_ABORT); + wsdo->ReleaseDC(env, wsdo, hdc); + return; + } + ::SetPolyFillMode(hdc, (rule == java_awt_geom_PathIterator_WIND_NON_ZERO ? WINDING : ALTERNATE)); ::BeginPath(hdc); - jbyte *types = (jbyte *) env->GetPrimitiveArrayCritical(typesarray, - NULL); - jfloat *coords = (jfloat *) env->GetPrimitiveArrayCritical(coordsarray, - NULL); + int index = 0; BOOL ok = TRUE; BOOL isempty = TRUE; diff --git a/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp b/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp index c5313a1b571..1de213f838e 100644 --- a/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp +++ b/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,12 +47,15 @@ void SetIDs(JNIEnv *env, jclass wFlagsClass) { wFlagsClassID = (jclass)env->NewGlobalRef(wFlagsClass); d3dEnabledID = env->GetStaticFieldID(wFlagsClass, "d3dEnabled", "Z"); + CHECK_NULL(d3dEnabledID); d3dSetID = env->GetStaticFieldID(wFlagsClass, "d3dSet", "Z"); + CHECK_NULL(d3dSetID); } BOOL GetStaticBoolean(JNIEnv *env, jclass wfClass, const char *fieldName) { jfieldID fieldID = env->GetStaticFieldID(wfClass, fieldName, "Z"); + CHECK_NULL_RETURN(fieldID, FALSE); return env->GetStaticBooleanField(wfClass, fieldID); } @@ -60,6 +63,7 @@ jobject GetStaticObject(JNIEnv *env, jclass wfClass, const char *fieldName, const char *signature) { jfieldID fieldID = env->GetStaticFieldID(wfClass, fieldName, signature); + CHECK_NULL_RETURN(fieldID, NULL); return env->GetStaticObjectField(wfClass, fieldID); } @@ -90,15 +94,17 @@ void GetFlagValues(JNIEnv *env, jclass wFlagsClass) forceD3DUsage = d3dSet; g_offscreenSharing = GetStaticBoolean(env, wFlagsClass, "offscreenSharingEnabled"); + JNU_CHECK_EXCEPTION(env); accelReset = GetStaticBoolean(env, wFlagsClass, "accelReset"); + JNU_CHECK_EXCEPTION(env); checkRegistry = GetStaticBoolean(env, wFlagsClass, "checkRegistry"); + JNU_CHECK_EXCEPTION(env); disableRegistry = GetStaticBoolean(env, wFlagsClass, "disableRegistry"); - jstring javaVersionString = (jstring)GetStaticObject(env, wFlagsClass, - "javaVersion", - "Ljava/lang/String;"); + JNU_CHECK_EXCEPTION(env); setHighDPIAware = (IS_WINVISTA && GetStaticBoolean(env, wFlagsClass, "setHighDPIAware")); + JNU_CHECK_EXCEPTION(env); J2dTraceLn(J2D_TRACE_INFO, "WindowsFlags (native):"); J2dTraceLn1(J2D_TRACE_INFO, " d3dEnabled = %s", @@ -166,6 +172,7 @@ Java_sun_java2d_windows_WindowsFlags_initNativeFlags(JNIEnv *env, jclass wFlagsClass) { SetIDs(env, wFlagsClass); + JNU_CHECK_EXCEPTION(env); GetFlagValues(env, wFlagsClass); } diff --git a/jdk/src/windows/native/sun/net/dns/ResolverConfigurationImpl.c b/jdk/src/windows/native/sun/net/dns/ResolverConfigurationImpl.c index bd4a971cc78..13b28044a55 100644 --- a/jdk/src/windows/native/sun/net/dns/ResolverConfigurationImpl.c +++ b/jdk/src/windows/native/sun/net/dns/ResolverConfigurationImpl.c @@ -39,6 +39,7 @@ #define STS_NO_CONFIG 0x0 /* no configuration found */ #define STS_SL_FOUND 0x1 /* search list found */ #define STS_NS_FOUND 0x2 /* name servers found */ +#define STS_ERROR -1 /* error return lodConfig failed memory allccation failure*/ #define IS_SL_FOUND(sts) (sts & STS_SL_FOUND) #define IS_NS_FOUND(sts) (sts & STS_NS_FOUND) @@ -123,14 +124,14 @@ static int loadConfig(char *sl, char *ns) { size = sizeof(IP_ADAPTER_INFO); adapterP = (IP_ADAPTER_INFO *)malloc(size); if (adapterP == NULL) { - return -1; + return STS_ERROR; } ret = GetAdaptersInfo(adapterP, &size); if (ret == ERROR_BUFFER_OVERFLOW) { IP_ADAPTER_INFO *newAdapterP = (IP_ADAPTER_INFO *)realloc(adapterP, size); if (newAdapterP == NULL) { free(adapterP); - return -1; + return STS_ERROR; } adapterP = newAdapterP; @@ -239,6 +240,7 @@ Java_sun_net_dns_ResolverConfigurationImpl_init0(JNIEnv *env, jclass cls) { searchlistID = (*env)->GetStaticFieldID(env, cls, "os_searchlist", "Ljava/lang/String;"); + CHECK_NULL(searchlistID); nameserversID = (*env)->GetStaticFieldID(env, cls, "os_nameservers", "Ljava/lang/String;"); } @@ -258,16 +260,21 @@ Java_sun_net_dns_ResolverConfigurationImpl_loadDNSconfig0(JNIEnv *env, jclass cl searchlist[0] = '\0'; nameservers[0] = '\0'; - loadConfig(searchlist, nameservers); + if (loadConfig(searchlist, nameservers) != STS_ERROR) { - /* - * Populate static fields in sun.net.DefaultResolverConfiguration - */ - obj = (*env)->NewStringUTF(env, searchlist); - (*env)->SetStaticObjectField(env, cls, searchlistID, obj); + /* + * Populate static fields in sun.net.DefaultResolverConfiguration + */ + obj = (*env)->NewStringUTF(env, searchlist); + CHECK_NULL(obj); + (*env)->SetStaticObjectField(env, cls, searchlistID, obj); - obj = (*env)->NewStringUTF(env, nameservers); - (*env)->SetStaticObjectField(env, cls, nameserversID, obj); + obj = (*env)->NewStringUTF(env, nameservers); + CHECK_NULL(obj); + (*env)->SetStaticObjectField(env, cls, nameserversID, obj); + } else { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); + } } diff --git a/jdk/src/windows/native/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.c b/jdk/src/windows/native/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.c index 4d4f6f11871..786f8063570 100644 --- a/jdk/src/windows/native/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.c +++ b/jdk/src/windows/native/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.c @@ -53,7 +53,9 @@ JNIEXPORT void JNICALL Java_sun_net_www_protocol_http_ntlm_NTLMAuthSequence_init (JNIEnv *env, jclass authseq_clazz, jclass status_clazz) { ntlm_ctxHandleID = (*env)->GetFieldID(env, authseq_clazz, "ctxHandle", "J"); + CHECK_NULL(ntlm_ctxHandleID); ntlm_crdHandleID = (*env)->GetFieldID(env, authseq_clazz, "crdHandle", "J"); + CHECK_NULL(ntlm_crdHandleID); status_seqCompleteID = (*env)->GetFieldID(env, status_clazz, "sequenceComplete", "Z"); } @@ -100,6 +102,16 @@ JNIEXPORT jlong JNICALL Java_sun_net_www_protocol_http_ntlm_NTLMAuthSequence_get } } pCred = (CredHandle *)malloc(sizeof (CredHandle)); + if (pCred == NULL) { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); + if (pUser != NULL) + JNU_ReleaseStringPlatformChars(env, user, pUser); + if (pPassword != NULL) + JNU_ReleaseStringPlatformChars(env, password, pPassword); + if (pDomain != NULL) + JNU_ReleaseStringPlatformChars(env, domain, pDomain); + return NULL; + } if ( ((pUser != NULL) || (pPassword != NULL)) || (pDomain != NULL)) { pAuthId = &AuthId; @@ -177,7 +189,12 @@ JNIEXPORT jbyteArray JNICALL Java_sun_net_www_protocol_http_ntlm_NTLMAuthSequenc pCtx = (CtxtHandle *) (*env)->GetLongField (env, this, ntlm_ctxHandleID); if (pCtx == 0) { /* first call */ newContext = (CtxtHandle *)malloc(sizeof(CtxtHandle)); - (*env)->SetLongField (env, this, ntlm_ctxHandleID, (jlong)newContext); + if (newContext != NULL) { + (*env)->SetLongField (env, this, ntlm_ctxHandleID, (jlong)newContext); + } else { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failed"); + return NULL; + } } else { newContext = pCtx; } @@ -198,6 +215,7 @@ JNIEXPORT jbyteArray JNICALL Java_sun_net_www_protocol_http_ntlm_NTLMAuthSequenc if (lastToken != 0) { pInput = (VOID *)(*env)->GetByteArrayElements(env, lastToken, &isCopy); + CHECK_NULL_RETURN(pInput, NULL); inputLen = (*env)->GetArrayLength(env, lastToken); InBuffDesc.ulVersion = 0; @@ -240,8 +258,10 @@ JNIEXPORT jbyteArray JNICALL Java_sun_net_www_protocol_http_ntlm_NTLMAuthSequenc if ( OutSecBuff.cbBuffer > 0 ) { jbyteArray ret = (*env)->NewByteArray(env, OutSecBuff.cbBuffer); - (*env)->SetByteArrayRegion(env, ret, 0, OutSecBuff.cbBuffer, - OutSecBuff.pvBuffer); + if (ret != NULL) { + (*env)->SetByteArrayRegion(env, ret, 0, OutSecBuff.cbBuffer, + OutSecBuff.pvBuffer); + } if (lastToken != 0) // 2nd stage endSequence (pCred, pCtx, env, status); result = ret; diff --git a/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c b/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c index ca037bf848b..94e060fa193 100644 --- a/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c +++ b/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c @@ -1123,11 +1123,13 @@ Java_sun_nio_fs_WindowsNativeDispatcher_GetFullPathName0(JNIEnv *env, JNU_ThrowInternalError(env, "GetFullPathNameW failed"); } free(lpBuf); + } else { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failure"); } } - } - if (len == 0) + } else { throwWindowsException(env, GetLastError()); + } return rv; } @@ -1162,13 +1164,13 @@ Java_sun_nio_fs_WindowsNativeDispatcher_GetFinalPathNameByHandle(JNIEnv* env, JNU_ThrowInternalError(env, "GetFinalPathNameByHandleW failed"); } free(lpBuf); + } else { + JNU_ThrowOutOfMemoryError(env, "native memory allocation failure"); } } - } - - if (len == 0) + } else { throwWindowsException(env, GetLastError()); - + } return rv; } diff --git a/jdk/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c b/jdk/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c index 4938b0a824d..ad6df257d50 100644 --- a/jdk/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c +++ b/jdk/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -273,7 +273,9 @@ JNIEXPORT jlong JNICALL Java_sun_tools_attach_WindowsVirtualMachine_createPipe NULL); // default security attribute if (hPipe == INVALID_HANDLE_VALUE) { - JNU_ThrowIOExceptionWithLastError(env, "CreateNamedPipe failed"); + char msg[256]; + _snprintf(msg, sizeof(msg), "CreateNamedPipe failed: %d", GetLastError()); + JNU_ThrowIOExceptionWithLastError(env, msg); } return (jlong)hPipe; } diff --git a/jdk/src/windows/native/sun/windows/ShellFolder2.cpp b/jdk/src/windows/native/sun/windows/ShellFolder2.cpp index 63bebf0a63f..cdc60d9ee9c 100644 --- a/jdk/src/windows/native/sun/windows/ShellFolder2.cpp +++ b/jdk/src/windows/native/sun/windows/ShellFolder2.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -219,10 +219,15 @@ JNIEXPORT void JNICALL Java_sun_awt_shell_Win32ShellFolder2_initIDs return; } MID_pIShellFolder = env->GetMethodID(cls, "setIShellFolder", "(J)V"); + CHECK_NULL(MID_pIShellFolder); FID_pIShellIcon = env->GetFieldID(cls, "pIShellIcon", "J"); + CHECK_NULL(FID_pIShellIcon); MID_relativePIDL = env->GetMethodID(cls, "setRelativePIDL", "(J)V"); + CHECK_NULL(MID_relativePIDL); FID_displayName = env->GetFieldID(cls, "displayName", "Ljava/lang/String;"); + CHECK_NULL(FID_displayName); FID_folderType = env->GetFieldID(cls, "folderType", "Ljava/lang/String;"); + CHECK_NULL(FID_folderType); } @@ -719,8 +724,9 @@ JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_parseDisplayName0 // Get relative PIDL for name LPITEMIDLIST pIDL; int nLength = env->GetStringLength(jname); - jchar* wszPath = new jchar[nLength + 1]; const jchar* strPath = env->GetStringChars(jname, NULL); + JNU_CHECK_EXCEPTION_RETURN(env, 0); + jchar* wszPath = new jchar[nLength + 1]; wcsncpy(reinterpret_cast<LPWSTR>(wszPath), reinterpret_cast<LPCWSTR>(strPath), nLength); wszPath[nLength] = 0; HRESULT res = pIShellFolder->ParseDisplayName(NULL, NULL, @@ -811,6 +817,7 @@ JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_getIcon HICON hIcon = NULL; SHFILEINFO fileInfo; LPCTSTR pathStr = JNU_GetStringPlatformChars(env, absolutePath, NULL); + JNU_CHECK_EXCEPTION_RETURN(env, 0); if (fn_SHGetFileInfo(pathStr, 0L, &fileInfo, sizeof(fileInfo), SHGFI_ICON | (getLargeIcon ? 0 : SHGFI_SMALLICON)) != 0) { hIcon = fileInfo.hIcon; @@ -954,9 +961,11 @@ JNIEXPORT jintArray JNICALL Java_sun_awt_shell_Win32ShellFolder2_getIconBits ReleaseDC(NULL, dc); // Create java array iconBits = env->NewIntArray(nBits); + if (!(env->ExceptionCheck())) { // Copy values to java array env->SetIntArrayRegion(iconBits, 0, nBits, colorBits); } + } // Fix 4745575 GDI Resource Leak // MSDN // GetIconInfo creates bitmaps for the hbmMask and hbmColor members of ICONINFO. @@ -1028,6 +1037,7 @@ JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_getIconResource jint cxDesired, jint cyDesired, jboolean useVGAColors) { const char *pLibName = env->GetStringUTFChars(libName, NULL); + JNU_CHECK_EXCEPTION_RETURN(env, 0); HINSTANCE libHandle = (HINSTANCE)JDK_LoadSystemLibrary(pLibName); if (libHandle != NULL) { UINT fuLoad = (useVGAColors && !IS_WINXP) ? LR_VGACOLOR : 0; @@ -1046,8 +1056,11 @@ static jobject CreateColumnInfo(JNIEnv *pEnv, jclass *pClass, jmethodID *pConstructor, SHELLDETAILS *psd, ULONG visible) { + jstring str = jstringFromSTRRET(pEnv, NULL, &(psd->str)); + JNU_CHECK_EXCEPTION_RETURN(pEnv, NULL); + return pEnv->NewObject(*pClass, *pConstructor, - jstringFromSTRRET(pEnv, NULL, &(psd->str)), + str, (jint)(psd->cxChar * 6), // TODO: is 6 OK for converting chars to pixels? (jint)psd->fmt, (jboolean) visible); } @@ -1115,6 +1128,10 @@ JNIEXPORT jobjectArray JNICALL jobject column = CreateColumnInfo(env, &columnClass, &columnConstructor, &sd, csFlags & SHCOLSTATE_ONBYDEFAULT); + if(!column){ + pIShellFolder2->Release(); + return NULL; + } env->SetObjectArrayElement(columns, (jsize) colNum, column); } } @@ -1155,6 +1172,10 @@ JNIEXPORT jobjectArray JNICALL jobject column = CreateColumnInfo(env, &columnClass, &columnConstructor, &sd, 1); + if(!column){ + pIShellDetails->Release(); + return NULL; + } env->SetObjectArrayElement(columns, (jsize) colNum++, column); } } diff --git a/jdk/src/windows/native/sun/windows/awt.h b/jdk/src/windows/native/sun/windows/awt.h index 060953cd3c1..5ce4d22a3aa 100644 --- a/jdk/src/windows/native/sun/windows/awt.h +++ b/jdk/src/windows/native/sun/windows/awt.h @@ -49,6 +49,7 @@ typedef AwtObject* PDATA; #define JNI_CHECK_NULL_GOTO(obj, msg, where) { \ if (obj == NULL) { \ + env->ExceptionClear(); \ JNU_ThrowNullPointerException(env, msg); \ goto where; \ } \ @@ -65,6 +66,7 @@ typedef AwtObject* PDATA; #define JNI_CHECK_NULL_RETURN(obj, msg) { \ if (obj == NULL) { \ + env->ExceptionClear(); \ JNU_ThrowNullPointerException(env, msg); \ return; \ } \ @@ -91,6 +93,7 @@ typedef AwtObject* PDATA; #define JNI_CHECK_NULL_RETURN_NULL(obj, msg) { \ if (obj == NULL) { \ + env->ExceptionClear(); \ JNU_ThrowNullPointerException(env, msg); \ return 0; \ } \ @@ -98,6 +101,7 @@ typedef AwtObject* PDATA; #define JNI_CHECK_NULL_RETURN_VAL(obj, msg, val) { \ if (obj == NULL) { \ + env->ExceptionClear(); \ JNU_ThrowNullPointerException(env, msg); \ return val; \ } \ @@ -124,6 +128,7 @@ typedef AwtObject* PDATA; #define THROW_NULL_PDATA_IF_NOT_DESTROYED(peer) { \ jboolean destroyed = JNI_GET_DESTROYED(peer); \ if (destroyed != JNI_TRUE) { \ + env->ExceptionClear(); \ JNU_ThrowNullPointerException(env, "null pData"); \ } \ } diff --git a/jdk/src/windows/native/sun/windows/awt_AWTEvent.cpp b/jdk/src/windows/native/sun/windows/awt_AWTEvent.cpp index c6bd697a4ec..c1c17f9feec 100644 --- a/jdk/src/windows/native/sun/windows/awt_AWTEvent.cpp +++ b/jdk/src/windows/native/sun/windows/awt_AWTEvent.cpp @@ -71,12 +71,16 @@ Java_java_awt_AWTEvent_initIDs(JNIEnv *env, jclass cls) TRY; AwtAWTEvent::bdataID = env->GetFieldID(cls, "bdata", "[B"); - AwtAWTEvent::idID = env->GetFieldID(cls, "id", "I"); - AwtAWTEvent::consumedID = env->GetFieldID(cls, "consumed", "Z"); - DASSERT(AwtAWTEvent::bdataID != NULL); + CHECK_NULL(AwtAWTEvent::bdataID); + + AwtAWTEvent::idID = env->GetFieldID(cls, "id", "I"); DASSERT(AwtAWTEvent::idID != NULL); + CHECK_NULL(AwtAWTEvent::idID); + + AwtAWTEvent::consumedID = env->GetFieldID(cls, "consumed", "Z"); DASSERT(AwtAWTEvent::consumedID != NULL); + CHECK_NULL(AwtAWTEvent::consumedID); CATCH_BAD_ALLOC; } diff --git a/jdk/src/windows/native/sun/windows/awt_Canvas.cpp b/jdk/src/windows/native/sun/windows/awt_Canvas.cpp index 8bfc79c8801..fba055cb498 100644 --- a/jdk/src/windows/native/sun/windows/awt_Canvas.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Canvas.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -63,6 +63,10 @@ AwtCanvas* AwtCanvas::Create(jobject self, jobject hParent) JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); jobject target = NULL; + jobject graphicsConfig = NULL; + jclass canvasClass = NULL; + jclass win32cls = NULL; + AwtCanvas *canvas = NULL; try { @@ -100,16 +104,24 @@ AwtCanvas* AwtCanvas::Create(jobject self, jobject hParent) // Set the pixel format of the HWND if a GraphicsConfiguration // was provided to the Canvas constructor. - jclass canvasClass = env->FindClass("java/awt/Canvas"); + canvasClass = env->FindClass("java/awt/Canvas"); + DASSERT(canvasClass != NULL); + if (!canvasClass) { + throw std::bad_alloc(); + } + if ( env->IsInstanceOf( target, canvasClass ) ) { // Get GraphicsConfig from our target - jobject graphicsConfig = env->GetObjectField(target, + graphicsConfig = env->GetObjectField(target, AwtComponent::graphicsConfigID); if (graphicsConfig != NULL) { - jclass win32cls = env->FindClass("sun/awt/Win32GraphicsConfig"); + win32cls = env->FindClass("sun/awt/Win32GraphicsConfig"); DASSERT (win32cls != NULL); + if (!win32cls) { + throw std::bad_alloc(); + } if ( env->IsInstanceOf( graphicsConfig, win32cls ) ) { // Get the visual ID member from our GC @@ -131,8 +143,7 @@ AwtCanvas* AwtCanvas::Create(jobject self, jobject hParent) env->ExceptionClear(); env->ThrowNew(excCls, "\nUnable to set Pixel format on Canvas"); - env->DeleteLocalRef(target); - return canvas; + env->DeleteLocalRef(excCls); } } } @@ -141,11 +152,20 @@ AwtCanvas* AwtCanvas::Create(jobject self, jobject hParent) } } catch (...) { env->DeleteLocalRef(target); + env->DeleteLocalRef(graphicsConfig); + env->DeleteLocalRef(canvasClass); + env->DeleteLocalRef(win32cls); + + env->DeleteGlobalRef(self); + env->DeleteGlobalRef(hParent); throw; } done: env->DeleteLocalRef(target); + env->DeleteLocalRef(graphicsConfig); + env->DeleteLocalRef(canvasClass); + env->DeleteLocalRef(win32cls); return canvas; CATCH_BAD_ALLOC_RET(0); } diff --git a/jdk/src/windows/native/sun/windows/awt_Checkbox.cpp b/jdk/src/windows/native/sun/windows/awt_Checkbox.cpp index 69c2453e507..ad1c712f08e 100644 --- a/jdk/src/windows/native/sun/windows/awt_Checkbox.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Checkbox.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -558,13 +558,15 @@ Java_java_awt_Checkbox_initIDs(JNIEnv *env, jclass cls) AwtCheckbox::labelID = env->GetFieldID(cls, "label", "Ljava/lang/String;"); + DASSERT(AwtCheckbox::labelID != NULL); + CHECK_NULL(AwtCheckbox::labelID); + AwtCheckbox::groupID = env->GetFieldID(cls, "group", "Ljava/awt/CheckboxGroup;"); - AwtCheckbox::stateID = - env->GetFieldID(cls, "state", "Z"); - - DASSERT(AwtCheckbox::labelID != NULL); DASSERT(AwtCheckbox::groupID != NULL); + CHECK_NULL(AwtCheckbox::groupID); + + AwtCheckbox::stateID = env->GetFieldID(cls, "state", "Z"); DASSERT(AwtCheckbox::stateID != NULL); CATCH_BAD_ALLOC; diff --git a/jdk/src/windows/native/sun/windows/awt_Component.cpp b/jdk/src/windows/native/sun/windows/awt_Component.cpp index 345e9f06798..88d091807a0 100644 --- a/jdk/src/windows/native/sun/windows/awt_Component.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Component.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -467,6 +467,7 @@ void AwtComponent::InitPeerGraphicsConfig(JNIEnv *env, jobject peer) jclass win32GCCls = env->FindClass("sun/awt/Win32GraphicsConfig"); DASSERT(win32GCCls != NULL); DASSERT(env->IsInstanceOf(compGC, win32GCCls)); + CHECK_NULL(win32GCCls); env->SetObjectField(peer, AwtComponent::peerGCID, compGC); } } @@ -530,10 +531,15 @@ AwtComponent::CreateHWnd(JNIEnv *env, LPCWSTR title, if (dw == ERROR_OUTOFMEMORY) { jstring errorMsg = JNU_NewStringPlatform(env, L"too many window handles"); - createError = JNU_NewObjectByName(env, "java/lang/OutOfMemoryError", + if (errorMsg == NULL || env->ExceptionCheck()) { + env->ExceptionClear(); + createError = JNU_NewObjectByName(env, "java/lang/OutOfMemoryError", "()V"); + } else { + createError = JNU_NewObjectByName(env, "java/lang/OutOfMemoryError", "(Ljava/lang/String;)V", errorMsg); - env->DeleteLocalRef(errorMsg); + env->DeleteLocalRef(errorMsg); + } } else { @@ -542,14 +548,18 @@ AwtComponent::CreateHWnd(JNIEnv *env, LPCWSTR title, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buf, 0, NULL); jstring s = JNU_NewStringPlatform(env, buf); - createError = JNU_NewObjectByName(env, "java/lang/InternalError", - "(Ljava/lang/String;)V", s); + if (s == NULL || env->ExceptionCheck()) { + env->ExceptionClear(); + createError = JNU_NewObjectByName(env, "java/lang/InternalError", "()V"); + } else { + createError = JNU_NewObjectByName(env, "java/lang/InternalError", + "(Ljava/lang/String;)V", s); + env->DeleteLocalRef(s); + } LocalFree(buf); - env->DeleteLocalRef(s); } - env->SetObjectField(peer, AwtObject::createErrorID, createError); - if (createError != NULL) - { + if (createError != NULL) { + env->SetObjectField(peer, AwtObject::createErrorID, createError); env->DeleteLocalRef(createError); } env->DeleteLocalRef(target); @@ -3309,10 +3319,7 @@ AwtComponent::BuildPrimaryDynamicTable() { if( extKeyCodesCls == NULL) { jclass extKeyCodesClsLocal = env->FindClass("sun/awt/ExtendedKeyCodes"); DASSERT(extKeyCodesClsLocal); - if (extKeyCodesClsLocal == NULL) { - /* exception already thrown */ - return; - } + CHECK_NULL(extKeyCodesClsLocal); extKeyCodesCls = (jclass)env->NewGlobalRef(extKeyCodesClsLocal); env->DeleteLocalRef(extKeyCodesClsLocal); } @@ -3321,6 +3328,7 @@ AwtComponent::BuildPrimaryDynamicTable() { getExtendedKeyCodeForChar = env->GetStaticMethodID(extKeyCodesCls, "getExtendedKeyCodeForChar", "(I)I"); DASSERT(getExtendedKeyCodeForChar); + CHECK_NULL(getExtendedKeyCodeForChar); } jint extJKC; //extended Java key code @@ -3940,11 +3948,19 @@ void AwtComponent::SendInputMethodEvent(jint id, jstring text, if (cClause && rgClauseBoundary && rgClauseReading) { // convert clause boundary offset array to java array clauseBoundary = env->NewIntArray(cClause+1); + DASSERT(clauseBoundary); + CHECK_NULL(clauseBoundary); env->SetIntArrayRegion(clauseBoundary, 0, cClause+1, (jint *)rgClauseBoundary); DASSERT(!safe_ExceptionOccurred(env)); // convert clause reading string array to java array - clauseReading = env->NewObjectArray(cClause, JNU_ClassString(env), NULL); + jclass stringCls = JNU_ClassString(env); + DASSERT(stringCls); + CHECK_NULL(stringCls); + clauseReading = env->NewObjectArray(cClause, stringCls, NULL); + env->DeleteLocalRef(stringCls); + DASSERT(clauseReading); + CHECK_NULL(clauseReading); for (int i=0; i<cClause; i++) env->SetObjectArrayElement(clauseReading, i, rgClauseReading[i]); DASSERT(!safe_ExceptionOccurred(env)); } @@ -3963,11 +3979,15 @@ void AwtComponent::SendInputMethodEvent(jint id, jstring text, if (cAttrBlock && rgAttrBoundary && rgAttrValue) { // convert attribute boundary offset array to java array attrBoundary = env->NewIntArray(cAttrBlock+1); + DASSERT(attrBoundary); + CHECK_NULL(attrBoundary); env->SetIntArrayRegion(attrBoundary, 0, cAttrBlock+1, (jint *)rgAttrBoundary); DASSERT(!safe_ExceptionOccurred(env)); // convert attribute value byte array to java array attrValue = env->NewByteArray(cAttrBlock); + DASSERT(attrValue); + CHECK_NULL(attrValue); env->SetByteArrayRegion(attrValue, 0, cAttrBlock, (jbyte *)rgAttrValue); DASSERT(!safe_ExceptionOccurred(env)); } @@ -3978,10 +3998,7 @@ void AwtComponent::SendInputMethodEvent(jint id, jstring text, if (wInputMethodCls == NULL) { jclass wInputMethodClsLocal = env->FindClass("sun/awt/windows/WInputMethod"); DASSERT(wInputMethodClsLocal); - if (wInputMethodClsLocal == NULL) { - /* exception already thrown */ - return; - } + CHECK_NULL(wInputMethodClsLocal); wInputMethodCls = (jclass)env->NewGlobalRef(wInputMethodClsLocal); env->DeleteLocalRef(wInputMethodClsLocal); } @@ -3992,6 +4009,7 @@ void AwtComponent::SendInputMethodEvent(jint id, jstring text, sendIMEventMid = env->GetMethodID(wInputMethodCls, "sendInputMethodEvent", "(IJLjava/lang/String;[I[Ljava/lang/String;[I[BIII)V"); DASSERT(sendIMEventMid); + CHECK_NULL(sendIMEventMid); } // call m_InputMethod.sendInputMethod() @@ -4017,10 +4035,7 @@ void AwtComponent::InquireCandidatePosition() if (wInputMethodCls == NULL) { jclass wInputMethodClsLocal = env->FindClass("sun/awt/windows/WInputMethod"); DASSERT(wInputMethodClsLocal); - if (wInputMethodClsLocal == NULL) { - /* exception already thrown */ - return; - } + CHECK_NULL(wInputMethodClsLocal); wInputMethodCls = (jclass)env->NewGlobalRef(wInputMethodClsLocal); env->DeleteLocalRef(wInputMethodClsLocal); } @@ -4028,10 +4043,10 @@ void AwtComponent::InquireCandidatePosition() // get method ID of sendInputMethodEvent() (run only once) static jmethodID inqCandPosMid = 0; if (inqCandPosMid == 0) { - inqCandPosMid = env->GetMethodID(wInputMethodCls, "inquireCandidatePosition", - "()V"); + inqCandPosMid = env->GetMethodID(wInputMethodCls, "inquireCandidatePosition", "()V"); DASSERT(!safe_ExceptionOccurred(env)); DASSERT(inqCandPosMid); + CHECK_NULL(inqCandPosMid); } // call m_InputMethod.sendInputMethod() @@ -4313,6 +4328,11 @@ void AwtComponent::DrawListItem(JNIEnv *env, DRAWITEMSTRUCT &drawInfo) if ((int) (drawInfo.itemID) >= 0) { jobject font = GET_FONT(target, peer); jstring text = GetItemString(env, target, drawInfo.itemID); + if (env->ExceptionCheck()) { + env->DeleteLocalRef(font); + env->DeleteLocalRef(target); + return; + } SIZE size = AwtFont::getMFStringSize(hDC, font, text); AwtFont::drawMFString(hDC, font, text, (GetRTL()) ? rect.right - size.cx - 1 @@ -4772,6 +4792,7 @@ void AwtComponent::SendKeyEvent(jint id, jlong when, jint raw, jint cooked, keyEventConst = env->GetMethodID(keyEventCls, "<init>", "(Ljava/awt/Component;IJIICI)V"); DASSERT(keyEventConst); + CHECK_NULL(keyEventConst); } if (env->EnsureLocalCapacity(2) < 0) { return; @@ -4783,6 +4804,10 @@ void AwtComponent::SendKeyEvent(jint id, jlong when, jint raw, jint cooked, if (safe_ExceptionOccurred(env)) env->ExceptionDescribe(); DASSERT(!safe_ExceptionOccurred(env)); DASSERT(keyEvent != NULL); + if (keyEvent == NULL) { + env->DeleteLocalRef(target); + return; + } env->SetLongField(keyEvent, AwtKeyEvent::rawCodeID, nativeCode); if( nativeCode && nativeCode < 256 ) { env->SetLongField(keyEvent, AwtKeyEvent::primaryLevelUnicodeID, (jlong)(dynPrimaryKeymap[nativeCode].unicode)); @@ -4866,10 +4891,7 @@ void AwtComponent::SendMouseEvent(jint id, jlong when, jint x, jint y, if (mouseEventCls == NULL) { jclass mouseEventClsLocal = env->FindClass("java/awt/event/MouseEvent"); - if (!mouseEventClsLocal) { - /* exception already thrown */ - return; - } + CHECK_NULL(mouseEventClsLocal); mouseEventCls = (jclass)env->NewGlobalRef(mouseEventClsLocal); env->DeleteLocalRef(mouseEventClsLocal); } @@ -4882,6 +4904,7 @@ void AwtComponent::SendMouseEvent(jint id, jlong when, jint x, jint y, env->GetMethodID(mouseEventCls, "<init>", "(Ljava/awt/Component;IJIIIIIIZI)V"); DASSERT(mouseEventConst); + CHECK_NULL(mouseEventConst); } if (env->EnsureLocalCapacity(2) < 0) { return; @@ -4894,7 +4917,7 @@ void AwtComponent::SendMouseEvent(jint id, jlong when, jint x, jint y, target, id, when, modifiers, x+insets.left, y+insets.top, - xAbs, yAbs, + xAbs, yAbs, clickCount, popupTrigger, button); if (safe_ExceptionOccurred(env)) { @@ -4903,6 +4926,7 @@ void AwtComponent::SendMouseEvent(jint id, jlong when, jint x, jint y, } DASSERT(mouseEvent != NULL); + CHECK_NULL(mouseEvent); if (pMsg != 0) { AwtAWTEvent::saveMSG(env, pMsg, mouseEvent); } @@ -4931,10 +4955,7 @@ AwtComponent::SendMouseWheelEvent(jint id, jlong when, jint x, jint y, if (mouseWheelEventCls == NULL) { jclass mouseWheelEventClsLocal = env->FindClass("java/awt/event/MouseWheelEvent"); - if (!mouseWheelEventClsLocal) { - /* exception already thrown */ - return; - } + CHECK_NULL(mouseWheelEventClsLocal); mouseWheelEventCls = (jclass)env->NewGlobalRef(mouseWheelEventClsLocal); env->DeleteLocalRef(mouseWheelEventClsLocal); } @@ -4947,6 +4968,7 @@ AwtComponent::SendMouseWheelEvent(jint id, jlong when, jint x, jint y, env->GetMethodID(mouseWheelEventCls, "<init>", "(Ljava/awt/Component;IJIIIIIIZIIID)V"); DASSERT(mouseWheelEventConst); + CHECK_NULL(mouseWheelEventConst); } if (env->EnsureLocalCapacity(2) < 0) { return; @@ -4963,11 +4985,14 @@ AwtComponent::SendMouseWheelEvent(jint id, jlong when, jint x, jint y, clickCount, popupTrigger, scrollType, scrollAmount, roundedWheelRotation, preciseWheelRotation); - if (safe_ExceptionOccurred(env)) { + + DASSERT(mouseWheelEvent != NULL); + if (mouseWheelEvent == NULL || safe_ExceptionOccurred(env)) { env->ExceptionDescribe(); env->ExceptionClear(); + env->DeleteLocalRef(target); + return; } - DASSERT(mouseWheelEvent != NULL); if (pMsg != NULL) { AwtAWTEvent::saveMSG(env, pMsg, mouseWheelEvent); } @@ -4992,10 +5017,7 @@ void AwtComponent::SendFocusEvent(jint id, HWND opposite) jclass focusEventClsLocal = env->FindClass("java/awt/event/FocusEvent"); DASSERT(focusEventClsLocal); - if (focusEventClsLocal == NULL) { - /* exception already thrown */ - return; - } + CHECK_NULL(focusEventClsLocal); focusEventCls = (jclass)env->NewGlobalRef(focusEventClsLocal); env->DeleteLocalRef(focusEventClsLocal); } @@ -5006,6 +5028,7 @@ void AwtComponent::SendFocusEvent(jint id, HWND opposite) env->GetMethodID(focusEventCls, "<init>", "(Ljava/awt/Component;IZLjava/awt/Component;)V"); DASSERT(focusEventConst); + CHECK_NULL(focusEventConst); } static jclass sequencedEventCls; @@ -5013,10 +5036,7 @@ void AwtComponent::SendFocusEvent(jint id, HWND opposite) jclass sequencedEventClsLocal = env->FindClass("java/awt/SequencedEvent"); DASSERT(sequencedEventClsLocal); - if (sequencedEventClsLocal == NULL) { - /* exception already thrown */ - return; - } + CHECK_NULL(sequencedEventClsLocal); sequencedEventCls = (jclass)env->NewGlobalRef(sequencedEventClsLocal); env->DeleteLocalRef(sequencedEventClsLocal); @@ -5027,6 +5047,8 @@ void AwtComponent::SendFocusEvent(jint id, HWND opposite) sequencedEventConst = env->GetMethodID(sequencedEventCls, "<init>", "(Ljava/awt/AWTEvent;)V"); + DASSERT(sequencedEventConst); + CHECK_NULL(sequencedEventConst); } if (env->EnsureLocalCapacity(3) < 0) { @@ -5049,6 +5071,7 @@ void AwtComponent::SendFocusEvent(jint id, HWND opposite) env->DeleteLocalRef(jOpposite); jOpposite = NULL; } env->DeleteLocalRef(target); target = NULL; + CHECK_NULL(focusEvent); jobject sequencedEvent = env->NewObject(sequencedEventCls, sequencedEventConst, @@ -5056,7 +5079,7 @@ void AwtComponent::SendFocusEvent(jint id, HWND opposite) DASSERT(!safe_ExceptionOccurred(env)); DASSERT(sequencedEvent != NULL); env->DeleteLocalRef(focusEvent); focusEvent = NULL; - + CHECK_NULL(sequencedEvent); SendEvent(sequencedEvent); env->DeleteLocalRef(sequencedEvent); @@ -5227,7 +5250,7 @@ void AwtComponent::SynthesizeMouseMessage(JNIEnv *env, jobject mouseEvent) "getWheelRotation", "()I").i; DASSERT(!safe_ExceptionOccurred(env)); - //DASSERT(wheelAmt); + JNU_CHECK_EXCEPTION(env); DTRACE_PRINTLN1("wheelAmt = %i\n", wheelAmt); // convert Java wheel amount value to Win32 @@ -6306,10 +6329,12 @@ Java_java_awt_Component_initIDs(JNIEnv *env, jclass cls) { TRY; jclass inputEventClazz = env->FindClass("java/awt/event/InputEvent"); + CHECK_NULL(inputEventClazz); jmethodID getButtonDownMasksID = env->GetStaticMethodID(inputEventClazz, "getButtonDownMasks", "()[I"); + CHECK_NULL(getButtonDownMasksID); jintArray obj = (jintArray)env->CallStaticObjectMethod(inputEventClazz, getButtonDownMasksID); jint * tmp = env->GetIntArrayElements(obj, JNI_FALSE); - + CHECK_NULL(tmp); jsize len = env->GetArrayLength(obj); AwtComponent::masks = SAFE_SIZE_NEW_ARRAY(jint, len); for (int i = 0; i < len; i++) { @@ -6322,68 +6347,112 @@ Java_java_awt_Component_initIDs(JNIEnv *env, jclass cls) jclass peerCls = env->FindClass("sun/awt/windows/WComponentPeer"); DASSERT(peerCls); + CHECK_NULL(peerCls); /* field ids */ AwtComponent::peerID = env->GetFieldID(cls, "peer", "Ljava/awt/peer/ComponentPeer;"); + DASSERT(AwtComponent::peerID); + CHECK_NULL(AwtComponent::peerID); + AwtComponent::xID = env->GetFieldID(cls, "x", "I"); + DASSERT(AwtComponent::xID); + CHECK_NULL(AwtComponent::xID); + AwtComponent::yID = env->GetFieldID(cls, "y", "I"); + DASSERT(AwtComponent::yID); + CHECK_NULL(AwtComponent::yID); + AwtComponent::heightID = env->GetFieldID(cls, "height", "I"); + DASSERT(AwtComponent::heightID); + CHECK_NULL(AwtComponent::heightID); + AwtComponent::widthID = env->GetFieldID(cls, "width", "I"); + DASSERT(AwtComponent::widthID); + CHECK_NULL(AwtComponent::widthID); + AwtComponent::visibleID = env->GetFieldID(cls, "visible", "Z"); + DASSERT(AwtComponent::visibleID); + CHECK_NULL(AwtComponent::visibleID); + AwtComponent::backgroundID = env->GetFieldID(cls, "background", "Ljava/awt/Color;"); + DASSERT(AwtComponent::backgroundID); + CHECK_NULL(AwtComponent::backgroundID); + AwtComponent::foregroundID = env->GetFieldID(cls, "foreground", "Ljava/awt/Color;"); + DASSERT(AwtComponent::foregroundID); + CHECK_NULL(AwtComponent::foregroundID); + AwtComponent::enabledID = env->GetFieldID(cls, "enabled", "Z"); + DASSERT(AwtComponent::enabledID); + CHECK_NULL(AwtComponent::enabledID); + AwtComponent::parentID = env->GetFieldID(cls, "parent", "Ljava/awt/Container;"); + DASSERT(AwtComponent::parentID); + CHECK_NULL(AwtComponent::parentID); + AwtComponent::graphicsConfigID = env->GetFieldID(cls, "graphicsConfig", "Ljava/awt/GraphicsConfiguration;"); + DASSERT(AwtComponent::graphicsConfigID); + CHECK_NULL(AwtComponent::graphicsConfigID); + AwtComponent::focusableID = env->GetFieldID(cls, "focusable", "Z"); + DASSERT(AwtComponent::focusableID); + CHECK_NULL(AwtComponent::focusableID); AwtComponent::appContextID = env->GetFieldID(cls, "appContext", "Lsun/awt/AppContext;"); + DASSERT(AwtComponent::appContextID); + CHECK_NULL(AwtComponent::appContextID); AwtComponent::peerGCID = env->GetFieldID(peerCls, "winGraphicsConfig", "Lsun/awt/Win32GraphicsConfig;"); + DASSERT(AwtComponent::peerGCID); + CHECK_NULL(AwtComponent::peerGCID); AwtComponent::hwndID = env->GetFieldID(peerCls, "hwnd", "J"); + DASSERT(AwtComponent::hwndID); + CHECK_NULL(AwtComponent::hwndID); AwtComponent::cursorID = env->GetFieldID(cls, "cursor", "Ljava/awt/Cursor;"); + DASSERT(AwtComponent::cursorID); + CHECK_NULL(AwtComponent::cursorID); /* method ids */ AwtComponent::getFontMID = env->GetMethodID(cls, "getFont_NoClientCode", "()Ljava/awt/Font;"); + DASSERT(AwtComponent::getFontMID); + CHECK_NULL(AwtComponent::getFontMID); + AwtComponent::getToolkitMID = env->GetMethodID(cls, "getToolkitImpl", "()Ljava/awt/Toolkit;"); + DASSERT(AwtComponent::getToolkitMID); + CHECK_NULL(AwtComponent::getToolkitMID); + AwtComponent::isEnabledMID = env->GetMethodID(cls, "isEnabledImpl", "()Z"); + DASSERT(AwtComponent::isEnabledMID); + CHECK_NULL(AwtComponent::isEnabledMID); + AwtComponent::getLocationOnScreenMID = env->GetMethodID(cls, "getLocationOnScreen_NoTreeLock", "()Ljava/awt/Point;"); + DASSERT(AwtComponent::getLocationOnScreenMID); + CHECK_NULL(AwtComponent::getLocationOnScreenMID); + AwtComponent::replaceSurfaceDataMID = env->GetMethodID(peerCls, "replaceSurfaceData", "()V"); + DASSERT(AwtComponent::replaceSurfaceDataMID); + CHECK_NULL(AwtComponent::replaceSurfaceDataMID); + AwtComponent::replaceSurfaceDataLaterMID = env->GetMethodID(peerCls, "replaceSurfaceDataLater", "()V"); - AwtComponent::disposeLaterMID = env->GetMethodID(peerCls, "disposeLater", "()V"); - - DASSERT(AwtComponent::xID); - DASSERT(AwtComponent::yID); - DASSERT(AwtComponent::heightID); - DASSERT(AwtComponent::widthID); - DASSERT(AwtComponent::visibleID); - DASSERT(AwtComponent::backgroundID); - DASSERT(AwtComponent::foregroundID); - DASSERT(AwtComponent::enabledID); - DASSERT(AwtComponent::parentID); - DASSERT(AwtComponent::hwndID); - - DASSERT(AwtComponent::getFontMID); - DASSERT(AwtComponent::getToolkitMID); - DASSERT(AwtComponent::isEnabledMID); - DASSERT(AwtComponent::getLocationOnScreenMID); - DASSERT(AwtComponent::replaceSurfaceDataMID); DASSERT(AwtComponent::replaceSurfaceDataLaterMID); - DASSERT(AwtComponent::disposeLaterMID); + CHECK_NULL(AwtComponent::replaceSurfaceDataLaterMID); + AwtComponent::disposeLaterMID = env->GetMethodID(peerCls, "disposeLater", "()V"); + DASSERT(AwtComponent::disposeLaterMID); + CHECK_NULL(AwtComponent::disposeLaterMID); CATCH_BAD_ALLOC; } diff --git a/jdk/src/windows/native/sun/windows/awt_Cursor.cpp b/jdk/src/windows/native/sun/windows/awt_Cursor.cpp index 58bceb8544a..6c102669173 100644 --- a/jdk/src/windows/native/sun/windows/awt_Cursor.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Cursor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -209,42 +209,53 @@ void AwtCursor::UpdateCursor(AwtComponent *comp) { return; } jobject jcomp = comp->GetTarget(env); - - //4372119:Disappearing of busy cursor on JDK 1.3 - HWND captureWnd = GetCapture(); - if ( !AwtComponent::isMenuLoopActive() && - (captureWnd==NULL || captureWnd==comp->GetHWnd())) - { - if (IsWindow(AwtWindow::GetModalBlocker( - AwtComponent::GetTopLevelParentForWindow( - comp->GetHWnd())))) + try { + //4372119:Disappearing of busy cursor on JDK 1.3 + HWND captureWnd = GetCapture(); + if ( !AwtComponent::isMenuLoopActive() && + (captureWnd==NULL || captureWnd==comp->GetHWnd())) { - static HCURSOR hArrowCursor = LoadCursor(NULL, IDC_ARROW); - SetCursor(hArrowCursor); - } else { - HCURSOR cur = comp->getCursorCache(); - if (cur == NULL) { - cur = GetCursor(env , comp); - } - if (cur != NULL) { - ::SetCursor(cur); - } + if (IsWindow(AwtWindow::GetModalBlocker( + AwtComponent::GetTopLevelParentForWindow( + comp->GetHWnd())))) + { + static HCURSOR hArrowCursor = LoadCursor(NULL, IDC_ARROW); + SetCursor(hArrowCursor); + } else { + HCURSOR cur = comp->getCursorCache(); + if (cur == NULL) { + cur = GetCursor(env , comp); + } + if (cur != NULL) { + ::SetCursor(cur); + } else { + safe_ExceptionOccurred(env); + } - if (AwtCursor::updateCursorID == NULL) { - jclass cls = + if (AwtCursor::updateCursorID == NULL) { + jclass cls = env->FindClass("sun/awt/windows/WGlobalCursorManager"); - AwtCursor::globalCursorManagerClass = - (jclass)env->NewGlobalRef(cls); - AwtCursor::updateCursorID = - env->GetStaticMethodID(cls, "nativeUpdateCursor", - "(Ljava/awt/Component;)V"); - DASSERT(AwtCursor::globalCursorManagerClass != NULL); - DASSERT(AwtCursor::updateCursorID != NULL); + if(cls != NULL){ + AwtCursor::globalCursorManagerClass = + (jclass)env->NewGlobalRef(cls); + AwtCursor::updateCursorID = + env->GetStaticMethodID(cls, "nativeUpdateCursor", + "(Ljava/awt/Component;)V"); + env->DeleteLocalRef(cls); + DASSERT(AwtCursor::globalCursorManagerClass != NULL); + DASSERT(AwtCursor::updateCursorID != NULL); + } + } + if (AwtCursor::updateCursorID != NULL + && AwtCursor::globalCursorManagerClass != NULL) { + env->CallStaticVoidMethod(AwtCursor::globalCursorManagerClass, + AwtCursor::updateCursorID, jcomp); + } } - - env->CallStaticVoidMethod(AwtCursor::globalCursorManagerClass, - AwtCursor::updateCursorID, jcomp); } + } catch (...) { + env->DeleteLocalRef(jcomp); + throw; } env->DeleteLocalRef(jcomp); } @@ -294,15 +305,22 @@ Java_java_awt_Cursor_initIDs(JNIEnv *env, jclass cls) TRY; AwtCursor::mSetPDataID = env->GetMethodID(cls, "setPData", "(J)V"); + DASSERT(AwtCursor::mSetPDataID != NULL); + CHECK_NULL(AwtCursor::mSetPDataID); AwtCursor::pDataID = env->GetFieldID(cls, "pData", "J"); - AwtCursor::typeID = env->GetFieldID(cls, "type", "I"); DASSERT(AwtCursor::pDataID != NULL); + CHECK_NULL(AwtCursor::pDataID); + AwtCursor::typeID = env->GetFieldID(cls, "type", "I"); DASSERT(AwtCursor::typeID != NULL); + CHECK_NULL(AwtCursor::typeID); cls = env->FindClass("java/awt/Point"); + CHECK_NULL(cls); + AwtCursor::pointXID = env->GetFieldID(cls, "x", "I"); - AwtCursor::pointYID = env->GetFieldID(cls, "y", "I"); DASSERT(AwtCursor::pointXID != NULL); + CHECK_NULL(AwtCursor::pointXID); + AwtCursor::pointYID = env->GetFieldID(cls, "y", "I"); DASSERT(AwtCursor::pointYID != NULL); AwtCursor::updateCursorID = NULL; diff --git a/jdk/src/windows/native/sun/windows/awt_Desktop.cpp b/jdk/src/windows/native/sun/windows/awt_Desktop.cpp index 623718e42e1..828818bad4a 100644 --- a/jdk/src/windows/native/sun/windows/awt_Desktop.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Desktop.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +23,7 @@ * questions. */ +#include "jni_util.h" #include "awt.h" #include <jni.h> #include <shellapi.h> @@ -41,7 +42,12 @@ JNIEXPORT jstring JNICALL Java_sun_awt_windows_WDesktopPeer_ShellExecute (JNIEnv *env, jclass cls, jstring fileOrUri_j, jstring verb_j) { LPCWSTR fileOrUri_c = JNU_GetStringPlatformChars(env, fileOrUri_j, JNI_FALSE); + CHECK_NULL_RETURN(fileOrUri_c, NULL); LPCWSTR verb_c = JNU_GetStringPlatformChars(env, verb_j, JNI_FALSE); + if (verb_c == NULL) { + JNU_ReleaseStringPlatformChars(env, fileOrUri_j, fileOrUri_c); + return NULL; + } // 6457572: ShellExecute possibly changes FPU control word - saving it here unsigned oldcontrol87 = _control87(0, 0); diff --git a/jdk/src/windows/native/sun/windows/awt_DesktopProperties.cpp b/jdk/src/windows/native/sun/windows/awt_DesktopProperties.cpp index 7d68f25983e..21a4b0074ce 100644 --- a/jdk/src/windows/native/sun/windows/awt_DesktopProperties.cpp +++ b/jdk/src/windows/native/sun/windows/awt_DesktopProperties.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -83,13 +83,19 @@ void AwtDesktopProperties::GetSystemProperties() { HDC dc = CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL); if (dc != NULL) { - SetFontProperty(dc, ANSI_FIXED_FONT, TEXT("win.ansiFixed.font")); - SetFontProperty(dc, ANSI_VAR_FONT, TEXT("win.ansiVar.font")); - SetFontProperty(dc, DEVICE_DEFAULT_FONT, TEXT("win.deviceDefault.font")); - SetFontProperty(dc, DEFAULT_GUI_FONT, TEXT("win.defaultGUI.font")); - SetFontProperty(dc, OEM_FIXED_FONT, TEXT("win.oemFixed.font")); - SetFontProperty(dc, SYSTEM_FONT, TEXT("win.system.font")); - SetFontProperty(dc, SYSTEM_FIXED_FONT, TEXT("win.systemFixed.font")); + try { + SetFontProperty(dc, ANSI_FIXED_FONT, TEXT("win.ansiFixed.font")); + SetFontProperty(dc, ANSI_VAR_FONT, TEXT("win.ansiVar.font")); + SetFontProperty(dc, DEVICE_DEFAULT_FONT, TEXT("win.deviceDefault.font")); + SetFontProperty(dc, DEFAULT_GUI_FONT, TEXT("win.defaultGUI.font")); + SetFontProperty(dc, OEM_FIXED_FONT, TEXT("win.oemFixed.font")); + SetFontProperty(dc, SYSTEM_FONT, TEXT("win.system.font")); + SetFontProperty(dc, SYSTEM_FIXED_FONT, TEXT("win.systemFixed.font")); + } + catch (std::bad_alloc&) { + DeleteDC(dc); + throw; + } DeleteDC(dc); } } @@ -206,24 +212,35 @@ void AwtDesktopProperties::GetXPStyleProperties() { LPTSTR value; value = getXPStylePropFromReg(TEXT("ThemeActive")); - SetBooleanProperty(TEXT("win.xpstyle.themeActive"), (value != NULL && *value == _T('1'))); - if (value != NULL) { - free(value); + try { + SetBooleanProperty(TEXT("win.xpstyle.themeActive"), (value != NULL && *value == _T('1'))); + if (value != NULL) { + free(value); + value = NULL; + } + value = getXPStylePropFromReg(TEXT("DllName")); + if (value != NULL) { + SetStringProperty(TEXT("win.xpstyle.dllName"), value); + free(value); + value = NULL; + } + value = getXPStylePropFromReg(TEXT("SizeName")); + if (value != NULL) { + SetStringProperty(TEXT("win.xpstyle.sizeName"), value); + free(value); + value = NULL; + } + value = getXPStylePropFromReg(TEXT("ColorName")); + if (value != NULL) { + SetStringProperty(TEXT("win.xpstyle.colorName"), value); + free(value); + } } - value = getXPStylePropFromReg(TEXT("DllName")); - if (value != NULL) { - SetStringProperty(TEXT("win.xpstyle.dllName"), value); - free(value); - } - value = getXPStylePropFromReg(TEXT("SizeName")); - if (value != NULL) { - SetStringProperty(TEXT("win.xpstyle.sizeName"), value); - free(value); - } - value = getXPStylePropFromReg(TEXT("ColorName")); - if (value != NULL) { - SetStringProperty(TEXT("win.xpstyle.colorName"), value); - free(value); + catch (std::bad_alloc&) { + if (value != NULL) { + free(value); + } + throw; } } @@ -564,27 +581,37 @@ void AwtDesktopProperties::GetOtherParameters() { // Shell Icon BPP - only honored on platforms before XP value = getWindowsPropFromReg(TEXT("Control Panel\\Desktop\\WindowMetrics"), TEXT("Shell Icon BPP"), &valueType); - if (value != NULL) { - if (valueType == REG_SZ) { - SetStringProperty(TEXT("win.icon.shellIconBPP"), value); + + try { + if (value != NULL) { + if (valueType == REG_SZ) { + SetStringProperty(TEXT("win.icon.shellIconBPP"), value); + } + free(value); + value = NULL; + } + + + // The following registry settings control the file chooser places bar + // under the Windows L&F. These settings are not present by default, but + // can be enabled using the TweakUI tool from Microsoft. For more info, + // see http://msdn.microsoft.com/msdnmag/issues/1100/Registry/ + + // NoPlacesBar is a REG_DWORD, with values 0 or 1 + value = getWindowsPropFromReg(TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\comdlg32"), + TEXT("NoPlacesBar"), &valueType); + if (value != NULL) { + if (valueType == REG_DWORD) { + SetBooleanProperty(TEXT("win.comdlg.noPlacesBar"), (BOOL)((int)*value != 0)); + } + free(value); } - free(value); } - - - // The following registry settings control the file chooser places bar - // under the Windows L&F. These settings are not present by default, but - // can be enabled using the TweakUI tool from Microsoft. For more info, - // see http://msdn.microsoft.com/msdnmag/issues/1100/Registry/ - - // NoPlacesBar is a REG_DWORD, with values 0 or 1 - value = getWindowsPropFromReg(TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\comdlg32"), - TEXT("NoPlacesBar"), &valueType); - if (value != NULL) { - if (valueType == REG_DWORD) { - SetBooleanProperty(TEXT("win.comdlg.noPlacesBar"), (BOOL)((int)*value != 0)); + catch (std::bad_alloc&) { + if (value != NULL) { + free(value); } - free(value); + throw; } LPTSTR valueName = TEXT("PlaceN"); @@ -592,7 +619,15 @@ void AwtDesktopProperties::GetOtherParameters() { lstrcpy(valueNameBuf, valueName); LPTSTR propKey = TEXT("win.comdlg.placesBarPlaceN"); - LPTSTR propKeyBuf = (LPTSTR)SAFE_SIZE_ARRAY_ALLOC(safe_Malloc, (lstrlen(propKey) + 1), sizeof(TCHAR)); + + LPTSTR propKeyBuf; + try { + propKeyBuf = (LPTSTR)SAFE_SIZE_ARRAY_ALLOC(safe_Malloc, (lstrlen(propKey) + 1), sizeof(TCHAR)); + } + catch (std::bad_alloc&) { + free(valueNameBuf); + throw; + } lstrcpy(propKeyBuf, propKey); int i = 0; @@ -601,20 +636,31 @@ void AwtDesktopProperties::GetOtherParameters() { propKeyBuf[25] = valueNameBuf[5]; LPTSTR key = TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\comdlg32\\PlacesBar"); - if ((value = getWindowsPropFromReg(key, valueNameBuf, &valueType)) != NULL) { - if (valueType == REG_DWORD) { - // Value is a CSIDL - SetIntegerProperty(propKeyBuf, (int)*value); - } else { - // Value is a path - SetStringProperty(propKeyBuf, value); + try { + value = NULL; + if ((value = getWindowsPropFromReg(key, valueNameBuf, &valueType)) != NULL) { + if (valueType == REG_DWORD) { + // Value is a CSIDL + SetIntegerProperty(propKeyBuf, (int)*value); + } else { + // Value is a path + SetStringProperty(propKeyBuf, value); + } + free(value); } - free(value); + } + catch (std::bad_alloc&) { + if (value != NULL) { + free(value); + } + free(propKeyBuf); + free(valueNameBuf); + throw; } } while (value != NULL); - free(valueNameBuf); free(propKeyBuf); + free(valueNameBuf); } void AwtDesktopProperties::GetSoundEvents() { @@ -656,14 +702,26 @@ UINT AwtDesktopProperties::GetIntegerParameter(UINT spi) { void AwtDesktopProperties::SetStringProperty(LPCTSTR propName, LPTSTR value) { jstring key = JNU_NewStringPlatform(GetEnv(), propName); + if (key == NULL) { + throw std::bad_alloc(); + } + jstring jValue = JNU_NewStringPlatform(GetEnv(), value); + if (jValue == NULL) { + GetEnv()->DeleteLocalRef(key); + throw std::bad_alloc(); + } GetEnv()->CallVoidMethod(self, AwtDesktopProperties::setStringPropertyID, - key, JNU_NewStringPlatform(GetEnv(), value)); + key, jValue); + GetEnv()->DeleteLocalRef(jValue); GetEnv()->DeleteLocalRef(key); } void AwtDesktopProperties::SetIntegerProperty(LPCTSTR propName, int value) { jstring key = JNU_NewStringPlatform(GetEnv(), propName); + if (key == NULL) { + throw std::bad_alloc(); + } GetEnv()->CallVoidMethod(self, AwtDesktopProperties::setIntegerPropertyID, key, (jint)value); @@ -672,6 +730,9 @@ void AwtDesktopProperties::SetIntegerProperty(LPCTSTR propName, int value) { void AwtDesktopProperties::SetBooleanProperty(LPCTSTR propName, BOOL value) { jstring key = JNU_NewStringPlatform(GetEnv(), propName); + if (key == NULL) { + throw std::bad_alloc(); + } GetEnv()->CallVoidMethod(self, AwtDesktopProperties::setBooleanPropertyID, key, value ? JNI_TRUE : JNI_FALSE); @@ -680,6 +741,9 @@ void AwtDesktopProperties::SetBooleanProperty(LPCTSTR propName, BOOL value) { void AwtDesktopProperties::SetColorProperty(LPCTSTR propName, DWORD value) { jstring key = JNU_NewStringPlatform(GetEnv(), propName); + if (key == NULL) { + throw std::bad_alloc(); + } GetEnv()->CallVoidMethod(self, AwtDesktopProperties::setColorPropertyID, key, GetRValue(value), GetGValue(value), @@ -720,6 +784,11 @@ void AwtDesktopProperties::SetFontProperty(HDC dc, int fontID, else { fontName = JNU_NewStringPlatform(GetEnv(), face); } + if (fontName == NULL) { + delete[] face; + throw std::bad_alloc(); + } + jint pointSize = metrics.tmHeight - metrics.tmInternalLeading; jint style = java_awt_Font_PLAIN; @@ -732,11 +801,16 @@ void AwtDesktopProperties::SetFontProperty(HDC dc, int fontID, } jstring key = JNU_NewStringPlatform(GetEnv(), propName); + if (key == NULL) { + GetEnv()->DeleteLocalRef(fontName); + delete[] face; + throw std::bad_alloc(); + } GetEnv()->CallVoidMethod(self, AwtDesktopProperties::setFontPropertyID, key, fontName, style, pointSize); - GetEnv()->DeleteLocalRef(fontName); GetEnv()->DeleteLocalRef(key); + GetEnv()->DeleteLocalRef(fontName); } } delete[] face; @@ -750,7 +824,9 @@ void AwtDesktopProperties::SetFontProperty(LPCTSTR propName, const LOGFONT & fon jint style; fontName = JNU_NewStringPlatform(GetEnv(), font.lfFaceName); - + if (fontName == NULL) { + throw std::bad_alloc(); + } #if 0 HDC hdc; int pixelsPerInch = GetDeviceCaps(hdc, LOGPIXELSY); @@ -773,22 +849,31 @@ void AwtDesktopProperties::SetFontProperty(LPCTSTR propName, const LOGFONT & fon } jstring key = JNU_NewStringPlatform(GetEnv(), propName); + if (key == NULL) { + GetEnv()->DeleteLocalRef(fontName); + throw std::bad_alloc(); + } GetEnv()->CallVoidMethod(self, AwtDesktopProperties::setFontPropertyID, key, fontName, style, pointSize); - - GetEnv()->DeleteLocalRef(fontName); GetEnv()->DeleteLocalRef(key); + GetEnv()->DeleteLocalRef(fontName); } void AwtDesktopProperties::SetSoundProperty(LPCTSTR propName, LPCTSTR winEventName) { jstring key = JNU_NewStringPlatform(GetEnv(), propName); + if (key == NULL) { + throw std::bad_alloc(); + } jstring event = JNU_NewStringPlatform(GetEnv(), winEventName); + if (event == NULL) { + GetEnv()->DeleteLocalRef(key); + throw std::bad_alloc(); + } GetEnv()->CallVoidMethod(self, AwtDesktopProperties::setSoundPropertyID, key, event); - - GetEnv()->DeleteLocalRef(key); GetEnv()->DeleteLocalRef(event); + GetEnv()->DeleteLocalRef(key); } void AwtDesktopProperties::PlayWindowsSound(LPCTSTR event) { @@ -814,24 +899,37 @@ Java_sun_awt_windows_WDesktopProperties_initIDs(JNIEnv *env, jclass cls) { AwtDesktopProperties::pDataID = env->GetFieldID(cls, "pData", "J"); DASSERT(AwtDesktopProperties::pDataID != 0); + CHECK_NULL(AwtDesktopProperties::pDataID); - AwtDesktopProperties::setBooleanPropertyID = env->GetMethodID(cls, "setBooleanProperty", "(Ljava/lang/String;Z)V"); + AwtDesktopProperties::setBooleanPropertyID = + env->GetMethodID(cls, "setBooleanProperty", "(Ljava/lang/String;Z)V"); DASSERT(AwtDesktopProperties::setBooleanPropertyID != 0); + CHECK_NULL(AwtDesktopProperties::setBooleanPropertyID); - AwtDesktopProperties::setIntegerPropertyID = env->GetMethodID(cls, "setIntegerProperty", "(Ljava/lang/String;I)V"); + AwtDesktopProperties::setIntegerPropertyID = + env->GetMethodID(cls, "setIntegerProperty", "(Ljava/lang/String;I)V"); DASSERT(AwtDesktopProperties::setIntegerPropertyID != 0); + CHECK_NULL(AwtDesktopProperties::setIntegerPropertyID); - AwtDesktopProperties::setStringPropertyID = env->GetMethodID(cls, "setStringProperty", "(Ljava/lang/String;Ljava/lang/String;)V"); + AwtDesktopProperties::setStringPropertyID = + env->GetMethodID(cls, "setStringProperty", "(Ljava/lang/String;Ljava/lang/String;)V"); DASSERT(AwtDesktopProperties::setStringPropertyID != 0); + CHECK_NULL(AwtDesktopProperties::setStringPropertyID); - AwtDesktopProperties::setColorPropertyID = env->GetMethodID(cls, "setColorProperty", "(Ljava/lang/String;III)V"); + AwtDesktopProperties::setColorPropertyID = + env->GetMethodID(cls, "setColorProperty", "(Ljava/lang/String;III)V"); DASSERT(AwtDesktopProperties::setColorPropertyID != 0); + CHECK_NULL(AwtDesktopProperties::setColorPropertyID); - AwtDesktopProperties::setFontPropertyID = env->GetMethodID(cls, "setFontProperty", "(Ljava/lang/String;Ljava/lang/String;II)V"); + AwtDesktopProperties::setFontPropertyID = + env->GetMethodID(cls, "setFontProperty", "(Ljava/lang/String;Ljava/lang/String;II)V"); DASSERT(AwtDesktopProperties::setFontPropertyID != 0); + CHECK_NULL(AwtDesktopProperties::setFontPropertyID); - AwtDesktopProperties::setSoundPropertyID = env->GetMethodID(cls, "setSoundProperty", "(Ljava/lang/String;Ljava/lang/String;)V"); + AwtDesktopProperties::setSoundPropertyID = + env->GetMethodID(cls, "setSoundProperty", "(Ljava/lang/String;Ljava/lang/String;)V"); DASSERT(AwtDesktopProperties::setSoundPropertyID != 0); + CHECK_NULL(AwtDesktopProperties::setSoundPropertyID); CATCH_BAD_ALLOC; } diff --git a/jdk/src/windows/native/sun/windows/awt_Dialog.cpp b/jdk/src/windows/native/sun/windows/awt_Dialog.cpp index 3de84956989..cbba78e3b7b 100644 --- a/jdk/src/windows/native/sun/windows/awt_Dialog.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Dialog.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * 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,6 +23,7 @@ * questions. */ +#include "jni_util.h" #include "awt_Toolkit.h" #include "awt_Dialog.h" #include "awt_Window.h" @@ -457,18 +458,25 @@ void AwtDialog::ModalActivateNextWindow(HWND dialogHWnd, { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); - jclass wwindowPeerCls = env->FindClass("sun/awt/windows/WWindowPeer"); - jmethodID getActiveWindowsMID = env->GetStaticMethodID(wwindowPeerCls, - "getActiveWindowHandles", "()[J"); - DASSERT(getActiveWindowsMID != NULL); - jlongArray windows = (jlongArray)(env->CallStaticObjectMethod(wwindowPeerCls, - getActiveWindowsMID)); + jboolean exc; + jlongArray windows = (jlongArray) JNU_CallStaticMethodByName + (env, + &exc, + "sun/awt/windows/WWindowPeer", + "getActiveWindowHandles", + "()[J").l; + if (exc == JNI_TRUE) { + throw std::bad_alloc(); + } if (windows == NULL) { return; } jboolean isCopy; jlong *ws = env->GetLongArrayElements(windows, &isCopy); + if (ws == NULL) { + throw std::bad_alloc(); + } int windowsCount = env->GetArrayLength(windows); for (int i = windowsCount - 1; i >= 0; i--) { HWND w = (HWND)ws[i]; @@ -744,11 +752,13 @@ Java_java_awt_Dialog_initIDs(JNIEnv *env, jclass cls) /* java.awt.Dialog fields and methods */ AwtDialog::titleID = env->GetFieldID(cls, "title", "Ljava/lang/String;"); + DASSERT(AwtDialog::titleID != NULL); + CHECK_NULL(AwtDialog::titleID); + AwtDialog::undecoratedID = env->GetFieldID(cls,"undecorated","Z"); - DASSERT(AwtDialog::undecoratedID != NULL); - DASSERT(AwtDialog::titleID != NULL); + CHECK_NULL(AwtDialog::undecoratedID); CATCH_BAD_ALLOC; } diff --git a/jdk/src/windows/native/sun/windows/awt_Dimension.cpp b/jdk/src/windows/native/sun/windows/awt_Dimension.cpp index b02da6eeeb8..c67af32ce67 100644 --- a/jdk/src/windows/native/sun/windows/awt_Dimension.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Dimension.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,9 +44,10 @@ Java_java_awt_Dimension_initIDs(JNIEnv *env, jclass cls) { TRY; AwtDimension::widthID = env->GetFieldID(cls, "width", "I"); - AwtDimension::heightID = env->GetFieldID(cls, "height", "I"); - DASSERT(AwtDimension::widthID != NULL); + CHECK_NULL(AwtDimension::widthID); + + AwtDimension::heightID = env->GetFieldID(cls, "height", "I"); DASSERT(AwtDimension::heightID != NULL); CATCH_BAD_ALLOC; diff --git a/jdk/src/windows/native/sun/windows/awt_DnDDS.cpp b/jdk/src/windows/native/sun/windows/awt_DnDDS.cpp index f9100ba1c9a..27999b6b551 100644 --- a/jdk/src/windows/native/sun/windows/awt_DnDDS.cpp +++ b/jdk/src/windows/native/sun/windows/awt_DnDDS.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -643,6 +643,7 @@ HRESULT __stdcall AwtDragSource::QueryContinueDrag(BOOL fEscapeKeyPressed, DWOR m_lastmods == modifiers) {//cannot move before cursor change call_dSCmouseMoved(env, m_peer, m_actions, modifiers, dragPoint.x, dragPoint.y); + JNU_CHECK_EXCEPTION_RETURN(env, E_UNEXPECTED); m_dragPoint = dragPoint; } @@ -977,6 +978,10 @@ HRESULT __stdcall AwtDragSource::GetDataHere(FORMATETC __RPC_FAR *pFormatEtc, if ((matchedFormatEtc.tymed & TYMED_ISTREAM) != 0) { jboolean isCopy; jbyte *bBytes = env->GetByteArrayElements(bytes, &isCopy); + if (bBytes == NULL) { + env->PopLocalFrame(NULL); + return E_UNEXPECTED; + } ULONG act; HRESULT res = pmedium->pstm->Write((const void *)bBytes, (ULONG)nBytes, diff --git a/jdk/src/windows/native/sun/windows/awt_DnDDT.cpp b/jdk/src/windows/native/sun/windows/awt_DnDDT.cpp index 7944c052913..8739fc8f576 100644 --- a/jdk/src/windows/native/sun/windows/awt_DnDDT.cpp +++ b/jdk/src/windows/native/sun/windows/awt_DnDDT.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -603,6 +603,10 @@ jobject AwtDropTarget::ConvertNativeData(JNIEnv* env, jlong fmt, STGMEDIUM *pmed jobject local = JNU_NewStringPlatform( env, pmedium->lpszFileName); + if (env->ExceptionCheck()) { + hr = E_OUTOFMEMORY; + break; + } jstring fileName = (jstring)env->NewGlobalRef(local); env->DeleteLocalRef(local); @@ -1220,8 +1224,6 @@ AwtDropTarget::call_dTCgetis(JNIEnv* env, jlong istream) { /*****************************************************************************/ -jclass WDTCPIStreamWrapper::javaIOExceptionClazz = (jclass)NULL; - /** * construct a wrapper */ @@ -1233,16 +1235,6 @@ WDTCPIStreamWrapper::WDTCPIStreamWrapper(STGMEDIUM* stgmedium) { m_istream = stgmedium->pstm; m_istream->AddRef(); m_mutex = ::CreateMutex(NULL, FALSE, NULL); - - if (javaIOExceptionClazz == (jclass)NULL) { - javaIOExceptionClazz = env->FindClass("java/io/IOException"); - - if (JNU_IsNull(env, javaIOExceptionClazz)) { - env->ThrowNew(env->FindClass("java/lang/ClassNotFoundException"), - "Cant find java/io/IOException" - ); - } - } } /** @@ -1291,12 +1283,12 @@ jint WDTCPIStreamWrapper::Available() { JNIEnv* env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); if (m_istream->Stat(&m_statstg, STATFLAG_NONAME) != S_OK) { - env->ThrowNew(javaIOExceptionClazz, "IStream::Stat() failed"); + JNU_ThrowIOException(env, "IStream::Stat() failed"); return 0; } if (m_statstg.cbSize.QuadPart > 0x7ffffffL) { - env->ThrowNew(javaIOExceptionClazz, "IStream::Stat() cbSize > 0x7ffffff"); + JNU_ThrowIOException(env, "IStream::Stat() cbSize > 0x7ffffff"); return 0; } @@ -1349,7 +1341,7 @@ jint WDTCPIStreamWrapper::Read() { return (jint)(actual == 0 ? -1 : b); default: - env->ThrowNew(javaIOExceptionClazz, "IStream::Read failed"); + JNU_ThrowIOException(env, "IStream::Read failed"); } return (jint)-1; } @@ -1394,6 +1386,7 @@ jint WDTCPIStreamWrapper::ReadBytes(jbyteArray buf, jint off, jint len) { ULONG actual = 0; jbyte* local = env->GetByteArrayElements(buf, &isCopy); HRESULT res; + CHECK_NULL_RETURN(local, (jint)-1); switch (res = m_istream->Read((void *)(local + off), (ULONG)len, &actual)) { case S_FALSE: @@ -1406,7 +1399,7 @@ jint WDTCPIStreamWrapper::ReadBytes(jbyteArray buf, jint off, jint len) { default: env->ReleaseByteArrayElements(buf, local, JNI_ABORT); - env->ThrowNew(javaIOExceptionClazz, "IStream::Read failed"); + JNU_ThrowIOException(env, "IStream::Read failed"); } return (jint)-1; diff --git a/jdk/src/windows/native/sun/windows/awt_Event.cpp b/jdk/src/windows/native/sun/windows/awt_Event.cpp index 445ae8762f4..e267285f092 100644 --- a/jdk/src/windows/native/sun/windows/awt_Event.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Event.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -45,12 +45,16 @@ Java_java_awt_Event_initIDs(JNIEnv *env, jclass cls) { TRY; AwtEvent::targetID = env->GetFieldID(cls, "target", "Ljava/lang/Object;"); - AwtEvent::xID = env->GetFieldID(cls, "x", "I"); - AwtEvent::yID = env->GetFieldID(cls, "y", "I"); - DASSERT(AwtEvent::targetID != NULL); + CHECK_NULL(AwtEvent::targetID); + + AwtEvent::xID = env->GetFieldID(cls, "x", "I"); DASSERT(AwtEvent::xID != NULL); + CHECK_NULL(AwtEvent::xID); + + AwtEvent::yID = env->GetFieldID(cls, "y", "I"); DASSERT(AwtEvent::yID != NULL); + CHECK_NULL(AwtEvent::yID); CATCH_BAD_ALLOC; } diff --git a/jdk/src/windows/native/sun/windows/awt_FileDialog.cpp b/jdk/src/windows/native/sun/windows/awt_FileDialog.cpp index 3fd993cc646..a9573e57d4b 100644 --- a/jdk/src/windows/native/sun/windows/awt_FileDialog.cpp +++ b/jdk/src/windows/native/sun/windows/awt_FileDialog.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -180,6 +180,9 @@ FileDialogHookProc(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam) return TRUE; } jstring strPath = JNU_NewStringPlatform(env, szPath); + if (strPath == NULL) { + throw std::bad_alloc(); + } // Call FilenameFilter.accept with path and filename UINT uRes = (env->CallBooleanMethod(peer, AwtFileDialog::checkFilenameFilterMID, strPath) == JNI_TRUE); @@ -269,6 +272,9 @@ AwtFileDialog::Show(void *p) if (title == NULL || env->GetStringLength(title)==0) { title = JNU_NewStringPlatform(env, L" "); + if (title == NULL) { + throw std::bad_alloc(); + } } JavaStringBuffer titleBuffer(env, title); @@ -376,6 +382,9 @@ AwtFileDialog::Show(void *p) ? (jint)GetBufferLength(ofn.lpstrFile, ofn.nMaxFile) : (jint)_tcslen(ofn.lpstrFile); jcharArray jnames = env->NewCharArray(length); + if (jnames == NULL) { + throw std::bad_alloc(); + } env->SetCharArrayRegion(jnames, 0, length, (jchar*)ofn.lpstrFile); env->CallVoidMethod(peer, AwtFileDialog::handleSelectedMID, jnames); @@ -500,38 +509,55 @@ Java_sun_awt_windows_WFileDialogPeer_initIDs(JNIEnv *env, jclass cls) AwtFileDialog::parentID = env->GetFieldID(cls, "parent", "Lsun/awt/windows/WComponentPeer;"); + DASSERT(AwtFileDialog::parentID != NULL); + CHECK_NULL(AwtFileDialog::parentID); + AwtFileDialog::fileFilterID = env->GetFieldID(cls, "fileFilter", "Ljava/io/FilenameFilter;"); - AwtFileDialog::setHWndMID = - env->GetMethodID(cls, "setHWnd", "(J)V"); + DASSERT(AwtFileDialog::fileFilterID != NULL); + CHECK_NULL(AwtFileDialog::fileFilterID); + + AwtFileDialog::setHWndMID = env->GetMethodID(cls, "setHWnd", "(J)V"); + DASSERT(AwtFileDialog::setHWndMID != NULL); + CHECK_NULL(AwtFileDialog::setHWndMID); + AwtFileDialog::handleSelectedMID = env->GetMethodID(cls, "handleSelected", "([C)V"); + DASSERT(AwtFileDialog::handleSelectedMID != NULL); + CHECK_NULL(AwtFileDialog::handleSelectedMID); + AwtFileDialog::handleCancelMID = env->GetMethodID(cls, "handleCancel", "()V"); + DASSERT(AwtFileDialog::handleCancelMID != NULL); + CHECK_NULL(AwtFileDialog::handleCancelMID); + AwtFileDialog::checkFilenameFilterMID = env->GetMethodID(cls, "checkFilenameFilter", "(Ljava/lang/String;)Z"); + DASSERT(AwtFileDialog::checkFilenameFilterMID != NULL); + CHECK_NULL(AwtFileDialog::checkFilenameFilterMID); + AwtFileDialog::isMultipleModeMID = env->GetMethodID(cls, "isMultipleMode", "()Z"); + DASSERT(AwtFileDialog::isMultipleModeMID != NULL); + CHECK_NULL(AwtFileDialog::isMultipleModeMID); /* java.awt.FileDialog fields */ cls = env->FindClass("java/awt/FileDialog"); - if (cls == NULL) { - return; - } + CHECK_NULL(cls); + AwtFileDialog::modeID = env->GetFieldID(cls, "mode", "I"); + DASSERT(AwtFileDialog::modeID != NULL); + CHECK_NULL(AwtFileDialog::modeID); + AwtFileDialog::dirID = env->GetFieldID(cls, "dir", "Ljava/lang/String;"); + DASSERT(AwtFileDialog::dirID != NULL); + CHECK_NULL(AwtFileDialog::dirID); + AwtFileDialog::fileID = env->GetFieldID(cls, "file", "Ljava/lang/String;"); + DASSERT(AwtFileDialog::fileID != NULL); + CHECK_NULL(AwtFileDialog::fileID); + AwtFileDialog::filterID = env->GetFieldID(cls, "filter", "Ljava/io/FilenameFilter;"); - - DASSERT(AwtFileDialog::parentID != NULL); - DASSERT(AwtFileDialog::setHWndMID != NULL); - DASSERT(AwtFileDialog::handleSelectedMID != NULL); - DASSERT(AwtFileDialog::handleCancelMID != NULL); - DASSERT(AwtFileDialog::isMultipleModeMID != NULL); - - DASSERT(AwtFileDialog::modeID != NULL); - DASSERT(AwtFileDialog::dirID != NULL); - DASSERT(AwtFileDialog::fileID != NULL); DASSERT(AwtFileDialog::filterID != NULL); CATCH_BAD_ALLOC; diff --git a/jdk/src/windows/native/sun/windows/awt_Frame.cpp b/jdk/src/windows/native/sun/windows/awt_Frame.cpp index 1195491069f..1ed2ac5915a 100644 --- a/jdk/src/windows/native/sun/windows/awt_Frame.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Frame.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -173,8 +173,11 @@ AwtFrame* AwtFrame::Create(jobject self, jobject parent) BOOL isEmbeddedInstance = FALSE; BOOL isEmbedded = FALSE; cls = env->FindClass("sun/awt/EmbeddedFrame"); + if (cls) { isEmbeddedInstance = env->IsInstanceOf(target, cls); + } else { + throw std::bad_alloc(); } INT_PTR handle; if (isEmbeddedInstance) { @@ -189,6 +192,8 @@ AwtFrame* AwtFrame::Create(jobject self, jobject parent) cls = env->FindClass("sun/awt/LightweightFrame"); if (cls) { isLightweight = env->IsInstanceOf(target, cls); + } else { + throw std::bad_alloc(); } frame->m_isLightweight = isLightweight; @@ -260,7 +265,11 @@ AwtFrame* AwtFrame::Create(jobject self, jobject parent) // for input method windows, use minimal decorations inputMethodWindowCls = env->FindClass("sun/awt/im/InputMethodWindow"); - if ((inputMethodWindowCls != NULL) && env->IsInstanceOf(target, inputMethodWindowCls)) { + if (inputMethodWindowCls == NULL) { + throw std::bad_alloc(); + } + + if (env->IsInstanceOf(target, inputMethodWindowCls)) { //for below-the-spot composition window, use no decoration if (env->GetBooleanField(target, AwtFrame::undecoratedID) == JNI_TRUE){ exStyle = 0; @@ -1609,9 +1618,10 @@ Java_sun_awt_windows_WFramePeer_initIDs(JNIEnv *env, jclass cls) TRY; AwtFrame::setExtendedStateMID = env->GetMethodID(cls, "setExtendedState", "(I)V"); - AwtFrame::getExtendedStateMID = env->GetMethodID(cls, "getExtendedState", "()I"); - DASSERT(AwtFrame::setExtendedStateMID); + CHECK_NULL(AwtFrame::setExtendedStateMID); + + AwtFrame::getExtendedStateMID = env->GetMethodID(cls, "getExtendedState", "()I"); DASSERT(AwtFrame::getExtendedStateMID); CATCH_BAD_ALLOC; @@ -1784,35 +1794,6 @@ Java_sun_awt_windows_WFramePeer_pSetIMMOption(JNIEnv *env, jobject self, } /* extern "C" */ -/************************************************************************ - * EmbeddedFrame native methods - */ - -extern "C" { - -/* - * Class: sun_awt_EmbeddedFrame - * Method: setPeer - * Signature: (Ljava/awt/peer/ComponentPeer;)V - */ -JNIEXPORT void JNICALL -Java_sun_awt_EmbeddedFrame_setPeer(JNIEnv *env, jobject self, jobject lpeer) -{ - TRY; - - jclass cls; - jfieldID fid; - - cls = env->GetObjectClass(self); - fid = env->GetFieldID(cls, "peer", "Ljava/awt/peer/ComponentPeer;"); - env->SetObjectField(self, fid, lpeer); - - CATCH_BAD_ALLOC; -} - -} /* extern "C" */ - - /************************************************************************ * WEmbeddedFrame native methods */ @@ -1831,6 +1812,7 @@ Java_sun_awt_windows_WEmbeddedFrame_initIDs(JNIEnv *env, jclass cls) AwtFrame::handleID = env->GetFieldID(cls, "handle", "J"); DASSERT(AwtFrame::handleID != NULL); + CHECK_NULL(AwtFrame::handleID); AwtFrame::activateEmbeddingTopLevelMID = env->GetMethodID(cls, "activateEmbeddingTopLevel", "()V"); DASSERT(AwtFrame::activateEmbeddingTopLevelMID != NULL); diff --git a/jdk/src/windows/native/sun/windows/awt_InputTextInfor.cpp b/jdk/src/windows/native/sun/windows/awt_InputTextInfor.cpp index bbe8a8419ce..4ccf0d55e3e 100644 --- a/jdk/src/windows/native/sun/windows/awt_InputTextInfor.cpp +++ b/jdk/src/windows/native/sun/windows/awt_InputTextInfor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -132,6 +132,7 @@ AwtInputTextInfor::GetContextData(HIMC hIMC, const LPARAM flags) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); if (m_cStrW > 0) { m_jtext = MakeJavaString(env, m_lpStrW, m_cStrW); + JNU_CHECK_EXCEPTION_RETURN(env, -1); } // Merge the string if necessary @@ -251,6 +252,13 @@ int AwtInputTextInfor::GetClauseInfor(int*& lpBndClauseW, jstring*& lpReadingCla } else { readingClauseW[cls] = MakeJavaString(env, lpHWStrW, cHWStrW); } + if (env->ExceptionCheck()) { + lpBndClauseW = NULL; + lpReadingClauseW = NULL; + delete [] bndClauseW; + delete [] readingClauseW; + return 0; + } } else { readingClauseW[cls] = NULL; diff --git a/jdk/src/windows/native/sun/windows/awt_KeyEvent.cpp b/jdk/src/windows/native/sun/windows/awt_KeyEvent.cpp index dc9acd2d2cf..7b21e5c959a 100644 --- a/jdk/src/windows/native/sun/windows/awt_KeyEvent.cpp +++ b/jdk/src/windows/native/sun/windows/awt_KeyEvent.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -48,19 +48,28 @@ Java_java_awt_event_KeyEvent_initIDs(JNIEnv *env, jclass cls) { TRY; AwtKeyEvent::keyCodeID = env->GetFieldID(cls, "keyCode", "I"); - AwtKeyEvent::keyCharID = env->GetFieldID(cls, "keyChar", "C"); - AwtKeyEvent::rawCodeID = env->GetFieldID(cls, "rawCode", "J"); - AwtKeyEvent::primaryLevelUnicodeID = env->GetFieldID(cls, "primaryLevelUnicode", "J"); - AwtKeyEvent::scancodeID = env->GetFieldID(cls, "scancode", "J"); - AwtKeyEvent::extendedKeyCodeID = env->GetFieldID(cls, "extendedKeyCode", "J"); - - DASSERT(AwtKeyEvent::keyCodeID != NULL); + CHECK_NULL(AwtKeyEvent::keyCodeID); + + AwtKeyEvent::keyCharID = env->GetFieldID(cls, "keyChar", "C"); DASSERT(AwtKeyEvent::keyCharID != NULL); + CHECK_NULL(AwtKeyEvent::keyCharID); + + AwtKeyEvent::rawCodeID = env->GetFieldID(cls, "rawCode", "J"); DASSERT(AwtKeyEvent::rawCodeID != NULL); + CHECK_NULL(AwtKeyEvent::rawCodeID); + + AwtKeyEvent::primaryLevelUnicodeID = env->GetFieldID(cls, "primaryLevelUnicode", "J"); DASSERT(AwtKeyEvent::primaryLevelUnicodeID != NULL); + CHECK_NULL(AwtKeyEvent::primaryLevelUnicodeID); + + AwtKeyEvent::scancodeID = env->GetFieldID(cls, "scancode", "J"); DASSERT(AwtKeyEvent::scancodeID != NULL); + CHECK_NULL(AwtKeyEvent::scancodeID); + + AwtKeyEvent::extendedKeyCodeID = env->GetFieldID(cls, "extendedKeyCode", "J"); DASSERT(AwtKeyEvent::extendedKeyCodeID != NULL); + CHECK_NULL(AwtKeyEvent::extendedKeyCodeID); CATCH_BAD_ALLOC; } diff --git a/jdk/src/windows/native/sun/windows/awt_Menu.cpp b/jdk/src/windows/native/sun/windows/awt_Menu.cpp index ff428f20c8e..8bea41c88e3 100644 --- a/jdk/src/windows/native/sun/windows/awt_Menu.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Menu.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -351,10 +351,11 @@ Java_java_awt_Menu_initIDs(JNIEnv *env, jclass cls) TRY; AwtMenu::countItemsMID = env->GetMethodID(cls, "countItemsImpl", "()I"); + DASSERT(AwtMenu::countItemsMID != NULL); + CHECK_NULL(AwtMenu::countItemsMID); + AwtMenu::getItemMID = env->GetMethodID(cls, "getItemImpl", "(I)Ljava/awt/MenuItem;"); - - DASSERT(AwtMenu::countItemsMID != NULL); DASSERT(AwtMenu::getItemMID != NULL); CATCH_BAD_ALLOC; diff --git a/jdk/src/windows/native/sun/windows/awt_MenuBar.cpp b/jdk/src/windows/native/sun/windows/awt_MenuBar.cpp index 82f537043ba..c600d8d36ac 100644 --- a/jdk/src/windows/native/sun/windows/awt_MenuBar.cpp +++ b/jdk/src/windows/native/sun/windows/awt_MenuBar.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -268,9 +268,11 @@ Java_java_awt_MenuBar_initIDs(JNIEnv *env, jclass cls) TRY; AwtMenuBar::getMenuCountMID = env->GetMethodID(cls, "getMenuCountImpl", "()I"); + DASSERT(AwtMenuBar::getMenuCountMID != NULL); + CHECK_NULL(AwtMenuBar::getMenuCountMID); + AwtMenuBar::getMenuMID = env->GetMethodID(cls, "getMenuImpl", "(I)Ljava/awt/Menu;"); - DASSERT(AwtMenuBar::getMenuCountMID != NULL); DASSERT(AwtMenuBar::getMenuMID != NULL); CATCH_BAD_ALLOC; diff --git a/jdk/src/windows/native/sun/windows/awt_MouseEvent.cpp b/jdk/src/windows/native/sun/windows/awt_MouseEvent.cpp index d373b523e88..682c6e2fa6f 100644 --- a/jdk/src/windows/native/sun/windows/awt_MouseEvent.cpp +++ b/jdk/src/windows/native/sun/windows/awt_MouseEvent.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -45,12 +45,16 @@ Java_java_awt_event_MouseEvent_initIDs(JNIEnv *env, jclass cls) { TRY; AwtMouseEvent::xID = env->GetFieldID(cls, "x", "I"); - AwtMouseEvent::yID = env->GetFieldID(cls, "y", "I"); - AwtMouseEvent::buttonID = env->GetFieldID(cls, "button", "I"); - DASSERT(AwtMouseEvent::xID != NULL); + CHECK_NULL(AwtMouseEvent::xID); + + AwtMouseEvent::yID = env->GetFieldID(cls, "y", "I"); DASSERT(AwtMouseEvent::yID != NULL); + CHECK_NULL(AwtMouseEvent::yID); + + AwtMouseEvent::buttonID = env->GetFieldID(cls, "button", "I"); DASSERT(AwtMouseEvent::buttonID != NULL); + CHECK_NULL(AwtMouseEvent::buttonID); CATCH_BAD_ALLOC; } diff --git a/jdk/src/windows/native/sun/windows/awt_Object.cpp b/jdk/src/windows/native/sun/windows/awt_Object.cpp index b3552807ba6..13507b9846c 100644 --- a/jdk/src/windows/native/sun/windows/awt_Object.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Object.cpp @@ -232,22 +232,31 @@ Java_sun_awt_windows_WObjectPeer_initIDs(JNIEnv *env, jclass cls) { TRY; AwtObject::wObjectPeerClass = (jclass)env->NewGlobalRef(cls); + DASSERT(AwtObject::wObjectPeerClass != NULL); + CHECK_NULL(AwtObject::wObjectPeerClass); + AwtObject::pDataID = env->GetFieldID(cls, "pData", "J"); + DASSERT(AwtObject::pDataID != NULL); + CHECK_NULL(AwtObject::pDataID); + AwtObject::destroyedID = env->GetFieldID(cls, "destroyed", "Z"); + DASSERT(AwtObject::destroyedID != NULL); + CHECK_NULL(AwtObject::destroyedID); + AwtObject::targetID = env->GetFieldID(cls, "target", "Ljava/lang/Object;"); + DASSERT(AwtObject::targetID != NULL); + CHECK_NULL(AwtObject::targetID); AwtObject::getPeerForTargetMID = env->GetStaticMethodID(cls, "getPeerForTarget", "(Ljava/lang/Object;)Lsun/awt/windows/WObjectPeer;"); + DASSERT(AwtObject::getPeerForTargetMID != NULL); + CHECK_NULL(AwtObject::getPeerForTargetMID); AwtObject::createErrorID = env->GetFieldID(cls, "createError", "Ljava/lang/Error;"); - - DASSERT(AwtObject::pDataID != NULL); - DASSERT(AwtObject::destroyedID != NULL); - DASSERT(AwtObject::targetID != NULL); - DASSERT(AwtObject::getPeerForTargetMID != NULL); DASSERT(AwtObject::createErrorID != NULL); + CHECK_NULL(AwtObject::createErrorID); CATCH_BAD_ALLOC; } diff --git a/jdk/src/windows/native/sun/windows/awt_PopupMenu.cpp b/jdk/src/windows/native/sun/windows/awt_PopupMenu.cpp index cc03c0ba46c..0a04e0e8db5 100644 --- a/jdk/src/windows/native/sun/windows/awt_PopupMenu.cpp +++ b/jdk/src/windows/native/sun/windows/awt_PopupMenu.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -114,7 +114,6 @@ void AwtPopupMenu::Show(JNIEnv *env, jobject event, BOOL isTrayIconPopup) * as the event's target. */ if (env->EnsureLocalCapacity(2) < 0) { - env->DeleteGlobalRef(event); return; } jobject origin = (env)->GetObjectField(event, AwtEvent::targetID); @@ -155,7 +154,6 @@ void AwtPopupMenu::Show(JNIEnv *env, jobject event, BOOL isTrayIconPopup) done: env->DeleteLocalRef(origin); env->DeleteLocalRef(peerOrigin); - env->DeleteGlobalRef(event); } void AwtPopupMenu::_Show(void *param) @@ -164,29 +162,21 @@ void AwtPopupMenu::_Show(void *param) static jclass popupMenuCls; if (popupMenuCls == NULL) { - jclass popupMenuClsLocal = - env->FindClass("java/awt/PopupMenu"); - if (!popupMenuClsLocal) { - /* exception already thrown */ - ShowStruct *ss = (ShowStruct*)param; - if (ss->self != NULL) { - env->DeleteGlobalRef(ss->self); - } - delete ss; - return; + jclass popupMenuClsLocal = env->FindClass("java/awt/PopupMenu"); + if (popupMenuClsLocal != NULL) { + popupMenuCls = (jclass)env->NewGlobalRef(popupMenuClsLocal); + env->DeleteLocalRef(popupMenuClsLocal); } - popupMenuCls = (jclass)env->NewGlobalRef(popupMenuClsLocal); - env->DeleteLocalRef(popupMenuClsLocal); } static jfieldID isTrayIconPopupID; - if (isTrayIconPopupID == NULL) { + if (popupMenuCls != NULL && isTrayIconPopupID == NULL) { isTrayIconPopupID = env->GetFieldID(popupMenuCls, "isTrayIconPopup", "Z"); DASSERT(isTrayIconPopupID); } ShowStruct *ss = (ShowStruct*)param; - if (ss->self != NULL) { + if (ss->self != NULL && isTrayIconPopupID != NULL) { PDATA pData = JNI_GET_PDATA(ss->self); if (pData) { AwtPopupMenu *p = (AwtPopupMenu *)pData; @@ -195,9 +185,17 @@ void AwtPopupMenu::_Show(void *param) env->DeleteLocalRef(target); p->Show(env, ss->event, isTrayIconPopup); } + } + if (ss->self != NULL) { env->DeleteGlobalRef(ss->self); } + if (ss->event != NULL) { + env->DeleteGlobalRef(ss->event); + } delete ss; + if (isTrayIconPopupID == NULL) { + throw std::bad_alloc(); + } } void AwtPopupMenu::AddItem(AwtMenuItem *item) @@ -303,7 +301,7 @@ Java_sun_awt_windows_WPopupMenuPeer__1show(JNIEnv *env, jobject self, // fix for 6268046: invoke the function without CriticalSection's synchronization AwtToolkit::GetInstance().InvokeFunction(AwtPopupMenu::_Show, ss); - // global ref is deleted in _Show() and ss is deleted in Show() + // global ref and ss are deleted in _Show() CATCH_BAD_ALLOC; } diff --git a/jdk/src/windows/native/sun/windows/awt_PrintDialog.cpp b/jdk/src/windows/native/sun/windows/awt_PrintDialog.cpp index 8244be5cdda..d0f658723f7 100644 --- a/jdk/src/windows/native/sun/windows/awt_PrintDialog.cpp +++ b/jdk/src/windows/native/sun/windows/awt_PrintDialog.cpp @@ -172,11 +172,13 @@ Java_sun_awt_windows_WPrintDialogPeer_initIDs(JNIEnv *env, jclass cls) AwtPrintDialog::parentID = env->GetFieldID(cls, "parent", "Lsun/awt/windows/WComponentPeer;"); + DASSERT(AwtPrintDialog::parentID != NULL); + CHECK_NULL(AwtPrintDialog::parentID); + AwtPrintDialog::setHWndMID = env->GetMethodID(cls, "setHWnd", "(J)V"); - - DASSERT(AwtPrintDialog::parentID != NULL); DASSERT(AwtPrintDialog::setHWndMID != NULL); + CHECK_NULL(AwtPrintDialog::setHWndMID); CATCH_BAD_ALLOC; } diff --git a/jdk/src/windows/native/sun/windows/awt_PrintJob.cpp b/jdk/src/windows/native/sun/windows/awt_PrintJob.cpp index 6db838f2fa6..b9d818e0cfd 100644 --- a/jdk/src/windows/native/sun/windows/awt_PrintJob.cpp +++ b/jdk/src/windows/native/sun/windows/awt_PrintJob.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -281,21 +281,15 @@ static void setPaperValues(JNIEnv *env, jobject paper, const POINT *paperSize, static long convertFromPoints(double value, int units); static double convertToPoints(long value, int units); void setCapabilities(JNIEnv *env, jobject self, HDC printDC); -static inline WORD getPrintPaperSize(JNIEnv *env, jobject self); -static inline void setPrintPaperSize(JNIEnv *env, jobject self, WORD sz); -static jint getIntField(JNIEnv *env, jobject self, const char *fieldName); -static jlong getLongField(JNIEnv *env, jobject self, const char *fieldName); -static void setIntField(JNIEnv *env, jobject self, - const char *fieldName, jint value); -static void setLongField(JNIEnv *env, jobject self, - const char *fieldName, jlong value); -static jfieldID getIdOfIntField(JNIEnv *env, jobject self, +static inline WORD getPrintPaperSize(JNIEnv *env, jboolean* err, jobject self); +static inline jboolean setPrintPaperSize(JNIEnv *env, jobject self, WORD sz); +static jint getIntField(JNIEnv *env, jboolean* err, jobject self, const char *fieldName); +static jboolean setIntField(JNIEnv *env, jobject self, + const char *fieldName, jint value); +static jboolean getBooleanField(JNIEnv *env, jboolean* err, jobject self, const char *fieldName); -static jfieldID getIdOfLongField(JNIEnv *env, jobject self, - const char *fieldName); -static void setBooleanField(JNIEnv *env, jobject self, +static jboolean setBooleanField(JNIEnv *env, jobject self, const char *fieldName, jboolean value); - static jbyte *findNonWhite(jbyte *image, long sy, long width, long height, long scanLineStride, long *numLinesP); static jbyte *findWhite(jbyte *image, long sy, long width, long height, @@ -577,7 +571,8 @@ Java_sun_awt_windows_WPageDialogPeer__1show(JNIEnv *env, jobject peer) * If both are null, then there is no default printer. */ if ((setup.hDevMode == NULL) && (setup.hDevNames == NULL)) { - return JNI_FALSE; + doIt = JNI_FALSE; + goto done; } } else { int measure = PSD_INTHOUSANDTHSOFINCHES; @@ -602,8 +597,11 @@ Java_sun_awt_windows_WPageDialogPeer__1show(JNIEnv *env, jobject peer) * into the Windows setup structure so that the format can * be displayed in the dialog. */ - pageFormatToSetup(env, self, page, &setup, - AwtPrintControl::getPrintDC(env, self)); + pageFormatToSetup(env, self, page, &setup, AwtPrintControl::getPrintDC(env, self)); + if (env->ExceptionCheck()) { + doIt = JNI_FALSE; + goto done; + } setup.lpfnPageSetupHook = reinterpret_cast<LPPAGESETUPHOOK>(pageDlgHook); setup.Flags = PSD_ENABLEPAGESETUPHOOK | PSD_MARGINS; @@ -614,7 +612,10 @@ Java_sun_awt_windows_WPageDialogPeer__1show(JNIEnv *env, jobject peer) if (ret) { jobject paper = getPaper(env, page); - + if (paper == NULL) { + doIt = JNI_FALSE; + goto done; + } int units = setup.Flags & PSD_INTHOUSANDTHSOFINCHES ? MM_HIENGLISH : MM_HIMETRIC; @@ -653,19 +654,33 @@ Java_sun_awt_windows_WPageDialogPeer__1show(JNIEnv *env, jobject peer) * and place them into a Paper instance. */ setPaperValues(env, paper, &paperSize, &margins, units); - - /* Put the updated Paper instance and the orientation into + if (env->ExceptionCheck()) { + doIt = JNI_FALSE; + goto done; + } + /* + * Put the updated Paper instance and the orientation into * the PageFormat. */ setPaper(env, page, paper); - + if (env->ExceptionCheck()) { + doIt = JNI_FALSE; + goto done; + } setPageFormatOrientation(env, page, orientation); - + if (env->ExceptionCheck()) { + doIt = JNI_FALSE; + goto done; + } if (setup.hDevMode != NULL) { DEVMODE *devmode = (DEVMODE *)::GlobalLock(setup.hDevMode); if (devmode != NULL) { if (devmode->dmFields & DM_PAPERSIZE) { - setPrintPaperSize(env, self, devmode->dmPaperSize); + jboolean err = setPrintPaperSize(env, self, devmode->dmPaperSize); + if (err) { + doIt = JNI_FALSE; + goto done; + } } } ::GlobalUnlock(setup.hDevMode); @@ -673,8 +688,6 @@ Java_sun_awt_windows_WPageDialogPeer__1show(JNIEnv *env, jobject peer) doIt = JNI_TRUE; } - DASSERT(env->GetLongField(peer, AwtComponent::hwndID) == 0L); - AwtDialog::CheckUninstallModalHook(); AwtDialog::ModalActivateNextWindow(NULL, target, peer); @@ -689,6 +702,7 @@ Java_sun_awt_windows_WPageDialogPeer__1show(JNIEnv *env, jobject peer) AwtPrintControl::setPrintHDName(env, self, setup.hDevNames); } +done: env->DeleteGlobalRef(peerGlobalRef); if (target != NULL) { env->DeleteLocalRef(target); @@ -826,8 +840,14 @@ Java_sun_awt_windows_WPrinterJob_getDefaultPage(JNIEnv *env, jobject self, margins.bottom = convertFromPoints(72, units);; jobject paper = getPaper(env, page); + if (paper == NULL) { + goto done; + } + setPaperValues(env, paper, &paperSize, &margins, units); + if (env->ExceptionCheck()) goto done; setPaper(env, page, paper); + if (env->ExceptionCheck()) goto done; if ((pDevMode->dmFields & DM_ORIENTATION) && (pDevMode->dmOrientation == DMORIENT_LANDSCAPE)) { @@ -837,8 +857,10 @@ Java_sun_awt_windows_WPrinterJob_getDefaultPage(JNIEnv *env, jobject self, } } else { - setBooleanField(env, self, NO_DEFAULTPRINTER_STR, (jint)JNI_TRUE); + setBooleanField(env, self, NO_DEFAULTPRINTER_STR, (jint)JNI_TRUE); } + +done: ::GlobalFree(pDevMode); free ((LPTSTR) printerName); @@ -890,9 +912,7 @@ Java_sun_awt_windows_WPrinterJob_validatePaper(JNIEnv *env, jobject self, } } - if (printDC == NULL) { - return; - } + JNI_CHECK_NULL_GOTO(printDC, "Invalid printDC", done); /* We try to mitigate the effects of floating point rounding errors * by only setting a value if it would differ from the value in the @@ -903,7 +923,9 @@ Java_sun_awt_windows_WPrinterJob_validatePaper(JNIEnv *env, jobject self, const double epsilon = 0.10; jdouble paperWidth, paperHeight; - WORD dmPaperSize = getPrintPaperSize(env, self); + jboolean err; + WORD dmPaperSize = getPrintPaperSize(env, &err, self); + if (err) goto done; double ix, iy, iw, ih, pw, ph; @@ -911,17 +933,24 @@ Java_sun_awt_windows_WPrinterJob_validatePaper(JNIEnv *env, jobject self, jmethodID getID; jclass paperClass = env->GetObjectClass(origPaper); + JNI_CHECK_NULL_GOTO(paperClass, "paper class not found", done); getID = env->GetMethodID(paperClass, GETWIDTH_STR, GETWIDTH_SIG); + JNI_CHECK_NULL_GOTO(getID, "no getWidth method", done); pw = env->CallDoubleMethod(origPaper, getID); getID = env->GetMethodID(paperClass, GETHEIGHT_STR, GETHEIGHT_SIG); + JNI_CHECK_NULL_GOTO(getID, "no getHeight method", done); ph = env->CallDoubleMethod(origPaper, getID); getID = env->GetMethodID(paperClass, GETIMG_X_STR, GETIMG_X_SIG); + JNI_CHECK_NULL_GOTO(getID, "no getX method", done); ix = env->CallDoubleMethod(origPaper, getID); getID = env->GetMethodID(paperClass, GETIMG_Y_STR, GETIMG_Y_SIG); + JNI_CHECK_NULL_GOTO(getID, "no getY method", done); iy = env->CallDoubleMethod(origPaper, getID); getID = env->GetMethodID(paperClass, GETIMG_W_STR, GETIMG_W_SIG); + JNI_CHECK_NULL_GOTO(getID, "no getW method", done); iw = env->CallDoubleMethod(origPaper, getID); getID = env->GetMethodID(paperClass, GETIMG_H_STR, GETIMG_H_SIG); + JNI_CHECK_NULL_GOTO(getID, "no getH method", done); ih = env->CallDoubleMethod(origPaper, getID); matchPaperSize(printDC, hDevMode, hDevNames, pw, ph, @@ -1014,12 +1043,16 @@ Java_sun_awt_windows_WPrinterJob_validatePaper(JNIEnv *env, jobject self, jmethodID setSizeID = env->GetMethodID(paperClass, SETSIZE_STR, SETSIZE_SIG); + JNI_CHECK_NULL_GOTO(setSizeID, "no setSize method", done); + jmethodID setImageableID = env->GetMethodID(paperClass, SETIMAGEABLE_STR, SETIMAGEABLE_SIG); + JNI_CHECK_NULL_GOTO(setImageableID, "no setImageable method", done); env->CallVoidMethod(newPaper, setSizeID, paperWidth, paperHeight); env->CallVoidMethod(newPaper, setImageableID, ix, iy, iw, ih); +done: /* Free any resources allocated */ if (privateDC == TRUE) { if (printDC != NULL) { @@ -1066,6 +1099,7 @@ static void initPrinter(JNIEnv *env, jobject self) { JNIEXPORT void JNICALL Java_sun_awt_windows_WPrinterJob_initPrinter(JNIEnv *env, jobject self) { TRY; + jboolean err; initPrinter(env, self); @@ -1089,17 +1123,19 @@ Java_sun_awt_windows_WPrinterJob_initPrinter(JNIEnv *env, jobject self) { ::GlobalUnlock(devnames); if (devLandRotation == 270) { - setBooleanField(env, self, LANDSCAPE_270_STR, JNI_TRUE); + err = setBooleanField(env, self, LANDSCAPE_270_STR, JNI_TRUE); } else { - setBooleanField(env, self, LANDSCAPE_270_STR, JNI_FALSE); + err = setBooleanField(env, self, LANDSCAPE_270_STR, JNI_FALSE); } + if (err) return; } if (dmFields & DM_COLLATE) { - setBooleanField(env, self, DRIVER_COLLATE_STR, JNI_TRUE); + err = setBooleanField(env, self, DRIVER_COLLATE_STR, JNI_TRUE); } else { - setBooleanField(env, self, DRIVER_COLLATE_STR, JNI_FALSE); + err = setBooleanField(env, self, DRIVER_COLLATE_STR, JNI_FALSE); } + if (err) return; if (dmFields & DM_COPIES) { setBooleanField(env, self, DRIVER_COPIES_STR, JNI_TRUE); @@ -1110,39 +1146,54 @@ Java_sun_awt_windows_WPrinterJob_initPrinter(JNIEnv *env, jobject self) { } -static bool setPrintReqAttribute(JNIEnv *env, jobject self, DEVMODE* devmode) { +/* + * returns 0 if print capabilities has been changed + * 1 if print capabilities has not been changed + * -1 in case of error + */ +static int setPrintReqAttribute(JNIEnv *env, jobject self, DEVMODE* devmode) { /* The xRes/yRes fields are only initialised if there is a resolution * attribute. Otherwise they both will be zero, in which case default * resolution should be fine. Consider calling getXRes()/getResY() * rather than accessing the fields directly */ - int xRes=getIntField(env, self, ATTXRES_STR); - int yRes=getIntField(env, self, ATTYRES_STR); - int quality=getIntField(env, self, ATTQUALITY_STR); - int printColor = getIntField(env, self, ATTCHROMATICITY_STR); - int sides = getIntField(env, self, ATTSIDES_STR); - int collate = getIntField(env, self, ATTCOLLATE_STR); + jboolean err; + int xRes=getIntField(env, &err, self, ATTXRES_STR); + if (err) return -1; + int yRes=getIntField(env, &err, self, ATTYRES_STR); + if (err) return -1; + int quality=getIntField(env, &err, self, ATTQUALITY_STR); + if (err) return -1; + int printColor = getIntField(env, &err, self, ATTCHROMATICITY_STR); + if (err) return -1; + int sides = getIntField(env, &err, self, ATTSIDES_STR); + if (err) return -1; + int collate = getIntField(env, &err, self, ATTCOLLATE_STR); + if (err) return -1; int copies = 1; - jclass myClass = env->GetObjectClass(self); // There may be cases when driver reports it cannot handle // multiple copies although it actually can . So this modification // handles that, to make sure that we report copies = 1 because // we already emulated multiple copies. - jfieldID fieldId = env->GetFieldID(myClass, DRIVER_COPIES_STR, "Z"); - if (env->GetBooleanField(self, fieldId)) { - copies = getIntField(env, self, ATTCOPIES_STR); + jboolean driverHandlesCopies = getBooleanField(env, &err, self, DRIVER_COPIES_STR); + if (err) return -1; + if (driverHandlesCopies) { + copies = getIntField(env, &err, self, ATTCOPIES_STR); + if (err) return -1; } // else "driverDoesMultipleCopies" is false, copies should be 1 (default) - int mediatray = getIntField(env, self, ATTMEDIATRAY_STR); - int mediaszname = getIntField(env, self, ATTMEDIASZNAME_STR); - bool ret = true; + int mediatray = getIntField(env, &err, self, ATTMEDIATRAY_STR); + if (err) return -1; + int mediaszname = getIntField(env, &err, self, ATTMEDIASZNAME_STR); + if (err) return -1; + int ret = 1; if (quality && quality < 0) { if (quality != devmode->dmPrintQuality) { devmode->dmPrintQuality = quality; devmode->dmFields |= DM_PRINTQUALITY; - // ret of "false" means that setCapabilities needs to be called - ret = false; + // ret of 0 means that setCapabilities needs to be called + ret = 0; } } else { /* If we didn't set quality, maybe we have resolution settings. */ @@ -1256,7 +1307,7 @@ LPTSTR VerifyDestination(JNIEnv *env, jobject wPrinterJob) { if (port != NULL && isFilePort(port)) { LPTSTR defPort = GetPrinterPort(env, printer); if (!isFilePort(defPort)) { // not a FILE: port by default - int len = wcslen(defPort); + size_t len = wcslen(defPort); if (len > 0 && port[len-1] == L':') { // is a device port dest = defPort; } else { @@ -1291,12 +1342,19 @@ Java_sun_awt_windows_WPrinterJob__1startDoc(JNIEnv *env, jobject self, LPTSTR destination = NULL; if (dest != NULL) { destination = (LPTSTR)JNU_GetStringPlatformChars(env, dest, NULL); + CHECK_NULL_RETURN(destination, JNI_FALSE); } else { destination = VerifyDestination(env, self); } LPTSTR docname = NULL; if (jobname != NULL) { LPTSTR tmp = (LPTSTR)JNU_GetStringPlatformChars(env, jobname, NULL); + if (tmp == NULL) { + if (dest != NULL) { + JNU_ReleaseStringPlatformChars(env, dest, destination); + } + return JNI_FALSE; + } docname = _tcsdup(tmp); JNU_ReleaseStringPlatformChars(env, jobname, tmp); } else { @@ -1317,23 +1375,33 @@ Java_sun_awt_windows_WPrinterJob__1startDoc(JNIEnv *env, jobject self, HGLOBAL hDevMode = AwtPrintControl::getPrintHDMode(env, self); if (printDC != NULL && hDevMode != NULL) { DEVMODE *devmode = (DEVMODE *)::GlobalLock(hDevMode); + bool success = true; if (devmode != NULL) { devmode->dmFields |= DM_ORIENTATION; devmode->dmOrientation = DMORIENT_PORTRAIT; /* set attribute values into devmode */ - bool ret = setPrintReqAttribute(env, self, devmode); + int ret = setPrintReqAttribute(env, self, devmode); ::ResetDC(printDC, devmode); RESTORE_CONTROLWORD - if (!ret) { + if (ret == 0) { /* Need to read in updated device capabilities because print quality has been changed. */ setCapabilities(env, self, printDC); + if (env->ExceptionCheck()) success = false; + } else if (ret < 0) { + success = false; } } ::GlobalUnlock(hDevMode); + if (!success) { + if (dest != NULL) { + JNU_ReleaseStringPlatformChars(env, dest, destination); + } + return JNI_FALSE; + } } if (printDC){ @@ -1358,13 +1426,13 @@ Java_sun_awt_windows_WPrinterJob__1startDoc(JNIEnv *env, jobject self, } else { err = 0; } - if (dest != NULL) { - JNU_ReleaseStringPlatformChars(env, dest, destination); - } } else { - jclass printerException = env->FindClass(PRINTEREXCEPTION_STR); - env->ThrowNew(printerException, "No printer found."); + JNU_ThrowByName(env, PRINTEREXCEPTION_STR, "No printer found."); + } + + if (dest != NULL) { + JNU_ReleaseStringPlatformChars(env, dest, destination); } if (err && err != ERROR_CANCELLED) { @@ -1481,7 +1549,9 @@ JNIEXPORT void JNICALL Java_sun_awt_windows_WPrinterJob_deviceStartPage LONG retval = 0; HGLOBAL hDevMode = AwtPrintControl::getPrintHDMode(env, self); HGLOBAL hDevNames = AwtPrintControl::getPrintHDName(env, self); - WORD dmPaperSize = getPrintPaperSize(env, self); + jboolean err; + WORD dmPaperSize = getPrintPaperSize(env, &err, self); + if (err) return; SAVE_CONTROLWORD // Unless the PageFormat has been changed, do not set the paper // size for a new page. Doing so is unnecessary, perhaps expensive, @@ -1492,7 +1562,9 @@ JNIEXPORT void JNICALL Java_sun_awt_windows_WPrinterJob_deviceStartPage RectDouble paperSize; RectDouble margins; jobject paper = getPaper(env, format); + CHECK_NULL(paper); getPaperValues(env, paper, &paperSize, &margins); + JNU_CHECK_EXCEPTION(env); double paperWidth, paperHeight; matchPaperSize(printDC, hDevMode, hDevNames, paperSize.width, paperSize.height, @@ -1656,6 +1728,7 @@ JNIEXPORT void JNICALL Java_sun_awt_windows_WEmbeddedFrame_printBand jbyte *image = NULL; try { image = (jbyte *)env->GetPrimitiveArrayCritical(imageArray, 0); + CHECK_NULL(image); struct { BITMAPINFOHEADER bmiHeader; DWORD* bmiColors; @@ -2194,6 +2267,7 @@ static jboolean jFontToWFontW(JNIEnv *env, HDC printDC, jstring fontName, memset(&matchedLogFont, 0, sizeof(matchedLogFont)); LPCWSTR fontNameW = JNU_GetStringPlatformChars(env, fontName, NULL); + CHECK_NULL_RETURN(fontNameW, JNI_FALSE); /* Describe the GDI fonts we want enumerated. We * simply supply the java font name and let GDI @@ -2383,6 +2457,7 @@ JNIEXPORT jint JNICALL Java_sun_awt_windows_WPrinterJob_getGDIAdvance { SIZE size; LPCWSTR wText = JNU_GetStringPlatformChars(env, text, NULL); + CHECK_NULL_RETURN(wText, 0); size_t strLen = wcslen(wText); BOOL ok = GetTextExtentPoint32((HDC)printDC, wText, (int)strLen, &size); JNU_ReleaseStringPlatformChars(env, text, wText); @@ -2438,6 +2513,7 @@ JNIEXPORT void JNICALL Java_sun_awt_windows_WPrinterJob_textOut long posY = ROUND_TO_LONG(y); int flags = (glyphCodes !=0) ? ETO_GLYPH_INDEX : 0; LPCWSTR wText = JNU_GetStringPlatformChars(env, text, NULL); + CHECK_NULL(wText); int *advances = NULL, *xadvances = NULL, *xyadvances = NULL; BOOL useYAdvances = FALSE; @@ -2841,10 +2917,12 @@ JNIEXPORT void JNICALL Java_sun_awt_windows_WPrinterJob_drawDIBImage numCols = MAXCOLS; /* don't write past end of struct */ } bmiCols = (BYTE*)env->GetPrimitiveArrayCritical(bmiColorsArray, 0); + CHECK_NULL(bmiCols); memcpy(&(bmi.bmiColors[0]), bmiCols, (numCols*4)); env->ReleasePrimitiveArrayCritical(bmiColorsArray, bmiCols, 0); } imageBits = (jint *)env->GetPrimitiveArrayCritical(image, 0); + CHECK_NULL(imageBits); // Workaround for drivers/apps that do not support top-down. // Because we don't know if they support or not, @@ -2900,6 +2978,7 @@ static void doPrintBand(JNIEnv *env, jboolean browserPrinting, try { long scanLineStride = J2DRasterBPP * width; image = (jbyte *)env->GetPrimitiveArrayCritical(imageArray, 0); + CHECK_NULL(image); jbyte *startImage; jbyte *endImage = NULL; long startY = 0; @@ -3132,6 +3211,9 @@ static HDC getDefaultPrinterDC(JNIEnv *env, jobject printerJob) { */ int maxCopies = 1; int nCopies = getCopies(env, printerJob); + if (nCopies < 0) { + return NULL; + } SAVE_CONTROLWORD if (pd.hDevNames != NULL) { DEVNAMES *devnames = (DEVNAMES *)::GlobalLock(pd.hDevNames); @@ -3176,11 +3258,14 @@ static HDC getDefaultPrinterDC(JNIEnv *env, jobject printerJob) { AwtPrintControl::setPrintHDName(env, printerJob, pd.hDevNames); } - setBooleanField(env, printerJob, DRIVER_COPIES_STR, - (devWillDoCopies ? JNI_TRUE : JNI_FALSE)); - setBooleanField(env, printerJob, DRIVER_COLLATE_STR, JNI_FALSE); - setBooleanField(env, printerJob, USER_COLLATE_STR, JNI_FALSE); - + jboolean err; + err = setBooleanField(env, printerJob, DRIVER_COPIES_STR, + (devWillDoCopies ? JNI_TRUE : JNI_FALSE)); + if (err) return NULL; + err = setBooleanField(env, printerJob, DRIVER_COLLATE_STR, JNI_FALSE); + if (err) return NULL; + err = setBooleanField(env, printerJob, USER_COLLATE_STR, JNI_FALSE); + if (err) return NULL; } return printDC; @@ -3200,6 +3285,7 @@ static void pageFormatToSetup(JNIEnv *env, jobject job, /* Move the orientation from PageFormat to Windows. */ jint orient = getPageFormatOrientation(env, page); + if (orient < 0) return; int gdiOrientation = (orient == PAGEFORMAT_PORTRAIT) ? DMORIENT_PORTRAIT : DMORIENT_LANDSCAPE; setOrientationInDevMode(setup->hDevMode, orient == PAGEFORMAT_PORTRAIT); @@ -3208,7 +3294,9 @@ static void pageFormatToSetup(JNIEnv *env, jobject job, ? MM_HIENGLISH : MM_HIMETRIC; jobject paper = getPaper(env, page); + CHECK_NULL(paper); getPaperValues(env, paper, &paperSize, &margins); + JNU_CHECK_EXCEPTION(env); // Setting the paper size appears to be a futile exercise, as its not one // of the values you can initialise - its an out-only arg. Margins are OK. // set it into the DEVMODE if there is one .. @@ -3218,7 +3306,9 @@ static void pageFormatToSetup(JNIEnv *env, jobject job, if (setup->hDevMode != NULL) { double paperWidth, paperHeight; - WORD dmPaperSize = getPrintPaperSize(env, job); + jboolean err; + WORD dmPaperSize = getPrintPaperSize(env, &err, job); + if (err) return; matchPaperSize(hDC, setup->hDevMode, setup->hDevNames, paperSize.width, paperSize.height, &paperWidth, &paperHeight, &dmPaperSize); @@ -3444,6 +3534,7 @@ static jint getCopies(JNIEnv *env, jobject printerJob) jclass printerJobClass = env->GetObjectClass(printerJob); jmethodID getCopiesID = env->GetMethodID(printerJobClass, GETCOPIES_STR, GETCOPIES_SIG); + CHECK_NULL_RETURN(getCopiesID, -1); jint copies = env->CallIntMethod(printerJob, getCopiesID); return copies; @@ -3462,6 +3553,7 @@ static jobject getPaper(JNIEnv *env, jobject page) { jclass pageClass = env->GetObjectClass(page); jmethodID getPaperID = env->GetMethodID(pageClass, GETPAPER_STR, GETPAPER_SIG); + CHECK_NULL_RETURN(getPaperID, NULL); return env->CallObjectMethod(page, getPaperID); } @@ -3479,12 +3571,14 @@ static void setPaper(JNIEnv *env, jobject page, jobject paper) { jclass pageClass = env->GetObjectClass(page); jmethodID setPaperID = env->GetMethodID(pageClass, SETPAPER_STR, SETPAPER_SIG); + CHECK_NULL(setPaperID); env->CallVoidMethod(page, setPaperID, paper); } /** * Return the integer ID for the orientation in the PageFormat. * Caution: this is the Java spec ID, not the GDI ID. + * In case of error returns -1 */ static jint getPageFormatOrientation(JNIEnv *env, jobject page) { // Because this function may call client Java code, @@ -3494,6 +3588,7 @@ static jint getPageFormatOrientation(JNIEnv *env, jobject page) { jclass pageClass = env->GetObjectClass(page); jmethodID getOrientID = env->GetMethodID(pageClass, GETORIENT_STR, GETORIENT_SIG); + CHECK_NULL_RETURN(getOrientID, -1); return env->CallIntMethod(page, getOrientID); } @@ -3506,6 +3601,7 @@ static void setPageFormatOrientation(JNIEnv *env, jclass pageClass = env->GetObjectClass(page); jmethodID setOrientID = env->GetMethodID(pageClass, SETORIENT_STR, SETORIENT_SIG); + CHECK_NULL(setOrientID); env->CallVoidMethod(page, setOrientID, orientation); } @@ -3527,24 +3623,29 @@ static void getPaperValues(JNIEnv *env, jobject paper, RectDouble *paperSize, jclass paperClass = env->GetObjectClass(paper); getID = env->GetMethodID(paperClass, GETWIDTH_STR, GETWIDTH_SIG); + CHECK_NULL(getID); paperSize->width = env->CallDoubleMethod(paper, getID); getID = env->GetMethodID(paperClass, GETHEIGHT_STR, GETHEIGHT_SIG); + CHECK_NULL(getID); paperSize->height = env->CallDoubleMethod(paper, getID); getID = env->GetMethodID(paperClass, GETIMG_X_STR, GETIMG_X_SIG); + CHECK_NULL(getID); margins->x = env->CallDoubleMethod(paper, getID); if (margins-> x < 0 ) { margins-> x = 0; } getID = env->GetMethodID(paperClass, GETIMG_Y_STR, GETIMG_Y_SIG); + CHECK_NULL(getID); margins->y = env->CallDoubleMethod(paper, getID); if (margins-> y < 0 ) { margins-> y = 0; } getID = env->GetMethodID(paperClass, GETIMG_W_STR, GETIMG_W_SIG); + CHECK_NULL(getID); if (widthAsMargin) { margins->width = paperSize->width - margins->x - env->CallDoubleMethod(paper, getID); @@ -3557,6 +3658,7 @@ static void getPaperValues(JNIEnv *env, jobject paper, RectDouble *paperSize, } getID = env->GetMethodID(paperClass, GETIMG_H_STR, GETIMG_H_SIG); + CHECK_NULL(getID); if (widthAsMargin) { margins->height = paperSize->height - margins->y - env->CallDoubleMethod(paper, getID); @@ -3567,7 +3669,6 @@ static void getPaperValues(JNIEnv *env, jobject paper, RectDouble *paperSize, if (margins->height < 0) { margins->height = 0; } - } /** @@ -3587,8 +3688,10 @@ static void setPaperValues(JNIEnv *env, jobject paper, const POINT *paperSize, jclass paperClass = env->GetObjectClass(paper); jmethodID setSizeID = env->GetMethodID(paperClass, SETSIZE_STR, SETSIZE_SIG); + CHECK_NULL(setSizeID); jmethodID setImageableID = env->GetMethodID(paperClass, SETIMAGEABLE_STR, SETIMAGEABLE_SIG); + CHECK_NULL(setImageableID); /* Set the physical size of the paper. */ @@ -3608,7 +3711,6 @@ static void setPaperValues(JNIEnv *env, jobject paper, const POINT *paperSize, jdouble width = convertToPoints(intWidth, units); jdouble height = convertToPoints(intHeight, units); env->CallVoidMethod(paper, setImageableID, x, y, width, height); - } /** @@ -3682,13 +3784,16 @@ static double convertToPoints(long value, int units) { */ void setCapabilities(JNIEnv *env, jobject self, HDC printDC) { + jboolean err; // width of page in pixels jint pageWid = GetDeviceCaps(printDC, PHYSICALWIDTH); - setIntField(env, self, PAGEW_STR, pageWid); + err = setIntField(env, self, PAGEW_STR, pageWid); + if (err) return; // height of page in pixels jint pageHgt = GetDeviceCaps(printDC, PHYSICALHEIGHT); - setIntField(env, self, PAGEH_STR, pageHgt); + err = setIntField(env, self, PAGEH_STR, pageHgt); + if (err) return; // x scaling factor of printer jint xsf = GetDeviceCaps(printDC, SCALINGFACTORX); @@ -3716,111 +3821,67 @@ void setCapabilities(JNIEnv *env, jobject self, HDC printDC) { // pixels per inch in x direction jint xRes = GetDeviceCaps(printDC, LOGPIXELSX); - setIntField(env, self, XRES_STR, xRes); + err = setIntField(env, self, XRES_STR, xRes); + if (err) return; // pixels per inch in y direction jint yRes = GetDeviceCaps(printDC, LOGPIXELSY); - setIntField(env, self, YRES_STR, yRes); + err = setIntField(env, self, YRES_STR, yRes); // x coord of printable area in pixels jint xOrg = GetDeviceCaps(printDC, PHYSICALOFFSETX); - setIntField(env, self, PHYSX_STR, xOrg); + err = setIntField(env, self, PHYSX_STR, xOrg); + if (err) return; // y coord of printable area in pixels jint yOrg = GetDeviceCaps(printDC, PHYSICALOFFSETY); - setIntField(env, self, PHYSY_STR, yOrg); + err = setIntField(env, self, PHYSY_STR, yOrg); + if (err) return; // width of printable area in pixels jint printWid = GetDeviceCaps(printDC, HORZRES); - setIntField(env, self, PHYSW_STR, printWid); + err = setIntField(env, self, PHYSW_STR, printWid); + if (err) return; // height of printable area in pixels jint printHgt = GetDeviceCaps(printDC, VERTRES); setIntField(env, self, PHYSH_STR, printHgt); - } - -static inline WORD getPrintPaperSize(JNIEnv *env, jobject self) { - return (WORD)getIntField(env, self, PRINTPAPERSIZE_STR); +static inline WORD getPrintPaperSize(JNIEnv *env, jboolean* err, jobject self) { + return (WORD)getIntField(env, err, self, PRINTPAPERSIZE_STR); } -static inline void setPrintPaperSize(JNIEnv *env, jobject self, WORD sz) { - setIntField(env, self, PRINTPAPERSIZE_STR, (jint)sz); +static inline jboolean setPrintPaperSize(JNIEnv *env, jobject self, WORD sz) { + return setIntField(env, self, PRINTPAPERSIZE_STR, (jint)sz); } /** * Return the java int value of the field 'fieldName' in the * java instance 'self'. */ -static jint getIntField(JNIEnv *env, jobject self, const char *fieldName) { - jfieldID fieldId = getIdOfIntField(env, self, fieldName); - return env->GetIntField(self, fieldId); -} - -/** - * Return the java long value of the field 'fieldName' in the - * java instance 'self'. - */ -static jlong getLongField(JNIEnv *env, jobject self, const char *fieldName) { - jfieldID fieldId = getIdOfLongField(env, self, fieldName); - return env->GetLongField(self, fieldId); +static jint getIntField(JNIEnv *env, jboolean* err, jobject self, const char *fieldName) { + return JNU_GetFieldByName(env, err, self, fieldName, "I").i; } /** * Set the int field named 'fieldName' of the java instance * 'self' to the value 'value'. */ -static void setIntField(JNIEnv *env, jobject self, const char *fieldName, - jint value) { - jfieldID fieldId = getIdOfIntField(env, self, fieldName); - env->SetIntField(self, fieldId, value); +static jboolean setIntField(JNIEnv *env, jobject self, const char *fieldName, jint value) { + jboolean err; + JNU_SetFieldByName(env, &err, self, fieldName, "I", value); + return err; } -/** - * Set the long field named 'fieldName' of the java instance - * 'self' to the value 'value'. - */ -static void setLongField(JNIEnv *env, jobject self, const char *fieldName, - jlong value) { - jfieldID fieldId = getIdOfLongField(env, self, fieldName); - env->SetLongField(self, fieldId, value); +static jboolean getBooleanField(JNIEnv *env, jboolean* err, jobject self, const char *fieldName) { + return JNU_GetFieldByName(env, err, self, fieldName, "Z").z; } -/** - * Return the field id of the java instance 'self' of the - * java int field named 'fieldName'. - */ -static jfieldID getIdOfIntField(JNIEnv *env, jobject self, - const char *fieldName) { - jclass myClass = env->GetObjectClass(self); - jfieldID fieldId = env->GetFieldID(myClass, fieldName, kJavaIntStr); - DASSERT(fieldId != 0); - - return fieldId; - -} - -/** - * Return the field id of the java instance 'self' of the - * java long field named 'fieldName'. - */ -static jfieldID getIdOfLongField(JNIEnv *env, jobject self, - const char *fieldName) { - jclass myClass = env->GetObjectClass(self); - jfieldID fieldId = env->GetFieldID(myClass, fieldName, kJavaLongStr); - DASSERT(fieldId != 0); - - return fieldId; - -} - -static void setBooleanField(JNIEnv *env, jobject self, const char *fieldName, - jboolean value) { - jclass myClass = env->GetObjectClass(self); - jfieldID fieldId = env->GetFieldID(myClass, fieldName, "Z"); - DASSERT(fieldId != 0); - env->SetBooleanField(self, fieldId, value); +static jboolean setBooleanField(JNIEnv *env, jobject self, const char *fieldName, jboolean value) { + jboolean err; + JNU_SetFieldByName(env, &err, self, fieldName, "Z", value); + return err; } /** @@ -3830,8 +3891,6 @@ static void setBooleanField(JNIEnv *env, jobject self, const char *fieldName, static void throwPrinterException(JNIEnv *env, DWORD err) { char errStr[256]; TCHAR t_errStr[256]; - jclass printerException = env->FindClass(PRINTEREXCEPTION_STR); - errStr[0] = '\0'; FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, @@ -3843,7 +3902,7 @@ static void throwPrinterException(JNIEnv *env, DWORD err) { WideCharToMultiByte(CP_UTF8, 0, t_errStr, -1, errStr, sizeof(errStr), NULL, NULL); - env->ThrowNew(printerException, errStr); + JNU_ThrowByName(env, PRINTEREXCEPTION_STR, errStr); } @@ -4176,8 +4235,9 @@ Java_sun_awt_windows_WPrinterJob_setNativePrintService(JNIEnv *env, jstring printer) { TRY; - LPTSTR printerName = (LPTSTR)JNU_GetStringPlatformChars(env, - printer, NULL); + LPTSTR printerName = (LPTSTR)JNU_GetStringPlatformChars(env, printer, NULL); + CHECK_NULL(printerName); + HDC hDC = AwtPrintControl::getPrintDC(env, name); if (hDC != NULL) { DeletePrintDC(hDC); @@ -4188,8 +4248,7 @@ Java_sun_awt_windows_WPrinterJob_setNativePrintService(JNIEnv *env, hDC = ::CreateDC(TEXT("WINSPOOL"), printerName, NULL, NULL); RESTORE_CONTROLWORD if (hDC == NULL) { - jclass printerException = env->FindClass(PRINTEREXCEPTION_STR); - env->ThrowNew(printerException, "Invalid name of PrintService."); + JNU_ThrowByName(env, PRINTEREXCEPTION_STR, "Invalid name of PrintService."); JNU_ReleaseStringPlatformChars(env, printer, printerName); return; } @@ -4223,11 +4282,19 @@ Java_sun_awt_windows_WPrinterJob_setNativePrintService(JNIEnv *env, if (devmode != NULL) { if (devmode->dmFields & DM_COPIES) { - setBooleanField(env, name, DRIVER_COPIES_STR, JNI_TRUE); + jboolean err = setBooleanField(env, name, DRIVER_COPIES_STR, JNI_TRUE); + if (err) { + JNU_ReleaseStringPlatformChars(env, printer, printerName); + return; + } } if (devmode->dmFields & DM_COLLATE) { - setBooleanField(env, name, DRIVER_COLLATE_STR, JNI_TRUE); + jboolean err = setBooleanField(env, name, DRIVER_COLLATE_STR, JNI_TRUE); + if (err) { + JNU_ReleaseStringPlatformChars(env, printer, printerName); + return; + } } ::GlobalUnlock(hDevMode); @@ -4237,7 +4304,6 @@ Java_sun_awt_windows_WPrinterJob_setNativePrintService(JNIEnv *env, JNU_ReleaseStringPlatformChars(env, printer, printerName); CATCH_BAD_ALLOC; - } @@ -4299,14 +4365,15 @@ Java_sun_awt_windows_WPrinterJob_initIDs(JNIEnv *env, jclass cls) { TRY; - AwtPrintDialog::controlID = - env->GetFieldID(cls, "pjob", "Ljava/awt/print/PrinterJob;"); - jclass printDialogPeerClass = env->FindClass("sun/awt/windows/WPrintDialogPeer"); - AwtPrintDialog::setHWndMID = - env->GetMethodID(printDialogPeerClass, "setHWnd", "(J)V"); - + AwtPrintDialog::controlID = env->GetFieldID(cls, "pjob", "Ljava/awt/print/PrinterJob;"); DASSERT(AwtPrintDialog::controlID != NULL); + CHECK_NULL(AwtPrintDialog::controlID); + + jclass printDialogPeerClass = env->FindClass("sun/awt/windows/WPrintDialogPeer"); + CHECK_NULL(printDialogPeerClass); + AwtPrintDialog::setHWndMID = env->GetMethodID(printDialogPeerClass, "setHWnd", "(J)V"); DASSERT(AwtPrintDialog::setHWndMID != NULL); + CHECK_NULL(AwtPrintDialog::setHWndMID); AwtPrintControl::initIDs(env, cls); CATCH_BAD_ALLOC; diff --git a/jdk/src/windows/native/sun/windows/awt_Robot.cpp b/jdk/src/windows/native/sun/windows/awt_Robot.cpp index b44996f95d3..7739af44b7a 100644 --- a/jdk/src/windows/native/sun/windows/awt_Robot.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Robot.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ AwtRobot::AwtRobot( jobject peer ) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); m_peerObject = env->NewWeakGlobalRef(peer); + JNU_CHECK_EXCEPTION(env); JNI_SET_PDATA(peer, this); } diff --git a/jdk/src/windows/native/sun/windows/awt_ScrollPane.cpp b/jdk/src/windows/native/sun/windows/awt_ScrollPane.cpp index bc3eb3ed1ec..04f463e642c 100644 --- a/jdk/src/windows/native/sun/windows/awt_ScrollPane.cpp +++ b/jdk/src/windows/native/sun/windows/awt_ScrollPane.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -600,12 +600,16 @@ Java_java_awt_ScrollPane_initIDs(JNIEnv *env, jclass cls) AwtScrollPane::scrollbarDisplayPolicyID = env->GetFieldID(cls, "scrollbarDisplayPolicy", "I"); + DASSERT(AwtScrollPane::scrollbarDisplayPolicyID != NULL); + CHECK_NULL(AwtScrollPane::scrollbarDisplayPolicyID); + AwtScrollPane::hAdjustableID = env->GetFieldID(cls, "hAdjustable", "Ljava/awt/ScrollPaneAdjustable;"); + DASSERT(AwtScrollPane::hAdjustableID != NULL); + CHECK_NULL(AwtScrollPane::hAdjustableID); + AwtScrollPane::vAdjustableID = env->GetFieldID(cls, "vAdjustable", "Ljava/awt/ScrollPaneAdjustable;"); - DASSERT(AwtScrollPane::scrollbarDisplayPolicyID != NULL); - DASSERT(AwtScrollPane::hAdjustableID != NULL); DASSERT(AwtScrollPane::vAdjustableID != NULL); CATCH_BAD_ALLOC; @@ -631,10 +635,11 @@ Java_java_awt_ScrollPaneAdjustable_initIDs(JNIEnv *env, jclass cls) TRY; AwtScrollPane::unitIncrementID = env->GetFieldID(cls,"unitIncrement", "I"); + DASSERT(AwtScrollPane::unitIncrementID != NULL); + CHECK_NULL(AwtScrollPane::unitIncrementID); + AwtScrollPane::blockIncrementID = env->GetFieldID(cls,"blockIncrement", "I"); - - DASSERT(AwtScrollPane::unitIncrementID != NULL); DASSERT(AwtScrollPane::blockIncrementID != NULL); CATCH_BAD_ALLOC; diff --git a/jdk/src/windows/native/sun/windows/awt_Scrollbar.cpp b/jdk/src/windows/native/sun/windows/awt_Scrollbar.cpp index 23b1e93c411..1e58f2ceb8d 100644 --- a/jdk/src/windows/native/sun/windows/awt_Scrollbar.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Scrollbar.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -488,11 +488,14 @@ Java_java_awt_Scrollbar_initIDs(JNIEnv *env, jclass cls) TRY; AwtScrollbar::lineIncrementID = env->GetFieldID(cls, "lineIncrement", "I"); - AwtScrollbar::pageIncrementID = env->GetFieldID(cls, "pageIncrement", "I"); - AwtScrollbar::orientationID = env->GetFieldID(cls, "orientation", "I"); - DASSERT(AwtScrollbar::lineIncrementID != NULL); + CHECK_NULL(AwtScrollbar::lineIncrementID); + + AwtScrollbar::pageIncrementID = env->GetFieldID(cls, "pageIncrement", "I"); DASSERT(AwtScrollbar::pageIncrementID != NULL); + CHECK_NULL(AwtScrollbar::pageIncrementID); + + AwtScrollbar::orientationID = env->GetFieldID(cls, "orientation", "I"); DASSERT(AwtScrollbar::orientationID != NULL); CATCH_BAD_ALLOC; diff --git a/jdk/src/windows/native/sun/windows/awt_TextComponent.cpp b/jdk/src/windows/native/sun/windows/awt_TextComponent.cpp index c5750fa3c69..d96a194f01e 100644 --- a/jdk/src/windows/native/sun/windows/awt_TextComponent.cpp +++ b/jdk/src/windows/native/sun/windows/awt_TextComponent.cpp @@ -852,9 +852,10 @@ Java_sun_awt_windows_WTextComponentPeer_initIDs(JNIEnv *env, jclass cls) TRY; jclass textComponentClassID = env->FindClass("java/awt/TextComponent"); + CHECK_NULL(textComponentClassID); + AwtTextComponent::canAccessClipboardMID = - env->GetMethodID(textComponentClassID, - "canAccessClipboard", "()Z"); + env->GetMethodID(textComponentClassID, "canAccessClipboard", "()Z"); env->DeleteLocalRef(textComponentClassID); DASSERT(AwtTextComponent::canAccessClipboardMID != NULL); diff --git a/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp b/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp index ba8d6de2673..2ef0f0c7981 100644 --- a/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -172,35 +172,22 @@ void AwtToolkit::SetBusy(BOOL busy) { if (awtAutoShutdownClass == NULL) { jclass awtAutoShutdownClassLocal = env->FindClass("sun/awt/AWTAutoShutdown"); - if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) { - env->ExceptionDescribe(); - env->ExceptionClear(); - } DASSERT(awtAutoShutdownClassLocal != NULL); - if (awtAutoShutdownClassLocal == NULL) { - return; - } + if (!awtAutoShutdownClassLocal) throw std::bad_alloc(); awtAutoShutdownClass = (jclass)env->NewGlobalRef(awtAutoShutdownClassLocal); env->DeleteLocalRef(awtAutoShutdownClassLocal); + if (!awtAutoShutdownClass) throw std::bad_alloc(); notifyBusyMethodID = env->GetStaticMethodID(awtAutoShutdownClass, "notifyToolkitThreadBusy", "()V"); - if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) { - env->ExceptionDescribe(); - env->ExceptionClear(); - } + DASSERT(notifyBusyMethodID != NULL); + if (!notifyBusyMethodID) throw std::bad_alloc(); + notifyFreeMethodID = env->GetStaticMethodID(awtAutoShutdownClass, "notifyToolkitThreadFree", "()V"); - if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) { - env->ExceptionDescribe(); - env->ExceptionClear(); - } - DASSERT(notifyBusyMethodID != NULL); DASSERT(notifyFreeMethodID != NULL); - if (notifyBusyMethodID == NULL || notifyFreeMethodID == NULL) { - return; - } + if (!notifyFreeMethodID) throw std::bad_alloc(); } /* awtAutoShutdownClass == NULL*/ if (busy) { @@ -776,9 +763,11 @@ LRESULT CALLBACK AwtToolkit::WndProc(HWND hWnd, UINT message, jclass systemColorClass = env->FindClass("java/awt/SystemColor"); DASSERT(systemColorClass); + if (!systemColorClass) throw std::bad_alloc(); jmethodID mid = env->GetStaticMethodID(systemColorClass, "updateSystemColors", "()V"); DASSERT(mid); + if (!mid) throw std::bad_alloc(); env->CallStaticVoidMethod(systemColorClass, mid); @@ -1038,6 +1027,8 @@ LRESULT CALLBACK AwtToolkit::WndProc(HWND hWnd, UINT message, // Notify Java side - call WToolkit.displayChanged() jclass clazz = env->FindClass("sun/awt/windows/WToolkit"); + DASSERT(clazz != NULL); + if (!clazz) throw std::bad_alloc(); env->CallStaticVoidMethod(clazz, AwtToolkit::displayChangeMID); GetInstance().m_displayChanged = TRUE; @@ -2050,15 +2041,20 @@ Java_java_awt_Toolkit_initIDs(JNIEnv *env, jclass cls) { AwtToolkit::getDefaultToolkitMID = env->GetStaticMethodID(cls,"getDefaultToolkit","()Ljava/awt/Toolkit;"); - AwtToolkit::getFontMetricsMID = - env->GetMethodID(cls, "getFontMetrics", - "(Ljava/awt/Font;)Ljava/awt/FontMetrics;"); - AwtToolkit::insetsMID = - env->GetMethodID(env->FindClass("java/awt/Insets"), "<init>", "(IIII)V"); - DASSERT(AwtToolkit::getDefaultToolkitMID != NULL); + CHECK_NULL(AwtToolkit::getDefaultToolkitMID); + + AwtToolkit::getFontMetricsMID = + env->GetMethodID(cls, "getFontMetrics", "(Ljava/awt/Font;)Ljava/awt/FontMetrics;"); DASSERT(AwtToolkit::getFontMetricsMID != NULL); - DASSERT(AwtToolkit::insetsMID != NULL); + CHECK_NULL(AwtToolkit::getFontMetricsMID); + + jclass insetsClass = env->FindClass("java/awt/Insets"); + DASSERT(insetsClass != NULL); + CHECK_NULL(insetsClass); + AwtToolkit::insetsMID = env->GetMethodID(insetsClass, "<init>", "(IIII)V"); + DASSERT(AwtToolkit::insetsMID != NULL); + CHECK_NULL(AwtToolkit::insetsMID); CATCH_BAD_ALLOC; } @@ -2085,10 +2081,12 @@ Java_sun_awt_windows_WToolkit_initIDs(JNIEnv *env, jclass cls) AwtToolkit::windowsSettingChangeMID = env->GetMethodID(cls, "windowsSettingChange", "()V"); DASSERT(AwtToolkit::windowsSettingChangeMID != 0); + CHECK_NULL(AwtToolkit::windowsSettingChangeMID); AwtToolkit::displayChangeMID = env->GetStaticMethodID(cls, "displayChanged", "()V"); DASSERT(AwtToolkit::displayChangeMID != 0); + CHECK_NULL(AwtToolkit::displayChangeMID); // Set various global IDs needed by JAWT code. Note: these // variables cannot be set by JAWT code directly due to @@ -2099,24 +2097,37 @@ Java_sun_awt_windows_WToolkit_initIDs(JNIEnv *env, jclass cls) // negligible penalty. jclass sDataClassLocal = env->FindClass("sun/java2d/SurfaceData"); DASSERT(sDataClassLocal != 0); + CHECK_NULL(sDataClassLocal); + jclass vImgClassLocal = env->FindClass("sun/awt/image/SunVolatileImage"); DASSERT(vImgClassLocal != 0); + CHECK_NULL(vImgClassLocal); + jclass vSMgrClassLocal = env->FindClass("sun/awt/image/VolatileSurfaceManager"); DASSERT(vSMgrClassLocal != 0); + CHECK_NULL(vSMgrClassLocal); + jclass componentClassLocal = env->FindClass("java/awt/Component"); DASSERT(componentClassLocal != 0); + CHECK_NULL(componentClassLocal); + jawtSMgrID = env->GetFieldID(vImgClassLocal, "volSurfaceManager", "Lsun/awt/image/VolatileSurfaceManager;"); DASSERT(jawtSMgrID != 0); + CHECK_NULL(jawtSMgrID); + jawtSDataID = env->GetFieldID(vSMgrClassLocal, "sdCurrent", "Lsun/java2d/SurfaceData;"); DASSERT(jawtSDataID != 0); + CHECK_NULL(jawtSDataID); + jawtPDataID = env->GetFieldID(sDataClassLocal, "pData", "J"); DASSERT(jawtPDataID != 0); - + CHECK_NULL(jawtPDataID); // Save these classes in global references for later use jawtVImgClass = (jclass)env->NewGlobalRef(vImgClassLocal); + CHECK_NULL(jawtVImgClass); jawtComponentClass = (jclass)env->NewGlobalRef(componentClassLocal); CATCH_BAD_ALLOC; @@ -2377,7 +2388,11 @@ Java_sun_awt_windows_WToolkit_getScreenInsets(JNIEnv *env, TRY; if (AwtToolkit::GetScreenInsets(screen, &rect)) { - insets = env->NewObject(env->FindClass("java/awt/Insets"), + jclass insetsClass = env->FindClass("java/awt/Insets"); + DASSERT(insetsClass != NULL); + CHECK_NULL_RETURN(insetsClass, NULL); + + insets = env->NewObject(insetsClass, AwtToolkit::insetsMID, rect.top, rect.left, diff --git a/jdk/src/windows/native/sun/windows/awt_Toolkit.h b/jdk/src/windows/native/sun/windows/awt_Toolkit.h index 5ee5e4965bc..3782aac8cf7 100644 --- a/jdk/src/windows/native/sun/windows/awt_Toolkit.h +++ b/jdk/src/windows/native/sun/windows/awt_Toolkit.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -80,7 +80,7 @@ class JNILocalFrame { int result = m_env->PushLocalFrame(size); if (result < 0) { DASSERT(FALSE); - JNU_ThrowOutOfMemoryError(m_env, "Can't allocate localRefs"); + throw std::bad_alloc(); } } INLINE ~JNILocalFrame() { m_env->PopLocalFrame(NULL); } diff --git a/jdk/src/windows/native/sun/windows/awt_Win32GraphicsConfig.cpp b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsConfig.cpp index 3d678b52342..918ed08b626 100644 --- a/jdk/src/windows/native/sun/windows/awt_Win32GraphicsConfig.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsConfig.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -91,6 +91,7 @@ JNIEXPORT jobject JNICALL jobject bounds = NULL; clazz = env->FindClass("java/awt/Rectangle"); + CHECK_NULL_RETURN(clazz, NULL); mid = env->GetMethodID(clazz, "<init>", "(IIII)V"); if (mid != 0) { RECT rRW = {0, 0, 0, 0}; diff --git a/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp index bdcf947e03b..9b10c7d275e 100644 --- a/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp @@ -328,16 +328,13 @@ jobject AwtWin32GraphicsDevice::GetColorModel(JNIEnv *env, jboolean dynamic) jintArray bitsArray; clazz1 = env->FindClass("java/awt/color/ColorSpace"); + CHECK_NULL_RETURN(clazz1, NULL); mid = env->GetStaticMethodID(clazz1, "getInstance", "(I)Ljava/awt/color/ColorSpace;"); - if (mid == 0) { - return NULL; - } + CHECK_NULL_RETURN(mid, NULL); cspace = env->CallStaticObjectMethod(clazz1, mid, java_awt_color_ColorSpace_CS_GRAY); - if (cspace == 0) { - return NULL; - } + CHECK_NULL_RETURN(cspace, NULL); bits[0] = 8; bitsArray = env->NewIntArray(1); @@ -348,13 +345,10 @@ jobject AwtWin32GraphicsDevice::GetColorModel(JNIEnv *env, jboolean dynamic) } clazz = env->FindClass("java/awt/image/ComponentColorModel"); - + CHECK_NULL_RETURN(clazz, NULL); mid = env->GetMethodID(clazz,"<init>", "(Ljava/awt/color/ColorSpace;[IZZII)V"); - - if (mid == 0) { - return NULL; - } + CHECK_NULL_RETURN(mid, NULL); awt_colormodel = env->NewObject(clazz, mid, cspace, @@ -370,12 +364,11 @@ jobject AwtWin32GraphicsDevice::GetColorModel(JNIEnv *env, jboolean dynamic) jbyte vbits[256/8]; jobject validBits = NULL; + CHECK_NULL_RETURN(hRGB, NULL); /* Create the LUT from the color map */ try { rgb = (unsigned int *) env->GetPrimitiveArrayCritical(hRGB, 0); - if (rgb == NULL) { - return NULL; - } + CHECK_NULL_RETURN(rgb, NULL); rgbP = rgb; if (!palette) { palette = new AwtPalette(this); @@ -439,10 +432,12 @@ jobject AwtWin32GraphicsDevice::GetColorModel(JNIEnv *env, jboolean dynamic) // Construct a new color model if (!allvalid) { jbyteArray bArray = env->NewByteArray(sizeof(vbits)); + CHECK_NULL_RETURN(bArray, NULL); env->SetByteArrayRegion(bArray, 0, sizeof(vbits), vbits); validBits = JNU_NewObjectByName(env, "java/math/BigInteger", "([B)V", bArray); + JNU_CHECK_EXCEPTION_RETURN(env, NULL); } awt_colormodel = JNU_NewObjectByName(env, @@ -500,19 +495,22 @@ void AwtWin32GraphicsDevice::UpdateDynamicColorModel() jintArray cacheArray = (jintArray)env->GetObjectField(colorModel, AwtWin32GraphicsDevice::indexCMcacheID); if (!rgbArray || !cacheArray) { - JNU_ThrowInternalError(env, - "rgb or lookupcache array of IndexColorModel null"); + JNU_ThrowInternalError(env, "rgb or lookupcache array of IndexColorModel null"); return; } int rgbLength = env->GetArrayLength(rgbArray); int cacheLength = env->GetArrayLength(cacheArray); - jint *cmEntries = (jint *)env->GetPrimitiveArrayCritical(rgbArray, - &isCopy); - jint *cache = (jint *)env->GetPrimitiveArrayCritical(cacheArray, - &isCopy); - if (!cmEntries || !cache) { - JNU_ThrowInternalError(env, - "Problem retrieving rgb or cache critical array"); + jint *cmEntries = (jint *)env->GetPrimitiveArrayCritical(rgbArray, &isCopy); + if (!cmEntries) { + env->ExceptionClear(); + JNU_ThrowInternalError(env, "Problem retrieving rgb critical array"); + return; + } + jint *cache = (jint *)env->GetPrimitiveArrayCritical(cacheArray, &isCopy); + if (!cache) { + env->ExceptionClear(); + env->ReleasePrimitiveArrayCritical(rgbArray, cmEntries, JNI_ABORT); + JNU_ThrowInternalError(env, "Problem retrieving cache critical array"); return; } // Set the new rgb values @@ -839,31 +837,36 @@ Java_sun_awt_Win32GraphicsDevice_initIDs(JNIEnv *env, jclass cls) /* class ids */ AwtWin32GraphicsDevice::indexCMClass = (jclass)env->NewGlobalRef(env->FindClass("java/awt/image/IndexColorModel")); + DASSERT(AwtWin32GraphicsDevice::indexCMClass); + CHECK_NULL(AwtWin32GraphicsDevice::indexCMClass); + AwtWin32GraphicsDevice::wToolkitClass = (jclass)env->NewGlobalRef(env->FindClass("sun/awt/windows/WToolkit")); - - DASSERT(AwtWin32GraphicsDevice::indexCMClass); DASSERT(AwtWin32GraphicsDevice::wToolkitClass); + CHECK_NULL(AwtWin32GraphicsDevice::wToolkitClass); /* field ids */ AwtWin32GraphicsDevice::dynamicColorModelID = env->GetFieldID(cls, "dynamicColorModel", "Ljava/awt/image/ColorModel;"); + DASSERT(AwtWin32GraphicsDevice::dynamicColorModelID); + CHECK_NULL(AwtWin32GraphicsDevice::dynamicColorModelID); + AwtWin32GraphicsDevice::indexCMrgbID = env->GetFieldID(AwtWin32GraphicsDevice::indexCMClass, "rgb", "[I"); + DASSERT(AwtWin32GraphicsDevice::indexCMrgbID); + CHECK_NULL(AwtWin32GraphicsDevice::indexCMrgbID); + AwtWin32GraphicsDevice::indexCMcacheID = env->GetFieldID(AwtWin32GraphicsDevice::indexCMClass, "lookupcache", "[I"); + DASSERT(AwtWin32GraphicsDevice::indexCMcacheID); + CHECK_NULL(AwtWin32GraphicsDevice::indexCMcacheID); /* method ids */ AwtWin32GraphicsDevice::paletteChangedMID = env->GetStaticMethodID( AwtWin32GraphicsDevice::wToolkitClass, "paletteChanged", "()V"); - - - DASSERT(AwtWin32GraphicsDevice::dynamicColorModelID); - DASSERT(AwtWin32GraphicsDevice::indexCMrgbID); - DASSERT(AwtWin32GraphicsDevice::indexCMcacheID); - DASSERT(AwtWin32GraphicsDevice::paletteChangedMID); + CHECK_NULL(AwtWin32GraphicsDevice::paletteChangedMID); // Only want to call this once per session make_uns_ordered_dither_array(img_oda_alpha, 256); @@ -1069,16 +1072,15 @@ jobject CreateDisplayMode(JNIEnv* env, jint width, jint height, jclass displayModeClass = env->FindClass("java/awt/DisplayMode"); if (JNU_IsNull(env, displayModeClass)) { - JNU_ThrowInternalError(env, - "Could not get display mode class"); + env->ExceptionClear(); + JNU_ThrowInternalError(env, "Could not get display mode class"); return NULL; } - jmethodID cid = env->GetMethodID(displayModeClass, "<init>", - "(IIII)V"); + jmethodID cid = env->GetMethodID(displayModeClass, "<init>", "(IIII)V"); if (cid == NULL) { - JNU_ThrowInternalError(env, - "Could not get display mode constructor"); + env->ExceptionClear(); + JNU_ThrowInternalError(env, "Could not get display mode constructor"); return NULL; } @@ -1224,6 +1226,7 @@ void addDisplayMode(JNIEnv* env, jobject arrayList, jint width, jmethodID mid = env->GetMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z"); if (mid == NULL) { + env->ExceptionClear(); JNU_ThrowInternalError(env, "Could not get method java.util.ArrayList.add()"); return; @@ -1264,6 +1267,7 @@ JNIEXPORT void JNICALL Java_sun_awt_Win32GraphicsDevice_enumDisplayModes if (dm.dmBitsPerPel >= 8) { addDisplayMode(env, arrayList, dm.dmPelsWidth, dm.dmPelsHeight, dm.dmBitsPerPel, dm.dmDisplayFrequency); + JNU_CHECK_EXCEPTION(env); } } diff --git a/jdk/src/windows/native/sun/windows/awt_Window.cpp b/jdk/src/windows/native/sun/windows/awt_Window.cpp index e3a7289fdb7..1242bba63c8 100644 --- a/jdk/src/windows/native/sun/windows/awt_Window.cpp +++ b/jdk/src/windows/native/sun/windows/awt_Window.cpp @@ -483,6 +483,8 @@ void AwtWindow::CreateHWnd(JNIEnv *env, LPCWSTR title, env->DeleteLocalRef(target); InitType(env, peer); + JNU_CHECK_EXCEPTION(env); + TweakStyle(windowStyle, windowExStyle); AwtCanvas::CreateHWnd(env, title, @@ -684,15 +686,27 @@ void AwtWindow::CalculateWarningWindowBounds(JNIEnv *env, LPRECT rect) if (point2DClassID == NULL) { jclass point2DClassIDLocal = env->FindClass("java/awt/geom/Point2D"); + if (point2DClassIDLocal == NULL) { + env->DeleteLocalRef(point2D); + return; + } point2DClassID = (jclass)env->NewGlobalRef(point2DClassIDLocal); env->DeleteLocalRef(point2DClassIDLocal); } if (point2DGetXMID == NULL) { point2DGetXMID = env->GetMethodID(point2DClassID, "getX", "()D"); + if (point2DGetXMID == NULL) { + env->DeleteLocalRef(point2D); + return; + } } if (point2DGetYMID == NULL) { point2DGetYMID = env->GetMethodID(point2DClassID, "getY", "()D"); + if (point2DGetYMID == NULL) { + env->DeleteLocalRef(point2D); + return; + } } @@ -1071,6 +1085,7 @@ AwtWindow* AwtWindow::Create(jobject self, jobject parent) if (JNU_IsInstanceOfByName(env, target, "javax/swing/Popup$HeavyWeightWindow") > 0) { window->m_isRetainingHierarchyZOrder = TRUE; } + if (env->ExceptionCheck()) goto done; DWORD style = WS_CLIPCHILDREN | WS_POPUP; DWORD exStyle = WS_EX_NOACTIVATE; if (GetRTL()) { @@ -1378,6 +1393,10 @@ BOOL AwtWindow::UpdateInsets(jobject insets) ((AwtFrame*)this)->GetMenuBar()) { m_insets.top += ::GetSystemMetrics(SM_CYMENU); } + if (env->ExceptionCheck()) { + env->DeleteLocalRef(target); + return FALSE; + } m_insets.bottom += extraBottomInsets; env->DeleteLocalRef(target); } @@ -1445,14 +1464,13 @@ void AwtWindow::SendComponentEvent(jint eventId) classEvent = (jclass)env->NewGlobalRef(classEvent); } env->PopLocalFrame(0); + CHECK_NULL(classEvent); } static jmethodID eventInitMID = NULL; if (eventInitMID == NULL) { eventInitMID = env->GetMethodID(classEvent, "<init>", "(Ljava/awt/Component;I)V"); - if (eventInitMID == NULL) { - return; - } + CHECK_NULL(eventInitMID); } if (env->EnsureLocalCapacity(2) < 0) { return; @@ -1462,6 +1480,10 @@ void AwtWindow::SendComponentEvent(jint eventId) target, eventId); DASSERT(!safe_ExceptionOccurred(env)); DASSERT(event != NULL); + if (event == NULL) { + env->DeleteLocalRef(target); + return; + } SendEvent(event); env->DeleteLocalRef(target); @@ -1503,10 +1525,7 @@ void AwtWindow::SendWindowEvent(jint id, HWND opposite, jclass sequencedEventClsLocal = env->FindClass("java/awt/SequencedEvent"); DASSERT(sequencedEventClsLocal); - if (sequencedEventClsLocal == NULL) { - /* exception already thrown */ - return; - } + CHECK_NULL(sequencedEventClsLocal); sequencedEventCls = (jclass)env->NewGlobalRef(sequencedEventClsLocal); env->DeleteLocalRef(sequencedEventClsLocal); @@ -1517,6 +1536,7 @@ void AwtWindow::SendWindowEvent(jint id, HWND opposite, sequencedEventConst = env->GetMethodID(sequencedEventCls, "<init>", "(Ljava/awt/AWTEvent;)V"); + CHECK_NULL(sequencedEventConst); } if (env->EnsureLocalCapacity(3) < 0) { @@ -1539,6 +1559,7 @@ void AwtWindow::SendWindowEvent(jint id, HWND opposite, env->DeleteLocalRef(jOpposite); jOpposite = NULL; } env->DeleteLocalRef(target); target = NULL; + CHECK_NULL(event); if (id == java_awt_event_WindowEvent_WINDOW_GAINED_FOCUS || id == java_awt_event_WindowEvent_WINDOW_LOST_FOCUS) @@ -2024,10 +2045,15 @@ void AwtWindow::CheckIfOnNewScreen() { jclass peerCls = env->GetObjectClass(m_peerObject); DASSERT(peerCls); + CHECK_NULL(peerCls); jmethodID draggedID = env->GetMethodID(peerCls, "draggedToNewScreen", "()V"); DASSERT(draggedID); + if (draggedID == NULL) { + env->DeleteLocalRef(peerCls); + return; + } env->CallVoidMethod(m_peerObject, draggedID); m_screenNum = curScrn; @@ -2505,6 +2531,7 @@ void AwtWindow::SetIconData(JNIEnv* env, jintArray iconRaster, jint w, jint h, } m_hIconSm = NULL; m_hIcon = CreateIconFromRaster(env, iconRaster, w, h); + JNU_CHECK_EXCEPTION(env); m_hIconSm = CreateIconFromRaster(env, smallIconRaster, smw, smh); m_iconInherited = (m_hIcon == NULL); @@ -3057,22 +3084,23 @@ Java_java_awt_Window_initIDs(JNIEnv *env, jclass cls) { TRY; - AwtWindow::warningStringID = - env->GetFieldID(cls, "warningString", "Ljava/lang/String;"); - AwtWindow::locationByPlatformID = - env->GetFieldID(cls, "locationByPlatform", "Z"); - AwtWindow::securityWarningWidthID = - env->GetFieldID(cls, "securityWarningWidth", "I"); - AwtWindow::securityWarningHeightID = - env->GetFieldID(cls, "securityWarningHeight", "I"); - AwtWindow::getWarningStringMID = - env->GetMethodID(cls, "getWarningString", "()Ljava/lang/String;"); - AwtWindow::autoRequestFocusID = - env->GetFieldID(cls, "autoRequestFocus", "Z"); - AwtWindow::calculateSecurityWarningPositionMID = - env->GetMethodID(cls, "calculateSecurityWarningPosition", "(DDDD)Ljava/awt/geom/Point2D;"); + CHECK_NULL(AwtWindow::warningStringID = + env->GetFieldID(cls, "warningString", "Ljava/lang/String;")); + CHECK_NULL(AwtWindow::locationByPlatformID = + env->GetFieldID(cls, "locationByPlatform", "Z")); + CHECK_NULL(AwtWindow::securityWarningWidthID = + env->GetFieldID(cls, "securityWarningWidth", "I")); + CHECK_NULL(AwtWindow::securityWarningHeightID = + env->GetFieldID(cls, "securityWarningHeight", "I")); + CHECK_NULL(AwtWindow::getWarningStringMID = + env->GetMethodID(cls, "getWarningString", "()Ljava/lang/String;")); + CHECK_NULL(AwtWindow::autoRequestFocusID = + env->GetFieldID(cls, "autoRequestFocus", "Z")); + CHECK_NULL(AwtWindow::calculateSecurityWarningPositionMID = + env->GetMethodID(cls, "calculateSecurityWarningPosition", "(DDDD)Ljava/awt/geom/Point2D;")); jclass windowTypeClass = env->FindClass("java/awt/Window$Type"); + CHECK_NULL(windowTypeClass); AwtWindow::windowTypeNameMID = env->GetMethodID(windowTypeClass, "name", "()Ljava/lang/String;"); env->DeleteLocalRef(windowTypeClass); @@ -3099,10 +3127,10 @@ Java_sun_awt_windows_WWindowPeer_initIDs(JNIEnv *env, jclass cls) { TRY; - AwtWindow::sysXID = env->GetFieldID(cls, "sysX", "I"); - AwtWindow::sysYID = env->GetFieldID(cls, "sysY", "I"); - AwtWindow::sysWID = env->GetFieldID(cls, "sysW", "I"); - AwtWindow::sysHID = env->GetFieldID(cls, "sysH", "I"); + CHECK_NULL(AwtWindow::sysXID = env->GetFieldID(cls, "sysX", "I")); + CHECK_NULL(AwtWindow::sysYID = env->GetFieldID(cls, "sysY", "I")); + CHECK_NULL(AwtWindow::sysWID = env->GetFieldID(cls, "sysW", "I")); + CHECK_NULL(AwtWindow::sysHID = env->GetFieldID(cls, "sysH", "I")); AwtWindow::windowTypeID = env->GetFieldID(cls, "windowType", "Ljava/awt/Window$Type;"); diff --git a/jdk/src/windows/native/sun/windows/awt_new.cpp b/jdk/src/windows/native/sun/windows/awt_new.cpp index e22aa3b6458..306f08d5963 100644 --- a/jdk/src/windows/native/sun/windows/awt_new.cpp +++ b/jdk/src/windows/native/sun/windows/awt_new.cpp @@ -163,18 +163,13 @@ jthrowable safe_ExceptionOccurred(JNIEnv *env) throw (std::bad_alloc) { jthrowable xcp = env->ExceptionOccurred(); if (xcp != NULL) { - env->ExceptionClear(); // if we don't do this, FindClass will fail - - jclass outofmem = env->FindClass("java/lang/OutOfMemoryError"); - DASSERT(outofmem != NULL); - jboolean isOutofmem = env->IsInstanceOf(xcp, outofmem); - - env->DeleteLocalRef(outofmem); - - if (isOutofmem) { + env->ExceptionClear(); // if we don't do this, isInstanceOf will fail + jint isOutofmem = JNU_IsInstanceOfByName(env, xcp, "java/lang/OutOfMemoryError"); + if (isOutofmem > 0) { env->DeleteLocalRef(xcp); throw std::bad_alloc(); } else { + env->ExceptionClear(); // rethrow exception env->Throw(xcp); return xcp; diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt index 0b55de3eaa0..729a0d852dd 100644 --- a/jdk/test/ProblemList.txt +++ b/jdk/test/ProblemList.txt @@ -261,6 +261,13 @@ tools/launcher/FXLauncherTest.java linux-all ############################################################################ +# jdk_instrument + +# 8037082 +java/lang/instrument/NativeMethodPrefixAgent.java generic-all + +############################################################################ + # svc_tools # 8031482 diff --git a/jdk/test/com/sun/corba/cachedSocket/7056731.sh b/jdk/test/com/sun/corba/cachedSocket/7056731.sh index 3b58ad6e632..3db0f73660f 100644 --- a/jdk/test/com/sun/corba/cachedSocket/7056731.sh +++ b/jdk/test/com/sun/corba/cachedSocket/7056731.sh @@ -102,7 +102,7 @@ echo "resume 1"; sleep 5 # give time for Client to throw exception # JVM_PROC should have exited but just in case, include it. -kill -9 $ORB_PROC $JVM_PROC +kill -9 $ORB_PROC $JVM_PROC $SERVER_PROC grep "ORBUtilSystemException.writeErrorSend" client.$$ result=$? diff --git a/jdk/test/com/sun/jdi/ShellScaffold.sh b/jdk/test/com/sun/jdi/ShellScaffold.sh index eb3b65bf30b..16c41eae056 100644 --- a/jdk/test/com/sun/jdi/ShellScaffold.sh +++ b/jdk/test/com/sun/jdi/ShellScaffold.sh @@ -908,7 +908,7 @@ startDebuggee() debuggeepid= waitForJdbMsg Listening 4 - beOption="-agentlib:jdwp=transport=$transport,address=$address,server=n,suspend=y" + beOption="-agentlib:jdwp=transport=$transport,address=$address,server=n,suspend=y" # beOption="-Xdebug -Xrunjdwp:transport=$transport,address=$address,server=n,suspend=y" thecmd="$jdk/bin/$java $mode -classpath $tmpFileDir $baseArgs $args \ @@ -976,14 +976,20 @@ waitForFinish() if [ $? != 0 ] ; then break fi + if [ ! -z "$isWin98" ] ; then $psCmd | $grep -i 'JDB\.EXE' >$devnull 2>&1 if [ $? != 0 ] ; then break fi fi - # Something went wrong - jdbFailIfPresent "Input stream closed" + + # (Don't use jdbFailIfPresent here since it is not safe + # to call from different processes) + $grep -s 'Input stream closed' $jdbOutFile > $devnull 2>&1 + if [ $? = 0 ] ; then + dofail "jdb input stream closed prematurely" + fi # If a failure has occured, quit if [ -r "$failFile" ] ; then @@ -994,7 +1000,12 @@ waitForFinish() done # jdb exited because its input stream closed prematurely - jdbFailIfPresent "Input stream closed" + # (Don't use jdbFailIfPresent here since it is not safe + # to call from different processes) + $grep -s 'Input stream closed' $jdbOutFile > $devnull 2>&1 + if [ $? = 0 ] ; then + dofail "jdb input stream closed prematurely" + fi # It is necessary here to avoid the situation when JDB exited but # mydojdbCmds() didn't finish because it waits for JDB message @@ -1085,6 +1096,7 @@ grepForString() fi unset theFile esac + return $stat } diff --git a/jdk/test/com/sun/nio/sctp/SctpChannel/ReceiveIntoDirect.java b/jdk/test/com/sun/nio/sctp/SctpChannel/ReceiveIntoDirect.java new file mode 100644 index 00000000000..e7b23d0aaed --- /dev/null +++ b/jdk/test/com/sun/nio/sctp/SctpChannel/ReceiveIntoDirect.java @@ -0,0 +1,276 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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 8034181 + * @summary SIGBUS in SctpChannelImpl receive + * @author chegar + */ + +import java.net.InetSocketAddress; +import java.net.SocketAddress; +import java.io.IOException; +import java.nio.ByteBuffer; +import com.sun.nio.sctp.AbstractNotificationHandler; +import com.sun.nio.sctp.AssociationChangeNotification; +import com.sun.nio.sctp.AssociationChangeNotification.AssocChangeEvent; +import com.sun.nio.sctp.HandlerResult; +import com.sun.nio.sctp.MessageInfo; +import com.sun.nio.sctp.Notification; +import com.sun.nio.sctp.PeerAddressChangeNotification; +import com.sun.nio.sctp.SctpChannel; +import com.sun.nio.sctp.SctpServerChannel; +import com.sun.nio.sctp.ShutdownNotification; +import static java.lang.System.out; +import static java.lang.System.err; +import static java.nio.charset.StandardCharsets.US_ASCII; + +public class ReceiveIntoDirect { + /* suitably small message to NOT overrun small buffers */ + final byte[] msgBytes = "Hello".getBytes(US_ASCII); + + /* number of client connections/combinations (accepted by the server) */ + final int NUM_CONNECTIONS = 75; + + void test(String[] args) throws IOException { + SocketAddress address = null; + Server server; + + if (!Util.isSCTPSupported()) { + out.println("SCTP protocol is not supported"); + out.println("Test cannot be run"); + return; + } + + if (args.length == 2) { + /* requested to connecct to a specific address */ + try { + int port = Integer.valueOf(args[1]); + address = new InetSocketAddress(args[0], port); + } catch (NumberFormatException nfe) { + err.println(nfe); + } + } else { + /* start server on local machine, default */ + server = new Server(); + server.start(); + address = server.address(); + debug("Server started and listening on " + address); + } + + /* many combinations with varing buffer sizes, and offsets */ + runWithManyOffsets(address, 20); + runWithManyOffsets(address, 49); + runWithManyOffsets(address, 50); + runWithManyOffsets(address, 51); + runWithManyOffsets(address, 1024); + } + + void runWithManyOffsets(SocketAddress addr, int bufferSize) + throws IOException + { + doTest(addr, bufferSize, 1); + doTest(addr, bufferSize, 2); + doTest(addr, bufferSize, 3); + doTest(addr, bufferSize, 4); + doTest(addr, bufferSize, 5); + doTest(addr, bufferSize, 6); + doTest(addr, bufferSize, 7); + doTest(addr, bufferSize, 8); + doTest(addr, bufferSize, 9); + doTest(addr, bufferSize, 10); + doTest(addr, bufferSize, 11); + doTest(addr, bufferSize, 12); + doTest(addr, bufferSize, 13); + doTest(addr, bufferSize, 14); + doTest(addr, bufferSize, 15); + } + + void doTest(SocketAddress peerAddress, int bufferSize, int bufferOffset) + throws IOException + { + debug("\n\nTesting with bufferSize " + bufferSize + " and offset " + bufferOffset); + assert bufferOffset + msgBytes.length <= bufferSize : + "buffer offset + message length greater than buffer size "; + + ByteBuffer buffer = ByteBuffer.allocateDirect(bufferSize); + MessageInfo info; + + try (SctpChannel channel = SctpChannel.open()) { + channel.connect(peerAddress); + + ReceiveNotificationHandler handler = + new ReceiveNotificationHandler(); + + /* TEST 1: Assoc/peer change notif into direct buffer with offest */ + do { + debug("Test 1: Assoc/peer change with offset " + bufferOffset); + buffer.position(bufferOffset); + info = channel.receive(buffer, null, handler); + if (info == null) { + fail("unexpected null from receive"); + return; + } + } while (!info.isComplete()); + + buffer.flip().position(bufferOffset); + check(handler.receivedCommUp(), "SCTP_COMM_UP not received"); + check(info != null, "info is null"); + check(info.address() != null, "address is null"); + check(info.association() != null, "association is null"); + check(info.isComplete(), "message is not complete"); + check(info.isUnordered() != true, + "message should not be unordered"); + check(info.streamNumber() >= 0, "invalid stream number"); + check(info.bytes() == msgBytes.length, + "bytes received not equal to message length"); + check(info.bytes() == buffer.remaining(), "bytes != remaining"); + check(Util.compare(buffer, msgBytes), + "received message not the same as sent message"); + + /* TEST 2: shutdown notification with offset */ + debug("Test 2: shutdown notif with offset " + bufferOffset); + buffer.clear().position(bufferOffset); + while ((info = channel.receive(buffer, null, handler )) != null && + info.bytes() != -1 ); + } + } + + class Server implements Runnable + { + private final InetSocketAddress serverAddr; + private final SctpServerChannel ssc; + + public Server() throws IOException { + ssc = SctpServerChannel.open().bind(null); + java.util.Set<SocketAddress> addrs = ssc.getAllLocalAddresses(); + if (addrs.isEmpty()) + debug("addrs should not be empty"); + + serverAddr = (InetSocketAddress) addrs.iterator().next(); + } + + public void start() { + (new Thread(this, "Server-" + serverAddr.getPort())).start(); + } + + public InetSocketAddress address() { + return serverAddr; + } + + @Override + public void run() { + try { + for (int i=0; i<NUM_CONNECTIONS; i++) { + SctpChannel sc = ssc.accept(); + + /* send a small message */ + MessageInfo info = MessageInfo.createOutgoing(null, 0); + ByteBuffer buf = ByteBuffer.allocateDirect(Util.SMALL_BUFFER); + buf.put(msgBytes); + buf.flip(); + + debug("sending small message: " + buf); + sc.send(buf, info); + + sc.shutdown(); + sc.close(); + } + } catch (IOException x) { + unexpected(x); + } finally { + try { ssc.close(); } + catch (IOException x) { unexpected(x); } + } + } + } + + class ReceiveNotificationHandler extends AbstractNotificationHandler<Object> + { + boolean receivedCommUp; // false + + public ReceiveNotificationHandler() { } + + public boolean receivedCommUp() { + return receivedCommUp; + } + + @Override + public HandlerResult handleNotification( + Notification notification, Object attachment) { + fail("Unknown notification type"); + return HandlerResult.CONTINUE; + } + + @Override + public HandlerResult handleNotification( + AssociationChangeNotification notification, Object attachment) { + AssocChangeEvent event = notification.event(); + debug("AssociationChangeNotification"); + debug(" Association: " + notification.association()); + debug(" Event: " + event); + + if (event.equals(AssocChangeEvent.COMM_UP)) + receivedCommUp = true; + + return HandlerResult.CONTINUE; + } + + @Override + public HandlerResult handleNotification( + PeerAddressChangeNotification pacn, Object unused) + { + debug("PeerAddressChangeNotification: " + pacn); + return HandlerResult.CONTINUE; + } + + @Override + public HandlerResult handleNotification( + ShutdownNotification notification, Object attachment) { + debug("ShutdownNotification"); + debug(" Association: " + notification.association()); + return HandlerResult.CONTINUE; + } + } + //--------------------- Infrastructure --------------------------- + boolean debug = true; + volatile int passed = 0, failed = 0; + void pass() {passed++;} + void fail() {failed++; Thread.dumpStack();} + void fail(String msg) {System.err.println(msg); fail();} + void unexpected(Throwable t) {failed++; t.printStackTrace();} + void check(boolean cond) {if (cond) pass(); else fail();} + void check(boolean cond, String failMessage) {if (cond) pass(); else fail(failMessage);} + void debug(String message) {if(debug) { + System.out.println(Thread.currentThread() + " " + message); } } + public static void main(String[] args) throws Throwable { + Class<?> k = new Object(){}.getClass().getEnclosingClass(); + try {k.getMethod("instanceMain",String[].class) + .invoke( k.newInstance(), (Object) args);} + catch (Throwable e) {throw e.getCause();}} + public void instanceMain(String[] args) throws Throwable { + try {test(args);} catch (Throwable t) {unexpected(t);} + System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); + if (failed > 0) throw new AssertionError("Some tests failed");} + +} diff --git a/jdk/test/java/awt/FileDialog/SaveFileNameOverrideTest/SaveFileNameOverrideTest.java b/jdk/test/java/awt/FileDialog/SaveFileNameOverrideTest/SaveFileNameOverrideTest.java index 7348f663a8f..79b5a3a6de0 100644 --- a/jdk/test/java/awt/FileDialog/SaveFileNameOverrideTest/SaveFileNameOverrideTest.java +++ b/jdk/test/java/awt/FileDialog/SaveFileNameOverrideTest/SaveFileNameOverrideTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* test - @bug 6998877 + @bug 6998877 8022531 @summary After double-click on the folder names, FileNameOverrideTest FAILED @author Sergey.Bylokhov@oracle.com area=awt.filedialog @library ../../regtesthelpers @@ -59,7 +59,8 @@ public class SaveFileNameOverrideTest extends Applet implements ActionListener { String[] instructions = { "1) Click on 'Show File Dialog' button. A file dialog will come up.", - "2) Double-click on '" + clickDirName + "' and click OK.", + "2) Double-click on '" + clickDirName + "' and click a confirmation", + " button, it can be 'OK', 'Save' or any other platform-dependent name.", "3) See result of the test below" }; diff --git a/jdk/test/java/awt/List/ListPeer/R2303044ListSelection.java b/jdk/test/java/awt/List/ListPeer/R2303044ListSelection.java new file mode 100644 index 00000000000..d7ef3902a03 --- /dev/null +++ b/jdk/test/java/awt/List/ListPeer/R2303044ListSelection.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import sun.awt.SunToolkit; + +import java.awt.Frame; +import java.awt.HeadlessException; +import java.awt.List; +import java.awt.Toolkit; + +/** + * @test + * @summary rdar://problem/2303044 List selection not set when peer is created + * @summary com.apple.junit.java.awt.List; + * @run main R2303044ListSelection + */ +public final class R2303044ListSelection { + + public static final String ITEM_NAME = "myItem"; + + public static void main(final String[] args) throws HeadlessException { + final Frame frame = new Frame("Test Frame"); + final List list = new List(); + frame.setSize(300, 200); + list.add(ITEM_NAME); + list.select(0); + frame.add(list); + frame.validate(); + frame.setVisible(true); + sleep(); + if (!ITEM_NAME.equals(list.getSelectedItem())) { + throw new RuntimeException("List item not selected item."); + } + list.removeAll(); + frame.dispose(); + } + + private static void sleep() { + try { + ((SunToolkit) Toolkit.getDefaultToolkit()).realSync(); + Thread.sleep(1000); + } catch (final InterruptedException ignored) { + } + } +} diff --git a/jdk/test/java/awt/Mouse/MouseComboBoxTest/MouseComboBoxTest.java b/jdk/test/java/awt/Mouse/MouseComboBoxTest/MouseComboBoxTest.java new file mode 100644 index 00000000000..c032d7ac072 --- /dev/null +++ b/jdk/test/java/awt/Mouse/MouseComboBoxTest/MouseComboBoxTest.java @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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 8032872 + * @summary Tests JComboBox selection via the mouse + * @author Dmitry Markov + */ +import sun.awt.SunToolkit; + +import javax.swing.*; +import javax.swing.plaf.basic.BasicComboPopup; +import javax.swing.plaf.basic.ComboPopup; +import javax.swing.plaf.metal.MetalComboBoxUI; +import javax.swing.plaf.metal.MetalLookAndFeel; +import java.awt.*; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; + +public class MouseComboBoxTest { + private static final String[] items = {"One", "Two", "Three", "Four", "Five"}; + + private static SunToolkit toolkit = null; + private static Robot robot = null; + private static JFrame frame = null; + private static JComboBox comboBox = null; + private static MyComboBoxUI comboBoxUI = null; + + public static void main(String[] args) throws Exception { + toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); + robot = new Robot(); + robot.setAutoDelay(50); + + UIManager.setLookAndFeel(new MetalLookAndFeel()); + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + createAndShowGUI(); + } + }); + toolkit.realSync(); + + for (int i = 0; i < items.length; i++) { + // Open popup + robot.keyPress(KeyEvent.VK_DOWN); + robot.keyRelease(KeyEvent.VK_DOWN); + toolkit.realSync(); + + Point point = getItemPointToClick(i); + robot.mouseMove(point.x, point.y); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + toolkit.realSync(); + + if (i != getSelectedIndex()) { + throw new RuntimeException("Test Failed! Incorrect value of selected index = " + getSelectedIndex() + + ", expected value = " + i); + } + } + } + + private static Point getItemPointToClick(final int item) throws Exception { + final Point[] result = new Point[1]; + + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup(); + Point point = popup.getLocationOnScreen(); + Dimension size = popup.getSize(); + + int step = size.height / items.length; + point.x += size.width / 2; + point.y += step / 2 + step * item; + result[0] = point; + } + }); + return result[0]; + } + + private static int getSelectedIndex() throws Exception { + final int[] result = new int[1]; + + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + result[0] = comboBox.getSelectedIndex(); + } + }); + return result[0]; + } + + private static void createAndShowGUI() { + frame = new JFrame("MouseComboBoxTest"); + + comboBox = new JComboBox(items); + comboBox.setEditable(true); + comboBoxUI = new MyComboBoxUI(); + comboBox.setUI(comboBoxUI); + + frame.pack(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setVisible(true); + + JWindow window = new JWindow(frame); + window.add(comboBox); + window.pack(); + window.setVisible(true); + } + + private static class MyComboBoxUI extends MetalComboBoxUI { + public ComboPopup getComboPopup() { + return popup; + } + } +} + diff --git a/jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh b/jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh index 36acfe81867..872c93e0643 100644 --- a/jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh +++ b/jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh @@ -1,7 +1,7 @@ #!/bin/ksh -p # -# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. # 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 6282388 +# @bug 6282388 8030640 # @summary Tests that AWT use correct toolkit to be wrapped into HeadlessToolkit # @author artem.ananiev@sun.com: area=awt.headless # @compile TestWrapped.java @@ -59,30 +59,14 @@ pass() # Checking for proper OS OS=`uname -s` case "$OS" in - SunOS ) - VAR="One value for Sun" - DEFAULT_JDK=/usr/local/java/jdk1.2/solaris + SunOS | Linux | Darwin | CYGWIN* ) FILESEP="/" ;; - - Linux ) - VAR="A different value for Linux" - DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386 - FILESEP="/" - ;; - - Windows* | CYGWIN* ) - VAR="A different value for Win32" - DEFAULT_JDK=/usr/local/java/jdk1.2/win32 + + Windows* ) FILESEP="\\" ;; - Darwin) - VAR="Lets not forget about Mac" - DEFAULT_JDK=$(/usr/libexec/java_home) - FILESEP="/" - ;; - # catch all other OSs * ) echo "Unrecognized system! $OS" @@ -113,8 +97,7 @@ if [ -z "${TESTJAVA}" ] ; then # THIS IS THE JDK BEING TESTED. if [ -n "$1" ] ; then TESTJAVA=$1 - else echo "no JDK specified on command line so using default!" - TESTJAVA=$DEFAULT_JDK + else fail "no JDK specified on command line!" fi TESTSRC=. TESTCLASSES=. diff --git a/jdk/test/java/awt/TrayIcon/DblClickActionEventTest/DblClickActionEventTest.html b/jdk/test/java/awt/TrayIcon/DblClickActionEventTest/DblClickActionEventTest.html new file mode 100644 index 00000000000..acaf89c4e28 --- /dev/null +++ b/jdk/test/java/awt/TrayIcon/DblClickActionEventTest/DblClickActionEventTest.html @@ -0,0 +1,46 @@ +<html> + +<!-- + Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + This code is free software; you can redistribute 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 6284070 + @summary Tests that ActionEvent is generated when a tray icon is double-clicked + @library ../../regtesthelpers + @build Sysout + @author artem.ananiev: area=awt.tray + @run applet/manual=yesno DblClickActionEventTest.html + --> +<head> +<title> DblClickActionEventTest + + + +

DblClickActionEventTest
Bug ID: 6284070

+ +

See the dialog box (usually in upper left corner) for instructions

+ + + + diff --git a/jdk/test/java/awt/TrayIcon/DblClickActionEventTest/DblClickActionEventTest.java b/jdk/test/java/awt/TrayIcon/DblClickActionEventTest/DblClickActionEventTest.java new file mode 100644 index 00000000000..1be8aa5b847 --- /dev/null +++ b/jdk/test/java/awt/TrayIcon/DblClickActionEventTest/DblClickActionEventTest.java @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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 6284070 + @summary Tests that ActionEvent is generated when a tray icon is double-clicked + @library ../../regtesthelpers + @build Sysout + @author artem.ananiev: area=awt.tray + @run applet/manual=yesno DblClickActionEventTest.html +*/ + +import java.applet.*; + +import java.awt.*; +import java.awt.event.*; +import java.awt.image.*; + +import sun.awt.OSInfo; +import test.java.awt.regtesthelpers.Sysout; + +public class DblClickActionEventTest extends Applet { + boolean traySupported; + + public void init() { + this.setLayout(new BorderLayout()); + + String[] instructions; + traySupported = SystemTray.isSupported(); + if (traySupported) { + String clickInstruction; + if (OSInfo.getOSType().equals(OSInfo.OSType.MACOSX)) { + clickInstruction = "right"; + } else { + clickInstruction = "left"; + } + instructions = new String[]{ + "When the test starts an icon is added to the SystemTray area.", + " Double-click on it with a " + clickInstruction + " button and make sure that", + " ACTION_PERFORMED event is sent to Java (all the clicks and", + " action events are shown below these instructions).", + "Then, if your system allows the tray icon to get focus (for", + " example, windows 2000 or windows XP), double-click on the", + " icon with SPACE button and single-click with RETURN button.", + " Both of them must also trigger ACTION_PERFORMED event.", + "If you see ACTION_PERFORMED events after each of your actions", + " (either mouse clicks or key presses), press PASS, else FAIL" + }; + } else { + instructions = new String[]{ + "The test cannot be run because SystemTray is not supported.", + "Simply press PASS button." + }; + } + Sysout.createDialogWithInstructions(instructions); + } + + public void start() { + setSize(200, 200); + setVisible(true); + validate(); + + if (!traySupported) { + return; + } + + BufferedImage img = new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB); + Graphics g = img.createGraphics(); + g.setColor(Color.WHITE); + g.fillRect(0, 0, 32, 32); + g.setColor(Color.RED); + g.fillRect(6, 6, 20, 20); + g.dispose(); + + SystemTray tray = SystemTray.getSystemTray(); + TrayIcon icon = new TrayIcon(img); + icon.setImageAutoSize(true); + icon.addActionListener(ev -> Sysout.println(ev.toString())); + icon.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent ev) { + Sysout.println(ev.toString()); + } + } + ); + + try { + tray.add(icon); + } catch (AWTException e) { + Sysout.println(e.toString()); + Sysout.println("!!! The test coudn't be performed !!!"); + } + } +} + diff --git a/jdk/test/java/awt/TrayIcon/DisposeInActionEventTest/DisposeInActionEventTest.html b/jdk/test/java/awt/TrayIcon/DisposeInActionEventTest/DisposeInActionEventTest.html new file mode 100644 index 00000000000..2fe33ad59fa --- /dev/null +++ b/jdk/test/java/awt/TrayIcon/DisposeInActionEventTest/DisposeInActionEventTest.html @@ -0,0 +1,47 @@ + + + + + + + DisposeInActionEventTest + + + +

DisposeInActionEventTest
Bug ID: 6299866

+ +

See the dialog box (usually in upper left corner) for instructions

+ + + + diff --git a/jdk/test/java/awt/TrayIcon/DisposeInActionEventTest/DisposeInActionEventTest.java b/jdk/test/java/awt/TrayIcon/DisposeInActionEventTest/DisposeInActionEventTest.java new file mode 100644 index 00000000000..f5eddec8c07 --- /dev/null +++ b/jdk/test/java/awt/TrayIcon/DisposeInActionEventTest/DisposeInActionEventTest.java @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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 6299866 + @summary Tests that no NPE is thrown when the tray icon is disposed from the + handler of action event caused by clicking on this icon. + @library ../../regtesthelpers + @build Sysout + @author artem.ananiev: area=awt.tray + @run applet/manual=yesno DisposeInActionEventTest.html +*/ + +import java.applet.*; + +import java.awt.*; +import java.awt.image.*; + +import sun.awt.OSInfo; +import test.java.awt.regtesthelpers.Sysout; + +public class DisposeInActionEventTest extends Applet { + private boolean traySupported; + + private SystemTray systemTray; + private TrayIcon trayIcon; + + public void init() { + this.setLayout(new BorderLayout()); + + String[] instructions; + traySupported = SystemTray.isSupported(); + if (!traySupported) { + instructions = new String[]{ + "The test cannot be run because SystemTray is not supported.", + "Simply press PASS button." + }; + } else { + String clickInstruction; + if (OSInfo.getOSType().equals(OSInfo.OSType.MACOSX)) { + clickInstruction = "right"; + } else { + clickInstruction = "left"; + } + instructions = new String[]{ + "When the test starts, it adds the icon to the tray aread. If you", + " don't see a tray icon, please, make sure that the tray area", + " (also called Taskbar Status Area on MS Windows, Notification", + " Area on Gnome or System Tray on KDE) is visible.", + "Double-click with " + clickInstruction + " button on the tray icon to trigger the", + " action event. Brief information about action events is printed", + " below. After each action event the tray icon is removed from", + " the tray and then added back in a second.", + "The test performs some automatic checks when removing the icon. If", + " something is wrong the corresponding message is displayed below.", + " Repeat double-clicks several times. If no 'Test FAILED' messages", + " are printed, press PASS button else FAIL button." + }; + } + Sysout.createDialogWithInstructions(instructions); + } + + @Override + public void start() { + setSize(200, 200); + setVisible(true); + validate(); + + if (!traySupported) return; + + System.setProperty("sun.awt.exception.handler", "DisposeInActionEventTest$EDTExceptionHandler"); + + BufferedImage img = new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB); + Graphics g = img.createGraphics(); + g.setColor(Color.WHITE); + g.fillRect(0, 0, 32, 32); + g.setColor(Color.RED); + g.fillRect(6, 6, 20, 20); + g.dispose(); + + systemTray = SystemTray.getSystemTray(); + trayIcon = new TrayIcon(img); + trayIcon.setImageAutoSize(true); + trayIcon.addActionListener(ev -> { + Sysout.println(ev.toString()); + systemTray.remove(trayIcon); + new Thread(() -> { + try { + Thread.sleep(1000); + systemTray.add(trayIcon); + } catch (AWTException | InterruptedException e) { + Sysout.println(e.toString()); + Sysout.println("!!! The test coudn't be performed !!!"); + } + } + ).start(); + } + ); + + try { + systemTray.add(trayIcon); + } catch (AWTException e) { + Sysout.println(e.toString()); + Sysout.println("!!! The test coudn't be performed !!!"); + } + } +} diff --git a/jdk/test/java/awt/Window/Grab/GrabTest.java b/jdk/test/java/awt/Window/Grab/GrabTest.java index 8cc0538b333..e632af18dbf 100644 --- a/jdk/test/java/awt/Window/Grab/GrabTest.java +++ b/jdk/test/java/awt/Window/Grab/GrabTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. * 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,10 @@ import test.java.awt.regtesthelpers.Util; public class GrabTest { private static Frame f; private static Frame f1; + private static Frame frame; private static Window w; + private static Window window1; + private static Window window2; private static Button b; private static Robot robot; @@ -96,6 +99,15 @@ public class GrabTest { f.setVisible(true); w.setVisible(true); + frame = new Frame(); + window1 = new Window(frame); + window1.setBounds(0, 0, 100, 100); + window1.setBackground(Color.blue); + + window2 = new Window(window1); + window2.setBounds(0, 0, 50, 50); + window2.setBackground(Color.green); + tk = (sun.awt.SunToolkit)Toolkit.getDefaultToolkit(); try { @@ -194,6 +206,24 @@ public class GrabTest { passed = false; System.err.println("Failure: [7] Window disposal didn't cause ungrab"); } + ungrabbed = false; + + + // 8. Check that mouse click on subwindow does not cause ungrab + frame.setVisible(true); + window1.setVisible(true); + window2.setVisible(true); + Util.waitForIdle(robot); + + tk.grab(window1); + + Util.clickOnComp(window2, robot); + Util.waitForIdle(robot); + + if (ungrabbed) { + passed = false; + System.err.println("Failure: [8] Press on the subwindow caused ungrab"); + } if (passed) { System.out.println("Test passed."); diff --git a/jdk/test/java/awt/dnd/ImageTransferTest/ImageTransferTest.java b/jdk/test/java/awt/dnd/ImageTransferTest/ImageTransferTest.java new file mode 100644 index 00000000000..491d35fab9b --- /dev/null +++ b/jdk/test/java/awt/dnd/ImageTransferTest/ImageTransferTest.java @@ -0,0 +1,412 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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 4397404 4720930 + @summary tests that images of all supported native image formats are transfered properly + @library ../../regtesthelpers/process/ + @build ProcessResults ProcessCommunicator + @author gas@sparc.spb.su area=Clipboard + @run main ImageTransferTest +*/ + +import sun.awt.OSInfo; +import sun.awt.SunToolkit; +import test.java.awt.regtesthelpers.process.ProcessCommunicator; +import test.java.awt.regtesthelpers.process.ProcessResults; + +import java.awt.*; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.SystemFlavorMap; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.awt.dnd.DnDConstants; +import java.awt.dnd.DragSource; +import java.awt.dnd.DragSourceAdapter; +import java.awt.dnd.DragSourceDropEvent; +import java.awt.dnd.DragSourceListener; +import java.awt.dnd.DropTarget; +import java.awt.dnd.DropTargetAdapter; +import java.awt.dnd.DropTargetDropEvent; +import java.awt.event.InputEvent; +import java.awt.image.BufferedImage; +import java.awt.image.MemoryImageSource; +import java.util.stream.Stream; + +public class ImageTransferTest { + public static void main(String[] arg) throws Exception { + ImageDragSource ids = new ImageDragSource(); + ids.frame.setLocation(100, 100); + ids.frame.setVisible(true); + Util.sync(); + String classpath = System.getProperty("java.class.path"); + String[] args = new String[ids.formats.length + 4]; + args[0] = "200"; + args[1] = "100"; + args[2] = args[3] = "150"; + + System.arraycopy(ids.formats, 0, args, 4, ids.formats.length); + ProcessResults pres = ProcessCommunicator.executeChildProcess(ImageDropTarget.class, classpath, args); + + if (pres.getStdErr() != null && pres.getStdErr().length() > 0) { + System.err.println("========= Child VM System.err ========"); + System.err.print(pres.getStdErr()); + System.err.println("======================================"); + } + + if (pres.getStdOut() != null && pres.getStdOut().length() > 0) { + System.err.println("========= Child VM System.out ========"); + System.err.print(pres.getStdOut()); + System.err.println("======================================"); + } + + boolean failed = false; + String passedFormats = ""; + String failedFormats = ""; + + for (int i = 0; i < ids.passedArray.length; i++) { + if (ids.passedArray[i]) passedFormats += ids.formats[i] + " "; + else { + failed = true; + failedFormats += ids.formats[i] + " "; + } + } + + if (failed) { + throw new RuntimeException("test failed: images in following " + + "native formats are not transferred properly: " + failedFormats); + } else { + System.err.println("images in following " + + "native formats are transferred properly: " + passedFormats); + } + } +} + + +class Util { + public static void sync() { + ((SunToolkit) Toolkit.getDefaultToolkit()).realSync(); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } +} + +abstract class ImageTransferer { + Image image; + String[] formats; + int fi; // current format index + Frame frame = new Frame(); + + + ImageTransferer() { + image = createImage(); + frame.setSize(100, 100); + } + + private static Image createImage() { + int w = 100; + int h = 100; + int[] pix = new int[w * h]; + + int index = 0; + for (int y = 0; y < h; y++) { + for (int x = 0; x < w; x++) { + int red = 127; + int green = 127; + int blue = y > h / 2 ? 127 : 0; + int alpha = 255; + if (x < w / 4 && y < h / 4) { + alpha = 0; + red = 0; + } + pix[index++] = (alpha << 24) | (red << 16) | (green << 8) | blue; + } + } + return Toolkit.getDefaultToolkit().createImage(new MemoryImageSource(w, h, pix, 0, w)); + } + + + static String[] retrieveFormatsToTest() { + SystemFlavorMap sfm = (SystemFlavorMap) SystemFlavorMap.getDefaultFlavorMap(); + java.util.List ln = sfm.getNativesForFlavor(DataFlavor.imageFlavor); + if (OSInfo.OSType.WINDOWS.equals(OSInfo.getOSType()) && !ln.contains("METAFILEPICT")) { + // for test failing on JDK without this fix + ln.add("METAFILEPICT"); + } + return ln.toArray(new String[ln.size()]); + } + + static void leaveFormat(String format) { + SystemFlavorMap sfm = (SystemFlavorMap) SystemFlavorMap.getDefaultFlavorMap(); + sfm.setFlavorsForNative(format, new DataFlavor[]{DataFlavor.imageFlavor}); + sfm.setNativesForFlavor(DataFlavor.imageFlavor, new String[]{format}); + } + + + boolean areImagesIdentical(Image im1, Image im2) { + if (formats[fi].equals("JFIF") || formats[fi].equals("image/jpeg") || + formats[fi].equals("GIF") || formats[fi].equals("image/gif")) { + // JFIF and GIF are lossy formats + return true; + } + int[] ib1 = getImageData(im1); + int[] ib2 = getImageData(im2); + + if (ib1.length != ib2.length) { + return false; + } + + if (formats[fi].equals("PNG") || + formats[fi].equals("image/png") || + formats[fi].equals("image/x-png")) { + // check alpha as well + for (int i = 0; i < ib1.length; i++) { + if (ib1[i] != ib2[i]) { + System.err.println("different pixels: " + + Integer.toHexString(ib1[i]) + " " + + Integer.toHexString(ib2[i])); + return false; + } + } + } else { + for (int i = 0; i < ib1.length; i++) { + if ((ib1[i] & 0x00FFFFFF) != (ib2[i] & 0x00FFFFFF)) { + System.err.println("different pixels: " + + Integer.toHexString(ib1[i]) + " " + + Integer.toHexString(ib2[i])); + return false; + } + } + } + return true; + } + + private static int[] getImageData(Image image) { + int width = image.getWidth(null); + int height = image.getHeight(null); + BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g2d = bimage.createGraphics(); + try { + g2d.drawImage(image, 0, 0, width, height, null); + } finally { + g2d.dispose(); + } + return bimage.getRGB(0, 0, width, height, null, 0, width); + } + + public static int sign(int n) { + return n < 0 ? -1 : n == 0 ? 0 : 1; + } + +} + + +class ImageDragSource extends ImageTransferer { + boolean[] passedArray; + + ImageDragSource() { + formats = retrieveFormatsToTest(); + passedArray = new boolean[formats.length]; + final DragSourceListener dsl = new DragSourceAdapter() { + public void dragDropEnd(DragSourceDropEvent e) { + System.err.println("Drop was successful=" + e.getDropSuccess()); + notifyTransferSuccess(e.getDropSuccess()); + if (++fi < formats.length) { + leaveFormat(formats[fi]); + } + } + }; + + new DragSource().createDefaultDragGestureRecognizer(frame, + DnDConstants.ACTION_COPY, + dge -> dge.startDrag(null, new ImageSelection(image), dsl)); + leaveFormat(formats[fi]); + } + + + void notifyTransferSuccess(boolean status) { + passedArray[fi] = status; + } +} + + +class ImageDropTarget extends ImageTransferer { + private final Robot robot; + private static Point startPoint, endPoint = new Point(250, 150); + + ImageDropTarget() throws AWTException { + DropTargetAdapter dropTargetAdapter = new DropTargetAdapter() { + @Override + public void drop(DropTargetDropEvent dtde) { + checkImage(dtde); + startImageDrag(); + } + }; + new DropTarget(frame, dropTargetAdapter); + robot = new Robot(); + } + + + void checkImage(DropTargetDropEvent dtde) { + final Transferable t = dtde.getTransferable(); + if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) { + dtde.acceptDrop(DnDConstants.ACTION_COPY); + Image im; + try { + im = (Image) t.getTransferData(DataFlavor.imageFlavor); + System.err.println("getTransferData was successful"); + } catch (Exception e) { + System.err.println("Can't getTransferData: " + e); + dtde.dropComplete(false); + notifyTransferSuccess(false); + return; + } + + if (im == null) { + System.err.println("getTransferData returned null"); + dtde.dropComplete(false); + notifyTransferSuccess(false); + } else if (areImagesIdentical(image, im)) { + dtde.dropComplete(true); + notifyTransferSuccess(true); + } else { + System.err.println("transferred image is different from initial image"); + dtde.dropComplete(false); + notifyTransferSuccess(false); + } + + } else { + System.err.println("imageFlavor is not supported by Transferable"); + dtde.rejectDrop(); + notifyTransferSuccess(false); + } + } + + void startImageDrag() { + leaveFormat(formats[fi]); + new Thread(() -> { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + // Exit from the child process + System.exit(1); + } + robot.mouseMove(startPoint.x, startPoint.y); + robot.mousePress(InputEvent.BUTTON1_MASK); + for (Point p = new Point(startPoint); !p.equals(endPoint); + p.translate(sign(endPoint.x - p.x), sign(endPoint.y - p.y))) { + robot.mouseMove(p.x, p.y); + try { + Thread.sleep(50); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + robot.mouseRelease(InputEvent.BUTTON1_MASK); + }).start(); + } + + void notifyTransferSuccess(boolean status) { + if (status) { + System.err.println("format passed: " + formats[fi]); + } else { + System.err.println("format failed: " + formats[fi]); + System.exit(1); + } + if (fi < formats.length - 1) { + leaveFormat(formats[++fi]); + } else { + new Thread(() -> { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.exit(0); + }).start(); + } + } + + + public static void main(String[] args) { + try { + ImageDropTarget idt = new ImageDropTarget(); + + int x = Integer.parseInt(args[0]); + int y = Integer.parseInt(args[1]); + startPoint = new Point(Integer.parseInt(args[2]), Integer.parseInt(args[3])); + + idt.formats = new String[args.length - 4]; + System.arraycopy(args, 4, idt.formats, 0, args.length - 4); + leaveFormat(idt.formats[0]); + + idt.frame.setLocation(x, y); + idt.frame.setVisible(true); + Util.sync(); + + idt.startImageDrag(); + } catch (Throwable e) { + e.printStackTrace(); + System.exit(1); + } + } + +} + + +class ImageSelection implements Transferable { + private static final int IMAGE = 0; + private static final DataFlavor[] flavors = {DataFlavor.imageFlavor}; + private Image data; + + public ImageSelection(Image data) { + this.data = data; + } + + @Override + public DataFlavor[] getTransferDataFlavors() { + // returning flavors itself would allow client code to modify + // our internal behavior + return flavors.clone(); + } + + @Override + public boolean isDataFlavorSupported(DataFlavor flavor) { + return Stream.of(flavor).anyMatch(flavor::equals); + } + + @Override + public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { + if (flavor.equals(flavors[IMAGE])) { + return data; + } else { + throw new UnsupportedFlavorException(flavor); + } + } +} diff --git a/jdk/test/java/awt/event/KeyEvent/SwallowKeyEvents/SwallowKeyEvents.java b/jdk/test/java/awt/event/KeyEvent/SwallowKeyEvents/SwallowKeyEvents.java index c10094eed67..310e78f9ff8 100644 --- a/jdk/test/java/awt/event/KeyEvent/SwallowKeyEvents/SwallowKeyEvents.java +++ b/jdk/test/java/awt/event/KeyEvent/SwallowKeyEvents/SwallowKeyEvents.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* @test - @bug 7154072 + @bug 7154072 7161320 @summary Tests that key events with modifiers are not swallowed. @author anton.tarasov: area=awt.focus @library ../../../regtesthelpers @@ -49,6 +49,11 @@ public class SwallowKeyEvents { static Robot r; public static void main(String[] args) { + if (sun.awt.OSInfo.getOSType() == sun.awt.OSInfo.OSType.WINDOWS) { + System.out.println("Skipped. Test not for MS Windows."); + return; + } + f.add(t); f.pack(); f.setVisible(true); diff --git a/jdk/test/java/awt/image/MultiResolutionImage/NSImageToMultiResolutionImageTest.java b/jdk/test/java/awt/image/MultiResolutionImage/NSImageToMultiResolutionImageTest.java new file mode 100644 index 00000000000..af809243acc --- /dev/null +++ b/jdk/test/java/awt/image/MultiResolutionImage/NSImageToMultiResolutionImageTest.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Image; +import java.awt.Toolkit; +import sun.awt.OSInfo; +import sun.awt.image.MultiResolutionImage; +/* + * @test + * @bug 8033534 8035069 + * @summary [macosx] Get MultiResolution image from native system + * @author Alexander Scherbatiy + * @run main NSImageToMultiResolutionImageTest + */ + +public class NSImageToMultiResolutionImageTest { + + public static void main(String[] args) throws Exception { + + if (OSInfo.getOSType() != OSInfo.OSType.MACOSX) { + return; + } + + String icon = "NSImage://NSApplicationIcon"; + final Image image = Toolkit.getDefaultToolkit().getImage(icon); + + if (!(image instanceof MultiResolutionImage)) { + throw new RuntimeException("Icon does not have resolution variants!"); + } + + MultiResolutionImage multiResolutionImage = (MultiResolutionImage) image; + + int width = 0; + int height = 0; + + for (Image resolutionVariant : multiResolutionImage.getResolutionVariants()) { + int rvWidth = resolutionVariant.getWidth(null); + int rvHeight = resolutionVariant.getHeight(null); + if (rvWidth < width || rvHeight < height) { + throw new RuntimeException("Resolution variants are not sorted!"); + } + width = rvWidth; + height = rvHeight; + } + } +} diff --git a/jdk/test/java/awt/regtesthelpers/process/ProcessCommunicator.java b/jdk/test/java/awt/regtesthelpers/process/ProcessCommunicator.java index 86e69e67f3c..8c0e6db916a 100644 --- a/jdk/test/java/awt/regtesthelpers/process/ProcessCommunicator.java +++ b/jdk/test/java/awt/regtesthelpers/process/ProcessCommunicator.java @@ -81,7 +81,7 @@ public class ProcessCommunicator { public static ProcessResults executeChildProcess(final Class classToExecute, final String [] args) { - return executeChildProcess(classToExecute, " ", args); + return executeChildProcess(classToExecute, System.getProperty("java.class.path"), args); } /** diff --git a/jdk/test/java/awt/security/WarningWindowDisposeTest/WarningWindowDisposeTest.java b/jdk/test/java/awt/security/WarningWindowDisposeTest/WarningWindowDisposeTest.java new file mode 100644 index 00000000000..6f0149dc4d1 --- /dev/null +++ b/jdk/test/java/awt/security/WarningWindowDisposeTest/WarningWindowDisposeTest.java @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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 8037776 + @summary tests that the WarningWindow is properly disposed + @author Petr Pchelko + @library ../../regtesthelpers/process + @build ProcessResults ProcessCommunicator + @run main WarningWindowDisposeTest +*/ + +import sun.applet.AppletSecurity; +import sun.awt.SunToolkit; + +import java.awt.*; +import java.awt.Toolkit; +import java.util.concurrent.atomic.AtomicBoolean; + +import test.java.awt.regtesthelpers.process.ProcessCommunicator; +import test.java.awt.regtesthelpers.process.ProcessResults; + +public class WarningWindowDisposeTest { + + public static void main(String[] args) { + final AtomicBoolean passed = new AtomicBoolean(false); + new Thread(() -> { + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + throw new RuntimeException("Test FAILED!", e); + } + if (!passed.get()) { + throw new RuntimeException("Test FAILED! The child process never exits"); + } + }, "TimeoutThread").start(); + + String classpath = System.getProperty("java.class.path"); + ProcessResults pres = ProcessCommunicator.executeChildProcess(TestApplication.class, classpath, new String[0]); + passed.set(true); + if (pres.getStdErr() != null && pres.getStdErr().length() > 0) { + System.err.println("========= Child VM System.err ========"); + System.err.print(pres.getStdErr()); + System.err.println("======================================"); + } + + if (pres.getStdOut() != null && pres.getStdOut().length() > 0) { + System.err.println("========= Child VM System.out ========"); + System.err.print(pres.getStdOut()); + System.err.println("======================================"); + } + } + + public static class TestApplication { + public static void main(String[] args) throws Exception { + System.setSecurityManager(new AppletSecurity() { + @Override + public void checkPackageAccess (String s){ + } + }); + Frame f = new Frame("Test frame"); + f.setVisible(true); + ((SunToolkit) Toolkit.getDefaultToolkit()).realSync(); + Thread.sleep(500); + f.setVisible(false); + f.dispose(); + } + } +} diff --git a/jdk/test/java/lang/Runtime/exec/ConcurrentRead.java b/jdk/test/java/lang/Runtime/exec/ConcurrentRead.java index 9a122b4e57f..29634ca696c 100644 --- a/jdk/test/java/lang/Runtime/exec/ConcurrentRead.java +++ b/jdk/test/java/lang/Runtime/exec/ConcurrentRead.java @@ -30,21 +30,19 @@ import java.io.InputStream; import java.io.OutputStream; -import java.io.File; -import java.io.IOException; public class ConcurrentRead { static volatile Exception savedException; - static final String TEE = "/usr/bin/tee"; public static void main(String[] args) throws Exception { - - if (File.separatorChar == '\\' || // Windows - !new File(TEE).exists()) // no tee + if (! UnixCommands.isUnix) { + System.out.println("For UNIX only"); return; + } + UnixCommands.ensureCommandsAvailable("tee"); - Process p = Runtime.getRuntime().exec(TEE); + Process p = Runtime.getRuntime().exec(UnixCommands.tee()); OutputStream out = p.getOutputStream(); InputStream in = p.getInputStream(); Thread t1 = new WriterThread(out, in); diff --git a/jdk/test/java/lang/Runtime/exec/ExecWithDir.java b/jdk/test/java/lang/Runtime/exec/ExecWithDir.java index d3c87db78e8..321c20a5ca3 100644 --- a/jdk/test/java/lang/Runtime/exec/ExecWithDir.java +++ b/jdk/test/java/lang/Runtime/exec/ExecWithDir.java @@ -28,21 +28,25 @@ * directory is specified */ -import java.io.*; +import java.io.File; public class ExecWithDir { - private static final String CMD = "/bin/true"; private static final int N = 500; public static void main(String args[]) throws Exception { - if (! new File(CMD).canExecute()) + if (! UnixCommands.isUnix) { + System.out.println("For UNIX only"); return; + } + UnixCommands.ensureCommandsAvailable("true"); + + final String trueCmd = UnixCommands.findCommand("true"); File dir = new File("."); for (int i = 1; i <= N; i++) { System.out.print(i); System.out.print(" e"); - Process p = Runtime.getRuntime().exec(CMD, null, dir); + Process p = Runtime.getRuntime().exec(trueCmd, null, dir); System.out.print('w'); int s = p.waitFor(); System.out.println("x " + s); diff --git a/jdk/test/java/lang/Runtime/exec/ExecWithInput.java b/jdk/test/java/lang/Runtime/exec/ExecWithInput.java index 66a4c57e4e5..387b5f312ad 100644 --- a/jdk/test/java/lang/Runtime/exec/ExecWithInput.java +++ b/jdk/test/java/lang/Runtime/exec/ExecWithInput.java @@ -39,7 +39,6 @@ import java.io.*; public class ExecWithInput { - private static final String CAT = "/bin/cat"; private static final int N = 200; static int go(int i) throws Exception { @@ -50,8 +49,7 @@ public class ExecWithInput { * program exits. Under 1.4.1, cat sometimes gets stuck on a pipe * read and never terminates. */ - //Process p = Runtime.getRuntime().exec(new String[] { CAT } ); - Process p = Runtime.getRuntime().exec(CAT); + Process p = Runtime.getRuntime().exec(UnixCommands.cat()); String input = i + ": line 1\n" + i + ": line 2\n"; StringBufferInputStream in = new StringBufferInputStream(input); @@ -65,12 +63,12 @@ public class ExecWithInput { } public static void main(String[] args) throws Exception { - if (!System.getProperty("os.name").equals("Linux")) - return; - if (File.separatorChar == '\\') { - // no /bin/cat on windows + if (! UnixCommands.isLinux) { + System.out.println("For Linux only"); return; } + UnixCommands.ensureCommandsAvailable("cat"); + for (int i = 0; i < N; i++) go(i); } @@ -93,7 +91,6 @@ public class ExecWithInput { public void run() { try { - int c; byte[] buf = new byte[8192]; int n; while ((n = in.read(buf)) != -1) { diff --git a/jdk/test/java/lang/Runtime/exec/ExitValue.java b/jdk/test/java/lang/Runtime/exec/ExitValue.java index 80471bae11c..3ac42339100 100644 --- a/jdk/test/java/lang/Runtime/exec/ExitValue.java +++ b/jdk/test/java/lang/Runtime/exec/ExitValue.java @@ -68,13 +68,18 @@ public class ExitValue int expectedExitValue) throws Exception { - checkExitValue(new String[] { "/bin/sh", "-c", posixShellProgram }, + checkExitValue(new String[] { UnixCommands.sh(), "-c", posixShellProgram }, expectedExitValue); } final static int EXIT_CODE = 5; public static void main(String[] args) throws Exception { + if (! UnixCommands.isUnix) { + System.out.println("For UNIX only"); + return; + } + UnixCommands.ensureCommandsAvailable("sh", "true", "kill"); String java = join(File.separator, new String [] { System.getProperty("java.home"), "bin", "java" }); @@ -85,17 +90,14 @@ public class ExitValue "ExitValue$Run", String.valueOf(EXIT_CODE) }, EXIT_CODE); - checkExitValue(new String[] { "/bin/true" }, 0); + checkExitValue(new String[] { UnixCommands.findCommand("true") }, 0); checkPosixShellExitValue("exit", 0); checkPosixShellExitValue("exit 7", 7); - if (new File("/bin/kill").exists()) { - int sigoffset = - System.getProperty("os.name").equals("SunOS") ? 0 : 128; - checkPosixShellExitValue("/bin/kill -9 $$", sigoffset+9); - } + int sigoffset = UnixCommands.isSunOS ? 0 : 128; + checkPosixShellExitValue(UnixCommands.kill() + " -9 $$", sigoffset+9); } public static class Run { diff --git a/jdk/test/java/lang/Runtime/exec/LotsOfDestroys.java b/jdk/test/java/lang/Runtime/exec/LotsOfDestroys.java index c4bea4c5d6f..f0ab1fb3bec 100644 --- a/jdk/test/java/lang/Runtime/exec/LotsOfDestroys.java +++ b/jdk/test/java/lang/Runtime/exec/LotsOfDestroys.java @@ -28,19 +28,19 @@ * @author kladko */ -import java.io.File; - public class LotsOfDestroys { static final int RUNS = 400; - static final String ECHO = "/usr/bin/echo"; public static void main(String[] args) throws Exception { - if (File.separatorChar == '\\' || // Windows - !new File(ECHO).exists()) // no echo + if (! UnixCommands.isUnix) { + System.out.println("For UNIX only"); return; + } + UnixCommands.ensureCommandsAvailable("echo"); - for (int i = 0; i<= RUNS; i++) { - Process process = Runtime.getRuntime().exec(ECHO + " x"); + for (int i = 0; i <= RUNS; i++) { + Process process = Runtime.getRuntime().exec( + UnixCommands.echo() + " x"); process.destroy(); } } diff --git a/jdk/test/java/lang/Runtime/exec/LotsOfOutput.java b/jdk/test/java/lang/Runtime/exec/LotsOfOutput.java index ad4e92b60e3..2f8e594f2b6 100644 --- a/jdk/test/java/lang/Runtime/exec/LotsOfOutput.java +++ b/jdk/test/java/lang/Runtime/exec/LotsOfOutput.java @@ -28,16 +28,16 @@ * @author kladko */ -import java.io.File; - public class LotsOfOutput { - static final String CAT = "/usr/bin/cat"; - public static void main(String[] args) throws Exception{ - if (File.separatorChar == '\\' || // Windows - !new File(CAT).exists()) // no cat + public static void main(String[] args) throws Exception { + if (! UnixCommands.isUnix) { + System.out.println("For UNIX only"); return; - Process p = Runtime.getRuntime().exec(CAT + " /dev/zero"); + } + UnixCommands.ensureCommandsAvailable("cat"); + + Process p = Runtime.getRuntime().exec(UnixCommands.cat() + " /dev/zero"); long initMemory = Runtime.getRuntime().totalMemory(); for (int i=1; i< 10; i++) { Thread.sleep(100); diff --git a/jdk/test/java/lang/Runtime/exec/SleepyCat.java b/jdk/test/java/lang/Runtime/exec/SleepyCat.java index f9e173fffc2..6c5b41b649d 100644 --- a/jdk/test/java/lang/Runtime/exec/SleepyCat.java +++ b/jdk/test/java/lang/Runtime/exec/SleepyCat.java @@ -73,8 +73,8 @@ public class SleepyCat { // slower, making the child more likely to win the race! int iterations = 20; int timeout = 30; - String[] catArgs = new String[] {"/bin/cat"}; - String[] sleepArgs = new String[] {"/bin/sleep", + String[] catArgs = new String[] {UnixCommands.cat()}; + String[] sleepArgs = new String[] {UnixCommands.sleep(), String.valueOf(timeout+1)}; Process[] cats = new Process[iterations]; Process[] sleeps = new Process[iterations]; @@ -126,8 +126,9 @@ public class SleepyCat { timer.schedule(sleeperExecutioner, timeout * 1000); byte[] buffer = new byte[10]; String[] args = - new String[] {"/bin/sh", "-c", - "exec sleep " + (timeout+1) + " >/dev/null"}; + new String[] {UnixCommands.sh(), "-c", + "exec " + UnixCommands.sleep() + " " + + (timeout+1) + " >/dev/null"}; for (int i = 0; i < backgroundSleepers.length && !sleeperExecutioner.timedOut(); @@ -153,12 +154,13 @@ public class SleepyCat { } public static void main (String[] args) throws Exception { - try { - if (hang1() | hang2()) - throw new Exception("Read from closed pipe hangs"); - } catch (IOException e) { - // We will get here on non-Posix systems, - // which don't have cat and sleep and sh. + if (! UnixCommands.isUnix) { + System.out.println("For UNIX only"); + return; } + UnixCommands.ensureCommandsAvailable("sh", "cat", "sleep"); + + if (hang1() | hang2()) + throw new Exception("Read from closed pipe hangs"); } } diff --git a/jdk/test/java/lang/Runtime/exec/Status.java b/jdk/test/java/lang/Runtime/exec/Status.java index 987d51165e5..28c3f3adfb4 100644 --- a/jdk/test/java/lang/Runtime/exec/Status.java +++ b/jdk/test/java/lang/Runtime/exec/Status.java @@ -35,10 +35,15 @@ public class Status { public static void main(String args[]) throws Exception { - if (!System.getProperty("os.name").equals("Linux")) + if (!System.getProperty("os.name").equals("Linux")) { + System.out.println("Only for Linux"); return; + } + UnixCommands.ensureCommandsAvailable("false"); + + final String falseCmd = UnixCommands.findCommand("false"); for (int i = 0; i < N; i++) { - Process p = Runtime.getRuntime().exec("false"); + Process p = Runtime.getRuntime().exec(falseCmd); int s = p.waitFor(); System.out.print(s); System.out.print(' '); diff --git a/jdk/test/java/lang/Runtime/exec/StreamsSurviveDestroy.java b/jdk/test/java/lang/Runtime/exec/StreamsSurviveDestroy.java index 27e5ae83eb8..d1f6526ee09 100644 --- a/jdk/test/java/lang/Runtime/exec/StreamsSurviveDestroy.java +++ b/jdk/test/java/lang/Runtime/exec/StreamsSurviveDestroy.java @@ -102,7 +102,7 @@ public class StreamsSurviveDestroy { CountDownLatch latch = new CountDownLatch(2); System.err.println("test"); - Process p = Runtime.getRuntime().exec("/bin/cat"); + Process p = Runtime.getRuntime().exec(UnixCommands.cat()); Copier cp1 = new Copier("out", p.getInputStream(), System.err, false, false, latch); Copier cp2 = new Copier("err", p.getErrorStream(), System.err, @@ -122,7 +122,7 @@ public class StreamsSurviveDestroy { CountDownLatch latch = new CountDownLatch(2); System.err.println("testCloseBeforeDestroy"); - Process p = Runtime.getRuntime().exec("/bin/cat"); + Process p = Runtime.getRuntime().exec(UnixCommands.cat()); Copier cp1 = new Copier("out", p.getInputStream(), System.err, true, false, latch); Copier cp2 = new Copier("err", p.getErrorStream(), System.err, @@ -143,7 +143,7 @@ public class StreamsSurviveDestroy { static void testCloseAfterDestroy() throws Exception { CountDownLatch latch = new CountDownLatch(2); System.err.println("testCloseAfterDestroy"); - Process p = Runtime.getRuntime().exec("/bin/cat"); + Process p = Runtime.getRuntime().exec(UnixCommands.cat()); Copier cp1 = new Copier("out", p.getInputStream(), System.err, true, false,latch); Copier cp2 = new Copier("err", p.getErrorStream(), System.err, @@ -165,7 +165,7 @@ public class StreamsSurviveDestroy { static void testInterrupt() throws Exception { CountDownLatch latch = new CountDownLatch(2); System.err.println("testInterrupt"); - Process p = Runtime.getRuntime().exec("/bin/cat"); + Process p = Runtime.getRuntime().exec(UnixCommands.cat()); Copier cp1 = new Copier("out", p.getInputStream(), System.err, false, true, latch); Copier cp2 = new Copier("err", p.getErrorStream(), System.err, @@ -186,10 +186,13 @@ public class StreamsSurviveDestroy { public static void main(String[] args) throws Exception { - // Applies only to Solaris; Linux and Windows - // behave a little differently - if (!System.getProperty("os.name").equals("SunOS")) + // Applies only to Solaris; + // Linux and Windows behave a little differently + if (! UnixCommands.isSunOS) { + System.out.println("For SunOS only"); return; + } + UnixCommands.ensureCommandsAvailable("cat"); test(); testCloseBeforeDestroy(); diff --git a/jdk/test/java/lang/Runtime/exec/UnixCommands.java b/jdk/test/java/lang/Runtime/exec/UnixCommands.java new file mode 100644 index 00000000000..ded37b61ddd --- /dev/null +++ b/jdk/test/java/lang/Runtime/exec/UnixCommands.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.File; +import java.util.HashMap; +import java.util.Map; + +/** + * Utility class for finding the command on the current system + */ +public class UnixCommands { + + public static final boolean isUnix = ! System.getProperty("os.name").startsWith("Windows"); + public static final boolean isLinux = System.getProperty("os.name").startsWith("Linux"); + public static final boolean isSunOS = System.getProperty("os.name").equals("SunOS"); + + private static final String[] paths = {"/bin", "/usr/bin"}; + + private static Map nameToCommand = new HashMap<>(16); + + /** + * Throws Error unless every listed command is available on the system + */ + public static void ensureCommandsAvailable(String... commands) { + for (String command : commands) { + if (findCommand(command) == null) { + throw new Error("Command '" + command + "' not found; bailing out"); + } + } + } + + /** + * If the path to the command could be found, returns the command with the full path. + * Otherwise, returns null. + */ + public static String cat() { return findCommand("cat"); } + public static String sh() { return findCommand("sh"); } + public static String kill() { return findCommand("kill"); } + public static String sleep() { return findCommand("sleep"); } + public static String tee() { return findCommand("tee"); } + public static String echo() { return findCommand("echo"); } + + public static String findCommand(String name) { + if (nameToCommand.containsKey(name)) { + return nameToCommand.get(name); + } + String command = findCommand0(name); + nameToCommand.put(name, command); + return command; + } + + private static String findCommand0(String name) { + for (String path : paths) { + File file = new File(path, name); + if (file.canExecute()) { + return file.getPath(); + } + } + return null; + } +} diff --git a/jdk/test/java/lang/invoke/MethodHandles/CatchExceptionTest.java b/jdk/test/java/lang/invoke/MethodHandles/CatchExceptionTest.java new file mode 100644 index 00000000000..739ca6dc255 --- /dev/null +++ b/jdk/test/java/lang/invoke/MethodHandles/CatchExceptionTest.java @@ -0,0 +1,542 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package test.java.lang.invoke.MethodHandles; + +import com.oracle.testlibrary.jsr292.Helper; +import jdk.testlibrary.Asserts; + +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; +import java.lang.reflect.Array; +import java.util.*; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.function.Supplier; + +/* @test + * @library /lib/testlibrary/jsr292 /lib/testlibrary/ + * @compile CatchExceptionTest.java + * @run main/othervm -esa test.java.lang.invoke.MethodHandles.CatchExceptionTest + */ +public class CatchExceptionTest { + private static final List> ARGS_CLASSES; + protected static final int MAX_ARITY = Helper.MAX_ARITY - 1; + static { + Class classes[] = { + Object.class, + long.class, + int.class, + byte.class, + Integer[].class, + double[].class, + String.class, + }; + List> list = new ArrayList<>(MAX_ARITY); + for (int i = 0; i < MAX_ARITY; ++i) { + list.add(classes[Helper.RNG.nextInt(classes.length)]); + } + ARGS_CLASSES = Collections.unmodifiableList(list); + } + + private final TestCase testCase; + private final int nargs; + private final int argsCount; + private final MethodHandle catcher; + private int dropped; + private MethodHandle thrower; + + + public CatchExceptionTest(TestCase testCase, final boolean isVararg, final int argsCount, + final int catchDrops) { + this.testCase = testCase; + this.dropped = catchDrops; + if (Helper.IS_VERBOSE) { + System.out.printf("CatchException::CatchException(%s, isVararg=%b " + + "argsCount=%d catchDrops=%d)%n", + testCase, isVararg, argsCount, catchDrops + ); + } + MethodHandle thrower = testCase.thrower; + int throwerLen = thrower.type().parameterCount(); + List> classes; + int extra = Math.max(0, argsCount - throwerLen); + classes = getThrowerParams(isVararg, extra); + this.argsCount = throwerLen + classes.size(); + thrower = Helper.addTrailingArgs(thrower, this.argsCount, classes); + if (isVararg && argsCount > throwerLen) { + MethodType mt = thrower.type(); + Class lastParam = mt.parameterType(mt.parameterCount() - 1); + thrower = thrower.asVarargsCollector(lastParam); + } + this.thrower = thrower; + this.dropped = Math.min(this.argsCount, catchDrops); + catcher = testCase.getCatcher(getCatcherParams()); + nargs = Math.max(2, this.argsCount); + } + + public static void main(String[] args) throws Throwable { + for (CatchExceptionTest test : TestFactory.MANDATORY_TEST_CASES) { + test.runTest(); + } + TestFactory factory = new TestFactory(); + CatchExceptionTest test; + while ((test = factory.nextTest()) != null ) { + test.runTest(); + } + } + + private List> getThrowerParams(boolean isVararg, int argsCount) { + boolean unmodifiable = true; + List> classes; + classes = ARGS_CLASSES.subList(0, + Math.min(argsCount, (MAX_ARITY / 2) - 1)); + int extra = 0; + if (argsCount >= MAX_ARITY / 2) { + classes = new ArrayList<>(classes); + unmodifiable = false; + extra = (int) classes.stream().filter(Helper::isDoubleCost).count(); + int i = classes.size(); + while (classes.size() + extra < argsCount) { + Class aClass = ARGS_CLASSES.get(i); + if (Helper.isDoubleCost(aClass)) { + ++extra; + if (classes.size() + extra >= argsCount) { + break; + } + } + classes.add(aClass); + } + } + if (isVararg && classes.size() > 0) { + if (unmodifiable) { + classes = new ArrayList<>(classes); + } + int last = classes.size() - 1; + Class aClass = classes.get(classes.size() - 1); + aClass = Array.newInstance(aClass, 2).getClass(); + classes.set(last, aClass); + } + return classes; + } + + + private List> getCatcherParams() { + int catchArgc = 1 + this.argsCount - dropped; + List> result = new ArrayList<>( + thrower.type().parameterList().subList(0, catchArgc - 1)); + // prepend throwable + result.add(0, testCase.throwableClass); + return result; + } + + private void runTest() { + Helper.clear(); + + Object[] args = Helper.randomArgs( + argsCount, thrower.type().parameterArray()); + Object arg0 = Helper.MISSING_ARG; + Object arg1 = testCase.thrown; + if (argsCount > 0) { + arg0 = args[0]; + } + if (argsCount > 1) { + args[1] = arg1; + } + Asserts.assertEQ(nargs, thrower.type().parameterCount()); + if (argsCount < nargs) { + Object[] appendArgs = {arg0, arg1}; + appendArgs = Arrays.copyOfRange(appendArgs, argsCount, nargs); + thrower = MethodHandles.insertArguments( + thrower, argsCount, appendArgs); + } + Asserts.assertEQ(argsCount, thrower.type().parameterCount()); + + MethodHandle target = MethodHandles.catchException( + testCase.filter(thrower), testCase.throwableClass, + testCase.filter(catcher)); + + Asserts.assertEQ(thrower.type(), target.type()); + Asserts.assertEQ(argsCount, target.type().parameterCount()); + + Object returned; + try { + returned = target.invokeWithArguments(args); + } catch (Throwable ex) { + testCase.assertCatch(ex); + returned = ex; + } + + testCase.assertReturn(returned, arg0, arg1, dropped, args); + } +} + +class TestFactory { + public static final List MANDATORY_TEST_CASES = new ArrayList<>(); + + private static final int MIN_TESTED_ARITY = 10; + + static { + for (int[] args : new int[][]{ + {0, 0}, + {MIN_TESTED_ARITY, 0}, + {MIN_TESTED_ARITY, MIN_TESTED_ARITY}, + {CatchExceptionTest.MAX_ARITY, 0}, + {CatchExceptionTest.MAX_ARITY, CatchExceptionTest.MAX_ARITY}, + }) { + MANDATORY_TEST_CASES.addAll(createTests(args[0], args[1])); + } + } + + private int count; + private int args; + private int dropArgs; + private int currentMaxDrops; + private int maxArgs; + private int maxDrops; + private int constructor; + private int constructorSize; + private boolean isVararg; + + public TestFactory() { + if (Helper.IS_THOROUGH) { + maxArgs = maxDrops = CatchExceptionTest.MAX_ARITY; + } else { + maxArgs = MIN_TESTED_ARITY + + Helper.RNG.nextInt(CatchExceptionTest.MAX_ARITY + - MIN_TESTED_ARITY) + + 1; + maxDrops = MIN_TESTED_ARITY + + Helper.RNG.nextInt(maxArgs - MIN_TESTED_ARITY) + + 1; + args = 1; + } + + if (Helper.IS_VERBOSE) { + System.out.printf("maxArgs = %d%nmaxDrops = %d%n", + maxArgs, maxDrops); + } + constructorSize = TestCase.CONSTRUCTORS.size(); + } + + private static List createTests(int argsCount, + int catchDrops) { + if (catchDrops > argsCount || argsCount < 0 || catchDrops < 0) { + throw new IllegalArgumentException("argsCount = " + argsCount + + ", catchDrops = " + catchDrops + ); + } + List result = new ArrayList<>( + TestCase.CONSTRUCTORS.size()); + for (Supplier constructor : TestCase.CONSTRUCTORS) { + result.add(new CatchExceptionTest(constructor.get(), + /* isVararg = */ true, + argsCount, + catchDrops)); + result.add(new CatchExceptionTest(constructor.get(), + /* isVararg = */ false, + argsCount, + catchDrops)); + } + return result; + } + + /** + * @return next test from test matrix: + * {varArgs, noVarArgs} x TestCase.rtypes x TestCase.THROWABLES x {1, .., maxArgs } x {1, .., maxDrops} + */ + public CatchExceptionTest nextTest() { + if (constructor < constructorSize) { + return createTest(); + } + constructor = 0; + count++; + if (!Helper.IS_THOROUGH && count > Helper.TEST_LIMIT) { + System.out.println("test limit is exceeded"); + return null; + } + if (dropArgs <= currentMaxDrops) { + if (dropArgs == 1) { + if (Helper.IS_THOROUGH || Helper.RNG.nextBoolean()) { + ++dropArgs; + return createTest(); + } else if (Helper.IS_VERBOSE) { + System.out.printf( + "argsCount=%d : \"drop\" scenarios are skipped%n", + args); + } + } else { + ++dropArgs; + return createTest(); + } + } + + if (args <= maxArgs) { + dropArgs = 1; + currentMaxDrops = Math.min(args, maxDrops); + ++args; + return createTest(); + } + return null; + } + + private CatchExceptionTest createTest() { + if (!Helper.IS_THOROUGH) { + return new CatchExceptionTest( + TestCase.CONSTRUCTORS.get(constructor++).get(), + Helper.RNG.nextBoolean(), args, dropArgs); + } else { + if (isVararg) { + isVararg = false; + return new CatchExceptionTest( + TestCase.CONSTRUCTORS.get(constructor++).get(), + isVararg, args, dropArgs); + } else { + isVararg = true; + return new CatchExceptionTest( + TestCase.CONSTRUCTORS.get(constructor).get(), + isVararg, args, dropArgs); + } + } + } +} + +class TestCase { + private static enum ThrowMode { + NOTHING, + CAUGHT, + UNCAUGHT, + ADAPTER + } + + @SuppressWarnings("unchecked") + public static final List> CONSTRUCTORS; + private static final MethodHandle FAKE_IDENTITY; + private static final MethodHandle THROW_OR_RETURN; + private static final MethodHandle CATCHER; + + static { + try { + MethodHandles.Lookup lookup = MethodHandles.lookup(); + THROW_OR_RETURN = lookup.findStatic( + TestCase.class, + "throwOrReturn", + MethodType.methodType(Object.class, Object.class, + Throwable.class) + ); + CATCHER = lookup.findStatic( + TestCase.class, + "catcher", + MethodType.methodType(Object.class, Object.class)); + FAKE_IDENTITY = lookup.findVirtual( + TestCase.class, "fakeIdentity", + MethodType.methodType(Object.class, Object.class)); + + } catch (NoSuchMethodException | IllegalAccessException e) { + throw new Error(e); + } + PartialConstructor[] constructors = { + create(Object.class, Object.class::cast), + create(String.class, Objects::toString), + create(int[].class, x -> new int[]{Objects.hashCode(x)}), + create(long.class, + x -> Objects.hashCode(x) & (-1L >>> 32)), + create(void.class, TestCase::noop)}; + Throwable[] throwables = { + new ClassCastException("testing"), + new java.io.IOException("testing"), + new LinkageError("testing")}; + List> list = new ArrayList<>(constructors.length * + throwables.length * ThrowMode.values().length); + //noinspection unchecked + for (PartialConstructor f : constructors) { + for (ThrowMode mode : ThrowMode.values()) { + for (Throwable t : throwables) { + list.add(f.apply(mode, t)); + } + } + } + CONSTRUCTORS = Collections.unmodifiableList(list); + } + + public final Class rtype; + public final ThrowMode throwMode; + public final Throwable thrown; + public final Class throwableClass; + /** + * MH which takes 2 args (Object,Throwable), 1st is the return value, + * 2nd is the exception which will be thrown, if it's supposed in current + * {@link #throwMode}. + */ + public final MethodHandle thrower; + private final Function cast; + protected MethodHandle filter; + private int fakeIdentityCount; + + private TestCase(Class rtype, Function cast, + ThrowMode throwMode, Throwable thrown) + throws NoSuchMethodException, IllegalAccessException { + this.cast = cast; + filter = MethodHandles.lookup().findVirtual( + Function.class, + "apply", + MethodType.methodType(Object.class, Object.class)) + .bindTo(cast); + this.rtype = rtype; + this.throwMode = throwMode; + this.throwableClass = thrown.getClass(); + switch (throwMode) { + case NOTHING: + this.thrown = null; + break; + case ADAPTER: + case UNCAUGHT: + this.thrown = new Error("do not catch this"); + break; + default: + this.thrown = thrown; + } + + MethodHandle throwOrReturn = THROW_OR_RETURN; + if (throwMode == ThrowMode.ADAPTER) { + MethodHandle fakeIdentity = FAKE_IDENTITY.bindTo(this); + for (int i = 0; i < 10; ++i) { + throwOrReturn = MethodHandles.filterReturnValue( + throwOrReturn, fakeIdentity); + } + } + thrower = throwOrReturn.asType(MethodType.genericMethodType(2)); + } + + private static Void noop(Object x) { + return null; + } + + private static PartialConstructor create( + Class rtype, Function cast) { + return (t, u) -> () -> { + try { + return new TestCase<>(rtype, cast, t, u); + } catch (NoSuchMethodException | IllegalAccessException e) { + throw new Error(e); + } + }; + } + + private static + Object throwOrReturn(Object normal, T exception) throws T { + if (exception != null) { + Helper.called("throwOrReturn/throw", normal, exception); + throw exception; + } + Helper.called("throwOrReturn/normal", normal, exception); + return normal; + } + + private static + Object catcher(Object o) { + Helper.called("catcher", o); + return o; + } + + public MethodHandle filter(MethodHandle target) { + return MethodHandles.filterReturnValue(target, filter); + } + + public MethodHandle getCatcher(List> classes) { + return MethodHandles.filterReturnValue(Helper.AS_LIST.asType( + MethodType.methodType(Object.class, classes)), + CATCHER + ); + } + + @Override + public String toString() { + return "TestCase{" + + "rtype=" + rtype + + ", throwMode=" + throwMode + + ", throwableClass=" + throwableClass + + '}'; + } + + public String callName() { + return "throwOrReturn/" + + (throwMode == ThrowMode.NOTHING + ? "normal" + : "throw"); + } + + public void assertReturn(Object returned, Object arg0, Object arg1, + int catchDrops, Object... args) { + int lag = 0; + if (throwMode == ThrowMode.CAUGHT) { + lag = 1; + } + Helper.assertCalled(lag, callName(), arg0, arg1); + + if (throwMode == ThrowMode.NOTHING) { + assertEQ(cast.apply(arg0), returned); + } else if (throwMode == ThrowMode.CAUGHT) { + List catchArgs = new ArrayList<>(Arrays.asList(args)); + // catcher receives an initial subsequence of target arguments: + catchArgs.subList(args.length - catchDrops, args.length).clear(); + // catcher also receives the exception, prepended: + catchArgs.add(0, thrown); + Helper.assertCalled("catcher", catchArgs); + assertEQ(cast.apply(catchArgs), returned); + } + Asserts.assertEQ(0, fakeIdentityCount); + } + + private void assertEQ(T t, Object returned) { + if (rtype.isArray()) { + Asserts.assertEQ(t.getClass(), returned.getClass()); + int n = Array.getLength(t); + Asserts.assertEQ(n, Array.getLength(returned)); + for (int i = 0; i < n; ++i) { + Asserts.assertEQ(Array.get(t, i), Array.get(returned, i)); + } + } else { + Asserts.assertEQ(t, returned); + } + } + + private Object fakeIdentity(Object x) { + System.out.println("should throw through this!"); + ++fakeIdentityCount; + return x; + } + + public void assertCatch(Throwable ex) { + try { + Asserts.assertSame(thrown, ex, + "must get the out-of-band exception"); + } catch (Throwable t) { + ex.printStackTrace(); + } + } + + public interface PartialConstructor + extends BiFunction> { + } +} diff --git a/jdk/test/java/lang/invoke/MethodHandlesTest.java b/jdk/test/java/lang/invoke/MethodHandlesTest.java index a16adc236d9..d607e06aad2 100644 --- a/jdk/test/java/lang/invoke/MethodHandlesTest.java +++ b/jdk/test/java/lang/invoke/MethodHandlesTest.java @@ -2405,108 +2405,6 @@ public class MethodHandlesTest { } } - @Test - public void testCatchException() throws Throwable { - if (CAN_SKIP_WORKING) return; - startTest("catchException"); - for (int nargs = 0; nargs < 40; nargs++) { - if (CAN_TEST_LIGHTLY && nargs > 11) break; - for (int throwMode = 0; throwMode < THROW_MODE_LIMIT; throwMode++) { - testCatchException(int.class, new ClassCastException("testing"), throwMode, nargs); - if (CAN_TEST_LIGHTLY && nargs > 3) continue; - testCatchException(void.class, new java.io.IOException("testing"), throwMode, nargs); - testCatchException(String.class, new LinkageError("testing"), throwMode, nargs); - } - } - } - - static final int THROW_NOTHING = 0, THROW_CAUGHT = 1, THROW_UNCAUGHT = 2, THROW_THROUGH_ADAPTER = 3, THROW_MODE_LIMIT = 4; - - void testCatchException(Class returnType, Throwable thrown, int throwMode, int nargs) throws Throwable { - testCatchException(returnType, thrown, throwMode, nargs, 0); - if (nargs <= 5 || nargs % 10 == 3) { - for (int catchDrops = 1; catchDrops <= nargs; catchDrops++) - testCatchException(returnType, thrown, throwMode, nargs, catchDrops); - } - } - - private static - Object throwOrReturn(Object normal, T exception) throws T { - if (exception != null) { - called("throwOrReturn/throw", normal, exception); - throw exception; - } - called("throwOrReturn/normal", normal, exception); - return normal; - } - private int fakeIdentityCount; - private Object fakeIdentity(Object x) { - System.out.println("should throw through this!"); - fakeIdentityCount++; - return x; - } - - void testCatchException(Class returnType, Throwable thrown, int throwMode, int nargs, int catchDrops) throws Throwable { - countTest(); - if (verbosity >= 3) - System.out.println("catchException rt="+returnType+" throw="+throwMode+" nargs="+nargs+" drops="+catchDrops); - Class exType = thrown.getClass(); - if (throwMode > THROW_CAUGHT) thrown = new UnsupportedOperationException("do not catch this"); - MethodHandle throwOrReturn - = PRIVATE.findStatic(MethodHandlesTest.class, "throwOrReturn", - MethodType.methodType(Object.class, Object.class, Throwable.class)); - if (throwMode == THROW_THROUGH_ADAPTER) { - MethodHandle fakeIdentity - = PRIVATE.findVirtual(MethodHandlesTest.class, "fakeIdentity", - MethodType.methodType(Object.class, Object.class)).bindTo(this); - for (int i = 0; i < 10; i++) - throwOrReturn = MethodHandles.filterReturnValue(throwOrReturn, fakeIdentity); - } - int nargs1 = Math.max(2, nargs); - MethodHandle thrower = throwOrReturn.asType(MethodType.genericMethodType(2)); - thrower = addTrailingArgs(thrower, nargs, Object.class); - int catchArgc = 1 + nargs - catchDrops; - MethodHandle catcher = varargsList(catchArgc).asType(MethodType.genericMethodType(catchArgc)); - Object[] args = randomArgs(nargs, Object.class); - Object arg0 = MISSING_ARG; - Object arg1 = (throwMode == THROW_NOTHING) ? (Throwable) null : thrown; - if (nargs > 0) arg0 = args[0]; - if (nargs > 1) args[1] = arg1; - assertEquals(nargs1, thrower.type().parameterCount()); - if (nargs < nargs1) { - Object[] appendArgs = { arg0, arg1 }; - appendArgs = Arrays.copyOfRange(appendArgs, nargs, nargs1); - thrower = MethodHandles.insertArguments(thrower, nargs, appendArgs); - } - assertEquals(nargs, thrower.type().parameterCount()); - MethodHandle target = MethodHandles.catchException(thrower, exType, catcher); - assertEquals(thrower.type(), target.type()); - assertEquals(nargs, target.type().parameterCount()); - //System.out.println("catching with "+target+" : "+throwOrReturn); - Object returned; - try { - returned = target.invokeWithArguments(args); - } catch (Throwable ex) { - assertSame("must get the out-of-band exception", thrown, ex); - if (throwMode <= THROW_CAUGHT) - assertEquals(THROW_UNCAUGHT, throwMode); - returned = ex; - } - assertCalled("throwOrReturn/"+(throwMode == THROW_NOTHING ? "normal" : "throw"), arg0, arg1); - //System.out.println("return from "+target+" : "+returned); - if (throwMode == THROW_NOTHING) { - assertSame(arg0, returned); - } else if (throwMode == THROW_CAUGHT) { - List catchArgs = new ArrayList<>(Arrays.asList(args)); - // catcher receives an initial subsequence of target arguments: - catchArgs.subList(nargs - catchDrops, nargs).clear(); - // catcher also receives the exception, prepended: - catchArgs.add(0, thrown); - assertEquals(catchArgs, returned); - } - assertEquals(0, fakeIdentityCount); - } - @Test public void testThrowException() throws Throwable { if (CAN_SKIP_WORKING) return; diff --git a/jdk/test/java/lang/ref/EarlyTimeout.java b/jdk/test/java/lang/ref/EarlyTimeout.java index d33b46bbb48..cbbc269ad90 100644 --- a/jdk/test/java/lang/ref/EarlyTimeout.java +++ b/jdk/test/java/lang/ref/EarlyTimeout.java @@ -37,7 +37,7 @@ import java.util.concurrent.CountDownLatch; /** * In order to demonstrate the issue we make several threads (two appears to be sufficient) * to block in ReferenceQueue#remove(timeout) at the same time. - * Then, we force a reference to be enqueued by setting its referent to null and calling System.gs(). + * Then, we force a reference to be enqueued by setting its referent to null and calling System.gc(). * One of the threads gets the reference returned from the remove(). * The other threads get null: * 1) with bug: this may happen before the specified timeout is elapsed, @@ -63,7 +63,10 @@ public class EarlyTimeout extends Thread { threads[i] = new EarlyTimeout(); threads[i].start(); } + // The main thread waits until the threads has started and give it a chance + // for the threads to block on the queue.remove(TIMEOUT) call startedSignal.await(); + Thread.sleep(TIMEOUT / 2); referent = null; System.gc(); for (EarlyTimeout thread : threads) { @@ -82,7 +85,7 @@ public class EarlyTimeout extends Thread { nonNullRefCount++; } } - if (nonNullRefCount != 1) { + if (nonNullRefCount > 1) { throw new RuntimeException("more than one references were removed from queue"); } } diff --git a/jdk/test/java/net/NetworkInterface/Test.java b/jdk/test/java/net/NetworkInterface/Test.java index 66ecbed5631..6db3079992d 100644 --- a/jdk/test/java/net/NetworkInterface/Test.java +++ b/jdk/test/java/net/NetworkInterface/Test.java @@ -30,6 +30,7 @@ import java.net.InetAddress; import java.util.Enumeration; public class Test { + static final boolean isWindows = System.getProperty("os.name").startsWith("Windows"); public static void main(String args[]) throws Exception { @@ -38,6 +39,11 @@ public class Test { while (nifs.hasMoreElements()) { NetworkInterface ni = (NetworkInterface)nifs.nextElement(); + //JDK-8038276: Should not test on Windows with Teredo Tunneling Pseudo-Interface + String dName = ni.getDisplayName(); + if (isWindows && dName != null && dName.contains("Teredo")) + continue; + String name = ni.getName(); System.out.println("\n" + name); diff --git a/jdk/test/java/net/ProxySelector/B8035158.java b/jdk/test/java/net/ProxySelector/B8035158.java new file mode 100644 index 00000000000..bc498923d0f --- /dev/null +++ b/jdk/test/java/net/ProxySelector/B8035158.java @@ -0,0 +1,260 @@ +/* + * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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 8035158 + * @run main/othervm B8035158 + */ + +import java.net.Proxy; +import java.net.ProxySelector; +import java.net.URI; +import java.util.*; +import java.util.concurrent.Callable; + +public class B8035158 { + + public static void main(String[] args) { + for (TestCase t : emptyNonProxiesHosts()) t.run(); + for (TestCase t : nonEmptyNonProxiesHosts()) t.run(); + for (TestCase t : misc()) t.run(); + } + + // Setting http.nonProxyHosts to an empty string has an effect of + // not including default hosts to the list of exceptions + // (i.e. if you want everything to be connected directly rather than + // through proxy, you should set this property to an empty string) + private static Collection emptyNonProxiesHosts() { + List tests = new LinkedList<>(); + String[] loopbacks = {"localhost", "[::1]", "[::0]", "0.0.0.0", + "127.0.0.0", "127.0.0.1", "127.0.1.0", "127.0.1.1", + "127.1.0.0", "127.1.0.1", "127.1.1.0", "127.1.1.1"}; + Map properties = new HashMap<>(); + properties.put("http.proxyHost", "http://proxy.example.com"); + properties.put("http.nonProxyHosts", ""); + for (String s : loopbacks) { + tests.add(new TestCase(properties, "http://" + s, true)); + } + return tests; + } + + // No matter what is set into the http.nonProxyHosts (as far as it is not + // an empty string) loopback address aliases must be always connected + // directly + private static Collection nonEmptyNonProxiesHosts() { + List tests = new LinkedList<>(); + String[] nonProxyHosts = { + "google.com", + "localhost", "[::1]", "[::0]", "0.0.0.0", + "127.0.0.0", "127.0.0.1", "127.0.1.0", "127.0.1.1", + "127.1.0.0", "127.1.0.1", "127.1.1.0", "127.1.1.1"}; + String[] loopbacks = {"localhost", "[::1]", "[::0]", "0.0.0.0", + "127.0.0.0", "127.0.0.1", "127.0.1.0", "127.0.1.1", + "127.1.0.0", "127.1.0.1", "127.1.1.0", "127.1.1.1"}; + for (String h : nonProxyHosts) { + for (String s : loopbacks) { + Map properties = new HashMap<>(); + properties.put("http.proxyHost", "http://proxy.example.com"); + properties.put("http.nonProxyHosts", h); + tests.add(new TestCase(properties, "http://" + s, false)); + } + } + return tests; + } + + // unsorted tests + private static Collection misc() { + List t = new LinkedList<>(); + t.add(new TestCase("oracle.com", "http://137.254.16.101", true)); + t.add(new TestCase("google.com", "http://74.125.200.101", true)); + + t.add(new TestCase("google.com|google.ie", "http://google.co.uk", + true)); + t.add(new TestCase("google.com|google.ie", "http://google.com", + false)); + t.add(new TestCase("google.com|google.ie", "http://google.ie", + false)); + + t.add(new TestCase("google.com|bing.com|yahoo.com", + "http://127.0.0.1", false)); + t.add(new TestCase("google.com|bing.com|yahoo.com", + "http://google.com", false)); + t.add(new TestCase("google.com|bing.com|yahoo.com", + "http://bing.com", false)); + t.add(new TestCase("google.com|bing.com|yahoo.com", + "http://yahoo.com", false)); + + t.add(new TestCase("google.com|bing.com", "http://google.com", false)); + t.add(new TestCase("google.com|bing.com", "http://bing.com", false)); + t.add(new TestCase("google.com|bing.com", "http://yahoo.com", + true)); + t.add(new TestCase("google.com|bing.co*", "http://google.com", false)); + t.add(new TestCase("google.com|bing.co*", "http://bing.com", false)); + t.add(new TestCase("google.com|bing.co*", "http://yahoo.com", + true)); + t.add(new TestCase("google.com|*ing.com", "http://google.com", false)); + t.add(new TestCase("google.com|*ing.com", "http://bing.com", false)); + t.add(new TestCase("google.com|*ing.com", "http://yahoo.com", + true)); + t.add(new TestCase("google.co*|bing.com", "http://google.com", false)); + t.add(new TestCase("google.co*|bing.com", "http://bing.com", false)); + t.add(new TestCase("google.co*|bing.com", "http://yahoo.com", + true)); + t.add(new TestCase("google.co*|bing.co*", "http://google.com", false)); + t.add(new TestCase("google.co*|bing.co*", "http://bing.com", false)); + t.add(new TestCase("google.co*|bing.co*", "http://yahoo.com", + true)); + t.add(new TestCase("google.co*|*ing.com", "http://google.com", false)); + t.add(new TestCase("google.co*|*ing.com", "http://bing.com", false)); + t.add(new TestCase("google.co*|*ing.com", "http://yahoo.com", + true)); + t.add(new TestCase("*oogle.com|bing.com", "http://google.com", false)); + t.add(new TestCase("*oogle.com|bing.com", "http://bing.com", false)); + t.add(new TestCase("*oogle.com|bing.com", "http://yahoo.com", + true)); + t.add(new TestCase("*oogle.com|bing.co*", "http://google.com", false)); + t.add(new TestCase("*oogle.com|bing.co*", "http://bing.com", false)); + t.add(new TestCase("*oogle.com|bing.co*", "http://yahoo.com", + true)); + t.add(new TestCase("*oogle.com|*ing.com", "http://google.com", false)); + t.add(new TestCase("*oogle.com|*ing.com", "http://bing.com", false)); + t.add(new TestCase("*oogle.com|*ing.com", "http://yahoo.com", + true)); + + t.add(new TestCase("google.com|bing.com|yahoo.com", "http://google.com", false)); + t.add(new TestCase("google.com|bing.com|yahoo.com", "http://bing.com", false)); + t.add(new TestCase("google.com|bing.com|yahoo.com", "http://yahoo.com", false)); + t.add(new TestCase("google.com|bing.com|yahoo.com", + "http://duckduckgo.com", true)); + + t.add(new TestCase("p-proxy.com", "http://p-proxy.com", false)); + t.add(new TestCase("google.co*|google.ie", "http://google.co.uk", + false)); + + t.add(new TestCase("*oracle.com", "http://my.oracle.com", false)); + t.add(new TestCase("google.com|bing.com|yahoo.com", "http://127.0.0.1", false)); + t.add(new TestCase("google.com|bing.com|yahoo.com", "http://yahoo.com", false)); + + // example from + // http://docs.oracle.com/javase/7/docs/technotes/guides/net/proxies.html + t.add(new TestCase("localhost|host.example.com", "http://localhost", + false)); + t.add(new TestCase("localhost|host.example.com", + "http://host.example.com", false)); + t.add(new TestCase("localhost|host.example.com", + "http://google.com", true)); + return t; + } + + + private static T withSystemPropertiesSet( + Map localProperties, + Callable code) { + Map backup = new HashMap<>(); + try { + backupAndSetProperties(localProperties, backup); + return code.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + restoreProperties(backup); + } + } + + private static void backupAndSetProperties( + Map localProperties, + Map oldProperties) { + for (Map.Entry e : localProperties.entrySet()) { + String oldValue = System.setProperty(e.getKey(), e.getValue()); + oldProperties.put(e.getKey(), oldValue); + } + } + + private static void restoreProperties(Map oldProperties) { + for (Map.Entry e : oldProperties.entrySet()) { + String oldValue = e.getValue(); + String key = e.getKey(); + if (oldValue == null) + System.getProperties().remove(key); + else + System.setProperty(key, oldValue); + } + } + + private static class TestCase { + + final Map localProperties; + final String urlhost; + final boolean expectedProxying; + + TestCase(String nonProxyHosts, String urlhost, + boolean expectedProxying) { + this(nonProxyHosts, "proxy.example.com", urlhost, + expectedProxying); + } + + TestCase(String nonProxyHosts, String proxyHost, String urlhost, + boolean expectedProxying) { + this(new HashMap() { + { + put("http.nonProxyHosts", nonProxyHosts); + put("http.proxyHost", proxyHost); + } + }, urlhost, expectedProxying); + } + + TestCase(Map localProperties, String urlhost, + boolean expectedProxying) { + this.localProperties = localProperties; + this.urlhost = urlhost; + this.expectedProxying = expectedProxying; + } + + void run() { + System.out.printf("urlhost=%s properties=%s: proxied? %s%n", + urlhost, localProperties, expectedProxying); + + List proxies = withSystemPropertiesSet(localProperties, + () -> ProxySelector.getDefault().select( + URI.create(urlhost)) + ); + + verify(proxies); + } + + void verify(List proxies) { + + boolean actualProxying = !(proxies.size() == 1 && + proxies.get(0).type() == Proxy.Type.DIRECT); + + if (actualProxying != expectedProxying) + throw new AssertionError(String.format( + "Expected %s connection for %s (given " + + "properties=%s). Here's the list of proxies " + + "returned: %s", + expectedProxying ? "proxied" : "direct", urlhost, + localProperties, proxies + )); + } + } +} diff --git a/jdk/test/java/net/Socket/asyncClose/AsyncClose.java b/jdk/test/java/net/Socket/asyncClose/AsyncClose.java index db9dddf791d..4de5d4851d6 100644 --- a/jdk/test/java/net/Socket/asyncClose/AsyncClose.java +++ b/jdk/test/java/net/Socket/asyncClose/AsyncClose.java @@ -21,15 +21,17 @@ * questions. */ +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import static java.util.concurrent.CompletableFuture.*; + /* * @test * @bug 4344135 * @summary Check that {Socket,ServerSocket,DatagramSocket}.close will * cause any thread blocked on the socket to throw a SocketException. - * @run main/timeout=60 AsyncClose */ -import java.net.*; -import java.io.*; public class AsyncClose { @@ -37,34 +39,35 @@ public class AsyncClose { AsyncCloseTest tests[] = { new Socket_getInputStream_read(), - new Socket_getInputStream_read(5000), + new Socket_getInputStream_read(20000), new Socket_getOutputStream_write(), new DatagramSocket_receive(), - new DatagramSocket_receive(5000), + new DatagramSocket_receive(20000), new ServerSocket_accept(), - new ServerSocket_accept(5000), + new ServerSocket_accept(20000), }; int failures = 0; - for (int i=0; i> cfs = new ArrayList<>(); + for (AsyncCloseTest test : tests) + cfs.add( supplyAsync(() -> test.go())); + + for (CompletableFuture cf : cfs) { + AsyncCloseTest test = cf.get(); System.out.println("******************************"); - System.out.println("Test: " + tst.description()); - - if (tst.go()) { + System.out.println("Test: " + test.description()); + if (test.hasPassed()) { System.out.println("Passed."); } else { - System.out.println("Failed: " + tst.failureReason()); + System.out.println("Failed: " + test.failureReason()); failures++; } System.out.println(""); - } - if (failures > 0) { + if (failures > 0) throw new Exception(failures + " sub-tests failed - see log."); - } } } diff --git a/jdk/test/java/net/Socket/asyncClose/AsyncCloseTest.java b/jdk/test/java/net/Socket/asyncClose/AsyncCloseTest.java index ef6fc43dd99..e7fd6fc5979 100644 --- a/jdk/test/java/net/Socket/asyncClose/AsyncCloseTest.java +++ b/jdk/test/java/net/Socket/asyncClose/AsyncCloseTest.java @@ -29,11 +29,22 @@ public abstract class AsyncCloseTest { public abstract String description(); - public abstract boolean go() throws Exception; + public abstract AsyncCloseTest go(); + public synchronized boolean hasPassed() { + return passed; + } - protected synchronized void failed(String reason) { - this.reason = reason; + protected synchronized AsyncCloseTest passed() { + if (reason == null) + passed = true; + return this; + } + + protected synchronized AsyncCloseTest failed(String r) { + passed = false; + reason = r; + return this; } public synchronized String failureReason() { @@ -48,7 +59,7 @@ public abstract class AsyncCloseTest { return closed; } + private boolean passed; private String reason; private boolean closed; - } diff --git a/jdk/test/java/net/Socket/asyncClose/DatagramSocket_receive.java b/jdk/test/java/net/Socket/asyncClose/DatagramSocket_receive.java index b35ebdff8ed..48a842e30d2 100644 --- a/jdk/test/java/net/Socket/asyncClose/DatagramSocket_receive.java +++ b/jdk/test/java/net/Socket/asyncClose/DatagramSocket_receive.java @@ -26,20 +26,25 @@ * throws a SocketException if the socket is asynchronously closed. */ import java.net.*; +import java.util.concurrent.CountDownLatch; public class DatagramSocket_receive extends AsyncCloseTest implements Runnable { - DatagramSocket s; - int timeout = 0; + private final DatagramSocket s; + private final int timeout; + private final CountDownLatch latch; - public DatagramSocket_receive() { + public DatagramSocket_receive() throws SocketException { + this(0); } - public DatagramSocket_receive(int timeout) { + public DatagramSocket_receive(int timeout) throws SocketException { this.timeout = timeout; + latch = new CountDownLatch(1); + s = new DatagramSocket(); } public String description() { - String s = "DatagramSocket.receive"; + String s = "DatagramSocket.receive(DatagramPacket)"; if (timeout > 0) { s += " (timeout specified)"; } @@ -47,46 +52,45 @@ public class DatagramSocket_receive extends AsyncCloseTest implements Runnable { } public void run() { - DatagramPacket p; try { - byte b[] = new byte[1024]; - p = new DatagramPacket(b, b.length); - + DatagramPacket p = new DatagramPacket(b, b.length); if (timeout > 0) { s.setSoTimeout(timeout); } - } catch (Exception e) { - failed(e.getMessage()); - return; - } - - try { + latch.countDown(); s.receive(p); + failed("DatagramSocket.receive(DatagramPacket) returned unexpectly!!"); } catch (SocketException se) { - closed(); + if (latch.getCount() != 1) { + closed(); + } } catch (Exception e) { failed(e.getMessage()); + } finally { + if (latch.getCount() == 1) { + latch.countDown(); + } } } - public boolean go() throws Exception { - s = new DatagramSocket(); + public AsyncCloseTest go() { + try { + Thread thr = new Thread(this); + thr.start(); + latch.await(); + Thread.sleep(5000); //sleep, so receive(DatagramPacket) can block + s.close(); + thr.join(); - Thread thr = new Thread(this); - thr.start(); - - Thread.currentThread().sleep(1000); - - s.close(); - - Thread.currentThread().sleep(1000); - - if (isClosed()) { - return true; - } else { - failed("DatagramSocket.receive wasn't preempted"); - return false; + if (isClosed()) { + return passed(); + } else { + return failed("DatagramSocket.receive(DatagramPacket) wasn't preempted"); + } + } catch (Exception x) { + failed(x.getMessage()); + throw new RuntimeException(x); } } } diff --git a/jdk/test/java/net/Socket/asyncClose/ServerSocket_accept.java b/jdk/test/java/net/Socket/asyncClose/ServerSocket_accept.java index 07fbcc95ae5..0461ba58f8a 100644 --- a/jdk/test/java/net/Socket/asyncClose/ServerSocket_accept.java +++ b/jdk/test/java/net/Socket/asyncClose/ServerSocket_accept.java @@ -25,17 +25,23 @@ * Tests that a thread blocked in ServerSocket.accept * throws a SocketException if the socket is asynchronously closed. */ +import java.io.IOException; import java.net.*; +import java.util.concurrent.CountDownLatch; public class ServerSocket_accept extends AsyncCloseTest implements Runnable { - ServerSocket ss; - int timeout = 0; + private final ServerSocket ss; + private final int timeout; + private final CountDownLatch latch; - public ServerSocket_accept() { + public ServerSocket_accept() throws IOException { + this(0); } - public ServerSocket_accept(int timeout) { + public ServerSocket_accept(int timeout) throws IOException { this.timeout = timeout; + latch = new CountDownLatch(1); + ss = new ServerSocket(0); } public String description() { @@ -48,7 +54,9 @@ public class ServerSocket_accept extends AsyncCloseTest implements Runnable { public void run() { try { + latch.countDown(); Socket s = ss.accept(); + failed("ServerSocket.accept() returned unexpectly!!"); } catch (SocketException se) { closed(); } catch (Exception e) { @@ -56,23 +64,23 @@ public class ServerSocket_accept extends AsyncCloseTest implements Runnable { } } - public boolean go() throws Exception { - ss = new ServerSocket(0); + public AsyncCloseTest go(){ + try { + Thread thr = new Thread(this); + thr.start(); + latch.await(); + Thread.sleep(5000); //sleep, so ServerSocket.accept() can block + ss.close(); + thr.join(); - Thread thr = new Thread(this); - thr.start(); - - Thread.currentThread().sleep(1000); - - ss.close(); - - Thread.currentThread().sleep(1000); - - if (isClosed()) { - return true; - } else { - failed("ServerSocket.accept() wasn't preempted"); - return false; + if (isClosed()) { + return passed(); + } else { + return failed("ServerSocket.accept() wasn't preempted"); + } + } catch (Exception x) { + failed(x.getMessage()); + throw new RuntimeException(x); } } } diff --git a/jdk/test/java/net/Socket/asyncClose/Socket_getInputStream_read.java b/jdk/test/java/net/Socket/asyncClose/Socket_getInputStream_read.java index a4d76020cd2..25f85898583 100644 --- a/jdk/test/java/net/Socket/asyncClose/Socket_getInputStream_read.java +++ b/jdk/test/java/net/Socket/asyncClose/Socket_getInputStream_read.java @@ -27,16 +27,21 @@ */ import java.net.*; import java.io.*; +import java.util.concurrent.CountDownLatch; public class Socket_getInputStream_read extends AsyncCloseTest implements Runnable { - Socket s; - int timeout = 0; + private final Socket s; + private final int timeout; + private final CountDownLatch latch; public Socket_getInputStream_read() { + this(0); } public Socket_getInputStream_read(int timeout) { this.timeout = timeout; + latch = new CountDownLatch(1); + s = new Socket(); } public String description() { @@ -48,53 +53,48 @@ public class Socket_getInputStream_read extends AsyncCloseTest implements Runnab } public void run() { - InputStream in; - try { - in = s.getInputStream(); + InputStream in = s.getInputStream(); if (timeout > 0) { s.setSoTimeout(timeout); } - } catch (Exception e) { - failed(e.getMessage()); - return; - } - - try { + latch.countDown(); int n = in.read(); - failed("getInptuStream().read() returned unexpectly!!"); + failed("Socket.getInputStream().read() returned unexpectly!!"); } catch (SocketException se) { - closed(); + if (latch.getCount() != 1) { + closed(); + } } catch (Exception e) { failed(e.getMessage()); + } finally { + if (latch.getCount() == 1) { + latch.countDown(); + } } } - public boolean go() throws Exception { + public AsyncCloseTest go() { + try { + ServerSocket ss = new ServerSocket(0); + InetAddress lh = InetAddress.getLocalHost(); + s.connect( new InetSocketAddress(lh, ss.getLocalPort()) ); + Socket s2 = ss.accept(); + Thread thr = new Thread(this); + thr.start(); + latch.await(); + Thread.sleep(5000); //sleep, so Socket.getInputStream().read() can block + s.close(); + thr.join(); - ServerSocket ss = new ServerSocket(0); - - InetAddress lh = InetAddress.getLocalHost(); - s = new Socket(); - s.connect( new InetSocketAddress(lh, ss.getLocalPort()) ); - - Socket s2 = ss.accept(); - - Thread thr = new Thread(this); - thr.start(); - - Thread.currentThread().sleep(1000); - - s.close(); - - Thread.currentThread().sleep(1000); - - if (isClosed()) { - return true; - } else { - failed("getInputStream().read() wasn't preempted"); - return false; + if (isClosed()) { + return passed(); + } else { + return failed("Socket.getInputStream().read() wasn't preempted"); + } + } catch (Exception x) { + failed(x.getMessage()); + throw new RuntimeException(x); } - } } diff --git a/jdk/test/java/net/Socket/asyncClose/Socket_getOutputStream_write.java b/jdk/test/java/net/Socket/asyncClose/Socket_getOutputStream_write.java index 841861d919c..78cbf45014a 100644 --- a/jdk/test/java/net/Socket/asyncClose/Socket_getOutputStream_write.java +++ b/jdk/test/java/net/Socket/asyncClose/Socket_getOutputStream_write.java @@ -27,9 +27,16 @@ */ import java.net.*; import java.io.*; +import java.util.concurrent.CountDownLatch; public class Socket_getOutputStream_write extends AsyncCloseTest implements Runnable { - Socket s; + private final Socket s; + private final CountDownLatch latch; + + public Socket_getOutputStream_write() { + latch = new CountDownLatch(1); + s = new Socket(); + } public String description() { return "Socket.getOutputStream().write()"; @@ -38,40 +45,45 @@ public class Socket_getOutputStream_write extends AsyncCloseTest implements Runn public void run() { try { OutputStream out = s.getOutputStream(); + byte b[] = new byte[8192]; + latch.countDown(); for (;;) { - byte b[] = new byte[8192]; out.write(b); } } catch (SocketException se) { - closed(); + if (latch.getCount() != 1) { + closed(); + } } catch (Exception e) { failed(e.getMessage()); + } finally { + if (latch.getCount() == 1) { + latch.countDown(); + } } } - public boolean go() throws Exception { - ServerSocket ss = new ServerSocket(0); + public AsyncCloseTest go() { + try { + ServerSocket ss = new ServerSocket(0); + InetAddress lh = InetAddress.getLocalHost(); + s.connect( new InetSocketAddress(lh, ss.getLocalPort()) ); + Socket s2 = ss.accept(); + Thread thr = new Thread(this); + thr.start(); + latch.await(); + Thread.sleep(1000); + s.close(); + thr.join(); - InetAddress lh = InetAddress.getLocalHost(); - s = new Socket(); - s.connect( new InetSocketAddress(lh, ss.getLocalPort()) ); - - Socket s2 = ss.accept(); - - Thread thr = new Thread(this); - thr.start(); - - Thread.currentThread().sleep(2000); - - s.close(); - - Thread.currentThread().sleep(2000); - - if (isClosed()) { - return true; - } else { - failed("getOutputStream().write() wasn't preempted"); - return false; + if (isClosed()) { + return passed(); + } else { + return failed("Socket.getOutputStream().write() wasn't preempted"); + } + } catch (Exception x) { + failed(x.getMessage()); + throw new RuntimeException(x); } } } diff --git a/jdk/test/java/nio/channels/Selector/ChangingInterests.java b/jdk/test/java/nio/channels/Selector/ChangingInterests.java index 59f62100676..c3e1dbd0964 100644 --- a/jdk/test/java/nio/channels/Selector/ChangingInterests.java +++ b/jdk/test/java/nio/channels/Selector/ChangingInterests.java @@ -138,8 +138,10 @@ public class ChangingInterests { ServerSocketChannel.open().bind(new InetSocketAddress(0)); final SocketChannel sc = SocketChannel.open(); + sc.setOption(StandardSocketOptions.TCP_NODELAY, true); sc.connect(new InetSocketAddress(lh, ssc.socket().getLocalPort())); SocketChannel peer = ssc.accept(); + peer.setOption(StandardSocketOptions.TCP_NODELAY, true); sc.configureBlocking(false); diff --git a/jdk/test/java/nio/file/Path/PathOps.java b/jdk/test/java/nio/file/Path/PathOps.java index 865581c9273..f237f68ccaa 100644 --- a/jdk/test/java/nio/file/Path/PathOps.java +++ b/jdk/test/java/nio/file/Path/PathOps.java @@ -22,7 +22,7 @@ */ /* @test - * @bug 4313887 6838333 6925932 7006126 + * @bug 4313887 6838333 6925932 7006126 8037945 * @summary Unit test for java.nio.file.Path path operations */ @@ -899,6 +899,8 @@ public class PathOps { .normalize("foo"); test("/foo") .normalize("/foo"); + test("") + .normalize(""); test(".") .normalize(""); test("..") diff --git a/jdk/test/java/time/tck/java/time/TCKLocalTime.java b/jdk/test/java/time/tck/java/time/TCKLocalTime.java index 704533afca0..f79e8fc41f6 100644 --- a/jdk/test/java/time/tck/java/time/TCKLocalTime.java +++ b/jdk/test/java/time/tck/java/time/TCKLocalTime.java @@ -88,11 +88,10 @@ import static java.time.temporal.ChronoUnit.WEEKS; import static java.time.temporal.ChronoUnit.YEARS; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertSame; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; import java.time.Clock; import java.time.DateTimeException; import java.time.Duration; @@ -120,6 +119,7 @@ import java.time.temporal.TemporalQueries; import java.time.temporal.TemporalQuery; import java.time.temporal.TemporalUnit; import java.time.temporal.UnsupportedTemporalTypeException; +import java.time.temporal.ValueRange; import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; @@ -760,7 +760,7 @@ public class TCKLocalTime extends AbstractDateTimeTest { } //----------------------------------------------------------------------- - // with() + // with(TemporalAdjuster) //----------------------------------------------------------------------- @Test public void test_with_adjustment() { @@ -779,6 +779,331 @@ public class TCKLocalTime extends AbstractDateTimeTest { TEST_12_30_40_987654321.with((TemporalAdjuster) null); } + //----------------------------------------------------------------------- + // with(TemporalField, long) + //----------------------------------------------------------------------- + private long[] testPoints(long max) { + long[] points = new long[9]; + points[0] = 0; + points[1] = 1; + points[2] = 2; + points[3] = max / 7; + points[4] = (max / 7) * 2; + points[5] = (max / 2); + points[6] = (max / 7) * 6;; + points[7] = max - 2; + points[8] = max - 1; + return points; + } + + // Returns a {@code LocalTime} with the specified nano-of-second. + // The hour, minute and second will be unchanged. + @Test + public void test_with_longTemporalField_nanoOfSecond() { + for (long i : testPoints(1_000_000_000L)) { + LocalTime test = TEST_12_30_40_987654321.with(NANO_OF_SECOND, i); + assertEquals(test.get(NANO_OF_SECOND), i); + assertEquals(test.get(HOUR_OF_DAY), TEST_12_30_40_987654321.get(HOUR_OF_DAY)); + assertEquals(test.get(MINUTE_OF_HOUR), TEST_12_30_40_987654321.get(MINUTE_OF_HOUR)); + assertEquals(test.get(SECOND_OF_MINUTE), TEST_12_30_40_987654321.get(SECOND_OF_MINUTE)); + } + } + + // Returns a {@code LocalTime} with the specified nano-of-day. + // This completely replaces the time and is equivalent to {@link #ofNanoOfDay(long)}. + @Test + public void test_with_longTemporalField_nanoOfDay() { + for (long i : testPoints(86_400_000_000_000L)) { + LocalTime test = TEST_12_30_40_987654321.with(NANO_OF_DAY, i); + assertEquals(test, LocalTime.ofNanoOfDay(i)); + } + } + + // Returns a {@code LocalTime} with the nano-of-second replaced by the specified + // micro-of-second multiplied by 1,000. + // The hour, minute and second will be unchanged. + @Test + public void test_with_longTemporalField_microOfSecond() { + for (long i : testPoints(1_000_000L)) { + LocalTime test = TEST_12_30_40_987654321.with(MICRO_OF_SECOND, i); + assertEquals(test.get(NANO_OF_SECOND), i * 1_000); + assertEquals(test.get(HOUR_OF_DAY), TEST_12_30_40_987654321.get(HOUR_OF_DAY)); + assertEquals(test.get(MINUTE_OF_HOUR), TEST_12_30_40_987654321.get(MINUTE_OF_HOUR)); + assertEquals(test.get(SECOND_OF_MINUTE), TEST_12_30_40_987654321.get(SECOND_OF_MINUTE)); + } + } + + // Returns a {@code LocalTime} with the specified micro-of-day. + // This completely replaces the time and is equivalent to using {@link #ofNanoOfDay(long)} + // with the micro-of-day multiplied by 1,000. + @Test + public void test_with_longTemporalField_microOfDay() { + for (long i : testPoints(86_400_000_000L)) { + LocalTime test = TEST_12_30_40_987654321.with(MICRO_OF_DAY, i); + assertEquals(test, LocalTime.ofNanoOfDay(i * 1000)); + } + } + + // Returns a {@code LocalTime} with the nano-of-second replaced by the specified + // milli-of-second multiplied by 1,000,000. + // The hour, minute and second will be unchanged. + @Test + public void test_with_longTemporalField_milliOfSecond() { + for (long i : testPoints(1_000L)) { + LocalTime test = TEST_12_30_40_987654321.with(MILLI_OF_SECOND, i); + assertEquals(test.get(NANO_OF_SECOND), i * 1_000_000); + assertEquals(test.get(HOUR_OF_DAY), TEST_12_30_40_987654321.get(HOUR_OF_DAY)); + assertEquals(test.get(MINUTE_OF_HOUR), TEST_12_30_40_987654321.get(MINUTE_OF_HOUR)); + assertEquals(test.get(SECOND_OF_MINUTE), TEST_12_30_40_987654321.get(SECOND_OF_MINUTE)); + } + } + + // Returns a {@code LocalTime} with the specified milli-of-day. + // This completely replaces the time and is equivalent to using {@link #ofNanoOfDay(long)} + // with the milli-of-day multiplied by 1,000,000. + @Test + public void test_with_longTemporalField_milliOfDay() { + for (long i : testPoints(86_400_000L)) { + LocalTime test = TEST_12_30_40_987654321.with(MILLI_OF_DAY, i); + assertEquals(test, LocalTime.ofNanoOfDay(i * 1_000_000)); + } + } + + // Returns a {@code LocalTime} with the specified second-of-minute. + // The hour, minute and nano-of-second will be unchanged. + @Test + public void test_with_longTemporalField_secondOfMinute() { + for (long i : testPoints(60L)) { + LocalTime test = TEST_12_30_40_987654321.with(SECOND_OF_MINUTE, i); + assertEquals(test.get(SECOND_OF_MINUTE), i); + assertEquals(test.get(HOUR_OF_DAY), TEST_12_30_40_987654321.get(HOUR_OF_DAY)); + assertEquals(test.get(MINUTE_OF_HOUR), TEST_12_30_40_987654321.get(MINUTE_OF_HOUR)); + assertEquals(test.get(NANO_OF_SECOND), TEST_12_30_40_987654321.get(NANO_OF_SECOND)); + } + } + + // Returns a {@code LocalTime} with the specified second-of-day. + // The nano-of-second will be unchanged. + @Test + public void test_with_longTemporalField_secondOfDay() { + for (long i : testPoints(24 * 60 * 60)) { + LocalTime test = TEST_12_30_40_987654321.with(SECOND_OF_DAY, i); + assertEquals(test.get(SECOND_OF_DAY), i); + assertEquals(test.get(NANO_OF_SECOND), TEST_12_30_40_987654321.get(NANO_OF_SECOND)); + } + } + + // Returns a {@code LocalTime} with the specified minute-of-hour. + // The hour, second-of-minute and nano-of-second will be unchanged. + @Test + public void test_with_longTemporalField_minuteOfHour() { + for (long i : testPoints(60)) { + LocalTime test = TEST_12_30_40_987654321.with(MINUTE_OF_HOUR, i); + assertEquals(test.get(MINUTE_OF_HOUR), i); + assertEquals(test.get(HOUR_OF_DAY), TEST_12_30_40_987654321.get(HOUR_OF_DAY)); + assertEquals(test.get(SECOND_OF_MINUTE), TEST_12_30_40_987654321.get(SECOND_OF_MINUTE)); + assertEquals(test.get(NANO_OF_SECOND), TEST_12_30_40_987654321.get(NANO_OF_SECOND)); + } + } + + // Returns a {@code LocalTime} with the specified minute-of-day. + // The second-of-minute and nano-of-second will be unchanged. + @Test + public void test_with_longTemporalField_minuteOfDay() { + for (long i : testPoints(24 * 60)) { + LocalTime test = TEST_12_30_40_987654321.with(MINUTE_OF_DAY, i); + assertEquals(test.get(MINUTE_OF_DAY), i); + assertEquals(test.get(SECOND_OF_MINUTE), TEST_12_30_40_987654321.get(SECOND_OF_MINUTE)); + assertEquals(test.get(NANO_OF_SECOND), TEST_12_30_40_987654321.get(NANO_OF_SECOND)); + } + } + + // Returns a {@code LocalTime} with the specified hour-of-am-pm. + // The AM/PM, minute-of-hour, second-of-minute and nano-of-second will be unchanged. + @Test + public void test_with_longTemporalField_hourOfAmPm() { + for (int i = 0; i < 12; i++) { + LocalTime test = TEST_12_30_40_987654321.with(HOUR_OF_AMPM, i); + assertEquals(test.get(HOUR_OF_AMPM), i); + assertEquals(test.get(AMPM_OF_DAY), TEST_12_30_40_987654321.get(AMPM_OF_DAY)); + assertEquals(test.get(MINUTE_OF_HOUR), TEST_12_30_40_987654321.get(MINUTE_OF_HOUR)); + assertEquals(test.get(SECOND_OF_MINUTE), TEST_12_30_40_987654321.get(SECOND_OF_MINUTE)); + assertEquals(test.get(NANO_OF_SECOND), TEST_12_30_40_987654321.get(NANO_OF_SECOND)); + } + } + + // Returns a {@code LocalTime} with the specified clock-hour-of-am-pm. + // The AM/PM, minute-of-hour, second-of-minute and nano-of-second will be unchanged. + @Test + public void test_with_longTemporalField_clockHourOfAmPm() { + for (int i = 1; i <= 12; i++) { + LocalTime test = TEST_12_30_40_987654321.with(CLOCK_HOUR_OF_AMPM, i); + assertEquals(test.get(CLOCK_HOUR_OF_AMPM), i); + assertEquals(test.get(AMPM_OF_DAY), TEST_12_30_40_987654321.get(AMPM_OF_DAY)); + assertEquals(test.get(MINUTE_OF_HOUR), TEST_12_30_40_987654321.get(MINUTE_OF_HOUR)); + assertEquals(test.get(SECOND_OF_MINUTE), TEST_12_30_40_987654321.get(SECOND_OF_MINUTE)); + assertEquals(test.get(NANO_OF_SECOND), TEST_12_30_40_987654321.get(NANO_OF_SECOND)); + } + } + + // Returns a {@code LocalTime} with the specified hour-of-day. + // The minute-of-hour, second-of-minute and nano-of-second will be unchanged. + @Test + public void test_with_longTemporalField_hourOfDay() { + for (int i = 0; i < 24; i++) { + LocalTime test = TEST_12_30_40_987654321.with(HOUR_OF_DAY, i); + assertEquals(test.get(HOUR_OF_DAY), i); + assertEquals(test.get(MINUTE_OF_HOUR), TEST_12_30_40_987654321.get(MINUTE_OF_HOUR)); + assertEquals(test.get(SECOND_OF_MINUTE), TEST_12_30_40_987654321.get(SECOND_OF_MINUTE)); + assertEquals(test.get(NANO_OF_SECOND), TEST_12_30_40_987654321.get(NANO_OF_SECOND)); + } + } + + // Returns a {@code LocalTime} with the specified clock-hour-of-day. + // The minute-of-hour, second-of-minute and nano-of-second will be unchanged. + @Test + public void test_with_longTemporalField_clockHourOfDay() { + for (int i = 1; i <= 24; i++) { + LocalTime test = TEST_12_30_40_987654321.with(CLOCK_HOUR_OF_DAY, i); + assertEquals(test.get(CLOCK_HOUR_OF_DAY), i); + assertEquals(test.get(MINUTE_OF_HOUR), TEST_12_30_40_987654321.get(MINUTE_OF_HOUR)); + assertEquals(test.get(SECOND_OF_MINUTE), TEST_12_30_40_987654321.get(SECOND_OF_MINUTE)); + assertEquals(test.get(NANO_OF_SECOND), TEST_12_30_40_987654321.get(NANO_OF_SECOND)); + } + } + + // Returns a {@code LocalTime} with the specified AM/PM. + // The hour-of-am-pm, minute-of-hour, second-of-minute and nano-of-second will be unchanged. + @Test + public void test_with_longTemporalField_amPmOfDay() { + for (int i = 0; i <= 1; i++) { + LocalTime test = TEST_12_30_40_987654321.with(AMPM_OF_DAY, i); + assertEquals(test.get(AMPM_OF_DAY), i); + assertEquals(test.get(HOUR_OF_AMPM), TEST_12_30_40_987654321.get(HOUR_OF_AMPM)); + assertEquals(test.get(MINUTE_OF_HOUR), TEST_12_30_40_987654321.get(MINUTE_OF_HOUR)); + assertEquals(test.get(SECOND_OF_MINUTE), TEST_12_30_40_987654321.get(SECOND_OF_MINUTE)); + assertEquals(test.get(NANO_OF_SECOND), TEST_12_30_40_987654321.get(NANO_OF_SECOND)); + } + } + + // The supported fields behave as follows... + // In all cases, if the new value is outside the valid range of values for the field + // then a {@code DateTimeException} will be thrown. + @DataProvider(name = "withTemporalField_outOfRange") + Object[][] data_withTemporalField_outOfRange() { + return new Object[][] { + {NANO_OF_SECOND, time(0, 0, 0, 0), NANO_OF_SECOND.range().getMinimum() - 1}, + {NANO_OF_SECOND, time(0, 0, 0, 0), NANO_OF_SECOND.range().getMaximum() + 1}, + + {NANO_OF_DAY, time(0, 0, 0, 0), NANO_OF_DAY.range().getMinimum() - 1}, + {NANO_OF_DAY, time(0, 0, 0, 0), NANO_OF_DAY.range().getMaximum() + 1}, + + {MICRO_OF_SECOND, time(0, 0, 0, 0), MICRO_OF_SECOND.range().getMinimum() - 1}, + {MICRO_OF_SECOND, time(0, 0, 0, 0), MICRO_OF_SECOND.range().getMaximum() + 1}, + + {MICRO_OF_DAY, time(0, 0, 0, 0), MICRO_OF_DAY.range().getMinimum() - 1}, + {MICRO_OF_DAY, time(0, 0, 0, 0), MICRO_OF_DAY.range().getMaximum() + 1}, + + {MILLI_OF_SECOND, time(0, 0, 0, 0), MILLI_OF_SECOND.range().getMinimum() - 1}, + {MILLI_OF_SECOND, time(0, 0, 0, 0), MILLI_OF_SECOND.range().getMaximum() + 1}, + + {MILLI_OF_DAY, time(0, 0, 0, 0), MILLI_OF_DAY.range().getMinimum() - 1}, + {MILLI_OF_DAY, time(0, 0, 0, 0), MILLI_OF_DAY.range().getMaximum() + 1}, + + {SECOND_OF_MINUTE, time(0, 0, 0, 0), SECOND_OF_MINUTE.range().getMinimum() - 1}, + {SECOND_OF_MINUTE, time(0, 0, 0, 0), SECOND_OF_MINUTE.range().getMaximum() + 1}, + + {SECOND_OF_DAY, time(0, 0, 0, 0), SECOND_OF_DAY.range().getMinimum() - 1}, + {SECOND_OF_DAY, time(0, 0, 0, 0), SECOND_OF_DAY.range().getMaximum() + 1}, + + {MINUTE_OF_HOUR, time(0, 0, 0, 0), MINUTE_OF_HOUR.range().getMinimum() - 1}, + {MINUTE_OF_HOUR, time(0, 0, 0, 0), MINUTE_OF_HOUR.range().getMaximum() + 1}, + + {MINUTE_OF_DAY, time(0, 0, 0, 0), MINUTE_OF_DAY.range().getMinimum() - 1}, + {MINUTE_OF_DAY, time(0, 0, 0, 0), MINUTE_OF_DAY.range().getMaximum() + 1}, + + {HOUR_OF_AMPM, time(0, 0, 0, 0), HOUR_OF_AMPM.range().getMinimum() - 1}, + {HOUR_OF_AMPM, time(0, 0, 0, 0), HOUR_OF_AMPM.range().getMaximum() + 1}, + + {CLOCK_HOUR_OF_AMPM, time(0, 0, 0, 0), CLOCK_HOUR_OF_AMPM.range().getMinimum() - 1}, + {CLOCK_HOUR_OF_AMPM, time(0, 0, 0, 0), CLOCK_HOUR_OF_AMPM.range().getMaximum() + 1}, + + {HOUR_OF_DAY, time(0, 0, 0, 0), HOUR_OF_DAY.range().getMinimum() - 1}, + {HOUR_OF_DAY, time(0, 0, 0, 0), HOUR_OF_DAY.range().getMaximum() + 1}, + + {CLOCK_HOUR_OF_DAY, time(0, 0, 0, 0), CLOCK_HOUR_OF_DAY.range().getMinimum() - 1}, + {CLOCK_HOUR_OF_DAY, time(0, 0, 0, 0), CLOCK_HOUR_OF_DAY.range().getMaximum() + 1}, + + {AMPM_OF_DAY, time(0, 0, 0, 0), AMPM_OF_DAY.range().getMinimum() - 1}, + {AMPM_OF_DAY, time(0, 0, 0, 0), AMPM_OF_DAY.range().getMaximum() + 1}, + }; + } + + @Test(dataProvider = "withTemporalField_outOfRange") + public void test_with_longTemporalField_invalid(TemporalField field, LocalTime base, long newValue) { + try { + base.with(field, newValue); + fail("Field should not be allowed " + field); + } catch (DateTimeException ex) { + // expected + } + } + + // All other {@code ChronoField} instances will throw an {@code UnsupportedTemporalTypeException}. + @Test(expectedExceptions=UnsupportedTemporalTypeException.class) + public void test_with_longTemporalField_otherChronoField() { + TEST_12_30_40_987654321.with(ChronoField.DAY_OF_MONTH, 1); + } + + // If the field is not a {@code ChronoField}, then the result of this method + // is obtained by invoking {@code TemporalField.adjustInto(Temporal, long)} + // passing {@code this} as the argument. + @Test + public void test_with_longTemporalField_notChronoField() { + final LocalTime result = LocalTime.of(12, 30); + final LocalTime base = LocalTime.of(15, 45); + TemporalField field = new TemporalField() { + public ValueRange rangeRefinedBy(TemporalAccessor temporal) { + throw new UnsupportedOperationException(); + } + public ValueRange range() { + return null; + } + public boolean isTimeBased() { + throw new UnsupportedOperationException(); + } + public boolean isSupportedBy(TemporalAccessor temporal) { + throw new UnsupportedOperationException(); + } + public boolean isDateBased() { + throw new UnsupportedOperationException(); + } + public TemporalUnit getRangeUnit() { + throw new UnsupportedOperationException(); + } + public long getFrom(TemporalAccessor temporal) { + throw new UnsupportedOperationException(); + } + public TemporalUnit getBaseUnit() { + throw new UnsupportedOperationException(); + } + public R adjustInto(R temporal, long newValue) { + assertEquals(temporal, base); + assertEquals(newValue, 12L); + @SuppressWarnings("unchecked") + R r = (R) result; + return r; + } + }; + LocalTime test = base.with(field, 12L); + assertSame(test, result); + } + + @Test(expectedExceptions=NullPointerException.class) + public void test_with_longTemporalField_null() { + TEST_12_30_40_987654321.with((TemporalField) null, 1); + } + //----------------------------------------------------------------------- // withHour() //----------------------------------------------------------------------- diff --git a/jdk/test/java/time/tck/java/time/format/TCKDateTimeFormatterBuilder.java b/jdk/test/java/time/tck/java/time/format/TCKDateTimeFormatterBuilder.java index 59d2ca15b98..c5a017c911e 100644 --- a/jdk/test/java/time/tck/java/time/format/TCKDateTimeFormatterBuilder.java +++ b/jdk/test/java/time/tck/java/time/format/TCKDateTimeFormatterBuilder.java @@ -60,11 +60,14 @@ package tck.java.time.format; import static java.time.temporal.ChronoField.DAY_OF_MONTH; +import static java.time.temporal.ChronoField.HOUR_OF_DAY; import static java.time.temporal.ChronoField.MINUTE_OF_HOUR; import static java.time.temporal.ChronoField.MONTH_OF_YEAR; +import static java.time.temporal.ChronoField.NANO_OF_SECOND; import static java.time.temporal.ChronoField.YEAR; import static org.testng.Assert.assertEquals; +import java.text.ParsePosition; import java.time.LocalDate; import java.time.YearMonth; import java.time.ZoneOffset; @@ -73,6 +76,7 @@ import java.time.format.DateTimeFormatterBuilder; import java.time.format.SignStyle; import java.time.format.TextStyle; import java.time.temporal.Temporal; +import java.time.temporal.TemporalAccessor; import java.util.HashMap; import java.util.Locale; import java.util.Map; @@ -728,4 +732,150 @@ public class TCKDateTimeFormatterBuilder { return LocalDate.of(y, m, d); } + //----------------------------------------------------------------------- + @Test + public void test_adjacent_strict_firstFixedWidth() throws Exception { + // succeeds because both number elements are fixed width + DateTimeFormatter f = builder.appendValue(HOUR_OF_DAY, 2).appendValue(MINUTE_OF_HOUR, 2).appendLiteral('9').toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("12309", pp); + assertEquals(pp.getErrorIndex(), -1); + assertEquals(pp.getIndex(), 5); + assertEquals(parsed.getLong(HOUR_OF_DAY), 12L); + assertEquals(parsed.getLong(MINUTE_OF_HOUR), 30L); + } + + @Test + public void test_adjacent_strict_firstVariableWidth_success() throws Exception { + // succeeds greedily parsing variable width, then fixed width, to non-numeric Z + DateTimeFormatter f = builder.appendValue(HOUR_OF_DAY).appendValue(MINUTE_OF_HOUR, 2).appendLiteral('Z').toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("12309Z", pp); + assertEquals(pp.getErrorIndex(), -1); + assertEquals(pp.getIndex(), 6); + assertEquals(parsed.getLong(HOUR_OF_DAY), 123L); + assertEquals(parsed.getLong(MINUTE_OF_HOUR), 9L); + } + + @Test + public void test_adjacent_strict_firstVariableWidth_fails() throws Exception { + // fails because literal is a number and variable width parse greedily absorbs it + DateTimeFormatter f = builder.appendValue(HOUR_OF_DAY).appendValue(MINUTE_OF_HOUR, 2).appendLiteral('9').toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("12309", pp); + assertEquals(pp.getErrorIndex(), 5); + assertEquals(parsed, null); + } + + @Test + public void test_adjacent_lenient() throws Exception { + // succeeds because both number elements are fixed width even in lenient mode + DateTimeFormatter f = builder.parseLenient().appendValue(HOUR_OF_DAY, 2).appendValue(MINUTE_OF_HOUR, 2).appendLiteral('9').toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("12309", pp); + assertEquals(pp.getErrorIndex(), -1); + assertEquals(pp.getIndex(), 5); + assertEquals(parsed.getLong(HOUR_OF_DAY), 12L); + assertEquals(parsed.getLong(MINUTE_OF_HOUR), 30L); + } + + @Test + public void test_adjacent_lenient_firstVariableWidth_success() throws Exception { + // succeeds greedily parsing variable width, then fixed width, to non-numeric Z + DateTimeFormatter f = builder.parseLenient().appendValue(HOUR_OF_DAY).appendValue(MINUTE_OF_HOUR, 2).appendLiteral('Z').toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("12309Z", pp); + assertEquals(pp.getErrorIndex(), -1); + assertEquals(pp.getIndex(), 6); + assertEquals(parsed.getLong(HOUR_OF_DAY), 123L); + assertEquals(parsed.getLong(MINUTE_OF_HOUR), 9L); + } + + @Test + public void test_adjacent_lenient_firstVariableWidth_fails() throws Exception { + // fails because literal is a number and variable width parse greedily absorbs it + DateTimeFormatter f = builder.parseLenient().appendValue(HOUR_OF_DAY).appendValue(MINUTE_OF_HOUR, 2).appendLiteral('9').toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("12309", pp); + assertEquals(pp.getErrorIndex(), 5); + assertEquals(parsed, null); + } + + //----------------------------------------------------------------------- + @Test + public void test_adjacent_strict_fractionFollows() throws Exception { + // succeeds because hour/min are fixed width + DateTimeFormatter f = builder.appendValue(HOUR_OF_DAY, 2).appendValue(MINUTE_OF_HOUR, 2).appendFraction(NANO_OF_SECOND, 0, 3, false).toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("1230567", pp); + assertEquals(pp.getErrorIndex(), -1); + assertEquals(pp.getIndex(), 7); + assertEquals(parsed.getLong(HOUR_OF_DAY), 12L); + assertEquals(parsed.getLong(MINUTE_OF_HOUR), 30L); + assertEquals(parsed.getLong(NANO_OF_SECOND), 567_000_000L); + } + + @Test + public void test_adjacent_strict_fractionFollows_2digit() throws Exception { + // succeeds because hour/min are fixed width + DateTimeFormatter f = builder.appendValue(HOUR_OF_DAY, 2).appendValue(MINUTE_OF_HOUR, 2).appendFraction(NANO_OF_SECOND, 0, 3, false).toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("123056", pp); + assertEquals(pp.getErrorIndex(), -1); + assertEquals(pp.getIndex(), 6); + assertEquals(parsed.getLong(HOUR_OF_DAY), 12L); + assertEquals(parsed.getLong(MINUTE_OF_HOUR), 30L); + assertEquals(parsed.getLong(NANO_OF_SECOND), 560_000_000L); + } + + @Test + public void test_adjacent_strict_fractionFollows_0digit() throws Exception { + // succeeds because hour/min are fixed width + DateTimeFormatter f = builder.appendValue(HOUR_OF_DAY, 2).appendValue(MINUTE_OF_HOUR, 2).appendFraction(NANO_OF_SECOND, 0, 3, false).toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("1230", pp); + assertEquals(pp.getErrorIndex(), -1); + assertEquals(pp.getIndex(), 4); + assertEquals(parsed.getLong(HOUR_OF_DAY), 12L); + assertEquals(parsed.getLong(MINUTE_OF_HOUR), 30L); + } + + @Test + public void test_adjacent_lenient_fractionFollows() throws Exception { + // succeeds because hour/min are fixed width + DateTimeFormatter f = builder.parseLenient().appendValue(HOUR_OF_DAY, 2).appendValue(MINUTE_OF_HOUR, 2).appendFraction(NANO_OF_SECOND, 3, 3, false).toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("1230567", pp); + assertEquals(pp.getErrorIndex(), -1); + assertEquals(pp.getIndex(), 7); + assertEquals(parsed.getLong(HOUR_OF_DAY), 12L); + assertEquals(parsed.getLong(MINUTE_OF_HOUR), 30L); + assertEquals(parsed.getLong(NANO_OF_SECOND), 567_000_000L); + } + + @Test + public void test_adjacent_lenient_fractionFollows_2digit() throws Exception { + // succeeds because hour/min are fixed width + DateTimeFormatter f = builder.parseLenient().appendValue(HOUR_OF_DAY, 2).appendValue(MINUTE_OF_HOUR, 2).appendFraction(NANO_OF_SECOND, 3, 3, false).toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("123056", pp); + assertEquals(pp.getErrorIndex(), -1); + assertEquals(pp.getIndex(), 6); + assertEquals(parsed.getLong(HOUR_OF_DAY), 12L); + assertEquals(parsed.getLong(MINUTE_OF_HOUR), 30L); + assertEquals(parsed.getLong(NANO_OF_SECOND), 560_000_000L); + } + + @Test + public void test_adjacent_lenient_fractionFollows_0digit() throws Exception { + // succeeds because hour/min are fixed width + DateTimeFormatter f = builder.parseLenient().appendValue(HOUR_OF_DAY, 2).appendValue(MINUTE_OF_HOUR, 2).appendFraction(NANO_OF_SECOND, 3, 3, false).toFormatter(Locale.UK); + ParsePosition pp = new ParsePosition(0); + TemporalAccessor parsed = f.parseUnresolved("1230", pp); + assertEquals(pp.getErrorIndex(), -1); + assertEquals(pp.getIndex(), 4); + assertEquals(parsed.getLong(HOUR_OF_DAY), 12L); + assertEquals(parsed.getLong(MINUTE_OF_HOUR), 30L); + } + } diff --git a/jdk/test/java/time/tck/java/time/format/TCKDateTimeParseResolver.java b/jdk/test/java/time/tck/java/time/format/TCKDateTimeParseResolver.java index 2efd8cd4641..75b51a3802f 100644 --- a/jdk/test/java/time/tck/java/time/format/TCKDateTimeParseResolver.java +++ b/jdk/test/java/time/tck/java/time/format/TCKDateTimeParseResolver.java @@ -90,9 +90,6 @@ import static java.time.temporal.ChronoField.SECOND_OF_DAY; import static java.time.temporal.ChronoField.SECOND_OF_MINUTE; import static java.time.temporal.ChronoField.YEAR; import static java.time.temporal.ChronoField.YEAR_OF_ERA; -import static java.time.temporal.ChronoUnit.DAYS; -import static java.time.temporal.ChronoUnit.FOREVER; -import static java.time.temporal.ChronoUnit.NANOS; import static org.testng.Assert.assertEquals; import static org.testng.Assert.fail; @@ -102,13 +99,17 @@ import java.time.LocalTime; import java.time.Period; import java.time.ZoneId; import java.time.ZonedDateTime; -import java.time.chrono.Chronology; +import java.time.chrono.ChronoLocalDate; +import java.time.chrono.ChronoLocalDateTime; +import java.time.chrono.ChronoZonedDateTime; +import java.time.chrono.IsoChronology; +import java.time.chrono.MinguoChronology; +import java.time.chrono.MinguoDate; import java.time.chrono.ThaiBuddhistChronology; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.time.format.DateTimeParseException; import java.time.format.ResolverStyle; -import java.time.temporal.ChronoUnit; import java.time.temporal.IsoFields; import java.time.temporal.Temporal; import java.time.temporal.TemporalAccessor; @@ -129,6 +130,9 @@ public class TCKDateTimeParseResolver { // TODO: tests with weird TenporalField implementations // TODO: tests with non-ISO chronologies + private static final ZoneId EUROPE_ATHENS = ZoneId.of("Europe/Athens"); + private static final ZoneId EUROPE_PARIS = ZoneId.of("Europe/Paris"); + //----------------------------------------------------------------------- @DataProvider(name="resolveOneNoChange") Object[][] data_resolveOneNoChange() { @@ -886,205 +890,273 @@ public class TCKDateTimeParseResolver { } //----------------------------------------------------------------------- + // SPEC: DateTimeFormatter.withChronology() @Test - public void test_fieldResolvesToLocalTime() { - TemporalField field = new TemporalField() { - @Override - public TemporalUnit getBaseUnit() { - throw new UnsupportedOperationException(); - } - @Override - public TemporalUnit getRangeUnit() { - throw new UnsupportedOperationException(); - } - @Override - public ValueRange range() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isDateBased() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isTimeBased() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isSupportedBy(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public ValueRange rangeRefinedBy(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public long getFrom(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public R adjustInto(R temporal, long newValue) { - throw new UnsupportedOperationException(); - } - @Override - public TemporalAccessor resolve( - Map fieldValues, TemporalAccessor partialTemporal, ResolverStyle resolverStyle) { - return LocalTime.MIDNIGHT.plusNanos(fieldValues.remove(this)); - } - }; - DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(field).toFormatter(); - TemporalAccessor accessor = f.parse("1234567890"); - assertEquals(accessor.query(TemporalQueries.localDate()), null); - assertEquals(accessor.query(TemporalQueries.localTime()), LocalTime.of(0, 0, 1, 234_567_890)); + public void test_withChronology_noOverride() { + DateTimeFormatter f = new DateTimeFormatterBuilder().parseDefaulting(EPOCH_DAY, 2).toFormatter(); + TemporalAccessor accessor = f.parse(""); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.of(1970, 1, 3)); + assertEquals(accessor.query(TemporalQueries.localTime()), null); + assertEquals(accessor.query(TemporalQueries.chronology()), IsoChronology.INSTANCE); } @Test - public void test_fieldResolvesToChronoLocalDateTime() { - TemporalField field = new TemporalField() { - @Override - public TemporalUnit getBaseUnit() { - throw new UnsupportedOperationException(); - } - @Override - public TemporalUnit getRangeUnit() { - throw new UnsupportedOperationException(); - } - @Override - public ValueRange range() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isDateBased() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isTimeBased() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isSupportedBy(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public ValueRange rangeRefinedBy(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public long getFrom(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public R adjustInto(R temporal, long newValue) { - throw new UnsupportedOperationException(); - } - @Override - public TemporalAccessor resolve( - Map fieldValues, TemporalAccessor partialTemporal, ResolverStyle resolverStyle) { - fieldValues.remove(this); - return LocalDateTime.of(2010, 6, 30, 12, 30); - } - }; - DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(field).toFormatter(); + public void test_withChronology_override() { + DateTimeFormatter f = new DateTimeFormatterBuilder().parseDefaulting(EPOCH_DAY, 2).toFormatter(); + f = f.withChronology(MinguoChronology.INSTANCE); + TemporalAccessor accessor = f.parse(""); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.of(1970, 1, 3)); + assertEquals(accessor.query(TemporalQueries.localTime()), null); + assertEquals(accessor.query(TemporalQueries.chronology()), MinguoChronology.INSTANCE); + } + + @Test + public void test_withChronology_parsedChronology_noOverride() { + DateTimeFormatter f = new DateTimeFormatterBuilder().parseDefaulting(EPOCH_DAY, 2).appendChronologyId().toFormatter(); + TemporalAccessor accessor = f.parse("ThaiBuddhist"); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.of(1970, 1, 3)); + assertEquals(accessor.query(TemporalQueries.localTime()), null); + assertEquals(accessor.query(TemporalQueries.chronology()), ThaiBuddhistChronology.INSTANCE); + } + + @Test + public void test_withChronology_parsedChronology_override() { + DateTimeFormatter f = new DateTimeFormatterBuilder().parseDefaulting(EPOCH_DAY, 2).appendChronologyId().toFormatter(); + f = f.withChronology(MinguoChronology.INSTANCE); + TemporalAccessor accessor = f.parse("ThaiBuddhist"); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.of(1970, 1, 3)); + assertEquals(accessor.query(TemporalQueries.localTime()), null); + assertEquals(accessor.query(TemporalQueries.chronology()), ThaiBuddhistChronology.INSTANCE); + } + + //----------------------------------------------------------------------- + // SPEC: DateTimeFormatter.withZone() + @Test + public void test_withZone_noOverride() { + DateTimeFormatter f = new DateTimeFormatterBuilder().parseDefaulting(EPOCH_DAY, 2).toFormatter(); + TemporalAccessor accessor = f.parse(""); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.of(1970, 1, 3)); + assertEquals(accessor.query(TemporalQueries.localTime()), null); + assertEquals(accessor.query(TemporalQueries.zoneId()), null); + } + + @Test + public void test_withZone_override() { + DateTimeFormatter f = new DateTimeFormatterBuilder().parseDefaulting(EPOCH_DAY, 2).toFormatter(); + f = f.withZone(EUROPE_ATHENS); + TemporalAccessor accessor = f.parse(""); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.of(1970, 1, 3)); + assertEquals(accessor.query(TemporalQueries.localTime()), null); + assertEquals(accessor.query(TemporalQueries.zoneId()), EUROPE_ATHENS); + } + + @Test + public void test_withZone_parsedZone_noOverride() { + DateTimeFormatter f = new DateTimeFormatterBuilder().parseDefaulting(EPOCH_DAY, 2).appendZoneId().toFormatter(); + TemporalAccessor accessor = f.parse("Europe/Paris"); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.of(1970, 1, 3)); + assertEquals(accessor.query(TemporalQueries.localTime()), null); + assertEquals(accessor.query(TemporalQueries.zoneId()), EUROPE_PARIS); + } + + @Test + public void test_withZone_parsedZone_override() { + DateTimeFormatter f = new DateTimeFormatterBuilder().parseDefaulting(EPOCH_DAY, 2).appendZoneId().toFormatter(); + f = f.withZone(EUROPE_ATHENS); + TemporalAccessor accessor = f.parse("Europe/Paris"); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.of(1970, 1, 3)); + assertEquals(accessor.query(TemporalQueries.localTime()), null); + assertEquals(accessor.query(TemporalQueries.zoneId()), EUROPE_PARIS); + } + + //----------------------------------------------------------------------- + @Test + public void test_fieldResolvesToLocalTime() { + LocalTime lt = LocalTime.of(12, 30, 40); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(lt)).toFormatter(); + TemporalAccessor accessor = f.parse("1234567890"); + assertEquals(accessor.query(TemporalQueries.localDate()), null); + assertEquals(accessor.query(TemporalQueries.localTime()), lt); + } + + //------------------------------------------------------------------------- + @Test + public void test_fieldResolvesToChronoLocalDate_noOverrideChrono_matches() { + LocalDate ldt = LocalDate.of(2010, 6, 30); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(ldt)).toFormatter(); + TemporalAccessor accessor = f.parse("1234567890"); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.of(2010, 6, 30)); + assertEquals(accessor.query(TemporalQueries.localTime()), null); + assertEquals(accessor.query(TemporalQueries.chronology()), IsoChronology.INSTANCE); + } + + @Test + public void test_fieldResolvesToChronoLocalDate_overrideChrono_matches() { + MinguoDate mdt = MinguoDate.of(100, 6, 30); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(mdt)).toFormatter(); + f = f.withChronology(MinguoChronology.INSTANCE); + TemporalAccessor accessor = f.parse("1234567890"); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.from(mdt)); + assertEquals(accessor.query(TemporalQueries.localTime()), null); + assertEquals(accessor.query(TemporalQueries.chronology()), MinguoChronology.INSTANCE); + } + + @Test(expectedExceptions = DateTimeParseException.class) + public void test_fieldResolvesToChronoLocalDate_noOverrideChrono_wrongChrono() { + ChronoLocalDate cld = ThaiBuddhistChronology.INSTANCE.dateNow(); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(cld)).toFormatter(); + f.parse("1234567890"); + } + + @Test(expectedExceptions = DateTimeParseException.class) + public void test_fieldResolvesToChronoLocalDate_overrideChrono_wrongChrono() { + ChronoLocalDate cld = ThaiBuddhistChronology.INSTANCE.dateNow(); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(cld)).toFormatter(); + f = f.withChronology(MinguoChronology.INSTANCE); + f.parse("1234567890"); + } + + //------------------------------------------------------------------------- + @Test + public void test_fieldResolvesToChronoLocalDateTime_noOverrideChrono_matches() { + LocalDateTime ldt = LocalDateTime.of(2010, 6, 30, 12, 30); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(ldt)).toFormatter(); TemporalAccessor accessor = f.parse("1234567890"); assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.of(2010, 6, 30)); assertEquals(accessor.query(TemporalQueries.localTime()), LocalTime.of(12, 30)); + assertEquals(accessor.query(TemporalQueries.chronology()), IsoChronology.INSTANCE); + } + + @Test + public void test_fieldResolvesToChronoLocalDateTime_overrideChrono_matches() { + MinguoDate mdt = MinguoDate.of(100, 6, 30); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(mdt.atTime(LocalTime.NOON))).toFormatter(); + f = f.withChronology(MinguoChronology.INSTANCE); + TemporalAccessor accessor = f.parse("1234567890"); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.from(mdt)); + assertEquals(accessor.query(TemporalQueries.localTime()), LocalTime.NOON); + assertEquals(accessor.query(TemporalQueries.chronology()), MinguoChronology.INSTANCE); } @Test(expectedExceptions = DateTimeParseException.class) - public void test_fieldResolvesWrongChrono() { - TemporalField field = new TemporalField() { - @Override - public TemporalUnit getBaseUnit() { - throw new UnsupportedOperationException(); - } - @Override - public TemporalUnit getRangeUnit() { - throw new UnsupportedOperationException(); - } - @Override - public ValueRange range() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isDateBased() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isTimeBased() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isSupportedBy(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public ValueRange rangeRefinedBy(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public long getFrom(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public R adjustInto(R temporal, long newValue) { - throw new UnsupportedOperationException(); - } - @Override - public TemporalAccessor resolve( - Map fieldValues, TemporalAccessor partialTemporal, ResolverStyle resolverStyle) { - return ThaiBuddhistChronology.INSTANCE.dateNow(); - } - }; - DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(field).toFormatter(); + public void test_fieldResolvesToChronoLocalDateTime_noOverrideChrono_wrongChrono() { + ChronoLocalDateTime cldt = ThaiBuddhistChronology.INSTANCE.dateNow().atTime(LocalTime.NOON); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(cldt)).toFormatter(); f.parse("1234567890"); } @Test(expectedExceptions = DateTimeParseException.class) - public void test_fieldResolvesWrongZone() { - TemporalField field = new TemporalField() { - @Override - public TemporalUnit getBaseUnit() { - throw new UnsupportedOperationException(); - } - @Override - public TemporalUnit getRangeUnit() { - throw new UnsupportedOperationException(); - } - @Override - public ValueRange range() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isDateBased() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isTimeBased() { - throw new UnsupportedOperationException(); - } - @Override - public boolean isSupportedBy(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public ValueRange rangeRefinedBy(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public long getFrom(TemporalAccessor temporal) { - throw new UnsupportedOperationException(); - } - @Override - public R adjustInto(R temporal, long newValue) { - throw new UnsupportedOperationException(); - } - @Override - public TemporalAccessor resolve( - Map fieldValues, TemporalAccessor partialTemporal, ResolverStyle resolverStyle) { - return ZonedDateTime.of(2010, 6, 30, 12, 30, 0, 0, ZoneId.of("Europe/Paris")); - } - }; - DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(field).toFormatter().withZone(ZoneId.of("Europe/London")); + public void test_fieldResolvesToChronoLocalDateTime_overrideChrono_wrongChrono() { + ChronoLocalDateTime cldt = ThaiBuddhistChronology.INSTANCE.dateNow().atTime(LocalTime.NOON); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(cldt)).toFormatter(); + f = f.withChronology(MinguoChronology.INSTANCE); f.parse("1234567890"); } + //------------------------------------------------------------------------- + @Test + public void test_fieldResolvesToChronoZonedDateTime_noOverrideChrono_matches() { + ZonedDateTime zdt = ZonedDateTime.of(2010, 6, 30, 12, 30, 0, 0, EUROPE_PARIS); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(zdt)).toFormatter(); + TemporalAccessor accessor = f.parse("1234567890"); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.of(2010, 6, 30)); + assertEquals(accessor.query(TemporalQueries.localTime()), LocalTime.of(12, 30)); + assertEquals(accessor.query(TemporalQueries.chronology()), IsoChronology.INSTANCE); + assertEquals(accessor.query(TemporalQueries.zoneId()), EUROPE_PARIS); + } + + @Test + public void test_fieldResolvesToChronoZonedDateTime_overrideChrono_matches() { + MinguoDate mdt = MinguoDate.of(100, 6, 30); + ChronoZonedDateTime mzdt = mdt.atTime(LocalTime.NOON).atZone(EUROPE_PARIS); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(mzdt)).toFormatter(); + f = f.withChronology(MinguoChronology.INSTANCE); + TemporalAccessor accessor = f.parse("1234567890"); + assertEquals(accessor.query(TemporalQueries.localDate()), LocalDate.from(mdt)); + assertEquals(accessor.query(TemporalQueries.localTime()), LocalTime.NOON); + assertEquals(accessor.query(TemporalQueries.chronology()), MinguoChronology.INSTANCE); + assertEquals(accessor.query(TemporalQueries.zoneId()), EUROPE_PARIS); + } + + @Test(expectedExceptions = DateTimeParseException.class) + public void test_fieldResolvesToChronoZonedDateTime_noOverrideChrono_wrongChrono() { + ChronoZonedDateTime cldt = ThaiBuddhistChronology.INSTANCE.dateNow().atTime(LocalTime.NOON).atZone(EUROPE_PARIS); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(cldt)).toFormatter(); + f.parse("1234567890"); + } + + @Test(expectedExceptions = DateTimeParseException.class) + public void test_fieldResolvesToChronoZonedDateTime_overrideChrono_wrongChrono() { + ChronoZonedDateTime cldt = ThaiBuddhistChronology.INSTANCE.dateNow().atTime(LocalTime.NOON).atZone(EUROPE_PARIS); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(cldt)).toFormatter(); + f = f.withChronology(MinguoChronology.INSTANCE); + f.parse("1234567890"); + } + + @Test + public void test_fieldResolvesToChronoZonedDateTime_overrideZone_matches() { + ZonedDateTime zdt = ZonedDateTime.of(2010, 6, 30, 12, 30, 0, 0, EUROPE_PARIS); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(zdt)).toFormatter(); + f = f.withZone(EUROPE_PARIS); + assertEquals(f.parse("1234567890", ZonedDateTime::from), zdt); + } + + @Test(expectedExceptions = DateTimeParseException.class) + public void test_fieldResolvesToChronoZonedDateTime_overrideZone_wrongZone() { + ZonedDateTime zdt = ZonedDateTime.of(2010, 6, 30, 12, 30, 0, 0, EUROPE_PARIS); + DateTimeFormatter f = new DateTimeFormatterBuilder().appendValue(new ResolvingField(zdt)).toFormatter(); + f = f.withZone(ZoneId.of("Europe/London")); + f.parse("1234567890"); + } + + //------------------------------------------------------------------------- + private static class ResolvingField implements TemporalField { + private final TemporalAccessor resolvedValue; + ResolvingField(TemporalAccessor resolvedValue) { + this.resolvedValue = resolvedValue; + } + @Override + public TemporalUnit getBaseUnit() { + throw new UnsupportedOperationException(); + } + @Override + public TemporalUnit getRangeUnit() { + throw new UnsupportedOperationException(); + } + @Override + public ValueRange range() { + throw new UnsupportedOperationException(); + } + @Override + public boolean isDateBased() { + throw new UnsupportedOperationException(); + } + @Override + public boolean isTimeBased() { + throw new UnsupportedOperationException(); + } + @Override + public boolean isSupportedBy(TemporalAccessor temporal) { + throw new UnsupportedOperationException(); + } + @Override + public ValueRange rangeRefinedBy(TemporalAccessor temporal) { + throw new UnsupportedOperationException(); + } + @Override + public long getFrom(TemporalAccessor temporal) { + throw new UnsupportedOperationException(); + } + @Override + public R adjustInto(R temporal, long newValue) { + throw new UnsupportedOperationException(); + } + @Override + public TemporalAccessor resolve( + Map fieldValues, TemporalAccessor partialTemporal, ResolverStyle resolverStyle) { + fieldValues.remove(this); + return resolvedValue; + } + }; + } diff --git a/jdk/test/java/time/test/java/time/format/TestReducedParser.java b/jdk/test/java/time/test/java/time/format/TestReducedParser.java index e9df91fdc8e..3bf806563e8 100644 --- a/jdk/test/java/time/test/java/time/format/TestReducedParser.java +++ b/jdk/test/java/time/test/java/time/format/TestReducedParser.java @@ -356,7 +356,7 @@ public class TestReducedParser extends AbstractTestPrinterParser { {"yyMMdd", "200703", STRICT, 0, 6, 2020, 7, 3}, {"ddMMyy", "230714", LENIENT, 0, 6, 2014, 7, 23}, {"ddMMyy", "230714", STRICT, 0, 6, 2014, 7, 23}, - {"ddMMyy", "25062001", LENIENT, 0, 8, 2001, 20, 2506}, + {"ddMMyy", "25062001", LENIENT, 0, 8, 2001, 6, 25}, {"ddMMyy", "25062001", STRICT, 0, 6, 2020, 6, 25}, {"ddMMy", "27052002", LENIENT, 0, 8, 2002, 5, 27}, {"ddMMy", "27052002", STRICT, 0, 8, 2002, 5, 27}, diff --git a/jdk/test/java/util/Arrays/StreamAndSpliterator.java b/jdk/test/java/util/Arrays/StreamAndSpliterator.java new file mode 100644 index 00000000000..b475e7e6f39 --- /dev/null +++ b/jdk/test/java/util/Arrays/StreamAndSpliterator.java @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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 8037857 + * @summary tests for stream and spliterator factory methods + * @run testng StreamAndSpliterator + */ + +import org.testng.annotations.Test; + +import java.util.Arrays; +import java.util.Spliterators; + +import static org.testng.Assert.assertNotNull; + +public class StreamAndSpliterator { + @Test + public void testStreamNPEs() { + assertThrowsNPE(() -> Arrays.stream((int[]) null, 0, 0)); + assertThrowsNPE(() -> Arrays.stream((long[]) null, 0, 0)); + assertThrowsNPE(() -> Arrays.stream((double[]) null, 0, 0)); + assertThrowsNPE(() -> Arrays.stream((String[]) null, 0, 0)); + } + + @Test + public void testStreamAIOBEs() { + // origin > fence + assertThrowsAIOOB(() -> Arrays.stream(new int[]{}, 1, 0)); + assertThrowsAIOOB(() -> Arrays.stream(new long[]{}, 1, 0)); + assertThrowsAIOOB(() -> Arrays.stream(new double[]{}, 1, 0)); + assertThrowsAIOOB(() -> Arrays.stream(new String[]{}, 1, 0)); + + // bad origin + assertThrowsAIOOB(() -> Arrays.stream(new int[]{}, -1, 0)); + assertThrowsAIOOB(() -> Arrays.stream(new long[]{}, -1, 0)); + assertThrowsAIOOB(() -> Arrays.stream(new double[]{}, -1, 0)); + assertThrowsAIOOB(() -> Arrays.stream(new String[]{}, -1, 0)); + + // bad fence + assertThrowsAIOOB(() -> Arrays.stream(new int[]{}, 0, 1)); + assertThrowsAIOOB(() -> Arrays.stream(new long[]{}, 0, 1)); + assertThrowsAIOOB(() -> Arrays.stream(new double[]{}, 0, 1)); + assertThrowsAIOOB(() -> Arrays.stream(new String[]{}, 0, 1)); + } + + + @Test + public void testSpliteratorNPEs() { + assertThrowsNPE(() -> Arrays.spliterator((int[]) null, 0, 0)); + assertThrowsNPE(() -> Arrays.spliterator((long[]) null, 0, 0)); + assertThrowsNPE(() -> Arrays.spliterator((double[]) null, 0, 0)); + assertThrowsNPE(() -> Arrays.spliterator((String[]) null, 0, 0)); + } + + @Test + public void testSpliteratorAIOBEs() { + // origin > fence + assertThrowsAIOOB(() -> Arrays.spliterator(new int[]{}, 1, 0)); + assertThrowsAIOOB(() -> Arrays.spliterator(new long[]{}, 1, 0)); + assertThrowsAIOOB(() -> Arrays.spliterator(new double[]{}, 1, 0)); + assertThrowsAIOOB(() -> Arrays.spliterator(new String[]{}, 1, 0)); + + // bad origin + assertThrowsAIOOB(() -> Arrays.spliterator(new int[]{}, -1, 0)); + assertThrowsAIOOB(() -> Arrays.spliterator(new long[]{}, -1, 0)); + assertThrowsAIOOB(() -> Arrays.spliterator(new double[]{}, -1, 0)); + assertThrowsAIOOB(() -> Arrays.spliterator(new String[]{}, -1, 0)); + + // bad fence + assertThrowsAIOOB(() -> Arrays.spliterator(new int[]{}, 0, 1)); + assertThrowsAIOOB(() -> Arrays.spliterator(new long[]{}, 0, 1)); + assertThrowsAIOOB(() -> Arrays.spliterator(new double[]{}, 0, 1)); + assertThrowsAIOOB(() -> Arrays.spliterator(new String[]{}, 0, 1)); + } + + + @Test + public void testSpliteratorNPEsFromSpliterators() { + assertThrowsNPE(() -> Spliterators.spliterator((int[]) null, 0, 0, 0)); + assertThrowsNPE(() -> Spliterators.spliterator((long[]) null, 0, 0, 0)); + assertThrowsNPE(() -> Spliterators.spliterator((double[]) null, 0, 0, 0)); + assertThrowsNPE(() -> Spliterators.spliterator((String[]) null, 0, 0, 0)); + } + + @Test + public void testSpliteratorAIOBEsFromSpliterators() { + // origin > fence + assertThrowsAIOOB(() -> Spliterators.spliterator(new int[]{}, 1, 0, 0)); + assertThrowsAIOOB(() -> Spliterators.spliterator(new long[]{}, 1, 0, 0)); + assertThrowsAIOOB(() -> Spliterators.spliterator(new double[]{}, 1, 0, 0)); + assertThrowsAIOOB(() -> Spliterators.spliterator(new String[]{}, 1, 0, 0)); + + // bad origin + assertThrowsAIOOB(() -> Spliterators.spliterator(new int[]{}, -1, 0, 0)); + assertThrowsAIOOB(() -> Spliterators.spliterator(new long[]{}, -1, 0, 0)); + assertThrowsAIOOB(() -> Spliterators.spliterator(new double[]{}, -1, 0, 0)); + assertThrowsAIOOB(() -> Spliterators.spliterator(new String[]{}, -1, 0, 0)); + + // bad fence + assertThrowsAIOOB(() -> Spliterators.spliterator(new int[]{}, 0, 1, 0)); + assertThrowsAIOOB(() -> Spliterators.spliterator(new long[]{}, 0, 1, 0)); + assertThrowsAIOOB(() -> Spliterators.spliterator(new double[]{}, 0, 1, 0)); + assertThrowsAIOOB(() -> Spliterators.spliterator(new String[]{}, 0, 1, 0)); + } + + void assertThrowsNPE(Runnable r) { + NullPointerException caught = null; + try { + r.run(); + } + catch (NullPointerException e) { + caught = e; + } + assertNotNull(caught, "NullPointerException not thrown"); + } + + void assertThrowsAIOOB(Runnable r) { + ArrayIndexOutOfBoundsException caught = null; + try { + r.run(); + } + catch (ArrayIndexOutOfBoundsException e) { + caught = e; + } + assertNotNull(caught, "ArrayIndexOutOfBoundsException not thrown"); + } +} diff --git a/jdk/test/java/util/Collection/MOAT.java b/jdk/test/java/util/Collection/MOAT.java index 88914952799..f50682fea24 100644 --- a/jdk/test/java/util/Collection/MOAT.java +++ b/jdk/test/java/util/Collection/MOAT.java @@ -54,6 +54,7 @@ import java.io.*; import java.util.*; import java.util.concurrent.*; import static java.util.Collections.*; +import java.lang.reflect.*; public class MOAT { public static void realMain(String[] args) { @@ -721,6 +722,28 @@ public class MOAT { equal(l instanceof RandomAccess, l.subList(0,0) instanceof RandomAccess); + + l.iterator(); + l.listIterator(); + l.listIterator(0); + l.listIterator(l.size()); + THROWS(IndexOutOfBoundsException.class, + new Fun(){void f(){l.listIterator(-1);}}, + new Fun(){void f(){l.listIterator(l.size() + 1);}}); + + if (l instanceof AbstractList) { + try { + int size = l.size(); + AbstractList abList = (AbstractList) l; + Method m = AbstractList.class.getDeclaredMethod("removeRange", new Class[] { int.class, int.class }); + m.setAccessible(true); + m.invoke(abList, new Object[] { 0, 0 }); + m.invoke(abList, new Object[] { size, size }); + equal(size, l.size()); + } + catch (UnsupportedOperationException ignored) {/* OK */} + catch (Throwable t) { unexpected(t); } + } } private static void testCollection(Collection c) { diff --git a/jdk/test/javax/swing/JComboBox/8032878/bug8032878.java b/jdk/test/javax/swing/JComboBox/8032878/bug8032878.java new file mode 100644 index 00000000000..f5c9c88ca63 --- /dev/null +++ b/jdk/test/javax/swing/JComboBox/8032878/bug8032878.java @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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 8032878 + * @summary Checks that JComboBox as JTable cell editor processes key events + * even where setSurrendersFocusOnKeystroke flag in JTable is false and + * that it does not lose the first key press where the flag is true. + * @library ../../regtesthelpers + * @build Util + * @author Alexey Ivanov + */ + +import java.awt.*; +import java.awt.event.KeyEvent; +import javax.swing.*; +import javax.swing.text.JTextComponent; + +import sun.awt.SunToolkit; + +public class bug8032878 implements Runnable { + private static final String ONE = "one"; + private static final String TWO = "two"; + private static final String THREE = "three"; + + private static final String EXPECTED = "one123"; + + private final Robot robot; + + private JFrame frame; + private JComboBox cb; + + private volatile boolean surrender; + private volatile String text; + + public static void main(String[] args) throws Exception { + final bug8032878 test = new bug8032878(); + + test.test(false); + test.test(true); + } + + public bug8032878() throws AWTException { + robot = new Robot(); + robot.setAutoDelay(100); + } + + private void setupUI() { + frame = new JFrame(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + JTable table = new JTable(new String[][] {{ONE}, {TWO}, {THREE}}, + new String[] { "#"}); + table.setSurrendersFocusOnKeystroke(surrender); + + cb = new JComboBox(new String[]{ONE, TWO, THREE}); + cb.setEditable(true); + DefaultCellEditor comboEditor = new DefaultCellEditor(cb); + comboEditor.setClickCountToStart(1); + table.getColumnModel().getColumn(0).setCellEditor(comboEditor); + frame.add(table); + + frame.pack(); + frame.setVisible(true); + } + + private void test(final boolean flag) throws Exception { + try { + surrender = flag; + SwingUtilities.invokeAndWait(this); + + runTest(); + checkResult(); + } finally { + if (frame != null) { + frame.dispose(); + } + } + } + + private void runTest() throws Exception { + realSync(); + // Select 'one' + Util.hitKeys(robot, KeyEvent.VK_TAB); + realSync(); + Util.hitKeys(robot, KeyEvent.VK_1); + Util.hitKeys(robot, KeyEvent.VK_2); + Util.hitKeys(robot, KeyEvent.VK_3); + Util.hitKeys(robot, KeyEvent.VK_ENTER); + realSync(); + } + + private void checkResult() throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + text = ((JTextComponent) cb.getEditor().getEditorComponent()).getText(); + } + }); + if (text.equals(EXPECTED)) { + System.out.println("Test with surrender = " + surrender + " passed"); + } else { + System.out.println("Test with surrender = " + surrender + " failed"); + throw new RuntimeException("Expected value in JComboBox editor '" + + EXPECTED + "' but found '" + text + "'."); + } + } + + private static void realSync() { + ((SunToolkit) (Toolkit.getDefaultToolkit())).realSync(); + } + + @Override + public void run() { + setupUI(); + } +} diff --git a/jdk/test/javax/swing/JSlider/6794831/bug6794831.java b/jdk/test/javax/swing/JSlider/6794831/bug6794831.java index 09840eefafe..27aa09ffb04 100644 --- a/jdk/test/javax/swing/JSlider/6794831/bug6794831.java +++ b/jdk/test/javax/swing/JSlider/6794831/bug6794831.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. * 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,18 +31,20 @@ import javax.swing.*; import javax.swing.plaf.basic.BasicSliderUI; import java.awt.image.BufferedImage; +import java.lang.reflect.InvocationTargetException; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; public class bug6794831 { private final CountDownLatch countDownLatch = new CountDownLatch(1); - public static void main(String args[]) throws InterruptedException { + public static void main(String args[]) + throws InterruptedException, InvocationTargetException { new bug6794831().run(); } - private void run() throws InterruptedException { - SwingUtilities.invokeLater(new Runnable() { + private void run() throws InterruptedException, InvocationTargetException { + SwingUtilities.invokeAndWait(new Runnable() { public void run() { for (UIManager.LookAndFeelInfo lookAndFeelInfo : UIManager.getInstalledLookAndFeels()) { try { diff --git a/jdk/test/javax/swing/text/html/8034955/bug8034955.java b/jdk/test/javax/swing/text/html/8034955/bug8034955.java new file mode 100644 index 00000000000..3e7bba2130e --- /dev/null +++ b/jdk/test/javax/swing/text/html/8034955/bug8034955.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.SwingUtilities; + +/** + * @test + * @bug 8034955 + * @author Alexander Scherbatiy + * @summary JLabel/JToolTip throw ClassCastException for "a" + * @run main bug8034955 + */ +public class bug8034955 { + + public static void main(String[] args) throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { + + @Override + public void run() { + JFrame frame = new JFrame(); + frame.getContentPane().add(new JLabel("<html>a<title>")); + frame.pack(); + frame.setVisible(true); + } + }); + } +} diff --git a/jdk/test/javax/xml/jaxp/XPath/8035577/Regex.java b/jdk/test/javax/xml/jaxp/XPath/8035577/Regex.java new file mode 100644 index 00000000000..69c78846456 --- /dev/null +++ b/jdk/test/javax/xml/jaxp/XPath/8035577/Regex.java @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8035577 + * @summary Tests for xpath regular expression methods. + * @run main Regex + * @author david.x.li@oracle.com + */ + +import com.sun.org.apache.xerces.internal.impl.xpath.regex.RegularExpression; +import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException; + +public class Regex { + + public static void main(String[] args) { + testIntersect(); + } + + static void testIntersect() { + // The use of intersection operator & is not allowed in + // XML schema. Consequently, the intersection operator + // can never be called except for internal API usage. + // Following test illustrates this. + try{ + new RegularExpression("(?[b-d]&[a-r])", "X"); + throw new RuntimeException ("Xerces XPath Regex: " + + "intersection not allowed in XML schema mode, " + + "exception expected above."); + } + catch (ParseException e) { + // Empty, expecting an exception + } + + // Bug 8035577: verifying a typo fix in RangeToken.intersectRanges. + // Note: Each test case has a diagram showing the ranges being tested. + // Following test case will trigger the typo. + // o-----o + // o-----o + RegularExpression ce = new RegularExpression("(?[a-e]&[c-r])"); + if (!(ce.matches("c") && ce.matches("d") && ce.matches("e"))) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[c-e] expected to match c,d,e."); + } + + if (ce.matches("b") || ce.matches("f")) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[c-e] not expected to match b or f."); + } + + // Test the expected behavior after fixing the typo. + // o------o + // o-------------o + RegularExpression bd = new RegularExpression("(?[b-d]&[a-r])"); + if (!(bd.matches("b") && bd.matches("c") && bd.matches("d"))) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[b-d] expected to match b,c,d."); + } + + if (bd.matches("e") || bd.matches("a")) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[b-d] not expected to match a or e."); + } + + // Bug fix for first range ends later than second range. + // o--------o + // o--o + RegularExpression bd2 = new RegularExpression("(?[a-r]&[b-d])"); + if (!(bd.matches("b") && bd.matches("c") && bd.matches("d"))) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[b-d] expected to match b,c,d, test 2."); + } + + if (bd2.matches("e") || bd2.matches("a")) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[b-d] not expected to match a or e, test 2."); + } + + // o-----o + // o----o + RegularExpression dh = new RegularExpression("(?[d-z]&[a-h])"); + if (!(dh.matches("d") && dh.matches("e") && dh.matches("h"))) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[d-h] expected to match d,e,h."); + } + + if (dh.matches("c") || bd2.matches("i")) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[d-h] not expected to match c or i."); + } + + // Test code improvement, addition of src2+=2 to one of the + // conditions. In this case, src1 leftover from matching + // first portion of src2 is re-used to match against the next + // portion of src2. + // o--------------o + // o--o o--o + RegularExpression dfhk = new RegularExpression("(?[b-r]&[d-fh-k])"); + if (!(dfhk.matches("d") && dfhk.matches("f") && dfhk.matches("h") && dfhk.matches("k"))) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[d-fh-k] expected to match d,f,h,k."); + } + + if (dfhk.matches("c") || dfhk.matches("g") || dfhk.matches("l")) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[d-fh-k] not expected to match c,g,l."); + } + + // random tests + // o------------o + // o-----o o--o + RegularExpression cfhk = new RegularExpression("(?[c-r]&[b-fh-k])"); + if (!(cfhk.matches("c") && cfhk.matches("f") && cfhk.matches("h") && cfhk.matches("k"))) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[c-fh-k] expected to match c,f,h,k."); + } + + if (cfhk.matches("b") || cfhk.matches("g") || cfhk.matches("l")) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[c-fh-k] not expected to match b,g,l."); + } + + // o----------o + // o-----------o + // o----o o---o + RegularExpression ekor = new RegularExpression("(?[a-r]&[e-z]&[c-ko-s])"); + if (!(ekor.matches("e") && ekor.matches("k") && ekor.matches("o") && ekor.matches("r"))) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[e-ko-r] expected to match e,k,o,r."); + } + + if (ekor.matches("d") || ekor.matches("l") || ekor.matches("s")) { + throw new RuntimeException("Xerces XPath Regex Error: " + + "[e-ko-r] not expected to match d,l,s."); + } + + } + +} diff --git a/jdk/test/javax/xml/jaxp/common/8035437/AbstractMethodErrorTest.java b/jdk/test/javax/xml/jaxp/common/8035437/AbstractMethodErrorTest.java new file mode 100644 index 00000000000..142c468c164 --- /dev/null +++ b/jdk/test/javax/xml/jaxp/common/8035437/AbstractMethodErrorTest.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import org.w3c.dom.DOMImplementation; +import org.w3c.dom.Document; +import org.w3c.dom.ls.DOMImplementationLS; +import org.w3c.dom.ls.LSSerializer; + +class AbstractMethodErrorTest { + + public static void main(String[] args) throws Exception { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document document = builder.newDocument(); + + DOMImplementation impl = document.getImplementation(); + DOMImplementationLS implLS = (DOMImplementationLS) impl.getFeature("LS", "3.0"); + LSSerializer dsi = implLS.createLSSerializer(); + + /* We should have here incorrect document without getXmlVersion() method: + * Such Document is generated by replacing the JDK bootclasses with it's + * own Node,Document and DocumentImpl classes (see run.sh). According to + * XERCESJ-1007 the AbstractMethodError should be thrown in such case. + */ + String result = dsi.writeToString(document); + System.out.println("Result:" + result); + } + +} diff --git a/jdk/src/share/classes/sun/misc/RegexpTarget.java b/jdk/test/javax/xml/jaxp/common/8035437/Document.java similarity index 56% rename from jdk/src/share/classes/sun/misc/RegexpTarget.java rename to jdk/test/javax/xml/jaxp/common/8035437/Document.java index a44028acf7f..3f81896fa20 100644 --- a/jdk/src/share/classes/sun/misc/RegexpTarget.java +++ b/jdk/test/javax/xml/jaxp/common/8035437/Document.java @@ -1,12 +1,10 @@ /* - * Copyright (c) 1995, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute 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. + * 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 @@ -22,20 +20,9 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ +package org.w3c.dom; -package sun.misc; +public interface Document { -/** - * A class to define actions to be performed when a regular expression match - * occurs. - * @author James Gosling - */ - -public interface RegexpTarget { - /** Gets called when a pattern in a RegexpPool matches. - * This method is called by RegexpPool.match() who passes the return - * value from found() back to its caller. - * @param remainder the string that matched the * in the pattern. - */ - Object found(String remainder); + public org.w3c.dom.DocumentType getDoctype(); } diff --git a/jdk/test/javax/xml/jaxp/common/8035437/DocumentImpl.java b/jdk/test/javax/xml/jaxp/common/8035437/DocumentImpl.java new file mode 100644 index 00000000000..b0ce6310d98 --- /dev/null +++ b/jdk/test/javax/xml/jaxp/common/8035437/DocumentImpl.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.sun.org.apache.xerces.internal.dom; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.DOMImplementation; + +public class DocumentImpl implements Document, Node { + + public short getNodeType() { + return 9; //DOCUMENT_NODE = 9 + } + + public org.w3c.dom.Document getOwnerDocument() { + return null; + } + + public Node getFirstChild() { + return null; + } + + public String getPrefix() { + return "TestPrefix"; + } + + public String getLocalName() { + return "LocalName"; + } + + public boolean hasAttributes() { + return false; + } + + public Node renameNode(Node n, String namespaceURI, String name) { + return n; + } + + public org.w3c.dom.DocumentType getDoctype() { + return null; + } + + public DOMImplementation getImplementation() { + return DOMImplementationImpl.getDOMImplementation(); + } + +} diff --git a/jdk/test/javax/swing/UIDefaults/6795356/SwingLazyValueTest.java b/jdk/test/javax/xml/jaxp/common/8035437/Node.java similarity index 63% rename from jdk/test/javax/swing/UIDefaults/6795356/SwingLazyValueTest.java rename to jdk/test/javax/xml/jaxp/common/8035437/Node.java index 1fd97ac2949..cb7a9881ade 100644 --- a/jdk/test/javax/swing/UIDefaults/6795356/SwingLazyValueTest.java +++ b/jdk/test/javax/xml/jaxp/common/8035437/Node.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. * 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,25 +20,19 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ +package org.w3c.dom; -/* - * @test - * @bug 6795356 - * @summary Checks that SwingLazyValue class correclty works - * @author Alexander Potochkin - * @run main SwingLazyValueTest - */ +public interface Node { -import sun.swing.SwingLazyValue; + public short getNodeType(); -import javax.swing.*; + public org.w3c.dom.Document getOwnerDocument(); -public class SwingLazyValueTest { + public Node getFirstChild(); - public static void main(String[] args) throws Exception { - if(new SwingLazyValue("javax.swing.JTable$DoubleRenderer"). - createValue(null) == null) { - throw new RuntimeException("SwingLazyValue doesn't work"); - } - } + public String getPrefix(); + + public String getLocalName(); + + public boolean hasAttributes(); } diff --git a/jdk/test/javax/xml/jaxp/common/8035437/run.sh b/jdk/test/javax/xml/jaxp/common/8035437/run.sh new file mode 100644 index 00000000000..413edebcd27 --- /dev/null +++ b/jdk/test/javax/xml/jaxp/common/8035437/run.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +## +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute 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 8035437 +# @summary Tests that java.lang.AbstractMethodError is not thrown when +# serializing improper version of DocumentImpl class. + +mkdir -p exec compile + +$COMPILEJAVA/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} \ + -d compile $TESTSRC/Document.java $TESTSRC/Node.java || exit 1 + +$COMPILEJAVA/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} \ + -Xbootclasspath/p:compile -d exec $TESTSRC/DocumentImpl.java || exit 1 + +$COMPILEJAVA/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} \ + $TESTSRC/AbstractMethodErrorTest.java -d exec || exit 1 + +$TESTJAVA/bin/java ${TESTVMOPTS} -Xbootclasspath/p:exec -cp exec AbstractMethodErrorTest || exit 1 + +exit 0 diff --git a/jdk/test/javax/xml/ws/ebcdic/WsImportTest.java b/jdk/test/javax/xml/ws/ebcdic/WsImportTest.java new file mode 100644 index 00000000000..7977cf98730 --- /dev/null +++ b/jdk/test/javax/xml/ws/ebcdic/WsImportTest.java @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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 8038307 + * @summary JAX-WS conformance tests fail when running JCK-devtools-8 suite against RI in EBCDIC emulation mode + * @run main/othervm WsImportTest + */ + +import java.io.InputStreamReader; +import java.io.IOException; +import java.io.BufferedReader; +import java.io.File; +import java.nio.file.Files; +import java.nio.file.FileVisitResult; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; +import static java.nio.file.FileVisitResult.*; + +public class WsImportTest { + + public static void main(String[] args) throws IOException { + + String wsimport = getWsImport(); + String wsdl = getWSDLFilePath("test-service.wsdl"); + + try { + log("Importing wsdl: " + wsdl); + String[] wsargs = { + wsimport, + "-p", + "generated", + "-J-Dfile.encoding=Cp037", + wsdl + }; + + ProcessBuilder pb = new ProcessBuilder(wsargs); + pb.redirectErrorStream(true); + Process p = pb.start(); + logOutput(p); + int result = p.waitFor(); + p.destroy(); + + if (result != 0) { + fail("WsImport failed. TEST FAILED."); + } else { + log("Test PASSED."); + } + + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + deleteGeneratedFiles(); + } + } + + private static void fail(String message) { + throw new RuntimeException(message); + } + + private static void log(String msg) { + System.out.println(msg); + } + + private static void logOutput(Process p) throws IOException { + BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); + String s = r.readLine(); + while (s != null) { + log(s.trim()); + s = r.readLine(); + } + } + + private static void deleteGeneratedFiles() { + Path p = Paths.get("generated"); + if (Files.exists(p)) { + try { + Files.walkFileTree(p, new SimpleFileVisitor<Path>() { + @Override + public FileVisitResult visitFile(Path file, + BasicFileAttributes attrs) throws IOException { + + Files.delete(file); + return CONTINUE; + } + @Override + public FileVisitResult postVisitDirectory(Path dir, + IOException exc) throws IOException { + + if (exc == null) { + Files.delete(dir); + return CONTINUE; + } else { + throw exc; + } + } + }); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } + } + + private static String getWSDLFilePath(String filename) { + String testSrc = System.getProperty("test.src"); + if (testSrc == null) testSrc = "."; + return Paths.get(testSrc).resolve(filename).toString(); + } + + private static String getWsImport() { + String javaHome = System.getProperty("java.home"); + if (javaHome.endsWith("jre")) { + javaHome = new File(javaHome).getParent(); + } + String wsimport = javaHome + File.separator + "bin" + File.separator + "wsimport"; + if (System.getProperty("os.name").startsWith("Windows")) { + wsimport = wsimport.concat(".exe"); + } + return wsimport; + } +} diff --git a/jdk/test/javax/xml/ws/ebcdic/test-service.wsdl b/jdk/test/javax/xml/ws/ebcdic/test-service.wsdl new file mode 100644 index 00000000000..10b2bdbd235 --- /dev/null +++ b/jdk/test/javax/xml/ws/ebcdic/test-service.wsdl @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + This code is free software; you can redistribute 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. +--> +<definitions name="W2JDLAnnotations" + targetNamespace="http://w2jdlannotations.org/wsdl" + xmlns:tns="http://w2jdlannotations.org/wsdl" + xmlns="http://schemas.xmlsoap.org/wsdl/" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:types="http://w2jdlannotations.org/types" + xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> + + <types> + <xsd:schema targetNamespace="http://w2jdlannotations.org/types" attributeFormDefault="qualified" + elementFormDefault="qualified"> + <xsd:element name="OneWayStringElement"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="argument" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:schema> + </types> + + <message name="oneway"> + <part name="varString" element="types:OneWayStringElement"/> + </message> + <portType name="W2JDLAnnotationsEndpoint"> + <operation name="onewayOperation"> + <input message="tns:oneway"/> + </operation> + </portType> + <binding name="W2JDLAnnotationsEndpointBinding" type="tns:W2JDLAnnotationsEndpoint"> + <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> + <operation name="onewayOperation"> + <soap:operation soapAction=""/> + <input> + <soap:body use="literal"/> + </input> + </operation> + </binding> + <service name="W2JDLAnnotations"> + <port name="W2JDLAnnotationsEndpointPort" binding="tns:W2JDLAnnotationsEndpointBinding"> + <soap:address location="http://foo:9999/bar"/> + </port> + </service> +</definitions> diff --git a/jdk/test/lib/testlibrary/jdk/testlibrary/Asserts.java b/jdk/test/lib/testlibrary/jdk/testlibrary/Asserts.java index 573fde935f9..52b8fb0103c 100644 --- a/jdk/test/lib/testlibrary/jdk/testlibrary/Asserts.java +++ b/jdk/test/lib/testlibrary/jdk/testlibrary/Asserts.java @@ -206,6 +206,34 @@ public class Asserts { } } + /** + * Calls {@link #assertSame(java.lang.Object, java.lang.Object, java.lang.String)} with a default message. + * + * @param lhs The left hand side of the comparison. + * @param rhs The right hand side of the comparison. + * @see #assertSame(Object, Object, String) + */ + public static void assertSame(Object lhs, Object rhs) { + assertSame(lhs, rhs, null); + } + + /** + * Asserts that {@code lhs} is the same as {@code rhs}. + * + * @param lhs The left hand side of the comparison. + * @param rhs The right hand side of the comparison. + * @param msg A description of the assumption; {@code null} for a default message. + * @throws RuntimeException if the assertion is not true. + */ + public static void assertSame(Object lhs, Object rhs, String msg) { + if (lhs != rhs) { + msg = Objects.toString(msg, "assertSame") + + ": expected " + Objects.toString(lhs) + + " to equal " + Objects.toString(rhs); + fail(msg); + } + } + /** * Shorthand for {@link #assertGreaterThanOrEqual(Comparable, Comparable)}. * diff --git a/jdk/test/lib/testlibrary/jsr292/com/oracle/testlibrary/jsr292/Helper.java b/jdk/test/lib/testlibrary/jsr292/com/oracle/testlibrary/jsr292/Helper.java new file mode 100644 index 00000000000..bbed7f42185 --- /dev/null +++ b/jdk/test/lib/testlibrary/jsr292/com/oracle/testlibrary/jsr292/Helper.java @@ -0,0 +1,276 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.testlibrary.jsr292; + +import jdk.testlibrary.Asserts; + +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; +import java.lang.reflect.Array; +import java.util.*; + +public class Helper { + /** Flag for verbose output, true if {@code -Dverbose} specified */ + public static final boolean IS_VERBOSE + = System.getProperty("verbose") != null; + /** + * Flag for thorough testing -- all test will be executed, + * true if {@code -Dthorough} specified. */ + public static final boolean IS_THOROUGH + = System.getProperty("thorough") != null; + /** Random number generator w/ initial seed equal to {@code -Dseed} */ + public static final Random RNG; + + static { + String str = System.getProperty("seed"); + long seed = str != null ? Long.parseLong(str) : new Random().nextLong(); + RNG = new Random(seed); + System.out.printf("-Dseed=%d%n", seed); + } + + public static final long TEST_LIMIT; + static { + String str = System.getProperty("testLimit"); + TEST_LIMIT = str != null ? Long.parseUnsignedLong(str) : 2_000L; + System.out.printf("-DtestLimit=%d%n", TEST_LIMIT); + } + + public static final int MAX_ARITY = 254; + public static final String MISSING_ARG = "missingArg"; + public static final String MISSING_ARG_2 = "missingArg#2"; + + private static final int + // first int value + ONE_MILLION = (1000 * 1000), + // scale factor to reach upper 32 bits + TEN_BILLION = (10 * 1000 * 1000 * 1000), + // <<1 makes space for sign bit; + INITIAL_ARG_VAL = ONE_MILLION << 1; + + public static final MethodHandle AS_LIST; + + static { + try { + AS_LIST = MethodHandles.lookup().findStatic( + Arrays.class, "asList", + MethodType.methodType(List.class, Object[].class)); + } catch (NoSuchMethodException | IllegalAccessException ex) { + throw new Error(ex); + } + } + + public static boolean isDoubleCost(Class<?> aClass) { + return aClass == double.class || aClass == long.class; + } + + private static List<List<Object>> calledLog = new ArrayList<>(); + private static long nextArgVal; + + public static void assertCalled(String name, Object... args) { + assertCalled(0, name, args); + } + + public static void assertCalled(int lag, String name, Object... args) { + Object expected = logEntry(name, args); + Object actual = getCalled(lag); + Asserts.assertEQ(expected, actual, "method call w/ lag = " + lag); + } + + public static Object called(String name, Object... args) { + List<Object> entry = logEntry(name, args); + calledLog.add(entry); + return entry; + } + + private static List<Object> logEntry(String name, Object... args) { + return Arrays.asList(name, Arrays.asList(args)); + } + + public static void clear() { + calledLog.clear(); + } + + public static List<Object> getCalled(int lag) { + int size = calledLog.size(); + return size <= lag ? null : calledLog.get(size - lag - 1); + } + + public static MethodHandle addTrailingArgs(MethodHandle target, int nargs, + List<Class<?>> classes) { + int targetLen = target.type().parameterCount(); + int extra = (nargs - targetLen); + if (extra <= 0) { + return target; + } + List<Class<?>> fakeArgs = new ArrayList<>(extra); + for (int i = 0; i < extra; ++i) { + fakeArgs.add(classes.get(i % classes.size())); + } + return MethodHandles.dropArguments(target, targetLen, fakeArgs); + } + + public static MethodHandle varargsList(int arity) { + return AS_LIST.asCollector(Object[].class, arity); + } + + private static long nextArg(boolean moreBits) { + long val = nextArgVal++; + long sign = -(val & 1); // alternate signs + val >>= 1; + if (moreBits) + // Guarantee some bits in the high word. + // In any case keep the decimal representation simple-looking, + // with lots of zeroes, so as not to make the printed decimal + // strings unnecessarily noisy. + { + val += (val % ONE_MILLION) * TEN_BILLION; + } + return val ^ sign; + } + + private static int nextArg() { + // Produce a 32-bit result something like ONE_MILLION+(smallint). + // Example: 1_000_042. + return (int) nextArg(false); + } + + private static long nextArg(Class<?> kind) { + if (kind == long.class || kind == Long.class || + kind == double.class || kind == Double.class) + // produce a 64-bit result something like + // ((TEN_BILLION+1) * (ONE_MILLION+(smallint))) + // Example: 10_000_420_001_000_042. + { + return nextArg(true); + } + return (long) nextArg(); + } + + private static Object randomArg(Class<?> param) { + Object wrap = castToWrapperOrNull(nextArg(param), param); + if (wrap != null) { + return wrap; + } + + if (param.isInterface()) { + for (Class<?> c : param.getClasses()) { + if (param.isAssignableFrom(c) && !c.isInterface()) { + param = c; + break; + } + } + } + if (param.isArray()) { + Class<?> ctype = param.getComponentType(); + Object arg = Array.newInstance(ctype, 2); + Array.set(arg, 0, randomArg(ctype)); + return arg; + } + if (param.isInterface() && param.isAssignableFrom(List.class)) { + return Arrays.asList("#" + nextArg()); + } + if (param.isInterface() || param.isAssignableFrom(String.class)) { + return "#" + nextArg(); + } + + try { + return param.newInstance(); + } catch (InstantiationException | IllegalAccessException ex) { + } + return null; // random class not Object, String, Integer, etc. + } + + public static Object[] randomArgs(Class<?>... params) { + Object[] args = new Object[params.length]; + for (int i = 0; i < args.length; i++) { + args[i] = randomArg(params[i]); + } + return args; + } + + public static Object[] randomArgs(int nargs, Class<?> param) { + Object[] args = new Object[nargs]; + for (int i = 0; i < args.length; i++) { + args[i] = randomArg(param); + } + return args; + } + + public static Object[] randomArgs(int nargs, Class<?>... params) { + Object[] args = new Object[nargs]; + for (int i = 0; i < args.length; i++) { + Class<?> param = params[i % params.length]; + args[i] = randomArg(param); + } + return args; + } + + public static Object[] randomArgs(List<Class<?>> params) { + return randomArgs(params.toArray(new Class<?>[params.size()])); + } + + private static Object castToWrapper(Object value, Class<?> dst) { + Object wrap = null; + if (value instanceof Number) { + wrap = castToWrapperOrNull(((Number) value).longValue(), dst); + } + if (value instanceof Character) { + wrap = castToWrapperOrNull((char) (Character) value, dst); + } + if (wrap != null) { + return wrap; + } + return dst.cast(value); + } + + @SuppressWarnings("cast") + // primitive cast to (long) is part of the pattern + private static Object castToWrapperOrNull(long value, Class<?> dst) { + if (dst == int.class || dst == Integer.class) { + return (int) (value); + } + if (dst == long.class || dst == Long.class) { + return (long) (value); + } + if (dst == char.class || dst == Character.class) { + return (char) (value); + } + if (dst == short.class || dst == Short.class) { + return (short) (value); + } + if (dst == float.class || dst == Float.class) { + return (float) (value); + } + if (dst == double.class || dst == Double.class) { + return (double) (value); + } + if (dst == byte.class || dst == Byte.class) { + return (byte) (value); + } + if (dst == boolean.class || dst == boolean.class) { + return ((value % 29) & 1) == 0; + } + return null; + } +} diff --git a/jdk/test/sun/java2d/DrawXORModeTest.java b/jdk/test/sun/java2d/DrawXORModeTest.java new file mode 100644 index 00000000000..973c9a4a55b --- /dev/null +++ b/jdk/test/sun/java2d/DrawXORModeTest.java @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute 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 8036022 + * @summary Test verifies that drawing shapes with XOR composite + * does not trigger an InternalError in GDI surface data. + * @run main/othervm -Dsun.java2d.d3d=True DrawXORModeTest + */ +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Stroke; +import java.awt.geom.Line2D; +import java.util.concurrent.CountDownLatch; + +public class DrawXORModeTest extends Component { + + public static void main(String[] args) { + final DrawXORModeTest c = new DrawXORModeTest(); + + final Frame f = new Frame("XOR mode test"); + f.add(c); + f.pack(); + + f.setVisible(true); + + try { + c.checkResult(); + } finally { + f.dispose(); + } + } + + @Override + public void paint(Graphics g) { + if (g == null || !(g instanceof Graphics2D)) { + return; + } + g.setColor(Color.white); + g.setXORMode(Color.black); + Graphics2D dg = (Graphics2D) g; + Stroke stroke = new BasicStroke(1, BasicStroke.CAP_BUTT, + BasicStroke.JOIN_MITER, + 10.0f, + new float[]{1.0f, 1.0f}, + 0.0f); + dg.setStroke(stroke); + try { + dg.draw(new Line2D.Float(10, 10, 20, 20)); + } catch (Throwable e) { + synchronized (this) { + theError = e; + } + } finally { + didDraw.countDown(); + } + } + + @Override + public Dimension getPreferredSize() { + return new Dimension(400, 100); + } + + public void checkResult() { + try { + didDraw.await(); + } catch (InterruptedException e) { + } + + synchronized (this) { + if (theError != null) { + System.out.println("Error: " + theError); + + throw new RuntimeException("Test FAILED."); + } + } + System.out.println("Test PASSED."); + + } + + private Throwable theError = null; + + private final CountDownLatch didDraw = new CountDownLatch(1); +} diff --git a/jdk/test/sun/tools/jinfo/Basic.sh b/jdk/test/sun/tools/jinfo/Basic.sh index 8d4b01238fd..445ccf333f5 100644 --- a/jdk/test/sun/tools/jinfo/Basic.sh +++ b/jdk/test/sun/tools/jinfo/Basic.sh @@ -40,6 +40,7 @@ startApplication SimpleApplication "${PORTFILE}" # all return statuses are checked in this test set +e +set -x failed=0 @@ -71,16 +72,6 @@ if [ $runSA = true ]; then # no option ${JINFO} -J-XX:+UsePerfData -F $appJavaPid if [ $? != 0 ]; then failed=1; fi - - # -flag option - ${JINFO} -J-XX:+UsePerfData -F -flag +PrintGC $appJavaPid - if [ $? != 0 ]; then failed=1; fi - - ${JINFO} -J-XX:+UsePerfData -F -flag -PrintGC $appJavaPid - if [ $? != 0 ]; then failed=1; fi - - ${JINFO} -J-XX:+UsePerfData -F -flag PrintGC $appJavaPid - if [ $? != 0 ]; then failed=1; fi fi # -sysprops option