Introduction Maven QuickStart QuickStartRackspace RationalAndDesign RoadMap
News from the Trunk
New Demo
Read about and access our new twitter demo here.
Blob Store
Portability between Amazon S3, Rackspace Cloud Files, and Microsoft Azure Blob Service are complete. Mezeo PCS, Nirvanix SDN, and EMC Atmos Online are in progress!
Compute
Support for Rackspace Cloud Servers is complete. We are currently coding VMware vCloud Express and EC2. Compute Cloud abstraction will be provided by Dasein Cloud.
Introducing jclouds
jclouds helps you get started in the cloud and reuse your java development skills. We also provide sophisticated features when your application needs them.
Here's how we help you get started:
- Simple interface Instead of creating new object types, we reuse concepts like maps so that the programming model is familiar. In this way, you can get started without dealing with REST-like apis or WS.
- Portability between clouds We have plugins that allow you to operate in restricted clouds like Google App Engine.
- Deal with web complexity Network based computing introduces issues such as transient failures and redirects. We handle this for you.
- Unit testability Writing tests for cloud endpoints is difficult. We provide you with Stub connections that simulate a cloud without creating network connections. In this way, you can write your unti tests without mocking complexity or the brittleness of remote connections.
- Performance We have a pluggable engine which gives you more horsepower when you need it. Our high performance engine uses executors and nio to scale efficiently.
How are we different from other multi-cloud frameworks?
In jclouds, you can start lightweight and use heavyweight features when you need them. If you find our simple apis too lightweight, or an abstraction too limiting, we always expose the full native api provided by the cloud. Just reach down when you need something.
We also only load libraries you need. As opposed to other frameworks, we don't automatically load libraries like log4j, apache commons http. or spring. We aren't likely to conflict with your code.
We're so light, we even run in the clouds! jclouds currently operates fine in google app engine, and we are currently developing android support. We pay attention to context.. it matters.
The bottom-line is: Choose your complexity, choose your weight! Use only the features you want, when you want them.
Tools
Here are the tools we currently include in jclouds-1.0-beta-2. Please see the RoadMap for what to expect next.
jclouds-s3
jclouds-s3 allows you to treat Amazon S3 as a Map. We also provide a full implementation of the API, should you need to access sophisticated features.
- Have a look at how easy jclouds-s3 is... it's a Map!:
S3Context context = S3ContextFactory.createS3Context(accesskeyid, secretkey);
Map<String, InputStream> map = context.createInputStreamMap("adriansphotos");
// do work
context.close(); S3Object file = new S3Object("2009/january/easter/holiday.jpg",new File("holiday.jpg"));
file.generateMd5();
Future<byte []> md5Future = connection.putObject("adriansphotos", file,
withAcl(CannedAccessPolicy.PUBLIC_READ)); Plugins
Here are the extensions we currently include in jclouds-1.0-beta-2. Please see the RoadMap for what to expect next.
Support for GAE/J (Google App Engine for Java)
Google App Engine for Java restricts things like spawning threads and making network connections. jclouds provides a connection module that is tested in GAE/J (jclouds-gae).
We also host a live example demonstrating this. You can see the source here.
Non-blocking I/O
jclouds can be configured with a server-grade module (jclouds-httpnio) that takes advantage of thread pools and HttpCore Nio. Use this module if you are not using Google App Engine and you need more power.
Log4J
jclouds does not depend on any logging api. If you want to use log4j, you can load the jclouds-log4j plugin. Otherwise, it will ues JDK logging with zero code dependencies on log4j.
IRC
Drop by our IRC, if you'd like to chat with jclouds developers and users: irc://irc.freenode.net/#jclouds