We've released a new object client for Java that is smaller, more robust, and faster than our previous client, which was a fork of the AWS SDK. Removing that dependency, while requiring a bit more work on our part, gives us several advantages, among which are:
- Full control over the architecture, design and direction of the project
- Selecting our own dependency tree
- Choosing our own OSS license
But don't fret. We're also working on an adapter library, so you don't have to change your code to use the new interface (although this prevents you from using any ECS extensions). Keep reading for more details.
The "Smart" Client
This new implementation takes advantage of another one of our projects, called the smart-client. The smart-client is really just a Jersey client with some additional filters that provide client-side load-balancing, node discovery, VDC awareness, and health checking. It's one of the reasons our client is so efficient.
The project is hosted on github. You can find the latest release there, which includes a link to download the distribution package. The release history is also available, which will highlight the changes included in each version.
We've also published the binaries on Maven Central, so including them in a Maven build is simple. Just add the following dependency:
<dependency> <groupId>com.emc.ecs</groupId> <artifactId>object-client</artifactId> <version>3.0.0</version> </dependency>
The same is true for Gradle (just a syntax change):
Our javadocs are hosted on github as well.
There is a quick-start guide on the github wiki.
We have some code samples hosted on github as well in a separate project.
As mentioned above, there will soon be an AWS adapter available for use with code that already leverages the AmazonS3 interface (AWS SDK). When this adapter is used, you will not have access to any of the ECS proprietary extensions, like atomic append and range updates, but it may be a good solution if you want to leverage our smart-client while limiting the impact to your project.