 
Table 5-1 lists the various Permission subclasses, the target and action names they support, and the methods that require those permissions (in Java 1.2 and later).
| Permission | Target, Action | Methods | 
|---|---|---|
| AWT-Permission | "accessClipboard" | Toolkit.getSystemClipboard() | 
| "accessEventQueue" | Toolkit.getSystemEventQueue() | |
| "listenToAllAWTEvents" | Toolkit.{addAWTEventListener(), removeAWTEventListener()} | |
| "readDisplayPixels" | Graphics2D.setComposite() | |
| "showWindowWithout-WarningBanner" | Window.Window() (if permission is not granted, window has an "insecure" indication) | |
| File-Permission | command, "execute" | Runtime.exec() | 
| filename, "delete" | File.{delete(), deleteOnExit()} | |
| File-Permission | filename, "read" | FileInputStream.FileInputStream(), File.{exists(), canRead(), isFile(), isDirectory(), isHidden(), lastModified(), length(), list(), listFiles()}, RandomAccessFile.RandomAccessFile(), ZipFile.ZipFile() | 
| filename, "write" | FileOutputStream.FileOutputStream(), File.{canWrite(), createNewFile(), createTempFile(), mkdir(), mkdirs(), renameTo(), setLastModified(), setReadOnly()}, RandomAccessFile.RandomAccessFile() | |
| Net-Permission | "requestPassword-Authentication" | Authenticator.requestPassword-Authentication() | 
| "setDefaultAuthenticator" | Authenticator.setDefault() | |
| "specifyStreamHandler" | URL.URL() | |
| Property-Permission | "*", "read, write" | Beans.{setDesignTime(), setGuiAvailable()}, Introspector.setBeanInfo-SearchPath(), PropertyEditorManager.{register-Editor(), setEditorSearchPath()}, System.{getProperties(), setProperties()} | 
| "user.language", "write" | Locale.setDefault() | |
| prop, "read" | System.getProperty() | |
| prop, "write" | System.setProperty() | |
| Reflect-Permission | "suppressAccessChecks" | AccessibleObject.setAccessible() | 
| Runtime-Permission | "accessClassIn- Package.pkgname " | Class.{getClasses(), getDeclaredClasses(), getConstructor(), getConstructors(), getDeclaredFields(), getDeclaredMethods(), getDeclaredConstructors(), getDeclaredField(), getDeclaredMethod(), getDeclaredConstructor(), | 
| Runtime-Permission | getFields(), getMethods(), getField(), getMethod()} | |
| "accessDeclaredMembers" | Class.{getClasses(), getDeclaredClasses(), getDeclaredFields(), getDeclaredMethods(), getDeclaredConstructors(), getDeclaredField(), getDeclaredMethod(), getDeclaredConstructor()} | |
| "createClassLoader" | ClassLoader.Class-Loader(), URLClassLoader.URL-ClassLoader(), SecureClassLoader.Secure-ClassLoader() | |
| "exitVM" | Runtime.{exit(), runFinalizersOnExit()}, System.{exit(), runFinalizersOnExit()} | |
| "getClassLoader" | Class.{forName(), getClassLoader()}, ClassLoader.{getSystemClassLoader(), getParent()}, Thread.getContextClassLoader() | |
| "getProtectionDomain" | Class.getProtectionDomain() | |
| "loadLibrary.libName " | Runtime.{load(), loadLibrary()}, System.{load(), loadLibrary()} | |
| "modifyThread" | Thread.{checkAccess(), interrupt(), suspend(), resume(), setPriority(), setName(), setDaemon()}, ThreadGroup.{interrupt(), stop()} | |
| "modifyThreadGroup" | Thread.{Thread(), enumerate()}, ThreadGroup.{ThreadGroup(), enumerate(), getParent(), interrupt(), setDaemon(), setMaxPriority(), stop(), suspend(), resume(), destroy()} | |
| "queuePrintJob" | Toolkit.getPrintJob() | |
| "readFileDescriptor" | FileInputStream.File-InputStream(FileDescriptor) | |
| "setContextClassLoader" | Thread.setContextClassLoader() | |
| Runtime-Permission | "setFactory" | ServerSocket.setSocketFactory(), Socket.setSocketImplFactory(), URL.setURLStream-HandlerFactory(), URLConnection.{setContent-HandlerFactory(), setFileNameMap()}, HttpURLConnection.set-FollowRedirects(), activation.Activation-Group.{createGroup(), setSystem()}, server.RMISocketFactory.set-SocketFactory() | 
| "setIO" | System.{setIn(), setOut(), setErr()} | |
| "setSecurityManager" | System.setSecurityManager() | |
| "stopThread" | Thread.stop(), ThreadGroup.stop() | |
| "writeFileDescriptor" | FileOutputStream.File-OutputStream(FileDescriptor) | |
| Security- | "addIdentityCertificate" | Identity.addCertificate() | 
| Permission | "clearProvider- Properties.provider " | Provider.clear() | 
| "getPolicy" | Policy.getPolicy() | |
| "getProperty.propname " | Security.getProperty() | |
| "getSignerPrivateKey" | Signer.getPrivateKey() | |
| "insertProvider.provider " | Security.{addProvider(), insertProviderAt()} | |
| "printIdentity" | Identity.toString() | |
| "putProvider- Property.provider " | Provider.put() | |
| "removeIdentityCertificate" | Identity.removeCertificate() | |
| "removeProvider.provider " | Security.removeProvider() | |
| "removeProvider- Property.provider " | Provider.remove() | |
| "setIdentityInfo" | Identity.setInfo(String) | |
| "setIdentityPublicKey" | Identity.setPublicKey() | |
| "setPolicy" | Policy.setPolicy(); | |
| "setProperty.propname " | Security.setProperty() | |
| "setSignerKeypair" | Signer.setKeyPair() | |
| "setSystemScope" | IdentityScope.setSystemScope() | |
| Serializable-Permission | "enableSubclass- Implementation" | ObjectInputStream.Object-InputStream(), ObjectOutputStream.Object-OutputStream() | 
| "enableSubstitution" | ObjectInputStream.enable-ResolveObject(), ObjectOutputStream.enable-ReplaceObject() | |
| Socket-Permission | "localhost:port ", "listen" | ServerSocket.ServerSocket(), DatagramSocket.DatagramSocket(), MulticastSocket.MulticastSocket() | 
| host, "accept, connect" | MulticastSocket.{joinGroup(), leaveGroup(), send()} | |
| host, "resolve" | InetAddress.{getHostName(), getAllByName(), getLocalHost()}, DatagramSocket.getLocalAddress() | |
| host:port, "accept" | DatagramSocket.receive(), ServerSocket.{accept(), implAccept()} | |
| host:port, "connect" | 

Copyright © 2001 O'Reilly & Associates. All rights reserved.