Cloud Foundry Java Client 2.0.0.RELEASE

Ben Hale <bhale@...>

I'm immensely pleased to announce Cloud Foundry Java Client `2.0.0.RELEASE`! This release is the culmination of 54 weeks of work, encompassing 10 milestones, two release candidates, and 2,344 commits[1].

Before the typical discussion about the release, I'd like to take a moment to recognize everyone who contributed to the success of this effort:

* Steve Powell[2]
* Chris Frost[3]
* Benjamin Einaudi[4]
* Paul Harris[5]
* Glyn Normington[6]
* Lokesh Kumar N[7]
* Olivier Orand[8]
* Sebastien Bortolussi[9]
* Stephane Maldini[10]
* Ben Patterson[11]
* Mike Heath[12]
* Ramnivas Laddad[13]
* William Gautier[14]

It really makes me happy to see that more than half of the contributors to the project are from outside of Pivotal. I see this as an indication both that we're fulfilling a wide-spread need and that we've created an environment that encourages external contribution. I encourage anyone else interested in contributing to join this list over the coming months.

Next, I'd like to recognize the lead of Project Reactor[15] Stephane Maldini, for his tireless efforts to help us deliver an incredible reactive API. When we took the decision to head in this direction, Stephane stepped up to teach the entire team the principles behind reactive programming. This effort was non-trivial, entailing hundreds of hours on Screenhero[16] often until after one in the morning for him. The last year has easily been the greatest example of two projects evolving together, that I have ever experienced. The amount of improvement Reactor and the Java Client have driven in each other cannot be overestimated.

Finally I'd like to thank the teams that started building on the Java Client, long before it was production ready. Projects like Spring Cloud Data Flow[17] and Spring Cloud Spinnaker[18] have been invaluable tools for driving usability and bug fixes.

And now onto the release!

* * *

This release was a complete re-write[19] of the Java Client with a focus on:

* two cleanly delineated APIs; a `-client` API mapping to the REST calls and an `-operations` API mapping to CLI
* implementing every single REST call exposed by all Cloud Foundry components (more than 500 individual URIs across 4 components)
* an airtight separation between APIs and implementation; a Reactor-based default is provided, and alternate implementations are possible
* a reactive API based on Project Reactor and interoperable with any Reactive Streams-compatible[20] library

_For more detail on these goals, please see the 2.0.0.M1 Release Notes[21]_

For detailed information on how to use the client, the README[22] is the best place to start. Javadocs for the library can be found at `cloudfoundry-client`[23], `cloudfoundry-client-reactor`[24], `cloudfoundry-operations`[25], and `cloudfoundry-util`[26]. Since usage requires a fair bit of knowledge about the workings of the Cloud Foundry APIs themselves, check out the docs for the Cloud Controller V2[27]), V3[28], Doppler[29], and the UAA[30].

While the Java Client implements a great many of the Cloud Foundry APIs we didn't manage to complete them _all_. By our count we're about 80% the way through and have delivered all of the commonly used endpoints. Over the coming months we'll be continuing to deliver the missing implementations until everything is complete. Beyond that, we're committed to keeping the library up to date with Cloud Foundry's evolving API.

We welcome all feedback from the community and look forward to seeing you open issues[31] and submit pull requests[32]. If you're looking for help and discussion we're lurking in the Cloud Foundry Slack[33] during European and North American working hours.

We hope that the new Java Client is useful for everyone and can't wait to see what you build with it.

-Ben Hale
Cloud Foundry Java Experience


Join to automatically receive all group messages.