This is the implementation of JEP 486: Permanently Disable the Security 
Manager. See [JEP 486](https://openjdk.org/jeps/486) for more details. The 
[CSR](https://bugs.openjdk.org/browse/JDK-8338412) describes in detail the main 
changes in the JEP and also includes an apidiff of the specification changes.

NOTE: the majority (~95%) of the changes in this PR are test updates 
(removal/modifications) and API specification changes, the latter mostly to 
remove `@throws SecurityException`. The remaining changes are primarily the 
removal of the `SecurityManager`, `Policy`, `AccessController` and other 
Security Manager API implementations. There is very little new code.

The code changes can be broken down into roughly the following categories:

1. Degrading the behavior of Security Manager APIs to either throw Exceptions 
by default or provide an execution environment that disallows access to all 
resources by default.
2. Changing hundreds of methods and constructors to no longer throw a 
`SecurityException` if a Security Manager was enabled. They will operate as 
they did in JDK 23 with no Security Manager enabled.
3. Changing the `java` command to exit with a fatal error if a Security Manager 
is enabled.
4. Removing the hotspot native code for the privileged stack walk and the 
inherited access control context. The remaining hotspot code and tests related 
to the Security Manager will be removed immediately after integration - see 
[JDK-8341916](https://bugs.openjdk.org/browse/JDK-8341916).
5. Removing or modifying hundreds of tests. Many tests that tested Security 
Manager behavior are no longer relevant and thus have been removed or modified.

There are a handful of Security Manager related tests that are failing and are 
at the end of the `test/jdk/ProblemList.txt`, `test/langtools/ProblemList.txt` 
and `test/hotspot/jtreg/ProblemList.txt` files - these will be removed or 
separate bugs will be filed before integrating this PR. 

Inside the JDK, we have retained calls to `SecurityManager::getSecurityManager` 
and `AccessController::doPrivileged` for now, as these methods have been 
degraded to behave the same as they did in JDK 23 with no Security Manager 
enabled. After we integrate this JEP, those calls will be removed in each area 
(client-libs, core-libs, security, etc).

I don't expect each reviewer to review all the code changes in this JEP. 
Rather, I advise that you only focus on the changes for the area (client-libs, 
core-libs, net, security, etc) that you are most familiar with.

-------------

Commit messages:
 - Merge remote-tracking branch 'jdk-sandbox/jep486' into JDK-8338411
 - Merge
 - fix setOpenURIHandler docs
 - Merge remote-tracking branch 'jdk-sandbox/jep486' into JDK-8338411
 - Fix whitespace
 - Merge
 - Merge remote-tracking branch 'jdk-sandbox/jep486' into JDK-8338411
 - Remove windows-specific policy file as it is no longer needed.
 - clientlibs: Updated Problemlist JBS ID for 
javax/swing/JPopupMenu/6694823/bug6694823.java
 - Merge
 - ... and 73 more: https://git.openjdk.org/jdk/compare/a601cd2e...d05122fb

Changes: https://git.openjdk.org/jdk/pull/21498/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21498&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8338411
  Stats: 63777 lines in 1825 files changed: 935 ins; 59236 del; 3606 mod
  Patch: https://git.openjdk.org/jdk/pull/21498.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21498/head:pull/21498

PR: https://git.openjdk.org/jdk/pull/21498

Reply via email to