Files
helidon/CHANGELOG.md
2020-10-16 15:37:36 -07:00

1129 lines
82 KiB
Markdown

# Changelog
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
For Helidon 1.x releases please see [Helidon 1.x CHANGELOG.md](https://github.com/oracle/helidon/blob/helidon-1.x/CHANGELOG.md)
## [2.1.1-SNAPSHOT]
## [2.1.0]
2.1.0 is a minor release of Helidon. It contains bug fixes and enhancements. Notable changes:
- MicroProfile 3.3 support
- New Helidon SE Fault Tolerance implementation. This also replaces Hystrix in the MicroProfile
Fault Tolerance implementation.
### Compatibility
2.1.0 is API compatible with previous releases of 2.0. There are some minor
behavioral changes:
- Security: To remove accidental propagation of identity, all security providers that support outbound
security were updated to only do outbound security when configured so. All of these providers
now have an `outbound` configuration section that can define outbound targets. Documentation of
providers was updated to match this new approach and is available in both MP and SE docs.
- Custom jlink images produced by the helidon-mave-plugin now have a -jri suffix.
So the path to start your application looks something like:
target/helidon-quickstart-se-jri/bin/start
### CHANGES
- Config: Git config native-image support [2400](https://github.com/oracle/helidon/pull/2400)
- Config: Injection of web target with correct endpoint. [2380](https://github.com/oracle/helidon/pull/2380)
- Config: Config now supports merging of objects and lists [2448](https://github.com/oracle/helidon/pull/2448)
- DBClient: integration tests for MySQL, MadiaDB, PostgreSQL and MS SQL [2383](https://github.com/oracle/helidon/pull/2383)
- DBClient: Fix NPE on error in tx [2286](https://github.com/oracle/helidon/pull/2437)
- DataSource: Use Config.getPropertyNames() instead of retrieving getPropertyNames() from ConfigSources [2322](https://github.com/oracle/helidon/pull/2322)
- Fault Tolerance: Implementation of MP FT 2.1.1 using FT SE [2348](https://github.com/oracle/helidon/pull/2348)
- Fault Tolerance: Limit module visibility by making several classes package private [2359](https://github.com/oracle/helidon/pull/2359)
- Fault Tolerance: Name support for all those operations that implement FtHandler [2404](https://github.com/oracle/helidon/pull/2404)
- Fault Tolerance: Updated test to verify @CircuitBreaker does not interfere with request scope [2387](https://github.com/oracle/helidon/pull/2387)
- Fault Tolerance: Updates to FT tests to take advantage of @HelidonTest [2370](https://github.com/oracle/helidon/pull/2370)
- JAX-RS: Allow user-provided CDI extensions to veto JAX-RS classes [2429](https://github.com/oracle/helidon/pull/2429)
- JAX-RS: Jersey update to version 2.32 [2406](https://github.com/oracle/helidon/pull/2406)
- Media: DataChunkedInputStream deadlock protection removed [2401](https://github.com/oracle/helidon/pull/2401)
- Media: Update MediaType, lazy non known type, read-only parameters map [2308](https://github.com/oracle/helidon/pull/2308)
- Media: media-jackson native-image support [2385](https://github.com/oracle/helidon/pull/2385)
- Messaging: Messaging health check [2352](https://github.com/oracle/helidon/pull/2352)
- Messaging: Log Kafka sending error which caused channel cancel [2447](https://github.com/oracle/helidon/pull/2447)
- Metrics: Avoid race condition by using ConcurrentHashMap [2435](https://github.com/oracle/helidon/pull/2435)
- Metrics: Update release of Prometheus Java client (in 2.x) [2419](https://github.com/oracle/helidon/pull/2419)
- Native Image: When class is annotated with @MappedSuperclass, its private fields can't be accessed from JPA with native image [2127](https://github.com/oracle/helidon/pull/2127)
- Native image: Tyrus server support for native-image in SE [2097](https://github.com/oracle/helidon/pull/2097)
- Native image: Windows native-image fix [2336](https://github.com/oracle/helidon/pull/2336)
- Native image: Use latest version for helidon plugin to include native image fix. [2374](https://github.com/oracle/helidon/pull/2374)
- OpenAPI: Use CDI to instantiate Application classes to invoke getClasses [2325](https://github.com/oracle/helidon/pull/2325)
- Reactive: Multi discrepancies [2413](https://github.com/oracle/helidon/pull/2413)
- Reactive: Single.never not singleton [2349](https://github.com/oracle/helidon/pull/2349)
- Security: Added support for remote host and port to jersey and security 2.x [2368](https://github.com/oracle/helidon/pull/2368)
- Security: Disable automatic propagation from security providers [2357](https://github.com/oracle/helidon/pull/2357)
- Security: OIDC fixes [2378](https://github.com/oracle/helidon/pull/2378)
- Security: Support for methods in outbound targets. [2335](https://github.com/oracle/helidon/pull/2335)
- Testing: Intermittent test failure fix [2347](https://github.com/oracle/helidon/pull/2347)
- Testing: MP Testing [2353](https://github.com/oracle/helidon/pull/2353)
- Testing: Update surefire and failsafe to 3.0.0-M5 [2307](https://github.com/oracle/helidon/pull/2307)
- Testing: Junit4 upgrade [2450](https://github.com/oracle/helidon/pull/2450)
- Tracing: Update to later release of MP OpenTracing [2313](https://github.com/oracle/helidon/pull/2313)
- WebClient: Changes of the request via WebClientService are now propagated [2321](https://github.com/oracle/helidon/pull/2321)
- WebClient: Webclient uses relative uri in request instead of full uri [2309](https://github.com/oracle/helidon/pull/2309)
- WebServer: ClassPathContentHandler can survive tmp folder cleanup [2361](https://github.com/oracle/helidon/pull/2361)
- WebServer: Enable support for HTTP compression in the webserver [2379](https://github.com/oracle/helidon/pull/2379)
- WebServer: Secure static content [2411](https://github.com/oracle/helidon/pull/2411)
- WebServer: WebSocket Extensions [1934](https://github.com/oracle/helidon/pull/1934)
- WebServer: Public API to get absolute URI of the request [2441](https://github.com/oracle/helidon/pull/2441)
- WebServer: Attempt to start a stopped server will fail with IllegalStateException [2439](https://github.com/oracle/helidon/pull/2439)
- gRPC: Fix issue with gRPC clients and services where method signatures have types with nested generics [2283](https://github.com/oracle/helidon/pull/2283)
- gRPC: Update gRPC Version [2388](https://github.com/oracle/helidon/pull/2388)
- CDI: Service class fixed. [2317](https://github.com/oracle/helidon/pull/2317)
- CDI: CDI.current().getBeanManager() now available during shutdown [2438](https://github.com/oracle/helidon/pull/2438)
- Examples: Fix 2391 Bug in generated Dockerfile.native from quickstart-mp [2393](https://github.com/oracle/helidon/pull/2393)
- Examples: Update standalone quickstarts. [2360](https://github.com/oracle/helidon/pull/2360)
- Examples: Updated maven surefire plugin to helidon-standalone-quickstart-mp [1849](https://github.com/oracle/helidon/pull/1849)
- Documentation improvements: [2428](https://github.com/oracle/helidon/pull/2428) [2399](https://github.com/oracle/helidon/pull/2399) [2410](https://github.com/oracle/helidon/pull/2410) [2390](https://github.com/oracle/helidon/pull/2390) [2329](https://github.com/oracle/helidon/pull/2329) [2397](https://github.com/oracle/helidon/pull/2397) [2367](https://github.com/oracle/helidon/pull/2367) [2363](https://github.com/oracle/helidon/pull/2363) [2351](https://github.com/oracle/helidon/pull/2351) [2328](https://github.com/oracle/helidon/pull/2328) [2457](https://github.com/oracle/helidon/pull/2457) [2443](https://github.com/oracle/helidon/pull/2443)
## [2.0.2]
2.0.2 is a bug fix release to Helidon 2.0. It contains bug fixes and minor enhancements.
This release upgrades MicroProfile support to Health 2.2 and Metrics 2.3.2.
This release contains experimental support for fault tolerance APIs in Helidon SE. These
APIs are unstable and will likely change in future releases.
### Changes
- WebServer: Added support for HTTP PATCH on Helidon SE [2284](https://github.com/oracle/helidon/pull/2284)
- WebServer: Redundant filter execution fix [2276](https://github.com/oracle/helidon/pull/2276)
- WebServer: Use all configured fields. [2192](https://github.com/oracle/helidon/pull/2192)
- WebServer: Upgrade to Netty 4.1.51 [2204](https://github.com/oracle/helidon/pull/2204)
- WebServer: Form params ampersand and no value fix [2227](https://github.com/oracle/helidon/pull/2227)
- WebServer: Fix failures caused by memory leak when sending bad requests. [2260](https://github.com/oracle/helidon/pull/2260)
- WebServer: Configuration of server socket(s) [2189](https://github.com/oracle/helidon/pull/2189)
- WebServer: to enable netty log handler output, please use logger `io.helidon.webserver.NettyWebServer$NettyLog` and set it to `FINEST` level
- WebClient: Native smoke test for webclient [2112](https://github.com/oracle/helidon/pull/2112)
- WebClient: Intermittent test failure with keep-alive enabled fix [2238](https://github.com/oracle/helidon/pull/2238)
- WebClient: redirection to path fix [2150](https://github.com/oracle/helidon/pull/2150)
- WebClient: request id added and logging messages updated [2257](https://github.com/oracle/helidon/pull/2257)
- WebClient: support keep-alive [2139](https://github.com/oracle/helidon/pull/2139)
- WebClient: to enable netty log handler output, please use logger `io.helidon.webclient.NettyClientInitializer$ClientNettyLog` and set it to `FINEST` level
- Security injection in application scope. [2154](https://github.com/oracle/helidon/pull/2154)
- Security: Fix for P-521 curve - wrong id 2.x [2281](https://github.com/oracle/helidon/pull/2281)
- Security can now be disabled. [2157](https://github.com/oracle/helidon/pull/2157)
- Security CDI extension has higher priority [2299](https://github.com/oracle/helidon/pull/2299)
- Reactive: Allow cancellation of Future's wrapped in Single's and vice versa [2288](https://github.com/oracle/helidon/pull/2288)
- Reactive: Flaky MultiFromNotTrustedInputStreamTckTest fix [2218](https://github.com/oracle/helidon/pull/2218)
- Reactive: Debugging log operator [1874](https://github.com/oracle/helidon/pull/1874)
- Reactive: Single add forSingle and exceptionallyAccept [2121](https://github.com/oracle/helidon/pull/2121)
- Reactive: Kafka connector topic pattern [2242](https://github.com/oracle/helidon/pull/2242)
- Reactive: Buffer single-byte writes in MultiFromOutputStream for better performance [2133](https://github.com/oracle/helidon/pull/2133)
- Reactive: Backpressure counter race condition fix [2250](https://github.com/oracle/helidon/pull/2250)
- Native image update [2078](https://github.com/oracle/helidon/pull/2078)
- Native Image: Support for non-String parameters in JAX-RS for native image [2303](https://github.com/oracle/helidon/pull/2303)
- Metrics: Remove FinalRegistry and its use for the base registry; part of move to MP metrics 2.3 [2188](https://github.com/oracle/helidon/pull/2188)
- Metrics: Missing metric [2235](https://github.com/oracle/helidon/pull/2235)
- Metrics: Fixes a few problems in metrics [2240](https://github.com/oracle/helidon/pull/2240)
- Metrics: Add support for MP Metrics 2.3 [2245](https://github.com/oracle/helidon/pull/2245)
- Messaging: Kafka message default ack npe fix [2252](https://github.com/oracle/helidon/pull/2252)
- Media Support: Upgrade Jackson to 2.11.1 [2162](https://github.com/oracle/helidon/pull/2162)
- Meida Support: Upgrade Yasson to 1.0.8 [2254](https://github.com/oracle/helidon/pull/2254)
- Media Support: Multipart postfix fix [2233](https://github.com/oracle/helidon/pull/2233)
- Media Support: Multipart decoder rework [2193](https://github.com/oracle/helidon/pull/2193)
- Media Support: Media support for forms improved [2144](https://github.com/oracle/helidon/pull/2144)
- Media Support: Flush streamed datachunk one by one [2129](https://github.com/oracle/helidon/pull/2129)
- JPA: Upgrading to the latest version of the Eclipselink Maven plugin and aligning Eclipselink version to correspond with it. [2138](https://github.com/oracle/helidon/pull/2138)
- JPA: Upgrade Hibernate to 5.4.18.Final [2212](https://github.com/oracle/helidon/pull/2212)
- JPA: Use Session.getDatasourceLogin() instead of Session.getLogin() in CDISEPlatform.java [2263](https://github.com/oracle/helidon/pull/2263)
- Health: Support MP health 2.2 [2264](https://github.com/oracle/helidon/pull/2264)
- Health: Health check now non-blocking using fault tolerance async and timeout [2237](https://github.com/oracle/helidon/pull/2237)
- Fault tolerance for SE (experimental) [2120](https://github.com/oracle/helidon/pull/2120)
- Fault Tolerance: Location of the default value for header validation changed [2228](https://github.com/oracle/helidon/pull/2228)
- Fault Tolerance: Make sure request scope is propagated to newly created threads in FT [2229](https://github.com/oracle/helidon/pull/2229)
- Examples: Add app.yaml to quickstart archetypes. Update k8s support in docs. [2141](https://github.com/oracle/helidon/pull/2141)
- Examples: Update microprofile examples to use microprofile-config.properties [2163](https://github.com/oracle/helidon/pull/2163)
- Examples: Swapped ports in mutual TLS example [2184](https://github.com/oracle/helidon/pull/2184)
- Examples: Quickstart gradle fixes [2214](https://github.com/oracle/helidon/pull/2214)
- Examples: Change Dockerfiles to use maven.test.skip (not skipTests) [2135](https://github.com/oracle/helidon/pull/2135)
- Examples: Add -Declipselink.weave.skip to quickstart Dockerfiles [2146](https://github.com/oracle/helidon/pull/2146)
- Docs: update MP tutorial to be correct for Helidon 2.0 [2152](https://github.com/oracle/helidon/pull/2152)
- Docs: replaced table with new cards/icons [2185](https://github.com/oracle/helidon/pull/2185)
- Docs: fix minor issues #2081 #427 [2119](https://github.com/oracle/helidon/pull/2119)
- Docs: Move CLI documentation to a single page under About [2148](https://github.com/oracle/helidon/pull/2148)
- Docs: Minor doc fixes #2093 #2086 #2085 [2118](https://github.com/oracle/helidon/pull/2118)
- Docs: Migration Guides: add section for Getters returning Optional. Fix code blocks. [2217](https://github.com/oracle/helidon/pull/2217)
- Docs: Corrected dependency information in the JPA guide for MP. [2198](https://github.com/oracle/helidon/pull/2198)
- Docs: #2221 Fixes API reference in Metrics docs [2232](https://github.com/oracle/helidon/pull/2232)
- Docs: tls updates [2256](https://github.com/oracle/helidon/pull/2256)
- CLI: Create cli-data for snapshot builds [2137](https://github.com/oracle/helidon/pull/2137)
- CDI: Upgrade Weld to 3.1.4 [2177](https://github.com/oracle/helidon/pull/2177)
- CDI: Support for bean producers in different package than beans that have … [2241](https://github.com/oracle/helidon/pull/2241)
- CDI: Introduces an ExecutorServices implementation to Helidon's repackaged Weld implementation to ensure context classloaders are never null [2269](https://github.com/oracle/helidon/pull/2269)
- Archetypes: Properly use path() when creating invocations [2116](https://github.com/oracle/helidon/pull/2116)
- Archetypes: Added <relativePath/> to avoid warnings [2117](https://github.com/oracle/helidon/pull/2117)
- Tests: Weaken test assertion for executions in very slow systems [2287](https://github.com/oracle/helidon/pull/2287)
- Tests: Set junit4 version where used. Fixes #2289 [2290](https://github.com/oracle/helidon/pull/2290)
- Tests: Removed unnecessary plugin versions, now inherited. [2181](https://github.com/oracle/helidon/pull/2181)
## [2.0.1]
2.0.1 is a minor bug fix release to Helidon 2.0.0. This release fixes a
key issue in Config as well as some issues in documentation and
example archetypes.
### Fixes
- Config: Support for SE mappers in MP. [2091](https://github.com/oracle/helidon/pull/2091)
- Archetype fails on maven version detection on some Linux distributions [2102](https://github.com/oracle/helidon/issues/2102) [2106](https://github.com/oracle/helidon/pull/2106)
- Archetypes: Some fixes and improvements to the db archetypes [2100](https://github.com/oracle/helidon/pull/2100)
- GraalVM: Update docs, READMEs, Dockerfiles to graalvm 20.1.0 [2103](https://github.com/oracle/helidon/pull/2103)
- Docs: add basic documentation for CLI [2101](https://github.com/oracle/helidon/pull/2101) [2094](https://github.com/oracle/helidon/pull/2094)
## [2.0.0]
Helidon 2.0.0 is a major release that includes significant new features and fixes.
As a major release it also includes some backward incompatible API changes.
See section below.
### Notable New Features
- Helidon MP GraalVM Native Image support (in addition to existing Helidon SE GraalVM Native Image support)
- Jakarta WebSocket support
- CORS support
- Easy generation of jlink custom runtime images including support for CDS archives for improved startup performance
- Move to Java 11 APIs
- Move to Jakarta EE APIs
- Improved discovery and handling of JAX-RS applications
- New MediaSupport API
- Plus many other minor features and fixes
The following are early access features that are ready for developer use:
- Helidon SE reactive Web Client
- Helidon SE reactive DB Client
- MicroProfile Reactive Streams Operators
- MicroProfile Reactive Streams Messaging
- The Helidon CLI for creating new projects and fast iterative development
For more information see our documentation at
[Helidon 2.0.0 Documentation ](https://helidon.io/docs/v2/#/about/01_overview)
### Changes
Changes between 2.0.0-RC2 and 2.0.0:
- Config: SE Config can be created from MP Config [2060](https://github.com/oracle/helidon/pull/2060)
- Native image: Upgrade svm, annotation for reflection [2070](https://github.com/oracle/helidon/pull/2070)
- Native image: JPA tests and native-image build changes [2014](https://github.com/oracle/helidon/pull/2014)
- Native image updates [2050](https://github.com/oracle/helidon/pull/2050)
- Native Image: Oracle DB with JPA [2044](https://github.com/oracle/helidon/pull/2044)
- WebServer: Content now extends Multi [2043](https://github.com/oracle/helidon/pull/2043)
- MediaSupport: media support deprecations cleanup [2068](https://github.com/oracle/helidon/pull/2068)
- Reactive: Cancelling race condition fix [2027](https://github.com/oracle/helidon/pull/2027)
- Security: Secure and httpOnly used correctly in SetCookie [2056](https://github.com/oracle/helidon/pull/2056)
- Archetypes: Update MP db archetype to compile with native image. [2073](https://github.com/oracle/helidon/pull/2073)
- Archetypes: DB Archetypes: README updates for native support [2065](https://github.com/oracle/helidon/pull/2065)
- Archetypes: Remove unused import from template [2048](https://github.com/oracle/helidon/pull/2048)
- Documentation: update for AOT. [2045](https://github.com/oracle/helidon/pull/2045)
- Documentation: Collapsible docs menus / integrate build-tools 2.0.0 [2067](https://github.com/oracle/helidon/pull/2067)
- Documentation: Docs cleanup [2074](https://github.com/oracle/helidon/pull/2074)
- Documentation: Various AsciiDoctor warning fixes [2072](https://github.com/oracle/helidon/pull/2072)
- Documentation: intro for JWT auth - link to mp spec [2069](https://github.com/oracle/helidon/pull/2069)
- Documentation: Fixed broken links; added new [2071](https://github.com/oracle/helidon/pull/2071)
- Documentatino: SE Messaging doc [2029](https://github.com/oracle/helidon/pull/2029)
- Documentation: WebClient doc update [2064](https://github.com/oracle/helidon/pull/2064)
- Documentation: fixed broken links in the intro [2022](https://github.com/oracle/helidon/pull/2022)
### Backward incompatible changes
In order to stay current with dependencies and also refine our APIs we have
introduced some backward incompatible changes in this release. For details
see the
[Helidon 2.0 MP Migration Guide](https://helidon.io/docs/v2/#/mp/guides/15_migration)
and the
[Helidon 2.0 SE Migration Guide](https://helidon.io/docs/v2/#/se/guides/15_migration)
#### Thank You!
Thanks to community members [dansiviter](https://github.com/dansiviter), [graemerocher](https://github.com/graemerocher) ,
and [akarnokd](https://github.com/akarnokd) for their contributions to this release.
## [2.0.0-RC2]
### Notes
This is the second release candidate of Helidon 2.0.
### Notable New Features
This release focuses on documentation, bug fixes, performance fixes and cleanup.
Also, a number of deprecated methods have been removed from this release. See
"Remove deprecations" in the list below.
### Changes
- CORS: Change CORS config key from path-prefix to path-expr; method names also [1807](https://github.com/oracle/helidon/pull/1807)
- Config: Decrypt AES method made visible [2003](https://github.com/oracle/helidon/pull/2003)
- Config: Fix #1802 - Allow use of filters and mappers when converting MP to He… [1803](https://github.com/oracle/helidon/pull/1803)
- Config: Log warning if a known configuration file exists and we have no parser [1853](https://github.com/oracle/helidon/pull/1853)
- Config: Using SafeConstructor with YAML parsing. [2019](https://github.com/oracle/helidon/pull/2019)
- Config: Fixes StackOverflowError unearthed by new MicroProfile Config implementation [1760](https://github.com/oracle/helidon/pull/1760)
- DBClient: doc for issue 1629 [1652](https://github.com/oracle/helidon/pull/1652)
- DBClient: api update to reactive [1828](https://github.com/oracle/helidon/pull/1828)
- DBClient: JSON-P Streaming support [1796](https://github.com/oracle/helidon/pull/1796)
- FaultTolerance: Wait for thread completion only if interrupted flag set [1843](https://github.com/oracle/helidon/pull/1843)
- Features: Experimental feature support. [2018](https://github.com/oracle/helidon/pull/2018)
- Features: Feature refactoring [1944](https://github.com/oracle/helidon/pull/1944)
- Health check fixed [1809](https://github.com/oracle/helidon/pull/1809)
- JAX-RS @Provider autodiscovery [1880](https://github.com/oracle/helidon/pull/1880)
- JDBC: Updated UCP version to always be in sync with Oracle's OJDBC8 version since the two artifacts are mutually dependent [1831](https://github.com/oracle/helidon/pull/1831)
- Jersey: connector to Helidon WebClient [1932](https://github.com/oracle/helidon/pull/1932)
- Jersey: Correctly disable Jersey WADL support and built-in providers. [1971](https://github.com/oracle/helidon/pull/1971)
- Jersey: Make the helidon-jersey-connector module discoverable by Jersey if available [2008](https://github.com/oracle/helidon/pull/2008)
- Jersey: Upgrading Jersey to version 2.31 [1887](https://github.com/oracle/helidon/pull/1887)
- Kafka specific message [1890](https://github.com/oracle/helidon/pull/1890)
- Media Support: DataChunkInputStream more then one close does not throw exception [1904](https://github.com/oracle/helidon/pull/1904)
- Media Support: lazy accepted types parsing [1921](https://github.com/oracle/helidon/pull/1921)
- Media Support: flattening [1899](https://github.com/oracle/helidon/pull/1899)
- Media Support: methods [1905](https://github.com/oracle/helidon/pull/1905)
- Media Support: DataChunk ByteBuffer array [1877](https://github.com/oracle/helidon/pull/1877)
- Media Support: DataChunkInputStream can cause deadlock if handled by the same thread… [1825](https://github.com/oracle/helidon/pull/1825)
- Media Support: DataChunkInputStream char duplication fix [1824](https://github.com/oracle/helidon/pull/1824)
- Media Support: Fix handling of generics when reading objects [1769](https://github.com/oracle/helidon/pull/1769)
- Media Support: Service loader added to MediaContext [1861](https://github.com/oracle/helidon/pull/1861)
- Messaging: Messaging with Kafka examples [2016](https://github.com/oracle/helidon/pull/2016)
- Metrics: Fail deployment for Gauges in RequestScoped beans [1978](https://github.com/oracle/helidon/pull/1978)
- Metrics: Remove MP Metrics 1.0-to-2.0 bridge component and related classes [1879](https://github.com/oracle/helidon/pull/1879)
- MicroProfile: Changed name of SyntheticApplication to HelidonMP [1812](https://github.com/oracle/helidon/pull/1812)
- MicroProfile: Container startup issue fixed. [1912](https://github.com/oracle/helidon/pull/1912)
- Modules: Module and Java 12+ friendly way of defining classes for Weld Proxies. [1967](https://github.com/oracle/helidon/pull/1967)
- Native Image: Database native support update [2028](https://github.com/oracle/helidon/pull/2028)
- Native Image: MP native image no longer misses bean types for proxies. [1988](https://github.com/oracle/helidon/pull/1988)
- Native image fixes for new Jersey version. [1910](https://github.com/oracle/helidon/pull/1910)
- Native image: AOT (native image) documentation for Helidon. [1989](https://github.com/oracle/helidon/pull/1989)
- Native image: Remove obsolete configuration file. [1927](https://github.com/oracle/helidon/pull/1927)
- Native image: Welcome file for classpath static content in native image [1980](https://github.com/oracle/helidon/pull/1980)
- Reactive: Use EmittingPublisher in OutputStreamPublisher to remove busy waiting [1900](https://github.com/oracle/helidon/pull/1900)
- Reactive: Alias for concatArray [1826](https://github.com/oracle/helidon/pull/1826)
- Reactive: BufferedEmittingPublisher as replacement for OriginThreadPublisher [1830](https://github.com/oracle/helidon/pull/1830)
- Reactive: BufferedEmittingPublisher draining race condition fix [1928](https://github.com/oracle/helidon/pull/1928)
- Reactive: Deprecated Multi#from [1888](https://github.com/oracle/helidon/pull/1888)
- Reactive: Emit after close fix [1856](https://github.com/oracle/helidon/pull/1856)
- Reactive: EmittingPublisher cleanup [1923](https://github.com/oracle/helidon/pull/1923)
- Reactive: Multi await feature for intentional blocking [1664](https://github.com/oracle/helidon/pull/1664)
- Reactive: Multi from InputStream [1770](https://github.com/oracle/helidon/pull/1770)
- Reactive: Multi onComplete operators [1806](https://github.com/oracle/helidon/pull/1806)
- Reactive: MultiFromOutputStream blocking close refactor [1943](https://github.com/oracle/helidon/pull/1943)
- Reactive: ReadableByteChannelPublisher executor leak [1924](https://github.com/oracle/helidon/pull/1924)
- Reactive: Reimplement Concat with varargs [1815](https://github.com/oracle/helidon/pull/1815)
- Reactive: Remove OriginThreadPublisher [1859](https://github.com/oracle/helidon/pull/1859)
- Reactive: ResponseCloser now supports Single [1883](https://github.com/oracle/helidon/pull/1883)
- Reactive: Revert filters as function instead of reactive processors. [1917](https://github.com/oracle/helidon/pull/1917)
- Reactive: SE Reactive Messaging [1636](https://github.com/oracle/helidon/pull/1636)
- Reactive: Single onCancel and OnComplete fixes [1814](https://github.com/oracle/helidon/pull/1814)
- Reactive: Trigger Single stream only in terminal ops [1864](https://github.com/oracle/helidon/pull/1864)
- Reactive: Trigger Single to CS conversion on first CS method call [1886](https://github.com/oracle/helidon/pull/1886)
- Security: Rearrange the messages which report missing config [1810](https://github.com/oracle/helidon/pull/1810)
- Security: Security level memory leak [2013](https://github.com/oracle/helidon/pull/2013)
- Security: master: correctly validate mandatory JWT claims. [2011](https://github.com/oracle/helidon/pull/2011)
- Tracing performance optimization. [1916](https://github.com/oracle/helidon/pull/1916)
- WebClient: API changed from CompletionStage to Single [1832](https://github.com/oracle/helidon/pull/1832)
- WebClient: API update [1870](https://github.com/oracle/helidon/pull/1870)
- WebClient: automatic system loader [1903](https://github.com/oracle/helidon/pull/1903)
- WebClientL minor proxy fixes [1792](https://github.com/oracle/helidon/pull/1792)
- WebClient: SSL in WebClient and WebServer changed to TLS [2006](https://github.com/oracle/helidon/pull/2006)
- WebClient: TemporalUnit methods removed [2004](https://github.com/oracle/helidon/pull/2004)
- WebClient/DBClient: Alignment of client service APIs between Db and Web Clients. [1863](https://github.com/oracle/helidon/pull/1863)
- WebServer API to use Single and Multi [1882](https://github.com/oracle/helidon/pull/1882)
- WebServer configuration changes [1766](https://github.com/oracle/helidon/pull/1766)
- WebServer: Allows proxying of ServerRequest v2.x/master [1878](https://github.com/oracle/helidon/pull/1878)
- WebServer: Check Netty validation of headers before processing request [1827](https://github.com/oracle/helidon/pull/1827)
- WebServer: Fix #1711 StaticContentHandler fails with encoded URLs [1811](https://github.com/oracle/helidon/pull/1811)
- WebServer: Lazy list for even lazier acceptedTypes parsing [1940](https://github.com/oracle/helidon/pull/1940)
- WebServer: Multipart [1787](https://github.com/oracle/helidon/pull/1787)
- WebServer: Mutual TLS implementation, example and tests [1992](https://github.com/oracle/helidon/pull/1992)
- WebServer: Socket configuration changes. [1844](https://github.com/oracle/helidon/pull/1844)
- WebServer: Static content handlers now use explicit writers. [1922](https://github.com/oracle/helidon/pull/1922)
- WebServer: Updated SSL Configuration for WebServer [1852](https://github.com/oracle/helidon/pull/1852)
- WebSockets example: HTML page for user experience [1946](https://github.com/oracle/helidon/pull/1946)
- gRPC: client API improvements (2.0) [1851](https://github.com/oracle/helidon/pull/1851)
- gRPC: Add JSONB support to gRPC [1836](https://github.com/oracle/helidon/pull/1836)
- gRPC: Minor gRPC 2.0 fixes and improvements [1959](https://github.com/oracle/helidon/pull/1959)
- gRPC: Minor gRPC fixes (2.0) [1951](https://github.com/oracle/helidon/pull/1951)
- gRPC: Revert "Minor gRPC fixes (2.0)" [1956](https://github.com/oracle/helidon/pull/1956)
- Archetypes: (and other examples) typo [1981](https://github.com/oracle/helidon/pull/1981)
- Archetypes: catalog [1898](https://github.com/oracle/helidon/pull/1898)
- Archetypes: Fixed tag in catalog [2036](https://github.com/oracle/helidon/pull/2036)
- Archetypes: New DB archetype for SE [1982](https://github.com/oracle/helidon/pull/1982)
- Archetypes: New application types (templates) for the CLI [1797](https://github.com/oracle/helidon/pull/1797)
- Archetypes: Quickstart archetypes for SE and MP [2035](https://github.com/oracle/helidon/pull/2035)
- Archetypes: Renamed archetype to helidon-bare-mp [2021](https://github.com/oracle/helidon/pull/2021)
- Archetypes: Renamed basic archetype to bare [1839](https://github.com/oracle/helidon/pull/1839)
- Archetypes: Use helidon-archetype packaging [1889](https://github.com/oracle/helidon/pull/1889)
- Archetypes: isolate the helidon-maven-plugin extension [2023](https://github.com/oracle/helidon/pull/2023)
- Deprecations: Remove deprecations [1884](https://github.com/oracle/helidon/pull/1884) [1885](https://github.com/oracle/helidon/pull/1885) [1892](https://github.com/oracle/helidon/pull/1892)
- Docs: helidon intro 1625 [1701](https://github.com/oracle/helidon/pull/1701)
- Docs: helidon se intro 1626 [1729](https://github.com/oracle/helidon/pull/1729)
- Docs: Add CORS MP and SE doc [1895](https://github.com/oracle/helidon/pull/1895)
- Docs: Fix broken link in prerequisite page to quickstart example [1996](https://github.com/oracle/helidon/pull/1996)
- Docs: Fix formatting issues with included guides [1771](https://github.com/oracle/helidon/pull/1771)
- Docs: Fixed SE Config Guide typos from issue 1649 [1993](https://github.com/oracle/helidon/pull/1993)
- Docs: Fixed tables in Security Providers - issue 1599 [1848](https://github.com/oracle/helidon/pull/1848)
- Docs: Helidon MP 2.0 Intro [1653](https://github.com/oracle/helidon/pull/1653)
- Docs: Mp config docs [1935](https://github.com/oracle/helidon/pull/1935)
- Docs: New doc section for FT documenting internal config properties [2020](https://github.com/oracle/helidon/pull/2020)
- Docs: Update 3rd party attributions. Renamed 3RD-PARTY to THIRD_PARTY_LICEN… [2024](https://github.com/oracle/helidon/pull/2024)
- Docs: Update NOTICE.txt and include in artifacts [1945](https://github.com/oracle/helidon/pull/1945)
- Docs: Update SE docs for changed APIs [1970](https://github.com/oracle/helidon/pull/1970)
- Docs: Updated migration guides. [1920](https://github.com/oracle/helidon/pull/1920)
- Docs: WebClient Intro doc updated with changes [1659](https://github.com/oracle/helidon/pull/1659)
- Docs: migration guides [1829](https://github.com/oracle/helidon/pull/1829)
- Docs: updated mp jpa intro - added link to mp jpa guide and API [1953](https://github.com/oracle/helidon/pull/1953)
- Tests: Add tolerance to metrics tests; widen tolerance used during pipeline runs (2.x) [1999](https://github.com/oracle/helidon/pull/1999)
- Tests: Decrease the number of events of KafkaCdiExtensionTest [1763](https://github.com/oracle/helidon/pull/1763)
- Tests: Fix intermittent test failure in GrpcServiceTest. [1947](https://github.com/oracle/helidon/pull/1947)
- Tests: Fix test failing on windows [1919](https://github.com/oracle/helidon/pull/1919)
- Tests: Fixed archetype test based on API changes [1818](https://github.com/oracle/helidon/pull/1818)
- Tests: MP Messaging hamcrestination [1765](https://github.com/oracle/helidon/pull/1765)
- Tests: Move test dependencies into main pom [1938](https://github.com/oracle/helidon/pull/1938)
- Tests: Moving 2 tests from KafkaMP to KafkaSE [1918](https://github.com/oracle/helidon/pull/1918)
- Tests: Properly stop wiremock after rest-client tcks [1939](https://github.com/oracle/helidon/pull/1939)
- Tests: Redesign in Kafka tests [1847](https://github.com/oracle/helidon/pull/1847)
- Tests: Removes mp-test-libs bundle [1813](https://github.com/oracle/helidon/pull/1813)
- Tests: Sometimes KafkaCdiExtensionTest fails [1816](https://github.com/oracle/helidon/pull/1816)
- Examples: Add trademark notices for Pokemon [2034](https://github.com/oracle/helidon/pull/2034)
- Examples: WIP: New JPA example and archetype using Pokemons [1933](https://github.com/oracle/helidon/pull/1933)
### Backward incompatible changes
#### WebClient and WebServer TLS class names aligned
Class configuration names for TLS are now aligned between WebClient and WebServer
| Old Name | New Name |
| ------------------------ | ------------------ |
| `Ssl` | `WebClientTls` |
| `TlsConfig` | `WebServerTls` |
#### Thank You!
Thanks to community members [dansiviter](https://github.com/dansiviter) and [graemerocher](https://github.com/graemerocher)
for their contributions to this release.
## [2.0.0-RC1]
### Notes
This is the first release candidate of Helidon 2.0.
### Notable New Features
This release primarily focuses on finalizing APIs for 2.0. It also includes a number
of performance and bug fixes. We expect APIs to be pretty stable between this
release and the final 2.0.0 release.
### Changes
- CORS: Change CORS config key from path-prefix to path-expr; method names also [1807](https://github.com/oracle/helidon/pull/1807)
- Config: Fix #1802 - Allow use of filters and mappers when converting MP to He… [1803](https://github.com/oracle/helidon/pull/1803)
- Config: Log warning if a known configuration file exists and we have no parser [1853](https://github.com/oracle/helidon/pull/1853)
- Config: Rearrange the messages which report missing config [1810](https://github.com/oracle/helidon/pull/1810)
- DBClient: DB client api update to reactive [1828](https://github.com/oracle/helidon/pull/1828)
- DBClient: JSON-P Streaming support [1796](https://github.com/oracle/helidon/pull/1796)
- FaultTolerance: Wait for thread completion only if interrupted flag set [1843](https://github.com/oracle/helidon/pull/1843)
- Health: Health check fixed [1809](https://github.com/oracle/helidon/pull/1809)
- JAX-RS: JAX-RS @Provider autodiscovery [1880](https://github.com/oracle/helidon/pull/1880)
- JDBC: Updated UCP version to always be in sync with Oracle's OJDBC8 version since the two artifacts are mutually dependent [1831](https://github.com/oracle/helidon/pull/1831)
- MediaSupport: DataChunkInputStream char duplication fix [1824](https://github.com/oracle/helidon/pull/1824)
- MediaSupport: Fix handling of generics when reading objects [1769](https://github.com/oracle/helidon/pull/1769)
- MediaSupport: Media support flattening [1899](https://github.com/oracle/helidon/pull/1899)
- MediaSupport: Media support methods [1905](https://github.com/oracle/helidon/pull/1905)
- MediaSupport: Revert context to original read only parameters. [1819](https://github.com/oracle/helidon/pull/1819)
- MediaSupport: Service loader added to MediaContext [1861](https://github.com/oracle/helidon/pull/1861)
- Metrics: Remove MP Metrics 1.0-to-2.0 bridge component and related classes [1879](https://github.com/oracle/helidon/pull/1879)
- MicroProfile: Changed name of SyntheticApplication to HelidonMP [1812](https://github.com/oracle/helidon/pull/1812)
- MicroProfile: Container startup issue fixed. [1912](https://github.com/oracle/helidon/pull/1912)
- NativeImage:Native image fixes for new Jersey version. [1910](https://github.com/oracle/helidon/pull/1910)
- OCI ObjectStore: Fixes StackOverflowError unearthed by new MicroProfile Config implementation [1760](https://github.com/oracle/helidon/pull/1760)
- Performance: DataChunk ByteBuffer array [1877](https://github.com/oracle/helidon/pull/1877)
- Performance: Media lazy accepted types parsing [1921](https://github.com/oracle/helidon/pull/1921)
- Performance: Tracing performance optimization. [1916](https://github.com/oracle/helidon/pull/1916)
- Reactive: Alias for concatArray [1826](https://github.com/oracle/helidon/pull/1826)
- Reactive: BufferedEmittingPublisher as replacement for OriginThreadPublisher [1830](https://github.com/oracle/helidon/pull/1830)
- Reactive: Decrease the number of events of KafkaCdiExtensionTest [1763](https://github.com/oracle/helidon/pull/1763)
- Reactive: Deprecated Multi#from [1888](https://github.com/oracle/helidon/pull/1888)
- Reactive: Emit after close fix [1856](https://github.com/oracle/helidon/pull/1856)
- Reactive: Kafka specific message [1890](https://github.com/oracle/helidon/pull/1890)
- Reactive: Multi await feature for intentional blocking [1664](https://github.com/oracle/helidon/pull/1664)
- Reactive: Multi from InputStream [1770](https://github.com/oracle/helidon/pull/1770)
- Reactive: Multi onComplete operators [1806](https://github.com/oracle/helidon/pull/1806)
- Reactive: Redesign in Kafka tests [1847](https://github.com/oracle/helidon/pull/1847)
- Reactive: Reimplement Concat with varargs [1815](https://github.com/oracle/helidon/pull/1815)
- Reactive: Remove OriginThreadPublisher [1859](https://github.com/oracle/helidon/pull/1859)
- Reactive: ResponseCloser now supports Single [1883](https://github.com/oracle/helidon/pull/1883)
- Reactive: Revert filters as function instead of reactive processors. [1917](https://github.com/oracle/helidon/pull/1917)
- Reactive: SE Reactive Messaging [1636](https://github.com/oracle/helidon/pull/1636)
- Reactive: Single onCancel and OnComplete fixes [1814](https://github.com/oracle/helidon/pull/1814)
- Reactive: Sometimes KafkaCdiExtensionTest fails [1816](https://github.com/oracle/helidon/pull/1816)
- Reactive: Trigger Single stream only in terminal ops [1864](https://github.com/oracle/helidon/pull/1864)
- Reactive: Trigger Single to CS conversion on first CS method call [1886](https://github.com/oracle/helidon/pull/1886)
- Reactive: Use EmittingPublisher in OutputStreamPublisher to remove busy waiting [1900](https://github.com/oracle/helidon/pull/1900)
- Security: Fixed tables in Security Providers - issue 1599 [1848](https://github.com/oracle/helidon/pull/1848)
- WebClient DBClient: Alignment of client service APIs between Db and Web Clients. [1863](https://github.com/oracle/helidon/pull/1863)
- WebClient: API changed from CompletionStage to Single [1832](https://github.com/oracle/helidon/pull/1832)
- WebClient: WebClient API update [1870](https://github.com/oracle/helidon/pull/1870)
- WebClient: automatic system loader [1903](https://github.com/oracle/helidon/pull/1903)
- WebClient: minor proxy fixes [1792](https://github.com/oracle/helidon/pull/1792)
- WebServer: Check Netty validation of headers before processing request [1827](https://github.com/oracle/helidon/pull/1827)
- WebServer: DataChunkInputStream can cause deadlock if handled by the same thread… [1825](https://github.com/oracle/helidon/pull/1825)
- WebServer: DataChunkInputStream more then one close does not throw exception [1904](https://github.com/oracle/helidon/pull/1904)
- WebServer: Fix #1711 StaticContentHandler fails with encoded URLs [1811](https://github.com/oracle/helidon/pull/1811)
- WebServer: Multipart [1787](https://github.com/oracle/helidon/pull/1787)
- WebServer: Socket configuration changes. [1844](https://github.com/oracle/helidon/pull/1844)
- WebServer: Updated SSL Configuration for WebServer [1852](https://github.com/oracle/helidon/pull/1852)
- WebServer: WebServer API to use Single and Multi [1882](https://github.com/oracle/helidon/pull/1882)
- WebServer: configuration changes [1766](https://github.com/oracle/helidon/pull/1766)
- gRPC: Add JSONB support to gRPC [1836](https://github.com/oracle/helidon/pull/1836)
- gRPC: gRPC client API improvements (2.0) [1851](https://github.com/oracle/helidon/pull/1851)
- Build: enable unstable pipeline status [1768](https://github.com/oracle/helidon/pull/1768)
- CLI: Archetype catalog [1898](https://github.com/oracle/helidon/pull/1898)
- CLI: Configure helidon-maven-plugin extension for all apps [1896](https://github.com/oracle/helidon/pull/1896)
- CLI: New application types (templates) for the CLI [1797](https://github.com/oracle/helidon/pull/1797)
- CLI: Renamed basic archetype to bare [1839](https://github.com/oracle/helidon/pull/1839)
- CLI: Use helidon-archetype packaging [1889](https://github.com/oracle/helidon/pull/1889)
- Dependencies: Upgrading Jersey to version 2.31 [1887](https://github.com/oracle/helidon/pull/1887)
- Deprecations: Remove deprecations [1884](https://github.com/oracle/helidon/pull/1884) [1885](https://github.com/oracle/helidon/pull/1885) [1892](https://github.com/oracle/helidon/pull/1892)
- Documentatino: Fix formatting issues with included guides [1771](https://github.com/oracle/helidon/pull/1771)
- Documentation: Add CORS MP and SE doc [1895](https://github.com/oracle/helidon/pull/1895)
- Documentation: Docs helidon intro 1625 [1701](https://github.com/oracle/helidon/pull/1701)
- Documentation: Docs helidon se intro 1626 [1729](https://github.com/oracle/helidon/pull/1729)
- Documentation: Updated migration guides. [1920](https://github.com/oracle/helidon/pull/1920)
- Documentation: migration guides [1829](https://github.com/oracle/helidon/pull/1829)
- Tests: Fix test failing on windows [1919](https://github.com/oracle/helidon/pull/1919)
### Backward incompatible changes
#### gRPC: Renamed several annotations and classes
As part of gRPC API cleanup, we have renamed the following annotations and classes:
| Old Name | New Name |
| ------------------------ | ------------------ |
| `@RpcService` | `@Grpc` |
| `@RpcMethod` | `@GrpcMethod` |
| `@GrpcServiceProxy` | `@GrpcProxy` |
| `GrpcClientProxyBuilder` | `GrpcProxyBuilder` |
While in general we prefer not to break backwards compatibility by renaming public API
classes, we felt that in this case the change was warranted and acceptable, for several reasons:
1. gRPC API was marked experimental in Helidon 1.x
2. While using gRPC in our own applications, we have realized that the code in some cases
does not read as well as it should, and that some class and annotation names should be changed
to improve both internal API consistency and readability
We apologize for the inconvenience, but we do feel that the impact of the changes is minimal
and that the changes will be beneficial in the long run.
#### Internal `helidon-common-metrics` and Related Classes Removed
Later releases of Helidon 1.x included the `helidon-common-metrics` component and related
classes which provided a common interface to ease the transition from MicroProfile
Metrics 1.x to 2.x.
Although intended for use only by Helidon subsystems rather than
by developers and users, the component and its contents had to be public so multiple Helidon
subsystems could use them.
Therefore, user code might have used these elements.
This release removes this common interface and associated classes.
Any user code that used these internal classes can use the corresponding supported classes in
`io.helidon.metrics:helidon-metrics` and MicroProfile Metrics 2.0 instead.
|Helidon Artifact |Interfaces/Classes |
|--------------|----------------|
|`io.helidon.common:helidon-common-metrics` |Entire artifact, including all `io.helidon.common.metrics...` classes |
|`io.helidon.metrics:helidon-metrics` |`HelidonMetadata` |
| |`InternalBridgeImpl` |
| |`InternalMetadataBuilderImpl` |
| |`InternalMetadataImpl` |
| |`InternalMetricIDImpl` |
## [2.0.0-M3]
### Notes
This is the third milestone release of Helidon 2.0. It contains significant new features,
enhancements and fixes. It also contains backward incompatible changes (see section below).
This milestone release is provided for customers that want early access to Helidon 2.0. It
should be considered unstable and is not intended for production use. APIs and features might
not be fully tested and are subject to change. Documentation is incomplete. Those looking
for a stable release should use a 1.4 release.
### Notable New Features
* Messaging API for SE
* Kafka connector
* CORS support
* Move to Jakarta EE dependencies
* New MediaSupport API
### Changes
- Build: New build infra [1605](https://github.com/oracle/helidon/pull/1605)
- CORS: Add CORS support for SE and MP applications to 2.x [1633](https://github.com/oracle/helidon/pull/1633)
- CORS: Add CORS support to built-in Helidon services [1670](https://github.com/oracle/helidon/pull/1670)
- CORS: Examples [1727](https://github.com/oracle/helidon/pull/1727) [1747](https://github.com/oracle/helidon/pull/1747)
- CORS: processing should only be enabled on successful responses [1683](https://github.com/oracle/helidon/pull/1683)
- CORS: Avoid setting response headers twice [1679](https://github.com/oracle/helidon/pull/1679)
- CORS: Fix CorsSupport default behavior [1714](https://github.com/oracle/helidon/pull/1714)
- CORS: Fix incorrect matching of resource methods annotated with @OPTIONS [1744](https://github.com/oracle/helidon/pull/1744)
- CORS: Fix isActive computation [1682](https://github.com/oracle/helidon/pull/1682)
- CORS: Improve handling of missing config nodes used to init CORS objects [1709](https://github.com/oracle/helidon/pull/1709)
- CORS: Make clear which methods expect mapped vs. lower-level CORS config nodes [1700](https://github.com/oracle/helidon/pull/1700)
- CORS: Unbundle MP CORS from MP bundle; bolster utility method [1672](https://github.com/oracle/helidon/pull/1672)
- Dependencies: Bump version.plugin.helidon to 2.0.0-M2 [1535](https://github.com/oracle/helidon/pull/1535)
- Dependencies: Dependency convergence + jakarta libraries. [1600](https://github.com/oracle/helidon/pull/1600)
- Dependencies: Update to jakarta GAV for CORS MP [1660](https://github.com/oracle/helidon/pull/1660)
- Dependencies: Upgrade grpc to follow Netty version used by Helidon. [1614](https://github.com/oracle/helidon/pull/1614)
- Docker: Don't remove lib/liblcms.so on graalvm docker image minimization [1577](https://github.com/oracle/helidon/pull/1577)
- Docker: Upgrade docker image to graalvm-ce-java11-linux-amd64-20.0.0 [1569](https://github.com/oracle/helidon/pull/1569)
- Docs: Add custom runtime image guide, maven guide, gradle guide, refactored native image guide. [1639](https://github.com/oracle/helidon/pull/1639)
- Docs: Helidon Reactive documentation [1483](https://github.com/oracle/helidon/pull/1483)
- Docs: Under Construction pages, icons [1586](https://github.com/oracle/helidon/pull/1586)
- Docs: Update javadoc links in documentation to work with new javadoc layout [1754](https://github.com/oracle/helidon/pull/1754)
- Docs: Updated Config SPI documentation. [1691](https://github.com/oracle/helidon/pull/1691)
- Docs: [WIP] Documentation refactoring [1514](https://github.com/oracle/helidon/pull/1514)
- Docs: update slack link to use slack.helidon.io [1665](https://github.com/oracle/helidon/pull/1665)
- Examples: 2.0 update example Dockerfiles [1706](https://github.com/oracle/helidon/pull/1706)
- Examples: DB Example now correctly non-blocking [1584](https://github.com/oracle/helidon/pull/1584)
- Examples: Fixes for MP quickstart in native image. [1564](https://github.com/oracle/helidon/pull/1564)
- Examples: Mp messaging example [1479](https://github.com/oracle/helidon/pull/1479)
- Examples: Update examples [1715](https://github.com/oracle/helidon/pull/1715)
- Examples: Update quickstarts (including MP) to use new GraalVM 20 docker image. [1576](https://github.com/oracle/helidon/pull/1576)
- Examples: use application pom, clean up READMEs [1680](https://github.com/oracle/helidon/pull/1680)
- GRPC: Move gRPC integration tests to correct location [1621](https://github.com/oracle/helidon/pull/1621)
- GRPC: Port change for #1618 to 2.0 [1686](https://github.com/oracle/helidon/pull/1686)
- JDBC: Updated Oracle JDBC driver Maven coordinates. [1723](https://github.com/oracle/helidon/pull/1723)
- JPA: Fixed JPA example [1746](https://github.com/oracle/helidon/pull/1746)
- JPA: Removes assertions that do not hold when alternatives and specialization are in play [1556](https://github.com/oracle/helidon/pull/1556)
- MP Config: MP Config fixes [1721](https://github.com/oracle/helidon/pull/1721)
- MP Config: Support for mutable config sources to remove regression (even though … [1667](https://github.com/oracle/helidon/pull/1667)
- MediaSupport: MediaSupport usage redesigned [1720](https://github.com/oracle/helidon/pull/1720)
- Messaging: Channel properties must override connector config [1616](https://github.com/oracle/helidon/pull/1616)
- Messaging: Kafka support [1510](https://github.com/oracle/helidon/pull/1510)
- Metrics: Improve metrics interceptor performance; avoid MetricID creations - 2.x [1602](https://github.com/oracle/helidon/pull/1602)
- Metrics: Removed unnecessary synchronization in metrics registry [1575](https://github.com/oracle/helidon/pull/1575)
- MicroProfile: Fix ordering of static content and Jersey on server startup [1675](https://github.com/oracle/helidon/pull/1675)
- MicroProfile: Restart support for CDI regardless of mode used. [1613](https://github.com/oracle/helidon/pull/1613)
- Native Image: Enable reflection init of NioSocketChannel with native image [1722](https://github.com/oracle/helidon/pull/1722)
- Native Image: MP native image updates [1694](https://github.com/oracle/helidon/pull/1694)
- Native Image: OpenAPI support for native-image [1553](https://github.com/oracle/helidon/pull/1553)
- OpenAPI: Do not use cached URLs for locating the Jandex indexes [1590](https://github.com/oracle/helidon/pull/1590)
- OpenAPI: Include dynamically-registered apps in just-in-time jandex index 2.x [1555](https://github.com/oracle/helidon/pull/1555)
- OpenAPI: Order the apps to run by class name to provide more predictable ordering [1593](https://github.com/oracle/helidon/pull/1593)
- Reactive: Function compatible mapper [1637](https://github.com/oracle/helidon/pull/1637)
- Reactive: New implementation of PublisherInputStream that improves performance and fixes race conditions [1690](https://github.com/oracle/helidon/pull/1690)
- Reactive: OutputStreamPublisher now handles close on its own. [1732](https://github.com/oracle/helidon/pull/1732)
- Reactive: Reactive cleanup [1572](https://github.com/oracle/helidon/pull/1572)
- Reactive: Route cancellation to a background thread for the TCK's sake [1608](https://github.com/oracle/helidon/pull/1608)
- Reactive: Try a different TestNG annotation for the TCK test [1571](https://github.com/oracle/helidon/pull/1571)
- Reactive: Add more time to MultiTimeoutFallbackTckTest [1717](https://github.com/oracle/helidon/pull/1717)
- Reactive: Apply bugfixes from #1511 [1543](https://github.com/oracle/helidon/pull/1543)
- Reactive: FIXMEs and signature corrections [1579](https://github.com/oracle/helidon/pull/1579)
- Reactive: Fix Multi.flatMap losing items on the fastpath when conditions are not met [1669](https://github.com/oracle/helidon/pull/1669)
- Reactive: Fix Multi.timeout onSubscribe/schedule race violating the spec [1674](https://github.com/oracle/helidon/pull/1674)
- Reactive: Fluent conversion via compose() & to() [1592](https://github.com/oracle/helidon/pull/1592)
- Reactive: Implement observeOn + TCK tests [1546](https://github.com/oracle/helidon/pull/1546)
- Reactive: Implement retry() + TCK tests [1541](https://github.com/oracle/helidon/pull/1541)
- Reactive: Implement timeout() + TCK tests [1532](https://github.com/oracle/helidon/pull/1532)
- Reactive: Reduce the overhead of flatMapIterable + minor fixes [1563](https://github.com/oracle/helidon/pull/1563)
- Reactive: Reimplement Microprofile-RS, fix operators, add from(CS) [1511](https://github.com/oracle/helidon/pull/1511)
- Reactive: Reorganize methods, remove Single.mapMany [1603](https://github.com/oracle/helidon/pull/1603)
- Reactive: Verify flatMap doesn't reorder items from the same source [1687](https://github.com/oracle/helidon/pull/1687)
- Reactive: Workaround for an RS 1.0.3 TCK bug [1568](https://github.com/oracle/helidon/pull/1568)
- Security: Scope audience and scopes now correctly appended. [1728](https://github.com/oracle/helidon/pull/1728)
- Security: Support for IDCS specific feature in OIDC config. [1688](https://github.com/oracle/helidon/pull/1688)
- Test: Add support for native-image tests to smoketest script [1622](https://github.com/oracle/helidon/pull/1622)
- Test: Fix keys and certs used in gRPC TLS/SSL tests [1597](https://github.com/oracle/helidon/pull/1597)
- Test: Tweak smoketest.sh script and fix typos in MP quickstart readme [1550](https://github.com/oracle/helidon/pull/1550)
- Test: Unit test fix to work with daylight savings. [1598](https://github.com/oracle/helidon/pull/1598)
- Test: Update bookstore test to work with modulepath [1617](https://github.com/oracle/helidon/pull/1617)
- Tests: Improved testing for DataChunkInputStream [1692](https://github.com/oracle/helidon/pull/1692)
- Tracing: Support for TracerResolver. [1574](https://github.com/oracle/helidon/pull/1574)
- WebClient: Proxy changed from interface to class [1537](https://github.com/oracle/helidon/pull/1537)
- WebClient: Several minor fixes and improvements to WebClient [1751](https://github.com/oracle/helidon/pull/1751)
- WebClient: WebClient example added [1539](https://github.com/oracle/helidon/pull/1539)
- WebClient: WebClient used in SE examples and tests [1646](https://github.com/oracle/helidon/pull/1646)
- WebServer: Changed the default context root for Websocket endpoints [1624](https://github.com/oracle/helidon/pull/1624)
- WebServer: Fixed static content handling bug. [1642](https://github.com/oracle/helidon/pull/1642)
- WebServer: Updated WebSocket docs based on latest changes [1631](https://github.com/oracle/helidon/pull/1631)
- WebServer: Using wrapped executor for Jersey async. [1647](https://github.com/oracle/helidon/pull/1647)
#### Thank You!
Thanks to community member David Karnok [akarnokd](https://github.com/akarnokd) for his
significant contributions to our reactive support.
### Backward incompatible changes
#### Removal of processor-like operators
The formerly public `Flow.Processor` implementations performing common operations have been removed.
Users should use the respective operators from `Single` and `Multi` instead:
```java
// before
Flow.Publisher<Integer> source = ...
MappingProcessor<Integer, String> mapper = new MappingProcessor<>(Integer::toString);
source.subscribe(mapper);
mapper.subscribe(subscriber);
// after
Flow.Publisher<Integer> source = ...
Multi.from(source)
.map(Integer::toString)
.subscribe(subscriber)
```
#### Removal of Flows
The class was providing basic `Flow.Publisher` implementations. Users should pick one of the static methods of
`Single` or `Multi` instead, which provide the additional benefits of having fluent operators available to them for
assembling reactive flows conveniently:
```java
// before
Flow.Publisher<Integer> just = Flows.singletonPublisher(1);
Flow.Publisher<Object> empty = Flows.emptyPublisher();
// after
Multi<Integer> just1 = Multi.singleton(1);
Single<Integer> just2 = Single.just(1);
Multi<Object> empty1 = Multi.empty();
Single<Object> empty2 = Single.empty();
```
#### MediaSupport refactored
The `MediaSupport` class has been used as holder object of media operator contexts. Now, the name has changed to `MediaContext`,
and`MediaSupport` will be the name given to the interface which defines media support for given type (readers, writers etc.)
The Classes `JsonProcessing`, `JsonBinding` and `Jackson` are now renamed to `JsonpSupport`, `JsonbSupport` and `JacksonSupport`
and are implementing the `MediaSupport` interface.
```java
//before
JsonProcessing jsonProcessing = new JsonProcessing();
MediaSupport mediaSupport = MediaSupport.builder()
.registerReader(jsonProcessing.newReader())
.registerWriter(jsonProcessing.newWriter())
.build();
WebServer.builder()
.mediaSupport(mediaSupport)
.build();
//after
WebServer.builder()
.addMediaSupport(JsonpSupport.create()) //registers reader and writer for Json-P
.build()
```
#### Also See M1 and M2 Notes
## [2.0.0-M2]
### Notes
This is the second milestone release of Helidon 2.0. It contains significant new features,
enhancements and fixes. It also contains backward incompatible changes (see section below).
This milestone release is provided for customers that want early access to Helidon 2.0. It
should be considered unstable and is not intended for production use. APIs and features might
not be fully tested and are subject to change. Documentation is incomplete. Those looking for
a stable release should use a 1.4 release.
### Notable New Features
* Helidon Web Client
* MicroProfile Reactive Streams Operators
* MicroProfile Reactive Messaging
* Multi and Single extended with the set of new reactive operators
* Preliminary WebSocket support
* Preliminary jlink image support
### Changes
- Config: Configuration changes [1357](https://github.com/oracle/helidon/pull/1357)
- Config: Default config now loads without duplicates for MP [1369](https://github.com/oracle/helidon/pull/1369)
- Config: Fix merging of value nodes in config 2.0 [1488](https://github.com/oracle/helidon/pull/1488)
- Config: Removed null params and return types from Config API. [1345](https://github.com/oracle/helidon/pull/1345)
- Config: Resource from config refactoring. [1530](https://github.com/oracle/helidon/pull/1530)
- Config: Stopped executor service will not cause an error in polling strategy. [1484](https://github.com/oracle/helidon/pull/1484)
- Config: cache is not using SoftReference anymore. [1494](https://github.com/oracle/helidon/pull/1494)
- Config: change support refactoring [1417](https://github.com/oracle/helidon/pull/1417)
- DB Client: Mappers for database date/time/timestamps. [1485](https://github.com/oracle/helidon/pull/1485)
- Docker Image: Added libstdc++-6-dev to the image [1414](https://github.com/oracle/helidon/pull/1414)
- Examples: Remove MP quickstart GreetApplication#getClasses method for auto-discovery [1395](https://github.com/oracle/helidon/pull/1395)
- Examples: Gradle file cleanup. Fix deprecations. [1354](https://github.com/oracle/helidon/pull/1354)
- Examples: Add OpenAPI annotations to MP quickstart for input and responses on updateGreeting [1394](https://github.com/oracle/helidon/pull/1394)
- JAX-RS: Safeguard against JAX-RS app modifications after start. [1486](https://github.com/oracle/helidon/pull/1486)
- JAX-RS: Upgrade Jersey [1438](https://github.com/oracle/helidon/pull/1438)
- JPA: Resolves JTA/JPA transaction synchronization issues [1473](https://github.com/oracle/helidon/pull/1473)
- JPA: Ensures that JtaDataSource instances that are acquired when a transaction is already active have their Synchronizations registered appropriately [1497](https://github.com/oracle/helidon/pull/1497)
- JPA: Added further tests in TestJpaTransactionScopedSynchronizedEntityManager.java [1453](https://github.com/oracle/helidon/pull/1453)
- JPA: Added more JPA tests [1355](https://github.com/oracle/helidon/pull/1355)
- JPA: Added small test to verify database changes in existing JPA test [1471](https://github.com/oracle/helidon/pull/1471)
- Javadoc: Java 11 javadoc fixes. Turn on failOnError [1386](https://github.com/oracle/helidon/pull/1386)
- Media Support: New media support API. [1356](https://github.com/oracle/helidon/pull/1356)
- Media Support: Adds Config into MediaSupport#builder() method [1403](https://github.com/oracle/helidon/pull/1403)
- Messaging: MP Reactive Messaging impl [1287](https://github.com/oracle/helidon/pull/1287)
- Messaging: Fix completable queue and clean-up of messaging tests [1499](https://github.com/oracle/helidon/pull/1499)
- Metrics: Prometheus format problems (master) [1440](https://github.com/oracle/helidon/pull/1440)
- MicroProfile Server now properly fails when CDI is started externally. [1371](https://github.com/oracle/helidon/pull/1371)
- Native Image: JPA and JTA for native image [1478](https://github.com/oracle/helidon/pull/1478)
- OpenAPI: Openapi custom context root 2.x [1521](https://github.com/oracle/helidon/pull/1521)
- OpenAPI: Remove dependency on Jackson via SmallRye -2.x [1458](https://github.com/oracle/helidon/pull/1458)
- OpenAPI: Support multiple apps in OpenAPI document [1493](https://github.com/oracle/helidon/pull/1493)
- OpenAPI: Use CONFIG rather than FINE logging for jandex indexes used - 2.x [1405](https://github.com/oracle/helidon/pull/1405)
- OpenAPI: Use smallrye openapi 1.2.0 (in 2.x) [1422](https://github.com/oracle/helidon/pull/1422)
- Reactive: Add Helidon-Reactive Scrabble benchmark [1482](https://github.com/oracle/helidon/pull/1482)
- Reactive: Add JMH Benchmark baseline to reactive [1462](https://github.com/oracle/helidon/pull/1462)
- Reactive: Add Multi.range and Multi.rangeLong + TCK tests [1475](https://github.com/oracle/helidon/pull/1475)
- Reactive: Expand TestSubscriber's API, fix a bug in MultiFirstProcessor [1463](https://github.com/oracle/helidon/pull/1463)
- Reactive: Fix expected exception [1472](https://github.com/oracle/helidon/pull/1472)
- Reactive: Fix reactive mapper publisher tck test [1447](https://github.com/oracle/helidon/pull/1447)
- Reactive: Implement Multi.interval() + TCK tests [1526](https://github.com/oracle/helidon/pull/1526)
- Reactive: Implement Single.flatMapIterable + TCK tests [1517](https://github.com/oracle/helidon/pull/1517)
- Reactive: Implement defaultIfEmpty() + TCK tests [1520](https://github.com/oracle/helidon/pull/1520)
- Reactive: Implement defer() + TCK tests [1503](https://github.com/oracle/helidon/pull/1503)
- Reactive: Implement from(Stream) + TCK tests [1525](https://github.com/oracle/helidon/pull/1525)
- Reactive: Implement reduce() + TCK tests [1504](https://github.com/oracle/helidon/pull/1504)
- Reactive: Implement switchIfEmpty + TCK tests [1527](https://github.com/oracle/helidon/pull/1527)
- Reactive: Implement takeUntil + TCK tests [1502](https://github.com/oracle/helidon/pull/1502)
- Reactive: Implement timer() + TCK tests [1516](https://github.com/oracle/helidon/pull/1516)
- Reactive: Improve SingleJust + TCK [1410](https://github.com/oracle/helidon/pull/1410)
- Reactive: Move onXXX from Subscribable to Single + TCK [1477](https://github.com/oracle/helidon/pull/1477)
- Reactive: Reactive Streams impl [1282](https://github.com/oracle/helidon/pull/1282)
- Reactive: Reimplement ConcatPublisher + TCK tests [1452](https://github.com/oracle/helidon/pull/1452)
- Reactive: Reimplement Multi.dropWhile + TCK test [1464](https://github.com/oracle/helidon/pull/1464)
- Reactive: Reimplement Multi.first + TCK test [1466](https://github.com/oracle/helidon/pull/1466)
- Reactive: Reimplement Multi.flatMapIterable + TCK test [1467](https://github.com/oracle/helidon/pull/1467)
- Reactive: Reimplement Multi.just(T[]), add Multi.singleton(T) + TCK [1461](https://github.com/oracle/helidon/pull/1461)
- Reactive: Reimplement Single.flatMap(->Publisher) + TCK test [1465](https://github.com/oracle/helidon/pull/1465)
- Reactive: Reimplement Single.from + TCK tests [1481](https://github.com/oracle/helidon/pull/1481)
- Reactive: Reimplement Single.map + TCK test [1456](https://github.com/oracle/helidon/pull/1456)
- Reactive: Reimplement many operators + TCK tests [1442](https://github.com/oracle/helidon/pull/1442)
- Reactive: Reimplement onErrorResume[With] + TCK tests [1489](https://github.com/oracle/helidon/pull/1489)
- Reactive: Reimplement the Multi.map() operator + TCK test [1411](https://github.com/oracle/helidon/pull/1411)
- Reactive: Rewrite collect, add juc.Collector overload + TCK tests [1459](https://github.com/oracle/helidon/pull/1459)
- Security: public fields for IdcsMtRoleMapperProvider.MtCacheKey [1409](https://github.com/oracle/helidon/pull/1409)
- Security: Fail fast when policy validation fails because of setup/syntax. [1491](https://github.com/oracle/helidon/pull/1491)
- Security: PermitAll overridden by JWT [1359](https://github.com/oracle/helidon/pull/1359)
- WebClient: Webclient implementation (#1205) [1431](https://github.com/oracle/helidon/pull/1431)
- WebServer: Adds a default send(Throwable) method to ServerResponse.java as the first step in providing an easy facility for reporting exceptions during HTTP processing [1378](https://github.com/oracle/helidon/pull/1378)
- WebServer: SetCookie test for parse method [1529](https://github.com/oracle/helidon/pull/1529)
- WebSocket: Integration of WebSockets POC into Helidon 2.0 [1280](https://github.com/oracle/helidon/pull/1280)
- jlink: jlink-image support. [1398](https://github.com/oracle/helidon/pull/1398)
- jlink: Update standalone quickstarts to support jlink-image. [1424](https://github.com/oracle/helidon/pull/1424)
#### Thank You!
Thanks to community member David Karnok [akarnokd](https://github.com/akarnokd) for his
significant contributions to our reactive support.
### Backward incompatible changes
#### Resource class when loaded from Config
The configuration approach to `Resource` class was using prefixes which was not aligned with our approach to configuration.
All usages were refactored as follows:
1. The `Resource` class expects a config node `resource` that will be used to read it
2. The feature set remains unchanged - we support path, classpath, url, content as plain text, and content as base64
3. Classes using resources are changed as well, such as `KeyConfig` - see details below
##### OidcConfig
Configuration has been updated to use the new `Resource` approach:
1. `oidc-metadata.resource` is the new key for loading `oidc-metadata` from local resource
2. `sign-jwk.resource` is the new key for loading signing JWK resource
##### JwtProvider and JwtAuthProvider
Configuration has been updated to use the new `Resource` approach:
1. `jwk.resource` is the new key for loading JWK for verifying signatures
2. `jwt.resource` is also used for outbound as key for loading JWK for signing tokens
##### GrpcTlsDescriptor
Configuration has been updated to use the new `Resource` approach:
1. `tls-cert.resource` is the new key for certificate
2. `tls-key.resource` is the new key for private key
3. `tl-ca-cert` is the the new key for certificate
##### KeyConfig
The configuration has been updated to have a nicer tree structure:
Example of a public key from keystore:
```yaml
ssl:
keystore:
cert.alias: "service_cert"
resource.path: "src/test/resources/keystore/keystore.p12"
type: "PKCS12"
passphrase: "password"
```
Example of a private key from keystore:
```yaml
ssl:
keystore:
key:
alias: "myPrivateKey"
passphrase: "password"
resource.path: "src/test/resources/keystore/keystore.p12"
type: "PKCS12"
passphrase: "password"
```
Example of a pem resource with private key and certificate chain:
```yaml
ssl:
pem:
key:
passphrase: "password"
resource.resource-path: "keystore/id_rsa.p8"
cert-chain:
resource.resource-path: "keystore/public_key_cert.pem"
```
## [2.0.0-M1]
### Notes
This is the first milestone release of Helidon 2.0. It contains significant new
features, enhancements and fixes. It also contains backward incompatible changes
(see [section](#backward-incompatible-changes) below ). This milestone release
is provided for customers that want early access to Helidon 2.0. It should be
considered unstable and is not intended for production use. APIs and features
might not be fully tested and are subject to change. Documentation is incomplete.
Those looking for a stable release should use a 1.4 release.
Notable changes:
- New Helidon DB Client
- Preliminary GraalVM native-image support for Helidon MP (in addition
to existing support for Helidon SE)
- Improved discovery and handling of JAX-RS applications
- Dropped Java 8 support and moved to Java 11 APIs
### Improvements
- Helidon DB Client [657](https://github.com/oracle/helidon/pull/657) [1329](https://github.com/oracle/helidon/pull/1329)
- Native image: Helidon MP support [1328](https://github.com/oracle/helidon/pull/1328) [1295](https://github.com/oracle/helidon/pull/1295) [1259](https://github.com/oracle/helidon/pull/1259)
- Config: Helidon Config now implements MicroProfile config, so you can cast between these two types
- Security: Basic auth and OIDC in MP native image [1330](https://github.com/oracle/helidon/pull/1330)
- Security: JWT and OIDC security providers now support groups claim. [1324](https://github.com/oracle/helidon/pull/1324)
- Support for Helidon Features [1240](https://github.com/oracle/helidon/pull/1240)
- Java 11: [1232](https://github.com/oracle/helidon/pull/1232) [1187](https://github.com/oracle/helidon/pull/1187) [1222](https://github.com/oracle/helidon/pull/1222)
### Fixes
- JAX-RS: Better recovery for invalid URLs and content types [1246](https://github.com/oracle/helidon/pull/1246)
- JAX-RS: Fix synthetic app creation + functional test. [1323](https://github.com/oracle/helidon/pull/1323)
- Config: replace reflection with service loader [1102](https://github.com/oracle/helidon/pull/1102)
- Config: now uses common media type module instead of FileTypeDetector. [1332](https://github.com/oracle/helidon/pull/1332)
- JPA: Permit non-XA DataSources to take part in JTA transactions [1316](https://github.com/oracle/helidon/pull/1316)
- JPA: Fixes an issue with multiple persistence units [1342](https://github.com/oracle/helidon/pull/1342)
- JPA: Address several rollback-related issues [1146](https://github.com/oracle/helidon/pull/1146)
- JPA: Relax requirements on container-managed persistence units which can now be resource-local [1243](https://github.com/oracle/helidon/pull/1243)
- OpenAPI: Support multiple jandex files on the classpath [1320](https://github.com/oracle/helidon/pull/1320)
- Security: Fixed issues with IDCS and OIDC provider. [1313](https://github.com/oracle/helidon/pull/1313)
- Security: Removed support for entity modification from security. [1263](https://github.com/oracle/helidon/pull/1263)
- Security: Allow usage of exceptions for security in Jersey. [1227](https://github.com/oracle/helidon/pull/1227)
- Security: Outbound with OIDC provider no longer causes an UnsupportedOperationE… [1226](https://github.com/oracle/helidon/pull/1226)
- gRPC: Minor changes [1299](https://github.com/oracle/helidon/pull/1299)
- Quickstart: Fix application jar class-path for SNAPSHOT versioned dependencies [1297](https://github.com/oracle/helidon/pull/1297)
- Use Helidon service loader. [1334](https://github.com/oracle/helidon/pull/1334)
- Fix optional files in bare archetypes. (#1250) [1321](https://github.com/oracle/helidon/pull/1321)
- Make Multi streams compatible with Reactive Streams [1260](https://github.com/oracle/helidon/pull/1260)
- Remove Valve [1279](https://github.com/oracle/helidon/pull/1279)
- IDE support: Missing requires of JAX-RS API [1271](https://github.com/oracle/helidon/pull/1271)
- Metrics: fix unable to find reusable metric with tags [1244](https://github.com/oracle/helidon/pull/1244)
- Support for lazy values and changed common modules to use it. [1228](https://github.com/oracle/helidon/pull/1228)
- Upgrade jacoco to version 0.8.5 to avoid jdk11 issue [1281](https://github.com/oracle/helidon/pull/1281)
- Upgrade tracing libraries [1230](https://github.com/oracle/helidon/pull/1230)
- Upgrade config libraries [1159](https://github.com/oracle/helidon/pull/1159)
- Upgrade Netty to 4.1.45 [1309](https://github.com/oracle/helidon/pull/1309)
- Upgrade Google libraries for Google login provider. [1229](https://github.com/oracle/helidon/pull/1229)
- Upgrade H2, HikariCP, Jedis, OCI SDK versions [1198](https://github.com/oracle/helidon/pull/1198)
- Upgrade to FT 2.0.2 and Failsafe 2.2.3 [1204](https://github.com/oracle/helidon/pull/1204)
### Backward incompatible changes
In order to stay current with dependencies, and also refine our APIs we have
introduced some backward incompatible changes in this release. Most of the changes
are mechanical in nature: changing package names, changing GAV coordinates, etc.
Here are the details:
#### Java Runtime
- Java 8 support has been dropped. Java 11 or newer is now required.
#### Common
- Removed `io.helidon.reactive.Flow`, please use `java.util.concurrent.Flow`
- Removed `io.helidon.common.CollectionsHelper`, please use factory methods of `Set`, `Map` and `List`
- Removed `io.helidon.common.OptionalHelper`, please use methods of `java.util.Optional`
- Removed `io.helidon.common.StackWalker`, please use `java.lang.StackWalker`
- Removed `io.helidon.common.InputStreamHelper`, please use `java.io.InputStream` methods
- Removed dependency on Project Reactor
#### Tracing
- We have upgraded to OpenTracing version 0.33.0 that is not backward compatible, the following breaking changes exist
(these are OpenTracing changes, not Helidon changes):
1. `TextMapExtractAdapter` and `TextMapInjectAdapter` are now `TextMapAdapter`
2. module name changed from `opentracing.api` to `io.opentracing.api` (same for `noop` and `util`)
3. `SpanBuilder` no longer has `startActive` method, you need to use `Tracer.activateSpan(Span)`
4. `ScopeManager.activate(Span, boolean)` is replaced by `ScopeManager.activate(Span)` - second parameter is now always
`false`
5. `Scope ScopeManager.active()` is removed - replaced by `Span Tracer.activeSpan()`
- If you use the `TracerBuilder` abstraction in Helidon and have no custom Spans, there is no change required
#### Config
##### Helidon MP
When using MP Config through the API, there are no backward incompatible changes in Helidon.
##### Helidon SE Config Usage
The following changes are relevant when using Helidon Config:
1. File watching is now done through a `ChangeWatcher` - use of `PollingStrategies.watch()` needs to be refactored to
`FileSystemWatcher.create()` and the method to configure it on config source builder has changed to
`changeWatcher(ChangeWatcher)`
2. Methods on `ConfigSources` now return specific builders (they use to return `AbstractParsableConfigSource.Builder` with
a complex type declaration). If you store such a builder in a variable, either change it to the correct type, or use `var`
3. Some APIs were cleaned up to be aligned with the development guidelines of Helidon. When using Git config source, or etcd
config source, the factory methods moved to the config source itself, and the builder now accepts all configuration
options through methods
4. The API of config source builders has been cleaned, so now only methods that are relevant to a specific config source type
can be invoked on such a builder. Previously you could configure a polling strategy on a source that did not support
polling
5. There is a small change in behavior of Helidon Config vs. MicroProfile config:
The MP TCK require that system properties are fully mutable (e.g. as soon as the property is changed, it
must be used), so MP Config methods work in this manner (with a certain performance overhead).
Helidon Config treats System properties as a mutable config source, with a (optional) time based polling strategy. So
the change is reflected as well, though not immediately (this is only relevant if you use change notifications).
6. `CompositeConfigSource` has been removed from `Config`. If you need to configure `MerginStrategy`, you can do it now on
`Config` `Builder`
##### Helidon SE Config Extensibility
1. Meta configuration has been refactored to be done through `ServiceLoader` services. If you created
a custom `ConfigSource`, `PollingStrategy` or `RetryPolicy`, please have a look at the new documentation.
2. To implement a custom config source, you need to choose appropriate (new) interface(s) to implement. This is the choice:
From "how we obtain the source of data" point of view:
* `ParsableSource` - for sources that provide bytes (used to be reader, now `InputStream`)
* `NodeConfigSource` - for sources that provide a tree structure directly
* `LazyConfigSource` - for sources that cannot read the full config tree in advance
From mutability point of view (immutable config sources can ignore this):
* `PollableSource` - a config source that is capable of identifying a change based on a data "stamp"
* `WatchableSource` - a config source using a target that can be watched for changes without polling (such as `Path`)
* `EventConfigSource` - a config source that can trigger change events on its own
3. `AbstractConfigSource` and `AbstractConfigSourceBuilder` are now in package `io.helidon.config`
4. `ConfigContext` no longer contains method to obtain a `ConfigParser`, as this is no longer responsibility of
a config source
5. Do not throw an exception when config source does not exist, just return
an empty `Optional` from `load` method, or `false` from `exists()` method
6. Overall change support is handled by the config module and is no longer the responsibility
of the config source, just implement appropriate SPI methods if changes are supported,
such as `PollableSource.isModified(Object stamp)`
#### Metrics
Helidon now supports only MicroProfile Metrics 2.x. Modules for Metrics 1.x were removed, and
modules for 2.x were renamed from `metrics2` to `metrics`.
#### Security
- When OIDC provider is configured to use cookie (default configuration) to carry authentication information,
the cookie `Same-Site` is now set to `Lax` (used to be `Strict`). This is to prevent infinite redirects, as
browsers would refuse to set the cookie on redirected requests (due to this setting).
Only in case the frontend host and identity host match, we leave `Strict` as the default
#### Microprofile Bundles
We have removed all versioned MP bundles (i.e. `helidon-microprofile-x.x`, and introduced
unversioned core and full bundles:
- `io.helidon.microprofile.bundles:helidon-microprofile-core` - contains only MP Server
and Config. Allows you to add only the specifications needed by your application.
- `io.helidon.microprofile.bundles:helidon-microprofile` - contains the latest full
MicroProfile version implemented by Helidon
You can find more information in this blog post:
[New Maven bundles](https://medium.com/helidon/microprofile-3-2-and-helidon-mp-1-4-new-maven-bundles-a9f2bdc1b5eb)
#### Helidon CDI and MicroProfile Server
- You cannot start CDI container yourself (this change is required so we can
support GraalVM `native-image`)
- You can only run a single instance of Server in a JVM
- If you use `SeContainerInitializer` you would get an exception
- this can be worked around by configuration property `mp.initializer.allow=true`, and warning can be removed
using `mp.initializer.no-warn=true`
- once `SeContainerInitializer` is used, you can no longer use MP with `native-image`
- You can no longer provide a `Context` instance, root context is now built-in
- `MpService` and `MpServiceContext` have been removed
- methods from context have been moved to `JaxRsCdiExtension` and `ServerCdiExtension` that can be accessed
from CDI extension through `BeanManager.getExtension`.
- methods `register` can be used on current `io.helidon.context.Context`
- `MpService` equivalent is a CDI extension. All Helidon services were refactored to CDI extension
(you can use these for reference)
- `Server.cdiContainer` is removed, use `CDI.current()` instead
#### Startup
New recommended option to start Helidon MP:
1. Use class `io.helidon.microprofile.cdi.Main`
2. Use meta configuration option when advanced configuration of config is required (e.g. `meta-config.yaml`)
3. Put `logging.properties` on the classpath or in the current directory to be automatically picked up to configure
Java util logging
`io.helidon.microprofile.server.Main` is still available, just calls `io.helidon.microprofile.cdi.Main` and is deprecated.
`io.helidon.microprofile.server.Server` is still available, though the features are much reduced
#### MicroProfile JWT-Auth
If a JAX-RS application exists that is annotated with `@LoginConfig` with value `MP-JWT`, the correct authentication
provider is added to security.
The startup would fail if the provider is required yet not configured.
#### Security in MP
If there is no authentication provider configured, authentication will always fail.
If there is no authorization provider configured, ABAC provider will be configured.
(original behavior - these were configured if there was no provider configured overall)
### Other Behavior changes
- JAX-RS applications now work similar to how they work in application servers
- if there is an `Application` subclass that returns anything from
`getClasses` or `getSingletons`, it is used as is
- if there is an `Application` subclass that returns empty sets from these methods,
all available resource classes will be part of such an application
- if there is no `Application` subclass, a synthetic application will be
created with all available resource classes
- `Application` subclasses MUST be annotated with `@ApplicationScoped`,
otherwise they are ignored
[2.1.1-SNAPSHOT]: https://github.com/oracle/helidon/compare/2.1.0...HEAD
[2.1.0]: https://github.com/oracle/helidon/compare/2.0.2...2.1.0
[2.0.2]: https://github.com/oracle/helidon/compare/2.0.1...2.0.2
[2.0.1]: https://github.com/oracle/helidon/compare/2.0.0...2.0.1
[2.0.0]: https://github.com/oracle/helidon/compare/2.0.0-RC2...2.0.0
[2.0.0-RC2]: https://github.com/oracle/helidon/compare/2.0.0-RC1...2.0.0-RC2
[2.0.0-RC1]: https://github.com/oracle/helidon/compare/2.0.0-M3...2.0.0-RC1
[2.0.0-M3]: https://github.com/oracle/helidon/compare/2.0.0-M2...2.0.0-M3
[2.0.0-M2]: https://github.com/oracle/helidon/compare/2.0.0-M1...2.0.0-M2
[2.0.0-M1]: https://github.com/oracle/helidon/compare/1.4.0...2.0.0-M1