## What's New in Eclipse 4.30 (Platform)

Here are descriptions of some of the more interesting or significant changes made to the Eclipse Platform for the 4.30 release of Eclipse. They are grouped into:

- Security
- General Updates

Plug-in developers will also be interested in the corresponding What's new document in the plug-in developer's guide.

We also recommend to read the Tips and Tricks.

## Security

p2 Director Application Security

To provide similar security controls as available in the IDE, the following command-line arguments are now supported the p2 director application:

-trustSignedContentOnly | -tsco
  Whether to trust each artifact only if it is jar-signed or PGP-signed.
-trustedAuthorities | -ta <comma separated list>
  The authorities from which repository content, including repository metadata, is trusted. An empty value will reject all remote connections.
-trustedPGPKeys | -tk <comma separated list>
  The fingerprints of PGP keys to trust as signers of artifacts. An empty value will reject all PGP keys.
-trustedCertificates | -tc <comma separated list>
  The SHA-256 'fingerprints' of unanchored certificates to trust as signers of artifacts. An empty value will reject all unanchored certificates.
-verboseTrust | -vt
  Whether to print detailed information about the content trust.

## General Updates

Support for Jakarta Annotations by Eclipse E4

The Eclipse E4 Platform Dependency Injector now supports annotations from the `jakarta.inject` and `jakarta.annotation` package.

Plug-in developers are encouraged to migrate their E4 application model element classes to use for example `jakarta.inject.Inject` instead of `javax.inject.Inject` or `jakarta.annotation.PostConstruct` instead of `javax.annotation.PostConstruct`. At the moment annotations from both namespaces `jakarta` and `javax` are supported.

The support for annotations from the `javax.inject` and `javax.annotation` package is now deprecated and will be removed in a future release, after a deprecation period of at least two years. If it necessary to make a Plug-in compatible with past versions (that don't support `jakarta` annotations), recent and future versions (that don't support `javax` annotations) of the E4-Injector, it can be considered to apply the annotations from both namespaces simultaneously and to import the packages from both namespaces only optionally. But this strategy does not work for usages of the `javax/jakarta.inject.Provider` and should generally be used with caution and be verified in detail for more complex setups.

The Eclipse SDK itself already has been migrated off these annotations from the `javax` namespace to the `jakarta` replacements and therefore does not pull the former into a target-platform anymore. If your application still needs these `javax` annotations you potentially have to add them explicitly to your target using entries like:

      <unit id="jakarta.inject.jakarta.inject-api" version="1.0.5"/>
      <unit id="jakarta.annotation-api" version="1.3.5"/>

Counterintuitively the `javax` annotations are provided by a bundle with the same symbolic name as their `jakarta` successor but with a 1.x version, while the jakarta successors have a 2.x version. It is therefore necessary to specify the version explicitly since those bundles are not required in their latest version.

New Http Client Backend for P2

The ECF Backend used by P2 has switched to use the httpjava-client to lower the dependency chain and efforts to maintain certain third party libraries.

For now Eclipse will ship both, the new and the old backend while the newer one takes precedence. If you see any issues please proceed as follows:

1. Collect as much data as possible, e.g. is a proxy used, are the site you want contact password protected, your os and similar what could be useful or is know to diverge from standard desktop environment settings.
2. Open an issue here with the description of the problem and the collected data.
3. Consider providing a test-case for P2 to make sure your use-case is covered now and in the future and will not break again
4. Configure your `eclipse.ini` to include `-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclientjava` unless the problem is fixed