You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/09/01 08:06:41 UTC

[camel-website] branch whatsnew35 updated: Upgrade whats new in 3.5

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch whatsnew35
in repository https://gitbox.apache.org/repos/asf/camel-website.git


The following commit(s) were added to refs/heads/whatsnew35 by this push:
     new 20afeca  Upgrade whats new in 3.5
20afeca is described below

commit 20afecabba05b8517c0ae825a0aad1771e98c759
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Sep 1 10:03:10 2020 +0200

    Upgrade whats new in 3.5
---
 content/blog/2020/09/Camel35-Whatsnew/index.md | 82 ++++++++++++++++++--------
 1 file changed, 56 insertions(+), 26 deletions(-)

diff --git a/content/blog/2020/09/Camel35-Whatsnew/index.md b/content/blog/2020/09/Camel35-Whatsnew/index.md
index 9fd54a9..d075098 100644
--- a/content/blog/2020/09/Camel35-Whatsnew/index.md
+++ b/content/blog/2020/09/Camel35-Whatsnew/index.md
@@ -16,6 +16,20 @@ The next planned LTS release is 3.7 scheduled towards end of the year.
 
 This release introduces new set of features and noticeable improvements that will we cover in this blog post.
 
+#### Java 14
+
+This is the first release that supports Java 14. 
+
+
+### Spring Boot
+
+We have upgraded to latest release at this time which is Spring Boot 2.3.3.
+
+A new `camel-spring-boot-bom` BOM has been added that only contains the supported Camel Spring JARs for Spring Boot.
+The existing `camel-spring-boot-dependencies` is a much bigger set of BOM that is curated to align Camel and Spring Boot
+dependencies. For more details see the [following documentation](https://camel.apache.org/camel-spring-boot/latest/#_camel_spring_boot_bom_vs_camel_spring_boot_dependencies_bom).
+
+
 #### JUnit 5
 
 We have finished migrating all the unit tests of Camel itself to JUnit 5. Support for JUnit 4 is still present
@@ -26,8 +40,8 @@ The Camel test modules that support JUnit 5 has conveniently -junit5 in their JA
 We have also refactored the `camel-test-spring-junit5` for Spring Boot users with a new `@CamelSpringBootTest` annotation
 that you mark on your unit test class instead of using JUnit 4.x `@RunWith`.
 
-See the `camel-spring-boot-example` for an example, or the Camel 3.5 upgrade guide.
-TODO: links
+See the [camel-spring-boot-example](https://github.com/apache/camel-spring-boot-examples/tree/master/camel-example-spring-boot)
+for an example, or the Camel 3.5 [upgrade guide](https://camel.apache.org/manual/latest/camel-3x-upgrade-guide-3_5.html#_spring_boot_testing_with_junit_5).
 
 
 #### LambdaRouteBuilder
@@ -52,6 +66,7 @@ The regular `RouteBuilder` can define as many routes you want in the same builde
 See more details at the [LambdaRouteBuilder](https://camel.apache.org/manual/latest/lambda-route-builder.html)
 documentation.
 
+
 #### Parameterize routes
 
 This is one of the biggest new feature which goes by the name [route templates](https://camel.apache.org/manual/latest/route-template.html).
@@ -60,7 +75,7 @@ and which are optional, and potential default values and descriptions. Then you
 from the route templates by its template id, and the provided parameters.
 
 For example you can have a route template that define how clients can integrate with a given system of yours.
-Then as new clients is added, you can setup a new route from the template with client specific parameters.
+Then as new clients is added, you can standup a new route from the template with client specific parameters.
 
 This feature will also play a great role in Apache Camel K and the serverless landscape with Knative.
 In this world the route templates are used as part of a bigger puzzle which we named _kamelets_. More details
@@ -69,6 +84,17 @@ is coming in a new blog posts.
 See more details at the [route templates](https://camel.apache.org/manual/latest/route-template.html) documentation,
 and in this [little example](https://github.com/apache/camel-examples/tree/master/examples/camel-example-routetemplate).
 
+
+#### Optimized components startup
+
+The camel core has been optimized in Camel 3 to be small, slim and fast on startup. This benefits Camel Quarkus which
+can do built time optimizations that take advantage of the optimized camel core.
+
+We have continued this effort in the Camel components where whenever possible works is moved ahead
+to an earlier phase during startup, that allows enhanced built time optimizations. As there are a lot of Camel
+components then this work will progress over the next couple of Camel releases. 
+
+
 #### Even more reflection free
 
 We continued to remove usage of reflection in Camel and this time we discovered that were some parts
@@ -77,11 +103,10 @@ generated _configurers_ to configure themselves which means its all just regular
 
 There were also a few spots in Rest DSL which wasn't reflection free either, this has been corrected.
 
-### Enhanced properties binding
+
+#### Enhanced properties binding
 
 We have also enhanced the _configurers_ to include details about what value types collections contain (eg Map, List, arrays).
-That information is now used by Camel to do reflection free [binding collections](https://camel.apache.org/manual/latest/property-binding.html).
-Also when new entries have to be created in those collections.
 
 For example given the below configuration:
 
@@ -93,7 +118,7 @@ For example given the below configuration:
     camel.beans.foo.countries[de].language = DE
 
 Then the `foo` bean has a property named `country` that is a `java.util.Map` type.
-And the Map contains element of type `com.foo.MyCountry` that has been explicit configured above.
+The Map contains element of type `com.foo.MyCountry` that has been explicit configured above.
 
 However Camel is now capable to know this information by source code generated _configuers_:
 
@@ -108,46 +133,51 @@ However Camel is now capable to know this information by source code generated _
 The `Foo` class has been annotated with `@Configurer` which allows Camel tooling to generate reflection free configurers source code.
 This is what Camel internally uses to do its vast configuration of all its EIPs, components and so on. Now we have exposed
 this for end users. Notice how the Map contains the collection type as a generic type with `Map<Country`. That information
-is now generated in the configuers, so Camel knows. Therefore the configuration can be shortned to:
+is now generated in the configuers, so Camel knows. Therefore the configuration can be shortened to:
 
     camel.beans.foo.countries[usa].name = United States of America
     camel.beans.foo.countries[usa].language = EN
     camel.beans.foo.countries[de].name = Germany
     camel.beans.foo.countries[de].language = DE
 
-There has been many other smaller improvements in Camels properties binding. Camel uses this heavily internally during
+The work did not stop there. By knowing the value type of the collection types, we allow to do reflection free
+[binding collections](https://camel.apache.org/manual/latest/property-binding.html).
+
+There has been many other smaller improvements in Camels properties bindind. Camel uses this heavily internally during
 startup to configure and setup all of its things such as components, EIPs, routes etc. This work has been streamlined
-across the various runtimes; whether its standalone, Spring Boot, Quarkus, Camel K, Kafka Connector, or the good old XML routes.
+across the various runtimes; whether its standalone, Spring Boot, Quarkus, Camel K, Camel Kafka Connector, 
+or the good old XML routes.
 
-#### Java 14
+The Camel Kafka Connector project is using property binding in its configuration and therefore is a heavy user of this.
 
-This is the first release that supports Java 14. 
 
 #### FluentProducerTemplate thread-safety
 
 The fluent `ProducerTemplate` had an issue where it may not be thread-safe. This has been corrected.
 
-### Spring Boot
 
-We have upgraded to latest release at this time which is Spring Boot 2.3.3.
+#### New components
 
-A new `camel-spring-boot-bom` BOM has been added that only contains the supported Camel Spring JARs for Spring Boot.
-The existing `camel-spring-boot-dependencies` is a much bigger set of BOM that is curated to align Camel and Spring Boot
-dependencies. For more details see the [following documentation](https://camel.apache.org/camel-spring-boot/latest/#_camel_spring_boot_bom_vs_camel_spring_boot_dependencies_bom).
+There are a 8 new components:
 
-#### New components
+- ArangoDB: Perform operations on ArangoDb when used as a Document Database, or as a Graph Database
+- AWS2-STS: Manage AWS STS cluster instances using AWS SDK version 2.x.
+- Azure Eventhubs: The azure-eventhubs component that integrates Azure Event Hubs using AMQP protocol. Azure EventHubs is a highly scalable publish-subscribe service that can ingest millions of events per second and stream them to multiple consumers.
+- JSonata: JSON to JSON transformation using JSONATA.
+- Minio: Store and retrieve objects from Minio Storage Service using Minio SDK.
+- OAI-PMH: Harvest metadata using OAI-PMH protocol
+- Vert.x HTTP Client: Camel HTTP client support with Vert.x
+- Vert.x WebSocket: Camel WebSocket support with Vert.x
 
-- ArangoDB
-- AWS2-STS
-- Azure Eventhubs
-- Jsonata
-- Minio
-- OAI-PMH
-- Vert.x HTTP Client
-- Vert.x WebSocket
 
 #### Camel-Kafka-connector
 
 The next Camel-Kafka-connector 0.5.0 (not LTS) will be based on Camel 3.5.0. The project will leverage all the new shiny improvements done on the Property Binding.
 With 3.5.0 Camel-Kafka-connector will also get a bunch of new connectors for free and this is super cool. So stay tuned for the next non-LTS release.
 
+
+### Upgrading
+
+Make sure to read the [upgrade guide](https://camel.apache.org/manual/latest/camel-3x-upgrade-guide-3_5.html) if you
+are upgrading to this release from a previous Camel version. 
+